techlify-inventory-common 18.45.0 → 18.47.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 (35) hide show
  1. package/esm2022/lib/inventory-common/measure/measure-list/measure-list.component.mjs +75 -0
  2. package/esm2022/lib/inventory-common/measure/measure-routing.module.mjs +3 -3
  3. package/esm2022/lib/inventory-common/measure/measure.module.mjs +4 -4
  4. package/esm2022/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-summary-report.component.mjs +7 -5
  5. package/esm2022/lib/inventory-common/stock-allocation/stock-allocation-list/stock-allocation-list.component.mjs +81 -0
  6. package/esm2022/lib/inventory-common/stock-allocation/stock-allocation.service.mjs +16 -0
  7. package/esm2022/lib/inventory-common/stock-issue/stock-issue-product-view/stock-issue-product-view.component.mjs +59 -0
  8. package/esm2022/lib/inventory-common/stock-issue/stock-issue-products-list/stock-issue-products-list.component.mjs +3 -3
  9. package/esm2022/lib/inventory-common/stock-issue/stock-issue-routing.module.mjs +6 -1
  10. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-list/stock-receipt-product-list.component.mjs +3 -3
  11. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-view/stock-receipt-product-view.component.mjs +59 -0
  12. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-routing.module.mjs +6 -1
  13. package/fesm2022/{techlify-inventory-common-category.module-D1l7dua9.mjs → techlify-inventory-common-category.module-BL0mKMMU.mjs} +11 -11
  14. package/fesm2022/{techlify-inventory-common-category.module-D1l7dua9.mjs.map → techlify-inventory-common-category.module-BL0mKMMU.mjs.map} +1 -1
  15. package/fesm2022/{techlify-inventory-common-purchase-order-view.component-Bumakb5M.mjs → techlify-inventory-common-purchase-order-view.component-BDdTC81P.mjs} +8 -8
  16. package/fesm2022/{techlify-inventory-common-purchase-order-view.component-Bumakb5M.mjs.map → techlify-inventory-common-purchase-order-view.component-BDdTC81P.mjs.map} +1 -1
  17. package/fesm2022/{techlify-inventory-common-stock-issue-form.component-BeTQ9t-g.mjs → techlify-inventory-common-stock-issue-form.component-B-5myP-N.mjs} +7 -7
  18. package/fesm2022/{techlify-inventory-common-stock-issue-form.component-BeTQ9t-g.mjs.map → techlify-inventory-common-stock-issue-form.component-B-5myP-N.mjs.map} +1 -1
  19. package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-Di1fJWqD.mjs +60 -0
  20. package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-Di1fJWqD.mjs.map +1 -0
  21. package/fesm2022/{techlify-inventory-common-stock-issue-view.component--rs8hgm5.mjs → techlify-inventory-common-stock-issue-view.component-DfntkifG.mjs} +9 -9
  22. package/fesm2022/{techlify-inventory-common-stock-issue-view.component--rs8hgm5.mjs.map → techlify-inventory-common-stock-issue-view.component-DfntkifG.mjs.map} +1 -1
  23. package/fesm2022/{techlify-inventory-common-techlify-inventory-common-dhFANY2r.mjs → techlify-inventory-common-techlify-inventory-common-BbtWdC-G.mjs} +349 -213
  24. package/fesm2022/techlify-inventory-common-techlify-inventory-common-BbtWdC-G.mjs.map +1 -0
  25. package/fesm2022/techlify-inventory-common.mjs +1 -1
  26. package/lib/inventory-common/measure/{measures-list/measures-list.component.d.ts → measure-list/measure-list.component.d.ts} +3 -3
  27. package/lib/inventory-common/measure/measure.module.d.ts +2 -2
  28. package/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-summary-report.component.d.ts +1 -0
  29. package/lib/inventory-common/stock-allocation/stock-allocation-list/stock-allocation-list.component.d.ts +19 -0
  30. package/lib/inventory-common/stock-allocation/stock-allocation.service.d.ts +7 -0
  31. package/lib/inventory-common/stock-issue/stock-issue-product-view/stock-issue-product-view.component.d.ts +19 -0
  32. package/lib/inventory-common/stock-receipts/stock-receipt-product-view/stock-receipt-product-view.component.d.ts +19 -0
  33. package/package.json +1 -1
  34. package/esm2022/lib/inventory-common/measure/measures-list/measures-list.component.mjs +0 -75
  35. package/fesm2022/techlify-inventory-common-techlify-inventory-common-dhFANY2r.mjs.map +0 -1
