@c8y/ngx-components 1018.0.194 → 1018.0.201

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.
Files changed (99) hide show
  1. package/core/common/global-config.service.d.ts +1 -1
  2. package/core/common/permissions.service.d.ts +69 -2
  3. package/core/common/tenant-ui.service.d.ts +1 -1
  4. package/core/i18n/pattern-messages.data.d.ts +20 -20
  5. package/esm2020/assets-navigator/asset-node.service.mjs +11 -4
  6. package/esm2020/auth-configuration/auth-configuration.guard.mjs +5 -2
  7. package/esm2020/auth-configuration/factories/navigation.factory.mjs +3 -3
  8. package/esm2020/cockpit-config/cockpit-config.guard.mjs +2 -2
  9. package/esm2020/cockpit-config/cockpit-config.service.mjs +2 -2
  10. package/esm2020/context-dashboard/add-dashboard.factory.mjs +13 -3
  11. package/esm2020/context-dashboard/context-dashboard.service.mjs +11 -3
  12. package/esm2020/context-dashboard/dashboard-detail.component.mjs +7 -2
  13. package/esm2020/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +5 -3
  14. package/esm2020/core/common/global-config.service.mjs +7 -2
  15. package/esm2020/core/common/permissions.service.mjs +69 -2
  16. package/esm2020/core/common/tenant-ui.service.mjs +3 -2
  17. package/esm2020/core/common/user-preferences/user-preferences.service.mjs +10 -2
  18. package/esm2020/core/i18n/pattern-messages.data.mjs +21 -21
  19. package/esm2020/ecosystem/application-properties/application-properties.component.mjs +2 -2
  20. package/esm2020/ecosystem/ecosystem-navigation.factory.mjs +3 -3
  21. package/esm2020/ecosystem/packages/package-list/packages-list.component.mjs +2 -2
  22. package/esm2020/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.mjs +2 -2
  23. package/esm2020/files-repository/files-repository.guard.mjs +6 -3
  24. package/esm2020/protocol-lwm2m/components/bootstrap-parameters/lwm2m-bootstrap-parameters.component.mjs +2 -2
  25. package/esm2020/register-device/register-device-navigation.factory.mjs +3 -3
  26. package/esm2020/reports/export-schedules.component.mjs +3 -3
  27. package/esm2020/repository/configuration/device-tab/configuration-preview.component.mjs +14 -6
  28. package/esm2020/sms-gateway/sms-gateway.guard.mjs +2 -2
  29. package/esm2020/sms-gateway/sms-gateway.module.mjs +6 -6
  30. package/esm2020/sub-assets/add-group/add-group.component.mjs +7 -2
  31. package/esm2020/sub-assets/groups.component.mjs +5 -2
  32. package/esm2020/sub-assets/sub-assets.component.mjs +7 -2
  33. package/esm2020/sub-assets/sub-assets.service.mjs +22 -10
  34. package/esm2020/tenants/tenant-list/tenant-list.component.mjs +12 -7
  35. package/esm2020/upgrade/ng1/downgraded.services.mjs +3 -2
  36. package/esm2020/upgrade/ng1/index.mjs +4 -3
  37. package/fesm2015/c8y-ngx-components-assets-navigator.mjs +10 -3
  38. package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  39. package/fesm2015/c8y-ngx-components-auth-configuration.mjs +7 -4
  40. package/fesm2015/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  41. package/fesm2015/c8y-ngx-components-cockpit-config.mjs +3 -3
  42. package/fesm2015/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  43. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +33 -8
  44. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  45. package/fesm2015/c8y-ngx-components-ecosystem.mjs +6 -6
  46. package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
  47. package/fesm2015/c8y-ngx-components-files-repository.mjs +6 -3
  48. package/fesm2015/c8y-ngx-components-files-repository.mjs.map +1 -1
  49. package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs +2 -2
  50. package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs.map +1 -1
  51. package/fesm2015/c8y-ngx-components-register-device.mjs +3 -3
  52. package/fesm2015/c8y-ngx-components-register-device.mjs.map +1 -1
  53. package/fesm2015/c8y-ngx-components-reports.mjs +2 -2
  54. package/fesm2015/c8y-ngx-components-reports.mjs.map +1 -1
  55. package/fesm2015/c8y-ngx-components-repository-configuration.mjs +13 -5
  56. package/fesm2015/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  57. package/fesm2015/c8y-ngx-components-sms-gateway.mjs +6 -6
  58. package/fesm2015/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  59. package/fesm2015/c8y-ngx-components-sub-assets.mjs +38 -13
  60. package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
  61. package/fesm2015/c8y-ngx-components-tenants.mjs +11 -6
  62. package/fesm2015/c8y-ngx-components-tenants.mjs.map +1 -1
  63. package/fesm2015/c8y-ngx-components-upgrade.mjs +4 -2
  64. package/fesm2015/c8y-ngx-components-upgrade.mjs.map +1 -1
  65. package/fesm2015/c8y-ngx-components.mjs +103 -24
  66. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  67. package/fesm2020/c8y-ngx-components-assets-navigator.mjs +10 -3
  68. package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  69. package/fesm2020/c8y-ngx-components-auth-configuration.mjs +7 -4
  70. package/fesm2020/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  71. package/fesm2020/c8y-ngx-components-cockpit-config.mjs +3 -3
  72. package/fesm2020/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  73. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +34 -9
  74. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  75. package/fesm2020/c8y-ngx-components-ecosystem.mjs +6 -6
  76. package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
  77. package/fesm2020/c8y-ngx-components-files-repository.mjs +6 -3
  78. package/fesm2020/c8y-ngx-components-files-repository.mjs.map +1 -1
  79. package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs +2 -2
  80. package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs.map +1 -1
  81. package/fesm2020/c8y-ngx-components-register-device.mjs +3 -3
  82. package/fesm2020/c8y-ngx-components-register-device.mjs.map +1 -1
  83. package/fesm2020/c8y-ngx-components-reports.mjs +2 -2
  84. package/fesm2020/c8y-ngx-components-reports.mjs.map +1 -1
  85. package/fesm2020/c8y-ngx-components-repository-configuration.mjs +13 -5
  86. package/fesm2020/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  87. package/fesm2020/c8y-ngx-components-sms-gateway.mjs +6 -6
  88. package/fesm2020/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  89. package/fesm2020/c8y-ngx-components-sub-assets.mjs +38 -13
  90. package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
  91. package/fesm2020/c8y-ngx-components-tenants.mjs +11 -6
  92. package/fesm2020/c8y-ngx-components-tenants.mjs.map +1 -1
  93. package/fesm2020/c8y-ngx-components-upgrade.mjs +4 -2
  94. package/fesm2020/c8y-ngx-components-upgrade.mjs.map +1 -1
  95. package/fesm2020/c8y-ngx-components.mjs +103 -24
  96. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  97. package/package.json +1 -1
  98. package/tenants/tenant-list/tenant-list.component.d.ts +4 -2
  99. package/upgrade/ng1/downgraded.services.d.ts +1 -0
@@ -1,6 +1,6 @@
1
1
  import { IManagedObject, InventoryService, IResultList } from '@c8y/client';
2
2
  import * as i0 from "@angular/core";
