tango-app-ui-store-builder 1.0.47 → 1.0.49
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/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.mjs +39 -19
- package/esm2022/lib/components/create-fixture/create-fixture.component.mjs +233 -138
- package/esm2022/lib/components/fixture-template/template-assign-stores/preview-modal/preview-modal.component.mjs +4 -2
- package/esm2022/lib/components/fixture-template/template-assign-stores/template-assign-stores.component.mjs +4 -2
- package/esm2022/lib/components/fixture-template/template-basic-details/template-basic-details.component.mjs +40 -4
- package/esm2022/lib/components/fixture-template/template-products/template-products.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template/template-summary/template-summary.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template/template-vms/template-vms.component.mjs +108 -79
- package/esm2022/lib/components/fixture-template-tree/fixture-template-tree.component.mjs +7 -3
- package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +4 -2
- package/esm2022/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.mjs +27 -4
- package/esm2022/lib/components/manage-store-plano/template-products/template-products.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/template-vms/template-vms.component.mjs +10 -14
- package/esm2022/lib/components/manage-store-plano/verification-feedback/editable-fixture/editable-fixture.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.mjs +3 -3
- package/esm2022/lib/components/planogram/merch-compliance/merch-compliance.component.mjs +4 -2
- package/esm2022/lib/components/planogram/merch-compliance/product-locator/misplaced-product-fixture/misplaced-product-fixture.component.mjs +11 -5
- package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-locator.component.mjs +14 -9
- package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-zone-locator/product-zone-locator.component.mjs +39 -7
- package/esm2022/lib/components/planogram/merch-compliance/zone-products/zone-products.component.mjs +18 -5
- package/esm2022/lib/components/planogram/plano-analytics/analytics-popup/analytics-popup.component.mjs +68 -0
- package/esm2022/lib/components/planogram/plano-analytics/date-range-picker/date-range-picker.component.mjs +5 -5
- package/esm2022/lib/components/planogram/plano-analytics/fixture-analytics/fixture-analytics.component.mjs +649 -0
- package/esm2022/lib/components/planogram/plano-analytics/plano-analytics.component.mjs +1197 -25
- package/esm2022/lib/components/planogram/plano-details-parent/plano-details-parent.component.mjs +14 -7
- package/esm2022/lib/components/planogram/plano-overview/plano-comparison/plano-comparison.component.mjs +8 -4
- package/esm2022/lib/components/planogram/plano-overview/plano-overview.component.mjs +17 -9
- package/esm2022/lib/components/planogram/plano-table/plano-table.component.mjs +3 -3
- package/esm2022/lib/components/store-plano/store-plano-tree-view/store-plano-tree-view.component.mjs +3 -2
- package/esm2022/lib/components/store-plano/store-plano.component.mjs +4 -2
- package/esm2022/lib/interfaces/fixture-library.interface.mjs +1 -1
- package/esm2022/lib/services/store-builder.service.mjs +4 -1
- package/esm2022/lib/tango-store-builder.module.mjs +8 -2
- package/fesm2022/tango-app-ui-store-builder.mjs +2996 -834
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/create-fixture/create-fixture.component.d.ts +15 -14
- package/lib/components/fixture-template/template-basic-details/template-basic-details.component.d.ts +2 -0
- package/lib/components/fixture-template/template-vms/template-vms.component.d.ts +12 -12
- package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +2 -2
- package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +4 -4
- package/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.d.ts +2 -0
- package/lib/components/manage-store-plano/template-vms/template-vms.component.d.ts +0 -1
- package/lib/components/planogram/merch-compliance/product-locator/misplaced-product-fixture/misplaced-product-fixture.component.d.ts +4 -2
- package/lib/components/planogram/merch-compliance/product-locator/product-locator.component.d.ts +3 -2
- package/lib/components/planogram/merch-compliance/product-locator/product-zone-locator/product-zone-locator.component.d.ts +10 -3
- package/lib/components/planogram/merch-compliance/zone-products/zone-products.component.d.ts +4 -2
- package/lib/components/planogram/plano-analytics/analytics-popup/analytics-popup.component.d.ts +25 -0
- package/lib/components/planogram/plano-analytics/fixture-analytics/fixture-analytics.component.d.ts +94 -0
- package/lib/components/planogram/plano-analytics/plano-analytics.component.d.ts +76 -3
- package/lib/components/planogram/plano-details-parent/plano-details-parent.component.d.ts +3 -2
- package/lib/interfaces/fixture-library.interface.d.ts +1 -1
- package/lib/services/store-builder.service.d.ts +1 -0
- package/lib/tango-store-builder.module.d.ts +26 -24
- package/package.json +1 -1
package/esm2022/lib/components/planogram/merch-compliance/zone-products/zone-products.component.mjs
CHANGED
|
@@ -20,6 +20,7 @@ export class ZoneProductsComponent {
|
|
|
20
20
|
brandName; // only for missing items
|
|
21
21
|
allBrands;
|
|
22
22
|
showProductLocation = false;
|
|
23
|
+
misplacedTargetFixture;
|
|
23
24
|
constructor(activeModal, toastService) {
|
|
24
25
|
this.activeModal = activeModal;
|
|
25
26
|
this.toastService = toastService;
|
|
@@ -61,6 +62,7 @@ export class ZoneProductsComponent {
|
|
|
61
62
|
this.productNote = null;
|
|
62
63
|
}
|
|
63
64
|
this.showProductLocation = false;
|
|
65
|
+
this.misplacedTargetFixture = null;
|
|
64
66
|
}
|
|
65
67
|
onClickClose() {
|
|
66
68
|
this.activeModal.close();
|
|
@@ -79,16 +81,27 @@ export class ZoneProductsComponent {
|
|
|
79
81
|
.then(() => this.toastService.getSuccessToast("SKU Copied"))
|
|
80
82
|
.catch((err) => console.error("Failed to copy:", err));
|
|
81
83
|
}
|
|
82
|
-
onClickLocateFixture(
|
|
84
|
+
onClickLocateFixture(product) {
|
|
85
|
+
// const allFixtures = [
|
|
86
|
+
// ...this.floorData?.layoutPolygon.flatMap((e: any) => e.fixtures),
|
|
87
|
+
// ...this.floorData?.centerFixture,
|
|
88
|
+
// ];
|
|
89
|
+
// const targetFixtureId = product.fixtureDetails.fixtureId;
|
|
90
|
+
// this.misplacedTargetFixture = allFixtures.find(
|
|
91
|
+
// (f: any) => f._id === targetFixtureId,
|
|
92
|
+
// );
|
|
83
93
|
this.showProductLocation = !this.showProductLocation;
|
|
84
|
-
// this.activeModal.close(
|
|
94
|
+
// this.activeModal.close(product);
|
|
95
|
+
}
|
|
96
|
+
onLoadTargetFixture(targetFixtureDetails) {
|
|
97
|
+
this.misplacedTargetFixture = targetFixtureDetails;
|
|
85
98
|
}
|
|
86
99
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ZoneProductsComponent, deps: [{ token: i1.NgbActiveModal }, { token: i2.ToastService }], target: i0.ɵɵFactoryTarget.Component });
|
|
87
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ZoneProductsComponent, selector: "zone-products", inputs: { data: "data", level: "level", floorData: "floorData", vmList: "vmList", productLocation: "productLocation" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"modal-container\" id=\"zone-product-details\">\r\n <div class=\"d-flex justify-content-between mb-4\">\r\n <h3 class=\"title\">{{data.zone}}</h3>\r\n\r\n <svg (click)=\"onClickClose()\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\" class=\"cursor-pointer\">\r\n <path d=\"M13.5 4.5L4.5 13.5M4.5 4.5L13.5 13.5\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n\r\n @if(selectedProduct){\r\n <div class=\"hero-card\">\r\n <div class=\"hero-img\">\r\n <img *ngIf=\"selectedProduct?.productImageUrl; else placeholder\" [src]=\"selectedProduct?.productImageUrl\"\r\n alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div class=\"missing-img\">MISSING</div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"hero-details\">\r\n <div>\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">Brand</p>\r\n <span> : </span>\r\n <p class=\"details\">{{selectedProduct?.productBrand ?? brandName}}</p>\r\n </div>\r\n\r\n @if(selectedProduct?.status !== 'missing'){\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">Category</p>\r\n <span> : </span>\r\n <p class=\"details\">{{selectedProduct?.brandName}}</p>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">SKU</p>\r\n <span> : </span>\r\n <div class=\"d-flex gap-2 align-items-center\">\r\n <p class=\"details\">{{selectedProduct?.barCode}}</p>\r\n <svg (click)=\"copySKU(selectedProduct?.barCode)\" class=\"cursor-pointer\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_5307_114007)\">\r\n <path\r\n d=\"M3.33203 10H2.66536C2.31174 10 1.9726 9.85956 1.72256 9.60952C1.47251 9.35947 1.33203 9.02033 1.33203 8.66671V2.66671C1.33203 2.31309 1.47251 1.97395 1.72256 1.7239C1.9726 1.47385 2.31174 1.33337 2.66536 1.33337H8.66536C9.01899 1.33337 9.35813 1.47385 9.60817 1.7239C9.85822 1.97395 9.9987 2.31309 9.9987 2.66671V3.33337M7.33203 6.00004H13.332C14.0684 6.00004 14.6654 6.59699 14.6654 7.33337V13.3334C14.6654 14.0698 14.0684 14.6667 13.332 14.6667H7.33203C6.59565 14.6667 5.9987 14.0698 5.9987 13.3334V7.33337C5.9987 6.59699 6.59565 6.00004 7.33203 6.00004Z\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_5307_114007\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </div>\r\n </div>\r\n }\r\n <div *ngIf=\"selectedProduct?.status\" class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">Compliance</p>\r\n <span> : </span>\r\n <span class=\"indicator \"\r\n [ngClass]=\"{flagged:selectedProduct?.status === 'missing' || selectedProduct?.status ==='misplaced',completed:selectedProduct?.status ==='proper'}\">\r\n {{ selectedProduct?.status ==='proper' ? 'Placement Compliant': selectedProduct?.status | titlecase}}\r\n </span>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 mb-2\" *ngIf=\"productNote\">\r\n <p class=\"heading\">Action required</p>\r\n <span> : </span>\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_3914_56687)\">\r\n <path\r\n d=\"M9 12V9M9 6H9.0075M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3914_56687\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n @if(selectedProduct?.fixtureDetails?.fixtureName){\r\n <a class=\"cursor-pointer text-underline-underline mt-1\"\r\n (click)=\"onClickLocateFixture(selectedProduct?.fixtureDetails)\">{{productNote}}</a>\r\n @if(showProductLocation){\r\n <svg width=\"14\" height=\"8\" viewBox=\"0 0 14 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M13 7L7 1L1 7\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n }@else {\r\n <svg width=\"14\" height=\"8\" viewBox=\"0 0 14 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M1 1L7 7L13 1\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n }\r\n }@else {\r\n <p class=\"details\" (click)=\"onClickLocateFixture(selectedProduct?.fixtureDetails)\">\r\n {{productNote}}\r\n </p>\r\n }\r\n\r\n </div>\r\n\r\n </div>\r\n <div>\r\n <svg (click)=\"selectedProduct = null\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.66667 9.33333H6.66667M6.66667 9.33333V13.3333M6.66667 9.33333L2 14M13.3333 6.66667H9.33333M9.33333 6.66667V2.66667M9.33333 6.66667L14 2\"\r\n stroke=\"#475467\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n }\r\n\r\n @if(showProductLocation){\r\n <h3 class=\"mt-4\">Step 1: Go the below highlighted fixture \u201C<b>{{this.selectedProduct?.fixtureDetails?.fixtureName}}</b>\u201D</h3>\r\n <product-fixture-locator [floorData]=\"floorData\" [selectedProduct]=\"selectedProduct\"></product-fixture-locator>\r\n <h3>Step 2: Place the product in the highlighted area.</h3>\r\n <product-zone-locator [data]=\"data\" [selectedProduct]=\"selectedProduct\"></product-zone-locator>\r\n <hr>\r\n }\r\n\r\n <div class=\"zone-details my-2\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"zone-info\">\r\n <span class=\"badge draft mb-3\">\r\n {{ data.zone }}\r\n </span>\r\n <h1>{{allBrands}}</h1>\r\n <h4>Capacity {{zoneCapacity}}</h4>\r\n </div>\r\n\r\n <div class=\"shelves\">\r\n <ng-container *ngFor=\"let s of data.shelves; let i = index\">\r\n @if(s.shelfType ==='shelf'){\r\n <div [id]=\"s.shelfType + (i + 1)\" class=\"block shelf\">\r\n @if(s.products.length){\r\n <div *ngFor=\"let p of s.products\" class=\"product\"\r\n (click)=\"onSelectProduct(p.productId,s)\"\r\n [ngClass]=\"{'selected':selectedProduct?.productId === p.productId,'error':p.status === 'missing' || p.status === 'misplaced'}\">\r\n\r\n @if(p.status != 'missing'){\r\n <div class=\"product-img\">\r\n <img *ngIf=\"p?.productImageUrl; else placeholder\" [src]=\"p?.productImageUrl\"\r\n alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div></div>\r\n </ng-template>\r\n </div>\r\n <div class=\"product-details\">\r\n <span class=\"badge cluster\">\r\n {{ p.productId }}\r\n </span>\r\n <h6 class=\"ms-1\">{{p.productName}}</h6>\r\n <p class=\"ms-1\">{{p.productType}}</p>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <div *ngFor=\"let p of [].constructor(s.productPerShelf)\" class=\"product\"></div>\r\n }\r\n </div>\r\n }@else {\r\n <div [id]=\"s.shelfType! + (i + 1)\" class=\"block\">\r\n @if(s.products.length){\r\n <div *ngFor=\"let row of s.distributedRows\" class=\"tray mb-3\">\r\n <div *ngFor=\"let p of row\" class=\"product\"\r\n [ngClass]=\"{'selected':selectedProduct?.productId === p.productId,'error':p.status === 'missing' || p.status === 'misplaced'}\"\r\n (click)=\"onSelectProduct(p.productId,s)\">\r\n @if(p.status != 'missing'){\r\n <div class=\"product-img\">\r\n <img *ngIf=\"p?.productImageUrl; else placeholder\"\r\n [src]=\"p?.productImageUrl\" alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div></div>\r\n </ng-template>\r\n </div>\r\n <div class=\"product-details\">\r\n <span class=\"badge cluster\">\r\n {{ p.productId }}\r\n </span>\r\n <h6 class=\"ms-1\">{{p.productName}}</h6>\r\n <p class=\"ms-1\">{{p.productType}}</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }@else{\r\n <div *ngFor=\"let row of [].constructor(s.trayRows)\" class=\"tray mb-3\">\r\n <div *ngFor=\"let p of [].constructor(s.productPerShelf)\" class=\"product\"></div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- <button type=\"button\" class=\"btn btn-primary w-100\" (click)=\"onClickRefresh()\">Refresh</button> -->\r\n</div>", 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.inactive{background:#f2f4f7!important;color:#344054!important}.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 rgba(152,162,179,.2901960784);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}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext[_ngcontent-ng-c2141490359]{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-responsive{min-height:calc(100vh - 495px)}.download-link{color:var(--Primary-800, #008edf);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer}h3.card-title{color:#101828;font-size:18px;font-weight:600;line-height:28px}p.card-tagline{color:#101828;font-size:14px;font-weight:500;line-height:20px}p.card-description{color:#344054;font-size:14px;font-weight:400;line-height:20px}#list-view .thumbnail{height:40px;width:40px;background:#f2f4f7;margin-right:12px;border-radius:8px}#list-view td{vertical-align:middle}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px;height:100%;transition:all .2s ease}#grid-view .card:hover{cursor:pointer;box-shadow:0 10px 10px #0001;transition:all .2s ease}#grid-view .card-img{margin-bottom:12px;background:#d0d5dd;height:200px;border-radius:6px}#grid-view .card-action{position:absolute;top:20px;right:20px}#grid-view .card-tagline{color:#475467;font-weight:500;font-size:14px;line-height:20px}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#027a48;background:#ecfdf3}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.badge.cluster{background:#f2f4f7;color:#344054}.badge.published{background:#ecfdf3;color:#027a48}.badge.yet-to-publish{background:#f8f9fc;color:#363f72}.indicator{border-radius:16px;padding:2px 8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;width:fit-content;text-align:center;font-size:14px;font-weight:500}.indicator.short{height:14px!important;width:14px!important;border-radius:50%!important;padding:0!important}.indicator.yetToComplete{background:#f2f4f7;color:#667085}.indicator.yetToComplete path{fill:#667085}.indicator.yetToAssign{background:#eaecf5;color:#344054}.indicator.yetToAssign path{fill:#344054}.indicator.taskAssigned{background:#e0eaff;color:#7a5af8}.indicator.taskAssigned path{fill:#7a5af8}.indicator.reviewPending{background:#fef0c7;color:#f79009}.indicator.reviewPending path{fill:#f79009}.indicator.flagged{background:var(--Error-50, #fef3f2);color:var(--Error-700, #b42318)}.indicator.completed{background:#d1fadf;color:#12b76a}.indicator.completed path{fill:#12b76a}.toggle-button{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:8px;background:#fff;border:.89px solid rgb(208,213,221);box-shadow:0 .89px 1.78px #1018280d;transition:all ease .3s}.toggle-button:hover{cursor:pointer}.toggle-button.selected{transition:all ease .3s;background:#eaf8ff;box-shadow:0 0 0 3.56px #d5effe!important;border:.89px solid rgb(234,248,255)}.disabled-click{pointer-events:none;cursor:not-allowed!important;opacity:.6}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:#888;display:flex;align-items:center;height:1.5rem}.clear-search{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;height:1.5rem;width:1.5rem}.modal-container{padding:24px}.wrapper{margin:22px 0;display:flex;flex-direction:column;justify-content:center;align-items:center}.modal-actions{display:flex;justify-content:stretch;gap:12px}#zone-product-details .title{font-size:16px;font-weight:600;color:#1d2939;margin:0}#zone-product-details .hero-card{background-color:#fff;border:1px solid #eaecf0;border-radius:6px;padding:12px;display:flex;gap:26px}#zone-product-details .hero-card .hero-img{height:100px;width:200px;background-color:#fff;border:2px solid #eaecf0;border-radius:16px;display:flex;justify-content:center;align-items:center}#zone-product-details .hero-card .hero-img img{height:100%;width:100%;object-fit:cover;border-radius:16px}#zone-product-details .hero-card .hero-img .missing-img{font-size:28px;color:#a5a5a587;font-weight:600}#zone-product-details .hero-card .hero-details{display:flex;justify-content:space-between;width:100%;align-items:start}#zone-product-details .hero-card .hero-details p{margin:0;font-size:12px}#zone-product-details .hero-card .hero-details .heading{color:#667085;font-weight:500;width:100px}#zone-product-details .hero-card .hero-details .details{color:#344054;font-weight:600}#zone-product-details .zone-details{padding:12px;border-radius:6px;border:1px solid #51c1ff;background-color:#f6fcff}#zone-product-details .zone-details .zone-info{max-width:200px;min-width:150px}#zone-product-details .zone-details .zone-info h1{font-weight:600;font-size:14px;line-height:20px;color:#101828;margin-bottom:0}#zone-product-details .zone-details .zone-info h4{font-weight:400;font-size:12px;line-height:18px;color:#101828}#zone-product-details .zone-details .shelves{width:100%;overflow:auto}#zone-product-details .zone-details .shelves .block{border:none;padding:10px;width:100%;max-width:100%;overflow-x:auto;min-height:52px}#zone-product-details .zone-details .shelves .tray,#zone-product-details .zone-details .shelves .shelf{display:flex;gap:24px}#zone-product-details .zone-details .shelves .tray .product,#zone-product-details .zone-details .shelves .shelf .product{border:2px solid #12b76a;padding:6px;border-radius:4px;min-width:96px;min-height:104px}#zone-product-details .zone-details .shelves .tray .product.selected,#zone-product-details .zone-details .shelves .shelf .product.selected{border:2px solid #12b76a;background-color:#e0fbe9}#zone-product-details .zone-details .shelves .tray .product.error,#zone-product-details .zone-details .shelves .shelf .product.error{border:2px solid rgb(253,162,155);background-color:#fef3f2}#zone-product-details .zone-details .shelves .tray .product.error.selected,#zone-product-details .zone-details .shelves .shelf .product.error.selected{border:2px solid rgb(255,172,168);background-color:#ffe7e5}#zone-product-details .zone-details .shelves .tray .product:hover,#zone-product-details .zone-details .shelves .shelf .product:hover{cursor:pointer}#zone-product-details .zone-details .shelves .tray .product .product-img,#zone-product-details .zone-details .shelves .shelf .product .product-img{width:80px;height:40px;border:1.23px solid rgb(234,236,240);margin-bottom:8px;box-shadow:0 1.23px 2.47px #1018280d;border-radius:4px}#zone-product-details .zone-details .shelves .tray .product .product-img img,#zone-product-details .zone-details .shelves .shelf .product .product-img img{border-radius:4px;height:100%;width:100%;object-fit:cover}#zone-product-details .zone-details .shelves .tray .product .product-details,#zone-product-details .zone-details .shelves .shelf .product .product-details{display:flex;flex-direction:column;gap:2px;width:fit-content}#zone-product-details .zone-details .shelves .tray .product .product-details .badge,#zone-product-details .zone-details .shelves .shelf .product .product-details .badge{font-weight:500!important;font-size:8px!important;line-height:12px!important;text-align:center;padding:1px 6px!important;border-radius:16px!important}#zone-product-details .zone-details .shelves .tray .product .product-details h6,#zone-product-details .zone-details .shelves .tray .product .product-details p,#zone-product-details .zone-details .shelves .shelf .product .product-details h6,#zone-product-details .zone-details .shelves .shelf .product .product-details p{font-size:8px;font-weight:600;color:#101828;margin:0}#zone-product-details .zone-details .shelves .tray .product .product-details p,#zone-product-details .zone-details .shelves .shelf .product .product-details p{font-weight:500!important}h3{font-weight:500;font-size:14px;line-height:20px;letter-spacing:0%;color:#344054}::ng-deep .merch-compliance-modal .modal-dialog{max-width:950px;width:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ProductLocatorComponent, selector: "product-fixture-locator", inputs: ["floorData", "selectedProduct"] }, { kind: "component", type: i5.ProductZoneLocatorComponent, selector: "product-zone-locator", inputs: ["data", "selectedProduct"] }, { kind: "pipe", type: i3.TitleCasePipe, name: "titlecase" }] });
|
|
100
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ZoneProductsComponent, selector: "zone-products", inputs: { data: "data", level: "level", floorData: "floorData", vmList: "vmList", productLocation: "productLocation" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"modal-container\" id=\"zone-product-details\">\r\n <div class=\"d-flex justify-content-between mb-4\">\r\n <h3 class=\"title\">{{data.zone}}</h3>\r\n\r\n <svg (click)=\"onClickClose()\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\" class=\"cursor-pointer\">\r\n <path d=\"M13.5 4.5L4.5 13.5M4.5 4.5L13.5 13.5\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n\r\n @if(selectedProduct){\r\n <div class=\"hero-card\">\r\n <div class=\"hero-img\">\r\n <img *ngIf=\"selectedProduct?.productImageUrl; else placeholder\" [src]=\"selectedProduct?.productImageUrl\"\r\n alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div class=\"missing-img\">MISSING</div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"hero-details\">\r\n <div>\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">Brand</p>\r\n <span> : </span>\r\n <p class=\"details\">{{selectedProduct?.productBrand ?? brandName}}</p>\r\n </div>\r\n\r\n @if(selectedProduct?.status !== 'missing'){\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">Category</p>\r\n <span> : </span>\r\n <p class=\"details\">{{selectedProduct?.brandName}}</p>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">SKU</p>\r\n <span> : </span>\r\n <div class=\"d-flex gap-2 align-items-center\">\r\n <p class=\"details\">{{selectedProduct?.barCode}}</p>\r\n <svg (click)=\"copySKU(selectedProduct?.barCode)\" class=\"cursor-pointer\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_5307_114007)\">\r\n <path\r\n d=\"M3.33203 10H2.66536C2.31174 10 1.9726 9.85956 1.72256 9.60952C1.47251 9.35947 1.33203 9.02033 1.33203 8.66671V2.66671C1.33203 2.31309 1.47251 1.97395 1.72256 1.7239C1.9726 1.47385 2.31174 1.33337 2.66536 1.33337H8.66536C9.01899 1.33337 9.35813 1.47385 9.60817 1.7239C9.85822 1.97395 9.9987 2.31309 9.9987 2.66671V3.33337M7.33203 6.00004H13.332C14.0684 6.00004 14.6654 6.59699 14.6654 7.33337V13.3334C14.6654 14.0698 14.0684 14.6667 13.332 14.6667H7.33203C6.59565 14.6667 5.9987 14.0698 5.9987 13.3334V7.33337C5.9987 6.59699 6.59565 6.00004 7.33203 6.00004Z\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_5307_114007\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </div>\r\n </div>\r\n }\r\n <div *ngIf=\"selectedProduct?.status\" class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">Compliance</p>\r\n <span> : </span>\r\n <span class=\"indicator \"\r\n [ngClass]=\"{flagged:selectedProduct?.status === 'missing' || selectedProduct?.status ==='misplaced',completed:selectedProduct?.status ==='proper'}\">\r\n {{ selectedProduct?.status ==='proper' ? 'Placement Compliant': selectedProduct?.status | titlecase}}\r\n </span>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 mb-2\" *ngIf=\"productNote\">\r\n <p class=\"heading\">Action required</p>\r\n <span> : </span>\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_3914_56687)\">\r\n <path\r\n d=\"M9 12V9M9 6H9.0075M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3914_56687\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n @if(selectedProduct?.fixtureDetails?.fixtureName){\r\n <a class=\"cursor-pointer text-underline-underline mt-1\"\r\n (click)=\"onClickLocateFixture(selectedProduct)\">{{productNote}}</a>\r\n @if(showProductLocation){\r\n <svg width=\"14\" height=\"8\" viewBox=\"0 0 14 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M13 7L7 1L1 7\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n }@else {\r\n <svg width=\"14\" height=\"8\" viewBox=\"0 0 14 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M1 1L7 7L13 1\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n }\r\n }@else {\r\n <p class=\"details\"> {{productNote}} </p>\r\n }\r\n\r\n </div>\r\n\r\n </div>\r\n <div>\r\n <svg (click)=\"selectedProduct = null\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.66667 9.33333H6.66667M6.66667 9.33333V13.3333M6.66667 9.33333L2 14M13.3333 6.66667H9.33333M9.33333 6.66667V2.66667M9.33333 6.66667L14 2\"\r\n stroke=\"#475467\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n }\r\n\r\n @if(showProductLocation && selectedProduct?.fixtureDetails){\r\n <h3 class=\"mt-4\">Step 1: Go the below highlighted fixture\r\n \u201C<b>{{this.selectedProduct?.fixtureDetails?.fixtureName}}</b>\u201D</h3>\r\n <product-fixture-locator [floorData]=\"floorData\" [selectedProduct]=\"selectedProduct\" (targetFixtureFullDetails)=\"onLoadTargetFixture($event)\"></product-fixture-locator>\r\n <h3>Step 2: Place the product in the highlighted area.</h3>\r\n <product-zone-locator [targetProduct]=\"selectedProduct?.fixtureDetails\" [targetFixture]=\"misplacedTargetFixture\"></product-zone-locator>\r\n <hr>\r\n }\r\n\r\n <div class=\"zone-details my-2\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"zone-info\">\r\n <span class=\"badge draft mb-3\">\r\n {{ data.zone }}\r\n </span>\r\n <h1>{{allBrands}}</h1>\r\n <h4>Capacity {{zoneCapacity}}</h4>\r\n </div>\r\n\r\n <div class=\"shelves\">\r\n <ng-container *ngFor=\"let s of data.shelves; let i = index\">\r\n @if(s.shelfType ==='tray'){\r\n <div [id]=\"s.shelfType! + (i + 1)\" class=\"block\">\r\n @if(s.products.length){\r\n <div *ngFor=\"let row of s.distributedRows\" class=\"tray mb-3\">\r\n <div *ngFor=\"let p of row\" class=\"product\"\r\n [ngClass]=\"{'selected':selectedProduct?.productId === p.productId,'error':p.status === 'missing' || p.status === 'misplaced'}\"\r\n (click)=\"onSelectProduct(p.productId,s)\">\r\n @if(p.status != 'missing'){\r\n <div class=\"product-img\">\r\n <img *ngIf=\"p?.productImageUrl; else placeholder\"\r\n [src]=\"p?.productImageUrl\" alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div></div>\r\n </ng-template>\r\n </div>\r\n <div class=\"product-details\">\r\n <span class=\"badge cluster\">\r\n {{ p.productId }}\r\n </span>\r\n <h6 class=\"ms-1\">{{p.productName}}</h6>\r\n <p class=\"ms-1\">{{p.productType}}</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }@else{\r\n <div *ngFor=\"let row of [].constructor(s.trayRows)\" class=\"tray mb-3\">\r\n <div *ngFor=\"let p of [].constructor(s.productPerShelf)\" class=\"product\"></div>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <div [id]=\"s.shelfType + (i + 1)\" class=\"block shelf\">\r\n @if(s.products.length){\r\n <div *ngFor=\"let p of s.products\" class=\"product\"\r\n (click)=\"onSelectProduct(p.productId,s)\"\r\n [ngClass]=\"{'selected':selectedProduct?.productId === p.productId,'error':p.status === 'missing' || p.status === 'misplaced'}\">\r\n\r\n @if(p.status != 'missing'){\r\n <div class=\"product-img\">\r\n <img *ngIf=\"p?.productImageUrl; else placeholder\" [src]=\"p?.productImageUrl\"\r\n alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div></div>\r\n </ng-template>\r\n </div>\r\n <div class=\"product-details\">\r\n <span class=\"badge cluster\">\r\n {{ p.productId }}\r\n </span>\r\n <h6 class=\"ms-1\">{{p.productName}}</h6>\r\n <p class=\"ms-1\">{{p.productType}}</p>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <div *ngFor=\"let p of [].constructor(s.productPerShelf)\" class=\"product\"></div>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- <button type=\"button\" class=\"btn btn-primary w-100\" (click)=\"onClickRefresh()\">Refresh</button> -->\r\n</div>", 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.inactive{background:#f2f4f7!important;color:#344054!important}.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 rgba(152,162,179,.2901960784);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}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext[_ngcontent-ng-c2141490359]{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-responsive{min-height:calc(100vh - 495px)}.download-link{color:var(--Primary-800, #008edf);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer}h3.card-title{color:#101828;font-size:18px;font-weight:600;line-height:28px}p.card-tagline{color:#101828;font-size:14px;font-weight:500;line-height:20px}p.card-description{color:#344054;font-size:14px;font-weight:400;line-height:20px}#list-view .thumbnail{height:40px;width:40px;background:#f2f4f7;margin-right:12px;border-radius:8px}#list-view td{vertical-align:middle}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px;height:100%;transition:all .2s ease}#grid-view .card:hover{cursor:pointer;box-shadow:0 10px 10px #0001;transition:all .2s ease}#grid-view .card-img{margin-bottom:12px;background:#d0d5dd;height:200px;border-radius:6px}#grid-view .card-action{position:absolute;top:20px;right:20px}#grid-view .card-tagline{color:#475467;font-weight:500;font-size:14px;line-height:20px}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#027a48;background:#ecfdf3}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.badge.cluster{background:#f2f4f7;color:#344054}.badge.published{background:#ecfdf3;color:#027a48}.badge.yet-to-publish{background:#f8f9fc;color:#363f72}.indicator{border-radius:16px;padding:2px 8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;width:fit-content;text-align:center;font-size:14px;font-weight:500}.indicator.short{height:14px!important;width:14px!important;border-radius:50%!important;padding:0!important}.indicator.yetToComplete{background:#f2f4f7;color:#667085}.indicator.yetToComplete path{fill:#667085}.indicator.yetToAssign{background:#eaecf5;color:#344054}.indicator.yetToAssign path{fill:#344054}.indicator.taskAssigned{background:#e0eaff;color:#7a5af8}.indicator.taskAssigned path{fill:#7a5af8}.indicator.reviewPending{background:#fef0c7;color:#f79009}.indicator.reviewPending path{fill:#f79009}.indicator.flagged{background:var(--Error-50, #fef3f2);color:var(--Error-700, #b42318)}.indicator.completed{background:#d1fadf;color:#12b76a}.indicator.completed path{fill:#12b76a}.toggle-button{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:8px;background:#fff;border:.89px solid rgb(208,213,221);box-shadow:0 .89px 1.78px #1018280d;transition:all ease .3s}.toggle-button:hover{cursor:pointer}.toggle-button.selected{transition:all ease .3s;background:#eaf8ff;box-shadow:0 0 0 3.56px #d5effe!important;border:.89px solid rgb(234,248,255)}.disabled-click{pointer-events:none;cursor:not-allowed!important;opacity:.6}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:#888;display:flex;align-items:center;height:1.5rem}.clear-search{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;height:1.5rem;width:1.5rem}.modal-container{padding:24px}.wrapper{margin:22px 0;display:flex;flex-direction:column;justify-content:center;align-items:center}.modal-actions{display:flex;justify-content:stretch;gap:12px}#zone-product-details .title{font-size:16px;font-weight:600;color:#1d2939;margin:0}#zone-product-details .hero-card{background-color:#fff;border:1px solid #eaecf0;border-radius:6px;padding:12px;display:flex;gap:26px}#zone-product-details .hero-card .hero-img{height:100px;width:200px;background-color:#fff;border:2px solid #eaecf0;border-radius:16px;display:flex;justify-content:center;align-items:center}#zone-product-details .hero-card .hero-img img{height:100%;width:100%;object-fit:cover;border-radius:16px}#zone-product-details .hero-card .hero-img .missing-img{font-size:28px;color:#a5a5a587;font-weight:600}#zone-product-details .hero-card .hero-details{display:flex;justify-content:space-between;width:100%;align-items:start}#zone-product-details .hero-card .hero-details p{margin:0;font-size:12px}#zone-product-details .hero-card .hero-details .heading{color:#667085;font-weight:500;width:100px}#zone-product-details .hero-card .hero-details .details{color:#344054;font-weight:600}#zone-product-details .zone-details{padding:12px;border-radius:6px;border:1px solid #51c1ff;background-color:#f6fcff}#zone-product-details .zone-details .zone-info{max-width:200px;min-width:150px}#zone-product-details .zone-details .zone-info h1{font-weight:600;font-size:14px;line-height:20px;color:#101828;margin-bottom:0}#zone-product-details .zone-details .zone-info h4{font-weight:400;font-size:12px;line-height:18px;color:#101828}#zone-product-details .zone-details .shelves{width:100%;overflow:auto}#zone-product-details .zone-details .shelves .block{border:none;padding:10px;width:100%;max-width:100%;overflow-x:auto;min-height:52px}#zone-product-details .zone-details .shelves .tray,#zone-product-details .zone-details .shelves .shelf{display:flex;gap:24px}#zone-product-details .zone-details .shelves .tray .product,#zone-product-details .zone-details .shelves .shelf .product{border:2px solid #12b76a;padding:6px;border-radius:4px;min-width:96px;min-height:104px}#zone-product-details .zone-details .shelves .tray .product.selected,#zone-product-details .zone-details .shelves .shelf .product.selected{border:2px solid #12b76a;background-color:#e0fbe9}#zone-product-details .zone-details .shelves .tray .product.error,#zone-product-details .zone-details .shelves .shelf .product.error{border:2px solid rgb(253,162,155);background-color:#fef3f2}#zone-product-details .zone-details .shelves .tray .product.error.selected,#zone-product-details .zone-details .shelves .shelf .product.error.selected{border:2px solid rgb(255,172,168);background-color:#ffe7e5}#zone-product-details .zone-details .shelves .tray .product:hover,#zone-product-details .zone-details .shelves .shelf .product:hover{cursor:pointer}#zone-product-details .zone-details .shelves .tray .product .product-img,#zone-product-details .zone-details .shelves .shelf .product .product-img{width:80px;height:40px;border:1.23px solid rgb(234,236,240);margin-bottom:8px;box-shadow:0 1.23px 2.47px #1018280d;border-radius:4px}#zone-product-details .zone-details .shelves .tray .product .product-img img,#zone-product-details .zone-details .shelves .shelf .product .product-img img{border-radius:4px;height:100%;width:100%;object-fit:cover}#zone-product-details .zone-details .shelves .tray .product .product-details,#zone-product-details .zone-details .shelves .shelf .product .product-details{display:flex;flex-direction:column;gap:2px;width:fit-content}#zone-product-details .zone-details .shelves .tray .product .product-details .badge,#zone-product-details .zone-details .shelves .shelf .product .product-details .badge{font-weight:500!important;font-size:8px!important;line-height:12px!important;text-align:center;padding:1px 6px!important;border-radius:16px!important}#zone-product-details .zone-details .shelves .tray .product .product-details h6,#zone-product-details .zone-details .shelves .tray .product .product-details p,#zone-product-details .zone-details .shelves .shelf .product .product-details h6,#zone-product-details .zone-details .shelves .shelf .product .product-details p{font-size:8px;font-weight:600;color:#101828;margin:0}#zone-product-details .zone-details .shelves .tray .product .product-details p,#zone-product-details .zone-details .shelves .shelf .product .product-details p{font-weight:500!important}h3{font-weight:500;font-size:14px;line-height:20px;letter-spacing:0%;color:#344054}::ng-deep .merch-compliance-modal .modal-dialog{max-width:950px;width:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ProductLocatorComponent, selector: "product-fixture-locator", inputs: ["floorData", "selectedProduct"], outputs: ["targetFixtureFullDetails"] }, { kind: "component", type: i5.ProductZoneLocatorComponent, selector: "product-zone-locator", inputs: ["targetProduct", "targetFixture"] }, { kind: "pipe", type: i3.TitleCasePipe, name: "titlecase" }] });
|
|
88
101
|
}
|
|
89
102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ZoneProductsComponent, decorators: [{
|
|
90
103
|
type: Component,
|
|
91
|
-
args: [{ selector: "zone-products", template: "<div class=\"modal-container\" id=\"zone-product-details\">\r\n <div class=\"d-flex justify-content-between mb-4\">\r\n <h3 class=\"title\">{{data.zone}}</h3>\r\n\r\n <svg (click)=\"onClickClose()\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\" class=\"cursor-pointer\">\r\n <path d=\"M13.5 4.5L4.5 13.5M4.5 4.5L13.5 13.5\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n\r\n @if(selectedProduct){\r\n <div class=\"hero-card\">\r\n <div class=\"hero-img\">\r\n <img *ngIf=\"selectedProduct?.productImageUrl; else placeholder\" [src]=\"selectedProduct?.productImageUrl\"\r\n alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div class=\"missing-img\">MISSING</div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"hero-details\">\r\n <div>\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">Brand</p>\r\n <span> : </span>\r\n <p class=\"details\">{{selectedProduct?.productBrand ?? brandName}}</p>\r\n </div>\r\n\r\n @if(selectedProduct?.status !== 'missing'){\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">Category</p>\r\n <span> : </span>\r\n <p class=\"details\">{{selectedProduct?.brandName}}</p>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">SKU</p>\r\n <span> : </span>\r\n <div class=\"d-flex gap-2 align-items-center\">\r\n <p class=\"details\">{{selectedProduct?.barCode}}</p>\r\n <svg (click)=\"copySKU(selectedProduct?.barCode)\" class=\"cursor-pointer\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_5307_114007)\">\r\n <path\r\n d=\"M3.33203 10H2.66536C2.31174 10 1.9726 9.85956 1.72256 9.60952C1.47251 9.35947 1.33203 9.02033 1.33203 8.66671V2.66671C1.33203 2.31309 1.47251 1.97395 1.72256 1.7239C1.9726 1.47385 2.31174 1.33337 2.66536 1.33337H8.66536C9.01899 1.33337 9.35813 1.47385 9.60817 1.7239C9.85822 1.97395 9.9987 2.31309 9.9987 2.66671V3.33337M7.33203 6.00004H13.332C14.0684 6.00004 14.6654 6.59699 14.6654 7.33337V13.3334C14.6654 14.0698 14.0684 14.6667 13.332 14.6667H7.33203C6.59565 14.6667 5.9987 14.0698 5.9987 13.3334V7.33337C5.9987 6.59699 6.59565 6.00004 7.33203 6.00004Z\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_5307_114007\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </div>\r\n </div>\r\n }\r\n <div *ngIf=\"selectedProduct?.status\" class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">Compliance</p>\r\n <span> : </span>\r\n <span class=\"indicator \"\r\n [ngClass]=\"{flagged:selectedProduct?.status === 'missing' || selectedProduct?.status ==='misplaced',completed:selectedProduct?.status ==='proper'}\">\r\n {{ selectedProduct?.status ==='proper' ? 'Placement Compliant': selectedProduct?.status | titlecase}}\r\n </span>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 mb-2\" *ngIf=\"productNote\">\r\n <p class=\"heading\">Action required</p>\r\n <span> : </span>\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_3914_56687)\">\r\n <path\r\n d=\"M9 12V9M9 6H9.0075M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3914_56687\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n @if(selectedProduct?.fixtureDetails?.fixtureName){\r\n <a class=\"cursor-pointer text-underline-underline mt-1\"\r\n (click)=\"onClickLocateFixture(selectedProduct?.fixtureDetails)\">{{productNote}}</a>\r\n @if(showProductLocation){\r\n <svg width=\"14\" height=\"8\" viewBox=\"0 0 14 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M13 7L7 1L1 7\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n }@else {\r\n <svg width=\"14\" height=\"8\" viewBox=\"0 0 14 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M1 1L7 7L13 1\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n }\r\n }@else {\r\n <p class=\"details\" (click)=\"onClickLocateFixture(selectedProduct?.fixtureDetails)\">\r\n {{productNote}}\r\n </p>\r\n }\r\n\r\n </div>\r\n\r\n </div>\r\n <div>\r\n <svg (click)=\"selectedProduct = null\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.66667 9.33333H6.66667M6.66667 9.33333V13.3333M6.66667 9.33333L2 14M13.3333 6.66667H9.33333M9.33333 6.66667V2.66667M9.33333 6.66667L14 2\"\r\n stroke=\"#475467\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n }\r\n\r\n @if(showProductLocation){\r\n <h3 class=\"mt-4\">Step 1: Go the below highlighted fixture \u201C<b>{{this.selectedProduct?.fixtureDetails?.fixtureName}}</b>\u201D</h3>\r\n <product-fixture-locator [floorData]=\"floorData\" [selectedProduct]=\"selectedProduct\"></product-fixture-locator>\r\n <h3>Step 2: Place the product in the highlighted area.</h3>\r\n <product-zone-locator [data]=\"data\" [selectedProduct]=\"selectedProduct\"></product-zone-locator>\r\n <hr>\r\n }\r\n\r\n <div class=\"zone-details my-2\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"zone-info\">\r\n <span class=\"badge draft mb-3\">\r\n {{ data.zone }}\r\n </span>\r\n <h1>{{allBrands}}</h1>\r\n <h4>Capacity {{zoneCapacity}}</h4>\r\n </div>\r\n\r\n <div class=\"shelves\">\r\n <ng-container *ngFor=\"let s of data.shelves; let i = index\">\r\n @if(s.shelfType ==='shelf'){\r\n <div [id]=\"s.shelfType + (i + 1)\" class=\"block shelf\">\r\n @if(s.products.length){\r\n <div *ngFor=\"let p of s.products\" class=\"product\"\r\n (click)=\"onSelectProduct(p.productId,s)\"\r\n [ngClass]=\"{'selected':selectedProduct?.productId === p.productId,'error':p.status === 'missing' || p.status === 'misplaced'}\">\r\n\r\n @if(p.status != 'missing'){\r\n <div class=\"product-img\">\r\n <img *ngIf=\"p?.productImageUrl; else placeholder\" [src]=\"p?.productImageUrl\"\r\n alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div></div>\r\n </ng-template>\r\n </div>\r\n <div class=\"product-details\">\r\n <span class=\"badge cluster\">\r\n {{ p.productId }}\r\n </span>\r\n <h6 class=\"ms-1\">{{p.productName}}</h6>\r\n <p class=\"ms-1\">{{p.productType}}</p>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <div *ngFor=\"let p of [].constructor(s.productPerShelf)\" class=\"product\"></div>\r\n }\r\n </div>\r\n }@else {\r\n <div [id]=\"s.shelfType! + (i + 1)\" class=\"block\">\r\n @if(s.products.length){\r\n <div *ngFor=\"let row of s.distributedRows\" class=\"tray mb-3\">\r\n <div *ngFor=\"let p of row\" class=\"product\"\r\n [ngClass]=\"{'selected':selectedProduct?.productId === p.productId,'error':p.status === 'missing' || p.status === 'misplaced'}\"\r\n (click)=\"onSelectProduct(p.productId,s)\">\r\n @if(p.status != 'missing'){\r\n <div class=\"product-img\">\r\n <img *ngIf=\"p?.productImageUrl; else placeholder\"\r\n [src]=\"p?.productImageUrl\" alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div></div>\r\n </ng-template>\r\n </div>\r\n <div class=\"product-details\">\r\n <span class=\"badge cluster\">\r\n {{ p.productId }}\r\n </span>\r\n <h6 class=\"ms-1\">{{p.productName}}</h6>\r\n <p class=\"ms-1\">{{p.productType}}</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }@else{\r\n <div *ngFor=\"let row of [].constructor(s.trayRows)\" class=\"tray mb-3\">\r\n <div *ngFor=\"let p of [].constructor(s.productPerShelf)\" class=\"product\"></div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- <button type=\"button\" class=\"btn btn-primary w-100\" (click)=\"onClickRefresh()\">Refresh</button> -->\r\n</div>", 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.inactive{background:#f2f4f7!important;color:#344054!important}.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 rgba(152,162,179,.2901960784);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}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext[_ngcontent-ng-c2141490359]{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-responsive{min-height:calc(100vh - 495px)}.download-link{color:var(--Primary-800, #008edf);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer}h3.card-title{color:#101828;font-size:18px;font-weight:600;line-height:28px}p.card-tagline{color:#101828;font-size:14px;font-weight:500;line-height:20px}p.card-description{color:#344054;font-size:14px;font-weight:400;line-height:20px}#list-view .thumbnail{height:40px;width:40px;background:#f2f4f7;margin-right:12px;border-radius:8px}#list-view td{vertical-align:middle}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px;height:100%;transition:all .2s ease}#grid-view .card:hover{cursor:pointer;box-shadow:0 10px 10px #0001;transition:all .2s ease}#grid-view .card-img{margin-bottom:12px;background:#d0d5dd;height:200px;border-radius:6px}#grid-view .card-action{position:absolute;top:20px;right:20px}#grid-view .card-tagline{color:#475467;font-weight:500;font-size:14px;line-height:20px}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#027a48;background:#ecfdf3}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.badge.cluster{background:#f2f4f7;color:#344054}.badge.published{background:#ecfdf3;color:#027a48}.badge.yet-to-publish{background:#f8f9fc;color:#363f72}.indicator{border-radius:16px;padding:2px 8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;width:fit-content;text-align:center;font-size:14px;font-weight:500}.indicator.short{height:14px!important;width:14px!important;border-radius:50%!important;padding:0!important}.indicator.yetToComplete{background:#f2f4f7;color:#667085}.indicator.yetToComplete path{fill:#667085}.indicator.yetToAssign{background:#eaecf5;color:#344054}.indicator.yetToAssign path{fill:#344054}.indicator.taskAssigned{background:#e0eaff;color:#7a5af8}.indicator.taskAssigned path{fill:#7a5af8}.indicator.reviewPending{background:#fef0c7;color:#f79009}.indicator.reviewPending path{fill:#f79009}.indicator.flagged{background:var(--Error-50, #fef3f2);color:var(--Error-700, #b42318)}.indicator.completed{background:#d1fadf;color:#12b76a}.indicator.completed path{fill:#12b76a}.toggle-button{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:8px;background:#fff;border:.89px solid rgb(208,213,221);box-shadow:0 .89px 1.78px #1018280d;transition:all ease .3s}.toggle-button:hover{cursor:pointer}.toggle-button.selected{transition:all ease .3s;background:#eaf8ff;box-shadow:0 0 0 3.56px #d5effe!important;border:.89px solid rgb(234,248,255)}.disabled-click{pointer-events:none;cursor:not-allowed!important;opacity:.6}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:#888;display:flex;align-items:center;height:1.5rem}.clear-search{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;height:1.5rem;width:1.5rem}.modal-container{padding:24px}.wrapper{margin:22px 0;display:flex;flex-direction:column;justify-content:center;align-items:center}.modal-actions{display:flex;justify-content:stretch;gap:12px}#zone-product-details .title{font-size:16px;font-weight:600;color:#1d2939;margin:0}#zone-product-details .hero-card{background-color:#fff;border:1px solid #eaecf0;border-radius:6px;padding:12px;display:flex;gap:26px}#zone-product-details .hero-card .hero-img{height:100px;width:200px;background-color:#fff;border:2px solid #eaecf0;border-radius:16px;display:flex;justify-content:center;align-items:center}#zone-product-details .hero-card .hero-img img{height:100%;width:100%;object-fit:cover;border-radius:16px}#zone-product-details .hero-card .hero-img .missing-img{font-size:28px;color:#a5a5a587;font-weight:600}#zone-product-details .hero-card .hero-details{display:flex;justify-content:space-between;width:100%;align-items:start}#zone-product-details .hero-card .hero-details p{margin:0;font-size:12px}#zone-product-details .hero-card .hero-details .heading{color:#667085;font-weight:500;width:100px}#zone-product-details .hero-card .hero-details .details{color:#344054;font-weight:600}#zone-product-details .zone-details{padding:12px;border-radius:6px;border:1px solid #51c1ff;background-color:#f6fcff}#zone-product-details .zone-details .zone-info{max-width:200px;min-width:150px}#zone-product-details .zone-details .zone-info h1{font-weight:600;font-size:14px;line-height:20px;color:#101828;margin-bottom:0}#zone-product-details .zone-details .zone-info h4{font-weight:400;font-size:12px;line-height:18px;color:#101828}#zone-product-details .zone-details .shelves{width:100%;overflow:auto}#zone-product-details .zone-details .shelves .block{border:none;padding:10px;width:100%;max-width:100%;overflow-x:auto;min-height:52px}#zone-product-details .zone-details .shelves .tray,#zone-product-details .zone-details .shelves .shelf{display:flex;gap:24px}#zone-product-details .zone-details .shelves .tray .product,#zone-product-details .zone-details .shelves .shelf .product{border:2px solid #12b76a;padding:6px;border-radius:4px;min-width:96px;min-height:104px}#zone-product-details .zone-details .shelves .tray .product.selected,#zone-product-details .zone-details .shelves .shelf .product.selected{border:2px solid #12b76a;background-color:#e0fbe9}#zone-product-details .zone-details .shelves .tray .product.error,#zone-product-details .zone-details .shelves .shelf .product.error{border:2px solid rgb(253,162,155);background-color:#fef3f2}#zone-product-details .zone-details .shelves .tray .product.error.selected,#zone-product-details .zone-details .shelves .shelf .product.error.selected{border:2px solid rgb(255,172,168);background-color:#ffe7e5}#zone-product-details .zone-details .shelves .tray .product:hover,#zone-product-details .zone-details .shelves .shelf .product:hover{cursor:pointer}#zone-product-details .zone-details .shelves .tray .product .product-img,#zone-product-details .zone-details .shelves .shelf .product .product-img{width:80px;height:40px;border:1.23px solid rgb(234,236,240);margin-bottom:8px;box-shadow:0 1.23px 2.47px #1018280d;border-radius:4px}#zone-product-details .zone-details .shelves .tray .product .product-img img,#zone-product-details .zone-details .shelves .shelf .product .product-img img{border-radius:4px;height:100%;width:100%;object-fit:cover}#zone-product-details .zone-details .shelves .tray .product .product-details,#zone-product-details .zone-details .shelves .shelf .product .product-details{display:flex;flex-direction:column;gap:2px;width:fit-content}#zone-product-details .zone-details .shelves .tray .product .product-details .badge,#zone-product-details .zone-details .shelves .shelf .product .product-details .badge{font-weight:500!important;font-size:8px!important;line-height:12px!important;text-align:center;padding:1px 6px!important;border-radius:16px!important}#zone-product-details .zone-details .shelves .tray .product .product-details h6,#zone-product-details .zone-details .shelves .tray .product .product-details p,#zone-product-details .zone-details .shelves .shelf .product .product-details h6,#zone-product-details .zone-details .shelves .shelf .product .product-details p{font-size:8px;font-weight:600;color:#101828;margin:0}#zone-product-details .zone-details .shelves .tray .product .product-details p,#zone-product-details .zone-details .shelves .shelf .product .product-details p{font-weight:500!important}h3{font-weight:500;font-size:14px;line-height:20px;letter-spacing:0%;color:#344054}::ng-deep .merch-compliance-modal .modal-dialog{max-width:950px;width:100%}\n"] }]
|
|
104
|
+
args: [{ selector: "zone-products", template: "<div class=\"modal-container\" id=\"zone-product-details\">\r\n <div class=\"d-flex justify-content-between mb-4\">\r\n <h3 class=\"title\">{{data.zone}}</h3>\r\n\r\n <svg (click)=\"onClickClose()\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\" class=\"cursor-pointer\">\r\n <path d=\"M13.5 4.5L4.5 13.5M4.5 4.5L13.5 13.5\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n\r\n @if(selectedProduct){\r\n <div class=\"hero-card\">\r\n <div class=\"hero-img\">\r\n <img *ngIf=\"selectedProduct?.productImageUrl; else placeholder\" [src]=\"selectedProduct?.productImageUrl\"\r\n alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div class=\"missing-img\">MISSING</div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"hero-details\">\r\n <div>\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">Brand</p>\r\n <span> : </span>\r\n <p class=\"details\">{{selectedProduct?.productBrand ?? brandName}}</p>\r\n </div>\r\n\r\n @if(selectedProduct?.status !== 'missing'){\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">Category</p>\r\n <span> : </span>\r\n <p class=\"details\">{{selectedProduct?.brandName}}</p>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">SKU</p>\r\n <span> : </span>\r\n <div class=\"d-flex gap-2 align-items-center\">\r\n <p class=\"details\">{{selectedProduct?.barCode}}</p>\r\n <svg (click)=\"copySKU(selectedProduct?.barCode)\" class=\"cursor-pointer\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_5307_114007)\">\r\n <path\r\n d=\"M3.33203 10H2.66536C2.31174 10 1.9726 9.85956 1.72256 9.60952C1.47251 9.35947 1.33203 9.02033 1.33203 8.66671V2.66671C1.33203 2.31309 1.47251 1.97395 1.72256 1.7239C1.9726 1.47385 2.31174 1.33337 2.66536 1.33337H8.66536C9.01899 1.33337 9.35813 1.47385 9.60817 1.7239C9.85822 1.97395 9.9987 2.31309 9.9987 2.66671V3.33337M7.33203 6.00004H13.332C14.0684 6.00004 14.6654 6.59699 14.6654 7.33337V13.3334C14.6654 14.0698 14.0684 14.6667 13.332 14.6667H7.33203C6.59565 14.6667 5.9987 14.0698 5.9987 13.3334V7.33337C5.9987 6.59699 6.59565 6.00004 7.33203 6.00004Z\"\r\n stroke=\"#101828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_5307_114007\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </div>\r\n </div>\r\n }\r\n <div *ngIf=\"selectedProduct?.status\" class=\"d-flex align-items-center gap-2 mb-2\">\r\n <p class=\"heading\">Compliance</p>\r\n <span> : </span>\r\n <span class=\"indicator \"\r\n [ngClass]=\"{flagged:selectedProduct?.status === 'missing' || selectedProduct?.status ==='misplaced',completed:selectedProduct?.status ==='proper'}\">\r\n {{ selectedProduct?.status ==='proper' ? 'Placement Compliant': selectedProduct?.status | titlecase}}\r\n </span>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 mb-2\" *ngIf=\"productNote\">\r\n <p class=\"heading\">Action required</p>\r\n <span> : </span>\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_3914_56687)\">\r\n <path\r\n d=\"M9 12V9M9 6H9.0075M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3914_56687\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n @if(selectedProduct?.fixtureDetails?.fixtureName){\r\n <a class=\"cursor-pointer text-underline-underline mt-1\"\r\n (click)=\"onClickLocateFixture(selectedProduct)\">{{productNote}}</a>\r\n @if(showProductLocation){\r\n <svg width=\"14\" height=\"8\" viewBox=\"0 0 14 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M13 7L7 1L1 7\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n }@else {\r\n <svg width=\"14\" height=\"8\" viewBox=\"0 0 14 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M1 1L7 7L13 1\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n }\r\n }@else {\r\n <p class=\"details\"> {{productNote}} </p>\r\n }\r\n\r\n </div>\r\n\r\n </div>\r\n <div>\r\n <svg (click)=\"selectedProduct = null\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.66667 9.33333H6.66667M6.66667 9.33333V13.3333M6.66667 9.33333L2 14M13.3333 6.66667H9.33333M9.33333 6.66667V2.66667M9.33333 6.66667L14 2\"\r\n stroke=\"#475467\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n }\r\n\r\n @if(showProductLocation && selectedProduct?.fixtureDetails){\r\n <h3 class=\"mt-4\">Step 1: Go the below highlighted fixture\r\n \u201C<b>{{this.selectedProduct?.fixtureDetails?.fixtureName}}</b>\u201D</h3>\r\n <product-fixture-locator [floorData]=\"floorData\" [selectedProduct]=\"selectedProduct\" (targetFixtureFullDetails)=\"onLoadTargetFixture($event)\"></product-fixture-locator>\r\n <h3>Step 2: Place the product in the highlighted area.</h3>\r\n <product-zone-locator [targetProduct]=\"selectedProduct?.fixtureDetails\" [targetFixture]=\"misplacedTargetFixture\"></product-zone-locator>\r\n <hr>\r\n }\r\n\r\n <div class=\"zone-details my-2\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"zone-info\">\r\n <span class=\"badge draft mb-3\">\r\n {{ data.zone }}\r\n </span>\r\n <h1>{{allBrands}}</h1>\r\n <h4>Capacity {{zoneCapacity}}</h4>\r\n </div>\r\n\r\n <div class=\"shelves\">\r\n <ng-container *ngFor=\"let s of data.shelves; let i = index\">\r\n @if(s.shelfType ==='tray'){\r\n <div [id]=\"s.shelfType! + (i + 1)\" class=\"block\">\r\n @if(s.products.length){\r\n <div *ngFor=\"let row of s.distributedRows\" class=\"tray mb-3\">\r\n <div *ngFor=\"let p of row\" class=\"product\"\r\n [ngClass]=\"{'selected':selectedProduct?.productId === p.productId,'error':p.status === 'missing' || p.status === 'misplaced'}\"\r\n (click)=\"onSelectProduct(p.productId,s)\">\r\n @if(p.status != 'missing'){\r\n <div class=\"product-img\">\r\n <img *ngIf=\"p?.productImageUrl; else placeholder\"\r\n [src]=\"p?.productImageUrl\" alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div></div>\r\n </ng-template>\r\n </div>\r\n <div class=\"product-details\">\r\n <span class=\"badge cluster\">\r\n {{ p.productId }}\r\n </span>\r\n <h6 class=\"ms-1\">{{p.productName}}</h6>\r\n <p class=\"ms-1\">{{p.productType}}</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }@else{\r\n <div *ngFor=\"let row of [].constructor(s.trayRows)\" class=\"tray mb-3\">\r\n <div *ngFor=\"let p of [].constructor(s.productPerShelf)\" class=\"product\"></div>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <div [id]=\"s.shelfType + (i + 1)\" class=\"block shelf\">\r\n @if(s.products.length){\r\n <div *ngFor=\"let p of s.products\" class=\"product\"\r\n (click)=\"onSelectProduct(p.productId,s)\"\r\n [ngClass]=\"{'selected':selectedProduct?.productId === p.productId,'error':p.status === 'missing' || p.status === 'misplaced'}\">\r\n\r\n @if(p.status != 'missing'){\r\n <div class=\"product-img\">\r\n <img *ngIf=\"p?.productImageUrl; else placeholder\" [src]=\"p?.productImageUrl\"\r\n alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div></div>\r\n </ng-template>\r\n </div>\r\n <div class=\"product-details\">\r\n <span class=\"badge cluster\">\r\n {{ p.productId }}\r\n </span>\r\n <h6 class=\"ms-1\">{{p.productName}}</h6>\r\n <p class=\"ms-1\">{{p.productType}}</p>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <div *ngFor=\"let p of [].constructor(s.productPerShelf)\" class=\"product\"></div>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- <button type=\"button\" class=\"btn btn-primary w-100\" (click)=\"onClickRefresh()\">Refresh</button> -->\r\n</div>", 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.inactive{background:#f2f4f7!important;color:#344054!important}.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 rgba(152,162,179,.2901960784);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}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext[_ngcontent-ng-c2141490359]{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-responsive{min-height:calc(100vh - 495px)}.download-link{color:var(--Primary-800, #008edf);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer}h3.card-title{color:#101828;font-size:18px;font-weight:600;line-height:28px}p.card-tagline{color:#101828;font-size:14px;font-weight:500;line-height:20px}p.card-description{color:#344054;font-size:14px;font-weight:400;line-height:20px}#list-view .thumbnail{height:40px;width:40px;background:#f2f4f7;margin-right:12px;border-radius:8px}#list-view td{vertical-align:middle}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px;height:100%;transition:all .2s ease}#grid-view .card:hover{cursor:pointer;box-shadow:0 10px 10px #0001;transition:all .2s ease}#grid-view .card-img{margin-bottom:12px;background:#d0d5dd;height:200px;border-radius:6px}#grid-view .card-action{position:absolute;top:20px;right:20px}#grid-view .card-tagline{color:#475467;font-weight:500;font-size:14px;line-height:20px}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#027a48;background:#ecfdf3}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.badge.cluster{background:#f2f4f7;color:#344054}.badge.published{background:#ecfdf3;color:#027a48}.badge.yet-to-publish{background:#f8f9fc;color:#363f72}.indicator{border-radius:16px;padding:2px 8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;width:fit-content;text-align:center;font-size:14px;font-weight:500}.indicator.short{height:14px!important;width:14px!important;border-radius:50%!important;padding:0!important}.indicator.yetToComplete{background:#f2f4f7;color:#667085}.indicator.yetToComplete path{fill:#667085}.indicator.yetToAssign{background:#eaecf5;color:#344054}.indicator.yetToAssign path{fill:#344054}.indicator.taskAssigned{background:#e0eaff;color:#7a5af8}.indicator.taskAssigned path{fill:#7a5af8}.indicator.reviewPending{background:#fef0c7;color:#f79009}.indicator.reviewPending path{fill:#f79009}.indicator.flagged{background:var(--Error-50, #fef3f2);color:var(--Error-700, #b42318)}.indicator.completed{background:#d1fadf;color:#12b76a}.indicator.completed path{fill:#12b76a}.toggle-button{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:8px;background:#fff;border:.89px solid rgb(208,213,221);box-shadow:0 .89px 1.78px #1018280d;transition:all ease .3s}.toggle-button:hover{cursor:pointer}.toggle-button.selected{transition:all ease .3s;background:#eaf8ff;box-shadow:0 0 0 3.56px #d5effe!important;border:.89px solid rgb(234,248,255)}.disabled-click{pointer-events:none;cursor:not-allowed!important;opacity:.6}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:#888;display:flex;align-items:center;height:1.5rem}.clear-search{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;height:1.5rem;width:1.5rem}.modal-container{padding:24px}.wrapper{margin:22px 0;display:flex;flex-direction:column;justify-content:center;align-items:center}.modal-actions{display:flex;justify-content:stretch;gap:12px}#zone-product-details .title{font-size:16px;font-weight:600;color:#1d2939;margin:0}#zone-product-details .hero-card{background-color:#fff;border:1px solid #eaecf0;border-radius:6px;padding:12px;display:flex;gap:26px}#zone-product-details .hero-card .hero-img{height:100px;width:200px;background-color:#fff;border:2px solid #eaecf0;border-radius:16px;display:flex;justify-content:center;align-items:center}#zone-product-details .hero-card .hero-img img{height:100%;width:100%;object-fit:cover;border-radius:16px}#zone-product-details .hero-card .hero-img .missing-img{font-size:28px;color:#a5a5a587;font-weight:600}#zone-product-details .hero-card .hero-details{display:flex;justify-content:space-between;width:100%;align-items:start}#zone-product-details .hero-card .hero-details p{margin:0;font-size:12px}#zone-product-details .hero-card .hero-details .heading{color:#667085;font-weight:500;width:100px}#zone-product-details .hero-card .hero-details .details{color:#344054;font-weight:600}#zone-product-details .zone-details{padding:12px;border-radius:6px;border:1px solid #51c1ff;background-color:#f6fcff}#zone-product-details .zone-details .zone-info{max-width:200px;min-width:150px}#zone-product-details .zone-details .zone-info h1{font-weight:600;font-size:14px;line-height:20px;color:#101828;margin-bottom:0}#zone-product-details .zone-details .zone-info h4{font-weight:400;font-size:12px;line-height:18px;color:#101828}#zone-product-details .zone-details .shelves{width:100%;overflow:auto}#zone-product-details .zone-details .shelves .block{border:none;padding:10px;width:100%;max-width:100%;overflow-x:auto;min-height:52px}#zone-product-details .zone-details .shelves .tray,#zone-product-details .zone-details .shelves .shelf{display:flex;gap:24px}#zone-product-details .zone-details .shelves .tray .product,#zone-product-details .zone-details .shelves .shelf .product{border:2px solid #12b76a;padding:6px;border-radius:4px;min-width:96px;min-height:104px}#zone-product-details .zone-details .shelves .tray .product.selected,#zone-product-details .zone-details .shelves .shelf .product.selected{border:2px solid #12b76a;background-color:#e0fbe9}#zone-product-details .zone-details .shelves .tray .product.error,#zone-product-details .zone-details .shelves .shelf .product.error{border:2px solid rgb(253,162,155);background-color:#fef3f2}#zone-product-details .zone-details .shelves .tray .product.error.selected,#zone-product-details .zone-details .shelves .shelf .product.error.selected{border:2px solid rgb(255,172,168);background-color:#ffe7e5}#zone-product-details .zone-details .shelves .tray .product:hover,#zone-product-details .zone-details .shelves .shelf .product:hover{cursor:pointer}#zone-product-details .zone-details .shelves .tray .product .product-img,#zone-product-details .zone-details .shelves .shelf .product .product-img{width:80px;height:40px;border:1.23px solid rgb(234,236,240);margin-bottom:8px;box-shadow:0 1.23px 2.47px #1018280d;border-radius:4px}#zone-product-details .zone-details .shelves .tray .product .product-img img,#zone-product-details .zone-details .shelves .shelf .product .product-img img{border-radius:4px;height:100%;width:100%;object-fit:cover}#zone-product-details .zone-details .shelves .tray .product .product-details,#zone-product-details .zone-details .shelves .shelf .product .product-details{display:flex;flex-direction:column;gap:2px;width:fit-content}#zone-product-details .zone-details .shelves .tray .product .product-details .badge,#zone-product-details .zone-details .shelves .shelf .product .product-details .badge{font-weight:500!important;font-size:8px!important;line-height:12px!important;text-align:center;padding:1px 6px!important;border-radius:16px!important}#zone-product-details .zone-details .shelves .tray .product .product-details h6,#zone-product-details .zone-details .shelves .tray .product .product-details p,#zone-product-details .zone-details .shelves .shelf .product .product-details h6,#zone-product-details .zone-details .shelves .shelf .product .product-details p{font-size:8px;font-weight:600;color:#101828;margin:0}#zone-product-details .zone-details .shelves .tray .product .product-details p,#zone-product-details .zone-details .shelves .shelf .product .product-details p{font-weight:500!important}h3{font-weight:500;font-size:14px;line-height:20px;letter-spacing:0%;color:#344054}::ng-deep .merch-compliance-modal .modal-dialog{max-width:950px;width:100%}\n"] }]
|
|
92
105
|
}], ctorParameters: () => [{ type: i1.NgbActiveModal }, { type: i2.ToastService }], propDecorators: { data: [{
|
|
93
106
|
type: Input
|
|
94
107
|
}], level: [{
|
|
@@ -100,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
100
113
|
}], productLocation: [{
|
|
101
114
|
type: Input
|
|
102
115
|
}] } });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS1wcm9kdWN0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9wbGFub2dyYW0vbWVyY2gtY29tcGxpYW5jZS96b25lLXByb2R1Y3RzL3pvbmUtcHJvZHVjdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm9ncmFtL21lcmNoLWNvbXBsaWFuY2Uvem9uZS1wcm9kdWN0cy96b25lLXByb2R1Y3RzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxHQUlOLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBVXZCLE1BQU0sT0FBTyxxQkFBcUI7SUFrQnZCO0lBQ0M7SUFsQkQsSUFBSSxDQUFNO0lBQ1YsS0FBSyxDQUFTO0lBQ2QsU0FBUyxDQUFNO0lBQ2YsTUFBTSxHQUFvQixFQUFFLENBQUM7SUFDN0IsZUFBZSxDQUEyQjtJQUVuRCxlQUFlLENBQU07SUFFckIsV0FBVyxDQUFnQjtJQUMzQixXQUFXLEdBQVUsRUFBRSxDQUFDO0lBQ3hCLFlBQVksR0FBVyxDQUFDLENBQUM7SUFFekIsU0FBUyxDQUFTLENBQUMseUJBQXlCO0lBQzVDLFNBQVMsQ0FBTTtJQUNmLG1CQUFtQixHQUFZLEtBQUssQ0FBQztJQUVyQyxZQUNTLFdBQTJCLEVBQzFCLFlBQTBCO1FBRDNCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUNqQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQ25ELElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxPQUFPLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUU7Z0JBQ2pELENBQUMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3ZFO1lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQ25ELENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FDN0IsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDdEUsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFFNUMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDbEMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLGVBQWdCLENBQUMsQ0FBQyxDQUN0RCxDQUFDO1lBRUYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0IsSUFBUyxDQUFDO0lBRTVDLGNBQWMsS0FBSSxDQUFDO0lBRW5CLGVBQWUsQ0FBQyxHQUFRLEVBQUUsQ0FBTTtRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUMxQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsS0FBSyxHQUFHLENBQ2pDLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLHFDQUFxQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDMUU7YUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRTtZQUN0RCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRTtnQkFDckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxtQ0FBbUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsV0FBVyxHQUFHLENBQUM7YUFDNUc7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyw0Q0FBNEMsQ0FBQzthQUNqRTtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUN6QjtRQUVELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxRQUFhLEVBQUUsUUFBZ0I7UUFDbEQsTUFBTSxNQUFNLEdBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUvRCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQy9DLE1BQU0sU0FBUyxHQUFHLEtBQUssR0FBRyxRQUFRLENBQUM7WUFDbkMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNsQixTQUFTLENBQUMsU0FBUzthQUNoQixTQUFTLENBQUMsSUFBSSxDQUFDO2FBQ2YsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQzNELEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxjQUFtQjtRQUN0QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDckQsMENBQTBDO0lBQzVDLENBQUM7d0dBbkdVLHFCQUFxQjs0RkFBckIscUJBQXFCLGtNQ2hCbEMsMDJaQWtOTTs7NEZEbE1PLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlOzhHQUtoQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1zaGFyZWRcIjtcclxuaW1wb3J0IHtWbUxpYnJhcnlMaXN0fSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL3ZtLWxpYnJhcnkuaW50ZXJmYWNlJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiem9uZS1wcm9kdWN0c1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vem9uZS1wcm9kdWN0cy5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vem9uZS1wcm9kdWN0cy5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWm9uZVByb2R1Y3RzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcclxuICBASW5wdXQoKSBsZXZlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZsb29yRGF0YTogYW55O1xyXG4gIEBJbnB1dCgpIHZtTGlzdDogVm1MaWJyYXJ5TGlzdFtdID0gW107XHJcbiAgQElucHV0KCkgcHJvZHVjdExvY2F0aW9uPzogeyBzOiBudW1iZXI7IHBpZDogYW55IH07XHJcblxyXG4gIHNlbGVjdGVkUHJvZHVjdDogYW55O1xyXG5cclxuICBwcm9kdWN0Tm90ZTogc3RyaW5nIHwgbnVsbDtcclxuICBhbGxQcm9kdWN0czogYW55W10gPSBbXTtcclxuICB6b25lQ2FwYWNpdHk6IG51bWJlciA9IDA7XHJcblxyXG4gIGJyYW5kTmFtZTogc3RyaW5nOyAvLyBvbmx5IGZvciBtaXNzaW5nIGl0ZW1zXHJcbiAgYWxsQnJhbmRzOiBhbnk7XHJcbiAgc2hvd1Byb2R1Y3RMb2NhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBhY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGEuc2hlbHZlcyA9IHRoaXMuZGF0YS5zaGVsdmVzLm1hcCgoczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChzLnNoZWxmVHlwZSAhPT0gXCJzaGVsZlwiICYmIHMucHJvZHVjdHM/Lmxlbmd0aCkge1xyXG4gICAgICAgIHMuZGlzdHJpYnV0ZWRSb3dzID0gdGhpcy5kaXN0cmlidXRlUm91bmRSb2JpbihzLnByb2R1Y3RzLCBzLnRyYXlSb3dzKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcztcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWxsUHJvZHVjdHMgPSAodGhpcy5kYXRhPy5zaGVsdmVzID8/IFtdKS5mbGF0TWFwKFxyXG4gICAgICAoczogYW55KSA9PiBzLnByb2R1Y3RzID8/IFtdLFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmFsbEJyYW5kcyA9IFtcclxuICAgICAgLi4ubmV3IFNldCh0aGlzLmRhdGEuc2hlbHZlcy5mbGF0TWFwKChzOiBhbnkpID0+IHMucHJvZHVjdEJyYW5kTmFtZSkpLFxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLnpvbmVDYXBhY2l0eSA9IHRoaXMuYWxsUHJvZHVjdHMubGVuZ3RoO1xyXG5cclxuICAgIGlmICh0aGlzLnByb2R1Y3RMb2NhdGlvbikge1xyXG4gICAgICBjb25zdCBzaGVsZiA9IHRoaXMuZGF0YS5zaGVsdmVzLmZpbmQoXHJcbiAgICAgICAgKHM6IGFueSkgPT4gcy5zaGVsZk51bWJlciA9PT0gdGhpcy5wcm9kdWN0TG9jYXRpb24hLnMsXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLm9uU2VsZWN0UHJvZHVjdCh0aGlzLnByb2R1Y3RMb2NhdGlvbi5waWQsIHNoZWxmKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHt9XHJcblxyXG4gIG9uQ2xpY2tSZWZyZXNoKCkge31cclxuXHJcbiAgb25TZWxlY3RQcm9kdWN0KHBpZDogYW55LCBzOiBhbnkpIHtcclxuICAgIHRoaXMuYnJhbmROYW1lID0gcy5wcm9kdWN0QnJhbmROYW1lO1xyXG4gICAgdGhpcy5zZWxlY3RlZFByb2R1Y3QgPSB0aGlzLmFsbFByb2R1Y3RzLmZpbmQoXHJcbiAgICAgIChwOiBhbnkpID0+IHA/LnByb2R1Y3RJZCA9PT0gcGlkLFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByb2R1Y3Quc3RhdHVzID09PSBcIm1pc3NpbmdcIikge1xyXG4gICAgICB0aGlzLnByb2R1Y3ROb3RlID0gYE5vIHByb2R1Y3QgZm91bmQuIFBsZWFzZSBmaWxsIHRoZSAke3RoaXMuYnJhbmROYW1lfWA7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRQcm9kdWN0LnN0YXR1cyA9PT0gXCJtaXNwbGFjZWRcIikge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFByb2R1Y3Q/LmZpeHR1cmVEZXRhaWxzPy5maXh0dXJlTmFtZSkge1xyXG4gICAgICAgIHRoaXMucHJvZHVjdE5vdGUgPSBgVGhpcyBwcm9kdWN0IGJlbG9uZyB0byBmaXh0dXJlICcke3RoaXMuc2VsZWN0ZWRQcm9kdWN0Py5maXh0dXJlRGV0YWlscz8uZml4dHVyZU5hbWV9J2A7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wcm9kdWN0Tm90ZSA9IGBUaGlzIHByb2R1Y3QgYmVsb25nIHRvIGFuIGFub3RoZXIgZml4dHVyZS5gO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnByb2R1Y3ROb3RlID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNob3dQcm9kdWN0TG9jYXRpb24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tDbG9zZSgpIHtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGRpc3RyaWJ1dGVSb3VuZFJvYmluKHByb2R1Y3RzOiBhbnksIHRyYXlSb3dzOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogdHJheVJvd3MgfSwgKCkgPT4gW10pO1xyXG5cclxuICAgIHByb2R1Y3RzLmZvckVhY2goKHByb2R1Y3Q6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBjb25zdCB0cmF5SW5kZXggPSBpbmRleCAlIHRyYXlSb3dzO1xyXG4gICAgICByZXN1bHRbdHJheUluZGV4XS5wdXNoKHByb2R1Y3QpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGNvcHlTS1UodGV4dDogc3RyaW5nKSB7XHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkXHJcbiAgICAgIC53cml0ZVRleHQodGV4dClcclxuICAgICAgLnRoZW4oKCkgPT4gdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KFwiU0tVIENvcGllZFwiKSlcclxuICAgICAgLmNhdGNoKChlcnIpID0+IGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29weTpcIiwgZXJyKSk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrTG9jYXRlRml4dHVyZShmaXh0dXJlRGV0YWlsczogYW55KSB7XHJcbiAgICB0aGlzLnNob3dQcm9kdWN0TG9jYXRpb24gPSAhdGhpcy5zaG93UHJvZHVjdExvY2F0aW9uO1xyXG4gICAgLy8gdGhpcy5hY3RpdmVNb2RhbC5jbG9zZShmaXh0dXJlRGV0YWlscyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtb2RhbC1jb250YWluZXJcIiBpZD1cInpvbmUtcHJvZHVjdC1kZXRhaWxzXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTRcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJ0aXRsZVwiPnt7ZGF0YS56b25lfX08L2gzPlxyXG5cclxuICAgICAgICA8c3ZnIChjbGljayk9XCJvbkNsaWNrQ2xvc2UoKVwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuNSA0LjVMNC41IDEzLjVNNC41IDQuNUwxMy41IDEzLjVcIiBzdHJva2U9XCIjMTAxODI4XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgQGlmKHNlbGVjdGVkUHJvZHVjdCl7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlcm8tY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVyby1pbWdcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJzZWxlY3RlZFByb2R1Y3Q/LnByb2R1Y3RJbWFnZVVybDsgZWxzZSBwbGFjZWhvbGRlclwiIFtzcmNdPVwic2VsZWN0ZWRQcm9kdWN0Py5wcm9kdWN0SW1hZ2VVcmxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFsdD1cIlByb2R1Y3QgSW1hZ2VcIiAvPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlzc2luZy1pbWdcIj5NSVNTSU5HPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlcm8tZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVhZGluZ1wiPkJyYW5kPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPiA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImRldGFpbHNcIj57e3NlbGVjdGVkUHJvZHVjdD8ucHJvZHVjdEJyYW5kID8/IGJyYW5kTmFtZX19PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgQGlmKHNlbGVjdGVkUHJvZHVjdD8uc3RhdHVzICE9PSAnbWlzc2luZycpe1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVhZGluZ1wiPkNhdGVnb3J5PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPiA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImRldGFpbHNcIj57e3NlbGVjdGVkUHJvZHVjdD8uYnJhbmROYW1lfX08L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlYWRpbmdcIj5TS1U8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+IDogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZGV0YWlsc1wiPnt7c2VsZWN0ZWRQcm9kdWN0Py5iYXJDb2RlfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKGNsaWNrKT1cImNvcHlTS1Uoc2VsZWN0ZWRQcm9kdWN0Py5iYXJDb2RlKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81MzA3XzExNDAwNylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMuMzMyMDMgMTBIMi42NjUzNkMyLjMxMTc0IDEwIDEuOTcyNiA5Ljg1OTU2IDEuNzIyNTYgOS42MDk1MkMxLjQ3MjUxIDkuMzU5NDcgMS4zMzIwMyA5LjAyMDMzIDEuMzMyMDMgOC42NjY3MVYyLjY2NjcxQzEuMzMyMDMgMi4zMTMwOSAxLjQ3MjUxIDEuOTczOTUgMS43MjI1NiAxLjcyMzlDMS45NzI2IDEuNDczODUgMi4zMTE3NCAxLjMzMzM3IDIuNjY1MzYgMS4zMzMzN0g4LjY2NTM2QzkuMDE4OTkgMS4zMzMzNyA5LjM1ODEzIDEuNDczODUgOS42MDgxNyAxLjcyMzlDOS44NTgyMiAxLjk3Mzk1IDkuOTk4NyAyLjMxMzA5IDkuOTk4NyAyLjY2NjcxVjMuMzMzMzdNNy4zMzIwMyA2LjAwMDA0SDEzLjMzMkMxNC4wNjg0IDYuMDAwMDQgMTQuNjY1NCA2LjU5Njk5IDE0LjY2NTQgNy4zMzMzN1YxMy4zMzM0QzE0LjY2NTQgMTQuMDY5OCAxNC4wNjg0IDE0LjY2NjcgMTMuMzMyIDE0LjY2NjdINy4zMzIwM0M2LjU5NTY1IDE0LjY2NjcgNS45OTg3IDE0LjA2OTggNS45OTg3IDEzLjMzMzRWNy4zMzMzN0M1Ljk5ODcgNi41OTY5OSA2LjU5NTY1IDYuMDAwMDQgNy4zMzIwMyA2LjAwMDA0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNTMwN18xMTQwMDdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFByb2R1Y3Q/LnN0YXR1c1wiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVhZGluZ1wiPkNvbXBsaWFuY2U8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmRpY2F0b3IgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntmbGFnZ2VkOnNlbGVjdGVkUHJvZHVjdD8uc3RhdHVzID09PSAnbWlzc2luZycgfHwgc2VsZWN0ZWRQcm9kdWN0Py5zdGF0dXMgPT09J21pc3BsYWNlZCcsY29tcGxldGVkOnNlbGVjdGVkUHJvZHVjdD8uc3RhdHVzID09PSdwcm9wZXInfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRQcm9kdWN0Py5zdGF0dXMgPT09J3Byb3BlcicgPyAnUGxhY2VtZW50IENvbXBsaWFudCc6IHNlbGVjdGVkUHJvZHVjdD8uc3RhdHVzIHwgdGl0bGVjYXNlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTJcIiAqbmdJZj1cInByb2R1Y3ROb3RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVhZGluZ1wiPkFjdGlvbiByZXF1aXJlZDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IDogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMzkxNF81NjY4NylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgMTJWOU05IDZIOS4wMDc1TTE2LjUgOUMxNi41IDEzLjE0MjEgMTMuMTQyMSAxNi41IDkgMTYuNUM0Ljg1Nzg2IDE2LjUgMS41IDEzLjE0MjEgMS41IDlDMS41IDQuODU3ODYgNC44NTc4NiAxLjUgOSAxLjVDMTMuMTQyMSAxLjUgMTYuNSA0Ljg1Nzg2IDE2LjUgOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zOTE0XzU2Njg3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYoc2VsZWN0ZWRQcm9kdWN0Py5maXh0dXJlRGV0YWlscz8uZml4dHVyZU5hbWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXVuZGVybGluZS11bmRlcmxpbmUgbXQtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tMb2NhdGVGaXh0dXJlKHNlbGVjdGVkUHJvZHVjdD8uZml4dHVyZURldGFpbHMpXCI+e3twcm9kdWN0Tm90ZX19PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKHNob3dQcm9kdWN0TG9jYXRpb24pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDE0IDhcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyA3TDcgMUwxIDdcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfUBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxNCA4XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMSAxTDcgN0wxMyAxXCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImRldGFpbHNcIiAoY2xpY2spPVwib25DbGlja0xvY2F0ZUZpeHR1cmUoc2VsZWN0ZWRQcm9kdWN0Py5maXh0dXJlRGV0YWlscylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3Byb2R1Y3ROb3RlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAoY2xpY2spPVwic2VsZWN0ZWRQcm9kdWN0ID0gbnVsbFwiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi42NjY2NyA5LjMzMzMzSDYuNjY2NjdNNi42NjY2NyA5LjMzMzMzVjEzLjMzMzNNNi42NjY2NyA5LjMzMzMzTDIgMTRNMTMuMzMzMyA2LjY2NjY3SDkuMzMzMzNNOS4zMzMzMyA2LjY2NjY3VjIuNjY2NjdNOS4zMzMzMyA2LjY2NjY3TDE0IDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgICBAaWYoc2hvd1Byb2R1Y3RMb2NhdGlvbil7XHJcbiAgICAgICAgPGgzIGNsYXNzPVwibXQtNFwiPlN0ZXAgMTogR28gdGhlIGJlbG93IGhpZ2hsaWdodGVkIGZpeHR1cmUg4oCcPGI+e3t0aGlzLnNlbGVjdGVkUHJvZHVjdD8uZml4dHVyZURldGFpbHM/LmZpeHR1cmVOYW1lfX08L2I+4oCdPC9oMz5cclxuICAgICAgICA8cHJvZHVjdC1maXh0dXJlLWxvY2F0b3IgW2Zsb29yRGF0YV09XCJmbG9vckRhdGFcIiBbc2VsZWN0ZWRQcm9kdWN0XT1cInNlbGVjdGVkUHJvZHVjdFwiPjwvcHJvZHVjdC1maXh0dXJlLWxvY2F0b3I+XHJcbiAgICAgICAgPGgzPlN0ZXAgMjogUGxhY2UgdGhlIHByb2R1Y3QgaW4gdGhlIGhpZ2hsaWdodGVkIGFyZWEuPC9oMz5cclxuICAgICAgICA8cHJvZHVjdC16b25lLWxvY2F0b3IgW2RhdGFdPVwiZGF0YVwiIFtzZWxlY3RlZFByb2R1Y3RdPVwic2VsZWN0ZWRQcm9kdWN0XCI+PC9wcm9kdWN0LXpvbmUtbG9jYXRvcj5cclxuICAgICAgICA8aHI+XHJcbiAgICB9XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInpvbmUtZGV0YWlscyBteS0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInpvbmUtaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBkcmFmdCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZGF0YS56b25lIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aDE+e3thbGxCcmFuZHN9fTwvaDE+XHJcbiAgICAgICAgICAgICAgICA8aDQ+Q2FwYWNpdHkge3t6b25lQ2FwYWNpdHl9fTwvaDQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWx2ZXNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHMgb2YgZGF0YS5zaGVsdmVzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmKHMuc2hlbGZUeXBlID09PSdzaGVsZicpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJzLnNoZWxmVHlwZSArIChpICsgMSlcIiBjbGFzcz1cImJsb2NrIHNoZWxmXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYocy5wcm9kdWN0cy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHAgb2Ygcy5wcm9kdWN0c1wiIGNsYXNzPVwicHJvZHVjdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdFByb2R1Y3QocC5wcm9kdWN0SWQscylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzpzZWxlY3RlZFByb2R1Y3Q/LnByb2R1Y3RJZCA9PT0gcC5wcm9kdWN0SWQsJ2Vycm9yJzpwLnN0YXR1cyA9PT0gJ21pc3NpbmcnIHx8IHAuc3RhdHVzID09PSAnbWlzcGxhY2VkJ31cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihwLnN0YXR1cyAhPSAnbWlzc2luZycpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtaW1nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInA/LnByb2R1Y3RJbWFnZVVybDsgZWxzZSBwbGFjZWhvbGRlclwiIFtzcmNdPVwicD8ucHJvZHVjdEltYWdlVXJsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiUHJvZHVjdCBJbWFnZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBjbHVzdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHAucHJvZHVjdElkIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cIm1zLTFcIj57e3AucHJvZHVjdE5hbWV9fTwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtcy0xXCI+e3twLnByb2R1Y3RUeXBlfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfUBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwIG9mIFtdLmNvbnN0cnVjdG9yKHMucHJvZHVjdFBlclNoZWxmKVwiIGNsYXNzPVwicHJvZHVjdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9QGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJzLnNoZWxmVHlwZSEgKyAoaSArIDEpXCIgY2xhc3M9XCJibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKHMucHJvZHVjdHMubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2Ygcy5kaXN0cmlidXRlZFJvd3NcIiBjbGFzcz1cInRyYXkgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwIG9mIHJvd1wiIGNsYXNzPVwicHJvZHVjdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzpzZWxlY3RlZFByb2R1Y3Q/LnByb2R1Y3RJZCA9PT0gcC5wcm9kdWN0SWQsJ2Vycm9yJzpwLnN0YXR1cyA9PT0gJ21pc3NpbmcnIHx8IHAuc3RhdHVzID09PSAnbWlzcGxhY2VkJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0UHJvZHVjdChwLnByb2R1Y3RJZCxzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKHAuc3RhdHVzICE9ICdtaXNzaW5nJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtaW1nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJwPy5wcm9kdWN0SW1hZ2VVcmw7IGVsc2UgcGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJwPy5wcm9kdWN0SW1hZ2VVcmxcIiBhbHQ9XCJQcm9kdWN0IEltYWdlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGNsdXN0ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHAucHJvZHVjdElkIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwibXMtMVwiPnt7cC5wcm9kdWN0TmFtZX19PC9oNj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtcy0xXCI+e3twLnByb2R1Y3RUeXBlfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfUBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJvdyBvZiBbXS5jb25zdHJ1Y3RvcihzLnRyYXlSb3dzKVwiIGNsYXNzPVwidHJheSBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHAgb2YgW10uY29uc3RydWN0b3Iocy5wcm9kdWN0UGVyU2hlbGYpXCIgY2xhc3M9XCJwcm9kdWN0XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPCEtLSA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMFwiIChjbGljayk9XCJvbkNsaWNrUmVmcmVzaCgpXCI+UmVmcmVzaDwvYnV0dG9uPiAtLT5cclxuPC9kaXY+Il19
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS1wcm9kdWN0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9wbGFub2dyYW0vbWVyY2gtY29tcGxpYW5jZS96b25lLXByb2R1Y3RzL3pvbmUtcHJvZHVjdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm9ncmFtL21lcmNoLWNvbXBsaWFuY2Uvem9uZS1wcm9kdWN0cy96b25lLXByb2R1Y3RzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxHQUlOLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBVXZCLE1BQU0sT0FBTyxxQkFBcUI7SUFtQnZCO0lBQ0M7SUFuQkQsSUFBSSxDQUFNO0lBQ1YsS0FBSyxDQUFTO0lBQ2QsU0FBUyxDQUFNO0lBQ2YsTUFBTSxHQUFvQixFQUFFLENBQUM7SUFDN0IsZUFBZSxDQUEyQjtJQUVuRCxlQUFlLENBQU07SUFFckIsV0FBVyxDQUFnQjtJQUMzQixXQUFXLEdBQVUsRUFBRSxDQUFDO0lBQ3hCLFlBQVksR0FBVyxDQUFDLENBQUM7SUFFekIsU0FBUyxDQUFTLENBQUMseUJBQXlCO0lBQzVDLFNBQVMsQ0FBTTtJQUNmLG1CQUFtQixHQUFZLEtBQUssQ0FBQztJQUNyQyxzQkFBc0IsQ0FBTTtJQUU1QixZQUNTLFdBQTJCLEVBQzFCLFlBQTBCO1FBRDNCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUNqQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQ25ELElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxPQUFPLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUU7Z0JBQ2pELENBQUMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3ZFO1lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQ25ELENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FDN0IsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDdEUsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFFNUMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDbEMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLGVBQWdCLENBQUMsQ0FBQyxDQUN0RCxDQUFDO1lBRUYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0IsSUFBUyxDQUFDO0lBRTVDLGNBQWMsS0FBSSxDQUFDO0lBRW5CLGVBQWUsQ0FBQyxHQUFRLEVBQUUsQ0FBTTtRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUMxQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsS0FBSyxHQUFHLENBQ2pDLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLHFDQUFxQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDMUU7YUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRTtZQUN0RCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRTtnQkFDckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxtQ0FBbUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsV0FBVyxHQUFHLENBQUM7YUFDNUc7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyw0Q0FBNEMsQ0FBQzthQUNqRTtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUN6QjtRQUVELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELG9CQUFvQixDQUFDLFFBQWEsRUFBRSxRQUFnQjtRQUNsRCxNQUFNLE1BQU0sR0FBUSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRS9ELFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDL0MsTUFBTSxTQUFTLEdBQUcsS0FBSyxHQUFHLFFBQVEsQ0FBQztZQUNuQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLFNBQVMsQ0FBQyxTQUFTO2FBQ2hCLFNBQVMsQ0FBQyxJQUFJLENBQUM7YUFDZixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDM0QsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQVk7UUFDL0Isd0JBQXdCO1FBQ3hCLHNFQUFzRTtRQUN0RSxzQ0FBc0M7UUFDdEMsS0FBSztRQUVMLDREQUE0RDtRQUU1RCxrREFBa0Q7UUFDbEQsMkNBQTJDO1FBQzNDLEtBQUs7UUFFTCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDckQsbUNBQW1DO0lBQ3JDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxvQkFBeUI7UUFDM0MsSUFBSSxDQUFDLHNCQUFzQixHQUFHLG9CQUFvQixDQUFDO0lBQ3JELENBQUM7d0dBcEhVLHFCQUFxQjs0RkFBckIscUJBQXFCLGtNQ2hCbEMsMmthQWlOTTs7NEZEak1PLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlOzhHQUtoQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1zaGFyZWRcIjtcclxuaW1wb3J0IHsgVm1MaWJyYXJ5TGlzdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL3ZtLWxpYnJhcnkuaW50ZXJmYWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJ6b25lLXByb2R1Y3RzXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi96b25lLXByb2R1Y3RzLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi96b25lLXByb2R1Y3RzLmNvbXBvbmVudC5zY3NzXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBab25lUHJvZHVjdHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZGF0YTogYW55O1xyXG4gIEBJbnB1dCgpIGxldmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZmxvb3JEYXRhOiBhbnk7XHJcbiAgQElucHV0KCkgdm1MaXN0OiBWbUxpYnJhcnlMaXN0W10gPSBbXTtcclxuICBASW5wdXQoKSBwcm9kdWN0TG9jYXRpb24/OiB7IHM6IG51bWJlcjsgcGlkOiBhbnkgfTtcclxuXHJcbiAgc2VsZWN0ZWRQcm9kdWN0OiBhbnk7XHJcblxyXG4gIHByb2R1Y3ROb3RlOiBzdHJpbmcgfCBudWxsO1xyXG4gIGFsbFByb2R1Y3RzOiBhbnlbXSA9IFtdO1xyXG4gIHpvbmVDYXBhY2l0eTogbnVtYmVyID0gMDtcclxuXHJcbiAgYnJhbmROYW1lOiBzdHJpbmc7IC8vIG9ubHkgZm9yIG1pc3NpbmcgaXRlbXNcclxuICBhbGxCcmFuZHM6IGFueTtcclxuICBzaG93UHJvZHVjdExvY2F0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWlzcGxhY2VkVGFyZ2V0Rml4dHVyZTogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBhY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGEuc2hlbHZlcyA9IHRoaXMuZGF0YS5zaGVsdmVzLm1hcCgoczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChzLnNoZWxmVHlwZSAhPT0gXCJzaGVsZlwiICYmIHMucHJvZHVjdHM/Lmxlbmd0aCkge1xyXG4gICAgICAgIHMuZGlzdHJpYnV0ZWRSb3dzID0gdGhpcy5kaXN0cmlidXRlUm91bmRSb2JpbihzLnByb2R1Y3RzLCBzLnRyYXlSb3dzKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcztcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWxsUHJvZHVjdHMgPSAodGhpcy5kYXRhPy5zaGVsdmVzID8/IFtdKS5mbGF0TWFwKFxyXG4gICAgICAoczogYW55KSA9PiBzLnByb2R1Y3RzID8/IFtdLFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmFsbEJyYW5kcyA9IFtcclxuICAgICAgLi4ubmV3IFNldCh0aGlzLmRhdGEuc2hlbHZlcy5mbGF0TWFwKChzOiBhbnkpID0+IHMucHJvZHVjdEJyYW5kTmFtZSkpLFxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLnpvbmVDYXBhY2l0eSA9IHRoaXMuYWxsUHJvZHVjdHMubGVuZ3RoO1xyXG5cclxuICAgIGlmICh0aGlzLnByb2R1Y3RMb2NhdGlvbikge1xyXG4gICAgICBjb25zdCBzaGVsZiA9IHRoaXMuZGF0YS5zaGVsdmVzLmZpbmQoXHJcbiAgICAgICAgKHM6IGFueSkgPT4gcy5zaGVsZk51bWJlciA9PT0gdGhpcy5wcm9kdWN0TG9jYXRpb24hLnMsXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLm9uU2VsZWN0UHJvZHVjdCh0aGlzLnByb2R1Y3RMb2NhdGlvbi5waWQsIHNoZWxmKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHt9XHJcblxyXG4gIG9uQ2xpY2tSZWZyZXNoKCkge31cclxuXHJcbiAgb25TZWxlY3RQcm9kdWN0KHBpZDogYW55LCBzOiBhbnkpIHtcclxuICAgIHRoaXMuYnJhbmROYW1lID0gcy5wcm9kdWN0QnJhbmROYW1lO1xyXG4gICAgdGhpcy5zZWxlY3RlZFByb2R1Y3QgPSB0aGlzLmFsbFByb2R1Y3RzLmZpbmQoXHJcbiAgICAgIChwOiBhbnkpID0+IHA/LnByb2R1Y3RJZCA9PT0gcGlkLFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByb2R1Y3Quc3RhdHVzID09PSBcIm1pc3NpbmdcIikge1xyXG4gICAgICB0aGlzLnByb2R1Y3ROb3RlID0gYE5vIHByb2R1Y3QgZm91bmQuIFBsZWFzZSBmaWxsIHRoZSAke3RoaXMuYnJhbmROYW1lfWA7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRQcm9kdWN0LnN0YXR1cyA9PT0gXCJtaXNwbGFjZWRcIikge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFByb2R1Y3Q/LmZpeHR1cmVEZXRhaWxzPy5maXh0dXJlTmFtZSkge1xyXG4gICAgICAgIHRoaXMucHJvZHVjdE5vdGUgPSBgVGhpcyBwcm9kdWN0IGJlbG9uZyB0byBmaXh0dXJlICcke3RoaXMuc2VsZWN0ZWRQcm9kdWN0Py5maXh0dXJlRGV0YWlscz8uZml4dHVyZU5hbWV9J2A7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wcm9kdWN0Tm90ZSA9IGBUaGlzIHByb2R1Y3QgYmVsb25nIHRvIGFuIGFub3RoZXIgZml4dHVyZS5gO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnByb2R1Y3ROb3RlID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNob3dQcm9kdWN0TG9jYXRpb24gPSBmYWxzZTtcclxuICAgIHRoaXMubWlzcGxhY2VkVGFyZ2V0Rml4dHVyZSA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQ2xvc2UoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBkaXN0cmlidXRlUm91bmRSb2Jpbihwcm9kdWN0czogYW55LCB0cmF5Um93czogbnVtYmVyKSB7XHJcbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IHRyYXlSb3dzIH0sICgpID0+IFtdKTtcclxuXHJcbiAgICBwcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0OiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgdHJheUluZGV4ID0gaW5kZXggJSB0cmF5Um93cztcclxuICAgICAgcmVzdWx0W3RyYXlJbmRleF0ucHVzaChwcm9kdWN0KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBjb3B5U0tVKHRleHQ6IHN0cmluZykge1xyXG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZFxyXG4gICAgICAud3JpdGVUZXh0KHRleHQpXHJcbiAgICAgIC50aGVuKCgpID0+IHRoaXMudG9hc3RTZXJ2aWNlLmdldFN1Y2Nlc3NUb2FzdChcIlNLVSBDb3BpZWRcIikpXHJcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvcHk6XCIsIGVycikpO1xyXG4gIH1cclxuXHJcbiAgb25DbGlja0xvY2F0ZUZpeHR1cmUocHJvZHVjdDogYW55KSB7XHJcbiAgICAvLyBjb25zdCBhbGxGaXh0dXJlcyA9IFtcclxuICAgIC8vICAgLi4udGhpcy5mbG9vckRhdGE/LmxheW91dFBvbHlnb24uZmxhdE1hcCgoZTogYW55KSA9PiBlLmZpeHR1cmVzKSxcclxuICAgIC8vICAgLi4udGhpcy5mbG9vckRhdGE/LmNlbnRlckZpeHR1cmUsXHJcbiAgICAvLyBdO1xyXG5cclxuICAgIC8vIGNvbnN0IHRhcmdldEZpeHR1cmVJZCA9IHByb2R1Y3QuZml4dHVyZURldGFpbHMuZml4dHVyZUlkO1xyXG5cclxuICAgIC8vIHRoaXMubWlzcGxhY2VkVGFyZ2V0Rml4dHVyZSA9IGFsbEZpeHR1cmVzLmZpbmQoXHJcbiAgICAvLyAgIChmOiBhbnkpID0+IGYuX2lkID09PSB0YXJnZXRGaXh0dXJlSWQsXHJcbiAgICAvLyApO1xyXG5cclxuICAgIHRoaXMuc2hvd1Byb2R1Y3RMb2NhdGlvbiA9ICF0aGlzLnNob3dQcm9kdWN0TG9jYXRpb247XHJcbiAgICAvLyB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKHByb2R1Y3QpO1xyXG4gIH1cclxuXHJcbiAgb25Mb2FkVGFyZ2V0Rml4dHVyZSh0YXJnZXRGaXh0dXJlRGV0YWlsczogYW55KSB7XHJcbiAgICB0aGlzLm1pc3BsYWNlZFRhcmdldEZpeHR1cmUgPSB0YXJnZXRGaXh0dXJlRGV0YWlscztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRhaW5lclwiIGlkPVwiem9uZS1wcm9kdWN0LWRldGFpbHNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItNFwiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cInRpdGxlXCI+e3tkYXRhLnpvbmV9fTwvaDM+XHJcblxyXG4gICAgICAgIDxzdmcgKGNsaWNrKT1cIm9uQ2xpY2tDbG9zZSgpXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMy41IDQuNUw0LjUgMTMuNU00LjUgNC41TDEzLjUgMTMuNVwiIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBAaWYoc2VsZWN0ZWRQcm9kdWN0KXtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVyby1jYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZXJvLWltZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInNlbGVjdGVkUHJvZHVjdD8ucHJvZHVjdEltYWdlVXJsOyBlbHNlIHBsYWNlaG9sZGVyXCIgW3NyY109XCJzZWxlY3RlZFByb2R1Y3Q/LnByb2R1Y3RJbWFnZVVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiUHJvZHVjdCBJbWFnZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaXNzaW5nLWltZ1wiPk1JU1NJTkc8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlcm8tZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVhZGluZ1wiPkJyYW5kPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZGV0YWlsc1wiPnt7c2VsZWN0ZWRQcm9kdWN0Py5wcm9kdWN0QnJhbmQgPz8gYnJhbmROYW1lfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBpZihzZWxlY3RlZFByb2R1Y3Q/LnN0YXR1cyAhPT0gJ21pc3NpbmcnKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWFkaW5nXCI+Q2F0ZWdvcnk8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImRldGFpbHNcIj57e3NlbGVjdGVkUHJvZHVjdD8uYnJhbmROYW1lfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlYWRpbmdcIj5TS1U8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZGV0YWlsc1wiPnt7c2VsZWN0ZWRQcm9kdWN0Py5iYXJDb2RlfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAoY2xpY2spPVwiY29weVNLVShzZWxlY3RlZFByb2R1Y3Q/LmJhckNvZGUpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81MzA3XzExNDAwNylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zLjMzMjAzIDEwSDIuNjY1MzZDMi4zMTE3NCAxMCAxLjk3MjYgOS44NTk1NiAxLjcyMjU2IDkuNjA5NTJDMS40NzI1MSA5LjM1OTQ3IDEuMzMyMDMgOS4wMjAzMyAxLjMzMjAzIDguNjY2NzFWMi42NjY3MUMxLjMzMjAzIDIuMzEzMDkgMS40NzI1MSAxLjk3Mzk1IDEuNzIyNTYgMS43MjM5QzEuOTcyNiAxLjQ3Mzg1IDIuMzExNzQgMS4zMzMzNyAyLjY2NTM2IDEuMzMzMzdIOC42NjUzNkM5LjAxODk5IDEuMzMzMzcgOS4zNTgxMyAxLjQ3Mzg1IDkuNjA4MTcgMS43MjM5QzkuODU4MjIgMS45NzM5NSA5Ljk5ODcgMi4zMTMwOSA5Ljk5ODcgMi42NjY3MVYzLjMzMzM3TTcuMzMyMDMgNi4wMDAwNEgxMy4zMzJDMTQuMDY4NCA2LjAwMDA0IDE0LjY2NTQgNi41OTY5OSAxNC42NjU0IDcuMzMzMzdWMTMuMzMzNEMxNC42NjU0IDE0LjA2OTggMTQuMDY4NCAxNC42NjY3IDEzLjMzMiAxNC42NjY3SDcuMzMyMDNDNi41OTU2NSAxNC42NjY3IDUuOTk4NyAxNC4wNjk4IDUuOTk4NyAxMy4zMzM0VjcuMzMzMzdDNS45OTg3IDYuNTk2OTkgNi41OTU2NSA2LjAwMDA0IDcuMzMyMDMgNi4wMDAwNFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF81MzA3XzExNDAwN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRQcm9kdWN0Py5zdGF0dXNcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlYWRpbmdcIj5Db21wbGlhbmNlPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5kaWNhdG9yIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ZmxhZ2dlZDpzZWxlY3RlZFByb2R1Y3Q/LnN0YXR1cyA9PT0gJ21pc3NpbmcnIHx8IHNlbGVjdGVkUHJvZHVjdD8uc3RhdHVzID09PSdtaXNwbGFjZWQnLGNvbXBsZXRlZDpzZWxlY3RlZFByb2R1Y3Q/LnN0YXR1cyA9PT0ncHJvcGVyJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkUHJvZHVjdD8uc3RhdHVzID09PSdwcm9wZXInID8gJ1BsYWNlbWVudCBDb21wbGlhbnQnOiBzZWxlY3RlZFByb2R1Y3Q/LnN0YXR1cyB8IHRpdGxlY2FzZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0yXCIgKm5nSWY9XCJwcm9kdWN0Tm90ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlYWRpbmdcIj5BY3Rpb24gcmVxdWlyZWQ8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiA6IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzM5MTRfNTY2ODcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05IDEyVjlNOSA2SDkuMDA3NU0xNi41IDlDMTYuNSAxMy4xNDIxIDEzLjE0MjEgMTYuNSA5IDE2LjVDNC44NTc4NiAxNi41IDEuNSAxMy4xNDIxIDEuNSA5QzEuNSA0Ljg1Nzg2IDQuODU3ODYgMS41IDkgMS41QzEzLjE0MjEgMS41IDE2LjUgNC44NTc4NiAxNi41IDlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzkxNF81NjY4N1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmKHNlbGVjdGVkUHJvZHVjdD8uZml4dHVyZURldGFpbHM/LmZpeHR1cmVOYW1lKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC11bmRlcmxpbmUtdW5kZXJsaW5lIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrTG9jYXRlRml4dHVyZShzZWxlY3RlZFByb2R1Y3QpXCI+e3twcm9kdWN0Tm90ZX19PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKHNob3dQcm9kdWN0TG9jYXRpb24pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDE0IDhcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyA3TDcgMUwxIDdcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfUBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxNCA4XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMSAxTDcgN0wxMyAxXCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImRldGFpbHNcIj4ge3twcm9kdWN0Tm90ZX19IDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAoY2xpY2spPVwic2VsZWN0ZWRQcm9kdWN0ID0gbnVsbFwiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi42NjY2NyA5LjMzMzMzSDYuNjY2NjdNNi42NjY2NyA5LjMzMzMzVjEzLjMzMzNNNi42NjY2NyA5LjMzMzMzTDIgMTRNMTMuMzMzMyA2LjY2NjY3SDkuMzMzMzNNOS4zMzMzMyA2LjY2NjY3VjIuNjY2NjdNOS4zMzMzMyA2LjY2NjY3TDE0IDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgICBAaWYoc2hvd1Byb2R1Y3RMb2NhdGlvbiAmJiBzZWxlY3RlZFByb2R1Y3Q/LmZpeHR1cmVEZXRhaWxzKXtcclxuICAgICAgICA8aDMgY2xhc3M9XCJtdC00XCI+U3RlcCAxOiBHbyB0aGUgYmVsb3cgaGlnaGxpZ2h0ZWQgZml4dHVyZVxyXG4gICAgICAgICAgICDigJw8Yj57e3RoaXMuc2VsZWN0ZWRQcm9kdWN0Py5maXh0dXJlRGV0YWlscz8uZml4dHVyZU5hbWV9fTwvYj7igJ08L2gzPlxyXG4gICAgICAgIDxwcm9kdWN0LWZpeHR1cmUtbG9jYXRvciBbZmxvb3JEYXRhXT1cImZsb29yRGF0YVwiIFtzZWxlY3RlZFByb2R1Y3RdPVwic2VsZWN0ZWRQcm9kdWN0XCIgKHRhcmdldEZpeHR1cmVGdWxsRGV0YWlscyk9XCJvbkxvYWRUYXJnZXRGaXh0dXJlKCRldmVudClcIj48L3Byb2R1Y3QtZml4dHVyZS1sb2NhdG9yPlxyXG4gICAgICAgIDxoMz5TdGVwIDI6IFBsYWNlIHRoZSBwcm9kdWN0IGluIHRoZSBoaWdobGlnaHRlZCBhcmVhLjwvaDM+XHJcbiAgICAgICAgPHByb2R1Y3Qtem9uZS1sb2NhdG9yIFt0YXJnZXRQcm9kdWN0XT1cInNlbGVjdGVkUHJvZHVjdD8uZml4dHVyZURldGFpbHNcIiBbdGFyZ2V0Rml4dHVyZV09XCJtaXNwbGFjZWRUYXJnZXRGaXh0dXJlXCI+PC9wcm9kdWN0LXpvbmUtbG9jYXRvcj5cclxuICAgICAgICA8aHI+XHJcbiAgICB9XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInpvbmUtZGV0YWlscyBteS0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInpvbmUtaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBkcmFmdCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZGF0YS56b25lIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aDE+e3thbGxCcmFuZHN9fTwvaDE+XHJcbiAgICAgICAgICAgICAgICA8aDQ+Q2FwYWNpdHkge3t6b25lQ2FwYWNpdHl9fTwvaDQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWx2ZXNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHMgb2YgZGF0YS5zaGVsdmVzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmKHMuc2hlbGZUeXBlID09PSd0cmF5Jyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cInMuc2hlbGZUeXBlISArIChpICsgMSlcIiBjbGFzcz1cImJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYocy5wcm9kdWN0cy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJvdyBvZiBzLmRpc3RyaWJ1dGVkUm93c1wiIGNsYXNzPVwidHJheSBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHAgb2Ygcm93XCIgY2xhc3M9XCJwcm9kdWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQnOnNlbGVjdGVkUHJvZHVjdD8ucHJvZHVjdElkID09PSBwLnByb2R1Y3RJZCwnZXJyb3InOnAuc3RhdHVzID09PSAnbWlzc2luZycgfHwgcC5zdGF0dXMgPT09ICdtaXNwbGFjZWQnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RQcm9kdWN0KHAucHJvZHVjdElkLHMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYocC5zdGF0dXMgIT0gJ21pc3NpbmcnKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1pbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInA/LnByb2R1Y3RJbWFnZVVybDsgZWxzZSBwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cInA/LnByb2R1Y3RJbWFnZVVybFwiIGFsdD1cIlByb2R1Y3QgSW1hZ2VcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgY2x1c3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcC5wcm9kdWN0SWQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJtcy0xXCI+e3twLnByb2R1Y3ROYW1lfX08L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1zLTFcIj57e3AucHJvZHVjdFR5cGV9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9QGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm93IG9mIFtdLmNvbnN0cnVjdG9yKHMudHJheVJvd3MpXCIgY2xhc3M9XCJ0cmF5IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcCBvZiBbXS5jb25zdHJ1Y3RvcihzLnByb2R1Y3RQZXJTaGVsZilcIiBjbGFzcz1cInByb2R1Y3RcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfUBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwicy5zaGVsZlR5cGUgKyAoaSArIDEpXCIgY2xhc3M9XCJibG9jayBzaGVsZlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKHMucHJvZHVjdHMubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwIG9mIHMucHJvZHVjdHNcIiBjbGFzcz1cInByb2R1Y3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RQcm9kdWN0KHAucHJvZHVjdElkLHMpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6c2VsZWN0ZWRQcm9kdWN0Py5wcm9kdWN0SWQgPT09IHAucHJvZHVjdElkLCdlcnJvcic6cC5zdGF0dXMgPT09ICdtaXNzaW5nJyB8fCBwLnN0YXR1cyA9PT0gJ21pc3BsYWNlZCd9XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYocC5zdGF0dXMgIT0gJ21pc3NpbmcnKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWltZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJwPy5wcm9kdWN0SW1hZ2VVcmw7IGVsc2UgcGxhY2Vob2xkZXJcIiBbc3JjXT1cInA/LnByb2R1Y3RJbWFnZVVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlByb2R1Y3QgSW1hZ2VcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgY2x1c3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwLnByb2R1Y3RJZCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJtcy0xXCI+e3twLnByb2R1Y3ROYW1lfX08L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibXMtMVwiPnt7cC5wcm9kdWN0VHlwZX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcCBvZiBbXS5jb25zdHJ1Y3RvcihzLnByb2R1Y3RQZXJTaGVsZilcIiBjbGFzcz1cInByb2R1Y3RcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwXCIgKGNsaWNrKT1cIm9uQ2xpY2tSZWZyZXNoKClcIj5SZWZyZXNoPC9idXR0b24+IC0tPlxyXG48L2Rpdj4iXX0=
|