@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
117 lines • 14.5 kB
JavaScript
import { Injectable } from '@angular/core';
import { DataGridService, gettext, ModalService, Status, UserPreferencesService } from '@c8y/ngx-components';
import { InventoryService } from '@c8y/client';
import { TranslateService } from '@ngx-translate/core';
import { DeviceTypeValueGridColumn } from './type-dashboards-list/device-type-value.grid-column';
import * as i0 from "@angular/core";
import * as i1 from "@c8y/client";
import * as i2 from "@c8y/ngx-components";
import * as i3 from "@ngx-translate/core";
export class DashboardManagerService extends DataGridService {
constructor(inventory, userPreferencesService, modal, translateService) {
super(userPreferencesService);
this.inventory = inventory;
this.userPreferencesService = userPreferencesService;
this.modal = modal;
this.translateService = translateService;
this.baseQuery = {
__filter: {
__and: [
{ 'c8y_Dashboard.deviceType': { __eq: true } },
{ __has: 'c8y_Dashboard.deviceTypeValue' }
]
}
};
this.TYPE_DASHBOARDS_QUERY = '$filter=((c8y_Dashboard.deviceType eq true) and (has(c8y_Dashboard.deviceTypeValue)))';
}
getColumns() {
return [
{
name: 'icon',
header: gettext('Icon'),
path: 'c8y_Dashboard.icon',
sortable: false,
gridTrackSize: '45px'
},
{
name: 'name',
header: gettext('Name'),
path: 'name',
sortable: false,
gridTrackSize: '200px'
},
{
name: 'description',
header: gettext('Description'),
path: 'c8y_Dashboard.description',
sortable: false
},
new DeviceTypeValueGridColumn(),
{
name: 'lastUpdated',
header: gettext('Last update'),
path: 'lastUpdated',
sortable: false,
gridTrackSize: '200px'
}
];
}
getDefaultPagination() {
return {
pageSize: 25,
currentPage: 1
};
}
async getData(columns, pagination, text) {
const filters = this.getFilters(columns, pagination, text);
return await this.inventory.list(filters);
}
async getTotal() {
return (await this.inventory.list({
query: this.TYPE_DASHBOARDS_QUERY,
withTotalElements: true
})).paging.totalElements;
}
async delete(dashboard, onSuccess) {
try {
const msg = gettext(`You are about to delete the dashboard "{{ dashboardName }}" from all devices of type "{{ deviceType }}".
Do you want to proceed?`);
await this.modal.confirm(gettext('Delete dashboard'), this.translateService.instant(msg, {
dashboardName: dashboard.c8y_Dashboard.name,
deviceType: dashboard.c8y_Dashboard.deviceTypeValue
}), Status.DANGER, {
ok: gettext('Delete'),
cancel: gettext('Cancel')
});
await this.inventory.delete(dashboard);
onSuccess();
}
catch (ex) {
// intended empty
}
}
getFilters(columns, pagination, text) {
return {
query: this.getQueryString(columns),
...(text && { text }),
pageSize: pagination.pageSize,
currentPage: pagination.currentPage,
withTotalPages: true,
withTotalElements: true
};
}
getQueryString(columns) {
const queryFromColumns = this.getQueryObj(columns);
const fullQuery = this.queriesUtil.addAndFilter(queryFromColumns, this.baseQuery);
return this.queriesUtil.buildQuery(fullQuery);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DashboardManagerService, deps: [{ token: i1.InventoryService }, { token: i2.UserPreferencesService }, { token: i2.ModalService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DashboardManagerService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DashboardManagerService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i1.InventoryService }, { type: i2.UserPreferencesService }, { type: i2.ModalService }, { type: i3.TranslateService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2Rhc2hib2FyZC1tYW5hZ2VyL2Rhc2hib2FyZC1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBRUwsZUFBZSxFQUNmLE9BQU8sRUFDUCxZQUFZLEVBRVosTUFBTSxFQUNOLHNCQUFzQixFQUN2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQTRCLE1BQU0sYUFBYSxDQUFDO0FBRXpGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7OztBQU1qRyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsZUFBZTtJQVkxRCxZQUNZLFNBQTJCLEVBQzNCLHNCQUE4QyxFQUM5QyxLQUFtQixFQUNuQixnQkFBa0M7UUFFNUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFMcEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFkOUMsY0FBUyxHQUFHO1lBQ1YsUUFBUSxFQUFFO2dCQUNSLEtBQUssRUFBRTtvQkFDTCxFQUFFLDBCQUEwQixFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO29CQUM5QyxFQUFFLEtBQUssRUFBRSwrQkFBK0IsRUFBRTtpQkFDM0M7YUFDRjtTQUNGLENBQUM7UUFDTSwwQkFBcUIsR0FDM0IsdUZBQXVGLENBQUM7SUFRMUYsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLE1BQU07Z0JBQ1osTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxvQkFBb0I7Z0JBQzFCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLGFBQWEsRUFBRSxNQUFNO2FBQ3RCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLE1BQU07Z0JBQ1osTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxNQUFNO2dCQUNaLFFBQVEsRUFBRSxLQUFLO2dCQUNmLGFBQWEsRUFBRSxPQUFPO2FBQ3ZCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLE1BQU0sRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDO2dCQUM5QixJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxRQUFRLEVBQUUsS0FBSzthQUNoQjtZQUNELElBQUkseUJBQXlCLEVBQUU7WUFDL0I7Z0JBQ0UsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLE1BQU0sRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDO2dCQUM5QixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsYUFBYSxFQUFFLE9BQU87YUFDdkI7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPO1lBQ0wsUUFBUSxFQUFFLEVBQUU7WUFDWixXQUFXLEVBQUUsQ0FBQztTQUNmLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FDWCxPQUFpQixFQUNqQixVQUFzQixFQUN0QixJQUFhO1FBRWIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTNELE9BQU8sTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixPQUFPLENBQ0wsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUN4QixLQUFLLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtZQUNqQyxpQkFBaUIsRUFBRSxJQUFJO1NBQ3hCLENBQUMsQ0FDSCxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBd0MsRUFBRSxTQUFxQjtRQUMxRSxJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBVyxPQUFPLENBQ3pCO21DQUMyQixDQUM1QixDQUFDO1lBRUYsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDdEIsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQzNCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO2dCQUNqQyxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJO2dCQUMzQyxVQUFVLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxlQUFlO2FBQ3BELENBQUMsRUFDRixNQUFNLENBQUMsTUFBTSxFQUNiO2dCQUNFLEVBQUUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO2dCQUNyQixNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQzthQUMxQixDQUNGLENBQUM7WUFDRixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZDLFNBQVMsRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDWixpQkFBaUI7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFTyxVQUFVLENBQ2hCLE9BQWlCLEVBQ2pCLFVBQXNCLEVBQ3RCLElBQWE7UUFFYixPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1lBQ25DLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNyQixRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7WUFDN0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXO1lBQ25DLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGlCQUFpQixFQUFFLElBQUk7U0FDeEIsQ0FBQztJQUNKLENBQUM7SUFFTyxjQUFjLENBQUMsT0FBaUI7UUFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7K0dBN0hVLHVCQUF1QjttSEFBdkIsdUJBQXVCLGNBRnRCLE1BQU07OzRGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb2x1bW4sXG4gIERhdGFHcmlkU2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgTW9kYWxTZXJ2aWNlLFxuICBQYWdpbmF0aW9uLFxuICBTdGF0dXMsXG4gIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdExpc3QsIFF1ZXJpZXNVdGlsIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QgfSBmcm9tICcuLi9jb250ZXh0LWRhc2hib2FyZC5tb2RlbCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBEZXZpY2VUeXBlVmFsdWVHcmlkQ29sdW1uIH0gZnJvbSAnLi90eXBlLWRhc2hib2FyZHMtbGlzdC9kZXZpY2UtdHlwZS12YWx1ZS5ncmlkLWNvbHVtbic7XG5pbXBvcnQgeyBUeXBlRGFzaGJvYXJkRmlsdGVyIH0gZnJvbSAnLi9kYXNoYm9hcmQtbWFuYWdlci5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZE1hbmFnZXJTZXJ2aWNlIGV4dGVuZHMgRGF0YUdyaWRTZXJ2aWNlIHtcbiAgcXVlcmllc1V0aWw6IFF1ZXJpZXNVdGlsO1xuICBiYXNlUXVlcnkgPSB7XG4gICAgX19maWx0ZXI6IHtcbiAgICAgIF9fYW5kOiBbXG4gICAgICAgIHsgJ2M4eV9EYXNoYm9hcmQuZGV2aWNlVHlwZSc6IHsgX19lcTogdHJ1ZSB9IH0sXG4gICAgICAgIHsgX19oYXM6ICdjOHlfRGFzaGJvYXJkLmRldmljZVR5cGVWYWx1ZScgfVxuICAgICAgXVxuICAgIH1cbiAgfTtcbiAgcHJpdmF0ZSBUWVBFX0RBU0hCT0FSRFNfUVVFUlkgPVxuICAgICckZmlsdGVyPSgoYzh5X0Rhc2hib2FyZC5kZXZpY2VUeXBlIGVxIHRydWUpIGFuZCAoaGFzKGM4eV9EYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlKSkpJztcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdXNlclByZWZlcmVuY2VzU2VydmljZTogVXNlclByZWZlcmVuY2VzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHtcbiAgICBzdXBlcih1c2VyUHJlZmVyZW5jZXNTZXJ2aWNlKTtcbiAgfVxuXG4gIGdldENvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdpY29uJyxcbiAgICAgICAgaGVhZGVyOiBnZXR0ZXh0KCdJY29uJyksXG4gICAgICAgIHBhdGg6ICdjOHlfRGFzaGJvYXJkLmljb24nLFxuICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgIGdyaWRUcmFja1NpemU6ICc0NXB4J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICBoZWFkZXI6IGdldHRleHQoJ05hbWUnKSxcbiAgICAgICAgcGF0aDogJ25hbWUnLFxuICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgIGdyaWRUcmFja1NpemU6ICcyMDBweCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdkZXNjcmlwdGlvbicsXG4gICAgICAgIGhlYWRlcjogZ2V0dGV4dCgnRGVzY3JpcHRpb24nKSxcbiAgICAgICAgcGF0aDogJ2M4eV9EYXNoYm9hcmQuZGVzY3JpcHRpb24nLFxuICAgICAgICBzb3J0YWJsZTogZmFsc2VcbiAgICAgIH0sXG4gICAgICBuZXcgRGV2aWNlVHlwZVZhbHVlR3JpZENvbHVtbigpLFxuICAgICAge1xuICAgICAgICBuYW1lOiAnbGFzdFVwZGF0ZWQnLFxuICAgICAgICBoZWFkZXI6IGdldHRleHQoJ0xhc3QgdXBkYXRlJyksXG4gICAgICAgIHBhdGg6ICdsYXN0VXBkYXRlZCcsXG4gICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgZ3JpZFRyYWNrU2l6ZTogJzIwMHB4J1xuICAgICAgfVxuICAgIF07XG4gIH1cblxuICBnZXREZWZhdWx0UGFnaW5hdGlvbigpOiBQYWdpbmF0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFnZVNpemU6IDI1LFxuICAgICAgY3VycmVudFBhZ2U6IDFcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZ2V0RGF0YShcbiAgICBjb2x1bW5zOiBDb2x1bW5bXSxcbiAgICBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uLFxuICAgIHRleHQ/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxJUmVzdWx0TGlzdDxJTWFuYWdlZE9iamVjdD4+IHtcbiAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzKGNvbHVtbnMsIHBhZ2luYXRpb24sIHRleHQpO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaW52ZW50b3J5Lmxpc3QoZmlsdGVycyk7XG4gIH1cblxuICBhc3luYyBnZXRUb3RhbCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCB0aGlzLmludmVudG9yeS5saXN0KHtcbiAgICAgICAgcXVlcnk6IHRoaXMuVFlQRV9EQVNIQk9BUkRTX1FVRVJZLFxuICAgICAgICB3aXRoVG90YWxFbGVtZW50czogdHJ1ZVxuICAgICAgfSlcbiAgICApLnBhZ2luZy50b3RhbEVsZW1lbnRzO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlKGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QsIG9uU3VjY2VzczogKCkgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtc2c6IHN0cmluZyA9IGdldHRleHQoXG4gICAgICAgIGBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSB0aGUgZGFzaGJvYXJkIFwie3sgZGFzaGJvYXJkTmFtZSB9fVwiIGZyb20gYWxsIGRldmljZXMgb2YgdHlwZSBcInt7IGRldmljZVR5cGUgfX1cIi5cbiAgICAgICAgICAgRG8geW91IHdhbnQgdG8gcHJvY2VlZD9gXG4gICAgICApO1xuXG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ0RlbGV0ZSBkYXNoYm9hcmQnKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQobXNnLCB7XG4gICAgICAgICAgZGFzaGJvYXJkTmFtZTogZGFzaGJvYXJkLmM4eV9EYXNoYm9hcmQubmFtZSxcbiAgICAgICAgICBkZXZpY2VUeXBlOiBkYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWVcbiAgICAgICAgfSksXG4gICAgICAgIFN0YXR1cy5EQU5HRVIsXG4gICAgICAgIHtcbiAgICAgICAgICBvazogZ2V0dGV4dCgnRGVsZXRlJyksXG4gICAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKVxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgYXdhaXQgdGhpcy5pbnZlbnRvcnkuZGVsZXRlKGRhc2hib2FyZCk7XG4gICAgICBvblN1Y2Nlc3MoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLy8gaW50ZW5kZWQgZW1wdHlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcnMoXG4gICAgY29sdW1uczogQ29sdW1uW10sXG4gICAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbixcbiAgICB0ZXh0Pzogc3RyaW5nXG4gICk6IFR5cGVEYXNoYm9hcmRGaWx0ZXIge1xuICAgIHJldHVybiB7XG4gICAgICBxdWVyeTogdGhpcy5nZXRRdWVyeVN0cmluZyhjb2x1bW5zKSxcbiAgICAgIC4uLih0ZXh0ICYmIHsgdGV4dCB9KSxcbiAgICAgIHBhZ2VTaXplOiBwYWdpbmF0aW9uLnBhZ2VTaXplLFxuICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudFBhZ2UsXG4gICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZSxcbiAgICAgIHdpdGhUb3RhbEVsZW1lbnRzOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UXVlcnlTdHJpbmcoY29sdW1uczogQ29sdW1uW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHF1ZXJ5RnJvbUNvbHVtbnMgPSB0aGlzLmdldFF1ZXJ5T2JqKGNvbHVtbnMpO1xuICAgIGNvbnN0IGZ1bGxRdWVyeSA9IHRoaXMucXVlcmllc1V0aWwuYWRkQW5kRmlsdGVyKHF1ZXJ5RnJvbUNvbHVtbnMsIHRoaXMuYmFzZVF1ZXJ5KTtcbiAgICByZXR1cm4gdGhpcy5xdWVyaWVzVXRpbC5idWlsZFF1ZXJ5KGZ1bGxRdWVyeSk7XG4gIH1cbn1cbiJdfQ==