@elite.framework/ng.ui.core 1.0.34 → 1.0.36
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/fesm2022/elite.framework-ng.ui.core-base-crud.mjs +15 -1
- package/fesm2022/elite.framework-ng.ui.core-base-crud.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-crud-table.mjs +0 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-crud-table.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-search.mjs +2 -2
- package/fesm2022/elite.framework-ng.ui.core-generic-search.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-table.mjs +0 -4
- package/fesm2022/elite.framework-ng.ui.core-generic-table.mjs.map +1 -1
- package/package.json +16 -16
|
@@ -292,7 +292,21 @@ class BaseCrud {
|
|
|
292
292
|
if (!field.props || field.props['filter']?.hidden === true) {
|
|
293
293
|
return [];
|
|
294
294
|
}
|
|
295
|
-
|
|
295
|
+
// Merge base props with filter overrides
|
|
296
|
+
const mergedProps = {
|
|
297
|
+
...field.props,
|
|
298
|
+
...field.props['filter']?.props,
|
|
299
|
+
};
|
|
300
|
+
// Remove disabled and required props
|
|
301
|
+
delete mergedProps['disabled'];
|
|
302
|
+
delete mergedProps['required'];
|
|
303
|
+
delete mergedProps['loadDefault'];
|
|
304
|
+
return [{
|
|
305
|
+
type: field.type,
|
|
306
|
+
key: field.key, // always set key for table rendering
|
|
307
|
+
props: mergedProps,
|
|
308
|
+
// expressions: field.props['filter']?.expressions // uncomment if needed
|
|
309
|
+
}];
|
|
296
310
|
});
|
|
297
311
|
};
|
|
298
312
|
return flattenForFilter(this.formFields);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elite.framework-ng.ui.core-base-crud.mjs","sources":["../tmp-esm2022/base-crud/lib/base-crud-module.js","../tmp-esm2022/base-crud/lib/base-crud.js","../tmp-esm2022/base-crud/elite.framework-ng.ui.core-base-crud.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class BaseCrudModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrudModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrudModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrudModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrudModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jcnVkLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9iYXNlLWNydWQvc3JjL2xpYi9iYXNlLWNydWQtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sY0FBYzt1R0FBZCxjQUFjO3dHQUFkLGNBQWMsWUFGZixZQUFZO3dHQUVYLGNBQWMsWUFGZixZQUFZOzsyRkFFWCxjQUFjO2tCQUgxQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VDcnVkTW9kdWxlIHt9XG4iXX0=","import { Directive, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { SwalService } from '@elite.framework/ng.core/services';\nimport { DeactivationReasonFormComponent } from '@elite.framework/ng.ui.core/deactivation-reason';\nimport * as i0 from \"@angular/core\";\nexport class BaseCrud {\n list = [];\n paginator = true;\n canLoad = true;\n loading = false;\n errorMsg = '';\n first = 0;\n rows = 10;\n totalRecords = 0;\n searchGlobal = '';\n sort;\n pageFilters = {};\n currentFilters = {};\n mode = '';\n scrollHeight = '400px';\n swalService = inject(SwalService);\n dialogRef;\n dialogVisible = false;\n drawerVisible = false;\n selectedItem = null;\n defaultModel = null;\n // selectedItem: T | any = {};\n isViewMode = false;\n isEditMode = false;\n displayMode = 'drawer';\n router = inject(Router);\n route = inject(ActivatedRoute);\n loadPage(pageIndex, pageSize) {\n if (this.canLoad) {\n this.loading = true;\n const filters = {\n maxResultCount: pageSize,\n skipCount: pageIndex,\n sorting: this.sort,\n ...this.currentFilters,\n ...this.pageFilters,\n ...(this.searchGlobal ? { filter: this.searchGlobal } : {}),\n };\n //\n this.service.getList(filters)\n .subscribe({\n next: (res) => {\n //\n this.list = res.items;\n this.totalRecords = res.totalCount;\n this.loading = false;\n },\n error: (err) => {\n this.errorMsg = err.error?.message || err.message || 'خطأ في التحميل';\n this.loading = false;\n }\n });\n }\n }\n onSearch(filters) {\n //\n if (filters && typeof filters === 'object' && !Array.isArray(filters)) {\n this.pageFilters = filters;\n }\n else {\n this.searchGlobal = filters;\n }\n this.loadPage(0, 10);\n }\n onPageChange(event) {\n // فك المتغيّرات مع قيمة افتراضية لفلاتر\n const { first = this.first, rows = this.rows, sort = this.sort, filters = {} } = event;\n this.first = first;\n this.rows = rows;\n this.sort = sort;\n // const pageIndex = Math.floor(first / rows);\n const skipCount = first;\n const pageIndex = skipCount;\n // الوصول للفلتر العام عبر الصيغة المربعة\n const globalValue = filters['global'];\n this.searchGlobal = typeof globalValue === 'string' ? globalValue : '';\n // فلترة خاصة بحقل واحد\n // const fieldFilters = { ...filters };\n // delete fieldFilters['global'];\n // this.currentFilters = fieldFilters as Partial<F>;\n this.loadPage(pageIndex, rows);\n }\n openEditor(item, mode) {\n this.mode = mode;\n this.selectedItem = item ?? this.defaultModel ?? {};\n this.isEditMode = mode === 'edit';\n this.isViewMode = mode === 'view';\n // resolve displayMode (string or map)\n const modeConfig = typeof this.displayMode === 'string'\n ? this.displayMode\n : this.displayMode[mode] ?? 'drawer';\n switch (modeConfig) {\n case 'drawer':\n this.drawerVisible = true;\n break;\n case 'dialog':\n this.dialogVisible = true;\n break;\n case 'route':\n {\n const id = item ? item[this.idField] : 'new';\n if (mode === 'add') {\n this.router.navigate([mode], { relativeTo: this.route });\n }\n else {\n this.router.navigate([id, mode], { relativeTo: this.route });\n }\n break;\n }\n }\n }\n visibleChange(value) {\n const modeConfig = typeof this.displayMode === 'string'\n ? this.displayMode\n : this.displayMode[this.mode] ?? 'drawer';\n if (modeConfig === 'dialog') {\n this.dialogVisible = value;\n }\n else if (modeConfig === 'drawer') {\n this.drawerVisible = value;\n }\n else {\n // route mode does not use drawer/dialog\n }\n }\n // onTableAction(event: { name: string; row: T | null }): void {\n // switch (event.name) {\n // case 'add': this.openDrawer(null,event.name); break;\n // case 'view': this.openDrawer(event.row!,event.name); break;\n // case 'edit': this.openDrawer(event.row!,event.name); break;\n // case 'delete': this.onDelete(event.row!);break;\n // case 'state': this.openDeactivationReason(event.row!);break;\n // }\n // }\n onTableAction(event) {\n switch (event.name) {\n case 'add':\n case 'edit':\n case 'view':\n this.openEditor(event.row, event.name);\n break;\n case 'delete':\n this.onDelete(event.row);\n break;\n case 'state':\n this.openDeactivationReason(event.row);\n break;\n }\n }\n openDrawer(item, mode) {\n this.mode = mode;\n // this.drawerVisible = !this.drawerVisible;\n if (item == null) {\n this.selectedItem = this.defaultModel || {};\n }\n else {\n this.selectedItem = item;\n }\n if (mode == 'edit') {\n this.drawerVisible = true;\n this.isEditMode = true;\n this.isViewMode = false;\n // this.isEditMode = item !=null ;\n }\n if (mode == 'add') {\n this.drawerVisible = true;\n this.isViewMode = false;\n this.isEditMode = false;\n }\n if (mode == 'view') {\n // this.drawerVisible = true;\n this.dialogVisible = true;\n this.isViewMode = true;\n this.isEditMode = false;\n }\n }\n openDeactivationReason(model) {\n this.selectedItem = model;\n if (this.selectedItem.isActive == true) {\n const ref = this.dialogService.open(DeactivationReasonFormComponent, {\n header: 'السبب (في حال تم إيقافه)',\n width: '30vw',\n data: { model: { ...model },\n fields: this.formFields,\n service: this.service,\n idField: this.idField },\n });\n ref.onClose.subscribe((result) => {\n if (result) {\n this.selectedItem.isActive = false;\n this.selectedItem.deactivationReason = result.deactivationReason;\n // Optionally: save model via API\n }\n });\n }\n else {\n this.selectedItem.isActive = true;\n this.selectedItem.deactivationReason = \"\";\n const id = this.selectedItem[this.idField];\n this.service.update(id, this.selectedItem).subscribe({\n next: () => { console.log(''); },\n error: (err) => {\n this.loading = false;\n }\n });\n }\n }\n // onDelete(item: any): void {\n // if (!confirm('هل تريد الحذف فعلاً؟')) return;\n // const id = (item as any)[this.idField];\n // this.service.delete(id).subscribe(() => {\n // this.loadPage(0, this.rows);\n // });\n // }\n onDelete(item) {\n const id = item[this.idField];\n this.swalService.confirm('تأكيد الحذف', 'هل تريد حذف هذا السجل فعلاً؟', 'نعم، احذف', 'إلغاء').then((result) => {\n if (result.isConfirmed) {\n this.service.delete(id).subscribe({\n next: () => {\n this.loadPage(0, this.rows);\n this.swalService.success('تم الحذف بنجاح');\n },\n error: (err) => {\n this.loading = false;\n const msg = err.error?.title ||\n err.message ||\n 'حدث خطأ أثناء الحفظ. يرجى المحاولة مرة أخرى.';\n // this.errorMessage = msg;\n // ❌ رسالة خطأ\n this.swalService.error('فشل الحذف', msg);\n }\n });\n }\n });\n }\n get columns() {\n const flattenFields = (fields) => {\n return fields.flatMap(field => {\n // Check for nested group/panel\n if (field.fieldGroup?.length) {\n return flattenFields(field.fieldGroup);\n }\n // Skip fields with no props or table.hidden === true\n if (!field.props || field.props['table']?.hidden === true) {\n return [];\n }\n // Determine the column type: table.type > field.type > 'label-type'\n // const tableType = field.props['table']?.type || field.type || 'label-type';\n const tableType = field.props['table']?.type || 'label-type';\n //\n return [{\n type: tableType,\n key: field['key'], // always set key for table rendering\n props: {\n ...field.props, // base props\n ...field.props['table']?.props // table-specific overrides\n },\n expressions: field.props['table']?.expressions\n }];\n });\n };\n return flattenFields(this.formFields);\n }\n get filters() {\n const flattenForFilter = (fields) => {\n return fields.flatMap(field => {\n if (field.fieldGroup?.length) {\n // Recursively handle nested panels/groups\n return flattenForFilter(field.fieldGroup);\n }\n // Skip fields with no props or filter.hidden === true\n if (!field.props || field.props['filter']?.hidden === true) {\n return [];\n }\n return [field];\n });\n };\n return flattenForFilter(this.formFields);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrud, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.8\", type: BaseCrud, isStandalone: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrud, decorators: [{\n type: Directive\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jcnVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2Jhc2UtY3J1ZC9zcmMvbGliL2Jhc2UtY3J1ZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFHbEcsTUFBTSxPQUFnQixRQUFRO0lBQzVCLElBQUksR0FBc0IsRUFBRSxDQUFDO0lBQzdCLFNBQVMsR0FBVSxJQUFJLENBQUM7SUFDeEIsT0FBTyxHQUFVLElBQUksQ0FBQztJQUN0QixPQUFPLEdBQVUsS0FBSyxDQUFDO0lBQ3ZCLFFBQVEsR0FBVSxFQUFFLENBQUM7SUFDckIsS0FBSyxHQUFhLENBQUMsQ0FBQztJQUNwQixJQUFJLEdBQWMsRUFBRSxDQUFDO0lBQ3JCLFlBQVksR0FBTSxDQUFDLENBQUM7SUFDcEIsWUFBWSxHQUFNLEVBQUUsQ0FBQztJQUNyQixJQUFJLENBQVU7SUFDZCxXQUFXLEdBQWUsRUFBRSxDQUFDO0lBQzdCLGNBQWMsR0FBZSxFQUFFLENBQUM7SUFDaEMsSUFBSSxHQUFFLEVBQUUsQ0FBQztJQUNULFlBQVksR0FBRSxPQUFPLENBQUM7SUFDZCxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRWhDLFNBQVMsQ0FBb0I7SUFhdkMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLFlBQVksR0FBWSxJQUFJLENBQUM7SUFDN0IsWUFBWSxHQUFZLElBQUksQ0FBQztJQUM3Qiw4QkFBOEI7SUFDOUIs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Q0FBQztRQUNMLENBQUMsQ0FBQztRQUVGLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBR0QsSUFBSSxPQUFPO1FBQ1AsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQTJCLEVBQXVCLEVBQUU7WUFDNUUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM1QixJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7b0JBQzdCLDBDQUEwQztvQkFDMUMsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzVDLENBQUM7Z0JBRUQsc0RBQXNEO2dCQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDM0QsT0FBTyxFQUFFLENBQUM7Z0JBQ1osQ0FBQztnQkFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3QyxDQUFDO3VHQTFYcUIsUUFBUTsyRkFBUixRQUFROzsyRkFBUixRQUFRO2tCQUQ3QixTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiXHJcblxyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlLCBTd2FsU2VydmljZSB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEFjdGlvbkRlZiwgUGFnaW5hdGVkUmVzdWx0IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IERlYWN0aXZhdGlvblJlYXNvbkZvcm1Db21wb25lbnQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZGVhY3RpdmF0aW9uLXJlYXNvbic7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDcnVkPFQsIEYgPSBhbnk+ICB7XHJcbiAgbGlzdDogVFtdICAgICAgICAgICAgICAgPSBbXTtcclxuICBwYWdpbmF0b3IgICAgICAgID0gdHJ1ZTtcclxuICBjYW5Mb2FkICAgICAgICA9IHRydWU7XHJcbiAgbG9hZGluZyAgICAgICAgPSBmYWxzZTtcclxuICBlcnJvck1zZyAgICAgICAgPSAnJztcclxuICBmaXJzdCAgICAgICAgICAgPSAwO1xyXG4gIHJvd3MgICAgICAgICAgICA9IDEwO1xyXG4gIHRvdGFsUmVjb3JkcyAgICA9IDA7XHJcbiAgc2VhcmNoR2xvYmFsICAgID0gJyc7XHJcbiAgc29ydD86IHN0cmluZztcclxuICBwYWdlRmlsdGVyczogUGFydGlhbDxGPiA9IHt9O1xyXG4gIGN1cnJlbnRGaWx0ZXJzOiBQYXJ0aWFsPEY+ID0ge307XHJcbiAgbW9kZSA9Jyc7XHJcbiAgc2Nyb2xsSGVpZ2h0ID0nNDAwcHgnO1xyXG4gIHByaXZhdGUgc3dhbFNlcnZpY2UgPSBpbmplY3QoU3dhbFNlcnZpY2UpO1xyXG5cclxuICBwcm90ZWN0ZWQgZGlhbG9nUmVmITogRHluYW1pY0RpYWxvZ1JlZjtcclxuXHJcblxyXG4gIC8vIGFic3RyYWN0IHNlcnZpY2U6IENydWRTZXJ2aWNlPFQsIEY+O1xyXG4gIGFic3RyYWN0IHNlcnZpY2U6IEJhc2VTZXJ2aWNlO1xyXG4gIGFic3RyYWN0IGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2U7XHJcbiAgLy8gYWJzdHJhY3QgZGlhbG9nQ29tcG9uZW50OiBhbnk7XHJcbiAgLy8gYWJzdHJhY3QgY29sdW1uczogQ29sdW1uRGVmPFQ+W107XHJcbiAgYWJzdHJhY3QgYWN0aW9uczogQWN0aW9uRGVmPFQ+W107XHJcblxyXG4gIC8vIGZvciBnZW5lcmljIGRpYWxvZzpcclxuICBhYnN0cmFjdCBmb3JtRmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdO1xyXG4gIGFic3RyYWN0IGlkRmllbGQ6IGtleW9mIFQ7XHJcbiAgZGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xyXG4gIGRyYXdlclZpc2libGUgPSBmYWxzZTtcclxuICBzZWxlY3RlZEl0ZW06IFQgfCBhbnkgPSBudWxsO1xyXG4gIGRlZmF1bHRNb2RlbDogVCB8IGFueSA9IG51bGw7XHJcbiAgLy8gc2VsZWN0ZWRJdGVtOiBUIHwgYW55ID0ge307XHJcbiAgaXNWaWV3TW9kZSA9IGZhbHNlO1xyXG4gIGlzRWRpdE1vZGUgPSBmYWxzZTtcclxuXHJcblxyXG5cclxuICBkaXNwbGF5TW9kZTpcclxuICB8ICdkcmF3ZXInIHwgJ2RpYWxvZycgfCAncm91dGUnXHJcbiAgfCBQYXJ0aWFsPFJlY29yZDwnYWRkJyB8ICdlZGl0JyB8ICd2aWV3JywgJ2RyYXdlcicgfCAnZGlhbG9nJyB8ICdyb3V0ZSc+PlxyXG4gID0gJ2RyYXdlcic7XHJcblxyXG4gIHB1YmxpYyByb3V0ZXI9IGluamVjdChSb3V0ZXIpO1xyXG4gIHB1YmxpYyByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XHJcblxyXG5sb2FkUGFnZShwYWdlSW5kZXg6IG51bWJlciwgcGFnZVNpemU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYodGhpcy5jYW5Mb2FkKXtcclxuXHJcblxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IGZpbHRlcnM6IFBhcnRpYWw8Rj4gPSB7XHJcbiAgICAgIG1heFJlc3VsdENvdW50OnBhZ2VTaXplLFxyXG4gICAgICBza2lwQ291bnQ6cGFnZUluZGV4LFxyXG4gICAgICBzb3J0aW5nOnRoaXMuc29ydCxcclxuICAgIC4uLnRoaXMuY3VycmVudEZpbHRlcnMsXHJcbiAgICAuLi50aGlzLnBhZ2VGaWx0ZXJzLFxyXG4gICAgLi4uKHRoaXMuc2VhcmNoR2xvYmFsID8geyBmaWx0ZXI6IHRoaXMuc2VhcmNoR2xvYmFsIH0gOiB7fSksXHJcbiAgICB9O1xyXG4gICAgLy9cclxuICAgIHRoaXMuc2VydmljZS5nZXRMaXN0KGZpbHRlcnMpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IFBhZ2luYXRlZFJlc3VsdDxUPikgPT4ge1xyXG4gICAgICAgICAgLy9cclxuICAgICAgICAgIHRoaXMubGlzdCAgICAgICAgID0gcmVzLml0ZW1zO1xyXG4gICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSByZXMudG90YWxDb3VudDtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyAgICAgID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjphbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNc2cgICAgID0gZXJyLmVycm9yPy5tZXNzYWdlIHx8IGVyci5tZXNzYWdlIHx8ICfYrti32KMg2YHZiiDYp9mE2KrYrdmF2YrZhCc7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgICAgICA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbm9uU2VhcmNoKGZpbHRlcnM/OiBhbnkpOiB2b2lkIHtcclxuICAvL1xyXG4gIGlmIChmaWx0ZXJzICYmIHR5cGVvZiBmaWx0ZXJzID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShmaWx0ZXJzKSkge1xyXG4gICAgdGhpcy5wYWdlRmlsdGVycyA9IGZpbHRlcnM7XHJcbiAgfSBlbHNlIHtcclxuICAgIHRoaXMuc2VhcmNoR2xvYmFsID0gZmlsdGVycztcclxuICB9XHJcblxyXG4gIHRoaXMubG9hZFBhZ2UoMCwgMTApO1xyXG59XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5vblBhZ2VDaGFuZ2UoZXZlbnQ6IHsgZmlyc3Q/OiBudW1iZXI7IHJvd3M/OiBudW1iZXI7IHNvcnQ/OiBzdHJpbmc7IGZpbHRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH0pOiB2b2lkIHtcclxuICAvLyDZgdmDINin2YTZhdiq2LrZitmR2LHYp9iqINmF2Lkg2YLZitmF2Kkg2KfZgdiq2LHYp9i22YrYqSDZhNmB2YTYp9iq2LFcclxuICBjb25zdCB7XHJcbiAgICBmaXJzdCAgID0gdGhpcy5maXJzdCxcclxuICAgIHJvd3MgICAgPSB0aGlzLnJvd3MsXHJcbiAgICBzb3J0ICAgID0gdGhpcy5zb3J0LFxyXG4gICAgZmlsdGVycyA9IHt9XHJcbiAgfSA9IGV2ZW50O1xyXG5cclxuICB0aGlzLmZpcnN0ID0gZmlyc3Q7XHJcbiAgdGhpcy5yb3dzICA9IHJvd3M7XHJcbiAgdGhpcy5zb3J0ICA9IHNvcnQ7XHJcblxyXG4gIC8vIGNvbnN0IHBhZ2VJbmRleCA9IE1hdGguZmxvb3IoZmlyc3QgLyByb3dzKTtcclxuICBjb25zdCBza2lwQ291bnQgPSBmaXJzdDtcclxuICBjb25zdCBwYWdlSW5kZXggPSBza2lwQ291bnQ7XHJcblxyXG4gIC8vINin2YTZiNi12YjZhCDZhNmE2YHZhNiq2LEg2KfZhNi52KfZhSDYudio2LEg2KfZhNi12YrYutipINin2YTZhdix2KjYudipXHJcbiAgY29uc3QgZ2xvYmFsVmFsdWUgPSBmaWx0ZXJzWydnbG9iYWwnXTtcclxuICB0aGlzLnNlYXJjaEdsb2JhbCA9IHR5cGVvZiBnbG9iYWxWYWx1ZSA9PT0gJ3N0cmluZycgPyBnbG9iYWxWYWx1ZSA6ICcnO1xyXG5cclxuICAvLyDZgdmE2KrYsdipINiu2KfYtdipINio2K3ZgtmEINmI2KfYrdivXHJcbiAgLy8gY29uc3QgZmllbGRGaWx0ZXJzID0geyAuLi5maWx0ZXJzIH07XHJcbiAgLy8gZGVsZXRlIGZpZWxkRmlsdGVyc1snZ2xvYmFsJ107XHJcbiAgLy8gdGhpcy5jdXJyZW50RmlsdGVycyA9IGZpZWxkRmlsdGVycyBhcyBQYXJ0aWFsPEY+O1xyXG5cclxuXHJcblxyXG4gIHRoaXMubG9hZFBhZ2UocGFnZUluZGV4LCByb3dzKTtcclxufVxyXG5cclxuXHJcbnByb3RlY3RlZCBvcGVuRWRpdG9yKGl0ZW06IFQgfCBudWxsLCBtb2RlOiAnYWRkJyB8ICdlZGl0JyB8ICd2aWV3Jyk6IHZvaWQge1xyXG4gIHRoaXMubW9kZSA9IG1vZGU7XHJcbiAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtID8/IHRoaXMuZGVmYXVsdE1vZGVsID8/IHt9O1xyXG4gIHRoaXMuaXNFZGl0TW9kZSA9IG1vZGUgPT09ICdlZGl0JztcclxuICB0aGlzLmlzVmlld01vZGUgPSBtb2RlID09PSAndmlldyc7XHJcblxyXG4gIC8vIHJlc29sdmUgZGlzcGxheU1vZGUgKHN0cmluZyBvciBtYXApXHJcbiAgY29uc3QgbW9kZUNvbmZpZyA9IHR5cGVvZiB0aGlzLmRpc3BsYXlNb2RlID09PSAnc3RyaW5nJ1xyXG4gICAgPyB0aGlzLmRpc3BsYXlNb2RlXHJcbiAgICA6IHRoaXMuZGlzcGxheU1vZGVbbW9kZV0gPz8gJ2RyYXdlcic7XHJcblxyXG4gIHN3aXRjaCAobW9kZUNvbmZpZykge1xyXG4gICAgY2FzZSAnZHJhd2VyJzpcclxuICAgICAgdGhpcy5kcmF3ZXJWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgYnJlYWs7XHJcblxyXG4gICAgY2FzZSAnZGlhbG9nJzpcclxuICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgYnJlYWs7XHJcblxyXG4gICAgY2FzZSAncm91dGUnOlxyXG4gICAgICB7XHJcbiAgICAgICAgY29uc3QgaWQgPSBpdGVtID8gKGl0ZW0gYXMgYW55KVt0aGlzLmlkRmllbGRdIDogJ25ldyc7XHJcbiAgICAgIGlmKG1vZGUgPT09ICdhZGQnKXtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbW9kZV0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtpZCwgbW9kZV0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgICAgfVxyXG4gIH1cclxufVxyXG5cclxudmlzaWJsZUNoYW5nZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gIGNvbnN0IG1vZGVDb25maWcgPSB0eXBlb2YgdGhpcy5kaXNwbGF5TW9kZSA9PT0gJ3N0cmluZydcclxuICAgID8gdGhpcy5kaXNwbGF5TW9kZVxyXG4gICAgOiB0aGlzLmRpc3BsYXlNb2RlW3RoaXMubW9kZSBhcyAnYWRkJyB8ICdlZGl0JyB8ICd2aWV3J10gPz8gJ2RyYXdlcic7XHJcblxyXG4gIGlmIChtb2RlQ29uZmlnID09PSAnZGlhbG9nJykge1xyXG4gICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gdmFsdWU7XHJcbiAgfSBlbHNlIGlmIChtb2RlQ29uZmlnID09PSAnZHJhd2VyJykge1xyXG4gICAgdGhpcy5kcmF3ZXJWaXNpYmxlID0gdmFsdWU7XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIHJvdXRlIG1vZGUgZG9lcyBub3QgdXNlIGRyYXdlci9kaWFsb2dcclxuICB9XHJcbn1cclxuXHJcblxyXG4vLyBvblRhYmxlQWN0aW9uKGV2ZW50OiB7IG5hbWU6IHN0cmluZzsgcm93OiBUIHwgbnVsbCB9KTogdm9pZCB7XHJcbi8vICAgICBzd2l0Y2ggKGV2ZW50Lm5hbWUpIHtcclxuLy8gICAgICAgY2FzZSAnYWRkJzogICAgdGhpcy5vcGVuRHJhd2VyKG51bGwsZXZlbnQubmFtZSk7ICAgICAgICAgICAgIGJyZWFrO1xyXG4vLyAgICAgICBjYXNlICd2aWV3JzogICB0aGlzLm9wZW5EcmF3ZXIoZXZlbnQucm93ISxldmVudC5uYW1lKTsgIGJyZWFrO1xyXG4vLyAgICAgICBjYXNlICdlZGl0JzogICB0aGlzLm9wZW5EcmF3ZXIoZXZlbnQucm93ISxldmVudC5uYW1lKTsgIGJyZWFrO1xyXG4vLyAgICAgICBjYXNlICdkZWxldGUnOiB0aGlzLm9uRGVsZXRlKGV2ZW50LnJvdyEpO2JyZWFrO1xyXG4vLyAgICAgICBjYXNlICdzdGF0ZSc6IHRoaXMub3BlbkRlYWN0aXZhdGlvblJlYXNvbihldmVudC5yb3chKTticmVhaztcclxuLy8gICAgIH1cclxuLy8gfVxyXG5cclxub25UYWJsZUFjdGlvbihldmVudDogeyBuYW1lOiBzdHJpbmc7IHJvdzogVCB8IG51bGwgfSk6IHZvaWQge1xyXG4gIHN3aXRjaCAoZXZlbnQubmFtZSkge1xyXG4gICAgY2FzZSAnYWRkJzpcclxuICAgIGNhc2UgJ2VkaXQnOlxyXG4gICAgY2FzZSAndmlldyc6XHJcbiAgICAgIHRoaXMub3BlbkVkaXRvcihldmVudC5yb3csIGV2ZW50Lm5hbWUpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2RlbGV0ZSc6XHJcbiAgICAgIHRoaXMub25EZWxldGUoZXZlbnQucm93ISk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnc3RhdGUnOlxyXG4gICAgICB0aGlzLm9wZW5EZWFjdGl2YXRpb25SZWFzb24oZXZlbnQucm93ISk7XHJcbiAgICAgIGJyZWFrO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbnByb3RlY3RlZCBvcGVuRHJhd2VyKGl0ZW06IFQgfCBudWxsLG1vZGU6c3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgICB0aGlzLm1vZGUgPSBtb2RlO1xyXG5cclxuICAgICAgLy8gdGhpcy5kcmF3ZXJWaXNpYmxlID0gIXRoaXMuZHJhd2VyVmlzaWJsZTtcclxuXHJcblxyXG4gICAgICBpZiAoaXRlbSA9PSBudWxsKSB7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5kZWZhdWx0TW9kZWwgfHwge307XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihtb2RlID09ICdlZGl0Jyl7XHJcbiAgICAgICAgdGhpcy5kcmF3ZXJWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPSB0cnVlIDtcclxuICAgICAgICB0aGlzLmlzVmlld01vZGUgPSBmYWxzZSA7XHJcbiAgICAgICAgLy8gdGhpcy5pc0VkaXRNb2RlID0gaXRlbSAhPW51bGwgO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKG1vZGUgPT0gJ2FkZCcpe1xyXG4gICAgICAgICB0aGlzLmRyYXdlclZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNWaWV3TW9kZSA9IGZhbHNlIDtcclxuICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPSBmYWxzZSA7XHJcbiAgICAgIH1cclxuICAgICAgaWYobW9kZSA9PSAndmlldycpe1xyXG4gICAgICAgIC8vIHRoaXMuZHJhd2VyVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5pc1ZpZXdNb2RlID0gdHJ1ZSA7XHJcbiAgICAgICAgdGhpcy5pc0VkaXRNb2RlID0gZmFsc2UgO1xyXG4gICAgICB9XHJcbn1cclxuXHJcblxyXG5vcGVuRGVhY3RpdmF0aW9uUmVhc29uKG1vZGVsOiBhbnkpIHtcclxuXHJcbiAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBtb2RlbDtcclxuICBpZih0aGlzLnNlbGVjdGVkSXRlbS5pc0FjdGl2ZSA9PSB0cnVlKXtcclxuXHJcblxyXG4gIGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKERlYWN0aXZhdGlvblJlYXNvbkZvcm1Db21wb25lbnQsIHtcclxuICAgIGhlYWRlcjogJ9in2YTYs9io2KggKNmB2Yog2K3Yp9mEINiq2YUg2KXZitmC2KfZgdmHKScsXHJcbiAgICB3aWR0aDogJzMwdncnLFxyXG4gICAgZGF0YTogeyBtb2RlbDogeyAuLi5tb2RlbCB9LFxyXG4gICAgICAgIGZpZWxkczogdGhpcy5mb3JtRmllbGRzLFxyXG4gICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljZSxcclxuICAgICAgICBpZEZpZWxkOiB0aGlzLmlkRmllbGQgfSxcclxuICB9KTtcclxuXHJcbiAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uaXNBY3RpdmUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZGVhY3RpdmF0aW9uUmVhc29uID0gcmVzdWx0LmRlYWN0aXZhdGlvblJlYXNvbjtcclxuICAgICAgLy8gT3B0aW9uYWxseTogc2F2ZSBtb2RlbCB2aWEgQVBJXHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuZWxzZXtcclxuICAgdGhpcy5zZWxlY3RlZEl0ZW0uaXNBY3RpdmUgPSB0cnVlO1xyXG4gICB0aGlzLnNlbGVjdGVkSXRlbS5kZWFjdGl2YXRpb25SZWFzb24gPSBcIlwiO1xyXG4gICAgY29uc3QgaWQgPSAgKHRoaXMuc2VsZWN0ZWRJdGVtIGFzIGFueSlbdGhpcy5pZEZpZWxkXSA7XHJcbiAgICB0aGlzLnNlcnZpY2UudXBkYXRlKGlkLCB0aGlzLnNlbGVjdGVkSXRlbSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICBuZXh0OiAoKSA9PiB7Y29uc29sZS5sb2coJycpfSxcclxuICAgICAgICAgICBlcnJvcjogKGVycjphbnkpID0+IHtcclxuICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICB9XHJcbiAgICAgICAgIH0pO1xyXG59XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAvLyBvbkRlbGV0ZShpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAvLyAgIGlmICghY29uZmlybSgn2YfZhCDYqtix2YrYryDYp9mE2K3YsNmBINmB2LnZhNin2YvYnycpKSByZXR1cm47XHJcbiAgLy8gICBjb25zdCBpZCA9IChpdGVtIGFzIGFueSlbdGhpcy5pZEZpZWxkXTtcclxuICAvLyAgIHRoaXMuc2VydmljZS5kZWxldGUoaWQpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgLy8gICAgIHRoaXMubG9hZFBhZ2UoMCwgdGhpcy5yb3dzKTtcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcblxyXG5vbkRlbGV0ZShpdGVtOiBhbnkpOiB2b2lkIHtcclxuICBjb25zdCBpZCA9IGl0ZW1bdGhpcy5pZEZpZWxkXTtcclxuXHJcbiAgdGhpcy5zd2FsU2VydmljZS5jb25maXJtKFxyXG4gICAgJ9iq2KPZg9mK2K8g2KfZhNit2LDZgScsXHJcbiAgICAn2YfZhCDYqtix2YrYryDYrdiw2YEg2YfYsNinINin2YTYs9is2YQg2YHYudmE2KfZi9ifJyxcclxuICAgICfZhti52YXYjCDYp9it2LDZgScsXHJcbiAgICAn2KXZhNi62KfYoSdcclxuICApLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgaWYgKHJlc3VsdC5pc0NvbmZpcm1lZCkge1xyXG4gICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlKGlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZFBhZ2UoMCwgdGhpcy5yb3dzKTtcclxuICAgICAgICAgIHRoaXMuc3dhbFNlcnZpY2Uuc3VjY2Vzcygn2KrZhSDYp9mE2K3YsNmBINio2YbYrNin2K0nKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIGNvbnN0IG1zZyA9XHJcbiAgICAgICAgICAgIGVyci5lcnJvcj8udGl0bGUgfHxcclxuICAgICAgICAgICAgZXJyLm1lc3NhZ2UgfHxcclxuICAgICAgICAgICAgJ9it2K/YqyDYrti32KMg2KPYq9mG2KfYoSDYp9mE2K3Zgdi4LiDZitix2KzZiSDYp9mE2YXYrdin2YjZhNipINmF2LHYqSDYo9iu2LHZiS4nO1xyXG5cclxuICAgICAgICAgIC8vIHRoaXMuZXJyb3JNZXNzYWdlID0gbXNnO1xyXG5cclxuICAgICAgICAgIC8vIOKdjCDYsdiz2KfZhNipINiu2LfYo1xyXG4gICAgICAgICAgdGhpcy5zd2FsU2VydmljZS5lcnJvcign2YHYtNmEINin2YTYrdiw2YEnLCBtc2cpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcblxyXG5cclxuZ2V0IGNvbHVtbnMoKTogRm9ybWx5RmllbGRDb25maWdbXSB7XHJcbiAgICBjb25zdCBmbGF0dGVuRmllbGRzID0gKGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSk6IEZvcm1seUZpZWxkQ29uZmlnW10gPT4ge1xyXG4gICAgICByZXR1cm4gZmllbGRzLmZsYXRNYXAoZmllbGQgPT4ge1xyXG4gICAgICAgIC8vIENoZWNrIGZvciBuZXN0ZWQgZ3JvdXAvcGFuZWxcclxuICAgICAgICBpZiAoZmllbGQuZmllbGRHcm91cD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmxhdHRlbkZpZWxkcyhmaWVsZC5maWVsZEdyb3VwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNraXAgZmllbGRzIHdpdGggbm8gcHJvcHMgb3IgdGFibGUuaGlkZGVuID09PSB0cnVlXHJcbiAgICAgICAgaWYgKCFmaWVsZC5wcm9wcyB8fCBmaWVsZC5wcm9wc1sndGFibGUnXT8uaGlkZGVuID09PSB0cnVlKSB7XHJcbiAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGNvbHVtbiB0eXBlOiB0YWJsZS50eXBlID4gZmllbGQudHlwZSA+ICdsYWJlbC10eXBlJ1xyXG4gICAgICAgIC8vIGNvbnN0IHRhYmxlVHlwZSA9IGZpZWxkLnByb3BzWyd0YWJsZSddPy50eXBlIHx8IGZpZWxkLnR5cGUgfHwgJ2xhYmVsLXR5cGUnO1xyXG4gICAgICAgIGNvbnN0IHRhYmxlVHlwZSA9IGZpZWxkLnByb3BzWyd0YWJsZSddPy50eXBlIHx8ICAnbGFiZWwtdHlwZSc7XHJcblxyXG4gICAgICAgIC8vXHJcblxyXG4gICAgICAgIHJldHVybiBbe1xyXG4gICAgICAgICAgdHlwZTogdGFibGVUeXBlLFxyXG4gICAgICAgICAga2V5OiBmaWVsZFsna2V5J10sIC8vIGFsd2F5cyBzZXQga2V5IGZvciB0YWJsZSByZW5kZXJpbmdcclxuICAgICAgICAgIHByb3BzOiB7XHJcbiAgICAgICAgICAgIC4uLmZpZWxkLnByb3BzLCAgICAgICAgICAvLyBiYXNlIHByb3BzXHJcbiAgICAgICAgICAgIC4uLmZpZWxkLnByb3BzWyd0YWJsZSddPy5wcm9wcyAvLyB0YWJsZS1zcGVjaWZpYyBvdmVycmlkZXNcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBleHByZXNzaW9uczogZmllbGQucHJvcHNbJ3RhYmxlJ10/LmV4cHJlc3Npb25zXHJcbiAgICAgICAgfV07XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gZmxhdHRlbkZpZWxkcyh0aGlzLmZvcm1GaWVsZHMpO1xyXG59XHJcblxyXG5cclxuZ2V0IGZpbHRlcnMoKTogRm9ybWx5RmllbGRDb25maWdbXSB7XHJcbiAgICBjb25zdCBmbGF0dGVuRm9yRmlsdGVyID0gKGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSk6IEZvcm1seUZpZWxkQ29uZmlnW10gPT4ge1xyXG4gICAgICByZXR1cm4gZmllbGRzLmZsYXRNYXAoZmllbGQgPT4ge1xyXG4gICAgICAgIGlmIChmaWVsZC5maWVsZEdyb3VwPy5sZW5ndGgpIHtcclxuICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGhhbmRsZSBuZXN0ZWQgcGFuZWxzL2dyb3Vwc1xyXG4gICAgICAgICAgcmV0dXJuIGZsYXR0ZW5Gb3JGaWx0ZXIoZmllbGQuZmllbGRHcm91cCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBTa2lwIGZpZWxkcyB3aXRoIG5vIHByb3BzIG9yIGZpbHRlci5oaWRkZW4gPT09IHRydWVcclxuICAgICAgICBpZiAoIWZpZWxkLnByb3BzIHx8IGZpZWxkLnByb3BzWydmaWx0ZXInXT8uaGlkZGVuID09PSB0cnVlKSB7XHJcbiAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gW2ZpZWxkXTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBmbGF0dGVuRm9yRmlsdGVyKHRoaXMuZm9ybUZpZWxkcyk7XHJcbn1cclxuXHJcbn1cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtYmFzZS1jcnVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2Jhc2UtY3J1ZC9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtYmFzZS1jcnVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"elite.framework-ng.ui.core-base-crud.mjs","sources":["../tmp-esm2022/base-crud/lib/base-crud-module.js","../tmp-esm2022/base-crud/lib/base-crud.js","../tmp-esm2022/base-crud/elite.framework-ng.ui.core-base-crud.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class BaseCrudModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrudModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrudModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrudModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrudModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jcnVkLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9iYXNlLWNydWQvc3JjL2xpYi9iYXNlLWNydWQtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sY0FBYzt1R0FBZCxjQUFjO3dHQUFkLGNBQWMsWUFGZixZQUFZO3dHQUVYLGNBQWMsWUFGZixZQUFZOzsyRkFFWCxjQUFjO2tCQUgxQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VDcnVkTW9kdWxlIHt9XG4iXX0=","import { Directive, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { SwalService } from '@elite.framework/ng.core/services';\nimport { DeactivationReasonFormComponent } from '@elite.framework/ng.ui.core/deactivation-reason';\nimport * as i0 from \"@angular/core\";\nexport class BaseCrud {\n list = [];\n paginator = true;\n canLoad = true;\n loading = false;\n errorMsg = '';\n first = 0;\n rows = 10;\n totalRecords = 0;\n searchGlobal = '';\n sort;\n pageFilters = {};\n currentFilters = {};\n mode = '';\n scrollHeight = '400px';\n swalService = inject(SwalService);\n dialogRef;\n dialogVisible = false;\n drawerVisible = false;\n selectedItem = null;\n defaultModel = null;\n // selectedItem: T | any = {};\n isViewMode = false;\n isEditMode = false;\n displayMode = 'drawer';\n router = inject(Router);\n route = inject(ActivatedRoute);\n loadPage(pageIndex, pageSize) {\n if (this.canLoad) {\n this.loading = true;\n const filters = {\n maxResultCount: pageSize,\n skipCount: pageIndex,\n sorting: this.sort,\n ...this.currentFilters,\n ...this.pageFilters,\n ...(this.searchGlobal ? { filter: this.searchGlobal } : {}),\n };\n //\n this.service.getList(filters)\n .subscribe({\n next: (res) => {\n //\n this.list = res.items;\n this.totalRecords = res.totalCount;\n this.loading = false;\n },\n error: (err) => {\n this.errorMsg = err.error?.message || err.message || 'خطأ في التحميل';\n this.loading = false;\n }\n });\n }\n }\n onSearch(filters) {\n //\n if (filters && typeof filters === 'object' && !Array.isArray(filters)) {\n this.pageFilters = filters;\n }\n else {\n this.searchGlobal = filters;\n }\n this.loadPage(0, 10);\n }\n onPageChange(event) {\n // فك المتغيّرات مع قيمة افتراضية لفلاتر\n const { first = this.first, rows = this.rows, sort = this.sort, filters = {} } = event;\n this.first = first;\n this.rows = rows;\n this.sort = sort;\n // const pageIndex = Math.floor(first / rows);\n const skipCount = first;\n const pageIndex = skipCount;\n // الوصول للفلتر العام عبر الصيغة المربعة\n const globalValue = filters['global'];\n this.searchGlobal = typeof globalValue === 'string' ? globalValue : '';\n // فلترة خاصة بحقل واحد\n // const fieldFilters = { ...filters };\n // delete fieldFilters['global'];\n // this.currentFilters = fieldFilters as Partial<F>;\n this.loadPage(pageIndex, rows);\n }\n openEditor(item, mode) {\n this.mode = mode;\n this.selectedItem = item ?? this.defaultModel ?? {};\n this.isEditMode = mode === 'edit';\n this.isViewMode = mode === 'view';\n // resolve displayMode (string or map)\n const modeConfig = typeof this.displayMode === 'string'\n ? this.displayMode\n : this.displayMode[mode] ?? 'drawer';\n switch (modeConfig) {\n case 'drawer':\n this.drawerVisible = true;\n break;\n case 'dialog':\n this.dialogVisible = true;\n break;\n case 'route':\n {\n const id = item ? item[this.idField] : 'new';\n if (mode === 'add') {\n this.router.navigate([mode], { relativeTo: this.route });\n }\n else {\n this.router.navigate([id, mode], { relativeTo: this.route });\n }\n break;\n }\n }\n }\n visibleChange(value) {\n const modeConfig = typeof this.displayMode === 'string'\n ? this.displayMode\n : this.displayMode[this.mode] ?? 'drawer';\n if (modeConfig === 'dialog') {\n this.dialogVisible = value;\n }\n else if (modeConfig === 'drawer') {\n this.drawerVisible = value;\n }\n else {\n // route mode does not use drawer/dialog\n }\n }\n // onTableAction(event: { name: string; row: T | null }): void {\n // switch (event.name) {\n // case 'add': this.openDrawer(null,event.name); break;\n // case 'view': this.openDrawer(event.row!,event.name); break;\n // case 'edit': this.openDrawer(event.row!,event.name); break;\n // case 'delete': this.onDelete(event.row!);break;\n // case 'state': this.openDeactivationReason(event.row!);break;\n // }\n // }\n onTableAction(event) {\n switch (event.name) {\n case 'add':\n case 'edit':\n case 'view':\n this.openEditor(event.row, event.name);\n break;\n case 'delete':\n this.onDelete(event.row);\n break;\n case 'state':\n this.openDeactivationReason(event.row);\n break;\n }\n }\n openDrawer(item, mode) {\n this.mode = mode;\n // this.drawerVisible = !this.drawerVisible;\n if (item == null) {\n this.selectedItem = this.defaultModel || {};\n }\n else {\n this.selectedItem = item;\n }\n if (mode == 'edit') {\n this.drawerVisible = true;\n this.isEditMode = true;\n this.isViewMode = false;\n // this.isEditMode = item !=null ;\n }\n if (mode == 'add') {\n this.drawerVisible = true;\n this.isViewMode = false;\n this.isEditMode = false;\n }\n if (mode == 'view') {\n // this.drawerVisible = true;\n this.dialogVisible = true;\n this.isViewMode = true;\n this.isEditMode = false;\n }\n }\n openDeactivationReason(model) {\n this.selectedItem = model;\n if (this.selectedItem.isActive == true) {\n const ref = this.dialogService.open(DeactivationReasonFormComponent, {\n header: 'السبب (في حال تم إيقافه)',\n width: '30vw',\n data: { model: { ...model },\n fields: this.formFields,\n service: this.service,\n idField: this.idField },\n });\n ref.onClose.subscribe((result) => {\n if (result) {\n this.selectedItem.isActive = false;\n this.selectedItem.deactivationReason = result.deactivationReason;\n // Optionally: save model via API\n }\n });\n }\n else {\n this.selectedItem.isActive = true;\n this.selectedItem.deactivationReason = \"\";\n const id = this.selectedItem[this.idField];\n this.service.update(id, this.selectedItem).subscribe({\n next: () => { console.log(''); },\n error: (err) => {\n this.loading = false;\n }\n });\n }\n }\n // onDelete(item: any): void {\n // if (!confirm('هل تريد الحذف فعلاً؟')) return;\n // const id = (item as any)[this.idField];\n // this.service.delete(id).subscribe(() => {\n // this.loadPage(0, this.rows);\n // });\n // }\n onDelete(item) {\n const id = item[this.idField];\n this.swalService.confirm('تأكيد الحذف', 'هل تريد حذف هذا السجل فعلاً؟', 'نعم، احذف', 'إلغاء').then((result) => {\n if (result.isConfirmed) {\n this.service.delete(id).subscribe({\n next: () => {\n this.loadPage(0, this.rows);\n this.swalService.success('تم الحذف بنجاح');\n },\n error: (err) => {\n this.loading = false;\n const msg = err.error?.title ||\n err.message ||\n 'حدث خطأ أثناء الحفظ. يرجى المحاولة مرة أخرى.';\n // this.errorMessage = msg;\n // ❌ رسالة خطأ\n this.swalService.error('فشل الحذف', msg);\n }\n });\n }\n });\n }\n get columns() {\n const flattenFields = (fields) => {\n return fields.flatMap(field => {\n // Check for nested group/panel\n if (field.fieldGroup?.length) {\n return flattenFields(field.fieldGroup);\n }\n // Skip fields with no props or table.hidden === true\n if (!field.props || field.props['table']?.hidden === true) {\n return [];\n }\n // Determine the column type: table.type > field.type > 'label-type'\n // const tableType = field.props['table']?.type || field.type || 'label-type';\n const tableType = field.props['table']?.type || 'label-type';\n //\n return [{\n type: tableType,\n key: field['key'], // always set key for table rendering\n props: {\n ...field.props, // base props\n ...field.props['table']?.props // table-specific overrides\n },\n expressions: field.props['table']?.expressions\n }];\n });\n };\n return flattenFields(this.formFields);\n }\n get filters() {\n const flattenForFilter = (fields) => {\n return fields.flatMap(field => {\n if (field.fieldGroup?.length) {\n // Recursively handle nested panels/groups\n return flattenForFilter(field.fieldGroup);\n }\n // Skip fields with no props or filter.hidden === true\n if (!field.props || field.props['filter']?.hidden === true) {\n return [];\n }\n // Merge base props with filter overrides\n const mergedProps = {\n ...field.props,\n ...field.props['filter']?.props,\n };\n // Remove disabled and required props\n delete mergedProps['disabled'];\n delete mergedProps['required'];\n delete mergedProps['loadDefault'];\n return [{\n type: field.type,\n key: field.key, // always set key for table rendering\n props: mergedProps,\n // expressions: field.props['filter']?.expressions // uncomment if needed\n }];\n });\n };\n return flattenForFilter(this.formFields);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrud, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.8\", type: BaseCrud, isStandalone: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseCrud, decorators: [{\n type: Directive\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jcnVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2Jhc2UtY3J1ZC9zcmMvbGliL2Jhc2UtY3J1ZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFHbEcsTUFBTSxPQUFnQixRQUFRO0lBQzVCLElBQUksR0FBc0IsRUFBRSxDQUFDO0lBQzdCLFNBQVMsR0FBVSxJQUFJLENBQUM7SUFDeEIsT0FBTyxHQUFVLElBQUksQ0FBQztJQUN0QixPQUFPLEdBQVUsS0FBSyxDQUFDO0lBQ3ZCLFFBQVEsR0FBVSxFQUFFLENBQUM7SUFDckIsS0FBSyxHQUFhLENBQUMsQ0FBQztJQUNwQixJQUFJLEdBQWMsRUFBRSxDQUFDO0lBQ3JCLFlBQVksR0FBTSxDQUFDLENBQUM7SUFDcEIsWUFBWSxHQUFNLEVBQUUsQ0FBQztJQUNyQixJQUFJLENBQVU7SUFDZCxXQUFXLEdBQWUsRUFBRSxDQUFDO0lBQzdCLGNBQWMsR0FBZSxFQUFFLENBQUM7SUFDaEMsSUFBSSxHQUFFLEVBQUUsQ0FBQztJQUNULFlBQVksR0FBRSxPQUFPLENBQUM7SUFDZCxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRWhDLFNBQVMsQ0FBb0I7SUFhdkMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLFlBQVksR0FBWSxJQUFJLENBQUM7SUFDN0IsWUFBWSxHQUFZLElBQUksQ0FBQztJQUM3Qiw4QkFBOEI7SUFDOUIs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SSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7dUdBMVlxQixRQUFROzJGQUFSLFFBQVE7OzJGQUFSLFFBQVE7a0JBRDdCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UsIFN3YWxTZXJ2aWNlIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgQWN0aW9uRGVmLCBQYWdpbmF0ZWRSZXN1bHQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgRGVhY3RpdmF0aW9uUmVhc29uRm9ybUNvbXBvbmVudCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcudWkuY29yZS9kZWFjdGl2YXRpb24tcmVhc29uJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNydWQ8VCwgRiA9IGFueT4gIHtcclxuICBsaXN0OiBUW10gICAgICAgICAgICAgICA9IFtdO1xyXG4gIHBhZ2luYXRvciAgICAgICAgPSB0cnVlO1xyXG4gIGNhbkxvYWQgICAgICAgID0gdHJ1ZTtcclxuICBsb2FkaW5nICAgICAgICA9IGZhbHNlO1xyXG4gIGVycm9yTXNnICAgICAgICA9ICcnO1xyXG4gIGZpcnN0ICAgICAgICAgICA9IDA7XHJcbiAgcm93cyAgICAgICAgICAgID0gMTA7XHJcbiAgdG90YWxSZWNvcmRzICAgID0gMDtcclxuICBzZWFyY2hHbG9iYWwgICAgPSAnJztcclxuICBzb3J0Pzogc3RyaW5nO1xyXG4gIHBhZ2VGaWx0ZXJzOiBQYXJ0aWFsPEY+ID0ge307XHJcbiAgY3VycmVudEZpbHRlcnM6IFBhcnRpYWw8Rj4gPSB7fTtcclxuICBtb2RlID0nJztcclxuICBzY3JvbGxIZWlnaHQgPSc0MDBweCc7XHJcbiAgcHJpdmF0ZSBzd2FsU2VydmljZSA9IGluamVjdChTd2FsU2VydmljZSk7XHJcblxyXG4gIHByb3RlY3RlZCBkaWFsb2dSZWYhOiBEeW5hbWljRGlhbG9nUmVmO1xyXG5cclxuXHJcbiAgLy8gYWJzdHJhY3Qgc2VydmljZTogQ3J1ZFNlcnZpY2U8VCwgRj47XHJcbiAgYWJzdHJhY3Qgc2VydmljZTogQmFzZVNlcnZpY2U7XHJcbiAgYWJzdHJhY3QgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZTtcclxuICAvLyBhYnN0cmFjdCBkaWFsb2dDb21wb25lbnQ6IGFueTtcclxuICAvLyBhYnN0cmFjdCBjb2x1bW5zOiBDb2x1bW5EZWY8VD5bXTtcclxuICBhYnN0cmFjdCBhY3Rpb25zOiBBY3Rpb25EZWY8VD5bXTtcclxuXHJcbiAgLy8gZm9yIGdlbmVyaWMgZGlhbG9nOlxyXG4gIGFic3RyYWN0IGZvcm1GaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW107XHJcbiAgYWJzdHJhY3QgaWRGaWVsZDoga2V5b2YgVDtcclxuICBkaWFsb2dWaXNpYmxlID0gZmFsc2U7XHJcbiAgZHJhd2VyVmlzaWJsZSA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkSXRlbTogVCB8IGFueSA9IG51bGw7XHJcbiAgZGVmYXVsdE1vZGVsOiBUIHwgYW55ID0gbnVsbDtcclxuICAvLyBzZWxlY3RlZEl0ZW06IFQgfCBhbnkgPSB7fTtcclxuICBpc1ZpZXdNb2RlID0gZmFsc2U7XHJcbiAgaXNFZGl0TW9kZSA9IGZhbHNlO1xyXG5cclxuXHJcblxyXG4gIGRpc3BsYXlNb2RlOlxyXG4gIHwgJ2RyYXdlcicgfCAnZGlhbG9nJyB8ICdyb3V0ZSdcclxuICB8IFBhcnRpYWw8UmVjb3JkPCdhZGQnIHwgJ2VkaXQnIHwgJ3ZpZXcnLCAnZHJhd2VyJyB8ICdkaWFsb2cnIHwgJ3JvdXRlJz4+XHJcbiAgPSAnZHJhd2VyJztcclxuXHJcbiAgcHVibGljIHJvdXRlcj0gaW5qZWN0KFJvdXRlcik7XHJcbiAgcHVibGljIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcclxuXHJcbmxvYWRQYWdlKHBhZ2VJbmRleDogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLmNhbkxvYWQpe1xyXG5cclxuXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgY29uc3QgZmlsdGVyczogUGFydGlhbDxGPiA9IHtcclxuICAgICAgbWF4UmVzdWx0Q291bnQ6cGFnZVNpemUsXHJcbiAgICAgIHNraXBDb3VudDpwYWdlSW5kZXgsXHJcbiAgICAgIHNvcnRpbmc6dGhpcy5zb3J0LFxyXG4gICAgLi4udGhpcy5jdXJyZW50RmlsdGVycyxcclxuICAgIC4uLnRoaXMucGFnZUZpbHRlcnMsXHJcbiAgICAuLi4odGhpcy5zZWFyY2hHbG9iYWwgPyB7IGZpbHRlcjogdGhpcy5zZWFyY2hHbG9iYWwgfSA6IHt9KSxcclxuICAgIH07XHJcbiAgICAvL1xyXG4gICAgdGhpcy5zZXJ2aWNlLmdldExpc3QoZmlsdGVycylcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogUGFnaW5hdGVkUmVzdWx0PFQ+KSA9PiB7XHJcbiAgICAgICAgICAvL1xyXG4gICAgICAgICAgdGhpcy5saXN0ICAgICAgICAgPSByZXMuaXRlbXM7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlcy50b3RhbENvdW50O1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nICAgICAgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOmFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1zZyAgICAgPSBlcnIuZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyLm1lc3NhZ2UgfHwgJ9iu2LfYoyDZgdmKINin2YTYqtit2YXZitmEJztcclxuICAgICAgICAgIHRoaXMubG9hZGluZyAgICAgID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxufVxyXG5cclxub25TZWFyY2goZmlsdGVycz86IGFueSk6IHZvaWQge1xyXG4gIC8vXHJcbiAgaWYgKGZpbHRlcnMgJiYgdHlwZW9mIGZpbHRlcnMgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGZpbHRlcnMpKSB7XHJcbiAgICB0aGlzLnBhZ2VGaWx0ZXJzID0gZmlsdGVycztcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy5zZWFyY2hHbG9iYWwgPSBmaWx0ZXJzO1xyXG4gIH1cclxuXHJcbiAgdGhpcy5sb2FkUGFnZSgwLCAxMCk7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbm9uUGFnZUNoYW5nZShldmVudDogeyBmaXJzdD86IG51bWJlcjsgcm93cz86IG51bWJlcjsgc29ydD86IHN0cmluZzsgZmlsdGVycz86IFJlY29yZDxzdHJpbmcsIGFueT4gfSk6IHZvaWQge1xyXG4gIC8vINmB2YMg2KfZhNmF2KrYutmK2ZHYsdin2Kog2YXYuSDZgtmK2YXYqSDYp9mB2KrYsdin2LbZitipINmE2YHZhNin2KrYsVxyXG4gIGNvbnN0IHtcclxuICAgIGZpcnN0ICAgPSB0aGlzLmZpcnN0LFxyXG4gICAgcm93cyAgICA9IHRoaXMucm93cyxcclxuICAgIHNvcnQgICAgPSB0aGlzLnNvcnQsXHJcbiAgICBmaWx0ZXJzID0ge31cclxuICB9ID0gZXZlbnQ7XHJcblxyXG4gIHRoaXMuZmlyc3QgPSBmaXJzdDtcclxuICB0aGlzLnJvd3MgID0gcm93cztcclxuICB0aGlzLnNvcnQgID0gc29ydDtcclxuXHJcbiAgLy8gY29uc3QgcGFnZUluZGV4ID0gTWF0aC5mbG9vcihmaXJzdCAvIHJvd3MpO1xyXG4gIGNvbnN0IHNraXBDb3VudCA9IGZpcnN0O1xyXG4gIGNvbnN0IHBhZ2VJbmRleCA9IHNraXBDb3VudDtcclxuXHJcbiAgLy8g2KfZhNmI2LXZiNmEINmE2YTZgdmE2KrYsSDYp9mE2LnYp9mFINi52KjYsSDYp9mE2LXZiti62Kkg2KfZhNmF2LHYqNi52KlcclxuICBjb25zdCBnbG9iYWxWYWx1ZSA9IGZpbHRlcnNbJ2dsb2JhbCddO1xyXG4gIHRoaXMuc2VhcmNoR2xvYmFsID0gdHlwZW9mIGdsb2JhbFZhbHVlID09PSAnc3RyaW5nJyA/IGdsb2JhbFZhbHVlIDogJyc7XHJcblxyXG4gIC8vINmB2YTYqtix2Kkg2K7Yp9i12Kkg2KjYrdmC2YQg2YjYp9it2K9cclxuICAvLyBjb25zdCBmaWVsZEZpbHRlcnMgPSB7IC4uLmZpbHRlcnMgfTtcclxuICAvLyBkZWxldGUgZmllbGRGaWx0ZXJzWydnbG9iYWwnXTtcclxuICAvLyB0aGlzLmN1cnJlbnRGaWx0ZXJzID0gZmllbGRGaWx0ZXJzIGFzIFBhcnRpYWw8Rj47XHJcblxyXG5cclxuXHJcbiAgdGhpcy5sb2FkUGFnZShwYWdlSW5kZXgsIHJvd3MpO1xyXG59XHJcblxyXG5cclxucHJvdGVjdGVkIG9wZW5FZGl0b3IoaXRlbTogVCB8IG51bGwsIG1vZGU6ICdhZGQnIHwgJ2VkaXQnIHwgJ3ZpZXcnKTogdm9pZCB7XHJcbiAgdGhpcy5tb2RlID0gbW9kZTtcclxuICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW0gPz8gdGhpcy5kZWZhdWx0TW9kZWwgPz8ge307XHJcbiAgdGhpcy5pc0VkaXRNb2RlID0gbW9kZSA9PT0gJ2VkaXQnO1xyXG4gIHRoaXMuaXNWaWV3TW9kZSA9IG1vZGUgPT09ICd2aWV3JztcclxuXHJcbiAgLy8gcmVzb2x2ZSBkaXNwbGF5TW9kZSAoc3RyaW5nIG9yIG1hcClcclxuICBjb25zdCBtb2RlQ29uZmlnID0gdHlwZW9mIHRoaXMuZGlzcGxheU1vZGUgPT09ICdzdHJpbmcnXHJcbiAgICA/IHRoaXMuZGlzcGxheU1vZGVcclxuICAgIDogdGhpcy5kaXNwbGF5TW9kZVttb2RlXSA/PyAnZHJhd2VyJztcclxuXHJcbiAgc3dpdGNoIChtb2RlQ29uZmlnKSB7XHJcbiAgICBjYXNlICdkcmF3ZXInOlxyXG4gICAgICB0aGlzLmRyYXdlclZpc2libGUgPSB0cnVlO1xyXG4gICAgICBicmVhaztcclxuXHJcbiAgICBjYXNlICdkaWFsb2cnOlxyXG4gICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICBicmVhaztcclxuXHJcbiAgICBjYXNlICdyb3V0ZSc6XHJcbiAgICAgIHtcclxuICAgICAgICBjb25zdCBpZCA9IGl0ZW0gPyAoaXRlbSBhcyBhbnkpW3RoaXMuaWRGaWVsZF0gOiAnbmV3JztcclxuICAgICAgaWYobW9kZSA9PT0gJ2FkZCcpe1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFttb2RlXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2lkLCBtb2RlXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgfVxyXG59XHJcblxyXG52aXNpYmxlQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgY29uc3QgbW9kZUNvbmZpZyA9IHR5cGVvZiB0aGlzLmRpc3BsYXlNb2RlID09PSAnc3RyaW5nJ1xyXG4gICAgPyB0aGlzLmRpc3BsYXlNb2RlXHJcbiAgICA6IHRoaXMuZGlzcGxheU1vZGVbdGhpcy5tb2RlIGFzICdhZGQnIHwgJ2VkaXQnIHwgJ3ZpZXcnXSA/PyAnZHJhd2VyJztcclxuXHJcbiAgaWYgKG1vZGVDb25maWcgPT09ICdkaWFsb2cnKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB2YWx1ZTtcclxuICB9IGVsc2UgaWYgKG1vZGVDb25maWcgPT09ICdkcmF3ZXInKSB7XHJcbiAgICB0aGlzLmRyYXdlclZpc2libGUgPSB2YWx1ZTtcclxuICB9IGVsc2Uge1xyXG4gICAgLy8gcm91dGUgbW9kZSBkb2VzIG5vdCB1c2UgZHJhd2VyL2RpYWxvZ1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8vIG9uVGFibGVBY3Rpb24oZXZlbnQ6IHsgbmFtZTogc3RyaW5nOyByb3c6IFQgfCBudWxsIH0pOiB2b2lkIHtcclxuLy8gICAgIHN3aXRjaCAoZXZlbnQubmFtZSkge1xyXG4vLyAgICAgICBjYXNlICdhZGQnOiAgICB0aGlzLm9wZW5EcmF3ZXIobnVsbCxldmVudC5uYW1lKTsgICAgICAgICAgICAgYnJlYWs7XHJcbi8vICAgICAgIGNhc2UgJ3ZpZXcnOiAgIHRoaXMub3BlbkRyYXdlcihldmVudC5yb3chLGV2ZW50Lm5hbWUpOyAgYnJlYWs7XHJcbi8vICAgICAgIGNhc2UgJ2VkaXQnOiAgIHRoaXMub3BlbkRyYXdlcihldmVudC5yb3chLGV2ZW50Lm5hbWUpOyAgYnJlYWs7XHJcbi8vICAgICAgIGNhc2UgJ2RlbGV0ZSc6IHRoaXMub25EZWxldGUoZXZlbnQucm93ISk7YnJlYWs7XHJcbi8vICAgICAgIGNhc2UgJ3N0YXRlJzogdGhpcy5vcGVuRGVhY3RpdmF0aW9uUmVhc29uKGV2ZW50LnJvdyEpO2JyZWFrO1xyXG4vLyAgICAgfVxyXG4vLyB9XHJcblxyXG5vblRhYmxlQWN0aW9uKGV2ZW50OiB7IG5hbWU6IHN0cmluZzsgcm93OiBUIHwgbnVsbCB9KTogdm9pZCB7XHJcbiAgc3dpdGNoIChldmVudC5uYW1lKSB7XHJcbiAgICBjYXNlICdhZGQnOlxyXG4gICAgY2FzZSAnZWRpdCc6XHJcbiAgICBjYXNlICd2aWV3JzpcclxuICAgICAgdGhpcy5vcGVuRWRpdG9yKGV2ZW50LnJvdywgZXZlbnQubmFtZSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnZGVsZXRlJzpcclxuICAgICAgdGhpcy5vbkRlbGV0ZShldmVudC5yb3chKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdzdGF0ZSc6XHJcbiAgICAgIHRoaXMub3BlbkRlYWN0aXZhdGlvblJlYXNvbihldmVudC5yb3chKTtcclxuICAgICAgYnJlYWs7XHJcbiAgfVxyXG59XHJcblxyXG5cclxucHJvdGVjdGVkIG9wZW5EcmF3ZXIoaXRlbTogVCB8IG51bGwsbW9kZTpzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICAgIHRoaXMubW9kZSA9IG1vZGU7XHJcblxyXG4gICAgICAvLyB0aGlzLmRyYXdlclZpc2libGUgPSAhdGhpcy5kcmF3ZXJWaXNpYmxlO1xyXG5cclxuXHJcbiAgICAgIGlmIChpdGVtID09IG51bGwpIHtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLmRlZmF1bHRNb2RlbCB8fCB7fTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKG1vZGUgPT0gJ2VkaXQnKXtcclxuICAgICAgICB0aGlzLmRyYXdlclZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IHRydWUgO1xyXG4gICAgICAgIHRoaXMuaXNWaWV3TW9kZSA9IGZhbHNlIDtcclxuICAgICAgICAvLyB0aGlzLmlzRWRpdE1vZGUgPSBpdGVtICE9bnVsbCA7XHJcbiAgICAgIH1cclxuICAgICAgaWYobW9kZSA9PSAnYWRkJyl7XHJcbiAgICAgICAgIHRoaXMuZHJhd2VyVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc1ZpZXdNb2RlID0gZmFsc2UgO1xyXG4gICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IGZhbHNlIDtcclxuICAgICAgfVxyXG4gICAgICBpZihtb2RlID09ICd2aWV3Jyl7XHJcbiAgICAgICAgLy8gdGhpcy5kcmF3ZXJWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmlzVmlld01vZGUgPSB0cnVlIDtcclxuICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPSBmYWxzZSA7XHJcbiAgICAgIH1cclxufVxyXG5cclxuXHJcbm9wZW5EZWFjdGl2YXRpb25SZWFzb24obW9kZWw6IGFueSkge1xyXG5cclxuICB0aGlzLnNlbGVjdGVkSXRlbSA9IG1vZGVsO1xyXG4gIGlmKHRoaXMuc2VsZWN0ZWRJdGVtLmlzQWN0aXZlID09IHRydWUpe1xyXG5cclxuXHJcbiAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oRGVhY3RpdmF0aW9uUmVhc29uRm9ybUNvbXBvbmVudCwge1xyXG4gICAgaGVhZGVyOiAn2KfZhNiz2KjYqCAo2YHZiiDYrdin2YQg2KrZhSDYpdmK2YLYp9mB2YcpJyxcclxuICAgIHdpZHRoOiAnMzB2dycsXHJcbiAgICBkYXRhOiB7IG1vZGVsOiB7IC4uLm1vZGVsIH0sXHJcbiAgICAgICAgZmllbGRzOiB0aGlzLmZvcm1GaWVsZHMsXHJcbiAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNlLFxyXG4gICAgICAgIGlkRmllbGQ6IHRoaXMuaWRGaWVsZCB9LFxyXG4gIH0pO1xyXG5cclxuICByZWYub25DbG9zZS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbS5pc0FjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbS5kZWFjdGl2YXRpb25SZWFzb24gPSByZXN1bHQuZGVhY3RpdmF0aW9uUmVhc29uO1xyXG4gICAgICAvLyBPcHRpb25hbGx5OiBzYXZlIG1vZGVsIHZpYSBBUElcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5lbHNle1xyXG4gICB0aGlzLnNlbGVjdGVkSXRlbS5pc0FjdGl2ZSA9IHRydWU7XHJcbiAgIHRoaXMuc2VsZWN0ZWRJdGVtLmRlYWN0aXZhdGlvblJlYXNvbiA9IFwiXCI7XHJcbiAgICBjb25zdCBpZCA9ICAodGhpcy5zZWxlY3RlZEl0ZW0gYXMgYW55KVt0aGlzLmlkRmllbGRdIDtcclxuICAgIHRoaXMuc2VydmljZS51cGRhdGUoaWQsIHRoaXMuc2VsZWN0ZWRJdGVtKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgIG5leHQ6ICgpID0+IHtjb25zb2xlLmxvZygnJyl9LFxyXG4gICAgICAgICAgIGVycm9yOiAoZXJyOmFueSkgPT4ge1xyXG4gICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgfSk7XHJcbn1cclxufVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vIG9uRGVsZXRlKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gIC8vICAgaWYgKCFjb25maXJtKCfZh9mEINiq2LHZitivINin2YTYrdiw2YEg2YHYudmE2KfZi9ifJykpIHJldHVybjtcclxuICAvLyAgIGNvbnN0IGlkID0gKGl0ZW0gYXMgYW55KVt0aGlzLmlkRmllbGRdO1xyXG4gIC8vICAgdGhpcy5zZXJ2aWNlLmRlbGV0ZShpZCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAvLyAgICAgdGhpcy5sb2FkUGFnZSgwLCB0aGlzLnJvd3MpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuXHJcbm9uRGVsZXRlKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gIGNvbnN0IGlkID0gaXRlbVt0aGlzLmlkRmllbGRdO1xyXG5cclxuICB0aGlzLnN3YWxTZXJ2aWNlLmNvbmZpcm0oXHJcbiAgICAn2KrYo9mD2YrYryDYp9mE2K3YsNmBJyxcclxuICAgICfZh9mEINiq2LHZitivINit2LDZgSDZh9iw2Kcg2KfZhNiz2KzZhCDZgdi52YTYp9mL2J8nLFxyXG4gICAgJ9mG2LnZhdiMINin2K3YsNmBJyxcclxuICAgICfYpdmE2LrYp9ihJ1xyXG4gICkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICBpZiAocmVzdWx0LmlzQ29uZmlybWVkKSB7XHJcbiAgICAgIHRoaXMuc2VydmljZS5kZWxldGUoaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkUGFnZSgwLCB0aGlzLnJvd3MpO1xyXG4gICAgICAgICAgdGhpcy5zd2FsU2VydmljZS5zdWNjZXNzKCfYqtmFINin2YTYrdiw2YEg2KjZhtis2KfYrScpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgY29uc3QgbXNnID1cclxuICAgICAgICAgICAgZXJyLmVycm9yPy50aXRsZSB8fFxyXG4gICAgICAgICAgICBlcnIubWVzc2FnZSB8fFxyXG4gICAgICAgICAgICAn2K3Yr9irINiu2LfYoyDYo9ir2YbYp9ihINin2YTYrdmB2LguINmK2LHYrNmJINin2YTZhdit2KfZiNmE2Kkg2YXYsdipINij2K7YsdmJLic7XHJcblxyXG4gICAgICAgICAgLy8gdGhpcy5lcnJvck1lc3NhZ2UgPSBtc2c7XHJcblxyXG4gICAgICAgICAgLy8g4p2MINix2LPYp9mE2Kkg2K7Yt9ijXHJcbiAgICAgICAgICB0aGlzLnN3YWxTZXJ2aWNlLmVycm9yKCfZgdi02YQg2KfZhNit2LDZgScsIG1zZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuXHJcblxyXG5nZXQgY29sdW1ucygpOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcclxuICAgIGNvbnN0IGZsYXR0ZW5GaWVsZHMgPSAoZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdKTogRm9ybWx5RmllbGRDb25maWdbXSA9PiB7XHJcbiAgICAgIHJldHVybiBmaWVsZHMuZmxhdE1hcChmaWVsZCA9PiB7XHJcbiAgICAgICAgLy8gQ2hlY2sgZm9yIG5lc3RlZCBncm91cC9wYW5lbFxyXG4gICAgICAgIGlmIChmaWVsZC5maWVsZEdyb3VwPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiBmbGF0dGVuRmllbGRzKGZpZWxkLmZpZWxkR3JvdXApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2tpcCBmaWVsZHMgd2l0aCBubyBwcm9wcyBvciB0YWJsZS5oaWRkZW4gPT09IHRydWVcclxuICAgICAgICBpZiAoIWZpZWxkLnByb3BzIHx8IGZpZWxkLnByb3BzWyd0YWJsZSddPy5oaWRkZW4gPT09IHRydWUpIHtcclxuICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIERldGVybWluZSB0aGUgY29sdW1uIHR5cGU6IHRhYmxlLnR5cGUgPiBmaWVsZC50eXBlID4gJ2xhYmVsLXR5cGUnXHJcbiAgICAgICAgLy8gY29uc3QgdGFibGVUeXBlID0gZmllbGQucHJvcHNbJ3RhYmxlJ10/LnR5cGUgfHwgZmllbGQudHlwZSB8fCAnbGFiZWwtdHlwZSc7XHJcbiAgICAgICAgY29uc3QgdGFibGVUeXBlID0gZmllbGQucHJvcHNbJ3RhYmxlJ10/LnR5cGUgfHwgICdsYWJlbC10eXBlJztcclxuXHJcbiAgICAgICAgLy9cclxuXHJcbiAgICAgICAgcmV0dXJuIFt7XHJcbiAgICAgICAgICB0eXBlOiB0YWJsZVR5cGUsXHJcbiAgICAgICAgICBrZXk6IGZpZWxkWydrZXknXSwgLy8gYWx3YXlzIHNldCBrZXkgZm9yIHRhYmxlIHJlbmRlcmluZ1xyXG4gICAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgICAgLi4uZmllbGQucHJvcHMsICAgICAgICAgIC8vIGJhc2UgcHJvcHNcclxuICAgICAgICAgICAgLi4uZmllbGQucHJvcHNbJ3RhYmxlJ10/LnByb3BzIC8vIHRhYmxlLXNwZWNpZmljIG92ZXJyaWRlc1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGV4cHJlc3Npb25zOiBmaWVsZC5wcm9wc1sndGFibGUnXT8uZXhwcmVzc2lvbnNcclxuICAgICAgICB9XTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBmbGF0dGVuRmllbGRzKHRoaXMuZm9ybUZpZWxkcyk7XHJcbn1cclxuXHJcblxyXG5nZXQgZmlsdGVycygpOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcclxuICBjb25zdCBmbGF0dGVuRm9yRmlsdGVyID0gKGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSk6IEZvcm1seUZpZWxkQ29uZmlnW10gPT4ge1xyXG4gICAgcmV0dXJuIGZpZWxkcy5mbGF0TWFwKGZpZWxkID0+IHtcclxuICAgICAgaWYgKGZpZWxkLmZpZWxkR3JvdXA/Lmxlbmd0aCkge1xyXG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGhhbmRsZSBuZXN0ZWQgcGFuZWxzL2dyb3Vwc1xyXG4gICAgICAgIHJldHVybiBmbGF0dGVuRm9yRmlsdGVyKGZpZWxkLmZpZWxkR3JvdXApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBTa2lwIGZpZWxkcyB3aXRoIG5vIHByb3BzIG9yIGZpbHRlci5oaWRkZW4gPT09IHRydWVcclxuICAgICAgaWYgKCFmaWVsZC5wcm9wcyB8fCBmaWVsZC5wcm9wc1snZmlsdGVyJ10/LmhpZGRlbiA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gTWVyZ2UgYmFzZSBwcm9wcyB3aXRoIGZpbHRlciBvdmVycmlkZXNcclxuICAgICAgY29uc3QgbWVyZ2VkUHJvcHMgPSB7XHJcbiAgICAgICAgLi4uZmllbGQucHJvcHMsXHJcbiAgICAgICAgLi4uZmllbGQucHJvcHNbJ2ZpbHRlciddPy5wcm9wcyxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIC8vIFJlbW92ZSBkaXNhYmxlZCBhbmQgcmVxdWlyZWQgcHJvcHNcclxuICAgICAgZGVsZXRlIG1lcmdlZFByb3BzWydkaXNhYmxlZCddO1xyXG4gICAgICBkZWxldGUgbWVyZ2VkUHJvcHNbJ3JlcXVpcmVkJ107XHJcbiAgICAgIGRlbGV0ZSBtZXJnZWRQcm9wc1snbG9hZERlZmF1bHQnXTtcclxuXHJcbiAgICAgIHJldHVybiBbe1xyXG4gICAgICAgIHR5cGU6IGZpZWxkLnR5cGUsXHJcbiAgICAgICAga2V5OiBmaWVsZC5rZXksIC8vIGFsd2F5cyBzZXQga2V5IGZvciB0YWJsZSByZW5kZXJpbmdcclxuICAgICAgICBwcm9wczogbWVyZ2VkUHJvcHMsXHJcbiAgICAgICAgLy8gZXhwcmVzc2lvbnM6IGZpZWxkLnByb3BzWydmaWx0ZXInXT8uZXhwcmVzc2lvbnMgLy8gdW5jb21tZW50IGlmIG5lZWRlZFxyXG4gICAgICB9XTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBmbGF0dGVuRm9yRmlsdGVyKHRoaXMuZm9ybUZpZWxkcyk7XHJcbn1cclxuXHJcblxyXG59XHJcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtYmFzZS1jcnVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2Jhc2UtY3J1ZC9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtYmFzZS1jcnVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|