@vendure/admin-ui 2.1.0-next.7 → 2.1.0

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.
Files changed (40) hide show
  1. package/core/common/base-list.component.d.ts +1 -0
  2. package/core/common/version.d.ts +1 -1
  3. package/core/extension/register-route-component.d.ts +2 -2
  4. package/core/providers/data-table/data-table-filter-collection.d.ts +2 -0
  5. package/core/providers/data-table/data-table-sort-collection.d.ts +2 -0
  6. package/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.d.ts +3 -2
  7. package/core/shared/components/data-table-filters/data-table-filters.component.d.ts +1 -1
  8. package/esm2022/core/common/base-list.component.mjs +13 -4
  9. package/esm2022/core/common/version.mjs +2 -2
  10. package/esm2022/core/extension/register-route-component.mjs +1 -1
  11. package/esm2022/core/providers/data-table/data-table-filter-collection.mjs +19 -3
  12. package/esm2022/core/providers/data-table/data-table-sort-collection.mjs +8 -2
  13. package/esm2022/core/shared/components/affixed-input/affixed-input.component.mjs +2 -2
  14. package/esm2022/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.mjs +7 -5
  15. package/esm2022/core/shared/components/data-table-filters/data-table-filters.component.mjs +5 -4
  16. package/esm2022/order/components/order-data-table/order-data-table.component.mjs +3 -3
  17. package/esm2022/order/components/order-table/order-table.component.mjs +3 -3
  18. package/fesm2022/vendure-admin-ui-core.mjs +47 -14
  19. package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
  20. package/fesm2022/vendure-admin-ui-order.mjs +4 -4
  21. package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
  22. package/package.json +13 -13
  23. package/static/i18n-messages/ar.json +1 -1
  24. package/static/i18n-messages/cs.json +1 -1
  25. package/static/i18n-messages/de.json +1 -1
  26. package/static/i18n-messages/en.json +1 -1
  27. package/static/i18n-messages/es.json +1 -1
  28. package/static/i18n-messages/fa.json +29 -8
  29. package/static/i18n-messages/fr.json +1 -1
  30. package/static/i18n-messages/he.json +1 -1
  31. package/static/i18n-messages/it.json +1 -1
  32. package/static/i18n-messages/ne.json +795 -0
  33. package/static/i18n-messages/pl.json +1 -1
  34. package/static/i18n-messages/pt_BR.json +1 -1
  35. package/static/i18n-messages/pt_PT.json +1 -1
  36. package/static/i18n-messages/ru.json +1 -1
  37. package/static/i18n-messages/uk.json +1 -1
  38. package/static/i18n-messages/zh_Hans.json +1 -1
  39. package/static/i18n-messages/zh_Hant.json +1 -1
  40. package/static/vendure-ui-config.json +2 -1
@@ -45,15 +45,15 @@ export class OrderDataTableComponent extends DataTable2Component {
45
45
  }
46
46
  }