@@ -0,0 +1,75 @@
1
+ import { Component, signal } from '@angular/core';
2
+ import { TechlifyListComponent } from 'ngx-techlify-core';
3
+ import { MeasureFormComponent } from '../measure-form/measure-form.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "../measure.service";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "@angular/router";
9
+ import * as i5 from "@angular/material/sort";
10
+ import * as i6 from "@angular/material/table";
11
+ import * as i7 from "@angular/material/card";
12
+ import * as i8 from "@angular/material/progress-bar";
13
+ import * as i9 from "ngx-infinite-scroll";
14
+ import * as i10 from "ngx-techlify-core";
15
+ import * as i11 from "../../techlify-filter/techlify-filter.component";
16
+ export class MeasureListComponent extends TechlifyListComponent {
17
+ formBuilder;
18
+ service;
19
+ measureForm = signal(MeasureFormComponent);
20
+ displayedColumns = [
21
+ 'no',
22
+ 'title',
23
+ 'products',
24
+ 'quantity_measure',
25
+ 'description',
26
+ 'actions'
27
+ ];
28
+ constructor(formBuilder, service) {
29
+ super();
30
+ this.formBuilder = formBuilder;
31
+ this.service = service;
32
+ this.filterForm = this.formBuilder.group({
33
+ search: [''],
34
+ sort_by: ['created_at|desc'],
35
+ });
36
+ }
37
+ ngOnInit() {
38
+ this.loadData();
39
+ }
40
+ loadData() {
41
+ const params = {
42
+ page: this.page,
43
+ perPage: this.perPage,
44
+ withCount: 'products',
45
+ ...this.filterForm.value,
46
+ };
47
+ this.isWorking = true;
48
+ this.service.index(params).subscribe({
49
+ next: (response) => {
50
+ this.isWorking = false;
51
+ this.models = this.models.concat(response?.data);
52
+ this.lastPage = response?.last_page;
53
+ },
54
+ error: () => (this.isWorking = false),
55
+ });
56
+ }
57
+ onSortChange(sort) {
58
+ let { active, direction } = sort;
59
+ if (!active) {
60
+ active = 'created_at';
61
+ }
62
+ if (!direction) {
63
+ direction = 'desc';
64
+ active = 'created_at';
65
+ }
66
+ this.filterForm.get('sort_by').setValue(active + '|' + direction);
67
+ }
68
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MeasureListComponent, deps: [{ token: i1.FormBuilder }, { token: i2.MeasureService }], target: i0.ɵɵFactoryTarget.Component });
69
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MeasureListComponent, selector: "app-measure-list", usesInheritance: true, ngImport: i0, template: "<mat-card class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-center align-items-center gap-2\">\n <h3 class=\"mb-0\">Measures</h3>\n <app-techlify-form-button [component]=\"measureForm()\" [width]=\"'500px'\"\n (saved)=\"reload()\"></app-techlify-form-button>\n </div>\n <app-techlify-filter [filterForm]=\"filterForm\" (filterUpdated)=\"reload()\"></app-techlify-filter>\n </mat-card-content>\n</mat-card>\n\n<mat-card class=\"p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Service Centers\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" matSort\n (matSortChange)=\"onSortChange($event)\">\n <!-- # Column -->\n <ng-container matColumnDef=\"no\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <!-- Title Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Title</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.title }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"products\">\n <th mat-header-cell *matHeaderCellDef>Products</th>\n <td mat-cell *matCellDef=\"let element\">\n <a\n class=\"cursor-pointer text-dark text-decoration-none\"\n [routerLink]=\"['/inventory/products']\"\n [queryParams]=\"{ measure_ids: element.id }\"\n >\n {{ element?.products_count }} products\n </a>\n </td>\n </ng-container>\n\n <!-- Quantity Measure Column -->\n <ng-container matColumnDef=\"quantity_measure\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Quantity Measure</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.quantity_measure }}\n </td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef>Description</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.description }}</td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-techlify-form-button [component]=\"measureForm()\" [model]=\"element\" [width]=\"'500px'\"\n (saved)=\"reload()\" *ngIf=\"element?.client_id\"></app-techlify-form-button>\n <app-techlify-delete-button [service]=\"service\" [model]=\"element\"\n [data]=\"{ type: 'Measure', title: element?.title }\" (deleted)=\"reload()\"\n *ngIf=\"element?.client_id && element?.products_count == 0\"></app-techlify-delete-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i5.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i7.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i7.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i9.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i10.TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }, { kind: "component", type: i10.TechlifyFormButtonComponent, selector: "app-techlify-form-button", inputs: ["component", "model", "data", "width"], outputs: ["saved"] }, { kind: "component", type: i11.TechlifyFilterComponent, selector: "app-techlify-filter", inputs: ["filterForm", "filterConfig"], outputs: ["filterUpdated"] }], preserveWhitespaces: true });
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MeasureListComponent, decorators: [{
72
+ type: Component,
73
+ args: [{ selector: 'app-measure-list', template: "<mat-card class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-center align-items-center gap-2\">\n <h3 class=\"mb-0\">Measures</h3>\n <app-techlify-form-button [component]=\"measureForm()\" [width]=\"'500px'\"\n (saved)=\"reload()\"></app-techlify-form-button>\n </div>\n <app-techlify-filter [filterForm]=\"filterForm\" (filterUpdated)=\"reload()\"></app-techlify-filter>\n </mat-card-content>\n</mat-card>\n\n<mat-card class=\"p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Service Centers\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" matSort\n (matSortChange)=\"onSortChange($event)\">\n <!-- # Column -->\n <ng-container matColumnDef=\"no\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <!-- Title Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Title</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.title }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"products\">\n <th mat-header-cell *matHeaderCellDef>Products</th>\n <td mat-cell *matCellDef=\"let element\">\n <a\n class=\"cursor-pointer text-dark text-decoration-none\"\n [routerLink]=\"['/inventory/products']\"\n [queryParams]=\"{ measure_ids: element.id }\"\n >\n {{ element?.products_count }} products\n </a>\n </td>\n </ng-container>\n\n <!-- Quantity Measure Column -->\n <ng-container matColumnDef=\"quantity_measure\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Quantity Measure</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.quantity_measure }}\n </td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef>Description</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.description }}</td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-techlify-form-button [component]=\"measureForm()\" [model]=\"element\" [width]=\"'500px'\"\n (saved)=\"reload()\" *ngIf=\"element?.client_id\"></app-techlify-form-button>\n <app-techlify-delete-button [service]=\"service\" [model]=\"element\"\n [data]=\"{ type: 'Measure', title: element?.title }\" (deleted)=\"reload()\"\n *ngIf=\"element?.client_id && element?.products_count == 0\"></app-techlify-delete-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n" }]
74
+ }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.MeasureService }] });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL21lYXN1cmUvbWVhc3VyZS1saXN0L21lYXN1cmUtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9tZWFzdXJlL21lYXN1cmUtbGlzdC9tZWFzdXJlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFPOUUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHFCQUFxQjtJQVl6QztJQUE2QztJQVhqRSxXQUFXLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFM0MsZ0JBQWdCLEdBQWE7UUFDM0IsSUFBSTtRQUNKLE9BQU87UUFDUCxVQUFVO1FBQ1Ysa0JBQWtCO1FBQ2xCLGFBQWE7UUFDYixTQUFTO0tBQ1YsQ0FBQztJQUVGLFlBQW9CLFdBQXdCLEVBQXFCLE9BQXVCO1FBQ3RGLEtBQUssRUFBRSxDQUFDO1FBRFUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBcUIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFFdEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUN2QyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDWixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRVEsUUFBUTtRQUNmLE1BQU0sTUFBTSxHQUFRO1lBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixTQUFTLEVBQUUsVUFBVTtZQUNyQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSztTQUN6QixDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ25DLElBQUksRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxFQUFFLFNBQVMsQ0FBQztZQUN0QyxDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDdEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFVO1FBQ3JCLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sR0FBRyxZQUFZLENBQUM7UUFDeEIsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLFNBQVMsR0FBRyxNQUFNLENBQUM7WUFDbkIsTUFBTSxHQUFHLFlBQVksQ0FBQztRQUN4QixDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDcEUsQ0FBQzt3R0FwRFUsb0JBQW9COzRGQUFwQixvQkFBb0IsK0VDWmpDLCs1R0E4RUE7OzRGRGxFYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUZWNobGlmeUxpc3RDb21wb25lbnQgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBNZWFzdXJlU2VydmljZSB9IGZyb20gJy4uL21lYXN1cmUuc2VydmljZSc7XG5pbXBvcnQgeyBTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNZWFzdXJlRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL21lYXN1cmUtZm9ybS9tZWFzdXJlLWZvcm0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW1lYXN1cmUtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZWFzdXJlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZWFzdXJlLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVhc3VyZUxpc3RDb21wb25lbnQgZXh0ZW5kcyBUZWNobGlmeUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBtZWFzdXJlRm9ybSA9IHNpZ25hbChNZWFzdXJlRm9ybUNvbXBvbmVudCk7XG5cbiAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXG4gICAgJ25vJyxcbiAgICAndGl0bGUnLFxuICAgICdwcm9kdWN0cycsXG4gICAgJ3F1YW50aXR5X21lYXN1cmUnLFxuICAgICdkZXNjcmlwdGlvbicsXG4gICAgJ2FjdGlvbnMnXG4gIF07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIHByb3RlY3RlZCBvdmVycmlkZSBzZXJ2aWNlOiBNZWFzdXJlU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5maWx0ZXJGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBzZWFyY2g6IFsnJ10sXG4gICAgICBzb3J0X2J5OiBbJ2NyZWF0ZWRfYXR8ZGVzYyddLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbG9hZERhdGEoKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7XG4gICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICBwZXJQYWdlOiB0aGlzLnBlclBhZ2UsXG4gICAgICB3aXRoQ291bnQ6ICdwcm9kdWN0cycsXG4gICAgICAuLi50aGlzLmZpbHRlckZvcm0udmFsdWUsXG4gICAgfTtcbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLmluZGV4KHBhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNXb3JraW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMubW9kZWxzID0gdGhpcy5tb2RlbHMuY29uY2F0KHJlc3BvbnNlPy5kYXRhKTtcbiAgICAgICAgdGhpcy5sYXN0UGFnZSA9IHJlc3BvbnNlPy5sYXN0X3BhZ2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+ICh0aGlzLmlzV29ya2luZyA9IGZhbHNlKSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uU29ydENoYW5nZShzb3J0OiBTb3J0KSB7XG4gICAgbGV0IHsgYWN0aXZlLCBkaXJlY3Rpb24gfSA9IHNvcnQ7XG4gICAgaWYgKCFhY3RpdmUpIHtcbiAgICAgIGFjdGl2ZSA9ICdjcmVhdGVkX2F0JztcbiAgICB9XG4gICAgaWYgKCFkaXJlY3Rpb24pIHtcbiAgICAgIGRpcmVjdGlvbiA9ICdkZXNjJztcbiAgICAgIGFjdGl2ZSA9ICdjcmVhdGVkX2F0JztcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJGb3JtLmdldCgnc29ydF9ieScpLnNldFZhbHVlKGFjdGl2ZSArICd8JyArIGRpcmVjdGlvbik7XG4gIH1cbn1cbiIsIjxtYXQtY2FyZCBjbGFzcz1cIm1iLTJcIj5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgPGgzIGNsYXNzPVwibWItMFwiPk1lYXN1cmVzPC9oMz5cbiAgICAgIDxhcHAtdGVjaGxpZnktZm9ybS1idXR0b24gW2NvbXBvbmVudF09XCJtZWFzdXJlRm9ybSgpXCIgW3dpZHRoXT1cIic1MDBweCdcIlxuICAgICAgICAoc2F2ZWQpPVwicmVsb2FkKClcIj48L2FwcC10ZWNobGlmeS1mb3JtLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8YXBwLXRlY2hsaWZ5LWZpbHRlciBbZmlsdGVyRm9ybV09XCJmaWx0ZXJGb3JtXCIgKGZpbHRlclVwZGF0ZWQpPVwicmVsb2FkKClcIj48L2FwcC10ZWNobGlmeS1maWx0ZXI+XG4gIDwvbWF0LWNhcmQtY29udGVudD5cbjwvbWF0LWNhcmQ+XG5cbjxtYXQtY2FyZCBjbGFzcz1cInAtMFwiPlxuICA8bWF0LWNhcmQtY29udGVudD5cbiAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cIm1vZGVsc1wiIGNsYXNzPVwidy0xMDBcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiU2VydmljZSBDZW50ZXJzXCIgaW5maW5pdGVTY3JvbGxcbiAgICAgIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cIjJcIiBbaW5maW5pdGVTY3JvbGxUaHJvdHRsZV09XCI1MFwiIChzY3JvbGxlZCk9XCJvblNjcm9sbCgpXCIgbWF0U29ydFxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIj5cbiAgICAgIDwhLS0gIyBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm5vXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IzwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgaSA9IGluZGV4XCI+e3sgaSArIDEgfX08L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gVGl0bGUgQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ0aXRsZVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5UaXRsZTwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAge3sgZWxlbWVudD8udGl0bGUgfX1cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInByb2R1Y3RzXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+UHJvZHVjdHM8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtZGFyayB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9pbnZlbnRvcnkvcHJvZHVjdHMnXVwiXG4gICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwieyBtZWFzdXJlX2lkczogZWxlbWVudC5pZCB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBlbGVtZW50Py5wcm9kdWN0c19jb3VudCB9fSBwcm9kdWN0c1xuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIFF1YW50aXR5IE1lYXN1cmUgQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJxdWFudGl0eV9tZWFzdXJlXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlF1YW50aXR5IE1lYXN1cmU8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgIHt7IGVsZW1lbnQ/LnF1YW50aXR5X21lYXN1cmUgfX1cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIERlc2NyaXB0aW9uIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5EZXNjcmlwdGlvbjwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8uZGVzY3JpcHRpb24gfX08L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gQWN0aW9ucyBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImFjdGlvbnNcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5BY3Rpb25zPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxhcHAtdGVjaGxpZnktZm9ybS1idXR0b24gW2NvbXBvbmVudF09XCJtZWFzdXJlRm9ybSgpXCIgW21vZGVsXT1cImVsZW1lbnRcIiBbd2lkdGhdPVwiJzUwMHB4J1wiXG4gICAgICAgICAgICAgIChzYXZlZCk9XCJyZWxvYWQoKVwiICpuZ0lmPVwiZWxlbWVudD8uY2xpZW50X2lkXCI+PC9hcHAtdGVjaGxpZnktZm9ybS1idXR0b24+XG4gICAgICAgICAgICA8YXBwLXRlY2hsaWZ5LWRlbGV0ZS1idXR0b24gW3NlcnZpY2VdPVwic2VydmljZVwiIFttb2RlbF09XCJlbGVtZW50XCJcbiAgICAgICAgICAgICAgW2RhdGFdPVwieyB0eXBlOiAnTWVhc3VyZScsIHRpdGxlOiBlbGVtZW50Py50aXRsZSB9XCIgKGRlbGV0ZWQpPVwicmVsb2FkKClcIlxuICAgICAgICAgICAgICAqbmdJZj1cImVsZW1lbnQ/LmNsaWVudF9pZCAmJiBlbGVtZW50Py5wcm9kdWN0c19jb3VudCA9PSAwXCI+PC9hcHAtdGVjaGxpZnktZGVsZXRlLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgIDwvdGFibGU+XG5cbiAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiaXNXb3JraW5nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XG48L21hdC1jYXJkPlxuIl19
@@ -1,12 +1,12 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { RouterModule } from '@angular/router';
3
- import { MeasuresListComponent } from './measures-list/measures-list.component';
3
+ import { MeasureListComponent } from './measure-list/measure-list.component';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/router";
6
6
  const routes = [
7
7
  {
8
8
  path: '',
9
- component: MeasuresListComponent,
9
+ component: MeasureListComponent,
10
10
  },
11
11
  ];
12
12
  export class MeasureRoutingModule {
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
21
21
  exports: [RouterModule],
22
22
  }]
23
23
  }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZS1yb3V0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL21lYXN1cmUvbWVhc3VyZS1yb3V0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7O0FBRWhGLE1BQU0sTUFBTSxHQUFXO0lBQ3JCO1FBQ0UsSUFBSSxFQUFFLEVBQUU7UUFDUixTQUFTLEVBQUUscUJBQXFCO0tBQ2pDO0NBQ0YsQ0FBQztBQU1GLE1BQU0sT0FBTyxvQkFBb0I7d0dBQXBCLG9CQUFvQjt5R0FBcEIsb0JBQW9CLHdDQUZyQixZQUFZO3lHQUVYLG9CQUFvQixZQUhyQixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM3QixZQUFZOzs0RkFFWCxvQkFBb0I7a0JBSmhDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBNZWFzdXJlc0xpc3RDb21wb25lbnQgfSBmcm9tICcuL21lYXN1cmVzLWxpc3QvbWVhc3VyZXMtbGlzdC5jb21wb25lbnQnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICcnLFxuICAgIGNvbXBvbmVudDogTWVhc3VyZXNMaXN0Q29tcG9uZW50LFxuICB9LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpXSxcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1lYXN1cmVSb3V0aW5nTW9kdWxlIHt9XG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZS1yb3V0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL21lYXN1cmUvbWVhc3VyZS1yb3V0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBRTdFLE1BQU0sTUFBTSxHQUFXO0lBQ3JCO1FBQ0UsSUFBSSxFQUFFLEVBQUU7UUFDUixTQUFTLEVBQUUsb0JBQW9CO0tBQ2hDO0NBQ0YsQ0FBQztBQU1GLE1BQU0sT0FBTyxvQkFBb0I7d0dBQXBCLG9CQUFvQjt5R0FBcEIsb0JBQW9CLHdDQUZyQixZQUFZO3lHQUVYLG9CQUFvQixZQUhyQixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM3QixZQUFZOzs0RkFFWCxvQkFBb0I7a0JBSmhDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBNZWFzdXJlTGlzdENvbXBvbmVudCB9IGZyb20gJy4vbWVhc3VyZS1saXN0L21lYXN1cmUtbGlzdC5jb21wb25lbnQnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICcnLFxuICAgIGNvbXBvbmVudDogTWVhc3VyZUxpc3RDb21wb25lbnQsXG4gIH0sXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVhc3VyZVJvdXRpbmdNb2R1bGUge31cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { MeasureRoutingModule } from './measure-routing.module';
4
- import { MeasuresListComponent } from './measures-list/measures-list.component';
4
+ import { MeasureListComponent } from './measure-list/measure-list.component';
5
5
  import { InfiniteScrollModule } from 'ngx-infinite-scroll';
6
6
  import { MaterialModule } from 'ngx-techlify-core';
7
7
  import { MatProgressBarModule } from '@angular/material/progress-bar';
@@ -10,7 +10,7 @@ import { SharedModule } from '../shared.module';
10
10
  import * as i0 from "@angular/core";
