techlify-inventory-common 18.49.0 → 18.50.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.
- package/esm2022/lib/inventory-common/location/location-form/location-form.component.mjs +3 -3
- package/esm2022/lib/inventory-common/location/location.service.mjs +3 -3
- package/esm2022/lib/inventory-common/location/shelf/shelf-form/shelf-form.component.mjs +3 -3
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-form/stock-issue-form.component.mjs +10 -6
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-product-form/stock-issue-product-form.component.mjs +3 -3
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-single-product-form/stock-issue-single-product-form.component.mjs +4 -4
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.component.mjs +8 -6
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form.component.mjs +3 -3
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-single-product-form/stock-receipt-simple-form/stock-receipt-single-product-form.component.mjs +4 -6
- package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-form/stock-transfer-form.component.mjs +3 -3
- package/fesm2022/{techlify-inventory-common-category.module-BBpgG9L3.mjs → techlify-inventory-common-category.module-CGzFP2S_.mjs} +2 -2
- package/fesm2022/{techlify-inventory-common-category.module-BBpgG9L3.mjs.map → techlify-inventory-common-category.module-CGzFP2S_.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-purchase-order-view.component-6qbMJdAs.mjs → techlify-inventory-common-purchase-order-view.component-5mLg0IvH.mjs} +2 -2
- package/fesm2022/{techlify-inventory-common-purchase-order-view.component-6qbMJdAs.mjs.map → techlify-inventory-common-purchase-order-view.component-5mLg0IvH.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-recipient.module-DsYw54Uj.mjs → techlify-inventory-common-recipient.module-DLoP6xI3.mjs} +2 -2
- package/fesm2022/{techlify-inventory-common-recipient.module-DsYw54Uj.mjs.map → techlify-inventory-common-recipient.module-DLoP6xI3.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-stock-issue-form.component-C3RoFfcY.mjs → techlify-inventory-common-stock-issue-form.component-MYEKRteU.mjs} +11 -6
- package/fesm2022/techlify-inventory-common-stock-issue-form.component-MYEKRteU.mjs.map +1 -0
- package/fesm2022/{techlify-inventory-common-stock-issue-product-view.component-b_8gpI7x.mjs → techlify-inventory-common-stock-issue-product-view.component-C-c83FEn.mjs} +2 -2
- package/fesm2022/{techlify-inventory-common-stock-issue-product-view.component-b_8gpI7x.mjs.map → techlify-inventory-common-stock-issue-product-view.component-C-c83FEn.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-stock-issue-view.component-BDOR4X49.mjs → techlify-inventory-common-stock-issue-view.component-Co7hXpDq.mjs} +2 -2
- package/fesm2022/{techlify-inventory-common-stock-issue-view.component-BDOR4X49.mjs.map → techlify-inventory-common-stock-issue-view.component-Co7hXpDq.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-techlify-inventory-common-Bveawfj2.mjs → techlify-inventory-common-techlify-inventory-common-CWxzlvVi.mjs} +78 -224
- package/fesm2022/techlify-inventory-common-techlify-inventory-common-CWxzlvVi.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common.mjs +1 -1
- package/lib/inventory-common/location/location.service.d.ts +1 -1
- package/lib/inventory-common/stock-issue/stock-issue-form/stock-issue-form.component.d.ts +1 -0
- package/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.component.d.ts +1 -0
- package/package.json +1 -1
- package/esm2022/lib/inventory-common/location/location-selector/location-selector.component.mjs +0 -161
- package/fesm2022/techlify-inventory-common-stock-issue-form.component-C3RoFfcY.mjs.map +0 -1
- package/fesm2022/techlify-inventory-common-techlify-inventory-common-Bveawfj2.mjs.map +0 -1
- package/lib/inventory-common/location/location-selector/location-selector.component.d.ts +0 -46
|
@@ -79,7 +79,7 @@ export class StockIssueProductFormComponent extends TechlifyFormComponent {
|
|
|
79
79
|
this.dialogRef.close();
|
|
80
80
|
}
|
|
81
81
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockIssueProductFormComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.FormBuilder }, { token: i3.StockIssueProductService }, { token: i4.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
82
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: StockIssueProductFormComponent, isStandalone: true, selector: "app-stock-issue-product-form", viewQueries: [{ propertyName: "batchSelector", first: true, predicate: ["batchSelector"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<h3 mat-dialog-title class='text-center'>Stock Issue Product Form</h3>\n\n<mat-dialog-content>\n <form [formGroup]=\"form\" (submit)=\"submit(form.getRawValue())\" class=\"d-flex flex-column gap-3 mt-2\">\n\n <mat-form-field class=\"w-100\">\n <mat-label>Product</mat-label>\n <app-searchable-selector formControlName=\"product_id\" apiUrl=\"api/products\" titleField=\"name\"\n [selectedValue]=\"data?.product\" [cache]=\"true\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('product_id')\">{{ getErrorMessage('product_id') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Quantity</mat-label>\n <input matInput type=\"number\" formControlName=\"quantity\" min=\"0\" step=\"any\">\n <mat-error *ngIf=\"isFieldValid('quantity')\">{{ getErrorMessage('quantity') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Location</mat-label>\n <app-searchable-selector formControlName=\"location_from_id\" apiUrl=\"api/inventory-locations\"\n [selectedValue]=\"data.stockIssueProduct?.location\" titleField=\"title\"></app-searchable-selector>\n </mat-form-field>\n\n <ng-container *ngIf=\"form.value?.location_from_id && batchesApiUrl\">\n <mat-form-field class=\"w-100\" techlifyFeatureEnabled=\"product-batch-numbers\">\n <mat-label>Batch</mat-label>\n <app-searchable-selector #batchSelector formControlName=\"batch_id\"\n [apiUrl]=\"batchesApiUrl\" [enableSearch]=\"false\"\n (itemsChange)=\"onBatchItemsChange()\">\n </app-searchable-selector>\n </mat-form-field>\n </ng-container>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end gap-2\">\n <button mat-flat-button type=\"button\" [disabled]=\"isWorking\" (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isWorking\">Save</button>\n </div>\n\n </form>\n</mat-dialog-content>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { 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: "ngmodule", type: MaterialModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.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: "ngmodule", type: SearchableSelectorModule }, { kind: "component", type: i1.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", "isItemsEmpty"] }, { kind: "ngmodule", type: TechlifyFeatureModule }, { kind: "directive", type: i1.TechlifyFeatureEnabledDirective, selector: "[techlifyFeatureEnabled]", inputs: ["techlifyFeatureEnabled"] }], preserveWhitespaces: true });
|
|
82
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: StockIssueProductFormComponent, isStandalone: true, selector: "app-stock-issue-product-form", viewQueries: [{ propertyName: "batchSelector", first: true, predicate: ["batchSelector"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<h3 mat-dialog-title class='text-center'>Stock Issue Product Form</h3>\n\n<mat-dialog-content>\n <form [formGroup]=\"form\" (submit)=\"submit(form.getRawValue())\" class=\"d-flex flex-column gap-3 mt-2\">\n\n <mat-form-field class=\"w-100\">\n <mat-label>Product</mat-label>\n <app-searchable-selector formControlName=\"product_id\" apiUrl=\"api/products\" titleField=\"name\"\n [selectedValue]=\"data?.product\" [cache]=\"true\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('product_id')\">{{ getErrorMessage('product_id') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Quantity</mat-label>\n <input matInput type=\"number\" formControlName=\"quantity\" min=\"0\" step=\"any\">\n <mat-error *ngIf=\"isFieldValid('quantity')\">{{ getErrorMessage('quantity') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Location</mat-label>\n <app-searchable-selector formControlName=\"location_from_id\" apiUrl=\"api/inventory-locations?status_ids=1\"\n [selectedValue]=\"data.stockIssueProduct?.location\" titleField=\"title\"></app-searchable-selector>\n </mat-form-field>\n\n <ng-container *ngIf=\"form.value?.location_from_id && batchesApiUrl\">\n <mat-form-field class=\"w-100\" techlifyFeatureEnabled=\"product-batch-numbers\">\n <mat-label>Batch</mat-label>\n <app-searchable-selector #batchSelector formControlName=\"batch_id\"\n [apiUrl]=\"batchesApiUrl\" [enableSearch]=\"false\"\n (itemsChange)=\"onBatchItemsChange()\">\n </app-searchable-selector>\n </mat-form-field>\n </ng-container>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end gap-2\">\n <button mat-flat-button type=\"button\" [disabled]=\"isWorking\" (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isWorking\">Save</button>\n </div>\n\n </form>\n</mat-dialog-content>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { 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: "ngmodule", type: MaterialModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.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: "ngmodule", type: SearchableSelectorModule }, { kind: "component", type: i1.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", "isItemsEmpty"] }, { kind: "ngmodule", type: TechlifyFeatureModule }, { kind: "directive", type: i1.TechlifyFeatureEnabledDirective, selector: "[techlifyFeatureEnabled]", inputs: ["techlifyFeatureEnabled"] }], preserveWhitespaces: true });
|
|
83
83
|
}
|
|
84
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockIssueProductFormComponent, decorators: [{
|
|
85
85
|
type: Component,
|
|
@@ -91,7 +91,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
91
91
|
TechlifyFeatureModule,
|
|
92
92
|
MatDialogTitle,
|
|
93
93
|
MatDialogContent,
|
|
94
|
-
], template: "<h3 mat-dialog-title class='text-center'>Stock Issue Product Form</h3>\n\n<mat-dialog-content>\n <form [formGroup]=\"form\" (submit)=\"submit(form.getRawValue())\" class=\"d-flex flex-column gap-3 mt-2\">\n\n <mat-form-field class=\"w-100\">\n <mat-label>Product</mat-label>\n <app-searchable-selector formControlName=\"product_id\" apiUrl=\"api/products\" titleField=\"name\"\n [selectedValue]=\"data?.product\" [cache]=\"true\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('product_id')\">{{ getErrorMessage('product_id') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Quantity</mat-label>\n <input matInput type=\"number\" formControlName=\"quantity\" min=\"0\" step=\"any\">\n <mat-error *ngIf=\"isFieldValid('quantity')\">{{ getErrorMessage('quantity') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Location</mat-label>\n <app-searchable-selector formControlName=\"location_from_id\" apiUrl=\"api/inventory-locations\"\n [selectedValue]=\"data.stockIssueProduct?.location\" titleField=\"title\"></app-searchable-selector>\n </mat-form-field>\n\n <ng-container *ngIf=\"form.value?.location_from_id && batchesApiUrl\">\n <mat-form-field class=\"w-100\" techlifyFeatureEnabled=\"product-batch-numbers\">\n <mat-label>Batch</mat-label>\n <app-searchable-selector #batchSelector formControlName=\"batch_id\"\n [apiUrl]=\"batchesApiUrl\" [enableSearch]=\"false\"\n (itemsChange)=\"onBatchItemsChange()\">\n </app-searchable-selector>\n </mat-form-field>\n </ng-container>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end gap-2\">\n <button mat-flat-button type=\"button\" [disabled]=\"isWorking\" (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isWorking\">Save</button>\n </div>\n\n </form>\n</mat-dialog-content>\n" }]
|
|
94
|
+
], template: "<h3 mat-dialog-title class='text-center'>Stock Issue Product Form</h3>\n\n<mat-dialog-content>\n <form [formGroup]=\"form\" (submit)=\"submit(form.getRawValue())\" class=\"d-flex flex-column gap-3 mt-2\">\n\n <mat-form-field class=\"w-100\">\n <mat-label>Product</mat-label>\n <app-searchable-selector formControlName=\"product_id\" apiUrl=\"api/products\" titleField=\"name\"\n [selectedValue]=\"data?.product\" [cache]=\"true\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('product_id')\">{{ getErrorMessage('product_id') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Quantity</mat-label>\n <input matInput type=\"number\" formControlName=\"quantity\" min=\"0\" step=\"any\">\n <mat-error *ngIf=\"isFieldValid('quantity')\">{{ getErrorMessage('quantity') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Location</mat-label>\n <app-searchable-selector formControlName=\"location_from_id\" apiUrl=\"api/inventory-locations?status_ids=1\"\n [selectedValue]=\"data.stockIssueProduct?.location\" titleField=\"title\"></app-searchable-selector>\n </mat-form-field>\n\n <ng-container *ngIf=\"form.value?.location_from_id && batchesApiUrl\">\n <mat-form-field class=\"w-100\" techlifyFeatureEnabled=\"product-batch-numbers\">\n <mat-label>Batch</mat-label>\n <app-searchable-selector #batchSelector formControlName=\"batch_id\"\n [apiUrl]=\"batchesApiUrl\" [enableSearch]=\"false\"\n (itemsChange)=\"onBatchItemsChange()\">\n </app-searchable-selector>\n </mat-form-field>\n </ng-container>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end gap-2\">\n <button mat-flat-button type=\"button\" [disabled]=\"isWorking\" (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isWorking\">Save</button>\n </div>\n\n </form>\n</mat-dialog-content>\n" }]
|
|
95
95
|
}], ctorParameters: () => [{ type: i1.FormValidatorService }, { type: i2.FormBuilder }, { type: i3.StockIssueProductService }, { type: i4.MatDialogRef }, { type: undefined, decorators: [{
|
|
96
96
|
type: Inject,
|
|
97
97
|
args: [MAT_DIALOG_DATA]
|
|
@@ -99,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
99
99
|
type: ViewChild,
|
|
100
100
|
args: ['batchSelector']
|
|
101
101
|
}] } });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWUtcHJvZHVjdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLWlzc3VlL3N0b2NrLWlzc3VlLXByb2R1Y3QtZm9ybS9zdG9jay1pc3N1ZS1wcm9kdWN0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2staXNzdWUvc3RvY2staXNzdWUtcHJvZHVjdC1mb3JtL3N0b2NrLWlzc3VlLXByb2R1Y3QtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBR0wsd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixxQkFBcUIsR0FDdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFnQixjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQWdCMUQsTUFBTSxPQUFPLDhCQUErQixTQUFRLHFCQUFxQjtJQVE3RDtJQUNXO0lBRWE7SUFWTixhQUFhLENBQStCO0lBRXhFLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDbkIsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUV2QixZQUNFLG9CQUEwQyxFQUNsQyxFQUFlLEVBQ0osT0FBaUMsRUFDcEQsU0FBdUQsRUFDdkIsSUFBUztRQUV6QyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUxwQixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ0osWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFFcEIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUd6QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUUzQixJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRTtZQUNoRCxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxFQUFFLDhDQUE4QyxFQUFFO1NBQ3JHLENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3hCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNSLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3pDLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3JDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELGdCQUFnQixFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3RCLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNkLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUVqRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQ2xELFlBQVksQ0FBQyxFQUFFLENBQUMsRUFDaEIsb0JBQW9CLEVBQUUsQ0FDdkIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNoQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRCxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUN6RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFVBQWtCLEVBQUUsS0FBSyxHQUFHLElBQUk7UUFDekQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLDBDQUEwQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRTlGLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzFCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN2QixJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztnQkFDMUMsQ0FBQztnQkFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUMvQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO3dHQTdFVSw4QkFBOEIscUpBVy9CLGVBQWU7NEZBWGQsOEJBQThCLCtOQzdCM0MsNDFFQThDQSwyQ0QxQkksWUFBWSxrSUFDWixtQkFBbUIseXlDQUNuQixjQUFjLDRwQ0FDZCx3QkFBd0Isd2pCQUN4QixxQkFBcUI7OzRGQUtaLDhCQUE4QjtrQkFkMUMsU0FBUzsrQkFDRSw4QkFBOEIsY0FFNUIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQixjQUFjO3dCQUNkLGdCQUFnQjtxQkFDakI7OzBCQWFFLE1BQU07MkJBQUMsZUFBZTt5Q0FWRyxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEZvcm1WYWxpZGF0b3JTZXJ2aWNlLFxuICBTZWFyY2hhYmxlU2VsZWN0b3JDb21wb25lbnQsXG4gIFNlYXJjaGFibGVTZWxlY3Rvck1vZHVsZSxcbiAgVGVjaGxpZnlGZWF0dXJlTW9kdWxlLFxuICBUZWNobGlmeUZvcm1Db21wb25lbnQsXG59IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uLy4uL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBTdG9ja0lzc3VlUHJvZHVjdFNlcnZpY2UgfSBmcm9tICcuLi9zdG9jay1pc3N1ZS1wcm9kdWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtc3RvY2staXNzdWUtcHJvZHVjdC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0b2NrLWlzc3VlLXByb2R1Y3QtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICBTZWFyY2hhYmxlU2VsZWN0b3JNb2R1bGUsXG4gICAgVGVjaGxpZnlGZWF0dXJlTW9kdWxlLFxuICAgIE1hdERpYWxvZ1RpdGxlLFxuICAgIE1hdERpYWxvZ0NvbnRlbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFN0b2NrSXNzdWVQcm9kdWN0Rm9ybUNvbXBvbmVudCBleHRlbmRzIFRlY2hsaWZ5Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2JhdGNoU2VsZWN0b3InKSBiYXRjaFNlbGVjdG9yPzogU2VhcmNoYWJsZVNlbGVjdG9yQ29tcG9uZW50O1xuXG4gIGJhdGNoZXNBcGlVcmwgPSAnJztcbiAgaXNCYXRjaFBhdGNoZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBmb3JtVmFsaWRhdG9yU2VydmljZTogRm9ybVZhbGlkYXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNlcnZpY2U6IFN0b2NrSXNzdWVQcm9kdWN0U2VydmljZSxcbiAgICBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxTdG9ja0lzc3VlUHJvZHVjdEZvcm1Db21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICApIHtcbiAgICBzdXBlcihmb3JtVmFsaWRhdG9yU2VydmljZSk7XG4gICAgdGhpcy5kaWFsb2dSZWYgPSBkaWFsb2dSZWY7XG5cbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSB7XG4gICAgICBwcm9kdWN0X2lkOiB7IHJlcXVpcmVkOiAnUHJvZHVjdCBpcyByZXF1aXJlZC4nIH0sXG4gICAgICBxdWFudGl0eTogeyByZXF1aXJlZDogJ1F1YW50aXR5IGlzIHJlcXVpcmVkLicsIG1pbjogJ1F1YW50aXR5IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAuJyB9LFxuICAgIH07XG5cbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGlkOiBbJyddLFxuICAgICAgc3RvY2tfaXNzdWVfaWQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBwcm9kdWN0X2lkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcXVhbnRpdHk6IFswLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMCldXSxcbiAgICAgIGxvY2F0aW9uX2Zyb21faWQ6IFsnJ10sXG4gICAgICBiYXRjaF9pZDogWycnXSxcbiAgICAgIHBhcnRpY3VsYXJzOiBbJyddLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBzdG9ja19pc3N1ZV9pZDogdGhpcy5kYXRhLnN0b2NrSXNzdWVJZCB9KTtcblxuICAgIHRoaXMuZm9ybS5nZXQoJ2xvY2F0aW9uX2Zyb21faWQnKT8udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoNTApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICApLnN1YnNjcmliZSgodmFsOiBudW1iZXIpID0+IHtcbiAgICAgIHRoaXMucmVzZXRCYXRjaFNlbGVjdG9yKHZhbCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBwcm9kdWN0ID0gdGhpcy5kYXRhLm1vZGVsO1xuICAgIGlmIChwcm9kdWN0KSB7XG4gICAgICB0aGlzLmlzVXBkYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHByb2R1Y3QsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMucmVzZXRCYXRjaFNlbGVjdG9yKHByb2R1Y3QubG9jYXRpb25fZnJvbV9pZCwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uQmF0Y2hJdGVtc0NoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhLm1vZGVsICYmICF0aGlzLmlzQmF0Y2hQYXRjaGVkICYmIHRoaXMuYmF0Y2hTZWxlY3Rvcikge1xuICAgICAgdGhpcy5mb3JtLmdldCgnYmF0Y2hfaWQnKT8uc2V0VmFsdWUodGhpcy5kYXRhLm1vZGVsLmJhdGNoX2lkKTtcbiAgICAgIHRoaXMuYmF0Y2hTZWxlY3Rvci5zZWxlY3RlZFZhbHVlID0gdGhpcy5kYXRhLm1vZGVsLmJhdGNoO1xuICAgICAgdGhpcy5pc0JhdGNoUGF0Y2hlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldEJhdGNoU2VsZWN0b3IobG9jYXRpb25JZDogbnVtYmVyLCByZXNldCA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAocmVzZXQpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2JhdGNoX2lkJyk/LnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gICAgdGhpcy5iYXRjaGVzQXBpVXJsID0gbG9jYXRpb25JZCA/IGBhcGkvc3RvY2stcmVjZWlwdC1iYXRjaGVzP2xvY2F0aW9uX2lkcz0ke2xvY2F0aW9uSWR9YCA6ICcnO1xuXG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5iYXRjaFNlbGVjdG9yKSB7XG4gICAgICAgIGlmIChyZXNldCkge1xuICAgICAgICAgIHRoaXMuYmF0Y2hTZWxlY3Rvci5zZWxlY3RlZFZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJhdGNoU2VsZWN0b3IuYXBpVXJsID0gdGhpcy5iYXRjaGVzQXBpVXJsO1xuICAgICAgICB0aGlzLmJhdGNoU2VsZWN0b3IucmVsb2FkRGF0YSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cbn1cbiIsIjxoMyBtYXQtZGlhbG9nLXRpdGxlIGNsYXNzPSd0ZXh0LWNlbnRlcic+U3RvY2sgSXNzdWUgUHJvZHVjdCBGb3JtPC9oMz5cblxuPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cInN1Ym1pdChmb3JtLmdldFJhd1ZhbHVlKCkpXCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTMgbXQtMlwiPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlByb2R1Y3Q8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciBmb3JtQ29udHJvbE5hbWU9XCJwcm9kdWN0X2lkXCIgYXBpVXJsPVwiYXBpL3Byb2R1Y3RzXCIgdGl0bGVGaWVsZD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlXT1cImRhdGE/LnByb2R1Y3RcIiBbY2FjaGVdPVwidHJ1ZVwiPjwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdwcm9kdWN0X2lkJylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ3Byb2R1Y3RfaWQnKSB9fTwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlF1YW50aXR5PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cIm51bWJlclwiIGZvcm1Db250cm9sTmFtZT1cInF1YW50aXR5XCIgbWluPVwiMFwiIHN0ZXA9XCJhbnlcIj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ3F1YW50aXR5JylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ3F1YW50aXR5JykgfX08L21hdC1lcnJvcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5Mb2NhdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGFwcC1zZWFyY2hhYmxlLXNlbGVjdG9yIGZvcm1Db250cm9sTmFtZT1cImxvY2F0aW9uX2Zyb21faWRcIiBhcGlVcmw9XCJhcGkvaW52ZW50b3J5LWxvY2F0aW9uc1wiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwiZGF0YS5zdG9ja0lzc3VlUHJvZHVjdD8ubG9jYXRpb25cIiB0aXRsZUZpZWxkPVwidGl0bGVcIj48L2FwcC1zZWFyY2hhYmxlLXNlbGVjdG9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtLnZhbHVlPy5sb2NhdGlvbl9mcm9tX2lkICYmIGJhdGNoZXNBcGlVcmxcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCIgdGVjaGxpZnlGZWF0dXJlRW5hYmxlZD1cInByb2R1Y3QtYmF0Y2gtbnVtYmVyc1wiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+QmF0Y2g8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3IgI2JhdGNoU2VsZWN0b3IgZm9ybUNvbnRyb2xOYW1lPVwiYmF0Y2hfaWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXBpVXJsXT1cImJhdGNoZXNBcGlVcmxcIiBbZW5hYmxlU2VhcmNoXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW1zQ2hhbmdlKT1cIm9uQmF0Y2hJdGVtc0NoYW5nZSgpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlBhcnRpY3VsYXJzPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicGFydGljdWxhcnNcIiByb3dzPVwiM1wiPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGdhcC0yXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cImlzV29ya2luZ1wiIChjbGljayk9XCJjYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cImlzV29ya2luZ1wiPlNhdmU8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICA8L2Zvcm0+XG48L21hdC1kaWFsb2ctY29udGVudD5cbiJdfQ==
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWUtcHJvZHVjdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLWlzc3VlL3N0b2NrLWlzc3VlLXByb2R1Y3QtZm9ybS9zdG9jay1pc3N1ZS1wcm9kdWN0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2staXNzdWUvc3RvY2staXNzdWUtcHJvZHVjdC1mb3JtL3N0b2NrLWlzc3VlLXByb2R1Y3QtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBR0wsd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixxQkFBcUIsR0FDdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFnQixjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQWdCMUQsTUFBTSxPQUFPLDhCQUErQixTQUFRLHFCQUFxQjtJQVE3RDtJQUNXO0lBRWE7SUFWTixhQUFhLENBQStCO0lBRXhFLGFBQWEsR0FBRyxFQUFF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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEZvcm1WYWxpZGF0b3JTZXJ2aWNlLFxuICBTZWFyY2hhYmxlU2VsZWN0b3JDb21wb25lbnQsXG4gIFNlYXJjaGFibGVTZWxlY3Rvck1vZHVsZSxcbiAgVGVjaGxpZnlGZWF0dXJlTW9kdWxlLFxuICBUZWNobGlmeUZvcm1Db21wb25lbnQsXG59IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uLy4uL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBTdG9ja0lzc3VlUHJvZHVjdFNlcnZpY2UgfSBmcm9tICcuLi9zdG9jay1pc3N1ZS1wcm9kdWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtc3RvY2staXNzdWUtcHJvZHVjdC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0b2NrLWlzc3VlLXByb2R1Y3QtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICBTZWFyY2hhYmxlU2VsZWN0b3JNb2R1bGUsXG4gICAgVGVjaGxpZnlGZWF0dXJlTW9kdWxlLFxuICAgIE1hdERpYWxvZ1RpdGxlLFxuICAgIE1hdERpYWxvZ0NvbnRlbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFN0b2NrSXNzdWVQcm9kdWN0Rm9ybUNvbXBvbmVudCBleHRlbmRzIFRlY2hsaWZ5Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2JhdGNoU2VsZWN0b3InKSBiYXRjaFNlbGVjdG9yPzogU2VhcmNoYWJsZVNlbGVjdG9yQ29tcG9uZW50O1xuXG4gIGJhdGNoZXNBcGlVcmwgPSAnJztcbiAgaXNCYXRjaFBhdGNoZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBmb3JtVmFsaWRhdG9yU2VydmljZTogRm9ybVZhbGlkYXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNlcnZpY2U6IFN0b2NrSXNzdWVQcm9kdWN0U2VydmljZSxcbiAgICBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxTdG9ja0lzc3VlUHJvZHVjdEZvcm1Db21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICApIHtcbiAgICBzdXBlcihmb3JtVmFsaWRhdG9yU2VydmljZSk7XG4gICAgdGhpcy5kaWFsb2dSZWYgPSBkaWFsb2dSZWY7XG5cbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSB7XG4gICAgICBwcm9kdWN0X2lkOiB7IHJlcXVpcmVkOiAnUHJvZHVjdCBpcyByZXF1aXJlZC4nIH0sXG4gICAgICBxdWFudGl0eTogeyByZXF1aXJlZDogJ1F1YW50aXR5IGlzIHJlcXVpcmVkLicsIG1pbjogJ1F1YW50aXR5IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAuJyB9LFxuICAgIH07XG5cbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGlkOiBbJyddLFxuICAgICAgc3RvY2tfaXNzdWVfaWQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBwcm9kdWN0X2lkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcXVhbnRpdHk6IFswLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMCldXSxcbiAgICAgIGxvY2F0aW9uX2Zyb21faWQ6IFsnJ10sXG4gICAgICBiYXRjaF9pZDogWycnXSxcbiAgICAgIHBhcnRpY3VsYXJzOiBbJyddLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBzdG9ja19pc3N1ZV9pZDogdGhpcy5kYXRhLnN0b2NrSXNzdWVJZCB9KTtcblxuICAgIHRoaXMuZm9ybS5nZXQoJ2xvY2F0aW9uX2Zyb21faWQnKT8udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoNTApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICApLnN1YnNjcmliZSgodmFsOiBudW1iZXIpID0+IHtcbiAgICAgIHRoaXMucmVzZXRCYXRjaFNlbGVjdG9yKHZhbCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBwcm9kdWN0ID0gdGhpcy5kYXRhLm1vZGVsO1xuICAgIGlmIChwcm9kdWN0KSB7XG4gICAgICB0aGlzLmlzVXBkYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHByb2R1Y3QsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMucmVzZXRCYXRjaFNlbGVjdG9yKHByb2R1Y3QubG9jYXRpb25fZnJvbV9pZCwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uQmF0Y2hJdGVtc0NoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhLm1vZGVsICYmICF0aGlzLmlzQmF0Y2hQYXRjaGVkICYmIHRoaXMuYmF0Y2hTZWxlY3Rvcikge1xuICAgICAgdGhpcy5mb3JtLmdldCgnYmF0Y2hfaWQnKT8uc2V0VmFsdWUodGhpcy5kYXRhLm1vZGVsLmJhdGNoX2lkKTtcbiAgICAgIHRoaXMuYmF0Y2hTZWxlY3Rvci5zZWxlY3RlZFZhbHVlID0gdGhpcy5kYXRhLm1vZGVsLmJhdGNoO1xuICAgICAgdGhpcy5pc0JhdGNoUGF0Y2hlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldEJhdGNoU2VsZWN0b3IobG9jYXRpb25JZDogbnVtYmVyLCByZXNldCA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAocmVzZXQpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2JhdGNoX2lkJyk/LnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gICAgdGhpcy5iYXRjaGVzQXBpVXJsID0gbG9jYXRpb25JZCA/IGBhcGkvc3RvY2stcmVjZWlwdC1iYXRjaGVzP2xvY2F0aW9uX2lkcz0ke2xvY2F0aW9uSWR9YCA6ICcnO1xuXG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5iYXRjaFNlbGVjdG9yKSB7XG4gICAgICAgIGlmIChyZXNldCkge1xuICAgICAgICAgIHRoaXMuYmF0Y2hTZWxlY3Rvci5zZWxlY3RlZFZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJhdGNoU2VsZWN0b3IuYXBpVXJsID0gdGhpcy5iYXRjaGVzQXBpVXJsO1xuICAgICAgICB0aGlzLmJhdGNoU2VsZWN0b3IucmVsb2FkRGF0YSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cbn1cbiIsIjxoMyBtYXQtZGlhbG9nLXRpdGxlIGNsYXNzPSd0ZXh0LWNlbnRlcic+U3RvY2sgSXNzdWUgUHJvZHVjdCBGb3JtPC9oMz5cblxuPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cInN1Ym1pdChmb3JtLmdldFJhd1ZhbHVlKCkpXCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTMgbXQtMlwiPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlByb2R1Y3Q8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciBmb3JtQ29udHJvbE5hbWU9XCJwcm9kdWN0X2lkXCIgYXBpVXJsPVwiYXBpL3Byb2R1Y3RzXCIgdGl0bGVGaWVsZD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlXT1cImRhdGE/LnByb2R1Y3RcIiBbY2FjaGVdPVwidHJ1ZVwiPjwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdwcm9kdWN0X2lkJylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ3Byb2R1Y3RfaWQnKSB9fTwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlF1YW50aXR5PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cIm51bWJlclwiIGZvcm1Db250cm9sTmFtZT1cInF1YW50aXR5XCIgbWluPVwiMFwiIHN0ZXA9XCJhbnlcIj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ3F1YW50aXR5JylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ3F1YW50aXR5JykgfX08L21hdC1lcnJvcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5Mb2NhdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGFwcC1zZWFyY2hhYmxlLXNlbGVjdG9yIGZvcm1Db250cm9sTmFtZT1cImxvY2F0aW9uX2Zyb21faWRcIiBhcGlVcmw9XCJhcGkvaW52ZW50b3J5LWxvY2F0aW9ucz9zdGF0dXNfaWRzPTFcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlXT1cImRhdGEuc3RvY2tJc3N1ZVByb2R1Y3Q/LmxvY2F0aW9uXCIgdGl0bGVGaWVsZD1cInRpdGxlXCI+PC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybS52YWx1ZT8ubG9jYXRpb25fZnJvbV9pZCAmJiBiYXRjaGVzQXBpVXJsXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiIHRlY2hsaWZ5RmVhdHVyZUVuYWJsZWQ9XCJwcm9kdWN0LWJhdGNoLW51bWJlcnNcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkJhdGNoPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGFwcC1zZWFyY2hhYmxlLXNlbGVjdG9yICNiYXRjaFNlbGVjdG9yIGZvcm1Db250cm9sTmFtZT1cImJhdGNoX2lkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwaVVybF09XCJiYXRjaGVzQXBpVXJsXCIgW2VuYWJsZVNlYXJjaF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIChpdGVtc0NoYW5nZSk9XCJvbkJhdGNoSXRlbXNDaGFuZ2UoKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5QYXJ0aWN1bGFyczwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInBhcnRpY3VsYXJzXCIgcm93cz1cIjNcIj48L3RleHRhcmVhPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBnYXAtMlwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJpc1dvcmtpbmdcIiAoY2xpY2spPVwiY2FuY2VsKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJpc1dvcmtpbmdcIj5TYXZlPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9mb3JtPlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG4iXX0=
|
|
@@ -68,7 +68,7 @@ export class StockIssueSingleProductFormComponent extends TechlifyFormComponent
|
|
|
68
68
|
this.form.get('location_from_id')?.valueChanges?.pipe(debounceTime(50), distinctUntilChanged()).subscribe((val) => {
|
|
69
69
|
this.resetBatchSelector(val);
|
|
70
70
|
});
|
|
71
|
-
this.locationService.index().subscribe((response) => {
|
|
71
|
+
this.locationService.index({ status_ids: '1' }).subscribe((response) => {
|
|
72
72
|
const locations = response?.data || [];
|
|
73
73
|
this.locationsCountValue = locations.length;
|
|
74
74
|
this.form.get('location_from_id')?.setValidators(locations.length > 0 ? Validators.required : null);
|
|
@@ -174,7 +174,7 @@ export class StockIssueSingleProductFormComponent extends TechlifyFormComponent
|
|
|
174
174
|
});
|
|
175
175
|
}
|
|
176
176
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockIssueSingleProductFormComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.StockIssueService }, { token: i3.FormBuilder }, { token: i1.DateUtils }, { token: i4.LocationService }, { token: i1.FormConfigurationFormService }, { token: i5.MatDialogRef, optional: true }, { token: MAT_DIALOG_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
177
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: StockIssueSingleProductFormComponent, isStandalone: true, selector: "app-stock-issue-single-product-form", viewQueries: [{ propertyName: "batchSearchableSelector", first: true, predicate: ["batchSearchableSelector"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-card-content>\n <div class=\"d-flex flex-row justify-content-between align-items-center gap-1\">\n <h5 class=\"text-center mb-0\">\n Stock Issue form\n\n @if (data.product) {\n for {{ data.product?.name }}\n }\n </h5>\n <app-form-configuration-for-form formCode=\"stock-issue\"\n (click)=\"dialogRef.close()\"></app-form-configuration-for-form>\n </div>\n <form [formGroup]=\"form\" class=\"d-flex flex-column gap-1 justify-content-start\" (submit)=\"save()\">\n <mat-form-field *ngIf=\"!product\">\n <mat-label>Product</mat-label>\n <app-searchable-selector formControlName=\"product_id\" apiUrl=\"api/products\" titleField=\"name\"\n required (selectedValueChange)=\"onProductChange($event)\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('product_id')\">\n {{ getErrorMessage('product_id') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"locationsCount > 1\">\n <mat-label>Location From</mat-label>\n <app-searchable-selector formControlName=\"location_from_id\" apiUrl=\"api/inventory-locations\"\n required [selectedValue]=\"stockIssue?.stock_issue_products[0]?.location\"></app-searchable-selector>\n <mat-hint>Which warehouse are we taking stock from?</mat-hint>\n <mat-error *ngIf=\"isFieldValid('location_from_id')\">\n {{ getErrorMessage('location_from_id') }}\n </mat-error>\n </mat-form-field>\n\n <ng-container *ngIf=\"locationsCount > 1 && form.value?.location_from_id && batchesApiUrl\">\n <mat-form-field techlifyFeatureEnabled=\"product-batch-numbers\">\n <mat-label>Batch</mat-label>\n <app-searchable-selector #batchSearchableSelector formControlName=\"batch_id\" [apiUrl]=\"batchesApiUrl\"\n [enableSearch]=\"false\" (itemsChange)=\"onBatchItemsChange()\">\n </app-searchable-selector>\n </mat-form-field>\n </ng-container>\n\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input matInput [matDatepicker]=\"datePicker\" formControlName=\"date\" (focus)=\"datePicker.open()\" />\n <mat-datepicker #datePicker></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('date')\">\n {{ getErrorMessage('date') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"formConfigurationUtilityService.getFieldEnabled('recipient_id')\">\n <mat-label>Recipient\n <sup *ngIf=\"formConfigurationUtilityService.getFieldRequired('recipient_id')\">*</sup>\n </mat-label>\n <app-searchable-selector formControlName=\"recipient_id\" apiUrl=\"api/recipients\"\n titleField=\"name\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('recipient_id')\">\n {{ getErrorMessage('recipient_id') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Quantity</mat-label>\n <input matInput formControlName=\"quantity\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('quantity')\">\n {{ getErrorMessage('quantity') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n <button [disabled]=\"isWorking\" (click)=\"dialogRef.close()\" mat-flat-button type=\"button\">Cancel</button>\n </div>\n </form>\n</mat-card-content>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i9.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i9.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i10.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i11.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: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: SearchableSelectorModule }, { kind: "component", type: i1.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", "isItemsEmpty"] }, { kind: "ngmodule", type: TechlifyFeatureModule }, { kind: "directive", type: i1.TechlifyFeatureEnabledDirective, selector: "[techlifyFeatureEnabled]", inputs: ["techlifyFeatureEnabled"] }, { kind: "ngmodule", type: FormConfigurationForFormModule }, { kind: "component", type: i1.FormConfigurationForFormComponent, selector: "app-form-configuration-for-form", inputs: ["formCode"] }], preserveWhitespaces: true });
|
|
177
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: StockIssueSingleProductFormComponent, isStandalone: true, selector: "app-stock-issue-single-product-form", viewQueries: [{ propertyName: "batchSearchableSelector", first: true, predicate: ["batchSearchableSelector"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-card-content>\n <div class=\"d-flex flex-row justify-content-between align-items-center gap-1\">\n <h5 class=\"text-center mb-0\">\n Stock Issue form\n\n @if (data.product) {\n for {{ data.product?.name }}\n }\n </h5>\n <app-form-configuration-for-form formCode=\"stock-issue\"\n (click)=\"dialogRef.close()\"></app-form-configuration-for-form>\n </div>\n <form [formGroup]=\"form\" class=\"d-flex flex-column gap-1 justify-content-start\" (submit)=\"save()\">\n <mat-form-field *ngIf=\"!product\">\n <mat-label>Product</mat-label>\n <app-searchable-selector formControlName=\"product_id\" apiUrl=\"api/products\" titleField=\"name\"\n required (selectedValueChange)=\"onProductChange($event)\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('product_id')\">\n {{ getErrorMessage('product_id') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"locationsCount > 1\">\n <mat-label>Location From</mat-label>\n <app-searchable-selector formControlName=\"location_from_id\" apiUrl=\"api/inventory-locations?status_ids=1\"\n required [selectedValue]=\"stockIssue?.stock_issue_products[0]?.location\"></app-searchable-selector>\n <mat-hint>Which warehouse are we taking stock from?</mat-hint>\n <mat-error *ngIf=\"isFieldValid('location_from_id')\">\n {{ getErrorMessage('location_from_id') }}\n </mat-error>\n </mat-form-field>\n\n <ng-container *ngIf=\"locationsCount > 1 && form.value?.location_from_id && batchesApiUrl\">\n <mat-form-field techlifyFeatureEnabled=\"product-batch-numbers\">\n <mat-label>Batch</mat-label>\n <app-searchable-selector #batchSearchableSelector formControlName=\"batch_id\" [apiUrl]=\"batchesApiUrl\"\n [enableSearch]=\"false\" (itemsChange)=\"onBatchItemsChange()\">\n </app-searchable-selector>\n </mat-form-field>\n </ng-container>\n\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input matInput [matDatepicker]=\"datePicker\" formControlName=\"date\" (focus)=\"datePicker.open()\" />\n <mat-datepicker #datePicker></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('date')\">\n {{ getErrorMessage('date') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"formConfigurationUtilityService.getFieldEnabled('recipient_id')\">\n <mat-label>Recipient\n <sup *ngIf=\"formConfigurationUtilityService.getFieldRequired('recipient_id')\">*</sup>\n </mat-label>\n <app-searchable-selector formControlName=\"recipient_id\" apiUrl=\"api/recipients\"\n titleField=\"name\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('recipient_id')\">\n {{ getErrorMessage('recipient_id') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Quantity</mat-label>\n <input matInput formControlName=\"quantity\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('quantity')\">\n {{ getErrorMessage('quantity') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n <button [disabled]=\"isWorking\" (click)=\"dialogRef.close()\" mat-flat-button type=\"button\">Cancel</button>\n </div>\n </form>\n</mat-card-content>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i9.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i9.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i10.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i11.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: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: SearchableSelectorModule }, { kind: "component", type: i1.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", "isItemsEmpty"] }, { kind: "ngmodule", type: TechlifyFeatureModule }, { kind: "directive", type: i1.TechlifyFeatureEnabledDirective, selector: "[techlifyFeatureEnabled]", inputs: ["techlifyFeatureEnabled"] }, { kind: "ngmodule", type: FormConfigurationForFormModule }, { kind: "component", type: i1.FormConfigurationForFormComponent, selector: "app-form-configuration-for-form", inputs: ["formCode"] }], preserveWhitespaces: true });
|
|
178
178
|
}
|
|
179
179
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StockIssueSingleProductFormComponent, decorators: [{
|
|
180
180
|
type: Component,
|
|
@@ -186,7 +186,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
186
186
|
SearchableSelectorModule,
|
|
187
187
|
TechlifyFeatureModule,
|
|
188
188
|
FormConfigurationForFormModule,
|
|
189
|
-
], template: "<mat-card-content>\n <div class=\"d-flex flex-row justify-content-between align-items-center gap-1\">\n <h5 class=\"text-center mb-0\">\n Stock Issue form\n\n @if (data.product) {\n for {{ data.product?.name }}\n }\n </h5>\n <app-form-configuration-for-form formCode=\"stock-issue\"\n (click)=\"dialogRef.close()\"></app-form-configuration-for-form>\n </div>\n <form [formGroup]=\"form\" class=\"d-flex flex-column gap-1 justify-content-start\" (submit)=\"save()\">\n <mat-form-field *ngIf=\"!product\">\n <mat-label>Product</mat-label>\n <app-searchable-selector formControlName=\"product_id\" apiUrl=\"api/products\" titleField=\"name\"\n required (selectedValueChange)=\"onProductChange($event)\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('product_id')\">\n {{ getErrorMessage('product_id') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"locationsCount > 1\">\n <mat-label>Location From</mat-label>\n <app-searchable-selector formControlName=\"location_from_id\" apiUrl=\"api/inventory-locations\"\n required [selectedValue]=\"stockIssue?.stock_issue_products[0]?.location\"></app-searchable-selector>\n <mat-hint>Which warehouse are we taking stock from?</mat-hint>\n <mat-error *ngIf=\"isFieldValid('location_from_id')\">\n {{ getErrorMessage('location_from_id') }}\n </mat-error>\n </mat-form-field>\n\n <ng-container *ngIf=\"locationsCount > 1 && form.value?.location_from_id && batchesApiUrl\">\n <mat-form-field techlifyFeatureEnabled=\"product-batch-numbers\">\n <mat-label>Batch</mat-label>\n <app-searchable-selector #batchSearchableSelector formControlName=\"batch_id\" [apiUrl]=\"batchesApiUrl\"\n [enableSearch]=\"false\" (itemsChange)=\"onBatchItemsChange()\">\n </app-searchable-selector>\n </mat-form-field>\n </ng-container>\n\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input matInput [matDatepicker]=\"datePicker\" formControlName=\"date\" (focus)=\"datePicker.open()\" />\n <mat-datepicker #datePicker></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('date')\">\n {{ getErrorMessage('date') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"formConfigurationUtilityService.getFieldEnabled('recipient_id')\">\n <mat-label>Recipient\n <sup *ngIf=\"formConfigurationUtilityService.getFieldRequired('recipient_id')\">*</sup>\n </mat-label>\n <app-searchable-selector formControlName=\"recipient_id\" apiUrl=\"api/recipients\"\n titleField=\"name\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('recipient_id')\">\n {{ getErrorMessage('recipient_id') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Quantity</mat-label>\n <input matInput formControlName=\"quantity\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('quantity')\">\n {{ getErrorMessage('quantity') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n <button [disabled]=\"isWorking\" (click)=\"dialogRef.close()\" mat-flat-button type=\"button\">Cancel</button>\n </div>\n </form>\n</mat-card-content>" }]
|
|
189
|
+
], template: "<mat-card-content>\n <div class=\"d-flex flex-row justify-content-between align-items-center gap-1\">\n <h5 class=\"text-center mb-0\">\n Stock Issue form\n\n @if (data.product) {\n for {{ data.product?.name }}\n }\n </h5>\n <app-form-configuration-for-form formCode=\"stock-issue\"\n (click)=\"dialogRef.close()\"></app-form-configuration-for-form>\n </div>\n <form [formGroup]=\"form\" class=\"d-flex flex-column gap-1 justify-content-start\" (submit)=\"save()\">\n <mat-form-field *ngIf=\"!product\">\n <mat-label>Product</mat-label>\n <app-searchable-selector formControlName=\"product_id\" apiUrl=\"api/products\" titleField=\"name\"\n required (selectedValueChange)=\"onProductChange($event)\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('product_id')\">\n {{ getErrorMessage('product_id') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"locationsCount > 1\">\n <mat-label>Location From</mat-label>\n <app-searchable-selector formControlName=\"location_from_id\" apiUrl=\"api/inventory-locations?status_ids=1\"\n required [selectedValue]=\"stockIssue?.stock_issue_products[0]?.location\"></app-searchable-selector>\n <mat-hint>Which warehouse are we taking stock from?</mat-hint>\n <mat-error *ngIf=\"isFieldValid('location_from_id')\">\n {{ getErrorMessage('location_from_id') }}\n </mat-error>\n </mat-form-field>\n\n <ng-container *ngIf=\"locationsCount > 1 && form.value?.location_from_id && batchesApiUrl\">\n <mat-form-field techlifyFeatureEnabled=\"product-batch-numbers\">\n <mat-label>Batch</mat-label>\n <app-searchable-selector #batchSearchableSelector formControlName=\"batch_id\" [apiUrl]=\"batchesApiUrl\"\n [enableSearch]=\"false\" (itemsChange)=\"onBatchItemsChange()\">\n </app-searchable-selector>\n </mat-form-field>\n </ng-container>\n\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input matInput [matDatepicker]=\"datePicker\" formControlName=\"date\" (focus)=\"datePicker.open()\" />\n <mat-datepicker #datePicker></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('date')\">\n {{ getErrorMessage('date') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"formConfigurationUtilityService.getFieldEnabled('recipient_id')\">\n <mat-label>Recipient\n <sup *ngIf=\"formConfigurationUtilityService.getFieldRequired('recipient_id')\">*</sup>\n </mat-label>\n <app-searchable-selector formControlName=\"recipient_id\" apiUrl=\"api/recipients\"\n titleField=\"name\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('recipient_id')\">\n {{ getErrorMessage('recipient_id') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Quantity</mat-label>\n <input matInput formControlName=\"quantity\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('quantity')\">\n {{ getErrorMessage('quantity') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n <button [disabled]=\"isWorking\" (click)=\"dialogRef.close()\" mat-flat-button type=\"button\">Cancel</button>\n </div>\n </form>\n</mat-card-content>" }]
|
|
190
190
|
}], ctorParameters: () => [{ type: i1.FormValidatorService }, { type: i2.StockIssueService }, { type: i3.FormBuilder }, { type: i1.DateUtils }, { type: i4.LocationService }, { type: i1.FormConfigurationFormService }, { type: i5.MatDialogRef, decorators: [{
|
|
191
191
|
type: Optional
|
|
192
192
|
}] }, { type: undefined, decorators: [{
|
|
@@ -198,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
198
198
|
type: ViewChild,
|
|
199
199
|
args: ['batchSearchableSelector']
|
|
200
200
|
}] } });
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWUtc2luZ2xlLXByb2R1Y3QtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay1pc3N1ZS9zdG9jay1pc3N1ZS1zaW5nbGUtcHJvZHVjdC1mb3JtL3N0b2NrLWlzc3VlLXNpbmdsZS1wcm9kdWN0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2staXNzdWUvc3RvY2staXNzdWUtc2luZ2xlLXByb2R1Y3QtZm9ybS9zdG9jay1pc3N1ZS1zaW5nbGUtcHJvZHVjdC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUVMLDhCQUE4QixFQUU5QiwrQkFBK0IsRUFHL0Isd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixxQkFBcUIsR0FDdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFlLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRzFGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBaUIxRCxNQUFNLE9BQU8sb0NBQXFDLFNB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QVk7d0JBQ1osbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2Ysd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLDhCQUE4QjtxQkFDL0I7OzBCQXVCRSxRQUFROzswQkFDUixNQUFNOzJCQUFDLGVBQWU7OzBCQUFHLFFBQVE7eUNBbkJFLHVCQUF1QjtzQkFBNUQsU0FBUzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBEYXRlVXRpbHMsXG4gIEZvcm1Db25maWd1cmF0aW9uRm9yRm9ybU1vZHVsZSxcbiAgRm9ybUNvbmZpZ3VyYXRpb25Gb3JtU2VydmljZSxcbiAgRm9ybUNvbmZpZ3VyYXRpb25VdGlsaXR5U2VydmljZSxcbiAgRm9ybVZhbGlkYXRvclNlcnZpY2UsXG4gIFNlYXJjaGFibGVTZWxlY3RvckNvbXBvbmVudCxcbiAgU2VhcmNoYWJsZVNlbGVjdG9yTW9kdWxlLFxuICBUZWNobGlmeUZlYXR1cmVNb2R1bGUsXG4gIFRlY2hsaWZ5Rm9ybUNvbXBvbmVudCxcbn0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dNb2R1bGUsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTdG9ja0lzc3VlU2VydmljZSB9IGZyb20gJy4uL3N0b2NrLWlzc3VlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbG9jYXRpb24vbG9jYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uLy4uL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zdG9jay1pc3N1ZS1zaW5nbGUtcHJvZHVjdC1mb3JtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICBTZWFyY2hhYmxlU2VsZWN0b3JNb2R1bGUsXG4gICAgVGVjaGxpZnlGZWF0dXJlTW9kdWxlLFxuICAgIEZvcm1Db25maWd1cmF0aW9uRm9yRm9ybU1vZHVsZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0b2NrLWlzc3VlLXNpbmdsZS1wcm9kdWN0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdG9jay1pc3N1ZS1zaW5nbGUtcHJvZHVjdC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFN0b2NrSXNzdWVTaW5nbGVQcm9kdWN0Rm9ybUNvbXBvbmVudCBleHRlbmRzIFRlY2hsaWZ5Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2JhdGNoU2VhcmNoYWJsZVNlbGVjdG9yJykgYmF0Y2hTZWFyY2hhYmxlU2VsZWN0b3IhOiBTZWFyY2hhYmxlU2VsZWN0b3JDb21wb25lbnQ7XG5cbiAgcHJvZHVjdDogYW55O1xuICBzdG9ja0lzc3VlOiBhbnk7XG5cbiAgcHJpdmF0ZSBsb2NhdGlvbnNDb3VudFZhbHVlOiBudW1iZXIgPSAwO1xuICBiYXRjaGVzQXBpVXJsID0gJyc7XG4gIGlzQmF0Y2hQYXRjaGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2U6IEZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGZvcm1WYWxpZGF0b3JTZXJ2aWNlOiBGb3JtVmFsaWRhdG9yU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2VydmljZTogU3RvY2tJc3N1ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBkYXRlVXRpbHM6IERhdGVVdGlscyxcbiAgICBwcml2YXRlIGxvY2F0aW9uU2VydmljZTogTG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUNvbmZpZ1NlcnZpY2U6IEZvcm1Db25maWd1cmF0aW9uRm9ybVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIG92ZXJyaWRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFN0b2NrSXNzdWVTaW5nbGVQcm9kdWN0Rm9ybUNvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIEBPcHRpb25hbCgpIHB1YmxpYyBkYXRhOiB7IG1vZGVsPzogYW55OyBwcm9kdWN0PzogYW55IH0sXG4gICkge1xuICAgIHN1cGVyKGZvcm1WYWxpZGF0b3JTZXJ2aWNlKTtcbiAgICB0aGlzLmZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2UgPSBuZXcgRm9ybUNvbmZpZ3VyYXRpb25VdGlsaXR5U2VydmljZSgpO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IHtcbiAgICAgIGRhdGU6IHsgcmVxdWlyZWQ6ICdUaGUgZGF0ZSBmaWVsZCBpcyByZXF1aXJlZC4nIH0sXG4gICAgICBxdWFudGl0eTogeyByZXF1aXJlZDogJ1RoZSBxdWFudGl0eSBmaWVsZCBpcyByZXF1aXJlZC4nIH0sXG4gICAgICBwcm9kdWN0X2lkOiB7IHJlcXVpcmVkOiAnVGhlIHByb2R1Y3QgZmllbGQgaXMgcmVxdWlyZWQuJyB9LFxuICAgICAgbG9jYXRpb25fZnJvbV9pZDogeyByZXF1aXJlZDogJ1RoZSBsb2NhdGlvbiBmaWVsZCBpcyByZXF1aXJlZC4nIH0sXG4gICAgICByZWNpcGllbnRfaWQ6IHsgcmVxdWlyZWQ6ICdQbGVhc2Ugc2VsZWN0IGEgcmVjaXBpZW50LicgfSxcbiAgICB9O1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgaWQ6IFsnJ10sXG4gICAgICBwcm9kdWN0X2lkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgbG9jYXRpb25fZnJvbV9pZDogWycnXSxcbiAgICAgIGJhdGNoX2lkOiBbJyddLFxuICAgICAgZGF0ZTogW25ldyBEYXRlKCksIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcmVjaXBpZW50X2lkOiBbJyddLFxuICAgICAgcXVhbnRpdHk6IFsxLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHBhcnRpY3VsYXJzOiBbJyddLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wcm9kdWN0ID0gdGhpcy5kYXRhPy5wcm9kdWN0O1xuICAgIHRoaXMuc3RvY2tJc3N1ZSA9IHRoaXMuZGF0YT8ubW9kZWw7XG5cbiAgICB0aGlzLmZvcm0uZ2V0KCdsb2NhdGlvbl9mcm9tX2lkJyk/LnZhbHVlQ2hhbmdlcz8ucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICkuc3Vic2NyaWJlKCh2YWw6IG51bWJlcikgPT4ge1xuICAgICAgdGhpcy5yZXNldEJhdGNoU2VsZWN0b3IodmFsKTtcbiAgICB9KTtcblxuICAgIHRoaXMubG9jYXRpb25TZXJ2aWNlLmluZGV4KCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICBjb25zdCBsb2NhdGlvbnMgPSByZXNwb25zZT8uZGF0YSB8fCBbXTtcbiAgICAgIHRoaXMubG9jYXRpb25zQ291bnRWYWx1ZSA9IGxvY2F0aW9ucy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2xvY2F0aW9uX2Zyb21faWQnKT8uc2V0VmFsaWRhdG9ycyhsb2NhdGlvbnMubGVuZ3RoID4gMCA/IFZhbGlkYXRvcnMucmVxdWlyZWQgOiBudWxsKTtcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2xvY2F0aW9uX2Zyb21faWQnKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuXG4gICAgICBpZiAoIXRoaXMuc3RvY2tJc3N1ZSAmJiAhdGhpcy5mb3JtLmdldCgnbG9jYXRpb25fZnJvbV9pZCcpPy52YWx1ZSAmJiBsb2NhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdsb2NhdGlvbl9mcm9tX2lkJyk/LnNldFZhbHVlKGxvY2F0aW9uc1swXS5pZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzLmZvcm1Db25maWdTZXJ2aWNlLCAnc3RvY2staXNzdWUnKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdyZWNpcGllbnRfaWQnKT8uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICB0aGlzLmZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2UuZ2V0RmllbGRSZXF1aXJlZCgncmVjaXBpZW50X2lkJykgPyBWYWxpZGF0b3JzLnJlcXVpcmVkIDogbnVsbFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdyZWNpcGllbnRfaWQnKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucHJvZHVjdCkge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBwcm9kdWN0X2lkOiB0aGlzLnByb2R1Y3QuaWQgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5wYXRjaEZvcm1EYXRhKCk7XG4gIH1cblxuICBwYXRjaEZvcm1EYXRhKCkge1xuICAgIGlmICh0aGlzLnN0b2NrSXNzdWUpIHtcbiAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHsgLi4udGhpcy5zdG9ja0lzc3VlIH07XG4gICAgICBpZiAoZGF0YS5kYXRlKSB7XG4gICAgICAgIGRhdGEuZGF0ZSA9IG5ldyBEYXRlKGRhdGEuZGF0ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzVXBkYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKGRhdGEsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMucmVzZXRCYXRjaFNlbGVjdG9yKGRhdGEubG9jYXRpb25fZnJvbV9pZCwgZmFsc2UpO1xuICAgICAgdGhpcy5wYXRjaEZvcm1Qcm9kdWN0cyh0aGlzLnN0b2NrSXNzdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5wcm9kdWN0Py5sYXN0X3N0b2NrX2lzc3VlKSB7XG4gICAgICAgIGNvbnN0IHsgcXVhbnRpdHksIGxvY2F0aW9uX2Zyb21faWQgfSA9IHRoaXMucHJvZHVjdC5sYXN0X3N0b2NrX2lzc3VlO1xuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IHF1YW50aXR5LCBsb2NhdGlvbl9mcm9tX2lkIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhdGNoRm9ybVByb2R1Y3RzKHN0b2NrSXNzdWU6IGFueSkge1xuICAgIGlmIChzdG9ja0lzc3VlLnN0b2NrX2lzc3VlX3Byb2R1Y3RzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1XaXRoUHJvZHVjdEFycmF5KHN0b2NrSXNzdWUuc3RvY2tfaXNzdWVfcHJvZHVjdHNbMF0pO1xuICAgICAgdGhpcy5wcm9kdWN0ID0gc3RvY2tJc3N1ZS5zdG9ja19pc3N1ZV9wcm9kdWN0c1swXS5wcm9kdWN0O1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZvcm1XaXRoUHJvZHVjdEFycmF5KHN0b2NrSXNzdWVQcm9kdWN0OiBhbnkpIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBwcm9kdWN0X2lkOiBzdG9ja0lzc3VlUHJvZHVjdC5wcm9kdWN0X2lkLFxuICAgICAgcXVhbnRpdHk6IHN0b2NrSXNzdWVQcm9kdWN0LnF1YW50aXR5LFxuICAgICAgbG9jYXRpb25fZnJvbV9pZDogc3RvY2tJc3N1ZVByb2R1Y3QubG9jYXRpb25fZnJvbV9pZCxcbiAgICAgIGJhdGNoX2lkOiBzdG9ja0lzc3VlUHJvZHVjdC5iYXRjaF9pZCxcbiAgICAgIHBhcnRpY3VsYXJzOiBzdG9ja0lzc3VlUHJvZHVjdC5wYXJ0aWN1bGFycyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBsb2NhdGlvbnNDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmxvY2F0aW9uc0NvdW50VmFsdWU7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdQbGVhc2UgY2hlY2sgdGhlIGZvcm0gZm9yIGVycm9ycycsICdlcnJvcicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkYXRhOiBhbnkgPSB7XG4gICAgICAuLi50aGlzLmZvcm0udmFsdWUsXG4gICAgICBwcm9kdWN0czogW3sgLi4udGhpcy5mb3JtLnZhbHVlLCBpZDogdGhpcy5mb3JtLnZhbHVlLnByb2R1Y3RfaWQgfV0sXG4gICAgfTtcbiAgICBpZiAoZGF0YS5kYXRlKSB7XG4gICAgICBkYXRhLmRhdGUgPSB0aGlzLmRhdGVVdGlscy5nZXRZWVlZTU1ERFN0cmluZyhkYXRhLmRhdGUpO1xuICAgIH1cbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgY29uc3QgcmVxdWVzdDogYW55ID0gdGhpcy5pc1VwZGF0ZSA/IHRoaXMuc2VydmljZS51cGRhdGUoZGF0YSkgOiB0aGlzLnNlcnZpY2Uuc3RvcmUoZGF0YSk7XG4gICAgcmVxdWVzdC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzcG9uc2U/Lml0ZW0uc3RvY2tfaXNzdWVfcHJvZHVjdHMpO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydCgnU3RvY2sgSXNzdWUgU2F2ZWQgU3VjY2Vzc2Z1bGx5IScsICdzdWNjZXNzJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+ICh0aGlzLmlzV29ya2luZyA9IGZhbHNlKSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uUHJvZHVjdENoYW5nZShwcm9kdWN0OiBhbnkpIHtcbiAgICB0aGlzLnByb2R1Y3QgPSBwcm9kdWN0O1xuICB9XG5cbiAgb25CYXRjaEl0ZW1zQ2hhbmdlKCkge1xuICAgIGlmICh0aGlzLnN0b2NrSXNzdWUgJiYgIXRoaXMuaXNCYXRjaFBhdGNoZWQpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2JhdGNoX2lkJyk/LnNldFZhbHVlKHRoaXMuc3RvY2tJc3N1ZT8uc3RvY2tfaXNzdWVfcHJvZHVjdHNbMF0/LmJhdGNoX2lkKTtcbiAgICAgIHRoaXMuYmF0Y2hTZWFyY2hhYmxlU2VsZWN0b3Iuc2VsZWN0ZWRWYWx1ZSA9IHRoaXMuc3RvY2tJc3N1ZT8uc3RvY2tfaXNzdWVfcHJvZHVjdHNbMF0/LmJhdGNoO1xuICAgICAgdGhpcy5pc0JhdGNoUGF0Y2hlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldEJhdGNoU2VsZWN0b3IodmFsOiBudW1iZXIsIHJlc2V0ID0gdHJ1ZSkge1xuICAgIGlmIChyZXNldCkge1xuICAgICAgdGhpcy5mb3JtLmdldCgnYmF0Y2hfaWQnKT8uc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgICB0aGlzLmJhdGNoZXNBcGlVcmwgPSB2YWwgPyBgYXBpL3N0b2NrLXJlY2VpcHQtYmF0Y2hlcz9sb2NhdGlvbl9pZHM9JHt2YWx9YCA6ICcnO1xuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYmF0Y2hTZWFyY2hhYmxlU2VsZWN0b3IpIHtcbiAgICAgICAgaWYgKHJlc2V0KSB7XG4gICAgICAgICAgdGhpcy5iYXRjaFNlYXJjaGFibGVTZWxlY3Rvci5zZWxlY3RlZFZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJhdGNoU2VhcmNoYWJsZVNlbGVjdG9yLmFwaVVybCA9IHRoaXMuYmF0Y2hlc0FwaVVybDtcbiAgICAgICAgdGhpcy5iYXRjaFNlYXJjaGFibGVTZWxlY3Rvcj8ucmVsb2FkRGF0YSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8bWF0LWNhcmQtY29udGVudD5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICA8aDUgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYi0wXCI+XG4gICAgICBTdG9jayBJc3N1ZSBmb3JtXG5cbiAgICAgIEBpZiAoZGF0YS5wcm9kdWN0KSB7XG4gICAgICBmb3Ige3sgZGF0YS5wcm9kdWN0Py5uYW1lIH19XG4gICAgICB9XG4gICAgPC9oNT5cbiAgICA8YXBwLWZvcm0tY29uZmlndXJhdGlvbi1mb3ItZm9ybSBmb3JtQ29kZT1cInN0b2NrLWlzc3VlXCJcbiAgICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoKVwiPjwvYXBwLWZvcm0tY29uZmlndXJhdGlvbi1mb3ItZm9ybT5cbiAgPC9kaXY+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0xIGp1c3RpZnktY29udGVudC1zdGFydFwiIChzdWJtaXQpPVwic2F2ZSgpXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiIXByb2R1Y3RcIj5cbiAgICAgIDxtYXQtbGFiZWw+UHJvZHVjdDwvbWF0LWxhYmVsPlxuICAgICAgPGFwcC1zZWFyY2hhYmxlLXNlbGVjdG9yIGZvcm1Db250cm9sTmFtZT1cInByb2R1Y3RfaWRcIiBhcGlVcmw9XCJhcGkvcHJvZHVjdHNcIiB0aXRsZUZpZWxkPVwibmFtZVwiXG4gICAgICAgIHJlcXVpcmVkIChzZWxlY3RlZFZhbHVlQ2hhbmdlKT1cIm9uUHJvZHVjdENoYW5nZSgkZXZlbnQpXCI+PC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ3Byb2R1Y3RfaWQnKVwiPlxuICAgICAgICB7eyBnZXRFcnJvck1lc3NhZ2UoJ3Byb2R1Y3RfaWQnKSB9fVxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImxvY2F0aW9uc0NvdW50ID4gMVwiPlxuICAgICAgPG1hdC1sYWJlbD5Mb2NhdGlvbiBGcm9tPC9tYXQtbGFiZWw+XG4gICAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3IgZm9ybUNvbnRyb2xOYW1lPVwibG9jYXRpb25fZnJvbV9pZFwiIGFwaVVybD1cImFwaS9pbnZlbnRvcnktbG9jYXRpb25zXCJcbiAgICAgICAgcmVxdWlyZWQgW3NlbGVjdGVkVmFsdWVdPVwic3RvY2tJc3N1ZT8uc3RvY2tfaXNzdWVfcHJvZHVjdHNbMF0/LmxvY2F0aW9uXCI+PC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgICAgIDxtYXQtaGludD5XaGljaCB3YXJlaG91c2UgYXJlIHdlIHRha2luZyBzdG9jayBmcm9tPzwvbWF0LWhpbnQ+XG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdsb2NhdGlvbl9mcm9tX2lkJylcIj5cbiAgICAgICAge3sgZ2V0RXJyb3JNZXNzYWdlKCdsb2NhdGlvbl9mcm9tX2lkJykgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9jYXRpb25zQ291bnQgPiAxICYmIGZvcm0udmFsdWU/LmxvY2F0aW9uX2Zyb21faWQgJiYgYmF0Y2hlc0FwaVVybFwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIHRlY2hsaWZ5RmVhdHVyZUVuYWJsZWQ9XCJwcm9kdWN0LWJhdGNoLW51bWJlcnNcIj5cbiAgICAgICAgPG1hdC1sYWJlbD5CYXRjaDwvbWF0LWxhYmVsPlxuICAgICAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3IgI2JhdGNoU2VhcmNoYWJsZVNlbGVjdG9yIGZvcm1Db250cm9sTmFtZT1cImJhdGNoX2lkXCIgW2FwaVVybF09XCJiYXRjaGVzQXBpVXJsXCJcbiAgICAgICAgICBbZW5hYmxlU2VhcmNoXT1cImZhbHNlXCIgKGl0ZW1zQ2hhbmdlKT1cIm9uQmF0Y2hJdGVtc0NoYW5nZSgpXCI+XG4gICAgICAgIDwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1sYWJlbD5EYXRlPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwiZGF0ZVBpY2tlclwiIGZvcm1Db250cm9sTmFtZT1cImRhdGVcIiAoZm9jdXMpPVwiZGF0ZVBpY2tlci5vcGVuKClcIiAvPlxuICAgICAgPG1hdC1kYXRlcGlja2VyICNkYXRlUGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdkYXRlJylcIj5cbiAgICAgICAge3sgZ2V0RXJyb3JNZXNzYWdlKCdkYXRlJykgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJmb3JtQ29uZmlndXJhdGlvblV0aWxpdHlTZXJ2aWNlLmdldEZpZWxkRW5hYmxlZCgncmVjaXBpZW50X2lkJylcIj5cbiAgICAgIDxtYXQtbGFiZWw+UmVjaXBpZW50XG4gICAgICAgIDxzdXAgKm5nSWY9XCJmb3JtQ29uZmlndXJhdGlvblV0aWxpdHlTZXJ2aWNlLmdldEZpZWxkUmVxdWlyZWQoJ3JlY2lwaWVudF9pZCcpXCI+Kjwvc3VwPlxuICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3IgZm9ybUNvbnRyb2xOYW1lPVwicmVjaXBpZW50X2lkXCIgYXBpVXJsPVwiYXBpL3JlY2lwaWVudHNcIlxuICAgICAgICB0aXRsZUZpZWxkPVwibmFtZVwiPjwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdyZWNpcGllbnRfaWQnKVwiPlxuICAgICAgICB7eyBnZXRFcnJvck1lc3NhZ2UoJ3JlY2lwaWVudF9pZCcpIH19XG4gICAgICA8L21hdC1lcnJvcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1sYWJlbD5RdWFudGl0eTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInF1YW50aXR5XCIgdHlwZT1cIm51bWJlclwiIG1pbj1cIjBcIiAvPlxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgncXVhbnRpdHknKVwiPlxuICAgICAgICB7eyBnZXRFcnJvck1lc3NhZ2UoJ3F1YW50aXR5JykgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPlBhcnRpY3VsYXJzPC9tYXQtbGFiZWw+XG4gICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicGFydGljdWxhcnNcIiByb3dzPVwiM1wiPjwvdGV4dGFyZWE+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImlzV29ya2luZ1wiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJzdWJtaXRcIj5TYXZlPC9idXR0b24+XG4gICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJpc1dvcmtpbmdcIiAoY2xpY2spPVwiZGlhbG9nUmVmLmNsb3NlKClcIiBtYXQtZmxhdC1idXR0b24gdHlwZT1cImJ1dHRvblwiPkNhbmNlbDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L21hdC1jYXJkLWNvbnRlbnQ+Il19
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWUtc2luZ2xlLXByb2R1Y3QtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay1pc3N1ZS9zdG9jay1pc3N1ZS1zaW5nbGUtcHJvZHVjdC1mb3JtL3N0b2NrLWlzc3VlLXNpbmdsZS1wcm9kdWN0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2staXNzdWUvc3RvY2staXNzdWUtc2luZ2xlLXByb2R1Y3QtZm9ybS9zdG9jay1pc3N1ZS1zaW5nbGUtcHJvZHVjdC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUVMLDhCQUE4QixFQUU5QiwrQkFBK0IsRUFHL0Isd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixxQkFBcUIsR0FDdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFlLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRzFGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBaUIxRCxNQUFNLE9BQU8sb0NBQXFDLFNB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Q0FBcUMsY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2Ysd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLDhCQUE4QjtxQkFDL0I7OzBCQXVCRSxRQUFROzswQkFDUixNQUFNOzJCQUFDLGVBQWU7OzBCQUFHLFFBQVE7eUNBbkJFLHVCQUF1QjtzQkFBNUQsU0FBUzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBEYXRlVXRpbHMsXG4gIEZvcm1Db25maWd1cmF0aW9uRm9yRm9ybU1vZHVsZSxcbiAgRm9ybUNvbmZpZ3VyYXRpb25Gb3JtU2VydmljZSxcbiAgRm9ybUNvbmZpZ3VyYXRpb25VdGlsaXR5U2VydmljZSxcbiAgRm9ybVZhbGlkYXRvclNlcnZpY2UsXG4gIFNlYXJjaGFibGVTZWxlY3RvckNvbXBvbmVudCxcbiAgU2VhcmNoYWJsZVNlbGVjdG9yTW9kdWxlLFxuICBUZWNobGlmeUZlYXR1cmVNb2R1bGUsXG4gIFRlY2hsaWZ5Rm9ybUNvbXBvbmVudCxcbn0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dNb2R1bGUsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTdG9ja0lzc3VlU2VydmljZSB9IGZyb20gJy4uL3N0b2NrLWlzc3VlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbG9jYXRpb24vbG9jYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uLy4uL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zdG9jay1pc3N1ZS1zaW5nbGUtcHJvZHVjdC1mb3JtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICBTZWFyY2hhYmxlU2VsZWN0b3JNb2R1bGUsXG4gICAgVGVjaGxpZnlGZWF0dXJlTW9kdWxlLFxuICAgIEZvcm1Db25maWd1cmF0aW9uRm9yRm9ybU1vZHVsZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0b2NrLWlzc3VlLXNpbmdsZS1wcm9kdWN0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdG9jay1pc3N1ZS1zaW5nbGUtcHJvZHVjdC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFN0b2NrSXNzdWVTaW5nbGVQcm9kdWN0Rm9ybUNvbXBvbmVudCBleHRlbmRzIFRlY2hsaWZ5Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2JhdGNoU2VhcmNoYWJsZVNlbGVjdG9yJykgYmF0Y2hTZWFyY2hhYmxlU2VsZWN0b3IhOiBTZWFyY2hhYmxlU2VsZWN0b3JDb21wb25lbnQ7XG5cbiAgcHJvZHVjdDogYW55O1xuICBzdG9ja0lzc3VlOiBhbnk7XG5cbiAgcHJpdmF0ZSBsb2NhdGlvbnNDb3VudFZhbHVlOiBudW1iZXIgPSAwO1xuICBiYXRjaGVzQXBpVXJsID0gJyc7XG4gIGlzQmF0Y2hQYXRjaGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2U6IEZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGZvcm1WYWxpZGF0b3JTZXJ2aWNlOiBGb3JtVmFsaWRhdG9yU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2VydmljZTogU3RvY2tJc3N1ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBkYXRlVXRpbHM6IERhdGVVdGlscyxcbiAgICBwcml2YXRlIGxvY2F0aW9uU2VydmljZTogTG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUNvbmZpZ1NlcnZpY2U6IEZvcm1Db25maWd1cmF0aW9uRm9ybVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIG92ZXJyaWRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFN0b2NrSXNzdWVTaW5nbGVQcm9kdWN0Rm9ybUNvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIEBPcHRpb25hbCgpIHB1YmxpYyBkYXRhOiB7IG1vZGVsPzogYW55OyBwcm9kdWN0PzogYW55IH0sXG4gICkge1xuICAgIHN1cGVyKGZvcm1WYWxpZGF0b3JTZXJ2aWNlKTtcbiAgICB0aGlzLmZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2UgPSBuZXcgRm9ybUNvbmZpZ3VyYXRpb25VdGlsaXR5U2VydmljZSgpO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IHtcbiAgICAgIGRhdGU6IHsgcmVxdWlyZWQ6ICdUaGUgZGF0ZSBmaWVsZCBpcyByZXF1aXJlZC4nIH0sXG4gICAgICBxdWFudGl0eTogeyByZXF1aXJlZDogJ1RoZSBxdWFudGl0eSBmaWVsZCBpcyByZXF1aXJlZC4nIH0sXG4gICAgICBwcm9kdWN0X2lkOiB7IHJlcXVpcmVkOiAnVGhlIHByb2R1Y3QgZmllbGQgaXMgcmVxdWlyZWQuJyB9LFxuICAgICAgbG9jYXRpb25fZnJvbV9pZDogeyByZXF1aXJlZDogJ1RoZSBsb2NhdGlvbiBmaWVsZCBpcyByZXF1aXJlZC4nIH0sXG4gICAgICByZWNpcGllbnRfaWQ6IHsgcmVxdWlyZWQ6ICdQbGVhc2Ugc2VsZWN0IGEgcmVjaXBpZW50LicgfSxcbiAgICB9O1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgaWQ6IFsnJ10sXG4gICAgICBwcm9kdWN0X2lkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgbG9jYXRpb25fZnJvbV9pZDogWycnXSxcbiAgICAgIGJhdGNoX2lkOiBbJyddLFxuICAgICAgZGF0ZTogW25ldyBEYXRlKCksIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcmVjaXBpZW50X2lkOiBbJyddLFxuICAgICAgcXVhbnRpdHk6IFsxLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHBhcnRpY3VsYXJzOiBbJyddLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wcm9kdWN0ID0gdGhpcy5kYXRhPy5wcm9kdWN0O1xuICAgIHRoaXMuc3RvY2tJc3N1ZSA9IHRoaXMuZGF0YT8ubW9kZWw7XG5cbiAgICB0aGlzLmZvcm0uZ2V0KCdsb2NhdGlvbl9mcm9tX2lkJyk/LnZhbHVlQ2hhbmdlcz8ucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICkuc3Vic2NyaWJlKCh2YWw6IG51bWJlcikgPT4ge1xuICAgICAgdGhpcy5yZXNldEJhdGNoU2VsZWN0b3IodmFsKTtcbiAgICB9KTtcblxuICAgIHRoaXMubG9jYXRpb25TZXJ2aWNlLmluZGV4KHsgc3RhdHVzX2lkczogJzEnIH0pLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgY29uc3QgbG9jYXRpb25zID0gcmVzcG9uc2U/LmRhdGEgfHwgW107XG4gICAgICB0aGlzLmxvY2F0aW9uc0NvdW50VmFsdWUgPSBsb2NhdGlvbnMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdsb2NhdGlvbl9mcm9tX2lkJyk/LnNldFZhbGlkYXRvcnMobG9jYXRpb25zLmxlbmd0aCA+IDAgPyBWYWxpZGF0b3JzLnJlcXVpcmVkIDogbnVsbCk7XG4gICAgICB0aGlzLmZvcm0uZ2V0KCdsb2NhdGlvbl9mcm9tX2lkJyk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcblxuICAgICAgaWYgKCF0aGlzLnN0b2NrSXNzdWUgJiYgIXRoaXMuZm9ybS5nZXQoJ2xvY2F0aW9uX2Zyb21faWQnKT8udmFsdWUgJiYgbG9jYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnbG9jYXRpb25fZnJvbV9pZCcpPy5zZXRWYWx1ZShsb2NhdGlvbnNbMF0uaWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JtQ29uZmlndXJhdGlvblV0aWxpdHlTZXJ2aWNlLmluaXRpYWxpemUodGhpcy5mb3JtQ29uZmlnU2VydmljZSwgJ3N0b2NrLWlzc3VlJykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgncmVjaXBpZW50X2lkJyk/LnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgdGhpcy5mb3JtQ29uZmlndXJhdGlvblV0aWxpdHlTZXJ2aWNlLmdldEZpZWxkUmVxdWlyZWQoJ3JlY2lwaWVudF9pZCcpID8gVmFsaWRhdG9ycy5yZXF1aXJlZCA6IG51bGxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgncmVjaXBpZW50X2lkJyk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnByb2R1Y3QpIHtcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgcHJvZHVjdF9pZDogdGhpcy5wcm9kdWN0LmlkIH0pO1xuICAgIH1cblxuICAgIHRoaXMucGF0Y2hGb3JtRGF0YSgpO1xuICB9XG5cbiAgcGF0Y2hGb3JtRGF0YSgpIHtcbiAgICBpZiAodGhpcy5zdG9ja0lzc3VlKSB7XG4gICAgICBjb25zdCBkYXRhOiBhbnkgPSB7IC4uLnRoaXMuc3RvY2tJc3N1ZSB9O1xuICAgICAgaWYgKGRhdGEuZGF0ZSkge1xuICAgICAgICBkYXRhLmRhdGUgPSBuZXcgRGF0ZShkYXRhLmRhdGUpO1xuICAgICAgfVxuICAgICAgdGhpcy5pc1VwZGF0ZSA9IHRydWU7XG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShkYXRhLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB0aGlzLnJlc2V0QmF0Y2hTZWxlY3RvcihkYXRhLmxvY2F0aW9uX2Zyb21faWQsIGZhbHNlKTtcbiAgICAgIHRoaXMucGF0Y2hGb3JtUHJvZHVjdHModGhpcy5zdG9ja0lzc3VlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMucHJvZHVjdD8ubGFzdF9zdG9ja19pc3N1ZSkge1xuICAgICAgICBjb25zdCB7IHF1YW50aXR5LCBsb2NhdGlvbl9mcm9tX2lkIH0gPSB0aGlzLnByb2R1Y3QubGFzdF9zdG9ja19pc3N1ZTtcbiAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBxdWFudGl0eSwgbG9jYXRpb25fZnJvbV9pZCB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYXRjaEZvcm1Qcm9kdWN0cyhzdG9ja0lzc3VlOiBhbnkpIHtcbiAgICBpZiAoc3RvY2tJc3N1ZS5zdG9ja19pc3N1ZV9wcm9kdWN0cz8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy51cGRhdGVGb3JtV2l0aFByb2R1Y3RBcnJheShzdG9ja0lzc3VlLnN0b2NrX2lzc3VlX3Byb2R1Y3RzWzBdKTtcbiAgICAgIHRoaXMucHJvZHVjdCA9IHN0b2NrSXNzdWUuc3RvY2tfaXNzdWVfcHJvZHVjdHNbMF0ucHJvZHVjdDtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVGb3JtV2l0aFByb2R1Y3RBcnJheShzdG9ja0lzc3VlUHJvZHVjdDogYW55KSB7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgcHJvZHVjdF9pZDogc3RvY2tJc3N1ZVByb2R1Y3QucHJvZHVjdF9pZCxcbiAgICAgIHF1YW50aXR5OiBzdG9ja0lzc3VlUHJvZHVjdC5xdWFudGl0eSxcbiAgICAgIGxvY2F0aW9uX2Zyb21faWQ6IHN0b2NrSXNzdWVQcm9kdWN0LmxvY2F0aW9uX2Zyb21faWQsXG4gICAgICBiYXRjaF9pZDogc3RvY2tJc3N1ZVByb2R1Y3QuYmF0Y2hfaWQsXG4gICAgICBwYXJ0aWN1bGFyczogc3RvY2tJc3N1ZVByb2R1Y3QucGFydGljdWxhcnMsXG4gICAgfSk7XG4gIH1cblxuICBnZXQgbG9jYXRpb25zQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5sb2NhdGlvbnNDb3VudFZhbHVlO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcbiAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydCgnUGxlYXNlIGNoZWNrIHRoZSBmb3JtIGZvciBlcnJvcnMnLCAnZXJyb3InKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGF0YTogYW55ID0ge1xuICAgICAgLi4udGhpcy5mb3JtLnZhbHVlLFxuICAgICAgcHJvZHVjdHM6IFt7IC4uLnRoaXMuZm9ybS52YWx1ZSwgaWQ6IHRoaXMuZm9ybS52YWx1ZS5wcm9kdWN0X2lkIH1dLFxuICAgIH07XG4gICAgaWYgKGRhdGEuZGF0ZSkge1xuICAgICAgZGF0YS5kYXRlID0gdGhpcy5kYXRlVXRpbHMuZ2V0WVlZWU1NRERTdHJpbmcoZGF0YS5kYXRlKTtcbiAgICB9XG4gICAgdGhpcy5pc1dvcmtpbmcgPSB0cnVlO1xuICAgIGNvbnN0IHJlcXVlc3Q6IGFueSA9IHRoaXMuaXNVcGRhdGUgPyB0aGlzLnNlcnZpY2UudXBkYXRlKGRhdGEpIDogdGhpcy5zZXJ2aWNlLnN0b3JlKGRhdGEpO1xuICAgIHJlcXVlc3Quc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNXb3JraW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3BvbnNlPy5pdGVtLnN0b2NrX2lzc3VlX3Byb2R1Y3RzKTtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkQWxlcnQoJ1N0b2NrIElzc3VlIFNhdmVkIFN1Y2Nlc3NmdWxseSEnLCAnc3VjY2VzcycpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5pc1dvcmtpbmcgPSBmYWxzZSksXG4gICAgfSk7XG4gIH1cblxuICBvblByb2R1Y3RDaGFuZ2UocHJvZHVjdDogYW55KSB7XG4gICAgdGhpcy5wcm9kdWN0ID0gcHJvZHVjdDtcbiAgfVxuXG4gIG9uQmF0Y2hJdGVtc0NoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5zdG9ja0lzc3VlICYmICF0aGlzLmlzQmF0Y2hQYXRjaGVkKSB7XG4gICAgICB0aGlzLmZvcm0uZ2V0KCdiYXRjaF9pZCcpPy5zZXRWYWx1ZSh0aGlzLnN0b2NrSXNzdWU/LnN0b2NrX2lzc3VlX3Byb2R1Y3RzWzBdPy5iYXRjaF9pZCk7XG4gICAgICB0aGlzLmJhdGNoU2VhcmNoYWJsZVNlbGVjdG9yLnNlbGVjdGVkVmFsdWUgPSB0aGlzLnN0b2NrSXNzdWU/LnN0b2NrX2lzc3VlX3Byb2R1Y3RzWzBdPy5iYXRjaDtcbiAgICAgIHRoaXMuaXNCYXRjaFBhdGNoZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRCYXRjaFNlbGVjdG9yKHZhbDogbnVtYmVyLCByZXNldCA9IHRydWUpIHtcbiAgICBpZiAocmVzZXQpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2JhdGNoX2lkJyk/LnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gICAgdGhpcy5iYXRjaGVzQXBpVXJsID0gdmFsID8gYGFwaS9zdG9jay1yZWNlaXB0LWJhdGNoZXM/bG9jYXRpb25faWRzPSR7dmFsfWAgOiAnJztcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmJhdGNoU2VhcmNoYWJsZVNlbGVjdG9yKSB7XG4gICAgICAgIGlmIChyZXNldCkge1xuICAgICAgICAgIHRoaXMuYmF0Y2hTZWFyY2hhYmxlU2VsZWN0b3Iuc2VsZWN0ZWRWYWx1ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iYXRjaFNlYXJjaGFibGVTZWxlY3Rvci5hcGlVcmwgPSB0aGlzLmJhdGNoZXNBcGlVcmw7XG4gICAgICAgIHRoaXMuYmF0Y2hTZWFyY2hhYmxlU2VsZWN0b3I/LnJlbG9hZERhdGEoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPG1hdC1jYXJkLWNvbnRlbnQ+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgPGg1IGNsYXNzPVwidGV4dC1jZW50ZXIgbWItMFwiPlxuICAgICAgU3RvY2sgSXNzdWUgZm9ybVxuXG4gICAgICBAaWYgKGRhdGEucHJvZHVjdCkge1xuICAgICAgZm9yIHt7IGRhdGEucHJvZHVjdD8ubmFtZSB9fVxuICAgICAgfVxuICAgIDwvaDU+XG4gICAgPGFwcC1mb3JtLWNvbmZpZ3VyYXRpb24tZm9yLWZvcm0gZm9ybUNvZGU9XCJzdG9jay1pc3N1ZVwiXG4gICAgICAoY2xpY2spPVwiZGlhbG9nUmVmLmNsb3NlKClcIj48L2FwcC1mb3JtLWNvbmZpZ3VyYXRpb24tZm9yLWZvcm0+XG4gIDwvZGl2PlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMSBqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcIiAoc3VibWl0KT1cInNhdmUoKVwiPlxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIiFwcm9kdWN0XCI+XG4gICAgICA8bWF0LWxhYmVsPlByb2R1Y3Q8L21hdC1sYWJlbD5cbiAgICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciBmb3JtQ29udHJvbE5hbWU9XCJwcm9kdWN0X2lkXCIgYXBpVXJsPVwiYXBpL3Byb2R1Y3RzXCIgdGl0bGVGaWVsZD1cIm5hbWVcIlxuICAgICAgICByZXF1aXJlZCAoc2VsZWN0ZWRWYWx1ZUNoYW5nZSk9XCJvblByb2R1Y3RDaGFuZ2UoJGV2ZW50KVwiPjwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdwcm9kdWN0X2lkJylcIj5cbiAgICAgICAge3sgZ2V0RXJyb3JNZXNzYWdlKCdwcm9kdWN0X2lkJykgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJsb2NhdGlvbnNDb3VudCA+IDFcIj5cbiAgICAgIDxtYXQtbGFiZWw+TG9jYXRpb24gRnJvbTwvbWF0LWxhYmVsPlxuICAgICAgPGFwcC1zZWFyY2hhYmxlLXNlbGVjdG9yIGZvcm1Db250cm9sTmFtZT1cImxvY2F0aW9uX2Zyb21faWRcIiBhcGlVcmw9XCJhcGkvaW52ZW50b3J5LWxvY2F0aW9ucz9zdGF0dXNfaWRzPTFcIlxuICAgICAgICByZXF1aXJlZCBbc2VsZWN0ZWRWYWx1ZV09XCJzdG9ja0lzc3VlPy5zdG9ja19pc3N1ZV9wcm9kdWN0c1swXT8ubG9jYXRpb25cIj48L2FwcC1zZWFyY2hhYmxlLXNlbGVjdG9yPlxuICAgICAgPG1hdC1oaW50PldoaWNoIHdhcmVob3VzZSBhcmUgd2UgdGFraW5nIHN0b2NrIGZyb20/PC9tYXQtaGludD5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ2xvY2F0aW9uX2Zyb21faWQnKVwiPlxuICAgICAgICB7eyBnZXRFcnJvck1lc3NhZ2UoJ2xvY2F0aW9uX2Zyb21faWQnKSB9fVxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2NhdGlvbnNDb3VudCA+IDEgJiYgZm9ybS52YWx1ZT8ubG9jYXRpb25fZnJvbV9pZCAmJiBiYXRjaGVzQXBpVXJsXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgdGVjaGxpZnlGZWF0dXJlRW5hYmxlZD1cInByb2R1Y3QtYmF0Y2gtbnVtYmVyc1wiPlxuICAgICAgICA8bWF0LWxhYmVsPkJhdGNoPC9tYXQtbGFiZWw+XG4gICAgICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciAjYmF0Y2hTZWFyY2hhYmxlU2VsZWN0b3IgZm9ybUNvbnRyb2xOYW1lPVwiYmF0Y2hfaWRcIiBbYXBpVXJsXT1cImJhdGNoZXNBcGlVcmxcIlxuICAgICAgICAgIFtlbmFibGVTZWFyY2hdPVwiZmFsc2VcIiAoaXRlbXNDaGFuZ2UpPVwib25CYXRjaEl0ZW1zQ2hhbmdlKClcIj5cbiAgICAgICAgPC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPkRhdGU8L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJkYXRlUGlja2VyXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZVwiIChmb2N1cyk9XCJkYXRlUGlja2VyLm9wZW4oKVwiIC8+XG4gICAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGVQaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ2RhdGUnKVwiPlxuICAgICAgICB7eyBnZXRFcnJvck1lc3NhZ2UoJ2RhdGUnKSB9fVxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2UuZ2V0RmllbGRFbmFibGVkKCdyZWNpcGllbnRfaWQnKVwiPlxuICAgICAgPG1hdC1sYWJlbD5SZWNpcGllbnRcbiAgICAgICAgPHN1cCAqbmdJZj1cImZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2UuZ2V0RmllbGRSZXF1aXJlZCgncmVjaXBpZW50X2lkJylcIj4qPC9zdXA+XG4gICAgICA8L21hdC1sYWJlbD5cbiAgICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciBmb3JtQ29udHJvbE5hbWU9XCJyZWNpcGllbnRfaWRcIiBhcGlVcmw9XCJhcGkvcmVjaXBpZW50c1wiXG4gICAgICAgIHRpdGxlRmllbGQ9XCJuYW1lXCI+PC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ3JlY2lwaWVudF9pZCcpXCI+XG4gICAgICAgIHt7IGdldEVycm9yTWVzc2FnZSgncmVjaXBpZW50X2lkJykgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPlF1YW50aXR5PC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicXVhbnRpdHlcIiB0eXBlPVwibnVtYmVyXCIgbWluPVwiMFwiIC8+XG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdxdWFudGl0eScpXCI+XG4gICAgICAgIHt7IGdldEVycm9yTWVzc2FnZSgncXVhbnRpdHknKSB9fVxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWw+UGFydGljdWxhcnM8L21hdC1sYWJlbD5cbiAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0aWN1bGFyc1wiIHJvd3M9XCIzXCI+PC90ZXh0YXJlYT5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNXb3JraW5nXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiPlNhdmU8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImlzV29ya2luZ1wiIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoKVwiIG1hdC1mbGF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvbWF0LWNhcmQtY29udGVudD4iXX0=
|