47
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: OrderDataTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: OrderDataTableComponent, selector: "vdr-order-data-table", inputs: { order: "order" }, queries: [{ propertyName: "totalColumns", predicate: OrderTotalColumnComponent }], usesInheritance: true, ngImport: i0, template: "<div class=\"bulk-actions\">\r\n <ng-content select=\"vdr-bulk-action-menu\"></ng-content>\r\n</div>\r\n<div class=\"table-wrapper\">\r\n <table\r\n class=\"\"\r\n [class.no-select]=\"disableSelect\"\r\n >\r\n <thead [class.items-selected]=\"selectionManager?.selection.length\">\r\n <tr class=\"heading-row\">\r\n <th *ngIf=\"selectionManager\" class=\"selection-col\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"selectionManager?.areAllCurrentItemsSelected()\"\r\n (change)=\"onToggleAllClick()\"\r\n />\r\n </th>\r\n <th\r\n *ngFor=\"let column of visibleSortedColumns; last as isLast\"\r\n [class.expand]=\"column.expand\"\r\n >\r\n <div class=\"cell-content\" [ngClass]=\"column.align\">\r\n <span>{{ column.heading }}</span>\r\n <div *ngIf=\"column.sort as sort\" class=\"sort-toggle\">\r\n <button (click)=\"sort.toggleSortOrder()\" [class.active]=\"sort.sortOrder\">\r\n <clr-icon *ngIf=\"!sort.sortOrder\" shape=\"two-way-arrows left\"></clr-icon>\r\n <clr-icon *ngIf=\"sort.sortOrder === 'ASC'\" shape=\"arrow up\"></clr-icon>\r\n <clr-icon *ngIf=\"sort.sortOrder === 'DESC'\" shape=\"arrow down\"></clr-icon>\r\n </button>\r\n <div class=\"sort-label\" *ngIf=\"sort.sortOrder\">{{ sort.sortOrder }}</div>\r\n </div>\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"column-picker\">\r\n <vdr-data-table-colum-picker\r\n [uiLanguage]=\"uiLanguage$ | async\"\r\n [columns]=\"sortedColumns\"\r\n (reorder)=\"onColumnReorder($event)\"\r\n (resetColumns)=\"onColumnsReset()\"\r\n ></vdr-data-table-colum-picker>\r\n </div>\r\n </th>\r\n </tr>\r\n <tr *ngIf=\"searchComponent || customSearchTemplate || filters?.length\">\r\n <th\r\n [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\"\r\n class=\"filter-row\"\r\n [class.active]=\"showSearchFilterRow\"\r\n >\r\n <button\r\n class=\"button-ghost toggle-search-filter-row\"\r\n [class.active]=\"showSearchFilterRow\"\r\n (click)=\"toggleSearchFilterRow()\"\r\n [title]=\"'common.search-and-filter-list' | translate\"\r\n >\r\n <clr-icon shape=\"search\"></clr-icon>\r\n </button>\r\n <div class=\"filter-row-wrapper\" [class.hidden]=\"!showSearchFilterRow\">\r\n <ng-container *ngTemplateOutlet=\"searchComponent?.template\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"customSearchTemplate\"></ng-container>\r\n <ng-container *ngIf=\"filters\">\r\n <div class=\"filters\">\r\n <vdr-data-table-filters\r\n *ngFor=\"let activeFilter of filters.activeFilters\"\r\n [filterWithValue]=\"activeFilter\"\r\n [filters]=\"filters\"\r\n class=\"mt-1\"\r\n ></vdr-data-table-filters>\r\n <vdr-data-table-filters\r\n *ngIf=\"filters.length\"\r\n [filters]=\"filters\"\r\n class=\"mt-1\"\r\n ></vdr-data-table-filters>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let item of items\r\n | paginate\r\n : {\r\n id: id,\r\n itemsPerPage: itemsPerPage,\r\n currentPage: currentPage,\r\n totalItems: totalItems\r\n };\r\n index as i;\r\n trackBy: trackByFn\r\n \"\r\n >\r\n <td *ngIf=\"selectionManager\" class=\"selection-col\" [class.active]=\"activeIndex === i\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"selectionManager?.isSelected(item)\"\r\n (click)=\"onRowClick(item, $event)\"\r\n />\r\n </td>\r\n <td *ngFor=\"let column of visibleSortedColumns\" [class.active]=\"activeIndex === i\">\r\n <div class=\"cell-content\" [ngClass]=\"column.align\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.template; context: { item: item, index: i }\"\r\n ></ng-container>\r\n </div>\r\n </td>\r\n <td [class.active]=\"activeIndex === i\"><!-- column select --></td>\r\n </tr>\r\n <ng-container>\r\n <tr *ngIf=\"!items?.length\">\r\n <td [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\">\r\n <vdr-empty-placeholder [emptyStateLabel]=\"'order.order-is-empty' | translate\"></vdr-empty-placeholder>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"surcharge\" *ngFor=\"let surcharge of order.surcharges\">\r\n <td class=\"align-middle name left\" colspan=\"2\">{{ surcharge.description }}</td>\r\n <td class=\"align-middle sku\">{{ surcharge.sku }}</td>\r\n <td class=\"align-middle\" [attr.colspan]=\"visibleSortedColumns.length - 4\"></td>\r\n <td class=\"align-middle total\">\r\n {{ surcharge.priceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ surcharge.price | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n <ng-container *ngFor=\"let discount of order.discounts\">\r\n <tr class=\"order-adjustment\" *ngIf=\"discount.type !== 'OTHER'\">\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 1\" class=\"\">\r\n <a [routerLink]=\"getPromotionLink(discount)\">{{ discount.description }}</a>\r\n <vdr-chip *ngIf=\"getCouponCodeForAdjustment(order, discount) as couponCode\">{{\r\n couponCode\r\n }}</vdr-chip>\r\n </td>\r\n <td class=\"\">\r\n {{ discount.amountWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"sub-total\">\r\n <td class=\"\">{{ 'order.sub-total' | translate }}</td>\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.subTotalWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.subTotal | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n <tr class=\"shipping\">\r\n <td class=\"\">{{ 'order.shipping' | translate }}</td>\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\">\r\n <vdr-chip *ngFor=\"let shippingLine of order.shippingLines\" class=\"shipping-method-name\">\r\n {{ shippingLine.shippingMethod.name }}\r\n </vdr-chip>\r\n </td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.shippingWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.shipping | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n <tr class=\"total\">\r\n <td class=\"\">{{ 'order.total' | translate }}</td>\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.total | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n", styles: [":host{display:block;max-width:100%;position:relative;margin-bottom:calc(var(--space-unit) * 4);container-type:inline-size}th{border-bottom:1px solid var(--color-table-header-border);font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;position:relative;white-space:nowrap}th,td{padding:calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 1)}tr td:first-of-type,tr th:first-of-type{text-align:center}@media screen and (min-width: 992px){tr td:first-of-type,tr th:first-of-type{padding-inline-start:var(--surface-margin-left);text-align:start}}th:last-of-type,td:last-of-type{border-inline-end:1px solid var(--color-table-header-border)}tr:first-of-type th:last-of-type{border-image:linear-gradient(0deg,var(--color-table-header-border),transparent) 1}tr:last-of-type td:last-of-type{border-image:linear-gradient(180deg,var(--color-table-header-border),transparent) 1}tbody td{border-bottom:1px solid var(--color-table-row-separator)}tbody tr:hover{background-color:var(--color-table-row-hover-bg)}.bulk-actions{margin-inline-start:calc(var(--space-unit) * 5);background-color:var(--color-surface-bg);z-index:10;display:flex;position:absolute;top:5px;height:40px}@media screen and (min-width: 992px){.bulk-actions{margin-inline-start:calc(var(--space-unit) * 8.5)}}@media screen and (min-width: 1280px){.bulk-actions{margin-inline-start:calc(var(--space-unit) * 10.5)}}.table-wrapper{display:block;overflow-y:hidden;overflow-x:auto;position:relative;width:100%;max-width:var(--surface-width)}table{width:100%}table.no-select{-webkit-user-select:none;user-select:none}.column-picker{width:24px}.sort-toggle{display:flex;align-items:center;margin-inline-start:calc(var(--space-unit) * .5)}.sort-toggle button{border:0;border-radius:var(--border-radius-lg);color:var(--color-weight-500);padding:0 2px;cursor:pointer;background-color:transparent}.sort-toggle button.active{color:var(--color-primary-700)}.sort-toggle .sort-label{margin-inline-start:calc(var(--space-unit) * .5);font-size:10px;color:var(--color-primary-600);font-weight:400}.toggle-search-filter-row{position:absolute;top:-12px;left:4px}@media screen and (min-width: 1280px){.toggle-search-filter-row{left:8px}}.toggle-search-filter-row.active{background-color:var(--color-primary-700);color:var(--color-primary-100);border-color:var(--color-primary-700)}th.filter-row{position:relative;font-size:var(--font-size-base);font-weight:400;background-color:var(--color-weight-100);box-shadow:var(--data-table-filter-box-shadow);border-left-width:0;border-right-width:0;text-align:initial;padding:0}th.filter-row input{width:100%}th.filter-row.active{border-bottom:1px solid var(--color-table-header-border)}th.filter-row .filters{margin-top:calc(var(--space-unit) * 1);display:flex;flex-wrap:wrap;gap:calc(var(--space-unit) * .5)}.filter-row-wrapper{padding:calc(var(--space-unit) * 4);padding-inline-start:0;max-height:150px;transition:max-height .2s,padding .2s,opacity .2s}.filter-row-wrapper.hidden{max-height:0px;padding-top:0;padding-bottom:0;overflow:hidden;opacity:0}.cell-link{display:block;width:100%;height:100%}td.active{background-color:var(--color-table-row-active-bg)}.cell-content{display:flex;align-items:center;line-height:var(--font-size-sm);color:var(--color-weight-700)}.cell-content.left{justify-content:flex-start}.cell-content.center{justify-content:center}.cell-content.right{justify-content:flex-end}.selection-col{width:calc(var(--space-unit) * 8)}vdr-empty-placeholder{width:100%}.table-footer{display:flex;align-items:baseline;justify-content:space-between;margin-top:var(--space-unit);margin-inline-start:var(--surface-margin-left);margin-inline-end:var(--space-unit)}.total-items-count{font-size:var(--font-size-xs)}@container (max-width: 500px){.total-items-count{display:none}}\n", ":host .is-cancelled td{text-decoration:line-through;background-color:var(--color-component-bg-200)}:host .sub-total td{border-top:1px dashed var(--color-component-border-200)}:host .total td{font-weight:700;border-top:1px dashed var(--color-component-border-200)}:host td.custom-fields-row{border-top-style:dashed;border-top-color:var(--color-grey-200)}:host img{border-radius:var(--border-radius-img)}:host .order-line-custom-fields{display:flex;flex-wrap:wrap}:host .order-line-custom-fields .custom-field{text-align:start;max-width:200px;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px;margin-inline-end:18px}:host .draft-qty{max-width:48px}:host .order-line-custom-field{background-color:var(--color-component-bg-100)}:host .order-line-custom-field .custom-field-ellipsis{color:var(--color-text-300)}:host .net-price{font-size:11px;color:var(--color-text-300);line-height:14px}:host .promotions-label{-webkit-text-decoration:underline dotted var(--color-text-200);text-decoration:underline dotted var(--color-text-200);font-size:11px;margin-top:6px;cursor:pointer;text-transform:lowercase}:host .thumb img{width:50px;height:50px}:host .shipping-method-name{font-size:var(--font-size-xs);margin-inline-end:2px}:host .order-placed-quantity{text-decoration:line-through;color:var(--color-text-300);margin-inline-end:2px}\n"], dependencies: [{ kind: "directive", type: i1.ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { kind: "directive", type: i1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i1.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "directive", type: i4.FormFieldControlDirective, selector: "input, textarea, select" }, { kind: "component", type: i4.EmptyPlaceholderComponent, selector: "vdr-empty-placeholder", inputs: ["emptyStateLabel"] }, { kind: "component", type: i4.DataTableFiltersComponent, selector: "vdr-data-table-filters", inputs: ["filters", "filterWithValue"] }, { kind: "component", type: i4.DataTableColumnPickerComponent, selector: "vdr-data-table-colum-picker", inputs: ["columns", "uiLanguage"], outputs: ["reorder", "resetColumns"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.PaginatePipe, name: "paginate" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i4.LocaleCurrencyPipe, name: "localeCurrency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: OrderDataTableComponent, selector: "vdr-order-data-table", inputs: { order: "order" }, queries: [{ propertyName: "totalColumns", predicate: OrderTotalColumnComponent }], usesInheritance: true, ngImport: i0, template: "<div class=\"bulk-actions\">\r\n <ng-content select=\"vdr-bulk-action-menu\"></ng-content>\r\n</div>\r\n<div class=\"table-wrapper\">\r\n <table\r\n class=\"\"\r\n [class.no-select]=\"disableSelect\"\r\n >\r\n <thead [class.items-selected]=\"selectionManager?.selection.length\">\r\n <tr class=\"heading-row\">\r\n <th *ngIf=\"selectionManager\" class=\"selection-col\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"selectionManager?.areAllCurrentItemsSelected()\"\r\n (change)=\"onToggleAllClick()\"\r\n />\r\n </th>\r\n <th\r\n *ngFor=\"let column of visibleSortedColumns; last as isLast\"\r\n [class.expand]=\"column.expand\"\r\n >\r\n <div class=\"cell-content\" [ngClass]=\"column.align\">\r\n <vdr-ui-extension-point\r\n [locationId]=\"id\"\r\n [metadata]=\"column.id\"\r\n api=\"dataTable\"\r\n [topPx]=\"-6\"\r\n [leftPx]=\"-24\"\r\n display=\"block\"\r\n >\r\n <span>{{ column.heading }}</span>\r\n </vdr-ui-extension-point>\r\n <div *ngIf=\"column.sort as sort\" class=\"sort-toggle\">\r\n <button (click)=\"sort.toggleSortOrder()\" [class.active]=\"sort.sortOrder\">\r\n <clr-icon *ngIf=\"!sort.sortOrder\" shape=\"two-way-arrows left\"></clr-icon>\r\n <clr-icon *ngIf=\"sort.sortOrder === 'ASC'\" shape=\"arrow up\"></clr-icon>\r\n <clr-icon *ngIf=\"sort.sortOrder === 'DESC'\" shape=\"arrow down\"></clr-icon>\r\n </button>\r\n <div class=\"sort-label\" *ngIf=\"sort.sortOrder\">{{ sort.sortOrder }}</div>\r\n </div>\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"column-picker\">\r\n <vdr-data-table-colum-picker\r\n [uiLanguage]=\"uiLanguage$ | async\"\r\n [columns]=\"sortedColumns\"\r\n (reorder)=\"onColumnReorder($event)\"\r\n (resetColumns)=\"onColumnsReset()\"\r\n ></vdr-data-table-colum-picker>\r\n </div>\r\n </th>\r\n </tr>\r\n <tr *ngIf=\"searchComponent || customSearchTemplate || filters?.length\">\r\n <th\r\n [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\"\r\n class=\"filter-row\"\r\n [class.active]=\"showSearchFilterRow\"\r\n >\r\n <button\r\n class=\"button-ghost toggle-search-filter-row\"\r\n [class.active]=\"showSearchFilterRow\"\r\n (click)=\"toggleSearchFilterRow()\"\r\n [title]=\"'common.search-and-filter-list' | translate\"\r\n >\r\n <clr-icon shape=\"search\"></clr-icon>\r\n </button>\r\n <div class=\"filter-row-wrapper\" [class.hidden]=\"!showSearchFilterRow\">\r\n <ng-container *ngTemplateOutlet=\"searchComponent?.template\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"customSearchTemplate\"></ng-container>\r\n <ng-container *ngIf=\"filters\">\r\n <div class=\"filters\">\r\n <vdr-data-table-filters\r\n *ngFor=\"let activeFilter of filters.activeFilters\"\r\n [filterWithValue]=\"activeFilter\"\r\n [filters]=\"filters\"\r\n class=\"mt-1\"\r\n ></vdr-data-table-filters>\r\n <vdr-data-table-filters\r\n *ngIf=\"filters.length\"\r\n [filters]=\"filters\"\r\n class=\"mt-1\"\r\n ></vdr-data-table-filters>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let item of items\r\n | paginate\r\n : {\r\n id: id,\r\n itemsPerPage: itemsPerPage,\r\n currentPage: currentPage,\r\n totalItems: totalItems\r\n };\r\n index as i;\r\n trackBy: trackByFn\r\n \"\r\n >\r\n <td *ngIf=\"selectionManager\" class=\"selection-col\" [class.active]=\"activeIndex === i\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"selectionManager?.isSelected(item)\"\r\n (click)=\"onRowClick(item, $event)\"\r\n />\r\n </td>\r\n <td *ngFor=\"let column of visibleSortedColumns\" [class.active]=\"activeIndex === i\">\r\n <div class=\"cell-content\" [ngClass]=\"column.align\">\r\n <ng-container\r\n *ngIf=\"customComponents.get(column.id) as componentConfig; else defaultComponent\"\r\n >\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n componentConfig.config.component;\r\n inputs: { rowItem: item };\r\n injector: componentConfig.injector\r\n \"\r\n ></ng-container>\r\n </ng-container>\r\n <ng-template #defaultComponent>\r\n <ng-container\r\n *ngTemplateOutlet=\"column.template; context: { item: item, index: i }\"\r\n ></ng-container>\r\n </ng-template>\r\n </div>\r\n </td>\r\n <td [class.active]=\"activeIndex === i\"><!-- column select --></td>\r\n </tr>\r\n <ng-container>\r\n <tr *ngIf=\"!items?.length\">\r\n <td [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\">\r\n <vdr-empty-placeholder [emptyStateLabel]=\"'order.order-is-empty' | translate\"></vdr-empty-placeholder>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"surcharge\" *ngFor=\"let surcharge of order.surcharges\">\r\n <td class=\"align-middle name left\" colspan=\"2\">{{ surcharge.description }}</td>\r\n <td class=\"align-middle sku\">{{ surcharge.sku }}</td>\r\n <td class=\"align-middle\" [attr.colspan]=\"visibleSortedColumns.length - 4\"></td>\r\n <td class=\"align-middle total\">\r\n {{ surcharge.priceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ surcharge.price | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n <ng-container *ngFor=\"let discount of order.discounts\">\r\n <tr class=\"order-adjustment\" *ngIf=\"discount.type !== 'OTHER'\">\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 1\" class=\"\">\r\n <a [routerLink]=\"getPromotionLink(discount)\">{{ discount.description }}</a>\r\n <vdr-chip *ngIf=\"getCouponCodeForAdjustment(order, discount) as couponCode\">{{\r\n couponCode\r\n }}</vdr-chip>\r\n </td>\r\n <td class=\"\">\r\n {{ discount.amountWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"sub-total\">\r\n <td class=\"\">{{ 'order.sub-total' | translate }}</td>\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.subTotalWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.subTotal | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n <tr class=\"shipping\">\r\n <td class=\"\">{{ 'order.shipping' | translate }}</td>\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\">\r\n <vdr-chip *ngFor=\"let shippingLine of order.shippingLines\" class=\"shipping-method-name\">\r\n {{ shippingLine.shippingMethod.name }}\r\n </vdr-chip>\r\n </td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.shippingWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.shipping | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n <tr class=\"total\">\r\n <td class=\"\">{{ 'order.total' | translate }}</td>\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.total | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n", styles: [":host{display:block;max-width:100%;position:relative;margin-bottom:calc(var(--space-unit) * 4);container-type:inline-size}th{border-bottom:1px solid var(--color-table-header-border);font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;position:relative;white-space:nowrap}th,td{padding:calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 1)}tr td:first-of-type,tr th:first-of-type{text-align:center}@media screen and (min-width: 992px){tr td:first-of-type,tr th:first-of-type{padding-inline-start:var(--surface-margin-left);text-align:start}}th:last-of-type,td:last-of-type{border-inline-end:1px solid var(--color-table-header-border)}tr:first-of-type th:last-of-type{border-image:linear-gradient(0deg,var(--color-table-header-border),transparent) 1}tr:last-of-type td:last-of-type{border-image:linear-gradient(180deg,var(--color-table-header-border),transparent) 1}tbody td{border-bottom:1px solid var(--color-table-row-separator)}tbody tr:hover{background-color:var(--color-table-row-hover-bg)}.bulk-actions{margin-inline-start:calc(var(--space-unit) * 5);background-color:var(--color-surface-bg);z-index:10;display:flex;position:absolute;top:5px;height:40px}@media screen and (min-width: 992px){.bulk-actions{margin-inline-start:calc(var(--space-unit) * 8.5)}}@media screen and (min-width: 1280px){.bulk-actions{margin-inline-start:calc(var(--space-unit) * 10.5)}}.table-wrapper{display:block;overflow-y:hidden;overflow-x:auto;position:relative;width:100%;max-width:var(--surface-width)}table{width:100%}table.no-select{-webkit-user-select:none;user-select:none}.column-picker{width:24px}.sort-toggle{display:flex;align-items:center;margin-inline-start:calc(var(--space-unit) * .5)}.sort-toggle button{border:0;border-radius:var(--border-radius-lg);color:var(--color-weight-500);padding:0 2px;cursor:pointer;background-color:transparent}.sort-toggle button.active{color:var(--color-primary-700)}.sort-toggle .sort-label{margin-inline-start:calc(var(--space-unit) * .5);font-size:10px;color:var(--color-primary-600);font-weight:400}.toggle-search-filter-row{position:absolute;top:-12px;left:4px}@media screen and (min-width: 1280px){.toggle-search-filter-row{left:8px}}.toggle-search-filter-row.active{background-color:var(--color-primary-700);color:var(--color-primary-100);border-color:var(--color-primary-700)}th.filter-row{position:relative;font-size:var(--font-size-base);font-weight:400;background-color:var(--color-weight-100);box-shadow:var(--data-table-filter-box-shadow);border-left-width:0;border-right-width:0;text-align:initial;padding:0}th.filter-row input{width:100%}th.filter-row.active{border-bottom:1px solid var(--color-table-header-border)}th.filter-row .filters{margin-top:calc(var(--space-unit) * 1);display:flex;flex-wrap:wrap;gap:calc(var(--space-unit) * .5)}.filter-row-wrapper{padding:calc(var(--space-unit) * 4);padding-inline-start:0;max-height:150px;transition:max-height .2s,padding .2s,opacity .2s}.filter-row-wrapper.hidden{max-height:0px;padding-top:0;padding-bottom:0;overflow:hidden;opacity:0}.cell-link{display:block;width:100%;height:100%}td.active{background-color:var(--color-table-row-active-bg)}.cell-content{display:flex;align-items:center;line-height:var(--font-size-sm);color:var(--color-weight-700)}.cell-content.left{justify-content:flex-start}.cell-content.center{justify-content:center}.cell-content.right{justify-content:flex-end}.selection-col{width:calc(var(--space-unit) * 8)}vdr-empty-placeholder{width:100%}.table-footer{display:flex;align-items:baseline;justify-content:space-between;margin-top:var(--space-unit);margin-inline-start:var(--surface-margin-left);margin-inline-end:var(--space-unit)}.total-items-count{font-size:var(--font-size-xs)}@container (max-width: 500px){.total-items-count{display:none}}\n", ":host .is-cancelled td{text-decoration:line-through;background-color:var(--color-component-bg-200)}:host .sub-total td{border-top:1px dashed var(--color-component-border-200)}:host .total td{font-weight:700;border-top:1px dashed var(--color-component-border-200)}:host td.custom-fields-row{border-top-style:dashed;border-top-color:var(--color-grey-200)}:host img{border-radius:var(--border-radius-img)}:host .order-line-custom-fields{display:flex;flex-wrap:wrap}:host .order-line-custom-fields .custom-field{text-align:start;max-width:200px;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px;margin-inline-end:18px}:host .draft-qty{max-width:48px}:host .order-line-custom-field{background-color:var(--color-component-bg-100)}:host .order-line-custom-field .custom-field-ellipsis{color:var(--color-text-300)}:host .net-price{font-size:11px;color:var(--color-text-300);line-height:14px}:host .promotions-label{-webkit-text-decoration:underline dotted var(--color-text-200);text-decoration:underline dotted var(--color-text-200);font-size:11px;margin-top:6px;cursor:pointer;text-transform:lowercase}:host .thumb img{width:50px;height:50px}:host .shipping-method-name{font-size:var(--font-size-xs);margin-inline-end:2px}:host .order-placed-quantity{text-decoration:line-through;color:var(--color-text-300);margin-inline-end:2px}\n"], dependencies: [{ kind: "directive", type: i1.ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { kind: "directive", type: i1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i1.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "directive", type: i4.FormFieldControlDirective, selector: "input, textarea, select" }, { kind: "component", type: i4.EmptyPlaceholderComponent, selector: "vdr-empty-placeholder", inputs: ["emptyStateLabel"] }, { kind: "component", type: i4.UiExtensionPointComponent, selector: "vdr-ui-extension-point", inputs: ["locationId", "metadata", "topPx", "leftPx", "display", "api"] }, { kind: "component", type: i4.DataTableFiltersComponent, selector: "vdr-data-table-filters", inputs: ["filters", "filterWithValue"] }, { kind: "component", type: i4.DataTableColumnPickerComponent, selector: "vdr-data-table-colum-picker", inputs: ["columns", "uiLanguage"], outputs: ["reorder", "resetColumns"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.PaginatePipe, name: "paginate" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i4.LocaleCurrencyPipe, name: "localeCurrency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
49
49
  }
50
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: OrderDataTableComponent, decorators: [{
51
51
  type: Component,
52
- args: [{ selector: 'vdr-order-data-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"bulk-actions\">\r\n <ng-content select=\"vdr-bulk-action-menu\"></ng-content>\r\n</div>\r\n<div class=\"table-wrapper\">\r\n <table\r\n class=\"\"\r\n [class.no-select]=\"disableSelect\"\r\n >\r\n <thead [class.items-selected]=\"selectionManager?.selection.length\">\r\n <tr class=\"heading-row\">\r\n <th *ngIf=\"selectionManager\" class=\"selection-col\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"selectionManager?.areAllCurrentItemsSelected()\"\r\n (change)=\"onToggleAllClick()\"\r\n />\r\n </th>\r\n <th\r\n *ngFor=\"let column of visibleSortedColumns; last as isLast\"\r\n [class.expand]=\"column.expand\"\r\n >\r\n <div class=\"cell-content\" [ngClass]=\"column.align\">\r\n <span>{{ column.heading }}</span>\r\n <div *ngIf=\"column.sort as sort\" class=\"sort-toggle\">\r\n <button (click)=\"sort.toggleSortOrder()\" [class.active]=\"sort.sortOrder\">\r\n <clr-icon *ngIf=\"!sort.sortOrder\" shape=\"two-way-arrows left\"></clr-icon>\r\n <clr-icon *ngIf=\"sort.sortOrder === 'ASC'\" shape=\"arrow up\"></clr-icon>\r\n <clr-icon *ngIf=\"sort.sortOrder === 'DESC'\" shape=\"arrow down\"></clr-icon>\r\n </button>\r\n <div class=\"sort-label\" *ngIf=\"sort.sortOrder\">{{ sort.sortOrder }}</div>\r\n </div>\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"column-picker\">\r\n <vdr-data-table-colum-picker\r\n [uiLanguage]=\"uiLanguage$ | async\"\r\n [columns]=\"sortedColumns\"\r\n (reorder)=\"onColumnReorder($event)\"\r\n (resetColumns)=\"onColumnsReset()\"\r\n ></vdr-data-table-colum-picker>\r\n </div>\r\n </th>\r\n </tr>\r\n <tr *ngIf=\"searchComponent || customSearchTemplate || filters?.length\">\r\n <th\r\n [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\"\r\n class=\"filter-row\"\r\n [class.active]=\"showSearchFilterRow\"\r\n >\r\n <button\r\n class=\"button-ghost toggle-search-filter-row\"\r\n [class.active]=\"showSearchFilterRow\"\r\n (click)=\"toggleSearchFilterRow()\"\r\n [title]=\"'common.search-and-filter-list' | translate\"\r\n >\r\n <clr-icon shape=\"search\"></clr-icon>\r\n </button>\r\n <div class=\"filter-row-wrapper\" [class.hidden]=\"!showSearchFilterRow\">\r\n <ng-container *ngTemplateOutlet=\"searchComponent?.template\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"customSearchTemplate\"></ng-container>\r\n <ng-container *ngIf=\"filters\">\r\n <div class=\"filters\">\r\n <vdr-data-table-filters\r\n *ngFor=\"let activeFilter of filters.activeFilters\"\r\n [filterWithValue]=\"activeFilter\"\r\n [filters]=\"filters\"\r\n class=\"mt-1\"\r\n ></vdr-data-table-filters>\r\n <vdr-data-table-filters\r\n *ngIf=\"filters.length\"\r\n [filters]=\"filters\"\r\n class=\"mt-1\"\r\n ></vdr-data-table-filters>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let item of items\r\n | paginate\r\n : {\r\n id: id,\r\n itemsPerPage: itemsPerPage,\r\n currentPage: currentPage,\r\n totalItems: totalItems\r\n };\r\n index as i;\r\n trackBy: trackByFn\r\n \"\r\n >\r\n <td *ngIf=\"selectionManager\" class=\"selection-col\" [class.active]=\"activeIndex === i\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"selectionManager?.isSelected(item)\"\r\n (click)=\"onRowClick(item, $event)\"\r\n />\r\n </td>\r\n <td *ngFor=\"let column of visibleSortedColumns\" [class.active]=\"activeIndex === i\">\r\n <div class=\"cell-content\" [ngClass]=\"column.align\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.template; context: { item: item, index: i }\"\r\n ></ng-container>\r\n </div>\r\n </td>\r\n <td [class.active]=\"activeIndex === i\"><!-- column select --></td>\r\n </tr>\r\n <ng-container>\r\n <tr *ngIf=\"!items?.length\">\r\n <td [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\">\r\n <vdr-empty-placeholder [emptyStateLabel]=\"'order.order-is-empty' | translate\"></vdr-empty-placeholder>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"surcharge\" *ngFor=\"let surcharge of order.surcharges\">\r\n <td class=\"align-middle name left\" colspan=\"2\">{{ surcharge.description }}</td>\r\n <td class=\"align-middle sku\">{{ surcharge.sku }}</td>\r\n <td class=\"align-middle\" [attr.colspan]=\"visibleSortedColumns.length - 4\"></td>\r\n <td class=\"align-middle total\">\r\n {{ surcharge.priceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ surcharge.price | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n <ng-container *ngFor=\"let discount of order.discounts\">\r\n <tr class=\"order-adjustment\" *ngIf=\"discount.type !== 'OTHER'\">\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 1\" class=\"\">\r\n <a [routerLink]=\"getPromotionLink(discount)\">{{ discount.description }}</a>\r\n <vdr-chip *ngIf=\"getCouponCodeForAdjustment(order, discount) as couponCode\">{{\r\n couponCode\r\n }}</vdr-chip>\r\n </td>\r\n <td class=\"\">\r\n {{ discount.amountWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"sub-total\">\r\n <td class=\"\">{{ 'order.sub-total' | translate }}</td>\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.subTotalWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.subTotal | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n <tr class=\"shipping\">\r\n <td class=\"\">{{ 'order.shipping' | translate }}</td>\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\">\r\n <vdr-chip *ngFor=\"let shippingLine of order.shippingLines\" class=\"shipping-method-name\">\r\n {{ shippingLine.shippingMethod.name }}\r\n </vdr-chip>\r\n </td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.shippingWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.shipping | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n <tr class=\"total\">\r\n <td class=\"\">{{ 'order.total' | translate }}</td>\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.total | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n", styles: [":host{display:block;max-width:100%;position:relative;margin-bottom:calc(var(--space-unit) * 4);container-type:inline-size}th{border-bottom:1px solid var(--color-table-header-border);font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;position:relative;white-space:nowrap}th,td{padding:calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 1)}tr td:first-of-type,tr th:first-of-type{text-align:center}@media screen and (min-width: 992px){tr td:first-of-type,tr th:first-of-type{padding-inline-start:var(--surface-margin-left);text-align:start}}th:last-of-type,td:last-of-type{border-inline-end:1px solid var(--color-table-header-border)}tr:first-of-type th:last-of-type{border-image:linear-gradient(0deg,var(--color-table-header-border),transparent) 1}tr:last-of-type td:last-of-type{border-image:linear-gradient(180deg,var(--color-table-header-border),transparent) 1}tbody td{border-bottom:1px solid var(--color-table-row-separator)}tbody tr:hover{background-color:var(--color-table-row-hover-bg)}.bulk-actions{margin-inline-start:calc(var(--space-unit) * 5);background-color:var(--color-surface-bg);z-index:10;display:flex;position:absolute;top:5px;height:40px}@media screen and (min-width: 992px){.bulk-actions{margin-inline-start:calc(var(--space-unit) * 8.5)}}@media screen and (min-width: 1280px){.bulk-actions{margin-inline-start:calc(var(--space-unit) * 10.5)}}.table-wrapper{display:block;overflow-y:hidden;overflow-x:auto;position:relative;width:100%;max-width:var(--surface-width)}table{width:100%}table.no-select{-webkit-user-select:none;user-select:none}.column-picker{width:24px}.sort-toggle{display:flex;align-items:center;margin-inline-start:calc(var(--space-unit) * .5)}.sort-toggle button{border:0;border-radius:var(--border-radius-lg);color:var(--color-weight-500);padding:0 2px;cursor:pointer;background-color:transparent}.sort-toggle button.active{color:var(--color-primary-700)}.sort-toggle .sort-label{margin-inline-start:calc(var(--space-unit) * .5);font-size:10px;color:var(--color-primary-600);font-weight:400}.toggle-search-filter-row{position:absolute;top:-12px;left:4px}@media screen and (min-width: 1280px){.toggle-search-filter-row{left:8px}}.toggle-search-filter-row.active{background-color:var(--color-primary-700);color:var(--color-primary-100);border-color:var(--color-primary-700)}th.filter-row{position:relative;font-size:var(--font-size-base);font-weight:400;background-color:var(--color-weight-100);box-shadow:var(--data-table-filter-box-shadow);border-left-width:0;border-right-width:0;text-align:initial;padding:0}th.filter-row input{width:100%}th.filter-row.active{border-bottom:1px solid var(--color-table-header-border)}th.filter-row .filters{margin-top:calc(var(--space-unit) * 1);display:flex;flex-wrap:wrap;gap:calc(var(--space-unit) * .5)}.filter-row-wrapper{padding:calc(var(--space-unit) * 4);padding-inline-start:0;max-height:150px;transition:max-height .2s,padding .2s,opacity .2s}.filter-row-wrapper.hidden{max-height:0px;padding-top:0;padding-bottom:0;overflow:hidden;opacity:0}.cell-link{display:block;width:100%;height:100%}td.active{background-color:var(--color-table-row-active-bg)}.cell-content{display:flex;align-items:center;line-height:var(--font-size-sm);color:var(--color-weight-700)}.cell-content.left{justify-content:flex-start}.cell-content.center{justify-content:center}.cell-content.right{justify-content:flex-end}.selection-col{width:calc(var(--space-unit) * 8)}vdr-empty-placeholder{width:100%}.table-footer{display:flex;align-items:baseline;justify-content:space-between;margin-top:var(--space-unit);margin-inline-start:var(--surface-margin-left);margin-inline-end:var(--space-unit)}.total-items-count{font-size:var(--font-size-xs)}@container (max-width: 500px){.total-items-count{display:none}}\n", ":host .is-cancelled td{text-decoration:line-through;background-color:var(--color-component-bg-200)}:host .sub-total td{border-top:1px dashed var(--color-component-border-200)}:host .total td{font-weight:700;border-top:1px dashed var(--color-component-border-200)}:host td.custom-fields-row{border-top-style:dashed;border-top-color:var(--color-grey-200)}:host img{border-radius:var(--border-radius-img)}:host .order-line-custom-fields{display:flex;flex-wrap:wrap}:host .order-line-custom-fields .custom-field{text-align:start;max-width:200px;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px;margin-inline-end:18px}:host .draft-qty{max-width:48px}:host .order-line-custom-field{background-color:var(--color-component-bg-100)}:host .order-line-custom-field .custom-field-ellipsis{color:var(--color-text-300)}:host .net-price{font-size:11px;color:var(--color-text-300);line-height:14px}:host .promotions-label{-webkit-text-decoration:underline dotted var(--color-text-200);text-decoration:underline dotted var(--color-text-200);font-size:11px;margin-top:6px;cursor:pointer;text-transform:lowercase}:host .thumb img{width:50px;height:50px}:host .shipping-method-name{font-size:var(--font-size-xs);margin-inline-end:2px}:host .order-placed-quantity{text-decoration:line-through;color:var(--color-text-300);margin-inline-end:2px}\n"] }]
52
+ args: [{ selector: 'vdr-order-data-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"bulk-actions\">\r\n <ng-content select=\"vdr-bulk-action-menu\"></ng-content>\r\n</div>\r\n<div class=\"table-wrapper\">\r\n <table\r\n class=\"\"\r\n [class.no-select]=\"disableSelect\"\r\n >\r\n <thead [class.items-selected]=\"selectionManager?.selection.length\">\r\n <tr class=\"heading-row\">\r\n <th *ngIf=\"selectionManager\" class=\"selection-col\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"selectionManager?.areAllCurrentItemsSelected()\"\r\n (change)=\"onToggleAllClick()\"\r\n />\r\n </th>\r\n <th\r\n *ngFor=\"let column of visibleSortedColumns; last as isLast\"\r\n [class.expand]=\"column.expand\"\r\n >\r\n <div class=\"cell-content\" [ngClass]=\"column.align\">\r\n <vdr-ui-extension-point\r\n [locationId]=\"id\"\r\n [metadata]=\"column.id\"\r\n api=\"dataTable\"\r\n [topPx]=\"-6\"\r\n [leftPx]=\"-24\"\r\n display=\"block\"\r\n >\r\n <span>{{ column.heading }}</span>\r\n </vdr-ui-extension-point>\r\n <div *ngIf=\"column.sort as sort\" class=\"sort-toggle\">\r\n <button (click)=\"sort.toggleSortOrder()\" [class.active]=\"sort.sortOrder\">\r\n <clr-icon *ngIf=\"!sort.sortOrder\" shape=\"two-way-arrows left\"></clr-icon>\r\n <clr-icon *ngIf=\"sort.sortOrder === 'ASC'\" shape=\"arrow up\"></clr-icon>\r\n <clr-icon *ngIf=\"sort.sortOrder === 'DESC'\" shape=\"arrow down\"></clr-icon>\r\n </button>\r\n <div class=\"sort-label\" *ngIf=\"sort.sortOrder\">{{ sort.sortOrder }}</div>\r\n </div>\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"column-picker\">\r\n <vdr-data-table-colum-picker\r\n [uiLanguage]=\"uiLanguage$ | async\"\r\n [columns]=\"sortedColumns\"\r\n (reorder)=\"onColumnReorder($event)\"\r\n (resetColumns)=\"onColumnsReset()\"\r\n ></vdr-data-table-colum-picker>\r\n </div>\r\n </th>\r\n </tr>\r\n <tr *ngIf=\"searchComponent || customSearchTemplate || filters?.length\">\r\n <th\r\n [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\"\r\n class=\"filter-row\"\r\n [class.active]=\"showSearchFilterRow\"\r\n >\r\n <button\r\n class=\"button-ghost toggle-search-filter-row\"\r\n [class.active]=\"showSearchFilterRow\"\r\n (click)=\"toggleSearchFilterRow()\"\r\n [title]=\"'common.search-and-filter-list' | translate\"\r\n >\r\n <clr-icon shape=\"search\"></clr-icon>\r\n </button>\r\n <div class=\"filter-row-wrapper\" [class.hidden]=\"!showSearchFilterRow\">\r\n <ng-container *ngTemplateOutlet=\"searchComponent?.template\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"customSearchTemplate\"></ng-container>\r\n <ng-container *ngIf=\"filters\">\r\n <div class=\"filters\">\r\n <vdr-data-table-filters\r\n *ngFor=\"let activeFilter of filters.activeFilters\"\r\n [filterWithValue]=\"activeFilter\"\r\n [filters]=\"filters\"\r\n class=\"mt-1\"\r\n ></vdr-data-table-filters>\r\n <vdr-data-table-filters\r\n *ngIf=\"filters.length\"\r\n [filters]=\"filters\"\r\n class=\"mt-1\"\r\n ></vdr-data-table-filters>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let item of items\r\n | paginate\r\n : {\r\n id: id,\r\n itemsPerPage: itemsPerPage,\r\n currentPage: currentPage,\r\n totalItems: totalItems\r\n };\r\n index as i;\r\n trackBy: trackByFn\r\n \"\r\n >\r\n <td *ngIf=\"selectionManager\" class=\"selection-col\" [class.active]=\"activeIndex === i\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"selectionManager?.isSelected(item)\"\r\n (click)=\"onRowClick(item, $event)\"\r\n />\r\n </td>\r\n <td *ngFor=\"let column of visibleSortedColumns\" [class.active]=\"activeIndex === i\">\r\n <div class=\"cell-content\" [ngClass]=\"column.align\">\r\n <ng-container\r\n *ngIf=\"customComponents.get(column.id) as componentConfig; else defaultComponent\"\r\n >\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n componentConfig.config.component;\r\n inputs: { rowItem: item };\r\n injector: componentConfig.injector\r\n \"\r\n ></ng-container>\r\n </ng-container>\r\n <ng-template #defaultComponent>\r\n <ng-container\r\n *ngTemplateOutlet=\"column.template; context: { item: item, index: i }\"\r\n ></ng-container>\r\n </ng-template>\r\n </div>\r\n </td>\r\n <td [class.active]=\"activeIndex === i\"><!-- column select --></td>\r\n </tr>\r\n <ng-container>\r\n <tr *ngIf=\"!items?.length\">\r\n <td [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\">\r\n <vdr-empty-placeholder [emptyStateLabel]=\"'order.order-is-empty' | translate\"></vdr-empty-placeholder>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"surcharge\" *ngFor=\"let surcharge of order.surcharges\">\r\n <td class=\"align-middle name left\" colspan=\"2\">{{ surcharge.description }}</td>\r\n <td class=\"align-middle sku\">{{ surcharge.sku }}</td>\r\n <td class=\"align-middle\" [attr.colspan]=\"visibleSortedColumns.length - 4\"></td>\r\n <td class=\"align-middle total\">\r\n {{ surcharge.priceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ surcharge.price | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n <ng-container *ngFor=\"let discount of order.discounts\">\r\n <tr class=\"order-adjustment\" *ngIf=\"discount.type !== 'OTHER'\">\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 1\" class=\"\">\r\n <a [routerLink]=\"getPromotionLink(discount)\">{{ discount.description }}</a>\r\n <vdr-chip *ngIf=\"getCouponCodeForAdjustment(order, discount) as couponCode\">{{\r\n couponCode\r\n }}</vdr-chip>\r\n </td>\r\n <td class=\"\">\r\n {{ discount.amountWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"sub-total\">\r\n <td class=\"\">{{ 'order.sub-total' | translate }}</td>\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.subTotalWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.subTotal | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n <tr class=\"shipping\">\r\n <td class=\"\">{{ 'order.shipping' | translate }}</td>\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\">\r\n <vdr-chip *ngFor=\"let shippingLine of order.shippingLines\" class=\"shipping-method-name\">\r\n {{ shippingLine.shippingMethod.name }}\r\n </vdr-chip>\r\n </td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.shippingWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.shipping | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n <tr class=\"total\">\r\n <td class=\"\">{{ 'order.total' | translate }}</td>\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.total | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n", styles: [":host{display:block;max-width:100%;position:relative;margin-bottom:calc(var(--space-unit) * 4);container-type:inline-size}th{border-bottom:1px solid var(--color-table-header-border);font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;position:relative;white-space:nowrap}th,td{padding:calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 1)}tr td:first-of-type,tr th:first-of-type{text-align:center}@media screen and (min-width: 992px){tr td:first-of-type,tr th:first-of-type{padding-inline-start:var(--surface-margin-left);text-align:start}}th:last-of-type,td:last-of-type{border-inline-end:1px solid var(--color-table-header-border)}tr:first-of-type th:last-of-type{border-image:linear-gradient(0deg,var(--color-table-header-border),transparent) 1}tr:last-of-type td:last-of-type{border-image:linear-gradient(180deg,var(--color-table-header-border),transparent) 1}tbody td{border-bottom:1px solid var(--color-table-row-separator)}tbody tr:hover{background-color:var(--color-table-row-hover-bg)}.bulk-actions{margin-inline-start:calc(var(--space-unit) * 5);background-color:var(--color-surface-bg);z-index:10;display:flex;position:absolute;top:5px;height:40px}@media screen and (min-width: 992px){.bulk-actions{margin-inline-start:calc(var(--space-unit) * 8.5)}}@media screen and (min-width: 1280px){.bulk-actions{margin-inline-start:calc(var(--space-unit) * 10.5)}}.table-wrapper{display:block;overflow-y:hidden;overflow-x:auto;position:relative;width:100%;max-width:var(--surface-width)}table{width:100%}table.no-select{-webkit-user-select:none;user-select:none}.column-picker{width:24px}.sort-toggle{display:flex;align-items:center;margin-inline-start:calc(var(--space-unit) * .5)}.sort-toggle button{border:0;border-radius:var(--border-radius-lg);color:var(--color-weight-500);padding:0 2px;cursor:pointer;background-color:transparent}.sort-toggle button.active{color:var(--color-primary-700)}.sort-toggle .sort-label{margin-inline-start:calc(var(--space-unit) * .5);font-size:10px;color:var(--color-primary-600);font-weight:400}.toggle-search-filter-row{position:absolute;top:-12px;left:4px}@media screen and (min-width: 1280px){.toggle-search-filter-row{left:8px}}.toggle-search-filter-row.active{background-color:var(--color-primary-700);color:var(--color-primary-100);border-color:var(--color-primary-700)}th.filter-row{position:relative;font-size:var(--font-size-base);font-weight:400;background-color:var(--color-weight-100);box-shadow:var(--data-table-filter-box-shadow);border-left-width:0;border-right-width:0;text-align:initial;padding:0}th.filter-row input{width:100%}th.filter-row.active{border-bottom:1px solid var(--color-table-header-border)}th.filter-row .filters{margin-top:calc(var(--space-unit) * 1);display:flex;flex-wrap:wrap;gap:calc(var(--space-unit) * .5)}.filter-row-wrapper{padding:calc(var(--space-unit) * 4);padding-inline-start:0;max-height:150px;transition:max-height .2s,padding .2s,opacity .2s}.filter-row-wrapper.hidden{max-height:0px;padding-top:0;padding-bottom:0;overflow:hidden;opacity:0}.cell-link{display:block;width:100%;height:100%}td.active{background-color:var(--color-table-row-active-bg)}.cell-content{display:flex;align-items:center;line-height:var(--font-size-sm);color:var(--color-weight-700)}.cell-content.left{justify-content:flex-start}.cell-content.center{justify-content:center}.cell-content.right{justify-content:flex-end}.selection-col{width:calc(var(--space-unit) * 8)}vdr-empty-placeholder{width:100%}.table-footer{display:flex;align-items:baseline;justify-content:space-between;margin-top:var(--space-unit);margin-inline-start:var(--surface-margin-left);margin-inline-end:var(--space-unit)}.total-items-count{font-size:var(--font-size-xs)}@container (max-width: 500px){.total-items-count{display:none}}\n", ":host .is-cancelled td{text-decoration:line-through;background-color:var(--color-component-bg-200)}:host .sub-total td{border-top:1px dashed var(--color-component-border-200)}:host .total td{font-weight:700;border-top:1px dashed var(--color-component-border-200)}:host td.custom-fields-row{border-top-style:dashed;border-top-color:var(--color-grey-200)}:host img{border-radius:var(--border-radius-img)}:host .order-line-custom-fields{display:flex;flex-wrap:wrap}:host .order-line-custom-fields .custom-field{text-align:start;max-width:200px;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px;margin-inline-end:18px}:host .draft-qty{max-width:48px}:host .order-line-custom-field{background-color:var(--color-component-bg-100)}:host .order-line-custom-field .custom-field-ellipsis{color:var(--color-text-300)}:host .net-price{font-size:11px;color:var(--color-text-300);line-height:14px}:host .promotions-label{-webkit-text-decoration:underline dotted var(--color-text-200);text-decoration:underline dotted var(--color-text-200);font-size:11px;margin-top:6px;cursor:pointer;text-transform:lowercase}:host .thumb img{width:50px;height:50px}:host .shipping-method-name{font-size:var(--font-size-xs);margin-inline-end:2px}:host .order-placed-quantity{text-decoration:line-through;color:var(--color-text-300);margin-inline-end:2px}\n"] }]
53
53
  }], propDecorators: { totalColumns: [{
54
54
  type: ContentChildren,
55
55
  args: [OrderTotalColumnComponent]
56
56
  }], order: [{
57
57
  type: Input
58
58
  }] } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZGVyL3NyYy9jb21wb25lbnRzL29yZGVyLWRhdGEtdGFibGUvb3JkZXItZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZGVyL3NyYy9jb21wb25lbnRzL29yZGVyLWRhdGEtdGFibGUvb3JkZXItZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUE2QixtQkFBbUIsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7QUFXM0UsTUFBTSxPQUFPLHVCQUF3QixTQUFRLG1CQUF3QztJQUlqRixJQUFJLFVBQVU7UUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2hDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2xELEtBQUssTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdEUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDOUMsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDekQsSUFBSSxZQUFZLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxFQUFFO2dCQUMvQixPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQ3BDO1NBQ0o7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBbUQ7UUFDaEUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsMEJBQTBCLENBQ3RCLEtBQTBCLEVBQzFCLG1CQUE2RDtRQUU3RCxNQUFNLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzFELElBQUksU0FBUyxFQUFFO1lBQ1gsT0FBTyxTQUFTLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQztTQUM1QztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUEwQjtRQUN2QyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQzVCLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvRjthQUFNO1lBQ0gsT0FBTyxFQUFFLENBQUM7U0FDYjtJQUNMLENBQUM7OEdBNUNRLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHFIQUNmLHlCQUF5QixvRENkOUMsb3NVQTZMQTs7MkZEaExhLHVCQUF1QjtrQkFUbkMsU0FBUzsrQkFDSSxzQkFBc0IsbUJBTWYsdUJBQXVCLENBQUMsTUFBTTs4QkFHSCxZQUFZO3NCQUF2RCxlQUFlO3VCQUFDLHlCQUF5QjtnQkFDakMsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBJbnB1dCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGFUYWJsZTJDb2x1bW5Db21wb25lbnQsIERhdGFUYWJsZTJDb21wb25lbnQsIE9yZGVyRGV0YWlsRnJhZ21lbnQgfSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgT3JkZXJUb3RhbENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vb3JkZXItdG90YWwtY29sdW1uLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLW9yZGVyLWRhdGEtdGFibGUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL29yZGVyLWRhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbXHJcbiAgICAgICAgJy4uLy4uLy4uLy4uL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2RhdGEtdGFibGUtMi9kYXRhLXRhYmxlMi5jb21wb25lbnQuc2NzcycsXHJcbiAgICAgICAgJy4vb3JkZXItZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcycsXHJcbiAgICBdLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPcmRlckRhdGFUYWJsZUNvbXBvbmVudCBleHRlbmRzIERhdGFUYWJsZTJDb21wb25lbnQ8T3JkZXJEZXRhaWxGcmFnbWVudD4ge1xyXG4gICAgQENvbnRlbnRDaGlsZHJlbihPcmRlclRvdGFsQ29sdW1uQ29tcG9uZW50KSB0b3RhbENvbHVtbnM6IFF1ZXJ5TGlzdDxPcmRlclRvdGFsQ29sdW1uQ29tcG9uZW50PGFueT4+O1xyXG4gICAgQElucHV0KCkgb3JkZXI6IE9yZGVyRGV0YWlsRnJhZ21lbnQ7XHJcblxyXG4gICAgZ2V0IGFsbENvbHVtbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi4odGhpcy5jb2x1bW5zID8/IFtdKSwgLi4uKHRoaXMuY3VzdG9tRmllbGRDb2x1bW5zID8/IFtdKSwgLi4uKHRoaXMudG90YWxDb2x1bW5zID8/IFtdKV07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNvcnRlZENvbHVtbnMoKSB7XHJcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuYWxsQ29sdW1ucztcclxuICAgICAgICBjb25zdCBkYXRhVGFibGVDb25maWcgPSB0aGlzLmdldERhdGFUYWJsZUNvbmZpZygpO1xyXG4gICAgICAgIGZvciAoY29uc3QgW2lkLCBpbmRleF0gb2YgT2JqZWN0LmVudHJpZXMoZGF0YVRhYmxlQ29uZmlnW3RoaXMuaWRdLm9yZGVyKSkge1xyXG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoYyA9PiBjLmlkID09PSBpZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGNvbHVtbnMuZmluZEluZGV4KGMgPT4gYy5pZCA9PT0gaWQpO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudEluZGV4ICE9PSAtMSAmJiBjb2x1bW4pIHtcclxuICAgICAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKGN1cnJlbnRJbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zLnNwbGljZShpbmRleCwgMCwgY29sdW1uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29sdW1ucztcclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9tb3Rpb25MaW5rKHByb21vdGlvbjogT3JkZXJEZXRhaWxGcmFnbWVudFsnZGlzY291bnRzJ11bbnVtYmVyXSk6IGFueVtdIHtcclxuICAgICAgICBjb25zdCBpZCA9IHByb21vdGlvbi5hZGp1c3RtZW50U291cmNlLnNwbGl0KCc6JylbMV07XHJcbiAgICAgICAgcmV0dXJuIFsnL21hcmtldGluZycsICdwcm9tb3Rpb25zJywgaWRdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENvdXBvbkNvZGVGb3JBZGp1c3RtZW50KFxyXG4gICAgICAgIG9yZGVyOiBPcmRlckRldGFpbEZyYWdtZW50LFxyXG4gICAgICAgIHByb21vdGlvbkFkanVzdG1lbnQ6IE9yZGVyRGV0YWlsRnJhZ21lbnRbJ2Rpc2NvdW50cyddW251bWJlcl0sXHJcbiAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGlkID0gcHJvbW90aW9uQWRqdXN0bWVudC5hZGp1c3RtZW50U291cmNlLnNwbGl0KCc6JylbMV07XHJcbiAgICAgICAgY29uc3QgcHJvbW90aW9uID0gb3JkZXIucHJvbW90aW9ucy5maW5kKHAgPT4gcC5pZCA9PT0gaWQpO1xyXG4gICAgICAgIGlmIChwcm9tb3Rpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb21vdGlvbi5jb3Vwb25Db2RlIHx8IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2hpcHBpbmdOYW1lcyhvcmRlcjogT3JkZXJEZXRhaWxGcmFnbWVudCkge1xyXG4gICAgICAgIGlmIChvcmRlci5zaGlwcGluZ0xpbmVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gb3JkZXIuc2hpcHBpbmdMaW5lcy5tYXAoc2hpcHBpbmdMaW5lID0+IHNoaXBwaW5nTGluZS5zaGlwcGluZ01ldGhvZC5uYW1lKS5qb2luKCcsICcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImJ1bGstYWN0aW9uc1wiPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwidmRyLWJ1bGstYWN0aW9uLW1lbnVcIj48L25nLWNvbnRlbnQ+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwidGFibGUtd3JhcHBlclwiPlxyXG4gICAgPHRhYmxlXHJcbiAgICAgICAgY2xhc3M9XCJcIlxyXG4gICAgICAgIFtjbGFzcy5uby1zZWxlY3RdPVwiZGlzYWJsZVNlbGVjdFwiXHJcbiAgICA+XHJcbiAgICAgICAgPHRoZWFkIFtjbGFzcy5pdGVtcy1zZWxlY3RlZF09XCJzZWxlY3Rpb25NYW5hZ2VyPy5zZWxlY3Rpb24ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImhlYWRpbmctcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJzZWxlY3Rpb25NYW5hZ2VyXCIgY2xhc3M9XCJzZWxlY3Rpb24tY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsckNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbk1hbmFnZXI/LmFyZUFsbEN1cnJlbnRJdGVtc1NlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlQWxsQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHZpc2libGVTb3J0ZWRDb2x1bW5zOyBsYXN0IGFzIGlzTGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmV4cGFuZF09XCJjb2x1bW4uZXhwYW5kXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VsbC1jb250ZW50XCIgW25nQ2xhc3NdPVwiY29sdW1uLmFsaWduXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbHVtbi5oZWFkaW5nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sdW1uLnNvcnQgYXMgc29ydFwiIGNsYXNzPVwic29ydC10b2dnbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNvcnQudG9nZ2xlU29ydE9yZGVyKClcIiBbY2xhc3MuYWN0aXZlXT1cInNvcnQuc29ydE9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uICpuZ0lmPVwiIXNvcnQuc29ydE9yZGVyXCIgc2hhcGU9XCJ0d28td2F5LWFycm93cyBsZWZ0XCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gKm5nSWY9XCJzb3J0LnNvcnRPcmRlciA9PT0gJ0FTQydcIiBzaGFwZT1cImFycm93IHVwXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gKm5nSWY9XCJzb3J0LnNvcnRPcmRlciA9PT0gJ0RFU0MnXCIgc2hhcGU9XCJhcnJvdyBkb3duXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNvcnQtbGFiZWxcIiAqbmdJZj1cInNvcnQuc29ydE9yZGVyXCI+e3sgc29ydC5zb3J0T3JkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tcGlja2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItZGF0YS10YWJsZS1jb2x1bS1waWNrZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1aUxhbmd1YWdlXT1cInVpTGFuZ3VhZ2UkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbnNdPVwic29ydGVkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVvcmRlcik9XCJvbkNvbHVtblJlb3JkZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzZXRDb2x1bW5zKT1cIm9uQ29sdW1uc1Jlc2V0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC92ZHItZGF0YS10YWJsZS1jb2x1bS1waWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8dHIgKm5nSWY9XCJzZWFyY2hDb21wb25lbnQgfHwgY3VzdG9tU2VhcmNoVGVtcGxhdGUgfHwgZmlsdGVycz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cInZpc2libGVTb3J0ZWRDb2x1bW5zLmxlbmd0aCArIChzZWxlY3Rpb25NYW5hZ2VyID8gMiA6IDEpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1yb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2hvd1NlYXJjaEZpbHRlclJvd1wiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1naG9zdCB0b2dnbGUtc2VhcmNoLWZpbHRlci1yb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNob3dTZWFyY2hGaWx0ZXJSb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2VhcmNoRmlsdGVyUm93KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ2NvbW1vbi5zZWFyY2gtYW5kLWZpbHRlci1saXN0JyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJzZWFyY2hcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItcm93LXdyYXBwZXJcIiBbY2xhc3MuaGlkZGVuXT1cIiFzaG93U2VhcmNoRmlsdGVyUm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hDb21wb25lbnQ/LnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21TZWFyY2hUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWRhdGEtdGFibGUtZmlsdGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aXZlRmlsdGVyIG9mIGZpbHRlcnMuYWN0aXZlRmlsdGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJXaXRoVmFsdWVdPVwiYWN0aXZlRmlsdGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdmRyLWRhdGEtdGFibGUtZmlsdGVycz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWRhdGEtdGFibGUtZmlsdGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpbHRlcnMubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdmRyLWRhdGEtdGFibGUtZmlsdGVycz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgaXRlbXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWdpbmF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc1BlclBhZ2U6IGl0ZW1zUGVyUGFnZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBjdXJyZW50UGFnZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsSXRlbXM6IHRvdGFsSXRlbXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGblxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0aW9uTWFuYWdlclwiIGNsYXNzPVwic2VsZWN0aW9uLWNvbFwiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlSW5kZXggPT09IGlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xyQ2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uTWFuYWdlcj8uaXNTZWxlY3RlZChpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKGl0ZW0sICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdmlzaWJsZVNvcnRlZENvbHVtbnNcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZUluZGV4ID09PSBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbGwtY29udGVudFwiIFtuZ0NsYXNzXT1cImNvbHVtbi5hbGlnblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi50ZW1wbGF0ZTsgY29udGV4dDogeyBpdGVtOiBpdGVtLCBpbmRleDogaSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZUluZGV4ID09PSBpXCI+PCEtLSBjb2x1bW4gc2VsZWN0IC0tPjwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCIhaXRlbXM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cInZpc2libGVTb3J0ZWRDb2x1bW5zLmxlbmd0aCArIChzZWxlY3Rpb25NYW5hZ2VyID8gMiA6IDEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItZW1wdHktcGxhY2Vob2xkZXIgW2VtcHR5U3RhdGVMYWJlbF09XCInb3JkZXIub3JkZXItaXMtZW1wdHknIHwgdHJhbnNsYXRlXCI+PC92ZHItZW1wdHktcGxhY2Vob2xkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJzdXJjaGFyZ2VcIiAqbmdGb3I9XCJsZXQgc3VyY2hhcmdlIG9mIG9yZGVyLnN1cmNoYXJnZXNcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFsaWduLW1pZGRsZSBuYW1lIGxlZnRcIiBjb2xzcGFuPVwiMlwiPnt7IHN1cmNoYXJnZS5kZXNjcmlwdGlvbiB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJhbGlnbi1taWRkbGUgc2t1XCI+e3sgc3VyY2hhcmdlLnNrdSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJhbGlnbi1taWRkbGVcIiBbYXR0ci5jb2xzcGFuXT1cInZpc2libGVTb3J0ZWRDb2x1bW5zLmxlbmd0aCAtIDRcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWxpZ24tbWlkZGxlIHRvdGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgc3VyY2hhcmdlLnByaWNlV2l0aFRheCB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ldC1wcmljZVwiIFt0aXRsZV09XCInb3JkZXIubmV0LXByaWNlJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzdXJjaGFyZ2UucHJpY2UgfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD48IS0tIGNvbHVtbiBzZWxlY3QgLS0+PC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGlzY291bnQgb2Ygb3JkZXIuZGlzY291bnRzXCI+XHJcbiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJvcmRlci1hZGp1c3RtZW50XCIgKm5nSWY9XCJkaXNjb3VudC50eXBlICE9PSAnT1RIRVInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwidmlzaWJsZVNvcnRlZENvbHVtbnMubGVuZ3RoIC0gMVwiIGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cImdldFByb21vdGlvbkxpbmsoZGlzY291bnQpXCI+e3sgZGlzY291bnQuZGVzY3JpcHRpb24gfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItY2hpcCAqbmdJZj1cImdldENvdXBvbkNvZGVGb3JBZGp1c3RtZW50KG9yZGVyLCBkaXNjb3VudCkgYXMgY291cG9uQ29kZVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Vwb25Db2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC92ZHItY2hpcD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkaXNjb3VudC5hbW91bnRXaXRoVGF4IHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ldC1wcmljZVwiIFt0aXRsZV09XCInb3JkZXIubmV0LXByaWNlJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGlzY291bnQuYW1vdW50IHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+PCEtLSBjb2x1bW4gc2VsZWN0IC0tPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwic3ViLXRvdGFsXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJcIj57eyAnb3JkZXIuc3ViLXRvdGFsJyB8IHRyYW5zbGF0ZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJ2aXNpYmxlU29ydGVkQ29sdW1ucy5sZW5ndGggLSAyXCI+PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNsci1hbGlnbi1taWRkbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBvcmRlci5zdWJUb3RhbFdpdGhUYXggfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXQtcHJpY2VcIiBbdGl0bGVdPVwiJ29yZGVyLm5ldC1wcmljZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgb3JkZXIuc3ViVG90YWwgfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD48IS0tIGNvbHVtbiBzZWxlY3QgLS0+PC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwic2hpcHBpbmdcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIlwiPnt7ICdvcmRlci5zaGlwcGluZycgfCB0cmFuc2xhdGUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwidmlzaWJsZVNvcnRlZENvbHVtbnMubGVuZ3RoIC0gMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItY2hpcCAqbmdGb3I9XCJsZXQgc2hpcHBpbmdMaW5lIG9mIG9yZGVyLnNoaXBwaW5nTGluZXNcIiBjbGFzcz1cInNoaXBwaW5nLW1ldGhvZC1uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNoaXBwaW5nTGluZS5zaGlwcGluZ01ldGhvZC5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItY2hpcD5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjbHItYWxpZ24tbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgb3JkZXIuc2hpcHBpbmdXaXRoVGF4IHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV0LXByaWNlXCIgW3RpdGxlXT1cIidvcmRlci5uZXQtcHJpY2UnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9yZGVyLnNoaXBwaW5nIHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+PCEtLSBjb2x1bW4gc2VsZWN0IC0tPjwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRvdGFsXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJcIj57eyAnb3JkZXIudG90YWwnIHwgdHJhbnNsYXRlIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cInZpc2libGVTb3J0ZWRDb2x1bW5zLmxlbmd0aCAtIDJcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2xyLWFsaWduLW1pZGRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG9yZGVyLnRvdGFsV2l0aFRheCB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ldC1wcmljZVwiIFt0aXRsZV09XCInb3JkZXIubmV0LXByaWNlJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBvcmRlci50b3RhbCB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPjwhLS0gY29sdW1uIHNlbGVjdCAtLT48L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICA8L3RhYmxlPlxyXG48L2Rpdj5cclxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZGVyL3NyYy9jb21wb25lbnRzL29yZGVyLWRhdGEtdGFibGUvb3JkZXItZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZGVyL3NyYy9jb21wb25lbnRzL29yZGVyLWRhdGEtdGFibGUvb3JkZXItZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUE2QixtQkFBbUIsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7QUFXM0UsTUFBTSxPQUFPLHVCQUF3QixTQUFRLG1CQUF3QztJQUlqRixJQUFJLFVBQVU7UUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2hDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2xELEtBQUssTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdEUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDOUMsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDekQsSUFBSSxZQUFZLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxFQUFFO2dCQUMvQixPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQ3BDO1NBQ0o7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBbUQ7UUFDaEUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsMEJBQTBCLENBQ3RCLEtBQTBCLEVBQzFCLG1CQUE2RDtRQUU3RCxNQUFNLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzFELElBQUksU0FBUyxFQUFFO1lBQ1gsT0FBTyxTQUFTLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQztTQUM1QztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUEwQjtRQUN2QyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQzVCLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvRjthQUFNO1lBQ0gsT0FBTyxFQUFFLENBQUM7U0FDYjtJQUNMLENBQUM7OEdBNUNRLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHFIQUNmLHlCQUF5QixvRENkOUMsODFXQW1OQTs7MkZEdE1hLHVCQUF1QjtrQkFUbkMsU0FBUzsrQkFDSSxzQkFBc0IsbUJBTWYsdUJBQXVCLENBQUMsTUFBTTs4QkFHSCxZQUFZO3NCQUF2RCxlQUFlO3VCQUFDLHlCQUF5QjtnQkFDakMsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBJbnB1dCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGFUYWJsZTJDb2x1bW5Db21wb25lbnQsIERhdGFUYWJsZTJDb21wb25lbnQsIE9yZGVyRGV0YWlsRnJhZ21lbnQgfSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgT3JkZXJUb3RhbENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vb3JkZXItdG90YWwtY29sdW1uLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLW9yZGVyLWRhdGEtdGFibGUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL29yZGVyLWRhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbXHJcbiAgICAgICAgJy4uLy4uLy4uLy4uL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2RhdGEtdGFibGUtMi9kYXRhLXRhYmxlMi5jb21wb25lbnQuc2NzcycsXHJcbiAgICAgICAgJy4vb3JkZXItZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcycsXHJcbiAgICBdLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPcmRlckRhdGFUYWJsZUNvbXBvbmVudCBleHRlbmRzIERhdGFUYWJsZTJDb21wb25lbnQ8T3JkZXJEZXRhaWxGcmFnbWVudD4ge1xyXG4gICAgQENvbnRlbnRDaGlsZHJlbihPcmRlclRvdGFsQ29sdW1uQ29tcG9uZW50KSB0b3RhbENvbHVtbnM6IFF1ZXJ5TGlzdDxPcmRlclRvdGFsQ29sdW1uQ29tcG9uZW50PGFueT4+O1xyXG4gICAgQElucHV0KCkgb3JkZXI6IE9yZGVyRGV0YWlsRnJhZ21lbnQ7XHJcblxyXG4gICAgZ2V0IGFsbENvbHVtbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi4odGhpcy5jb2x1bW5zID8/IFtdKSwgLi4uKHRoaXMuY3VzdG9tRmllbGRDb2x1bW5zID8/IFtdKSwgLi4uKHRoaXMudG90YWxDb2x1bW5zID8/IFtdKV07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNvcnRlZENvbHVtbnMoKSB7XHJcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuYWxsQ29sdW1ucztcclxuICAgICAgICBjb25zdCBkYXRhVGFibGVDb25maWcgPSB0aGlzLmdldERhdGFUYWJsZUNvbmZpZygpO1xyXG4gICAgICAgIGZvciAoY29uc3QgW2lkLCBpbmRleF0gb2YgT2JqZWN0LmVudHJpZXMoZGF0YVRhYmxlQ29uZmlnW3RoaXMuaWRdLm9yZGVyKSkge1xyXG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoYyA9PiBjLmlkID09PSBpZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGNvbHVtbnMuZmluZEluZGV4KGMgPT4gYy5pZCA9PT0gaWQpO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudEluZGV4ICE9PSAtMSAmJiBjb2x1bW4pIHtcclxuICAgICAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKGN1cnJlbnRJbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zLnNwbGljZShpbmRleCwgMCwgY29sdW1uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29sdW1ucztcclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9tb3Rpb25MaW5rKHByb21vdGlvbjogT3JkZXJEZXRhaWxGcmFnbWVudFsnZGlzY291bnRzJ11bbnVtYmVyXSk6IGFueVtdIHtcclxuICAgICAgICBjb25zdCBpZCA9IHByb21vdGlvbi5hZGp1c3RtZW50U291cmNlLnNwbGl0KCc6JylbMV07XHJcbiAgICAgICAgcmV0dXJuIFsnL21hcmtldGluZycsICdwcm9tb3Rpb25zJywgaWRdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENvdXBvbkNvZGVGb3JBZGp1c3RtZW50KFxyXG4gICAgICAgIG9yZGVyOiBPcmRlckRldGFpbEZyYWdtZW50LFxyXG4gICAgICAgIHByb21vdGlvbkFkanVzdG1lbnQ6IE9yZGVyRGV0YWlsRnJhZ21lbnRbJ2Rpc2NvdW50cyddW251bWJlcl0sXHJcbiAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGlkID0gcHJvbW90aW9uQWRqdXN0bWVudC5hZGp1c3RtZW50U291cmNlLnNwbGl0KCc6JylbMV07XHJcbiAgICAgICAgY29uc3QgcHJvbW90aW9uID0gb3JkZXIucHJvbW90aW9ucy5maW5kKHAgPT4gcC5pZCA9PT0gaWQpO1xyXG4gICAgICAgIGlmIChwcm9tb3Rpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb21vdGlvbi5jb3Vwb25Db2RlIHx8IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2hpcHBpbmdOYW1lcyhvcmRlcjogT3JkZXJEZXRhaWxGcmFnbWVudCkge1xyXG4gICAgICAgIGlmIChvcmRlci5zaGlwcGluZ0xpbmVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gb3JkZXIuc2hpcHBpbmdMaW5lcy5tYXAoc2hpcHBpbmdMaW5lID0+IHNoaXBwaW5nTGluZS5zaGlwcGluZ01ldGhvZC5uYW1lKS5qb2luKCcsICcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImJ1bGstYWN0aW9uc1wiPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwidmRyLWJ1bGstYWN0aW9uLW1lbnVcIj48L25nLWNvbnRlbnQ+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwidGFibGUtd3JhcHBlclwiPlxyXG4gICAgPHRhYmxlXHJcbiAgICAgICAgY2xhc3M9XCJcIlxyXG4gICAgICAgIFtjbGFzcy5uby1zZWxlY3RdPVwiZGlzYWJsZVNlbGVjdFwiXHJcbiAgICA+XHJcbiAgICAgICAgPHRoZWFkIFtjbGFzcy5pdGVtcy1zZWxlY3RlZF09XCJzZWxlY3Rpb25NYW5hZ2VyPy5zZWxlY3Rpb24ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImhlYWRpbmctcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJzZWxlY3Rpb25NYW5hZ2VyXCIgY2xhc3M9XCJzZWxlY3Rpb24tY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsckNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbk1hbmFnZXI/LmFyZUFsbEN1cnJlbnRJdGVtc1NlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlQWxsQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHZpc2libGVTb3J0ZWRDb2x1bW5zOyBsYXN0IGFzIGlzTGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmV4cGFuZF09XCJjb2x1bW4uZXhwYW5kXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VsbC1jb250ZW50XCIgW25nQ2xhc3NdPVwiY29sdW1uLmFsaWduXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItdWktZXh0ZW5zaW9uLXBvaW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbG9jYXRpb25JZF09XCJpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWV0YWRhdGFdPVwiY29sdW1uLmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaT1cImRhdGFUYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9wUHhdPVwiLTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xlZnRQeF09XCItMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheT1cImJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29sdW1uLmhlYWRpbmcgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmRyLXVpLWV4dGVuc2lvbi1wb2ludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbHVtbi5zb3J0IGFzIHNvcnRcIiBjbGFzcz1cInNvcnQtdG9nZ2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzb3J0LnRvZ2dsZVNvcnRPcmRlcigpXCIgW2NsYXNzLmFjdGl2ZV09XCJzb3J0LnNvcnRPcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiAqbmdJZj1cIiFzb3J0LnNvcnRPcmRlclwiIHNoYXBlPVwidHdvLXdheS1hcnJvd3MgbGVmdFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uICpuZ0lmPVwic29ydC5zb3J0T3JkZXIgPT09ICdBU0MnXCIgc2hhcGU9XCJhcnJvdyB1cFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uICpuZ0lmPVwic29ydC5zb3J0T3JkZXIgPT09ICdERVNDJ1wiIHNoYXBlPVwiYXJyb3cgZG93blwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzb3J0LWxhYmVsXCIgKm5nSWY9XCJzb3J0LnNvcnRPcmRlclwiPnt7IHNvcnQuc29ydE9yZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBpY2tlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWRhdGEtdGFibGUtY29sdW0tcGlja2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdWlMYW5ndWFnZV09XCJ1aUxhbmd1YWdlJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cInNvcnRlZENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlb3JkZXIpPVwib25Db2x1bW5SZW9yZGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc2V0Q29sdW1ucyk9XCJvbkNvbHVtbnNSZXNldCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvdmRyLWRhdGEtdGFibGUtY29sdW0tcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPHRyICpuZ0lmPVwic2VhcmNoQ29tcG9uZW50IHx8IGN1c3RvbVNlYXJjaFRlbXBsYXRlIHx8IGZpbHRlcnM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgPHRoXHJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJ2aXNpYmxlU29ydGVkQ29sdW1ucy5sZW5ndGggKyAoc2VsZWN0aW9uTWFuYWdlciA/IDIgOiAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItcm93XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNob3dTZWFyY2hGaWx0ZXJSb3dcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tZ2hvc3QgdG9nZ2xlLXNlYXJjaC1maWx0ZXItcm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzaG93U2VhcmNoRmlsdGVyUm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlYXJjaEZpbHRlclJvdygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidjb21tb24uc2VhcmNoLWFuZC1maWx0ZXItbGlzdCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwic2VhcmNoXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXJvdy13cmFwcGVyXCIgW2NsYXNzLmhpZGRlbl09XCIhc2hvd1NlYXJjaEZpbHRlclJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoQ29tcG9uZW50Py50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tU2VhcmNoVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1kYXRhLXRhYmxlLWZpbHRlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGl2ZUZpbHRlciBvZiBmaWx0ZXJzLmFjdGl2ZUZpbHRlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyV2l0aFZhbHVlXT1cImFjdGl2ZUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJzXT1cImZpbHRlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3Zkci1kYXRhLXRhYmxlLWZpbHRlcnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1kYXRhLXRhYmxlLWZpbHRlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXJzLmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJzXT1cImZpbHRlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3Zkci1kYXRhLXRhYmxlLWZpbHRlcnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIGl0ZW1zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFnaW5hdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNQZXJQYWdlOiBpdGVtc1BlclBhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogY3VycmVudFBhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbEl0ZW1zOiB0b3RhbEl0ZW1zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggYXMgaTtcclxuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5Rm5cclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInNlbGVjdGlvbk1hbmFnZXJcIiBjbGFzcz1cInNlbGVjdGlvbi1jb2xcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZUluZGV4ID09PSBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsckNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbk1hbmFnZXI/LmlzU2VsZWN0ZWQoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljayhpdGVtLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHZpc2libGVTb3J0ZWRDb2x1bW5zXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVJbmRleCA9PT0gaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZWxsLWNvbnRlbnRcIiBbbmdDbGFzc109XCJjb2x1bW4uYWxpZ25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjdXN0b21Db21wb25lbnRzLmdldChjb2x1bW4uaWQpIGFzIGNvbXBvbmVudENvbmZpZzsgZWxzZSBkZWZhdWx0Q29tcG9uZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRDb25maWcuY29uZmlnLmNvbXBvbmVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiB7IHJvd0l0ZW06IGl0ZW0gfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0b3I6IGNvbXBvbmVudENvbmZpZy5pbmplY3RvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDb21wb25lbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4udGVtcGxhdGU7IGNvbnRleHQ6IHsgaXRlbTogaXRlbSwgaW5kZXg6IGkgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlSW5kZXggPT09IGlcIj48IS0tIGNvbHVtbiBzZWxlY3QgLS0+PC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cIiFpdGVtcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwidmlzaWJsZVNvcnRlZENvbHVtbnMubGVuZ3RoICsgKHNlbGVjdGlvbk1hbmFnZXIgPyAyIDogMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1lbXB0eS1wbGFjZWhvbGRlciBbZW1wdHlTdGF0ZUxhYmVsXT1cIidvcmRlci5vcmRlci1pcy1lbXB0eScgfCB0cmFuc2xhdGVcIj48L3Zkci1lbXB0eS1wbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInN1cmNoYXJnZVwiICpuZ0Zvcj1cImxldCBzdXJjaGFyZ2Ugb2Ygb3JkZXIuc3VyY2hhcmdlc1wiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWxpZ24tbWlkZGxlIG5hbWUgbGVmdFwiIGNvbHNwYW49XCIyXCI+e3sgc3VyY2hhcmdlLmRlc2NyaXB0aW9uIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFsaWduLW1pZGRsZSBza3VcIj57eyBzdXJjaGFyZ2Uuc2t1IH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFsaWduLW1pZGRsZVwiIFthdHRyLmNvbHNwYW5dPVwidmlzaWJsZVNvcnRlZENvbHVtbnMubGVuZ3RoIC0gNFwiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJhbGlnbi1taWRkbGUgdG90YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzdXJjaGFyZ2UucHJpY2VXaXRoVGF4IHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV0LXByaWNlXCIgW3RpdGxlXT1cIidvcmRlci5uZXQtcHJpY2UnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN1cmNoYXJnZS5wcmljZSB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPjwhLS0gY29sdW1uIHNlbGVjdCAtLT48L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkaXNjb3VudCBvZiBvcmRlci5kaXNjb3VudHNcIj5cclxuICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cIm9yZGVyLWFkanVzdG1lbnRcIiAqbmdJZj1cImRpc2NvdW50LnR5cGUgIT09ICdPVEhFUidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJ2aXNpYmxlU29ydGVkQ29sdW1ucy5sZW5ndGggLSAxXCIgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiZ2V0UHJvbW90aW9uTGluayhkaXNjb3VudClcIj57eyBkaXNjb3VudC5kZXNjcmlwdGlvbiB9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1jaGlwICpuZ0lmPVwiZ2V0Q291cG9uQ29kZUZvckFkanVzdG1lbnQob3JkZXIsIGRpc2NvdW50KSBhcyBjb3Vwb25Db2RlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdXBvbkNvZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfX08L3Zkci1jaGlwPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRpc2NvdW50LmFtb3VudFdpdGhUYXggfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV0LXByaWNlXCIgW3RpdGxlXT1cIidvcmRlci5uZXQtcHJpY2UnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkaXNjb3VudC5hbW91bnQgfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD48IS0tIGNvbHVtbiBzZWxlY3QgLS0+PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJzdWItdG90YWxcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIlwiPnt7ICdvcmRlci5zdWItdG90YWwnIHwgdHJhbnNsYXRlIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cInZpc2libGVTb3J0ZWRDb2x1bW5zLmxlbmd0aCAtIDJcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2xyLWFsaWduLW1pZGRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG9yZGVyLnN1YlRvdGFsV2l0aFRheCB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ldC1wcmljZVwiIFt0aXRsZV09XCInb3JkZXIubmV0LXByaWNlJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBvcmRlci5zdWJUb3RhbCB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPjwhLS0gY29sdW1uIHNlbGVjdCAtLT48L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJzaGlwcGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiXCI+e3sgJ29yZGVyLnNoaXBwaW5nJyB8IHRyYW5zbGF0ZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJ2aXNpYmxlU29ydGVkQ29sdW1ucy5sZW5ndGggLSAyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1jaGlwICpuZ0Zvcj1cImxldCBzaGlwcGluZ0xpbmUgb2Ygb3JkZXIuc2hpcHBpbmdMaW5lc1wiIGNsYXNzPVwic2hpcHBpbmctbWV0aG9kLW5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc2hpcHBpbmdMaW5lLnNoaXBwaW5nTWV0aG9kLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1jaGlwPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNsci1hbGlnbi1taWRkbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBvcmRlci5zaGlwcGluZ1dpdGhUYXggfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXQtcHJpY2VcIiBbdGl0bGVdPVwiJ29yZGVyLm5ldC1wcmljZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgb3JkZXIuc2hpcHBpbmcgfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD48IS0tIGNvbHVtbiBzZWxlY3QgLS0+PC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidG90YWxcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIlwiPnt7ICdvcmRlci50b3RhbCcgfCB0cmFuc2xhdGUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwidmlzaWJsZVNvcnRlZENvbHVtbnMubGVuZ3RoIC0gMlwiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjbHItYWxpZ24tbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgb3JkZXIudG90YWxXaXRoVGF4IHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV0LXByaWNlXCIgW3RpdGxlXT1cIidvcmRlci5uZXQtcHJpY2UnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9yZGVyLnRvdGFsIHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+PCEtLSBjb2x1bW4gc2VsZWN0IC0tPjwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgIDwvdGFibGU+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -77,11 +77,11 @@ export class OrderTableComponent {
77
77
  }
78
78
  }
79
79
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: OrderTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
80
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: OrderTableComponent, selector: "vdr-order-table", inputs: { order: "order", orderLineCustomFields: "orderLineCustomFields", isDraft: "isDraft" }, outputs: { adjust: "adjust", remove: "remove" }, ngImport: i0, template: "<vdr-order-data-table id=\"order-detail-\" [items]=\"order.lines\" [order]=\"order\">\r\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"image-placeholder\">\r\n <img\r\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\r\n [src]=\"asset | assetPreview : 'tiny'\"\r\n />\r\n <ng-template #imagePlaceholder>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.product-name' | translate\" id=\"product-name\">\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.name }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.product-sku' | translate\" id=\"product-sku\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.sku }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.unit-price' | translate\" id=\"unit-price\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"unit-price\">\r\n {{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.unitPrice | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.quantity' | translate\" id=\"quantity\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n <ng-container *ngIf=\"!isDraft; else draft\">\r\n <div class=\"flex\">\r\n <div\r\n *ngIf=\"line.orderPlacedQuantity && line.quantity !== line.orderPlacedQuantity\"\r\n class=\"order-placed-quantity\"\r\n [title]=\"'order.original-quantity-at-checkout' | translate\"\r\n >\r\n {{ line.orderPlacedQuantity }}\r\n </div>\r\n <div>{{ line.quantity }}</div>\r\n </div>\r\n </ng-container>\r\n <ng-template #draft>\r\n <div class=\"flex\">\r\n <input\r\n class=\"draft-qty\"\r\n type=\"number\"\r\n min=\"0\"\r\n #qtyInput\r\n [value]=\"line.quantity\"\r\n (blur)=\"draftInputBlur(line, qtyInput.valueAsNumber)\"\r\n />\r\n <button class=\"icon-button\" (click)=\"remove.emit({ lineId: line.id })\">\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\r\n <vdr-line-fulfillment\r\n [line]=\"line\"\r\n [orderState]=\"order.state\"\r\n [allOrderFulfillments]=\"order.fulfillments\"\r\n ></vdr-line-fulfillment>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column\r\n *ngFor=\"let customField of orderLineCustomFields\"\r\n [customField]=\"customField\"\r\n />\r\n <vdr-order-total-column [heading]=\"'order.total' | translate\" id=\"total\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"unit-price\">\r\n {{ line.linePriceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.linePrice | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getLineDiscounts(line) as discounts\">\r\n <vdr-dropdown *ngIf=\"discounts.length\">\r\n <div class=\"promotions-label\" vdrDropdownTrigger>\r\n {{ 'order.promotions-applied' | translate }}\r\n </div>\r\n <vdr-dropdown-menu>\r\n <div class=\"line-promotion\" *ngFor=\"let discount of discounts\">\r\n <a class=\"promotion-name\" [routerLink]=\"getPromotionLink(discount)\">{{\r\n discount.description\r\n }}</a>\r\n <div class=\"promotion-amount\">\r\n {{ discount.amountWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-container>\r\n </ng-template>\r\n </vdr-order-total-column>\r\n</vdr-order-data-table>\r\n", styles: [":host .is-cancelled td{text-decoration:line-through;background-color:var(--color-component-bg-200)}:host .sub-total td{border-top:1px dashed var(--color-component-border-200)}:host .total td{font-weight:700;border-top:1px dashed var(--color-component-border-200)}:host td.custom-fields-row{border-top-style:dashed;border-top-color:var(--color-grey-200)}:host img{border-radius:var(--border-radius-img)}:host .order-line-custom-fields{display:flex;flex-wrap:wrap}:host .order-line-custom-fields .custom-field{text-align:start;max-width:200px;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px;margin-inline-end:18px}:host .draft-qty{max-width:48px}:host .order-line-custom-field{background-color:var(--color-component-bg-100)}:host .order-line-custom-field .custom-field-ellipsis{color:var(--color-text-300)}:host .net-price{font-size:11px;color:var(--color-text-300);line-height:14px}:host .promotions-label{-webkit-text-decoration:underline dotted var(--color-text-200);text-decoration:underline dotted var(--color-text-200);font-size:11px;margin-top:6px;cursor:pointer;text-transform:lowercase}:host .thumb img{width:50px;height:50px}:host .shipping-method-name{font-size:var(--font-size-xs);margin-inline-end:2px}:host .order-placed-quantity{text-decoration:line-through;color:var(--color-text-300);margin-inline-end:2px}::ng-deep .line-promotion{display:flex;justify-content:space-between;padding:6px 12px}::ng-deep .line-promotion .promotion-amount{margin-inline-start:12px}::ng-deep .line-promotion .net-price{font-size:11px;color:var(--color-text-300)}\n"], dependencies: [{ kind: "directive", type: i1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.FormFieldControlDirective, selector: "input, textarea, select" }, { kind: "component", type: i4.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { kind: "component", type: i4.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { kind: "directive", type: i4.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { kind: "component", type: i4.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["id", "expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i4.DataTableCustomFieldColumnComponent, selector: "vdr-dt2-custom-field-column", inputs: ["customField", "sorts"], exportAs: ["row"] }, { kind: "component", type: i5.LineFulfillmentComponent, selector: "vdr-line-fulfillment", inputs: ["line", "allOrderFulfillments", "orderState"] }, { kind: "component", type: i6.LineRefundsComponent, selector: "vdr-line-refunds", inputs: ["line", "payments"] }, { kind: "component", type: i7.OrderDataTableComponent, selector: "vdr-order-data-table", inputs: ["order"] }, { kind: "component", type: i8.OrderTotalColumnComponent, selector: "vdr-order-total-column", exportAs: ["row"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AssetPreviewPipe, name: "assetPreview" }, { kind: "pipe", type: i4.LocaleCurrencyPipe, name: "localeCurrency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
80
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: OrderTableComponent, selector: "vdr-order-table", inputs: { order: "order", orderLineCustomFields: "orderLineCustomFields", isDraft: "isDraft" }, outputs: { adjust: "adjust", remove: "remove" }, ngImport: i0, template: "<vdr-order-data-table id=\"order-detail-list\" [items]=\"order.lines\" [order]=\"order\">\r\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"image-placeholder\">\r\n <img\r\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\r\n [src]=\"asset | assetPreview : 'tiny'\"\r\n />\r\n <ng-template #imagePlaceholder>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.product-name' | translate\" id=\"product-name\">\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.name }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.product-sku' | translate\" id=\"product-sku\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.sku }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.unit-price' | translate\" id=\"unit-price\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"unit-price\">\r\n {{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.unitPrice | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.quantity' | translate\" id=\"quantity\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n <ng-container *ngIf=\"!isDraft; else draft\">\r\n <div class=\"flex\">\r\n <div\r\n *ngIf=\"line.orderPlacedQuantity && line.quantity !== line.orderPlacedQuantity\"\r\n class=\"order-placed-quantity\"\r\n [title]=\"'order.original-quantity-at-checkout' | translate\"\r\n >\r\n {{ line.orderPlacedQuantity }}\r\n </div>\r\n <div>{{ line.quantity }}</div>\r\n </div>\r\n </ng-container>\r\n <ng-template #draft>\r\n <div class=\"flex\">\r\n <input\r\n class=\"draft-qty\"\r\n type=\"number\"\r\n min=\"0\"\r\n #qtyInput\r\n [value]=\"line.quantity\"\r\n (blur)=\"draftInputBlur(line, qtyInput.valueAsNumber)\"\r\n />\r\n <button class=\"icon-button\" (click)=\"remove.emit({ lineId: line.id })\">\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\r\n <vdr-line-fulfillment\r\n [line]=\"line\"\r\n [orderState]=\"order.state\"\r\n [allOrderFulfillments]=\"order.fulfillments\"\r\n ></vdr-line-fulfillment>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column\r\n *ngFor=\"let customField of orderLineCustomFields\"\r\n [customField]=\"customField\"\r\n />\r\n <vdr-order-total-column [heading]=\"'order.total' | translate\" id=\"total\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"unit-price\">\r\n {{ line.linePriceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.linePrice | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getLineDiscounts(line) as discounts\">\r\n <vdr-dropdown *ngIf=\"discounts.length\">\r\n <div class=\"promotions-label\" vdrDropdownTrigger>\r\n {{ 'order.promotions-applied' | translate }}\r\n </div>\r\n <vdr-dropdown-menu>\r\n <div class=\"line-promotion\" *ngFor=\"let discount of discounts\">\r\n <a class=\"promotion-name\" [routerLink]=\"getPromotionLink(discount)\">{{\r\n discount.description\r\n }}</a>\r\n <div class=\"promotion-amount\">\r\n {{ discount.amountWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-container>\r\n </ng-template>\r\n </vdr-order-total-column>\r\n</vdr-order-data-table>\r\n", styles: [":host .is-cancelled td{text-decoration:line-through;background-color:var(--color-component-bg-200)}:host .sub-total td{border-top:1px dashed var(--color-component-border-200)}:host .total td{font-weight:700;border-top:1px dashed var(--color-component-border-200)}:host td.custom-fields-row{border-top-style:dashed;border-top-color:var(--color-grey-200)}:host img{border-radius:var(--border-radius-img)}:host .order-line-custom-fields{display:flex;flex-wrap:wrap}:host .order-line-custom-fields .custom-field{text-align:start;max-width:200px;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px;margin-inline-end:18px}:host .draft-qty{max-width:48px}:host .order-line-custom-field{background-color:var(--color-component-bg-100)}:host .order-line-custom-field .custom-field-ellipsis{color:var(--color-text-300)}:host .net-price{font-size:11px;color:var(--color-text-300);line-height:14px}:host .promotions-label{-webkit-text-decoration:underline dotted var(--color-text-200);text-decoration:underline dotted var(--color-text-200);font-size:11px;margin-top:6px;cursor:pointer;text-transform:lowercase}:host .thumb img{width:50px;height:50px}:host .shipping-method-name{font-size:var(--font-size-xs);margin-inline-end:2px}:host .order-placed-quantity{text-decoration:line-through;color:var(--color-text-300);margin-inline-end:2px}::ng-deep .line-promotion{display:flex;justify-content:space-between;padding:6px 12px}::ng-deep .line-promotion .promotion-amount{margin-inline-start:12px}::ng-deep .line-promotion .net-price{font-size:11px;color:var(--color-text-300)}\n"], dependencies: [{ kind: "directive", type: i1.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.FormFieldControlDirective, selector: "input, textarea, select" }, { kind: "component", type: i4.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { kind: "component", type: i4.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { kind: "directive", type: i4.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { kind: "component", type: i4.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["id", "expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i4.DataTableCustomFieldColumnComponent, selector: "vdr-dt2-custom-field-column", inputs: ["customField", "sorts"], exportAs: ["row"] }, { kind: "component", type: i5.LineFulfillmentComponent, selector: "vdr-line-fulfillment", inputs: ["line", "allOrderFulfillments", "orderState"] }, { kind: "component", type: i6.LineRefundsComponent, selector: "vdr-line-refunds", inputs: ["line", "payments"] }, { kind: "component", type: i7.OrderDataTableComponent, selector: "vdr-order-data-table", inputs: ["order"] }, { kind: "component", type: i8.OrderTotalColumnComponent, selector: "vdr-order-total-column", exportAs: ["row"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AssetPreviewPipe, name: "assetPreview" }, { kind: "pipe", type: i4.LocaleCurrencyPipe, name: "localeCurrency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
81
81
  }
82
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: OrderTableComponent, decorators: [{
83
83
  type: Component,
84
- args: [{ selector: 'vdr-order-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-order-data-table id=\"order-detail-\" [items]=\"order.lines\" [order]=\"order\">\r\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"image-placeholder\">\r\n <img\r\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\r\n [src]=\"asset | assetPreview : 'tiny'\"\r\n />\r\n <ng-template #imagePlaceholder>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.product-name' | translate\" id=\"product-name\">\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.name }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.product-sku' | translate\" id=\"product-sku\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.sku }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.unit-price' | translate\" id=\"unit-price\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"unit-price\">\r\n {{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.unitPrice | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.quantity' | translate\" id=\"quantity\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n <ng-container *ngIf=\"!isDraft; else draft\">\r\n <div class=\"flex\">\r\n <div\r\n *ngIf=\"line.orderPlacedQuantity && line.quantity !== line.orderPlacedQuantity\"\r\n class=\"order-placed-quantity\"\r\n [title]=\"'order.original-quantity-at-checkout' | translate\"\r\n >\r\n {{ line.orderPlacedQuantity }}\r\n </div>\r\n <div>{{ line.quantity }}</div>\r\n </div>\r\n </ng-container>\r\n <ng-template #draft>\r\n <div class=\"flex\">\r\n <input\r\n class=\"draft-qty\"\r\n type=\"number\"\r\n min=\"0\"\r\n #qtyInput\r\n [value]=\"line.quantity\"\r\n (blur)=\"draftInputBlur(line, qtyInput.valueAsNumber)\"\r\n />\r\n <button class=\"icon-button\" (click)=\"remove.emit({ lineId: line.id })\">\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\r\n <vdr-line-fulfillment\r\n [line]=\"line\"\r\n [orderState]=\"order.state\"\r\n [allOrderFulfillments]=\"order.fulfillments\"\r\n ></vdr-line-fulfillment>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column\r\n *ngFor=\"let customField of orderLineCustomFields\"\r\n [customField]=\"customField\"\r\n />\r\n <vdr-order-total-column [heading]=\"'order.total' | translate\" id=\"total\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"unit-price\">\r\n {{ line.linePriceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.linePrice | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getLineDiscounts(line) as discounts\">\r\n <vdr-dropdown *ngIf=\"discounts.length\">\r\n <div class=\"promotions-label\" vdrDropdownTrigger>\r\n {{ 'order.promotions-applied' | translate }}\r\n </div>\r\n <vdr-dropdown-menu>\r\n <div class=\"line-promotion\" *ngFor=\"let discount of discounts\">\r\n <a class=\"promotion-name\" [routerLink]=\"getPromotionLink(discount)\">{{\r\n discount.description\r\n }}</a>\r\n <div class=\"promotion-amount\">\r\n {{ discount.amountWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-container>\r\n </ng-template>\r\n </vdr-order-total-column>\r\n</vdr-order-data-table>\r\n", styles: [":host .is-cancelled td{text-decoration:line-through;background-color:var(--color-component-bg-200)}:host .sub-total td{border-top:1px dashed var(--color-component-border-200)}:host .total td{font-weight:700;border-top:1px dashed var(--color-component-border-200)}:host td.custom-fields-row{border-top-style:dashed;border-top-color:var(--color-grey-200)}:host img{border-radius:var(--border-radius-img)}:host .order-line-custom-fields{display:flex;flex-wrap:wrap}:host .order-line-custom-fields .custom-field{text-align:start;max-width:200px;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px;margin-inline-end:18px}:host .draft-qty{max-width:48px}:host .order-line-custom-field{background-color:var(--color-component-bg-100)}:host .order-line-custom-field .custom-field-ellipsis{color:var(--color-text-300)}:host .net-price{font-size:11px;color:var(--color-text-300);line-height:14px}:host .promotions-label{-webkit-text-decoration:underline dotted var(--color-text-200);text-decoration:underline dotted var(--color-text-200);font-size:11px;margin-top:6px;cursor:pointer;text-transform:lowercase}:host .thumb img{width:50px;height:50px}:host .shipping-method-name{font-size:var(--font-size-xs);margin-inline-end:2px}:host .order-placed-quantity{text-decoration:line-through;color:var(--color-text-300);margin-inline-end:2px}::ng-deep .line-promotion{display:flex;justify-content:space-between;padding:6px 12px}::ng-deep .line-promotion .promotion-amount{margin-inline-start:12px}::ng-deep .line-promotion .net-price{font-size:11px;color:var(--color-text-300)}\n"] }]
84
+ args: [{ selector: 'vdr-order-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-order-data-table id=\"order-detail-list\" [items]=\"order.lines\" [order]=\"order\">\r\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"image-placeholder\">\r\n <img\r\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\r\n [src]=\"asset | assetPreview : 'tiny'\"\r\n />\r\n <ng-template #imagePlaceholder>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.product-name' | translate\" id=\"product-name\">\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.name }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.product-sku' | translate\" id=\"product-sku\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.sku }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.unit-price' | translate\" id=\"unit-price\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"unit-price\">\r\n {{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.unitPrice | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.quantity' | translate\" id=\"quantity\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n <ng-container *ngIf=\"!isDraft; else draft\">\r\n <div class=\"flex\">\r\n <div\r\n *ngIf=\"line.orderPlacedQuantity && line.quantity !== line.orderPlacedQuantity\"\r\n class=\"order-placed-quantity\"\r\n [title]=\"'order.original-quantity-at-checkout' | translate\"\r\n >\r\n {{ line.orderPlacedQuantity }}\r\n </div>\r\n <div>{{ line.quantity }}</div>\r\n </div>\r\n </ng-container>\r\n <ng-template #draft>\r\n <div class=\"flex\">\r\n <input\r\n class=\"draft-qty\"\r\n type=\"number\"\r\n min=\"0\"\r\n #qtyInput\r\n [value]=\"line.quantity\"\r\n (blur)=\"draftInputBlur(line, qtyInput.valueAsNumber)\"\r\n />\r\n <button class=\"icon-button\" (click)=\"remove.emit({ lineId: line.id })\">\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\r\n <vdr-line-fulfillment\r\n [line]=\"line\"\r\n [orderState]=\"order.state\"\r\n [allOrderFulfillments]=\"order.fulfillments\"\r\n ></vdr-line-fulfillment>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column\r\n *ngFor=\"let customField of orderLineCustomFields\"\r\n [customField]=\"customField\"\r\n />\r\n <vdr-order-total-column [heading]=\"'order.total' | translate\" id=\"total\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"unit-price\">\r\n {{ line.linePriceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.linePrice | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getLineDiscounts(line) as discounts\">\r\n <vdr-dropdown *ngIf=\"discounts.length\">\r\n <div class=\"promotions-label\" vdrDropdownTrigger>\r\n {{ 'order.promotions-applied' | translate }}\r\n </div>\r\n <vdr-dropdown-menu>\r\n <div class=\"line-promotion\" *ngFor=\"let discount of discounts\">\r\n <a class=\"promotion-name\" [routerLink]=\"getPromotionLink(discount)\">{{\r\n discount.description\r\n }}</a>\r\n <div class=\"promotion-amount\">\r\n {{ discount.amountWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-container>\r\n </ng-template>\r\n </vdr-order-total-column>\r\n</vdr-order-data-table>\r\n", styles: [":host .is-cancelled td{text-decoration:line-through;background-color:var(--color-component-bg-200)}:host .sub-total td{border-top:1px dashed var(--color-component-border-200)}:host .total td{font-weight:700;border-top:1px dashed var(--color-component-border-200)}:host td.custom-fields-row{border-top-style:dashed;border-top-color:var(--color-grey-200)}:host img{border-radius:var(--border-radius-img)}:host .order-line-custom-fields{display:flex;flex-wrap:wrap}:host .order-line-custom-fields .custom-field{text-align:start;max-width:200px;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px;margin-inline-end:18px}:host .draft-qty{max-width:48px}:host .order-line-custom-field{background-color:var(--color-component-bg-100)}:host .order-line-custom-field .custom-field-ellipsis{color:var(--color-text-300)}:host .net-price{font-size:11px;color:var(--color-text-300);line-height:14px}:host .promotions-label{-webkit-text-decoration:underline dotted var(--color-text-200);text-decoration:underline dotted var(--color-text-200);font-size:11px;margin-top:6px;cursor:pointer;text-transform:lowercase}:host .thumb img{width:50px;height:50px}:host .shipping-method-name{font-size:var(--font-size-xs);margin-inline-end:2px}:host .order-placed-quantity{text-decoration:line-through;color:var(--color-text-300);margin-inline-end:2px}::ng-deep .line-promotion{display:flex;justify-content:space-between;padding:6px 12px}::ng-deep .line-promotion .promotion-amount{margin-inline-start:12px}::ng-deep .line-promotion .net-price{font-size:11px;color:var(--color-text-300)}\n"] }]
85
85
  }], propDecorators: { order: [{
86
86
  type: Input
87
87
  }], orderLineCustomFields: [{
@@ -93,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImpor
93
93
  }], remove: [{
94
94
  type: Output
95
95
  }] } });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9vcmRlci9zcmMvY29tcG9uZW50cy9vcmRlci10YWJsZS9vcmRlci10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZGVyL3NyYy9jb21wb25lbnRzL29yZGVyLXRhYmxlL29yZGVyLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBMEMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFRaEcsTUFBTSxPQUFPLG1CQUFtQjtJQU5oQztRQVNhLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDZixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQXdDLENBQUM7UUFDbEUsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBQzFELGlDQUE0QixHQUFHLEtBQUssQ0FBQztRQUNyQyx3QkFBbUIsR0FFZixFQUFFLENBQUM7S0FzRVY7SUFwRUcsSUFBSSw0QkFBNEI7UUFDNUIsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQy9FLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLDRCQUE0QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBMEMsRUFBRSxRQUFnQjtRQUN2RSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUNuRDtJQUNMLENBQUM7SUFFRCwyQkFBMkI7UUFDdkIsSUFBSSxDQUFDLDRCQUE0QixHQUFHLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDO0lBQzNFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUEwQztRQUN2RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQ2pDLE1BQU0sU0FBUyxHQUFHLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHFCQUFxQjtpQkFDcEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNWLE1BQU0sS0FBSyxHQUFJLElBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0RCxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNqRSxPQUFPO29CQUNILE1BQU07b0JBQ04sU0FBUztvQkFDVCxLQUFLO2lCQUNSLENBQUM7WUFDTixDQUFDLENBQUM7aUJBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUM7WUFDckYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7U0FDOUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBbUQ7UUFDaEUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsMEJBQTBCLENBQ3RCLEtBQTBCLEVBQzFCLG1CQUE2RDtRQUU3RCxNQUFNLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzFELElBQUksU0FBUyxFQUFFO1lBQ1gsT0FBTyxTQUFTLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQztTQUM1QztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUEwQjtRQUN2QyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQzVCLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvRjthQUFNO1lBQ0gsT0FBTyxFQUFFLENBQUM7U0FDYjtJQUNMLENBQUM7OEdBOUVRLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHdNQ1ZoQyxnOEtBNkdBOzsyRkRuR2EsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNJLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBZGp1c3RtZW50VHlwZSwgQ3VzdG9tRmllbGRDb25maWcsIE9yZGVyRGV0YWlsRnJhZ21lbnQgfSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItb3JkZXItdGFibGUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL29yZGVyLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL29yZGVyLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE9yZGVyVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgb3JkZXI6IE9yZGVyRGV0YWlsRnJhZ21lbnQ7XHJcbiAgICBASW5wdXQoKSBvcmRlckxpbmVDdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkQ29uZmlnW107XHJcbiAgICBASW5wdXQoKSBpc0RyYWZ0ID0gZmFsc2U7XHJcbiAgICBAT3V0cHV0KCkgYWRqdXN0ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGxpbmVJZDogc3RyaW5nOyBxdWFudGl0eTogbnVtYmVyIH0+KCk7XHJcbiAgICBAT3V0cHV0KCkgcmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGxpbmVJZDogc3RyaW5nIH0+KCk7XHJcbiAgICBvcmRlckxpbmVDdXN0b21GaWVsZHNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICBjdXN0b21GaWVsZHNGb3JMaW5lOiB7XHJcbiAgICAgICAgW2xpbmVJZDogc3RyaW5nXTogQXJyYXk8eyBjb25maWc6IEN1c3RvbUZpZWxkQ29uZmlnOyBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXA7IHZhbHVlOiBhbnkgfT47XHJcbiAgICB9ID0ge307XHJcblxyXG4gICAgZ2V0IHZpc2libGVPcmRlckxpbmVDdXN0b21GaWVsZHMoKTogQ3VzdG9tRmllbGRDb25maWdbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzVmlzaWJsZSA/IHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzIDogW107XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNob3dFbGlkZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLm9yZGVyTGluZUN1c3RvbUZpZWxkc1Zpc2libGUgJiYgMCA8IHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9yZGVyTGluZUN1c3RvbUZpZWxkc1Zpc2libGUgPSB0aGlzLm9yZGVyTGluZUN1c3RvbUZpZWxkcy5sZW5ndGggPCAyO1xyXG4gICAgICAgIHRoaXMuZ2V0TGluZUN1c3RvbUZpZWxkcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGRyYWZ0SW5wdXRCbHVyKGxpbmU6IE9yZGVyRGV0YWlsRnJhZ21lbnRbJ2xpbmVzJ11bbnVtYmVyXSwgcXVhbnRpdHk6IG51bWJlcikge1xyXG4gICAgICAgIGlmIChsaW5lLnF1YW50aXR5ICE9PSBxdWFudGl0eSkge1xyXG4gICAgICAgICAgICB0aGlzLmFkanVzdC5lbWl0KHsgbGluZUlkOiBsaW5lLmlkLCBxdWFudGl0eSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlT3JkZXJMaW5lQ3VzdG9tRmllbGRzKCkge1xyXG4gICAgICAgIHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzVmlzaWJsZSA9ICF0aGlzLm9yZGVyTGluZUN1c3RvbUZpZWxkc1Zpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TGluZURpc2NvdW50cyhsaW5lOiBPcmRlckRldGFpbEZyYWdtZW50WydsaW5lcyddW251bWJlcl0pIHtcclxuICAgICAgICByZXR1cm4gbGluZS5kaXNjb3VudHMuZmlsdGVyKGEgPT4gYS50eXBlID09PSBBZGp1c3RtZW50VHlwZS5QUk9NT1RJT04pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0TGluZUN1c3RvbUZpZWxkcygpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgdGhpcy5vcmRlci5saW5lcykge1xyXG4gICAgICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzXHJcbiAgICAgICAgICAgICAgICAubWFwKGNvbmZpZyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAobGluZSBhcyBhbnkpLmN1c3RvbUZpZWxkc1tjb25maWcubmFtZV07XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2woY29uZmlnLm5hbWUsIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodmFsdWUpKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGZpZWxkID0+IHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzVmlzaWJsZSA/IHRydWUgOiBmaWVsZC52YWx1ZSAhPSBudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHNGb3JMaW5lW2xpbmUuaWRdID0gcmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9tb3Rpb25MaW5rKHByb21vdGlvbjogT3JkZXJEZXRhaWxGcmFnbWVudFsnZGlzY291bnRzJ11bbnVtYmVyXSk6IGFueVtdIHtcclxuICAgICAgICBjb25zdCBpZCA9IHByb21vdGlvbi5hZGp1c3RtZW50U291cmNlLnNwbGl0KCc6JylbMV07XHJcbiAgICAgICAgcmV0dXJuIFsnL21hcmtldGluZycsICdwcm9tb3Rpb25zJywgaWRdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENvdXBvbkNvZGVGb3JBZGp1c3RtZW50KFxyXG4gICAgICAgIG9yZGVyOiBPcmRlckRldGFpbEZyYWdtZW50LFxyXG4gICAgICAgIHByb21vdGlvbkFkanVzdG1lbnQ6IE9yZGVyRGV0YWlsRnJhZ21lbnRbJ2Rpc2NvdW50cyddW251bWJlcl0sXHJcbiAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGlkID0gcHJvbW90aW9uQWRqdXN0bWVudC5hZGp1c3RtZW50U291cmNlLnNwbGl0KCc6JylbMV07XHJcbiAgICAgICAgY29uc3QgcHJvbW90aW9uID0gb3JkZXIucHJvbW90aW9ucy5maW5kKHAgPT4gcC5pZCA9PT0gaWQpO1xyXG4gICAgICAgIGlmIChwcm9tb3Rpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb21vdGlvbi5jb3Vwb25Db2RlIHx8IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2hpcHBpbmdOYW1lcyhvcmRlcjogT3JkZXJEZXRhaWxGcmFnbWVudCkge1xyXG4gICAgICAgIGlmIChvcmRlci5zaGlwcGluZ0xpbmVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gb3JkZXIuc2hpcHBpbmdMaW5lcy5tYXAoc2hpcHBpbmdMaW5lID0+IHNoaXBwaW5nTGluZS5zaGlwcGluZ01ldGhvZC5uYW1lKS5qb2luKCcsICcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPHZkci1vcmRlci1kYXRhLXRhYmxlIGlkPVwib3JkZXItZGV0YWlsLVwiIFtpdGVtc109XCJvcmRlci5saW5lc1wiIFtvcmRlcl09XCJvcmRlclwiPlxyXG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjb21tb24uaW1hZ2UnIHwgdHJhbnNsYXRlXCIgaWQ9XCJpbWFnZVwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbGluZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLXBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsaW5lLmZlYXR1cmVkQXNzZXQgYXMgYXNzZXQ7IGVsc2UgaW1hZ2VQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJhc3NldCB8IGFzc2V0UHJldmlldyA6ICd0aW55J1wiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbWFnZVBsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJpbWFnZVwiIHNpemU9XCI0OFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInb3JkZXIucHJvZHVjdC1uYW1lJyB8IHRyYW5zbGF0ZVwiIGlkPVwicHJvZHVjdC1uYW1lXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1saW5lPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICB7eyBsaW5lLnByb2R1Y3RWYXJpYW50Lm5hbWUgfX1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInb3JkZXIucHJvZHVjdC1za3UnIHwgdHJhbnNsYXRlXCIgaWQ9XCJwcm9kdWN0LXNrdVwiIFtvcHRpb25hbF09XCJmYWxzZVwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbGluZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAge3sgbGluZS5wcm9kdWN0VmFyaWFudC5za3UgfX1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInb3JkZXIudW5pdC1wcmljZScgfCB0cmFuc2xhdGVcIiBpZD1cInVuaXQtcHJpY2VcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1bml0LXByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBsaW5lLnVuaXRQcmljZVdpdGhUYXggfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ldC1wcmljZVwiIFt0aXRsZV09XCInb3JkZXIubmV0LXByaWNlJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGxpbmUudW5pdFByaWNlIHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInb3JkZXIucXVhbnRpdHknIHwgdHJhbnNsYXRlXCIgaWQ9XCJxdWFudGl0eVwiIFtvcHRpb25hbF09XCJmYWxzZVwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbGluZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0RyYWZ0OyBlbHNlIGRyYWZ0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsaW5lLm9yZGVyUGxhY2VkUXVhbnRpdHkgJiYgbGluZS5xdWFudGl0eSAhPT0gbGluZS5vcmRlclBsYWNlZFF1YW50aXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcmRlci1wbGFjZWQtcXVhbnRpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ29yZGVyLm9yaWdpbmFsLXF1YW50aXR5LWF0LWNoZWNrb3V0JyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBsaW5lLm9yZGVyUGxhY2VkUXVhbnRpdHkgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGxpbmUucXVhbnRpdHkgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkcmFmdD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZnQtcXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAjcXR5SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImxpbmUucXVhbnRpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJkcmFmdElucHV0Qmx1cihsaW5lLCBxdHlJbnB1dC52YWx1ZUFzTnVtYmVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaWNvbi1idXR0b25cIiAoY2xpY2spPVwicmVtb3ZlLmVtaXQoeyBsaW5lSWQ6IGxpbmUuaWQgfSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwidHJhc2hcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDx2ZHItbGluZS1yZWZ1bmRzIFtsaW5lXT1cImxpbmVcIiBbcGF5bWVudHNdPVwib3JkZXIucGF5bWVudHNcIj48L3Zkci1saW5lLXJlZnVuZHM+XHJcbiAgICAgICAgICAgIDx2ZHItbGluZS1mdWxmaWxsbWVudFxyXG4gICAgICAgICAgICAgICAgW2xpbmVdPVwibGluZVwiXHJcbiAgICAgICAgICAgICAgICBbb3JkZXJTdGF0ZV09XCJvcmRlci5zdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbYWxsT3JkZXJGdWxmaWxsbWVudHNdPVwib3JkZXIuZnVsZmlsbG1lbnRzXCJcclxuICAgICAgICAgICAgPjwvdmRyLWxpbmUtZnVsZmlsbG1lbnQ+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XHJcbiAgICA8dmRyLWR0Mi1jdXN0b20tZmllbGQtY29sdW1uXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGN1c3RvbUZpZWxkIG9mIG9yZGVyTGluZUN1c3RvbUZpZWxkc1wiXHJcbiAgICAgICAgW2N1c3RvbUZpZWxkXT1cImN1c3RvbUZpZWxkXCJcclxuICAgIC8+XHJcbiAgICA8dmRyLW9yZGVyLXRvdGFsLWNvbHVtbiBbaGVhZGluZ109XCInb3JkZXIudG90YWwnIHwgdHJhbnNsYXRlXCIgaWQ9XCJ0b3RhbFwiIFtvcHRpb25hbF09XCJmYWxzZVwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbGluZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVuaXQtcHJpY2VcIj5cclxuICAgICAgICAgICAgICAgIHt7IGxpbmUubGluZVByaWNlV2l0aFRheCB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlIH19XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV0LXByaWNlXCIgW3RpdGxlXT1cIidvcmRlci5uZXQtcHJpY2UnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgbGluZS5saW5lUHJpY2UgfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldExpbmVEaXNjb3VudHMobGluZSkgYXMgZGlzY291bnRzXCI+XHJcbiAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duICpuZ0lmPVwiZGlzY291bnRzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9tb3Rpb25zLWxhYmVsXCIgdmRyRHJvcGRvd25UcmlnZ2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnb3JkZXIucHJvbW90aW9ucy1hcHBsaWVkJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZHJvcGRvd24tbWVudT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmUtcHJvbW90aW9uXCIgKm5nRm9yPVwibGV0IGRpc2NvdW50IG9mIGRpc2NvdW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJwcm9tb3Rpb24tbmFtZVwiIFtyb3V0ZXJMaW5rXT1cImdldFByb21vdGlvbkxpbmsoZGlzY291bnQpXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjb3VudC5kZXNjcmlwdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvbW90aW9uLWFtb3VudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRpc2NvdW50LmFtb3VudFdpdGhUYXggfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXQtcHJpY2VcIiBbdGl0bGVdPVwiJ29yZGVyLm5ldC1wcmljZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGlzY291bnQuYW1vdW50IHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1kcm9wZG93bi1tZW51PlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3Zkci1vcmRlci10b3RhbC1jb2x1bW4+XHJcbjwvdmRyLW9yZGVyLWRhdGEtdGFibGU+XHJcbiJdfQ==
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9vcmRlci9zcmMvY29tcG9uZW50cy9vcmRlci10YWJsZS9vcmRlci10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZGVyL3NyYy9jb21wb25lbnRzL29yZGVyLXRhYmxlL29yZGVyLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBMEMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFRaEcsTUFBTSxPQUFPLG1CQUFtQjtJQU5oQztRQVNhLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDZixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQXdDLENBQUM7UUFDbEUsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBQzFELGlDQUE0QixHQUFHLEtBQUssQ0FBQztRQUNyQyx3QkFBbUIsR0FFZixFQUFFLENBQUM7S0FzRVY7SUFwRUcsSUFBSSw0QkFBNEI7UUFDNUIsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQy9FLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLDRCQUE0QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBMEMsRUFBRSxRQUFnQjtRQUN2RSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUNuRDtJQUNMLENBQUM7SUFFRCwyQkFBMkI7UUFDdkIsSUFBSSxDQUFDLDRCQUE0QixHQUFHLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDO0lBQzNFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUEwQztRQUN2RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQ2pDLE1BQU0sU0FBUyxHQUFHLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHFCQUFxQjtpQkFDcEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNWLE1BQU0sS0FBSyxHQUFJLElBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0RCxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNqRSxPQUFPO29CQUNILE1BQU07b0JBQ04sU0FBUztvQkFDVCxLQUFLO2lCQUNSLENBQUM7WUFDTixDQUFDLENBQUM7aUJBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUM7WUFDckYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7U0FDOUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBbUQ7UUFDaEUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsMEJBQTBCLENBQ3RCLEtBQTBCLEVBQzFCLG1CQUE2RDtRQUU3RCxNQUFNLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzFELElBQUksU0FBUyxFQUFFO1lBQ1gsT0FBTyxTQUFTLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQztTQUM1QztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUEwQjtRQUN2QyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQzVCLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvRjthQUFNO1lBQ0gsT0FBTyxFQUFFLENBQUM7U0FDYjtJQUNMLENBQUM7OEdBOUVRLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHdNQ1ZoQyxvOEtBNkdBOzsyRkRuR2EsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNJLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBZGp1c3RtZW50VHlwZSwgQ3VzdG9tRmllbGRDb25maWcsIE9yZGVyRGV0YWlsRnJhZ21lbnQgfSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItb3JkZXItdGFibGUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL29yZGVyLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL29yZGVyLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE9yZGVyVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgb3JkZXI6IE9yZGVyRGV0YWlsRnJhZ21lbnQ7XHJcbiAgICBASW5wdXQoKSBvcmRlckxpbmVDdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkQ29uZmlnW107XHJcbiAgICBASW5wdXQoKSBpc0RyYWZ0ID0gZmFsc2U7XHJcbiAgICBAT3V0cHV0KCkgYWRqdXN0ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGxpbmVJZDogc3RyaW5nOyBxdWFudGl0eTogbnVtYmVyIH0+KCk7XHJcbiAgICBAT3V0cHV0KCkgcmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGxpbmVJZDogc3RyaW5nIH0+KCk7XHJcbiAgICBvcmRlckxpbmVDdXN0b21GaWVsZHNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICBjdXN0b21GaWVsZHNGb3JMaW5lOiB7XHJcbiAgICAgICAgW2xpbmVJZDogc3RyaW5nXTogQXJyYXk8eyBjb25maWc6IEN1c3RvbUZpZWxkQ29uZmlnOyBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXA7IHZhbHVlOiBhbnkgfT47XHJcbiAgICB9ID0ge307XHJcblxyXG4gICAgZ2V0IHZpc2libGVPcmRlckxpbmVDdXN0b21GaWVsZHMoKTogQ3VzdG9tRmllbGRDb25maWdbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzVmlzaWJsZSA/IHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzIDogW107XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNob3dFbGlkZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLm9yZGVyTGluZUN1c3RvbUZpZWxkc1Zpc2libGUgJiYgMCA8IHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9yZGVyTGluZUN1c3RvbUZpZWxkc1Zpc2libGUgPSB0aGlzLm9yZGVyTGluZUN1c3RvbUZpZWxkcy5sZW5ndGggPCAyO1xyXG4gICAgICAgIHRoaXMuZ2V0TGluZUN1c3RvbUZpZWxkcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGRyYWZ0SW5wdXRCbHVyKGxpbmU6IE9yZGVyRGV0YWlsRnJhZ21lbnRbJ2xpbmVzJ11bbnVtYmVyXSwgcXVhbnRpdHk6IG51bWJlcikge1xyXG4gICAgICAgIGlmIChsaW5lLnF1YW50aXR5ICE9PSBxdWFudGl0eSkge1xyXG4gICAgICAgICAgICB0aGlzLmFkanVzdC5lbWl0KHsgbGluZUlkOiBsaW5lLmlkLCBxdWFudGl0eSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlT3JkZXJMaW5lQ3VzdG9tRmllbGRzKCkge1xyXG4gICAgICAgIHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzVmlzaWJsZSA9ICF0aGlzLm9yZGVyTGluZUN1c3RvbUZpZWxkc1Zpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TGluZURpc2NvdW50cyhsaW5lOiBPcmRlckRldGFpbEZyYWdtZW50WydsaW5lcyddW251bWJlcl0pIHtcclxuICAgICAgICByZXR1cm4gbGluZS5kaXNjb3VudHMuZmlsdGVyKGEgPT4gYS50eXBlID09PSBBZGp1c3RtZW50VHlwZS5QUk9NT1RJT04pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0TGluZUN1c3RvbUZpZWxkcygpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgdGhpcy5vcmRlci5saW5lcykge1xyXG4gICAgICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzXHJcbiAgICAgICAgICAgICAgICAubWFwKGNvbmZpZyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAobGluZSBhcyBhbnkpLmN1c3RvbUZpZWxkc1tjb25maWcubmFtZV07XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2woY29uZmlnLm5hbWUsIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodmFsdWUpKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGZpZWxkID0+IHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzVmlzaWJsZSA/IHRydWUgOiBmaWVsZC52YWx1ZSAhPSBudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHNGb3JMaW5lW2xpbmUuaWRdID0gcmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9tb3Rpb25MaW5rKHByb21vdGlvbjogT3JkZXJEZXRhaWxGcmFnbWVudFsnZGlzY291bnRzJ11bbnVtYmVyXSk6IGFueVtdIHtcclxuICAgICAgICBjb25zdCBpZCA9IHByb21vdGlvbi5hZGp1c3RtZW50U291cmNlLnNwbGl0KCc6JylbMV07XHJcbiAgICAgICAgcmV0dXJuIFsnL21hcmtldGluZycsICdwcm9tb3Rpb25zJywgaWRdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENvdXBvbkNvZGVGb3JBZGp1c3RtZW50KFxyXG4gICAgICAgIG9yZGVyOiBPcmRlckRldGFpbEZyYWdtZW50LFxyXG4gICAgICAgIHByb21vdGlvbkFkanVzdG1lbnQ6IE9yZGVyRGV0YWlsRnJhZ21lbnRbJ2Rpc2NvdW50cyddW251bWJlcl0sXHJcbiAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGlkID0gcHJvbW90aW9uQWRqdXN0bWVudC5hZGp1c3RtZW50U291cmNlLnNwbGl0KCc6JylbMV07XHJcbiAgICAgICAgY29uc3QgcHJvbW90aW9uID0gb3JkZXIucHJvbW90aW9ucy5maW5kKHAgPT4gcC5pZCA9PT0gaWQpO1xyXG4gICAgICAgIGlmIChwcm9tb3Rpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb21vdGlvbi5jb3Vwb25Db2RlIHx8IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2hpcHBpbmdOYW1lcyhvcmRlcjogT3JkZXJEZXRhaWxGcmFnbWVudCkge1xyXG4gICAgICAgIGlmIChvcmRlci5zaGlwcGluZ0xpbmVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gb3JkZXIuc2hpcHBpbmdMaW5lcy5tYXAoc2hpcHBpbmdMaW5lID0+IHNoaXBwaW5nTGluZS5zaGlwcGluZ01ldGhvZC5uYW1lKS5qb2luKCcsICcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPHZkci1vcmRlci1kYXRhLXRhYmxlIGlkPVwib3JkZXItZGV0YWlsLWxpc3RcIiBbaXRlbXNdPVwib3JkZXIubGluZXNcIiBbb3JkZXJdPVwib3JkZXJcIj5cclxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY29tbW9uLmltYWdlJyB8IHRyYW5zbGF0ZVwiIGlkPVwiaW1hZ2VcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1wbGFjZWhvbGRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGluZS5mZWF0dXJlZEFzc2V0IGFzIGFzc2V0OyBlbHNlIGltYWdlUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiYXNzZXQgfCBhc3NldFByZXZpZXcgOiAndGlueSdcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW1hZ2VQbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiaW1hZ2VcIiBzaXplPVwiNDhcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XHJcbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ29yZGVyLnByb2R1Y3QtbmFtZScgfCB0cmFuc2xhdGVcIiBpZD1cInByb2R1Y3QtbmFtZVwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbGluZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAge3sgbGluZS5wcm9kdWN0VmFyaWFudC5uYW1lIH19XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XHJcbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ29yZGVyLnByb2R1Y3Qtc2t1JyB8IHRyYW5zbGF0ZVwiIGlkPVwicHJvZHVjdC1za3VcIiBbb3B0aW9uYWxdPVwiZmFsc2VcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIHt7IGxpbmUucHJvZHVjdFZhcmlhbnQuc2t1IH19XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XHJcbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ29yZGVyLnVuaXQtcHJpY2UnIHwgdHJhbnNsYXRlXCIgaWQ9XCJ1bml0LXByaWNlXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1saW5lPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidW5pdC1wcmljZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgbGluZS51bml0UHJpY2VXaXRoVGF4IHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX1cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXQtcHJpY2VcIiBbdGl0bGVdPVwiJ29yZGVyLm5ldC1wcmljZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBsaW5lLnVuaXRQcmljZSB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XHJcbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ29yZGVyLnF1YW50aXR5JyB8IHRyYW5zbGF0ZVwiIGlkPVwicXVhbnRpdHlcIiBbb3B0aW9uYWxdPVwiZmFsc2VcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNEcmFmdDsgZWxzZSBkcmFmdFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGluZS5vcmRlclBsYWNlZFF1YW50aXR5ICYmIGxpbmUucXVhbnRpdHkgIT09IGxpbmUub3JkZXJQbGFjZWRRdWFudGl0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwib3JkZXItcGxhY2VkLXF1YW50aXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidvcmRlci5vcmlnaW5hbC1xdWFudGl0eS1hdC1jaGVja291dCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbGluZS5vcmRlclBsYWNlZFF1YW50aXR5IH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBsaW5lLnF1YW50aXR5IH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZHJhZnQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWZ0LXF0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW49XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgI3F0eUlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJsaW5lLnF1YW50aXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiZHJhZnRJbnB1dEJsdXIobGluZSwgcXR5SW5wdXQudmFsdWVBc051bWJlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImljb24tYnV0dG9uXCIgKGNsaWNrKT1cInJlbW92ZS5lbWl0KHsgbGluZUlkOiBsaW5lLmlkIH0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInRyYXNoXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8dmRyLWxpbmUtcmVmdW5kcyBbbGluZV09XCJsaW5lXCIgW3BheW1lbnRzXT1cIm9yZGVyLnBheW1lbnRzXCI+PC92ZHItbGluZS1yZWZ1bmRzPlxyXG4gICAgICAgICAgICA8dmRyLWxpbmUtZnVsZmlsbG1lbnRcclxuICAgICAgICAgICAgICAgIFtsaW5lXT1cImxpbmVcIlxyXG4gICAgICAgICAgICAgICAgW29yZGVyU3RhdGVdPVwib3JkZXIuc3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgW2FsbE9yZGVyRnVsZmlsbG1lbnRzXT1cIm9yZGVyLmZ1bGZpbGxtZW50c1wiXHJcbiAgICAgICAgICAgID48L3Zkci1saW5lLWZ1bGZpbGxtZW50PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3Zkci1kdDItY29sdW1uPlxyXG4gICAgPHZkci1kdDItY3VzdG9tLWZpZWxkLWNvbHVtblxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBjdXN0b21GaWVsZCBvZiBvcmRlckxpbmVDdXN0b21GaWVsZHNcIlxyXG4gICAgICAgIFtjdXN0b21GaWVsZF09XCJjdXN0b21GaWVsZFwiXHJcbiAgICAvPlxyXG4gICAgPHZkci1vcmRlci10b3RhbC1jb2x1bW4gW2hlYWRpbmddPVwiJ29yZGVyLnRvdGFsJyB8IHRyYW5zbGF0ZVwiIGlkPVwidG90YWxcIiBbb3B0aW9uYWxdPVwiZmFsc2VcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1bml0LXByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBsaW5lLmxpbmVQcmljZVdpdGhUYXggfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ldC1wcmljZVwiIFt0aXRsZV09XCInb3JkZXIubmV0LXByaWNlJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGxpbmUubGluZVByaWNlIHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRMaW5lRGlzY291bnRzKGxpbmUpIGFzIGRpc2NvdW50c1wiPlxyXG4gICAgICAgICAgICAgICAgPHZkci1kcm9wZG93biAqbmdJZj1cImRpc2NvdW50cy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvbW90aW9ucy1sYWJlbFwiIHZkckRyb3Bkb3duVHJpZ2dlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ29yZGVyLnByb21vdGlvbnMtYXBwbGllZCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duLW1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lLXByb21vdGlvblwiICpuZ0Zvcj1cImxldCBkaXNjb3VudCBvZiBkaXNjb3VudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwicHJvbW90aW9uLW5hbWVcIiBbcm91dGVyTGlua109XCJnZXRQcm9tb3Rpb25MaW5rKGRpc2NvdW50KVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY291bnQuZGVzY3JpcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb21vdGlvbi1hbW91bnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkaXNjb3VudC5hbW91bnRXaXRoVGF4IHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV0LXByaWNlXCIgW3RpdGxlXT1cIidvcmRlci5uZXQtcHJpY2UnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRpc2NvdW50LmFtb3VudCB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZHJvcGRvd24tbWVudT5cclxuICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItb3JkZXItdG90YWwtY29sdW1uPlxyXG48L3Zkci1vcmRlci1kYXRhLXRhYmxlPlxyXG4iXX0=