@elite.framework/ng.ui.core 1.0.70 → 1.0.72
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 -19
- package/fesm2022/elite.framework-ng.ui.core-base-crud.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-selector.mjs +22 -2
- package/fesm2022/elite.framework-ng.ui.core-generic-selector.mjs.map +1 -1
- package/generic-selector/index.d.ts +2 -0
- package/package.json +25 -25
|
@@ -260,35 +260,31 @@ class BaseCrud {
|
|
|
260
260
|
get columns() {
|
|
261
261
|
const flattenFields = (fields) => {
|
|
262
262
|
return fields.flatMap(field => {
|
|
263
|
-
|
|
264
|
-
if (field.fieldGroup?.length) {
|
|
263
|
+
if (field.fieldGroup?.length)
|
|
265
264
|
return flattenFields(field.fieldGroup);
|
|
266
|
-
}
|
|
267
|
-
// Skip fields with no props or table.hidden === true
|
|
268
265
|
if (!field.props)
|
|
269
266
|
return [];
|
|
270
|
-
|
|
271
|
-
const tableConfig = field.props['table'] || {};
|
|
267
|
+
const tableConfig = field.props['table'] ?? {};
|
|
272
268
|
const hideExpr = tableConfig.expressions?.hide;
|
|
273
|
-
if (tableConfig.hidden === true || (typeof hideExpr === 'function' && hideExpr()))
|
|
269
|
+
if (tableConfig.hidden === true || (typeof hideExpr === 'function' && hideExpr()))
|
|
274
270
|
return [];
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
271
|
+
const tableType = tableConfig.type ?? 'label-type';
|
|
272
|
+
const mergedProps = { ...field.props, ...(tableConfig.props ?? {}) };
|
|
273
|
+
const order = tableConfig.order ??
|
|
274
|
+
tableConfig.props?.order ??
|
|
275
|
+
mergedProps['order'];
|
|
280
276
|
return [{
|
|
281
277
|
type: tableType,
|
|
282
|
-
key: field
|
|
283
|
-
props:
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
},
|
|
287
|
-
expressions: field.props['table']?.expressions
|
|
278
|
+
key: field.key,
|
|
279
|
+
props: mergedProps,
|
|
280
|
+
expressions: tableConfig.expressions,
|
|
281
|
+
order
|
|
288
282
|
}];
|
|
289
283
|
});
|
|
290
284
|
};
|
|
291
|
-
return flattenFields(this.formFields)
|
|
285
|
+
return flattenFields(this.formFields)
|
|
286
|
+
.sort((a, b) => (a.order ?? Number.MAX_SAFE_INTEGER) - (b.order ?? Number.MAX_SAFE_INTEGER))
|
|
287
|
+
.map(({ order, ...rest }) => rest);
|
|
292
288
|
}
|
|
293
289
|
get filters() {
|
|
294
290
|
const flattenForFilter = (fields) => {
|
|
@@ -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 { IdParserService, 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 // abstract idField: keyof T;\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 idParser = inject(IdParserService);\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 const commands = [id, mode];\n console.log('Commands:', commands);\n console.log('Current route:', this.route.snapshot.pathFromRoot.map(r => r.routeConfig?.path));\n const tree = this.router.createUrlTree(commands, { relativeTo: this.route });\n console.log('URL Tree:', tree.toString());\n // debugger\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.idParser.parseIds(this.selectedItem, this.idField);\n // const id = (this.selectedItem as any)[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) {\n // const id = item[this.idField];\n const id = this.idParser.parseIds(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 =\n // 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)\n return [];\n // Skip if hidden prop or hide expression returns true\n const tableConfig = field.props['table'] || {};\n const hideExpr = tableConfig.expressions?.hide;\n if (tableConfig.hidden === true || (typeof hideExpr === 'function' && hideExpr())) {\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jcnVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2Jhc2UtY3J1ZC9zcmMvbGliL2Jhc2UtY3J1ZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBZSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0saURBQWlELENBQUM7O0FBR2xHLE1BQU0sT0FBZ0IsUUFBUTtJQUM1QixJQUFJLEdBQXNCLEVBQUUsQ0FBQztJQUM3QixTQUFTLEdBQVUsSUFBSSxDQUFDO0lBQ3hCLE9BQU8sR0FBVSxJQUFJLENBQUM7SUFDdEIsT0FBTyxHQUFVLEtBQUssQ0FBQztJQUN2QixRQUFRLEdBQVUsRUFBRSxDQUFDO0lBQ3JCLEtBQUssR0FBYSxDQUFDLENBQUM7SUFDcEIsSUFBSSxHQUFjLEVBQUUsQ0FBQztJQUNyQixZQUFZLEdBQU0sQ0FBQyxDQUFDO0lBQ3BCLFlBQVksR0FBTSxFQUFFLENBQUM7SUFDckIsSUFBSSxDQUFVO0lBQ2QsV0FBVyxHQUFlLEVBQUUsQ0FBQztJQUM3QixjQUFjLEdBQWUsRUFBRSxDQUFDO0lBQ2hDLElBQUksR0FBRSxFQUFFLENBQUM7SUFDVCxZQUFZLEdBQUUsT0FBTyxDQUFDO0lBQ2QsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVoQyxTQUFTLENBQW9CO0lBYXZDLDZCQUE2QjtJQUM3QixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDdEIsWUFBWSxHQUFZLElBQUksQ0FBQztJQUM3QixZQUFZLEdBQVksSUFBSSxD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Z0JBQzVDLENBQUM7Z0JBRUQsc0RBQXNEO2dCQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDM0QsT0FBTyxFQUFFLENBQUM7Z0JBQ1osQ0FBQztnQkFFRCx5Q0FBeUM7Z0JBQ3pDLE1BQU0sV0FBVyxHQUFHO29CQUNsQixHQUFHLEtBQUssQ0FBQyxLQUFLO29CQUNkLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLO2lCQUNoQyxDQUFDO2dCQUVGLHFDQUFxQztnQkFDckMsT0FBTyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQy9CLE9BQU8sV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMvQixPQUFPLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFFbEMsT0FBTyxDQUFDO3dCQUNOLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTt3QkFDaEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUscUNBQXFDO3dCQUNyRCxLQUFLLEVBQUUsV0FBVzt3QkFDbEIseUVBQXlFO3FCQUMxRSxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUVGLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7dUdBbFpxQixRQUFROzJGQUFSLFFBQVE7OzJGQUFSLFFBQVE7a0JBRDdCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UsIElkUGFyc2VyU2VydmljZSwgU3dhbFNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBBY3Rpb25EZWYsIFBhZ2luYXRlZFJlc3VsdCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBEZWFjdGl2YXRpb25SZWFzb25Gb3JtQ29tcG9uZW50IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2RlYWN0aXZhdGlvbi1yZWFzb24nO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ3J1ZDxULCBGID0gYW55PiAge1xyXG4gIGxpc3Q6IFRbXSAgICAgICAgICAgICAgID0gW107XHJcbiAgcGFnaW5hdG9yICAgICAgICA9IHRydWU7XHJcbiAgY2FuTG9hZCAgICAgICAgPSB0cnVlO1xyXG4gIGxvYWRpbmcgICAgICAgID0gZmFsc2U7XHJcbiAgZXJyb3JNc2cgICAgICAgID0gJyc7XHJcbiAgZmlyc3QgICAgICAgICAgID0gMDtcclxuICByb3dzICAgICAgICAgICAgPSAxMDtcclxuICB0b3RhbFJlY29yZHMgICAgPSAwO1xyXG4gIHNlYXJjaEdsb2JhbCAgICA9ICcnO1xyXG4gIHNvcnQ/OiBzdHJpbmc7XHJcbiAgcGFnZUZpbHRlcnM6IFBhcnRpYWw8Rj4gPSB7fTtcclxuICBjdXJyZW50RmlsdGVyczogUGFydGlhbDxGPiA9IHt9O1xyXG4gIG1vZGUgPScnO1xyXG4gIHNjcm9sbEhlaWdodCA9JzQwMHB4JztcclxuICBwcml2YXRlIHN3YWxTZXJ2aWNlID0gaW5qZWN0KFN3YWxTZXJ2aWNlKTtcclxuXHJcbiAgcHJvdGVjdGVkIGRpYWxvZ1JlZiE6IER5bmFtaWNEaWFsb2dSZWY7XHJcblxyXG5cclxuICAvLyBhYnN0cmFjdCBzZXJ2aWNlOiBDcnVkU2VydmljZTxULCBGPjtcclxuICBhYnN0cmFjdCBzZXJ2aWNlOiBCYXNlU2VydmljZTtcclxuICBhYnN0cmFjdCBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlO1xyXG4gIC8vIGFic3RyYWN0IGRpYWxvZ0NvbXBvbmVudDogYW55O1xyXG4gIC8vIGFic3RyYWN0IGNvbHVtbnM6IENvbHVtbkRlZjxUPltdO1xyXG4gIGFic3RyYWN0IGFjdGlvbnM6IEFjdGlvbkRlZjxUPltdO1xyXG5cclxuICAvLyBmb3IgZ2VuZXJpYyBkaWFsb2c6XHJcbiAgYWJzdHJhY3QgZm9ybUZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXTtcclxuICBhYnN0cmFjdCBpZEZpZWxkOiAgc3RyaW5nIHxhbnk7XHJcbiAgLy8gYWJzdHJhY3QgaWRGaWVsZDoga2V5b2YgVDtcclxuICBkaWFsb2dWaXNpYmxlID0gZmFsc2U7XHJcbiAgZHJhd2VyVmlzaWJsZSA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkSXRlbTogVCB8IGFueSA9IG51bGw7XHJcbiAgZGVmYXVsdE1vZGVsOiBUIHwgYW55ID0gbnVsbDtcclxuICAvLyBzZWxlY3RlZEl0ZW06IFQgfCBhbnkgPSB7fTtcclxuICBpc1ZpZXdNb2RlID0gZmFsc2U7XHJcbiAgaXNFZGl0TW9kZSA9IGZhbHNlO1xyXG5cclxuXHJcblxyXG4gIGRpc3BsYXlNb2RlOlxyXG4gIHwgJ2RyYXdlcicgfCAnZGlhbG9nJyB8ICdyb3V0ZSdcclxuICB8IFBhcnRpYWw8UmVjb3JkPCdhZGQnIHwgJ2VkaXQnIHwgJ3ZpZXcnLCAnZHJhd2VyJyB8ICdkaWFsb2cnIHwgJ3JvdXRlJz4+XHJcbiAgPSAnZHJhd2VyJztcclxucHJpdmF0ZSBpZFBhcnNlcj0gaW5qZWN0KElkUGFyc2VyU2VydmljZSk7XHJcbiAgcHVibGljIHJvdXRlcj0gaW5qZWN0KFJvdXRlcik7XHJcbiAgcHVibGljIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcclxuXHJcbmxvYWRQYWdlKHBhZ2VJbmRleDogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLmNhbkxvYWQpe1xyXG5cclxuXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgY29uc3QgZmlsdGVyczogUGFydGlhbDxGPiA9IHtcclxuICAgICAgbWF4UmVzdWx0Q291bnQ6cGFnZVNpemUsXHJcbiAgICAgIHNraXBDb3VudDpwYWdlSW5kZXgsXHJcbiAgICAgIHNvcnRpbmc6dGhpcy5zb3J0LFxyXG4gICAgLi4udGhpcy5jdXJyZW50RmlsdGVycyxcclxuICAgIC4uLnRoaXMucGFnZUZpbHRlcnMsXHJcbiAgICAuLi4odGhpcy5zZWFyY2hHbG9iYWwgPyB7IGZpbHRlcjogdGhpcy5zZWFyY2hHbG9iYWwgfSA6IHt9KSxcclxuICAgIH07XHJcbiAgICAvL1xyXG4gICAgdGhpcy5zZXJ2aWNlLmdldExpc3QoZmlsdGVycylcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogUGFnaW5hdGVkUmVzdWx0PFQ+KSA9PiB7XHJcbiAgICAgICAgICAvL1xyXG4gICAgICAgICAgdGhpcy5saXN0ICAgICAgICAgPSByZXMuaXRlbXM7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlcy50b3RhbENvdW50O1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nICAgICAgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOmFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1zZyAgICAgPSBlcnIuZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyLm1lc3NhZ2UgfHwgJ9iu2LfYoyDZgdmKINin2YTYqtit2YXZitmEJztcclxuICAgICAgICAgIHRoaXMubG9hZGluZyAgICAgID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxufVxyXG5cclxub25TZWFyY2goZmlsdGVycz86IGFueSk6IHZvaWQge1xyXG4gIC8vXHJcbiAgaWYgKGZpbHRlcnMgJiYgdHlwZW9mIGZpbHRlcnMgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGZpbHRlcnMpKSB7XHJcbiAgICB0aGlzLnBhZ2VGaWx0ZXJzID0gZmlsdGVycztcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy5zZWFyY2hHbG9iYWwgPSBmaWx0ZXJzO1xyXG4gIH1cclxuXHJcbiAgdGhpcy5sb2FkUGFnZSgwLCAxMCk7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbm9uUGFnZUNoYW5nZShldmVudDogeyBmaXJzdD86IG51bWJlcjsgcm93cz86IG51bWJlcjsgc29ydD86IHN0cmluZzsgZmlsdGVycz86IFJlY29yZDxzdHJpbmcsIGFueT4gfSk6IHZvaWQge1xyXG4gIC8vINmB2YMg2KfZhNmF2KrYutmK2ZHYsdin2Kog2YXYuSDZgtmK2YXYqSDYp9mB2KrYsdin2LbZitipINmE2YHZhNin2KrYsVxyXG4gIGNvbnN0IHtcclxuICAgIGZpcnN0ICAgPSB0aGlzLmZpcnN0LFxyXG4gICAgcm93cyAgICA9IHRoaXMucm93cyxcclxuICAgIHNvcnQgICAgPSB0aGlzLnNvcnQsXHJcbiAgICBmaWx0ZXJzID0ge31cclxuICB9ID0gZXZlbnQ7XHJcblxyXG4gIHRoaXMuZmlyc3QgPSBmaXJzdDtcclxuICB0aGlzLnJvd3MgID0gcm93cztcclxuICB0aGlzLnNvcnQgID0gc29ydDtcclxuXHJcbiAgLy8gY29uc3QgcGFnZUluZGV4ID0gTWF0aC5mbG9vcihmaXJzdCAvIHJvd3MpO1xyXG4gIGNvbnN0IHNraXBDb3VudCA9IGZpcnN0O1xyXG4gIGNvbnN0IHBhZ2VJbmRleCA9IHNraXBDb3VudDtcclxuXHJcbiAgLy8g2KfZhNmI2LXZiNmEINmE2YTZgdmE2KrYsSDYp9mE2LnYp9mFINi52KjYsSDYp9mE2LXZiti62Kkg2KfZhNmF2LHYqNi52KlcclxuICBjb25zdCBnbG9iYWxWYWx1ZSA9IGZpbHRlcnNbJ2dsb2JhbCddO1xyXG4gIHRoaXMuc2VhcmNoR2xvYmFsID0gdHlwZW9mIGdsb2JhbFZhbHVlID09PSAnc3RyaW5nJyA/IGdsb2JhbFZhbHVlIDogJyc7XHJcblxyXG4gIC8vINmB2YTYqtix2Kkg2K7Yp9i12Kkg2KjYrdmC2YQg2YjYp9it2K9cclxuICAvLyBjb25zdCBmaWVsZEZpbHRlcnMgPSB7IC4uLmZpbHRlcnMgfTtcclxuICAvLyBkZWxldGUgZmllbGRGaWx0ZXJzWydnbG9iYWwnXTtcclxuICAvLyB0aGlzLmN1cnJlbnRGaWx0ZXJzID0gZmllbGRGaWx0ZXJzIGFzIFBhcnRpYWw8Rj47XHJcblxyXG5cclxuXHJcbiAgdGhpcy5sb2FkUGFnZShwYWdlSW5kZXgsIHJvd3MpO1xyXG59XHJcblxyXG5cclxucHJvdGVjdGVkIG9wZW5FZGl0b3IoaXRlbTogVCB8IG51bGwsIG1vZGU6ICdhZGQnIHwgJ2VkaXQnIHwgJ3ZpZXcnKTogdm9pZCB7XHJcbiAgdGhpcy5tb2RlID0gbW9kZTtcclxuICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW0gPz8gdGhpcy5kZWZhdWx0TW9kZWwgPz8ge307XHJcbiAgdGhpcy5pc0VkaXRNb2RlID0gbW9kZSA9PT0gJ2VkaXQnO1xyXG4gIHRoaXMuaXNWaWV3TW9kZSA9IG1vZGUgPT09ICd2aWV3JztcclxuXHJcbiAgLy8gcmVzb2x2ZSBkaXNwbGF5TW9kZSAoc3RyaW5nIG9yIG1hcClcclxuICBjb25zdCBtb2RlQ29uZmlnID0gdHlwZW9mIHRoaXMuZGlzcGxheU1vZGUgPT09ICdzdHJpbmcnXHJcbiAgICA/IHRoaXMuZGlzcGxheU1vZGVcclxuICAgIDogdGhpcy5kaXNwbGF5TW9kZVttb2RlXSA/PyAnZHJhd2VyJztcclxuXHJcbiAgc3dpdGNoIChtb2RlQ29uZmlnKSB7XHJcbiAgICBjYXNlICdkcmF3ZXInOlxyXG4gICAgICB0aGlzLmRyYXdlclZpc2libGUgPSB0cnVlO1xyXG4gICAgICBicmVhaztcclxuXHJcbiAgICBjYXNlICdkaWFsb2cnOlxyXG4gICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICBicmVhaztcclxuXHJcbiAgICBjYXNlICdyb3V0ZSc6XHJcbiAgICAgIHtcclxuXHJcblxyXG4gICAgICAgIGNvbnN0IGlkID0gaXRlbSA/IChpdGVtIGFzIGFueSlbdGhpcy5pZEZpZWxkXSA6ICduZXcnO1xyXG5cclxuICAgICAgaWYobW9kZSA9PT0gJ2FkZCcpe1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFttb2RlXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgY29uc3QgY29tbWFuZHMgPSBbaWQsIG1vZGVdO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdDb21tYW5kczonLCBjb21tYW5kcyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0N1cnJlbnQgcm91dGU6JywgdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXRoRnJvbVJvb3QubWFwKHIgPT4gci5yb3V0ZUNvbmZpZz8ucGF0aCkpO1xyXG5cclxuICAgICAgICBjb25zdCB0cmVlID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShjb21tYW5kcywgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdVUkwgVHJlZTonLCB0cmVlLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIC8vIGRlYnVnZ2VyXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2lkLCBtb2RlXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgfVxyXG59XHJcblxyXG52aXNpYmxlQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgY29uc3QgbW9kZUNvbmZpZyA9IHR5cGVvZiB0aGlzLmRpc3BsYXlNb2RlID09PSAnc3RyaW5nJ1xyXG4gICAgPyB0aGlzLmRpc3BsYXlNb2RlXHJcbiAgICA6IHRoaXMuZGlzcGxheU1vZGVbdGhpcy5tb2RlIGFzICdhZGQnIHwgJ2VkaXQnIHwgJ3ZpZXcnXSA/PyAnZHJhd2VyJztcclxuXHJcbiAgaWYgKG1vZGVDb25maWcgPT09ICdkaWFsb2cnKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB2YWx1ZTtcclxuICB9IGVsc2UgaWYgKG1vZGVDb25maWcgPT09ICdkcmF3ZXInKSB7XHJcbiAgICB0aGlzLmRyYXdlclZpc2libGUgPSB2YWx1ZTtcclxuICB9IGVsc2Uge1xyXG4gICAgLy8gcm91dGUgbW9kZSBkb2VzIG5vdCB1c2UgZHJhd2VyL2RpYWxvZ1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8vIG9uVGFibGVBY3Rpb24oZXZlbnQ6IHsgbmFtZTogc3RyaW5nOyByb3c6IFQgfCBudWxsIH0pOiB2b2lkIHtcclxuLy8gICAgIHN3aXRjaCAoZXZlbnQubmFtZSkge1xyXG4vLyAgICAgICBjYXNlICdhZGQnOiAgICB0aGlzLm9wZW5EcmF3ZXIobnVsbCxldmVudC5uYW1lKTsgICAgICAgICAgICAgYnJlYWs7XHJcbi8vICAgICAgIGNhc2UgJ3ZpZXcnOiAgIHRoaXMub3BlbkRyYXdlcihldmVudC5yb3chLGV2ZW50Lm5hbWUpOyAgYnJlYWs7XHJcbi8vICAgICAgIGNhc2UgJ2VkaXQnOiAgIHRoaXMub3BlbkRyYXdlcihldmVudC5yb3chLGV2ZW50Lm5hbWUpOyAgYnJlYWs7XHJcbi8vICAgICAgIGNhc2UgJ2RlbGV0ZSc6IHRoaXMub25EZWxldGUoZXZlbnQucm93ISk7YnJlYWs7XHJcbi8vICAgICAgIGNhc2UgJ3N0YXRlJzogdGhpcy5vcGVuRGVhY3RpdmF0aW9uUmVhc29uKGV2ZW50LnJvdyEpO2JyZWFrO1xyXG4vLyAgICAgfVxyXG4vLyB9XHJcblxyXG5vblRhYmxlQWN0aW9uKGV2ZW50OiB7IG5hbWU6IHN0cmluZzsgcm93OiBUIHwgbnVsbCB9KTogdm9pZCB7XHJcbiAgc3dpdGNoIChldmVudC5uYW1lKSB7XHJcbiAgICBjYXNlICdhZGQnOlxyXG4gICAgY2FzZSAnZWRpdCc6XHJcbiAgICBjYXNlICd2aWV3JzpcclxuICAgICAgdGhpcy5vcGVuRWRpdG9yKGV2ZW50LnJvdywgZXZlbnQubmFtZSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnZGVsZXRlJzpcclxuICAgICAgdGhpcy5vbkRlbGV0ZShldmVudC5yb3chKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdzdGF0ZSc6XHJcbiAgICAgIHRoaXMub3BlbkRlYWN0aXZhdGlvblJlYXNvbihldmVudC5yb3chKTtcclxuICAgICAgYnJlYWs7XHJcbiAgfVxyXG59XHJcblxyXG5cclxucHJvdGVjdGVkIG9wZW5EcmF3ZXIoaXRlbTogVCB8IG51bGwsbW9kZTpzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICAgIHRoaXMubW9kZSA9IG1vZGU7XHJcblxyXG4gICAgICAvLyB0aGlzLmRyYXdlclZpc2libGUgPSAhdGhpcy5kcmF3ZXJWaXNpYmxlO1xyXG5cclxuXHJcbiAgICAgIGlmIChpdGVtID09IG51bGwpIHtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLmRlZmF1bHRNb2RlbCB8fCB7fTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKG1vZGUgPT0gJ2VkaXQnKXtcclxuICAgICAgICB0aGlzLmRyYXdlclZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IHRydWUgO1xyXG4gICAgICAgIHRoaXMuaXNWaWV3TW9kZSA9IGZhbHNlIDtcclxuICAgICAgICAvLyB0aGlzLmlzRWRpdE1vZGUgPSBpdGVtICE9bnVsbCA7XHJcbiAgICAgIH1cclxuICAgICAgaWYobW9kZSA9PSAnYWRkJyl7XHJcbiAgICAgICAgIHRoaXMuZHJhd2VyVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc1ZpZXdNb2RlID0gZmFsc2UgO1xyXG4gICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IGZhbHNlIDtcclxuICAgICAgfVxyXG4gICAgICBpZihtb2RlID09ICd2aWV3Jyl7XHJcbiAgICAgICAgLy8gdGhpcy5kcmF3ZXJWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmlzVmlld01vZGUgPSB0cnVlIDtcclxuICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPSBmYWxzZSA7XHJcbiAgICAgIH1cclxufVxyXG5cclxuXHJcbm9wZW5EZWFjdGl2YXRpb25SZWFzb24obW9kZWw6IGFueSkge1xyXG5cclxuICB0aGlzLnNlbGVjdGVkSXRlbSA9IG1vZGVsO1xyXG4gIGlmKHRoaXMuc2VsZWN0ZWRJdGVtLmlzQWN0aXZlID09IHRydWUpe1xyXG5cclxuXHJcbiAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oRGVhY3RpdmF0aW9uUmVhc29uRm9ybUNvbXBvbmVudCwge1xyXG4gICAgaGVhZGVyOiAn2KfZhNiz2KjYqCAo2YHZiiDYrdin2YQg2KrZhSDYpdmK2YLYp9mB2YcpJyxcclxuICAgIHdpZHRoOiAnMzB2dycsXHJcbiAgICBkYXRhOiB7IG1vZGVsOiB7IC4uLm1vZGVsIH0sXHJcbiAgICAgICAgZmllbGRzOiB0aGlzLmZvcm1GaWVsZHMsXHJcbiAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNlLFxyXG4gICAgICAgIGlkRmllbGQ6IHRoaXMuaWRGaWVsZCB9LFxyXG4gIH0pO1xyXG5cclxuICByZWYub25DbG9zZS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbS5pc0FjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbS5kZWFjdGl2YXRpb25SZWFzb24gPSByZXN1bHQuZGVhY3RpdmF0aW9uUmVhc29uO1xyXG4gICAgICAvLyBPcHRpb25hbGx5OiBzYXZlIG1vZGVsIHZpYSBBUElcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5lbHNle1xyXG4gICB0aGlzLnNlbGVjdGVkSXRlbS5pc0FjdGl2ZSA9IHRydWU7XHJcbiAgIHRoaXMuc2VsZWN0ZWRJdGVtLmRlYWN0aXZhdGlvblJlYXNvbiA9IFwiXCI7XHJcbiAgIGNvbnN0IGlkID0gdGhpcy5pZFBhcnNlci5wYXJzZUlkcyh0aGlzLnNlbGVjdGVkSXRlbSwgdGhpcy5pZEZpZWxkKTtcclxuICAgIC8vIGNvbnN0IGlkID0gICh0aGlzLnNlbGVjdGVkSXRlbSBhcyBhbnkpW3RoaXMuaWRGaWVsZF0gO1xyXG4gICAgdGhpcy5zZXJ2aWNlLnVwZGF0ZShpZCwgdGhpcy5zZWxlY3RlZEl0ZW0pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgbmV4dDogKCkgPT4ge2NvbnNvbGUubG9nKCcnKX0sXHJcbiAgICAgICAgICAgZXJyb3I6IChlcnI6YW55KSA9PiB7XHJcbiAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICB9KTtcclxufVxyXG59XHJcblxyXG5cclxuXHJcblxyXG5vbkRlbGV0ZShpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAvLyBjb25zdCBpZCA9IGl0ZW1bdGhpcy5pZEZpZWxkXTtcclxuICBjb25zdCBpZCA9IHRoaXMuaWRQYXJzZXIucGFyc2VJZHMoaXRlbSwgdGhpcy5pZEZpZWxkKTtcclxuXHJcbiAgdGhpcy5zd2FsU2VydmljZS5jb25maXJtKFxyXG4gICAgJ9iq2KPZg9mK2K8g2KfZhNit2LDZgScsXHJcbiAgICAn2YfZhCDYqtix2YrYryDYrdiw2YEg2YfYsNinINin2YTYs9is2YQg2YHYudmE2KfZi9ifJyxcclxuICAgICfZhti52YXYjCDYp9it2LDZgScsXHJcbiAgICAn2KXZhNi62KfYoSdcclxuICApLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgaWYgKHJlc3VsdC5pc0NvbmZpcm1lZCkge1xyXG4gICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlKGlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZFBhZ2UoMCwgdGhpcy5yb3dzKTtcclxuICAgICAgICAgIHRoaXMuc3dhbFNlcnZpY2Uuc3VjY2Vzcygn2KrZhSDYp9mE2K3YsNmBINio2YbYrNin2K0nKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIC8vIGNvbnN0IG1zZyA9XHJcbiAgICAgICAgICAvLyAgIGVyci5lcnJvcj8udGl0bGUgfHxcclxuICAgICAgICAgIC8vICAgZXJyLm1lc3NhZ2UgfHxcclxuICAgICAgICAgIC8vICAgJ9it2K/YqyDYrti32KMg2KPYq9mG2KfYoSDYp9mE2K3Zgdi4LiDZitix2KzZiSDYp9mE2YXYrdin2YjZhNipINmF2LHYqSDYo9iu2LHZiS4nO1xyXG5cclxuICAgICAgICAgIC8vIC8vIHRoaXMuZXJyb3JNZXNzYWdlID0gbXNnO1xyXG5cclxuICAgICAgICAgIC8vIC8vIOKdjCDYsdiz2KfZhNipINiu2LfYo1xyXG4gICAgICAgICAgLy8gdGhpcy5zd2FsU2VydmljZS5lcnJvcign2YHYtNmEINin2YTYrdiw2YEnLCBtc2cpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcblxyXG5cclxuZ2V0IGNvbHVtbnMoKTogRm9ybWx5RmllbGRDb25maWdbXSB7XHJcbiAgICBjb25zdCBmbGF0dGVuRmllbGRzID0gKGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSk6IEZvcm1seUZpZWxkQ29uZmlnW10gPT4ge1xyXG4gICAgICByZXR1cm4gZmllbGRzLmZsYXRNYXAoZmllbGQgPT4ge1xyXG4gICAgICAgIC8vIENoZWNrIGZvciBuZXN0ZWQgZ3JvdXAvcGFuZWxcclxuICAgICAgICBpZiAoZmllbGQuZmllbGRHcm91cD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmxhdHRlbkZpZWxkcyhmaWVsZC5maWVsZEdyb3VwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNraXAgZmllbGRzIHdpdGggbm8gcHJvcHMgb3IgdGFibGUuaGlkZGVuID09PSB0cnVlXHJcbiAgICAgICAgaWYgKCFmaWVsZC5wcm9wcykgcmV0dXJuIFtdO1xyXG5cclxuICAgICAgICAvLyBTa2lwIGlmIGhpZGRlbiBwcm9wIG9yIGhpZGUgZXhwcmVzc2lvbiByZXR1cm5zIHRydWVcclxuICAgICAgICBjb25zdCB0YWJsZUNvbmZpZyA9IGZpZWxkLnByb3BzWyd0YWJsZSddIHx8IHt9O1xyXG4gICAgICAgIGNvbnN0IGhpZGVFeHByID0gdGFibGVDb25maWcuZXhwcmVzc2lvbnM/LmhpZGU7XHJcblxyXG4gICAgICAgIGlmICh0YWJsZUNvbmZpZy5oaWRkZW4gPT09IHRydWUgfHwgKHR5cGVvZiBoaWRlRXhwciA9PT0gJ2Z1bmN0aW9uJyAmJiBoaWRlRXhwcigpKSkge1xyXG4gICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBjb2x1bW4gdHlwZTogdGFibGUudHlwZSA+IGZpZWxkLnR5cGUgPiAnbGFiZWwtdHlwZSdcclxuICAgICAgICAvLyBjb25zdCB0YWJsZVR5cGUgPSBmaWVsZC5wcm9wc1sndGFibGUnXT8udHlwZSB8fCBmaWVsZC50eXBlIHx8ICdsYWJlbC10eXBlJztcclxuICAgICAgICBjb25zdCB0YWJsZVR5cGUgPSBmaWVsZC5wcm9wc1sndGFibGUnXT8udHlwZSB8fCAgJ2xhYmVsLXR5cGUnO1xyXG5cclxuICAgICAgICAvL1xyXG5cclxuICAgICAgICByZXR1cm4gW3tcclxuICAgICAgICAgIHR5cGU6IHRhYmxlVHlwZSxcclxuICAgICAgICAgIGtleTogZmllbGRbJ2tleSddLCAvLyBhbHdheXMgc2V0IGtleSBmb3IgdGFibGUgcmVuZGVyaW5nXHJcbiAgICAgICAgICBwcm9wczoge1xyXG4gICAgICAgICAgICAuLi5maWVsZC5wcm9wcywgICAgICAgICAgLy8gYmFzZSBwcm9wc1xyXG4gICAgICAgICAgICAuLi5maWVsZC5wcm9wc1sndGFibGUnXT8ucHJvcHMgLy8gdGFibGUtc3BlY2lmaWMgb3ZlcnJpZGVzXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXhwcmVzc2lvbnM6IGZpZWxkLnByb3BzWyd0YWJsZSddPy5leHByZXNzaW9uc1xyXG4gICAgICAgIH1dO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGZsYXR0ZW5GaWVsZHModGhpcy5mb3JtRmllbGRzKTtcclxufVxyXG5cclxuXHJcbmdldCBmaWx0ZXJzKCk6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xyXG4gIGNvbnN0IGZsYXR0ZW5Gb3JGaWx0ZXIgPSAoZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdKTogRm9ybWx5RmllbGRDb25maWdbXSA9PiB7XHJcbiAgICByZXR1cm4gZmllbGRzLmZsYXRNYXAoZmllbGQgPT4ge1xyXG4gICAgICBpZiAoZmllbGQuZmllbGRHcm91cD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZCBwYW5lbHMvZ3JvdXBzXHJcbiAgICAgICAgcmV0dXJuIGZsYXR0ZW5Gb3JGaWx0ZXIoZmllbGQuZmllbGRHcm91cCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFNraXAgZmllbGRzIHdpdGggbm8gcHJvcHMgb3IgZmlsdGVyLmhpZGRlbiA9PT0gdHJ1ZVxyXG4gICAgICBpZiAoIWZpZWxkLnByb3BzIHx8IGZpZWxkLnByb3BzWydmaWx0ZXInXT8uaGlkZGVuID09PSB0cnVlKSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBNZXJnZSBiYXNlIHByb3BzIHdpdGggZmlsdGVyIG92ZXJyaWRlc1xyXG4gICAgICBjb25zdCBtZXJnZWRQcm9wcyA9IHtcclxuICAgICAgICAuLi5maWVsZC5wcm9wcyxcclxuICAgICAgICAuLi5maWVsZC5wcm9wc1snZmlsdGVyJ10/LnByb3BzLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy8gUmVtb3ZlIGRpc2FibGVkIGFuZCByZXF1aXJlZCBwcm9wc1xyXG4gICAgICBkZWxldGUgbWVyZ2VkUHJvcHNbJ2Rpc2FibGVkJ107XHJcbiAgICAgIGRlbGV0ZSBtZXJnZWRQcm9wc1sncmVxdWlyZWQnXTtcclxuICAgICAgZGVsZXRlIG1lcmdlZFByb3BzWydsb2FkRGVmYXVsdCddO1xyXG5cclxuICAgICAgcmV0dXJuIFt7XHJcbiAgICAgICAgdHlwZTogZmllbGQudHlwZSxcclxuICAgICAgICBrZXk6IGZpZWxkLmtleSwgLy8gYWx3YXlzIHNldCBrZXkgZm9yIHRhYmxlIHJlbmRlcmluZ1xyXG4gICAgICAgIHByb3BzOiBtZXJnZWRQcm9wcyxcclxuICAgICAgICAvLyBleHByZXNzaW9uczogZmllbGQucHJvcHNbJ2ZpbHRlciddPy5leHByZXNzaW9ucyAvLyB1bmNvbW1lbnQgaWYgbmVlZGVkXHJcbiAgICAgIH1dO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIGZsYXR0ZW5Gb3JGaWx0ZXIodGhpcy5mb3JtRmllbGRzKTtcclxufVxyXG5cclxuXHJcbn1cclxuIl19","/**\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 { IdParserService, 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 // abstract idField: keyof T;\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 idParser = inject(IdParserService);\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 const commands = [id, mode];\n console.log('Commands:', commands);\n console.log('Current route:', this.route.snapshot.pathFromRoot.map(r => r.routeConfig?.path));\n const tree = this.router.createUrlTree(commands, { relativeTo: this.route });\n console.log('URL Tree:', tree.toString());\n // debugger\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.idParser.parseIds(this.selectedItem, this.idField);\n // const id = (this.selectedItem as any)[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) {\n // const id = item[this.idField];\n const id = this.idParser.parseIds(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 =\n // 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 if (field.fieldGroup?.length)\n return flattenFields(field.fieldGroup);\n if (!field.props)\n return [];\n const tableConfig = field.props['table'] ?? {};\n const hideExpr = tableConfig.expressions?.hide;\n if (tableConfig.hidden === true || (typeof hideExpr === 'function' && hideExpr()))\n return [];\n const tableType = tableConfig.type ?? 'label-type';\n const mergedProps = { ...field.props, ...(tableConfig.props ?? {}) };\n const order = tableConfig.order ??\n tableConfig.props?.order ??\n mergedProps['order'];\n return [{\n type: tableType,\n key: field.key,\n props: mergedProps,\n expressions: tableConfig.expressions,\n order\n }];\n });\n };\n return flattenFields(this.formFields)\n .sort((a, b) => (a.order ?? Number.MAX_SAFE_INTEGER) - (b.order ?? Number.MAX_SAFE_INTEGER))\n .map(({ order, ...rest }) => rest);\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jcnVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2Jhc2UtY3J1ZC9zcmMvbGliL2Jhc2UtY3J1ZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBZSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0saURBQWlELENBQUM7O0FBR2xHLE1BQU0sT0FBZ0IsUUFBUTtJQUM1QixJQUFJLEdBQXNCLEVBQUUsQ0FBQztJQUM3QixTQUFTLEdBQVUsSUFBSSxDQUFDO0lBQ3hCLE9BQU8sR0FBVSxJQUFJLENBQUM7SUFDdEIsT0FBTyxHQUFVLEtBQUssQ0FBQztJQUN2QixRQUFRLEdBQVUsRUFBRSxDQUFDO0lBQ3JCLEtBQUssR0FBYSxDQUFDLENBQUM7SUFDcEIsSUFBSSxHQUFjLEVBQUUsQ0FBQztJQUNyQixZQUFZLEdBQU0sQ0FBQyxDQUFDO0lBQ3BCLFlBQVksR0FBTSxFQUFFLENBQUM7SUFDckIsSUFBSSxDQUFVO0lBQ2QsV0FBVyxHQUFlLEVBQUUsQ0FBQztJQUM3QixjQUFjLEdBQWUsRUFBRSxDQUFDO0lBQ2hDLElBQUksR0FBRSxFQUFFLENBQUM7SUFDVCxZQUFZLEdBQUUsT0FBTyxDQUFDO0lBQ2QsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVoQyxTQUFTLENBQW9CO0lBYXZDLDZCQUE2QjtJQUM3QixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDdEIsWUFBWSxHQUFZLElBQUksQ0FBQztJQUM3QixZQUFZLEdBQVksSUFBSSxD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fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSwgSWRQYXJzZXJTZXJ2aWNlLCBTd2FsU2VydmljZSB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEFjdGlvbkRlZiwgUGFnaW5hdGVkUmVzdWx0IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IERlYWN0aXZhdGlvblJlYXNvbkZvcm1Db21wb25lbnQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZGVhY3RpdmF0aW9uLXJlYXNvbic7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDcnVkPFQsIEYgPSBhbnk+ICB7XHJcbiAgbGlzdDogVFtdICAgICAgICAgICAgICAgPSBbXTtcclxuICBwYWdpbmF0b3IgICAgICAgID0gdHJ1ZTtcclxuICBjYW5Mb2FkICAgICAgICA9IHRydWU7XHJcbiAgbG9hZGluZyAgICAgICAgPSBmYWxzZTtcclxuICBlcnJvck1zZyAgICAgICAgPSAnJztcclxuICBmaXJzdCAgICAgICAgICAgPSAwO1xyXG4gIHJvd3MgICAgICAgICAgICA9IDEwO1xyXG4gIHRvdGFsUmVjb3JkcyAgICA9IDA7XHJcbiAgc2VhcmNoR2xvYmFsICAgID0gJyc7XHJcbiAgc29ydD86IHN0cmluZztcclxuICBwYWdlRmlsdGVyczogUGFydGlhbDxGPiA9IHt9O1xyXG4gIGN1cnJlbnRGaWx0ZXJzOiBQYXJ0aWFsPEY+ID0ge307XHJcbiAgbW9kZSA9Jyc7XHJcbiAgc2Nyb2xsSGVpZ2h0ID0nNDAwcHgnO1xyXG4gIHByaXZhdGUgc3dhbFNlcnZpY2UgPSBpbmplY3QoU3dhbFNlcnZpY2UpO1xyXG5cclxuICBwcm90ZWN0ZWQgZGlhbG9nUmVmITogRHluYW1pY0RpYWxvZ1JlZjtcclxuXHJcblxyXG4gIC8vIGFic3RyYWN0IHNlcnZpY2U6IENydWRTZXJ2aWNlPFQsIEY+O1xyXG4gIGFic3RyYWN0IHNlcnZpY2U6IEJhc2VTZXJ2aWNlO1xyXG4gIGFic3RyYWN0IGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2U7XHJcbiAgLy8gYWJzdHJhY3QgZGlhbG9nQ29tcG9uZW50OiBhbnk7XHJcbiAgLy8gYWJzdHJhY3QgY29sdW1uczogQ29sdW1uRGVmPFQ+W107XHJcbiAgYWJzdHJhY3QgYWN0aW9uczogQWN0aW9uRGVmPFQ+W107XHJcblxyXG4gIC8vIGZvciBnZW5lcmljIGRpYWxvZzpcclxuICBhYnN0cmFjdCBmb3JtRmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdO1xyXG4gIGFic3RyYWN0IGlkRmllbGQ6ICBzdHJpbmcgfGFueTtcclxuICAvLyBhYnN0cmFjdCBpZEZpZWxkOiBrZXlvZiBUO1xyXG4gIGRpYWxvZ1Zpc2libGUgPSBmYWxzZTtcclxuICBkcmF3ZXJWaXNpYmxlID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRJdGVtOiBUIHwgYW55ID0gbnVsbDtcclxuICBkZWZhdWx0TW9kZWw6IFQgfCBhbnkgPSBudWxsO1xyXG4gIC8vIHNlbGVjdGVkSXRlbTogVCB8IGFueSA9IHt9O1xyXG4gIGlzVmlld01vZGUgPSBmYWxzZTtcclxuICBpc0VkaXRNb2RlID0gZmFsc2U7XHJcblxyXG5cclxuXHJcbiAgZGlzcGxheU1vZGU6XHJcbiAgfCAnZHJhd2VyJyB8ICdkaWFsb2cnIHwgJ3JvdXRlJ1xyXG4gIHwgUGFydGlhbDxSZWNvcmQ8J2FkZCcgfCAnZWRpdCcgfCAndmlldycsICdkcmF3ZXInIHwgJ2RpYWxvZycgfCAncm91dGUnPj5cclxuICA9ICdkcmF3ZXInO1xyXG5wcml2YXRlIGlkUGFyc2VyPSBpbmplY3QoSWRQYXJzZXJTZXJ2aWNlKTtcclxuICBwdWJsaWMgcm91dGVyPSBpbmplY3QoUm91dGVyKTtcclxuICBwdWJsaWMgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG5cclxubG9hZFBhZ2UocGFnZUluZGV4OiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMuY2FuTG9hZCl7XHJcblxyXG5cclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBmaWx0ZXJzOiBQYXJ0aWFsPEY+ID0ge1xyXG4gICAgICBtYXhSZXN1bHRDb3VudDpwYWdlU2l6ZSxcclxuICAgICAgc2tpcENvdW50OnBhZ2VJbmRleCxcclxuICAgICAgc29ydGluZzp0aGlzLnNvcnQsXHJcbiAgICAuLi50aGlzLmN1cnJlbnRGaWx0ZXJzLFxyXG4gICAgLi4udGhpcy5wYWdlRmlsdGVycyxcclxuICAgIC4uLih0aGlzLnNlYXJjaEdsb2JhbCA/IHsgZmlsdGVyOiB0aGlzLnNlYXJjaEdsb2JhbCB9IDoge30pLFxyXG4gICAgfTtcclxuICAgIC8vXHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0TGlzdChmaWx0ZXJzKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBQYWdpbmF0ZWRSZXN1bHQ8VD4pID0+IHtcclxuICAgICAgICAgIC8vXHJcbiAgICAgICAgICB0aGlzLmxpc3QgICAgICAgICA9IHJlcy5pdGVtcztcclxuICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gcmVzLnRvdGFsQ291bnQ7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgICAgICA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6YW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTXNnICAgICA9IGVyci5lcnJvcj8ubWVzc2FnZSB8fCBlcnIubWVzc2FnZSB8fCAn2K7Yt9ijINmB2Yog2KfZhNiq2K3ZhdmK2YQnO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nICAgICAgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcblxyXG5vblNlYXJjaChmaWx0ZXJzPzogYW55KTogdm9pZCB7XHJcbiAgLy9cclxuICBpZiAoZmlsdGVycyAmJiB0eXBlb2YgZmlsdGVycyA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoZmlsdGVycykpIHtcclxuICAgIHRoaXMucGFnZUZpbHRlcnMgPSBmaWx0ZXJzO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aGlzLnNlYXJjaEdsb2JhbCA9IGZpbHRlcnM7XHJcbiAgfVxyXG5cclxuICB0aGlzLmxvYWRQYWdlKDAsIDEwKTtcclxufVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxub25QYWdlQ2hhbmdlKGV2ZW50OiB7IGZpcnN0PzogbnVtYmVyOyByb3dzPzogbnVtYmVyOyBzb3J0Pzogc3RyaW5nOyBmaWx0ZXJzPzogUmVjb3JkPHN0cmluZywgYW55PiB9KTogdm9pZCB7XHJcbiAgLy8g2YHZgyDYp9mE2YXYqti62YrZkdix2KfYqiDZhdi5INmC2YrZhdipINin2YHYqtix2KfYttmK2Kkg2YTZgdmE2KfYqtixXHJcbiAgY29uc3Qge1xyXG4gICAgZmlyc3QgICA9IHRoaXMuZmlyc3QsXHJcbiAgICByb3dzICAgID0gdGhpcy5yb3dzLFxyXG4gICAgc29ydCAgICA9IHRoaXMuc29ydCxcclxuICAgIGZpbHRlcnMgPSB7fVxyXG4gIH0gPSBldmVudDtcclxuXHJcbiAgdGhpcy5maXJzdCA9IGZpcnN0O1xyXG4gIHRoaXMucm93cyAgPSByb3dzO1xyXG4gIHRoaXMuc29ydCAgPSBzb3J0O1xyXG5cclxuICAvLyBjb25zdCBwYWdlSW5kZXggPSBNYXRoLmZsb29yKGZpcnN0IC8gcm93cyk7XHJcbiAgY29uc3Qgc2tpcENvdW50ID0gZmlyc3Q7XHJcbiAgY29uc3QgcGFnZUluZGV4ID0gc2tpcENvdW50O1xyXG5cclxuICAvLyDYp9mE2YjYtdmI2YQg2YTZhNmB2YTYqtixINin2YTYudin2YUg2LnYqNixINin2YTYtdmK2LrYqSDYp9mE2YXYsdio2LnYqVxyXG4gIGNvbnN0IGdsb2JhbFZhbHVlID0gZmlsdGVyc1snZ2xvYmFsJ107XHJcbiAgdGhpcy5zZWFyY2hHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsVmFsdWUgPT09ICdzdHJpbmcnID8gZ2xvYmFsVmFsdWUgOiAnJztcclxuXHJcbiAgLy8g2YHZhNiq2LHYqSDYrtin2LXYqSDYqNit2YLZhCDZiNin2K3Yr1xyXG4gIC8vIGNvbnN0IGZpZWxkRmlsdGVycyA9IHsgLi4uZmlsdGVycyB9O1xyXG4gIC8vIGRlbGV0ZSBmaWVsZEZpbHRlcnNbJ2dsb2JhbCddO1xyXG4gIC8vIHRoaXMuY3VycmVudEZpbHRlcnMgPSBmaWVsZEZpbHRlcnMgYXMgUGFydGlhbDxGPjtcclxuXHJcblxyXG5cclxuICB0aGlzLmxvYWRQYWdlKHBhZ2VJbmRleCwgcm93cyk7XHJcbn1cclxuXHJcblxyXG5wcm90ZWN0ZWQgb3BlbkVkaXRvcihpdGVtOiBUIHwgbnVsbCwgbW9kZTogJ2FkZCcgfCAnZWRpdCcgfCAndmlldycpOiB2b2lkIHtcclxuICB0aGlzLm1vZGUgPSBtb2RlO1xyXG4gIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbSA/PyB0aGlzLmRlZmF1bHRNb2RlbCA/PyB7fTtcclxuICB0aGlzLmlzRWRpdE1vZGUgPSBtb2RlID09PSAnZWRpdCc7XHJcbiAgdGhpcy5pc1ZpZXdNb2RlID0gbW9kZSA9PT0gJ3ZpZXcnO1xyXG5cclxuICAvLyByZXNvbHZlIGRpc3BsYXlNb2RlIChzdHJpbmcgb3IgbWFwKVxyXG4gIGNvbnN0IG1vZGVDb25maWcgPSB0eXBlb2YgdGhpcy5kaXNwbGF5TW9kZSA9PT0gJ3N0cmluZydcclxuICAgID8gdGhpcy5kaXNwbGF5TW9kZVxyXG4gICAgOiB0aGlzLmRpc3BsYXlNb2RlW21vZGVdID8/ICdkcmF3ZXInO1xyXG5cclxuICBzd2l0Y2ggKG1vZGVDb25maWcpIHtcclxuICAgIGNhc2UgJ2RyYXdlcic6XHJcbiAgICAgIHRoaXMuZHJhd2VyVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgIGJyZWFrO1xyXG5cclxuICAgIGNhc2UgJ2RpYWxvZyc6XHJcbiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgIGJyZWFrO1xyXG5cclxuICAgIGNhc2UgJ3JvdXRlJzpcclxuICAgICAge1xyXG5cclxuXHJcbiAgICAgICAgY29uc3QgaWQgPSBpdGVtID8gKGl0ZW0gYXMgYW55KVt0aGlzLmlkRmllbGRdIDogJ25ldyc7XHJcblxyXG4gICAgICBpZihtb2RlID09PSAnYWRkJyl7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW21vZGVdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICBjb25zdCBjb21tYW5kcyA9IFtpZCwgbW9kZV07XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0NvbW1hbmRzOicsIGNvbW1hbmRzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnQ3VycmVudCByb3V0ZTonLCB0aGlzLnJvdXRlLnNuYXBzaG90LnBhdGhGcm9tUm9vdC5tYXAociA9PiByLnJvdXRlQ29uZmlnPy5wYXRoKSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRyZWUgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKGNvbW1hbmRzLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1VSTCBUcmVlOicsIHRyZWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgLy8gZGVidWdnZXJcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaWQsIG1vZGVdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XHJcbiAgICAgIH1cclxuICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICB9XHJcbn1cclxuXHJcbnZpc2libGVDaGFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcclxuICBjb25zdCBtb2RlQ29uZmlnID0gdHlwZW9mIHRoaXMuZGlzcGxheU1vZGUgPT09ICdzdHJpbmcnXHJcbiAgICA/IHRoaXMuZGlzcGxheU1vZGVcclxuICAgIDogdGhpcy5kaXNwbGF5TW9kZVt0aGlzLm1vZGUgYXMgJ2FkZCcgfCAnZWRpdCcgfCAndmlldyddID8/ICdkcmF3ZXInO1xyXG5cclxuICBpZiAobW9kZUNvbmZpZyA9PT0gJ2RpYWxvZycpIHtcclxuICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHZhbHVlO1xyXG4gIH0gZWxzZSBpZiAobW9kZUNvbmZpZyA9PT0gJ2RyYXdlcicpIHtcclxuICAgIHRoaXMuZHJhd2VyVmlzaWJsZSA9IHZhbHVlO1xyXG4gIH0gZWxzZSB7XHJcbiAgICAvLyByb3V0ZSBtb2RlIGRvZXMgbm90IHVzZSBkcmF3ZXIvZGlhbG9nXHJcbiAgfVxyXG59XHJcblxyXG5cclxuLy8gb25UYWJsZUFjdGlvbihldmVudDogeyBuYW1lOiBzdHJpbmc7IHJvdzogVCB8IG51bGwgfSk6IHZvaWQge1xyXG4vLyAgICAgc3dpdGNoIChldmVudC5uYW1lKSB7XHJcbi8vICAgICAgIGNhc2UgJ2FkZCc6ICAgIHRoaXMub3BlbkRyYXdlcihudWxsLGV2ZW50Lm5hbWUpOyAgICAgICAgICAgICBicmVhaztcclxuLy8gICAgICAgY2FzZSAndmlldyc6ICAgdGhpcy5vcGVuRHJhd2VyKGV2ZW50LnJvdyEsZXZlbnQubmFtZSk7ICBicmVhaztcclxuLy8gICAgICAgY2FzZSAnZWRpdCc6ICAgdGhpcy5vcGVuRHJhd2VyKGV2ZW50LnJvdyEsZXZlbnQubmFtZSk7ICBicmVhaztcclxuLy8gICAgICAgY2FzZSAnZGVsZXRlJzogdGhpcy5vbkRlbGV0ZShldmVudC5yb3chKTticmVhaztcclxuLy8gICAgICAgY2FzZSAnc3RhdGUnOiB0aGlzLm9wZW5EZWFjdGl2YXRpb25SZWFzb24oZXZlbnQucm93ISk7YnJlYWs7XHJcbi8vICAgICB9XHJcbi8vIH1cclxuXHJcbm9uVGFibGVBY3Rpb24oZXZlbnQ6IHsgbmFtZTogc3RyaW5nOyByb3c6IFQgfCBudWxsIH0pOiB2b2lkIHtcclxuICBzd2l0Y2ggKGV2ZW50Lm5hbWUpIHtcclxuICAgIGNhc2UgJ2FkZCc6XHJcbiAgICBjYXNlICdlZGl0JzpcclxuICAgIGNhc2UgJ3ZpZXcnOlxyXG4gICAgICB0aGlzLm9wZW5FZGl0b3IoZXZlbnQucm93LCBldmVudC5uYW1lKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdkZWxldGUnOlxyXG4gICAgICB0aGlzLm9uRGVsZXRlKGV2ZW50LnJvdyEpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3N0YXRlJzpcclxuICAgICAgdGhpcy5vcGVuRGVhY3RpdmF0aW9uUmVhc29uKGV2ZW50LnJvdyEpO1xyXG4gICAgICBicmVhaztcclxuICB9XHJcbn1cclxuXHJcblxyXG5wcm90ZWN0ZWQgb3BlbkRyYXdlcihpdGVtOiBUIHwgbnVsbCxtb2RlOnN0cmluZyk6IHZvaWQge1xyXG5cclxuICAgICAgdGhpcy5tb2RlID0gbW9kZTtcclxuXHJcbiAgICAgIC8vIHRoaXMuZHJhd2VyVmlzaWJsZSA9ICF0aGlzLmRyYXdlclZpc2libGU7XHJcblxyXG5cclxuICAgICAgaWYgKGl0ZW0gPT0gbnVsbCkge1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuZGVmYXVsdE1vZGVsIHx8IHt9O1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYobW9kZSA9PSAnZWRpdCcpe1xyXG4gICAgICAgIHRoaXMuZHJhd2VyVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc0VkaXRNb2RlID0gdHJ1ZSA7XHJcbiAgICAgICAgdGhpcy5pc1ZpZXdNb2RlID0gZmFsc2UgO1xyXG4gICAgICAgIC8vIHRoaXMuaXNFZGl0TW9kZSA9IGl0ZW0gIT1udWxsIDtcclxuICAgICAgfVxyXG4gICAgICBpZihtb2RlID09ICdhZGQnKXtcclxuICAgICAgICAgdGhpcy5kcmF3ZXJWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzVmlld01vZGUgPSBmYWxzZSA7XHJcbiAgICAgICAgdGhpcy5pc0VkaXRNb2RlID0gZmFsc2UgO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKG1vZGUgPT0gJ3ZpZXcnKXtcclxuICAgICAgICAvLyB0aGlzLmRyYXdlclZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuaXNWaWV3TW9kZSA9IHRydWUgO1xyXG4gICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IGZhbHNlIDtcclxuICAgICAgfVxyXG59XHJcblxyXG5cclxub3BlbkRlYWN0aXZhdGlvblJlYXNvbihtb2RlbDogYW55KSB7XHJcblxyXG4gIHRoaXMuc2VsZWN0ZWRJdGVtID0gbW9kZWw7XHJcbiAgaWYodGhpcy5zZWxlY3RlZEl0ZW0uaXNBY3RpdmUgPT0gdHJ1ZSl7XHJcblxyXG5cclxuICBjb25zdCByZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihEZWFjdGl2YXRpb25SZWFzb25Gb3JtQ29tcG9uZW50LCB7XHJcbiAgICBoZWFkZXI6ICfYp9mE2LPYqNioICjZgdmKINit2KfZhCDYqtmFINil2YrZgtin2YHZhyknLFxyXG4gICAgd2lkdGg6ICczMHZ3JyxcclxuICAgIGRhdGE6IHsgbW9kZWw6IHsgLi4ubW9kZWwgfSxcclxuICAgICAgICBmaWVsZHM6IHRoaXMuZm9ybUZpZWxkcyxcclxuICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY2UsXHJcbiAgICAgICAgaWRGaWVsZDogdGhpcy5pZEZpZWxkIH0sXHJcbiAgfSk7XHJcblxyXG4gIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmlzQWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmRlYWN0aXZhdGlvblJlYXNvbiA9IHJlc3VsdC5kZWFjdGl2YXRpb25SZWFzb247XHJcbiAgICAgIC8vIE9wdGlvbmFsbHk6IHNhdmUgbW9kZWwgdmlhIEFQSVxyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcbmVsc2V7XHJcbiAgIHRoaXMuc2VsZWN0ZWRJdGVtLmlzQWN0aXZlID0gdHJ1ZTtcclxuICAgdGhpcy5zZWxlY3RlZEl0ZW0uZGVhY3RpdmF0aW9uUmVhc29uID0gXCJcIjtcclxuICAgY29uc3QgaWQgPSB0aGlzLmlkUGFyc2VyLnBhcnNlSWRzKHRoaXMuc2VsZWN0ZWRJdGVtLCB0aGlzLmlkRmllbGQpO1xyXG4gICAgLy8gY29uc3QgaWQgPSAgKHRoaXMuc2VsZWN0ZWRJdGVtIGFzIGFueSlbdGhpcy5pZEZpZWxkXSA7XHJcbiAgICB0aGlzLnNlcnZpY2UudXBkYXRlKGlkLCB0aGlzLnNlbGVjdGVkSXRlbSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICBuZXh0OiAoKSA9PiB7Y29uc29sZS5sb2coJycpfSxcclxuICAgICAgICAgICBlcnJvcjogKGVycjphbnkpID0+IHtcclxuICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICB9XHJcbiAgICAgICAgIH0pO1xyXG59XHJcbn1cclxuXHJcblxyXG5cclxuXHJcbm9uRGVsZXRlKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gIC8vIGNvbnN0IGlkID0gaXRlbVt0aGlzLmlkRmllbGRdO1xyXG4gIGNvbnN0IGlkID0gdGhpcy5pZFBhcnNlci5wYXJzZUlkcyhpdGVtLCB0aGlzLmlkRmllbGQpO1xyXG5cclxuICB0aGlzLnN3YWxTZXJ2aWNlLmNvbmZpcm0oXHJcbiAgICAn2KrYo9mD2YrYryDYp9mE2K3YsNmBJyxcclxuICAgICfZh9mEINiq2LHZitivINit2LDZgSDZh9iw2Kcg2KfZhNiz2KzZhCDZgdi52YTYp9mL2J8nLFxyXG4gICAgJ9mG2LnZhdiMINin2K3YsNmBJyxcclxuICAgICfYpdmE2LrYp9ihJ1xyXG4gICkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICBpZiAocmVzdWx0LmlzQ29uZmlybWVkKSB7XHJcbiAgICAgIHRoaXMuc2VydmljZS5kZWxldGUoaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkUGFnZSgwLCB0aGlzLnJvd3MpO1xyXG4gICAgICAgICAgdGhpcy5zd2FsU2VydmljZS5zdWNjZXNzKCfYqtmFINin2YTYrdiw2YEg2KjZhtis2KfYrScpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgLy8gY29uc3QgbXNnID1cclxuICAgICAgICAgIC8vICAgZXJyLmVycm9yPy50aXRsZSB8fFxyXG4gICAgICAgICAgLy8gICBlcnIubWVzc2FnZSB8fFxyXG4gICAgICAgICAgLy8gICAn2K3Yr9irINiu2LfYoyDYo9ir2YbYp9ihINin2YTYrdmB2LguINmK2LHYrNmJINin2YTZhdit2KfZiNmE2Kkg2YXYsdipINij2K7YsdmJLic7XHJcblxyXG4gICAgICAgICAgLy8gLy8gdGhpcy5lcnJvck1lc3NhZ2UgPSBtc2c7XHJcblxyXG4gICAgICAgICAgLy8gLy8g4p2MINix2LPYp9mE2Kkg2K7Yt9ijXHJcbiAgICAgICAgICAvLyB0aGlzLnN3YWxTZXJ2aWNlLmVycm9yKCfZgdi02YQg2KfZhNit2LDZgScsIG1zZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuXHJcblxyXG5nZXQgY29sdW1ucygpOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcclxuICB0eXBlIENvbCA9IEZvcm1seUZpZWxkQ29uZmlnICYgeyBvcmRlcj86IG51bWJlciB9O1xyXG5cclxuICBjb25zdCBmbGF0dGVuRmllbGRzID0gKGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSk6IENvbFtdID0+IHtcclxuICAgIHJldHVybiBmaWVsZHMuZmxhdE1hcChmaWVsZCA9PiB7XHJcbiAgICAgIGlmIChmaWVsZC5maWVsZEdyb3VwPy5sZW5ndGgpIHJldHVybiBmbGF0dGVuRmllbGRzKGZpZWxkLmZpZWxkR3JvdXApO1xyXG4gICAgICBpZiAoIWZpZWxkLnByb3BzKSByZXR1cm4gW107XHJcblxyXG4gICAgICBjb25zdCB0YWJsZUNvbmZpZyA9IGZpZWxkLnByb3BzWyd0YWJsZSddID8/IHt9O1xyXG4gICAgICBjb25zdCBoaWRlRXhwciA9IHRhYmxlQ29uZmlnLmV4cHJlc3Npb25zPy5oaWRlO1xyXG4gICAgICBpZiAodGFibGVDb25maWcuaGlkZGVuID09PSB0cnVlIHx8ICh0eXBlb2YgaGlkZUV4cHIgPT09ICdmdW5jdGlvbicgJiYgaGlkZUV4cHIoKSkpIHJldHVybiBbXTtcclxuXHJcbiAgICAgIGNvbnN0IHRhYmxlVHlwZSA9IHRhYmxlQ29uZmlnLnR5cGUgPz8gJ2xhYmVsLXR5cGUnO1xyXG4gICAgICBjb25zdCBtZXJnZWRQcm9wcyA9IHsgLi4uZmllbGQucHJvcHMsIC4uLih0YWJsZUNvbmZpZy5wcm9wcyA/PyB7fSkgfTtcclxuXHJcbiAgICAgIGNvbnN0IG9yZGVyOiBudW1iZXIgfCB1bmRlZmluZWQgPVxyXG4gICAgICAgICh0YWJsZUNvbmZpZy5vcmRlciBhcyBudW1iZXIgfCB1bmRlZmluZWQpID8/XHJcbiAgICAgICAgKHRhYmxlQ29uZmlnLnByb3BzPy5vcmRlciBhcyBudW1iZXIgfCB1bmRlZmluZWQpID8/XHJcbiAgICAgICAgKG1lcmdlZFByb3BzWydvcmRlciddIGFzIG51bWJlciB8IHVuZGVmaW5lZCk7XHJcblxyXG4gICAgICByZXR1cm4gW3tcclxuICAgICAgICB0eXBlOiB0YWJsZVR5cGUsXHJcbiAgICAgICAga2V5OiBmaWVsZC5rZXksXHJcbiAgICAgICAgcHJvcHM6IG1lcmdlZFByb3BzLFxyXG4gICAgICAgIGV4cHJlc3Npb25zOiB0YWJsZUNvbmZpZy5leHByZXNzaW9ucyxcclxuICAgICAgICBvcmRlclxyXG4gICAgICB9XTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBmbGF0dGVuRmllbGRzKHRoaXMuZm9ybUZpZWxkcylcclxuICAgIC5zb3J0KChhLCBiKSA9PiAoYS5vcmRlciA/PyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikgLSAoYi5vcmRlciA/PyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikpXHJcbiAgICAubWFwKCh7IG9yZGVyLCAuLi5yZXN0IH0pID0+IHJlc3QgYXMgRm9ybWx5RmllbGRDb25maWcpO1xyXG59XHJcblxyXG5cclxuXHJcblxyXG5nZXQgZmlsdGVycygpOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcclxuICBjb25zdCBmbGF0dGVuRm9yRmlsdGVyID0gKGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSk6IEZvcm1seUZpZWxkQ29uZmlnW10gPT4ge1xyXG4gICAgcmV0dXJuIGZpZWxkcy5mbGF0TWFwKGZpZWxkID0+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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"}
|
|
@@ -303,6 +303,20 @@ class GenericSelectorTypeComponent extends FieldType {
|
|
|
303
303
|
}
|
|
304
304
|
return fixedFilters || {};
|
|
305
305
|
}
|
|
306
|
+
getFilters() {
|
|
307
|
+
let filters = this.to['filters'];
|
|
308
|
+
if (typeof filters === 'function') {
|
|
309
|
+
filters = filters(this.model);
|
|
310
|
+
}
|
|
311
|
+
if (!filters)
|
|
312
|
+
return [];
|
|
313
|
+
// If it's an object, return its keys
|
|
314
|
+
if (!Array.isArray(filters)) {
|
|
315
|
+
return Object.keys(filters);
|
|
316
|
+
}
|
|
317
|
+
// Already an array
|
|
318
|
+
return filters;
|
|
319
|
+
}
|
|
306
320
|
onArrowDown(event) {
|
|
307
321
|
event.preventDefault();
|
|
308
322
|
// this.autoComp.show();
|
|
@@ -335,6 +349,7 @@ class GenericSelectorTypeComponent extends FieldType {
|
|
|
335
349
|
const q = event.query?.toString().toLowerCase() || '';
|
|
336
350
|
const lf = this.optionLabel;
|
|
337
351
|
const fixedFilters = this.getFixedFilters();
|
|
352
|
+
const filters = this.getFilters();
|
|
338
353
|
if (this.to['offline']) {
|
|
339
354
|
this.options_ = this.to['offlineDataFn']
|
|
340
355
|
? this.to['offlineDataFn'](q)
|
|
@@ -345,9 +360,14 @@ class GenericSelectorTypeComponent extends FieldType {
|
|
|
345
360
|
this.loading = true;
|
|
346
361
|
this.options_ = [];
|
|
347
362
|
const searchParams = {
|
|
348
|
-
|
|
349
|
-
...fixedFilters,
|
|
363
|
+
...fixedFilters
|
|
350
364
|
};
|
|
365
|
+
// Add query to main label
|
|
366
|
+
searchParams[lf] = q;
|
|
367
|
+
// Set all filter keys to the search query
|
|
368
|
+
filters.forEach(key => {
|
|
369
|
+
searchParams[key] = q;
|
|
370
|
+
});
|
|
351
371
|
// ✅ استخدام listEndpoint إذا كان موجودًا، وإلا العودة إلى الافتراضي
|
|
352
372
|
let listEndpoint = this.props.listEndpoint;
|
|
353
373
|
if (typeof listEndpoint === 'function') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elite.framework-ng.ui.core-generic-selector.mjs","sources":["../tmp-esm2022/generic-selector/lib/generic-selector-module.js","../tmp-esm2022/generic-selector/lib/generic-selector.component.js","../tmp-esm2022/generic-selector/elite.framework-ng.ui.core-generic-selector.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class GenericSelectorModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSelectorModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSelectorModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSelectorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1zZWxlY3Rvci1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1zZWxlY3Rvci9zcmMvbGliL2dlbmVyaWMtc2VsZWN0b3ItbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8scUJBQXFCO3VHQUFyQixxQkFBcUI7d0dBQXJCLHFCQUFxQixZQUZ0QixZQUFZO3dHQUVYLHFCQUFxQixZQUZ0QixZQUFZOzsyRkFFWCxxQkFBcUI7a0JBSGpDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY1NlbGVjdG9yTW9kdWxlIHt9XG4iXX0=","import { ChangeDetectorRef, Component, Injector, ViewChild, inject } from '@angular/core';\nimport { FieldType, FormlyAttributes } from '@ngx-formly/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { forkJoin } from 'rxjs';\nimport { finalize, map } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AutoCompleteModule, AutoComplete } from 'primeng/autocomplete';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { ButtonModule } from 'primeng/button';\nimport { BaseService } from '@elite.framework/ng.core/services';\nimport { GenericDialogComponent } from '@elite.framework/ng.ui.core/generic-dialog';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@elite.framework/ng.core/services\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"primeng/autocomplete\";\nimport * as i4 from \"primeng/api\";\nimport * as i5 from \"primeng/inputgroup\";\nimport * as i6 from \"primeng/inputgroupaddon\";\nimport * as i7 from \"primeng/button\";\nimport * as i8 from \"@ngx-translate/core\";\nexport class GenericSelectorTypeComponent extends FieldType {\n svc;\n injector;\n cdr;\n autoComp;\n dialog;\n options_ = [];\n selectedItem;\n loading = false;\n _offlineList = [];\n translateService = inject(TranslateService);\n api;\n valueChangeSubscription; // Add a subscription to manage the observable\n get optionLabel() {\n if (this.to.useMultiLang == true) {\n if (this.translateService.currentLang == 'en') {\n return this.to?.labelFieldEn || 'name';\n }\n return this.to?.labelField || 'name';\n }\n return this.to?.labelField || 'name';\n }\n isNullOrEmpty(val) {\n return val === null || val === undefined || val === '';\n }\n getPrimaryLabel(item) {\n const fields = [\n this.optionLabel, // resolved field name from getter\n this.to.labelField || 'name',\n this.to.labelFieldEn || 'name'\n ];\n for (const f of fields) {\n const v = item[f];\n if (!this.isNullOrEmpty(v)) {\n return v;\n }\n }\n return '';\n }\n constructor(svc, injector, cdr) {\n super();\n this.svc = svc;\n this.injector = injector;\n this.cdr = cdr;\n }\n ngOnInit() {\n this.api = this.svc;\n const to = this.props;\n this.api.apiName = to['serviceName'];\n if (to['offline']) {\n if (to['offlineDataFn']) {\n this._offlineList = to['offlineDataFn']();\n this.initOfflineSelection();\n }\n else if (to['offlineItems$']) {\n to['offlineItems$'].subscribe((list) => {\n this._offlineList = list;\n this.initOfflineSelection();\n });\n }\n else {\n this._offlineList = to['offlineItems'] || [];\n this.initOfflineSelection();\n }\n }\n else {\n if (this.props.loadSaved && !this.props.multiple && this.props.loadSavedField && this.props.valueField) {\n const vf = this.to['valueField'] || 'id';\n const lf = this.optionLabel;\n this.selectedItem =\n {\n [vf]: this.formControl.value,\n [lf]: this.model[this.props.loadSavedField],\n };\n if (this.props.change) {\n this.props.change(this.field, { item: this.selectedItem });\n this.cdr.detectChanges();\n }\n }\n else {\n this.initOnlineSelection();\n }\n }\n // Subscribe to formControl value changes\n this.valueChangeSubscription = this.formControl.valueChanges\n .subscribe(() => {\n // This tap operator is a good place to run side effects\n // like calling your change handler after a value changes.\n // this.selectedItem = this.formControl.value;\n if (this.props.change) {\n if (to['offline']) {\n if (to['offlineDataFn']) {\n this._offlineList = to['offlineDataFn']();\n this.initOfflineSelection(false);\n }\n else if (to['offlineItems$']) {\n to['offlineItems$'].subscribe((list) => {\n this._offlineList = list;\n this.initOfflineSelection(false);\n });\n }\n else {\n this._offlineList = to['offlineItems'] || [];\n this.initOfflineSelection(false);\n }\n }\n else {\n this.initOnlineSelection(false);\n }\n }\n });\n }\n // Remember to unsubscribe to prevent memory leaks!\n ngOnDestroy() {\n if (this.valueChangeSubscription) {\n this.valueChangeSubscription.unsubscribe();\n }\n }\n loadDefaultValue() {\n this.loading = true;\n const vf = this.to['valueField'] || 'id';\n const fixedFilters = this.getFixedFilters();\n const lf = this.to['loadDefaultField'] || 'isDefault';\n const lfValue = this.to['loadDefaultValue'] || true;\n const searchParams = {\n [lf]: lfValue,\n ...fixedFilters,\n };\n this.api.getList(searchParams)\n .subscribe({\n next: (res) => {\n // Assuming the API returns a list and you want to select the first one\n if (res && res.items && res.items.length > 0) {\n if (this.to['multiple']) {\n this.formControl.setValue(res.items.map((c) => c[vf]));\n }\n else {\n const defaultValue = res.items[0];\n this.formControl.setValue(defaultValue?.[vf]);\n }\n }\n this.loading = false;\n // this.initOnlineSelection(); // Proceed with online selection after setting the value\n },\n error: (err) => {\n console.error(\"Failed to load default value from API:\", err);\n this.loading = false;\n // this.initOnlineSelection(); // Fallback to local selection if API fails\n }\n });\n }\n // New method to handle loading the default value from the API\n afterSave(event) {\n this.onSelectionChange(event.record);\n if (this.props.afterSave) {\n this.props.afterSave(this.field, { item: event.response });\n this.cdr.detectChanges();\n }\n }\n onSelect(event) {\n if (this.props.onSelect) {\n this.props.onSelect(this.field, { item: event.value });\n this.cdr.detectChanges();\n }\n }\n onSelectionChange(val) {\n this.selectedItem = val;\n const vf = this.to['valueField'] || 'id';\n if (this.to['multiple']) {\n this.formControl.setValue(Array.isArray(val) ? val.map((c) => c[vf]) : []);\n }\n else {\n this.formControl.setValue(val?.[vf] ?? null);\n }\n }\n initOfflineSelection(withSetValue = true) {\n const val = this.formControl.value;\n const vf = this.to['valueField'] || 'id';\n if (val == null)\n return;\n if (this.to['multiple'] && Array.isArray(val)) {\n this.selectedItem = this._offlineList.filter(item => val.includes(item[vf]));\n }\n else {\n this.selectedItem = this._offlineList.find(item => item[vf] === val);\n }\n if (withSetValue == true) {\n this.formControl.setValue(this.to['multiple']\n ? this.selectedItem.map((c) => c[vf])\n : this.selectedItem?.[vf]);\n }\n else {\n if (this.props.change) {\n this.props.change(this.field, { item: this.selectedItem });\n this.cdr.detectChanges();\n }\n }\n }\n initOnlineSelection(withSetValue = true) {\n const val = this.formControl.value;\n const vf = this.to['valueField'] || 'id';\n if (val == null || (Array.isArray(val) && val.length === 0)) {\n this.selectedItem = this.to['multiple'] ? [] : null;\n if (this.props['loadDefault'] === true) {\n this.loadDefaultValue();\n }\n return;\n }\n if (this.to['multiple'] && Array.isArray(val) && val.length) {\n this.loading = true;\n const fixedFilters = this.getFixedFilters();\n // 🔑 one getList call per id, but include fixedFilters in each\n const calls = val.map((id) => this.api.getList({ ...fixedFilters, [vf]: id }).pipe(map((res) => (res?.items?.length ? res.items[0] : null))));\n forkJoin(calls)\n .pipe(finalize(() => (this.loading = false)))\n .subscribe({\n next: (items) => {\n this.selectedItem = items.filter(i => i != null);\n if (withSetValue) {\n this.formControl.setValue(this.selectedItem.map((c) => c[vf]));\n }\n else if (this.props.change) {\n this.props.change(this.field, { item: this.selectedItem });\n }\n this.cdr.detectChanges();\n },\n error: (err) => {\n console.error('Failed to load multiple selections:', err);\n this.selectedItem = [];\n this.loading = false;\n },\n });\n }\n else {\n this.loading = true;\n const fixedFilters = this.getFixedFilters();\n const searchParams = { ...fixedFilters, [vf]: val };\n this.api\n .getList(searchParams)\n .pipe(finalize(() => (this.loading = false)))\n .subscribe({\n next: (res) => {\n const item = res?.items?.[0] || null;\n this.selectedItem = item;\n if (withSetValue) {\n this.formControl.setValue(item?.[vf]);\n }\n else if (this.props.change) {\n this.props.change(this.field, { item: this.selectedItem });\n }\n this.cdr.detectChanges();\n },\n error: (err) => {\n console.error('Failed to load selection:', err);\n this.selectedItem = null;\n this.loading = false;\n },\n });\n }\n }\n getFixedFilters() {\n const fixedFilters = this.to['fixedFilters'];\n if (typeof fixedFilters === 'function') {\n // Call with current model (and optionally field)\n return fixedFilters(this.model);\n }\n return fixedFilters || {};\n }\n onArrowDown(event) {\n event.preventDefault();\n // this.autoComp.show();\n this.onDropdownButtonClick();\n }\n onEscape(event) {\n this.autoComp.hide();\n }\n onAddNewClick() {\n // your logic for adding a new item\n // e.g. open dialog or emit event\n console.log('Add new item clicked');\n this.dialog.openForm(\"create\");\n }\n onDropdownButtonClick() {\n this.search({ query: '' }); // trigger your own search\n setTimeout(() => this.autoComp.show(), 0); // force dropdown to open\n }\n // Called when dropdown button clicked\n onDropdownClick(event) {\n // 🚫 stop the default dropdown behavior\n event.originalEvent.preventDefault();\n event.originalEvent.stopPropagation();\n console.log('Dropdown clicked!', event);\n // ✅ your custom code here\n // e.g., force trigger search for empty query\n this.search({ query: '' });\n }\n search(event) {\n const q = event.query?.toString().toLowerCase() || '';\n const lf = this.optionLabel;\n const fixedFilters = this.getFixedFilters();\n if (this.to['offline']) {\n this.options_ = this.to['offlineDataFn']\n ? this.to['offlineDataFn'](q)\n : this._offlineList.filter(item => item[lf]?.toString().toLowerCase().includes(q));\n setTimeout(() => this.autoComp?.show(), 0);\n }\n else {\n this.loading = true;\n this.options_ = [];\n const searchParams = {\n [lf]: q,\n ...fixedFilters,\n };\n // ✅ استخدام listEndpoint إذا كان موجودًا، وإلا العودة إلى الافتراضي\n let listEndpoint = this.props.listEndpoint;\n if (typeof listEndpoint === 'function') {\n listEndpoint = listEndpoint(this.model);\n }\n this.api.getList(searchParams, listEndpoint)\n .pipe(finalize(() => (this.loading = false)))\n .subscribe({\n next: (res) => {\n this.options_ = res.items ?? res ?? [];\n setTimeout(() => this.autoComp?.show(), 0);\n },\n error: () => {\n this.options_ = [];\n },\n });\n }\n }\n openCrud(mode) {\n const payload = mode === 'add' ? null : this.selectedItem;\n // Example integration:\n // const ref = this.dialog.open(CrudComponent, {\n // data: {\n // serviceName: this.to.serviceName,\n // mode,\n // record: payload\n // }\n // });\n // ref.onClose.subscribe((updated: any) => {\n // if (!this.to.multiple && updated?.[this.to.valueField]) {\n // this.api.get(updated[this.to.valueField])\n // .subscribe(item => {\n // this.selectedItem = item;\n // this.formControl.setValue(item?.[this.to.valueField]);\n // });\n // }\n // });\n }\n getEmptyMessage() {\n if (this.loading) {\n return 'LOADING_DATA_MESSAGE'; // مفتاح ترجمة لـ \"جاري تحميل البيانات...\"\n }\n else if (this.options_.length === 0) {\n return 'NO_RESULTS_FOUND'; // مفتاح ترجمة لـ \"لا توجد نتائج مطابقة.\"\n }\n return ''; // لا تُعرض رسالة إذا كانت هناك نتائج\n }\n isItemSelected(item) {\n const vf = this.to['valueField'] || 'id';\n return Array.isArray(this.selectedItem) &&\n this.selectedItem.some((sel) => sel[vf] === item[vf]);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSelectorTypeComponent, deps: [{ token: i1.BaseService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: GenericSelectorTypeComponent, isStandalone: true, selector: \"formly-generic-selector\", providers: [DialogService, BaseService], viewQueries: [{ propertyName: \"autoComp\", first: true, predicate: [\"autoComp\"], descendants: true }, { propertyName: \"dialog\", first: true, predicate: [\"dialog\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\r\n <!-- [ngStyle]=\"{'display': props.display ? 'block': 'none'}\" -->\r\n <p-inputGroup class=\"w-full\">\r\n <p-autoComplete\r\n #autoComp\r\n [ngModel]=\"selectedItem\"\r\n (ngModelChange)=\"onSelectionChange($event)\"\r\n [formlyAttributes]=\"field\"\r\n [suggestions]=\"options_\"\r\n (completeMethod)=\"search($event)\"\r\n [multiple]=\"to['multiple']\"\r\n [optionLabel]=\"optionLabel\"\r\n [dropdown]=\"false\"\r\n [forceSelection]=\"true\"\r\n [placeholder]=\"(props['placeholder'] ?? '') | translate\"\r\n [disabled]=\"!!props.disabled\"\r\n dropdownMode=\"current\"\r\n appendTo=\"body\"\r\n class=\"w-full rounded-none\"\r\n [showEmptyMessage]=\"true\"\r\n (onSelect)=\"onSelect($event)\"\r\n emptyMessage=\"{{ getEmptyMessage() | translate }}\"\r\n [showTransitionOptions]=\"'0ms'\"\r\n [showClear]=\"false\"\r\n\r\n (keydown.arrowdown)=\"onArrowDown($event)\"\r\n (keydown.escape)=\"onEscape($event)\"\r\n >\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"flex flex-col\">\r\n <span>{{ getPrimaryLabel(item) }}</span>\r\n\r\n </div>\r\n </ng-template>\r\n </p-autoComplete>\r\n\r\n <p-inputGroupAddon>\r\n <p-button\r\n tabindex=\"-1\"\r\n [disabled]=\"!!props.disabled || loading\"\r\n [icon]=\"loading ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\"\r\n (click)=\"onDropdownButtonClick()\"\r\n severity=\"secondary\" />\r\n </p-inputGroupAddon>\r\n <!-- Add new button -->\r\n @if (props.canAdd && props.formFields) {\r\n <p-inputGroupAddon>\r\n <p-button\r\n tabindex=\"-1\"\r\n [disabled]=\"!!props.disabled\"\r\n icon=\"pi pi-plus\"\r\n (click)=\"onAddNewClick()\"\r\n severity=\"primary\" />\r\n </p-inputGroupAddon>\r\n }\r\n</p-inputGroup>\r\n\r\n<!-- [model]=\"model\" -->\r\n <app-generic-dialog\r\n #dialog\r\n [formFields]=\"props.formFields ?? []\"\r\n [apiName]=\"props.serviceName\"\r\n [idField]=\"props.idField ??'id'\"\r\n [displayMode]=\"props.dialogDisplayMode ?? 'dialog'\"\r\n (afterSave)=\"afterSave($event)\"\r\n >\r\n </app-generic-dialog>\r\n\r\n\r\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"ngmodule\", type: AutoCompleteModule }, { kind: \"component\", type: i3.AutoComplete, selector: \"p-autoComplete, p-autocomplete, p-auto-complete\", inputs: [\"minLength\", \"minQueryLength\", \"delay\", \"panelStyle\", \"styleClass\", \"panelStyleClass\", \"inputStyle\", \"inputId\", \"inputStyleClass\", \"placeholder\", \"readonly\", \"scrollHeight\", \"lazy\", \"virtualScroll\", \"virtualScrollItemSize\", \"virtualScrollOptions\", \"autoHighlight\", \"forceSelection\", \"type\", \"autoZIndex\", \"baseZIndex\", \"ariaLabel\", \"dropdownAriaLabel\", \"ariaLabelledBy\", \"dropdownIcon\", \"unique\", \"group\", \"completeOnFocus\", \"showClear\", \"dropdown\", \"showEmptyMessage\", \"dropdownMode\", \"multiple\", \"tabindex\", \"dataKey\", \"emptyMessage\", \"showTransitionOptions\", \"hideTransitionOptions\", \"autofocus\", \"autocomplete\", \"optionGroupChildren\", \"optionGroupLabel\", \"overlayOptions\", \"suggestions\", \"optionLabel\", \"optionValue\", \"id\", \"searchMessage\", \"emptySelectionMessage\", \"selectionMessage\", \"autoOptionFocus\", \"selectOnFocus\", \"searchLocale\", \"optionDisabled\", \"focusOnHover\", \"typeahead\", \"appendTo\"], outputs: [\"completeMethod\", \"onSelect\", \"onUnselect\", \"onFocus\", \"onBlur\", \"onDropdownClick\", \"onClear\", \"onKeyUp\", \"onShow\", \"onHide\", \"onLazyLoad\"] }, { kind: \"directive\", type: i4.PrimeTemplate, selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: InputGroupModule }, { kind: \"component\", type: i5.InputGroup, selector: \"p-inputgroup, p-inputGroup, p-input-group\", inputs: [\"styleClass\"] }, { kind: \"ngmodule\", type: InputGroupAddonModule }, { kind: \"component\", type: i6.InputGroupAddon, selector: \"p-inputgroup-addon, p-inputGroupAddon\", inputs: [\"style\", \"styleClass\"] }, { kind: \"directive\", type: FormlyAttributes, selector: \"[formlyAttributes]\", inputs: [\"formlyAttributes\", \"id\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"ngmodule\", type: CheckboxModule }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"component\", type: i7.Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"raised\", \"rounded\", \"text\", \"plain\", \"severity\", \"outlined\", \"link\", \"tabindex\", \"size\", \"variant\", \"style\", \"styleClass\", \"badgeClass\", \"badgeSeverity\", \"ariaLabel\", \"buttonProps\", \"autofocus\", \"fluid\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { kind: \"component\", type: GenericDialogComponent, selector: \"app-generic-dialog\", inputs: [\"form\", \"service\", \"formFields\", \"model\", \"apiName\", \"idField\", \"dialogMaxWidth\", \"displayMode\", \"mode\", \"forceState\", \"drawerVisible\", \"dialogVisible\", \"isViewMode\", \"isEditMode\", \"useConfirmOnSave\", \"loading\", \"errorMsg\", \"errorMessage\", \"beforeSaveTransform\", \"hideTable\", \"autoShowForm\"], outputs: [\"action\", \"afterSave\", \"afterDelete\", \"beforeSave\", \"beforeDelete\", \"formCancel\", \"formInit\", \"dataLoaded\", \"selectionChange\", \"error\", \"visibleChange\"] }, { kind: \"pipe\", type: i8.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSelectorTypeComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'formly-generic-selector',\n template: `\r\n <!-- [ngStyle]=\"{'display': props.display ? 'block': 'none'}\" -->\r\n <p-inputGroup class=\"w-full\">\r\n <p-autoComplete\r\n #autoComp\r\n [ngModel]=\"selectedItem\"\r\n (ngModelChange)=\"onSelectionChange($event)\"\r\n [formlyAttributes]=\"field\"\r\n [suggestions]=\"options_\"\r\n (completeMethod)=\"search($event)\"\r\n [multiple]=\"to['multiple']\"\r\n [optionLabel]=\"optionLabel\"\r\n [dropdown]=\"false\"\r\n [forceSelection]=\"true\"\r\n [placeholder]=\"(props['placeholder'] ?? '') | translate\"\r\n [disabled]=\"!!props.disabled\"\r\n dropdownMode=\"current\"\r\n appendTo=\"body\"\r\n class=\"w-full rounded-none\"\r\n [showEmptyMessage]=\"true\"\r\n (onSelect)=\"onSelect($event)\"\r\n emptyMessage=\"{{ getEmptyMessage() | translate }}\"\r\n [showTransitionOptions]=\"'0ms'\"\r\n [showClear]=\"false\"\r\n\r\n (keydown.arrowdown)=\"onArrowDown($event)\"\r\n (keydown.escape)=\"onEscape($event)\"\r\n >\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"flex flex-col\">\r\n <span>{{ getPrimaryLabel(item) }}</span>\r\n\r\n </div>\r\n </ng-template>\r\n </p-autoComplete>\r\n\r\n <p-inputGroupAddon>\r\n <p-button\r\n tabindex=\"-1\"\r\n [disabled]=\"!!props.disabled || loading\"\r\n [icon]=\"loading ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\"\r\n (click)=\"onDropdownButtonClick()\"\r\n severity=\"secondary\" />\r\n </p-inputGroupAddon>\r\n <!-- Add new button -->\r\n @if (props.canAdd && props.formFields) {\r\n <p-inputGroupAddon>\r\n <p-button\r\n tabindex=\"-1\"\r\n [disabled]=\"!!props.disabled\"\r\n icon=\"pi pi-plus\"\r\n (click)=\"onAddNewClick()\"\r\n severity=\"primary\" />\r\n </p-inputGroupAddon>\r\n }\r\n</p-inputGroup>\r\n\r\n<!-- [model]=\"model\" -->\r\n <app-generic-dialog\r\n #dialog\r\n [formFields]=\"props.formFields ?? []\"\r\n [apiName]=\"props.serviceName\"\r\n [idField]=\"props.idField ??'id'\"\r\n [displayMode]=\"props.dialogDisplayMode ?? 'dialog'\"\r\n (afterSave)=\"afterSave($event)\"\r\n >\r\n </app-generic-dialog>\r\n\r\n\r\n `,\n providers: [DialogService, BaseService],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n AutoCompleteModule,\n CommonModule,\n InputGroupModule,\n InputGroupAddonModule,\n FormlyAttributes,\n TranslateModule,\n AutoComplete,\n CheckboxModule,\n ButtonModule,\n GenericDialogComponent\n ]\n }]\n }], ctorParameters: () => [{ type: i1.BaseService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { autoComp: [{\n type: ViewChild,\n args: ['autoComp']\n }], dialog: [{\n type: ViewChild,\n args: ['dialog']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1zZWxlY3Rvci9zcmMvbGliL2dlbmVyaWMtc2VsZWN0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBcUIsU0FBUyxFQUFFLGdCQUFnQixFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBTyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztB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QUFjO3dCQUNkLFlBQVk7d0JBQ1osc0JBQXNCO3FCQUN6QjtpQkFDQTt1SUFFd0IsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNBLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZpZWxkVHlwZSwgRm9ybWx5QXR0cmlidXRlcywgRmllbGRUeXBlQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbmFsaXplLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEF1dG9Db21wbGV0ZU1vZHVsZSwgQXV0b0NvbXBsZXRlIH0gZnJvbSAncHJpbWVuZy9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBJbnB1dEdyb3VwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dGdyb3VwJztcclxuaW1wb3J0IHsgSW5wdXRHcm91cEFkZG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dGdyb3VwYWRkb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L3ByaW1lbmcvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IENoZWNrYm94TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jaGVja2JveCc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBHZW5lcmljRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtZGlhbG9nJztcclxuXHJcbmludGVyZmFjZSBHZW5lcmljU2VsZWN0b3JQcm9wcyBleHRlbmRzIEZvcm1seUZpZWxkUHJvcHMvKiAsIEZvcm1seUZpZWxkU2VsZWN0UHJvcHMgKi8ge1xyXG4gIC8vIGFwcGVuZFRvPzogU2VsZWN0WydhcHBlbmRUbyddO1xyXG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XHJcbiAgbGlzdEVuZHBvaW50Pzogc3RyaW5nIHwgKChtb2RlbDogYW55KSA9PiBzdHJpbmcpO1xyXG4gIGxvYWREZWZhdWx0RmllbGQ/OiBzdHJpbmc7XHJcbiAgbG9hZERlZmF1bHRWYWx1ZT86IHN0cmluZztcclxuICBsb2FkRGVmYXVsdD86IGJvb2xlYW47XHJcblxyXG4gIGxhYmVsRmllbGQ/OiBzdHJpbmc7XHJcbiAgbGFiZWxGaWVsZEVuPzogc3RyaW5nO1xyXG4gIHZhbHVlRmllbGQ/OiBzdHJpbmc7XHJcbiAgdXNlTXVsdGlMYW5nPzogYm9vbGVhbjtcclxuXHJcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xyXG5cclxuICBkaXNwbGF5PzogYm9vbGVhbjtcclxuICBvZmZsaW5lPzogYm9vbGVhbjtcclxuXHJcbiAgbG9hZFNhdmVkPzogYm9vbGVhbjtcclxuICBsb2FkU2F2ZWRGaWVsZD86IHN0cmluZztcclxuXHJcblxyXG4gIC8qKiBTdGF0aWMgb2ZmbGluZSBpdGVtcyAoYXJyYXkgb2Ygb2JqZWN0cykgKi9cclxuICBvZmZsaW5lSXRlbXM/OiBhbnlbXTtcclxuXHJcbiAgLyoqIEFzeW5jIG9mZmxpbmUgaXRlbXMgKG9ic2VydmFibGUpICovXHJcbiAgb2ZmbGluZUl0ZW1zJD86IE9ic2VydmFibGU8YW55W10+O1xyXG5cclxuICAvKiogRnVuY3Rpb24tYmFzZWQgZmlsdGVyIGZvciBvZmZsaW5lIGl0ZW1zICovXHJcbiAgb25TZWxlY3Q/OiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLCBldmVudD86IGFueSkgPT4gdm9pZDtcclxuXHJcbiAgb2ZmbGluZURhdGFGbj86IChxdWVyeT86IHN0cmluZykgPT4gYW55W107XHJcbiAgIGZpeGVkRmlsdGVycz86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgICBkZWZhdWx0VmFsdWU/OiBhbnk7ICAgICAgIC8vIGlkINij2YggYXJyYXkgb2YgaWRzXHJcbiAgZGVmYXVsdEl0ZW0/OiBhbnk7ICAgICAgICAvLyDYp9mE2YPYp9im2YYg2YPYp9mF2YQgKG9iamVjdCkg2KXYsNinINi52YbYr9mDINis2KfZh9iyXHJcblxyXG4gIHZpZXdQZXJtaXNzaW9uTmFtZT86IHN0cmluZztcclxuICBlZGl0UGVybWlzc2lvbk5hbWU/OiBzdHJpbmc7XHJcbiAgYWRkUGVybWlzc2lvbk5hbWU/OiBzdHJpbmc7XHJcbiAgaWRGaWVsZD86IHN0cmluZztcclxuICBkaWFsb2dEaXNwbGF5TW9kZT86ICB8ICdkcmF3ZXInXHJcbiAgICB8ICdkaWFsb2cnXHJcbiAgICB8ICdyb3V0ZSdcclxuICAgIHwgJ2lubGluZSdcclxuICAgIHwgUGFydGlhbDxcclxuICAgICAgUmVjb3JkPFxyXG4gICAgICAgICdhZGQnIHwgJ2VkaXQnIHwgJ3ZpZXcnLFxyXG4gICAgICAgICdkcmF3ZXInIHwgJ2RpYWxvZycgfCAncm91dGUnIHwgJ2lubGluZSdcclxuICAgICAgPj47XHJcbiAgY2FuQWRkPzogYm9vbGVhbjtcclxuICBjYW5Mb29rdXA/OiBib29sZWFuO1xyXG4gIGZvcm1GaWVsZHM/OiAgRm9ybWx5RmllbGRDb25maWdbXTtcclxuICBhZnRlclNhdmU/OiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLCBldmVudD86IGFueSkgPT4gdm9pZDtcclxuXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZm9ybWx5LWdlbmVyaWMtc2VsZWN0b3InLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgPCEtLSBbbmdTdHlsZV09XCJ7J2Rpc3BsYXknOiBwcm9wcy5kaXNwbGF5ID8gJ2Jsb2NrJzogJ25vbmUnfVwiIC0tPlxyXG4gPHAtaW5wdXRHcm91cCAgIGNsYXNzPVwidy1mdWxsXCI+XHJcbiAgPHAtYXV0b0NvbXBsZXRlXHJcbiAgICAjYXV0b0NvbXBcclxuICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkSXRlbVwiXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcclxuICAgIFtzdWdnZXN0aW9uc109XCJvcHRpb25zX1wiXHJcbiAgICAoY29tcGxldGVNZXRob2QpPVwic2VhcmNoKCRldmVudClcIlxyXG4gICAgW211bHRpcGxlXT1cInRvWydtdWx0aXBsZSddXCJcclxuICAgIFtvcHRpb25MYWJlbF09XCJvcHRpb25MYWJlbFwiXHJcbiAgICBbZHJvcGRvd25dPVwiZmFsc2VcIlxyXG4gICAgW2ZvcmNlU2VsZWN0aW9uXT1cInRydWVcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cIihwcm9wc1sncGxhY2Vob2xkZXInXSA/PyAnJykgfCB0cmFuc2xhdGVcIlxyXG4gICAgW2Rpc2FibGVkXT1cIiEhcHJvcHMuZGlzYWJsZWRcIlxyXG4gICAgZHJvcGRvd25Nb2RlPVwiY3VycmVudFwiXHJcbiAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgY2xhc3M9XCJ3LWZ1bGwgcm91bmRlZC1ub25lXCJcclxuICAgIFtzaG93RW1wdHlNZXNzYWdlXT1cInRydWVcIlxyXG4gICAgKG9uU2VsZWN0KT1cIm9uU2VsZWN0KCRldmVudClcIlxyXG4gICAgZW1wdHlNZXNzYWdlPVwie3sgZ2V0RW1wdHlNZXNzYWdlKCkgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgW3Nob3dUcmFuc2l0aW9uT3B0aW9uc109XCInMG1zJ1wiXHJcbiAgICBbc2hvd0NsZWFyXT1cImZhbHNlXCJcclxuXHJcbiAgICAgKGtleWRvd24uYXJyb3dkb3duKT1cIm9uQXJyb3dEb3duKCRldmVudClcIlxyXG4gIChrZXlkb3duLmVzY2FwZSk9XCJvbkVzY2FwZSgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtIHBUZW1wbGF0ZT1cIml0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgPHNwYW4+e3sgZ2V0UHJpbWFyeUxhYmVsKGl0ZW0pIH19PC9zcGFuPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3AtYXV0b0NvbXBsZXRlPlxyXG5cclxuICA8cC1pbnB1dEdyb3VwQWRkb24+XHJcbiAgICA8cC1idXR0b25cclxuICAgICAgdGFiaW5kZXg9XCItMVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCIhIXByb3BzLmRpc2FibGVkIHx8IGxvYWRpbmdcIlxyXG4gICAgICBbaWNvbl09XCJsb2FkaW5nID8gJ3BpIHBpLXNwaW5uZXIgcGktc3BpbicgOiAncGkgcGktY2hldnJvbi1kb3duJ1wiXHJcbiAgICAgIChjbGljayk9XCJvbkRyb3Bkb3duQnV0dG9uQ2xpY2soKVwiXHJcbiAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCIgLz5cclxuICA8L3AtaW5wdXRHcm91cEFkZG9uPlxyXG4gIDwhLS0gQWRkIG5ldyBidXR0b24gLS0+XHJcbiAgIEBpZiAocHJvcHMuY2FuQWRkICYmIHByb3BzLmZvcm1GaWVsZHMpIHtcclxuICA8cC1pbnB1dEdyb3VwQWRkb24+XHJcbiAgICA8cC1idXR0b25cclxuICAgICAgdGFiaW5kZXg9XCItMVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCIhIXByb3BzLmRpc2FibGVkXCJcclxuICAgICAgaWNvbj1cInBpIHBpLXBsdXNcIlxyXG4gICAgICAoY2xpY2spPVwib25BZGROZXdDbGljaygpXCJcclxuICAgICAgc2V2ZXJpdHk9XCJwcmltYXJ5XCIgLz5cclxuICA8L3AtaW5wdXRHcm91cEFkZG9uPlxyXG4gICB9XHJcbjwvcC1pbnB1dEdyb3VwPlxyXG5cclxuPCEtLSBbbW9kZWxdPVwibW9kZWxcIiAtLT5cclxuICA8YXBwLWdlbmVyaWMtZGlhbG9nXHJcbiAgICAjZGlhbG9nXHJcbiAgICBbZm9ybUZpZWxkc109XCJwcm9wcy5mb3JtRmllbGRzID8/IFtdXCJcclxuICAgIFthcGlOYW1lXT1cInByb3BzLnNlcnZpY2VOYW1lXCJcclxuICAgIFtpZEZpZWxkXT1cInByb3BzLmlkRmllbGQgPz8naWQnXCJcclxuICAgIFtkaXNwbGF5TW9kZV09XCJwcm9wcy5kaWFsb2dEaXNwbGF5TW9kZSA/PyAnZGlhbG9nJ1wiXHJcbiAgICAoYWZ0ZXJTYXZlKT1cImFmdGVyU2F2ZSgkZXZlbnQpXCJcclxuICA+XHJcbiAgPC9hcHAtZ2VuZXJpYy1kaWFsb2c+XHJcblxyXG5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW0RpYWxvZ1NlcnZpY2UsQmFzZVNlcnZpY2VdLFxyXG4gIGltcG9ydHM6W1xyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgQXV0b0NvbXBsZXRlTW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSW5wdXRHcm91cE1vZHVsZSxcclxuICAgIElucHV0R3JvdXBBZGRvbk1vZHVsZSxcclxuICAgIEZvcm1seUF0dHJpYnV0ZXMsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBBdXRvQ29tcGxldGUsXHJcbiAgICBDaGVja2JveE1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIEdlbmVyaWNEaWFsb2dDb21wb25lbnRcclxuXVxyXG59KVxyXG5leHBvcnQgIGNsYXNzIEdlbmVyaWNTZWxlY3RvclR5cGVDb21wb25lbnQgZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPEdlbmVyaWNTZWxlY3RvclByb3BzPj4gaW1wbGVtZW50cyBPbkluaXQsT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdhdXRvQ29tcCcpIGF1dG9Db21wITogQXV0b0NvbXBsZXRlO1xyXG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZycpIGRpYWxvZyE6IEdlbmVyaWNEaWFsb2dDb21wb25lbnQ7XHJcbiAgb3B0aW9uc186IGFueVtdID0gW107XHJcbiAgc2VsZWN0ZWRJdGVtOiBhbnk7XHJcblxyXG4gIGxvYWRpbmcgPSBmYWxzZTtcclxuICBwcml2YXRlIF9vZmZsaW5lTGlzdDogYW55W10gPSBbXTtcclxuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuXHJcbiAgYXBpOiBCYXNlU2VydmljZXxhbnk7XHJcbiBwcml2YXRlIHZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uOyAvLyBBZGQgYSBzdWJzY3JpcHRpb24gdG8gbWFuYWdlIHRoZSBvYnNlcnZhYmxlXHJcblxyXG5nZXQgb3B0aW9uTGFiZWwoKTogc3RyaW5nIHtcclxuICBpZih0aGlzLnRvLnVzZU11bHRpTGFuZyA9PSB0cnVlKXtcclxuICAgICBpZih0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgPT0gJ2VuJyl7XHJcbiAgICAgcmV0dXJuIHRoaXMudG8/LmxhYmVsRmllbGRFbiB8fCAnbmFtZSc7XHJcbiAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy50bz8ubGFiZWxGaWVsZCB8fCAnbmFtZSc7XHJcbiAgfVxyXG4gIHJldHVybiB0aGlzLnRvPy5sYWJlbEZpZWxkIHx8ICduYW1lJztcclxufVxyXG5cclxucHJpdmF0ZSBpc051bGxPckVtcHR5KHZhbDogYW55KTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCB8fCB2YWwgPT09ICcnO1xyXG59XHJcblxyXG5nZXRQcmltYXJ5TGFiZWwoaXRlbTogYW55KTogc3RyaW5nIHtcclxuICBjb25zdCBmaWVsZHMgPSBbXHJcbiAgICB0aGlzLm9wdGlvbkxhYmVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzb2x2ZWQgZmllbGQgbmFtZSBmcm9tIGdldHRlclxyXG4gICAgdGhpcy50by5sYWJlbEZpZWxkIHx8ICduYW1lJyxcclxuICAgIHRoaXMudG8ubGFiZWxGaWVsZEVuIHx8ICduYW1lJ1xyXG4gIF07XHJcblxyXG4gIGZvciAoY29uc3QgZiBvZiBmaWVsZHMpIHtcclxuICAgIGNvbnN0IHYgPSBpdGVtW2ZdO1xyXG4gICAgaWYgKCF0aGlzLmlzTnVsbE9yRW1wdHkodikpIHtcclxuICAgICAgcmV0dXJuIHY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gJyc7XHJcbn1cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3ZjOiBCYXNlU2VydmljZSxwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcixwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5hcGkgPSB0aGlzLnN2YztcclxuICAgIGNvbnN0IHRvID0gdGhpcy5wcm9wcztcclxuICAgIHRoaXMuYXBpLmFwaU5hbWUgPSB0b1snc2VydmljZU5hbWUnXTtcclxuXHJcbiAgICBpZiAodG9bJ29mZmxpbmUnXSkge1xyXG4gICAgICBpZiAodG9bJ29mZmxpbmVEYXRhRm4nXSkge1xyXG4gICAgICAgIHRoaXMuX29mZmxpbmVMaXN0ID0gdG9bJ29mZmxpbmVEYXRhRm4nXSgpO1xyXG4gICAgICAgIHRoaXMuaW5pdE9mZmxpbmVTZWxlY3Rpb24oKTtcclxuICAgICAgfSBlbHNlIGlmICh0b1snb2ZmbGluZUl0ZW1zJCddKSB7XHJcbiAgICAgICAgdG9bJ29mZmxpbmVJdGVtcyQnXS5zdWJzY3JpYmUoKGxpc3Q6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9vZmZsaW5lTGlzdCA9IGxpc3Q7XHJcbiAgICAgICAgICB0aGlzLmluaXRPZmZsaW5lU2VsZWN0aW9uKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fb2ZmbGluZUxpc3QgPSB0b1snb2ZmbGluZUl0ZW1zJ10gfHwgW107XHJcbiAgICAgICAgdGhpcy5pbml0T2ZmbGluZVNlbGVjdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgIGlmICh0aGlzLnByb3BzLmxvYWRTYXZlZCAmJiAhdGhpcy5wcm9wcy5tdWx0aXBsZSAmJiB0aGlzLnByb3BzLmxvYWRTYXZlZEZpZWxkICYmIHRoaXMucHJvcHMudmFsdWVGaWVsZCkge1xyXG4gICAgICAgICAgY29uc3QgdmYgPSB0aGlzLnRvWyd2YWx1ZUZpZWxkJ10gfHwgJ2lkJztcclxuICAgICAgICAgIGNvbnN0IGxmID0gdGhpcy5vcHRpb25MYWJlbDtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID1cclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgW3ZmXTp0aGlzLmZvcm1Db250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBbbGZdOnRoaXMubW9kZWxbdGhpcy5wcm9wcy5sb2FkU2F2ZWRGaWVsZF0sXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMuY2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuY2hhbmdlKHRoaXMuZmllbGQsIHsgaXRlbTogdGhpcy5zZWxlY3RlZEl0ZW0gfSk7XHJcbiAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICB9XHJcbiAgICAgICBlbHNle1xyXG5cclxuICAgICAgICAgdGhpcy5pbml0T25saW5lU2VsZWN0aW9uKCk7XHJcbiAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3Vic2NyaWJlIHRvIGZvcm1Db250cm9sIHZhbHVlIGNoYW5nZXNcclxuICAgIHRoaXMudmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIC8vIFRoaXMgdGFwIG9wZXJhdG9yIGlzIGEgZ29vZCBwbGFjZSB0byBydW4gc2lkZSBlZmZlY3RzXHJcbiAgICAgICAgICAvLyBsaWtlIGNhbGxpbmcgeW91ciBjaGFuZ2UgaGFuZGxlciBhZnRlciBhIHZhbHVlIGNoYW5nZXMuXHJcbiAgICAgICAgICAvLyB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5jaGFuZ2UpIHtcclxuICAgICAgICAgIGlmICh0b1snb2ZmbGluZSddKSB7XHJcbiAgICAgIGlmICh0b1snb2ZmbGluZURhdGFGbiddKSB7XHJcbiAgICAgICAgdGhpcy5fb2ZmbGluZUxpc3QgPSB0b1snb2ZmbGluZURhdGFGbiddKCk7XHJcbiAgICAgICAgdGhpcy5pbml0T2ZmbGluZVNlbGVjdGlvbihmYWxzZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodG9bJ29mZmxpbmVJdGVtcyQnXSkge1xyXG4gICAgICAgIHRvWydvZmZsaW5lSXRlbXMkJ10uc3Vic2NyaWJlKChsaXN0OiBhbnlbXSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fb2ZmbGluZUxpc3QgPSBsaXN0O1xyXG4gICAgICAgICAgdGhpcy5pbml0T2ZmbGluZVNlbGVjdGlvbihmYWxzZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fb2ZmbGluZUxpc3QgPSB0b1snb2ZmbGluZUl0ZW1zJ10gfHwgW107XHJcbiAgICAgICAgdGhpcy5pbml0T2ZmbGluZVNlbGVjdGlvbihmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5pdE9ubGluZVNlbGVjdGlvbihmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIDtcclxuICB9XHJcblxyXG4gIC8vIFJlbWVtYmVyIHRvIHVuc3Vic2NyaWJlIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzIVxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMudmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxucHJpdmF0ZSBsb2FkRGVmYXVsdFZhbHVlKCkge1xyXG4gIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCB2ZiA9IHRoaXMudG9bJ3ZhbHVlRmllbGQnXSB8fCAnaWQnO1xyXG4gICAgY29uc3QgZml4ZWRGaWx0ZXJzID0gdGhpcy5nZXRGaXhlZEZpbHRlcnMoKTtcclxuICAgICBjb25zdCBsZiA9IHRoaXMudG9bJ2xvYWREZWZhdWx0RmllbGQnXSB8fCAnaXNEZWZhdWx0JztcclxuICAgICBjb25zdCBsZlZhbHVlID0gdGhpcy50b1snbG9hZERlZmF1bHRWYWx1ZSddIHx8IHRydWU7XHJcbmNvbnN0IHNlYXJjaFBhcmFtcyA9IHtcclxuICAgICBbbGZdOiBsZlZhbHVlLFxyXG4gICAgICAuLi5maXhlZEZpbHRlcnMsXHJcbiAgICB9O1xyXG4gIHRoaXMuYXBpLmdldExpc3Qoc2VhcmNoUGFyYW1zKVxyXG4gICAgLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIEFzc3VtaW5nIHRoZSBBUEkgcmV0dXJucyBhIGxpc3QgYW5kIHlvdSB3YW50IHRvIHNlbGVjdCB0aGUgZmlyc3Qgb25lXHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuaXRlbXMgJiYgcmVzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLnRvWydtdWx0aXBsZSddKXtcclxuICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHJlcy5pdGVtcy5tYXAoKGM6IGFueSkgPT4gY1t2Zl0pKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSByZXMuaXRlbXNbMF07XHJcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGRlZmF1bHRWYWx1ZT8uW3ZmXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIC8vIHRoaXMuaW5pdE9ubGluZVNlbGVjdGlvbigpOyAvLyBQcm9jZWVkIHdpdGggb25saW5lIHNlbGVjdGlvbiBhZnRlciBzZXR0aW5nIHRoZSB2YWx1ZVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBsb2FkIGRlZmF1bHQgdmFsdWUgZnJvbSBBUEk6XCIsIGVycik7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgLy8gdGhpcy5pbml0T25saW5lU2VsZWN0aW9uKCk7IC8vIEZhbGxiYWNrIHRvIGxvY2FsIHNlbGVjdGlvbiBpZiBBUEkgZmFpbHNcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuICAgIC8vIE5ldyBtZXRob2QgdG8gaGFuZGxlIGxvYWRpbmcgdGhlIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgQVBJXHJcblxyXG4gICAgYWZ0ZXJTYXZlKGV2ZW50OiBhbnkpIHtcclxuICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZShldmVudC5yZWNvcmQpO1xyXG4gICBpZiAodGhpcy5wcm9wcy5hZnRlclNhdmUpIHtcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5hZnRlclNhdmUodGhpcy5maWVsZCwgeyBpdGVtOiBldmVudC5yZXNwb25zZSB9KTtcclxuICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxufVxyXG5cclxuICAgIG9uU2VsZWN0KGV2ZW50OiBhbnkpIHtcclxuXHJcbiAgIGlmICh0aGlzLnByb3BzLm9uU2VsZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25TZWxlY3QodGhpcy5maWVsZCwgeyBpdGVtOiBldmVudC52YWx1ZSB9KTtcclxuICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxufVxyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZSh2YWw6IGFueSkge1xyXG4gIHRoaXMuc2VsZWN0ZWRJdGVtID0gdmFsO1xyXG5cclxuICBjb25zdCB2ZiA9IHRoaXMudG9bJ3ZhbHVlRmllbGQnXSB8fCAnaWQnO1xyXG5cclxuICBpZiAodGhpcy50b1snbXVsdGlwbGUnXSkge1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsLm1hcCgoYzogYW55KSA9PiBjW3ZmXSkgOiBbXVxyXG4gICAgKTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWw/Llt2Zl0gPz8gbnVsbCk7XHJcbiAgfVxyXG59XHJcbiAgcHJpdmF0ZSBpbml0T2ZmbGluZVNlbGVjdGlvbih3aXRoU2V0VmFsdWU9dHJ1ZSkge1xyXG4gICAgY29uc3QgdmFsID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcclxuICAgIGNvbnN0IHZmID0gdGhpcy50b1sndmFsdWVGaWVsZCddIHx8ICdpZCc7XHJcblxyXG4gICAgaWYgKHZhbCA9PSBudWxsKSByZXR1cm47XHJcblxyXG4gICAgaWYgKHRoaXMudG9bJ211bHRpcGxlJ10gJiYgQXJyYXkuaXNBcnJheSh2YWwpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5fb2ZmbGluZUxpc3QuZmlsdGVyKGl0ZW0gPT5cclxuICAgICAgICB2YWwuaW5jbHVkZXMoaXRlbVt2Zl0pXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuX29mZmxpbmVMaXN0LmZpbmQoaXRlbSA9PiBpdGVtW3ZmXSA9PT0gdmFsKTtcclxuICAgIH1cclxuXHJcbiAgICBpZih3aXRoU2V0VmFsdWUgPT0gdHJ1ZSl7XHJcblxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgdGhpcy50b1snbXVsdGlwbGUnXVxyXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZEl0ZW0ubWFwKChjOiBhbnkpID0+IGNbdmZdKVxyXG4gICAgICAgIDogdGhpcy5zZWxlY3RlZEl0ZW0/Llt2Zl1cclxuICAgICk7XHJcbiAgfVxyXG4gIGVsc2V7XHJcbiAgICBpZiAodGhpcy5wcm9wcy5jaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5jaGFuZ2UodGhpcy5maWVsZCwgeyBpdGVtOiB0aGlzLnNlbGVjdGVkSXRlbSB9KTtcclxuICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRPbmxpbmVTZWxlY3Rpb24od2l0aFNldFZhbHVlID0gdHJ1ZSkge1xyXG4gIGNvbnN0IHZhbCA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgY29uc3QgdmYgPSB0aGlzLnRvWyd2YWx1ZUZpZWxkJ10gfHwgJ2lkJztcclxuXHJcbiAgaWYgKHZhbCA9PSBudWxsIHx8IChBcnJheS5pc0FycmF5KHZhbCkgJiYgdmFsLmxlbmd0aCA9PT0gMCkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy50b1snbXVsdGlwbGUnXSA/IFtdIDogbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5wcm9wc1snbG9hZERlZmF1bHQnXSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmxvYWREZWZhdWx0VmFsdWUoKTtcclxuICAgIH1cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGlmICh0aGlzLnRvWydtdWx0aXBsZSddICYmIEFycmF5LmlzQXJyYXkodmFsKSAmJiB2YWwubGVuZ3RoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IGZpeGVkRmlsdGVycyA9IHRoaXMuZ2V0Rml4ZWRGaWx0ZXJzKCk7XHJcblxyXG4gICAgLy8g8J+UkSBvbmUgZ2V0TGlzdCBjYWxsIHBlciBpZCwgYnV0IGluY2x1ZGUgZml4ZWRGaWx0ZXJzIGluIGVhY2hcclxuICAgIGNvbnN0IGNhbGxzID0gdmFsLm1hcCgoaWQ6IGFueSkgPT5cclxuICAgICAgdGhpcy5hcGkuZ2V0TGlzdCh7IC4uLmZpeGVkRmlsdGVycywgW3ZmXTogaWQgfSkucGlwZShcclxuICAgICAgICBtYXAoKHJlczogYW55KSA9PiAocmVzPy5pdGVtcz8ubGVuZ3RoID8gcmVzLml0ZW1zWzBdIDogbnVsbCkpXHJcbiAgICAgIClcclxuICAgICk7XHJcblxyXG4gICAgZm9ya0pvaW4oY2FsbHMpXHJcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+ICh0aGlzLmxvYWRpbmcgPSBmYWxzZSkpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoaXRlbXM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW1zLmZpbHRlcihpID0+IGkgIT0gbnVsbCk7XHJcblxyXG4gICAgICAgICAgaWYgKHdpdGhTZXRWYWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtLm1hcCgoYzogYW55KSA9PiBjW3ZmXSkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLmNoYW5nZSkge1xyXG4gICAgICAgICAgICB0aGlzLnByb3BzLmNoYW5nZSh0aGlzLmZpZWxkLCB7IGl0ZW06IHRoaXMuc2VsZWN0ZWRJdGVtIH0pO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIG11bHRpcGxlIHNlbGVjdGlvbnM6JywgZXJyKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gW107XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCBmaXhlZEZpbHRlcnMgPSB0aGlzLmdldEZpeGVkRmlsdGVycygpO1xyXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0geyAuLi5maXhlZEZpbHRlcnMsIFt2Zl06IHZhbCB9O1xyXG5cclxuICAgIHRoaXMuYXBpXHJcbiAgICAgIC5nZXRMaXN0KHNlYXJjaFBhcmFtcylcclxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gKHRoaXMubG9hZGluZyA9IGZhbHNlKSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaXRlbSA9IHJlcz8uaXRlbXM/LlswXSB8fCBudWxsO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtO1xyXG5cclxuICAgICAgICAgIGlmICh3aXRoU2V0VmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShpdGVtPy5bdmZdKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5jaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5jaGFuZ2UodGhpcy5maWVsZCwgeyBpdGVtOiB0aGlzLnNlbGVjdGVkSXRlbSB9KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBzZWxlY3Rpb246JywgZXJyKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbmdldEZpeGVkRmlsdGVycygpOiBhbnkge1xyXG4gIGNvbnN0IGZpeGVkRmlsdGVycyA9IHRoaXMudG9bJ2ZpeGVkRmlsdGVycyddO1xyXG5cclxuICBpZiAodHlwZW9mIGZpeGVkRmlsdGVycyA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgLy8gQ2FsbCB3aXRoIGN1cnJlbnQgbW9kZWwgKGFuZCBvcHRpb25hbGx5IGZpZWxkKVxyXG4gICAgcmV0dXJuIGZpeGVkRmlsdGVycyh0aGlzLm1vZGVsKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBmaXhlZEZpbHRlcnMgfHwge307XHJcbn1cclxub25BcnJvd0Rvd24oZXZlbnQ6IGFueSkge1xyXG4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIC8vIHRoaXMuYXV0b0NvbXAuc2hvdygpO1xyXG50aGlzLm9uRHJvcGRvd25CdXR0b25DbGljaygpO1xyXG59XHJcblxyXG5vbkVzY2FwZShldmVudDogYW55KSB7XHJcbiAgdGhpcy5hdXRvQ29tcC5oaWRlKCk7XHJcblxyXG59XHJcbm9uQWRkTmV3Q2xpY2soKSB7XHJcbiAgLy8geW91ciBsb2dpYyBmb3IgYWRkaW5nIGEgbmV3IGl0ZW1cclxuICAvLyBlLmcuIG9wZW4gZGlhbG9nIG9yIGVtaXQgZXZlbnRcclxuICBjb25zb2xlLmxvZygnQWRkIG5ldyBpdGVtIGNsaWNrZWQnKTtcclxuICB0aGlzLmRpYWxvZy5vcGVuRm9ybShcImNyZWF0ZVwiKTtcclxufVxyXG5vbkRyb3Bkb3duQnV0dG9uQ2xpY2soKSB7XHJcbiAgdGhpcy5zZWFyY2goeyBxdWVyeTogJycgfSk7ICAgLy8gdHJpZ2dlciB5b3VyIG93biBzZWFyY2hcclxuICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYXV0b0NvbXAuc2hvdygpLCAwKTsgLy8gZm9yY2UgZHJvcGRvd24gdG8gb3BlblxyXG59XHJcbi8vIENhbGxlZCB3aGVuIGRyb3Bkb3duIGJ1dHRvbiBjbGlja2VkXHJcbiAgb25Ecm9wZG93bkNsaWNrKGV2ZW50OiBhbnkpIHtcclxuICAgIC8vIPCfmqsgc3RvcCB0aGUgZGVmYXVsdCBkcm9wZG93biBiZWhhdmlvclxyXG4gIGV2ZW50Lm9yaWdpbmFsRXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICBldmVudC5vcmlnaW5hbEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKCdEcm9wZG93biBjbGlja2VkIScsIGV2ZW50KTtcclxuICAgIC8vIOKchSB5b3VyIGN1c3RvbSBjb2RlIGhlcmVcclxuICAgIC8vIGUuZy4sIGZvcmNlIHRyaWdnZXIgc2VhcmNoIGZvciBlbXB0eSBxdWVyeVxyXG4gICAgdGhpcy5zZWFyY2goeyBxdWVyeTogJycgfSk7XHJcbiAgfVxyXG5cclxuc2VhcmNoKGV2ZW50OiB7IHF1ZXJ5OiBzdHJpbmcgfSkge1xyXG4gIGNvbnN0IHEgPSBldmVudC5xdWVyeT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIHx8ICcnO1xyXG4gIGNvbnN0IGxmID0gdGhpcy5vcHRpb25MYWJlbDtcclxuICBjb25zdCBmaXhlZEZpbHRlcnMgPSB0aGlzLmdldEZpeGVkRmlsdGVycygpO1xyXG5cclxuXHJcbiAgaWYgKHRoaXMudG9bJ29mZmxpbmUnXSkge1xyXG4gICAgdGhpcy5vcHRpb25zXyA9IHRoaXMudG9bJ29mZmxpbmVEYXRhRm4nXVxyXG4gICAgICA/IHRoaXMudG9bJ29mZmxpbmVEYXRhRm4nXShxKVxyXG4gICAgICA6IHRoaXMuX29mZmxpbmVMaXN0LmZpbHRlcihpdGVtID0+XHJcbiAgICAgICAgICBpdGVtW2xmXT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYXV0b0NvbXA/LnNob3coKSwgMCk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm9wdGlvbnNfID0gW107XHJcblxyXG4gICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IHtcclxuICAgICAgW2xmXTogcSxcclxuICAgICAgLi4uZml4ZWRGaWx0ZXJzLFxyXG4gICAgfTtcclxuXHJcbiAgICAgIC8vIOKchSDYp9iz2KrYrtiv2KfZhSBsaXN0RW5kcG9pbnQg2KXYsNinINmD2KfZhiDZhdmI2KzZiNiv2YvYp9iMINmI2KXZhNinINin2YTYudmI2K/YqSDYpdmE2Ykg2KfZhNin2YHYqtix2KfYttmKXHJcbiAgICBsZXQgbGlzdEVuZHBvaW50ID0gdGhpcy5wcm9wcy5saXN0RW5kcG9pbnQ7XHJcbiAgIGlmICh0eXBlb2YgbGlzdEVuZHBvaW50ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICBsaXN0RW5kcG9pbnQgPSBsaXN0RW5kcG9pbnQodGhpcy5tb2RlbCk7XHJcbiAgIH1cclxuXHJcbiAgICB0aGlzLmFwaS5nZXRMaXN0KHNlYXJjaFBhcmFtcyAsIGxpc3RFbmRwb2ludClcclxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gKHRoaXMubG9hZGluZyA9IGZhbHNlKSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zXyA9IHJlcy5pdGVtcyA/PyByZXMgPz8gW107XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYXV0b0NvbXA/LnNob3coKSwgMCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zXyA9IFtdO1xyXG5cclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbiAgb3BlbkNydWQobW9kZTogJ2FkZCcgfCAnZWRpdCcgfCAnaW5mbycpIHtcclxuICAgIGNvbnN0IHBheWxvYWQgPSBtb2RlID09PSAnYWRkJyA/IG51bGwgOiB0aGlzLnNlbGVjdGVkSXRlbTtcclxuXHJcbiAgICAvLyBFeGFtcGxlIGludGVncmF0aW9uOlxyXG4gICAgLy8gY29uc3QgcmVmID0gdGhpcy5kaWFsb2cub3BlbihDcnVkQ29tcG9uZW50LCB7XHJcbiAgICAvLyAgIGRhdGE6IHtcclxuICAgIC8vICAgICBzZXJ2aWNlTmFtZTogdGhpcy50by5zZXJ2aWNlTmFtZSxcclxuICAgIC8vICAgICBtb2RlLFxyXG4gICAgLy8gICAgIHJlY29yZDogcGF5bG9hZFxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KTtcclxuICAgIC8vIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgodXBkYXRlZDogYW55KSA9PiB7XHJcbiAgICAvLyAgIGlmICghdGhpcy50by5tdWx0aXBsZSAmJiB1cGRhdGVkPy5bdGhpcy50by52YWx1ZUZpZWxkXSkge1xyXG4gICAgLy8gICAgIHRoaXMuYXBpLmdldCh1cGRhdGVkW3RoaXMudG8udmFsdWVGaWVsZF0pXHJcbiAgICAvLyAgICAgICAuc3Vic2NyaWJlKGl0ZW0gPT4ge1xyXG4gICAgLy8gICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XHJcbiAgICAvLyAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoaXRlbT8uW3RoaXMudG8udmFsdWVGaWVsZF0pO1xyXG4gICAgLy8gICAgICAgfSk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGdldEVtcHR5TWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMubG9hZGluZykge1xyXG4gICAgICByZXR1cm4gJ0xPQURJTkdfREFUQV9NRVNTQUdFJzsgLy8g2YXZgdiq2KfYrSDYqtix2KzZhdipINmE2YAgXCLYrNin2LHZiiDYqtit2YXZitmEINin2YTYqNmK2KfZhtin2KouLi5cIlxyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnNfLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gJ05PX1JFU1VMVFNfRk9VTkQnOyAvLyDZhdmB2KrYp9itINiq2LHYrNmF2Kkg2YTZgCBcItmE2Kcg2KrZiNis2K8g2YbYqtin2KbYrCDZhdi32KfYqNmC2KkuXCJcclxuICAgIH1cclxuICAgIHJldHVybiAnJzsgLy8g2YTYpyDYqtmP2LnYsdi2INix2LPYp9mE2Kkg2KXYsNinINmD2KfZhtiqINmH2YbYp9mDINmG2KrYp9im2KxcclxuICB9XHJcblxyXG5pc0l0ZW1TZWxlY3RlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcclxuICBjb25zdCB2ZiA9IHRoaXMudG9bJ3ZhbHVlRmllbGQnXSB8fCAnaWQnO1xyXG4gIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWRJdGVtKSAmJlxyXG4gICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5zb21lKChzZWw6IGFueSkgPT4gc2VsW3ZmXSA9PT0gaXRlbVt2Zl0pO1xyXG59XHJcblxyXG5cclxufVxyXG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1zZWxlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLXNlbGVjdG9yL3NyYy9lbGl0ZS5mcmFtZXdvcmstbmcudWkuY29yZS1nZW5lcmljLXNlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"elite.framework-ng.ui.core-generic-selector.mjs","sources":["../tmp-esm2022/generic-selector/lib/generic-selector-module.js","../tmp-esm2022/generic-selector/lib/generic-selector.component.js","../tmp-esm2022/generic-selector/elite.framework-ng.ui.core-generic-selector.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class GenericSelectorModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSelectorModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSelectorModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSelectorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1zZWxlY3Rvci1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1zZWxlY3Rvci9zcmMvbGliL2dlbmVyaWMtc2VsZWN0b3ItbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8scUJBQXFCO3VHQUFyQixxQkFBcUI7d0dBQXJCLHFCQUFxQixZQUZ0QixZQUFZO3dHQUVYLHFCQUFxQixZQUZ0QixZQUFZOzsyRkFFWCxxQkFBcUI7a0JBSGpDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY1NlbGVjdG9yTW9kdWxlIHt9XG4iXX0=","import { ChangeDetectorRef, Component, Injector, ViewChild, inject } from '@angular/core';\nimport { FieldType, FormlyAttributes } from '@ngx-formly/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { forkJoin } from 'rxjs';\nimport { finalize, map } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AutoCompleteModule, AutoComplete } from 'primeng/autocomplete';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { ButtonModule } from 'primeng/button';\nimport { BaseService } from '@elite.framework/ng.core/services';\nimport { GenericDialogComponent } from '@elite.framework/ng.ui.core/generic-dialog';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@elite.framework/ng.core/services\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"primeng/autocomplete\";\nimport * as i4 from \"primeng/api\";\nimport * as i5 from \"primeng/inputgroup\";\nimport * as i6 from \"primeng/inputgroupaddon\";\nimport * as i7 from \"primeng/button\";\nimport * as i8 from \"@ngx-translate/core\";\nexport class GenericSelectorTypeComponent extends FieldType {\n svc;\n injector;\n cdr;\n autoComp;\n dialog;\n options_ = [];\n selectedItem;\n loading = false;\n _offlineList = [];\n translateService = inject(TranslateService);\n api;\n valueChangeSubscription; // Add a subscription to manage the observable\n get optionLabel() {\n if (this.to.useMultiLang == true) {\n if (this.translateService.currentLang == 'en') {\n return this.to?.labelFieldEn || 'name';\n }\n return this.to?.labelField || 'name';\n }\n return this.to?.labelField || 'name';\n }\n isNullOrEmpty(val) {\n return val === null || val === undefined || val === '';\n }\n getPrimaryLabel(item) {\n const fields = [\n this.optionLabel, // resolved field name from getter\n this.to.labelField || 'name',\n this.to.labelFieldEn || 'name'\n ];\n for (const f of fields) {\n const v = item[f];\n if (!this.isNullOrEmpty(v)) {\n return v;\n }\n }\n return '';\n }\n constructor(svc, injector, cdr) {\n super();\n this.svc = svc;\n this.injector = injector;\n this.cdr = cdr;\n }\n ngOnInit() {\n this.api = this.svc;\n const to = this.props;\n this.api.apiName = to['serviceName'];\n if (to['offline']) {\n if (to['offlineDataFn']) {\n this._offlineList = to['offlineDataFn']();\n this.initOfflineSelection();\n }\n else if (to['offlineItems$']) {\n to['offlineItems$'].subscribe((list) => {\n this._offlineList = list;\n this.initOfflineSelection();\n });\n }\n else {\n this._offlineList = to['offlineItems'] || [];\n this.initOfflineSelection();\n }\n }\n else {\n if (this.props.loadSaved && !this.props.multiple && this.props.loadSavedField && this.props.valueField) {\n const vf = this.to['valueField'] || 'id';\n const lf = this.optionLabel;\n this.selectedItem =\n {\n [vf]: this.formControl.value,\n [lf]: this.model[this.props.loadSavedField],\n };\n if (this.props.change) {\n this.props.change(this.field, { item: this.selectedItem });\n this.cdr.detectChanges();\n }\n }\n else {\n this.initOnlineSelection();\n }\n }\n // Subscribe to formControl value changes\n this.valueChangeSubscription = this.formControl.valueChanges\n .subscribe(() => {\n // This tap operator is a good place to run side effects\n // like calling your change handler after a value changes.\n // this.selectedItem = this.formControl.value;\n if (this.props.change) {\n if (to['offline']) {\n if (to['offlineDataFn']) {\n this._offlineList = to['offlineDataFn']();\n this.initOfflineSelection(false);\n }\n else if (to['offlineItems$']) {\n to['offlineItems$'].subscribe((list) => {\n this._offlineList = list;\n this.initOfflineSelection(false);\n });\n }\n else {\n this._offlineList = to['offlineItems'] || [];\n this.initOfflineSelection(false);\n }\n }\n else {\n this.initOnlineSelection(false);\n }\n }\n });\n }\n // Remember to unsubscribe to prevent memory leaks!\n ngOnDestroy() {\n if (this.valueChangeSubscription) {\n this.valueChangeSubscription.unsubscribe();\n }\n }\n loadDefaultValue() {\n this.loading = true;\n const vf = this.to['valueField'] || 'id';\n const fixedFilters = this.getFixedFilters();\n const lf = this.to['loadDefaultField'] || 'isDefault';\n const lfValue = this.to['loadDefaultValue'] || true;\n const searchParams = {\n [lf]: lfValue,\n ...fixedFilters,\n };\n this.api.getList(searchParams)\n .subscribe({\n next: (res) => {\n // Assuming the API returns a list and you want to select the first one\n if (res && res.items && res.items.length > 0) {\n if (this.to['multiple']) {\n this.formControl.setValue(res.items.map((c) => c[vf]));\n }\n else {\n const defaultValue = res.items[0];\n this.formControl.setValue(defaultValue?.[vf]);\n }\n }\n this.loading = false;\n // this.initOnlineSelection(); // Proceed with online selection after setting the value\n },\n error: (err) => {\n console.error(\"Failed to load default value from API:\", err);\n this.loading = false;\n // this.initOnlineSelection(); // Fallback to local selection if API fails\n }\n });\n }\n // New method to handle loading the default value from the API\n afterSave(event) {\n this.onSelectionChange(event.record);\n if (this.props.afterSave) {\n this.props.afterSave(this.field, { item: event.response });\n this.cdr.detectChanges();\n }\n }\n onSelect(event) {\n if (this.props.onSelect) {\n this.props.onSelect(this.field, { item: event.value });\n this.cdr.detectChanges();\n }\n }\n onSelectionChange(val) {\n this.selectedItem = val;\n const vf = this.to['valueField'] || 'id';\n if (this.to['multiple']) {\n this.formControl.setValue(Array.isArray(val) ? val.map((c) => c[vf]) : []);\n }\n else {\n this.formControl.setValue(val?.[vf] ?? null);\n }\n }\n initOfflineSelection(withSetValue = true) {\n const val = this.formControl.value;\n const vf = this.to['valueField'] || 'id';\n if (val == null)\n return;\n if (this.to['multiple'] && Array.isArray(val)) {\n this.selectedItem = this._offlineList.filter(item => val.includes(item[vf]));\n }\n else {\n this.selectedItem = this._offlineList.find(item => item[vf] === val);\n }\n if (withSetValue == true) {\n this.formControl.setValue(this.to['multiple']\n ? this.selectedItem.map((c) => c[vf])\n : this.selectedItem?.[vf]);\n }\n else {\n if (this.props.change) {\n this.props.change(this.field, { item: this.selectedItem });\n this.cdr.detectChanges();\n }\n }\n }\n initOnlineSelection(withSetValue = true) {\n const val = this.formControl.value;\n const vf = this.to['valueField'] || 'id';\n if (val == null || (Array.isArray(val) && val.length === 0)) {\n this.selectedItem = this.to['multiple'] ? [] : null;\n if (this.props['loadDefault'] === true) {\n this.loadDefaultValue();\n }\n return;\n }\n if (this.to['multiple'] && Array.isArray(val) && val.length) {\n this.loading = true;\n const fixedFilters = this.getFixedFilters();\n // 🔑 one getList call per id, but include fixedFilters in each\n const calls = val.map((id) => this.api.getList({ ...fixedFilters, [vf]: id }).pipe(map((res) => (res?.items?.length ? res.items[0] : null))));\n forkJoin(calls)\n .pipe(finalize(() => (this.loading = false)))\n .subscribe({\n next: (items) => {\n this.selectedItem = items.filter(i => i != null);\n if (withSetValue) {\n this.formControl.setValue(this.selectedItem.map((c) => c[vf]));\n }\n else if (this.props.change) {\n this.props.change(this.field, { item: this.selectedItem });\n }\n this.cdr.detectChanges();\n },\n error: (err) => {\n console.error('Failed to load multiple selections:', err);\n this.selectedItem = [];\n this.loading = false;\n },\n });\n }\n else {\n this.loading = true;\n const fixedFilters = this.getFixedFilters();\n const searchParams = { ...fixedFilters, [vf]: val };\n this.api\n .getList(searchParams)\n .pipe(finalize(() => (this.loading = false)))\n .subscribe({\n next: (res) => {\n const item = res?.items?.[0] || null;\n this.selectedItem = item;\n if (withSetValue) {\n this.formControl.setValue(item?.[vf]);\n }\n else if (this.props.change) {\n this.props.change(this.field, { item: this.selectedItem });\n }\n this.cdr.detectChanges();\n },\n error: (err) => {\n console.error('Failed to load selection:', err);\n this.selectedItem = null;\n this.loading = false;\n },\n });\n }\n }\n getFixedFilters() {\n const fixedFilters = this.to['fixedFilters'];\n if (typeof fixedFilters === 'function') {\n // Call with current model (and optionally field)\n return fixedFilters(this.model);\n }\n return fixedFilters || {};\n }\n getFilters() {\n let filters = this.to['filters'];\n if (typeof filters === 'function') {\n filters = filters(this.model);\n }\n if (!filters)\n return [];\n // If it's an object, return its keys\n if (!Array.isArray(filters)) {\n return Object.keys(filters);\n }\n // Already an array\n return filters;\n }\n onArrowDown(event) {\n event.preventDefault();\n // this.autoComp.show();\n this.onDropdownButtonClick();\n }\n onEscape(event) {\n this.autoComp.hide();\n }\n onAddNewClick() {\n // your logic for adding a new item\n // e.g. open dialog or emit event\n console.log('Add new item clicked');\n this.dialog.openForm(\"create\");\n }\n onDropdownButtonClick() {\n this.search({ query: '' }); // trigger your own search\n setTimeout(() => this.autoComp.show(), 0); // force dropdown to open\n }\n // Called when dropdown button clicked\n onDropdownClick(event) {\n // 🚫 stop the default dropdown behavior\n event.originalEvent.preventDefault();\n event.originalEvent.stopPropagation();\n console.log('Dropdown clicked!', event);\n // ✅ your custom code here\n // e.g., force trigger search for empty query\n this.search({ query: '' });\n }\n search(event) {\n const q = event.query?.toString().toLowerCase() || '';\n const lf = this.optionLabel;\n const fixedFilters = this.getFixedFilters();\n const filters = this.getFilters();\n if (this.to['offline']) {\n this.options_ = this.to['offlineDataFn']\n ? this.to['offlineDataFn'](q)\n : this._offlineList.filter(item => item[lf]?.toString().toLowerCase().includes(q));\n setTimeout(() => this.autoComp?.show(), 0);\n }\n else {\n this.loading = true;\n this.options_ = [];\n const searchParams = {\n ...fixedFilters\n };\n // Add query to main label\n searchParams[lf] = q;\n // Set all filter keys to the search query\n filters.forEach(key => {\n searchParams[key] = q;\n });\n // ✅ استخدام listEndpoint إذا كان موجودًا، وإلا العودة إلى الافتراضي\n let listEndpoint = this.props.listEndpoint;\n if (typeof listEndpoint === 'function') {\n listEndpoint = listEndpoint(this.model);\n }\n this.api.getList(searchParams, listEndpoint)\n .pipe(finalize(() => (this.loading = false)))\n .subscribe({\n next: (res) => {\n this.options_ = res.items ?? res ?? [];\n setTimeout(() => this.autoComp?.show(), 0);\n },\n error: () => {\n this.options_ = [];\n },\n });\n }\n }\n openCrud(mode) {\n const payload = mode === 'add' ? null : this.selectedItem;\n // Example integration:\n // const ref = this.dialog.open(CrudComponent, {\n // data: {\n // serviceName: this.to.serviceName,\n // mode,\n // record: payload\n // }\n // });\n // ref.onClose.subscribe((updated: any) => {\n // if (!this.to.multiple && updated?.[this.to.valueField]) {\n // this.api.get(updated[this.to.valueField])\n // .subscribe(item => {\n // this.selectedItem = item;\n // this.formControl.setValue(item?.[this.to.valueField]);\n // });\n // }\n // });\n }\n getEmptyMessage() {\n if (this.loading) {\n return 'LOADING_DATA_MESSAGE'; // مفتاح ترجمة لـ \"جاري تحميل البيانات...\"\n }\n else if (this.options_.length === 0) {\n return 'NO_RESULTS_FOUND'; // مفتاح ترجمة لـ \"لا توجد نتائج مطابقة.\"\n }\n return ''; // لا تُعرض رسالة إذا كانت هناك نتائج\n }\n isItemSelected(item) {\n const vf = this.to['valueField'] || 'id';\n return Array.isArray(this.selectedItem) &&\n this.selectedItem.some((sel) => sel[vf] === item[vf]);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSelectorTypeComponent, deps: [{ token: i1.BaseService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: GenericSelectorTypeComponent, isStandalone: true, selector: \"formly-generic-selector\", providers: [DialogService, BaseService], viewQueries: [{ propertyName: \"autoComp\", first: true, predicate: [\"autoComp\"], descendants: true }, { propertyName: \"dialog\", first: true, predicate: [\"dialog\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\r\n <!-- [ngStyle]=\"{'display': props.display ? 'block': 'none'}\" -->\r\n <p-inputGroup class=\"w-full\">\r\n <p-autoComplete\r\n #autoComp\r\n [ngModel]=\"selectedItem\"\r\n (ngModelChange)=\"onSelectionChange($event)\"\r\n [formlyAttributes]=\"field\"\r\n [suggestions]=\"options_\"\r\n (completeMethod)=\"search($event)\"\r\n [multiple]=\"to['multiple']\"\r\n [optionLabel]=\"optionLabel\"\r\n [dropdown]=\"false\"\r\n [forceSelection]=\"true\"\r\n [placeholder]=\"(props['placeholder'] ?? '') | translate\"\r\n [disabled]=\"!!props.disabled\"\r\n dropdownMode=\"current\"\r\n appendTo=\"body\"\r\n class=\"w-full rounded-none\"\r\n [showEmptyMessage]=\"true\"\r\n (onSelect)=\"onSelect($event)\"\r\n emptyMessage=\"{{ getEmptyMessage() | translate }}\"\r\n [showTransitionOptions]=\"'0ms'\"\r\n [showClear]=\"false\"\r\n\r\n (keydown.arrowdown)=\"onArrowDown($event)\"\r\n (keydown.escape)=\"onEscape($event)\"\r\n >\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"flex flex-col\">\r\n <span>{{ getPrimaryLabel(item) }}</span>\r\n\r\n </div>\r\n </ng-template>\r\n </p-autoComplete>\r\n\r\n <p-inputGroupAddon>\r\n <p-button\r\n tabindex=\"-1\"\r\n [disabled]=\"!!props.disabled || loading\"\r\n [icon]=\"loading ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\"\r\n (click)=\"onDropdownButtonClick()\"\r\n severity=\"secondary\" />\r\n </p-inputGroupAddon>\r\n <!-- Add new button -->\r\n @if (props.canAdd && props.formFields) {\r\n <p-inputGroupAddon>\r\n <p-button\r\n tabindex=\"-1\"\r\n [disabled]=\"!!props.disabled\"\r\n icon=\"pi pi-plus\"\r\n (click)=\"onAddNewClick()\"\r\n severity=\"primary\" />\r\n </p-inputGroupAddon>\r\n }\r\n</p-inputGroup>\r\n\r\n<!-- [model]=\"model\" -->\r\n <app-generic-dialog\r\n #dialog\r\n [formFields]=\"props.formFields ?? []\"\r\n [apiName]=\"props.serviceName\"\r\n [idField]=\"props.idField ??'id'\"\r\n [displayMode]=\"props.dialogDisplayMode ?? 'dialog'\"\r\n (afterSave)=\"afterSave($event)\"\r\n >\r\n </app-generic-dialog>\r\n\r\n\r\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"ngmodule\", type: AutoCompleteModule }, { kind: \"component\", type: i3.AutoComplete, selector: \"p-autoComplete, p-autocomplete, p-auto-complete\", inputs: [\"minLength\", \"minQueryLength\", \"delay\", \"panelStyle\", \"styleClass\", \"panelStyleClass\", \"inputStyle\", \"inputId\", \"inputStyleClass\", \"placeholder\", \"readonly\", \"scrollHeight\", \"lazy\", \"virtualScroll\", \"virtualScrollItemSize\", \"virtualScrollOptions\", \"autoHighlight\", \"forceSelection\", \"type\", \"autoZIndex\", \"baseZIndex\", \"ariaLabel\", \"dropdownAriaLabel\", \"ariaLabelledBy\", \"dropdownIcon\", \"unique\", \"group\", \"completeOnFocus\", \"showClear\", \"dropdown\", \"showEmptyMessage\", \"dropdownMode\", \"multiple\", \"tabindex\", \"dataKey\", \"emptyMessage\", \"showTransitionOptions\", \"hideTransitionOptions\", \"autofocus\", \"autocomplete\", \"optionGroupChildren\", \"optionGroupLabel\", \"overlayOptions\", \"suggestions\", \"optionLabel\", \"optionValue\", \"id\", \"searchMessage\", \"emptySelectionMessage\", \"selectionMessage\", \"autoOptionFocus\", \"selectOnFocus\", \"searchLocale\", \"optionDisabled\", \"focusOnHover\", \"typeahead\", \"appendTo\"], outputs: [\"completeMethod\", \"onSelect\", \"onUnselect\", \"onFocus\", \"onBlur\", \"onDropdownClick\", \"onClear\", \"onKeyUp\", \"onShow\", \"onHide\", \"onLazyLoad\"] }, { kind: \"directive\", type: i4.PrimeTemplate, selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: InputGroupModule }, { kind: \"component\", type: i5.InputGroup, selector: \"p-inputgroup, p-inputGroup, p-input-group\", inputs: [\"styleClass\"] }, { kind: \"ngmodule\", type: InputGroupAddonModule }, { kind: \"component\", type: i6.InputGroupAddon, selector: \"p-inputgroup-addon, p-inputGroupAddon\", inputs: [\"style\", \"styleClass\"] }, { kind: \"directive\", type: FormlyAttributes, selector: \"[formlyAttributes]\", inputs: [\"formlyAttributes\", \"id\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"ngmodule\", type: CheckboxModule }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"component\", type: i7.Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"raised\", \"rounded\", \"text\", \"plain\", \"severity\", \"outlined\", \"link\", \"tabindex\", \"size\", \"variant\", \"style\", \"styleClass\", \"badgeClass\", \"badgeSeverity\", \"ariaLabel\", \"buttonProps\", \"autofocus\", \"fluid\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { kind: \"component\", type: GenericDialogComponent, selector: \"app-generic-dialog\", inputs: [\"form\", \"service\", \"formFields\", \"model\", \"apiName\", \"idField\", \"dialogMaxWidth\", \"displayMode\", \"mode\", \"forceState\", \"drawerVisible\", \"dialogVisible\", \"isViewMode\", \"isEditMode\", \"useConfirmOnSave\", \"loading\", \"errorMsg\", \"errorMessage\", \"beforeSaveTransform\", \"hideTable\", \"autoShowForm\"], outputs: [\"action\", \"afterSave\", \"afterDelete\", \"beforeSave\", \"beforeDelete\", \"formCancel\", \"formInit\", \"dataLoaded\", \"selectionChange\", \"error\", \"visibleChange\"] }, { kind: \"pipe\", type: i8.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSelectorTypeComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'formly-generic-selector',\n template: `\r\n <!-- [ngStyle]=\"{'display': props.display ? 'block': 'none'}\" -->\r\n <p-inputGroup class=\"w-full\">\r\n <p-autoComplete\r\n #autoComp\r\n [ngModel]=\"selectedItem\"\r\n (ngModelChange)=\"onSelectionChange($event)\"\r\n [formlyAttributes]=\"field\"\r\n [suggestions]=\"options_\"\r\n (completeMethod)=\"search($event)\"\r\n [multiple]=\"to['multiple']\"\r\n [optionLabel]=\"optionLabel\"\r\n [dropdown]=\"false\"\r\n [forceSelection]=\"true\"\r\n [placeholder]=\"(props['placeholder'] ?? '') | translate\"\r\n [disabled]=\"!!props.disabled\"\r\n dropdownMode=\"current\"\r\n appendTo=\"body\"\r\n class=\"w-full rounded-none\"\r\n [showEmptyMessage]=\"true\"\r\n (onSelect)=\"onSelect($event)\"\r\n emptyMessage=\"{{ getEmptyMessage() | translate }}\"\r\n [showTransitionOptions]=\"'0ms'\"\r\n [showClear]=\"false\"\r\n\r\n (keydown.arrowdown)=\"onArrowDown($event)\"\r\n (keydown.escape)=\"onEscape($event)\"\r\n >\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"flex flex-col\">\r\n <span>{{ getPrimaryLabel(item) }}</span>\r\n\r\n </div>\r\n </ng-template>\r\n </p-autoComplete>\r\n\r\n <p-inputGroupAddon>\r\n <p-button\r\n tabindex=\"-1\"\r\n [disabled]=\"!!props.disabled || loading\"\r\n [icon]=\"loading ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\"\r\n (click)=\"onDropdownButtonClick()\"\r\n severity=\"secondary\" />\r\n </p-inputGroupAddon>\r\n <!-- Add new button -->\r\n @if (props.canAdd && props.formFields) {\r\n <p-inputGroupAddon>\r\n <p-button\r\n tabindex=\"-1\"\r\n [disabled]=\"!!props.disabled\"\r\n icon=\"pi pi-plus\"\r\n (click)=\"onAddNewClick()\"\r\n severity=\"primary\" />\r\n </p-inputGroupAddon>\r\n }\r\n</p-inputGroup>\r\n\r\n<!-- [model]=\"model\" -->\r\n <app-generic-dialog\r\n #dialog\r\n [formFields]=\"props.formFields ?? []\"\r\n [apiName]=\"props.serviceName\"\r\n [idField]=\"props.idField ??'id'\"\r\n [displayMode]=\"props.dialogDisplayMode ?? 'dialog'\"\r\n (afterSave)=\"afterSave($event)\"\r\n >\r\n </app-generic-dialog>\r\n\r\n\r\n `,\n providers: [DialogService, BaseService],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n AutoCompleteModule,\n CommonModule,\n InputGroupModule,\n InputGroupAddonModule,\n FormlyAttributes,\n TranslateModule,\n AutoComplete,\n CheckboxModule,\n ButtonModule,\n GenericDialogComponent\n ]\n }]\n }], ctorParameters: () => [{ type: i1.BaseService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { autoComp: [{\n type: ViewChild,\n args: ['autoComp']\n }], dialog: [{\n type: ViewChild,\n args: ['dialog']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1zZWxlY3Rvci9zcmMvbGliL2dlbmVyaWMtc2VsZWN0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBcUIsU0FBUyxFQUFFLGdCQUFnQixFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBTyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztB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YSxFQUFDLFdBQVcsQ0FBQywwT0F0RTVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxRVQsMkRBR0MsV0FBVyw4VkFDWCxtQkFBbUIsOEJBQ25CLGtCQUFrQixzeENBQ2xCLFlBQVksOEJBQ1osZ0JBQWdCLHlKQUNoQixxQkFBcUIsb0tBQ3JCLGdCQUFnQixrR0FDaEIsZUFBZSw4QkFFZixjQUFjLDhCQUNkLFlBQVksa2JBQ1osc0JBQXNCOzsyRkFHWiw0QkFBNEI7a0JBeEZ6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUVUO29CQUNELFNBQVMsRUFBRSxDQUFDLGFBQWEsRUFBQyxXQUFXLENBQUM7b0JBQ3RDLE9BQU8sRUFBQzt3QkFDTixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFlBQVk7d0JBQ1osc0JBQXNCO3FCQUN6QjtpQkFDQTt1SUFFd0IsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNBLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZpZWxkVHlwZSwgRm9ybWx5QXR0cmlidXRlcywgRmllbGRUeXBlQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbmFsaXplLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEF1dG9Db21wbGV0ZU1vZHVsZSwgQXV0b0NvbXBsZXRlIH0gZnJvbSAncHJpbWVuZy9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBJbnB1dEdyb3VwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dGdyb3VwJztcclxuaW1wb3J0IHsgSW5wdXRHcm91cEFkZG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dGdyb3VwYWRkb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L3ByaW1lbmcvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IENoZWNrYm94TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jaGVja2JveCc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBHZW5lcmljRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtZGlhbG9nJztcclxuXHJcbmludGVyZmFjZSBHZW5lcmljU2VsZWN0b3JQcm9wcyBleHRlbmRzIEZvcm1seUZpZWxkUHJvcHMvKiAsIEZvcm1seUZpZWxkU2VsZWN0UHJvcHMgKi8ge1xyXG4gIC8vIGFwcGVuZFRvPzogU2VsZWN0WydhcHBlbmRUbyddO1xyXG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XHJcbiAgbGlzdEVuZHBvaW50Pzogc3RyaW5nIHwgKChtb2RlbDogYW55KSA9PiBzdHJpbmcpO1xyXG4gIGxvYWREZWZhdWx0RmllbGQ/OiBzdHJpbmc7XHJcbiAgbG9hZERlZmF1bHRWYWx1ZT86IHN0cmluZztcclxuICBsb2FkRGVmYXVsdD86IGJvb2xlYW47XHJcblxyXG4gIGxhYmVsRmllbGQ/OiBzdHJpbmc7XHJcbiAgbGFiZWxGaWVsZEVuPzogc3RyaW5nO1xyXG4gIHZhbHVlRmllbGQ/OiBzdHJpbmc7XHJcbiAgdXNlTXVsdGlMYW5nPzogYm9vbGVhbjtcclxuXHJcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xyXG5cclxuICBkaXNwbGF5PzogYm9vbGVhbjtcclxuICBvZmZsaW5lPzogYm9vbGVhbjtcclxuXHJcbiAgbG9hZFNhdmVkPzogYm9vbGVhbjtcclxuICBsb2FkU2F2ZWRGaWVsZD86IHN0cmluZztcclxuXHJcblxyXG4gIC8qKiBTdGF0aWMgb2ZmbGluZSBpdGVtcyAoYXJyYXkgb2Ygb2JqZWN0cykgKi9cclxuICBvZmZsaW5lSXRlbXM/OiBhbnlbXTtcclxuXHJcbiAgLyoqIEFzeW5jIG9mZmxpbmUgaXRlbXMgKG9ic2VydmFibGUpICovXHJcbiAgb2ZmbGluZUl0ZW1zJD86IE9ic2VydmFibGU8YW55W10+O1xyXG5cclxuICAvKiogRnVuY3Rpb24tYmFzZWQgZmlsdGVyIGZvciBvZmZsaW5lIGl0ZW1zICovXHJcbiAgb25TZWxlY3Q/OiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLCBldmVudD86IGFueSkgPT4gdm9pZDtcclxuXHJcbiAgb2ZmbGluZURhdGFGbj86IChxdWVyeT86IHN0cmluZykgPT4gYW55W107XHJcbiAgZmlsdGVycz86IFJlY29yZDxzdHJpbmcsIGFueT4gfCBzdHJpbmdbXTtcclxuICAgZml4ZWRGaWx0ZXJzPzogUmVjb3JkPHN0cmluZywgYW55PjtcclxuICAgIGRlZmF1bHRWYWx1ZT86IGFueTsgICAgICAgLy8gaWQg2KPZiCBhcnJheSBvZiBpZHNcclxuICBkZWZhdWx0SXRlbT86IGFueTsgICAgICAgIC8vINin2YTZg9in2KbZhiDZg9in2YXZhCAob2JqZWN0KSDYpdiw2Kcg2LnZhtiv2YMg2KzYp9mH2LJcclxuXHJcbiAgdmlld1Blcm1pc3Npb25OYW1lPzogc3RyaW5nO1xyXG4gIGVkaXRQZXJtaXNzaW9uTmFtZT86IHN0cmluZztcclxuICBhZGRQZXJtaXNzaW9uTmFtZT86IHN0cmluZztcclxuICBpZEZpZWxkPzogc3RyaW5nO1xyXG4gIGRpYWxvZ0Rpc3BsYXlNb2RlPzogIHwgJ2RyYXdlcidcclxuICAgIHwgJ2RpYWxvZydcclxuICAgIHwgJ3JvdXRlJ1xyXG4gICAgfCAnaW5saW5lJ1xyXG4gICAgfCBQYXJ0aWFsPFxyXG4gICAgICBSZWNvcmQ8XHJcbiAgICAgICAgJ2FkZCcgfCAnZWRpdCcgfCAndmlldycsXHJcbiAgICAgICAgJ2RyYXdlcicgfCAnZGlhbG9nJyB8ICdyb3V0ZScgfCAnaW5saW5lJ1xyXG4gICAgICA+PjtcclxuICBjYW5BZGQ/OiBib29sZWFuO1xyXG4gIGNhbkxvb2t1cD86IGJvb2xlYW47XHJcbiAgZm9ybUZpZWxkcz86ICBGb3JtbHlGaWVsZENvbmZpZ1tdO1xyXG4gIGFmdGVyU2F2ZT86IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcsIGV2ZW50PzogYW55KSA9PiB2b2lkO1xyXG5cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmb3JtbHktZ2VuZXJpYy1zZWxlY3RvcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICA8IS0tIFtuZ1N0eWxlXT1cInsnZGlzcGxheSc6IHByb3BzLmRpc3BsYXkgPyAnYmxvY2snOiAnbm9uZSd9XCIgLS0+XHJcbiA8cC1pbnB1dEdyb3VwICAgY2xhc3M9XCJ3LWZ1bGxcIj5cclxuICA8cC1hdXRvQ29tcGxldGVcclxuICAgICNhdXRvQ29tcFxyXG4gICAgW25nTW9kZWxdPVwic2VsZWN0ZWRJdGVtXCJcclxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxyXG4gICAgW3N1Z2dlc3Rpb25zXT1cIm9wdGlvbnNfXCJcclxuICAgIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiXHJcbiAgICBbbXVsdGlwbGVdPVwidG9bJ211bHRpcGxlJ11cIlxyXG4gICAgW29wdGlvbkxhYmVsXT1cIm9wdGlvbkxhYmVsXCJcclxuICAgIFtkcm9wZG93bl09XCJmYWxzZVwiXHJcbiAgICBbZm9yY2VTZWxlY3Rpb25dPVwidHJ1ZVwiXHJcbiAgICBbcGxhY2Vob2xkZXJdPVwiKHByb3BzWydwbGFjZWhvbGRlciddID8/ICcnKSB8IHRyYW5zbGF0ZVwiXHJcbiAgICBbZGlzYWJsZWRdPVwiISFwcm9wcy5kaXNhYmxlZFwiXHJcbiAgICBkcm9wZG93bk1vZGU9XCJjdXJyZW50XCJcclxuICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICBjbGFzcz1cInctZnVsbCByb3VuZGVkLW5vbmVcIlxyXG4gICAgW3Nob3dFbXB0eU1lc3NhZ2VdPVwidHJ1ZVwiXHJcbiAgICAob25TZWxlY3QpPVwib25TZWxlY3QoJGV2ZW50KVwiXHJcbiAgICBlbXB0eU1lc3NhZ2U9XCJ7eyBnZXRFbXB0eU1lc3NhZ2UoKSB8IHRyYW5zbGF0ZSB9fVwiXHJcbiAgICBbc2hvd1RyYW5zaXRpb25PcHRpb25zXT1cIicwbXMnXCJcclxuICAgIFtzaG93Q2xlYXJdPVwiZmFsc2VcIlxyXG5cclxuICAgICAoa2V5ZG93bi5hcnJvd2Rvd24pPVwib25BcnJvd0Rvd24oJGV2ZW50KVwiXHJcbiAgKGtleWRvd24uZXNjYXBlKT1cIm9uRXNjYXBlKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwiaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICA8c3Bhbj57eyBnZXRQcmltYXJ5TGFiZWwoaXRlbSkgfX08L3NwYW4+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC1hdXRvQ29tcGxldGU+XHJcblxyXG4gIDxwLWlucHV0R3JvdXBBZGRvbj5cclxuICAgIDxwLWJ1dHRvblxyXG4gICAgICB0YWJpbmRleD1cIi0xXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIiEhcHJvcHMuZGlzYWJsZWQgfHwgbG9hZGluZ1wiXHJcbiAgICAgIFtpY29uXT1cImxvYWRpbmcgPyAncGkgcGktc3Bpbm5lciBwaS1zcGluJyA6ICdwaSBwaS1jaGV2cm9uLWRvd24nXCJcclxuICAgICAgKGNsaWNrKT1cIm9uRHJvcGRvd25CdXR0b25DbGljaygpXCJcclxuICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIiAvPlxyXG4gIDwvcC1pbnB1dEdyb3VwQWRkb24+XHJcbiAgPCEtLSBBZGQgbmV3IGJ1dHRvbiAtLT5cclxuICAgQGlmIChwcm9wcy5jYW5BZGQgJiYgcHJvcHMuZm9ybUZpZWxkcykge1xyXG4gIDxwLWlucHV0R3JvdXBBZGRvbj5cclxuICAgIDxwLWJ1dHRvblxyXG4gICAgICB0YWJpbmRleD1cIi0xXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIiEhcHJvcHMuZGlzYWJsZWRcIlxyXG4gICAgICBpY29uPVwicGkgcGktcGx1c1wiXHJcbiAgICAgIChjbGljayk9XCJvbkFkZE5ld0NsaWNrKClcIlxyXG4gICAgICBzZXZlcml0eT1cInByaW1hcnlcIiAvPlxyXG4gIDwvcC1pbnB1dEdyb3VwQWRkb24+XHJcbiAgIH1cclxuPC9wLWlucHV0R3JvdXA+XHJcblxyXG48IS0tIFttb2RlbF09XCJtb2RlbFwiIC0tPlxyXG4gIDxhcHAtZ2VuZXJpYy1kaWFsb2dcclxuICAgICNkaWFsb2dcclxuICAgIFtmb3JtRmllbGRzXT1cInByb3BzLmZvcm1GaWVsZHMgPz8gW11cIlxyXG4gICAgW2FwaU5hbWVdPVwicHJvcHMuc2VydmljZU5hbWVcIlxyXG4gICAgW2lkRmllbGRdPVwicHJvcHMuaWRGaWVsZCA/PydpZCdcIlxyXG4gICAgW2Rpc3BsYXlNb2RlXT1cInByb3BzLmRpYWxvZ0Rpc3BsYXlNb2RlID8/ICdkaWFsb2cnXCJcclxuICAgIChhZnRlclNhdmUpPVwiYWZ0ZXJTYXZlKCRldmVudClcIlxyXG4gID5cclxuICA8L2FwcC1nZW5lcmljLWRpYWxvZz5cclxuXHJcblxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbRGlhbG9nU2VydmljZSxCYXNlU2VydmljZV0sXHJcbiAgaW1wb3J0czpbXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBBdXRvQ29tcGxldGVNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBJbnB1dEdyb3VwTW9kdWxlLFxyXG4gICAgSW5wdXRHcm91cEFkZG9uTW9kdWxlLFxyXG4gICAgRm9ybWx5QXR0cmlidXRlcyxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIEF1dG9Db21wbGV0ZSxcclxuICAgIENoZWNrYm94TW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgR2VuZXJpY0RpYWxvZ0NvbXBvbmVudFxyXG5dXHJcbn0pXHJcbmV4cG9ydCAgY2xhc3MgR2VuZXJpY1NlbGVjdG9yVHlwZUNvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8R2VuZXJpY1NlbGVjdG9yUHJvcHM+PiBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2F1dG9Db21wJykgYXV0b0NvbXAhOiBBdXRvQ29tcGxldGU7XHJcbiAgQFZpZXdDaGlsZCgnZGlhbG9nJykgZGlhbG9nITogR2VuZXJpY0RpYWxvZ0NvbXBvbmVudDtcclxuICBvcHRpb25zXzogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZEl0ZW06IGFueTtcclxuXHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX29mZmxpbmVMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZT0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG5cclxuICBhcGk6IEJhc2VTZXJ2aWNlfGFueTtcclxuIHByaXZhdGUgdmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247IC8vIEFkZCBhIHN1YnNjcmlwdGlvbiB0byBtYW5hZ2UgdGhlIG9ic2VydmFibGVcclxuXHJcbmdldCBvcHRpb25MYWJlbCgpOiBzdHJpbmcge1xyXG4gIGlmKHRoaXMudG8udXNlTXVsdGlMYW5nID09IHRydWUpe1xyXG4gICAgIGlmKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyA9PSAnZW4nKXtcclxuICAgICByZXR1cm4gdGhpcy50bz8ubGFiZWxGaWVsZEVuIHx8ICduYW1lJztcclxuICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLnRvPy5sYWJlbEZpZWxkIHx8ICduYW1lJztcclxuICB9XHJcbiAgcmV0dXJuIHRoaXMudG8/LmxhYmVsRmllbGQgfHwgJ25hbWUnO1xyXG59XHJcblxyXG5wcml2YXRlIGlzTnVsbE9yRW1wdHkodmFsOiBhbnkpOiBib29sZWFuIHtcclxuICByZXR1cm4gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkIHx8IHZhbCA9PT0gJyc7XHJcbn1cclxuXHJcbmdldFByaW1hcnlMYWJlbChpdGVtOiBhbnkpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGZpZWxkcyA9IFtcclxuICAgIHRoaXMub3B0aW9uTGFiZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNvbHZlZCBmaWVsZCBuYW1lIGZyb20gZ2V0dGVyXHJcbiAgICB0aGlzLnRvLmxhYmVsRmllbGQgfHwgJ25hbWUnLFxyXG4gICAgdGhpcy50by5sYWJlbEZpZWxkRW4gfHwgJ25hbWUnXHJcbiAgXTtcclxuXHJcbiAgZm9yIChjb25zdCBmIG9mIGZpZWxkcykge1xyXG4gICAgY29uc3QgdiA9IGl0ZW1bZl07XHJcbiAgICBpZiAoIXRoaXMuaXNOdWxsT3JFbXB0eSh2KSkge1xyXG4gICAgICByZXR1cm4gdjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiAnJztcclxufVxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdmM6IEJhc2VTZXJ2aWNlLHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgfVxyXG5cclxuICAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmFwaSA9IHRoaXMuc3ZjO1xyXG4gICAgY29uc3QgdG8gPSB0aGlzLnByb3BzO1xyXG4gICAgdGhpcy5hcGkuYXBpTmFtZSA9IHRvWydzZXJ2aWNlTmFtZSddO1xyXG5cclxuICAgIGlmICh0b1snb2ZmbGluZSddKSB7XHJcbiAgICAgIGlmICh0b1snb2ZmbGluZURhdGFGbiddKSB7XHJcbiAgICAgICAgdGhpcy5fb2ZmbGluZUxpc3QgPSB0b1snb2ZmbGluZURhdGFGbiddKCk7XHJcbiAgICAgICAgdGhpcy5pbml0T2ZmbGluZVNlbGVjdGlvbigpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRvWydvZmZsaW5lSXRlbXMkJ10pIHtcclxuICAgICAgICB0b1snb2ZmbGluZUl0ZW1zJCddLnN1YnNjcmliZSgobGlzdDogYW55W10pID0+IHtcclxuICAgICAgICAgIHRoaXMuX29mZmxpbmVMaXN0ID0gbGlzdDtcclxuICAgICAgICAgIHRoaXMuaW5pdE9mZmxpbmVTZWxlY3Rpb24oKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLl9vZmZsaW5lTGlzdCA9IHRvWydvZmZsaW5lSXRlbXMnXSB8fCBbXTtcclxuICAgICAgICB0aGlzLmluaXRPZmZsaW5lU2VsZWN0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgaWYgKHRoaXMucHJvcHMubG9hZFNhdmVkICYmICF0aGlzLnByb3BzLm11bHRpcGxlICYmIHRoaXMucHJvcHMubG9hZFNhdmVkRmllbGQgJiYgdGhpcy5wcm9wcy52YWx1ZUZpZWxkKSB7XHJcbiAgICAgICAgICBjb25zdCB2ZiA9IHRoaXMudG9bJ3ZhbHVlRmllbGQnXSB8fCAnaWQnO1xyXG4gICAgICAgICAgY29uc3QgbGYgPSB0aGlzLm9wdGlvbkxhYmVsO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBbdmZdOnRoaXMuZm9ybUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIFtsZl06dGhpcy5tb2RlbFt0aGlzLnByb3BzLmxvYWRTYXZlZEZpZWxkXSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5jaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5jaGFuZ2UodGhpcy5maWVsZCwgeyBpdGVtOiB0aGlzLnNlbGVjdGVkSXRlbSB9KTtcclxuICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgIH1cclxuICAgICAgIGVsc2V7XHJcblxyXG4gICAgICAgICB0aGlzLmluaXRPbmxpbmVTZWxlY3Rpb24oKTtcclxuICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBTdWJzY3JpYmUgdG8gZm9ybUNvbnRyb2wgdmFsdWUgY2hhbmdlc1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgLy8gVGhpcyB0YXAgb3BlcmF0b3IgaXMgYSBnb29kIHBsYWNlIHRvIHJ1biBzaWRlIGVmZmVjdHNcclxuICAgICAgICAgIC8vIGxpa2UgY2FsbGluZyB5b3VyIGNoYW5nZSBoYW5kbGVyIGFmdGVyIGEgdmFsdWUgY2hhbmdlcy5cclxuICAgICAgICAgIC8vIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIGlmICh0aGlzLnByb3BzLmNoYW5nZSkge1xyXG4gICAgICAgICAgaWYgKHRvWydvZmZsaW5lJ10pIHtcclxuICAgICAgaWYgKHRvWydvZmZsaW5lRGF0YUZuJ10pIHtcclxuICAgICAgICB0aGlzLl9vZmZsaW5lTGlzdCA9IHRvWydvZmZsaW5lRGF0YUZuJ10oKTtcclxuICAgICAgICB0aGlzLmluaXRPZmZsaW5lU2VsZWN0aW9uKGZhbHNlKTtcclxuICAgICAgfSBlbHNlIGlmICh0b1snb2ZmbGluZUl0ZW1zJCddKSB7XHJcbiAgICAgICAgdG9bJ29mZmxpbmVJdGVtcyQnXS5zdWJzY3JpYmUoKGxpc3Q6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9vZmZsaW5lTGlzdCA9IGxpc3Q7XHJcbiAgICAgICAgICB0aGlzLmluaXRPZmZsaW5lU2VsZWN0aW9uKGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLl9vZmZsaW5lTGlzdCA9IHRvWydvZmZsaW5lSXRlbXMnXSB8fCBbXTtcclxuICAgICAgICB0aGlzLmluaXRPZmZsaW5lU2VsZWN0aW9uKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbml0T25saW5lU2VsZWN0aW9uKGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgO1xyXG4gIH1cclxuXHJcbiAgLy8gUmVtZW1iZXIgdG8gdW5zdWJzY3JpYmUgdG8gcHJldmVudCBtZW1vcnkgbGVha3MhXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy52YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5wcml2YXRlIGxvYWREZWZhdWx0VmFsdWUoKSB7XHJcbiAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHZmID0gdGhpcy50b1sndmFsdWVGaWVsZCddIHx8ICdpZCc7XHJcbiAgICBjb25zdCBmaXhlZEZpbHRlcnMgPSB0aGlzLmdldEZpeGVkRmlsdGVycygpO1xyXG4gICAgIGNvbnN0IGxmID0gdGhpcy50b1snbG9hZERlZmF1bHRGaWVsZCddIHx8ICdpc0RlZmF1bHQnO1xyXG4gICAgIGNvbnN0IGxmVmFsdWUgPSB0aGlzLnRvWydsb2FkRGVmYXVsdFZhbHVlJ10gfHwgdHJ1ZTtcclxuY29uc3Qgc2VhcmNoUGFyYW1zID0ge1xyXG4gICAgIFtsZl06IGxmVmFsdWUsXHJcbiAgICAgIC4uLmZpeGVkRmlsdGVycyxcclxuICAgIH07XHJcbiAgdGhpcy5hcGkuZ2V0TGlzdChzZWFyY2hQYXJhbXMpXHJcbiAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gQXNzdW1pbmcgdGhlIEFQSSByZXR1cm5zIGEgbGlzdCBhbmQgeW91IHdhbnQgdG8gc2VsZWN0IHRoZSBmaXJzdCBvbmVcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5pdGVtcyAmJiByZXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMudG9bJ211bHRpcGxlJ10pe1xyXG4gICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUocmVzLml0ZW1zLm1hcCgoYzogYW55KSA9PiBjW3ZmXSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHJlcy5pdGVtc1swXTtcclxuICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoZGVmYXVsdFZhbHVlPy5bdmZdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgLy8gdGhpcy5pbml0T25saW5lU2VsZWN0aW9uKCk7IC8vIFByb2NlZWQgd2l0aCBvbmxpbmUgc2VsZWN0aW9uIGFmdGVyIHNldHRpbmcgdGhlIHZhbHVlXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGxvYWQgZGVmYXVsdCB2YWx1ZSBmcm9tIEFQSTpcIiwgZXJyKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAvLyB0aGlzLmluaXRPbmxpbmVTZWxlY3Rpb24oKTsgLy8gRmFsbGJhY2sgdG8gbG9jYWwgc2VsZWN0aW9uIGlmIEFQSSBmYWlsc1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxufVxyXG4gICAgLy8gTmV3IG1ldGhvZCB0byBoYW5kbGUgbG9hZGluZyB0aGUgZGVmYXVsdCB2YWx1ZSBmcm9tIHRoZSBBUElcclxuXHJcbiAgICBhZnRlclNhdmUoZXZlbnQ6IGFueSkge1xyXG4gICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlKGV2ZW50LnJlY29yZCk7XHJcbiAgIGlmICh0aGlzLnByb3BzLmFmdGVyU2F2ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnByb3BzLmFmdGVyU2F2ZSh0aGlzLmZpZWxkLCB7IGl0ZW06IGV2ZW50LnJlc3BvbnNlIH0pO1xyXG4gICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG59XHJcblxyXG4gICAgb25TZWxlY3QoZXZlbnQ6IGFueSkge1xyXG5cclxuICAgaWYgKHRoaXMucHJvcHMub25TZWxlY3QpIHtcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdCh0aGlzLmZpZWxkLCB7IGl0ZW06IGV2ZW50LnZhbHVlIH0pO1xyXG4gICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG59XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlKHZhbDogYW55KSB7XHJcbiAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB2YWw7XHJcblxyXG4gIGNvbnN0IHZmID0gdGhpcy50b1sndmFsdWVGaWVsZCddIHx8ICdpZCc7XHJcblxyXG4gIGlmICh0aGlzLnRvWydtdWx0aXBsZSddKSB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKFxyXG4gICAgICBBcnJheS5pc0FycmF5KHZhbCkgPyB2YWwubWFwKChjOiBhbnkpID0+IGNbdmZdKSA6IFtdXHJcbiAgICApO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbD8uW3ZmXSA/PyBudWxsKTtcclxuICB9XHJcbn1cclxuICBwcml2YXRlIGluaXRPZmZsaW5lU2VsZWN0aW9uKHdpdGhTZXRWYWx1ZT10cnVlKSB7XHJcbiAgICBjb25zdCB2YWwgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgY29uc3QgdmYgPSB0aGlzLnRvWyd2YWx1ZUZpZWxkJ10gfHwgJ2lkJztcclxuXHJcbiAgICBpZiAodmFsID09IG51bGwpIHJldHVybjtcclxuXHJcbiAgICBpZiAodGhpcy50b1snbXVsdGlwbGUnXSAmJiBBcnJheS5pc0FycmF5KHZhbCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLl9vZmZsaW5lTGlzdC5maWx0ZXIoaXRlbSA9PlxyXG4gICAgICAgIHZhbC5pbmNsdWRlcyhpdGVtW3ZmXSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5fb2ZmbGluZUxpc3QuZmluZChpdGVtID0+IGl0ZW1bdmZdID09PSB2YWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHdpdGhTZXRWYWx1ZSA9PSB0cnVlKXtcclxuXHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKFxyXG4gICAgICB0aGlzLnRvWydtdWx0aXBsZSddXHJcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkSXRlbS5tYXAoKGM6IGFueSkgPT4gY1t2Zl0pXHJcbiAgICAgICAgOiB0aGlzLnNlbGVjdGVkSXRlbT8uW3ZmXVxyXG4gICAgKTtcclxuICB9XHJcbiAgZWxzZXtcclxuICAgIGlmICh0aGlzLnByb3BzLmNoYW5nZSkge1xyXG4gICAgICAgICAgICB0aGlzLnByb3BzLmNoYW5nZSh0aGlzLmZpZWxkLCB7IGl0ZW06IHRoaXMuc2VsZWN0ZWRJdGVtIH0pO1xyXG4gICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdE9ubGluZVNlbGVjdGlvbih3aXRoU2V0VmFsdWUgPSB0cnVlKSB7XHJcbiAgY29uc3QgdmFsID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcclxuICBjb25zdCB2ZiA9IHRoaXMudG9bJ3ZhbHVlRmllbGQnXSB8fCAnaWQnO1xyXG5cclxuICBpZiAodmFsID09IG51bGwgfHwgKEFycmF5LmlzQXJyYXkodmFsKSAmJiB2YWwubGVuZ3RoID09PSAwKSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLnRvWydtdWx0aXBsZSddID8gW10gOiBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLnByb3BzWydsb2FkRGVmYXVsdCddID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMubG9hZERlZmF1bHRWYWx1ZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaWYgKHRoaXMudG9bJ211bHRpcGxlJ10gJiYgQXJyYXkuaXNBcnJheSh2YWwpICYmIHZhbC5sZW5ndGgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgZml4ZWRGaWx0ZXJzID0gdGhpcy5nZXRGaXhlZEZpbHRlcnMoKTtcclxuXHJcbiAgICAvLyDwn5SRIG9uZSBnZXRMaXN0IGNhbGwgcGVyIGlkLCBidXQgaW5jbHVkZSBmaXhlZEZpbHRlcnMgaW4gZWFjaFxyXG4gICAgY29uc3QgY2FsbHMgPSB2YWwubWFwKChpZDogYW55KSA9PlxyXG4gICAgICB0aGlzLmFwaS5nZXRMaXN0KHsgLi4uZml4ZWRGaWx0ZXJzLCBbdmZdOiBpZCB9KS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzOiBhbnkpID0+IChyZXM/Lml0ZW1zPy5sZW5ndGggPyByZXMuaXRlbXNbMF0gOiBudWxsKSlcclxuICAgICAgKVxyXG4gICAgKTtcclxuXHJcbiAgICBmb3JrSm9pbihjYWxscylcclxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gKHRoaXMubG9hZGluZyA9IGZhbHNlKSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChpdGVtczogYW55W10pID0+IHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbXMuZmlsdGVyKGkgPT4gaSAhPSBudWxsKTtcclxuXHJcbiAgICAgICAgICBpZiAod2l0aFNldFZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZEl0ZW0ubWFwKChjOiBhbnkpID0+IGNbdmZdKSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuY2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuY2hhbmdlKHRoaXMuZmllbGQsIHsgaXRlbTogdGhpcy5zZWxlY3RlZEl0ZW0gfSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxvYWQgbXVsdGlwbGUgc2VsZWN0aW9uczonLCBlcnIpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBbXTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IGZpeGVkRmlsdGVycyA9IHRoaXMuZ2V0Rml4ZWRGaWx0ZXJzKCk7XHJcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSB7IC4uLmZpeGVkRmlsdGVycywgW3ZmXTogdmFsIH07XHJcblxyXG4gICAgdGhpcy5hcGlcclxuICAgICAgLmdldExpc3Qoc2VhcmNoUGFyYW1zKVxyXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpdGVtID0gcmVzPy5pdGVtcz8uWzBdIHx8IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XHJcblxyXG4gICAgICAgICAgaWYgKHdpdGhTZXRWYWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGl0ZW0/Llt2Zl0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLmNoYW5nZSkge1xyXG4gICAgICAgICAgICB0aGlzLnByb3BzLmNoYW5nZSh0aGlzLmZpZWxkLCB7IGl0ZW06IHRoaXMuc2VsZWN0ZWRJdGVtIH0pO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIHNlbGVjdGlvbjonLCBlcnIpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuZ2V0Rml4ZWRGaWx0ZXJzKCk6IGFueSB7XHJcbiAgY29uc3QgZml4ZWRGaWx0ZXJzID0gdGhpcy50b1snZml4ZWRGaWx0ZXJzJ107XHJcblxyXG4gIGlmICh0eXBlb2YgZml4ZWRGaWx0ZXJzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAvLyBDYWxsIHdpdGggY3VycmVudCBtb2RlbCAoYW5kIG9wdGlvbmFsbHkgZmllbGQpXHJcbiAgICByZXR1cm4gZml4ZWRGaWx0ZXJzKHRoaXMubW9kZWwpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZpeGVkRmlsdGVycyB8fCB7fTtcclxufVxyXG5nZXRGaWx0ZXJzKCk6IHN0cmluZ1tdIHtcclxuICBsZXQgZmlsdGVycyA9IHRoaXMudG9bJ2ZpbHRlcnMnXTtcclxuXHJcbiAgaWYgKHR5cGVvZiBmaWx0ZXJzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICBmaWx0ZXJzID0gZmlsdGVycyh0aGlzLm1vZGVsKTtcclxuICB9XHJcblxyXG4gIGlmICghZmlsdGVycykgcmV0dXJuIFtdO1xyXG5cclxuICAvLyBJZiBpdCdzIGFuIG9iamVjdCwgcmV0dXJuIGl0cyBrZXlzXHJcbiAgaWYgKCFBcnJheS5pc0FycmF5KGZpbHRlcnMpKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZmlsdGVycyk7XHJcbiAgfVxyXG5cclxuICAvLyBBbHJlYWR5IGFuIGFycmF5XHJcbiAgcmV0dXJuIGZpbHRlcnM7XHJcbn1cclxub25BcnJvd0Rvd24oZXZlbnQ6IGFueSkge1xyXG4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIC8vIHRoaXMuYXV0b0NvbXAuc2hvdygpO1xyXG50aGlzLm9uRHJvcGRvd25CdXR0b25DbGljaygpO1xyXG59XHJcblxyXG5vbkVzY2FwZShldmVudDogYW55KSB7XHJcbiAgdGhpcy5hdXRvQ29tcC5oaWRlKCk7XHJcblxyXG59XHJcbm9uQWRkTmV3Q2xpY2soKSB7XHJcbiAgLy8geW91ciBsb2dpYyBmb3IgYWRkaW5nIGEgbmV3IGl0ZW1cclxuICAvLyBlLmcuIG9wZW4gZGlhbG9nIG9yIGVtaXQgZXZlbnRcclxuICBjb25zb2xlLmxvZygnQWRkIG5ldyBpdGVtIGNsaWNrZWQnKTtcclxuICB0aGlzLmRpYWxvZy5vcGVuRm9ybShcImNyZWF0ZVwiKTtcclxufVxyXG5vbkRyb3Bkb3duQnV0dG9uQ2xpY2soKSB7XHJcbiAgdGhpcy5zZWFyY2goeyBxdWVyeTogJycgfSk7ICAgLy8gdHJpZ2dlciB5b3VyIG93biBzZWFyY2hcclxuICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYXV0b0NvbXAuc2hvdygpLCAwKTsgLy8gZm9yY2UgZHJvcGRvd24gdG8gb3BlblxyXG59XHJcbi8vIENhbGxlZCB3aGVuIGRyb3Bkb3duIGJ1dHRvbiBjbGlja2VkXHJcbiAgb25Ecm9wZG93bkNsaWNrKGV2ZW50OiBhbnkpIHtcclxuICAgIC8vIPCfmqsgc3RvcCB0aGUgZGVmYXVsdCBkcm9wZG93biBiZWhhdmlvclxyXG4gIGV2ZW50Lm9yaWdpbmFsRXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICBldmVudC5vcmlnaW5hbEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKCdEcm9wZG93biBjbGlja2VkIScsIGV2ZW50KTtcclxuICAgIC8vIOKchSB5b3VyIGN1c3RvbSBjb2RlIGhlcmVcclxuICAgIC8vIGUuZy4sIGZvcmNlIHRyaWdnZXIgc2VhcmNoIGZvciBlbXB0eSBxdWVyeVxyXG4gICAgdGhpcy5zZWFyY2goeyBxdWVyeTogJycgfSk7XHJcbiAgfVxyXG5cclxuc2VhcmNoKGV2ZW50OiB7IHF1ZXJ5OiBzdHJpbmcgfSkge1xyXG4gIGNvbnN0IHEgPSBldmVudC5xdWVyeT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIHx8ICcnO1xyXG4gIGNvbnN0IGxmID0gdGhpcy5vcHRpb25MYWJlbDtcclxuICBjb25zdCBmaXhlZEZpbHRlcnMgPSB0aGlzLmdldEZpeGVkRmlsdGVycygpO1xyXG4gIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcnMoKTtcclxuXHJcbiAgaWYgKHRoaXMudG9bJ29mZmxpbmUnXSkge1xyXG4gICAgdGhpcy5vcHRpb25zXyA9IHRoaXMudG9bJ29mZmxpbmVEYXRhRm4nXVxyXG4gICAgICA/IHRoaXMudG9bJ29mZmxpbmVEYXRhRm4nXShxKVxyXG4gICAgICA6IHRoaXMuX29mZmxpbmVMaXN0LmZpbHRlcihpdGVtID0+XHJcbiAgICAgICAgICBpdGVtW2xmXT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYXV0b0NvbXA/LnNob3coKSwgMCk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm9wdGlvbnNfID0gW107XHJcblxyXG4gICAgICBjb25zdCBzZWFyY2hQYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgIC4uLmZpeGVkRmlsdGVyc1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBBZGQgcXVlcnkgdG8gbWFpbiBsYWJlbFxyXG4gICAgc2VhcmNoUGFyYW1zW2xmXSA9IHE7XHJcblxyXG4gICAgLy8gU2V0IGFsbCBmaWx0ZXIga2V5cyB0byB0aGUgc2VhcmNoIHF1ZXJ5XHJcbiAgICBmaWx0ZXJzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgc2VhcmNoUGFyYW1zW2tleV0gPSBxO1xyXG4gICAgfSk7XHJcblxyXG4gICAgICAvLyDinIUg2KfYs9iq2K7Yr9in2YUgbGlzdEVuZHBvaW50INil2LDYpyDZg9in2YYg2YXZiNis2YjYr9mL2KfYjCDZiNil2YTYpyDYp9mE2LnZiNiv2Kkg2KXZhNmJINin2YTYp9mB2KrYsdin2LbZilxyXG4gICAgbGV0IGxpc3RFbmRwb2ludCA9IHRoaXMucHJvcHMubGlzdEVuZHBvaW50O1xyXG4gICBpZiAodHlwZW9mIGxpc3RFbmRwb2ludCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgbGlzdEVuZHBvaW50ID0gbGlzdEVuZHBvaW50KHRoaXMubW9kZWwpO1xyXG4gICB9XHJcblxyXG4gICAgdGhpcy5hcGkuZ2V0TGlzdChzZWFyY2hQYXJhbXMgLCBsaXN0RW5kcG9pbnQpXHJcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+ICh0aGlzLmxvYWRpbmcgPSBmYWxzZSkpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9uc18gPSByZXMuaXRlbXMgPz8gcmVzID8/IFtdO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmF1dG9Db21wPy5zaG93KCksIDApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9uc18gPSBbXTtcclxuXHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG4gIG9wZW5DcnVkKG1vZGU6ICdhZGQnIHwgJ2VkaXQnIHwgJ2luZm8nKSB7XHJcbiAgICBjb25zdCBwYXlsb2FkID0gbW9kZSA9PT0gJ2FkZCcgPyBudWxsIDogdGhpcy5zZWxlY3RlZEl0ZW07XHJcblxyXG4gICAgLy8gRXhhbXBsZSBpbnRlZ3JhdGlvbjpcclxuICAgIC8vIGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ3J1ZENvbXBvbmVudCwge1xyXG4gICAgLy8gICBkYXRhOiB7XHJcbiAgICAvLyAgICAgc2VydmljZU5hbWU6IHRoaXMudG8uc2VydmljZU5hbWUsXHJcbiAgICAvLyAgICAgbW9kZSxcclxuICAgIC8vICAgICByZWNvcmQ6IHBheWxvYWRcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyByZWYub25DbG9zZS5zdWJzY3JpYmUoKHVwZGF0ZWQ6IGFueSkgPT4ge1xyXG4gICAgLy8gICBpZiAoIXRoaXMudG8ubXVsdGlwbGUgJiYgdXBkYXRlZD8uW3RoaXMudG8udmFsdWVGaWVsZF0pIHtcclxuICAgIC8vICAgICB0aGlzLmFwaS5nZXQodXBkYXRlZFt0aGlzLnRvLnZhbHVlRmllbGRdKVxyXG4gICAgLy8gICAgICAgLnN1YnNjcmliZShpdGVtID0+IHtcclxuICAgIC8vICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtO1xyXG4gICAgLy8gICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGl0ZW0/Llt0aGlzLnRvLnZhbHVlRmllbGRdKTtcclxuICAgIC8vICAgICAgIH0pO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRFbXB0eU1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmxvYWRpbmcpIHtcclxuICAgICAgcmV0dXJuICdMT0FESU5HX0RBVEFfTUVTU0FHRSc7IC8vINmF2YHYqtin2K0g2KrYsdis2YXYqSDZhNmAIFwi2KzYp9ix2Yog2KrYrdmF2YrZhCDYp9mE2KjZitin2YbYp9iqLi4uXCJcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zXy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuICdOT19SRVNVTFRTX0ZPVU5EJzsgLy8g2YXZgdiq2KfYrSDYqtix2KzZhdipINmE2YAgXCLZhNinINiq2YjYrNivINmG2KrYp9im2Kwg2YXYt9in2KjZgtipLlwiXHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7IC8vINmE2Kcg2KrZj9i52LHYtiDYsdiz2KfZhNipINil2LDYpyDZg9in2YbYqiDZh9mG2KfZgyDZhtiq2KfYptisXHJcbiAgfVxyXG5cclxuaXNJdGVtU2VsZWN0ZWQoaXRlbTogYW55KTogYm9vbGVhbiB7XHJcbiAgY29uc3QgdmYgPSB0aGlzLnRvWyd2YWx1ZUZpZWxkJ10gfHwgJ2lkJztcclxuICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkSXRlbSkgJiZcclxuICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uc29tZSgoc2VsOiBhbnkpID0+IHNlbFt2Zl0gPT09IGl0ZW1bdmZdKTtcclxufVxyXG5cclxuXHJcbn1cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1zZWxlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLXNlbGVjdG9yL3NyYy9lbGl0ZS5mcmFtZXdvcmstbmcudWkuY29yZS1nZW5lcmljLXNlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,7 @@ interface GenericSelectorProps extends FormlyFieldProps {
|
|
|
36
36
|
/** Function-based filter for offline items */
|
|
37
37
|
onSelect?: (field: FormlyFieldConfig, event?: any) => void;
|
|
38
38
|
offlineDataFn?: (query?: string) => any[];
|
|
39
|
+
filters?: Record<string, any> | string[];
|
|
39
40
|
fixedFilters?: Record<string, any>;
|
|
40
41
|
defaultValue?: any;
|
|
41
42
|
defaultItem?: any;
|
|
@@ -75,6 +76,7 @@ declare class GenericSelectorTypeComponent extends FieldType<FieldTypeConfig<Gen
|
|
|
75
76
|
private initOfflineSelection;
|
|
76
77
|
private initOnlineSelection;
|
|
77
78
|
getFixedFilters(): any;
|
|
79
|
+
getFilters(): string[];
|
|
78
80
|
onArrowDown(event: any): void;
|
|
79
81
|
onEscape(event: any): void;
|
|
80
82
|
onAddNewClick(): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elite.framework/ng.ui.core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.72",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^20.1.0",
|
|
6
6
|
"@angular/core": "^20.1.0"
|
|
@@ -16,14 +16,14 @@
|
|
|
16
16
|
"types": "./index.d.ts",
|
|
17
17
|
"default": "./fesm2022/elite.framework-ng.ui.core.mjs"
|
|
18
18
|
},
|
|
19
|
-
"./attachments": {
|
|
20
|
-
"types": "./attachments/index.d.ts",
|
|
21
|
-
"default": "./fesm2022/elite.framework-ng.ui.core-attachments.mjs"
|
|
22
|
-
},
|
|
23
19
|
"./base-crud": {
|
|
24
20
|
"types": "./base-crud/index.d.ts",
|
|
25
21
|
"default": "./fesm2022/elite.framework-ng.ui.core-base-crud.mjs"
|
|
26
22
|
},
|
|
23
|
+
"./attachments": {
|
|
24
|
+
"types": "./attachments/index.d.ts",
|
|
25
|
+
"default": "./fesm2022/elite.framework-ng.ui.core-attachments.mjs"
|
|
26
|
+
},
|
|
27
27
|
"./breadcrumb": {
|
|
28
28
|
"types": "./breadcrumb/index.d.ts",
|
|
29
29
|
"default": "./fesm2022/elite.framework-ng.ui.core-breadcrumb.mjs"
|
|
@@ -44,14 +44,14 @@
|
|
|
44
44
|
"types": "./column-settings-popover/index.d.ts",
|
|
45
45
|
"default": "./fesm2022/elite.framework-ng.ui.core-column-settings-popover.mjs"
|
|
46
46
|
},
|
|
47
|
-
"./custom-switch": {
|
|
48
|
-
"types": "./custom-switch/index.d.ts",
|
|
49
|
-
"default": "./fesm2022/elite.framework-ng.ui.core-custom-switch.mjs"
|
|
50
|
-
},
|
|
51
47
|
"./condition-editor": {
|
|
52
48
|
"types": "./condition-editor/index.d.ts",
|
|
53
49
|
"default": "./fesm2022/elite.framework-ng.ui.core-condition-editor.mjs"
|
|
54
50
|
},
|
|
51
|
+
"./custom-switch": {
|
|
52
|
+
"types": "./custom-switch/index.d.ts",
|
|
53
|
+
"default": "./fesm2022/elite.framework-ng.ui.core-custom-switch.mjs"
|
|
54
|
+
},
|
|
55
55
|
"./datepicker": {
|
|
56
56
|
"types": "./datepicker/index.d.ts",
|
|
57
57
|
"default": "./fesm2022/elite.framework-ng.ui.core-datepicker.mjs"
|
|
@@ -84,6 +84,10 @@
|
|
|
84
84
|
"types": "./formly-avatar-label/index.d.ts",
|
|
85
85
|
"default": "./fesm2022/elite.framework-ng.ui.core-formly-avatar-label.mjs"
|
|
86
86
|
},
|
|
87
|
+
"./formly-presets": {
|
|
88
|
+
"types": "./formly-presets/index.d.ts",
|
|
89
|
+
"default": "./fesm2022/elite.framework-ng.ui.core-formly-presets.mjs"
|
|
90
|
+
},
|
|
87
91
|
"./formly-button": {
|
|
88
92
|
"types": "./formly-button/index.d.ts",
|
|
89
93
|
"default": "./fesm2022/elite.framework-ng.ui.core-formly-button.mjs"
|
|
@@ -92,10 +96,6 @@
|
|
|
92
96
|
"types": "./formly-button-selector/index.d.ts",
|
|
93
97
|
"default": "./fesm2022/elite.framework-ng.ui.core-formly-button-selector.mjs"
|
|
94
98
|
},
|
|
95
|
-
"./formly-presets": {
|
|
96
|
-
"types": "./formly-presets/index.d.ts",
|
|
97
|
-
"default": "./fesm2022/elite.framework-ng.ui.core-formly-presets.mjs"
|
|
98
|
-
},
|
|
99
99
|
"./formly-split-button": {
|
|
100
100
|
"types": "./formly-split-button/index.d.ts",
|
|
101
101
|
"default": "./fesm2022/elite.framework-ng.ui.core-formly-split-button.mjs"
|
|
@@ -136,26 +136,26 @@
|
|
|
136
136
|
"types": "./generic-errormessage/index.d.ts",
|
|
137
137
|
"default": "./fesm2022/elite.framework-ng.ui.core-generic-errormessage.mjs"
|
|
138
138
|
},
|
|
139
|
-
"./generic-loadingspinner": {
|
|
140
|
-
"types": "./generic-loadingspinner/index.d.ts",
|
|
141
|
-
"default": "./fesm2022/elite.framework-ng.ui.core-generic-loadingspinner.mjs"
|
|
142
|
-
},
|
|
143
139
|
"./generic-formly-fields": {
|
|
144
140
|
"types": "./generic-formly-fields/index.d.ts",
|
|
145
141
|
"default": "./fesm2022/elite.framework-ng.ui.core-generic-formly-fields.mjs"
|
|
146
142
|
},
|
|
143
|
+
"./generic-loadingspinner": {
|
|
144
|
+
"types": "./generic-loadingspinner/index.d.ts",
|
|
145
|
+
"default": "./fesm2022/elite.framework-ng.ui.core-generic-loadingspinner.mjs"
|
|
146
|
+
},
|
|
147
147
|
"./generic-search": {
|
|
148
148
|
"types": "./generic-search/index.d.ts",
|
|
149
149
|
"default": "./fesm2022/elite.framework-ng.ui.core-generic-search.mjs"
|
|
150
150
|
},
|
|
151
|
-
"./generic-search-advanced": {
|
|
152
|
-
"types": "./generic-search-advanced/index.d.ts",
|
|
153
|
-
"default": "./fesm2022/elite.framework-ng.ui.core-generic-search-advanced.mjs"
|
|
154
|
-
},
|
|
155
151
|
"./generic-selector": {
|
|
156
152
|
"types": "./generic-selector/index.d.ts",
|
|
157
153
|
"default": "./fesm2022/elite.framework-ng.ui.core-generic-selector.mjs"
|
|
158
154
|
},
|
|
155
|
+
"./generic-search-advanced": {
|
|
156
|
+
"types": "./generic-search-advanced/index.d.ts",
|
|
157
|
+
"default": "./fesm2022/elite.framework-ng.ui.core-generic-search-advanced.mjs"
|
|
158
|
+
},
|
|
159
159
|
"./generic-table": {
|
|
160
160
|
"types": "./generic-table/index.d.ts",
|
|
161
161
|
"default": "./fesm2022/elite.framework-ng.ui.core-generic-table.mjs"
|
|
@@ -220,14 +220,14 @@
|
|
|
220
220
|
"types": "./tag-type/index.d.ts",
|
|
221
221
|
"default": "./fesm2022/elite.framework-ng.ui.core-tag-type.mjs"
|
|
222
222
|
},
|
|
223
|
-
"./text-editor": {
|
|
224
|
-
"types": "./text-editor/index.d.ts",
|
|
225
|
-
"default": "./fesm2022/elite.framework-ng.ui.core-text-editor.mjs"
|
|
226
|
-
},
|
|
227
223
|
"./textarea": {
|
|
228
224
|
"types": "./textarea/index.d.ts",
|
|
229
225
|
"default": "./fesm2022/elite.framework-ng.ui.core-textarea.mjs"
|
|
230
226
|
},
|
|
227
|
+
"./text-editor": {
|
|
228
|
+
"types": "./text-editor/index.d.ts",
|
|
229
|
+
"default": "./fesm2022/elite.framework-ng.ui.core-text-editor.mjs"
|
|
230
|
+
},
|
|
231
231
|
"./wrappers": {
|
|
232
232
|
"types": "./wrappers/index.d.ts",
|
|
233
233
|
"default": "./fesm2022/elite.framework-ng.ui.core-wrappers.mjs"
|