11
11
  export class MeasureModule {
12
12
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MeasureModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: MeasureModule, declarations: [MeasuresListComponent], imports: [CommonModule,
13
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: MeasureModule, declarations: [MeasureListComponent], imports: [CommonModule,
14
14
  MeasureRoutingModule,
15
15
  MaterialModule,
16
16
  SharedModule,
@@ -28,7 +28,7 @@ export class MeasureModule {
28
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MeasureModule, decorators: [{
29
29
  type: NgModule,
30
30
  args: [{
31
- declarations: [MeasuresListComponent],
31
+ declarations: [MeasureListComponent],
32
32
  imports: [
33
33
  CommonModule,
34
34
  MeasureRoutingModule,
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
40
40
  ],
41
41
  }]
42
42
  }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9tZWFzdXJlL21lYXN1cmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBY2hELE1BQU0sT0FBTyxhQUFhO3dHQUFiLGFBQWE7eUdBQWIsYUFBYSxpQkFYVCxxQkFBcUIsYUFFbEMsWUFBWTtZQUNaLG9CQUFvQjtZQUNwQixjQUFjO1lBQ2QsWUFBWTtZQUNaLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsb0JBQW9CO3lHQUdYLGFBQWEsWUFUdEIsWUFBWTtZQUNaLG9CQUFvQjtZQUNwQixjQUFjO1lBQ2QsWUFBWTtZQUNaLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsb0JBQW9COzs0RkFHWCxhQUFhO2tCQVp6QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNyQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3FCQUNyQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBNZWFzdXJlUm91dGluZ01vZHVsZSB9IGZyb20gJy4vbWVhc3VyZS1yb3V0aW5nLm1vZHVsZSc7XG5pbXBvcnQgeyBNZWFzdXJlc0xpc3RDb21wb25lbnQgfSBmcm9tICcuL21lYXN1cmVzLWxpc3QvbWVhc3VyZXMtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5maW5pdGVTY3JvbGxNb2R1bGUgfSBmcm9tICduZ3gtaW5maW5pdGUtc2Nyb2xsJztcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgVGVjaGxpZnlGaWx0ZXJNb2R1bGUgfSBmcm9tICcuLi90ZWNobGlmeS1maWx0ZXIvdGVjaGxpZnktZmlsdGVyLm1vZHVsZSc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTWVhc3VyZXNMaXN0Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNZWFzdXJlUm91dGluZ01vZHVsZSxcbiAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICBTaGFyZWRNb2R1bGUsXG4gICAgVGVjaGxpZnlGaWx0ZXJNb2R1bGUsXG4gICAgSW5maW5pdGVTY3JvbGxNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1lYXN1cmVNb2R1bGUge31cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9tZWFzdXJlL21lYXN1cmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBY2hELE1BQU0sT0FBTyxhQUFhO3dHQUFiLGFBQWE7eUdBQWIsYUFBYSxpQkFYVCxvQkFBb0IsYUFFakMsWUFBWTtZQUNaLG9CQUFvQjtZQUNwQixjQUFjO1lBQ2QsWUFBWTtZQUNaLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsb0JBQW9CO3lHQUdYLGFBQWEsWUFUdEIsWUFBWTtZQUNaLG9CQUFvQjtZQUNwQixjQUFjO1lBQ2QsWUFBWTtZQUNaLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsb0JBQW9COzs0RkFHWCxhQUFhO2tCQVp6QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUNwQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3FCQUNyQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBNZWFzdXJlUm91dGluZ01vZHVsZSB9IGZyb20gJy4vbWVhc3VyZS1yb3V0aW5nLm1vZHVsZSc7XG5pbXBvcnQgeyBNZWFzdXJlTGlzdENvbXBvbmVudCB9IGZyb20gJy4vbWVhc3VyZS1saXN0L21lYXN1cmUtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5maW5pdGVTY3JvbGxNb2R1bGUgfSBmcm9tICduZ3gtaW5maW5pdGUtc2Nyb2xsJztcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgVGVjaGxpZnlGaWx0ZXJNb2R1bGUgfSBmcm9tICcuLi90ZWNobGlmeS1maWx0ZXIvdGVjaGxpZnktZmlsdGVyLm1vZHVsZSc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTWVhc3VyZUxpc3RDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1lYXN1cmVSb3V0aW5nTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIFNoYXJlZE1vZHVsZSxcbiAgICBUZWNobGlmeUZpbHRlck1vZHVsZSxcbiAgICBJbmZpbml0ZVNjcm9sbE1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVhc3VyZU1vZHVsZSB7fVxuIl19
@@ -26,7 +26,8 @@ export class StockIssueSummaryReportComponent extends TechlifyListComponent {
26
26
  'sku',
27
27
  'categories',
28
28
  'stock_issues',
29
- 'stock_issues_avco'
29
+ 'stock_issues_avco',
30
+ 'total_cost'
30
31
  ];
31
32
  locationGroups = signal([]);
32
33
  // Full location objects emitted by the location selector — gives us the
@@ -78,20 +79,21 @@ export class StockIssueSummaryReportComponent extends TechlifyListComponent {
78
79
  location,
79
80
  models: res?.data ?? [],
80
81
  grand_total_avco: res?.grand_total_avco,
81
- grand_total_quantity: res?.grand_total_quantity
82
+ grand_total_quantity: res?.grand_total_quantity,
83
+ grand_total_fifo_value: res?.grand_total_fifo_value
82
84
  }))));
83
85
  forkJoin(apiRequests)
84
86
  .pipe(finalize(() => (this.isWorking = false)))
85
87
  .subscribe((groups) => this.locationGroups.set(groups));
86
88
  }
