UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

145 lines 16.4 kB
import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; import { CoreModule, hookNavigator, hookTab } from '@c8y/ngx-components'; import { BulkOperationFromSingleModule } from '@c8y/ngx-components/operations/bulk-operation-from-single'; import { BulkOperationsListModule } from '@c8y/ngx-components/operations/bulk-operations-list'; import { BulkOperationsServiceModule } from '@c8y/ngx-components/operations/bulk-operations-service'; import { BulkOperationsStepperContainerModule } from '@c8y/ngx-components/operations/bulk-operations-stepper-container'; import { StepperBulkTypeConfigurationModule } from '@c8y/ngx-components/operations/stepper-bulk-type-configuration'; import { StepperBulkTypeDeviceProfileModule } from '@c8y/ngx-components/operations/stepper-bulk-type-device-profile'; import { StepperBulkTypeFirmwareModule } from '@c8y/ngx-components/operations/stepper-bulk-type-firmware'; import { StepperBulkTypeSoftwareModule } from '@c8y/ngx-components/operations/stepper-bulk-type-software'; import { deviceControlOverviewFeatureProvider, deviceControlTabFeatureProvider } from '@c8y/ngx-components/operations/operations-list'; import { OperationsNavigationFactory } from './factories/nav.factory'; import { OperationsTabsFactory } from './factories/tabs.factory'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; export const operationsRoutes = [ { path: 'devicecontrol', redirectTo: 'devicecontrol/single', pathMatch: 'full' } ]; /** * This module sets up the 'Device control' view. By importing it in your custom application you will have: * - a 'Device control' tab in device details view * - a 'Device control' entry in the 'Overviews' section of navigator * - 'Bulk operations' tab on the 'Device control' page * - list view of existing bulk operations with expandable details and options to filter * - guided stepper dialogs to schedule new bulk operations of supported types * (Configuration update, Firmware update, Software update, Apply device profile). * * Additionaly you can use the modules imported by {@link OperationsModule} separately to achieve * the results you wish to have in your application, e.g.: * - import {@link BulkOperationsListModule} and {@link BulkOperationsServiceModule} * to have an overview of existing bulk operation with expandable details * - additionaly import {@link BulkOperationsStepperContainerModule} and any of the existing * `StepperBulkType*Module` modules ({@link StepperBulkTypeConfigurationModule}, * {@link StepperBulkTypeFirmwareModule}, {@link StepperBulkTypeSoftwareModule}, * {@link StepperBulkTypeDeviceProfileModule}) to have the option * to create new bulk operation in a guided stepper dialog. * * ```typescript * import { BulkOperationsServiceModule } from '@c8y/ngx-components/operations/bulk-operations-service'; * import { BulkOperationsListModule } from '@c8y/ngx-components/operations/bulk-operations-list'; * * @NgModule({ * imports: [ * [...] * BulkOperationsServiceModule, * BulkOperationsListModule * ], * [...] * }) * export class CustomOperationsModule {}``` * respectively * ```typescript * import { BulkOperationsStepperContainerModule } from '@c8y/ngx-components/operations/bulk-operations-stepper-container'; * import { BulkOperationsServiceModule } from '@c8y/ngx-components/operations/bulk-operations-service'; * import { BulkOperationsListModule } from '@c8y/ngx-components/operations/bulk-operations-list'; * import { StepperBulkTypeSoftwareModule } from '@c8y/ngx-components/operations/stepper-bulk-type-software'; * * @NgModule({ * imports: [ * [...] * BulkOperationsServiceModule, * BulkOperationsListModule, * BulkOperationsStepperContainerModule, * StepperBulkTypeSoftwareModule * ], * [...] * }) * export class CustomOperationsModule {}``` * You can provide your own bulk operation stepper by registering a component via the `hookListBulkType`: * * ```typescript * import { * hookListBulkType, * baseUrl * } from '@c8y/ngx-components/operations/bulk-operations-service'; * * [...] * * providers: [ * hookListBulkType({ * type: 'my-bulk-op-type', * c8yIcon: 'c8y-tools', * name: 'My bulk op type', * path: `${baseUrl}my-type`, * component: StepperMyBulkTypeComponent, * fragments: ['c8y_MyType'], * selected: false * }) * ]``` */ export class OperationsModule { static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OperationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: OperationsModule, imports: [CoreModule, i1.RouterModule, BulkOperationFromSingleModule, BulkOperationsListModule, BulkOperationsServiceModule, BulkOperationsStepperContainerModule, StepperBulkTypeConfigurationModule, StepperBulkTypeFirmwareModule, StepperBulkTypeSoftwareModule, StepperBulkTypeDeviceProfileModule] }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OperationsModule, providers: [ hookTab(OperationsTabsFactory), hookNavigator(OperationsNavigationFactory), deviceControlOverviewFeatureProvider, deviceControlTabFeatureProvider ], imports: [CoreModule, RouterModule.forChild(operationsRoutes), BulkOperationFromSingleModule, BulkOperationsListModule, BulkOperationsServiceModule, BulkOperationsStepperContainerModule, StepperBulkTypeConfigurationModule, StepperBulkTypeFirmwareModule, StepperBulkTypeSoftwareModule, StepperBulkTypeDeviceProfileModule] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OperationsModule, decorators: [{ type: NgModule, args: [{ imports: [ CoreModule, RouterModule.forChild(operationsRoutes), BulkOperationFromSingleModule, BulkOperationsListModule, BulkOperationsServiceModule, BulkOperationsStepperContainerModule, StepperBulkTypeConfigurationModule, StepperBulkTypeFirmwareModule, StepperBulkTypeSoftwareModule, StepperBulkTypeDeviceProfileModule ], providers: [ hookTab(OperationsTabsFactory), hookNavigator(OperationsNavigationFactory), deviceControlOverviewFeatureProvider, deviceControlTabFeatureProvider ] }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9vcGVyYXRpb25zL29wZXJhdGlvbnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBUyxNQUFNLHFCQUFxQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzFHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ3JILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzFHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRTFHLE9BQU8sRUFDTCxvQ0FBb0MsRUFDcEMsK0JBQStCLEVBQ2hDLE1BQU0sZ0RBQWdELENBQUM7QUFDeEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQUVqRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBWTtJQUN2QztRQUNFLElBQUksRUFBRSxlQUFlO1FBQ3JCLFVBQVUsRUFBRSxzQkFBc0I7UUFDbEMsU0FBUyxFQUFFLE1BQU07S0FDbEI7Q0FDRixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUVHO0FBcUJILE1BQU0sT0FBTyxnQkFBZ0I7K0dBQWhCLGdCQUFnQjtnSEFBaEIsZ0JBQWdCLFlBbEJ6QixVQUFVLG1CQUVWLDZCQUE2QjtZQUM3Qix3QkFBd0I7WUFDeEIsMkJBQTJCO1lBQzNCLG9DQUFvQztZQUNwQyxrQ0FBa0M7WUFDbEMsNkJBQTZCO1lBQzdCLDZCQUE2QjtZQUM3QixrQ0FBa0M7Z0hBU3pCLGdCQUFnQixhQVBoQjtZQUNULE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztZQUM5QixhQUFhLENBQUMsMkJBQTJCLENBQUM7WUFDMUMsb0NBQW9DO1lBQ3BDLCtCQUErQjtTQUNoQyxZQWhCQyxVQUFVO1lBQ1YsWUFBWSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN2Qyw2QkFBNkI7WUFDN0Isd0JBQXdCO1lBQ3hCLDJCQUEyQjtZQUMzQixvQ0FBb0M7WUFDcEMsa0NBQWtDO1lBQ2xDLDZCQUE2QjtZQUM3Qiw2QkFBNkI7WUFDN0Isa0NBQWtDOzs0RkFTekIsZ0JBQWdCO2tCQXBCNUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsVUFBVTt3QkFDVixZQUFZLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO3dCQUN2Qyw2QkFBNkI7d0JBQzdCLHdCQUF3Qjt3QkFDeEIsMkJBQTJCO3dCQUMzQixvQ0FBb0M7d0JBQ3BDLGtDQUFrQzt3QkFDbEMsNkJBQTZCO3dCQUM3Qiw2QkFBNkI7d0JBQzdCLGtDQUFrQztxQkFDbkM7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQzt3QkFDOUIsYUFBYSxDQUFDLDJCQUEyQixDQUFDO3dCQUMxQyxvQ0FBb0M7d0JBQ3BDLCtCQUErQjtxQkFDaEM7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQ29yZU1vZHVsZSwgaG9va05hdmlnYXRvciwgaG9va1RhYiwgUm91dGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEJ1bGtPcGVyYXRpb25Gcm9tU2luZ2xlTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL2J1bGstb3BlcmF0aW9uLWZyb20tc2luZ2xlJztcbmltcG9ydCB7IEJ1bGtPcGVyYXRpb25zTGlzdE1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9idWxrLW9wZXJhdGlvbnMtbGlzdCc7XG5pbXBvcnQgeyBCdWxrT3BlcmF0aW9uc1NlcnZpY2VNb2R1bGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL29wZXJhdGlvbnMvYnVsay1vcGVyYXRpb25zLXNlcnZpY2UnO1xuaW1wb3J0IHsgQnVsa09wZXJhdGlvbnNTdGVwcGVyQ29udGFpbmVyTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL2J1bGstb3BlcmF0aW9ucy1zdGVwcGVyLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBTdGVwcGVyQnVsa1R5cGVDb25maWd1cmF0aW9uTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL3N0ZXBwZXItYnVsay10eXBlLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgU3RlcHBlckJ1bGtUeXBlRGV2aWNlUHJvZmlsZU1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9zdGVwcGVyLWJ1bGstdHlwZS1kZXZpY2UtcHJvZmlsZSc7XG5pbXBvcnQgeyBTdGVwcGVyQnVsa1R5cGVGaXJtd2FyZU1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9zdGVwcGVyLWJ1bGstdHlwZS1maXJtd2FyZSc7XG5pbXBvcnQgeyBTdGVwcGVyQnVsa1R5cGVTb2Z0d2FyZU1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9zdGVwcGVyLWJ1bGstdHlwZS1zb2Z0d2FyZSc7XG5cbmltcG9ydCB7XG4gIGRldmljZUNvbnRyb2xPdmVydmlld0ZlYXR1cmVQcm92aWRlcixcbiAgZGV2aWNlQ29udHJvbFRhYkZlYXR1cmVQcm92aWRlclxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL29wZXJhdGlvbnMvb3BlcmF0aW9ucy1saXN0JztcbmltcG9ydCB7IE9wZXJhdGlvbnNOYXZpZ2F0aW9uRmFjdG9yeSB9IGZyb20gJy4vZmFjdG9yaWVzL25hdi5mYWN0b3J5JztcbmltcG9ydCB7IE9wZXJhdGlvbnNUYWJzRmFjdG9yeSB9IGZyb20gJy4vZmFjdG9yaWVzL3RhYnMuZmFjdG9yeSc7XG5cbmV4cG9ydCBjb25zdCBvcGVyYXRpb25zUm91dGVzOiBSb3V0ZVtdID0gW1xuICB7XG4gICAgcGF0aDogJ2RldmljZWNvbnRyb2wnLFxuICAgIHJlZGlyZWN0VG86ICdkZXZpY2Vjb250cm9sL3NpbmdsZScsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCdcbiAgfVxuXTtcblxuLyoqXG4gKiBUaGlzIG1vZHVsZSBzZXRzIHVwIHRoZSAnRGV2aWNlIGNvbnRyb2wnIHZpZXcuIEJ5IGltcG9ydGluZyBpdCBpbiB5b3VyIGN1c3RvbSBhcHBsaWNhdGlvbiB5b3Ugd2lsbCBoYXZlOlxuICogLSBhICdEZXZpY2UgY29udHJvbCcgdGFiIGluIGRldmljZSBkZXRhaWxzIHZpZXdcbiAqIC0gYSAnRGV2aWNlIGNvbnRyb2wnIGVudHJ5IGluIHRoZSAnT3ZlcnZpZXdzJyBzZWN0aW9uIG9mIG5hdmlnYXRvclxuICogLSAnQnVsayBvcGVyYXRpb25zJyB0YWIgb24gdGhlICdEZXZpY2UgY29udHJvbCcgcGFnZVxuICogLSBsaXN0IHZpZXcgb2YgZXhpc3RpbmcgYnVsayBvcGVyYXRpb25zIHdpdGggZXhwYW5kYWJsZSBkZXRhaWxzIGFuZCBvcHRpb25zIHRvIGZpbHRlclxuICogLSBndWlkZWQgc3RlcHBlciBkaWFsb2dzIHRvIHNjaGVkdWxlIG5ldyBidWxrIG9wZXJhdGlvbnMgb2Ygc3VwcG9ydGVkIHR5cGVzXG4gKiAoQ29uZmlndXJhdGlvbiB1cGRhdGUsIEZpcm13YXJlIHVwZGF0ZSwgU29mdHdhcmUgdXBkYXRlLCBBcHBseSBkZXZpY2UgcHJvZmlsZSkuXG4gKlxuICogQWRkaXRpb25hbHkgeW91IGNhbiB1c2UgdGhlIG1vZHVsZXMgaW1wb3J0ZWQgYnkge0BsaW5rIE9wZXJhdGlvbnNNb2R1bGV9IHNlcGFyYXRlbHkgdG8gYWNoaWV2ZVxuICogdGhlIHJlc3VsdHMgeW91IHdpc2ggdG8gaGF2ZSBpbiB5b3VyIGFwcGxpY2F0aW9uLCBlLmcuOlxuICogLSBpbXBvcnQge0BsaW5rIEJ1bGtPcGVyYXRpb25zTGlzdE1vZHVsZX0gYW5kIHtAbGluayBCdWxrT3BlcmF0aW9uc1NlcnZpY2VNb2R1bGV9XG4gKiB0byBoYXZlIGFuIG92ZXJ2aWV3IG9mIGV4aXN0aW5nIGJ1bGsgb3BlcmF0aW9uIHdpdGggZXhwYW5kYWJsZSBkZXRhaWxzXG4gKiAtIGFkZGl0aW9uYWx5IGltcG9ydCB7QGxpbmsgQnVsa09wZXJhdGlvbnNTdGVwcGVyQ29udGFpbmVyTW9kdWxlfSBhbmQgYW55IG9mIHRoZSBleGlzdGluZ1xuICogYFN0ZXBwZXJCdWxrVHlwZSpNb2R1bGVgIG1vZHVsZXMgKHtAbGluayBTdGVwcGVyQnVsa1R5cGVDb25maWd1cmF0aW9uTW9kdWxlfSxcbiAqIHtAbGluayBTdGVwcGVyQnVsa1R5cGVGaXJtd2FyZU1vZHVsZX0sIHtAbGluayBTdGVwcGVyQnVsa1R5cGVTb2Z0d2FyZU1vZHVsZX0sXG4gKiB7QGxpbmsgU3RlcHBlckJ1bGtUeXBlRGV2aWNlUHJvZmlsZU1vZHVsZX0pIHRvIGhhdmUgdGhlIG9wdGlvblxuICogdG8gY3JlYXRlIG5ldyBidWxrIG9wZXJhdGlvbiBpbiBhIGd1aWRlZCBzdGVwcGVyIGRpYWxvZy5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBCdWxrT3BlcmF0aW9uc1NlcnZpY2VNb2R1bGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL29wZXJhdGlvbnMvYnVsay1vcGVyYXRpb25zLXNlcnZpY2UnO1xuICogaW1wb3J0IHsgQnVsa09wZXJhdGlvbnNMaXN0TW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL2J1bGstb3BlcmF0aW9ucy1saXN0JztcbiAqXG4gKiBATmdNb2R1bGUoe1xuICogICBpbXBvcnRzOiBbXG4gKiAgICAgWy4uLl1cbiAqICAgICBCdWxrT3BlcmF0aW9uc1NlcnZpY2VNb2R1bGUsXG4gKiAgICAgQnVsa09wZXJhdGlvbnNMaXN0TW9kdWxlXG4gKiAgIF0sXG4gKiAgIFsuLi5dXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEN1c3RvbU9wZXJhdGlvbnNNb2R1bGUge31gYGBcbiAqIHJlc3BlY3RpdmVseVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgQnVsa09wZXJhdGlvbnNTdGVwcGVyQ29udGFpbmVyTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL2J1bGstb3BlcmF0aW9ucy1zdGVwcGVyLWNvbnRhaW5lcic7XG4gKiBpbXBvcnQgeyBCdWxrT3BlcmF0aW9uc1NlcnZpY2VNb2R1bGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL29wZXJhdGlvbnMvYnVsay1vcGVyYXRpb25zLXNlcnZpY2UnO1xuICogaW1wb3J0IHsgQnVsa09wZXJhdGlvbnNMaXN0TW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL2J1bGstb3BlcmF0aW9ucy1saXN0JztcbiAqIGltcG9ydCB7IFN0ZXBwZXJCdWxrVHlwZVNvZnR3YXJlTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL3N0ZXBwZXItYnVsay10eXBlLXNvZnR3YXJlJztcbiAqXG4gKiBATmdNb2R1bGUoe1xuICogICBpbXBvcnRzOiBbXG4gKiAgICAgWy4uLl1cbiAqICAgICBCdWxrT3BlcmF0aW9uc1NlcnZpY2VNb2R1bGUsXG4gKiAgICAgQnVsa09wZXJhdGlvbnNMaXN0TW9kdWxlLFxuICogICAgIEJ1bGtPcGVyYXRpb25zU3RlcHBlckNvbnRhaW5lck1vZHVsZSxcbiAqICAgICBTdGVwcGVyQnVsa1R5cGVTb2Z0d2FyZU1vZHVsZVxuICogICBdLFxuICogICBbLi4uXVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBDdXN0b21PcGVyYXRpb25zTW9kdWxlIHt9YGBgXG4gKiBZb3UgY2FuIHByb3ZpZGUgeW91ciBvd24gYnVsayBvcGVyYXRpb24gc3RlcHBlciBieSByZWdpc3RlcmluZyBhIGNvbXBvbmVudCB2aWEgdGhlIGBob29rTGlzdEJ1bGtUeXBlYDpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQge1xuICogICBob29rTGlzdEJ1bGtUeXBlLFxuICogICBiYXNlVXJsXG4gKiB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9idWxrLW9wZXJhdGlvbnMtc2VydmljZSc7XG4gKlxuICogWy4uLl1cbiAqXG4gKiBwcm92aWRlcnM6IFtcbiAqICAgaG9va0xpc3RCdWxrVHlwZSh7XG4gKiAgICAgdHlwZTogJ215LWJ1bGstb3AtdHlwZScsXG4gKiAgICAgYzh5SWNvbjogJ2M4eS10b29scycsXG4gKiAgICAgbmFtZTogJ015IGJ1bGsgb3AgdHlwZScsXG4gKiAgICAgcGF0aDogYCR7YmFzZVVybH1teS10eXBlYCxcbiAqICAgICBjb21wb25lbnQ6IFN0ZXBwZXJNeUJ1bGtUeXBlQ29tcG9uZW50LFxuICogICAgIGZyYWdtZW50czogWydjOHlfTXlUeXBlJ10sXG4gKiAgICAgc2VsZWN0ZWQ6IGZhbHNlXG4gKiAgIH0pXG4gKiBdYGBgXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb3JlTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZS5mb3JDaGlsZChvcGVyYXRpb25zUm91dGVzKSxcbiAgICBCdWxrT3BlcmF0aW9uRnJvbVNpbmdsZU1vZHVsZSxcbiAgICBCdWxrT3BlcmF0aW9uc0xpc3RNb2R1bGUsXG4gICAgQnVsa09wZXJhdGlvbnNTZXJ2aWNlTW9kdWxlLFxuICAgIEJ1bGtPcGVyYXRpb25zU3RlcHBlckNvbnRhaW5lck1vZHVsZSxcbiAgICBTdGVwcGVyQnVsa1R5cGVDb25maWd1cmF0aW9uTW9kdWxlLFxuICAgIFN0ZXBwZXJCdWxrVHlwZUZpcm13YXJlTW9kdWxlLFxuICAgIFN0ZXBwZXJCdWxrVHlwZVNvZnR3YXJlTW9kdWxlLFxuICAgIFN0ZXBwZXJCdWxrVHlwZURldmljZVByb2ZpbGVNb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgaG9va1RhYihPcGVyYXRpb25zVGFic0ZhY3RvcnkpLFxuICAgIGhvb2tOYXZpZ2F0b3IoT3BlcmF0aW9uc05hdmlnYXRpb25GYWN0b3J5KSxcbiAgICBkZXZpY2VDb250cm9sT3ZlcnZpZXdGZWF0dXJlUHJvdmlkZXIsXG4gICAgZGV2aWNlQ29udHJvbFRhYkZlYXR1cmVQcm92aWRlclxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE9wZXJhdGlvbnNNb2R1bGUge31cbiJdfQ==