@decaf-ts/integrations 0.14.3 → 0.15.3
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/LICENSE.md +373 -21
- package/dist/integrations.cjs +2 -3317
- package/dist/integrations.cjs.map +1 -0
- package/dist/integrations.js +2 -3665
- package/dist/integrations.js.map +1 -0
- package/jest.config.cjs +0 -1
- package/lib/cjs/blob/azure/AzureBlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/azure/AzureBlobEnvironment.cjs.map +1 -0
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/azure/index.cjs +2 -2
- package/lib/cjs/blob/azure/index.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/core/BlobEnvironment.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
- package/lib/cjs/blob/core/BlobErrors.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobKey.cjs +2 -2
- package/lib/cjs/blob/core/BlobKey.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
- package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/core/BlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
- package/lib/cjs/blob/core/BlobTypes.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobValue.cjs +2 -2
- package/lib/cjs/blob/core/BlobValue.cjs.map +1 -0
- package/lib/cjs/blob/core/index.cjs +2 -2
- package/lib/cjs/blob/core/index.cjs.map +1 -0
- package/lib/cjs/blob/gcp/GcsBlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/gcp/GcsBlobEnvironment.cjs.map +1 -0
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/gcp/index.cjs +2 -2
- package/lib/cjs/blob/gcp/index.cjs.map +1 -0
- package/lib/cjs/blob/index.cjs +2 -2
- package/lib/cjs/blob/index.cjs.map +1 -0
- package/lib/cjs/blob/local/LocalBlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/local/LocalBlobEnvironment.cjs.map +1 -0
- package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/local/index.cjs +2 -2
- package/lib/cjs/blob/local/index.cjs.map +1 -0
- package/lib/cjs/blob/memory/MemoryBlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/memory/MemoryBlobEnvironment.cjs.map +1 -0
- package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/memory/index.cjs +2 -2
- package/lib/cjs/blob/memory/index.cjs.map +1 -0
- package/lib/cjs/blob/s3/MinioBlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/s3/MinioBlobEnvironment.cjs.map +1 -0
- package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/s3/R2BlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/s3/R2BlobEnvironment.cjs.map +1 -0
- package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/s3/S3BlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/s3/S3BlobEnvironment.cjs.map +1 -0
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/s3/index.cjs +2 -2
- package/lib/cjs/blob/s3/index.cjs.map +1 -0
- package/lib/cjs/calendar/CalendarService.cjs +2 -2
- package/lib/cjs/calendar/CalendarService.cjs.map +1 -0
- package/lib/cjs/calendar/environment.cjs +2 -2
- package/lib/cjs/calendar/environment.cjs.map +1 -0
- package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs +2 -2
- package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs.map +1 -0
- package/lib/cjs/calendar/google-calendar/index.cjs +2 -2
- package/lib/cjs/calendar/google-calendar/index.cjs.map +1 -0
- package/lib/cjs/calendar/index.cjs +2 -2
- package/lib/cjs/calendar/index.cjs.map +1 -0
- package/lib/cjs/calendar/types.cjs +2 -2
- package/lib/cjs/calendar/types.cjs.map +1 -0
- package/lib/cjs/calendar/validators/cron.cjs +2 -2
- package/lib/cjs/calendar/validators/cron.cjs.map +1 -0
- package/lib/cjs/calendar/writers/CalendarFsWriter.cjs +2 -2
- package/lib/cjs/calendar/writers/CalendarFsWriter.cjs.map +1 -0
- package/lib/cjs/calendar/writers/CalenderDownloader.cjs +2 -2
- package/lib/cjs/calendar/writers/CalenderDownloader.cjs.map +1 -0
- package/lib/cjs/calendar/writers/ICalendarWriter.cjs +2 -2
- package/lib/cjs/calendar/writers/ICalendarWriter.cjs.map +1 -0
- package/lib/cjs/comms/discord/DiscordService.cjs +2 -2
- package/lib/cjs/comms/discord/DiscordService.cjs.map +1 -0
- package/lib/cjs/comms/discord/index.cjs +2 -2
- package/lib/cjs/comms/discord/index.cjs.map +1 -0
- package/lib/cjs/comms/email/EmailService.cjs +2 -2
- package/lib/cjs/comms/email/EmailService.cjs.map +1 -0
- package/lib/cjs/comms/email/index.cjs +2 -2
- package/lib/cjs/comms/email/index.cjs.map +1 -0
- package/lib/cjs/comms/email/mime.cjs +2 -2
- package/lib/cjs/comms/email/mime.cjs.map +1 -0
- package/lib/cjs/comms/email/smtp.cjs +2 -2
- package/lib/cjs/comms/email/smtp.cjs.map +1 -0
- package/lib/cjs/comms/environment.cjs +2 -2
- package/lib/cjs/comms/environment.cjs.map +1 -0
- package/lib/cjs/comms/gmail/GmailService.cjs +2 -2
- package/lib/cjs/comms/gmail/GmailService.cjs.map +1 -0
- package/lib/cjs/comms/gmail/index.cjs +2 -2
- package/lib/cjs/comms/gmail/index.cjs.map +1 -0
- package/lib/cjs/comms/index.cjs +2 -2
- package/lib/cjs/comms/index.cjs.map +1 -0
- package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs +2 -2
- package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs.map +1 -0
- package/lib/cjs/comms/outlook/index.cjs +2 -2
- package/lib/cjs/comms/outlook/index.cjs.map +1 -0
- package/lib/cjs/comms/slack/SlackService.cjs +2 -2
- package/lib/cjs/comms/slack/SlackService.cjs.map +1 -0
- package/lib/cjs/comms/slack/index.cjs +2 -2
- package/lib/cjs/comms/slack/index.cjs.map +1 -0
- package/lib/cjs/comms/teams/TeamsService.cjs +2 -2
- package/lib/cjs/comms/teams/TeamsService.cjs.map +1 -0
- package/lib/cjs/comms/teams/index.cjs +2 -2
- package/lib/cjs/comms/teams/index.cjs.map +1 -0
- package/lib/cjs/comms/telegram/TelegramService.cjs +2 -2
- package/lib/cjs/comms/telegram/TelegramService.cjs.map +1 -0
- package/lib/cjs/comms/telegram/index.cjs +2 -2
- package/lib/cjs/comms/telegram/index.cjs.map +1 -0
- package/lib/cjs/comms/whatsapp/WhatsAppService.cjs +2 -2
- package/lib/cjs/comms/whatsapp/WhatsAppService.cjs.map +1 -0
- package/lib/cjs/comms/whatsapp/index.cjs +2 -2
- package/lib/cjs/comms/whatsapp/index.cjs.map +1 -0
- package/lib/cjs/devops/environment.cjs +2 -2
- package/lib/cjs/devops/environment.cjs.map +1 -0
- package/lib/cjs/devops/github/GithubService.cjs +2 -2
- package/lib/cjs/devops/github/GithubService.cjs.map +1 -0
- package/lib/cjs/devops/github/index.cjs +2 -2
- package/lib/cjs/devops/github/index.cjs.map +1 -0
- package/lib/cjs/devops/gitlab/GitlabService.cjs +2 -2
- package/lib/cjs/devops/gitlab/GitlabService.cjs.map +1 -0
- package/lib/cjs/devops/gitlab/index.cjs +2 -2
- package/lib/cjs/devops/gitlab/index.cjs.map +1 -0
- package/lib/cjs/devops/index.cjs +2 -2
- package/lib/cjs/devops/index.cjs.map +1 -0
- package/lib/cjs/docker/DockerComposeService.cjs +2 -2
- package/lib/cjs/docker/DockerComposeService.cjs.map +1 -0
- package/lib/cjs/docker/index.cjs +2 -2
- package/lib/cjs/docker/index.cjs.map +1 -0
- package/lib/cjs/feature-flags/EngineCapabilityFeatureFlag.service.cjs +2 -2
- package/lib/cjs/feature-flags/EngineCapabilityFeatureFlag.service.cjs.map +1 -0
- package/lib/cjs/feature-flags/constants.cjs +2 -2
- package/lib/cjs/feature-flags/constants.cjs.map +1 -0
- package/lib/cjs/feature-flags/decorators.cjs +2 -2
- package/lib/cjs/feature-flags/decorators.cjs.map +1 -0
- package/lib/cjs/feature-flags/environment.cjs +2 -2
- package/lib/cjs/feature-flags/environment.cjs.map +1 -0
- package/lib/cjs/feature-flags/index.cjs +2 -2
- package/lib/cjs/feature-flags/index.cjs.map +1 -0
- package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +2 -2
- package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs.map +1 -0
- package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +2 -2
- package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs.map +1 -0
- package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs +2 -2
- package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs.map +1 -0
- package/lib/cjs/feature-flags/readers/index.cjs +2 -2
- package/lib/cjs/feature-flags/readers/index.cjs.map +1 -0
- package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +3 -2
- package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs.map +1 -0
- package/lib/cjs/feature-flags/types.cjs +2 -2
- package/lib/cjs/feature-flags/types.cjs.map +1 -0
- package/lib/cjs/feature-flags/utils.cjs +2 -2
- package/lib/cjs/feature-flags/utils.cjs.map +1 -0
- package/lib/cjs/index.cjs +5 -5
- package/lib/cjs/index.cjs.map +1 -0
- package/lib/cjs/io/airtable/AirtableService.cjs +2 -2
- package/lib/cjs/io/airtable/AirtableService.cjs.map +1 -0
- package/lib/cjs/io/airtable/index.cjs +2 -2
- package/lib/cjs/io/airtable/index.cjs.map +1 -0
- package/lib/cjs/io/confluence/ConfluenceService.cjs +2 -2
- package/lib/cjs/io/confluence/ConfluenceService.cjs.map +1 -0
- package/lib/cjs/io/confluence/index.cjs +2 -2
- package/lib/cjs/io/confluence/index.cjs.map +1 -0
- package/lib/cjs/io/environment.cjs +2 -2
- package/lib/cjs/io/environment.cjs.map +1 -0
- package/lib/cjs/io/google-docs/GoogleDocsService.cjs +2 -2
- package/lib/cjs/io/google-docs/GoogleDocsService.cjs.map +1 -0
- package/lib/cjs/io/google-docs/index.cjs +2 -2
- package/lib/cjs/io/google-docs/index.cjs.map +1 -0
- package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs +2 -2
- package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs.map +1 -0
- package/lib/cjs/io/google-sheets/index.cjs +2 -2
- package/lib/cjs/io/google-sheets/index.cjs.map +1 -0
- package/lib/cjs/io/graphql/GraphqlService.cjs +2 -2
- package/lib/cjs/io/graphql/GraphqlService.cjs.map +1 -0
- package/lib/cjs/io/graphql/index.cjs +2 -2
- package/lib/cjs/io/graphql/index.cjs.map +1 -0
- package/lib/cjs/io/index.cjs +2 -2
- package/lib/cjs/io/index.cjs.map +1 -0
- package/lib/cjs/io/jira/JiraService.cjs +2 -2
- package/lib/cjs/io/jira/JiraService.cjs.map +1 -0
- package/lib/cjs/io/jira/index.cjs +2 -2
- package/lib/cjs/io/jira/index.cjs.map +1 -0
- package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs +2 -2
- package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs.map +1 -0
- package/lib/cjs/io/microsoft-excel/index.cjs +2 -2
- package/lib/cjs/io/microsoft-excel/index.cjs.map +1 -0
- package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs +2 -2
- package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs.map +1 -0
- package/lib/cjs/io/microsoft-sharepoint/index.cjs +2 -2
- package/lib/cjs/io/microsoft-sharepoint/index.cjs.map +1 -0
- package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs +2 -2
- package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs.map +1 -0
- package/lib/cjs/io/spreadsheet/index.cjs +2 -2
- package/lib/cjs/io/spreadsheet/index.cjs.map +1 -0
- package/lib/cjs/keycloak/broker.cjs +2 -2
- package/lib/cjs/keycloak/broker.cjs.map +1 -0
- package/lib/cjs/keycloak/index.cjs +2 -2
- package/lib/cjs/keycloak/index.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/index.cjs +2 -2
- package/lib/cjs/keycloak/services/index.cjs.map +1 -0
- package/lib/cjs/keycloak/services/runtime.cjs +2 -2
- package/lib/cjs/keycloak/services/runtime.cjs.map +1 -0
- package/lib/cjs/keycloak/types.cjs +2 -2
- package/lib/cjs/keycloak/types.cjs.map +1 -0
- package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs +2 -2
- package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs.map +1 -0
- package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs +2 -2
- package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs.map +1 -0
- package/lib/cjs/kibana/builders/index.cjs +2 -2
- package/lib/cjs/kibana/builders/index.cjs.map +1 -0
- package/lib/cjs/kibana/helpers.cjs +2 -2
- package/lib/cjs/kibana/helpers.cjs.map +1 -0
- package/lib/cjs/kibana/index.cjs +2 -2
- package/lib/cjs/kibana/index.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaUserService.cjs.map +1 -0
- package/lib/cjs/kibana/services/index.cjs +2 -2
- package/lib/cjs/kibana/services/index.cjs.map +1 -0
- package/lib/cjs/kibana/services/runtime.cjs +2 -2
- package/lib/cjs/kibana/services/runtime.cjs.map +1 -0
- package/lib/cjs/kibana/types.cjs +2 -2
- package/lib/cjs/kibana/types.cjs.map +1 -0
- package/lib/cjs/loader/ObjectLoader.cjs +2 -2
- package/lib/cjs/loader/ObjectLoader.cjs.map +1 -0
- package/lib/cjs/loader/assets.cjs +2 -2
- package/lib/cjs/loader/assets.cjs.map +1 -0
- package/lib/cjs/loader/config.cjs +2 -2
- package/lib/cjs/loader/config.cjs.map +1 -0
- package/lib/cjs/loader/families.cjs +2 -2
- package/lib/cjs/loader/families.cjs.map +1 -0
- package/lib/cjs/loader/index.cjs +2 -2
- package/lib/cjs/loader/index.cjs.map +1 -0
- package/lib/cjs/loader/nest.cjs +2 -2
- package/lib/cjs/loader/nest.cjs.map +1 -0
- package/lib/cjs/loader/types.cjs +2 -2
- package/lib/cjs/loader/types.cjs.map +1 -0
- package/lib/cjs/namespaces/index.cjs +2 -2
- package/lib/cjs/namespaces/index.cjs.map +1 -0
- package/lib/cjs/namespaces/models/authorization-model.cjs +2 -2
- package/lib/cjs/namespaces/models/authorization-model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/credential.model.cjs +2 -2
- package/lib/cjs/namespaces/models/credential.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -2
- package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -2
- package/lib/cjs/namespaces/models/group-membership.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/group.model.cjs +2 -2
- package/lib/cjs/namespaces/models/group.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/index.cjs +2 -2
- package/lib/cjs/namespaces/models/index.cjs.map +1 -0
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -2
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/permission.model.cjs +2 -2
- package/lib/cjs/namespaces/models/permission.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/principal.model.cjs +2 -2
- package/lib/cjs/namespaces/models/principal.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -2
- package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -2
- package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -2
- package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -2
- package/lib/cjs/namespaces/models/role-permission.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/role.model.cjs +2 -2
- package/lib/cjs/namespaces/models/role.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -2
- package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -2
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -2
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/tenant.model.cjs +2 -2
- package/lib/cjs/namespaces/models/tenant.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/user.model.cjs +2 -2
- package/lib/cjs/namespaces/models/user.model.cjs.map +1 -0
- package/lib/cjs/namespaces/org-based-authorization-system.cjs +2 -2
- package/lib/cjs/namespaces/org-based-authorization-system.cjs.map +1 -0
- package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +2 -2
- package/lib/cjs/namespaces/org-based-authorization-system.models.cjs.map +1 -0
- package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +2 -2
- package/lib/cjs/namespaces/org-based-authorization-system.services.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/index.cjs +2 -2
- package/lib/cjs/namespaces/rls/index.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/principal-resolver.cjs +2 -2
- package/lib/cjs/namespaces/rls/principal-resolver.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs +2 -2
- package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/rls.constants.cjs +2 -2
- package/lib/cjs/namespaces/rls/rls.constants.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/rls.template.cjs +2 -2
- package/lib/cjs/namespaces/rls/rls.template.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/rls.types.cjs +2 -2
- package/lib/cjs/namespaces/rls/rls.types.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/session-binding.cjs +2 -2
- package/lib/cjs/namespaces/rls/session-binding.cjs.map +1 -0
- package/lib/cjs/namespaces/services/authz.service.cjs +2 -2
- package/lib/cjs/namespaces/services/authz.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/bootstrap.service.cjs +2 -2
- package/lib/cjs/namespaces/services/bootstrap.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/credential.service.cjs +2 -2
- package/lib/cjs/namespaces/services/credential.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/effective-permission.service.cjs +2 -2
- package/lib/cjs/namespaces/services/effective-permission.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/group-membership.service.cjs +2 -2
- package/lib/cjs/namespaces/services/group-membership.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/group.service.cjs +2 -2
- package/lib/cjs/namespaces/services/group.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/index.cjs +2 -2
- package/lib/cjs/namespaces/services/index.cjs.map +1 -0
- package/lib/cjs/namespaces/services/inheritance-block.service.cjs +2 -2
- package/lib/cjs/namespaces/services/inheritance-block.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit-closure.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit-membership.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit-profile.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/org-unit.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/permission.service.cjs +2 -2
- package/lib/cjs/namespaces/services/permission.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/principal.service.cjs +2 -2
- package/lib/cjs/namespaces/services/principal.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/protected-resource.service.cjs +2 -2
- package/lib/cjs/namespaces/services/protected-resource.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/resource-grant.service.cjs +2 -2
- package/lib/cjs/namespaces/services/resource-grant.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +2 -2
- package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/role-assignment.service.cjs +2 -2
- package/lib/cjs/namespaces/services/role-assignment.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/role-permission.service.cjs +2 -2
- package/lib/cjs/namespaces/services/role-permission.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/role.service.cjs +2 -2
- package/lib/cjs/namespaces/services/role.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/storage-binding.service.cjs +2 -2
- package/lib/cjs/namespaces/services/storage-binding.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/system-management.service.cjs +2 -2
- package/lib/cjs/namespaces/services/system-management.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/tenant-membership.service.cjs +2 -2
- package/lib/cjs/namespaces/services/tenant-membership.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/tenant-profile.service.cjs +2 -2
- package/lib/cjs/namespaces/services/tenant-profile.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/tenant.service.cjs +2 -2
- package/lib/cjs/namespaces/services/tenant.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/user.service.cjs +2 -2
- package/lib/cjs/namespaces/services/user.service.cjs.map +1 -0
- package/lib/cjs/namespaces/types.cjs +2 -2
- package/lib/cjs/namespaces/types.cjs.map +1 -0
- package/lib/cjs/namespaces/utils.cjs +2 -2
- package/lib/cjs/namespaces/utils.cjs.map +1 -0
- package/lib/cjs/nest/decorators.cjs +2 -2
- package/lib/cjs/nest/decorators.cjs.map +1 -0
- package/lib/cjs/nest/index.cjs +2 -2
- package/lib/cjs/nest/index.cjs.map +1 -0
- package/lib/cjs/nest/keycloakAuthHandler.cjs +2 -2
- package/lib/cjs/nest/keycloakAuthHandler.cjs.map +1 -0
- package/lib/cjs/nest/keycloakModule.cjs +2 -2
- package/lib/cjs/nest/keycloakModule.cjs.map +1 -0
- package/lib/cjs/nest/logging.cjs +2 -2
- package/lib/cjs/nest/logging.cjs.map +1 -0
- package/lib/cjs/nest/types.cjs +2 -2
- package/lib/cjs/nest/types.cjs.map +1 -0
- package/lib/cjs/nest/utils.cjs +2 -2
- package/lib/cjs/nest/utils.cjs.map +1 -0
- package/lib/cjs/plugins/contract.cjs +2 -2
- package/lib/cjs/plugins/contract.cjs.map +1 -0
- package/lib/cjs/plugins/index.cjs +2 -2
- package/lib/cjs/plugins/index.cjs.map +1 -0
- package/lib/cjs/plugins/kibana/host.cjs +2 -2
- package/lib/cjs/plugins/kibana/host.cjs.map +1 -0
- package/lib/cjs/plugins/kibana/index.cjs +2 -2
- package/lib/cjs/plugins/kibana/index.cjs.map +1 -0
- package/lib/cjs/plugins/kibana/installer.cjs +2 -2
- package/lib/cjs/plugins/kibana/installer.cjs.map +1 -0
- package/lib/cjs/plugins/kibana/manifest.cjs +2 -2
- package/lib/cjs/plugins/kibana/manifest.cjs.map +1 -0
- package/lib/cjs/plugins/kibana/templates.cjs +2 -2
- package/lib/cjs/plugins/kibana/templates.cjs.map +1 -0
- package/lib/cjs/plugins/kibana/types.cjs +2 -2
- package/lib/cjs/plugins/kibana/types.cjs.map +1 -0
- package/lib/cjs/plugins/superset/host.cjs +2 -2
- package/lib/cjs/plugins/superset/host.cjs.map +1 -0
- package/lib/cjs/plugins/superset/index.cjs +2 -2
- package/lib/cjs/plugins/superset/index.cjs.map +1 -0
- package/lib/cjs/plugins/superset/installer.cjs +2 -2
- package/lib/cjs/plugins/superset/installer.cjs.map +1 -0
- package/lib/cjs/plugins/superset/manifest.cjs +2 -2
- package/lib/cjs/plugins/superset/manifest.cjs.map +1 -0
- package/lib/cjs/plugins/superset/templates.cjs +2 -2
- package/lib/cjs/plugins/superset/templates.cjs.map +1 -0
- package/lib/cjs/plugins/superset/types.cjs +2 -2
- package/lib/cjs/plugins/superset/types.cjs.map +1 -0
- package/lib/cjs/redis/RedisContextLock.cjs +2 -2
- package/lib/cjs/redis/RedisContextLock.cjs.map +1 -0
- package/lib/cjs/redis/RedisDispatch.cjs +2 -2
- package/lib/cjs/redis/RedisDispatch.cjs.map +1 -0
- package/lib/cjs/redis/RedisPaginator.cjs +2 -2
- package/lib/cjs/redis/RedisPaginator.cjs.map +1 -0
- package/lib/cjs/redis/RedisStatement.cjs +2 -2
- package/lib/cjs/redis/RedisStatement.cjs.map +1 -0
- package/lib/cjs/redis/adapter.cjs +2 -2
- package/lib/cjs/redis/adapter.cjs.map +1 -0
- package/lib/cjs/redis/constants.cjs +2 -2
- package/lib/cjs/redis/constants.cjs.map +1 -0
- package/lib/cjs/redis/handlers.cjs +2 -2
- package/lib/cjs/redis/handlers.cjs.map +1 -0
- package/lib/cjs/redis/index.cjs +2 -2
- package/lib/cjs/redis/index.cjs.map +1 -0
- package/lib/cjs/redis/serialization.cjs +2 -2
- package/lib/cjs/redis/serialization.cjs.map +1 -0
- package/lib/cjs/redis/types.cjs +2 -2
- package/lib/cjs/redis/types.cjs.map +1 -0
- package/lib/cjs/secrets/InfraCredentialBootstrap.cjs +2 -2
- package/lib/cjs/secrets/InfraCredentialBootstrap.cjs.map +1 -0
- package/lib/cjs/secrets/aws/AwsSecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/aws/AwsSecretEnvironment.cjs.map +1 -0
- package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
- package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/aws/index.cjs +2 -2
- package/lib/cjs/secrets/aws/index.cjs.map +1 -0
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/azure/AzureSecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/azure/AzureSecretEnvironment.cjs.map +1 -0
- package/lib/cjs/secrets/azure/index.cjs +2 -2
- package/lib/cjs/secrets/azure/index.cjs.map +1 -0
- package/lib/cjs/secrets/core/ClientBasedSecretService.cjs +2 -2
- package/lib/cjs/secrets/core/ClientBasedSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/core/SecretEnvironment.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
- package/lib/cjs/secrets/core/SecretErrors.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretName.cjs +2 -2
- package/lib/cjs/secrets/core/SecretName.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretReference.cjs +2 -2
- package/lib/cjs/secrets/core/SecretReference.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
- package/lib/cjs/secrets/core/SecretSerialization.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretService.cjs +2 -2
- package/lib/cjs/secrets/core/SecretService.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
- package/lib/cjs/secrets/core/SecretTypes.cjs.map +1 -0
- package/lib/cjs/secrets/core/index.cjs +2 -2
- package/lib/cjs/secrets/core/index.cjs.map +1 -0
- package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs.map +1 -0
- package/lib/cjs/secrets/fs/FsSecretService.cjs +2 -2
- package/lib/cjs/secrets/fs/FsSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/fs/index.cjs +2 -2
- package/lib/cjs/secrets/fs/index.cjs.map +1 -0
- package/lib/cjs/secrets/gcp/GcpSecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/gcp/GcpSecretEnvironment.cjs.map +1 -0
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +1 -0
- package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/gcp/index.cjs +2 -2
- package/lib/cjs/secrets/gcp/index.cjs.map +1 -0
- package/lib/cjs/secrets/index.cjs +2 -2
- package/lib/cjs/secrets/index.cjs.map +1 -0
- package/lib/cjs/secrets/kubernetes/KubernetesSecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/kubernetes/KubernetesSecretEnvironment.cjs.map +1 -0
- package/lib/cjs/secrets/kubernetes/KubernetesSecretService.cjs +2 -2
- package/lib/cjs/secrets/kubernetes/KubernetesSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/kubernetes/KubernetesSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/kubernetes/KubernetesSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/kubernetes/index.cjs +2 -2
- package/lib/cjs/secrets/kubernetes/index.cjs.map +1 -0
- package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +1 -0
- package/lib/cjs/secrets/model/ModelSecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretEnvironment.cjs.map +1 -0
- package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/model/Secret.cjs +2 -2
- package/lib/cjs/secrets/model/Secret.cjs.map +1 -0
- package/lib/cjs/secrets/model/index.cjs +2 -2
- package/lib/cjs/secrets/model/index.cjs.map +1 -0
- package/lib/cjs/secrets/onepassword/OnePasswordSecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/onepassword/OnePasswordSecretEnvironment.cjs.map +1 -0
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/onepassword/index.cjs +2 -2
- package/lib/cjs/secrets/onepassword/index.cjs.map +1 -0
- package/lib/cjs/secrets/vault/VaultSecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/vault/VaultSecretEnvironment.cjs.map +1 -0
- package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
- package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/vault/index.cjs +2 -2
- package/lib/cjs/secrets/vault/index.cjs.map +1 -0
- package/lib/cjs/sftp/aws/AwsSftpEnvironment.cjs +2 -2
- package/lib/cjs/sftp/aws/AwsSftpEnvironment.cjs.map +1 -0
- package/lib/cjs/sftp/aws/AwsSftpService.cjs +2 -2
- package/lib/cjs/sftp/aws/AwsSftpService.cjs.map +1 -0
- package/lib/cjs/sftp/aws/index.cjs +2 -2
- package/lib/cjs/sftp/aws/index.cjs.map +1 -0
- package/lib/cjs/sftp/core/SftpEnvironment.cjs +2 -2
- package/lib/cjs/sftp/core/SftpEnvironment.cjs.map +1 -0
- package/lib/cjs/sftp/core/SftpSource.cjs +2 -2
- package/lib/cjs/sftp/core/SftpSource.cjs.map +1 -0
- package/lib/cjs/sftp/core/index.cjs +2 -2
- package/lib/cjs/sftp/core/index.cjs.map +1 -0
- package/lib/cjs/sftp/index.cjs +2 -2
- package/lib/cjs/sftp/index.cjs.map +1 -0
- package/lib/cjs/sftp/ssh2/Ssh2SftpEnvironment.cjs +2 -2
- package/lib/cjs/sftp/ssh2/Ssh2SftpEnvironment.cjs.map +1 -0
- package/lib/cjs/sftp/ssh2/Ssh2SftpService.cjs +2 -2
- package/lib/cjs/sftp/ssh2/Ssh2SftpService.cjs.map +1 -0
- package/lib/cjs/sftp/ssh2/index.cjs +2 -2
- package/lib/cjs/sftp/ssh2/index.cjs.map +1 -0
- package/lib/cjs/shared/environmentValue.cjs +2 -2
- package/lib/cjs/shared/environmentValue.cjs.map +1 -0
- package/lib/cjs/shared/http/HttpApiService.cjs +2 -2
- package/lib/cjs/shared/http/HttpApiService.cjs.map +1 -0
- package/lib/cjs/shared/http/hermeticBoot.cjs +2 -2
- package/lib/cjs/shared/http/hermeticBoot.cjs.map +1 -0
- package/lib/cjs/shared/http/index.cjs +2 -2
- package/lib/cjs/shared/http/index.cjs.map +1 -0
- package/lib/cjs/shared/runtime.cjs +2 -2
- package/lib/cjs/shared/runtime.cjs.map +1 -0
- package/lib/cjs/user-requests/index.cjs +2 -2
- package/lib/cjs/user-requests/index.cjs.map +1 -0
- package/lib/cjs/utils.cjs +2 -2
- package/lib/cjs/utils.cjs.map +1 -0
- package/lib/esm/blob/azure/AzureBlobEnvironment.js +1 -1
- package/lib/esm/blob/azure/AzureBlobEnvironment.js.map +1 -0
- package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
- package/lib/esm/blob/azure/AzureBlobStoreService.js.map +1 -0
- package/lib/esm/blob/azure/index.js +1 -1
- package/lib/esm/blob/azure/index.js.map +1 -0
- package/lib/esm/blob/core/BlobEnvironment.js +1 -1
- package/lib/esm/blob/core/BlobEnvironment.js.map +1 -0
- package/lib/esm/blob/core/BlobErrors.js +1 -1
- package/lib/esm/blob/core/BlobErrors.js.map +1 -0
- package/lib/esm/blob/core/BlobKey.js +1 -1
- package/lib/esm/blob/core/BlobKey.js.map +1 -0
- package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
- package/lib/esm/blob/core/BlobStoreFactory.js.map +1 -0
- package/lib/esm/blob/core/BlobStoreService.js +1 -1
- package/lib/esm/blob/core/BlobStoreService.js.map +1 -0
- package/lib/esm/blob/core/BlobTypes.js +1 -1
- package/lib/esm/blob/core/BlobTypes.js.map +1 -0
- package/lib/esm/blob/core/BlobValue.js +1 -1
- package/lib/esm/blob/core/BlobValue.js.map +1 -0
- package/lib/esm/blob/core/index.js +1 -1
- package/lib/esm/blob/core/index.js.map +1 -0
- package/lib/esm/blob/gcp/GcsBlobEnvironment.js +1 -1
- package/lib/esm/blob/gcp/GcsBlobEnvironment.js.map +1 -0
- package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
- package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +1 -0
- package/lib/esm/blob/gcp/index.js +1 -1
- package/lib/esm/blob/gcp/index.js.map +1 -0
- package/lib/esm/blob/index.js +1 -1
- package/lib/esm/blob/index.js.map +1 -0
- package/lib/esm/blob/local/LocalBlobEnvironment.js +1 -1
- package/lib/esm/blob/local/LocalBlobEnvironment.js.map +1 -0
- package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
- package/lib/esm/blob/local/LocalBlobStoreService.js.map +1 -0
- package/lib/esm/blob/local/index.js +1 -1
- package/lib/esm/blob/local/index.js.map +1 -0
- package/lib/esm/blob/memory/MemoryBlobEnvironment.js +1 -1
- package/lib/esm/blob/memory/MemoryBlobEnvironment.js.map +1 -0
- package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
- package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +1 -0
- package/lib/esm/blob/memory/index.js +1 -1
- package/lib/esm/blob/memory/index.js.map +1 -0
- package/lib/esm/blob/s3/MinioBlobEnvironment.js +1 -1
- package/lib/esm/blob/s3/MinioBlobEnvironment.js.map +1 -0
- package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
- package/lib/esm/blob/s3/MinioBlobStoreService.js.map +1 -0
- package/lib/esm/blob/s3/R2BlobEnvironment.js +1 -1
- package/lib/esm/blob/s3/R2BlobEnvironment.js.map +1 -0
- package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
- package/lib/esm/blob/s3/R2BlobStoreService.js.map +1 -0
- package/lib/esm/blob/s3/S3BlobEnvironment.js +1 -1
- package/lib/esm/blob/s3/S3BlobEnvironment.js.map +1 -0
- package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
- package/lib/esm/blob/s3/S3BlobStoreService.js.map +1 -0
- package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js +1 -1
- package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js.map +1 -0
- package/lib/esm/blob/s3/index.js +1 -1
- package/lib/esm/blob/s3/index.js.map +1 -0
- package/lib/esm/calendar/CalendarService.js +1 -1
- package/lib/esm/calendar/CalendarService.js.map +1 -0
- package/lib/esm/calendar/environment.js +1 -1
- package/lib/esm/calendar/environment.js.map +1 -0
- package/lib/esm/calendar/google-calendar/GoogleCalendarService.js +1 -1
- package/lib/esm/calendar/google-calendar/GoogleCalendarService.js.map +1 -0
- package/lib/esm/calendar/google-calendar/index.js +1 -1
- package/lib/esm/calendar/google-calendar/index.js.map +1 -0
- package/lib/esm/calendar/index.js +1 -1
- package/lib/esm/calendar/index.js.map +1 -0
- package/lib/esm/calendar/types.js +1 -1
- package/lib/esm/calendar/types.js.map +1 -0
- package/lib/esm/calendar/validators/cron.js +1 -1
- package/lib/esm/calendar/validators/cron.js.map +1 -0
- package/lib/esm/calendar/writers/CalendarFsWriter.js +1 -1
- package/lib/esm/calendar/writers/CalendarFsWriter.js.map +1 -0
- package/lib/esm/calendar/writers/CalenderDownloader.js +1 -1
- package/lib/esm/calendar/writers/CalenderDownloader.js.map +1 -0
- package/lib/esm/calendar/writers/ICalendarWriter.js +1 -1
- package/lib/esm/calendar/writers/ICalendarWriter.js.map +1 -0
- package/lib/esm/comms/discord/DiscordService.js +1 -1
- package/lib/esm/comms/discord/DiscordService.js.map +1 -0
- package/lib/esm/comms/discord/index.js +1 -1
- package/lib/esm/comms/discord/index.js.map +1 -0
- package/lib/esm/comms/email/EmailService.js +1 -1
- package/lib/esm/comms/email/EmailService.js.map +1 -0
- package/lib/esm/comms/email/index.js +1 -1
- package/lib/esm/comms/email/index.js.map +1 -0
- package/lib/esm/comms/email/mime.js +1 -1
- package/lib/esm/comms/email/mime.js.map +1 -0
- package/lib/esm/comms/email/smtp.js +1 -1
- package/lib/esm/comms/email/smtp.js.map +1 -0
- package/lib/esm/comms/environment.js +1 -1
- package/lib/esm/comms/environment.js.map +1 -0
- package/lib/esm/comms/gmail/GmailService.js +1 -1
- package/lib/esm/comms/gmail/GmailService.js.map +1 -0
- package/lib/esm/comms/gmail/index.js +1 -1
- package/lib/esm/comms/gmail/index.js.map +1 -0
- package/lib/esm/comms/index.js +1 -1
- package/lib/esm/comms/index.js.map +1 -0
- package/lib/esm/comms/outlook/MicrosoftOutlookService.js +1 -1
- package/lib/esm/comms/outlook/MicrosoftOutlookService.js.map +1 -0
- package/lib/esm/comms/outlook/index.js +1 -1
- package/lib/esm/comms/outlook/index.js.map +1 -0
- package/lib/esm/comms/slack/SlackService.js +1 -1
- package/lib/esm/comms/slack/SlackService.js.map +1 -0
- package/lib/esm/comms/slack/index.js +1 -1
- package/lib/esm/comms/slack/index.js.map +1 -0
- package/lib/esm/comms/teams/TeamsService.js +1 -1
- package/lib/esm/comms/teams/TeamsService.js.map +1 -0
- package/lib/esm/comms/teams/index.js +1 -1
- package/lib/esm/comms/teams/index.js.map +1 -0
- package/lib/esm/comms/telegram/TelegramService.js +1 -1
- package/lib/esm/comms/telegram/TelegramService.js.map +1 -0
- package/lib/esm/comms/telegram/index.js +1 -1
- package/lib/esm/comms/telegram/index.js.map +1 -0
- package/lib/esm/comms/whatsapp/WhatsAppService.js +1 -1
- package/lib/esm/comms/whatsapp/WhatsAppService.js.map +1 -0
- package/lib/esm/comms/whatsapp/index.js +1 -1
- package/lib/esm/comms/whatsapp/index.js.map +1 -0
- package/lib/esm/devops/environment.js +1 -1
- package/lib/esm/devops/environment.js.map +1 -0
- package/lib/esm/devops/github/GithubService.js +1 -1
- package/lib/esm/devops/github/GithubService.js.map +1 -0
- package/lib/esm/devops/github/index.js +1 -1
- package/lib/esm/devops/github/index.js.map +1 -0
- package/lib/esm/devops/gitlab/GitlabService.js +1 -1
- package/lib/esm/devops/gitlab/GitlabService.js.map +1 -0
- package/lib/esm/devops/gitlab/index.js +1 -1
- package/lib/esm/devops/gitlab/index.js.map +1 -0
- package/lib/esm/devops/index.js +1 -1
- package/lib/esm/devops/index.js.map +1 -0
- package/lib/esm/docker/DockerComposeService.js +1 -1
- package/lib/esm/docker/DockerComposeService.js.map +1 -0
- package/lib/esm/docker/index.js +1 -1
- package/lib/esm/docker/index.js.map +1 -0
- package/lib/esm/feature-flags/EngineCapabilityFeatureFlag.service.js +1 -1
- package/lib/esm/feature-flags/EngineCapabilityFeatureFlag.service.js.map +1 -0
- package/lib/esm/feature-flags/constants.js +1 -1
- package/lib/esm/feature-flags/constants.js.map +1 -0
- package/lib/esm/feature-flags/decorators.js +1 -1
- package/lib/esm/feature-flags/decorators.js.map +1 -0
- package/lib/esm/feature-flags/environment.js +1 -1
- package/lib/esm/feature-flags/environment.js.map +1 -0
- package/lib/esm/feature-flags/index.js +1 -1
- package/lib/esm/feature-flags/index.js.map +1 -0
- package/lib/esm/feature-flags/models/FeatureFlag.model.js +1 -1
- package/lib/esm/feature-flags/models/FeatureFlag.model.js.map +1 -0
- package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +1 -1
- package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js.map +1 -0
- package/lib/esm/feature-flags/readers/FeatureFlagReader.js +1 -1
- package/lib/esm/feature-flags/readers/FeatureFlagReader.js.map +1 -0
- package/lib/esm/feature-flags/readers/index.js +1 -1
- package/lib/esm/feature-flags/readers/index.js.map +1 -0
- package/lib/esm/feature-flags/services/FeatureFlag.service.js +2 -1
- package/lib/esm/feature-flags/services/FeatureFlag.service.js.map +1 -0
- package/lib/esm/feature-flags/types.js +1 -1
- package/lib/esm/feature-flags/types.js.map +1 -0
- package/lib/esm/feature-flags/utils.js +1 -1
- package/lib/esm/feature-flags/utils.js.map +1 -0
- package/lib/esm/index.js +4 -4
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/io/airtable/AirtableService.js +1 -1
- package/lib/esm/io/airtable/AirtableService.js.map +1 -0
- package/lib/esm/io/airtable/index.js +1 -1
- package/lib/esm/io/airtable/index.js.map +1 -0
- package/lib/esm/io/confluence/ConfluenceService.js +1 -1
- package/lib/esm/io/confluence/ConfluenceService.js.map +1 -0
- package/lib/esm/io/confluence/index.js +1 -1
- package/lib/esm/io/confluence/index.js.map +1 -0
- package/lib/esm/io/environment.js +1 -1
- package/lib/esm/io/environment.js.map +1 -0
- package/lib/esm/io/google-docs/GoogleDocsService.js +1 -1
- package/lib/esm/io/google-docs/GoogleDocsService.js.map +1 -0
- package/lib/esm/io/google-docs/index.js +1 -1
- package/lib/esm/io/google-docs/index.js.map +1 -0
- package/lib/esm/io/google-sheets/GoogleSheetsService.js +1 -1
- package/lib/esm/io/google-sheets/GoogleSheetsService.js.map +1 -0
- package/lib/esm/io/google-sheets/index.js +1 -1
- package/lib/esm/io/google-sheets/index.js.map +1 -0
- package/lib/esm/io/graphql/GraphqlService.js +1 -1
- package/lib/esm/io/graphql/GraphqlService.js.map +1 -0
- package/lib/esm/io/graphql/index.js +1 -1
- package/lib/esm/io/graphql/index.js.map +1 -0
- package/lib/esm/io/index.js +1 -1
- package/lib/esm/io/index.js.map +1 -0
- package/lib/esm/io/jira/JiraService.js +1 -1
- package/lib/esm/io/jira/JiraService.js.map +1 -0
- package/lib/esm/io/jira/index.js +1 -1
- package/lib/esm/io/jira/index.js.map +1 -0
- package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js +1 -1
- package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js.map +1 -0
- package/lib/esm/io/microsoft-excel/index.js +1 -1
- package/lib/esm/io/microsoft-excel/index.js.map +1 -0
- package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js +1 -1
- package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js.map +1 -0
- package/lib/esm/io/microsoft-sharepoint/index.js +1 -1
- package/lib/esm/io/microsoft-sharepoint/index.js.map +1 -0
- package/lib/esm/io/spreadsheet/SpreadsheetService.js +1 -1
- package/lib/esm/io/spreadsheet/SpreadsheetService.js.map +1 -0
- package/lib/esm/io/spreadsheet/index.js +1 -1
- package/lib/esm/io/spreadsheet/index.js.map +1 -0
- package/lib/esm/keycloak/broker.js +1 -1
- package/lib/esm/keycloak/broker.js.map +1 -0
- package/lib/esm/keycloak/index.js +1 -1
- package/lib/esm/keycloak/index.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakAuthService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakClientService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakRealmService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakRoleService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakUserService.js.map +1 -0
- package/lib/esm/keycloak/services/index.js +1 -1
- package/lib/esm/keycloak/services/index.js.map +1 -0
- package/lib/esm/keycloak/services/runtime.js +1 -1
- package/lib/esm/keycloak/services/runtime.js.map +1 -0
- package/lib/esm/keycloak/types.js +1 -1
- package/lib/esm/keycloak/types.js.map +1 -0
- package/lib/esm/kibana/builders/KibanaIndexBuilder.js +1 -1
- package/lib/esm/kibana/builders/KibanaIndexBuilder.js.map +1 -0
- package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js +1 -1
- package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js.map +1 -0
- package/lib/esm/kibana/builders/index.js +1 -1
- package/lib/esm/kibana/builders/index.js.map +1 -0
- package/lib/esm/kibana/helpers.js +1 -1
- package/lib/esm/kibana/helpers.js.map +1 -0
- package/lib/esm/kibana/index.js +1 -1
- package/lib/esm/kibana/index.js.map +1 -0
- package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
- package/lib/esm/kibana/services/KibanaAuthService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
- package/lib/esm/kibana/services/KibanaDashboardService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
- package/lib/esm/kibana/services/KibanaDataViewService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
- package/lib/esm/kibana/services/KibanaRoleService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaService.js +1 -1
- package/lib/esm/kibana/services/KibanaService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
- package/lib/esm/kibana/services/KibanaSpaceService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaUserService.js +1 -1
- package/lib/esm/kibana/services/KibanaUserService.js.map +1 -0
- package/lib/esm/kibana/services/index.js +1 -1
- package/lib/esm/kibana/services/index.js.map +1 -0
- package/lib/esm/kibana/services/runtime.js +1 -1
- package/lib/esm/kibana/services/runtime.js.map +1 -0
- package/lib/esm/kibana/types.js +1 -1
- package/lib/esm/kibana/types.js.map +1 -0
- package/lib/esm/loader/ObjectLoader.js +1 -1
- package/lib/esm/loader/ObjectLoader.js.map +1 -0
- package/lib/esm/loader/assets.js +1 -1
- package/lib/esm/loader/assets.js.map +1 -0
- package/lib/esm/loader/config.js +1 -1
- package/lib/esm/loader/config.js.map +1 -0
- package/lib/esm/loader/families.js +1 -1
- package/lib/esm/loader/families.js.map +1 -0
- package/lib/esm/loader/index.js +1 -1
- package/lib/esm/loader/index.js.map +1 -0
- package/lib/esm/loader/nest.js +1 -1
- package/lib/esm/loader/nest.js.map +1 -0
- package/lib/esm/loader/types.js +1 -1
- package/lib/esm/loader/types.js.map +1 -0
- package/lib/esm/namespaces/index.js +1 -1
- package/lib/esm/namespaces/index.js.map +1 -0
- package/lib/esm/namespaces/models/authorization-model.js +1 -1
- package/lib/esm/namespaces/models/authorization-model.js.map +1 -0
- package/lib/esm/namespaces/models/credential.model.js +1 -1
- package/lib/esm/namespaces/models/credential.model.js.map +1 -0
- package/lib/esm/namespaces/models/effective-permission.model.js +1 -1
- package/lib/esm/namespaces/models/effective-permission.model.js.map +1 -0
- package/lib/esm/namespaces/models/group-membership.model.js +1 -1
- package/lib/esm/namespaces/models/group-membership.model.js.map +1 -0
- package/lib/esm/namespaces/models/group.model.js +1 -1
- package/lib/esm/namespaces/models/group.model.js.map +1 -0
- package/lib/esm/namespaces/models/index.js +1 -1
- package/lib/esm/namespaces/models/index.js.map +1 -0
- package/lib/esm/namespaces/models/inheritance-block.model.js +1 -1
- package/lib/esm/namespaces/models/inheritance-block.model.js.map +1 -0
- package/lib/esm/namespaces/models/org-unit-closure.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit-closure.model.js.map +1 -0
- package/lib/esm/namespaces/models/org-unit-membership.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit-membership.model.js.map +1 -0
- package/lib/esm/namespaces/models/org-unit-profile.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit-profile.model.js.map +1 -0
- package/lib/esm/namespaces/models/org-unit.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit.model.js.map +1 -0
- package/lib/esm/namespaces/models/permission.model.js +1 -1
- package/lib/esm/namespaces/models/permission.model.js.map +1 -0
- package/lib/esm/namespaces/models/principal.model.js +1 -1
- package/lib/esm/namespaces/models/principal.model.js.map +1 -0
- package/lib/esm/namespaces/models/protected-resource.model.js +1 -1
- package/lib/esm/namespaces/models/protected-resource.model.js.map +1 -0
- package/lib/esm/namespaces/models/resource-grant.model.js +1 -1
- package/lib/esm/namespaces/models/resource-grant.model.js.map +1 -0
- package/lib/esm/namespaces/models/role-assignment.model.js +1 -1
- package/lib/esm/namespaces/models/role-assignment.model.js.map +1 -0
- package/lib/esm/namespaces/models/role-permission.model.js +1 -1
- package/lib/esm/namespaces/models/role-permission.model.js.map +1 -0
- package/lib/esm/namespaces/models/role.model.js +1 -1
- package/lib/esm/namespaces/models/role.model.js.map +1 -0
- package/lib/esm/namespaces/models/storage-binding.model.js +1 -1
- package/lib/esm/namespaces/models/storage-binding.model.js.map +1 -0
- package/lib/esm/namespaces/models/tenant-membership.model.js +1 -1
- package/lib/esm/namespaces/models/tenant-membership.model.js.map +1 -0
- package/lib/esm/namespaces/models/tenant-profile.model.js +1 -1
- package/lib/esm/namespaces/models/tenant-profile.model.js.map +1 -0
- package/lib/esm/namespaces/models/tenant.model.js +1 -1
- package/lib/esm/namespaces/models/tenant.model.js.map +1 -0
- package/lib/esm/namespaces/models/user.model.js +1 -1
- package/lib/esm/namespaces/models/user.model.js.map +1 -0
- package/lib/esm/namespaces/org-based-authorization-system.js +1 -1
- package/lib/esm/namespaces/org-based-authorization-system.js.map +1 -0
- package/lib/esm/namespaces/org-based-authorization-system.models.js +1 -1
- package/lib/esm/namespaces/org-based-authorization-system.models.js.map +1 -0
- package/lib/esm/namespaces/org-based-authorization-system.services.js +1 -1
- package/lib/esm/namespaces/org-based-authorization-system.services.js.map +1 -0
- package/lib/esm/namespaces/rls/index.js +1 -1
- package/lib/esm/namespaces/rls/index.js.map +1 -0
- package/lib/esm/namespaces/rls/principal-resolver.js +1 -1
- package/lib/esm/namespaces/rls/principal-resolver.js.map +1 -0
- package/lib/esm/namespaces/rls/rls-bootstrap.service.js +1 -1
- package/lib/esm/namespaces/rls/rls-bootstrap.service.js.map +1 -0
- package/lib/esm/namespaces/rls/rls.constants.js +1 -1
- package/lib/esm/namespaces/rls/rls.constants.js.map +1 -0
- package/lib/esm/namespaces/rls/rls.template.js +1 -1
- package/lib/esm/namespaces/rls/rls.template.js.map +1 -0
- package/lib/esm/namespaces/rls/rls.types.js +1 -1
- package/lib/esm/namespaces/rls/rls.types.js.map +1 -0
- package/lib/esm/namespaces/rls/session-binding.js +1 -1
- package/lib/esm/namespaces/rls/session-binding.js.map +1 -0
- package/lib/esm/namespaces/services/authz.service.js +1 -1
- package/lib/esm/namespaces/services/authz.service.js.map +1 -0
- package/lib/esm/namespaces/services/bootstrap.service.js +1 -1
- package/lib/esm/namespaces/services/bootstrap.service.js.map +1 -0
- package/lib/esm/namespaces/services/credential.service.js +1 -1
- package/lib/esm/namespaces/services/credential.service.js.map +1 -0
- package/lib/esm/namespaces/services/effective-permission.service.js +1 -1
- package/lib/esm/namespaces/services/effective-permission.service.js.map +1 -0
- package/lib/esm/namespaces/services/group-membership.service.js +1 -1
- package/lib/esm/namespaces/services/group-membership.service.js.map +1 -0
- package/lib/esm/namespaces/services/group.service.js +1 -1
- package/lib/esm/namespaces/services/group.service.js.map +1 -0
- package/lib/esm/namespaces/services/index.js +1 -1
- package/lib/esm/namespaces/services/index.js.map +1 -0
- package/lib/esm/namespaces/services/inheritance-block.service.js +1 -1
- package/lib/esm/namespaces/services/inheritance-block.service.js.map +1 -0
- package/lib/esm/namespaces/services/org-unit-closure.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit-closure.service.js.map +1 -0
- package/lib/esm/namespaces/services/org-unit-membership.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit-membership.service.js.map +1 -0
- package/lib/esm/namespaces/services/org-unit-profile.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit-profile.service.js.map +1 -0
- package/lib/esm/namespaces/services/org-unit.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit.service.js.map +1 -0
- package/lib/esm/namespaces/services/permission.service.js +1 -1
- package/lib/esm/namespaces/services/permission.service.js.map +1 -0
- package/lib/esm/namespaces/services/principal.service.js +1 -1
- package/lib/esm/namespaces/services/principal.service.js.map +1 -0
- package/lib/esm/namespaces/services/protected-resource.service.js +1 -1
- package/lib/esm/namespaces/services/protected-resource.service.js.map +1 -0
- package/lib/esm/namespaces/services/resource-grant.service.js +1 -1
- package/lib/esm/namespaces/services/resource-grant.service.js.map +1 -0
- package/lib/esm/namespaces/services/resource-lifecycle.service.js +1 -1
- package/lib/esm/namespaces/services/resource-lifecycle.service.js.map +1 -0
- package/lib/esm/namespaces/services/role-assignment.service.js +1 -1
- package/lib/esm/namespaces/services/role-assignment.service.js.map +1 -0
- package/lib/esm/namespaces/services/role-permission.service.js +1 -1
- package/lib/esm/namespaces/services/role-permission.service.js.map +1 -0
- package/lib/esm/namespaces/services/role.service.js +1 -1
- package/lib/esm/namespaces/services/role.service.js.map +1 -0
- package/lib/esm/namespaces/services/storage-binding.service.js +1 -1
- package/lib/esm/namespaces/services/storage-binding.service.js.map +1 -0
- package/lib/esm/namespaces/services/system-management.service.js +1 -1
- package/lib/esm/namespaces/services/system-management.service.js.map +1 -0
- package/lib/esm/namespaces/services/tenant-membership.service.js +1 -1
- package/lib/esm/namespaces/services/tenant-membership.service.js.map +1 -0
- package/lib/esm/namespaces/services/tenant-profile.service.js +1 -1
- package/lib/esm/namespaces/services/tenant-profile.service.js.map +1 -0
- package/lib/esm/namespaces/services/tenant.service.js +1 -1
- package/lib/esm/namespaces/services/tenant.service.js.map +1 -0
- package/lib/esm/namespaces/services/user.service.js +1 -1
- package/lib/esm/namespaces/services/user.service.js.map +1 -0
- package/lib/esm/namespaces/types.js +1 -1
- package/lib/esm/namespaces/types.js.map +1 -0
- package/lib/esm/namespaces/utils.js +1 -1
- package/lib/esm/namespaces/utils.js.map +1 -0
- package/lib/esm/nest/decorators.js +1 -1
- package/lib/esm/nest/decorators.js.map +1 -0
- package/lib/esm/nest/index.js +1 -1
- package/lib/esm/nest/index.js.map +1 -0
- package/lib/esm/nest/keycloakAuthHandler.js +1 -1
- package/lib/esm/nest/keycloakAuthHandler.js.map +1 -0
- package/lib/esm/nest/keycloakModule.js +1 -1
- package/lib/esm/nest/keycloakModule.js.map +1 -0
- package/lib/esm/nest/logging.js +1 -1
- package/lib/esm/nest/logging.js.map +1 -0
- package/lib/esm/nest/types.js +1 -1
- package/lib/esm/nest/types.js.map +1 -0
- package/lib/esm/nest/utils.js +1 -1
- package/lib/esm/nest/utils.js.map +1 -0
- package/lib/esm/plugins/contract.js +1 -1
- package/lib/esm/plugins/contract.js.map +1 -0
- package/lib/esm/plugins/index.js +1 -1
- package/lib/esm/plugins/index.js.map +1 -0
- package/lib/esm/plugins/kibana/host.js +1 -1
- package/lib/esm/plugins/kibana/host.js.map +1 -0
- package/lib/esm/plugins/kibana/index.js +1 -1
- package/lib/esm/plugins/kibana/index.js.map +1 -0
- package/lib/esm/plugins/kibana/installer.js +1 -1
- package/lib/esm/plugins/kibana/installer.js.map +1 -0
- package/lib/esm/plugins/kibana/manifest.js +1 -1
- package/lib/esm/plugins/kibana/manifest.js.map +1 -0
- package/lib/esm/plugins/kibana/templates.js +1 -1
- package/lib/esm/plugins/kibana/templates.js.map +1 -0
- package/lib/esm/plugins/kibana/types.js +1 -1
- package/lib/esm/plugins/kibana/types.js.map +1 -0
- package/lib/esm/plugins/superset/host.js +1 -1
- package/lib/esm/plugins/superset/host.js.map +1 -0
- package/lib/esm/plugins/superset/index.js +1 -1
- package/lib/esm/plugins/superset/index.js.map +1 -0
- package/lib/esm/plugins/superset/installer.js +1 -1
- package/lib/esm/plugins/superset/installer.js.map +1 -0
- package/lib/esm/plugins/superset/manifest.js +1 -1
- package/lib/esm/plugins/superset/manifest.js.map +1 -0
- package/lib/esm/plugins/superset/templates.js +1 -1
- package/lib/esm/plugins/superset/templates.js.map +1 -0
- package/lib/esm/plugins/superset/types.js +1 -1
- package/lib/esm/plugins/superset/types.js.map +1 -0
- package/lib/esm/redis/RedisContextLock.js +1 -1
- package/lib/esm/redis/RedisContextLock.js.map +1 -0
- package/lib/esm/redis/RedisDispatch.js +1 -1
- package/lib/esm/redis/RedisDispatch.js.map +1 -0
- package/lib/esm/redis/RedisPaginator.js +1 -1
- package/lib/esm/redis/RedisPaginator.js.map +1 -0
- package/lib/esm/redis/RedisStatement.js +1 -1
- package/lib/esm/redis/RedisStatement.js.map +1 -0
- package/lib/esm/redis/adapter.js +1 -1
- package/lib/esm/redis/adapter.js.map +1 -0
- package/lib/esm/redis/constants.js +1 -1
- package/lib/esm/redis/constants.js.map +1 -0
- package/lib/esm/redis/handlers.js +1 -1
- package/lib/esm/redis/handlers.js.map +1 -0
- package/lib/esm/redis/index.js +1 -1
- package/lib/esm/redis/index.js.map +1 -0
- package/lib/esm/redis/serialization.js +1 -1
- package/lib/esm/redis/serialization.js.map +1 -0
- package/lib/esm/redis/types.js +1 -1
- package/lib/esm/redis/types.js.map +1 -0
- package/lib/esm/secrets/InfraCredentialBootstrap.js +1 -1
- package/lib/esm/secrets/InfraCredentialBootstrap.js.map +1 -0
- package/lib/esm/secrets/aws/AwsSecretEnvironment.js +1 -1
- package/lib/esm/secrets/aws/AwsSecretEnvironment.js.map +1 -0
- package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
- package/lib/esm/secrets/aws/AwsSecretService.js.map +1 -0
- package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/aws/index.js +1 -1
- package/lib/esm/secrets/aws/index.js.map +1 -0
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +1 -0
- package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/azure/AzureSecretEnvironment.js +1 -1
- package/lib/esm/secrets/azure/AzureSecretEnvironment.js.map +1 -0
- package/lib/esm/secrets/azure/index.js +1 -1
- package/lib/esm/secrets/azure/index.js.map +1 -0
- package/lib/esm/secrets/core/ClientBasedSecretService.js +1 -1
- package/lib/esm/secrets/core/ClientBasedSecretService.js.map +1 -0
- package/lib/esm/secrets/core/SecretEnvironment.js +1 -1
- package/lib/esm/secrets/core/SecretEnvironment.js.map +1 -0
- package/lib/esm/secrets/core/SecretErrors.js +1 -1
- package/lib/esm/secrets/core/SecretErrors.js.map +1 -0
- package/lib/esm/secrets/core/SecretName.js +1 -1
- package/lib/esm/secrets/core/SecretName.js.map +1 -0
- package/lib/esm/secrets/core/SecretReference.js +1 -1
- package/lib/esm/secrets/core/SecretReference.js.map +1 -0
- package/lib/esm/secrets/core/SecretSerialization.js +1 -1
- package/lib/esm/secrets/core/SecretSerialization.js.map +1 -0
- package/lib/esm/secrets/core/SecretService.js +1 -1
- package/lib/esm/secrets/core/SecretService.js.map +1 -0
- package/lib/esm/secrets/core/SecretTypes.js +1 -1
- package/lib/esm/secrets/core/SecretTypes.js.map +1 -0
- package/lib/esm/secrets/core/index.js +1 -1
- package/lib/esm/secrets/core/index.js.map +1 -0
- package/lib/esm/secrets/fs/FsSecretEnvironment.js +1 -1
- package/lib/esm/secrets/fs/FsSecretEnvironment.js.map +1 -0
- package/lib/esm/secrets/fs/FsSecretService.js +1 -1
- package/lib/esm/secrets/fs/FsSecretService.js.map +1 -0
- package/lib/esm/secrets/fs/FsSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/fs/FsSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/fs/index.js +1 -1
- package/lib/esm/secrets/fs/index.js.map +1 -0
- package/lib/esm/secrets/gcp/GcpSecretEnvironment.js +1 -1
- package/lib/esm/secrets/gcp/GcpSecretEnvironment.js.map +1 -0
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +1 -0
- package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +1 -0
- package/lib/esm/secrets/gcp/index.js +1 -1
- package/lib/esm/secrets/gcp/index.js.map +1 -0
- package/lib/esm/secrets/index.js +1 -1
- package/lib/esm/secrets/index.js.map +1 -0
- package/lib/esm/secrets/kubernetes/KubernetesSecretEnvironment.js +1 -1
- package/lib/esm/secrets/kubernetes/KubernetesSecretEnvironment.js.map +1 -0
- package/lib/esm/secrets/kubernetes/KubernetesSecretService.js +1 -1
- package/lib/esm/secrets/kubernetes/KubernetesSecretService.js.map +1 -0
- package/lib/esm/secrets/kubernetes/KubernetesSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/kubernetes/KubernetesSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/kubernetes/index.js +1 -1
- package/lib/esm/secrets/kubernetes/index.js.map +1 -0
- package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
- package/lib/esm/secrets/model/ModelSecretCrypto.js.map +1 -0
- package/lib/esm/secrets/model/ModelSecretEnvironment.js +1 -1
- package/lib/esm/secrets/model/ModelSecretEnvironment.js.map +1 -0
- package/lib/esm/secrets/model/ModelSecretService.js +1 -1
- package/lib/esm/secrets/model/ModelSecretService.js.map +1 -0
- package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/model/Secret.js +1 -1
- package/lib/esm/secrets/model/Secret.js.map +1 -0
- package/lib/esm/secrets/model/index.js +1 -1
- package/lib/esm/secrets/model/index.js.map +1 -0
- package/lib/esm/secrets/onepassword/OnePasswordSecretEnvironment.js +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretEnvironment.js.map +1 -0
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +1 -0
- package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/onepassword/index.js +1 -1
- package/lib/esm/secrets/onepassword/index.js.map +1 -0
- package/lib/esm/secrets/vault/VaultSecretEnvironment.js +1 -1
- package/lib/esm/secrets/vault/VaultSecretEnvironment.js.map +1 -0
- package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
- package/lib/esm/secrets/vault/VaultSecretService.js.map +1 -0
- package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/vault/index.js +1 -1
- package/lib/esm/secrets/vault/index.js.map +1 -0
- package/lib/esm/sftp/aws/AwsSftpEnvironment.js +1 -1
- package/lib/esm/sftp/aws/AwsSftpEnvironment.js.map +1 -0
- package/lib/esm/sftp/aws/AwsSftpService.js +1 -1
- package/lib/esm/sftp/aws/AwsSftpService.js.map +1 -0
- package/lib/esm/sftp/aws/index.js +1 -1
- package/lib/esm/sftp/aws/index.js.map +1 -0
- package/lib/esm/sftp/core/SftpEnvironment.js +1 -1
- package/lib/esm/sftp/core/SftpEnvironment.js.map +1 -0
- package/lib/esm/sftp/core/SftpSource.js +1 -1
- package/lib/esm/sftp/core/SftpSource.js.map +1 -0
- package/lib/esm/sftp/core/index.js +1 -1
- package/lib/esm/sftp/core/index.js.map +1 -0
- package/lib/esm/sftp/index.js +1 -1
- package/lib/esm/sftp/index.js.map +1 -0
- package/lib/esm/sftp/ssh2/Ssh2SftpEnvironment.js +1 -1
- package/lib/esm/sftp/ssh2/Ssh2SftpEnvironment.js.map +1 -0
- package/lib/esm/sftp/ssh2/Ssh2SftpService.js +1 -1
- package/lib/esm/sftp/ssh2/Ssh2SftpService.js.map +1 -0
- package/lib/esm/sftp/ssh2/index.js +1 -1
- package/lib/esm/sftp/ssh2/index.js.map +1 -0
- package/lib/esm/shared/environmentValue.js +1 -1
- package/lib/esm/shared/environmentValue.js.map +1 -0
- package/lib/esm/shared/http/HttpApiService.js +1 -1
- package/lib/esm/shared/http/HttpApiService.js.map +1 -0
- package/lib/esm/shared/http/hermeticBoot.js +1 -1
- package/lib/esm/shared/http/hermeticBoot.js.map +1 -0
- package/lib/esm/shared/http/index.js +1 -1
- package/lib/esm/shared/http/index.js.map +1 -0
- package/lib/esm/shared/runtime.js +1 -1
- package/lib/esm/shared/runtime.js.map +1 -0
- package/lib/esm/user-requests/index.js +1 -1
- package/lib/esm/user-requests/index.js.map +1 -0
- package/lib/esm/utils.js +1 -1
- package/lib/esm/utils.js.map +1 -0
- package/lib/types/index.d.cts +2 -2
- package/lib/types/index.d.mts +2 -2
- package/package.json +74 -50
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis/RedisPaginator.cjs","sourceRoot":"","sources":["redis/RedisPaginator.js"],"names":[],"mappings":";;;AAAA,yCAA4C;AAC5C,yEAAuD;AACvD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAa,cAAe,SAAQ,gBAAS;IACzC;;;;;;OAMG;IACH,YAAY,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;QACnC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IACD;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;QAChB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAC9C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI;QACxB,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACzC,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC/F,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YACzD,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,SAAS,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;gBAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;gBACvD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;aACI,CAAC;YACF,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC/B,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YACxC,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM;YAC3B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,4BAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnD,CAAC,CAAC,SAAS,CAAC;QAChB,OAAO,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC;IACnC,CAAC;CACJ;AA3DD,wCA2DC;AACD,0CAA0C"}
|
|
@@ -429,5 +429,5 @@ class RedisStatement extends core_1.Statement {
|
|
|
429
429
|
}
|
|
430
430
|
}
|
|
431
431
|
exports.RedisStatement = RedisStatement;
|
|
432
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVkaXNTdGF0ZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVkaXMvUmVkaXNTdGF0ZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxhQUFhLEVBQ2IsUUFBUSxFQUNSLGNBQWMsRUFDZCxVQUFVLEVBRVYsU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBZSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQU0sT0FBTyxjQUlYLFNBQVEsU0FBc0M7SUFDOUM7Ozs7T0FJRztJQUNILFlBQVksT0FBVSxFQUFFLFNBQWlDO1FBQ3ZELEtBQUssQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssT0FBTztRQUNiLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUN4QyxPQUFPLENBQUMsR0FBVSxFQUFFLEdBQVUsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtnQkFDakMsTUFBTSxJQUFJLGFBQWEsQ0FDckIsZ0RBQWdELENBQ2pELENBQUM7WUFDSixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUM1RCxNQUFNLGVBQWUsR0FDbkIsbUJBQW1CLEtBQUssY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEQsTUFB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QyxDQUFDO2dCQUNwRCxNQUFNLElBQUksVUFBVSxDQUNsQixHQUFHLE9BQU8seUJBQXlCLFFBQVEsMkJBQTJCLENBQ3ZFLENBQUM7WUFDSjtnQkFDRSxNQUFNLElBQUksVUFBVSxDQUNsQixHQUFHLE9BQU8sc0JBQXNCLFFBQVEsb0JBQW9CLFFBQVEsR0FBRyxDQUN4RSxDQUFDO1FBQ04sQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFkYXB0ZXIsXG4gIEFkYXB0ZXJGbGFncyxcbiAgQ29uZGl0aW9uLFxuICBHcm91cE9wZXJhdG9yLFxuICBPcGVyYXRvcixcbiAgT3JkZXJEaXJlY3Rpb24sXG4gIFF1ZXJ5RXJyb3IsXG4gIFNlbGVjdFNlbGVjdG9yLFxuICBTdGF0ZW1lbnQsXG59IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgUmVkaXNDb250ZXh0LCBSYXdSZWRpc1F1ZXJ5IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IsIE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlZGlzLXNwZWNpZmljIHF1ZXJ5IHN0YXRlbWVudCBidWlsZGVyXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBiYXNlIFN0YXRlbWVudCBjbGFzcyB0byBwcm92aWRlIHF1ZXJ5IGJ1aWxkaW5nIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZSBSZWRpcyBhZGFwdGVyLlxuICogVGhpcyBjbGFzcyB0cmFuc2xhdGVzIGhpZ2gtbGV2ZWwgcXVlcnkgb3BlcmF0aW9ucyBpbnRvIHByZWRpY2F0ZXMgdGhhdCBjYW4gZmlsdGVyIGFuZCBzb3J0XG4gKiBpbi1tZW1vcnkgZGF0YSBzdHJ1Y3R1cmVzIChyZWNvcmRzIHJldmVydGVkIGZyb20gdGhlIHRhYmxlIGhhc2gpLlxuICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSBiZWluZyBxdWVyaWVkXG4gKiBAdGVtcGxhdGUgUiAtIFRoZSByZXN1bHQgdHlwZSByZXR1cm5lZCBieSB0aGUgcXVlcnlcbiAqIEBjbGFzcyBSZWRpc1N0YXRlbWVudFxuICogQGNhdGVnb3J5IFJlZGlzXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ3JlYXRlIGEgc3RhdGVtZW50IGZvciBxdWVyeWluZyBVc2VyIG1vZGVsc1xuICogY29uc3Qgc3RhdGVtZW50ID0gcmVkaXNBZGFwdGVyLlN0YXRlbWVudDxVc2VyPigpO1xuICpcbiAqIC8vIEJ1aWxkIGEgcXVlcnkgdG8gZmluZCBhY3RpdmUgdXNlcnMgd2l0aCBhZ2UgPiAxOFxuICogY29uc3QgcmVzdWx0cyA9IGF3YWl0IHN0YXRlbWVudFxuICogICAuZnJvbShVc2VyKVxuICogICAud2hlcmUoQ29uZGl0aW9uLmFuZChcbiAqICAgICBDb25kaXRpb24uZXEoJ2FjdGl2ZScsIHRydWUpLFxuICogICAgIENvbmRpdGlvbi5ndCgnYWdlJywgMTgpXG4gKiAgICkpXG4gKiAgIC5vcmRlckJ5KCdsYXN0TmFtZScsICdhc2MnKVxuICogICAubGltaXQoMTApXG4gKiAgIC5leGVjdXRlKCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFJlZGlzU3RhdGVtZW50PFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIsXG4gIEEgZXh0ZW5kcyBBZGFwdGVyPE0sIGFueSwgUmF3UmVkaXNRdWVyeTxhbnk+LCBSZWRpc0NvbnRleHQ+LFxuPiBleHRlbmRzIFN0YXRlbWVudDxNLCBBLCBSLCBSYXdSZWRpc1F1ZXJ5PGFueT4+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgc3RhdGVtZW50IGJvdW5kIHRvIHRoZSBSZWRpcyBhZGFwdGVyXG4gICAqIEBwYXJhbSB7QX0gYWRhcHRlciAtIFRoZSBSZWRpcyBhZGFwdGVyIGluc3RhbmNlIHRvIHVzZSBmb3IgZXhlY3V0aW5nIHF1ZXJpZXNcbiAgICogQHBhcmFtIHtQYXJ0aWFsPEFkYXB0ZXJGbGFncz59IFtvdmVycmlkZXNdIC0gT3B0aW9uYWwgYWRhcHRlciBmbGFnIG92ZXJyaWRlc1xuICAgKi9cbiAgY29uc3RydWN0b3IoYWRhcHRlcjogQSwgb3ZlcnJpZGVzPzogUGFydGlhbDxBZGFwdGVyRmxhZ3M+KSB7XG4gICAgc3VwZXIoYWRhcHRlciwgb3ZlcnJpZGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIHNvcnQgY29tcGFyYXRvciBmdW5jdGlvblxuICAgKiBAc3VtbWFyeSBHZW5lcmF0ZXMgYSBmdW5jdGlvbiB0aGF0IGNvbXBhcmVzIHR3byBtb2RlbCBpbnN0YW5jZXMgYmFzZWQgb24gdGhlIG9yZGVyQnkgY3JpdGVyaWEuXG4gICAqIFRoaXMgbWV0aG9kIGhhbmRsZXMgZGlmZmVyZW50IGRhdGEgdHlwZXMgKHN0cmluZywgbnVtYmVyLCBkYXRlKSBhbmQgc29ydCBkaXJlY3Rpb25zIChhc2MsIGRlc2MpLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbihNb2RlbCwgTW9kZWwpOiBudW1iZXJ9IEEgY29tcGFyYXRvciBmdW5jdGlvbiBmb3Igc29ydGluZyBtb2RlbCBpbnN0YW5jZXNcbiAgICovXG4gIHByaXZhdGUgZ2V0U29ydCgpIHtcbiAgICBjb25zdCBzZWxlY3RvcnMgPSB0aGlzLm9yZGVyQnlTZWxlY3RvcnM7XG4gICAgcmV0dXJuIChlbDE6IE1vZGVsLCBlbDI6IE1vZGVsKSA9PiB7XG4gICAgICBpZiAoIXNlbGVjdG9ycyB8fCAhc2VsZWN0b3JzLmxlbmd0aClcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgXCJvcmRlckJ5U2VsZWN0b3JzIG5vdCBzZXQuIFNob3VsZCBiZSBpbXBvc3NpYmxlXCJcbiAgICAgICAgKTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgZGlyZWN0aW9uXSBvZiBzZWxlY3RvcnMpIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZERpcmVjdGlvbiA9IFN0cmluZyhkaXJlY3Rpb24pLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbkZhY3RvciA9XG4gICAgICAgICAgbm9ybWFsaXplZERpcmVjdGlvbiA9PT0gT3JkZXJEaXJlY3Rpb24uQVNDID8gMSA6IC0xO1xuICAgICAgICBjb25zdCBjb21wYXJpc29uID0gdGhpcy5jb21wYXJlQnlLZXkoZWwxLCBlbDIsIGtleSBhcyBrZXlvZiBNb2RlbCk7XG4gICAgICAgIGlmIChjb21wYXJpc29uICE9PSAwKSByZXR1cm4gZGlyZWN0aW9uRmFjdG9yICogY29tcGFyaXNvbjtcbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbXBhcmVzIHR3byBtb2RlbHMgYnkgYSBzaW5nbGUgYXR0cmlidXRlXG4gICAqIEBzdW1tYXJ5IFJlc29sdmVzIHRoZSBhdHRyaWJ1dGUncyBkZXNpZ24gdHlwZSBhbmQgZGVsZWdhdGVzIHRvIHRoZSBtYXRjaGluZ1xuICAgKiB0eXBlLXNwZWNpZmljIGNvbXBhcmF0b3IuXG4gICAqIEBwYXJhbSB7TW9kZWx9IGVsMSAtIFRoZSBmaXJzdCBtb2RlbCBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge01vZGVsfSBlbDIgLSBUaGUgc2Vjb25kIG1vZGVsIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7a2V5b2YgTW9kZWx9IGtleSAtIFRoZSBhdHRyaWJ1dGUgdG8gY29tcGFyZVxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IEEgbmVnYXRpdmUgbnVtYmVyLCB6ZXJvIG9yIGEgcG9zaXRpdmUgbnVtYmVyIGFzIHBlciB0aGUgY29tcGFyaXNvblxuICAgKi9cbiAgcHJpdmF0ZSBjb21wYXJlQnlLZXkoZWwxOiBNb2RlbCwgZWwyOiBNb2RlbCwga2V5OiBrZXlvZiBNb2RlbCk6IG51bWJlciB7XG4gICAgY29uc3QgdmFsdWUxID0gZWwxW2tleV07XG4gICAgY29uc3QgdmFsdWUyID0gZWwyW2tleV07XG5cbiAgICBpZiAodmFsdWUxID09PSB2YWx1ZTIpIHJldHVybiAwO1xuXG4gICAgaWYgKHZhbHVlMSA9PSBudWxsIHx8IHZhbHVlMiA9PSBudWxsKSByZXR1cm4gdmFsdWUxID09IG51bGwgPyAxIDogLTE7XG5cbiAgICBjb25zdCB7IGRlc2lnblR5cGU6IHR5cGUgfSA9IE1ldGFkYXRhLmdldFByb3BEZXNpZ25UeXBlcyhcbiAgICAgIGVsMS5jb25zdHJ1Y3RvciBhcyBhbnksXG4gICAgICBrZXkgYXMgc3RyaW5nXG4gICAgKTtcbiAgICBjb25zdCByZXNvbHZlZFR5cGUgPVxuICAgICAgKHR5cGUgJiYgdHlwZS5uYW1lICYmIHR5cGUubmFtZS50b0xvd2VyQ2FzZSgpKSB8fCB0eXBlb2YgdmFsdWUxO1xuXG4gICAgc3dpdGNoIChyZXNvbHZlZFR5cGUpIHtcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZVN0cmluZ3MoXG4gICAgICAgICAgdmFsdWUxIGFzIHVua25vd24gYXMgc3RyaW5nLFxuICAgICAgICAgIHZhbHVlMiBhcyB1bmtub3duIGFzIHN0cmluZ1xuICAgICAgICApO1xuICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlTnVtYmVycyhcbiAgICAgICAgICB2YWx1ZTEgYXMgdW5rbm93biBhcyBudW1iZXIsXG4gICAgICAgICAgdmFsdWUyIGFzIHVua25vd24gYXMgbnVtYmVyXG4gICAgICAgICk7XG4gICAgICBjYXNlIFwiYmlnaW50XCI6XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVCaWdJbnRzKFxuICAgICAgICAgIHZhbHVlMSBhcyB1bmtub3duIGFzIGJpZ2ludCxcbiAgICAgICAgICB2YWx1ZTIgYXMgdW5rbm93biBhcyBiaWdpbnRcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVCb29sZWFucyhcbiAgICAgICAgICB2YWx1ZTEgYXMgdW5rbm93biBhcyBib29sZWFuLFxuICAgICAgICAgIHZhbHVlMiBhcyB1bmtub3duIGFzIGJvb2xlYW5cbiAgICAgICAgKTtcbiAgICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgIGlmICh2YWx1ZTEgaW5zdGFuY2VvZiBEYXRlICYmIHZhbHVlMiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlRGF0ZXModmFsdWUxIGFzIERhdGUsIHZhbHVlMiBhcyBEYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGBzb3J0aW5nIG5vdCBzdXBwb3J0ZWQgZm9yIHR5cGUgJHtyZXNvbHZlZFR5cGV9YCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbXBhcmVzIHR3byBib29sZWFuIHZhbHVlc1xuICAgKiBAcmV0dXJuIHtudW1iZXJ9IDAgd2hlbiBlcXVhbCwgMSB3aGVuIGBhYCBpcyB0cnVlLCAtMSBvdGhlcndpc2VcbiAgICovXG4gIHByaXZhdGUgY29tcGFyZUJvb2xlYW5zKGE6IGJvb2xlYW4sIGI6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPyAxIDogLTE7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbXBhcmVzIHR3byBudW1lcmljIHZhbHVlc1xuICAgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBudW1lcmljIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdmFsdWVzXG4gICAqL1xuICBwcml2YXRlIGNvbXBhcmVOdW1iZXJzKGE6IG51bWJlciwgYjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gYSAtIGI7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbXBhcmVzIHR3byBiaWdpbnQgdmFsdWVzXG4gICAqIEByZXR1cm4ge251bWJlcn0gMCB3aGVuIGVxdWFsLCAxIHdoZW4gYGFgIGlzIGdyZWF0ZXIsIC0xIG90aGVyd2lzZVxuICAgKi9cbiAgcHJpdmF0ZSBjb21wYXJlQmlnSW50cyhhOiBiaWdpbnQsIGI6IGJpZ2ludCk6IG51bWJlciB7XG4gICAgaWYgKGEgPT09IGIpIHJldHVybiAwO1xuICAgIHJldHVybiBhID4gYiA/IDEgOiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29tcGFyZXMgdHdvIHN0cmluZ3MgdXNpbmcgbG9jYWxlLWF3YXJlIG9yZGVyaW5nXG4gICAqIEByZXR1cm4ge251bWJlcn0gVGhlIGxvY2FsZSBjb21wYXJlIHJlc3VsdCBiZXR3ZWVuIHRoZSB2YWx1ZXNcbiAgICovXG4gIHByaXZhdGUgY29tcGFyZVN0cmluZ3MoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiBhLmxvY2FsZUNvbXBhcmUoYik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbXBhcmVzIHR3byBkYXRlcyBieSB0aGVpciBlcG9jaCB0aW1lc3RhbXBzXG4gICAqIEByZXR1cm4ge251bWJlcn0gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdGltZXN0YW1wc1xuICAgKi9cbiAgcHJpdmF0ZSBjb21wYXJlRGF0ZXMoYTogRGF0ZSwgYjogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGEudmFsdWVPZigpIC0gYi52YWx1ZU9mKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEJ1aWxkcyBhIFJlZGlzIHF1ZXJ5IGZyb20gdGhlIHN0YXRlbWVudFxuICAgKiBAc3VtbWFyeSBDb252ZXJ0cyB0aGUgc3RhdGVtZW50J3Mgc2VsZWN0b3JzIGFuZCBjb25kaXRpb25zIGludG8gYSBSYXdSZWRpc1F1ZXJ5IG9iamVjdFxuICAgKiB0aGF0IGNhbiBiZSBleGVjdXRlZCBieSB0aGUgUmVkaXMgYWRhcHRlci4gVGhpcyBtZXRob2QgYXNzZW1ibGVzIGFsbCBxdWVyeSBjb21wb25lbnRzXG4gICAqIChzZWxlY3QsIGZyb20sIHdoZXJlLCBsaW1pdCwgb2Zmc2V0LCBzb3J0KSBpbnRvIHRoZSBmaW5hbCBxdWVyeSBzdHJ1Y3R1cmUuXG4gICAqIEByZXR1cm4ge1Jhd1JlZGlzUXVlcnk8TT59IFRoZSBjb25zdHJ1Y3RlZCBSZWRpcyBxdWVyeSBvYmplY3RcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZCgpOiBSYXdSZWRpc1F1ZXJ5PGFueT4ge1xuICAgIGlmICh0aGlzLm1pblNlbGVjdG9yKVxuICAgICAgdGhpcy5lbnN1cmVOdW1iZXJPckRhdGVTZWxlY3Rvcih0aGlzLm1pblNlbGVjdG9yLCBcIk1JTiBvcGVyYXRpb25cIik7XG4gICAgaWYgKHRoaXMubWF4U2VsZWN0b3IpXG4gICAgICB0aGlzLmVuc3VyZU51bWJlck9yRGF0ZVNlbGVjdG9yKHRoaXMubWF4U2VsZWN0b3IsIFwiTUFYIG9wZXJhdGlvblwiKTtcbiAgICBpZiAodGhpcy5zdW1TZWxlY3RvcilcbiAgICAgIHRoaXMuZW5zdXJlTnVtZXJpY1NlbGVjdG9yKHRoaXMuc3VtU2VsZWN0b3IsIFwiU1VNIG9wZXJhdGlvblwiKTtcbiAgICBpZiAodGhpcy5hdmdTZWxlY3RvcilcbiAgICAgIHRoaXMuZW5zdXJlTnVtYmVyT3JEYXRlU2VsZWN0b3IodGhpcy5hdmdTZWxlY3RvciwgXCJBVkcgb3BlcmF0aW9uXCIpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBSYXdSZWRpc1F1ZXJ5PE0+ID0ge1xuICAgICAgc2VsZWN0OiB0aGlzLnNlbGVjdFNlbGVjdG9yLFxuICAgICAgZnJvbTogdGhpcy5mcm9tU2VsZWN0b3IsXG4gICAgICB3aGVyZTogdGhpcy53aGVyZUNvbmRpdGlvblxuICAgICAgICA/IHRoaXMucGFyc2VDb25kaXRpb24odGhpcy53aGVyZUNvbmRpdGlvbikud2hlcmVcbiAgICAgICAgOiAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgKGVsOiBNKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9LFxuICAgICAgbGltaXQ6IHRoaXMubGltaXRTZWxlY3RvcixcbiAgICAgIHNraXA6IHRoaXMub2Zmc2V0U2VsZWN0b3IsXG4gICAgICBncm91cEJ5OiB0aGlzLmdyb3VwQnlTZWxlY3RvcnMsXG4gICAgfTtcblxuICAgIGlmICh0eXBlb2YgdGhpcy5jb3VudFNlbGVjdG9yICE9PSBcInVuZGVmaW5lZFwiKSByZXN1bHQuY291bnQgPSB0aGlzLmNvdW50U2VsZWN0b3I7XG4gICAgaWYgKHRoaXMuY291bnREaXN0aW5jdFNlbGVjdG9yKSByZXN1bHQuY291bnREaXN0aW5jdCA9IHRoaXMuY291bnREaXN0aW5jdFNlbGVjdG9yO1xuICAgIGlmICh0aGlzLm1pblNlbGVjdG9yKSByZXN1bHQubWluID0gdGhpcy5taW5TZWxlY3RvcjtcbiAgICBpZiAodGhpcy5tYXhTZWxlY3RvcikgcmVzdWx0Lm1heCA9IHRoaXMubWF4U2VsZWN0b3I7XG4gICAgaWYgKHRoaXMuc3VtU2VsZWN0b3IpIHJlc3VsdC5zdW0gPSB0aGlzLnN1bVNlbGVjdG9yO1xuICAgIGlmICh0aGlzLmF2Z1NlbGVjdG9yKSByZXN1bHQuYXZnID0gdGhpcy5hdmdTZWxlY3RvcjtcbiAgICBpZiAodGhpcy5kaXN0aW5jdFNlbGVjdG9yKSByZXN1bHQuZGlzdGluY3QgPSB0aGlzLmRpc3RpbmN0U2VsZWN0b3I7XG4gICAgaWYgKHRoaXMub3JkZXJCeVNlbGVjdG9ycz8ubGVuZ3RoKSByZXN1bHQuc29ydCA9IHRoaXMuZ2V0U29ydCgpO1xuICAgIHJldHVybiByZXN1bHQgYXMgUmF3UmVkaXNRdWVyeTxhbnk+O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJzZXMgYSBjb25kaXRpb24gaW50byBhIFJlZGlzIHF1ZXJ5IHByZWRpY2F0ZVxuICAgKiBAc3VtbWFyeSBDb252ZXJ0cyBhIENvbmRpdGlvbiBvYmplY3QgaW50byBhIHByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkXG4gICAqIHRvIGZpbHRlciBtb2RlbCBpbnN0YW5jZXMgaW4gbWVtb3J5LiBUaGlzIG1ldGhvZCBoYW5kbGVzIGJvdGggc2ltcGxlIGNvbmRpdGlvbnNcbiAgICogKGVxdWFscywgZ3JlYXRlciB0aGFuLCBldGMuKSBhbmQgY29tcGxleCBjb25kaXRpb25zIHdpdGggbG9naWNhbCBvcGVyYXRvcnMgKEFORCwgT1IpLlxuICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIGZvciB0aGUgY29uZGl0aW9uXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9uPE0+fSBjb25kaXRpb24gLSBUaGUgY29uZGl0aW9uIHRvIHBhcnNlXG4gICAqIEByZXR1cm4ge1Jhd1JlZGlzUXVlcnk8TT59IEEgUmVkaXMgcXVlcnkgb2JqZWN0IHdpdGggYSB3aGVyZSBwcmVkaWNhdGUgZnVuY3Rpb25cbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gICAqICAgcGFydGljaXBhbnQgUmVkaXNTdGF0ZW1lbnRcbiAgICogICBwYXJ0aWNpcGFudCBTaW1wbGVDb25kaXRpb25cbiAgICogICBwYXJ0aWNpcGFudCBDb21wbGV4Q29uZGl0aW9uXG4gICAqXG4gICAqICAgQ2FsbGVyLT4+UmVkaXNTdGF0ZW1lbnQ6IHBhcnNlQ29uZGl0aW9uKGNvbmRpdGlvbilcbiAgICogICBhbHQgU2ltcGxlIGNvbmRpdGlvbiAoZXEsIGd0LCBsdCwgZXRjLilcbiAgICogICAgIFJlZGlzU3RhdGVtZW50LT4+U2ltcGxlQ29uZGl0aW9uOiBFeHRyYWN0IGF0dHIxLCBvcGVyYXRvciwgY29tcGFyaXNvblxuICAgKiAgICAgU2ltcGxlQ29uZGl0aW9uLS0+PlJlZGlzU3RhdGVtZW50OiBSZXR1cm4gcHJlZGljYXRlIGZ1bmN0aW9uXG4gICAqICAgZWxzZSBMb2dpY2FsIG9wZXJhdG9yIChBTkQsIE9SKVxuICAgKiAgICAgUmVkaXNTdGF0ZW1lbnQtPj5Db21wbGV4Q29uZGl0aW9uOiBFeHRyYWN0IG5lc3RlZCBjb25kaXRpb25zXG4gICAqICAgICBSZWRpc1N0YXRlbWVudC0+PlJlZGlzU3RhdGVtZW50OiBwYXJzZUNvbmRpdGlvbihsZWZ0Q29uZGl0aW9uKVxuICAgKiAgICAgUmVkaXNTdGF0ZW1lbnQtPj5SZWRpc1N0YXRlbWVudDogcGFyc2VDb25kaXRpb24ocmlnaHRDb25kaXRpb24pXG4gICAqICAgICBDb21wbGV4Q29uZGl0aW9uLS0+PlJlZGlzU3RhdGVtZW50OiBDb21iaW5lIHByZWRpY2F0ZXMgd2l0aCBsb2dpY2FsIG9wZXJhdG9yXG4gICAqICAgZW5kXG4gICAqICAgUmVkaXNTdGF0ZW1lbnQtLT4+Q2FsbGVyOiBSZXR1cm4gcXVlcnkgd2l0aCB3aGVyZSBwcmVkaWNhdGVcbiAgICovXG4gIHByb3RlY3RlZCBwYXJzZUNvbmRpdGlvbihjb25kaXRpb246IENvbmRpdGlvbjxNPik6IFJhd1JlZGlzUXVlcnk8YW55PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdoZXJlOiAobTogTW9kZWwpID0+IHtcbiAgICAgICAgY29uc3QgeyBhdHRyMSwgb3BlcmF0b3IsIGNvbXBhcmlzb24gfSA9IGNvbmRpdGlvbiBhcyB1bmtub3duIGFzIHtcbiAgICAgICAgICBhdHRyMTogc3RyaW5nIHwgQ29uZGl0aW9uPE0+O1xuICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvciB8IEdyb3VwT3BlcmF0b3I7XG4gICAgICAgICAgY29tcGFyaXNvbjogYW55O1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBbR3JvdXBPcGVyYXRvci5BTkQsIEdyb3VwT3BlcmF0b3IuT1IsIE9wZXJhdG9yLk5PVF0uaW5kZXhPZihcbiAgICAgICAgICAgIG9wZXJhdG9yIGFzIEdyb3VwT3BlcmF0b3JcbiAgICAgICAgICApID09PSAtMVxuICAgICAgICApIHtcbiAgICAgICAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkJJR0dFUjpcbiAgICAgICAgICAgICAgcmV0dXJuIG1bYXR0cjEgYXMga2V5b2YgTW9kZWxdID4gY29tcGFyaXNvbjtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuQklHR0VSX0VROlxuICAgICAgICAgICAgICByZXR1cm4gbVthdHRyMSBhcyBrZXlvZiBNb2RlbF0gPj0gY29tcGFyaXNvbjtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuRElGRkVSRU5UOlxuICAgICAgICAgICAgICByZXR1cm4gbVthdHRyMSBhcyBrZXlvZiBNb2RlbF0gIT09IGNvbXBhcmlzb247XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkVRVUFMOlxuICAgICAgICAgICAgICByZXR1cm4gbVthdHRyMSBhcyBrZXlvZiBNb2RlbF0gPT09IGNvbXBhcmlzb247XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9yLlJFR0VYUDpcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtW2F0dHIxIGFzIGtleW9mIE1vZGVsXSAhPT0gXCJzdHJpbmdcIilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBJbnZhbGlkIHJlZ2V4cCBjb21wYXJpc29uIG9uIGEgbm9uIHN0cmluZyBhdHRyaWJ1dGU6ICR7bVthdHRyMSBhcyBrZXlvZiBNb2RlbF19YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiAhIShtW2F0dHIxIGFzIGtleW9mIE1vZGVsXSBhcyB1bmtub3duIGFzIHN0cmluZykubWF0Y2goXG4gICAgICAgICAgICAgICAgbmV3IFJlZ0V4cChjb21wYXJpc29uLCBcImdcIilcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuU1RBUlRTX1dJVEg6IHtcbiAgICAgICAgICAgICAgY29uc3QgYXR0ciA9IGF0dHIxIGFzIGtleW9mIE1vZGVsO1xuICAgICAgICAgICAgICBjb25zdCBhdHRyTmFtZSA9IGF0dHIgYXMgc3RyaW5nO1xuICAgICAgICAgICAgICBjb25zdCBhdHRyVmFsdWUgPSBtW2F0dHJdIGFzIHVua25vd247XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgYXR0clZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgICAgICAgICAgICBgSW52YWxpZCBzdGFydHNXaXRoIGNvbXBhcmlzb24gb24gYSBub24gc3RyaW5nIGF0dHJpYnV0ZSBcIiR7YXR0ck5hbWV9XCJgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbXBhcmlzb24gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBTVEFSVFNfV0lUSCBvcGVyYXRvciByZXF1aXJlcyBhIHN0cmluZyBjb21wYXJpc29uLCBnb3QgJHt0eXBlb2YgY29tcGFyaXNvbn1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gKGF0dHJWYWx1ZSBhcyBzdHJpbmcpLnN0YXJ0c1dpdGgoY29tcGFyaXNvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkVORFNfV0lUSDoge1xuICAgICAgICAgICAgICBjb25zdCBhdHRyID0gYXR0cjEgYXMga2V5b2YgTW9kZWw7XG4gICAgICAgICAgICAgIGNvbnN0IGF0dHJOYW1lID0gYXR0ciBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgIGNvbnN0IGF0dHJWYWx1ZSA9IG1bYXR0cl0gYXMgdW5rbm93bjtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhdHRyVmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBJbnZhbGlkIGVuZHNXaXRoIGNvbXBhcmlzb24gb24gYSBub24gc3RyaW5nIGF0dHJpYnV0ZSBcIiR7YXR0ck5hbWV9XCJgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbXBhcmlzb24gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBFTkRTX1dJVEggb3BlcmF0b3IgcmVxdWlyZXMgYSBzdHJpbmcgY29tcGFyaXNvbiwgZ290ICR7dHlwZW9mIGNvbXBhcmlzb259YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIChhdHRyVmFsdWUgYXMgc3RyaW5nKS5lbmRzV2l0aChjb21wYXJpc29uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuU01BTExFUjpcbiAgICAgICAgICAgICAgcmV0dXJuIG1bYXR0cjEgYXMga2V5b2YgTW9kZWxdIDwgY29tcGFyaXNvbjtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuU01BTExFUl9FUTpcbiAgICAgICAgICAgICAgcmV0dXJuIG1bYXR0cjEgYXMga2V5b2YgTW9kZWxdIDw9IGNvbXBhcmlzb247XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9yLklOOlxuICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29tcGFyaXNvbikpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgICAgICAgICAgICBgSU4gb3BlcmF0b3IgcmVxdWlyZXMgYW4gYXJyYXksIGdvdDogJHt0eXBlb2YgY29tcGFyaXNvbn1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmlzb24uaW5jbHVkZXMobVthdHRyMSBhcyBrZXlvZiBNb2RlbF0pO1xuICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5CRVRXRUVOOiB7XG4gICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb21wYXJpc29uKSB8fCBjb21wYXJpc29uLmxlbmd0aCAhPT0gMilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBCRVRXRUVOIG9wZXJhdG9yIHJlcXVpcmVzIGFuIGFycmF5IHdpdGggMiB2YWx1ZXMgW21pbiwgbWF4XSwgZ290OiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgICAgICBjb21wYXJpc29uXG4gICAgICAgICAgICAgICAgICApfWBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb25zdCBhdHRyID0gYXR0cjEgYXMga2V5b2YgTW9kZWw7XG4gICAgICAgICAgICAgIGNvbnN0IGF0dHJOYW1lID0gYXR0ciBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgIGNvbnN0IGF0dHJUeXBlID0gdGhpcy5kZXRlcm1pbmVBdHRyaWJ1dGVUeXBlKFxuICAgICAgICAgICAgICAgIG0uY29uc3RydWN0b3IgYXMgQ29uc3RydWN0b3I8TW9kZWw+LFxuICAgICAgICAgICAgICAgIGF0dHJOYW1lLFxuICAgICAgICAgICAgICAgIFwiQkVUV0VFTlwiXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmICghdGhpcy5pc051bWVyaWNUeXBlKGF0dHJUeXBlKSAmJiBhdHRyVHlwZSAhPT0gXCJkYXRlXCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBCRVRXRUVOIG9wZXJhdG9yIHJlcXVpcmVzIG51bWVyaWMgb3IgZGF0ZSBhdHRyaWJ1dGVzLCBidXQgXCIke2F0dHJOYW1lfVwiIGlzICR7YXR0clR5cGUgfHxcbiAgICAgICAgICAgICAgICAgICAgXCJ1bmtub3duXCJ9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgW21pbiwgbWF4XSA9IGNvbXBhcmlzb247XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbVthdHRyXTtcbiAgICAgICAgICAgICAgY29uc3QgY29tcGFyYWJsZVZhbHVlID0gdGhpcy50b0NvbXBhcmFibGVWYWx1ZShcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICBhdHRyVHlwZSxcbiAgICAgICAgICAgICAgICBhdHRyTmFtZSxcbiAgICAgICAgICAgICAgICBcIkJFVFdFRU5cIixcbiAgICAgICAgICAgICAgICB7IGFsbG93TnVsbDogdHJ1ZSB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmIChjb21wYXJhYmxlVmFsdWUgPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgY29uc3QgbWluQ29tcGFyYWJsZSA9IHRoaXMudG9Db21wYXJhYmxlVmFsdWUoXG4gICAgICAgICAgICAgICAgbWluLFxuICAgICAgICAgICAgICAgIGF0dHJUeXBlLFxuICAgICAgICAgICAgICAgIGF0dHJOYW1lLFxuICAgICAgICAgICAgICAgIFwiQkVUV0VFTiBtaW5cIlxuICAgICAgICAgICAgICApITtcbiAgICAgICAgICAgICAgY29uc3QgbWF4Q29tcGFyYWJsZSA9IHRoaXMudG9Db21wYXJhYmxlVmFsdWUoXG4gICAgICAgICAgICAgICAgbWF4LFxuICAgICAgICAgICAgICAgIGF0dHJUeXBlLFxuICAgICAgICAgICAgICAgIGF0dHJOYW1lLFxuICAgICAgICAgICAgICAgIFwiQkVUV0VFTiBtYXhcIlxuICAgICAgICAgICAgICApITtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBjb21wYXJhYmxlVmFsdWUgPj0gbWluQ29tcGFyYWJsZSAmJiBjb21wYXJhYmxlVmFsdWUgPD0gbWF4Q29tcGFyYWJsZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5FWElTVFM6IHtcbiAgICAgICAgICAgICAgY29uc3QgcHJlc2VudCA9XG4gICAgICAgICAgICAgICAgbVthdHRyMSBhcyBrZXlvZiBNb2RlbF0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgIG1bYXR0cjEgYXMga2V5b2YgTW9kZWxdICE9PSBudWxsO1xuICAgICAgICAgICAgICByZXR1cm4gY29tcGFyaXNvbiA9PT0gZmFsc2UgPyAhcHJlc2VudCA6IHByZXNlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICAgICBgSW52YWxpZCBvcGVyYXRvciBmb3Igc3RhbmRhcmQgY29tcGFyaXNvbnM6ICR7b3BlcmF0b3J9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRvciA9PT0gT3BlcmF0b3IuTk9UKSB7XG4gICAgICAgICAgaWYgKCEoYXR0cjEgaW5zdGFuY2VvZiBDb25kaXRpb24pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICAgXCJOT1Qgb3BlcmF0b3IgcmVxdWlyZXMgYSBuZXN0ZWQgY29uZGl0aW9uIHRvIG5lZ2F0ZVwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuZXN0ZWQgPSB0aGlzLnBhcnNlQ29uZGl0aW9uKGF0dHIxIGFzIENvbmRpdGlvbjxNPik7XG4gICAgICAgICAgcmV0dXJuICFuZXN0ZWQud2hlcmUobSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgb3AxOiBSYXdSZWRpc1F1ZXJ5PGFueT4gPSB0aGlzLnBhcnNlQ29uZGl0aW9uKFxuICAgICAgICAgICAgYXR0cjEgYXMgQ29uZGl0aW9uPE0+XG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBvcDI6IFJhd1JlZGlzUXVlcnk8YW55PiA9IHRoaXMucGFyc2VDb25kaXRpb24oXG4gICAgICAgICAgICBjb21wYXJpc29uIGFzIENvbmRpdGlvbjxNPlxuICAgICAgICAgICk7XG4gICAgICAgICAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgICAgICAgICAgY2FzZSBHcm91cE9wZXJhdG9yLkFORDpcbiAgICAgICAgICAgICAgcmV0dXJuIG9wMS53aGVyZShtKSAmJiBvcDIud2hlcmUobSk7XG4gICAgICAgICAgICBjYXNlIEdyb3VwT3BlcmF0b3IuT1I6XG4gICAgICAgICAgICAgIHJldHVybiBvcDEud2hlcmUobSkgfHwgb3AyLndoZXJlKG0pO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICAgICAgYEludmFsaWQgb3BlcmF0b3IgZm9yIEFuZC9PciBjb21wYXJpc29uczogJHtvcGVyYXRvcn1gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0gYXMgUmF3UmVkaXNRdWVyeTxhbnk+O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0ZXMgdGhhdCBhbiBhZ2dyZWdhdGlvbiBzZWxlY3RvciB0YXJnZXRzIGEgbnVtZXJpYyBhdHRyaWJ1dGVcbiAgICogQHBhcmFtIHtTZWxlY3RTZWxlY3RvcjxNPn0gc2VsZWN0b3IgLSBUaGUgYXR0cmlidXRlIHNlbGVjdG9yIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0IC0gVGhlIGFnZ3JlZ2F0aW9uIGNvbnRleHQgdXNlZCBpbiBlcnJvciBtZXNzYWdlc1xuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgcHJpdmF0ZSBlbnN1cmVOdW1lcmljU2VsZWN0b3IoXG4gICAgc2VsZWN0b3I6IFNlbGVjdFNlbGVjdG9yPE0+LFxuICAgIGNvbnRleHQ6IHN0cmluZ1xuICApOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZVNlbGVjdG9yVHlwZShcbiAgICAgIHNlbGVjdG9yLFxuICAgICAgY29udGV4dCxcbiAgICAgICh0eXBlKSA9PiB0aGlzLmlzTnVtZXJpY1R5cGUodHlwZSksXG4gICAgICBcIm51bWVyaWNcIlxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFZhbGlkYXRlcyB0aGF0IGFuIGFnZ3JlZ2F0aW9uIHNlbGVjdG9yIHRhcmdldHMgYSBudW1lcmljIG9yIGRhdGUgYXR0cmlidXRlXG4gICAqIEBwYXJhbSB7U2VsZWN0U2VsZWN0b3I8TT59IHNlbGVjdG9yIC0gVGhlIGF0dHJpYnV0ZSBzZWxlY3RvciB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGV4dCAtIFRoZSBhZ2dyZWdhdGlvbiBjb250ZXh0IHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHByaXZhdGUgZW5zdXJlTnVtYmVyT3JEYXRlU2VsZWN0b3IoXG4gICAgc2VsZWN0b3I6IFNlbGVjdFNlbGVjdG9yPE0+LFxuICAgIGNvbnRleHQ6IHN0cmluZ1xuICApOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZVNlbGVjdG9yVHlwZShcbiAgICAgIHNlbGVjdG9yLFxuICAgICAgY29udGV4dCxcbiAgICAgICh0eXBlKSA9PiB0aGlzLmlzTnVtZXJpY1R5cGUodHlwZSkgfHwgdHlwZSA9PT0gXCJkYXRlXCIsXG4gICAgICBcIm51bWVyaWMgb3IgZGF0ZVwiXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVmFsaWRhdGVzIHRoYXQgYSBzZWxlY3RvcidzIGF0dHJpYnV0ZSB0eXBlIHNhdGlzZmllcyBhIHByZWRpY2F0ZVxuICAgKiBAc3VtbWFyeSBSZXNvbHZlcyB0aGUgYXR0cmlidXRlIHR5cGUgZnJvbSB0aGUgbW9kZWwgbWV0YWRhdGEgYW5kIHJhaXNlcyBhXG4gICAqIGBRdWVyeUVycm9yYCB3aGVuIHRoZSB0eXBlIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBraW5kLlxuICAgKiBAcGFyYW0ge1NlbGVjdFNlbGVjdG9yPE0+fSBzZWxlY3RvciAtIFRoZSBhdHRyaWJ1dGUgc2VsZWN0b3IgdG8gdmFsaWRhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnRleHQgLSBUaGUgYWdncmVnYXRpb24gY29udGV4dCB1c2VkIGluIGVycm9yIG1lc3NhZ2VzXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5nKTogYm9vbGVhbn0gcHJlZGljYXRlIC0gVHlwZSBhY2NlcHRhbmNlIHByZWRpY2F0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gLSBIdW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgYWNjZXB0ZWQgdHlwZXNcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHByaXZhdGUgZW5zdXJlU2VsZWN0b3JUeXBlKFxuICAgIHNlbGVjdG9yOiBTZWxlY3RTZWxlY3RvcjxNPixcbiAgICBjb250ZXh0OiBzdHJpbmcsXG4gICAgcHJlZGljYXRlOiAodHlwZTogc3RyaW5nKSA9PiBib29sZWFuLFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmdcbiAgKSB7XG4gICAgaWYgKCF0aGlzLmZyb21TZWxlY3Rvcikge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGAke2NvbnRleHR9IHJlcXVpcmVzIGEgdGFyZ2V0IG1vZGVsLiBDYWxsIGZyb20oKSBiZWZvcmUgYWdncmVnYXRpbmcuYFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgYXR0ciA9IHNlbGVjdG9yIGFzIHN0cmluZztcbiAgICBjb25zdCB0eXBlID0gdGhpcy5kZXRlcm1pbmVBdHRyaWJ1dGVUeXBlKFxuICAgICAgdGhpcy5mcm9tU2VsZWN0b3IsXG4gICAgICBhdHRyIGFzIGtleW9mIE1vZGVsPGZhbHNlPixcbiAgICAgIGNvbnRleHRcbiAgICApO1xuXG4gICAgaWYgKCFwcmVkaWNhdGUodHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgICBgJHtjb250ZXh0fSByZXF1aXJlcyBhICR7ZGVzY3JpcHRpb259IGF0dHJpYnV0ZSwgYnV0IFwiJHthdHRyfVwiIGlzICR7dHlwZSB8fCBcInVua25vd25cIn1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVzb2x2ZXMgdGhlIGF0dHJpYnV0ZSB0eXBlIGZyb20gdGhlIG1vZGVsIG1ldGFkYXRhXG4gICAqIEBzdW1tYXJ5IFJlYWRzIHRoZSBtZXRhZGF0YSBvciBkZXNpZ24gdHlwZSBvZiB0aGUgYXR0cmlidXRlIGFuZCBub3JtYWxpemVzIGl0XG4gICAqIHRvIGEgbG93ZXJjYXNlIHR5cGUgbmFtZS5cbiAgICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNb2RlbD59IGNsYXp6IC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhdHRyIC0gVGhlIGF0dHJpYnV0ZSBuYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0IC0gVGhlIGNvbnRleHQgdXNlZCBpbiBlcnJvciBtZXNzYWdlc1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBub3JtYWxpemVkIGF0dHJpYnV0ZSB0eXBlXG4gICAqL1xuICBwcml2YXRlIGRldGVybWluZUF0dHJpYnV0ZVR5cGUoXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE1vZGVsPixcbiAgICBhdHRyOiBzdHJpbmcsXG4gICAgY29udGV4dDogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJvcEtleSA9IGF0dHIgYXMga2V5b2YgTW9kZWw8ZmFsc2U+O1xuICAgIGNvbnN0IG1ldGFUeXBlID1cbiAgICAgIE1ldGFkYXRhLnR5cGUoY2xhenosIHByb3BLZXkpID8/XG4gICAgICBNZXRhZGF0YS5nZXRQcm9wRGVzaWduVHlwZXMoY2xhenosIHByb3BLZXkpPy5kZXNpZ25UeXBlO1xuICAgIGNvbnN0IHJlc29sdmVkID0gdGhpcy5ub3JtYWxpemVNZXRhVHlwZShtZXRhVHlwZSk7XG4gICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgIGAke2NvbnRleHR9IGNvdWxkIG5vdCByZXNvbHZlIHByb3BlcnR5IHR5cGUgZm9yIFwiJHthdHRyfVwiYFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBOb3JtYWxpemVzIGEgcmF3IG1ldGFkYXRhIHR5cGUgdG8gYSBsb3dlcmNhc2UgdHlwZSBuYW1lXG4gICAqIEBwYXJhbSB7YW55fSBtZXRhVHlwZSAtIFRoZSByYXcgbWV0YWRhdGEgdHlwZSB2YWx1ZVxuICAgKiBAcmV0dXJuIHtzdHJpbmcgfCB1bmRlZmluZWR9IFRoZSBub3JtYWxpemVkIHR5cGUgbmFtZSwgd2hlbiByZXNvbHZhYmxlXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZU1ldGFUeXBlKG1ldGFUeXBlOiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghbWV0YVR5cGUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKHR5cGVvZiBtZXRhVHlwZSA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIG1ldGFUeXBlLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHR5cGVvZiBtZXRhVHlwZSA9PT0gXCJmdW5jdGlvblwiICYmIG1ldGFUeXBlLm5hbWUpXG4gICAgICByZXR1cm4gbWV0YVR5cGUubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGdpdmVuIHR5cGUgbmFtZSBpcyBhIG51bWVyaWMgdHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3R5cGVdIC0gVGhlIG5vcm1hbGl6ZWQgdHlwZSBuYW1lXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgZm9yIFwibnVtYmVyXCIgYW5kIFwiYmlnaW50XCJcbiAgICovXG4gIHByaXZhdGUgaXNOdW1lcmljVHlwZSh0eXBlPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGUgPT09IFwibnVtYmVyXCIgfHwgdHlwZSA9PT0gXCJiaWdpbnRcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSB2YWx1ZSB0byBhIG51bWVyaWMgY29tcGFyYWJsZSB2YWx1ZVxuICAgKiBAc3VtbWFyeSBNYXBzIGRhdGUsIG51bWJlciBhbmQgYmlnaW50IHZhbHVlcyB0byBudW1iZXJzIGZvciBjb21wYXJpc29uIGFuZFxuICAgKiByYWlzZXMgYSBgUXVlcnlFcnJvcmAgZm9yIG1pc3Npbmcgb3IgaW5jb21wYXRpYmxlIHZhbHVlcy5cbiAgICogQHBhcmFtIHthbnl9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHJUeXBlIC0gVGhlIG5vcm1hbGl6ZWQgYXR0cmlidXRlIHR5cGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHJOYW1lIC0gVGhlIGF0dHJpYnV0ZSBuYW1lIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnRleHQgLSBUaGUgY29udGV4dCB1c2VkIGluIGVycm9yIG1lc3NhZ2VzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10gLSBDb252ZXJzaW9uIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5hbGxvd051bGxdIC0gV2hldGhlciBudWxsL3VuZGVmaW5lZCB2YWx1ZXMgcmV0dXJuIG51bGwgaW5zdGVhZCBvZiByYWlzaW5nXG4gICAqIEByZXR1cm4ge251bWJlciB8IG51bGx9IFRoZSBudW1lcmljIGNvbXBhcmFibGUgdmFsdWVcbiAgICovXG4gIHByaXZhdGUgdG9Db21wYXJhYmxlVmFsdWUoXG4gICAgdmFsdWU6IGFueSxcbiAgICBhdHRyVHlwZTogc3RyaW5nLFxuICAgIGF0dHJOYW1lOiBzdHJpbmcsXG4gICAgY29udGV4dDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7IGFsbG93TnVsbD86IGJvb2xlYW4gfVxuICApOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgaWYgKG9wdGlvbnM/LmFsbG93TnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihgJHtjb250ZXh0fSByZXF1aXJlcyBhIHZhbHVlIGZvciBcIiR7YXR0ck5hbWV9XCJgKTtcbiAgICB9XG4gICAgc3dpdGNoIChhdHRyVHlwZSkge1xuICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgICAgICAgYCR7Y29udGV4dH0gb24gZGF0ZSBhdHRyaWJ1dGUgXCIke2F0dHJOYW1lfVwiIHJlcXVpcmVzIERhdGUgdmFsdWVzYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgICAgICAgYCR7Y29udGV4dH0gb24gbnVtZXJpYyBhdHRyaWJ1dGUgXCIke2F0dHJOYW1lfVwiIHJlcXVpcmVzIG51bWJlciB2YWx1ZXNgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICBjYXNlIFwiYmlnaW50XCI6XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHJldHVybiB2YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJiaWdpbnRcIikgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgICAgIGAke2NvbnRleHR9IG9uIGJpZ2ludCBhdHRyaWJ1dGUgXCIke2F0dHJOYW1lfVwiIHJlcXVpcmVzIG51bWVyaWMgdmFsdWVzYFxuICAgICAgICApO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgICAgYCR7Y29udGV4dH0gdW5zdXBwb3J0ZWQgdHlwZSBcIiR7YXR0clR5cGV9XCIgZm9yIGF0dHJpYnV0ZSBcIiR7YXR0ck5hbWV9XCJgXG4gICAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
433
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVkaXNTdGF0ZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJSZWRpc1N0YXRlbWVudC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBNEc7QUFDNUcsMkRBQXdEO0FBQ3hELHFEQUFnRDtBQUNoRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQWEsY0FBZSxTQUFRLGdCQUFTO0lBQ3pDOzs7O09BSUc7SUFDSCxZQUFZLE9BQU8sRUFBRSxTQUFTO1FBQzFCLEtBQUssQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsT0FBTztRQUNILE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUN4QyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtnQkFDL0IsTUFBTSxJQUFJLDZCQUFhLENBQUMsZ0RBQWdELENBQUMsQ0FBQztZQUM5RSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUM1RCxNQUFNLGVBQWUsR0FBRyxtQkFBbUIsS0FBSyxxQkFBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLFVBQVUsS0FBSyxDQUFDO29CQUNoQixPQUFPLGVBQWUsR0FBRyxVQUFVLENBQUM7WUFDNUMsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDO1FBQ2Is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OlsiaW1wb3J0IHsgQ29uZGl0aW9uLCBHcm91cE9wZXJhdG9yLCBPcGVyYXRvciwgT3JkZXJEaXJlY3Rpb24sIFF1ZXJ5RXJyb3IsIFN0YXRlbWVudCwgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZWRpcy1zcGVjaWZpYyBxdWVyeSBzdGF0ZW1lbnQgYnVpbGRlclxuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgYmFzZSBTdGF0ZW1lbnQgY2xhc3MgdG8gcHJvdmlkZSBxdWVyeSBidWlsZGluZyBmdW5jdGlvbmFsaXR5IGZvciB0aGUgUmVkaXMgYWRhcHRlci5cbiAqIFRoaXMgY2xhc3MgdHJhbnNsYXRlcyBoaWdoLWxldmVsIHF1ZXJ5IG9wZXJhdGlvbnMgaW50byBwcmVkaWNhdGVzIHRoYXQgY2FuIGZpbHRlciBhbmQgc29ydFxuICogaW4tbWVtb3J5IGRhdGEgc3RydWN0dXJlcyAocmVjb3JkcyByZXZlcnRlZCBmcm9tIHRoZSB0YWJsZSBoYXNoKS5cbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgYmVpbmcgcXVlcmllZFxuICogQHRlbXBsYXRlIFIgLSBUaGUgcmVzdWx0IHR5cGUgcmV0dXJuZWQgYnkgdGhlIHF1ZXJ5XG4gKiBAY2xhc3MgUmVkaXNTdGF0ZW1lbnRcbiAqIEBjYXRlZ29yeSBSZWRpc1xuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIENyZWF0ZSBhIHN0YXRlbWVudCBmb3IgcXVlcnlpbmcgVXNlciBtb2RlbHNcbiAqIGNvbnN0IHN0YXRlbWVudCA9IHJlZGlzQWRhcHRlci5TdGF0ZW1lbnQ8VXNlcj4oKTtcbiAqXG4gKiAvLyBCdWlsZCBhIHF1ZXJ5IHRvIGZpbmQgYWN0aXZlIHVzZXJzIHdpdGggYWdlID4gMThcbiAqIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBzdGF0ZW1lbnRcbiAqICAgLmZyb20oVXNlcilcbiAqICAgLndoZXJlKENvbmRpdGlvbi5hbmQoXG4gKiAgICAgQ29uZGl0aW9uLmVxKCdhY3RpdmUnLCB0cnVlKSxcbiAqICAgICBDb25kaXRpb24uZ3QoJ2FnZScsIDE4KVxuICogICApKVxuICogICAub3JkZXJCeSgnbGFzdE5hbWUnLCAnYXNjJylcbiAqICAgLmxpbWl0KDEwKVxuICogICAuZXhlY3V0ZSgpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWRpc1N0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBzdGF0ZW1lbnQgYm91bmQgdG8gdGhlIFJlZGlzIGFkYXB0ZXJcbiAgICAgKiBAcGFyYW0ge0F9IGFkYXB0ZXIgLSBUaGUgUmVkaXMgYWRhcHRlciBpbnN0YW5jZSB0byB1c2UgZm9yIGV4ZWN1dGluZyBxdWVyaWVzXG4gICAgICogQHBhcmFtIHtQYXJ0aWFsPEFkYXB0ZXJGbGFncz59IFtvdmVycmlkZXNdIC0gT3B0aW9uYWwgYWRhcHRlciBmbGFnIG92ZXJyaWRlc1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGFkYXB0ZXIsIG92ZXJyaWRlcykge1xuICAgICAgICBzdXBlcihhZGFwdGVyLCBvdmVycmlkZXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIHNvcnQgY29tcGFyYXRvciBmdW5jdGlvblxuICAgICAqIEBzdW1tYXJ5IEdlbmVyYXRlcyBhIGZ1bmN0aW9uIHRoYXQgY29tcGFyZXMgdHdvIG1vZGVsIGluc3RhbmNlcyBiYXNlZCBvbiB0aGUgb3JkZXJCeSBjcml0ZXJpYS5cbiAgICAgKiBUaGlzIG1ldGhvZCBoYW5kbGVzIGRpZmZlcmVudCBkYXRhIHR5cGVzIChzdHJpbmcsIG51bWJlciwgZGF0ZSkgYW5kIHNvcnQgZGlyZWN0aW9ucyAoYXNjLCBkZXNjKS5cbiAgICAgKiBAcmV0dXJuIHtmdW5jdGlvbihNb2RlbCwgTW9kZWwpOiBudW1iZXJ9IEEgY29tcGFyYXRvciBmdW5jdGlvbiBmb3Igc29ydGluZyBtb2RlbCBpbnN0YW5jZXNcbiAgICAgKi9cbiAgICBnZXRTb3J0KCkge1xuICAgICAgICBjb25zdCBzZWxlY3RvcnMgPSB0aGlzLm9yZGVyQnlTZWxlY3RvcnM7XG4gICAgICAgIHJldHVybiAoZWwxLCBlbDIpID0+IHtcbiAgICAgICAgICAgIGlmICghc2VsZWN0b3JzIHx8ICFzZWxlY3RvcnMubGVuZ3RoKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwib3JkZXJCeVNlbGVjdG9ycyBub3Qgc2V0LiBTaG91bGQgYmUgaW1wb3NzaWJsZVwiKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgZGlyZWN0aW9uXSBvZiBzZWxlY3RvcnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkRGlyZWN0aW9uID0gU3RyaW5nKGRpcmVjdGlvbikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXJlY3Rpb25GYWN0b3IgPSBub3JtYWxpemVkRGlyZWN0aW9uID09PSBPcmRlckRpcmVjdGlvbi5BU0MgPyAxIDogLTE7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcGFyaXNvbiA9IHRoaXMuY29tcGFyZUJ5S2V5KGVsMSwgZWwyLCBrZXkpO1xuICAgICAgICAgICAgICAgIGlmIChjb21wYXJpc29uICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uRmFjdG9yICogY29tcGFyaXNvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGFyZXMgdHdvIG1vZGVscyBieSBhIHNpbmdsZSBhdHRyaWJ1dGVcbiAgICAgKiBAc3VtbWFyeSBSZXNvbHZlcyB0aGUgYXR0cmlidXRlJ3MgZGVzaWduIHR5cGUgYW5kIGRlbGVnYXRlcyB0byB0aGUgbWF0Y2hpbmdcbiAgICAgKiB0eXBlLXNwZWNpZmljIGNvbXBhcmF0b3IuXG4gICAgICogQHBhcmFtIHtNb2RlbH0gZWwxIC0gVGhlIGZpcnN0IG1vZGVsIGluc3RhbmNlXG4gICAgICogQHBhcmFtIHtNb2RlbH0gZWwyIC0gVGhlIHNlY29uZCBtb2RlbCBpbnN0YW5jZVxuICAgICAqIEBwYXJhbSB7a2V5b2YgTW9kZWx9IGtleSAtIFRoZSBhdHRyaWJ1dGUgdG8gY29tcGFyZVxuICAgICAqIEByZXR1cm4ge251bWJlcn0gQSBuZWdhdGl2ZSBudW1iZXIsIHplcm8gb3IgYSBwb3NpdGl2ZSBudW1iZXIgYXMgcGVyIHRoZSBjb21wYXJpc29uXG4gICAgICovXG4gICAgY29tcGFyZUJ5S2V5KGVsMSwgZWwyLCBrZXkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUxID0gZWwxW2tleV07XG4gICAgICAgIGNvbnN0IHZhbHVlMiA9IGVsMltrZXldO1xuICAgICAgICBpZiAodmFsdWUxID09PSB2YWx1ZTIpXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgaWYgKHZhbHVlMSA9PSBudWxsIHx8IHZhbHVlMiA9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlMSA9PSBudWxsID8gMSA6IC0xO1xuICAgICAgICBjb25zdCB7IGRlc2lnblR5cGU6IHR5cGUgfSA9IE1ldGFkYXRhLmdldFByb3BEZXNpZ25UeXBlcyhlbDEuY29uc3RydWN0b3IsIGtleSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVHlwZSA9ICh0eXBlICYmIHR5cGUubmFtZSAmJiB0eXBlLm5hbWUudG9Mb3dlckNhc2UoKSkgfHwgdHlwZW9mIHZhbHVlMTtcbiAgICAgICAgc3dpdGNoIChyZXNvbHZlZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlU3RyaW5ncyh2YWx1ZTEsIHZhbHVlMik7XG4gICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZU51bWJlcnModmFsdWUxLCB2YWx1ZTIpO1xuICAgICAgICAgICAgY2FzZSBcImJpZ2ludFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVCaWdJbnRzKHZhbHVlMSwgdmFsdWUyKTtcbiAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZUJvb2xlYW5zKHZhbHVlMSwgdmFsdWUyKTtcbiAgICAgICAgICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlMSBpbnN0YW5jZW9mIERhdGUgJiYgdmFsdWUyIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlRGF0ZXModmFsdWUxLCB2YWx1ZTIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYHNvcnRpbmcgbm90IHN1cHBvcnRlZCBmb3IgdHlwZSAke3Jlc29sdmVkVHlwZX1gKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBhcmVzIHR3byBib29sZWFuIHZhbHVlc1xuICAgICAqIEByZXR1cm4ge251bWJlcn0gMCB3aGVuIGVxdWFsLCAxIHdoZW4gYGFgIGlzIHRydWUsIC0xIG90aGVyd2lzZVxuICAgICAqL1xuICAgIGNvbXBhcmVCb29sZWFucyhhLCBiKSB7XG4gICAgICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPyAxIDogLTE7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wYXJlcyB0d28gbnVtZXJpYyB2YWx1ZXNcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBudW1lcmljIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdmFsdWVzXG4gICAgICovXG4gICAgY29tcGFyZU51bWJlcnMoYSwgYikge1xuICAgICAgICByZXR1cm4gYSAtIGI7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wYXJlcyB0d28gYmlnaW50IHZhbHVlc1xuICAgICAqIEByZXR1cm4ge251bWJlcn0gMCB3aGVuIGVxdWFsLCAxIHdoZW4gYGFgIGlzIGdyZWF0ZXIsIC0xIG90aGVyd2lzZVxuICAgICAqL1xuICAgIGNvbXBhcmVCaWdJbnRzKGEsIGIpIHtcbiAgICAgICAgaWYgKGEgPT09IGIpXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IC0xO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGFyZXMgdHdvIHN0cmluZ3MgdXNpbmcgbG9jYWxlLWF3YXJlIG9yZGVyaW5nXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgbG9jYWxlIGNvbXBhcmUgcmVzdWx0IGJldHdlZW4gdGhlIHZhbHVlc1xuICAgICAqL1xuICAgIGNvbXBhcmVTdHJpbmdzKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEubG9jYWxlQ29tcGFyZShiKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBhcmVzIHR3byBkYXRlcyBieSB0aGVpciBlcG9jaCB0aW1lc3RhbXBzXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0aW1lc3RhbXBzXG4gICAgICovXG4gICAgY29tcGFyZURhdGVzKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEudmFsdWVPZigpIC0gYi52YWx1ZU9mKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBCdWlsZHMgYSBSZWRpcyBxdWVyeSBmcm9tIHRoZSBzdGF0ZW1lbnRcbiAgICAgKiBAc3VtbWFyeSBDb252ZXJ0cyB0aGUgc3RhdGVtZW50J3Mgc2VsZWN0b3JzIGFuZCBjb25kaXRpb25zIGludG8gYSBSYXdSZWRpc1F1ZXJ5IG9iamVjdFxuICAgICAqIHRoYXQgY2FuIGJlIGV4ZWN1dGVkIGJ5IHRoZSBSZWRpcyBhZGFwdGVyLiBUaGlzIG1ldGhvZCBhc3NlbWJsZXMgYWxsIHF1ZXJ5IGNvbXBvbmVudHNcbiAgICAgKiAoc2VsZWN0LCBmcm9tLCB3aGVyZSwgbGltaXQsIG9mZnNldCwgc29ydCkgaW50byB0aGUgZmluYWwgcXVlcnkgc3RydWN0dXJlLlxuICAgICAqIEByZXR1cm4ge1Jhd1JlZGlzUXVlcnk8TT59IFRoZSBjb25zdHJ1Y3RlZCBSZWRpcyBxdWVyeSBvYmplY3RcbiAgICAgKi9cbiAgICBidWlsZCgpIHtcbiAgICAgICAgaWYgKHRoaXMubWluU2VsZWN0b3IpXG4gICAgICAgICAgICB0aGlzLmVuc3VyZU51bWJlck9yRGF0ZVNlbGVjdG9yKHRoaXMubWluU2VsZWN0b3IsIFwiTUlOIG9wZXJhdGlvblwiKTtcbiAgICAgICAgaWYgKHRoaXMubWF4U2VsZWN0b3IpXG4gICAgICAgICAgICB0aGlzLmVuc3VyZU51bWJlck9yRGF0ZVNlbGVjdG9yKHRoaXMubWF4U2VsZWN0b3IsIFwiTUFYIG9wZXJhdGlvblwiKTtcbiAgICAgICAgaWYgKHRoaXMuc3VtU2VsZWN0b3IpXG4gICAgICAgICAgICB0aGlzLmVuc3VyZU51bWVyaWNTZWxlY3Rvcih0aGlzLnN1bVNlbGVjdG9yLCBcIlNVTSBvcGVyYXRpb25cIik7XG4gICAgICAgIGlmICh0aGlzLmF2Z1NlbGVjdG9yKVxuICAgICAgICAgICAgdGhpcy5lbnN1cmVOdW1iZXJPckRhdGVTZWxlY3Rvcih0aGlzLmF2Z1NlbGVjdG9yLCBcIkFWRyBvcGVyYXRpb25cIik7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHNlbGVjdDogdGhpcy5zZWxlY3RTZWxlY3RvcixcbiAgICAgICAgICAgIGZyb206IHRoaXMuZnJvbVNlbGVjdG9yLFxuICAgICAgICAgICAgd2hlcmU6IHRoaXMud2hlcmVDb25kaXRpb25cbiAgICAgICAgICAgICAgICA/IHRoaXMucGFyc2VDb25kaXRpb24odGhpcy53aGVyZUNvbmRpdGlvbikud2hlcmVcbiAgICAgICAgICAgICAgICA6IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgICAgICAgICAgKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxpbWl0OiB0aGlzLmxpbWl0U2VsZWN0b3IsXG4gICAgICAgICAgICBza2lwOiB0aGlzLm9mZnNldFNlbGVjdG9yLFxuICAgICAgICAgICAgZ3JvdXBCeTogdGhpcy5ncm91cEJ5U2VsZWN0b3JzLFxuICAgICAgICB9O1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY291bnRTZWxlY3RvciAhPT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHJlc3VsdC5jb3VudCA9IHRoaXMuY291bnRTZWxlY3RvcjtcbiAgICAgICAgaWYgKHRoaXMuY291bnREaXN0aW5jdFNlbGVjdG9yKVxuICAgICAgICAgICAgcmVzdWx0LmNvdW50RGlzdGluY3QgPSB0aGlzLmNvdW50RGlzdGluY3RTZWxlY3RvcjtcbiAgICAgICAgaWYgKHRoaXMubWluU2VsZWN0b3IpXG4gICAgICAgICAgICByZXN1bHQubWluID0gdGhpcy5taW5TZWxlY3RvcjtcbiAgICAgICAgaWYgKHRoaXMubWF4U2VsZWN0b3IpXG4gICAgICAgICAgICByZXN1bHQubWF4ID0gdGhpcy5tYXhTZWxlY3RvcjtcbiAgICAgICAgaWYgKHRoaXMuc3VtU2VsZWN0b3IpXG4gICAgICAgICAgICByZXN1bHQuc3VtID0gdGhpcy5zdW1TZWxlY3RvcjtcbiAgICAgICAgaWYgKHRoaXMuYXZnU2VsZWN0b3IpXG4gICAgICAgICAgICByZXN1bHQuYXZnID0gdGhpcy5hdmdTZWxlY3RvcjtcbiAgICAgICAgaWYgKHRoaXMuZGlzdGluY3RTZWxlY3RvcilcbiAgICAgICAgICAgIHJlc3VsdC5kaXN0aW5jdCA9IHRoaXMuZGlzdGluY3RTZWxlY3RvcjtcbiAgICAgICAgaWYgKHRoaXMub3JkZXJCeVNlbGVjdG9ycz8ubGVuZ3RoKVxuICAgICAgICAgICAgcmVzdWx0LnNvcnQgPSB0aGlzLmdldFNvcnQoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFBhcnNlcyBhIGNvbmRpdGlvbiBpbnRvIGEgUmVkaXMgcXVlcnkgcHJlZGljYXRlXG4gICAgICogQHN1bW1hcnkgQ29udmVydHMgYSBDb25kaXRpb24gb2JqZWN0IGludG8gYSBwcmVkaWNhdGUgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZFxuICAgICAqIHRvIGZpbHRlciBtb2RlbCBpbnN0YW5jZXMgaW4gbWVtb3J5LiBUaGlzIG1ldGhvZCBoYW5kbGVzIGJvdGggc2ltcGxlIGNvbmRpdGlvbnNcbiAgICAgKiAoZXF1YWxzLCBncmVhdGVyIHRoYW4sIGV0Yy4pIGFuZCBjb21wbGV4IGNvbmRpdGlvbnMgd2l0aCBsb2dpY2FsIG9wZXJhdG9ycyAoQU5ELCBPUikuXG4gICAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSBmb3IgdGhlIGNvbmRpdGlvblxuICAgICAqIEBwYXJhbSB7Q29uZGl0aW9uPE0+fSBjb25kaXRpb24gLSBUaGUgY29uZGl0aW9uIHRvIHBhcnNlXG4gICAgICogQHJldHVybiB7UmF3UmVkaXNRdWVyeTxNPn0gQSBSZWRpcyBxdWVyeSBvYmplY3Qgd2l0aCBhIHdoZXJlIHByZWRpY2F0ZSBmdW5jdGlvblxuICAgICAqIEBtZXJtYWlkXG4gICAgICogc2VxdWVuY2VEaWFncmFtXG4gICAgICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAgICAgKiAgIHBhcnRpY2lwYW50IFJlZGlzU3RhdGVtZW50XG4gICAgICogICBwYXJ0aWNpcGFudCBTaW1wbGVDb25kaXRpb25cbiAgICAgKiAgIHBhcnRpY2lwYW50IENvbXBsZXhDb25kaXRpb25cbiAgICAgKlxuICAgICAqICAgQ2FsbGVyLT4+UmVkaXNTdGF0ZW1lbnQ6IHBhcnNlQ29uZGl0aW9uKGNvbmRpdGlvbilcbiAgICAgKiAgIGFsdCBTaW1wbGUgY29uZGl0aW9uIChlcSwgZ3QsIGx0LCBldGMuKVxuICAgICAqICAgICBSZWRpc1N0YXRlbWVudC0+PlNpbXBsZUNvbmRpdGlvbjogRXh0cmFjdCBhdHRyMSwgb3BlcmF0b3IsIGNvbXBhcmlzb25cbiAgICAgKiAgICAgU2ltcGxlQ29uZGl0aW9uLS0+PlJlZGlzU3RhdGVtZW50OiBSZXR1cm4gcHJlZGljYXRlIGZ1bmN0aW9uXG4gICAgICogICBlbHNlIExvZ2ljYWwgb3BlcmF0b3IgKEFORCwgT1IpXG4gICAgICogICAgIFJlZGlzU3RhdGVtZW50LT4+Q29tcGxleENvbmRpdGlvbjogRXh0cmFjdCBuZXN0ZWQgY29uZGl0aW9uc1xuICAgICAqICAgICBSZWRpc1N0YXRlbWVudC0+PlJlZGlzU3RhdGVtZW50OiBwYXJzZUNvbmRpdGlvbihsZWZ0Q29uZGl0aW9uKVxuICAgICAqICAgICBSZWRpc1N0YXRlbWVudC0+PlJlZGlzU3RhdGVtZW50OiBwYXJzZUNvbmRpdGlvbihyaWdodENvbmRpdGlvbilcbiAgICAgKiAgICAgQ29tcGxleENvbmRpdGlvbi0tPj5SZWRpc1N0YXRlbWVudDogQ29tYmluZSBwcmVkaWNhdGVzIHdpdGggbG9naWNhbCBvcGVyYXRvclxuICAgICAqICAgZW5kXG4gICAgICogICBSZWRpc1N0YXRlbWVudC0tPj5DYWxsZXI6IFJldHVybiBxdWVyeSB3aXRoIHdoZXJlIHByZWRpY2F0ZVxuICAgICAqL1xuICAgIHBhcnNlQ29uZGl0aW9uKGNvbmRpdGlvbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2hlcmU6IChtKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBhdHRyMSwgb3BlcmF0b3IsIGNvbXBhcmlzb24gfSA9IGNvbmRpdGlvbjtcbiAgICAgICAgICAgICAgICBpZiAoW0dyb3VwT3BlcmF0b3IuQU5ELCBHcm91cE9wZXJhdG9yLk9SLCBPcGVyYXRvci5OT1RdLmluZGV4T2Yob3BlcmF0b3IpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkJJR0dFUjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbVthdHRyMV0gPiBjb21wYXJpc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5CSUdHRVJfRVE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1bYXR0cjFdID49IGNvbXBhcmlzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkRJRkZFUkVOVDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbVthdHRyMV0gIT09IGNvbXBhcmlzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkVRVUFMOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtW2F0dHIxXSA9PT0gY29tcGFyaXNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuUkVHRVhQOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbVthdHRyMV0gIT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGBJbnZhbGlkIHJlZ2V4cCBjb21wYXJpc29uIG9uIGEgbm9uIHN0cmluZyBhdHRyaWJ1dGU6ICR7bVthdHRyMV19YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhbVthdHRyMV0ubWF0Y2gobmV3IFJlZ0V4cChjb21wYXJpc29uLCBcImdcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5TVEFSVFNfV0lUSDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBhdHRyMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdHRyTmFtZSA9IGF0dHI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXR0clZhbHVlID0gbVthdHRyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGF0dHJWYWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihgSW52YWxpZCBzdGFydHNXaXRoIGNvbXBhcmlzb24gb24gYSBub24gc3RyaW5nIGF0dHJpYnV0ZSBcIiR7YXR0ck5hbWV9XCJgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb21wYXJpc29uICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGBTVEFSVFNfV0lUSCBvcGVyYXRvciByZXF1aXJlcyBhIHN0cmluZyBjb21wYXJpc29uLCBnb3QgJHt0eXBlb2YgY29tcGFyaXNvbn1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJWYWx1ZS5zdGFydHNXaXRoKGNvbXBhcmlzb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5FTkRTX1dJVEg6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdHRyID0gYXR0cjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXR0ck5hbWUgPSBhdHRyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJWYWx1ZSA9IG1bYXR0cl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhdHRyVmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYEludmFsaWQgZW5kc1dpdGggY29tcGFyaXNvbiBvbiBhIG5vbiBzdHJpbmcgYXR0cmlidXRlIFwiJHthdHRyTmFtZX1cImApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbXBhcmlzb24gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYEVORFNfV0lUSCBvcGVyYXRvciByZXF1aXJlcyBhIHN0cmluZyBjb21wYXJpc29uLCBnb3QgJHt0eXBlb2YgY29tcGFyaXNvbn1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJWYWx1ZS5lbmRzV2l0aChjb21wYXJpc29uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuU01BTExFUjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbVthdHRyMV0gPCBjb21wYXJpc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5TTUFMTEVSX0VROlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtW2F0dHIxXSA8PSBjb21wYXJpc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5JTjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29tcGFyaXNvbikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGBJTiBvcGVyYXRvciByZXF1aXJlcyBhbiBhcnJheSwgZ290OiAke3R5cGVvZiBjb21wYXJpc29ufWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wYXJpc29uLmluY2x1ZGVzKG1bYXR0cjFdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuQkVUV0VFTjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb21wYXJpc29uKSB8fCBjb21wYXJpc29uLmxlbmd0aCAhPT0gMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYEJFVFdFRU4gb3BlcmF0b3IgcmVxdWlyZXMgYW4gYXJyYXkgd2l0aCAyIHZhbHVlcyBbbWluLCBtYXhdLCBnb3Q6ICR7SlNPTi5zdHJpbmdpZnkoY29tcGFyaXNvbil9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXR0ciA9IGF0dHIxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJOYW1lID0gYXR0cjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdHRyVHlwZSA9IHRoaXMuZGV0ZXJtaW5lQXR0cmlidXRlVHlwZShtLmNvbnN0cnVjdG9yLCBhdHRyTmFtZSwgXCJCRVRXRUVOXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc051bWVyaWNUeXBlKGF0dHJUeXBlKSAmJiBhdHRyVHlwZSAhPT0gXCJkYXRlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYEJFVFdFRU4gb3BlcmF0b3IgcmVxdWlyZXMgbnVtZXJpYyBvciBkYXRlIGF0dHJpYnV0ZXMsIGJ1dCBcIiR7YXR0ck5hbWV9XCIgaXMgJHthdHRyVHlwZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ1bmtub3duXCJ9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBjb21wYXJpc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbVthdHRyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wYXJhYmxlVmFsdWUgPSB0aGlzLnRvQ29tcGFyYWJsZVZhbHVlKHZhbHVlLCBhdHRyVHlwZSwgYXR0ck5hbWUsIFwiQkVUV0VFTlwiLCB7IGFsbG93TnVsbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcGFyYWJsZVZhbHVlID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluQ29tcGFyYWJsZSA9IHRoaXMudG9Db21wYXJhYmxlVmFsdWUobWluLCBhdHRyVHlwZSwgYXR0ck5hbWUsIFwiQkVUV0VFTiBtaW5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4Q29tcGFyYWJsZSA9IHRoaXMudG9Db21wYXJhYmxlVmFsdWUobWF4LCBhdHRyVHlwZSwgYXR0ck5hbWUsIFwiQkVUV0VFTiBtYXhcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChjb21wYXJhYmxlVmFsdWUgPj0gbWluQ29tcGFyYWJsZSAmJiBjb21wYXJhYmxlVmFsdWUgPD0gbWF4Q29tcGFyYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkVYSVNUUzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXNlbnQgPSBtW2F0dHIxXSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1bYXR0cjFdICE9PSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wYXJpc29uID09PSBmYWxzZSA/ICFwcmVzZW50IDogcHJlc2VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEludmFsaWQgb3BlcmF0b3IgZm9yIHN0YW5kYXJkIGNvbXBhcmlzb25zOiAke29wZXJhdG9yfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wZXJhdG9yID09PSBPcGVyYXRvci5OT1QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoYXR0cjEgaW5zdGFuY2VvZiBDb25kaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIk5PVCBvcGVyYXRvciByZXF1aXJlcyBhIG5lc3RlZCBjb25kaXRpb24gdG8gbmVnYXRlXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZCA9IHRoaXMucGFyc2VDb25kaXRpb24oYXR0cjEpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIW5lc3RlZC53aGVyZShtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wMSA9IHRoaXMucGFyc2VDb25kaXRpb24oYXR0cjEpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcDIgPSB0aGlzLnBhcnNlQ29uZGl0aW9uKGNvbXBhcmlzb24pO1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdyb3VwT3BlcmF0b3IuQU5EOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcDEud2hlcmUobSkgJiYgb3AyLndoZXJlKG0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHcm91cE9wZXJhdG9yLk9SOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcDEud2hlcmUobSkgfHwgb3AyLndoZXJlKG0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgSW52YWxpZCBvcGVyYXRvciBmb3IgQW5kL09yIGNvbXBhcmlzb25zOiAke29wZXJhdG9yfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFZhbGlkYXRlcyB0aGF0IGFuIGFnZ3JlZ2F0aW9uIHNlbGVjdG9yIHRhcmdldHMgYSBudW1lcmljIGF0dHJpYnV0ZVxuICAgICAqIEBwYXJhbSB7U2VsZWN0U2VsZWN0b3I8TT59IHNlbGVjdG9yIC0gVGhlIGF0dHJpYnV0ZSBzZWxlY3RvciB0byB2YWxpZGF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0IC0gVGhlIGFnZ3JlZ2F0aW9uIGNvbnRleHQgdXNlZCBpbiBlcnJvciBtZXNzYWdlc1xuICAgICAqIEByZXR1cm4ge3ZvaWR9XG4gICAgICovXG4gICAgZW5zdXJlTnVtZXJpY1NlbGVjdG9yKHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gICAgICAgIHRoaXMuZW5zdXJlU2VsZWN0b3JUeXBlKHNlbGVjdG9yLCBjb250ZXh0LCAodHlwZSkgPT4gdGhpcy5pc051bWVyaWNUeXBlKHR5cGUpLCBcIm51bWVyaWNcIik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0ZXMgdGhhdCBhbiBhZ2dyZWdhdGlvbiBzZWxlY3RvciB0YXJnZXRzIGEgbnVtZXJpYyBvciBkYXRlIGF0dHJpYnV0ZVxuICAgICAqIEBwYXJhbSB7U2VsZWN0U2VsZWN0b3I8TT59IHNlbGVjdG9yIC0gVGhlIGF0dHJpYnV0ZSBzZWxlY3RvciB0byB2YWxpZGF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0IC0gVGhlIGFnZ3JlZ2F0aW9uIGNvbnRleHQgdXNlZCBpbiBlcnJvciBtZXNzYWdlc1xuICAgICAqIEByZXR1cm4ge3ZvaWR9XG4gICAgICovXG4gICAgZW5zdXJlTnVtYmVyT3JEYXRlU2VsZWN0b3Ioc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5lbnN1cmVTZWxlY3RvclR5cGUoc2VsZWN0b3IsIGNvbnRleHQsICh0eXBlKSA9PiB0aGlzLmlzTnVtZXJpY1R5cGUodHlwZSkgfHwgdHlwZSA9PT0gXCJkYXRlXCIsIFwibnVtZXJpYyBvciBkYXRlXCIpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVmFsaWRhdGVzIHRoYXQgYSBzZWxlY3RvcidzIGF0dHJpYnV0ZSB0eXBlIHNhdGlzZmllcyBhIHByZWRpY2F0ZVxuICAgICAqIEBzdW1tYXJ5IFJlc29sdmVzIHRoZSBhdHRyaWJ1dGUgdHlwZSBmcm9tIHRoZSBtb2RlbCBtZXRhZGF0YSBhbmQgcmFpc2VzIGFcbiAgICAgKiBgUXVlcnlFcnJvcmAgd2hlbiB0aGUgdHlwZSBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQga2luZC5cbiAgICAgKiBAcGFyYW0ge1NlbGVjdFNlbGVjdG9yPE0+fSBzZWxlY3RvciAtIFRoZSBhdHRyaWJ1dGUgc2VsZWN0b3IgdG8gdmFsaWRhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGV4dCAtIFRoZSBhZ2dyZWdhdGlvbiBjb250ZXh0IHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHN0cmluZyk6IGJvb2xlYW59IHByZWRpY2F0ZSAtIFR5cGUgYWNjZXB0YW5jZSBwcmVkaWNhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gLSBIdW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgYWNjZXB0ZWQgdHlwZXNcbiAgICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgICAqL1xuICAgIGVuc3VyZVNlbGVjdG9yVHlwZShzZWxlY3RvciwgY29udGV4dCwgcHJlZGljYXRlLCBkZXNjcmlwdGlvbikge1xuICAgICAgICBpZiAoIXRoaXMuZnJvbVNlbGVjdG9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgJHtjb250ZXh0fSByZXF1aXJlcyBhIHRhcmdldCBtb2RlbC4gQ2FsbCBmcm9tKCkgYmVmb3JlIGFnZ3JlZ2F0aW5nLmApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGF0dHIgPSBzZWxlY3RvcjtcbiAgICAgICAgY29uc3QgdHlwZSA9IHRoaXMuZGV0ZXJtaW5lQXR0cmlidXRlVHlwZSh0aGlzLmZyb21TZWxlY3RvciwgYXR0ciwgY29udGV4dCk7XG4gICAgICAgIGlmICghcHJlZGljYXRlKHR5cGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihgJHtjb250ZXh0fSByZXF1aXJlcyBhICR7ZGVzY3JpcHRpb259IGF0dHJpYnV0ZSwgYnV0IFwiJHthdHRyfVwiIGlzICR7dHlwZSB8fCBcInVua25vd25cIn1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzb2x2ZXMgdGhlIGF0dHJpYnV0ZSB0eXBlIGZyb20gdGhlIG1vZGVsIG1ldGFkYXRhXG4gICAgICogQHN1bW1hcnkgUmVhZHMgdGhlIG1ldGFkYXRhIG9yIGRlc2lnbiB0eXBlIG9mIHRoZSBhdHRyaWJ1dGUgYW5kIG5vcm1hbGl6ZXMgaXRcbiAgICAgKiB0byBhIGxvd2VyY2FzZSB0eXBlIG5hbWUuXG4gICAgICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNb2RlbD59IGNsYXp6IC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHIgLSBUaGUgYXR0cmlidXRlIG5hbWVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGV4dCAtIFRoZSBjb250ZXh0IHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBub3JtYWxpemVkIGF0dHJpYnV0ZSB0eXBlXG4gICAgICovXG4gICAgZGV0ZXJtaW5lQXR0cmlidXRlVHlwZShjbGF6eiwgYXR0ciwgY29udGV4dCkge1xuICAgICAgICBjb25zdCBwcm9wS2V5ID0gYXR0cjtcbiAgICAgICAgY29uc3QgbWV0YVR5cGUgPSBNZXRhZGF0YS50eXBlKGNsYXp6LCBwcm9wS2V5KSA/P1xuICAgICAgICAgICAgTWV0YWRhdGEuZ2V0UHJvcERlc2lnblR5cGVzKGNsYXp6LCBwcm9wS2V5KT8uZGVzaWduVHlwZTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSB0aGlzLm5vcm1hbGl6ZU1ldGFUeXBlKG1ldGFUeXBlKTtcbiAgICAgICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYCR7Y29udGV4dH0gY291bGQgbm90IHJlc29sdmUgcHJvcGVydHkgdHlwZSBmb3IgXCIke2F0dHJ9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb2x2ZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBOb3JtYWxpemVzIGEgcmF3IG1ldGFkYXRhIHR5cGUgdG8gYSBsb3dlcmNhc2UgdHlwZSBuYW1lXG4gICAgICogQHBhcmFtIHthbnl9IG1ldGFUeXBlIC0gVGhlIHJhdyBtZXRhZGF0YSB0eXBlIHZhbHVlXG4gICAgICogQHJldHVybiB7c3RyaW5nIHwgdW5kZWZpbmVkfSBUaGUgbm9ybWFsaXplZCB0eXBlIG5hbWUsIHdoZW4gcmVzb2x2YWJsZVxuICAgICAqL1xuICAgIG5vcm1hbGl6ZU1ldGFUeXBlKG1ldGFUeXBlKSB7XG4gICAgICAgIGlmICghbWV0YVR5cGUpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBpZiAodHlwZW9mIG1ldGFUeXBlID09PSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgcmV0dXJuIG1ldGFUeXBlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgbWV0YVR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBtZXRhVHlwZS5uYW1lKVxuICAgICAgICAgICAgcmV0dXJuIG1ldGFUeXBlLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGdpdmVuIHR5cGUgbmFtZSBpcyBhIG51bWVyaWMgdHlwZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdHlwZV0gLSBUaGUgbm9ybWFsaXplZCB0eXBlIG5hbWVcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGZvciBcIm51bWJlclwiIGFuZCBcImJpZ2ludFwiXG4gICAgICovXG4gICAgaXNOdW1lcmljVHlwZSh0eXBlKSB7XG4gICAgICAgIHJldHVybiB0eXBlID09PSBcIm51bWJlclwiIHx8IHR5cGUgPT09IFwiYmlnaW50XCI7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHZhbHVlIHRvIGEgbnVtZXJpYyBjb21wYXJhYmxlIHZhbHVlXG4gICAgICogQHN1bW1hcnkgTWFwcyBkYXRlLCBudW1iZXIgYW5kIGJpZ2ludCB2YWx1ZXMgdG8gbnVtYmVycyBmb3IgY29tcGFyaXNvbiBhbmRcbiAgICAgKiByYWlzZXMgYSBgUXVlcnlFcnJvcmAgZm9yIG1pc3Npbmcgb3IgaW5jb21wYXRpYmxlIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBhdHRyVHlwZSAtIFRoZSBub3JtYWxpemVkIGF0dHJpYnV0ZSB0eXBlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHJOYW1lIC0gVGhlIGF0dHJpYnV0ZSBuYW1lIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGV4dCAtIFRoZSBjb250ZXh0IHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdIC0gQ29udmVyc2lvbiBvcHRpb25zXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5hbGxvd051bGxdIC0gV2hldGhlciBudWxsL3VuZGVmaW5lZCB2YWx1ZXMgcmV0dXJuIG51bGwgaW5zdGVhZCBvZiByYWlzaW5nXG4gICAgICogQHJldHVybiB7bnVtYmVyIHwgbnVsbH0gVGhlIG51bWVyaWMgY29tcGFyYWJsZSB2YWx1ZVxuICAgICAqL1xuICAgIHRvQ29tcGFyYWJsZVZhbHVlKHZhbHVlLCBhdHRyVHlwZSwgYXR0ck5hbWUsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zPy5hbGxvd051bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihgJHtjb250ZXh0fSByZXF1aXJlcyBhIHZhbHVlIGZvciBcIiR7YXR0ck5hbWV9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGF0dHJUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICAgICAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYCR7Y29udGV4dH0gb24gZGF0ZSBhdHRyaWJ1dGUgXCIke2F0dHJOYW1lfVwiIHJlcXVpcmVzIERhdGUgdmFsdWVzYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCk7XG4gICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihgJHtjb250ZXh0fSBvbiBudW1lcmljIGF0dHJpYnV0ZSBcIiR7YXR0ck5hbWV9XCIgcmVxdWlyZXMgbnVtYmVyIHZhbHVlc2ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICBjYXNlIFwiYmlnaW50XCI6XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGAke2NvbnRleHR9IG9uIGJpZ2ludCBhdHRyaWJ1dGUgXCIke2F0dHJOYW1lfVwiIHJlcXVpcmVzIG51bWVyaWMgdmFsdWVzYCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGAke2NvbnRleHR9IHVuc3VwcG9ydGVkIHR5cGUgXCIke2F0dHJUeXBlfVwiIGZvciBhdHRyaWJ1dGUgXCIke2F0dHJOYW1lfVwiYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lVbVZrYVhOVGRHRjBaVzFsYm5RdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOHVMaTl6Y21NdmNtVmthWE12VW1Wa2FYTlRkR0YwWlcxbGJuUXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVkTUxGTkJRVk1zUlVGRFZDeGhRVUZoTEVWQlEySXNVVUZCVVN4RlFVTlNMR05CUVdNc1JVRkRaQ3hWUVVGVkxFVkJSVllzVTBGQlV5eEhRVU5XTEUxQlFVMHNaMEpCUVdkQ0xFTkJRVU03UVVGSGVFSXNUMEZCVHl4RlFVRkZMR0ZCUVdFc1JVRkJSU3hOUVVGTkxIbENRVUY1UWl4RFFVRkRPMEZCUTNoRUxFOUJRVThzUlVGQlpTeFJRVUZSTEVWQlFVVXNUVUZCVFN4elFrRkJjMElzUTBGQlF6dEJRVVUzUkRzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenRIUVhsQ1J6dEJRVU5JTEUxQlFVMHNUMEZCVHl4alFVbFlMRk5CUVZFc1UwRkJjME03U1VGRE9VTTdPenM3VDBGSlJ6dEpRVU5JTEZsQlFWa3NUMEZCVlN4RlFVRkZMRk5CUVdsRE8xRkJRM1pFTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03U1VGRE5VSXNRMEZCUXp0SlFVVkVPenM3T3p0UFFVdEhPMGxCUTBzc1QwRkJUenRSUVVOaUxFMUJRVTBzVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF6dFJRVU40UXl4UFFVRlBMRU5CUVVNc1IwRkJWU3hGUVVGRkxFZEJRVlVzUlVGQlJTeEZRVUZGTzFsQlEyaERMRWxCUVVrc1EwRkJReXhUUVVGVExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFR0blFrRkRha01zVFVGQlRTeEpRVUZKTEdGQlFXRXNRMEZEY2tJc1owUkJRV2RFTEVOQlEycEVMRU5CUVVNN1dVRkRTaXhMUVVGTExFMUJRVTBzUTBGQlF5eEhRVUZITEVWQlFVVXNVMEZCVXl4RFFVRkRMRWxCUVVrc1UwRkJVeXhGUVVGRkxFTkJRVU03WjBKQlEzcERMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETzJkQ1FVTTFSQ3hOUVVGTkxHVkJRV1VzUjBGRGJrSXNiVUpCUVcxQ0xFdEJRVXNzWTBGQll5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRkRVFzVFVGQlRTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFXdENMRU5CUVVNc1EwRkJRenRuUWtGRGJrVXNTVUZCU1N4VlFVRlZMRXRCUVVzc1EwRkJRenR2UWtGQlJTeFBRVUZQTEdWQlFXVXNSMEZCUnl4VlFVRlZMRU5CUVVNN1dVRkROVVFzUTBGQlF6dFpRVU5FTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTFnc1EwRkJReXhEUVVGRE8wbEJRMG9zUTBGQlF6dEpRVVZFT3pzN096czdPenRQUVZGSE8wbEJRMHNzV1VGQldTeERRVUZETEVkQlFWVXNSVUZCUlN4SFFVRlZMRVZCUVVVc1IwRkJaMEk3VVVGRE0wUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEzaENMRTFCUVUwc1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVVjRRaXhKUVVGSkxFMUJRVTBzUzBGQlN5eE5RVUZOTzFsQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkZhRU1zU1VGQlNTeE5RVUZOTEVsQlFVa3NTVUZCU1N4SlFVRkpMRTFCUVUwc1NVRkJTU3hKUVVGSk8xbEJRVVVzVDBGQlR5eE5RVUZOTEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlhKRkxFMUJRVTBzUlVGQlJTeFZRVUZWTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWRCUVVjc1VVRkJVU3hEUVVGRExHdENRVUZyUWl4RFFVTjBSQ3hIUVVGSExFTkJRVU1zVjBGQmEwSXNSVUZEZEVJc1IwRkJZU3hEUVVOa0xFTkJRVU03VVVGRFJpeE5RVUZOTEZsQlFWa3NSMEZEYUVJc1EwRkJReXhKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETEVsQlFVa3NUMEZCVHl4TlFVRk5MRU5CUVVNN1VVRkZiRVVzVVVGQlVTeFpRVUZaTEVWQlFVVXNRMEZCUXp0WlFVTnlRaXhMUVVGTExGRkJRVkU3WjBKQlExZ3NUMEZCVHl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVONFFpeE5RVUV5UWl4RlFVTXpRaXhOUVVFeVFpeERRVU0xUWl4RFFVRkRPMWxCUTBvc1MwRkJTeXhSUVVGUk8yZENRVU5ZTEU5QlFVOHNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkRlRUlzVFVGQk1rSXNSVUZETTBJc1RVRkJNa0lzUTBGRE5VSXNRMEZCUXp0WlFVTktMRXRCUVVzc1VVRkJVVHRuUWtGRFdDeFBRVUZQTEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUTNoQ0xFMUJRVEpDTEVWQlF6TkNMRTFCUVRKQ0xFTkJRelZDTEVOQlFVTTdXVUZEU2l4TFFVRkxMRk5CUVZNN1owSkJRMW9zVDBGQlR5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVTjZRaXhOUVVFMFFpeEZRVU0xUWl4TlFVRTBRaXhEUVVNM1FpeERRVUZETzFsQlEwb3NTMEZCU3l4TlFVRk5MRU5CUVVNN1dVRkRXaXhMUVVGTExGRkJRVkU3WjBKQlExZ3NTVUZCU1N4TlFVRk5MRmxCUVZrc1NVRkJTU3hKUVVGSkxFMUJRVTBzV1VGQldTeEpRVUZKTEVWQlFVVXNRMEZCUXp0dlFrRkRja1FzVDBGQlR5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTFCUVdNc1JVRkJSU3hOUVVGakxFTkJRVU1zUTBGQlF6dG5Ra0ZETTBRc1EwRkJRenRuUWtGRFJDeE5RVUZOTzFsQlExSTdaMEpCUTBVc1RVRkJUVHRSUVVOV0xFTkJRVU03VVVGRlJDeE5RVUZOTEVsQlFVa3NWVUZCVlN4RFFVRkRMR3REUVVGclF5eFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUTNwRkxFTkJRVU03U1VGRlJEczdPMDlCUjBjN1NVRkRTeXhsUVVGbExFTkJRVU1zUTBGQlZTeEZRVUZGTEVOQlFWVTdVVUZETlVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5zUXl4RFFVRkRPMGxCUlVRN096dFBRVWRITzBsQlEwc3NZMEZCWXl4RFFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGVE8xRkJRM3BETEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVObUxFTkJRVU03U1VGRlJEczdPMDlCUjBjN1NVRkRTeXhqUVVGakxFTkJRVU1zUTBGQlV5eEZRVUZGTEVOQlFWTTdVVUZEZWtNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dFpRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTNSQ0xFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjRRaXhEUVVGRE8wbEJSVVE3T3p0UFFVZEhPMGxCUTBzc1kwRkJZeXhEUVVGRExFTkJRVk1zUlVGQlJTeERRVUZUTzFGQlEzcERMRTlCUVU4c1EwRkJReXhEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTTFRaXhEUVVGRE8wbEJSVVE3T3p0UFFVZEhPMGxCUTBzc1dVRkJXU3hEUVVGRExFTkJRVThzUlVGQlJTeERRVUZQTzFGQlEyNURMRTlCUVU4c1EwRkJReXhEUVVGRExFOUJRVThzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVOdVF5eERRVUZETzBsQlJVUTdPenM3T3p0UFFVMUhPMGxCUTA4c1MwRkJTenRSUVVOaUxFbEJRVWtzU1VGQlNTeERRVUZETEZkQlFWYzdXVUZEYkVJc1NVRkJTU3hEUVVGRExEQkNRVUV3UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFVkJRVVVzWlVGQlpTeERRVUZETEVOQlFVTTdVVUZEY2tVc1NVRkJTU3hKUVVGSkxFTkJRVU1zVjBGQlZ6dFpRVU5zUWl4SlFVRkpMRU5CUVVNc01FSkJRVEJDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSU3hsUVVGbExFTkJRVU1zUTBGQlF6dFJRVU55UlN4SlFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWE8xbEJRMnhDTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZMR1ZCUVdVc1EwRkJReXhEUVVGRE8xRkJRMmhGTEVsQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZjN1dVRkRiRUlzU1VGQlNTeERRVUZETERCQ1FVRXdRaXhEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVXNaVUZCWlN4RFFVRkRMRU5CUVVNN1VVRkZja1VzVFVGQlRTeE5RVUZOTEVkQlFYRkNPMWxCUXk5Q0xFMUJRVTBzUlVGQlJTeEpRVUZKTEVOQlFVTXNZMEZCWXp0WlFVTXpRaXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEZsQlFWazdXVUZEZGtJc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eGpRVUZqTzJkQ1FVTjRRaXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUzBGQlN6dG5Ra0ZEYUVRc1EwRkJReXhEUVVGRExEWkVRVUUyUkR0dlFrRkROMFFzUTBGQlF5eEZRVUZMTEVWQlFVVXNSVUZCUlR0M1FrRkRVaXhQUVVGUExFbEJRVWtzUTBGQlF6dHZRa0ZEWkN4RFFVRkRPMWxCUTB3c1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eGhRVUZoTzFsQlEzcENMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zWTBGQll6dFpRVU42UWl4UFFVRlBMRVZCUVVVc1NVRkJTU3hEUVVGRExHZENRVUZuUWp0VFFVTXZRaXhEUVVGRE8xRkJSVVlzU1VGQlNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4aFFVRmhMRXRCUVVzc1YwRkJWenRaUVVGRkxFMUJRVTBzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJRenRSUVVOcVJpeEpRVUZKTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUk3V1VGQlJTeE5RVUZOTEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNRMEZCUXp0UlFVTnNSaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTzFsQlFVVXNUVUZCVFN4RFFVRkRMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlEzQkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmM3V1VGQlJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU03VVVGRGNFUXNTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWenRaUVVGRkxFMUJRVTBzUTBGQlF5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJRenRSUVVOd1JDeEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhPMWxCUVVVc1RVRkJUU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRPMUZCUTNCRUxFbEJRVWtzU1VGQlNTeERRVUZETEdkQ1FVRm5RanRaUVVGRkxFMUJRVTBzUTBGQlF5eFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETzFGQlEyNUZMRWxCUVVrc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMRTFCUVUwN1dVRkJSU3hOUVVGTkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRSUVVOb1JTeFBRVUZQTEUxQlFUUkNMRU5CUVVNN1NVRkRkRU1zUTBGQlF6dEpRVVZFT3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenRQUVRCQ1J6dEpRVU5QTEdOQlFXTXNRMEZCUXl4VFFVRjFRanRSUVVNNVF5eFBRVUZQTzFsQlEwd3NTMEZCU3l4RlFVRkZMRU5CUVVNc1EwRkJVU3hGUVVGRkxFVkJRVVU3WjBKQlEyeENMRTFCUVUwc1JVRkJSU3hMUVVGTExFVkJRVVVzVVVGQlVTeEZRVUZGTEZWQlFWVXNSVUZCUlN4SFFVRkhMRk5CU1haRExFTkJRVU03WjBKQlJVWXNTVUZEUlN4RFFVRkRMR0ZCUVdFc1EwRkJReXhIUVVGSExFVkJRVVVzWVVGQllTeERRVUZETEVWQlFVVXNSVUZCUlN4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVU42UkN4UlFVRjVRaXhEUVVNeFFpeExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVTlNMRU5CUVVNN2IwSkJRMFFzVVVGQlVTeFJRVUZSTEVWQlFVVXNRMEZCUXp0M1FrRkRha0lzUzBGQlN5eFJRVUZSTEVOQlFVTXNUVUZCVFRzMFFrRkRiRUlzVDBGQlR5eERRVUZETEVOQlFVTXNTMEZCYjBJc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF6dDNRa0ZET1VNc1MwRkJTeXhSUVVGUkxFTkJRVU1zVTBGQlV6czBRa0ZEY2tJc1QwRkJUeXhEUVVGRExFTkJRVU1zUzBGQmIwSXNRMEZCUXl4SlFVRkpMRlZCUVZVc1EwRkJRenQzUWtGREwwTXNTMEZCU3l4UlFVRlJMRU5CUVVNc1UwRkJVenMwUWtGRGNrSXNUMEZCVHl4RFFVRkRMRU5CUVVNc1MwRkJiMElzUTBGQlF5eExRVUZMTEZWQlFWVXNRMEZCUXp0M1FrRkRhRVFzUzBGQlN5eFJRVUZSTEVOQlFVTXNTMEZCU3pzMFFrRkRha0lzVDBGQlR5eERRVUZETEVOQlFVTXNTMEZCYjBJc1EwRkJReXhMUVVGTExGVkJRVlVzUTBGQlF6dDNRa0ZEYUVRc1MwRkJTeXhSUVVGUkxFTkJRVU1zVFVGQlRUczBRa0ZEYkVJc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eExRVUZ2UWl4RFFVRkRMRXRCUVVzc1VVRkJVVHRuUTBGRE4wTXNUVUZCVFN4SlFVRkpMRlZCUVZVc1EwRkRiRUlzZDBSQlFYZEVMRU5CUVVNc1EwRkJReXhMUVVGdlFpeERRVUZETEVWQlFVVXNRMEZEYkVZc1EwRkJRenMwUWtGRFNpeFBRVUZQTEVOQlFVTXNRMEZCUlN4RFFVRkRMRU5CUVVNc1MwRkJiMElzUTBGQmRVSXNRMEZCUXl4TFFVRkxMRU5CUXpORUxFbEJRVWtzVFVGQlRTeERRVUZETEZWQlFWVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkROVUlzUTBGQlF6dDNRa0ZEU2l4TFFVRkxMRkZCUVZFc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZET3pSQ1FVTXhRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eExRVUZ2UWl4RFFVRkRPelJDUVVOc1F5eE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRmpMRU5CUVVNN05FSkJRMmhETEUxQlFVMHNVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVmtzUTBGQlF6czBRa0ZEY2tNc1NVRkJTU3hQUVVGUExGTkJRVk1zUzBGQlN5eFJRVUZSTEVWQlFVVXNRMEZCUXp0blEwRkRiRU1zVFVGQlRTeEpRVUZKTEZWQlFWVXNRMEZEYkVJc05FUkJRVFJFTEZGQlFWRXNSMEZCUnl4RFFVTjRSU3hEUVVGRE96UkNRVU5LTEVOQlFVTTdORUpCUTBRc1NVRkJTU3hQUVVGUExGVkJRVlVzUzBGQlN5eFJRVUZSTEVWQlFVVXNRMEZCUXp0blEwRkRia01zVFVGQlRTeEpRVUZKTEZWQlFWVXNRMEZEYkVJc01FUkJRVEJFTEU5QlFVOHNWVUZCVlN4RlFVRkZMRU5CUXpsRkxFTkJRVU03TkVKQlEwb3NRMEZCUXpzMFFrRkRSQ3hQUVVGUkxGTkJRVzlDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8zZENRVU4wUkN4RFFVRkRPM2RDUVVORUxFdEJRVXNzVVVGQlVTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNN05FSkJRM2hDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRXRCUVc5Q0xFTkJRVU03TkVKQlEyeERMRTFCUVUwc1VVRkJVU3hIUVVGSExFbEJRV01zUTBGQlF6czBRa0ZEYUVNc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCV1N4RFFVRkRPelJDUVVOeVF5eEpRVUZKTEU5QlFVOHNVMEZCVXl4TFFVRkxMRkZCUVZFc1JVRkJSU3hEUVVGRE8yZERRVU5zUXl4TlFVRk5MRWxCUVVrc1ZVRkJWU3hEUVVOc1Fpd3dSRUZCTUVRc1VVRkJVU3hIUVVGSExFTkJRM1JGTEVOQlFVTTdORUpCUTBvc1EwRkJRenMwUWtGRFJDeEpRVUZKTEU5QlFVOHNWVUZCVlN4TFFVRkxMRkZCUVZFc1JVRkJSU3hEUVVGRE8yZERRVU51UXl4TlFVRk5MRWxCUVVrc1ZVRkJWU3hEUVVOc1FpeDNSRUZCZDBRc1QwRkJUeXhWUVVGVkxFVkJRVVVzUTBGRE5VVXNRMEZCUXpzMFFrRkRTaXhEUVVGRE96UkNRVU5FTEU5QlFWRXNVMEZCYjBJc1EwRkJReXhSUVVGUkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdkMEpCUTNCRUxFTkJRVU03ZDBKQlEwUXNTMEZCU3l4UlFVRlJMRU5CUVVNc1QwRkJUenMwUWtGRGJrSXNUMEZCVHl4RFFVRkRMRU5CUVVNc1MwRkJiMElzUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXp0M1FrRkRPVU1zUzBGQlN5eFJRVUZSTEVOQlFVTXNWVUZCVlRzMFFrRkRkRUlzVDBGQlR5eERRVUZETEVOQlFVTXNTMEZCYjBJc1EwRkJReXhKUVVGSkxGVkJRVlVzUTBGQlF6dDNRa0ZETDBNc1MwRkJTeXhSUVVGUkxFTkJRVU1zUlVGQlJUczBRa0ZEWkN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTTdaME5CUXpWQ0xFMUJRVTBzU1VGQlNTeFZRVUZWTEVOQlEyeENMSFZEUVVGMVF5eFBRVUZQTEZWQlFWVXNSVUZCUlN4RFFVTXpSQ3hEUVVGRE96UkNRVU5LTEU5QlFVOHNWVUZCVlN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQmIwSXNRMEZCUXl4RFFVRkRMRU5CUVVNN2QwSkJRM1JFTEV0QlFVc3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03TkVKQlEzUkNMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRlZCUVZVc1EwRkJReXhOUVVGTkxFdEJRVXNzUTBGQlF6dG5RMEZEZGtRc1RVRkJUU3hKUVVGSkxGVkJRVlVzUTBGRGJFSXNjVVZCUVhGRkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlEycEdMRlZCUVZVc1EwRkRXQ3hGUVVGRkxFTkJRMG9zUTBGQlF6czBRa0ZEU2l4TlFVRk5MRWxCUVVrc1IwRkJSeXhMUVVGdlFpeERRVUZET3pSQ1FVTnNReXhOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZqTEVOQlFVTTdORUpCUTJoRExFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NRMEZCUXl4elFrRkJjMElzUTBGRE1VTXNRMEZCUXl4RFFVRkRMRmRCUVdsRExFVkJRMjVETEZGQlFWRXNSVUZEVWl4VFFVRlRMRU5CUTFZc1EwRkJRenMwUWtGRFJpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeFJRVUZSTEV0QlFVc3NUVUZCVFN4RlFVRkZMRU5CUVVNN1owTkJRM3BFTEUxQlFVMHNTVUZCU1N4VlFVRlZMRU5CUTJ4Q0xEaEVRVUU0UkN4UlFVRlJMRkZCUVZFc1VVRkJVVHR2UTBGRGNFWXNVMEZCVXl4RlFVRkZMRU5CUTJRc1EwRkJRenMwUWtGRFNpeERRVUZET3pSQ1FVTkVMRTFCUVUwc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVkQlFVY3NWVUZCVlN4RFFVRkRPelJDUVVNNVFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03TkVKQlEzUkNMRTFCUVUwc1pVRkJaU3hIUVVGSExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkROVU1zUzBGQlN5eEZRVU5NTEZGQlFWRXNSVUZEVWl4UlFVRlJMRVZCUTFJc1UwRkJVeXhGUVVOVUxFVkJRVVVzVTBGQlV5eEZRVUZGTEVsQlFVa3NSVUZCUlN4RFFVTndRaXhEUVVGRE96UkNRVU5HTEVsQlFVa3NaVUZCWlN4TFFVRkxMRWxCUVVrN1owTkJRVVVzVDBGQlR5eExRVUZMTEVOQlFVTTdORUpCUXpORExFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGRE1VTXNSMEZCUnl4RlFVTklMRkZCUVZFc1JVRkRVaXhSUVVGUkxFVkJRMUlzWVVGQllTeERRVU5pTEVOQlFVTTdORUpCUTBnc1RVRkJUU3hoUVVGaExFZEJRVWNzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVNeFF5eEhRVUZITEVWQlEwZ3NVVUZCVVN4RlFVTlNMRkZCUVZFc1JVRkRVaXhoUVVGaExFTkJRMklzUTBGQlF6czBRa0ZEU0N4UFFVRlBMRU5CUTB3c1pVRkJaU3hKUVVGSkxHRkJRV0VzU1VGQlNTeGxRVUZsTEVsQlFVa3NZVUZCWVN4RFFVTnlSU3hEUVVGRE8zZENRVU5LTEVOQlFVTTdkMEpCUTBRc1MwRkJTeXhSUVVGUkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXpzMFFrRkRja0lzVFVGQlRTeFBRVUZQTEVkQlExZ3NRMEZCUXl4RFFVRkRMRXRCUVc5Q0xFTkJRVU1zUzBGQlN5eFRRVUZUTzJkRFFVTnlReXhEUVVGRExFTkJRVU1zUzBGQmIwSXNRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJRenMwUWtGRGJrTXNUMEZCVHl4VlFVRlZMRXRCUVVzc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRE8zZENRVU51UkN4RFFVRkRPM2RDUVVORU96UkNRVU5GTEUxQlFVMHNTVUZCU1N4aFFVRmhMRU5CUTNKQ0xEaERRVUU0UXl4UlFVRlJMRVZCUVVVc1EwRkRla1FzUTBGQlF6dHZRa0ZEVGl4RFFVRkRPMmRDUVVOSUxFTkJRVU03Y1VKQlFVMHNTVUZCU1N4UlFVRlJMRXRCUVVzc1VVRkJVU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzI5Q1FVTnlReXhKUVVGSkxFTkJRVU1zUTBGQlF5eExRVUZMTEZsQlFWa3NVMEZCVXl4RFFVRkRMRVZCUVVVc1EwRkJRenQzUWtGRGJFTXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzYjBSQlFXOUVMRU5CUTNKRUxFTkJRVU03YjBKQlEwb3NRMEZCUXp0dlFrRkRSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRXRCUVhGQ0xFTkJRVU1zUTBGQlF6dHZRa0ZETVVRc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRekZDTEVOQlFVTTdjVUpCUVUwc1EwRkJRenR2UWtGRFRpeE5RVUZOTEVkQlFVY3NSMEZCZFVJc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGRGFrUXNTMEZCY1VJc1EwRkRkRUlzUTBGQlF6dHZRa0ZEUml4TlFVRk5MRWRCUVVjc1IwRkJkVUlzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZEYWtRc1ZVRkJNRUlzUTBGRE0wSXNRMEZCUXp0dlFrRkRSaXhSUVVGUkxGRkJRVkVzUlVGQlJTeERRVUZETzNkQ1FVTnFRaXhMUVVGTExHRkJRV0VzUTBGQlF5eEhRVUZIT3pSQ1FVTndRaXhQUVVGUExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0M1FrRkRkRU1zUzBGQlN5eGhRVUZoTEVOQlFVTXNSVUZCUlRzMFFrRkRia0lzVDBGQlR5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2QwSkJRM1JET3pSQ1FVTkZMRTFCUVUwc1NVRkJTU3hoUVVGaExFTkJRM0pDTERSRFFVRTBReXhSUVVGUkxFVkJRVVVzUTBGRGRrUXNRMEZCUXp0dlFrRkRUaXhEUVVGRE8yZENRVU5JTEVOQlFVTTdXVUZEU0N4RFFVRkRPMU5CUTI5Q0xFTkJRVU03U1VGRE1VSXNRMEZCUXp0SlFVVkVPenM3T3p0UFFVdEhPMGxCUTBzc2NVSkJRWEZDTEVOQlF6TkNMRkZCUVRKQ0xFVkJRek5DTEU5QlFXVTdVVUZGWml4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlEzSkNMRkZCUVZFc1JVRkRVaXhQUVVGUExFVkJRMUFzUTBGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlEyeERMRk5CUVZNc1EwRkRWaXhEUVVGRE8wbEJRMG9zUTBGQlF6dEpRVVZFT3pzN096dFBRVXRITzBsQlEwc3NNRUpCUVRCQ0xFTkJRMmhETEZGQlFUSkNMRVZCUXpOQ0xFOUJRV1U3VVVGRlppeEpRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFTkJRM0pDTEZGQlFWRXNSVUZEVWl4UFFVRlBMRVZCUTFBc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzU1VGQlNTeExRVUZMTEUxQlFVMHNSVUZEY2tRc2FVSkJRV2xDTEVOQlEyeENMRU5CUVVNN1NVRkRTaXhEUVVGRE8wbEJSVVE3T3pzN096czdPenRQUVZOSE8wbEJRMHNzYTBKQlFXdENMRU5CUTNoQ0xGRkJRVEpDTEVWQlF6TkNMRTlCUVdVc1JVRkRaaXhUUVVGdlF5eEZRVU53UXl4WFFVRnRRanRSUVVWdVFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRE8xbEJRM1pDTEUxQlFVMHNTVUZCU1N4aFFVRmhMRU5CUTNKQ0xFZEJRVWNzVDBGQlR5d3lSRUZCTWtRc1EwRkRkRVVzUTBGQlF6dFJRVU5LTEVOQlFVTTdVVUZEUkN4TlFVRk5MRWxCUVVrc1IwRkJSeXhSUVVGclFpeERRVUZETzFGQlEyaERMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eHpRa0ZCYzBJc1EwRkRkRU1zU1VGQlNTeERRVUZETEZsQlFWa3NSVUZEYWtJc1NVRkJNRUlzUlVGRE1VSXNUMEZCVHl4RFFVTlNMRU5CUVVNN1VVRkZSaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNN1dVRkRja0lzVFVGQlRTeEpRVUZKTEZWQlFWVXNRMEZEYkVJc1IwRkJSeXhQUVVGUExHVkJRV1VzVjBGQlZ5eHZRa0ZCYjBJc1NVRkJTU3hSUVVGUkxFbEJRVWtzU1VGQlNTeFRRVUZUTEVWQlFVVXNRMEZEZUVZc1EwRkJRenRSUVVOS0xFTkJRVU03U1VGRFNDeERRVUZETzBsQlJVUTdPenM3T3pzN08wOUJVVWM3U1VGRFN5eHpRa0ZCYzBJc1EwRkROVUlzUzBGQmVVSXNSVUZEZWtJc1NVRkJXU3hGUVVOYUxFOUJRV1U3VVVGRlppeE5RVUZOTEU5QlFVOHNSMEZCUnl4SlFVRXdRaXhEUVVGRE8xRkJRek5ETEUxQlFVMHNVVUZCVVN4SFFVTmFMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEU5QlFVOHNRMEZCUXp0WlFVTTNRaXhSUVVGUkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhGUVVGRkxFOUJRVThzUTBGQlF5eEZRVUZGTEZWQlFWVXNRMEZCUXp0UlFVTXhSQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEYkVRc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzFsQlEyUXNUVUZCVFN4SlFVRkpMRlZCUVZVc1EwRkRiRUlzUjBGQlJ5eFBRVUZQTEhsRFFVRjVReXhKUVVGSkxFZEJRVWNzUTBGRE0wUXNRMEZCUXp0UlFVTktMRU5CUVVNN1VVRkRSQ3hQUVVGUExGRkJRVkVzUTBGQlF6dEpRVU5zUWl4RFFVRkRPMGxCUlVRN096czdUMEZKUnp0SlFVTkxMR2xDUVVGcFFpeERRVUZETEZGQlFXRTdVVUZEY2tNc1NVRkJTU3hEUVVGRExGRkJRVkU3V1VGQlJTeFBRVUZQTEZOQlFWTXNRMEZCUXp0UlFVTm9ReXhKUVVGSkxFOUJRVThzVVVGQlVTeExRVUZMTEZGQlFWRTdXVUZCUlN4UFFVRlBMRkZCUVZFc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF6dFJRVU5vUlN4SlFVRkpMRTlCUVU4c1VVRkJVU3hMUVVGTExGVkJRVlVzU1VGQlNTeFJRVUZSTEVOQlFVTXNTVUZCU1R0WlFVTnFSQ3hQUVVGUExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNN1VVRkRja01zVDBGQlR5eFRRVUZUTEVOQlFVTTdTVUZEYmtJc1EwRkJRenRKUVVWRU96czdPMDlCU1VjN1NVRkRTeXhoUVVGaExFTkJRVU1zU1VGQllUdFJRVU5xUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhSUVVGUkxFbEJRVWtzU1VGQlNTeExRVUZMTEZGQlFWRXNRMEZCUXp0SlFVTm9SQ3hEUVVGRE8wbEJSVVE3T3pzN096czdPenM3TzA5QlYwYzdTVUZEU3l4cFFrRkJhVUlzUTBGRGRrSXNTMEZCVlN4RlFVTldMRkZCUVdkQ0xFVkJRMmhDTEZGQlFXZENMRVZCUTJoQ0xFOUJRV1VzUlVGRFppeFBRVUZwUXp0UlFVVnFReXhKUVVGSkxFdEJRVXNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXp0WlFVTnNRaXhKUVVGSkxFOUJRVThzUlVGQlJTeFRRVUZUTzJkQ1FVRkZMRTlCUVU4c1NVRkJTU3hEUVVGRE8xbEJRM0JETEUxQlFVMHNTVUZCU1N4VlFVRlZMRU5CUVVNc1IwRkJSeXhQUVVGUExEQkNRVUV3UWl4UlFVRlJMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM2hGTEVOQlFVTTdVVUZEUkN4UlFVRlJMRkZCUVZFc1JVRkJSU3hEUVVGRE8xbEJRMnBDTEV0QlFVc3NUVUZCVFR0blFrRkRWQ3hKUVVGSkxFTkJRVU1zUTBGQlF5eExRVUZMTEZsQlFWa3NTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJRenR2UWtGRE4wSXNUVUZCVFN4SlFVRkpMRlZCUVZVc1EwRkRiRUlzUjBGQlJ5eFBRVUZQTEhWQ1FVRjFRaXhSUVVGUkxIZENRVUYzUWl4RFFVTnNSU3hEUVVGRE8yZENRVU5LTEVOQlFVTTdaMEpCUTBRc1QwRkJUeXhMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdXVUZEZWtJc1MwRkJTeXhSUVVGUk8yZENRVU5ZTEVsQlFVa3NUMEZCVHl4TFFVRkxMRXRCUVVzc1VVRkJVU3hGUVVGRkxFTkJRVU03YjBKQlF6bENMRTFCUVUwc1NVRkJTU3hWUVVGVkxFTkJRMnhDTEVkQlFVY3NUMEZCVHl3d1FrRkJNRUlzVVVGQlVTd3dRa0ZCTUVJc1EwRkRka1VzUTBGQlF6dG5Ra0ZEU2l4RFFVRkRPMmRDUVVORUxFOUJRVThzUzBGQlN5eERRVUZETzFsQlEyWXNTMEZCU3l4UlFVRlJPMmRDUVVOWUxFbEJRVWtzVDBGQlR5eExRVUZMTEV0QlFVc3NVVUZCVVR0dlFrRkJSU3hQUVVGUExFdEJRVXNzUTBGQlF6dG5Ra0ZETlVNc1NVRkJTU3hQUVVGUExFdEJRVXNzUzBGQlN5eFJRVUZSTzI5Q1FVRkZMRTlCUVU4c1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzJkQ1FVTndSQ3hOUVVGTkxFbEJRVWtzVlVGQlZTeERRVU5zUWl4SFFVRkhMRTlCUVU4c2VVSkJRWGxDTEZGQlFWRXNNa0pCUVRKQ0xFTkJRM1pGTEVOQlFVTTdXVUZEU2p0blFrRkRSU3hOUVVGTkxFbEJRVWtzVlVGQlZTeERRVU5zUWl4SFFVRkhMRTlCUVU4c2MwSkJRWE5DTEZGQlFWRXNiMEpCUVc5Q0xGRkJRVkVzUjBGQlJ5eERRVU40UlN4RFFVRkRPMUZCUTA0c1EwRkJRenRKUVVOSUxFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdYRzRnSUVGa1lYQjBaWElzWEc0Z0lFRmtZWEIwWlhKR2JHRm5jeXhjYmlBZ1EyOXVaR2wwYVc5dUxGeHVJQ0JIY205MWNFOXdaWEpoZEc5eUxGeHVJQ0JQY0dWeVlYUnZjaXhjYmlBZ1QzSmtaWEpFYVhKbFkzUnBiMjRzWEc0Z0lGRjFaWEo1UlhKeWIzSXNYRzRnSUZObGJHVmpkRk5sYkdWamRHOXlMRnh1SUNCVGRHRjBaVzFsYm5Rc1hHNTlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZZMjl5WlZ3aU8xeHVhVzF3YjNKMElIc2dVbVZrYVhORGIyNTBaWGgwTENCU1lYZFNaV1JwYzFGMVpYSjVJSDBnWm5KdmJTQmNJaTR2ZEhsd1pYTmNJanRjYm1sdGNHOXlkQ0I3SUUxdlpHVnNJSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTlrWldOdmNtRjBiM0l0ZG1Gc2FXUmhkR2x2Ymx3aU8xeHVhVzF3YjNKMElIc2dTVzUwWlhKdVlXeEZjbkp2Y2lCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlpHSXRaR1ZqYjNKaGRHOXljMXdpTzF4dWFXMXdiM0owSUhzZ1EyOXVjM1J5ZFdOMGIzSXNJRTFsZEdGa1lYUmhJSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTlrWldOdmNtRjBhVzl1WENJN1hHNWNiaThxS2x4dUlDb2dRR1JsYzJOeWFYQjBhVzl1SUZKbFpHbHpMWE53WldOcFptbGpJSEYxWlhKNUlITjBZWFJsYldWdWRDQmlkV2xzWkdWeVhHNGdLaUJBYzNWdGJXRnllU0JGZUhSbGJtUnpJSFJvWlNCaVlYTmxJRk4wWVhSbGJXVnVkQ0JqYkdGemN5QjBieUJ3Y205MmFXUmxJSEYxWlhKNUlHSjFhV3hrYVc1bklHWjFibU4wYVc5dVlXeHBkSGtnWm05eUlIUm9aU0JTWldScGN5QmhaR0Z3ZEdWeUxseHVJQ29nVkdocGN5QmpiR0Z6Y3lCMGNtRnVjMnhoZEdWeklHaHBaMmd0YkdWMlpXd2djWFZsY25rZ2IzQmxjbUYwYVc5dWN5QnBiblJ2SUhCeVpXUnBZMkYwWlhNZ2RHaGhkQ0JqWVc0Z1ptbHNkR1Z5SUdGdVpDQnpiM0owWEc0Z0tpQnBiaTF0WlcxdmNua2daR0YwWVNCemRISjFZM1IxY21WeklDaHlaV052Y21SeklISmxkbVZ5ZEdWa0lHWnliMjBnZEdobElIUmhZbXhsSUdoaGMyZ3BMbHh1SUNvZ1FIUmxiWEJzWVhSbElFMGdMU0JVYUdVZ2JXOWtaV3dnZEhsd1pTQmlaV2x1WnlCeGRXVnlhV1ZrWEc0Z0tpQkFkR1Z0Y0d4aGRHVWdVaUF0SUZSb1pTQnlaWE4xYkhRZ2RIbHdaU0J5WlhSMWNtNWxaQ0JpZVNCMGFHVWdjWFZsY25sY2JpQXFJRUJqYkdGemN5QlNaV1JwYzFOMFlYUmxiV1Z1ZEZ4dUlDb2dRR05oZEdWbmIzSjVJRkpsWkdselhHNGdLaUJBWlhoaGJYQnNaVnh1SUNvZ1lHQmdkSGx3WlhOamNtbHdkRnh1SUNvZ0x5OGdRM0psWVhSbElHRWdjM1JoZEdWdFpXNTBJR1p2Y2lCeGRXVnllV2x1WnlCVmMyVnlJRzF2WkdWc2MxeHVJQ29nWTI5dWMzUWdjM1JoZEdWdFpXNTBJRDBnY21Wa2FYTkJaR0Z3ZEdWeUxsTjBZWFJsYldWdWREeFZjMlZ5UGlncE8xeHVJQ3BjYmlBcUlDOHZJRUoxYVd4a0lHRWdjWFZsY25rZ2RHOGdabWx1WkNCaFkzUnBkbVVnZFhObGNuTWdkMmwwYUNCaFoyVWdQaUF4T0Z4dUlDb2dZMjl1YzNRZ2NtVnpkV3gwY3lBOUlHRjNZV2wwSUhOMFlYUmxiV1Z1ZEZ4dUlDb2dJQ0F1Wm5KdmJTaFZjMlZ5S1Z4dUlDb2dJQ0F1ZDJobGNtVW9RMjl1WkdsMGFXOXVMbUZ1WkNoY2JpQXFJQ0FnSUNCRGIyNWthWFJwYjI0dVpYRW9KMkZqZEdsMlpTY3NJSFJ5ZFdVcExGeHVJQ29nSUNBZ0lFTnZibVJwZEdsdmJpNW5kQ2duWVdkbEp5d2dNVGdwWEc0Z0tpQWdJQ2twWEc0Z0tpQWdJQzV2Y21SbGNrSjVLQ2RzWVhOMFRtRnRaU2NzSUNkaGMyTW5LVnh1SUNvZ0lDQXViR2x0YVhRb01UQXBYRzRnS2lBZ0lDNWxlR1ZqZFhSbEtDazdYRzRnS2lCZ1lHQmNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRkpsWkdselUzUmhkR1Z0Wlc1MFBGeHVJQ0JOSUdWNGRHVnVaSE1nVFc5a1pXd3NYRzRnSUZJc1hHNGdJRUVnWlhoMFpXNWtjeUJCWkdGd2RHVnlQRTBzSUdGdWVTd2dVbUYzVW1Wa2FYTlJkV1Z5ZVR4aGJuaytMQ0JTWldScGMwTnZiblJsZUhRK0xGeHVQaUJsZUhSbGJtUnpJRk4wWVhSbGJXVnVkRHhOTENCQkxDQlNMQ0JTWVhkU1pXUnBjMUYxWlhKNVBHRnVlVDQrSUh0Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCRGNtVmhkR1Z6SUdFZ2MzUmhkR1Z0Wlc1MElHSnZkVzVrSUhSdklIUm9aU0JTWldScGN5QmhaR0Z3ZEdWeVhHNGdJQ0FxSUVCd1lYSmhiU0I3UVgwZ1lXUmhjSFJsY2lBdElGUm9aU0JTWldScGN5QmhaR0Z3ZEdWeUlHbHVjM1JoYm1ObElIUnZJSFZ6WlNCbWIzSWdaWGhsWTNWMGFXNW5JSEYxWlhKcFpYTmNiaUFnSUNvZ1FIQmhjbUZ0SUh0UVlYSjBhV0ZzUEVGa1lYQjBaWEpHYkdGbmN6NTlJRnR2ZG1WeWNtbGtaWE5kSUMwZ1QzQjBhVzl1WVd3Z1lXUmhjSFJsY2lCbWJHRm5JRzkyWlhKeWFXUmxjMXh1SUNBZ0tpOWNiaUFnWTI5dWMzUnlkV04wYjNJb1lXUmhjSFJsY2pvZ1FTd2diM1psY25KcFpHVnpQem9nVUdGeWRHbGhiRHhCWkdGd2RHVnlSbXhoWjNNK0tTQjdYRzRnSUNBZ2MzVndaWElvWVdSaGNIUmxjaXdnYjNabGNuSnBaR1Z6S1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjRnUTNKbFlYUmxjeUJoSUhOdmNuUWdZMjl0Y0dGeVlYUnZjaUJtZFc1amRHbHZibHh1SUNBZ0tpQkFjM1Z0YldGeWVTQkhaVzVsY21GMFpYTWdZU0JtZFc1amRHbHZiaUIwYUdGMElHTnZiWEJoY21WeklIUjNieUJ0YjJSbGJDQnBibk4wWVc1alpYTWdZbUZ6WldRZ2IyNGdkR2hsSUc5eVpHVnlRbmtnWTNKcGRHVnlhV0V1WEc0Z0lDQXFJRlJvYVhNZ2JXVjBhRzlrSUdoaGJtUnNaWE1nWkdsbVptVnlaVzUwSUdSaGRHRWdkSGx3WlhNZ0tITjBjbWx1Wnl3Z2JuVnRZbVZ5TENCa1lYUmxLU0JoYm1RZ2MyOXlkQ0JrYVhKbFkzUnBiMjV6SUNoaGMyTXNJR1JsYzJNcExseHVJQ0FnS2lCQWNtVjBkWEp1SUh0bWRXNWpkR2x2YmloTmIyUmxiQ3dnVFc5a1pXd3BPaUJ1ZFcxaVpYSjlJRUVnWTI5dGNHRnlZWFJ2Y2lCbWRXNWpkR2x2YmlCbWIzSWdjMjl5ZEdsdVp5QnRiMlJsYkNCcGJuTjBZVzVqWlhOY2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1oyVjBVMjl5ZENncElIdGNiaUFnSUNCamIyNXpkQ0J6Wld4bFkzUnZjbk1nUFNCMGFHbHpMbTl5WkdWeVFubFRaV3hsWTNSdmNuTTdYRzRnSUNBZ2NtVjBkWEp1SUNobGJERTZJRTF2WkdWc0xDQmxiREk2SUUxdlpHVnNLU0E5UGlCN1hHNGdJQ0FnSUNCcFppQW9JWE5sYkdWamRHOXljeUI4ZkNBaGMyVnNaV04wYjNKekxteGxibWQwYUNsY2JpQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFbHVkR1Z5Ym1Gc1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUNBZ1hDSnZjbVJsY2tKNVUyVnNaV04wYjNKeklHNXZkQ0J6WlhRdUlGTm9iM1ZzWkNCaVpTQnBiWEJ2YzNOcFlteGxYQ0pjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ1cydGxlU3dnWkdseVpXTjBhVzl1WFNCdlppQnpaV3hsWTNSdmNuTXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdibTl5YldGc2FYcGxaRVJwY21WamRHbHZiaUE5SUZOMGNtbHVaeWhrYVhKbFkzUnBiMjRwTG5SdlRHOTNaWEpEWVhObEtDazdYRzRnSUNBZ0lDQWdJR052Ym5OMElHUnBjbVZqZEdsdmJrWmhZM1J2Y2lBOVhHNGdJQ0FnSUNBZ0lDQWdibTl5YldGc2FYcGxaRVJwY21WamRHbHZiaUE5UFQwZ1QzSmtaWEpFYVhKbFkzUnBiMjR1UVZORElEOGdNU0E2SUMweE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCamIyMXdZWEpwYzI5dUlEMGdkR2hwY3k1amIyMXdZWEpsUW5sTFpYa29aV3d4TENCbGJESXNJR3RsZVNCaGN5QnJaWGx2WmlCTmIyUmxiQ2s3WEc0Z0lDQWdJQ0FnSUdsbUlDaGpiMjF3WVhKcGMyOXVJQ0U5UFNBd0tTQnlaWFIxY200Z1pHbHlaV04wYVc5dVJtRmpkRzl5SUNvZ1kyOXRjR0Z5YVhOdmJqdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlBd08xeHVJQ0FnSUgwN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUVOdmJYQmhjbVZ6SUhSM2J5QnRiMlJsYkhNZ1lua2dZU0J6YVc1bmJHVWdZWFIwY21saWRYUmxYRzRnSUNBcUlFQnpkVzF0WVhKNUlGSmxjMjlzZG1WeklIUm9aU0JoZEhSeWFXSjFkR1VuY3lCa1pYTnBaMjRnZEhsd1pTQmhibVFnWkdWc1pXZGhkR1Z6SUhSdklIUm9aU0J0WVhSamFHbHVaMXh1SUNBZ0tpQjBlWEJsTFhOd1pXTnBabWxqSUdOdmJYQmhjbUYwYjNJdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VFc5a1pXeDlJR1ZzTVNBdElGUm9aU0JtYVhKemRDQnRiMlJsYkNCcGJuTjBZVzVqWlZ4dUlDQWdLaUJBY0dGeVlXMGdlMDF2WkdWc2ZTQmxiRElnTFNCVWFHVWdjMlZqYjI1a0lHMXZaR1ZzSUdsdWMzUmhibU5sWEc0Z0lDQXFJRUJ3WVhKaGJTQjdhMlY1YjJZZ1RXOWtaV3g5SUd0bGVTQXRJRlJvWlNCaGRIUnlhV0oxZEdVZ2RHOGdZMjl0Y0dGeVpWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SUVFZ2JtVm5ZWFJwZG1VZ2JuVnRZbVZ5TENCNlpYSnZJRzl5SUdFZ2NHOXphWFJwZG1VZ2JuVnRZbVZ5SUdGeklIQmxjaUIwYUdVZ1kyOXRjR0Z5YVhOdmJseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmpiMjF3WVhKbFFubExaWGtvWld3eE9pQk5iMlJsYkN3Z1pXd3lPaUJOYjJSbGJDd2dhMlY1T2lCclpYbHZaaUJOYjJSbGJDazZJRzUxYldKbGNpQjdYRzRnSUNBZ1kyOXVjM1FnZG1Gc2RXVXhJRDBnWld3eFcydGxlVjA3WEc0Z0lDQWdZMjl1YzNRZ2RtRnNkV1V5SUQwZ1pXd3lXMnRsZVYwN1hHNWNiaUFnSUNCcFppQW9kbUZzZFdVeElEMDlQU0IyWVd4MVpUSXBJSEpsZEhWeWJpQXdPMXh1WEc0Z0lDQWdhV1lnS0haaGJIVmxNU0E5UFNCdWRXeHNJSHg4SUhaaGJIVmxNaUE5UFNCdWRXeHNLU0J5WlhSMWNtNGdkbUZzZFdVeElEMDlJRzUxYkd3Z1B5QXhJRG9nTFRFN1hHNWNiaUFnSUNCamIyNXpkQ0I3SUdSbGMybG5ibFI1Y0dVNklIUjVjR1VnZlNBOUlFMWxkR0ZrWVhSaExtZGxkRkJ5YjNCRVpYTnBaMjVVZVhCbGN5aGNiaUFnSUNBZ0lHVnNNUzVqYjI1emRISjFZM1J2Y2lCaGN5QmhibmtzWEc0Z0lDQWdJQ0JyWlhrZ1lYTWdjM1J5YVc1blhHNGdJQ0FnS1R0Y2JpQWdJQ0JqYjI1emRDQnlaWE52YkhabFpGUjVjR1VnUFZ4dUlDQWdJQ0FnS0hSNWNHVWdKaVlnZEhsd1pTNXVZVzFsSUNZbUlIUjVjR1V1Ym1GdFpTNTBiMHh2ZDJWeVEyRnpaU2dwS1NCOGZDQjBlWEJsYjJZZ2RtRnNkV1V4TzF4dVhHNGdJQ0FnYzNkcGRHTm9JQ2h5WlhOdmJIWmxaRlI1Y0dVcElIdGNiaUFnSUNBZ0lHTmhjMlVnWENKemRISnBibWRjSWpwY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMjl0Y0dGeVpWTjBjbWx1WjNNb1hHNGdJQ0FnSUNBZ0lDQWdkbUZzZFdVeElHRnpJSFZ1YTI1dmQyNGdZWE1nYzNSeWFXNW5MRnh1SUNBZ0lDQWdJQ0FnSUhaaGJIVmxNaUJoY3lCMWJtdHViM2R1SUdGeklITjBjbWx1WjF4dUlDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ1kyRnpaU0JjSW01MWJXSmxjbHdpT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWpiMjF3WVhKbFRuVnRZbVZ5Y3loY2JpQWdJQ0FnSUNBZ0lDQjJZV3gxWlRFZ1lYTWdkVzVyYm05M2JpQmhjeUJ1ZFcxaVpYSXNYRzRnSUNBZ0lDQWdJQ0FnZG1Gc2RXVXlJR0Z6SUhWdWEyNXZkMjRnWVhNZ2JuVnRZbVZ5WEc0Z0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCallYTmxJRndpWW1sbmFXNTBYQ0k2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnZiWEJoY21WQ2FXZEpiblJ6S0Z4dUlDQWdJQ0FnSUNBZ0lIWmhiSFZsTVNCaGN5QjFibXR1YjNkdUlHRnpJR0pwWjJsdWRDeGNiaUFnSUNBZ0lDQWdJQ0IyWVd4MVpUSWdZWE1nZFc1cmJtOTNiaUJoY3lCaWFXZHBiblJjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUdOaGMyVWdYQ0ppYjI5c1pXRnVYQ0k2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnZiWEJoY21WQ2IyOXNaV0Z1Y3loY2JpQWdJQ0FnSUNBZ0lDQjJZV3gxWlRFZ1lYTWdkVzVyYm05M2JpQmhjeUJpYjI5c1pXRnVMRnh1SUNBZ0lDQWdJQ0FnSUhaaGJIVmxNaUJoY3lCMWJtdHViM2R1SUdGeklHSnZiMnhsWVc1Y2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lHTmhjMlVnWENKa1lYUmxYQ0k2WEc0Z0lDQWdJQ0JqWVhObElGd2liMkpxWldOMFhDSTZYRzRnSUNBZ0lDQWdJR2xtSUNoMllXeDFaVEVnYVc1emRHRnVZMlZ2WmlCRVlYUmxJQ1ltSUhaaGJIVmxNaUJwYm5OMFlXNWpaVzltSUVSaGRHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWpiMjF3WVhKbFJHRjBaWE1vZG1Gc2RXVXhJR0Z6SUVSaGRHVXNJSFpoYkhWbE1pQmhjeUJFWVhSbEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHUmxabUYxYkhRNlhHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvY205M0lHNWxkeUJSZFdWeWVVVnljbTl5S0dCemIzSjBhVzVuSUc1dmRDQnpkWEJ3YjNKMFpXUWdabTl5SUhSNWNHVWdKSHR5WlhOdmJIWmxaRlI1Y0dWOVlDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFTnZiWEJoY21WeklIUjNieUJpYjI5c1pXRnVJSFpoYkhWbGMxeHVJQ0FnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SURBZ2QyaGxiaUJsY1hWaGJDd2dNU0IzYUdWdUlHQmhZQ0JwY3lCMGNuVmxMQ0F0TVNCdmRHaGxjbmRwYzJWY2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1kyOXRjR0Z5WlVKdmIyeGxZVzV6S0dFNklHSnZiMnhsWVc0c0lHSTZJR0p2YjJ4bFlXNHBPaUJ1ZFcxaVpYSWdlMXh1SUNBZ0lISmxkSFZ5YmlCaElEMDlQU0JpSUQ4Z01DQTZJR0VnUHlBeElEb2dMVEU3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRU52YlhCaGNtVnpJSFIzYnlCdWRXMWxjbWxqSUhaaGJIVmxjMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdHVkVzFpWlhKOUlGUm9aU0J1ZFcxbGNtbGpJR1JwWm1abGNtVnVZMlVnWW1WMGQyVmxiaUIwYUdVZ2RtRnNkV1Z6WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUdOdmJYQmhjbVZPZFcxaVpYSnpLR0U2SUc1MWJXSmxjaXdnWWpvZ2JuVnRZbVZ5S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0J5WlhSMWNtNGdZU0F0SUdJN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUVOdmJYQmhjbVZ6SUhSM2J5QmlhV2RwYm5RZ2RtRnNkV1Z6WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMGdNQ0IzYUdWdUlHVnhkV0ZzTENBeElIZG9aVzRnWUdGZ0lHbHpJR2R5WldGMFpYSXNJQzB4SUc5MGFHVnlkMmx6WlZ4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCamIyMXdZWEpsUW1sblNXNTBjeWhoT2lCaWFXZHBiblFzSUdJNklHSnBaMmx1ZENrNklHNTFiV0psY2lCN1hHNGdJQ0FnYVdZZ0tHRWdQVDA5SUdJcElISmxkSFZ5YmlBd08xeHVJQ0FnSUhKbGRIVnliaUJoSUQ0Z1lpQS9JREVnT2lBdE1UdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1EyOXRjR0Z5WlhNZ2RIZHZJSE4wY21sdVozTWdkWE5wYm1jZ2JHOWpZV3hsTFdGM1lYSmxJRzl5WkdWeWFXNW5YRzRnSUNBcUlFQnlaWFIxY200Z2UyNTFiV0psY24wZ1ZHaGxJR3h2WTJGc1pTQmpiMjF3WVhKbElISmxjM1ZzZENCaVpYUjNaV1Z1SUhSb1pTQjJZV3gxWlhOY2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1kyOXRjR0Z5WlZOMGNtbHVaM01vWVRvZ2MzUnlhVzVuTENCaU9pQnpkSEpwYm1jcE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUhKbGRIVnliaUJoTG14dlkyRnNaVU52YlhCaGNtVW9ZaWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRU52YlhCaGNtVnpJSFIzYnlCa1lYUmxjeUJpZVNCMGFHVnBjaUJsY0c5amFDQjBhVzFsYzNSaGJYQnpYRzRnSUNBcUlFQnlaWFIxY200Z2UyNTFiV0psY24wZ1ZHaGxJR1JwWm1abGNtVnVZMlVnWW1WMGQyVmxiaUIwYUdVZ2RHbHRaWE4wWVcxd2MxeHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmpiMjF3WVhKbFJHRjBaWE1vWVRvZ1JHRjBaU3dnWWpvZ1JHRjBaU2s2SUc1MWJXSmxjaUI3WEc0Z0lDQWdjbVYwZFhKdUlHRXVkbUZzZFdWUFppZ3BJQzBnWWk1MllXeDFaVTltS0NrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUVKMWFXeGtjeUJoSUZKbFpHbHpJSEYxWlhKNUlHWnliMjBnZEdobElITjBZWFJsYldWdWRGeHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCRGIyNTJaWEowY3lCMGFHVWdjM1JoZEdWdFpXNTBKM01nYzJWc1pXTjBiM0p6SUdGdVpDQmpiMjVrYVhScGIyNXpJR2x1ZEc4Z1lTQlNZWGRTWldScGMxRjFaWEo1SUc5aWFtVmpkRnh1SUNBZ0tpQjBhR0YwSUdOaGJpQmlaU0JsZUdWamRYUmxaQ0JpZVNCMGFHVWdVbVZrYVhNZ1lXUmhjSFJsY2k0Z1ZHaHBjeUJ0WlhSb2IyUWdZWE56WlcxaWJHVnpJR0ZzYkNCeGRXVnllU0JqYjIxd2IyNWxiblJ6WEc0Z0lDQXFJQ2h6Wld4bFkzUXNJR1p5YjIwc0lIZG9aWEpsTENCc2FXMXBkQ3dnYjJabWMyVjBMQ0J6YjNKMEtTQnBiblJ2SUhSb1pTQm1hVzVoYkNCeGRXVnllU0J6ZEhKMVkzUjFjbVV1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMUpoZDFKbFpHbHpVWFZsY25rOFRUNTlJRlJvWlNCamIyNXpkSEoxWTNSbFpDQlNaV1JwY3lCeGRXVnllU0J2WW1wbFkzUmNiaUFnSUNvdlhHNGdJSEJ5YjNSbFkzUmxaQ0JpZFdsc1pDZ3BPaUJTWVhkU1pXUnBjMUYxWlhKNVBHRnVlVDRnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbTFwYmxObGJHVmpkRzl5S1Z4dUlDQWdJQ0FnZEdocGN5NWxibk4xY21WT2RXMWlaWEpQY2tSaGRHVlRaV3hsWTNSdmNpaDBhR2x6TG0xcGJsTmxiR1ZqZEc5eUxDQmNJazFKVGlCdmNHVnlZWFJwYjI1Y0lpazdYRzRnSUNBZ2FXWWdLSFJvYVhNdWJXRjRVMlZzWldOMGIzSXBYRzRnSUNBZ0lDQjBhR2x6TG1WdWMzVnlaVTUxYldKbGNrOXlSR0YwWlZObGJHVmpkRzl5S0hSb2FYTXViV0Y0VTJWc1pXTjBiM0lzSUZ3aVRVRllJRzl3WlhKaGRHbHZibHdpS1R0Y2JpQWdJQ0JwWmlBb2RHaHBjeTV6ZFcxVFpXeGxZM1J2Y2lsY2JpQWdJQ0FnSUhSb2FYTXVaVzV6ZFhKbFRuVnRaWEpwWTFObGJHVmpkRzl5S0hSb2FYTXVjM1Z0VTJWc1pXTjBiM0lzSUZ3aVUxVk5JRzl3WlhKaGRHbHZibHdpS1R0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVoZG1kVFpXeGxZM1J2Y2lsY2JpQWdJQ0FnSUhSb2FYTXVaVzV6ZFhKbFRuVnRZbVZ5VDNKRVlYUmxVMlZzWldOMGIzSW9kR2hwY3k1aGRtZFRaV3hsWTNSdmNpd2dYQ0pCVmtjZ2IzQmxjbUYwYVc5dVhDSXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2NtVnpkV3gwT2lCU1lYZFNaV1JwYzFGMVpYSjVQRTArSUQwZ2UxeHVJQ0FnSUNBZ2MyVnNaV04wT2lCMGFHbHpMbk5sYkdWamRGTmxiR1ZqZEc5eUxGeHVJQ0FnSUNBZ1puSnZiVG9nZEdocGN5NW1jbTl0VTJWc1pXTjBiM0lzWEc0Z0lDQWdJQ0IzYUdWeVpUb2dkR2hwY3k1M2FHVnlaVU52Ym1ScGRHbHZibHh1SUNBZ0lDQWdJQ0EvSUhSb2FYTXVjR0Z5YzJWRGIyNWthWFJwYjI0b2RHaHBjeTUzYUdWeVpVTnZibVJwZEdsdmJpa3VkMmhsY21WY2JpQWdJQ0FnSUNBZ09pQXZMeUJsYzJ4cGJuUXRaR2x6WVdKc1pTMXVaWGgwTFd4cGJtVWdRSFI1Y0dWelkzSnBjSFF0WlhOc2FXNTBMMjV2TFhWdWRYTmxaQzEyWVhKelhHNGdJQ0FnSUNBZ0lDQWdLR1ZzT2lCTktTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ2JHbHRhWFE2SUhSb2FYTXViR2x0YVhSVFpXeGxZM1J2Y2l4Y2JpQWdJQ0FnSUhOcmFYQTZJSFJvYVhNdWIyWm1jMlYwVTJWc1pXTjBiM0lzWEc0Z0lDQWdJQ0JuY205MWNFSjVPaUIwYUdsekxtZHliM1Z3UW5sVFpXeGxZM1J2Y25Nc1hHNGdJQ0FnZlR0Y2JseHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2RHaHBjeTVqYjNWdWRGTmxiR1ZqZEc5eUlDRTlQU0JjSW5WdVpHVm1hVzVsWkZ3aUtTQnlaWE4xYkhRdVkyOTFiblFnUFNCMGFHbHpMbU52ZFc1MFUyVnNaV04wYjNJN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WTI5MWJuUkVhWE4wYVc1amRGTmxiR1ZqZEc5eUtTQnlaWE4xYkhRdVkyOTFiblJFYVhOMGFXNWpkQ0E5SUhSb2FYTXVZMjkxYm5SRWFYTjBhVzVqZEZObGJHVmpkRzl5TzF4dUlDQWdJR2xtSUNoMGFHbHpMbTFwYmxObGJHVmpkRzl5S1NCeVpYTjFiSFF1YldsdUlEMGdkR2hwY3k1dGFXNVRaV3hsWTNSdmNqdGNiaUFnSUNCcFppQW9kR2hwY3k1dFlYaFRaV3hsWTNSdmNpa2djbVZ6ZFd4MExtMWhlQ0E5SUhSb2FYTXViV0Y0VTJWc1pXTjBiM0k3WEc0Z0lDQWdhV1lnS0hSb2FYTXVjM1Z0VTJWc1pXTjBiM0lwSUhKbGMzVnNkQzV6ZFcwZ1BTQjBhR2x6TG5OMWJWTmxiR1ZqZEc5eU8xeHVJQ0FnSUdsbUlDaDBhR2x6TG1GMloxTmxiR1ZqZEc5eUtTQnlaWE4xYkhRdVlYWm5JRDBnZEdocGN5NWhkbWRUWld4bFkzUnZjanRjYmlBZ0lDQnBaaUFvZEdocGN5NWthWE4wYVc1amRGTmxiR1ZqZEc5eUtTQnlaWE4xYkhRdVpHbHpkR2x1WTNRZ1BTQjBhR2x6TG1ScGMzUnBibU4wVTJWc1pXTjBiM0k3WEc0Z0lDQWdhV1lnS0hSb2FYTXViM0prWlhKQ2VWTmxiR1ZqZEc5eWN6OHViR1Z1WjNSb0tTQnlaWE4xYkhRdWMyOXlkQ0E5SUhSb2FYTXVaMlYwVTI5eWRDZ3BPMXh1SUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFFnWVhNZ1VtRjNVbVZrYVhOUmRXVnllVHhoYm5rK08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCUVlYSnpaWE1nWVNCamIyNWthWFJwYjI0Z2FXNTBieUJoSUZKbFpHbHpJSEYxWlhKNUlIQnlaV1JwWTJGMFpWeHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCRGIyNTJaWEowY3lCaElFTnZibVJwZEdsdmJpQnZZbXBsWTNRZ2FXNTBieUJoSUhCeVpXUnBZMkYwWlNCbWRXNWpkR2x2YmlCMGFHRjBJR05oYmlCaVpTQjFjMlZrWEc0Z0lDQXFJSFJ2SUdacGJIUmxjaUJ0YjJSbGJDQnBibk4wWVc1alpYTWdhVzRnYldWdGIzSjVMaUJVYUdseklHMWxkR2h2WkNCb1lXNWtiR1Z6SUdKdmRHZ2djMmx0Y0d4bElHTnZibVJwZEdsdmJuTmNiaUFnSUNvZ0tHVnhkV0ZzY3l3Z1ozSmxZWFJsY2lCMGFHRnVMQ0JsZEdNdUtTQmhibVFnWTI5dGNHeGxlQ0JqYjI1a2FYUnBiMjV6SUhkcGRHZ2diRzluYVdOaGJDQnZjR1Z5WVhSdmNuTWdLRUZPUkN3Z1QxSXBMbHh1SUNBZ0tpQkFkR1Z0Y0d4aGRHVWdUU0F0SUZSb1pTQnRiMlJsYkNCMGVYQmxJR1p2Y2lCMGFHVWdZMjl1WkdsMGFXOXVYRzRnSUNBcUlFQndZWEpoYlNCN1EyOXVaR2wwYVc5dVBFMCtmU0JqYjI1a2FYUnBiMjRnTFNCVWFHVWdZMjl1WkdsMGFXOXVJSFJ2SUhCaGNuTmxYRzRnSUNBcUlFQnlaWFIxY200Z2UxSmhkMUpsWkdselVYVmxjbms4VFQ1OUlFRWdVbVZrYVhNZ2NYVmxjbmtnYjJKcVpXTjBJSGRwZEdnZ1lTQjNhR1Z5WlNCd2NtVmthV05oZEdVZ1puVnVZM1JwYjI1Y2JpQWdJQ29nUUcxbGNtMWhhV1JjYmlBZ0lDb2djMlZ4ZFdWdVkyVkVhV0ZuY21GdFhHNGdJQ0FxSUNBZ2NHRnlkR2xqYVhCaGJuUWdRMkZzYkdWeVhHNGdJQ0FxSUNBZ2NHRnlkR2xqYVhCaGJuUWdVbVZrYVhOVGRHRjBaVzFsYm5SY2JpQWdJQ29nSUNCd1lYSjBhV05wY0dGdWRDQlRhVzF3YkdWRGIyNWthWFJwYjI1Y2JpQWdJQ29nSUNCd1lYSjBhV05wY0dGdWRDQkRiMjF3YkdWNFEyOXVaR2wwYVc5dVhHNGdJQ0FxWEc0Z0lDQXFJQ0FnUTJGc2JHVnlMVDQrVW1Wa2FYTlRkR0YwWlcxbGJuUTZJSEJoY25ObFEyOXVaR2wwYVc5dUtHTnZibVJwZEdsdmJpbGNiaUFnSUNvZ0lDQmhiSFFnVTJsdGNHeGxJR052Ym1ScGRHbHZiaUFvWlhFc0lHZDBMQ0JzZEN3Z1pYUmpMaWxjYmlBZ0lDb2dJQ0FnSUZKbFpHbHpVM1JoZEdWdFpXNTBMVDQrVTJsdGNHeGxRMjl1WkdsMGFXOXVPaUJGZUhSeVlXTjBJR0YwZEhJeExDQnZjR1Z5WVhSdmNpd2dZMjl0Y0dGeWFYTnZibHh1SUNBZ0tpQWdJQ0FnVTJsdGNHeGxRMjl1WkdsMGFXOXVMUzArUGxKbFpHbHpVM1JoZEdWdFpXNTBPaUJTWlhSMWNtNGdjSEpsWkdsallYUmxJR1oxYm1OMGFXOXVYRzRnSUNBcUlDQWdaV3h6WlNCTWIyZHBZMkZzSUc5d1pYSmhkRzl5SUNoQlRrUXNJRTlTS1Z4dUlDQWdLaUFnSUNBZ1VtVmthWE5UZEdGMFpXMWxiblF0UGo1RGIyMXdiR1Y0UTI5dVpHbDBhVzl1T2lCRmVIUnlZV04wSUc1bGMzUmxaQ0JqYjI1a2FYUnBiMjV6WEc0Z0lDQXFJQ0FnSUNCU1pXUnBjMU4wWVhSbGJXVnVkQzArUGxKbFpHbHpVM1JoZEdWdFpXNTBPaUJ3WVhKelpVTnZibVJwZEdsdmJpaHNaV1owUTI5dVpHbDBhVzl1S1Z4dUlDQWdLaUFnSUNBZ1VtVmthWE5UZEdGMFpXMWxiblF0UGo1U1pXUnBjMU4wWVhSbGJXVnVkRG9nY0dGeWMyVkRiMjVrYVhScGIyNG9jbWxuYUhSRGIyNWthWFJwYjI0cFhHNGdJQ0FxSUNBZ0lDQkRiMjF3YkdWNFEyOXVaR2wwYVc5dUxTMCtQbEpsWkdselUzUmhkR1Z0Wlc1ME9pQkRiMjFpYVc1bElIQnlaV1JwWTJGMFpYTWdkMmwwYUNCc2IyZHBZMkZzSUc5d1pYSmhkRzl5WEc0Z0lDQXFJQ0FnWlc1a1hHNGdJQ0FxSUNBZ1VtVmthWE5UZEdGMFpXMWxiblF0TFQ0K1EyRnNiR1Z5T2lCU1pYUjFjbTRnY1hWbGNua2dkMmwwYUNCM2FHVnlaU0J3Y21Wa2FXTmhkR1ZjYmlBZ0lDb3ZYRzRnSUhCeWIzUmxZM1JsWkNCd1lYSnpaVU52Ym1ScGRHbHZiaWhqYjI1a2FYUnBiMjQ2SUVOdmJtUnBkR2x2Ymp4TlBpazZJRkpoZDFKbFpHbHpVWFZsY25rOFlXNTVQaUI3WEc0Z0lDQWdjbVYwZFhKdUlIdGNiaUFnSUNBZ0lIZG9aWEpsT2lBb2JUb2dUVzlrWld3cElEMCtJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdleUJoZEhSeU1Td2diM0JsY21GMGIzSXNJR052YlhCaGNtbHpiMjRnZlNBOUlHTnZibVJwZEdsdmJpQmhjeUIxYm10dWIzZHVJR0Z6SUh0Y2JpQWdJQ0FnSUNBZ0lDQmhkSFJ5TVRvZ2MzUnlhVzVuSUh3Z1EyOXVaR2wwYVc5dVBFMCtPMXh1SUNBZ0lDQWdJQ0FnSUc5d1pYSmhkRzl5T2lCUGNHVnlZWFJ2Y2lCOElFZHliM1Z3VDNCbGNtRjBiM0k3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXRjR0Z5YVhOdmJqb2dZVzU1TzF4dUlDQWdJQ0FnSUNCOU8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNoY2JpQWdJQ0FnSUNBZ0lDQmJSM0p2ZFhCUGNHVnlZWFJ2Y2k1QlRrUXNJRWR5YjNWd1QzQmxjbUYwYjNJdVQxSXNJRTl3WlhKaGRHOXlMazVQVkYwdWFXNWtaWGhQWmloY2JpQWdJQ0FnSUNBZ0lDQWdJRzl3WlhKaGRHOXlJR0Z6SUVkeWIzVndUM0JsY21GMGIzSmNiaUFnSUNBZ0lDQWdJQ0FwSUQwOVBTQXRNVnh1SUNBZ0lDQWdJQ0FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnpkMmwwWTJnZ0tHOXdaWEpoZEc5eUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRTl3WlhKaGRHOXlMa0pKUjBkRlVqcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUcxYllYUjBjakVnWVhNZ2EyVjViMllnVFc5a1pXeGRJRDRnWTI5dGNHRnlhWE52Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1QzQmxjbUYwYjNJdVFrbEhSMFZTWDBWUk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYlZ0aGRIUnlNU0JoY3lCclpYbHZaaUJOYjJSbGJGMGdQajBnWTI5dGNHRnlhWE52Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1QzQmxjbUYwYjNJdVJFbEdSa1ZTUlU1VU9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYlZ0aGRIUnlNU0JoY3lCclpYbHZaaUJOYjJSbGJGMGdJVDA5SUdOdmJYQmhjbWx6YjI0N1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElFOXdaWEpoZEc5eUxrVlJWVUZNT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdiVnRoZEhSeU1TQmhjeUJyWlhsdlppQk5iMlJsYkYwZ1BUMDlJR052YlhCaGNtbHpiMjQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUU5d1pYSmhkRzl5TGxKRlIwVllVRHBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJ0VzJGMGRISXhJR0Z6SUd0bGVXOW1JRTF2WkdWc1hTQWhQVDBnWENKemRISnBibWRjSWlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1VYVmxjbmxGY25KdmNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0JKYm5aaGJHbGtJSEpsWjJWNGNDQmpiMjF3WVhKcGMyOXVJRzl1SUdFZ2JtOXVJSE4wY21sdVp5QmhkSFJ5YVdKMWRHVTZJQ1I3YlZ0aGRIUnlNU0JoY3lCclpYbHZaaUJOYjJSbGJGMTlZRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQWhJU2h0VzJGMGRISXhJR0Z6SUd0bGVXOW1JRTF2WkdWc1hTQmhjeUIxYm10dWIzZHVJR0Z6SUhOMGNtbHVaeWt1YldGMFkyZ29YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdibVYzSUZKbFowVjRjQ2hqYjIxd1lYSnBjMjl1TENCY0ltZGNJaWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnVDNCbGNtRjBiM0l1VTFSQlVsUlRYMWRKVkVnNklIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWVhSMGNpQTlJR0YwZEhJeElHRnpJR3RsZVc5bUlFMXZaR1ZzTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQmhkSFJ5VG1GdFpTQTlJR0YwZEhJZ1lYTWdjM1J5YVc1bk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JoZEhSeVZtRnNkV1VnUFNCdFcyRjBkSEpkSUdGeklIVnVhMjV2ZDI0N1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ1lYUjBjbFpoYkhWbElDRTlQU0JjSW5OMGNtbHVaMXdpS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGRjFaWEo1UlhKeWIzSW9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JnU1c1MllXeHBaQ0J6ZEdGeWRITlhhWFJvSUdOdmJYQmhjbWx6YjI0Z2IyNGdZU0J1YjI0Z2MzUnlhVzVuSUdGMGRISnBZblYwWlNCY0lpUjdZWFIwY2s1aGJXVjlYQ0pnWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJYQmhjbWx6YjI0Z0lUMDlJRndpYzNSeWFXNW5YQ0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1VYVmxjbmxGY25KdmNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0JUVkVGU1ZGTmZWMGxVU0NCdmNHVnlZWFJ2Y2lCeVpYRjFhWEpsY3lCaElITjBjbWx1WnlCamIyMXdZWEpwYzI5dUxDQm5iM1FnSkh0MGVYQmxiMllnWTI5dGNHRnlhWE52Ym4xZ1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnS0dGMGRISldZV3gxWlNCaGN5QnpkSEpwYm1jcExuTjBZWEowYzFkcGRHZ29ZMjl0Y0dGeWFYTnZiaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRTl3WlhKaGRHOXlMa1ZPUkZOZlYwbFVTRG9nZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQmhkSFJ5SUQwZ1lYUjBjakVnWVhNZ2EyVjViMllnVFc5a1pXdzdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdGMGRISk9ZVzFsSUQwZ1lYUjBjaUJoY3lCemRISnBibWM3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHRjBkSEpXWVd4MVpTQTlJRzFiWVhSMGNsMGdZWE1nZFc1cmJtOTNianRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJoZEhSeVZtRnNkV1VnSVQwOUlGd2ljM1J5YVc1blhDSXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnVVhWbGNubEZjbkp2Y2loY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHQkpiblpoYkdsa0lHVnVaSE5YYVhSb0lHTnZiWEJoY21semIyNGdiMjRnWVNCdWIyNGdjM1J5YVc1bklHRjBkSEpwWW5WMFpTQmNJaVI3WVhSMGNrNWhiV1Y5WENKZ1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlHTnZiWEJoY21semIyNGdJVDA5SUZ3aWMzUnlhVzVuWENJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dVWFZsY25sRmNuSnZjaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdCRlRrUlRYMWRKVkVnZ2IzQmxjbUYwYjNJZ2NtVnhkV2x5WlhNZ1lTQnpkSEpwYm1jZ1kyOXRjR0Z5YVhOdmJpd2daMjkwSUNSN2RIbHdaVzltSUdOdmJYQmhjbWx6YjI1OVlGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNoaGRIUnlWbUZzZFdVZ1lYTWdjM1J5YVc1bktTNWxibVJ6VjJsMGFDaGpiMjF3WVhKcGMyOXVLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdUM0JsY21GMGIzSXVVMDFCVEV4RlVqcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUcxYllYUjBjakVnWVhNZ2EyVjViMllnVFc5a1pXeGRJRHdnWTI5dGNHRnlhWE52Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1QzQmxjbUYwYjNJdVUwMUJURXhGVWw5RlVUcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUcxYllYUjBjakVnWVhNZ2EyVjViMllnVFc5a1pXeGRJRHc5SUdOdmJYQmhjbWx6YjI0N1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElFOXdaWEpoZEc5eUxrbE9PbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVVGeWNtRjVMbWx6UVhKeVlYa29ZMjl0Y0dGeWFYTnZiaWtwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUZGMVpYSjVSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmdTVTRnYjNCbGNtRjBiM0lnY21WeGRXbHlaWE1nWVc0Z1lYSnlZWGtzSUdkdmREb2dKSHQwZVhCbGIyWWdZMjl0Y0dGeWFYTnZibjFnWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR052YlhCaGNtbHpiMjR1YVc1amJIVmtaWE1vYlZ0aGRIUnlNU0JoY3lCclpYbHZaaUJOYjJSbGJGMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JQY0dWeVlYUnZjaTVDUlZSWFJVVk9PaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaFFYSnlZWGt1YVhOQmNuSmhlU2hqYjIxd1lYSnBjMjl1S1NCOGZDQmpiMjF3WVhKcGMyOXVMbXhsYm1kMGFDQWhQVDBnTWlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1VYVmxjbmxGY25KdmNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0JDUlZSWFJVVk9JRzl3WlhKaGRHOXlJSEpsY1hWcGNtVnpJR0Z1SUdGeWNtRjVJSGRwZEdnZ01pQjJZV3gxWlhNZ1cyMXBiaXdnYldGNFhTd2daMjkwT2lBa2UwcFRUMDR1YzNSeWFXNW5hV1o1S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjF3WVhKcGMyOXVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FwZldCY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JoZEhSeUlEMGdZWFIwY2pFZ1lYTWdhMlY1YjJZZ1RXOWtaV3c3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHRjBkSEpPWVcxbElEMGdZWFIwY2lCaGN5QnpkSEpwYm1jN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR0YwZEhKVWVYQmxJRDBnZEdocGN5NWtaWFJsY20xcGJtVkJkSFJ5YVdKMWRHVlVlWEJsS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUcwdVkyOXVjM1J5ZFdOMGIzSWdZWE1nUTI5dWMzUnlkV04wYjNJOFRXOWtaV3crTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdGMGRISk9ZVzFsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUZ3aVFrVlVWMFZGVGx3aVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hkR2hwY3k1cGMwNTFiV1Z5YVdOVWVYQmxLR0YwZEhKVWVYQmxLU0FtSmlCaGRIUnlWSGx3WlNBaFBUMGdYQ0prWVhSbFhDSXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnVVhWbGNubEZjbkp2Y2loY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHQkNSVlJYUlVWT0lHOXdaWEpoZEc5eUlISmxjWFZwY21WeklHNTFiV1Z5YVdNZ2IzSWdaR0YwWlNCaGRIUnlhV0oxZEdWekxDQmlkWFFnWENJa2UyRjBkSEpPWVcxbGZWd2lJR2x6SUNSN1lYUjBjbFI1Y0dVZ2ZIeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWENKMWJtdHViM2R1WENKOVlGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnVzIxcGJpd2diV0Y0WFNBOUlHTnZiWEJoY21semIyNDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhaaGJIVmxJRDBnYlZ0aGRIUnlYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1kyOXRjR0Z5WVdKc1pWWmhiSFZsSUQwZ2RHaHBjeTUwYjBOdmJYQmhjbUZpYkdWV1lXeDFaU2hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVd4MVpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmhkSFJ5Vkhsd1pTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmhkSFJ5VG1GdFpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmNJa0pGVkZkRlJVNWNJaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I3SUdGc2JHOTNUblZzYkRvZ2RISjFaU0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoamIyMXdZWEpoWW14bFZtRnNkV1VnUFQwOUlHNTFiR3dwSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYldsdVEyOXRjR0Z5WVdKc1pTQTlJSFJvYVhNdWRHOURiMjF3WVhKaFlteGxWbUZzZFdVb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JXbHVMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0YwZEhKVWVYQmxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0YwZEhKT1lXMWxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRndpUWtWVVYwVkZUaUJ0YVc1Y0lseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBcElUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYldGNFEyOXRjR0Z5WVdKc1pTQTlJSFJvYVhNdWRHOURiMjF3WVhKaFlteGxWbUZzZFdVb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JXRjRMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0YwZEhKVWVYQmxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0YwZEhKT1lXMWxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRndpUWtWVVYwVkZUaUJ0WVhoY0lseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBcElUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNoY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyMXdZWEpoWW14bFZtRnNkV1VnUGowZ2JXbHVRMjl0Y0dGeVlXSnNaU0FtSmlCamIyMXdZWEpoWW14bFZtRnNkV1VnUEQwZ2JXRjRRMjl0Y0dGeVlXSnNaVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQlBjR1Z5WVhSdmNpNUZXRWxUVkZNNklIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnY0hKbGMyVnVkQ0E5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYlZ0aGRIUnlNU0JoY3lCclpYbHZaaUJOYjJSbGJGMGdJVDA5SUhWdVpHVm1hVzVsWkNBbUpseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHMWJZWFIwY2pFZ1lYTWdhMlY1YjJZZ1RXOWtaV3hkSUNFOVBTQnVkV3hzTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdZMjl0Y0dGeWFYTnZiaUE5UFQwZ1ptRnNjMlVnUHlBaGNISmxjMlZ1ZENBNklIQnlaWE5sYm5RN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmtaV1poZFd4ME9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1NXNTBaWEp1WVd4RmNuSnZjaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JnU1c1MllXeHBaQ0J2Y0dWeVlYUnZjaUJtYjNJZ2MzUmhibVJoY21RZ1kyOXRjR0Z5YVhOdmJuTTZJQ1I3YjNCbGNtRjBiM0o5WUZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU0JsYkhObElHbG1JQ2h2Y0dWeVlYUnZjaUE5UFQwZ1QzQmxjbUYwYjNJdVRrOVVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLQ0VvWVhSMGNqRWdhVzV6ZEdGdVkyVnZaaUJEYjI1a2FYUnBiMjRwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnU1c1MFpYSnVZV3hGY25KdmNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1hDSk9UMVFnYjNCbGNtRjBiM0lnY21WeGRXbHlaWE1nWVNCdVpYTjBaV1FnWTI5dVpHbDBhVzl1SUhSdklHNWxaMkYwWlZ3aVhHNGdJQ0FnSUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnVaWE4wWldRZ1BTQjBhR2x6TG5CaGNuTmxRMjl1WkdsMGFXOXVLR0YwZEhJeElHRnpJRU52Ym1ScGRHbHZianhOUGlrN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDRnVaWE4wWldRdWQyaGxjbVVvYlNrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2IzQXhPaUJTWVhkU1pXUnBjMUYxWlhKNVBHRnVlVDRnUFNCMGFHbHpMbkJoY25ObFEyOXVaR2wwYVc5dUtGeHVJQ0FnSUNBZ0lDQWdJQ0FnWVhSMGNqRWdZWE1nUTI5dVpHbDBhVzl1UEUwK1hHNGdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J2Y0RJNklGSmhkMUpsWkdselVYVmxjbms4WVc1NVBpQTlJSFJvYVhNdWNHRnljMlZEYjI1a2FYUnBiMjRvWEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjF3WVhKcGMyOXVJR0Z6SUVOdmJtUnBkR2x2Ymp4TlBseHVJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2MzZHBkR05vSUNodmNHVnlZWFJ2Y2lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQkhjbTkxY0U5d1pYSmhkRzl5TGtGT1JEcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc5d01TNTNhR1Z5WlNodEtTQW1KaUJ2Y0RJdWQyaGxjbVVvYlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElFZHliM1Z3VDNCbGNtRjBiM0l1VDFJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ2Y0RFdWQyaGxjbVVvYlNrZ2ZId2diM0F5TG5kb1pYSmxLRzBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFbHVkR1Z5Ym1Gc1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWUVsdWRtRnNhV1FnYjNCbGNtRjBiM0lnWm05eUlFRnVaQzlQY2lCamIyMXdZWEpwYzI5dWN6b2dKSHR2Y0dWeVlYUnZjbjFnWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlMRnh1SUNBZ0lIMGdZWE1nVW1GM1VtVmthWE5SZFdWeWVUeGhibmsrTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJXWVd4cFpHRjBaWE1nZEdoaGRDQmhiaUJoWjJkeVpXZGhkR2x2YmlCelpXeGxZM1J2Y2lCMFlYSm5aWFJ6SUdFZ2JuVnRaWEpwWXlCaGRIUnlhV0oxZEdWY2JpQWdJQ29nUUhCaGNtRnRJSHRUWld4bFkzUlRaV3hsWTNSdmNqeE5QbjBnYzJWc1pXTjBiM0lnTFNCVWFHVWdZWFIwY21saWRYUmxJSE5sYkdWamRHOXlJSFJ2SUhaaGJHbGtZWFJsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmpiMjUwWlhoMElDMGdWR2hsSUdGblozSmxaMkYwYVc5dUlHTnZiblJsZUhRZ2RYTmxaQ0JwYmlCbGNuSnZjaUJ0WlhOellXZGxjMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdDJiMmxrZlZ4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCbGJuTjFjbVZPZFcxbGNtbGpVMlZzWldOMGIzSW9YRzRnSUNBZ2MyVnNaV04wYjNJNklGTmxiR1ZqZEZObGJHVmpkRzl5UEUwK0xGeHVJQ0FnSUdOdmJuUmxlSFE2SUhOMGNtbHVaMXh1SUNBcE9pQjJiMmxrSUh0Y2JpQWdJQ0IwYUdsekxtVnVjM1Z5WlZObGJHVmpkRzl5Vkhsd1pTaGNiaUFnSUNBZ0lITmxiR1ZqZEc5eUxGeHVJQ0FnSUNBZ1kyOXVkR1Y0ZEN4Y2JpQWdJQ0FnSUNoMGVYQmxLU0E5UGlCMGFHbHpMbWx6VG5WdFpYSnBZMVI1Y0dVb2RIbHdaU2tzWEc0Z0lDQWdJQ0JjSW01MWJXVnlhV05jSWx4dUlDQWdJQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRlpoYkdsa1lYUmxjeUIwYUdGMElHRnVJR0ZuWjNKbFoyRjBhVzl1SUhObGJHVmpkRzl5SUhSaGNtZGxkSE1nWVNCdWRXMWxjbWxqSUc5eUlHUmhkR1VnWVhSMGNtbGlkWFJsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVMlZzWldOMFUyVnNaV04wYjNJOFRUNTlJSE5sYkdWamRHOXlJQzBnVkdobElHRjBkSEpwWW5WMFpTQnpaV3hsWTNSdmNpQjBieUIyWVd4cFpHRjBaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1kyOXVkR1Y0ZENBdElGUm9aU0JoWjJkeVpXZGhkR2x2YmlCamIyNTBaWGgwSUhWelpXUWdhVzRnWlhKeWIzSWdiV1Z6YzJGblpYTmNiaUFnSUNvZ1FISmxkSFZ5YmlCN2RtOXBaSDFjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWlc1emRYSmxUblZ0WW1WeVQzSkVZWFJsVTJWc1pXTjBiM0lvWEc0Z0lDQWdjMlZzWldOMGIzSTZJRk5sYkdWamRGTmxiR1ZqZEc5eVBFMCtMRnh1SUNBZ0lHTnZiblJsZUhRNklITjBjbWx1WjF4dUlDQXBPaUIyYjJsa0lIdGNiaUFnSUNCMGFHbHpMbVZ1YzNWeVpWTmxiR1ZqZEc5eVZIbHdaU2hjYmlBZ0lDQWdJSE5sYkdWamRHOXlMRnh1SUNBZ0lDQWdZMjl1ZEdWNGRDeGNiaUFnSUNBZ0lDaDBlWEJsS1NBOVBpQjBhR2x6TG1selRuVnRaWEpwWTFSNWNHVW9kSGx3WlNrZ2ZId2dkSGx3WlNBOVBUMGdYQ0prWVhSbFhDSXNYRzRnSUNBZ0lDQmNJbTUxYldWeWFXTWdiM0lnWkdGMFpWd2lYRzRnSUNBZ0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1ZtRnNhV1JoZEdWeklIUm9ZWFFnWVNCelpXeGxZM1J2Y2lkeklHRjBkSEpwWW5WMFpTQjBlWEJsSUhOaGRHbHpabWxsY3lCaElIQnlaV1JwWTJGMFpWeHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCU1pYTnZiSFpsY3lCMGFHVWdZWFIwY21saWRYUmxJSFI1Y0dVZ1puSnZiU0IwYUdVZ2JXOWtaV3dnYldWMFlXUmhkR0VnWVc1a0lISmhhWE5sY3lCaFhHNGdJQ0FxSUdCUmRXVnllVVZ5Y205eVlDQjNhR1Z1SUhSb1pTQjBlWEJsSUdSdlpYTWdibTkwSUcxaGRHTm9JSFJvWlNCbGVIQmxZM1JsWkNCcmFXNWtMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxTmxiR1ZqZEZObGJHVmpkRzl5UEUwK2ZTQnpaV3hsWTNSdmNpQXRJRlJvWlNCaGRIUnlhV0oxZEdVZ2MyVnNaV04wYjNJZ2RHOGdkbUZzYVdSaGRHVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdOdmJuUmxlSFFnTFNCVWFHVWdZV2RuY21WbllYUnBiMjRnWTI5dWRHVjRkQ0IxYzJWa0lHbHVJR1Z5Y205eUlHMWxjM05oWjJWelhHNGdJQ0FxSUVCd1lYSmhiU0I3Wm5WdVkzUnBiMjRvYzNSeWFXNW5LVG9nWW05dmJHVmhibjBnY0hKbFpHbGpZWFJsSUMwZ1ZIbHdaU0JoWTJObGNIUmhibU5sSUhCeVpXUnBZMkYwWlZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdaR1Z6WTNKcGNIUnBiMjRnTFNCSWRXMWhiaUJ5WldGa1lXSnNaU0JrWlhOamNtbHdkR2x2YmlCdlppQjBhR1VnWVdOalpYQjBaV1FnZEhsd1pYTmNiaUFnSUNvZ1FISmxkSFZ5YmlCN2RtOXBaSDFjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWlc1emRYSmxVMlZzWldOMGIzSlVlWEJsS0Z4dUlDQWdJSE5sYkdWamRHOXlPaUJUWld4bFkzUlRaV3hsWTNSdmNqeE5QaXhjYmlBZ0lDQmpiMjUwWlhoME9pQnpkSEpwYm1jc1hHNGdJQ0FnY0hKbFpHbGpZWFJsT2lBb2RIbHdaVG9nYzNSeWFXNW5LU0E5UGlCaWIyOXNaV0Z1TEZ4dUlDQWdJR1JsYzJOeWFYQjBhVzl1T2lCemRISnBibWRjYmlBZ0tTQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtWnliMjFUWld4bFkzUnZjaWtnZTF4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVsdWRHVnlibUZzUlhKeWIzSW9YRzRnSUNBZ0lDQWdJR0FrZTJOdmJuUmxlSFI5SUhKbGNYVnBjbVZ6SUdFZ2RHRnlaMlYwSUcxdlpHVnNMaUJEWVd4c0lHWnliMjBvS1NCaVpXWnZjbVVnWVdkbmNtVm5ZWFJwYm1jdVlGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNGdJQ0FnWTI5dWMzUWdZWFIwY2lBOUlITmxiR1ZqZEc5eUlHRnpJSE4wY21sdVp6dGNiaUFnSUNCamIyNXpkQ0IwZVhCbElEMGdkR2hwY3k1a1pYUmxjbTFwYm1WQmRIUnlhV0oxZEdWVWVYQmxLRnh1SUNBZ0lDQWdkR2hwY3k1bWNtOXRVMlZzWldOMGIzSXNYRzRnSUNBZ0lDQmhkSFJ5SUdGeklHdGxlVzltSUUxdlpHVnNQR1poYkhObFBpeGNiaUFnSUNBZ0lHTnZiblJsZUhSY2JpQWdJQ0FwTzF4dVhHNGdJQ0FnYVdZZ0tDRndjbVZrYVdOaGRHVW9kSGx3WlNrcElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QlJkV1Z5ZVVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JnSkh0amIyNTBaWGgwZlNCeVpYRjFhWEpsY3lCaElDUjdaR1Z6WTNKcGNIUnBiMjU5SUdGMGRISnBZblYwWlN3Z1luVjBJRndpSkh0aGRIUnlmVndpSUdseklDUjdkSGx3WlNCOGZDQmNJblZ1YTI1dmQyNWNJbjFnWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdVbVZ6YjJ4MlpYTWdkR2hsSUdGMGRISnBZblYwWlNCMGVYQmxJR1p5YjIwZ2RHaGxJRzF2WkdWc0lHMWxkR0ZrWVhSaFhHNGdJQ0FxSUVCemRXMXRZWEo1SUZKbFlXUnpJSFJvWlNCdFpYUmhaR0YwWVNCdmNpQmtaWE5wWjI0Z2RIbHdaU0J2WmlCMGFHVWdZWFIwY21saWRYUmxJR0Z1WkNCdWIzSnRZV3hwZW1WeklHbDBYRzRnSUNBcUlIUnZJR0VnYkc5M1pYSmpZWE5sSUhSNWNHVWdibUZ0WlM1Y2JpQWdJQ29nUUhCaGNtRnRJSHREYjI1emRISjFZM1J2Y2p4TmIyUmxiRDU5SUdOc1lYcDZJQzBnVkdobElHMXZaR1ZzSUdOdmJuTjBjblZqZEc5eVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JoZEhSeUlDMGdWR2hsSUdGMGRISnBZblYwWlNCdVlXMWxYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCamIyNTBaWGgwSUMwZ1ZHaGxJR052Ym5SbGVIUWdkWE5sWkNCcGJpQmxjbkp2Y2lCdFpYTnpZV2RsYzF4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRlJvWlNCdWIzSnRZV3hwZW1Wa0lHRjBkSEpwWW5WMFpTQjBlWEJsWEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUdSbGRHVnliV2x1WlVGMGRISnBZblYwWlZSNWNHVW9YRzRnSUNBZ1kyeGhlbm82SUVOdmJuTjBjblZqZEc5eVBFMXZaR1ZzUGl4Y2JpQWdJQ0JoZEhSeU9pQnpkSEpwYm1jc1hHNGdJQ0FnWTI5dWRHVjRkRG9nYzNSeWFXNW5YRzRnSUNrNklITjBjbWx1WnlCN1hHNGdJQ0FnWTI5dWMzUWdjSEp2Y0V0bGVTQTlJR0YwZEhJZ1lYTWdhMlY1YjJZZ1RXOWtaV3c4Wm1Gc2MyVStPMXh1SUNBZ0lHTnZibk4wSUcxbGRHRlVlWEJsSUQxY2JpQWdJQ0FnSUUxbGRHRmtZWFJoTG5SNWNHVW9ZMnhoZW5vc0lIQnliM0JMWlhrcElEOC9YRzRnSUNBZ0lDQk5aWFJoWkdGMFlTNW5aWFJRY205d1JHVnphV2R1Vkhsd1pYTW9ZMnhoZW5vc0lIQnliM0JMWlhrcFB5NWtaWE5wWjI1VWVYQmxPMXh1SUNBZ0lHTnZibk4wSUhKbGMyOXNkbVZrSUQwZ2RHaHBjeTV1YjNKdFlXeHBlbVZOWlhSaFZIbHdaU2h0WlhSaFZIbHdaU2s3WEc0Z0lDQWdhV1lnS0NGeVpYTnZiSFpsWkNrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGRjFaWEo1UlhKeWIzSW9YRzRnSUNBZ0lDQWdJR0FrZTJOdmJuUmxlSFI5SUdOdmRXeGtJRzV2ZENCeVpYTnZiSFpsSUhCeWIzQmxjblI1SUhSNWNHVWdabTl5SUZ3aUpIdGhkSFJ5ZlZ3aVlGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSEpsYzI5c2RtVmtPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJpQk9iM0p0WVd4cGVtVnpJR0VnY21GM0lHMWxkR0ZrWVhSaElIUjVjR1VnZEc4Z1lTQnNiM2RsY21OaGMyVWdkSGx3WlNCdVlXMWxYRzRnSUNBcUlFQndZWEpoYlNCN1lXNTVmU0J0WlhSaFZIbHdaU0F0SUZSb1pTQnlZWGNnYldWMFlXUmhkR0VnZEhsd1pTQjJZV3gxWlZ4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtY2dmQ0IxYm1SbFptbHVaV1I5SUZSb1pTQnViM0p0WVd4cGVtVmtJSFI1Y0dVZ2JtRnRaU3dnZDJobGJpQnlaWE52YkhaaFlteGxYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRzV2Y20xaGJHbDZaVTFsZEdGVWVYQmxLRzFsZEdGVWVYQmxPaUJoYm5rcE9pQnpkSEpwYm1jZ2ZDQjFibVJsWm1sdVpXUWdlMXh1SUNBZ0lHbG1JQ2doYldWMFlWUjVjR1VwSUhKbGRIVnliaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJ0WlhSaFZIbHdaU0E5UFQwZ1hDSnpkSEpwYm1kY0lpa2djbVYwZFhKdUlHMWxkR0ZVZVhCbExuUnZURzkzWlhKRFlYTmxLQ2s3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJ0WlhSaFZIbHdaU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJQ1ltSUcxbGRHRlVlWEJsTG01aGJXVXBYRzRnSUNBZ0lDQnlaWFIxY200Z2JXVjBZVlI1Y0dVdWJtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVJQ0FnSUhKbGRIVnliaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRmRvWlhSb1pYSWdkR2hsSUdkcGRtVnVJSFI1Y0dVZ2JtRnRaU0JwY3lCaElHNTFiV1Z5YVdNZ2RIbHdaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1czUjVjR1ZkSUMwZ1ZHaGxJRzV2Y20xaGJHbDZaV1FnZEhsd1pTQnVZVzFsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlJRlJ5ZFdVZ1ptOXlJRndpYm5WdFltVnlYQ0lnWVc1a0lGd2lZbWxuYVc1MFhDSmNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdhWE5PZFcxbGNtbGpWSGx3WlNoMGVYQmxQem9nYzNSeWFXNW5LVG9nWW05dmJHVmhiaUI3WEc0Z0lDQWdjbVYwZFhKdUlIUjVjR1VnUFQwOUlGd2liblZ0WW1WeVhDSWdmSHdnZEhsd1pTQTlQVDBnWENKaWFXZHBiblJjSWp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjRnUTI5dWRtVnlkSE1nWVNCMllXeDFaU0IwYnlCaElHNTFiV1Z5YVdNZ1kyOXRjR0Z5WVdKc1pTQjJZV3gxWlZ4dUlDQWdLaUJBYzNWdGJXRnllU0JOWVhCeklHUmhkR1VzSUc1MWJXSmxjaUJoYm1RZ1ltbG5hVzUwSUhaaGJIVmxjeUIwYnlCdWRXMWlaWEp6SUdadmNpQmpiMjF3WVhKcGMyOXVJR0Z1WkZ4dUlDQWdLaUJ5WVdselpYTWdZU0JnVVhWbGNubEZjbkp2Y21BZ1ptOXlJRzFwYzNOcGJtY2diM0lnYVc1amIyMXdZWFJwWW14bElIWmhiSFZsY3k1Y2JpQWdJQ29nUUhCaGNtRnRJSHRoYm5sOUlIWmhiSFZsSUMwZ1ZHaGxJSFpoYkhWbElIUnZJR052Ym5abGNuUmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdGMGRISlVlWEJsSUMwZ1ZHaGxJRzV2Y20xaGJHbDZaV1FnWVhSMGNtbGlkWFJsSUhSNWNHVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdGMGRISk9ZVzFsSUMwZ1ZHaGxJR0YwZEhKcFluVjBaU0J1WVcxbElIVnpaV1FnYVc0Z1pYSnliM0lnYldWemMyRm5aWE5jYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHTnZiblJsZUhRZ0xTQlVhR1VnWTI5dWRHVjRkQ0IxYzJWa0lHbHVJR1Z5Y205eUlHMWxjM05oWjJWelhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0JiYjNCMGFXOXVjMTBnTFNCRGIyNTJaWEp6YVc5dUlHOXdkR2x2Ym5OY2JpQWdJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0JiYjNCMGFXOXVjeTVoYkd4dmQwNTFiR3hkSUMwZ1YyaGxkR2hsY2lCdWRXeHNMM1Z1WkdWbWFXNWxaQ0IyWVd4MVpYTWdjbVYwZFhKdUlHNTFiR3dnYVc1emRHVmhaQ0J2WmlCeVlXbHphVzVuWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNpQjhJRzUxYkd4OUlGUm9aU0J1ZFcxbGNtbGpJR052YlhCaGNtRmliR1VnZG1Gc2RXVmNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdkRzlEYjIxd1lYSmhZbXhsVm1Gc2RXVW9YRzRnSUNBZ2RtRnNkV1U2SUdGdWVTeGNiaUFnSUNCaGRIUnlWSGx3WlRvZ2MzUnlhVzVuTEZ4dUlDQWdJR0YwZEhKT1lXMWxPaUJ6ZEhKcGJtY3NYRzRnSUNBZ1kyOXVkR1Y0ZERvZ2MzUnlhVzVuTEZ4dUlDQWdJRzl3ZEdsdmJuTS9PaUI3SUdGc2JHOTNUblZzYkQ4NklHSnZiMnhsWVc0Z2ZWeHVJQ0FwT2lCdWRXMWlaWElnZkNCdWRXeHNJSHRjYmlBZ0lDQnBaaUFvZG1Gc2RXVWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdhV1lnS0c5d2RHbHZibk0vTG1Gc2JHOTNUblZzYkNrZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dVWFZsY25sRmNuSnZjaWhnSkh0amIyNTBaWGgwZlNCeVpYRjFhWEpsY3lCaElIWmhiSFZsSUdadmNpQmNJaVI3WVhSMGNrNWhiV1Y5WENKZ0tUdGNiaUFnSUNCOVhHNGdJQ0FnYzNkcGRHTm9JQ2hoZEhSeVZIbHdaU2tnZTF4dUlDQWdJQ0FnWTJGelpTQmNJbVJoZEdWY0lqcGNiaUFnSUNBZ0lDQWdhV1lnS0NFb2RtRnNkV1VnYVc1emRHRnVZMlZ2WmlCRVlYUmxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QlJkV1Z5ZVVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0FnSUNBZ1lDUjdZMjl1ZEdWNGRIMGdiMjRnWkdGMFpTQmhkSFJ5YVdKMWRHVWdYQ0lrZTJGMGRISk9ZVzFsZlZ3aUlISmxjWFZwY21WeklFUmhkR1VnZG1Gc2RXVnpZRnh1SUNBZ0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIWmhiSFZsTG1kbGRGUnBiV1VvS1R0Y2JpQWdJQ0FnSUdOaGMyVWdYQ0p1ZFcxaVpYSmNJanBjYmlBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCMllXeDFaU0FoUFQwZ1hDSnVkVzFpWlhKY0lpa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCUmRXVnllVVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQWdJQ0FnWUNSN1kyOXVkR1Y0ZEgwZ2IyNGdiblZ0WlhKcFl5QmhkSFJ5YVdKMWRHVWdYQ0lrZTJGMGRISk9ZVzFsZlZ3aUlISmxjWFZwY21WeklHNTFiV0psY2lCMllXeDFaWE5nWEc0Z0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkbUZzZFdVN1hHNGdJQ0FnSUNCallYTmxJRndpWW1sbmFXNTBYQ0k2WEc0Z0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ2RtRnNkV1VnUFQwOUlGd2liblZ0WW1WeVhDSXBJSEpsZEhWeWJpQjJZV3gxWlR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQjJZV3gxWlNBOVBUMGdYQ0ppYVdkcGJuUmNJaWtnY21WMGRYSnVJRTUxYldKbGNpaDJZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QlJkV1Z5ZVVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0FnSUdBa2UyTnZiblJsZUhSOUlHOXVJR0pwWjJsdWRDQmhkSFJ5YVdKMWRHVWdYQ0lrZTJGMGRISk9ZVzFsZlZ3aUlISmxjWFZwY21WeklHNTFiV1Z5YVdNZ2RtRnNkV1Z6WUZ4dUlDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGRjFaWEo1UlhKeWIzSW9YRzRnSUNBZ0lDQWdJQ0FnWUNSN1kyOXVkR1Y0ZEgwZ2RXNXpkWEJ3YjNKMFpXUWdkSGx3WlNCY0lpUjdZWFIwY2xSNWNHVjlYQ0lnWm05eUlHRjBkSEpwWW5WMFpTQmNJaVI3WVhSMGNrNWhiV1Y5WENKZ1hHNGdJQ0FnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OVhHNGlYWDA9Il19
|
|
432
|
+
//# sourceMappingURL=RedisStatement.js.map
|
|
433
|
+
//# sourceMappingURL=RedisStatement.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis/RedisStatement.cjs","sourceRoot":"","sources":["redis/RedisStatement.js"],"names":[],"mappings":";;;AAAA,yCAA4G;AAC5G,2DAAwD;AACxD,qDAAgD;AAChD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAa,cAAe,SAAQ,gBAAS;IACzC;;;;OAIG;IACH,YAAY,OAAO,EAAE,SAAS;QAC1B,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9B,CAAC;IACD;;;;;OAKG;IACH,OAAO;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACxC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAChB,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM;gBAC/B,MAAM,IAAI,6BAAa,CAAC,gDAAgD,CAAC,CAAC;YAC9E,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,SAAS,EAAE,CAAC;gBACvC,MAAM,mBAAmB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC5D,MAAM,eAAe,GAAG,mBAAmB,KAAK,qBAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACpD,IAAI,UAAU,KAAK,CAAC;oBAChB,OAAO,eAAe,GAAG,UAAU,CAAC;YAC5C,CAAC;YACD,OAAO,CAAC,CAAC;QACb,CAAC,CAAC;IACN,CAAC;IACD;;;;;;;;OAQG;IACH,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;QACtB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,MAAM,KAAK,MAAM;YACjB,OAAO,CAAC,CAAC;QACb,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;YAChC,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,qBAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC/E,MAAM,YAAY,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,OAAO,MAAM,CAAC;QACrF,QAAQ,YAAY,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/C,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/C,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/C,KAAK,SAAS;gBACV,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChD,KAAK,MAAM,CAAC;YACZ,KAAK,QAAQ;gBACT,IAAI,MAAM,YAAY,IAAI,IAAI,MAAM,YAAY,IAAI,EAAE,CAAC;oBACnD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC7C,CAAC;gBACD,MAAM;YACV;gBACI,MAAM;QACd,CAAC;QACD,MAAM,IAAI,iBAAU,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD;;;OAGG;IACH,eAAe,CAAC,CAAC,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD;;;OAGG;IACH,cAAc,CAAC,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IACD;;;OAGG;IACH,cAAc,CAAC,CAAC,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,CAAC;YACP,OAAO,CAAC,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD;;;OAGG;IACH,cAAc,CAAC,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD;;;OAGG;IACH,YAAY,CAAC,CAAC,EAAE,CAAC;QACb,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACrC,CAAC;IACD;;;;;;OAMG;IACH,KAAK;QACD,IAAI,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG;YACX,MAAM,EAAE,IAAI,CAAC,cAAc;YAC3B,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,KAAK,EAAE,IAAI,CAAC,cAAc;gBACtB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK;gBAChD,CAAC,CAAC,6DAA6D;oBAC3D,CAAC,EAAE,EAAE,EAAE;wBACH,OAAO,IAAI,CAAC;oBAChB,CAAC;YACT,KAAK,EAAE,IAAI,CAAC,aAAa;YACzB,IAAI,EAAE,IAAI,CAAC,cAAc;YACzB,OAAO,EAAE,IAAI,CAAC,gBAAgB;SACjC,CAAC;QACF,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,WAAW;YACzC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACtC,IAAI,IAAI,CAAC,qBAAqB;YAC1B,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACtD,IAAI,IAAI,CAAC,WAAW;YAChB,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAClC,IAAI,IAAI,CAAC,WAAW;YAChB,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAClC,IAAI,IAAI,CAAC,WAAW;YAChB,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAClC,IAAI,IAAI,CAAC,WAAW;YAChB,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAClC,IAAI,IAAI,CAAC,gBAAgB;YACrB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC5C,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM;YAC7B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC;IAClB,CAAC;IACD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,cAAc,CAAC,SAAS;QACpB,OAAO;YACH,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;gBACT,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;gBAClD,IAAI,CAAC,oBAAa,CAAC,GAAG,EAAE,oBAAa,CAAC,EAAE,EAAE,eAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC/E,QAAQ,QAAQ,EAAE,CAAC;wBACf,KAAK,eAAQ,CAAC,MAAM;4BAChB,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;wBACjC,KAAK,eAAQ,CAAC,SAAS;4BACnB,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC;wBAClC,KAAK,eAAQ,CAAC,SAAS;4BACnB,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC;wBACnC,KAAK,eAAQ,CAAC,KAAK;4BACf,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC;wBACnC,KAAK,eAAQ,CAAC,MAAM;4BAChB,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ;gCAC5B,MAAM,IAAI,iBAAU,CAAC,wDAAwD,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;4BAC7F,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;wBACzD,KAAK,eAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;4BACxB,MAAM,IAAI,GAAG,KAAK,CAAC;4BACnB,MAAM,QAAQ,GAAG,IAAI,CAAC;4BACtB,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;4BAC1B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gCAChC,MAAM,IAAI,iBAAU,CAAC,4DAA4D,QAAQ,GAAG,CAAC,CAAC;4BAClG,CAAC;4BACD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gCACjC,MAAM,IAAI,iBAAU,CAAC,0DAA0D,OAAO,UAAU,EAAE,CAAC,CAAC;4BACxG,CAAC;4BACD,OAAO,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;wBAC5C,CAAC;wBACD,KAAK,eAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;4BACtB,MAAM,IAAI,GAAG,KAAK,CAAC;4BACnB,MAAM,QAAQ,GAAG,IAAI,CAAC;4BACtB,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;4BAC1B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gCAChC,MAAM,IAAI,iBAAU,CAAC,0DAA0D,QAAQ,GAAG,CAAC,CAAC;4BAChG,CAAC;4BACD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gCACjC,MAAM,IAAI,iBAAU,CAAC,wDAAwD,OAAO,UAAU,EAAE,CAAC,CAAC;4BACtG,CAAC;4BACD,OAAO,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;wBAC1C,CAAC;wBACD,KAAK,eAAQ,CAAC,OAAO;4BACjB,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;wBACjC,KAAK,eAAQ,CAAC,UAAU;4BACpB,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC;wBAClC,KAAK,eAAQ,CAAC,EAAE;4BACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;gCAC1B,MAAM,IAAI,iBAAU,CAAC,uCAAuC,OAAO,UAAU,EAAE,CAAC,CAAC;4BACrF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;wBACzC,KAAK,eAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;4BACpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gCACrD,MAAM,IAAI,iBAAU,CAAC,qEAAqE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;4BAC5H,MAAM,IAAI,GAAG,KAAK,CAAC;4BACnB,MAAM,QAAQ,GAAG,IAAI,CAAC;4BACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;4BACjF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gCACvD,MAAM,IAAI,iBAAU,CAAC,8DAA8D,QAAQ,QAAQ,QAAQ;oCACvG,SAAS,EAAE,CAAC,CAAC;4BACrB,CAAC;4BACD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,UAAU,CAAC;4BAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;4BACtB,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC1G,IAAI,eAAe,KAAK,IAAI;gCACxB,OAAO,KAAK,CAAC;4BACjB,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;4BACrF,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;4BACrF,OAAO,CAAC,eAAe,IAAI,aAAa,IAAI,eAAe,IAAI,aAAa,CAAC,CAAC;wBAClF,CAAC;wBACD,KAAK,eAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;4BACnB,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS;gCAClC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;4BACtB,OAAO,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;wBACrD,CAAC;wBACD;4BACI,MAAM,IAAI,6BAAa,CAAC,8CAA8C,QAAQ,EAAE,CAAC,CAAC;oBAC1F,CAAC;gBACL,CAAC;qBACI,IAAI,QAAQ,KAAK,eAAQ,CAAC,GAAG,EAAE,CAAC;oBACjC,IAAI,CAAC,CAAC,KAAK,YAAY,gBAAS,CAAC,EAAE,CAAC;wBAChC,MAAM,IAAI,6BAAa,CAAC,oDAAoD,CAAC,CAAC;oBAClF,CAAC;oBACD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5B,CAAC;qBACI,CAAC;oBACF,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;oBAC5C,QAAQ,QAAQ,EAAE,CAAC;wBACf,KAAK,oBAAa,CAAC,GAAG;4BAClB,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACxC,KAAK,oBAAa,CAAC,EAAE;4BACjB,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACxC;4BACI,MAAM,IAAI,6BAAa,CAAC,4CAA4C,QAAQ,EAAE,CAAC,CAAC;oBACxF,CAAC;gBACL,CAAC;YACL,CAAC;SACJ,CAAC;IACN,CAAC;IACD;;;;;OAKG;IACH,qBAAqB,CAAC,QAAQ,EAAE,OAAO;QACnC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;IAC9F,CAAC;IACD;;;;;OAKG;IACH,0BAA0B,CAAC,QAAQ,EAAE,OAAO;QACxC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACzH,CAAC;IACD;;;;;;;;;OASG;IACH,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW;QACxD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,MAAM,IAAI,6BAAa,CAAC,GAAG,OAAO,2DAA2D,CAAC,CAAC;QACnG,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,iBAAU,CAAC,GAAG,OAAO,eAAe,WAAW,oBAAoB,IAAI,QAAQ,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;QAClH,CAAC;IACL,CAAC;IACD;;;;;;;;OAQG;IACH,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC;QACrB,MAAM,QAAQ,GAAG,qBAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;YAC1C,qBAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,iBAAU,CAAC,GAAG,OAAO,yCAAyC,IAAI,GAAG,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ;QACtB,IAAI,CAAC,QAAQ;YACT,OAAO,SAAS,CAAC;QACrB,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAC5B,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,IAAI;YAC/C,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD;;;;OAIG;IACH,aAAa,CAAC,IAAI;QACd,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC;IAClD,CAAC;IACD;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;QACzD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAChB,IAAI,OAAO,EAAE,SAAS;gBAClB,OAAO,IAAI,CAAC;YAChB,MAAM,IAAI,iBAAU,CAAC,GAAG,OAAO,0BAA0B,QAAQ,GAAG,CAAC,CAAC;QAC1E,CAAC;QACD,QAAQ,QAAQ,EAAE,CAAC;YACf,KAAK,MAAM;gBACP,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC;oBAC3B,MAAM,IAAI,iBAAU,CAAC,GAAG,OAAO,uBAAuB,QAAQ,wBAAwB,CAAC,CAAC;gBAC5F,CAAC;gBACD,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3B,KAAK,QAAQ;gBACT,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC5B,MAAM,IAAI,iBAAU,CAAC,GAAG,OAAO,0BAA0B,QAAQ,0BAA0B,CAAC,CAAC;gBACjG,CAAC;gBACD,OAAO,KAAK,CAAC;YACjB,KAAK,QAAQ;gBACT,IAAI,OAAO,KAAK,KAAK,QAAQ;oBACzB,OAAO,KAAK,CAAC;gBACjB,IAAI,OAAO,KAAK,KAAK,QAAQ;oBACzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM,IAAI,iBAAU,CAAC,GAAG,OAAO,yBAAyB,QAAQ,2BAA2B,CAAC,CAAC;YACjG;gBACI,MAAM,IAAI,iBAAU,CAAC,GAAG,OAAO,sBAAsB,QAAQ,oBAAoB,QAAQ,GAAG,CAAC,CAAC;QACtG,CAAC;IACL,CAAC;CACJ;AA7YD,wCA6YC;AACD,0CAA0C"}
|