@decaf-ts/integrations 0.3.6 → 0.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/integrations.cjs +1649 -2
- package/dist/integrations.js +1885 -2
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/azure/index.cjs +2 -2
- package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
- package/lib/cjs/blob/core/BlobKey.cjs +2 -2
- package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
- package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
- package/lib/cjs/blob/core/BlobValue.cjs +2 -2
- package/lib/cjs/blob/core/index.cjs +2 -2
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/gcp/index.cjs +2 -2
- package/lib/cjs/blob/index.cjs +2 -2
- package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/index.cjs +2 -2
- package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/local/index.cjs +2 -2
- package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/memory/index.cjs +2 -2
- package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/index.cjs +2 -2
- package/lib/cjs/docker/DockerComposeService.cjs +2 -2
- package/lib/cjs/docker/index.cjs +2 -2
- package/lib/cjs/graph/constants.cjs +2 -2
- package/lib/cjs/graph/decorators.cjs +2 -2
- package/lib/cjs/graph/errors/GraphCycleError.cjs +2 -2
- package/lib/cjs/graph/errors/GraphExecutionError.cjs +2 -2
- package/lib/cjs/graph/errors/GraphInputError.cjs +2 -2
- package/lib/cjs/graph/errors/GraphLoopLimitError.cjs +2 -2
- package/lib/cjs/graph/errors/GraphPinningError.cjs +2 -2
- package/lib/cjs/graph/errors/GraphPortError.cjs +2 -2
- package/lib/cjs/graph/errors/GraphStoreError.cjs +2 -2
- package/lib/cjs/graph/errors/GraphTopologyError.cjs +2 -2
- package/lib/cjs/graph/errors/index.cjs +2 -2
- package/lib/cjs/graph/events/GraphExecutionEvent.cjs +2 -2
- package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs +2 -2
- package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs +2 -2
- package/lib/cjs/graph/events/GraphExecutionObserver.cjs +2 -2
- package/lib/cjs/graph/events/index.cjs +2 -2
- package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs +2 -2
- package/lib/cjs/graph/execution/GraphExecutionContext.cjs +2 -2
- package/lib/cjs/graph/execution/GraphExecutionEngine.cjs +2 -2
- package/lib/cjs/graph/execution/GraphExecutionFrame.cjs +2 -2
- package/lib/cjs/graph/execution/GraphExecutionResult.cjs +2 -2
- package/lib/cjs/graph/execution/GraphNodeExecutor.cjs +2 -2
- package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +2 -2
- package/lib/cjs/graph/execution/index.cjs +2 -2
- package/lib/cjs/graph/index.cjs +2 -2
- package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs +2 -2
- package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs +2 -2
- package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs +2 -2
- package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs +2 -2
- package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs +2 -2
- package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs +2 -2
- package/lib/cjs/graph/loops/index.cjs +2 -2
- package/lib/cjs/graph/nodes/agent.cjs +2 -2
- package/lib/cjs/graph/nodes/base.cjs +35 -0
- package/lib/cjs/graph/nodes/category-styles.cjs +2 -2
- package/lib/cjs/graph/nodes/flow-control.cjs +31 -3
- package/lib/cjs/graph/nodes/index.cjs +3 -2
- package/lib/cjs/graph/nodes/triggers.cjs +2 -2
- package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs +2 -2
- package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs +2 -2
- package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs +2 -2
- package/lib/cjs/graph/pinning/GraphPinningService.cjs +2 -2
- package/lib/cjs/graph/pinning/index.cjs +2 -2
- package/lib/cjs/graph/planning/GraphExecutionPlan.cjs +2 -2
- package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs +2 -2
- package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs +2 -2
- package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs +2 -2
- package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs +2 -2
- package/lib/cjs/graph/planning/GraphRelationResolver.cjs +2 -2
- package/lib/cjs/graph/planning/GraphTopology.cjs +2 -2
- package/lib/cjs/graph/planning/index.cjs +2 -2
- package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs +2 -2
- package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs +2 -2
- package/lib/cjs/graph/registry/index.cjs +2 -2
- package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs +2 -2
- package/lib/cjs/graph/snapshots/index.cjs +2 -2
- package/lib/cjs/graph/store/GraphCachedValue.cjs +2 -2
- package/lib/cjs/graph/store/GraphValueKey.cjs +2 -2
- package/lib/cjs/graph/store/GraphValueStore.cjs +2 -2
- package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs +2 -2
- package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs +2 -2
- package/lib/cjs/graph/store/index.cjs +2 -2
- package/lib/cjs/graph/types.cjs +2 -2
- package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs +2 -2
- package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs +2 -2
- package/lib/cjs/graph/validation/GraphValueValidator.cjs +2 -2
- package/lib/cjs/graph/validation/index.cjs +2 -2
- package/lib/cjs/index.cjs +6 -5
- package/lib/cjs/keycloak/index.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
- package/lib/cjs/keycloak/services/index.cjs +2 -2
- package/lib/cjs/keycloak/services/runtime.cjs +2 -2
- package/lib/cjs/keycloak/types.cjs +2 -2
- package/lib/cjs/kibana/helpers.cjs +2 -2
- package/lib/cjs/kibana/index.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
- package/lib/cjs/kibana/services/index.cjs +2 -2
- package/lib/cjs/kibana/services/runtime.cjs +2 -2
- package/lib/cjs/kibana/types.cjs +2 -2
- package/lib/cjs/namespaces/index.cjs +26 -0
- package/lib/cjs/namespaces/models/authorization-model.cjs +12 -0
- package/lib/cjs/namespaces/models/effective-permission.model.cjs +95 -0
- package/lib/cjs/namespaces/models/group-membership.model.cjs +66 -0
- package/lib/cjs/namespaces/models/group.model.cjs +74 -0
- package/lib/cjs/namespaces/models/index.cjs +39 -0
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs +76 -0
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +66 -0
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +73 -0
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +64 -0
- package/lib/cjs/namespaces/models/org-unit.model.cjs +102 -0
- package/lib/cjs/namespaces/models/permission.model.cjs +64 -0
- package/lib/cjs/namespaces/models/principal.model.cjs +77 -0
- package/lib/cjs/namespaces/models/protected-resource.model.cjs +99 -0
- package/lib/cjs/namespaces/models/resource-grant.model.cjs +88 -0
- package/lib/cjs/namespaces/models/role-assignment.model.cjs +98 -0
- package/lib/cjs/namespaces/models/role-permission.model.cjs +55 -0
- package/lib/cjs/namespaces/models/role.model.cjs +84 -0
- package/lib/cjs/namespaces/models/storage-binding.model.cjs +85 -0
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs +67 -0
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs +64 -0
- package/lib/cjs/namespaces/models/tenant.model.cjs +88 -0
- package/lib/cjs/namespaces/models/user.model.cjs +75 -0
- package/lib/cjs/namespaces/org-based-authorization-system.cjs +286 -0
- package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +968 -0
- package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +1046 -0
- package/lib/cjs/namespaces/services/authz.service.cjs +76 -0
- package/lib/cjs/namespaces/services/bootstrap.service.cjs +112 -0
- package/lib/cjs/namespaces/services/effective-permission.service.cjs +150 -0
- package/lib/cjs/namespaces/services/group-membership.service.cjs +42 -0
- package/lib/cjs/namespaces/services/group.service.cjs +30 -0
- package/lib/cjs/namespaces/services/index.cjs +42 -0
- package/lib/cjs/namespaces/services/inheritance-block.service.cjs +32 -0
- package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +55 -0
- package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +34 -0
- package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +23 -0
- package/lib/cjs/namespaces/services/org-unit.service.cjs +160 -0
- package/lib/cjs/namespaces/services/permission.service.cjs +29 -0
- package/lib/cjs/namespaces/services/principal.service.cjs +35 -0
- package/lib/cjs/namespaces/services/protected-resource.service.cjs +43 -0
- package/lib/cjs/namespaces/services/resource-grant.service.cjs +45 -0
- package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +24 -0
- package/lib/cjs/namespaces/services/role-assignment.service.cjs +41 -0
- package/lib/cjs/namespaces/services/role-permission.service.cjs +51 -0
- package/lib/cjs/namespaces/services/role.service.cjs +45 -0
- package/lib/cjs/namespaces/services/storage-binding.service.cjs +39 -0
- package/lib/cjs/namespaces/services/system-management.service.cjs +102 -0
- package/lib/cjs/namespaces/services/tenant-membership.service.cjs +33 -0
- package/lib/cjs/namespaces/services/tenant-profile.service.cjs +28 -0
- package/lib/cjs/namespaces/services/tenant.service.cjs +36 -0
- package/lib/cjs/namespaces/services/user.service.cjs +32 -0
- package/lib/cjs/namespaces/types.cjs +67 -0
- package/lib/cjs/namespaces/utils.cjs +161 -0
- package/lib/cjs/nest/authService.cjs +2 -2
- package/lib/cjs/nest/graph/GraphExecutionController.cjs +153 -0
- package/lib/cjs/nest/graph/GraphExecutionModule.cjs +84 -0
- package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +82 -0
- package/lib/cjs/nest/graph/GraphExecutionResultRepository.cjs +66 -0
- package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +35 -0
- package/lib/cjs/nest/graph/index.cjs +28 -0
- package/lib/cjs/nest/index.cjs +2 -2
- package/lib/cjs/nest/keycloakAuthHandler.cjs +2 -2
- package/lib/cjs/nest/keycloakModule.cjs +2 -2
- package/lib/cjs/nest/logging.cjs +2 -2
- package/lib/cjs/nest/types.cjs +2 -2
- package/lib/cjs/nest/utils.cjs +2 -2
- package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
- package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/aws/index.cjs +2 -2
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/azure/index.cjs +2 -2
- package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
- package/lib/cjs/secrets/core/SecretName.cjs +2 -2
- package/lib/cjs/secrets/core/SecretReference.cjs +2 -2
- package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
- package/lib/cjs/secrets/core/SecretService.cjs +2 -2
- package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
- package/lib/cjs/secrets/core/index.cjs +2 -2
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
- package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/gcp/index.cjs +2 -2
- package/lib/cjs/secrets/index.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/model/Secret.cjs +2 -2
- package/lib/cjs/secrets/model/index.cjs +2 -2
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
- package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/onepassword/index.cjs +2 -2
- package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
- package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/vault/index.cjs +2 -2
- package/lib/cjs/shared/runtime.cjs +2 -2
- package/lib/cjs/utils.cjs +2 -2
- package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
- package/lib/esm/blob/azure/index.js +1 -1
- package/lib/esm/blob/core/BlobErrors.js +1 -1
- package/lib/esm/blob/core/BlobKey.js +1 -1
- package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
- package/lib/esm/blob/core/BlobStoreService.js +1 -1
- package/lib/esm/blob/core/BlobTypes.js +1 -1
- package/lib/esm/blob/core/BlobValue.js +1 -1
- package/lib/esm/blob/core/index.js +1 -1
- package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
- package/lib/esm/blob/gcp/index.js +1 -1
- package/lib/esm/blob/index.js +1 -1
- package/lib/esm/blob/ipfs/IpfsBlobStoreService.js +1 -1
- package/lib/esm/blob/ipfs/IpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/index.js +1 -1
- package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
- package/lib/esm/blob/local/index.js +1 -1
- package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
- package/lib/esm/blob/memory/index.js +1 -1
- package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
- package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
- package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
- package/lib/esm/blob/s3/index.js +1 -1
- package/lib/esm/docker/DockerComposeService.js +1 -1
- package/lib/esm/docker/index.js +1 -1
- package/lib/esm/graph/constants.js +1 -1
- package/lib/esm/graph/decorators.js +1 -1
- package/lib/esm/graph/errors/GraphCycleError.js +1 -1
- package/lib/esm/graph/errors/GraphExecutionError.js +1 -1
- package/lib/esm/graph/errors/GraphInputError.js +1 -1
- package/lib/esm/graph/errors/GraphLoopLimitError.js +1 -1
- package/lib/esm/graph/errors/GraphPinningError.js +1 -1
- package/lib/esm/graph/errors/GraphPortError.js +1 -1
- package/lib/esm/graph/errors/GraphStoreError.js +1 -1
- package/lib/esm/graph/errors/GraphTopologyError.js +1 -1
- package/lib/esm/graph/errors/index.js +1 -1
- package/lib/esm/graph/events/GraphExecutionEvent.js +1 -1
- package/lib/esm/graph/events/GraphExecutionEventEmitter.js +1 -1
- package/lib/esm/graph/events/GraphExecutionEventFactory.js +1 -1
- package/lib/esm/graph/events/GraphExecutionObserver.js +1 -1
- package/lib/esm/graph/events/index.js +1 -1
- package/lib/esm/graph/execution/CodeSandboxEvaluator.js +1 -1
- package/lib/esm/graph/execution/GraphExecutionContext.js +1 -1
- package/lib/esm/graph/execution/GraphExecutionEngine.js +1 -1
- package/lib/esm/graph/execution/GraphExecutionFrame.js +1 -1
- package/lib/esm/graph/execution/GraphExecutionResult.js +1 -1
- package/lib/esm/graph/execution/GraphNodeExecutor.js +1 -1
- package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +1 -1
- package/lib/esm/graph/execution/index.js +1 -1
- package/lib/esm/graph/index.js +1 -1
- package/lib/esm/graph/loops/ConditionExpressionEvaluator.js +1 -1
- package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js +1 -1
- package/lib/esm/graph/loops/GraphConditionEvaluator.js +1 -1
- package/lib/esm/graph/loops/GraphLoopExecutionContext.js +1 -1
- package/lib/esm/graph/loops/UntilGraphNodeExecutor.js +1 -1
- package/lib/esm/graph/loops/WhileGraphNodeExecutor.js +1 -1
- package/lib/esm/graph/loops/index.js +1 -1
- package/lib/esm/graph/nodes/agent.js +1 -1
- package/lib/esm/graph/nodes/base.js +30 -0
- package/lib/esm/graph/nodes/category-styles.js +1 -1
- package/lib/esm/graph/nodes/flow-control.js +31 -3
- package/lib/esm/graph/nodes/index.js +2 -1
- package/lib/esm/graph/nodes/triggers.js +1 -1
- package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js +1 -1
- package/lib/esm/graph/pinning/GraphPinningMetadata.js +1 -1
- package/lib/esm/graph/pinning/GraphPinningPolicy.js +1 -1
- package/lib/esm/graph/pinning/GraphPinningService.js +1 -1
- package/lib/esm/graph/pinning/index.js +1 -1
- package/lib/esm/graph/planning/GraphExecutionPlan.js +1 -1
- package/lib/esm/graph/planning/GraphExecutionPlanEdge.js +1 -1
- package/lib/esm/graph/planning/GraphExecutionPlanLayer.js +1 -1
- package/lib/esm/graph/planning/GraphExecutionPlanNode.js +1 -1
- package/lib/esm/graph/planning/GraphExecutionPlanner.js +1 -1
- package/lib/esm/graph/planning/GraphRelationResolver.js +1 -1
- package/lib/esm/graph/planning/GraphTopology.js +1 -1
- package/lib/esm/graph/planning/index.js +1 -1
- package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js +1 -1
- package/lib/esm/graph/registry/GraphNodeExecutorResolver.js +1 -1
- package/lib/esm/graph/registry/index.js +1 -1
- package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js +1 -1
- package/lib/esm/graph/snapshots/index.js +1 -1
- package/lib/esm/graph/store/GraphCachedValue.js +1 -1
- package/lib/esm/graph/store/GraphValueKey.js +1 -1
- package/lib/esm/graph/store/GraphValueStore.js +1 -1
- package/lib/esm/graph/store/GraphValueStoreAdapter.js +1 -1
- package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js +1 -1
- package/lib/esm/graph/store/index.js +1 -1
- package/lib/esm/graph/types.js +1 -1
- package/lib/esm/graph/validation/GraphDefinitionValidator.js +1 -1
- package/lib/esm/graph/validation/GraphPortSchemaResolver.js +1 -1
- package/lib/esm/graph/validation/GraphValueValidator.js +1 -1
- package/lib/esm/graph/validation/index.js +1 -1
- package/lib/esm/index.js +5 -4
- package/lib/esm/keycloak/index.js +1 -1
- package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
- package/lib/esm/keycloak/services/index.js +1 -1
- package/lib/esm/keycloak/services/runtime.js +1 -1
- package/lib/esm/keycloak/types.js +1 -1
- package/lib/esm/kibana/helpers.js +1 -1
- package/lib/esm/kibana/index.js +1 -1
- package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
- package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
- package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
- package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
- package/lib/esm/kibana/services/KibanaService.js +1 -1
- package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
- package/lib/esm/kibana/services/KibanaUserService.js +1 -1
- package/lib/esm/kibana/services/index.js +1 -1
- package/lib/esm/kibana/services/runtime.js +1 -1
- package/lib/esm/kibana/types.js +1 -1
- package/lib/esm/namespaces/index.js +9 -0
- package/lib/esm/namespaces/models/authorization-model.js +7 -0
- package/lib/esm/namespaces/models/effective-permission.model.js +86 -0
- package/lib/esm/namespaces/models/group-membership.model.js +57 -0
- package/lib/esm/namespaces/models/group.model.js +65 -0
- package/lib/esm/namespaces/models/index.js +22 -0
- package/lib/esm/namespaces/models/inheritance-block.model.js +67 -0
- package/lib/esm/namespaces/models/org-unit-closure.model.js +57 -0
- package/lib/esm/namespaces/models/org-unit-membership.model.js +64 -0
- package/lib/esm/namespaces/models/org-unit-profile.model.js +55 -0
- package/lib/esm/namespaces/models/org-unit.model.js +93 -0
- package/lib/esm/namespaces/models/permission.model.js +55 -0
- package/lib/esm/namespaces/models/principal.model.js +68 -0
- package/lib/esm/namespaces/models/protected-resource.model.js +90 -0
- package/lib/esm/namespaces/models/resource-grant.model.js +79 -0
- package/lib/esm/namespaces/models/role-assignment.model.js +89 -0
- package/lib/esm/namespaces/models/role-permission.model.js +46 -0
- package/lib/esm/namespaces/models/role.model.js +75 -0
- package/lib/esm/namespaces/models/storage-binding.model.js +76 -0
- package/lib/esm/namespaces/models/tenant-membership.model.js +58 -0
- package/lib/esm/namespaces/models/tenant-profile.model.js +55 -0
- package/lib/esm/namespaces/models/tenant.model.js +79 -0
- package/lib/esm/namespaces/models/user.model.js +66 -0
- package/lib/esm/namespaces/org-based-authorization-system.js +283 -0
- package/lib/esm/namespaces/org-based-authorization-system.models.js +958 -0
- package/lib/esm/namespaces/org-based-authorization-system.services.js +1014 -0
- package/lib/esm/namespaces/services/authz.service.js +71 -0
- package/lib/esm/namespaces/services/bootstrap.service.js +102 -0
- package/lib/esm/namespaces/services/effective-permission.service.js +140 -0
- package/lib/esm/namespaces/services/group-membership.service.js +37 -0
- package/lib/esm/namespaces/services/group.service.js +25 -0
- package/lib/esm/namespaces/services/index.js +25 -0
- package/lib/esm/namespaces/services/inheritance-block.service.js +27 -0
- package/lib/esm/namespaces/services/org-unit-closure.service.js +50 -0
- package/lib/esm/namespaces/services/org-unit-membership.service.js +29 -0
- package/lib/esm/namespaces/services/org-unit-profile.service.js +18 -0
- package/lib/esm/namespaces/services/org-unit.service.js +150 -0
- package/lib/esm/namespaces/services/permission.service.js +24 -0
- package/lib/esm/namespaces/services/principal.service.js +30 -0
- package/lib/esm/namespaces/services/protected-resource.service.js +38 -0
- package/lib/esm/namespaces/services/resource-grant.service.js +40 -0
- package/lib/esm/namespaces/services/resource-lifecycle.service.js +19 -0
- package/lib/esm/namespaces/services/role-assignment.service.js +36 -0
- package/lib/esm/namespaces/services/role-permission.service.js +46 -0
- package/lib/esm/namespaces/services/role.service.js +40 -0
- package/lib/esm/namespaces/services/storage-binding.service.js +34 -0
- package/lib/esm/namespaces/services/system-management.service.js +92 -0
- package/lib/esm/namespaces/services/tenant-membership.service.js +28 -0
- package/lib/esm/namespaces/services/tenant-profile.service.js +23 -0
- package/lib/esm/namespaces/services/tenant.service.js +31 -0
- package/lib/esm/namespaces/services/user.service.js +27 -0
- package/lib/esm/namespaces/types.js +71 -0
- package/lib/esm/namespaces/utils.js +143 -0
- package/lib/esm/nest/authService.js +1 -1
- package/lib/esm/nest/graph/GraphExecutionController.js +144 -0
- package/lib/esm/nest/graph/GraphExecutionModule.js +76 -0
- package/lib/esm/nest/graph/GraphExecutionResultModel.js +73 -0
- package/lib/esm/nest/graph/GraphExecutionResultRepository.js +60 -0
- package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +31 -0
- package/lib/esm/nest/graph/index.js +11 -0
- package/lib/esm/nest/index.js +1 -1
- package/lib/esm/nest/keycloakAuthHandler.js +1 -1
- package/lib/esm/nest/keycloakModule.js +1 -1
- package/lib/esm/nest/logging.js +1 -1
- package/lib/esm/nest/types.js +1 -1
- package/lib/esm/nest/utils.js +1 -1
- package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
- package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/aws/index.js +1 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/azure/index.js +1 -1
- package/lib/esm/secrets/core/SecretErrors.js +1 -1
- package/lib/esm/secrets/core/SecretName.js +1 -1
- package/lib/esm/secrets/core/SecretReference.js +1 -1
- package/lib/esm/secrets/core/SecretSerialization.js +1 -1
- package/lib/esm/secrets/core/SecretService.js +1 -1
- package/lib/esm/secrets/core/SecretTypes.js +1 -1
- package/lib/esm/secrets/core/index.js +1 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
- package/lib/esm/secrets/gcp/index.js +1 -1
- package/lib/esm/secrets/index.js +1 -1
- package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
- package/lib/esm/secrets/model/ModelSecretService.js +1 -1
- package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/model/Secret.js +1 -1
- package/lib/esm/secrets/model/index.js +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/onepassword/index.js +1 -1
- package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
- package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/vault/index.js +1 -1
- package/lib/esm/shared/runtime.js +1 -1
- package/lib/esm/utils.js +1 -1
- package/lib/types/graph/nodes/base.d.cts +28 -0
- package/lib/types/graph/nodes/base.d.mts +28 -0
- package/lib/types/graph/nodes/flow-control.d.cts +9 -1
- package/lib/types/graph/nodes/flow-control.d.mts +9 -1
- package/lib/types/graph/nodes/index.d.cts +1 -0
- package/lib/types/graph/nodes/index.d.mts +1 -0
- package/lib/types/graph/types.d.cts +15 -1
- package/lib/types/graph/types.d.mts +15 -1
- package/lib/types/index.d.cts +3 -2
- package/lib/types/index.d.mts +3 -2
- package/lib/types/namespaces/index.d.cts +8 -0
- package/lib/types/namespaces/index.d.mts +8 -0
- package/lib/types/namespaces/models/authorization-model.d.cts +4 -0
- package/lib/types/namespaces/models/authorization-model.d.mts +4 -0
- package/lib/types/namespaces/models/effective-permission.model.d.cts +18 -0
- package/lib/types/namespaces/models/effective-permission.model.d.mts +18 -0
- package/lib/types/namespaces/models/group-membership.model.d.cts +13 -0
- package/lib/types/namespaces/models/group-membership.model.d.mts +13 -0
- package/lib/types/namespaces/models/group.model.d.cts +15 -0
- package/lib/types/namespaces/models/group.model.d.mts +15 -0
- package/lib/types/namespaces/models/index.d.cts +21 -0
- package/lib/types/namespaces/models/index.d.mts +21 -0
- package/lib/types/namespaces/models/inheritance-block.model.d.cts +15 -0
- package/lib/types/namespaces/models/inheritance-block.model.d.mts +15 -0
- package/lib/types/namespaces/models/org-unit-closure.model.d.cts +12 -0
- package/lib/types/namespaces/models/org-unit-closure.model.d.mts +12 -0
- package/lib/types/namespaces/models/org-unit-membership.model.d.cts +15 -0
- package/lib/types/namespaces/models/org-unit-membership.model.d.mts +15 -0
- package/lib/types/namespaces/models/org-unit-profile.model.d.cts +11 -0
- package/lib/types/namespaces/models/org-unit-profile.model.d.mts +11 -0
- package/lib/types/namespaces/models/org-unit.model.d.cts +23 -0
- package/lib/types/namespaces/models/org-unit.model.d.mts +23 -0
- package/lib/types/namespaces/models/permission.model.d.cts +11 -0
- package/lib/types/namespaces/models/permission.model.d.mts +11 -0
- package/lib/types/namespaces/models/principal.model.d.cts +16 -0
- package/lib/types/namespaces/models/principal.model.d.mts +16 -0
- package/lib/types/namespaces/models/protected-resource.model.d.cts +21 -0
- package/lib/types/namespaces/models/protected-resource.model.d.mts +21 -0
- package/lib/types/namespaces/models/resource-grant.model.d.cts +18 -0
- package/lib/types/namespaces/models/resource-grant.model.d.mts +18 -0
- package/lib/types/namespaces/models/role-assignment.model.d.cts +20 -0
- package/lib/types/namespaces/models/role-assignment.model.d.mts +20 -0
- package/lib/types/namespaces/models/role-permission.model.d.cts +10 -0
- package/lib/types/namespaces/models/role-permission.model.d.mts +10 -0
- package/lib/types/namespaces/models/role.model.d.cts +17 -0
- package/lib/types/namespaces/models/role.model.d.mts +17 -0
- package/lib/types/namespaces/models/storage-binding.model.d.cts +15 -0
- package/lib/types/namespaces/models/storage-binding.model.d.mts +15 -0
- package/lib/types/namespaces/models/tenant-membership.model.d.cts +13 -0
- package/lib/types/namespaces/models/tenant-membership.model.d.mts +13 -0
- package/lib/types/namespaces/models/tenant-profile.model.d.cts +11 -0
- package/lib/types/namespaces/models/tenant-profile.model.d.mts +11 -0
- package/lib/types/namespaces/models/tenant.model.d.cts +19 -0
- package/lib/types/namespaces/models/tenant.model.d.mts +19 -0
- package/lib/types/namespaces/models/user.model.d.cts +14 -0
- package/lib/types/namespaces/models/user.model.d.mts +14 -0
- package/lib/types/namespaces/org-based-authorization-system.d.cts +299 -0
- package/lib/types/namespaces/org-based-authorization-system.d.mts +299 -0
- package/lib/types/namespaces/org-based-authorization-system.models.d.cts +212 -0
- package/lib/types/namespaces/org-based-authorization-system.models.d.mts +212 -0
- package/lib/types/namespaces/org-based-authorization-system.services.d.cts +217 -0
- package/lib/types/namespaces/org-based-authorization-system.services.d.mts +217 -0
- package/lib/types/namespaces/services/authz.service.d.cts +10 -0
- package/lib/types/namespaces/services/authz.service.d.mts +10 -0
- package/lib/types/namespaces/services/bootstrap.service.d.cts +21 -0
- package/lib/types/namespaces/services/bootstrap.service.d.mts +21 -0
- package/lib/types/namespaces/services/effective-permission.service.d.cts +13 -0
- package/lib/types/namespaces/services/effective-permission.service.d.mts +13 -0
- package/lib/types/namespaces/services/group-membership.service.d.cts +10 -0
- package/lib/types/namespaces/services/group-membership.service.d.mts +10 -0
- package/lib/types/namespaces/services/group.service.d.cts +9 -0
- package/lib/types/namespaces/services/group.service.d.mts +9 -0
- package/lib/types/namespaces/services/index.d.cts +24 -0
- package/lib/types/namespaces/services/index.d.mts +24 -0
- package/lib/types/namespaces/services/inheritance-block.service.d.cts +10 -0
- package/lib/types/namespaces/services/inheritance-block.service.d.mts +10 -0
- package/lib/types/namespaces/services/org-unit-closure.service.d.cts +11 -0
- package/lib/types/namespaces/services/org-unit-closure.service.d.mts +11 -0
- package/lib/types/namespaces/services/org-unit-membership.service.d.cts +11 -0
- package/lib/types/namespaces/services/org-unit-membership.service.d.mts +11 -0
- package/lib/types/namespaces/services/org-unit-profile.service.d.cts +7 -0
- package/lib/types/namespaces/services/org-unit-profile.service.d.mts +7 -0
- package/lib/types/namespaces/services/org-unit.service.d.cts +18 -0
- package/lib/types/namespaces/services/org-unit.service.d.mts +18 -0
- package/lib/types/namespaces/services/permission.service.d.cts +10 -0
- package/lib/types/namespaces/services/permission.service.d.mts +10 -0
- package/lib/types/namespaces/services/principal.service.d.cts +11 -0
- package/lib/types/namespaces/services/principal.service.d.mts +11 -0
- package/lib/types/namespaces/services/protected-resource.service.d.cts +13 -0
- package/lib/types/namespaces/services/protected-resource.service.d.mts +13 -0
- package/lib/types/namespaces/services/resource-grant.service.d.cts +12 -0
- package/lib/types/namespaces/services/resource-grant.service.d.mts +12 -0
- package/lib/types/namespaces/services/resource-lifecycle.service.d.cts +10 -0
- package/lib/types/namespaces/services/resource-lifecycle.service.d.mts +10 -0
- package/lib/types/namespaces/services/role-assignment.service.d.cts +12 -0
- package/lib/types/namespaces/services/role-assignment.service.d.mts +12 -0
- package/lib/types/namespaces/services/role-permission.service.d.cts +12 -0
- package/lib/types/namespaces/services/role-permission.service.d.mts +12 -0
- package/lib/types/namespaces/services/role.service.d.cts +12 -0
- package/lib/types/namespaces/services/role.service.d.mts +12 -0
- package/lib/types/namespaces/services/storage-binding.service.d.cts +12 -0
- package/lib/types/namespaces/services/storage-binding.service.d.mts +12 -0
- package/lib/types/namespaces/services/system-management.service.d.cts +14 -0
- package/lib/types/namespaces/services/system-management.service.d.mts +14 -0
- package/lib/types/namespaces/services/tenant-membership.service.d.cts +11 -0
- package/lib/types/namespaces/services/tenant-membership.service.d.mts +11 -0
- package/lib/types/namespaces/services/tenant-profile.service.d.cts +8 -0
- package/lib/types/namespaces/services/tenant-profile.service.d.mts +8 -0
- package/lib/types/namespaces/services/tenant.service.d.cts +12 -0
- package/lib/types/namespaces/services/tenant.service.d.mts +12 -0
- package/lib/types/namespaces/services/user.service.d.cts +11 -0
- package/lib/types/namespaces/services/user.service.d.mts +11 -0
- package/lib/types/namespaces/types.d.cts +230 -0
- package/lib/types/namespaces/types.d.mts +230 -0
- package/lib/types/namespaces/utils.d.cts +68 -0
- package/lib/types/namespaces/utils.d.mts +68 -0
- package/lib/types/nest/graph/GraphExecutionController.d.cts +62 -0
- package/lib/types/nest/graph/GraphExecutionController.d.mts +62 -0
- package/lib/types/nest/graph/GraphExecutionModule.d.cts +39 -0
- package/lib/types/nest/graph/GraphExecutionModule.d.mts +39 -0
- package/lib/types/nest/graph/GraphExecutionResultModel.d.cts +46 -0
- package/lib/types/nest/graph/GraphExecutionResultModel.d.mts +46 -0
- package/lib/types/nest/graph/GraphExecutionResultRepository.d.cts +38 -0
- package/lib/types/nest/graph/GraphExecutionResultRepository.d.mts +38 -0
- package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.cts +17 -0
- package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.mts +17 -0
- package/lib/types/nest/graph/index.d.cts +10 -0
- package/lib/types/nest/graph/index.d.mts +10 -0
- package/package.json +27 -5
- package/sql/001_constraints.sql +11 -0
- package/sql/002_rls.sql +20 -0
- package/sql/003_indexes.sql +2 -0
- package/dist/integrations.cjs.map +0 -1
- package/dist/integrations.js.map +0 -1
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/azure/index.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobErrors.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobKey.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobTypes.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobValue.cjs.map +0 -1
- package/lib/cjs/blob/core/index.cjs.map +0 -1
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/gcp/index.cjs.map +0 -1
- package/lib/cjs/blob/index.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/index.cjs.map +0 -1
- package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/local/index.cjs.map +0 -1
- package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/memory/index.cjs.map +0 -1
- package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/s3/index.cjs.map +0 -1
- package/lib/cjs/docker/DockerComposeService.cjs.map +0 -1
- package/lib/cjs/docker/index.cjs.map +0 -1
- package/lib/cjs/graph/constants.cjs.map +0 -1
- package/lib/cjs/graph/decorators.cjs.map +0 -1
- package/lib/cjs/graph/errors/GraphCycleError.cjs.map +0 -1
- package/lib/cjs/graph/errors/GraphExecutionError.cjs.map +0 -1
- package/lib/cjs/graph/errors/GraphInputError.cjs.map +0 -1
- package/lib/cjs/graph/errors/GraphLoopLimitError.cjs.map +0 -1
- package/lib/cjs/graph/errors/GraphPinningError.cjs.map +0 -1
- package/lib/cjs/graph/errors/GraphPortError.cjs.map +0 -1
- package/lib/cjs/graph/errors/GraphStoreError.cjs.map +0 -1
- package/lib/cjs/graph/errors/GraphTopologyError.cjs.map +0 -1
- package/lib/cjs/graph/errors/index.cjs.map +0 -1
- package/lib/cjs/graph/events/GraphExecutionEvent.cjs.map +0 -1
- package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs.map +0 -1
- package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs.map +0 -1
- package/lib/cjs/graph/events/GraphExecutionObserver.cjs.map +0 -1
- package/lib/cjs/graph/events/index.cjs.map +0 -1
- package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs.map +0 -1
- package/lib/cjs/graph/execution/GraphExecutionContext.cjs.map +0 -1
- package/lib/cjs/graph/execution/GraphExecutionEngine.cjs.map +0 -1
- package/lib/cjs/graph/execution/GraphExecutionFrame.cjs.map +0 -1
- package/lib/cjs/graph/execution/GraphExecutionResult.cjs.map +0 -1
- package/lib/cjs/graph/execution/GraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/execution/index.cjs.map +0 -1
- package/lib/cjs/graph/index.cjs.map +0 -1
- package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs.map +0 -1
- package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs.map +0 -1
- package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs.map +0 -1
- package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/loops/index.cjs.map +0 -1
- package/lib/cjs/graph/nodes/agent.cjs.map +0 -1
- package/lib/cjs/graph/nodes/category-styles.cjs.map +0 -1
- package/lib/cjs/graph/nodes/flow-control.cjs.map +0 -1
- package/lib/cjs/graph/nodes/index.cjs.map +0 -1
- package/lib/cjs/graph/nodes/triggers.cjs.map +0 -1
- package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs.map +0 -1
- package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs.map +0 -1
- package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs.map +0 -1
- package/lib/cjs/graph/pinning/GraphPinningService.cjs.map +0 -1
- package/lib/cjs/graph/pinning/index.cjs.map +0 -1
- package/lib/cjs/graph/planning/GraphExecutionPlan.cjs.map +0 -1
- package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs.map +0 -1
- package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs.map +0 -1
- package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs.map +0 -1
- package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs.map +0 -1
- package/lib/cjs/graph/planning/GraphRelationResolver.cjs.map +0 -1
- package/lib/cjs/graph/planning/GraphTopology.cjs.map +0 -1
- package/lib/cjs/graph/planning/index.cjs.map +0 -1
- package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs.map +0 -1
- package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs.map +0 -1
- package/lib/cjs/graph/registry/index.cjs.map +0 -1
- package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs.map +0 -1
- package/lib/cjs/graph/snapshots/index.cjs.map +0 -1
- package/lib/cjs/graph/store/GraphCachedValue.cjs.map +0 -1
- package/lib/cjs/graph/store/GraphValueKey.cjs.map +0 -1
- package/lib/cjs/graph/store/GraphValueStore.cjs.map +0 -1
- package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs.map +0 -1
- package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs.map +0 -1
- package/lib/cjs/graph/store/index.cjs.map +0 -1
- package/lib/cjs/graph/types.cjs.map +0 -1
- package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs.map +0 -1
- package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs.map +0 -1
- package/lib/cjs/graph/validation/GraphValueValidator.cjs.map +0 -1
- package/lib/cjs/graph/validation/index.cjs.map +0 -1
- package/lib/cjs/index.cjs.map +0 -1
- package/lib/cjs/keycloak/index.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/index.cjs.map +0 -1
- package/lib/cjs/keycloak/services/runtime.cjs.map +0 -1
- package/lib/cjs/keycloak/types.cjs.map +0 -1
- package/lib/cjs/kibana/helpers.cjs.map +0 -1
- package/lib/cjs/kibana/index.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaUserService.cjs.map +0 -1
- package/lib/cjs/kibana/services/index.cjs.map +0 -1
- package/lib/cjs/kibana/services/runtime.cjs.map +0 -1
- package/lib/cjs/kibana/types.cjs.map +0 -1
- package/lib/cjs/nest/authService.cjs.map +0 -1
- package/lib/cjs/nest/index.cjs.map +0 -1
- package/lib/cjs/nest/keycloakAuthHandler.cjs.map +0 -1
- package/lib/cjs/nest/keycloakModule.cjs.map +0 -1
- package/lib/cjs/nest/logging.cjs.map +0 -1
- package/lib/cjs/nest/types.cjs.map +0 -1
- package/lib/cjs/nest/utils.cjs.map +0 -1
- package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/aws/index.cjs.map +0 -1
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/azure/index.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretErrors.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretName.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretReference.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretSerialization.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretService.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretTypes.cjs.map +0 -1
- package/lib/cjs/secrets/core/index.cjs.map +0 -1
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +0 -1
- package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/gcp/index.cjs.map +0 -1
- package/lib/cjs/secrets/index.cjs.map +0 -1
- package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +0 -1
- package/lib/cjs/secrets/model/ModelSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/model/Secret.cjs.map +0 -1
- package/lib/cjs/secrets/model/index.cjs.map +0 -1
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/onepassword/index.cjs.map +0 -1
- package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/vault/index.cjs.map +0 -1
- package/lib/cjs/shared/runtime.cjs.map +0 -1
- package/lib/cjs/utils.cjs.map +0 -1
- package/lib/esm/blob/azure/AzureBlobStoreService.js.map +0 -1
- package/lib/esm/blob/azure/index.js.map +0 -1
- package/lib/esm/blob/core/BlobErrors.js.map +0 -1
- package/lib/esm/blob/core/BlobKey.js.map +0 -1
- package/lib/esm/blob/core/BlobStoreFactory.js.map +0 -1
- package/lib/esm/blob/core/BlobStoreService.js.map +0 -1
- package/lib/esm/blob/core/BlobTypes.js.map +0 -1
- package/lib/esm/blob/core/BlobValue.js.map +0 -1
- package/lib/esm/blob/core/index.js.map +0 -1
- package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +0 -1
- package/lib/esm/blob/gcp/index.js.map +0 -1
- package/lib/esm/blob/index.js.map +0 -1
- package/lib/esm/blob/ipfs/IpfsBlobStoreService.js.map +0 -1
- package/lib/esm/blob/ipfs/IpfsKeyIndex.js.map +0 -1
- package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js.map +0 -1
- package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js.map +0 -1
- package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js.map +0 -1
- package/lib/esm/blob/ipfs/index.js.map +0 -1
- package/lib/esm/blob/local/LocalBlobStoreService.js.map +0 -1
- package/lib/esm/blob/local/index.js.map +0 -1
- package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +0 -1
- package/lib/esm/blob/memory/index.js.map +0 -1
- package/lib/esm/blob/s3/MinioBlobStoreService.js.map +0 -1
- package/lib/esm/blob/s3/R2BlobStoreService.js.map +0 -1
- package/lib/esm/blob/s3/S3BlobStoreService.js.map +0 -1
- package/lib/esm/blob/s3/index.js.map +0 -1
- package/lib/esm/docker/DockerComposeService.js.map +0 -1
- package/lib/esm/docker/index.js.map +0 -1
- package/lib/esm/graph/constants.js.map +0 -1
- package/lib/esm/graph/decorators.js.map +0 -1
- package/lib/esm/graph/errors/GraphCycleError.js.map +0 -1
- package/lib/esm/graph/errors/GraphExecutionError.js.map +0 -1
- package/lib/esm/graph/errors/GraphInputError.js.map +0 -1
- package/lib/esm/graph/errors/GraphLoopLimitError.js.map +0 -1
- package/lib/esm/graph/errors/GraphPinningError.js.map +0 -1
- package/lib/esm/graph/errors/GraphPortError.js.map +0 -1
- package/lib/esm/graph/errors/GraphStoreError.js.map +0 -1
- package/lib/esm/graph/errors/GraphTopologyError.js.map +0 -1
- package/lib/esm/graph/errors/index.js.map +0 -1
- package/lib/esm/graph/events/GraphExecutionEvent.js.map +0 -1
- package/lib/esm/graph/events/GraphExecutionEventEmitter.js.map +0 -1
- package/lib/esm/graph/events/GraphExecutionEventFactory.js.map +0 -1
- package/lib/esm/graph/events/GraphExecutionObserver.js.map +0 -1
- package/lib/esm/graph/events/index.js.map +0 -1
- package/lib/esm/graph/execution/CodeSandboxEvaluator.js.map +0 -1
- package/lib/esm/graph/execution/GraphExecutionContext.js.map +0 -1
- package/lib/esm/graph/execution/GraphExecutionEngine.js.map +0 -1
- package/lib/esm/graph/execution/GraphExecutionFrame.js.map +0 -1
- package/lib/esm/graph/execution/GraphExecutionResult.js.map +0 -1
- package/lib/esm/graph/execution/GraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/execution/index.js.map +0 -1
- package/lib/esm/graph/index.js.map +0 -1
- package/lib/esm/graph/loops/ConditionExpressionEvaluator.js.map +0 -1
- package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/loops/GraphConditionEvaluator.js.map +0 -1
- package/lib/esm/graph/loops/GraphLoopExecutionContext.js.map +0 -1
- package/lib/esm/graph/loops/UntilGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/loops/WhileGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/loops/index.js.map +0 -1
- package/lib/esm/graph/nodes/agent.js.map +0 -1
- package/lib/esm/graph/nodes/category-styles.js.map +0 -1
- package/lib/esm/graph/nodes/flow-control.js.map +0 -1
- package/lib/esm/graph/nodes/index.js.map +0 -1
- package/lib/esm/graph/nodes/triggers.js.map +0 -1
- package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js.map +0 -1
- package/lib/esm/graph/pinning/GraphPinningMetadata.js.map +0 -1
- package/lib/esm/graph/pinning/GraphPinningPolicy.js.map +0 -1
- package/lib/esm/graph/pinning/GraphPinningService.js.map +0 -1
- package/lib/esm/graph/pinning/index.js.map +0 -1
- package/lib/esm/graph/planning/GraphExecutionPlan.js.map +0 -1
- package/lib/esm/graph/planning/GraphExecutionPlanEdge.js.map +0 -1
- package/lib/esm/graph/planning/GraphExecutionPlanLayer.js.map +0 -1
- package/lib/esm/graph/planning/GraphExecutionPlanNode.js.map +0 -1
- package/lib/esm/graph/planning/GraphExecutionPlanner.js.map +0 -1
- package/lib/esm/graph/planning/GraphRelationResolver.js.map +0 -1
- package/lib/esm/graph/planning/GraphTopology.js.map +0 -1
- package/lib/esm/graph/planning/index.js.map +0 -1
- package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js.map +0 -1
- package/lib/esm/graph/registry/GraphNodeExecutorResolver.js.map +0 -1
- package/lib/esm/graph/registry/index.js.map +0 -1
- package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js.map +0 -1
- package/lib/esm/graph/snapshots/index.js.map +0 -1
- package/lib/esm/graph/store/GraphCachedValue.js.map +0 -1
- package/lib/esm/graph/store/GraphValueKey.js.map +0 -1
- package/lib/esm/graph/store/GraphValueStore.js.map +0 -1
- package/lib/esm/graph/store/GraphValueStoreAdapter.js.map +0 -1
- package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js.map +0 -1
- package/lib/esm/graph/store/index.js.map +0 -1
- package/lib/esm/graph/types.js.map +0 -1
- package/lib/esm/graph/validation/GraphDefinitionValidator.js.map +0 -1
- package/lib/esm/graph/validation/GraphPortSchemaResolver.js.map +0 -1
- package/lib/esm/graph/validation/GraphValueValidator.js.map +0 -1
- package/lib/esm/graph/validation/index.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/keycloak/index.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakAuthService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakClientService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakRealmService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakRoleService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakUserService.js.map +0 -1
- package/lib/esm/keycloak/services/index.js.map +0 -1
- package/lib/esm/keycloak/services/runtime.js.map +0 -1
- package/lib/esm/keycloak/types.js.map +0 -1
- package/lib/esm/kibana/helpers.js.map +0 -1
- package/lib/esm/kibana/index.js.map +0 -1
- package/lib/esm/kibana/services/KibanaAuthService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaDashboardService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaDataViewService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaRoleService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaSpaceService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaUserService.js.map +0 -1
- package/lib/esm/kibana/services/index.js.map +0 -1
- package/lib/esm/kibana/services/runtime.js.map +0 -1
- package/lib/esm/kibana/types.js.map +0 -1
- package/lib/esm/nest/authService.js.map +0 -1
- package/lib/esm/nest/index.js.map +0 -1
- package/lib/esm/nest/keycloakAuthHandler.js.map +0 -1
- package/lib/esm/nest/keycloakModule.js.map +0 -1
- package/lib/esm/nest/logging.js.map +0 -1
- package/lib/esm/nest/types.js.map +0 -1
- package/lib/esm/nest/utils.js.map +0 -1
- package/lib/esm/secrets/aws/AwsSecretService.js.map +0 -1
- package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/aws/index.js.map +0 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +0 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/azure/index.js.map +0 -1
- package/lib/esm/secrets/core/SecretErrors.js.map +0 -1
- package/lib/esm/secrets/core/SecretName.js.map +0 -1
- package/lib/esm/secrets/core/SecretReference.js.map +0 -1
- package/lib/esm/secrets/core/SecretSerialization.js.map +0 -1
- package/lib/esm/secrets/core/SecretService.js.map +0 -1
- package/lib/esm/secrets/core/SecretTypes.js.map +0 -1
- package/lib/esm/secrets/core/index.js.map +0 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +0 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +0 -1
- package/lib/esm/secrets/gcp/index.js.map +0 -1
- package/lib/esm/secrets/index.js.map +0 -1
- package/lib/esm/secrets/model/ModelSecretCrypto.js.map +0 -1
- package/lib/esm/secrets/model/ModelSecretService.js.map +0 -1
- package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/model/Secret.js.map +0 -1
- package/lib/esm/secrets/model/index.js.map +0 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +0 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/onepassword/index.js.map +0 -1
- package/lib/esm/secrets/vault/VaultSecretService.js.map +0 -1
- package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/vault/index.js.map +0 -1
- package/lib/esm/shared/runtime.js.map +0 -1
- package/lib/esm/utils.js.map +0 -1
|
@@ -0,0 +1,968 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StorageBinding = exports.EffectivePermission = exports.ResourceGrant = exports.ProtectedResource = exports.InheritanceBlock = exports.RoleAssignment = exports.RolePermission = exports.Role = exports.Permission = exports.GroupMembership = exports.OrgUnitMembership = exports.TenantMembership = exports.Principal = exports.Group = exports.User = exports.OrgUnitClosure = exports.OrgUnitProfile = exports.OrgUnit = exports.TenantProfile = exports.Tenant = exports.AuthorizationModel = 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 core_1 = require("@decaf-ts/core");
|
|
19
|
+
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
20
|
+
const org_based_authorization_system_js_1 = require("./org-based-authorization-system.cjs");
|
|
21
|
+
class AuthorizationModel extends decorator_validation_1.Model {
|
|
22
|
+
constructor(data) {
|
|
23
|
+
super(data);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.AuthorizationModel = AuthorizationModel;
|
|
27
|
+
let Tenant = class Tenant extends AuthorizationModel {
|
|
28
|
+
};
|
|
29
|
+
exports.Tenant = Tenant;
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, core_1.pk)({ type: String }),
|
|
32
|
+
__metadata("design:type", String)
|
|
33
|
+
], Tenant.prototype, "id", void 0);
|
|
34
|
+
__decorate([
|
|
35
|
+
(0, core_1.unique)(),
|
|
36
|
+
(0, decorator_validation_1.required)(),
|
|
37
|
+
(0, decorator_validation_1.type)(String),
|
|
38
|
+
(0, core_1.column)(),
|
|
39
|
+
__metadata("design:type", String)
|
|
40
|
+
], Tenant.prototype, "slug", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, decorator_validation_1.required)(),
|
|
43
|
+
(0, decorator_validation_1.type)(String),
|
|
44
|
+
(0, core_1.column)(),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], Tenant.prototype, "name", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, decorator_validation_1.required)(),
|
|
49
|
+
(0, decorator_validation_1.type)(String),
|
|
50
|
+
(0, decorator_validation_1.option)(org_based_authorization_system_js_1.IsolationTierOptions),
|
|
51
|
+
(0, core_1.column)(),
|
|
52
|
+
__metadata("design:type", String)
|
|
53
|
+
], Tenant.prototype, "isolationTier", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, core_1.oneToMany)(() => OrgUnit, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
56
|
+
__metadata("design:type", Array)
|
|
57
|
+
], Tenant.prototype, "orgUnits", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, core_1.oneToMany)(() => TenantMembership, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
60
|
+
__metadata("design:type", Array)
|
|
61
|
+
], Tenant.prototype, "memberships", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
(0, core_1.oneToMany)(() => Principal, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
64
|
+
__metadata("design:type", Array)
|
|
65
|
+
], Tenant.prototype, "principals", void 0);
|
|
66
|
+
__decorate([
|
|
67
|
+
(0, core_1.oneToMany)(() => StorageBinding, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
68
|
+
__metadata("design:type", Array)
|
|
69
|
+
], Tenant.prototype, "storageBindings", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, core_1.createdAt)(),
|
|
72
|
+
__metadata("design:type", Date)
|
|
73
|
+
], Tenant.prototype, "createdAt", void 0);
|
|
74
|
+
__decorate([
|
|
75
|
+
(0, core_1.updatedAt)(),
|
|
76
|
+
__metadata("design:type", Date)
|
|
77
|
+
], Tenant.prototype, "updatedAt", void 0);
|
|
78
|
+
exports.Tenant = Tenant = __decorate([
|
|
79
|
+
(0, core_1.table)("tenants"),
|
|
80
|
+
(0, decorator_validation_1.model)()
|
|
81
|
+
], Tenant);
|
|
82
|
+
let TenantProfile = class TenantProfile extends AuthorizationModel {
|
|
83
|
+
};
|
|
84
|
+
exports.TenantProfile = TenantProfile;
|
|
85
|
+
__decorate([
|
|
86
|
+
(0, core_1.pk)({ type: String }),
|
|
87
|
+
__metadata("design:type", String)
|
|
88
|
+
], TenantProfile.prototype, "id", void 0);
|
|
89
|
+
__decorate([
|
|
90
|
+
(0, core_1.manyToOne)(() => Tenant, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_tenant_profiles_tenant"),
|
|
91
|
+
(0, decorator_validation_1.required)(),
|
|
92
|
+
__metadata("design:type", Object)
|
|
93
|
+
], TenantProfile.prototype, "tenant", void 0);
|
|
94
|
+
__decorate([
|
|
95
|
+
(0, decorator_validation_1.required)(),
|
|
96
|
+
(0, decorator_validation_1.type)(String),
|
|
97
|
+
(0, core_1.column)(),
|
|
98
|
+
__metadata("design:type", String)
|
|
99
|
+
], TenantProfile.prototype, "profileKey", void 0);
|
|
100
|
+
__decorate([
|
|
101
|
+
(0, decorator_validation_1.type)(Object),
|
|
102
|
+
(0, core_1.column)(),
|
|
103
|
+
__metadata("design:type", Object)
|
|
104
|
+
], TenantProfile.prototype, "metadata", void 0);
|
|
105
|
+
__decorate([
|
|
106
|
+
(0, core_1.createdAt)(),
|
|
107
|
+
__metadata("design:type", Date)
|
|
108
|
+
], TenantProfile.prototype, "createdAt", void 0);
|
|
109
|
+
__decorate([
|
|
110
|
+
(0, core_1.updatedAt)(),
|
|
111
|
+
__metadata("design:type", Date)
|
|
112
|
+
], TenantProfile.prototype, "updatedAt", void 0);
|
|
113
|
+
exports.TenantProfile = TenantProfile = __decorate([
|
|
114
|
+
(0, core_1.table)("tenant_profiles"),
|
|
115
|
+
(0, decorator_validation_1.model)()
|
|
116
|
+
], TenantProfile);
|
|
117
|
+
let OrgUnit = class OrgUnit extends AuthorizationModel {
|
|
118
|
+
};
|
|
119
|
+
exports.OrgUnit = OrgUnit;
|
|
120
|
+
__decorate([
|
|
121
|
+
(0, core_1.pk)({ type: String }),
|
|
122
|
+
__metadata("design:type", String)
|
|
123
|
+
], OrgUnit.prototype, "id", void 0);
|
|
124
|
+
__decorate([
|
|
125
|
+
(0, core_1.manyToOne)(() => Tenant, org_based_authorization_system_js_1.REL_RESTRICT, false, undefined, "fk_org_units_tenant"),
|
|
126
|
+
(0, decorator_validation_1.required)(),
|
|
127
|
+
__metadata("design:type", Object)
|
|
128
|
+
], OrgUnit.prototype, "tenant", void 0);
|
|
129
|
+
__decorate([
|
|
130
|
+
(0, core_1.manyToOne)(() => OrgUnit, org_based_authorization_system_js_1.REL_RESTRICT, false, undefined, "fk_org_units_parent"),
|
|
131
|
+
__metadata("design:type", Object)
|
|
132
|
+
], OrgUnit.prototype, "parent", void 0);
|
|
133
|
+
__decorate([
|
|
134
|
+
(0, core_1.oneToMany)(() => OrgUnit, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
135
|
+
__metadata("design:type", Array)
|
|
136
|
+
], OrgUnit.prototype, "children", void 0);
|
|
137
|
+
__decorate([
|
|
138
|
+
(0, decorator_validation_1.required)(),
|
|
139
|
+
(0, decorator_validation_1.type)(String),
|
|
140
|
+
(0, core_1.column)(),
|
|
141
|
+
__metadata("design:type", String)
|
|
142
|
+
], OrgUnit.prototype, "name", void 0);
|
|
143
|
+
__decorate([
|
|
144
|
+
(0, decorator_validation_1.required)(),
|
|
145
|
+
(0, decorator_validation_1.type)(String),
|
|
146
|
+
(0, core_1.column)(),
|
|
147
|
+
__metadata("design:type", String)
|
|
148
|
+
], OrgUnit.prototype, "path", void 0);
|
|
149
|
+
__decorate([
|
|
150
|
+
(0, decorator_validation_1.type)(Object),
|
|
151
|
+
(0, core_1.column)(),
|
|
152
|
+
__metadata("design:type", Object)
|
|
153
|
+
], OrgUnit.prototype, "metadata", void 0);
|
|
154
|
+
__decorate([
|
|
155
|
+
(0, core_1.oneToMany)(() => OrgUnitMembership, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
156
|
+
__metadata("design:type", Array)
|
|
157
|
+
], OrgUnit.prototype, "memberships", void 0);
|
|
158
|
+
__decorate([
|
|
159
|
+
(0, core_1.oneToMany)(() => ProtectedResource, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
160
|
+
__metadata("design:type", Array)
|
|
161
|
+
], OrgUnit.prototype, "resources", void 0);
|
|
162
|
+
__decorate([
|
|
163
|
+
(0, core_1.oneToMany)(() => InheritanceBlock, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
164
|
+
__metadata("design:type", Array)
|
|
165
|
+
], OrgUnit.prototype, "inheritanceBlocks", void 0);
|
|
166
|
+
__decorate([
|
|
167
|
+
(0, core_1.oneToMany)(() => OrgUnitClosure, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
168
|
+
__metadata("design:type", Array)
|
|
169
|
+
], OrgUnit.prototype, "ancestorLinks", void 0);
|
|
170
|
+
__decorate([
|
|
171
|
+
(0, core_1.oneToMany)(() => OrgUnitClosure, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
172
|
+
__metadata("design:type", Array)
|
|
173
|
+
], OrgUnit.prototype, "descendantLinks", void 0);
|
|
174
|
+
__decorate([
|
|
175
|
+
(0, core_1.createdAt)(),
|
|
176
|
+
__metadata("design:type", Date)
|
|
177
|
+
], OrgUnit.prototype, "createdAt", void 0);
|
|
178
|
+
__decorate([
|
|
179
|
+
(0, core_1.updatedAt)(),
|
|
180
|
+
__metadata("design:type", Date)
|
|
181
|
+
], OrgUnit.prototype, "updatedAt", void 0);
|
|
182
|
+
exports.OrgUnit = OrgUnit = __decorate([
|
|
183
|
+
(0, core_1.table)("org_units"),
|
|
184
|
+
(0, decorator_validation_1.model)()
|
|
185
|
+
], OrgUnit);
|
|
186
|
+
let OrgUnitProfile = class OrgUnitProfile extends AuthorizationModel {
|
|
187
|
+
};
|
|
188
|
+
exports.OrgUnitProfile = OrgUnitProfile;
|
|
189
|
+
__decorate([
|
|
190
|
+
(0, core_1.pk)({ type: String }),
|
|
191
|
+
__metadata("design:type", String)
|
|
192
|
+
], OrgUnitProfile.prototype, "id", void 0);
|
|
193
|
+
__decorate([
|
|
194
|
+
(0, core_1.manyToOne)(() => OrgUnit, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_org_unit_profiles_org_unit"),
|
|
195
|
+
(0, decorator_validation_1.required)(),
|
|
196
|
+
__metadata("design:type", Object)
|
|
197
|
+
], OrgUnitProfile.prototype, "orgUnit", void 0);
|
|
198
|
+
__decorate([
|
|
199
|
+
(0, decorator_validation_1.required)(),
|
|
200
|
+
(0, decorator_validation_1.type)(String),
|
|
201
|
+
(0, core_1.column)(),
|
|
202
|
+
__metadata("design:type", String)
|
|
203
|
+
], OrgUnitProfile.prototype, "profileKey", void 0);
|
|
204
|
+
__decorate([
|
|
205
|
+
(0, decorator_validation_1.type)(Object),
|
|
206
|
+
(0, core_1.column)(),
|
|
207
|
+
__metadata("design:type", Object)
|
|
208
|
+
], OrgUnitProfile.prototype, "metadata", void 0);
|
|
209
|
+
__decorate([
|
|
210
|
+
(0, core_1.createdAt)(),
|
|
211
|
+
__metadata("design:type", Date)
|
|
212
|
+
], OrgUnitProfile.prototype, "createdAt", void 0);
|
|
213
|
+
__decorate([
|
|
214
|
+
(0, core_1.updatedAt)(),
|
|
215
|
+
__metadata("design:type", Date)
|
|
216
|
+
], OrgUnitProfile.prototype, "updatedAt", void 0);
|
|
217
|
+
exports.OrgUnitProfile = OrgUnitProfile = __decorate([
|
|
218
|
+
(0, core_1.table)("org_unit_profiles"),
|
|
219
|
+
(0, decorator_validation_1.model)()
|
|
220
|
+
], OrgUnitProfile);
|
|
221
|
+
let OrgUnitClosure = class OrgUnitClosure extends AuthorizationModel {
|
|
222
|
+
};
|
|
223
|
+
exports.OrgUnitClosure = OrgUnitClosure;
|
|
224
|
+
__decorate([
|
|
225
|
+
(0, core_1.pk)({ type: String }),
|
|
226
|
+
__metadata("design:type", String)
|
|
227
|
+
], OrgUnitClosure.prototype, "id", void 0);
|
|
228
|
+
__decorate([
|
|
229
|
+
(0, core_1.manyToOne)(() => Tenant, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_org_closure_tenant"),
|
|
230
|
+
(0, decorator_validation_1.required)(),
|
|
231
|
+
__metadata("design:type", Object)
|
|
232
|
+
], OrgUnitClosure.prototype, "tenant", void 0);
|
|
233
|
+
__decorate([
|
|
234
|
+
(0, core_1.manyToOne)(() => OrgUnit, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_org_closure_ancestor"),
|
|
235
|
+
(0, decorator_validation_1.required)(),
|
|
236
|
+
__metadata("design:type", Object)
|
|
237
|
+
], OrgUnitClosure.prototype, "ancestor", void 0);
|
|
238
|
+
__decorate([
|
|
239
|
+
(0, core_1.manyToOne)(() => OrgUnit, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_org_closure_descendant"),
|
|
240
|
+
(0, decorator_validation_1.required)(),
|
|
241
|
+
__metadata("design:type", Object)
|
|
242
|
+
], OrgUnitClosure.prototype, "descendant", void 0);
|
|
243
|
+
__decorate([
|
|
244
|
+
(0, decorator_validation_1.required)(),
|
|
245
|
+
(0, decorator_validation_1.type)(Number),
|
|
246
|
+
(0, core_1.column)(),
|
|
247
|
+
__metadata("design:type", Number)
|
|
248
|
+
], OrgUnitClosure.prototype, "depth", void 0);
|
|
249
|
+
__decorate([
|
|
250
|
+
(0, core_1.createdAt)(),
|
|
251
|
+
__metadata("design:type", Date)
|
|
252
|
+
], OrgUnitClosure.prototype, "createdAt", void 0);
|
|
253
|
+
exports.OrgUnitClosure = OrgUnitClosure = __decorate([
|
|
254
|
+
(0, core_1.table)("org_unit_closure"),
|
|
255
|
+
(0, decorator_validation_1.model)()
|
|
256
|
+
], OrgUnitClosure);
|
|
257
|
+
let User = class User extends AuthorizationModel {
|
|
258
|
+
};
|
|
259
|
+
exports.User = User;
|
|
260
|
+
__decorate([
|
|
261
|
+
(0, core_1.pk)({ type: String }),
|
|
262
|
+
__metadata("design:type", String)
|
|
263
|
+
], User.prototype, "id", void 0);
|
|
264
|
+
__decorate([
|
|
265
|
+
(0, core_1.unique)(),
|
|
266
|
+
(0, decorator_validation_1.type)(String),
|
|
267
|
+
(0, core_1.column)(),
|
|
268
|
+
__metadata("design:type", String)
|
|
269
|
+
], User.prototype, "email", void 0);
|
|
270
|
+
__decorate([
|
|
271
|
+
(0, core_1.unique)(),
|
|
272
|
+
(0, decorator_validation_1.type)(String),
|
|
273
|
+
(0, core_1.column)(),
|
|
274
|
+
__metadata("design:type", String)
|
|
275
|
+
], User.prototype, "phone", void 0);
|
|
276
|
+
__decorate([
|
|
277
|
+
(0, decorator_validation_1.required)(),
|
|
278
|
+
(0, decorator_validation_1.type)(String),
|
|
279
|
+
(0, core_1.column)(),
|
|
280
|
+
__metadata("design:type", String)
|
|
281
|
+
], User.prototype, "displayName", void 0);
|
|
282
|
+
__decorate([
|
|
283
|
+
(0, core_1.oneToMany)(() => TenantMembership, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
284
|
+
__metadata("design:type", Array)
|
|
285
|
+
], User.prototype, "tenantMemberships", void 0);
|
|
286
|
+
__decorate([
|
|
287
|
+
(0, core_1.oneToMany)(() => OrgUnitMembership, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
288
|
+
__metadata("design:type", Array)
|
|
289
|
+
], User.prototype, "orgUnitMemberships", void 0);
|
|
290
|
+
__decorate([
|
|
291
|
+
(0, core_1.createdAt)(),
|
|
292
|
+
__metadata("design:type", Date)
|
|
293
|
+
], User.prototype, "createdAt", void 0);
|
|
294
|
+
__decorate([
|
|
295
|
+
(0, core_1.updatedAt)(),
|
|
296
|
+
__metadata("design:type", Date)
|
|
297
|
+
], User.prototype, "updatedAt", void 0);
|
|
298
|
+
exports.User = User = __decorate([
|
|
299
|
+
(0, core_1.table)("users"),
|
|
300
|
+
(0, decorator_validation_1.model)()
|
|
301
|
+
], User);
|
|
302
|
+
let Group = class Group extends AuthorizationModel {
|
|
303
|
+
};
|
|
304
|
+
exports.Group = Group;
|
|
305
|
+
__decorate([
|
|
306
|
+
(0, core_1.pk)({ type: String }),
|
|
307
|
+
__metadata("design:type", String)
|
|
308
|
+
], Group.prototype, "id", void 0);
|
|
309
|
+
__decorate([
|
|
310
|
+
(0, core_1.manyToOne)(() => Tenant, org_based_authorization_system_js_1.REL_RESTRICT, false, undefined, "fk_groups_tenant"),
|
|
311
|
+
(0, decorator_validation_1.required)(),
|
|
312
|
+
__metadata("design:type", Object)
|
|
313
|
+
], Group.prototype, "tenant", void 0);
|
|
314
|
+
__decorate([
|
|
315
|
+
(0, core_1.manyToOne)(() => OrgUnit, org_based_authorization_system_js_1.REL_NULLIFY, false, undefined, "fk_groups_org_unit"),
|
|
316
|
+
__metadata("design:type", Object)
|
|
317
|
+
], Group.prototype, "orgUnit", void 0);
|
|
318
|
+
__decorate([
|
|
319
|
+
(0, decorator_validation_1.required)(),
|
|
320
|
+
(0, decorator_validation_1.type)(String),
|
|
321
|
+
(0, core_1.column)(),
|
|
322
|
+
__metadata("design:type", String)
|
|
323
|
+
], Group.prototype, "name", void 0);
|
|
324
|
+
__decorate([
|
|
325
|
+
(0, decorator_validation_1.type)(Object),
|
|
326
|
+
(0, core_1.column)(),
|
|
327
|
+
__metadata("design:type", Object)
|
|
328
|
+
], Group.prototype, "metadata", void 0);
|
|
329
|
+
__decorate([
|
|
330
|
+
(0, core_1.oneToMany)(() => GroupMembership, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
331
|
+
__metadata("design:type", Array)
|
|
332
|
+
], Group.prototype, "members", void 0);
|
|
333
|
+
__decorate([
|
|
334
|
+
(0, core_1.createdAt)(),
|
|
335
|
+
__metadata("design:type", Date)
|
|
336
|
+
], Group.prototype, "createdAt", void 0);
|
|
337
|
+
__decorate([
|
|
338
|
+
(0, core_1.updatedAt)(),
|
|
339
|
+
__metadata("design:type", Date)
|
|
340
|
+
], Group.prototype, "updatedAt", void 0);
|
|
341
|
+
exports.Group = Group = __decorate([
|
|
342
|
+
(0, core_1.table)("groups"),
|
|
343
|
+
(0, decorator_validation_1.model)()
|
|
344
|
+
], Group);
|
|
345
|
+
let Principal = class Principal extends AuthorizationModel {
|
|
346
|
+
};
|
|
347
|
+
exports.Principal = Principal;
|
|
348
|
+
__decorate([
|
|
349
|
+
(0, core_1.pk)({ type: String }),
|
|
350
|
+
__metadata("design:type", String)
|
|
351
|
+
], Principal.prototype, "id", void 0);
|
|
352
|
+
__decorate([
|
|
353
|
+
(0, core_1.manyToOne)(() => Tenant, org_based_authorization_system_js_1.REL_RESTRICT, false, undefined, "fk_principals_tenant"),
|
|
354
|
+
(0, decorator_validation_1.required)(),
|
|
355
|
+
__metadata("design:type", Object)
|
|
356
|
+
], Principal.prototype, "tenant", void 0);
|
|
357
|
+
__decorate([
|
|
358
|
+
(0, decorator_validation_1.required)(),
|
|
359
|
+
(0, decorator_validation_1.type)(String),
|
|
360
|
+
(0, decorator_validation_1.option)(org_based_authorization_system_js_1.PrincipalKindOptions),
|
|
361
|
+
(0, core_1.column)(),
|
|
362
|
+
__metadata("design:type", String)
|
|
363
|
+
], Principal.prototype, "kind", void 0);
|
|
364
|
+
__decorate([
|
|
365
|
+
(0, decorator_validation_1.required)(),
|
|
366
|
+
(0, decorator_validation_1.type)(String),
|
|
367
|
+
(0, core_1.column)(),
|
|
368
|
+
__metadata("design:type", String)
|
|
369
|
+
], Principal.prototype, "subjectId", void 0);
|
|
370
|
+
__decorate([
|
|
371
|
+
(0, core_1.oneToMany)(() => RoleAssignment, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
372
|
+
__metadata("design:type", Array)
|
|
373
|
+
], Principal.prototype, "roleAssignments", void 0);
|
|
374
|
+
__decorate([
|
|
375
|
+
(0, core_1.oneToMany)(() => ResourceGrant, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
376
|
+
__metadata("design:type", Array)
|
|
377
|
+
], Principal.prototype, "resourceGrants", void 0);
|
|
378
|
+
__decorate([
|
|
379
|
+
(0, core_1.createdAt)(),
|
|
380
|
+
__metadata("design:type", Date)
|
|
381
|
+
], Principal.prototype, "createdAt", void 0);
|
|
382
|
+
__decorate([
|
|
383
|
+
(0, core_1.updatedAt)(),
|
|
384
|
+
__metadata("design:type", Date)
|
|
385
|
+
], Principal.prototype, "updatedAt", void 0);
|
|
386
|
+
exports.Principal = Principal = __decorate([
|
|
387
|
+
(0, core_1.table)("principals"),
|
|
388
|
+
(0, decorator_validation_1.model)()
|
|
389
|
+
], Principal);
|
|
390
|
+
let TenantMembership = class TenantMembership extends AuthorizationModel {
|
|
391
|
+
};
|
|
392
|
+
exports.TenantMembership = TenantMembership;
|
|
393
|
+
__decorate([
|
|
394
|
+
(0, core_1.pk)({ type: String }),
|
|
395
|
+
__metadata("design:type", String)
|
|
396
|
+
], TenantMembership.prototype, "id", void 0);
|
|
397
|
+
__decorate([
|
|
398
|
+
(0, core_1.manyToOne)(() => Tenant, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_tenant_memberships_tenant"),
|
|
399
|
+
(0, decorator_validation_1.required)(),
|
|
400
|
+
__metadata("design:type", Object)
|
|
401
|
+
], TenantMembership.prototype, "tenant", void 0);
|
|
402
|
+
__decorate([
|
|
403
|
+
(0, core_1.manyToOne)(() => User, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_tenant_memberships_user"),
|
|
404
|
+
(0, decorator_validation_1.required)(),
|
|
405
|
+
__metadata("design:type", Object)
|
|
406
|
+
], TenantMembership.prototype, "user", void 0);
|
|
407
|
+
__decorate([
|
|
408
|
+
(0, decorator_validation_1.required)(),
|
|
409
|
+
(0, decorator_validation_1.type)(String),
|
|
410
|
+
(0, decorator_validation_1.option)(org_based_authorization_system_js_1.MembershipStatusOptions),
|
|
411
|
+
(0, core_1.column)(),
|
|
412
|
+
__metadata("design:type", String)
|
|
413
|
+
], TenantMembership.prototype, "status", void 0);
|
|
414
|
+
__decorate([
|
|
415
|
+
(0, core_1.createdAt)(),
|
|
416
|
+
__metadata("design:type", Date)
|
|
417
|
+
], TenantMembership.prototype, "createdAt", void 0);
|
|
418
|
+
__decorate([
|
|
419
|
+
(0, core_1.updatedAt)(),
|
|
420
|
+
__metadata("design:type", Date)
|
|
421
|
+
], TenantMembership.prototype, "updatedAt", void 0);
|
|
422
|
+
exports.TenantMembership = TenantMembership = __decorate([
|
|
423
|
+
(0, core_1.table)("tenant_memberships"),
|
|
424
|
+
(0, decorator_validation_1.model)()
|
|
425
|
+
], TenantMembership);
|
|
426
|
+
let OrgUnitMembership = class OrgUnitMembership extends AuthorizationModel {
|
|
427
|
+
};
|
|
428
|
+
exports.OrgUnitMembership = OrgUnitMembership;
|
|
429
|
+
__decorate([
|
|
430
|
+
(0, core_1.pk)({ type: String }),
|
|
431
|
+
__metadata("design:type", String)
|
|
432
|
+
], OrgUnitMembership.prototype, "id", void 0);
|
|
433
|
+
__decorate([
|
|
434
|
+
(0, core_1.manyToOne)(() => Tenant, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_org_memberships_tenant"),
|
|
435
|
+
(0, decorator_validation_1.required)(),
|
|
436
|
+
__metadata("design:type", Object)
|
|
437
|
+
], OrgUnitMembership.prototype, "tenant", void 0);
|
|
438
|
+
__decorate([
|
|
439
|
+
(0, core_1.manyToOne)(() => OrgUnit, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_org_memberships_org_unit"),
|
|
440
|
+
(0, decorator_validation_1.required)(),
|
|
441
|
+
__metadata("design:type", Object)
|
|
442
|
+
], OrgUnitMembership.prototype, "orgUnit", void 0);
|
|
443
|
+
__decorate([
|
|
444
|
+
(0, core_1.manyToOne)(() => User, org_based_authorization_system_js_1.REL_RESTRICT, false, undefined, "fk_org_memberships_user"),
|
|
445
|
+
(0, decorator_validation_1.required)(),
|
|
446
|
+
__metadata("design:type", Object)
|
|
447
|
+
], OrgUnitMembership.prototype, "user", void 0);
|
|
448
|
+
__decorate([
|
|
449
|
+
(0, decorator_validation_1.required)(),
|
|
450
|
+
(0, decorator_validation_1.type)(String),
|
|
451
|
+
(0, decorator_validation_1.option)(org_based_authorization_system_js_1.MembershipStatusOptions),
|
|
452
|
+
(0, core_1.column)(),
|
|
453
|
+
__metadata("design:type", String)
|
|
454
|
+
], OrgUnitMembership.prototype, "status", void 0);
|
|
455
|
+
__decorate([
|
|
456
|
+
(0, core_1.createdAt)(),
|
|
457
|
+
__metadata("design:type", Date)
|
|
458
|
+
], OrgUnitMembership.prototype, "createdAt", void 0);
|
|
459
|
+
__decorate([
|
|
460
|
+
(0, core_1.updatedAt)(),
|
|
461
|
+
__metadata("design:type", Date)
|
|
462
|
+
], OrgUnitMembership.prototype, "updatedAt", void 0);
|
|
463
|
+
exports.OrgUnitMembership = OrgUnitMembership = __decorate([
|
|
464
|
+
(0, core_1.table)("org_unit_memberships"),
|
|
465
|
+
(0, decorator_validation_1.model)()
|
|
466
|
+
], OrgUnitMembership);
|
|
467
|
+
let GroupMembership = class GroupMembership extends AuthorizationModel {
|
|
468
|
+
};
|
|
469
|
+
exports.GroupMembership = GroupMembership;
|
|
470
|
+
__decorate([
|
|
471
|
+
(0, core_1.pk)({ type: String }),
|
|
472
|
+
__metadata("design:type", String)
|
|
473
|
+
], GroupMembership.prototype, "id", void 0);
|
|
474
|
+
__decorate([
|
|
475
|
+
(0, core_1.manyToOne)(() => Tenant, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_group_memberships_tenant"),
|
|
476
|
+
(0, decorator_validation_1.required)(),
|
|
477
|
+
__metadata("design:type", Object)
|
|
478
|
+
], GroupMembership.prototype, "tenant", void 0);
|
|
479
|
+
__decorate([
|
|
480
|
+
(0, core_1.manyToOne)(() => Group, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_group_memberships_group"),
|
|
481
|
+
(0, decorator_validation_1.required)(),
|
|
482
|
+
__metadata("design:type", Object)
|
|
483
|
+
], GroupMembership.prototype, "group", void 0);
|
|
484
|
+
__decorate([
|
|
485
|
+
(0, core_1.manyToOne)(() => Principal, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_group_memberships_principal"),
|
|
486
|
+
(0, decorator_validation_1.required)(),
|
|
487
|
+
__metadata("design:type", Object)
|
|
488
|
+
], GroupMembership.prototype, "principal", void 0);
|
|
489
|
+
__decorate([
|
|
490
|
+
(0, decorator_validation_1.type)(Object),
|
|
491
|
+
(0, core_1.column)(),
|
|
492
|
+
__metadata("design:type", Object)
|
|
493
|
+
], GroupMembership.prototype, "metadata", void 0);
|
|
494
|
+
__decorate([
|
|
495
|
+
(0, core_1.createdAt)(),
|
|
496
|
+
__metadata("design:type", Date)
|
|
497
|
+
], GroupMembership.prototype, "createdAt", void 0);
|
|
498
|
+
exports.GroupMembership = GroupMembership = __decorate([
|
|
499
|
+
(0, core_1.table)("group_memberships"),
|
|
500
|
+
(0, decorator_validation_1.model)()
|
|
501
|
+
], GroupMembership);
|
|
502
|
+
let Permission = class Permission extends AuthorizationModel {
|
|
503
|
+
};
|
|
504
|
+
exports.Permission = Permission;
|
|
505
|
+
__decorate([
|
|
506
|
+
(0, core_1.pk)({ type: String }),
|
|
507
|
+
__metadata("design:type", String)
|
|
508
|
+
], Permission.prototype, "id", void 0);
|
|
509
|
+
__decorate([
|
|
510
|
+
(0, core_1.unique)(),
|
|
511
|
+
(0, decorator_validation_1.required)(),
|
|
512
|
+
(0, decorator_validation_1.type)(String),
|
|
513
|
+
(0, core_1.column)(),
|
|
514
|
+
__metadata("design:type", String)
|
|
515
|
+
], Permission.prototype, "key", void 0);
|
|
516
|
+
__decorate([
|
|
517
|
+
(0, decorator_validation_1.required)(),
|
|
518
|
+
(0, decorator_validation_1.type)(String),
|
|
519
|
+
(0, decorator_validation_1.option)(org_based_authorization_system_js_1.PermissionCategoryOptions),
|
|
520
|
+
(0, core_1.column)(),
|
|
521
|
+
__metadata("design:type", String)
|
|
522
|
+
], Permission.prototype, "category", void 0);
|
|
523
|
+
__decorate([
|
|
524
|
+
(0, decorator_validation_1.type)(String),
|
|
525
|
+
(0, core_1.column)(),
|
|
526
|
+
__metadata("design:type", String)
|
|
527
|
+
], Permission.prototype, "description", void 0);
|
|
528
|
+
__decorate([
|
|
529
|
+
(0, core_1.oneToMany)(() => RolePermission, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
530
|
+
__metadata("design:type", Array)
|
|
531
|
+
], Permission.prototype, "rolePermissions", void 0);
|
|
532
|
+
exports.Permission = Permission = __decorate([
|
|
533
|
+
(0, core_1.table)("permissions"),
|
|
534
|
+
(0, decorator_validation_1.model)()
|
|
535
|
+
], Permission);
|
|
536
|
+
let Role = class Role extends AuthorizationModel {
|
|
537
|
+
};
|
|
538
|
+
exports.Role = Role;
|
|
539
|
+
__decorate([
|
|
540
|
+
(0, core_1.pk)({ type: String }),
|
|
541
|
+
__metadata("design:type", String)
|
|
542
|
+
], Role.prototype, "id", void 0);
|
|
543
|
+
__decorate([
|
|
544
|
+
(0, core_1.manyToOne)(() => Tenant, org_based_authorization_system_js_1.REL_NULLIFY, false, undefined, "fk_roles_tenant"),
|
|
545
|
+
__metadata("design:type", Object)
|
|
546
|
+
], Role.prototype, "tenant", void 0);
|
|
547
|
+
__decorate([
|
|
548
|
+
(0, decorator_validation_1.required)(),
|
|
549
|
+
(0, decorator_validation_1.type)(String),
|
|
550
|
+
(0, core_1.column)(),
|
|
551
|
+
__metadata("design:type", String)
|
|
552
|
+
], Role.prototype, "key", void 0);
|
|
553
|
+
__decorate([
|
|
554
|
+
(0, decorator_validation_1.required)(),
|
|
555
|
+
(0, decorator_validation_1.type)(String),
|
|
556
|
+
(0, core_1.column)(),
|
|
557
|
+
__metadata("design:type", String)
|
|
558
|
+
], Role.prototype, "name", void 0);
|
|
559
|
+
__decorate([
|
|
560
|
+
(0, decorator_validation_1.type)(String),
|
|
561
|
+
(0, core_1.column)(),
|
|
562
|
+
__metadata("design:type", String)
|
|
563
|
+
], Role.prototype, "description", void 0);
|
|
564
|
+
__decorate([
|
|
565
|
+
(0, decorator_validation_1.type)(Object),
|
|
566
|
+
(0, core_1.column)(),
|
|
567
|
+
__metadata("design:type", Object)
|
|
568
|
+
], Role.prototype, "metadata", void 0);
|
|
569
|
+
__decorate([
|
|
570
|
+
(0, core_1.oneToMany)(() => RolePermission, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
571
|
+
__metadata("design:type", Array)
|
|
572
|
+
], Role.prototype, "rolePermissions", void 0);
|
|
573
|
+
__decorate([
|
|
574
|
+
(0, core_1.oneToMany)(() => RoleAssignment, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
575
|
+
__metadata("design:type", Array)
|
|
576
|
+
], Role.prototype, "assignments", void 0);
|
|
577
|
+
__decorate([
|
|
578
|
+
(0, core_1.createdAt)(),
|
|
579
|
+
__metadata("design:type", Date)
|
|
580
|
+
], Role.prototype, "createdAt", void 0);
|
|
581
|
+
__decorate([
|
|
582
|
+
(0, core_1.updatedAt)(),
|
|
583
|
+
__metadata("design:type", Date)
|
|
584
|
+
], Role.prototype, "updatedAt", void 0);
|
|
585
|
+
exports.Role = Role = __decorate([
|
|
586
|
+
(0, core_1.table)("roles"),
|
|
587
|
+
(0, decorator_validation_1.model)()
|
|
588
|
+
], Role);
|
|
589
|
+
let RolePermission = class RolePermission extends AuthorizationModel {
|
|
590
|
+
};
|
|
591
|
+
exports.RolePermission = RolePermission;
|
|
592
|
+
__decorate([
|
|
593
|
+
(0, core_1.pk)({ type: String }),
|
|
594
|
+
__metadata("design:type", String)
|
|
595
|
+
], RolePermission.prototype, "id", void 0);
|
|
596
|
+
__decorate([
|
|
597
|
+
(0, core_1.manyToOne)(() => Role, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_role_permissions_role"),
|
|
598
|
+
(0, decorator_validation_1.required)(),
|
|
599
|
+
__metadata("design:type", Object)
|
|
600
|
+
], RolePermission.prototype, "role", void 0);
|
|
601
|
+
__decorate([
|
|
602
|
+
(0, core_1.manyToOne)(() => Permission, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_role_permissions_permission"),
|
|
603
|
+
(0, decorator_validation_1.required)(),
|
|
604
|
+
__metadata("design:type", Object)
|
|
605
|
+
], RolePermission.prototype, "permission", void 0);
|
|
606
|
+
__decorate([
|
|
607
|
+
(0, core_1.createdAt)(),
|
|
608
|
+
__metadata("design:type", Date)
|
|
609
|
+
], RolePermission.prototype, "createdAt", void 0);
|
|
610
|
+
exports.RolePermission = RolePermission = __decorate([
|
|
611
|
+
(0, core_1.table)("role_permissions"),
|
|
612
|
+
(0, decorator_validation_1.model)()
|
|
613
|
+
], RolePermission);
|
|
614
|
+
let RoleAssignment = class RoleAssignment extends AuthorizationModel {
|
|
615
|
+
};
|
|
616
|
+
exports.RoleAssignment = RoleAssignment;
|
|
617
|
+
__decorate([
|
|
618
|
+
(0, core_1.pk)({ type: String }),
|
|
619
|
+
__metadata("design:type", String)
|
|
620
|
+
], RoleAssignment.prototype, "id", void 0);
|
|
621
|
+
__decorate([
|
|
622
|
+
(0, core_1.manyToOne)(() => Tenant, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_role_assignments_tenant"),
|
|
623
|
+
(0, decorator_validation_1.required)(),
|
|
624
|
+
__metadata("design:type", Object)
|
|
625
|
+
], RoleAssignment.prototype, "tenant", void 0);
|
|
626
|
+
__decorate([
|
|
627
|
+
(0, core_1.manyToOne)(() => Principal, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_role_assignments_principal"),
|
|
628
|
+
(0, decorator_validation_1.required)(),
|
|
629
|
+
__metadata("design:type", Object)
|
|
630
|
+
], RoleAssignment.prototype, "principal", void 0);
|
|
631
|
+
__decorate([
|
|
632
|
+
(0, core_1.manyToOne)(() => Role, org_based_authorization_system_js_1.REL_RESTRICT, false, undefined, "fk_role_assignments_role"),
|
|
633
|
+
(0, decorator_validation_1.required)(),
|
|
634
|
+
__metadata("design:type", Object)
|
|
635
|
+
], RoleAssignment.prototype, "role", void 0);
|
|
636
|
+
__decorate([
|
|
637
|
+
(0, decorator_validation_1.required)(),
|
|
638
|
+
(0, decorator_validation_1.type)(String),
|
|
639
|
+
(0, decorator_validation_1.option)(org_based_authorization_system_js_1.ScopeKindOptions),
|
|
640
|
+
(0, core_1.column)(),
|
|
641
|
+
__metadata("design:type", String)
|
|
642
|
+
], RoleAssignment.prototype, "scopeKind", void 0);
|
|
643
|
+
__decorate([
|
|
644
|
+
(0, decorator_validation_1.required)(),
|
|
645
|
+
(0, decorator_validation_1.type)(String),
|
|
646
|
+
(0, core_1.column)(),
|
|
647
|
+
__metadata("design:type", String)
|
|
648
|
+
], RoleAssignment.prototype, "scopeId", void 0);
|
|
649
|
+
__decorate([
|
|
650
|
+
(0, decorator_validation_1.required)(),
|
|
651
|
+
(0, decorator_validation_1.type)(Boolean),
|
|
652
|
+
(0, core_1.column)(),
|
|
653
|
+
__metadata("design:type", Boolean)
|
|
654
|
+
], RoleAssignment.prototype, "inheritDown", void 0);
|
|
655
|
+
__decorate([
|
|
656
|
+
(0, core_1.column)(),
|
|
657
|
+
__metadata("design:type", Date)
|
|
658
|
+
], RoleAssignment.prototype, "startsAt", void 0);
|
|
659
|
+
__decorate([
|
|
660
|
+
(0, core_1.column)(),
|
|
661
|
+
__metadata("design:type", Date)
|
|
662
|
+
], RoleAssignment.prototype, "expiresAt", void 0);
|
|
663
|
+
__decorate([
|
|
664
|
+
(0, decorator_validation_1.type)(Object),
|
|
665
|
+
(0, core_1.column)(),
|
|
666
|
+
__metadata("design:type", Object)
|
|
667
|
+
], RoleAssignment.prototype, "conditions", void 0);
|
|
668
|
+
__decorate([
|
|
669
|
+
(0, core_1.createdAt)(),
|
|
670
|
+
__metadata("design:type", Date)
|
|
671
|
+
], RoleAssignment.prototype, "createdAt", void 0);
|
|
672
|
+
__decorate([
|
|
673
|
+
(0, core_1.updatedAt)(),
|
|
674
|
+
__metadata("design:type", Date)
|
|
675
|
+
], RoleAssignment.prototype, "updatedAt", void 0);
|
|
676
|
+
exports.RoleAssignment = RoleAssignment = __decorate([
|
|
677
|
+
(0, core_1.table)("role_assignments"),
|
|
678
|
+
(0, decorator_validation_1.model)()
|
|
679
|
+
], RoleAssignment);
|
|
680
|
+
let InheritanceBlock = class InheritanceBlock extends AuthorizationModel {
|
|
681
|
+
};
|
|
682
|
+
exports.InheritanceBlock = InheritanceBlock;
|
|
683
|
+
__decorate([
|
|
684
|
+
(0, core_1.pk)({ type: String }),
|
|
685
|
+
__metadata("design:type", String)
|
|
686
|
+
], InheritanceBlock.prototype, "id", void 0);
|
|
687
|
+
__decorate([
|
|
688
|
+
(0, core_1.manyToOne)(() => Tenant, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_inheritance_blocks_tenant"),
|
|
689
|
+
(0, decorator_validation_1.required)(),
|
|
690
|
+
__metadata("design:type", Object)
|
|
691
|
+
], InheritanceBlock.prototype, "tenant", void 0);
|
|
692
|
+
__decorate([
|
|
693
|
+
(0, core_1.manyToOne)(() => OrgUnit, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_inheritance_blocks_org_unit"),
|
|
694
|
+
(0, decorator_validation_1.required)(),
|
|
695
|
+
__metadata("design:type", Object)
|
|
696
|
+
], InheritanceBlock.prototype, "orgUnit", void 0);
|
|
697
|
+
__decorate([
|
|
698
|
+
(0, core_1.manyToOne)(() => OrgUnit, org_based_authorization_system_js_1.REL_NULLIFY, false, undefined, "fk_inheritance_blocks_blocked_ancestor"),
|
|
699
|
+
__metadata("design:type", Object)
|
|
700
|
+
], InheritanceBlock.prototype, "blockedFromAncestor", void 0);
|
|
701
|
+
__decorate([
|
|
702
|
+
(0, decorator_validation_1.required)(),
|
|
703
|
+
(0, decorator_validation_1.type)(String),
|
|
704
|
+
(0, decorator_validation_1.option)(org_based_authorization_system_js_1.PermissionCategoryOptions),
|
|
705
|
+
(0, core_1.column)(),
|
|
706
|
+
__metadata("design:type", String)
|
|
707
|
+
], InheritanceBlock.prototype, "permissionCategory", void 0);
|
|
708
|
+
__decorate([
|
|
709
|
+
(0, decorator_validation_1.type)(String),
|
|
710
|
+
(0, core_1.column)(),
|
|
711
|
+
__metadata("design:type", String)
|
|
712
|
+
], InheritanceBlock.prototype, "reason", void 0);
|
|
713
|
+
__decorate([
|
|
714
|
+
(0, core_1.createdAt)(),
|
|
715
|
+
__metadata("design:type", Date)
|
|
716
|
+
], InheritanceBlock.prototype, "createdAt", void 0);
|
|
717
|
+
__decorate([
|
|
718
|
+
(0, core_1.updatedAt)(),
|
|
719
|
+
__metadata("design:type", Date)
|
|
720
|
+
], InheritanceBlock.prototype, "updatedAt", void 0);
|
|
721
|
+
exports.InheritanceBlock = InheritanceBlock = __decorate([
|
|
722
|
+
(0, core_1.table)("inheritance_blocks"),
|
|
723
|
+
(0, decorator_validation_1.model)()
|
|
724
|
+
], InheritanceBlock);
|
|
725
|
+
let ProtectedResource = class ProtectedResource extends AuthorizationModel {
|
|
726
|
+
};
|
|
727
|
+
exports.ProtectedResource = ProtectedResource;
|
|
728
|
+
__decorate([
|
|
729
|
+
(0, core_1.pk)({ type: String }),
|
|
730
|
+
__metadata("design:type", String)
|
|
731
|
+
], ProtectedResource.prototype, "id", void 0);
|
|
732
|
+
__decorate([
|
|
733
|
+
(0, core_1.manyToOne)(() => Tenant, org_based_authorization_system_js_1.REL_RESTRICT, false, undefined, "fk_protected_resources_tenant"),
|
|
734
|
+
(0, decorator_validation_1.required)(),
|
|
735
|
+
__metadata("design:type", Object)
|
|
736
|
+
], ProtectedResource.prototype, "tenant", void 0);
|
|
737
|
+
__decorate([
|
|
738
|
+
(0, core_1.manyToOne)(() => OrgUnit, org_based_authorization_system_js_1.REL_RESTRICT, false, undefined, "fk_protected_resources_org_unit"),
|
|
739
|
+
(0, decorator_validation_1.required)(),
|
|
740
|
+
__metadata("design:type", Object)
|
|
741
|
+
], ProtectedResource.prototype, "orgUnit", void 0);
|
|
742
|
+
__decorate([
|
|
743
|
+
(0, decorator_validation_1.required)(),
|
|
744
|
+
(0, decorator_validation_1.type)(String),
|
|
745
|
+
(0, core_1.column)(),
|
|
746
|
+
__metadata("design:type", String)
|
|
747
|
+
], ProtectedResource.prototype, "resourceType", void 0);
|
|
748
|
+
__decorate([
|
|
749
|
+
(0, decorator_validation_1.required)(),
|
|
750
|
+
(0, decorator_validation_1.type)(String),
|
|
751
|
+
(0, core_1.column)(),
|
|
752
|
+
__metadata("design:type", String)
|
|
753
|
+
], ProtectedResource.prototype, "resourceId", void 0);
|
|
754
|
+
__decorate([
|
|
755
|
+
(0, decorator_validation_1.required)(),
|
|
756
|
+
(0, decorator_validation_1.type)(String),
|
|
757
|
+
(0, decorator_validation_1.option)(org_based_authorization_system_js_1.ResourceVisibilityOptions),
|
|
758
|
+
(0, core_1.column)(),
|
|
759
|
+
__metadata("design:type", String)
|
|
760
|
+
], ProtectedResource.prototype, "visibility", void 0);
|
|
761
|
+
__decorate([
|
|
762
|
+
(0, core_1.manyToOne)(() => Principal, org_based_authorization_system_js_1.REL_NULLIFY, false, undefined, "fk_protected_resources_owner"),
|
|
763
|
+
__metadata("design:type", Object)
|
|
764
|
+
], ProtectedResource.prototype, "owner", void 0);
|
|
765
|
+
__decorate([
|
|
766
|
+
(0, decorator_validation_1.type)(String),
|
|
767
|
+
(0, core_1.column)(),
|
|
768
|
+
__metadata("design:type", String)
|
|
769
|
+
], ProtectedResource.prototype, "sensitivity", void 0);
|
|
770
|
+
__decorate([
|
|
771
|
+
(0, decorator_validation_1.type)(Object),
|
|
772
|
+
(0, core_1.column)(),
|
|
773
|
+
__metadata("design:type", Object)
|
|
774
|
+
], ProtectedResource.prototype, "metadata", void 0);
|
|
775
|
+
__decorate([
|
|
776
|
+
(0, core_1.oneToMany)(() => ResourceGrant, org_based_authorization_system_js_1.REL_RESTRICT, false),
|
|
777
|
+
__metadata("design:type", Array)
|
|
778
|
+
], ProtectedResource.prototype, "grants", void 0);
|
|
779
|
+
__decorate([
|
|
780
|
+
(0, core_1.createdAt)(),
|
|
781
|
+
__metadata("design:type", Date)
|
|
782
|
+
], ProtectedResource.prototype, "createdAt", void 0);
|
|
783
|
+
__decorate([
|
|
784
|
+
(0, core_1.updatedAt)(),
|
|
785
|
+
__metadata("design:type", Date)
|
|
786
|
+
], ProtectedResource.prototype, "updatedAt", void 0);
|
|
787
|
+
exports.ProtectedResource = ProtectedResource = __decorate([
|
|
788
|
+
(0, core_1.table)("protected_resources"),
|
|
789
|
+
(0, decorator_validation_1.model)()
|
|
790
|
+
], ProtectedResource);
|
|
791
|
+
let ResourceGrant = class ResourceGrant extends AuthorizationModel {
|
|
792
|
+
};
|
|
793
|
+
exports.ResourceGrant = ResourceGrant;
|
|
794
|
+
__decorate([
|
|
795
|
+
(0, core_1.pk)({ type: String }),
|
|
796
|
+
__metadata("design:type", String)
|
|
797
|
+
], ResourceGrant.prototype, "id", void 0);
|
|
798
|
+
__decorate([
|
|
799
|
+
(0, core_1.manyToOne)(() => Tenant, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_resource_grants_tenant"),
|
|
800
|
+
(0, decorator_validation_1.required)(),
|
|
801
|
+
__metadata("design:type", Object)
|
|
802
|
+
], ResourceGrant.prototype, "tenant", void 0);
|
|
803
|
+
__decorate([
|
|
804
|
+
(0, core_1.manyToOne)(() => ProtectedResource, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_resource_grants_resource"),
|
|
805
|
+
(0, decorator_validation_1.required)(),
|
|
806
|
+
__metadata("design:type", Object)
|
|
807
|
+
], ResourceGrant.prototype, "resource", void 0);
|
|
808
|
+
__decorate([
|
|
809
|
+
(0, core_1.manyToOne)(() => Principal, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_resource_grants_principal"),
|
|
810
|
+
(0, decorator_validation_1.required)(),
|
|
811
|
+
__metadata("design:type", Object)
|
|
812
|
+
], ResourceGrant.prototype, "principal", void 0);
|
|
813
|
+
__decorate([
|
|
814
|
+
(0, decorator_validation_1.required)(),
|
|
815
|
+
(0, decorator_validation_1.type)(String),
|
|
816
|
+
(0, core_1.column)(),
|
|
817
|
+
__metadata("design:type", String)
|
|
818
|
+
], ResourceGrant.prototype, "permissionKey", void 0);
|
|
819
|
+
__decorate([
|
|
820
|
+
(0, core_1.column)(),
|
|
821
|
+
__metadata("design:type", Date)
|
|
822
|
+
], ResourceGrant.prototype, "startsAt", void 0);
|
|
823
|
+
__decorate([
|
|
824
|
+
(0, core_1.column)(),
|
|
825
|
+
__metadata("design:type", Date)
|
|
826
|
+
], ResourceGrant.prototype, "expiresAt", void 0);
|
|
827
|
+
__decorate([
|
|
828
|
+
(0, decorator_validation_1.type)(Object),
|
|
829
|
+
(0, core_1.column)(),
|
|
830
|
+
__metadata("design:type", Object)
|
|
831
|
+
], ResourceGrant.prototype, "conditions", void 0);
|
|
832
|
+
__decorate([
|
|
833
|
+
(0, core_1.manyToOne)(() => Principal, org_based_authorization_system_js_1.REL_RESTRICT, false, undefined, "fk_resource_grants_created_by"),
|
|
834
|
+
__metadata("design:type", Object)
|
|
835
|
+
], ResourceGrant.prototype, "createdBy", void 0);
|
|
836
|
+
__decorate([
|
|
837
|
+
(0, core_1.createdAt)(),
|
|
838
|
+
__metadata("design:type", Date)
|
|
839
|
+
], ResourceGrant.prototype, "createdAt", void 0);
|
|
840
|
+
__decorate([
|
|
841
|
+
(0, core_1.updatedAt)(),
|
|
842
|
+
__metadata("design:type", Date)
|
|
843
|
+
], ResourceGrant.prototype, "updatedAt", void 0);
|
|
844
|
+
exports.ResourceGrant = ResourceGrant = __decorate([
|
|
845
|
+
(0, core_1.table)("resource_grants"),
|
|
846
|
+
(0, decorator_validation_1.model)()
|
|
847
|
+
], ResourceGrant);
|
|
848
|
+
let EffectivePermission = class EffectivePermission extends AuthorizationModel {
|
|
849
|
+
};
|
|
850
|
+
exports.EffectivePermission = EffectivePermission;
|
|
851
|
+
__decorate([
|
|
852
|
+
(0, core_1.pk)({ type: String }),
|
|
853
|
+
__metadata("design:type", String)
|
|
854
|
+
], EffectivePermission.prototype, "id", void 0);
|
|
855
|
+
__decorate([
|
|
856
|
+
(0, core_1.manyToOne)(() => Tenant, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_effective_permissions_tenant"),
|
|
857
|
+
(0, decorator_validation_1.required)(),
|
|
858
|
+
__metadata("design:type", Object)
|
|
859
|
+
], EffectivePermission.prototype, "tenant", void 0);
|
|
860
|
+
__decorate([
|
|
861
|
+
(0, core_1.manyToOne)(() => Principal, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_effective_permissions_principal"),
|
|
862
|
+
(0, decorator_validation_1.required)(),
|
|
863
|
+
__metadata("design:type", Object)
|
|
864
|
+
], EffectivePermission.prototype, "principal", void 0);
|
|
865
|
+
__decorate([
|
|
866
|
+
(0, decorator_validation_1.required)(),
|
|
867
|
+
(0, decorator_validation_1.type)(String),
|
|
868
|
+
(0, core_1.column)(),
|
|
869
|
+
__metadata("design:type", String)
|
|
870
|
+
], EffectivePermission.prototype, "permissionKey", void 0);
|
|
871
|
+
__decorate([
|
|
872
|
+
(0, decorator_validation_1.required)(),
|
|
873
|
+
(0, decorator_validation_1.type)(String),
|
|
874
|
+
(0, decorator_validation_1.option)(org_based_authorization_system_js_1.ScopeKindOptions),
|
|
875
|
+
(0, core_1.column)(),
|
|
876
|
+
__metadata("design:type", String)
|
|
877
|
+
], EffectivePermission.prototype, "scopeKind", void 0);
|
|
878
|
+
__decorate([
|
|
879
|
+
(0, decorator_validation_1.required)(),
|
|
880
|
+
(0, decorator_validation_1.type)(String),
|
|
881
|
+
(0, core_1.column)(),
|
|
882
|
+
__metadata("design:type", String)
|
|
883
|
+
], EffectivePermission.prototype, "scopeId", void 0);
|
|
884
|
+
__decorate([
|
|
885
|
+
(0, decorator_validation_1.required)(),
|
|
886
|
+
(0, decorator_validation_1.type)(String),
|
|
887
|
+
(0, core_1.column)(),
|
|
888
|
+
__metadata("design:type", String)
|
|
889
|
+
], EffectivePermission.prototype, "sourceKind", void 0);
|
|
890
|
+
__decorate([
|
|
891
|
+
(0, decorator_validation_1.required)(),
|
|
892
|
+
(0, decorator_validation_1.type)(String),
|
|
893
|
+
(0, core_1.column)(),
|
|
894
|
+
__metadata("design:type", String)
|
|
895
|
+
], EffectivePermission.prototype, "sourceId", void 0);
|
|
896
|
+
__decorate([
|
|
897
|
+
(0, core_1.column)(),
|
|
898
|
+
__metadata("design:type", Date)
|
|
899
|
+
], EffectivePermission.prototype, "startsAt", void 0);
|
|
900
|
+
__decorate([
|
|
901
|
+
(0, core_1.column)(),
|
|
902
|
+
__metadata("design:type", Date)
|
|
903
|
+
], EffectivePermission.prototype, "expiresAt", void 0);
|
|
904
|
+
__decorate([
|
|
905
|
+
(0, core_1.createdAt)(),
|
|
906
|
+
__metadata("design:type", Date)
|
|
907
|
+
], EffectivePermission.prototype, "createdAt", void 0);
|
|
908
|
+
exports.EffectivePermission = EffectivePermission = __decorate([
|
|
909
|
+
(0, core_1.table)("effective_permissions"),
|
|
910
|
+
(0, decorator_validation_1.model)()
|
|
911
|
+
], EffectivePermission);
|
|
912
|
+
let StorageBinding = class StorageBinding extends AuthorizationModel {
|
|
913
|
+
};
|
|
914
|
+
exports.StorageBinding = StorageBinding;
|
|
915
|
+
__decorate([
|
|
916
|
+
(0, core_1.pk)({ type: String }),
|
|
917
|
+
__metadata("design:type", String)
|
|
918
|
+
], StorageBinding.prototype, "id", void 0);
|
|
919
|
+
__decorate([
|
|
920
|
+
(0, core_1.manyToOne)(() => Tenant, org_based_authorization_system_js_1.REL_CASCADE_DEPENDENT, false, undefined, "fk_storage_bindings_tenant"),
|
|
921
|
+
(0, decorator_validation_1.required)(),
|
|
922
|
+
__metadata("design:type", Object)
|
|
923
|
+
], StorageBinding.prototype, "tenant", void 0);
|
|
924
|
+
__decorate([
|
|
925
|
+
(0, decorator_validation_1.required)(),
|
|
926
|
+
(0, decorator_validation_1.type)(String),
|
|
927
|
+
(0, decorator_validation_1.option)(org_based_authorization_system_js_1.StorageKindOptions),
|
|
928
|
+
(0, core_1.column)(),
|
|
929
|
+
__metadata("design:type", String)
|
|
930
|
+
], StorageBinding.prototype, "storageKind", void 0);
|
|
931
|
+
__decorate([
|
|
932
|
+
(0, decorator_validation_1.required)(),
|
|
933
|
+
(0, decorator_validation_1.type)(String),
|
|
934
|
+
(0, decorator_validation_1.option)(org_based_authorization_system_js_1.StorageBindingKindOptions),
|
|
935
|
+
(0, core_1.column)(),
|
|
936
|
+
__metadata("design:type", String)
|
|
937
|
+
], StorageBinding.prototype, "bindingKind", void 0);
|
|
938
|
+
__decorate([
|
|
939
|
+
(0, decorator_validation_1.required)(),
|
|
940
|
+
(0, decorator_validation_1.type)(String),
|
|
941
|
+
(0, core_1.column)(),
|
|
942
|
+
__metadata("design:type", String)
|
|
943
|
+
], StorageBinding.prototype, "bindingKey", void 0);
|
|
944
|
+
__decorate([
|
|
945
|
+
(0, decorator_validation_1.required)(),
|
|
946
|
+
(0, decorator_validation_1.type)(String),
|
|
947
|
+
(0, core_1.column)(),
|
|
948
|
+
__metadata("design:type", String)
|
|
949
|
+
], StorageBinding.prototype, "region", void 0);
|
|
950
|
+
__decorate([
|
|
951
|
+
(0, decorator_validation_1.type)(Object),
|
|
952
|
+
(0, core_1.column)(),
|
|
953
|
+
__metadata("design:type", Object)
|
|
954
|
+
], StorageBinding.prototype, "config", void 0);
|
|
955
|
+
__decorate([
|
|
956
|
+
(0, core_1.createdAt)(),
|
|
957
|
+
__metadata("design:type", Date)
|
|
958
|
+
], StorageBinding.prototype, "createdAt", void 0);
|
|
959
|
+
__decorate([
|
|
960
|
+
(0, core_1.updatedAt)(),
|
|
961
|
+
__metadata("design:type", Date)
|
|
962
|
+
], StorageBinding.prototype, "updatedAt", void 0);
|
|
963
|
+
exports.StorageBinding = StorageBinding = __decorate([
|
|
964
|
+
(0, core_1.table)("storage_bindings"),
|
|
965
|
+
(0, decorator_validation_1.model)()
|
|
966
|
+
], StorageBinding);
|
|
967
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWJhc2VkLWF1dGhvcml6YXRpb24tc3lzdGVtLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9uYW1lc3BhY2VzL29yZy1iYXNlZC1hdXRob3JpemF0aW9uLXN5c3RlbS5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxFQUFFLEVBQ0YsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRyxPQUFPLEVBQ0wsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsV0FBVyxFQUNYLFlBQVksRUFDWixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QixXQUFXLEVBQ1gsa0JBQWtCLEdBQ25CLDRDQUF5QztBQUUxQyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsS0FBSztJQUMzQyxZQUFZLElBQWM7UUFDeEIsS0FBSyxDQUFDLElBQWEsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQUlNLElBQU0sTUFBTSxHQUFaLE1BQU0sTUFBTyxTQUFRLGtCQUFrQjtDQVc3QyxDQUFBO0FBVnVCO0lBQXJCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzs7a0NBQWE7QUFDYztJQUEvQyxNQUFNLEVBQUU7SUFBRSxRQUFRLEVBQUU7SUFBRSxNQUFN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O0FBSU0sSUFBTSxjQUFjLEdBQXBCLE1BQU0sY0FBZSxTQUFRLGtCQUFrQjtDQVlyRCxDQUFBO0FBWHVCO0lBQXJCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzs7MENBQWE7QUFHbEM7SUFGQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsNEJBQTRCLENBQUM7SUFDOUYsUUFBUSxFQUFFOzs4Q0FDYztBQUN5QztJQUFqRSxRQUFRLEVBQUU7SUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQUUsTUFBTSxDQUFDLGtCQUFrQixDQUFDO0lBQUUsTUFBTSxFQUFFOzttREFBMkI7QUFDbkI7SUFBeEUsUUFBUSxFQUFFO0lBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUFFLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQztJQUFFLE1BQU0sRUFBRTs7bURBQWtDO0FBQ3BFO0lBQXJDLFFBQVEsRUFBRTtJQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFBRSxNQUFNLEVBQUU7O2tEQUFxQjtBQUNwQjtJQUFyQyxRQUFRLEVBQUU7SUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQUUsTUFBTSxFQUFFOzs4Q0FBaUI7QUFDNUI7SUFBekIsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUFFLE1BQU0sRUFBRTs7OENBQWtDO0FBQzlDO0lBQVosU0FBUyxFQUFFOzhCQUFhLElBQUk7aURBQUM7QUFDakI7SUFBWixTQUFTLEVBQUU7OEJBQWEsSUFBSTtpREFBQztBQVhuQixjQUFjO0lBRjFCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztJQUN6QixLQUFLLEVBQUU7R0FDSyxjQUFjLENBWTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY29sdW1uLFxuICBjcmVhdGVkQXQsXG4gIG1hbnlUb09uZSxcbiAgb25lVG9NYW55LFxuICBwayxcbiAgdGFibGUsXG4gIHVuaXF1ZSxcbiAgdXBkYXRlZEF0LFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IE1vZGVsLCBtb2RlbCwgb3B0aW9uLCByZXF1aXJlZCwgdHlwZSBhcyB0eXBlT2YgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBJc29sYXRpb25UaWVyLFxuICBJc29sYXRpb25UaWVyT3B0aW9ucyxcbiAgTWVtYmVyc2hpcFN0YXR1cyxcbiAgTWVtYmVyc2hpcFN0YXR1c09wdGlvbnMsXG4gIFBlcm1pc3Npb25DYXRlZ29yeSxcbiAgUGVybWlzc2lvbkNhdGVnb3J5T3B0aW9ucyxcbiAgUHJpbmNpcGFsS2luZCxcbiAgUHJpbmNpcGFsS2luZE9wdGlvbnMsXG4gIFJFTF9DQVNDQURFX0RFUEVOREVOVCxcbiAgUkVMX05VTExJRlksXG4gIFJFTF9SRVNUUklDVCxcbiAgUmVzb3VyY2VWaXNpYmlsaXR5LFxuICBSZXNvdXJjZVZpc2liaWxpdHlPcHRpb25zLFxuICBTY29wZUtpbmQsXG4gIFNjb3BlS2luZE9wdGlvbnMsXG4gIFN0b3JhZ2VCaW5kaW5nS2luZCxcbiAgU3RvcmFnZUJpbmRpbmdLaW5kT3B0aW9ucyxcbiAgU3RvcmFnZUtpbmQsXG4gIFN0b3JhZ2VLaW5kT3B0aW9ucyxcbn0gZnJvbSBcIi4vb3JnLWJhc2VkLWF1dGhvcml6YXRpb24tc3lzdGVtXCI7XG5cbmV4cG9ydCBjbGFzcyBBdXRob3JpemF0aW9uTW9kZWwgZXh0ZW5kcyBNb2RlbCB7XG4gIGNvbnN0cnVjdG9yKGRhdGE/OiB1bmtub3duKSB7XG4gICAgc3VwZXIoZGF0YSBhcyBuZXZlcik7XG4gIH1cbn1cblxuQHRhYmxlKFwidGVuYW50c1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBUZW5hbnQgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEB1bmlxdWUoKSBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHNsdWchOiBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgbmFtZSE6IHN0cmluZztcbiAgQHJlcXVpcmVkKCkgQHR5cGVPZihTdHJpbmcpIEBvcHRpb24oSXNvbGF0aW9uVGllck9wdGlvbnMpIEBjb2x1bW4oKSBpc29sYXRpb25UaWVyITogSXNvbGF0aW9uVGllcjtcbiAgQG9uZVRvTWFueSgoKSA9PiBPcmdVbml0LCBSRUxfUkVTVFJJQ1QsIGZhbHNlKSBvcmdVbml0cz86IE9yZ1VuaXRbXSB8IHN0cmluZ1tdO1xuICBAb25lVG9NYW55KCgpID0+IFRlbmFudE1lbWJlcnNoaXAsIFJFTF9SRVNUUklDVCwgZmFsc2UpIG1lbWJlcnNoaXBzPzogVGVuYW50TWVtYmVyc2hpcFtdIHwgc3RyaW5nW107XG4gIEBvbmVUb01hbnkoKCkgPT4gUHJpbmNpcGFsLCBSRUxfUkVTVFJJQ1QsIGZhbHNlKSBwcmluY2lwYWxzPzogUHJpbmNpcGFsW10gfCBzdHJpbmdbXTtcbiAgQG9uZVRvTWFueSgoKSA9PiBTdG9yYWdlQmluZGluZywgUkVMX1JFU1RSSUNULCBmYWxzZSkgc3RvcmFnZUJpbmRpbmdzPzogU3RvcmFnZUJpbmRpbmdbXSB8IHN0cmluZ1tdO1xuICBAY3JlYXRlZEF0KCkgY3JlYXRlZEF0ITogRGF0ZTtcbiAgQHVwZGF0ZWRBdCgpIHVwZGF0ZWRBdCE6IERhdGU7XG59XG5cbkB0YWJsZShcInRlbmFudF9wcm9maWxlc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBUZW5hbnRQcm9maWxlIGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbiAgQHBrKHsgdHlwZTogU3RyaW5nIH0pIGlkITogc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IFRlbmFudCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3RlbmFudF9wcm9maWxlc190ZW5hbnRcIilcbiAgQHJlcXVpcmVkKClcbiAgdGVuYW50ITogVGVuYW50IHwgc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHByb2ZpbGVLZXkhOiBzdHJpbmc7XG4gIEB0eXBlT2YoT2JqZWN0KSBAY29sdW1uKCkgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgQGNyZWF0ZWRBdCgpIGNyZWF0ZWRBdCE6IERhdGU7XG4gIEB1cGRhdGVkQXQoKSB1cGRhdGVkQXQhOiBEYXRlO1xufVxuXG5AdGFibGUoXCJvcmdfdW5pdHNcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgT3JnVW5pdCBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG4gIEBwayh7IHR5cGU6IFN0cmluZyB9KSBpZCE6IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9SRVNUUklDVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19vcmdfdW5pdHNfdGVuYW50XCIpXG4gIEByZXF1aXJlZCgpXG4gIHRlbmFudCE6IFRlbmFudCB8IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBPcmdVbml0LCBSRUxfUkVTVFJJQ1QsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfb3JnX3VuaXRzX3BhcmVudFwiKVxuICBwYXJlbnQ/OiBPcmdVbml0IHwgc3RyaW5nO1xuICBAb25lVG9NYW55KCgpID0+IE9yZ1VuaXQsIFJFTF9SRVNUUklDVCwgZmFsc2UpIGNoaWxkcmVuPzogT3JnVW5pdFtdIHwgc3RyaW5nW107XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgbmFtZSE6IHN0cmluZztcbiAgQHJlcXVpcmVkKCkgQHR5cGVPZihTdHJpbmcpIEBjb2x1bW4oKSBwYXRoITogc3RyaW5nO1xuICBAdHlwZU9mKE9iamVjdCkgQGNvbHVtbigpIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIEBvbmVUb01hbnkoKCkgPT4gT3JnVW5pdE1lbWJlcnNoaXAsIFJFTF9SRVNUUklDVCwgZmFsc2UpIG1lbWJlcnNoaXBzPzogT3JnVW5pdE1lbWJlcnNoaXBbXSB8IHN0cmluZ1tdO1xuICBAb25lVG9NYW55KCgpID0+IFByb3RlY3RlZFJlc291cmNlLCBSRUxfUkVTVFJJQ1QsIGZhbHNlKSByZXNvdXJjZXM/OiBQcm90ZWN0ZWRSZXNvdXJjZVtdIHwgc3RyaW5nW107XG4gIEBvbmVUb01hbnkoKCkgPT4gSW5oZXJpdGFuY2VCbG9jaywgUkVMX1JFU1RSSUNULCBmYWxzZSkgaW5oZXJpdGFuY2VCbG9ja3M/OiBJbmhlcml0YW5jZUJsb2NrW10gfCBzdHJpbmdbXTtcbiAgQG9uZVRvTWFueSgoKSA9PiBPcmdVbml0Q2xvc3VyZSwgUkVMX1JFU1RSSUNULCBmYWxzZSkgYW5jZXN0b3JMaW5rcz86IE9yZ1VuaXRDbG9zdXJlW10gfCBzdHJpbmdbXTtcbiAgQG9uZVRvTWFueSgoKSA9PiBPcmdVbml0Q2xvc3VyZSwgUkVMX1JFU1RSSUNULCBmYWxzZSkgZGVzY2VuZGFudExpbmtzPzogT3JnVW5pdENsb3N1cmVbXSB8IHN0cmluZ1tdO1xuICBAY3JlYXRlZEF0KCkgY3JlYXRlZEF0ITogRGF0ZTtcbiAgQHVwZGF0ZWRBdCgpIHVwZGF0ZWRBdCE6IERhdGU7XG59XG5cbkB0YWJsZShcIm9yZ191bml0X3Byb2ZpbGVzXCIpXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIE9yZ1VuaXRQcm9maWxlIGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbiAgQHBrKHsgdHlwZTogU3RyaW5nIH0pIGlkITogc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IE9yZ1VuaXQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19vcmdfdW5pdF9wcm9maWxlc19vcmdfdW5pdFwiKVxuICBAcmVxdWlyZWQoKVxuICBvcmdVbml0ITogT3JnVW5pdCB8IHN0cmluZztcbiAgQHJlcXVpcmVkKCkgQHR5cGVPZihTdHJpbmcpIEBjb2x1bW4oKSBwcm9maWxlS2V5ITogc3RyaW5nO1xuICBAdHlwZU9mKE9iamVjdCkgQGNvbHVtbigpIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIEBjcmVhdGVkQXQoKSBjcmVhdGVkQXQhOiBEYXRlO1xuICBAdXBkYXRlZEF0KCkgdXBkYXRlZEF0ITogRGF0ZTtcbn1cblxuQHRhYmxlKFwib3JnX3VuaXRfY2xvc3VyZVwiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBPcmdVbml0Q2xvc3VyZSBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG4gIEBwayh7IHR5cGU6IFN0cmluZyB9KSBpZCE6IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19vcmdfY2xvc3VyZV90ZW5hbnRcIilcbiAgQHJlcXVpcmVkKClcbiAgdGVuYW50ITogVGVuYW50IHwgc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IE9yZ1VuaXQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19vcmdfY2xvc3VyZV9hbmNlc3RvclwiKVxuICBAcmVxdWlyZWQoKVxuICBhbmNlc3RvciE6IE9yZ1VuaXQgfCBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gT3JnVW5pdCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX29yZ19jbG9zdXJlX2Rlc2NlbmRhbnRcIilcbiAgQHJlcXVpcmVkKClcbiAgZGVzY2VuZGFudCE6IE9yZ1VuaXQgfCBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoTnVtYmVyKSBAY29sdW1uKCkgZGVwdGghOiBudW1iZXI7XG4gIEBjcmVhdGVkQXQoKSBjcmVhdGVkQXQhOiBEYXRlO1xufVxuXG5AdGFibGUoXCJ1c2Vyc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBVc2VyIGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbiAgQHBrKHsgdHlwZTogU3RyaW5nIH0pIGlkITogc3RyaW5nO1xuICBAdW5pcXVlKCkgQHR5cGVPZihTdHJpbmcpIEBjb2x1bW4oKSBlbWFpbD86IHN0cmluZztcbiAgQHVuaXF1ZSgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgcGhvbmU/OiBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgZGlzcGxheU5hbWUhOiBzdHJpbmc7XG4gIEBvbmVUb01hbnkoKCkgPT4gVGVuYW50TWVtYmVyc2hpcCwgUkVMX1JFU1RSSUNULCBmYWxzZSkgdGVuYW50TWVtYmVyc2hpcHM/OiBUZW5hbnRNZW1iZXJzaGlwW10gfCBzdHJpbmdbXTtcbiAgQG9uZVRvTWFueSgoKSA9PiBPcmdVbml0TWVtYmVyc2hpcCwgUkVMX1JFU1RSSUNULCBmYWxzZSkgb3JnVW5pdE1lbWJlcnNoaXBzPzogT3JnVW5pdE1lbWJlcnNoaXBbXSB8IHN0cmluZ1tdO1xuICBAY3JlYXRlZEF0KCkgY3JlYXRlZEF0ITogRGF0ZTtcbiAgQHVwZGF0ZWRBdCgpIHVwZGF0ZWRBdCE6IERhdGU7XG59XG5cbkB0YWJsZShcImdyb3Vwc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBHcm91cCBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG4gIEBwayh7IHR5cGU6IFN0cmluZyB9KSBpZCE6IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9SRVNUUklDVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19ncm91cHNfdGVuYW50XCIpXG4gIEByZXF1aXJlZCgpXG4gIHRlbmFudCE6IFRlbmFudCB8IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBPcmdVbml0LCBSRUxfTlVMTElGWSwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19ncm91cHNfb3JnX3VuaXRcIilcbiAgb3JnVW5pdD86IE9yZ1VuaXQgfCBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgbmFtZSE6IHN0cmluZztcbiAgQHR5cGVPZihPYmplY3QpIEBjb2x1bW4oKSBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBAb25lVG9NYW55KCgpID0+IEdyb3VwTWVtYmVyc2hpcCwgUkVMX1JFU1RSSUNULCBmYWxzZSkgbWVtYmVycz86IEdyb3VwTWVtYmVyc2hpcFtdIHwgc3RyaW5nW107XG4gIEBjcmVhdGVkQXQoKSBjcmVhdGVkQXQhOiBEYXRlO1xuICBAdXBkYXRlZEF0KCkgdXBkYXRlZEF0ITogRGF0ZTtcbn1cblxuQHRhYmxlKFwicHJpbmNpcGFsc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBQcmluY2lwYWwgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVGVuYW50LCBSRUxfUkVTVFJJQ1QsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfcHJpbmNpcGFsc190ZW5hbnRcIilcbiAgQHJlcXVpcmVkKClcbiAgdGVuYW50ITogVGVuYW50IHwgc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQG9wdGlvbihQcmluY2lwYWxLaW5kT3B0aW9ucykgQGNvbHVtbigpIGtpbmQhOiBQcmluY2lwYWxLaW5kO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHN1YmplY3RJZCE6IHN0cmluZztcbiAgQG9uZVRvTWFueSgoKSA9PiBSb2xlQXNzaWdubWVudCwgUkVMX1JFU1RSSUNULCBmYWxzZSkgcm9sZUFzc2lnbm1lbnRzPzogUm9sZUFzc2lnbm1lbnRbXSB8IHN0cmluZ1tdO1xuICBAb25lVG9NYW55KCgpID0+IFJlc291cmNlR3JhbnQsIFJFTF9SRVNUUklDVCwgZmFsc2UpIHJlc291cmNlR3JhbnRzPzogUmVzb3VyY2VHcmFudFtdIHwgc3RyaW5nW107XG4gIEBjcmVhdGVkQXQoKSBjcmVhdGVkQXQhOiBEYXRlO1xuICBAdXBkYXRlZEF0KCkgdXBkYXRlZEF0ITogRGF0ZTtcbn1cblxuQHRhYmxlKFwidGVuYW50X21lbWJlcnNoaXBzXCIpXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIFRlbmFudE1lbWJlcnNoaXAgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVGVuYW50LCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfdGVuYW50X21lbWJlcnNoaXBzX3RlbmFudFwiKVxuICBAcmVxdWlyZWQoKVxuICB0ZW5hbnQhOiBUZW5hbnQgfCBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVXNlciwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3RlbmFudF9tZW1iZXJzaGlwc191c2VyXCIpXG4gIEByZXF1aXJlZCgpXG4gIHVzZXIhOiBVc2VyIHwgc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQG9wdGlvbihNZW1iZXJzaGlwU3RhdHVzT3B0aW9ucykgQGNvbHVtbigpIHN0YXR1cyE6IE1lbWJlcnNoaXBTdGF0dXM7XG4gIEBjcmVhdGVkQXQoKSBjcmVhdGVkQXQhOiBEYXRlO1xuICBAdXBkYXRlZEF0KCkgdXBkYXRlZEF0ITogRGF0ZTtcbn1cblxuQHRhYmxlKFwib3JnX3VuaXRfbWVtYmVyc2hpcHNcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgT3JnVW5pdE1lbWJlcnNoaXAgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVGVuYW50LCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfb3JnX21lbWJlcnNoaXBzX3RlbmFudFwiKVxuICBAcmVxdWlyZWQoKVxuICB0ZW5hbnQhOiBUZW5hbnQgfCBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gT3JnVW5pdCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX29yZ19tZW1iZXJzaGlwc19vcmdfdW5pdFwiKVxuICBAcmVxdWlyZWQoKVxuICBvcmdVbml0ITogT3JnVW5pdCB8IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBVc2VyLCBSRUxfUkVTVFJJQ1QsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfb3JnX21lbWJlcnNoaXBzX3VzZXJcIilcbiAgQHJlcXVpcmVkKClcbiAgdXNlciE6IFVzZXIgfCBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAb3B0aW9uKE1lbWJlcnNoaXBTdGF0dXNPcHRpb25zKSBAY29sdW1uKCkgc3RhdHVzITogTWVtYmVyc2hpcFN0YXR1cztcbiAgQGNyZWF0ZWRBdCgpIGNyZWF0ZWRBdCE6IERhdGU7XG4gIEB1cGRhdGVkQXQoKSB1cGRhdGVkQXQhOiBEYXRlO1xufVxuXG5AdGFibGUoXCJncm91cF9tZW1iZXJzaGlwc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBHcm91cE1lbWJlcnNoaXAgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVGVuYW50LCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfZ3JvdXBfbWVtYmVyc2hpcHNfdGVuYW50XCIpXG4gIEByZXF1aXJlZCgpXG4gIHRlbmFudCE6IFRlbmFudCB8IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBHcm91cCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX2dyb3VwX21lbWJlcnNoaXBzX2dyb3VwXCIpXG4gIEByZXF1aXJlZCgpXG4gIGdyb3VwITogR3JvdXAgfCBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gUHJpbmNpcGFsLCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfZ3JvdXBfbWVtYmVyc2hpcHNfcHJpbmNpcGFsXCIpXG4gIEByZXF1aXJlZCgpXG4gIHByaW5jaXBhbCE6IFByaW5jaXBhbCB8IHN0cmluZztcbiAgQHR5cGVPZihPYmplY3QpIEBjb2x1bW4oKSBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBAY3JlYXRlZEF0KCkgY3JlYXRlZEF0ITogRGF0ZTtcbn1cblxuQHRhYmxlKFwicGVybWlzc2lvbnNcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbiBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG4gIEBwayh7IHR5cGU6IFN0cmluZyB9KSBpZCE6IHN0cmluZztcbiAgQHVuaXF1ZSgpIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkga2V5ITogc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQG9wdGlvbihQZXJtaXNzaW9uQ2F0ZWdvcnlPcHRpb25zKSBAY29sdW1uKCkgY2F0ZWdvcnkhOiBQZXJtaXNzaW9uQ2F0ZWdvcnk7XG4gIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIEBvbmVUb01hbnkoKCkgPT4gUm9sZVBlcm1pc3Npb24sIFJFTF9SRVNUUklDVCwgZmFsc2UpIHJvbGVQZXJtaXNzaW9ucz86IFJvbGVQZXJtaXNzaW9uW10gfCBzdHJpbmdbXTtcbn1cblxuQHRhYmxlKFwicm9sZXNcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgUm9sZSBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG4gIEBwayh7IHR5cGU6IFN0cmluZyB9KSBpZCE6IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9OVUxMSUZZLCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3JvbGVzX3RlbmFudFwiKVxuICB0ZW5hbnQ/OiBUZW5hbnQgfCBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkga2V5ITogc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIG5hbWUhOiBzdHJpbmc7XG4gIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIEB0eXBlT2YoT2JqZWN0KSBAY29sdW1uKCkgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgQG9uZVRvTWFueSgoKSA9PiBSb2xlUGVybWlzc2lvbiwgUkVMX1JFU1RSSUNULCBmYWxzZSkgcm9sZVBlcm1pc3Npb25zPzogUm9sZVBlcm1pc3Npb25bXSB8IHN0cmluZ1tdO1xuICBAb25lVG9NYW55KCgpID0+IFJvbGVBc3NpZ25tZW50LCBSRUxfUkVTVFJJQ1QsIGZhbHNlKSBhc3NpZ25tZW50cz86IFJvbGVBc3NpZ25tZW50W10gfCBzdHJpbmdbXTtcbiAgQGNyZWF0ZWRBdCgpIGNyZWF0ZWRBdCE6IERhdGU7XG4gIEB1cGRhdGVkQXQoKSB1cGRhdGVkQXQhOiBEYXRlO1xufVxuXG5AdGFibGUoXCJyb2xlX3Blcm1pc3Npb25zXCIpXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIFJvbGVQZXJtaXNzaW9uIGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbiAgQHBrKHsgdHlwZTogU3RyaW5nIH0pIGlkITogc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IFJvbGUsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19yb2xlX3Blcm1pc3Npb25zX3JvbGVcIilcbiAgQHJlcXVpcmVkKClcbiAgcm9sZSE6IFJvbGUgfCBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gUGVybWlzc2lvbiwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3JvbGVfcGVybWlzc2lvbnNfcGVybWlzc2lvblwiKVxuICBAcmVxdWlyZWQoKVxuICBwZXJtaXNzaW9uITogUGVybWlzc2lvbiB8IHN0cmluZztcbiAgQGNyZWF0ZWRBdCgpIGNyZWF0ZWRBdCE6IERhdGU7XG59XG5cbkB0YWJsZShcInJvbGVfYXNzaWdubWVudHNcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgUm9sZUFzc2lnbm1lbnQgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVGVuYW50LCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfcm9sZV9hc3NpZ25tZW50c190ZW5hbnRcIilcbiAgQHJlcXVpcmVkKClcbiAgdGVuYW50ITogVGVuYW50IHwgc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IFByaW5jaXBhbCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3JvbGVfYXNzaWdubWVudHNfcHJpbmNpcGFsXCIpXG4gIEByZXF1aXJlZCgpXG4gIHByaW5jaXBhbCE6IFByaW5jaXBhbCB8IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBSb2xlLCBSRUxfUkVTVFJJQ1QsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfcm9sZV9hc3NpZ25tZW50c19yb2xlXCIpXG4gIEByZXF1aXJlZCgpXG4gIHJvbGUhOiBSb2xlIHwgc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQG9wdGlvbihTY29wZUtpbmRPcHRpb25zKSBAY29sdW1uKCkgc2NvcGVLaW5kITogU2NvcGVLaW5kO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHNjb3BlSWQhOiBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoQm9vbGVhbikgQGNvbHVtbigpIGluaGVyaXREb3duITogYm9vbGVhbjtcbiAgQGNvbHVtbigpIHN0YXJ0c0F0PzogRGF0ZTtcbiAgQGNvbHVtbigpIGV4cGlyZXNBdD86IERhdGU7XG4gIEB0eXBlT2YoT2JqZWN0KSBAY29sdW1uKCkgY29uZGl0aW9ucz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBAY3JlYXRlZEF0KCkgY3JlYXRlZEF0ITogRGF0ZTtcbiAgQHVwZGF0ZWRBdCgpIHVwZGF0ZWRBdCE6IERhdGU7XG59XG5cbkB0YWJsZShcImluaGVyaXRhbmNlX2Jsb2Nrc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBJbmhlcml0YW5jZUJsb2NrIGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbiAgQHBrKHsgdHlwZTogU3RyaW5nIH0pIGlkITogc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IFRlbmFudCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX2luaGVyaXRhbmNlX2Jsb2Nrc190ZW5hbnRcIilcbiAgQHJlcXVpcmVkKClcbiAgdGVuYW50ITogVGVuYW50IHwgc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IE9yZ1VuaXQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19pbmhlcml0YW5jZV9ibG9ja3Nfb3JnX3VuaXRcIilcbiAgQHJlcXVpcmVkKClcbiAgb3JnVW5pdCE6IE9yZ1VuaXQgfCBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gT3JnVW5pdCwgUkVMX05VTExJRlksIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfaW5oZXJpdGFuY2VfYmxvY2tzX2Jsb2NrZWRfYW5jZXN0b3JcIilcbiAgYmxvY2tlZEZyb21BbmNlc3Rvcj86IE9yZ1VuaXQgfCBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAb3B0aW9uKFBlcm1pc3Npb25DYXRlZ29yeU9wdGlvbnMpIEBjb2x1bW4oKSBwZXJtaXNzaW9uQ2F0ZWdvcnkhOiBQZXJtaXNzaW9uQ2F0ZWdvcnk7XG4gIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgcmVhc29uPzogc3RyaW5nO1xuICBAY3JlYXRlZEF0KCkgY3JlYXRlZEF0ITogRGF0ZTtcbiAgQHVwZGF0ZWRBdCgpIHVwZGF0ZWRBdCE6IERhdGU7XG59XG5cbkB0YWJsZShcInByb3RlY3RlZF9yZXNvdXJjZXNcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgUHJvdGVjdGVkUmVzb3VyY2UgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVGVuYW50LCBSRUxfUkVTVFJJQ1QsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfcHJvdGVjdGVkX3Jlc291cmNlc190ZW5hbnRcIilcbiAgQHJlcXVpcmVkKClcbiAgdGVuYW50ITogVGVuYW50IHwgc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IE9yZ1VuaXQsIFJFTF9SRVNUUklDVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19wcm90ZWN0ZWRfcmVzb3VyY2VzX29yZ191bml0XCIpXG4gIEByZXF1aXJlZCgpXG4gIG9yZ1VuaXQhOiBPcmdVbml0IHwgc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHJlc291cmNlVHlwZSE6IHN0cmluZztcbiAgQHJlcXVpcmVkKCkgQHR5cGVPZihTdHJpbmcpIEBjb2x1bW4oKSByZXNvdXJjZUlkITogc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQG9wdGlvbihSZXNvdXJjZVZpc2liaWxpdHlPcHRpb25zKSBAY29sdW1uKCkgdmlzaWJpbGl0eSE6IFJlc291cmNlVmlzaWJpbGl0eTtcbiAgQG1hbnlUb09uZSgoKSA9PiBQcmluY2lwYWwsIFJFTF9OVUxMSUZZLCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3Byb3RlY3RlZF9yZXNvdXJjZXNfb3duZXJcIilcbiAgb3duZXI/OiBQcmluY2lwYWwgfCBzdHJpbmc7XG4gIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgc2Vuc2l0aXZpdHk/OiBzdHJpbmc7XG4gIEB0eXBlT2YoT2JqZWN0KSBAY29sdW1uKCkgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgQG9uZVRvTWFueSgoKSA9PiBSZXNvdXJjZUdyYW50LCBSRUxfUkVTVFJJQ1QsIGZhbHNlKSBncmFudHM/OiBSZXNvdXJjZUdyYW50W10gfCBzdHJpbmdbXTtcbiAgQGNyZWF0ZWRBdCgpIGNyZWF0ZWRBdCE6IERhdGU7XG4gIEB1cGRhdGVkQXQoKSB1cGRhdGVkQXQhOiBEYXRlO1xufVxuXG5AdGFibGUoXCJyZXNvdXJjZV9ncmFudHNcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VHcmFudCBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG4gIEBwayh7IHR5cGU6IFN0cmluZyB9KSBpZCE6IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19yZXNvdXJjZV9ncmFudHNfdGVuYW50XCIpXG4gIEByZXF1aXJlZCgpXG4gIHRlbmFudCE6IFRlbmFudCB8IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBQcm90ZWN0ZWRSZXNvdXJjZSwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3Jlc291cmNlX2dyYW50c19yZXNvdXJjZVwiKVxuICBAcmVxdWlyZWQoKVxuICByZXNvdXJjZSE6IFByb3RlY3RlZFJlc291cmNlIHwgc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IFByaW5jaXBhbCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3Jlc291cmNlX2dyYW50c19wcmluY2lwYWxcIilcbiAgQHJlcXVpcmVkKClcbiAgcHJpbmNpcGFsITogUHJpbmNpcGFsIHwgc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHBlcm1pc3Npb25LZXkhOiBzdHJpbmc7XG4gIEBjb2x1bW4oKSBzdGFydHNBdD86IERhdGU7XG4gIEBjb2x1bW4oKSBleHBpcmVzQXQ/OiBEYXRlO1xuICBAdHlwZU9mKE9iamVjdCkgQGNvbHVtbigpIGNvbmRpdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgQG1hbnlUb09uZSgoKSA9PiBQcmluY2lwYWwsIFJFTF9SRVNUUklDVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19yZXNvdXJjZV9ncmFudHNfY3JlYXRlZF9ieVwiKVxuICBjcmVhdGVkQnk/OiBQcmluY2lwYWwgfCBzdHJpbmc7XG4gIEBjcmVhdGVkQXQoKSBjcmVhdGVkQXQhOiBEYXRlO1xuICBAdXBkYXRlZEF0KCkgdXBkYXRlZEF0ITogRGF0ZTtcbn1cblxuQHRhYmxlKFwiZWZmZWN0aXZlX3Blcm1pc3Npb25zXCIpXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIEVmZmVjdGl2ZVBlcm1pc3Npb24gZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVGVuYW50LCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfZWZmZWN0aXZlX3Blcm1pc3Npb25zX3RlbmFudFwiKVxuICBAcmVxdWlyZWQoKVxuICB0ZW5hbnQhOiBUZW5hbnQgfCBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gUHJpbmNpcGFsLCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfZWZmZWN0aXZlX3Blcm1pc3Npb25zX3ByaW5jaXBhbFwiKVxuICBAcmVxdWlyZWQoKVxuICBwcmluY2lwYWwhOiBQcmluY2lwYWwgfCBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgcGVybWlzc2lvbktleSE6IHN0cmluZztcbiAgQHJlcXVpcmVkKCkgQHR5cGVPZihTdHJpbmcpIEBvcHRpb24oU2NvcGVLaW5kT3B0aW9ucykgQGNvbHVtbigpIHNjb3BlS2luZCE6IFNjb3BlS2luZDtcbiAgQHJlcXVpcmVkKCkgQHR5cGVPZihTdHJpbmcpIEBjb2x1bW4oKSBzY29wZUlkITogc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHNvdXJjZUtpbmQhOiBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgc291cmNlSWQhOiBzdHJpbmc7XG4gIEBjb2x1bW4oKSBzdGFydHNBdD86IERhdGU7XG4gIEBjb2x1bW4oKSBleHBpcmVzQXQ/OiBEYXRlO1xuICBAY3JlYXRlZEF0KCkgY3JlYXRlZEF0ITogRGF0ZTtcbn1cblxuQHRhYmxlKFwic3RvcmFnZV9iaW5kaW5nc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBTdG9yYWdlQmluZGluZyBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG4gIEBwayh7IHR5cGU6IFN0cmluZyB9KSBpZCE6IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19zdG9yYWdlX2JpbmRpbmdzX3RlbmFudFwiKVxuICBAcmVxdWlyZWQoKVxuICB0ZW5hbnQhOiBUZW5hbnQgfCBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAb3B0aW9uKFN0b3JhZ2VLaW5kT3B0aW9ucykgQGNvbHVtbigpIHN0b3JhZ2VLaW5kITogU3RvcmFnZUtpbmQ7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAb3B0aW9uKFN0b3JhZ2VCaW5kaW5nS2luZE9wdGlvbnMpIEBjb2x1bW4oKSBiaW5kaW5nS2luZCE6IFN0b3JhZ2VCaW5kaW5nS2luZDtcbiAgQHJlcXVpcmVkKCkgQHR5cGVPZihTdHJpbmcpIEBjb2x1bW4oKSBiaW5kaW5nS2V5ITogc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHJlZ2lvbiE6IHN0cmluZztcbiAgQHR5cGVPZihPYmplY3QpIEBjb2x1bW4oKSBjb25maWc/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgQGNyZWF0ZWRBdCgpIGNyZWF0ZWRBdCE6IERhdGU7XG4gIEB1cGRhdGVkQXQoKSB1cGRhdGVkQXQhOiBEYXRlO1xufVxuIl19
|
|
968
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWJhc2VkLWF1dGhvcml6YXRpb24tc3lzdGVtLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm9yZy1iYXNlZC1hdXRob3JpemF0aW9uLXN5c3RlbS5tb2RlbHMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSTtJQUNqRixJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdILElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxVQUFVO1FBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7O1FBQzFILEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FB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TUFBTSxDQUFDO0NBQ3BDLEVBQUUsY0FBYyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMvQyxVQUFVLENBQUM7SUFDUCxJQUFBLDJCQUFNLEVBQUMsTUFBTSxDQUFDO0lBQ2QsSUFBQSxhQUFNLEdBQUU7SUFDUixVQUFVLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQztDQUNwQyxFQUFFLGNBQWMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDL0MsVUFBVSxDQUFDO0lBQ1AsSUFBQSxnQkFBUyxHQUFFO0lBQ1gsVUFBVSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUM7Q0FDbEMsRUFBRSxjQUFjLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2xELFVBQVUsQ0FBQztJQUNQLElBQUEsZ0JBQVMsR0FBRTtJQUNYLFVBQVUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDO0NBQ2xDLEVBQUUsY0FBYyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNsRCx5QkFBQSxjQUFjLEdBQUcsVUFBVSxDQUFDO0lBQ3hCLElBQUEsWUFBSyxFQUFDLGtCQUFrQixDQUFDO0lBQ3pCLElBQUEsNEJBQUssR0FBRTtDQUNWLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFFbkIsc3B3Q0FBc3B3QyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbnZhciBfX21ldGFkYXRhID0gKHRoaXMgJiYgdGhpcy5fX21ldGFkYXRhKSB8fCBmdW5jdGlvbiAoaywgdikge1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShrLCB2KTtcbn07XG5pbXBvcnQgeyBjb2x1bW4sIGNyZWF0ZWRBdCwgbWFueVRvT25lLCBvbmVUb01hbnksIHBrLCB0YWJsZSwgdW5pcXVlLCB1cGRhdGVkQXQsIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNb2RlbCwgbW9kZWwsIG9wdGlvbiwgcmVxdWlyZWQsIHR5cGUgYXMgdHlwZU9mIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgSXNvbGF0aW9uVGllciwgSXNvbGF0aW9uVGllck9wdGlvbnMsIE1lbWJlcnNoaXBTdGF0dXMsIE1lbWJlcnNoaXBTdGF0dXNPcHRpb25zLCBQZXJtaXNzaW9uQ2F0ZWdvcnksIFBlcm1pc3Npb25DYXRlZ29yeU9wdGlvbnMsIFByaW5jaXBhbEtpbmQsIFByaW5jaXBhbEtpbmRPcHRpb25zLCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIFJFTF9OVUxMSUZZLCBSRUxfUkVTVFJJQ1QsIFJlc291cmNlVmlzaWJpbGl0eSwgUmVzb3VyY2VWaXNpYmlsaXR5T3B0aW9ucywgU2NvcGVLaW5kLCBTY29wZUtpbmRPcHRpb25zLCBTdG9yYWdlQmluZGluZ0tpbmQsIFN0b3JhZ2VCaW5kaW5nS2luZE9wdGlvbnMsIFN0b3JhZ2VLaW5kLCBTdG9yYWdlS2luZE9wdGlvbnMsIH0gZnJvbSBcIi4vb3JnLWJhc2VkLWF1dGhvcml6YXRpb24tc3lzdGVtLmpzXCI7XG5leHBvcnQgY2xhc3MgQXV0aG9yaXphdGlvbk1vZGVsIGV4dGVuZHMgTW9kZWwge1xuICAgIGNvbnN0cnVjdG9yKGRhdGEpIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgfVxufVxubGV0IFRlbmFudCA9IGNsYXNzIFRlbmFudCBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG59O1xuX19kZWNvcmF0ZShbXG4gICAgcGsoeyB0eXBlOiBTdHJpbmcgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFRlbmFudC5wcm90b3R5cGUsIFwiaWRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHVuaXF1ZSgpLFxuICAgIHJlcXVpcmVkKCksXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFRlbmFudC5wcm90b3R5cGUsIFwic2x1Z1wiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB0eXBlT2YoU3RyaW5nKSxcbiAgICBjb2x1bW4oKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgVGVuYW50LnByb3RvdHlwZSwgXCJuYW1lXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHR5cGVPZihTdHJpbmcpLFxuICAgIG9wdGlvbihJc29sYXRpb25UaWVyT3B0aW9ucyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFRlbmFudC5wcm90b3R5cGUsIFwiaXNvbGF0aW9uVGllclwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgb25lVG9NYW55KCgpID0+IE9yZ1VuaXQsIFJFTF9SRVNUUklDVCwgZmFsc2UpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBBcnJheSlcbl0sIFRlbmFudC5wcm90b3R5cGUsIFwib3JnVW5pdHNcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG9uZVRvTWFueSgoKSA9PiBUZW5hbnRNZW1iZXJzaGlwLCBSRUxfUkVTVFJJQ1QsIGZhbHNlKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgQXJyYXkpXG5dLCBUZW5hbnQucHJvdG90eXBlLCBcIm1lbWJlcnNoaXBzXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBvbmVUb01hbnkoKCkgPT4gUHJpbmNpcGFsLCBSRUxfUkVTVFJJQ1QsIGZhbHNlKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgQXJyYXkpXG5dLCBUZW5hbnQucHJvdG90eXBlLCBcInByaW5jaXBhbHNcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG9uZVRvTWFueSgoKSA9PiBTdG9yYWdlQmluZGluZywgUkVMX1JFU1RSSUNULCBmYWxzZSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEFycmF5KVxuXSwgVGVuYW50LnByb3RvdHlwZSwgXCJzdG9yYWdlQmluZGluZ3NcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIGNyZWF0ZWRBdCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBEYXRlKVxuXSwgVGVuYW50LnByb3RvdHlwZSwgXCJjcmVhdGVkQXRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHVwZGF0ZWRBdCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBEYXRlKVxuXSwgVGVuYW50LnByb3RvdHlwZSwgXCJ1cGRhdGVkQXRcIiwgdm9pZCAwKTtcblRlbmFudCA9IF9fZGVjb3JhdGUoW1xuICAgIHRhYmxlKFwidGVuYW50c1wiKSxcbiAgICBtb2RlbCgpXG5dLCBUZW5hbnQpO1xuZXhwb3J0IHsgVGVuYW50IH07XG5sZXQgVGVuYW50UHJvZmlsZSA9IGNsYXNzIFRlbmFudFByb2ZpbGUgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHBrKHsgdHlwZTogU3RyaW5nIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBUZW5hbnRQcm9maWxlLnByb3RvdHlwZSwgXCJpZFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgbWFueVRvT25lKCgpID0+IFRlbmFudCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3RlbmFudF9wcm9maWxlc190ZW5hbnRcIiksXG4gICAgcmVxdWlyZWQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgVGVuYW50UHJvZmlsZS5wcm90b3R5cGUsIFwidGVuYW50XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHR5cGVPZihTdHJpbmcpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBUZW5hbnRQcm9maWxlLnByb3RvdHlwZSwgXCJwcm9maWxlS2V5XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICB0eXBlT2YoT2JqZWN0KSxcbiAgICBjb2x1bW4oKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgVGVuYW50UHJvZmlsZS5wcm90b3R5cGUsIFwibWV0YWRhdGFcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIGNyZWF0ZWRBdCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBEYXRlKVxuXSwgVGVuYW50UHJvZmlsZS5wcm90b3R5cGUsIFwiY3JlYXRlZEF0XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICB1cGRhdGVkQXQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRGF0ZSlcbl0sIFRlbmFudFByb2ZpbGUucHJvdG90eXBlLCBcInVwZGF0ZWRBdFwiLCB2b2lkIDApO1xuVGVuYW50UHJvZmlsZSA9IF9fZGVjb3JhdGUoW1xuICAgIHRhYmxlKFwidGVuYW50X3Byb2ZpbGVzXCIpLFxuICAgIG1vZGVsKClcbl0sIFRlbmFudFByb2ZpbGUpO1xuZXhwb3J0IHsgVGVuYW50UHJvZmlsZSB9O1xubGV0IE9yZ1VuaXQgPSBjbGFzcyBPcmdVbml0IGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbn07XG5fX2RlY29yYXRlKFtcbiAgICBwayh7IHR5cGU6IFN0cmluZyB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgT3JnVW5pdC5wcm90b3R5cGUsIFwiaWRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9SRVNUUklDVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19vcmdfdW5pdHNfdGVuYW50XCIpLFxuICAgIHJlcXVpcmVkKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIE9yZ1VuaXQucHJvdG90eXBlLCBcInRlbmFudFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgbWFueVRvT25lKCgpID0+IE9yZ1VuaXQsIFJFTF9SRVNUUklDVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19vcmdfdW5pdHNfcGFyZW50XCIpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBPcmdVbml0LnByb3RvdHlwZSwgXCJwYXJlbnRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG9uZVRvTWFueSgoKSA9PiBPcmdVbml0LCBSRUxfUkVTVFJJQ1QsIGZhbHNlKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgQXJyYXkpXG5dLCBPcmdVbml0LnByb3RvdHlwZSwgXCJjaGlsZHJlblwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB0eXBlT2YoU3RyaW5nKSxcbiAgICBjb2x1bW4oKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgT3JnVW5pdC5wcm90b3R5cGUsIFwibmFtZVwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB0eXBlT2YoU3RyaW5nKSxcbiAgICBjb2x1bW4oKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgT3JnVW5pdC5wcm90b3R5cGUsIFwicGF0aFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgdHlwZU9mKE9iamVjdCksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIE9yZ1VuaXQucHJvdG90eXBlLCBcIm1ldGFkYXRhXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBvbmVUb01hbnkoKCkgPT4gT3JnVW5pdE1lbWJlcnNoaXAsIFJFTF9SRVNUUklDVCwgZmFsc2UpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBBcnJheSlcbl0sIE9yZ1VuaXQucHJvdG90eXBlLCBcIm1lbWJlcnNoaXBzXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBvbmVUb01hbnkoKCkgPT4gUHJvdGVjdGVkUmVzb3VyY2UsIFJFTF9SRVNUUklDVCwgZmFsc2UpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBBcnJheSlcbl0sIE9yZ1VuaXQucHJvdG90eXBlLCBcInJlc291cmNlc1wiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgb25lVG9NYW55KCgpID0+IEluaGVyaXRhbmNlQmxvY2ssIFJFTF9SRVNUUklDVCwgZmFsc2UpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBBcnJheSlcbl0sIE9yZ1VuaXQucHJvdG90eXBlLCBcImluaGVyaXRhbmNlQmxvY2tzXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBvbmVUb01hbnkoKCkgPT4gT3JnVW5pdENsb3N1cmUsIFJFTF9SRVNUUklDVCwgZmFsc2UpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBBcnJheSlcbl0sIE9yZ1VuaXQucHJvdG90eXBlLCBcImFuY2VzdG9yTGlua3NcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG9uZVRvTWFueSgoKSA9PiBPcmdVbml0Q2xvc3VyZSwgUkVMX1JFU1RSSUNULCBmYWxzZSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEFycmF5KVxuXSwgT3JnVW5pdC5wcm90b3R5cGUsIFwiZGVzY2VuZGFudExpbmtzXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBjcmVhdGVkQXQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRGF0ZSlcbl0sIE9yZ1VuaXQucHJvdG90eXBlLCBcImNyZWF0ZWRBdFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgdXBkYXRlZEF0KCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIERhdGUpXG5dLCBPcmdVbml0LnByb3RvdHlwZSwgXCJ1cGRhdGVkQXRcIiwgdm9pZCAwKTtcbk9yZ1VuaXQgPSBfX2RlY29yYXRlKFtcbiAgICB0YWJsZShcIm9yZ191bml0c1wiKSxcbiAgICBtb2RlbCgpXG5dLCBPcmdVbml0KTtcbmV4cG9ydCB7IE9yZ1VuaXQgfTtcbmxldCBPcmdVbml0UHJvZmlsZSA9IGNsYXNzIE9yZ1VuaXRQcm9maWxlIGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbn07XG5fX2RlY29yYXRlKFtcbiAgICBwayh7IHR5cGU6IFN0cmluZyB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgT3JnVW5pdFByb2ZpbGUucHJvdG90eXBlLCBcImlkXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBtYW55VG9PbmUoKCkgPT4gT3JnVW5pdCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX29yZ191bml0X3Byb2ZpbGVzX29yZ191bml0XCIpLFxuICAgIHJlcXVpcmVkKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIE9yZ1VuaXRQcm9maWxlLnByb3RvdHlwZSwgXCJvcmdVbml0XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHR5cGVPZihTdHJpbmcpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBPcmdVbml0UHJvZmlsZS5wcm90b3R5cGUsIFwicHJvZmlsZUtleVwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgdHlwZU9mKE9iamVjdCksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIE9yZ1VuaXRQcm9maWxlLnByb3RvdHlwZSwgXCJtZXRhZGF0YVwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgY3JlYXRlZEF0KCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIERhdGUpXG5dLCBPcmdVbml0UHJvZmlsZS5wcm90b3R5cGUsIFwiY3JlYXRlZEF0XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICB1cGRhdGVkQXQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRGF0ZSlcbl0sIE9yZ1VuaXRQcm9maWxlLnByb3RvdHlwZSwgXCJ1cGRhdGVkQXRcIiwgdm9pZCAwKTtcbk9yZ1VuaXRQcm9maWxlID0gX19kZWNvcmF0ZShbXG4gICAgdGFibGUoXCJvcmdfdW5pdF9wcm9maWxlc1wiKSxcbiAgICBtb2RlbCgpXG5dLCBPcmdVbml0UHJvZmlsZSk7XG5leHBvcnQgeyBPcmdVbml0UHJvZmlsZSB9O1xubGV0IE9yZ1VuaXRDbG9zdXJlID0gY2xhc3MgT3JnVW5pdENsb3N1cmUgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHBrKHsgdHlwZTogU3RyaW5nIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBPcmdVbml0Q2xvc3VyZS5wcm90b3R5cGUsIFwiaWRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19vcmdfY2xvc3VyZV90ZW5hbnRcIiksXG4gICAgcmVxdWlyZWQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgT3JnVW5pdENsb3N1cmUucHJvdG90eXBlLCBcInRlbmFudFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgbWFueVRvT25lKCgpID0+IE9yZ1VuaXQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19vcmdfY2xvc3VyZV9hbmNlc3RvclwiKSxcbiAgICByZXF1aXJlZCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBPcmdVbml0Q2xvc3VyZS5wcm90b3R5cGUsIFwiYW5jZXN0b3JcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBPcmdVbml0LCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfb3JnX2Nsb3N1cmVfZGVzY2VuZGFudFwiKSxcbiAgICByZXF1aXJlZCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBPcmdVbml0Q2xvc3VyZS5wcm90b3R5cGUsIFwiZGVzY2VuZGFudFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB0eXBlT2YoTnVtYmVyKSxcbiAgICBjb2x1bW4oKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgTnVtYmVyKVxuXSwgT3JnVW5pdENsb3N1cmUucHJvdG90eXBlLCBcImRlcHRoXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBjcmVhdGVkQXQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRGF0ZSlcbl0sIE9yZ1VuaXRDbG9zdXJlLnByb3RvdHlwZSwgXCJjcmVhdGVkQXRcIiwgdm9pZCAwKTtcbk9yZ1VuaXRDbG9zdXJlID0gX19kZWNvcmF0ZShbXG4gICAgdGFibGUoXCJvcmdfdW5pdF9jbG9zdXJlXCIpLFxuICAgIG1vZGVsKClcbl0sIE9yZ1VuaXRDbG9zdXJlKTtcbmV4cG9ydCB7IE9yZ1VuaXRDbG9zdXJlIH07XG5sZXQgVXNlciA9IGNsYXNzIFVzZXIgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHBrKHsgdHlwZTogU3RyaW5nIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBVc2VyLnByb3RvdHlwZSwgXCJpZFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgdW5pcXVlKCksXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFVzZXIucHJvdG90eXBlLCBcImVtYWlsXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICB1bmlxdWUoKSxcbiAgICB0eXBlT2YoU3RyaW5nKSxcbiAgICBjb2x1bW4oKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgVXNlci5wcm90b3R5cGUsIFwicGhvbmVcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFVzZXIucHJvdG90eXBlLCBcImRpc3BsYXlOYW1lXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBvbmVUb01hbnkoKCkgPT4gVGVuYW50TWVtYmVyc2hpcCwgUkVMX1JFU1RSSUNULCBmYWxzZSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEFycmF5KVxuXSwgVXNlci5wcm90b3R5cGUsIFwidGVuYW50TWVtYmVyc2hpcHNcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG9uZVRvTWFueSgoKSA9PiBPcmdVbml0TWVtYmVyc2hpcCwgUkVMX1JFU1RSSUNULCBmYWxzZSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEFycmF5KVxuXSwgVXNlci5wcm90b3R5cGUsIFwib3JnVW5pdE1lbWJlcnNoaXBzXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBjcmVhdGVkQXQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRGF0ZSlcbl0sIFVzZXIucHJvdG90eXBlLCBcImNyZWF0ZWRBdFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgdXBkYXRlZEF0KCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIERhdGUpXG5dLCBVc2VyLnByb3RvdHlwZSwgXCJ1cGRhdGVkQXRcIiwgdm9pZCAwKTtcblVzZXIgPSBfX2RlY29yYXRlKFtcbiAgICB0YWJsZShcInVzZXJzXCIpLFxuICAgIG1vZGVsKClcbl0sIFVzZXIpO1xuZXhwb3J0IHsgVXNlciB9O1xubGV0IEdyb3VwID0gY2xhc3MgR3JvdXAgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHBrKHsgdHlwZTogU3RyaW5nIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBHcm91cC5wcm90b3R5cGUsIFwiaWRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9SRVNUUklDVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19ncm91cHNfdGVuYW50XCIpLFxuICAgIHJlcXVpcmVkKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIEdyb3VwLnByb3RvdHlwZSwgXCJ0ZW5hbnRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBPcmdVbml0LCBSRUxfTlVMTElGWSwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19ncm91cHNfb3JnX3VuaXRcIiksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIEdyb3VwLnByb3RvdHlwZSwgXCJvcmdVbml0XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHR5cGVPZihTdHJpbmcpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBHcm91cC5wcm90b3R5cGUsIFwibmFtZVwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgdHlwZU9mKE9iamVjdCksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIEdyb3VwLnByb3RvdHlwZSwgXCJtZXRhZGF0YVwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgb25lVG9NYW55KCgpID0+IEdyb3VwTWVtYmVyc2hpcCwgUkVMX1JFU1RSSUNULCBmYWxzZSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEFycmF5KVxuXSwgR3JvdXAucHJvdG90eXBlLCBcIm1lbWJlcnNcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIGNyZWF0ZWRBdCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBEYXRlKVxuXSwgR3JvdXAucHJvdG90eXBlLCBcImNyZWF0ZWRBdFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgdXBkYXRlZEF0KCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIERhdGUpXG5dLCBHcm91cC5wcm90b3R5cGUsIFwidXBkYXRlZEF0XCIsIHZvaWQgMCk7XG5Hcm91cCA9IF9fZGVjb3JhdGUoW1xuICAgIHRhYmxlKFwiZ3JvdXBzXCIpLFxuICAgIG1vZGVsKClcbl0sIEdyb3VwKTtcbmV4cG9ydCB7IEdyb3VwIH07XG5sZXQgUHJpbmNpcGFsID0gY2xhc3MgUHJpbmNpcGFsIGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbn07XG5fX2RlY29yYXRlKFtcbiAgICBwayh7IHR5cGU6IFN0cmluZyB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgUHJpbmNpcGFsLnByb3RvdHlwZSwgXCJpZFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgbWFueVRvT25lKCgpID0+IFRlbmFudCwgUkVMX1JFU1RSSUNULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3ByaW5jaXBhbHNfdGVuYW50XCIpLFxuICAgIHJlcXVpcmVkKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIFByaW5jaXBhbC5wcm90b3R5cGUsIFwidGVuYW50XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHR5cGVPZihTdHJpbmcpLFxuICAgIG9wdGlvbihQcmluY2lwYWxLaW5kT3B0aW9ucyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFByaW5jaXBhbC5wcm90b3R5cGUsIFwia2luZFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB0eXBlT2YoU3RyaW5nKSxcbiAgICBjb2x1bW4oKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgUHJpbmNpcGFsLnByb3RvdHlwZSwgXCJzdWJqZWN0SWRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG9uZVRvTWFueSgoKSA9PiBSb2xlQXNzaWdubWVudCwgUkVMX1JFU1RSSUNULCBmYWxzZSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEFycmF5KVxuXSwgUHJpbmNpcGFsLnByb3RvdHlwZSwgXCJyb2xlQXNzaWdubWVudHNcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG9uZVRvTWFueSgoKSA9PiBSZXNvdXJjZUdyYW50LCBSRUxfUkVTVFJJQ1QsIGZhbHNlKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgQXJyYXkpXG5dLCBQcmluY2lwYWwucHJvdG90eXBlLCBcInJlc291cmNlR3JhbnRzXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBjcmVhdGVkQXQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRGF0ZSlcbl0sIFByaW5jaXBhbC5wcm90b3R5cGUsIFwiY3JlYXRlZEF0XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICB1cGRhdGVkQXQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRGF0ZSlcbl0sIFByaW5jaXBhbC5wcm90b3R5cGUsIFwidXBkYXRlZEF0XCIsIHZvaWQgMCk7XG5QcmluY2lwYWwgPSBfX2RlY29yYXRlKFtcbiAgICB0YWJsZShcInByaW5jaXBhbHNcIiksXG4gICAgbW9kZWwoKVxuXSwgUHJpbmNpcGFsKTtcbmV4cG9ydCB7IFByaW5jaXBhbCB9O1xubGV0IFRlbmFudE1lbWJlcnNoaXAgPSBjbGFzcyBUZW5hbnRNZW1iZXJzaGlwIGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbn07XG5fX2RlY29yYXRlKFtcbiAgICBwayh7IHR5cGU6IFN0cmluZyB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgVGVuYW50TWVtYmVyc2hpcC5wcm90b3R5cGUsIFwiaWRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma190ZW5hbnRfbWVtYmVyc2hpcHNfdGVuYW50XCIpLFxuICAgIHJlcXVpcmVkKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIFRlbmFudE1lbWJlcnNoaXAucHJvdG90eXBlLCBcInRlbmFudFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgbWFueVRvT25lKCgpID0+IFVzZXIsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma190ZW5hbnRfbWVtYmVyc2hpcHNfdXNlclwiKSxcbiAgICByZXF1aXJlZCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBUZW5hbnRNZW1iZXJzaGlwLnByb3RvdHlwZSwgXCJ1c2VyXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHR5cGVPZihTdHJpbmcpLFxuICAgIG9wdGlvbihNZW1iZXJzaGlwU3RhdHVzT3B0aW9ucyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFRlbmFudE1lbWJlcnNoaXAucHJvdG90eXBlLCBcInN0YXR1c1wiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgY3JlYXRlZEF0KCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIERhdGUpXG5dLCBUZW5hbnRNZW1iZXJzaGlwLnByb3RvdHlwZSwgXCJjcmVhdGVkQXRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHVwZGF0ZWRBdCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBEYXRlKVxuXSwgVGVuYW50TWVtYmVyc2hpcC5wcm90b3R5cGUsIFwidXBkYXRlZEF0XCIsIHZvaWQgMCk7XG5UZW5hbnRNZW1iZXJzaGlwID0gX19kZWNvcmF0ZShbXG4gICAgdGFibGUoXCJ0ZW5hbnRfbWVtYmVyc2hpcHNcIiksXG4gICAgbW9kZWwoKVxuXSwgVGVuYW50TWVtYmVyc2hpcCk7XG5leHBvcnQgeyBUZW5hbnRNZW1iZXJzaGlwIH07XG5sZXQgT3JnVW5pdE1lbWJlcnNoaXAgPSBjbGFzcyBPcmdVbml0TWVtYmVyc2hpcCBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG59O1xuX19kZWNvcmF0ZShbXG4gICAgcGsoeyB0eXBlOiBTdHJpbmcgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIE9yZ1VuaXRNZW1iZXJzaGlwLnByb3RvdHlwZSwgXCJpZFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgbWFueVRvT25lKCgpID0+IFRlbmFudCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX29yZ19tZW1iZXJzaGlwc190ZW5hbnRcIiksXG4gICAgcmVxdWlyZWQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgT3JnVW5pdE1lbWJlcnNoaXAucHJvdG90eXBlLCBcInRlbmFudFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgbWFueVRvT25lKCgpID0+IE9yZ1VuaXQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19vcmdfbWVtYmVyc2hpcHNfb3JnX3VuaXRcIiksXG4gICAgcmVxdWlyZWQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgT3JnVW5pdE1lbWJlcnNoaXAucHJvdG90eXBlLCBcIm9yZ1VuaXRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBVc2VyLCBSRUxfUkVTVFJJQ1QsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfb3JnX21lbWJlcnNoaXBzX3VzZXJcIiksXG4gICAgcmVxdWlyZWQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgT3JnVW5pdE1lbWJlcnNoaXAucHJvdG90eXBlLCBcInVzZXJcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgb3B0aW9uKE1lbWJlcnNoaXBTdGF0dXNPcHRpb25zKSxcbiAgICBjb2x1bW4oKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgT3JnVW5pdE1lbWJlcnNoaXAucHJvdG90eXBlLCBcInN0YXR1c1wiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgY3JlYXRlZEF0KCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIERhdGUpXG5dLCBPcmdVbml0TWVtYmVyc2hpcC5wcm90b3R5cGUsIFwiY3JlYXRlZEF0XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICB1cGRhdGVkQXQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRGF0ZSlcbl0sIE9yZ1VuaXRNZW1iZXJzaGlwLnByb3RvdHlwZSwgXCJ1cGRhdGVkQXRcIiwgdm9pZCAwKTtcbk9yZ1VuaXRNZW1iZXJzaGlwID0gX19kZWNvcmF0ZShbXG4gICAgdGFibGUoXCJvcmdfdW5pdF9tZW1iZXJzaGlwc1wiKSxcbiAgICBtb2RlbCgpXG5dLCBPcmdVbml0TWVtYmVyc2hpcCk7XG5leHBvcnQgeyBPcmdVbml0TWVtYmVyc2hpcCB9O1xubGV0IEdyb3VwTWVtYmVyc2hpcCA9IGNsYXNzIEdyb3VwTWVtYmVyc2hpcCBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG59O1xuX19kZWNvcmF0ZShbXG4gICAgcGsoeyB0eXBlOiBTdHJpbmcgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIEdyb3VwTWVtYmVyc2hpcC5wcm90b3R5cGUsIFwiaWRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19ncm91cF9tZW1iZXJzaGlwc190ZW5hbnRcIiksXG4gICAgcmVxdWlyZWQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgR3JvdXBNZW1iZXJzaGlwLnByb3RvdHlwZSwgXCJ0ZW5hbnRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBHcm91cCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX2dyb3VwX21lbWJlcnNoaXBzX2dyb3VwXCIpLFxuICAgIHJlcXVpcmVkKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIEdyb3VwTWVtYmVyc2hpcC5wcm90b3R5cGUsIFwiZ3JvdXBcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBQcmluY2lwYWwsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19ncm91cF9tZW1iZXJzaGlwc19wcmluY2lwYWxcIiksXG4gICAgcmVxdWlyZWQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgR3JvdXBNZW1iZXJzaGlwLnByb3RvdHlwZSwgXCJwcmluY2lwYWxcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHR5cGVPZihPYmplY3QpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBHcm91cE1lbWJlcnNoaXAucHJvdG90eXBlLCBcIm1ldGFkYXRhXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBjcmVhdGVkQXQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRGF0ZSlcbl0sIEdyb3VwTWVtYmVyc2hpcC5wcm90b3R5cGUsIFwiY3JlYXRlZEF0XCIsIHZvaWQgMCk7XG5Hcm91cE1lbWJlcnNoaXAgPSBfX2RlY29yYXRlKFtcbiAgICB0YWJsZShcImdyb3VwX21lbWJlcnNoaXBzXCIpLFxuICAgIG1vZGVsKClcbl0sIEdyb3VwTWVtYmVyc2hpcCk7XG5leHBvcnQgeyBHcm91cE1lbWJlcnNoaXAgfTtcbmxldCBQZXJtaXNzaW9uID0gY2xhc3MgUGVybWlzc2lvbiBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG59O1xuX19kZWNvcmF0ZShbXG4gICAgcGsoeyB0eXBlOiBTdHJpbmcgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFBlcm1pc3Npb24ucHJvdG90eXBlLCBcImlkXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICB1bmlxdWUoKSxcbiAgICByZXF1aXJlZCgpLFxuICAgIHR5cGVPZihTdHJpbmcpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBQZXJtaXNzaW9uLnByb3RvdHlwZSwgXCJrZXlcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgb3B0aW9uKFBlcm1pc3Npb25DYXRlZ29yeU9wdGlvbnMpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBQZXJtaXNzaW9uLnByb3RvdHlwZSwgXCJjYXRlZ29yeVwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFBlcm1pc3Npb24ucHJvdG90eXBlLCBcImRlc2NyaXB0aW9uXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBvbmVUb01hbnkoKCkgPT4gUm9sZVBlcm1pc3Npb24sIFJFTF9SRVNUUklDVCwgZmFsc2UpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBBcnJheSlcbl0sIFBlcm1pc3Npb24ucHJvdG90eXBlLCBcInJvbGVQZXJtaXNzaW9uc1wiLCB2b2lkIDApO1xuUGVybWlzc2lvbiA9IF9fZGVjb3JhdGUoW1xuICAgIHRhYmxlKFwicGVybWlzc2lvbnNcIiksXG4gICAgbW9kZWwoKVxuXSwgUGVybWlzc2lvbik7XG5leHBvcnQgeyBQZXJtaXNzaW9uIH07XG5sZXQgUm9sZSA9IGNsYXNzIFJvbGUgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHBrKHsgdHlwZTogU3RyaW5nIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBSb2xlLnByb3RvdHlwZSwgXCJpZFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgbWFueVRvT25lKCgpID0+IFRlbmFudCwgUkVMX05VTExJRlksIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfcm9sZXNfdGVuYW50XCIpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBSb2xlLnByb3RvdHlwZSwgXCJ0ZW5hbnRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFJvbGUucHJvdG90eXBlLCBcImtleVwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB0eXBlT2YoU3RyaW5nKSxcbiAgICBjb2x1bW4oKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgUm9sZS5wcm90b3R5cGUsIFwibmFtZVwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFJvbGUucHJvdG90eXBlLCBcImRlc2NyaXB0aW9uXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICB0eXBlT2YoT2JqZWN0KSxcbiAgICBjb2x1bW4oKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgUm9sZS5wcm90b3R5cGUsIFwibWV0YWRhdGFcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG9uZVRvTWFueSgoKSA9PiBSb2xlUGVybWlzc2lvbiwgUkVMX1JFU1RSSUNULCBmYWxzZSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEFycmF5KVxuXSwgUm9sZS5wcm90b3R5cGUsIFwicm9sZVBlcm1pc3Npb25zXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBvbmVUb01hbnkoKCkgPT4gUm9sZUFzc2lnbm1lbnQsIFJFTF9SRVNUUklDVCwgZmFsc2UpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBBcnJheSlcbl0sIFJvbGUucHJvdG90eXBlLCBcImFzc2lnbm1lbnRzXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBjcmVhdGVkQXQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRGF0ZSlcbl0sIFJvbGUucHJvdG90eXBlLCBcImNyZWF0ZWRBdFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgdXBkYXRlZEF0KCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIERhdGUpXG5dLCBSb2xlLnByb3RvdHlwZSwgXCJ1cGRhdGVkQXRcIiwgdm9pZCAwKTtcblJvbGUgPSBfX2RlY29yYXRlKFtcbiAgICB0YWJsZShcInJvbGVzXCIpLFxuICAgIG1vZGVsKClcbl0sIFJvbGUpO1xuZXhwb3J0IHsgUm9sZSB9O1xubGV0IFJvbGVQZXJtaXNzaW9uID0gY2xhc3MgUm9sZVBlcm1pc3Npb24gZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHBrKHsgdHlwZTogU3RyaW5nIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBSb2xlUGVybWlzc2lvbi5wcm90b3R5cGUsIFwiaWRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBSb2xlLCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfcm9sZV9wZXJtaXNzaW9uc19yb2xlXCIpLFxuICAgIHJlcXVpcmVkKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIFJvbGVQZXJtaXNzaW9uLnByb3RvdHlwZSwgXCJyb2xlXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBtYW55VG9PbmUoKCkgPT4gUGVybWlzc2lvbiwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3JvbGVfcGVybWlzc2lvbnNfcGVybWlzc2lvblwiKSxcbiAgICByZXF1aXJlZCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBSb2xlUGVybWlzc2lvbi5wcm90b3R5cGUsIFwicGVybWlzc2lvblwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgY3JlYXRlZEF0KCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIERhdGUpXG5dLCBSb2xlUGVybWlzc2lvbi5wcm90b3R5cGUsIFwiY3JlYXRlZEF0XCIsIHZvaWQgMCk7XG5Sb2xlUGVybWlzc2lvbiA9IF9fZGVjb3JhdGUoW1xuICAgIHRhYmxlKFwicm9sZV9wZXJtaXNzaW9uc1wiKSxcbiAgICBtb2RlbCgpXG5dLCBSb2xlUGVybWlzc2lvbik7XG5leHBvcnQgeyBSb2xlUGVybWlzc2lvbiB9O1xubGV0IFJvbGVBc3NpZ25tZW50ID0gY2xhc3MgUm9sZUFzc2lnbm1lbnQgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHBrKHsgdHlwZTogU3RyaW5nIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBSb2xlQXNzaWdubWVudC5wcm90b3R5cGUsIFwiaWRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19yb2xlX2Fzc2lnbm1lbnRzX3RlbmFudFwiKSxcbiAgICByZXF1aXJlZCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBSb2xlQXNzaWdubWVudC5wcm90b3R5cGUsIFwidGVuYW50XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBtYW55VG9PbmUoKCkgPT4gUHJpbmNpcGFsLCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfcm9sZV9hc3NpZ25tZW50c19wcmluY2lwYWxcIiksXG4gICAgcmVxdWlyZWQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgUm9sZUFzc2lnbm1lbnQucHJvdG90eXBlLCBcInByaW5jaXBhbFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgbWFueVRvT25lKCgpID0+IFJvbGUsIFJFTF9SRVNUUklDVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19yb2xlX2Fzc2lnbm1lbnRzX3JvbGVcIiksXG4gICAgcmVxdWlyZWQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgUm9sZUFzc2lnbm1lbnQucHJvdG90eXBlLCBcInJvbGVcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgb3B0aW9uKFNjb3BlS2luZE9wdGlvbnMpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBSb2xlQXNzaWdubWVudC5wcm90b3R5cGUsIFwic2NvcGVLaW5kXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHR5cGVPZihTdHJpbmcpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBSb2xlQXNzaWdubWVudC5wcm90b3R5cGUsIFwic2NvcGVJZFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB0eXBlT2YoQm9vbGVhbiksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEJvb2xlYW4pXG5dLCBSb2xlQXNzaWdubWVudC5wcm90b3R5cGUsIFwiaW5oZXJpdERvd25cIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBEYXRlKVxuXSwgUm9sZUFzc2lnbm1lbnQucHJvdG90eXBlLCBcInN0YXJ0c0F0XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBjb2x1bW4oKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRGF0ZSlcbl0sIFJvbGVBc3NpZ25tZW50LnByb3RvdHlwZSwgXCJleHBpcmVzQXRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHR5cGVPZihPYmplY3QpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBSb2xlQXNzaWdubWVudC5wcm90b3R5cGUsIFwiY29uZGl0aW9uc1wiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgY3JlYXRlZEF0KCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIERhdGUpXG5dLCBSb2xlQXNzaWdubWVudC5wcm90b3R5cGUsIFwiY3JlYXRlZEF0XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICB1cGRhdGVkQXQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRGF0ZSlcbl0sIFJvbGVBc3NpZ25tZW50LnByb3RvdHlwZSwgXCJ1cGRhdGVkQXRcIiwgdm9pZCAwKTtcblJvbGVBc3NpZ25tZW50ID0gX19kZWNvcmF0ZShbXG4gICAgdGFibGUoXCJyb2xlX2Fzc2lnbm1lbnRzXCIpLFxuICAgIG1vZGVsKClcbl0sIFJvbGVBc3NpZ25tZW50KTtcbmV4cG9ydCB7IFJvbGVBc3NpZ25tZW50IH07XG5sZXQgSW5oZXJpdGFuY2VCbG9jayA9IGNsYXNzIEluaGVyaXRhbmNlQmxvY2sgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHBrKHsgdHlwZTogU3RyaW5nIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBJbmhlcml0YW5jZUJsb2NrLnByb3RvdHlwZSwgXCJpZFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgbWFueVRvT25lKCgpID0+IFRlbmFudCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX2luaGVyaXRhbmNlX2Jsb2Nrc190ZW5hbnRcIiksXG4gICAgcmVxdWlyZWQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgSW5oZXJpdGFuY2VCbG9jay5wcm90b3R5cGUsIFwidGVuYW50XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBtYW55VG9PbmUoKCkgPT4gT3JnVW5pdCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX2luaGVyaXRhbmNlX2Jsb2Nrc19vcmdfdW5pdFwiKSxcbiAgICByZXF1aXJlZCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBJbmhlcml0YW5jZUJsb2NrLnByb3RvdHlwZSwgXCJvcmdVbml0XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBtYW55VG9PbmUoKCkgPT4gT3JnVW5pdCwgUkVMX05VTExJRlksIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfaW5oZXJpdGFuY2VfYmxvY2tzX2Jsb2NrZWRfYW5jZXN0b3JcIiksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIEluaGVyaXRhbmNlQmxvY2sucHJvdG90eXBlLCBcImJsb2NrZWRGcm9tQW5jZXN0b3JcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgb3B0aW9uKFBlcm1pc3Npb25DYXRlZ29yeU9wdGlvbnMpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBJbmhlcml0YW5jZUJsb2NrLnByb3RvdHlwZSwgXCJwZXJtaXNzaW9uQ2F0ZWdvcnlcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHR5cGVPZihTdHJpbmcpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBJbmhlcml0YW5jZUJsb2NrLnByb3RvdHlwZSwgXCJyZWFzb25cIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIGNyZWF0ZWRBdCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBEYXRlKVxuXSwgSW5oZXJpdGFuY2VCbG9jay5wcm90b3R5cGUsIFwiY3JlYXRlZEF0XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICB1cGRhdGVkQXQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRGF0ZSlcbl0sIEluaGVyaXRhbmNlQmxvY2sucHJvdG90eXBlLCBcInVwZGF0ZWRBdFwiLCB2b2lkIDApO1xuSW5oZXJpdGFuY2VCbG9jayA9IF9fZGVjb3JhdGUoW1xuICAgIHRhYmxlKFwiaW5oZXJpdGFuY2VfYmxvY2tzXCIpLFxuICAgIG1vZGVsKClcbl0sIEluaGVyaXRhbmNlQmxvY2spO1xuZXhwb3J0IHsgSW5oZXJpdGFuY2VCbG9jayB9O1xubGV0IFByb3RlY3RlZFJlc291cmNlID0gY2xhc3MgUHJvdGVjdGVkUmVzb3VyY2UgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHBrKHsgdHlwZTogU3RyaW5nIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBQcm90ZWN0ZWRSZXNvdXJjZS5wcm90b3R5cGUsIFwiaWRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9SRVNUUklDVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19wcm90ZWN0ZWRfcmVzb3VyY2VzX3RlbmFudFwiKSxcbiAgICByZXF1aXJlZCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBQcm90ZWN0ZWRSZXNvdXJjZS5wcm90b3R5cGUsIFwidGVuYW50XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBtYW55VG9PbmUoKCkgPT4gT3JnVW5pdCwgUkVMX1JFU1RSSUNULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3Byb3RlY3RlZF9yZXNvdXJjZXNfb3JnX3VuaXRcIiksXG4gICAgcmVxdWlyZWQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgUHJvdGVjdGVkUmVzb3VyY2UucHJvdG90eXBlLCBcIm9yZ1VuaXRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFByb3RlY3RlZFJlc291cmNlLnByb3RvdHlwZSwgXCJyZXNvdXJjZVR5cGVcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFByb3RlY3RlZFJlc291cmNlLnByb3RvdHlwZSwgXCJyZXNvdXJjZUlkXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHR5cGVPZihTdHJpbmcpLFxuICAgIG9wdGlvbihSZXNvdXJjZVZpc2liaWxpdHlPcHRpb25zKSxcbiAgICBjb2x1bW4oKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgUHJvdGVjdGVkUmVzb3VyY2UucHJvdG90eXBlLCBcInZpc2liaWxpdHlcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBQcmluY2lwYWwsIFJFTF9OVUxMSUZZLCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3Byb3RlY3RlZF9yZXNvdXJjZXNfb3duZXJcIiksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIFByb3RlY3RlZFJlc291cmNlLnByb3RvdHlwZSwgXCJvd25lclwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFByb3RlY3RlZFJlc291cmNlLnByb3RvdHlwZSwgXCJzZW5zaXRpdml0eVwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgdHlwZU9mKE9iamVjdCksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIFByb3RlY3RlZFJlc291cmNlLnByb3RvdHlwZSwgXCJtZXRhZGF0YVwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgb25lVG9NYW55KCgpID0+IFJlc291cmNlR3JhbnQsIFJFTF9SRVNUUklDVCwgZmFsc2UpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBBcnJheSlcbl0sIFByb3RlY3RlZFJlc291cmNlLnByb3RvdHlwZSwgXCJncmFudHNcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIGNyZWF0ZWRBdCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBEYXRlKVxuXSwgUHJvdGVjdGVkUmVzb3VyY2UucHJvdG90eXBlLCBcImNyZWF0ZWRBdFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgdXBkYXRlZEF0KCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIERhdGUpXG5dLCBQcm90ZWN0ZWRSZXNvdXJjZS5wcm90b3R5cGUsIFwidXBkYXRlZEF0XCIsIHZvaWQgMCk7XG5Qcm90ZWN0ZWRSZXNvdXJjZSA9IF9fZGVjb3JhdGUoW1xuICAgIHRhYmxlKFwicHJvdGVjdGVkX3Jlc291cmNlc1wiKSxcbiAgICBtb2RlbCgpXG5dLCBQcm90ZWN0ZWRSZXNvdXJjZSk7XG5leHBvcnQgeyBQcm90ZWN0ZWRSZXNvdXJjZSB9O1xubGV0IFJlc291cmNlR3JhbnQgPSBjbGFzcyBSZXNvdXJjZUdyYW50IGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbn07XG5fX2RlY29yYXRlKFtcbiAgICBwayh7IHR5cGU6IFN0cmluZyB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgUmVzb3VyY2VHcmFudC5wcm90b3R5cGUsIFwiaWRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19yZXNvdXJjZV9ncmFudHNfdGVuYW50XCIpLFxuICAgIHJlcXVpcmVkKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIFJlc291cmNlR3JhbnQucHJvdG90eXBlLCBcInRlbmFudFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgbWFueVRvT25lKCgpID0+IFByb3RlY3RlZFJlc291cmNlLCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfcmVzb3VyY2VfZ3JhbnRzX3Jlc291cmNlXCIpLFxuICAgIHJlcXVpcmVkKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIFJlc291cmNlR3JhbnQucHJvdG90eXBlLCBcInJlc291cmNlXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBtYW55VG9PbmUoKCkgPT4gUHJpbmNpcGFsLCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfcmVzb3VyY2VfZ3JhbnRzX3ByaW5jaXBhbFwiKSxcbiAgICByZXF1aXJlZCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBSZXNvdXJjZUdyYW50LnByb3RvdHlwZSwgXCJwcmluY2lwYWxcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFJlc291cmNlR3JhbnQucHJvdG90eXBlLCBcInBlcm1pc3Npb25LZXlcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBEYXRlKVxuXSwgUmVzb3VyY2VHcmFudC5wcm90b3R5cGUsIFwic3RhcnRzQXRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBEYXRlKVxuXSwgUmVzb3VyY2VHcmFudC5wcm90b3R5cGUsIFwiZXhwaXJlc0F0XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICB0eXBlT2YoT2JqZWN0KSxcbiAgICBjb2x1bW4oKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgUmVzb3VyY2VHcmFudC5wcm90b3R5cGUsIFwiY29uZGl0aW9uc1wiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgbWFueVRvT25lKCgpID0+IFByaW5jaXBhbCwgUkVMX1JFU1RSSUNULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3Jlc291cmNlX2dyYW50c19jcmVhdGVkX2J5XCIpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBSZXNvdXJjZUdyYW50LnByb3RvdHlwZSwgXCJjcmVhdGVkQnlcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIGNyZWF0ZWRBdCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBEYXRlKVxuXSwgUmVzb3VyY2VHcmFudC5wcm90b3R5cGUsIFwiY3JlYXRlZEF0XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICB1cGRhdGVkQXQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRGF0ZSlcbl0sIFJlc291cmNlR3JhbnQucHJvdG90eXBlLCBcInVwZGF0ZWRBdFwiLCB2b2lkIDApO1xuUmVzb3VyY2VHcmFudCA9IF9fZGVjb3JhdGUoW1xuICAgIHRhYmxlKFwicmVzb3VyY2VfZ3JhbnRzXCIpLFxuICAgIG1vZGVsKClcbl0sIFJlc291cmNlR3JhbnQpO1xuZXhwb3J0IHsgUmVzb3VyY2VHcmFudCB9O1xubGV0IEVmZmVjdGl2ZVBlcm1pc3Npb24gPSBjbGFzcyBFZmZlY3RpdmVQZXJtaXNzaW9uIGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbn07XG5fX2RlY29yYXRlKFtcbiAgICBwayh7IHR5cGU6IFN0cmluZyB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgRWZmZWN0aXZlUGVybWlzc2lvbi5wcm90b3R5cGUsIFwiaWRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19lZmZlY3RpdmVfcGVybWlzc2lvbnNfdGVuYW50XCIpLFxuICAgIHJlcXVpcmVkKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIEVmZmVjdGl2ZVBlcm1pc3Npb24ucHJvdG90eXBlLCBcInRlbmFudFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgbWFueVRvT25lKCgpID0+IFByaW5jaXBhbCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX2VmZmVjdGl2ZV9wZXJtaXNzaW9uc19wcmluY2lwYWxcIiksXG4gICAgcmVxdWlyZWQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgRWZmZWN0aXZlUGVybWlzc2lvbi5wcm90b3R5cGUsIFwicHJpbmNpcGFsXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHR5cGVPZihTdHJpbmcpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBFZmZlY3RpdmVQZXJtaXNzaW9uLnByb3RvdHlwZSwgXCJwZXJtaXNzaW9uS2V5XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHR5cGVPZihTdHJpbmcpLFxuICAgIG9wdGlvbihTY29wZUtpbmRPcHRpb25zKSxcbiAgICBjb2x1bW4oKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgRWZmZWN0aXZlUGVybWlzc2lvbi5wcm90b3R5cGUsIFwic2NvcGVLaW5kXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHR5cGVPZihTdHJpbmcpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBFZmZlY3RpdmVQZXJtaXNzaW9uLnByb3RvdHlwZSwgXCJzY29wZUlkXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHR5cGVPZihTdHJpbmcpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBFZmZlY3RpdmVQZXJtaXNzaW9uLnByb3RvdHlwZSwgXCJzb3VyY2VLaW5kXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHR5cGVPZihTdHJpbmcpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBFZmZlY3RpdmVQZXJtaXNzaW9uLnByb3RvdHlwZSwgXCJzb3VyY2VJZFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIERhdGUpXG5dLCBFZmZlY3RpdmVQZXJtaXNzaW9uLnByb3RvdHlwZSwgXCJzdGFydHNBdFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIERhdGUpXG5dLCBFZmZlY3RpdmVQZXJtaXNzaW9uLnByb3RvdHlwZSwgXCJleHBpcmVzQXRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIGNyZWF0ZWRBdCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBEYXRlKVxuXSwgRWZmZWN0aXZlUGVybWlzc2lvbi5wcm90b3R5cGUsIFwiY3JlYXRlZEF0XCIsIHZvaWQgMCk7XG5FZmZlY3RpdmVQZXJtaXNzaW9uID0gX19kZWNvcmF0ZShbXG4gICAgdGFibGUoXCJlZmZlY3RpdmVfcGVybWlzc2lvbnNcIiksXG4gICAgbW9kZWwoKVxuXSwgRWZmZWN0aXZlUGVybWlzc2lvbik7XG5leHBvcnQgeyBFZmZlY3RpdmVQZXJtaXNzaW9uIH07XG5sZXQgU3RvcmFnZUJpbmRpbmcgPSBjbGFzcyBTdG9yYWdlQmluZGluZyBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG59O1xuX19kZWNvcmF0ZShbXG4gICAgcGsoeyB0eXBlOiBTdHJpbmcgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFN0b3JhZ2VCaW5kaW5nLnByb3RvdHlwZSwgXCJpZFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgbWFueVRvT25lKCgpID0+IFRlbmFudCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3N0b3JhZ2VfYmluZGluZ3NfdGVuYW50XCIpLFxuICAgIHJlcXVpcmVkKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIFN0b3JhZ2VCaW5kaW5nLnByb3RvdHlwZSwgXCJ0ZW5hbnRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgb3B0aW9uKFN0b3JhZ2VLaW5kT3B0aW9ucyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFN0b3JhZ2VCaW5kaW5nLnByb3RvdHlwZSwgXCJzdG9yYWdlS2luZFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB0eXBlT2YoU3RyaW5nKSxcbiAgICBvcHRpb24oU3RvcmFnZUJpbmRpbmdLaW5kT3B0aW9ucyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFN0b3JhZ2VCaW5kaW5nLnByb3RvdHlwZSwgXCJiaW5kaW5nS2luZFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB0eXBlT2YoU3RyaW5nKSxcbiAgICBjb2x1bW4oKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgU3RvcmFnZUJpbmRpbmcucHJvdG90eXBlLCBcImJpbmRpbmdLZXlcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdHlwZU9mKFN0cmluZyksXG4gICAgY29sdW1uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIFN0b3JhZ2VCaW5kaW5nLnByb3RvdHlwZSwgXCJyZWdpb25cIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHR5cGVPZihPYmplY3QpLFxuICAgIGNvbHVtbigpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBTdG9yYWdlQmluZGluZy5wcm90b3R5cGUsIFwiY29uZmlnXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBjcmVhdGVkQXQoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRGF0ZSlcbl0sIFN0b3JhZ2VCaW5kaW5nLnByb3RvdHlwZSwgXCJjcmVhdGVkQXRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHVwZGF0ZWRBdCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBEYXRlKVxuXSwgU3RvcmFnZUJpbmRpbmcucHJvdG90eXBlLCBcInVwZGF0ZWRBdFwiLCB2b2lkIDApO1xuU3RvcmFnZUJpbmRpbmcgPSBfX2RlY29yYXRlKFtcbiAgICB0YWJsZShcInN0b3JhZ2VfYmluZGluZ3NcIiksXG4gICAgbW9kZWwoKVxuXSwgU3RvcmFnZUJpbmRpbmcpO1xuZXhwb3J0IHsgU3RvcmFnZUJpbmRpbmcgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWIzSm5MV0poYzJWa0xXRjFkR2h2Y21sNllYUnBiMjR0YzNsemRHVnRMbTF2WkdWc2N5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDNOeVl5OXVZVzFsYzNCaFkyVnpMMjl5WnkxaVlYTmxaQzFoZFhSb2IzSnBlbUYwYVc5dUxYTjVjM1JsYlM1dGIyUmxiSE11ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3TzBGQlFVRXNUMEZCVHl4RlFVTk1MRTFCUVUwc1JVRkRUaXhUUVVGVExFVkJRMVFzVTBGQlV5eEZRVU5VTEZOQlFWTXNSVUZEVkN4RlFVRkZMRVZCUTBZc1MwRkJTeXhGUVVOTUxFMUJRVTBzUlVGRFRpeFRRVUZUTEVkQlExWXNUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVU40UWl4UFFVRlBMRVZCUVVVc1MwRkJTeXhGUVVGRkxFdEJRVXNzUlVGQlJTeE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRWxCUVVrc1NVRkJTU3hOUVVGTkxFVkJRVVVzVFVGQlRTeG5RMEZCWjBNc1EwRkJRenRCUVVOb1J5eFBRVUZQTEVWQlEwd3NZVUZCWVN4RlFVTmlMRzlDUVVGdlFpeEZRVU53UWl4blFrRkJaMElzUlVGRGFFSXNkVUpCUVhWQ0xFVkJRM1pDTEd0Q1FVRnJRaXhGUVVOc1FpeDVRa0ZCZVVJc1JVRkRla0lzWVVGQllTeEZRVU5pTEc5Q1FVRnZRaXhGUVVOd1FpeHhRa0ZCY1VJc1JVRkRja0lzVjBGQlZ5eEZRVU5ZTEZsQlFWa3NSVUZEV2l4clFrRkJhMElzUlVGRGJFSXNlVUpCUVhsQ0xFVkJRM3BDTEZOQlFWTXNSVUZEVkN4blFrRkJaMElzUlVGRGFFSXNhMEpCUVd0Q0xFVkJRMnhDTEhsQ1FVRjVRaXhGUVVONlFpeFhRVUZYTEVWQlExZ3NhMEpCUVd0Q0xFZEJRMjVDTERSRFFVRjVRenRCUVVVeFF5eE5RVUZOTEU5QlFVOHNhMEpCUVcxQ0xGTkJRVkVzUzBGQlN6dEpRVU16UXl4WlFVRlpMRWxCUVdNN1VVRkRlRUlzUzBGQlN5eERRVUZETEVsQlFXRXNRMEZCUXl4RFFVRkRPMGxCUTNaQ0xFTkJRVU03UTBGRFJqdEJRVWxOTEVsQlFVMHNUVUZCVFN4SFFVRmFMRTFCUVUwc1RVRkJUeXhUUVVGUkxHdENRVUZyUWp0RFFWYzNReXhEUVVGQk8wRkJWblZDTzBsQlFYSkNMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeE5RVUZOTEVWQlFVVXNRMEZCUXpzN2EwTkJRV0U3UVVGRFl6dEpRVUV2UXl4TlFVRk5MRVZCUVVVN1NVRkJSU3hSUVVGUkxFVkJRVVU3U1VGQlJTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUVVVc1RVRkJUU3hGUVVGRk96dHZRMEZCWlR0QlFVTjRRanRKUVVGeVF5eFJRVUZSTEVWQlFVVTdTVUZCUlN4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRVVVzVFVGQlRTeEZRVUZGT3p0dlEwRkJaVHRCUVVOblFqdEpRVUZ1UlN4UlFVRlJMRVZCUVVVN1NVRkJSU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlFVVXNUVUZCVFN4RFFVRkRMRzlDUVVGdlFpeERRVUZETzBsQlFVVXNUVUZCVFN4RlFVRkZPenMyUTBGQkswSTdRVUZEYmtRN1NVRkJPVU1zVTBGQlV5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRTlCUVU4c1JVRkJSU3haUVVGWkxFVkJRVVVzUzBGQlN5eERRVUZET3p0M1EwRkJhVU03UVVGRGRrSTdTVUZCZGtRc1UwRkJVeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEdkQ1FVRm5RaXhGUVVGRkxGbEJRVmtzUlVGQlJTeExRVUZMTEVOQlFVTTdPekpEUVVFMlF6dEJRVU51UkR0SlFVRm9SQ3hUUVVGVExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RlFVRkZMRmxCUVZrc1JVRkJSU3hMUVVGTExFTkJRVU03T3pCRFFVRnhRenRCUVVNdlFqdEpRVUZ5UkN4VFFVRlRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zWTBGQll5eEZRVUZGTEZsQlFWa3NSVUZCUlN4TFFVRkxMRU5CUVVNN095dERRVUVyUXp0QlFVTjJSanRKUVVGYUxGTkJRVk1zUlVGQlJUczRRa0ZCWVN4SlFVRkpPM2xEUVVGRE8wRkJRMnBDTzBsQlFWb3NVMEZCVXl4RlFVRkZPemhDUVVGaExFbEJRVWs3ZVVOQlFVTTdRVUZXYmtJc1RVRkJUVHRKUVVac1FpeExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRPMGxCUTJoQ0xFdEJRVXNzUlVGQlJUdEhRVU5MTEUxQlFVMHNRMEZYYkVJN08wRkJTVTBzU1VGQlRTeGhRVUZoTEVkQlFXNUNMRTFCUVUwc1lVRkJZeXhUUVVGUkxHdENRVUZyUWp0RFFWTndSQ3hEUVVGQk8wRkJVblZDTzBsQlFYSkNMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeE5RVUZOTEVWQlFVVXNRMEZCUXpzN2VVTkJRV0U3UVVGSGJFTTdTVUZHUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEhGQ1FVRnhRaXhGUVVGRkxFdEJRVXNzUlVGQlJTeFRRVUZUTEVWQlFVVXNNa0pCUVRKQ0xFTkJRVU03U1VGRE4wWXNVVUZCVVN4RlFVRkZPenMyUTBGRFl6dEJRVU5oTzBsQlFYSkRMRkZCUVZFc1JVRkJSVHRKUVVGRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZCUlN4TlFVRk5MRVZCUVVVN08ybEVRVUZ4UWp0QlFVTm9RenRKUVVGNlFpeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUVVVc1RVRkJUU3hGUVVGRk96c3JRMEZCYjBNN1FVRkRhRVE3U1VGQldpeFRRVUZUTEVWQlFVVTdPRUpCUVdFc1NVRkJTVHRuUkVGQlF6dEJRVU5xUWp0SlFVRmFMRk5CUVZNc1JVRkJSVHM0UWtGQllTeEpRVUZKTzJkRVFVRkRPMEZCVW01Q0xHRkJRV0U3U1VGR2VrSXNTMEZCU3l4RFFVRkRMR2xDUVVGcFFpeERRVUZETzBsQlEzaENMRXRCUVVzc1JVRkJSVHRIUVVOTExHRkJRV0VzUTBGVGVrSTdPMEZCU1Uwc1NVRkJUU3hQUVVGUExFZEJRV0lzVFVGQlRTeFBRVUZSTEZOQlFWRXNhMEpCUVd0Q08wTkJhMEk1UXl4RFFVRkJPMEZCYWtKMVFqdEpRVUZ5UWl4RlFVRkZMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTTdPMjFEUVVGaE8wRkJSMnhETzBsQlJrTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeFpRVUZaTEVWQlFVVXNTMEZCU3l4RlFVRkZMRk5CUVZNc1JVRkJSU3h4UWtGQmNVSXNRMEZCUXp0SlFVTTVSU3hSUVVGUkxFVkJRVVU3TzNWRFFVTmpPMEZCUlhwQ08wbEJSRU1zVTBGQlV5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRTlCUVU4c1JVRkJSU3haUVVGWkxFVkJRVVVzUzBGQlN5eEZRVUZGTEZOQlFWTXNSVUZCUlN4eFFrRkJjVUlzUTBGQlF6czdkVU5CUTNSRU8wRkJRM0ZDTzBsQlFUbERMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eFBRVUZQTEVWQlFVVXNXVUZCV1N4RlFVRkZMRXRCUVVzc1EwRkJRenM3ZVVOQlFXbERPMEZCUTNwRE8wbEJRWEpETEZGQlFWRXNSVUZCUlR0SlFVRkZMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGQlJTeE5RVUZOTEVWQlFVVTdPM0ZEUVVGbE8wRkJRMlE3U1VGQmNrTXNVVUZCVVN4RlFVRkZPMGxCUVVVc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVUZGTEUxQlFVMHNSVUZCUlRzN2NVTkJRV1U3UVVGRE1VSTdTVUZCZWtJc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVUZGTEUxQlFVMHNSVUZCUlRzN2VVTkJRVzlETzBGQlEwbzdTVUZCZUVRc1UwRkJVeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEdsQ1FVRnBRaXhGUVVGRkxGbEJRVmtzUlVGQlJTeExRVUZMTEVOQlFVTTdPelJEUVVFNFF6dEJRVU0zUXp0SlFVRjRSQ3hUUVVGVExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzV1VGQldTeEZRVUZGTEV0QlFVc3NRMEZCUXpzN01FTkJRVFJETzBGQlF6VkRPMGxCUVhaRUxGTkJRVk1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4blFrRkJaMElzUlVGQlJTeFpRVUZaTEVWQlFVVXNTMEZCU3l4RFFVRkRPenRyUkVGQmJVUTdRVUZEY0VRN1NVRkJja1FzVTBGQlV5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzUzBGQlN5eERRVUZET3pzNFEwRkJOa003UVVGRE5VTTdTVUZCY2tRc1UwRkJVeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEdOQlFXTXNSVUZCUlN4WlFVRlpMRVZCUVVVc1MwRkJTeXhEUVVGRE96dG5SRUZCSzBNN1FVRkRka1k3U1VGQldpeFRRVUZUTEVWQlFVVTdPRUpCUVdFc1NVRkJTVHN3UTBGQlF6dEJRVU5xUWp0SlFVRmFMRk5CUVZNc1JVRkJSVHM0UWtGQllTeEpRVUZKT3pCRFFVRkRPMEZCYWtKdVFpeFBRVUZQTzBsQlJtNUNMRXRCUVVzc1EwRkJReXhYUVVGWExFTkJRVU03U1VGRGJFSXNTMEZCU3l4RlFVRkZPMGRCUTBzc1QwRkJUeXhEUVd0Q2JrSTdPMEZCU1Uwc1NVRkJUU3hqUVVGakxFZEJRWEJDTEUxQlFVMHNZMEZCWlN4VFFVRlJMR3RDUVVGclFqdERRVk55UkN4RFFVRkJPMEZCVW5WQ08wbEJRWEpDTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVVzUTBGQlF6czdNRU5CUVdFN1FVRkhiRU03U1VGR1F5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxIRkNRVUZ4UWl4RlFVRkZMRXRCUVVzc1JVRkJSU3hUUVVGVExFVkJRVVVzSzBKQlFTdENMRU5CUVVNN1NVRkRiRWNzVVVGQlVTeEZRVUZGT3pzclEwRkRaMEk3UVVGRFZ6dEpRVUZ5UXl4UlFVRlJMRVZCUVVVN1NVRkJSU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlFVVXNUVUZCVFN4RlFVRkZPenRyUkVGQmNVSTdRVUZEYUVNN1NVRkJla0lzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXp0SlFVRkZMRTFCUVUwc1JVRkJSVHM3WjBSQlFXOURPMEZCUTJoRU8wbEJRVm9zVTBGQlV5eEZRVUZGT3poQ1FVRmhMRWxCUVVrN2FVUkJRVU03UVVGRGFrSTdTVUZCV2l4VFFVRlRMRVZCUVVVN09FSkJRV0VzU1VGQlNUdHBSRUZCUXp0QlFWSnVRaXhqUVVGak8wbEJSakZDTEV0QlFVc3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF6dEpRVU14UWl4TFFVRkxMRVZCUVVVN1IwRkRTeXhqUVVGakxFTkJVekZDT3p0QlFVbE5MRWxCUVUwc1kwRkJZeXhIUVVGd1FpeE5RVUZOTEdOQlFXVXNVMEZCVVN4clFrRkJhMEk3UTBGaGNrUXNRMEZCUVR0QlFWcDFRanRKUVVGeVFpeEZRVUZGTEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU03T3pCRFFVRmhPMEZCUjJ4RE8wbEJSa01zVTBGQlV5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSU3h4UWtGQmNVSXNSVUZCUlN4TFFVRkxMRVZCUVVVc1UwRkJVeXhGUVVGRkxIVkNRVUYxUWl4RFFVRkRPMGxCUTNwR0xGRkJRVkVzUlVGQlJUczdPRU5CUTJNN1FVRkhla0k3U1VGR1F5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxIRkNRVUZ4UWl4RlFVRkZMRXRCUVVzc1JVRkJSU3hUUVVGVExFVkJRVVVzZVVKQlFYbENMRU5CUVVNN1NVRkROVVlzVVVGQlVTeEZRVUZGT3p0blJFRkRhVUk3UVVGSE5VSTdTVUZHUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEhGQ1FVRnhRaXhGUVVGRkxFdEJRVXNzUlVGQlJTeFRRVUZUTEVWQlFVVXNNa0pCUVRKQ0xFTkJRVU03U1VGRE9VWXNVVUZCVVN4RlFVRkZPenRyUkVGRGJVSTdRVUZEVVR0SlFVRnlReXhSUVVGUkxFVkJRVVU3U1VGQlJTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUVVVc1RVRkJUU3hGUVVGRk96czJRMEZCWjBJN1FVRkRlRU03U1VGQldpeFRRVUZUTEVWQlFVVTdPRUpCUVdFc1NVRkJTVHRwUkVGQlF6dEJRVnB1UWl4alFVRmpPMGxCUmpGQ0xFdEJRVXNzUTBGQlF5eHJRa0ZCYTBJc1EwRkJRenRKUVVONlFpeExRVUZMTEVWQlFVVTdSMEZEU3l4alFVRmpMRU5CWVRGQ096dEJRVWxOTEVsQlFVMHNTVUZCU1N4SFFVRldMRTFCUVUwc1NVRkJTeXhUUVVGUkxHdENRVUZyUWp0RFFWTXpReXhEUVVGQk8wRkJVblZDTzBsQlFYSkNMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeE5RVUZOTEVWQlFVVXNRMEZCUXpzN1owTkJRV0U3UVVGRFJUdEpRVUZ1UXl4TlFVRk5MRVZCUVVVN1NVRkJSU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlFVVXNUVUZCVFN4RlFVRkZPenR0UTBGQlowSTdRVUZEWmp0SlFVRnVReXhOUVVGTkxFVkJRVVU3U1VGQlJTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUVVVc1RVRkJUU3hGUVVGRk96dHRRMEZCWjBJN1FVRkRZanRKUVVGeVF5eFJRVUZSTEVWQlFVVTdTVUZCUlN4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRVVVzVFVGQlRTeEZRVUZGT3p0NVEwRkJjMEk3UVVGRFNEdEpRVUYyUkN4VFFVRlRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1dVRkJXU3hGUVVGRkxFdEJRVXNzUTBGQlF6czdLME5CUVcxRU8wRkJRMnBFTzBsQlFYaEVMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3haUVVGWkxFVkJRVVVzUzBGQlN5eERRVUZET3p0blJFRkJjVVE3UVVGRGFFYzdTVUZCV2l4VFFVRlRMRVZCUVVVN09FSkJRV0VzU1VGQlNUdDFRMEZCUXp0QlFVTnFRanRKUVVGYUxGTkJRVk1zUlVGQlJUczRRa0ZCWVN4SlFVRkpPM1ZEUVVGRE8wRkJVbTVDTEVsQlFVazdTVUZHYUVJc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF6dEpRVU5rTEV0QlFVc3NSVUZCUlR0SFFVTkxMRWxCUVVrc1EwRlRhRUk3TzBGQlNVMHNTVUZCVFN4TFFVRkxMRWRCUVZnc1RVRkJUU3hMUVVGTkxGTkJRVkVzYTBKQlFXdENPME5CV1RWRExFTkJRVUU3UVVGWWRVSTdTVUZCY2tJc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRPenRwUTBGQllUdEJRVWRzUXp0SlFVWkRMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVWQlFVVXNXVUZCV1N4RlFVRkZMRXRCUVVzc1JVRkJSU3hUUVVGVExFVkJRVVVzYTBKQlFXdENMRU5CUVVNN1NVRkRNMFVzVVVGQlVTeEZRVUZGT3p0eFEwRkRZenRCUVVWNlFqdEpRVVJETEZOQlFWTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhQUVVGUExFVkJRVVVzVjBGQlZ5eEZRVUZGTEV0QlFVc3NSVUZCUlN4VFFVRlRMRVZCUVVVc2IwSkJRVzlDTEVOQlFVTTdPM05EUVVOdVJEdEJRVU5YTzBsQlFYSkRMRkZCUVZFc1JVRkJSVHRKUVVGRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZCUlN4TlFVRk5MRVZCUVVVN08yMURRVUZsTzBGQlF6RkNPMGxCUVhwQ0xFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZCUlN4TlFVRk5MRVZCUVVVN08zVkRRVUZ2UXp0QlFVTk9PMGxCUVhSRUxGTkJRVk1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4bFFVRmxMRVZCUVVVc1dVRkJXU3hGUVVGRkxFdEJRVXNzUTBGQlF6czdjME5CUVhkRE8wRkJRMnBHTzBsQlFWb3NVMEZCVXl4RlFVRkZPemhDUVVGaExFbEJRVWs3ZDBOQlFVTTdRVUZEYWtJN1NVRkJXaXhUUVVGVExFVkJRVVU3T0VKQlFXRXNTVUZCU1R0M1EwRkJRenRCUVZodVFpeExRVUZMTzBsQlJtcENMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU03U1VGRFppeExRVUZMTEVWQlFVVTdSMEZEU3l4TFFVRkxMRU5CV1dwQ096dEJRVWxOTEVsQlFVMHNVMEZCVXl4SFFVRm1MRTFCUVUwc1UwRkJWU3hUUVVGUkxHdENRVUZyUWp0RFFWZG9SQ3hEUVVGQk8wRkJWblZDTzBsQlFYSkNMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeE5RVUZOTEVWQlFVVXNRMEZCUXpzN2NVTkJRV0U3UVVGSGJFTTdTVUZHUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEZsQlFWa3NSVUZCUlN4TFFVRkxMRVZCUVVVc1UwRkJVeXhGUVVGRkxITkNRVUZ6UWl4RFFVRkRPMGxCUXk5RkxGRkJRVkVzUlVGQlJUczdlVU5CUTJNN1FVRkRNa003U1VGQmJrVXNVVUZCVVN4RlFVRkZPMGxCUVVVc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVUZGTEUxQlFVMHNRMEZCUXl4dlFrRkJiMElzUTBGQlF6dEpRVUZGTEUxQlFVMHNSVUZCUlRzN2RVTkJRWE5DTzBGQlEyNUVPMGxCUVhKRExGRkJRVkVzUlVGQlJUdEpRVUZGTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkJSU3hOUVVGTkxFVkJRVVU3T3pSRFFVRnZRanRCUVVOSU8wbEJRWEpFTEZOQlFWTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhqUVVGakxFVkJRVVVzV1VGQldTeEZRVUZGTEV0QlFVc3NRMEZCUXpzN2EwUkJRU3RETzBGQlF5OURPMGxCUVhCRUxGTkJRVk1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4aFFVRmhMRVZCUVVVc1dVRkJXU3hGUVVGRkxFdEJRVXNzUTBGQlF6czdhVVJCUVRaRE8wRkJRM0JHTzBsQlFWb3NVMEZCVXl4RlFVRkZPemhDUVVGaExFbEJRVWs3TkVOQlFVTTdRVUZEYWtJN1NVRkJXaXhUUVVGVExFVkJRVVU3T0VKQlFXRXNTVUZCU1RzMFEwRkJRenRCUVZadVFpeFRRVUZUTzBsQlJuSkNMRXRCUVVzc1EwRkJReXhaUVVGWkxFTkJRVU03U1VGRGJrSXNTMEZCU3l4RlFVRkZPMGRCUTBzc1UwRkJVeXhEUVZkeVFqczdRVUZKVFN4SlFVRk5MR2RDUVVGblFpeEhRVUYwUWl4TlFVRk5MR2RDUVVGcFFpeFRRVUZSTEd0Q1FVRnJRanREUVZkMlJDeERRVUZCTzBGQlZuVkNPMGxCUVhKQ0xFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NSVUZCUlN4TlFVRk5MRVZCUVVVc1EwRkJRenM3TkVOQlFXRTdRVUZIYkVNN1NVRkdReXhUUVVGVExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVRkZMSEZDUVVGeFFpeEZRVUZGTEV0QlFVc3NSVUZCUlN4VFFVRlRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTTdTVUZEYUVjc1VVRkJVU3hGUVVGRk96dG5SRUZEWXp0QlFVZDZRanRKUVVaRExGTkJRVk1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpMRVZCUVVVc2NVSkJRWEZDTEVWQlFVVXNTMEZCU3l4RlFVRkZMRk5CUVZNc1JVRkJSU3cwUWtGQk5FSXNRMEZCUXp0SlFVTTFSaXhSUVVGUkxFVkJRVVU3T3poRFFVTlZPMEZCUTJ0RU8wbEJRWFJGTEZGQlFWRXNSVUZCUlR0SlFVRkZMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGQlJTeE5RVUZOTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU03U1VGQlJTeE5RVUZOTEVWQlFVVTdPMmRFUVVFeVFqdEJRVU53Ump0SlFVRmFMRk5CUVZNc1JVRkJSVHM0UWtGQllTeEpRVUZKTzIxRVFVRkRPMEZCUTJwQ08wbEJRVm9zVTBGQlV5eEZRVUZGT3poQ1FVRmhMRWxCUVVrN2JVUkJRVU03UVVGV2JrSXNaMEpCUVdkQ08wbEJSalZDTEV0QlFVc3NRMEZCUXl4dlFrRkJiMElzUTBGQlF6dEpRVU16UWl4TFFVRkxMRVZCUVVVN1IwRkRTeXhuUWtGQlowSXNRMEZYTlVJN08wRkJTVTBzU1VGQlRTeHBRa0ZCYVVJc1IwRkJka0lzVFVGQlRTeHBRa0ZCYTBJc1UwRkJVU3hyUWtGQmEwSTdRMEZqZUVRc1EwRkJRVHRCUVdKMVFqdEpRVUZ5UWl4RlFVRkZMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTTdPelpEUVVGaE8wRkJSMnhETzBsQlJrTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeHhRa0ZCY1VJc1JVRkJSU3hMUVVGTExFVkJRVVVzVTBGQlV5eEZRVUZGTERKQ1FVRXlRaXhEUVVGRE8wbEJRemRHTEZGQlFWRXNSVUZCUlRzN2FVUkJRMk03UVVGSGVrSTdTVUZHUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEhGQ1FVRnhRaXhGUVVGRkxFdEJRVXNzUlVGQlJTeFRRVUZUTEVWQlFVVXNOa0pCUVRaQ0xFTkJRVU03U1VGRGFFY3NVVUZCVVN4RlFVRkZPenRyUkVGRFowSTdRVUZITTBJN1NVRkdReXhUUVVGVExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RlFVRkZMRmxCUVZrc1JVRkJSU3hMUVVGTExFVkJRVVVzVTBGQlV5eEZRVUZGTEhsQ1FVRjVRaXhEUVVGRE8wbEJRMmhHTEZGQlFWRXNSVUZCUlRzN0swTkJRMVU3UVVGRGEwUTdTVUZCZEVVc1VVRkJVU3hGUVVGRk8wbEJRVVVzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXp0SlFVRkZMRTFCUVUwc1EwRkJReXgxUWtGQmRVSXNRMEZCUXp0SlFVRkZMRTFCUVUwc1JVRkJSVHM3YVVSQlFUSkNPMEZCUTNCR08wbEJRVm9zVTBGQlV5eEZRVUZGT3poQ1FVRmhMRWxCUVVrN2IwUkJRVU03UVVGRGFrSTdTVUZCV2l4VFFVRlRMRVZCUVVVN09FSkJRV0VzU1VGQlNUdHZSRUZCUXp0QlFXSnVRaXhwUWtGQmFVSTdTVUZHTjBJc1MwRkJTeXhEUVVGRExITkNRVUZ6UWl4RFFVRkRPMGxCUXpkQ0xFdEJRVXNzUlVGQlJUdEhRVU5MTEdsQ1FVRnBRaXhEUVdNM1FqczdRVUZKVFN4SlFVRk5MR1ZCUVdVc1IwRkJja0lzVFVGQlRTeGxRVUZuUWl4VFFVRlJMR3RDUVVGclFqdERRV0YwUkN4RFFVRkJPMEZCV25WQ08wbEJRWEpDTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVVzUTBGQlF6czdNa05CUVdFN1FVRkhiRU03U1VGR1F5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1RVRkJUU3hGUVVGRkxIRkNRVUZ4UWl4RlFVRkZMRXRCUVVzc1JVRkJSU3hUUVVGVExFVkJRVVVzTmtKQlFUWkNMRU5CUVVNN1NVRkRMMFlzVVVGQlVTeEZRVUZGT3pzclEwRkRZenRCUVVkNlFqdEpRVVpETEZOQlFWTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhMUVVGTExFVkJRVVVzY1VKQlFYRkNMRVZCUVVVc1MwRkJTeXhGUVVGRkxGTkJRVk1zUlVGQlJTdzBRa0ZCTkVJc1EwRkJRenRKUVVNM1JpeFJRVUZSTEVWQlFVVTdPemhEUVVOWk8wRkJSM1pDTzBsQlJrTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExGTkJRVk1zUlVGQlJTeHhRa0ZCY1VJc1JVRkJSU3hMUVVGTExFVkJRVVVzVTBGQlV5eEZRVUZGTEdkRFFVRm5ReXhEUVVGRE8wbEJRM0pITEZGQlFWRXNSVUZCUlRzN2EwUkJRMjlDTzBGQlEwdzdTVUZCZWtJc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVUZGTEUxQlFVMHNSVUZCUlRzN2FVUkJRVzlETzBGQlEyaEVPMGxCUVZvc1UwRkJVeXhGUVVGRk96aENRVUZoTEVsQlFVazdhMFJCUVVNN1FVRmFia0lzWlVGQlpUdEpRVVl6UWl4TFFVRkxMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTTdTVUZETVVJc1MwRkJTeXhGUVVGRk8wZEJRMHNzWlVGQlpTeERRV0V6UWpzN1FVRkpUU3hKUVVGTkxGVkJRVlVzUjBGQmFFSXNUVUZCVFN4VlFVRlhMRk5CUVZFc2EwSkJRV3RDTzBOQlRXcEVMRU5CUVVFN1FVRk1kVUk3U1VGQmNrSXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFMUJRVTBzUlVGQlJTeERRVUZET3p0elEwRkJZVHRCUVVOak8wbEJRUzlETEUxQlFVMHNSVUZCUlR0SlFVRkZMRkZCUVZFc1JVRkJSVHRKUVVGRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZCUlN4TlFVRk5MRVZCUVVVN08zVkRRVUZqTzBGQlExazdTVUZCZUVVc1VVRkJVU3hGUVVGRk8wbEJRVVVzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXp0SlFVRkZMRTFCUVUwc1EwRkJReXg1UWtGQmVVSXNRMEZCUXp0SlFVRkZMRTFCUVUwc1JVRkJSVHM3TkVOQlFTdENPMEZCUXpkRk8wbEJRWHBDTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkJSU3hOUVVGTkxFVkJRVVU3T3l0RFFVRnpRanRCUVVOUE8wbEJRWEpFTEZOQlFWTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhqUVVGakxFVkJRVVVzV1VGQldTeEZRVUZGTEV0QlFVc3NRMEZCUXpzN2JVUkJRU3RETzBGQlRIcEdMRlZCUVZVN1NVRkdkRUlzUzBGQlN5eERRVUZETEdGQlFXRXNRMEZCUXp0SlFVTndRaXhMUVVGTExFVkJRVVU3UjBGRFN5eFZRVUZWTEVOQlRYUkNPenRCUVVsTkxFbEJRVTBzU1VGQlNTeEhRVUZXTEUxQlFVMHNTVUZCU3l4VFFVRlJMR3RDUVVGclFqdERRVmt6UXl4RFFVRkJPMEZCV0hWQ08wbEJRWEpDTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVVzUTBGQlF6czdaME5CUVdFN1FVRkZiRU03U1VGRVF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1RVRkJUU3hGUVVGRkxGZEJRVmNzUlVGQlJTeExRVUZMTEVWQlFVVXNVMEZCVXl4RlFVRkZMR2xDUVVGcFFpeERRVUZET3p0dlEwRkRha1E3UVVGRFlUdEpRVUZ5UXl4UlFVRlJMRVZCUVVVN1NVRkJSU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlFVVXNUVUZCVFN4RlFVRkZPenRwUTBGQll6dEJRVU5pTzBsQlFYSkRMRkZCUVZFc1JVRkJSVHRKUVVGRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZCUlN4TlFVRk5MRVZCUVVVN08ydERRVUZsTzBGQlF6RkNPMGxCUVhwQ0xFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZCUlN4TlFVRk5MRVZCUVVVN08zbERRVUZ6UWp0QlFVTnlRanRKUVVGNlFpeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUVVVc1RVRkJUU3hGUVVGRk96dHpRMEZCYjBNN1FVRkRVRHRKUVVGeVJDeFRRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1kwRkJZeXhGUVVGRkxGbEJRVmtzUlVGQlJTeExRVUZMTEVOQlFVTTdPelpEUVVFclF6dEJRVU01UXp0SlFVRnlSQ3hUUVVGVExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNZMEZCWXl4RlFVRkZMRmxCUVZrc1JVRkJSU3hMUVVGTExFTkJRVU03TzNsRFFVRXlRenRCUVVOdVJqdEpRVUZhTEZOQlFWTXNSVUZCUlRzNFFrRkJZU3hKUVVGSk8zVkRRVUZETzBGQlEycENPMGxCUVZvc1UwRkJVeXhGUVVGRk96aENRVUZoTEVsQlFVazdkVU5CUVVNN1FVRllia0lzU1VGQlNUdEpRVVpvUWl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRE8wbEJRMlFzUzBGQlN5eEZRVUZGTzBkQlEwc3NTVUZCU1N4RFFWbG9RanM3UVVGSlRTeEpRVUZOTEdOQlFXTXNSMEZCY0VJc1RVRkJUU3hqUVVGbExGTkJRVkVzYTBKQlFXdENPME5CVTNKRUxFTkJRVUU3UVVGU2RVSTdTVUZCY2tJc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRPenN3UTBGQllUdEJRVWRzUXp0SlFVWkRMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTEVWQlFVVXNjVUpCUVhGQ0xFVkJRVVVzUzBGQlN5eEZRVUZGTEZOQlFWTXNSVUZCUlN3d1FrRkJNRUlzUTBGQlF6dEpRVU14Uml4UlFVRlJMRVZCUVVVN096UkRRVU5WTzBGQlIzSkNPMGxCUmtNc1UwRkJVeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEZWQlFWVXNSVUZCUlN4eFFrRkJjVUlzUlVGQlJTeExRVUZMTEVWQlFVVXNVMEZCVXl4RlFVRkZMR2REUVVGblF5eERRVUZETzBsQlEzUkhMRkZCUVZFc1JVRkJSVHM3YTBSQlEzTkNPMEZCUTNCQ08wbEJRVm9zVTBGQlV5eEZRVUZGT3poQ1FVRmhMRWxCUVVrN2FVUkJRVU03UVVGU2JrSXNZMEZCWXp0SlFVWXhRaXhMUVVGTExFTkJRVU1zYTBKQlFXdENMRU5CUVVNN1NVRkRla0lzUzBGQlN5eEZRVUZGTzBkQlEwc3NZMEZCWXl4RFFWTXhRanM3UVVGSlRTeEpRVUZOTEdOQlFXTXNSMEZCY0VJc1RVRkJUU3hqUVVGbExGTkJRVkVzYTBKQlFXdENPME5CYlVKeVJDeERRVUZCTzBGQmJFSjFRanRKUVVGeVFpeEZRVUZGTEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU03T3pCRFFVRmhPMEZCUjJ4RE8wbEJSa01zVTBGQlV5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSU3h4UWtGQmNVSXNSVUZCUlN4TFFVRkxMRVZCUVVVc1UwRkJVeXhGUVVGRkxEUkNRVUUwUWl4RFFVRkRPMGxCUXpsR0xGRkJRVkVzUlVGQlJUczdPRU5CUTJNN1FVRkhla0k3U1VGR1F5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1UwRkJVeXhGUVVGRkxIRkNRVUZ4UWl4RlFVRkZMRXRCUVVzc1JVRkJSU3hUUVVGVExFVkJRVVVzSzBKQlFTdENMRU5CUVVNN1NVRkRjRWNzVVVGQlVTeEZRVUZGT3p0cFJFRkRiMEk3UVVGSEwwSTdTVUZHUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zU1VGQlNTeEZRVUZGTEZsQlFWa3NSVUZCUlN4TFFVRkxMRVZCUVVVc1UwRkJVeXhGUVVGRkxEQkNRVUV3UWl4RFFVRkRPMGxCUTJwR0xGRkJRVkVzUlVGQlJUczdORU5CUTFVN1FVRkRNa003U1VGQkwwUXNVVUZCVVN4RlFVRkZPMGxCUVVVc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVUZGTEUxQlFVMHNRMEZCUXl4blFrRkJaMElzUTBGQlF6dEpRVUZGTEUxQlFVMHNSVUZCUlRzN2FVUkJRWFZDTzBGQlEyaEVPMGxCUVhKRExGRkJRVkVzUlVGQlJUdEpRVUZGTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkJSU3hOUVVGTkxFVkJRVVU3T3l0RFFVRnJRanRCUVVOb1FqdEpRVUYwUXl4UlFVRlJMRVZCUVVVN1NVRkJSU3hOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETzBsQlFVVXNUVUZCVFN4RlFVRkZPenR0UkVGQmRVSTdRVUZEYmtRN1NVRkJWQ3hOUVVGTkxFVkJRVVU3T0VKQlFWa3NTVUZCU1R0blJFRkJRenRCUVVOb1FqdEpRVUZVTEUxQlFVMHNSVUZCUlRzNFFrRkJZU3hKUVVGSk8ybEVRVUZETzBGQlEwUTdTVUZCZWtJc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVUZGTEUxQlFVMHNSVUZCUlRzN2EwUkJRWE5ETzBGQlEyeEVPMGxCUVZvc1UwRkJVeXhGUVVGRk96aENRVUZoTEVsQlFVazdhVVJCUVVNN1FVRkRha0k3U1VGQldpeFRRVUZUTEVWQlFVVTdPRUpCUVdFc1NVRkJTVHRwUkVGQlF6dEJRV3hDYmtJc1kwRkJZenRKUVVZeFFpeExRVUZMTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU03U1VGRGVrSXNTMEZCU3l4RlFVRkZPMGRCUTBzc1kwRkJZeXhEUVcxQ01VSTdPMEZCU1Uwc1NVRkJUU3huUWtGQlowSXNSMEZCZEVJc1RVRkJUU3huUWtGQmFVSXNVMEZCVVN4clFrRkJhMEk3UTBGamRrUXNRMEZCUVR0QlFXSjFRanRKUVVGeVFpeEZRVUZGTEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU03T3pSRFFVRmhPMEZCUjJ4RE8wbEJSa01zVTBGQlV5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSU3h4UWtGQmNVSXNSVUZCUlN4TFFVRkxMRVZCUVVVc1UwRkJVeXhGUVVGRkxEaENRVUU0UWl4RFFVRkRPMGxCUTJoSExGRkJRVkVzUlVGQlJUczdaMFJCUTJNN1FVRkhla0k3U1VGR1F5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxIRkNRVUZ4UWl4RlFVRkZMRXRCUVVzc1JVRkJSU3hUUVVGVExFVkJRVVVzWjBOQlFXZERMRU5CUVVNN1NVRkRia2NzVVVGQlVTeEZRVUZGT3p0cFJFRkRaMEk3UVVGRk0wSTdTVUZFUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEZkQlFWY3NSVUZCUlN4TFFVRkxMRVZCUVVVc1UwRkJVeXhGUVVGRkxIZERRVUYzUXl4RFFVRkRPenMyUkVGRE0wUTdRVUZEYTBNN1NVRkJlRVVzVVVGQlVTeEZRVUZGTzBsQlFVVXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVGRkxFMUJRVTBzUTBGQlF5eDVRa0ZCZVVJc1EwRkJRenRKUVVGRkxFMUJRVTBzUlVGQlJUczdORVJCUVhsRE8wRkJRM1pHTzBsQlFYcENMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGQlJTeE5RVUZOTEVWQlFVVTdPMmRFUVVGcFFqdEJRVU0zUWp0SlFVRmFMRk5CUVZNc1JVRkJSVHM0UWtGQllTeEpRVUZKTzIxRVFVRkRPMEZCUTJwQ08wbEJRVm9zVTBGQlV5eEZRVUZGT3poQ1FVRmhMRWxCUVVrN2JVUkJRVU03UVVGaWJrSXNaMEpCUVdkQ08wbEJSalZDTEV0QlFVc3NRMEZCUXl4dlFrRkJiMElzUTBGQlF6dEpRVU16UWl4TFFVRkxMRVZCUVVVN1IwRkRTeXhuUWtGQlowSXNRMEZqTlVJN08wRkJTVTBzU1VGQlRTeHBRa0ZCYVVJc1IwRkJka0lzVFVGQlRTeHBRa0ZCYTBJc1UwRkJVU3hyUWtGQmEwSTdRMEZyUW5oRUxFTkJRVUU3UVVGcVFuVkNPMGxCUVhKQ0xFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NSVUZCUlN4TlFVRk5MRVZCUVVVc1EwRkJRenM3TmtOQlFXRTdRVUZIYkVNN1NVRkdReXhUUVVGVExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVRkZMRmxCUVZrc1JVRkJSU3hMUVVGTExFVkJRVVVzVTBGQlV5eEZRVUZGTEN0Q1FVRXJRaXhEUVVGRE8wbEJRM2hHTEZGQlFWRXNSVUZCUlRzN2FVUkJRMk03UVVGSGVrSTdTVUZHUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEZsQlFWa3NSVUZCUlN4TFFVRkxMRVZCUVVVc1UwRkJVeXhGUVVGRkxHbERRVUZwUXl4RFFVRkRPMGxCUXpOR0xGRkJRVkVzUlVGQlJUczdhMFJCUTJkQ08wRkJRMWM3U1VGQmNrTXNVVUZCVVN4RlFVRkZPMGxCUVVVc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVUZGTEUxQlFVMHNSVUZCUlRzN2RVUkJRWFZDTzBGQlEzUkNPMGxCUVhKRExGRkJRVkVzUlVGQlJUdEpRVUZGTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkJSU3hOUVVGTkxFVkJRVVU3TzNGRVFVRnhRanRCUVVObE8wbEJRWGhGTEZGQlFWRXNSVUZCUlR0SlFVRkZMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGQlJTeE5RVUZOTEVOQlFVTXNlVUpCUVhsQ0xFTkJRVU03U1VGQlJTeE5RVUZOTEVWQlFVVTdPM0ZFUVVGcFF6dEJRVVY2Unp0SlFVUkRMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eFRRVUZUTEVWQlFVVXNWMEZCVnl4RlFVRkZMRXRCUVVzc1JVRkJSU3hUUVVGVExFVkJRVVVzT0VKQlFUaENMRU5CUVVNN08yZEVRVU12UkR0QlFVTkVPMGxCUVhwQ0xFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZCUlN4TlFVRk5MRVZCUVVVN08zTkVRVUZ6UWp0QlFVTnlRanRKUVVGNlFpeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUVVVc1RVRkJUU3hGUVVGRk96dHRSRUZCYjBNN1FVRkRVanRKUVVGd1JDeFRRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1lVRkJZU3hGUVVGRkxGbEJRVmtzUlVGQlJTeExRVUZMTEVOQlFVTTdPMmxFUVVGeFF6dEJRVU0xUlR0SlFVRmFMRk5CUVZNc1JVRkJSVHM0UWtGQllTeEpRVUZKTzI5RVFVRkRPMEZCUTJwQ08wbEJRVm9zVTBGQlV5eEZRVUZGT3poQ1FVRmhMRWxCUVVrN2IwUkJRVU03UVVGcVFtNUNMR2xDUVVGcFFqdEpRVVkzUWl4TFFVRkxMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTTdTVUZETlVJc1MwRkJTeXhGUVVGRk8wZEJRMHNzYVVKQlFXbENMRU5CYTBJM1FqczdRVUZKVFN4SlFVRk5MR0ZCUVdFc1IwRkJia0lzVFVGQlRTeGhRVUZqTEZOQlFWRXNhMEpCUVd0Q08wTkJiVUp3UkN4RFFVRkJPMEZCYkVKMVFqdEpRVUZ5UWl4RlFVRkZMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTTdPM2xEUVVGaE8wRkJSMnhETzBsQlJrTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeHhRa0ZCY1VJc1JVRkJSU3hMUVVGTExFVkJRVVVzVTBGQlV5eEZRVUZGTERKQ1FVRXlRaXhEUVVGRE8wbEJRemRHTEZGQlFWRXNSVUZCUlRzN05rTkJRMk03UVVGSGVrSTdTVUZHUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc2NVSkJRWEZDTEVWQlFVVXNTMEZCU3l4RlFVRkZMRk5CUVZNc1JVRkJSU3cyUWtGQk5rSXNRMEZCUXp0SlFVTXhSeXhSUVVGUkxFVkJRVVU3T3l0RFFVTXlRanRCUVVkMFF6dEpRVVpETEZOQlFWTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhUUVVGVExFVkJRVVVzY1VKQlFYRkNMRVZCUVVVc1MwRkJTeXhGUVVGRkxGTkJRVk1zUlVGQlJTdzRRa0ZCT0VJc1EwRkJRenRKUVVOdVJ5eFJRVUZSTEVWQlFVVTdPMmRFUVVOdlFqdEJRVU5QTzBsQlFYSkRMRkZCUVZFc1JVRkJSVHRKUVVGRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZCUlN4TlFVRk5MRVZCUVVVN08yOUVRVUYzUWp0QlFVTnVSRHRKUVVGVUxFMUJRVTBzUlVGQlJUczRRa0ZCV1N4SlFVRkpPeXREUVVGRE8wRkJRMmhDTzBsQlFWUXNUVUZCVFN4RlFVRkZPemhDUVVGaExFbEJRVWs3WjBSQlFVTTdRVUZEUkR0SlFVRjZRaXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlFVVXNUVUZCVFN4RlFVRkZPenRwUkVGQmMwTTdRVUZGTDBRN1NVRkVReXhUUVVGVExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RlFVRkZMRmxCUVZrc1JVRkJSU3hMUVVGTExFVkJRVVVzVTBGQlV5eEZRVUZGTEN0Q1FVRXJRaXhEUVVGRE96dG5SRUZETjBRN1FVRkRiRUk3U1VGQldpeFRRVUZUTEVWQlFVVTdPRUpCUVdFc1NVRkJTVHRuUkVGQlF6dEJRVU5xUWp0SlFVRmFMRk5CUVZNc1JVRkJSVHM0UWtGQllTeEpRVUZKTzJkRVFVRkRPMEZCYkVKdVFpeGhRVUZoTzBsQlJucENMRXRCUVVzc1EwRkJReXhwUWtGQmFVSXNRMEZCUXp0SlFVTjRRaXhMUVVGTExFVkJRVVU3UjBGRFN5eGhRVUZoTEVOQmJVSjZRanM3UVVGSlRTeEpRVUZOTEcxQ1FVRnRRaXhIUVVGNlFpeE5RVUZOTEcxQ1FVRnZRaXhUUVVGUkxHdENRVUZyUWp0RFFXZENNVVFzUTBGQlFUdEJRV1oxUWp0SlFVRnlRaXhGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNN095dERRVUZoTzBGQlIyeERPMGxCUmtNc1UwRkJVeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNSVUZCUlN4eFFrRkJjVUlzUlVGQlJTeExRVUZMTEVWQlFVVXNVMEZCVXl4RlFVRkZMR2xEUVVGcFF5eERRVUZETzBsQlEyNUhMRkZCUVZFc1JVRkJSVHM3YlVSQlEyTTdRVUZIZWtJN1NVRkdReXhUUVVGVExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RlFVRkZMSEZDUVVGeFFpeEZRVUZGTEV0QlFVc3NSVUZCUlN4VFFVRlRMRVZCUVVVc2IwTkJRVzlETEVOQlFVTTdTVUZEZWtjc1VVRkJVU3hGUVVGRk96dHpSRUZEYjBJN1FVRkRUenRKUVVGeVF5eFJRVUZSTEVWQlFVVTdTVUZCUlN4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRVVVzVFVGQlRTeEZRVUZGT3pzd1JFRkJkMEk3UVVGRFJ6dEpRVUV2UkN4UlFVRlJMRVZCUVVVN1NVRkJSU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlFVVXNUVUZCVFN4RFFVRkRMR2RDUVVGblFpeERRVUZETzBsQlFVVXNUVUZCVFN4RlFVRkZPenR6UkVGQmRVSTdRVUZEYUVRN1NVRkJja01zVVVGQlVTeEZRVUZGTzBsQlFVVXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVGRkxFMUJRVTBzUlVGQlJUczdiMFJCUVd0Q08wRkJRMnBDTzBsQlFYSkRMRkZCUVZFc1JVRkJSVHRKUVVGRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZCUlN4TlFVRk5MRVZCUVVVN08zVkVRVUZ4UWp0QlFVTndRanRKUVVGeVF5eFJRVUZSTEVWQlFVVTdTVUZCUlN4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRVVVzVFVGQlRTeEZRVUZGT3p0eFJFRkJiVUk3UVVGRE9VTTdTVUZCVkN4TlFVRk5MRVZCUVVVN09FSkJRVmtzU1VGQlNUdHhSRUZCUXp0QlFVTm9RanRKUVVGVUxFMUJRVTBzUlVGQlJUczRRa0ZCWVN4SlFVRkpPM05FUVVGRE8wRkJRMlE3U1VGQldpeFRRVUZUTEVWQlFVVTdPRUpCUVdFc1NVRkJTVHR6UkVGQlF6dEJRV1p1UWl4dFFrRkJiVUk3U1VGR0wwSXNTMEZCU3l4RFFVRkRMSFZDUVVGMVFpeERRVUZETzBsQlF6bENMRXRCUVVzc1JVRkJSVHRIUVVOTExHMUNRVUZ0UWl4RFFXZENMMEk3TzBGQlNVMHNTVUZCVFN4alFVRmpMRWRCUVhCQ0xFMUJRVTBzWTBGQlpTeFRRVUZSTEd0Q1FVRnJRanREUVZseVJDeERRVUZCTzBGQldIVkNPMGxCUVhKQ0xFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NSVUZCUlN4TlFVRk5MRVZCUVVVc1EwRkJRenM3TUVOQlFXRTdRVUZIYkVNN1NVRkdReXhUUVVGVExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVRkZMSEZDUVVGeFFpeEZRVUZGTEV0QlFVc3NSVUZCUlN4VFFVRlRMRVZCUVVVc05FSkJRVFJDTEVOQlFVTTdTVUZET1VZc1VVRkJVU3hGUVVGRk96czRRMEZEWXp0QlFVTjVRenRKUVVGcVJTeFJRVUZSTEVWQlFVVTdTVUZCUlN4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRVVVzVFVGQlRTeERRVUZETEd0Q1FVRnJRaXhEUVVGRE8wbEJRVVVzVFVGQlRTeEZRVUZGT3p0dFJFRkJNa0k3UVVGRGJrSTdTVUZCZUVVc1VVRkJVU3hGUVVGRk8wbEJRVVVzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXp0SlFVRkZMRTFCUVUwc1EwRkJReXg1UWtGQmVVSXNRMEZCUXp0SlFVRkZMRTFCUVUwc1JVRkJSVHM3YlVSQlFXdERPMEZCUTNCRk8wbEJRWEpETEZGQlFWRXNSVUZCUlR0SlFVRkZMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGQlJTeE5RVUZOTEVWQlFVVTdPMnRFUVVGeFFqdEJRVU53UWp0SlFVRnlReXhSUVVGUkxFVkJRVVU3U1VGQlJTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUVVVc1RVRkJUU3hGUVVGRk96czRRMEZCYVVJN1FVRkROVUk3U1VGQmVrSXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVGRkxFMUJRVTBzUlVGQlJUczdPRU5CUVd0RE8wRkJRemxETzBsQlFWb3NVMEZCVXl4RlFVRkZPemhDUVVGaExFbEJRVWs3YVVSQlFVTTdRVUZEYWtJN1NVRkJXaXhUUVVGVExFVkJRVVU3T0VKQlFXRXNTVUZCU1R0cFJFRkJRenRCUVZodVFpeGpRVUZqTzBsQlJqRkNMRXRCUVVzc1EwRkJReXhyUWtGQmEwSXNRMEZCUXp0SlFVTjZRaXhMUVVGTExFVkJRVVU3UjBGRFN5eGpRVUZqTEVOQldURkNJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHRjYmlBZ1kyOXNkVzF1TEZ4dUlDQmpjbVZoZEdWa1FYUXNYRzRnSUcxaGJubFViMDl1WlN4Y2JpQWdiMjVsVkc5TllXNTVMRnh1SUNCd2F5eGNiaUFnZEdGaWJHVXNYRzRnSUhWdWFYRjFaU3hjYmlBZ2RYQmtZWFJsWkVGMExGeHVmU0JtY205dElGd2lRR1JsWTJGbUxYUnpMMk52Y21WY0lqdGNibWx0Y0c5eWRDQjdJRTF2WkdWc0xDQnRiMlJsYkN3Z2IzQjBhVzl1TENCeVpYRjFhWEpsWkN3Z2RIbHdaU0JoY3lCMGVYQmxUMllnZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJSbFkyOXlZWFJ2Y2kxMllXeHBaR0YwYVc5dVhDSTdYRzVwYlhCdmNuUWdlMXh1SUNCSmMyOXNZWFJwYjI1VWFXVnlMRnh1SUNCSmMyOXNZWFJwYjI1VWFXVnlUM0IwYVc5dWN5eGNiaUFnVFdWdFltVnljMmhwY0ZOMFlYUjFjeXhjYmlBZ1RXVnRZbVZ5YzJocGNGTjBZWFIxYzA5d2RHbHZibk1zWEc0Z0lGQmxjbTFwYzNOcGIyNURZWFJsWjI5eWVTeGNiaUFnVUdWeWJXbHpjMmx2YmtOaGRHVm5iM0o1VDNCMGFXOXVjeXhjYmlBZ1VISnBibU5wY0dGc1MybHVaQ3hjYmlBZ1VISnBibU5wY0dGc1MybHVaRTl3ZEdsdmJuTXNYRzRnSUZKRlRGOURRVk5EUVVSRlgwUkZVRVZPUkVWT1ZDeGNiaUFnVWtWTVgwNVZURXhKUmxrc1hHNGdJRkpGVEY5U1JWTlVVa2xEVkN4Y2JpQWdVbVZ6YjNWeVkyVldhWE5wWW1sc2FYUjVMRnh1SUNCU1pYTnZkWEpqWlZacGMybGlhV3hwZEhsUGNIUnBiMjV6TEZ4dUlDQlRZMjl3WlV0cGJtUXNYRzRnSUZOamIzQmxTMmx1WkU5d2RHbHZibk1zWEc0Z0lGTjBiM0poWjJWQ2FXNWthVzVuUzJsdVpDeGNiaUFnVTNSdmNtRm5aVUpwYm1ScGJtZExhVzVrVDNCMGFXOXVjeXhjYmlBZ1UzUnZjbUZuWlV0cGJtUXNYRzRnSUZOMGIzSmhaMlZMYVc1a1QzQjBhVzl1Y3l4Y2JuMGdabkp2YlNCY0lpNHZiM0puTFdKaGMyVmtMV0YxZEdodmNtbDZZWFJwYjI0dGMzbHpkR1Z0WENJN1hHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCQmRYUm9iM0pwZW1GMGFXOXVUVzlrWld3Z1pYaDBaVzVrY3lCTmIyUmxiQ0I3WEc0Z0lHTnZibk4wY25WamRHOXlLR1JoZEdFL09pQjFibXR1YjNkdUtTQjdYRzRnSUNBZ2MzVndaWElvWkdGMFlTQmhjeUJ1WlhabGNpazdYRzRnSUgxY2JuMWNibHh1UUhSaFlteGxLRndpZEdWdVlXNTBjMXdpS1Z4dVFHMXZaR1ZzS0NsY2JtVjRjRzl5ZENCamJHRnpjeUJVWlc1aGJuUWdaWGgwWlc1a2N5QkJkWFJvYjNKcGVtRjBhVzl1VFc5a1pXd2dlMXh1SUNCQWNHc29leUIwZVhCbE9pQlRkSEpwYm1jZ2ZTa2dhV1FoT2lCemRISnBibWM3WEc0Z0lFQjFibWx4ZFdVb0tTQkFjbVZ4ZFdseVpXUW9LU0JBZEhsd1pVOW1LRk4wY21sdVp5a2dRR052YkhWdGJpZ3BJSE5zZFdjaE9pQnpkSEpwYm1jN1hHNGdJRUJ5WlhGMWFYSmxaQ2dwSUVCMGVYQmxUMllvVTNSeWFXNW5LU0JBWTI5c2RXMXVLQ2tnYm1GdFpTRTZJSE4wY21sdVp6dGNiaUFnUUhKbGNYVnBjbVZrS0NrZ1FIUjVjR1ZQWmloVGRISnBibWNwSUVCdmNIUnBiMjRvU1hOdmJHRjBhVzl1VkdsbGNrOXdkR2x2Ym5NcElFQmpiMngxYlc0b0tTQnBjMjlzWVhScGIyNVVhV1Z5SVRvZ1NYTnZiR0YwYVc5dVZHbGxjanRjYmlBZ1FHOXVaVlJ2VFdGdWVTZ29LU0E5UGlCUGNtZFZibWwwTENCU1JVeGZVa1ZUVkZKSlExUXNJR1poYkhObEtTQnZjbWRWYm1sMGN6ODZJRTl5WjFWdWFYUmJYU0I4SUhOMGNtbHVaMXRkTzF4dUlDQkFiMjVsVkc5TllXNTVLQ2dwSUQwK0lGUmxibUZ1ZEUxbGJXSmxjbk5vYVhBc0lGSkZURjlTUlZOVVVrbERWQ3dnWm1Gc2MyVXBJRzFsYldKbGNuTm9hWEJ6UHpvZ1ZHVnVZVzUwVFdWdFltVnljMmhwY0Z0ZElId2djM1J5YVc1blcxMDdYRzRnSUVCdmJtVlViMDFoYm5rb0tDa2dQVDRnVUhKcGJtTnBjR0ZzTENCU1JVeGZVa1ZUVkZKSlExUXNJR1poYkhObEtTQndjbWx1WTJsd1lXeHpQem9nVUhKcGJtTnBjR0ZzVzEwZ2ZDQnpkSEpwYm1kYlhUdGNiaUFnUUc5dVpWUnZUV0Z1ZVNnb0tTQTlQaUJUZEc5eVlXZGxRbWx1WkdsdVp5d2dVa1ZNWDFKRlUxUlNTVU5VTENCbVlXeHpaU2tnYzNSdmNtRm5aVUpwYm1ScGJtZHpQem9nVTNSdmNtRm5aVUpwYm1ScGJtZGJYU0I4SUhOMGNtbHVaMXRkTzF4dUlDQkFZM0psWVhSbFpFRjBLQ2tnWTNKbFlYUmxaRUYwSVRvZ1JHRjBaVHRjYmlBZ1FIVndaR0YwWldSQmRDZ3BJSFZ3WkdGMFpXUkJkQ0U2SUVSaGRHVTdYRzU5WEc1Y2JrQjBZV0pzWlNoY0luUmxibUZ1ZEY5d2NtOW1hV3hsYzF3aUtWeHVRRzF2WkdWc0tDbGNibVY0Y0c5eWRDQmpiR0Z6Y3lCVVpXNWhiblJRY205bWFXeGxJR1Y0ZEdWdVpITWdRWFYwYUc5eWFYcGhkR2x2YmsxdlpHVnNJSHRjYmlBZ1FIQnJLSHNnZEhsd1pUb2dVM1J5YVc1bklIMHBJR2xrSVRvZ2MzUnlhVzVuTzF4dUlDQkFiV0Z1ZVZSdlQyNWxLQ2dwSUQwK0lGUmxibUZ1ZEN3Z1VrVk1YME5CVTBOQlJFVmZSRVZRUlU1RVJVNVVMQ0JtWVd4elpTd2dkVzVrWldacGJtVmtMQ0JjSW1aclgzUmxibUZ1ZEY5d2NtOW1hV3hsYzE5MFpXNWhiblJjSWlsY2JpQWdRSEpsY1hWcGNtVmtLQ2xjYmlBZ2RHVnVZVzUwSVRvZ1ZHVnVZVzUwSUh3Z2MzUnlhVzVuTzF4dUlDQkFjbVZ4ZFdseVpXUW9LU0JBZEhsd1pVOW1LRk4wY21sdVp5a2dRR052YkhWdGJpZ3BJSEJ5YjJacGJHVkxaWGtoT2lCemRISnBibWM3WEc0Z0lFQjBlWEJsVDJZb1QySnFaV04wS1NCQVkyOXNkVzF1S0NrZ2JXVjBZV1JoZEdFL09pQlNaV052Y21ROGMzUnlhVzVuTENCMWJtdHViM2R1UGp0Y2JpQWdRR055WldGMFpXUkJkQ2dwSUdOeVpXRjBaV1JCZENFNklFUmhkR1U3WEc0Z0lFQjFjR1JoZEdWa1FYUW9LU0IxY0dSaGRHVmtRWFFoT2lCRVlYUmxPMXh1ZlZ4dVhHNUFkR0ZpYkdVb1hDSnZjbWRmZFc1cGRITmNJaWxjYmtCdGIyUmxiQ2dwWEc1bGVIQnZjblFnWTJ4aGMzTWdUM0puVlc1cGRDQmxlSFJsYm1SeklFRjFkR2h2Y21sNllYUnBiMjVOYjJSbGJDQjdYRzRnSUVCd2F5aDdJSFI1Y0dVNklGTjBjbWx1WnlCOUtTQnBaQ0U2SUhOMGNtbHVaenRjYmlBZ1FHMWhibmxVYjA5dVpTZ29LU0E5UGlCVVpXNWhiblFzSUZKRlRGOVNSVk5VVWtsRFZDd2dabUZzYzJVc0lIVnVaR1ZtYVc1bFpDd2dYQ0ptYTE5dmNtZGZkVzVwZEhOZmRHVnVZVzUwWENJcFhHNGdJRUJ5WlhGMWFYSmxaQ2dwWEc0Z0lIUmxibUZ1ZENFNklGUmxibUZ1ZENCOElITjBjbWx1Wnp0Y2JpQWdRRzFoYm5sVWIwOXVaU2dvS1NBOVBpQlBjbWRWYm1sMExDQlNSVXhmVWtWVFZGSkpRMVFzSUdaaGJITmxMQ0IxYm1SbFptbHVaV1FzSUZ3aVptdGZiM0puWDNWdWFYUnpYM0JoY21WdWRGd2lLVnh1SUNCd1lYSmxiblEvT2lCUGNtZFZibWwwSUh3Z2MzUnlhVzVuTzF4dUlDQkFiMjVsVkc5TllXNTVLQ2dwSUQwK0lFOXlaMVZ1YVhRc0lGSkZURjlTUlZOVVVrbERWQ3dnWm1Gc2MyVXBJR05vYVd4a2NtVnVQem9nVDNKblZXNXBkRnRkSUh3Z2MzUnlhVzVuVzEwN1hHNGdJRUJ5WlhGMWFYSmxaQ2dwSUVCMGVYQmxUMllvVTNSeWFXNW5LU0JBWTI5c2RXMXVLQ2tnYm1GdFpTRTZJSE4wY21sdVp6dGNiaUFnUUhKbGNYVnBjbVZrS0NrZ1FIUjVjR1ZQWmloVGRISnBibWNwSUVCamIyeDFiVzRvS1NCd1lYUm9JVG9nYzNSeWFXNW5PMXh1SUNCQWRIbHdaVTltS0U5aWFtVmpkQ2tnUUdOdmJIVnRiaWdwSUcxbGRHRmtZWFJoUHpvZ1VtVmpiM0prUEhOMGNtbHVaeXdnZFc1cmJtOTNiajQ3WEc0Z0lFQnZibVZVYjAxaGJua29LQ2tnUFQ0Z1QzSm5WVzVwZEUxbGJXSmxjbk5vYVhBc0lGSkZURjlTUlZOVVVrbERWQ3dnWm1Gc2MyVXBJRzFsYldKbGNuTm9hWEJ6UHpvZ1QzSm5WVzVwZEUxbGJXSmxjbk5vYVhCYlhTQjhJSE4wY21sdVoxdGRPMXh1SUNCQWIyNWxWRzlOWVc1NUtDZ3BJRDArSUZCeWIzUmxZM1JsWkZKbGMyOTFjbU5sTENCU1JVeGZVa1ZUVkZKSlExUXNJR1poYkhObEtTQnlaWE52ZFhKalpYTS9PaUJRY205MFpXTjBaV1JTWlhOdmRYSmpaVnRkSUh3Z2MzUnlhVzVuVzEwN1hHNGdJRUJ2Ym1WVWIwMWhibmtvS0NrZ1BUNGdTVzVvWlhKcGRHRnVZMlZDYkc5amF5d2dVa1ZNWDFKRlUxUlNTVU5VTENCbVlXeHpaU2tnYVc1b1pYSnBkR0Z1WTJWQ2JHOWphM00vT2lCSmJtaGxjbWwwWVc1alpVSnNiMk5yVzEwZ2ZDQnpkSEpwYm1kYlhUdGNiaUFnUUc5dVpWUnZUV0Z1ZVNnb0tTQTlQaUJQY21kVmJtbDBRMnh2YzNWeVpTd2dVa1ZNWDFKRlUxUlNTVU5VTENCbVlXeHpaU2tnWVc1alpYTjBiM0pNYVc1cmN6ODZJRTl5WjFWdWFYUkRiRzl6ZFhKbFcxMGdmQ0J6ZEhKcGJtZGJYVHRjYmlBZ1FHOXVaVlJ2VFdGdWVTZ29LU0E5UGlCUGNtZFZibWwwUTJ4dmMzVnlaU3dnVWtWTVgxSkZVMVJTU1VOVUxDQm1ZV3h6WlNrZ1pHVnpZMlZ1WkdGdWRFeHBibXR6UHpvZ1QzSm5WVzVwZEVOc2IzTjFjbVZiWFNCOElITjBjbWx1WjF0ZE8xeHVJQ0JBWTNKbFlYUmxaRUYwS0NrZ1kzSmxZWFJsWkVGMElUb2dSR0YwWlR0Y2JpQWdRSFZ3WkdGMFpXUkJkQ2dwSUhWd1pHRjBaV1JCZENFNklFUmhkR1U3WEc1OVhHNWNia0IwWVdKc1pTaGNJbTl5WjE5MWJtbDBYM0J5YjJacGJHVnpYQ0lwWEc1QWJXOWtaV3dvS1Z4dVpYaHdiM0owSUdOc1lYTnpJRTl5WjFWdWFYUlFjbTltYVd4bElHVjRkR1Z1WkhNZ1FYVjBhRzl5YVhwaGRHbHZiazF2WkdWc0lIdGNiaUFnUUhCcktIc2dkSGx3WlRvZ1UzUnlhVzVuSUgwcElHbGtJVG9nYzNSeWFXNW5PMXh1SUNCQWJXRnVlVlJ2VDI1bEtDZ3BJRDArSUU5eVoxVnVhWFFzSUZKRlRGOURRVk5EUVVSRlgwUkZVRVZPUkVWT1ZDd2dabUZzYzJVc0lIVnVaR1ZtYVc1bFpDd2dYQ0ptYTE5dmNtZGZkVzVwZEY5d2NtOW1hV3hsYzE5dmNtZGZkVzVwZEZ3aUtWeHVJQ0JBY21WeGRXbHlaV1FvS1Z4dUlDQnZjbWRWYm1sMElUb2dUM0puVlc1cGRDQjhJSE4wY21sdVp6dGNiaUFnUUhKbGNYVnBjbVZrS0NrZ1FIUjVjR1ZQWmloVGRISnBibWNwSUVCamIyeDFiVzRvS1NCd2NtOW1hV3hsUzJWNUlUb2djM1J5YVc1bk8xeHVJQ0JBZEhsd1pVOW1LRTlpYW1WamRDa2dRR052YkhWdGJpZ3BJRzFsZEdGa1lYUmhQem9nVW1WamIzSmtQSE4wY21sdVp5d2dkVzVyYm05M2JqNDdYRzRnSUVCamNtVmhkR1ZrUVhRb0tTQmpjbVZoZEdWa1FYUWhPaUJFWVhSbE8xeHVJQ0JBZFhCa1lYUmxaRUYwS0NrZ2RYQmtZWFJsWkVGMElUb2dSR0YwWlR0Y2JuMWNibHh1UUhSaFlteGxLRndpYjNKblgzVnVhWFJmWTJ4dmMzVnlaVndpS1Z4dVFHMXZaR1ZzS0NsY2JtVjRjRzl5ZENCamJHRnpjeUJQY21kVmJtbDBRMnh2YzNWeVpTQmxlSFJsYm1SeklFRjFkR2h2Y21sNllYUnBiMjVOYjJSbGJDQjdYRzRnSUVCd2F5aDdJSFI1Y0dVNklGTjBjbWx1WnlCOUtTQnBaQ0U2SUhOMGNtbHVaenRjYmlBZ1FHMWhibmxVYjA5dVpTZ29LU0E5UGlCVVpXNWhiblFzSUZKRlRGOURRVk5EUVVSRlgwUkZVRVZPUkVWT1ZDd2dabUZzYzJVc0lIVnVaR1ZtYVc1bFpDd2dYQ0ptYTE5dmNtZGZZMnh2YzNWeVpWOTBaVzVoYm5SY0lpbGNiaUFnUUhKbGNYVnBjbVZrS0NsY2JpQWdkR1Z1WVc1MElUb2dWR1Z1WVc1MElId2djM1J5YVc1bk8xeHVJQ0JBYldGdWVWUnZUMjVsS0NncElEMCtJRTl5WjFWdWFYUXNJRkpGVEY5RFFWTkRRVVJGWDBSRlVFVk9SRVZPVkN3Z1ptRnNjMlVzSUhWdVpHVm1hVzVsWkN3Z1hDSm1hMTl2Y21kZlkyeHZjM1Z5WlY5aGJtTmxjM1J2Y2x3aUtWeHVJQ0JBY21WeGRXbHlaV1FvS1Z4dUlDQmhibU5sYzNSdmNpRTZJRTl5WjFWdWFYUWdmQ0J6ZEhKcGJtYzdYRzRnSUVCdFlXNTVWRzlQYm1Vb0tDa2dQVDRnVDNKblZXNXBkQ3dnVWtWTVgwTkJVME5CUkVWZlJFVlFSVTVFUlU1VUxDQm1ZV3h6WlN3Z2RXNWtaV1pwYm1Wa0xDQmNJbVpyWDI5eVoxOWpiRzl6ZFhKbFgyUmxjMk5sYm1SaGJuUmNJaWxjYmlBZ1FISmxjWFZwY21Wa0tDbGNiaUFnWkdWelkyVnVaR0Z1ZENFNklFOXlaMVZ1YVhRZ2ZDQnpkSEpwYm1jN1hHNGdJRUJ5WlhGMWFYSmxaQ2dwSUVCMGVYQmxUMllvVG5WdFltVnlLU0JBWTI5c2RXMXVLQ2tnWkdWd2RHZ2hPaUJ1ZFcxaVpYSTdYRzRnSUVCamNtVmhkR1ZrUVhRb0tTQmpjbVZoZEdWa1FYUWhPaUJFWVhSbE8xeHVmVnh1WEc1QWRHRmliR1VvWENKMWMyVnljMXdpS1Z4dVFHMXZaR1ZzS0NsY2JtVjRjRzl5ZENCamJHRnpjeUJWYzJWeUlHVjRkR1Z1WkhNZ1FYVjBhRzl5YVhwaGRHbHZiazF2WkdWc0lIdGNiaUFnUUhCcktIc2dkSGx3WlRvZ1UzUnlhVzVuSUgwcElHbGtJVG9nYzNSeWFXNW5PMXh1SUNCQWRXNXBjWFZsS0NrZ1FIUjVjR1ZQWmloVGRISnBibWNwSUVCamIyeDFiVzRvS1NCbGJXRnBiRDg2SUhOMGNtbHVaenRjYmlBZ1FIVnVhWEYxWlNncElFQjBlWEJsVDJZb1UzUnlhVzVuS1NCQVkyOXNkVzF1S0NrZ2NHaHZibVUvT2lCemRISnBibWM3WEc0Z0lFQnlaWEYxYVhKbFpDZ3BJRUIwZVhCbFQyWW9VM1J5YVc1bktTQkFZMjlzZFcxdUtDa2daR2x6Y0d4aGVVNWhiV1VoT2lCemRISnBibWM3WEc0Z0lFQnZibVZVYjAxaGJua29LQ2tnUFQ0Z1ZHVnVZVzUwVFdWdFltVnljMmhwY0N3Z1VrVk1YMUpGVTFSU1NVTlVMQ0JtWVd4elpTa2dkR1Z1WVc1MFRXVnRZbVZ5YzJocGNITS9PaUJVWlc1aGJuUk5aVzFpWlhKemFHbHdXMTBnZkNCemRISnBibWRiWFR0Y2JpQWdRRzl1WlZSdlRXRnVlU2dvS1NBOVBpQlBjbWRWYm1sMFRXVnRZbVZ5YzJocGNDd2dVa1ZNWDFKRlUxUlNTVU5VTENCbVlXeHpaU2tnYjNKblZXNXBkRTFsYldKbGNuTm9hWEJ6UHpvZ1QzSm5WVzVwZEUxbGJXSmxjbk5vYVhCYlhTQjhJSE4wY21sdVoxdGRPMXh1SUNCQVkzSmxZWFJsWkVGMEtDa2dZM0psWVhSbFpFRjBJVG9nUkdGMFpUdGNiaUFnUUhWd1pHRjBaV1JCZENncElIVndaR0YwWldSQmRDRTZJRVJoZEdVN1hHNTlYRzVjYmtCMFlXSnNaU2hjSW1keWIzVndjMXdpS1Z4dVFHMXZaR1ZzS0NsY2JtVjRjRzl5ZENCamJHRnpjeUJIY205MWNDQmxlSFJsYm1SeklFRjFkR2h2Y21sNllYUnBiMjVOYjJSbGJDQjdYRzRnSUVCd2F5aDdJSFI1Y0dVNklGTjBjbWx1WnlCOUtTQnBaQ0U2SUhOMGNtbHVaenRjYmlBZ1FHMWhibmxVYjA5dVpTZ29LU0E5UGlCVVpXNWhiblFzSUZKRlRGOVNSVk5VVWtsRFZDd2dabUZzYzJVc0lIVnVaR1ZtYVc1bFpDd2dYQ0ptYTE5bmNtOTFjSE5mZEdWdVlXNTBYQ0lwWEc0Z0lFQnlaWEYxYVhKbFpDZ3BYRzRnSUhSbGJtRnVkQ0U2SUZSbGJtRnVkQ0I4SUhOMGNtbHVaenRjYmlBZ1FHMWhibmxVYjA5dVpTZ29LU0E5UGlCUGNtZFZibWwwTENCU1JVeGZUbFZNVEVsR1dTd2dabUZzYzJVc0lIVnVaR1ZtYVc1bFpDd2dYQ0ptYTE5bmNtOTFjSE5mYjNKblgzVnVhWFJjSWlsY2JpQWdiM0puVlc1cGREODZJRTl5WjFWdWFYUWdmQ0J6ZEhKcGJtYzdYRzRnSUVCeVpYRjFhWEpsWkNncElFQjBlWEJsVDJZb1UzUnlhVzVuS1NCQVkyOXNkVzF1S0NrZ2JtRnRaU0U2SUhOMGNtbHVaenRjYmlBZ1FIUjVjR1ZQWmloUFltcGxZM1FwSUVCamIyeDFiVzRvS1NCdFpYUmhaR0YwWVQ4NklGSmxZMjl5WkR4emRISnBibWNzSUhWdWEyNXZkMjQrTzF4dUlDQkFiMjVsVkc5TllXNTVLQ2dwSUQwK0lFZHliM1Z3VFdWdFltVnljMmhwY0N3Z1VrVk1YMUpGVTFSU1NVTlVMQ0JtWVd4elpTa2diV1Z0WW1WeWN6ODZJRWR5YjNWd1RXVnRZbVZ5YzJocGNGdGRJSHdnYzNSeWFXNW5XMTA3WEc0Z0lFQmpjbVZoZEdWa1FYUW9LU0JqY21WaGRHVmtRWFFoT2lCRVlYUmxPMXh1SUNCQWRYQmtZWFJsWkVGMEtDa2dkWEJrWVhSbFpFRjBJVG9nUkdGMFpUdGNibjFjYmx4dVFIUmhZbXhsS0Z3aWNISnBibU5wY0dGc2Mxd2lLVnh1UUcxdlpHVnNLQ2xjYm1WNGNHOXlkQ0JqYkdGemN5QlFjbWx1WTJsd1lXd2daWGgwWlc1a2N5QkJkWFJvYjNKcGVtRjBhVzl1VFc5a1pXd2dlMXh1SUNCQWNHc29leUIwZVhCbE9pQlRkSEpwYm1jZ2ZTa2dhV1FoT2lCemRISnBibWM3WEc0Z0lFQnRZVzU1Vkc5UGJtVW9LQ2tnUFQ0Z1ZHVnVZVzUwTENCU1JVeGZVa1ZUVkZKSlExUXNJR1poYkhObExDQjFibVJsWm1sdVpXUXNJRndpWm10ZmNISnBibU5wY0dGc2MxOTBaVzVoYm5SY0lpbGNiaUFnUUhKbGNYVnBjbVZrS0NsY2JpQWdkR1Z1WVc1MElUb2dWR1Z1WVc1MElId2djM1J5YVc1bk8xeHVJQ0JBY21WeGRXbHlaV1FvS1NCQWRIbHdaVTltS0ZOMGNtbHVaeWtnUUc5d2RHbHZiaWhRY21sdVkybHdZV3hMYVc1a1QzQjBhVzl1Y3lrZ1FHTnZiSFZ0YmlncElHdHBibVFoT2lCUWNtbHVZMmx3WVd4TGFXNWtPMXh1SUNCQWNtVnhkV2x5WldRb0tTQkFkSGx3WlU5bUtGTjBjbWx1WnlrZ1FHTnZiSFZ0YmlncElITjFZbXBsWTNSSlpDRTZJSE4wY21sdVp6dGNiaUFnUUc5dVpWUnZUV0Z1ZVNnb0tTQTlQaUJTYjJ4bFFYTnphV2R1YldWdWRDd2dVa1ZNWDFKRlUxUlNTVU5VTENCbVlXeHpaU2tnY205c1pVRnpjMmxuYm0xbGJuUnpQem9nVW05c1pVRnpjMmxuYm0xbGJuUmJYU0I4SUhOMGNtbHVaMXRkTzF4dUlDQkFiMjVsVkc5TllXNTVLQ2dwSUQwK0lGSmxjMjkxY21ObFIzSmhiblFzSUZKRlRGOVNSVk5VVWtsRFZDd2dabUZzYzJVcElISmxjMjkxY21ObFIzSmhiblJ6UHpvZ1VtVnpiM1Z5WTJWSGNtRnVkRnRkSUh3Z2MzUnlhVzVuVzEwN1hHNGdJRUJqY21WaGRHVmtRWFFvS1NCamNtVmhkR1ZrUVhRaE9pQkVZWFJsTzF4dUlDQkFkWEJrWVhSbFpFRjBLQ2tnZFhCa1lYUmxaRUYwSVRvZ1JHRjBaVHRjYm4xY2JseHVRSFJoWW14bEtGd2lkR1Z1WVc1MFgyMWxiV0psY25Ob2FYQnpYQ0lwWEc1QWJXOWtaV3dvS1Z4dVpYaHdiM0owSUdOc1lYTnpJRlJsYm1GdWRFMWxiV0psY25Ob2FYQWdaWGgwWlc1a2N5QkJkWFJvYjNKcGVtRjBhVzl1VFc5a1pXd2dlMXh1SUNCQWNHc29leUIwZVhCbE9pQlRkSEpwYm1jZ2ZTa2dhV1FoT2lCemRISnBibWM3WEc0Z0lFQnRZVzU1Vkc5UGJtVW9LQ2tnUFQ0Z1ZHVnVZVzUwTENCU1JVeGZRMEZUUTBGRVJWOUVSVkJGVGtSRlRsUXNJR1poYkhObExDQjFibVJsWm1sdVpXUXNJRndpWm10ZmRHVnVZVzUwWDIxbGJXSmxjbk5vYVhCelgzUmxibUZ1ZEZ3aUtWeHVJQ0JBY21WeGRXbHlaV1FvS1Z4dUlDQjBaVzVoYm5RaE9pQlVaVzVoYm5RZ2ZDQnpkSEpwYm1jN1hHNGdJRUJ0WVc1NVZHOVBibVVvS0NrZ1BUNGdWWE5sY2l3Z1VrVk1YME5CVTBOQlJFVmZSRVZRUlU1RVJVNVVMQ0JtWVd4elpTd2dkVzVrWldacGJtVmtMQ0JjSW1aclgzUmxibUZ1ZEY5dFpXMWlaWEp6YUdsd2MxOTFjMlZ5WENJcFhHNGdJRUJ5WlhGMWFYSmxaQ2dwWEc0Z0lIVnpaWEloT2lCVmMyVnlJSHdnYzNSeWFXNW5PMXh1SUNCQWNtVnhkV2x5WldRb0tTQkFkSGx3WlU5bUtGTjBjbWx1WnlrZ1FHOXdkR2x2YmloTlpXMWlaWEp6YUdsd1UzUmhkSFZ6VDNCMGFXOXVjeWtnUUdOdmJIVnRiaWdwSUhOMFlYUjFjeUU2SUUxbGJXSmxjbk5vYVhCVGRHRjBkWE03WEc0Z0lFQmpjbVZoZEdWa1FYUW9LU0JqY21WaGRHVmtRWFFoT2lCRVlYUmxPMXh1SUNCQWRYQmtZWFJsWkVGMEtDa2dkWEJrWVhSbFpFRjBJVG9nUkdGMFpUdGNibjFjYmx4dVFIUmhZbXhsS0Z3aWIzSm5YM1Z1YVhSZmJXVnRZbVZ5YzJocGNITmNJaWxjYmtCdGIyUmxiQ2dwWEc1bGVIQnZjblFnWTJ4aGMzTWdUM0puVlc1cGRFMWxiV0psY25Ob2FYQWdaWGgwWlc1a2N5QkJkWFJvYjNKcGVtRjBhVzl1VFc5a1pXd2dlMXh1SUNCQWNHc29leUIwZVhCbE9pQlRkSEpwYm1jZ2ZTa2dhV1FoT2lCemRISnBibWM3WEc0Z0lFQnRZVzU1Vkc5UGJtVW9LQ2tnUFQ0Z1ZHVnVZVzUwTENCU1JVeGZRMEZUUTBGRVJWOUVSVkJGVGtSRlRsUXNJR1poYkhObExDQjFibVJsWm1sdVpXUXNJRndpWm10ZmIzSm5YMjFsYldKbGNuTm9hWEJ6WDNSbGJtRnVkRndpS1Z4dUlDQkFjbVZ4ZFdseVpXUW9LVnh1SUNCMFpXNWhiblFoT2lCVVpXNWhiblFnZkNCemRISnBibWM3WEc0Z0lFQnRZVzU1Vkc5UGJtVW9LQ2tnUFQ0Z1QzSm5WVzVwZEN3Z1VrVk1YME5CVTBOQlJFVmZSRVZRUlU1RVJVNVVMQ0JtWVd4elpTd2dkVzVrWldacGJtVmtMQ0JjSW1aclgyOXlaMTl0WlcxaVpYSnphR2x3YzE5dmNtZGZkVzVwZEZ3aUtWeHVJQ0JBY21WeGRXbHlaV1FvS1Z4dUlDQnZjbWRWYm1sMElUb2dUM0puVlc1cGRDQjhJSE4wY21sdVp6dGNiaUFnUUcxaGJubFViMDl1WlNnb0tTQTlQaUJWYzJWeUxDQlNSVXhmVWtWVFZGSkpRMVFzSUdaaGJITmxMQ0IxYm1SbFptbHVaV1FzSUZ3aVptdGZiM0puWDIxbGJXSmxjbk5vYVhCelgzVnpaWEpjSWlsY2JpQWdRSEpsY1hWcGNtVmtLQ2xjYmlBZ2RYTmxjaUU2SUZWelpYSWdmQ0J6ZEhKcGJtYzdYRzRnSUVCeVpYRjFhWEpsWkNncElFQjBlWEJsVDJZb1UzUnlhVzVuS1NCQWIzQjBhVzl1S0UxbGJXSmxjbk5vYVhCVGRHRjBkWE5QY0hScGIyNXpLU0JBWTI5c2RXMXVLQ2tnYzNSaGRIVnpJVG9nVFdWdFltVnljMmhwY0ZOMFlYUjFjenRjYmlBZ1FHTnlaV0YwWldSQmRDZ3BJR055WldGMFpXUkJkQ0U2SUVSaGRHVTdYRzRnSUVCMWNHUmhkR1ZrUVhRb0tTQjFjR1JoZEdWa1FYUWhPaUJFWVhSbE8xeHVmVnh1WEc1QWRHRmliR1VvWENKbmNtOTFjRjl0WlcxaVpYSnphR2x3YzF3aUtWeHVRRzF2WkdWc0tDbGNibVY0Y0c5eWRDQmpiR0Z6Y3lCSGNtOTFjRTFsYldKbGNuTm9hWEFnWlhoMFpXNWtjeUJCZFhSb2IzSnBlbUYwYVc5dVRXOWtaV3dnZTF4dUlDQkFjR3NvZXlCMGVYQmxPaUJUZEhKcGJtY2dmU2tnYVdRaE9pQnpkSEpwYm1jN1hHNGdJRUJ0WVc1NVZHOVBibVVvS0NrZ1BUNGdWR1Z1WVc1MExDQlNSVXhmUTBGVFEwRkVSVjlFUlZCRlRrUkZUbFFzSUdaaGJITmxMQ0IxYm1SbFptbHVaV1FzSUZ3aVptdGZaM0p2ZFhCZmJXVnRZbVZ5YzJocGNITmZkR1Z1WVc1MFhDSXBYRzRnSUVCeVpYRjFhWEpsWkNncFhHNGdJSFJsYm1GdWRDRTZJRlJsYm1GdWRDQjhJSE4wY21sdVp6dGNiaUFnUUcxaGJubFViMDl1WlNnb0tTQTlQaUJIY205MWNDd2dVa1ZNWDBOQlUwTkJSRVZmUkVWUVJVNUVSVTVVTENCbVlXeHpaU3dnZFc1a1pXWnBibVZrTENCY0ltWnJYMmR5YjNWd1gyMWxiV0psY25Ob2FYQnpYMmR5YjNWd1hDSXBYRzRnSUVCeVpYRjFhWEpsWkNncFhHNGdJR2R5YjNWd0lUb2dSM0p2ZFhBZ2ZDQnpkSEpwYm1jN1hHNGdJRUJ0WVc1NVZHOVBibVVvS0NrZ1BUNGdVSEpwYm1OcGNHRnNMQ0JTUlV4ZlEwRlRRMEZFUlY5RVJWQkZUa1JGVGxRc0lHWmhiSE5sTENCMWJtUmxabWx1WldRc0lGd2labXRmWjNKdmRYQmZiV1Z0WW1WeWMyaHBjSE5mY0hKcGJtTnBjR0ZzWENJcFhHNGdJRUJ5WlhGMWFYSmxaQ2dwWEc0Z0lIQnlhVzVqYVhCaGJDRTZJRkJ5YVc1amFYQmhiQ0I4SUhOMGNtbHVaenRjYmlBZ1FIUjVjR1ZQWmloUFltcGxZM1FwSUVCamIyeDFiVzRvS1NCdFpYUmhaR0YwWVQ4NklGSmxZMjl5WkR4emRISnBibWNzSUhWdWEyNXZkMjQrTzF4dUlDQkFZM0psWVhSbFpFRjBLQ2tnWTNKbFlYUmxaRUYwSVRvZ1JHRjBaVHRjYm4xY2JseHVRSFJoWW14bEtGd2ljR1Z5YldsemMybHZibk5jSWlsY2JrQnRiMlJsYkNncFhHNWxlSEJ2Y25RZ1kyeGhjM01nVUdWeWJXbHpjMmx2YmlCbGVIUmxibVJ6SUVGMWRHaHZjbWw2WVhScGIyNU5iMlJsYkNCN1hHNGdJRUJ3YXloN0lIUjVjR1U2SUZOMGNtbHVaeUI5S1NCcFpDRTZJSE4wY21sdVp6dGNiaUFnUUhWdWFYRjFaU2dwSUVCeVpYRjFhWEpsWkNncElFQjBlWEJsVDJZb1UzUnlhVzVuS1NCQVkyOXNkVzF1S0NrZ2EyVjVJVG9nYzNSeWFXNW5PMXh1SUNCQWNtVnhkV2x5WldRb0tTQkFkSGx3WlU5bUtGTjBjbWx1WnlrZ1FHOXdkR2x2YmloUVpYSnRhWE56YVc5dVEyRjBaV2R2Y25sUGNIUnBiMjV6S1NCQVkyOXNkVzF1S0NrZ1kyRjBaV2R2Y25raE9pQlFaWEp0YVhOemFXOXVRMkYwWldkdmNuazdYRzRnSUVCMGVYQmxUMllvVTNSeWFXNW5LU0JBWTI5c2RXMXVLQ2tnWkdWelkzSnBjSFJwYjI0L09pQnpkSEpwYm1jN1hHNGdJRUJ2Ym1WVWIwMWhibmtvS0NrZ1BUNGdVbTlzWlZCbGNtMXBjM05wYjI0c0lGSkZURjlTUlZOVVVrbERWQ3dnWm1Gc2MyVXBJSEp2YkdWUVpYSnRhWE56YVc5dWN6ODZJRkp2YkdWUVpYSnRhWE56YVc5dVcxMGdmQ0J6ZEhKcGJtZGJYVHRjYm4xY2JseHVRSFJoWW14bEtGd2ljbTlzWlhOY0lpbGNia0J0YjJSbGJDZ3BYRzVsZUhCdmNuUWdZMnhoYzNNZ1VtOXNaU0JsZUhSbGJtUnpJRUYxZEdodmNtbDZZWFJwYjI1TmIyUmxiQ0I3WEc0Z0lFQndheWg3SUhSNWNHVTZJRk4wY21sdVp5QjlLU0JwWkNFNklITjBjbWx1Wnp0Y2JpQWdRRzFoYm5sVWIwOXVaU2dvS1NBOVBpQlVaVzVoYm5Rc0lGSkZURjlPVlV4TVNVWlpMQ0JtWVd4elpTd2dkVzVrWldacGJtVmtMQ0JjSW1aclgzSnZiR1Z6WDNSbGJtRnVkRndpS1Z4dUlDQjBaVzVoYm5RL09pQlVaVzVoYm5RZ2ZDQnpkSEpwYm1jN1hHNGdJRUJ5WlhGMWFYSmxaQ2dwSUVCMGVYQmxUMllvVTNSeWFXNW5LU0JBWTI5c2RXMXVLQ2tnYTJWNUlUb2djM1J5YVc1bk8xeHVJQ0JBY21WeGRXbHlaV1FvS1NCQWRIbHdaVTltS0ZOMGNtbHVaeWtnUUdOdmJIVnRiaWdwSUc1aGJXVWhPaUJ6ZEhKcGJtYzdYRzRnSUVCMGVYQmxUMllvVTNSeWFXNW5LU0JBWTI5c2RXMXVLQ2tnWkdWelkzSnBjSFJwYjI0L09pQnpkSEpwYm1jN1hHNGdJRUIwZVhCbFQyWW9UMkpxWldOMEtTQkFZMjlzZFcxdUtDa2diV1YwWVdSaGRHRS9PaUJTWldOdmNtUThjM1J5YVc1bkxDQjFibXR1YjNkdVBqdGNiaUFnUUc5dVpWUnZUV0Z1ZVNnb0tTQTlQaUJTYjJ4bFVHVnliV2x6YzJsdmJpd2dVa1ZNWDFKRlUxUlNTVU5VTENCbVlXeHpaU2tnY205c1pWQmxjbTFwYzNOcGIyNXpQem9nVW05c1pWQmxjbTFwYzNOcGIyNWJYU0I4SUhOMGNtbHVaMXRkTzF4dUlDQkFiMjVsVkc5TllXNTVLQ2dwSUQwK0lGSnZiR1ZCYzNOcFoyNXRaVzUwTENCU1JVeGZVa1ZUVkZKSlExUXNJR1poYkhObEtTQmhjM05wWjI1dFpXNTBjejg2SUZKdmJHVkJjM05wWjI1dFpXNTBXMTBnZkNCemRISnBibWRiWFR0Y2JpQWdRR055WldGMFpXUkJkQ2dwSUdOeVpXRjBaV1JCZENFNklFUmhkR1U3WEc0Z0lFQjFjR1JoZEdWa1FYUW9LU0IxY0dSaGRHVmtRWFFoT2lCRVlYUmxPMXh1ZlZ4dVhHNUFkR0ZpYkdVb1hDSnliMnhsWDNCbGNtMXBjM05wYjI1elhDSXBYRzVBYlc5a1pXd29LVnh1Wlhod2IzSjBJR05zWVhOeklGSnZiR1ZRWlhKdGFYTnphVzl1SUdWNGRHVnVaSE1nUVhWMGFHOXlhWHBoZEdsdmJrMXZaR1ZzSUh0Y2JpQWdRSEJyS0hzZ2RIbHdaVG9nVTNSeWFXNW5JSDBwSUdsa0lUb2djM1J5YVc1bk8xeHVJQ0JBYldGdWVWUnZUMjVsS0NncElEMCtJRkp2YkdVc0lGSkZURjlEUVZORFFVUkZYMFJGVUVWT1JFVk9WQ3dnWm1Gc2MyVXNJSFZ1WkdWbWFXNWxaQ3dnWENKbWExOXliMnhsWDNCbGNtMXBjM05wYjI1elgzSnZiR1ZjSWlsY2JpQWdRSEpsY1hWcGNtVmtLQ2xjYmlBZ2NtOXNaU0U2SUZKdmJHVWdmQ0J6ZEhKcGJtYzdYRzRnSUVCdFlXNTVWRzlQYm1Vb0tDa2dQVDRnVUdWeWJXbHpjMmx2Yml3Z1VrVk1YME5CVTBOQlJFVmZSRVZRUlU1RVJVNVVMQ0JtWVd4elpTd2dkVzVrWldacGJtVmtMQ0JjSW1aclgzSnZiR1ZmY0dWeWJXbHpjMmx2Ym5OZmNHVnliV2x6YzJsdmJsd2lLVnh1SUNCQWNtVnhkV2x5WldRb0tWeHVJQ0J3WlhKdGFYTnphVzl1SVRvZ1VHVnliV2x6YzJsdmJpQjhJSE4wY21sdVp6dGNiaUFnUUdOeVpXRjBaV1JCZENncElHTnlaV0YwWldSQmRDRTZJRVJoZEdVN1hHNTlYRzVjYmtCMFlXSnNaU2hjSW5KdmJHVmZZWE56YVdkdWJXVnVkSE5jSWlsY2JrQnRiMlJsYkNncFhHNWxlSEJ2Y25RZ1kyeGhjM01nVW05c1pVRnpjMmxuYm0xbGJuUWdaWGgwWlc1a2N5QkJkWFJvYjNKcGVtRjBhVzl1VFc5a1pXd2dlMXh1SUNCQWNHc29leUIwZVhCbE9pQlRkSEpwYm1jZ2ZTa2dhV1FoT2lCemRISnBibWM3WEc0Z0lFQnRZVzU1Vkc5UGJtVW9LQ2tnUFQ0Z1ZHVnVZVzUwTENCU1JVeGZRMEZUUTBGRVJWOUVSVkJGVGtSRlRsUXNJR1poYkhObExDQjFibVJsWm1sdVpXUXNJRndpWm10ZmNtOXNaVjloYzNOcFoyNXRaVzUwYzE5MFpXNWhiblJjSWlsY2JpQWdRSEpsY1hWcGNtVmtLQ2xjYmlBZ2RHVnVZVzUwSVRvZ1ZHVnVZVzUwSUh3Z2MzUnlhVzVuTzF4dUlDQkFiV0Z1ZVZSdlQyNWxLQ2dwSUQwK0lGQnlhVzVqYVhCaGJDd2dVa1ZNWDBOQlUwTkJSRVZmUkVWUVJVNUVSVTVVTENCbVlXeHpaU3dnZFc1a1pXWnBibVZrTENCY0ltWnJYM0p2YkdWZllYTnphV2R1YldWdWRITmZjSEpwYm1OcGNHRnNYQ0lwWEc0Z0lFQnlaWEYxYVhKbFpDZ3BYRzRnSUhCeWFXNWphWEJoYkNFNklGQnlhVzVqYVhCaGJDQjhJSE4wY21sdVp6dGNiaUFnUUcxaGJubFViMDl1WlNnb0tTQTlQaUJTYjJ4bExDQlNSVXhmVWtWVFZGSkpRMVFzSUdaaGJITmxMQ0IxYm1SbFptbHVaV1FzSUZ3aVptdGZjbTlzWlY5aGMzTnBaMjV0Wlc1MGMxOXliMnhsWENJcFhHNGdJRUJ5WlhGMWFYSmxaQ2dwWEc0Z0lISnZiR1VoT2lCU2IyeGxJSHdnYzNSeWFXNW5PMXh1SUNCQWNtVnhkV2x5WldRb0tTQkFkSGx3WlU5bUtGTjBjbWx1WnlrZ1FHOXdkR2x2YmloVFkyOXdaVXRwYm1SUGNIUnBiMjV6S1NCQVkyOXNkVzF1S0NrZ2MyTnZjR1ZMYVc1a0lUb2dVMk52Y0dWTGFXNWtPMXh1SUNCQWNtVnhkV2x5WldRb0tTQkFkSGx3WlU5bUtGTjBjbWx1WnlrZ1FHTnZiSFZ0YmlncElITmpiM0JsU1dRaE9pQnpkSEpwYm1jN1hHNGdJRUJ5WlhGMWFYSmxaQ2dwSUVCMGVYQmxUMllvUW05dmJHVmhiaWtnUUdOdmJIVnRiaWdwSUdsdWFHVnlhWFJFYjNkdUlUb2dZbTl2YkdWaGJqdGNiaUFnUUdOdmJIVnRiaWdwSUhOMFlYSjBjMEYwUHpvZ1JHRjBaVHRjYmlBZ1FHTnZiSFZ0YmlncElHVjRjR2x5WlhOQmREODZJRVJoZEdVN1hHNGdJRUIwZVhCbFQyWW9UMkpxWldOMEtTQkFZMjlzZFcxdUtDa2dZMjl1WkdsMGFXOXVjejg2SUZKbFkyOXlaRHh6ZEhKcGJtY3NJSFZ1YTI1dmQyNCtPMXh1SUNCQVkzSmxZWFJsWkVGMEtDa2dZM0psWVhSbFpFRjBJVG9nUkdGMFpUdGNiaUFnUUhWd1pHRjBaV1JCZENncElIVndaR0YwWldSQmRDRTZJRVJoZEdVN1hHNTlYRzVjYmtCMFlXSnNaU2hjSW1sdWFHVnlhWFJoYm1ObFgySnNiMk5yYzF3aUtWeHVRRzF2WkdWc0tDbGNibVY0Y0c5eWRDQmpiR0Z6Y3lCSmJtaGxjbWwwWVc1alpVSnNiMk5ySUdWNGRHVnVaSE1nUVhWMGFHOXlhWHBoZEdsdmJrMXZaR1ZzSUh0Y2JpQWdRSEJyS0hzZ2RIbHdaVG9nVTNSeWFXNW5JSDBwSUdsa0lUb2djM1J5YVc1bk8xeHVJQ0JBYldGdWVWUnZUMjVsS0NncElEMCtJRlJsYm1GdWRDd2dVa1ZNWDBOQlUwTkJSRVZmUkVWUVJVNUVSVTVVTENCbVlXeHpaU3dnZFc1a1pXWnBibVZrTENCY0ltWnJYMmx1YUdWeWFYUmhibU5sWDJKc2IyTnJjMTkwWlc1aGJuUmNJaWxjYmlBZ1FISmxjWFZwY21Wa0tDbGNiaUFnZEdWdVlXNTBJVG9nVkdWdVlXNTBJSHdnYzNSeWFXNW5PMXh1SUNCQWJXRnVlVlJ2VDI1bEtDZ3BJRDArSUU5eVoxVnVhWFFzSUZKRlRGOURRVk5EUVVSRlgwUkZVRVZPUkVWT1ZDd2dabUZzYzJVc0lIVnVaR1ZtYVc1bFpDd2dYQ0ptYTE5cGJtaGxjbWwwWVc1alpWOWliRzlqYTNOZmIzSm5YM1Z1YVhSY0lpbGNiaUFnUUhKbGNYVnBjbVZrS0NsY2JpQWdiM0puVlc1cGRDRTZJRTl5WjFWdWFYUWdmQ0J6ZEhKcGJtYzdYRzRnSUVCdFlXNTVWRzlQYm1Vb0tDa2dQVDRnVDNKblZXNXBkQ3dnVWtWTVgwNVZURXhKUmxrc0lHWmhiSE5sTENCMWJtUmxabWx1WldRc0lGd2labXRmYVc1b1pYSnBkR0Z1WTJWZllteHZZMnR6WDJKc2IyTnJaV1JmWVc1alpYTjBiM0pjSWlsY2JpQWdZbXh2WTJ0bFpFWnliMjFCYm1ObGMzUnZjajg2SUU5eVoxVnVhWFFnZkNCemRISnBibWM3WEc0Z0lFQnlaWEYxYVhKbFpDZ3BJRUIwZVhCbFQyWW9VM1J5YVc1bktTQkFiM0IwYVc5dUtGQmxjbTFwYzNOcGIyNURZWFJsWjI5eWVVOXdkR2x2Ym5NcElFQmpiMngxYlc0b0tTQndaWEp0YVhOemFXOXVRMkYwWldkdmNua2hPaUJRWlhKdGFYTnphVzl1UTJGMFpXZHZjbms3WEc0Z0lFQjBlWEJsVDJZb1UzUnlhVzVuS1NCQVkyOXNkVzF1S0NrZ2NtVmhjMjl1UHpvZ2MzUnlhVzVuTzF4dUlDQkFZM0psWVhSbFpFRjBLQ2tnWTNKbFlYUmxaRUYwSVRvZ1JHRjBaVHRjYmlBZ1FIVndaR0YwWldSQmRDZ3BJSFZ3WkdGMFpXUkJkQ0U2SUVSaGRHVTdYRzU5WEc1Y2JrQjBZV0pzWlNoY0luQnliM1JsWTNSbFpGOXlaWE52ZFhKalpYTmNJaWxjYmtCdGIyUmxiQ2dwWEc1bGVIQnZjblFnWTJ4aGMzTWdVSEp2ZEdWamRHVmtVbVZ6YjNWeVkyVWdaWGgwWlc1a2N5QkJkWFJvYjNKcGVtRjBhVzl1VFc5a1pXd2dlMXh1SUNCQWNHc29leUIwZVhCbE9pQlRkSEpwYm1jZ2ZTa2dhV1FoT2lCemRISnBibWM3WEc0Z0lFQnRZVzU1Vkc5UGJtVW9LQ2tnUFQ0Z1ZHVnVZVzUwTENCU1JVeGZVa1ZUVkZKSlExUXNJR1poYkhObExDQjFibVJsWm1sdVpXUXNJRndpWm10ZmNISnZkR1ZqZEdWa1gzSmxjMjkxY21ObGMxOTBaVzVoYm5SY0lpbGNiaUFnUUhKbGNYVnBjbVZrS0NsY2JpQWdkR1Z1WVc1MElUb2dWR1Z1WVc1MElId2djM1J5YVc1bk8xeHVJQ0JBYldGdWVWUnZUMjVsS0NncElEMCtJRTl5WjFWdWFYUXNJRkpGVEY5U1JWTlVVa2xEVkN3Z1ptRnNjMlVzSUhWdVpHVm1hVzVsWkN3Z1hDSm1hMTl3Y205MFpXTjBaV1JmY21WemIzVnlZMlZ6WDI5eVoxOTFibWwwWENJcFhHNGdJRUJ5WlhGMWFYSmxaQ2dwWEc0Z0lHOXlaMVZ1YVhRaE9pQlBjbWRWYm1sMElId2djM1J5YVc1bk8xeHVJQ0JBY21WeGRXbHlaV1FvS1NCQWRIbHdaVTltS0ZOMGNtbHVaeWtnUUdOdmJIVnRiaWdwSUhKbGMyOTFjbU5sVkhsd1pTRTZJSE4wY21sdVp6dGNiaUFnUUhKbGNYVnBjbVZrS0NrZ1FIUjVjR1ZQWmloVGRISnBibWNwSUVCamIyeDFiVzRvS1NCeVpYTnZkWEpqWlVsa0lUb2djM1J5YVc1bk8xeHVJQ0JBY21WeGRXbHlaV1FvS1NCQWRIbHdaVTltS0ZOMGNtbHVaeWtnUUc5d2RHbHZiaWhTWlhOdmRYSmpaVlpwYzJsaWFXeHBkSGxQY0hScGIyNXpLU0JBWTI5c2RXMXVLQ2tnZG1semFXSnBiR2wwZVNFNklGSmxjMjkxY21ObFZtbHphV0pwYkdsMGVUdGNiaUFnUUcxaGJubFViMDl1WlNnb0tTQTlQaUJRY21sdVkybHdZV3dzSUZKRlRGOU9WVXhNU1VaWkxDQm1ZV3h6WlN3Z2RXNWtaV1pwYm1Wa0xDQmNJbVpyWDNCeWIzUmxZM1JsWkY5eVpYTnZkWEpqWlhOZmIzZHVaWEpjSWlsY2JpQWdiM2R1WlhJL09pQlFjbWx1WTJsd1lXd2dmQ0J6ZEhKcGJtYzdYRzRnSUVCMGVYQmxUMllvVTNSeWFXNW5LU0JBWTI5c2RXMXVLQ2tnYzJWdWMybDBhWFpwZEhrL09pQnpkSEpwYm1jN1hHNGdJRUIwZVhCbFQyWW9UMkpxWldOMEtTQkFZMjlzZFcxdUtDa2diV1YwWVdSaGRHRS9PaUJTWldOdmNtUThjM1J5YVc1bkxDQjFibXR1YjNkdVBqdGNiaUFnUUc5dVpWUnZUV0Z1ZVNnb0tTQTlQaUJTWlhOdmRYSmpaVWR5WVc1MExDQlNSVXhmVWtWVFZGSkpRMVFzSUdaaGJITmxLU0JuY21GdWRITS9PaUJTWlhOdmRYSmpaVWR5WVc1MFcxMGdmQ0J6ZEhKcGJtZGJYVHRjYmlBZ1FHTnlaV0YwWldSQmRDZ3BJR055WldGMFpXUkJkQ0U2SUVSaGRHVTdYRzRnSUVCMWNHUmhkR1ZrUVhRb0tTQjFjR1JoZEdWa1FYUWhPaUJFWVhSbE8xeHVmVnh1WEc1QWRHRmliR1VvWENKeVpYTnZkWEpqWlY5bmNtRnVkSE5jSWlsY2JrQnRiMlJsYkNncFhHNWxlSEJ2Y25RZ1kyeGhjM01nVW1WemIzVnlZMlZIY21GdWRDQmxlSFJsYm1SeklFRjFkR2h2Y21sNllYUnBiMjVOYjJSbGJDQjdYRzRnSUVCd2F5aDdJSFI1Y0dVNklGTjBjbWx1WnlCOUtTQnBaQ0U2SUhOMGNtbHVaenRjYmlBZ1FHMWhibmxVYjA5dVpTZ29LU0E5UGlCVVpXNWhiblFzSUZKRlRGOURRVk5EUVVSRlgwUkZVRVZPUkVWT1ZDd2dabUZzYzJVc0lIVnVaR1ZtYVc1bFpDd2dYQ0ptYTE5eVpYTnZkWEpqWlY5bmNtRnVkSE5mZEdWdVlXNTBYQ0lwWEc0Z0lFQnlaWEYxYVhKbFpDZ3BYRzRnSUhSbGJtRnVkQ0U2SUZSbGJtRnVkQ0I4SUhOMGNtbHVaenRjYmlBZ1FHMWhibmxVYjA5dVpTZ29LU0E5UGlCUWNtOTBaV04wWldSU1pYTnZkWEpqWlN3Z1VrVk1YME5CVTBOQlJFVmZSRVZRUlU1RVJVNVVMQ0JtWVd4elpTd2dkVzVrWldacGJtVmtMQ0JjSW1aclgzSmxjMjkxY21ObFgyZHlZVzUwYzE5eVpYTnZkWEpqWlZ3aUtWeHVJQ0JBY21WeGRXbHlaV1FvS1Z4dUlDQnlaWE52ZFhKalpTRTZJRkJ5YjNSbFkzUmxaRkpsYzI5MWNtTmxJSHdnYzNSeWFXNW5PMXh1SUNCQWJXRnVlVlJ2VDI1bEtDZ3BJRDArSUZCeWFXNWphWEJoYkN3Z1VrVk1YME5CVTBOQlJFVmZSRVZRUlU1RVJVNVVMQ0JtWVd4elpTd2dkVzVrWldacGJtVmtMQ0JjSW1aclgzSmxjMjkxY21ObFgyZHlZVzUwYzE5d2NtbHVZMmx3WVd4Y0lpbGNiaUFnUUhKbGNYVnBjbVZrS0NsY2JpQWdjSEpwYm1OcGNHRnNJVG9nVUhKcGJtTnBjR0ZzSUh3Z2MzUnlhVzVuTzF4dUlDQkFjbVZ4ZFdseVpXUW9LU0JBZEhsd1pVOW1LRk4wY21sdVp5a2dRR052YkhWdGJpZ3BJSEJsY20xcGMzTnBiMjVMWlhraE9pQnpkSEpwYm1jN1hHNGdJRUJqYjJ4MWJXNG9LU0J6ZEdGeWRITkJkRDg2SUVSaGRHVTdYRzRnSUVCamIyeDFiVzRvS1NCbGVIQnBjbVZ6UVhRL09pQkVZWFJsTzF4dUlDQkFkSGx3WlU5bUtFOWlhbVZqZENrZ1FHTnZiSFZ0YmlncElHTnZibVJwZEdsdmJuTS9PaUJTWldOdmNtUThjM1J5YVc1bkxDQjFibXR1YjNkdVBqdGNiaUFnUUcxaGJubFViMDl1WlNnb0tTQTlQaUJRY21sdVkybHdZV3dzSUZKRlRGOVNSVk5VVWtsRFZDd2dabUZzYzJVc0lIVnVaR1ZtYVc1bFpDd2dYQ0ptYTE5eVpYTnZkWEpqWlY5bmNtRnVkSE5mWTNKbFlYUmxaRjlpZVZ3aUtWeHVJQ0JqY21WaGRHVmtRbmsvT2lCUWNtbHVZMmx3WVd3Z2ZDQnpkSEpwYm1jN1hHNGdJRUJqY21WaGRHVmtRWFFvS1NCamNtVmhkR1ZrUVhRaE9pQkVZWFJsTzF4dUlDQkFkWEJrWVhSbFpFRjBLQ2tnZFhCa1lYUmxaRUYwSVRvZ1JHRjBaVHRjYm4xY2JseHVRSFJoWW14bEtGd2laV1ptWldOMGFYWmxYM0JsY20xcGMzTnBiMjV6WENJcFhHNUFiVzlrWld3b0tWeHVaWGh3YjNKMElHTnNZWE56SUVWbVptVmpkR2wyWlZCbGNtMXBjM05wYjI0Z1pYaDBaVzVrY3lCQmRYUm9iM0pwZW1GMGFXOXVUVzlrWld3Z2UxeHVJQ0JBY0dzb2V5QjBlWEJsT2lCVGRISnBibWNnZlNrZ2FXUWhPaUJ6ZEhKcGJtYzdYRzRnSUVCdFlXNTVWRzlQYm1Vb0tDa2dQVDRnVkdWdVlXNTBMQ0JTUlV4ZlEwRlRRMEZFUlY5RVJWQkZUa1JGVGxRc0lHWmhiSE5sTENCMWJtUmxabWx1WldRc0lGd2labXRmWldabVpXTjBhWFpsWDNCbGNtMXBjM05wYjI1elgzUmxibUZ1ZEZ3aUtWeHVJQ0JBY21WeGRXbHlaV1FvS1Z4dUlDQjBaVzVoYm5RaE9pQlVaVzVoYm5RZ2ZDQnpkSEpwYm1jN1hHNGdJRUJ0WVc1NVZHOVBibVVvS0NrZ1BUNGdVSEpwYm1OcGNHRnNMQ0JTUlV4ZlEwRlRRMEZFUlY5RVJWQkZUa1JGVGxRc0lHWmhiSE5sTENCMWJtUmxabWx1WldRc0lGd2labXRmWldabVpXTjBhWFpsWDNCbGNtMXBjM05wYjI1elgzQnlhVzVqYVhCaGJGd2lLVnh1SUNCQWNtVnhkV2x5WldRb0tWeHVJQ0J3Y21sdVkybHdZV3doT2lCUWNtbHVZMmx3WVd3Z2ZDQnpkSEpwYm1jN1hHNGdJRUJ5WlhGMWFYSmxaQ2dwSUVCMGVYQmxUMllvVTNSeWFXNW5LU0JBWTI5c2RXMXVLQ2tnY0dWeWJXbHpjMmx2Ymt0bGVTRTZJSE4wY21sdVp6dGNiaUFnUUhKbGNYVnBjbVZrS0NrZ1FIUjVjR1ZQWmloVGRISnBibWNwSUVCdmNIUnBiMjRvVTJOdmNHVkxhVzVrVDNCMGFXOXVjeWtnUUdOdmJIVnRiaWdwSUhOamIzQmxTMmx1WkNFNklGTmpiM0JsUzJsdVpEdGNiaUFnUUhKbGNYVnBjbVZrS0NrZ1FIUjVjR1ZQWmloVGRISnBibWNwSUVCamIyeDFiVzRvS1NCelkyOXdaVWxrSVRvZ2MzUnlhVzVuTzF4dUlDQkFjbVZ4ZFdseVpXUW9LU0JBZEhsd1pVOW1LRk4wY21sdVp5a2dRR052YkhWdGJpZ3BJSE52ZFhKalpVdHBibVFoT2lCemRISnBibWM3WEc0Z0lFQnlaWEYxYVhKbFpDZ3BJRUIwZVhCbFQyWW9VM1J5YVc1bktTQkFZMjlzZFcxdUtDa2djMjkxY21ObFNXUWhPaUJ6ZEhKcGJtYzdYRzRnSUVCamIyeDFiVzRvS1NCemRHRnlkSE5CZEQ4NklFUmhkR1U3WEc0Z0lFQmpiMngxYlc0b0tTQmxlSEJwY21WelFYUS9PaUJFWVhSbE8xeHVJQ0JBWTNKbFlYUmxaRUYwS0NrZ1kzSmxZWFJsWkVGMElUb2dSR0YwWlR0Y2JuMWNibHh1UUhSaFlteGxLRndpYzNSdmNtRm5aVjlpYVc1a2FXNW5jMXdpS1Z4dVFHMXZaR1ZzS0NsY2JtVjRjRzl5ZENCamJHRnpjeUJUZEc5eVlXZGxRbWx1WkdsdVp5QmxlSFJsYm1SeklFRjFkR2h2Y21sNllYUnBiMjVOYjJSbGJDQjdYRzRnSUVCd2F5aDdJSFI1Y0dVNklGTjBjbWx1WnlCOUtTQnBaQ0U2SUhOMGNtbHVaenRjYmlBZ1FHMWhibmxVYjA5dVpTZ29LU0E5UGlCVVpXNWhiblFzSUZKRlRGOURRVk5EUVVSRlgwUkZVRVZPUkVWT1ZDd2dabUZzYzJVc0lIVnVaR1ZtYVc1bFpDd2dYQ0ptYTE5emRHOXlZV2RsWDJKcGJtUnBibWR6WDNSbGJtRnVkRndpS1Z4dUlDQkFjbVZ4ZFdseVpXUW9LVnh1SUNCMFpXNWhiblFoT2lCVVpXNWhiblFnZkNCemRISnBibWM3WEc0Z0lFQnlaWEYxYVhKbFpDZ3BJRUIwZVhCbFQyWW9VM1J5YVc1bktTQkFiM0IwYVc5dUtGTjBiM0poWjJWTGFXNWtUM0IwYVc5dWN5a2dRR052YkhWdGJpZ3BJSE4wYjNKaFoyVkxhVzVrSVRvZ1UzUnZjbUZuWlV0cGJtUTdYRzRnSUVCeVpYRjFhWEpsWkNncElFQjBlWEJsVDJZb1UzUnlhVzVuS1NCQWIzQjBhVzl1S0ZOMGIzSmhaMlZDYVc1a2FXNW5TMmx1WkU5d2RHbHZibk1wSUVCamIyeDFiVzRvS1NCaWFXNWthVzVuUzJsdVpDRTZJRk4wYjNKaFoyVkNhVzVrYVc1blMybHVaRHRjYmlBZ1FISmxjWFZwY21Wa0tDa2dRSFI1Y0dWUFppaFRkSEpwYm1jcElFQmpiMngxYlc0b0tTQmlhVzVrYVc1blMyVjVJVG9nYzNSeWFXNW5PMXh1SUNCQWNtVnhkV2x5WldRb0tTQkFkSGx3WlU5bUtGTjBjbWx1WnlrZ1FHTnZiSFZ0YmlncElISmxaMmx2YmlFNklITjBjbWx1Wnp0Y2JpQWdRSFI1Y0dWUFppaFBZbXBsWTNRcElFQmpiMngxYlc0b0tTQmpiMjVtYVdjL09pQlNaV052Y21ROGMzUnlhVzVuTENCMWJtdHViM2R1UGp0Y2JpQWdRR055WldGMFpXUkJkQ2dwSUdOeVpXRjBaV1JCZENFNklFUmhkR1U3WEc0Z0lFQjFjR1JoZEdWa1FYUW9LU0IxY0dSaGRHVmtRWFFoT2lCRVlYUmxPMXh1ZlZ4dUlsMTkiXX0=
|