3
- export declare type ManagedObjectTypeForConfig = 'c8y_Software' | 'c8y_Firmware' | 'c8y_ConfigurationDump';
3
+ export declare type ManagedObjectTypeForConfig = 'c8y_Software' | 'c8y_Firmware' | 'c8y_ConfigurationDump' | 'c8y_ModbusDeviceType' | 'c8y_CANopenDeviceType' | 'c8y_LoraDeviceType' | 'c8y_SigfoxDeviceType' | 'c8y_DeviceShellTemplate';
4
4
  export declare class GlobalConfigService {
5
5
  private inventory;
6
6
  protected cache: Promise<IResultList<IManagedObject | undefined>>;
@@ -20,12 +20,79 @@ export declare class Permissions {
20
20
  private appState;
21
21
  private inventory;
22
22
  private user;
23
+ static ROLE_ADVANCED_SOFTWARE_ADMIN: string;
24
+ static ROLE_ADVANCED_SOFTWARE_READ: string;
25
+ static ROLE_ALARM_ADMIN: string;
26
+ static ROLE_ALARM_READ: string;
27
+ static ROLE_ANALYTICSBUILDER_READ: string;
28
+ static ROLE_APPLICATION_MANAGEMENT_ADMIN: string;
29
+ static ROLE_APPLICATION_MANAGEMENT_READ: string;
30
+ static ROLE_AUDIT_ADMIN: string;
31
+ static ROLE_AUDIT_READ: string;
32
+ static ROLE_BINARY_ADMIN: string;
33
+ static ROLE_BINARY_CREATE: string;
34
+ static ROLE_BINARY_READ: string;
35
+ static ROLE_BULK_OPERATION_ADMIN: string;
36
+ static ROLE_BULK_OPERATION_READ: string;
37
+ static ROLE_CEP_MANAGEMENT_ADMIN: string;
38
+ static ROLE_CEP_MANAGEMENT_READ: string;
39
+ static ROLE_DATA_BROKER_ADMIN: string;
40
+ static ROLE_DATA_BROKER_READ: string;
41
+ static ROLE_DEVICE_CONTROL_ADMIN: string;
42
+ static ROLE_DEVICE_CONTROL_READ: string;
43
+ static ROLE_EMAIL_CREATE: string;
44
+ static ROLE_EPLAPPS_READ: string;
45
+ static ROLE_EVENT_ADMIN: string;
46
+ static ROLE_EVENT_READ: string;
47
+ static ROLE_GENERIC_MQTT_ADMIN: string;
48
+ static ROLE_IDENTITY_ADMIN: string;
49
+ static ROLE_IDENTITY_READ: string;
50
+ static ROLE_INVENTORY_ADMIN: string;
51
+ static ROLE_INVENTORY_CREATE: string;
52
+ static ROLE_INVENTORY_READ: string;
53
+ static ROLE_MACHINE_LEARNING_READ: string;
54
+ static ROLE_MANAGED_OBJECT_ADMIN: string;
55
+ static ROLE_MANAGED_OBJECT_CREATE: string;
56
+ static ROLE_MANAGED_OBJECT_READ: string;
57
+ static ROLE_MEASUREMENT_ADMIN: string;
58
+ static ROLE_MEASUREMENT_READ: string;
59
+ static ROLE_MQTT_CONNECT_ADMIN: string;
60
+ static ROLE_MQTT_SERVICE_ADMIN: string;
61
+ static ROLE_NOTIFICATION_2_ADMIN: string;
62
+ static ROLE_OPTION_MANAGEMENT_ADMIN: string;
63
+ static ROLE_OPTION_MANAGEMENT_READ: string;
64
+ static ROLE_PROVISIONING_CREATE: string;
65
+ static ROLE_PROVISIONING_READ: string;
66
+ static ROLE_PROVISIONING_UPDATE: string;
67
+ static ROLE_REMOTE_ACCESS_ADMIN: string;
68
+ static ROLE_RETENTION_RULE_ADMIN: string;
69
+ static ROLE_RETENTION_RULE_READ: string;
70
+ static ROLE_SCHEDULE_REPORT_ADMIN: string;
71
+ static ROLE_SIMULATOR_ADMIN: string;
72
+ static ROLE_SMARTGROUP_ADMIN: string;
73
+ static ROLE_SMARTGROUP_CREATE: string;
74
+ static ROLE_SMARTGROUP_UPDATE: string;
75
+ static ROLE_SMARTRULE_ADMIN: string;
76
+ static ROLE_SMARTRULE_READ: string;
77
+ static ROLE_SMS_ADMIN: string;
78
+ static ROLE_SMS_READ: string;
79
+ static ROLE_TENANT_ADMIN: string;
80
+ static ROLE_TENANT_MANAGEMENT_ADMIN: string;
81
+ static ROLE_TENANT_MANAGEMENT_CREATE: string;
82
+ static ROLE_TENANT_MANAGEMENT_READ: string;
83
+ static ROLE_TENANT_MANAGEMENT_UPDATE: string;
84
+ static ROLE_TENANT_STATISTICS_READ: string;
85
+ static ROLE_USER_MANAGEMENT_ADMIN: string;
86
+ static ROLE_USER_MANAGEMENT_CREATE: string;
87
+ static ROLE_USER_MANAGEMENT_OWN_ADMIN: string;
88
+ static ROLE_USER_MANAGEMENT_OWN_READ: string;
89
+ static ROLE_USER_MANAGEMENT_READ: string;
23
90
  constructor(appState: AppStateService, inventory: InventoryService, user: UserService);
24
91
  /**
25
92
  * Checks if the current user has write permissions for the given mo.
26
93
  * (either through global role, individual device permissions or via inventory roles).
27
94
  *
28
- * @param {array} roleIds Array of roles which the current user should have.
95
+ * @param roleIds The array of role ids to check if the current user have at least one of them.
29
96
  * @param {IManagedObject | IIdentified} mo The managed object for which we are checking whether the user has access.
30
97
  * @param {CanEditConfig} config A configuration object that can take the following values:
31
98
  * - `skipRolesCheck`: `boolean` - skips roles check,
@@ -34,7 +101,7 @@ export declare class Permissions {
34
101
  * UI will make a query to backend whether the user can edit the managed object.
35
102
  * A rejection from BE indicates a lack of permission.
36
103
  */
37
- canEdit(roleIds: any, mo: IManagedObject | IIdentified, config?: CanEditConfig): Promise<boolean>;
104
+ canEdit(roleIds: string[], mo: IManagedObject | IIdentified, config?: CanEditConfig): Promise<boolean>;
38
105
  hasRole(roleId: string): boolean;
39
106
  hasAllRoles(roleIds: string[]): boolean;
40
107
  hasAnyRole(roleIds: string[]): boolean;
@@ -6,7 +6,7 @@ export declare class TenantUiService {
6
6
  private userService;
7
7
  private appStateService;
8
8
  readonly MANAGEMENT = "management";
9
- readonly ROLE_TENANT_MANAGEMENT_READ = "ROLE_TENANT_MANAGEMENT_READ";
9
+ readonly ROLE_TENANT_MANAGEMENT_READ: string;
10
10
  constructor(userService: UserService, appStateService: AppStateService);
11
11
  /**
12
12
  * Returns current tenant
@@ -79,7 +79,7 @@ export declare const MESSAGES: {
79
79
  '^Can not activate a certificate which is either expired or not yet valid$': {
80
80
  gettext: "Cannot activate a certificate which is either expired or not yet valid.";
81
81
  };
82
- '^Cannot add certificate - certificate with (.+?) fingerprint already exists. : Certificate with (.+?) fingerprint already exists.': {
82
+ '^Cannot add certificate - certificate with (.+?) fingerprint already exists. : Certificate with (.+?) fingerprint already exists.$': {
83
83
  gettext: "Could not add certificate. Certificate with {{fingerprint}} fingerprint already exists.";
84
84
  placeholders: {
85
85
  fingerprint: string;
@@ -434,7 +434,7 @@ export declare const MESSAGES: {
434
434
  applicationId: string;
435
435
  };
436
436
  };
437
- '^Http status code: 404\n{error="options/Not Found",message="Unable to find option by given key: sigfox-agent/provider.token",info="https://www.cumulocity.com/guides/reference-guide/#error_reporting",details="null"}': {
437
+ '^Http status code: 404\n{error="options/Not Found",message="Unable to find option by given key: sigfox-agent/provider.token",info="https://www.cumulocity.com/guides/reference-guide/#error_reporting",details="null"}$': {
438
438
  gettext: "Unable to find option by given key: sigfox-agent/provider.token";
439
439
  };
440
440
  '^Failed to delete application. : Cannot remove application assigned to other tenants.$': {
@@ -555,7 +555,7 @@ export declare const MESSAGES: {
555
555
  '^Inventory Role removed$': {
556
556
  gettext: "Inventory role removed";
557
557
  };
558
- '^Inventory Role (.+?) removed': {
558
+ '^Inventory Role (.+?) removed$': {
559
559
  gettext: "Inventory role \"{{name}}\" deleted.";
560
560
  placeholders: {
561
561
  name: string;
@@ -564,16 +564,16 @@ export declare const MESSAGES: {
564
564
  '^Inventory Role updated$': {
565
565
  gettext: "Inventory role updated";
566
566
  };
567
- '^Inventory Role (.+?) updated': {
567
+ '^Inventory Role (.+?) updated$': {
568
568
  gettext: "Inventory role \"{{name}}\" updated.";
569
569
  placeholders: {
570
570
  name: string;
571
571
  };
572
572
  };
573
- '^I/O error: Connection refused; nested exception is Connection refused : Connection refused': {
573
+ '^I/O error: Connection refused; nested exception is Connection refused : Connection refused$': {
574
574
  gettext: "Connection refused";
575
575
  };
576
- '^I/O error: Read timed out; nested exception is Read timed out : Read timed out': {
576
+ '^I/O error: Read timed out; nested exception is Read timed out : Read timed out$': {
577
577
  gettext: "Read timed out";
578
578
  };
579
579
  '^Log file requested$': {
@@ -649,7 +649,7 @@ export declare const MESSAGES: {
649
649
  '^Operation updated$': {
650
650
  gettext: "Operation updated.";
651
651
  };
652
- "^Operation created: status='(.+?)'.": {
652
+ "^Operation created: status='(.+?)'.$": {
653
653
  gettext: "Operation created: status: \"{{ status | translate }}\".";
654
654
  placeholders: {
655
655
  status: string;
@@ -673,13 +673,13 @@ export declare const MESSAGES: {
673
673
  option: string;
674
674
  };
675
675
  };
676
- '^Owner field error. : Cannot introduce cyclic dependency.': {
676
+ '^Owner field error. : Cannot introduce cyclic dependency.$': {
677
677
  gettext: "Could not introduce cyclic ownership dependency.";
678
678
  };
679
679
  '^Password change is temporary blocked.$': {
680
680
  gettext: "Password change is temporarily blocked.";
681
681
  };
682
- '^Password cipher does not match': {
682
+ '^Password cipher does not match$': {
683
683
  gettext: "Password cipher does not match.";
684
684
  };
685
685
  '^Platform application cannot be added to, nor removed from any tenant.$': {
@@ -688,7 +688,7 @@ export declare const MESSAGES: {
688
688
  '^Private key must be provided in KEY_PAIR credentials$': {
689
689
  gettext: "Private key must be provided when \"Public/private keys\" option is selected.";
690
690
  };
691
- '^Private key cipher does not match': {
691
+ '^Private key cipher does not match$': {
692
692
  gettext: "Private key cipher does not match";
693
693
  };
694
694
  '^Protocol "(.+?)" does not support "(.+?)" credentials type$': {
@@ -725,13 +725,13 @@ export declare const MESSAGES: {
725
725
  id: string;
726
726
  };
727
727
  };
728
- '^Retrieve configuration snapshot from device (.+?)': {
728
+ '^Retrieve configuration snapshot from device (.+?)$': {
729
729
  gettext: "Retrieve configuration snapshot from device {{deviceName}}";
730
730
  placeholders: {
731
731
  deviceName: string;
732
732
  };
733
733
  };
734
- '^Retrieve (.+?) configuration snapshot from device (.+?)': {
734
+ '^Retrieve (.+?) configuration snapshot from device (.+?)$': {
735
735
  gettext: "Retrieve {{configurationType}} configuration snapshot from device {{deviceName}}";
736
736
  placeholders: {
737
737
  configurationType: string;
@@ -745,7 +745,7 @@ export declare const MESSAGES: {
745
745
  scaleNumber: string;
746
746
  };
747
747
  };
748
- '^Send configuration snapshot (.+?) of configuration type (.+?) to device (.+?)': {
748
+ '^Send configuration snapshot (.+?) of configuration type (.+?) to device (.+?)$': {
749
749
  gettext: "Send configuration snapshot {{snapshotName}} of configuration type {{configurationType}} to device {{deviceName}}";
750
750
  placeholders: {
751
751
  snapshotName: string;
@@ -753,7 +753,7 @@ export declare const MESSAGES: {
753
753
  deviceName: string;
754
754
  };
755
755
  };
756
- '^Send configuration snapshot (.+?) to device (.+?)': {
756
+ '^Send configuration snapshot (.+?) to device (.+?)$': {
757
757
  gettext: "Send configuration snapshot {{snapshotName}} to device {{deviceName}}";
758
758
  placeholders: {
759
759
  snapshotName: string;
@@ -981,25 +981,25 @@ export declare const MESSAGES: {
981
981
  inventoryAssignment: string;
982
982
  };
983
983
  };
984
- 'applications \\[(.+?)\\] added$': {
984
+ 'applications \\[(.+?)\\] added': {
985
985
  gettext: "applications [{{applicationsList}}] added";
986
986
  placeholders: {
987
987
  applicationsList: string;
988
988
  };
989
989
  };
990
- 'applications \\[(.+?)\\] removed$': {
990
+ 'applications \\[(.+?)\\] removed': {
991
991
  gettext: "applications [{{applicationsList}}] removed";
992
992
  placeholders: {
993
993
  applicationsList: string;
994
994
  };
995
995
  };
996
- 'global roles \\[(.+?)\\] added$': {
996
+ 'global roles \\[(.+?)\\] added': {
997
997
  gettext: "global roles [{{globalRolesList}}] added";
998
998
  placeholders: {
999
999
  globalRolesList: string;
1000
1000
  };
1001
1001
  };
1002
- 'global roles \\[(.+?)\\] removed$': {
1002
+ 'global roles \\[(.+?)\\] removed': {
1003
1003
  gettext: "global roles [{{globalRolesList}}] removed";
1004
1004
  placeholders: {
1005
1005
  globalRolesList: string;
@@ -1048,7 +1048,7 @@ export declare const MESSAGES: {
1048
1048
  '^You have reached devices limit. No more devices can be registered.$': {
1049
1049
  gettext: "You reached devices limit. No more devices can be registered.";
1050
1050
  };
1051
- '^(.+) succeeded for volume "(.+)"': {
1051
+ '^(.+) succeeded for volume "(.+)"$': {
1052
1052
  gettext: "Operation \"{{operation}}\" succeeded for volume \"{{volume}}\".";
1053
1053
  placeholders: {
1054
1054
  operation: string;
@@ -1738,7 +1738,7 @@ export declare const MESSAGES: {
1738
1738
  '^This command returns a list of shell commands with description that can be created for the Lwm2m device connector\\.$': {
1739
1739
  gettext: "This command returns a list of shell commands with description that can be created for the LWM2M device connector.";
1740
1740
  };
1741
- '^The following operations are supported:': {
1741
+ '^The following operations are supported:$': {
1742
1742
  gettext: "The following operations are supported:";
1743
1743
  };
1744
1744
  '^PSK template$': {
@@ -1,6 +1,6 @@
1
1
  import { Inject, Injectable, Optional } from '@angular/core';
2
2
  import { InventoryService, QueriesUtil, UserService } from '@c8y/client';
3
- import { AlertService, AppStateService, BreadcrumbService, GroupFragment, ModalService, OptionsService } from '@c8y/ngx-components';
3
+ import { AlertService, AppStateService, BreadcrumbService, GroupFragment, ModalService, OptionsService, Permissions } from '@c8y/ngx-components';
4
4
  import { ApiService } from '@c8y/ngx-components/api';
5
5
  import { empty } from 'rxjs';
6
6
  import { filter, mergeMap } from 'rxjs/operators';
@@ -89,7 +89,10 @@ export class AssetNodeService {
89
89
  };
90
90
  const groupFilter = { ...defaultFilter, ...customFilter };
91
91
  // due to BE performance limitations we do not allow filtering and sorting for a user without inventory roles
92
- if (!this.user.hasRole(this.appState.currentUser.value, 'ROLE_INVENTORY_READ')) {
92
+ if (!this.user.hasAnyRole(this.appState.currentUser.value, [
93
+ Permissions.ROLE_INVENTORY_READ,
94
+ Permissions.ROLE_MANAGED_OBJECT_READ
95
+ ])) {
93
96
  delete groupFilter.query;
94
97
  Object.assign(groupFilter, {
95
98
  fragmentType: GroupFragment.groupFragmentType,
@@ -225,7 +228,11 @@ export class AssetNodeService {
225
228
  * @param dropOnRoot Is the drop performed on the root node
226
229
  */
227
230
  canDropNode(dropOnRoot) {
228
- return (!dropOnRoot || this.user.hasRole(this.appState.currentUser.value, 'ROLE_INVENTORY_ADMIN'));
231
+ return (!dropOnRoot ||
232
+ this.user.hasAnyRole(this.appState.currentUser.value, [
233
+ Permissions.ROLE_INVENTORY_ADMIN,
234
+ Permissions.ROLE_MANAGED_OBJECT_ADMIN
235
+ ]));
229
236
  }
230
237
  /**
231
238
  * There could be multiple breadcrumbs for devices,
@@ -278,4 +285,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
278
285
  type: Inject,
279
286
  args: [ASSET_NAVIGATOR_CONFIG]
280
287
  }] }, { type: i4.DeviceGroupService }]; } });
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbm9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXNzZXRzLW5hdmlnYXRvci9hc3NldC1ub2RlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBa0IsZ0JBQWdCLEVBQVcsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFlBQVksRUFHWixjQUFjLEVBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUF3QixzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7QUFVckQsTUFBTSxPQUFPLGdCQUFnQjtJQU8zQixZQUNTLFNBQTJCLEVBQzNCLFVBQXNCLEVBQ3RCLEtBQW1CLEVBQ25CLEtBQW1CLEVBQ2hCLGlCQUFvQyxFQUNwQyxJQUFpQixFQUNqQixRQUF5QixFQUN6QixjQUE4QixFQUNXLFlBQWtDLEVBQzNFLGtCQUFzQztRQVR6QyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFVBQUssR0FB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QU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLGFBQWEsR0FBRyxHQUFHLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztTQUNsRDthQUFNO1lBQ0wsYUFBYSxHQUFHLE1BQU0sSUFBSSxNQUFNLElBQUksRUFBRSxDQUFDO1NBQ3hDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzs7NkdBalRVLGdCQUFnQiw2UEFnQkwsc0JBQXNCO2lIQWhCakMsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFpQkksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdCwgUXVlcmllc1V0aWwsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWxlcnRTZXJ2aWNlLFxuICBBcHBTdGF0ZVNlcnZpY2UsXG4gIEJyZWFkY3J1bWJTZXJ2aWNlLFxuICBHcm91cEZyYWdtZW50LFxuICBNb2RhbFNlcnZpY2UsXG4gIE5hdmlnYXRvck5vZGUsXG4gIE5hdmlnYXRvck5vZGVEYXRhLFxuICBPcHRpb25zU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FwaSc7XG5pbXBvcnQgeyBlbXB0eSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFzc2V0Tm9kZSB9IGZyb20gJy4vYXNzZXQtbm9kZSc7XG5pbXBvcnQgeyBBc3NldE5hdmlnYXRvckNvbmZpZywgQVNTRVRfTkFWSUdBVE9SX0NPTkZJRyB9IGZyb20gJy4vYXNzZXQtbm9kZS1jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0dyb3VwTm9kZSB9IGZyb20gJy4vZHluYW1pYy1ncm91cC1ub2RlJztcbmltcG9ydCB7IERldmljZUdyb3VwU2VydmljZSB9IGZyb20gJy4vZ3JvdXAuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXROb2RlTW8ge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFzc2V0Tm9kZVNlcnZpY2Uge1xuICByb290Tm9kZTogQXNzZXROb2RlO1xuICBmaXJzdFVybCA9IHRydWU7XG4gIGRyYWdnZWREYXRhOiBBc3NldE5vZGU7XG4gIHF1ZXJpZXNVdGlsOiBRdWVyaWVzVXRpbDtcbiAgcHJvdGVjdGVkIFBBR0VfU0laRSA9IDIwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHVibGljIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UsXG4gICAgcHVibGljIG1vZGFsOiBNb2RhbFNlcnZpY2UsXG4gICAgcHVibGljIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGJyZWFkY3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdXNlcjogVXNlclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFTU0VUX05BVklHQVRPUl9DT05GSUcpIHB1YmxpYyBtb2R1bGVDb25maWc6IEFzc2V0TmF2aWdhdG9yQ29uZmlnLFxuICAgIHByb3RlY3RlZCBkZXZpY2VHcm91cFNlcnZpY2U6IERldmljZUdyb3VwU2VydmljZVxuICApIHtcbiAgICB0aGlzLm1vZHVsZUNvbmZpZyA9IHtcbiAgICAgIHJvb3ROb2RlUHJpb3JpdHk6IDIwMDAsXG4gICAgICAuLi4obW9kdWxlQ29uZmlnIHx8IHt9KVxuICAgIH07XG4gICAgdGhpcy5xdWVyaWVzVXRpbCA9IG5ldyBRdWVyaWVzVXRpbCgpO1xuICB9XG5cbiAgaWNvbihtbzogSU1hbmFnZWRPYmplY3QsIG9wZW4/OiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaWNvbihtbywgb3Blbik7XG4gIH1cblxuICBpc0dyb3VwKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0dyb3VwKG1vKTtcbiAgfVxuXG4gIGlzRHluYW1pY0dyb3VwKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0R5bmFtaWNHcm91cChtbyk7XG4gIH1cblxuICBpc0RhdGFCcm9rZXIobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmlzRGF0YUJyb2tlcihtbyk7XG4gIH1cblxuICBpc0RhdGFCcm9rZXJBY3RpdmUobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmlzRGF0YUJyb2tlckFjdGl2ZShtbyk7XG4gIH1cblxuICBpc0Fzc2V0KG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0Fzc2V0KG1vKTtcbiAgfVxuXG4gIGlzQW55R3JvdXAobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmlzQW55R3JvdXAobW8pO1xuICB9XG5cbiAgaXNEZXZpY2UobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmlzRGV2aWNlKG1vKTtcbiAgfVxuXG4gIGNyZWF0ZVJvb3ROb2RlKGNvbmZpZzogTmF2aWdhdG9yTm9kZURhdGEgPSB7fSkge1xuICAgIHRoaXMucm9vdE5vZGUgPSB0aGlzLmNyZWF0ZUFzc2V0Tm9kZSh7XG4gICAgICByb290OiB0cnVlLFxuICAgICAgLi4uY29uZmlnLFxuICAgICAgcHJpb3JpdHk6IHRoaXMubW9kdWxlQ29uZmlnLnJvb3ROb2RlUHJpb3JpdHksXG4gICAgICBmZWF0dXJlSWQ6ICdncm91cHMnXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMucm9vdE5vZGU7XG4gIH1cblxuICBjcmVhdGVEeW5hbWljR3JvdXBOb2RlKGNvbmZpZykge1xuICAgIHJldHVybiBuZXcgRHluYW1pY0dyb3VwTm9kZSh0aGlzLCBjb25maWcpO1xuICB9XG5cbiAgY3JlYXRlQXNzZXROb2RlKGNvbmZpZzogUGFydGlhbDxBc3NldE5vZGU+KSB7XG4gICAgcmV0dXJuIG5ldyBBc3NldE5vZGUodGhpcywgY29uZmlnKTtcbiAgfVxuXG4gIGNyZWF0ZUNoaWxkTm9kZShtYW5hZ2VkT2JqZWN0LCBjb25maWc6IFBhcnRpYWw8QXNzZXROb2RlPikge1xuICAgIGNvbnN0IHsgdHlwZSB9ID0gbWFuYWdlZE9iamVjdDtcbiAgICBjb25maWcubW8gPSBtYW5hZ2VkT2JqZWN0O1xuICAgIGlmICh0eXBlID09PSBHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cFR5cGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUR5bmFtaWNHcm91cE5vZGUoY29uZmlnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQXNzZXROb2RlKGNvbmZpZyk7XG4gIH1cblxuICBnZXRSb290Tm9kZXMoY3VzdG9tRmlsdGVyPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBkZWZhdWx0RmlsdGVyID0ge1xuICAgICAgcGFnZVNpemU6IHRoaXMuUEFHRV9TSVpFLFxuICAgICAgd2l0aENoaWxkcmVuOiBmYWxzZSxcbiAgICAgIG9ubHlSb290czogIXRoaXMub3B0aW9uc1NlcnZpY2UuZGlzYWJsZU9ubHlSb290c1F1ZXJ5LFxuICAgICAgcXVlcnk6IHRoaXMucXVlcmllc1V0aWwuYnVpbGRRdWVyeSh0aGlzLm5hdlJvb3RRdWVyeUZpbHRlcigpKVxuICAgIH07XG4gICAgY29uc3QgZ3JvdXBGaWx0ZXIgPSB7IC4uLmRlZmF1bHRGaWx0ZXIsIC4uLmN1c3RvbUZpbHRlciB9O1xuXG4gICAgLy8gZHVlIHRvIEJFIHBlcmZvcm1hbmNlIGxpbWl0YXRpb25zIHdlIGRvIG5vdCBhbGxvdyBmaWx0ZXJpbmcgYW5kIHNvcnRpbmcgZm9yIGEgdXNlciB3aXRob3V0IGludmVudG9yeSByb2xlc1xuICAgIGlmICghdGhpcy51c2VyLmhhc1JvbGUodGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZSwgJ1JPTEVfSU5WRU5UT1JZX1JFQUQnKSkge1xuICAgICAgZGVsZXRlIGdyb3VwRmlsdGVyLnF1ZXJ5O1xuICAgICAgT2JqZWN0LmFzc2lnbihncm91cEZpbHRlciwge1xuICAgICAgICBmcmFnbWVudFR5cGU6IEdyb3VwRnJhZ21lbnQuZ3JvdXBGcmFnbWVudFR5cGUsXG4gICAgICAgIG9ubHlSb290czogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmludmVudG9yeS5saXN0KHRoaXMuY3JlYXRlRmlsdGVyKGdyb3VwRmlsdGVyKSk7XG4gIH1cblxuICBnZXRBbGxJbnZlbnRvcmllcyhjdXN0b21GaWx0ZXI/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGRlZmF1bHRGaWx0ZXIgPSB7XG4gICAgICBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUsXG4gICAgICB3aXRoQ2hpbGRyZW46IGZhbHNlXG4gICAgfTtcbiAgICBjb25zdCBncm91cEZpbHRlciA9IHsgLi4uZGVmYXVsdEZpbHRlciwgLi4uY3VzdG9tRmlsdGVyIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5Lmxpc3QodGhpcy5jcmVhdGVGaWx0ZXIoZ3JvdXBGaWx0ZXIpKTtcbiAgfVxuXG4gIGdldEdyb3VwSXRlbXMobW9JZDogc3RyaW5nLCBleHRyYUZpbHRlcjogb2JqZWN0ID0ge30sIHdpdGhDaGlsZHJlbiA9IGZhbHNlLCBmaWx0ZXJRdWVyeSA9ICcnKSB7XG4gICAgY29uc3QgcXVlcnlGaWx0ZXIgPSB7XG4gICAgICB3aXRoQ2hpbGRyZW4sXG4gICAgICBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUsXG4gICAgICBxdWVyeTogdGhpcy5ncm91cFF1ZXJ5RmlsdGVyKG1vSWQsIGZpbHRlclF1ZXJ5KVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5LmNoaWxkQXNzZXRzTGlzdChtb0lkLCB7IC4uLnF1ZXJ5RmlsdGVyLCAuLi5leHRyYUZpbHRlciB9KTtcbiAgfVxuXG4gIGdldFVuYXNzaWduZWREZXZpY2VzKHdpdGhDaGlsZHJlbiA9IGZhbHNlLCBmaWx0ZXJRdWVyeSA9ICcnKSB7XG4gICAgY29uc3QgcXVlcnlGaWx0ZXI6IGFueSA9IHtcbiAgICAgIGZyYWdtZW50VHlwZTogJ2M4eV9Jc0RldmljZScsXG4gICAgICBvbmx5Um9vdHM6IHRydWUsXG4gICAgICB3aXRoQ2hpbGRyZW4sXG4gICAgICBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUsXG4gICAgICBxOiB0aGlzLmdldFVuYXNzaWduZWREZXZpY2VzUXVlcnlTdHIoZmlsdGVyUXVlcnkpXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnkubGlzdCh0aGlzLmNyZWF0ZUZpbHRlcihxdWVyeUZpbHRlcikpO1xuICB9XG5cbiAgZ2V0RHluYW1pY0dyb3VwSXRlbXMoZ3JvdXBRdWVyeTogc3RyaW5nLCBmaWx0ZXJPYmo6IGFueSA9IHt9KSB7XG4gICAgY29uc3QgeyBxdWVyeSwgLi4ucXVlcnlQYXJhbXMgfSA9IGZpbHRlck9iajtcbiAgICBjb25zdCBvcmRlckJ5UXVlcnkgPSBxdWVyeTtcbiAgICBjb25zdCBxdWVyeUZpbHRlciA9IHtcbiAgICAgIHE6IHRoaXMuYnVpbGRDb21iaW5lZFF1ZXJ5KGdyb3VwUXVlcnksIG9yZGVyQnlRdWVyeSksXG4gICAgICAuLi5xdWVyeVBhcmFtc1xuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5Lmxpc3QodGhpcy5jcmVhdGVGaWx0ZXIocXVlcnlGaWx0ZXIpKTtcbiAgfVxuXG4gIGdldERldmljZUNoaWxkcmVuKFxuICAgIG1vSWQ6IHN0cmluZyxcbiAgICBleHRyYUZpbHRlcjogb2JqZWN0ID0ge30sXG4gICAgZmlsdGVyUXVlcnkgPSAnJyxcbiAgICB3aXRoQ2hpbGRyZW4gPSBmYWxzZVxuICApIHtcbiAgICBjb25zdCBxdWVyeUZpbHRlciA9IHtcbiAgICAgIHdpdGhDaGlsZHJlbixcbiAgICAgIHBhZ2VTaXplOiB0aGlzLlBBR0VfU0laRSxcbiAgICAgIHF1ZXJ5OiB0aGlzLmdyb3VwUXVlcnlGaWx0ZXIobW9JZCwgZmlsdGVyUXVlcnkpXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnkuY2hpbGREZXZpY2VzTGlzdChtb0lkLCB7IC4uLnF1ZXJ5RmlsdGVyLCAuLi5leHRyYUZpbHRlciB9KTtcbiAgfVxuXG4gIGdldFVuYXNzaWduZWREZXZpY2VzUXVlcnlTdHIoZmlsdGVyUXVlcnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGhhc0dyb3VwSWQgPSBmaWx0ZXJRdWVyeS5pbmNsdWRlcygnYnlncm91cGlkJyk7XG4gICAgLy8gRmV0Y2ggYWxsIHVuYXNzaWduZWQgZGV2aWNlcy5cbiAgICBjb25zdCBkZWZhdWx0UXVlcnlTdHIgPSAnJG9yZGVyYnk9bmFtZSc7XG5cbiAgICAvLyBmaWx0ZXJRdWVyeSBpcyBhIGN1c3RvbSBxdWVyeSB0byBmZXRjaCB1bmFzc2lnbmVkIGRldmljZXMgZmlsdGVyZWQgYnkgbmFtZS5cbiAgICByZXR1cm4gaGFzR3JvdXBJZCB8fCAhZmlsdGVyUXVlcnkgPyBkZWZhdWx0UXVlcnlTdHIgOiBmaWx0ZXJRdWVyeTtcbiAgfVxuXG4gIGdyb3VwUXVlcnlGaWx0ZXIobW9JZDogc3RyaW5nLCBmaWx0ZXJRdWVyeT86IHN0cmluZykge1xuICAgIGlmICghZmlsdGVyUXVlcnkpIHtcbiAgICAgIHJldHVybiBgJGZpbHRlcj0oYnlncm91cGlkKCR7bW9JZH0pKSRvcmRlcmJ5PW5hbWVgO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyUXVlcnk7XG4gIH1cblxuICBuYXZSb290UXVlcnlGaWx0ZXIoKSB7XG4gICAgY29uc3QgbmF2Um9vdEZpbHRlciA9IHRoaXMucm9vdFF1ZXJ5RmlsdGVyKCk7XG4gICAgbmF2Um9vdEZpbHRlci5fX29yZGVyYnkgPSBbeyBuYW1lOiAxIH1dO1xuICAgIHJldHVybiBuYXZSb290RmlsdGVyO1xuICB9XG5cbiAgcm9vdFF1ZXJ5RmlsdGVyKCkge1xuICAgIGNvbnN0IHsgbW9kdWxlQ29uZmlnIH0gPSB0aGlzO1xuICAgIGNvbnN0IHJvb3RGaWx0ZXIgPSB0aGlzLm9wdGlvbnNTZXJ2aWNlLmRpc2FibGVPbmx5Um9vdHNRdWVyeVxuICAgICAgPyB7XG4gICAgICAgICAgX19maWx0ZXI6IHtcbiAgICAgICAgICAgIHR5cGU6IEdyb3VwRnJhZ21lbnQuZ3JvdXBUeXBlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBfX29yZGVyYnk6IFtdXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIF9fZmlsdGVyOiB7XG4gICAgICAgICAgICBfX2hhczogR3JvdXBGcmFnbWVudC5ncm91cEZyYWdtZW50VHlwZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgX19vcmRlcmJ5OiBbXVxuICAgICAgICB9O1xuICAgIGlmIChtb2R1bGVDb25maWcuc21hcnRHcm91cHMpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5RmlsdGVyID0ge1xuICAgICAgICBfX2ZpbHRlcjoge1xuICAgICAgICAgIF9fYW5kOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IEdyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwVHlwZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgX19oYXM6IEdyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwRnJhZ21lbnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IF9fbm90OiB7IF9faGFzOiBgJHtHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cEZyYWdtZW50fS5pbnZpc2libGVgIH0gfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMucXVlcmllc1V0aWwuYWRkT3JGaWx0ZXIocm9vdEZpbHRlciwgcXVlcnlGaWx0ZXIpO1xuICAgIH1cbiAgICByZXR1cm4gcm9vdEZpbHRlcjtcbiAgfVxuXG4gIG9uVXBkYXRlKHsgbW8sIHJvb3QgfSkge1xuICAgIGlmIChtby5pZCkge1xuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgICAuaG9va1Jlc3BvbnNlKFxuICAgICAgICAgICh7IHVybCwgbWV0aG9kIH0pID0+XG4gICAgICAgICAgICBbJ1BVVCcsICdERUxFVEUnLCAnUE9TVCddLmluY2x1ZGVzKG1ldGhvZCkgJiZcbiAgICAgICAgICAgIFJlZ0V4cChgKChpbnZlbnRvcnkvbWFuYWdlZE9iamVjdHMpfChzZXJ2aWNlL3NtYXJ0Z3JvdXAvc21hcnRncm91cHMpKS8ke21vLmlkfWApLnRlc3QoXG4gICAgICAgICAgICAgIHVybFxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5kcmFnZ2VkRGF0YSksXG4gICAgICAgICAgbWVyZ2VNYXAodGhpcy5hcGlTZXJ2aWNlLnJlc29sdmVEYXRhPElNYW5hZ2VkT2JqZWN0PiksXG4gICAgICAgICAgZmlsdGVyKHJlc3BvbnNlID0+ICFyZXNwb25zZT8uZGF0YT8uYzh5X0Rhc2hib2FyZClcbiAgICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHJvb3QpIHtcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgICAgLmhvb2tSZXNwb25zZShcbiAgICAgICAgICAoeyB1cmwsIG1ldGhvZCB9KSA9PlxuICAgICAgICAgICAgUmVnRXhwKCcoKGludmVudG9yeS9tYW5hZ2VkT2JqZWN0cyl8KHNlcnZpY2Uvc21hcnRncm91cC9zbWFydGdyb3VwcykpLz8kJykudGVzdCh1cmwpICYmXG4gICAgICAgICAgICBtZXRob2QgPT09ICdQT1NUJ1xuICAgICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKHRoaXMuYXBpU2VydmljZS5yZXNvbHZlRGF0YTxJTWFuYWdlZE9iamVjdD4pLFxuICAgICAgICAgIGZpbHRlcihyZXNwb25zZSA9PiB0aGlzLmlzTmV3TWFuYWdlZE9iamVjdFJvb3QocmVzcG9uc2UpKVxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZW1wdHkoKTtcbiAgICB9XG4gIH1cblxuICBpc05ld01hbmFnZWRPYmplY3RSb290KHJlc3BvbnNlOiBQYXJ0aWFsPElSZXN1bHQ8SU1hbmFnZWRPYmplY3Q+PiA9IHt9KSB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSByZXNwb25zZTtcbiAgICBsZXQgaXNSb290QXNzZXQgPSBmYWxzZTtcblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlzUm9vdEFzc2V0ID0gISFkYXRhW0dyb3VwRnJhZ21lbnQuZ3JvdXBGcmFnbWVudFR5cGVdO1xuICAgICAgaWYgKCFpc1Jvb3RBc3NldCAmJiB0aGlzLm1vZHVsZUNvbmZpZy5zbWFydEdyb3Vwcykge1xuICAgICAgICBpc1Jvb3RBc3NldCA9ICEhZGF0YVtHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cEZyYWdtZW50XTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzUm9vdEFzc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGl0IGlzIHBvc3NpYmxlIHRvIGRyb3AgYSBub2RlIGFmdGVyIGRyYWdnaW5nLlxuICAgKiBAcGFyYW0gZHJvcE9uUm9vdCBJcyB0aGUgZHJvcCBwZXJmb3JtZWQgb24gdGhlIHJvb3Qgbm9kZVxuICAgKi9cbiAgY2FuRHJvcE5vZGUoZHJvcE9uUm9vdDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhZHJvcE9uUm9vdCB8fCB0aGlzLnVzZXIuaGFzUm9sZSh0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlLCAnUk9MRV9JTlZFTlRPUllfQURNSU4nKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGhlcmUgY291bGQgYmUgbXVsdGlwbGUgYnJlYWRjcnVtYnMgZm9yIGRldmljZXMsXG4gICAqIHNvIHdlIHNldCBhIHByZWZlcnJlZCBvbmUgb24gY2xpY2sgb24gYSBkZXZpY2UuXG4gICAqIEBwYXJhbSBwYXJlbnRzIFRoZSBwYXJlbnQgbm9kZXMgb2YgdGhlIGRldmljZSB0byBzZWxlY3QgdGhlIHByZWZlcmVkIG9uZS5cbiAgICovXG4gIHByZWZlckJyZWFkY3J1bWIocGFyZW50czogTmF2aWdhdG9yTm9kZVtdKSB7XG4gICAgaWYgKHBhcmVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLmJyZWFkY3J1bWJTZXJ2aWNlLnNlbGVjdFByZWZlcnJlZEJ5UGF0aChwYXJlbnRzWzBdLnBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVGaWx0ZXIoZXh0cmFQYXJhbXM6IGFueSA9IHt9KSB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgY3VycmVudFBhZ2U6IDEsXG4gICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZSxcbiAgICAgIHBhZ2VTaXplOiAxMFxuICAgIH07XG4gICAgcmV0dXJuIHsgLi4ucGFyYW1zLCAuLi5leHRyYVBhcmFtcyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENvbWJpbmVkUXVlcnkocXVlcnlBLCBxdWVyeUIpIHtcbiAgICBsZXQgY29tYmluZWRRdWVyeTtcbiAgICBpZiAocXVlcnlBICYmIHF1ZXJ5Qikge1xuICAgICAgY29uc3QgZmlsdGVyUXVlcnkgPSB0aGlzLnF1ZXJpZXNVdGlsLmJ1aWxkUXVlcnkoW1xuICAgICAgICB7XG4gICAgICAgICAgX191c2VGaWx0ZXJRdWVyeVN0cmluZzogcXVlcnlBXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBfX3VzZUZpbHRlclF1ZXJ5U3RyaW5nOiBxdWVyeUJcbiAgICAgICAgfVxuICAgICAgXSk7XG4gICAgICBjb25zdCBvcmJlckJ5UXVlcnkgPSB0aGlzLnF1ZXJpZXNVdGlsLmV4dHJhY3RBbmRNZXJnZU9yZGVyQnlzKFtxdWVyeUEsIHF1ZXJ5Ql0pO1xuICAgICAgY29tYmluZWRRdWVyeSA9IGAke2ZpbHRlclF1ZXJ5fSAke29yYmVyQnlRdWVyeX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21iaW5lZFF1ZXJ5ID0gcXVlcnlBIHx8IHF1ZXJ5QiB8fCAnJztcbiAgICB9XG4gICAgcmV0dXJuIGNvbWJpbmVkUXVlcnk7XG4gIH1cbn1cbiJdfQ==
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbm9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXNzZXRzLW5hdmlnYXRvci9hc3NldC1ub2RlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBa0IsZ0JBQWdCLEVBQVcsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFlBQVksRUFHWixjQUFjLEVBQ2QsV0FBVyxFQUNaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBd0Isc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBVXJELE1BQU0sT0FBTyxnQkFBZ0I7SUFPM0IsWUFDUyxTQUEyQixFQUMzQixVQUFzQixFQUN0QixLQUFtQixFQUNuQixLQUFtQixFQUNoQixpQkFBb0MsRUFDcEMsSUFBaUIsRUFDakIsUUFBeUIsRUFDekIsY0FBOEIsRUFDVyxZQUFrQyxFQUMzRSxrQkFBc0M7UUFUekMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0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RSxzQkFBc0IsRUFBRSxNQUFNO2lCQUMvQjthQUNGLENBQUMsQ0FBQztZQUNILE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNoRixhQUFhLEdBQUcsR0FBRyxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7U0FDbEQ7YUFBTTtZQUNMLGFBQWEsR0FBRyxNQUFNLElBQUksTUFBTSxJQUFJLEVBQUUsQ0FBQztTQUN4QztRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7OzZHQTFUVSxnQkFBZ0IsNlBBZ0JMLHNCQUFzQjtpSEFoQmpDLGdCQUFnQixjQUZmLE1BQU07MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBaUJJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UsIElSZXN1bHQsIFF1ZXJpZXNVdGlsLCBVc2VyU2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBCcmVhZGNydW1iU2VydmljZSxcbiAgR3JvdXBGcmFnbWVudCxcbiAgTW9kYWxTZXJ2aWNlLFxuICBOYXZpZ2F0b3JOb2RlLFxuICBOYXZpZ2F0b3JOb2RlRGF0YSxcbiAgT3B0aW9uc1NlcnZpY2UsXG4gIFBlcm1pc3Npb25zXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYXBpJztcbmltcG9ydCB7IGVtcHR5IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXNzZXROb2RlIH0gZnJvbSAnLi9hc3NldC1ub2RlJztcbmltcG9ydCB7IEFzc2V0TmF2aWdhdG9yQ29uZmlnLCBBU1NFVF9OQVZJR0FUT1JfQ09ORklHIH0gZnJvbSAnLi9hc3NldC1ub2RlLWNvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBEeW5hbWljR3JvdXBOb2RlIH0gZnJvbSAnLi9keW5hbWljLWdyb3VwLW5vZGUnO1xuaW1wb3J0IHsgRGV2aWNlR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi9ncm91cC5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBBc3NldE5vZGVNbyB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXNzZXROb2RlU2VydmljZSB7XG4gIHJvb3ROb2RlOiBBc3NldE5vZGU7XG4gIGZpcnN0VXJsID0gdHJ1ZTtcbiAgZHJhZ2dlZERhdGE6IEFzc2V0Tm9kZTtcbiAgcXVlcmllc1V0aWw6IFF1ZXJpZXNVdGlsO1xuICBwcm90ZWN0ZWQgUEFHRV9TSVpFID0gMjA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwdWJsaWMgYXBpU2VydmljZTogQXBpU2VydmljZSxcbiAgICBwdWJsaWMgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwdWJsaWMgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYnJlYWRjcnVtYlNlcnZpY2U6IEJyZWFkY3J1bWJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB1c2VyOiBVc2VyU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVNTRVRfTkFWSUdBVE9SX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogQXNzZXROYXZpZ2F0b3JDb25maWcsXG4gICAgcHJvdGVjdGVkIGRldmljZUdyb3VwU2VydmljZTogRGV2aWNlR3JvdXBTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMubW9kdWxlQ29uZmlnID0ge1xuICAgICAgcm9vdE5vZGVQcmlvcml0eTogMjAwMCxcbiAgICAgIC4uLihtb2R1bGVDb25maWcgfHwge30pXG4gICAgfTtcbiAgICB0aGlzLnF1ZXJpZXNVdGlsID0gbmV3IFF1ZXJpZXNVdGlsKCk7XG4gIH1cblxuICBpY29uKG1vOiBJTWFuYWdlZE9iamVjdCwgb3Blbj86IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyb3VwU2VydmljZS5pY29uKG1vLCBvcGVuKTtcbiAgfVxuXG4gIGlzR3JvdXAobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmlzR3JvdXAobW8pO1xuICB9XG5cbiAgaXNEeW5hbWljR3JvdXAobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmlzRHluYW1pY0dyb3VwKG1vKTtcbiAgfVxuXG4gIGlzRGF0YUJyb2tlcihtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaXNEYXRhQnJva2VyKG1vKTtcbiAgfVxuXG4gIGlzRGF0YUJyb2tlckFjdGl2ZShtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaXNEYXRhQnJva2VyQWN0aXZlKG1vKTtcbiAgfVxuXG4gIGlzQXNzZXQobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuZGV2aWNlR3JvdXBTZXJ2aWNlLmlzQXNzZXQobW8pO1xuICB9XG5cbiAgaXNBbnlHcm91cChtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaXNBbnlHcm91cChtbyk7XG4gIH1cblxuICBpc0RldmljZShtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VHcm91cFNlcnZpY2UuaXNEZXZpY2UobW8pO1xuICB9XG5cbiAgY3JlYXRlUm9vdE5vZGUoY29uZmlnOiBOYXZpZ2F0b3JOb2RlRGF0YSA9IHt9KSB7XG4gICAgdGhpcy5yb290Tm9kZSA9IHRoaXMuY3JlYXRlQXNzZXROb2RlKHtcbiAgICAgIHJvb3Q6IHRydWUsXG4gICAgICAuLi5jb25maWcsXG4gICAgICBwcmlvcml0eTogdGhpcy5tb2R1bGVDb25maWcucm9vdE5vZGVQcmlvcml0eSxcbiAgICAgIGZlYXR1cmVJZDogJ2dyb3VwcydcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5yb290Tm9kZTtcbiAgfVxuXG4gIGNyZWF0ZUR5bmFtaWNHcm91cE5vZGUoY29uZmlnKSB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljR3JvdXBOb2RlKHRoaXMsIGNvbmZpZyk7XG4gIH1cblxuICBjcmVhdGVBc3NldE5vZGUoY29uZmlnOiBQYXJ0aWFsPEFzc2V0Tm9kZT4pIHtcbiAgICByZXR1cm4gbmV3IEFzc2V0Tm9kZSh0aGlzLCBjb25maWcpO1xuICB9XG5cbiAgY3JlYXRlQ2hpbGROb2RlKG1hbmFnZWRPYmplY3QsIGNvbmZpZzogUGFydGlhbDxBc3NldE5vZGU+KSB7XG4gICAgY29uc3QgeyB0eXBlIH0gPSBtYW5hZ2VkT2JqZWN0O1xuICAgIGNvbmZpZy5tbyA9IG1hbmFnZWRPYmplY3Q7XG4gICAgaWYgKHR5cGUgPT09IEdyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwVHlwZSkge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRHluYW1pY0dyb3VwTm9kZShjb25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVBc3NldE5vZGUoY29uZmlnKTtcbiAgfVxuXG4gIGdldFJvb3ROb2RlcyhjdXN0b21GaWx0ZXI/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGRlZmF1bHRGaWx0ZXIgPSB7XG4gICAgICBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUsXG4gICAgICB3aXRoQ2hpbGRyZW46IGZhbHNlLFxuICAgICAgb25seVJvb3RzOiAhdGhpcy5vcHRpb25zU2VydmljZS5kaXNhYmxlT25seVJvb3RzUXVlcnksXG4gICAgICBxdWVyeTogdGhpcy5xdWVyaWVzVXRpbC5idWlsZFF1ZXJ5KHRoaXMubmF2Um9vdFF1ZXJ5RmlsdGVyKCkpXG4gICAgfTtcbiAgICBjb25zdCBncm91cEZpbHRlciA9IHsgLi4uZGVmYXVsdEZpbHRlciwgLi4uY3VzdG9tRmlsdGVyIH07XG5cbiAgICAvLyBkdWUgdG8gQkUgcGVyZm9ybWFuY2UgbGltaXRhdGlvbnMgd2UgZG8gbm90IGFsbG93IGZpbHRlcmluZyBhbmQgc29ydGluZyBmb3IgYSB1c2VyIHdpdGhvdXQgaW52ZW50b3J5IHJvbGVzXG4gICAgaWYgKFxuICAgICAgIXRoaXMudXNlci5oYXNBbnlSb2xlKHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIudmFsdWUsIFtcbiAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfUkVBRCxcbiAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9SRUFEXG4gICAgICBdKVxuICAgICkge1xuICAgICAgZGVsZXRlIGdyb3VwRmlsdGVyLnF1ZXJ5O1xuICAgICAgT2JqZWN0LmFzc2lnbihncm91cEZpbHRlciwge1xuICAgICAgICBmcmFnbWVudFR5cGU6IEdyb3VwRnJhZ21lbnQuZ3JvdXBGcmFnbWVudFR5cGUsXG4gICAgICAgIG9ubHlSb290czogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmludmVudG9yeS5saXN0KHRoaXMuY3JlYXRlRmlsdGVyKGdyb3VwRmlsdGVyKSk7XG4gIH1cblxuICBnZXRBbGxJbnZlbnRvcmllcyhjdXN0b21GaWx0ZXI/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGRlZmF1bHRGaWx0ZXIgPSB7XG4gICAgICBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUsXG4gICAgICB3aXRoQ2hpbGRyZW46IGZhbHNlXG4gICAgfTtcbiAgICBjb25zdCBncm91cEZpbHRlciA9IHsgLi4uZGVmYXVsdEZpbHRlciwgLi4uY3VzdG9tRmlsdGVyIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5Lmxpc3QodGhpcy5jcmVhdGVGaWx0ZXIoZ3JvdXBGaWx0ZXIpKTtcbiAgfVxuXG4gIGdldEdyb3VwSXRlbXMobW9JZDogc3RyaW5nLCBleHRyYUZpbHRlcjogb2JqZWN0ID0ge30sIHdpdGhDaGlsZHJlbiA9IGZhbHNlLCBmaWx0ZXJRdWVyeSA9ICcnKSB7XG4gICAgY29uc3QgcXVlcnlGaWx0ZXIgPSB7XG4gICAgICB3aXRoQ2hpbGRyZW4sXG4gICAgICBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUsXG4gICAgICBxdWVyeTogdGhpcy5ncm91cFF1ZXJ5RmlsdGVyKG1vSWQsIGZpbHRlclF1ZXJ5KVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5LmNoaWxkQXNzZXRzTGlzdChtb0lkLCB7IC4uLnF1ZXJ5RmlsdGVyLCAuLi5leHRyYUZpbHRlciB9KTtcbiAgfVxuXG4gIGdldFVuYXNzaWduZWREZXZpY2VzKHdpdGhDaGlsZHJlbiA9IGZhbHNlLCBmaWx0ZXJRdWVyeSA9ICcnKSB7XG4gICAgY29uc3QgcXVlcnlGaWx0ZXI6IGFueSA9IHtcbiAgICAgIGZyYWdtZW50VHlwZTogJ2M4eV9Jc0RldmljZScsXG4gICAgICBvbmx5Um9vdHM6IHRydWUsXG4gICAgICB3aXRoQ2hpbGRyZW4sXG4gICAgICBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUsXG4gICAgICBxOiB0aGlzLmdldFVuYXNzaWduZWREZXZpY2VzUXVlcnlTdHIoZmlsdGVyUXVlcnkpXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnkubGlzdCh0aGlzLmNyZWF0ZUZpbHRlcihxdWVyeUZpbHRlcikpO1xuICB9XG5cbiAgZ2V0RHluYW1pY0dyb3VwSXRlbXMoZ3JvdXBRdWVyeTogc3RyaW5nLCBmaWx0ZXJPYmo6IGFueSA9IHt9KSB7XG4gICAgY29uc3QgeyBxdWVyeSwgLi4ucXVlcnlQYXJhbXMgfSA9IGZpbHRlck9iajtcbiAgICBjb25zdCBvcmRlckJ5UXVlcnkgPSBxdWVyeTtcbiAgICBjb25zdCBxdWVyeUZpbHRlciA9IHtcbiAgICAgIHE6IHRoaXMuYnVpbGRDb21iaW5lZFF1ZXJ5KGdyb3VwUXVlcnksIG9yZGVyQnlRdWVyeSksXG4gICAgICAuLi5xdWVyeVBhcmFtc1xuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5Lmxpc3QodGhpcy5jcmVhdGVGaWx0ZXIocXVlcnlGaWx0ZXIpKTtcbiAgfVxuXG4gIGdldERldmljZUNoaWxkcmVuKFxuICAgIG1vSWQ6IHN0cmluZyxcbiAgICBleHRyYUZpbHRlcjogb2JqZWN0ID0ge30sXG4gICAgZmlsdGVyUXVlcnkgPSAnJyxcbiAgICB3aXRoQ2hpbGRyZW4gPSBmYWxzZVxuICApIHtcbiAgICBjb25zdCBxdWVyeUZpbHRlciA9IHtcbiAgICAgIHdpdGhDaGlsZHJlbixcbiAgICAgIHBhZ2VTaXplOiB0aGlzLlBBR0VfU0laRSxcbiAgICAgIHF1ZXJ5OiB0aGlzLmdyb3VwUXVlcnlGaWx0ZXIobW9JZCwgZmlsdGVyUXVlcnkpXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnkuY2hpbGREZXZpY2VzTGlzdChtb0lkLCB7IC4uLnF1ZXJ5RmlsdGVyLCAuLi5leHRyYUZpbHRlciB9KTtcbiAgfVxuXG4gIGdldFVuYXNzaWduZWREZXZpY2VzUXVlcnlTdHIoZmlsdGVyUXVlcnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGhhc0dyb3VwSWQgPSBmaWx0ZXJRdWVyeS5pbmNsdWRlcygnYnlncm91cGlkJyk7XG4gICAgLy8gRmV0Y2ggYWxsIHVuYXNzaWduZWQgZGV2aWNlcy5cbiAgICBjb25zdCBkZWZhdWx0UXVlcnlTdHIgPSAnJG9yZGVyYnk9bmFtZSc7XG5cbiAgICAvLyBmaWx0ZXJRdWVyeSBpcyBhIGN1c3RvbSBxdWVyeSB0byBmZXRjaCB1bmFzc2lnbmVkIGRldmljZXMgZmlsdGVyZWQgYnkgbmFtZS5cbiAgICByZXR1cm4gaGFzR3JvdXBJZCB8fCAhZmlsdGVyUXVlcnkgPyBkZWZhdWx0UXVlcnlTdHIgOiBmaWx0ZXJRdWVyeTtcbiAgfVxuXG4gIGdyb3VwUXVlcnlGaWx0ZXIobW9JZDogc3RyaW5nLCBmaWx0ZXJRdWVyeT86IHN0cmluZykge1xuICAgIGlmICghZmlsdGVyUXVlcnkpIHtcbiAgICAgIHJldHVybiBgJGZpbHRlcj0oYnlncm91cGlkKCR7bW9JZH0pKSRvcmRlcmJ5PW5hbWVgO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyUXVlcnk7XG4gIH1cblxuICBuYXZSb290UXVlcnlGaWx0ZXIoKSB7XG4gICAgY29uc3QgbmF2Um9vdEZpbHRlciA9IHRoaXMucm9vdFF1ZXJ5RmlsdGVyKCk7XG4gICAgbmF2Um9vdEZpbHRlci5fX29yZGVyYnkgPSBbeyBuYW1lOiAxIH1dO1xuICAgIHJldHVybiBuYXZSb290RmlsdGVyO1xuICB9XG5cbiAgcm9vdFF1ZXJ5RmlsdGVyKCkge1xuICAgIGNvbnN0IHsgbW9kdWxlQ29uZmlnIH0gPSB0aGlzO1xuICAgIGNvbnN0IHJvb3RGaWx0ZXIgPSB0aGlzLm9wdGlvbnNTZXJ2aWNlLmRpc2FibGVPbmx5Um9vdHNRdWVyeVxuICAgICAgPyB7XG4gICAgICAgICAgX19maWx0ZXI6IHtcbiAgICAgICAgICAgIHR5cGU6IEdyb3VwRnJhZ21lbnQuZ3JvdXBUeXBlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBfX29yZGVyYnk6IFtdXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIF9fZmlsdGVyOiB7XG4gICAgICAgICAgICBfX2hhczogR3JvdXBGcmFnbWVudC5ncm91cEZyYWdtZW50VHlwZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgX19vcmRlcmJ5OiBbXVxuICAgICAgICB9O1xuICAgIGlmIChtb2R1bGVDb25maWcuc21hcnRHcm91cHMpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5RmlsdGVyID0ge1xuICAgICAgICBfX2ZpbHRlcjoge1xuICAgICAgICAgIF9fYW5kOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IEdyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwVHlwZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgX19oYXM6IEdyb3VwRnJhZ21lbnQuZHluYW1pY0dyb3VwRnJhZ21lbnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IF9fbm90OiB7IF9faGFzOiBgJHtHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cEZyYWdtZW50fS5pbnZpc2libGVgIH0gfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMucXVlcmllc1V0aWwuYWRkT3JGaWx0ZXIocm9vdEZpbHRlciwgcXVlcnlGaWx0ZXIpO1xuICAgIH1cbiAgICByZXR1cm4gcm9vdEZpbHRlcjtcbiAgfVxuXG4gIG9uVXBkYXRlKHsgbW8sIHJvb3QgfSkge1xuICAgIGlmIChtby5pZCkge1xuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgICAuaG9va1Jlc3BvbnNlKFxuICAgICAgICAgICh7IHVybCwgbWV0aG9kIH0pID0+XG4gICAgICAgICAgICBbJ1BVVCcsICdERUxFVEUnLCAnUE9TVCddLmluY2x1ZGVzKG1ldGhvZCkgJiZcbiAgICAgICAgICAgIFJlZ0V4cChgKChpbnZlbnRvcnkvbWFuYWdlZE9iamVjdHMpfChzZXJ2aWNlL3NtYXJ0Z3JvdXAvc21hcnRncm91cHMpKS8ke21vLmlkfWApLnRlc3QoXG4gICAgICAgICAgICAgIHVybFxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5kcmFnZ2VkRGF0YSksXG4gICAgICAgICAgbWVyZ2VNYXAodGhpcy5hcGlTZXJ2aWNlLnJlc29sdmVEYXRhPElNYW5hZ2VkT2JqZWN0PiksXG4gICAgICAgICAgZmlsdGVyKHJlc3BvbnNlID0+ICFyZXNwb25zZT8uZGF0YT8uYzh5X0Rhc2hib2FyZClcbiAgICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHJvb3QpIHtcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgICAgLmhvb2tSZXNwb25zZShcbiAgICAgICAgICAoeyB1cmwsIG1ldGhvZCB9KSA9PlxuICAgICAgICAgICAgUmVnRXhwKCcoKGludmVudG9yeS9tYW5hZ2VkT2JqZWN0cyl8KHNlcnZpY2Uvc21hcnRncm91cC9zbWFydGdyb3VwcykpLz8kJykudGVzdCh1cmwpICYmXG4gICAgICAgICAgICBtZXRob2QgPT09ICdQT1NUJ1xuICAgICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKHRoaXMuYXBpU2VydmljZS5yZXNvbHZlRGF0YTxJTWFuYWdlZE9iamVjdD4pLFxuICAgICAgICAgIGZpbHRlcihyZXNwb25zZSA9PiB0aGlzLmlzTmV3TWFuYWdlZE9iamVjdFJvb3QocmVzcG9uc2UpKVxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZW1wdHkoKTtcbiAgICB9XG4gIH1cblxuICBpc05ld01hbmFnZWRPYmplY3RSb290KHJlc3BvbnNlOiBQYXJ0aWFsPElSZXN1bHQ8SU1hbmFnZWRPYmplY3Q+PiA9IHt9KSB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSByZXNwb25zZTtcbiAgICBsZXQgaXNSb290QXNzZXQgPSBmYWxzZTtcblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlzUm9vdEFzc2V0ID0gISFkYXRhW0dyb3VwRnJhZ21lbnQuZ3JvdXBGcmFnbWVudFR5cGVdO1xuICAgICAgaWYgKCFpc1Jvb3RBc3NldCAmJiB0aGlzLm1vZHVsZUNvbmZpZy5zbWFydEdyb3Vwcykge1xuICAgICAgICBpc1Jvb3RBc3NldCA9ICEhZGF0YVtHcm91cEZyYWdtZW50LmR5bmFtaWNHcm91cEZyYWdtZW50XTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzUm9vdEFzc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGl0IGlzIHBvc3NpYmxlIHRvIGRyb3AgYSBub2RlIGFmdGVyIGRyYWdnaW5nLlxuICAgKiBAcGFyYW0gZHJvcE9uUm9vdCBJcyB0aGUgZHJvcCBwZXJmb3JtZWQgb24gdGhlIHJvb3Qgbm9kZVxuICAgKi9cbiAgY2FuRHJvcE5vZGUoZHJvcE9uUm9vdDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhZHJvcE9uUm9vdCB8fFxuICAgICAgdGhpcy51c2VyLmhhc0FueVJvbGUodGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZSwgW1xuICAgICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9BRE1JTixcbiAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9BRE1JTlxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIGJyZWFkY3J1bWJzIGZvciBkZXZpY2VzLFxuICAgKiBzbyB3ZSBzZXQgYSBwcmVmZXJyZWQgb25lIG9uIGNsaWNrIG9uIGEgZGV2aWNlLlxuICAgKiBAcGFyYW0gcGFyZW50cyBUaGUgcGFyZW50IG5vZGVzIG9mIHRoZSBkZXZpY2UgdG8gc2VsZWN0IHRoZSBwcmVmZXJlZCBvbmUuXG4gICAqL1xuICBwcmVmZXJCcmVhZGNydW1iKHBhcmVudHM6IE5hdmlnYXRvck5vZGVbXSkge1xuICAgIGlmIChwYXJlbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5zZWxlY3RQcmVmZXJyZWRCeVBhdGgocGFyZW50c1swXS5wYXRoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlRmlsdGVyKGV4dHJhUGFyYW1zOiBhbnkgPSB7fSkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGN1cnJlbnRQYWdlOiAxLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWUsXG4gICAgICBwYWdlU2l6ZTogMTBcbiAgICB9O1xuICAgIHJldHVybiB7IC4uLnBhcmFtcywgLi4uZXh0cmFQYXJhbXMgfTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb21iaW5lZFF1ZXJ5KHF1ZXJ5QSwgcXVlcnlCKSB7XG4gICAgbGV0IGNvbWJpbmVkUXVlcnk7XG4gICAgaWYgKHF1ZXJ5QSAmJiBxdWVyeUIpIHtcbiAgICAgIGNvbnN0IGZpbHRlclF1ZXJ5ID0gdGhpcy5xdWVyaWVzVXRpbC5idWlsZFF1ZXJ5KFtcbiAgICAgICAge1xuICAgICAgICAgIF9fdXNlRmlsdGVyUXVlcnlTdHJpbmc6IHF1ZXJ5QVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgX191c2VGaWx0ZXJRdWVyeVN0cmluZzogcXVlcnlCXG4gICAgICAgIH1cbiAgICAgIF0pO1xuICAgICAgY29uc3Qgb3JiZXJCeVF1ZXJ5ID0gdGhpcy5xdWVyaWVzVXRpbC5leHRyYWN0QW5kTWVyZ2VPcmRlckJ5cyhbcXVlcnlBLCBxdWVyeUJdKTtcbiAgICAgIGNvbWJpbmVkUXVlcnkgPSBgJHtmaWx0ZXJRdWVyeX0gJHtvcmJlckJ5UXVlcnl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tYmluZWRRdWVyeSA9IHF1ZXJ5QSB8fCBxdWVyeUIgfHwgJyc7XG4gICAgfVxuICAgIHJldHVybiBjb21iaW5lZFF1ZXJ5O1xuICB9XG59XG4iXX0=
@@ -7,7 +7,10 @@ export class AuthConfigurationGuard {
7
7
  this.permissions = permissions;
8
8
  }
9
9
  canActivate() {
10
- return this.permissions.hasAnyRole(['ROLE_TENANT_ADMIN', 'ROLE_TENANT_MANAGEMENT_ADMIN']);
10
+ return this.permissions.hasAnyRole([
11
+ Permissions.ROLE_TENANT_ADMIN,
12
+ Permissions.ROLE_TENANT_MANAGEMENT_ADMIN
13
+ ]);
11
14
  }
12
15
  }
13
16
  AuthConfigurationGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AuthConfigurationGuard, deps: [{ token: i1.Permissions }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -15,4 +18,4 @@ AuthConfigurationGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0
15
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AuthConfigurationGuard, decorators: [{
16
19
  type: Injectable
17
20
  }], ctorParameters: function () { return [{ type: i1.Permissions }]; } });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWd1cmF0aW9uLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL2F1dGgtY29uZmlndXJhdGlvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBR2xELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFBRyxDQUFDO0lBRWhELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsbUJBQW1CLEVBQUUsOEJBQThCLENBQUMsQ0FBQyxDQUFDO0lBQzVGLENBQUM7O21IQUxVLHNCQUFzQjt1SEFBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQZXJtaXNzaW9ucyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aENvbmZpZ3VyYXRpb25HdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwZXJtaXNzaW9uczogUGVybWlzc2lvbnMpIHt9XG5cbiAgY2FuQWN0aXZhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbnMuaGFzQW55Um9sZShbJ1JPTEVfVEVOQU5UX0FETUlOJywgJ1JPTEVfVEVOQU5UX01BTkFHRU1FTlRfQURNSU4nXSk7XG4gIH1cbn1cbiJdfQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWd1cmF0aW9uLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL2F1dGgtY29uZmlndXJhdGlvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBR2xELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFBRyxDQUFDO0lBRWhELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQ2pDLFdBQVcsQ0FBQyxpQkFBaUI7WUFDN0IsV0FBVyxDQUFDLDRCQUE0QjtTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDOzttSEFSVSxzQkFBc0I7dUhBQXRCLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUGVybWlzc2lvbnMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhDb25maWd1cmF0aW9uR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zKSB7fVxuXG4gIGNhbkFjdGl2YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25zLmhhc0FueVJvbGUoW1xuICAgICAgUGVybWlzc2lvbnMuUk9MRV9URU5BTlRfQURNSU4sXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX1RFTkFOVF9NQU5BR0VNRU5UX0FETUlOXG4gICAgXSk7XG4gIH1cbn1cbiJdfQ==
@@ -9,8 +9,8 @@ export class NavigationFactory {
9
9
  }
10
10
  async get() {
11
11
  const userHasPermission = this.permissions.hasAnyRole([
12
- 'ROLE_TENANT_ADMIN',
13
- 'ROLE_TENANT_MANAGEMENT_ADMIN'
12
+ Permissions.ROLE_TENANT_ADMIN,
13
+ Permissions.ROLE_TENANT_MANAGEMENT_ADMIN
14
14
  ]);
15
15
  if (this.navs.length === 0 && userHasPermission) {
16
16
  this.navs.push(new NavigatorNode({
@@ -30,4 +30,4 @@ NavigationFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", ve
30
30
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: NavigationFactory, decorators: [{
31
31
  type: Injectable
32
32
  }], ctorParameters: function () { return [{ type: i1.Permissions }]; } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL2ZhY3Rvcmllcy9uYXZpZ2F0aW9uLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBd0IsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUdoRyxNQUFNLE9BQU8saUJBQWlCO0lBRzVCLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRjVDLFNBQUksR0FBb0IsRUFBRSxDQUFDO0lBRW9CLENBQUM7SUFFaEQsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQ3BELG1CQUFtQjtZQUNuQiw4QkFBOEI7U0FDL0IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksaUJBQWlCLEVBQUU7WUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ1osSUFBSSxhQUFhLENBQUM7Z0JBQ2hCLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ2hDLElBQUksRUFBRSxZQUFZO2dCQUNsQixJQUFJLEVBQUUscUJBQXFCO2dCQUMzQixNQUFNLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQztnQkFDM0IsZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQyxDQUNILENBQUM7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDOzs4R0F2QlUsaUJBQWlCO2tIQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldHRleHQsIE5hdmlnYXRvck5vZGUsIE5hdmlnYXRvck5vZGVGYWN0b3J5LCBQZXJtaXNzaW9ucyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvbkZhY3RvcnkgaW1wbGVtZW50cyBOYXZpZ2F0b3JOb2RlRmFjdG9yeSB7XG4gIG5hdnM6IE5hdmlnYXRvck5vZGVbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zKSB7fVxuXG4gIGFzeW5jIGdldCgpIHtcbiAgICBjb25zdCB1c2VySGFzUGVybWlzc2lvbiA9IHRoaXMucGVybWlzc2lvbnMuaGFzQW55Um9sZShbXG4gICAgICAnUk9MRV9URU5BTlRfQURNSU4nLFxuICAgICAgJ1JPTEVfVEVOQU5UX01BTkFHRU1FTlRfQURNSU4nXG4gICAgXSk7XG4gICAgaWYgKHRoaXMubmF2cy5sZW5ndGggPT09IDAgJiYgdXNlckhhc1Blcm1pc3Npb24pIHtcbiAgICAgIHRoaXMubmF2cy5wdXNoKFxuICAgICAgICBuZXcgTmF2aWdhdG9yTm9kZSh7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0F1dGhlbnRpY2F0aW9uJyksXG4gICAgICAgICAgaWNvbjogJ2M4eS1zaGllbGQnLFxuICAgICAgICAgIHBhdGg6ICcvYXV0aC1jb25maWd1cmF0aW9uJyxcbiAgICAgICAgICBwYXJlbnQ6IGdldHRleHQoJ1NldHRpbmdzJyksXG4gICAgICAgICAgcm91dGVyTGlua0V4YWN0OiBmYWxzZSxcbiAgICAgICAgICBwcmlvcml0eTogMjAwMFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubmF2cztcbiAgfVxufVxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL2ZhY3Rvcmllcy9uYXZpZ2F0aW9uLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBd0IsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUdoRyxNQUFNLE9BQU8saUJBQWlCO0lBRzVCLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRjVDLFNBQUksR0FBb0IsRUFBRSxDQUFDO0lBRW9CLENBQUM7SUFFaEQsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQ3BELFdBQVcsQ0FBQyxpQkFBaUI7WUFDN0IsV0FBVyxDQUFDLDRCQUE0QjtTQUN6QyxDQUFDLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxpQkFBaUIsRUFBRTtZQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDWixJQUFJLGFBQWEsQ0FBQztnQkFDaEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDaEMsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLElBQUksRUFBRSxxQkFBcUI7Z0JBQzNCLE1BQU0sRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDO2dCQUMzQixlQUFlLEVBQUUsS0FBSztnQkFDdEIsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQ0gsQ0FBQztTQUNIO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7OzhHQXZCVSxpQkFBaUI7a0hBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0dGV4dCwgTmF2aWdhdG9yTm9kZSwgTmF2aWdhdG9yTm9kZUZhY3RvcnksIFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uRmFjdG9yeSBpbXBsZW1lbnRzIE5hdmlnYXRvck5vZGVGYWN0b3J5IHtcbiAgbmF2czogTmF2aWdhdG9yTm9kZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwZXJtaXNzaW9uczogUGVybWlzc2lvbnMpIHt9XG5cbiAgYXN5bmMgZ2V0KCkge1xuICAgIGNvbnN0IHVzZXJIYXNQZXJtaXNzaW9uID0gdGhpcy5wZXJtaXNzaW9ucy5oYXNBbnlSb2xlKFtcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfVEVOQU5UX0FETUlOLFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9BRE1JTlxuICAgIF0pO1xuICAgIGlmICh0aGlzLm5hdnMubGVuZ3RoID09PSAwICYmIHVzZXJIYXNQZXJtaXNzaW9uKSB7XG4gICAgICB0aGlzLm5hdnMucHVzaChcbiAgICAgICAgbmV3IE5hdmlnYXRvck5vZGUoe1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdBdXRoZW50aWNhdGlvbicpLFxuICAgICAgICAgIGljb246ICdjOHktc2hpZWxkJyxcbiAgICAgICAgICBwYXRoOiAnL2F1dGgtY29uZmlndXJhdGlvbicsXG4gICAgICAgICAgcGFyZW50OiBnZXR0ZXh0KCdTZXR0aW5ncycpLFxuICAgICAgICAgIHJvdXRlckxpbmtFeGFjdDogZmFsc2UsXG4gICAgICAgICAgcHJpb3JpdHk6IDIwMDBcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm5hdnM7XG4gIH1cbn1cbiJdfQ==
@@ -25,7 +25,7 @@ export class CockpitConfigGuard {
25
25
  return;
26
26
  }
27
27
  canActivate() {
28
- return (this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN') &&
28
+ return (this.permissions.hasRole(Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN) &&
29
29
  this.ecosystemService.isOwner(this.appState.currentApplication.value));
30
30
  }
31
31
  }
@@ -37,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
37
37
  providedIn: 'root'
38
38
  }]
39
39
  }], ctorParameters: function () { return [{ type: i1.Permissions }, { type: i1.AppStateService }, { type: i2.EcosystemService }]; } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1jb25maWcuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb2NrcGl0LWNvbmZpZy9jb2NrcGl0LWNvbmZpZy5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsT0FBTyxFQUNQLGFBQWEsRUFFYixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQUs3RCxNQUFNLE9BQU8sa0JBQWtCO0lBUzdCLFlBQ1UsV0FBd0IsRUFDeEIsUUFBeUIsRUFDekIsZ0JBQWtDO1FBRmxDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFYekIsZUFBVSxHQUFrQixJQUFJLGFBQWEsQ0FBQztZQUMvRCxJQUFJLEVBQUUsSUFBSSxtQkFBbUIsRUFBRTtZQUMvQixNQUFNLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUNoQyxLQUFLLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDO1lBQ25DLElBQUksRUFBRSxlQUFlO1lBQ3JCLGlCQUFpQixFQUFFLElBQUk7U0FDeEIsQ0FBQyxDQUFDO0lBTUEsQ0FBQztJQUVKLEdBQUc7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDeEI7UUFDRCxPQUFPO0lBQ1QsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLENBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsbUNBQW1DLENBQUM7WUFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUN0RSxDQUFDO0lBQ0osQ0FBQzs7K0dBM0JVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbkFjdGl2YXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEFwcFN0YXRlU2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgTmF2aWdhdG9yTm9kZSxcbiAgTmF2aWdhdG9yTm9kZUZhY3RvcnksXG4gIFBlcm1pc3Npb25zXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRWNvc3lzdGVtU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNvc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBDT0NLUElUX0NPTkZJR19QQVRIIH0gZnJvbSAnLi9jb2NrcGl0LWNvbmZpZy5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvY2twaXRDb25maWdHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBOYXZpZ2F0b3JOb2RlRmFjdG9yeSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb25maWdOb2RlOiBOYXZpZ2F0b3JOb2RlID0gbmV3IE5hdmlnYXRvck5vZGUoe1xuICAgIHBhdGg6IGAvJHtDT0NLUElUX0NPTkZJR19QQVRIfWAsXG4gICAgcGFyZW50OiBnZXR0ZXh0KCdDb25maWd1cmF0aW9uJyksXG4gICAgbGFiZWw6IGdldHRleHQoJ0FwcCBjb25maWd1cmF0aW9uJyksXG4gICAgaWNvbjogJ2ltYWMtc2V0dGluZ3MnLFxuICAgIHByZXZlbnREdXBsaWNhdGVzOiB0cnVlXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGVjb3N5c3RlbVNlcnZpY2U6IEVjb3N5c3RlbVNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldCgpOiBOYXZpZ2F0b3JOb2RlIHtcbiAgICBpZiAodGhpcy5jYW5BY3RpdmF0ZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWdOb2RlO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBjYW5BY3RpdmF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5wZXJtaXNzaW9ucy5oYXNSb2xlKCdST0xFX0FQUExJQ0FUSU9OX01BTkFHRU1FTlRfQURNSU4nKSAmJlxuICAgICAgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzT3duZXIodGhpcy5hcHBTdGF0ZS5jdXJyZW50QXBwbGljYXRpb24udmFsdWUpXG4gICAgKTtcbiAgfVxufVxuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1jb25maWcuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb2NrcGl0LWNvbmZpZy9jb2NrcGl0LWNvbmZpZy5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsT0FBTyxFQUNQLGFBQWEsRUFFYixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQUs3RCxNQUFNLE9BQU8sa0JBQWtCO0lBUzdCLFlBQ1UsV0FBd0IsRUFDeEIsUUFBeUIsRUFDekIsZ0JBQWtDO1FBRmxDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFYekIsZUFBVSxHQUFrQixJQUFJLGFBQWEsQ0FBQztZQUMvRCxJQUFJLEVBQUUsSUFBSSxtQkFBbUIsRUFBRTtZQUMvQixNQUFNLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUNoQyxLQUFLLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDO1lBQ25DLElBQUksRUFBRSxlQUFlO1lBQ3JCLGlCQUFpQixFQUFFLElBQUk7U0FDeEIsQ0FBQyxDQUFDO0lBTUEsQ0FBQztJQUVKLEdBQUc7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDeEI7UUFDRCxPQUFPO0lBQ1QsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLENBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGlDQUFpQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FDdEUsQ0FBQztJQUNKLENBQUM7OytHQTNCVSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZqQixNQUFNOzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBcHBTdGF0ZVNlcnZpY2UsXG4gIGdldHRleHQsXG4gIE5hdmlnYXRvck5vZGUsXG4gIE5hdmlnYXRvck5vZGVGYWN0b3J5LFxuICBQZXJtaXNzaW9uc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEVjb3N5c3RlbVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Vjb3N5c3RlbS9zaGFyZWQnO1xuaW1wb3J0IHsgQ09DS1BJVF9DT05GSUdfUEFUSCB9IGZyb20gJy4vY29ja3BpdC1jb25maWcubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb2NrcGl0Q29uZmlnR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgTmF2aWdhdG9yTm9kZUZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnTm9kZTogTmF2aWdhdG9yTm9kZSA9IG5ldyBOYXZpZ2F0b3JOb2RlKHtcbiAgICBwYXRoOiBgLyR7Q09DS1BJVF9DT05GSUdfUEFUSH1gLFxuICAgIHBhcmVudDogZ2V0dGV4dCgnQ29uZmlndXJhdGlvbicpLFxuICAgIGxhYmVsOiBnZXR0ZXh0KCdBcHAgY29uZmlndXJhdGlvbicpLFxuICAgIGljb246ICdpbWFjLXNldHRpbmdzJyxcbiAgICBwcmV2ZW50RHVwbGljYXRlczogdHJ1ZVxuICB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucyxcbiAgICBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlXG4gICkge31cblxuICBnZXQoKTogTmF2aWdhdG9yTm9kZSB7XG4gICAgaWYgKHRoaXMuY2FuQWN0aXZhdGUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnTm9kZTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY2FuQWN0aXZhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMucGVybWlzc2lvbnMuaGFzUm9sZShQZXJtaXNzaW9ucy5ST0xFX0FQUExJQ0FUSU9OX01BTkFHRU1FTlRfQURNSU4pICYmXG4gICAgICB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuaXNPd25lcih0aGlzLmFwcFN0YXRlLmN1cnJlbnRBcHBsaWNhdGlvbi52YWx1ZSlcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -93,7 +93,7 @@ export class CockpitConfigService {
93
93
  Object.keys(this.currentConfig.features).forEach(key => {
94
94
  const childNode = node.find(startCase(key).toLowerCase());
95
95
  if (childNode) {
96
- if (!this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN') &&
96
+ if (!this.permissions.hasRole(Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN) &&
97
97
  childNode.lockHiddenAttr === undefined &&
98
98
  childNode.hidden === true) {
99
99
  childNode.lockHiddenAttr = childNode.hidden;
@@ -151,4 +151,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
151
151
  type: Inject,
152
152
  args: [ASSET_NAVIGATOR_CONFIG]
153
153
  }] }]; } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvY2twaXQtY29uZmlnL2NvY2twaXQtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsZUFBZSxFQUdmLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsV0FBVyxFQUNYLGFBQWEsRUFFYixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN2QixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQWlCLGNBQWMsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUtwRyxNQUFNLE9BQU8sb0JBQW9CO0lBZS9CLFlBQ1UsZ0JBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDbEMsUUFBeUIsRUFDekIsY0FBOEIsRUFDOUIsV0FBd0IsRUFDbUIsWUFBa0M7UUFSN0UscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ21CLGlCQUFZLEdBQVosWUFBWSxDQUFzQjtRQXZCdkYsa0JBQWEsR0FBa0IsY0FBYyxDQUFDO1FBQzlDLFVBQUssR0FBb0IsRUFBRSxDQUFDO1FBQ3BCLHNCQUFpQixHQUFvQztZQUMzRCxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUs7U0FDdEIsQ0FBQztRQUVlLDBCQUFxQixHQUFHLElBQUksQ0FBQztRQW1CNUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQW5CRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQ3BELEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FDekMsQ0FBQztJQUNKLENBQUM7SUFpQkQsSUFBSTtRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hELElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxHQUFHLGNBQWMsRUFBRSxHQUFHLE1BQU0sRUFBbUIsQ0FBQztnQkFDdkUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3JCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1FBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWTtRQUNoQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDdEIsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRTtZQUMvQyxJQUFJO2dCQUNGLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLElBQUksRUFBRTtvQkFDUixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDO3dCQUNwQyxFQUFFLEVBQUUsSUFBSTt3QkFDUixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7d0JBQzdCLFFBQVEsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQzs0QkFDeEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUI7NEJBQzVCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQjtxQkFDdkMsQ0FBQyxDQUNILENBQUM7aUJBQ0g7YUFDRjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLGFBQWE7YUFDZDtTQUNGO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsT0FBTyxHQUFHLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsMkJBQTJCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUN4RixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFDMUIsRUFBRSxDQUFDO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxNQUFxQjtRQUN4RCxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsOEJBQThCLENBQWdCLE1BQU0sQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQzFELE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FDOUMsQ0FBQztRQUNGLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDOUQ7SUFDSCxDQUFDO0lBRU8seUJBQXlCO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzlELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUMzQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDOUMsQ0FBQztRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3hELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ2xFLENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBSztRQUM3QixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3JELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBRTFELElBQUksU0FBUyxFQUFFO29CQUNiLElBQ0UsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQzt3QkFDOUQsU0FBUyxDQUFDLGNBQWMsS0FBSyxTQUFTO3dCQUN0QyxTQUFTLENBQUMsTUFBTSxLQUFLLElBQUksRUFDekI7d0JBQ0EsU0FBUyxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO3FCQUM3QztpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBVztRQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEtBQXNCO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUNsRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUNoQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxHQUFHLENBQUMsQ0FDOUQsQ0FBQztRQUVGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDL0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVPLGdDQUFnQyxDQUFDLEtBQXNCLEVBQUUsZ0JBQTBCO1FBQ3pGLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbkIsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzlDLElBQUksU0FBUyxFQUFFO2dCQUNiLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxLQUFzQjtRQUNqRCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3JELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBRTFELElBQUksU0FBUyxFQUFFO29CQUNiLElBQUksU0FBUyxDQUFDLGNBQWMsS0FBSyxJQUFJLEVBQUU7d0JBQ3JDLE9BQU87cUJBQ1I7b0JBRUQsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7aUJBQzFCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2lIQXRLVSxvQkFBb0Isa1FBd0JULHNCQUFzQjtxSEF4QmpDLG9CQUFvQixjQUZuQixNQUFNOzJGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQXlCSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEludmVudG9yeVNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBcHBTdGF0ZVNlcnZpY2UsXG4gIEV4dGVuc2lvbkZhY3RvcnksXG4gIE5hdmlnYXRvck5vZGUsXG4gIE5hdmlnYXRvclNlcnZpY2UsXG4gIE9wdGlvbnNTZXJ2aWNlLFxuICBQZXJtaXNzaW9ucyxcbiAgU2VhcmNoU2VydmljZSxcbiAgVGFiLFxuICBUYWJzU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIEFzc2V0TmF2aWdhdG9yQ29uZmlnLFxuICBBc3NldE5vZGVTZXJ2aWNlLFxuICBBU1NFVF9OQVZJR0FUT1JfQ09ORklHXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYXNzZXRzLW5hdmlnYXRvcic7XG5pbXBvcnQgeyBpc1VuZGVmaW5lZCwgc3RhcnRDYXNlIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvY2twaXRDb25maWcsIERFRkFVTFRfQ09ORklHLCBERUZBVUxUX0hPTUVfREFTSEJPQVJEX05BTUUgfSBmcm9tICcuL2NvY2twaXQtY29uZmlnLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29ja3BpdENvbmZpZ1NlcnZpY2Uge1xuICBjdXJyZW50Q29uZmlnOiBDb2NrcGl0Q29uZmlnID0gREVGQVVMVF9DT05GSUc7XG4gIG5vZGVzOiBOYXZpZ2F0b3JOb2RlW10gPSBbXTtcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRmFjdG9yeTogRXh0ZW5zaW9uRmFjdG9yeTxOYXZpZ2F0b3JOb2RlPiA9IHtcbiAgICBnZXQ6ICgpID0+IHRoaXMubm9kZXNcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTk9ERV9QUklPUklUWSA9IDIwMDA7XG5cbiAgZ2V0IGV4Y2x1ZGVkRmVhdHVyZUtleXMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY3VycmVudENvbmZpZy5mZWF0dXJlcykuZmlsdGVyKFxuICAgICAga2V5ID0+ICF0aGlzLmN1cnJlbnRDb25maWcuZmVhdHVyZXNba2V5XVxuICAgICk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YWJzU2VydmljZTogVGFic1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXNzZXROb2RlU2VydmljZTogQXNzZXROb2RlU2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVNTRVRfTkFWSUdBVE9SX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogQXNzZXROYXZpZ2F0b3JDb25maWdcbiAgKSB7XG4gICAgdGhpcy5yZWdpc3RlckZpbHRlckZvckZlYXR1cmVzKCk7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBpbml0KCkge1xuICAgIHRoaXMuYXBwU3RhdGUuY3VycmVudEFwcGxpY2F0aW9uQ29uZmlnLnN1YnNjcmliZShjb25maWcgPT4ge1xuICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICB0aGlzLmN1cnJlbnRDb25maWcgPSB7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5jb25maWcgfSBhcyBDb2NrcGl0Q29uZmlnO1xuICAgICAgICB0aGlzLnNldFJvb3ROb2RlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2F2ZUNvbmZpZyhjb25maWcpIHtcbiAgICB0aGlzLmN1cnJlbnRDb25maWcgPSBjb25maWc7XG4gICAgYXdhaXQgdGhpcy5zdG9yZUFwcGxpY2F0aW9uQ29uZmlnKHRoaXMuY3VycmVudENvbmZpZyk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMub3B0aW9uc1NlcnZpY2UuaGlkZU5hdmlnYXRvciA9IHRoaXMuY3VycmVudENvbmZpZy5oaWRlTmF2aWdhdG9yO1xuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5yZWZyZXNoKCk7XG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnJlZnJlc2goKTtcbiAgfVxuXG4gIGFzeW5jIHNldFJvb3ROb2RlcygpIHtcbiAgICB0aGlzLmFkZE5vZGVzVG9GYWN0b3JpZXMoKTtcbiAgICB0aGlzLm5vZGVzLmxlbmd0aCA9IDA7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMuY3VycmVudENvbmZpZy5yb290Tm9kZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmRldGFpbChub2RlLmlkKTtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICB0aGlzLm5vZGVzLnB1c2goXG4gICAgICAgICAgICB0aGlzLmFzc2V0Tm9kZVNlcnZpY2UuY3JlYXRlQXNzZXROb2RlKHtcbiAgICAgICAgICAgICAgbW86IGRhdGEsXG4gICAgICAgICAgICAgIGhpZGVEZXZpY2VzOiBub2RlLmhpZGVEZXZpY2VzLFxuICAgICAgICAgICAgICBwcmlvcml0eTogaXNVbmRlZmluZWQodGhpcy5tb2R1bGVDb25maWc/LnJvb3ROb2RlUHJpb3JpdHkpXG4gICAgICAgICAgICAgICAgPyB0aGlzLkRFRkFVTFRfTk9ERV9QUklPUklUWVxuICAgICAgICAgICAgICAgIDogdGhpcy5tb2R1bGVDb25maWcucm9vdE5vZGVQcmlvcml0eVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucmVmcmVzaCgpO1xuICB9XG5cbiAgZ2V0QXBwRGFzaGJvYXJkTmFtZSgpIHtcbiAgICByZXR1cm4gYCR7REVGQVVMVF9IT01FX0RBU0hCT0FSRF9OQU1FLnN1YnN0cmluZygwLCBERUZBVUxUX0hPTUVfREFTSEJPQVJEX05BTUUubGVuZ3RoIC0gMSl9XyR7XG4gICAgICB0aGlzLmFwcFN0YXRlLnN0YXRlLmFwcC5pZFxuICAgIH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzdG9yZUFwcGxpY2F0aW9uQ29uZmlnKGNvbmZpZzogQ29ja3BpdENvbmZpZykge1xuICAgIGF3YWl0IHRoaXMuYXBwU3RhdGUudXBkYXRlQ3VycmVudEFwcGxpY2F0aW9uQ29uZmlnPENvY2twaXRDb25maWc+KGNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGFkZE5vZGVzVG9GYWN0b3JpZXMoKSB7XG4gICAgY29uc3Qgbm9kZUluRmFjdG9yaWVzID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmZhY3Rvcmllcy5maW5kKFxuICAgICAgZmF0Y29yeSA9PiBmYXRjb3J5ID09PSB0aGlzLm5hdmlnYXRpb25GYWN0b3J5XG4gICAgKTtcbiAgICBpZiAoIW5vZGVJbkZhY3Rvcmllcykge1xuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmZhY3Rvcmllcy5wdXNoKHRoaXMubmF2aWdhdGlvbkZhY3RvcnkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJGaWx0ZXJGb3JGZWF0dXJlcygpIHtcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuaXRlbXMkID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLml0ZW1zJC5waXBlKFxuICAgICAgbWFwKG5vZGVzID0+IHRoaXMuc2V0SGlkZGVuQXR0ckxvY2sobm9kZXMpKSxcbiAgICAgIG1hcChub2RlcyA9PiB0aGlzLmZpbHRlck5hdmlnYXRvck5vZGUobm9kZXMpKVxuICAgICk7XG4gICAgdGhpcy50YWJzU2VydmljZS5pdGVtcyQgPSB0aGlzLnRhYnNTZXJ2aWNlLml0ZW1zJC5waXBlKG1hcCh0YWJzID0+IHRoaXMuZmlsdGVyVGFicyh0YWJzKSkpO1xuICAgIHRoaXMuc2VhcmNoU2VydmljZS5pdGVtcyQgPSB0aGlzLnNlYXJjaFNlcnZpY2UuaXRlbXMkLnBpcGUoXG4gICAgICBtYXAoc2VhcmNoID0+ICh0aGlzLmN1cnJlbnRDb25maWcuZmVhdHVyZXMuc2VhcmNoID8gc2VhcmNoIDogW10pKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldEhpZGRlbkF0dHJMb2NrKG5vZGVzKSB7XG4gICAgbm9kZXMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuY3VycmVudENvbmZpZy5mZWF0dXJlcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGUgPSBub2RlLmZpbmQoc3RhcnRDYXNlKGtleSkudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAgICAgaWYgKGNoaWxkTm9kZSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLnBlcm1pc3Npb25zLmhhc1JvbGUoJ1JPTEVfQVBQTElDQVRJT05fTUFOQUdFTUVOVF9BRE1JTicpICYmXG4gICAgICAgICAgICBjaGlsZE5vZGUubG9ja0hpZGRlbkF0dHIgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgY2hpbGROb2RlLmhpZGRlbiA9PT0gdHJ1ZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY2hpbGROb2RlLmxvY2tIaWRkZW5BdHRyID0gY2hpbGROb2RlLmhpZGRlbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBub2RlcztcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyVGFicyh0YWJzOiBUYWJbXSkge1xuICAgIHJldHVybiB0YWJzLmZpbHRlcih0YWIgPT4gIXRoaXMuZXhjbHVkZWRGZWF0dXJlS2V5cy5zb21lKGtleSA9PiB0YWIuZmVhdHVyZUlkID09PSBrZXkpKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyTmF2aWdhdG9yTm9kZShub2RlczogTmF2aWdhdG9yTm9kZVtdKSB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRDb25maWcpIHtcbiAgICAgIHJldHVybiBub2RlcztcbiAgICB9XG4gICAgY29uc3QgZGlzYWJsZWRGZWF0dXJlcyA9IHRoaXMuZXhjbHVkZWRGZWF0dXJlS2V5cztcbiAgICBjb25zdCBmaWx0ZXJlZE5vZGVzID0gbm9kZXMuZmlsdGVyKFxuICAgICAgbm9kZSA9PiAhZGlzYWJsZWRGZWF0dXJlcy5zb21lKGtleSA9PiBub2RlLmZlYXR1cmVJZCA9PT0ga2V5KVxuICAgICk7XG5cbiAgICB0aGlzLnNob3dBbGxDaGlsZHJlbk5vZGVzKG5vZGVzKTtcbiAgICB0aGlzLmhpZGVDaGlsZHJlbk5vZGVzVGhhdEFyZURpc2FibGVkKG5vZGVzLCBkaXNhYmxlZEZlYXR1cmVzKTtcbiAgICByZXR1cm4gZmlsdGVyZWROb2RlcztcbiAgfVxuXG4gIHByaXZhdGUgaGlkZUNoaWxkcmVuTm9kZXNUaGF0QXJlRGlzYWJsZWQobm9kZXM6IE5hdmlnYXRvck5vZGVbXSwgZGlzYWJsZWRGZWF0dXJlczogc3RyaW5nW10pIHtcbiAgICBub2Rlcy5mb3JFYWNoKG5vZGUgPT5cbiAgICAgIGRpc2FibGVkRmVhdHVyZXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGUgPSBub2RlLmZpbmQoa2V5LCAnZmVhdHVyZUlkJyk7XG4gICAgICAgIGlmIChjaGlsZE5vZGUpIHtcbiAgICAgICAgICBjaGlsZE5vZGUuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93QWxsQ2hpbGRyZW5Ob2Rlcyhub2RlczogTmF2aWdhdG9yTm9kZVtdKSB7XG4gICAgbm9kZXMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuY3VycmVudENvbmZpZy5mZWF0dXJlcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGUgPSBub2RlLmZpbmQoc3RhcnRDYXNlKGtleSkudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAgICAgaWYgKGNoaWxkTm9kZSkge1xuICAgICAgICAgIGlmIChjaGlsZE5vZGUubG9ja0hpZGRlbkF0dHIgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjaGlsZE5vZGUuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvY2twaXQtY29uZmlnL2NvY2twaXQtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsZUFBZSxFQUdmLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsV0FBVyxFQUNYLGFBQWEsRUFFYixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN2QixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQWlCLGNBQWMsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUtwRyxNQUFNLE9BQU8sb0JBQW9CO0lBZS9CLFlBQ1UsZ0JBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDbEMsUUFBeUIsRUFDekIsY0FBOEIsRUFDOUIsV0FBd0IsRUFDbUIsWUFBa0M7UUFSN0UscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsbUJBQWMsR0FBZCxjQUFj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O3FCQUNSO29CQUVELFNBQVMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2lCQUMxQjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztpSEF0S1Usb0JBQW9CLGtRQXdCVCxzQkFBc0I7cUhBeEJqQyxvQkFBb0IsY0FGbkIsTUFBTTsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF5QkksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBFeHRlbnNpb25GYWN0b3J5LFxuICBOYXZpZ2F0b3JOb2RlLFxuICBOYXZpZ2F0b3JTZXJ2aWNlLFxuICBPcHRpb25zU2VydmljZSxcbiAgUGVybWlzc2lvbnMsXG4gIFNlYXJjaFNlcnZpY2UsXG4gIFRhYixcbiAgVGFic1NlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBBc3NldE5hdmlnYXRvckNvbmZpZyxcbiAgQXNzZXROb2RlU2VydmljZSxcbiAgQVNTRVRfTkFWSUdBVE9SX0NPTkZJR1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Fzc2V0cy1uYXZpZ2F0b3InO1xuaW1wb3J0IHsgaXNVbmRlZmluZWQsIHN0YXJ0Q2FzZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb2NrcGl0Q29uZmlnLCBERUZBVUxUX0NPTkZJRywgREVGQVVMVF9IT01FX0RBU0hCT0FSRF9OQU1FIH0gZnJvbSAnLi9jb2NrcGl0LWNvbmZpZy5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvY2twaXRDb25maWdTZXJ2aWNlIHtcbiAgY3VycmVudENvbmZpZzogQ29ja3BpdENvbmZpZyA9IERFRkFVTFRfQ09ORklHO1xuICBub2RlczogTmF2aWdhdG9yTm9kZVtdID0gW107XG4gIHByaXZhdGUgbmF2aWdhdGlvbkZhY3Rvcnk6IEV4dGVuc2lvbkZhY3Rvcnk8TmF2aWdhdG9yTm9kZT4gPSB7XG4gICAgZ2V0OiAoKSA9PiB0aGlzLm5vZGVzXG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX05PREVfUFJJT1JJVFkgPSAyMDAwO1xuXG4gIGdldCBleGNsdWRlZEZlYXR1cmVLZXlzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmN1cnJlbnRDb25maWcuZmVhdHVyZXMpLmZpbHRlcihcbiAgICAgIGtleSA9PiAhdGhpcy5jdXJyZW50Q29uZmlnLmZlYXR1cmVzW2tleV1cbiAgICApO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGFic1NlcnZpY2U6IFRhYnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIGFzc2V0Tm9kZVNlcnZpY2U6IEFzc2V0Tm9kZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFTU0VUX05BVklHQVRPUl9DT05GSUcpIHB1YmxpYyBtb2R1bGVDb25maWc6IEFzc2V0TmF2aWdhdG9yQ29uZmlnXG4gICkge1xuICAgIHRoaXMucmVnaXN0ZXJGaWx0ZXJGb3JGZWF0dXJlcygpO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgaW5pdCgpIHtcbiAgICB0aGlzLmFwcFN0YXRlLmN1cnJlbnRBcHBsaWNhdGlvbkNvbmZpZy5zdWJzY3JpYmUoY29uZmlnID0+IHtcbiAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Q29uZmlnID0geyAuLi5ERUZBVUxUX0NPTkZJRywgLi4uY29uZmlnIH0gYXMgQ29ja3BpdENvbmZpZztcbiAgICAgICAgdGhpcy5zZXRSb290Tm9kZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVDb25maWcoY29uZmlnKSB7XG4gICAgdGhpcy5jdXJyZW50Q29uZmlnID0gY29uZmlnO1xuICAgIGF3YWl0IHRoaXMuc3RvcmVBcHBsaWNhdGlvbkNvbmZpZyh0aGlzLmN1cnJlbnRDb25maWcpO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLm9wdGlvbnNTZXJ2aWNlLmhpZGVOYXZpZ2F0b3IgPSB0aGlzLmN1cnJlbnRDb25maWcuaGlkZU5hdmlnYXRvcjtcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UucmVmcmVzaCgpO1xuICAgIHRoaXMuc2VhcmNoU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICBhc3luYyBzZXRSb290Tm9kZXMoKSB7XG4gICAgdGhpcy5hZGROb2Rlc1RvRmFjdG9yaWVzKCk7XG4gICAgdGhpcy5ub2Rlcy5sZW5ndGggPSAwO1xuICAgIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzLmN1cnJlbnRDb25maWcucm9vdE5vZGVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5kZXRhaWwobm9kZS5pZCk7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgdGhpcy5ub2Rlcy5wdXNoKFxuICAgICAgICAgICAgdGhpcy5hc3NldE5vZGVTZXJ2aWNlLmNyZWF0ZUFzc2V0Tm9kZSh7XG4gICAgICAgICAgICAgIG1vOiBkYXRhLFxuICAgICAgICAgICAgICBoaWRlRGV2aWNlczogbm9kZS5oaWRlRGV2aWNlcyxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6IGlzVW5kZWZpbmVkKHRoaXMubW9kdWxlQ29uZmlnPy5yb290Tm9kZVByaW9yaXR5KVxuICAgICAgICAgICAgICAgID8gdGhpcy5ERUZBVUxUX05PREVfUFJJT1JJVFlcbiAgICAgICAgICAgICAgICA6IHRoaXMubW9kdWxlQ29uZmlnLnJvb3ROb2RlUHJpb3JpdHlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIGdldEFwcERhc2hib2FyZE5hbWUoKSB7XG4gICAgcmV0dXJuIGAke0RFRkFVTFRfSE9NRV9EQVNIQk9BUkRfTkFNRS5zdWJzdHJpbmcoMCwgREVGQVVMVF9IT01FX0RBU0hCT0FSRF9OQU1FLmxlbmd0aCAtIDEpfV8ke1xuICAgICAgdGhpcy5hcHBTdGF0ZS5zdGF0ZS5hcHAuaWRcbiAgICB9YDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3RvcmVBcHBsaWNhdGlvbkNvbmZpZyhjb25maWc6IENvY2twaXRDb25maWcpIHtcbiAgICBhd2FpdCB0aGlzLmFwcFN0YXRlLnVwZGF0ZUN1cnJlbnRBcHBsaWNhdGlvbkNvbmZpZzxDb2NrcGl0Q29uZmlnPihjb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGROb2Rlc1RvRmFjdG9yaWVzKCkge1xuICAgIGNvbnN0IG5vZGVJbkZhY3RvcmllcyA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5mYWN0b3JpZXMuZmluZChcbiAgICAgIGZhdGNvcnkgPT4gZmF0Y29yeSA9PT0gdGhpcy5uYXZpZ2F0aW9uRmFjdG9yeVxuICAgICk7XG4gICAgaWYgKCFub2RlSW5GYWN0b3JpZXMpIHtcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5mYWN0b3JpZXMucHVzaCh0aGlzLm5hdmlnYXRpb25GYWN0b3J5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyRmlsdGVyRm9yRmVhdHVyZXMoKSB7XG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLml0ZW1zJCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5pdGVtcyQucGlwZShcbiAgICAgIG1hcChub2RlcyA9PiB0aGlzLnNldEhpZGRlbkF0dHJMb2NrKG5vZGVzKSksXG4gICAgICBtYXAobm9kZXMgPT4gdGhpcy5maWx0ZXJOYXZpZ2F0b3JOb2RlKG5vZGVzKSlcbiAgICApO1xuICAgIHRoaXMudGFic1NlcnZpY2UuaXRlbXMkID0gdGhpcy50YWJzU2VydmljZS5pdGVtcyQucGlwZShtYXAodGFicyA9PiB0aGlzLmZpbHRlclRhYnModGFicykpKTtcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2UuaXRlbXMkID0gdGhpcy5zZWFyY2hTZXJ2aWNlLml0ZW1zJC5waXBlKFxuICAgICAgbWFwKHNlYXJjaCA9PiAodGhpcy5jdXJyZW50Q29uZmlnLmZlYXR1cmVzLnNlYXJjaCA/IHNlYXJjaCA6IFtdKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRIaWRkZW5BdHRyTG9jayhub2Rlcykge1xuICAgIG5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmN1cnJlbnRDb25maWcuZmVhdHVyZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlID0gbm9kZS5maW5kKHN0YXJ0Q2FzZShrZXkpLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgICAgIGlmIChjaGlsZE5vZGUpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdGhpcy5wZXJtaXNzaW9ucy5oYXNSb2xlKFBlcm1pc3Npb25zLlJPTEVfQVBQTElDQVRJT05fTUFOQUdFTUVOVF9BRE1JTikgJiZcbiAgICAgICAgICAgIGNoaWxkTm9kZS5sb2NrSGlkZGVuQXR0ciA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBjaGlsZE5vZGUuaGlkZGVuID09PSB0cnVlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjaGlsZE5vZGUubG9ja0hpZGRlbkF0dHIgPSBjaGlsZE5vZGUuaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5vZGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJUYWJzKHRhYnM6IFRhYltdKSB7XG4gICAgcmV0dXJuIHRhYnMuZmlsdGVyKHRhYiA9PiAhdGhpcy5leGNsdWRlZEZlYXR1cmVLZXlzLnNvbWUoa2V5ID0+IHRhYi5mZWF0dXJlSWQgPT09IGtleSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJOYXZpZ2F0b3JOb2RlKG5vZGVzOiBOYXZpZ2F0b3JOb2RlW10pIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudENvbmZpZykge1xuICAgICAgcmV0dXJuIG5vZGVzO1xuICAgIH1cbiAgICBjb25zdCBkaXNhYmxlZEZlYXR1cmVzID0gdGhpcy5leGNsdWRlZEZlYXR1cmVLZXlzO1xuICAgIGNvbnN0IGZpbHRlcmVkTm9kZXMgPSBub2Rlcy5maWx0ZXIoXG4gICAgICBub2RlID0+ICFkaXNhYmxlZEZlYXR1cmVzLnNvbWUoa2V5ID0+IG5vZGUuZmVhdHVyZUlkID09PSBrZXkpXG4gICAgKTtcblxuICAgIHRoaXMuc2hvd0FsbENoaWxkcmVuTm9kZXMobm9kZXMpO1xuICAgIHRoaXMuaGlkZUNoaWxkcmVuTm9kZXNUaGF0QXJlRGlzYWJsZWQobm9kZXMsIGRpc2FibGVkRmVhdHVyZXMpO1xuICAgIHJldHVybiBmaWx0ZXJlZE5vZGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWRlQ2hpbGRyZW5Ob2Rlc1RoYXRBcmVEaXNhYmxlZChub2RlczogTmF2aWdhdG9yTm9kZVtdLCBkaXNhYmxlZEZlYXR1cmVzOiBzdHJpbmdbXSkge1xuICAgIG5vZGVzLmZvckVhY2gobm9kZSA9PlxuICAgICAgZGlzYWJsZWRGZWF0dXJlcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IG5vZGUuZmluZChrZXksICdmZWF0dXJlSWQnKTtcbiAgICAgICAgaWYgKGNoaWxkTm9kZSkge1xuICAgICAgICAgIGNoaWxkTm9kZS5oaWRkZW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNob3dBbGxDaGlsZHJlbk5vZGVzKG5vZGVzOiBOYXZpZ2F0b3JOb2RlW10pIHtcbiAgICBub2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgT2JqZWN0LmtleXModGhpcy5jdXJyZW50Q29uZmlnLmZlYXR1cmVzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IG5vZGUuZmluZChzdGFydENhc2Uoa2V5KS50b0xvd2VyQ2FzZSgpKTtcblxuICAgICAgICBpZiAoY2hpbGROb2RlKSB7XG4gICAgICAgICAgaWYgKGNoaWxkTm9kZS5sb2NrSGlkZGVuQXR0ciA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNoaWxkTm9kZS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==