@decaf-ts/integrations 0.3.5 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/integrations.cjs +1608 -7
- package/dist/integrations.js +1841 -5
- package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +13 -5
- package/lib/cjs/graph/nodes/base.cjs +35 -0
- package/lib/cjs/graph/nodes/flow-control.cjs +31 -3
- package/lib/cjs/graph/nodes/index.cjs +3 -2
- package/lib/cjs/graph/types.cjs +2 -2
- package/lib/cjs/index.cjs +6 -5
- package/lib/cjs/namespaces/index.cjs +26 -0
- package/lib/cjs/namespaces/models/authorization-model.cjs +12 -0
- package/lib/cjs/namespaces/models/effective-permission.model.cjs +95 -0
- package/lib/cjs/namespaces/models/group-membership.model.cjs +66 -0
- package/lib/cjs/namespaces/models/group.model.cjs +74 -0
- package/lib/cjs/namespaces/models/index.cjs +39 -0
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs +76 -0
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +66 -0
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +73 -0
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +64 -0
- package/lib/cjs/namespaces/models/org-unit.model.cjs +102 -0
- package/lib/cjs/namespaces/models/permission.model.cjs +64 -0
- package/lib/cjs/namespaces/models/principal.model.cjs +77 -0
- package/lib/cjs/namespaces/models/protected-resource.model.cjs +99 -0
- package/lib/cjs/namespaces/models/resource-grant.model.cjs +88 -0
- package/lib/cjs/namespaces/models/role-assignment.model.cjs +98 -0
- package/lib/cjs/namespaces/models/role-permission.model.cjs +55 -0
- package/lib/cjs/namespaces/models/role.model.cjs +84 -0
- package/lib/cjs/namespaces/models/storage-binding.model.cjs +85 -0
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs +67 -0
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs +64 -0
- package/lib/cjs/namespaces/models/tenant.model.cjs +88 -0
- package/lib/cjs/namespaces/models/user.model.cjs +75 -0
- package/lib/cjs/namespaces/org-based-authorization-system.cjs +286 -0
- package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +968 -0
- package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +1046 -0
- package/lib/cjs/namespaces/services/authz.service.cjs +76 -0
- package/lib/cjs/namespaces/services/bootstrap.service.cjs +112 -0
- package/lib/cjs/namespaces/services/effective-permission.service.cjs +150 -0
- package/lib/cjs/namespaces/services/group-membership.service.cjs +42 -0
- package/lib/cjs/namespaces/services/group.service.cjs +30 -0
- package/lib/cjs/namespaces/services/index.cjs +42 -0
- package/lib/cjs/namespaces/services/inheritance-block.service.cjs +32 -0
- package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +55 -0
- package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +34 -0
- package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +23 -0
- package/lib/cjs/namespaces/services/org-unit.service.cjs +160 -0
- package/lib/cjs/namespaces/services/permission.service.cjs +29 -0
- package/lib/cjs/namespaces/services/principal.service.cjs +35 -0
- package/lib/cjs/namespaces/services/protected-resource.service.cjs +43 -0
- package/lib/cjs/namespaces/services/resource-grant.service.cjs +45 -0
- package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +24 -0
- package/lib/cjs/namespaces/services/role-assignment.service.cjs +41 -0
- package/lib/cjs/namespaces/services/role-permission.service.cjs +51 -0
- package/lib/cjs/namespaces/services/role.service.cjs +45 -0
- package/lib/cjs/namespaces/services/storage-binding.service.cjs +39 -0
- package/lib/cjs/namespaces/services/system-management.service.cjs +102 -0
- package/lib/cjs/namespaces/services/tenant-membership.service.cjs +33 -0
- package/lib/cjs/namespaces/services/tenant-profile.service.cjs +28 -0
- package/lib/cjs/namespaces/services/tenant.service.cjs +36 -0
- package/lib/cjs/namespaces/services/user.service.cjs +32 -0
- package/lib/cjs/namespaces/types.cjs +67 -0
- package/lib/cjs/namespaces/utils.cjs +161 -0
- package/lib/cjs/nest/authService.cjs +5 -2
- package/lib/cjs/nest/graph/GraphExecutionController.cjs +153 -0
- package/lib/cjs/nest/graph/GraphExecutionModule.cjs +84 -0
- package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +82 -0
- package/lib/cjs/nest/graph/GraphExecutionResultRepository.cjs +66 -0
- package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +35 -0
- package/lib/cjs/nest/graph/index.cjs +28 -0
- package/lib/cjs/nest/index.cjs +3 -2
- package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +12 -4
- package/lib/esm/graph/nodes/base.js +30 -0
- package/lib/esm/graph/nodes/flow-control.js +31 -3
- package/lib/esm/graph/nodes/index.js +2 -1
- package/lib/esm/graph/types.js +1 -1
- package/lib/esm/index.js +5 -4
- package/lib/esm/namespaces/index.js +9 -0
- package/lib/esm/namespaces/models/authorization-model.js +7 -0
- package/lib/esm/namespaces/models/effective-permission.model.js +86 -0
- package/lib/esm/namespaces/models/group-membership.model.js +57 -0
- package/lib/esm/namespaces/models/group.model.js +65 -0
- package/lib/esm/namespaces/models/index.js +22 -0
- package/lib/esm/namespaces/models/inheritance-block.model.js +67 -0
- package/lib/esm/namespaces/models/org-unit-closure.model.js +57 -0
- package/lib/esm/namespaces/models/org-unit-membership.model.js +64 -0
- package/lib/esm/namespaces/models/org-unit-profile.model.js +55 -0
- package/lib/esm/namespaces/models/org-unit.model.js +93 -0
- package/lib/esm/namespaces/models/permission.model.js +55 -0
- package/lib/esm/namespaces/models/principal.model.js +68 -0
- package/lib/esm/namespaces/models/protected-resource.model.js +90 -0
- package/lib/esm/namespaces/models/resource-grant.model.js +79 -0
- package/lib/esm/namespaces/models/role-assignment.model.js +89 -0
- package/lib/esm/namespaces/models/role-permission.model.js +46 -0
- package/lib/esm/namespaces/models/role.model.js +75 -0
- package/lib/esm/namespaces/models/storage-binding.model.js +76 -0
- package/lib/esm/namespaces/models/tenant-membership.model.js +58 -0
- package/lib/esm/namespaces/models/tenant-profile.model.js +55 -0
- package/lib/esm/namespaces/models/tenant.model.js +79 -0
- package/lib/esm/namespaces/models/user.model.js +66 -0
- package/lib/esm/namespaces/org-based-authorization-system.js +283 -0
- package/lib/esm/namespaces/org-based-authorization-system.models.js +958 -0
- package/lib/esm/namespaces/org-based-authorization-system.services.js +1014 -0
- package/lib/esm/namespaces/services/authz.service.js +71 -0
- package/lib/esm/namespaces/services/bootstrap.service.js +102 -0
- package/lib/esm/namespaces/services/effective-permission.service.js +140 -0
- package/lib/esm/namespaces/services/group-membership.service.js +37 -0
- package/lib/esm/namespaces/services/group.service.js +25 -0
- package/lib/esm/namespaces/services/index.js +25 -0
- package/lib/esm/namespaces/services/inheritance-block.service.js +27 -0
- package/lib/esm/namespaces/services/org-unit-closure.service.js +50 -0
- package/lib/esm/namespaces/services/org-unit-membership.service.js +29 -0
- package/lib/esm/namespaces/services/org-unit-profile.service.js +18 -0
- package/lib/esm/namespaces/services/org-unit.service.js +150 -0
- package/lib/esm/namespaces/services/permission.service.js +24 -0
- package/lib/esm/namespaces/services/principal.service.js +30 -0
- package/lib/esm/namespaces/services/protected-resource.service.js +38 -0
- package/lib/esm/namespaces/services/resource-grant.service.js +40 -0
- package/lib/esm/namespaces/services/resource-lifecycle.service.js +19 -0
- package/lib/esm/namespaces/services/role-assignment.service.js +36 -0
- package/lib/esm/namespaces/services/role-permission.service.js +46 -0
- package/lib/esm/namespaces/services/role.service.js +40 -0
- package/lib/esm/namespaces/services/storage-binding.service.js +34 -0
- package/lib/esm/namespaces/services/system-management.service.js +92 -0
- package/lib/esm/namespaces/services/tenant-membership.service.js +28 -0
- package/lib/esm/namespaces/services/tenant-profile.service.js +23 -0
- package/lib/esm/namespaces/services/tenant.service.js +31 -0
- package/lib/esm/namespaces/services/user.service.js +27 -0
- package/lib/esm/namespaces/types.js +71 -0
- package/lib/esm/namespaces/utils.js +143 -0
- package/lib/esm/nest/authService.js +4 -1
- package/lib/esm/nest/graph/GraphExecutionController.js +144 -0
- package/lib/esm/nest/graph/GraphExecutionModule.js +76 -0
- package/lib/esm/nest/graph/GraphExecutionResultModel.js +73 -0
- package/lib/esm/nest/graph/GraphExecutionResultRepository.js +60 -0
- package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +31 -0
- package/lib/esm/nest/graph/index.js +11 -0
- package/lib/esm/nest/index.js +2 -1
- package/lib/types/graph/nodes/base.d.cts +28 -0
- package/lib/types/graph/nodes/base.d.mts +28 -0
- package/lib/types/graph/nodes/flow-control.d.cts +9 -1
- package/lib/types/graph/nodes/flow-control.d.mts +9 -1
- package/lib/types/graph/nodes/index.d.cts +1 -0
- package/lib/types/graph/nodes/index.d.mts +1 -0
- package/lib/types/graph/types.d.cts +15 -1
- package/lib/types/graph/types.d.mts +15 -1
- package/lib/types/index.d.cts +3 -2
- package/lib/types/index.d.mts +3 -2
- package/lib/types/namespaces/index.d.cts +8 -0
- package/lib/types/namespaces/index.d.mts +8 -0
- package/lib/types/namespaces/models/authorization-model.d.cts +4 -0
- package/lib/types/namespaces/models/authorization-model.d.mts +4 -0
- package/lib/types/namespaces/models/effective-permission.model.d.cts +18 -0
- package/lib/types/namespaces/models/effective-permission.model.d.mts +18 -0
- package/lib/types/namespaces/models/group-membership.model.d.cts +13 -0
- package/lib/types/namespaces/models/group-membership.model.d.mts +13 -0
- package/lib/types/namespaces/models/group.model.d.cts +15 -0
- package/lib/types/namespaces/models/group.model.d.mts +15 -0
- package/lib/types/namespaces/models/index.d.cts +21 -0
- package/lib/types/namespaces/models/index.d.mts +21 -0
- package/lib/types/namespaces/models/inheritance-block.model.d.cts +15 -0
- package/lib/types/namespaces/models/inheritance-block.model.d.mts +15 -0
- package/lib/types/namespaces/models/org-unit-closure.model.d.cts +12 -0
- package/lib/types/namespaces/models/org-unit-closure.model.d.mts +12 -0
- package/lib/types/namespaces/models/org-unit-membership.model.d.cts +15 -0
- package/lib/types/namespaces/models/org-unit-membership.model.d.mts +15 -0
- package/lib/types/namespaces/models/org-unit-profile.model.d.cts +11 -0
- package/lib/types/namespaces/models/org-unit-profile.model.d.mts +11 -0
- package/lib/types/namespaces/models/org-unit.model.d.cts +23 -0
- package/lib/types/namespaces/models/org-unit.model.d.mts +23 -0
- package/lib/types/namespaces/models/permission.model.d.cts +11 -0
- package/lib/types/namespaces/models/permission.model.d.mts +11 -0
- package/lib/types/namespaces/models/principal.model.d.cts +16 -0
- package/lib/types/namespaces/models/principal.model.d.mts +16 -0
- package/lib/types/namespaces/models/protected-resource.model.d.cts +21 -0
- package/lib/types/namespaces/models/protected-resource.model.d.mts +21 -0
- package/lib/types/namespaces/models/resource-grant.model.d.cts +18 -0
- package/lib/types/namespaces/models/resource-grant.model.d.mts +18 -0
- package/lib/types/namespaces/models/role-assignment.model.d.cts +20 -0
- package/lib/types/namespaces/models/role-assignment.model.d.mts +20 -0
- package/lib/types/namespaces/models/role-permission.model.d.cts +10 -0
- package/lib/types/namespaces/models/role-permission.model.d.mts +10 -0
- package/lib/types/namespaces/models/role.model.d.cts +17 -0
- package/lib/types/namespaces/models/role.model.d.mts +17 -0
- package/lib/types/namespaces/models/storage-binding.model.d.cts +15 -0
- package/lib/types/namespaces/models/storage-binding.model.d.mts +15 -0
- package/lib/types/namespaces/models/tenant-membership.model.d.cts +13 -0
- package/lib/types/namespaces/models/tenant-membership.model.d.mts +13 -0
- package/lib/types/namespaces/models/tenant-profile.model.d.cts +11 -0
- package/lib/types/namespaces/models/tenant-profile.model.d.mts +11 -0
- package/lib/types/namespaces/models/tenant.model.d.cts +19 -0
- package/lib/types/namespaces/models/tenant.model.d.mts +19 -0
- package/lib/types/namespaces/models/user.model.d.cts +14 -0
- package/lib/types/namespaces/models/user.model.d.mts +14 -0
- package/lib/types/namespaces/org-based-authorization-system.d.cts +299 -0
- package/lib/types/namespaces/org-based-authorization-system.d.mts +299 -0
- package/lib/types/namespaces/org-based-authorization-system.models.d.cts +212 -0
- package/lib/types/namespaces/org-based-authorization-system.models.d.mts +212 -0
- package/lib/types/namespaces/org-based-authorization-system.services.d.cts +217 -0
- package/lib/types/namespaces/org-based-authorization-system.services.d.mts +217 -0
- package/lib/types/namespaces/services/authz.service.d.cts +10 -0
- package/lib/types/namespaces/services/authz.service.d.mts +10 -0
- package/lib/types/namespaces/services/bootstrap.service.d.cts +21 -0
- package/lib/types/namespaces/services/bootstrap.service.d.mts +21 -0
- package/lib/types/namespaces/services/effective-permission.service.d.cts +13 -0
- package/lib/types/namespaces/services/effective-permission.service.d.mts +13 -0
- package/lib/types/namespaces/services/group-membership.service.d.cts +10 -0
- package/lib/types/namespaces/services/group-membership.service.d.mts +10 -0
- package/lib/types/namespaces/services/group.service.d.cts +9 -0
- package/lib/types/namespaces/services/group.service.d.mts +9 -0
- package/lib/types/namespaces/services/index.d.cts +24 -0
- package/lib/types/namespaces/services/index.d.mts +24 -0
- package/lib/types/namespaces/services/inheritance-block.service.d.cts +10 -0
- package/lib/types/namespaces/services/inheritance-block.service.d.mts +10 -0
- package/lib/types/namespaces/services/org-unit-closure.service.d.cts +11 -0
- package/lib/types/namespaces/services/org-unit-closure.service.d.mts +11 -0
- package/lib/types/namespaces/services/org-unit-membership.service.d.cts +11 -0
- package/lib/types/namespaces/services/org-unit-membership.service.d.mts +11 -0
- package/lib/types/namespaces/services/org-unit-profile.service.d.cts +7 -0
- package/lib/types/namespaces/services/org-unit-profile.service.d.mts +7 -0
- package/lib/types/namespaces/services/org-unit.service.d.cts +18 -0
- package/lib/types/namespaces/services/org-unit.service.d.mts +18 -0
- package/lib/types/namespaces/services/permission.service.d.cts +10 -0
- package/lib/types/namespaces/services/permission.service.d.mts +10 -0
- package/lib/types/namespaces/services/principal.service.d.cts +11 -0
- package/lib/types/namespaces/services/principal.service.d.mts +11 -0
- package/lib/types/namespaces/services/protected-resource.service.d.cts +13 -0
- package/lib/types/namespaces/services/protected-resource.service.d.mts +13 -0
- package/lib/types/namespaces/services/resource-grant.service.d.cts +12 -0
- package/lib/types/namespaces/services/resource-grant.service.d.mts +12 -0
- package/lib/types/namespaces/services/resource-lifecycle.service.d.cts +10 -0
- package/lib/types/namespaces/services/resource-lifecycle.service.d.mts +10 -0
- package/lib/types/namespaces/services/role-assignment.service.d.cts +12 -0
- package/lib/types/namespaces/services/role-assignment.service.d.mts +12 -0
- package/lib/types/namespaces/services/role-permission.service.d.cts +12 -0
- package/lib/types/namespaces/services/role-permission.service.d.mts +12 -0
- package/lib/types/namespaces/services/role.service.d.cts +12 -0
- package/lib/types/namespaces/services/role.service.d.mts +12 -0
- package/lib/types/namespaces/services/storage-binding.service.d.cts +12 -0
- package/lib/types/namespaces/services/storage-binding.service.d.mts +12 -0
- package/lib/types/namespaces/services/system-management.service.d.cts +14 -0
- package/lib/types/namespaces/services/system-management.service.d.mts +14 -0
- package/lib/types/namespaces/services/tenant-membership.service.d.cts +11 -0
- package/lib/types/namespaces/services/tenant-membership.service.d.mts +11 -0
- package/lib/types/namespaces/services/tenant-profile.service.d.cts +8 -0
- package/lib/types/namespaces/services/tenant-profile.service.d.mts +8 -0
- package/lib/types/namespaces/services/tenant.service.d.cts +12 -0
- package/lib/types/namespaces/services/tenant.service.d.mts +12 -0
- package/lib/types/namespaces/services/user.service.d.cts +11 -0
- package/lib/types/namespaces/services/user.service.d.mts +11 -0
- package/lib/types/namespaces/types.d.cts +230 -0
- package/lib/types/namespaces/types.d.mts +230 -0
- package/lib/types/namespaces/utils.d.cts +68 -0
- package/lib/types/namespaces/utils.d.mts +68 -0
- package/lib/types/nest/authService.d.cts +1 -0
- package/lib/types/nest/authService.d.mts +1 -0
- package/lib/types/nest/graph/GraphExecutionController.d.cts +62 -0
- package/lib/types/nest/graph/GraphExecutionController.d.mts +62 -0
- package/lib/types/nest/graph/GraphExecutionModule.d.cts +39 -0
- package/lib/types/nest/graph/GraphExecutionModule.d.mts +39 -0
- package/lib/types/nest/graph/GraphExecutionResultModel.d.cts +46 -0
- package/lib/types/nest/graph/GraphExecutionResultModel.d.mts +46 -0
- package/lib/types/nest/graph/GraphExecutionResultRepository.d.cts +38 -0
- package/lib/types/nest/graph/GraphExecutionResultRepository.d.mts +38 -0
- package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.cts +17 -0
- package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.mts +17 -0
- package/lib/types/nest/graph/index.d.cts +10 -0
- package/lib/types/nest/graph/index.d.mts +10 -0
- package/lib/types/nest/index.d.cts +1 -0
- package/lib/types/nest/index.d.mts +1 -0
- package/package.json +16 -5
- package/sql/001_constraints.sql +11 -0
- package/sql/002_rls.sql +20 -0
- package/sql/003_indexes.sql +2 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EffectivePermissionService = void 0;
|
|
4
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
5
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
6
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
7
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
8
|
+
else
|
|
9
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
10
|
+
if (d = decorators[i])
|
|
11
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
12
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13
|
+
};
|
|
14
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
15
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
16
|
+
return Reflect.metadata(k, v);
|
|
17
|
+
};
|
|
18
|
+
const utils_js_1 = require("./../utils.cjs");
|
|
19
|
+
const types_js_1 = require("./../types.cjs");
|
|
20
|
+
const effective_permission_model_1 = require("../models/effective-permission.model");
|
|
21
|
+
const role_assignment_service_1 = require("./role-assignment.service");
|
|
22
|
+
const role_permission_service_1 = require("./role-permission.service");
|
|
23
|
+
const permission_service_1 = require("./permission.service");
|
|
24
|
+
const group_membership_service_1 = require("./group-membership.service");
|
|
25
|
+
const principal_service_1 = require("./principal.service");
|
|
26
|
+
const org_unit_closure_service_1 = require("./org-unit-closure.service");
|
|
27
|
+
const inheritance_block_service_1 = require("./inheritance-block.service");
|
|
28
|
+
class EffectivePermissionService extends utils_js_1.BaseModelService {
|
|
29
|
+
constructor() {
|
|
30
|
+
super(effective_permission_model_1.EffectivePermission);
|
|
31
|
+
}
|
|
32
|
+
async listForPrincipal(tenantId, principalId, ...args) {
|
|
33
|
+
return (await this.listAll(...args)).filter((permission) => (0, utils_js_1.sameTenant)(permission.tenant, tenantId) && (0, utils_js_1.relationMatch)(permission.principal, principalId));
|
|
34
|
+
}
|
|
35
|
+
async listForScope(tenantId, scopeKind, scopeId, ...args) {
|
|
36
|
+
return (await this.listAll(...args)).filter((permission) => (0, utils_js_1.sameTenant)(permission.tenant, tenantId) && permission.scopeKind === scopeKind && permission.scopeId === scopeId);
|
|
37
|
+
}
|
|
38
|
+
async hasPermission(tenantId, principalId, permissionKey, scopeKind, scopeId, at, ...args) {
|
|
39
|
+
return (await this.listForPrincipal(tenantId, principalId, ...args)).some((permission) => permission.permissionKey === permissionKey &&
|
|
40
|
+
permission.scopeKind === scopeKind &&
|
|
41
|
+
permission.scopeId === scopeId &&
|
|
42
|
+
(!permission.startsAt || !at || permission.startsAt <= at) &&
|
|
43
|
+
(!permission.expiresAt || !at || permission.expiresAt >= at));
|
|
44
|
+
}
|
|
45
|
+
async deleteForPrincipal(tenantId, principalId, ...args) {
|
|
46
|
+
for (const row of await this.listForPrincipal(tenantId, principalId, ...args)) {
|
|
47
|
+
await this.deleteById(row.id, ...args);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async deleteForTenant(tenantId, ...args) {
|
|
51
|
+
for (const row of (await this.listAll(...args)).filter((permission) => (0, utils_js_1.sameTenant)(permission.tenant, tenantId))) {
|
|
52
|
+
await this.deleteById(row.id, ...args);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async rebuildForPrincipal(tenantId, principalId, ...args) {
|
|
56
|
+
await this.deleteForPrincipal(tenantId, principalId, ...args);
|
|
57
|
+
const roleAssignmentService = new role_assignment_service_1.RoleAssignmentService();
|
|
58
|
+
const rolePermissionService = new role_permission_service_1.RolePermissionService();
|
|
59
|
+
const permissionService = new permission_service_1.PermissionService();
|
|
60
|
+
const groupMembershipService = new group_membership_service_1.GroupMembershipService();
|
|
61
|
+
const principalService = new principal_service_1.PrincipalService();
|
|
62
|
+
const orgUnitClosureService = new org_unit_closure_service_1.OrgUnitClosureService();
|
|
63
|
+
const inheritanceBlockService = new inheritance_block_service_1.InheritanceBlockService();
|
|
64
|
+
const materialized = [];
|
|
65
|
+
const sourceAssignments = await roleAssignmentService.listPrincipalAssignments(tenantId, principalId, ...args);
|
|
66
|
+
const groupMemberships = await groupMembershipService.listPrincipalGroups(principalId, ...args);
|
|
67
|
+
const groupAssignments = (await Promise.all(groupMemberships.map(async (membership) => {
|
|
68
|
+
const groupPrincipal = await principalService.getGroupPrincipal((0, utils_js_1.relationId)(membership.tenant), (0, utils_js_1.relationId)(membership.group), ...args);
|
|
69
|
+
return roleAssignmentService.listPrincipalAssignments(tenantId, groupPrincipal.id, ...args);
|
|
70
|
+
}))).flat();
|
|
71
|
+
const assignments = [...sourceAssignments, ...groupAssignments];
|
|
72
|
+
for (const assignment of assignments) {
|
|
73
|
+
const rolePermissions = await rolePermissionService.listRolePermissions((0, utils_js_1.relationId)(assignment.role), ...args);
|
|
74
|
+
const permissions = await Promise.all(rolePermissions.map(async (rolePermission) => permissionService.findOneBy("id", (0, utils_js_1.relationId)(rolePermission.permission), ...args)));
|
|
75
|
+
for (const permission of permissions) {
|
|
76
|
+
if (!permission)
|
|
77
|
+
continue;
|
|
78
|
+
const scopeKind = assignment.scopeKind;
|
|
79
|
+
const scopeId = assignment.scopeId;
|
|
80
|
+
const scopes = [];
|
|
81
|
+
if (scopeKind === types_js_1.ScopeKind.Tenant) {
|
|
82
|
+
scopes.push({ scopeKind, scopeId: tenantId });
|
|
83
|
+
}
|
|
84
|
+
else if (scopeKind === types_js_1.ScopeKind.Resource) {
|
|
85
|
+
scopes.push({ scopeKind, scopeId });
|
|
86
|
+
}
|
|
87
|
+
else if (scopeKind === types_js_1.ScopeKind.OrgUnit && !assignment.inheritDown) {
|
|
88
|
+
scopes.push({ scopeKind, scopeId });
|
|
89
|
+
}
|
|
90
|
+
else if (scopeKind === types_js_1.ScopeKind.OrgUnit && assignment.inheritDown) {
|
|
91
|
+
const descendants = await orgUnitClosureService.listDescendants(tenantId, scopeId, ...args);
|
|
92
|
+
scopes.push(...descendants.map((row) => ({ scopeKind, scopeId: (0, utils_js_1.relationId)(row.descendant) })));
|
|
93
|
+
}
|
|
94
|
+
for (const scoped of scopes) {
|
|
95
|
+
if (scopeKind === types_js_1.ScopeKind.OrgUnit &&
|
|
96
|
+
assignment.inheritDown &&
|
|
97
|
+
scoped.scopeId !== scopeId &&
|
|
98
|
+
(await inheritanceBlockService.categoryBlockedForAncestor(tenantId, scoped.scopeId, scopeId, permission.category, ...args))) {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
materialized.push({
|
|
102
|
+
id: "",
|
|
103
|
+
tenantId,
|
|
104
|
+
principalId,
|
|
105
|
+
permissionKey: permission.key,
|
|
106
|
+
scopeKind: scoped.scopeKind,
|
|
107
|
+
scopeId: scoped.scopeId,
|
|
108
|
+
sourceKind: "role_assignment",
|
|
109
|
+
sourceId: assignment.id,
|
|
110
|
+
startsAt: assignment.startsAt,
|
|
111
|
+
expiresAt: assignment.expiresAt,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const created = await Promise.all(materialized.map((permission) => this.create({
|
|
117
|
+
tenant: permission.tenantId,
|
|
118
|
+
principal: permission.principalId,
|
|
119
|
+
permissionKey: permission.permissionKey,
|
|
120
|
+
scopeKind: permission.scopeKind,
|
|
121
|
+
scopeId: permission.scopeId,
|
|
122
|
+
sourceKind: permission.sourceKind,
|
|
123
|
+
sourceId: permission.sourceId,
|
|
124
|
+
startsAt: permission.startsAt,
|
|
125
|
+
expiresAt: permission.expiresAt,
|
|
126
|
+
}, ...args)));
|
|
127
|
+
return created;
|
|
128
|
+
}
|
|
129
|
+
async rebuildForTenant(tenantId, ...args) {
|
|
130
|
+
const principals = (await new principal_service_1.PrincipalService().listAll(...args)).filter((principal) => (0, utils_js_1.sameTenant)(principal.tenant, tenantId));
|
|
131
|
+
for (const principal of principals) {
|
|
132
|
+
await this.rebuildForPrincipal(tenantId, principal.id, ...args);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
exports.EffectivePermissionService = EffectivePermissionService;
|
|
137
|
+
__decorate([
|
|
138
|
+
(0, utils_js_1.transactional)(),
|
|
139
|
+
__metadata("design:type", Function),
|
|
140
|
+
__metadata("design:paramtypes", [String, String, Object]),
|
|
141
|
+
__metadata("design:returntype", Promise)
|
|
142
|
+
], EffectivePermissionService.prototype, "rebuildForPrincipal", null);
|
|
143
|
+
__decorate([
|
|
144
|
+
(0, utils_js_1.transactional)(),
|
|
145
|
+
__metadata("design:type", Function),
|
|
146
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
147
|
+
__metadata("design:returntype", Promise)
|
|
148
|
+
], EffectivePermissionService.prototype, "rebuildForTenant", null);
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0aXZlLXBlcm1pc3Npb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW1lc3BhY2VzL3NlcnZpY2VzL2VmZmVjdGl2ZS1wZXJtaXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxzQkFBaUI7QUFDbEcsT0FBTyxFQUErQixTQUFTLEVBQUUsc0JBQWlCO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXRFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxnQkFBcUM7SUFDbkY7UUFDRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQWdCLEVBQUUsV0FBbUIsRUFBRSxHQUFHLElBQVc7UUFDMUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUN6QyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFB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RSxFQUFFLENBQzlCLElBQUksQ0FBQyxNQUFNLENBQ1Q7WUFDRSxNQUFNLEVBQUUsVUFBVSxDQUFDLFFBQVE7WUFDM0IsU0FBUyxFQUFFLFVBQVUsQ0FBQyxXQUFXO1lBQ2pDLGFBQWEsRUFBRSxVQUFVLENBQUMsYUFBYTtZQUN2QyxTQUFTLEVBQUUsVUFBVSxDQUFDLFNBQVM7WUFDL0IsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPO1lBQzNCLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVTtZQUNqQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7WUFDN0IsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRO1lBQzdCLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUztTQUNoQyxFQUNELEdBQUcsSUFBSSxDQUNSLENBQ0YsQ0FDRixDQUFDO1FBQ0YsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUdLLEFBQU4sS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQWdCLEVBQUUsR0FBRyxJQUFXO1FBQ3JELE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxJQUFJLGdCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDakksS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUExR087SUFETCxhQUFhLEVBQUU7Ozs7cUVBa0dmO0FBR0s7SUFETCxhQUFhLEVBQUU7Ozs7a0VBTWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlTW9kZWxTZXJ2aWNlLCByZWxhdGlvbklkLCByZWxhdGlvbk1hdGNoLCBzYW1lVGVuYW50LCB0cmFuc2FjdGlvbmFsIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBFZmZlY3RpdmVQZXJtaXNzaW9uU25hcHNob3QsIFNjb3BlS2luZCB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgRWZmZWN0aXZlUGVybWlzc2lvbiB9IGZyb20gXCIuLi9tb2RlbHMvZWZmZWN0aXZlLXBlcm1pc3Npb24ubW9kZWxcIjtcbmltcG9ydCB7IFJvbGVBc3NpZ25tZW50U2VydmljZSB9IGZyb20gXCIuL3JvbGUtYXNzaWdubWVudC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBSb2xlUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9yb2xlLXBlcm1pc3Npb24uc2VydmljZVwiO1xuaW1wb3J0IHsgUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9wZXJtaXNzaW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IEdyb3VwTWVtYmVyc2hpcFNlcnZpY2UgfSBmcm9tIFwiLi9ncm91cC1tZW1iZXJzaGlwLnNlcnZpY2VcIjtcbmltcG9ydCB7IFByaW5jaXBhbFNlcnZpY2UgfSBmcm9tIFwiLi9wcmluY2lwYWwuc2VydmljZVwiO1xuaW1wb3J0IHsgT3JnVW5pdENsb3N1cmVTZXJ2aWNlIH0gZnJvbSBcIi4vb3JnLXVuaXQtY2xvc3VyZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBJbmhlcml0YW5jZUJsb2NrU2VydmljZSB9IGZyb20gXCIuL2luaGVyaXRhbmNlLWJsb2NrLnNlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIEVmZmVjdGl2ZVBlcm1pc3Npb25TZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZTxFZmZlY3RpdmVQZXJtaXNzaW9uPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKEVmZmVjdGl2ZVBlcm1pc3Npb24pO1xuICB9XG5cbiAgYXN5bmMgbGlzdEZvclByaW5jaXBhbCh0ZW5hbnRJZDogc3RyaW5nLCBwcmluY2lwYWxJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8RWZmZWN0aXZlUGVybWlzc2lvbltdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcihcbiAgICAgIChwZXJtaXNzaW9uKSA9PiBzYW1lVGVuYW50KHBlcm1pc3Npb24udGVuYW50LCB0ZW5hbnRJZCkgJiYgcmVsYXRpb25NYXRjaChwZXJtaXNzaW9uLnByaW5jaXBhbCwgcHJpbmNpcGFsSWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RGb3JTY29wZShcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHNjb3BlS2luZDogU2NvcGVLaW5kLFxuICAgIHNjb3BlSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPEVmZmVjdGl2ZVBlcm1pc3Npb25bXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoXG4gICAgICAocGVybWlzc2lvbikgPT4gc2FtZVRlbmFudChwZXJtaXNzaW9uLnRlbmFudCwgdGVuYW50SWQpICYmIHBlcm1pc3Npb24uc2NvcGVLaW5kID09PSBzY29wZUtpbmQgJiYgcGVybWlzc2lvbi5zY29wZUlkID09PSBzY29wZUlkXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGhhc1Blcm1pc3Npb24oXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nLFxuICAgIHBlcm1pc3Npb25LZXk6IHN0cmluZyxcbiAgICBzY29wZUtpbmQ6IFNjb3BlS2luZCxcbiAgICBzY29wZUlkOiBzdHJpbmcsXG4gICAgYXQ/OiBEYXRlLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0Rm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncykpLnNvbWUoXG4gICAgICAocGVybWlzc2lvbikgPT5cbiAgICAgICAgcGVybWlzc2lvbi5wZXJtaXNzaW9uS2V5ID09PSBwZXJtaXNzaW9uS2V5ICYmXG4gICAgICAgIHBlcm1pc3Npb24uc2NvcGVLaW5kID09PSBzY29wZUtpbmQgJiZcbiAgICAgICAgcGVybWlzc2lvbi5zY29wZUlkID09PSBzY29wZUlkICYmXG4gICAgICAgICghcGVybWlzc2lvbi5zdGFydHNBdCB8fCAhYXQgfHwgcGVybWlzc2lvbi5zdGFydHNBdCA8PSBhdCkgJiZcbiAgICAgICAgKCFwZXJtaXNzaW9uLmV4cGlyZXNBdCB8fCAhYXQgfHwgcGVybWlzc2lvbi5leHBpcmVzQXQgPj0gYXQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZvclByaW5jaXBhbCh0ZW5hbnRJZDogc3RyaW5nLCBwcmluY2lwYWxJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3Qgcm93IG9mIGF3YWl0IHRoaXMubGlzdEZvclByaW5jaXBhbCh0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIC4uLmFyZ3MpKSB7XG4gICAgICBhd2FpdCB0aGlzLmRlbGV0ZUJ5SWQocm93LmlkLCAuLi5hcmdzKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGVGb3JUZW5hbnQodGVuYW50SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHBlcm1pc3Npb24pID0+IHNhbWVUZW5hbnQocGVybWlzc2lvbi50ZW5hbnQsIHRlbmFudElkKSkpIHtcbiAgICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChyb3cuaWQsIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgcmVidWlsZEZvclByaW5jaXBhbCh0ZW5hbnRJZDogc3RyaW5nLCBwcmluY2lwYWxJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8RWZmZWN0aXZlUGVybWlzc2lvbltdPiB7XG4gICAgYXdhaXQgdGhpcy5kZWxldGVGb3JQcmluY2lwYWwodGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKTtcblxuICAgIGNvbnN0IHJvbGVBc3NpZ25tZW50U2VydmljZSA9IG5ldyBSb2xlQXNzaWdubWVudFNlcnZpY2UoKTtcbiAgICBjb25zdCByb2xlUGVybWlzc2lvblNlcnZpY2UgPSBuZXcgUm9sZVBlcm1pc3Npb25TZXJ2aWNlKCk7XG4gICAgY29uc3QgcGVybWlzc2lvblNlcnZpY2UgPSBuZXcgUGVybWlzc2lvblNlcnZpY2UoKTtcbiAgICBjb25zdCBncm91cE1lbWJlcnNoaXBTZXJ2aWNlID0gbmV3IEdyb3VwTWVtYmVyc2hpcFNlcnZpY2UoKTtcbiAgICBjb25zdCBwcmluY2lwYWxTZXJ2aWNlID0gbmV3IFByaW5jaXBhbFNlcnZpY2UoKTtcbiAgICBjb25zdCBvcmdVbml0Q2xvc3VyZVNlcnZpY2UgPSBuZXcgT3JnVW5pdENsb3N1cmVTZXJ2aWNlKCk7XG4gICAgY29uc3QgaW5oZXJpdGFuY2VCbG9ja1NlcnZpY2UgPSBuZXcgSW5oZXJpdGFuY2VCbG9ja1NlcnZpY2UoKTtcblxuICAgIGNvbnN0IG1hdGVyaWFsaXplZDogRWZmZWN0aXZlUGVybWlzc2lvblNuYXBzaG90W10gPSBbXTtcbiAgICBjb25zdCBzb3VyY2VBc3NpZ25tZW50cyA9IGF3YWl0IHJvbGVBc3NpZ25tZW50U2VydmljZS5saXN0UHJpbmNpcGFsQXNzaWdubWVudHModGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKTtcbiAgICBjb25zdCBncm91cE1lbWJlcnNoaXBzID0gYXdhaXQgZ3JvdXBNZW1iZXJzaGlwU2VydmljZS5saXN0UHJpbmNpcGFsR3JvdXBzKHByaW5jaXBhbElkLCAuLi5hcmdzKTtcbiAgICBjb25zdCBncm91cEFzc2lnbm1lbnRzID0gKFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGdyb3VwTWVtYmVyc2hpcHMubWFwKGFzeW5jIChtZW1iZXJzaGlwKSA9PiB7XG4gICAgICAgICAgY29uc3QgZ3JvdXBQcmluY2lwYWwgPSBhd2FpdCBwcmluY2lwYWxTZXJ2aWNlLmdldEdyb3VwUHJpbmNpcGFsKHJlbGF0aW9uSWQobWVtYmVyc2hpcC50ZW5hbnQpLCByZWxhdGlvbklkKG1lbWJlcnNoaXAuZ3JvdXApLCAuLi5hcmdzKTtcbiAgICAgICAgICByZXR1cm4gcm9sZUFzc2lnbm1lbnRTZXJ2aWNlLmxpc3RQcmluY2lwYWxBc3NpZ25tZW50cyh0ZW5hbnRJZCwgZ3JvdXBQcmluY2lwYWwuaWQsIC4uLmFyZ3MpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICkuZmxhdCgpO1xuXG4gICAgY29uc3QgYXNzaWdubWVudHMgPSBbLi4uc291cmNlQXNzaWdubWVudHMsIC4uLmdyb3VwQXNzaWdubWVudHNdO1xuICAgIGZvciAoY29uc3QgYXNzaWdubWVudCBvZiBhc3NpZ25tZW50cykge1xuICAgICAgY29uc3Qgcm9sZVBlcm1pc3Npb25zID0gYXdhaXQgcm9sZVBlcm1pc3Npb25TZXJ2aWNlLmxpc3RSb2xlUGVybWlzc2lvbnMocmVsYXRpb25JZChhc3NpZ25tZW50LnJvbGUpLCAuLi5hcmdzKTtcbiAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHJvbGVQZXJtaXNzaW9ucy5tYXAoYXN5bmMgKHJvbGVQZXJtaXNzaW9uKSA9PlxuICAgICAgICAgIHBlcm1pc3Npb25TZXJ2aWNlLmZpbmRPbmVCeShcImlkXCIsIHJlbGF0aW9uSWQocm9sZVBlcm1pc3Npb24ucGVybWlzc2lvbikgYXMgbmV2ZXIsIC4uLmFyZ3MpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgcGVybWlzc2lvbnMpIHtcbiAgICAgICAgaWYgKCFwZXJtaXNzaW9uKSBjb250aW51ZTtcbiAgICAgICAgY29uc3Qgc2NvcGVLaW5kID0gYXNzaWdubWVudC5zY29wZUtpbmQ7XG4gICAgICAgIGNvbnN0IHNjb3BlSWQgPSBhc3NpZ25tZW50LnNjb3BlSWQ7XG4gICAgICAgIGNvbnN0IHNjb3BlczogQXJyYXk8eyBzY29wZUtpbmQ6IFNjb3BlS2luZDsgc2NvcGVJZDogc3RyaW5nIH0+ID0gW107XG4gICAgICAgIGlmIChzY29wZUtpbmQgPT09IFNjb3BlS2luZC5UZW5hbnQpIHtcbiAgICAgICAgICBzY29wZXMucHVzaCh7IHNjb3BlS2luZCwgc2NvcGVJZDogdGVuYW50SWQgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NvcGVLaW5kID09PSBTY29wZUtpbmQuUmVzb3VyY2UpIHtcbiAgICAgICAgICBzY29wZXMucHVzaCh7IHNjb3BlS2luZCwgc2NvcGVJZCB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChzY29wZUtpbmQgPT09IFNjb3BlS2luZC5PcmdVbml0ICYmICFhc3NpZ25tZW50LmluaGVyaXREb3duKSB7XG4gICAgICAgICAgc2NvcGVzLnB1c2goeyBzY29wZUtpbmQsIHNjb3BlSWQgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NvcGVLaW5kID09PSBTY29wZUtpbmQuT3JnVW5pdCAmJiBhc3NpZ25tZW50LmluaGVyaXREb3duKSB7XG4gICAgICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSBhd2FpdCBvcmdVbml0Q2xvc3VyZVNlcnZpY2UubGlzdERlc2NlbmRhbnRzKHRlbmFudElkLCBzY29wZUlkLCAuLi5hcmdzKTtcbiAgICAgICAgICBzY29wZXMucHVzaCguLi5kZXNjZW5kYW50cy5tYXAoKHJvdykgPT4gKHsgc2NvcGVLaW5kLCBzY29wZUlkOiByZWxhdGlvbklkKHJvdy5kZXNjZW5kYW50KSB9KSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBzY29wZWQgb2Ygc2NvcGVzKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgc2NvcGVLaW5kID09PSBTY29wZUtpbmQuT3JnVW5pdCAmJlxuICAgICAgICAgICAgYXNzaWdubWVudC5pbmhlcml0RG93biAmJlxuICAgICAgICAgICAgc2NvcGVkLnNjb3BlSWQgIT09IHNjb3BlSWQgJiZcbiAgICAgICAgICAgIChhd2FpdCBpbmhlcml0YW5jZUJsb2NrU2VydmljZS5jYXRlZ29yeUJsb2NrZWRGb3JBbmNlc3RvcihcbiAgICAgICAgICAgICAgdGVuYW50SWQsXG4gICAgICAgICAgICAgIHNjb3BlZC5zY29wZUlkLFxuICAgICAgICAgICAgICBzY29wZUlkLFxuICAgICAgICAgICAgICBwZXJtaXNzaW9uLmNhdGVnb3J5LFxuICAgICAgICAgICAgICAuLi5hcmdzXG4gICAgICAgICAgICApKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG1hdGVyaWFsaXplZC5wdXNoKHtcbiAgICAgICAgICAgIGlkOiBcIlwiLFxuICAgICAgICAgICAgdGVuYW50SWQsXG4gICAgICAgICAgICBwcmluY2lwYWxJZCxcbiAgICAgICAgICAgIHBlcm1pc3Npb25LZXk6IHBlcm1pc3Npb24ua2V5LFxuICAgICAgICAgICAgc2NvcGVLaW5kOiBzY29wZWQuc2NvcGVLaW5kLFxuICAgICAgICAgICAgc2NvcGVJZDogc2NvcGVkLnNjb3BlSWQsXG4gICAgICAgICAgICBzb3VyY2VLaW5kOiBcInJvbGVfYXNzaWdubWVudFwiLFxuICAgICAgICAgICAgc291cmNlSWQ6IGFzc2lnbm1lbnQuaWQsXG4gICAgICAgICAgICBzdGFydHNBdDogYXNzaWdubWVudC5zdGFydHNBdCxcbiAgICAgICAgICAgIGV4cGlyZXNBdDogYXNzaWdubWVudC5leHBpcmVzQXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjcmVhdGVkID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBtYXRlcmlhbGl6ZWQubWFwKChwZXJtaXNzaW9uKSA9PlxuICAgICAgICB0aGlzLmNyZWF0ZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZW5hbnQ6IHBlcm1pc3Npb24udGVuYW50SWQsXG4gICAgICAgICAgICBwcmluY2lwYWw6IHBlcm1pc3Npb24ucHJpbmNpcGFsSWQsXG4gICAgICAgICAgICBwZXJtaXNzaW9uS2V5OiBwZXJtaXNzaW9uLnBlcm1pc3Npb25LZXksXG4gICAgICAgICAgICBzY29wZUtpbmQ6IHBlcm1pc3Npb24uc2NvcGVLaW5kLFxuICAgICAgICAgICAgc2NvcGVJZDogcGVybWlzc2lvbi5zY29wZUlkLFxuICAgICAgICAgICAgc291cmNlS2luZDogcGVybWlzc2lvbi5zb3VyY2VLaW5kLFxuICAgICAgICAgICAgc291cmNlSWQ6IHBlcm1pc3Npb24uc291cmNlSWQsXG4gICAgICAgICAgICBzdGFydHNBdDogcGVybWlzc2lvbi5zdGFydHNBdCxcbiAgICAgICAgICAgIGV4cGlyZXNBdDogcGVybWlzc2lvbi5leHBpcmVzQXQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAuLi5hcmdzXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybiBjcmVhdGVkO1xuICB9XG5cbiAgQHRyYW5zYWN0aW9uYWwoKVxuICBhc3luYyByZWJ1aWxkRm9yVGVuYW50KHRlbmFudElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcHJpbmNpcGFscyA9IChhd2FpdCBuZXcgUHJpbmNpcGFsU2VydmljZSgpLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigocHJpbmNpcGFsKSA9PiBzYW1lVGVuYW50KHByaW5jaXBhbC50ZW5hbnQsIHRlbmFudElkKSk7XG4gICAgZm9yIChjb25zdCBwcmluY2lwYWwgb2YgcHJpbmNpcGFscykge1xuICAgICAgYXdhaXQgdGhpcy5yZWJ1aWxkRm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWwuaWQsIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0aXZlLXBlcm1pc3Npb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVmZmVjdGl2ZS1wZXJtaXNzaW9uLnNlcnZpY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSTtJQUNqRixJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdILElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxVQUFVO1FBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7O1FBQzFILEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxD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dEUsVUFBVSxDQUFDO0lBQ1AsSUFBQSx3QkFBYSxHQUFFO0lBQ2YsVUFBVSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUM7SUFDbkMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUM7Q0FDM0MsRUFBRSwwQkFBMEIsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkUsOGtqQkFBOGtqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbnZhciBfX21ldGFkYXRhID0gKHRoaXMgJiYgdGhpcy5fX21ldGFkYXRhKSB8fCBmdW5jdGlvbiAoaywgdikge1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShrLCB2KTtcbn07XG5pbXBvcnQgeyBCYXNlTW9kZWxTZXJ2aWNlLCByZWxhdGlvbklkLCByZWxhdGlvbk1hdGNoLCBzYW1lVGVuYW50LCB0cmFuc2FjdGlvbmFsIH0gZnJvbSBcIi4vLi4vdXRpbHMuanNcIjtcbmltcG9ydCB7IFNjb3BlS2luZCB9IGZyb20gXCIuLy4uL3R5cGVzLmpzXCI7XG5pbXBvcnQgeyBFZmZlY3RpdmVQZXJtaXNzaW9uIH0gZnJvbSBcIi4uL21vZGVscy9lZmZlY3RpdmUtcGVybWlzc2lvbi5tb2RlbFwiO1xuaW1wb3J0IHsgUm9sZUFzc2lnbm1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vcm9sZS1hc3NpZ25tZW50LnNlcnZpY2VcIjtcbmltcG9ydCB7IFJvbGVQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gXCIuL3JvbGUtcGVybWlzc2lvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gXCIuL3Blcm1pc3Npb24uc2VydmljZVwiO1xuaW1wb3J0IHsgR3JvdXBNZW1iZXJzaGlwU2VydmljZSB9IGZyb20gXCIuL2dyb3VwLW1lbWJlcnNoaXAuc2VydmljZVwiO1xuaW1wb3J0IHsgUHJpbmNpcGFsU2VydmljZSB9IGZyb20gXCIuL3ByaW5jaXBhbC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBPcmdVbml0Q2xvc3VyZVNlcnZpY2UgfSBmcm9tIFwiLi9vcmctdW5pdC1jbG9zdXJlLnNlcnZpY2VcIjtcbmltcG9ydCB7IEluaGVyaXRhbmNlQmxvY2tTZXJ2aWNlIH0gZnJvbSBcIi4vaW5oZXJpdGFuY2UtYmxvY2suc2VydmljZVwiO1xuZXhwb3J0IGNsYXNzIEVmZmVjdGl2ZVBlcm1pc3Npb25TZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKEVmZmVjdGl2ZVBlcm1pc3Npb24pO1xuICAgIH1cbiAgICBhc3luYyBsaXN0Rm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChwZXJtaXNzaW9uKSA9PiBzYW1lVGVuYW50KHBlcm1pc3Npb24udGVuYW50LCB0ZW5hbnRJZCkgJiYgcmVsYXRpb25NYXRjaChwZXJtaXNzaW9uLnByaW5jaXBhbCwgcHJpbmNpcGFsSWQpKTtcbiAgICB9XG4gICAgYXN5bmMgbGlzdEZvclNjb3BlKHRlbmFudElkLCBzY29wZUtpbmQsIHNjb3BlSWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigocGVybWlzc2lvbikgPT4gc2FtZVRlbmFudChwZXJtaXNzaW9uLnRlbmFudCwgdGVuYW50SWQpICYmIHBlcm1pc3Npb24uc2NvcGVLaW5kID09PSBzY29wZUtpbmQgJiYgcGVybWlzc2lvbi5zY29wZUlkID09PSBzY29wZUlkKTtcbiAgICB9XG4gICAgYXN5bmMgaGFzUGVybWlzc2lvbih0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIHBlcm1pc3Npb25LZXksIHNjb3BlS2luZCwgc2NvcGVJZCwgYXQsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RGb3JQcmluY2lwYWwodGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKSkuc29tZSgocGVybWlzc2lvbikgPT4gcGVybWlzc2lvbi5wZXJtaXNzaW9uS2V5ID09PSBwZXJtaXNzaW9uS2V5ICYmXG4gICAgICAgICAgICBwZXJtaXNzaW9uLnNjb3BlS2luZCA9PT0gc2NvcGVLaW5kICYmXG4gICAgICAgICAgICBwZXJtaXNzaW9uLnNjb3BlSWQgPT09IHNjb3BlSWQgJiZcbiAgICAgICAgICAgICghcGVybWlzc2lvbi5zdGFydHNBdCB8fCAhYXQgfHwgcGVybWlzc2lvbi5zdGFydHNBdCA8PSBhdCkgJiZcbiAgICAgICAgICAgICghcGVybWlzc2lvbi5leHBpcmVzQXQgfHwgIWF0IHx8IHBlcm1pc3Npb24uZXhwaXJlc0F0ID49IGF0KSk7XG4gICAgfVxuICAgIGFzeW5jIGRlbGV0ZUZvclByaW5jaXBhbCh0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2YgYXdhaXQgdGhpcy5saXN0Rm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncykpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChyb3cuaWQsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGRlbGV0ZUZvclRlbmFudCh0ZW5hbnRJZCwgLi4uYXJncykge1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHBlcm1pc3Npb24pID0+IHNhbWVUZW5hbnQocGVybWlzc2lvbi50ZW5hbnQsIHRlbmFudElkKSkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChyb3cuaWQsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHJlYnVpbGRGb3JQcmluY2lwYWwodGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlRm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncyk7XG4gICAgICAgIGNvbnN0IHJvbGVBc3NpZ25tZW50U2VydmljZSA9IG5ldyBSb2xlQXNzaWdubWVudFNlcnZpY2UoKTtcbiAgICAgICAgY29uc3Qgcm9sZVBlcm1pc3Npb25TZXJ2aWNlID0gbmV3IFJvbGVQZXJtaXNzaW9uU2VydmljZSgpO1xuICAgICAgICBjb25zdCBwZXJtaXNzaW9uU2VydmljZSA9IG5ldyBQZXJtaXNzaW9uU2VydmljZSgpO1xuICAgICAgICBjb25zdCBncm91cE1lbWJlcnNoaXBTZXJ2aWNlID0gbmV3IEdyb3VwTWVtYmVyc2hpcFNlcnZpY2UoKTtcbiAgICAgICAgY29uc3QgcHJpbmNpcGFsU2VydmljZSA9IG5ldyBQcmluY2lwYWxTZXJ2aWNlKCk7XG4gICAgICAgIGNvbnN0IG9yZ1VuaXRDbG9zdXJlU2VydmljZSA9IG5ldyBPcmdVbml0Q2xvc3VyZVNlcnZpY2UoKTtcbiAgICAgICAgY29uc3QgaW5oZXJpdGFuY2VCbG9ja1NlcnZpY2UgPSBuZXcgSW5oZXJpdGFuY2VCbG9ja1NlcnZpY2UoKTtcbiAgICAgICAgY29uc3QgbWF0ZXJpYWxpemVkID0gW107XG4gICAgICAgIGNvbnN0IHNvdXJjZUFzc2lnbm1lbnRzID0gYXdhaXQgcm9sZUFzc2lnbm1lbnRTZXJ2aWNlLmxpc3RQcmluY2lwYWxBc3NpZ25tZW50cyh0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIC4uLmFyZ3MpO1xuICAgICAgICBjb25zdCBncm91cE1lbWJlcnNoaXBzID0gYXdhaXQgZ3JvdXBNZW1iZXJzaGlwU2VydmljZS5saXN0UHJpbmNpcGFsR3JvdXBzKHByaW5jaXBhbElkLCAuLi5hcmdzKTtcbiAgICAgICAgY29uc3QgZ3JvdXBBc3NpZ25tZW50cyA9IChhd2FpdCBQcm9taXNlLmFsbChncm91cE1lbWJlcnNoaXBzLm1hcChhc3luYyAobWVtYmVyc2hpcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBQcmluY2lwYWwgPSBhd2FpdCBwcmluY2lwYWxTZXJ2aWNlLmdldEdyb3VwUHJpbmNpcGFsKHJlbGF0aW9uSWQobWVtYmVyc2hpcC50ZW5hbnQpLCByZWxhdGlvbklkKG1lbWJlcnNoaXAuZ3JvdXApLCAuLi5hcmdzKTtcbiAgICAgICAgICAgIHJldHVybiByb2xlQXNzaWdubWVudFNlcnZpY2UubGlzdFByaW5jaXBhbEFzc2lnbm1lbnRzKHRlbmFudElkLCBncm91cFByaW5jaXBhbC5pZCwgLi4uYXJncyk7XG4gICAgICAgIH0pKSkuZmxhdCgpO1xuICAgICAgICBjb25zdCBhc3NpZ25tZW50cyA9IFsuLi5zb3VyY2VBc3NpZ25tZW50cywgLi4uZ3JvdXBBc3NpZ25tZW50c107XG4gICAgICAgIGZvciAoY29uc3QgYXNzaWdubWVudCBvZiBhc3NpZ25tZW50cykge1xuICAgICAgICAgICAgY29uc3Qgcm9sZVBlcm1pc3Npb25zID0gYXdhaXQgcm9sZVBlcm1pc3Npb25TZXJ2aWNlLmxpc3RSb2xlUGVybWlzc2lvbnMocmVsYXRpb25JZChhc3NpZ25tZW50LnJvbGUpLCAuLi5hcmdzKTtcbiAgICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gYXdhaXQgUHJvbWlzZS5hbGwocm9sZVBlcm1pc3Npb25zLm1hcChhc3luYyAocm9sZVBlcm1pc3Npb24pID0+IHBlcm1pc3Npb25TZXJ2aWNlLmZpbmRPbmVCeShcImlkXCIsIHJlbGF0aW9uSWQocm9sZVBlcm1pc3Npb24ucGVybWlzc2lvbiksIC4uLmFyZ3MpKSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgcGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXBlcm1pc3Npb24pXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjb3BlS2luZCA9IGFzc2lnbm1lbnQuc2NvcGVLaW5kO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjb3BlSWQgPSBhc3NpZ25tZW50LnNjb3BlSWQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NvcGVzID0gW107XG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlS2luZCA9PT0gU2NvcGVLaW5kLlRlbmFudCkge1xuICAgICAgICAgICAgICAgICAgICBzY29wZXMucHVzaCh7IHNjb3BlS2luZCwgc2NvcGVJZDogdGVuYW50SWQgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3BlS2luZCA9PT0gU2NvcGVLaW5kLlJlc291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3Blcy5wdXNoKHsgc2NvcGVLaW5kLCBzY29wZUlkIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzY29wZUtpbmQgPT09IFNjb3BlS2luZC5PcmdVbml0ICYmICFhc3NpZ25tZW50LmluaGVyaXREb3duKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3Blcy5wdXNoKHsgc2NvcGVLaW5kLCBzY29wZUlkIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzY29wZUtpbmQgPT09IFNjb3BlS2luZC5PcmdVbml0ICYmIGFzc2lnbm1lbnQuaW5oZXJpdERvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSBhd2FpdCBvcmdVbml0Q2xvc3VyZVNlcnZpY2UubGlzdERlc2NlbmRhbnRzKHRlbmFudElkLCBzY29wZUlkLCAuLi5hcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgc2NvcGVzLnB1c2goLi4uZGVzY2VuZGFudHMubWFwKChyb3cpID0+ICh7IHNjb3BlS2luZCwgc2NvcGVJZDogcmVsYXRpb25JZChyb3cuZGVzY2VuZGFudCkgfSkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzY29wZWQgb2Ygc2NvcGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZUtpbmQgPT09IFNjb3BlS2luZC5PcmdVbml0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50LmluaGVyaXREb3duICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZWQuc2NvcGVJZCAhPT0gc2NvcGVJZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGF3YWl0IGluaGVyaXRhbmNlQmxvY2tTZXJ2aWNlLmNhdGVnb3J5QmxvY2tlZEZvckFuY2VzdG9yKHRlbmFudElkLCBzY29wZWQuc2NvcGVJZCwgc2NvcGVJZCwgcGVybWlzc2lvbi5jYXRlZ29yeSwgLi4uYXJncykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbGl6ZWQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbmFudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpbmNpcGFsSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uS2V5OiBwZXJtaXNzaW9uLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlS2luZDogc2NvcGVkLnNjb3BlS2luZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlSWQ6IHNjb3BlZC5zY29wZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlS2luZDogXCJyb2xlX2Fzc2lnbm1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUlkOiBhc3NpZ25tZW50LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRzQXQ6IGFzc2lnbm1lbnQuc3RhcnRzQXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBpcmVzQXQ6IGFzc2lnbm1lbnQuZXhwaXJlc0F0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IFByb21pc2UuYWxsKG1hdGVyaWFsaXplZC5tYXAoKHBlcm1pc3Npb24pID0+IHRoaXMuY3JlYXRlKHtcbiAgICAgICAgICAgIHRlbmFudDogcGVybWlzc2lvbi50ZW5hbnRJZCxcbiAgICAgICAgICAgIHByaW5jaXBhbDogcGVybWlzc2lvbi5wcmluY2lwYWxJZCxcbiAgICAgICAgICAgIHBlcm1pc3Npb25LZXk6IHBlcm1pc3Npb24ucGVybWlzc2lvbktleSxcbiAgICAgICAgICAgIHNjb3BlS2luZDogcGVybWlzc2lvbi5zY29wZUtpbmQsXG4gICAgICAgICAgICBzY29wZUlkOiBwZXJtaXNzaW9uLnNjb3BlSWQsXG4gICAgICAgICAgICBzb3VyY2VLaW5kOiBwZXJtaXNzaW9uLnNvdXJjZUtpbmQsXG4gICAgICAgICAgICBzb3VyY2VJZDogcGVybWlzc2lvbi5zb3VyY2VJZCxcbiAgICAgICAgICAgIHN0YXJ0c0F0OiBwZXJtaXNzaW9uLnN0YXJ0c0F0LFxuICAgICAgICAgICAgZXhwaXJlc0F0OiBwZXJtaXNzaW9uLmV4cGlyZXNBdCxcbiAgICAgICAgfSwgLi4uYXJncykpKTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZWQ7XG4gICAgfVxuICAgIGFzeW5jIHJlYnVpbGRGb3JUZW5hbnQodGVuYW50SWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgcHJpbmNpcGFscyA9IChhd2FpdCBuZXcgUHJpbmNpcGFsU2VydmljZSgpLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigocHJpbmNpcGFsKSA9PiBzYW1lVGVuYW50KHByaW5jaXBhbC50ZW5hbnQsIHRlbmFudElkKSk7XG4gICAgICAgIGZvciAoY29uc3QgcHJpbmNpcGFsIG9mIHByaW5jaXBhbHMpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVidWlsZEZvclByaW5jaXBhbCh0ZW5hbnRJZCwgcHJpbmNpcGFsLmlkLCAuLi5hcmdzKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbl9fZGVjb3JhdGUoW1xuICAgIHRyYW5zYWN0aW9uYWwoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRnVuY3Rpb24pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246cGFyYW10eXBlc1wiLCBbU3RyaW5nLCBTdHJpbmcsIE9iamVjdF0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246cmV0dXJudHlwZVwiLCBQcm9taXNlKVxuXSwgRWZmZWN0aXZlUGVybWlzc2lvblNlcnZpY2UucHJvdG90eXBlLCBcInJlYnVpbGRGb3JQcmluY2lwYWxcIiwgbnVsbCk7XG5fX2RlY29yYXRlKFtcbiAgICB0cmFuc2FjdGlvbmFsKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEZ1bmN0aW9uKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnBhcmFtdHlwZXNcIiwgW1N0cmluZywgT2JqZWN0XSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpyZXR1cm50eXBlXCIsIFByb21pc2UpXG5dLCBFZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZS5wcm90b3R5cGUsIFwicmVidWlsZEZvclRlbmFudFwiLCBudWxsKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpXWm1aV04wYVhabExYQmxjbTFwYzNOcGIyNHVjMlZ5ZG1salpTNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwzTnlZeTl1WVcxbGMzQmhZMlZ6TDNObGNuWnBZMlZ6TDJWbVptVmpkR2wyWlMxd1pYSnRhWE56YVc5dUxuTmxjblpwWTJVdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN08wRkJRVUVzVDBGQlR5eEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxGVkJRVlVzUlVGQlJTeGhRVUZoTEVWQlFVVXNWVUZCVlN4RlFVRkZMR0ZCUVdFc1JVRkJSU3h6UWtGQmFVSTdRVUZEYkVjc1QwRkJUeXhGUVVFclFpeFRRVUZUTEVWQlFVVXNjMEpCUVdsQ08wRkJRMnhGTEU5QlFVOHNSVUZCUlN4dFFrRkJiVUlzUlVGQlJTeE5RVUZOTEhORFFVRnpReXhEUVVGRE8wRkJRek5GTEU5QlFVOHNSVUZCUlN4eFFrRkJjVUlzUlVGQlJTeE5RVUZOTERKQ1FVRXlRaXhEUVVGRE8wRkJRMnhGTEU5QlFVOHNSVUZCUlN4eFFrRkJjVUlzUlVGQlJTeE5RVUZOTERKQ1FVRXlRaXhEUVVGRE8wRkJRMnhGTEU5QlFVOHNSVUZCUlN4cFFrRkJhVUlzUlVGQlJTeE5RVUZOTEhOQ1FVRnpRaXhEUVVGRE8wRkJRM3BFTEU5QlFVOHNSVUZCUlN4elFrRkJjMElzUlVGQlJTeE5RVUZOTERSQ1FVRTBRaXhEUVVGRE8wRkJRM0JGTEU5QlFVOHNSVUZCUlN4blFrRkJaMElzUlVGQlJTeE5RVUZOTEhGQ1FVRnhRaXhEUVVGRE8wRkJRM1pFTEU5QlFVOHNSVUZCUlN4eFFrRkJjVUlzUlVGQlJTeE5RVUZOTERSQ1FVRTBRaXhEUVVGRE8wRkJRMjVGTEU5QlFVOHNSVUZCUlN4MVFrRkJkVUlzUlVGQlJTeE5RVUZOTERaQ1FVRTJRaXhEUVVGRE8wRkJSWFJGTEUxQlFVMHNUMEZCVHl3d1FrRkJNa0lzVTBGQlVTeG5Ra0ZCY1VNN1NVRkRia1k3VVVGRFJTeExRVUZMTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUTBGQlF6dEpRVU0zUWl4RFFVRkRPMGxCUlVRc1MwRkJTeXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRkZCUVdkQ0xFVkJRVVVzVjBGQmJVSXNSVUZCUlN4SFFVRkhMRWxCUVZjN1VVRkRNVVVzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVTjZReXhEUVVGRExGVkJRVlVzUlVGQlJTeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFVkJRVVVzVVVGQlVTeERRVUZETEVsQlFVa3NZVUZCWVN4RFFVRkRMRlZCUVZVc1EwRkJReXhUUVVGVExFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlF6VkhMRU5CUVVNN1NVRkRTaXhEUVVGRE8wbEJSVVFzUzBGQlN5eERRVUZETEZsQlFWa3NRMEZEYUVJc1VVRkJaMElzUlVGRGFFSXNVMEZCYjBJc1JVRkRjRUlzVDBGQlpTeEZRVU5tTEVkQlFVY3NTVUZCVnp0UlFVVmtMRTlCUVU4c1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGRGVrTXNRMEZCUXl4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RlFVRkZMRkZCUVZFc1EwRkJReXhKUVVGSkxGVkJRVlVzUTBGQlF5eFRRVUZUTEV0QlFVc3NVMEZCVXl4SlFVRkpMRlZCUVZVc1EwRkJReXhQUVVGUExFdEJRVXNzVDBGQlR5eERRVU5vU1N4RFFVRkRPMGxCUTBvc1EwRkJRenRKUVVWRUxFdEJRVXNzUTBGQlF5eGhRVUZoTEVOQlEycENMRkZCUVdkQ0xFVkJRMmhDTEZkQlFXMUNMRVZCUTI1Q0xHRkJRWEZDTEVWQlEzSkNMRk5CUVc5Q0xFVkJRM0JDTEU5QlFXVXNSVUZEWml4RlFVRlRMRVZCUTFRc1IwRkJSeXhKUVVGWE8xRkJSV1FzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEZGQlFWRXNSVUZCUlN4WFFVRlhMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZEZGtVc1EwRkJReXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVU5pTEZWQlFWVXNRMEZCUXl4aFFVRmhMRXRCUVVzc1lVRkJZVHRaUVVNeFF5eFZRVUZWTEVOQlFVTXNVMEZCVXl4TFFVRkxMRk5CUVZNN1dVRkRiRU1zVlVGQlZTeERRVUZETEU5QlFVOHNTMEZCU3l4UFFVRlBPMWxCUXpsQ0xFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNVVUZCVVN4SlFVRkpMRU5CUVVNc1JVRkJSU3hKUVVGSkxGVkJRVlVzUTBGQlF5eFJRVUZSTEVsQlFVa3NSVUZCUlN4RFFVRkRPMWxCUXpGRUxFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNVMEZCVXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hKUVVGSkxGVkJRVlVzUTBGQlF5eFRRVUZUTEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUXk5RUxFTkJRVU03U1VGRFNpeERRVUZETzBsQlJVUXNTMEZCU3l4RFFVRkRMR3RDUVVGclFpeERRVUZETEZGQlFXZENMRVZCUVVVc1YwRkJiVUlzUlVGQlJTeEhRVUZITEVsQlFWYzdVVUZETlVVc1MwRkJTeXhOUVVGTkxFZEJRVWNzU1VGQlNTeE5RVUZOTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eFJRVUZSTEVWQlFVVXNWMEZCVnl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF6dFpRVU01UlN4TlFVRk5MRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM3BETEVOQlFVTTdTVUZEU0N4RFFVRkRPMGxCUlVRc1MwRkJTeXhEUVVGRExHVkJRV1VzUTBGQlF5eFJRVUZuUWl4RlFVRkZMRWRCUVVjc1NVRkJWenRSUVVOd1JDeExRVUZMTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eFZRVUZWTEVWQlFVVXNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRaUVVOb1NDeE5RVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTNwRExFTkJRVU03U1VGRFNDeERRVUZETzBsQlIwc3NRVUZCVGl4TFFVRkxMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNVVUZCWjBJc1JVRkJSU3hYUVVGdFFpeEZRVUZGTEVkQlFVY3NTVUZCVnp0UlFVTTNSU3hOUVVGTkxFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhSUVVGUkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkZPVVFzVFVGQlRTeHhRa0ZCY1VJc1IwRkJSeXhKUVVGSkxIRkNRVUZ4UWl4RlFVRkZMRU5CUVVNN1VVRkRNVVFzVFVGQlRTeHhRa0ZCY1VJc1IwRkJSeXhKUVVGSkxIRkNRVUZ4UWl4RlFVRkZMRU5CUVVNN1VVRkRNVVFzVFVGQlRTeHBRa0ZCYVVJc1IwRkJSeXhKUVVGSkxHbENRVUZwUWl4RlFVRkZMRU5CUVVNN1VVRkRiRVFzVFVGQlRTeHpRa0ZCYzBJc1IwRkJSeXhKUVVGSkxITkNRVUZ6UWl4RlFVRkZMRU5CUVVNN1VVRkROVVFzVFVGQlRTeG5Ra0ZCWjBJc1IwRkJSeXhKUVVGSkxHZENRVUZuUWl4RlFVRkZMRU5CUVVNN1VVRkRhRVFzVFVGQlRTeHhRa0ZCY1VJc1IwRkJSeXhKUVVGSkxIRkNRVUZ4UWl4RlFVRkZMRU5CUVVNN1VVRkRNVVFzVFVGQlRTeDFRa0ZCZFVJc1IwRkJSeXhKUVVGSkxIVkNRVUYxUWl4RlFVRkZMRU5CUVVNN1VVRkZPVVFzVFVGQlRTeFpRVUZaTEVkQlFXdERMRVZCUVVVc1EwRkJRenRSUVVOMlJDeE5RVUZOTEdsQ1FVRnBRaXhIUVVGSExFMUJRVTBzY1VKQlFYRkNMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNVVUZCVVN4RlFVRkZMRmRCUVZjc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlF5OUhMRTFCUVUwc1owSkJRV2RDTEVkQlFVY3NUVUZCVFN4elFrRkJjMElzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhYUVVGWExFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTm9SeXhOUVVGTkxHZENRVUZuUWl4SFFVRkhMRU5CUTNaQ0xFMUJRVTBzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZEWml4blFrRkJaMElzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RlFVRkZMRlZCUVZVc1JVRkJSU3hGUVVGRk8xbEJRM2hETEUxQlFVMHNZMEZCWXl4SFFVRkhMRTFCUVUwc1owSkJRV2RDTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVlVGQlZTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hWUVVGVkxFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRGRFa3NUMEZCVHl4eFFrRkJjVUlzUTBGQlF5eDNRa0ZCZDBJc1EwRkJReXhSUVVGUkxFVkJRVVVzWTBGQll5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRemxHTEVOQlFVTXNRMEZCUXl4RFFVTklMRU5CUTBZc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dFJRVVZVTEUxQlFVMHNWMEZCVnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhwUWtGQmFVSXNSVUZCUlN4SFFVRkhMR2RDUVVGblFpeERRVUZETEVOQlFVTTdVVUZEYUVVc1MwRkJTeXhOUVVGTkxGVkJRVlVzU1VGQlNTeFhRVUZYTEVWQlFVVXNRMEZCUXp0WlFVTnlReXhOUVVGTkxHVkJRV1VzUjBGQlJ5eE5RVUZOTEhGQ1FVRnhRaXhEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRlZCUVZVc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVNNVJ5eE5RVUZOTEZkQlFWY3NSMEZCUnl4TlFVRk5MRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRMjVETEdWQlFXVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRkxHTkJRV01zUlVGQlJTeEZRVUZGTEVOQlF6TkRMR2xDUVVGcFFpeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1ZVRkJWU3hEUVVGRExHTkJRV01zUTBGQlF5eFZRVUZWTEVOQlFWVXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVNelJpeERRVU5HTEVOQlFVTTdXVUZEUml4TFFVRkxMRTFCUVUwc1ZVRkJWU3hKUVVGSkxGZEJRVmNzUlVGQlJTeERRVUZETzJkQ1FVTnlReXhKUVVGSkxFTkJRVU1zVlVGQlZUdHZRa0ZCUlN4VFFVRlRPMmRDUVVNeFFpeE5RVUZOTEZOQlFWTXNSMEZCUnl4VlFVRlZMRU5CUVVNc1UwRkJVeXhEUVVGRE8yZENRVU4yUXl4TlFVRk5MRTlCUVU4c1IwRkJSeXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETzJkQ1FVTnVReXhOUVVGTkxFMUJRVTBzUjBGQmNVUXNSVUZCUlN4RFFVRkRPMmRDUVVOd1JTeEpRVUZKTEZOQlFWTXNTMEZCU3l4VFFVRlRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03YjBKQlEyNURMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeFRRVUZUTEVWQlFVVXNUMEZCVHl4RlFVRkZMRkZCUVZFc1JVRkJSU3hEUVVGRExFTkJRVU03WjBKQlEyaEVMRU5CUVVNN2NVSkJRVTBzU1VGQlNTeFRRVUZUTEV0QlFVc3NVMEZCVXl4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8yOUNRVU0xUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzVTBGQlV5eEZRVUZGTEU5QlFVOHNSVUZCUlN4RFFVRkRMRU5CUVVNN1owSkJRM1JETEVOQlFVTTdjVUpCUVUwc1NVRkJTU3hUUVVGVExFdEJRVXNzVTBGQlV5eERRVUZETEU5QlFVOHNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF6dHZRa0ZEZEVVc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEZOQlFWTXNSVUZCUlN4UFFVRlBMRVZCUVVVc1EwRkJReXhEUVVGRE8yZENRVU4wUXl4RFFVRkRPM0ZDUVVGTkxFbEJRVWtzVTBGQlV5eExRVUZMTEZOQlFWTXNRMEZCUXl4UFFVRlBMRWxCUVVrc1ZVRkJWU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETzI5Q1FVTnlSU3hOUVVGTkxGZEJRVmNzUjBGQlJ5eE5RVUZOTEhGQ1FVRnhRaXhEUVVGRExHVkJRV1VzUTBGQlF5eFJRVUZSTEVWQlFVVXNUMEZCVHl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03YjBKQlF6VkdMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNVMEZCVXl4RlFVRkZMRTlCUVU4c1JVRkJSU3hWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEycEhMRU5CUVVNN1owSkJSVVFzUzBGQlN5eE5RVUZOTEUxQlFVMHNTVUZCU1N4TlFVRk5MRVZCUVVVc1EwRkJRenR2UWtGRE5VSXNTVUZEUlN4VFFVRlRMRXRCUVVzc1UwRkJVeXhEUVVGRExFOUJRVTg3ZDBKQlF5OUNMRlZCUVZVc1EwRkJReXhYUVVGWE8zZENRVU4wUWl4TlFVRk5MRU5CUVVNc1QwRkJUeXhMUVVGTExFOUJRVTg3ZDBKQlF6RkNMRU5CUVVNc1RVRkJUU3gxUWtGQmRVSXNRMEZCUXl3d1FrRkJNRUlzUTBGRGRrUXNVVUZCVVN4RlFVTlNMRTFCUVUwc1EwRkJReXhQUVVGUExFVkJRMlFzVDBGQlR5eEZRVU5RTEZWQlFWVXNRMEZCUXl4UlFVRlJMRVZCUTI1Q0xFZEJRVWNzU1VGQlNTeERRVU5TTEVOQlFVTXNSVUZEUml4RFFVRkRPM2RDUVVORUxGTkJRVk03YjBKQlExZ3NRMEZCUXp0dlFrRkRSQ3haUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETzNkQ1FVTm9RaXhGUVVGRkxFVkJRVVVzUlVGQlJUdDNRa0ZEVGl4UlFVRlJPM2RDUVVOU0xGZEJRVmM3ZDBKQlExZ3NZVUZCWVN4RlFVRkZMRlZCUVZVc1EwRkJReXhIUVVGSE8zZENRVU0zUWl4VFFVRlRMRVZCUVVVc1RVRkJUU3hEUVVGRExGTkJRVk03ZDBKQlF6TkNMRTlCUVU4c1JVRkJSU3hOUVVGTkxFTkJRVU1zVDBGQlR6dDNRa0ZEZGtJc1ZVRkJWU3hGUVVGRkxHbENRVUZwUWp0M1FrRkROMElzVVVGQlVTeEZRVUZGTEZWQlFWVXNRMEZCUXl4RlFVRkZPM2RDUVVOMlFpeFJRVUZSTEVWQlFVVXNWVUZCVlN4RFFVRkRMRkZCUVZFN2QwSkJRemRDTEZOQlFWTXNSVUZCUlN4VlFVRlZMRU5CUVVNc1UwRkJVenR4UWtGRGFFTXNRMEZCUXl4RFFVRkRPMmRDUVVOTUxFTkJRVU03V1VGRFNDeERRVUZETzFGQlEwZ3NRMEZCUXp0UlFVVkVMRTFCUVUwc1QwRkJUeXhIUVVGSExFMUJRVTBzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZETDBJc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEZWQlFWVXNSVUZCUlN4RlFVRkZMRU5CUXpsQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlExUTdXVUZEUlN4TlFVRk5MRVZCUVVVc1ZVRkJWU3hEUVVGRExGRkJRVkU3V1VGRE0wSXNVMEZCVXl4RlFVRkZMRlZCUVZVc1EwRkJReXhYUVVGWE8xbEJRMnBETEdGQlFXRXNSVUZCUlN4VlFVRlZMRU5CUVVNc1lVRkJZVHRaUVVOMlF5eFRRVUZUTEVWQlFVVXNWVUZCVlN4RFFVRkRMRk5CUVZNN1dVRkRMMElzVDBGQlR5eEZRVUZGTEZWQlFWVXNRMEZCUXl4UFFVRlBPMWxCUXpOQ0xGVkJRVlVzUlVGQlJTeFZRVUZWTEVOQlFVTXNWVUZCVlR0WlFVTnFReXhSUVVGUkxFVkJRVVVzVlVGQlZTeERRVUZETEZGQlFWRTdXVUZETjBJc1VVRkJVU3hGUVVGRkxGVkJRVlVzUTBGQlF5eFJRVUZSTzFsQlF6ZENMRk5CUVZNc1JVRkJSU3hWUVVGVkxFTkJRVU1zVTBGQlV6dFRRVU5vUXl4RlFVTkVMRWRCUVVjc1NVRkJTU3hEUVVOU0xFTkJRMFlzUTBGRFJpeERRVUZETzFGQlEwWXNUMEZCVHl4UFFVRlBMRU5CUVVNN1NVRkRha0lzUTBGQlF6dEpRVWRMTEVGQlFVNHNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeERRVUZETEZGQlFXZENMRVZCUVVVc1IwRkJSeXhKUVVGWE8xRkJRM0pFTEUxQlFVMHNWVUZCVlN4SFFVRkhMRU5CUVVNc1RVRkJUU3hKUVVGSkxHZENRVUZuUWl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUlVGQlJTeERRVUZETEZWQlFWVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hGUVVGRkxGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYWtrc1MwRkJTeXhOUVVGTkxGTkJRVk1zU1VGQlNTeFZRVUZWTEVWQlFVVXNRMEZCUXp0WlFVTnVReXhOUVVGTkxFbEJRVWtzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhSUVVGUkxFVkJRVVVzVTBGQlV5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRMnhGTEVOQlFVTTdTVUZEU0N4RFFVRkRPME5CUTBZN1FVRXhSMDg3U1VGRVRDeGhRVUZoTEVWQlFVVTdPenM3Y1VWQmEwZG1PMEZCUjBzN1NVRkVUQ3hoUVVGaExFVkJRVVU3T3pzN2EwVkJUV1lpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZXlCQ1lYTmxUVzlrWld4VFpYSjJhV05sTENCeVpXeGhkR2x2Ymtsa0xDQnlaV3hoZEdsdmJrMWhkR05vTENCellXMWxWR1Z1WVc1MExDQjBjbUZ1YzJGamRHbHZibUZzSUgwZ1puSnZiU0JjSWk0dUwzVjBhV3h6WENJN1hHNXBiWEJ2Y25RZ2V5QkZabVpsWTNScGRtVlFaWEp0YVhOemFXOXVVMjVoY0hOb2IzUXNJRk5qYjNCbFMybHVaQ0I5SUdaeWIyMGdYQ0l1TGk5MGVYQmxjMXdpTzF4dWFXMXdiM0owSUhzZ1JXWm1aV04wYVhabFVHVnliV2x6YzJsdmJpQjlJR1p5YjIwZ1hDSXVMaTl0YjJSbGJITXZaV1ptWldOMGFYWmxMWEJsY20xcGMzTnBiMjR1Ylc5a1pXeGNJanRjYm1sdGNHOXlkQ0I3SUZKdmJHVkJjM05wWjI1dFpXNTBVMlZ5ZG1salpTQjlJR1p5YjIwZ1hDSXVMM0p2YkdVdFlYTnphV2R1YldWdWRDNXpaWEoyYVdObFhDSTdYRzVwYlhCdmNuUWdleUJTYjJ4bFVHVnliV2x6YzJsdmJsTmxjblpwWTJVZ2ZTQm1jbTl0SUZ3aUxpOXliMnhsTFhCbGNtMXBjM05wYjI0dWMyVnlkbWxqWlZ3aU8xeHVhVzF3YjNKMElIc2dVR1Z5YldsemMybHZibE5sY25acFkyVWdmU0JtY205dElGd2lMaTl3WlhKdGFYTnphVzl1TG5ObGNuWnBZMlZjSWp0Y2JtbHRjRzl5ZENCN0lFZHliM1Z3VFdWdFltVnljMmhwY0ZObGNuWnBZMlVnZlNCbWNtOXRJRndpTGk5bmNtOTFjQzF0WlcxaVpYSnphR2x3TG5ObGNuWnBZMlZjSWp0Y2JtbHRjRzl5ZENCN0lGQnlhVzVqYVhCaGJGTmxjblpwWTJVZ2ZTQm1jbTl0SUZ3aUxpOXdjbWx1WTJsd1lXd3VjMlZ5ZG1salpWd2lPMXh1YVcxd2IzSjBJSHNnVDNKblZXNXBkRU5zYjNOMWNtVlRaWEoyYVdObElIMGdabkp2YlNCY0lpNHZiM0puTFhWdWFYUXRZMnh2YzNWeVpTNXpaWEoyYVdObFhDSTdYRzVwYlhCdmNuUWdleUJKYm1obGNtbDBZVzVqWlVKc2IyTnJVMlZ5ZG1salpTQjlJR1p5YjIwZ1hDSXVMMmx1YUdWeWFYUmhibU5sTFdKc2IyTnJMbk5sY25acFkyVmNJanRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRVZtWm1WamRHbDJaVkJsY20xcGMzTnBiMjVUWlhKMmFXTmxJR1Y0ZEdWdVpITWdRbUZ6WlUxdlpHVnNVMlZ5ZG1salpUeEZabVpsWTNScGRtVlFaWEp0YVhOemFXOXVQaUI3WEc0Z0lHTnZibk4wY25WamRHOXlLQ2tnZTF4dUlDQWdJSE4xY0dWeUtFVm1abVZqZEdsMlpWQmxjbTFwYzNOcGIyNHBPMXh1SUNCOVhHNWNiaUFnWVhONWJtTWdiR2x6ZEVadmNsQnlhVzVqYVhCaGJDaDBaVzVoYm5SSlpEb2djM1J5YVc1bkxDQndjbWx1WTJsd1lXeEpaRG9nYzNSeWFXNW5MQ0F1TGk1aGNtZHpPaUJoYm5sYlhTazZJRkJ5YjIxcGMyVThSV1ptWldOMGFYWmxVR1Z5YldsemMybHZibHRkUGlCN1hHNGdJQ0FnY21WMGRYSnVJQ2hoZDJGcGRDQjBhR2x6TG14cGMzUkJiR3dvTGk0dVlYSm5jeWtwTG1acGJIUmxjaWhjYmlBZ0lDQWdJQ2h3WlhKdGFYTnphVzl1S1NBOVBpQnpZVzFsVkdWdVlXNTBLSEJsY20xcGMzTnBiMjR1ZEdWdVlXNTBMQ0IwWlc1aGJuUkpaQ2tnSmlZZ2NtVnNZWFJwYjI1TllYUmphQ2h3WlhKdGFYTnphVzl1TG5CeWFXNWphWEJoYkN3Z2NISnBibU5wY0dGc1NXUXBYRzRnSUNBZ0tUdGNiaUFnZlZ4dVhHNGdJR0Z6ZVc1aklHeHBjM1JHYjNKVFkyOXdaU2hjYmlBZ0lDQjBaVzVoYm5SSlpEb2djM1J5YVc1bkxGeHVJQ0FnSUhOamIzQmxTMmx1WkRvZ1UyTnZjR1ZMYVc1a0xGeHVJQ0FnSUhOamIzQmxTV1E2SUhOMGNtbHVaeXhjYmlBZ0lDQXVMaTVoY21kek9pQmhibmxiWFZ4dUlDQXBPaUJRY205dGFYTmxQRVZtWm1WamRHbDJaVkJsY20xcGMzTnBiMjViWFQ0Z2UxeHVJQ0FnSUhKbGRIVnliaUFvWVhkaGFYUWdkR2hwY3k1c2FYTjBRV3hzS0M0dUxtRnlaM01wS1M1bWFXeDBaWElvWEc0Z0lDQWdJQ0FvY0dWeWJXbHpjMmx2YmlrZ1BUNGdjMkZ0WlZSbGJtRnVkQ2h3WlhKdGFYTnphVzl1TG5SbGJtRnVkQ3dnZEdWdVlXNTBTV1FwSUNZbUlIQmxjbTFwYzNOcGIyNHVjMk52Y0dWTGFXNWtJRDA5UFNCelkyOXdaVXRwYm1RZ0ppWWdjR1Z5YldsemMybHZiaTV6WTI5d1pVbGtJRDA5UFNCelkyOXdaVWxrWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUdGemVXNWpJR2hoYzFCbGNtMXBjM05wYjI0b1hHNGdJQ0FnZEdWdVlXNTBTV1E2SUhOMGNtbHVaeXhjYmlBZ0lDQndjbWx1WTJsd1lXeEpaRG9nYzNSeWFXNW5MRnh1SUNBZ0lIQmxjbTFwYzNOcGIyNUxaWGs2SUhOMGNtbHVaeXhjYmlBZ0lDQnpZMjl3WlV0cGJtUTZJRk5qYjNCbFMybHVaQ3hjYmlBZ0lDQnpZMjl3WlVsa09pQnpkSEpwYm1jc1hHNGdJQ0FnWVhRL09pQkVZWFJsTEZ4dUlDQWdJQzR1TG1GeVozTTZJR0Z1ZVZ0ZFhHNGdJQ2s2SUZCeWIyMXBjMlU4WW05dmJHVmhiajRnZTF4dUlDQWdJSEpsZEhWeWJpQW9ZWGRoYVhRZ2RHaHBjeTVzYVhOMFJtOXlVSEpwYm1OcGNHRnNLSFJsYm1GdWRFbGtMQ0J3Y21sdVkybHdZV3hKWkN3Z0xpNHVZWEpuY3lrcExuTnZiV1VvWEc0Z0lDQWdJQ0FvY0dWeWJXbHpjMmx2YmlrZ1BUNWNiaUFnSUNBZ0lDQWdjR1Z5YldsemMybHZiaTV3WlhKdGFYTnphVzl1UzJWNUlEMDlQU0J3WlhKdGFYTnphVzl1UzJWNUlDWW1YRzRnSUNBZ0lDQWdJSEJsY20xcGMzTnBiMjR1YzJOdmNHVkxhVzVrSUQwOVBTQnpZMjl3WlV0cGJtUWdKaVpjYmlBZ0lDQWdJQ0FnY0dWeWJXbHpjMmx2Ymk1elkyOXdaVWxrSUQwOVBTQnpZMjl3WlVsa0lDWW1YRzRnSUNBZ0lDQWdJQ2doY0dWeWJXbHpjMmx2Ymk1emRHRnlkSE5CZENCOGZDQWhZWFFnZkh3Z2NHVnliV2x6YzJsdmJpNXpkR0Z5ZEhOQmRDQThQU0JoZENrZ0ppWmNiaUFnSUNBZ0lDQWdLQ0Z3WlhKdGFYTnphVzl1TG1WNGNHbHlaWE5CZENCOGZDQWhZWFFnZkh3Z2NHVnliV2x6YzJsdmJpNWxlSEJwY21WelFYUWdQajBnWVhRcFhHNGdJQ0FnS1R0Y2JpQWdmVnh1WEc0Z0lHRnplVzVqSUdSbGJHVjBaVVp2Y2xCeWFXNWphWEJoYkNoMFpXNWhiblJKWkRvZ2MzUnlhVzVuTENCd2NtbHVZMmx3WVd4SlpEb2djM1J5YVc1bkxDQXVMaTVoY21kek9pQmhibmxiWFNrNklGQnliMjFwYzJVOGRtOXBaRDRnZTF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnY205M0lHOW1JR0YzWVdsMElIUm9hWE11YkdsemRFWnZjbEJ5YVc1amFYQmhiQ2gwWlc1aGJuUkpaQ3dnY0hKcGJtTnBjR0ZzU1dRc0lDNHVMbUZ5WjNNcEtTQjdYRzRnSUNBZ0lDQmhkMkZwZENCMGFHbHpMbVJsYkdWMFpVSjVTV1FvY205M0xtbGtMQ0F1TGk1aGNtZHpLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0JoYzNsdVl5QmtaV3hsZEdWR2IzSlVaVzVoYm5Rb2RHVnVZVzUwU1dRNklITjBjbWx1Wnl3Z0xpNHVZWEpuY3pvZ1lXNTVXMTBwT2lCUWNtOXRhWE5sUEhadmFXUStJSHRjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJSEp2ZHlCdlppQW9ZWGRoYVhRZ2RHaHBjeTVzYVhOMFFXeHNLQzR1TG1GeVozTXBLUzVtYVd4MFpYSW9LSEJsY20xcGMzTnBiMjRwSUQwK0lITmhiV1ZVWlc1aGJuUW9jR1Z5YldsemMybHZiaTUwWlc1aGJuUXNJSFJsYm1GdWRFbGtLU2twSUh0Y2JpQWdJQ0FnSUdGM1lXbDBJSFJvYVhNdVpHVnNaWFJsUW5sSlpDaHliM2N1YVdRc0lDNHVMbUZ5WjNNcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lFQjBjbUZ1YzJGamRHbHZibUZzS0NsY2JpQWdZWE41Ym1NZ2NtVmlkV2xzWkVadmNsQnlhVzVqYVhCaGJDaDBaVzVoYm5SSlpEb2djM1J5YVc1bkxDQndjbWx1WTJsd1lXeEpaRG9nYzNSeWFXNW5MQ0F1TGk1aGNtZHpPaUJoYm5sYlhTazZJRkJ5YjIxcGMyVThSV1ptWldOMGFYWmxVR1Z5YldsemMybHZibHRkUGlCN1hHNGdJQ0FnWVhkaGFYUWdkR2hwY3k1a1pXeGxkR1ZHYjNKUWNtbHVZMmx3WVd3b2RHVnVZVzUwU1dRc0lIQnlhVzVqYVhCaGJFbGtMQ0F1TGk1aGNtZHpLVHRjYmx4dUlDQWdJR052Ym5OMElISnZiR1ZCYzNOcFoyNXRaVzUwVTJWeWRtbGpaU0E5SUc1bGR5QlNiMnhsUVhOemFXZHViV1Z1ZEZObGNuWnBZMlVvS1R0Y2JpQWdJQ0JqYjI1emRDQnliMnhsVUdWeWJXbHpjMmx2YmxObGNuWnBZMlVnUFNCdVpYY2dVbTlzWlZCbGNtMXBjM05wYjI1VFpYSjJhV05sS0NrN1hHNGdJQ0FnWTI5dWMzUWdjR1Z5YldsemMybHZibE5sY25acFkyVWdQU0J1WlhjZ1VHVnliV2x6YzJsdmJsTmxjblpwWTJVb0tUdGNiaUFnSUNCamIyNXpkQ0JuY205MWNFMWxiV0psY25Ob2FYQlRaWEoyYVdObElEMGdibVYzSUVkeWIzVndUV1Z0WW1WeWMyaHBjRk5sY25acFkyVW9LVHRjYmlBZ0lDQmpiMjV6ZENCd2NtbHVZMmx3WVd4VFpYSjJhV05sSUQwZ2JtVjNJRkJ5YVc1amFYQmhiRk5sY25acFkyVW9LVHRjYmlBZ0lDQmpiMjV6ZENCdmNtZFZibWwwUTJ4dmMzVnlaVk5sY25acFkyVWdQU0J1WlhjZ1QzSm5WVzVwZEVOc2IzTjFjbVZUWlhKMmFXTmxLQ2s3WEc0Z0lDQWdZMjl1YzNRZ2FXNW9aWEpwZEdGdVkyVkNiRzlqYTFObGNuWnBZMlVnUFNCdVpYY2dTVzVvWlhKcGRHRnVZMlZDYkc5amExTmxjblpwWTJVb0tUdGNibHh1SUNBZ0lHTnZibk4wSUcxaGRHVnlhV0ZzYVhwbFpEb2dSV1ptWldOMGFYWmxVR1Z5YldsemMybHZibE51WVhCemFHOTBXMTBnUFNCYlhUdGNiaUFnSUNCamIyNXpkQ0J6YjNWeVkyVkJjM05wWjI1dFpXNTBjeUE5SUdGM1lXbDBJSEp2YkdWQmMzTnBaMjV0Wlc1MFUyVnlkbWxqWlM1c2FYTjBVSEpwYm1OcGNHRnNRWE56YVdkdWJXVnVkSE1vZEdWdVlXNTBTV1FzSUhCeWFXNWphWEJoYkVsa0xDQXVMaTVoY21kektUdGNiaUFnSUNCamIyNXpkQ0JuY205MWNFMWxiV0psY25Ob2FYQnpJRDBnWVhkaGFYUWdaM0p2ZFhCTlpXMWlaWEp6YUdsd1UyVnlkbWxqWlM1c2FYTjBVSEpwYm1OcGNHRnNSM0p2ZFhCektIQnlhVzVqYVhCaGJFbGtMQ0F1TGk1aGNtZHpLVHRjYmlBZ0lDQmpiMjV6ZENCbmNtOTFjRUZ6YzJsbmJtMWxiblJ6SUQwZ0tGeHVJQ0FnSUNBZ1lYZGhhWFFnVUhKdmJXbHpaUzVoYkd3b1hHNGdJQ0FnSUNBZ0lHZHliM1Z3VFdWdFltVnljMmhwY0hNdWJXRndLR0Z6ZVc1aklDaHRaVzFpWlhKemFHbHdLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1ozSnZkWEJRY21sdVkybHdZV3dnUFNCaGQyRnBkQ0J3Y21sdVkybHdZV3hUWlhKMmFXTmxMbWRsZEVkeWIzVndVSEpwYm1OcGNHRnNLSEpsYkdGMGFXOXVTV1FvYldWdFltVnljMmhwY0M1MFpXNWhiblFwTENCeVpXeGhkR2x2Ymtsa0tHMWxiV0psY25Ob2FYQXVaM0p2ZFhBcExDQXVMaTVoY21kektUdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbTlzWlVGemMybG5ibTFsYm5SVFpYSjJhV05sTG14cGMzUlFjbWx1WTJsd1lXeEJjM05wWjI1dFpXNTBjeWgwWlc1aGJuUkpaQ3dnWjNKdmRYQlFjbWx1WTJsd1lXd3VhV1FzSUM0dUxtRnlaM01wTzF4dUlDQWdJQ0FnSUNCOUtWeHVJQ0FnSUNBZ0tWeHVJQ0FnSUNrdVpteGhkQ2dwTzF4dVhHNGdJQ0FnWTI5dWMzUWdZWE56YVdkdWJXVnVkSE1nUFNCYkxpNHVjMjkxY21ObFFYTnphV2R1YldWdWRITXNJQzR1TG1keWIzVndRWE56YVdkdWJXVnVkSE5kTzF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnWVhOemFXZHViV1Z1ZENCdlppQmhjM05wWjI1dFpXNTBjeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdjbTlzWlZCbGNtMXBjM05wYjI1eklEMGdZWGRoYVhRZ2NtOXNaVkJsY20xcGMzTnBiMjVUWlhKMmFXTmxMbXhwYzNSU2IyeGxVR1Z5YldsemMybHZibk1vY21Wc1lYUnBiMjVKWkNoaGMzTnBaMjV0Wlc1MExuSnZiR1VwTENBdUxpNWhjbWR6S1R0Y2JpQWdJQ0FnSUdOdmJuTjBJSEJsY20xcGMzTnBiMjV6SUQwZ1lYZGhhWFFnVUhKdmJXbHpaUzVoYkd3b1hHNGdJQ0FnSUNBZ0lISnZiR1ZRWlhKdGFYTnphVzl1Y3k1dFlYQW9ZWE41Ym1NZ0tISnZiR1ZRWlhKdGFYTnphVzl1S1NBOVBseHVJQ0FnSUNBZ0lDQWdJSEJsY20xcGMzTnBiMjVUWlhKMmFXTmxMbVpwYm1SUGJtVkNlU2hjSW1sa1hDSXNJSEpsYkdGMGFXOXVTV1FvY205c1pWQmxjbTFwYzNOcGIyNHVjR1Z5YldsemMybHZiaWtnWVhNZ2JtVjJaWElzSUM0dUxtRnlaM01wWEc0Z0lDQWdJQ0FnSUNsY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCbWIzSWdLR052Ym5OMElIQmxjbTFwYzNOcGIyNGdiMllnY0dWeWJXbHpjMmx2Ym5NcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0NGd1pYSnRhWE56YVc5dUtTQmpiMjUwYVc1MVpUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2MyTnZjR1ZMYVc1a0lEMGdZWE56YVdkdWJXVnVkQzV6WTI5d1pVdHBibVE3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSE5qYjNCbFNXUWdQU0JoYzNOcFoyNXRaVzUwTG5OamIzQmxTV1E3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSE5qYjNCbGN6b2dRWEp5WVhrOGV5QnpZMjl3WlV0cGJtUTZJRk5qYjNCbFMybHVaRHNnYzJOdmNHVkpaRG9nYzNSeWFXNW5JSDArSUQwZ1cxMDdYRzRnSUNBZ0lDQWdJR2xtSUNoelkyOXdaVXRwYm1RZ1BUMDlJRk5qYjNCbFMybHVaQzVVWlc1aGJuUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCelkyOXdaWE11Y0hWemFDaDdJSE5qYjNCbFMybHVaQ3dnYzJOdmNHVkpaRG9nZEdWdVlXNTBTV1FnZlNrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9jMk52Y0dWTGFXNWtJRDA5UFNCVFkyOXdaVXRwYm1RdVVtVnpiM1Z5WTJVcElIdGNiaUFnSUNBZ0lDQWdJQ0J6WTI5d1pYTXVjSFZ6YUNoN0lITmpiM0JsUzJsdVpDd2djMk52Y0dWSlpDQjlLVHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJR2xtSUNoelkyOXdaVXRwYm1RZ1BUMDlJRk5qYjNCbFMybHVaQzVQY21kVmJtbDBJQ1ltSUNGaGMzTnBaMjV0Wlc1MExtbHVhR1Z5YVhSRWIzZHVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2MyTnZjR1Z6TG5CMWMyZ29leUJ6WTI5d1pVdHBibVFzSUhOamIzQmxTV1FnZlNrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9jMk52Y0dWTGFXNWtJRDA5UFNCVFkyOXdaVXRwYm1RdVQzSm5WVzVwZENBbUppQmhjM05wWjI1dFpXNTBMbWx1YUdWeWFYUkViM2R1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1pHVnpZMlZ1WkdGdWRITWdQU0JoZDJGcGRDQnZjbWRWYm1sMFEyeHZjM1Z5WlZObGNuWnBZMlV1YkdsemRFUmxjMk5sYm1SaGJuUnpLSFJsYm1GdWRFbGtMQ0J6WTI5d1pVbGtMQ0F1TGk1aGNtZHpLVHRjYmlBZ0lDQWdJQ0FnSUNCelkyOXdaWE11Y0hWemFDZ3VMaTVrWlhOalpXNWtZVzUwY3k1dFlYQW9LSEp2ZHlrZ1BUNGdLSHNnYzJOdmNHVkxhVzVrTENCelkyOXdaVWxrT2lCeVpXeGhkR2x2Ymtsa0tISnZkeTVrWlhOalpXNWtZVzUwS1NCOUtTa3BPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQnpZMjl3WldRZ2IyWWdjMk52Y0dWektTQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tGeHVJQ0FnSUNBZ0lDQWdJQ0FnYzJOdmNHVkxhVzVrSUQwOVBTQlRZMjl3WlV0cGJtUXVUM0puVlc1cGRDQW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ1lYTnphV2R1YldWdWRDNXBibWhsY21sMFJHOTNiaUFtSmx4dUlDQWdJQ0FnSUNBZ0lDQWdjMk52Y0dWa0xuTmpiM0JsU1dRZ0lUMDlJSE5qYjNCbFNXUWdKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDaGhkMkZwZENCcGJtaGxjbWwwWVc1alpVSnNiMk5yVTJWeWRtbGpaUzVqWVhSbFoyOXllVUpzYjJOclpXUkdiM0pCYm1ObGMzUnZjaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdkR1Z1WVc1MFNXUXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lITmpiM0JsWkM1elkyOXdaVWxrTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J6WTI5d1pVbGtMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQndaWEp0YVhOemFXOXVMbU5oZEdWbmIzSjVMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXVMaTVoY21kelhHNGdJQ0FnSUNBZ0lDQWdJQ0FwS1Z4dUlDQWdJQ0FnSUNBZ0lDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUcxaGRHVnlhV0ZzYVhwbFpDNXdkWE5vS0h0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xrT2lCY0lsd2lMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2RHVnVZVzUwU1dRc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y21sdVkybHdZV3hKWkN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSEJsY20xcGMzTnBiMjVMWlhrNklIQmxjbTFwYzNOcGIyNHVhMlY1TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjMk52Y0dWTGFXNWtPaUJ6WTI5d1pXUXVjMk52Y0dWTGFXNWtMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2MyTnZjR1ZKWkRvZ2MyTnZjR1ZrTG5OamIzQmxTV1FzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpiM1Z5WTJWTGFXNWtPaUJjSW5KdmJHVmZZWE56YVdkdWJXVnVkRndpTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjMjkxY21ObFNXUTZJR0Z6YzJsbmJtMWxiblF1YVdRc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6ZEdGeWRITkJkRG9nWVhOemFXZHViV1Z1ZEM1emRHRnlkSE5CZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR1Y0Y0dseVpYTkJkRG9nWVhOemFXZHViV1Z1ZEM1bGVIQnBjbVZ6UVhRc1hHNGdJQ0FnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQmpjbVZoZEdWa0lEMGdZWGRoYVhRZ1VISnZiV2x6WlM1aGJHd29YRzRnSUNBZ0lDQnRZWFJsY21saGJHbDZaV1F1YldGd0tDaHdaWEp0YVhOemFXOXVLU0E5UGx4dUlDQWdJQ0FnSUNCMGFHbHpMbU55WldGMFpTaGNiaUFnSUNBZ0lDQWdJQ0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBaVzVoYm5RNklIQmxjbTFwYzNOcGIyNHVkR1Z1WVc1MFNXUXNYRzRnSUNBZ0lDQWdJQ0FnSUNCd2NtbHVZMmx3WVd3NklIQmxjbTFwYzNOcGIyNHVjSEpwYm1OcGNHRnNTV1FzWEc0Z0lDQWdJQ0FnSUNBZ0lDQndaWEp0YVhOemFXOXVTMlY1T2lCd1pYSnRhWE56YVc5dUxuQmxjbTFwYzNOcGIyNUxaWGtzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpZMjl3WlV0cGJtUTZJSEJsY20xcGMzTnBiMjR1YzJOdmNHVkxhVzVrTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjMk52Y0dWSlpEb2djR1Z5YldsemMybHZiaTV6WTI5d1pVbGtMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2MyOTFjbU5sUzJsdVpEb2djR1Z5YldsemMybHZiaTV6YjNWeVkyVkxhVzVrTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjMjkxY21ObFNXUTZJSEJsY20xcGMzTnBiMjR1YzI5MWNtTmxTV1FzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpkR0Z5ZEhOQmREb2djR1Z5YldsemMybHZiaTV6ZEdGeWRITkJkQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHVjRjR2x5WlhOQmREb2djR1Z5YldsemMybHZiaTVsZUhCcGNtVnpRWFFzWEc0Z0lDQWdJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lDQWdJQ0F1TGk1aGNtZHpYRzRnSUNBZ0lDQWdJQ2xjYmlBZ0lDQWdJQ2xjYmlBZ0lDQXBPMXh1SUNBZ0lISmxkSFZ5YmlCamNtVmhkR1ZrTzF4dUlDQjlYRzVjYmlBZ1FIUnlZVzV6WVdOMGFXOXVZV3dvS1Z4dUlDQmhjM2x1WXlCeVpXSjFhV3hrUm05eVZHVnVZVzUwS0hSbGJtRnVkRWxrT2lCemRISnBibWNzSUM0dUxtRnlaM002SUdGdWVWdGRLVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ1kyOXVjM1FnY0hKcGJtTnBjR0ZzY3lBOUlDaGhkMkZwZENCdVpYY2dVSEpwYm1OcGNHRnNVMlZ5ZG1salpTZ3BMbXhwYzNSQmJHd29MaTR1WVhKbmN5a3BMbVpwYkhSbGNpZ29jSEpwYm1OcGNHRnNLU0E5UGlCellXMWxWR1Z1WVc1MEtIQnlhVzVqYVhCaGJDNTBaVzVoYm5Rc0lIUmxibUZ1ZEVsa0tTazdYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQndjbWx1WTJsd1lXd2diMllnY0hKcGJtTnBjR0ZzY3lrZ2UxeHVJQ0FnSUNBZ1lYZGhhWFFnZEdocGN5NXlaV0oxYVd4a1JtOXlVSEpwYm1OcGNHRnNLSFJsYm1GdWRFbGtMQ0J3Y21sdVkybHdZV3d1YVdRc0lDNHVMbUZ5WjNNcE8xeHVJQ0FnSUgxY2JpQWdmVnh1ZlZ4dUlsMTkiXX0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GroupMembershipService = void 0;
|
|
4
|
+
const utils_js_1 = require("./../utils.cjs");
|
|
5
|
+
const group_membership_model_1 = require("../models/group-membership.model");
|
|
6
|
+
const principal_service_1 = require("./principal.service");
|
|
7
|
+
class GroupMembershipService extends utils_js_1.BaseModelService {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(group_membership_model_1.GroupMembership);
|
|
10
|
+
}
|
|
11
|
+
async addPrincipalToGroup(tenantId, groupId, principalId, metadata, ...args) {
|
|
12
|
+
return this.create({
|
|
13
|
+
tenant: tenantId,
|
|
14
|
+
group: groupId,
|
|
15
|
+
principal: principalId,
|
|
16
|
+
metadata,
|
|
17
|
+
}, ...args);
|
|
18
|
+
}
|
|
19
|
+
async listGroupMembers(groupId, ...args) {
|
|
20
|
+
return (await this.listAll(...args)).filter((membership) => (0, utils_js_1.relationMatch)(membership.group, groupId));
|
|
21
|
+
}
|
|
22
|
+
async listPrincipalGroups(principalId, ...args) {
|
|
23
|
+
return (await this.listAll(...args)).filter((membership) => (0, utils_js_1.relationMatch)(membership.principal, principalId));
|
|
24
|
+
}
|
|
25
|
+
async removePrincipalFromGroup(membershipId, ...args) {
|
|
26
|
+
await this.deleteById(membershipId, ...args);
|
|
27
|
+
}
|
|
28
|
+
async resolveGroupPrincipalIdsForPrincipal(principalId, ...args) {
|
|
29
|
+
const principalService = new principal_service_1.PrincipalService();
|
|
30
|
+
const memberships = await this.listPrincipalGroups(principalId, ...args);
|
|
31
|
+
const principals = await Promise.all(memberships.map(async (membership) => {
|
|
32
|
+
const tenantId = (0, utils_js_1.relationId)(membership.tenant);
|
|
33
|
+
const groupId = (0, utils_js_1.relationId)(membership.group);
|
|
34
|
+
const principal = await principalService.getGroupPrincipal(tenantId, groupId, ...args);
|
|
35
|
+
return principal.id;
|
|
36
|
+
}));
|
|
37
|
+
return principals;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.GroupMembershipService = GroupMembershipService;
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbWVzcGFjZXMvc2VydmljZXMvZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLHNCQUFpQjtBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGdCQUFpQztJQUMzRTtRQUNFLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUN2QixRQUFnQixFQUNoQixPQUFlLEVBQ2YsV0FBbUIsRUFDbkIsUUFBa0MsRUFDbEMsR0FBRyxJQUFXO1FBRWQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUNoQjtZQUNFLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLEtBQUssRUFBRSxPQUFPO1lBQ2QsU0FBUyxFQUFFLFdBQVc7WUFDdEIsUUFBUTtTQUNULEVBQ0QsR0FBRyxJQUFJLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBZSxFQUFFLEdBQUcsSUFBVztRQUNwRCxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxXQUFtQixFQUFFLEdBQUcsSUFBVztRQUMzRCxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVELEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxZQUFvQixFQUFFLEdBQUcsSUFBVztRQUNqRSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxXQUFtQixFQUFFLEdBQUcsSUFBVztRQUM1RSxNQUFNLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN6RSxNQUFNLFVBQVUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2xDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFO1lBQ25DLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0MsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QyxNQUFNLFNBQVMsR0FBRyxNQUFNLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN2RixPQUFPLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VNb2RlbFNlcnZpY2UsIHJlbGF0aW9uSWQsIHJlbGF0aW9uTWF0Y2ggfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IEdyb3VwTWVtYmVyc2hpcCB9IGZyb20gXCIuLi9tb2RlbHMvZ3JvdXAtbWVtYmVyc2hpcC5tb2RlbFwiO1xuaW1wb3J0IHsgUHJpbmNpcGFsU2VydmljZSB9IGZyb20gXCIuL3ByaW5jaXBhbC5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBHcm91cE1lbWJlcnNoaXBTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZTxHcm91cE1lbWJlcnNoaXA+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoR3JvdXBNZW1iZXJzaGlwKTtcbiAgfVxuXG4gIGFzeW5jIGFkZFByaW5jaXBhbFRvR3JvdXAoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBncm91cElkOiBzdHJpbmcsXG4gICAgcHJpbmNpcGFsSWQ6IHN0cmluZyxcbiAgICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8R3JvdXBNZW1iZXJzaGlwPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKFxuICAgICAge1xuICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICBncm91cDogZ3JvdXBJZCxcbiAgICAgICAgcHJpbmNpcGFsOiBwcmluY2lwYWxJZCxcbiAgICAgICAgbWV0YWRhdGEsXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyBsaXN0R3JvdXBNZW1iZXJzKGdyb3VwSWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPEdyb3VwTWVtYmVyc2hpcFtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigobWVtYmVyc2hpcCkgPT4gcmVsYXRpb25NYXRjaChtZW1iZXJzaGlwLmdyb3VwLCBncm91cElkKSk7XG4gIH1cblxuICBhc3luYyBsaXN0UHJpbmNpcGFsR3JvdXBzKHByaW5jaXBhbElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxHcm91cE1lbWJlcnNoaXBbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKG1lbWJlcnNoaXApID0+IHJlbGF0aW9uTWF0Y2gobWVtYmVyc2hpcC5wcmluY2lwYWwsIHByaW5jaXBhbElkKSk7XG4gIH1cblxuICBhc3luYyByZW1vdmVQcmluY2lwYWxGcm9tR3JvdXAobWVtYmVyc2hpcElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5kZWxldGVCeUlkKG1lbWJlcnNoaXBJZCwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyByZXNvbHZlR3JvdXBQcmluY2lwYWxJZHNGb3JQcmluY2lwYWwocHJpbmNpcGFsSWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgcHJpbmNpcGFsU2VydmljZSA9IG5ldyBQcmluY2lwYWxTZXJ2aWNlKCk7XG4gICAgY29uc3QgbWVtYmVyc2hpcHMgPSBhd2FpdCB0aGlzLmxpc3RQcmluY2lwYWxHcm91cHMocHJpbmNpcGFsSWQsIC4uLmFyZ3MpO1xuICAgIGNvbnN0IHByaW5jaXBhbHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG1lbWJlcnNoaXBzLm1hcChhc3luYyAobWVtYmVyc2hpcCkgPT4ge1xuICAgICAgICBjb25zdCB0ZW5hbnRJZCA9IHJlbGF0aW9uSWQobWVtYmVyc2hpcC50ZW5hbnQpO1xuICAgICAgICBjb25zdCBncm91cElkID0gcmVsYXRpb25JZChtZW1iZXJzaGlwLmdyb3VwKTtcbiAgICAgICAgY29uc3QgcHJpbmNpcGFsID0gYXdhaXQgcHJpbmNpcGFsU2VydmljZS5nZXRHcm91cFByaW5jaXBhbCh0ZW5hbnRJZCwgZ3JvdXBJZCwgLi4uYXJncyk7XG4gICAgICAgIHJldHVybiBwcmluY2lwYWwuaWQ7XG4gICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIHByaW5jaXBhbHM7XG4gIH1cbn1cbiJdfQ==
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRDQUE0RTtBQUM1RSw2RUFBbUU7QUFDbkUsMkRBQXVEO0FBQ3ZELE1BQWEsc0JBQXVCLFNBQVEsMkJBQWdCO0lBQ3hEO1FBQ0ksS0FBSyxDQUFDLHdDQUFlLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUk7UUFDdkUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2YsTUFBTSxFQUFFLFFBQVE7WUFDaEIsS0FBSyxFQUFFLE9BQU87WUFDZCxTQUFTLEVBQUUsV0FBVztZQUN0QixRQUFRO1NBQ1gsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFDRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSTtRQUNuQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUEsd0JBQWEsRUFBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUNELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJO1FBQzFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBQSx3QkFBYSxFQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsSCxDQUFDO0lBQ0QsS0FBSyxDQUFDLHdCQUF3QixDQUFDLFlBQVksRUFBRSxHQUFHLElBQUk7UUFDaEQsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDRCxLQUFLLENBQUMsb0NBQW9DLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSTtRQUMzRCxNQUFNLGdCQUFnQixHQUFHLElBQUksb0NBQWdCLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN6RSxNQUFNLFVBQVUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUU7WUFDdEUsTUFBTSxRQUFRLEdBQUcsSUFBQSxxQkFBVSxFQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFBLHFCQUFVLEVBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdDLE1BQU0sU0FBUyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3ZGLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztDQUNKO0FBaENELHdEQWdDQztBQUNELDB5SkFBMHlKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsU2VydmljZSwgcmVsYXRpb25JZCwgcmVsYXRpb25NYXRjaCB9IGZyb20gXCIuLy4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBHcm91cE1lbWJlcnNoaXAgfSBmcm9tIFwiLi4vbW9kZWxzL2dyb3VwLW1lbWJlcnNoaXAubW9kZWxcIjtcbmltcG9ydCB7IFByaW5jaXBhbFNlcnZpY2UgfSBmcm9tIFwiLi9wcmluY2lwYWwuc2VydmljZVwiO1xuZXhwb3J0IGNsYXNzIEdyb3VwTWVtYmVyc2hpcFNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoR3JvdXBNZW1iZXJzaGlwKTtcbiAgICB9XG4gICAgYXN5bmMgYWRkUHJpbmNpcGFsVG9Hcm91cCh0ZW5hbnRJZCwgZ3JvdXBJZCwgcHJpbmNpcGFsSWQsIG1ldGFkYXRhLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZSh7XG4gICAgICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICAgICAgZ3JvdXA6IGdyb3VwSWQsXG4gICAgICAgICAgICBwcmluY2lwYWw6IHByaW5jaXBhbElkLFxuICAgICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgIH0sIC4uLmFyZ3MpO1xuICAgIH1cbiAgICBhc3luYyBsaXN0R3JvdXBNZW1iZXJzKGdyb3VwSWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigobWVtYmVyc2hpcCkgPT4gcmVsYXRpb25NYXRjaChtZW1iZXJzaGlwLmdyb3VwLCBncm91cElkKSk7XG4gICAgfVxuICAgIGFzeW5jIGxpc3RQcmluY2lwYWxHcm91cHMocHJpbmNpcGFsSWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigobWVtYmVyc2hpcCkgPT4gcmVsYXRpb25NYXRjaChtZW1iZXJzaGlwLnByaW5jaXBhbCwgcHJpbmNpcGFsSWQpKTtcbiAgICB9XG4gICAgYXN5bmMgcmVtb3ZlUHJpbmNpcGFsRnJvbUdyb3VwKG1lbWJlcnNoaXBJZCwgLi4uYXJncykge1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZUJ5SWQobWVtYmVyc2hpcElkLCAuLi5hcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgcmVzb2x2ZUdyb3VwUHJpbmNpcGFsSWRzRm9yUHJpbmNpcGFsKHByaW5jaXBhbElkLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHByaW5jaXBhbFNlcnZpY2UgPSBuZXcgUHJpbmNpcGFsU2VydmljZSgpO1xuICAgICAgICBjb25zdCBtZW1iZXJzaGlwcyA9IGF3YWl0IHRoaXMubGlzdFByaW5jaXBhbEdyb3VwcyhwcmluY2lwYWxJZCwgLi4uYXJncyk7XG4gICAgICAgIGNvbnN0IHByaW5jaXBhbHMgPSBhd2FpdCBQcm9taXNlLmFsbChtZW1iZXJzaGlwcy5tYXAoYXN5bmMgKG1lbWJlcnNoaXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRlbmFudElkID0gcmVsYXRpb25JZChtZW1iZXJzaGlwLnRlbmFudCk7XG4gICAgICAgICAgICBjb25zdCBncm91cElkID0gcmVsYXRpb25JZChtZW1iZXJzaGlwLmdyb3VwKTtcbiAgICAgICAgICAgIGNvbnN0IHByaW5jaXBhbCA9IGF3YWl0IHByaW5jaXBhbFNlcnZpY2UuZ2V0R3JvdXBQcmluY2lwYWwodGVuYW50SWQsIGdyb3VwSWQsIC4uLmFyZ3MpO1xuICAgICAgICAgICAgcmV0dXJuIHByaW5jaXBhbC5pZDtcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gcHJpbmNpcGFscztcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laM0p2ZFhBdGJXVnRZbVZ5YzJocGNDNXpaWEoyYVdObExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZMaTR2TGk0dmMzSmpMMjVoYldWemNHRmpaWE12YzJWeWRtbGpaWE12WjNKdmRYQXRiV1Z0WW1WeWMyaHBjQzV6WlhKMmFXTmxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFOUJRVThzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJSU3hWUVVGVkxFVkJRVVVzWVVGQllTeEZRVUZGTEhOQ1FVRnBRanRCUVVOMlJTeFBRVUZQTEVWQlFVVXNaVUZCWlN4RlFVRkZMRTFCUVUwc2EwTkJRV3RETEVOQlFVTTdRVUZEYmtVc1QwRkJUeXhGUVVGRkxHZENRVUZuUWl4RlFVRkZMRTFCUVUwc2NVSkJRWEZDTEVOQlFVTTdRVUZGZGtRc1RVRkJUU3hQUVVGUExITkNRVUYxUWl4VFFVRlJMR2RDUVVGcFF6dEpRVU16UlR0UlFVTkZMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF6dEpRVU42UWl4RFFVRkRPMGxCUlVRc1MwRkJTeXhEUVVGRExHMUNRVUZ0UWl4RFFVTjJRaXhSUVVGblFpeEZRVU5vUWl4UFFVRmxMRVZCUTJZc1YwRkJiVUlzUlVGRGJrSXNVVUZCYTBNc1JVRkRiRU1zUjBGQlJ5eEpRVUZYTzFGQlJXUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVOb1FqdFpRVU5GTEUxQlFVMHNSVUZCUlN4UlFVRlJPMWxCUTJoQ0xFdEJRVXNzUlVGQlJTeFBRVUZQTzFsQlEyUXNVMEZCVXl4RlFVRkZMRmRCUVZjN1dVRkRkRUlzVVVGQlVUdFRRVU5VTEVWQlEwUXNSMEZCUnl4SlFVRkpMRU5CUTFJc1EwRkJRenRKUVVOS0xFTkJRVU03U1VGRlJDeExRVUZMTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVDBGQlpTeEZRVUZGTEVkQlFVY3NTVUZCVnp0UlFVTndSQ3hQUVVGUExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRExHRkJRV0VzUTBGQlF5eFZRVUZWTEVOQlFVTXNTMEZCU3l4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGVFY3NRMEZCUXp0SlFVVkVMRXRCUVVzc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4WFFVRnRRaXhGUVVGRkxFZEJRVWNzU1VGQlZ6dFJRVU16UkN4UFFVRlBMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eFZRVUZWTEVWQlFVVXNSVUZCUlN4RFFVRkRMR0ZCUVdFc1EwRkJReXhWUVVGVkxFTkJRVU1zVTBGQlV5eEZRVUZGTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRhRWdzUTBGQlF6dEpRVVZFTEV0QlFVc3NRMEZCUXl4M1FrRkJkMElzUTBGQlF5eFpRVUZ2UWl4RlFVRkZMRWRCUVVjc1NVRkJWenRSUVVOcVJTeE5RVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1dVRkJXU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdTVUZETDBNc1EwRkJRenRKUVVWRUxFdEJRVXNzUTBGQlF5eHZRMEZCYjBNc1EwRkJReXhYUVVGdFFpeEZRVUZGTEVkQlFVY3NTVUZCVnp0UlFVTTFSU3hOUVVGTkxHZENRVUZuUWl4SFFVRkhMRWxCUVVrc1owSkJRV2RDTEVWQlFVVXNRMEZCUXp0UlFVTm9SQ3hOUVVGTkxGZEJRVmNzUjBGQlJ5eE5RVUZOTEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eFhRVUZYTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVONlJTeE5RVUZOTEZWQlFWVXNSMEZCUnl4TlFVRk5MRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRMnhETEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRkxGVkJRVlVzUlVGQlJTeEZRVUZGTzFsQlEyNURMRTFCUVUwc1VVRkJVU3hIUVVGSExGVkJRVlVzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRMME1zVFVGQlRTeFBRVUZQTEVkQlFVY3NWVUZCVlN4RFFVRkRMRlZCUVZVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU0zUXl4TlFVRk5MRk5CUVZNc1IwRkJSeXhOUVVGTkxHZENRVUZuUWl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEZGQlFWRXNSVUZCUlN4UFFVRlBMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU4yUml4UFFVRlBMRk5CUVZNc1EwRkJReXhGUVVGRkxFTkJRVU03VVVGRGRFSXNRMEZCUXl4RFFVRkRMRU5CUTBnc1EwRkJRenRSUVVOR0xFOUJRVThzVlVGQlZTeERRVUZETzBsQlEzQkNMRU5CUVVNN1EwRkRSaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3SUVKaGMyVk5iMlJsYkZObGNuWnBZMlVzSUhKbGJHRjBhVzl1U1dRc0lISmxiR0YwYVc5dVRXRjBZMmdnZlNCbWNtOXRJRndpTGk0dmRYUnBiSE5jSWp0Y2JtbHRjRzl5ZENCN0lFZHliM1Z3VFdWdFltVnljMmhwY0NCOUlHWnliMjBnWENJdUxpOXRiMlJsYkhNdlozSnZkWEF0YldWdFltVnljMmhwY0M1dGIyUmxiRndpTzF4dWFXMXdiM0owSUhzZ1VISnBibU5wY0dGc1UyVnlkbWxqWlNCOUlHWnliMjBnWENJdUwzQnlhVzVqYVhCaGJDNXpaWEoyYVdObFhDSTdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QkhjbTkxY0UxbGJXSmxjbk5vYVhCVFpYSjJhV05sSUdWNGRHVnVaSE1nUW1GelpVMXZaR1ZzVTJWeWRtbGpaVHhIY205MWNFMWxiV0psY25Ob2FYQStJSHRjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9LU0I3WEc0Z0lDQWdjM1Z3WlhJb1IzSnZkWEJOWlcxaVpYSnphR2x3S1R0Y2JpQWdmVnh1WEc0Z0lHRnplVzVqSUdGa1pGQnlhVzVqYVhCaGJGUnZSM0p2ZFhBb1hHNGdJQ0FnZEdWdVlXNTBTV1E2SUhOMGNtbHVaeXhjYmlBZ0lDQm5jbTkxY0Vsa09pQnpkSEpwYm1jc1hHNGdJQ0FnY0hKcGJtTnBjR0ZzU1dRNklITjBjbWx1Wnl4Y2JpQWdJQ0J0WlhSaFpHRjBZVDg2SUZKbFkyOXlaRHh6ZEhKcGJtY3NJSFZ1YTI1dmQyNCtMRnh1SUNBZ0lDNHVMbUZ5WjNNNklHRnVlVnRkWEc0Z0lDazZJRkJ5YjIxcGMyVThSM0p2ZFhCTlpXMWlaWEp6YUdsd1BpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZM0psWVhSbEtGeHVJQ0FnSUNBZ2UxeHVJQ0FnSUNBZ0lDQjBaVzVoYm5RNklIUmxibUZ1ZEVsa0xGeHVJQ0FnSUNBZ0lDQm5jbTkxY0RvZ1ozSnZkWEJKWkN4Y2JpQWdJQ0FnSUNBZ2NISnBibU5wY0dGc09pQndjbWx1WTJsd1lXeEpaQ3hjYmlBZ0lDQWdJQ0FnYldWMFlXUmhkR0VzWEc0Z0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnTGk0dVlYSm5jMXh1SUNBZ0lDazdYRzRnSUgxY2JseHVJQ0JoYzNsdVl5QnNhWE4wUjNKdmRYQk5aVzFpWlhKektHZHliM1Z3U1dRNklITjBjbWx1Wnl3Z0xpNHVZWEpuY3pvZ1lXNTVXMTBwT2lCUWNtOXRhWE5sUEVkeWIzVndUV1Z0WW1WeWMyaHBjRnRkUGlCN1hHNGdJQ0FnY21WMGRYSnVJQ2hoZDJGcGRDQjBhR2x6TG14cGMzUkJiR3dvTGk0dVlYSm5jeWtwTG1acGJIUmxjaWdvYldWdFltVnljMmhwY0NrZ1BUNGdjbVZzWVhScGIyNU5ZWFJqYUNodFpXMWlaWEp6YUdsd0xtZHliM1Z3TENCbmNtOTFjRWxrS1NrN1hHNGdJSDFjYmx4dUlDQmhjM2x1WXlCc2FYTjBVSEpwYm1OcGNHRnNSM0p2ZFhCektIQnlhVzVqYVhCaGJFbGtPaUJ6ZEhKcGJtY3NJQzR1TG1GeVozTTZJR0Z1ZVZ0ZEtUb2dVSEp2YldselpUeEhjbTkxY0UxbGJXSmxjbk5vYVhCYlhUNGdlMXh1SUNBZ0lISmxkSFZ5YmlBb1lYZGhhWFFnZEdocGN5NXNhWE4wUVd4c0tDNHVMbUZ5WjNNcEtTNW1hV3gwWlhJb0tHMWxiV0psY25Ob2FYQXBJRDArSUhKbGJHRjBhVzl1VFdGMFkyZ29iV1Z0WW1WeWMyaHBjQzV3Y21sdVkybHdZV3dzSUhCeWFXNWphWEJoYkVsa0tTazdYRzRnSUgxY2JseHVJQ0JoYzNsdVl5QnlaVzF2ZG1WUWNtbHVZMmx3WVd4R2NtOXRSM0p2ZFhBb2JXVnRZbVZ5YzJocGNFbGtPaUJ6ZEhKcGJtY3NJQzR1TG1GeVozTTZJR0Z1ZVZ0ZEtUb2dVSEp2YldselpUeDJiMmxrUGlCN1hHNGdJQ0FnWVhkaGFYUWdkR2hwY3k1a1pXeGxkR1ZDZVVsa0tHMWxiV0psY25Ob2FYQkpaQ3dnTGk0dVlYSm5jeWs3WEc0Z0lIMWNibHh1SUNCaGMzbHVZeUJ5WlhOdmJIWmxSM0p2ZFhCUWNtbHVZMmx3WVd4SlpITkdiM0pRY21sdVkybHdZV3dvY0hKcGJtTnBjR0ZzU1dRNklITjBjbWx1Wnl3Z0xpNHVZWEpuY3pvZ1lXNTVXMTBwT2lCUWNtOXRhWE5sUEhOMGNtbHVaMXRkUGlCN1hHNGdJQ0FnWTI5dWMzUWdjSEpwYm1OcGNHRnNVMlZ5ZG1salpTQTlJRzVsZHlCUWNtbHVZMmx3WVd4VFpYSjJhV05sS0NrN1hHNGdJQ0FnWTI5dWMzUWdiV1Z0WW1WeWMyaHBjSE1nUFNCaGQyRnBkQ0IwYUdsekxteHBjM1JRY21sdVkybHdZV3hIY205MWNITW9jSEpwYm1OcGNHRnNTV1FzSUM0dUxtRnlaM01wTzF4dUlDQWdJR052Ym5OMElIQnlhVzVqYVhCaGJITWdQU0JoZDJGcGRDQlFjbTl0YVhObExtRnNiQ2hjYmlBZ0lDQWdJRzFsYldKbGNuTm9hWEJ6TG0xaGNDaGhjM2x1WXlBb2JXVnRZbVZ5YzJocGNDa2dQVDRnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0IwWlc1aGJuUkpaQ0E5SUhKbGJHRjBhVzl1U1dRb2JXVnRZbVZ5YzJocGNDNTBaVzVoYm5RcE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCbmNtOTFjRWxrSUQwZ2NtVnNZWFJwYjI1SlpDaHRaVzFpWlhKemFHbHdMbWR5YjNWd0tUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NISnBibU5wY0dGc0lEMGdZWGRoYVhRZ2NISnBibU5wY0dGc1UyVnlkbWxqWlM1blpYUkhjbTkxY0ZCeWFXNWphWEJoYkNoMFpXNWhiblJKWkN3Z1ozSnZkWEJKWkN3Z0xpNHVZWEpuY3lrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCd2NtbHVZMmx3WVd3dWFXUTdYRzRnSUNBZ0lDQjlLVnh1SUNBZ0lDazdYRzRnSUNBZ2NtVjBkWEp1SUhCeWFXNWphWEJoYkhNN1hHNGdJSDFjYm4xY2JpSmRmUT09Il19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GroupService = void 0;
|
|
4
|
+
const utils_js_1 = require("./../utils.cjs");
|
|
5
|
+
const group_model_1 = require("../models/group.model");
|
|
6
|
+
class GroupService extends utils_js_1.BaseModelService {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(group_model_1.Group);
|
|
9
|
+
}
|
|
10
|
+
async createGroup(tenantId, name, orgUnitId, metadata, ...args) {
|
|
11
|
+
return this.create({
|
|
12
|
+
tenant: tenantId,
|
|
13
|
+
orgUnit: orgUnitId,
|
|
14
|
+
name,
|
|
15
|
+
metadata,
|
|
16
|
+
}, ...args);
|
|
17
|
+
}
|
|
18
|
+
async renameGroup(groupId, name, ...args) {
|
|
19
|
+
return this.updateOne(groupId, { name }, ...args);
|
|
20
|
+
}
|
|
21
|
+
async moveGroupToOrgUnit(groupId, orgUnitId, ...args) {
|
|
22
|
+
return this.updateOne(groupId, { orgUnit: orgUnitId }, ...args);
|
|
23
|
+
}
|
|
24
|
+
async listTenantGroups(tenantId, ...args) {
|
|
25
|
+
return (await this.listAll(...args)).filter((group) => (0, utils_js_1.sameTenant)(group.tenant, tenantId));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.GroupService = GroupService;
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW1lc3BhY2VzL3NlcnZpY2VzL2dyb3VwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxzQkFBaUI7QUFDeEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTlDLE1BQU0sT0FBTyxZQUFhLFNBQVEsZ0JBQXVCO0lBQ3ZEO1FBQ0UsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQ2YsUUFBZ0IsRUFDaEIsSUFBWSxFQUNaLFNBQWtCLEVBQ2xCLFFBQWtDLEVBQ2xDLEdBQUcsSUFBVztRQUVkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FDaEI7WUFDRSxNQUFNLEVBQUUsUUFBUTtZQUNoQixPQUFPLEVBQUUsU0FBUztZQUNsQixJQUFJO1lBQ0osUUFBUTtTQUNULEVBQ0QsR0FBRyxJQUFJLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQWUsRUFBRSxJQUFZLEVBQUUsR0FBRyxJQUFXO1FBQzdELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FBZSxFQUFFLFNBQTZCLEVBQUUsR0FBRyxJQUFXO1FBQ3JGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQWdCLEVBQUUsR0FBRyxJQUFXO1FBQ3JELE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlTW9kZWxTZXJ2aWNlLCBzYW1lVGVuYW50IH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBHcm91cCB9IGZyb20gXCIuLi9tb2RlbHMvZ3JvdXAubW9kZWxcIjtcblxuZXhwb3J0IGNsYXNzIEdyb3VwU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8R3JvdXA+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoR3JvdXApO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlR3JvdXAoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgb3JnVW5pdElkPzogc3RyaW5nLFxuICAgIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxHcm91cD4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShcbiAgICAgIHtcbiAgICAgICAgdGVuYW50OiB0ZW5hbnRJZCxcbiAgICAgICAgb3JnVW5pdDogb3JnVW5pdElkLFxuICAgICAgICBuYW1lLFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHJlbmFtZUdyb3VwKGdyb3VwSWQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8R3JvdXA+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVPbmUoZ3JvdXBJZCwgeyBuYW1lIH0sIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgbW92ZUdyb3VwVG9PcmdVbml0KGdyb3VwSWQ6IHN0cmluZywgb3JnVW5pdElkOiBzdHJpbmcgfCB1bmRlZmluZWQsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxHcm91cD4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZShncm91cElkLCB7IG9yZ1VuaXQ6IG9yZ1VuaXRJZCB9LCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RUZW5hbnRHcm91cHModGVuYW50SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPEdyb3VwW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChncm91cCkgPT4gc2FtZVRlbmFudChncm91cC50ZW5hbnQsIHRlbmFudElkKSk7XG4gIH1cbn1cbiJdfQ==
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImdyb3VwLnNlcnZpY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNENBQTZEO0FBQzdELHVEQUE4QztBQUM5QyxNQUFhLFlBQWEsU0FBUSwyQkFBZ0I7SUFDOUM7UUFDSSxLQUFLLENBQUMsbUJBQUssQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUk7UUFDMUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2YsTUFBTSxFQUFFLFFBQVE7WUFDaEIsT0FBTyxFQUFFLFNBQVM7WUFDbEIsSUFBSTtZQUNKLFFBQVE7U0FDWCxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUNELEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUk7UUFDcEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSTtRQUNoRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJO1FBQ3BDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBQSxxQkFBVSxFQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0NBQ0o7QUFyQkQsb0NBcUJDO0FBQ0QsazJGQUFrMkYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlTW9kZWxTZXJ2aWNlLCBzYW1lVGVuYW50IH0gZnJvbSBcIi4vLi4vdXRpbHMuanNcIjtcbmltcG9ydCB7IEdyb3VwIH0gZnJvbSBcIi4uL21vZGVscy9ncm91cC5tb2RlbFwiO1xuZXhwb3J0IGNsYXNzIEdyb3VwU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihHcm91cCk7XG4gICAgfVxuICAgIGFzeW5jIGNyZWF0ZUdyb3VwKHRlbmFudElkLCBuYW1lLCBvcmdVbml0SWQsIG1ldGFkYXRhLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZSh7XG4gICAgICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICAgICAgb3JnVW5pdDogb3JnVW5pdElkLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIG1ldGFkYXRhLFxuICAgICAgICB9LCAuLi5hcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgcmVuYW1lR3JvdXAoZ3JvdXBJZCwgbmFtZSwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVPbmUoZ3JvdXBJZCwgeyBuYW1lIH0sIC4uLmFyZ3MpO1xuICAgIH1cbiAgICBhc3luYyBtb3ZlR3JvdXBUb09yZ1VuaXQoZ3JvdXBJZCwgb3JnVW5pdElkLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZShncm91cElkLCB7IG9yZ1VuaXQ6IG9yZ1VuaXRJZCB9LCAuLi5hcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgbGlzdFRlbmFudEdyb3Vwcyh0ZW5hbnRJZCwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChncm91cCkgPT4gc2FtZVRlbmFudChncm91cC50ZW5hbnQsIHRlbmFudElkKSk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWjNKdmRYQXVjMlZ5ZG1salpTNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwzTnlZeTl1WVcxbGMzQmhZMlZ6TDNObGNuWnBZMlZ6TDJkeWIzVndMbk5sY25acFkyVXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRkxHZENRVUZuUWl4RlFVRkZMRlZCUVZVc1JVRkJSU3h6UWtGQmFVSTdRVUZEZUVRc1QwRkJUeXhGUVVGRkxFdEJRVXNzUlVGQlJTeE5RVUZOTEhWQ1FVRjFRaXhEUVVGRE8wRkJSVGxETEUxQlFVMHNUMEZCVHl4WlFVRmhMRk5CUVZFc1owSkJRWFZDTzBsQlEzWkVPMUZCUTBVc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBsQlEyWXNRMEZCUXp0SlFVVkVMRXRCUVVzc1EwRkJReXhYUVVGWExFTkJRMllzVVVGQlowSXNSVUZEYUVJc1NVRkJXU3hGUVVOYUxGTkJRV3RDTEVWQlEyeENMRkZCUVd0RExFVkJRMnhETEVkQlFVY3NTVUZCVnp0UlFVVmtMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGRGFFSTdXVUZEUlN4TlFVRk5MRVZCUVVVc1VVRkJVVHRaUVVOb1FpeFBRVUZQTEVWQlFVVXNVMEZCVXp0WlFVTnNRaXhKUVVGSk8xbEJRMG9zVVVGQlVUdFRRVU5VTEVWQlEwUXNSMEZCUnl4SlFVRkpMRU5CUTFJc1EwRkJRenRKUVVOS0xFTkJRVU03U1VGRlJDeExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTlCUVdVc1JVRkJSU3hKUVVGWkxFVkJRVVVzUjBGQlJ5eEpRVUZYTzFGQlF6ZEVMRTlCUVU4c1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eFBRVUZQTEVWQlFVVXNSVUZCUlN4SlFVRkpMRVZCUVVVc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlEzQkVMRU5CUVVNN1NVRkZSQ3hMUVVGTExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1QwRkJaU3hGUVVGRkxGTkJRVFpDTEVWQlFVVXNSMEZCUnl4SlFVRlhPMUZCUTNKR0xFOUJRVThzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBMRVZCUVVVc1JVRkJSU3hQUVVGUExFVkJRVVVzVTBGQlV5eEZRVUZGTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVOc1JTeERRVUZETzBsQlJVUXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeERRVUZETEZGQlFXZENMRVZCUVVVc1IwRkJSeXhKUVVGWE8xRkJRM0pFTEU5QlFVOHNRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTTNSaXhEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZXlCQ1lYTmxUVzlrWld4VFpYSjJhV05sTENCellXMWxWR1Z1WVc1MElIMGdabkp2YlNCY0lpNHVMM1YwYVd4elhDSTdYRzVwYlhCdmNuUWdleUJIY205MWNDQjlJR1p5YjIwZ1hDSXVMaTl0YjJSbGJITXZaM0p2ZFhBdWJXOWtaV3hjSWp0Y2JseHVaWGh3YjNKMElHTnNZWE56SUVkeWIzVndVMlZ5ZG1salpTQmxlSFJsYm1SeklFSmhjMlZOYjJSbGJGTmxjblpwWTJVOFIzSnZkWEErSUh0Y2JpQWdZMjl1YzNSeWRXTjBiM0lvS1NCN1hHNGdJQ0FnYzNWd1pYSW9SM0p2ZFhBcE8xeHVJQ0I5WEc1Y2JpQWdZWE41Ym1NZ1kzSmxZWFJsUjNKdmRYQW9YRzRnSUNBZ2RHVnVZVzUwU1dRNklITjBjbWx1Wnl4Y2JpQWdJQ0J1WVcxbE9pQnpkSEpwYm1jc1hHNGdJQ0FnYjNKblZXNXBkRWxrUHpvZ2MzUnlhVzVuTEZ4dUlDQWdJRzFsZEdGa1lYUmhQem9nVW1WamIzSmtQSE4wY21sdVp5d2dkVzVyYm05M2JqNHNYRzRnSUNBZ0xpNHVZWEpuY3pvZ1lXNTVXMTFjYmlBZ0tUb2dVSEp2YldselpUeEhjbTkxY0Q0Z2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnlaV0YwWlNoY2JpQWdJQ0FnSUh0Y2JpQWdJQ0FnSUNBZ2RHVnVZVzUwT2lCMFpXNWhiblJKWkN4Y2JpQWdJQ0FnSUNBZ2IzSm5WVzVwZERvZ2IzSm5WVzVwZEVsa0xGeHVJQ0FnSUNBZ0lDQnVZVzFsTEZ4dUlDQWdJQ0FnSUNCdFpYUmhaR0YwWVN4Y2JpQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBdUxpNWhjbWR6WEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUdGemVXNWpJSEpsYm1GdFpVZHliM1Z3S0dkeWIzVndTV1E2SUhOMGNtbHVaeXdnYm1GdFpUb2djM1J5YVc1bkxDQXVMaTVoY21kek9pQmhibmxiWFNrNklGQnliMjFwYzJVOFIzSnZkWEErSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1MWNHUmhkR1ZQYm1Vb1ozSnZkWEJKWkN3Z2V5QnVZVzFsSUgwc0lDNHVMbUZ5WjNNcE8xeHVJQ0I5WEc1Y2JpQWdZWE41Ym1NZ2JXOTJaVWR5YjNWd1ZHOVBjbWRWYm1sMEtHZHliM1Z3U1dRNklITjBjbWx1Wnl3Z2IzSm5WVzVwZEVsa09pQnpkSEpwYm1jZ2ZDQjFibVJsWm1sdVpXUXNJQzR1TG1GeVozTTZJR0Z1ZVZ0ZEtUb2dVSEp2YldselpUeEhjbTkxY0Q0Z2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuVndaR0YwWlU5dVpTaG5jbTkxY0Vsa0xDQjdJRzl5WjFWdWFYUTZJRzl5WjFWdWFYUkpaQ0I5TENBdUxpNWhjbWR6S1R0Y2JpQWdmVnh1WEc0Z0lHRnplVzVqSUd4cGMzUlVaVzVoYm5SSGNtOTFjSE1vZEdWdVlXNTBTV1E2SUhOMGNtbHVaeXdnTGk0dVlYSm5jem9nWVc1NVcxMHBPaUJRY205dGFYTmxQRWR5YjNWd1cxMCtJSHRjYmlBZ0lDQnlaWFIxY200Z0tHRjNZV2wwSUhSb2FYTXViR2x6ZEVGc2JDZ3VMaTVoY21kektTa3VabWxzZEdWeUtDaG5jbTkxY0NrZ1BUNGdjMkZ0WlZSbGJtRnVkQ2huY205MWNDNTBaVzVoYm5Rc0lIUmxibUZ1ZEVsa0tTazdYRzRnSUgxY2JuMWNiaUpkZlE9PSJdfQ==
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./tenant-profile.service"), exports);
|
|
18
|
+
__exportStar(require("./org-unit-profile.service"), exports);
|
|
19
|
+
__exportStar(require("./org-unit-closure.service"), exports);
|
|
20
|
+
__exportStar(require("./inheritance-block.service"), exports);
|
|
21
|
+
__exportStar(require("./tenant.service"), exports);
|
|
22
|
+
__exportStar(require("./org-unit.service"), exports);
|
|
23
|
+
__exportStar(require("./user.service"), exports);
|
|
24
|
+
__exportStar(require("./principal.service"), exports);
|
|
25
|
+
__exportStar(require("./tenant-membership.service"), exports);
|
|
26
|
+
__exportStar(require("./org-unit-membership.service"), exports);
|
|
27
|
+
__exportStar(require("./group.service"), exports);
|
|
28
|
+
__exportStar(require("./group-membership.service"), exports);
|
|
29
|
+
__exportStar(require("./permission.service"), exports);
|
|
30
|
+
__exportStar(require("./role.service"), exports);
|
|
31
|
+
__exportStar(require("./role-permission.service"), exports);
|
|
32
|
+
__exportStar(require("./role-assignment.service"), exports);
|
|
33
|
+
__exportStar(require("./effective-permission.service"), exports);
|
|
34
|
+
__exportStar(require("./protected-resource.service"), exports);
|
|
35
|
+
__exportStar(require("./resource-grant.service"), exports);
|
|
36
|
+
__exportStar(require("./resource-lifecycle.service"), exports);
|
|
37
|
+
__exportStar(require("./storage-binding.service"), exports);
|
|
38
|
+
__exportStar(require("./bootstrap.service"), exports);
|
|
39
|
+
__exportStar(require("./system-management.service"), exports);
|
|
40
|
+
__exportStar(require("./authz.service"), exports);
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmFtZXNwYWNlcy9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3RlbmFudC1wcm9maWxlLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29yZy11bml0LXByb2ZpbGUuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3JnLXVuaXQtY2xvc3VyZS5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbmhlcml0YW5jZS1ibG9jay5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZW5hbnQuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3JnLXVuaXQuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlci5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wcmluY2lwYWwuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVuYW50LW1lbWJlcnNoaXAuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3JnLXVuaXQtbWVtYmVyc2hpcC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ncm91cC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ncm91cC1tZW1iZXJzaGlwLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Blcm1pc3Npb24uc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm9sZS5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb2xlLXBlcm1pc3Npb24uc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm9sZS1hc3NpZ25tZW50LnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2VmZmVjdGl2ZS1wZXJtaXNzaW9uLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb3RlY3RlZC1yZXNvdXJjZS5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXNvdXJjZS1ncmFudC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXNvdXJjZS1saWZlY3ljbGUuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RvcmFnZS1iaW5kaW5nLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Jvb3RzdHJhcC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zeXN0ZW0tbWFuYWdlbWVudC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hdXRoei5zZXJ2aWNlXCI7XG4iXX0=
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkRBQXlDO0FBQ3pDLDZEQUEyQztBQUMzQyw2REFBMkM7QUFDM0MsOERBQTRDO0FBQzVDLG1EQUFpQztBQUNqQyxxREFBbUM7QUFDbkMsaURBQStCO0FBQy9CLHNEQUFvQztBQUNwQyw4REFBNEM7QUFDNUMsZ0VBQThDO0FBQzlDLGtEQUFnQztBQUNoQyw2REFBMkM7QUFDM0MsdURBQXFDO0FBQ3JDLGlEQUErQjtBQUMvQiw0REFBMEM7QUFDMUMsNERBQTBDO0FBQzFDLGlFQUErQztBQUMvQywrREFBNkM7QUFDN0MsMkRBQXlDO0FBQ3pDLCtEQUE2QztBQUM3Qyw0REFBMEM7QUFDMUMsc0RBQW9DO0FBQ3BDLDhEQUE0QztBQUM1QyxrREFBZ0M7QUFDaEMsczFFQUFzMUUiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi90ZW5hbnQtcHJvZmlsZS5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9vcmctdW5pdC1wcm9maWxlLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29yZy11bml0LWNsb3N1cmUuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW5oZXJpdGFuY2UtYmxvY2suc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVuYW50LnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29yZy11bml0LnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZXIuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJpbmNpcGFsLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlbmFudC1tZW1iZXJzaGlwLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29yZy11bml0LW1lbWJlcnNoaXAuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ3JvdXAuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wZXJtaXNzaW9uLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvbGUuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm9sZS1wZXJtaXNzaW9uLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvbGUtYXNzaWdubWVudC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lZmZlY3RpdmUtcGVybWlzc2lvbi5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wcm90ZWN0ZWQtcmVzb3VyY2Uuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzb3VyY2UtZ3JhbnQuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzb3VyY2UtbGlmZWN5Y2xlLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N0b3JhZ2UtYmluZGluZy5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ib290c3RyYXAuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3lzdGVtLW1hbmFnZW1lbnQuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXV0aHouc2VydmljZVwiO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYVc1a1pYZ3Vhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk4dUxpOXpjbU12Ym1GdFpYTndZV05sY3k5elpYSjJhV05sY3k5cGJtUmxlQzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeGpRVUZqTERCQ1FVRXdRaXhEUVVGRE8wRkJRM3BETEdOQlFXTXNORUpCUVRSQ0xFTkJRVU03UVVGRE0wTXNZMEZCWXl3MFFrRkJORUlzUTBGQlF6dEJRVU16UXl4alFVRmpMRFpDUVVFMlFpeERRVUZETzBGQlF6VkRMR05CUVdNc2EwSkJRV3RDTEVOQlFVTTdRVUZEYWtNc1kwRkJZeXh2UWtGQmIwSXNRMEZCUXp0QlFVTnVReXhqUVVGakxHZENRVUZuUWl4RFFVRkRPMEZCUXk5Q0xHTkJRV01zY1VKQlFYRkNMRU5CUVVNN1FVRkRjRU1zWTBGQll5dzJRa0ZCTmtJc1EwRkJRenRCUVVNMVF5eGpRVUZqTEN0Q1FVRXJRaXhEUVVGRE8wRkJRemxETEdOQlFXTXNhVUpCUVdsQ0xFTkJRVU03UVVGRGFFTXNZMEZCWXl3MFFrRkJORUlzUTBGQlF6dEJRVU16UXl4alFVRmpMSE5DUVVGelFpeERRVUZETzBGQlEzSkRMR05CUVdNc1owSkJRV2RDTEVOQlFVTTdRVUZETDBJc1kwRkJZeXd5UWtGQk1rSXNRMEZCUXp0QlFVTXhReXhqUVVGakxESkNRVUV5UWl4RFFVRkRPMEZCUXpGRExHTkJRV01zWjBOQlFXZERMRU5CUVVNN1FVRkRMME1zWTBGQll5dzRRa0ZCT0VJc1EwRkJRenRCUVVNM1F5eGpRVUZqTERCQ1FVRXdRaXhEUVVGRE8wRkJRM3BETEdOQlFXTXNPRUpCUVRoQ0xFTkJRVU03UVVGRE4wTXNZMEZCWXl3eVFrRkJNa0lzUTBGQlF6dEJRVU14UXl4alFVRmpMSEZDUVVGeFFpeERRVUZETzBGQlEzQkRMR05CUVdNc05rSkJRVFpDTEVOQlFVTTdRVUZETlVNc1kwRkJZeXhwUWtGQmFVSXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltVjRjRzl5ZENBcUlHWnliMjBnWENJdUwzUmxibUZ1ZEMxd2NtOW1hV3hsTG5ObGNuWnBZMlZjSWp0Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwyOXlaeTExYm1sMExYQnliMlpwYkdVdWMyVnlkbWxqWlZ3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZiM0puTFhWdWFYUXRZMnh2YzNWeVpTNXpaWEoyYVdObFhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTlwYm1obGNtbDBZVzVqWlMxaWJHOWpheTV6WlhKMmFXTmxYQ0k3WEc1bGVIQnZjblFnS2lCbWNtOXRJRndpTGk5MFpXNWhiblF1YzJWeWRtbGpaVndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmIzSm5MWFZ1YVhRdWMyVnlkbWxqWlZ3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZkWE5sY2k1elpYSjJhV05sWENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOXdjbWx1WTJsd1lXd3VjMlZ5ZG1salpWd2lPMXh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2ZEdWdVlXNTBMVzFsYldKbGNuTm9hWEF1YzJWeWRtbGpaVndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmIzSm5MWFZ1YVhRdGJXVnRZbVZ5YzJocGNDNXpaWEoyYVdObFhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTluY205MWNDNXpaWEoyYVdObFhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTluY205MWNDMXRaVzFpWlhKemFHbHdMbk5sY25acFkyVmNJanRjYm1WNGNHOXlkQ0FxSUdaeWIyMGdYQ0l1TDNCbGNtMXBjM05wYjI0dWMyVnlkbWxqWlZ3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZjbTlzWlM1elpYSjJhV05sWENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOXliMnhsTFhCbGNtMXBjM05wYjI0dWMyVnlkbWxqWlZ3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZjbTlzWlMxaGMzTnBaMjV0Wlc1MExuTmxjblpwWTJWY0lqdGNibVY0Y0c5eWRDQXFJR1p5YjIwZ1hDSXVMMlZtWm1WamRHbDJaUzF3WlhKdGFYTnphVzl1TG5ObGNuWnBZMlZjSWp0Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwzQnliM1JsWTNSbFpDMXlaWE52ZFhKalpTNXpaWEoyYVdObFhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTl5WlhOdmRYSmpaUzFuY21GdWRDNXpaWEoyYVdObFhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTl5WlhOdmRYSmpaUzFzYVdabFkzbGpiR1V1YzJWeWRtbGpaVndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmMzUnZjbUZuWlMxaWFXNWthVzVuTG5ObGNuWnBZMlZjSWp0Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwySnZiM1J6ZEhKaGNDNXpaWEoyYVdObFhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTl6ZVhOMFpXMHRiV0Z1WVdkbGJXVnVkQzV6WlhKMmFXTmxYQ0k3WEc1bGVIQnZjblFnS2lCbWNtOXRJRndpTGk5aGRYUm9laTV6WlhKMmFXTmxYQ0k3WEc0aVhYMD0iXX0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InheritanceBlockService = void 0;
|
|
4
|
+
const utils_js_1 = require("./../utils.cjs");
|
|
5
|
+
const inheritance_block_model_1 = require("../models/inheritance-block.model");
|
|
6
|
+
class InheritanceBlockService extends utils_js_1.BaseModelService {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(inheritance_block_model_1.InheritanceBlock);
|
|
9
|
+
}
|
|
10
|
+
async blockCategory(tenantId, orgUnitId, permissionCategory, blockedFromAncestorId, reason, ...args) {
|
|
11
|
+
return this.create({
|
|
12
|
+
tenant: tenantId,
|
|
13
|
+
orgUnit: orgUnitId,
|
|
14
|
+
blockedFromAncestor: blockedFromAncestorId,
|
|
15
|
+
permissionCategory,
|
|
16
|
+
reason,
|
|
17
|
+
}, ...args);
|
|
18
|
+
}
|
|
19
|
+
async unblockCategory(blockId, ...args) {
|
|
20
|
+
await this.deleteById(blockId, ...args);
|
|
21
|
+
}
|
|
22
|
+
async listForOrgUnit(tenantId, orgUnitId, ...args) {
|
|
23
|
+
return (await this.listAll(...args)).filter((block) => (0, utils_js_1.sameTenant)(block.tenant, tenantId) && (0, utils_js_1.relationMatch)(block.orgUnit, orgUnitId));
|
|
24
|
+
}
|
|
25
|
+
async categoryBlockedForAncestor(tenantId, orgUnitId, ancestorOrgUnitId, category, ...args) {
|
|
26
|
+
return (await this.listForOrgUnit(tenantId, orgUnitId, ...args)).some((block) => block.permissionCategory === category &&
|
|
27
|
+
(!block.blockedFromAncestor || (0, utils_js_1.relationMatch)(block.blockedFromAncestor, ancestorOrgUnitId)));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.InheritanceBlockService = InheritanceBlockService;
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5oZXJpdGFuY2UtYmxvY2suc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW1lc3BhY2VzL3NlcnZpY2VzL2luaGVyaXRhbmNlLWJsb2NrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFNLGFBQWEsRUFBRSxVQUFVLEVBQUUsc0JBQWlCO0FBRTNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXJFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxnQkFBa0M7SUFDN0U7UUFDRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FDakIsUUFBZ0IsRUFDaEIsU0FBaUIsRUFDakIsa0JBQXNDLEVBQ3RDLHFCQUE4QixFQUM5QixNQUFlLEVBQ2YsR0FBRyxJQUFXO1FBRWQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUNoQjtZQUNFLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLG1CQUFtQixFQUFFLHFCQUFxQjtZQUMxQyxrQkFBa0I7WUFDbEIsTUFBTTtTQUNQLEVBQ0QsR0FBRyxJQUFJLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDbkQsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQWdCLEVBQUUsU0FBaUIsRUFBRSxHQUFHLElBQVc7UUFDdEUsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUN6QyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQ3pGLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLDBCQUEwQixDQUM5QixRQUFnQixFQUNoQixTQUFpQixFQUNqQixpQkFBeUIsRUFDekIsUUFBNEIsRUFDNUIsR0FBRyxJQUFXO1FBRWQsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ25FLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDUixLQUFLLENBQUMsa0JBQWtCLEtBQUssUUFBUTtZQUNyQyxDQUFDLENBQUMsS0FBSyxDQUFDLG1CQUFtQixJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUM5RixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsU2VydmljZSwgaWQsIHJlbGF0aW9uTWF0Y2gsIHNhbWVUZW5hbnQgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IFBlcm1pc3Npb25DYXRlZ29yeSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgSW5oZXJpdGFuY2VCbG9jayB9IGZyb20gXCIuLi9tb2RlbHMvaW5oZXJpdGFuY2UtYmxvY2subW9kZWxcIjtcblxuZXhwb3J0IGNsYXNzIEluaGVyaXRhbmNlQmxvY2tTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZTxJbmhlcml0YW5jZUJsb2NrPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKEluaGVyaXRhbmNlQmxvY2spO1xuICB9XG5cbiAgYXN5bmMgYmxvY2tDYXRlZ29yeShcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIHBlcm1pc3Npb25DYXRlZ29yeTogUGVybWlzc2lvbkNhdGVnb3J5LFxuICAgIGJsb2NrZWRGcm9tQW5jZXN0b3JJZD86IHN0cmluZyxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxJbmhlcml0YW5jZUJsb2NrPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKFxuICAgICAge1xuICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICBvcmdVbml0OiBvcmdVbml0SWQsXG4gICAgICAgIGJsb2NrZWRGcm9tQW5jZXN0b3I6IGJsb2NrZWRGcm9tQW5jZXN0b3JJZCxcbiAgICAgICAgcGVybWlzc2lvbkNhdGVnb3J5LFxuICAgICAgICByZWFzb24sXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmJsb2NrQ2F0ZWdvcnkoYmxvY2tJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChibG9ja0lkLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RGb3JPcmdVbml0KHRlbmFudElkOiBzdHJpbmcsIG9yZ1VuaXRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8SW5oZXJpdGFuY2VCbG9ja1tdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcihcbiAgICAgIChibG9jaykgPT4gc2FtZVRlbmFudChibG9jay50ZW5hbnQsIHRlbmFudElkKSAmJiByZWxhdGlvbk1hdGNoKGJsb2NrLm9yZ1VuaXQsIG9yZ1VuaXRJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgY2F0ZWdvcnlCbG9ja2VkRm9yQW5jZXN0b3IoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICBhbmNlc3Rvck9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIGNhdGVnb3J5OiBQZXJtaXNzaW9uQ2F0ZWdvcnksXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RGb3JPcmdVbml0KHRlbmFudElkLCBvcmdVbml0SWQsIC4uLmFyZ3MpKS5zb21lKFxuICAgICAgKGJsb2NrKSA9PlxuICAgICAgICBibG9jay5wZXJtaXNzaW9uQ2F0ZWdvcnkgPT09IGNhdGVnb3J5ICYmXG4gICAgICAgICghYmxvY2suYmxvY2tlZEZyb21BbmNlc3RvciB8fCByZWxhdGlvbk1hdGNoKGJsb2NrLmJsb2NrZWRGcm9tQW5jZXN0b3IsIGFuY2VzdG9yT3JnVW5pdElkKSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5oZXJpdGFuY2UtYmxvY2suc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImluaGVyaXRhbmNlLWJsb2NrLnNlcnZpY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNENBQTRFO0FBQzVFLCtFQUFxRTtBQUNyRSxNQUFhLHVCQUF3QixTQUFRLDJCQUFnQjtJQUN6RDtRQUNJLEtBQUssQ0FBQywwQ0FBZ0IsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRCxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSTtRQUMvRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDZixNQUFNLEVBQUUsUUFBUTtZQUNoQixPQUFPLEVBQUUsU0FBUztZQUNsQixtQkFBbUIsRUFBRSxxQkFBcUI7WUFDMUMsa0JBQWtCO1lBQ2xCLE1BQU07U0FDVCxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUNELEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSTtRQUNsQyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUk7UUFDN0MsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFBLHFCQUFVLEVBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxJQUFBLHdCQUFhLEVBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzFJLENBQUM7SUFDRCxLQUFLLENBQUMsMEJBQTBCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJO1FBQ3RGLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEtBQUssUUFBUTtZQUNsSCxDQUFDLENBQUMsS0FBSyxDQUFDLG1CQUFtQixJQUFJLElBQUEsd0JBQWEsRUFBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckcsQ0FBQztDQUNKO0FBdkJELDBEQXVCQztBQUNELDArSEFBMCtIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsU2VydmljZSwgcmVsYXRpb25NYXRjaCwgc2FtZVRlbmFudCB9IGZyb20gXCIuLy4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBJbmhlcml0YW5jZUJsb2NrIH0gZnJvbSBcIi4uL21vZGVscy9pbmhlcml0YW5jZS1ibG9jay5tb2RlbFwiO1xuZXhwb3J0IGNsYXNzIEluaGVyaXRhbmNlQmxvY2tTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKEluaGVyaXRhbmNlQmxvY2spO1xuICAgIH1cbiAgICBhc3luYyBibG9ja0NhdGVnb3J5KHRlbmFudElkLCBvcmdVbml0SWQsIHBlcm1pc3Npb25DYXRlZ29yeSwgYmxvY2tlZEZyb21BbmNlc3RvcklkLCByZWFzb24sIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlKHtcbiAgICAgICAgICAgIHRlbmFudDogdGVuYW50SWQsXG4gICAgICAgICAgICBvcmdVbml0OiBvcmdVbml0SWQsXG4gICAgICAgICAgICBibG9ja2VkRnJvbUFuY2VzdG9yOiBibG9ja2VkRnJvbUFuY2VzdG9ySWQsXG4gICAgICAgICAgICBwZXJtaXNzaW9uQ2F0ZWdvcnksXG4gICAgICAgICAgICByZWFzb24sXG4gICAgICAgIH0sIC4uLmFyZ3MpO1xuICAgIH1cbiAgICBhc3luYyB1bmJsb2NrQ2F0ZWdvcnkoYmxvY2tJZCwgLi4uYXJncykge1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZUJ5SWQoYmxvY2tJZCwgLi4uYXJncyk7XG4gICAgfVxuICAgIGFzeW5jIGxpc3RGb3JPcmdVbml0KHRlbmFudElkLCBvcmdVbml0SWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigoYmxvY2spID0+IHNhbWVUZW5hbnQoYmxvY2sudGVuYW50LCB0ZW5hbnRJZCkgJiYgcmVsYXRpb25NYXRjaChibG9jay5vcmdVbml0LCBvcmdVbml0SWQpKTtcbiAgICB9XG4gICAgYXN5bmMgY2F0ZWdvcnlCbG9ja2VkRm9yQW5jZXN0b3IodGVuYW50SWQsIG9yZ1VuaXRJZCwgYW5jZXN0b3JPcmdVbml0SWQsIGNhdGVnb3J5LCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0Rm9yT3JnVW5pdCh0ZW5hbnRJZCwgb3JnVW5pdElkLCAuLi5hcmdzKSkuc29tZSgoYmxvY2spID0+IGJsb2NrLnBlcm1pc3Npb25DYXRlZ29yeSA9PT0gY2F0ZWdvcnkgJiZcbiAgICAgICAgICAgICghYmxvY2suYmxvY2tlZEZyb21BbmNlc3RvciB8fCByZWxhdGlvbk1hdGNoKGJsb2NrLmJsb2NrZWRGcm9tQW5jZXN0b3IsIGFuY2VzdG9yT3JnVW5pdElkKSkpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNW9aWEpwZEdGdVkyVXRZbXh2WTJzdWMyVnlkbWxqWlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDNOeVl5OXVZVzFsYzNCaFkyVnpMM05sY25acFkyVnpMMmx1YUdWeWFYUmhibU5sTFdKc2IyTnJMbk5sY25acFkyVXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRkxHZENRVUZuUWl4RlFVRk5MR0ZCUVdFc1JVRkJSU3hWUVVGVkxFVkJRVVVzYzBKQlFXbENPMEZCUlRORkxFOUJRVThzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJSU3hOUVVGTkxHMURRVUZ0UXl4RFFVRkRPMEZCUlhKRkxFMUJRVTBzVDBGQlR5eDFRa0ZCZDBJc1UwRkJVU3huUWtGQmEwTTdTVUZETjBVN1VVRkRSU3hMUVVGTExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJRenRKUVVNeFFpeERRVUZETzBsQlJVUXNTMEZCU3l4RFFVRkRMR0ZCUVdFc1EwRkRha0lzVVVGQlowSXNSVUZEYUVJc1UwRkJhVUlzUlVGRGFrSXNhMEpCUVhORExFVkJRM1JETEhGQ1FVRTRRaXhGUVVNNVFpeE5RVUZsTEVWQlEyWXNSMEZCUnl4SlFVRlhPMUZCUldRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVU5vUWp0WlFVTkZMRTFCUVUwc1JVRkJSU3hSUVVGUk8xbEJRMmhDTEU5QlFVOHNSVUZCUlN4VFFVRlRPMWxCUTJ4Q0xHMUNRVUZ0UWl4RlFVRkZMSEZDUVVGeFFqdFpRVU14UXl4clFrRkJhMEk3V1VGRGJFSXNUVUZCVFR0VFFVTlFMRVZCUTBRc1IwRkJSeXhKUVVGSkxFTkJRMUlzUTBGQlF6dEpRVU5LTEVOQlFVTTdTVUZGUkN4TFFVRkxMRU5CUVVNc1pVRkJaU3hEUVVGRExFOUJRV1VzUlVGQlJTeEhRVUZITEVsQlFWYzdVVUZEYmtRc1RVRkJUU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEU5QlFVOHNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRekZETEVOQlFVTTdTVUZGUkN4TFFVRkxMRU5CUVVNc1kwRkJZeXhEUVVGRExGRkJRV2RDTEVWQlFVVXNVMEZCYVVJc1JVRkJSU3hIUVVGSExFbEJRVmM3VVVGRGRFVXNUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVONlF5eERRVUZETEV0QlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNVVUZCVVN4RFFVRkRMRWxCUVVrc1lVRkJZU3hEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUTNwR0xFTkJRVU03U1VGRFNpeERRVUZETzBsQlJVUXNTMEZCU3l4RFFVRkRMREJDUVVFd1FpeERRVU01UWl4UlFVRm5RaXhGUVVOb1FpeFRRVUZwUWl4RlFVTnFRaXhwUWtGQmVVSXNSVUZEZWtJc1VVRkJORUlzUlVGRE5VSXNSMEZCUnl4SlFVRlhPMUZCUldRc1QwRkJUeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4UlFVRlJMRVZCUVVVc1UwRkJVeXhGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUTI1RkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVXNRMEZEVWl4TFFVRkxMRU5CUVVNc2EwSkJRV3RDTEV0QlFVc3NVVUZCVVR0WlFVTnlReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEcxQ1FVRnRRaXhKUVVGSkxHRkJRV0VzUTBGQlF5eExRVUZMTEVOQlFVTXNiVUpCUVcxQ0xFVkJRVVVzYVVKQlFXbENMRU5CUVVNc1EwRkJReXhEUVVNNVJpeERRVUZETzBsQlEwb3NRMEZCUXp0RFFVTkdJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnUW1GelpVMXZaR1ZzVTJWeWRtbGpaU3dnYVdRc0lISmxiR0YwYVc5dVRXRjBZMmdzSUhOaGJXVlVaVzVoYm5RZ2ZTQm1jbTl0SUZ3aUxpNHZkWFJwYkhOY0lqdGNibWx0Y0c5eWRDQjdJRkJsY20xcGMzTnBiMjVEWVhSbFoyOXllU0I5SUdaeWIyMGdYQ0l1TGk5MGVYQmxjMXdpTzF4dWFXMXdiM0owSUhzZ1NXNW9aWEpwZEdGdVkyVkNiRzlqYXlCOUlHWnliMjBnWENJdUxpOXRiMlJsYkhNdmFXNW9aWEpwZEdGdVkyVXRZbXh2WTJzdWJXOWtaV3hjSWp0Y2JseHVaWGh3YjNKMElHTnNZWE56SUVsdWFHVnlhWFJoYm1ObFFteHZZMnRUWlhKMmFXTmxJR1Y0ZEdWdVpITWdRbUZ6WlUxdlpHVnNVMlZ5ZG1salpUeEpibWhsY21sMFlXNWpaVUpzYjJOclBpQjdYRzRnSUdOdmJuTjBjblZqZEc5eUtDa2dlMXh1SUNBZ0lITjFjR1Z5S0VsdWFHVnlhWFJoYm1ObFFteHZZMnNwTzF4dUlDQjlYRzVjYmlBZ1lYTjVibU1nWW14dlkydERZWFJsWjI5eWVTaGNiaUFnSUNCMFpXNWhiblJKWkRvZ2MzUnlhVzVuTEZ4dUlDQWdJRzl5WjFWdWFYUkpaRG9nYzNSeWFXNW5MRnh1SUNBZ0lIQmxjbTFwYzNOcGIyNURZWFJsWjI5eWVUb2dVR1Z5YldsemMybHZia05oZEdWbmIzSjVMRnh1SUNBZ0lHSnNiMk5yWldSR2NtOXRRVzVqWlhOMGIzSkpaRDg2SUhOMGNtbHVaeXhjYmlBZ0lDQnlaV0Z6YjI0L09pQnpkSEpwYm1jc1hHNGdJQ0FnTGk0dVlYSm5jem9nWVc1NVcxMWNiaUFnS1RvZ1VISnZiV2x6WlR4SmJtaGxjbWwwWVc1alpVSnNiMk5yUGlCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVkzSmxZWFJsS0Z4dUlDQWdJQ0FnZTF4dUlDQWdJQ0FnSUNCMFpXNWhiblE2SUhSbGJtRnVkRWxrTEZ4dUlDQWdJQ0FnSUNCdmNtZFZibWwwT2lCdmNtZFZibWwwU1dRc1hHNGdJQ0FnSUNBZ0lHSnNiMk5yWldSR2NtOXRRVzVqWlhOMGIzSTZJR0pzYjJOclpXUkdjbTl0UVc1alpYTjBiM0pKWkN4Y2JpQWdJQ0FnSUNBZ2NHVnliV2x6YzJsdmJrTmhkR1ZuYjNKNUxGeHVJQ0FnSUNBZ0lDQnlaV0Z6YjI0c1hHNGdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0xpNHVZWEpuYzF4dUlDQWdJQ2s3WEc0Z0lIMWNibHh1SUNCaGMzbHVZeUIxYm1Kc2IyTnJRMkYwWldkdmNua29ZbXh2WTJ0SlpEb2djM1J5YVc1bkxDQXVMaTVoY21kek9pQmhibmxiWFNrNklGQnliMjFwYzJVOGRtOXBaRDRnZTF4dUlDQWdJR0YzWVdsMElIUm9hWE11WkdWc1pYUmxRbmxKWkNoaWJHOWphMGxrTENBdUxpNWhjbWR6S1R0Y2JpQWdmVnh1WEc0Z0lHRnplVzVqSUd4cGMzUkdiM0pQY21kVmJtbDBLSFJsYm1GdWRFbGtPaUJ6ZEhKcGJtY3NJRzl5WjFWdWFYUkpaRG9nYzNSeWFXNW5MQ0F1TGk1aGNtZHpPaUJoYm5sYlhTazZJRkJ5YjIxcGMyVThTVzVvWlhKcGRHRnVZMlZDYkc5amExdGRQaUI3WEc0Z0lDQWdjbVYwZFhKdUlDaGhkMkZwZENCMGFHbHpMbXhwYzNSQmJHd29MaTR1WVhKbmN5a3BMbVpwYkhSbGNpaGNiaUFnSUNBZ0lDaGliRzlqYXlrZ1BUNGdjMkZ0WlZSbGJtRnVkQ2hpYkc5amF5NTBaVzVoYm5Rc0lIUmxibUZ1ZEVsa0tTQW1KaUJ5Wld4aGRHbHZiazFoZEdOb0tHSnNiMk5yTG05eVoxVnVhWFFzSUc5eVoxVnVhWFJKWkNsY2JpQWdJQ0FwTzF4dUlDQjlYRzVjYmlBZ1lYTjVibU1nWTJGMFpXZHZjbmxDYkc5amEyVmtSbTl5UVc1alpYTjBiM0lvWEc0Z0lDQWdkR1Z1WVc1MFNXUTZJSE4wY21sdVp5eGNiaUFnSUNCdmNtZFZibWwwU1dRNklITjBjbWx1Wnl4Y2JpQWdJQ0JoYm1ObGMzUnZjazl5WjFWdWFYUkpaRG9nYzNSeWFXNW5MRnh1SUNBZ0lHTmhkR1ZuYjNKNU9pQlFaWEp0YVhOemFXOXVRMkYwWldkdmNua3NYRzRnSUNBZ0xpNHVZWEpuY3pvZ1lXNTVXMTFjYmlBZ0tUb2dVSEp2YldselpUeGliMjlzWldGdVBpQjdYRzRnSUNBZ2NtVjBkWEp1SUNoaGQyRnBkQ0IwYUdsekxteHBjM1JHYjNKUGNtZFZibWwwS0hSbGJtRnVkRWxrTENCdmNtZFZibWwwU1dRc0lDNHVMbUZ5WjNNcEtTNXpiMjFsS0Z4dUlDQWdJQ0FnS0dKc2IyTnJLU0E5UGx4dUlDQWdJQ0FnSUNCaWJHOWpheTV3WlhKdGFYTnphVzl1UTJGMFpXZHZjbmtnUFQwOUlHTmhkR1ZuYjNKNUlDWW1YRzRnSUNBZ0lDQWdJQ2doWW14dlkyc3VZbXh2WTJ0bFpFWnliMjFCYm1ObGMzUnZjaUI4ZkNCeVpXeGhkR2x2YmsxaGRHTm9LR0pzYjJOckxtSnNiMk5yWldSR2NtOXRRVzVqWlhOMGIzSXNJR0Z1WTJWemRHOXlUM0puVlc1cGRFbGtLU2xjYmlBZ0lDQXBPMXh1SUNCOVhHNTlYRzRpWFgwPSJdfQ==
|