@decaf-ts/integrations 0.3.6 → 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.
Files changed (878) hide show
  1. package/dist/integrations.cjs +1649 -2
  2. package/dist/integrations.js +1885 -2
  3. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
  4. package/lib/cjs/blob/azure/index.cjs +2 -2
  5. package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
  6. package/lib/cjs/blob/core/BlobKey.cjs +2 -2
  7. package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
  8. package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
  9. package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
  10. package/lib/cjs/blob/core/BlobValue.cjs +2 -2
  11. package/lib/cjs/blob/core/index.cjs +2 -2
  12. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
  13. package/lib/cjs/blob/gcp/index.cjs +2 -2
  14. package/lib/cjs/blob/index.cjs +2 -2
  15. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs +2 -2
  16. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs +2 -2
  17. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs +2 -2
  18. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs +2 -2
  19. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs +2 -2
  20. package/lib/cjs/blob/ipfs/index.cjs +2 -2
  21. package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
  22. package/lib/cjs/blob/local/index.cjs +2 -2
  23. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +2 -2
  24. package/lib/cjs/blob/memory/index.cjs +2 -2
  25. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
  26. package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
  27. package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
  28. package/lib/cjs/blob/s3/index.cjs +2 -2
  29. package/lib/cjs/docker/DockerComposeService.cjs +2 -2
  30. package/lib/cjs/docker/index.cjs +2 -2
  31. package/lib/cjs/graph/constants.cjs +2 -2
  32. package/lib/cjs/graph/decorators.cjs +2 -2
  33. package/lib/cjs/graph/errors/GraphCycleError.cjs +2 -2
  34. package/lib/cjs/graph/errors/GraphExecutionError.cjs +2 -2
  35. package/lib/cjs/graph/errors/GraphInputError.cjs +2 -2
  36. package/lib/cjs/graph/errors/GraphLoopLimitError.cjs +2 -2
  37. package/lib/cjs/graph/errors/GraphPinningError.cjs +2 -2
  38. package/lib/cjs/graph/errors/GraphPortError.cjs +2 -2
  39. package/lib/cjs/graph/errors/GraphStoreError.cjs +2 -2
  40. package/lib/cjs/graph/errors/GraphTopologyError.cjs +2 -2
  41. package/lib/cjs/graph/errors/index.cjs +2 -2
  42. package/lib/cjs/graph/events/GraphExecutionEvent.cjs +2 -2
  43. package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs +2 -2
  44. package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs +2 -2
  45. package/lib/cjs/graph/events/GraphExecutionObserver.cjs +2 -2
  46. package/lib/cjs/graph/events/index.cjs +2 -2
  47. package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs +2 -2
  48. package/lib/cjs/graph/execution/GraphExecutionContext.cjs +2 -2
  49. package/lib/cjs/graph/execution/GraphExecutionEngine.cjs +2 -2
  50. package/lib/cjs/graph/execution/GraphExecutionFrame.cjs +2 -2
  51. package/lib/cjs/graph/execution/GraphExecutionResult.cjs +2 -2
  52. package/lib/cjs/graph/execution/GraphNodeExecutor.cjs +2 -2
  53. package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +2 -2
  54. package/lib/cjs/graph/execution/index.cjs +2 -2
  55. package/lib/cjs/graph/index.cjs +2 -2
  56. package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs +2 -2
  57. package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs +2 -2
  58. package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs +2 -2
  59. package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs +2 -2
  60. package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs +2 -2
  61. package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs +2 -2
  62. package/lib/cjs/graph/loops/index.cjs +2 -2
  63. package/lib/cjs/graph/nodes/agent.cjs +2 -2
  64. package/lib/cjs/graph/nodes/base.cjs +35 -0
  65. package/lib/cjs/graph/nodes/category-styles.cjs +2 -2
  66. package/lib/cjs/graph/nodes/flow-control.cjs +31 -3
  67. package/lib/cjs/graph/nodes/index.cjs +3 -2
  68. package/lib/cjs/graph/nodes/triggers.cjs +2 -2
  69. package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs +2 -2
  70. package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs +2 -2
  71. package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs +2 -2
  72. package/lib/cjs/graph/pinning/GraphPinningService.cjs +2 -2
  73. package/lib/cjs/graph/pinning/index.cjs +2 -2
  74. package/lib/cjs/graph/planning/GraphExecutionPlan.cjs +2 -2
  75. package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs +2 -2
  76. package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs +2 -2
  77. package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs +2 -2
  78. package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs +2 -2
  79. package/lib/cjs/graph/planning/GraphRelationResolver.cjs +2 -2
  80. package/lib/cjs/graph/planning/GraphTopology.cjs +2 -2
  81. package/lib/cjs/graph/planning/index.cjs +2 -2
  82. package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs +2 -2
  83. package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs +2 -2
  84. package/lib/cjs/graph/registry/index.cjs +2 -2
  85. package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs +2 -2
  86. package/lib/cjs/graph/snapshots/index.cjs +2 -2
  87. package/lib/cjs/graph/store/GraphCachedValue.cjs +2 -2
  88. package/lib/cjs/graph/store/GraphValueKey.cjs +2 -2
  89. package/lib/cjs/graph/store/GraphValueStore.cjs +2 -2
  90. package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs +2 -2
  91. package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs +2 -2
  92. package/lib/cjs/graph/store/index.cjs +2 -2
  93. package/lib/cjs/graph/types.cjs +2 -2
  94. package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs +2 -2
  95. package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs +2 -2
  96. package/lib/cjs/graph/validation/GraphValueValidator.cjs +2 -2
  97. package/lib/cjs/graph/validation/index.cjs +2 -2
  98. package/lib/cjs/index.cjs +6 -5
  99. package/lib/cjs/keycloak/index.cjs +2 -2
  100. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
  101. package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
  102. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
  103. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
  104. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
  105. package/lib/cjs/keycloak/services/KeycloakService.cjs +2 -2
  106. package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
  107. package/lib/cjs/keycloak/services/index.cjs +2 -2
  108. package/lib/cjs/keycloak/services/runtime.cjs +2 -2
  109. package/lib/cjs/keycloak/types.cjs +2 -2
  110. package/lib/cjs/kibana/helpers.cjs +2 -2
  111. package/lib/cjs/kibana/index.cjs +2 -2
  112. package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
  113. package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
  114. package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
  115. package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
  116. package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
  117. package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
  118. package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
  119. package/lib/cjs/kibana/services/index.cjs +2 -2
  120. package/lib/cjs/kibana/services/runtime.cjs +2 -2
  121. package/lib/cjs/kibana/types.cjs +2 -2
  122. package/lib/cjs/namespaces/index.cjs +26 -0
  123. package/lib/cjs/namespaces/models/authorization-model.cjs +12 -0
  124. package/lib/cjs/namespaces/models/effective-permission.model.cjs +95 -0
  125. package/lib/cjs/namespaces/models/group-membership.model.cjs +66 -0
  126. package/lib/cjs/namespaces/models/group.model.cjs +74 -0
  127. package/lib/cjs/namespaces/models/index.cjs +39 -0
  128. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +76 -0
  129. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +66 -0
  130. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +73 -0
  131. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +64 -0
  132. package/lib/cjs/namespaces/models/org-unit.model.cjs +102 -0
  133. package/lib/cjs/namespaces/models/permission.model.cjs +64 -0
  134. package/lib/cjs/namespaces/models/principal.model.cjs +77 -0
  135. package/lib/cjs/namespaces/models/protected-resource.model.cjs +99 -0
  136. package/lib/cjs/namespaces/models/resource-grant.model.cjs +88 -0
  137. package/lib/cjs/namespaces/models/role-assignment.model.cjs +98 -0
  138. package/lib/cjs/namespaces/models/role-permission.model.cjs +55 -0
  139. package/lib/cjs/namespaces/models/role.model.cjs +84 -0
  140. package/lib/cjs/namespaces/models/storage-binding.model.cjs +85 -0
  141. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +67 -0
  142. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +64 -0
  143. package/lib/cjs/namespaces/models/tenant.model.cjs +88 -0
  144. package/lib/cjs/namespaces/models/user.model.cjs +75 -0
  145. package/lib/cjs/namespaces/org-based-authorization-system.cjs +286 -0
  146. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +968 -0
  147. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +1046 -0
  148. package/lib/cjs/namespaces/services/authz.service.cjs +76 -0
  149. package/lib/cjs/namespaces/services/bootstrap.service.cjs +112 -0
  150. package/lib/cjs/namespaces/services/effective-permission.service.cjs +150 -0
  151. package/lib/cjs/namespaces/services/group-membership.service.cjs +42 -0
  152. package/lib/cjs/namespaces/services/group.service.cjs +30 -0
  153. package/lib/cjs/namespaces/services/index.cjs +42 -0
  154. package/lib/cjs/namespaces/services/inheritance-block.service.cjs +32 -0
  155. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +55 -0
  156. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +34 -0
  157. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +23 -0
  158. package/lib/cjs/namespaces/services/org-unit.service.cjs +160 -0
  159. package/lib/cjs/namespaces/services/permission.service.cjs +29 -0
  160. package/lib/cjs/namespaces/services/principal.service.cjs +35 -0
  161. package/lib/cjs/namespaces/services/protected-resource.service.cjs +43 -0
  162. package/lib/cjs/namespaces/services/resource-grant.service.cjs +45 -0
  163. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +24 -0
  164. package/lib/cjs/namespaces/services/role-assignment.service.cjs +41 -0
  165. package/lib/cjs/namespaces/services/role-permission.service.cjs +51 -0
  166. package/lib/cjs/namespaces/services/role.service.cjs +45 -0
  167. package/lib/cjs/namespaces/services/storage-binding.service.cjs +39 -0
  168. package/lib/cjs/namespaces/services/system-management.service.cjs +102 -0
  169. package/lib/cjs/namespaces/services/tenant-membership.service.cjs +33 -0
  170. package/lib/cjs/namespaces/services/tenant-profile.service.cjs +28 -0
  171. package/lib/cjs/namespaces/services/tenant.service.cjs +36 -0
  172. package/lib/cjs/namespaces/services/user.service.cjs +32 -0
  173. package/lib/cjs/namespaces/types.cjs +67 -0
  174. package/lib/cjs/namespaces/utils.cjs +161 -0
  175. package/lib/cjs/nest/authService.cjs +2 -2
  176. package/lib/cjs/nest/graph/GraphExecutionController.cjs +153 -0
  177. package/lib/cjs/nest/graph/GraphExecutionModule.cjs +84 -0
  178. package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +82 -0
  179. package/lib/cjs/nest/graph/GraphExecutionResultRepository.cjs +66 -0
  180. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +35 -0
  181. package/lib/cjs/nest/graph/index.cjs +28 -0
  182. package/lib/cjs/nest/index.cjs +3 -2
  183. package/lib/cjs/nest/keycloakAuthHandler.cjs +2 -2
  184. package/lib/cjs/nest/keycloakModule.cjs +2 -2
  185. package/lib/cjs/nest/logging.cjs +2 -2
  186. package/lib/cjs/nest/types.cjs +2 -2
  187. package/lib/cjs/nest/utils.cjs +2 -2
  188. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
  189. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
  190. package/lib/cjs/secrets/aws/index.cjs +2 -2
  191. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
  192. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
  193. package/lib/cjs/secrets/azure/index.cjs +2 -2
  194. package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
  195. package/lib/cjs/secrets/core/SecretName.cjs +2 -2
  196. package/lib/cjs/secrets/core/SecretReference.cjs +2 -2
  197. package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
  198. package/lib/cjs/secrets/core/SecretService.cjs +2 -2
  199. package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
  200. package/lib/cjs/secrets/core/index.cjs +2 -2
  201. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
  202. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
  203. package/lib/cjs/secrets/gcp/index.cjs +2 -2
  204. package/lib/cjs/secrets/index.cjs +2 -2
  205. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
  206. package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
  207. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
  208. package/lib/cjs/secrets/model/Secret.cjs +2 -2
  209. package/lib/cjs/secrets/model/index.cjs +2 -2
  210. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
  211. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
  212. package/lib/cjs/secrets/onepassword/index.cjs +2 -2
  213. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
  214. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
  215. package/lib/cjs/secrets/vault/index.cjs +2 -2
  216. package/lib/cjs/shared/runtime.cjs +2 -2
  217. package/lib/cjs/utils.cjs +2 -2
  218. package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
  219. package/lib/esm/blob/azure/index.js +1 -1
  220. package/lib/esm/blob/core/BlobErrors.js +1 -1
  221. package/lib/esm/blob/core/BlobKey.js +1 -1
  222. package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
  223. package/lib/esm/blob/core/BlobStoreService.js +1 -1
  224. package/lib/esm/blob/core/BlobTypes.js +1 -1
  225. package/lib/esm/blob/core/BlobValue.js +1 -1
  226. package/lib/esm/blob/core/index.js +1 -1
  227. package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
  228. package/lib/esm/blob/gcp/index.js +1 -1
  229. package/lib/esm/blob/index.js +1 -1
  230. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js +1 -1
  231. package/lib/esm/blob/ipfs/IpfsKeyIndex.js +1 -1
  232. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js +1 -1
  233. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js +1 -1
  234. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js +1 -1
  235. package/lib/esm/blob/ipfs/index.js +1 -1
  236. package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
  237. package/lib/esm/blob/local/index.js +1 -1
  238. package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
  239. package/lib/esm/blob/memory/index.js +1 -1
  240. package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
  241. package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
  242. package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
  243. package/lib/esm/blob/s3/index.js +1 -1
  244. package/lib/esm/docker/DockerComposeService.js +1 -1
  245. package/lib/esm/docker/index.js +1 -1
  246. package/lib/esm/graph/constants.js +1 -1
  247. package/lib/esm/graph/decorators.js +1 -1
  248. package/lib/esm/graph/errors/GraphCycleError.js +1 -1
  249. package/lib/esm/graph/errors/GraphExecutionError.js +1 -1
  250. package/lib/esm/graph/errors/GraphInputError.js +1 -1
  251. package/lib/esm/graph/errors/GraphLoopLimitError.js +1 -1
  252. package/lib/esm/graph/errors/GraphPinningError.js +1 -1
  253. package/lib/esm/graph/errors/GraphPortError.js +1 -1
  254. package/lib/esm/graph/errors/GraphStoreError.js +1 -1
  255. package/lib/esm/graph/errors/GraphTopologyError.js +1 -1
  256. package/lib/esm/graph/errors/index.js +1 -1
  257. package/lib/esm/graph/events/GraphExecutionEvent.js +1 -1
  258. package/lib/esm/graph/events/GraphExecutionEventEmitter.js +1 -1
  259. package/lib/esm/graph/events/GraphExecutionEventFactory.js +1 -1
  260. package/lib/esm/graph/events/GraphExecutionObserver.js +1 -1
  261. package/lib/esm/graph/events/index.js +1 -1
  262. package/lib/esm/graph/execution/CodeSandboxEvaluator.js +1 -1
  263. package/lib/esm/graph/execution/GraphExecutionContext.js +1 -1
  264. package/lib/esm/graph/execution/GraphExecutionEngine.js +1 -1
  265. package/lib/esm/graph/execution/GraphExecutionFrame.js +1 -1
  266. package/lib/esm/graph/execution/GraphExecutionResult.js +1 -1
  267. package/lib/esm/graph/execution/GraphNodeExecutor.js +1 -1
  268. package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +1 -1
  269. package/lib/esm/graph/execution/index.js +1 -1
  270. package/lib/esm/graph/index.js +1 -1
  271. package/lib/esm/graph/loops/ConditionExpressionEvaluator.js +1 -1
  272. package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js +1 -1
  273. package/lib/esm/graph/loops/GraphConditionEvaluator.js +1 -1
  274. package/lib/esm/graph/loops/GraphLoopExecutionContext.js +1 -1
  275. package/lib/esm/graph/loops/UntilGraphNodeExecutor.js +1 -1
  276. package/lib/esm/graph/loops/WhileGraphNodeExecutor.js +1 -1
  277. package/lib/esm/graph/loops/index.js +1 -1
  278. package/lib/esm/graph/nodes/agent.js +1 -1
  279. package/lib/esm/graph/nodes/base.js +30 -0
  280. package/lib/esm/graph/nodes/category-styles.js +1 -1
  281. package/lib/esm/graph/nodes/flow-control.js +31 -3
  282. package/lib/esm/graph/nodes/index.js +2 -1
  283. package/lib/esm/graph/nodes/triggers.js +1 -1
  284. package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js +1 -1
  285. package/lib/esm/graph/pinning/GraphPinningMetadata.js +1 -1
  286. package/lib/esm/graph/pinning/GraphPinningPolicy.js +1 -1
  287. package/lib/esm/graph/pinning/GraphPinningService.js +1 -1
  288. package/lib/esm/graph/pinning/index.js +1 -1
  289. package/lib/esm/graph/planning/GraphExecutionPlan.js +1 -1
  290. package/lib/esm/graph/planning/GraphExecutionPlanEdge.js +1 -1
  291. package/lib/esm/graph/planning/GraphExecutionPlanLayer.js +1 -1
  292. package/lib/esm/graph/planning/GraphExecutionPlanNode.js +1 -1
  293. package/lib/esm/graph/planning/GraphExecutionPlanner.js +1 -1
  294. package/lib/esm/graph/planning/GraphRelationResolver.js +1 -1
  295. package/lib/esm/graph/planning/GraphTopology.js +1 -1
  296. package/lib/esm/graph/planning/index.js +1 -1
  297. package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js +1 -1
  298. package/lib/esm/graph/registry/GraphNodeExecutorResolver.js +1 -1
  299. package/lib/esm/graph/registry/index.js +1 -1
  300. package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js +1 -1
  301. package/lib/esm/graph/snapshots/index.js +1 -1
  302. package/lib/esm/graph/store/GraphCachedValue.js +1 -1
  303. package/lib/esm/graph/store/GraphValueKey.js +1 -1
  304. package/lib/esm/graph/store/GraphValueStore.js +1 -1
  305. package/lib/esm/graph/store/GraphValueStoreAdapter.js +1 -1
  306. package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js +1 -1
  307. package/lib/esm/graph/store/index.js +1 -1
  308. package/lib/esm/graph/types.js +1 -1
  309. package/lib/esm/graph/validation/GraphDefinitionValidator.js +1 -1
  310. package/lib/esm/graph/validation/GraphPortSchemaResolver.js +1 -1
  311. package/lib/esm/graph/validation/GraphValueValidator.js +1 -1
  312. package/lib/esm/graph/validation/index.js +1 -1
  313. package/lib/esm/index.js +5 -4
  314. package/lib/esm/keycloak/index.js +1 -1
  315. package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
  316. package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
  317. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +1 -1
  318. package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
  319. package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
  320. package/lib/esm/keycloak/services/KeycloakService.js +1 -1
  321. package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
  322. package/lib/esm/keycloak/services/index.js +1 -1
  323. package/lib/esm/keycloak/services/runtime.js +1 -1
  324. package/lib/esm/keycloak/types.js +1 -1
  325. package/lib/esm/kibana/helpers.js +1 -1
  326. package/lib/esm/kibana/index.js +1 -1
  327. package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
  328. package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
  329. package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
  330. package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
  331. package/lib/esm/kibana/services/KibanaService.js +1 -1
  332. package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
  333. package/lib/esm/kibana/services/KibanaUserService.js +1 -1
  334. package/lib/esm/kibana/services/index.js +1 -1
  335. package/lib/esm/kibana/services/runtime.js +1 -1
  336. package/lib/esm/kibana/types.js +1 -1
  337. package/lib/esm/namespaces/index.js +9 -0
  338. package/lib/esm/namespaces/models/authorization-model.js +7 -0
  339. package/lib/esm/namespaces/models/effective-permission.model.js +86 -0
  340. package/lib/esm/namespaces/models/group-membership.model.js +57 -0
  341. package/lib/esm/namespaces/models/group.model.js +65 -0
  342. package/lib/esm/namespaces/models/index.js +22 -0
  343. package/lib/esm/namespaces/models/inheritance-block.model.js +67 -0
  344. package/lib/esm/namespaces/models/org-unit-closure.model.js +57 -0
  345. package/lib/esm/namespaces/models/org-unit-membership.model.js +64 -0
  346. package/lib/esm/namespaces/models/org-unit-profile.model.js +55 -0
  347. package/lib/esm/namespaces/models/org-unit.model.js +93 -0
  348. package/lib/esm/namespaces/models/permission.model.js +55 -0
  349. package/lib/esm/namespaces/models/principal.model.js +68 -0
  350. package/lib/esm/namespaces/models/protected-resource.model.js +90 -0
  351. package/lib/esm/namespaces/models/resource-grant.model.js +79 -0
  352. package/lib/esm/namespaces/models/role-assignment.model.js +89 -0
  353. package/lib/esm/namespaces/models/role-permission.model.js +46 -0
  354. package/lib/esm/namespaces/models/role.model.js +75 -0
  355. package/lib/esm/namespaces/models/storage-binding.model.js +76 -0
  356. package/lib/esm/namespaces/models/tenant-membership.model.js +58 -0
  357. package/lib/esm/namespaces/models/tenant-profile.model.js +55 -0
  358. package/lib/esm/namespaces/models/tenant.model.js +79 -0
  359. package/lib/esm/namespaces/models/user.model.js +66 -0
  360. package/lib/esm/namespaces/org-based-authorization-system.js +283 -0
  361. package/lib/esm/namespaces/org-based-authorization-system.models.js +958 -0
  362. package/lib/esm/namespaces/org-based-authorization-system.services.js +1014 -0
  363. package/lib/esm/namespaces/services/authz.service.js +71 -0
  364. package/lib/esm/namespaces/services/bootstrap.service.js +102 -0
  365. package/lib/esm/namespaces/services/effective-permission.service.js +140 -0
  366. package/lib/esm/namespaces/services/group-membership.service.js +37 -0
  367. package/lib/esm/namespaces/services/group.service.js +25 -0
  368. package/lib/esm/namespaces/services/index.js +25 -0
  369. package/lib/esm/namespaces/services/inheritance-block.service.js +27 -0
  370. package/lib/esm/namespaces/services/org-unit-closure.service.js +50 -0
  371. package/lib/esm/namespaces/services/org-unit-membership.service.js +29 -0
  372. package/lib/esm/namespaces/services/org-unit-profile.service.js +18 -0
  373. package/lib/esm/namespaces/services/org-unit.service.js +150 -0
  374. package/lib/esm/namespaces/services/permission.service.js +24 -0
  375. package/lib/esm/namespaces/services/principal.service.js +30 -0
  376. package/lib/esm/namespaces/services/protected-resource.service.js +38 -0
  377. package/lib/esm/namespaces/services/resource-grant.service.js +40 -0
  378. package/lib/esm/namespaces/services/resource-lifecycle.service.js +19 -0
  379. package/lib/esm/namespaces/services/role-assignment.service.js +36 -0
  380. package/lib/esm/namespaces/services/role-permission.service.js +46 -0
  381. package/lib/esm/namespaces/services/role.service.js +40 -0
  382. package/lib/esm/namespaces/services/storage-binding.service.js +34 -0
  383. package/lib/esm/namespaces/services/system-management.service.js +92 -0
  384. package/lib/esm/namespaces/services/tenant-membership.service.js +28 -0
  385. package/lib/esm/namespaces/services/tenant-profile.service.js +23 -0
  386. package/lib/esm/namespaces/services/tenant.service.js +31 -0
  387. package/lib/esm/namespaces/services/user.service.js +27 -0
  388. package/lib/esm/namespaces/types.js +71 -0
  389. package/lib/esm/namespaces/utils.js +143 -0
  390. package/lib/esm/nest/authService.js +1 -1
  391. package/lib/esm/nest/graph/GraphExecutionController.js +144 -0
  392. package/lib/esm/nest/graph/GraphExecutionModule.js +76 -0
  393. package/lib/esm/nest/graph/GraphExecutionResultModel.js +73 -0
  394. package/lib/esm/nest/graph/GraphExecutionResultRepository.js +60 -0
  395. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +31 -0
  396. package/lib/esm/nest/graph/index.js +11 -0
  397. package/lib/esm/nest/index.js +2 -1
  398. package/lib/esm/nest/keycloakAuthHandler.js +1 -1
  399. package/lib/esm/nest/keycloakModule.js +1 -1
  400. package/lib/esm/nest/logging.js +1 -1
  401. package/lib/esm/nest/types.js +1 -1
  402. package/lib/esm/nest/utils.js +1 -1
  403. package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
  404. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
  405. package/lib/esm/secrets/aws/index.js +1 -1
  406. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
  407. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
  408. package/lib/esm/secrets/azure/index.js +1 -1
  409. package/lib/esm/secrets/core/SecretErrors.js +1 -1
  410. package/lib/esm/secrets/core/SecretName.js +1 -1
  411. package/lib/esm/secrets/core/SecretReference.js +1 -1
  412. package/lib/esm/secrets/core/SecretSerialization.js +1 -1
  413. package/lib/esm/secrets/core/SecretService.js +1 -1
  414. package/lib/esm/secrets/core/SecretTypes.js +1 -1
  415. package/lib/esm/secrets/core/index.js +1 -1
  416. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
  417. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
  418. package/lib/esm/secrets/gcp/index.js +1 -1
  419. package/lib/esm/secrets/index.js +1 -1
  420. package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
  421. package/lib/esm/secrets/model/ModelSecretService.js +1 -1
  422. package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
  423. package/lib/esm/secrets/model/Secret.js +1 -1
  424. package/lib/esm/secrets/model/index.js +1 -1
  425. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
  426. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
  427. package/lib/esm/secrets/onepassword/index.js +1 -1
  428. package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
  429. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
  430. package/lib/esm/secrets/vault/index.js +1 -1
  431. package/lib/esm/shared/runtime.js +1 -1
  432. package/lib/esm/utils.js +1 -1
  433. package/lib/types/graph/nodes/base.d.cts +28 -0
  434. package/lib/types/graph/nodes/base.d.mts +28 -0
  435. package/lib/types/graph/nodes/flow-control.d.cts +9 -1
  436. package/lib/types/graph/nodes/flow-control.d.mts +9 -1
  437. package/lib/types/graph/nodes/index.d.cts +1 -0
  438. package/lib/types/graph/nodes/index.d.mts +1 -0
  439. package/lib/types/graph/types.d.cts +15 -1
  440. package/lib/types/graph/types.d.mts +15 -1
  441. package/lib/types/index.d.cts +3 -2
  442. package/lib/types/index.d.mts +3 -2
  443. package/lib/types/namespaces/index.d.cts +8 -0
  444. package/lib/types/namespaces/index.d.mts +8 -0
  445. package/lib/types/namespaces/models/authorization-model.d.cts +4 -0
  446. package/lib/types/namespaces/models/authorization-model.d.mts +4 -0
  447. package/lib/types/namespaces/models/effective-permission.model.d.cts +18 -0
  448. package/lib/types/namespaces/models/effective-permission.model.d.mts +18 -0
  449. package/lib/types/namespaces/models/group-membership.model.d.cts +13 -0
  450. package/lib/types/namespaces/models/group-membership.model.d.mts +13 -0
  451. package/lib/types/namespaces/models/group.model.d.cts +15 -0
  452. package/lib/types/namespaces/models/group.model.d.mts +15 -0
  453. package/lib/types/namespaces/models/index.d.cts +21 -0
  454. package/lib/types/namespaces/models/index.d.mts +21 -0
  455. package/lib/types/namespaces/models/inheritance-block.model.d.cts +15 -0
  456. package/lib/types/namespaces/models/inheritance-block.model.d.mts +15 -0
  457. package/lib/types/namespaces/models/org-unit-closure.model.d.cts +12 -0
  458. package/lib/types/namespaces/models/org-unit-closure.model.d.mts +12 -0
  459. package/lib/types/namespaces/models/org-unit-membership.model.d.cts +15 -0
  460. package/lib/types/namespaces/models/org-unit-membership.model.d.mts +15 -0
  461. package/lib/types/namespaces/models/org-unit-profile.model.d.cts +11 -0
  462. package/lib/types/namespaces/models/org-unit-profile.model.d.mts +11 -0
  463. package/lib/types/namespaces/models/org-unit.model.d.cts +23 -0
  464. package/lib/types/namespaces/models/org-unit.model.d.mts +23 -0
  465. package/lib/types/namespaces/models/permission.model.d.cts +11 -0
  466. package/lib/types/namespaces/models/permission.model.d.mts +11 -0
  467. package/lib/types/namespaces/models/principal.model.d.cts +16 -0
  468. package/lib/types/namespaces/models/principal.model.d.mts +16 -0
  469. package/lib/types/namespaces/models/protected-resource.model.d.cts +21 -0
  470. package/lib/types/namespaces/models/protected-resource.model.d.mts +21 -0
  471. package/lib/types/namespaces/models/resource-grant.model.d.cts +18 -0
  472. package/lib/types/namespaces/models/resource-grant.model.d.mts +18 -0
  473. package/lib/types/namespaces/models/role-assignment.model.d.cts +20 -0
  474. package/lib/types/namespaces/models/role-assignment.model.d.mts +20 -0
  475. package/lib/types/namespaces/models/role-permission.model.d.cts +10 -0
  476. package/lib/types/namespaces/models/role-permission.model.d.mts +10 -0
  477. package/lib/types/namespaces/models/role.model.d.cts +17 -0
  478. package/lib/types/namespaces/models/role.model.d.mts +17 -0
  479. package/lib/types/namespaces/models/storage-binding.model.d.cts +15 -0
  480. package/lib/types/namespaces/models/storage-binding.model.d.mts +15 -0
  481. package/lib/types/namespaces/models/tenant-membership.model.d.cts +13 -0
  482. package/lib/types/namespaces/models/tenant-membership.model.d.mts +13 -0
  483. package/lib/types/namespaces/models/tenant-profile.model.d.cts +11 -0
  484. package/lib/types/namespaces/models/tenant-profile.model.d.mts +11 -0
  485. package/lib/types/namespaces/models/tenant.model.d.cts +19 -0
  486. package/lib/types/namespaces/models/tenant.model.d.mts +19 -0
  487. package/lib/types/namespaces/models/user.model.d.cts +14 -0
  488. package/lib/types/namespaces/models/user.model.d.mts +14 -0
  489. package/lib/types/namespaces/org-based-authorization-system.d.cts +299 -0
  490. package/lib/types/namespaces/org-based-authorization-system.d.mts +299 -0
  491. package/lib/types/namespaces/org-based-authorization-system.models.d.cts +212 -0
  492. package/lib/types/namespaces/org-based-authorization-system.models.d.mts +212 -0
  493. package/lib/types/namespaces/org-based-authorization-system.services.d.cts +217 -0
  494. package/lib/types/namespaces/org-based-authorization-system.services.d.mts +217 -0
  495. package/lib/types/namespaces/services/authz.service.d.cts +10 -0
  496. package/lib/types/namespaces/services/authz.service.d.mts +10 -0
  497. package/lib/types/namespaces/services/bootstrap.service.d.cts +21 -0
  498. package/lib/types/namespaces/services/bootstrap.service.d.mts +21 -0
  499. package/lib/types/namespaces/services/effective-permission.service.d.cts +13 -0
  500. package/lib/types/namespaces/services/effective-permission.service.d.mts +13 -0
  501. package/lib/types/namespaces/services/group-membership.service.d.cts +10 -0
  502. package/lib/types/namespaces/services/group-membership.service.d.mts +10 -0
  503. package/lib/types/namespaces/services/group.service.d.cts +9 -0
  504. package/lib/types/namespaces/services/group.service.d.mts +9 -0
  505. package/lib/types/namespaces/services/index.d.cts +24 -0
  506. package/lib/types/namespaces/services/index.d.mts +24 -0
  507. package/lib/types/namespaces/services/inheritance-block.service.d.cts +10 -0
  508. package/lib/types/namespaces/services/inheritance-block.service.d.mts +10 -0
  509. package/lib/types/namespaces/services/org-unit-closure.service.d.cts +11 -0
  510. package/lib/types/namespaces/services/org-unit-closure.service.d.mts +11 -0
  511. package/lib/types/namespaces/services/org-unit-membership.service.d.cts +11 -0
  512. package/lib/types/namespaces/services/org-unit-membership.service.d.mts +11 -0
  513. package/lib/types/namespaces/services/org-unit-profile.service.d.cts +7 -0
  514. package/lib/types/namespaces/services/org-unit-profile.service.d.mts +7 -0
  515. package/lib/types/namespaces/services/org-unit.service.d.cts +18 -0
  516. package/lib/types/namespaces/services/org-unit.service.d.mts +18 -0
  517. package/lib/types/namespaces/services/permission.service.d.cts +10 -0
  518. package/lib/types/namespaces/services/permission.service.d.mts +10 -0
  519. package/lib/types/namespaces/services/principal.service.d.cts +11 -0
  520. package/lib/types/namespaces/services/principal.service.d.mts +11 -0
  521. package/lib/types/namespaces/services/protected-resource.service.d.cts +13 -0
  522. package/lib/types/namespaces/services/protected-resource.service.d.mts +13 -0
  523. package/lib/types/namespaces/services/resource-grant.service.d.cts +12 -0
  524. package/lib/types/namespaces/services/resource-grant.service.d.mts +12 -0
  525. package/lib/types/namespaces/services/resource-lifecycle.service.d.cts +10 -0
  526. package/lib/types/namespaces/services/resource-lifecycle.service.d.mts +10 -0
  527. package/lib/types/namespaces/services/role-assignment.service.d.cts +12 -0
  528. package/lib/types/namespaces/services/role-assignment.service.d.mts +12 -0
  529. package/lib/types/namespaces/services/role-permission.service.d.cts +12 -0
  530. package/lib/types/namespaces/services/role-permission.service.d.mts +12 -0
  531. package/lib/types/namespaces/services/role.service.d.cts +12 -0
  532. package/lib/types/namespaces/services/role.service.d.mts +12 -0
  533. package/lib/types/namespaces/services/storage-binding.service.d.cts +12 -0
  534. package/lib/types/namespaces/services/storage-binding.service.d.mts +12 -0
  535. package/lib/types/namespaces/services/system-management.service.d.cts +14 -0
  536. package/lib/types/namespaces/services/system-management.service.d.mts +14 -0
  537. package/lib/types/namespaces/services/tenant-membership.service.d.cts +11 -0
  538. package/lib/types/namespaces/services/tenant-membership.service.d.mts +11 -0
  539. package/lib/types/namespaces/services/tenant-profile.service.d.cts +8 -0
  540. package/lib/types/namespaces/services/tenant-profile.service.d.mts +8 -0
  541. package/lib/types/namespaces/services/tenant.service.d.cts +12 -0
  542. package/lib/types/namespaces/services/tenant.service.d.mts +12 -0
  543. package/lib/types/namespaces/services/user.service.d.cts +11 -0
  544. package/lib/types/namespaces/services/user.service.d.mts +11 -0
  545. package/lib/types/namespaces/types.d.cts +230 -0
  546. package/lib/types/namespaces/types.d.mts +230 -0
  547. package/lib/types/namespaces/utils.d.cts +68 -0
  548. package/lib/types/namespaces/utils.d.mts +68 -0
  549. package/lib/types/nest/graph/GraphExecutionController.d.cts +62 -0
  550. package/lib/types/nest/graph/GraphExecutionController.d.mts +62 -0
  551. package/lib/types/nest/graph/GraphExecutionModule.d.cts +39 -0
  552. package/lib/types/nest/graph/GraphExecutionModule.d.mts +39 -0
  553. package/lib/types/nest/graph/GraphExecutionResultModel.d.cts +46 -0
  554. package/lib/types/nest/graph/GraphExecutionResultModel.d.mts +46 -0
  555. package/lib/types/nest/graph/GraphExecutionResultRepository.d.cts +38 -0
  556. package/lib/types/nest/graph/GraphExecutionResultRepository.d.mts +38 -0
  557. package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.cts +17 -0
  558. package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.mts +17 -0
  559. package/lib/types/nest/graph/index.d.cts +10 -0
  560. package/lib/types/nest/graph/index.d.mts +10 -0
  561. package/lib/types/nest/index.d.cts +1 -0
  562. package/lib/types/nest/index.d.mts +1 -0
  563. package/package.json +16 -5
  564. package/sql/001_constraints.sql +11 -0
  565. package/sql/002_rls.sql +20 -0
  566. package/sql/003_indexes.sql +2 -0
  567. package/dist/integrations.cjs.map +0 -1
  568. package/dist/integrations.js.map +0 -1
  569. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +0 -1
  570. package/lib/cjs/blob/azure/index.cjs.map +0 -1
  571. package/lib/cjs/blob/core/BlobErrors.cjs.map +0 -1
  572. package/lib/cjs/blob/core/BlobKey.cjs.map +0 -1
  573. package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +0 -1
  574. package/lib/cjs/blob/core/BlobStoreService.cjs.map +0 -1
  575. package/lib/cjs/blob/core/BlobTypes.cjs.map +0 -1
  576. package/lib/cjs/blob/core/BlobValue.cjs.map +0 -1
  577. package/lib/cjs/blob/core/index.cjs.map +0 -1
  578. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +0 -1
  579. package/lib/cjs/blob/gcp/index.cjs.map +0 -1
  580. package/lib/cjs/blob/index.cjs.map +0 -1
  581. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs.map +0 -1
  582. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs.map +0 -1
  583. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs.map +0 -1
  584. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs.map +0 -1
  585. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs.map +0 -1
  586. package/lib/cjs/blob/ipfs/index.cjs.map +0 -1
  587. package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +0 -1
  588. package/lib/cjs/blob/local/index.cjs.map +0 -1
  589. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +0 -1
  590. package/lib/cjs/blob/memory/index.cjs.map +0 -1
  591. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +0 -1
  592. package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +0 -1
  593. package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +0 -1
  594. package/lib/cjs/blob/s3/index.cjs.map +0 -1
  595. package/lib/cjs/docker/DockerComposeService.cjs.map +0 -1
  596. package/lib/cjs/docker/index.cjs.map +0 -1
  597. package/lib/cjs/graph/constants.cjs.map +0 -1
  598. package/lib/cjs/graph/decorators.cjs.map +0 -1
  599. package/lib/cjs/graph/errors/GraphCycleError.cjs.map +0 -1
  600. package/lib/cjs/graph/errors/GraphExecutionError.cjs.map +0 -1
  601. package/lib/cjs/graph/errors/GraphInputError.cjs.map +0 -1
  602. package/lib/cjs/graph/errors/GraphLoopLimitError.cjs.map +0 -1
  603. package/lib/cjs/graph/errors/GraphPinningError.cjs.map +0 -1
  604. package/lib/cjs/graph/errors/GraphPortError.cjs.map +0 -1
  605. package/lib/cjs/graph/errors/GraphStoreError.cjs.map +0 -1
  606. package/lib/cjs/graph/errors/GraphTopologyError.cjs.map +0 -1
  607. package/lib/cjs/graph/errors/index.cjs.map +0 -1
  608. package/lib/cjs/graph/events/GraphExecutionEvent.cjs.map +0 -1
  609. package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs.map +0 -1
  610. package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs.map +0 -1
  611. package/lib/cjs/graph/events/GraphExecutionObserver.cjs.map +0 -1
  612. package/lib/cjs/graph/events/index.cjs.map +0 -1
  613. package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs.map +0 -1
  614. package/lib/cjs/graph/execution/GraphExecutionContext.cjs.map +0 -1
  615. package/lib/cjs/graph/execution/GraphExecutionEngine.cjs.map +0 -1
  616. package/lib/cjs/graph/execution/GraphExecutionFrame.cjs.map +0 -1
  617. package/lib/cjs/graph/execution/GraphExecutionResult.cjs.map +0 -1
  618. package/lib/cjs/graph/execution/GraphNodeExecutor.cjs.map +0 -1
  619. package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs.map +0 -1
  620. package/lib/cjs/graph/execution/index.cjs.map +0 -1
  621. package/lib/cjs/graph/index.cjs.map +0 -1
  622. package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs.map +0 -1
  623. package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs.map +0 -1
  624. package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs.map +0 -1
  625. package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs.map +0 -1
  626. package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs.map +0 -1
  627. package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs.map +0 -1
  628. package/lib/cjs/graph/loops/index.cjs.map +0 -1
  629. package/lib/cjs/graph/nodes/agent.cjs.map +0 -1
  630. package/lib/cjs/graph/nodes/category-styles.cjs.map +0 -1
  631. package/lib/cjs/graph/nodes/flow-control.cjs.map +0 -1
  632. package/lib/cjs/graph/nodes/index.cjs.map +0 -1
  633. package/lib/cjs/graph/nodes/triggers.cjs.map +0 -1
  634. package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs.map +0 -1
  635. package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs.map +0 -1
  636. package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs.map +0 -1
  637. package/lib/cjs/graph/pinning/GraphPinningService.cjs.map +0 -1
  638. package/lib/cjs/graph/pinning/index.cjs.map +0 -1
  639. package/lib/cjs/graph/planning/GraphExecutionPlan.cjs.map +0 -1
  640. package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs.map +0 -1
  641. package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs.map +0 -1
  642. package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs.map +0 -1
  643. package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs.map +0 -1
  644. package/lib/cjs/graph/planning/GraphRelationResolver.cjs.map +0 -1
  645. package/lib/cjs/graph/planning/GraphTopology.cjs.map +0 -1
  646. package/lib/cjs/graph/planning/index.cjs.map +0 -1
  647. package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs.map +0 -1
  648. package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs.map +0 -1
  649. package/lib/cjs/graph/registry/index.cjs.map +0 -1
  650. package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs.map +0 -1
  651. package/lib/cjs/graph/snapshots/index.cjs.map +0 -1
  652. package/lib/cjs/graph/store/GraphCachedValue.cjs.map +0 -1
  653. package/lib/cjs/graph/store/GraphValueKey.cjs.map +0 -1
  654. package/lib/cjs/graph/store/GraphValueStore.cjs.map +0 -1
  655. package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs.map +0 -1
  656. package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs.map +0 -1
  657. package/lib/cjs/graph/store/index.cjs.map +0 -1
  658. package/lib/cjs/graph/types.cjs.map +0 -1
  659. package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs.map +0 -1
  660. package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs.map +0 -1
  661. package/lib/cjs/graph/validation/GraphValueValidator.cjs.map +0 -1
  662. package/lib/cjs/graph/validation/index.cjs.map +0 -1
  663. package/lib/cjs/index.cjs.map +0 -1
  664. package/lib/cjs/keycloak/index.cjs.map +0 -1
  665. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +0 -1
  666. package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +0 -1
  667. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +0 -1
  668. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +0 -1
  669. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +0 -1
  670. package/lib/cjs/keycloak/services/KeycloakService.cjs.map +0 -1
  671. package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +0 -1
  672. package/lib/cjs/keycloak/services/index.cjs.map +0 -1
  673. package/lib/cjs/keycloak/services/runtime.cjs.map +0 -1
  674. package/lib/cjs/keycloak/types.cjs.map +0 -1
  675. package/lib/cjs/kibana/helpers.cjs.map +0 -1
  676. package/lib/cjs/kibana/index.cjs.map +0 -1
  677. package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +0 -1
  678. package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +0 -1
  679. package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +0 -1
  680. package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +0 -1
  681. package/lib/cjs/kibana/services/KibanaService.cjs.map +0 -1
  682. package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +0 -1
  683. package/lib/cjs/kibana/services/KibanaUserService.cjs.map +0 -1
  684. package/lib/cjs/kibana/services/index.cjs.map +0 -1
  685. package/lib/cjs/kibana/services/runtime.cjs.map +0 -1
  686. package/lib/cjs/kibana/types.cjs.map +0 -1
  687. package/lib/cjs/nest/authService.cjs.map +0 -1
  688. package/lib/cjs/nest/index.cjs.map +0 -1
  689. package/lib/cjs/nest/keycloakAuthHandler.cjs.map +0 -1
  690. package/lib/cjs/nest/keycloakModule.cjs.map +0 -1
  691. package/lib/cjs/nest/logging.cjs.map +0 -1
  692. package/lib/cjs/nest/types.cjs.map +0 -1
  693. package/lib/cjs/nest/utils.cjs.map +0 -1
  694. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +0 -1
  695. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +0 -1
  696. package/lib/cjs/secrets/aws/index.cjs.map +0 -1
  697. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +0 -1
  698. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +0 -1
  699. package/lib/cjs/secrets/azure/index.cjs.map +0 -1
  700. package/lib/cjs/secrets/core/SecretErrors.cjs.map +0 -1
  701. package/lib/cjs/secrets/core/SecretName.cjs.map +0 -1
  702. package/lib/cjs/secrets/core/SecretReference.cjs.map +0 -1
  703. package/lib/cjs/secrets/core/SecretSerialization.cjs.map +0 -1
  704. package/lib/cjs/secrets/core/SecretService.cjs.map +0 -1
  705. package/lib/cjs/secrets/core/SecretTypes.cjs.map +0 -1
  706. package/lib/cjs/secrets/core/index.cjs.map +0 -1
  707. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +0 -1
  708. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +0 -1
  709. package/lib/cjs/secrets/gcp/index.cjs.map +0 -1
  710. package/lib/cjs/secrets/index.cjs.map +0 -1
  711. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +0 -1
  712. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +0 -1
  713. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +0 -1
  714. package/lib/cjs/secrets/model/Secret.cjs.map +0 -1
  715. package/lib/cjs/secrets/model/index.cjs.map +0 -1
  716. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +0 -1
  717. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +0 -1
  718. package/lib/cjs/secrets/onepassword/index.cjs.map +0 -1
  719. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +0 -1
  720. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +0 -1
  721. package/lib/cjs/secrets/vault/index.cjs.map +0 -1
  722. package/lib/cjs/shared/runtime.cjs.map +0 -1
  723. package/lib/cjs/utils.cjs.map +0 -1
  724. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +0 -1
  725. package/lib/esm/blob/azure/index.js.map +0 -1
  726. package/lib/esm/blob/core/BlobErrors.js.map +0 -1
  727. package/lib/esm/blob/core/BlobKey.js.map +0 -1
  728. package/lib/esm/blob/core/BlobStoreFactory.js.map +0 -1
  729. package/lib/esm/blob/core/BlobStoreService.js.map +0 -1
  730. package/lib/esm/blob/core/BlobTypes.js.map +0 -1
  731. package/lib/esm/blob/core/BlobValue.js.map +0 -1
  732. package/lib/esm/blob/core/index.js.map +0 -1
  733. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +0 -1
  734. package/lib/esm/blob/gcp/index.js.map +0 -1
  735. package/lib/esm/blob/index.js.map +0 -1
  736. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js.map +0 -1
  737. package/lib/esm/blob/ipfs/IpfsKeyIndex.js.map +0 -1
  738. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js.map +0 -1
  739. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js.map +0 -1
  740. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js.map +0 -1
  741. package/lib/esm/blob/ipfs/index.js.map +0 -1
  742. package/lib/esm/blob/local/LocalBlobStoreService.js.map +0 -1
  743. package/lib/esm/blob/local/index.js.map +0 -1
  744. package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +0 -1
  745. package/lib/esm/blob/memory/index.js.map +0 -1
  746. package/lib/esm/blob/s3/MinioBlobStoreService.js.map +0 -1
  747. package/lib/esm/blob/s3/R2BlobStoreService.js.map +0 -1
  748. package/lib/esm/blob/s3/S3BlobStoreService.js.map +0 -1
  749. package/lib/esm/blob/s3/index.js.map +0 -1
  750. package/lib/esm/docker/DockerComposeService.js.map +0 -1
  751. package/lib/esm/docker/index.js.map +0 -1
  752. package/lib/esm/graph/constants.js.map +0 -1
  753. package/lib/esm/graph/decorators.js.map +0 -1
  754. package/lib/esm/graph/errors/GraphCycleError.js.map +0 -1
  755. package/lib/esm/graph/errors/GraphExecutionError.js.map +0 -1
  756. package/lib/esm/graph/errors/GraphInputError.js.map +0 -1
  757. package/lib/esm/graph/errors/GraphLoopLimitError.js.map +0 -1
  758. package/lib/esm/graph/errors/GraphPinningError.js.map +0 -1
  759. package/lib/esm/graph/errors/GraphPortError.js.map +0 -1
  760. package/lib/esm/graph/errors/GraphStoreError.js.map +0 -1
  761. package/lib/esm/graph/errors/GraphTopologyError.js.map +0 -1
  762. package/lib/esm/graph/errors/index.js.map +0 -1
  763. package/lib/esm/graph/events/GraphExecutionEvent.js.map +0 -1
  764. package/lib/esm/graph/events/GraphExecutionEventEmitter.js.map +0 -1
  765. package/lib/esm/graph/events/GraphExecutionEventFactory.js.map +0 -1
  766. package/lib/esm/graph/events/GraphExecutionObserver.js.map +0 -1
  767. package/lib/esm/graph/events/index.js.map +0 -1
  768. package/lib/esm/graph/execution/CodeSandboxEvaluator.js.map +0 -1
  769. package/lib/esm/graph/execution/GraphExecutionContext.js.map +0 -1
  770. package/lib/esm/graph/execution/GraphExecutionEngine.js.map +0 -1
  771. package/lib/esm/graph/execution/GraphExecutionFrame.js.map +0 -1
  772. package/lib/esm/graph/execution/GraphExecutionResult.js.map +0 -1
  773. package/lib/esm/graph/execution/GraphNodeExecutor.js.map +0 -1
  774. package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js.map +0 -1
  775. package/lib/esm/graph/execution/index.js.map +0 -1
  776. package/lib/esm/graph/index.js.map +0 -1
  777. package/lib/esm/graph/loops/ConditionExpressionEvaluator.js.map +0 -1
  778. package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js.map +0 -1
  779. package/lib/esm/graph/loops/GraphConditionEvaluator.js.map +0 -1
  780. package/lib/esm/graph/loops/GraphLoopExecutionContext.js.map +0 -1
  781. package/lib/esm/graph/loops/UntilGraphNodeExecutor.js.map +0 -1
  782. package/lib/esm/graph/loops/WhileGraphNodeExecutor.js.map +0 -1
  783. package/lib/esm/graph/loops/index.js.map +0 -1
  784. package/lib/esm/graph/nodes/agent.js.map +0 -1
  785. package/lib/esm/graph/nodes/category-styles.js.map +0 -1
  786. package/lib/esm/graph/nodes/flow-control.js.map +0 -1
  787. package/lib/esm/graph/nodes/index.js.map +0 -1
  788. package/lib/esm/graph/nodes/triggers.js.map +0 -1
  789. package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js.map +0 -1
  790. package/lib/esm/graph/pinning/GraphPinningMetadata.js.map +0 -1
  791. package/lib/esm/graph/pinning/GraphPinningPolicy.js.map +0 -1
  792. package/lib/esm/graph/pinning/GraphPinningService.js.map +0 -1
  793. package/lib/esm/graph/pinning/index.js.map +0 -1
  794. package/lib/esm/graph/planning/GraphExecutionPlan.js.map +0 -1
  795. package/lib/esm/graph/planning/GraphExecutionPlanEdge.js.map +0 -1
  796. package/lib/esm/graph/planning/GraphExecutionPlanLayer.js.map +0 -1
  797. package/lib/esm/graph/planning/GraphExecutionPlanNode.js.map +0 -1
  798. package/lib/esm/graph/planning/GraphExecutionPlanner.js.map +0 -1
  799. package/lib/esm/graph/planning/GraphRelationResolver.js.map +0 -1
  800. package/lib/esm/graph/planning/GraphTopology.js.map +0 -1
  801. package/lib/esm/graph/planning/index.js.map +0 -1
  802. package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js.map +0 -1
  803. package/lib/esm/graph/registry/GraphNodeExecutorResolver.js.map +0 -1
  804. package/lib/esm/graph/registry/index.js.map +0 -1
  805. package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js.map +0 -1
  806. package/lib/esm/graph/snapshots/index.js.map +0 -1
  807. package/lib/esm/graph/store/GraphCachedValue.js.map +0 -1
  808. package/lib/esm/graph/store/GraphValueKey.js.map +0 -1
  809. package/lib/esm/graph/store/GraphValueStore.js.map +0 -1
  810. package/lib/esm/graph/store/GraphValueStoreAdapter.js.map +0 -1
  811. package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js.map +0 -1
  812. package/lib/esm/graph/store/index.js.map +0 -1
  813. package/lib/esm/graph/types.js.map +0 -1
  814. package/lib/esm/graph/validation/GraphDefinitionValidator.js.map +0 -1
  815. package/lib/esm/graph/validation/GraphPortSchemaResolver.js.map +0 -1
  816. package/lib/esm/graph/validation/GraphValueValidator.js.map +0 -1
  817. package/lib/esm/graph/validation/index.js.map +0 -1
  818. package/lib/esm/index.js.map +0 -1
  819. package/lib/esm/keycloak/index.js.map +0 -1
  820. package/lib/esm/keycloak/services/KeycloakAuthService.js.map +0 -1
  821. package/lib/esm/keycloak/services/KeycloakClientService.js.map +0 -1
  822. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +0 -1
  823. package/lib/esm/keycloak/services/KeycloakRealmService.js.map +0 -1
  824. package/lib/esm/keycloak/services/KeycloakRoleService.js.map +0 -1
  825. package/lib/esm/keycloak/services/KeycloakService.js.map +0 -1
  826. package/lib/esm/keycloak/services/KeycloakUserService.js.map +0 -1
  827. package/lib/esm/keycloak/services/index.js.map +0 -1
  828. package/lib/esm/keycloak/services/runtime.js.map +0 -1
  829. package/lib/esm/keycloak/types.js.map +0 -1
  830. package/lib/esm/kibana/helpers.js.map +0 -1
  831. package/lib/esm/kibana/index.js.map +0 -1
  832. package/lib/esm/kibana/services/KibanaAuthService.js.map +0 -1
  833. package/lib/esm/kibana/services/KibanaDashboardService.js.map +0 -1
  834. package/lib/esm/kibana/services/KibanaDataViewService.js.map +0 -1
  835. package/lib/esm/kibana/services/KibanaRoleService.js.map +0 -1
  836. package/lib/esm/kibana/services/KibanaService.js.map +0 -1
  837. package/lib/esm/kibana/services/KibanaSpaceService.js.map +0 -1
  838. package/lib/esm/kibana/services/KibanaUserService.js.map +0 -1
  839. package/lib/esm/kibana/services/index.js.map +0 -1
  840. package/lib/esm/kibana/services/runtime.js.map +0 -1
  841. package/lib/esm/kibana/types.js.map +0 -1
  842. package/lib/esm/nest/authService.js.map +0 -1
  843. package/lib/esm/nest/index.js.map +0 -1
  844. package/lib/esm/nest/keycloakAuthHandler.js.map +0 -1
  845. package/lib/esm/nest/keycloakModule.js.map +0 -1
  846. package/lib/esm/nest/logging.js.map +0 -1
  847. package/lib/esm/nest/types.js.map +0 -1
  848. package/lib/esm/nest/utils.js.map +0 -1
  849. package/lib/esm/secrets/aws/AwsSecretService.js.map +0 -1
  850. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +0 -1
  851. package/lib/esm/secrets/aws/index.js.map +0 -1
  852. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +0 -1
  853. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +0 -1
  854. package/lib/esm/secrets/azure/index.js.map +0 -1
  855. package/lib/esm/secrets/core/SecretErrors.js.map +0 -1
  856. package/lib/esm/secrets/core/SecretName.js.map +0 -1
  857. package/lib/esm/secrets/core/SecretReference.js.map +0 -1
  858. package/lib/esm/secrets/core/SecretSerialization.js.map +0 -1
  859. package/lib/esm/secrets/core/SecretService.js.map +0 -1
  860. package/lib/esm/secrets/core/SecretTypes.js.map +0 -1
  861. package/lib/esm/secrets/core/index.js.map +0 -1
  862. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +0 -1
  863. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +0 -1
  864. package/lib/esm/secrets/gcp/index.js.map +0 -1
  865. package/lib/esm/secrets/index.js.map +0 -1
  866. package/lib/esm/secrets/model/ModelSecretCrypto.js.map +0 -1
  867. package/lib/esm/secrets/model/ModelSecretService.js.map +0 -1
  868. package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +0 -1
  869. package/lib/esm/secrets/model/Secret.js.map +0 -1
  870. package/lib/esm/secrets/model/index.js.map +0 -1
  871. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +0 -1
  872. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +0 -1
  873. package/lib/esm/secrets/onepassword/index.js.map +0 -1
  874. package/lib/esm/secrets/vault/VaultSecretService.js.map +0 -1
  875. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +0 -1
  876. package/lib/esm/secrets/vault/index.js.map +0 -1
  877. package/lib/esm/shared/runtime.js.map +0 -1
  878. package/lib/esm/utils.js.map +0 -1
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrgUnitClosureService = void 0;
4
+ const utils_js_1 = require("./../utils.cjs");
5
+ const org_unit_closure_model_1 = require("../models/org-unit-closure.model");
6
+ class OrgUnitClosureService extends utils_js_1.BaseModelService {
7
+ constructor() {
8
+ super(org_unit_closure_model_1.OrgUnitClosure);
9
+ }
10
+ async listAncestors(tenantId, orgUnitId, ...args) {
11
+ return (await this.listAll(...args))
12
+ .filter((row) => (0, utils_js_1.sameTenant)(row.tenant, tenantId) && (0, utils_js_1.relationMatch)(row.descendant, orgUnitId))
13
+ .sort((left, right) => left.depth - right.depth);
14
+ }
15
+ async listDescendants(tenantId, orgUnitId, ...args) {
16
+ return (await this.listAll(...args))
17
+ .filter((row) => (0, utils_js_1.sameTenant)(row.tenant, tenantId) && (0, utils_js_1.relationMatch)(row.ancestor, orgUnitId))
18
+ .sort((left, right) => left.depth - right.depth);
19
+ }
20
+ async isAncestorOf(tenantId, ancestorOrgUnitId, descendantOrgUnitId, ...args) {
21
+ return (await this.listAncestors(tenantId, descendantOrgUnitId, ...args)).some((row) => (0, utils_js_1.relationMatch)(row.ancestor, ancestorOrgUnitId));
22
+ }
23
+ async createSelfLink(tenantId, orgUnitId, ...args) {
24
+ return this.create({
25
+ tenant: tenantId,
26
+ ancestor: orgUnitId,
27
+ descendant: orgUnitId,
28
+ depth: 0,
29
+ }, ...args);
30
+ }
31
+ async insertAncestorLinksForNewChild(tenantId, parentOrgUnitId, childOrgUnitId, ...args) {
32
+ const ancestorLinks = await this.listAncestors(tenantId, parentOrgUnitId, ...args);
33
+ for (const link of ancestorLinks) {
34
+ await this.create({
35
+ tenant: tenantId,
36
+ ancestor: link.ancestor,
37
+ descendant: childOrgUnitId,
38
+ depth: link.depth + 1,
39
+ }, ...args);
40
+ }
41
+ }
42
+ async deleteLinksForSubtree(tenantId, orgUnitId, ...args) {
43
+ const subtree = await this.listDescendants(tenantId, orgUnitId, ...args);
44
+ const descendantIds = new Set([orgUnitId, ...subtree.map((row) => (0, utils_js_1.relationId)(row.descendant))]);
45
+ const ancestorIds = new Set([orgUnitId, ...subtree.map((row) => (0, utils_js_1.relationId)(row.ancestor))]);
46
+ const rows = (await this.listAll(...args)).filter((row) => (0, utils_js_1.sameTenant)(row.tenant, tenantId) &&
47
+ (descendantIds.has((0, utils_js_1.relationId)(row.descendant)) || ancestorIds.has((0, utils_js_1.relationId)(row.ancestor))));
48
+ for (const row of rows) {
49
+ await this.deleteById(row.id, ...args);
50
+ }
51
+ }
52
+ }
53
+ exports.OrgUnitClosureService = OrgUnitClosureService;
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLXVuaXQtY2xvc3VyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbWVzcGFjZXMvc2VydmljZXMvb3JnLXVuaXQtY2xvc3VyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBTSxVQUFVLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxzQkFBaUI7QUFDdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWxFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxnQkFBZ0M7SUFDekU7UUFDRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBZ0IsRUFBRSxTQUFpQixFQUFFLEdBQUcsSUFBVztRQUNyRSxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7YUFDakMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUM3RixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFnQixFQUFFLFNBQWlCLEVBQUUsR0FBRyxJQUFXO1FBQ3ZFLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQzthQUNqQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFF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SUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlTW9kZWxTZXJ2aWNlLCBpZCwgcmVsYXRpb25JZCwgcmVsYXRpb25NYXRjaCwgc2FtZVRlbmFudCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgT3JnVW5pdENsb3N1cmUgfSBmcm9tIFwiLi4vbW9kZWxzL29yZy11bml0LWNsb3N1cmUubW9kZWxcIjtcblxuZXhwb3J0IGNsYXNzIE9yZ1VuaXRDbG9zdXJlU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8T3JnVW5pdENsb3N1cmU+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoT3JnVW5pdENsb3N1cmUpO1xuICB9XG5cbiAgYXN5bmMgbGlzdEFuY2VzdG9ycyh0ZW5hbnRJZDogc3RyaW5nLCBvcmdVbml0SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE9yZ1VuaXRDbG9zdXJlW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSlcbiAgICAgIC5maWx0ZXIoKHJvdykgPT4gc2FtZVRlbmFudChyb3cudGVuYW50LCB0ZW5hbnRJZCkgJiYgcmVsYXRpb25NYXRjaChyb3cuZGVzY2VuZGFudCwgb3JnVW5pdElkKSlcbiAgICAgIC5zb3J0KChsZWZ0LCByaWdodCkgPT4gbGVmdC5kZXB0aCAtIHJpZ2h0LmRlcHRoKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3REZXNjZW5kYW50cyh0ZW5hbnRJZDogc3RyaW5nLCBvcmdVbml0SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE9yZ1VuaXRDbG9zdXJlW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSlcbiAgICAgIC5maWx0ZXIoKHJvdykgPT4gc2FtZVRlbmFudChyb3cudGVuYW50LCB0ZW5hbnRJZCkgJiYgcmVsYXRpb25NYXRjaChyb3cuYW5jZXN0b3IsIG9yZ1VuaXRJZCkpXG4gICAgICAuc29ydCgobGVmdCwgcmlnaHQpID0+IGxlZnQuZGVwdGggLSByaWdodC5kZXB0aCk7XG4gIH1cblxuICBhc3luYyBpc0FuY2VzdG9yT2YoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBhbmNlc3Rvck9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIGRlc2NlbmRhbnRPcmdVbml0SWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFuY2VzdG9ycyh0ZW5hbnRJZCwgZGVzY2VuZGFudE9yZ1VuaXRJZCwgLi4uYXJncykpLnNvbWUoKHJvdykgPT5cbiAgICAgIHJlbGF0aW9uTWF0Y2gocm93LmFuY2VzdG9yLCBhbmNlc3Rvck9yZ1VuaXRJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlU2VsZkxpbmsodGVuYW50SWQ6IHN0cmluZywgb3JnVW5pdElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxPcmdVbml0Q2xvc3VyZT4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShcbiAgICAgIHtcbiAgICAgICAgdGVuYW50OiB0ZW5hbnRJZCxcbiAgICAgICAgYW5jZXN0b3I6IG9yZ1VuaXRJZCxcbiAgICAgICAgZGVzY2VuZGFudDogb3JnVW5pdElkLFxuICAgICAgICBkZXB0aDogMCxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGluc2VydEFuY2VzdG9yTGlua3NGb3JOZXdDaGlsZChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHBhcmVudE9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIGNoaWxkT3JnVW5pdElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYW5jZXN0b3JMaW5rcyA9IGF3YWl0IHRoaXMubGlzdEFuY2VzdG9ycyh0ZW5hbnRJZCwgcGFyZW50T3JnVW5pdElkLCAuLi5hcmdzKTtcbiAgICBmb3IgKGNvbnN0IGxpbmsgb2YgYW5jZXN0b3JMaW5rcykge1xuICAgICAgYXdhaXQgdGhpcy5jcmVhdGUoXG4gICAgICAgIHtcbiAgICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICAgIGFuY2VzdG9yOiBsaW5rLmFuY2VzdG9yLFxuICAgICAgICAgIGRlc2NlbmRhbnQ6IGNoaWxkT3JnVW5pdElkLFxuICAgICAgICAgIGRlcHRoOiBsaW5rLmRlcHRoICsgMSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uYXJnc1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGVMaW5rc0ZvclN1YnRyZWUodGVuYW50SWQ6IHN0cmluZywgb3JnVW5pdElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc3VidHJlZSA9IGF3YWl0IHRoaXMubGlzdERlc2NlbmRhbnRzKHRlbmFudElkLCBvcmdVbml0SWQsIC4uLmFyZ3MpO1xuICAgIGNvbnN0IGRlc2NlbmRhbnRJZHMgPSBuZXcgU2V0KFtvcmdVbml0SWQsIC4uLnN1YnRyZWUubWFwKChyb3cpID0+IHJlbGF0aW9uSWQocm93LmRlc2NlbmRhbnQpKV0pO1xuICAgIGNvbnN0IGFuY2VzdG9ySWRzID0gbmV3IFNldChbb3JnVW5pdElkLCAuLi5zdWJ0cmVlLm1hcCgocm93KSA9PiByZWxhdGlvbklkKHJvdy5hbmNlc3RvcikpXSk7XG4gICAgY29uc3Qgcm93cyA9IChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcihcbiAgICAgIChyb3cpID0+XG4gICAgICAgIHNhbWVUZW5hbnQocm93LnRlbmFudCwgdGVuYW50SWQpICYmXG4gICAgICAgIChkZXNjZW5kYW50SWRzLmhhcyhyZWxhdGlvbklkKHJvdy5kZXNjZW5kYW50KSkgfHwgYW5jZXN0b3JJZHMuaGFzKHJlbGF0aW9uSWQocm93LmFuY2VzdG9yKSkpXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgICBhd2FpdCB0aGlzLmRlbGV0ZUJ5SWQocm93LmlkLCAuLi5hcmdzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLXVuaXQtY2xvc3VyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsib3JnLXVuaXQtY2xvc3VyZS5zZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRDQUF3RjtBQUN4Riw2RUFBa0U7QUFDbEUsTUFBYSxxQkFBc0IsU0FBUSwyQkFBZ0I7SUFDdkQ7UUFDSSxLQUFLLENBQUMsdUNBQWMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJO1FBQzVDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQzthQUMvQixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUEscUJBQVUsRUFBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLElBQUEsd0JBQWEsRUFBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQzdGLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJO1FBQzlDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQzthQUMvQixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUEscUJBQVUsRUFBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLElBQUEsd0JBQWEsRUFBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQzNGLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVB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QUksQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUE5Q0Qsc0RBOENDO0FBQ0QsazFPQUFrMU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlTW9kZWxTZXJ2aWNlLCByZWxhdGlvbklkLCByZWxhdGlvbk1hdGNoLCBzYW1lVGVuYW50IH0gZnJvbSBcIi4vLi4vdXRpbHMuanNcIjtcbmltcG9ydCB7IE9yZ1VuaXRDbG9zdXJlIH0gZnJvbSBcIi4uL21vZGVscy9vcmctdW5pdC1jbG9zdXJlLm1vZGVsXCI7XG5leHBvcnQgY2xhc3MgT3JnVW5pdENsb3N1cmVTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKE9yZ1VuaXRDbG9zdXJlKTtcbiAgICB9XG4gICAgYXN5bmMgbGlzdEFuY2VzdG9ycyh0ZW5hbnRJZCwgb3JnVW5pdElkLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKVxuICAgICAgICAgICAgLmZpbHRlcigocm93KSA9PiBzYW1lVGVuYW50KHJvdy50ZW5hbnQsIHRlbmFudElkKSAmJiByZWxhdGlvbk1hdGNoKHJvdy5kZXNjZW5kYW50LCBvcmdVbml0SWQpKVxuICAgICAgICAgICAgLnNvcnQoKGxlZnQsIHJpZ2h0KSA9PiBsZWZ0LmRlcHRoIC0gcmlnaHQuZGVwdGgpO1xuICAgIH1cbiAgICBhc3luYyBsaXN0RGVzY2VuZGFudHModGVuYW50SWQsIG9yZ1VuaXRJZCwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHJvdykgPT4gc2FtZVRlbmFudChyb3cudGVuYW50LCB0ZW5hbnRJZCkgJiYgcmVsYXRpb25NYXRjaChyb3cuYW5jZXN0b3IsIG9yZ1VuaXRJZCkpXG4gICAgICAgICAgICAuc29ydCgobGVmdCwgcmlnaHQpID0+IGxlZnQuZGVwdGggLSByaWdodC5kZXB0aCk7XG4gICAgfVxuICAgIGFzeW5jIGlzQW5jZXN0b3JPZih0ZW5hbnRJZCwgYW5jZXN0b3JPcmdVbml0SWQsIGRlc2NlbmRhbnRPcmdVbml0SWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbmNlc3RvcnModGVuYW50SWQsIGRlc2NlbmRhbnRPcmdVbml0SWQsIC4uLmFyZ3MpKS5zb21lKChyb3cpID0+IHJlbGF0aW9uTWF0Y2gocm93LmFuY2VzdG9yLCBhbmNlc3Rvck9yZ1VuaXRJZCkpO1xuICAgIH1cbiAgICBhc3luYyBjcmVhdGVTZWxmTGluayh0ZW5hbnRJZCwgb3JnVW5pdElkLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZSh7XG4gICAgICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICAgICAgYW5jZXN0b3I6IG9yZ1VuaXRJZCxcbiAgICAgICAgICAgIGRlc2NlbmRhbnQ6IG9yZ1VuaXRJZCxcbiAgICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICB9LCAuLi5hcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgaW5zZXJ0QW5jZXN0b3JMaW5rc0Zvck5ld0NoaWxkKHRlbmFudElkLCBwYXJlbnRPcmdVbml0SWQsIGNoaWxkT3JnVW5pdElkLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IGFuY2VzdG9yTGlua3MgPSBhd2FpdCB0aGlzLmxpc3RBbmNlc3RvcnModGVuYW50SWQsIHBhcmVudE9yZ1VuaXRJZCwgLi4uYXJncyk7XG4gICAgICAgIGZvciAoY29uc3QgbGluayBvZiBhbmNlc3RvckxpbmtzKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNyZWF0ZSh7XG4gICAgICAgICAgICAgICAgdGVuYW50OiB0ZW5hbnRJZCxcbiAgICAgICAgICAgICAgICBhbmNlc3RvcjogbGluay5hbmNlc3RvcixcbiAgICAgICAgICAgICAgICBkZXNjZW5kYW50OiBjaGlsZE9yZ1VuaXRJZCxcbiAgICAgICAgICAgICAgICBkZXB0aDogbGluay5kZXB0aCArIDEsXG4gICAgICAgICAgICB9LCAuLi5hcmdzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBkZWxldGVMaW5rc0ZvclN1YnRyZWUodGVuYW50SWQsIG9yZ1VuaXRJZCwgLi4uYXJncykge1xuICAgICAgICBjb25zdCBzdWJ0cmVlID0gYXdhaXQgdGhpcy5saXN0RGVzY2VuZGFudHModGVuYW50SWQsIG9yZ1VuaXRJZCwgLi4uYXJncyk7XG4gICAgICAgIGNvbnN0IGRlc2NlbmRhbnRJZHMgPSBuZXcgU2V0KFtvcmdVbml0SWQsIC4uLnN1YnRyZWUubWFwKChyb3cpID0+IHJlbGF0aW9uSWQocm93LmRlc2NlbmRhbnQpKV0pO1xuICAgICAgICBjb25zdCBhbmNlc3RvcklkcyA9IG5ldyBTZXQoW29yZ1VuaXRJZCwgLi4uc3VidHJlZS5tYXAoKHJvdykgPT4gcmVsYXRpb25JZChyb3cuYW5jZXN0b3IpKV0pO1xuICAgICAgICBjb25zdCByb3dzID0gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChyb3cpID0+IHNhbWVUZW5hbnQocm93LnRlbmFudCwgdGVuYW50SWQpICYmXG4gICAgICAgICAgICAoZGVzY2VuZGFudElkcy5oYXMocmVsYXRpb25JZChyb3cuZGVzY2VuZGFudCkpIHx8IGFuY2VzdG9ySWRzLmhhcyhyZWxhdGlvbklkKHJvdy5hbmNlc3RvcikpKSk7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChyb3cuaWQsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYjNKbkxYVnVhWFF0WTJ4dmMzVnlaUzV6WlhKMmFXTmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dkxpNHZjM0pqTDI1aGJXVnpjR0ZqWlhNdmMyVnlkbWxqWlhNdmIzSm5MWFZ1YVhRdFkyeHZjM1Z5WlM1elpYSjJhV05sTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRTlCUVU4c1JVRkJSU3huUWtGQlowSXNSVUZCVFN4VlFVRlZMRVZCUVVVc1lVRkJZU3hGUVVGRkxGVkJRVlVzUlVGQlJTeHpRa0ZCYVVJN1FVRkRka1lzVDBGQlR5eEZRVUZGTEdOQlFXTXNSVUZCUlN4TlFVRk5MR3REUVVGclF5eERRVUZETzBGQlJXeEZMRTFCUVUwc1QwRkJUeXh4UWtGQmMwSXNVMEZCVVN4blFrRkJaME03U1VGRGVrVTdVVUZEUlN4TFFVRkxMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU03U1VGRGVFSXNRMEZCUXp0SlFVVkVMRXRCUVVzc1EwRkJReXhoUVVGaExFTkJRVU1zVVVGQlowSXNSVUZCUlN4VFFVRnBRaXhGUVVGRkxFZEJRVWNzU1VGQlZ6dFJRVU55UlN4UFFVRlBMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1lVRkRha01zVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNSVUZCUlN4UlFVRlJMRU5CUVVNc1NVRkJTU3hoUVVGaExFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWVXNSVUZCUlN4VFFVRlRMRU5CUVVNc1EwRkJRenRoUVVNM1JpeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU55UkN4RFFVRkRPMGxCUlVRc1MwRkJTeXhEUVVGRExHVkJRV1VzUTBGQlF5eFJRVUZuUWl4RlFVRkZMRk5CUVdsQ0xFVkJRVVVzUjBGQlJ5eEpRVUZYTzFGQlEzWkZMRTlCUVU4c1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRoUVVOcVF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RlFVRkZMRkZCUVZFc1EwRkJReXhKUVVGSkxHRkJRV0VzUTBGQlF5eEhRVUZITEVOQlFVTXNVVUZCVVN4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8yRkJRek5HTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hMUVVGTExFVkJRVVVzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBsQlEzSkVMRU5CUVVNN1NVRkZSQ3hMUVVGTExFTkJRVU1zV1VGQldTeERRVU5vUWl4UlFVRm5RaXhGUVVOb1FpeHBRa0ZCZVVJc1JVRkRla0lzYlVKQlFUSkNMRVZCUXpOQ0xFZEJRVWNzU1VGQlZ6dFJRVVZrTEU5QlFVOHNRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVVVGQlVTeEZRVUZGTEcxQ1FVRnRRaXhGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeERRVU55Uml4aFFVRmhMRU5CUVVNc1IwRkJSeXhEUVVGRExGRkJRVkVzUlVGQlJTeHBRa0ZCYVVJc1EwRkJReXhEUVVNdlF5eERRVUZETzBsQlEwb3NRMEZCUXp0SlFVVkVMRXRCUVVzc1EwRkJReXhqUVVGakxFTkJRVU1zVVVGQlowSXNSVUZCUlN4VFFVRnBRaXhGUVVGRkxFZEJRVWNzU1VGQlZ6dFJRVU4wUlN4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRMmhDTzFsQlEwVXNUVUZCVFN4RlFVRkZMRkZCUVZFN1dVRkRhRUlzVVVGQlVTeEZRVUZGTEZOQlFWTTdXVUZEYmtJc1ZVRkJWU3hGUVVGRkxGTkJRVk03V1VGRGNrSXNTMEZCU3l4RlFVRkZMRU5CUVVNN1UwRkRWQ3hGUVVORUxFZEJRVWNzU1VGQlNTeERRVU5TTEVOQlFVTTdTVUZEU2l4RFFVRkRPMGxCUlVRc1MwRkJTeXhEUVVGRExEaENRVUU0UWl4RFFVTnNReXhSUVVGblFpeEZRVU5vUWl4bFFVRjFRaXhGUVVOMlFpeGpRVUZ6UWl4RlFVTjBRaXhIUVVGSExFbEJRVmM3VVVGRlpDeE5RVUZOTEdGQlFXRXNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVVVGQlVTeEZRVUZGTEdWQlFXVXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRMjVHTEV0QlFVc3NUVUZCVFN4SlFVRkpMRWxCUVVrc1lVRkJZU3hGUVVGRkxFTkJRVU03V1VGRGFrTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVObU8yZENRVU5GTEUxQlFVMHNSVUZCUlN4UlFVRlJPMmRDUVVOb1FpeFJRVUZSTEVWQlFVVXNTVUZCU1N4RFFVRkRMRkZCUVZFN1owSkJRM1pDTEZWQlFWVXNSVUZCUlN4alFVRmpPMmRDUVVNeFFpeExRVUZMTEVWQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhEUVVGRE8yRkJRM1JDTEVWQlEwUXNSMEZCUnl4SlFVRkpMRU5CUTFJc1EwRkJRenRSUVVOS0xFTkJRVU03U1VGRFNDeERRVUZETzBsQlJVUXNTMEZCU3l4RFFVRkRMSEZDUVVGeFFpeERRVUZETEZGQlFXZENMRVZCUVVVc1UwRkJhVUlzUlVGQlJTeEhRVUZITEVsQlFWYzdVVUZETjBVc1RVRkJUU3hQUVVGUExFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRMRkZCUVZFc1JVRkJSU3hUUVVGVExFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTjZSU3hOUVVGTkxHRkJRV0VzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hIUVVGSExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGFFY3NUVUZCVFN4WFFVRlhMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpWR0xFMUJRVTBzU1VGQlNTeEhRVUZITEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUXk5RExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZEVGl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUlVGQlJTeFJRVUZSTEVOQlFVTTdXVUZEYUVNc1EwRkJReXhoUVVGaExFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zU1VGQlNTeFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVTXZSaXhEUVVGRE8xRkJRMFlzUzBGQlN5eE5RVUZOTEVkQlFVY3NTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJRenRaUVVOMlFpeE5RVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTNwRExFTkJRVU03U1VGRFNDeERRVUZETzBOQlEwWWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdleUJDWVhObFRXOWtaV3hUWlhKMmFXTmxMQ0JwWkN3Z2NtVnNZWFJwYjI1SlpDd2djbVZzWVhScGIyNU5ZWFJqYUN3Z2MyRnRaVlJsYm1GdWRDQjlJR1p5YjIwZ1hDSXVMaTkxZEdsc2Mxd2lPMXh1YVcxd2IzSjBJSHNnVDNKblZXNXBkRU5zYjNOMWNtVWdmU0JtY205dElGd2lMaTR2Ylc5a1pXeHpMMjl5WnkxMWJtbDBMV05zYjNOMWNtVXViVzlrWld4Y0lqdGNibHh1Wlhod2IzSjBJR05zWVhOeklFOXlaMVZ1YVhSRGJHOXpkWEpsVTJWeWRtbGpaU0JsZUhSbGJtUnpJRUpoYzJWTmIyUmxiRk5sY25acFkyVThUM0puVlc1cGRFTnNiM04xY21VK0lIdGNiaUFnWTI5dWMzUnlkV04wYjNJb0tTQjdYRzRnSUNBZ2MzVndaWElvVDNKblZXNXBkRU5zYjNOMWNtVXBPMXh1SUNCOVhHNWNiaUFnWVhONWJtTWdiR2x6ZEVGdVkyVnpkRzl5Y3loMFpXNWhiblJKWkRvZ2MzUnlhVzVuTENCdmNtZFZibWwwU1dRNklITjBjbWx1Wnl3Z0xpNHVZWEpuY3pvZ1lXNTVXMTBwT2lCUWNtOXRhWE5sUEU5eVoxVnVhWFJEYkc5emRYSmxXMTArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdLR0YzWVdsMElIUm9hWE11YkdsemRFRnNiQ2d1TGk1aGNtZHpLU2xjYmlBZ0lDQWdJQzVtYVd4MFpYSW9LSEp2ZHlrZ1BUNGdjMkZ0WlZSbGJtRnVkQ2h5YjNjdWRHVnVZVzUwTENCMFpXNWhiblJKWkNrZ0ppWWdjbVZzWVhScGIyNU5ZWFJqYUNoeWIzY3VaR1Z6WTJWdVpHRnVkQ3dnYjNKblZXNXBkRWxrS1NsY2JpQWdJQ0FnSUM1emIzSjBLQ2hzWldaMExDQnlhV2RvZENrZ1BUNGdiR1ZtZEM1a1pYQjBhQ0F0SUhKcFoyaDBMbVJsY0hSb0tUdGNiaUFnZlZ4dVhHNGdJR0Z6ZVc1aklHeHBjM1JFWlhOalpXNWtZVzUwY3loMFpXNWhiblJKWkRvZ2MzUnlhVzVuTENCdmNtZFZibWwwU1dRNklITjBjbWx1Wnl3Z0xpNHVZWEpuY3pvZ1lXNTVXMTBwT2lCUWNtOXRhWE5sUEU5eVoxVnVhWFJEYkc5emRYSmxXMTArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdLR0YzWVdsMElIUm9hWE11YkdsemRFRnNiQ2d1TGk1aGNtZHpLU2xjYmlBZ0lDQWdJQzVtYVd4MFpYSW9LSEp2ZHlrZ1BUNGdjMkZ0WlZSbGJtRnVkQ2h5YjNjdWRHVnVZVzUwTENCMFpXNWhiblJKWkNrZ0ppWWdjbVZzWVhScGIyNU5ZWFJqYUNoeWIzY3VZVzVqWlhOMGIzSXNJRzl5WjFWdWFYUkpaQ2twWEc0Z0lDQWdJQ0F1YzI5eWRDZ29iR1ZtZEN3Z2NtbG5hSFFwSUQwK0lHeGxablF1WkdWd2RHZ2dMU0J5YVdkb2RDNWtaWEIwYUNrN1hHNGdJSDFjYmx4dUlDQmhjM2x1WXlCcGMwRnVZMlZ6ZEc5eVQyWW9YRzRnSUNBZ2RHVnVZVzUwU1dRNklITjBjbWx1Wnl4Y2JpQWdJQ0JoYm1ObGMzUnZjazl5WjFWdWFYUkpaRG9nYzNSeWFXNW5MRnh1SUNBZ0lHUmxjMk5sYm1SaGJuUlBjbWRWYm1sMFNXUTZJSE4wY21sdVp5eGNiaUFnSUNBdUxpNWhjbWR6T2lCaGJubGJYVnh1SUNBcE9pQlFjbTl0YVhObFBHSnZiMnhsWVc0K0lIdGNiaUFnSUNCeVpYUjFjbTRnS0dGM1lXbDBJSFJvYVhNdWJHbHpkRUZ1WTJWemRHOXljeWgwWlc1aGJuUkpaQ3dnWkdWelkyVnVaR0Z1ZEU5eVoxVnVhWFJKWkN3Z0xpNHVZWEpuY3lrcExuTnZiV1VvS0hKdmR5a2dQVDVjYmlBZ0lDQWdJSEpsYkdGMGFXOXVUV0YwWTJnb2NtOTNMbUZ1WTJWemRHOXlMQ0JoYm1ObGMzUnZjazl5WjFWdWFYUkpaQ2xjYmlBZ0lDQXBPMXh1SUNCOVhHNWNiaUFnWVhONWJtTWdZM0psWVhSbFUyVnNaa3hwYm1zb2RHVnVZVzUwU1dRNklITjBjbWx1Wnl3Z2IzSm5WVzVwZEVsa09pQnpkSEpwYm1jc0lDNHVMbUZ5WjNNNklHRnVlVnRkS1RvZ1VISnZiV2x6WlR4UGNtZFZibWwwUTJ4dmMzVnlaVDRnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1OeVpXRjBaU2hjYmlBZ0lDQWdJSHRjYmlBZ0lDQWdJQ0FnZEdWdVlXNTBPaUIwWlc1aGJuUkpaQ3hjYmlBZ0lDQWdJQ0FnWVc1alpYTjBiM0k2SUc5eVoxVnVhWFJKWkN4Y2JpQWdJQ0FnSUNBZ1pHVnpZMlZ1WkdGdWREb2diM0puVlc1cGRFbGtMRnh1SUNBZ0lDQWdJQ0JrWlhCMGFEb2dNQ3hjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0F1TGk1aGNtZHpYRzRnSUNBZ0tUdGNiaUFnZlZ4dVhHNGdJR0Z6ZVc1aklHbHVjMlZ5ZEVGdVkyVnpkRzl5VEdsdWEzTkdiM0pPWlhkRGFHbHNaQ2hjYmlBZ0lDQjBaVzVoYm5SSlpEb2djM1J5YVc1bkxGeHVJQ0FnSUhCaGNtVnVkRTl5WjFWdWFYUkpaRG9nYzNSeWFXNW5MRnh1SUNBZ0lHTm9hV3hrVDNKblZXNXBkRWxrT2lCemRISnBibWNzWEc0Z0lDQWdMaTR1WVhKbmN6b2dZVzU1VzExY2JpQWdLVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ1kyOXVjM1FnWVc1alpYTjBiM0pNYVc1cmN5QTlJR0YzWVdsMElIUm9hWE11YkdsemRFRnVZMlZ6ZEc5eWN5aDBaVzVoYm5SSlpDd2djR0Z5Wlc1MFQzSm5WVzVwZEVsa0xDQXVMaTVoY21kektUdGNiaUFnSUNCbWIzSWdLR052Ym5OMElHeHBibXNnYjJZZ1lXNWpaWE4wYjNKTWFXNXJjeWtnZTF4dUlDQWdJQ0FnWVhkaGFYUWdkR2hwY3k1amNtVmhkR1VvWEc0Z0lDQWdJQ0FnSUh0Y2JpQWdJQ0FnSUNBZ0lDQjBaVzVoYm5RNklIUmxibUZ1ZEVsa0xGeHVJQ0FnSUNBZ0lDQWdJR0Z1WTJWemRHOXlPaUJzYVc1ckxtRnVZMlZ6ZEc5eUxGeHVJQ0FnSUNBZ0lDQWdJR1JsYzJObGJtUmhiblE2SUdOb2FXeGtUM0puVlc1cGRFbGtMRnh1SUNBZ0lDQWdJQ0FnSUdSbGNIUm9PaUJzYVc1ckxtUmxjSFJvSUNzZ01TeGNiaUFnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnTGk0dVlYSm5jMXh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0JoYzNsdVl5QmtaV3hsZEdWTWFXNXJjMFp2Y2xOMVluUnlaV1VvZEdWdVlXNTBTV1E2SUhOMGNtbHVaeXdnYjNKblZXNXBkRWxrT2lCemRISnBibWNzSUM0dUxtRnlaM002SUdGdWVWdGRLVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ1kyOXVjM1FnYzNWaWRISmxaU0E5SUdGM1lXbDBJSFJvYVhNdWJHbHpkRVJsYzJObGJtUmhiblJ6S0hSbGJtRnVkRWxrTENCdmNtZFZibWwwU1dRc0lDNHVMbUZ5WjNNcE8xeHVJQ0FnSUdOdmJuTjBJR1JsYzJObGJtUmhiblJKWkhNZ1BTQnVaWGNnVTJWMEtGdHZjbWRWYm1sMFNXUXNJQzR1TG5OMVluUnlaV1V1YldGd0tDaHliM2NwSUQwK0lISmxiR0YwYVc5dVNXUW9jbTkzTG1SbGMyTmxibVJoYm5RcEtWMHBPMXh1SUNBZ0lHTnZibk4wSUdGdVkyVnpkRzl5U1dSeklEMGdibVYzSUZObGRDaGJiM0puVlc1cGRFbGtMQ0F1TGk1emRXSjBjbVZsTG0xaGNDZ29jbTkzS1NBOVBpQnlaV3hoZEdsdmJrbGtLSEp2ZHk1aGJtTmxjM1J2Y2lrcFhTazdYRzRnSUNBZ1kyOXVjM1FnY205M2N5QTlJQ2hoZDJGcGRDQjBhR2x6TG14cGMzUkJiR3dvTGk0dVlYSm5jeWtwTG1acGJIUmxjaWhjYmlBZ0lDQWdJQ2h5YjNjcElEMCtYRzRnSUNBZ0lDQWdJSE5oYldWVVpXNWhiblFvY205M0xuUmxibUZ1ZEN3Z2RHVnVZVzUwU1dRcElDWW1YRzRnSUNBZ0lDQWdJQ2hrWlhOalpXNWtZVzUwU1dSekxtaGhjeWh5Wld4aGRHbHZia2xrS0hKdmR5NWtaWE5qWlc1a1lXNTBLU2tnZkh3Z1lXNWpaWE4wYjNKSlpITXVhR0Z6S0hKbGJHRjBhVzl1U1dRb2NtOTNMbUZ1WTJWemRHOXlLU2twWEc0Z0lDQWdLVHRjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJSEp2ZHlCdlppQnliM2R6S1NCN1hHNGdJQ0FnSUNCaGQyRnBkQ0IwYUdsekxtUmxiR1YwWlVKNVNXUW9jbTkzTG1sa0xDQXVMaTVoY21kektUdGNiaUFnSUNCOVhHNGdJSDFjYm4xY2JpSmRmUT09Il19
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrgUnitMembershipService = void 0;
4
+ const utils_js_1 = require("./../utils.cjs");
5
+ const types_js_1 = require("./../types.cjs");
6
+ const org_unit_membership_model_1 = require("../models/org-unit-membership.model");
7
+ class OrgUnitMembershipService extends utils_js_1.BaseModelService {
8
+ constructor() {
9
+ super(org_unit_membership_model_1.OrgUnitMembership);
10
+ }
11
+ async addUserToOrgUnit(tenantId, orgUnitId, userId, status = types_js_1.MembershipStatus.Active, ...args) {
12
+ return this.create({
13
+ tenant: tenantId,
14
+ orgUnit: orgUnitId,
15
+ user: userId,
16
+ status,
17
+ }, ...args);
18
+ }
19
+ async setStatus(membershipId, status, ...args) {
20
+ return this.updateOne(membershipId, { status }, ...args);
21
+ }
22
+ async listUserOrgUnits(userId, ...args) {
23
+ return (await this.listAll(...args)).filter((membership) => (0, utils_js_1.relationMatch)(membership.user, userId));
24
+ }
25
+ async listOrgUnitUsers(orgUnitId, ...args) {
26
+ return (await this.listAll(...args)).filter((membership) => (0, utils_js_1.relationMatch)(membership.orgUnit, orgUnitId));
27
+ }
28
+ async removeUserFromOrgUnit(membershipId, ...args) {
29
+ await this.deleteById(membershipId, ...args);
30
+ }
31
+ }
32
+ exports.OrgUnitMembershipService = OrgUnitMembershipService;
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLXVuaXQtbWVtYmVyc2hpcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbWVzcGFjZXMvc2VydmljZXMvb3JnLXVuaXQtbWVtYmVyc2hpcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsc0JBQWlCO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxzQkFBaUI7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFeEUsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGdCQUFtQztJQUMvRTtRQUNFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQ3BCLFFBQWdCLEVBQ2hCLFNBQWlCLEVBQ2pCLE1BQWMsRUFDZCxTQUEyQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQ2xELEdBQUcsSUFBVztRQUVkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FDaEI7WUFDRSxNQUFNLEVBQUUsUUFBUTtZQUNoQixPQUFPLEVBQUUsU0FBUztZQUNsQixJQUFJLEVBQUUsTUFBTTtZQUNaLE1BQU07U0FDUCxFQUNELEdBQUcsSUFBSSxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxZQUFvQixFQUFFLE1BQXdCLEVBQUUsR0FBRyxJQUFXO1FBQzVFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBYyxFQUFFLEdBQUcsSUFBVztRQUNuRCxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLEdBQUcsSUFBVztRQUN0RCxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVELEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxZQUFvQixFQUFFLEdBQUcsSUFBVztRQUM5RCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsU2VydmljZSwgcmVsYXRpb25NYXRjaCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgTWVtYmVyc2hpcFN0YXR1cyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgT3JnVW5pdE1lbWJlcnNoaXAgfSBmcm9tIFwiLi4vbW9kZWxzL29yZy11bml0LW1lbWJlcnNoaXAubW9kZWxcIjtcblxuZXhwb3J0IGNsYXNzIE9yZ1VuaXRNZW1iZXJzaGlwU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8T3JnVW5pdE1lbWJlcnNoaXA+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoT3JnVW5pdE1lbWJlcnNoaXApO1xuICB9XG5cbiAgYXN5bmMgYWRkVXNlclRvT3JnVW5pdChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIHVzZXJJZDogc3RyaW5nLFxuICAgIHN0YXR1czogTWVtYmVyc2hpcFN0YXR1cyA9IE1lbWJlcnNoaXBTdGF0dXMuQWN0aXZlLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8T3JnVW5pdE1lbWJlcnNoaXA+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoXG4gICAgICB7XG4gICAgICAgIHRlbmFudDogdGVuYW50SWQsXG4gICAgICAgIG9yZ1VuaXQ6IG9yZ1VuaXRJZCxcbiAgICAgICAgdXNlcjogdXNlcklkLFxuICAgICAgICBzdGF0dXMsXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyBzZXRTdGF0dXMobWVtYmVyc2hpcElkOiBzdHJpbmcsIHN0YXR1czogTWVtYmVyc2hpcFN0YXR1cywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE9yZ1VuaXRNZW1iZXJzaGlwPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKG1lbWJlcnNoaXBJZCwgeyBzdGF0dXMgfSwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBsaXN0VXNlck9yZ1VuaXRzKHVzZXJJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8T3JnVW5pdE1lbWJlcnNoaXBbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKG1lbWJlcnNoaXApID0+IHJlbGF0aW9uTWF0Y2gobWVtYmVyc2hpcC51c2VyLCB1c2VySWQpKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RPcmdVbml0VXNlcnMob3JnVW5pdElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxPcmdVbml0TWVtYmVyc2hpcFtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigobWVtYmVyc2hpcCkgPT4gcmVsYXRpb25NYXRjaChtZW1iZXJzaGlwLm9yZ1VuaXQsIG9yZ1VuaXRJZCkpO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlVXNlckZyb21PcmdVbml0KG1lbWJlcnNoaXBJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChtZW1iZXJzaGlwSWQsIC4uLmFyZ3MpO1xuICB9XG59XG4iXX0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLXVuaXQtbWVtYmVyc2hpcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsib3JnLXVuaXQtbWVtYmVyc2hpcC5zZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRDQUFnRTtBQUNoRSw0Q0FBaUQ7QUFDakQsbUZBQXdFO0FBQ3hFLE1BQWEsd0JBQXlCLFNBQVEsMkJBQWdCO0lBQzFEO1FBQ0ksS0FBSyxDQUFDLDZDQUFpQixDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsMkJBQWdCLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSTtRQUN6RixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDZixNQUFNLEVBQUUsUUFBUTtZQUNoQixPQUFPLEVBQUUsU0FBUztZQUNsQixJQUFJLEVBQUUsTUFBTTtZQUNaLE1BQU07U0FDVCxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUNELEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUk7UUFDekMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJO1FBQ2xDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBQSx3QkFBYSxFQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBQ0QsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUk7UUFDckMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFBLHdCQUFhLEVBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlHLENBQUM7SUFDRCxLQUFLLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLEdBQUcsSUFBSTtRQUM3QyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztDQUNKO0FBeEJELDREQXdCQztBQUNELDhySEFBOHJIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsU2VydmljZSwgcmVsYXRpb25NYXRjaCB9IGZyb20gXCIuLy4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBNZW1iZXJzaGlwU3RhdHVzIH0gZnJvbSBcIi4vLi4vdHlwZXMuanNcIjtcbmltcG9ydCB7IE9yZ1VuaXRNZW1iZXJzaGlwIH0gZnJvbSBcIi4uL21vZGVscy9vcmctdW5pdC1tZW1iZXJzaGlwLm1vZGVsXCI7XG5leHBvcnQgY2xhc3MgT3JnVW5pdE1lbWJlcnNoaXBTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKE9yZ1VuaXRNZW1iZXJzaGlwKTtcbiAgICB9XG4gICAgYXN5bmMgYWRkVXNlclRvT3JnVW5pdCh0ZW5hbnRJZCwgb3JnVW5pdElkLCB1c2VySWQsIHN0YXR1cyA9IE1lbWJlcnNoaXBTdGF0dXMuQWN0aXZlLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZSh7XG4gICAgICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICAgICAgb3JnVW5pdDogb3JnVW5pdElkLFxuICAgICAgICAgICAgdXNlcjogdXNlcklkLFxuICAgICAgICAgICAgc3RhdHVzLFxuICAgICAgICB9LCAuLi5hcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgc2V0U3RhdHVzKG1lbWJlcnNoaXBJZCwgc3RhdHVzLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZShtZW1iZXJzaGlwSWQsIHsgc3RhdHVzIH0sIC4uLmFyZ3MpO1xuICAgIH1cbiAgICBhc3luYyBsaXN0VXNlck9yZ1VuaXRzKHVzZXJJZCwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChtZW1iZXJzaGlwKSA9PiByZWxhdGlvbk1hdGNoKG1lbWJlcnNoaXAudXNlciwgdXNlcklkKSk7XG4gICAgfVxuICAgIGFzeW5jIGxpc3RPcmdVbml0VXNlcnMob3JnVW5pdElkLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKG1lbWJlcnNoaXApID0+IHJlbGF0aW9uTWF0Y2gobWVtYmVyc2hpcC5vcmdVbml0LCBvcmdVbml0SWQpKTtcbiAgICB9XG4gICAgYXN5bmMgcmVtb3ZlVXNlckZyb21PcmdVbml0KG1lbWJlcnNoaXBJZCwgLi4uYXJncykge1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZUJ5SWQobWVtYmVyc2hpcElkLCAuLi5hcmdzKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liM0puTFhWdWFYUXRiV1Z0WW1WeWMyaHBjQzV6WlhKMmFXTmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dkxpNHZjM0pqTDI1aGJXVnpjR0ZqWlhNdmMyVnlkbWxqWlhNdmIzSm5MWFZ1YVhRdGJXVnRZbVZ5YzJocGNDNXpaWEoyYVdObExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEU5QlFVOHNSVUZCUlN4blFrRkJaMElzUlVGQlJTeGhRVUZoTEVWQlFVVXNjMEpCUVdsQ08wRkJRek5FTEU5QlFVOHNSVUZCUlN4blFrRkJaMElzUlVGQlJTeHpRa0ZCYVVJN1FVRkROVU1zVDBGQlR5eEZRVUZGTEdsQ1FVRnBRaXhGUVVGRkxFMUJRVTBzY1VOQlFYRkRMRU5CUVVNN1FVRkZlRVVzVFVGQlRTeFBRVUZQTEhkQ1FVRjVRaXhUUVVGUkxHZENRVUZ0UXp0SlFVTXZSVHRSUVVORkxFdEJRVXNzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8wbEJRek5DTEVOQlFVTTdTVUZGUkN4TFFVRkxMRU5CUVVNc1owSkJRV2RDTEVOQlEzQkNMRkZCUVdkQ0xFVkJRMmhDTEZOQlFXbENMRVZCUTJwQ0xFMUJRV01zUlVGRFpDeFRRVUV5UWl4blFrRkJaMElzUTBGQlF5eE5RVUZOTEVWQlEyeEVMRWRCUVVjc1NVRkJWenRSUVVWa0xFOUJRVThzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZEYUVJN1dVRkRSU3hOUVVGTkxFVkJRVVVzVVVGQlVUdFpRVU5vUWl4UFFVRlBMRVZCUVVVc1UwRkJVenRaUVVOc1FpeEpRVUZKTEVWQlFVVXNUVUZCVFR0WlFVTmFMRTFCUVUwN1UwRkRVQ3hGUVVORUxFZEJRVWNzU1VGQlNTeERRVU5TTEVOQlFVTTdTVUZEU2l4RFFVRkRPMGxCUlVRc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eFpRVUZ2UWl4RlFVRkZMRTFCUVhkQ0xFVkJRVVVzUjBGQlJ5eEpRVUZYTzFGQlF6VkZMRTlCUVU4c1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eFpRVUZaTEVWQlFVVXNSVUZCUlN4TlFVRk5MRVZCUVVVc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlF6TkVMRU5CUVVNN1NVRkZSQ3hMUVVGTExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1RVRkJZeXhGUVVGRkxFZEJRVWNzU1VGQlZ6dFJRVU51UkN4UFFVRlBMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eFZRVUZWTEVWQlFVVXNSVUZCUlN4RFFVRkRMR0ZCUVdFc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRkRWNzUTBGQlF6dEpRVVZFTEV0QlFVc3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eFRRVUZwUWl4RlFVRkZMRWRCUVVjc1NVRkJWenRSUVVOMFJDeFBRVUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEdGQlFXRXNRMEZCUXl4VlFVRlZMRU5CUVVNc1QwRkJUeXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZETlVjc1EwRkJRenRKUVVWRUxFdEJRVXNzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhaUVVGdlFpeEZRVUZGTEVkQlFVY3NTVUZCVnp0UlFVTTVSQ3hOUVVGTkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNXVUZCV1N4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGREwwTXNRMEZCUXp0RFFVTkdJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnUW1GelpVMXZaR1ZzVTJWeWRtbGpaU3dnY21Wc1lYUnBiMjVOWVhSamFDQjlJR1p5YjIwZ1hDSXVMaTkxZEdsc2Mxd2lPMXh1YVcxd2IzSjBJSHNnVFdWdFltVnljMmhwY0ZOMFlYUjFjeUI5SUdaeWIyMGdYQ0l1TGk5MGVYQmxjMXdpTzF4dWFXMXdiM0owSUhzZ1QzSm5WVzVwZEUxbGJXSmxjbk5vYVhBZ2ZTQm1jbTl0SUZ3aUxpNHZiVzlrWld4ekwyOXlaeTExYm1sMExXMWxiV0psY25Ob2FYQXViVzlrWld4Y0lqdGNibHh1Wlhod2IzSjBJR05zWVhOeklFOXlaMVZ1YVhSTlpXMWlaWEp6YUdsd1UyVnlkbWxqWlNCbGVIUmxibVJ6SUVKaGMyVk5iMlJsYkZObGNuWnBZMlU4VDNKblZXNXBkRTFsYldKbGNuTm9hWEErSUh0Y2JpQWdZMjl1YzNSeWRXTjBiM0lvS1NCN1hHNGdJQ0FnYzNWd1pYSW9UM0puVlc1cGRFMWxiV0psY25Ob2FYQXBPMXh1SUNCOVhHNWNiaUFnWVhONWJtTWdZV1JrVlhObGNsUnZUM0puVlc1cGRDaGNiaUFnSUNCMFpXNWhiblJKWkRvZ2MzUnlhVzVuTEZ4dUlDQWdJRzl5WjFWdWFYUkpaRG9nYzNSeWFXNW5MRnh1SUNBZ0lIVnpaWEpKWkRvZ2MzUnlhVzVuTEZ4dUlDQWdJSE4wWVhSMWN6b2dUV1Z0WW1WeWMyaHBjRk4wWVhSMWN5QTlJRTFsYldKbGNuTm9hWEJUZEdGMGRYTXVRV04wYVhabExGeHVJQ0FnSUM0dUxtRnlaM002SUdGdWVWdGRYRzRnSUNrNklGQnliMjFwYzJVOFQzSm5WVzVwZEUxbGJXSmxjbk5vYVhBK0lIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpjbVZoZEdVb1hHNGdJQ0FnSUNCN1hHNGdJQ0FnSUNBZ0lIUmxibUZ1ZERvZ2RHVnVZVzUwU1dRc1hHNGdJQ0FnSUNBZ0lHOXlaMVZ1YVhRNklHOXlaMVZ1YVhSSlpDeGNiaUFnSUNBZ0lDQWdkWE5sY2pvZ2RYTmxja2xrTEZ4dUlDQWdJQ0FnSUNCemRHRjBkWE1zWEc0Z0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnTGk0dVlYSm5jMXh1SUNBZ0lDazdYRzRnSUgxY2JseHVJQ0JoYzNsdVl5QnpaWFJUZEdGMGRYTW9iV1Z0WW1WeWMyaHBjRWxrT2lCemRISnBibWNzSUhOMFlYUjFjem9nVFdWdFltVnljMmhwY0ZOMFlYUjFjeXdnTGk0dVlYSm5jem9nWVc1NVcxMHBPaUJRY205dGFYTmxQRTl5WjFWdWFYUk5aVzFpWlhKemFHbHdQaUI3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11ZFhCa1lYUmxUMjVsS0cxbGJXSmxjbk5vYVhCSlpDd2dleUJ6ZEdGMGRYTWdmU3dnTGk0dVlYSm5jeWs3WEc0Z0lIMWNibHh1SUNCaGMzbHVZeUJzYVhOMFZYTmxjazl5WjFWdWFYUnpLSFZ6WlhKSlpEb2djM1J5YVc1bkxDQXVMaTVoY21kek9pQmhibmxiWFNrNklGQnliMjFwYzJVOFQzSm5WVzVwZEUxbGJXSmxjbk5vYVhCYlhUNGdlMXh1SUNBZ0lISmxkSFZ5YmlBb1lYZGhhWFFnZEdocGN5NXNhWE4wUVd4c0tDNHVMbUZ5WjNNcEtTNW1hV3gwWlhJb0tHMWxiV0psY25Ob2FYQXBJRDArSUhKbGJHRjBhVzl1VFdGMFkyZ29iV1Z0WW1WeWMyaHBjQzUxYzJWeUxDQjFjMlZ5U1dRcEtUdGNiaUFnZlZ4dVhHNGdJR0Z6ZVc1aklHeHBjM1JQY21kVmJtbDBWWE5sY25Nb2IzSm5WVzVwZEVsa09pQnpkSEpwYm1jc0lDNHVMbUZ5WjNNNklHRnVlVnRkS1RvZ1VISnZiV2x6WlR4UGNtZFZibWwwVFdWdFltVnljMmhwY0Z0ZFBpQjdYRzRnSUNBZ2NtVjBkWEp1SUNoaGQyRnBkQ0IwYUdsekxteHBjM1JCYkd3b0xpNHVZWEpuY3lrcExtWnBiSFJsY2lnb2JXVnRZbVZ5YzJocGNDa2dQVDRnY21Wc1lYUnBiMjVOWVhSamFDaHRaVzFpWlhKemFHbHdMbTl5WjFWdWFYUXNJRzl5WjFWdWFYUkpaQ2twTzF4dUlDQjlYRzVjYmlBZ1lYTjVibU1nY21WdGIzWmxWWE5sY2taeWIyMVBjbWRWYm1sMEtHMWxiV0psY25Ob2FYQkpaRG9nYzNSeWFXNW5MQ0F1TGk1aGNtZHpPaUJoYm5sYlhTazZJRkJ5YjIxcGMyVThkbTlwWkQ0Z2UxeHVJQ0FnSUdGM1lXbDBJSFJvYVhNdVpHVnNaWFJsUW5sSlpDaHRaVzFpWlhKemFHbHdTV1FzSUM0dUxtRnlaM01wTzF4dUlDQjlYRzU5WEc0aVhYMD0iXX0=
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrgUnitProfileService = void 0;
4
+ const utils_js_1 = require("./../utils.cjs");
5
+ const org_unit_profile_model_1 = require("../models/org-unit-profile.model");
6
+ class OrgUnitProfileService extends utils_js_1.BaseModelService {
7
+ constructor() {
8
+ super(org_unit_profile_model_1.OrgUnitProfile);
9
+ }
10
+ async createProfile(orgUnitId, profileKey, metadata, ...args) {
11
+ return this.create({
12
+ orgUnit: orgUnitId,
13
+ profileKey,
14
+ metadata,
15
+ }, ...args);
16
+ }
17
+ async listForOrgUnit(orgUnitId, ...args) {
18
+ return (await this.listAll(...args)).filter((profile) => (0, utils_js_1.relationMatch)(profile.orgUnit, orgUnitId));
19
+ }
20
+ }
21
+ exports.OrgUnitProfileService = OrgUnitProfileService;
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLXVuaXQtcHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbWVzcGFjZXMvc2VydmljZXMvb3JnLXVuaXQtcHJvZmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBTSxhQUFhLEVBQUUsc0JBQWlCO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVsRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZ0JBQWdDO0lBQ3pFO1FBQ0UsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUNqQixTQUFpQixFQUNqQixVQUFrQixFQUNsQixRQUFrQyxFQUNsQyxHQUFHLElBQVc7UUFFZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQ2hCO1lBQ0UsT0FBTyxFQUFFLFNBQVM7WUFDbEIsVUFBVTtZQUNWLFFBQVE7U0FDVCxFQUNELEdBQUcsSUFBSSxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFpQixFQUFFLEdBQUcsSUFBVztRQUNwRCxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdEcsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsU2VydmljZSwgaWQsIHJlbGF0aW9uTWF0Y2ggfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IE9yZ1VuaXRQcm9maWxlIH0gZnJvbSBcIi4uL21vZGVscy9vcmctdW5pdC1wcm9maWxlLm1vZGVsXCI7XG5cbmV4cG9ydCBjbGFzcyBPcmdVbml0UHJvZmlsZVNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPE9yZ1VuaXRQcm9maWxlPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKE9yZ1VuaXRQcm9maWxlKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVByb2ZpbGUoXG4gICAgb3JnVW5pdElkOiBzdHJpbmcsXG4gICAgcHJvZmlsZUtleTogc3RyaW5nLFxuICAgIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxPcmdVbml0UHJvZmlsZT4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShcbiAgICAgIHtcbiAgICAgICAgb3JnVW5pdDogb3JnVW5pdElkLFxuICAgICAgICBwcm9maWxlS2V5LFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RGb3JPcmdVbml0KG9yZ1VuaXRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8T3JnVW5pdFByb2ZpbGVbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHByb2ZpbGUpID0+IHJlbGF0aW9uTWF0Y2gocHJvZmlsZS5vcmdVbml0LCBvcmdVbml0SWQpKTtcbiAgfVxufVxuIl19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLXVuaXQtcHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsib3JnLXVuaXQtcHJvZmlsZS5zZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRDQUFnRTtBQUNoRSw2RUFBa0U7QUFDbEUsTUFBYSxxQkFBc0IsU0FBUSwyQkFBZ0I7SUFDdkQ7UUFDSSxLQUFLLENBQUMsdUNBQWMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSTtRQUN4RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDZixPQUFPLEVBQUUsU0FBUztZQUNsQixVQUFVO1lBQ1YsUUFBUTtTQUNYLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBQ0QsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJO1FBQ25DLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBQSx3QkFBYSxFQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN4RyxDQUFDO0NBQ0o7QUFkRCxzREFjQztBQUNELHNqRUFBc2pFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsU2VydmljZSwgcmVsYXRpb25NYXRjaCB9IGZyb20gXCIuLy4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBPcmdVbml0UHJvZmlsZSB9IGZyb20gXCIuLi9tb2RlbHMvb3JnLXVuaXQtcHJvZmlsZS5tb2RlbFwiO1xuZXhwb3J0IGNsYXNzIE9yZ1VuaXRQcm9maWxlU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihPcmdVbml0UHJvZmlsZSk7XG4gICAgfVxuICAgIGFzeW5jIGNyZWF0ZVByb2ZpbGUob3JnVW5pdElkLCBwcm9maWxlS2V5LCBtZXRhZGF0YSwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGUoe1xuICAgICAgICAgICAgb3JnVW5pdDogb3JnVW5pdElkLFxuICAgICAgICAgICAgcHJvZmlsZUtleSxcbiAgICAgICAgICAgIG1ldGFkYXRhLFxuICAgICAgICB9LCAuLi5hcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgbGlzdEZvck9yZ1VuaXQob3JnVW5pdElkLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHByb2ZpbGUpID0+IHJlbGF0aW9uTWF0Y2gocHJvZmlsZS5vcmdVbml0LCBvcmdVbml0SWQpKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liM0puTFhWdWFYUXRjSEp2Wm1sc1pTNXpaWEoyYVdObExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZMaTR2TGk0dmMzSmpMMjVoYldWemNHRmpaWE12YzJWeWRtbGpaWE12YjNKbkxYVnVhWFF0Y0hKdlptbHNaUzV6WlhKMmFXTmxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFOUJRVThzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJUU3hoUVVGaExFVkJRVVVzYzBKQlFXbENPMEZCUXk5RUxFOUJRVThzUlVGQlJTeGpRVUZqTEVWQlFVVXNUVUZCVFN4clEwRkJhME1zUTBGQlF6dEJRVVZzUlN4TlFVRk5MRTlCUVU4c2NVSkJRWE5DTEZOQlFWRXNaMEpCUVdkRE8wbEJRM3BGTzFGQlEwVXNTMEZCU3l4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRE8wbEJRM2hDTEVOQlFVTTdTVUZGUkN4TFFVRkxMRU5CUVVNc1lVRkJZU3hEUVVOcVFpeFRRVUZwUWl4RlFVTnFRaXhWUVVGclFpeEZRVU5zUWl4UlFVRnJReXhGUVVOc1F5eEhRVUZITEVsQlFWYzdVVUZGWkN4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRMmhDTzFsQlEwVXNUMEZCVHl4RlFVRkZMRk5CUVZNN1dVRkRiRUlzVlVGQlZUdFpRVU5XTEZGQlFWRTdVMEZEVkN4RlFVTkVMRWRCUVVjc1NVRkJTU3hEUVVOU0xFTkJRVU03U1VGRFNpeERRVUZETzBsQlJVUXNTMEZCU3l4RFFVRkRMR05CUVdNc1EwRkJReXhUUVVGcFFpeEZRVUZGTEVkQlFVY3NTVUZCVnp0UlFVTndSQ3hQUVVGUExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4UFFVRlBMRVZCUVVVc1JVRkJSU3hEUVVGRExHRkJRV0VzUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGRFY3NRMEZCUXp0RFFVTkdJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnUW1GelpVMXZaR1ZzVTJWeWRtbGpaU3dnYVdRc0lISmxiR0YwYVc5dVRXRjBZMmdnZlNCbWNtOXRJRndpTGk0dmRYUnBiSE5jSWp0Y2JtbHRjRzl5ZENCN0lFOXlaMVZ1YVhSUWNtOW1hV3hsSUgwZ1puSnZiU0JjSWk0dUwyMXZaR1ZzY3k5dmNtY3RkVzVwZEMxd2NtOW1hV3hsTG0xdlpHVnNYQ0k3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJQY21kVmJtbDBVSEp2Wm1sc1pWTmxjblpwWTJVZ1pYaDBaVzVrY3lCQ1lYTmxUVzlrWld4VFpYSjJhV05sUEU5eVoxVnVhWFJRY205bWFXeGxQaUI3WEc0Z0lHTnZibk4wY25WamRHOXlLQ2tnZTF4dUlDQWdJSE4xY0dWeUtFOXlaMVZ1YVhSUWNtOW1hV3hsS1R0Y2JpQWdmVnh1WEc0Z0lHRnplVzVqSUdOeVpXRjBaVkJ5YjJacGJHVW9YRzRnSUNBZ2IzSm5WVzVwZEVsa09pQnpkSEpwYm1jc1hHNGdJQ0FnY0hKdlptbHNaVXRsZVRvZ2MzUnlhVzVuTEZ4dUlDQWdJRzFsZEdGa1lYUmhQem9nVW1WamIzSmtQSE4wY21sdVp5d2dkVzVyYm05M2JqNHNYRzRnSUNBZ0xpNHVZWEpuY3pvZ1lXNTVXMTFjYmlBZ0tUb2dVSEp2YldselpUeFBjbWRWYm1sMFVISnZabWxzWlQ0Z2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnlaV0YwWlNoY2JpQWdJQ0FnSUh0Y2JpQWdJQ0FnSUNBZ2IzSm5WVzVwZERvZ2IzSm5WVzVwZEVsa0xGeHVJQ0FnSUNBZ0lDQndjbTltYVd4bFMyVjVMRnh1SUNBZ0lDQWdJQ0J0WlhSaFpHRjBZU3hjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0F1TGk1aGNtZHpYRzRnSUNBZ0tUdGNiaUFnZlZ4dVhHNGdJR0Z6ZVc1aklHeHBjM1JHYjNKUGNtZFZibWwwS0c5eVoxVnVhWFJKWkRvZ2MzUnlhVzVuTENBdUxpNWhjbWR6T2lCaGJubGJYU2s2SUZCeWIyMXBjMlU4VDNKblZXNXBkRkJ5YjJacGJHVmJYVDRnZTF4dUlDQWdJSEpsZEhWeWJpQW9ZWGRoYVhRZ2RHaHBjeTVzYVhOMFFXeHNLQzR1TG1GeVozTXBLUzVtYVd4MFpYSW9LSEJ5YjJacGJHVXBJRDArSUhKbGJHRjBhVzl1VFdGMFkyZ29jSEp2Wm1sc1pTNXZjbWRWYm1sMExDQnZjbWRWYm1sMFNXUXBLVHRjYmlBZ2ZWeHVmVnh1SWwxOSJdfQ==
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrgUnitService = 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 org_unit_model_1 = require("../models/org-unit.model");
20
+ const org_unit_profile_service_1 = require("./org-unit-profile.service");
21
+ const org_unit_closure_service_1 = require("./org-unit-closure.service");
22
+ const utils_js_2 = require("./../utils.cjs");
23
+ async function deleteRowsById(service, rows, ...args) {
24
+ for (const row of rows) {
25
+ await service.deleteById(row.id, ...args);
26
+ }
27
+ }
28
+ class OrgUnitService extends utils_js_1.BaseModelService {
29
+ constructor() {
30
+ super(org_unit_model_1.OrgUnit);
31
+ }
32
+ orgUnitPath(parentPath, name) {
33
+ const segment = (0, utils_js_1.lowerSlug)(name);
34
+ return parentPath ? `${parentPath.replace(/\/+$/, "")}/${segment}` : `/${segment}`;
35
+ }
36
+ async createProfileIfNeeded(orgUnitId, profileKey, profileMetadata, ...args) {
37
+ if (!profileKey)
38
+ return;
39
+ await new org_unit_profile_service_1.OrgUnitProfileService().createProfile(orgUnitId, profileKey, profileMetadata, ...args);
40
+ }
41
+ async createRoot(tenantId, name, metadata, profileKey, profileMetadata, ...args) {
42
+ const orgUnit = await this.create({
43
+ tenant: tenantId,
44
+ name,
45
+ path: this.orgUnitPath(undefined, name),
46
+ metadata,
47
+ }, ...args);
48
+ await this.createProfileIfNeeded(orgUnit.id, profileKey, profileMetadata, ...args);
49
+ await new org_unit_closure_service_1.OrgUnitClosureService().createSelfLink(tenantId, orgUnit.id, ...args);
50
+ return orgUnit;
51
+ }
52
+ async createChild(input, ...args) {
53
+ const parent = input.parentOrgUnitId ? await this.getById(input.parentOrgUnitId, ...args) : undefined;
54
+ const orgUnit = await this.create({
55
+ tenant: input.tenantId,
56
+ parent: parent?.id ?? input.parentOrgUnitId,
57
+ name: input.name,
58
+ path: this.orgUnitPath(parent?.path, input.name),
59
+ metadata: input.metadata,
60
+ }, ...args);
61
+ await this.createProfileIfNeeded(orgUnit.id, input.profileKey, input.profileMetadata, ...args);
62
+ const closureService = new org_unit_closure_service_1.OrgUnitClosureService();
63
+ await closureService.createSelfLink(input.tenantId, orgUnit.id, ...args);
64
+ if (input.parentOrgUnitId) {
65
+ await closureService.insertAncestorLinksForNewChild(input.tenantId, input.parentOrgUnitId, orgUnit.id, ...args);
66
+ }
67
+ return orgUnit;
68
+ }
69
+ async listChildren(parentOrgUnitId, ...args) {
70
+ return (await this.listAll(...args)).filter((orgUnit) => (0, utils_js_1.relationMatch)(orgUnit.parent, parentOrgUnitId));
71
+ }
72
+ async listTenantOrgUnits(tenantId, ...args) {
73
+ return (await this.listAll(...args)).filter((orgUnit) => (0, utils_js_1.sameTenant)(orgUnit.tenant, tenantId));
74
+ }
75
+ async listDescendantOrgUnits(tenantId, orgUnitId, includeSelf = false, ...args) {
76
+ const descendants = await new org_unit_closure_service_1.OrgUnitClosureService().listDescendants(tenantId, orgUnitId, ...args);
77
+ const ids = new Set(descendants.map((row) => (0, utils_js_1.relationId)(row.descendant)));
78
+ if (includeSelf)
79
+ ids.add(orgUnitId);
80
+ return (await this.listTenantOrgUnits(tenantId, ...args)).filter((orgUnit) => ids.has(orgUnit.id));
81
+ }
82
+ async listAncestorOrgUnits(tenantId, orgUnitId, includeSelf = false, ...args) {
83
+ const ancestors = await new org_unit_closure_service_1.OrgUnitClosureService().listAncestors(tenantId, orgUnitId, ...args);
84
+ const ids = new Set(ancestors.map((row) => (0, utils_js_1.relationId)(row.ancestor)));
85
+ if (includeSelf)
86
+ ids.add(orgUnitId);
87
+ return (await this.listTenantOrgUnits(tenantId, ...args)).filter((orgUnit) => ids.has(orgUnit.id));
88
+ }
89
+ async renameOrgUnit(orgUnitId, name, ...args) {
90
+ const existing = await this.getById(orgUnitId, ...args);
91
+ return this.updateOne(orgUnitId, { name, path: this.orgUnitPath(existing.path.includes("/") ? existing.path.replace(/\/[^/]+$/, "") : undefined, name) }, ...args);
92
+ }
93
+ async moveOrgUnit(tenantId, orgUnitId, newParentOrgUnitId, ...args) {
94
+ const newParent = await this.getById(newParentOrgUnitId, ...args);
95
+ const existing = await this.getById(orgUnitId, ...args);
96
+ const updated = await this.updateOne(orgUnitId, {
97
+ parent: newParent.id,
98
+ path: this.orgUnitPath(newParent.path, existing.name),
99
+ }, ...args);
100
+ await this.rebuildTenantClosure(tenantId, ...args);
101
+ return updated;
102
+ }
103
+ async rebuildTenantClosure(tenantId, ...args) {
104
+ const closureService = new org_unit_closure_service_1.OrgUnitClosureService();
105
+ const existingLinks = await closureService.listAll(...args);
106
+ await deleteRowsById(closureService, existingLinks.filter((row) => (0, utils_js_1.sameTenant)(row.tenant, tenantId)), ...args);
107
+ const orgUnits = (await this.listTenantOrgUnits(tenantId, ...args)).sort((left, right) => {
108
+ const leftDepth = left.path.split("/").filter(Boolean).length;
109
+ const rightDepth = right.path.split("/").filter(Boolean).length;
110
+ return leftDepth - rightDepth;
111
+ });
112
+ for (const orgUnit of orgUnits) {
113
+ await closureService.createSelfLink(tenantId, orgUnit.id, ...args);
114
+ if (orgUnit.parent) {
115
+ await closureService.insertAncestorLinksForNewChild(tenantId, (0, utils_js_1.relationId)(orgUnit.parent), orgUnit.id, ...args);
116
+ }
117
+ }
118
+ }
119
+ async deleteOrgUnitTree(tenantId, orgUnitId, ...args) {
120
+ const closureService = new org_unit_closure_service_1.OrgUnitClosureService();
121
+ const descendants = await this.listDescendantOrgUnits(tenantId, orgUnitId, true, ...args);
122
+ const descendantIds = new Set(descendants.map((orgUnit) => orgUnit.id));
123
+ const orgUnits = (await this.listTenantOrgUnits(tenantId, ...args)).filter((orgUnit) => descendantIds.has(orgUnit.id));
124
+ await deleteRowsById(this, orgUnits, ...args);
125
+ await closureService.deleteLinksForSubtree(tenantId, orgUnitId, ...args);
126
+ }
127
+ }
128
+ exports.OrgUnitService = OrgUnitService;
129
+ __decorate([
130
+ (0, utils_js_2.transactional)(),
131
+ __metadata("design:type", Function),
132
+ __metadata("design:paramtypes", [String, String, Object, String, Object, Object]),
133
+ __metadata("design:returntype", Promise)
134
+ ], OrgUnitService.prototype, "createRoot", null);
135
+ __decorate([
136
+ (0, utils_js_2.transactional)(),
137
+ __metadata("design:type", Function),
138
+ __metadata("design:paramtypes", [Object, Object]),
139
+ __metadata("design:returntype", Promise)
140
+ ], OrgUnitService.prototype, "createChild", null);
141
+ __decorate([
142
+ (0, utils_js_2.transactional)(),
143
+ __metadata("design:type", Function),
144
+ __metadata("design:paramtypes", [String, String, String, Object]),
145
+ __metadata("design:returntype", Promise)
146
+ ], OrgUnitService.prototype, "moveOrgUnit", null);
147
+ __decorate([
148
+ (0, utils_js_2.transactional)(),
149
+ __metadata("design:type", Function),
150
+ __metadata("design:paramtypes", [String, Object]),
151
+ __metadata("design:returntype", Promise)
152
+ ], OrgUnitService.prototype, "rebuildTenantClosure", null);
153
+ __decorate([
154
+ (0, utils_js_2.transactional)(),
155
+ __metadata("design:type", Function),
156
+ __metadata("design:paramtypes", [String, String, Object]),
157
+ __metadata("design:returntype", Promise)
158
+ ], OrgUnitService.prototype, "deleteOrgUnitTree", null);
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLXVuaXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW1lc3BhY2VzL3NlcnZpY2VzL29yZy11bml0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxzQkFBaUI7QUFFOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsc0JBQWlCO0FBRXpDLEtBQUssVUFBVSxjQUFjLENBQzNCLE9BQThCLEVBQzlCLElBQTJCLEVBQzNCLEdBQUcsSUFBVztJQUVkLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sT0FBTyxjQUFlLFNBQVEsZ0JBQXlCO0lBQzNEO1FBQ0UsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxXQUFXLENBQUMsVUFBOEIsRUFBRSxJQUFZO1FBQzlELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNyRixDQUFDO0lBRU8sS0FBSyxDQUFD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Q0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDckYsYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQzlCLENBQUM7UUFDRixNQUFNLGNBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDOUMsTUFBTSxjQUFjLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzNFLENBQUM7Q0FDRjtBQXZKTztJQURMLGFBQWEsRUFBRTs7OztnREFxQmY7QUFHSztJQURMLGFBQWEsRUFBRTs7OztpREF5QmY7QUE0Q0s7SUFETCxhQUFhLEVBQUU7Ozs7aURBbUJmO0FBR0s7SUFETCxhQUFhLEVBQUU7Ozs7MERBMkJmO0FBR0s7SUFETCxhQUFhLEVBQUU7Ozs7dURBVWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlTW9kZWxTZXJ2aWNlLCBsb3dlclNsdWcsIHJlbGF0aW9uSWQsIHJlbGF0aW9uTWF0Y2gsIHNhbWVUZW5hbnQgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgQ3JlYXRlT3JnVW5pdElucHV0IH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBPcmdVbml0IH0gZnJvbSBcIi4uL21vZGVscy9vcmctdW5pdC5tb2RlbFwiO1xuaW1wb3J0IHsgT3JnVW5pdFByb2ZpbGVTZXJ2aWNlIH0gZnJvbSBcIi4vb3JnLXVuaXQtcHJvZmlsZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBPcmdVbml0Q2xvc3VyZVNlcnZpY2UgfSBmcm9tIFwiLi9vcmctdW5pdC1jbG9zdXJlLnNlcnZpY2VcIjtcbmltcG9ydCB7IHRyYW5zYWN0aW9uYWwgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuYXN5bmMgZnVuY3Rpb24gZGVsZXRlUm93c0J5SWQoXG4gIHNlcnZpY2U6IEJhc2VNb2RlbFNlcnZpY2U8YW55PixcbiAgcm93czogQXJyYXk8eyBpZDogc3RyaW5nIH0+LFxuICAuLi5hcmdzOiBhbnlbXVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICBhd2FpdCBzZXJ2aWNlLmRlbGV0ZUJ5SWQocm93LmlkLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3JnVW5pdFNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPE9yZ1VuaXQ+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoT3JnVW5pdCk7XG4gIH1cblxuICBwcml2YXRlIG9yZ1VuaXRQYXRoKHBhcmVudFBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWdtZW50ID0gbG93ZXJTbHVnKG5hbWUpO1xuICAgIHJldHVybiBwYXJlbnRQYXRoID8gYCR7cGFyZW50UGF0aC5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpfS8ke3NlZ21lbnR9YCA6IGAvJHtzZWdtZW50fWA7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZVByb2ZpbGVJZk5lZWRlZChcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICBwcm9maWxlS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgcHJvZmlsZU1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXByb2ZpbGVLZXkpIHJldHVybjtcbiAgICBhd2FpdCBuZXcgT3JnVW5pdFByb2ZpbGVTZXJ2aWNlKCkuY3JlYXRlUHJvZmlsZShvcmdVbml0SWQsIHByb2ZpbGVLZXksIHByb2ZpbGVNZXRhZGF0YSwgLi4uYXJncyk7XG4gIH1cblxuICBAdHJhbnNhY3Rpb25hbCgpXG4gIGFzeW5jIGNyZWF0ZVJvb3QoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBwcm9maWxlS2V5Pzogc3RyaW5nLFxuICAgIHByb2ZpbGVNZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8T3JnVW5pdD4ge1xuICAgIGNvbnN0IG9yZ1VuaXQgPSBhd2FpdCB0aGlzLmNyZWF0ZShcbiAgICAgIHtcbiAgICAgICAgdGVuYW50OiB0ZW5hbnRJZCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcGF0aDogdGhpcy5vcmdVbml0UGF0aCh1bmRlZmluZWQsIG5hbWUpLFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVByb2ZpbGVJZk5lZWRlZChvcmdVbml0LmlkLCBwcm9maWxlS2V5LCBwcm9maWxlTWV0YWRhdGEsIC4uLmFyZ3MpO1xuICAgIGF3YWl0IG5ldyBPcmdVbml0Q2xvc3VyZVNlcnZpY2UoKS5jcmVhdGVTZWxmTGluayh0ZW5hbnRJZCwgb3JnVW5pdC5pZCwgLi4uYXJncyk7XG4gICAgcmV0dXJuIG9yZ1VuaXQ7XG4gIH1cblxuICBAdHJhbnNhY3Rpb25hbCgpXG4gIGFzeW5jIGNyZWF0ZUNoaWxkKGlucHV0OiBDcmVhdGVPcmdVbml0SW5wdXQsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxPcmdVbml0PiB7XG4gICAgY29uc3QgcGFyZW50ID0gaW5wdXQucGFyZW50T3JnVW5pdElkID8gYXdhaXQgdGhpcy5nZXRCeUlkKGlucHV0LnBhcmVudE9yZ1VuaXRJZCwgLi4uYXJncykgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb3JnVW5pdCA9IGF3YWl0IHRoaXMuY3JlYXRlKFxuICAgICAge1xuICAgICAgICB0ZW5hbnQ6IGlucHV0LnRlbmFudElkLFxuICAgICAgICBwYXJlbnQ6IHBhcmVudD8uaWQgPz8gaW5wdXQucGFyZW50T3JnVW5pdElkLFxuICAgICAgICBuYW1lOiBpbnB1dC5uYW1lLFxuICAgICAgICBwYXRoOiB0aGlzLm9yZ1VuaXRQYXRoKHBhcmVudD8ucGF0aCwgaW5wdXQubmFtZSksXG4gICAgICAgIG1ldGFkYXRhOiBpbnB1dC5tZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVByb2ZpbGVJZk5lZWRlZChvcmdVbml0LmlkLCBpbnB1dC5wcm9maWxlS2V5LCBpbnB1dC5wcm9maWxlTWV0YWRhdGEsIC4uLmFyZ3MpO1xuICAgIGNvbnN0IGNsb3N1cmVTZXJ2aWNlID0gbmV3IE9yZ1VuaXRDbG9zdXJlU2VydmljZSgpO1xuICAgIGF3YWl0IGNsb3N1cmVTZXJ2aWNlLmNyZWF0ZVNlbGZMaW5rKGlucHV0LnRlbmFudElkLCBvcmdVbml0LmlkLCAuLi5hcmdzKTtcbiAgICBpZiAoaW5wdXQucGFyZW50T3JnVW5pdElkKSB7XG4gICAgICBhd2FpdCBjbG9zdXJlU2VydmljZS5pbnNlcnRBbmNlc3RvckxpbmtzRm9yTmV3Q2hpbGQoXG4gICAgICAgIGlucHV0LnRlbmFudElkLFxuICAgICAgICBpbnB1dC5wYXJlbnRPcmdVbml0SWQsXG4gICAgICAgIG9yZ1VuaXQuaWQsXG4gICAgICAgIC4uLmFyZ3NcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvcmdVbml0O1xuICB9XG5cbiAgYXN5bmMgbGlzdENoaWxkcmVuKHBhcmVudE9yZ1VuaXRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8T3JnVW5pdFtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigob3JnVW5pdCkgPT4gcmVsYXRpb25NYXRjaChvcmdVbml0LnBhcmVudCwgcGFyZW50T3JnVW5pdElkKSk7XG4gIH1cblxuICBhc3luYyBsaXN0VGVuYW50T3JnVW5pdHModGVuYW50SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE9yZ1VuaXRbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKG9yZ1VuaXQpID0+IHNhbWVUZW5hbnQob3JnVW5pdC50ZW5hbnQsIHRlbmFudElkKSk7XG4gIH1cblxuICBhc3luYyBsaXN0RGVzY2VuZGFudE9yZ1VuaXRzKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgb3JnVW5pdElkOiBzdHJpbmcsXG4gICAgaW5jbHVkZVNlbGYgPSBmYWxzZSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPE9yZ1VuaXRbXT4ge1xuICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gYXdhaXQgbmV3IE9yZ1VuaXRDbG9zdXJlU2VydmljZSgpLmxpc3REZXNjZW5kYW50cyh0ZW5hbnRJZCwgb3JnVW5pdElkLCAuLi5hcmdzKTtcbiAgICBjb25zdCBpZHMgPSBuZXcgU2V0KGRlc2NlbmRhbnRzLm1hcCgocm93KSA9PiByZWxhdGlvbklkKHJvdy5kZXNjZW5kYW50KSkpO1xuICAgIGlmIChpbmNsdWRlU2VsZikgaWRzLmFkZChvcmdVbml0SWQpO1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0VGVuYW50T3JnVW5pdHModGVuYW50SWQsIC4uLmFyZ3MpKS5maWx0ZXIoKG9yZ1VuaXQpID0+IGlkcy5oYXMob3JnVW5pdC5pZCkpO1xuICB9XG5cbiAgYXN5bmMgbGlzdEFuY2VzdG9yT3JnVW5pdHMoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICBpbmNsdWRlU2VsZiA9IGZhbHNlLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8T3JnVW5pdFtdPiB7XG4gICAgY29uc3QgYW5jZXN0b3JzID0gYXdhaXQgbmV3IE9yZ1VuaXRDbG9zdXJlU2VydmljZSgpLmxpc3RBbmNlc3RvcnModGVuYW50SWQsIG9yZ1VuaXRJZCwgLi4uYXJncyk7XG4gICAgY29uc3QgaWRzID0gbmV3IFNldChhbmNlc3RvcnMubWFwKChyb3cpID0+IHJlbGF0aW9uSWQocm93LmFuY2VzdG9yKSkpO1xuICAgIGlmIChpbmNsdWRlU2VsZikgaWRzLmFkZChvcmdVbml0SWQpO1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0VGVuYW50T3JnVW5pdHModGVuYW50SWQsIC4uLmFyZ3MpKS5maWx0ZXIoKG9yZ1VuaXQpID0+IGlkcy5oYXMob3JnVW5pdC5pZCkpO1xuICB9XG5cbiAgYXN5bmMgcmVuYW1lT3JnVW5pdChvcmdVbml0SWQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8T3JnVW5pdD4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5nZXRCeUlkKG9yZ1VuaXRJZCwgLi4uYXJncyk7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKFxuICAgICAgb3JnVW5pdElkLFxuICAgICAgeyBuYW1lLCBwYXRoOiB0aGlzLm9yZ1VuaXRQYXRoKGV4aXN0aW5nLnBhdGguaW5jbHVkZXMoXCIvXCIpID8gZXhpc3RpbmcucGF0aC5yZXBsYWNlKC9cXC9bXi9dKyQvLCBcIlwiKSA6IHVuZGVmaW5lZCwgbmFtZSkgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgQHRyYW5zYWN0aW9uYWwoKVxuICBhc3luYyBtb3ZlT3JnVW5pdChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIG5ld1BhcmVudE9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8T3JnVW5pdD4ge1xuICAgIGNvbnN0IG5ld1BhcmVudCA9IGF3YWl0IHRoaXMuZ2V0QnlJZChuZXdQYXJlbnRPcmdVbml0SWQsIC4uLmFyZ3MpO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5nZXRCeUlkKG9yZ1VuaXRJZCwgLi4uYXJncyk7XG4gICAgY29uc3QgdXBkYXRlZCA9IGF3YWl0IHRoaXMudXBkYXRlT25lKFxuICAgICAgb3JnVW5pdElkLFxuICAgICAge1xuICAgICAgICBwYXJlbnQ6IG5ld1BhcmVudC5pZCxcbiAgICAgICAgcGF0aDogdGhpcy5vcmdVbml0UGF0aChuZXdQYXJlbnQucGF0aCwgZXhpc3RpbmcubmFtZSksXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgYXdhaXQgdGhpcy5yZWJ1aWxkVGVuYW50Q2xvc3VyZSh0ZW5hbnRJZCwgLi4uYXJncyk7XG4gICAgcmV0dXJuIHVwZGF0ZWQ7XG4gIH1cblxuICBAdHJhbnNhY3Rpb25hbCgpXG4gIGFzeW5jIHJlYnVpbGRUZW5hbnRDbG9zdXJlKHRlbmFudElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY2xvc3VyZVNlcnZpY2UgPSBuZXcgT3JnVW5pdENsb3N1cmVTZXJ2aWNlKCk7XG4gICAgY29uc3QgZXhpc3RpbmdMaW5rcyA9IGF3YWl0IGNsb3N1cmVTZXJ2aWNlLmxpc3RBbGwoLi4uYXJncyk7XG4gICAgYXdhaXQgZGVsZXRlUm93c0J5SWQoXG4gICAgICBjbG9zdXJlU2VydmljZSxcbiAgICAgIGV4aXN0aW5nTGlua3MuZmlsdGVyKChyb3cpID0+IHNhbWVUZW5hbnQocm93LnRlbmFudCwgdGVuYW50SWQpKSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuXG4gICAgY29uc3Qgb3JnVW5pdHMgPSAoYXdhaXQgdGhpcy5saXN0VGVuYW50T3JnVW5pdHModGVuYW50SWQsIC4uLmFyZ3MpKS5zb3J0KChsZWZ0LCByaWdodCkgPT4ge1xuICAgICAgY29uc3QgbGVmdERlcHRoID0gbGVmdC5wYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbikubGVuZ3RoO1xuICAgICAgY29uc3QgcmlnaHREZXB0aCA9IHJpZ2h0LnBhdGguc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVmdERlcHRoIC0gcmlnaHREZXB0aDtcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3Qgb3JnVW5pdCBvZiBvcmdVbml0cykge1xuICAgICAgYXdhaXQgY2xvc3VyZVNlcnZpY2UuY3JlYXRlU2VsZkxpbmsodGVuYW50SWQsIG9yZ1VuaXQuaWQsIC4uLmFyZ3MpO1xuICAgICAgaWYgKG9yZ1VuaXQucGFyZW50KSB7XG4gICAgICAgIGF3YWl0IGNsb3N1cmVTZXJ2aWNlLmluc2VydEFuY2VzdG9yTGlua3NGb3JOZXdDaGlsZChcbiAgICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgICByZWxhdGlvbklkKG9yZ1VuaXQucGFyZW50KSxcbiAgICAgICAgICBvcmdVbml0LmlkLFxuICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAdHJhbnNhY3Rpb25hbCgpXG4gIGFzeW5jIGRlbGV0ZU9yZ1VuaXRUcmVlKHRlbmFudElkOiBzdHJpbmcsIG9yZ1VuaXRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNsb3N1cmVTZXJ2aWNlID0gbmV3IE9yZ1VuaXRDbG9zdXJlU2VydmljZSgpO1xuICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gYXdhaXQgdGhpcy5saXN0RGVzY2VuZGFudE9yZ1VuaXRzKHRlbmFudElkLCBvcmdVbml0SWQsIHRydWUsIC4uLmFyZ3MpO1xuICAgIGNvbnN0IGRlc2NlbmRhbnRJZHMgPSBuZXcgU2V0KGRlc2NlbmRhbnRzLm1hcCgob3JnVW5pdCkgPT4gb3JnVW5pdC5pZCkpO1xuICAgIGNvbnN0IG9yZ1VuaXRzID0gKGF3YWl0IHRoaXMubGlzdFRlbmFudE9yZ1VuaXRzKHRlbmFudElkLCAuLi5hcmdzKSkuZmlsdGVyKChvcmdVbml0KSA9PlxuICAgICAgZGVzY2VuZGFudElkcy5oYXMob3JnVW5pdC5pZClcbiAgICApO1xuICAgIGF3YWl0IGRlbGV0ZVJvd3NCeUlkKHRoaXMsIG9yZ1VuaXRzLCAuLi5hcmdzKTtcbiAgICBhd2FpdCBjbG9zdXJlU2VydmljZS5kZWxldGVMaW5rc0ZvclN1YnRyZWUodGVuYW50SWQsIG9yZ1VuaXRJZCwgLi4uYXJncyk7XG4gIH1cbn1cbiJdfQ==
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLXVuaXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm9yZy11bml0LnNlcnZpY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSTtJQUNqRixJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdILElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxVQUFVO1FBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7O1FBQzFILEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUs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QztJQUNqRSxVQUFVLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDO0NBQzNDLEVBQUUsY0FBYyxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEQsVUFBVSxDQUFDO0lBQ1AsSUFBQSx3QkFBYSxHQUFFO0lBQ2YsVUFBVSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUM7SUFDbkMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUM7Q0FDM0MsRUFBRSxjQUFjLENBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNELFVBQVUsQ0FBQztJQUNQLElBQUEsd0JBQWEsR0FBRTtJQUNmLFVBQVUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDO0lBQ25DLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekQsVUFBVSxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQztDQUMzQyxFQUFFLGNBQWMsQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDeEQsMHVqQkFBMHVqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbnZhciBfX21ldGFkYXRhID0gKHRoaXMgJiYgdGhpcy5fX21ldGFkYXRhKSB8fCBmdW5jdGlvbiAoaywgdikge1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShrLCB2KTtcbn07XG5pbXBvcnQgeyBCYXNlTW9kZWxTZXJ2aWNlLCBsb3dlclNsdWcsIHJlbGF0aW9uSWQsIHJlbGF0aW9uTWF0Y2gsIHNhbWVUZW5hbnQgfSBmcm9tIFwiLi8uLi91dGlscy5qc1wiO1xuaW1wb3J0IHsgT3JnVW5pdCB9IGZyb20gXCIuLi9tb2RlbHMvb3JnLXVuaXQubW9kZWxcIjtcbmltcG9ydCB7IE9yZ1VuaXRQcm9maWxlU2VydmljZSB9IGZyb20gXCIuL29yZy11bml0LXByb2ZpbGUuc2VydmljZVwiO1xuaW1wb3J0IHsgT3JnVW5pdENsb3N1cmVTZXJ2aWNlIH0gZnJvbSBcIi4vb3JnLXVuaXQtY2xvc3VyZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyB0cmFuc2FjdGlvbmFsIH0gZnJvbSBcIi4vLi4vdXRpbHMuanNcIjtcbmFzeW5jIGZ1bmN0aW9uIGRlbGV0ZVJvd3NCeUlkKHNlcnZpY2UsIHJvd3MsIC4uLmFyZ3MpIHtcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgICAgIGF3YWl0IHNlcnZpY2UuZGVsZXRlQnlJZChyb3cuaWQsIC4uLmFyZ3MpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBPcmdVbml0U2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihPcmdVbml0KTtcbiAgICB9XG4gICAgb3JnVW5pdFBhdGgocGFyZW50UGF0aCwgbmFtZSkge1xuICAgICAgICBjb25zdCBzZWdtZW50ID0gbG93ZXJTbHVnKG5hbWUpO1xuICAgICAgICByZXR1cm4gcGFyZW50UGF0aCA/IGAke3BhcmVudFBhdGgucmVwbGFjZSgvXFwvKyQvLCBcIlwiKX0vJHtzZWdtZW50fWAgOiBgLyR7c2VnbWVudH1gO1xuICAgIH1cbiAgICBhc3luYyBjcmVhdGVQcm9maWxlSWZOZWVkZWQob3JnVW5pdElkLCBwcm9maWxlS2V5LCBwcm9maWxlTWV0YWRhdGEsIC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKCFwcm9maWxlS2V5KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBhd2FpdCBuZXcgT3JnVW5pdFByb2ZpbGVTZXJ2aWNlKCkuY3JlYXRlUHJvZmlsZShvcmdVbml0SWQsIHByb2ZpbGVLZXksIHByb2ZpbGVNZXRhZGF0YSwgLi4uYXJncyk7XG4gICAgfVxuICAgIGFzeW5jIGNyZWF0ZVJvb3QodGVuYW50SWQsIG5hbWUsIG1ldGFkYXRhLCBwcm9maWxlS2V5LCBwcm9maWxlTWV0YWRhdGEsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3Qgb3JnVW5pdCA9IGF3YWl0IHRoaXMuY3JlYXRlKHtcbiAgICAgICAgICAgIHRlbmFudDogdGVuYW50SWQsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgcGF0aDogdGhpcy5vcmdVbml0UGF0aCh1bmRlZmluZWQsIG5hbWUpLFxuICAgICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgIH0sIC4uLmFyZ3MpO1xuICAgICAgICBhd2FpdCB0aGlzLmNyZWF0ZVByb2ZpbGVJZk5lZWRlZChvcmdVbml0LmlkLCBwcm9maWxlS2V5LCBwcm9maWxlTWV0YWRhdGEsIC4uLmFyZ3MpO1xuICAgICAgICBhd2FpdCBuZXcgT3JnVW5pdENsb3N1cmVTZXJ2aWNlKCkuY3JlYXRlU2VsZkxpbmsodGVuYW50SWQsIG9yZ1VuaXQuaWQsIC4uLmFyZ3MpO1xuICAgICAgICByZXR1cm4gb3JnVW5pdDtcbiAgICB9XG4gICAgYXN5bmMgY3JlYXRlQ2hpbGQoaW5wdXQsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gaW5wdXQucGFyZW50T3JnVW5pdElkID8gYXdhaXQgdGhpcy5nZXRCeUlkKGlucHV0LnBhcmVudE9yZ1VuaXRJZCwgLi4uYXJncykgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IG9yZ1VuaXQgPSBhd2FpdCB0aGlzLmNyZWF0ZSh7XG4gICAgICAgICAgICB0ZW5hbnQ6IGlucHV0LnRlbmFudElkLFxuICAgICAgICAgICAgcGFyZW50OiBwYXJlbnQ/LmlkID8/IGlucHV0LnBhcmVudE9yZ1VuaXRJZCxcbiAgICAgICAgICAgIG5hbWU6IGlucHV0Lm5hbWUsXG4gICAgICAgICAgICBwYXRoOiB0aGlzLm9yZ1VuaXRQYXRoKHBhcmVudD8ucGF0aCwgaW5wdXQubmFtZSksXG4gICAgICAgICAgICBtZXRhZGF0YTogaW5wdXQubWV0YWRhdGEsXG4gICAgICAgIH0sIC4uLmFyZ3MpO1xuICAgICAgICBhd2FpdCB0aGlzLmNyZWF0ZVByb2ZpbGVJZk5lZWRlZChvcmdVbml0LmlkLCBpbnB1dC5wcm9maWxlS2V5LCBpbnB1dC5wcm9maWxlTWV0YWRhdGEsIC4uLmFyZ3MpO1xuICAgICAgICBjb25zdCBjbG9zdXJlU2VydmljZSA9IG5ldyBPcmdVbml0Q2xvc3VyZVNlcnZpY2UoKTtcbiAgICAgICAgYXdhaXQgY2xvc3VyZVNlcnZpY2UuY3JlYXRlU2VsZkxpbmsoaW5wdXQudGVuYW50SWQsIG9yZ1VuaXQuaWQsIC4uLmFyZ3MpO1xuICAgICAgICBpZiAoaW5wdXQucGFyZW50T3JnVW5pdElkKSB7XG4gICAgICAgICAgICBhd2FpdCBjbG9zdXJlU2VydmljZS5pbnNlcnRBbmNlc3RvckxpbmtzRm9yTmV3Q2hpbGQoaW5wdXQudGVuYW50SWQsIGlucHV0LnBhcmVudE9yZ1VuaXRJZCwgb3JnVW5pdC5pZCwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9yZ1VuaXQ7XG4gICAgfVxuICAgIGFzeW5jIGxpc3RDaGlsZHJlbihwYXJlbnRPcmdVbml0SWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigob3JnVW5pdCkgPT4gcmVsYXRpb25NYXRjaChvcmdVbml0LnBhcmVudCwgcGFyZW50T3JnVW5pdElkKSk7XG4gICAgfVxuICAgIGFzeW5jIGxpc3RUZW5hbnRPcmdVbml0cyh0ZW5hbnRJZCwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChvcmdVbml0KSA9PiBzYW1lVGVuYW50KG9yZ1VuaXQudGVuYW50LCB0ZW5hbnRJZCkpO1xuICAgIH1cbiAgICBhc3luYyBsaXN0RGVzY2VuZGFudE9yZ1VuaXRzKHRlbmFudElkLCBvcmdVbml0SWQsIGluY2x1ZGVTZWxmID0gZmFsc2UsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSBhd2FpdCBuZXcgT3JnVW5pdENsb3N1cmVTZXJ2aWNlKCkubGlzdERlc2NlbmRhbnRzKHRlbmFudElkLCBvcmdVbml0SWQsIC4uLmFyZ3MpO1xuICAgICAgICBjb25zdCBpZHMgPSBuZXcgU2V0KGRlc2NlbmRhbnRzLm1hcCgocm93KSA9PiByZWxhdGlvbklkKHJvdy5kZXNjZW5kYW50KSkpO1xuICAgICAgICBpZiAoaW5jbHVkZVNlbGYpXG4gICAgICAgICAgICBpZHMuYWRkKG9yZ1VuaXRJZCk7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0VGVuYW50T3JnVW5pdHModGVuYW50SWQsIC4uLmFyZ3MpKS5maWx0ZXIoKG9yZ1VuaXQpID0+IGlkcy5oYXMob3JnVW5pdC5pZCkpO1xuICAgIH1cbiAgICBhc3luYyBsaXN0QW5jZXN0b3JPcmdVbml0cyh0ZW5hbnRJZCwgb3JnVW5pdElkLCBpbmNsdWRlU2VsZiA9IGZhbHNlLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IGFuY2VzdG9ycyA9IGF3YWl0IG5ldyBPcmdVbml0Q2xvc3VyZVNlcnZpY2UoKS5saXN0QW5jZXN0b3JzKHRlbmFudElkLCBvcmdVbml0SWQsIC4uLmFyZ3MpO1xuICAgICAgICBjb25zdCBpZHMgPSBuZXcgU2V0KGFuY2VzdG9ycy5tYXAoKHJvdykgPT4gcmVsYXRpb25JZChyb3cuYW5jZXN0b3IpKSk7XG4gICAgICAgIGlmIChpbmNsdWRlU2VsZilcbiAgICAgICAgICAgIGlkcy5hZGQob3JnVW5pdElkKTtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RUZW5hbnRPcmdVbml0cyh0ZW5hbnRJZCwgLi4uYXJncykpLmZpbHRlcigob3JnVW5pdCkgPT4gaWRzLmhhcyhvcmdVbml0LmlkKSk7XG4gICAgfVxuICAgIGFzeW5jIHJlbmFtZU9yZ1VuaXQob3JnVW5pdElkLCBuYW1lLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5nZXRCeUlkKG9yZ1VuaXRJZCwgLi4uYXJncyk7XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZShvcmdVbml0SWQsIHsgbmFtZSwgcGF0aDogdGhpcy5vcmdVbml0UGF0aChleGlzdGluZy5wYXRoLmluY2x1ZGVzKFwiL1wiKSA/IGV4aXN0aW5nLnBhdGgucmVwbGFjZSgvXFwvW14vXSskLywgXCJcIikgOiB1bmRlZmluZWQsIG5hbWUpIH0sIC4uLmFyZ3MpO1xuICAgIH1cbiAgICBhc3luYyBtb3ZlT3JnVW5pdCh0ZW5hbnRJZCwgb3JnVW5pdElkLCBuZXdQYXJlbnRPcmdVbml0SWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgbmV3UGFyZW50ID0gYXdhaXQgdGhpcy5nZXRCeUlkKG5ld1BhcmVudE9yZ1VuaXRJZCwgLi4uYXJncyk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5nZXRCeUlkKG9yZ1VuaXRJZCwgLi4uYXJncyk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB0aGlzLnVwZGF0ZU9uZShvcmdVbml0SWQsIHtcbiAgICAgICAgICAgIHBhcmVudDogbmV3UGFyZW50LmlkLFxuICAgICAgICAgICAgcGF0aDogdGhpcy5vcmdVbml0UGF0aChuZXdQYXJlbnQucGF0aCwgZXhpc3RpbmcubmFtZSksXG4gICAgICAgIH0sIC4uLmFyZ3MpO1xuICAgICAgICBhd2FpdCB0aGlzLnJlYnVpbGRUZW5hbnRDbG9zdXJlKHRlbmFudElkLCAuLi5hcmdzKTtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgfVxuICAgIGFzeW5jIHJlYnVpbGRUZW5hbnRDbG9zdXJlKHRlbmFudElkLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IGNsb3N1cmVTZXJ2aWNlID0gbmV3IE9yZ1VuaXRDbG9zdXJlU2VydmljZSgpO1xuICAgICAgICBjb25zdCBleGlzdGluZ0xpbmtzID0gYXdhaXQgY2xvc3VyZVNlcnZpY2UubGlzdEFsbCguLi5hcmdzKTtcbiAgICAgICAgYXdhaXQgZGVsZXRlUm93c0J5SWQoY2xvc3VyZVNlcnZpY2UsIGV4aXN0aW5nTGlua3MuZmlsdGVyKChyb3cpID0+IHNhbWVUZW5hbnQocm93LnRlbmFudCwgdGVuYW50SWQpKSwgLi4uYXJncyk7XG4gICAgICAgIGNvbnN0IG9yZ1VuaXRzID0gKGF3YWl0IHRoaXMubGlzdFRlbmFudE9yZ1VuaXRzKHRlbmFudElkLCAuLi5hcmdzKSkuc29ydCgobGVmdCwgcmlnaHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxlZnREZXB0aCA9IGxlZnQucGF0aC5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0RGVwdGggPSByaWdodC5wYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbikubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIGxlZnREZXB0aCAtIHJpZ2h0RGVwdGg7XG4gICAgICAgIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IG9yZ1VuaXQgb2Ygb3JnVW5pdHMpIHtcbiAgICAgICAgICAgIGF3YWl0IGNsb3N1cmVTZXJ2aWNlLmNyZWF0ZVNlbGZMaW5rKHRlbmFudElkLCBvcmdVbml0LmlkLCAuLi5hcmdzKTtcbiAgICAgICAgICAgIGlmIChvcmdVbml0LnBhcmVudCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNsb3N1cmVTZXJ2aWNlLmluc2VydEFuY2VzdG9yTGlua3NGb3JOZXdDaGlsZCh0ZW5hbnRJZCwgcmVsYXRpb25JZChvcmdVbml0LnBhcmVudCksIG9yZ1VuaXQuaWQsIC4uLmFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGRlbGV0ZU9yZ1VuaXRUcmVlKHRlbmFudElkLCBvcmdVbml0SWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgY2xvc3VyZVNlcnZpY2UgPSBuZXcgT3JnVW5pdENsb3N1cmVTZXJ2aWNlKCk7XG4gICAgICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gYXdhaXQgdGhpcy5saXN0RGVzY2VuZGFudE9yZ1VuaXRzKHRlbmFudElkLCBvcmdVbml0SWQsIHRydWUsIC4uLmFyZ3MpO1xuICAgICAgICBjb25zdCBkZXNjZW5kYW50SWRzID0gbmV3IFNldChkZXNjZW5kYW50cy5tYXAoKG9yZ1VuaXQpID0+IG9yZ1VuaXQuaWQpKTtcbiAgICAgICAgY29uc3Qgb3JnVW5pdHMgPSAoYXdhaXQgdGhpcy5saXN0VGVuYW50T3JnVW5pdHModGVuYW50SWQsIC4uLmFyZ3MpKS5maWx0ZXIoKG9yZ1VuaXQpID0+IGRlc2NlbmRhbnRJZHMuaGFzKG9yZ1VuaXQuaWQpKTtcbiAgICAgICAgYXdhaXQgZGVsZXRlUm93c0J5SWQodGhpcywgb3JnVW5pdHMsIC4uLmFyZ3MpO1xuICAgICAgICBhd2FpdCBjbG9zdXJlU2VydmljZS5kZWxldGVMaW5rc0ZvclN1YnRyZWUodGVuYW50SWQsIG9yZ1VuaXRJZCwgLi4uYXJncyk7XG4gICAgfVxufVxuX19kZWNvcmF0ZShbXG4gICAgdHJhbnNhY3Rpb25hbCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBGdW5jdGlvbiksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpwYXJhbXR5cGVzXCIsIFtTdHJpbmcsIFN0cmluZywgT2JqZWN0LCBTdHJpbmcsIE9iamVjdCwgT2JqZWN0XSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpyZXR1cm50eXBlXCIsIFByb21pc2UpXG5dLCBPcmdVbml0U2VydmljZS5wcm90b3R5cGUsIFwiY3JlYXRlUm9vdFwiLCBudWxsKTtcbl9fZGVjb3JhdGUoW1xuICAgIHRyYW5zYWN0aW9uYWwoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRnVuY3Rpb24pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246cGFyYW10eXBlc1wiLCBbT2JqZWN0LCBPYmplY3RdKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnJldHVybnR5cGVcIiwgUHJvbWlzZSlcbl0sIE9yZ1VuaXRTZXJ2aWNlLnByb3RvdHlwZSwgXCJjcmVhdGVDaGlsZFwiLCBudWxsKTtcbl9fZGVjb3JhdGUoW1xuICAgIHRyYW5zYWN0aW9uYWwoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRnVuY3Rpb24pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246cGFyYW10eXBlc1wiLCBbU3RyaW5nLCBTdHJpbmcsIFN0cmluZywgT2JqZWN0XSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpyZXR1cm50eXBlXCIsIFByb21pc2UpXG5dLCBPcmdVbml0U2VydmljZS5wcm90b3R5cGUsIFwibW92ZU9yZ1VuaXRcIiwgbnVsbCk7XG5fX2RlY29yYXRlKFtcbiAgICB0cmFuc2FjdGlvbmFsKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEZ1bmN0aW9uKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnBhcmFtdHlwZXNcIiwgW1N0cmluZywgT2JqZWN0XSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpyZXR1cm50eXBlXCIsIFByb21pc2UpXG5dLCBPcmdVbml0U2VydmljZS5wcm90b3R5cGUsIFwicmVidWlsZFRlbmFudENsb3N1cmVcIiwgbnVsbCk7XG5fX2RlY29yYXRlKFtcbiAgICB0cmFuc2FjdGlvbmFsKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEZ1bmN0aW9uKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnBhcmFtdHlwZXNcIiwgW1N0cmluZywgU3RyaW5nLCBPYmplY3RdKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnJldHVybnR5cGVcIiwgUHJvbWlzZSlcbl0sIE9yZ1VuaXRTZXJ2aWNlLnByb3RvdHlwZSwgXCJkZWxldGVPcmdVbml0VHJlZVwiLCBudWxsKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWIzSm5MWFZ1YVhRdWMyVnlkbWxqWlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDNOeVl5OXVZVzFsYzNCaFkyVnpMM05sY25acFkyVnpMMjl5WnkxMWJtbDBMbk5sY25acFkyVXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdPMEZCUVVFc1QwRkJUeXhGUVVGRkxHZENRVUZuUWl4RlFVRkZMRk5CUVZNc1JVRkJSU3hWUVVGVkxFVkJRVVVzWVVGQllTeEZRVUZGTEZWQlFWVXNSVUZCUlN4elFrRkJhVUk3UVVGRk9VWXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSU3hOUVVGTkxEQkNRVUV3UWl4RFFVRkRPMEZCUTI1RUxFOUJRVThzUlVGQlJTeHhRa0ZCY1VJc1JVRkJSU3hOUVVGTkxEUkNRVUUwUWl4RFFVRkRPMEZCUTI1RkxFOUJRVThzUlVGQlJTeHhRa0ZCY1VJc1JVRkJSU3hOUVVGTkxEUkNRVUUwUWl4RFFVRkRPMEZCUTI1RkxFOUJRVThzUlVGQlJTeGhRVUZoTEVWQlFVVXNjMEpCUVdsQ08wRkJSWHBETEV0QlFVc3NWVUZCVlN4alFVRmpMRU5CUXpOQ0xFOUJRVGhDTEVWQlF6bENMRWxCUVRKQ0xFVkJRek5DTEVkQlFVY3NTVUZCVnp0SlFVVmtMRXRCUVVzc1RVRkJUU3hIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTTdVVUZEZGtJc1RVRkJUU3hQUVVGUExFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU0xUXl4RFFVRkRPMEZCUTBnc1EwRkJRenRCUVVWRUxFMUJRVTBzVDBGQlR5eGpRVUZsTEZOQlFWRXNaMEpCUVhsQ08wbEJRek5FTzFGQlEwVXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRMnBDTEVOQlFVTTdTVUZGVHl4WFFVRlhMRU5CUVVNc1ZVRkJPRUlzUlVGQlJTeEpRVUZaTzFGQlF6bEVMRTFCUVUwc1QwRkJUeXhIUVVGSExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTm9ReXhQUVVGUExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4VlFVRlZMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNTVUZCU1N4UFFVRlBMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeFBRVUZQTEVWQlFVVXNRMEZCUXp0SlFVTnlSaXhEUVVGRE8wbEJSVThzUzBGQlN5eERRVUZETEhGQ1FVRnhRaXhEUVVOcVF5eFRRVUZwUWl4RlFVTnFRaXhWUVVFNFFpeEZRVU01UWl4bFFVRnZSQ3hGUVVOd1JDeEhRVUZITEVsQlFWYzdVVUZGWkN4SlFVRkpMRU5CUVVNc1ZVRkJWVHRaUVVGRkxFOUJRVTg3VVVGRGVFSXNUVUZCVFN4SlFVRkpMSEZDUVVGeFFpeEZRVUZGTEVOQlFVTXNZVUZCWVN4RFFVRkRMRk5CUVZNc1JVRkJSU3hWUVVGVkxFVkJRVVVzWlVGQlpTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRia2NzUTBGQlF6dEpRVWRMTEVGQlFVNHNTMEZCU3l4RFFVRkRMRlZCUVZVc1EwRkRaQ3hSUVVGblFpeEZRVU5vUWl4SlFVRlpMRVZCUTFvc1VVRkJhME1zUlVGRGJFTXNWVUZCYlVJc1JVRkRia0lzWlVGQmVVTXNSVUZEZWtNc1IwRkJSeXhKUVVGWE8xRkJSV1FzVFVGQlRTeFBRVUZQTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVNdlFqdFpRVU5GTEUxQlFVMHNSVUZCUlN4UlFVRlJPMWxCUTJoQ0xFbEJRVWs3V1VGRFNpeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhUUVVGVExFVkJRVVVzU1VGQlNTeERRVUZETzFsQlEzWkRMRkZCUVZFN1UwRkRWQ3hGUVVORUxFZEJRVWNzU1VGQlNTeERRVU5TTEVOQlFVTTdVVUZEUml4TlFVRk5MRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSU3hGUVVGRkxGVkJRVlVzUlVGQlJTeGxRVUZsTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVOdVJpeE5RVUZOTEVsQlFVa3NjVUpCUVhGQ0xFVkJRVVVzUTBGQlF5eGpRVUZqTEVOQlFVTXNVVUZCVVN4RlFVRkZMRTlCUVU4c1EwRkJReXhGUVVGRkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTm9SaXhQUVVGUExFOUJRVThzUTBGQlF6dEpRVU5xUWl4RFFVRkRPMGxCUjBzc1FVRkJUaXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEV0QlFYbENMRVZCUVVVc1IwRkJSeXhKUVVGWE8xRkJRM3BFTEUxQlFVMHNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zWlVGQlpTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF6dFJRVU4wUnl4TlFVRk5MRTlCUVU4c1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlF5OUNPMWxCUTBVc1RVRkJUU3hGUVVGRkxFdEJRVXNzUTBGQlF5eFJRVUZSTzFsQlEzUkNMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVVzUlVGQlJTeEpRVUZKTEV0QlFVc3NRMEZCUXl4bFFVRmxPMWxCUXpORExFbEJRVWtzUlVGQlJTeExRVUZMTEVOQlFVTXNTVUZCU1R0WlFVTm9RaXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTTdXVUZEYUVRc1VVRkJVU3hGUVVGRkxFdEJRVXNzUTBGQlF5eFJRVUZSTzFOQlEzcENMRVZCUTBRc1IwRkJSeXhKUVVGSkxFTkJRMUlzUTBGQlF6dFJRVU5HTEUxQlFVMHNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRVZCUVVVc1MwRkJTeXhEUVVGRExGVkJRVlVzUlVGQlJTeExRVUZMTEVOQlFVTXNaVUZCWlN4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGREwwWXNUVUZCVFN4alFVRmpMRWRCUVVjc1NVRkJTU3h4UWtGQmNVSXNSVUZCUlN4RFFVRkRPMUZCUTI1RUxFMUJRVTBzWTBGQll5eERRVUZETEdOQlFXTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hGUVVGRkxFOUJRVThzUTBGQlF5eEZRVUZGTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVONlJTeEpRVUZKTEV0QlFVc3NRMEZCUXl4bFFVRmxMRVZCUVVVc1EwRkJRenRaUVVNeFFpeE5RVUZOTEdOQlFXTXNRMEZCUXl3NFFrRkJPRUlzUTBGRGFrUXNTMEZCU3l4RFFVRkRMRkZCUVZFc1JVRkRaQ3hMUVVGTExFTkJRVU1zWlVGQlpTeEZRVU55UWl4UFFVRlBMRU5CUVVNc1JVRkJSU3hGUVVOV0xFZEJRVWNzU1VGQlNTeERRVU5TTEVOQlFVTTdVVUZEU2l4RFFVRkRPMUZCUTBRc1QwRkJUeXhQUVVGUExFTkJRVU03U1VGRGFrSXNRMEZCUXp0SlFVVkVMRXRCUVVzc1EwRkJReXhaUVVGWkxFTkJRVU1zWlVGQmRVSXNSVUZCUlN4SFFVRkhMRWxCUVZjN1VVRkRlRVFzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1QwRkJUeXhGUVVGRkxFVkJRVVVzUTBGQlF5eGhRVUZoTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hsUVVGbExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6TkhMRU5CUVVNN1NVRkZSQ3hMUVVGTExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1VVRkJaMElzUlVGQlJTeEhRVUZITEVsQlFWYzdVVUZEZGtRc1QwRkJUeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNUMEZCVHl4RlFVRkZMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNSVUZCUlN4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMnBITEVOQlFVTTdTVUZGUkN4TFFVRkxMRU5CUVVNc2MwSkJRWE5DTEVOQlF6RkNMRkZCUVdkQ0xFVkJRMmhDTEZOQlFXbENMRVZCUTJwQ0xGZEJRVmNzUjBGQlJ5eExRVUZMTEVWQlEyNUNMRWRCUVVjc1NVRkJWenRSUVVWa0xFMUJRVTBzVjBGQlZ5eEhRVUZITEUxQlFVMHNTVUZCU1N4eFFrRkJjVUlzUlVGQlJTeERRVUZETEdWQlFXVXNRMEZCUXl4UlFVRlJMRVZCUVVVc1UwRkJVeXhGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEY0Vjc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFVTXNWMEZCVnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETVVVc1NVRkJTU3hYUVVGWE8xbEJRVVVzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRSUVVOd1F5eFBRVUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4UFFVRlBMRVZCUVVVc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGNrY3NRMEZCUXp0SlFVVkVMRXRCUVVzc1EwRkJReXh2UWtGQmIwSXNRMEZEZUVJc1VVRkJaMElzUlVGRGFFSXNVMEZCYVVJc1JVRkRha0lzVjBGQlZ5eEhRVUZITEV0QlFVc3NSVUZEYmtJc1IwRkJSeXhKUVVGWE8xRkJSV1FzVFVGQlRTeFRRVUZUTEVkQlFVY3NUVUZCVFN4SlFVRkpMSEZDUVVGeFFpeEZRVUZGTEVOQlFVTXNZVUZCWVN4RFFVRkRMRkZCUVZFc1JVRkJSU3hUUVVGVExFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTm9SeXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjBSU3hKUVVGSkxGZEJRVmM3V1VGQlJTeEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJRM0JETEU5QlFVOHNRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4UlFVRlJMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU55Unl4RFFVRkRPMGxCUlVRc1MwRkJTeXhEUVVGRExHRkJRV0VzUTBGQlF5eFRRVUZwUWl4RlFVRkZMRWxCUVZrc1JVRkJSU3hIUVVGSExFbEJRVmM3VVVGRGFrVXNUVUZCVFN4UlFVRlJMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM2hFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkRia0lzVTBGQlV5eEZRVU5VTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZCUlN4RlFVTjJTQ3hIUVVGSExFbEJRVWtzUTBGRFVpeERRVUZETzBsQlEwb3NRMEZCUXp0SlFVZExMRUZCUVU0c1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGRFppeFJRVUZuUWl4RlFVTm9RaXhUUVVGcFFpeEZRVU5xUWl4clFrRkJNRUlzUlVGRE1VSXNSMEZCUnl4SlFVRlhPMUZCUldRc1RVRkJUU3hUUVVGVExFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRiRVVzVFVGQlRTeFJRVUZSTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTNoRUxFMUJRVTBzVDBGQlR5eEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkRiRU1zVTBGQlV5eEZRVU5VTzFsQlEwVXNUVUZCVFN4RlFVRkZMRk5CUVZNc1EwRkJReXhGUVVGRk8xbEJRM0JDTEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJRenRUUVVOMFJDeEZRVU5FTEVkQlFVY3NTVUZCU1N4RFFVTlNMRU5CUVVNN1VVRkRSaXhOUVVGTkxFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhSUVVGUkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTnVSQ3hQUVVGUExFOUJRVThzUTBGQlF6dEpRVU5xUWl4RFFVRkRPMGxCUjBzc1FVRkJUaXhMUVVGTExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1VVRkJaMElzUlVGQlJTeEhRVUZITEVsQlFWYzdVVUZEZWtRc1RVRkJUU3hqUVVGakxFZEJRVWNzU1VGQlNTeHhRa0ZCY1VJc1JVRkJSU3hEUVVGRE8xRkJRMjVFTEUxQlFVMHNZVUZCWVN4SFFVRkhMRTFCUVUwc1kwRkJZeXhEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUXpWRUxFMUJRVTBzWTBGQll5eERRVU5zUWl4alFVRmpMRVZCUTJRc1lVRkJZU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNc1JVRkRMMFFzUjBGQlJ5eEpRVUZKTEVOQlExSXNRMEZCUXp0UlFVVkdMRTFCUVUwc1VVRkJVU3hIUVVGSExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVVVGQlVTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVN1dVRkRka1lzVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dFpRVU01UkN4TlFVRk5MRlZCUVZVc1IwRkJSeXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRPMWxCUTJoRkxFOUJRVThzVTBGQlV5eEhRVUZITEZWQlFWVXNRMEZCUXp0UlFVTm9ReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVVZJTEV0QlFVc3NUVUZCVFN4UFFVRlBMRWxCUVVrc1VVRkJVU3hGUVVGRkxFTkJRVU03V1VGREwwSXNUVUZCVFN4alFVRmpMRU5CUVVNc1kwRkJZeXhEUVVGRExGRkJRVkVzUlVGQlJTeFBRVUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRGJrVXNTVUZCU1N4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03WjBKQlEyNUNMRTFCUVUwc1kwRkJZeXhEUVVGRExEaENRVUU0UWl4RFFVTnFSQ3hSUVVGUkxFVkJRMUlzVlVGQlZTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkRNVUlzVDBGQlR5eERRVUZETEVWQlFVVXNSVUZEVml4SFFVRkhMRWxCUVVrc1EwRkRVaXhEUVVGRE8xbEJRMG9zUTBGQlF6dFJRVU5JTEVOQlFVTTdTVUZEU0N4RFFVRkRPMGxCUjBzc1FVRkJUaXhMUVVGTExFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1VVRkJaMElzUlVGQlJTeFRRVUZwUWl4RlFVRkZMRWRCUVVjc1NVRkJWenRSUVVONlJTeE5RVUZOTEdOQlFXTXNSMEZCUnl4SlFVRkpMSEZDUVVGeFFpeEZRVUZGTEVOQlFVTTdVVUZEYmtRc1RVRkJUU3hYUVVGWExFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNjMEpCUVhOQ0xFTkJRVU1zVVVGQlVTeEZRVUZGTEZOQlFWTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU14Uml4TlFVRk5MR0ZCUVdFc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1QwRkJUeXhGUVVGRkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONFJTeE5RVUZOTEZGQlFWRXNSMEZCUnl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRkZCUVZFc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1QwRkJUeXhGUVVGRkxFVkJRVVVzUTBGRGNrWXNZVUZCWVN4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlF6bENMRU5CUVVNN1VVRkRSaXhOUVVGTkxHTkJRV01zUTBGQlF5eEpRVUZKTEVWQlFVVXNVVUZCVVN4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRE9VTXNUVUZCVFN4alFVRmpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNVVUZCVVN4RlFVRkZMRk5CUVZNc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlF6TkZMRU5CUVVNN1EwRkRSanRCUVhaS1R6dEpRVVJNTEdGQlFXRXNSVUZCUlRzN096dG5SRUZ4UW1ZN1FVRkhTenRKUVVSTUxHRkJRV0VzUlVGQlJUczdPenRwUkVGNVFtWTdRVUUwUTBzN1NVRkVUQ3hoUVVGaExFVkJRVVU3T3pzN2FVUkJiVUptTzBGQlIwczdTVUZFVEN4aFFVRmhMRVZCUVVVN096czdNRVJCTWtKbU8wRkJSMHM3U1VGRVRDeGhRVUZoTEVWQlFVVTdPenM3ZFVSQlZXWWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdleUJDWVhObFRXOWtaV3hUWlhKMmFXTmxMQ0JzYjNkbGNsTnNkV2NzSUhKbGJHRjBhVzl1U1dRc0lISmxiR0YwYVc5dVRXRjBZMmdzSUhOaGJXVlVaVzVoYm5RZ2ZTQm1jbTl0SUZ3aUxpNHZkWFJwYkhOY0lqdGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1EzSmxZWFJsVDNKblZXNXBkRWx1Y0hWMElIMGdabkp2YlNCY0lpNHVMM1I1Y0dWelhDSTdYRzVwYlhCdmNuUWdleUJQY21kVmJtbDBJSDBnWm5KdmJTQmNJaTR1TDIxdlpHVnNjeTl2Y21jdGRXNXBkQzV0YjJSbGJGd2lPMXh1YVcxd2IzSjBJSHNnVDNKblZXNXBkRkJ5YjJacGJHVlRaWEoyYVdObElIMGdabkp2YlNCY0lpNHZiM0puTFhWdWFYUXRjSEp2Wm1sc1pTNXpaWEoyYVdObFhDSTdYRzVwYlhCdmNuUWdleUJQY21kVmJtbDBRMnh2YzNWeVpWTmxjblpwWTJVZ2ZTQm1jbTl0SUZ3aUxpOXZjbWN0ZFc1cGRDMWpiRzl6ZFhKbExuTmxjblpwWTJWY0lqdGNibWx0Y0c5eWRDQjdJSFJ5WVc1ellXTjBhVzl1WVd3Z2ZTQm1jbTl0SUZ3aUxpNHZkWFJwYkhOY0lqdGNibHh1WVhONWJtTWdablZ1WTNScGIyNGdaR1ZzWlhSbFVtOTNjMEo1U1dRb1hHNGdJSE5sY25acFkyVTZJRUpoYzJWTmIyUmxiRk5sY25acFkyVThZVzU1UGl4Y2JpQWdjbTkzY3pvZ1FYSnlZWGs4ZXlCcFpEb2djM1J5YVc1bklIMCtMRnh1SUNBdUxpNWhjbWR6T2lCaGJubGJYVnh1S1RvZ1VISnZiV2x6WlR4MmIybGtQaUI3WEc0Z0lHWnZjaUFvWTI5dWMzUWdjbTkzSUc5bUlISnZkM01wSUh0Y2JpQWdJQ0JoZDJGcGRDQnpaWEoyYVdObExtUmxiR1YwWlVKNVNXUW9jbTkzTG1sa0xDQXVMaTVoY21kektUdGNiaUFnZlZ4dWZWeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1QzSm5WVzVwZEZObGNuWnBZMlVnWlhoMFpXNWtjeUJDWVhObFRXOWtaV3hUWlhKMmFXTmxQRTl5WjFWdWFYUStJSHRjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9LU0I3WEc0Z0lDQWdjM1Z3WlhJb1QzSm5WVzVwZENrN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHOXlaMVZ1YVhSUVlYUm9LSEJoY21WdWRGQmhkR2c2SUhOMGNtbHVaeUI4SUhWdVpHVm1hVzVsWkN3Z2JtRnRaVG9nYzNSeWFXNW5LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQmpiMjV6ZENCelpXZHRaVzUwSUQwZ2JHOTNaWEpUYkhWbktHNWhiV1VwTzF4dUlDQWdJSEpsZEhWeWJpQndZWEpsYm5SUVlYUm9JRDhnWUNSN2NHRnlaVzUwVUdGMGFDNXlaWEJzWVdObEtDOWNYQzhySkM4c0lGd2lYQ0lwZlM4a2UzTmxaMjFsYm5SOVlDQTZJR0F2Skh0elpXZHRaVzUwZldBN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHRnplVzVqSUdOeVpXRjBaVkJ5YjJacGJHVkpaazVsWldSbFpDaGNiaUFnSUNCdmNtZFZibWwwU1dRNklITjBjbWx1Wnl4Y2JpQWdJQ0J3Y205bWFXeGxTMlY1T2lCemRISnBibWNnZkNCMWJtUmxabWx1WldRc1hHNGdJQ0FnY0hKdlptbHNaVTFsZEdGa1lYUmhPaUJTWldOdmNtUThjM1J5YVc1bkxDQjFibXR1YjNkdVBpQjhJSFZ1WkdWbWFXNWxaQ3hjYmlBZ0lDQXVMaTVoY21kek9pQmhibmxiWFZ4dUlDQXBPaUJRY205dGFYTmxQSFp2YVdRK0lIdGNiaUFnSUNCcFppQW9JWEJ5YjJacGJHVkxaWGtwSUhKbGRIVnlianRjYmlBZ0lDQmhkMkZwZENCdVpYY2dUM0puVlc1cGRGQnliMlpwYkdWVFpYSjJhV05sS0NrdVkzSmxZWFJsVUhKdlptbHNaU2h2Y21kVmJtbDBTV1FzSUhCeWIyWnBiR1ZMWlhrc0lIQnliMlpwYkdWTlpYUmhaR0YwWVN3Z0xpNHVZWEpuY3lrN1hHNGdJSDFjYmx4dUlDQkFkSEpoYm5OaFkzUnBiMjVoYkNncFhHNGdJR0Z6ZVc1aklHTnlaV0YwWlZKdmIzUW9YRzRnSUNBZ2RHVnVZVzUwU1dRNklITjBjbWx1Wnl4Y2JpQWdJQ0J1WVcxbE9pQnpkSEpwYm1jc1hHNGdJQ0FnYldWMFlXUmhkR0UvT2lCU1pXTnZjbVE4YzNSeWFXNW5MQ0IxYm10dWIzZHVQaXhjYmlBZ0lDQndjbTltYVd4bFMyVjVQem9nYzNSeWFXNW5MRnh1SUNBZ0lIQnliMlpwYkdWTlpYUmhaR0YwWVQ4NklGSmxZMjl5WkR4emRISnBibWNzSUhWdWEyNXZkMjQrTEZ4dUlDQWdJQzR1TG1GeVozTTZJR0Z1ZVZ0ZFhHNGdJQ2s2SUZCeWIyMXBjMlU4VDNKblZXNXBkRDRnZTF4dUlDQWdJR052Ym5OMElHOXlaMVZ1YVhRZ1BTQmhkMkZwZENCMGFHbHpMbU55WldGMFpTaGNiaUFnSUNBZ0lIdGNiaUFnSUNBZ0lDQWdkR1Z1WVc1ME9pQjBaVzVoYm5SSlpDeGNiaUFnSUNBZ0lDQWdibUZ0WlN4Y2JpQWdJQ0FnSUNBZ2NHRjBhRG9nZEdocGN5NXZjbWRWYm1sMFVHRjBhQ2gxYm1SbFptbHVaV1FzSUc1aGJXVXBMRnh1SUNBZ0lDQWdJQ0J0WlhSaFpHRjBZU3hjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0F1TGk1aGNtZHpYRzRnSUNBZ0tUdGNiaUFnSUNCaGQyRnBkQ0IwYUdsekxtTnlaV0YwWlZCeWIyWnBiR1ZKWms1bFpXUmxaQ2h2Y21kVmJtbDBMbWxrTENCd2NtOW1hV3hsUzJWNUxDQndjbTltYVd4bFRXVjBZV1JoZEdFc0lDNHVMbUZ5WjNNcE8xeHVJQ0FnSUdGM1lXbDBJRzVsZHlCUGNtZFZibWwwUTJ4dmMzVnlaVk5sY25acFkyVW9LUzVqY21WaGRHVlRaV3htVEdsdWF5aDBaVzVoYm5SSlpDd2diM0puVlc1cGRDNXBaQ3dnTGk0dVlYSm5jeWs3WEc0Z0lDQWdjbVYwZFhKdUlHOXlaMVZ1YVhRN1hHNGdJSDFjYmx4dUlDQkFkSEpoYm5OaFkzUnBiMjVoYkNncFhHNGdJR0Z6ZVc1aklHTnlaV0YwWlVOb2FXeGtLR2x1Y0hWME9pQkRjbVZoZEdWUGNtZFZibWwwU1c1d2RYUXNJQzR1TG1GeVozTTZJR0Z1ZVZ0ZEtUb2dVSEp2YldselpUeFBjbWRWYm1sMFBpQjdYRzRnSUNBZ1kyOXVjM1FnY0dGeVpXNTBJRDBnYVc1d2RYUXVjR0Z5Wlc1MFQzSm5WVzVwZEVsa0lEOGdZWGRoYVhRZ2RHaHBjeTVuWlhSQ2VVbGtLR2x1Y0hWMExuQmhjbVZ1ZEU5eVoxVnVhWFJKWkN3Z0xpNHVZWEpuY3lrZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ1kyOXVjM1FnYjNKblZXNXBkQ0E5SUdGM1lXbDBJSFJvYVhNdVkzSmxZWFJsS0Z4dUlDQWdJQ0FnZTF4dUlDQWdJQ0FnSUNCMFpXNWhiblE2SUdsdWNIVjBMblJsYm1GdWRFbGtMRnh1SUNBZ0lDQWdJQ0J3WVhKbGJuUTZJSEJoY21WdWREOHVhV1FnUHo4Z2FXNXdkWFF1Y0dGeVpXNTBUM0puVlc1cGRFbGtMRnh1SUNBZ0lDQWdJQ0J1WVcxbE9pQnBibkIxZEM1dVlXMWxMRnh1SUNBZ0lDQWdJQ0J3WVhSb09pQjBhR2x6TG05eVoxVnVhWFJRWVhSb0tIQmhjbVZ1ZEQ4dWNHRjBhQ3dnYVc1d2RYUXVibUZ0WlNrc1hHNGdJQ0FnSUNBZ0lHMWxkR0ZrWVhSaE9pQnBibkIxZEM1dFpYUmhaR0YwWVN4Y2JpQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBdUxpNWhjbWR6WEc0Z0lDQWdLVHRjYmlBZ0lDQmhkMkZwZENCMGFHbHpMbU55WldGMFpWQnliMlpwYkdWSlprNWxaV1JsWkNodmNtZFZibWwwTG1sa0xDQnBibkIxZEM1d2NtOW1hV3hsUzJWNUxDQnBibkIxZEM1d2NtOW1hV3hsVFdWMFlXUmhkR0VzSUM0dUxtRnlaM01wTzF4dUlDQWdJR052Ym5OMElHTnNiM04xY21WVFpYSjJhV05sSUQwZ2JtVjNJRTl5WjFWdWFYUkRiRzl6ZFhKbFUyVnlkbWxqWlNncE8xeHVJQ0FnSUdGM1lXbDBJR05zYjNOMWNtVlRaWEoyYVdObExtTnlaV0YwWlZObGJHWk1hVzVyS0dsdWNIVjBMblJsYm1GdWRFbGtMQ0J2Y21kVmJtbDBMbWxrTENBdUxpNWhjbWR6S1R0Y2JpQWdJQ0JwWmlBb2FXNXdkWFF1Y0dGeVpXNTBUM0puVlc1cGRFbGtLU0I3WEc0Z0lDQWdJQ0JoZDJGcGRDQmpiRzl6ZFhKbFUyVnlkbWxqWlM1cGJuTmxjblJCYm1ObGMzUnZja3hwYm10elJtOXlUbVYzUTJocGJHUW9YRzRnSUNBZ0lDQWdJR2x1Y0hWMExuUmxibUZ1ZEVsa0xGeHVJQ0FnSUNBZ0lDQnBibkIxZEM1d1lYSmxiblJQY21kVmJtbDBTV1FzWEc0Z0lDQWdJQ0FnSUc5eVoxVnVhWFF1YVdRc1hHNGdJQ0FnSUNBZ0lDNHVMbUZ5WjNOY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnZjbWRWYm1sME8xeHVJQ0I5WEc1Y2JpQWdZWE41Ym1NZ2JHbHpkRU5vYVd4a2NtVnVLSEJoY21WdWRFOXlaMVZ1YVhSSlpEb2djM1J5YVc1bkxDQXVMaTVoY21kek9pQmhibmxiWFNrNklGQnliMjFwYzJVOFQzSm5WVzVwZEZ0ZFBpQjdYRzRnSUNBZ2NtVjBkWEp1SUNoaGQyRnBkQ0IwYUdsekxteHBjM1JCYkd3b0xpNHVZWEpuY3lrcExtWnBiSFJsY2lnb2IzSm5WVzVwZENrZ1BUNGdjbVZzWVhScGIyNU5ZWFJqYUNodmNtZFZibWwwTG5CaGNtVnVkQ3dnY0dGeVpXNTBUM0puVlc1cGRFbGtLU2s3WEc0Z0lIMWNibHh1SUNCaGMzbHVZeUJzYVhOMFZHVnVZVzUwVDNKblZXNXBkSE1vZEdWdVlXNTBTV1E2SUhOMGNtbHVaeXdnTGk0dVlYSm5jem9nWVc1NVcxMHBPaUJRY205dGFYTmxQRTl5WjFWdWFYUmJYVDRnZTF4dUlDQWdJSEpsZEhWeWJpQW9ZWGRoYVhRZ2RHaHBjeTVzYVhOMFFXeHNLQzR1TG1GeVozTXBLUzVtYVd4MFpYSW9LRzl5WjFWdWFYUXBJRDArSUhOaGJXVlVaVzVoYm5Rb2IzSm5WVzVwZEM1MFpXNWhiblFzSUhSbGJtRnVkRWxrS1NrN1hHNGdJSDFjYmx4dUlDQmhjM2x1WXlCc2FYTjBSR1Z6WTJWdVpHRnVkRTl5WjFWdWFYUnpLRnh1SUNBZ0lIUmxibUZ1ZEVsa09pQnpkSEpwYm1jc1hHNGdJQ0FnYjNKblZXNXBkRWxrT2lCemRISnBibWNzWEc0Z0lDQWdhVzVqYkhWa1pWTmxiR1lnUFNCbVlXeHpaU3hjYmlBZ0lDQXVMaTVoY21kek9pQmhibmxiWFZ4dUlDQXBPaUJRY205dGFYTmxQRTl5WjFWdWFYUmJYVDRnZTF4dUlDQWdJR052Ym5OMElHUmxjMk5sYm1SaGJuUnpJRDBnWVhkaGFYUWdibVYzSUU5eVoxVnVhWFJEYkc5emRYSmxVMlZ5ZG1salpTZ3BMbXhwYzNSRVpYTmpaVzVrWVc1MGN5aDBaVzVoYm5SSlpDd2diM0puVlc1cGRFbGtMQ0F1TGk1aGNtZHpLVHRjYmlBZ0lDQmpiMjV6ZENCcFpITWdQU0J1WlhjZ1UyVjBLR1JsYzJObGJtUmhiblJ6TG0xaGNDZ29jbTkzS1NBOVBpQnlaV3hoZEdsdmJrbGtLSEp2ZHk1a1pYTmpaVzVrWVc1MEtTa3BPMXh1SUNBZ0lHbG1JQ2hwYm1Oc2RXUmxVMlZzWmlrZ2FXUnpMbUZrWkNodmNtZFZibWwwU1dRcE8xeHVJQ0FnSUhKbGRIVnliaUFvWVhkaGFYUWdkR2hwY3k1c2FYTjBWR1Z1WVc1MFQzSm5WVzVwZEhNb2RHVnVZVzUwU1dRc0lDNHVMbUZ5WjNNcEtTNW1hV3gwWlhJb0tHOXlaMVZ1YVhRcElEMCtJR2xrY3k1b1lYTW9iM0puVlc1cGRDNXBaQ2twTzF4dUlDQjlYRzVjYmlBZ1lYTjVibU1nYkdsemRFRnVZMlZ6ZEc5eVQzSm5WVzVwZEhNb1hHNGdJQ0FnZEdWdVlXNTBTV1E2SUhOMGNtbHVaeXhjYmlBZ0lDQnZjbWRWYm1sMFNXUTZJSE4wY21sdVp5eGNiaUFnSUNCcGJtTnNkV1JsVTJWc1ppQTlJR1poYkhObExGeHVJQ0FnSUM0dUxtRnlaM002SUdGdWVWdGRYRzRnSUNrNklGQnliMjFwYzJVOFQzSm5WVzVwZEZ0ZFBpQjdYRzRnSUNBZ1kyOXVjM1FnWVc1alpYTjBiM0p6SUQwZ1lYZGhhWFFnYm1WM0lFOXlaMVZ1YVhSRGJHOXpkWEpsVTJWeWRtbGpaU2dwTG14cGMzUkJibU5sYzNSdmNuTW9kR1Z1WVc1MFNXUXNJRzl5WjFWdWFYUkpaQ3dnTGk0dVlYSm5jeWs3WEc0Z0lDQWdZMjl1YzNRZ2FXUnpJRDBnYm1WM0lGTmxkQ2hoYm1ObGMzUnZjbk11YldGd0tDaHliM2NwSUQwK0lISmxiR0YwYVc5dVNXUW9jbTkzTG1GdVkyVnpkRzl5S1NrcE8xeHVJQ0FnSUdsbUlDaHBibU5zZFdSbFUyVnNaaWtnYVdSekxtRmtaQ2h2Y21kVmJtbDBTV1FwTzF4dUlDQWdJSEpsZEhWeWJpQW9ZWGRoYVhRZ2RHaHBjeTVzYVhOMFZHVnVZVzUwVDNKblZXNXBkSE1vZEdWdVlXNTBTV1FzSUM0dUxtRnlaM01wS1M1bWFXeDBaWElvS0c5eVoxVnVhWFFwSUQwK0lHbGtjeTVvWVhNb2IzSm5WVzVwZEM1cFpDa3BPMXh1SUNCOVhHNWNiaUFnWVhONWJtTWdjbVZ1WVcxbFQzSm5WVzVwZENodmNtZFZibWwwU1dRNklITjBjbWx1Wnl3Z2JtRnRaVG9nYzNSeWFXNW5MQ0F1TGk1aGNtZHpPaUJoYm5sYlhTazZJRkJ5YjIxcGMyVThUM0puVlc1cGRENGdlMXh1SUNBZ0lHTnZibk4wSUdWNGFYTjBhVzVuSUQwZ1lYZGhhWFFnZEdocGN5NW5aWFJDZVVsa0tHOXlaMVZ1YVhSSlpDd2dMaTR1WVhKbmN5azdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkWEJrWVhSbFQyNWxLRnh1SUNBZ0lDQWdiM0puVlc1cGRFbGtMRnh1SUNBZ0lDQWdleUJ1WVcxbExDQndZWFJvT2lCMGFHbHpMbTl5WjFWdWFYUlFZWFJvS0dWNGFYTjBhVzVuTG5CaGRHZ3VhVzVqYkhWa1pYTW9YQ0l2WENJcElEOGdaWGhwYzNScGJtY3VjR0YwYUM1eVpYQnNZV05sS0M5Y1hDOWJYaTlkS3lRdkxDQmNJbHdpS1NBNklIVnVaR1ZtYVc1bFpDd2dibUZ0WlNrZ2ZTeGNiaUFnSUNBZ0lDNHVMbUZ5WjNOY2JpQWdJQ0FwTzF4dUlDQjlYRzVjYmlBZ1FIUnlZVzV6WVdOMGFXOXVZV3dvS1Z4dUlDQmhjM2x1WXlCdGIzWmxUM0puVlc1cGRDaGNiaUFnSUNCMFpXNWhiblJKWkRvZ2MzUnlhVzVuTEZ4dUlDQWdJRzl5WjFWdWFYUkpaRG9nYzNSeWFXNW5MRnh1SUNBZ0lHNWxkMUJoY21WdWRFOXlaMVZ1YVhSSlpEb2djM1J5YVc1bkxGeHVJQ0FnSUM0dUxtRnlaM002SUdGdWVWdGRYRzRnSUNrNklGQnliMjFwYzJVOFQzSm5WVzVwZEQ0Z2UxeHVJQ0FnSUdOdmJuTjBJRzVsZDFCaGNtVnVkQ0E5SUdGM1lXbDBJSFJvYVhNdVoyVjBRbmxKWkNodVpYZFFZWEpsYm5SUGNtZFZibWwwU1dRc0lDNHVMbUZ5WjNNcE8xeHVJQ0FnSUdOdmJuTjBJR1Y0YVhOMGFXNW5JRDBnWVhkaGFYUWdkR2hwY3k1blpYUkNlVWxrS0c5eVoxVnVhWFJKWkN3Z0xpNHVZWEpuY3lrN1hHNGdJQ0FnWTI5dWMzUWdkWEJrWVhSbFpDQTlJR0YzWVdsMElIUm9hWE11ZFhCa1lYUmxUMjVsS0Z4dUlDQWdJQ0FnYjNKblZXNXBkRWxrTEZ4dUlDQWdJQ0FnZTF4dUlDQWdJQ0FnSUNCd1lYSmxiblE2SUc1bGQxQmhjbVZ1ZEM1cFpDeGNiaUFnSUNBZ0lDQWdjR0YwYURvZ2RHaHBjeTV2Y21kVmJtbDBVR0YwYUNodVpYZFFZWEpsYm5RdWNHRjBhQ3dnWlhocGMzUnBibWN1Ym1GdFpTa3NYRzRnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdMaTR1WVhKbmMxeHVJQ0FnSUNrN1hHNGdJQ0FnWVhkaGFYUWdkR2hwY3k1eVpXSjFhV3hrVkdWdVlXNTBRMnh2YzNWeVpTaDBaVzVoYm5SSlpDd2dMaTR1WVhKbmN5azdYRzRnSUNBZ2NtVjBkWEp1SUhWd1pHRjBaV1E3WEc0Z0lIMWNibHh1SUNCQWRISmhibk5oWTNScGIyNWhiQ2dwWEc0Z0lHRnplVzVqSUhKbFluVnBiR1JVWlc1aGJuUkRiRzl6ZFhKbEtIUmxibUZ1ZEVsa09pQnpkSEpwYm1jc0lDNHVMbUZ5WjNNNklHRnVlVnRkS1RvZ1VISnZiV2x6WlR4MmIybGtQaUI3WEc0Z0lDQWdZMjl1YzNRZ1kyeHZjM1Z5WlZObGNuWnBZMlVnUFNCdVpYY2dUM0puVlc1cGRFTnNiM04xY21WVFpYSjJhV05sS0NrN1hHNGdJQ0FnWTI5dWMzUWdaWGhwYzNScGJtZE1hVzVyY3lBOUlHRjNZV2wwSUdOc2IzTjFjbVZUWlhKMmFXTmxMbXhwYzNSQmJHd29MaTR1WVhKbmN5azdYRzRnSUNBZ1lYZGhhWFFnWkdWc1pYUmxVbTkzYzBKNVNXUW9YRzRnSUNBZ0lDQmpiRzl6ZFhKbFUyVnlkbWxqWlN4Y2JpQWdJQ0FnSUdWNGFYTjBhVzVuVEdsdWEzTXVabWxzZEdWeUtDaHliM2NwSUQwK0lITmhiV1ZVWlc1aGJuUW9jbTkzTG5SbGJtRnVkQ3dnZEdWdVlXNTBTV1FwS1N4Y2JpQWdJQ0FnSUM0dUxtRnlaM05jYmlBZ0lDQXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2IzSm5WVzVwZEhNZ1BTQW9ZWGRoYVhRZ2RHaHBjeTVzYVhOMFZHVnVZVzUwVDNKblZXNXBkSE1vZEdWdVlXNTBTV1FzSUM0dUxtRnlaM01wS1M1emIzSjBLQ2hzWldaMExDQnlhV2RvZENrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2JHVm1kRVJsY0hSb0lEMGdiR1ZtZEM1d1lYUm9Mbk53YkdsMEtGd2lMMXdpS1M1bWFXeDBaWElvUW05dmJHVmhiaWt1YkdWdVozUm9PMXh1SUNBZ0lDQWdZMjl1YzNRZ2NtbG5hSFJFWlhCMGFDQTlJSEpwWjJoMExuQmhkR2d1YzNCc2FYUW9YQ0l2WENJcExtWnBiSFJsY2loQ2IyOXNaV0Z1S1M1c1pXNW5kR2c3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiR1ZtZEVSbGNIUm9JQzBnY21sbmFIUkVaWEIwYUR0Y2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2IzSm5WVzVwZENCdlppQnZjbWRWYm1sMGN5a2dlMXh1SUNBZ0lDQWdZWGRoYVhRZ1kyeHZjM1Z5WlZObGNuWnBZMlV1WTNKbFlYUmxVMlZzWmt4cGJtc29kR1Z1WVc1MFNXUXNJRzl5WjFWdWFYUXVhV1FzSUM0dUxtRnlaM01wTzF4dUlDQWdJQ0FnYVdZZ0tHOXlaMVZ1YVhRdWNHRnlaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lHRjNZV2wwSUdOc2IzTjFjbVZUWlhKMmFXTmxMbWx1YzJWeWRFRnVZMlZ6ZEc5eVRHbHVhM05HYjNKT1pYZERhR2xzWkNoY2JpQWdJQ0FnSUNBZ0lDQjBaVzVoYm5SSlpDeGNiaUFnSUNBZ0lDQWdJQ0J5Wld4aGRHbHZia2xrS0c5eVoxVnVhWFF1Y0dGeVpXNTBLU3hjYmlBZ0lDQWdJQ0FnSUNCdmNtZFZibWwwTG1sa0xGeHVJQ0FnSUNBZ0lDQWdJQzR1TG1GeVozTmNiaUFnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0JBZEhKaGJuTmhZM1JwYjI1aGJDZ3BYRzRnSUdGemVXNWpJR1JsYkdWMFpVOXlaMVZ1YVhSVWNtVmxLSFJsYm1GdWRFbGtPaUJ6ZEhKcGJtY3NJRzl5WjFWdWFYUkpaRG9nYzNSeWFXNW5MQ0F1TGk1aGNtZHpPaUJoYm5sYlhTazZJRkJ5YjIxcGMyVThkbTlwWkQ0Z2UxeHVJQ0FnSUdOdmJuTjBJR05zYjNOMWNtVlRaWEoyYVdObElEMGdibVYzSUU5eVoxVnVhWFJEYkc5emRYSmxVMlZ5ZG1salpTZ3BPMXh1SUNBZ0lHTnZibk4wSUdSbGMyTmxibVJoYm5SeklEMGdZWGRoYVhRZ2RHaHBjeTVzYVhOMFJHVnpZMlZ1WkdGdWRFOXlaMVZ1YVhSektIUmxibUZ1ZEVsa0xDQnZjbWRWYm1sMFNXUXNJSFJ5ZFdVc0lDNHVMbUZ5WjNNcE8xeHVJQ0FnSUdOdmJuTjBJR1JsYzJObGJtUmhiblJKWkhNZ1BTQnVaWGNnVTJWMEtHUmxjMk5sYm1SaGJuUnpMbTFoY0Nnb2IzSm5WVzVwZENrZ1BUNGdiM0puVlc1cGRDNXBaQ2twTzF4dUlDQWdJR052Ym5OMElHOXlaMVZ1YVhSeklEMGdLR0YzWVdsMElIUm9hWE11YkdsemRGUmxibUZ1ZEU5eVoxVnVhWFJ6S0hSbGJtRnVkRWxrTENBdUxpNWhjbWR6S1NrdVptbHNkR1Z5S0NodmNtZFZibWwwS1NBOVBseHVJQ0FnSUNBZ1pHVnpZMlZ1WkdGdWRFbGtjeTVvWVhNb2IzSm5WVzVwZEM1cFpDbGNiaUFnSUNBcE8xeHVJQ0FnSUdGM1lXbDBJR1JsYkdWMFpWSnZkM05DZVVsa0tIUm9hWE1zSUc5eVoxVnVhWFJ6TENBdUxpNWhjbWR6S1R0Y2JpQWdJQ0JoZDJGcGRDQmpiRzl6ZFhKbFUyVnlkbWxqWlM1a1pXeGxkR1ZNYVc1cmMwWnZjbE4xWW5SeVpXVW9kR1Z1WVc1MFNXUXNJRzl5WjFWdWFYUkpaQ3dnTGk0dVlYSm5jeWs3WEc0Z0lIMWNibjFjYmlKZGZRPT0iXX0=
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PermissionService = void 0;
4
+ const utils_js_1 = require("./../utils.cjs");
5
+ const permission_model_1 = require("../models/permission.model");
6
+ class PermissionService extends utils_js_1.BaseModelService {
7
+ constructor() {
8
+ super(permission_model_1.Permission);
9
+ }
10
+ async createPermission(input, ...args) {
11
+ return this.create({
12
+ key: input.key,
13
+ category: input.category,
14
+ description: input.description,
15
+ }, ...args);
16
+ }
17
+ async getByKey(key, ...args) {
18
+ return (await this.listAll(...args)).find((permission) => permission.key === key);
19
+ }
20
+ async listByCategory(category, ...args) {
21
+ return (await this.listAll(...args)).filter((permission) => permission.category === category);
22
+ }
23
+ async updateDescription(permissionId, description, ...args) {
24
+ return this.updateOne(permissionId, { description }, ...args);
25
+ }
26
+ }
27
+ exports.PermissionService = PermissionService;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbWVzcGFjZXMvc2VydmljZXMvcGVybWlzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxzQkFBaUI7QUFFNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXhELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxnQkFBNEI7SUFDakU7UUFDRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUE0QixFQUFFLEdBQUcsSUFBVztRQUNqRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQ2hCO1lBQ0UsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1lBQ2QsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztTQUMvQixFQUNELEdBQUcsSUFBSSxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFXLEVBQUUsR0FBRyxJQUFXO1FBQ3hDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQWUsQ0FBQztJQUNsRyxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUE0QixFQUFFLEdBQUcsSUFBVztRQUMvRCxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxZQUFvQixFQUFFLFdBQStCLEVBQUUsR0FBRyxJQUFXO1FBQzNGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VNb2RlbFNlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IFBlcm1pc3Npb25DYXRlZ29yeSwgQ3JlYXRlUGVybWlzc2lvbklucHV0IH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBQZXJtaXNzaW9uIH0gZnJvbSBcIi4uL21vZGVscy9wZXJtaXNzaW9uLm1vZGVsXCI7XG5cbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8UGVybWlzc2lvbj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihQZXJtaXNzaW9uKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVBlcm1pc3Npb24oaW5wdXQ6IENyZWF0ZVBlcm1pc3Npb25JbnB1dCwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPFBlcm1pc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoXG4gICAgICB7XG4gICAgICAgIGtleTogaW5wdXQua2V5LFxuICAgICAgICBjYXRlZ29yeTogaW5wdXQuY2F0ZWdvcnksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBpbnB1dC5kZXNjcmlwdGlvbixcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldEJ5S2V5KGtleTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8UGVybWlzc2lvbj4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maW5kKChwZXJtaXNzaW9uKSA9PiBwZXJtaXNzaW9uLmtleSA9PT0ga2V5KSBhcyBQZXJtaXNzaW9uO1xuICB9XG5cbiAgYXN5bmMgbGlzdEJ5Q2F0ZWdvcnkoY2F0ZWdvcnk6IFBlcm1pc3Npb25DYXRlZ29yeSwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPFBlcm1pc3Npb25bXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHBlcm1pc3Npb24pID0+IHBlcm1pc3Npb24uY2F0ZWdvcnkgPT09IGNhdGVnb3J5KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZURlc2NyaXB0aW9uKHBlcm1pc3Npb25JZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8UGVybWlzc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZShwZXJtaXNzaW9uSWQsIHsgZGVzY3JpcHRpb24gfSwgLi4uYXJncyk7XG4gIH1cbn1cbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicGVybWlzc2lvbi5zZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRDQUFpRDtBQUNqRCxpRUFBd0Q7QUFDeEQsTUFBYSxpQkFBa0IsU0FBUSwyQkFBZ0I7SUFDbkQ7UUFDSSxLQUFLLENBQUMsNkJBQVUsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSTtRQUNqQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDZixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1NBQ2pDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBQ0QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJO1FBQ3ZCLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBQ0QsS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJO1FBQ2xDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBQ0QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJO1FBQ3RELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDSjtBQXBCRCw4Q0FvQkM7QUFDRCxrK0ZBQWsrRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VNb2RlbFNlcnZpY2UgfSBmcm9tIFwiLi8uLi91dGlscy5qc1wiO1xuaW1wb3J0IHsgUGVybWlzc2lvbiB9IGZyb20gXCIuLi9tb2RlbHMvcGVybWlzc2lvbi5tb2RlbFwiO1xuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25TZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFBlcm1pc3Npb24pO1xuICAgIH1cbiAgICBhc3luYyBjcmVhdGVQZXJtaXNzaW9uKGlucHV0LCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZSh7XG4gICAgICAgICAgICBrZXk6IGlucHV0LmtleSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBpbnB1dC5jYXRlZ29yeSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbnB1dC5kZXNjcmlwdGlvbixcbiAgICAgICAgfSwgLi4uYXJncyk7XG4gICAgfVxuICAgIGFzeW5jIGdldEJ5S2V5KGtleSwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmluZCgocGVybWlzc2lvbikgPT4gcGVybWlzc2lvbi5rZXkgPT09IGtleSk7XG4gICAgfVxuICAgIGFzeW5jIGxpc3RCeUNhdGVnb3J5KGNhdGVnb3J5LCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHBlcm1pc3Npb24pID0+IHBlcm1pc3Npb24uY2F0ZWdvcnkgPT09IGNhdGVnb3J5KTtcbiAgICB9XG4gICAgYXN5bmMgdXBkYXRlRGVzY3JpcHRpb24ocGVybWlzc2lvbklkLCBkZXNjcmlwdGlvbiwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVPbmUocGVybWlzc2lvbklkLCB7IGRlc2NyaXB0aW9uIH0sIC4uLmFyZ3MpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNHVnliV2x6YzJsdmJpNXpaWEoyYVdObExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZMaTR2TGk0dmMzSmpMMjVoYldWemNHRmpaWE12YzJWeWRtbGpaWE12Y0dWeWJXbHpjMmx2Ymk1elpYSjJhV05sTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRTlCUVU4c1JVRkJSU3huUWtGQlowSXNSVUZCUlN4elFrRkJhVUk3UVVGRk5VTXNUMEZCVHl4RlFVRkZMRlZCUVZVc1JVRkJSU3hOUVVGTkxEUkNRVUUwUWl4RFFVRkRPMEZCUlhoRUxFMUJRVTBzVDBGQlR5eHBRa0ZCYTBJc1UwRkJVU3huUWtGQk5FSTdTVUZEYWtVN1VVRkRSU3hMUVVGTExFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdTVUZEY0VJc1EwRkJRenRKUVVWRUxFdEJRVXNzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhMUVVFMFFpeEZRVUZGTEVkQlFVY3NTVUZCVnp0UlFVTnFSU3hQUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlEyaENPMWxCUTBVc1IwRkJSeXhGUVVGRkxFdEJRVXNzUTBGQlF5eEhRVUZITzFsQlEyUXNVVUZCVVN4RlFVRkZMRXRCUVVzc1EwRkJReXhSUVVGUk8xbEJRM2hDTEZkQlFWY3NSVUZCUlN4TFFVRkxMRU5CUVVNc1YwRkJWenRUUVVNdlFpeEZRVU5FTEVkQlFVY3NTVUZCU1N4RFFVTlNMRU5CUVVNN1NVRkRTaXhEUVVGRE8wbEJSVVFzUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRlhMRVZCUVVVc1IwRkJSeXhKUVVGWE8xRkJRM2hETEU5QlFVOHNRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExGVkJRVlVzUlVGQlJTeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExFTkJRV1VzUTBGQlF6dEpRVU5zUnl4RFFVRkRPMGxCUlVRc1MwRkJTeXhEUVVGRExHTkJRV01zUTBGQlF5eFJRVUUwUWl4RlFVRkZMRWRCUVVjc1NVRkJWenRSUVVNdlJDeFBRVUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEZWQlFWVXNRMEZCUXl4UlFVRlJMRXRCUVVzc1VVRkJVU3hEUVVGRExFTkJRVU03U1VGRGFFY3NRMEZCUXp0SlFVVkVMRXRCUVVzc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4WlFVRnZRaXhGUVVGRkxGZEJRU3RDTEVWQlFVVXNSMEZCUnl4SlFVRlhPMUZCUXpOR0xFOUJRVThzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4WlFVRlpMRVZCUVVVc1JVRkJSU3hYUVVGWExFVkJRVVVzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUTJoRkxFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdJRUpoYzJWTmIyUmxiRk5sY25acFkyVWdmU0JtY205dElGd2lMaTR2ZFhScGJITmNJanRjYm1sdGNHOXlkQ0I3SUZCbGNtMXBjM05wYjI1RFlYUmxaMjl5ZVN3Z1EzSmxZWFJsVUdWeWJXbHpjMmx2YmtsdWNIVjBJSDBnWm5KdmJTQmNJaTR1TDNSNWNHVnpYQ0k3WEc1cGJYQnZjblFnZXlCUVpYSnRhWE56YVc5dUlIMGdabkp2YlNCY0lpNHVMMjF2WkdWc2N5OXdaWEp0YVhOemFXOXVMbTF2WkdWc1hDSTdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlFaWEp0YVhOemFXOXVVMlZ5ZG1salpTQmxlSFJsYm1SeklFSmhjMlZOYjJSbGJGTmxjblpwWTJVOFVHVnliV2x6YzJsdmJqNGdlMXh1SUNCamIyNXpkSEoxWTNSdmNpZ3BJSHRjYmlBZ0lDQnpkWEJsY2loUVpYSnRhWE56YVc5dUtUdGNiaUFnZlZ4dVhHNGdJR0Z6ZVc1aklHTnlaV0YwWlZCbGNtMXBjM05wYjI0b2FXNXdkWFE2SUVOeVpXRjBaVkJsY20xcGMzTnBiMjVKYm5CMWRDd2dMaTR1WVhKbmN6b2dZVzU1VzEwcE9pQlFjbTl0YVhObFBGQmxjbTFwYzNOcGIyNCtJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVqY21WaGRHVW9YRzRnSUNBZ0lDQjdYRzRnSUNBZ0lDQWdJR3RsZVRvZ2FXNXdkWFF1YTJWNUxGeHVJQ0FnSUNBZ0lDQmpZWFJsWjI5eWVUb2dhVzV3ZFhRdVkyRjBaV2R2Y25rc1hHNGdJQ0FnSUNBZ0lHUmxjMk55YVhCMGFXOXVPaUJwYm5CMWRDNWtaWE5qY21sd2RHbHZiaXhjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0F1TGk1aGNtZHpYRzRnSUNBZ0tUdGNiaUFnZlZ4dVhHNGdJR0Z6ZVc1aklHZGxkRUo1UzJWNUtHdGxlVG9nYzNSeWFXNW5MQ0F1TGk1aGNtZHpPaUJoYm5sYlhTazZJRkJ5YjIxcGMyVThVR1Z5YldsemMybHZiajRnZTF4dUlDQWdJSEpsZEhWeWJpQW9ZWGRoYVhRZ2RHaHBjeTVzYVhOMFFXeHNLQzR1TG1GeVozTXBLUzVtYVc1a0tDaHdaWEp0YVhOemFXOXVLU0E5UGlCd1pYSnRhWE56YVc5dUxtdGxlU0E5UFQwZ2EyVjVLU0JoY3lCUVpYSnRhWE56YVc5dU8xeHVJQ0I5WEc1Y2JpQWdZWE41Ym1NZ2JHbHpkRUo1UTJGMFpXZHZjbmtvWTJGMFpXZHZjbms2SUZCbGNtMXBjM05wYjI1RFlYUmxaMjl5ZVN3Z0xpNHVZWEpuY3pvZ1lXNTVXMTBwT2lCUWNtOXRhWE5sUEZCbGNtMXBjM05wYjI1YlhUNGdlMXh1SUNBZ0lISmxkSFZ5YmlBb1lYZGhhWFFnZEdocGN5NXNhWE4wUVd4c0tDNHVMbUZ5WjNNcEtTNW1hV3gwWlhJb0tIQmxjbTFwYzNOcGIyNHBJRDArSUhCbGNtMXBjM05wYjI0dVkyRjBaV2R2Y25rZ1BUMDlJR05oZEdWbmIzSjVLVHRjYmlBZ2ZWeHVYRzRnSUdGemVXNWpJSFZ3WkdGMFpVUmxjMk55YVhCMGFXOXVLSEJsY20xcGMzTnBiMjVKWkRvZ2MzUnlhVzVuTENCa1pYTmpjbWx3ZEdsdmJqb2djM1J5YVc1bklId2dkVzVrWldacGJtVmtMQ0F1TGk1aGNtZHpPaUJoYm5sYlhTazZJRkJ5YjIxcGMyVThVR1Z5YldsemMybHZiajRnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5Wd1pHRjBaVTl1WlNod1pYSnRhWE56YVc5dVNXUXNJSHNnWkdWelkzSnBjSFJwYjI0Z2ZTd2dMaTR1WVhKbmN5azdYRzRnSUgxY2JuMWNiaUpkZlE9PSJdfQ==