87
89
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockIssueSummaryReportComponent, deps: [{ token: i1.StockIssueProductDataService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
88
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: StockIssueSummaryReportComponent, isStandalone: true, selector: "app-stock-issue-summary-report", usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex flex-column gap-2\">\n <mat-card>\n <mat-card-content class=\"d-flex flex-row align-items-center justify-content-between\">\n <h5 class=\"mb-0\">Stock Issue Summary Report</h5>\n\n <form class=\"d-flex flex-row gap-1\" [formGroup]=\"filterForm\">\n <mat-form-field class=\"fl-md\">\n <mat-label>Search</mat-label>\n <input matInput placeholder=\"Search products\" formControlName=\"search\" />\n </mat-form-field>\n\n <app-timeline-filter appearance=\"fill\" labelText=\"Period\" formControlName=\"duration\" [form]=\"filterForm\"\n [showClearButton]=\"true\"></app-timeline-filter>\n\n <mat-form-field>\n <mat-label>Category</mat-label>\n <app-searchable-selector formControlName=\"category_ids\" apiUrl=\"api/product-categories\"\n [multiple]=\"true\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Location</mat-label>\n <app-searchable-selector formControlName=\"location_ids\" apiUrl=\"api/inventory-locations\" [multiple]=\"true\"\n [isEmitInitialEvent]=\"true\" (selectedValueChange)=\"onLocationsChange($event)\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Group By</mat-label>\n <mat-select required formControlName=\"group_by\">\n <mat-option value=\"product\">Product</mat-option>\n </mat-select>\n </mat-form-field>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngFor=\"let group of locationGroups()\">\n <mat-card-content class=\"p-0\">\n <h6 class=\"px-3 pt-3 mb-2 fw-bold\">{{ group.location?.title }}</h6>\n\n <table mat-table [dataSource]=\"group.models\" class=\"w-100\">\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef>Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"['/inventory/products', element?.product?.id, 'view']\" class=\"text-dark\">\n {{ element?.product?.name }}\n </a>\n </td>\n <td mat-footer-cell *matFooterCellDef> <strong> Total </strong> </td>\n </ng-container>\n\n <ng-container matColumnDef=\"sku\">\n <th mat-header-cell *matHeaderCellDef>SKU</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.product?.sku }}</td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"categories\">\n <th mat-header-cell *matHeaderCellDef>Categories</th>\n <td mat-cell *matCellDef=\"let element\">\n <app-product-category-badges [product]=\"element?.product\"></app-product-category-badges>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_issues\">\n <th mat-header-cell *matHeaderCellDef>Stock Issues</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.total_quantity }}</td>\n <td mat-footer-cell *matFooterCellDef> <strong> {{ group?.grand_total_quantity }} </strong> </td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_issues_avco\">\n <th mat-header-cell *matHeaderCellDef>Stock Issues AVCO</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.total_avco | currency }}</td>\n <td mat-footer-cell *matFooterCellDef> <strong> {{ group?.grand_total_avco | currency }} </strong> </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n <tr [hidden]=\"!group?.grand_total_avco && !group?.grand_total_quantity\" mat-footer-row\n *matFooterRowDef=\"displayedColumns\"></tr>\n </table>\n\n <p *ngIf=\"!group.models.length\" class=\"px-3 py-2 mb-0 text-secondary\">No stock issues for this location.</p>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngIf=\"!isWorking && !locationGroups().length\">\n <mat-card-content class=\"text-secondary text-center py-4\">\n Select one or more locations to view the report.\n </mat-card-content>\n </mat-card>\n\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: SharedModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i10.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i10.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i10.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i10.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i10.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i10.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i10.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i10.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i10.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i10.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i10.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i10.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i10.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i11.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i12.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "isEmitInitialEvent", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }, { kind: "component", type: i12.TimelineFilterComponent, selector: "app-timeline-filter", inputs: ["defaultValue", "required", "disabled", "value", "timelines", "dateFrom", "dateTo", "appearance", "showClearButton", "form", "labelText"], outputs: ["selectionChange"] }, { kind: "pipe", type: i3.CurrencyPipe, name: "currency" }, { kind: "component", type: ProductCategoryBadgesComponent, selector: "app-product-category-badges", inputs: ["product"] }], preserveWhitespaces: true });
90
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: StockIssueSummaryReportComponent, isStandalone: true, selector: "app-stock-issue-summary-report", usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex flex-column gap-2\">\n <mat-card>\n <mat-card-content class=\"d-flex flex-row align-items-center justify-content-between\">\n <h5 class=\"mb-0\">Stock Issue Summary Report</h5>\n\n <form class=\"d-flex flex-row gap-1\" [formGroup]=\"filterForm\">\n <mat-form-field class=\"fl-md\">\n <mat-label>Search</mat-label>\n <input matInput placeholder=\"Search products\" formControlName=\"search\" />\n </mat-form-field>\n\n <app-timeline-filter appearance=\"fill\" labelText=\"Period\" formControlName=\"duration\" [form]=\"filterForm\"\n [showClearButton]=\"true\"></app-timeline-filter>\n\n <mat-form-field>\n <mat-label>Category</mat-label>\n <app-searchable-selector formControlName=\"category_ids\" apiUrl=\"api/product-categories\"\n [multiple]=\"true\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Location</mat-label>\n <app-searchable-selector formControlName=\"location_ids\" apiUrl=\"api/inventory-locations\" [multiple]=\"true\"\n [isEmitInitialEvent]=\"true\" (selectedValueChange)=\"onLocationsChange($event)\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Group By</mat-label>\n <mat-select required formControlName=\"group_by\">\n <mat-option value=\"product\">Product</mat-option>\n </mat-select>\n </mat-form-field>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngFor=\"let group of locationGroups()\">\n <mat-card-content class=\"p-0\">\n <h6 class=\"px-3 pt-3 mb-2 fw-bold\">{{ group.location?.title }}</h6>\n\n <table mat-table [dataSource]=\"group.models\" class=\"w-100\">\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef>Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"['/inventory/products', element?.product?.id, 'view']\" class=\"text-dark\">\n {{ element?.product?.name }}\n </a>\n </td>\n <td mat-footer-cell *matFooterCellDef> <strong> Total </strong> </td>\n </ng-container>\n\n <ng-container matColumnDef=\"sku\">\n <th mat-header-cell *matHeaderCellDef>SKU</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.product?.sku }}</td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"categories\">\n <th mat-header-cell *matHeaderCellDef>Categories</th>\n <td mat-cell *matCellDef=\"let element\">\n <app-product-category-badges [product]=\"element?.product\"></app-product-category-badges>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_issues\">\n <th mat-header-cell *matHeaderCellDef>Stock Issues</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.total_quantity }}</td>\n <td mat-footer-cell *matFooterCellDef> <strong> {{ group?.grand_total_quantity }} </strong> </td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_issues_avco\">\n <th mat-header-cell *matHeaderCellDef> Total Cost (AVCO) </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.total_avco | currency }}</td>\n <td mat-footer-cell *matFooterCellDef> <strong> {{ group?.grand_total_avco | currency }} </strong> </td>\n </ng-container>\n\n <ng-container matColumnDef=\"total_cost\">\n <th mat-header-cell *matHeaderCellDef> Total Cost (FIFO) </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.total_fifo_value | currency }}</td>\n <td mat-footer-cell *matFooterCellDef> <strong> {{ group?.grand_total_fifo_value | currency }} </strong> </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n <tr [hidden]=\"!group?.grand_total_avco && !group?.grand_total_quantity\" mat-footer-row\n *matFooterRowDef=\"displayedColumns\"></tr>\n </table>\n\n <p *ngIf=\"!group.models.length\" class=\"px-3 py-2 mb-0 text-secondary\">No stock issues for this location.</p>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngIf=\"!isWorking && !locationGroups().length\">\n <mat-card-content class=\"text-secondary text-center py-4\">\n Select one or more locations to view the report.\n </mat-card-content>\n </mat-card>\n\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: SharedModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i10.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i10.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i10.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i10.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i10.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i10.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i10.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i10.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i10.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i10.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i10.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i10.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i10.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i11.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i12.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "isEmitInitialEvent", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }, { kind: "component", type: i12.TimelineFilterComponent, selector: "app-timeline-filter", inputs: ["defaultValue", "required", "disabled", "value", "timelines", "dateFrom", "dateTo", "appearance", "showClearButton", "form", "labelText"], outputs: ["selectionChange"] }, { kind: "pipe", type: i3.CurrencyPipe, name: "currency" }, { kind: "component", type: ProductCategoryBadgesComponent, selector: "app-product-category-badges", inputs: ["product"] }], preserveWhitespaces: true });
89
91
  }
90
92
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockIssueSummaryReportComponent, decorators: [{
91
93
  type: Component,
92
94
  args: [{ selector: 'app-stock-issue-summary-report', standalone: true, imports: [
93
95
  SharedModule,
94
96
  ProductCategoryBadgesComponent,
95
- ], template: "<div class=\"d-flex flex-column gap-2\">\n <mat-card>\n <mat-card-content class=\"d-flex flex-row align-items-center justify-content-between\">\n <h5 class=\"mb-0\">Stock Issue Summary Report</h5>\n\n <form class=\"d-flex flex-row gap-1\" [formGroup]=\"filterForm\">\n <mat-form-field class=\"fl-md\">\n <mat-label>Search</mat-label>\n <input matInput placeholder=\"Search products\" formControlName=\"search\" />\n </mat-form-field>\n\n <app-timeline-filter appearance=\"fill\" labelText=\"Period\" formControlName=\"duration\" [form]=\"filterForm\"\n [showClearButton]=\"true\"></app-timeline-filter>\n\n <mat-form-field>\n <mat-label>Category</mat-label>\n <app-searchable-selector formControlName=\"category_ids\" apiUrl=\"api/product-categories\"\n [multiple]=\"true\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Location</mat-label>\n <app-searchable-selector formControlName=\"location_ids\" apiUrl=\"api/inventory-locations\" [multiple]=\"true\"\n [isEmitInitialEvent]=\"true\" (selectedValueChange)=\"onLocationsChange($event)\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Group By</mat-label>\n <mat-select required formControlName=\"group_by\">\n <mat-option value=\"product\">Product</mat-option>\n </mat-select>\n </mat-form-field>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngFor=\"let group of locationGroups()\">\n <mat-card-content class=\"p-0\">\n <h6 class=\"px-3 pt-3 mb-2 fw-bold\">{{ group.location?.title }}</h6>\n\n <table mat-table [dataSource]=\"group.models\" class=\"w-100\">\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef>Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"['/inventory/products', element?.product?.id, 'view']\" class=\"text-dark\">\n {{ element?.product?.name }}\n </a>\n </td>\n <td mat-footer-cell *matFooterCellDef> <strong> Total </strong> </td>\n </ng-container>\n\n <ng-container matColumnDef=\"sku\">\n <th mat-header-cell *matHeaderCellDef>SKU</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.product?.sku }}</td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"categories\">\n <th mat-header-cell *matHeaderCellDef>Categories</th>\n <td mat-cell *matCellDef=\"let element\">\n <app-product-category-badges [product]=\"element?.product\"></app-product-category-badges>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_issues\">\n <th mat-header-cell *matHeaderCellDef>Stock Issues</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.total_quantity }}</td>\n <td mat-footer-cell *matFooterCellDef> <strong> {{ group?.grand_total_quantity }} </strong> </td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_issues_avco\">\n <th mat-header-cell *matHeaderCellDef>Stock Issues AVCO</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.total_avco | currency }}</td>\n <td mat-footer-cell *matFooterCellDef> <strong> {{ group?.grand_total_avco | currency }} </strong> </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n <tr [hidden]=\"!group?.grand_total_avco && !group?.grand_total_quantity\" mat-footer-row\n *matFooterRowDef=\"displayedColumns\"></tr>\n </table>\n\n <p *ngIf=\"!group.models.length\" class=\"px-3 py-2 mb-0 text-secondary\">No stock issues for this location.</p>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngIf=\"!isWorking && !locationGroups().length\">\n <mat-card-content class=\"text-secondary text-center py-4\">\n Select one or more locations to view the report.\n </mat-card-content>\n </mat-card>\n\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n</div>\n" }]
97
+ ], template: "<div class=\"d-flex flex-column gap-2\">\n <mat-card>\n <mat-card-content class=\"d-flex flex-row align-items-center justify-content-between\">\n <h5 class=\"mb-0\">Stock Issue Summary Report</h5>\n\n <form class=\"d-flex flex-row gap-1\" [formGroup]=\"filterForm\">\n <mat-form-field class=\"fl-md\">\n <mat-label>Search</mat-label>\n <input matInput placeholder=\"Search products\" formControlName=\"search\" />\n </mat-form-field>\n\n <app-timeline-filter appearance=\"fill\" labelText=\"Period\" formControlName=\"duration\" [form]=\"filterForm\"\n [showClearButton]=\"true\"></app-timeline-filter>\n\n <mat-form-field>\n <mat-label>Category</mat-label>\n <app-searchable-selector formControlName=\"category_ids\" apiUrl=\"api/product-categories\"\n [multiple]=\"true\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Location</mat-label>\n <app-searchable-selector formControlName=\"location_ids\" apiUrl=\"api/inventory-locations\" [multiple]=\"true\"\n [isEmitInitialEvent]=\"true\" (selectedValueChange)=\"onLocationsChange($event)\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Group By</mat-label>\n <mat-select required formControlName=\"group_by\">\n <mat-option value=\"product\">Product</mat-option>\n </mat-select>\n </mat-form-field>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngFor=\"let group of locationGroups()\">\n <mat-card-content class=\"p-0\">\n <h6 class=\"px-3 pt-3 mb-2 fw-bold\">{{ group.location?.title }}</h6>\n\n <table mat-table [dataSource]=\"group.models\" class=\"w-100\">\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef>Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"['/inventory/products', element?.product?.id, 'view']\" class=\"text-dark\">\n {{ element?.product?.name }}\n </a>\n </td>\n <td mat-footer-cell *matFooterCellDef> <strong> Total </strong> </td>\n </ng-container>\n\n <ng-container matColumnDef=\"sku\">\n <th mat-header-cell *matHeaderCellDef>SKU</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.product?.sku }}</td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"categories\">\n <th mat-header-cell *matHeaderCellDef>Categories</th>\n <td mat-cell *matCellDef=\"let element\">\n <app-product-category-badges [product]=\"element?.product\"></app-product-category-badges>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_issues\">\n <th mat-header-cell *matHeaderCellDef>Stock Issues</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.total_quantity }}</td>\n <td mat-footer-cell *matFooterCellDef> <strong> {{ group?.grand_total_quantity }} </strong> </td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_issues_avco\">\n <th mat-header-cell *matHeaderCellDef> Total Cost (AVCO) </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.total_avco | currency }}</td>\n <td mat-footer-cell *matFooterCellDef> <strong> {{ group?.grand_total_avco | currency }} </strong> </td>\n </ng-container>\n\n <ng-container matColumnDef=\"total_cost\">\n <th mat-header-cell *matHeaderCellDef> Total Cost (FIFO) </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.total_fifo_value | currency }}</td>\n <td mat-footer-cell *matFooterCellDef> <strong> {{ group?.grand_total_fifo_value | currency }} </strong> </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n <tr [hidden]=\"!group?.grand_total_avco && !group?.grand_total_quantity\" mat-footer-row\n *matFooterRowDef=\"displayedColumns\"></tr>\n </table>\n\n <p *ngIf=\"!group.models.length\" class=\"px-3 py-2 mb-0 text-secondary\">No stock issues for this location.</p>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngIf=\"!isWorking && !locationGroups().length\">\n <mat-card-content class=\"text-secondary text-center py-4\">\n Select one or more locations to view the report.\n </mat-card-content>\n </mat-card>\n\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n</div>\n" }]
96
98
  }], ctorParameters: () => [{ type: i1.StockIssueProductDataService }, { type: i2.FormBuilder }] });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWUtc3VtbWFyeS1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vcmVwb3J0cy9zdG9jay1pc3N1ZS1zdW1tYXJ5LXJlcG9ydC9zdG9jay1pc3N1ZS1zdW1tYXJ5LXJlcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9yZXBvcnRzL3N0b2NrLWlzc3VlLXN1bW1hcnktcmVwb3J0L3N0b2NrLWlzc3VlLXN1bW1hcnktcmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUZBQWlGLENBQUM7QUFFakksT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQW1CMUMsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLHFCQUFxQjtJQWlCcEQ7SUFDWDtJQWpCVixnQkFBZ0IsR0FBYTtRQUMzQixHQUFHO1FBQ0gsU0FBUztRQUNULEtBQUs7UUFDTCxZQUFZO1FBQ1osY0FBYztRQUNkLG1CQUFtQjtLQUNwQixDQUFDO0lBRUYsY0FBYyxHQUFHLE1BQU0sQ0FBa0IsRUFBRSxDQUFDLENBQUM7SUFFN0Ms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RGpGSSxZQUFZLDQ5S0FDWiw4QkFBOEI7OzRGQUtyQixnQ0FBZ0M7a0JBVjVDLFNBQVM7K0JBQ0UsZ0NBQWdDLGNBQzlCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLDhCQUE4QjtxQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi8uLi9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IFRlY2hsaWZ5TGlzdENvbXBvbmVudCwgVGltZWxpbmUgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBTdG9ja0lzc3VlUHJvZHVjdERhdGFTZXJ2aWNlIH0gZnJvbSAnLi9zdG9jay1pc3N1ZS1wcm9kdWN0LWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9kdWN0Q2F0ZWdvcnlCYWRnZXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wcm9kdWN0L3dpZGdldHMvcHJvZHVjdC1jYXRlZ29yeS1iYWRnZXMvcHJvZHVjdC1jYXRlZ29yeS1iYWRnZXMuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmludGVyZmFjZSBMb2NhdGlvbkdyb3VwIHtcbiAgbG9jYXRpb246IGFueTtcbiAgbW9kZWxzOiBhbnlbXTtcbiAgZ3JhbmRfdG90YWxfcXVhbnRpdHk6IG51bWJlcjtcbiAgZ3JhbmRfdG90YWxfYXZjbzogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtc3RvY2staXNzdWUtc3VtbWFyeS1yZXBvcnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgU2hhcmVkTW9kdWxlLFxuICAgIFByb2R1Y3RDYXRlZ29yeUJhZGdlc0NvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0b2NrLWlzc3VlLXN1bW1hcnktcmVwb3J0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3N0b2NrLWlzc3VlLXN1bW1hcnktcmVwb3J0LmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBTdG9ja0lzc3VlU3VtbWFyeVJlcG9ydENvbXBvbmVudCBleHRlbmRzIFRlY2hsaWZ5TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW1xuICAgICcjJyxcbiAgICAncHJvZHVjdCcsXG4gICAgJ3NrdScsXG4gICAgJ2NhdGVnb3JpZXMnLFxuICAgICdzdG9ja19pc3N1ZXMnLFxuICAgICdzdG9ja19pc3N1ZXNfYXZjbydcbiAgXTtcblxuICBsb2NhdGlvbkdyb3VwcyA9IHNpZ25hbDxMb2NhdGlvbkdyb3VwW10+KFtdKTtcblxuICAvLyBGdWxsIGxvY2F0aW9uIG9iamVjdHMgZW1pdHRlZCBieSB0aGUgbG9jYXRpb24gc2VsZWN0b3Ig4oCUIGdpdmVzIHVzIHRoZVxuICAvLyB0aXRsZXMgZm9yIGVhY2ggdGFibGUgd2l0aG91dCBhIHNlcGFyYXRlIGxvY2F0aW9uIGxvb2t1cC5cbiAgc2VsZWN0ZWRMb2NhdGlvbnM6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNlcnZpY2U6IFN0b2NrSXNzdWVQcm9kdWN0RGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgc3VwZXIoc2VydmljZSk7XG5cbiAgICB0aGlzLmZpbHRlckZvcm1Db25maWd1cmF0aW9uID0ge1xuICAgICAgY2F0ZWdvcnlfaWRzOiB7IG11bHRpcGxlOiB0cnVlIH0sXG4gICAgICBsb2NhdGlvbl9pZHM6IHsgbXVsdGlwbGU6IHRydWUgfSxcbiAgICB9O1xuXG4gICAgdGhpcy5maWx0ZXJGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBjYXRlZ29yeV9pZHM6IFsnJ10sXG4gICAgICBkYXRlX2Zyb206IFsnJ10sXG4gICAgICBkYXRlX3RvOiBbJyddLFxuICAgICAgZHVyYXRpb246IFtUaW1lbGluZS5USElTX1lFQVJdLFxuICAgICAgZ3JvdXBfYnk6IFsncHJvZHVjdCddLFxuICAgICAgbG9jYXRpb25faWRzOiBbJyddLFxuICAgICAgc2VhcmNoOiBbJyddLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wYXRjaEZpbHRlcnNGcm9tUm91dGUoKTtcbiAgICB0aGlzLmxpc3RlbkZpbHRlckNoYW5nZXMoKTtcbiAgfVxuXG4gIG9uTG9jYXRpb25zQ2hhbmdlKGxvY2F0aW9uczogYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb25zID0gKGxvY2F0aW9ucyA/PyBbXSkuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBlYWNoIHNlbGVjdGVkIGxvY2F0aW9uIHdlIGhpdCB0aGUgQVBJIG9uY2UsIHNvIGV2ZXJ5IGxvY2F0aW9uIGdldHMgaXRzXG4gICAqIG93biBhZ2dyZWdhdGVkIHJlc3VsdCBzZXQgKGFuZCBpdHMgb3duIHRhYmxlKS4gRGF0YSBpcyBvbmx5IGxvYWRlZCBvbmNlIGF0XG4gICAqIGxlYXN0IG9uZSBsb2NhdGlvbiBpcyBzZWxlY3RlZC5cbiAgICovXG4gIG92ZXJyaWRlIGxvYWREYXRhKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzV29ya2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLnJlcXVlc3RIZWxwZXJTZXJ2aWNlLmNvbnZlcnRUb0Zvcm1EYXRhKFxuICAgICAgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZpbHRlckZvcm0udmFsdWUpKVxuICAgICk7XG5cbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmxvY2F0aW9uR3JvdXBzLnNldChbXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1dvcmtpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgYXBpUmVxdWVzdHMgPSB0aGlzLnNlbGVjdGVkTG9jYXRpb25zLm1hcCgobG9jYXRpb24pID0+XG4gICAgICB0aGlzLnNlcnZpY2VcbiAgICAgICAgLmluZGV4KHsgLi4uZmlsdGVycywgbG9jYXRpb25faWRzOiBsb2NhdGlvbi5pZCB9KVxuICAgICAgICAucGlwZShtYXAoKHJlczogYW55KTogTG9jYXRpb25Hcm91cCA9PiAoe1xuICAgICAgICAgIGxvY2F0aW9uLFxuICAgICAgICAgIG1vZGVsczogcmVzPy5kYXRhID8/IFtdLFxuICAgICAgICAgIGdyYW5kX3RvdGFsX2F2Y286IHJlcz8uZ3JhbmRfdG90YWxfYXZjbyxcbiAgICAgICAgICBncmFuZF90b3RhbF9xdWFudGl0eTogcmVzPy5ncmFuZF90b3RhbF9xdWFudGl0eVxuICAgICAgICB9KSkpXG4gICAgKTtcblxuICAgIGZvcmtKb2luKGFwaVJlcXVlc3RzKVxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gKHRoaXMuaXNXb3JraW5nID0gZmFsc2UpKSlcbiAgICAgIC5zdWJzY3JpYmUoKGdyb3VwcykgPT4gdGhpcy5sb2NhdGlvbkdyb3Vwcy5zZXQoZ3JvdXBzKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTJcIj5cbiAgPG1hdC1jYXJkPlxuICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgPGg1IGNsYXNzPVwibWItMFwiPlN0b2NrIElzc3VlIFN1bW1hcnkgUmVwb3J0PC9oNT5cblxuICAgICAgPGZvcm0gY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgZ2FwLTFcIiBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZmwtbWRcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPlNlYXJjaDwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBwcm9kdWN0c1wiIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPGFwcC10aW1lbGluZS1maWx0ZXIgYXBwZWFyYW5jZT1cImZpbGxcIiBsYWJlbFRleHQ9XCJQZXJpb2RcIiBmb3JtQ29udHJvbE5hbWU9XCJkdXJhdGlvblwiIFtmb3JtXT1cImZpbHRlckZvcm1cIlxuICAgICAgICAgIFtzaG93Q2xlYXJCdXR0b25dPVwidHJ1ZVwiPjwvYXBwLXRpbWVsaW5lLWZpbHRlcj5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1sYWJlbD5DYXRlZ29yeTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciBmb3JtQ29udHJvbE5hbWU9XCJjYXRlZ29yeV9pZHNcIiBhcGlVcmw9XCJhcGkvcHJvZHVjdC1jYXRlZ29yaWVzXCJcbiAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCI+PC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1sYWJlbD5Mb2NhdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciBmb3JtQ29udHJvbE5hbWU9XCJsb2NhdGlvbl9pZHNcIiBhcGlVcmw9XCJhcGkvaW52ZW50b3J5LWxvY2F0aW9uc1wiIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtpc0VtaXRJbml0aWFsRXZlbnRdPVwidHJ1ZVwiIChzZWxlY3RlZFZhbHVlQ2hhbmdlKT1cIm9uTG9jYXRpb25zQ2hhbmdlKCRldmVudClcIj48L2FwcC1zZWFyY2hhYmxlLXNlbGVjdG9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWxhYmVsPkdyb3VwIEJ5PC9tYXQtbGFiZWw+XG4gICAgICAgICAgPG1hdC1zZWxlY3QgcmVxdWlyZWQgZm9ybUNvbnRyb2xOYW1lPVwiZ3JvdXBfYnlcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwicHJvZHVjdFwiPlByb2R1Y3Q8L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9mb3JtPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cblxuICA8bWF0LWNhcmQgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGxvY2F0aW9uR3JvdXBzKClcIj5cbiAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cInAtMFwiPlxuICAgICAgPGg2IGNsYXNzPVwicHgtMyBwdC0zIG1iLTIgZnctYm9sZFwiPnt7IGdyb3VwLmxvY2F0aW9uPy50aXRsZSB9fTwvaDY+XG5cbiAgICAgIDx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiZ3JvdXAubW9kZWxzXCIgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIiNcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiM8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgaSA9IGluZGV4XCI+e3sgaSArIDEgfX08L3RkPlxuICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJwcm9kdWN0XCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5Qcm9kdWN0PC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiWycvaW52ZW50b3J5L3Byb2R1Y3RzJywgZWxlbWVudD8ucHJvZHVjdD8uaWQsICd2aWV3J11cIiBjbGFzcz1cInRleHQtZGFya1wiPlxuICAgICAgICAgICAgICB7eyBlbGVtZW50Py5wcm9kdWN0Py5uYW1lIH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPiA8c3Ryb25nPiBUb3RhbCA8L3N0cm9uZz4gPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJza3VcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlNLVTwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57eyBlbGVtZW50Py5wcm9kdWN0Py5za3UgfX08L3RkPlxuICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJjYXRlZ29yaWVzXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5DYXRlZ29yaWVzPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgICAgPGFwcC1wcm9kdWN0LWNhdGVnb3J5LWJhZGdlcyBbcHJvZHVjdF09XCJlbGVtZW50Py5wcm9kdWN0XCI+PC9hcHAtcHJvZHVjdC1jYXRlZ29yeS1iYWRnZXM+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPjwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3RvY2tfaXNzdWVzXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5TdG9jayBJc3N1ZXM8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8udG90YWxfcXVhbnRpdHkgfX08L3RkPlxuICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+IDxzdHJvbmc+IHt7IGdyb3VwPy5ncmFuZF90b3RhbF9xdWFudGl0eSB9fSA8L3N0cm9uZz4gPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdG9ja19pc3N1ZXNfYXZjb1wiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+U3RvY2sgSXNzdWVzIEFWQ088L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8udG90YWxfYXZjbyB8IGN1cnJlbmN5IH19PC90ZD5cbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPiA8c3Ryb25nPiB7eyBncm91cD8uZ3JhbmRfdG90YWxfYXZjbyB8IGN1cnJlbmN5IH19IDwvc3Ryb25nPiA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICAgIDx0ciBbaGlkZGVuXT1cIiFncm91cD8uZ3JhbmRfdG90YWxfYXZjbyAmJiAhZ3JvdXA/LmdyYW5kX3RvdGFsX3F1YW50aXR5XCIgbWF0LWZvb3Rlci1yb3dcbiAgICAgICAgICAqbWF0Rm9vdGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICA8L3RhYmxlPlxuXG4gICAgICA8cCAqbmdJZj1cIiFncm91cC5tb2RlbHMubGVuZ3RoXCIgY2xhc3M9XCJweC0zIHB5LTIgbWItMCB0ZXh0LXNlY29uZGFyeVwiPk5vIHN0b2NrIGlzc3VlcyBmb3IgdGhpcyBsb2NhdGlvbi48L3A+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8L21hdC1jYXJkPlxuXG4gIDxtYXQtY2FyZCAqbmdJZj1cIiFpc1dvcmtpbmcgJiYgIWxvY2F0aW9uR3JvdXBzKCkubGVuZ3RoXCI+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeSB0ZXh0LWNlbnRlciBweS00XCI+XG4gICAgICBTZWxlY3Qgb25lIG9yIG1vcmUgbG9jYXRpb25zIHRvIHZpZXcgdGhlIHJlcG9ydC5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gIDwvbWF0LWNhcmQ+XG5cbiAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAqbmdJZj1cImlzV29ya2luZ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cbjwvZGl2PlxuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWUtc3VtbWFyeS1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vcmVwb3J0cy9zdG9jay1pc3N1ZS1zdW1tYXJ5LXJlcG9ydC9zdG9jay1pc3N1ZS1zdW1tYXJ5LXJlcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9yZXBvcnRzL3N0b2NrLWlzc3VlLXN1bW1hcnktcmVwb3J0L3N0b2NrLWlzc3VlLXN1bW1hcnktcmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUZBQWlGLENBQUM7QUFFakksT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQW9CMUMsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLHFCQUFxQjtJQWtCcEQ7SUFDWDtJQWxCVixnQkFBZ0IsR0FBYTtRQUMzQixHQUFHO1FBQ0gsU0FBUztRQUNULEtBQUs7UUFDTCxZQUFZO1FBQ1osY0FBYztRQUNkLG1CQUFtQjtRQUNuQixZQUFZO0tBQ2IsQ0FBQztJQUVGLGNBQWMsR0FBRyxNQUFNLENBQWtCLEVBQUUsQ0FBQyxD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R0FwRlUsZ0NBQWdDOzRGQUFoQyxnQ0FBZ0MsaUhDM0I3Qyx1OUpBMkdBLHlERHRGSSxZQUFZLDQ5S0FDWiw4QkFBOEI7OzRGQUtyQixnQ0FBZ0M7a0JBVjVDLFNBQVM7K0JBQ0UsZ0NBQWdDLGNBQzlCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLDhCQUE4QjtxQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi8uLi9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IFRlY2hsaWZ5TGlzdENvbXBvbmVudCwgVGltZWxpbmUgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBTdG9ja0lzc3VlUHJvZHVjdERhdGFTZXJ2aWNlIH0gZnJvbSAnLi9zdG9jay1pc3N1ZS1wcm9kdWN0LWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9kdWN0Q2F0ZWdvcnlCYWRnZXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wcm9kdWN0L3dpZGdldHMvcHJvZHVjdC1jYXRlZ29yeS1iYWRnZXMvcHJvZHVjdC1jYXRlZ29yeS1iYWRnZXMuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmludGVyZmFjZSBMb2NhdGlvbkdyb3VwIHtcbiAgbG9jYXRpb246IGFueTtcbiAgbW9kZWxzOiBhbnlbXTtcbiAgZ3JhbmRfdG90YWxfcXVhbnRpdHk6IG51bWJlcjtcbiAgZ3JhbmRfdG90YWxfYXZjbzogbnVtYmVyO1xuICBncmFuZF90b3RhbF9maWZvX3ZhbHVlOiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zdG9jay1pc3N1ZS1zdW1tYXJ5LXJlcG9ydCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBTaGFyZWRNb2R1bGUsXG4gICAgUHJvZHVjdENhdGVnb3J5QmFkZ2VzQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RvY2staXNzdWUtc3VtbWFyeS1yZXBvcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc3RvY2staXNzdWUtc3VtbWFyeS1yZXBvcnQuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFN0b2NrSXNzdWVTdW1tYXJ5UmVwb3J0Q29tcG9uZW50IGV4dGVuZHMgVGVjaGxpZnlMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXG4gICAgJyMnLFxuICAgICdwcm9kdWN0JyxcbiAgICAnc2t1JyxcbiAgICAnY2F0ZWdvcmllcycsXG4gICAgJ3N0b2NrX2lzc3VlcycsXG4gICAgJ3N0b2NrX2lzc3Vlc19hdmNvJyxcbiAgICAndG90YWxfY29zdCdcbiAgXTtcblxuICBsb2NhdGlvbkdyb3VwcyA9IHNpZ25hbDxMb2NhdGlvbkdyb3VwW10+KFtdKTtcblxuICAvLyBGdWxsIGxvY2F0aW9uIG9iamVjdHMgZW1pdHRlZCBieSB0aGUgbG9jYXRpb24gc2VsZWN0b3Ig4oCUIGdpdmVzIHVzIHRoZVxuICAvLyB0aXRsZXMgZm9yIGVhY2ggdGFibGUgd2l0aG91dCBhIHNlcGFyYXRlIGxvY2F0aW9uIGxvb2t1cC5cbiAgc2VsZWN0ZWRMb2NhdGlvbnM6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNlcnZpY2U6IFN0b2NrSXNzdWVQcm9kdWN0RGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgc3VwZXIoc2VydmljZSk7XG5cbiAgICB0aGlzLmZpbHRlckZvcm1Db25maWd1cmF0aW9uID0ge1xuICAgICAgY2F0ZWdvcnlfaWRzOiB7IG11bHRpcGxlOiB0cnVlIH0sXG4gICAgICBsb2NhdGlvbl9pZHM6IHsgbXVsdGlwbGU6IHRydWUgfSxcbiAgICB9O1xuXG4gICAgdGhpcy5maWx0ZXJGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBjYXRlZ29yeV9pZHM6IFsnJ10sXG4gICAgICBkYXRlX2Zyb206IFsnJ10sXG4gICAgICBkYXRlX3RvOiBbJyddLFxuICAgICAgZHVyYXRpb246IFtUaW1lbGluZS5USElTX1lFQVJdLFxuICAgICAgZ3JvdXBfYnk6IFsncHJvZHVjdCddLFxuICAgICAgbG9jYXRpb25faWRzOiBbJyddLFxuICAgICAgc2VhcmNoOiBbJyddLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wYXRjaEZpbHRlcnNGcm9tUm91dGUoKTtcbiAgICB0aGlzLmxpc3RlbkZpbHRlckNoYW5nZXMoKTtcbiAgfVxuXG4gIG9uTG9jYXRpb25zQ2hhbmdlKGxvY2F0aW9uczogYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb25zID0gKGxvY2F0aW9ucyA/PyBbXSkuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBlYWNoIHNlbGVjdGVkIGxvY2F0aW9uIHdlIGhpdCB0aGUgQVBJIG9uY2UsIHNvIGV2ZXJ5IGxvY2F0aW9uIGdldHMgaXRzXG4gICAqIG93biBhZ2dyZWdhdGVkIHJlc3VsdCBzZXQgKGFuZCBpdHMgb3duIHRhYmxlKS4gRGF0YSBpcyBvbmx5IGxvYWRlZCBvbmNlIGF0XG4gICAqIGxlYXN0IG9uZSBsb2NhdGlvbiBpcyBzZWxlY3RlZC5cbiAgICovXG4gIG92ZXJyaWRlIGxvYWREYXRhKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzV29ya2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLnJlcXVlc3RIZWxwZXJTZXJ2aWNlLmNvbnZlcnRUb0Zvcm1EYXRhKFxuICAgICAgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZpbHRlckZvcm0udmFsdWUpKVxuICAgICk7XG5cbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmxvY2F0aW9uR3JvdXBzLnNldChbXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1dvcmtpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgYXBpUmVxdWVzdHMgPSB0aGlzLnNlbGVjdGVkTG9jYXRpb25zLm1hcCgobG9jYXRpb24pID0+XG4gICAgICB0aGlzLnNlcnZpY2VcbiAgICAgICAgLmluZGV4KHsgLi4uZmlsdGVycywgbG9jYXRpb25faWRzOiBsb2NhdGlvbi5pZCB9KVxuICAgICAgICAucGlwZShtYXAoKHJlczogYW55KTogTG9jYXRpb25Hcm91cCA9PiAoe1xuICAgICAgICAgIGxvY2F0aW9uLFxuICAgICAgICAgIG1vZGVsczogcmVzPy5kYXRhID8/IFtdLFxuICAgICAgICAgIGdyYW5kX3RvdGFsX2F2Y286IHJlcz8uZ3JhbmRfdG90YWxfYXZjbyxcbiAgICAgICAgICBncmFuZF90b3RhbF9xdWFudGl0eTogcmVzPy5ncmFuZF90b3RhbF9xdWFudGl0eSxcbiAgICAgICAgICBncmFuZF90b3RhbF9maWZvX3ZhbHVlOiByZXM/LmdyYW5kX3RvdGFsX2ZpZm9fdmFsdWVcbiAgICAgICAgfSkpKVxuICAgICk7XG5cbiAgICBmb3JrSm9pbihhcGlSZXF1ZXN0cylcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+ICh0aGlzLmlzV29ya2luZyA9IGZhbHNlKSkpXG4gICAgICAuc3Vic2NyaWJlKChncm91cHMpID0+IHRoaXMubG9jYXRpb25Hcm91cHMuc2V0KGdyb3VwcykpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yXCI+XG4gIDxtYXQtY2FyZD5cbiAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgIDxoNSBjbGFzcz1cIm1iLTBcIj5TdG9jayBJc3N1ZSBTdW1tYXJ5IFJlcG9ydDwvaDU+XG5cbiAgICAgIDxmb3JtIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGdhcC0xXCIgW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZsLW1kXCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD5TZWFyY2g8L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJTZWFyY2ggcHJvZHVjdHNcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hcIiAvPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxhcHAtdGltZWxpbmUtZmlsdGVyIGFwcGVhcmFuY2U9XCJmaWxsXCIgbGFiZWxUZXh0PVwiUGVyaW9kXCIgZm9ybUNvbnRyb2xOYW1lPVwiZHVyYXRpb25cIiBbZm9ybV09XCJmaWx0ZXJGb3JtXCJcbiAgICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cInRydWVcIj48L2FwcC10aW1lbGluZS1maWx0ZXI+XG5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtbGFiZWw+Q2F0ZWdvcnk8L21hdC1sYWJlbD5cbiAgICAgICAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3IgZm9ybUNvbnRyb2xOYW1lPVwiY2F0ZWdvcnlfaWRzXCIgYXBpVXJsPVwiYXBpL3Byb2R1Y3QtY2F0ZWdvcmllc1wiXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiPjwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtbGFiZWw+TG9jYXRpb248L21hdC1sYWJlbD5cbiAgICAgICAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3IgZm9ybUNvbnRyb2xOYW1lPVwibG9jYXRpb25faWRzXCIgYXBpVXJsPVwiYXBpL2ludmVudG9yeS1sb2NhdGlvbnNcIiBbbXVsdGlwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaXNFbWl0SW5pdGlhbEV2ZW50XT1cInRydWVcIiAoc2VsZWN0ZWRWYWx1ZUNoYW5nZSk9XCJvbkxvY2F0aW9uc0NoYW5nZSgkZXZlbnQpXCI+PC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1sYWJlbD5Hcm91cCBCeTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxtYXQtc2VsZWN0IHJlcXVpcmVkIGZvcm1Db250cm9sTmFtZT1cImdyb3VwX2J5XCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cInByb2R1Y3RcIj5Qcm9kdWN0PC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZm9ybT5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gIDwvbWF0LWNhcmQ+XG5cbiAgPG1hdC1jYXJkICpuZ0Zvcj1cImxldCBncm91cCBvZiBsb2NhdGlvbkdyb3VwcygpXCI+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwLTBcIj5cbiAgICAgIDxoNiBjbGFzcz1cInB4LTMgcHQtMyBtYi0yIGZ3LWJvbGRcIj57eyBncm91cC5sb2NhdGlvbj8udGl0bGUgfX08L2g2PlxuXG4gICAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImdyb3VwLm1vZGVsc1wiIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCIjXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4jPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IGkgPSBpbmRleFwiPnt7IGkgKyAxIH19PC90ZD5cbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPjwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicHJvZHVjdFwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+UHJvZHVjdDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnL2ludmVudG9yeS9wcm9kdWN0cycsIGVsZW1lbnQ/LnByb2R1Y3Q/LmlkLCAndmlldyddXCIgY2xhc3M9XCJ0ZXh0LWRhcmtcIj5cbiAgICAgICAgICAgICAge3sgZWxlbWVudD8ucHJvZHVjdD8ubmFtZSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj4gPHN0cm9uZz4gVG90YWwgPC9zdHJvbmc+IDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic2t1XCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5TS1U8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8ucHJvZHVjdD8uc2t1IH19PC90ZD5cbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPjwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiY2F0ZWdvcmllc1wiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+Q2F0ZWdvcmllczwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxhcHAtcHJvZHVjdC1jYXRlZ29yeS1iYWRnZXMgW3Byb2R1Y3RdPVwiZWxlbWVudD8ucHJvZHVjdFwiPjwvYXBwLXByb2R1Y3QtY2F0ZWdvcnktYmFkZ2VzPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj48L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN0b2NrX2lzc3Vlc1wiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+U3RvY2sgSXNzdWVzPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7IGVsZW1lbnQ/LnRvdGFsX3F1YW50aXR5IH19PC90ZD5cbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPiA8c3Ryb25nPiB7eyBncm91cD8uZ3JhbmRfdG90YWxfcXVhbnRpdHkgfX0gPC9zdHJvbmc+IDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3RvY2tfaXNzdWVzX2F2Y29cIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBUb3RhbCBDb3N0IChBVkNPKSA8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8udG90YWxfYXZjbyB8IGN1cnJlbmN5IH19PC90ZD5cbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPiA8c3Ryb25nPiB7eyBncm91cD8uZ3JhbmRfdG90YWxfYXZjbyB8IGN1cnJlbmN5IH19IDwvc3Ryb25nPiA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInRvdGFsX2Nvc3RcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBUb3RhbCBDb3N0IChGSUZPKSA8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8udG90YWxfZmlmb192YWx1ZSB8IGN1cnJlbmN5IH19PC90ZD5cbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPiA8c3Ryb25nPiB7eyBncm91cD8uZ3JhbmRfdG90YWxfZmlmb192YWx1ZSB8IGN1cnJlbmN5IH19IDwvc3Ryb25nPiA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICAgIDx0ciBbaGlkZGVuXT1cIiFncm91cD8uZ3JhbmRfdG90YWxfYXZjbyAmJiAhZ3JvdXA/LmdyYW5kX3RvdGFsX3F1YW50aXR5XCIgbWF0LWZvb3Rlci1yb3dcbiAgICAgICAgICAqbWF0Rm9vdGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICA8L3RhYmxlPlxuXG4gICAgICA8cCAqbmdJZj1cIiFncm91cC5tb2RlbHMubGVuZ3RoXCIgY2xhc3M9XCJweC0zIHB5LTIgbWItMCB0ZXh0LXNlY29uZGFyeVwiPk5vIHN0b2NrIGlzc3VlcyBmb3IgdGhpcyBsb2NhdGlvbi48L3A+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8L21hdC1jYXJkPlxuXG4gIDxtYXQtY2FyZCAqbmdJZj1cIiFpc1dvcmtpbmcgJiYgIWxvY2F0aW9uR3JvdXBzKCkubGVuZ3RoXCI+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeSB0ZXh0LWNlbnRlciBweS00XCI+XG4gICAgICBTZWxlY3Qgb25lIG9yIG1vcmUgbG9jYXRpb25zIHRvIHZpZXcgdGhlIHJlcG9ydC5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gIDwvbWF0LWNhcmQ+XG5cbiAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAqbmdJZj1cImlzV29ya2luZ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,81 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, effect, input, model } from '@angular/core';
