@tiba-spark/client-shared-lib 26.2.0-228 → 26.2.0-241
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/esm2022/libraries/constants/version-constants.mjs +2 -1
- package/esm2022/libraries/modules/facility/facility.state.mjs +9 -4
- package/esm2022/libraries/modules/login/login.actions.mjs +1 -1
- package/esm2022/libraries/modules/login/login.state.mjs +8 -2
- package/esm2022/libraries/modules/park-manager/park-manager.actions.mjs +7 -1
- package/esm2022/libraries/modules/park-manager/park-manager.state.mjs +20 -3
- package/fesm2022/tiba-spark-client-shared-lib.mjs +41 -6
- package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
- package/libraries/constants/version-constants.d.ts +1 -0
- package/libraries/constants/version-constants.d.ts.map +1 -1
- package/libraries/modules/facility/facility.state.d.ts.map +1 -1
- package/libraries/modules/login/login.actions.d.ts +2 -2
- package/libraries/modules/login/login.actions.d.ts.map +1 -1
- package/libraries/modules/login/login.state.d.ts.map +1 -1
- package/libraries/modules/park-manager/park-manager.actions.d.ts +5 -0
- package/libraries/modules/park-manager/park-manager.actions.d.ts.map +1 -1
- package/libraries/modules/park-manager/park-manager.state.d.ts +4 -1
- package/libraries/modules/park-manager/park-manager.state.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -11,7 +11,7 @@ import { getDefaultDeviceStatus } from '../../utils/device.util';
|
|
|
11
11
|
import { toNumberMap } from '../../utils/lang.util';
|
|
12
12
|
import { FacilityState } from '../facility/facility.state';
|
|
13
13
|
import { SidenavState } from '../sidenav/sidenav.state';
|
|
14
|
-
import { ClearDeviceAction, ClearDeviceEventsExpanded, ClearDevicesAction, ClearEventActivitiesExpanded, ClearLprTransactionsExpanded, ClearSelectedRow, DeviceActivityChangedAction, DeviceEventChangedAction, DeviceStatusChangedAction, LoadDeviceAction, LoadDeviceEventActivitiesAction, LoadDeviceEventsAction, LoadDeviceEventsCollapse, LoadDeviceLprTransactionsAction, LoadDevicesAction, LoadDevicesByTypeAction, LoadDeviceStatusAction, LoadEventActivitiesCollapse, LoadLprTransactionsCollapse, LoadSelectedDeviceAction, LprTransactionsChangedAction, SelectDeviceAction, SelectedRowAction, SetDeviceEventsExpanded, SetDeviceStatusAction, SetDeviceViewModeAction, SetEventActivitiesExpanded, SetLprTransactionsExpanded } from './park-manager.actions';
|
|
14
|
+
import { ClearDeviceAction, ClearDeviceEventsExpanded, ClearDevicesAction, ClearEventActivitiesExpanded, ClearLprTransactionsExpanded, ClearSelectedRow, DeviceActivityChangedAction, DeviceEventChangedAction, DeviceStatusChangedAction, LoadDeviceAction, LoadDeviceEventActivitiesAction, LoadDeviceEventsAction, LoadDeviceEventsCollapse, LoadDeviceLprTransactionsAction, LoadDevicesAction, LoadDevicesByTypeAction, LoadDeviceStatusAction, LoadEventActivitiesCollapse, LoadLprTransactionsCollapse, LoadSelectedDeviceAction, LprTransactionsChangedAction, SelectDeviceAction, SelectLprTransactionsRowAction, SelectedRowAction, SetDeviceEventsExpanded, SetDeviceStatusAction, SetDeviceViewModeAction, SetEventActivitiesExpanded, SetLprTransactionsExpanded } from './park-manager.actions';
|
|
15
15
|
import { AppModule, SubModule } from '../../service-proxy/cloud-service-proxies';
|
|
16
16
|
import * as i0 from "@angular/core";
|
|
17
17
|
import * as i1 from "../../service-proxy";
|
|
@@ -87,6 +87,9 @@ let ParkManagerState = class ParkManagerState {
|
|
|
87
87
|
static selectedRow(state) {
|
|
88
88
|
return state.selectedRow;
|
|
89
89
|
}
|
|
90
|
+
static selectedLprTransactionsRow(state) {
|
|
91
|
+
return state.selectedLprTransactionsRow;
|
|
92
|
+
}
|
|
90
93
|
onSetDeviceViewModeAction(ctx, action) {
|
|
91
94
|
ctx.patchState({
|
|
92
95
|
devicesViewMode: action.viewMode,
|
|
@@ -233,6 +236,7 @@ let ParkManagerState = class ParkManagerState {
|
|
|
233
236
|
lprTransactionsExpanded: [],
|
|
234
237
|
selectedDeviceStatus: null,
|
|
235
238
|
selectedDeviceParkId: null,
|
|
239
|
+
selectedLprTransactionsRow: null,
|
|
236
240
|
});
|
|
237
241
|
// wait for devices store to be loaded before loading a device
|
|
238
242
|
return this.store.select(ParkManagerState_1.devices)
|
|
@@ -250,6 +254,7 @@ let ParkManagerState = class ParkManagerState {
|
|
|
250
254
|
lprTransactions: null,
|
|
251
255
|
deviceEvents: null,
|
|
252
256
|
deviceRemoteCommands: null,
|
|
257
|
+
selectedLprTransactionsRow: null,
|
|
253
258
|
});
|
|
254
259
|
}
|
|
255
260
|
onDeviceStatusChangedAction(ctx, action) {
|
|
@@ -313,6 +318,11 @@ let ParkManagerState = class ParkManagerState {
|
|
|
313
318
|
},
|
|
314
319
|
});
|
|
315
320
|
}
|
|
321
|
+
onSelectLprTransactionsRowAction(ctx, action) {
|
|
322
|
+
ctx.patchState({
|
|
323
|
+
selectedLprTransactionsRow: action.value
|
|
324
|
+
});
|
|
325
|
+
}
|
|
316
326
|
patchDevices(ctx, devices) {
|
|
317
327
|
devices?.forEach(device => device.deviceStatus = device.deviceStatus ?? getDefaultDeviceStatus(device));
|
|
318
328
|
ctx.patchState({
|
|
@@ -516,6 +526,9 @@ __decorate([
|
|
|
516
526
|
__decorate([
|
|
517
527
|
Action(SelectedRowAction)
|
|
518
528
|
], ParkManagerState.prototype, "onSelectedRowAction", null);
|
|
529
|
+
__decorate([
|
|
530
|
+
Action(SelectLprTransactionsRowAction)
|
|
531
|
+
], ParkManagerState.prototype, "onSelectLprTransactionsRowAction", null);
|
|
519
532
|
__decorate([
|
|
520
533
|
Action(ClearSelectedRow)
|
|
521
534
|
], ParkManagerState.prototype, "onClearSelectedRow", null);
|
|
@@ -579,6 +592,9 @@ __decorate([
|
|
|
579
592
|
__decorate([
|
|
580
593
|
Selector()
|
|
581
594
|
], ParkManagerState, "selectedRow", null);
|
|
595
|
+
__decorate([
|
|
596
|
+
Selector()
|
|
597
|
+
], ParkManagerState, "selectedLprTransactionsRow", null);
|
|
582
598
|
ParkManagerState = ParkManagerState_1 = __decorate([
|
|
583
599
|
State({
|
|
584
600
|
name: 'parkManager',
|
|
@@ -602,11 +618,12 @@ ParkManagerState = ParkManagerState_1 = __decorate([
|
|
|
602
618
|
eventActivitiesExpanded: [],
|
|
603
619
|
lprTransactionsExpanded: [],
|
|
604
620
|
selectedRow: null,
|
|
621
|
+
selectedLprTransactionsRow: null,
|
|
605
622
|
},
|
|
606
623
|
})
|
|
607
624
|
], ParkManagerState);
|
|
608
625
|
export { ParkManagerState };
|
|
609
626
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ParkManagerState, decorators: [{
|
|
610
627
|
type: Injectable
|
|
611
|
-
}], ctorParameters: () => [{ type: i1.Rpc.DeviceRpcServiceProxy }, { type: i2.FacilityRpcServiceProxy }, { type: i3.Store }], propDecorators: { onSetDeviceViewModeAction: [], onLoadDeviceEventsCollapse: [], onSetDeviceEventsExpanded: [], onLoadEventActivitiesCollapse: [], onSetEventActivitiesExpanded: [], onLoadLprTransactionsCollapse: [], onSetLprTransactionsExpanded: [], onClearDeviceEventsExpanded: [], onClearEventActivitiesExpanded: [], onClearLprTransactionsExpanded: [], onLoadDevicesAction: [], onLoadDevicesByTypeAction: [], onClearDevicesAction: [], onSelectDeviceAction: [], onLoadSelectedDeviceAction: [], onLoadDeviceStatusAction: [], onSetDeviceStatusAction: [], onLoadDeviceEventActivitiesAction: [], onLoadDeviceLprTransactionsAction: [], onLoadDeviceEventsAction: [], onLoadDeviceAction: [], onClearDeviceAction: [], onDeviceStatusChangedAction: [], onDeviceEventChangedAction: [], onDeviceActivityChangedAction: [], onLprTransactionsChangedAction: [], onSelectedRowAction: [], onClearSelectedRow: [] } });
|
|
612
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyay1tYW5hZ2VyLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL3BhcmstbWFuYWdlci9wYXJrLW1hbmFnZXIuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBSXJFLE9BQU8sRUFDTSxjQUFjLEVBQTZCLGVBQWUsRUFBRSxnQkFBZ0IsRUFDM0MsY0FBYyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUNqRyxxQkFBcUIsRUFDdEIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQWEsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLEVBQUUsNEJBQTRCLEVBQzlGLDRCQUE0QixFQUFFLGdCQUFnQixFQUFFLDJCQUEyQixFQUFFLHdCQUF3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bkIseUJBQXlCLE1BUXpCLG9CQUFvQixNQUtwQixvQkFBb0IsTUFNcEIsMEJBQTBCLE1BUTFCLHdCQUF3QixNQW1CeEIsdUJBQXVCLE1BUXZCLGlDQUFpQyxNQVdqQyxpQ0FBaUMsTUFXakMsd0JBQXdCLE1BV3hCLGtCQUFrQixNQTZCbEIsbUJBQW1CLE1BYW5CLDJCQUEyQixNQWdDM0IsMEJBQTBCLE1BYTFCLDZCQUE2QixNQVk3Qiw4QkFBOEIsTUFVOUIsbUJBQW1CLE1BeUNuQixrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb24sIFNlbGVjdG9yLCBTdGF0ZSwgU3RhdGVDb250ZXh0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEZXZpY2VzVmlld01vZGUgfSBmcm9tICcuLi8uLi9lbnVtcy9kZXZpY2VzLXZpZXctbW9kZS5lbnVtJztcbmltcG9ydCB7IFNlbGVjdGVkUm93IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zZWxlY3RlZC1yb3cuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRhYmxlRGF0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGFibGUtZGF0YS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUnBjIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eSc7XG5pbXBvcnQge1xuICBEZXZpY2VEdG8sIERldmljZUV2ZW50RHRvLCBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvLCBEZXZpY2VTdGF0dXNEdG8sIEV2ZW50QWN0aXZpdHlEdG8sXG4gIEZhY2lsaXR5UnBjU2VydmljZVByb3h5LCBMcHJUcmFuc2FjdGlvbkR0bywgT3JkZXJEaXJlY3Rpb24sIFBhcmtlclRpY2tldFR5cGUsIFR5cGVDYXN0RGV2aWNlRXZlbnQsXG4gIFR5cGVDYXN0RXZlbnRBY3Rpdml0eVxufSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L3JwYy1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgZ2V0TW9tZW50TnVsbGFibGUgfSBmcm9tICcuLi8uLi91dGlscy9kYXRlLnV0aWwnO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdERldmljZVN0YXR1cyB9IGZyb20gJy4uLy4uL3V0aWxzL2RldmljZS51dGlsJztcbmltcG9ydCB7IE51bWJlck1hcCwgdG9OdW1iZXJNYXAgfSBmcm9tICcuLi8uLi91dGlscy9sYW5nLnV0aWwnO1xuaW1wb3J0IHsgRmFjaWxpdHlTdGF0ZSB9IGZyb20gJy4uL2ZhY2lsaXR5L2ZhY2lsaXR5LnN0YXRlJztcbmltcG9ydCB7IFNpZGVuYXZTdGF0ZSB9IGZyb20gJy4uL3NpZGVuYXYvc2lkZW5hdi5zdGF0ZSc7XG5pbXBvcnQge1xuICBDbGVhckRldmljZUFjdGlvbiwgQ2xlYXJEZXZpY2VFdmVudHNFeHBhbmRlZCwgQ2xlYXJEZXZpY2VzQWN0aW9uLCBDbGVhckV2ZW50QWN0aXZpdGllc0V4cGFuZGVkLFxuICBDbGVhckxwclRyYW5zYWN0aW9uc0V4cGFuZGVkLCBDbGVhclNlbGVjdGVkUm93LCBEZXZpY2VBY3Rpdml0eUNoYW5nZWRBY3Rpb24sIERldmljZUV2ZW50Q2hhbmdlZEFjdGlvbixcbiAgRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbiwgTG9hZERldmljZUFjdGlvbiwgTG9hZERldmljZUV2ZW50QWN0aXZpdGllc0FjdGlvbiwgTG9hZERldmljZUV2ZW50c0FjdGlvbixcbiAgTG9hZERldmljZUV2ZW50c0NvbGxhcHNlLCBMb2FkRGV2aWNlTHByVHJhbnNhY3Rpb25zQWN0aW9uLCBMb2FkRGV2aWNlc0FjdGlvbiwgTG9hZERldmljZXNCeVR5cGVBY3Rpb24sIExvYWREZXZpY2VTdGF0dXNBY3Rpb24sXG4gIExvYWRFdmVudEFjdGl2aXRpZXNDb2xsYXBzZSwgTG9hZExwclRyYW5zYWN0aW9uc0NvbGxhcHNlLCBMb2FkU2VsZWN0ZWREZXZpY2VBY3Rpb24sIExwclRyYW5zYWN0aW9uc0NoYW5nZWRBY3Rpb24sXG4gIFNlbGVjdERldmljZUFjdGlvbiwgU2VsZWN0ZWRSb3dBY3Rpb24sIFNldERldmljZUV2ZW50c0V4cGFuZGVkLCBTZXREZXZpY2VTdGF0dXNBY3Rpb24sXG4gIFNldERldmljZVZpZXdNb2RlQWN0aW9uLCBTZXRFdmVudEFjdGl2aXRpZXNFeHBhbmRlZCwgU2V0THByVHJhbnNhY3Rpb25zRXhwYW5kZWRcbn0gZnJvbSAnLi9wYXJrLW1hbmFnZXIuYWN0aW9ucyc7XG5pbXBvcnQgeyBBcHBNb2R1bGUsIFN1Yk1vZHVsZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJrTWFuYWdlclN0YXRlTW9kZWwge1xuICBmbGF0OiBEZXZpY2VEdG9bXTtcbiAgYnlJZDogTnVtYmVyTWFwPERldmljZUR0bz47XG4gIGJ5Q29tbUlkOiBOdW1iZXJNYXA8RGV2aWNlRHRvPjtcbiAgY291bnQ6IG51bWJlcjtcbiAgZGV2aWNlc1ZpZXdNb2RlOiBEZXZpY2VzVmlld01vZGU7XG5cbiAgc2VsZWN0ZWRJZDogbnVtYmVyO1xuICBzZWxlY3RlZERldmljZVN0YXR1czogRGV2aWNlU3RhdHVzRHRvO1xuICBzZWxlY3RlZERldmljZVBhcmtJZDogbnVtYmVyO1xuICBkZXZpY2VSZW1vdGVDb21tYW5kczogRGV2aWNlUmVtb3RlQ29tbWFuZFJlZkR0b1tdO1xuXG4gIGRldmljZUV2ZW50c0NvbGxhcHNlOiBUYWJsZURhdGE8RGV2aWNlRXZlbnREdG8+O1xuICBldmVudEFjdGl2aXRpZXNDb2xsYXBzZTogVGFibGVEYXRhPEV2ZW50QWN0aXZpdHlEdG8+O1xuICBscHJUcmFuc2FjdGlvbnNDb2xsYXBzZTogVGFibGVEYXRhPExwclRyYW5zYWN0aW9uRHRvPjtcblxuICBkZXZpY2VFdmVudHM6IERldmljZUV2ZW50RHRvW107XG4gIGV2ZW50QWN0aXZpdGllczogRXZlbnRBY3Rpdml0eUR0b1tdO1xuICBscHJUcmFuc2FjdGlvbnM6IExwclRyYW5zYWN0aW9uRHRvW107XG5cbiAgZGV2aWNlRXZlbnRzRXhwYW5kZWQ6IERldmljZUV2ZW50RHRvW107XG4gIGV2ZW50QWN0aXZpdGllc0V4cGFuZGVkOiBFdmVudEFjdGl2aXR5RHRvW107XG4gIGxwclRyYW5zYWN0aW9uc0V4cGFuZGVkOiBMcHJUcmFuc2FjdGlvbkR0b1tdO1xuXG4gIHNlbGVjdGVkUm93OiBTZWxlY3RlZFJvdztcbn1cblxuY29uc3QgRVhQQU5ERURfUkVTVUxUX0xJTUlUID0gMTAwMDtcblxuQEluamVjdGFibGUoKVxuQFN0YXRlPFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4oe1xuICBuYW1lOiAncGFya01hbmFnZXInLFxuICBkZWZhdWx0czoge1xuICAgIGZsYXQ6IG51bGwsXG4gICAgYnlJZDoge30sXG4gICAgYnlDb21tSWQ6IHt9LFxuICAgIGNvdW50OiAwLFxuICAgIGRldmljZXNWaWV3TW9kZTogbnVsbCxcblxuICAgIHNlbGVjdGVkSWQ6IG51bGwsXG4gICAgc2VsZWN0ZWREZXZpY2VTdGF0dXM6IG51bGwsXG4gICAgc2VsZWN0ZWREZXZpY2VQYXJrSWQ6IG51bGwsXG4gICAgZGV2aWNlUmVtb3RlQ29tbWFuZHM6IG51bGwsXG5cbiAgICBkZXZpY2VFdmVudHNDb2xsYXBzZTogbnVsbCxcbiAgICBldmVudEFjdGl2aXRpZXNDb2xsYXBzZTogbnVsbCxcbiAgICBscHJUcmFuc2FjdGlvbnNDb2xsYXBzZTogbnVsbCxcblxuICAgIGRldmljZUV2ZW50czogbnVsbCxcbiAgICBldmVudEFjdGl2aXRpZXM6IG51bGwsXG4gICAgbHByVHJhbnNhY3Rpb25zOiBudWxsLFxuXG4gICAgZGV2aWNlRXZlbnRzRXhwYW5kZWQ6IFtdLFxuICAgIGV2ZW50QWN0aXZpdGllc0V4cGFuZGVkOiBbXSxcbiAgICBscHJUcmFuc2FjdGlvbnNFeHBhbmRlZDogW10sXG5cbiAgICBzZWxlY3RlZFJvdzogbnVsbCxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgUGFya01hbmFnZXJTdGF0ZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkZXZpY2VScGNTZXJ2aWNlUHJveHk6IFJwYy5EZXZpY2VScGNTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBmYWNpbGl0eVJwY1NlcnZpY2VQcm94eTogRmFjaWxpdHlScGNTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUpIHtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZmxhdChzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogRGV2aWNlRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5mbGF0O1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBkZXZpY2VzKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBEZXZpY2VEdG9bXSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoc3RhdGUuYnlJZCB8fCB7fSk7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGJ5Q29tbUlkKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBOdW1iZXJNYXA8RGV2aWNlRHRvPiB7XG4gICAgcmV0dXJuIHN0YXRlLmJ5Q29tbUlkIHx8IHt9O1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBieUlkKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBOdW1iZXJNYXA8RGV2aWNlRHRvPiB7XG4gICAgcmV0dXJuIHN0YXRlLmJ5SWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGRldmljZXNWaWV3TW9kZShzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogRGV2aWNlc1ZpZXdNb2RlIHtcbiAgICAvLyBBbHNvIHJldHVybnMgZGVmYXVsdCB2YWx1ZSB3aGVuIHRoZSB1c2VyIGhhdm4ndCBjaGFuZ2UgaXQgeWV0XG4gICAgcmV0dXJuIHN0YXRlLmRldmljZXNWaWV3TW9kZSB8fCBEZXZpY2VzVmlld01vZGUuR2FsbGVyeTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWREZXZpY2VJZChzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKSB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkSWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkRGV2aWNlKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBEZXZpY2VEdG8ge1xuICAgIHJldHVybiBzdGF0ZS5ieUlkW3N0YXRlLnNlbGVjdGVkSWRdO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZERldmljZVN0YXR1cyhzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogRGV2aWNlU3RhdHVzRHRvIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWREZXZpY2VTdGF0dXM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkRGV2aWNlUGFya0lkKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZERldmljZVBhcmtJZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgY291bnQoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCkge1xuICAgIHJldHVybiBzdGF0ZS5jb3VudDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZXZlbnRBY3Rpdml0aWVzKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBFdmVudEFjdGl2aXR5RHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5ldmVudEFjdGl2aXRpZXM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGxwclRyYW5zYWN0aW9ucyhzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogTHByVHJhbnNhY3Rpb25EdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmxwclRyYW5zYWN0aW9ucztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZGV2aWNlRXZlbnRzKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBEZXZpY2VFdmVudER0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuZGV2aWNlRXZlbnRzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBkZXZpY2VFdmVudHNFeHBhbmRlZChzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogRGV2aWNlRXZlbnREdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmRldmljZUV2ZW50c0V4cGFuZGVkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBldmVudEFjdGl2aXRpZXNFeHBhbmRlZChzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogRXZlbnRBY3Rpdml0eUR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuZXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGxwclRyYW5zYWN0aW9uc0V4cGFuZGVkKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBMcHJUcmFuc2FjdGlvbkR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUubHByVHJhbnNhY3Rpb25zRXhwYW5kZWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGRldmljZUV2ZW50c0NvbGxhcHNlKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBUYWJsZURhdGE8RGV2aWNlRXZlbnREdG8+IHtcbiAgICByZXR1cm4gc3RhdGUuZGV2aWNlRXZlbnRzQ29sbGFwc2U7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGV2ZW50QWN0aXZpdGllc0NvbGxhcHNlKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBUYWJsZURhdGE8RXZlbnRBY3Rpdml0eUR0bz4ge1xuICAgIHJldHVybiBzdGF0ZS5ldmVudEFjdGl2aXRpZXNDb2xsYXBzZTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgbHByVHJhbnNhY3Rpb25zQ29sbGFwc2Uoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IFRhYmxlRGF0YTxMcHJUcmFuc2FjdGlvbkR0bz4ge1xuICAgIHJldHVybiBzdGF0ZS5scHJUcmFuc2FjdGlvbnNDb2xsYXBzZTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWRSb3coc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IFNlbGVjdGVkUm93IHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRSb3c7XG4gIH1cblxuICBAQWN0aW9uKFNldERldmljZVZpZXdNb2RlQWN0aW9uKVxuICBvblNldERldmljZVZpZXdNb2RlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogU2V0RGV2aWNlVmlld01vZGVBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBkZXZpY2VzVmlld01vZGU6IGFjdGlvbi52aWV3TW9kZSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZERldmljZUV2ZW50c0NvbGxhcHNlKVxuICBvbkxvYWREZXZpY2VFdmVudHNDb2xsYXBzZShjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWREZXZpY2VFdmVudHNDb2xsYXBzZSkge1xuICAgIGNvbnN0IGRldmljZUV2ZW50cyQgPSB0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eS5nZXREZXZpY2VFdmVudHMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5kZXZpY2VJZCwgbnVsbCwgbnVsbCxcbiAgICAgIG51bGwsIG51bGwsIG51bGwsIGFjdGlvbi5yZXN1bHRMaW1pdCwgMCwgbnVsbCwgT3JkZXJEaXJlY3Rpb24uTm9uZSk7XG4gICAgcmV0dXJuIGRldmljZUV2ZW50cyQucGlwZSh0YXAoZGF0YVNldCA9PlxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBkZXZpY2VFdmVudHNDb2xsYXBzZToge1xuICAgICAgICAgIHJlc3VsdExpbWl0OiBhY3Rpb24ucmVzdWx0TGltaXQsXG4gICAgICAgICAgZGF0YVNldDogZGF0YVNldC5kYXRhLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKSk7XG4gIH1cblxuICBAQWN0aW9uKFNldERldmljZUV2ZW50c0V4cGFuZGVkKVxuICBvblNldERldmljZUV2ZW50c0V4cGFuZGVkKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogU2V0RGV2aWNlRXZlbnRzRXhwYW5kZWQpIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBkZXZpY2VFdmVudHNFeHBhbmRlZDogYWN0aW9uLmRhdGFTZXQsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRFdmVudEFjdGl2aXRpZXNDb2xsYXBzZSlcbiAgb25Mb2FkRXZlbnRBY3Rpdml0aWVzQ29sbGFwc2UoY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkRXZlbnRBY3Rpdml0aWVzQ29sbGFwc2UpIHtcbiAgICBjb25zdCBldmVudEFjdGl2aXRpZXMkID0gdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0RGV2aWNlQWN0aXZpdGllcyhhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmRldmljZUlkLCBudWxsLCBudWxsLFxuICAgICAgbnVsbCwgbnVsbCwgbnVsbCwgYWN0aW9uLnJlc3VsdExpbWl0LCAwLCBudWxsLCBPcmRlckRpcmVjdGlvbi5Ob25lKTtcbiAgICByZXR1cm4gZXZlbnRBY3Rpdml0aWVzJC5waXBlKHRhcChkYXRhU2V0ID0+XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGV2ZW50QWN0aXZpdGllc0NvbGxhcHNlOiB7XG4gICAgICAgICAgcmVzdWx0TGltaXQ6IGFjdGlvbi5yZXN1bHRMaW1pdCxcbiAgICAgICAgICBkYXRhU2V0OiBkYXRhU2V0LmRhdGEsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApKTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0RXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQpXG4gIG9uU2V0RXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQoY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXRFdmVudEFjdGl2aXRpZXNFeHBhbmRlZCkge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGV2ZW50QWN0aXZpdGllc0V4cGFuZGVkOiBhY3Rpb24uZGF0YVNldCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZExwclRyYW5zYWN0aW9uc0NvbGxhcHNlKVxuICBvbkxvYWRMcHJUcmFuc2FjdGlvbnNDb2xsYXBzZShjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRMcHJUcmFuc2FjdGlvbnNDb2xsYXBzZSkge1xuICAgIGNvbnN0IGxwclRyYW5zYWN0aW9ucyQgPSB0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eVxuICAgICAgLmdldERldmljZUxwclRyYW5zYWN0aW9ucyhhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmRldmljZUlkLCBudWxsLCBudWxsLCBudWxsLCBudWxsLFxuICAgICAgICBudWxsLCBhY3Rpb24ucmVzdWx0TGltaXQsIDAsIG51bGwsIE9yZGVyRGlyZWN0aW9uLk5vbmUpO1xuICAgIHJldHVybiBscHJUcmFuc2FjdGlvbnMkLnBpcGUodGFwKGRhdGFTZXQgPT5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgbHByVHJhbnNhY3Rpb25zQ29sbGFwc2U6IHtcbiAgICAgICAgICByZXN1bHRMaW1pdDogYWN0aW9uLnJlc3VsdExpbWl0LFxuICAgICAgICAgIGRhdGFTZXQ6IGRhdGFTZXQuZGF0YSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICkpO1xuICB9XG5cbiAgQEFjdGlvbihTZXRMcHJUcmFuc2FjdGlvbnNFeHBhbmRlZClcbiAgb25TZXRMcHJUcmFuc2FjdGlvbnNFeHBhbmRlZChjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IFNldExwclRyYW5zYWN0aW9uc0V4cGFuZGVkKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgbHByVHJhbnNhY3Rpb25zRXhwYW5kZWQ6IGFjdGlvbi5kYXRhU2V0LFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhckRldmljZUV2ZW50c0V4cGFuZGVkKVxuICBvbkNsZWFyRGV2aWNlRXZlbnRzRXhwYW5kZWQoY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGRldmljZUV2ZW50c0V4cGFuZGVkOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJFdmVudEFjdGl2aXRpZXNFeHBhbmRlZClcbiAgb25DbGVhckV2ZW50QWN0aXZpdGllc0V4cGFuZGVkKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBldmVudEFjdGl2aXRpZXNFeHBhbmRlZDogW10sXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyTHByVHJhbnNhY3Rpb25zRXhwYW5kZWQpXG4gIG9uQ2xlYXJMcHJUcmFuc2FjdGlvbnNFeHBhbmRlZChjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgbHByVHJhbnNhY3Rpb25zRXhwYW5kZWQ6IFtdLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkRGV2aWNlc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWREZXZpY2VzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZERldmljZXNBY3Rpb24pIHtcbiAgICB0aGlzLnBhdGNoRGV2aWNlcyhjdHgsIG51bGwpO1xuXG4gICAgY29uc3QgYXBwTW9kdWxlOiBBcHBNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5hcHBNb2R1bGUpO1xuICAgIGNvbnN0IHN1Yk1vZHVsZTogU3ViTW9kdWxlID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTaWRlbmF2U3RhdGUuc3ViTW9kdWxlKTtcblxuICAgIGxldCBnZXREZXZpY2VzJDogdHlwZW9mIHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldENDRGV2aWNlcztcbiAgICBpZiAoYXBwTW9kdWxlID09PSBBcHBNb2R1bGUuQ2MpIHtcbiAgICAgIGdldERldmljZXMkID0gdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0Q0NEZXZpY2VzLmJpbmQodGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkpO1xuICAgIH0gZWxzZSBpZiAoYXBwTW9kdWxlID09PSBBcHBNb2R1bGUuUmVwb3J0cykge1xuICAgICAgZ2V0RGV2aWNlcyQgPSB0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eS5nZXRSZXBvcnRzRGV2aWNlcy5iaW5kKHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5KTtcbiAgICB9IGVsc2UgaWYgKGFwcE1vZHVsZSA9PT0gQXBwTW9kdWxlLkxvdENvbmZpZ3VyYXRpb24gJiYgc3ViTW9kdWxlID09PSBTdWJNb2R1bGUuU2NoZWR1bGVyKSB7XG4gICAgICBnZXREZXZpY2VzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldExvdENvbmZpZ3VyYXRpb25zRGV2aWNlcy5iaW5kKHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0RGV2aWNlcyQoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm1heFJlc3VsdHMsXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5zZWFyY2hUZXJtLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5LmNvbHVtbixcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkub3JkZXJEaXJlY3Rpb24sIGFjdGlvbi5pc1RsNjApLnBpcGUodGFwKGRldmljZXMgPT5cbiAgICAgICAgdGhpcy5wYXRjaERldmljZXMoY3R4LCBkZXZpY2VzLmRhdGEpKSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWREZXZpY2VzQnlUeXBlQWN0aW9uKVxuICBvbkxvYWREZXZpY2VzQnlUeXBlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZERldmljZXNCeVR5cGVBY3Rpb24pIHtcbiAgICBjb25zdCBkZXZpY2VzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldERldmljZXNCeVR5cGUoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm1heFJlc3VsdHMsXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5zZWFyY2hUZXJtLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5LmNvbHVtbixcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkub3JkZXJEaXJlY3Rpb24sIGFjdGlvbi5kZXZpY2VUeXBlcyk7XG4gICAgcmV0dXJuIGRldmljZXMkLnBpcGUodGFwKGRldmljZXMgPT4gdGhpcy5wYXRjaERldmljZXMoY3R4LCBkZXZpY2VzLmRhdGEpKSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyRGV2aWNlc0FjdGlvbilcbiAgb25DbGVhckRldmljZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPikge1xuICAgIHRoaXMucGF0Y2hEZXZpY2VzKGN0eCwgbnVsbCk7XG4gIH1cblxuICBAQWN0aW9uKFNlbGVjdERldmljZUFjdGlvbilcbiAgb25TZWxlY3REZXZpY2VBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZWxlY3REZXZpY2VBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkSWQ6IG51bGwgfSk7XG4gICAgY3R4LnBhdGNoU3RhdGUoeyBzZWxlY3RlZElkOiBhY3Rpb24uZGV2aWNlSWQgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTZWxlY3RlZERldmljZUFjdGlvbilcbiAgb25Mb2FkU2VsZWN0ZWREZXZpY2VBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPikge1xuICAgIGNvbnN0IHNlbGVjdGVkRGV2aWNlSWQgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZElkO1xuICAgIGlmIChzZWxlY3RlZERldmljZUlkKSB7XG4gICAgICB0aGlzLm9uTG9hZERldmljZUFjdGlvbihjdHgsIHsgZGV2aWNlSWQ6IHNlbGVjdGVkRGV2aWNlSWQgfSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihMb2FkRGV2aWNlU3RhdHVzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZERldmljZVN0YXR1c0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWREZXZpY2VTdGF0dXNBY3Rpb24pIHtcbiAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuXG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc2VsZWN0ZWREZXZpY2VTdGF0dXM6IG51bGwsXG4gICAgICBzZWxlY3RlZERldmljZVBhcmtJZDogbnVsbCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRldmljZVN0YXR1cyQgPSB0aGlzLmZhY2lsaXR5UnBjU2VydmljZVByb3h5LmdldERldmljZVN0YXR1cyhndWlkLCBhY3Rpb24uZGV2aWNlPy5wYXJrSUQsIGFjdGlvbi5kZXZpY2U/LmlkKTtcblxuICAgIHJldHVybiBkZXZpY2VTdGF0dXMkLnBpcGUodGFwKGRldmljZVN0YXR1cyA9PlxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzZWxlY3RlZERldmljZVN0YXR1czogZGV2aWNlU3RhdHVzPy5kYXRhPy5kYXRhIHx8IGdldERlZmF1bHREZXZpY2VTdGF0dXMoYWN0aW9uLmRldmljZSksXG4gICAgICAgIHNlbGVjdGVkRGV2aWNlUGFya0lkOiBkZXZpY2VTdGF0dXM/LmRhdGE/LnBhcmtJRCxcbiAgICAgIH0pLFxuICAgICkpO1xuICB9XG5cbiAgQEFjdGlvbihTZXREZXZpY2VTdGF0dXNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25TZXREZXZpY2VTdGF0dXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXREZXZpY2VTdGF0dXNBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZERldmljZVN0YXR1czogZ2V0RGVmYXVsdERldmljZVN0YXR1cyhhY3Rpb24uZGV2aWNlKSxcbiAgICAgIHNlbGVjdGVkRGV2aWNlUGFya0lkOiBhY3Rpb24uZGV2aWNlLnBhcmtJRCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZERldmljZUV2ZW50QWN0aXZpdGllc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWREZXZpY2VFdmVudEFjdGl2aXRpZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkRGV2aWNlRXZlbnRBY3Rpdml0aWVzQWN0aW9uKSB7XG4gICAgY29uc3QgZXZlbnRBY3Rpdml0aWVzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldERldmljZUFjdGl2aXRpZXMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5kZXZpY2VJZCwgZ2V0TW9tZW50TnVsbGFibGUoYWN0aW9uLnN0YXJ0RGF0ZSksXG4gICAgICBnZXRNb21lbnROdWxsYWJsZShhY3Rpb24uZW5kRGF0ZSksIGFjdGlvbi5zZWFyY2hWYWx1ZSwgbnVsbCwgbnVsbCwgYWN0aW9uLnRha2UsIGFjdGlvbi5za2lwLCBudWxsLCBPcmRlckRpcmVjdGlvbi5Ob25lKTtcbiAgICByZXR1cm4gZXZlbnRBY3Rpdml0aWVzJC5waXBlKHRhcChldmVudEFjdGl2aXRpZXMgPT5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZXZlbnRBY3Rpdml0aWVzOiBldmVudEFjdGl2aXRpZXMuZGF0YSxcbiAgICAgIH0pLFxuICAgICkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkRGV2aWNlTHByVHJhbnNhY3Rpb25zQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZERldmljZUxwclRyYW5zYWN0aW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWREZXZpY2VMcHJUcmFuc2FjdGlvbnNBY3Rpb24pIHtcbiAgICBjb25zdCBscHJUcmFuc2FjdGlvbnMkID0gdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0RGV2aWNlTHByVHJhbnNhY3Rpb25zKGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uZGV2aWNlSWQsIGdldE1vbWVudE51bGxhYmxlKGFjdGlvbi5zdGFydERhdGUpLFxuICAgICAgZ2V0TW9tZW50TnVsbGFibGUoYWN0aW9uLmVuZERhdGUpLCBudWxsLCBudWxsLCBudWxsLCBhY3Rpb24udGFrZSwgYWN0aW9uLnNraXAsIG51bGwsIE9yZGVyRGlyZWN0aW9uLk5vbmUpO1xuICAgIHJldHVybiBscHJUcmFuc2FjdGlvbnMkLnBpcGUodGFwKGxwclRyYW5zYWN0aW9ucyA9PlxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBscHJUcmFuc2FjdGlvbnM6IGxwclRyYW5zYWN0aW9ucy5kYXRhLFxuICAgICAgfSksXG4gICAgKSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWREZXZpY2VFdmVudHNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkRGV2aWNlRXZlbnRzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZERldmljZUV2ZW50c0FjdGlvbikge1xuICAgIGNvbnN0IGRldmljZUV2ZW50cyQgPSB0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eS5nZXREZXZpY2VFdmVudHMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5kZXZpY2VJZCwgZ2V0TW9tZW50TnVsbGFibGUoYWN0aW9uLnN0YXJ0RGF0ZSksXG4gICAgICBnZXRNb21lbnROdWxsYWJsZShhY3Rpb24uZW5kRGF0ZSksIG51bGwsIG51bGwsIG51bGwsIGFjdGlvbi50YWtlLCBhY3Rpb24uc2tpcCwgbnVsbCwgT3JkZXJEaXJlY3Rpb24uTm9uZSk7XG4gICAgcmV0dXJuIGRldmljZUV2ZW50cyQucGlwZSh0YXAoZGV2aWNlRXZlbnRzID0+XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGRldmljZUV2ZW50czogZGV2aWNlRXZlbnRzLmRhdGEsXG4gICAgICB9KSxcbiAgICApKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZERldmljZUFjdGlvbilcbiAgb25Mb2FkRGV2aWNlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZERldmljZUFjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGV2ZW50QWN0aXZpdGllczogbnVsbCxcbiAgICAgIGxwclRyYW5zYWN0aW9uczogbnVsbCxcbiAgICAgIGRldmljZUV2ZW50czogbnVsbCxcbiAgICAgIGRldmljZVJlbW90ZUNvbW1hbmRzOiBudWxsLFxuICAgICAgZGV2aWNlRXZlbnRzQ29sbGFwc2U6IG51bGwsXG4gICAgICBldmVudEFjdGl2aXRpZXNDb2xsYXBzZTogbnVsbCxcbiAgICAgIGxwclRyYW5zYWN0aW9uc0NvbGxhcHNlOiBudWxsLFxuICAgICAgZGV2aWNlRXZlbnRzRXhwYW5kZWQ6IFtdLFxuICAgICAgZXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQ6IFtdLFxuICAgICAgbHByVHJhbnNhY3Rpb25zRXhwYW5kZWQ6IFtdLFxuICAgICAgc2VsZWN0ZWREZXZpY2VTdGF0dXM6IG51bGwsXG4gICAgICBzZWxlY3RlZERldmljZVBhcmtJZDogbnVsbCxcbiAgICB9KTtcblxuICAgIC8vIHdhaXQgZm9yIGRldmljZXMgc3RvcmUgdG8gYmUgbG9hZGVkIGJlZm9yZSBsb2FkaW5nIGEgZGV2aWNlXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KFBhcmtNYW5hZ2VyU3RhdGUuZGV2aWNlcylcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoZGV2aWNlcyA9PiBkZXZpY2VzPy5sZW5ndGggPiAwKSxcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgdGFwKChmaWx0ZXJlZERldmljZXMpID0+IHtcbiAgICAgICAgICBjb25zdCBkZXZpY2UgPSBmaWx0ZXJlZERldmljZXMuZmluZChkID0+IGQuaWQgPT09ICthY3Rpb24uZGV2aWNlSWQpO1xuICAgICAgICAgIGN0eC5kaXNwYXRjaChuZXcgTG9hZERldmljZVN0YXR1c0FjdGlvbihkZXZpY2UpKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJEZXZpY2VBY3Rpb24pXG4gIG9uQ2xlYXJEZXZpY2VBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkSWQ6IG51bGwsXG4gICAgICBzZWxlY3RlZERldmljZVN0YXR1czogbnVsbCxcbiAgICAgIHNlbGVjdGVkRGV2aWNlUGFya0lkOiBudWxsLFxuICAgICAgZXZlbnRBY3Rpdml0aWVzOiBudWxsLFxuICAgICAgbHByVHJhbnNhY3Rpb25zOiBudWxsLFxuICAgICAgZGV2aWNlRXZlbnRzOiBudWxsLFxuICAgICAgZGV2aWNlUmVtb3RlQ29tbWFuZHM6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKERldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24pXG4gIG9uRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IERldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24pIHtcbiAgICBjb25zdCBkZXZpY2VJZCA9IGFjdGlvbi5kZXZpY2VTdGF0dXM/LmRldmljZUlEO1xuICAgIGNvbnN0IGNvbW1JRCA9IGFjdGlvbi5kZXZpY2VTdGF0dXM/LmNvbW1JRDtcblxuICAgIGNvbnN0IGRldmljZXNCeUlkID0gY3R4LmdldFN0YXRlKCkuYnlJZDtcbiAgICBjb25zdCBkZXZpY2VzYnlDb21tSWQgPSBjdHguZ2V0U3RhdGUoKS5ieUNvbW1JZDtcblxuICAgIGlmIChkZXZpY2VzQnlJZFtkZXZpY2VJZF0pIHtcbiAgICAgIGlmICghaXNFcXVhbChkZXZpY2VzQnlJZFtkZXZpY2VJZF0uZGV2aWNlU3RhdHVzLCBhY3Rpb24uZGV2aWNlU3RhdHVzKSkge1xuICAgICAgICBjb25zdCBjbG9uZWREdG8gPSBEZXZpY2VTdGF0dXNEdG8uZnJvbUpTKGFjdGlvbi5kZXZpY2VTdGF0dXMpO1xuICAgICAgICBjbG9uZWREdG8udHlwZSA9IGRldmljZXNCeUlkW2RldmljZUlkXS50eXBlO1xuICAgICAgICBkZXZpY2VzQnlJZFtkZXZpY2VJZF0uZGV2aWNlU3RhdHVzID0gY2xvbmVkRHRvO1xuICAgICAgICBkZXZpY2VzYnlDb21tSWRbY29tbUlEXS5kZXZpY2VTdGF0dXMgPSBjbG9uZWREdG87XG5cbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgIGJ5SWQ6IGNsb25lRGVlcChkZXZpY2VzQnlJZCksXG4gICAgICAgICAgYnlDb21tSWQ6IGNsb25lRGVlcChkZXZpY2VzYnlDb21tSWQpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZERldmljZVN0YXR1cyA9IGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkRGV2aWNlU3RhdHVzO1xuICAgIGlmIChzZWxlY3RlZERldmljZVN0YXR1cz8uZGV2aWNlSUQgPT09IGRldmljZUlkKSB7XG4gICAgICBhY3Rpb24uZGV2aWNlU3RhdHVzLnR5cGUgPSBzZWxlY3RlZERldmljZVN0YXR1cy50eXBlO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzZWxlY3RlZERldmljZVN0YXR1czogYWN0aW9uLmRldmljZVN0YXR1cyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZvciBEZXZpY2UgRXZlbnRzXG4gIEBBY3Rpb24oRGV2aWNlRXZlbnRDaGFuZ2VkQWN0aW9uKVxuICBvbkRldmljZUV2ZW50Q2hhbmdlZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IERldmljZUV2ZW50Q2hhbmdlZEFjdGlvbikge1xuICAgIGNvbnN0IHNlbGVjdGVkRGV2aWNlUGFya0lkID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWREZXZpY2VQYXJrSWQ7XG4gICAgY29uc3Qgc2VsZWN0ZWREZXZpY2VTdGF0dXMgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZERldmljZVN0YXR1cztcbiAgICAvLyBUT0RPOiBjaGFuZ2UgdG8gZGV2aWNlSWQgb25jZSBTUCB3aWxsIGltcGxlbWVudFxuICAgIGlmIChzZWxlY3RlZERldmljZVN0YXR1cz8uY29tbUlEID09PSBhY3Rpb24uZGV2RXZlbnQ/LnJlYWRlcklEICYmIHNlbGVjdGVkRGV2aWNlUGFya0lkID09PSBhY3Rpb24uZGV2RXZlbnQ/LnBhcmtJRCkge1xuICAgICAgY29uc3QgZGV2aWNlRXZlbnREdG8gPSB0aGlzLnBvcHVsYXRlRGV2aWNlRXZlbnQoYWN0aW9uLmRldkV2ZW50KTtcbiAgICAgIHRoaXMucGF0Y2hEZXZpY2VJdGVtKGN0eCwgZGV2aWNlRXZlbnREdG8sICdkZXZpY2VFdmVudHMnKTtcbiAgICB9XG4gIH1cblxuXG4gIC8vLyBmb3IgRGV2aWNlIGFjdGl2aXR5XG4gIEBBY3Rpb24oRGV2aWNlQWN0aXZpdHlDaGFuZ2VkQWN0aW9uKVxuICBvbkRldmljZUFjdGl2aXR5Q2hhbmdlZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IERldmljZUFjdGl2aXR5Q2hhbmdlZEFjdGlvbikge1xuICAgIGNvbnN0IHNlbGVjdGVkRGV2aWNlUGFya0lkID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWREZXZpY2VQYXJrSWQ7XG4gICAgY29uc3Qgc2VsZWN0ZWREZXZpY2VTdGF0dXMgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZERldmljZVN0YXR1cztcbiAgICAvLyBUT0RPOiBjaGFuZ2UgdG8gZGV2aWNlSWQgb25jZSBTUCB3aWxsIGltcGxlbWVudFxuICAgIGlmIChzZWxlY3RlZERldmljZVN0YXR1cz8uY29tbUlEID09PSBhY3Rpb24uZXZlbnRBY3Rpdml0eT8ucmVhZGVySUQgJiYgc2VsZWN0ZWREZXZpY2VQYXJrSWQgPT09IGFjdGlvbi5ldmVudEFjdGl2aXR5Py5wYXJrSUQpIHtcbiAgICAgIGNvbnN0IGV2ZW50QWN0aXZpdHlEdG8gPSB0aGlzLnBvcHVsYXRlRXZlbnRBY3Rpdml0eShhY3Rpb24uZXZlbnRBY3Rpdml0eSk7XG4gICAgICB0aGlzLnBhdGNoRGV2aWNlSXRlbShjdHgsIGV2ZW50QWN0aXZpdHlEdG8sICdldmVudEFjdGl2aXRpZXMnKTtcbiAgICB9XG4gIH1cblxuICAvLy8gZm9yIExQUiBUcmFuc2FjdGlvbnNcbiAgQEFjdGlvbihMcHJUcmFuc2FjdGlvbnNDaGFuZ2VkQWN0aW9uKVxuICBvbkxwclRyYW5zYWN0aW9uc0NoYW5nZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMcHJUcmFuc2FjdGlvbnNDaGFuZ2VkQWN0aW9uKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWREZXZpY2VQYXJrSWQgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZERldmljZVBhcmtJZDtcbiAgICBjb25zdCBzZWxlY3RlZERldmljZVN0YXR1cyA9IGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkRGV2aWNlU3RhdHVzO1xuICAgIC8vIFRPRE86IGNoYW5nZSB0byBkZXZpY2VJZCBvbmNlIFNQIHdpbGwgaW1wbGVtZW50XG4gICAgaWYgKHNlbGVjdGVkRGV2aWNlU3RhdHVzPy5jb21tSUQgPT09IGFjdGlvbi5scHJUcmFuc2FjdGlvbj8ucmVhZGVySUQgJiYgc2VsZWN0ZWREZXZpY2VQYXJrSWQgPT09IGFjdGlvbi5scHJUcmFuc2FjdGlvbj8ucGFya0lEKSB7XG4gICAgICB0aGlzLnBhdGNoRGV2aWNlSXRlbShjdHgsIGFjdGlvbi5scHJUcmFuc2FjdGlvbiwgJ2xwclRyYW5zYWN0aW9ucycpO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oU2VsZWN0ZWRSb3dBY3Rpb24pXG4gIG9uU2VsZWN0ZWRSb3dBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZWxlY3RlZFJvd0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkUm93OiB7XG4gICAgICAgIHRhYmxlTmFtZTogYWN0aW9uLnBheWxvYWQudGFibGVOYW1lLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hEZXZpY2VzKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGRldmljZXM6IERldmljZUR0b1tdKSB7XG4gICAgZGV2aWNlcz8uZm9yRWFjaChkZXZpY2UgPT4gZGV2aWNlLmRldmljZVN0YXR1cyA9IGRldmljZS5kZXZpY2VTdGF0dXMgPz8gZ2V0RGVmYXVsdERldmljZVN0YXR1cyhkZXZpY2UpKTtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBmbGF0OiBkZXZpY2VzPy5zb3J0KChhLCBiKSA9PiBhLmlkIC0gYi5pZCksXG4gICAgICBieUlkOiB0b051bWJlck1hcChkZXZpY2VzIHx8IFtdLCAoZCkgPT4gZC5pZCksXG4gICAgICBieUNvbW1JZDogdG9OdW1iZXJNYXAoZGV2aWNlcyB8fCBbXSwgKGQpID0+IGQuY29tbUlEKSxcbiAgICAgIGNvdW50OiBkZXZpY2VzPy5sZW5ndGggfHwgMCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hEZXZpY2VJdGVtPFQ+KGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGl0ZW06IFQsIGl0ZW1zTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgY29sbGFwc2VJdGVtc05hbWUgPSBgJHtpdGVtc05hbWV9Q29sbGFwc2VgO1xuICAgIGNvbnN0IGV4cGFuZGVkSXRlbXNOYW1lID0gYCR7aXRlbXNOYW1lfUV4cGFuZGVkYDtcbiAgICBjb25zdCBjb2xsYXBzZUl0ZW1zID0gY3R4LmdldFN0YXRlKClbY29sbGFwc2VJdGVtc05hbWVdIGFzIFRhYmxlRGF0YTxhbnk+O1xuICAgIGxldCBleHBhbmRlZEl0ZW1zID0gY3R4LmdldFN0YXRlKClbZXhwYW5kZWRJdGVtc05hbWVdO1xuXG4gICAgaWYgKGNvbGxhcHNlSXRlbXMgIT09IG51bGwpIHtcbiAgICAgIGNvbGxhcHNlSXRlbXMuZGF0YVNldCA9IFsuLi5jb2xsYXBzZUl0ZW1zLmRhdGFTZXQuc2xpY2UoMCwgY29sbGFwc2VJdGVtcy5yZXN1bHRMaW1pdCAtIDEpXTtcbiAgICAgIGNvbGxhcHNlSXRlbXMuZGF0YVNldC51bnNoaWZ0KGl0ZW0pO1xuICAgIH1cblxuICAgIGlmIChleHBhbmRlZEl0ZW1zICE9PSBudWxsKSB7XG4gICAgICBleHBhbmRlZEl0ZW1zID0gWy4uLmV4cGFuZGVkSXRlbXNdLnNsaWNlKDAsIEVYUEFOREVEX1JFU1VMVF9MSU1JVCAtIDEpO1xuICAgICAgZXhwYW5kZWRJdGVtcy51bnNoaWZ0KGl0ZW0pO1xuICAgIH1cblxuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIFtjb2xsYXBzZUl0ZW1zTmFtZV06IGNsb25lRGVlcChjb2xsYXBzZUl0ZW1zKSxcbiAgICAgIFtleHBhbmRlZEl0ZW1zTmFtZV06IGV4cGFuZGVkSXRlbXMsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyU2VsZWN0ZWRSb3cpXG4gIG9uQ2xlYXJTZWxlY3RlZFJvdyhjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc2VsZWN0ZWRSb3c6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBvcHVsYXRlRGV2aWNlRXZlbnQoZGV2aWNlRXZlbnREYXRhOiBhbnkpIHtcbiAgICBjb25zdCBkZXZpY2VFdmVudER0byA9IERldmljZUV2ZW50RHRvLmZyb21KUyhkZXZpY2VFdmVudERhdGEpO1xuXG4gICAgLy8gYmFja3dhcmRzIC0gZnJvbSA5LjMuMiB0aGUgbWFwcGluZyBmcm9tIERldmljZUV2ZW50Q29yZSB0byBEZXZpY2VFdmVudER0byB3aWxsIGJlIGluIHRoZSBjbGllbnRcbiAgICBpZiAoZGV2aWNlRXZlbnREYXRhLnBhcmtlclRpY2tldFR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGV2aWNlRXZlbnREdG8ucGFya2VyVGlja2V0VHlwZSA9IHRoaXMuZ2V0RGV2aWNlRXZlbnRQYXJrZXJUaWNrZXRUeXBlKGRldmljZUV2ZW50RGF0YSk7XG4gICAgICBkZXZpY2VFdmVudER0by50aWNrZXROdW0gPSB0aGlzLkdldFRpY2tldE51bShkZXZpY2VFdmVudER0by5wYXJrZXJUaWNrZXRUeXBlLCBkZXZpY2VFdmVudER0by52YWx1ZTEpO1xuICAgIH1cbiAgICBpZiAoZGV2aWNlRXZlbnREdG8uZXZlbnRUeXBlPy5tb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRldmljZUV2ZW50RHRvLmV2ZW50VHlwZS5tb2RlID0gZGV2aWNlRXZlbnREYXRhLmV2ZW50VHlwZS5ldmVudFR5cGU7XG4gICAgICBkZXZpY2VFdmVudER0by5ldmVudFR5cGUudmFsdWUxX0Rlc2NyaXB0aW9uID0gZGV2aWNlRXZlbnREYXRhLmV2ZW50VHlwZS52YWx1ZTFfRGlzO1xuICAgICAgZGV2aWNlRXZlbnREdG8uZXZlbnRUeXBlLnZhbHVlMl9EZXNjcmlwdGlvbiA9IGRldmljZUV2ZW50RGF0YS5ldmVudFR5cGUudmFsdWUyX0RpcztcbiAgICAgIGRldmljZUV2ZW50RHRvLmV2ZW50VHlwZS52YWx1ZTNfRGVzY3JpcHRpb24gPSBkZXZpY2VFdmVudERhdGEuZXZlbnRUeXBlLnZhbHVlM19EaXM7XG4gICAgICBkZXZpY2VFdmVudER0by5ldmVudFR5cGUudmFsdWU0X0Rlc2NyaXB0aW9uID0gZGV2aWNlRXZlbnREYXRhLmV2ZW50VHlwZS52YWx1ZTRfRGlzO1xuICAgIH1cblxuICAgIHJldHVybiBkZXZpY2VFdmVudER0bztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGV2aWNlRXZlbnRQYXJrZXJUaWNrZXRUeXBlKGRldmljZUV2ZW50RGF0YTogYW55KTogUGFya2VyVGlja2V0VHlwZSB7XG4gICAgbGV0IHBhcmtlclRpY2tldFR5cGU6IFBhcmtlclRpY2tldFR5cGU7XG4gICAgc3dpdGNoIChkZXZpY2VFdmVudERhdGEuZXZlbnRJRCkge1xuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LkNhbmNlbGxlZFRpY2tldFBheW1lbnRQcm9jZXNzOlxuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50Lk5ld0VudHJ5VGlja2V0OlxuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LlRpY2tldFBheW1lbnRDYWxjdWxhdGlvbjpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5UaWNrZXRXaXRoTm9QYXltZW50OlxuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LkNoYXJnZVNlbnRGcm9tU2VydmVyOlxuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LkNhc2hiYWNrV2FzUHJpbnRlZDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5MUFJNaXNtYXRjaDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5BY2NlcHRFbnRyeVRpY2tldDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5EZW55RW50cnlUaWNrZXQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuRGVueUVudHJ5VGlja2V0RXJyb3I6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuQ2FyTGVmdExvb3BUaWNrZXRSZWplY3RlZDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5UaWNrZXREZXRhaWxzQ2hhbmdlOlxuICAgICAgICBwYXJrZXJUaWNrZXRUeXBlID0gUGFya2VyVGlja2V0VHlwZS5UcmFuc2llbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LkNyZWRpdFRyYW5zYWN0aW9uQWNjZXB0ZWQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuQ3JlZGl0VHJhbnNhY3Rpb25SZWplY3RlZDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5DcmVkaXRQcm9jZXNzVGltZW91dDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5TdGlja2VyczpcbiAgICAgICAgcGFya2VyVGlja2V0VHlwZSA9IFBhcmtlclRpY2tldFR5cGUuUGF5bWVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBwYXJrZXJUaWNrZXRUeXBlID0gUGFya2VyVGlja2V0VHlwZS5Vbmtub3duO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcGFya2VyVGlja2V0VHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgR2V0VGlja2V0TnVtID0gKHBhcmtlclRpY2tldFR5cGU6IFBhcmtlclRpY2tldFR5cGUsIHZhbHVlOiBudW1iZXIpOiBudW1iZXIgPT4gcGFya2VyVGlja2V0VHlwZSAhPSBQYXJrZXJUaWNrZXRUeXBlLlVua25vd24gPyB2YWx1ZSA6IG51bGw7XG5cbiAgcHJpdmF0ZSBwb3B1bGF0ZUV2ZW50QWN0aXZpdHkoZXZlbnRBY3Rpdml0eURhdGE6IGFueSkge1xuICAgIGNvbnN0IGV2ZW50QWN0aXZ0eUR0byA9IEV2ZW50QWN0aXZpdHlEdG8uZnJvbUpTKGV2ZW50QWN0aXZpdHlEYXRhKTtcbiAgICAvLyBiYWNrd2FyZHMgLSBmcm9tIDkuMy4yIHRoZSBtYXBwaW5nIGZyb20gRXZlbnRBY3Rpdml0eUNvcmUgdG8gRXZlbnRBY3Rpdml0eUR0byB3aWxsIGJlIGluIHRoZSBjbGllbnRcbiAgICBpZiAoZXZlbnRBY3Rpdml0eURhdGEucGFya2VyVGlja2V0VHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBldmVudEFjdGl2dHlEdG8uZGVzY3JpcHRpb24gPSBldmVudEFjdGl2aXR5RGF0YS5kaXM7XG4gICAgICBldmVudEFjdGl2dHlEdG8uZGF0ZSA9IGV2ZW50QWN0aXZpdHlEYXRhLm5EYXRlO1xuICAgICAgZXZlbnRBY3RpdnR5RHRvLnRpbWUgPSBldmVudEFjdGl2aXR5RGF0YS5uVGltZTtcbiAgICAgIGV2ZW50QWN0aXZ0eUR0by5kYXRlVGltZSA9IGV2ZW50QWN0aXZpdHlEYXRhLm5EYXRlVGltZTtcbiAgICAgIGV2ZW50QWN0aXZ0eUR0by5wYXJrZXJUaWNrZXRUeXBlID0gdGhpcy5nZXRFdmVudEFjdGl2aXR5UGFya2VyVGlja2V0VHlwZShldmVudEFjdGl2aXR5RGF0YSk7XG4gICAgICBldmVudEFjdGl2dHlEdG8udGlja2V0SWQgPSB0aGlzLkdldFRpY2tldE51bShldmVudEFjdGl2dHlEdG8ucGFya2VyVGlja2V0VHlwZSwgZXZlbnRBY3Rpdml0eURhdGEucm93SXRlbURhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiBldmVudEFjdGl2dHlEdG87XG4gIH1cblxuICBwcml2YXRlIGdldEV2ZW50QWN0aXZpdHlQYXJrZXJUaWNrZXRUeXBlKGV2ZW50QWN0aXZpdHlEYXRhOiBhbnkpOiBQYXJrZXJUaWNrZXRUeXBlIHtcbiAgICBsZXQgcGFya2VyVGlja2V0VHlwZTogUGFya2VyVGlja2V0VHlwZTtcbiAgICBzd2l0Y2ggKGV2ZW50QWN0aXZpdHlEYXRhLmltZ0NlbGxUYWcpIHtcbiAgICAgIGNhc2UgVHlwZUNhc3RFdmVudEFjdGl2aXR5LkNyZWRpdENhcmROb3RFbmFibGVkOlxuICAgICAgY2FzZSBUeXBlQ2FzdEV2ZW50QWN0aXZpdHkuQ3JlZGl0Q2FyZEVycm9yOlxuICAgICAgICBwYXJrZXJUaWNrZXRUeXBlID0gUGFya2VyVGlja2V0VHlwZS5DcmVkaXRDYXJkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZUNhc3RFdmVudEFjdGl2aXR5LlRyYW5zaWVudE9wZW5UaWNrZXQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RXZlbnRBY3Rpdml0eS5UcmFuc2llbnRDbG9zZVRpY2tldDpcbiAgICAgICAgcGFya2VyVGlja2V0VHlwZSA9IFBhcmtlclRpY2tldFR5cGUuVHJhbnNpZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZUNhc3RFdmVudEFjdGl2aXR5Lk1vbnRobHk6XG4gICAgICAgIHBhcmtlclRpY2tldFR5cGUgPSBQYXJrZXJUaWNrZXRUeXBlLk1vbnRobHk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUeXBlQ2FzdEV2ZW50QWN0aXZpdHkuUGF5bWVudDpcbiAgICAgICAgcGFya2VyVGlja2V0VHlwZSA9IFBhcmtlclRpY2tldFR5cGUuUGF5bWVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFR5cGVDYXN0RXZlbnRBY3Rpdml0eS5HdWVzdDpcbiAgICAgICAgcGFya2VyVGlja2V0VHlwZSA9IFBhcmtlclRpY2tldFR5cGUuR3Vlc3Q7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUeXBlQ2FzdEV2ZW50QWN0aXZpdHkuRVZvdWNoZXI6XG4gICAgICAgIHBhcmtlclRpY2tldFR5cGUgPSBQYXJrZXJUaWNrZXRUeXBlLkVWb3VjaGVyO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHBhcmtlclRpY2tldFR5cGUgPSBQYXJrZXJUaWNrZXRUeXBlLlVua25vd247XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJrZXJUaWNrZXRUeXBlO1xuICB9XG59XG4iXX0=
|
|
628
|
+
}], ctorParameters: () => [{ type: i1.Rpc.DeviceRpcServiceProxy }, { type: i2.FacilityRpcServiceProxy }, { type: i3.Store }], propDecorators: { onSetDeviceViewModeAction: [], onLoadDeviceEventsCollapse: [], onSetDeviceEventsExpanded: [], onLoadEventActivitiesCollapse: [], onSetEventActivitiesExpanded: [], onLoadLprTransactionsCollapse: [], onSetLprTransactionsExpanded: [], onClearDeviceEventsExpanded: [], onClearEventActivitiesExpanded: [], onClearLprTransactionsExpanded: [], onLoadDevicesAction: [], onLoadDevicesByTypeAction: [], onClearDevicesAction: [], onSelectDeviceAction: [], onLoadSelectedDeviceAction: [], onLoadDeviceStatusAction: [], onSetDeviceStatusAction: [], onLoadDeviceEventActivitiesAction: [], onLoadDeviceLprTransactionsAction: [], onLoadDeviceEventsAction: [], onLoadDeviceAction: [], onClearDeviceAction: [], onDeviceStatusChangedAction: [], onDeviceEventChangedAction: [], onDeviceActivityChangedAction: [], onLprTransactionsChangedAction: [], onSelectedRowAction: [], onSelectLprTransactionsRowAction: [], onClearSelectedRow: [] } });
|
|
629
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyay1tYW5hZ2VyLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL3BhcmstbWFuYWdlci9wYXJrLW1hbmFnZXIuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBSXJFLE9BQU8sRUFDTSxjQUFjLEVBQTZCLGVBQWUsRUFBRSxnQkFBZ0IsRUFDM0MsY0FBYyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUNqRyxxQkFBcUIsRUFDdEIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQWEsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLEVBQUUsNEJBQTRCLEVBQzlGLDRCQUE0QixFQUFFLGdCQUFnQixFQUFFLDJCQUEyQixFQUFFLHdCQUF3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WUFDckIsZUFBZSxFQUFFLElBQUk7WUFFckIsb0JBQW9CLEVBQUUsRUFBRTtZQUN4Qix1QkFBdUIsRUFBRSxFQUFFO1lBQzNCLHVCQUF1QixFQUFFLEVBQUU7WUFFM0IsV0FBVyxFQUFFLElBQUk7WUFFakIsMEJBQTBCLEVBQUUsSUFBSTtTQUNqQztLQUNGLENBQUM7R0FDVyxnQkFBZ0IsQ0Fra0I1Qjs7NEZBbGtCWSxnQkFBZ0I7a0JBaEM1QixVQUFVO3dKQW1KVCx5QkFBeUIsTUFPekIsMEJBQTBCLE1BYzFCLHlCQUF5QixNQU96Qiw2QkFBNkIsTUFjN0IsNEJBQTRCLE1BTzVCLDZCQUE2QixNQWU3Qiw0QkFBNEIsTUFPNUIsMkJBQTJCLE1BTzNCLDhCQUE4QixNQU85Qiw4QkFBOEIsTUFPOUIsbUJBQW1CLE1Bc0JuQix5QkFBeUIsTUFRekIsb0JBQW9CLE1BS3BCLG9CQUFvQixNQU1wQiwwQkFBMEIsTUFRMUIsd0JBQXdCLE1BbUJ4Qix1QkFBdUIsTUFRdkIsaUNBQWlDLE1BV2pDLGlDQUFpQyxNQVdqQyx3QkFBd0IsTUFXeEIsa0JBQWtCLE1BOEJsQixtQkFBbUIsTUFjbkIsMkJBQTJCLE1BZ0MzQiwwQkFBMEIsTUFhMUIsNkJBQTZCLE1BWTdCLDhCQUE4QixNQVU5QixtQkFBbUIsTUFTbkIsZ0NBQWdDLE1BdUNoQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb24sIFNlbGVjdG9yLCBTdGF0ZSwgU3RhdGVDb250ZXh0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEZXZpY2VzVmlld01vZGUgfSBmcm9tICcuLi8uLi9lbnVtcy9kZXZpY2VzLXZpZXctbW9kZS5lbnVtJztcbmltcG9ydCB7IFNlbGVjdGVkUm93IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zZWxlY3RlZC1yb3cuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRhYmxlRGF0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGFibGUtZGF0YS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUnBjIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eSc7XG5pbXBvcnQge1xuICBEZXZpY2VEdG8sIERldmljZUV2ZW50RHRvLCBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvLCBEZXZpY2VTdGF0dXNEdG8sIEV2ZW50QWN0aXZpdHlEdG8sXG4gIEZhY2lsaXR5UnBjU2VydmljZVByb3h5LCBMcHJUcmFuc2FjdGlvbkR0bywgT3JkZXJEaXJlY3Rpb24sIFBhcmtlclRpY2tldFR5cGUsIFR5cGVDYXN0RGV2aWNlRXZlbnQsXG4gIFR5cGVDYXN0RXZlbnRBY3Rpdml0eVxufSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L3JwYy1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgZ2V0TW9tZW50TnVsbGFibGUgfSBmcm9tICcuLi8uLi91dGlscy9kYXRlLnV0aWwnO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdERldmljZVN0YXR1cyB9IGZyb20gJy4uLy4uL3V0aWxzL2RldmljZS51dGlsJztcbmltcG9ydCB7IE51bWJlck1hcCwgdG9OdW1iZXJNYXAgfSBmcm9tICcuLi8uLi91dGlscy9sYW5nLnV0aWwnO1xuaW1wb3J0IHsgRmFjaWxpdHlTdGF0ZSB9IGZyb20gJy4uL2ZhY2lsaXR5L2ZhY2lsaXR5LnN0YXRlJztcbmltcG9ydCB7IFNpZGVuYXZTdGF0ZSB9IGZyb20gJy4uL3NpZGVuYXYvc2lkZW5hdi5zdGF0ZSc7XG5pbXBvcnQge1xuICBDbGVhckRldmljZUFjdGlvbiwgQ2xlYXJEZXZpY2VFdmVudHNFeHBhbmRlZCwgQ2xlYXJEZXZpY2VzQWN0aW9uLCBDbGVhckV2ZW50QWN0aXZpdGllc0V4cGFuZGVkLFxuICBDbGVhckxwclRyYW5zYWN0aW9uc0V4cGFuZGVkLCBDbGVhclNlbGVjdGVkUm93LCBEZXZpY2VBY3Rpdml0eUNoYW5nZWRBY3Rpb24sIERldmljZUV2ZW50Q2hhbmdlZEFjdGlvbixcbiAgRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbiwgTG9hZERldmljZUFjdGlvbiwgTG9hZERldmljZUV2ZW50QWN0aXZpdGllc0FjdGlvbiwgTG9hZERldmljZUV2ZW50c0FjdGlvbixcbiAgTG9hZERldmljZUV2ZW50c0NvbGxhcHNlLCBMb2FkRGV2aWNlTHByVHJhbnNhY3Rpb25zQWN0aW9uLCBMb2FkRGV2aWNlc0FjdGlvbiwgTG9hZERldmljZXNCeVR5cGVBY3Rpb24sIExvYWREZXZpY2VTdGF0dXNBY3Rpb24sXG4gIExvYWRFdmVudEFjdGl2aXRpZXNDb2xsYXBzZSwgTG9hZExwclRyYW5zYWN0aW9uc0NvbGxhcHNlLCBMb2FkU2VsZWN0ZWREZXZpY2VBY3Rpb24sIExwclRyYW5zYWN0aW9uc0NoYW5nZWRBY3Rpb24sXG4gIFNlbGVjdERldmljZUFjdGlvbiwgU2VsZWN0THByVHJhbnNhY3Rpb25zUm93QWN0aW9uLCBTZWxlY3RlZFJvd0FjdGlvbiwgU2V0RGV2aWNlRXZlbnRzRXhwYW5kZWQsIFNldERldmljZVN0YXR1c0FjdGlvbixcbiAgU2V0RGV2aWNlVmlld01vZGVBY3Rpb24sIFNldEV2ZW50QWN0aXZpdGllc0V4cGFuZGVkLCBTZXRMcHJUcmFuc2FjdGlvbnNFeHBhbmRlZFxufSBmcm9tICcuL3BhcmstbWFuYWdlci5hY3Rpb25zJztcbmltcG9ydCB7IEFwcE1vZHVsZSwgU3ViTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCB7XG4gIGZsYXQ6IERldmljZUR0b1tdO1xuICBieUlkOiBOdW1iZXJNYXA8RGV2aWNlRHRvPjtcbiAgYnlDb21tSWQ6IE51bWJlck1hcDxEZXZpY2VEdG8+O1xuICBjb3VudDogbnVtYmVyO1xuICBkZXZpY2VzVmlld01vZGU6IERldmljZXNWaWV3TW9kZTtcblxuICBzZWxlY3RlZElkOiBudW1iZXI7XG4gIHNlbGVjdGVkRGV2aWNlU3RhdHVzOiBEZXZpY2VTdGF0dXNEdG87XG4gIHNlbGVjdGVkRGV2aWNlUGFya0lkOiBudW1iZXI7XG4gIGRldmljZVJlbW90ZUNvbW1hbmRzOiBEZXZpY2VSZW1vdGVDb21tYW5kUmVmRHRvW107XG5cbiAgZGV2aWNlRXZlbnRzQ29sbGFwc2U6IFRhYmxlRGF0YTxEZXZpY2VFdmVudER0bz47XG4gIGV2ZW50QWN0aXZpdGllc0NvbGxhcHNlOiBUYWJsZURhdGE8RXZlbnRBY3Rpdml0eUR0bz47XG4gIGxwclRyYW5zYWN0aW9uc0NvbGxhcHNlOiBUYWJsZURhdGE8THByVHJhbnNhY3Rpb25EdG8+O1xuXG4gIGRldmljZUV2ZW50czogRGV2aWNlRXZlbnREdG9bXTtcbiAgZXZlbnRBY3Rpdml0aWVzOiBFdmVudEFjdGl2aXR5RHRvW107XG4gIGxwclRyYW5zYWN0aW9uczogTHByVHJhbnNhY3Rpb25EdG9bXTtcblxuICBkZXZpY2VFdmVudHNFeHBhbmRlZDogRGV2aWNlRXZlbnREdG9bXTtcbiAgZXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQ6IEV2ZW50QWN0aXZpdHlEdG9bXTtcbiAgbHByVHJhbnNhY3Rpb25zRXhwYW5kZWQ6IExwclRyYW5zYWN0aW9uRHRvW107XG5cbiAgLy8gQ3Jvc3MtdGFibGUgbXV0dWFsLWV4Y2x1c2lvbiBtYXJrZXIgKERldmljZUV2ZW50L0RldmljZUFjdGl2aXR5KTpcbiAgLy8gd2hpY2ggdGFibGUgY3VycmVudGx5IG93bnMgcm93IHNlbGVjdGlvbjsgaG9sZHMgbm8gcm93IGRhdGEuXG4gIHNlbGVjdGVkUm93OiBTZWxlY3RlZFJvdztcblxuICAvLyBUaGUgYWN0dWFsIHNlbGVjdGVkIExQUiByb3csIHByZXNlcnZlZCBhY3Jvc3MgdGhlIGRlZmF1bHQ8LT5leHBhbmRlZFxuICAvLyB0YWJsZSByZW1vdW50OyBjbGVhcmVkIG9uIGRldmljZSBjaGFuZ2UuXG4gIHNlbGVjdGVkTHByVHJhbnNhY3Rpb25zUm93OiBMcHJUcmFuc2FjdGlvbkR0bztcbn1cblxuY29uc3QgRVhQQU5ERURfUkVTVUxUX0xJTUlUID0gMTAwMDtcblxuQEluamVjdGFibGUoKVxuQFN0YXRlPFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4oe1xuICBuYW1lOiAncGFya01hbmFnZXInLFxuICBkZWZhdWx0czoge1xuICAgIGZsYXQ6IG51bGwsXG4gICAgYnlJZDoge30sXG4gICAgYnlDb21tSWQ6IHt9LFxuICAgIGNvdW50OiAwLFxuICAgIGRldmljZXNWaWV3TW9kZTogbnVsbCxcblxuICAgIHNlbGVjdGVkSWQ6IG51bGwsXG4gICAgc2VsZWN0ZWREZXZpY2VTdGF0dXM6IG51bGwsXG4gICAgc2VsZWN0ZWREZXZpY2VQYXJrSWQ6IG51bGwsXG4gICAgZGV2aWNlUmVtb3RlQ29tbWFuZHM6IG51bGwsXG5cbiAgICBkZXZpY2VFdmVudHNDb2xsYXBzZTogbnVsbCxcbiAgICBldmVudEFjdGl2aXRpZXNDb2xsYXBzZTogbnVsbCxcbiAgICBscHJUcmFuc2FjdGlvbnNDb2xsYXBzZTogbnVsbCxcblxuICAgIGRldmljZUV2ZW50czogbnVsbCxcbiAgICBldmVudEFjdGl2aXRpZXM6IG51bGwsXG4gICAgbHByVHJhbnNhY3Rpb25zOiBudWxsLFxuXG4gICAgZGV2aWNlRXZlbnRzRXhwYW5kZWQ6IFtdLFxuICAgIGV2ZW50QWN0aXZpdGllc0V4cGFuZGVkOiBbXSxcbiAgICBscHJUcmFuc2FjdGlvbnNFeHBhbmRlZDogW10sXG5cbiAgICBzZWxlY3RlZFJvdzogbnVsbCxcblxuICAgIHNlbGVjdGVkTHByVHJhbnNhY3Rpb25zUm93OiBudWxsLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBQYXJrTWFuYWdlclN0YXRlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRldmljZVJwY1NlcnZpY2VQcm94eTogUnBjLkRldmljZVJwY1NlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIGZhY2lsaXR5UnBjU2VydmljZVByb3h5OiBGYWNpbGl0eVJwY1NlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSkge1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBmbGF0KHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBEZXZpY2VEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmZsYXQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGRldmljZXMoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IERldmljZUR0b1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhzdGF0ZS5ieUlkIHx8IHt9KTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgYnlDb21tSWQoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IE51bWJlck1hcDxEZXZpY2VEdG8+IHtcbiAgICByZXR1cm4gc3RhdGUuYnlDb21tSWQgfHwge307XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGJ5SWQoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IE51bWJlck1hcDxEZXZpY2VEdG8+IHtcbiAgICByZXR1cm4gc3RhdGUuYnlJZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZGV2aWNlc1ZpZXdNb2RlKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBEZXZpY2VzVmlld01vZGUge1xuICAgIC8vIEFsc28gcmV0dXJucyBkZWZhdWx0IHZhbHVlIHdoZW4gdGhlIHVzZXIgaGF2bid0IGNoYW5nZSBpdCB5ZXRcbiAgICByZXR1cm4gc3RhdGUuZGV2aWNlc1ZpZXdNb2RlIHx8IERldmljZXNWaWV3TW9kZS5HYWxsZXJ5O1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZERldmljZUlkKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRJZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWREZXZpY2Uoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IERldmljZUR0byB7XG4gICAgcmV0dXJuIHN0YXRlLmJ5SWRbc3RhdGUuc2VsZWN0ZWRJZF07XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkRGV2aWNlU3RhdHVzKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBEZXZpY2VTdGF0dXNEdG8ge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZERldmljZVN0YXR1cztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWREZXZpY2VQYXJrSWQoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkRGV2aWNlUGFya0lkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBjb3VudChzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKSB7XG4gICAgcmV0dXJuIHN0YXRlLmNvdW50O1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBldmVudEFjdGl2aXRpZXMoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IEV2ZW50QWN0aXZpdHlEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmV2ZW50QWN0aXZpdGllcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgbHByVHJhbnNhY3Rpb25zKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBMcHJUcmFuc2FjdGlvbkR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUubHByVHJhbnNhY3Rpb25zO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBkZXZpY2VFdmVudHMoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IERldmljZUV2ZW50RHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5kZXZpY2VFdmVudHM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGRldmljZUV2ZW50c0V4cGFuZGVkKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBEZXZpY2VFdmVudER0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuZGV2aWNlRXZlbnRzRXhwYW5kZWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGV2ZW50QWN0aXZpdGllc0V4cGFuZGVkKHN0YXRlOiBQYXJrTWFuYWdlclN0YXRlTW9kZWwpOiBFdmVudEFjdGl2aXR5RHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5ldmVudEFjdGl2aXRpZXNFeHBhbmRlZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgbHByVHJhbnNhY3Rpb25zRXhwYW5kZWQoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IExwclRyYW5zYWN0aW9uRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5scHJUcmFuc2FjdGlvbnNFeHBhbmRlZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZGV2aWNlRXZlbnRzQ29sbGFwc2Uoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IFRhYmxlRGF0YTxEZXZpY2VFdmVudER0bz4ge1xuICAgIHJldHVybiBzdGF0ZS5kZXZpY2VFdmVudHNDb2xsYXBzZTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZXZlbnRBY3Rpdml0aWVzQ29sbGFwc2Uoc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IFRhYmxlRGF0YTxFdmVudEFjdGl2aXR5RHRvPiB7XG4gICAgcmV0dXJuIHN0YXRlLmV2ZW50QWN0aXZpdGllc0NvbGxhcHNlO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBscHJUcmFuc2FjdGlvbnNDb2xsYXBzZShzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogVGFibGVEYXRhPExwclRyYW5zYWN0aW9uRHRvPiB7XG4gICAgcmV0dXJuIHN0YXRlLmxwclRyYW5zYWN0aW9uc0NvbGxhcHNlO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZFJvdyhzdGF0ZTogUGFya01hbmFnZXJTdGF0ZU1vZGVsKTogU2VsZWN0ZWRSb3cge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZFJvdztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWRMcHJUcmFuc2FjdGlvbnNSb3coc3RhdGU6IFBhcmtNYW5hZ2VyU3RhdGVNb2RlbCk6IExwclRyYW5zYWN0aW9uRHRvIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRMcHJUcmFuc2FjdGlvbnNSb3c7XG4gIH1cblxuICBAQWN0aW9uKFNldERldmljZVZpZXdNb2RlQWN0aW9uKVxuICBvblNldERldmljZVZpZXdNb2RlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogU2V0RGV2aWNlVmlld01vZGVBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBkZXZpY2VzVmlld01vZGU6IGFjdGlvbi52aWV3TW9kZSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZERldmljZUV2ZW50c0NvbGxhcHNlKVxuICBvbkxvYWREZXZpY2VFdmVudHNDb2xsYXBzZShjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWREZXZpY2VFdmVudHNDb2xsYXBzZSkge1xuICAgIGNvbnN0IGRldmljZUV2ZW50cyQgPSB0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eS5nZXREZXZpY2VFdmVudHMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5kZXZpY2VJZCwgbnVsbCwgbnVsbCxcbiAgICAgIG51bGwsIG51bGwsIG51bGwsIGFjdGlvbi5yZXN1bHRMaW1pdCwgMCwgbnVsbCwgT3JkZXJEaXJlY3Rpb24uTm9uZSk7XG4gICAgcmV0dXJuIGRldmljZUV2ZW50cyQucGlwZSh0YXAoZGF0YVNldCA9PlxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBkZXZpY2VFdmVudHNDb2xsYXBzZToge1xuICAgICAgICAgIHJlc3VsdExpbWl0OiBhY3Rpb24ucmVzdWx0TGltaXQsXG4gICAgICAgICAgZGF0YVNldDogZGF0YVNldC5kYXRhLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKSk7XG4gIH1cblxuICBAQWN0aW9uKFNldERldmljZUV2ZW50c0V4cGFuZGVkKVxuICBvblNldERldmljZUV2ZW50c0V4cGFuZGVkKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogU2V0RGV2aWNlRXZlbnRzRXhwYW5kZWQpIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBkZXZpY2VFdmVudHNFeHBhbmRlZDogYWN0aW9uLmRhdGFTZXQsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRFdmVudEFjdGl2aXRpZXNDb2xsYXBzZSlcbiAgb25Mb2FkRXZlbnRBY3Rpdml0aWVzQ29sbGFwc2UoY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkRXZlbnRBY3Rpdml0aWVzQ29sbGFwc2UpIHtcbiAgICBjb25zdCBldmVudEFjdGl2aXRpZXMkID0gdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0RGV2aWNlQWN0aXZpdGllcyhhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmRldmljZUlkLCBudWxsLCBudWxsLFxuICAgICAgbnVsbCwgbnVsbCwgbnVsbCwgYWN0aW9uLnJlc3VsdExpbWl0LCAwLCBudWxsLCBPcmRlckRpcmVjdGlvbi5Ob25lKTtcbiAgICByZXR1cm4gZXZlbnRBY3Rpdml0aWVzJC5waXBlKHRhcChkYXRhU2V0ID0+XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGV2ZW50QWN0aXZpdGllc0NvbGxhcHNlOiB7XG4gICAgICAgICAgcmVzdWx0TGltaXQ6IGFjdGlvbi5yZXN1bHRMaW1pdCxcbiAgICAgICAgICBkYXRhU2V0OiBkYXRhU2V0LmRhdGEsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApKTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0RXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQpXG4gIG9uU2V0RXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQoY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXRFdmVudEFjdGl2aXRpZXNFeHBhbmRlZCkge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGV2ZW50QWN0aXZpdGllc0V4cGFuZGVkOiBhY3Rpb24uZGF0YVNldCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZExwclRyYW5zYWN0aW9uc0NvbGxhcHNlKVxuICBvbkxvYWRMcHJUcmFuc2FjdGlvbnNDb2xsYXBzZShjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRMcHJUcmFuc2FjdGlvbnNDb2xsYXBzZSkge1xuICAgIGNvbnN0IGxwclRyYW5zYWN0aW9ucyQgPSB0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eVxuICAgICAgLmdldERldmljZUxwclRyYW5zYWN0aW9ucyhhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmRldmljZUlkLCBudWxsLCBudWxsLCBudWxsLCBudWxsLFxuICAgICAgICBudWxsLCBhY3Rpb24ucmVzdWx0TGltaXQsIDAsIG51bGwsIE9yZGVyRGlyZWN0aW9uLk5vbmUpO1xuICAgIHJldHVybiBscHJUcmFuc2FjdGlvbnMkLnBpcGUodGFwKGRhdGFTZXQgPT5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgbHByVHJhbnNhY3Rpb25zQ29sbGFwc2U6IHtcbiAgICAgICAgICByZXN1bHRMaW1pdDogYWN0aW9uLnJlc3VsdExpbWl0LFxuICAgICAgICAgIGRhdGFTZXQ6IGRhdGFTZXQuZGF0YSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICkpO1xuICB9XG5cbiAgQEFjdGlvbihTZXRMcHJUcmFuc2FjdGlvbnNFeHBhbmRlZClcbiAgb25TZXRMcHJUcmFuc2FjdGlvbnNFeHBhbmRlZChjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IFNldExwclRyYW5zYWN0aW9uc0V4cGFuZGVkKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgbHByVHJhbnNhY3Rpb25zRXhwYW5kZWQ6IGFjdGlvbi5kYXRhU2V0LFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhckRldmljZUV2ZW50c0V4cGFuZGVkKVxuICBvbkNsZWFyRGV2aWNlRXZlbnRzRXhwYW5kZWQoY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGRldmljZUV2ZW50c0V4cGFuZGVkOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJFdmVudEFjdGl2aXRpZXNFeHBhbmRlZClcbiAgb25DbGVhckV2ZW50QWN0aXZpdGllc0V4cGFuZGVkKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBldmVudEFjdGl2aXRpZXNFeHBhbmRlZDogW10sXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyTHByVHJhbnNhY3Rpb25zRXhwYW5kZWQpXG4gIG9uQ2xlYXJMcHJUcmFuc2FjdGlvbnNFeHBhbmRlZChjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgbHByVHJhbnNhY3Rpb25zRXhwYW5kZWQ6IFtdLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkRGV2aWNlc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWREZXZpY2VzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZERldmljZXNBY3Rpb24pIHtcbiAgICB0aGlzLnBhdGNoRGV2aWNlcyhjdHgsIG51bGwpO1xuXG4gICAgY29uc3QgYXBwTW9kdWxlOiBBcHBNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5hcHBNb2R1bGUpO1xuICAgIGNvbnN0IHN1Yk1vZHVsZTogU3ViTW9kdWxlID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTaWRlbmF2U3RhdGUuc3ViTW9kdWxlKTtcblxuICAgIGxldCBnZXREZXZpY2VzJDogdHlwZW9mIHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldENDRGV2aWNlcztcbiAgICBpZiAoYXBwTW9kdWxlID09PSBBcHBNb2R1bGUuQ2MpIHtcbiAgICAgIGdldERldmljZXMkID0gdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0Q0NEZXZpY2VzLmJpbmQodGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkpO1xuICAgIH0gZWxzZSBpZiAoYXBwTW9kdWxlID09PSBBcHBNb2R1bGUuUmVwb3J0cykge1xuICAgICAgZ2V0RGV2aWNlcyQgPSB0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eS5nZXRSZXBvcnRzRGV2aWNlcy5iaW5kKHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5KTtcbiAgICB9IGVsc2UgaWYgKGFwcE1vZHVsZSA9PT0gQXBwTW9kdWxlLkxvdENvbmZpZ3VyYXRpb24gJiYgc3ViTW9kdWxlID09PSBTdWJNb2R1bGUuU2NoZWR1bGVyKSB7XG4gICAgICBnZXREZXZpY2VzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldExvdENvbmZpZ3VyYXRpb25zRGV2aWNlcy5iaW5kKHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0RGV2aWNlcyQoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm1heFJlc3VsdHMsXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5zZWFyY2hUZXJtLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5LmNvbHVtbixcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkub3JkZXJEaXJlY3Rpb24sIGFjdGlvbi5pc1RsNjApLnBpcGUodGFwKGRldmljZXMgPT5cbiAgICAgICAgdGhpcy5wYXRjaERldmljZXMoY3R4LCBkZXZpY2VzLmRhdGEpKSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWREZXZpY2VzQnlUeXBlQWN0aW9uKVxuICBvbkxvYWREZXZpY2VzQnlUeXBlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZERldmljZXNCeVR5cGVBY3Rpb24pIHtcbiAgICBjb25zdCBkZXZpY2VzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldERldmljZXNCeVR5cGUoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm1heFJlc3VsdHMsXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5zZWFyY2hUZXJtLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5LmNvbHVtbixcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkub3JkZXJEaXJlY3Rpb24sIGFjdGlvbi5kZXZpY2VUeXBlcyk7XG4gICAgcmV0dXJuIGRldmljZXMkLnBpcGUodGFwKGRldmljZXMgPT4gdGhpcy5wYXRjaERldmljZXMoY3R4LCBkZXZpY2VzLmRhdGEpKSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyRGV2aWNlc0FjdGlvbilcbiAgb25DbGVhckRldmljZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPikge1xuICAgIHRoaXMucGF0Y2hEZXZpY2VzKGN0eCwgbnVsbCk7XG4gIH1cblxuICBAQWN0aW9uKFNlbGVjdERldmljZUFjdGlvbilcbiAgb25TZWxlY3REZXZpY2VBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZWxlY3REZXZpY2VBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkSWQ6IG51bGwgfSk7XG4gICAgY3R4LnBhdGNoU3RhdGUoeyBzZWxlY3RlZElkOiBhY3Rpb24uZGV2aWNlSWQgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTZWxlY3RlZERldmljZUFjdGlvbilcbiAgb25Mb2FkU2VsZWN0ZWREZXZpY2VBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPikge1xuICAgIGNvbnN0IHNlbGVjdGVkRGV2aWNlSWQgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZElkO1xuICAgIGlmIChzZWxlY3RlZERldmljZUlkKSB7XG4gICAgICB0aGlzLm9uTG9hZERldmljZUFjdGlvbihjdHgsIHsgZGV2aWNlSWQ6IHNlbGVjdGVkRGV2aWNlSWQgfSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihMb2FkRGV2aWNlU3RhdHVzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZERldmljZVN0YXR1c0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWREZXZpY2VTdGF0dXNBY3Rpb24pIHtcbiAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuXG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc2VsZWN0ZWREZXZpY2VTdGF0dXM6IG51bGwsXG4gICAgICBzZWxlY3RlZERldmljZVBhcmtJZDogbnVsbCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRldmljZVN0YXR1cyQgPSB0aGlzLmZhY2lsaXR5UnBjU2VydmljZVByb3h5LmdldERldmljZVN0YXR1cyhndWlkLCBhY3Rpb24uZGV2aWNlPy5wYXJrSUQsIGFjdGlvbi5kZXZpY2U/LmlkKTtcblxuICAgIHJldHVybiBkZXZpY2VTdGF0dXMkLnBpcGUodGFwKGRldmljZVN0YXR1cyA9PlxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzZWxlY3RlZERldmljZVN0YXR1czogZGV2aWNlU3RhdHVzPy5kYXRhPy5kYXRhIHx8IGdldERlZmF1bHREZXZpY2VTdGF0dXMoYWN0aW9uLmRldmljZSksXG4gICAgICAgIHNlbGVjdGVkRGV2aWNlUGFya0lkOiBkZXZpY2VTdGF0dXM/LmRhdGE/LnBhcmtJRCxcbiAgICAgIH0pLFxuICAgICkpO1xuICB9XG5cbiAgQEFjdGlvbihTZXREZXZpY2VTdGF0dXNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25TZXREZXZpY2VTdGF0dXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXREZXZpY2VTdGF0dXNBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZERldmljZVN0YXR1czogZ2V0RGVmYXVsdERldmljZVN0YXR1cyhhY3Rpb24uZGV2aWNlKSxcbiAgICAgIHNlbGVjdGVkRGV2aWNlUGFya0lkOiBhY3Rpb24uZGV2aWNlLnBhcmtJRCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZERldmljZUV2ZW50QWN0aXZpdGllc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWREZXZpY2VFdmVudEFjdGl2aXRpZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkRGV2aWNlRXZlbnRBY3Rpdml0aWVzQWN0aW9uKSB7XG4gICAgY29uc3QgZXZlbnRBY3Rpdml0aWVzJCA9IHRoaXMuZGV2aWNlUnBjU2VydmljZVByb3h5LmdldERldmljZUFjdGl2aXRpZXMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5kZXZpY2VJZCwgZ2V0TW9tZW50TnVsbGFibGUoYWN0aW9uLnN0YXJ0RGF0ZSksXG4gICAgICBnZXRNb21lbnROdWxsYWJsZShhY3Rpb24uZW5kRGF0ZSksIGFjdGlvbi5zZWFyY2hWYWx1ZSwgbnVsbCwgbnVsbCwgYWN0aW9uLnRha2UsIGFjdGlvbi5za2lwLCBudWxsLCBPcmRlckRpcmVjdGlvbi5Ob25lKTtcbiAgICByZXR1cm4gZXZlbnRBY3Rpdml0aWVzJC5waXBlKHRhcChldmVudEFjdGl2aXRpZXMgPT5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZXZlbnRBY3Rpdml0aWVzOiBldmVudEFjdGl2aXRpZXMuZGF0YSxcbiAgICAgIH0pLFxuICAgICkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkRGV2aWNlTHByVHJhbnNhY3Rpb25zQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZERldmljZUxwclRyYW5zYWN0aW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWREZXZpY2VMcHJUcmFuc2FjdGlvbnNBY3Rpb24pIHtcbiAgICBjb25zdCBscHJUcmFuc2FjdGlvbnMkID0gdGhpcy5kZXZpY2VScGNTZXJ2aWNlUHJveHkuZ2V0RGV2aWNlTHByVHJhbnNhY3Rpb25zKGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uZGV2aWNlSWQsIGdldE1vbWVudE51bGxhYmxlKGFjdGlvbi5zdGFydERhdGUpLFxuICAgICAgZ2V0TW9tZW50TnVsbGFibGUoYWN0aW9uLmVuZERhdGUpLCBudWxsLCBudWxsLCBudWxsLCBhY3Rpb24udGFrZSwgYWN0aW9uLnNraXAsIG51bGwsIE9yZGVyRGlyZWN0aW9uLk5vbmUpO1xuICAgIHJldHVybiBscHJUcmFuc2FjdGlvbnMkLnBpcGUodGFwKGxwclRyYW5zYWN0aW9ucyA9PlxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBscHJUcmFuc2FjdGlvbnM6IGxwclRyYW5zYWN0aW9ucy5kYXRhLFxuICAgICAgfSksXG4gICAgKSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWREZXZpY2VFdmVudHNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkRGV2aWNlRXZlbnRzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZERldmljZUV2ZW50c0FjdGlvbikge1xuICAgIGNvbnN0IGRldmljZUV2ZW50cyQgPSB0aGlzLmRldmljZVJwY1NlcnZpY2VQcm94eS5nZXREZXZpY2VFdmVudHMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5kZXZpY2VJZCwgZ2V0TW9tZW50TnVsbGFibGUoYWN0aW9uLnN0YXJ0RGF0ZSksXG4gICAgICBnZXRNb21lbnROdWxsYWJsZShhY3Rpb24uZW5kRGF0ZSksIG51bGwsIG51bGwsIG51bGwsIGFjdGlvbi50YWtlLCBhY3Rpb24uc2tpcCwgbnVsbCwgT3JkZXJEaXJlY3Rpb24uTm9uZSk7XG4gICAgcmV0dXJuIGRldmljZUV2ZW50cyQucGlwZSh0YXAoZGV2aWNlRXZlbnRzID0+XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGRldmljZUV2ZW50czogZGV2aWNlRXZlbnRzLmRhdGEsXG4gICAgICB9KSxcbiAgICApKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZERldmljZUFjdGlvbilcbiAgb25Mb2FkRGV2aWNlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZERldmljZUFjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGV2ZW50QWN0aXZpdGllczogbnVsbCxcbiAgICAgIGxwclRyYW5zYWN0aW9uczogbnVsbCxcbiAgICAgIGRldmljZUV2ZW50czogbnVsbCxcbiAgICAgIGRldmljZVJlbW90ZUNvbW1hbmRzOiBudWxsLFxuICAgICAgZGV2aWNlRXZlbnRzQ29sbGFwc2U6IG51bGwsXG4gICAgICBldmVudEFjdGl2aXRpZXNDb2xsYXBzZTogbnVsbCxcbiAgICAgIGxwclRyYW5zYWN0aW9uc0NvbGxhcHNlOiBudWxsLFxuICAgICAgZGV2aWNlRXZlbnRzRXhwYW5kZWQ6IFtdLFxuICAgICAgZXZlbnRBY3Rpdml0aWVzRXhwYW5kZWQ6IFtdLFxuICAgICAgbHByVHJhbnNhY3Rpb25zRXhwYW5kZWQ6IFtdLFxuICAgICAgc2VsZWN0ZWREZXZpY2VTdGF0dXM6IG51bGwsXG4gICAgICBzZWxlY3RlZERldmljZVBhcmtJZDogbnVsbCxcbiAgICAgIHNlbGVjdGVkTHByVHJhbnNhY3Rpb25zUm93OiBudWxsLFxuICAgIH0pO1xuXG4gICAgLy8gd2FpdCBmb3IgZGV2aWNlcyBzdG9yZSB0byBiZSBsb2FkZWQgYmVmb3JlIGxvYWRpbmcgYSBkZXZpY2VcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoUGFya01hbmFnZXJTdGF0ZS5kZXZpY2VzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihkZXZpY2VzID0+IGRldmljZXM/Lmxlbmd0aCA+IDApLFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICB0YXAoKGZpbHRlcmVkRGV2aWNlcykgPT4ge1xuICAgICAgICAgIGNvbnN0IGRldmljZSA9IGZpbHRlcmVkRGV2aWNlcy5maW5kKGQgPT4gZC5pZCA9PT0gK2FjdGlvbi5kZXZpY2VJZCk7XG4gICAgICAgICAgY3R4LmRpc3BhdGNoKG5ldyBMb2FkRGV2aWNlU3RhdHVzQWN0aW9uKGRldmljZSkpO1xuICAgICAgICB9KVxuICAgICAgKVxuICB9XG5cbiAgQEFjdGlvbihDbGVhckRldmljZUFjdGlvbilcbiAgb25DbGVhckRldmljZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc2VsZWN0ZWRJZDogbnVsbCxcbiAgICAgIHNlbGVjdGVkRGV2aWNlU3RhdHVzOiBudWxsLFxuICAgICAgc2VsZWN0ZWREZXZpY2VQYXJrSWQ6IG51bGwsXG4gICAgICBldmVudEFjdGl2aXRpZXM6IG51bGwsXG4gICAgICBscHJUcmFuc2FjdGlvbnM6IG51bGwsXG4gICAgICBkZXZpY2VFdmVudHM6IG51bGwsXG4gICAgICBkZXZpY2VSZW1vdGVDb21tYW5kczogbnVsbCxcbiAgICAgIHNlbGVjdGVkTHByVHJhbnNhY3Rpb25zUm93OiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uKVxuICBvbkRldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uKSB7XG4gICAgY29uc3QgZGV2aWNlSWQgPSBhY3Rpb24uZGV2aWNlU3RhdHVzPy5kZXZpY2VJRDtcbiAgICBjb25zdCBjb21tSUQgPSBhY3Rpb24uZGV2aWNlU3RhdHVzPy5jb21tSUQ7XG5cbiAgICBjb25zdCBkZXZpY2VzQnlJZCA9IGN0eC5nZXRTdGF0ZSgpLmJ5SWQ7XG4gICAgY29uc3QgZGV2aWNlc2J5Q29tbUlkID0gY3R4LmdldFN0YXRlKCkuYnlDb21tSWQ7XG5cbiAgICBpZiAoZGV2aWNlc0J5SWRbZGV2aWNlSWRdKSB7XG4gICAgICBpZiAoIWlzRXF1YWwoZGV2aWNlc0J5SWRbZGV2aWNlSWRdLmRldmljZVN0YXR1cywgYWN0aW9uLmRldmljZVN0YXR1cykpIHtcbiAgICAgICAgY29uc3QgY2xvbmVkRHRvID0gRGV2aWNlU3RhdHVzRHRvLmZyb21KUyhhY3Rpb24uZGV2aWNlU3RhdHVzKTtcbiAgICAgICAgY2xvbmVkRHRvLnR5cGUgPSBkZXZpY2VzQnlJZFtkZXZpY2VJZF0udHlwZTtcbiAgICAgICAgZGV2aWNlc0J5SWRbZGV2aWNlSWRdLmRldmljZVN0YXR1cyA9IGNsb25lZER0bztcbiAgICAgICAgZGV2aWNlc2J5Q29tbUlkW2NvbW1JRF0uZGV2aWNlU3RhdHVzID0gY2xvbmVkRHRvO1xuXG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBieUlkOiBjbG9uZURlZXAoZGV2aWNlc0J5SWQpLFxuICAgICAgICAgIGJ5Q29tbUlkOiBjbG9uZURlZXAoZGV2aWNlc2J5Q29tbUlkKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWREZXZpY2VTdGF0dXMgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZERldmljZVN0YXR1cztcbiAgICBpZiAoc2VsZWN0ZWREZXZpY2VTdGF0dXM/LmRldmljZUlEID09PSBkZXZpY2VJZCkge1xuICAgICAgYWN0aW9uLmRldmljZVN0YXR1cy50eXBlID0gc2VsZWN0ZWREZXZpY2VTdGF0dXMudHlwZTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgc2VsZWN0ZWREZXZpY2VTdGF0dXM6IGFjdGlvbi5kZXZpY2VTdGF0dXMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBmb3IgRGV2aWNlIEV2ZW50c1xuICBAQWN0aW9uKERldmljZUV2ZW50Q2hhbmdlZEFjdGlvbilcbiAgb25EZXZpY2VFdmVudENoYW5nZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBEZXZpY2VFdmVudENoYW5nZWRBY3Rpb24pIHtcbiAgICBjb25zdCBzZWxlY3RlZERldmljZVBhcmtJZCA9IGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkRGV2aWNlUGFya0lkO1xuICAgIGNvbnN0IHNlbGVjdGVkRGV2aWNlU3RhdHVzID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWREZXZpY2VTdGF0dXM7XG4gICAgLy8gVE9ETzogY2hhbmdlIHRvIGRldmljZUlkIG9uY2UgU1Agd2lsbCBpbXBsZW1lbnRcbiAgICBpZiAoc2VsZWN0ZWREZXZpY2VTdGF0dXM/LmNvbW1JRCA9PT0gYWN0aW9uLmRldkV2ZW50Py5yZWFkZXJJRCAmJiBzZWxlY3RlZERldmljZVBhcmtJZCA9PT0gYWN0aW9uLmRldkV2ZW50Py5wYXJrSUQpIHtcbiAgICAgIGNvbnN0IGRldmljZUV2ZW50RHRvID0gdGhpcy5wb3B1bGF0ZURldmljZUV2ZW50KGFjdGlvbi5kZXZFdmVudCk7XG4gICAgICB0aGlzLnBhdGNoRGV2aWNlSXRlbShjdHgsIGRldmljZUV2ZW50RHRvLCAnZGV2aWNlRXZlbnRzJyk7XG4gICAgfVxuICB9XG5cblxuICAvLy8gZm9yIERldmljZSBhY3Rpdml0eVxuICBAQWN0aW9uKERldmljZUFjdGl2aXR5Q2hhbmdlZEFjdGlvbilcbiAgb25EZXZpY2VBY3Rpdml0eUNoYW5nZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBEZXZpY2VBY3Rpdml0eUNoYW5nZWRBY3Rpb24pIHtcbiAgICBjb25zdCBzZWxlY3RlZERldmljZVBhcmtJZCA9IGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkRGV2aWNlUGFya0lkO1xuICAgIGNvbnN0IHNlbGVjdGVkRGV2aWNlU3RhdHVzID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWREZXZpY2VTdGF0dXM7XG4gICAgLy8gVE9ETzogY2hhbmdlIHRvIGRldmljZUlkIG9uY2UgU1Agd2lsbCBpbXBsZW1lbnRcbiAgICBpZiAoc2VsZWN0ZWREZXZpY2VTdGF0dXM/LmNvbW1JRCA9PT0gYWN0aW9uLmV2ZW50QWN0aXZpdHk/LnJlYWRlcklEICYmIHNlbGVjdGVkRGV2aWNlUGFya0lkID09PSBhY3Rpb24uZXZlbnRBY3Rpdml0eT8ucGFya0lEKSB7XG4gICAgICBjb25zdCBldmVudEFjdGl2aXR5RHRvID0gdGhpcy5wb3B1bGF0ZUV2ZW50QWN0aXZpdHkoYWN0aW9uLmV2ZW50QWN0aXZpdHkpO1xuICAgICAgdGhpcy5wYXRjaERldmljZUl0ZW0oY3R4LCBldmVudEFjdGl2aXR5RHRvLCAnZXZlbnRBY3Rpdml0aWVzJyk7XG4gICAgfVxuICB9XG5cbiAgLy8vIGZvciBMUFIgVHJhbnNhY3Rpb25zXG4gIEBBY3Rpb24oTHByVHJhbnNhY3Rpb25zQ2hhbmdlZEFjdGlvbilcbiAgb25McHJUcmFuc2FjdGlvbnNDaGFuZ2VkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogTHByVHJhbnNhY3Rpb25zQ2hhbmdlZEFjdGlvbikge1xuICAgIGNvbnN0IHNlbGVjdGVkRGV2aWNlUGFya0lkID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWREZXZpY2VQYXJrSWQ7XG4gICAgY29uc3Qgc2VsZWN0ZWREZXZpY2VTdGF0dXMgPSBjdHguZ2V0U3RhdGUoKS5zZWxlY3RlZERldmljZVN0YXR1cztcbiAgICAvLyBUT0RPOiBjaGFuZ2UgdG8gZGV2aWNlSWQgb25jZSBTUCB3aWxsIGltcGxlbWVudFxuICAgIGlmIChzZWxlY3RlZERldmljZVN0YXR1cz8uY29tbUlEID09PSBhY3Rpb24ubHByVHJhbnNhY3Rpb24/LnJlYWRlcklEICYmIHNlbGVjdGVkRGV2aWNlUGFya0lkID09PSBhY3Rpb24ubHByVHJhbnNhY3Rpb24/LnBhcmtJRCkge1xuICAgICAgdGhpcy5wYXRjaERldmljZUl0ZW0oY3R4LCBhY3Rpb24ubHByVHJhbnNhY3Rpb24sICdscHJUcmFuc2FjdGlvbnMnKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKFNlbGVjdGVkUm93QWN0aW9uKVxuICBvblNlbGVjdGVkUm93QWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFBhcmtNYW5hZ2VyU3RhdGVNb2RlbD4sIGFjdGlvbjogU2VsZWN0ZWRSb3dBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZFJvdzoge1xuICAgICAgICB0YWJsZU5hbWU6IGFjdGlvbi5wYXlsb2FkLnRhYmxlTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKFNlbGVjdExwclRyYW5zYWN0aW9uc1Jvd0FjdGlvbilcbiAgb25TZWxlY3RMcHJUcmFuc2FjdGlvbnNSb3dBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZWxlY3RMcHJUcmFuc2FjdGlvbnNSb3dBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZExwclRyYW5zYWN0aW9uc1JvdzogYWN0aW9uLnZhbHVlXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBhdGNoRGV2aWNlcyhjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBkZXZpY2VzOiBEZXZpY2VEdG9bXSkge1xuICAgIGRldmljZXM/LmZvckVhY2goZGV2aWNlID0+IGRldmljZS5kZXZpY2VTdGF0dXMgPSBkZXZpY2UuZGV2aWNlU3RhdHVzID8/IGdldERlZmF1bHREZXZpY2VTdGF0dXMoZGV2aWNlKSk7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZmxhdDogZGV2aWNlcz8uc29ydCgoYSwgYikgPT4gYS5pZCAtIGIuaWQpLFxuICAgICAgYnlJZDogdG9OdW1iZXJNYXAoZGV2aWNlcyB8fCBbXSwgKGQpID0+IGQuaWQpLFxuICAgICAgYnlDb21tSWQ6IHRvTnVtYmVyTWFwKGRldmljZXMgfHwgW10sIChkKSA9PiBkLmNvbW1JRCksXG4gICAgICBjb3VudDogZGV2aWNlcz8ubGVuZ3RoIHx8IDAsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBhdGNoRGV2aWNlSXRlbTxUPihjdHg6IFN0YXRlQ29udGV4dDxQYXJrTWFuYWdlclN0YXRlTW9kZWw+LCBpdGVtOiBULCBpdGVtc05hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGNvbGxhcHNlSXRlbXNOYW1lID0gYCR7aXRlbXNOYW1lfUNvbGxhcHNlYDtcbiAgICBjb25zdCBleHBhbmRlZEl0ZW1zTmFtZSA9IGAke2l0ZW1zTmFtZX1FeHBhbmRlZGA7XG4gICAgY29uc3QgY29sbGFwc2VJdGVtcyA9IGN0eC5nZXRTdGF0ZSgpW2NvbGxhcHNlSXRlbXNOYW1lXSBhcyBUYWJsZURhdGE8YW55PjtcbiAgICBsZXQgZXhwYW5kZWRJdGVtcyA9IGN0eC5nZXRTdGF0ZSgpW2V4cGFuZGVkSXRlbXNOYW1lXTtcblxuICAgIGlmIChjb2xsYXBzZUl0ZW1zICE9PSBudWxsKSB7XG4gICAgICBjb2xsYXBzZUl0ZW1zLmRhdGFTZXQgPSBbLi4uY29sbGFwc2VJdGVtcy5kYXRhU2V0LnNsaWNlKDAsIGNvbGxhcHNlSXRlbXMucmVzdWx0TGltaXQgLSAxKV07XG4gICAgICBjb2xsYXBzZUl0ZW1zLmRhdGFTZXQudW5zaGlmdChpdGVtKTtcbiAgICB9XG5cbiAgICBpZiAoZXhwYW5kZWRJdGVtcyAhPT0gbnVsbCkge1xuICAgICAgZXhwYW5kZWRJdGVtcyA9IFsuLi5leHBhbmRlZEl0ZW1zXS5zbGljZSgwLCBFWFBBTkRFRF9SRVNVTFRfTElNSVQgLSAxKTtcbiAgICAgIGV4cGFuZGVkSXRlbXMudW5zaGlmdChpdGVtKTtcbiAgICB9XG5cbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBbY29sbGFwc2VJdGVtc05hbWVdOiBjbG9uZURlZXAoY29sbGFwc2VJdGVtcyksXG4gICAgICBbZXhwYW5kZWRJdGVtc05hbWVdOiBleHBhbmRlZEl0ZW1zLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhclNlbGVjdGVkUm93KVxuICBvbkNsZWFyU2VsZWN0ZWRSb3coY3R4OiBTdGF0ZUNvbnRleHQ8UGFya01hbmFnZXJTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkUm93OiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3B1bGF0ZURldmljZUV2ZW50KGRldmljZUV2ZW50RGF0YTogYW55KSB7XG4gICAgY29uc3QgZGV2aWNlRXZlbnREdG8gPSBEZXZpY2VFdmVudER0by5mcm9tSlMoZGV2aWNlRXZlbnREYXRhKTtcblxuICAgIC8vIGJhY2t3YXJkcyAtIGZyb20gOS4zLjIgdGhlIG1hcHBpbmcgZnJvbSBEZXZpY2VFdmVudENvcmUgdG8gRGV2aWNlRXZlbnREdG8gd2lsbCBiZSBpbiB0aGUgY2xpZW50XG4gICAgaWYgKGRldmljZUV2ZW50RGF0YS5wYXJrZXJUaWNrZXRUeXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRldmljZUV2ZW50RHRvLnBhcmtlclRpY2tldFR5cGUgPSB0aGlzLmdldERldmljZUV2ZW50UGFya2VyVGlja2V0VHlwZShkZXZpY2VFdmVudERhdGEpO1xuICAgICAgZGV2aWNlRXZlbnREdG8udGlja2V0TnVtID0gdGhpcy5HZXRUaWNrZXROdW0oZGV2aWNlRXZlbnREdG8ucGFya2VyVGlja2V0VHlwZSwgZGV2aWNlRXZlbnREdG8udmFsdWUxKTtcbiAgICB9XG4gICAgaWYgKGRldmljZUV2ZW50RHRvLmV2ZW50VHlwZT8ubW9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZXZpY2VFdmVudER0by5ldmVudFR5cGUubW9kZSA9IGRldmljZUV2ZW50RGF0YS5ldmVudFR5cGUuZXZlbnRUeXBlO1xuICAgICAgZGV2aWNlRXZlbnREdG8uZXZlbnRUeXBlLnZhbHVlMV9EZXNjcmlwdGlvbiA9IGRldmljZUV2ZW50RGF0YS5ldmVudFR5cGUudmFsdWUxX0RpcztcbiAgICAgIGRldmljZUV2ZW50RHRvLmV2ZW50VHlwZS52YWx1ZTJfRGVzY3JpcHRpb24gPSBkZXZpY2VFdmVudERhdGEuZXZlbnRUeXBlLnZhbHVlMl9EaXM7XG4gICAgICBkZXZpY2VFdmVudER0by5ldmVudFR5cGUudmFsdWUzX0Rlc2NyaXB0aW9uID0gZGV2aWNlRXZlbnREYXRhLmV2ZW50VHlwZS52YWx1ZTNfRGlzO1xuICAgICAgZGV2aWNlRXZlbnREdG8uZXZlbnRUeXBlLnZhbHVlNF9EZXNjcmlwdGlvbiA9IGRldmljZUV2ZW50RGF0YS5ldmVudFR5cGUudmFsdWU0X0RpcztcbiAgICB9XG5cbiAgICByZXR1cm4gZGV2aWNlRXZlbnREdG87XG4gIH1cblxuICBwcml2YXRlIGdldERldmljZUV2ZW50UGFya2VyVGlja2V0VHlwZShkZXZpY2VFdmVudERhdGE6IGFueSk6IFBhcmtlclRpY2tldFR5cGUge1xuICAgIGxldCBwYXJrZXJUaWNrZXRUeXBlOiBQYXJrZXJUaWNrZXRUeXBlO1xuICAgIHN3aXRjaCAoZGV2aWNlRXZlbnREYXRhLmV2ZW50SUQpIHtcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5DYW5jZWxsZWRUaWNrZXRQYXltZW50UHJvY2VzczpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5OZXdFbnRyeVRpY2tldDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5UaWNrZXRQYXltZW50Q2FsY3VsYXRpb246XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuVGlja2V0V2l0aE5vUGF5bWVudDpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5DaGFyZ2VTZW50RnJvbVNlcnZlcjpcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5DYXNoYmFja1dhc1ByaW50ZWQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuTFBSTWlzbWF0Y2g6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuQWNjZXB0RW50cnlUaWNrZXQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuRGVueUVudHJ5VGlja2V0OlxuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LkRlbnlFbnRyeVRpY2tldEVycm9yOlxuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LkNhckxlZnRMb29wVGlja2V0UmVqZWN0ZWQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuVGlja2V0RGV0YWlsc0NoYW5nZTpcbiAgICAgICAgcGFya2VyVGlja2V0VHlwZSA9IFBhcmtlclRpY2tldFR5cGUuVHJhbnNpZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZUNhc3REZXZpY2VFdmVudC5DcmVkaXRUcmFuc2FjdGlvbkFjY2VwdGVkOlxuICAgICAgY2FzZSBUeXBlQ2FzdERldmljZUV2ZW50LkNyZWRpdFRyYW5zYWN0aW9uUmVqZWN0ZWQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuQ3JlZGl0UHJvY2Vzc1RpbWVvdXQ6XG4gICAgICBjYXNlIFR5cGVDYXN0RGV2aWNlRXZlbnQuU3RpY2tlcnM6XG4gICAgICAgIHBhcmtlclRpY2tldFR5cGUgPSBQYXJrZXJUaWNrZXRUeXBlLlBheW1lbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcGFya2VyVGlja2V0VHlwZSA9IFBhcmtlclRpY2tldFR5cGUuVW5rbm93bjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmtlclRpY2tldFR5cGU7XG4gIH1cblxuICBwcml2YXRlIEdldFRpY2tldE51bSA9IChwYXJrZXJUaWNrZXRUeXBlOiBQYXJrZXJUaWNrZXRUeXBlLCB2YWx1ZTogbnVtYmVyKTogbnVtYmVyID0+IHBhcmtlclRpY2tldFR5cGUgIT0gUGFya2VyVGlja2V0VHlwZS5Vbmtub3duID8gdmFsdWUgOiBudWxsO1xuXG4gIHByaXZhdGUgcG9wdWxhdGVFdmVudEFjdGl2aXR5KGV2ZW50QWN0aXZpdHlEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBldmVudEFjdGl2dHlEdG8gPSBFdmVudEFjdGl2aXR5RHRvLmZyb21KUyhldmVudEFjdGl2aXR5RGF0YSk7XG4gICAgLy8gYmFja3dhcmRzIC0gZnJvbSA5LjMuMiB0aGUgbWFwcGluZyBmcm9tIEV2ZW50QWN0aXZpdHlDb3JlIHRvIEV2ZW50QWN0aXZpdHlEdG8gd2lsbCBiZSBpbiB0aGUgY2xpZW50XG4gICAgaWYgKGV2ZW50QWN0aXZpdHlEYXRhLnBhcmtlclRpY2tldFR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXZlbnRBY3RpdnR5RHRvLmRlc2NyaXB0aW9uID0gZXZlbnRBY3Rpdml0eURhdGEuZGlzO1xuICAgICAgZXZlbnRBY3RpdnR5RHRvLmRhdGUgPSBldmVudEFjdGl2aXR5RGF0YS5uRGF0ZTtcbiAgICAgIGV2ZW50QWN0aXZ0eUR0by50aW1lID0gZXZlbnRBY3Rpdml0eURhdGEublRpbWU7XG4gICAgICBldmVudEFjdGl2dHlEdG8uZGF0ZVRpbWUgPSBldmVudEFjdGl2aXR5RGF0YS5uRGF0ZVRpbWU7XG4gICAgICBldmVudEFjdGl2dHlEdG8ucGFya2VyVGlja2V0VHlwZSA9IHRoaXMuZ2V0RXZlbnRBY3Rpdml0eVBhcmtlclRpY2tldFR5cGUoZXZlbnRBY3Rpdml0eURhdGEpO1xuICAgICAgZXZlbnRBY3RpdnR5RHRvLnRpY2tldElkID0gdGhpcy5HZXRUaWNrZXROdW0oZXZlbnRBY3RpdnR5RHRvLnBhcmtlclRpY2tldFR5cGUsIGV2ZW50QWN0aXZpdHlEYXRhLnJvd0l0ZW1EYXRhKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXZlbnRBY3RpdnR5RHRvO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudEFjdGl2aXR5UGFya2VyVGlja2V0VHlwZShldmVudEFjdGl2aXR5RGF0YTogYW55KTogUGFya2VyVGlja2V0VHlwZSB7XG4gICAgbGV0IHBhcmtlclRpY2tldFR5cGU6IFBhcmtlclRpY2tldFR5cGU7XG4gICAgc3dpdGNoIChldmVudEFjdGl2aXR5RGF0YS5pbWdDZWxsVGFnKSB7XG4gICAgICBjYXNlIFR5cGVDYXN0RXZlbnRBY3Rpdml0eS5DcmVkaXRDYXJkTm90RW5hYmxlZDpcbiAgICAgIGNhc2UgVHlwZUNhc3RFdmVudEFjdGl2aXR5LkNyZWRpdENhcmRFcnJvcjpcbiAgICAgICAgcGFya2VyVGlja2V0VHlwZSA9IFBhcmtlclRpY2tldFR5cGUuQ3JlZGl0Q2FyZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFR5cGVDYXN0RXZlbnRBY3Rpdml0eS5UcmFuc2llbnRPcGVuVGlja2V0OlxuICAgICAgY2FzZSBUeXBlQ2FzdEV2ZW50QWN0aXZpdHkuVHJhbnNpZW50Q2xvc2VUaWNrZXQ6XG4gICAgICAgIHBhcmtlclRpY2tldFR5cGUgPSBQYXJrZXJUaWNrZXRUeXBlLlRyYW5zaWVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFR5cGVDYXN0RXZlbnRBY3Rpdml0eS5Nb250aGx5OlxuICAgICAgICBwYXJrZXJUaWNrZXRUeXBlID0gUGFya2VyVGlja2V0VHlwZS5Nb250aGx5O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZUNhc3RFdmVudEFjdGl2aXR5LlBheW1lbnQ6XG4gICAgICAgIHBhcmtlclRpY2tldFR5cGUgPSBQYXJrZXJUaWNrZXRUeXBlLlBheW1lbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUeXBlQ2FzdEV2ZW50QWN0aXZpdHkuR3Vlc3Q6XG4gICAgICAgIHBhcmtlclRpY2tldFR5cGUgPSBQYXJrZXJUaWNrZXRUeXBlLkd1ZXN0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZUNhc3RFdmVudEFjdGl2aXR5LkVWb3VjaGVyOlxuICAgICAgICBwYXJrZXJUaWNrZXRUeXBlID0gUGFya2VyVGlja2V0VHlwZS5FVm91Y2hlcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBwYXJrZXJUaWNrZXRUeXBlID0gUGFya2VyVGlja2V0VHlwZS5Vbmtub3duO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcGFya2VyVGlja2V0VHlwZTtcbiAgfVxufVxuIl19
|
|
@@ -117137,6 +117137,7 @@ const VERSION_25_4_0 = '25.4.0';
|
|
|
117137
117137
|
const VERSION_25_4_1 = '25.4.1';
|
|
117138
117138
|
const VERSION_26_1_0 = '26.1.0';
|
|
117139
117139
|
const VERSION_26_1_1 = '26.1.1';
|
|
117140
|
+
const VERSION_26_1_2 = '26.1.2';
|
|
117140
117141
|
const VERSION_26_2_0 = '26.2.0';
|
|
117141
117142
|
|
|
117142
117143
|
const SUPPORTED_DEVICES_SCHEDULER = [
|
|
@@ -118447,7 +118448,7 @@ let FacilityState = class FacilityState {
|
|
|
118447
118448
|
if (isSuperPark) {
|
|
118448
118449
|
const allGuidFacilities$ = this.facilityServiceProxy.getFacilities(guid, parkId);
|
|
118449
118450
|
return allGuidFacilities$.pipe(tap$1(facilitiesMap => {
|
|
118450
|
-
const facility = facilitiesMap.data[guid].find(f => f.id
|
|
118451
|
+
const facility = facilitiesMap.data[guid].find(f => f.id === parkId);
|
|
118451
118452
|
this.updateFacilities(ctx, guid, parkId, appModule, facility, facilitiesMap.data);
|
|
118452
118453
|
}));
|
|
118453
118454
|
}
|
|
@@ -118796,8 +118797,13 @@ let FacilityState = class FacilityState {
|
|
|
118796
118797
|
facility.permissions = facilityDictionary[guid][facility.id].permissions;
|
|
118797
118798
|
facilityDictionary[guid][parkId] = this.updateFacilityConnectivityFlags(facilityDictionary[guid][parkId], facility);
|
|
118798
118799
|
}
|
|
118799
|
-
|
|
118800
|
-
|
|
118800
|
+
// Guard: a super-park facilities map may not contain the requested parkId
|
|
118801
|
+
// (or the response may be empty). Skip the time-diff calc rather than
|
|
118802
|
+
// dereferencing an undefined facility (SPRK3 / JAVASCRIPT-ANGULAR-2W crash).
|
|
118803
|
+
if (facility) {
|
|
118804
|
+
clientServerDiffDictionary[guid] = this.getClientServerTimeDiff(facility, nowMoment);
|
|
118805
|
+
this.patchDiffDictinaryToStore(ctx, clientServerDiffDictionary);
|
|
118806
|
+
}
|
|
118801
118807
|
this.patchFacilitiesToStore(ctx, facilityDictionary, facilityDictionary[guid][parkId], appModule);
|
|
118802
118808
|
}
|
|
118803
118809
|
updateFacilityConnectivityFlags(storedFacility, incomingFacility) {
|
|
@@ -119507,6 +119513,12 @@ class ClearLprTransactionsExpanded {
|
|
|
119507
119513
|
constructor() {
|
|
119508
119514
|
}
|
|
119509
119515
|
}
|
|
119516
|
+
class SelectLprTransactionsRowAction {
|
|
119517
|
+
static { this.type = '[park-manager] SelectLprTransactionsRow'; }
|
|
119518
|
+
constructor(value) {
|
|
119519
|
+
this.value = value;
|
|
119520
|
+
}
|
|
119521
|
+
}
|
|
119510
119522
|
class SelectedRowAction {
|
|
119511
119523
|
static { this.type = '[park-manager] SelectedRow'; }
|
|
119512
119524
|
constructor(payload) {
|
|
@@ -119657,6 +119669,9 @@ let ParkManagerState = class ParkManagerState {
|
|
|
119657
119669
|
static selectedRow(state) {
|
|
119658
119670
|
return state.selectedRow;
|
|
119659
119671
|
}
|
|
119672
|
+
static selectedLprTransactionsRow(state) {
|
|
119673
|
+
return state.selectedLprTransactionsRow;
|
|
119674
|
+
}
|
|
119660
119675
|
onSetDeviceViewModeAction(ctx, action) {
|
|
119661
119676
|
ctx.patchState({
|
|
119662
119677
|
devicesViewMode: action.viewMode,
|
|
@@ -119803,6 +119818,7 @@ let ParkManagerState = class ParkManagerState {
|
|
|
119803
119818
|
lprTransactionsExpanded: [],
|
|
119804
119819
|
selectedDeviceStatus: null,
|
|
119805
119820
|
selectedDeviceParkId: null,
|
|
119821
|
+
selectedLprTransactionsRow: null,
|
|
119806
119822
|
});
|
|
119807
119823
|
// wait for devices store to be loaded before loading a device
|
|
119808
119824
|
return this.store.select(ParkManagerState_1.devices)
|
|
@@ -119820,6 +119836,7 @@ let ParkManagerState = class ParkManagerState {
|
|
|
119820
119836
|
lprTransactions: null,
|
|
119821
119837
|
deviceEvents: null,
|
|
119822
119838
|
deviceRemoteCommands: null,
|
|
119839
|
+
selectedLprTransactionsRow: null,
|
|
119823
119840
|
});
|
|
119824
119841
|
}
|
|
119825
119842
|
onDeviceStatusChangedAction(ctx, action) {
|
|
@@ -119883,6 +119900,11 @@ let ParkManagerState = class ParkManagerState {
|
|
|
119883
119900
|
},
|
|
119884
119901
|
});
|
|
119885
119902
|
}
|
|
119903
|
+
onSelectLprTransactionsRowAction(ctx, action) {
|
|
119904
|
+
ctx.patchState({
|
|
119905
|
+
selectedLprTransactionsRow: action.value
|
|
119906
|
+
});
|
|
119907
|
+
}
|
|
119886
119908
|
patchDevices(ctx, devices) {
|
|
119887
119909
|
devices?.forEach(device => device.deviceStatus = device.deviceStatus ?? getDefaultDeviceStatus(device));
|
|
119888
119910
|
ctx.patchState({
|
|
@@ -120086,6 +120108,9 @@ __decorate([
|
|
|
120086
120108
|
__decorate([
|
|
120087
120109
|
Action(SelectedRowAction)
|
|
120088
120110
|
], ParkManagerState.prototype, "onSelectedRowAction", null);
|
|
120111
|
+
__decorate([
|
|
120112
|
+
Action(SelectLprTransactionsRowAction)
|
|
120113
|
+
], ParkManagerState.prototype, "onSelectLprTransactionsRowAction", null);
|
|
120089
120114
|
__decorate([
|
|
120090
120115
|
Action(ClearSelectedRow)
|
|
120091
120116
|
], ParkManagerState.prototype, "onClearSelectedRow", null);
|
|
@@ -120149,6 +120174,9 @@ __decorate([
|
|
|
120149
120174
|
__decorate([
|
|
120150
120175
|
Selector()
|
|
120151
120176
|
], ParkManagerState, "selectedRow", null);
|
|
120177
|
+
__decorate([
|
|
120178
|
+
Selector()
|
|
120179
|
+
], ParkManagerState, "selectedLprTransactionsRow", null);
|
|
120152
120180
|
ParkManagerState = ParkManagerState_1 = __decorate([
|
|
120153
120181
|
State({
|
|
120154
120182
|
name: 'parkManager',
|
|
@@ -120172,12 +120200,13 @@ ParkManagerState = ParkManagerState_1 = __decorate([
|
|
|
120172
120200
|
eventActivitiesExpanded: [],
|
|
120173
120201
|
lprTransactionsExpanded: [],
|
|
120174
120202
|
selectedRow: null,
|
|
120203
|
+
selectedLprTransactionsRow: null,
|
|
120175
120204
|
},
|
|
120176
120205
|
})
|
|
120177
120206
|
], ParkManagerState);
|
|
120178
120207
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ParkManagerState, decorators: [{
|
|
120179
120208
|
type: Injectable
|
|
120180
|
-
}], ctorParameters: () => [{ type: DeviceRpcServiceProxy }, { type: FacilityRpcServiceProxy }, { type: i1$2.Store }], propDecorators: { onSetDeviceViewModeAction: [], onLoadDeviceEventsCollapse: [], onSetDeviceEventsExpanded: [], onLoadEventActivitiesCollapse: [], onSetEventActivitiesExpanded: [], onLoadLprTransactionsCollapse: [], onSetLprTransactionsExpanded: [], onClearDeviceEventsExpanded: [], onClearEventActivitiesExpanded: [], onClearLprTransactionsExpanded: [], onLoadDevicesAction: [], onLoadDevicesByTypeAction: [], onClearDevicesAction: [], onSelectDeviceAction: [], onLoadSelectedDeviceAction: [], onLoadDeviceStatusAction: [], onSetDeviceStatusAction: [], onLoadDeviceEventActivitiesAction: [], onLoadDeviceLprTransactionsAction: [], onLoadDeviceEventsAction: [], onLoadDeviceAction: [], onClearDeviceAction: [], onDeviceStatusChangedAction: [], onDeviceEventChangedAction: [], onDeviceActivityChangedAction: [], onLprTransactionsChangedAction: [], onSelectedRowAction: [], onClearSelectedRow: [] } });
|
|
120209
|
+
}], ctorParameters: () => [{ type: DeviceRpcServiceProxy }, { type: FacilityRpcServiceProxy }, { type: i1$2.Store }], propDecorators: { onSetDeviceViewModeAction: [], onLoadDeviceEventsCollapse: [], onSetDeviceEventsExpanded: [], onLoadEventActivitiesCollapse: [], onSetEventActivitiesExpanded: [], onLoadLprTransactionsCollapse: [], onSetLprTransactionsExpanded: [], onClearDeviceEventsExpanded: [], onClearEventActivitiesExpanded: [], onClearLprTransactionsExpanded: [], onLoadDevicesAction: [], onLoadDevicesByTypeAction: [], onClearDevicesAction: [], onSelectDeviceAction: [], onLoadSelectedDeviceAction: [], onLoadDeviceStatusAction: [], onSetDeviceStatusAction: [], onLoadDeviceEventActivitiesAction: [], onLoadDeviceLprTransactionsAction: [], onLoadDeviceEventsAction: [], onLoadDeviceAction: [], onClearDeviceAction: [], onDeviceStatusChangedAction: [], onDeviceEventChangedAction: [], onDeviceActivityChangedAction: [], onLprTransactionsChangedAction: [], onSelectedRowAction: [], onSelectLprTransactionsRowAction: [], onClearSelectedRow: [] } });
|
|
120181
120210
|
|
|
120182
120211
|
function isDeviceActive(device) {
|
|
120183
120212
|
return device && device.hasOwnProperty('active') && device.active !== undefined ? device.active : true;
|
|
@@ -127828,7 +127857,13 @@ let LoginState = class LoginState {
|
|
|
127828
127857
|
this.sessionStorageService.setItem(RESET_PASSWORD_EMAIL, JSON.stringify(email));
|
|
127829
127858
|
this.store.dispatch(new Navigate(url));
|
|
127830
127859
|
this.messageBarService.success(Localization.forgot_password_email_sent_msg, this.messageOptions);
|
|
127831
|
-
|
|
127860
|
+
// Pre-authentication the tenant id is unknown: TenantDetailsDto carries no id, so the tenant
|
|
127861
|
+
// resolver leaves tenantInfo.id null. Passing null to forgotPassword throws synchronously
|
|
127862
|
+
// ("The parameter 'tenantId' cannot be null."). Fall back to the tenantless endpoint, which
|
|
127863
|
+
// resolves the tenant server-side from the email address.
|
|
127864
|
+
return tenantId != null
|
|
127865
|
+
? this.usersCloudServiceProxy.forgotPassword(email, tenantId)
|
|
127866
|
+
: this.usersCloudServiceProxy.forgotPasswordTenantless(email);
|
|
127832
127867
|
}
|
|
127833
127868
|
onForgotPasswordTenantless(ctx, { email }) {
|
|
127834
127869
|
this.messageBarService.success(Localization.forgot_password_email_sent_msg, this.messageOptions);
|
|
@@ -133135,5 +133170,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
133135
133170
|
* Generated bundle index. Do not edit.
|
|
133136
133171
|
*/
|
|
133137
133172
|
|
|
133138
|
-
export { ACCESS_PROFILE_DAT_TYPES_SP, ACTIVE_BYTE, ADVANCED_OPTIONS_VALUE, ADVANCED_PERMISSION_DEPENDENCIES, AES_DEFAULT_IV, ALERT_NOTIFICATION_CONTAINER, ALLOWED_FILES_FORMATS, ALLOWED_FILES_MAX_SIZE_1_MB, ALLOWED_FILES_MAX_SIZE_200_KB, ALLOWED_FILES_MAX_SIZE_2_MB, ALLOWED_FILES_MAX_SIZE_MB, ALLOWED_NUMBER_OF_DAYS, ALLOWED_UPLOAD_FILES_QUANTITY, ALL_DAYS_IN_BINARY, ALL_DAYS_IN_BYTE, AccessProfileChangeValidTypesText, AccessProfileDayTypesText, AccessProfileRestrictionTypesText, AccessProfileShortDayTypesText, AccessProfileSpecialDaysMap, AccessProfileTypesText, AccountFrameMessageBarComponent, AccountLinkedEntitiesText, AccountLinkedEntityText, AccountSetPasswordAction, AccountSetPasswordErrorAction, AccountSetPasswordInitAction, ActionStatusService, AddSmartparkAction, AddUserAction, AdministrativeNotificationEntityType, AdministrativeNotificationsModule, AdministrativeNotificationsState, AggregatedStatusText, AlertChangedAction, AlertNotificationBorderClass, AlertNotificationClassificationMap, AlertNotificationComponent, AlertNotificationService, AlertsAndNotificationsService, AlertsAndNotificationsState, AlertsDeviceTypeLabel, AlertsDeviceTypeOptions, AlertsDeviceTypeOptionsMapping, AmountStepSurchargeMinLimit, AnalyticsCommandsText, AnalyticsEventsText, AnalyticsService, AnalyticsSourceComponent, AnalyticsSourceProps, AppConfigService, AppModuleService, AppModuleToMainPermissionTypeMap, AppSectionLabel, AppSectionModuleMenuOrder, AppSectionRoute, AppSettingsService, AppType, AuditActionTypeText, AuditLogoutAction, AuthModule, AuthRouteGuard, AuthService, AuthTokenService, Authenticate2FAforUser, AuthenticateMultipleTenantsAction, AutofocusDirective, BC_DS_P_VALIDATION, BOM_UNICODE, BackOfficeParkerType, BackofficeAutheticateAction, BarcodeTypeLength, BarrireStateText, BaseComponent, BaseDeviceItemComponent, BaseDeviceService, BaseFacilityCommandsConfigService, BaseFacilityCommandsService, BaseNotificationService, BillDispenserStatusText, BillTypeText, BillValidatorStatusText, ButtonStatus, CANCEL_ALL_RELAY_VALUE, CLogItPipe, COLORS, CREDIT_CARD_POSTFIX_LENGTH, CalculatorModule, CalculatorState, CanDeactivateService, CarModule, CarState, CassetteStatusText, CentToCoinPipe, ChangeLanguageAction, ChangePasswordAction, ChartLayout, CleanLogoAction, ClearAdministrativeNotificationsAction, ClearAdministrativeNotificationsByEntityTypeAction, ClearAlertsAndNotificationsAction, ClearBaseZonesAction, ClearCalculatorPriceAction, ClearCategoriesAction, ClearColorsAction, ClearConflictDetected, ClearDeviceAction, ClearDeviceEventsExpanded, ClearDevicesAction, ClearEventActivitiesExpanded, ClearFacilityDictionaryAction, ClearGroupsAction, ClearGuestAction, ClearGuestProfilesAction, ClearGuestsListAction, ClearHandledGuest, ClearInactiveSelectedParkAction, ClearJobTitlesAction, ClearLocateTicketSearchAction, ClearLocatedTicketAction, ClearLprTransactionsExpanded, ClearMacroCommandsAction, ClearModelsAction, ClearParkerAction, ClearRateAction, ClearSearchResultsAction, ClearSearchTermAction, ClearSearchTicketAction, ClearSelectedFacilityAction, ClearSelectedParkAction, ClearSelectedRow, ClearSelectedSmartparkAction, ClearSmartparksBasicAction, ClearSpAndSparkVersionsAction, ClearSpecialTransientTablesAction, ClearSuspendedParkActivitiesAction, ClearUserSettingsByCategoryAction, ClearUsersAction, ClearValidationTypesAction, ClearZoneAction, ClearZonesAction, ClearZsAction, cloudServiceProxies as Cloud, CloudConfirmDialogComponent, CofCredentialSubTypeText, CoinStatusText, CollapsedGuestsByBatchIdAction, ComAggregatedStatus, ComAggregatedStatusText, ComStatusIconComponent, CommandCenterModuleResolver, CommandNotificationBorderClass, CommandNotificationComponent, CommandNotificationDisplayCase, CommandNotificationService, CommandNotificationType, CommandsLocalizationKey, CommonPagesModule, CompanyService, ConfigResolver, ConnectSmartparkAction, ContainerRefDirective, CoreEntities, CouponSearchFieldSelectorText, CreateBasicBatchAction, CreateBasicGuestAction, CreateBatchAction, CreateColorAction, CreateGuestAction, CreateModelAction, CreateOrUpdateSMTPDetailsAction, CredentialTypeText, CreditCardTypeText, CrudOperationText, CurlyToBoldPipe, DATA_IMAGE_BASE64_PREFIX, DATE_TIME_ERROR_INVALID_DATE, DATE_TIME_ERROR_INVALID_DATE_RANGE, DATE_TIME_ERROR_REQUIRED, DEFAULT_DATE_FORMAT, DEFAULT_EXPIRATION_MONTHS_COUNT, DEFAULT_MINIMUM_LENGTH, DEFAULT_MODULE, DEFAULT_PASSWORD_HISTORY_COUNT, DEFAULT_PERMITTED_CREDENTIALS, DEFAULT_SMART_PARK_DATE_TIME, DEFAULT_SORT_MENU, DEFAULT_STICKER_NUM, DEVICE_EVENT_OPTIONS_KEY, DEVICE_NAVIGATE_KEY, DISABLED_FOCUS_ELEMENT_CLASSES, DISABLED_FOCUS_ELEMENT_TYPES, DYNAMIC_PRICING_CONDITION, DataQaAttribute, DateService, DateValidityText, DaysText, DecimalToAmountPipe, DecimalToCurrencyPipe, DefaultImageTimeout, DeleteGuestAction, DeleteLogoAction, DeleteUserAction, DetectBrowserService, DeviceActivityChangedAction, DeviceActivityLabel, DeviceActivityMode, DeviceActivityModeText, DeviceActivityStatus, DeviceActivityType, DeviceAggregatedStatus, DeviceAggregatedStatusText, DeviceEventChangedAction, DeviceIconComponent, DeviceIndicationStatus, DeviceLaneTypes, DeviceLoop, DeviceModule, DevicePipeModule, DevicePrinterStatusText, DeviceRemoteCommandsService, DeviceSortBy, DeviceStatusBaseComponent, DeviceStatusChangedAction, DeviceTypeIconName, DeviceTypeText, DeviceTypesAlertsMapping, DevicesViewMode, DialogMode, DipSwitchStatus, Disable2FAAction, DisableUserSSOAction, DisconnectSmartParkAction, DoorSensorStatus, DoorStatusText, DurationMessageBar, DynamicContainerComponent, DynamicEllipsisTooltipDirective, ENGLISH_LANGUAGE, ENVIRONMENT, EXPIRATION_MONTHS_COUNT_OPTIONS, edgeServiceProxies as Edge, EditUserAction, ElectronicWalletPaymentMethodTypesText, EllipsisMultilineDirective, EmailServerModule, EmailServerState, EmptyResultsComponent, Enable2FAAction, EnumsToArrayPipe, EnvironmentModeText, ErrorPageComponent, ErrorPageResolver, ErrorResultsComponent, ExceedingBehaviorTypeText, ExpandGuestsByBatchIdAction, ExportFileService, ExportGuestsAction, ExportPdfSmartparksTableAction, ExportSmartparkAction, FONT_BASE64, FacilityChangedAction, FacilityMenuService, FacilityModule, FacilityRemoteCommandExecutedAction, FacilityRemoteCommandTypesIcon, FacilityRemoteCommandsLocalizationKey, FacilityRemoteCommandsMenuItems, FacilityService, FacilityState, FieldLabelComponent, FieldValidationsComponent, FileGenerateMethod, FileSanitizerService, FileService, FilterByDeviceType, FilterDevicesByTypePipe, FilterDevicesByZonePipe, FilterKeysPipe, FilterNumbersPipe, FilterPipe, FlattenedCoreEntities, FloatMessageBarService, ForgotPasswordAction, ForgotPasswordTenantlessAction, FormValidationsComponent, FormattedInputDirective, FrequentParkingActionText, FrequentParkingErrorActionText, GATE_STATE_VALUE, GeneralActionService, GenerateSearchParamsDto, GenerateSlimSearchParamsDto, GetAllLocalizationsAction, GetLogoAction, GetRateByIdAction, GetSpecialTransientTablesAction, GetUserSettingsByCategoryAction, GlobalErrorService, GlobalMessageContainerComponent, GroupPermissionsPipe, GuestModule, GuestSearchFieldSelectorText, GuestState, GuestTypeCastText, GuestTypesText, HOUR_FORMAT_12, HOUR_FORMAT_24, HOUR_FORMAT_FULL_DAY, HandleAlertsAction, HandleNotificationAction, HandledNotificationAction, HasActionErrored, HealthAction, HoldRelayMode, HoldRelayModeText, HopperStatusText, HotelGuestSearchFieldSelectorText, HtmlSanitizerService, HttpCancelBlackListUrls, HttpCancelInterceptor, HttpCancelService, HumanizePipe, INPUT_SEARCH_DEBOUNCE_TIME, INPUT_SEARCH_DEBOUNCE_TIME_LOW, INPUT_SEARCH_DEBOUNCE_TIME_MEDIUM, IconColumnComponent, IconComponent, IconModule, IconsHelper, IconsHelperText, identityServiceProxies as Identity, ImportMonthyStastusFieldSelectorText, InitAddSmartparkConnectionAction, InitSMTPDetailsAction, InitSessionFromLocalStorageAction, InitSmartparkTransportAction, IntercomComponent, InternetConnectionService, InternetConnectionStatus, IsActionExecuting, IsEllipsisDirective, LOCAL_ENGLISH_LANGUAGE, LOCATION_OPTIONS, LOGGED_TENANT_KEY, LanguageTypeKeys, LayoutModule, LayoutState, Load2FAUserAction, LoadAccessProfileBaseZonesAction, LoadAccessProfileZoneAction, LoadAccessProfileZonesAction, LoadAccountManagementGuestGroupAction, LoadAccountManagementJobTitlesAction, LoadAdministrativeNotificationsAction, LoadAlertsAndNotificationsAction, LoadAppConfigurationAction, LoadBackofficeAppConfigurationAction, LoadBackofficeSmartparksTableAction, LoadBackofficeSpAndSparkVersionsAction, LoadBackofficeVarByIdAction, LoadBackofficeVarsAction, LoadCalculatorPriceAction, LoadCategoriesAction, LoadCcMainBaseZonesAction, LoadCcMainZonesAction, LoadColorsAction, LoadColorsAction1, LoadColorsAction2, LoadColorsAction3, LoadColorsAction4, LoadColorsAction5, LoadDeviceAction, LoadDeviceEventActivitiesAction, LoadDeviceEventsAction, LoadDeviceEventsCollapse, LoadDeviceLprTransactionsAction, LoadDeviceStatusAction, LoadDevicesAction, LoadDevicesByTypeAction, LoadDynamicPricingBaseZonesAction, LoadDynamicPricingZoneAction, LoadEventActivitiesCollapse, LoadFacilityAction, LoadFacilityRemoteCommandsRefAction, LoadGuestByIdAction, LoadGuestProfilesAction, LoadGuestsAction, LoadGuestsByBatchIdAction, LoadGuestsByBatchIdCancelledAction, LoadLocateTicketSearchAction, LoadLocatedTicketAction, LoadLprTransactionsCollapse, LoadMacroCommandsAction, LoadModelsAction, LoadModelsAction1, LoadModelsAction2, LoadModelsAction3, LoadModelsAction4, LoadModelsAction5, LoadOverflowPriceTableAction, LoadParkActivitiesAction, LoadParkDevicesAction, LoadParkerAction, LoadParkersAction, LoadParkingLotAction, LoadParksAction, LoadRateByIdAction, LoadRatesAction, LoadRemoteCommandsRefAction, LoadReportsBaseZonesAction, LoadReportsGuestGroupAction, LoadReportsJobTitlesAction, LoadReportsZoneAction, LoadReportsZonesAction, LoadSMTPDetailsAction, LoadSelectedDeviceAction, LoadSmartparksAction, LoadSmartparksBasicAction, LoadSmartparksDropdownAction, LoadSmartparksTableAction, LoadSpAndSparkVersionsAction, LoadStickerPriceTableAction, LoadTicketNumParkersAction, LoadTransientPriceTableAction, LoadUserCapabilitiesAction, LoadUsersAction, LoadUsersAdministrativeNotificationsAction, LoadValidationTypeAction, LoadVarsAction, LoadZsAction, LoadingOverlayComponent, LocalStorageMigrator, LocalStorageService, Localization, LocalizationModule, LocalizationResolver, LocalizationService, LocalizationState, LoginModule, LoginRequestAction, LoginService, LoginState, LoginSuccess, LogoComponent, LogoState, LogoutAction, LogoutMobileAction, LoopStatus, LowerCaseUrlSerializer, LprTransactionsChangedAction, LprTransactionsOptionsText, LprTransactionsSearchFieldSelectorText, MANUAL_ACTION_REASON_NAME_MAX_LENGTH, MAX_ALLOWED_BADGE_VALUE, MAX_ALLOWED_CURRENT_BALANCE, MAX_ALLOWED_DEDUCTION_VALUE, MAX_ALLOWED_GUEST_UNIT_QUANTITY, MAX_ALLOWED_IDENTIFIER_VALUE, MAX_ALLOWED_STARTING_PURSE_VALUE, MAX_CAPACITY_VALUE, MAX_CARDS, MAX_CAR_PLATES, MAX_EMAIL_CHARACTERS_LENGTH, MAX_EXPORT_RECORDS, MAX_HOTEL_ROOM_NUMBER_LENGTH, MAX_INT16_VALUE, MAX_INT32_VALUE, MAX_INTEGER_VALUE, MAX_LENGTH_BATCH_NAME, MAX_LENGTH_DESCRIPTION_50, MAX_LENGTH_DESCRIPTION_70, MAX_LENGTH_FOOTER, MAX_LENGTH_LEFT, MAX_LENGTH_LEFT_BACKWARD_COMPATIBILITY, MAX_LENGTH_MANUAL_TEXT, MAX_LENGTH_NAME_100, MAX_LENGTH_NAME_20, MAX_LENGTH_NAME_25, MAX_LENGTH_NAME_30, MAX_LENGTH_NAME_50, MAX_LENGTH_NOTES, MAX_LENGTH_QUANTITY, MAX_LENGTH_REASON_DESCRIPTION, MAX_LENGTH_SERACH_TERM, MAX_LENGTH_SERACH_TERM_30, MAX_MOBILE_LENGTH, MAX_NUMBER_OF_NIGHTS, MAX_NUMBER_OF_ROW_IN_MENU, MAX_OCCUPANCY_VALUE, MAX_PERIOD_TIME, MAX_PLATE_ID_LENGTH, MAX_PRICE_NO_TIME_LIMIT_VALUE, MAX_PRICE_PERIOD_VALUE, MAX_REPEAT_COUNT_VALUE, MAX_RESULTS, MAX_ROLE_NAME_LENGTH, MAX_SP, MAX_TIME_RANGE_ITEMS_PER_KEY, MC_READER_ID, MESSAGE_BAR_DEFAULT_ID, MINIMUM_DROPDOWN_RESULTS_WITHOUT_SEARCH, MINIMUM_LENGTH_OPTIONS, MINUTES_PER_HOUR, MIN_ALLOWED_GUEST_UNIT_QUANTITY, MIN_LENGTH_QUANTITY, MIN_NUMBER_OF_ROW_IN_MENU, MIN_TIME_RANGE_ITEMS_PER_KEY, MOBILE_REFRESH_INFO, MSALGuardConfigFactory, MSALInstanceFactory, MSALInterceptorConfigFactory, MSLAuthService, MULTIPLE, MainModuleToSubModulesPermissionTypeMap, MatHintErrorDirective, MaxAllowedSurchargeAmount, MaxAllowedSurchargeMaxLimit, MaxAllowedSurchargeMinLimit, MaxDisplayTimeout, MaxIPV4TextLength, MaxSurchargeNameLength, MenuAppModuleLoadAction, MenuClearAction, MenuLoadAction, MenuService, MenuSubModuleClearAction, MenuSubModuleLoadAction, MessageBarComponent, MessageBarContainerComponent, MessageBarModule, MessageBarPosition, MessageBarService, MessageBarStatus, MiddayPeriod, MinAllowedSurchargeAmount, MinAllowedSurchargeMaxLimit, MinAllowedSurchargeMinLimit, MinDisplayTimeout, MobileAppSectionLabel, MobileLogoutAction, ModalButtonsWrapperComponent, ModalService, ModuleGuard, ModuleMenuBaseComponent, MonthlyRenewalSettingsActionTypesText, MonthlyRenewalSettingsActionTypesValueText, MonthlySearchFieldSelectorText, MslEventType, NONE_ACTIVE_BYTE, NONE_USER_ID, NO_RESULT, NativeElementInjectorDirective, NotSupportedBrowserGuard, NotSupportedBrowserPageComponent, NotificationChangedAction, NotificationClass, NotificationClassficationType, NotificationCloseAllButtonComponent, NotificationConfig, NotificationEventService, NotificationHPositions, NotificationModule, NotificationSeverityText, NotificationTypeLabelComponent, NotificationTypeText, NotificationVPositions, NotificationsModule, ONE_DAY_IN_MINUTES_VALUE, ONE_MINUTE_IN_MILLISECONDS, ONE_SECOND_IN_MILLISECONDS, OffScreenDirective, OpenIdAuthInitializeService, OpenIdAuthService, OpenIdAutheticateAction, Operator, OrderBy, OrderByPipe, OrderDirection, OrphanFacilitiesPipe, PARKER_SEARCH_AUTO_REDIRECT, PASSWORD_EXPIRED, PASSWORD_HISTORY_COUNT_OPTIONS, PREVENT_CLICK_ELEMENT_CLASSES, ParkActivitiesModule, ParkActivitiesState, ParkActivityChangedAction, ParkConnectionStatus, ParkConnectionStatusClass, ParkConnectionStatusText, ParkManagerModule, ParkManagerState, ParkService, ParkTimeService, ParkerSearchTerm, ParkerService, ParkerState, ParkerTagsText, ParkerTypesText, PasswordScore, PasswordStrengthService, PaymentSearchFieldSelectorText, PaymentServiceTypeText, PaymentsTypesText, PermissionCacheService, PermissionConfigService, PermissionGroupText, PermissionTypeSupportedVersionDictionary, PermissionTypeText, PermissionsService, PrintReceiptAction, ProfileTypeText, QUERY_INTENT_PATTERNS, RATE_ID_WITH_VALUE_2, REDIRECT_URL, RELAY_2_VALUE, RELAY_3_VALUE, RELAY_4_VALUE, REPORT_CATEGORY_ALL, RESET_PASSWORD_EMAIL, RTL_LANGUAGES, RTObjectObject, RangeModes, RangeModesText, RateModule, RateState, RealtimeEventService, RealtimeResolver, ReceiptGeneratedAction, RefreshTokenService, RefreshTokenState, RelayStatus, ReloadParkerAction, RemoteCommandService, RemoteCommandTypesIcon, RemoteValidationModule, RemoteValidationState, RemoveExpiredAlertsAndNotificationsAction, ReportMethodDictionary, ResendPendingAdminInvitationsAction, ResendUserInvitationAction, ResetRatesAction, RestartLinkComponent, RestartLinkModule, RestrictionLocationTypeText, RestrictionLocationTypeTextTable, RestrictionTypeText, RevenueService, RouteService, RowOperation, rpcServiceProxies as Rpc, SESSION, STATUS_CODE_SERVER_VALIDATION, STATUS_CODE_UNAUTHORIZED, STRING_ZERO, SUPER_PARK_ROUTE_KEY, SUPPORETD_RESTORE_TICKET_TYPES, SUPPORTED_CAR_ON_LOOP_DEVICE_TYPES, SUPPORTED_DEVICES_SCHEDULER, SUPPORTED_GATE_DEVICE_TYPES, SUPPORTED_LPR_TRANSACTIONS_DEVICE_TYPES, SUPPORTED_PAYMENT_FOR_ISF_TYPES, SUPPORTED_RESTORE_TICKET_DEVICE_TYPES, SUPPORTED_STATUS_DEVICE_TYPES, SUPPORTED_TICKET_INSIDE_DEVICE_TYPES, SYSTEM_ALERT_VALUE, SanitizedInnerHtmlDirective, SearchFacilitiesMode, SearchFieldSelectorText, SearchTicketAction, SearchValueHighlightComponent, SecurityModule, SecurityState, SelectDeviceAction, SelectParkAction, SelectSmartParkAction, SelectedRowAction, SendEmailFromEntityAction, SendEmailToGuestAction, SendGuestPassesToEmailAction, SendTestEmailAction, ServiceProxyModule, ServicesRunningStatusChangedAction, SessionState, SessionStorageService, SetBackofficeSmartParkVersionsAction, SetBasicMenuAction, SetConflictDetected, SetDeviceEventsExpanded, SetDeviceRemoteCommandsMapAction, SetDeviceStatusAction, SetDeviceViewModeAction, SetEventActivitiesExpanded, SetFacilityRemoteCommandsMapAction, SetGuestsAction, SetLprTransactionsExpanded, SetMobileModeAction, SetParkActivitiesAction, SetRealTimeEventStatusAction, SetSearchTermAction, SetSelectedParkAction, SetSmartParkAction, SetSmartParkTableAction, SetSmartParkVersionsAction, SetSmartparkBasicAction, SetSmartparkBasicAllAction, SetStateAction, SetTFASetupAction, SetTenantUserAction, SetTicketIdentifierAction, SetUserNameAction, SetUserStatusAction, SetUsersAction, SetkeepMeLoggedInAction, SharedComponentsModule, SharedDirectivesModule, SharedModule, SharedPipesModule, SideNavSortBy, SidenavModule, SidenavState, SignalR, SignalRObject, SignalRRefreshTokenAction, SingleSignOnProviderText, SmartParkDeviceStatusChangedAction, SmartParkStatusText, SmartparkDateTimePipe, SmartparkDialogState, SmartparkModule, SmartparkService, SmartparkState, SortDevicesPipe, SortPipe, SparkKeyboardEvent, SparkNotification, SpecialDaysPipe, SpinnerDiameterSize, StaticMessageBarService, StatusIconComponent, StickerSearchFieldSelectorText, StopPropagationDirective, StringItPipe, SubModuleGuard, SubstrHightlightManyPipe, SubstrHightlightPipe, SubstrHightlightSinglePipe, SwallowUnitStatusText, SwitchUserToSSOAction, SyncUsersAndRolesBySmartparkIdAction, TAKE_TOP_300, TBFormatPipe, TBNumberDirective, TENANT_KEY, TENS_MULTIPLIER, TableColumnGroup, TableColumnGroupLabel, TableRowHeightSizes, TableTypeText, TagLabelType, TenantClearAction, TenantLoadAction, TenantLogoModule, TenantService, TenantlessLoginMode, TibaDateFormat, TibaMatDialogConfig, TibaRetryPolicy, TibaValidators, TicketService, TimeAgoPipe, TimeElapsedCounterComponent, TimeElapsedFormats, TimeElapsedPipe, TimeRangeFormats, TimeRangePipe, ToggleDrawerAction, ToggleDrawerCollapseAction, TooltipPositions, TrackAction, TransientParkingActionText, TranslateLocalPipe, TreeFilterKeysPipe, TreeMode, TypeCastText, UNSAVED_DATA, USER_IS_TEMPORARY_BLOCKED, UnloadParkingLotAction, UnsafeHtmlValidatorDirective, UpdateAndActivateUserAction, UpdateAuthTokenAction, UpdateBasicGuestAction, UpdateDocumentAction, UpdateGuestAction, UpdateGuestLocationAction, UpdateMobileMode, UpdateSmartparkAction, UpdateSmartparkVarAction, UpdateTenantInfoProps, UpdateTenantSingleSignOnAction, UpdateTicketPlateIdAction, UpdateUserAlertsPreferencesAction, UpdateUserNotificaitonsPreferencesAction, UpdateUserSettingsAction, UpdateUserSettingsInSessionAction, UploadLogoAction, UserCreationType, UserModule, UserSettingsModule, UserSettingsState, UserState, VALIDATION_TYPE_BY_HOURS_41, VALIDATION_TYPE_BY_HOURS_42, VALID_DATETIME_FILTERS, VALID_TIME_MAX_LENGTH, VALID_ZIP_CODE_LENGTH, VERSION_10_1_0, VERSION_10_2_0, VERSION_10_2_1, VERSION_10_3_0, VERSION_10_3_9, VERSION_10_4_0, VERSION_25_1_0, VERSION_25_2_0, VERSION_25_2_1, VERSION_25_3_0, VERSION_25_3_1, VERSION_25_3_6, VERSION_25_4_0, VERSION_25_4_1, VERSION_26_1_0, VERSION_26_1_1, VERSION_26_2_0, VERSION_7_4_0, VERSION_7_4_1, VERSION_8_1_0, VERSION_8_2_0, VERSION_8_3_0, VERSION_8_4_0, VERSION_9_1_0, VERSION_9_2_0, VERSION_9_2_2, VERSION_9_3_0, VERSION_9_4_0, VGuestWithBatchTableData, VIRTUAL_DEVICE_LPR_COMPACT_LAYOUT_MEDIA_QUERY, ValidateUserTokenAction, ValidationService, ValidationStickerType, ValidationTypeModule, ValidationTypeState, VarDirective, Verify2FactorAuthenticationAction, VirtualValidationStatusText, WrapFnPipe, YEAR_LIMIT_IN_DAYS, ZerofyNegativePipe, ZoneChangedAction, ZoneModule, ZoneState, accountModuleAnimation, adjustForTimezone, allowSpecialKeys, alphanumericRegex, appModuleAnimation, areDatesIdentical, areVersionsCompatible, arrayEquals, arraysAreDifferent, baseReduce, blobToBase64, buildMessageInfos, buildMessages, camelize, canceled, capitalizeFirstLetter, compareValues, convert24HoursToAmPM, convertAmPmTo24Hours, convertBinaryToDecimal, convertCentToWholeCoin, convertDecimalToBinary, convertFeaturePermissionsToDictionary, convertFormatWithoutTime, convertWholeCoinToCent, createDescriptor, createMessageText, dateDiffInSeconds, days, daysTranslation, decimalNumberRegex, decimalPercentageRegex, decimalPositiveNumberRegex, decryptClientSecret, delayCancellation, deviceIndicationStatusLocalization, deviceTypeFilterOptions, diffInMillis, dispatched, distinctObjectByProperties, distinctObjectByProperty, downloadFile, ensureObjectMetadata, entryDevicesLaneTypes, errored, exitDevicesLaneTypes, extractErrorsChanges, extractNumber, extractResetChanges, extractSetValueChanges, extractToggleStatusChanges, extractTouchedChanges, extractUpdateValueAndValidityChanges, filterDependentPermissions, filterDevicesByTypes, filterKeyValueBaseReduce, findChildRoute, findObjectDifferences, findParentElement, findParentElementDimensions, findParentRoute, findParentRouteConfig, flattenByKey, formatMinutesToTimeNumber, formatTimeToMinutes, formatTimeToString, formatTimeWithMidnight, formatTimeWithSeparator, formatTimeWithoutMidnight, formatTimeWithoutSeparator, formatTimeWithoutSeperatorAndWithMidnight, formatTimeWithoutSeperatorAndWithoutMidnight, getActivatedRoutePathSegment, getAddress, getCurrentLang, getDateTimeInSeconds, getDateWithoutTime, getDaysFromValue, getDefaultDeviceStatus, getFormattedTime, getMomenWithTime, getMomentNullable, getMomentWithoutTime, getNavigationRoute, getObjectMetadata, getParkerTypesText, getPasswordMinimalLength, getSecondsBackoff, getTooltipTextByParkerType, getUserTimeZone, getUtcMomentNullable, hasMiddayPeriod, hasMonthName, hasRequiredField, hasUnsafeHtmlValue, hasValue, humanizeTimeElapsed, humanizeUtcTimeElapsed, identity, initializeMsal, initializeOpenId, integerNumberRegex, integerPositiveNumberRegex, ipv4Regex, isBoolean, isCharacterLengthValid, isDefinedAndNotEmpty, isDeviceActive, isDeviceInFilterDeviceTypes, isDeviceInFiltersDeviceTypes, isFalsy, isIOSDevice, isMaxDaysRangeValid, isNullOrEmpty, isNumber, isObjectEmpty, isQueryIntentRequest, isSearchFieldChanged, isSingularOrPlural, isTrueInBinary, isTruthy, isVersionGreaterThanEqual, loadHTMLContent, lowerCase, lowerCaseFirstLetter, mapTransientTags, markEntitiesAsChanged, markEntityAsUnchanged, matchesDeviceCriteria, matchesDeviceParkingLotCriteria, matchesDevicesParkingLotCriteria, minutesToTime, mobileRegex, nameof, navigateToForbiddenAccessPage, navigateToNotSupportedBrowserPage, noEmojiRegex, notificationAnimation, numberWithLeadingZero, objectKeystoLowerCase, ofStatus, omitKeys, openBackgroundIframe, openCloseFiltersAnimation, parentParkBaseEventTypes, parentParkEventTypes, parkBaseEventTypes, parkEventTypes, parkerEnumToText, parseApiErrorData, parseApiErrorMessage, parseDateTimeToSparkParkTime, parseSmartParkTime, passwordRegex, percentageRegex, printSpecialDaysText, printStackTrace, readjustForTimezone, regexExp, remoteCommandLocalizationMap, replaceAll, rtEventPermissions, safeParse, sanitizeHtmlValue, searchBarPopupAnimation, setDateTimeErrorMessage, setErrorMessage, shortDaysTranslation, sleep, slideFromBottom, slideFromRight, slideFromUp, slideUpDown, successful, timeToMinutes, timeToMoment, toInt, toNumberMap, toStringMap, wrapConstructor };
|
|
133173
|
+
export { ACCESS_PROFILE_DAT_TYPES_SP, ACTIVE_BYTE, ADVANCED_OPTIONS_VALUE, ADVANCED_PERMISSION_DEPENDENCIES, AES_DEFAULT_IV, ALERT_NOTIFICATION_CONTAINER, ALLOWED_FILES_FORMATS, ALLOWED_FILES_MAX_SIZE_1_MB, ALLOWED_FILES_MAX_SIZE_200_KB, ALLOWED_FILES_MAX_SIZE_2_MB, ALLOWED_FILES_MAX_SIZE_MB, ALLOWED_NUMBER_OF_DAYS, ALLOWED_UPLOAD_FILES_QUANTITY, ALL_DAYS_IN_BINARY, ALL_DAYS_IN_BYTE, AccessProfileChangeValidTypesText, AccessProfileDayTypesText, AccessProfileRestrictionTypesText, AccessProfileShortDayTypesText, AccessProfileSpecialDaysMap, AccessProfileTypesText, AccountFrameMessageBarComponent, AccountLinkedEntitiesText, AccountLinkedEntityText, AccountSetPasswordAction, AccountSetPasswordErrorAction, AccountSetPasswordInitAction, ActionStatusService, AddSmartparkAction, AddUserAction, AdministrativeNotificationEntityType, AdministrativeNotificationsModule, AdministrativeNotificationsState, AggregatedStatusText, AlertChangedAction, AlertNotificationBorderClass, AlertNotificationClassificationMap, AlertNotificationComponent, AlertNotificationService, AlertsAndNotificationsService, AlertsAndNotificationsState, AlertsDeviceTypeLabel, AlertsDeviceTypeOptions, AlertsDeviceTypeOptionsMapping, AmountStepSurchargeMinLimit, AnalyticsCommandsText, AnalyticsEventsText, AnalyticsService, AnalyticsSourceComponent, AnalyticsSourceProps, AppConfigService, AppModuleService, AppModuleToMainPermissionTypeMap, AppSectionLabel, AppSectionModuleMenuOrder, AppSectionRoute, AppSettingsService, AppType, AuditActionTypeText, AuditLogoutAction, AuthModule, AuthRouteGuard, AuthService, AuthTokenService, Authenticate2FAforUser, AuthenticateMultipleTenantsAction, AutofocusDirective, BC_DS_P_VALIDATION, BOM_UNICODE, BackOfficeParkerType, BackofficeAutheticateAction, BarcodeTypeLength, BarrireStateText, BaseComponent, BaseDeviceItemComponent, BaseDeviceService, BaseFacilityCommandsConfigService, BaseFacilityCommandsService, BaseNotificationService, BillDispenserStatusText, BillTypeText, BillValidatorStatusText, ButtonStatus, CANCEL_ALL_RELAY_VALUE, CLogItPipe, COLORS, CREDIT_CARD_POSTFIX_LENGTH, CalculatorModule, CalculatorState, CanDeactivateService, CarModule, CarState, CassetteStatusText, CentToCoinPipe, ChangeLanguageAction, ChangePasswordAction, ChartLayout, CleanLogoAction, ClearAdministrativeNotificationsAction, ClearAdministrativeNotificationsByEntityTypeAction, ClearAlertsAndNotificationsAction, ClearBaseZonesAction, ClearCalculatorPriceAction, ClearCategoriesAction, ClearColorsAction, ClearConflictDetected, ClearDeviceAction, ClearDeviceEventsExpanded, ClearDevicesAction, ClearEventActivitiesExpanded, ClearFacilityDictionaryAction, ClearGroupsAction, ClearGuestAction, ClearGuestProfilesAction, ClearGuestsListAction, ClearHandledGuest, ClearInactiveSelectedParkAction, ClearJobTitlesAction, ClearLocateTicketSearchAction, ClearLocatedTicketAction, ClearLprTransactionsExpanded, ClearMacroCommandsAction, ClearModelsAction, ClearParkerAction, ClearRateAction, ClearSearchResultsAction, ClearSearchTermAction, ClearSearchTicketAction, ClearSelectedFacilityAction, ClearSelectedParkAction, ClearSelectedRow, ClearSelectedSmartparkAction, ClearSmartparksBasicAction, ClearSpAndSparkVersionsAction, ClearSpecialTransientTablesAction, ClearSuspendedParkActivitiesAction, ClearUserSettingsByCategoryAction, ClearUsersAction, ClearValidationTypesAction, ClearZoneAction, ClearZonesAction, ClearZsAction, cloudServiceProxies as Cloud, CloudConfirmDialogComponent, CofCredentialSubTypeText, CoinStatusText, CollapsedGuestsByBatchIdAction, ComAggregatedStatus, ComAggregatedStatusText, ComStatusIconComponent, CommandCenterModuleResolver, CommandNotificationBorderClass, CommandNotificationComponent, CommandNotificationDisplayCase, CommandNotificationService, CommandNotificationType, CommandsLocalizationKey, CommonPagesModule, CompanyService, ConfigResolver, ConnectSmartparkAction, ContainerRefDirective, CoreEntities, CouponSearchFieldSelectorText, CreateBasicBatchAction, CreateBasicGuestAction, CreateBatchAction, CreateColorAction, CreateGuestAction, CreateModelAction, CreateOrUpdateSMTPDetailsAction, CredentialTypeText, CreditCardTypeText, CrudOperationText, CurlyToBoldPipe, DATA_IMAGE_BASE64_PREFIX, DATE_TIME_ERROR_INVALID_DATE, DATE_TIME_ERROR_INVALID_DATE_RANGE, DATE_TIME_ERROR_REQUIRED, DEFAULT_DATE_FORMAT, DEFAULT_EXPIRATION_MONTHS_COUNT, DEFAULT_MINIMUM_LENGTH, DEFAULT_MODULE, DEFAULT_PASSWORD_HISTORY_COUNT, DEFAULT_PERMITTED_CREDENTIALS, DEFAULT_SMART_PARK_DATE_TIME, DEFAULT_SORT_MENU, DEFAULT_STICKER_NUM, DEVICE_EVENT_OPTIONS_KEY, DEVICE_NAVIGATE_KEY, DISABLED_FOCUS_ELEMENT_CLASSES, DISABLED_FOCUS_ELEMENT_TYPES, DYNAMIC_PRICING_CONDITION, DataQaAttribute, DateService, DateValidityText, DaysText, DecimalToAmountPipe, DecimalToCurrencyPipe, DefaultImageTimeout, DeleteGuestAction, DeleteLogoAction, DeleteUserAction, DetectBrowserService, DeviceActivityChangedAction, DeviceActivityLabel, DeviceActivityMode, DeviceActivityModeText, DeviceActivityStatus, DeviceActivityType, DeviceAggregatedStatus, DeviceAggregatedStatusText, DeviceEventChangedAction, DeviceIconComponent, DeviceIndicationStatus, DeviceLaneTypes, DeviceLoop, DeviceModule, DevicePipeModule, DevicePrinterStatusText, DeviceRemoteCommandsService, DeviceSortBy, DeviceStatusBaseComponent, DeviceStatusChangedAction, DeviceTypeIconName, DeviceTypeText, DeviceTypesAlertsMapping, DevicesViewMode, DialogMode, DipSwitchStatus, Disable2FAAction, DisableUserSSOAction, DisconnectSmartParkAction, DoorSensorStatus, DoorStatusText, DurationMessageBar, DynamicContainerComponent, DynamicEllipsisTooltipDirective, ENGLISH_LANGUAGE, ENVIRONMENT, EXPIRATION_MONTHS_COUNT_OPTIONS, edgeServiceProxies as Edge, EditUserAction, ElectronicWalletPaymentMethodTypesText, EllipsisMultilineDirective, EmailServerModule, EmailServerState, EmptyResultsComponent, Enable2FAAction, EnumsToArrayPipe, EnvironmentModeText, ErrorPageComponent, ErrorPageResolver, ErrorResultsComponent, ExceedingBehaviorTypeText, ExpandGuestsByBatchIdAction, ExportFileService, ExportGuestsAction, ExportPdfSmartparksTableAction, ExportSmartparkAction, FONT_BASE64, FacilityChangedAction, FacilityMenuService, FacilityModule, FacilityRemoteCommandExecutedAction, FacilityRemoteCommandTypesIcon, FacilityRemoteCommandsLocalizationKey, FacilityRemoteCommandsMenuItems, FacilityService, FacilityState, FieldLabelComponent, FieldValidationsComponent, FileGenerateMethod, FileSanitizerService, FileService, FilterByDeviceType, FilterDevicesByTypePipe, FilterDevicesByZonePipe, FilterKeysPipe, FilterNumbersPipe, FilterPipe, FlattenedCoreEntities, FloatMessageBarService, ForgotPasswordAction, ForgotPasswordTenantlessAction, FormValidationsComponent, FormattedInputDirective, FrequentParkingActionText, FrequentParkingErrorActionText, GATE_STATE_VALUE, GeneralActionService, GenerateSearchParamsDto, GenerateSlimSearchParamsDto, GetAllLocalizationsAction, GetLogoAction, GetRateByIdAction, GetSpecialTransientTablesAction, GetUserSettingsByCategoryAction, GlobalErrorService, GlobalMessageContainerComponent, GroupPermissionsPipe, GuestModule, GuestSearchFieldSelectorText, GuestState, GuestTypeCastText, GuestTypesText, HOUR_FORMAT_12, HOUR_FORMAT_24, HOUR_FORMAT_FULL_DAY, HandleAlertsAction, HandleNotificationAction, HandledNotificationAction, HasActionErrored, HealthAction, HoldRelayMode, HoldRelayModeText, HopperStatusText, HotelGuestSearchFieldSelectorText, HtmlSanitizerService, HttpCancelBlackListUrls, HttpCancelInterceptor, HttpCancelService, HumanizePipe, INPUT_SEARCH_DEBOUNCE_TIME, INPUT_SEARCH_DEBOUNCE_TIME_LOW, INPUT_SEARCH_DEBOUNCE_TIME_MEDIUM, IconColumnComponent, IconComponent, IconModule, IconsHelper, IconsHelperText, identityServiceProxies as Identity, ImportMonthyStastusFieldSelectorText, InitAddSmartparkConnectionAction, InitSMTPDetailsAction, InitSessionFromLocalStorageAction, InitSmartparkTransportAction, IntercomComponent, InternetConnectionService, InternetConnectionStatus, IsActionExecuting, IsEllipsisDirective, LOCAL_ENGLISH_LANGUAGE, LOCATION_OPTIONS, LOGGED_TENANT_KEY, LanguageTypeKeys, LayoutModule, LayoutState, Load2FAUserAction, LoadAccessProfileBaseZonesAction, LoadAccessProfileZoneAction, LoadAccessProfileZonesAction, LoadAccountManagementGuestGroupAction, LoadAccountManagementJobTitlesAction, LoadAdministrativeNotificationsAction, LoadAlertsAndNotificationsAction, LoadAppConfigurationAction, LoadBackofficeAppConfigurationAction, LoadBackofficeSmartparksTableAction, LoadBackofficeSpAndSparkVersionsAction, LoadBackofficeVarByIdAction, LoadBackofficeVarsAction, LoadCalculatorPriceAction, LoadCategoriesAction, LoadCcMainBaseZonesAction, LoadCcMainZonesAction, LoadColorsAction, LoadColorsAction1, LoadColorsAction2, LoadColorsAction3, LoadColorsAction4, LoadColorsAction5, LoadDeviceAction, LoadDeviceEventActivitiesAction, LoadDeviceEventsAction, LoadDeviceEventsCollapse, LoadDeviceLprTransactionsAction, LoadDeviceStatusAction, LoadDevicesAction, LoadDevicesByTypeAction, LoadDynamicPricingBaseZonesAction, LoadDynamicPricingZoneAction, LoadEventActivitiesCollapse, LoadFacilityAction, LoadFacilityRemoteCommandsRefAction, LoadGuestByIdAction, LoadGuestProfilesAction, LoadGuestsAction, LoadGuestsByBatchIdAction, LoadGuestsByBatchIdCancelledAction, LoadLocateTicketSearchAction, LoadLocatedTicketAction, LoadLprTransactionsCollapse, LoadMacroCommandsAction, LoadModelsAction, LoadModelsAction1, LoadModelsAction2, LoadModelsAction3, LoadModelsAction4, LoadModelsAction5, LoadOverflowPriceTableAction, LoadParkActivitiesAction, LoadParkDevicesAction, LoadParkerAction, LoadParkersAction, LoadParkingLotAction, LoadParksAction, LoadRateByIdAction, LoadRatesAction, LoadRemoteCommandsRefAction, LoadReportsBaseZonesAction, LoadReportsGuestGroupAction, LoadReportsJobTitlesAction, LoadReportsZoneAction, LoadReportsZonesAction, LoadSMTPDetailsAction, LoadSelectedDeviceAction, LoadSmartparksAction, LoadSmartparksBasicAction, LoadSmartparksDropdownAction, LoadSmartparksTableAction, LoadSpAndSparkVersionsAction, LoadStickerPriceTableAction, LoadTicketNumParkersAction, LoadTransientPriceTableAction, LoadUserCapabilitiesAction, LoadUsersAction, LoadUsersAdministrativeNotificationsAction, LoadValidationTypeAction, LoadVarsAction, LoadZsAction, LoadingOverlayComponent, LocalStorageMigrator, LocalStorageService, Localization, LocalizationModule, LocalizationResolver, LocalizationService, LocalizationState, LoginModule, LoginRequestAction, LoginService, LoginState, LoginSuccess, LogoComponent, LogoState, LogoutAction, LogoutMobileAction, LoopStatus, LowerCaseUrlSerializer, LprTransactionsChangedAction, LprTransactionsOptionsText, LprTransactionsSearchFieldSelectorText, MANUAL_ACTION_REASON_NAME_MAX_LENGTH, MAX_ALLOWED_BADGE_VALUE, MAX_ALLOWED_CURRENT_BALANCE, MAX_ALLOWED_DEDUCTION_VALUE, MAX_ALLOWED_GUEST_UNIT_QUANTITY, MAX_ALLOWED_IDENTIFIER_VALUE, MAX_ALLOWED_STARTING_PURSE_VALUE, MAX_CAPACITY_VALUE, MAX_CARDS, MAX_CAR_PLATES, MAX_EMAIL_CHARACTERS_LENGTH, MAX_EXPORT_RECORDS, MAX_HOTEL_ROOM_NUMBER_LENGTH, MAX_INT16_VALUE, MAX_INT32_VALUE, MAX_INTEGER_VALUE, MAX_LENGTH_BATCH_NAME, MAX_LENGTH_DESCRIPTION_50, MAX_LENGTH_DESCRIPTION_70, MAX_LENGTH_FOOTER, MAX_LENGTH_LEFT, MAX_LENGTH_LEFT_BACKWARD_COMPATIBILITY, MAX_LENGTH_MANUAL_TEXT, MAX_LENGTH_NAME_100, MAX_LENGTH_NAME_20, MAX_LENGTH_NAME_25, MAX_LENGTH_NAME_30, MAX_LENGTH_NAME_50, MAX_LENGTH_NOTES, MAX_LENGTH_QUANTITY, MAX_LENGTH_REASON_DESCRIPTION, MAX_LENGTH_SERACH_TERM, MAX_LENGTH_SERACH_TERM_30, MAX_MOBILE_LENGTH, MAX_NUMBER_OF_NIGHTS, MAX_NUMBER_OF_ROW_IN_MENU, MAX_OCCUPANCY_VALUE, MAX_PERIOD_TIME, MAX_PLATE_ID_LENGTH, MAX_PRICE_NO_TIME_LIMIT_VALUE, MAX_PRICE_PERIOD_VALUE, MAX_REPEAT_COUNT_VALUE, MAX_RESULTS, MAX_ROLE_NAME_LENGTH, MAX_SP, MAX_TIME_RANGE_ITEMS_PER_KEY, MC_READER_ID, MESSAGE_BAR_DEFAULT_ID, MINIMUM_DROPDOWN_RESULTS_WITHOUT_SEARCH, MINIMUM_LENGTH_OPTIONS, MINUTES_PER_HOUR, MIN_ALLOWED_GUEST_UNIT_QUANTITY, MIN_LENGTH_QUANTITY, MIN_NUMBER_OF_ROW_IN_MENU, MIN_TIME_RANGE_ITEMS_PER_KEY, MOBILE_REFRESH_INFO, MSALGuardConfigFactory, MSALInstanceFactory, MSALInterceptorConfigFactory, MSLAuthService, MULTIPLE, MainModuleToSubModulesPermissionTypeMap, MatHintErrorDirective, MaxAllowedSurchargeAmount, MaxAllowedSurchargeMaxLimit, MaxAllowedSurchargeMinLimit, MaxDisplayTimeout, MaxIPV4TextLength, MaxSurchargeNameLength, MenuAppModuleLoadAction, MenuClearAction, MenuLoadAction, MenuService, MenuSubModuleClearAction, MenuSubModuleLoadAction, MessageBarComponent, MessageBarContainerComponent, MessageBarModule, MessageBarPosition, MessageBarService, MessageBarStatus, MiddayPeriod, MinAllowedSurchargeAmount, MinAllowedSurchargeMaxLimit, MinAllowedSurchargeMinLimit, MinDisplayTimeout, MobileAppSectionLabel, MobileLogoutAction, ModalButtonsWrapperComponent, ModalService, ModuleGuard, ModuleMenuBaseComponent, MonthlyRenewalSettingsActionTypesText, MonthlyRenewalSettingsActionTypesValueText, MonthlySearchFieldSelectorText, MslEventType, NONE_ACTIVE_BYTE, NONE_USER_ID, NO_RESULT, NativeElementInjectorDirective, NotSupportedBrowserGuard, NotSupportedBrowserPageComponent, NotificationChangedAction, NotificationClass, NotificationClassficationType, NotificationCloseAllButtonComponent, NotificationConfig, NotificationEventService, NotificationHPositions, NotificationModule, NotificationSeverityText, NotificationTypeLabelComponent, NotificationTypeText, NotificationVPositions, NotificationsModule, ONE_DAY_IN_MINUTES_VALUE, ONE_MINUTE_IN_MILLISECONDS, ONE_SECOND_IN_MILLISECONDS, OffScreenDirective, OpenIdAuthInitializeService, OpenIdAuthService, OpenIdAutheticateAction, Operator, OrderBy, OrderByPipe, OrderDirection, OrphanFacilitiesPipe, PARKER_SEARCH_AUTO_REDIRECT, PASSWORD_EXPIRED, PASSWORD_HISTORY_COUNT_OPTIONS, PREVENT_CLICK_ELEMENT_CLASSES, ParkActivitiesModule, ParkActivitiesState, ParkActivityChangedAction, ParkConnectionStatus, ParkConnectionStatusClass, ParkConnectionStatusText, ParkManagerModule, ParkManagerState, ParkService, ParkTimeService, ParkerSearchTerm, ParkerService, ParkerState, ParkerTagsText, ParkerTypesText, PasswordScore, PasswordStrengthService, PaymentSearchFieldSelectorText, PaymentServiceTypeText, PaymentsTypesText, PermissionCacheService, PermissionConfigService, PermissionGroupText, PermissionTypeSupportedVersionDictionary, PermissionTypeText, PermissionsService, PrintReceiptAction, ProfileTypeText, QUERY_INTENT_PATTERNS, RATE_ID_WITH_VALUE_2, REDIRECT_URL, RELAY_2_VALUE, RELAY_3_VALUE, RELAY_4_VALUE, REPORT_CATEGORY_ALL, RESET_PASSWORD_EMAIL, RTL_LANGUAGES, RTObjectObject, RangeModes, RangeModesText, RateModule, RateState, RealtimeEventService, RealtimeResolver, ReceiptGeneratedAction, RefreshTokenService, RefreshTokenState, RelayStatus, ReloadParkerAction, RemoteCommandService, RemoteCommandTypesIcon, RemoteValidationModule, RemoteValidationState, RemoveExpiredAlertsAndNotificationsAction, ReportMethodDictionary, ResendPendingAdminInvitationsAction, ResendUserInvitationAction, ResetRatesAction, RestartLinkComponent, RestartLinkModule, RestrictionLocationTypeText, RestrictionLocationTypeTextTable, RestrictionTypeText, RevenueService, RouteService, RowOperation, rpcServiceProxies as Rpc, SESSION, STATUS_CODE_SERVER_VALIDATION, STATUS_CODE_UNAUTHORIZED, STRING_ZERO, SUPER_PARK_ROUTE_KEY, SUPPORETD_RESTORE_TICKET_TYPES, SUPPORTED_CAR_ON_LOOP_DEVICE_TYPES, SUPPORTED_DEVICES_SCHEDULER, SUPPORTED_GATE_DEVICE_TYPES, SUPPORTED_LPR_TRANSACTIONS_DEVICE_TYPES, SUPPORTED_PAYMENT_FOR_ISF_TYPES, SUPPORTED_RESTORE_TICKET_DEVICE_TYPES, SUPPORTED_STATUS_DEVICE_TYPES, SUPPORTED_TICKET_INSIDE_DEVICE_TYPES, SYSTEM_ALERT_VALUE, SanitizedInnerHtmlDirective, SearchFacilitiesMode, SearchFieldSelectorText, SearchTicketAction, SearchValueHighlightComponent, SecurityModule, SecurityState, SelectDeviceAction, SelectLprTransactionsRowAction, SelectParkAction, SelectSmartParkAction, SelectedRowAction, SendEmailFromEntityAction, SendEmailToGuestAction, SendGuestPassesToEmailAction, SendTestEmailAction, ServiceProxyModule, ServicesRunningStatusChangedAction, SessionState, SessionStorageService, SetBackofficeSmartParkVersionsAction, SetBasicMenuAction, SetConflictDetected, SetDeviceEventsExpanded, SetDeviceRemoteCommandsMapAction, SetDeviceStatusAction, SetDeviceViewModeAction, SetEventActivitiesExpanded, SetFacilityRemoteCommandsMapAction, SetGuestsAction, SetLprTransactionsExpanded, SetMobileModeAction, SetParkActivitiesAction, SetRealTimeEventStatusAction, SetSearchTermAction, SetSelectedParkAction, SetSmartParkAction, SetSmartParkTableAction, SetSmartParkVersionsAction, SetSmartparkBasicAction, SetSmartparkBasicAllAction, SetStateAction, SetTFASetupAction, SetTenantUserAction, SetTicketIdentifierAction, SetUserNameAction, SetUserStatusAction, SetUsersAction, SetkeepMeLoggedInAction, SharedComponentsModule, SharedDirectivesModule, SharedModule, SharedPipesModule, SideNavSortBy, SidenavModule, SidenavState, SignalR, SignalRObject, SignalRRefreshTokenAction, SingleSignOnProviderText, SmartParkDeviceStatusChangedAction, SmartParkStatusText, SmartparkDateTimePipe, SmartparkDialogState, SmartparkModule, SmartparkService, SmartparkState, SortDevicesPipe, SortPipe, SparkKeyboardEvent, SparkNotification, SpecialDaysPipe, SpinnerDiameterSize, StaticMessageBarService, StatusIconComponent, StickerSearchFieldSelectorText, StopPropagationDirective, StringItPipe, SubModuleGuard, SubstrHightlightManyPipe, SubstrHightlightPipe, SubstrHightlightSinglePipe, SwallowUnitStatusText, SwitchUserToSSOAction, SyncUsersAndRolesBySmartparkIdAction, TAKE_TOP_300, TBFormatPipe, TBNumberDirective, TENANT_KEY, TENS_MULTIPLIER, TableColumnGroup, TableColumnGroupLabel, TableRowHeightSizes, TableTypeText, TagLabelType, TenantClearAction, TenantLoadAction, TenantLogoModule, TenantService, TenantlessLoginMode, TibaDateFormat, TibaMatDialogConfig, TibaRetryPolicy, TibaValidators, TicketService, TimeAgoPipe, TimeElapsedCounterComponent, TimeElapsedFormats, TimeElapsedPipe, TimeRangeFormats, TimeRangePipe, ToggleDrawerAction, ToggleDrawerCollapseAction, TooltipPositions, TrackAction, TransientParkingActionText, TranslateLocalPipe, TreeFilterKeysPipe, TreeMode, TypeCastText, UNSAVED_DATA, USER_IS_TEMPORARY_BLOCKED, UnloadParkingLotAction, UnsafeHtmlValidatorDirective, UpdateAndActivateUserAction, UpdateAuthTokenAction, UpdateBasicGuestAction, UpdateDocumentAction, UpdateGuestAction, UpdateGuestLocationAction, UpdateMobileMode, UpdateSmartparkAction, UpdateSmartparkVarAction, UpdateTenantInfoProps, UpdateTenantSingleSignOnAction, UpdateTicketPlateIdAction, UpdateUserAlertsPreferencesAction, UpdateUserNotificaitonsPreferencesAction, UpdateUserSettingsAction, UpdateUserSettingsInSessionAction, UploadLogoAction, UserCreationType, UserModule, UserSettingsModule, UserSettingsState, UserState, VALIDATION_TYPE_BY_HOURS_41, VALIDATION_TYPE_BY_HOURS_42, VALID_DATETIME_FILTERS, VALID_TIME_MAX_LENGTH, VALID_ZIP_CODE_LENGTH, VERSION_10_1_0, VERSION_10_2_0, VERSION_10_2_1, VERSION_10_3_0, VERSION_10_3_9, VERSION_10_4_0, VERSION_25_1_0, VERSION_25_2_0, VERSION_25_2_1, VERSION_25_3_0, VERSION_25_3_1, VERSION_25_3_6, VERSION_25_4_0, VERSION_25_4_1, VERSION_26_1_0, VERSION_26_1_1, VERSION_26_1_2, VERSION_26_2_0, VERSION_7_4_0, VERSION_7_4_1, VERSION_8_1_0, VERSION_8_2_0, VERSION_8_3_0, VERSION_8_4_0, VERSION_9_1_0, VERSION_9_2_0, VERSION_9_2_2, VERSION_9_3_0, VERSION_9_4_0, VGuestWithBatchTableData, VIRTUAL_DEVICE_LPR_COMPACT_LAYOUT_MEDIA_QUERY, ValidateUserTokenAction, ValidationService, ValidationStickerType, ValidationTypeModule, ValidationTypeState, VarDirective, Verify2FactorAuthenticationAction, VirtualValidationStatusText, WrapFnPipe, YEAR_LIMIT_IN_DAYS, ZerofyNegativePipe, ZoneChangedAction, ZoneModule, ZoneState, accountModuleAnimation, adjustForTimezone, allowSpecialKeys, alphanumericRegex, appModuleAnimation, areDatesIdentical, areVersionsCompatible, arrayEquals, arraysAreDifferent, baseReduce, blobToBase64, buildMessageInfos, buildMessages, camelize, canceled, capitalizeFirstLetter, compareValues, convert24HoursToAmPM, convertAmPmTo24Hours, convertBinaryToDecimal, convertCentToWholeCoin, convertDecimalToBinary, convertFeaturePermissionsToDictionary, convertFormatWithoutTime, convertWholeCoinToCent, createDescriptor, createMessageText, dateDiffInSeconds, days, daysTranslation, decimalNumberRegex, decimalPercentageRegex, decimalPositiveNumberRegex, decryptClientSecret, delayCancellation, deviceIndicationStatusLocalization, deviceTypeFilterOptions, diffInMillis, dispatched, distinctObjectByProperties, distinctObjectByProperty, downloadFile, ensureObjectMetadata, entryDevicesLaneTypes, errored, exitDevicesLaneTypes, extractErrorsChanges, extractNumber, extractResetChanges, extractSetValueChanges, extractToggleStatusChanges, extractTouchedChanges, extractUpdateValueAndValidityChanges, filterDependentPermissions, filterDevicesByTypes, filterKeyValueBaseReduce, findChildRoute, findObjectDifferences, findParentElement, findParentElementDimensions, findParentRoute, findParentRouteConfig, flattenByKey, formatMinutesToTimeNumber, formatTimeToMinutes, formatTimeToString, formatTimeWithMidnight, formatTimeWithSeparator, formatTimeWithoutMidnight, formatTimeWithoutSeparator, formatTimeWithoutSeperatorAndWithMidnight, formatTimeWithoutSeperatorAndWithoutMidnight, getActivatedRoutePathSegment, getAddress, getCurrentLang, getDateTimeInSeconds, getDateWithoutTime, getDaysFromValue, getDefaultDeviceStatus, getFormattedTime, getMomenWithTime, getMomentNullable, getMomentWithoutTime, getNavigationRoute, getObjectMetadata, getParkerTypesText, getPasswordMinimalLength, getSecondsBackoff, getTooltipTextByParkerType, getUserTimeZone, getUtcMomentNullable, hasMiddayPeriod, hasMonthName, hasRequiredField, hasUnsafeHtmlValue, hasValue, humanizeTimeElapsed, humanizeUtcTimeElapsed, identity, initializeMsal, initializeOpenId, integerNumberRegex, integerPositiveNumberRegex, ipv4Regex, isBoolean, isCharacterLengthValid, isDefinedAndNotEmpty, isDeviceActive, isDeviceInFilterDeviceTypes, isDeviceInFiltersDeviceTypes, isFalsy, isIOSDevice, isMaxDaysRangeValid, isNullOrEmpty, isNumber, isObjectEmpty, isQueryIntentRequest, isSearchFieldChanged, isSingularOrPlural, isTrueInBinary, isTruthy, isVersionGreaterThanEqual, loadHTMLContent, lowerCase, lowerCaseFirstLetter, mapTransientTags, markEntitiesAsChanged, markEntityAsUnchanged, matchesDeviceCriteria, matchesDeviceParkingLotCriteria, matchesDevicesParkingLotCriteria, minutesToTime, mobileRegex, nameof, navigateToForbiddenAccessPage, navigateToNotSupportedBrowserPage, noEmojiRegex, notificationAnimation, numberWithLeadingZero, objectKeystoLowerCase, ofStatus, omitKeys, openBackgroundIframe, openCloseFiltersAnimation, parentParkBaseEventTypes, parentParkEventTypes, parkBaseEventTypes, parkEventTypes, parkerEnumToText, parseApiErrorData, parseApiErrorMessage, parseDateTimeToSparkParkTime, parseSmartParkTime, passwordRegex, percentageRegex, printSpecialDaysText, printStackTrace, readjustForTimezone, regexExp, remoteCommandLocalizationMap, replaceAll, rtEventPermissions, safeParse, sanitizeHtmlValue, searchBarPopupAnimation, setDateTimeErrorMessage, setErrorMessage, shortDaysTranslation, sleep, slideFromBottom, slideFromRight, slideFromUp, slideUpDown, successful, timeToMinutes, timeToMoment, toInt, toNumberMap, toStringMap, wrapConstructor };
|
|
133139
133174
|
//# sourceMappingURL=tiba-spark-client-shared-lib.mjs.map
|