@c8y/ngx-components 1017.0.33 → 1017.0.35

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.
@@ -2,7 +2,6 @@ import { Injectable, Optional } from '@angular/core';
2
2
  import { InventoryService, UserService } from '@c8y/client';
3
3
  import { AlertService, DataGridService, GainsightService, gettext, ModalService, Status, UserPreferencesService } from '@c8y/ngx-components';
4
4
  import { TranslateService } from '@ngx-translate/core';
5
- import { isUndefined } from 'lodash-es';
6
5
  import { AlarmsDeviceGridColumn } from './columns/alarms.device-grid-column';
7
6
  import { ColumnUtilService } from './columns/column-util.service';
8
7
  import { GroupDeviceGridColumn } from './columns/group.device-grid-column';
@@ -105,16 +104,15 @@ export class DeviceGridService extends DataGridService {
105
104
  async delete(device) {
106
105
  try {
107
106
  const deviceWithChildren = await (await this.inventoryService.detail(device, { withChildren: true })).data;
108
- const isChildDevice = device.c8y_IsDevice === undefined;
109
- const hasChildDevices = isUndefined(deviceWithChildren.childDevices)
110
- ? false
111
- : deviceWithChildren.childDevices.references.length > 0;
112
- const showDeleteChildDevices = () => !isChildDevice && hasChildDevices;
107
+ const hasChildDevices = deviceWithChildren.childDevices?.references?.length > 0;
108
+ const hasChildAdditions = deviceWithChildren.childAdditions?.references?.length > 0;
109
+ const hasChildAssets = deviceWithChildren.childAssets?.references?.length > 0;
110
+ const showDeleteChildren = () => hasChildAdditions || hasChildDevices || hasChildAssets;
113
111
  const modalResult = await this.modal.confirm(gettext('Delete device'), this.translateService.instant(gettext(`You are about to delete device "{{ name }}". Do you want to proceed?`), device), Status.DANGER, { ok: gettext('Delete'), cancel: gettext('Cancel') }, {
114
112
  cascade: {
115
- text: gettext('Also delete child devices of this device.'),
116
- checked: showDeleteChildDevices(),
117
- showIf: showDeleteChildDevices
113
+ text: gettext('Also delete child hierarchy of this device.'),
114
+ checked: showDeleteChildren(),
115
+ showIf: showDeleteChildren
118
116
  },
119
117
  withDeviceUser: {
120
118
  text: this.translateService.instant(gettext('Also delete associated device owner "{{ owner }}".'), device),
@@ -244,4 +242,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
244
242
  }], ctorParameters: function () { return [{ type: i1.InventoryService }, { type: i1.UserService }, { type: i2.TranslateService }, { type: i3.AlertService }, { type: i3.ModalService }, { type: i4.ColumnUtilService }, { type: i3.UserPreferencesService }, { type: i3.GainsightService, decorators: [{
245
243
  type: Optional
246
244
  }] }]; } });
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLWdyaWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RldmljZS1ncmlkL2RldmljZS1ncmlkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFrQixnQkFBZ0IsRUFBUyxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkYsT0FBTyxFQUVMLFlBQVksRUFHWixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFHUCxZQUFZLEVBR1osTUFBTSxFQUNOLHNCQUFzQixFQUN2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFeEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDMUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7OztBQU1s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SSxDQUFDLCtCQUErQjtRQUVsRCxPQUFPLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxpQkFBaUIsQ0FDdkIsT0FBaUIsRUFDakIsVUFBc0IsRUFDdEIsS0FBVSxFQUNWLGtCQUE0QixFQUM1QixJQUFhO1FBRWIsT0FBTztZQUNMLEdBQUcsQ0FBQyxrQkFBa0I7Z0JBQ3BCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUN0RCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JELEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNyQixRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7WUFDN0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXO1lBQ25DLFlBQVksRUFBRSxLQUFLO1lBQ25CLGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUM7SUFDSixDQUFDOzs4R0FqU1UsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFZSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlLCBJVXNlciwgVXNlclNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBY3Rpb25Db250cm9sLFxuICBBbGVydFNlcnZpY2UsXG4gIEJ1bGtBY3Rpb25Db250cm9sLFxuICBDb2x1bW4sXG4gIERhdGFHcmlkU2VydmljZSxcbiAgR2FpbnNpZ2h0U2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgR3JpZENvbmZpZyxcbiAgSGVhZGVyQWN0aW9uQ29udHJvbCxcbiAgTW9kYWxTZXJ2aWNlLFxuICBQYWdpbmF0aW9uLFxuICBSb3csXG4gIFN0YXR1cyxcbiAgVXNlclByZWZlcmVuY2VzU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGlzVW5kZWZpbmVkIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFsYXJtc0RldmljZUdyaWRDb2x1bW4gfSBmcm9tICcuL2NvbHVtbnMvYWxhcm1zLmRldmljZS1ncmlkLWNvbHVtbic7XG5pbXBvcnQgeyBDb2x1bW5VdGlsU2VydmljZSB9IGZyb20gJy4vY29sdW1ucy9jb2x1bW4tdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IEdyb3VwRGV2aWNlR3JpZENvbHVtbiB9IGZyb20gJy4vY29sdW1ucy9ncm91cC5kZXZpY2UtZ3JpZC1jb2x1bW4nO1xuaW1wb3J0IHsgSW1laURldmljZUdyaWRDb2x1bW4gfSBmcm9tICcuL2NvbHVtbnMvaW1laS5kZXZpY2UtZ3JpZC1jb2x1bW4nO1xuaW1wb3J0IHsgTW9kZWxEZXZpY2VHcmlkQ29sdW1uIH0gZnJvbSAnLi9jb2x1bW5zL21vZGVsLmRldmljZS1ncmlkLWNvbHVtbic7XG5pbXBvcnQgeyBOYW1lRGV2aWNlR3JpZENvbHVtbiB9IGZyb20gJy4vY29sdW1ucy9uYW1lLmRldmljZS1ncmlkLWNvbHVtbic7XG5pbXBvcnQgeyBSZWdpc3RyYXRpb25EYXRlRGV2aWNlR3JpZENvbHVtbiB9IGZyb20gJy4vY29sdW1ucy9yZWdpc3RyYXRpb24tZGF0ZS5kZXZpY2UtZ3JpZC1jb2x1bW4nO1xuaW1wb3J0IHsgU2VyaWFsTnVtYmVyRGV2aWNlR3JpZENvbHVtbiB9IGZyb20gJy4vY29sdW1ucy9zZXJpYWwtbnVtYmVyLmRldmljZS1ncmlkLWNvbHVtbic7XG5pbXBvcnQgeyBTdGF0dXNEZXZpY2VHcmlkQ29sdW1uIH0gZnJvbSAnLi9jb2x1bW5zL3N0YXR1cy5kZXZpY2UtZ3JpZC1jb2x1bW4nO1xuaW1wb3J0IHsgU3lzdGVtSWREZXZpY2VHcmlkQ29sdW1uIH0gZnJvbSAnLi9jb2x1bW5zL3N5c3RlbS1pZC5kZXZpY2UtZ3JpZC1jb2x1bW4nO1xuaW1wb3J0IHsgRGV2aWNlR3JpZEFjdGlvblR5cGUgfSBmcm9tICcuL2RldmljZS1ncmlkLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGV2aWNlR3JpZFNlcnZpY2UgZXh0ZW5kcyBEYXRhR3JpZFNlcnZpY2Uge1xuICBwcm90ZWN0ZWQgR1JJRF9DT05GSUdfREVGQVVMVF9TVE9SQUdFX0tFWSA9ICdkZXZpY2UtZ3JpZC1jb25maWcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbnZlbnRvcnlTZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBtb2RhbDogTW9kYWxTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjb2x1bW5VdGlsU2VydmljZTogQ29sdW1uVXRpbFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGdhaW5zaWdodFNlcnZpY2U/OiBHYWluc2lnaHRTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHVzZXJQcmVmZXJlbmNlc1NlcnZpY2UpO1xuICB9XG5cbiAgZ2V0RGVmYXVsdENvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIGNvbnN0IGRlZmF1bHRDb2x1bW5zID0gW1xuICAgICAgbmV3IFN0YXR1c0RldmljZUdyaWRDb2x1bW4oKSxcbiAgICAgIG5ldyBOYW1lRGV2aWNlR3JpZENvbHVtbigpLFxuICAgICAgbmV3IE1vZGVsRGV2aWNlR3JpZENvbHVtbigpLFxuICAgICAgbmV3IFNlcmlhbE51bWJlckRldmljZUdyaWRDb2x1bW4oKSxcbiAgICAgIG5ldyBHcm91cERldmljZUdyaWRDb2x1bW4oKSxcbiAgICAgIG5ldyBSZWdpc3RyYXRpb25EYXRlRGV2aWNlR3JpZENvbHVtbigpLFxuICAgICAgbmV3IFN5c3RlbUlkRGV2aWNlR3JpZENvbHVtbigpLFxuICAgICAgbmV3IEltZWlEZXZpY2VHcmlkQ29sdW1uKCksXG4gICAgICBuZXcgQWxhcm1zRGV2aWNlR3JpZENvbHVtbigpXG4gICAgXTtcblxuICAgIHJldHVybiBkZWZhdWx0Q29sdW1ucztcbiAgfVxuXG4gIGdldENoaWxkRGV2aWNlR3JpZENvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIGNvbnN0IGNoaWxkRGV2aWNlR3JpZENvbHVtbiA9IFtcbiAgICAgIG5ldyBTdGF0dXNEZXZpY2VHcmlkQ29sdW1uKCksXG4gICAgICBuZXcgTmFtZURldmljZUdyaWRDb2x1bW4oKSxcbiAgICAgIG5ldyBNb2RlbERldmljZUdyaWRDb2x1bW4oKSxcbiAgICAgIG5ldyBTZXJpYWxOdW1iZXJEZXZpY2VHcmlkQ29sdW1uKCksXG4gICAgICBuZXcgUmVnaXN0cmF0aW9uRGF0ZURldmljZUdyaWRDb2x1bW4oKSxcbiAgICAgIG5ldyBTeXN0ZW1JZERldmljZUdyaWRDb2x1bW4oKSxcbiAgICAgIG5ldyBJbWVpRGV2aWNlR3JpZENvbHVtbigpLFxuICAgICAgbmV3IEFsYXJtc0RldmljZUdyaWRDb2x1bW4oKVxuICAgIF07XG5cbiAgICByZXR1cm4gY2hpbGREZXZpY2VHcmlkQ29sdW1uO1xuICB9XG5cbiAgZ2V0RGVmYXVsdFBhZ2luYXRpb24oKTogUGFnaW5hdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2VTaXplOiAyNSxcbiAgICAgIGN1cnJlbnRQYWdlOiAxXG4gICAgfTtcbiAgfVxuXG4gIGdldEluZmluaXRlU2Nyb2xsUGFnaW5hdGlvbigpOiBQYWdpbmF0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFnZVNpemU6IDUwLFxuICAgICAgY3VycmVudFBhZ2U6IDFcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdEFjdGlvbkNvbnRyb2xzKCk6IEFjdGlvbkNvbnRyb2xbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogRGV2aWNlR3JpZEFjdGlvblR5cGUuRGVsZXRlLFxuICAgICAgICBjYWxsYmFjazogKGl0ZW06IFJvdykgPT4gdGhpcy5kZWxldGUoaXRlbSBhcyBJTWFuYWdlZE9iamVjdClcbiAgICAgIH1cbiAgICBdO1xuICB9XG5cbiAgZ2V0RGVmYXVsdEJ1bGtBY3Rpb25Db250cm9scygpOiBCdWxrQWN0aW9uQ29udHJvbFtdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXREZWZhdWx0SGVhZGVyQWN0aW9uQ29udHJvbHMoKTogSGVhZGVyQWN0aW9uQ29udHJvbFtdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRQcm9wZXJOYW1lKGRldmljZTogSU1hbmFnZWRPYmplY3QpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbHVtblV0aWxTZXJ2aWNlLmdldFByb3Blck5hbWUoZGV2aWNlKTtcbiAgfVxuXG4gIGdldE1vZGVsKGRldmljZTogSU1hbmFnZWRPYmplY3QpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbHVtblV0aWxTZXJ2aWNlLmdldE1vZGVsKGRldmljZSk7XG4gIH1cblxuICBnZXRTZXJpYWxOdW1iZXIoZGV2aWNlOiBJTWFuYWdlZE9iamVjdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uVXRpbFNlcnZpY2UuZ2V0U2VyaWFsTnVtYmVyKGRldmljZSk7XG4gIH1cblxuICBnZXRQYXJlbnRzTmFtZXMoZGV2aWNlOiBJTWFuYWdlZE9iamVjdCwgZmVhdHVyZWRQYXJlbnRJZD86IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uVXRpbFNlcnZpY2UuZ2V0UGFyZW50c05hbWVzKGRldmljZSwgZmVhdHVyZWRQYXJlbnRJZCk7XG4gIH1cblxuICBnZXRIcmVmKGdyb3VwT3JEZXZpY2U6IElNYW5hZ2VkT2JqZWN0LCBwcmVmaXggPSAnIy8nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5VdGlsU2VydmljZS5nZXRIcmVmKGdyb3VwT3JEZXZpY2UsIHByZWZpeCk7XG4gIH1cblxuICBnZXRBbGFybXNIcmVmKGRldmljZTogSU1hbmFnZWRPYmplY3QpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbHVtblV0aWxTZXJ2aWNlLmdldEFsYXJtc0hyZWYoZGV2aWNlKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShkZXZpY2U6IElNYW5hZ2VkT2JqZWN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRldmljZVdpdGhDaGlsZHJlbiA9IGF3YWl0IChcbiAgICAgICAgYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmRldGFpbChkZXZpY2UsIHsgd2l0aENoaWxkcmVuOiB0cnVlIH0pXG4gICAgICApLmRhdGE7XG4gICAgICBjb25zdCBpc0NoaWxkRGV2aWNlID0gZGV2aWNlLmM4eV9Jc0RldmljZSA9PT0gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgaGFzQ2hpbGREZXZpY2VzID0gaXNVbmRlZmluZWQoZGV2aWNlV2l0aENoaWxkcmVuLmNoaWxkRGV2aWNlcylcbiAgICAgICAgPyBmYWxzZVxuICAgICAgICA6IGRldmljZVdpdGhDaGlsZHJlbi5jaGlsZERldmljZXMucmVmZXJlbmNlcy5sZW5ndGggPiAwO1xuICAgICAgY29uc3Qgc2hvd0RlbGV0ZUNoaWxkRGV2aWNlcyA9ICgpID0+ICFpc0NoaWxkRGV2aWNlICYmIGhhc0NoaWxkRGV2aWNlcztcbiAgICAgIGNvbnN0IG1vZGFsUmVzdWx0ID0gYXdhaXQgdGhpcy5tb2RhbC5jb25maXJtKFxuICAgICAgICBnZXR0ZXh0KCdEZWxldGUgZGV2aWNlJyksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgIGdldHRleHQoYFlvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIGRldmljZSBcInt7IG5hbWUgfX1cIi4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD9gKSxcbiAgICAgICAgICBkZXZpY2VcbiAgICAgICAgKSxcbiAgICAgICAgU3RhdHVzLkRBTkdFUixcbiAgICAgICAgeyBvazogZ2V0dGV4dCgnRGVsZXRlJyksIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJykgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNhc2NhZGU6IHtcbiAgICAgICAgICAgIHRleHQ6IGdldHRleHQoJ0Fsc28gZGVsZXRlIGNoaWxkIGRldmljZXMgb2YgdGhpcyBkZXZpY2UuJyksXG4gICAgICAgICAgICBjaGVja2VkOiBzaG93RGVsZXRlQ2hpbGREZXZpY2VzKCksXG4gICAgICAgICAgICBzaG93SWY6IHNob3dEZWxldGVDaGlsZERldmljZXNcbiAgICAgICAgICB9LFxuICAgICAgICAgIHdpdGhEZXZpY2VVc2VyOiB7XG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgZ2V0dGV4dCgnQWxzbyBkZWxldGUgYXNzb2NpYXRlZCBkZXZpY2Ugb3duZXIgXCJ7eyBvd25lciB9fVwiLicpLFxuICAgICAgICAgICAgICBkZXZpY2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgICAgIHNob3dJZjogKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpc1Jvb3REZXZpY2UgPSBkZXZpY2UuYzh5X0lzRGV2aWNlO1xuICAgICAgICAgICAgICBjb25zdCBoYXNEZXZpY2VVc2VyQXNPd25lciA9XG4gICAgICAgICAgICAgICAgZGV2aWNlLm93bmVyICYmXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5pc0RldmljZVVzZXIoeyBpZDogZGV2aWNlLm93bmVyIH0gYXMgdW5rbm93biBhcyBJVXNlcik7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW4oaXNSb290RGV2aWNlICYmIGhhc0RldmljZVVzZXJBc093bmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UuZGVsZXRlKFxuICAgICAgICBkZXZpY2UsXG4gICAgICAgIChtb2RhbFJlc3VsdCBhcyB7IGNvbmZpcm1PcHRpb25zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IH0pLmNvbmZpcm1PcHRpb25zXG4gICAgICApO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdEZXZpY2UgZGVsZXRlZC4nKSk7XG4gICAgICBpZiAodGhpcy5nYWluc2lnaHRTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoJ2RldmljZUdyaWQ6RW50cnlEZWxldGVkJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIC8vIG9ubHkgaWYgbm90IGNhbmNlbCBmcm9tIG1vZGFsXG4gICAgICBpZiAodGhpcy5nYWluc2lnaHRTZXJ2aWNlICYmICFleCkge1xuICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KCdkZXZpY2VHcmlkOkVudHJ5RGVsZXRpb25DYW5jZWxsZWQnKTtcbiAgICAgIH1cbiAgICAgIGlmIChleCkge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldERhdGEoXG4gICAgY29sdW1uczogQ29sdW1uW10sXG4gICAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbixcbiAgICBxdWVyeTogYW55ID0ge30sXG4gICAgd2l0aENoaWxkcmVuOiBib29sZWFuID0gZmFsc2UsXG4gICAgdGV4dDogc3RyaW5nID0gbnVsbFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJzID0ge1xuICAgICAgLi4udGhpcy5nZXREZXZpY2VzRmlsdGVycyhjb2x1bW5zLCBwYWdpbmF0aW9uLCBxdWVyeSwgZmFsc2UsIHRleHQpLFxuICAgICAgd2l0aEdyb3VwczogdHJ1ZSxcbiAgICAgIHdpdGhDaGlsZHJlblxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5U2VydmljZS5saXN0KGZpbHRlcnMpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q2hpbGREZXZpY2VEYXRhKFxuICAgIGNvbHVtbnM6IENvbHVtbltdLFxuICAgIHBhZ2luYXRpb246IFBhZ2luYXRpb24sXG4gICAgcXVlcnk6IGFueSA9IHt9LFxuICAgIHdpdGhDaGlsZHJlbjogYm9vbGVhbiA9IGZhbHNlLFxuICAgIGlkOiBzdHJpbmdcbiAgKSB7XG4gICAgY29uc3QgY2hpbGREZXZpY2VGaWx0ZXJzID0gdHJ1ZTtcbiAgICBjb25zdCBmaWx0ZXJzID0ge1xuICAgICAgLi4udGhpcy5nZXREZXZpY2VzRmlsdGVycyhjb2x1bW5zLCBwYWdpbmF0aW9uLCBxdWVyeSwgY2hpbGREZXZpY2VGaWx0ZXJzKSxcbiAgICAgIHdpdGhHcm91cHM6IHRydWUsXG4gICAgICB3aXRoQ2hpbGRyZW5cbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmludmVudG9yeVNlcnZpY2UuY2hpbGREZXZpY2VzTGlzdChpZCwgZmlsdGVycyk7XG4gIH1cblxuICBhc3luYyBnZXRDb3VudChjb2x1bW5zOiBDb2x1bW5bXSwgcGFnaW5hdGlvbjogUGFnaW5hdGlvbiwgcXVlcnk6IGFueSA9IHt9LCB0ZXh0OiBzdHJpbmcgPSBudWxsKSB7XG4gICAgY29uc3QgZmlsdGVycyA9IHtcbiAgICAgIC4uLnRoaXMuZ2V0RGV2aWNlc0ZpbHRlcnMoY29sdW1ucywgcGFnaW5hdGlvbiwgcXVlcnksIGZhbHNlLCB0ZXh0KSxcbiAgICAgIHBhZ2VTaXplOiAxLFxuICAgICAgY3VycmVudFBhZ2U6IDFcbiAgICB9O1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmxpc3QoZmlsdGVycykpLnBhZ2luZy50b3RhbFBhZ2VzO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q291bnRDaGlsZERldmljZXMoXG4gICAgY29sdW1uczogQ29sdW1uW10sXG4gICAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbixcbiAgICBxdWVyeTogYW55ID0ge30sXG4gICAgaWQ6IHN0cmluZ1xuICApIHtcbiAgICBjb25zdCBjaGlsZERldmljZUZpbHRlcnMgPSB0cnVlO1xuICAgIGNvbnN0IGZpbHRlcnMgPSB7XG4gICAgICAuLi50aGlzLmdldERldmljZXNGaWx0ZXJzKGNvbHVtbnMsIHBhZ2luYXRpb24sIHF1ZXJ5LCBjaGlsZERldmljZUZpbHRlcnMpLFxuICAgICAgcGFnZVNpemU6IDEsXG4gICAgICBjdXJyZW50UGFnZTogMVxuICAgIH07XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UuY2hpbGREZXZpY2VzTGlzdChpZCwgZmlsdGVycykpLnBhZ2luZy50b3RhbFBhZ2VzO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG90YWxDaGlsZERldmljZXMocXVlcnk6IGFueSA9IHt9LCBpZDogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBmaWx0ZXJzID0ge1xuICAgICAgcTogdGhpcy5xdWVyaWVzVXRpbC5idWlsZFF1ZXJ5KHF1ZXJ5KSxcbiAgICAgIHBhZ2VTaXplOiAxLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWVcbiAgICB9O1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmNoaWxkRGV2aWNlc0xpc3QoaWQsIGZpbHRlcnMpKS5wYWdpbmcudG90YWxQYWdlcztcbiAgfVxuXG4gIGFzeW5jIGdldFRvdGFsKHF1ZXJ5OiBhbnkgPSB7fSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgZmlsdGVycyA9IHtcbiAgICAgIHE6IHRoaXMucXVlcmllc1V0aWwuYnVpbGRRdWVyeShxdWVyeSksXG4gICAgICBwYWdlU2l6ZTogMSxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlXG4gICAgfTtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5saXN0KGZpbHRlcnMpKS5wYWdpbmcudG90YWxQYWdlcztcbiAgfVxuXG4gIGdldERldmljZVF1ZXJ5U3RyaW5nKGNvbHVtbnM6IENvbHVtbltdLCBxdWVyeTogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgZnVsbFF1ZXJ5ID0gdGhpcy5nZXRRdWVyeU9iaihjb2x1bW5zKTtcbiAgICBmdWxsUXVlcnkgPSB0aGlzLnF1ZXJpZXNVdGlsLmFkZEFuZEZpbHRlcihmdWxsUXVlcnksIHF1ZXJ5KTtcbiAgICByZXR1cm4gdGhpcy5xdWVyaWVzVXRpbC5idWlsZFF1ZXJ5KGZ1bGxRdWVyeSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGdldENvbmZpZyQoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEdyaWRDb25maWc+IGluc3RlYWQuXG4gICAqL1xuICBnZXRDb25maWcoa2V5OiBzdHJpbmcgPSB0aGlzLkdSSURfQ09ORklHX0RFRkFVTFRfU1RPUkFHRV9LRVkpOiBHcmlkQ29uZmlnIHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0Q29uZmlnKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHNhdmVDb25maWckKGNvbmZpZzogR3JpZENvbmZpZywga2V5OiBzdHJpbmcpOiBQcm9taXNlPEdyaWRDb25maWc+IGluc3RlYWQuXG4gICAqL1xuICBzYXZlQ29uZmlnKGNvbmZpZzogR3JpZENvbmZpZywga2V5OiBzdHJpbmcgPSB0aGlzLkdSSURfQ09ORklHX0RFRkFVTFRfU1RPUkFHRV9LRVkpIHtcbiAgICBzdXBlci5zYXZlQ29uZmlnKGNvbmZpZywga2V5KTtcbiAgfVxuXG4gIGNsZWFyQ29uZmlnKGtleTogc3RyaW5nID0gdGhpcy5HUklEX0NPTkZJR19ERUZBVUxUX1NUT1JBR0VfS0VZKSB7XG4gICAgc3VwZXIuY2xlYXJDb25maWcoa2V5KTtcbiAgfVxuXG4gIGdldENvbmZpZyQoa2V5OiBzdHJpbmcgPSB0aGlzLkdSSURfQ09ORklHX0RFRkFVTFRfU1RPUkFHRV9LRVkpOiBPYnNlcnZhYmxlPEdyaWRDb25maWc+IHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0Q29uZmlnJChrZXkpO1xuICB9XG5cbiAgc2F2ZUNvbmZpZyQoXG4gICAgY29uZmlnOiBHcmlkQ29uZmlnLFxuICAgIGtleTogc3RyaW5nID0gdGhpcy5HUklEX0NPTkZJR19ERUZBVUxUX1NUT1JBR0VfS0VZXG4gICk6IE9ic2VydmFibGU8R3JpZENvbmZpZz4ge1xuICAgIHJldHVybiBzdXBlci5zYXZlQ29uZmlnJChjb25maWcsIGtleSk7XG4gIH1cblxuICBwcml2YXRlIGdldERldmljZXNGaWx0ZXJzKFxuICAgIGNvbHVtbnM6IENvbHVtbltdLFxuICAgIHBhZ2luYXRpb246IFBhZ2luYXRpb24sXG4gICAgcXVlcnk6IGFueSxcbiAgICBjaGlsZERldmljZUZpbHRlcnM/OiBib29sZWFuLFxuICAgIHRleHQ/OiBzdHJpbmdcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihjaGlsZERldmljZUZpbHRlcnNcbiAgICAgICAgPyB7IHF1ZXJ5OiB0aGlzLmdldERldmljZVF1ZXJ5U3RyaW5nKGNvbHVtbnMsIHF1ZXJ5KSB9XG4gICAgICAgIDogeyBxOiB0aGlzLmdldERldmljZVF1ZXJ5U3RyaW5nKGNvbHVtbnMsIHF1ZXJ5KSB9KSxcbiAgICAgIC4uLih0ZXh0ICYmIHsgdGV4dCB9KSxcbiAgICAgIHBhZ2VTaXplOiBwYWdpbmF0aW9uLnBhZ2VTaXplLFxuICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudFBhZ2UsXG4gICAgICB3aXRoQ2hpbGRyZW46IGZhbHNlLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWVcbiAgICB9O1xuICB9XG59XG4iXX0=
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLWdyaWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RldmljZS1ncmlkL2RldmljZS1ncmlkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFrQixnQkFBZ0IsRUFBUyxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkYsT0FBTyxFQUVMLFlBQVksRUFHWixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFHUCxZQUFZLEVBR1osTUFBTSxFQUNOLHNCQUFzQixFQUN2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7QUFNbEYsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGVBQWU7SUFHcEQsWUFDWSxn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K0JBQStCO1FBRWxELE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLGlCQUFpQixDQUN2QixPQUFpQixFQUNqQixVQUFzQixFQUN0QixLQUFVLEVBQ1Ysa0JBQTRCLEVBQzVCLElBQWE7UUFFYixPQUFPO1lBQ0wsR0FBRyxDQUFDLGtCQUFrQjtnQkFDcEIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ3RELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDckQsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3JCLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTtZQUM3QixXQUFXLEVBQUUsVUFBVSxDQUFDLFdBQVc7WUFDbkMsWUFBWSxFQUFFLEtBQUs7WUFDbkIsY0FBYyxFQUFFLElBQUk7U0FDckIsQ0FBQztJQUNKLENBQUM7OzhHQWhTVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVlJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UsIElVc2VyLCBVc2VyU2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFjdGlvbkNvbnRyb2wsXG4gIEFsZXJ0U2VydmljZSxcbiAgQnVsa0FjdGlvbkNvbnRyb2wsXG4gIENvbHVtbixcbiAgRGF0YUdyaWRTZXJ2aWNlLFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBHcmlkQ29uZmlnLFxuICBIZWFkZXJBY3Rpb25Db250cm9sLFxuICBNb2RhbFNlcnZpY2UsXG4gIFBhZ2luYXRpb24sXG4gIFJvdyxcbiAgU3RhdHVzLFxuICBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWxhcm1zRGV2aWNlR3JpZENvbHVtbiB9IGZyb20gJy4vY29sdW1ucy9hbGFybXMuZGV2aWNlLWdyaWQtY29sdW1uJztcbmltcG9ydCB7IENvbHVtblV0aWxTZXJ2aWNlIH0gZnJvbSAnLi9jb2x1bW5zL2NvbHVtbi11dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JvdXBEZXZpY2VHcmlkQ29sdW1uIH0gZnJvbSAnLi9jb2x1bW5zL2dyb3VwLmRldmljZS1ncmlkLWNvbHVtbic7XG5pbXBvcnQgeyBJbWVpRGV2aWNlR3JpZENvbHVtbiB9IGZyb20gJy4vY29sdW1ucy9pbWVpLmRldmljZS1ncmlkLWNvbHVtbic7XG5pbXBvcnQgeyBNb2RlbERldmljZUdyaWRDb2x1bW4gfSBmcm9tICcuL2NvbHVtbnMvbW9kZWwuZGV2aWNlLWdyaWQtY29sdW1uJztcbmltcG9ydCB7IE5hbWVEZXZpY2VHcmlkQ29sdW1uIH0gZnJvbSAnLi9jb2x1bW5zL25hbWUuZGV2aWNlLWdyaWQtY29sdW1uJztcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbkRhdGVEZXZpY2VHcmlkQ29sdW1uIH0gZnJvbSAnLi9jb2x1bW5zL3JlZ2lzdHJhdGlvbi1kYXRlLmRldmljZS1ncmlkLWNvbHVtbic7XG5pbXBvcnQgeyBTZXJpYWxOdW1iZXJEZXZpY2VHcmlkQ29sdW1uIH0gZnJvbSAnLi9jb2x1bW5zL3NlcmlhbC1udW1iZXIuZGV2aWNlLWdyaWQtY29sdW1uJztcbmltcG9ydCB7IFN0YXR1c0RldmljZUdyaWRDb2x1bW4gfSBmcm9tICcuL2NvbHVtbnMvc3RhdHVzLmRldmljZS1ncmlkLWNvbHVtbic7XG5pbXBvcnQgeyBTeXN0ZW1JZERldmljZUdyaWRDb2x1bW4gfSBmcm9tICcuL2NvbHVtbnMvc3lzdGVtLWlkLmRldmljZS1ncmlkLWNvbHVtbic7XG5pbXBvcnQgeyBEZXZpY2VHcmlkQWN0aW9uVHlwZSB9IGZyb20gJy4vZGV2aWNlLWdyaWQubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEZXZpY2VHcmlkU2VydmljZSBleHRlbmRzIERhdGFHcmlkU2VydmljZSB7XG4gIHByb3RlY3RlZCBHUklEX0NPTkZJR19ERUZBVUxUX1NUT1JBR0VfS0VZID0gJ2RldmljZS1ncmlkLWNvbmZpZyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG1vZGFsOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNvbHVtblV0aWxTZXJ2aWNlOiBDb2x1bW5VdGlsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdXNlclByZWZlcmVuY2VzU2VydmljZTogVXNlclByZWZlcmVuY2VzU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgZ2FpbnNpZ2h0U2VydmljZT86IEdhaW5zaWdodFNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIodXNlclByZWZlcmVuY2VzU2VydmljZSk7XG4gIH1cblxuICBnZXREZWZhdWx0Q29sdW1ucygpOiBDb2x1bW5bXSB7XG4gICAgY29uc3QgZGVmYXVsdENvbHVtbnMgPSBbXG4gICAgICBuZXcgU3RhdHVzRGV2aWNlR3JpZENvbHVtbigpLFxuICAgICAgbmV3IE5hbWVEZXZpY2VHcmlkQ29sdW1uKCksXG4gICAgICBuZXcgTW9kZWxEZXZpY2VHcmlkQ29sdW1uKCksXG4gICAgICBuZXcgU2VyaWFsTnVtYmVyRGV2aWNlR3JpZENvbHVtbigpLFxuICAgICAgbmV3IEdyb3VwRGV2aWNlR3JpZENvbHVtbigpLFxuICAgICAgbmV3IFJlZ2lzdHJhdGlvbkRhdGVEZXZpY2VHcmlkQ29sdW1uKCksXG4gICAgICBuZXcgU3lzdGVtSWREZXZpY2VHcmlkQ29sdW1uKCksXG4gICAgICBuZXcgSW1laURldmljZUdyaWRDb2x1bW4oKSxcbiAgICAgIG5ldyBBbGFybXNEZXZpY2VHcmlkQ29sdW1uKClcbiAgICBdO1xuXG4gICAgcmV0dXJuIGRlZmF1bHRDb2x1bW5zO1xuICB9XG5cbiAgZ2V0Q2hpbGREZXZpY2VHcmlkQ29sdW1ucygpOiBDb2x1bW5bXSB7XG4gICAgY29uc3QgY2hpbGREZXZpY2VHcmlkQ29sdW1uID0gW1xuICAgICAgbmV3IFN0YXR1c0RldmljZUdyaWRDb2x1bW4oKSxcbiAgICAgIG5ldyBOYW1lRGV2aWNlR3JpZENvbHVtbigpLFxuICAgICAgbmV3IE1vZGVsRGV2aWNlR3JpZENvbHVtbigpLFxuICAgICAgbmV3IFNlcmlhbE51bWJlckRldmljZUdyaWRDb2x1bW4oKSxcbiAgICAgIG5ldyBSZWdpc3RyYXRpb25EYXRlRGV2aWNlR3JpZENvbHVtbigpLFxuICAgICAgbmV3IFN5c3RlbUlkRGV2aWNlR3JpZENvbHVtbigpLFxuICAgICAgbmV3IEltZWlEZXZpY2VHcmlkQ29sdW1uKCksXG4gICAgICBuZXcgQWxhcm1zRGV2aWNlR3JpZENvbHVtbigpXG4gICAgXTtcblxuICAgIHJldHVybiBjaGlsZERldmljZUdyaWRDb2x1bW47XG4gIH1cblxuICBnZXREZWZhdWx0UGFnaW5hdGlvbigpOiBQYWdpbmF0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFnZVNpemU6IDI1LFxuICAgICAgY3VycmVudFBhZ2U6IDFcbiAgICB9O1xuICB9XG5cbiAgZ2V0SW5maW5pdGVTY3JvbGxQYWdpbmF0aW9uKCk6IFBhZ2luYXRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICBwYWdlU2l6ZTogNTAsXG4gICAgICBjdXJyZW50UGFnZTogMVxuICAgIH07XG4gIH1cblxuICBnZXREZWZhdWx0QWN0aW9uQ29udHJvbHMoKTogQWN0aW9uQ29udHJvbFtdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0eXBlOiBEZXZpY2VHcmlkQWN0aW9uVHlwZS5EZWxldGUsXG4gICAgICAgIGNhbGxiYWNrOiAoaXRlbTogUm93KSA9PiB0aGlzLmRlbGV0ZShpdGVtIGFzIElNYW5hZ2VkT2JqZWN0KVxuICAgICAgfVxuICAgIF07XG4gIH1cblxuICBnZXREZWZhdWx0QnVsa0FjdGlvbkNvbnRyb2xzKCk6IEJ1bGtBY3Rpb25Db250cm9sW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldERlZmF1bHRIZWFkZXJBY3Rpb25Db250cm9scygpOiBIZWFkZXJBY3Rpb25Db250cm9sW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldFByb3Blck5hbWUoZGV2aWNlOiBJTWFuYWdlZE9iamVjdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uVXRpbFNlcnZpY2UuZ2V0UHJvcGVyTmFtZShkZXZpY2UpO1xuICB9XG5cbiAgZ2V0TW9kZWwoZGV2aWNlOiBJTWFuYWdlZE9iamVjdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uVXRpbFNlcnZpY2UuZ2V0TW9kZWwoZGV2aWNlKTtcbiAgfVxuXG4gIGdldFNlcmlhbE51bWJlcihkZXZpY2U6IElNYW5hZ2VkT2JqZWN0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5VdGlsU2VydmljZS5nZXRTZXJpYWxOdW1iZXIoZGV2aWNlKTtcbiAgfVxuXG4gIGdldFBhcmVudHNOYW1lcyhkZXZpY2U6IElNYW5hZ2VkT2JqZWN0LCBmZWF0dXJlZFBhcmVudElkPzogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5VdGlsU2VydmljZS5nZXRQYXJlbnRzTmFtZXMoZGV2aWNlLCBmZWF0dXJlZFBhcmVudElkKTtcbiAgfVxuXG4gIGdldEhyZWYoZ3JvdXBPckRldmljZTogSU1hbmFnZWRPYmplY3QsIHByZWZpeCA9ICcjLycpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbHVtblV0aWxTZXJ2aWNlLmdldEhyZWYoZ3JvdXBPckRldmljZSwgcHJlZml4KTtcbiAgfVxuXG4gIGdldEFsYXJtc0hyZWYoZGV2aWNlOiBJTWFuYWdlZE9iamVjdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uVXRpbFNlcnZpY2UuZ2V0QWxhcm1zSHJlZihkZXZpY2UpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlKGRldmljZTogSU1hbmFnZWRPYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGV2aWNlV2l0aENoaWxkcmVuID0gYXdhaXQgKFxuICAgICAgICBhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UuZGV0YWlsKGRldmljZSwgeyB3aXRoQ2hpbGRyZW46IHRydWUgfSlcbiAgICAgICkuZGF0YTtcbiAgICAgIGNvbnN0IGhhc0NoaWxkRGV2aWNlcyA9IGRldmljZVdpdGhDaGlsZHJlbi5jaGlsZERldmljZXM/LnJlZmVyZW5jZXM/Lmxlbmd0aCA+IDA7XG4gICAgICBjb25zdCBoYXNDaGlsZEFkZGl0aW9ucyA9IGRldmljZVdpdGhDaGlsZHJlbi5jaGlsZEFkZGl0aW9ucz8ucmVmZXJlbmNlcz8ubGVuZ3RoID4gMDtcbiAgICAgIGNvbnN0IGhhc0NoaWxkQXNzZXRzID0gZGV2aWNlV2l0aENoaWxkcmVuLmNoaWxkQXNzZXRzPy5yZWZlcmVuY2VzPy5sZW5ndGggPiAwO1xuICAgICAgY29uc3Qgc2hvd0RlbGV0ZUNoaWxkcmVuID0gKCkgPT4gaGFzQ2hpbGRBZGRpdGlvbnMgfHwgaGFzQ2hpbGREZXZpY2VzIHx8IGhhc0NoaWxkQXNzZXRzO1xuICAgICAgY29uc3QgbW9kYWxSZXN1bHQgPSBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ0RlbGV0ZSBkZXZpY2UnKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgZ2V0dGV4dChgWW91IGFyZSBhYm91dCB0byBkZWxldGUgZGV2aWNlIFwie3sgbmFtZSB9fVwiLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkP2ApLFxuICAgICAgICAgIGRldmljZVxuICAgICAgICApLFxuICAgICAgICBTdGF0dXMuREFOR0VSLFxuICAgICAgICB7IG9rOiBnZXR0ZXh0KCdEZWxldGUnKSwgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKSB9LFxuICAgICAgICB7XG4gICAgICAgICAgY2FzY2FkZToge1xuICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnQWxzbyBkZWxldGUgY2hpbGQgaGllcmFyY2h5IG9mIHRoaXMgZGV2aWNlLicpLFxuICAgICAgICAgICAgY2hlY2tlZDogc2hvd0RlbGV0ZUNoaWxkcmVuKCksXG4gICAgICAgICAgICBzaG93SWY6IHNob3dEZWxldGVDaGlsZHJlblxuICAgICAgICAgIH0sXG4gICAgICAgICAgd2l0aERldmljZVVzZXI6IHtcbiAgICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICBnZXR0ZXh0KCdBbHNvIGRlbGV0ZSBhc3NvY2lhdGVkIGRldmljZSBvd25lciBcInt7IG93bmVyIH19XCIuJyksXG4gICAgICAgICAgICAgIGRldmljZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc2hvd0lmOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGlzUm9vdERldmljZSA9IGRldmljZS5jOHlfSXNEZXZpY2U7XG4gICAgICAgICAgICAgIGNvbnN0IGhhc0RldmljZVVzZXJBc093bmVyID1cbiAgICAgICAgICAgICAgICBkZXZpY2Uub3duZXIgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmlzRGV2aWNlVXNlcih7IGlkOiBkZXZpY2Uub3duZXIgfSBhcyB1bmtub3duIGFzIElVc2VyKTtcblxuICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbihpc1Jvb3REZXZpY2UgJiYgaGFzRGV2aWNlVXNlckFzT3duZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5kZWxldGUoXG4gICAgICAgIGRldmljZSxcbiAgICAgICAgKG1vZGFsUmVzdWx0IGFzIHsgY29uZmlybU9wdGlvbnM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfSkuY29uZmlybU9wdGlvbnNcbiAgICAgICk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0RldmljZSBkZWxldGVkLicpKTtcbiAgICAgIGlmICh0aGlzLmdhaW5zaWdodFNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudCgnZGV2aWNlR3JpZDpFbnRyeURlbGV0ZWQnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLy8gb25seSBpZiBub3QgY2FuY2VsIGZyb20gbW9kYWxcbiAgICAgIGlmICh0aGlzLmdhaW5zaWdodFNlcnZpY2UgJiYgIWV4KSB7XG4gICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoJ2RldmljZUdyaWQ6RW50cnlEZWxldGlvbkNhbmNlbGxlZCcpO1xuICAgICAgfVxuICAgICAgaWYgKGV4KSB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0RGF0YShcbiAgICBjb2x1bW5zOiBDb2x1bW5bXSxcbiAgICBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uLFxuICAgIHF1ZXJ5OiBhbnkgPSB7fSxcbiAgICB3aXRoQ2hpbGRyZW46IGJvb2xlYW4gPSBmYWxzZSxcbiAgICB0ZXh0OiBzdHJpbmcgPSBudWxsXG4gICkge1xuICAgIGNvbnN0IGZpbHRlcnMgPSB7XG4gICAgICAuLi50aGlzLmdldERldmljZXNGaWx0ZXJzKGNvbHVtbnMsIHBhZ2luYXRpb24sIHF1ZXJ5LCBmYWxzZSwgdGV4dCksXG4gICAgICB3aXRoR3JvdXBzOiB0cnVlLFxuICAgICAgd2l0aENoaWxkcmVuXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmxpc3QoZmlsdGVycyk7XG4gIH1cblxuICBhc3luYyBnZXRDaGlsZERldmljZURhdGEoXG4gICAgY29sdW1uczogQ29sdW1uW10sXG4gICAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbixcbiAgICBxdWVyeTogYW55ID0ge30sXG4gICAgd2l0aENoaWxkcmVuOiBib29sZWFuID0gZmFsc2UsXG4gICAgaWQ6IHN0cmluZ1xuICApIHtcbiAgICBjb25zdCBjaGlsZERldmljZUZpbHRlcnMgPSB0cnVlO1xuICAgIGNvbnN0IGZpbHRlcnMgPSB7XG4gICAgICAuLi50aGlzLmdldERldmljZXNGaWx0ZXJzKGNvbHVtbnMsIHBhZ2luYXRpb24sIHF1ZXJ5LCBjaGlsZERldmljZUZpbHRlcnMpLFxuICAgICAgd2l0aEdyb3VwczogdHJ1ZSxcbiAgICAgIHdpdGhDaGlsZHJlblxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5U2VydmljZS5jaGlsZERldmljZXNMaXN0KGlkLCBmaWx0ZXJzKTtcbiAgfVxuXG4gIGFzeW5jIGdldENvdW50KGNvbHVtbnM6IENvbHVtbltdLCBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uLCBxdWVyeTogYW55ID0ge30sIHRleHQ6IHN0cmluZyA9IG51bGwpIHtcbiAgICBjb25zdCBmaWx0ZXJzID0ge1xuICAgICAgLi4udGhpcy5nZXREZXZpY2VzRmlsdGVycyhjb2x1bW5zLCBwYWdpbmF0aW9uLCBxdWVyeSwgZmFsc2UsIHRleHQpLFxuICAgICAgcGFnZVNpemU6IDEsXG4gICAgICBjdXJyZW50UGFnZTogMVxuICAgIH07XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UubGlzdChmaWx0ZXJzKSkucGFnaW5nLnRvdGFsUGFnZXM7XG4gIH1cblxuICBhc3luYyBnZXRDb3VudENoaWxkRGV2aWNlcyhcbiAgICBjb2x1bW5zOiBDb2x1bW5bXSxcbiAgICBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uLFxuICAgIHF1ZXJ5OiBhbnkgPSB7fSxcbiAgICBpZDogc3RyaW5nXG4gICkge1xuICAgIGNvbnN0IGNoaWxkRGV2aWNlRmlsdGVycyA9IHRydWU7XG4gICAgY29uc3QgZmlsdGVycyA9IHtcbiAgICAgIC4uLnRoaXMuZ2V0RGV2aWNlc0ZpbHRlcnMoY29sdW1ucywgcGFnaW5hdGlvbiwgcXVlcnksIGNoaWxkRGV2aWNlRmlsdGVycyksXG4gICAgICBwYWdlU2l6ZTogMSxcbiAgICAgIGN1cnJlbnRQYWdlOiAxXG4gICAgfTtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5jaGlsZERldmljZXNMaXN0KGlkLCBmaWx0ZXJzKSkucGFnaW5nLnRvdGFsUGFnZXM7XG4gIH1cblxuICBhc3luYyBnZXRUb3RhbENoaWxkRGV2aWNlcyhxdWVyeTogYW55ID0ge30sIGlkOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IGZpbHRlcnMgPSB7XG4gICAgICBxOiB0aGlzLnF1ZXJpZXNVdGlsLmJ1aWxkUXVlcnkocXVlcnkpLFxuICAgICAgcGFnZVNpemU6IDEsXG4gICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZVxuICAgIH07XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UuY2hpbGREZXZpY2VzTGlzdChpZCwgZmlsdGVycykpLnBhZ2luZy50b3RhbFBhZ2VzO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG90YWwocXVlcnk6IGFueSA9IHt9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBmaWx0ZXJzID0ge1xuICAgICAgcTogdGhpcy5xdWVyaWVzVXRpbC5idWlsZFF1ZXJ5KHF1ZXJ5KSxcbiAgICAgIHBhZ2VTaXplOiAxLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWVcbiAgICB9O1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmxpc3QoZmlsdGVycykpLnBhZ2luZy50b3RhbFBhZ2VzO1xuICB9XG5cbiAgZ2V0RGV2aWNlUXVlcnlTdHJpbmcoY29sdW1uczogQ29sdW1uW10sIHF1ZXJ5OiBhbnkpOiBzdHJpbmcge1xuICAgIGxldCBmdWxsUXVlcnkgPSB0aGlzLmdldFF1ZXJ5T2JqKGNvbHVtbnMpO1xuICAgIGZ1bGxRdWVyeSA9IHRoaXMucXVlcmllc1V0aWwuYWRkQW5kRmlsdGVyKGZ1bGxRdWVyeSwgcXVlcnkpO1xuICAgIHJldHVybiB0aGlzLnF1ZXJpZXNVdGlsLmJ1aWxkUXVlcnkoZnVsbFF1ZXJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZ2V0Q29uZmlnJChrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8R3JpZENvbmZpZz4gaW5zdGVhZC5cbiAgICovXG4gIGdldENvbmZpZyhrZXk6IHN0cmluZyA9IHRoaXMuR1JJRF9DT05GSUdfREVGQVVMVF9TVE9SQUdFX0tFWSk6IEdyaWRDb25maWcge1xuICAgIHJldHVybiBzdXBlci5nZXRDb25maWcoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugc2F2ZUNvbmZpZyQoY29uZmlnOiBHcmlkQ29uZmlnLCBrZXk6IHN0cmluZyk6IFByb21pc2U8R3JpZENvbmZpZz4gaW5zdGVhZC5cbiAgICovXG4gIHNhdmVDb25maWcoY29uZmlnOiBHcmlkQ29uZmlnLCBrZXk6IHN0cmluZyA9IHRoaXMuR1JJRF9DT05GSUdfREVGQVVMVF9TVE9SQUdFX0tFWSkge1xuICAgIHN1cGVyLnNhdmVDb25maWcoY29uZmlnLCBrZXkpO1xuICB9XG5cbiAgY2xlYXJDb25maWcoa2V5OiBzdHJpbmcgPSB0aGlzLkdSSURfQ09ORklHX0RFRkFVTFRfU1RPUkFHRV9LRVkpIHtcbiAgICBzdXBlci5jbGVhckNvbmZpZyhrZXkpO1xuICB9XG5cbiAgZ2V0Q29uZmlnJChrZXk6IHN0cmluZyA9IHRoaXMuR1JJRF9DT05GSUdfREVGQVVMVF9TVE9SQUdFX0tFWSk6IE9ic2VydmFibGU8R3JpZENvbmZpZz4ge1xuICAgIHJldHVybiBzdXBlci5nZXRDb25maWckKGtleSk7XG4gIH1cblxuICBzYXZlQ29uZmlnJChcbiAgICBjb25maWc6IEdyaWRDb25maWcsXG4gICAga2V5OiBzdHJpbmcgPSB0aGlzLkdSSURfQ09ORklHX0RFRkFVTFRfU1RPUkFHRV9LRVlcbiAgKTogT2JzZXJ2YWJsZTxHcmlkQ29uZmlnPiB7XG4gICAgcmV0dXJuIHN1cGVyLnNhdmVDb25maWckKGNvbmZpZywga2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGV2aWNlc0ZpbHRlcnMoXG4gICAgY29sdW1uczogQ29sdW1uW10sXG4gICAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbixcbiAgICBxdWVyeTogYW55LFxuICAgIGNoaWxkRGV2aWNlRmlsdGVycz86IGJvb2xlYW4sXG4gICAgdGV4dD86IHN0cmluZ1xuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uKGNoaWxkRGV2aWNlRmlsdGVyc1xuICAgICAgICA/IHsgcXVlcnk6IHRoaXMuZ2V0RGV2aWNlUXVlcnlTdHJpbmcoY29sdW1ucywgcXVlcnkpIH1cbiAgICAgICAgOiB7IHE6IHRoaXMuZ2V0RGV2aWNlUXVlcnlTdHJpbmcoY29sdW1ucywgcXVlcnkpIH0pLFxuICAgICAgLi4uKHRleHQgJiYgeyB0ZXh0IH0pLFxuICAgICAgcGFnZVNpemU6IHBhZ2luYXRpb24ucGFnZVNpemUsXG4gICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50UGFnZSxcbiAgICAgIHdpdGhDaGlsZHJlbjogZmFsc2UsXG4gICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { Injectable, Component, ElementRef, ViewChild, HostListener, Optional, EventEmitter, forwardRef, Input, Output, NgModule } from '@angular/core';
3
3
  import * as i1$1 from '@c8y/ngx-components';
4
4
  import { gettext, BaseColumn, BaseFilteringFormRendererComponent as BaseFilteringFormRendererComponent$1, CustomColumn, getBasicInputArrayFormFieldConfig, SendStatus, PushStatus, DataGridService, Status, FilteringActionType, PRODUCT_EXPERIENCE_EVENT_SOURCE, DataGridComponent, CommonModule, FormsModule, DeviceStatusModule, DataGridModule, DynamicFormsModule, ProductExperienceModule } from '@c8y/ngx-components';
5
- import { map, sortBy, remove, cloneDeep, isUndefined } from 'lodash-es';
5
+ import { map, sortBy, remove, cloneDeep } from 'lodash-es';
6
6
  import * as i1 from '@ngx-translate/core';
7
7
  import * as i3 from '@angular/common';
8
8
  import * as i2 from 'ngx-bootstrap/popover';
@@ -928,19 +928,19 @@ class DeviceGridService extends DataGridService {
928
928
  return this.columnUtilService.getAlarmsHref(device);
929
929
  }
930
930
  delete(device) {
931
+ var _a, _b, _c, _d, _e, _f;
931
932
  return __awaiter(this, void 0, void 0, function* () {
932
933
  try {
933
934
  const deviceWithChildren = yield (yield this.inventoryService.detail(device, { withChildren: true })).data;
934
- const isChildDevice = device.c8y_IsDevice === undefined;
935
- const hasChildDevices = isUndefined(deviceWithChildren.childDevices)
936
- ? false
937
- : deviceWithChildren.childDevices.references.length > 0;
938
- const showDeleteChildDevices = () => !isChildDevice && hasChildDevices;
935
+ const hasChildDevices = ((_b = (_a = deviceWithChildren.childDevices) === null || _a === void 0 ? void 0 : _a.references) === null || _b === void 0 ? void 0 : _b.length) > 0;
936
+ const hasChildAdditions = ((_d = (_c = deviceWithChildren.childAdditions) === null || _c === void 0 ? void 0 : _c.references) === null || _d === void 0 ? void 0 : _d.length) > 0;
937
+ const hasChildAssets = ((_f = (_e = deviceWithChildren.childAssets) === null || _e === void 0 ? void 0 : _e.references) === null || _f === void 0 ? void 0 : _f.length) > 0;
938
+ const showDeleteChildren = () => hasChildAdditions || hasChildDevices || hasChildAssets;
939
939
  const modalResult = yield this.modal.confirm(gettext('Delete device'), this.translateService.instant(gettext(`You are about to delete device "{{ name }}". Do you want to proceed?`), device), Status.DANGER, { ok: gettext('Delete'), cancel: gettext('Cancel') }, {
940
940
  cascade: {
941
- text: gettext('Also delete child devices of this device.'),
942
- checked: showDeleteChildDevices(),
943
- showIf: showDeleteChildDevices
941
+ text: gettext('Also delete child hierarchy of this device.'),
942
+ checked: showDeleteChildren(),
943
+ showIf: showDeleteChildren
944
944
  },
945
945
  withDeviceUser: {
946
946
  text: this.translateService.instant(gettext('Also delete associated device owner "{{ owner }}".'), device),