simpo-component-library 3.6.939 → 3.6.941

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.
@@ -92,12 +92,12 @@ export class BookingCartGroupsComponent {
92
92
  this.router.navigate(['/home-appointment'], { queryParams: { mode: group.mode } });
93
93
  }
94
94
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BookingCartGroupsComponent, deps: [{ token: i1.BookingProductCartService }, { token: i2.StorageServiceService }, { token: i3.Router }, { token: i4.MatDialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
95
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BookingCartGroupsComponent, isStandalone: true, selector: "simpo-booking-cart-groups", ngImport: i0, template: "<div class=\"booking-cart-groups\" [class.bcg-panel]=\"dialogRefPresent\">\n <div class=\"bcg-header\" *ngIf=\"dialogRefPresent\">\n <div class=\"bcg-header-text\">\n <div class=\"bcg-title\">Your Bookings</div>\n <div class=\"bcg-subline\">{{ drawerSubline }}</div>\n </div>\n <button class=\"bcg-close\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"bcg-banner\" *ngIf=\"!dialogRefPresent\">Bookings are placed one at a time and never merge, so each type keeps its own list and its own Continue Booking.</div>\n\n <div class=\"bcg-body\" *ngIf=\"!loading\">\n <ng-container *ngFor=\"let group of groups\">\n <div class=\"bcg-group\">\n <div class=\"bcg-group-header\">\n <span class=\"bcg-dot\" [ngClass]=\"group.mode === 'HOME_VISIT' ? 'bcg-dot-home' : 'bcg-dot-video'\"></span>\n <span class=\"bcg-group-title\">{{ group.title }}</span>\n <span class=\"bcg-group-meta\">{{ group.meta }}</span>\n </div>\n <div class=\"bcg-items\">\n <div class=\"bcg-item\" *ngFor=\"let item of group.items\">\n <button class=\"bcg-item-remove\" (click)=\"removeItem(group, item)\">\n <mat-icon>close</mat-icon>\n </button>\n <img class=\"bcg-item-img\" *ngIf=\"item.imgUrl\" [src]=\"item.imgUrl\" [alt]=\"item.itemName\" />\n <div class=\"bcg-item-img bcg-item-img-empty\" *ngIf=\"!item.imgUrl\"></div>\n <div class=\"bcg-item-name\">{{ item.itemName }}</div>\n <div class=\"bcg-item-note\">{{ group.itemNote }}</div>\n </div>\n </div>\n <div class=\"bcg-group-footer\">\n <button class=\"bcg-continue\" [ngClass]=\"group.colorClass\" (click)=\"continueBooking(group)\">Continue Booking</button>\n <a class=\"bcg-add-more\" *ngIf=\"!dialogRefPresent\" (click)=\"browse()\">Add more</a>\n </div>\n </div>\n </ng-container>\n\n <div class=\"bcg-later\" *ngIf=\"dialogRefPresent && !isEmpty\">\n <mat-icon class=\"bcg-later-icon\">storefront</mat-icon>\n <div class=\"bcg-later-text\">In-Store visits will appear here.</div>\n <div class=\"bcg-later-badge\">Later</div>\n </div>\n\n <div class=\"bcg-empty\" *ngIf=\"isEmpty\">\n <mat-icon class=\"bcg-empty-icon\">event_available</mat-icon>\n <div class=\"bcg-empty-title\">You haven't added anything yet.</div>\n <div class=\"bcg-empty-sub\">Try a piece at home or on a video call \u2014 add it here first, book when you're ready.</div>\n <button class=\"bcg-browse\" (click)=\"browse()\">Browse collections</button>\n </div>\n </div>\n</div>\n", styles: [".booking-cart-groups{display:flex;flex-direction:column;width:100%;background:#fff;font-family:inherit;border:1px solid #e2e8f0;border-radius:8px}.booking-cart-groups.bcg-panel{height:100%;border:none;border-radius:0}.bcg-header{flex:none;padding:20px 22px;border-bottom:1px solid #EFEBE5;display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.bcg-header-text{display:flex;flex-direction:column;gap:2px}.bcg-title{font-size:17px;font-weight:600;color:#1b2436}.bcg-subline{font-size:12.5px;color:#8a94a3}.bcg-close{border:none;background:none;cursor:pointer;color:#8a94a3;line-height:0;padding:3px}.bcg-banner{font-size:12.5px;line-height:1.6;color:#8a94a3;background:#fbfaf8;border:1px solid #EDE8E2;border-radius:8px;padding:13px 15px;margin:18px 22px 0}.bcg-body{flex:1;min-height:0;overflow-y:auto;padding:18px 22px;display:flex;flex-direction:column;gap:18px}.bcg-group{border:1px solid #EDE8E2;border-radius:10px;overflow:hidden}.bcg-group-header{padding:12px 14px;background:#fbfaf8;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;gap:9px}.bcg-dot{width:8px;height:8px;border-radius:999px;flex:none}.bcg-dot-home{background:#16233a}.bcg-dot-video{background:#7c3a11}.bcg-group-title{flex:1;font-size:14px;font-weight:600;color:#1b2436}.bcg-group-meta{font-size:11.5px;color:#8a94a3}.bcg-items{padding:12px 14px 4px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;max-height:340px;overflow-y:auto}.bcg-panel .bcg-items{grid-template-columns:repeat(2,1fr);gap:10px;max-height:260px}.bcg-item{position:relative;border:1px solid #F0ECE7;border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px;background:#fdfcfb}.bcg-panel .bcg-item{border-radius:8px;padding:8px;gap:6px}.bcg-item-img{width:100%;height:78px;border-radius:7px;object-fit:cover;background:#f3efe9}.bcg-panel .bcg-item-img{height:58px;border-radius:6px}.bcg-item-img-empty{background:#f3efe9}.bcg-item-name{font-size:12.5px;line-height:1.35;color:#1b2436;min-height:32px}.bcg-panel .bcg-item-name{font-size:11.5px;line-height:1.3;min-height:28px}.bcg-item-note{font-size:11px;color:#a9b1bd}.bcg-panel .bcg-item-note{font-size:10px}.bcg-item-remove{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:999px;border:none;background:#fff;box-shadow:0 1px 4px #0000001f;cursor:pointer;color:#8a94a3;display:grid;place-items:center;padding:0;line-height:0}.bcg-item-remove mat-icon{font-size:13px;height:13px;width:13px}.bcg-panel .bcg-item-remove{top:5px;right:5px;width:19px;height:19px}.bcg-panel .bcg-item-remove mat-icon{font-size:11px;height:11px;width:11px}.bcg-group-footer{padding:14px 18px;display:flex;align-items:center;gap:14px}.bcg-panel .bcg-group-footer{padding:12px 14px}.bcg-continue{flex:1;height:46px;border:none;border-radius:8px;color:#fff;font-size:13.5px;font-weight:600;cursor:pointer}.bcg-continue.bcg-mode-home{background:#16233a}.bcg-continue.bcg-mode-video{background:#7c3a11}.bcg-add-more{font-size:12.5px;color:#7c3a11;cursor:pointer;text-decoration:underline;white-space:nowrap}.bcg-later{flex:none;border:1px dashed #DDD5CB;border-radius:10px;padding:14px;display:flex;align-items:center;gap:10px}.bcg-later-icon{color:#b6aba0!important;font-size:18px!important;height:18px!important;width:18px!important}.bcg-later-text{flex:1;font-size:12.5px;color:#9aa3b0}.bcg-later-badge{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#b6aba0;font-weight:600}.bcg-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px;text-align:center}.bcg-empty-icon{font-size:40px;height:40px;width:40px;color:#c9b7a2}.bcg-empty-title{font-size:16px;font-weight:600;color:#1b2436}.bcg-empty-sub{font-size:12.5px;line-height:1.6;color:#8a94a3;max-width:240px}.bcg-browse{height:42px;padding:0 20px;border:1.5px solid #7C3A11;border-radius:8px;background:#fff;color:#7c3a11;font-size:13px;font-weight:600;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BookingCartGroupsComponent, isStandalone: true, selector: "simpo-booking-cart-groups", ngImport: i0, template: "<div class=\"booking-cart-groups\" [class.bcg-panel]=\"dialogRefPresent\">\n <div class=\"bcg-header\" *ngIf=\"dialogRefPresent\">\n <div class=\"bcg-header-text\">\n <div class=\"bcg-title\">Your Bookings</div>\n <div class=\"bcg-subline\">{{ drawerSubline }}</div>\n </div>\n <button class=\"bcg-close\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"bcg-banner\" *ngIf=\"!dialogRefPresent\">Bookings are placed one at a time and never merge, so each type keeps its own list and its own Continue Booking.</div>\n\n <div class=\"bcg-body\" *ngIf=\"!loading\">\n <ng-container *ngFor=\"let group of groups\">\n <div class=\"bcg-group\">\n <div class=\"bcg-group-header\">\n <span class=\"bcg-dot\" [ngClass]=\"group.mode === 'HOME_VISIT' ? 'bcg-dot-home' : 'bcg-dot-video'\"></span>\n <span class=\"bcg-group-title\">{{ group.title }}</span>\n <span class=\"bcg-group-meta\">{{ group.meta }}</span>\n </div>\n <div class=\"bcg-items\">\n <div class=\"bcg-item\" *ngFor=\"let item of group.items\">\n <button class=\"bcg-item-remove\" (click)=\"removeItem(group, item)\">\n <mat-icon>close</mat-icon>\n </button>\n <img class=\"bcg-item-img\" *ngIf=\"item.imgUrl\" [src]=\"item.imgUrl\" [alt]=\"item.itemName\" />\n <div class=\"bcg-item-img bcg-item-img-empty\" *ngIf=\"!item.imgUrl\"></div>\n <div class=\"bcg-item-name\">{{ item.itemName }}</div>\n <div class=\"bcg-item-note\">{{ group.itemNote }}</div>\n </div>\n </div>\n <div class=\"bcg-group-footer\">\n <button class=\"bcg-continue\" [ngClass]=\"group.colorClass\" (click)=\"continueBooking(group)\">Continue Booking</button>\n <a class=\"bcg-add-more\" *ngIf=\"!dialogRefPresent\" (click)=\"browse()\">Add more</a>\n </div>\n </div>\n </ng-container>\n\n <div class=\"bcg-later\" *ngIf=\"dialogRefPresent && !isEmpty\">\n <mat-icon class=\"bcg-later-icon\">storefront</mat-icon>\n <div class=\"bcg-later-text\">In-Store visits will appear here.</div>\n <div class=\"bcg-later-badge\">Later</div>\n </div>\n\n <div class=\"bcg-empty\" *ngIf=\"isEmpty\">\n <mat-icon class=\"bcg-empty-icon\">event_available</mat-icon>\n <div class=\"bcg-empty-title\">You haven't added anything yet.</div>\n <div class=\"bcg-empty-sub\">Try a piece at home or on a video call \u2014 add it here first, book when you're ready.</div>\n <button class=\"bcg-browse\" (click)=\"browse()\">Browse collections</button>\n </div>\n </div>\n</div>\n", styles: [".booking-cart-groups{display:flex;flex-direction:column;width:100%;background:#fff;font-family:inherit;border:1px solid #e2e8f0;border-radius:8px}.booking-cart-groups.bcg-panel{width:400px;max-width:92vw;height:100%;border:none;border-radius:0}.bcg-header{flex:none;padding:20px 22px;border-bottom:1px solid #EFEBE5;display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.bcg-header-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.bcg-title{font-size:17px;font-weight:600;color:#1b2436}.bcg-subline{font-size:12.5px;color:#8a94a3}.bcg-close{flex:none;border:none;background:none;cursor:pointer;color:#8a94a3;line-height:0;padding:3px}.bcg-banner{font-size:12.5px;line-height:1.6;color:#8a94a3;background:#fbfaf8;border:1px solid #EDE8E2;border-radius:8px;padding:13px 15px;margin:18px 22px 0}.bcg-body{flex:1;min-height:0;overflow-y:auto;padding:18px 22px;display:flex;flex-direction:column;gap:18px}.bcg-group{border:1px solid #EDE8E2;border-radius:10px;overflow:hidden}.bcg-group-header{padding:12px 14px;background:#fbfaf8;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;gap:9px}.bcg-dot{width:8px;height:8px;border-radius:999px;flex:none}.bcg-dot-home{background:#16233a}.bcg-dot-video{background:#7c3a11}.bcg-group-title{flex:1;font-size:14px;font-weight:600;color:#1b2436}.bcg-group-meta{font-size:11.5px;color:#8a94a3}.bcg-items{padding:12px 14px 4px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;max-height:340px;overflow-y:auto}.bcg-panel .bcg-items{grid-template-columns:repeat(2,1fr);gap:10px;max-height:260px}.bcg-item{position:relative;border:1px solid #F0ECE7;border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px;background:#fdfcfb}.bcg-panel .bcg-item{border-radius:8px;padding:8px;gap:6px}.bcg-item-img{width:100%;height:78px;border-radius:7px;object-fit:cover;background:#f3efe9}.bcg-panel .bcg-item-img{height:58px;border-radius:6px}.bcg-item-img-empty{background:#f3efe9}.bcg-item-name{font-size:12.5px;line-height:1.35;color:#1b2436;min-height:32px}.bcg-panel .bcg-item-name{font-size:11.5px;line-height:1.3;min-height:28px}.bcg-item-note{font-size:11px;color:#a9b1bd}.bcg-panel .bcg-item-note{font-size:10px}.bcg-item-remove{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:999px;border:none;background:#fff;box-shadow:0 1px 4px #0000001f;cursor:pointer;color:#8a94a3;display:grid;place-items:center;padding:0;line-height:0}.bcg-item-remove mat-icon{font-size:13px;height:13px;width:13px}.bcg-panel .bcg-item-remove{top:5px;right:5px;width:19px;height:19px}.bcg-panel .bcg-item-remove mat-icon{font-size:11px;height:11px;width:11px}.bcg-group-footer{padding:14px 18px;display:flex;align-items:center;gap:14px}.bcg-panel .bcg-group-footer{padding:12px 14px}.bcg-continue{flex:1;height:46px;border:none;border-radius:8px;color:#fff;font-size:13.5px;font-weight:600;cursor:pointer}.bcg-continue.bcg-mode-home{background:#16233a}.bcg-continue.bcg-mode-video{background:#7c3a11}.bcg-add-more{font-size:12.5px;color:#7c3a11;cursor:pointer;text-decoration:underline;white-space:nowrap}.bcg-later{flex:none;border:1px dashed #DDD5CB;border-radius:10px;padding:14px;display:flex;align-items:center;gap:10px}.bcg-later-icon{color:#b6aba0!important;font-size:18px!important;height:18px!important;width:18px!important}.bcg-later-text{flex:1;font-size:12.5px;color:#9aa3b0}.bcg-later-badge{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#b6aba0;font-weight:600}.bcg-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px;text-align:center}.bcg-empty-icon{font-size:40px;height:40px;width:40px;color:#c9b7a2}.bcg-empty-title{font-size:16px;font-weight:600;color:#1b2436}.bcg-empty-sub{font-size:12.5px;line-height:1.6;color:#8a94a3;max-width:240px}.bcg-browse{height:42px;padding:0 20px;border:1.5px solid #7C3A11;border-radius:8px;background:#fff;color:#7c3a11;font-size:13px;font-weight:600;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
96
96
  }
97
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BookingCartGroupsComponent, decorators: [{
98
98
  type: Component,
99
- args: [{ selector: 'simpo-booking-cart-groups', standalone: true, imports: [CommonModule, MatIconModule], template: "<div class=\"booking-cart-groups\" [class.bcg-panel]=\"dialogRefPresent\">\n <div class=\"bcg-header\" *ngIf=\"dialogRefPresent\">\n <div class=\"bcg-header-text\">\n <div class=\"bcg-title\">Your Bookings</div>\n <div class=\"bcg-subline\">{{ drawerSubline }}</div>\n </div>\n <button class=\"bcg-close\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"bcg-banner\" *ngIf=\"!dialogRefPresent\">Bookings are placed one at a time and never merge, so each type keeps its own list and its own Continue Booking.</div>\n\n <div class=\"bcg-body\" *ngIf=\"!loading\">\n <ng-container *ngFor=\"let group of groups\">\n <div class=\"bcg-group\">\n <div class=\"bcg-group-header\">\n <span class=\"bcg-dot\" [ngClass]=\"group.mode === 'HOME_VISIT' ? 'bcg-dot-home' : 'bcg-dot-video'\"></span>\n <span class=\"bcg-group-title\">{{ group.title }}</span>\n <span class=\"bcg-group-meta\">{{ group.meta }}</span>\n </div>\n <div class=\"bcg-items\">\n <div class=\"bcg-item\" *ngFor=\"let item of group.items\">\n <button class=\"bcg-item-remove\" (click)=\"removeItem(group, item)\">\n <mat-icon>close</mat-icon>\n </button>\n <img class=\"bcg-item-img\" *ngIf=\"item.imgUrl\" [src]=\"item.imgUrl\" [alt]=\"item.itemName\" />\n <div class=\"bcg-item-img bcg-item-img-empty\" *ngIf=\"!item.imgUrl\"></div>\n <div class=\"bcg-item-name\">{{ item.itemName }}</div>\n <div class=\"bcg-item-note\">{{ group.itemNote }}</div>\n </div>\n </div>\n <div class=\"bcg-group-footer\">\n <button class=\"bcg-continue\" [ngClass]=\"group.colorClass\" (click)=\"continueBooking(group)\">Continue Booking</button>\n <a class=\"bcg-add-more\" *ngIf=\"!dialogRefPresent\" (click)=\"browse()\">Add more</a>\n </div>\n </div>\n </ng-container>\n\n <div class=\"bcg-later\" *ngIf=\"dialogRefPresent && !isEmpty\">\n <mat-icon class=\"bcg-later-icon\">storefront</mat-icon>\n <div class=\"bcg-later-text\">In-Store visits will appear here.</div>\n <div class=\"bcg-later-badge\">Later</div>\n </div>\n\n <div class=\"bcg-empty\" *ngIf=\"isEmpty\">\n <mat-icon class=\"bcg-empty-icon\">event_available</mat-icon>\n <div class=\"bcg-empty-title\">You haven't added anything yet.</div>\n <div class=\"bcg-empty-sub\">Try a piece at home or on a video call \u2014 add it here first, book when you're ready.</div>\n <button class=\"bcg-browse\" (click)=\"browse()\">Browse collections</button>\n </div>\n </div>\n</div>\n", styles: [".booking-cart-groups{display:flex;flex-direction:column;width:100%;background:#fff;font-family:inherit;border:1px solid #e2e8f0;border-radius:8px}.booking-cart-groups.bcg-panel{height:100%;border:none;border-radius:0}.bcg-header{flex:none;padding:20px 22px;border-bottom:1px solid #EFEBE5;display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.bcg-header-text{display:flex;flex-direction:column;gap:2px}.bcg-title{font-size:17px;font-weight:600;color:#1b2436}.bcg-subline{font-size:12.5px;color:#8a94a3}.bcg-close{border:none;background:none;cursor:pointer;color:#8a94a3;line-height:0;padding:3px}.bcg-banner{font-size:12.5px;line-height:1.6;color:#8a94a3;background:#fbfaf8;border:1px solid #EDE8E2;border-radius:8px;padding:13px 15px;margin:18px 22px 0}.bcg-body{flex:1;min-height:0;overflow-y:auto;padding:18px 22px;display:flex;flex-direction:column;gap:18px}.bcg-group{border:1px solid #EDE8E2;border-radius:10px;overflow:hidden}.bcg-group-header{padding:12px 14px;background:#fbfaf8;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;gap:9px}.bcg-dot{width:8px;height:8px;border-radius:999px;flex:none}.bcg-dot-home{background:#16233a}.bcg-dot-video{background:#7c3a11}.bcg-group-title{flex:1;font-size:14px;font-weight:600;color:#1b2436}.bcg-group-meta{font-size:11.5px;color:#8a94a3}.bcg-items{padding:12px 14px 4px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;max-height:340px;overflow-y:auto}.bcg-panel .bcg-items{grid-template-columns:repeat(2,1fr);gap:10px;max-height:260px}.bcg-item{position:relative;border:1px solid #F0ECE7;border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px;background:#fdfcfb}.bcg-panel .bcg-item{border-radius:8px;padding:8px;gap:6px}.bcg-item-img{width:100%;height:78px;border-radius:7px;object-fit:cover;background:#f3efe9}.bcg-panel .bcg-item-img{height:58px;border-radius:6px}.bcg-item-img-empty{background:#f3efe9}.bcg-item-name{font-size:12.5px;line-height:1.35;color:#1b2436;min-height:32px}.bcg-panel .bcg-item-name{font-size:11.5px;line-height:1.3;min-height:28px}.bcg-item-note{font-size:11px;color:#a9b1bd}.bcg-panel .bcg-item-note{font-size:10px}.bcg-item-remove{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:999px;border:none;background:#fff;box-shadow:0 1px 4px #0000001f;cursor:pointer;color:#8a94a3;display:grid;place-items:center;padding:0;line-height:0}.bcg-item-remove mat-icon{font-size:13px;height:13px;width:13px}.bcg-panel .bcg-item-remove{top:5px;right:5px;width:19px;height:19px}.bcg-panel .bcg-item-remove mat-icon{font-size:11px;height:11px;width:11px}.bcg-group-footer{padding:14px 18px;display:flex;align-items:center;gap:14px}.bcg-panel .bcg-group-footer{padding:12px 14px}.bcg-continue{flex:1;height:46px;border:none;border-radius:8px;color:#fff;font-size:13.5px;font-weight:600;cursor:pointer}.bcg-continue.bcg-mode-home{background:#16233a}.bcg-continue.bcg-mode-video{background:#7c3a11}.bcg-add-more{font-size:12.5px;color:#7c3a11;cursor:pointer;text-decoration:underline;white-space:nowrap}.bcg-later{flex:none;border:1px dashed #DDD5CB;border-radius:10px;padding:14px;display:flex;align-items:center;gap:10px}.bcg-later-icon{color:#b6aba0!important;font-size:18px!important;height:18px!important;width:18px!important}.bcg-later-text{flex:1;font-size:12.5px;color:#9aa3b0}.bcg-later-badge{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#b6aba0;font-weight:600}.bcg-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px;text-align:center}.bcg-empty-icon{font-size:40px;height:40px;width:40px;color:#c9b7a2}.bcg-empty-title{font-size:16px;font-weight:600;color:#1b2436}.bcg-empty-sub{font-size:12.5px;line-height:1.6;color:#8a94a3;max-width:240px}.bcg-browse{height:42px;padding:0 20px;border:1.5px solid #7C3A11;border-radius:8px;background:#fff;color:#7c3a11;font-size:13px;font-weight:600;cursor:pointer}\n"] }]
99
+ args: [{ selector: 'simpo-booking-cart-groups', standalone: true, imports: [CommonModule, MatIconModule], template: "<div class=\"booking-cart-groups\" [class.bcg-panel]=\"dialogRefPresent\">\n <div class=\"bcg-header\" *ngIf=\"dialogRefPresent\">\n <div class=\"bcg-header-text\">\n <div class=\"bcg-title\">Your Bookings</div>\n <div class=\"bcg-subline\">{{ drawerSubline }}</div>\n </div>\n <button class=\"bcg-close\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"bcg-banner\" *ngIf=\"!dialogRefPresent\">Bookings are placed one at a time and never merge, so each type keeps its own list and its own Continue Booking.</div>\n\n <div class=\"bcg-body\" *ngIf=\"!loading\">\n <ng-container *ngFor=\"let group of groups\">\n <div class=\"bcg-group\">\n <div class=\"bcg-group-header\">\n <span class=\"bcg-dot\" [ngClass]=\"group.mode === 'HOME_VISIT' ? 'bcg-dot-home' : 'bcg-dot-video'\"></span>\n <span class=\"bcg-group-title\">{{ group.title }}</span>\n <span class=\"bcg-group-meta\">{{ group.meta }}</span>\n </div>\n <div class=\"bcg-items\">\n <div class=\"bcg-item\" *ngFor=\"let item of group.items\">\n <button class=\"bcg-item-remove\" (click)=\"removeItem(group, item)\">\n <mat-icon>close</mat-icon>\n </button>\n <img class=\"bcg-item-img\" *ngIf=\"item.imgUrl\" [src]=\"item.imgUrl\" [alt]=\"item.itemName\" />\n <div class=\"bcg-item-img bcg-item-img-empty\" *ngIf=\"!item.imgUrl\"></div>\n <div class=\"bcg-item-name\">{{ item.itemName }}</div>\n <div class=\"bcg-item-note\">{{ group.itemNote }}</div>\n </div>\n </div>\n <div class=\"bcg-group-footer\">\n <button class=\"bcg-continue\" [ngClass]=\"group.colorClass\" (click)=\"continueBooking(group)\">Continue Booking</button>\n <a class=\"bcg-add-more\" *ngIf=\"!dialogRefPresent\" (click)=\"browse()\">Add more</a>\n </div>\n </div>\n </ng-container>\n\n <div class=\"bcg-later\" *ngIf=\"dialogRefPresent && !isEmpty\">\n <mat-icon class=\"bcg-later-icon\">storefront</mat-icon>\n <div class=\"bcg-later-text\">In-Store visits will appear here.</div>\n <div class=\"bcg-later-badge\">Later</div>\n </div>\n\n <div class=\"bcg-empty\" *ngIf=\"isEmpty\">\n <mat-icon class=\"bcg-empty-icon\">event_available</mat-icon>\n <div class=\"bcg-empty-title\">You haven't added anything yet.</div>\n <div class=\"bcg-empty-sub\">Try a piece at home or on a video call \u2014 add it here first, book when you're ready.</div>\n <button class=\"bcg-browse\" (click)=\"browse()\">Browse collections</button>\n </div>\n </div>\n</div>\n", styles: [".booking-cart-groups{display:flex;flex-direction:column;width:100%;background:#fff;font-family:inherit;border:1px solid #e2e8f0;border-radius:8px}.booking-cart-groups.bcg-panel{width:400px;max-width:92vw;height:100%;border:none;border-radius:0}.bcg-header{flex:none;padding:20px 22px;border-bottom:1px solid #EFEBE5;display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.bcg-header-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.bcg-title{font-size:17px;font-weight:600;color:#1b2436}.bcg-subline{font-size:12.5px;color:#8a94a3}.bcg-close{flex:none;border:none;background:none;cursor:pointer;color:#8a94a3;line-height:0;padding:3px}.bcg-banner{font-size:12.5px;line-height:1.6;color:#8a94a3;background:#fbfaf8;border:1px solid #EDE8E2;border-radius:8px;padding:13px 15px;margin:18px 22px 0}.bcg-body{flex:1;min-height:0;overflow-y:auto;padding:18px 22px;display:flex;flex-direction:column;gap:18px}.bcg-group{border:1px solid #EDE8E2;border-radius:10px;overflow:hidden}.bcg-group-header{padding:12px 14px;background:#fbfaf8;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;gap:9px}.bcg-dot{width:8px;height:8px;border-radius:999px;flex:none}.bcg-dot-home{background:#16233a}.bcg-dot-video{background:#7c3a11}.bcg-group-title{flex:1;font-size:14px;font-weight:600;color:#1b2436}.bcg-group-meta{font-size:11.5px;color:#8a94a3}.bcg-items{padding:12px 14px 4px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;max-height:340px;overflow-y:auto}.bcg-panel .bcg-items{grid-template-columns:repeat(2,1fr);gap:10px;max-height:260px}.bcg-item{position:relative;border:1px solid #F0ECE7;border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px;background:#fdfcfb}.bcg-panel .bcg-item{border-radius:8px;padding:8px;gap:6px}.bcg-item-img{width:100%;height:78px;border-radius:7px;object-fit:cover;background:#f3efe9}.bcg-panel .bcg-item-img{height:58px;border-radius:6px}.bcg-item-img-empty{background:#f3efe9}.bcg-item-name{font-size:12.5px;line-height:1.35;color:#1b2436;min-height:32px}.bcg-panel .bcg-item-name{font-size:11.5px;line-height:1.3;min-height:28px}.bcg-item-note{font-size:11px;color:#a9b1bd}.bcg-panel .bcg-item-note{font-size:10px}.bcg-item-remove{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:999px;border:none;background:#fff;box-shadow:0 1px 4px #0000001f;cursor:pointer;color:#8a94a3;display:grid;place-items:center;padding:0;line-height:0}.bcg-item-remove mat-icon{font-size:13px;height:13px;width:13px}.bcg-panel .bcg-item-remove{top:5px;right:5px;width:19px;height:19px}.bcg-panel .bcg-item-remove mat-icon{font-size:11px;height:11px;width:11px}.bcg-group-footer{padding:14px 18px;display:flex;align-items:center;gap:14px}.bcg-panel .bcg-group-footer{padding:12px 14px}.bcg-continue{flex:1;height:46px;border:none;border-radius:8px;color:#fff;font-size:13.5px;font-weight:600;cursor:pointer}.bcg-continue.bcg-mode-home{background:#16233a}.bcg-continue.bcg-mode-video{background:#7c3a11}.bcg-add-more{font-size:12.5px;color:#7c3a11;cursor:pointer;text-decoration:underline;white-space:nowrap}.bcg-later{flex:none;border:1px dashed #DDD5CB;border-radius:10px;padding:14px;display:flex;align-items:center;gap:10px}.bcg-later-icon{color:#b6aba0!important;font-size:18px!important;height:18px!important;width:18px!important}.bcg-later-text{flex:1;font-size:12.5px;color:#9aa3b0}.bcg-later-badge{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#b6aba0;font-weight:600}.bcg-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px;text-align:center}.bcg-empty-icon{font-size:40px;height:40px;width:40px;color:#c9b7a2}.bcg-empty-title{font-size:16px;font-weight:600;color:#1b2436}.bcg-empty-sub{font-size:12.5px;line-height:1.6;color:#8a94a3;max-width:240px}.bcg-browse{height:42px;padding:0 20px;border:1.5px solid #7C3A11;border-radius:8px;background:#fff;color:#7c3a11;font-size:13px;font-weight:600;cursor:pointer}\n"] }]
100
100
  }], ctorParameters: () => [{ type: i1.BookingProductCartService }, { type: i2.StorageServiceService }, { type: i3.Router }, { type: i4.MatDialogRef, decorators: [{
101
101
  type: Optional
102
102
  }] }] });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2Jvb2tpbmctY2FydC1ncm91cHMvYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2Jvb2tpbmctY2FydC1ncm91cHMvYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQWdCdkQsZ0dBQWdHO0FBQ2hHLDhGQUE4RjtBQUM5RixnR0FBZ0c7QUFDaEcsTUFBTSxTQUFTLEdBQWlJO0lBQzlJLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRTtJQUNoSCxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRTtDQUNsSCxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBUUgsTUFBTSxPQUFPLDBCQUEwQjtJQUlyQyxZQUNtQix5QkFBb0QsRUFDcEQsY0FBcUMsRUFDckMsTUFBYyxFQUNGLFNBQW1EO1FBSC9ELDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFDcEQsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FB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RSxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUF1QjtRQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pGLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckYsQ0FBQzsrR0E1RVUsMEJBQTBCO21HQUExQiwwQkFBMEIscUZDeEN2Qywrb0ZBcURBLGk4SERqQlksWUFBWSw2VkFBRSxhQUFhOzs0RkFJMUIsMEJBQTBCO2tCQVB0QyxTQUFTOytCQUNFLDJCQUEyQixjQUN6QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDOzswQkFZbkMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZSwgQm9va2luZ0NhcnRNb2RlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYm9va2luZy1wcm9kdWN0LWNhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vLi4vZWNvbW1lcmNlL3N0eWxlcy9PcmRlcmVkSXRlbXMubW9kYWwnO1xuXG5pbnRlcmZhY2UgQm9va2luZ0NhcnRHcm91cCB7XG4gIG1vZGU6IEJvb2tpbmdDYXJ0TW9kZTtcbiAgdGl0bGU6IHN0cmluZztcbiAgbWV0YTogc3RyaW5nO1xuICBpdGVtTm90ZTogc3RyaW5nO1xuICBjb2xvckNsYXNzOiAnYmNnLW1vZGUtaG9tZScgfCAnYmNnLW1vZGUtdmlkZW8nO1xuICBpdGVtczogT3JkZXJlZEl0ZW1zW107XG59XG5cbi8vIFBlci1tb2RlIGNvcHkvY29sb3IsIG1hdGNoaW5nIHRoZSBkZXNpZ24gcHJvdG90eXBlIChTdG9yZSBQcm90b3R5cGUuZGMuaHRtbCwgQm9va2luZyBDYXJ0IHRhYlxuLy8gYW5kIEJvb2tpbmdzIGRyYXdlcikuIFRoZSBcIkVuZ2xpc2hcIiBzdWZmaXggb24gVmlkZW8gQ2FsbCBpcyBhIHN0YXRpYyBsYWJlbCBpbiB0aGUgcHJvdG90eXBlXG4vLyBpdHNlbGYgKG5vdCBkZXJpdmVkIGZyb20gYW55IHJlYWwgbGFuZ3VhZ2UtcHJlZmVyZW5jZSBmaWVsZCksIHNvIGl0J3MgcG9ydGVkIGFzIGxpdGVyYWwgdGV4dC5cbmNvbnN0IE1PREVfTUVUQTogUmVjb3JkPEJvb2tpbmdDYXJ0TW9kZSwgeyB0aXRsZTogc3RyaW5nOyBzdWZmaXg6IHN0cmluZzsgaXRlbU5vdGU6IHN0cmluZzsgY29sb3JDbGFzczogJ2JjZy1tb2RlLWhvbWUnIHwgJ2JjZy1tb2RlLXZpZGVvJyB9PiA9IHtcbiAgSE9NRV9WSVNJVDogeyB0aXRsZTogJ0hvbWUgVmlzaXQnLCBzdWZmaXg6ICdmcmVlJywgaXRlbU5vdGU6ICdUcnkgYXQgaG9tZSDCtyBmcmVlJywgY29sb3JDbGFzczogJ2JjZy1tb2RlLWhvbWUnIH0sXG4gIFZJREVPX0NBTEw6IHsgdGl0bGU6ICdWaWRlbyBDYWxsJywgc3VmZml4OiAnRW5nbGlzaCcsIGl0ZW1Ob3RlOiAnTGl2ZSB2aWRlbyBjYWxsJywgY29sb3JDbGFzczogJ2JjZy1tb2RlLXZpZGVvJyB9LFxufTtcblxuLyoqXG4gKiBTaGFyZWQgXCJncm91cGVkIGJvb2tpbmcgY2FydFwiIHZpZXcg4oCUIG9uZSBzZWN0aW9uIHBlciBub24tZW1wdHkgbW9kZSAoSG9tZSBWaXNpdCAvIFZpZGVvIENhbGwpLFxuICogZWFjaCB3aXRoIGl0cyBvd24gQ29udGludWUgQm9va2luZyBhY3Rpb24sIHNpbmNlIGEgYm9va2luZyBjYW4gb25seSBldmVyIGJlIG9uZSBtb2RlLiBVc2VkXG4gKiBib3RoIGFzIHRoZSBoZWFkZXIncyBCb29raW5ncyBkcmF3ZXIgKG9wZW5lZCB2aWEgTWF0RGlhbG9nLCBwYW5lbENsYXNzICdzaWRlcGFuZWwtY2xhc3MnLCBzYW1lXG4gKiBjb252ZW50aW9uIGFzIHRoZSByZXN0IG9mIHRoaXMgYXBwJ3Mgc2lkZSBwYW5lbHMpIGFuZCBlbWJlZGRlZCBpbmxpbmUgaW4gdGhlIENhcnQgcGFnZSdzXG4gKiBCb29raW5nIENhcnQgdGFiLCBzbyB0aGUgdHdvIHN1cmZhY2VzIG5ldmVyIHNob3cgZGlmZmVyZW50IGRhdGEuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLWJvb2tpbmctY2FydC1ncm91cHMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jvb2tpbmctY2FydC1ncm91cHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBCb29raW5nQ2FydEdyb3Vwc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGdyb3VwczogQm9va2luZ0NhcnRHcm91cFtdID0gW107XG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZTogQm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEJvb2tpbmdDYXJ0R3JvdXBzQ29tcG9uZW50PixcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRHcm91cChtb2RlOiBCb29raW5nQ2FydE1vZGUsIGl0ZW1zOiBPcmRlcmVkSXRlbXNbXSk6IEJvb2tpbmdDYXJ0R3JvdXAge1xuICAgIGNvbnN0IG1ldGEgPSBNT0RFX01FVEFbbW9kZV07XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGUsXG4gICAgICB0aXRsZTogbWV0YS50aXRsZSxcbiAgICAgIG1ldGE6IGAke2l0ZW1zLmxlbmd0aH0gaXRlbSR7aXRlbXMubGVuZ3RoID09PSAxID8gJycgOiAncyd9IMK3ICR7bWV0YS5zdWZmaXh9YCxcbiAgICAgIGl0ZW1Ob3RlOiBtZXRhLml0ZW1Ob3RlLFxuICAgICAgY29sb3JDbGFzczogbWV0YS5jb2xvckNsYXNzLFxuICAgICAgaXRlbXMsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBbaG9tZVZpc2l0LCB2aWRlb0NhbGxdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGhpcy5ib29raW5nUHJvZHVjdENhcnRTZXJ2aWNlLmdldEl0ZW1zKCdIT01FX1ZJU0lUJyksXG4gICAgICB0aGlzLmJvb2tpbmdQcm9kdWN0Q2FydFNlcnZpY2UuZ2V0SXRlbXMoJ1ZJREVPX0NBTEwnKSxcbiAgICBdKTtcbiAgICBjb25zdCBncm91cHM6IEJvb2tpbmdDYXJ0R3JvdXBbXSA9IFtdO1xuICAgIGlmIChob21lVmlzaXQubGVuZ3RoKSBncm91cHMucHVzaCh0aGlzLmJ1aWxkR3JvdXAoJ0hPTUVfVklTSVQnLCBob21lVmlzaXQpKTtcbiAgICBpZiAodmlkZW9DYWxsLmxlbmd0aCkgZ3JvdXBzLnB1c2godGhpcy5idWlsZEdyb3VwKCdWSURFT19DQUxMJywgdmlkZW9DYWxsKSk7XG4gICAgdGhpcy5ncm91cHMgPSBncm91cHM7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBnZXQgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMubG9hZGluZyAmJiB0aGlzLmdyb3Vwcy5sZW5ndGggPT09IDA7XG4gIH1cblxuICBnZXQgZGlhbG9nUmVmUHJlc2VudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRpYWxvZ1JlZjtcbiAgfVxuXG4gIC8vIFwiNiBpdGVtcyDCtyAyIGJvb2tpbmcgdHlwZXNcIiAtIG1hdGNoZXMgdGhlIGRyYXdlcidzIHN1YmxpbmUgaW4gdGhlIHByb3RvdHlwZS5cbiAgZ2V0IGRyYXdlclN1YmxpbmUoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0b3RhbEl0ZW1zID0gdGhpcy5ncm91cHMucmVkdWNlKChzdW0sIGcpID0+IHN1bSArIGcuaXRlbXMubGVuZ3RoLCAwKTtcbiAgICBpZiAodG90YWxJdGVtcyA9PT0gMCkgcmV0dXJuICdOb3RoaW5nIHBlbmRpbmcnO1xuICAgIHJldHVybiBgJHt0b3RhbEl0ZW1zfSBpdGVtJHt0b3RhbEl0ZW1zID09PSAxID8gJycgOiAncyd9IMK3ICR7dGhpcy5ncm91cHMubGVuZ3RofSBib29raW5nIHR5cGUke3RoaXMuZ3JvdXBzLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnfWA7XG4gIH1cblxuICBhc3luYyByZW1vdmVJdGVtKGdyb3VwOiBCb29raW5nQ2FydEdyb3VwLCBpdGVtOiBPcmRlcmVkSXRlbXMpIHtcbiAgICBhd2FpdCB0aGlzLmJvb2tpbmdQcm9kdWN0Q2FydFNlcnZpY2UucmVtb3ZlSXRlbShncm91cC5tb2RlLCBpdGVtLnZhcmllbnRJZCk7XG4gICAgYXdhaXQgdGhpcy5sb2FkKCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcbiAgfVxuXG4gIGJyb3dzZSgpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xuICB9XG5cbiAgY29udGludWVCb29raW5nKGdyb3VwOiBCb29raW5nQ2FydEdyb3VwKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIGlmICghdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10sIHsgcXVlcnlQYXJhbXM6IHsgdHJ5QXRIb21lOiB0cnVlLCBtb2RlOiBncm91cC5tb2RlIH0gfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2hvbWUtYXBwb2ludG1lbnQnXSwgeyBxdWVyeVBhcmFtczogeyBtb2RlOiBncm91cC5tb2RlIH0gfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJib29raW5nLWNhcnQtZ3JvdXBzXCIgW2NsYXNzLmJjZy1wYW5lbF09XCJkaWFsb2dSZWZQcmVzZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJiY2ctaGVhZGVyXCIgKm5nSWY9XCJkaWFsb2dSZWZQcmVzZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImJjZy1oZWFkZXItdGV4dFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImJjZy10aXRsZVwiPllvdXIgQm9va2luZ3M8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJiY2ctc3VibGluZVwiPnt7IGRyYXdlclN1YmxpbmUgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYmNnLWNsb3NlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJiY2ctYmFubmVyXCIgKm5nSWY9XCIhZGlhbG9nUmVmUHJlc2VudFwiPkJvb2tpbmdzIGFyZSBwbGFjZWQgb25lIGF0IGEgdGltZSBhbmQgbmV2ZXIgbWVyZ2UsIHNvIGVhY2ggdHlwZSBrZWVwcyBpdHMgb3duIGxpc3QgYW5kIGl0cyBvd24gQ29udGludWUgQm9va2luZy48L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYmNnLWJvZHlcIiAqbmdJZj1cIiFsb2FkaW5nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZ3JvdXBzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmNnLWdyb3VwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiY2ctZ3JvdXAtaGVhZGVyXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJiY2ctZG90XCIgW25nQ2xhc3NdPVwiZ3JvdXAubW9kZSA9PT0gJ0hPTUVfVklTSVQnID8gJ2JjZy1kb3QtaG9tZScgOiAnYmNnLWRvdC12aWRlbydcIj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJiY2ctZ3JvdXAtdGl0bGVcIj57eyBncm91cC50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJjZy1ncm91cC1tZXRhXCI+e3sgZ3JvdXAubWV0YSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiY2ctaXRlbXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmNnLWl0ZW1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBncm91cC5pdGVtc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJjZy1pdGVtLXJlbW92ZVwiIChjbGljayk9XCJyZW1vdmVJdGVtKGdyb3VwLCBpdGVtKVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwiYmNnLWl0ZW0taW1nXCIgKm5nSWY9XCJpdGVtLmltZ1VybFwiIFtzcmNdPVwiaXRlbS5pbWdVcmxcIiBbYWx0XT1cIml0ZW0uaXRlbU5hbWVcIiAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJjZy1pdGVtLWltZyBiY2ctaXRlbS1pbWctZW1wdHlcIiAqbmdJZj1cIiFpdGVtLmltZ1VybFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJjZy1pdGVtLW5hbWVcIj57eyBpdGVtLml0ZW1OYW1lIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmNnLWl0ZW0tbm90ZVwiPnt7IGdyb3VwLml0ZW1Ob3RlIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmNnLWdyb3VwLWZvb3RlclwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJiY2ctY29udGludWVcIiBbbmdDbGFzc109XCJncm91cC5jb2xvckNsYXNzXCIgKGNsaWNrKT1cImNvbnRpbnVlQm9va2luZyhncm91cClcIj5Db250aW51ZSBCb29raW5nPC9idXR0b24+XG4gICAgICAgICAgPGEgY2xhc3M9XCJiY2ctYWRkLW1vcmVcIiAqbmdJZj1cIiFkaWFsb2dSZWZQcmVzZW50XCIgKGNsaWNrKT1cImJyb3dzZSgpXCI+QWRkIG1vcmU8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYmNnLWxhdGVyXCIgKm5nSWY9XCJkaWFsb2dSZWZQcmVzZW50ICYmICFpc0VtcHR5XCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJiY2ctbGF0ZXItaWNvblwiPnN0b3JlZnJvbnQ8L21hdC1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cImJjZy1sYXRlci10ZXh0XCI+SW4tU3RvcmUgdmlzaXRzIHdpbGwgYXBwZWFyIGhlcmUuPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmNnLWxhdGVyLWJhZGdlXCI+TGF0ZXI8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJiY2ctZW1wdHlcIiAqbmdJZj1cImlzRW1wdHlcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImJjZy1lbXB0eS1pY29uXCI+ZXZlbnRfYXZhaWxhYmxlPC9tYXQtaWNvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJiY2ctZW1wdHktdGl0bGVcIj5Zb3UgaGF2ZW4ndCBhZGRlZCBhbnl0aGluZyB5ZXQuPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmNnLWVtcHR5LXN1YlwiPlRyeSBhIHBpZWNlIGF0IGhvbWUgb3Igb24gYSB2aWRlbyBjYWxsIOKAlCBhZGQgaXQgaGVyZSBmaXJzdCwgYm9vayB3aGVuIHlvdSdyZSByZWFkeS48L2Rpdj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJiY2ctYnJvd3NlXCIgKGNsaWNrKT1cImJyb3dzZSgpXCI+QnJvd3NlIGNvbGxlY3Rpb25zPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2Jvb2tpbmctY2FydC1ncm91cHMvYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2Jvb2tpbmctY2FydC1ncm91cHMvYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQWdCdkQsZ0dBQWdHO0FBQ2hHLDhGQUE4RjtBQUM5RixnR0FBZ0c7QUFDaEcsTUFBTSxTQUFTLEdBQWlJO0lBQzlJLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRTtJQUNoSCxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRTtDQUNsSCxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBUUgsTUFBTSxPQUFPLDBCQUEwQjtJQUlyQyxZQUNtQix5QkFBb0QsRUFDcEQsY0FBcUMsRUFDckMsTUFBYyxFQUNGLFNBQW1EO1FBSC9ELDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFDcEQsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FB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RSxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUF1QjtRQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pGLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckYsQ0FBQzsrR0E1RVUsMEJBQTBCO21HQUExQiwwQkFBMEIscUZDeEN2Qywrb0ZBcURBLHkvSERqQlksWUFBWSw2VkFBRSxhQUFhOzs0RkFJMUIsMEJBQTBCO2tCQVB0QyxTQUFTOytCQUNFLDJCQUEyQixjQUN6QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDOzswQkFZbkMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZSwgQm9va2luZ0NhcnRNb2RlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYm9va2luZy1wcm9kdWN0LWNhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vLi4vZWNvbW1lcmNlL3N0eWxlcy9PcmRlcmVkSXRlbXMubW9kYWwnO1xuXG5pbnRlcmZhY2UgQm9va2luZ0NhcnRHcm91cCB7XG4gIG1vZGU6IEJvb2tpbmdDYXJ0TW9kZTtcbiAgdGl0bGU6IHN0cmluZztcbiAgbWV0YTogc3RyaW5nO1xuICBpdGVtTm90ZTogc3RyaW5nO1xuICBjb2xvckNsYXNzOiAnYmNnLW1vZGUtaG9tZScgfCAnYmNnLW1vZGUtdmlkZW8nO1xuICBpdGVtczogT3JkZXJlZEl0ZW1zW107XG59XG5cbi8vIFBlci1tb2RlIGNvcHkvY29sb3IsIG1hdGNoaW5nIHRoZSBkZXNpZ24gcHJvdG90eXBlIChTdG9yZSBQcm90b3R5cGUuZGMuaHRtbCwgQm9va2luZyBDYXJ0IHRhYlxuLy8gYW5kIEJvb2tpbmdzIGRyYXdlcikuIFRoZSBcIkVuZ2xpc2hcIiBzdWZmaXggb24gVmlkZW8gQ2FsbCBpcyBhIHN0YXRpYyBsYWJlbCBpbiB0aGUgcHJvdG90eXBlXG4vLyBpdHNlbGYgKG5vdCBkZXJpdmVkIGZyb20gYW55IHJlYWwgbGFuZ3VhZ2UtcHJlZmVyZW5jZSBmaWVsZCksIHNvIGl0J3MgcG9ydGVkIGFzIGxpdGVyYWwgdGV4dC5cbmNvbnN0IE1PREVfTUVUQTogUmVjb3JkPEJvb2tpbmdDYXJ0TW9kZSwgeyB0aXRsZTogc3RyaW5nOyBzdWZmaXg6IHN0cmluZzsgaXRlbU5vdGU6IHN0cmluZzsgY29sb3JDbGFzczogJ2JjZy1tb2RlLWhvbWUnIHwgJ2JjZy1tb2RlLXZpZGVvJyB9PiA9IHtcbiAgSE9NRV9WSVNJVDogeyB0aXRsZTogJ0hvbWUgVmlzaXQnLCBzdWZmaXg6ICdmcmVlJywgaXRlbU5vdGU6ICdUcnkgYXQgaG9tZSDCtyBmcmVlJywgY29sb3JDbGFzczogJ2JjZy1tb2RlLWhvbWUnIH0sXG4gIFZJREVPX0NBTEw6IHsgdGl0bGU6ICdWaWRlbyBDYWxsJywgc3VmZml4OiAnRW5nbGlzaCcsIGl0ZW1Ob3RlOiAnTGl2ZSB2aWRlbyBjYWxsJywgY29sb3JDbGFzczogJ2JjZy1tb2RlLXZpZGVvJyB9LFxufTtcblxuLyoqXG4gKiBTaGFyZWQgXCJncm91cGVkIGJvb2tpbmcgY2FydFwiIHZpZXcg4oCUIG9uZSBzZWN0aW9uIHBlciBub24tZW1wdHkgbW9kZSAoSG9tZSBWaXNpdCAvIFZpZGVvIENhbGwpLFxuICogZWFjaCB3aXRoIGl0cyBvd24gQ29udGludWUgQm9va2luZyBhY3Rpb24sIHNpbmNlIGEgYm9va2luZyBjYW4gb25seSBldmVyIGJlIG9uZSBtb2RlLiBVc2VkXG4gKiBib3RoIGFzIHRoZSBoZWFkZXIncyBCb29raW5ncyBkcmF3ZXIgKG9wZW5lZCB2aWEgTWF0RGlhbG9nLCBwYW5lbENsYXNzICdzaWRlcGFuZWwtY2xhc3MnLCBzYW1lXG4gKiBjb252ZW50aW9uIGFzIHRoZSByZXN0IG9mIHRoaXMgYXBwJ3Mgc2lkZSBwYW5lbHMpIGFuZCBlbWJlZGRlZCBpbmxpbmUgaW4gdGhlIENhcnQgcGFnZSdzXG4gKiBCb29raW5nIENhcnQgdGFiLCBzbyB0aGUgdHdvIHN1cmZhY2VzIG5ldmVyIHNob3cgZGlmZmVyZW50IGRhdGEuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLWJvb2tpbmctY2FydC1ncm91cHMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jvb2tpbmctY2FydC1ncm91cHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBCb29raW5nQ2FydEdyb3Vwc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGdyb3VwczogQm9va2luZ0NhcnRHcm91cFtdID0gW107XG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZTogQm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEJvb2tpbmdDYXJ0R3JvdXBzQ29tcG9uZW50PixcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRHcm91cChtb2RlOiBCb29raW5nQ2FydE1vZGUsIGl0ZW1zOiBPcmRlcmVkSXRlbXNbXSk6IEJvb2tpbmdDYXJ0R3JvdXAge1xuICAgIGNvbnN0IG1ldGEgPSBNT0RFX01FVEFbbW9kZV07XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGUsXG4gICAgICB0aXRsZTogbWV0YS50aXRsZSxcbiAgICAgIG1ldGE6IGAke2l0ZW1zLmxlbmd0aH0gaXRlbSR7aXRlbXMubGVuZ3RoID09PSAxID8gJycgOiAncyd9IMK3ICR7bWV0YS5zdWZmaXh9YCxcbiAgICAgIGl0ZW1Ob3RlOiBtZXRhLml0ZW1Ob3RlLFxuICAgICAgY29sb3JDbGFzczogbWV0YS5jb2xvckNsYXNzLFxuICAgICAgaXRlbXMsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBbaG9tZVZpc2l0LCB2aWRlb0NhbGxdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGhpcy5ib29raW5nUHJvZHVjdENhcnRTZXJ2aWNlLmdldEl0ZW1zKCdIT01FX1ZJU0lUJyksXG4gICAgICB0aGlzLmJvb2tpbmdQcm9kdWN0Q2FydFNlcnZpY2UuZ2V0SXRlbXMoJ1ZJREVPX0NBTEwnKSxcbiAgICBdKTtcbiAgICBjb25zdCBncm91cHM6IEJvb2tpbmdDYXJ0R3JvdXBbXSA9IFtdO1xuICAgIGlmIChob21lVmlzaXQubGVuZ3RoKSBncm91cHMucHVzaCh0aGlzLmJ1aWxkR3JvdXAoJ0hPTUVfVklTSVQnLCBob21lVmlzaXQpKTtcbiAgICBpZiAodmlkZW9DYWxsLmxlbmd0aCkgZ3JvdXBzLnB1c2godGhpcy5idWlsZEdyb3VwKCdWSURFT19DQUxMJywgdmlkZW9DYWxsKSk7XG4gICAgdGhpcy5ncm91cHMgPSBncm91cHM7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBnZXQgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMubG9hZGluZyAmJiB0aGlzLmdyb3Vwcy5sZW5ndGggPT09IDA7XG4gIH1cblxuICBnZXQgZGlhbG9nUmVmUHJlc2VudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRpYWxvZ1JlZjtcbiAgfVxuXG4gIC8vIFwiNiBpdGVtcyDCtyAyIGJvb2tpbmcgdHlwZXNcIiAtIG1hdGNoZXMgdGhlIGRyYXdlcidzIHN1YmxpbmUgaW4gdGhlIHByb3RvdHlwZS5cbiAgZ2V0IGRyYXdlclN1YmxpbmUoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0b3RhbEl0ZW1zID0gdGhpcy5ncm91cHMucmVkdWNlKChzdW0sIGcpID0+IHN1bSArIGcuaXRlbXMubGVuZ3RoLCAwKTtcbiAgICBpZiAodG90YWxJdGVtcyA9PT0gMCkgcmV0dXJuICdOb3RoaW5nIHBlbmRpbmcnO1xuICAgIHJldHVybiBgJHt0b3RhbEl0ZW1zfSBpdGVtJHt0b3RhbEl0ZW1zID09PSAxID8gJycgOiAncyd9IMK3ICR7dGhpcy5ncm91cHMubGVuZ3RofSBib29raW5nIHR5cGUke3RoaXMuZ3JvdXBzLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnfWA7XG4gIH1cblxuICBhc3luYyByZW1vdmVJdGVtKGdyb3VwOiBCb29raW5nQ2FydEdyb3VwLCBpdGVtOiBPcmRlcmVkSXRlbXMpIHtcbiAgICBhd2FpdCB0aGlzLmJvb2tpbmdQcm9kdWN0Q2FydFNlcnZpY2UucmVtb3ZlSXRlbShncm91cC5tb2RlLCBpdGVtLnZhcmllbnRJZCk7XG4gICAgYXdhaXQgdGhpcy5sb2FkKCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcbiAgfVxuXG4gIGJyb3dzZSgpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xuICB9XG5cbiAgY29udGludWVCb29raW5nKGdyb3VwOiBCb29raW5nQ2FydEdyb3VwKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIGlmICghdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10sIHsgcXVlcnlQYXJhbXM6IHsgdHJ5QXRIb21lOiB0cnVlLCBtb2RlOiBncm91cC5tb2RlIH0gfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2hvbWUtYXBwb2ludG1lbnQnXSwgeyBxdWVyeVBhcmFtczogeyBtb2RlOiBncm91cC5tb2RlIH0gfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJib29raW5nLWNhcnQtZ3JvdXBzXCIgW2NsYXNzLmJjZy1wYW5lbF09XCJkaWFsb2dSZWZQcmVzZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJiY2ctaGVhZGVyXCIgKm5nSWY9XCJkaWFsb2dSZWZQcmVzZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImJjZy1oZWFkZXItdGV4dFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImJjZy10aXRsZVwiPllvdXIgQm9va2luZ3M8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJiY2ctc3VibGluZVwiPnt7IGRyYXdlclN1YmxpbmUgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYmNnLWNsb3NlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJiY2ctYmFubmVyXCIgKm5nSWY9XCIhZGlhbG9nUmVmUHJlc2VudFwiPkJvb2tpbmdzIGFyZSBwbGFjZWQgb25lIGF0IGEgdGltZSBhbmQgbmV2ZXIgbWVyZ2UsIHNvIGVhY2ggdHlwZSBrZWVwcyBpdHMgb3duIGxpc3QgYW5kIGl0cyBvd24gQ29udGludWUgQm9va2luZy48L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYmNnLWJvZHlcIiAqbmdJZj1cIiFsb2FkaW5nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZ3JvdXBzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmNnLWdyb3VwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiY2ctZ3JvdXAtaGVhZGVyXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJiY2ctZG90XCIgW25nQ2xhc3NdPVwiZ3JvdXAubW9kZSA9PT0gJ0hPTUVfVklTSVQnID8gJ2JjZy1kb3QtaG9tZScgOiAnYmNnLWRvdC12aWRlbydcIj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJiY2ctZ3JvdXAtdGl0bGVcIj57eyBncm91cC50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJjZy1ncm91cC1tZXRhXCI+e3sgZ3JvdXAubWV0YSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiY2ctaXRlbXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmNnLWl0ZW1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBncm91cC5pdGVtc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJjZy1pdGVtLXJlbW92ZVwiIChjbGljayk9XCJyZW1vdmVJdGVtKGdyb3VwLCBpdGVtKVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwiYmNnLWl0ZW0taW1nXCIgKm5nSWY9XCJpdGVtLmltZ1VybFwiIFtzcmNdPVwiaXRlbS5pbWdVcmxcIiBbYWx0XT1cIml0ZW0uaXRlbU5hbWVcIiAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJjZy1pdGVtLWltZyBiY2ctaXRlbS1pbWctZW1wdHlcIiAqbmdJZj1cIiFpdGVtLmltZ1VybFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJjZy1pdGVtLW5hbWVcIj57eyBpdGVtLml0ZW1OYW1lIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmNnLWl0ZW0tbm90ZVwiPnt7IGdyb3VwLml0ZW1Ob3RlIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmNnLWdyb3VwLWZvb3RlclwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJiY2ctY29udGludWVcIiBbbmdDbGFzc109XCJncm91cC5jb2xvckNsYXNzXCIgKGNsaWNrKT1cImNvbnRpbnVlQm9va2luZyhncm91cClcIj5Db250aW51ZSBCb29raW5nPC9idXR0b24+XG4gICAgICAgICAgPGEgY2xhc3M9XCJiY2ctYWRkLW1vcmVcIiAqbmdJZj1cIiFkaWFsb2dSZWZQcmVzZW50XCIgKGNsaWNrKT1cImJyb3dzZSgpXCI+QWRkIG1vcmU8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYmNnLWxhdGVyXCIgKm5nSWY9XCJkaWFsb2dSZWZQcmVzZW50ICYmICFpc0VtcHR5XCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJiY2ctbGF0ZXItaWNvblwiPnN0b3JlZnJvbnQ8L21hdC1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cImJjZy1sYXRlci10ZXh0XCI+SW4tU3RvcmUgdmlzaXRzIHdpbGwgYXBwZWFyIGhlcmUuPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmNnLWxhdGVyLWJhZGdlXCI+TGF0ZXI8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJiY2ctZW1wdHlcIiAqbmdJZj1cImlzRW1wdHlcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImJjZy1lbXB0eS1pY29uXCI+ZXZlbnRfYXZhaWxhYmxlPC9tYXQtaWNvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJiY2ctZW1wdHktdGl0bGVcIj5Zb3UgaGF2ZW4ndCBhZGRlZCBhbnl0aGluZyB5ZXQuPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmNnLWVtcHR5LXN1YlwiPlRyeSBhIHBpZWNlIGF0IGhvbWUgb3Igb24gYSB2aWRlbyBjYWxsIOKAlCBhZGQgaXQgaGVyZSBmaXJzdCwgYm9vayB3aGVuIHlvdSdyZSByZWFkeS48L2Rpdj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJiY2ctYnJvd3NlXCIgKGNsaWNrKT1cImJyb3dzZSgpXCI+QnJvd3NlIGNvbGxlY3Rpb25zPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=