3
+ import { UntilDestroy } from '@ngneat/until-destroy';
4
+ import { ColumnSelectorModule, TechlifyListComponent } from 'ngx-techlify-core';
5
+ import { SharedModule } from '../../shared.module';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../stock-allocation.service";
8
+ import * as i2 from "@angular/forms";
9
+ import * as i3 from "@angular/common";
10
+ import * as i4 from "ngx-infinite-scroll";
11
+ import * as i5 from "@angular/material/card";
12
+ import * as i6 from "@angular/material/progress-bar";
13
+ import * as i7 from "@angular/material/table";
14
+ import * as i8 from "@angular/router";
15
+ import * as i9 from "ngx-techlify-core";
16
+ let StockAllocationListComponent = class StockAllocationListComponent extends TechlifyListComponent {
17
+ service;
18
+ formBuilder;
19
+ stockIssueProductId = input(null);
20
+ stockReceiptProductId = input(null);
21
+ selectedColumns = model([]);
22
+ columnConfig = [
23
+ { label: '#', def: 'no', isSelected: true, isEditable: false },
24
+ { label: 'Receipt', def: 'receipt', isSelected: true, isEditable: false },
25
+ { label: 'Issue', def: 'issue', isSelected: true, isEditable: false },
26
+ { label: 'Date', def: 'date', isSelected: true, isEditable: true },
27
+ { label: 'Quantity', def: 'quantity', isSelected: true, isEditable: true },
28
+ { label: 'Purchase Price', def: 'purchase_price', isSelected: true, isEditable: true },
29
+ { label: 'Total Value', def: 'total_value', isSelected: true, isEditable: true },
30
+ ];
31
+ get displayedColumns() {
32
+ return this.selectedColumns().map(col => col.def);
33
+ }
34
+ constructor(service, formBuilder) {
35
+ super();
36
+ this.service = service;
37
+ this.formBuilder = formBuilder;
38
+ this.filterFormConfiguration = {};
39
+ this.filterForm = this.formBuilder.group({
40
+ sort_by: ['id|desc'],
41
+ });
42
+ effect(() => {
43
+ const stockIssueProductId = this.stockIssueProductId();
44
+ const stockReceiptProductId = this.stockReceiptProductId();
45
+ if (stockIssueProductId || stockReceiptProductId) {
46
+ this.reload();
47
+ }
48
+ });
49
+ }
50
+ ngOnInit() {
51
+ const isReceiptView = !!this.stockReceiptProductId();
52
+ this.columnConfig.find(col => col.def === 'receipt').isSelected = !isReceiptView;
53
+ this.columnConfig.find(col => col.def === 'issue').isSelected = isReceiptView;
54
+ this.selectedColumns.set(this.columnConfig.filter(col => col.isSelected));
55
+ }
56
+ loadData() {
57
+ const filters = {
58
+ ...this.filterForm.value,
59
+ page: this.page,
60
+ per_page: this.perPage,
61
+ };
62
+ if (this.stockIssueProductId()) {
63
+ filters.stock_issue_product_ids = this.stockIssueProductId();
64
+ }
65
+ if (this.stockReceiptProductId()) {
66
+ filters.stock_receipt_product_ids = this.stockReceiptProductId();
67
+ }
68
+ super.loadData(filters);
69
+ }
70
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockAllocationListComponent, deps: [{ token: i1.StockAllocationService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
71
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: StockAllocationListComponent, isStandalone: true, selector: "app-stock-allocation-list", inputs: { stockIssueProductId: { classPropertyName: "stockIssueProductId", publicName: "stockIssueProductId", isSignal: true, isRequired: false, transformFunction: null }, stockReceiptProductId: { classPropertyName: "stockReceiptProductId", publicName: "stockReceiptProductId", isSignal: true, isRequired: false, transformFunction: null }, selectedColumns: { classPropertyName: "selectedColumns", publicName: "selectedColumns", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedColumns: "selectedColumnsChange" }, usesInheritance: true, ngImport: i0, template: "<mat-card>\n <mat-card-header class=\"d-flex align-items-center gap-2\">\n <mat-card-title>Stock Allocations</mat-card-title>\n <app-column-selector *ngIf=\"columnConfig.length > 0\" mode=\"icon\" [columnConfigs]=\"columnConfig\"\n [(selectedColumns)]=\"selectedColumns\"></app-column-selector>\n </mat-card-header>\n\n <mat-card-content class=\"p-0\">\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Stock Allocations\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\">\n\n <ng-container matColumnDef=\"no\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"receipt\">\n <th mat-header-cell *matHeaderCellDef>Receipt</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/stock-receipts/products', element?.stock_receipt_product?.id, 'view']\">\n Receipt #{{ element?.stock_receipt_product?.stock_receipt_id }}\n <i class=\"fa-solid fa-up-right-from-square\"></i>\n </a>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"issue\">\n <th mat-header-cell *matHeaderCellDef>Issue</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/stock-issues/products', element?.stock_issue_product?.id, 'view']\">\n Issue #{{ element?.stock_issue_product?.stock_issue_id }}\n <i class=\"fa-solid fa-up-right-from-square\"></i>\n </a>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"quantity\">\n <th mat-header-cell *matHeaderCellDef>Quantity</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.quantity }} {{ element?.stock_receipt_product?.product?.measure?.title }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef>Date</th>\n <td mat-cell *matCellDef=\"let element\">\n <ng-container *ngIf=\"stockReceiptProductId()\">\n {{ element?.stock_issue_product?.stock_issue?.date | date }}\n </ng-container>\n <ng-container *ngIf=\"!stockReceiptProductId()\">\n {{ element?.stock_receipt_product?.stock_receipt?.date | date }}\n </ng-container>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"purchase_price\">\n <th mat-header-cell *matHeaderCellDef>Purchase Price</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.stock_receipt_product?.purchase_price | currency }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"total_value\">\n <th mat-header-cell *matHeaderCellDef>Total Value</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ (element?.quantity * element?.stock_receipt_product?.purchase_price) | currency }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <p *ngIf=\"!isWorking && models.length === 0\" class=\"text-secondary text-center my-3\">\n No allocations found.\n </p>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: SharedModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i5.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i6.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i8.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "ngmodule", type: ColumnSelectorModule }, { kind: "component", type: i9.ColumnSelectorComponent, selector: "app-column-selector", inputs: ["label", "mode", "columnConfigs", "selectedColumns", "isExportWorking"], outputs: ["selectedColumnsChange", "displayedColumnsChange"] }], preserveWhitespaces: true });
72
+ };
73
+ StockAllocationListComponent = __decorate([
74
+ UntilDestroy()
75
+ ], StockAllocationListComponent);
76
+ export { StockAllocationListComponent };
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockAllocationListComponent, decorators: [{
78
+ type: Component,
79
+ args: [{ selector: 'app-stock-allocation-list', standalone: true, imports: [SharedModule, ColumnSelectorModule], template: "<mat-card>\n <mat-card-header class=\"d-flex align-items-center gap-2\">\n <mat-card-title>Stock Allocations</mat-card-title>\n <app-column-selector *ngIf=\"columnConfig.length > 0\" mode=\"icon\" [columnConfigs]=\"columnConfig\"\n [(selectedColumns)]=\"selectedColumns\"></app-column-selector>\n </mat-card-header>\n\n <mat-card-content class=\"p-0\">\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Stock Allocations\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\">\n\n <ng-container matColumnDef=\"no\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"receipt\">\n <th mat-header-cell *matHeaderCellDef>Receipt</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/stock-receipts/products', element?.stock_receipt_product?.id, 'view']\">\n Receipt #{{ element?.stock_receipt_product?.stock_receipt_id }}\n <i class=\"fa-solid fa-up-right-from-square\"></i>\n </a>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"issue\">\n <th mat-header-cell *matHeaderCellDef>Issue</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/stock-issues/products', element?.stock_issue_product?.id, 'view']\">\n Issue #{{ element?.stock_issue_product?.stock_issue_id }}\n <i class=\"fa-solid fa-up-right-from-square\"></i>\n </a>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"quantity\">\n <th mat-header-cell *matHeaderCellDef>Quantity</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.quantity }} {{ element?.stock_receipt_product?.product?.measure?.title }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef>Date</th>\n <td mat-cell *matCellDef=\"let element\">\n <ng-container *ngIf=\"stockReceiptProductId()\">\n {{ element?.stock_issue_product?.stock_issue?.date | date }}\n </ng-container>\n <ng-container *ngIf=\"!stockReceiptProductId()\">\n {{ element?.stock_receipt_product?.stock_receipt?.date | date }}\n </ng-container>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"purchase_price\">\n <th mat-header-cell *matHeaderCellDef>Purchase Price</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.stock_receipt_product?.purchase_price | currency }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"total_value\">\n <th mat-header-cell *matHeaderCellDef>Total Value</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ (element?.quantity * element?.stock_receipt_product?.purchase_price) | currency }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <p *ngIf=\"!isWorking && models.length === 0\" class=\"text-secondary text-center my-3\">\n No allocations found.\n </p>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n" }]
80
+ }], ctorParameters: () => [{ type: i1.StockAllocationService }, { type: i2.FormBuilder }] });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stYWxsb2NhdGlvbi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLWFsbG9jYXRpb24vc3RvY2stYWxsb2NhdGlvbi1saXN0L3N0b2NrLWFsbG9jYXRpb24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay1hbGxvY2F0aW9uL3N0b2NrLWFsbG9jYXRpb24tbGlzdC9zdG9jay1hbGxvY2F0aW9uLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBZ0Isb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7O0FBVzVDLElBQU0sNEJBQTRCLEdBQWxDLE1BQU0sNEJBQTZCLFNBQVEscUJBQXFCO0lBcUJoRDtJQUNYO0lBckJWLG1CQUFtQixHQUFHLEtBQUssQ0FBZ0IsSUFBSSxDQUFDLENBQUM7SUFDakQscUJBQXFCLEdBQUcsS0FBSyxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUVuRCxlQUFlLEdBQUcsS0FBSyxDQUFpQixFQUFFLENBQUMsQ0FBQztJQUU1QyxZQUFZLEdBQW1CO1FBQzdCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJ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TyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQy9ELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQUM7WUFDakMsT0FBTyxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ25FLENBQUM7UUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLENBQUM7d0dBL0RVLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLCtvQkNmekMsK2pIQWtGQSx5RER2RVksWUFBWSwyM0VBQUUsb0JBQW9COztBQUlqQyw0QkFBNEI7SUFSeEMsWUFBWSxFQUFFO0dBUUYsNEJBQTRCLENBZ0V4Qzs7NEZBaEVZLDRCQUE0QjtrQkFQeEMsU0FBUzsrQkFDRSwyQkFBMkIsY0FDekIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGVmZmVjdCwgaW5wdXQsIG1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBDb2x1bW5Db25maWcsIENvbHVtblNlbGVjdG9yTW9kdWxlLCBUZWNobGlmeUxpc3RDb21wb25lbnQgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi8uLi9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IFN0b2NrQWxsb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zdG9jay1hbGxvY2F0aW9uLnNlcnZpY2UnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zdG9jay1hbGxvY2F0aW9uLWxpc3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbU2hhcmVkTW9kdWxlLCBDb2x1bW5TZWxlY3Rvck1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zdG9jay1hbGxvY2F0aW9uLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdG9jay1hbGxvY2F0aW9uLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tBbGxvY2F0aW9uTGlzdENvbXBvbmVudCBleHRlbmRzIFRlY2hsaWZ5TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHN0b2NrSXNzdWVQcm9kdWN0SWQgPSBpbnB1dDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgc3RvY2tSZWNlaXB0UHJvZHVjdElkID0gaW5wdXQ8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgc2VsZWN0ZWRDb2x1bW5zID0gbW9kZWw8Q29sdW1uQ29uZmlnW10+KFtdKTtcblxuICBjb2x1bW5Db25maWc6IENvbHVtbkNvbmZpZ1tdID0gW1xuICAgIHsgbGFiZWw6ICcjJywgZGVmOiAnbm8nLCBpc1NlbGVjdGVkOiB0cnVlLCBpc0VkaXRhYmxlOiBmYWxzZSB9LFxuICAgIHsgbGFiZWw6ICdSZWNlaXB0JywgZGVmOiAncmVjZWlwdCcsIGlzU2VsZWN0ZWQ6IHRydWUsIGlzRWRpdGFibGU6IGZhbHNlIH0sXG4gICAgeyBsYWJlbDogJ0lzc3VlJywgZGVmOiAnaXNzdWUnLCBpc1NlbGVjdGVkOiB0cnVlLCBpc0VkaXRhYmxlOiBmYWxzZSB9LFxuICAgIHsgbGFiZWw6ICdEYXRlJywgZGVmOiAnZGF0ZScsIGlzU2VsZWN0ZWQ6IHRydWUsIGlzRWRpdGFibGU6IHRydWUgfSxcbiAgICB7IGxhYmVsOiAnUXVhbnRpdHknLCBkZWY6ICdxdWFudGl0eScsIGlzU2VsZWN0ZWQ6IHRydWUsIGlzRWRpdGFibGU6IHRydWUgfSxcbiAgICB7IGxhYmVsOiAnUHVyY2hhc2UgUHJpY2UnLCBkZWY6ICdwdXJjaGFzZV9wcmljZScsIGlzU2VsZWN0ZWQ6IHRydWUsIGlzRWRpdGFibGU6IHRydWUgfSxcbiAgICB7IGxhYmVsOiAnVG90YWwgVmFsdWUnLCBkZWY6ICd0b3RhbF92YWx1ZScsIGlzU2VsZWN0ZWQ6IHRydWUsIGlzRWRpdGFibGU6IHRydWUgfSxcbiAgXTtcblxuICBnZXQgZGlzcGxheWVkQ29sdW1ucygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRDb2x1bW5zKCkubWFwKGNvbCA9PiBjb2wuZGVmKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzZXJ2aWNlOiBTdG9ja0FsbG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmZpbHRlckZvcm1Db25maWd1cmF0aW9uID0ge307XG4gICAgdGhpcy5maWx0ZXJGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBzb3J0X2J5OiBbJ2lkfGRlc2MnXSxcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzdG9ja0lzc3VlUHJvZHVjdElkID0gdGhpcy5zdG9ja0lzc3VlUHJvZHVjdElkKCk7XG4gICAgICBjb25zdCBzdG9ja1JlY2VpcHRQcm9kdWN0SWQgPSB0aGlzLnN0b2NrUmVjZWlwdFByb2R1Y3RJZCgpO1xuICAgICAgaWYgKHN0b2NrSXNzdWVQcm9kdWN0SWQgfHwgc3RvY2tSZWNlaXB0UHJvZHVjdElkKSB7XG4gICAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBpc1JlY2VpcHRWaWV3ID0gISF0aGlzLnN0b2NrUmVjZWlwdFByb2R1Y3RJZCgpO1xuICAgIHRoaXMuY29sdW1uQ29uZmlnLmZpbmQoY29sID0+IGNvbC5kZWYgPT09ICdyZWNlaXB0JykhLmlzU2VsZWN0ZWQgPSAhaXNSZWNlaXB0VmlldztcbiAgICB0aGlzLmNvbHVtbkNvbmZpZy5maW5kKGNvbCA9PiBjb2wuZGVmID09PSAnaXNzdWUnKSEuaXNTZWxlY3RlZCA9IGlzUmVjZWlwdFZpZXc7XG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMuc2V0KHRoaXMuY29sdW1uQ29uZmlnLmZpbHRlcihjb2wgPT4gY29sLmlzU2VsZWN0ZWQpKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGxvYWREYXRhKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlcnM6IGFueSA9IHtcbiAgICAgIC4uLnRoaXMuZmlsdGVyRm9ybS52YWx1ZSxcbiAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgIHBlcl9wYWdlOiB0aGlzLnBlclBhZ2UsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnN0b2NrSXNzdWVQcm9kdWN0SWQoKSkge1xuICAgICAgZmlsdGVycy5zdG9ja19pc3N1ZV9wcm9kdWN0X2lkcyA9IHRoaXMuc3RvY2tJc3N1ZVByb2R1Y3RJZCgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0b2NrUmVjZWlwdFByb2R1Y3RJZCgpKSB7XG4gICAgICBmaWx0ZXJzLnN0b2NrX3JlY2VpcHRfcHJvZHVjdF9pZHMgPSB0aGlzLnN0b2NrUmVjZWlwdFByb2R1Y3RJZCgpO1xuICAgIH1cblxuICAgIHN1cGVyLmxvYWREYXRhKGZpbHRlcnMpO1xuICB9XG59XG4iLCI8bWF0LWNhcmQ+XG4gIDxtYXQtY2FyZC1oZWFkZXIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgPG1hdC1jYXJkLXRpdGxlPlN0b2NrIEFsbG9jYXRpb25zPC9tYXQtY2FyZC10aXRsZT5cbiAgICA8YXBwLWNvbHVtbi1zZWxlY3RvciAqbmdJZj1cImNvbHVtbkNvbmZpZy5sZW5ndGggPiAwXCIgbW9kZT1cImljb25cIiBbY29sdW1uQ29uZmlnc109XCJjb2x1bW5Db25maWdcIlxuICAgICAgWyhzZWxlY3RlZENvbHVtbnMpXT1cInNlbGVjdGVkQ29sdW1uc1wiPjwvYXBwLWNvbHVtbi1zZWxlY3Rvcj5cbiAgPC9tYXQtY2FyZC1oZWFkZXI+XG5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwLTBcIj5cbiAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cIm1vZGVsc1wiIGNsYXNzPVwidy0xMDBcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiU3RvY2sgQWxsb2NhdGlvbnNcIiBpbmZpbml0ZVNjcm9sbFxuICAgICAgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiMlwiIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cIjUwXCIgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsKClcIj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJub1wiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiM8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IGkgPSBpbmRleFwiPnt7IGkgKyAxIH19PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInJlY2VpcHRcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5SZWNlaXB0PC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8YSBjbGFzcz1cInRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtZGFya1wiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9pbnZlbnRvcnkvc3RvY2stcmVjZWlwdHMvcHJvZHVjdHMnLCBlbGVtZW50Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3Q/LmlkLCAndmlldyddXCI+XG4gICAgICAgICAgICBSZWNlaXB0ICN7eyBlbGVtZW50Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3Q/LnN0b2NrX3JlY2VpcHRfaWQgfX1cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtdXAtcmlnaHQtZnJvbS1zcXVhcmVcIj48L2k+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiaXNzdWVcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5Jc3N1ZTwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWRhcmtcIlxuICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvaW52ZW50b3J5L3N0b2NrLWlzc3Vlcy9wcm9kdWN0cycsIGVsZW1lbnQ/LnN0b2NrX2lzc3VlX3Byb2R1Y3Q/LmlkLCAndmlldyddXCI+XG4gICAgICAgICAgICBJc3N1ZSAje3sgZWxlbWVudD8uc3RvY2tfaXNzdWVfcHJvZHVjdD8uc3RvY2tfaXNzdWVfaWQgfX1cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtdXAtcmlnaHQtZnJvbS1zcXVhcmVcIj48L2k+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicXVhbnRpdHlcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5RdWFudGl0eTwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAge3sgZWxlbWVudD8ucXVhbnRpdHkgfX0ge3sgZWxlbWVudD8uc3RvY2tfcmVjZWlwdF9wcm9kdWN0Py5wcm9kdWN0Py5tZWFzdXJlPy50aXRsZSB9fVxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZGF0ZVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPkRhdGU8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9ja1JlY2VpcHRQcm9kdWN0SWQoKVwiPlxuICAgICAgICAgICAge3sgZWxlbWVudD8uc3RvY2tfaXNzdWVfcHJvZHVjdD8uc3RvY2tfaXNzdWU/LmRhdGUgfCBkYXRlIH19XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdG9ja1JlY2VpcHRQcm9kdWN0SWQoKVwiPlxuICAgICAgICAgICAge3sgZWxlbWVudD8uc3RvY2tfcmVjZWlwdF9wcm9kdWN0Py5zdG9ja19yZWNlaXB0Py5kYXRlIHwgZGF0ZSB9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicHVyY2hhc2VfcHJpY2VcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5QdXJjaGFzZSBQcmljZTwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAge3sgZWxlbWVudD8uc3RvY2tfcmVjZWlwdF9wcm9kdWN0Py5wdXJjaGFzZV9wcmljZSB8IGN1cnJlbmN5IH19XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ0b3RhbF92YWx1ZVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlRvdGFsIFZhbHVlPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICB7eyAoZWxlbWVudD8ucXVhbnRpdHkgKiBlbGVtZW50Py5zdG9ja19yZWNlaXB0X3Byb2R1Y3Q/LnB1cmNoYXNlX3ByaWNlKSB8IGN1cnJlbmN5IH19XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICA8L3RhYmxlPlxuXG4gICAgPHAgKm5nSWY9XCIhaXNXb3JraW5nICYmIG1vZGVscy5sZW5ndGggPT09IDBcIiBjbGFzcz1cInRleHQtc2Vjb25kYXJ5IHRleHQtY2VudGVyIG15LTNcIj5cbiAgICAgIE5vIGFsbG9jYXRpb25zIGZvdW5kLlxuICAgIDwvcD5cblxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNXb3JraW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gIDwvbWF0LWNhcmQtY29udGVudD5cbjwvbWF0LWNhcmQ+XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { TechlifyService } from 'ngx-techlify-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "ngx-techlify-core";
5
+ export class StockAllocationService extends TechlifyService {
6
+ constructor(httpService) {
7
+ super(httpService, 'stock-allocations');
8
+ }
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockAllocationService, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
10
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockAllocationService, providedIn: 'root' });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockAllocationService, decorators: [{
13
+ type: Injectable,
14
+ args: [{ providedIn: 'root' }]
15
+ }], ctorParameters: () => [{ type: i1.HttpService }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stYWxsb2NhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2stYWxsb2NhdGlvbi9zdG9jay1hbGxvY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQUdqRSxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsZUFBZTtJQUN6RCxZQUFZLFdBQXdCO1FBQ2xDLEtBQUssQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUMxQyxDQUFDO3dHQUhVLHNCQUFzQjs0R0FBdEIsc0JBQXNCLGNBRFQsTUFBTTs7NEZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSwgVGVjaGxpZnlTZXJ2aWNlIH0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFN0b2NrQWxsb2NhdGlvblNlcnZpY2UgZXh0ZW5kcyBUZWNobGlmeVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihodHRwU2VydmljZTogSHR0cFNlcnZpY2UpIHtcbiAgICBzdXBlcihodHRwU2VydmljZSwgJ3N0b2NrLWFsbG9jYXRpb25zJyk7XG4gIH1cbn1cbiJdfQ==