tango-app-ui-store-builder 1.0.1-beta-21 → 1.0.1-beta-23
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/manage-store-plano/manage-store-plano-feedback/manage-store-plano-feedback.component.mjs +15 -7
- package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +115 -39
- package/esm2022/lib/components/manage-store-plano/plano-rollout/plano-rollout.component.mjs +6 -4
- package/esm2022/lib/components/manage-store-plano/publish-rollout-popup/publish-rollout-popup.component.mjs +13 -3
- package/esm2022/lib/components/manage-store-plano/rollout-feedback/rollout-feedback.component.mjs +14 -12
- package/fesm2022/tango-app-ui-store-builder.mjs +158 -60
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/manage-store-plano/manage-store-plano-feedback/manage-store-plano-feedback.component.d.ts +1 -1
- package/lib/components/manage-store-plano/manage-store-plano.component.d.ts +1 -4
- package/lib/components/manage-store-plano/rollout-feedback/rollout-feedback.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -180,7 +180,10 @@ export class ManageStorePlanoFeedbackComponent {
|
|
|
180
180
|
if (shelf?.FixtureData?.shelfConfig &&
|
|
181
181
|
shelf?.FixtureData?.shelfConfig?.length > 0) {
|
|
182
182
|
shelf.FixtureData.shelfConfigFormated = this.formatData(shelf.FixtureData.shelfConfig);
|
|
183
|
-
shelf.FixtureData.sectionConfig = this.storeData(shelf.FixtureData.shelfConfig);
|
|
183
|
+
shelf.FixtureData.sectionConfig = this.storeData(shelf.FixtureData.shelfConfig, shelf?.FixtureData?.productResolutionLevel);
|
|
184
|
+
if (shelf?.FixtureData?.productResolutionLevel == 'L1') {
|
|
185
|
+
shelf.FixtureData.sectionConfig[0].productBrandName = shelf?.FixtureData.productBrandName;
|
|
186
|
+
}
|
|
184
187
|
let zoneColor = {};
|
|
185
188
|
shelf.FixtureData.sectionConfig.forEach((ele) => {
|
|
186
189
|
zoneColor[ele.zone] = { color: ele.color };
|
|
@@ -203,7 +206,11 @@ export class ManageStorePlanoFeedbackComponent {
|
|
|
203
206
|
issue?.Details.forEach((newshelf) => {
|
|
204
207
|
if (newshelf?.shelfConfig && newshelf?.shelfConfig?.length > 0) {
|
|
205
208
|
newshelf.shelfConfigFormated = this.formatData(newshelf.shelfConfig);
|
|
206
|
-
newshelf.sectionConfig = this.storeData(newshelf.shelfConfig);
|
|
209
|
+
newshelf.sectionConfig = this.storeData(newshelf.shelfConfig, shelf?.FixtureData?.productResolutionLevel);
|
|
210
|
+
if (shelf?.FixtureData?.productResolutionLevel == "L1") {
|
|
211
|
+
newshelf.sectionConfig[0].productBrandName =
|
|
212
|
+
shelf?.FixtureData.productBrandName;
|
|
213
|
+
}
|
|
207
214
|
newshelf.sectionKeys = Object.keys(newshelf.sectionConfig);
|
|
208
215
|
if (["productcategoryWrong", "brandWrong"].includes(issue.issueType)) {
|
|
209
216
|
shelf.FixtureData.shelfDetails.forEach((shelf) => {
|
|
@@ -369,7 +376,8 @@ export class ManageStorePlanoFeedbackComponent {
|
|
|
369
376
|
}, {}));
|
|
370
377
|
return groupedArray;
|
|
371
378
|
}
|
|
372
|
-
storeData(shelfData) {
|
|
379
|
+
storeData(shelfData, level) {
|
|
380
|
+
shelfData.sort((a, b) => a.shelfNumber - b.shelfNumber);
|
|
373
381
|
let count = 0;
|
|
374
382
|
let sectionConfig = [];
|
|
375
383
|
// startYPosition: ele.shelfNumber,
|
|
@@ -378,7 +386,7 @@ export class ManageStorePlanoFeedbackComponent {
|
|
|
378
386
|
// color: this.shlefColor[count],
|
|
379
387
|
shelfData.forEach((shelf) => {
|
|
380
388
|
let getSection = sectionConfig.filter((ele) => ele.zone == shelf.zone);
|
|
381
|
-
if (!getSection.length) {
|
|
389
|
+
if (!getSection.length || (!shelf.zone && level == "L2")) {
|
|
382
390
|
sectionConfig.push({
|
|
383
391
|
...shelf,
|
|
384
392
|
startYPosition: shelf.shelfNumber,
|
|
@@ -610,11 +618,11 @@ export class ManageStorePlanoFeedbackComponent {
|
|
|
610
618
|
this.destroy$.complete();
|
|
611
619
|
}
|
|
612
620
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ManageStorePlanoFeedbackComponent, deps: [{ token: i1.StoreBuilderService }, { token: i0.ChangeDetectorRef }, { token: i2.NgbModal }, { token: i3.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
613
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ManageStorePlanoFeedbackComponent, selector: "app-manage-store-plano-feedback", inputs: { currentPlano: "currentPlano", storeFeedback: "storeFeedback", selectedIssue: "selectedIssue" }, outputs: { isApproved: "isApproved" }, viewQueries: [{ propertyName: "bodyBlockRef", first: true, predicate: ["bodyBlock"], descendants: true }, { propertyName: "accordion", first: true, predicate: ["accordion"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<section *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div 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</section>\r\n\r\n<section *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between border-bottom\">\r\n <div>\r\n <div class=\"storeResponse\">Store response</div>\r\n <div class=\"normalText mb-5\">Click a fixture or view all</div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <button *ngIf=\"selectedFixture?.fixtureId\" (click)=\"reload()\" class=\"btn btn-light text-primary border-0 px-3 py-2\"\r\n style=\"background-color: #eaf6ff; border-radius: 1rem;\">\r\n Clear Filter\r\n </button>\r\n <lib-filters *ngIf=\"!selectedFixture?.fixtureId\" [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"vmFeedback?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"openvm\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Vm verification assigned</div>\r\n <div class=\"grayText\">{{vmFeedback[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedVm===vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedVm!==vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingVmissues>0\">\r\n {{pendingVmissues}}/{{totalVmissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedVmissues>0&&pendingVmissues===0\">\r\n {{approvedVmissues}}/{{totalVmissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ vmFeedback[vmtaskIndex]?.FixtureData.fixtureName}} - {{vmFeedback[vmtaskIndex]?.FixtureData.fixtureWidth.value}} {{vmFeedback[vmtaskIndex]?.FixtureData.fixtureWidth.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmFeedback.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmFeedback.length>vmtaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(vmFeedback.length)===(vmtaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of vmFeedback[vmtaskIndex]?.FixtureData?.vmConfig;let i=index\">\r\n <div [id]=\"'vm' + i\" class=\"vm-block\" [style]=\"handlevmPosition(vm,i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle wordWrap\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngFor=\"let shelfData of vmFeedback[vmtaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of vmFeedback[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-start mt-5\">\r\n\r\n <div *ngIf=\"item.issueType==='VmMissing'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='extraVm'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n Total misplaced VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\"\r\n *ngFor=\"let vmData of item?.Details[fixtureIndex]?.vmConfig\">\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n current\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.startYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.startYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.endYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.endYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.xZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.xZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.yZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.yZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.position\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.position}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n New\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newstartYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newstartYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newendYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newendYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newxZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newxZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newyZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newyZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newposition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newposition}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmConfig?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of item?.Details[fixtureIndex]?.vmConfignew;let m=index\">\r\n <div [id]=\"'vm' + m\" class=\"vm-block\" [style]=\"handlevmPosition(vm,m)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + m\"\r\n [class]=\"vm.newVm ? 'redBorder' : ''\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n <!-- <h3>{{ item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</h3> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex].answers[0]?.image&&vmFeedback[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex].answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'vm',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'vm',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.image&&vmFeedback[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmFeedback[vmtaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.vmComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.vmComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"storeFixtureList?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"detailsfixture\" [collapsed]=\"openfixture\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Fixture verification assigned</div>\r\n <div class=\"grayText\">{{storeFixtureList[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedFixture===storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedFixture!==storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingFixtureissues>0\">\r\n {{pendingFixtureissues}}/{{totalFixtureissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedFixtureissues>0&&pendingFixtureissues===0\">\r\n {{approvedFixtureissues}}/{{totalFixtureissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureName}} - {{storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureWidth.value}} {{storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureWidth.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"storeFixtureList.length>fixturetaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(storeFixtureList.length)===(fixturetaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n <ng-container\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{'background-color':shelfData?.zone ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.text}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div> <span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-center mt-5\">\r\n\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixturetemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixturetemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.issueType==='sizeWrong'\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureWidth?.value}}\r\n {{item?.Details[fixtureIndex]?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='productcategoryWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n\r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord badge \">{{category}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='brandWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div *ngFor=\"let brand of missing?.brand\" class=\"shelfText breakWord badge m-1\"\r\n [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n {{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType!=='brandWrong'&&item?.issueType!=='productcategoryWrong'\">\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-2\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Planogram response by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\"\r\n [style]=\"['Fixture type is wrong','Fixture size is wrong'].includes(item?.question) ? 'border:1px solid red' : ''\">\r\n\r\n <div id=\"header-block\" class=\"header-block\"\r\n style=\"border: 0.771px solid var(--Gray-400, #98A2B3);background: #F2F3F7;\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container *ngIf=\"['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ?'danger' : ''\">\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString() ?? storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\" [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ? 'danger' : ''\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ||\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\" [ngStyle]=\"{\r\n 'border-top':(getStartPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(getEndPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n background: 'var(--Gray-100, #f8f9fb)',}\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'fixture',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'fixture',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\"\r\n *ngFor=\"let comment of storeFixtureList[fixturetaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated \r\n \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"originalData.fixtureComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.fixtureComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"layoutFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'details-' + i }}\" [collapsed]=\"feedback.collapsed\" (headerClick)=\"togglePanel(i)\"\r\n class=\"mb-5\" *ngFor=\"let feedback of layoutFeedback;let i = index\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"feedback?.taskType==='initial'\">Layout verification assigned</div>\r\n <div *ngIf=\"feedback?.taskType==='redo'\">Layout verification re-assigned</div>\r\n <div class=\"grayText\">{{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"feedback?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"feedback?.status==='complete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"feedback?.status==='incomplete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&pendingLayoutissues>0\">\r\n {{pendingLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&approvedLayoutissues>0&&pendingLayoutissues===0\">\r\n {{approvedLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action done\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of feedback.answers;let j = index\">\r\n <ng-container *ngIf=\"issues?.issues?.length>0\">\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n <!-- <div>{{item?.Details[fixtureIndex]?.fixtureName}}</div> -->\r\n <div class=\"d-flex justify-content-between mt-5\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.fixtureName\">\r\n <div class=\"cursor-pointer\" (click)=\"previousFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixtureIndex+1}}/{{item?.Details.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nextFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"item?.Details.length>fixtureIndex+1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(item?.Details.length)===(fixtureIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureTemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureTemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementType}}\r\n {{item?.Details[fixtureIndex]?.associatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementType}}{{item?.Details[fixtureIndex]?.newassociatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div *ngIf=\"item.issueType==='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Store Fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType!=='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Planogram fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Below fixture is in the planogram but not in store.\r\n </div>\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n <!-- Header block -->\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{item?.Details[fixtureIndex]?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <!-- Body block -->\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container\r\n *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+ this.shlefColor[i].border\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.text\r\n }\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n <!-- @if(item.shelfType ==='shelf'){ -->\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{\r\n 'background-color':shelfData?.zone ? item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.bg : shlefColor[i].bg}\">\r\n\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.text\r\n }\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{item?.Details[fixtureIndex]?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.image&&item?.Details[fixtureIndex]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{item?.Details[fixtureIndex]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"item?.Details[fixtureIndex]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.Details[fixtureIndex]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId||item?.Details[fixtureIndex]?.status==='pending'&&item.issueType==='others'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'layout',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'layout',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"my-4 w-100\" *ngIf=\"feedback?.answers[0]?.video&&feedback?.answers[0]?.video!==''\">\r\n <div class=\"assignText\">Store Video</div>\r\n <video controls src=\"{{cdnUrl}}{{feedback?.answers[0]?.video}}\" class=\"mt-4 w-100\"></video>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.layoutComment.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.layoutComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n \r\n\r\n <div class=\"mt-5\" *ngIf=\"layoutFeedback?.length===0&&storeFixtureList?.length===0&&vmFeedback?.length===0&&!loading\">\r\n <div class=\"text-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\" />\r\n <path\r\n d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\"\r\n stroke=\"#009BF3\" stroke-width=\"2.5\" />\r\n </svg>\r\n </div>\r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No issue</div>\r\n <div class=\"mt-4\">The store did not flag it as an issue.</div>\r\n </div>\r\n </div>\r\n</section>", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;width:345px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;justify-content:start;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .block{border:1px solid #98a2b3;padding:10px;width:100%;max-width:345px;overflow-x:auto;min-height:52px}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid #98a2b3;min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:0;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3;border-bottom:3px solid #009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.vm-preview{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);margin-bottom:12px}.vm-preview h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600}.vm-preview p{color:var(--Gray-700, #344054);font-size:12px;font-weight:400}.vm-preview .preview{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}.vm-preview .preview img{border-radius:2px}.vm-placeholder{border:4px solid var(--Black, #101828);background:#f9fafb;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:8px}::ng-deep .redBorder{border:4px solid red!important}.vm-block{position:absolute;width:100px;height:100px;transition:all .3s ease}.vm-block h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;margin:0}.storeResponse{color:var(--Black, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.normalText{color:var(--Gray-600, #475467);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.border-bottom{border-bottom:1px solid #d0d5dd}.grayText{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.layoutLabel{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.assignText{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:12px;font-style:normal;font-weight:600;line-height:18px}.h-divider{width:2px;height:46px;border-radius:2px;background:var(--Gray-200, #eaecf0)}.shelfText{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge.badge-secondary{color:var(--Gray-700, #344054);background:var(--Gray-100, #f2f4f7)}.breakWord{overflow-wrap:break-word}.smallBoldText{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:600;line-height:15.573px}.smallText{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.headerStyle{color:var(--Primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:13.843px;font-style:normal;font-weight:600;line-height:20.764px;padding-top:15px}.two-tone-btn{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:600;line-height:20px;border-radius:6px;border:1px solid var(--Primary-300, #6BCAFF);padding:8px 14px}.two-tone-btn:hover{border:1px solid var(--Primary-300, #6BCAFF);color:var(--Primary-700, #009BF3);cursor:pointer}.footer-block{position:relative;box-sizing:border-box;justify-content:space-between!important}.footer-block p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f2f4f7;z-index:1}.sub-footer{position:relative;width:48%}.array-wrapper{border-radius:4px;background:var(--Gray-50, #f9fafb);padding:16px}.array-container{border-radius:6px;padding:12px;background:#fff;margin-bottom:12px}.wall-viewport{position:relative}img{width:100%;height:100%;object-fit:cover;display:block}::ng-deep .wall-viewport .body-block .block{max-width:100%!important}.secStyle{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.block.shelf{height:50px!important}.danger{color:red}.wordWrap{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i5.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i2.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i2.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i2.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i2.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i2.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i2.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
|
|
621
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ManageStorePlanoFeedbackComponent, selector: "app-manage-store-plano-feedback", inputs: { currentPlano: "currentPlano", storeFeedback: "storeFeedback", selectedIssue: "selectedIssue" }, outputs: { isApproved: "isApproved" }, viewQueries: [{ propertyName: "bodyBlockRef", first: true, predicate: ["bodyBlock"], descendants: true }, { propertyName: "accordion", first: true, predicate: ["accordion"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<section *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div 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</section>\r\n\r\n<section *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between border-bottom\">\r\n <div>\r\n <div class=\"storeResponse\">Store response</div>\r\n <div class=\"normalText mb-5\">Click a fixture or view all</div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <button *ngIf=\"selectedFixture?.fixtureId\" (click)=\"reload()\" class=\"btn btn-light text-primary border-0 px-3 py-2\"\r\n style=\"background-color: #eaf6ff; border-radius: 1rem;\">\r\n Clear Filter\r\n </button>\r\n <lib-filters *ngIf=\"!selectedFixture?.fixtureId\" [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"vmFeedback?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"openvm\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Vm verification assigned</div>\r\n <div class=\"grayText\">{{vmFeedback[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedVm===vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedVm!==vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingVmissues>0\">\r\n {{pendingVmissues}}/{{totalVmissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedVmissues>0&&pendingVmissues===0\">\r\n {{approvedVmissues}}/{{totalVmissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ vmFeedback[vmtaskIndex]?.FixtureData.fixtureName}} - {{vmFeedback[vmtaskIndex]?.FixtureData.fixtureWidth.value}} {{vmFeedback[vmtaskIndex]?.FixtureData.fixtureWidth.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmFeedback.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmFeedback.length>vmtaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(vmFeedback.length)===(vmtaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of vmFeedback[vmtaskIndex]?.FixtureData?.vmConfig;let i=index\">\r\n <div [id]=\"'vm' + i\" class=\"vm-block\" [style]=\"handlevmPosition(vm,i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle wordWrap\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngFor=\"let shelfData of vmFeedback[vmtaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of vmFeedback[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-start mt-5\">\r\n\r\n <div *ngIf=\"item.issueType==='VmMissing'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='extraVm'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n Total misplaced VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\"\r\n *ngFor=\"let vmData of item?.Details[fixtureIndex]?.vmConfig\">\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n current\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.startYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.startYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.endYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.endYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.xZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.xZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.yZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.yZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.position\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.position}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n New\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newstartYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newstartYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newendYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newendYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newxZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newxZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newyZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newyZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newposition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newposition}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmConfig?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of item?.Details[fixtureIndex]?.vmConfignew;let m=index\">\r\n <div [id]=\"'vm' + m\" class=\"vm-block\" [style]=\"handlevmPosition(vm,m)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + m\"\r\n [class]=\"vm.newVm ? 'redBorder' : ''\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n <!-- <h3>{{ item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</h3> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex].answers[0]?.image&&vmFeedback[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex].answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'vm',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'vm',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.image&&vmFeedback[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmFeedback[vmtaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.vmComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.vmComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"storeFixtureList?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"detailsfixture\" [collapsed]=\"openfixture\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Fixture verification assigned</div>\r\n <div class=\"grayText\">{{storeFixtureList[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedFixture===storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedFixture!==storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingFixtureissues>0\">\r\n {{pendingFixtureissues}}/{{totalFixtureissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedFixtureissues>0&&pendingFixtureissues===0\">\r\n {{approvedFixtureissues}}/{{totalFixtureissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureName}} - {{storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureWidth.value}} {{storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureWidth.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"storeFixtureList.length>fixturetaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(storeFixtureList.length)===(fixturetaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n <ng-container\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone\"\r\n [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{'background-color':(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.textBg : shlefColor[i].textBg,\r\n color:(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.text : shlefColor[i].text}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div> <span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-center mt-5\">\r\n\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixturetemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixturetemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.issueType==='sizeWrong'\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureWidth?.value}}\r\n {{item?.Details[fixtureIndex]?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='productcategoryWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n\r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord badge \">{{category}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='brandWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div *ngFor=\"let brand of missing?.brand\" class=\"shelfText breakWord badge m-1\"\r\n [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n {{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType!=='brandWrong'&&item?.issueType!=='productcategoryWrong'\">\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-2\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Planogram response by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\"\r\n [style]=\"['Fixture type is wrong','Fixture size is wrong'].includes(item?.question) ? 'border:1px solid red' : ''\">\r\n\r\n <div id=\"header-block\" class=\"header-block\"\r\n style=\"border: 0.771px solid var(--Gray-400, #98A2B3);background: #F2F3F7;\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container *ngIf=\"['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ?'danger' : ''\">\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString() ?? storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\" [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ? 'danger' : ''\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ||\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\" [ngStyle]=\"{\r\n 'border-top':(getStartPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(getEndPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n background: 'var(--Gray-100, #f8f9fb)',}\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'fixture',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'fixture',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\"\r\n *ngFor=\"let comment of storeFixtureList[fixturetaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated \r\n \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"originalData.fixtureComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.fixtureComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"layoutFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'details-' + i }}\" [collapsed]=\"feedback.collapsed\" (headerClick)=\"togglePanel(i)\"\r\n class=\"mb-5\" *ngFor=\"let feedback of layoutFeedback;let i = index\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"feedback?.taskType==='initial'\">Layout verification assigned</div>\r\n <div *ngIf=\"feedback?.taskType==='redo'\">Layout verification re-assigned</div>\r\n <div class=\"grayText\">{{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"feedback?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"feedback?.status==='complete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"feedback?.status==='incomplete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&pendingLayoutissues>0\">\r\n {{pendingLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&approvedLayoutissues>0&&pendingLayoutissues===0\">\r\n {{approvedLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action done\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of feedback.answers;let j = index\">\r\n <ng-container *ngIf=\"issues?.issues?.length>0\">\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n <!-- <div>{{item?.Details[fixtureIndex]?.fixtureName}}</div> -->\r\n <div class=\"d-flex justify-content-between mt-5\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.fixtureName\">\r\n <div class=\"cursor-pointer\" (click)=\"previousFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixtureIndex+1}}/{{item?.Details.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nextFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"item?.Details.length>fixtureIndex+1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(item?.Details.length)===(fixtureIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureTemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureTemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementType}}\r\n {{item?.Details[fixtureIndex]?.associatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementType}}{{item?.Details[fixtureIndex]?.newassociatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div *ngIf=\"item.issueType==='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Store Fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType!=='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Planogram fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Below fixture is in the planogram but not in store.\r\n </div>\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n <!-- Header block -->\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{item?.Details[fixtureIndex]?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <!-- Body block -->\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container\r\n *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+ this.shlefColor[i].border\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.text\r\n }\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n <!-- @if(item.shelfType ==='shelf'){ -->\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{\r\n 'background-color':shelfData?.zone ? item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.bg : shlefColor[i].bg}\">\r\n\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.text\r\n }\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{item?.Details[fixtureIndex]?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.image&&item?.Details[fixtureIndex]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{item?.Details[fixtureIndex]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"item?.Details[fixtureIndex]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.Details[fixtureIndex]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId||item?.Details[fixtureIndex]?.status==='pending'&&item.issueType==='others'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'layout',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'layout',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"my-4 w-100\" *ngIf=\"feedback?.answers[0]?.video&&feedback?.answers[0]?.video!==''\">\r\n <div class=\"assignText\">Store Video</div>\r\n <video controls src=\"{{cdnUrl}}{{feedback?.answers[0]?.video}}\" class=\"mt-4 w-100\"></video>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.layoutComment.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.layoutComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n \r\n\r\n <div class=\"mt-5\" *ngIf=\"layoutFeedback?.length===0&&storeFixtureList?.length===0&&vmFeedback?.length===0&&!loading\">\r\n <div class=\"text-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\" />\r\n <path\r\n d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\"\r\n stroke=\"#009BF3\" stroke-width=\"2.5\" />\r\n </svg>\r\n </div>\r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No issue</div>\r\n <div class=\"mt-4\">The store did not flag it as an issue.</div>\r\n </div>\r\n </div>\r\n</section>", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;width:345px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;justify-content:start;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .block{border:1px solid #98a2b3;padding:10px;width:100%;max-width:345px;overflow-x:auto;min-height:52px}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid #98a2b3;min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:0;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3;border-bottom:3px solid #009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.vm-preview{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);margin-bottom:12px}.vm-preview h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600}.vm-preview p{color:var(--Gray-700, #344054);font-size:12px;font-weight:400}.vm-preview .preview{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}.vm-preview .preview img{border-radius:2px}.vm-placeholder{border:4px solid var(--Black, #101828);background:#f9fafb;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:8px}::ng-deep .redBorder{border:4px solid red!important}.vm-block{position:absolute;width:100px;height:100px;transition:all .3s ease}.vm-block h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;margin:0}.storeResponse{color:var(--Black, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.normalText{color:var(--Gray-600, #475467);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.border-bottom{border-bottom:1px solid #d0d5dd}.grayText{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.layoutLabel{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.assignText{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:12px;font-style:normal;font-weight:600;line-height:18px}.h-divider{width:2px;height:46px;border-radius:2px;background:var(--Gray-200, #eaecf0)}.shelfText{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge.badge-secondary{color:var(--Gray-700, #344054);background:var(--Gray-100, #f2f4f7)}.breakWord{overflow-wrap:break-word}.smallBoldText{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:600;line-height:15.573px}.smallText{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.headerStyle{color:var(--Primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:13.843px;font-style:normal;font-weight:600;line-height:20.764px;padding-top:15px}.two-tone-btn{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:600;line-height:20px;border-radius:6px;border:1px solid var(--Primary-300, #6BCAFF);padding:8px 14px}.two-tone-btn:hover{border:1px solid var(--Primary-300, #6BCAFF);color:var(--Primary-700, #009BF3);cursor:pointer}.footer-block{position:relative;box-sizing:border-box;justify-content:space-between!important}.footer-block p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f2f4f7;z-index:1}.sub-footer{position:relative;width:48%}.array-wrapper{border-radius:4px;background:var(--Gray-50, #f9fafb);padding:16px}.array-container{border-radius:6px;padding:12px;background:#fff;margin-bottom:12px}.wall-viewport{position:relative}img{width:100%;height:100%;object-fit:cover;display:block}::ng-deep .wall-viewport .body-block .block{max-width:100%!important}.secStyle{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.block.shelf{height:50px!important}.danger{color:red}.wordWrap{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i5.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i2.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i2.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i2.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i2.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i2.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i2.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
|
|
614
622
|
}
|
|
615
623
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ManageStorePlanoFeedbackComponent, decorators: [{
|
|
616
624
|
type: Component,
|
|
617
|
-
args: [{ selector: "app-manage-store-plano-feedback", template: "<section *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div 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</section>\r\n\r\n<section *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between border-bottom\">\r\n <div>\r\n <div class=\"storeResponse\">Store response</div>\r\n <div class=\"normalText mb-5\">Click a fixture or view all</div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <button *ngIf=\"selectedFixture?.fixtureId\" (click)=\"reload()\" class=\"btn btn-light text-primary border-0 px-3 py-2\"\r\n style=\"background-color: #eaf6ff; border-radius: 1rem;\">\r\n Clear Filter\r\n </button>\r\n <lib-filters *ngIf=\"!selectedFixture?.fixtureId\" [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"vmFeedback?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"openvm\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Vm verification assigned</div>\r\n <div class=\"grayText\">{{vmFeedback[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedVm===vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedVm!==vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingVmissues>0\">\r\n {{pendingVmissues}}/{{totalVmissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedVmissues>0&&pendingVmissues===0\">\r\n {{approvedVmissues}}/{{totalVmissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ vmFeedback[vmtaskIndex]?.FixtureData.fixtureName}} - {{vmFeedback[vmtaskIndex]?.FixtureData.fixtureWidth.value}} {{vmFeedback[vmtaskIndex]?.FixtureData.fixtureWidth.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmFeedback.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmFeedback.length>vmtaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(vmFeedback.length)===(vmtaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of vmFeedback[vmtaskIndex]?.FixtureData?.vmConfig;let i=index\">\r\n <div [id]=\"'vm' + i\" class=\"vm-block\" [style]=\"handlevmPosition(vm,i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle wordWrap\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngFor=\"let shelfData of vmFeedback[vmtaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of vmFeedback[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-start mt-5\">\r\n\r\n <div *ngIf=\"item.issueType==='VmMissing'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='extraVm'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n Total misplaced VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\"\r\n *ngFor=\"let vmData of item?.Details[fixtureIndex]?.vmConfig\">\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n current\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.startYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.startYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.endYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.endYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.xZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.xZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.yZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.yZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.position\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.position}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n New\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newstartYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newstartYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newendYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newendYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newxZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newxZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newyZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newyZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newposition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newposition}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmConfig?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of item?.Details[fixtureIndex]?.vmConfignew;let m=index\">\r\n <div [id]=\"'vm' + m\" class=\"vm-block\" [style]=\"handlevmPosition(vm,m)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + m\"\r\n [class]=\"vm.newVm ? 'redBorder' : ''\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n <!-- <h3>{{ item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</h3> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex].answers[0]?.image&&vmFeedback[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex].answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'vm',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'vm',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.image&&vmFeedback[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmFeedback[vmtaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.vmComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.vmComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"storeFixtureList?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"detailsfixture\" [collapsed]=\"openfixture\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Fixture verification assigned</div>\r\n <div class=\"grayText\">{{storeFixtureList[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedFixture===storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedFixture!==storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingFixtureissues>0\">\r\n {{pendingFixtureissues}}/{{totalFixtureissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedFixtureissues>0&&pendingFixtureissues===0\">\r\n {{approvedFixtureissues}}/{{totalFixtureissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureName}} - {{storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureWidth.value}} {{storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureWidth.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"storeFixtureList.length>fixturetaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(storeFixtureList.length)===(fixturetaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n <ng-container\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{'background-color':shelfData?.zone ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.text}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div> <span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-center mt-5\">\r\n\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixturetemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixturetemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.issueType==='sizeWrong'\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureWidth?.value}}\r\n {{item?.Details[fixtureIndex]?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='productcategoryWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n\r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord badge \">{{category}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='brandWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div *ngFor=\"let brand of missing?.brand\" class=\"shelfText breakWord badge m-1\"\r\n [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n {{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType!=='brandWrong'&&item?.issueType!=='productcategoryWrong'\">\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-2\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Planogram response by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\"\r\n [style]=\"['Fixture type is wrong','Fixture size is wrong'].includes(item?.question) ? 'border:1px solid red' : ''\">\r\n\r\n <div id=\"header-block\" class=\"header-block\"\r\n style=\"border: 0.771px solid var(--Gray-400, #98A2B3);background: #F2F3F7;\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container *ngIf=\"['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ?'danger' : ''\">\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString() ?? storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\" [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ? 'danger' : ''\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ||\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\" [ngStyle]=\"{\r\n 'border-top':(getStartPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(getEndPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n background: 'var(--Gray-100, #f8f9fb)',}\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'fixture',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'fixture',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\"\r\n *ngFor=\"let comment of storeFixtureList[fixturetaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated \r\n \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"originalData.fixtureComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.fixtureComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"layoutFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'details-' + i }}\" [collapsed]=\"feedback.collapsed\" (headerClick)=\"togglePanel(i)\"\r\n class=\"mb-5\" *ngFor=\"let feedback of layoutFeedback;let i = index\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"feedback?.taskType==='initial'\">Layout verification assigned</div>\r\n <div *ngIf=\"feedback?.taskType==='redo'\">Layout verification re-assigned</div>\r\n <div class=\"grayText\">{{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"feedback?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"feedback?.status==='complete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"feedback?.status==='incomplete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&pendingLayoutissues>0\">\r\n {{pendingLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&approvedLayoutissues>0&&pendingLayoutissues===0\">\r\n {{approvedLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action done\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of feedback.answers;let j = index\">\r\n <ng-container *ngIf=\"issues?.issues?.length>0\">\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n <!-- <div>{{item?.Details[fixtureIndex]?.fixtureName}}</div> -->\r\n <div class=\"d-flex justify-content-between mt-5\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.fixtureName\">\r\n <div class=\"cursor-pointer\" (click)=\"previousFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixtureIndex+1}}/{{item?.Details.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nextFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"item?.Details.length>fixtureIndex+1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(item?.Details.length)===(fixtureIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureTemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureTemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementType}}\r\n {{item?.Details[fixtureIndex]?.associatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementType}}{{item?.Details[fixtureIndex]?.newassociatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div *ngIf=\"item.issueType==='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Store Fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType!=='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Planogram fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Below fixture is in the planogram but not in store.\r\n </div>\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n <!-- Header block -->\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{item?.Details[fixtureIndex]?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <!-- Body block -->\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container\r\n *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+ this.shlefColor[i].border\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.text\r\n }\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n <!-- @if(item.shelfType ==='shelf'){ -->\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{\r\n 'background-color':shelfData?.zone ? item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.bg : shlefColor[i].bg}\">\r\n\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.text\r\n }\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{item?.Details[fixtureIndex]?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.image&&item?.Details[fixtureIndex]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{item?.Details[fixtureIndex]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"item?.Details[fixtureIndex]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.Details[fixtureIndex]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId||item?.Details[fixtureIndex]?.status==='pending'&&item.issueType==='others'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'layout',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'layout',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"my-4 w-100\" *ngIf=\"feedback?.answers[0]?.video&&feedback?.answers[0]?.video!==''\">\r\n <div class=\"assignText\">Store Video</div>\r\n <video controls src=\"{{cdnUrl}}{{feedback?.answers[0]?.video}}\" class=\"mt-4 w-100\"></video>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.layoutComment.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.layoutComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n \r\n\r\n <div class=\"mt-5\" *ngIf=\"layoutFeedback?.length===0&&storeFixtureList?.length===0&&vmFeedback?.length===0&&!loading\">\r\n <div class=\"text-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\" />\r\n <path\r\n d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\"\r\n stroke=\"#009BF3\" stroke-width=\"2.5\" />\r\n </svg>\r\n </div>\r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No issue</div>\r\n <div class=\"mt-4\">The store did not flag it as an issue.</div>\r\n </div>\r\n </div>\r\n</section>", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;width:345px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;justify-content:start;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .block{border:1px solid #98a2b3;padding:10px;width:100%;max-width:345px;overflow-x:auto;min-height:52px}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid #98a2b3;min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:0;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3;border-bottom:3px solid #009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.vm-preview{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);margin-bottom:12px}.vm-preview h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600}.vm-preview p{color:var(--Gray-700, #344054);font-size:12px;font-weight:400}.vm-preview .preview{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}.vm-preview .preview img{border-radius:2px}.vm-placeholder{border:4px solid var(--Black, #101828);background:#f9fafb;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:8px}::ng-deep .redBorder{border:4px solid red!important}.vm-block{position:absolute;width:100px;height:100px;transition:all .3s ease}.vm-block h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;margin:0}.storeResponse{color:var(--Black, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.normalText{color:var(--Gray-600, #475467);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.border-bottom{border-bottom:1px solid #d0d5dd}.grayText{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.layoutLabel{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.assignText{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:12px;font-style:normal;font-weight:600;line-height:18px}.h-divider{width:2px;height:46px;border-radius:2px;background:var(--Gray-200, #eaecf0)}.shelfText{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge.badge-secondary{color:var(--Gray-700, #344054);background:var(--Gray-100, #f2f4f7)}.breakWord{overflow-wrap:break-word}.smallBoldText{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:600;line-height:15.573px}.smallText{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.headerStyle{color:var(--Primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:13.843px;font-style:normal;font-weight:600;line-height:20.764px;padding-top:15px}.two-tone-btn{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:600;line-height:20px;border-radius:6px;border:1px solid var(--Primary-300, #6BCAFF);padding:8px 14px}.two-tone-btn:hover{border:1px solid var(--Primary-300, #6BCAFF);color:var(--Primary-700, #009BF3);cursor:pointer}.footer-block{position:relative;box-sizing:border-box;justify-content:space-between!important}.footer-block p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f2f4f7;z-index:1}.sub-footer{position:relative;width:48%}.array-wrapper{border-radius:4px;background:var(--Gray-50, #f9fafb);padding:16px}.array-container{border-radius:6px;padding:12px;background:#fff;margin-bottom:12px}.wall-viewport{position:relative}img{width:100%;height:100%;object-fit:cover;display:block}::ng-deep .wall-viewport .body-block .block{max-width:100%!important}.secStyle{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.block.shelf{height:50px!important}.danger{color:red}.wordWrap{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\n"] }]
|
|
625
|
+
args: [{ selector: "app-manage-store-plano-feedback", template: "<section *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div 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</section>\r\n\r\n<section *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between border-bottom\">\r\n <div>\r\n <div class=\"storeResponse\">Store response</div>\r\n <div class=\"normalText mb-5\">Click a fixture or view all</div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <button *ngIf=\"selectedFixture?.fixtureId\" (click)=\"reload()\" class=\"btn btn-light text-primary border-0 px-3 py-2\"\r\n style=\"background-color: #eaf6ff; border-radius: 1rem;\">\r\n Clear Filter\r\n </button>\r\n <lib-filters *ngIf=\"!selectedFixture?.fixtureId\" [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"vmFeedback?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"openvm\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Vm verification assigned</div>\r\n <div class=\"grayText\">{{vmFeedback[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedVm===vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedVm!==vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingVmissues>0\">\r\n {{pendingVmissues}}/{{totalVmissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedVmissues>0&&pendingVmissues===0\">\r\n {{approvedVmissues}}/{{totalVmissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ vmFeedback[vmtaskIndex]?.FixtureData.fixtureName}} - {{vmFeedback[vmtaskIndex]?.FixtureData.fixtureWidth.value}} {{vmFeedback[vmtaskIndex]?.FixtureData.fixtureWidth.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmFeedback.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmFeedback.length>vmtaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(vmFeedback.length)===(vmtaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of vmFeedback[vmtaskIndex]?.FixtureData?.vmConfig;let i=index\">\r\n <div [id]=\"'vm' + i\" class=\"vm-block\" [style]=\"handlevmPosition(vm,i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle wordWrap\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngFor=\"let shelfData of vmFeedback[vmtaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of vmFeedback[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-start mt-5\">\r\n\r\n <div *ngIf=\"item.issueType==='VmMissing'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='extraVm'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n Total misplaced VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\"\r\n *ngFor=\"let vmData of item?.Details[fixtureIndex]?.vmConfig\">\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n current\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.startYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.startYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.endYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.endYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.xZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.xZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.yZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.yZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.position\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.position}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n New\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newstartYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newstartYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newendYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newendYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newxZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newxZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newyZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newyZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newposition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newposition}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmConfig?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of item?.Details[fixtureIndex]?.vmConfignew;let m=index\">\r\n <div [id]=\"'vm' + m\" class=\"vm-block\" [style]=\"handlevmPosition(vm,m)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + m\"\r\n [class]=\"vm.newVm ? 'redBorder' : ''\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n <!-- <h3>{{ item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</h3> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex].answers[0]?.image&&vmFeedback[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex].answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'vm',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'vm',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.image&&vmFeedback[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmFeedback[vmtaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.vmComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.vmComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"storeFixtureList?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"detailsfixture\" [collapsed]=\"openfixture\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Fixture verification assigned</div>\r\n <div class=\"grayText\">{{storeFixtureList[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedFixture===storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedFixture!==storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingFixtureissues>0\">\r\n {{pendingFixtureissues}}/{{totalFixtureissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedFixtureissues>0&&pendingFixtureissues===0\">\r\n {{approvedFixtureissues}}/{{totalFixtureissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureName}} - {{storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureWidth.value}} {{storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureWidth.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"storeFixtureList.length>fixturetaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(storeFixtureList.length)===(fixturetaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n <ng-container\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone\"\r\n [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{'background-color':(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.textBg : shlefColor[i].textBg,\r\n color:(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.text : shlefColor[i].text}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div> <span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-center mt-5\">\r\n\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixturetemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixturetemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.issueType==='sizeWrong'\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureWidth?.value}}\r\n {{item?.Details[fixtureIndex]?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='productcategoryWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n\r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord badge \">{{category}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='brandWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div *ngFor=\"let brand of missing?.brand\" class=\"shelfText breakWord badge m-1\"\r\n [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n {{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType!=='brandWrong'&&item?.issueType!=='productcategoryWrong'\">\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-2\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Planogram response by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\"\r\n [style]=\"['Fixture type is wrong','Fixture size is wrong'].includes(item?.question) ? 'border:1px solid red' : ''\">\r\n\r\n <div id=\"header-block\" class=\"header-block\"\r\n style=\"border: 0.771px solid var(--Gray-400, #98A2B3);background: #F2F3F7;\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container *ngIf=\"['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ?'danger' : ''\">\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString() ?? storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\" [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ? 'danger' : ''\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ||\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\" [ngStyle]=\"{\r\n 'border-top':(getStartPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(getEndPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n background: 'var(--Gray-100, #f8f9fb)',}\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'fixture',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'fixture',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\"\r\n *ngFor=\"let comment of storeFixtureList[fixturetaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated \r\n \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"originalData.fixtureComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.fixtureComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"layoutFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'details-' + i }}\" [collapsed]=\"feedback.collapsed\" (headerClick)=\"togglePanel(i)\"\r\n class=\"mb-5\" *ngFor=\"let feedback of layoutFeedback;let i = index\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"feedback?.taskType==='initial'\">Layout verification assigned</div>\r\n <div *ngIf=\"feedback?.taskType==='redo'\">Layout verification re-assigned</div>\r\n <div class=\"grayText\">{{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"feedback?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"feedback?.status==='complete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"feedback?.status==='incomplete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&pendingLayoutissues>0\">\r\n {{pendingLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&approvedLayoutissues>0&&pendingLayoutissues===0\">\r\n {{approvedLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action done\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of feedback.answers;let j = index\">\r\n <ng-container *ngIf=\"issues?.issues?.length>0\">\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n <!-- <div>{{item?.Details[fixtureIndex]?.fixtureName}}</div> -->\r\n <div class=\"d-flex justify-content-between mt-5\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.fixtureName\">\r\n <div class=\"cursor-pointer\" (click)=\"previousFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixtureIndex+1}}/{{item?.Details.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nextFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"item?.Details.length>fixtureIndex+1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(item?.Details.length)===(fixtureIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureTemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureTemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementType}}\r\n {{item?.Details[fixtureIndex]?.associatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementType}}{{item?.Details[fixtureIndex]?.newassociatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div *ngIf=\"item.issueType==='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Store Fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType!=='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Planogram fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Below fixture is in the planogram but not in store.\r\n </div>\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n <!-- Header block -->\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{item?.Details[fixtureIndex]?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <!-- Body block -->\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container\r\n *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+ this.shlefColor[i].border\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.text\r\n }\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n <!-- @if(item.shelfType ==='shelf'){ -->\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{\r\n 'background-color':shelfData?.zone ? item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.bg : shlefColor[i].bg}\">\r\n\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.text\r\n }\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{item?.Details[fixtureIndex]?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.image&&item?.Details[fixtureIndex]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{item?.Details[fixtureIndex]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"item?.Details[fixtureIndex]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.Details[fixtureIndex]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId||item?.Details[fixtureIndex]?.status==='pending'&&item.issueType==='others'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'layout',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'layout',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"my-4 w-100\" *ngIf=\"feedback?.answers[0]?.video&&feedback?.answers[0]?.video!==''\">\r\n <div class=\"assignText\">Store Video</div>\r\n <video controls src=\"{{cdnUrl}}{{feedback?.answers[0]?.video}}\" class=\"mt-4 w-100\"></video>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.layoutComment.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.layoutComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg 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=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n \r\n\r\n <div class=\"mt-5\" *ngIf=\"layoutFeedback?.length===0&&storeFixtureList?.length===0&&vmFeedback?.length===0&&!loading\">\r\n <div class=\"text-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\" />\r\n <path\r\n d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\"\r\n stroke=\"#009BF3\" stroke-width=\"2.5\" />\r\n </svg>\r\n </div>\r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No issue</div>\r\n <div class=\"mt-4\">The store did not flag it as an issue.</div>\r\n </div>\r\n </div>\r\n</section>", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;width:345px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;justify-content:start;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .block{border:1px solid #98a2b3;padding:10px;width:100%;max-width:345px;overflow-x:auto;min-height:52px}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid #98a2b3;min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:0;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3;border-bottom:3px solid #009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.vm-preview{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);margin-bottom:12px}.vm-preview h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600}.vm-preview p{color:var(--Gray-700, #344054);font-size:12px;font-weight:400}.vm-preview .preview{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}.vm-preview .preview img{border-radius:2px}.vm-placeholder{border:4px solid var(--Black, #101828);background:#f9fafb;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:8px}::ng-deep .redBorder{border:4px solid red!important}.vm-block{position:absolute;width:100px;height:100px;transition:all .3s ease}.vm-block h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;margin:0}.storeResponse{color:var(--Black, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.normalText{color:var(--Gray-600, #475467);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.border-bottom{border-bottom:1px solid #d0d5dd}.grayText{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.layoutLabel{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.assignText{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:12px;font-style:normal;font-weight:600;line-height:18px}.h-divider{width:2px;height:46px;border-radius:2px;background:var(--Gray-200, #eaecf0)}.shelfText{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge.badge-secondary{color:var(--Gray-700, #344054);background:var(--Gray-100, #f2f4f7)}.breakWord{overflow-wrap:break-word}.smallBoldText{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:600;line-height:15.573px}.smallText{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.headerStyle{color:var(--Primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:13.843px;font-style:normal;font-weight:600;line-height:20.764px;padding-top:15px}.two-tone-btn{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:600;line-height:20px;border-radius:6px;border:1px solid var(--Primary-300, #6BCAFF);padding:8px 14px}.two-tone-btn:hover{border:1px solid var(--Primary-300, #6BCAFF);color:var(--Primary-700, #009BF3);cursor:pointer}.footer-block{position:relative;box-sizing:border-box;justify-content:space-between!important}.footer-block p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f2f4f7;z-index:1}.sub-footer{position:relative;width:48%}.array-wrapper{border-radius:4px;background:var(--Gray-50, #f9fafb);padding:16px}.array-container{border-radius:6px;padding:12px;background:#fff;margin-bottom:12px}.wall-viewport{position:relative}img{width:100%;height:100%;object-fit:cover;display:block}::ng-deep .wall-viewport .body-block .block{max-width:100%!important}.secStyle{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.block.shelf{height:50px!important}.danger{color:red}.wordWrap{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\n"] }]
|
|
618
626
|
}], ctorParameters: () => [{ type: i1.StoreBuilderService }, { type: i0.ChangeDetectorRef }, { type: i2.NgbModal }, { type: i3.GlobalStateService }], propDecorators: { bodyBlockRef: [{
|
|
619
627
|
type: ViewChild,
|
|
620
628
|
args: ["bodyBlock"]
|
|
@@ -630,4 +638,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
630
638
|
}], isApproved: [{
|
|
631
639
|
type: Output
|
|
632
640
|
}] } });
|
|
633
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2svbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2svbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlDLFNBQVMsRUFBRSxLQUFLLEVBQWlCLFlBQVksRUFBRSxNQUFNLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBRTlKLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQTtBQUMvRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBTzdCLE1BQU0sT0FBTyxpQ0FBaUM7SUE0Q2xDO0lBQ0E7SUFDQTtJQUNBO0lBN0NjLFlBQVksQ0FBYztJQUNQLFNBQVMsQ0FBTTtJQUMxRCxjQUFjLEdBQVEsRUFBRSxDQUFDO0lBQ3pCLFVBQVUsR0FBUSxFQUFFLENBQUM7SUFDckIsV0FBVyxHQUFZLElBQUksQ0FBQTtJQUMzQixNQUFNLEdBQVksSUFBSSxDQUFBO0lBQ3RCLHlCQUF5QjtJQUN6QixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCLGdCQUFnQixHQUFXLENBQUMsQ0FBQztJQUM3QixXQUFXLEdBQVcsQ0FBQyxDQUFDO0lBQ3hCLG9CQUFvQixHQUFXLENBQUMsQ0FBQTtJQUNoQyxtQkFBbUIsR0FBVyxDQUFDLENBQUE7SUFDL0Isb0JBQW9CLEdBQVcsQ0FBQyxDQUFBO0lBQ2hDLHFCQUFxQixHQUFXLENBQUMsQ0FBQTtJQUNqQyxrQkFBa0IsR0FBVyxDQUFDLENBQUE7SUFDOUIsZ0JBQWdCLEdBQVcsQ0FBQyxDQUFBO0lBQzVCLGVBQWUsR0FBVyxDQUFDLENBQUE7SUFDM0IsZ0JBQWdCLEdBQVcsQ0FBQyxDQUFBO0lBQzVCLGFBQWEsR0FBVyxDQUFDLENBQUE7SUFDekIsV0FBVyxHQUFXLENBQUMsQ0FBQTtJQUN2QixTQUFTLEdBQVEsRUFBRSxDQUFDO0lBQ3BCLFFBQVEsR0FBUSxFQUFFLENBQUM7SUFDbkIsMkJBQTJCO0lBQzNCLHdCQUF3QjtJQUN4QixVQUFVLEdBQUcsWUFBWSxDQUFDO0lBQzFCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsZ0JBQWdCLEdBQVEsRUFBRSxDQUFDO0lBQ25CLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLFlBQVksQ0FBTTtJQUNsQixhQUFhLENBQU07SUFDbkIsYUFBYSxDQUFNO0lBQ2xCLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQy9DLGVBQWUsQ0FBTTtJQUNyQixZQUFZLENBQU07SUFDbEIsTUFBTSxDQUFNO0lBQ1osbUJBQW1CLENBQUs7SUFDeEIsVUFBVSxHQUFRO1FBQ2hCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLDJCQUEyQixFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1FBQ2xMLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRTtRQUM5RyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7S0FDOUksQ0FBQztJQUNGLFlBQ1UsVUFBK0IsRUFDL0IsRUFBcUIsRUFDckIsWUFBc0IsRUFDdEIsRUFBc0I7UUFIdEIsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFDL0IsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7SUFDNUIsQ0FBQztJQUVMLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxZQUFZLENBQUE7U0FDaEU7UUFDRCxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUc1QixJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxZQUFZLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO2dCQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUN0RCxDQUFDO2dCQUNGLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUN0RCxDQUFDO2dCQUVGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ2hELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQzlDLElBQUksWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEtBQUssQ0FBQyxJQUFJLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQzNILElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2lCQUN0QjthQUdGO1NBQ0Y7UUFDRCxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUM1QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtZQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxZQUFZLENBQUM7WUFDN0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25ELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUU7Z0JBRWpDLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FDOUMsQ0FBQztnQkFDRixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUMsQ0FBQztnQkFFNUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO29CQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO3dCQUNoQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFOzRCQUNoQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxJQUFJLGNBQWMsRUFBRTtnQ0FDeEYsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7Z0NBQ3RELEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFBOzZCQUNuQjtpQ0FBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksVUFBVSxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksY0FBYyxFQUFFO2dDQUM3RSxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLENBQUE7Z0NBQ3pHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQ0FDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBOzZCQUMzQztpQ0FBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLGNBQWMsRUFBRTtnQ0FDaEcsS0FBSyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQTtnQ0FDdEcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7NkJBQy9DO2lDQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxjQUFjLEVBQUU7Z0NBQ2pHLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFBOzZCQUNuQjt3QkFDSCxDQUFDLENBQUMsQ0FBQzt3QkFDSCxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDekUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7d0JBQzVDLElBQUksWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLGNBQWMsQ0FBQyxDQUFBO3dCQUNuRixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQTt3QkFDekMsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTs0QkFDM0IsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxjQUFjLENBQUMsQ0FBQzt5QkFDbkY7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtvQkFDakQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsYUFBYSxDQUFDLENBQUM7YUFDbEQ7WUFFRCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQ3RELENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUNsRSxDQUFDO1lBQ0YsSUFBSSxXQUFXLElBQUksV0FBVyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7Z0JBRTFCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUM1QztpQkFBTTtnQkFDTCxJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDbkM7WUFDRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQzVDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUNsRSxDQUFDO1lBQ0YsSUFBSSxNQUFNLElBQUksTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDakM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQzdCO1NBQ0Y7SUFDSCxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQy9DLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQTthQUMvQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFBO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUE7UUFDNUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsQ0FBQTtRQUM3QixJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFBO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQTtRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQTtRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFBO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFBO0lBQ3RCLENBQUM7SUFDRCxXQUFXLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxDQUFNLEVBQUUsRUFBRTtZQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxpQ0FBaUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVyxDQUFDLElBQVMsRUFBRSxDQUFNO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNELHdCQUF3QixDQUFDLFdBQWdCO1FBRXZDLElBQUksV0FBVyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7WUFDdkIsQ0FBQyxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFBO1NBQ3pCO1FBR0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFBO1FBQzdGLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFVLEVBQUUsQ0FBTSxFQUFFLEVBQUU7WUFFMUMsSUFDRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVc7Z0JBQy9CLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQzNDO2dCQUNBLEtBQUssQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FDckQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQzlCLENBQUM7Z0JBQ0YsS0FBSyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FDOUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQzlCLENBQUM7Z0JBQ0YsSUFBSSxTQUFTLEdBQU8sRUFBRSxDQUFBO2dCQUN0QixLQUFLLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFPLEVBQUUsRUFBRTtvQkFDbEQsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFDLEtBQUssRUFBQyxHQUFHLENBQUMsS0FBSyxFQUFDLENBQUE7Z0JBQ3pDLENBQUMsQ0FBQyxDQUFBO2dCQUNGLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztnQkFDeEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDekMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQ2hDLENBQUM7Z0JBQ0YsS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7Z0JBQy9ELEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQ25DLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQzdCLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDMUQsQ0FBQztvQkFDRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFBO29CQUV2RSxHQUFHLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO3dCQUdqQyxJQUFJLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7NEJBQzlFLEtBQUssQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFBOzRCQUN2QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsQ0FBQTt5QkFDMUQ7NkJBQU07NEJBQ0wsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7NEJBRXRCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFBO3lCQUM1RDt3QkFDRCxLQUFLLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFOzRCQUN2QyxJQUFJLFFBQVEsRUFBRSxXQUFXLElBQUksUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dDQUM5RCxRQUFRLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FDNUMsUUFBUSxDQUFDLFdBQVcsQ0FDckIsQ0FBQztnQ0FDRixRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dDQUM5RCxRQUFRLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dDQUMzRCxJQUNFLENBQUMsc0JBQXNCLEVBQUUsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUM3QyxLQUFLLENBQUMsU0FBUyxDQUNoQixFQUNEO29DQUNBLEtBQUssQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO3dDQUNwRCxJQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDMUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUNoQixRQUFRLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQzVDLENBQUM7d0NBQ0YsSUFBSSxDQUFDLFlBQVksRUFBRTs0Q0FDakIsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7NENBQ3RCLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3lDQUNsQztvQ0FDSCxDQUFDLENBQUMsQ0FBQztvQ0FDSCxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDdkIsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQ2xELENBQUM7aUNBQ0g7Z0NBQ0QsUUFBUSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDOzZCQUM5Qzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELGtCQUFrQixDQUFDLE1BQVc7UUFFNUIsSUFBSSxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7WUFDdkUsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFDbkYsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBRTdCLElBQ0UsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXO2dCQUMvQixLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUMzQztnQkFDQSxLQUFLLENBQUMsV0FBVyxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQ3JELEtBQUssQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUM5QixDQUFDO2dCQUNGLEtBQUssQ0FBQyxXQUFXLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQzlDLEtBQUssQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUM5QixDQUFDO2dCQUNGLEtBQUssQ0FBQyxXQUFXLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ3pDLEtBQUssQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUNoQyxDQUFDO2dCQUNGLEtBQUssQ0FBQyxXQUFXLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO2dCQUMvRCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztnQkFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDbEMsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FDN0IsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUMxRCxDQUFDO29CQUNGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQTtvQkFFN0QsR0FBRyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTt3QkFFakMsSUFBSSxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOzRCQUM5RSxLQUFLLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQTs0QkFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQTt5QkFDaEQ7NkJBQU07NEJBQ0wsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7NEJBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFBO3lCQUNsRDt3QkFDRCxLQUFLLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFOzRCQUN2QyxRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUNsQyxDQUFDOzRCQUNGLElBQUksUUFBUSxFQUFFLFdBQVcsSUFBSSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0NBQzlELFFBQVEsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUM1QyxRQUFRLENBQUMsV0FBVyxDQUNyQixDQUFDO2dDQUNGLFFBQVEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7Z0NBQzlELFFBQVEsQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7Z0NBQzNELFFBQVEsQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztnQ0FDN0MsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRTtvQ0FDdkMsSUFBSSxLQUFLLENBQUMsU0FBUyxJQUFJLFlBQVksRUFBRTt3Q0FDbkMsRUFBRSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7d0NBQ3pDLEVBQUUsQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQzt3Q0FDckMsRUFBRSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO3dDQUNyQyxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7cUNBQ3RDO29DQUNELEVBQUUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dDQUNsQixDQUFDLENBQUMsQ0FBQztnQ0FDSCxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDOzZCQUN4Qzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQzthQUVKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVyxDQUFDLFlBQW9CLEVBQUUsU0FBYztRQUM5QyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBWSxHQUFHLENBQUMsRUFBRTtZQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBQ0QsZUFBZSxDQUFDLFlBQW9CLEVBQUUsU0FBYztRQUNsRCxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUNELGVBQWUsQ0FBQyxnQkFBd0IsRUFBRSxTQUFjO1FBQ3RELE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkIsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLGdCQUFnQixHQUFHLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUNELGNBQWMsQ0FBQyxXQUFtQixFQUFFLFNBQWM7UUFDaEQsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7SUFDRCxVQUFVLENBQUMsV0FBbUIsRUFBRSxTQUFjO1FBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkIsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLFdBQVcsR0FBRyxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUNELG1CQUFtQixDQUFDLGdCQUF3QixFQUFFLFNBQWM7UUFDMUQsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixHQUFHLENBQUMsQ0FBQztTQUM5QztJQUNILENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxVQUFlO1FBRTlCLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsQ0FBTSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNYLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2FBQ3hCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2FBQ3ZCO1lBQ0QsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakMsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FDN0IsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUMxRCxDQUFDO2dCQUNGLGlHQUFpRztnQkFDakcsa0dBQWtHO2dCQUVsRyxHQUFHLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO29CQUNqQyxJQUFJLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQzlFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxDQUFBO3FCQUN4RDt5QkFBTTt3QkFDTCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsQ0FBQTtxQkFDMUQ7b0JBQ0QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTt3QkFDcEMsSUFBSSxLQUFLLEVBQUUsV0FBVyxJQUFJLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTs0QkFDeEQsS0FBSyxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDOzRCQUMvRCxLQUFLLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDOzRCQUN4RCxLQUFLLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDOzRCQUNyRCxJQUFJLFNBQVMsR0FBUSxFQUFFLENBQUM7NEJBQ3hCLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0NBQ3ZDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDOzRCQUM3QyxDQUFDLENBQUMsQ0FBQzs0QkFDSCxLQUFLLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQzs0QkFDNUIsS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDOzRCQUN2QyxxQ0FBcUM7eUJBQ3RDO29CQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDO1FBR2pDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsSUFBUyxFQUFFLEVBQUU7WUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxXQUFXLENBQUM7WUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDZCxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO2FBQ2pDO1lBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ1AsQ0FBQztRQUNGLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxTQUFTLENBQUMsU0FBYztRQUN0QixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLGFBQWEsR0FBUyxFQUFFLENBQUE7UUFDNUIsbUNBQW1DO1FBQ25DLHlDQUF5QztRQUN6QyxrQkFBa0I7UUFDbEIseUNBQXlDO1FBQ3pDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFTLEVBQUUsRUFBRTtZQUM5QixJQUFJLFVBQVUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RSxJQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtnQkFDckIsYUFBYSxDQUFDLElBQUksQ0FBQztvQkFDakIsR0FBRyxLQUFLO29CQUNSLGNBQWMsRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDakMsWUFBWSxFQUFFLEtBQUssQ0FBQyxXQUFXO29CQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7aUJBQzlCLENBQUMsQ0FBQztnQkFDSCxLQUFLLEVBQUUsQ0FBQzthQUNUO2lCQUNJO2dCQUNILElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRTtvQkFDM0UsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7b0JBQ2pFLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixHQUFHO3dCQUNqRCxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjt3QkFDbkQsR0FBRyxLQUFLLENBQUMsZ0JBQWdCO3FCQUMxQixDQUFDO29CQUNGLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixHQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtpQkFDdkk7cUJBQ0k7b0JBQ0gsYUFBYSxDQUFDLElBQUksQ0FBQzt3QkFDakIsR0FBRyxLQUFLO3dCQUNSLGNBQWMsRUFBRSxLQUFLLENBQUMsV0FBVzt3QkFDakMsWUFBWSxFQUFFLEtBQUssQ0FBQyxXQUFXO3dCQUMvQixLQUFLLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSztxQkFDL0MsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILHdDQUF3QztRQUN4QyxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN4QixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsWUFBWSxDQUNWLElBQVMsRUFDVCxHQUFRLEVBQ1IsUUFBYSxFQUNiLE9BQVksRUFDWixTQUFjLEVBQ2QsUUFBYSxFQUNiLFNBQWM7UUFFZCxJQUFJLE9BQU8sR0FBRztZQUNaLEdBQUcsRUFBRSxHQUFHO1lBQ1IsUUFBUSxFQUFFLFFBQVE7WUFDbEIsT0FBTyxFQUFFLE9BQU87WUFDaEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxPQUFPO1lBQzFDLE9BQU8sRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsR0FBRztTQUN2QyxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDbEUsUUFBUSxFQUFFLElBQUk7WUFDZCxJQUFJLEVBQUUsSUFBSTtZQUNWLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEI7U0FDbkUsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDdkMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFDL0MsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BCLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzlCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsTUFBTTtRQUNKLElBQUksTUFBTSxHQUFHO1lBQ1gsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFBO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLElBQUksTUFBTSxHQUFRLEVBQUUsQ0FBQTtRQUNwQixJQUFJLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDakIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO2dCQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO2dCQUNwQixJQUFJLE9BQU8sQ0FBQyxXQUFXLEtBQUssTUFBTSxFQUFFO29CQUNsQyxNQUFNLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBRWpFO2dCQUNELElBQUksT0FBTyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUU7b0JBQ3BDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDbkU7Z0JBQ0QsSUFBSSxPQUFPLENBQUMsV0FBVyxLQUFLLGlCQUFpQixFQUFFO29CQUM3QyxNQUFNLENBQUMsc0JBQXNCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQzVFO1lBQ0gsQ0FBQyxDQUFDLENBQUE7WUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ25CLElBQUksTUFBTSxDQUFDLHNCQUFzQixFQUFFLE1BQU0sS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxNQUFNLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDM0gsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUE7Z0JBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QixPQUFNO2FBQ1A7WUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUU5QjtJQUdILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFXLEVBQUUsQ0FBTTtRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQTRCLENBQUM7UUFDakUsTUFBTSxVQUFVLEdBQUcsUUFBUSxFQUFFLFlBQVksQ0FBQztRQUMxQyxNQUFNLFNBQVMsR0FBRyxRQUFRLEVBQUUsV0FBVyxDQUFDO1FBQ3hDLElBQUksS0FBSyxDQUFDO1FBQ1YsOENBQThDO1FBQzlDLElBQUksVUFBVSxHQUFHLE1BQU0sRUFBRSxjQUFjLElBQUksQ0FBQyxDQUFDO1FBQzdDLElBQUksUUFBUSxHQUFHLE1BQU0sRUFBRSxZQUFZLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxFQUFFO1lBQUUsT0FBTztRQUVoQixJQUFJLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVWLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNmLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3ZDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBZ0IsQ0FBQztZQUNsRSxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPO1lBRW5CLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDO1NBQzlCO1FBRUQsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzlDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBZ0IsQ0FBQztZQUM5RCxJQUFJLENBQUMsQ0FBQztnQkFBRSxPQUFPO1lBQ2YsZUFBZSxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDbkM7UUFFRCxRQUFRLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDckIsS0FBSyxNQUFNO2dCQUNULENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ04sS0FBSyxHQUFHLEdBQUcsQ0FBQztnQkFDWixNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLEtBQUssR0FBRyxHQUFHLENBQUM7Z0JBQ1osQ0FBQyxHQUFHLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3RCLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsS0FBSyxHQUFHLEdBQUcsQ0FBQztnQkFDWixDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QixNQUFNO1lBQ1IsS0FBSyxTQUFTO2dCQUNaLEtBQUssR0FBRyxTQUFTLENBQUM7Z0JBQ2xCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ04sTUFBTTtTQUNUO1FBRUQsUUFBUSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ3JCLEtBQUssS0FBSztnQkFDUixNQUFNLEdBQUcsZUFBZSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUM1RCxDQUFDLEdBQUcsTUFBTSxDQUFDO2dCQUNYLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsTUFBTSxHQUFHLGVBQWUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDNUQsQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7Z0JBQzVDLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsTUFBTSxHQUFHLGVBQWUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDNUQsQ0FBQyxHQUFHLGVBQWUsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUN0QyxNQUFNO1lBQ1IsS0FBSyxTQUFTO2dCQUNaLE1BQU0sR0FBRyxlQUFlLENBQUM7Z0JBQ3pCLENBQUMsR0FBRyxNQUFNLENBQUM7Z0JBQ1gsTUFBTTtTQUNUO1FBRUQsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ2hCLEtBQUssR0FBRyxTQUFTLEtBQUssYUFBYSxNQUFNLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztTQUM5RjthQUFNO1lBQ0wsS0FBSyxHQUFHLFNBQVMsS0FBSyxhQUFhLE1BQU0sMEJBQTBCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUNwRjtRQUVELE9BQU8sS0FBSyxDQUFDO1FBQ2IsTUFBTTtJQUNSLENBQUM7SUFDRCxhQUFhLENBQUMsYUFBa0IsRUFBRSxDQUFNO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBNEIsQ0FBQztRQUNqRSxNQUFNLFVBQVUsR0FBRyxRQUFRLEVBQUUsWUFBWSxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFHLFFBQVEsRUFBRSxXQUFXLENBQUM7UUFFeEMsSUFBSSxLQUFVLENBQUM7UUFDZiwyREFBMkQ7UUFDM0QsSUFBSSxVQUFVLEdBQUcsYUFBYSxFQUFFLGNBQWMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxRQUFRLEdBQUcsYUFBYSxFQUFFLFlBQVksSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDO1FBQ25FLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUVyQixJQUFJLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVWLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNmLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3ZDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBZ0IsQ0FBQztZQUNsRSxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPO1lBRW5CLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDO1NBQzlCO1FBRUQsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzlDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBZ0IsQ0FBQztZQUU5RCxJQUFJLENBQUMsQ0FBQztnQkFBRSxPQUFPO1lBQ2YsZUFBZSxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDbkM7UUFDRCxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1AsTUFBTSxHQUFHLGVBQWUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pDLGVBQWU7UUFDZixDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUU1QyxLQUFLLEdBQUcsU0FBUyxLQUFLLGFBQWEsTUFBTSwwQkFBMEIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ2xGLGlFQUFpRTtRQUNqRSxtQkFBbUI7UUFDbkIsdUVBQXVFO1FBQ3ZFLElBQUk7UUFDSix1Q0FBdUM7UUFDdkMsTUFBTTtRQUNOLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGdCQUFnQixDQUFDLFdBQWtCLEVBQUMsSUFBUSxFQUFDLFlBQWdCO1FBQzNELFlBQVksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsY0FBYyxJQUFJLFdBQVcsQ0FBQyxDQUFDO1FBQ3JHLElBQUcsWUFBWSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELGNBQWMsQ0FBQyxXQUFrQixFQUFDLElBQVEsRUFBQyxZQUFnQjtRQUN6RCxZQUFZLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FDOUIsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsQ0FBQyxZQUFZLElBQUksV0FBVyxDQUNsRSxDQUFDO1FBQ0YsSUFBSSxZQUFZLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELGNBQWMsQ0FBQyxXQUFrQixFQUFDLElBQVEsRUFBQyxZQUFnQjtRQUN6RCxZQUFZLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FDOUIsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsQ0FBQyxZQUFZLElBQUksV0FBVyxDQUNsRSxDQUFDO1FBQ0YsSUFBSSxZQUFZLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7d0dBdnJCVSxpQ0FBaUM7NEZBQWpDLGlDQUFpQyxpYkNkOUMsMjMwR0FtcERVOzs0RkRyb0RHLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSxpQ0FBaUM7Z0xBTW5CLFlBQVk7c0JBQW5DLFNBQVM7dUJBQUMsV0FBVztnQkFDcUIsU0FBUztzQkFBbkQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQTJCaEMsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBJbnB1dCwgU2ltcGxlQ2hhbmdlcywgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zdG9yZS1idWlsZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTSEVMRl9DT0xPUlMgfSBmcm9tICcuLi8uLi8uLi9kYXRhL2ZpeHR1cmUtdGVtcGxhdGUuZGF0YSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblBvcHVwQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbmZpcm1hdGlvbi1wb3B1cC9jb25maXJtYXRpb24tcG9wdXAuY29tcG9uZW50XCJcclxuaW1wb3J0IHsgdGltZXIgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC1tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2tcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL21hbmFnZS1zdG9yZS1wbGFuby1mZWVkYmFjay5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5zY3NzXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYW5hZ2VTdG9yZVBsYW5vRmVlZGJhY2tDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoXCJib2R5QmxvY2tcIikgYm9keUJsb2NrUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdhY2NvcmRpb24nLCB7IHN0YXRpYzogZmFsc2UgfSkgYWNjb3JkaW9uOiBhbnk7XHJcbiAgbGF5b3V0RmVlZGJhY2s6IGFueSA9IFtdO1xyXG4gIHZtRmVlZGJhY2s6IGFueSA9IFtdO1xyXG4gIG9wZW5maXh0dXJlOiBib29sZWFuID0gdHJ1ZVxyXG4gIG9wZW52bTogYm9vbGVhbiA9IHRydWVcclxuICAvLyBzaGVsZkRldGFpbHM6IGFueSA9IFtdXHJcbiAgZml4dHVyZUluZGV4OiBudW1iZXIgPSAwO1xyXG4gIGZpeHR1cmV0YXNrSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgdm10YXNrSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgYXBwcm92ZWRMYXlvdXRpc3N1ZXM6IG51bWJlciA9IDBcclxuICBwZW5kaW5nTGF5b3V0aXNzdWVzOiBudW1iZXIgPSAwXHJcbiAgcGVuZGluZ0ZpeHR1cmVpc3N1ZXM6IG51bWJlciA9IDBcclxuICBhcHByb3ZlZEZpeHR1cmVpc3N1ZXM6IG51bWJlciA9IDBcclxuICB0b3RhbEZpeHR1cmVpc3N1ZXM6IG51bWJlciA9IDBcclxuICBjb21wbGV0ZWRGaXh0dXJlOiBudW1iZXIgPSAwXHJcbiAgcGVuZGluZ1ZtaXNzdWVzOiBudW1iZXIgPSAwXHJcbiAgYXBwcm92ZWRWbWlzc3VlczogbnVtYmVyID0gMFxyXG4gIHRvdGFsVm1pc3N1ZXM6IG51bWJlciA9IDBcclxuICBjb21wbGV0ZWRWbTogbnVtYmVyID0gMFxyXG4gIGNvbG9yTGlzdDogYW55ID0ge307XHJcbiAgdm1Db25maWc6IGFueSA9IFtdO1xyXG4gIC8vIHNlY3Rpb25Db25maWc6IGFueSA9IFtdO1xyXG4gIC8vIHNlY3Rpb25LZXlzOiBhbnkgPSBbXVxyXG4gIHNobGVmQ29sb3IgPSBTSEVMRl9DT0xPUlM7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgc3RvcmVGaXh0dXJlTGlzdDogYW55ID0gW107XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgQElucHV0KCkgY3VycmVudFBsYW5vOiBhbnk7XHJcbiAgQElucHV0KCkgc3RvcmVGZWVkYmFjazogYW55O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXNzdWU6IGFueTtcclxuICBAT3V0cHV0KCkgaXNBcHByb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIHNlbGVjdGVkRml4dHVyZTogYW55O1xyXG4gIG9yaWdpbmFsRGF0YTogYW55O1xyXG4gIGNkblVybDogYW55O1xyXG4gIGN1cnJlbnRQbGFub0RldGFpbHM6IGFueVxyXG4gIGRhdGFPYmplY3Q6IGFueSA9IFtcclxuICAgIHsgRGVzY3JpcHRpb246ICdUYXNrJywgSXNzdWVzOiBbeyB0ZXh0OiBcIkxheW91dCB2ZXJpZmljYXRpb25cIiwgaWQ6ICdsYXlvdXQnIH0sIHsgdGV4dDogXCJGaXh0dXJlIHZlcmlmaWNhdGlvblwiLCBpZDogJ2ZpeHR1cmUnIH0sIHsgdGV4dDogXCJWaXN1YWwgTWVyY2ggdmVyaWZpY2F0aW9uXCIsIGlkOiBcInZtXCIgfV0gfSxcclxuICAgIHsgRGVzY3JpcHRpb246ICdTdGF0dXMnLCBJc3N1ZXM6IFt7IHRleHQ6IFwiTWF0Y2hcIiwgaWQ6ICdjb21wbGV0ZScgfSwgeyB0ZXh0OiBcIk1pc21hdGNoXCIsIGlkOiAnaW5jb21wbGV0ZScgfV0gfSxcclxuICAgIHsgRGVzY3JpcHRpb246ICdBcHByb3ZhbCBTdGF0dXMnLCB0eXBlOiBcInNpbmdsZVwiLCBJc3N1ZXM6IFt7IHRleHQ6IFwiQWN0aW9uIFBlbmRpbmdcIiwgaWQ6ICdwZW5kaW5nJyB9LCB7IHRleHQ6IFwiQWN0aW9uIERvbmVcIiwgaWQ6ICdhZ3JlZScgfV0gfVxyXG4gIF07XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IFN0b3JlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICAgIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICApIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1tcImN1cnJlbnRQbGFub1wiXSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcImN1cnJlbnRQbGFub1wiLCBjaGFuZ2VzW1wiY3VycmVudFBsYW5vXCJdLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgIHRoaXMuY3VycmVudFBsYW5vRGV0YWlscyA9IGNoYW5nZXNbXCJjdXJyZW50UGxhbm9cIl0uY3VycmVudFZhbHVlXHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1tcInN0b3JlRmVlZGJhY2tcIl0pIHtcclxuXHJcblxyXG4gICAgICBpZiAoY2hhbmdlc1tcInN0b3JlRmVlZGJhY2tcIl0uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldEluaXRpYWxWYWx1ZXMoKVxyXG4gICAgICAgIHRoaXMub3JpZ2luYWxEYXRhID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGNoYW5nZXNbXCJzdG9yZUZlZWRiYWNrXCJdLmN1cnJlbnRWYWx1ZSlcclxuICAgICAgICApO1xyXG4gICAgICAgIGxldCBmZWVkYmFja0RhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoY2hhbmdlc1tcInN0b3JlRmVlZGJhY2tcIl0uY3VycmVudFZhbHVlKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0cGxhbm9GZWVkYmFjayhmZWVkYmFja0RhdGE/LmxheW91dERhdGEpO1xyXG4gICAgICAgIHRoaXMuZ2V0U3RvcmVGaXh0dXJlc2ZlZWRiYWNrKGZlZWRiYWNrRGF0YT8uZml4dHVyZURhdGEpO1xyXG4gICAgICAgIHRoaXMuZ2V0U3RvcmVWbWZlZWRiYWNrKGZlZWRiYWNrRGF0YT8uVm1EYXRhKTtcclxuICAgICAgICBpZiAoZmVlZGJhY2tEYXRhPy5sYXlvdXREYXRhPy5sZW5ndGggPT09IDAgJiYgZmVlZGJhY2tEYXRhPy5maXh0dXJlRGF0YT8ubGVuZ3RoID09PSAwICYmIGZlZWRiYWNrRGF0YT8uVm1EYXRhPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1tcInNlbGVjdGVkSXNzdWVcIl0pIHtcclxuICAgICAgdGhpcy5yZXNldEluaXRpYWxWYWx1ZXMoKVxyXG4gICAgICB0aGlzLnNlbGVjdGVkRml4dHVyZSA9IGNoYW5nZXNbXCJzZWxlY3RlZElzc3VlXCJdLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgY29uc29sZS5sb2coXCJzZWxlY3RlZElzc3VlXCIsIHRoaXMuc2VsZWN0ZWRGaXh0dXJlKTtcclxuICAgICAgaWYgKHRoaXMub3JpZ2luYWxEYXRhPy5sYXlvdXREYXRhKSB7XHJcblxyXG4gICAgICAgIGxldCBuZXdMYXlvdXREYXRhID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMub3JpZ2luYWxEYXRhPy5sYXlvdXREYXRhKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJuZXdMYXlvdXREYXRhXCIsIG5ld0xheW91dERhdGEpO1xyXG5cclxuICAgICAgICBuZXdMYXlvdXREYXRhLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZGF0YS5hbnN3ZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGVsZS5pc3N1ZXMuZm9yRWFjaCgoaXNzdWU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkLmluY2x1ZGVzKFwibmV3XCIpICYmIGlzc3VlLmlzc3VlVHlwZSAhPSAnZXh0cmFGaXh0dXJlJykge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiLCBpc3N1ZS5xdWVzdGlvbilcclxuICAgICAgICAgICAgICAgIGlzc3VlLkRldGFpbHMgPSBbXVxyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNzdWUuaXNzdWVUeXBlICE9ICdjb21tZW50cycgJiYgaXNzdWUuaXNzdWVUeXBlICE9IFwiZXh0cmFGaXh0dXJlXCIpIHtcclxuICAgICAgICAgICAgICAgIGlzc3VlLkRldGFpbHMgPSBpc3N1ZS5EZXRhaWxzLmZpbHRlcigoc2hlbGY6IGFueSkgPT4gc2hlbGYuZml4dHVyZUlkID09PSB0aGlzLnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkKVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIyMjIyMjIyMlwiLCBpc3N1ZS5pc3N1ZVR5cGUpXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjMzMzMzMzMzMzMzM1wiLCBpc3N1ZS5EZXRhaWxzKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZC5pbmNsdWRlcyhcIm5ld1wiKSAmJiBpc3N1ZS5pc3N1ZVR5cGUgPT09ICdleHRyYUZpeHR1cmUnKSB7XHJcbiAgICAgICAgICAgICAgICBpc3N1ZS5EZXRhaWxzID0gaXNzdWUuRGV0YWlscy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5faWQgPT09IHRoaXMuc2VsZWN0ZWRGaXh0dXJlPy5pc3N1ZURhdGE/Ll9pZClcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiNDQ0NDQ0NDQ0NDQ0NDQ0NFwiLCBpc3N1ZS5EZXRhaWxzKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWQuaW5jbHVkZXMoXCJuZXdcIikgJiYgaXNzdWUuaXNzdWVUeXBlID09PSAnZXh0cmFGaXh0dXJlJykge1xyXG4gICAgICAgICAgICAgICAgaXNzdWUuRGV0YWlscyA9IFtdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZWxlLmlzc3VlcyA9IGVsZS5pc3N1ZXMuZmlsdGVyKChpc3N1ZTogYW55KSA9PiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDApO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIjU1NTU1NTU1NTU1NTU1NTU1XCIsIGVsZS5pc3N1ZXMpXHJcbiAgICAgICAgICAgIGxldCBmaXh0dXJlY291bnQgPSBlbGUuaXNzdWVzLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZS5pc3N1ZVR5cGUgIT0gXCJleHRyYUZpeHR1cmVcIilcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCI2NjY2NjY2NjY2NjZcIiwgZml4dHVyZWNvdW50KVxyXG4gICAgICAgICAgICBpZiAoZml4dHVyZWNvdW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBlbGUuaXNzdWVzID0gZWxlLmlzc3Vlcy5maWx0ZXIoKGlzc3VlOiBhbnkpID0+IGlzc3VlLmlzc3VlVHlwZSAhPSBcImV4dHJhRml4dHVyZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbmV3TGF5b3V0RGF0YSA9IG5ld0xheW91dERhdGEuZmlsdGVyKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiAhKGRhdGEuYW5zd2Vyc1swXS5pc3N1ZXMubGVuZ3RoID09PSAwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmdldHBsYW5vRmVlZGJhY2sobmV3TGF5b3V0RGF0YSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJuZXdMYXlvdXREYXRhYWZ0ZXJcIiwgbmV3TGF5b3V0RGF0YSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBmaXh0dXJlTGlzdCA9IHRoaXMub3JpZ2luYWxEYXRhPy5maXh0dXJlRGF0YT8uZmlsdGVyKFxyXG4gICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEuZml4dHVyZUlkID09PSB0aGlzLnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChmaXh0dXJlTGlzdCAmJiBmaXh0dXJlTGlzdD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuZml4dHVyZXRhc2tJbmRleCA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0U3RvcmVGaXh0dXJlc2ZlZWRiYWNrKGZpeHR1cmVMaXN0KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmdldFN0b3JlRml4dHVyZXNmZWVkYmFjayhbXSk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHZtTGlzdCA9IHRoaXMub3JpZ2luYWxEYXRhPy5WbURhdGE/LmZpbHRlcihcclxuICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLmZpeHR1cmVJZCA9PT0gdGhpcy5zZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAodm1MaXN0ICYmIHZtTGlzdD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMudm10YXNrSW5kZXggPSAwO1xyXG4gICAgICAgIHRoaXMuZ2V0U3RvcmVWbWZlZWRiYWNrKHZtTGlzdCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5nZXRTdG9yZVZtZmVlZGJhY2soW10pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncy5lbnZpcm9ubWVudC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoZW52KSA9PiB7XHJcbiAgICAgICAgaWYgKGVudikge1xyXG4gICAgICAgICAgdGhpcy5jZG5VcmwgPSBlbnYucGxhbm9ncmFtQ0ROXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlc2V0SW5pdGlhbFZhbHVlcygpIHtcclxuICAgIHRoaXMuYXBwcm92ZWRMYXlvdXRpc3N1ZXMgPSAwXHJcbiAgICB0aGlzLnBlbmRpbmdMYXlvdXRpc3N1ZXMgPSAwXHJcbiAgICB0aGlzLnBlbmRpbmdGaXh0dXJlaXNzdWVzID0gMFxyXG4gICAgdGhpcy5hcHByb3ZlZEZpeHR1cmVpc3N1ZXMgPSAwXHJcbiAgICB0aGlzLnRvdGFsRml4dHVyZWlzc3VlcyA9IDBcclxuICAgIHRoaXMuY29tcGxldGVkRml4dHVyZSA9IDBcclxuICAgIHRoaXMucGVuZGluZ1ZtaXNzdWVzID0gMFxyXG4gICAgdGhpcy5hcHByb3ZlZFZtaXNzdWVzID0gMFxyXG4gICAgdGhpcy50b3RhbFZtaXNzdWVzID0gMFxyXG4gICAgdGhpcy5jb21wbGV0ZWRWbSA9IDBcclxuICB9XHJcbiAgdG9nZ2xlUGFuZWwoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5sYXlvdXRGZWVkYmFjay5mb3JFYWNoKChpdGVtOiBhbnksIGk6IGFueSkgPT4ge1xyXG4gICAgICBpdGVtLmNvbGxhcHNlZCA9IGkgIT09IGluZGV4OyAvLyBvbmx5IHNlbGVjdGVkIHBhbmVsIHN0YXlzIG9wZW5cclxuICAgIH0pO1xyXG4gIH1cclxuICB1cGRhdGVTdHlsZShkYXRhOiBhbnksIGk6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlU2VjdGlvbihkYXRhLCBpKTtcclxuICB9XHJcbiAgZ2V0U3RvcmVGaXh0dXJlc2ZlZWRiYWNrKGZpeHR1cmVEYXRhOiBhbnkpIHtcclxuXHJcbiAgICBpZiAoZml4dHVyZURhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5sYXlvdXRGZWVkYmFjay5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBkYXRhLmNvbGxhcHNlZCA9IHRydWVcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMub3BlbmZpeHR1cmUgPSBmYWxzZVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmNvbXBsZXRlZEZpeHR1cmUgPSBmaXh0dXJlRGF0YT8uZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuc3RhdHVzID09PSAnY29tcGxldGUnKS5sZW5ndGhcclxuICAgIGZpeHR1cmVEYXRhPy5mb3JFYWNoKChzaGVsZjogYW55LCBpOiBhbnkpID0+IHtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICBzaGVsZj8uRml4dHVyZURhdGE/LnNoZWxmQ29uZmlnICYmXHJcbiAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZz8ubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZ0Zvcm1hdGVkID0gdGhpcy5mb3JtYXREYXRhKFxyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWdcclxuICAgICAgICApO1xyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25Db25maWcgPSB0aGlzLnN0b3JlRGF0YShcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgem9uZUNvbG9yOmFueSA9IHt9XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbkNvbmZpZy5mb3JFYWNoKChlbGU6YW55KSA9PiB7XHJcbiAgICAgICAgICB6b25lQ29sb3JbZWxlLnpvbmVdID0ge2NvbG9yOmVsZS5jb2xvcn1cclxuICAgICAgICB9KSBcclxuICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS56b25lQ29sb3IgPSB6b25lQ29sb3I7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25Db25maWdcclxuICAgICAgICApO1xyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmRGV0YWlscyA9IHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgIHNoZWxmPy5hbnN3ZXJzPy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZWxlLmlzc3VlcyA9IGVsZT8uaXNzdWVzLmZpbHRlcihcclxuICAgICAgICAgICAgKGlzc3VlOiBhbnkpID0+IGlzc3VlLkRldGFpbHMgJiYgaXNzdWUuRGV0YWlscy5sZW5ndGggPiAwXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy50b3RhbEZpeHR1cmVpc3N1ZXMgPSB0aGlzLnRvdGFsRml4dHVyZWlzc3VlcyArIGVsZT8uaXNzdWVzPy5sZW5ndGhcclxuXHJcbiAgICAgICAgICBlbGU/Lmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55KSA9PiB7XHJcblxyXG5cclxuICAgICAgICAgICAgaWYgKGlzc3VlPy5EZXRhaWxzLmZpbHRlcigoZGF0YTogYW55KSA9PiBkYXRhLnN0YXR1cyA9PT0gJ3BlbmRpbmcnKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgaXNzdWUuY29sbGFwc2VkID0gZmFsc2VcclxuICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdGaXh0dXJlaXNzdWVzID0gdGhpcy5wZW5kaW5nRml4dHVyZWlzc3VlcyArIDFcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpc3N1ZS5jb2xsYXBzZWQgPSB0cnVlXHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuYXBwcm92ZWRGaXh0dXJlaXNzdWVzID0gdGhpcy5hcHByb3ZlZEZpeHR1cmVpc3N1ZXMgKyAxXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXNzdWU/LkRldGFpbHMuZm9yRWFjaCgobmV3c2hlbGY6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChuZXdzaGVsZj8uc2hlbGZDb25maWcgJiYgbmV3c2hlbGY/LnNoZWxmQ29uZmlnPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkNvbmZpZ0Zvcm1hdGVkID0gdGhpcy5mb3JtYXREYXRhKFxyXG4gICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkNvbmZpZ1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNlY3Rpb25Db25maWcgPSB0aGlzLnN0b3JlRGF0YShuZXdzaGVsZi5zaGVsZkNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi5zZWN0aW9uS2V5cyA9IE9iamVjdC5rZXlzKG5ld3NoZWxmLnNlY3Rpb25Db25maWcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICBbXCJwcm9kdWN0Y2F0ZWdvcnlXcm9uZ1wiLCBcImJyYW5kV3JvbmdcIl0uaW5jbHVkZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgaXNzdWUuaXNzdWVUeXBlXHJcbiAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkRldGFpbHMuZm9yRWFjaCgoc2hlbGY6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzaGVsZkRldGFpbHMgPSBuZXdzaGVsZi5zaGVsZkNvbmZpZy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgKG5ld1NoZWxmOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NoZWxmLnNoZWxmTnVtYmVyID09IHNoZWxmLnNoZWxmTnVtYmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNoZWxmRGV0YWlscykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgc2hlbGYub2xkU2hlbGYgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZDb25maWcucHVzaChzaGVsZik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZDb25maWcuc29ydChcclxuICAgICAgICAgICAgICAgICAgICAoYTogYW55LCBiOiBhbnkpID0+IGEuc2hlbGZOdW1iZXIgLSBiLnNoZWxmTnVtYmVyXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkRldGFpbHMgPSBuZXdzaGVsZi5zaGVsZkNvbmZpZztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdG9yZUZpeHR1cmVMaXN0ID0gZml4dHVyZURhdGE7XHJcbiAgICBjb25zb2xlLmxvZyhcInRoaXMuc3RvcmVGaXh0dXJlTGlzdFwiLCB0aGlzLnN0b3JlRml4dHVyZUxpc3QpO1xyXG4gIH1cclxuICBnZXRTdG9yZVZtZmVlZGJhY2soVm1EYXRhOiBhbnkpIHtcclxuXHJcbiAgICBpZiAoVm1EYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMub3BlbnZtID0gZmFsc2U7XHJcbiAgICAgIHRoaXMub3BlbmZpeHR1cmUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLm9wZW52bSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmFjY29yZGlvbj8uZXhwYW5kKCdkZXRhaWxzJyk7IC8vICdkZXRhaWxzJyBpcyB0aGUgSUQgb2YgdGhlIGl0ZW1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbXBsZXRlZFZtID0gVm1EYXRhPy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5zdGF0dXMgPT09ICdjb21wbGV0ZScpLmxlbmd0aFxyXG4gICAgVm1EYXRhPy5mb3JFYWNoKChzaGVsZjogYW55KSA9PiB7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZyAmJlxyXG4gICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWdGb3JtYXRlZCA9IHRoaXMuZm9ybWF0RGF0YShcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uQ29uZmlnID0gdGhpcy5zdG9yZURhdGEoXHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25Db25maWdcclxuICAgICAgICApO1xyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmRGV0YWlscyA9IHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgIGxldCB2bUNvbmZpZyA9IHNoZWxmLkZpeHR1cmVEYXRhLnZtQ29uZmlnO1xyXG4gICAgICAgIHNoZWxmPy5hbnN3ZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGUuaXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoaXNzdWU6IGFueSkgPT4gaXNzdWUuRGV0YWlscyAmJiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsVm1pc3N1ZXMgPSB0aGlzLnRvdGFsVm1pc3N1ZXMgKyBlbGU/Lmlzc3Vlcz8ubGVuZ3RoXHJcblxyXG4gICAgICAgICAgZWxlPy5pc3N1ZXMuZm9yRWFjaCgoaXNzdWU6IGFueSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgaWYgKGlzc3VlPy5EZXRhaWxzLmZpbHRlcigoZGF0YTogYW55KSA9PiBkYXRhLnN0YXR1cyA9PT0gJ3BlbmRpbmcnKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgaXNzdWUuY29sbGFwc2VkID0gZmFsc2VcclxuICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdWbWlzc3VlcyA9IHRoaXMucGVuZGluZ1ZtaXNzdWVzICsgMVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlzc3VlLmNvbGxhcHNlZCA9IHRydWVcclxuICAgICAgICAgICAgICB0aGlzLmFwcHJvdmVkVm1pc3N1ZXMgPSB0aGlzLmFwcHJvdmVkVm1pc3N1ZXMgKyAxXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXNzdWU/LkRldGFpbHMuZm9yRWFjaCgobmV3c2hlbGY6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIG5ld3NoZWxmLnZtQ29uZmlnbmV3ID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld3NoZWxmLnZtQ29uZmlnKVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgaWYgKG5ld3NoZWxmPy5zaGVsZkNvbmZpZyAmJiBuZXdzaGVsZj8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoXHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKG5ld3NoZWxmLnNoZWxmQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNlY3Rpb25LZXlzID0gT2JqZWN0LmtleXMobmV3c2hlbGYuc2VjdGlvbkNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkRldGFpbHMgPSBuZXdzaGVsZi5zaGVsZkNvbmZpZztcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnZtQ29uZmlnbmV3LmZvckVhY2goKHZtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGlzc3VlLmlzc3VlVHlwZSA9PSBcIlZtTWlzbWF0Y2hcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLnN0YXJ0WVBvc2l0aW9uID0gdm0ubmV3c3RhcnRZUG9zaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgdm0uZW5kWVBvc2l0aW9uID0gdm0ubmV3ZW5kWVBvc2l0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLnhab25lID0gdm0ubmV3eFpvbmUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICB2bS55Wm9uZSA9IHZtLm5ld3lab25lLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdm0ubmV3Vm0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi52bUNvbmZpZ25ldy5wdXNoKC4uLnZtQ29uZmlnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMudm1GZWVkYmFjayA9IFZtRGF0YTtcclxuICAgIGNvbnNvbGUubG9nKFwidGhpcy52bUZlZWRiYWNrXCIsIHRoaXMudm1GZWVkYmFjayk7XHJcbiAgICB0aW1lcigzMDAwKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcInRpbWVyXCIpXHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmV4dEZpeHR1cmUoZml4dHVyZUluZGV4OiBudW1iZXIsIHRvdGFsRGF0YTogYW55KSB7XHJcbiAgICBpZiAodG90YWxEYXRhLmxlbmd0aCA+IGZpeHR1cmVJbmRleCArIDEpIHtcclxuICAgICAgdGhpcy5maXh0dXJlSW5kZXggPSBmaXh0dXJlSW5kZXggKyAxO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcmV2aW91c0ZpeHR1cmUoZml4dHVyZUluZGV4OiBudW1iZXIsIHRvdGFsRGF0YTogYW55KSB7XHJcbiAgICBpZiAoZml4dHVyZUluZGV4ID4gMCkge1xyXG4gICAgICB0aGlzLmZpeHR1cmVJbmRleCA9IGZpeHR1cmVJbmRleCAtIDE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5leHR0YXNrRml4dHVyZShmaXh0dXJldGFza0luZGV4OiBudW1iZXIsIHRvdGFsRGF0YTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyh0b3RhbERhdGEpO1xyXG4gICAgaWYgKHRvdGFsRGF0YS5sZW5ndGggPiBmaXh0dXJldGFza0luZGV4ICsgMSkge1xyXG4gICAgICB0aGlzLmZpeHR1cmV0YXNrSW5kZXggPSBmaXh0dXJldGFza0luZGV4ICsgMTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJldmlvdXN0YXNrVm0odm10YXNrSW5kZXg6IG51bWJlciwgdG90YWxEYXRhOiBhbnkpIHtcclxuICAgIGlmICh2bXRhc2tJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy52bXRhc2tJbmRleCA9IHZtdGFza0luZGV4IC0gMTtcclxuICAgIH1cclxuICB9XHJcbiAgbmV4dHRhc2tWbSh2bXRhc2tJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2codG90YWxEYXRhKTtcclxuICAgIGlmICh0b3RhbERhdGEubGVuZ3RoID4gdm10YXNrSW5kZXggKyAxKSB7XHJcbiAgICAgIHRoaXMudm10YXNrSW5kZXggPSB2bXRhc2tJbmRleCArIDE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByZXZpb3VzdGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgaWYgKGZpeHR1cmV0YXNrSW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuZml4dHVyZXRhc2tJbmRleCA9IGZpeHR1cmV0YXNrSW5kZXggLSAxO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRwbGFub0ZlZWRiYWNrKGxheW91dERhdGE6IGFueSkge1xyXG5cclxuICAgIGxheW91dERhdGE/LmZvckVhY2goKGRhdGE6IGFueSwgaTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpID09PSAwKSB7XHJcbiAgICAgICAgZGF0YS5jb2xsYXBzZWQgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkYXRhLmNvbGxhcHNlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZGF0YT8uYW5zd2Vycy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGVsZS5pc3N1ZXMgPSBlbGU/Lmlzc3Vlcy5maWx0ZXIoXHJcbiAgICAgICAgICAoaXNzdWU6IGFueSkgPT4gaXNzdWUuRGV0YWlscyAmJiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIHRoaXMucGVuZGluZ0xheW91dGlzc3VlcyA9IGVsZT8uaXNzdWVzLmZpbHRlcigoZGF0YTogYW55KSA9PiBkYXRhLnN0YXR1cyA9PT0gJ3BlbmRpbmcnKS5sZW5ndGhcclxuICAgICAgICAvLyB0aGlzLmFwcHJvdmVkTGF5b3V0aXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuc3RhdHVzICE9PSAncGVuZGluZycpLmxlbmd0aFxyXG5cclxuICAgICAgICBlbGU/Lmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXNzdWU/LkRldGFpbHMuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuc3RhdHVzID09PSAncGVuZGluZycpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nTGF5b3V0aXNzdWVzID0gdGhpcy5wZW5kaW5nTGF5b3V0aXNzdWVzICsgMVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hcHByb3ZlZExheW91dGlzc3VlcyA9IHRoaXMuYXBwcm92ZWRMYXlvdXRpc3N1ZXMgKyAxXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpc3N1ZT8uRGV0YWlscy5mb3JFYWNoKChzaGVsZjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzaGVsZj8uc2hlbGZDb25maWcgJiYgc2hlbGY/LnNoZWxmQ29uZmlnPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgc2hlbGYuc2hlbGZDb25maWdGb3JtYXRlZCA9IHRoaXMuZm9ybWF0RGF0YShzaGVsZi5zaGVsZkNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgc2hlbGYuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKHNoZWxmLnNoZWxmQ29uZmlnKTtcclxuICAgICAgICAgICAgICBzaGVsZi5zZWN0aW9uS2V5cyA9IE9iamVjdC5rZXlzKHNoZWxmLnNlY3Rpb25Db25maWcpO1xyXG4gICAgICAgICAgICAgIGxldCB6b25lQ29sb3I6IGFueSA9IHt9O1xyXG4gICAgICAgICAgICAgIHNoZWxmLnNlY3Rpb25Db25maWcuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHpvbmVDb2xvcltlbGUuem9uZV0gPSB7IGNvbG9yOiBlbGUuY29sb3IgfTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBzaGVsZi56b25lQ29sb3IgPSB6b25lQ29sb3I7XHJcbiAgICAgICAgICAgICAgc2hlbGYuc2hlbGZEZXRhaWxzID0gc2hlbGYuc2hlbGZDb25maWc7XHJcbiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCI9PT09PT09PT09PT09XCIsc2hlbGYpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubGF5b3V0RmVlZGJhY2sgPSBsYXlvdXREYXRhO1xyXG5cclxuXHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgZm9ybWF0RGF0YShkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGdyb3VwZWRBcnJheSA9IE9iamVjdC52YWx1ZXMoXHJcbiAgICAgIGRhdGEucmVkdWNlKChhY2M6IGFueSwgaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgem9uZSA9IGl0ZW0uem9uZSB8fCBcInVuZGVmaW5lZFwiO1xyXG4gICAgICAgIGlmICghYWNjW3pvbmVdKSB7XHJcbiAgICAgICAgICBhY2Nbem9uZV0gPSB7IHpvbmUsIGl0ZW1zOiBbXSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBhY2Nbem9uZV0uaXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICB9LCB7fSlcclxuICAgICk7XHJcbiAgICByZXR1cm4gZ3JvdXBlZEFycmF5O1xyXG4gIH1cclxuICBzdG9yZURhdGEoc2hlbGZEYXRhOiBhbnkpIHtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICBsZXQgc2VjdGlvbkNvbmZpZzphbnlbXSA9IFtdXHJcbiAgICAvLyBzdGFydFlQb3NpdGlvbjogZWxlLnNoZWxmTnVtYmVyLFxyXG4gICAgLy8gICAgICAgICBlbmRZUG9zaXRpb246IGVsZS5zaGVsZk51bWJlcixcclxuICAgIC8vICAgICAgICAgLi4uZWxlLFxyXG4gICAgLy8gICAgICAgICBjb2xvcjogdGhpcy5zaGxlZkNvbG9yW2NvdW50XSxcclxuICAgIHNoZWxmRGF0YS5mb3JFYWNoKChzaGVsZjphbnkpID0+IHtcclxuICAgICAgbGV0IGdldFNlY3Rpb24gPSBzZWN0aW9uQ29uZmlnLmZpbHRlcigoZWxlKSA9PiBlbGUuem9uZSA9PSBzaGVsZi56b25lKTtcclxuICAgICAgaWYoIWdldFNlY3Rpb24ubGVuZ3RoKSB7XHJcbiAgICAgICAgc2VjdGlvbkNvbmZpZy5wdXNoKHtcclxuICAgICAgICAgIC4uLnNoZWxmLFxyXG4gICAgICAgICAgc3RhcnRZUG9zaXRpb246IHNoZWxmLnNoZWxmTnVtYmVyLFxyXG4gICAgICAgICAgZW5kWVBvc2l0aW9uOiBzaGVsZi5zaGVsZk51bWJlcixcclxuICAgICAgICAgIGNvbG9yOiB0aGlzLnNobGVmQ29sb3JbY291bnRdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvdW50Kys7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKChnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoLTFdLmVuZFlQb3NpdGlvbiArIDEpID09IHNoZWxmLnNoZWxmTnVtYmVyKSB7XHJcbiAgICAgICAgICBnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoLTFdLmVuZFlQb3NpdGlvbiA9IHNoZWxmLnNoZWxmTnVtYmVyO1xyXG4gICAgICAgICAgZ2V0U2VjdGlvbltnZXRTZWN0aW9uLmxlbmd0aC0xXS5wcm9kdWN0QnJhbmROYW1lID0gW1xyXG4gICAgICAgICAgICAuLi5nZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoLTFdLnByb2R1Y3RCcmFuZE5hbWUsXHJcbiAgICAgICAgICAgIC4uLnNoZWxmLnByb2R1Y3RCcmFuZE5hbWUsXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgICAgZ2V0U2VjdGlvbltnZXRTZWN0aW9uLmxlbmd0aC0xXS5wcm9kdWN0QnJhbmROYW1lPSBbLi4ubmV3IFNldChnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoLTFdLnByb2R1Y3RCcmFuZE5hbWUubWFwKChlbGU6YW55KSA9PiBlbGUpKV1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBzZWN0aW9uQ29uZmlnLnB1c2goe1xyXG4gICAgICAgICAgICAuLi5zaGVsZixcclxuICAgICAgICAgICAgc3RhcnRZUG9zaXRpb246IHNoZWxmLnNoZWxmTnVtYmVyLFxyXG4gICAgICAgICAgICBlbmRZUG9zaXRpb246IHNoZWxmLnNoZWxmTnVtYmVyLFxyXG4gICAgICAgICAgICBjb2xvcjogZ2V0U2VjdGlvbltnZXRTZWN0aW9uLmxlbmd0aCAtIDFdLmNvbG9yLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgLy8gdGhpcy5oYW5kbGV2bVBvc2l0aW9uKHNlY3Rpb25Db25maWcpO1xyXG4gICAgLy8gdGhpcy5oYW5kbGVTZWN0aW9uKHNlY3Rpb25Db25maWcpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm4gc2VjdGlvbkNvbmZpZztcclxuICB9XHJcblxyXG4gIGNvbmZpcm1hdGlvbihcclxuICAgIHR5cGU6IGFueSxcclxuICAgIF9pZDogYW55LFxyXG4gICAgYW5zd2VySWQ6IGFueSxcclxuICAgIGlzc3VlSWQ6IGFueSxcclxuICAgIERldGFpbHNJZDogYW55LFxyXG4gICAgdGFza1R5cGU6IGFueSxcclxuICAgIGlzc3VlVHlwZTogYW55XHJcbiAgKSB7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgX2lkOiBfaWQsXHJcbiAgICAgIGFuc3dlcklkOiBhbnN3ZXJJZCxcclxuICAgICAgaXNzdWVJZDogaXNzdWVJZCxcclxuICAgICAgRGV0YWlsc0lkOiBEZXRhaWxzSWQsXHJcbiAgICAgIHRhc2tUeXBlOiB0YXNrVHlwZSxcclxuICAgICAgaXNzdWVUeXBlOiBpc3N1ZVR5cGUsXHJcbiAgICAgIHBsYW5vSWQ6IHRoaXMuY3VycmVudFBsYW5vRGV0YWlscz8ucGxhbm9JZCxcclxuICAgICAgZmxvb3JJZDogdGhpcy5jdXJyZW50UGxhbm9EZXRhaWxzPy5faWQsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKENvbmZpcm1hdGlvblBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcIm1kXCIsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICAgIGJhY2tkcm9wOiBcInN0YXRpY1wiLFxyXG4gICAgICB3aW5kb3dDbGFzczogXCJjdXN0b20taGVpZ2h0LW1vZGFsXCIsIC8vIDwtLSBBZGQgYSBjdXN0b20gY2xhc3MgaGVyZVxyXG4gICAgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50eXBlID0gdHlwZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmlucHV0RGF0YSA9IHBheWxvYWQ7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInN1Ym1pdFwiKSB7XHJcbiAgICAgICAgdGhpcy5pc0FwcHJvdmVkLmVtaXQocmVzdWx0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbG9hZCgpIHtcclxuICAgIGxldCByZXN1bHQgPSB7XHJcbiAgICAgIHJlbG9hZDogdHJ1ZVxyXG4gICAgfVxyXG4gICAgdGhpcy5pc0FwcHJvdmVkLmVtaXQocmVzdWx0KTtcclxuICB9XHJcbiAgYXBwbHlGaWx0ZXJzKGV2ZW50OiBhbnkpIHtcclxuICAgIGxldCByZXN1bHQ6IGFueSA9IHt9XHJcbiAgICBpZiAoZXZlbnQ/Lmxlbmd0aCkge1xyXG4gICAgICBldmVudC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlbGVtZW50KVxyXG4gICAgICAgIGlmIChlbGVtZW50LkRlc2NyaXB0aW9uID09PSBcIlRhc2tcIikge1xyXG4gICAgICAgICAgcmVzdWx0LmZpbHRlckJ5VGFzayA9IGVsZW1lbnQuSXNzdWVzLm1hcCgodmFsOiBhbnkpID0+IHZhbD8uaWQpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09IFwiU3RhdHVzXCIpIHtcclxuICAgICAgICAgIHJlc3VsdC5maWx0ZXJCeVN0YXR1cyA9IGVsZW1lbnQuSXNzdWVzLm1hcCgodmFsOiBhbnkpID0+IHZhbD8uaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gXCJBcHByb3ZhbCBTdGF0dXNcIikge1xyXG4gICAgICAgICAgcmVzdWx0LmZpbHRlckJ5QXBwcm92YWxTdGF0dXMgPSBlbGVtZW50Lklzc3Vlcy5pZCA/IGVsZW1lbnQuSXNzdWVzLmlkIDogXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdClcclxuICAgICAgaWYgKHJlc3VsdC5maWx0ZXJCeUFwcHJvdmFsU3RhdHVzPy5sZW5ndGggPT09IDAgJiYgcmVzdWx0LmZpbHRlckJ5U3RhdHVzPy5sZW5ndGggPT09IDAgJiYgcmVzdWx0LmZpbHRlckJ5VGFzaz8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmVzdWx0LnJlbG9hZCA9IHRydWVcclxuICAgICAgICB0aGlzLmlzQXBwcm92ZWQuZW1pdChyZXN1bHQpO1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXNBcHByb3ZlZC5lbWl0KHJlc3VsdCk7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBoYW5kbGV2bVBvc2l0aW9uKHZtRGF0YTogYW55LCBpOiBhbnkpIHtcclxuICAgIGNvbnN0IHZpZXdQb3J0ID0gdGhpcy5ib2R5QmxvY2tSZWY/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBib2R5SGVpZ2h0ID0gdmlld1BvcnQ/Lm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IGJvZHlXaWR0aCA9IHZpZXdQb3J0Py5vZmZzZXRXaWR0aDtcclxuICAgIGxldCBzdHlsZTtcclxuICAgIC8vIHRoaXMudm1Db25maWcuZm9yRWFjaCgoZTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgIGxldCBzdGFydFNoZWxmID0gdm1EYXRhPy5zdGFydFlQb3NpdGlvbiA/PyAxO1xyXG4gICAgbGV0IGVuZFNoZWxmID0gdm1EYXRhPy5lbmRZUG9zaXRpb24gPz8gMTtcclxuICAgIGNvbnN0IHZtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ2bVwiICsgaSk7XHJcbiAgICBpZiAoIXZtKSByZXR1cm47XHJcblxyXG4gICAgbGV0IHdpZHRoID0gMTAwO1xyXG4gICAgbGV0IGhlaWdodCA9IDEwMDtcclxuICAgIGxldCB4ID0gMDtcclxuICAgIGxldCB5ID0gMDtcclxuXHJcbiAgICBsZXQgeVN0YXJ0ID0gMDtcclxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc3RhcnRTaGVsZiAtIDE7IGsrKykge1xyXG4gICAgICBjb25zdCBzaGVsZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hlbGZcIiArIGspIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIXNoZWxmKSByZXR1cm47XHJcblxyXG4gICAgICB5U3RhcnQgKz0gc2hlbGYub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwbGFjZW1lbnRIZWlnaHQgPSAwO1xyXG4gICAgZm9yIChsZXQgayA9IHN0YXJ0U2hlbGYgLSAxOyBrIDwgZW5kU2hlbGY7IGsrKykge1xyXG4gICAgICBjb25zdCBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaGVsZlwiICsgaykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmICghcykgcmV0dXJuO1xyXG4gICAgICBwbGFjZW1lbnRIZWlnaHQgKz0gcy5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoICh2bURhdGE/Lnhab25lKSB7XHJcbiAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgeCA9IDA7XHJcbiAgICAgICAgd2lkdGggPSAxMDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgIHdpZHRoID0gMTAwO1xyXG4gICAgICAgIHggPSBib2R5V2lkdGggLSB3aWR0aDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIm1pZGRsZVwiOlxyXG4gICAgICAgIHdpZHRoID0gMTAwO1xyXG4gICAgICAgIHggPSAoYm9keVdpZHRoIC0gd2lkdGgpIC8gMjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInN0cmV0Y2hcIjpcclxuICAgICAgICB3aWR0aCA9IGJvZHlXaWR0aDtcclxuICAgICAgICB4ID0gMDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHZtRGF0YT8ueVpvbmUpIHtcclxuICAgICAgY2FzZSBcInRvcFwiOlxyXG4gICAgICAgIGhlaWdodCA9IHBsYWNlbWVudEhlaWdodCA8IDEwMCA/IHBsYWNlbWVudEhlaWdodCAtIDIwIDogMTAwO1xyXG4gICAgICAgIHkgPSB5U3RhcnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJtaWRkbGVcIjpcclxuICAgICAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQgPCAxMDAgPyBwbGFjZW1lbnRIZWlnaHQgLSAyMCA6IDEwMDtcclxuICAgICAgICB5ID0gKHBsYWNlbWVudEhlaWdodCAtIGhlaWdodCkgLyAyICsgeVN0YXJ0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiYm90dG9tXCI6XHJcbiAgICAgICAgaGVpZ2h0ID0gcGxhY2VtZW50SGVpZ2h0IDwgMTAwID8gcGxhY2VtZW50SGVpZ2h0IC0gMjAgOiAxMDA7XHJcbiAgICAgICAgeSA9IHBsYWNlbWVudEhlaWdodCAtIGhlaWdodCArIHlTdGFydDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInN0cmV0Y2hcIjpcclxuICAgICAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQ7XHJcbiAgICAgICAgeSA9IHlTdGFydDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodm1EYXRhLm5ld1ZtKSB7XHJcbiAgICAgIHN0eWxlID0gYHdpZHRoOiR7d2lkdGh9cHg7aGVpZ2h0OiR7aGVpZ2h0fXB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoJHt4fXB4LCAke3l9cHgpO3otaW5kZXg6MjtgO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3R5bGUgPSBgd2lkdGg6JHt3aWR0aH1weDtoZWlnaHQ6JHtoZWlnaHR9cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSgke3h9cHgsICR7eX1weCk7YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3R5bGU7XHJcbiAgICAvLyB9KTtcclxuICB9XHJcbiAgaGFuZGxlU2VjdGlvbihzZWN0aW9uQ29uZmlnOiBhbnksIGk6IGFueSkge1xyXG4gICAgY29uc3Qgdmlld1BvcnQgPSB0aGlzLmJvZHlCbG9ja1JlZj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGJvZHlIZWlnaHQgPSB2aWV3UG9ydD8ub2Zmc2V0SGVpZ2h0O1xyXG4gICAgY29uc3QgYm9keVdpZHRoID0gdmlld1BvcnQ/Lm9mZnNldFdpZHRoO1xyXG5cclxuICAgIGxldCBzdHlsZTogYW55O1xyXG4gICAgLy8gT2JqZWN0LmtleXMoc2VjdGlvbkNvbmZpZykuZm9yRWFjaCgoZTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgIGxldCBzdGFydFNoZWxmID0gc2VjdGlvbkNvbmZpZz8uc3RhcnRZUG9zaXRpb24gPz8gMTtcclxuICAgIGxldCBlbmRTaGVsZiA9IHNlY3Rpb25Db25maWc/LmVuZFlQb3NpdGlvbiA/PyBzZWN0aW9uQ29uZmlnLmxlbmd0aDtcclxuICAgIGNvbnN0IHNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNlY3Rpb25cIiArIGkpO1xyXG4gICAgaWYgKCFzZWN0aW9uKSByZXR1cm47XHJcblxyXG4gICAgbGV0IHdpZHRoID0gMTAwO1xyXG4gICAgbGV0IGhlaWdodCA9IDUwO1xyXG4gICAgbGV0IHggPSAwO1xyXG4gICAgbGV0IHkgPSAwO1xyXG5cclxuICAgIGxldCB5U3RhcnQgPSAwO1xyXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBzdGFydFNoZWxmIC0gMTsgaysrKSB7XHJcbiAgICAgIGNvbnN0IHNoZWxmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaGVsZlwiICsgaykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmICghc2hlbGYpIHJldHVybjtcclxuXHJcbiAgICAgIHlTdGFydCArPSBzaGVsZi5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBsYWNlbWVudEhlaWdodCA9IDA7XHJcbiAgICBmb3IgKGxldCBrID0gc3RhcnRTaGVsZiAtIDE7IGsgPCBlbmRTaGVsZjsgaysrKSB7XHJcbiAgICAgIGNvbnN0IHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNoZWxmXCIgKyBrKSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgIGlmICghcykgcmV0dXJuO1xyXG4gICAgICBwbGFjZW1lbnRIZWlnaHQgKz0gcy5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICB4ID0gMTA7XHJcbiAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQgPCAxMDAgPyA0OCA6IDUwO1xyXG4gICAgLy8gaGVpZ2h0ID0gNTA7XHJcbiAgICB5ID0gKHBsYWNlbWVudEhlaWdodCAtIGhlaWdodCkgLyAyICsgeVN0YXJ0O1xyXG5cclxuICAgIHN0eWxlID0gYHdpZHRoOiR7d2lkdGh9cHg7aGVpZ2h0OiR7aGVpZ2h0fXB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoJHt4fXB4LCAke3l9cHgpYDtcclxuICAgIC8vIGxldCB2bURldGFpbHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgdm0tcGxhY2Vob2xkZXIke2l9YCk7XHJcbiAgICAvLyBpZiAodm1EZXRhaWxzKSB7XHJcbiAgICAvLyAgIHZtRGV0YWlscy5zdHlsZS5ib3JkZXIgPSBgMXB4IHNvbGlkICR7dGhpcy5zaGxlZkNvbG9yW2ldLmJvcmRlcn1gO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gc3R5bGUucHVzaCh7em9uZTplLHN0eWxlOnN0eWxlTGlzdH0pXHJcbiAgICAvLyB9KTtcclxuICAgIHJldHVybiBzdHlsZTtcclxuICB9XHJcblxyXG4gIGdldFN0YXJ0UG9zaXRpb24oc2hlbGZOdW1iZXI6bnVtYmVyLHpvbmU6YW55LHNoZWxmRGV0YWlsczphbnkpe1xyXG4gICAgc2hlbGZEZXRhaWxzID0gc2hlbGZEZXRhaWxzLmZpbmQoKGVsZTphbnkpID0+IGVsZS56b25lID09IHpvbmUgJiYgZWxlLnN0YXJ0WVBvc2l0aW9uID09IHNoZWxmTnVtYmVyKTtcclxuICAgIGlmKHNoZWxmRGV0YWlscykge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBnZXRFbmRQb3NpdGlvbihzaGVsZk51bWJlcjpudW1iZXIsem9uZTphbnksc2hlbGZEZXRhaWxzOmFueSl7XHJcbiAgICBzaGVsZkRldGFpbHMgPSBzaGVsZkRldGFpbHMuZmluZChcclxuICAgICAgKGVsZTogYW55KSA9PiBlbGUuem9uZSA9PSB6b25lICYmIGVsZS5lbmRZUG9zaXRpb24gPT0gc2hlbGZOdW1iZXJcclxuICAgICk7XHJcbiAgICBpZiAoc2hlbGZEZXRhaWxzKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBnZXRNaWRQb3NpdGlvbihzaGVsZk51bWJlcjpudW1iZXIsem9uZTphbnksc2hlbGZEZXRhaWxzOmFueSl7XHJcbiAgICBzaGVsZkRldGFpbHMgPSBzaGVsZkRldGFpbHMuZmluZChcclxuICAgICAgKGVsZTogYW55KSA9PiBlbGUuem9uZSA9PSB6b25lICYmIGVsZS5lbmRZUG9zaXRpb24gPj0gc2hlbGZOdW1iZXJcclxuICAgICk7XHJcbiAgICBpZiAoc2hlbGZEZXRhaWxzKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuIiwiPHNlY3Rpb24gKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxzZWN0aW9uICpuZ0lmPVwiIWxvYWRpbmdcIj5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGJvcmRlci1ib3R0b21cIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZVJlc3BvbnNlXCI+U3RvcmUgcmVzcG9uc2U8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5vcm1hbFRleHQgbWItNVwiPkNsaWNrIGEgZml4dHVyZSBvciB2aWV3IGFsbDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwic2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIiAoY2xpY2spPVwicmVsb2FkKClcIiAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHRleHQtcHJpbWFyeSBib3JkZXItMCBweC0zIHB5LTJcIlxyXG4gICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2VhZjZmZjsgYm9yZGVyLXJhZGl1czogMXJlbTtcIj5cclxuICAgICAgICBDbGVhciBGaWx0ZXJcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxsaWItZmlsdGVycyAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiIFtkYXRhT2JqZWN0XT1cImRhdGFPYmplY3RcIiAoYXBwbGllZEZpbHRlcnMpPVwiYXBwbHlGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgY2xhc3M9XCJtdC01XCIgKm5nSWY9XCJ2bUZlZWRiYWNrPy5sZW5ndGg+MFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgPGRpdiBuZ2JBY2NvcmRpb25JdGVtPVwiZGV0YWlsc1wiIFtjb2xsYXBzZWRdPVwib3BlbnZtXCIgY2xhc3M9XCJtYi01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0wXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgbGF5b3V0LUxiZWxcIj5cclxuICAgICAgICAgICAgICA8ZGl2PlZtIHZlcmlmaWNhdGlvbiBhc3NpZ25lZDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPnt7dm1GZWVkYmFja1swXT8udGFza0RhdGE/LmNyZWF0ZWRBdCB8ZGF0ZTogJ2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicHMtMCBwZS0wXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWRpdmlkZXIgbXQtMyBtcy01XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8udGFza0RhdGE/LmNyZWF0ZWRCeU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8udGFza0RhdGE/LmNyZWF0ZWRBdCB8ZGF0ZTogJ2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBBc3NpZ25lclxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8udGFza0RhdGE/LnVzZXJOYW1lIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZGl2aWRlciBtdC0zIG1zLTVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy50YXNrRGF0YT8udXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8udGFza0RhdGE/LnN1Ym1pdFRpbWVfc3RyaW5nfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQXNzaWduZWVcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1zLTNcIiAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgcC0zIG1lLTRcIiAqbmdJZj1cImNvbXBsZXRlZFZtPT09dm1GZWVkYmFjay5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMCAzTDQuNSA4LjVMMiA2XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5WbSBtYXRjaGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyIHAtMyBtZS00XCIgKm5nSWY9XCJjb21wbGV0ZWRWbSE9PXZtRmVlZGJhY2subGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYgNFY2TTYgOEg2LjAwNU0xMSA2QzExIDguNzYxNDIgOC43NjE0MiAxMSA2IDExQzMuMjM4NTggMTEgMSA4Ljc2MTQyIDEgNkMxIDMuMjM4NTggMy4yMzg1OCAxIDYgMUM4Ljc2MTQyIDEgMTEgMy4yMzg1OCAxMSA2WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+Vm0gbWlzbWF0Y2g8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC13YXJuaW5nIHAtM1wiICpuZ0lmPVwicGVuZGluZ1ZtaXNzdWVzPjBcIj5cclxuICAgICAgICAgICAgICAgICAge3twZW5kaW5nVm1pc3N1ZXN9fS97e3RvdGFsVm1pc3N1ZXN9fSBhY3Rpb24gcGVuZGluZ1xyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBwLTNcIiAqbmdJZj1cImFwcHJvdmVkVm1pc3N1ZXM+MCYmcGVuZGluZ1ZtaXNzdWVzPT09MFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e2FwcHJvdmVkVm1pc3N1ZXN9fS97e3RvdGFsVm1pc3N1ZXN9fSBhY3Rpb24gZG9uZVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicHJldmlvdXN0YXNrVm0odm10YXNrSW5kZXgsdm1GZWVkYmFjaylcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInZtdGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiF2bXRhc2tJbmRleFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNkw5IDEyTDE1IDE4XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyB2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGEuZml4dHVyZU5hbWV9fSAtIHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhLmZpeHR1cmVXaWR0aC52YWx1ZX19IHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhLmZpeHR1cmVXaWR0aC51bml0fX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7dm10YXNrSW5kZXgrMX19L3t7dm1GZWVkYmFjay5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwibmV4dHRhc2tWbSh2bXRhc2tJbmRleCx2bUZlZWRiYWNrKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwidm1GZWVkYmFjay5sZW5ndGg+dm10YXNrSW5kZXgrMVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxOEwxNSAxMkw5IDZcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIodm1GZWVkYmFjay5sZW5ndGgpPT09KHZtdGFza0luZGV4KzEpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkZpeHR1cmUgbmFtZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIFR5cGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2F0ZWdvcnl9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy52YWx1ZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlNpemUgKFdpZHRoKTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy51bml0fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Ub3RhbCBzaGVsdmVzOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZz8ubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXBhY2l0eVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Ub3RhbCBwcm9kdWN0IGNhcGFjaXR5OjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHl9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgUGxhbm9ncmFtIGRlc2lnblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgRml4dHVyZSBkZXNpZ25lZCBieSB0aGUgcGxhbm9ncmFtIHRlYW1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhbGwtdmlld3BvcnQgdy0xMDAgbXQtNVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImhlYWRlci1ibG9ja1wiIGNsYXNzPVwiaGVhZGVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCA/PyAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjYm9keUJsb2NrIGlkPVwiYm9keUJsb2NrXCIgY2xhc3M9XCJib2R5LWJsb2NrIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdm0gb2Ygdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy52bUNvbmZpZztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3ZtJyArIGlcIiBjbGFzcz1cInZtLWJsb2NrXCIgW3N0eWxlXT1cImhhbmRsZXZtUG9zaXRpb24odm0saSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInZtPy5pbWdTcmNcIiAqbmdJZj1cInZtPy5pbWdTcmNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjU3R5bGUgd29yZFdyYXBcIj57e3ZtPy52bU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzaGVsZkRhdGEgb2Ygdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkRldGFpbHM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzaGVsZicgKyBpXCIgY2xhc3M9XCJibG9jayBzaGVsZiBoaWRlLXNjcm9sbCBkLWJsb2NrIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzond2hpdGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6J3doaXRlJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBTaGVsZiBDYXBhY2l0eSA6IHt7c2hlbGZEYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIEZvb3RlciBibG9jayAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPiB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZm9vdGVyPy5sYWJlbCA/PyAnJ319PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uICNhY2NvcmRpb249XCJuZ2JBY2NvcmRpb25cIiBbY2xvc2VPdGhlcnNdPVwidHJ1ZVwiIGNsYXNzPVwibXQtNVwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXNzdWVzIG9mIHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5hbnN3ZXJzO2xldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uSXRlbT1cInt7ICduZXdkZXRhaWxzLScgKyBrIH19XCIgW2NvbGxhcHNlZF09XCJpdGVtLmNvbGxhcHNlZFwiIGNsYXNzPVwibWItNVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlzc3Vlcy5pc3N1ZXM7bGV0IGsgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiQWNjb3JkaW9uQnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0zIGJhY2tncm91bmRJbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4gKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgYmctd2FybmluZyByb3VuZGVkLWNpcmNsZSBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4O1wiPjwvc3Bhbj57e2l0ZW0/LnF1ZXN0aW9ufX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IG10LTVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0nVm1NaXNzaW5nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBhZGRpdGlvbmFsIFZNczoge3sgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZy5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0nZXh0cmFWbSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgYWRkaXRpb25hbCBWTXM6IHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1Db25maWcubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J1ZtTWlzbWF0Y2gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIG1pc3BsYWNlZCBWTXM6IHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1Db25maWcubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kSW1nIG10LTQgcHMtMyBweS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2bURhdGEgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J1ZtTWlzbWF0Y2gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/LnZtTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5WTSBOYW1lIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/LnZtTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/LnN0YXJ0WVBvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlBsYWNlbWVudCBzdGFydCA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlNoZWxmIHt7dm1EYXRhPy5zdGFydFlQb3NpdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8uZW5kWVBvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlBsYWNlbWVudCBFbmQgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5TaGVsZiB7e3ZtRGF0YT8uZW5kWVBvc2l0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy54Wm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Ib3Jpem9udGFsIHpvbmUgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRGF0YT8ueFpvbmV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/Lnlab25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlZlcnRpY2FsIHpvbmUgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRGF0YT8ueVpvbmV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/LnBvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnBvc2l0aW9uIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/LnBvc2l0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmlzc3VlVHlwZT09PSdWbU1pc21hdGNoJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5uZXdzdGFydFlQb3NpdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5QbGFjZW1lbnQgc3RhcnQgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5TaGVsZiB7e3ZtRGF0YT8ubmV3c3RhcnRZUG9zaXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/Lm5ld2VuZFlQb3NpdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5QbGFjZW1lbnQgRW5kIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+U2hlbGYge3t2bURhdGE/Lm5ld2VuZFlQb3NpdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8ubmV3eFpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+SG9yaXpvbnRhbCB6b25lIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/Lm5ld3hab25lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5uZXd5Wm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5WZXJ0aWNhbCB6b25lIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/Lm5ld3lab25lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5uZXdwb3NpdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5wb3NpdGlvbiA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1EYXRhPy5uZXdwb3NpdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZz8ubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSBSZXNwb25zZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRml4dHVyZSBmZWVkYmFjayBieSB0aGUgc3RvcmUgdGVhbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FsbC12aWV3cG9ydCB3LTEwMCBtdC01XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaGVhZGVyLWJsb2NrXCIgY2xhc3M9XCJoZWFkZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5oZWFkZXI/LmxhYmVsID8/ICcnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAjYm9keUJsb2NrIGlkPVwiYm9keUJsb2NrXCIgY2xhc3M9XCJib2R5LWJsb2NrIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdm0gb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZ25ldztsZXQgbT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3ZtJyArIG1cIiBjbGFzcz1cInZtLWJsb2NrXCIgW3N0eWxlXT1cImhhbmRsZXZtUG9zaXRpb24odm0sbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwidm0ubmV3Vm0gPyAncmVkQm9yZGVyJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInZtPy5pbWdTcmNcIiAqbmdJZj1cInZtPy5pbWdTcmNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjU3R5bGVcIj57e3ZtPy52bU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxoMz57eyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fTwvaDM+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzaGVsZicgKyBpXCIgY2xhc3M9XCJibG9jayBzaGVsZiBoaWRlLXNjcm9sbCBkLWJsb2NrIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzond2hpdGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6J3doaXRlJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGVsZiBDYXBhY2l0eSA6IHt7c2hlbGZEYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4ge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZvb3Rlcj8ubGFiZWwgPz8gJyd9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwiaXRlbT8uY29tbWVudHMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNFwiICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIGl0ZW0/LmNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dCBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGUhPT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiQWdyZWVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkIFwiPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nZGlzYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJEaXNhZ3JlZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0YWluZWQgZXhpc3RpbmdcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIiAqbmdJZj1cImNvbW1lbnQ/LmNvbW1lbnQhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90ZToge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTQgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XS5hbnN3ZXJzWzBdPy5pbWFnZSYmdm1GZWVkYmFja1t2bXRhc2tJbmRleF0uYW5zd2Vyc1swXT8uaW1hZ2UhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBmaXh0dXJlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdLmFuc3dlcnNbMF0/LmltYWdlfX1cIiBhbHQ9XCJpbWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtNCB3LTEwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTUgcm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zdGF0dXM9PT0ncGVuZGluZycmJnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3by10b25lLWJ0biBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdhZ3JlZScsdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5faWQsJ3ZtJyxpdGVtLmlzc3VlVHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZ3JlZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2Rpc2FncmVlJyx2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uX2lkLGlzc3Vlcy5faWQsaXRlbS5faWQsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5faWQsJ3ZtJyxpdGVtLmlzc3VlVHlwZSlcIj5EaXNhZ3JlZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaXNzdWVzPy5sZW5ndGg9PT0wXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTQgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSYmdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBmaXh0dXJlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwie3tjZG5Vcmx9fXt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlfX1cIiBhbHQ9XCJpbWFnZVwiIGNsYXNzPVwibXQtNCB3LTEwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uY29tbWVudHMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiB2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uY29tbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0IGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlIT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiQWdyZWVkLCB1cGRhdGVkXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsIHJldGFpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCIgKm5nSWY9XCJjb21tZW50Py5jb21tZW50IT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgTm90ZToge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwib3JpZ2luYWxEYXRhLnZtQ29tbWVudC5sZW5ndGg+MCYmICFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2Ygb3JpZ2luYWxEYXRhLnZtQ29tbWVudFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jcmVhdGVkQXR8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIiAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3Q/Lmxlbmd0aD4wXCI+XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJkZXRhaWxzZml4dHVyZVwiIFtjb2xsYXBzZWRdPVwib3BlbmZpeHR1cmVcIiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZyBwLTBcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMiBsYXlvdXQtTGJlbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXY+Rml4dHVyZSB2ZXJpZmljYXRpb24gYXNzaWduZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj57e3N0b3JlRml4dHVyZUxpc3RbMF0/LnRhc2tEYXRhPy5jcmVhdGVkQXQgfGRhdGU6ICdoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInBzLTAgcGUtMFwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1kaXZpZGVyIG10LTMgbXMtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8udGFza0RhdGE/LmNyZWF0ZWRCeU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy50YXNrRGF0YT8uY3JlYXRlZEF0IHxkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEFzc2lnbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy50YXNrRGF0YT8udXNlck5hbWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1kaXZpZGVyIG10LTMgbXMtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8udGFza0RhdGE/LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8udGFza0RhdGE/LnN1Ym1pdFRpbWVfc3RyaW5nfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQXNzaWduZWVcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1zLTNcIiAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgcC0zIG1lLTRcIiAqbmdJZj1cImNvbXBsZXRlZEZpeHR1cmU9PT1zdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDNMNC41IDguNUwyIDZcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkZpeHR1cmUgbWF0Y2hlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBwLTMgbWUtNFwiICpuZ0lmPVwiY29tcGxldGVkRml4dHVyZSE9PXN0b3JlRml4dHVyZUxpc3QubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYgNFY2TTYgOEg2LjAwNU0xMSA2QzExIDguNzYxNDIgOC43NjE0MiAxMSA2IDExQzMuMjM4NTggMTEgMSA4Ljc2MTQyIDEgNkMxIDMuMjM4NTggMy4yMzg1OCAxIDYgMUM4Ljc2MTQyIDEgMTEgMy4yMzg1OCAxMSA2WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+Rml4dHVyZSBtaXNtYXRjaDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgcC0zXCIgKm5nSWY9XCJwZW5kaW5nRml4dHVyZWlzc3Vlcz4wXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7cGVuZGluZ0ZpeHR1cmVpc3N1ZXN9fS97e3RvdGFsRml4dHVyZWlzc3Vlc319IGFjdGlvbiBwZW5kaW5nXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIHAtM1wiICpuZ0lmPVwiYXBwcm92ZWRGaXh0dXJlaXNzdWVzPjAmJnBlbmRpbmdGaXh0dXJlaXNzdWVzPT09MFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e2FwcHJvdmVkRml4dHVyZWlzc3Vlc319L3t7dG90YWxGaXh0dXJlaXNzdWVzfX0gYWN0aW9uIGRvbmVcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInByZXZpb3VzdGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleCxzdG9yZUZpeHR1cmVMaXN0KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZml4dHVyZXRhc2tJbmRleFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNkw5IDEyTDE1IDE4XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZml4dHVyZXRhc2tJbmRleFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNkw5IDEyTDE1IDE4XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YS5maXh0dXJlTmFtZX19IC0ge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YS5maXh0dXJlV2lkdGgudmFsdWV9fSB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhLmZpeHR1cmVXaWR0aC51bml0fX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7Zml4dHVyZXRhc2tJbmRleCsxfX0ve3tzdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJuZXh0dGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleCxzdG9yZUZpeHR1cmVMaXN0KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdC5sZW5ndGg+Zml4dHVyZXRhc2tJbmRleCsxXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIihzdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aCk9PT0oZml4dHVyZXRhc2tJbmRleCsxKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxOEwxNSAxMkw5IDZcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kSW1nIG10LTQgcHMtMyBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkZpeHR1cmUgbmFtZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Rml4dHVyZSBUeXBlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaXplIChXaWR0aCk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlV2lkdGg/LnVuaXR9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgc2hlbHZlczo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZz8ubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhcGFjaXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlRvdGFsIHByb2R1Y3QgY2FwYWNpdHk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhcGFjaXR5fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSBkZXNpZ25cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgIEZpeHR1cmUgZGVzaWduZWQgYnkgdGhlIHBsYW5vZ3JhbSB0ZWFtXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0IHctMTAwIG10LTVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCA/PyAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjYm9keUJsb2NrIGlkPVwiYm9keUJsb2NrXCIgY2xhc3M9XCJib2R5LWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2Ygc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25LZXlzO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ1cGRhdGVTdHlsZShzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidm0tcGxhY2Vob2xkZXJcIiBbaWRdPVwiJ3ZtLXBsYWNlaG9sZGVyJyArIGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCInYm9yZGVyOjFweCBzb2xpZCAnK3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5jb2xvcj8uYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzpzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uY29sb3I/LnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5jb2xvcj8udGV4dH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy56b25lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy50b1N0cmluZygpfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY1N0eWxlIHdvcmRXcmFwXCIgW25nYlRvb2x0aXBdPVwidG9vbHRpcFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8uWzBdfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNoZWxmRGF0YSBvZiBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6c2hlbGZEYXRhPy56b25lID8gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnpvbmVDb2xvcltzaGVsZkRhdGEuem9uZV0/LmNvbG9yPy5iZyA6IHNobGVmQ29sb3JbaV0uYmd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy56b25lQ29sb3Jbc2hlbGZEYXRhLnpvbmVdPy5jb2xvcj8udGV4dEJnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnpvbmVDb2xvcltzaGVsZkRhdGEuem9uZV0/LmNvbG9yPy50ZXh0fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNoZWxmIENhcGFjaXR5IDoge3tzaGVsZkRhdGE/LnByb2R1Y3RQZXJTaGVsZn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIEZvb3RlciBibG9jayAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPiB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5mb290ZXI/LmxhYmVsID8/ICcnfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgY2xhc3M9XCJtdC01XCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpc3N1ZXMgb2Ygc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2VycztsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJ7eyAnbmV3ZGV0YWlscy0nICsgayB9fVwiIFtjb2xsYXBzZWRdPVwiaXRlbS5jb2xsYXBzZWRcIiBjbGFzcz1cIm1iLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlzc3Vlcy5pc3N1ZXM7bGV0IGsgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiQWNjb3JkaW9uQnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0zIGJhY2tncm91bmRJbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gPHNwYW4gKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgYmctd2FybmluZyByb3VuZGVkLWNpcmNsZSBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4O1wiPjwvc3Bhbj57e2l0ZW0/LnF1ZXN0aW9ufX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC01XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIFR5cGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlQ2F0ZWdvcnl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmV0ZW1wbGF0ZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VGVtcGxhdGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJldGVtcGxhdGVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J3NpemVXcm9uZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+U2l6ZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVXaWR0aD8udmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVXaWR0aD8udW5pdH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J3Byb2R1Y3RjYXRlZ29yeVdyb25nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtaXNzaW5nIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubWlzc2luZ0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cIm1pc3Npbmc/LnpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj57e21pc3Npbmc/LnpvbmV9fTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBtaXNzaW5nPy5wcm9kdWN0Q2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmQgYmFkZ2UgXCI+e3tjYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J2JyYW5kV3JvbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1pc3Npbmcgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5taXNzaW5nRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwibWlzc2luZz8uem9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnt7bWlzc2luZz8uem9uZX19OjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnJhbmQgb2YgbWlzc2luZz8uYnJhbmRcIiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmQgYmFkZ2UgbS0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMy44NDNweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZCc6ICd2YXIoLS1HcmF5LTEwMCwgI2ViZWVmMyknfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YnJhbmR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5pc3N1ZVR5cGUhPT0nYnJhbmRXcm9uZycmJml0ZW0/Lmlzc3VlVHlwZSE9PSdwcm9kdWN0Y2F0ZWdvcnlXcm9uZydcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpeHR1cmVMaXN0IG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZDb25maWdGb3JtYXRlZFwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsIHRleHQtY2FwaXRhbGl6ZVwiPnt7Zml4dHVyZUxpc3Q/LnpvbmV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTkgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0Zvcj1cImxldCBzaGxlZmRhdGEgb2YgZml4dHVyZUxpc3Q/Lml0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsIHRleHQtY2FwaXRhbGl6ZVwiPnt7c2hsZWZkYXRhPy5zaGVsZlR5cGV9fSB7e3NobGVmZGF0YT8uc2hlbGZOdW1iZXJ9fTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jYXBpdGFsaXplXCIgPkNhcGFjaXR5OiA8c3BhbiBjbGFzcz1cImxheW91dExhYmVsXCI+e3tzaGxlZmRhdGE/LnByb2R1Y3RQZXJTaGVsZn19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCIgKm5nRm9yPVwibGV0IGJyYW5kcyBvZiBzaGxlZmRhdGE/LnByb2R1Y3RCcmFuZE5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5IG1lLTMgbWItMlwiPnt7YnJhbmRzfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbktleXM/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgUmVzcG9uc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSByZXNwb25zZSBieSB0aGUgc3RvcmUgdGVhbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FsbC12aWV3cG9ydCB3LTEwMCBtdC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIlsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pID8gJ2JvcmRlcjoxcHggc29saWQgcmVkJyA6ICcnXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaGVhZGVyLWJsb2NrXCIgY2xhc3M9XCJoZWFkZXItYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKTtiYWNrZ3JvdW5kOiAjRjJGM0Y3O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCA/PyAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2tcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ3Byb2R1Y3RjYXRlZ29yeVdyb25nJywgJ2JyYW5kV3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5pc3N1ZVR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uS2V5cztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAwLjk2OXB4IHNvbGlkIHZhcigtLUdyYXktMzAwLCAjRDBENUREKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEzLjg0M3B4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnOiAndmFyKC0tR3JheS0xMDAsICNlYmVlZjMpJ31cIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/Lmxlbmd0aCA/J2RhbmdlcicgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCkgPz8gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCl9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlY1N0eWxlIHdvcmRXcmFwXCIgW25nYlRvb2x0aXBdPVwidG9vbHRpcFwiIFtuZ0NsYXNzXT1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8ubGVuZ3RoID8gJ2RhbmdlcicgOiAnJ1wiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF0gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXX19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIVsncHJvZHVjdGNhdGVnb3J5V3JvbmcnLCAnYnJhbmRXcm9uZyddLmluY2x1ZGVzKGl0ZW0/Lmlzc3VlVHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uS2V5cztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2bS1wbGFjZWhvbGRlclwiIFtpZF09XCIndm0tcGxhY2Vob2xkZXInICsgaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlcjogMC45NjlweCBzb2xpZCB2YXIoLS1HcmF5LTMwMCwgI0QwRDVERCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMy44NDNweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kJzogJ3ZhcigtLUdyYXktMTAwLCAjZWJlZWYzKSd9XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy56b25lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCl9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlY1N0eWxlIHdvcmRXcmFwXCIgW25nYlRvb2x0aXBdPVwidG9vbHRpcFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF19fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzaGVsZkRhdGEgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zaGVsZkRldGFpbHM7IGxldCBpID0gaW5kZXhcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci10b3AnOihnZXRTdGFydFBvc2l0aW9uKGkrMSxzaGVsZkRhdGEuem9uZSxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWcpICYmICFbJ0ZpeHR1cmUgdHlwZSBpcyB3cm9uZycsJ0ZpeHR1cmUgc2l6ZSBpcyB3cm9uZyddLmluY2x1ZGVzKGl0ZW0/LnF1ZXN0aW9uKSkgID8gJzAuNzcxcHggc29saWQgcmVkJyA6ICcwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItYm90dG9tJzooZ2V0RW5kUG9zaXRpb24oaSsxLHNoZWxmRGF0YS56b25lLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZykgJiYgIVsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pKSA/ICcgMC43NzFweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1sZWZ0JzooZ2V0TWlkUG9zaXRpb24oaSsxLHNoZWxmRGF0YS56b25lLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZykgJiYgIVsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pKSA/ICcgMC43NzFweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yaWdodCc6KGdldE1pZFBvc2l0aW9uKGkrMSxzaGVsZkRhdGEuem9uZSxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWcpICYmICFbJ0ZpeHR1cmUgdHlwZSBpcyB3cm9uZycsJ0ZpeHR1cmUgc2l6ZSBpcyB3cm9uZyddLmluY2x1ZGVzKGl0ZW0/LnF1ZXN0aW9uKSkgPyAnIDAuNzcxcHggc29saWQgcmVkJyA6ICcwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1HcmF5LTEwMCwgI2Y4ZjlmYiknLH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnMTMuODQzcHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnOiAndmFyKC0tR3JheS0xMDAsICNlYmVlZjMpJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGVsZiBDYXBhY2l0eSA6IHt7c2hlbGZEYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4ge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZm9vdGVyPy5sYWJlbCA/PyAnJ319PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cIml0ZW0/LmNvbW1lbnRzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBpdGVtPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHQgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlIT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtlZCBhcyA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkFncmVlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZCBcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldGFpbmVkIGV4aXN0aW5nXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCIgKm5nSWY9XCJjb21tZW50Py5jb21tZW50IT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2UmJnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgZml4dHVyZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7e2NkblVybH19e3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZX19XCIgYWx0PVwiaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01IHJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc3RhdHVzPT09J3BlbmRpbmcnJiZzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0d28tdG9uZS1idG4gbWUtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbignYWdyZWUnLHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5faWQsJ2ZpeHR1cmUnLGl0ZW0uaXNzdWVUeXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFncmVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbignZGlzYWdyZWUnLHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uX2lkLCdmaXh0dXJlJyxpdGVtLmlzc3VlVHlwZSlcIj5EaXNhZ3JlZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pc3N1ZXM/Lmxlbmd0aD09PTBcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmNvbW1lbnRzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHQgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGUhPT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXJrZWQgYXMgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJBZ3JlZWQsIHVwZGF0ZWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsIHJldGFpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCIgKm5nSWY9XCJjb21tZW50Py5jb21tZW50IT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgTm90ZToge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSYmc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2UhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlN0b3JlIGZpeHR1cmU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7e2NkblVybH19e3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZX19XCIgYWx0PVwiaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtNCB3LTEwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cIm9yaWdpbmFsRGF0YS5maXh0dXJlQ29tbWVudC5sZW5ndGg+MCYmICFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2Ygb3JpZ2luYWxEYXRhLmZpeHR1cmVDb21tZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNyZWF0ZWRBdHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIiAqbmdJZj1cImxheW91dEZlZWRiYWNrLmxlbmd0aD4wXCI+XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJ7eyAnZGV0YWlscy0nICsgaSB9fVwiIFtjb2xsYXBzZWRdPVwiZmVlZGJhY2suY29sbGFwc2VkXCIgKGhlYWRlckNsaWNrKT1cInRvZ2dsZVBhbmVsKGkpXCJcclxuICAgICAgICBjbGFzcz1cIm1iLTVcIiAqbmdGb3I9XCJsZXQgZmVlZGJhY2sgb2YgbGF5b3V0RmVlZGJhY2s7bGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1haW5oZWFkaW5nIHAtMFwiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZlZWRiYWNrPy50YXNrVHlwZT09PSdpbml0aWFsJ1wiPkxheW91dCB2ZXJpZmljYXRpb24gYXNzaWduZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmVlZGJhY2s/LnRhc2tUeXBlPT09J3JlZG8nXCI+TGF5b3V0IHZlcmlmaWNhdGlvbiByZS1hc3NpZ25lZDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPnt7ZmVlZGJhY2s/LnRhc2tEYXRhPy5jcmVhdGVkQXQgfGRhdGU6ICdoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInBzLTAgcGUtMFwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1kaXZpZGVyIG10LTMgbXMtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ZmVlZGJhY2s/LnRhc2tEYXRhPy5jcmVhdGVkQnlOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ZmVlZGJhY2s/LnRhc2tEYXRhPy5jcmVhdGVkQXQgfGRhdGU6ICdoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQXNzaWduZXJcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiAqbmdJZj1cImZlZWRiYWNrPy50YXNrRGF0YT8udXNlck5hbWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1kaXZpZGVyIG10LTMgbXMtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ZmVlZGJhY2s/LnRhc2tEYXRhPy51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2ZlZWRiYWNrPy50YXNrRGF0YT8uc3VibWl0VGltZV9zdHJpbmd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBBc3NpZ25lZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtM1wiICpuZ0lmPVwiIXNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBwLTMgbWUtNFwiICpuZ0lmPVwiZmVlZGJhY2s/LnN0YXR1cz09PSdjb21wbGV0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMCAzTDQuNSA4LjVMMiA2XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5MYXlvdXQgbWF0Y2hlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBwLTMgbWUtNFwiICpuZ0lmPVwiZmVlZGJhY2s/LnN0YXR1cz09PSdpbmNvbXBsZXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk02IDRWNk02IDhINi4wMDVNMTEgNkMxMSA4Ljc2MTQyIDguNzYxNDIgMTEgNiAxMUMzLjIzODU4IDExIDEgOC43NjE0MiAxIDZDMSAzLjIzODU4IDMuMjM4NTggMSA2IDFDOC43NjE0MiAxIDExIDMuMjM4NTggMTEgNlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0YwNDQzOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkxheW91dCBtaXNtYXRjaDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgcC0zXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmZWVkYmFjaz8uc3RhdHVzPT09J2luY29tcGxldGUnJiZwZW5kaW5nTGF5b3V0aXNzdWVzPjBcIj5cclxuICAgICAgICAgICAgICAgICAge3twZW5kaW5nTGF5b3V0aXNzdWVzfX0ve3tmZWVkYmFjaz8uYW5zd2Vyc1swXT8uaXNzdWVzPy5sZW5ndGh9fSBhY3Rpb24gcGVuZGluZ1xyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBwLTNcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImZlZWRiYWNrPy5zdGF0dXM9PT0naW5jb21wbGV0ZScmJmFwcHJvdmVkTGF5b3V0aXNzdWVzPjAmJnBlbmRpbmdMYXlvdXRpc3N1ZXM9PT0wXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7YXBwcm92ZWRMYXlvdXRpc3N1ZXN9fS97e2ZlZWRiYWNrPy5hbnN3ZXJzWzBdPy5pc3N1ZXM/Lmxlbmd0aH19IGFjdGlvbiBkb25lXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGlzc3VlcyBvZiBmZWVkYmFjay5hbnN3ZXJzO2xldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc3N1ZXM/Lmlzc3Vlcz8ubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25JdGVtPVwie3sgJ25ld2RldGFpbHMtJyArIGsgfX1cIiBbY29sbGFwc2VkXT1cImlzc3Vlcy5jb2xsYXBzZWRcIiBjbGFzcz1cIm1iLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlzc3Vlcy5pc3N1ZXM7bGV0IGsgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiQWNjb3JkaW9uQnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0zIGJhY2tncm91bmRJbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4gKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgYmctd2FybmluZyByb3VuZGVkLWNpcmNsZSBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4O1wiPjwvc3Bhbj57e2l0ZW0/LnF1ZXN0aW9ufX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2Pnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlTmFtZX19PC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJwcmV2aW91c0ZpeHR1cmUoZml4dHVyZUluZGV4LGl0ZW0/LkRldGFpbHMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJmaXh0dXJlSW5kZXhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDZMOSAxMkwxNSAxOFwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWZpeHR1cmVJbmRleFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNkw5IDEyTDE1IDE4XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Zml4dHVyZUluZGV4KzF9fS97e2l0ZW0/LkRldGFpbHMubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm5leHRGaXh0dXJlKGZpeHR1cmVJbmRleCxpdGVtPy5EZXRhaWxzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXRlbT8uRGV0YWlscy5sZW5ndGg+Zml4dHVyZUluZGV4KzFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiKGl0ZW0/LkRldGFpbHMubGVuZ3RoKT09PShmaXh0dXJlSW5kZXgrMSlcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZEltZyBtdC00IHBzLTMgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZUNhdGVnb3J5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkZpeHR1cmUgVHlwZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVDYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZVRlbXBsYXRlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5UZW1wbGF0ZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVUZW1wbGF0ZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpeHR1cmVMaXN0IG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZDb25maWdGb3JtYXRlZFwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsIHRleHQtY2FwaXRhbGl6ZVwiPnt7Zml4dHVyZUxpc3Q/LnpvbmV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOSBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0Zvcj1cImxldCBzaGxlZmRhdGEgb2YgZml4dHVyZUxpc3Q/Lml0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWwgdGV4dC1jYXBpdGFsaXplXCI+e3tzaGxlZmRhdGE/LnNoZWxmVHlwZX19IHt7c2hsZWZkYXRhPy5zaGVsZk51bWJlcn19OjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jYXBpdGFsaXplXCIgPkNhcGFjaXR5OiA8c3BhbiBjbGFzcz1cImxheW91dExhYmVsXCI+e3tzaGxlZmRhdGE/LnByb2R1Y3RQZXJTaGVsZn19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0Zvcj1cImxldCBicmFuZHMgb2Ygc2hsZWZkYXRhPy5wcm9kdWN0QnJhbmROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1zZWNvbmRhcnkgbWUtMyBtYi0yXCI+e3ticmFuZHN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5hc3NvY2lhdGVkRWxlbWVudFR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+TG9jYXRpb246PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmFzc29jaWF0ZWRFbGVtZW50VHlwZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uYXNzb2NpYXRlZEVsZW1lbnROdW1iZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Qb3NpdGlvbjo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj4oTCB0byBSKTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5hc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubmV3YXNzb2NpYXRlZEVsZW1lbnRUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPk5ldyBMb2NhdGlvbjo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubmV3YXNzb2NpYXRlZEVsZW1lbnRUeXBlfX17e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubmV3YXNzb2NpYXRlZEVsZW1lbnROdW1iZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Lm5ld2Fzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5OZXcgUG9zaXRpb246PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+KEwgdG8gUik8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubmV3YXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbktleXM/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0nZXh0cmFGaXh0dXJlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSBGaXh0dXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaXh0dXJlIGZlZWRiYWNrIGJ5IHRoZSBzdG9yZSB0ZWFtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGUhPT0nZXh0cmFGaXh0dXJlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGFub2dyYW0gZml4dHVyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmVsb3cgZml4dHVyZSBpcyBpbiB0aGUgcGxhbm9ncmFtIGJ1dCBub3QgaW4gc3RvcmUuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FsbC12aWV3cG9ydCB3LTEwMCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSGVhZGVyIGJsb2NrIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaGVhZGVyLWJsb2NrXCIgY2xhc3M9XCJoZWFkZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5oZWFkZXI/LmxhYmVsID8/ICcnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBCb2R5IGJsb2NrIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2tcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbktleXM7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzZWN0aW9uJyArIGlcIiBjbGFzcz1cInZtLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidm0tcGxhY2Vob2xkZXJcIiBbaWRdPVwiJ3ZtLXBsYWNlaG9sZGVyJyArIGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCInYm9yZGVyOjFweCBzb2xpZCAnKyB0aGlzLnNobGVmQ29sb3JbaV0uYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uY29sb3I/LnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjppdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LmNvbG9yPy50ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCl9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY1N0eWxlIHdvcmRXcmFwXCIgW25nYlRvb2x0aXBdPVwidG9vbHRpcFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEBpZihpdGVtLnNoZWxmVHlwZSA9PT0nc2hlbGYnKXsgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NoZWxmJyArIGlcIiBjbGFzcz1cImJsb2NrIHNoZWxmIGhpZGUtc2Nyb2xsIGQtYmxvY2sgdGV4dC1lbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzpzaGVsZkRhdGE/LnpvbmUgPyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnpvbmVDb2xvcltzaGVsZkRhdGE/LnpvbmVdPy5jb2xvcj8uYmcgOiBzaGxlZkNvbG9yW2ldLmJnfVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uem9uZUNvbG9yW3NoZWxmRGF0YT8uem9uZV0/LmNvbG9yPy50ZXh0QmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy56b25lQ29sb3Jbc2hlbGZEYXRhPy56b25lXT8uY29sb3I/LnRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGVsZiBDYXBhY2l0eSA6IHt7c2hlbGZEYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGb290ZXIgYmxvY2sgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4ge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZvb3Rlcj8ubGFiZWwgPz8gJyd9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uaW1hZ2UmJml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uaW1hZ2UhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBmaXh0dXJlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uaW1hZ2V9fVwiIGFsdD1cImltYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC00IHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5jb21tZW50cy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZSE9PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXJrZWQgYXMgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJBZ3JlZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldGFpbmVkIGV4aXN0aW5nXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCIgKm5nSWY9XCJjb21tZW50Py5jb21tZW50IT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01IHJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc3RhdHVzPT09J3BlbmRpbmcnJiZzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZHx8aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zdGF0dXM9PT0ncGVuZGluZycmJml0ZW0uaXNzdWVUeXBlPT09J290aGVycydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHdvLXRvbmUtYnRuIG1lLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2FncmVlJyxmZWVkYmFjaz8uX2lkLGlzc3Vlcy5faWQsaXRlbS5faWQsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdLl9pZCwnbGF5b3V0JyxpdGVtLmlzc3VlVHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZ3JlZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2Rpc2FncmVlJyxmZWVkYmFjaz8uX2lkLGlzc3Vlcy5faWQsaXRlbS5faWQsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5faWQsJ2xheW91dCcsaXRlbS5pc3N1ZVR5cGUpXCI+RGlzYWdyZWU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctMTAwXCIgKm5nSWY9XCJmZWVkYmFjaz8uYW5zd2Vyc1swXT8udmlkZW8mJmZlZWRiYWNrPy5hbnN3ZXJzWzBdPy52aWRlbyE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBWaWRlbzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDx2aWRlbyBjb250cm9scyBzcmM9XCJ7e2NkblVybH19e3tmZWVkYmFjaz8uYW5zd2Vyc1swXT8udmlkZW99fVwiIGNsYXNzPVwibXQtNCB3LTEwMFwiPjwvdmlkZW8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwib3JpZ2luYWxEYXRhLmxheW91dENvbW1lbnQubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2Ygb3JpZ2luYWxEYXRhLmxheW91dENvbW1lbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jcmVhdGVkQXR8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gXHJcblxyXG4gIDxkaXYgY2xhc3M9XCJtdC01XCIgKm5nSWY9XCJsYXlvdXRGZWVkYmFjaz8ubGVuZ3RoPT09MCYmc3RvcmVGaXh0dXJlTGlzdD8ubGVuZ3RoPT09MCYmdm1GZWVkYmFjaz8ubGVuZ3RoPT09MCYmIWxvYWRpbmdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjk0XCIgaGVpZ2h0PVwiOTRcIiB2aWV3Qm94PVwiMCAwIDk0IDk0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCIxMy4zMzMzXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZD1cIk0zNS45NTAyIDQ4LjE5OTdDMzUuNjQ4OSA0OC4yMzE1IDM1LjM0MjIgNDguMjUwNSAzNS4wMzEyIDQ4LjI1MDVDMzQuODYxNyA0OC4yNTA1IDM0LjY5NDQgNDguMjQzNiAzNC41MjkzIDQ4LjIzMzlWNTguNjA2OUMzNC41MjkzIDYwLjAzNDkgMzUuNzEyMyA2MS4yMjYgMzcuMjAwMiA2MS4yMjYxSDU2LjgwNDdDNTguMjkyNyA2MS4yMjYxIDU5LjQ3NTYgNjAuMDM1IDU5LjQ3NTYgNTguNjA2OVY0OC4yMzQ5QzU5LjMxMzcgNDguMjQ0MSA1OS4xNDk4IDQ4LjI1MDUgNTguOTg1NCA0OC4yNTA1QzU4LjY3MTQgNDguMjUwNSA1OC4zNjA4IDQ4LjIzMjUgNTguMDU0NyA0OC4xOTk3VjU1Ljk4NzhIMzUuOTUwMlY0OC4xOTk3Wk01Ny45MzE2IDMyLjc3MzlIMzYuMDczMkMzNS44OTU5IDMyLjc3MzkgMzUuNzQwNiAzMi44NjY3IDM1LjY2MzEgMzIuOTg3OEwzNS42NjExIDMyLjk4OTdMMzIuMTUxNCAzOC40NzMxTDMyLjA1NjYgMzguNjIwNkMzMC44MzExIDQwLjc0MDQgMzIuMDk1NyA0My40Njc0IDM0LjQ0NzMgNDMuNzc2OUMzNC42NDgyIDQzLjgwMTMgMzQuODM3OSA0My44MTU5IDM1LjAyNTQgNDMuODE1OUMzNi4yNTU1IDQzLjgxNTkgMzcuMzQzNCA0My4yODcyIDM4LjEwMDYgNDIuNDY1M0wzOS4wMjI1IDQxLjQ2NDRMMzkuOTQxNCA0Mi40NjgzQzQwLjY5MDMgNDMuMjg2MyA0MS43NzcgNDMuODE1OSA0My4wMTQ2IDQzLjgxNTlDNDQuMjQ2NyA0My44MTU4IDQ1LjMzODYgNDMuMjg1NiA0Ni4wODY5IDQyLjQ2ODNMNDcuMDA4OCA0MS40NjE0TDQ3LjkzMDcgNDIuNDY4M0M0OC42NzkgNDMuMjg1NyA0OS43NzA3IDQzLjgxNTkgNTEuMDAyOSA0My44MTU5QzUyLjIzNTEgNDMuODE1OSA1My4zMjY4IDQzLjI4NTcgNTQuMDc1MiA0Mi40NjgzTDU0Ljk5NzEgNDEuNDYxNEw1NS45MTg5IDQyLjQ2ODNDNTYuNjY3MyA0My4yODU3IDU3Ljc2IDQzLjgxNTkgNTguOTkyMiA0My44MTU5QzU5LjE3MzYgNDMuODE1OSA1OS4zNjg3IDQzLjgwMjEgNTkuNTY4NCA0My43Nzc4SDU5LjU2NzRDNjEuOTYxMSA0My40NTczIDYzLjIyOTMgNDAuNjA3OCA2MS44NjEzIDM4LjQ3MzFMNjEuODYwNCAzOC40NzQxTDU4LjM0MzggMzIuOTkwN0w1OC4zNDI4IDMyLjk4NzhDNTguMjY1MyAzMi44NjY1IDU4LjEwOTIgMzIuNzczOSA1Ny45MzE2IDMyLjc3MzlaXCJcclxuICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyLjVcIiAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm10LTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGQgaDMgbXQtMlwiPk5vIGlzc3VlPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+VGhlIHN0b3JlIGRpZCBub3QgZmxhZyBpdCBhcyBhbiBpc3N1ZS48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+Il19
|
|
641
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2svbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2svbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlDLFNBQVMsRUFBRSxLQUFLLEVBQWlCLFlBQVksRUFBRSxNQUFNLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBRTlKLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQTtBQUMvRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBTzdCLE1BQU0sT0FBTyxpQ0FBaUM7SUE0Q2xDO0lBQ0E7SUFDQTtJQUNBO0lBN0NjLFlBQVksQ0FBYztJQUNQLFNBQVMsQ0FBTTtJQUMxRCxjQUFjLEdBQVEsRUFBRSxDQUFDO0lBQ3pCLFVBQVUsR0FBUSxFQUFFLENBQUM7SUFDckIsV0FBVyxHQUFZLElBQUksQ0FBQTtJQUMzQixNQUFNLEdBQVksSUFBSSxDQUFBO0lBQ3RCLHlCQUF5QjtJQUN6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QUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzt3R0Fuc0JVLGlDQUFpQzs0RkFBakMsaUNBQWlDLGliQ2Q5QyxxeTFHQW1wRFU7OzRGRHJvREcsaUNBQWlDO2tCQUw3QyxTQUFTOytCQUNFLGlDQUFpQztnTEFNbkIsWUFBWTtzQkFBbkMsU0FBUzt1QkFBQyxXQUFXO2dCQUNxQixTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBMkJoQyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIElucHV0LCBTaW1wbGVDaGFuZ2VzLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgU3RvcmVCdWlsZGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNIRUxGX0NPTE9SUyB9IGZyb20gJy4uLy4uLy4uL2RhdGEvZml4dHVyZS10ZW1wbGF0ZS5kYXRhJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uUG9wdXBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29uZmlybWF0aW9uLXBvcHVwL2NvbmZpcm1hdGlvbi1wb3B1cC5jb21wb25lbnRcIlxyXG5pbXBvcnQgeyB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLW1hbmFnZS1zdG9yZS1wbGFuby1mZWVkYmFja1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2suY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hbmFnZVN0b3JlUGxhbm9GZWVkYmFja0NvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChcImJvZHlCbG9ja1wiKSBib2R5QmxvY2tSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2FjY29yZGlvbicsIHsgc3RhdGljOiBmYWxzZSB9KSBhY2NvcmRpb246IGFueTtcclxuICBsYXlvdXRGZWVkYmFjazogYW55ID0gW107XHJcbiAgdm1GZWVkYmFjazogYW55ID0gW107XHJcbiAgb3BlbmZpeHR1cmU6IGJvb2xlYW4gPSB0cnVlXHJcbiAgb3BlbnZtOiBib29sZWFuID0gdHJ1ZVxyXG4gIC8vIHNoZWxmRGV0YWlsczogYW55ID0gW11cclxuICBmaXh0dXJlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgZml4dHVyZXRhc2tJbmRleDogbnVtYmVyID0gMDtcclxuICB2bXRhc2tJbmRleDogbnVtYmVyID0gMDtcclxuICBhcHByb3ZlZExheW91dGlzc3VlczogbnVtYmVyID0gMFxyXG4gIHBlbmRpbmdMYXlvdXRpc3N1ZXM6IG51bWJlciA9IDBcclxuICBwZW5kaW5nRml4dHVyZWlzc3VlczogbnVtYmVyID0gMFxyXG4gIGFwcHJvdmVkRml4dHVyZWlzc3VlczogbnVtYmVyID0gMFxyXG4gIHRvdGFsRml4dHVyZWlzc3VlczogbnVtYmVyID0gMFxyXG4gIGNvbXBsZXRlZEZpeHR1cmU6IG51bWJlciA9IDBcclxuICBwZW5kaW5nVm1pc3N1ZXM6IG51bWJlciA9IDBcclxuICBhcHByb3ZlZFZtaXNzdWVzOiBudW1iZXIgPSAwXHJcbiAgdG90YWxWbWlzc3VlczogbnVtYmVyID0gMFxyXG4gIGNvbXBsZXRlZFZtOiBudW1iZXIgPSAwXHJcbiAgY29sb3JMaXN0OiBhbnkgPSB7fTtcclxuICB2bUNvbmZpZzogYW55ID0gW107XHJcbiAgLy8gc2VjdGlvbkNvbmZpZzogYW55ID0gW107XHJcbiAgLy8gc2VjdGlvbktleXM6IGFueSA9IFtdXHJcbiAgc2hsZWZDb2xvciA9IFNIRUxGX0NPTE9SUztcclxuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBzdG9yZUZpeHR1cmVMaXN0OiBhbnkgPSBbXTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBASW5wdXQoKSBjdXJyZW50UGxhbm86IGFueTtcclxuICBASW5wdXQoKSBzdG9yZUZlZWRiYWNrOiBhbnk7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJc3N1ZTogYW55O1xyXG4gIEBPdXRwdXQoKSBpc0FwcHJvdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgc2VsZWN0ZWRGaXh0dXJlOiBhbnk7XHJcbiAgb3JpZ2luYWxEYXRhOiBhbnk7XHJcbiAgY2RuVXJsOiBhbnk7XHJcbiAgY3VycmVudFBsYW5vRGV0YWlsczogYW55XHJcbiAgZGF0YU9iamVjdDogYW55ID0gW1xyXG4gICAgeyBEZXNjcmlwdGlvbjogJ1Rhc2snLCBJc3N1ZXM6IFt7IHRleHQ6IFwiTGF5b3V0IHZlcmlmaWNhdGlvblwiLCBpZDogJ2xheW91dCcgfSwgeyB0ZXh0OiBcIkZpeHR1cmUgdmVyaWZpY2F0aW9uXCIsIGlkOiAnZml4dHVyZScgfSwgeyB0ZXh0OiBcIlZpc3VhbCBNZXJjaCB2ZXJpZmljYXRpb25cIiwgaWQ6IFwidm1cIiB9XSB9LFxyXG4gICAgeyBEZXNjcmlwdGlvbjogJ1N0YXR1cycsIElzc3VlczogW3sgdGV4dDogXCJNYXRjaFwiLCBpZDogJ2NvbXBsZXRlJyB9LCB7IHRleHQ6IFwiTWlzbWF0Y2hcIiwgaWQ6ICdpbmNvbXBsZXRlJyB9XSB9LFxyXG4gICAgeyBEZXNjcmlwdGlvbjogJ0FwcHJvdmFsIFN0YXR1cycsIHR5cGU6IFwic2luZ2xlXCIsIElzc3VlczogW3sgdGV4dDogXCJBY3Rpb24gUGVuZGluZ1wiLCBpZDogJ3BlbmRpbmcnIH0sIHsgdGV4dDogXCJBY3Rpb24gRG9uZVwiLCBpZDogJ2FncmVlJyB9XSB9XHJcbiAgXTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogU3RvcmVCdWlsZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzW1wiY3VycmVudFBsYW5vXCJdKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiY3VycmVudFBsYW5vXCIsIGNoYW5nZXNbXCJjdXJyZW50UGxhbm9cIl0uY3VycmVudFZhbHVlKTtcclxuICAgICAgdGhpcy5jdXJyZW50UGxhbm9EZXRhaWxzID0gY2hhbmdlc1tcImN1cnJlbnRQbGFub1wiXS5jdXJyZW50VmFsdWVcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXSkge1xyXG5cclxuXHJcbiAgICAgIGlmIChjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICB0aGlzLnJlc2V0SW5pdGlhbFZhbHVlcygpXHJcbiAgICAgICAgdGhpcy5vcmlnaW5hbERhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoY2hhbmdlc1tcInN0b3JlRmVlZGJhY2tcIl0uY3VycmVudFZhbHVlKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgbGV0IGZlZWRiYWNrRGF0YSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXS5jdXJyZW50VmFsdWUpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5nZXRwbGFub0ZlZWRiYWNrKGZlZWRiYWNrRGF0YT8ubGF5b3V0RGF0YSk7XHJcbiAgICAgICAgdGhpcy5nZXRTdG9yZUZpeHR1cmVzZmVlZGJhY2soZmVlZGJhY2tEYXRhPy5maXh0dXJlRGF0YSk7XHJcbiAgICAgICAgdGhpcy5nZXRTdG9yZVZtZmVlZGJhY2soZmVlZGJhY2tEYXRhPy5WbURhdGEpO1xyXG4gICAgICAgIGlmIChmZWVkYmFja0RhdGE/LmxheW91dERhdGE/Lmxlbmd0aCA9PT0gMCAmJiBmZWVkYmFja0RhdGE/LmZpeHR1cmVEYXRhPy5sZW5ndGggPT09IDAgJiYgZmVlZGJhY2tEYXRhPy5WbURhdGE/Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzW1wic2VsZWN0ZWRJc3N1ZVwiXSkge1xyXG4gICAgICB0aGlzLnJlc2V0SW5pdGlhbFZhbHVlcygpXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaXh0dXJlID0gY2hhbmdlc1tcInNlbGVjdGVkSXNzdWVcIl0uY3VycmVudFZhbHVlO1xyXG4gICAgICBjb25zb2xlLmxvZyhcInNlbGVjdGVkSXNzdWVcIiwgdGhpcy5zZWxlY3RlZEZpeHR1cmUpO1xyXG4gICAgICBpZiAodGhpcy5vcmlnaW5hbERhdGE/LmxheW91dERhdGEpIHtcclxuXHJcbiAgICAgICAgbGV0IG5ld0xheW91dERhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5vcmlnaW5hbERhdGE/LmxheW91dERhdGEpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIm5ld0xheW91dERhdGFcIiwgbmV3TGF5b3V0RGF0YSk7XHJcblxyXG4gICAgICAgIG5ld0xheW91dERhdGEuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBkYXRhLmFuc3dlcnMuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlLmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWQuaW5jbHVkZXMoXCJuZXdcIikgJiYgaXNzdWUuaXNzdWVUeXBlICE9ICdleHRyYUZpeHR1cmUnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsIGlzc3VlLnF1ZXN0aW9uKVxyXG4gICAgICAgICAgICAgICAgaXNzdWUuRGV0YWlscyA9IFtdXHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc3N1ZS5pc3N1ZVR5cGUgIT0gJ2NvbW1lbnRzJyAmJiBpc3N1ZS5pc3N1ZVR5cGUgIT0gXCJleHRyYUZpeHR1cmVcIikge1xyXG4gICAgICAgICAgICAgICAgaXNzdWUuRGV0YWlscyA9IGlzc3VlLkRldGFpbHMuZmlsdGVyKChzaGVsZjogYW55KSA9PiBzaGVsZi5maXh0dXJlSWQgPT09IHRoaXMuc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWQpXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjIyMjIyMjIyXCIsIGlzc3VlLmlzc3VlVHlwZSlcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMzMzMzMzMzMzMzMzXCIsIGlzc3VlLkRldGFpbHMpXHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkLmluY2x1ZGVzKFwibmV3XCIpICYmIGlzc3VlLmlzc3VlVHlwZSA9PT0gJ2V4dHJhRml4dHVyZScpIHtcclxuICAgICAgICAgICAgICAgIGlzc3VlLkRldGFpbHMgPSBpc3N1ZS5EZXRhaWxzLmZpbHRlcigoZGF0YTogYW55KSA9PiBkYXRhLl9pZCA9PT0gdGhpcy5zZWxlY3RlZEZpeHR1cmU/Lmlzc3VlRGF0YT8uX2lkKVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCI0NDQ0NDQ0NDQ0NDQ0NDQ0XCIsIGlzc3VlLkRldGFpbHMpXHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5zZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZC5pbmNsdWRlcyhcIm5ld1wiKSAmJiBpc3N1ZS5pc3N1ZVR5cGUgPT09ICdleHRyYUZpeHR1cmUnKSB7XHJcbiAgICAgICAgICAgICAgICBpc3N1ZS5EZXRhaWxzID0gW11cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlbGUuaXNzdWVzID0gZWxlLmlzc3Vlcy5maWx0ZXIoKGlzc3VlOiBhbnkpID0+IGlzc3VlLkRldGFpbHMubGVuZ3RoID4gMCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiNTU1NTU1NTU1NTU1NTU1NTVcIiwgZWxlLmlzc3VlcylcclxuICAgICAgICAgICAgbGV0IGZpeHR1cmVjb3VudCA9IGVsZS5pc3N1ZXMuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlLmlzc3VlVHlwZSAhPSBcImV4dHJhRml4dHVyZVwiKVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIjY2NjY2NjY2NjY2NlwiLCBmaXh0dXJlY291bnQpXHJcbiAgICAgICAgICAgIGlmIChmaXh0dXJlY291bnQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGVsZS5pc3N1ZXMgPSBlbGUuaXNzdWVzLmZpbHRlcigoaXNzdWU6IGFueSkgPT4gaXNzdWUuaXNzdWVUeXBlICE9IFwiZXh0cmFGaXh0dXJlXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBuZXdMYXlvdXREYXRhID0gbmV3TGF5b3V0RGF0YS5maWx0ZXIoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuICEoZGF0YS5hbnN3ZXJzWzBdLmlzc3Vlcy5sZW5ndGggPT09IDApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZ2V0cGxhbm9GZWVkYmFjayhuZXdMYXlvdXREYXRhKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIm5ld0xheW91dERhdGFhZnRlclwiLCBuZXdMYXlvdXREYXRhKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGZpeHR1cmVMaXN0ID0gdGhpcy5vcmlnaW5hbERhdGE/LmZpeHR1cmVEYXRhPy5maWx0ZXIoXHJcbiAgICAgICAgKGRhdGE6IGFueSkgPT4gZGF0YS5maXh0dXJlSWQgPT09IHRoaXMuc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcclxuICAgICAgKTtcclxuICAgICAgaWYgKGZpeHR1cmVMaXN0ICYmIGZpeHR1cmVMaXN0Py5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5maXh0dXJldGFza0luZGV4ID0gMDtcclxuXHJcbiAgICAgICAgdGhpcy5nZXRTdG9yZUZpeHR1cmVzZmVlZGJhY2soZml4dHVyZUxpc3QpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0U3RvcmVGaXh0dXJlc2ZlZWRiYWNrKFtdKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgdm1MaXN0ID0gdGhpcy5vcmlnaW5hbERhdGE/LlZtRGF0YT8uZmlsdGVyKFxyXG4gICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEuZml4dHVyZUlkID09PSB0aGlzLnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh2bUxpc3QgJiYgdm1MaXN0Py5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy52bXRhc2tJbmRleCA9IDA7XHJcbiAgICAgICAgdGhpcy5nZXRTdG9yZVZtZmVlZGJhY2sodm1MaXN0KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmdldFN0b3JlVm1mZWVkYmFjayhbXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmVudmlyb25tZW50LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChlbnYpID0+IHtcclxuICAgICAgICBpZiAoZW52KSB7XHJcbiAgICAgICAgICB0aGlzLmNkblVybCA9IGVudi5wbGFub2dyYW1DRE5cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRJbml0aWFsVmFsdWVzKCkge1xyXG4gICAgdGhpcy5hcHByb3ZlZExheW91dGlzc3VlcyA9IDBcclxuICAgIHRoaXMucGVuZGluZ0xheW91dGlzc3VlcyA9IDBcclxuICAgIHRoaXMucGVuZGluZ0ZpeHR1cmVpc3N1ZXMgPSAwXHJcbiAgICB0aGlzLmFwcHJvdmVkRml4dHVyZWlzc3VlcyA9IDBcclxuICAgIHRoaXMudG90YWxGaXh0dXJlaXNzdWVzID0gMFxyXG4gICAgdGhpcy5jb21wbGV0ZWRGaXh0dXJlID0gMFxyXG4gICAgdGhpcy5wZW5kaW5nVm1pc3N1ZXMgPSAwXHJcbiAgICB0aGlzLmFwcHJvdmVkVm1pc3N1ZXMgPSAwXHJcbiAgICB0aGlzLnRvdGFsVm1pc3N1ZXMgPSAwXHJcbiAgICB0aGlzLmNvbXBsZXRlZFZtID0gMFxyXG4gIH1cclxuICB0b2dnbGVQYW5lbChpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmxheW91dEZlZWRiYWNrLmZvckVhY2goKGl0ZW06IGFueSwgaTogYW55KSA9PiB7XHJcbiAgICAgIGl0ZW0uY29sbGFwc2VkID0gaSAhPT0gaW5kZXg7IC8vIG9ubHkgc2VsZWN0ZWQgcGFuZWwgc3RheXMgb3BlblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHVwZGF0ZVN0eWxlKGRhdGE6IGFueSwgaTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVTZWN0aW9uKGRhdGEsIGkpO1xyXG4gIH1cclxuICBnZXRTdG9yZUZpeHR1cmVzZmVlZGJhY2soZml4dHVyZURhdGE6IGFueSkge1xyXG5cclxuICAgIGlmIChmaXh0dXJlRGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmxheW91dEZlZWRiYWNrLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGRhdGEuY29sbGFwc2VkID0gdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5vcGVuZml4dHVyZSA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMuY29tcGxldGVkRml4dHVyZSA9IGZpeHR1cmVEYXRhPy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5zdGF0dXMgPT09ICdjb21wbGV0ZScpLmxlbmd0aFxyXG4gICAgZml4dHVyZURhdGE/LmZvckVhY2goKHNoZWxmOiBhbnksIGk6IGFueSkgPT4ge1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWcgJiZcclxuICAgICAgICBzaGVsZj8uRml4dHVyZURhdGE/LnNoZWxmQ29uZmlnPy5sZW5ndGggPiAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoXHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKFxyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWcsXHJcbiAgICAgICAgICBzaGVsZj8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChzaGVsZj8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT0gJ0wxJykge1xyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbkNvbmZpZ1swXS5wcm9kdWN0QnJhbmROYW1lID0gc2hlbGY/LkZpeHR1cmVEYXRhLnByb2R1Y3RCcmFuZE5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB6b25lQ29sb3I6YW55ID0ge31cclxuICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uQ29uZmlnLmZvckVhY2goKGVsZTphbnkpID0+IHtcclxuICAgICAgICAgIHpvbmVDb2xvcltlbGUuem9uZV0gPSB7Y29sb3I6ZWxlLmNvbG9yfVxyXG4gICAgICAgIH0pIFxyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnpvbmVDb2xvciA9IHpvbmVDb2xvcjtcclxuICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uS2V5cyA9IE9iamVjdC5rZXlzKFxyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbkNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZEZXRhaWxzID0gc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWc7XHJcbiAgICAgICAgc2hlbGY/LmFuc3dlcnM/LmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGUuaXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoaXNzdWU6IGFueSkgPT4gaXNzdWUuRGV0YWlscyAmJiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsRml4dHVyZWlzc3VlcyA9IHRoaXMudG90YWxGaXh0dXJlaXNzdWVzICsgZWxlPy5pc3N1ZXM/Lmxlbmd0aFxyXG5cclxuICAgICAgICAgIGVsZT8uaXNzdWVzLmZvckVhY2goKGlzc3VlOiBhbnkpID0+IHtcclxuXHJcblxyXG4gICAgICAgICAgICBpZiAoaXNzdWU/LkRldGFpbHMuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuc3RhdHVzID09PSAncGVuZGluZycpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBpc3N1ZS5jb2xsYXBzZWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpeHR1cmVpc3N1ZXMgPSB0aGlzLnBlbmRpbmdGaXh0dXJlaXNzdWVzICsgMVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlzc3VlLmNvbGxhcHNlZCA9IHRydWVcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5hcHByb3ZlZEZpeHR1cmVpc3N1ZXMgPSB0aGlzLmFwcHJvdmVkRml4dHVyZWlzc3VlcyArIDFcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpc3N1ZT8uRGV0YWlscy5mb3JFYWNoKChuZXdzaGVsZjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG5ld3NoZWxmPy5zaGVsZkNvbmZpZyAmJiBuZXdzaGVsZj8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoXHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKFxyXG4gICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkNvbmZpZyxcclxuICAgICAgICAgICAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5wcm9kdWN0UmVzb2x1dGlvbkxldmVsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNoZWxmPy5GaXh0dXJlRGF0YT8ucHJvZHVjdFJlc29sdXRpb25MZXZlbCA9PSBcIkwxXCIpIHtcclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbkNvbmZpZ1swXS5wcm9kdWN0QnJhbmROYW1lID1cclxuICAgICAgICAgICAgICAgICAgICBzaGVsZj8uRml4dHVyZURhdGEucHJvZHVjdEJyYW5kTmFtZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNlY3Rpb25LZXlzID0gT2JqZWN0LmtleXMobmV3c2hlbGYuc2VjdGlvbkNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgIFtcInByb2R1Y3RjYXRlZ29yeVdyb25nXCIsIFwiYnJhbmRXcm9uZ1wiXS5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgICAgICBpc3N1ZS5pc3N1ZVR5cGVcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmRGV0YWlscy5mb3JFYWNoKChzaGVsZjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNoZWxmRGV0YWlscyA9IG5ld3NoZWxmLnNoZWxmQ29uZmlnLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAobmV3U2hlbGY6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2hlbGYuc2hlbGZOdW1iZXIgPT0gc2hlbGYuc2hlbGZOdW1iZXJcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghc2hlbGZEZXRhaWxzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzaGVsZi5vbGRTaGVsZiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkNvbmZpZy5wdXNoKHNoZWxmKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkNvbmZpZy5zb3J0KFxyXG4gICAgICAgICAgICAgICAgICAgIChhOiBhbnksIGI6IGFueSkgPT4gYS5zaGVsZk51bWJlciAtIGIuc2hlbGZOdW1iZXJcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmRGV0YWlscyA9IG5ld3NoZWxmLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0b3JlRml4dHVyZUxpc3QgPSBmaXh0dXJlRGF0YTtcclxuICAgIGNvbnNvbGUubG9nKFwidGhpcy5zdG9yZUZpeHR1cmVMaXN0XCIsIHRoaXMuc3RvcmVGaXh0dXJlTGlzdCk7XHJcbiAgfVxyXG4gIGdldFN0b3JlVm1mZWVkYmFjayhWbURhdGE6IGFueSkge1xyXG5cclxuICAgIGlmIChWbURhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5vcGVudm0gPSBmYWxzZTtcclxuICAgICAgdGhpcy5vcGVuZml4dHVyZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMub3BlbnZtKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWNjb3JkaW9uPy5leHBhbmQoJ2RldGFpbHMnKTsgLy8gJ2RldGFpbHMnIGlzIHRoZSBJRCBvZiB0aGUgaXRlbVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuY29tcGxldGVkVm0gPSBWbURhdGE/LmZpbHRlcigoZGF0YTogYW55KSA9PiBkYXRhLnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykubGVuZ3RoXHJcbiAgICBWbURhdGE/LmZvckVhY2goKHNoZWxmOiBhbnkpID0+IHtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICBzaGVsZj8uRml4dHVyZURhdGE/LnNoZWxmQ29uZmlnICYmXHJcbiAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZz8ubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZ0Zvcm1hdGVkID0gdGhpcy5mb3JtYXREYXRhKFxyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWdcclxuICAgICAgICApO1xyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25Db25maWcgPSB0aGlzLnN0b3JlRGF0YShcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uS2V5cyA9IE9iamVjdC5rZXlzKFxyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbkNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZEZXRhaWxzID0gc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWc7XHJcbiAgICAgICAgbGV0IHZtQ29uZmlnID0gc2hlbGYuRml4dHVyZURhdGEudm1Db25maWc7XHJcbiAgICAgICAgc2hlbGY/LmFuc3dlcnMuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGVsZS5pc3N1ZXMgPSBlbGU/Lmlzc3Vlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChpc3N1ZTogYW55KSA9PiBpc3N1ZS5EZXRhaWxzICYmIGlzc3VlLkRldGFpbHMubGVuZ3RoID4gMFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMudG90YWxWbWlzc3VlcyA9IHRoaXMudG90YWxWbWlzc3VlcyArIGVsZT8uaXNzdWVzPy5sZW5ndGhcclxuXHJcbiAgICAgICAgICBlbGU/Lmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55KSA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAoaXNzdWU/LkRldGFpbHMuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuc3RhdHVzID09PSAncGVuZGluZycpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBpc3N1ZS5jb2xsYXBzZWQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgIHRoaXMucGVuZGluZ1ZtaXNzdWVzID0gdGhpcy5wZW5kaW5nVm1pc3N1ZXMgKyAxXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaXNzdWUuY29sbGFwc2VkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIHRoaXMuYXBwcm92ZWRWbWlzc3VlcyA9IHRoaXMuYXBwcm92ZWRWbWlzc3VlcyArIDFcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpc3N1ZT8uRGV0YWlscy5mb3JFYWNoKChuZXdzaGVsZjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgbmV3c2hlbGYudm1Db25maWduZXcgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkobmV3c2hlbGYudm1Db25maWcpXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBpZiAobmV3c2hlbGY/LnNoZWxmQ29uZmlnICYmIG5ld3NoZWxmPy5zaGVsZkNvbmZpZz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZDb25maWdGb3JtYXRlZCA9IHRoaXMuZm9ybWF0RGF0YShcclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZDb25maWdcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi5zZWN0aW9uQ29uZmlnID0gdGhpcy5zdG9yZURhdGEobmV3c2hlbGYuc2hlbGZDb25maWcpO1xyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhuZXdzaGVsZi5zZWN0aW9uQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmRGV0YWlscyA9IG5ld3NoZWxmLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYudm1Db25maWduZXcuZm9yRWFjaCgodm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaXNzdWUuaXNzdWVUeXBlID09IFwiVm1NaXNtYXRjaFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdm0uc3RhcnRZUG9zaXRpb24gPSB2bS5uZXdzdGFydFlQb3NpdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICB2bS5lbmRZUG9zaXRpb24gPSB2bS5uZXdlbmRZUG9zaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgdm0ueFpvbmUgPSB2bS5uZXd4Wm9uZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLnlab25lID0gdm0ubmV3eVpvbmUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB2bS5uZXdWbSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnZtQ29uZmlnbmV3LnB1c2goLi4udm1Db25maWcpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy52bUZlZWRiYWNrID0gVm1EYXRhO1xyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLnZtRmVlZGJhY2tcIiwgdGhpcy52bUZlZWRiYWNrKTtcclxuICAgIHRpbWVyKDMwMDApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGltZXJcIilcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuICBuZXh0Rml4dHVyZShmaXh0dXJlSW5kZXg6IG51bWJlciwgdG90YWxEYXRhOiBhbnkpIHtcclxuICAgIGlmICh0b3RhbERhdGEubGVuZ3RoID4gZml4dHVyZUluZGV4ICsgMSkge1xyXG4gICAgICB0aGlzLmZpeHR1cmVJbmRleCA9IGZpeHR1cmVJbmRleCArIDE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByZXZpb3VzRml4dHVyZShmaXh0dXJlSW5kZXg6IG51bWJlciwgdG90YWxEYXRhOiBhbnkpIHtcclxuICAgIGlmIChmaXh0dXJlSW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuZml4dHVyZUluZGV4ID0gZml4dHVyZUluZGV4IC0gMTtcclxuICAgIH1cclxuICB9XHJcbiAgbmV4dHRhc2tGaXh0dXJlKGZpeHR1cmV0YXNrSW5kZXg6IG51bWJlciwgdG90YWxEYXRhOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKHRvdGFsRGF0YSk7XHJcbiAgICBpZiAodG90YWxEYXRhLmxlbmd0aCA+IGZpeHR1cmV0YXNrSW5kZXggKyAxKSB7XHJcbiAgICAgIHRoaXMuZml4dHVyZXRhc2tJbmRleCA9IGZpeHR1cmV0YXNrSW5kZXggKyAxO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcmV2aW91c3Rhc2tWbSh2bXRhc2tJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgaWYgKHZtdGFza0luZGV4ID4gMCkge1xyXG4gICAgICB0aGlzLnZtdGFza0luZGV4ID0gdm10YXNrSW5kZXggLSAxO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZXh0dGFza1ZtKHZtdGFza0luZGV4OiBudW1iZXIsIHRvdGFsRGF0YTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyh0b3RhbERhdGEpO1xyXG4gICAgaWYgKHRvdGFsRGF0YS5sZW5ndGggPiB2bXRhc2tJbmRleCArIDEpIHtcclxuICAgICAgdGhpcy52bXRhc2tJbmRleCA9IHZtdGFza0luZGV4ICsgMTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJldmlvdXN0YXNrRml4dHVyZShmaXh0dXJldGFza0luZGV4OiBudW1iZXIsIHRvdGFsRGF0YTogYW55KSB7XHJcbiAgICBpZiAoZml4dHVyZXRhc2tJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5maXh0dXJldGFza0luZGV4ID0gZml4dHVyZXRhc2tJbmRleCAtIDE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldHBsYW5vRmVlZGJhY2sobGF5b3V0RGF0YTogYW55KSB7XHJcblxyXG4gICAgbGF5b3V0RGF0YT8uZm9yRWFjaCgoZGF0YTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGkgPT09IDApIHtcclxuICAgICAgICBkYXRhLmNvbGxhcHNlZCA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRhdGEuY29sbGFwc2VkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBkYXRhPy5hbnN3ZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgZWxlLmlzc3VlcyA9IGVsZT8uaXNzdWVzLmZpbHRlcihcclxuICAgICAgICAgIChpc3N1ZTogYW55KSA9PiBpc3N1ZS5EZXRhaWxzICYmIGlzc3VlLkRldGFpbHMubGVuZ3RoID4gMFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gdGhpcy5wZW5kaW5nTGF5b3V0aXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuc3RhdHVzID09PSAncGVuZGluZycpLmxlbmd0aFxyXG4gICAgICAgIC8vIHRoaXMuYXBwcm92ZWRMYXlvdXRpc3N1ZXMgPSBlbGU/Lmlzc3Vlcy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5zdGF0dXMgIT09ICdwZW5kaW5nJykubGVuZ3RoXHJcblxyXG4gICAgICAgIGVsZT8uaXNzdWVzLmZvckVhY2goKGlzc3VlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChpc3N1ZT8uRGV0YWlscy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5zdGF0dXMgPT09ICdwZW5kaW5nJykubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdMYXlvdXRpc3N1ZXMgPSB0aGlzLnBlbmRpbmdMYXlvdXRpc3N1ZXMgKyAxXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFwcHJvdmVkTGF5b3V0aXNzdWVzID0gdGhpcy5hcHByb3ZlZExheW91dGlzc3VlcyArIDFcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlzc3VlPy5EZXRhaWxzLmZvckVhY2goKHNoZWxmOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHNoZWxmPy5zaGVsZkNvbmZpZyAmJiBzaGVsZj8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBzaGVsZi5zaGVsZkNvbmZpZ0Zvcm1hdGVkID0gdGhpcy5mb3JtYXREYXRhKHNoZWxmLnNoZWxmQ29uZmlnKTtcclxuICAgICAgICAgICAgICBzaGVsZi5zZWN0aW9uQ29uZmlnID0gdGhpcy5zdG9yZURhdGEoc2hlbGYuc2hlbGZDb25maWcpO1xyXG4gICAgICAgICAgICAgIHNoZWxmLnNlY3Rpb25LZXlzID0gT2JqZWN0LmtleXMoc2hlbGYuc2VjdGlvbkNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgbGV0IHpvbmVDb2xvcjogYW55ID0ge307XHJcbiAgICAgICAgICAgICAgc2hlbGYuc2VjdGlvbkNvbmZpZy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgem9uZUNvbG9yW2VsZS56b25lXSA9IHsgY29sb3I6IGVsZS5jb2xvciB9O1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHNoZWxmLnpvbmVDb2xvciA9IHpvbmVDb2xvcjtcclxuICAgICAgICAgICAgICBzaGVsZi5zaGVsZkRldGFpbHMgPSBzaGVsZi5zaGVsZkNvbmZpZztcclxuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIj09PT09PT09PT09PT1cIixzaGVsZilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5sYXlvdXRGZWVkYmFjayA9IGxheW91dERhdGE7XHJcblxyXG5cclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBmb3JtYXREYXRhKGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgZ3JvdXBlZEFycmF5ID0gT2JqZWN0LnZhbHVlcyhcclxuICAgICAgZGF0YS5yZWR1Y2UoKGFjYzogYW55LCBpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB6b25lID0gaXRlbS56b25lIHx8IFwidW5kZWZpbmVkXCI7XHJcbiAgICAgICAgaWYgKCFhY2Nbem9uZV0pIHtcclxuICAgICAgICAgIGFjY1t6b25lXSA9IHsgem9uZSwgaXRlbXM6IFtdIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFjY1t6b25lXS5pdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgIH0sIHt9KVxyXG4gICAgKTtcclxuICAgIHJldHVybiBncm91cGVkQXJyYXk7XHJcbiAgfVxyXG4gIHN0b3JlRGF0YShzaGVsZkRhdGE6IGFueSxsZXZlbD86c3RyaW5nKSB7XHJcbiAgICBzaGVsZkRhdGEuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IGEuc2hlbGZOdW1iZXIgLSBiLnNoZWxmTnVtYmVyKTtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICBsZXQgc2VjdGlvbkNvbmZpZzphbnlbXSA9IFtdXHJcbiAgICAvLyBzdGFydFlQb3NpdGlvbjogZWxlLnNoZWxmTnVtYmVyLFxyXG4gICAgLy8gICAgICAgICBlbmRZUG9zaXRpb246IGVsZS5zaGVsZk51bWJlcixcclxuICAgIC8vICAgICAgICAgLi4uZWxlLFxyXG4gICAgLy8gICAgICAgICBjb2xvcjogdGhpcy5zaGxlZkNvbG9yW2NvdW50XSxcclxuICAgIHNoZWxmRGF0YS5mb3JFYWNoKChzaGVsZjphbnkpID0+IHtcclxuICAgICAgbGV0IGdldFNlY3Rpb24gPSBzZWN0aW9uQ29uZmlnLmZpbHRlcigoZWxlKSA9PiBlbGUuem9uZSA9PSBzaGVsZi56b25lKTtcclxuICAgICAgaWYoIWdldFNlY3Rpb24ubGVuZ3RoIHx8ICghc2hlbGYuem9uZSAmJiBsZXZlbCA9PSBcIkwyXCIpKSB7XHJcbiAgICAgICAgc2VjdGlvbkNvbmZpZy5wdXNoKHtcclxuICAgICAgICAgIC4uLnNoZWxmLFxyXG4gICAgICAgICAgc3RhcnRZUG9zaXRpb246IHNoZWxmLnNoZWxmTnVtYmVyLFxyXG4gICAgICAgICAgZW5kWVBvc2l0aW9uOiBzaGVsZi5zaGVsZk51bWJlcixcclxuICAgICAgICAgIGNvbG9yOiB0aGlzLnNobGVmQ29sb3JbY291bnRdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvdW50Kys7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKChnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoLTFdLmVuZFlQb3NpdGlvbiArIDEpID09IHNoZWxmLnNoZWxmTnVtYmVyKSB7XHJcbiAgICAgICAgICBnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoLTFdLmVuZFlQb3NpdGlvbiA9IHNoZWxmLnNoZWxmTnVtYmVyO1xyXG4gICAgICAgICAgZ2V0U2VjdGlvbltnZXRTZWN0aW9uLmxlbmd0aC0xXS5wcm9kdWN0QnJhbmROYW1lID0gW1xyXG4gICAgICAgICAgICAuLi5nZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoLTFdLnByb2R1Y3RCcmFuZE5hbWUsXHJcbiAgICAgICAgICAgIC4uLnNoZWxmLnByb2R1Y3RCcmFuZE5hbWUsXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgICAgZ2V0U2VjdGlvbltnZXRTZWN0aW9uLmxlbmd0aC0xXS5wcm9kdWN0QnJhbmROYW1lPSBbLi4ubmV3IFNldChnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoLTFdLnByb2R1Y3RCcmFuZE5hbWUubWFwKChlbGU6YW55KSA9PiBlbGUpKV1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBzZWN0aW9uQ29uZmlnLnB1c2goe1xyXG4gICAgICAgICAgICAuLi5zaGVsZixcclxuICAgICAgICAgICAgc3RhcnRZUG9zaXRpb246IHNoZWxmLnNoZWxmTnVtYmVyLFxyXG4gICAgICAgICAgICBlbmRZUG9zaXRpb246IHNoZWxmLnNoZWxmTnVtYmVyLFxyXG4gICAgICAgICAgICBjb2xvcjogZ2V0U2VjdGlvbltnZXRTZWN0aW9uLmxlbmd0aCAtIDFdLmNvbG9yLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgLy8gdGhpcy5oYW5kbGV2bVBvc2l0aW9uKHNlY3Rpb25Db25maWcpO1xyXG4gICAgLy8gdGhpcy5oYW5kbGVTZWN0aW9uKHNlY3Rpb25Db25maWcpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm4gc2VjdGlvbkNvbmZpZztcclxuICB9XHJcblxyXG4gIGNvbmZpcm1hdGlvbihcclxuICAgIHR5cGU6IGFueSxcclxuICAgIF9pZDogYW55LFxyXG4gICAgYW5zd2VySWQ6IGFueSxcclxuICAgIGlzc3VlSWQ6IGFueSxcclxuICAgIERldGFpbHNJZDogYW55LFxyXG4gICAgdGFza1R5cGU6IGFueSxcclxuICAgIGlzc3VlVHlwZTogYW55XHJcbiAgKSB7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgX2lkOiBfaWQsXHJcbiAgICAgIGFuc3dlcklkOiBhbnN3ZXJJZCxcclxuICAgICAgaXNzdWVJZDogaXNzdWVJZCxcclxuICAgICAgRGV0YWlsc0lkOiBEZXRhaWxzSWQsXHJcbiAgICAgIHRhc2tUeXBlOiB0YXNrVHlwZSxcclxuICAgICAgaXNzdWVUeXBlOiBpc3N1ZVR5cGUsXHJcbiAgICAgIHBsYW5vSWQ6IHRoaXMuY3VycmVudFBsYW5vRGV0YWlscz8ucGxhbm9JZCxcclxuICAgICAgZmxvb3JJZDogdGhpcy5jdXJyZW50UGxhbm9EZXRhaWxzPy5faWQsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKENvbmZpcm1hdGlvblBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcIm1kXCIsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICAgIGJhY2tkcm9wOiBcInN0YXRpY1wiLFxyXG4gICAgICB3aW5kb3dDbGFzczogXCJjdXN0b20taGVpZ2h0LW1vZGFsXCIsIC8vIDwtLSBBZGQgYSBjdXN0b20gY2xhc3MgaGVyZVxyXG4gICAgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50eXBlID0gdHlwZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmlucHV0RGF0YSA9IHBheWxvYWQ7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInN1Ym1pdFwiKSB7XHJcbiAgICAgICAgdGhpcy5pc0FwcHJvdmVkLmVtaXQocmVzdWx0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbG9hZCgpIHtcclxuICAgIGxldCByZXN1bHQgPSB7XHJcbiAgICAgIHJlbG9hZDogdHJ1ZVxyXG4gICAgfVxyXG4gICAgdGhpcy5pc0FwcHJvdmVkLmVtaXQocmVzdWx0KTtcclxuICB9XHJcbiAgYXBwbHlGaWx0ZXJzKGV2ZW50OiBhbnkpIHtcclxuICAgIGxldCByZXN1bHQ6IGFueSA9IHt9XHJcbiAgICBpZiAoZXZlbnQ/Lmxlbmd0aCkge1xyXG4gICAgICBldmVudC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlbGVtZW50KVxyXG4gICAgICAgIGlmIChlbGVtZW50LkRlc2NyaXB0aW9uID09PSBcIlRhc2tcIikge1xyXG4gICAgICAgICAgcmVzdWx0LmZpbHRlckJ5VGFzayA9IGVsZW1lbnQuSXNzdWVzLm1hcCgodmFsOiBhbnkpID0+IHZhbD8uaWQpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09IFwiU3RhdHVzXCIpIHtcclxuICAgICAgICAgIHJlc3VsdC5maWx0ZXJCeVN0YXR1cyA9IGVsZW1lbnQuSXNzdWVzLm1hcCgodmFsOiBhbnkpID0+IHZhbD8uaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gXCJBcHByb3ZhbCBTdGF0dXNcIikge1xyXG4gICAgICAgICAgcmVzdWx0LmZpbHRlckJ5QXBwcm92YWxTdGF0dXMgPSBlbGVtZW50Lklzc3Vlcy5pZCA/IGVsZW1lbnQuSXNzdWVzLmlkIDogXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdClcclxuICAgICAgaWYgKHJlc3VsdC5maWx0ZXJCeUFwcHJvdmFsU3RhdHVzPy5sZW5ndGggPT09IDAgJiYgcmVzdWx0LmZpbHRlckJ5U3RhdHVzPy5sZW5ndGggPT09IDAgJiYgcmVzdWx0LmZpbHRlckJ5VGFzaz8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmVzdWx0LnJlbG9hZCA9IHRydWVcclxuICAgICAgICB0aGlzLmlzQXBwcm92ZWQuZW1pdChyZXN1bHQpO1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXNBcHByb3ZlZC5lbWl0KHJlc3VsdCk7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBoYW5kbGV2bVBvc2l0aW9uKHZtRGF0YTogYW55LCBpOiBhbnkpIHtcclxuICAgIGNvbnN0IHZpZXdQb3J0ID0gdGhpcy5ib2R5QmxvY2tSZWY/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBib2R5SGVpZ2h0ID0gdmlld1BvcnQ/Lm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IGJvZHlXaWR0aCA9IHZpZXdQb3J0Py5vZmZzZXRXaWR0aDtcclxuICAgIGxldCBzdHlsZTtcclxuICAgIC8vIHRoaXMudm1Db25maWcuZm9yRWFjaCgoZTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgIGxldCBzdGFydFNoZWxmID0gdm1EYXRhPy5zdGFydFlQb3NpdGlvbiA/PyAxO1xyXG4gICAgbGV0IGVuZFNoZWxmID0gdm1EYXRhPy5lbmRZUG9zaXRpb24gPz8gMTtcclxuICAgIGNvbnN0IHZtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ2bVwiICsgaSk7XHJcbiAgICBpZiAoIXZtKSByZXR1cm47XHJcblxyXG4gICAgbGV0IHdpZHRoID0gMTAwO1xyXG4gICAgbGV0IGhlaWdodCA9IDEwMDtcclxuICAgIGxldCB4ID0gMDtcclxuICAgIGxldCB5ID0gMDtcclxuXHJcbiAgICBsZXQgeVN0YXJ0ID0gMDtcclxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc3RhcnRTaGVsZiAtIDE7IGsrKykge1xyXG4gICAgICBjb25zdCBzaGVsZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hlbGZcIiArIGspIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIXNoZWxmKSByZXR1cm47XHJcblxyXG4gICAgICB5U3RhcnQgKz0gc2hlbGYub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwbGFjZW1lbnRIZWlnaHQgPSAwO1xyXG4gICAgZm9yIChsZXQgayA9IHN0YXJ0U2hlbGYgLSAxOyBrIDwgZW5kU2hlbGY7IGsrKykge1xyXG4gICAgICBjb25zdCBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaGVsZlwiICsgaykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmICghcykgcmV0dXJuO1xyXG4gICAgICBwbGFjZW1lbnRIZWlnaHQgKz0gcy5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoICh2bURhdGE/Lnhab25lKSB7XHJcbiAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgeCA9IDA7XHJcbiAgICAgICAgd2lkdGggPSAxMDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgIHdpZHRoID0gMTAwO1xyXG4gICAgICAgIHggPSBib2R5V2lkdGggLSB3aWR0aDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIm1pZGRsZVwiOlxyXG4gICAgICAgIHdpZHRoID0gMTAwO1xyXG4gICAgICAgIHggPSAoYm9keVdpZHRoIC0gd2lkdGgpIC8gMjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInN0cmV0Y2hcIjpcclxuICAgICAgICB3aWR0aCA9IGJvZHlXaWR0aDtcclxuICAgICAgICB4ID0gMDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHZtRGF0YT8ueVpvbmUpIHtcclxuICAgICAgY2FzZSBcInRvcFwiOlxyXG4gICAgICAgIGhlaWdodCA9IHBsYWNlbWVudEhlaWdodCA8IDEwMCA/IHBsYWNlbWVudEhlaWdodCAtIDIwIDogMTAwO1xyXG4gICAgICAgIHkgPSB5U3RhcnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJtaWRkbGVcIjpcclxuICAgICAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQgPCAxMDAgPyBwbGFjZW1lbnRIZWlnaHQgLSAyMCA6IDEwMDtcclxuICAgICAgICB5ID0gKHBsYWNlbWVudEhlaWdodCAtIGhlaWdodCkgLyAyICsgeVN0YXJ0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiYm90dG9tXCI6XHJcbiAgICAgICAgaGVpZ2h0ID0gcGxhY2VtZW50SGVpZ2h0IDwgMTAwID8gcGxhY2VtZW50SGVpZ2h0IC0gMjAgOiAxMDA7XHJcbiAgICAgICAgeSA9IHBsYWNlbWVudEhlaWdodCAtIGhlaWdodCArIHlTdGFydDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInN0cmV0Y2hcIjpcclxuICAgICAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQ7XHJcbiAgICAgICAgeSA9IHlTdGFydDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodm1EYXRhLm5ld1ZtKSB7XHJcbiAgICAgIHN0eWxlID0gYHdpZHRoOiR7d2lkdGh9cHg7aGVpZ2h0OiR7aGVpZ2h0fXB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoJHt4fXB4LCAke3l9cHgpO3otaW5kZXg6MjtgO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3R5bGUgPSBgd2lkdGg6JHt3aWR0aH1weDtoZWlnaHQ6JHtoZWlnaHR9cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSgke3h9cHgsICR7eX1weCk7YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3R5bGU7XHJcbiAgICAvLyB9KTtcclxuICB9XHJcbiAgaGFuZGxlU2VjdGlvbihzZWN0aW9uQ29uZmlnOiBhbnksIGk6IGFueSkge1xyXG4gICAgY29uc3Qgdmlld1BvcnQgPSB0aGlzLmJvZHlCbG9ja1JlZj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGJvZHlIZWlnaHQgPSB2aWV3UG9ydD8ub2Zmc2V0SGVpZ2h0O1xyXG4gICAgY29uc3QgYm9keVdpZHRoID0gdmlld1BvcnQ/Lm9mZnNldFdpZHRoO1xyXG5cclxuICAgIGxldCBzdHlsZTogYW55O1xyXG4gICAgLy8gT2JqZWN0LmtleXMoc2VjdGlvbkNvbmZpZykuZm9yRWFjaCgoZTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgIGxldCBzdGFydFNoZWxmID0gc2VjdGlvbkNvbmZpZz8uc3RhcnRZUG9zaXRpb24gPz8gMTtcclxuICAgIGxldCBlbmRTaGVsZiA9IHNlY3Rpb25Db25maWc/LmVuZFlQb3NpdGlvbiA/PyBzZWN0aW9uQ29uZmlnLmxlbmd0aDtcclxuICAgIGNvbnN0IHNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNlY3Rpb25cIiArIGkpO1xyXG4gICAgaWYgKCFzZWN0aW9uKSByZXR1cm47XHJcblxyXG4gICAgbGV0IHdpZHRoID0gMTAwO1xyXG4gICAgbGV0IGhlaWdodCA9IDUwO1xyXG4gICAgbGV0IHggPSAwO1xyXG4gICAgbGV0IHkgPSAwO1xyXG5cclxuICAgIGxldCB5U3RhcnQgPSAwO1xyXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBzdGFydFNoZWxmIC0gMTsgaysrKSB7XHJcbiAgICAgIGNvbnN0IHNoZWxmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaGVsZlwiICsgaykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmICghc2hlbGYpIHJldHVybjtcclxuXHJcbiAgICAgIHlTdGFydCArPSBzaGVsZi5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBsYWNlbWVudEhlaWdodCA9IDA7XHJcbiAgICBmb3IgKGxldCBrID0gc3RhcnRTaGVsZiAtIDE7IGsgPCBlbmRTaGVsZjsgaysrKSB7XHJcbiAgICAgIGNvbnN0IHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNoZWxmXCIgKyBrKSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgIGlmICghcykgcmV0dXJuO1xyXG4gICAgICBwbGFjZW1lbnRIZWlnaHQgKz0gcy5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICB4ID0gMTA7XHJcbiAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQgPCAxMDAgPyA0OCA6IDUwO1xyXG4gICAgLy8gaGVpZ2h0ID0gNTA7XHJcbiAgICB5ID0gKHBsYWNlbWVudEhlaWdodCAtIGhlaWdodCkgLyAyICsgeVN0YXJ0O1xyXG5cclxuICAgIHN0eWxlID0gYHdpZHRoOiR7d2lkdGh9cHg7aGVpZ2h0OiR7aGVpZ2h0fXB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoJHt4fXB4LCAke3l9cHgpYDtcclxuICAgIC8vIGxldCB2bURldGFpbHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgdm0tcGxhY2Vob2xkZXIke2l9YCk7XHJcbiAgICAvLyBpZiAodm1EZXRhaWxzKSB7XHJcbiAgICAvLyAgIHZtRGV0YWlscy5zdHlsZS5ib3JkZXIgPSBgMXB4IHNvbGlkICR7dGhpcy5zaGxlZkNvbG9yW2ldLmJvcmRlcn1gO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gc3R5bGUucHVzaCh7em9uZTplLHN0eWxlOnN0eWxlTGlzdH0pXHJcbiAgICAvLyB9KTtcclxuICAgIHJldHVybiBzdHlsZTtcclxuICB9XHJcblxyXG4gIGdldFN0YXJ0UG9zaXRpb24oc2hlbGZOdW1iZXI6bnVtYmVyLHpvbmU6YW55LHNoZWxmRGV0YWlsczphbnkpe1xyXG4gICAgc2hlbGZEZXRhaWxzID0gc2hlbGZEZXRhaWxzLmZpbmQoKGVsZTphbnkpID0+IGVsZS56b25lID09IHpvbmUgJiYgZWxlLnN0YXJ0WVBvc2l0aW9uID09IHNoZWxmTnVtYmVyKTtcclxuICAgIGlmKHNoZWxmRGV0YWlscykge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBnZXRFbmRQb3NpdGlvbihzaGVsZk51bWJlcjpudW1iZXIsem9uZTphbnksc2hlbGZEZXRhaWxzOmFueSl7XHJcbiAgICBzaGVsZkRldGFpbHMgPSBzaGVsZkRldGFpbHMuZmluZChcclxuICAgICAgKGVsZTogYW55KSA9PiBlbGUuem9uZSA9PSB6b25lICYmIGVsZS5lbmRZUG9zaXRpb24gPT0gc2hlbGZOdW1iZXJcclxuICAgICk7XHJcbiAgICBpZiAoc2hlbGZEZXRhaWxzKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBnZXRNaWRQb3NpdGlvbihzaGVsZk51bWJlcjpudW1iZXIsem9uZTphbnksc2hlbGZEZXRhaWxzOmFueSl7XHJcbiAgICBzaGVsZkRldGFpbHMgPSBzaGVsZkRldGFpbHMuZmluZChcclxuICAgICAgKGVsZTogYW55KSA9PiBlbGUuem9uZSA9PSB6b25lICYmIGVsZS5lbmRZUG9zaXRpb24gPj0gc2hlbGZOdW1iZXJcclxuICAgICk7XHJcbiAgICBpZiAoc2hlbGZEZXRhaWxzKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuIiwiPHNlY3Rpb24gKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxzZWN0aW9uICpuZ0lmPVwiIWxvYWRpbmdcIj5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGJvcmRlci1ib3R0b21cIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZVJlc3BvbnNlXCI+U3RvcmUgcmVzcG9uc2U8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5vcm1hbFRleHQgbWItNVwiPkNsaWNrIGEgZml4dHVyZSBvciB2aWV3IGFsbDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwic2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIiAoY2xpY2spPVwicmVsb2FkKClcIiAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHRleHQtcHJpbWFyeSBib3JkZXItMCBweC0zIHB5LTJcIlxyXG4gICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2VhZjZmZjsgYm9yZGVyLXJhZGl1czogMXJlbTtcIj5cclxuICAgICAgICBDbGVhciBGaWx0ZXJcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxsaWItZmlsdGVycyAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiIFtkYXRhT2JqZWN0XT1cImRhdGFPYmplY3RcIiAoYXBwbGllZEZpbHRlcnMpPVwiYXBwbHlGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgY2xhc3M9XCJtdC01XCIgKm5nSWY9XCJ2bUZlZWRiYWNrPy5sZW5ndGg+MFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgPGRpdiBuZ2JBY2NvcmRpb25JdGVtPVwiZGV0YWlsc1wiIFtjb2xsYXBzZWRdPVwib3BlbnZtXCIgY2xhc3M9XCJtYi01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0wXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgbGF5b3V0LUxiZWxcIj5cclxuICAgICAgICAgICAgICA8ZGl2PlZtIHZlcmlmaWNhdGlvbiBhc3NpZ25lZDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPnt7dm1GZWVkYmFja1swXT8udGFza0RhdGE/LmNyZWF0ZWRBdCB8ZGF0ZTogJ2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicHMtMCBwZS0wXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWRpdmlkZXIgbXQtMyBtcy01XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8udGFza0RhdGE/LmNyZWF0ZWRCeU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8udGFza0RhdGE/LmNyZWF0ZWRBdCB8ZGF0ZTogJ2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBBc3NpZ25lclxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8udGFza0RhdGE/LnVzZXJOYW1lIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZGl2aWRlciBtdC0zIG1zLTVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy50YXNrRGF0YT8udXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8udGFza0RhdGE/LnN1Ym1pdFRpbWVfc3RyaW5nfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQXNzaWduZWVcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1zLTNcIiAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgcC0zIG1lLTRcIiAqbmdJZj1cImNvbXBsZXRlZFZtPT09dm1GZWVkYmFjay5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMCAzTDQuNSA4LjVMMiA2XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5WbSBtYXRjaGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyIHAtMyBtZS00XCIgKm5nSWY9XCJjb21wbGV0ZWRWbSE9PXZtRmVlZGJhY2subGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYgNFY2TTYgOEg2LjAwNU0xMSA2QzExIDguNzYxNDIgOC43NjE0MiAxMSA2IDExQzMuMjM4NTggMTEgMSA4Ljc2MTQyIDEgNkMxIDMuMjM4NTggMy4yMzg1OCAxIDYgMUM4Ljc2MTQyIDEgMTEgMy4yMzg1OCAxMSA2WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+Vm0gbWlzbWF0Y2g8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC13YXJuaW5nIHAtM1wiICpuZ0lmPVwicGVuZGluZ1ZtaXNzdWVzPjBcIj5cclxuICAgICAgICAgICAgICAgICAge3twZW5kaW5nVm1pc3N1ZXN9fS97e3RvdGFsVm1pc3N1ZXN9fSBhY3Rpb24gcGVuZGluZ1xyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBwLTNcIiAqbmdJZj1cImFwcHJvdmVkVm1pc3N1ZXM+MCYmcGVuZGluZ1ZtaXNzdWVzPT09MFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e2FwcHJvdmVkVm1pc3N1ZXN9fS97e3RvdGFsVm1pc3N1ZXN9fSBhY3Rpb24gZG9uZVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicHJldmlvdXN0YXNrVm0odm10YXNrSW5kZXgsdm1GZWVkYmFjaylcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInZtdGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiF2bXRhc2tJbmRleFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNkw5IDEyTDE1IDE4XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyB2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGEuZml4dHVyZU5hbWV9fSAtIHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhLmZpeHR1cmVXaWR0aC52YWx1ZX19IHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhLmZpeHR1cmVXaWR0aC51bml0fX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7dm10YXNrSW5kZXgrMX19L3t7dm1GZWVkYmFjay5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwibmV4dHRhc2tWbSh2bXRhc2tJbmRleCx2bUZlZWRiYWNrKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwidm1GZWVkYmFjay5sZW5ndGg+dm10YXNrSW5kZXgrMVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxOEwxNSAxMkw5IDZcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIodm1GZWVkYmFjay5sZW5ndGgpPT09KHZtdGFza0luZGV4KzEpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkZpeHR1cmUgbmFtZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIFR5cGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2F0ZWdvcnl9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy52YWx1ZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlNpemUgKFdpZHRoKTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy51bml0fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Ub3RhbCBzaGVsdmVzOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZz8ubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXBhY2l0eVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Ub3RhbCBwcm9kdWN0IGNhcGFjaXR5OjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHl9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgUGxhbm9ncmFtIGRlc2lnblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgRml4dHVyZSBkZXNpZ25lZCBieSB0aGUgcGxhbm9ncmFtIHRlYW1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhbGwtdmlld3BvcnQgdy0xMDAgbXQtNVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImhlYWRlci1ibG9ja1wiIGNsYXNzPVwiaGVhZGVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCA/PyAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjYm9keUJsb2NrIGlkPVwiYm9keUJsb2NrXCIgY2xhc3M9XCJib2R5LWJsb2NrIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdm0gb2Ygdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy52bUNvbmZpZztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3ZtJyArIGlcIiBjbGFzcz1cInZtLWJsb2NrXCIgW3N0eWxlXT1cImhhbmRsZXZtUG9zaXRpb24odm0saSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInZtPy5pbWdTcmNcIiAqbmdJZj1cInZtPy5pbWdTcmNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjU3R5bGUgd29yZFdyYXBcIj57e3ZtPy52bU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzaGVsZkRhdGEgb2Ygdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkRldGFpbHM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzaGVsZicgKyBpXCIgY2xhc3M9XCJibG9jayBzaGVsZiBoaWRlLXNjcm9sbCBkLWJsb2NrIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzond2hpdGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6J3doaXRlJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBTaGVsZiBDYXBhY2l0eSA6IHt7c2hlbGZEYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIEZvb3RlciBibG9jayAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPiB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZm9vdGVyPy5sYWJlbCA/PyAnJ319PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uICNhY2NvcmRpb249XCJuZ2JBY2NvcmRpb25cIiBbY2xvc2VPdGhlcnNdPVwidHJ1ZVwiIGNsYXNzPVwibXQtNVwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXNzdWVzIG9mIHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5hbnN3ZXJzO2xldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uSXRlbT1cInt7ICduZXdkZXRhaWxzLScgKyBrIH19XCIgW2NvbGxhcHNlZF09XCJpdGVtLmNvbGxhcHNlZFwiIGNsYXNzPVwibWItNVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlzc3Vlcy5pc3N1ZXM7bGV0IGsgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiQWNjb3JkaW9uQnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0zIGJhY2tncm91bmRJbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4gKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgYmctd2FybmluZyByb3VuZGVkLWNpcmNsZSBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4O1wiPjwvc3Bhbj57e2l0ZW0/LnF1ZXN0aW9ufX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IG10LTVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0nVm1NaXNzaW5nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBhZGRpdGlvbmFsIFZNczoge3sgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZy5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0nZXh0cmFWbSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgYWRkaXRpb25hbCBWTXM6IHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1Db25maWcubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J1ZtTWlzbWF0Y2gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIG1pc3BsYWNlZCBWTXM6IHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1Db25maWcubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kSW1nIG10LTQgcHMtMyBweS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2bURhdGEgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J1ZtTWlzbWF0Y2gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/LnZtTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5WTSBOYW1lIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/LnZtTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/LnN0YXJ0WVBvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlBsYWNlbWVudCBzdGFydCA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlNoZWxmIHt7dm1EYXRhPy5zdGFydFlQb3NpdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8uZW5kWVBvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlBsYWNlbWVudCBFbmQgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5TaGVsZiB7e3ZtRGF0YT8uZW5kWVBvc2l0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy54Wm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Ib3Jpem9udGFsIHpvbmUgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRGF0YT8ueFpvbmV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/Lnlab25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlZlcnRpY2FsIHpvbmUgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRGF0YT8ueVpvbmV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/LnBvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnBvc2l0aW9uIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/LnBvc2l0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmlzc3VlVHlwZT09PSdWbU1pc21hdGNoJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5uZXdzdGFydFlQb3NpdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5QbGFjZW1lbnQgc3RhcnQgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5TaGVsZiB7e3ZtRGF0YT8ubmV3c3RhcnRZUG9zaXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/Lm5ld2VuZFlQb3NpdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5QbGFjZW1lbnQgRW5kIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+U2hlbGYge3t2bURhdGE/Lm5ld2VuZFlQb3NpdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8ubmV3eFpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+SG9yaXpvbnRhbCB6b25lIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/Lm5ld3hab25lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5uZXd5Wm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5WZXJ0aWNhbCB6b25lIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/Lm5ld3lab25lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5uZXdwb3NpdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5wb3NpdGlvbiA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1EYXRhPy5uZXdwb3NpdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZz8ubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSBSZXNwb25zZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRml4dHVyZSBmZWVkYmFjayBieSB0aGUgc3RvcmUgdGVhbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FsbC12aWV3cG9ydCB3LTEwMCBtdC01XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaGVhZGVyLWJsb2NrXCIgY2xhc3M9XCJoZWFkZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5oZWFkZXI/LmxhYmVsID8/ICcnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAjYm9keUJsb2NrIGlkPVwiYm9keUJsb2NrXCIgY2xhc3M9XCJib2R5LWJsb2NrIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdm0gb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZ25ldztsZXQgbT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3ZtJyArIG1cIiBjbGFzcz1cInZtLWJsb2NrXCIgW3N0eWxlXT1cImhhbmRsZXZtUG9zaXRpb24odm0sbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwidm0ubmV3Vm0gPyAncmVkQm9yZGVyJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInZtPy5pbWdTcmNcIiAqbmdJZj1cInZtPy5pbWdTcmNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjU3R5bGVcIj57e3ZtPy52bU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxoMz57eyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fTwvaDM+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzaGVsZicgKyBpXCIgY2xhc3M9XCJibG9jayBzaGVsZiBoaWRlLXNjcm9sbCBkLWJsb2NrIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzond2hpdGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6J3doaXRlJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGVsZiBDYXBhY2l0eSA6IHt7c2hlbGZEYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4ge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZvb3Rlcj8ubGFiZWwgPz8gJyd9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwiaXRlbT8uY29tbWVudHMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNFwiICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIGl0ZW0/LmNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dCBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGUhPT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiQWdyZWVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkIFwiPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nZGlzYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJEaXNhZ3JlZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0YWluZWQgZXhpc3RpbmdcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIiAqbmdJZj1cImNvbW1lbnQ/LmNvbW1lbnQhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90ZToge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTQgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XS5hbnN3ZXJzWzBdPy5pbWFnZSYmdm1GZWVkYmFja1t2bXRhc2tJbmRleF0uYW5zd2Vyc1swXT8uaW1hZ2UhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBmaXh0dXJlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdLmFuc3dlcnNbMF0/LmltYWdlfX1cIiBhbHQ9XCJpbWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtNCB3LTEwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTUgcm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zdGF0dXM9PT0ncGVuZGluZycmJnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3by10b25lLWJ0biBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdhZ3JlZScsdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5faWQsJ3ZtJyxpdGVtLmlzc3VlVHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZ3JlZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2Rpc2FncmVlJyx2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uX2lkLGlzc3Vlcy5faWQsaXRlbS5faWQsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5faWQsJ3ZtJyxpdGVtLmlzc3VlVHlwZSlcIj5EaXNhZ3JlZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaXNzdWVzPy5sZW5ndGg9PT0wXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTQgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSYmdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBmaXh0dXJlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwie3tjZG5Vcmx9fXt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlfX1cIiBhbHQ9XCJpbWFnZVwiIGNsYXNzPVwibXQtNCB3LTEwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uY29tbWVudHMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiB2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uY29tbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0IGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlIT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiQWdyZWVkLCB1cGRhdGVkXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsIHJldGFpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCIgKm5nSWY9XCJjb21tZW50Py5jb21tZW50IT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgTm90ZToge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwib3JpZ2luYWxEYXRhLnZtQ29tbWVudC5sZW5ndGg+MCYmICFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2Ygb3JpZ2luYWxEYXRhLnZtQ29tbWVudFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jcmVhdGVkQXR8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIiAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3Q/Lmxlbmd0aD4wXCI+XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJkZXRhaWxzZml4dHVyZVwiIFtjb2xsYXBzZWRdPVwib3BlbmZpeHR1cmVcIiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZyBwLTBcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMiBsYXlvdXQtTGJlbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXY+Rml4dHVyZSB2ZXJpZmljYXRpb24gYXNzaWduZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj57e3N0b3JlRml4dHVyZUxpc3RbMF0/LnRhc2tEYXRhPy5jcmVhdGVkQXQgfGRhdGU6ICdoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInBzLTAgcGUtMFwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1kaXZpZGVyIG10LTMgbXMtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8udGFza0RhdGE/LmNyZWF0ZWRCeU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy50YXNrRGF0YT8uY3JlYXRlZEF0IHxkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEFzc2lnbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy50YXNrRGF0YT8udXNlck5hbWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1kaXZpZGVyIG10LTMgbXMtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8udGFza0RhdGE/LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8udGFza0RhdGE/LnN1Ym1pdFRpbWVfc3RyaW5nfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQXNzaWduZWVcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1zLTNcIiAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgcC0zIG1lLTRcIiAqbmdJZj1cImNvbXBsZXRlZEZpeHR1cmU9PT1zdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDNMNC41IDguNUwyIDZcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkZpeHR1cmUgbWF0Y2hlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBwLTMgbWUtNFwiICpuZ0lmPVwiY29tcGxldGVkRml4dHVyZSE9PXN0b3JlRml4dHVyZUxpc3QubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYgNFY2TTYgOEg2LjAwNU0xMSA2QzExIDguNzYxNDIgOC43NjE0MiAxMSA2IDExQzMuMjM4NTggMTEgMSA4Ljc2MTQyIDEgNkMxIDMuMjM4NTggMy4yMzg1OCAxIDYgMUM4Ljc2MTQyIDEgMTEgMy4yMzg1OCAxMSA2WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+Rml4dHVyZSBtaXNtYXRjaDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgcC0zXCIgKm5nSWY9XCJwZW5kaW5nRml4dHVyZWlzc3Vlcz4wXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7cGVuZGluZ0ZpeHR1cmVpc3N1ZXN9fS97e3RvdGFsRml4dHVyZWlzc3Vlc319IGFjdGlvbiBwZW5kaW5nXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIHAtM1wiICpuZ0lmPVwiYXBwcm92ZWRGaXh0dXJlaXNzdWVzPjAmJnBlbmRpbmdGaXh0dXJlaXNzdWVzPT09MFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e2FwcHJvdmVkRml4dHVyZWlzc3Vlc319L3t7dG90YWxGaXh0dXJlaXNzdWVzfX0gYWN0aW9uIGRvbmVcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInByZXZpb3VzdGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleCxzdG9yZUZpeHR1cmVMaXN0KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZml4dHVyZXRhc2tJbmRleFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNkw5IDEyTDE1IDE4XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZml4dHVyZXRhc2tJbmRleFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNkw5IDEyTDE1IDE4XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YS5maXh0dXJlTmFtZX19IC0ge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YS5maXh0dXJlV2lkdGgudmFsdWV9fSB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhLmZpeHR1cmVXaWR0aC51bml0fX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7Zml4dHVyZXRhc2tJbmRleCsxfX0ve3tzdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJuZXh0dGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleCxzdG9yZUZpeHR1cmVMaXN0KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdC5sZW5ndGg+Zml4dHVyZXRhc2tJbmRleCsxXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIihzdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aCk9PT0oZml4dHVyZXRhc2tJbmRleCsxKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxOEwxNSAxMkw5IDZcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kSW1nIG10LTQgcHMtMyBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkZpeHR1cmUgbmFtZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Rml4dHVyZSBUeXBlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaXplIChXaWR0aCk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlV2lkdGg/LnVuaXR9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgc2hlbHZlczo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZz8ubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhcGFjaXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlRvdGFsIHByb2R1Y3QgY2FwYWNpdHk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhcGFjaXR5fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSBkZXNpZ25cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgIEZpeHR1cmUgZGVzaWduZWQgYnkgdGhlIHBsYW5vZ3JhbSB0ZWFtXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0IHctMTAwIG10LTVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCA/PyAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjYm9keUJsb2NrIGlkPVwiYm9keUJsb2NrXCIgY2xhc3M9XCJib2R5LWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2Ygc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25LZXlzO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ1cGRhdGVTdHlsZShzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidm0tcGxhY2Vob2xkZXJcIiBbaWRdPVwiJ3ZtLXBsYWNlaG9sZGVyJyArIGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCInYm9yZGVyOjFweCBzb2xpZCAnK3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5jb2xvcj8uYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LmNvbG9yPy50ZXh0QmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjpzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uY29sb3I/LnRleHR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0b29sdGlwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8udG9TdHJpbmcoKX19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNTdHlsZSB3b3JkV3JhcFwiIFtuZ2JUb29sdGlwXT1cInRvb2x0aXBcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzaGVsZkRhdGEgb2Ygc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNoZWxmRGV0YWlsczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NoZWxmJyArIGlcIiBjbGFzcz1cImJsb2NrIHNoZWxmIGhpZGUtc2Nyb2xsIGQtYmxvY2sgdGV4dC1lbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtY29sb3InOihzaGVsZkRhdGE/LnpvbmUgfHwgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT09ICdMMScpID8gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnpvbmVDb2xvcltzaGVsZkRhdGEuem9uZV0/LmNvbG9yPy5iZyA6IHNobGVmQ29sb3JbaV0uYmd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOihzaGVsZkRhdGE/LnpvbmUgfHwgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT09ICdMMScpID8gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnpvbmVDb2xvcltzaGVsZkRhdGEuem9uZV0/LmNvbG9yPy50ZXh0QmcgOiBzaGxlZkNvbG9yW2ldLnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOihzaGVsZkRhdGE/LnpvbmUgfHwgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT09ICdMMScpID8gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnpvbmVDb2xvcltzaGVsZkRhdGEuem9uZV0/LmNvbG9yPy50ZXh0IDogc2hsZWZDb2xvcltpXS50ZXh0fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNoZWxmIENhcGFjaXR5IDoge3tzaGVsZkRhdGE/LnByb2R1Y3RQZXJTaGVsZn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIEZvb3RlciBibG9jayAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPiB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5mb290ZXI/LmxhYmVsID8/ICcnfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgY2xhc3M9XCJtdC01XCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpc3N1ZXMgb2Ygc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2VycztsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJ7eyAnbmV3ZGV0YWlscy0nICsgayB9fVwiIFtjb2xsYXBzZWRdPVwiaXRlbS5jb2xsYXBzZWRcIiBjbGFzcz1cIm1iLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlzc3Vlcy5pc3N1ZXM7bGV0IGsgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiQWNjb3JkaW9uQnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0zIGJhY2tncm91bmRJbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gPHNwYW4gKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgYmctd2FybmluZyByb3VuZGVkLWNpcmNsZSBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4O1wiPjwvc3Bhbj57e2l0ZW0/LnF1ZXN0aW9ufX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC01XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIFR5cGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlQ2F0ZWdvcnl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmV0ZW1wbGF0ZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VGVtcGxhdGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJldGVtcGxhdGVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J3NpemVXcm9uZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+U2l6ZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVXaWR0aD8udmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVXaWR0aD8udW5pdH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J3Byb2R1Y3RjYXRlZ29yeVdyb25nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtaXNzaW5nIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubWlzc2luZ0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cIm1pc3Npbmc/LnpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj57e21pc3Npbmc/LnpvbmV9fTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBtaXNzaW5nPy5wcm9kdWN0Q2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmQgYmFkZ2UgXCI+e3tjYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J2JyYW5kV3JvbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1pc3Npbmcgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5taXNzaW5nRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwibWlzc2luZz8uem9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnt7bWlzc2luZz8uem9uZX19OjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnJhbmQgb2YgbWlzc2luZz8uYnJhbmRcIiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmQgYmFkZ2UgbS0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMy44NDNweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZCc6ICd2YXIoLS1HcmF5LTEwMCwgI2ViZWVmMyknfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YnJhbmR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5pc3N1ZVR5cGUhPT0nYnJhbmRXcm9uZycmJml0ZW0/Lmlzc3VlVHlwZSE9PSdwcm9kdWN0Y2F0ZWdvcnlXcm9uZydcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpeHR1cmVMaXN0IG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZDb25maWdGb3JtYXRlZFwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsIHRleHQtY2FwaXRhbGl6ZVwiPnt7Zml4dHVyZUxpc3Q/LnpvbmV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTkgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0Zvcj1cImxldCBzaGxlZmRhdGEgb2YgZml4dHVyZUxpc3Q/Lml0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsIHRleHQtY2FwaXRhbGl6ZVwiPnt7c2hsZWZkYXRhPy5zaGVsZlR5cGV9fSB7e3NobGVmZGF0YT8uc2hlbGZOdW1iZXJ9fTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jYXBpdGFsaXplXCIgPkNhcGFjaXR5OiA8c3BhbiBjbGFzcz1cImxheW91dExhYmVsXCI+e3tzaGxlZmRhdGE/LnByb2R1Y3RQZXJTaGVsZn19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCIgKm5nRm9yPVwibGV0IGJyYW5kcyBvZiBzaGxlZmRhdGE/LnByb2R1Y3RCcmFuZE5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5IG1lLTMgbWItMlwiPnt7YnJhbmRzfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbktleXM/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgUmVzcG9uc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSByZXNwb25zZSBieSB0aGUgc3RvcmUgdGVhbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FsbC12aWV3cG9ydCB3LTEwMCBtdC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIlsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pID8gJ2JvcmRlcjoxcHggc29saWQgcmVkJyA6ICcnXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaGVhZGVyLWJsb2NrXCIgY2xhc3M9XCJoZWFkZXItYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKTtiYWNrZ3JvdW5kOiAjRjJGM0Y3O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCA/PyAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2tcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ3Byb2R1Y3RjYXRlZ29yeVdyb25nJywgJ2JyYW5kV3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5pc3N1ZVR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uS2V5cztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAwLjk2OXB4IHNvbGlkIHZhcigtLUdyYXktMzAwLCAjRDBENUREKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEzLjg0M3B4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnOiAndmFyKC0tR3JheS0xMDAsICNlYmVlZjMpJ31cIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/Lmxlbmd0aCA/J2RhbmdlcicgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCkgPz8gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCl9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlY1N0eWxlIHdvcmRXcmFwXCIgW25nYlRvb2x0aXBdPVwidG9vbHRpcFwiIFtuZ0NsYXNzXT1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8ubGVuZ3RoID8gJ2RhbmdlcicgOiAnJ1wiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF0gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXX19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIVsncHJvZHVjdGNhdGVnb3J5V3JvbmcnLCAnYnJhbmRXcm9uZyddLmluY2x1ZGVzKGl0ZW0/Lmlzc3VlVHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uS2V5cztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2bS1wbGFjZWhvbGRlclwiIFtpZF09XCIndm0tcGxhY2Vob2xkZXInICsgaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlcjogMC45NjlweCBzb2xpZCB2YXIoLS1HcmF5LTMwMCwgI0QwRDVERCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMy44NDNweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kJzogJ3ZhcigtLUdyYXktMTAwLCAjZWJlZWYzKSd9XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy56b25lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCl9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlY1N0eWxlIHdvcmRXcmFwXCIgW25nYlRvb2x0aXBdPVwidG9vbHRpcFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF19fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzaGVsZkRhdGEgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zaGVsZkRldGFpbHM7IGxldCBpID0gaW5kZXhcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci10b3AnOihnZXRTdGFydFBvc2l0aW9uKGkrMSxzaGVsZkRhdGEuem9uZSxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWcpICYmICFbJ0ZpeHR1cmUgdHlwZSBpcyB3cm9uZycsJ0ZpeHR1cmUgc2l6ZSBpcyB3cm9uZyddLmluY2x1ZGVzKGl0ZW0/LnF1ZXN0aW9uKSkgID8gJzAuNzcxcHggc29saWQgcmVkJyA6ICcwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItYm90dG9tJzooZ2V0RW5kUG9zaXRpb24oaSsxLHNoZWxmRGF0YS56b25lLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZykgJiYgIVsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pKSA/ICcgMC43NzFweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1sZWZ0JzooZ2V0TWlkUG9zaXRpb24oaSsxLHNoZWxmRGF0YS56b25lLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZykgJiYgIVsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pKSA/ICcgMC43NzFweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yaWdodCc6KGdldE1pZFBvc2l0aW9uKGkrMSxzaGVsZkRhdGEuem9uZSxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWcpICYmICFbJ0ZpeHR1cmUgdHlwZSBpcyB3cm9uZycsJ0ZpeHR1cmUgc2l6ZSBpcyB3cm9uZyddLmluY2x1ZGVzKGl0ZW0/LnF1ZXN0aW9uKSkgPyAnIDAuNzcxcHggc29saWQgcmVkJyA6ICcwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1HcmF5LTEwMCwgI2Y4ZjlmYiknLH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnMTMuODQzcHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnOiAndmFyKC0tR3JheS0xMDAsICNlYmVlZjMpJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGVsZiBDYXBhY2l0eSA6IHt7c2hlbGZEYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4ge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZm9vdGVyPy5sYWJlbCA/PyAnJ319PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cIml0ZW0/LmNvbW1lbnRzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBpdGVtPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHQgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlIT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtlZCBhcyA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkFncmVlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZCBcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldGFpbmVkIGV4aXN0aW5nXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCIgKm5nSWY9XCJjb21tZW50Py5jb21tZW50IT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2UmJnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgZml4dHVyZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7e2NkblVybH19e3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZX19XCIgYWx0PVwiaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01IHJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc3RhdHVzPT09J3BlbmRpbmcnJiZzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0d28tdG9uZS1idG4gbWUtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbignYWdyZWUnLHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5faWQsJ2ZpeHR1cmUnLGl0ZW0uaXNzdWVUeXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFncmVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbignZGlzYWdyZWUnLHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uX2lkLCdmaXh0dXJlJyxpdGVtLmlzc3VlVHlwZSlcIj5EaXNhZ3JlZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pc3N1ZXM/Lmxlbmd0aD09PTBcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmNvbW1lbnRzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHQgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGUhPT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXJrZWQgYXMgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJBZ3JlZWQsIHVwZGF0ZWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsIHJldGFpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCIgKm5nSWY9XCJjb21tZW50Py5jb21tZW50IT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgTm90ZToge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSYmc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2UhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlN0b3JlIGZpeHR1cmU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7e2NkblVybH19e3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZX19XCIgYWx0PVwiaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtNCB3LTEwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cIm9yaWdpbmFsRGF0YS5maXh0dXJlQ29tbWVudC5sZW5ndGg+MCYmICFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2Ygb3JpZ2luYWxEYXRhLmZpeHR1cmVDb21tZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNyZWF0ZWRBdHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIiAqbmdJZj1cImxheW91dEZlZWRiYWNrLmxlbmd0aD4wXCI+XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJ7eyAnZGV0YWlscy0nICsgaSB9fVwiIFtjb2xsYXBzZWRdPVwiZmVlZGJhY2suY29sbGFwc2VkXCIgKGhlYWRlckNsaWNrKT1cInRvZ2dsZVBhbmVsKGkpXCJcclxuICAgICAgICBjbGFzcz1cIm1iLTVcIiAqbmdGb3I9XCJsZXQgZmVlZGJhY2sgb2YgbGF5b3V0RmVlZGJhY2s7bGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1haW5oZWFkaW5nIHAtMFwiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZlZWRiYWNrPy50YXNrVHlwZT09PSdpbml0aWFsJ1wiPkxheW91dCB2ZXJpZmljYXRpb24gYXNzaWduZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmVlZGJhY2s/LnRhc2tUeXBlPT09J3JlZG8nXCI+TGF5b3V0IHZlcmlmaWNhdGlvbiByZS1hc3NpZ25lZDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPnt7ZmVlZGJhY2s/LnRhc2tEYXRhPy5jcmVhdGVkQXQgfGRhdGU6ICdoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInBzLTAgcGUtMFwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1kaXZpZGVyIG10LTMgbXMtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ZmVlZGJhY2s/LnRhc2tEYXRhPy5jcmVhdGVkQnlOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ZmVlZGJhY2s/LnRhc2tEYXRhPy5jcmVhdGVkQXQgfGRhdGU6ICdoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQXNzaWduZXJcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiAqbmdJZj1cImZlZWRiYWNrPy50YXNrRGF0YT8udXNlck5hbWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1kaXZpZGVyIG10LTMgbXMtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ZmVlZGJhY2s/LnRhc2tEYXRhPy51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2ZlZWRiYWNrPy50YXNrRGF0YT8uc3VibWl0VGltZV9zdHJpbmd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBBc3NpZ25lZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtM1wiICpuZ0lmPVwiIXNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBwLTMgbWUtNFwiICpuZ0lmPVwiZmVlZGJhY2s/LnN0YXR1cz09PSdjb21wbGV0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMCAzTDQuNSA4LjVMMiA2XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5MYXlvdXQgbWF0Y2hlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBwLTMgbWUtNFwiICpuZ0lmPVwiZmVlZGJhY2s/LnN0YXR1cz09PSdpbmNvbXBsZXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk02IDRWNk02IDhINi4wMDVNMTEgNkMxMSA4Ljc2MTQyIDguNzYxNDIgMTEgNiAxMUMzLjIzODU4IDExIDEgOC43NjE0MiAxIDZDMSAzLjIzODU4IDMuMjM4NTggMSA2IDFDOC43NjE0MiAxIDExIDMuMjM4NTggMTEgNlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0YwNDQzOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkxheW91dCBtaXNtYXRjaDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgcC0zXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmZWVkYmFjaz8uc3RhdHVzPT09J2luY29tcGxldGUnJiZwZW5kaW5nTGF5b3V0aXNzdWVzPjBcIj5cclxuICAgICAgICAgICAgICAgICAge3twZW5kaW5nTGF5b3V0aXNzdWVzfX0ve3tmZWVkYmFjaz8uYW5zd2Vyc1swXT8uaXNzdWVzPy5sZW5ndGh9fSBhY3Rpb24gcGVuZGluZ1xyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBwLTNcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImZlZWRiYWNrPy5zdGF0dXM9PT0naW5jb21wbGV0ZScmJmFwcHJvdmVkTGF5b3V0aXNzdWVzPjAmJnBlbmRpbmdMYXlvdXRpc3N1ZXM9PT0wXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7YXBwcm92ZWRMYXlvdXRpc3N1ZXN9fS97e2ZlZWRiYWNrPy5hbnN3ZXJzWzBdPy5pc3N1ZXM/Lmxlbmd0aH19IGFjdGlvbiBkb25lXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGlzc3VlcyBvZiBmZWVkYmFjay5hbnN3ZXJzO2xldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc3N1ZXM/Lmlzc3Vlcz8ubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25JdGVtPVwie3sgJ25ld2RldGFpbHMtJyArIGsgfX1cIiBbY29sbGFwc2VkXT1cImlzc3Vlcy5jb2xsYXBzZWRcIiBjbGFzcz1cIm1iLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlzc3Vlcy5pc3N1ZXM7bGV0IGsgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiQWNjb3JkaW9uQnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0zIGJhY2tncm91bmRJbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4gKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgYmctd2FybmluZyByb3VuZGVkLWNpcmNsZSBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4O1wiPjwvc3Bhbj57e2l0ZW0/LnF1ZXN0aW9ufX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2Pnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlTmFtZX19PC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJwcmV2aW91c0ZpeHR1cmUoZml4dHVyZUluZGV4LGl0ZW0/LkRldGFpbHMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJmaXh0dXJlSW5kZXhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDZMOSAxMkwxNSAxOFwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWZpeHR1cmVJbmRleFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNkw5IDEyTDE1IDE4XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Zml4dHVyZUluZGV4KzF9fS97e2l0ZW0/LkRldGFpbHMubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm5leHRGaXh0dXJlKGZpeHR1cmVJbmRleCxpdGVtPy5EZXRhaWxzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXRlbT8uRGV0YWlscy5sZW5ndGg+Zml4dHVyZUluZGV4KzFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiKGl0ZW0/LkRldGFpbHMubGVuZ3RoKT09PShmaXh0dXJlSW5kZXgrMSlcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZEltZyBtdC00IHBzLTMgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZUNhdGVnb3J5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkZpeHR1cmUgVHlwZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVDYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZVRlbXBsYXRlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5UZW1wbGF0ZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVUZW1wbGF0ZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpeHR1cmVMaXN0IG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZDb25maWdGb3JtYXRlZFwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsIHRleHQtY2FwaXRhbGl6ZVwiPnt7Zml4dHVyZUxpc3Q/LnpvbmV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOSBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0Zvcj1cImxldCBzaGxlZmRhdGEgb2YgZml4dHVyZUxpc3Q/Lml0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWwgdGV4dC1jYXBpdGFsaXplXCI+e3tzaGxlZmRhdGE/LnNoZWxmVHlwZX19IHt7c2hsZWZkYXRhPy5zaGVsZk51bWJlcn19OjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jYXBpdGFsaXplXCIgPkNhcGFjaXR5OiA8c3BhbiBjbGFzcz1cImxheW91dExhYmVsXCI+e3tzaGxlZmRhdGE/LnByb2R1Y3RQZXJTaGVsZn19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0Zvcj1cImxldCBicmFuZHMgb2Ygc2hsZWZkYXRhPy5wcm9kdWN0QnJhbmROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1zZWNvbmRhcnkgbWUtMyBtYi0yXCI+e3ticmFuZHN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5hc3NvY2lhdGVkRWxlbWVudFR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+TG9jYXRpb246PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmFzc29jaWF0ZWRFbGVtZW50VHlwZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uYXNzb2NpYXRlZEVsZW1lbnROdW1iZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Qb3NpdGlvbjo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj4oTCB0byBSKTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5hc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubmV3YXNzb2NpYXRlZEVsZW1lbnRUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPk5ldyBMb2NhdGlvbjo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubmV3YXNzb2NpYXRlZEVsZW1lbnRUeXBlfX17e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubmV3YXNzb2NpYXRlZEVsZW1lbnROdW1iZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Lm5ld2Fzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5OZXcgUG9zaXRpb246PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+KEwgdG8gUik8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubmV3YXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbktleXM/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0nZXh0cmFGaXh0dXJlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSBGaXh0dXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaXh0dXJlIGZlZWRiYWNrIGJ5IHRoZSBzdG9yZSB0ZWFtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGUhPT0nZXh0cmFGaXh0dXJlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGFub2dyYW0gZml4dHVyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmVsb3cgZml4dHVyZSBpcyBpbiB0aGUgcGxhbm9ncmFtIGJ1dCBub3QgaW4gc3RvcmUuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FsbC12aWV3cG9ydCB3LTEwMCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSGVhZGVyIGJsb2NrIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaGVhZGVyLWJsb2NrXCIgY2xhc3M9XCJoZWFkZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5oZWFkZXI/LmxhYmVsID8/ICcnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBCb2R5IGJsb2NrIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2tcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbktleXM7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzZWN0aW9uJyArIGlcIiBjbGFzcz1cInZtLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidm0tcGxhY2Vob2xkZXJcIiBbaWRdPVwiJ3ZtLXBsYWNlaG9sZGVyJyArIGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCInYm9yZGVyOjFweCBzb2xpZCAnKyB0aGlzLnNobGVmQ29sb3JbaV0uYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uY29sb3I/LnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjppdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LmNvbG9yPy50ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCl9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY1N0eWxlIHdvcmRXcmFwXCIgW25nYlRvb2x0aXBdPVwidG9vbHRpcFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEBpZihpdGVtLnNoZWxmVHlwZSA9PT0nc2hlbGYnKXsgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NoZWxmJyArIGlcIiBjbGFzcz1cImJsb2NrIHNoZWxmIGhpZGUtc2Nyb2xsIGQtYmxvY2sgdGV4dC1lbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzpzaGVsZkRhdGE/LnpvbmUgPyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnpvbmVDb2xvcltzaGVsZkRhdGE/LnpvbmVdPy5jb2xvcj8uYmcgOiBzaGxlZkNvbG9yW2ldLmJnfVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uem9uZUNvbG9yW3NoZWxmRGF0YT8uem9uZV0/LmNvbG9yPy50ZXh0QmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy56b25lQ29sb3Jbc2hlbGZEYXRhPy56b25lXT8uY29sb3I/LnRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGVsZiBDYXBhY2l0eSA6IHt7c2hlbGZEYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGb290ZXIgYmxvY2sgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4ge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZvb3Rlcj8ubGFiZWwgPz8gJyd9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uaW1hZ2UmJml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uaW1hZ2UhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBmaXh0dXJlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uaW1hZ2V9fVwiIGFsdD1cImltYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC00IHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5jb21tZW50cy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZSE9PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXJrZWQgYXMgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJBZ3JlZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldGFpbmVkIGV4aXN0aW5nXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCIgKm5nSWY9XCJjb21tZW50Py5jb21tZW50IT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01IHJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc3RhdHVzPT09J3BlbmRpbmcnJiZzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZHx8aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zdGF0dXM9PT0ncGVuZGluZycmJml0ZW0uaXNzdWVUeXBlPT09J290aGVycydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHdvLXRvbmUtYnRuIG1lLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2FncmVlJyxmZWVkYmFjaz8uX2lkLGlzc3Vlcy5faWQsaXRlbS5faWQsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdLl9pZCwnbGF5b3V0JyxpdGVtLmlzc3VlVHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZ3JlZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2Rpc2FncmVlJyxmZWVkYmFjaz8uX2lkLGlzc3Vlcy5faWQsaXRlbS5faWQsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5faWQsJ2xheW91dCcsaXRlbS5pc3N1ZVR5cGUpXCI+RGlzYWdyZWU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctMTAwXCIgKm5nSWY9XCJmZWVkYmFjaz8uYW5zd2Vyc1swXT8udmlkZW8mJmZlZWRiYWNrPy5hbnN3ZXJzWzBdPy52aWRlbyE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBWaWRlbzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDx2aWRlbyBjb250cm9scyBzcmM9XCJ7e2NkblVybH19e3tmZWVkYmFjaz8uYW5zd2Vyc1swXT8udmlkZW99fVwiIGNsYXNzPVwibXQtNCB3LTEwMFwiPjwvdmlkZW8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwib3JpZ2luYWxEYXRhLmxheW91dENvbW1lbnQubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2Ygb3JpZ2luYWxEYXRhLmxheW91dENvbW1lbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jcmVhdGVkQXR8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gXHJcblxyXG4gIDxkaXYgY2xhc3M9XCJtdC01XCIgKm5nSWY9XCJsYXlvdXRGZWVkYmFjaz8ubGVuZ3RoPT09MCYmc3RvcmVGaXh0dXJlTGlzdD8ubGVuZ3RoPT09MCYmdm1GZWVkYmFjaz8ubGVuZ3RoPT09MCYmIWxvYWRpbmdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjk0XCIgaGVpZ2h0PVwiOTRcIiB2aWV3Qm94PVwiMCAwIDk0IDk0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCIxMy4zMzMzXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZD1cIk0zNS45NTAyIDQ4LjE5OTdDMzUuNjQ4OSA0OC4yMzE1IDM1LjM0MjIgNDguMjUwNSAzNS4wMzEyIDQ4LjI1MDVDMzQuODYxNyA0OC4yNTA1IDM0LjY5NDQgNDguMjQzNiAzNC41MjkzIDQ4LjIzMzlWNTguNjA2OUMzNC41MjkzIDYwLjAzNDkgMzUuNzEyMyA2MS4yMjYgMzcuMjAwMiA2MS4yMjYxSDU2LjgwNDdDNTguMjkyNyA2MS4yMjYxIDU5LjQ3NTYgNjAuMDM1IDU5LjQ3NTYgNTguNjA2OVY0OC4yMzQ5QzU5LjMxMzcgNDguMjQ0MSA1OS4xNDk4IDQ4LjI1MDUgNTguOTg1NCA0OC4yNTA1QzU4LjY3MTQgNDguMjUwNSA1OC4zNjA4IDQ4LjIzMjUgNTguMDU0NyA0OC4xOTk3VjU1Ljk4NzhIMzUuOTUwMlY0OC4xOTk3Wk01Ny45MzE2IDMyLjc3MzlIMzYuMDczMkMzNS44OTU5IDMyLjc3MzkgMzUuNzQwNiAzMi44NjY3IDM1LjY2MzEgMzIuOTg3OEwzNS42NjExIDMyLjk4OTdMMzIuMTUxNCAzOC40NzMxTDMyLjA1NjYgMzguNjIwNkMzMC44MzExIDQwLjc0MDQgMzIuMDk1NyA0My40Njc0IDM0LjQ0NzMgNDMuNzc2OUMzNC42NDgyIDQzLjgwMTMgMzQuODM3OSA0My44MTU5IDM1LjAyNTQgNDMuODE1OUMzNi4yNTU1IDQzLjgxNTkgMzcuMzQzNCA0My4yODcyIDM4LjEwMDYgNDIuNDY1M0wzOS4wMjI1IDQxLjQ2NDRMMzkuOTQxNCA0Mi40NjgzQzQwLjY5MDMgNDMuMjg2MyA0MS43NzcgNDMuODE1OSA0My4wMTQ2IDQzLjgxNTlDNDQuMjQ2NyA0My44MTU4IDQ1LjMzODYgNDMuMjg1NiA0Ni4wODY5IDQyLjQ2ODNMNDcuMDA4OCA0MS40NjE0TDQ3LjkzMDcgNDIuNDY4M0M0OC42NzkgNDMuMjg1NyA0OS43NzA3IDQzLjgxNTkgNTEuMDAyOSA0My44MTU5QzUyLjIzNTEgNDMuODE1OSA1My4zMjY4IDQzLjI4NTcgNTQuMDc1MiA0Mi40NjgzTDU0Ljk5NzEgNDEuNDYxNEw1NS45MTg5IDQyLjQ2ODNDNTYuNjY3MyA0My4yODU3IDU3Ljc2IDQzLjgxNTkgNTguOTkyMiA0My44MTU5QzU5LjE3MzYgNDMuODE1OSA1OS4zNjg3IDQzLjgwMjEgNTkuNTY4NCA0My43Nzc4SDU5LjU2NzRDNjEuOTYxMSA0My40NTczIDYzLjIyOTMgNDAuNjA3OCA2MS44NjEzIDM4LjQ3MzFMNjEuODYwNCAzOC40NzQxTDU4LjM0MzggMzIuOTkwN0w1OC4zNDI4IDMyLjk4NzhDNTguMjY1MyAzMi44NjY1IDU4LjEwOTIgMzIuNzczOSA1Ny45MzE2IDMyLjc3MzlaXCJcclxuICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyLjVcIiAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm10LTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGQgaDMgbXQtMlwiPk5vIGlzc3VlPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+VGhlIHN0b3JlIGRpZCBub3QgZmxhZyBpdCBhcyBhbiBpc3N1ZS48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+Il19
|