{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./jslib/src/abstractions/i18n.service.ts","webpack:///./jslib/src/abstractions/platformUtils.service.ts","webpack:///./jslib/src/abstractions/api.service.ts","webpack:///./jslib/src/abstractions/user.service.ts","webpack:///./jslib/src/angular/pipes/i18n.pipe.ts","webpack:///./jslib/src/abstractions/messaging.service.ts","webpack:///./jslib/src/angular/directives/api-action.directive.ts","webpack:///./jslib/src/angular/directives/a11y-title.directive.ts","webpack:///./jslib/src/abstractions/crypto.service.ts","webpack:///./jslib/src/abstractions/cipher.service.ts","webpack:///./jslib/src/models/response/baseResponse.ts","webpack:///./jslib/src/angular/components/callout.component.ts","webpack:///./jslib/src/angular/components/callout.component.html","webpack:///./jslib/src/importers/baseImporter.ts","webpack:///./jslib/src/models/domain/importResult.ts","webpack:///./jslib/src/misc/utils.ts","webpack:///./jslib/src/abstractions/passwordGeneration.service.ts","webpack:///./jslib/src/angular/directives/stop-click.directive.ts","webpack:///./jslib/src/abstractions/state.service.ts","webpack:///./jslib/src/enums/cipherType.ts","webpack:///./jslib/src/abstractions/collection.service.ts","webpack:///./jslib/src/abstractions/storage.service.ts","webpack:///./jslib/src/abstractions/policy.service.ts","webpack:///./jslib/src/angular/directives/input-verbatim.directive.ts","webpack:///./jslib/src/abstractions/folder.service.ts","webpack:///./jslib/src/angular/directives/stop-prop.directive.ts","webpack:///./jslib/src/abstractions/auth.service.ts","webpack:///./jslib/src/abstractions/sync.service.ts","webpack:///./jslib/src/abstractions/environment.service.ts","webpack:///./jslib/src/angular/directives/autofocus.directive.ts","webpack:///./jslib/src/services/constants.service.ts","webpack:///./jslib/src/abstractions/event.service.ts","webpack:///./jslib/src/models/request/passwordVerificationRequest.ts","webpack:///./jslib/src/abstractions/search.service.ts","webpack:///./jslib/src/models/domain/domainBase.ts","webpack:///./src/app/modal.component.ts","webpack:///./jslib/src/abstractions/audit.service.ts","webpack:///./jslib/src/models/view/cardView.ts","webpack:///./jslib/src/models/view/secureNoteView.ts","webpack:///./jslib/src/abstractions/token.service.ts","webpack:///./jslib/src/abstractions/cryptoFunction.service.ts","webpack:///./jslib/src/models/domain/cipherString.ts","webpack:///./jslib/src/angular/components/icon.component.ts","webpack:///./jslib/src/angular/components/icon.component.html","webpack:///./jslib/src/angular/services/broadcaster.service.ts","webpack:///./jslib/src/abstractions/vaultTimeout.service.ts","webpack:///./jslib/src/enums/secureNoteType.ts","webpack:///./jslib/src/enums/twoFactorProviderType.ts","webpack:///./jslib/src/abstractions/totp.service.ts","webpack:///./src/app/settings/payment.component.ts","webpack:///./src/app/settings/payment.component.html","webpack:///./jslib/src/enums/fieldType.ts","webpack:///./jslib/src/models/view/folderView.ts","webpack:///./src/app/components/avatar.component.ts","webpack:///./jslib/src/models/domain/collection.ts","webpack:///./jslib/src/enums/policyType.ts","webpack:///./src/app/settings/tax-info.component.ts","webpack:///./src/app/settings/tax-info.component.html","webpack:///./jslib/src/models/view/cipherView.ts","webpack:///./jslib/src/models/view/identityView.ts","webpack:///./jslib/src/models/data/collectionData.ts","webpack:///./jslib/src/models/view/collectionView.ts","webpack:///./jslib/src/enums/organizationUserStatusType.ts","webpack:///./jslib/src/models/data/cipherData.ts","webpack:///./jslib/src/models/view/loginView.ts","webpack:///./jslib/src/enums/sendType.ts","webpack:///./src/app/settings/two-factor-verify.component.ts","webpack:///./src/app/settings/two-factor-verify.component.html","webpack:///./jslib/src/abstractions/export.service.ts","webpack:///./jslib/src/models/domain/cipher.ts","webpack:///./jslib/src/abstractions/send.service.ts","webpack:///./jslib/src/models/view/fieldView.ts","webpack:///./jslib/src/models/request/cipherRequest.ts","webpack:///./src/app/services/router.service.ts","webpack:///./jslib/src/enums/kdfType.ts","webpack:///./src/app/components/password-strength.component.ts","webpack:///./src/app/components/password-strength.component.html","webpack:///./jslib/src/enums/organizationUserType.ts","webpack:///./jslib/src/angular/pipes/search.pipe.ts","webpack:///./src/app/services/event.service.ts","webpack:///./jslib/src/enums/eventType.ts","webpack:///./jslib/src/enums/paymentMethodType.ts","webpack:///./src/app/settings/two-factor-base.component.ts","webpack:///./src/app/tools/cipher-report.component.ts","webpack:///./jslib/src/models/view/loginUriView.ts","webpack:///./src/app/vault/add-edit.component.ts","webpack:///./src/app/vault/add-edit.component.html","webpack:///./jslib/src/abstractions/import.service.ts","webpack:///./src/app/vault/ciphers.component.ts","webpack:///./src/app/vault/ciphers.component.html","webpack:///./jslib/src/services/auth.service.ts","webpack:///./jslib/src/models/request/selectionReadOnlyRequest.ts","webpack:///./jslib/src/enums/deviceType.ts","webpack:///./jslib/src/abstractions/settings.service.ts","webpack:///./jslib/src/enums/planType.ts","webpack:///./src/app/settings/organization-plans.component.ts","webpack:///./src/app/settings/organization-plans.component.html","webpack:///./jslib/src/models/domain/symmetricCryptoKey.ts","webpack:///./jslib/src/models/domain/card.ts","webpack:///./jslib/src/models/domain/field.ts","webpack:///./jslib/src/models/domain/identity.ts","webpack:///./jslib/src/models/domain/login.ts","webpack:///./jslib/src/models/domain/loginUri.ts","webpack:///./jslib/src/enums/uriMatchType.ts","webpack:///./jslib/src/models/domain/secureNote.ts","webpack:///./jslib/src/angular/directives/true-false-value.directive.ts","webpack:///./src/app/vault/groupings.component.ts","webpack:///./src/app/vault/groupings.component.html","webpack:///./jslib/src/models/domain/organization.ts","webpack:///./jslib/src/models/view/sendFileView.ts","webpack:///./jslib/src/models/view/sendTextView.ts","webpack:///./src/app/settings/organizations.component.ts","webpack:///./src/app/settings/organizations.component.html","webpack:///./jslib/src/models/response/selectionReadOnlyResponse.ts","webpack:///./src/app/layouts/navbar.component.ts","webpack:///./src/app/layouts/navbar.component.html","webpack:///./src/app/layouts/footer.component.ts","webpack:///./src/app/layouts/footer.component.html","webpack:///./jslib/src/angular/services/validation.service.ts","webpack:///./jslib/src/enums/encryptionType.ts","webpack:///./jslib/src/models/request/keysRequest.ts","webpack:///./jslib/src/models/domain/policy.ts","webpack:///./jslib/src/models/data/policyData.ts","webpack:///./jslib/src/angular/components/change-password.component.ts","webpack:///./src/app/organizations/manage/entity-users.component.ts","webpack:///./src/app/organizations/manage/entity-users.component.html","webpack:///./src/app/organizations/manage/entity-events.component.ts","webpack:///./src/app/organizations/manage/entity-events.component.html","webpack:///./jslib/src/models/api/permissionsApi.ts","webpack:///./src/app/settings/api-key.component.ts","webpack:///./src/app/settings/api-key.component.html","webpack:///./src/app/settings/purge-vault.component.ts","webpack:///./src/app/settings/purge-vault.component.html","webpack:///./src/app/settings/user-billing.component.ts","webpack:///./src/app/settings/user-billing.component.html","webpack:///./src/app/settings/add-credit.component.ts","webpack:///./src/app/settings/add-credit.component.html","webpack:///./src/app/settings/adjust-payment.component.ts","webpack:///./src/app/settings/adjust-payment.component.html","webpack:///./src/app/settings/update-license.component.ts","webpack:///./src/app/settings/update-license.component.html","webpack:///./jslib/src/enums/productType.ts","webpack:///./src/app/settings/adjust-storage.component.ts","webpack:///./src/app/settings/adjust-storage.component.html","webpack:///./src/app/settings/two-factor-duo.component.ts","webpack:///./src/app/settings/two-factor-duo.component.html","webpack:///./src/app/settings/two-factor-setup.component.ts","webpack:///./src/app/settings/two-factor-setup.component.html","webpack:///./src/app/tools/export.component.ts","webpack:///./src/app/tools/export.component.html","webpack:///./src/app/tools/exposed-passwords-report.component.ts","webpack:///./src/app/tools/exposed-passwords-report.component.html","webpack:///./src/app/organizations/vault/add-edit.component.ts","webpack:///./jslib/src/models/data/attachmentData.ts","webpack:///./jslib/src/models/data/cardData.ts","webpack:///./jslib/src/models/data/fieldData.ts","webpack:///./jslib/src/models/data/identityData.ts","webpack:///./jslib/src/models/data/loginData.ts","webpack:///./jslib/src/models/data/loginUriData.ts","webpack:///./jslib/src/models/data/secureNoteData.ts","webpack:///./jslib/src/models/domain/attachment.ts","webpack:///./jslib/src/models/view/passwordHistoryView.ts","webpack:///./src/app/tools/import.component.ts","webpack:///./src/app/tools/import.component.html","webpack:///./src/app/tools/inactive-two-factor-report.component.ts","webpack:///./src/app/tools/inactive-two-factor-report.component.html","webpack:///./src/app/tools/reused-passwords-report.component.ts","webpack:///./src/app/tools/reused-passwords-report.component.html","webpack:///./src/app/tools/unsecured-websites-report.component.ts","webpack:///./src/app/tools/unsecured-websites-report.component.html","webpack:///./src/app/tools/weak-passwords-report.component.ts","webpack:///./src/app/tools/weak-passwords-report.component.html","webpack:///./src/app/vault/attachments.component.ts","webpack:///./src/app/vault/attachments.component.html","webpack:///./src/app/organizations/vault/ciphers.component.ts","webpack:///./src/app/vault/collections.component.ts","webpack:///./src/app/vault/collections.component.html","webpack:///./src/app/organizations/vault/groupings.component.ts","webpack:///./src/app/vault/bulk-actions.component.ts","webpack:///./src/app/vault/bulk-actions.component.html","webpack:///./jslib/src/models/domain/sendFile.ts","webpack:///./jslib/src/models/domain/sendText.ts","webpack:///./jslib/src/models/response/errorResponse.ts","webpack:///./jslib/src/models/request/cipherWithIdRequest.ts","webpack:///./jslib/src/models/request/folderRequest.ts","webpack:///./jslib/src/angular/directives/select-copy.directive.ts","webpack:///./jslib/src/angular/pipes/color-password.pipe.ts","webpack:///./jslib/src/models/data/folderData.ts","webpack:///./jslib/src/models/domain/folder.ts","webpack:///./jslib/src/models/response/cipherResponse.ts","webpack:///./jslib/src/models/response/profileResponse.ts","webpack:///./jslib/src/models/api/sendFileApi.ts","webpack:///./jslib/src/models/api/sendTextApi.ts","webpack:///./jslib/src/abstractions/notifications.service.ts","webpack:///./$_lazy_route_resource lazy namespace object","webpack:///./src/app/layouts/frontend-layout.component.ts","webpack:///./src/app/layouts/frontend-layout.component.html","webpack:///./src/app/layouts/organization-layout.component.ts","webpack:///./src/app/layouts/organization-layout.component.html","webpack:///./src/app/layouts/user-layout.component.ts","webpack:///./src/app/layouts/user-layout.component.html","webpack:///./src/app/accounts/accept-emergency.component.ts","webpack:///./src/app/accounts/accept-emergency.component.html","webpack:///./src/app/accounts/accept-organization.component.ts","webpack:///./src/app/accounts/accept-organization.component.html","webpack:///./src/app/accounts/hint.component.ts","webpack:///./src/app/accounts/hint.component.html","webpack:///./src/app/accounts/lock.component.ts","webpack:///./src/app/accounts/lock.component.html","webpack:///./src/app/accounts/login.component.ts","webpack:///./src/app/accounts/login.component.html","webpack:///./src/app/accounts/recover-delete.component.ts","webpack:///./src/app/accounts/recover-delete.component.html","webpack:///./src/app/accounts/recover-two-factor.component.ts","webpack:///./src/app/accounts/recover-two-factor.component.html","webpack:///./src/app/accounts/register.component.ts","webpack:///./src/app/accounts/register.component.html","webpack:///./src/app/accounts/set-password.component.ts","webpack:///./src/app/accounts/set-password.component.html","webpack:///./src/app/accounts/sso.component.ts","webpack:///./src/app/accounts/sso.component.html","webpack:///./jslib/src/angular/components/sso.component.ts","webpack:///./src/app/accounts/two-factor.component.ts","webpack:///./src/app/accounts/two-factor.component.html","webpack:///./src/app/accounts/two-factor-options.component.ts","webpack:///./src/app/accounts/two-factor-options.component.html","webpack:///./jslib/src/models/request/twoFactorEmailRequest.ts","webpack:///./jslib/src/models/domain/authResult.ts","webpack:///./src/app/accounts/verify-email-token.component.ts","webpack:///./src/app/accounts/verify-email-token.component.html","webpack:///./src/app/accounts/verify-recover-delete.component.ts","webpack:///./src/app/accounts/verify-recover-delete.component.html","webpack:///./src/app/organizations/manage/collections.component.ts","webpack:///./src/app/organizations/manage/collections.component.html","webpack:///./src/app/organizations/manage/collection-add-edit.component.ts","webpack:///./src/app/organizations/manage/collection-add-edit.component.html","webpack:///./jslib/src/models/request/collectionRequest.ts","webpack:///./src/app/organizations/manage/events.component.ts","webpack:///./src/app/organizations/manage/events.component.html","webpack:///./src/app/organizations/manage/groups.component.ts","webpack:///./src/app/organizations/manage/groups.component.html","webpack:///./src/app/organizations/manage/group-add-edit.component.ts","webpack:///./src/app/organizations/manage/group-add-edit.component.html","webpack:///./src/app/organizations/manage/manage.component.ts","webpack:///./src/app/organizations/manage/manage.component.html","webpack:///./src/app/organizations/manage/people.component.ts","webpack:///./src/app/organizations/manage/people.component.html","webpack:///./jslib/src/models/request/organizationUserConfirmRequest.ts","webpack:///./src/app/organizations/manage/user-add-edit.component.ts","webpack:///./src/app/organizations/manage/user-add-edit.component.html","webpack:///./src/app/organizations/manage/user-confirm.component.ts","webpack:///./src/app/organizations/manage/user-confirm.component.html","webpack:///./src/app/organizations/manage/user-groups.component.ts","webpack:///./src/app/organizations/manage/user-groups.component.html","webpack:///./src/app/organizations/manage/policies.component.ts","webpack:///./src/app/organizations/manage/policies.component.html","webpack:///./jslib/src/abstractions/index.ts","webpack:///./src/app/organizations/manage/policy-edit.component.ts","webpack:///./src/app/organizations/manage/policy-edit.component.html","webpack:///./src/app/organizations/settings/account.component.ts","webpack:///./src/app/organizations/settings/account.component.html","webpack:///./jslib/src/models/request/organizationTaxInfoUpdateRequest.ts","webpack:///./jslib/src/models/request/taxInfoUpdateRequest.ts","webpack:///./src/app/organizations/settings/delete-organization.component.ts","webpack:///./src/app/organizations/settings/delete-organization.component.html","webpack:///./src/app/organizations/settings/organization-billing.component.ts","webpack:///./src/services/webConstants.ts","webpack:///./src/app/organizations/settings/organization-subscription.component.ts","webpack:///./src/app/organizations/settings/organization-subscription.component.html","webpack:///./src/app/organizations/settings/change-plan.component.ts","webpack:///./src/app/organizations/settings/change-plan.component.html","webpack:///./src/app/organizations/settings/download-license.component.ts","webpack:///./src/app/organizations/settings/download-license.component.html","webpack:///./src/app/organizations/settings/adjust-seats.component.ts","webpack:///./src/app/organizations/settings/adjust-seats.component.html","webpack:///./src/app/organizations/settings/settings.component.ts","webpack:///./src/app/organizations/settings/settings.component.html","webpack:///./src/app/organizations/settings/two-factor-setup.component.ts","webpack:///./src/app/settings/two-factor-authenticator.component.ts","webpack:///./src/app/settings/two-factor-authenticator.component.html","webpack:///./src/app/settings/two-factor-email.component.ts","webpack:///./src/app/settings/two-factor-email.component.html","webpack:///./src/app/settings/two-factor-recovery.component.ts","webpack:///./src/app/settings/two-factor-recovery.component.html","webpack:///./src/app/settings/two-factor-u2f.component.ts","webpack:///./src/app/settings/two-factor-u2f.component.html","webpack:///./src/app/settings/two-factor-yubikey.component.ts","webpack:///./src/app/settings/two-factor-yubikey.component.html","webpack:///./src/app/organizations/tools/export.component.ts","webpack:///./src/app/organizations/tools/exposed-passwords-report.component.ts","webpack:///./jslib/src/models/data/passwordHistoryData.ts","webpack:///./jslib/src/models/view/attachmentView.ts","webpack:///./jslib/src/models/domain/password.ts","webpack:///./jslib/src/models/request/cipherCreateRequest.ts","webpack:///./jslib/src/models/api/cardApi.ts","webpack:///./jslib/src/models/api/fieldApi.ts","webpack:///./jslib/src/models/api/identityApi.ts","webpack:///./jslib/src/models/api/loginApi.ts","webpack:///./jslib/src/models/api/loginUriApi.ts","webpack:///./jslib/src/models/api/secureNoteApi.ts","webpack:///./jslib/src/angular/directives/fallback-src.directive.ts","webpack:///./src/app/organizations/tools/import.component.ts","webpack:///./src/app/organizations/tools/inactive-two-factor-report.component.ts","webpack:///./src/app/organizations/tools/reused-passwords-report.component.ts","webpack:///./src/app/organizations/tools/tools.component.ts","webpack:///./src/app/organizations/tools/tools.component.html","webpack:///./src/app/organizations/tools/unsecured-websites-report.component.ts","webpack:///./src/app/organizations/tools/weak-passwords-report.component.ts","webpack:///./src/app/organizations/vault/vault.component.ts","webpack:///./src/app/organizations/vault/vault.component.html","webpack:///./src/app/organizations/vault/attachments.component.ts","webpack:///./jslib/src/angular/components/attachments.component.ts","webpack:///./src/app/organizations/vault/collections.component.ts","webpack:///./jslib/src/models/request/cipherCollectionsRequest.ts","webpack:///./src/app/vault/bulk-delete.component.ts","webpack:///./src/app/vault/bulk-delete.component.html","webpack:///./jslib/src/models/request/cipherBulkDeleteRequest.ts","webpack:///./src/app/vault/bulk-move.component.ts","webpack:///./src/app/vault/bulk-move.component.html","webpack:///./src/app/vault/bulk-restore.component.ts","webpack:///./src/app/vault/bulk-restore.component.html","webpack:///./src/app/vault/bulk-share.component.ts","webpack:///./src/app/vault/bulk-share.component.html","webpack:///./src/app/send/access.component.ts","webpack:///./src/app/send/access.component.html","webpack:///./src/app/send/send.component.ts","webpack:///./src/app/send/send.component.html","webpack:///./src/app/send/add-edit.component.ts","webpack:///./src/app/send/add-edit.component.html","webpack:///./jslib/src/models/view/sendView.ts","webpack:///./src/app/settings/account.component.ts","webpack:///./src/app/settings/account.component.html","webpack:///./src/app/settings/deauthorize-sessions.component.ts","webpack:///./src/app/settings/deauthorize-sessions.component.html","webpack:///./src/app/settings/delete-account.component.ts","webpack:///./src/app/settings/delete-account.component.html","webpack:///./src/app/settings/profile.component.ts","webpack:///./src/app/settings/profile.component.html","webpack:///./src/app/settings/change-email.component.ts","webpack:///./src/app/settings/change-email.component.html","webpack:///./jslib/src/models/request/emailTokenRequest.ts","webpack:///./src/app/settings/change-password.component.ts","webpack:///./src/app/settings/change-password.component.html","webpack:///./jslib/src/enums/emergencyAccessStatusType.ts","webpack:///./jslib/src/models/request/emergencyAccessUpdateRequest.ts","webpack:///./jslib/src/models/request/folderWithIdRequest.ts","webpack:///./jslib/src/models/request/passwordRequest.ts","webpack:///./jslib/src/models/request/updateKeyRequest.ts","webpack:///./src/app/settings/change-kdf.component.ts","webpack:///./src/app/settings/change-kdf.component.html","webpack:///./src/app/settings/create-organization.component.ts","webpack:///./src/app/settings/create-organization.component.html","webpack:///./src/app/settings/domain-rules.component.ts","webpack:///./src/app/settings/domain-rules.component.html","webpack:///./src/app/settings/options.component.ts","webpack:///./src/app/settings/options.component.html","webpack:///./src/app/settings/link-sso.component.ts","webpack:///./src/app/settings/link-sso.component.html","webpack:///./src/app/settings/premium.component.ts","webpack:///./src/app/settings/premium.component.html","webpack:///./src/app/settings/settings.component.ts","webpack:///./src/app/settings/settings.component.html","webpack:///./src/app/settings/user-subscription.component.ts","webpack:///./src/app/settings/user-subscription.component.html","webpack:///./src/app/tools/breach-report.component.ts","webpack:///./src/app/tools/breach-report.component.html","webpack:///./src/app/tools/password-generator.component.ts","webpack:///./src/app/tools/password-generator.component.html","webpack:///./src/app/tools/password-generator-history.component.ts","webpack:///./src/app/tools/password-generator-history.component.html","webpack:///./src/app/tools/tools.component.ts","webpack:///./src/app/tools/tools.component.html","webpack:///./src/app/vault/vault.component.ts","webpack:///./src/app/vault/vault.component.html","webpack:///./src/app/settings/update-key.component.ts","webpack:///./src/app/settings/update-key.component.html","webpack:///./src/app/vault/folder-add-edit.component.ts","webpack:///./src/app/vault/folder-add-edit.component.html","webpack:///./src/app/vault/share.component.ts","webpack:///./src/app/vault/share.component.html","webpack:///./src/app/vault/send-info.component.ts","webpack:///./src/app/vault/send-info.component.html","webpack:///./src/app/settings/verify-email.component.ts","webpack:///./src/app/settings/verify-email.component.html","webpack:///./src/app/services/organization-guard.service.ts","webpack:///./src/app/services/organization-type-guard.service.ts","webpack:///./jslib/src/enums/permissions.ts","webpack:///./src/app/services/unauth-guard.service.ts","webpack:///./jslib/src/angular/services/auth-guard.service.ts","webpack:///./src/app/settings/emergency-access-view.component.ts","webpack:///./src/app/settings/emergency-access-view.component.html","webpack:///./jslib/src/models/domain/encryptedObject.ts","webpack:///./jslib/src/models/domain/environmentUrls.ts","webpack:///./jslib/src/models/domain/generatedPasswordHistory.ts","webpack:///./src/app/settings/emergency-access-attachments.component.ts","webpack:///./src/app/settings/emergency-add-edit.component.ts","webpack:///./src/app/settings/emergency-access.component.ts","webpack:///./src/app/settings/emergency-access.component.html","webpack:///./jslib/src/enums/emergencyAccessType.ts","webpack:///./jslib/src/models/response/emergencyAccessResponse.ts","webpack:///./src/app/settings/emergency-access-add-edit.component.ts","webpack:///./src/app/settings/emergency-access-add-edit.component.html","webpack:///./src/app/settings/emergency-access-confirm.component.ts","webpack:///./src/app/settings/emergency-access-confirm.component.html","webpack:///./src/app/settings/emergency-access-takeover.component.ts","webpack:///./src/app/settings/emergency-access-takeover.component.html","webpack:///./jslib/src/services/api.service.ts","webpack:///./jslib/src/models/response/collectionResponse.ts","webpack:///./jslib/src/models/response/domainsResponse.ts","webpack:///./jslib/src/models/response/folderResponse.ts","webpack:///./jslib/src/models/response/organizationResponse.ts","webpack:///./jslib/src/models/response/planResponse.ts","webpack:///./jslib/src/models/response/subscriptionResponse.ts","webpack:///./jslib/src/models/response/policyResponse.ts","webpack:///./jslib/src/models/response/sendResponse.ts","webpack:///./jslib/src/services/appId.service.ts","webpack:///./jslib/src/services/audit.service.ts","webpack:///./jslib/src/services/cipher.service.ts","webpack:///./jslib/src/misc/sequentialize.ts","webpack:///./jslib/src/services/collection.service.ts","webpack:///./jslib/src/misc/serviceUtils.ts","webpack:///./jslib/src/services/container.service.ts","webpack:///./jslib/src/services/crypto.service.ts","webpack:///./jslib/src/misc/wordlist.ts","webpack:///./jslib/src/services/environment.service.ts","webpack:///./jslib/src/services/folder.service.ts","webpack:///./jslib/src/services/i18n.service.ts","webpack:///./jslib/src/services/passwordGeneration.service.ts","webpack:///./jslib/src/services/settings.service.ts","webpack:///./jslib/src/services/state.service.ts","webpack:///./jslib/src/services/sync.service.ts","webpack:///./jslib/src/models/data/sendData.ts","webpack:///./jslib/src/services/token.service.ts","webpack:///./jslib/src/services/totp.service.ts","webpack:///./jslib/src/services/user.service.ts","webpack:///./jslib/src/services/vaultTimeout.service.ts","webpack:///./jslib/src/services/consoleLog.service.ts","webpack:///./jslib/src/models/export/cipherWithIds.ts","webpack:///./jslib/src/models/export/collectionWithId.ts","webpack:///./jslib/src/models/export/folderWithId.ts","webpack:///./jslib/src/importers/onepasswordImporters/onepasswordCsvImporter.ts","webpack:///./jslib/src/models/view/index.ts","webpack:///./jslib/src/enums/notificationType.ts","webpack:///./src/app/main.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/app-routing.module.ts","webpack:///./jslib/src/services/broadcaster.service.ts","webpack:///./jslib/src/misc/tldjs.noop.ts","webpack:///./jslib/src/models/request/emergencyAccessAcceptRequest.ts","webpack:///./jslib/src/models/request/organizationUserAcceptRequest.ts","webpack:///./jslib/src/angular/components/hint.component.ts","webpack:///./jslib/src/models/request/passwordHintRequest.ts","webpack:///./jslib/src/angular/components/lock.component.ts","webpack:///./jslib/src/angular/components/login.component.ts","webpack:///./jslib/src/models/request/deleteRecoverRequest.ts","webpack:///./jslib/src/models/request/twoFactorRecoveryRequest.ts","webpack:///./jslib/src/angular/components/register.component.ts","webpack:///./jslib/src/models/request/registerRequest.ts","webpack:///./jslib/src/models/request/referenceEventRequest.ts","webpack:///./jslib/src/angular/components/set-password.component.ts","webpack:///./jslib/src/models/request/setPasswordRequest.ts","webpack:///./jslib/src/angular/components/two-factor-options.component.ts","webpack:///./jslib/src/angular/components/modal.component.ts","webpack:///./jslib/src/angular/components/two-factor.component.ts","webpack:///./jslib/src/models/request/deviceRequest.ts","webpack:///./jslib/src/models/request/preloginRequest.ts","webpack:///./jslib/src/models/request/tokenRequest.ts","webpack:///./jslib/src/misc/u2f.ts","webpack:///./jslib/src/models/request/verifyEmailRequest.ts","webpack:///./jslib/src/models/request/verifyDeleteRecoverRequest.ts","webpack:///./jslib/src/models/request/groupRequest.ts","webpack:///./jslib/src/models/request/organizationUserInviteRequest.ts","webpack:///./jslib/src/models/request/organizationUserUpdateRequest.ts","webpack:///./jslib/src/models/request/organizationUserUpdateGroupsRequest.ts","webpack:///./jslib/src/abstractions/appId.service.ts","webpack:///./jslib/src/abstractions/log.service.ts","webpack:///./jslib/src/models/request/policyRequest.ts","webpack:///./jslib/src/models/request/organizationUpdateRequest.ts","webpack:///./jslib/src/enums/transactionType.ts","webpack:///./jslib/src/models/request/verifyBankRequest.ts","webpack:///./jslib/src/models/request/bitPayInvoiceRequest.ts","webpack:///./jslib/src/models/request/paymentRequest.ts","webpack:///./jslib/src/models/request/organizationCreateRequest.ts","webpack:///./jslib/src/models/request/organizationUpgradeRequest.ts","webpack:///./jslib/src/models/request/seatRequest.ts","webpack:///./jslib/src/models/request/storageRequest.ts","webpack:///./jslib/src/models/request/updateTwoFactorDuoRequest.ts","webpack:///./jslib/src/models/request/twoFactorProviderRequest.ts","webpack:///./jslib/src/models/request/updateTwoFactorAuthenticatorRequest.ts","webpack:///./jslib/src/models/request/updateTwoFactorEmailRequest.ts","webpack:///./jslib/src/models/request/updateTwoFactorU2fDeleteRequest.ts","webpack:///./jslib/src/models/request/updateTwoFactorU2fRequest.ts","webpack:///./jslib/src/models/request/updateTwoFactorYubioOtpRequest.ts","webpack:///./jslib/src/angular/components/export.component.ts","webpack:///./jslib/src/models/request/attachmentRequest.ts","webpack:///./jslib/src/angular/components/add-edit.component.ts","webpack:///./jslib/src/angular/components/ciphers.component.ts","webpack:///./jslib/src/angular/components/collections.component.ts","webpack:///./jslib/src/angular/components/groupings.component.ts","webpack:///./jslib/src/models/domain/sendAccess.ts","webpack:///./jslib/src/models/view/sendAccessView.ts","webpack:///./jslib/src/models/request/sendAccessRequest.ts","webpack:///./jslib/src/angular/components/send/send.component.ts","webpack:///./jslib/src/angular/components/send/add-edit.component.ts","webpack:///./jslib/src/models/request/updateProfileRequest.ts","webpack:///./jslib/src/models/request/emailRequest.ts","webpack:///./jslib/src/models/request/kdfRequest.ts","webpack:///./jslib/src/models/request/updateDomainsRequest.ts","webpack:///./jslib/src/angular/components/password-generator.component.ts","webpack:///./jslib/src/angular/components/password-generator-history.component.ts","webpack:///./jslib/src/angular/components/folder-add-edit.component.ts","webpack:///./jslib/src/angular/components/share.component.ts","webpack:///./jslib/src/models/data/index.ts","webpack:///./jslib/src/models/domain/index.ts","webpack:///./jslib/src/models/request/emergencyAccessConfirmRequest.ts","webpack:///./jslib/src/models/response/attachmentResponse.ts","webpack:///./jslib/src/models/response/passwordHistoryResponse.ts","webpack:///./jslib/src/models/request/emergencyAccessInviteRequest.ts","webpack:///./jslib/src/models/request/emergencyAccessPasswordRequest.ts","webpack:///./src/app/services/services.module.ts","webpack:///./src/services/broadcasterMessaging.service.ts","webpack:///./src/services/htmlStorage.service.ts","webpack:///./jslib/src/services/index.ts","webpack:///./jslib/src/models/response/apiKeyResponse.ts","webpack:///./jslib/src/models/response/billingResponse.ts","webpack:///./jslib/src/models/response/breachAccountResponse.ts","webpack:///./jslib/src/models/response/globalDomainResponse.ts","webpack:///./jslib/src/models/response/eventResponse.ts","webpack:///./jslib/src/models/response/groupResponse.ts","webpack:///./jslib/src/models/response/identityTokenResponse.ts","webpack:///./jslib/src/models/response/identityTwoFactorResponse.ts","webpack:///./jslib/src/models/response/listResponse.ts","webpack:///./jslib/src/models/response/organizationSubscriptionResponse.ts","webpack:///./jslib/src/models/response/organizationUserResponse.ts","webpack:///./jslib/src/models/response/paymentResponse.ts","webpack:///./jslib/src/models/response/profileOrganizationResponse.ts","webpack:///./jslib/src/models/response/preloginResponse.ts","webpack:///./jslib/src/models/response/sendAccessResponse.ts","webpack:///./jslib/src/models/response/sendFileDownloadDataResponse.ts","webpack:///./jslib/src/models/response/syncResponse.ts","webpack:///./jslib/src/models/response/taxInfoResponse.ts","webpack:///./jslib/src/models/response/taxRateResponse.ts","webpack:///./jslib/src/models/response/twoFactorAuthenticatorResponse.ts","webpack:///./jslib/src/models/response/twoFactorDuoResponse.ts","webpack:///./jslib/src/models/response/twoFactorEmailResponse.ts","webpack:///./jslib/src/models/response/twoFactorProviderResponse.ts","webpack:///./jslib/src/models/response/twoFactorRescoverResponse.ts","webpack:///./jslib/src/models/response/twoFactorU2fResponse.ts","webpack:///./jslib/src/models/response/twoFactorYubiKeyResponse.ts","webpack:///./jslib/src/models/response/userKeyResponse.ts","webpack:///./jslib/src/misc/throttle.ts","webpack:///./jslib/src/models/request/cipherBulkMoveRequest.ts","webpack:///./jslib/src/models/request/cipherBulkRestoreRequest.ts","webpack:///./jslib/src/models/request/cipherBulkShareRequest.ts","webpack:///./jslib/src/models/request/cipherShareRequest.ts","webpack:///./jslib/src/models/domain/sortedCiphersCache.ts","webpack:///./jslib/src/models/domain/treeNode.ts","webpack:///./jslib/src/models/domain/passwordGeneratorPolicyOptions.ts","webpack:///./jslib/src/models/data/organizationData.ts","webpack:///./jslib/src/models/data/sendFileData.ts","webpack:///./jslib/src/models/data/sendTextData.ts","webpack:///./src/services/i18n.service.ts","webpack:///./src/services/memoryStorage.service.ts","webpack:///./src/services/webPlatformUtils.service.ts","webpack:///./jslib/src/misc/analytics.ts","webpack:///./jslib/src/enums/logLevelType.ts","webpack:///./jslib/src/services/event.service.ts","webpack:///./jslib/src/models/data/eventData.ts","webpack:///./jslib/src/models/request/eventRequest.ts","webpack:///./jslib/src/services/export.service.ts","webpack:///./jslib/src/models/export/cipher.ts","webpack:///./jslib/src/models/export/card.ts","webpack:///./jslib/src/models/export/field.ts","webpack:///./jslib/src/models/export/identity.ts","webpack:///./jslib/src/models/export/login.ts","webpack:///./jslib/src/models/export/loginUri.ts","webpack:///./jslib/src/models/export/secureNote.ts","webpack:///./jslib/src/models/export/collection.ts","webpack:///./jslib/src/models/export/folder.ts","webpack:///./jslib/src/services/import.service.ts","webpack:///./jslib/src/models/request/importCiphersRequest.ts","webpack:///./jslib/src/models/request/importOrganizationCiphersRequest.ts","webpack:///./jslib/src/models/request/kvpRequest.ts","webpack:///./jslib/src/importers/ascendoCsvImporter.ts","webpack:///./jslib/src/importers/avastCsvImporter.ts","webpack:///./jslib/src/importers/avastJsonImporter.ts","webpack:///./jslib/src/importers/aviraCsvImporter.ts","webpack:///./jslib/src/importers/bitwardenCsvImporter.ts","webpack:///./jslib/src/importers/bitwardenJsonImporter.ts","webpack:///./jslib/src/importers/blackBerryCsvImporter.ts","webpack:///./jslib/src/importers/blurCsvImporter.ts","webpack:///./jslib/src/importers/buttercupCsvImporter.ts","webpack:///./jslib/src/importers/chromeCsvImporter.ts","webpack:///./jslib/src/importers/clipperzHtmlImporter.ts","webpack:///./jslib/src/importers/codebookCsvImporter.ts","webpack:///./jslib/src/importers/dashlaneJsonImporter.ts","webpack:///./jslib/src/importers/encryptrCsvImporter.ts","webpack:///./jslib/src/importers/enpassCsvImporter.ts","webpack:///./jslib/src/importers/enpassJsonImporter.ts","webpack:///./jslib/src/importers/firefoxCsvImporter.ts","webpack:///./jslib/src/importers/fsecureFskImporter.ts","webpack:///./jslib/src/importers/gnomeJsonImporter.ts","webpack:///./jslib/src/importers/kasperskyTxtImporter.ts","webpack:///./jslib/src/importers/keepass2XmlImporter.ts","webpack:///./jslib/src/importers/keepassxCsvImporter.ts","webpack:///./jslib/src/importers/keeperCsvImporter.ts","webpack:///./jslib/src/importers/lastpassCsvImporter.ts","webpack:///./jslib/src/importers/logMeOnceCsvImporter.ts","webpack:///./jslib/src/importers/meldiumCsvImporter.ts","webpack:///./jslib/src/importers/msecureCsvImporter.ts","webpack:///./jslib/src/importers/mykiCsvImporter.ts","webpack:///./jslib/src/importers/onepasswordImporters/onepassword1PifImporter.ts","webpack:///./jslib/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts","webpack:///./jslib/src/importers/onepasswordImporters/cipherImportContext.ts","webpack:///./jslib/src/models/view/view.ts","webpack:///./jslib/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts","webpack:///./jslib/src/importers/padlockCsvImporter.ts","webpack:///./jslib/src/importers/passkeepCsvImporter.ts","webpack:///./jslib/src/importers/passmanJsonImporter.ts","webpack:///./jslib/src/importers/passpackCsvImporter.ts","webpack:///./jslib/src/importers/passwordAgentCsvImporter.ts","webpack:///./jslib/src/importers/passwordBossJsonImporter.ts","webpack:///./jslib/src/importers/passwordDragonXmlImporter.ts","webpack:///./jslib/src/importers/passwordSafeXmlImporter.ts","webpack:///./jslib/src/importers/passwordWalletTxtImporter.ts","webpack:///./jslib/src/importers/rememBearCsvImporter.ts","webpack:///./jslib/src/importers/roboformCsvImporter.ts","webpack:///./jslib/src/importers/safeInCloudXmlImporter.ts","webpack:///./jslib/src/importers/saferpassCsvImport.ts","webpack:///./jslib/src/importers/secureSafeCsvImporter.ts","webpack:///./jslib/src/importers/splashIdCsvImporter.ts","webpack:///./jslib/src/importers/stickyPasswordXmlImporter.ts","webpack:///./jslib/src/importers/truekeyCsvImporter.ts","webpack:///./jslib/src/importers/upmCsvImporter.ts","webpack:///./jslib/src/importers/yotiCsvImporter.ts","webpack:///./jslib/src/importers/zohoVaultCsvImporter.ts","webpack:///./jslib/src/services/notifications.service.ts","webpack:///./jslib/src/models/response/notificationResponse.ts","webpack:///./jslib/src/services/policy.service.ts","webpack:///./jslib/src/models/domain/masterPasswordPolicyOptions.ts","webpack:///./jslib/src/services/search.service.ts","webpack:///./jslib/src/services/send.service.ts","webpack:///./jslib/src/models/request/sendRequest.ts","webpack:///./jslib/src/models/domain/send.ts","webpack:///./jslib/src/services/webCryptoFunction.service.ts","webpack:///./jslib/src/models/domain/decryptParameters.ts","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.component.html","webpack:///./jslib/src/angular/directives/blur-click.directive.ts","webpack:///./jslib/src/angular/directives/box-row.directive.ts","webpack:///./jslib/src/angular/pipes/search-ciphers.pipe.ts"],"names":["i","chunkIds","length","deferredModules","j","deferredModule","enumerable","get","getter","value","key","bind","module","Object","prototype","hasOwnProperty","call","object","property","jsonpArray","webpackJsonpCallback","I18nService","PlatformUtilsService","ApiService","UserService","i18nService","transform","id","p1","p2","p3","this","t","I18nPipe","MessagingService","el","validationService","ngOnChanges","changes","appApiAction","then","nativeElement","loading","response","e","showError","ApiActionDirective","renderer","title","ngOnInit","hasAttribute","setAttribute","A11yTitleDirective","CryptoService","CipherService","getResponseProperty","propertyName","exactName","Error","undefined","otherCasePropertyName","charAt","toUpperCase","toLowerCase","slice","BaseResponse","type","calloutStyle","icon","CalloutComponent","organizationId","logService","ConsoleLogService","newLineRegex","passwordFieldNames","usernameFieldNames","notesFieldNames","uriFieldNames","parseCsvOptions","encoding","skipEmptyLines","parseXml","data","doc","DOMParser","parseFromString","querySelector","parseCsv","header","options","parseOptions","assign","splitNewLine","join","trim","result","papa","parse","errors","forEach","row","warning","message","parseSingleRowCsv","rowData","isNullOrWhitespace","parsedRow","makeUriArray","uri","loginUri","LoginUriView","fixUri","match","u","push","indexOf","substring","nameFromUrl","url","hostname","Utils","getHostname","startsWith","replace","str","getValueOrDefault","defaultValue","split","getCardBrand","cardNum","re","RegExp","test","setCardExpiration","cipher","expiration","parts","month","year","substr","card","expMonth","expYear","moveFoldersToCollections","folderRelationships","r","collectionRelationships","collections","folders","map","f","collection","CollectionView","name","querySelectorDirectChild","parentEl","query","els","querySelectorAllDirectChild","Array","from","querySelectorAll","filter","parentNode","initLoginCipher","CipherView","favorite","notes","fields","login","LoginView","CipherType","Login","cleanupCipher","processKvp","FieldType","Text","search","field","FieldView","processFolder","folderName","folderIndex","hasFolder","addFolder","FolderView","ciphers","convertToNoteIfNeeded","username","password","uris","SecureNote","secureNote","SecureNoteView","SecureNoteType","Generic","BaseImporter","success","ImportResult","nodeURL","window","init","inited","isNode","process","release","isBrowser","isNativeScript","isMobileBrowser","isMobile","isAppleMobileBrowser","isAppleMobile","global","fromB64ToArray","Uint8Array","Buffer","binaryString","atob","bytes","charCodeAt","fromUrlB64ToArray","fromUrlB64ToB64","fromHexToArray","parseInt","fromUtf8ToArray","strUtf8","unescape","encodeURIComponent","arr","fromByteStringToArray","fromBufferToB64","buffer","toString","binary","byteLength","String","fromCharCode","btoa","fromBufferToUrlB64","fromB64toUrlB64","b64Str","fromBufferToUtf8","encodedString","apply","decodeURIComponent","escape","fromBufferToByteString","fromBufferToHex","x","urlB64Str","output","fromUrlB64ToUtf8","fromB64ToUtf8","newGuid","c","Math","random","isGuid","uriString","getUrl","getHost","host","getDomain","httpUrl","tldEndingRegex","getUrlObject","validIpAddress","urlDomain","tldjs","domain","getQueryParams","Map","pair","set","getSortFunction","prop","a","b","collator","compare","localeCompare","nameOf","target","source","ipString","win","mobile","navigator","userAgent","vendor","opera","URL","hasProtocol","anchor","document","createElement","href","PasswordGenerationService","onClick","$event","preventDefault","StopClickDirective","StateService","CollectionService","StorageService","PolicyService","condition","disableComplete","InputVerbatimDirective","FolderService","stopPropagation","StopPropDirective","AuthService","SyncService","EnvironmentService","autofocus","focus","AutofocusDirective","environmentUrlsKey","ConstantsService","disableGaKey","disableAddLoginNotificationKey","disableContextMenuItemKey","disableFaviconKey","disableBadgeCounterKey","disableAutoTotpCopyKey","enableAutoFillOnPageLoadKey","vaultTimeoutKey","vaultTimeoutActionKey","lastActiveKey","neverDomainsKey","installedVersionKey","localeKey","themeKey","collapsedGroupingsKey","autoConfirmFingerprints","dontShowCardsCurrentTab","dontShowIdentitiesCurrentTab","defaultUriMatch","pinProtectedKey","protectedPin","clearClipboardKey","eventCollectionKey","ssoCodeVerifierKey","ssoStateKey","biometricUnlockKey","biometricText","biometricAwaitingAcceptance","biometricFingerprintValidated","disableChangedPasswordNotificationKey","EventService","PasswordVerificationRequest","SearchService","buildDomainModel","dataObj","alreadyEncrypted","notEncList","objProp","CipherString","buildDataModel","notCipherStringList","encryptedString","decryptObj","viewModel","orgId","promises","self","theProp","p","Promise","resolve","mapProp","decrypt","val","all","componentFactoryResolver","messagingService","ngOnDestroy","show","parentContainer","fade","setComponentParameters","factory","resolveComponentFactory","componentRef","container","createComponent","instance","modals","jq","modal","on","onShow","emit","send","onShown","find","onClose","onClosed","clear","close","ModalComponent","AuditService","cardholderName","code","_brand","_number","_subTitle","repeat","brand","number","count","exp","formatYear","CardView","n","TokenService","CryptoFunctionService","encryptedStringOrType","iv","mac","encType","encryptionType","headerPieces","encPieces","EncryptionType","AesCbc128_HmacSha256_B64","AesCbc256_B64","AesCbc256_HmacSha256_B64","Rsa2048_OaepSha256_B64","Rsa2048_OaepSha1_B64","decryptedValue","containerService","bitwardenContainerService","cryptoService","getCryptoService","getOrgKey","decryptToUtf8","IconMap","environmentService","stateService","iconsUrl","baseUrl","imageEnabled","load","setLoginIcon","Card","Identity","hostnameUri","isWebsite","image","fallbackImage","IconComponent","BroadcasterService","VaultTimeoutService","TwoFactorProviderType","TotpService","StripeElementStyle","base","color","fontFamily","fontSize","fontSmoothing","invalid","StripeElementClasses","empty","platformUtilsService","apiService","showMethods","showOptions","method","PaymentMethodType","hideBank","hidePaypal","hideCredit","bank","routing_number","account_number","account_holder_name","account_holder_type","currency","country","paymentMethodType","btInstance","stripe","stripeElements","stripeCardNumberElement","stripeCardExpiryElement","stripeCardCvcElement","stripeScript","src","async","onload","Stripe","isDev","WebConstants","stripeTestKey","stripeLiveKey","elements","setStripeElement","btScript","PayPal","BankAccount","Credit","head","appendChild","removeChild","setTimeout","body","btStylesheet","changeMethod","braintree","dropin","create","authorization","btSandboxKey","btProductionKey","paymentOptionPriority","paypal","flow","buttonStyle","label","size","shape","createErr","console","error","createPaymentToken","reject","requestPaymentMethod","payload","nonce","catch","err","postSetupPayment","clientSecret","handleCardSetup","setupIntent","status","payment_method","createToken","token","handleStripeCardPayment","successCallback","paymentIntent","style","classes","placeholder","mount","PaymentComponent","revisionDate","sanitizer","cryptoFunctionService","charCount","textColor","fontWeight","dynamic","circle","generate","email","hash","hashBytes","chars","upperData","getFirstLetters","charObj","getCharText","stringToColor","svg","getSvg","html","outerHTML","svgHtml","text","svgTag","backgroundColor","width","height","character","textTag","textContent","AvatarComponent","obj","externalId","readOnly","hidePasswords","Collection","PolicyType","route","onCountryChanged","EventEmitter","taxInfo","taxId","line1","line2","city","state","postalCode","includeTaxId","pristine","parent","params","subscribe","getOrganizationTaxInfo","getTaxInfo","getTaxRates","taxRates","localTaxRate","rate","getTaxInfoRequest","request","OrganizationTaxInfoUpdateRequest","TaxInfoUpdateRequest","submitTaxInfo","hasChanged","putOrganizationTaxInfo","putTaxInfo","changeCountry","TaxInfoComponent","folderId","organizationUseTotp","edit","viewPassword","identity","IdentityView","attachments","passwordHistory","collectionIds","deletedDate","localData","subTitle","hasAttachments","passwordRevisionDate","middleName","address1","address2","address3","company","phone","ssn","passportNumber","licenseNumber","_firstName","_lastName","firstName","lastName","address","addressPart2","CollectionData","OrganizationUserStatusType","userId","LoginData","SecureNoteData","CardData","IdentityData","FieldData","AttachmentData","ph","PasswordHistoryData","CipherData","l","totp","hasUris","some","canLaunch","launchUri","SendType","toasterService","onAuthed","submit","masterPassword","popAsync","hashPassword","masterPasswordHash","formPromise","getTwoFactorRecover","Duo","OrganizationDuo","getTwoFactorOrganizationDuo","getTwoFactorDuo","Email","getTwoFactorEmail","U2f","getTwoFactorU2f","Authenticator","getTwoFactorAuthenticator","Yubikey","getTwoFactorYubiKey","TwoFactorVerifyComponent","ExportService","Date","Attachment","Field","Password","encKey","model","reduce","promise","attachment","decAttachment","decField","decPh","toCipherData","toISOString","toLoginData","toSecureNoteData","toCardData","toIdentityData","toFieldData","toAttachmentData","toPasswordHistoryData","Cipher","SendService","newField","showValue","lastKnownRevisionDate","LoginApi","LoginUriApi","SecureNoteApi","CardApi","IdentityApi","FieldApi","lastUsedDate","attachments2","fileName","attachmentRequest","AttachmentRequest","CipherRequest","router","activatedRoute","titleService","previousUrl","currentUrl","events","event","NavigationEnd","titleId","rawTitle","child","firstChild","snapshot","newTitle","setTitle","getPreviousUrl","setPreviousUrl","RouterService","KdfType","showText","scoreWidth","score","PasswordStrengthComponent","OrganizationUserType","items","searchText","prop1","prop2","prop3","SearchPipe","getDefaultDateFilters","d","end","getFullYear","getMonth","getDate","setDate","start","toDateTimeLocalString","formatDateFilters","filterStart","filterEnd","isNaN","getTime","getEventInfo","ev","EventOptions","appInfo","getAppInfo","deviceType","getEventMessage","appIcon","appName","msg","EventType","User_LoggedIn","User_ChangedPassword","User_Updated2fa","User_Disabled2fa","User_Recovered2fa","User_FailedLogIn","User_FailedLogIn2fa","User_ClientExportedVault","Cipher_Created","formatCipherId","Cipher_Updated","Cipher_Deleted","Cipher_SoftDeleted","Cipher_Restored","Cipher_AttachmentCreated","Cipher_AttachmentDeleted","Cipher_Shared","Cipher_ClientViewed","Cipher_ClientToggledPasswordVisible","Cipher_ClientToggledHiddenFieldVisible","Cipher_ClientToggledCardCodeVisible","Cipher_ClientCopiedHiddenField","Cipher_ClientCopiedPassword","Cipher_ClientCopiedCardCode","Cipher_ClientAutofilled","Cipher_UpdatedCollections","Collection_Created","formatCollectionId","Collection_Updated","Collection_Deleted","Group_Created","formatGroupId","Group_Updated","Group_Deleted","OrganizationUser_Invited","formatOrgUserId","OrganizationUser_Confirmed","OrganizationUser_Updated","OrganizationUser_Removed","OrganizationUser_UpdatedGroups","OrganizationUser_UnlinkedSso","Organization_Updated","Organization_PurgedVault","Policy_Updated","formatPolicyId","DeviceType","Android","iOS","UWP","ChromeExtension","FirefoxExtension","OperaExtension","EdgeExtension","VivaldiExtension","SafariExtension","WindowsDesktop","MacOsDesktop","LinuxDesktop","ChromeBrowser","FirefoxBrowser","OperaBrowser","SafariBrowser","VivaldiBrowser","EdgeBrowser","IEBrowser","UnknownBrowser","shortId","getShortId","cipherId","cipherInfo","makeAnchor","groupId","collectionId","organizationUserId","policyId","innerHTML","date","pad","getHours","getMinutes","num","norm","floor","abs","EventInfo","analytics","onUpdated","twoFactorProviderType","enabled","authed","auth","authResponse","enable","enableFunction","eventTrack","next","action","disable","showDialog","TwoFactorProviderRequest","putTwoFactorOrganizationDisable","putTwoFactorDisable","TwoFactorBaseComponent","userService","requiresPaid","hasLoaded","setCiphers","selectCipher","childComponent","cipherAddEditModalRef","organization","AddEditComponent","onSavedCipher","onDeletedCipher","onRestoredCipher","checkAccess","useTotp","canAccessPremium","accessPremium","CipherReportComponent","ViewContainerRef","CanLaunchWhitelist","_uri","_domain","_hostname","_host","_canLaunch","UriMatchType","RegularExpression","cipherService","folderService","auditService","collectionService","totpService","passwordGenerationService","eventService","policyService","showRevisionDate","hasPasswordHistory","viewingPasswordHistory","viewOnly","passwordRevisionDisplayDate","cleanUp","totpUpdateCode","getTimeInterval","totpTick","totpInterval","setInterval","toggleFavorite","launch","copy","typeI18nKey","aType","copyToClipboard","showToast","editMode","collect","generatePassword","confirmed","getOptions","premiumRequired","upgradeOrganization","viewHistory","clearInterval","getCode","totpCode","half","totpCodeFormatted","allowOwnershipAssignment","cloneMode","ownershipOptions","allowPersonal","intervalSeconds","epoch","round","mod","totpSec","totpDash","totpLow","ImportService","searchService","showAddNew","onAttachmentsClicked","onShareClicked","onCollectionsClicked","onCloneClicked","cipherType","userHasPremiumAccess","pageSize","selectAll","share","clone","delete","actionPromise","permanent","isDeleted","deleteCipher","refresh","restore","restoreWithServer","displayTotpCopyButton","select","selectCount","checkCipher","checked","getSelected","getSelectedIds","hasTotp","deleteWithServer","softDeleteWithServer","showFixOldAttachments","hasOldAttachments","CiphersComponent","TwoFactorProviders","description","priority","sort","premium","tokenService","appIdService","vaultTimeoutService","setCryptoKeys","selectedTwoFactorProviderType","logIn","makePreloginKey","hashedPassword","logInHelper","logInSso","codeVerifier","redirectUrl","logInApiKey","clientId","logInTwoFactor","twoFactorProvider","twoFactorToken","remember","ssoRedirectUrl","logInComplete","logInSsoComplete","logInApiKeyComplete","logOut","callback","getSupportedTwoFactorProviders","providers","twoFactorProvidersData","has","supportsDuo","supportsU2f","getDefaultTwoFactorProvider","u2fSupported","providerType","providerPriority","provider","kdf","kdfIterations","postPrelogin","PreloginRequest","preloginResponse","statusCode","makeKey","authingWithApiKey","authingWithSso","authingWithPassword","getTwoFactorToken","storedTwoFactorToken","getAppId","appId","deviceRequest","DeviceRequest","emailPassword","codeCodeVerifier","clientIdClientSecret","TokenRequest","Remember","postIdentityToken","clearState","AuthResult","twoFactor","accessToken","twoFactorResponse","twoFactorProviders2","twoFactorProviders","tokenResponse","resetMasterPassword","setTwoFactorToken","setTokens","refreshToken","setInformation","getUserId","getEmail","setKey","setKeyHash","setEncKey","privateKey","makeKeyPair","keyPair","postAccountKeys","KeysRequest","setEncPrivateKey","biometricLocked","SelectionReadOnlyRequest","SettingsService","PlanType","syncService","showFree","showCancel","product","ProductType","Free","plan","onSuccess","onCanceled","selfHosted","ownedBusiness","premiumAccessAddon","additionalStorage","additionalSeats","productTypes","singleOrgPolicyBlock","isSelfHost","getPlans","plans","Enterprise","Teams","selectedPlan","isAnnual","validPlans","Custom","canBeUsedByBusiness","legacyYear","disabled","additionalStoragePriceMonthly","additionalStoragePricePerGb","seatPriceMonthly","seatPrice","additionalStorageTotal","hasAdditionalStorageOption","seatTotal","hasAdditionalSeatsOption","subTotal","basePrice","hasPremiumAccessOption","premiumAccessOptionPrice","taxComponent","taxRate","subtotal","taxCharges","changedProduct","selectablePlans","baseSeats","changedOwnedBusiness","TeamsAnnually","changedCountry","paymentComponent","cancel","getAll","SingleOrg","policies","getAllOrganizations","orgs","org","Owner","Admin","Invited","includes","files","createOrganization","fileEl","getElementById","doSubmit","tokenResult","makeShareKey","shareKey","encrypt","collectionCt","fd","FormData","append","postOrganizationLicense","OrganizationCreateRequest","collectionName","billingEmail","planType","paymentToken","businessName","additionalStorageGb","billingAddressPostalCode","billingAddressCountry","taxIdNumber","billingAddressLine1","billingAddressLine2","billingAddressCity","billingAddressState","postOrganization","OrganizationUpgradeRequest","postOrganizationUpgrade","paymentIntentClientSecret","refreshIdentityToken","fullSync","navigate","OrganizationPlansComponent","macKey","keyB64","encKeyB64","macKeyB64","SymmetricCryptoKey","LoginUri","view","toLoginUriData","LoginUriData","elementRef","trueValue","falseValue","propagateChange","_","onHostChange","writeValue","setProperty","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","TrueFalseValueDirective","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","storageService","onSearchTextChanged","searchPlaceholder","searchTextChanged","GroupingsComponent","selectType","usePolicies","useGroups","useDirectory","useEvents","use2fa","useApi","useBusinessPortal","useSso","selfHost","usersGetPremium","seats","maxCollections","maxStorageGb","ssoBound","identifier","permissions","Confirmed","Manager","isAdmin","accessBusinessPortal","accessEventLogs","accessImportExport","accessReports","manageAllCollections","isManager","manageAssignedCollections","manageGroups","manageSso","managePolicies","manageUsers","Organization","sizeName","SendFileView","hidden","SendTextView","vault","loaded","organizations","unlinkSso","deleteSsoUser","leave","postLeaveOrganization","OrganizationsComponent","SelectionReadOnlyResponse","getName","lock","NavbarComponent","version","getApplicationVersion","FooterComponent","defaultErrorMessage","validationErrors","concat","getAllMessages","timeout","ValidationService","publicKey","encryptedPrivateKey","Policy","PolicyData","getMasterPasswordPolicyOptions","enforcedPolicyOptions","getPasswordScoreAlertDisplay","minComplexity","strongPassword","setupSubmitActions","getKdf","getKdfIterations","getEncKey","makeEncKey","remakeEncKey","performSubmitActions","masterPasswordRetype","strengthResult","passwordStrength","getPasswordStrengthUserInput","evaluateMasterPassword","updatePasswordStrength","masterPasswordStrengthTimeout","clearTimeout","masterPasswordScore","userInput","atPosition","ChangePasswordComponent","onEditedUsers","organizationUserType","organizationUserStatusType","showSelected","selectedCount","allUsers","loadUsers","getOrganizationUsers","users","entity","getGroupUsers","entityId","s","user","getCollectionUsers","accessAll","check","selectedChanged","filterSelected","selections","putGroupUsers","putCollectionUsers","EntityUsersComponent","showUser","orgUsersUserIdMap","orgUsersIdMap","defaultDates","loadEvents","clearExisting","refreshPromise","morePromise","dates","getEventsOrganizationUser","continuationToken","getEventsCipher","actingUserId","eventInfo","userName","userEmail","ip","ipAddress","EntityEventsComponent","manageCiphers","PermissionsApi","postKey","apiKey","keyType","ApiKeyComponent","postPurgeCiphers","PurgeVaultComponent","firstLoaded","showAdjustPayment","showAddCredit","transactionType","TransactionType","getOrganizationBilling","billing","getUserBilling","verifyBank","VerifyBankRequest","amount1","verifyAmount1","amount2","verifyAmount2","verifyBankPromise","postOrganizationVerifyBank","addCredit","paymentSourceInApp","closeAddCredit","changePayment","closePayment","balance","paymentSource","AppleInApp","GoogleInApp","invoices","transactions","UserBillingComponent","onAdded","ppButtonFormAction","buttonActionProduction","ppButtonBusinessId","businessIdProduction","ppLoading","buttonActionSandbox","businessIdSandbox","creditAmount","ppButtonCustomField","getOrganization","subject","returnUrl","location","ppButtonFormRef","BitPay","req","BitPayInvoiceRequest","credit","amount","creditAmountNumber","postBitPayInvoice","bitPayUrl","formatAmount","floatAmount","parseFloat","toFixed","AddCreditComponent","ElementRef","onAdjusted","PaymentRequest","taxInfoComponent","postAccountPayment","postOrganizationPayment","currentType","AdjustPaymentComponent","updatePromise","postAccountLicense","postOrganizationLicenseUpdate","UpdateLicenseComponent","storageGbPrice","add","interval","storageAdjustment","StorageRequest","storageGbAdjustment","postAccountStorage","postOrganizationStorage","relativeTo","AdjustStorageComponent","processResponse","UpdateTwoFactorDuoRequest","integrationKey","ikey","secretKey","skey","putTwoFactorOrganizationDuo","putTwoFactorDuo","TwoFactorDuoComponent","showPolicyWarning","filterProvider","getTwoFactorProviders","evaluatePolicies","manage","openModal","authenticatorModalRef","TwoFactorAuthenticatorComponent","updateStatus","yubikeyModalRef","TwoFactorYubiKeyComponent","duoModalRef","emailModalRef","TwoFactorEmailComponent","u2fModalRef","TwoFactorU2fComponent","recoveryCode","recoveryModalRef","TwoFactorRecoveryComponent","ref","TwoFactorAuthentication","TwoFactorSetupComponent","exportService","saved","ExportComponent","exposedPasswordMap","getAllCiphers","allCiphers","exposedPasswordCiphers","passwordLeaked","exposedCount","getAllDecrypted","canManageCipher","ExposedPasswordsReportComponent","originalCipher","canManageAllCollections","loadCollections","loadCipher","getCipherAdmin","encryptCipher","saveCipher","putCipherAdmin","CipherCreateRequest","postCipherAdmin","deleteCipherAdmin","putDeleteCipherAdmin","AttachmentView","orgKey","decryptToBytes","decValue","PasswordHistoryView","importService","format","successNavigate","setImportOptions","importOptions","importer","getImporter","fileContents","getFileContents","content","import","properties","getFormatInstructionTitle","results","featuredImportOptions","o","regularImportOptions","fire","heightAuto","buttonsStyling","iconHtml","input","inputValue","inputAttributes","showConfirmButton","confirmButtonText","onOpen","popupEl","scrollTo","file","reader","FileReader","readAsText","evt","pre","onerror","ImportComponent","services","cipherDocs","load2fa","fetch","Request","json","categoryName","responseJson","serviceName","category","service","InactiveTwoFactorReportComponent","ciphersWithPasswords","passwordUseMap","reusedPasswordCiphers","ReusedPasswordsReportComponent","unsecuredCiphers","UnsecuredWebsitesReportComponent","passwordStrengthMap","passwordStrengthCache","weakPasswordCiphers","hasUsername","cacheKey","scoreKey","WeakPasswordsReportComponent","reupload","reuploadCipherAttachment","AttachmentsComponent","onEventsClicked","accessEvents","deleted","getAllFromApiForOrganization","applyFilter","searchPending","filteredCiphers","searchCiphersBasic","resetPaging","CollectionsComponent","getCollections","collectionDomains","decryptMany","unassignedCollection","getAllNested","nestedCollections","collapse","grouping","isCollapsed","bulkDelete","selectedIds","ciphersComponent","bulkDeleteModalRef","BulkDeleteComponent","cipherIds","onDeleted","bulkRestore","bulkRestoreModalRef","BulkRestoreComponent","onRestored","bulkShare","selectedCiphers","bulkShareModalRef","BulkShareComponent","onShared","bulkMove","bulkMoveModalRef","BulkMoveComponent","onMoved","BulkActionsComponent","SendFile","SendText","identityResponse","errorModel","responseErrorModel","getSingleMessage","messages","item","prefix","lastSep","lastIndexOf","ErrorResponse","CipherWithIdRequest","folder","FolderRequest","onCopy","copyText","selection","getSelection","rangeCount","getRangeAt","stringEndPos","newLinePos","SelectCopyDirective","colorizedPassword","isSpecial","ColorPasswordPipe","FolderData","Folder","AttachmentResponse","h","PasswordHistoryResponse","CipherResponse","emailVerified","masterPasswordHint","culture","twoFactorEnabled","securityStamp","ProfileOrganizationResponse","ProfileResponse","SendFileApi","SendTextApi","NotificationsService","webpackEmptyAsyncContext","keys","exports","classList","remove","FrontendLayoutComponent","broadcasterService","ngZone","businessUrl","enterpriseUrl","run","command","unsubscribe","goToBusinessPortal","businessTokenPromise","getEnterprisePortalSignInToken","showManageTab","showToolsTab","isOwner","canManageUsers","canManageAssignedCollections","canManageGroups","canManagePolicies","canAccessEventLogs","canAccessImportExport","canAccessReports","canAccessBusinessPortal","OrganizationLayoutComponent","UserLayoutComponent","fired","queryParams","qParams","errorMessage","isAuthenticated","EmergencyAccessAcceptRequest","postEmergencyAccessAccept","toast","save","AcceptEmergencyComponent","OrganizationUserAcceptRequest","postOrganizationUserAccept","orgName","organizationName","AcceptOrganizationComponent","HintComponent","routerService","hasKey","onSuccessfulSubmit","successRoute","LockComponent","togglePassword","authService","onSuccessfulLoginNavigate","goAfterLogIn","queryParamsSub","orgInvite","emergencyInvite","loginRedirect","LoginComponent","DeleteRecoverRequest","postAccountRecoverDelete","RecoverDeleteComponent","TwoFactorRecoveryRequest","postTwoFactorRecover","RecoverTwoFactorComponent","showCreateOrgMessage","layout","referenceData","ReferenceEventRequest","reference","cookie","pop","shift","invite","getPoliciesByToken","policiesData","RegisterComponent","SetPasswordComponent","redirectUri","origin","storedIdentifier","SsoComponent","loggingIn","twoFactorRoute","changePasswordRoute","checkState","getOrgIdentiferFromState","codeChallenge","returnUri","includeUserIdentifier","initiateSsoFormPromise","preValidate","buildAuthorizeUrl","authorizeUrl","sameWindow","preValidateSso","passwordOptions","uppercase","lowercase","numbers","special","codeVerifierHash","identityBaseUrl","getSsoUserIdentifier","userIdentifier","orgIdFromState","onSuccessfulLoginTwoFactorNavigate","sso","onSuccessfulLoginChangePasswordNavigate","disableFavicon","onSuccessfulLogin","stateSplit","checkStateSplit","anotherMethod","twoFactorOptionsModal","TwoFactorOptionsComponent","onProviderSelected","selectedProviderType","onRecoverSelected","TwoFactorComponent","recover","TwoFactorEmailRequest","postAccountVerifyEmailToken","VerifyEmailRequest","VerifyEmailTokenComponent","VerifyDeleteRecoverRequest","postAccountRecoverDeleteToken","VerifyRecoverDeleteComponent","didScroll","pagedCollectionsCount","getUserCollections","loadMore","pagedLength","pagedCollections","pagedSize","addEditModalRef","CollectionAddEditComponent","onSavedCollection","onDeletedCollection","removeCollection","deleteCollection","usersModalRef","entityName","isSearching","isSearchable","isPaging","searching","index","splice","accessGroups","groups","getGroups","groupsResponse","getCollectionDetails","group","g","CollectionRequest","putCollection","postCollection","deletePromise","getEventsOrganization","EventsComponent","pagedGroupsCount","pagedGroups","GroupAddEditComponent","onSavedGroup","onDeletedGroup","removeGroup","deleteGroup","GroupsComponent","access","getGroupDetails","GroupRequest","putGroup","postGroup","accessPolicies","ManageComponent","statusMap","pagedUsersCount","viewEvents","pagedUsers","Accepted","confirmedCount","acceptedCount","UserAddEditComponent","onSavedUser","onDeletedUser","removeUser","groupsModalRef","UserGroupsComponent","deleteOrganizationUser","reinvite","postOrganizationUserReinvite","confirm","updateUser","mapIndex","autoConfirm","doConfirmation","confirmModalRef","UserConfirmComponent","onConfirmedUser","eventsModalRef","getUserPublicKey","publicKeyResponse","log","getFingerprint","rsaEncrypt","OrganizationUserConfirmRequest","postOrganizationUserConfirm","PeopleComponent","User","showCustom","getOrganizationUser","setRequestPermissions","clearPermissions","OrganizationUserUpdateRequest","putOrganizationUser","OrganizationUserInviteRequest","emails","postOrganizationUserInvite","dontAskAgain","fingerprint","getOrganizationUserGroups","userGroups","ug","OrganizationUserUpdateGroupsRequest","groupIds","putOrganizationUserGroups","userCanAccessBusinessPortal","policiesEnabledMap","display","MasterPassword","PasswordGenerator","RequireSso","PersonalOwnership","DisableSend","policyIdFromEvents","orgPolicies","orgPolicy","getPolicies","op","editModalRef","PolicyEditComponent","onSavedPolicy","goToEnterprisePortal","enterpriseTokenPromise","PoliciesComponent","AppIdService","LogService","policyType","masterPassMinComplexity","passwordScores","defaultTypes","getPolicy","policy","passGenDefaultType","defaultType","passGenMinLength","minLength","passGenUseUpper","useUpper","passGenUseLower","useLower","passGenUseNumbers","useNumbers","passGenUseSpecial","useSpecial","passGenMinNumbers","minNumbers","passGenMinSpecial","minSpecial","passGenMinNumberWords","minNumberWords","passGenCapitalize","capitalize","passGenIncludeNumber","includeNumber","masterPassMinLength","masterPassRequireUpper","requireUpper","masterPassRequireLower","requireLower","masterPassRequireNumbers","requireNumbers","masterPassRequireSpecial","requireSpecial","PolicyRequest","putPolicy","canUseApi","OrganizationUpdateRequest","putOrganization","taxFormPromise","deleteOrganization","deleteModalRef","DeleteOrganizationComponent","purgeVault","purgeModalRef","viewApiKey","apiKeyModalRef","postOrganizationApiKey","scope","grantType","apiKeyTitle","apiKeyWarning","apiKeyDescription","rotateApiKey","rotateApiKeyModalRef","isRotation","postOrganizationRotateApiKey","AccountComponent","OrganizationBillingComponent","adjustSeatsAdd","showAdjustSeats","adjustStorageAdd","showAdjustStorage","showUpdateLicense","showDownloadLicense","showChangePlan","getOrganizationSubscription","sub","reinstate","reinstatePromise","postOrganizationReinstate","cancelPromise","postOrganizationCancel","changePlan","subscription","closeChangePlan","changed","downloadLicense","closeDownloadLicense","updateLicense","closeUpdateLicense","updated","adjustSeats","closeSeats","adjustStorage","closeStorage","cancelled","cancelAtEndDate","upcomingInvoice","storageGb","storagePercentage","OrganizationSubscriptionComponent","onChanged","defaultUpgradePlan","FamiliesAnnually","defaultUpgradeProduct","Families","ChangePlanComponent","onDownloaded","installationId","getOrganizationLicense","license","licenseString","JSON","stringify","saveFile","DownloadLicenseComponent","seatAdjustment","SeatRequest","postOrganizationSeat","AdjustSeatsComponent","access2fa","SettingsComponent","duoComp","getTwoFactorOrganizationProviders","qrScript","UpdateTwoFactorAuthenticatorRequest","putTwoFactorAuthenticator","QRious","element","sendEmail","emailPromise","postTwoFactorEmailSetup","sentEmail","UpdateTwoFactorEmailRequest","putTwoFactorEmail","print","w","open","write","onafterprint","formatString","keyIdAvailable","keysConfiguredCount","u2fScript","u2fResponse","UpdateTwoFactorU2fRequest","deviceResponse","putTwoFactorU2f","removePromise","UpdateTwoFactorU2fDeleteRequest","deleteTwoFactorU2f","readKey","challengePromise","getTwoFactorU2fChallenge","challenge","readDevice","u2fChallenge","resetU2f","u2f","register","attestation","u2fListening","errorCode","u2fError","listening","k","configured","compromised","nfc","UpdateTwoFactorYubioOtpRequest","key1","key2","key3","key4","key5","putTwoFactorYubiKey","disablePromise","existingKey","padRight","max","getExportData","getOrganizationExport","getFileName","collectEvent","manageableCiphers","onError","appFallbackSrc","FallbackSrcDirective","ToolsComponent","changeDetectorRef","groupingsComponent","successfully","detectChanges","selectedAll","reload","selectedTrash","filterDeleted","selectedType","filterCipherType","selectedCollectionId","filterCollection","clearGroupingFilters","clearFilters","go","filterSearchText","editCipherAttachments","attachmentsModalRef","madeAttachmentChanges","onUploadedAttachment","onDeletedAttachment","editCipherCollections","collectionsModalRef","onSavedCollections","addCipher","component","editCipher","cloneCipher","replaceUrl","VaultComponent","saveCipherAttachment","saveAttachmentWithServer","cipherDomain","deleteCipherAttachment","attachmentId","deleteCipherAttachmentAdmin","onReuploadedAttachment","deletePromises","reuploadPromises","hasUpdatedKey","download","downloading","canAccessAttachments","cache","arrayBuffer","buf","decryptFromBytes","decBuf","hasEncKey","admin","saveAttachmentRawWithServer","foundAttachment","a2","deleteAttachmentWithServer","Window","allowSelectNone","loadCipherCollections","saveCollections","CipherCollectionsRequest","putCipherCollectionsAdmin","deleteCiphers","deleteCiphersAdmin","deleteManyWithServer","softDeleteManyWithServer","deleteRequest","CipherBulkDeleteRequest","deleteManyCiphersAdmin","putDeleteManyCiphersAdmin","ids","moveManyWithServer","restoreManyWithServer","nonShareableCount","shareableCiphers","writeableCollections","allCollections","filterCollections","checkedCollectionIds","shareManyWithServer","sendType","passwordRequired","unavailable","maskedText","expirationDate","creatorIdentifier","sendId","decKey","getSendFileDownloadData","accessRequest","downloadData","toggleText","keyArray","SendAccessRequest","pbkdf2","passwordHash","sendResponse","postSendAccess","sendAccess","SendAccess","makeSendKey","AccessComponent","sendService","addSend","disableSend","editSend","sendAddEditModalRef","onSavedSend","onDeletedSend","SendComponent","datePipe","copyLinkToClipboard","link","accessId","maxAccessCount","accessCount","deletionDate","SendView","deauthorizeSessions","deauthModalRef","DeauthorizeSessionsComponent","deleteAccount","DeleteAccountComponent","viewUserApiKey","viewUserApiKeyModalRef","postUserApiKey","rotateUserApiKey","rotateUserApiKeyModalRef","postUserRotateApiKey","postSecurityStamp","getProfile","profile","UpdateProfileRequest","putProfile","ProfileComponent","tokenSent","newEmail","EmailTokenRequest","postEmailToken","EmailRequest","newKey","newMasterPasswordHash","newEncKey","postEmail","reset","ChangeEmailComponent","rotateEncKey","rotateEncKeyClicked","currentMasterPassword","PasswordRequest","postPassword","updateKey","getPrivateKey","encPrivateKey","UpdateKeyRequest","FolderWithIdRequest","postAccountKey","updateEmergencyAccesses","getEmergencyAccessTrusted","emergencyAccess","allowedStatuses","EmergencyAccessStatusType","RecoveryInitiated","RecoveryApproved","filteredAccesses","details","granteeId","encryptedKey","updateRequest","EmergencyAccessUpdateRequest","waitTimeDays","keyEncrypted","putEmergencyAccess","PBKDF2_SHA256","kdfOptions","KdfRequest","postAccountKdf","ChangeKdfComponent","orgPlansComponent","EnterpriseAnnually","CreateOrganizationComponent","custom","getSettingsDomains","equivalentDomains","globalEquivalentDomains","domains","excluded","toggleExcluded","globalDomain","customize","UpdateDomainsRequest","excludedGlobalEquivalentDomains","d2","putSettingsDomains","indexTrackBy","DomainRulesComponent","vaultTimeout","vaultTimeoutAction","vaultTimeouts","localeOptions","supportedTranslationLocales","locale","localeNames","disableIcons","enableGravatars","enableFullWidth","startingLocale","setVaultTimeoutOptions","vaultTimeoutActionChanged","newValue","OptionsComponent","ngAfterContentInit","LinkSsoComponent","premiumPrice","getPremium","getEmailVerified","finalizePremium","postPremium","paymentResponse","PremiumComponent","getUserSubscription","usingInAppPurchase","postReinstatePremium","postCancelPremium","UserSubscriptionComponent","breachedAccounts","checkedUsername","BreachReportComponent","history","historyModalRef","PasswordGeneratorHistoryComponent","lengthChanged","minNumberChanged","minSpecialChanged","PasswordGeneratorComponent","saveOptions","regenerate","favorites","showVerifyEmail","showBrowserOutdated","showUpdateKey","showPremiumCallout","organizationsComponent","selectedFavorites","filterFavorites","selectedFolder","selectedFolderId","filterFolder","shareCipher","shareModalRef","ShareComponent","onSharedCipher","folderAddEditModalRef","FolderAddEditComponent","onSavedFolder","loadFolders","editFolder","onDeletedFolder","updateKeyModalRef","UpdateKeyComponent","makeRequest","getKey","SendInfoComponent","postAccountVerifyEmail","VerifyEmailComponent","canActivate","OrganizationGuardService","Permissions","AccessBusinessPortal","AccessEventLogs","AccessImportExport","AccessReports","ManageAllCollections","ManageAssignedCollections","ManageGroups","ManageOrganization","ManagePolicies","ManageUsers","OrganizationTypeGuardService","isLocked","UnauthGuardService","routerState","promptBiometric","AuthGuardService","EmergencyAddEditComponent","postEmergencyAccessView","viewAttachments","EmergencyAccessAttachmentsComponent","decCiphers","rsaDecrypt","oldKeyBuffer","oldEncKey","cipherResponse","cipherData","getLocaleSortingFunction","EmergencyAccessViewComponent","EncryptedObject","EnvironmentUrls","GeneratedPasswordHistory","emergencyAccessType","EmergencyAccessType","emergencyAccessStatusType","isOrganizationOwner","trustedContacts","getEmergencyAccessGranted","grantedContacts","EmergencyAccessAddEditComponent","emergencyAccessId","onSaved","contact","postEmergencyAccessReinvite","EmergencyAccessConfirmComponent","onConfirmed","deleteEmergencyAccess","EmergencyAccessGranteeDetailsResponse","removeGrantee","removeGrantor","requestAccess","postEmergencyAccessInitiate","approve","View","postEmergencyAccessApprove","postEmergencyAccessReject","takeover","EmergencyAccessTakeoverComponent","takeoverModalRef","onDone","EmergencyAccessConfirmRequest","postEmergencyAccessConfirm","EmergencyAccessComponent","creationDate","grantorId","EmergencyAccessGrantorDetailsResponse","EmergencyAccessTakeoverResponse","EmergencyAccessViewResponse","waitTimes","getEmergencyAccess","waitTime","EmergencyAccessInviteRequest","postEmergencyAccessInvite","getEmergencyGrantorPolicies","policyResponse","postEmergencyAccessTakeover","takeoverResponse","EmergencyAccessPasswordRequest","postEmergencyAccessPassword","logoutCallback","customUserAgent","urlsSet","isWebClient","isDesktopClient","usingBaseUrl","device","getDevice","setUrls","urls","apiBaseUrl","eventsBaseUrl","api","headers","Headers","qsStringify","toIdentityToken","identityClientId","credentials","getCredentials","isJsonResponse","IdentityTokenResponse","TwoFactorProviders2","clearTwoFactorToken","IdentityTwoFactorResponse","doRefreshToken","BillingResponse","SubscriptionResponse","TaxInfoResponse","PreloginResponse","setPassword","getAccountRevisionDate","postPasswordHint","postRegister","PaymentResponse","postIapCheck","postAccountVerifyPassword","ApiKeyResponse","getFolder","FolderResponse","postFolder","putFolder","deleteFolder","getSend","SendResponse","apiUrl","SendAccessResponse","SendFileDownloadDataResponse","getSends","ListResponse","postSend","postSendFile","putSend","putSendRemovePassword","deleteSend","getCipher","getCiphersOrganization","postCipher","postCipherCreate","putCipher","deleteManyCiphers","putMoveCiphers","putShareCipher","putShareCiphers","putCipherCollections","path","postImportCiphers","postImportOrganizationCiphers","putDeleteCipher","putDeleteManyCiphers","putRestoreCipher","putRestoreCipherAdmin","putRestoreManyCiphers","postCipherAttachment","postCipherAttachmentAdmin","postShareCipherAttachment","CollectionGroupDetailsResponse","CollectionResponse","dr","deleteCollectionUser","GroupDetailsResponse","GroupResponse","deleteGroupUser","PolicyResponse","OrganizationUserDetailsResponse","OrganizationUserUserDetailsResponse","PlanResponse","postImportDirectory","TaxRateResponse","DomainsResponse","getSync","SyncResponse","TwoFactorProviderResponse","TwoFactorAuthenticatorResponse","TwoFactorEmailResponse","TwoFactorDuoResponse","TwoFactorYubiKeyResponse","TwoFactorU2fResponse","ChallengeResponse","TwoFactorRecoverResponse","postTwoFactorEmail","OrganizationResponse","OrganizationSubscriptionResponse","getEvents","addEventParameters","EventResponse","postEventsCollect","getActiveBearerToken","authHeader","UserKeyResponse","getHibpBreach","BreachAccountResponse","getToken","tokenNeedsRefresh","nativeFetch","handleError","hasResponse","requestInit","tokenError","isTextResponse","Message","getRefreshToken","decodedToken","decodeToken","grant_type","client_id","refresh_token","typeHeader","CollectionDetailsResponse","GlobalDomainResponse","businessAddress1","businessAddress2","businessAddress3","businessCountry","businessTaxNumber","nameLocalizationKey","descriptionLocalizationKey","baseStorageGb","maxUsers","maxAdditionalSeats","maxAdditionalStorage","trialPeriodDays","hasSelfHost","hasPolicies","hasGroups","hasDirectory","hasEvents","has2fa","hasApi","hasSso","upgradeSortOrder","displaySortOrder","stripePlanId","stripeSeatPlanId","stripeStoragePlanId","stripePremiumAccessPlanId","storageName","BillingSubscriptionResponse","BillingSubscriptionUpcomingInvoiceResponse","trialEndDate","periodStartDate","periodEndDate","cancelledDate","BillingSubscriptionItemResponse","quantity","makeAndGetAppId","getAnonymousAppId","existingId","guid","hashStart","hashEnding","leakedHashes","v","throttle","Keys","DomainMatchBlacklist","Set","settingsService","sortedCiphersCache","SortedCiphersCache","sortCiphersByLastUsed","_decryptedCipherCache","clearIndex","indexCiphers","clearCache","decryptedCipherCache","existingCipher","hasFields","existingHiddenFields","Hidden","ef","matchedField","encryptObjProperty","encryptCipherData","encryptFields","encryptPasswordHistories","encryptAttachments","attachmentsModel","encAttachments","fieldsModel","encFields","encryptField","encField","fieldModel","Boolean","phModels","encPhs","encryptPasswordHistory","encPh","phModel","getAllDecryptedForGrouping","groupingId","getAllDecryptedForUrl","includeOtherTypes","defaultMatch","eqDomainsPromise","getEquivalentDomains","eqDomains","matches","eqDomain","matchingDomains","Domain","domainUrlHost","Host","urlHost","Exact","StartsWith","Never","getLastUsedForUrl","getCipherForUrl","getLastLaunchedForUrl","getNextCipherForUrl","updateLastUsedIndexForUrl","updateLastUsedIndex","updateLastUsedDate","ciphersLocalData","cached","updateLastLaunchedDate","lastLaunched","saveNeverDomain","saveWithServer","upsert","shareWithServer","attachmentPromises","shareAttachmentWithServer","encCipher","CipherShareRequest","encCiphers","CipherBulkShareRequest","unencryptedFile","readAsArrayBuffer","cData","filename","encFileName","dataEncKey","encryptToBytes","encData","blob","Blob","filepath","contentType","saveCollectionsWithServer","CipherBulkMoveRequest","deleteAttachment","aLastUsed","bLastUsed","bothNotNull","sortCiphersByLastUsedThenName","aName","bName","softDelete","setDeletedDate","clearDeletedDate","constructor","CipherBulkRestoreRequest","restores","attachmentView","attachmentResponse","theObj","modelProp","lastUsed","isCached","addCiphers","getLastLaunched","getLastUsed","getNext","sequentialize","propertyKey","descriptor","originalMethod","caches","getCache","argsCacheKey","args","onFinally","decryptedCollectionCache","decCollections","nodes","collectionCopy","ServiceUtils","nestedTraverse","getNested","getTreeNodeObject","nodeTree","partIndex","delimiter","partName","node","TreeNode","children","newPartName","attachToWindow","attachToGlobal","ContainerService","secureStorageService","platformUtilService","option","biometric","supportsSecureStorage","keyHash","setOrgKeys","orgKeys","getKeyHash","encKeyCipher","decEncKey","stretchKey","getPublicKey","rsaExtractPublicKey","keyFingerprint","hkdfExpand","userFingerprint","hashPhrase","getOrgKeys","encOrgKeys","clearKey","legacyEtmKey","clearKeyHash","clearEncKey","memoryOnly","clearKeyPair","clearOrgKeys","clearPinProtectedKey","clearKeys","toggleKey","salt","makeKeyFromPin","pin","protectedKeyCs","makePinKey","pinKey","randomBytes","rsaGenerateKeyPair","publicB64","privateEnc","keyMaterial","hkdf","sendKey","getKeyForEncryption","theKey","buildEncKey","plainValue","plainBuf","aesEncrypt","encObj","encValue","macLen","encBytes","Rsa2048_OaepSha256_HmacSha256_B64","Rsa2048_OaepSha1_HmacSha256_B64","alg","cipherString","aesDecryptToBytes","decipher","aesDecryptToUtf8","encBuf","ctBytes","ivBytes","macBytes","randomNumber","min","rval","range","bitsNeeded","ceil","log2","bytesNeeded","mask","pow","byteArray","macData","hmac","keyForEnc","resolveLegacyKey","fastParams","aesDecryptFastParameters","hmacFast","computedMac","compareFast","aesDecryptFast","aesDecrypt","minimumEntropy","entropyPerWord","EEFLongWordList","numWords","hashArr","entropyAvailable","phrase","hashNumber","bigInt","fromArray","remainder","divide","encKeyEnc","notificationsService","getWebVaultUrl","webVaultUrl","setUrlsFromStorage","urlsObj","icons","notifications","webVault","enterprise","envUrls","identityUrl","notificationsUrl","eventsUrl","formatUrl","decryptedFolderCache","decFolders","noneFolder","folderCopy","cId","updates","systemLanguage","localesDirectory","getLocalesJson","defaultMessages","localeMessages","translationLocale","Intl","Collator","numeric","sensitivity","loadMessages","translate","messagesObj","formattedLocale","locales","placeholders","placeProp","replaceToken","replaceContent","DefaultOptions","ambiguous","minNumber","minUppercase","minLowercase","wordSeparator","generatePassphrase","sanitizePasswordLength","positions","shuffleArray","allCharSet","lowercaseCharSet","uppercaseCharSet","numberCharSet","specialCharSet","positionChars","randomCharIndex","listLength","wordList","wordIndex","appendRandomNumberToRandomWord","optionsCache","enforcePasswordGeneratorPoliciesOnOptions","enforcedOptions","getPasswordGeneratorPolicyOptions","useUppercase","useLowercase","numberCount","specialCount","PasswordGeneratorPolicyOptions","currentPolicy","getHistory","encrypted","decryptHistory","addHistory","currentHistory","matchesPrevious","unshift","now","encryptHistory","newHistory","userInputs","globalUserInputs","finalUserInputs","zxcvbn","normalizeOptions","decrypted","array","forGeneration","minUppercaseCalc","minLowercaseCalc","minNumberCalc","minSpecialCalc","settingsCache","getSettingsKey","setEquivalentDomains","setSettingsKey","getSettings","settings","purge","syncInProgress","getLastSync","lastSync","setLastSync","toJSON","forceSync","allowThrowOnError","syncStarted","syncCompleted","needsSync","needsSyncing","syncProfile","syncFolders","syncCollections","syncCiphers","syncSends","sends","syncSettings","syncPolicies","syncUpsertFolder","notification","isEdit","localFolder","remoteFolder","syncDeleteFolder","syncUpsertCipher","shouldUpdate","localCipher","checkCollections","remoteCipher","syncDeleteCipher","syncUpsertSend","localSend","remoteSend","SendData","syncDeleteSend","getSecurityStamp","stamp","setSecurityStamp","OrganizationData","replaceOrganizations","SendTextData","File","SendFileData","setToken","setRefreshToken","skipTokenStorage","toggleTokens","clearToken","decoded","getTokenExpirationDate","setUTCSeconds","tokenSecondsRemaining","offsetSeconds","msRemaining","valueOf","minutes","email_verified","getIssuer","iss","B32Chars","SteamChars","period","digits","keyB32","isOtpAuth","isSteamAuth","digitParams","periodParam","algParam","timeHex","leftPad","decToHex","timeBytes","keyBytes","b32ToBytes","sign","offset","otp","fullCode","trunc","isAutoCopyEnabled","b32ToHex","cleanedInput","bits","hex","byteIndex","chunk","signature","clearOrganizations","lockedCallback","loggedOutCallback","checkOnInterval","startCheck","checkVaultTimeout","isBiometricLockSet","isViewOpen","lockTimeout","lastActive","vaultTimeoutSeconds","allowSoftLock","isPinLockSet","timersMap","debug","LogLevelType","Debug","info","Info","Warning","level","warn","time","hrtime","timeEnd","elapsed","build","CipherWithIds","CollectionWithId","FolderWithId","IgnoredProperties","loginPropertyParsers","setLoginUsername","setLoginPassword","setLoginUris","creditCardPropertyParsers","setCreditCardNumber","setCreditCardVerification","setCreditCardCardholderName","setCreditCardExpiry","identityPropertyParsers","setIdentityFirstName","setIdentityInitial","setIdentityLastName","setIdentityUserName","setIdentityEmail","setIdentityPhone","setIdentityCompany","quoteChar","escapeChar","getProp","setNotes","setCipherType","altUsername","context","CipherImportContext","setKnownLoginValue","setKnownCreditCardValue","setKnownIdentityValue","setUnknownValue","entries","agg","entry","getPropByRegexp","regexp","matchingKeys","getPropIncluding","includesMap","importRecord","func","lowerProperty","readableDate","toUTCString","OnePasswordCsvImporter","NotificationType","enableProdMode","platformBrowser","bootstrapModule","preserveWhitespaces","registerLocaleData","AppModule","AppComponent","DatePipe","BrowserModule","BrowserAnimationsModule","FormsModule","AppRoutingModule","ServicesModule","Angulartics2Module","forRoot","pageTracking","clearQueryParams","ToasterModule","InfiniteScrollModule","DragDropModule","BlurClickDirective","BoxRowDirective","SearchCiphersPipe","routes","pathMatch","redirectTo","RouterModule","useHash","paramsInheritanceStrategy","subscribers","messageCallback","PasswordHintRequest","showPassword","pinLock","webVaultHostname","invalidPinAttempts","pinSet","supportsBiometric","biometricLock","vaultUrl","failed","decPin","setKeyAndContinue","passwordValid","storedKeyHash","unlockBiometric","authenticateBiometric","doContinue","rememberEmail","launchSsoBrowser","ssoRedirectUri","ssoCodeVerifier","webUrl","confirmMasterPassword","hint","showTerms","acceptPolicies","crypto","subtle","useLowerKdf","isIE","RegisterRequest","confirmField","syncLoading","SetPasswordRequest","orgIdentifier","onSuccessfulChangePassword","choose","backdrop","className","addEventListener","u2fReady","initU2f","twoFactorEmail","loginRoute","authing","needsLock","customWebVaultUrl","cleanupU2f","providerData","Challenge","challenges","Challenges","keyHandle","DuoWebSDK","iframe","sig_request","Signature","submit_callback","sig","stop","doToast","cleanup","getDeviceString","pushToken","codes","client_secret","code_verifier","redirect_uri","deviceIdentifier","deviceName","twoFactorRemember","errorCallback","infoCallback","parseFunction","parseMessage","connectorLink","base64Encode","sendMessage","contentWindow","postMessage","removeEventListener","validMessage","warningDialog","downloadFile","encryptedFormat","getExport","extension","csv","onCancelled","onEditAttachments","onShareCipher","onEditCollections","onGeneratePassword","showCardCode","fieldType","addFieldType","currentDate","typeOptions","cardBrandOptions","cardExpMonthOptions","identityTitleOptions","addFieldTypeOptions","uriMatchOptions","myEmail","addEditCipherInfo","organizationChanged","previousCipherId","addUri","removeUri","addField","removeField","trackByFunction","editCollections","restorePromise","restoreCipher","toggleCardCode","toggleFieldValue","toggleUriOptions","loginUriMatchChanged","drop","moveItemInArray","previousIndex","currentIndex","checkPassword","checkPasswordPromise","activeCipherId","onCipherClicked","onCipherRightClicked","onAddCipher","onAddCipherOptions","pagedCiphers","searchTimeout","pagedCiphersCount","refreshing","deletedFilter","searchCiphers","rightClickCipher","addCipherOptions","selectedCollectionIds","showFolders","showCollections","showFavorites","showTrash","onAllClicked","onFavoritesClicked","onTrashClicked","onCipherTypeClicked","onFolderClicked","onAddFolder","onEditFolder","onCollectionClicked","setLoaded","collapsedGroupings","nestedFolders","clearSelections","selectFavorites","selectTrash","selectFolder","selectCollection","idPrefix","SendAccessView","expired","filteredSends","hasSearched","onSuccessfulLoad","applyTextSearch","removePassword","removePasswordWithServer","onSuccessfulRemovePassword","onSuccessfulDelete","sendLinkBaseUrl","urlB64Key","searchSends","DateField","copyLink","deletionDateSelect","expirationDateSelect","premiumRequiredAlertShown","deletionDateOptions","expirationDateOptions","isSafari","isFirefox","nullOrWhiteSpaceCount","expirationDateFallback","expirationTimeFallback","formatDateFallbacks","deletionDateFallback","deletionTimeFallback","loadSend","hasPassword","isDateTimeLocalSupported","dateToString","deletionDateParts","dateToSplitString","safariDeletionTime","expirationDateParts","safariExpirationTime","safariDeletionTimeOptions","safariTimeOptions","DeletionDate","safariExpirationTimeOptions","ExpriationDate","deletionDateTimeFallback","expirationDateTimeFallback","setHours","encryptSend","encSend","clearExpiration","typeChanged","toggleOptions","expirationDateFallbackChanged","sendData","dateString","togglePasswordVisible","strarray","noon","midnight","ams","pms","m","hour","midnightOption","standard","military","noonOption","amOption","pmOption","validTimes","previousValue","showSelect","onSelected","avoidAmbiguous","optionsResponse","sliderChanged","sliderInput","copyOptions","cipherView","language","BroadcasterMessagingService","WebPlatformUtilsService","HtmlStorageService","MemoryStorageService","WebCryptoFunctionService","consoleLogService","eventLoggingService","Analytics","initFactory","htmlEl","documentElement","theme","useValue","APP_INITIALIZER","useFactory","deps","LOCALE_ID","subscriber","arg","localStorageKeys","localStorageStartsWithKeys","memoryStorageStartsWithKeys","memoryStorage","isLocalStorage","localStorage","getItem","isMemoryStorage","sessionStorage","setItem","removeItem","swKey","BillingSourceResponse","BillingTransactionResponse","BillingInvoiceResponse","cardBrand","needsVerification","pdfUrl","paid","createdDate","refunded","partiallyRefunded","refundedAmount","addedDate","breachDate","dataClasses","isActive","isVerified","logoPath","modifiedDate","pwnCount","access_token","expiresIn","expires_in","tokenType","token_type","OrganizationUserResponse","userProfile","taxIdType","KeyResponse","limit","throttleKey","allThrottles","getThrottles","throttles","argsThrottleKey","queue","exec","comparator","sortedCiphersByUrl","timeouts","Ciphers","resetTimer","lastUsedIndex","y","getNextIndex","inEffect","filePath","store","browserCache","chrome","isChrome","isEdge","isOpera","isVivaldi","isMacAppStore","analyticsId","rel","click","blobData","blobOptions","fileNameLower","doDownload","endsWith","msSaveOrOpenBlob","msSaveBlob","createObjectURL","position","confirmText","cancelText","bodyIsHtml","iconClasses","iconHtmlStr","showCancelButton","cancelButtonText","clipboardData","setData","queryCommandSupported","textarea","copyEl","contains","execCommand","readFromClipboard","getDefaultSystemTheme","onDefaultSystemThemeChange","AnalyticsIds","gaFilter","dependencyResolver","gaTrackingId","defaultDisabled","appVersion","GoogleAnalyticsObject","param1","param2","ga","gaAnonAppId","gaTrackPageView","hitType","page","gaTrackEvent","XMLHttpRequest","eventCategory","eventAction","eventLabel","eventValue","cleanPagePath","pagePath","paramIndex","pathParts","newPathParts","uploadEvents","eventType","uploadImmediately","orgIds","eventCollection","EventData","EventRequest","clearEvents","getEncryptedExport","getDecryptedExport","getOrganizationEncryptedExport","getOrganizationDecryptedExport","padNumber","getSeconds","buildCommonCipher","unparse","jsonDoc","collectionPromises","decCol","cipherPromises","decCipher","padCharacter","numString","login_uri","login_username","login_password","login_totp","template","toView","toDomain","getImportOptions","importResult","halfway","last","badData","postImport","errorResponse","handleServerError","getImporterInstance","BitwardenCsvImporter","BitwardenJsonImporter","LastPassCsvImporter","KeePassXCsvImporter","AviraCsvImporter","BlurCsvImporter","SafeInCloudXmlImporter","PadlockCsvImporter","KeePass2XmlImporter","ChromeCsvImporter","FirefoxCsvImporter","UpmCsvImporter","SaferPassCsvImporter","MeldiumCsvImporter","OnePassword1PifImporter","OnePasswordWinCsvImporter","OnePasswordMacCsvImporter","KeeperCsvImporter","PasswordDragonXmlImporter","EnpassCsvImporter","EnpassJsonImporter","PasswordSafeXmlImporter","DashlaneJsonImporter","MSecureCsvImporter","StickyPasswordXmlImporter","TrueKeyCsvImporter","ClipperzHtmlImporter","RoboFormCsvImporter","AscendoCsvImporter","PasswordBossJsonImporter","ZohoVaultCsvImporter","SplashIdCsvImporter","PassKeepCsvImporter","GnomeJsonImporter","PasswordAgentCsvImporter","PasspackCsvImporter","PassmanJsonImporter","AvastCsvImporter","AvastJsonImporter","FSecureFskImporter","KasperskyTxtImporter","RememBearCsvImporter","PasswordWalletTxtImporter","MykiCsvImporter","SecureSafeCsvImporter","LogMeOnceCsvImporter","BlackBerryCsvImporter","ButtercupCsvImporter","CodebookCsvImporter","EncryptrCsvImporter","YotiCsvImporter","ImportCiphersRequest","KvpRequest","ImportOrganizationCiphersRequest","itemType","Number","fieldLower","web","logins","custName","note","pwd","loginName","cards","holderName","cardNumber","cvv","website","secondary_username","col","addCollection","collectionIndex","delimPosition","parseEncrypted","parseDecrypted","groupingsMap","fav","extra","OfficialProps","processingCustomFields","currentVersion","actionType","labelLower","Category","Favorite","Entry","Note","Username","TOTP","Website","Phone","PIN","Account","HandledResults","ADDRESS","processAddress","AUTHENTIFIANT","processAuth","BANKSTATEMENT","processNote","IDCARD","PAYMENTMEANS_CREDITCARD","processCard","IDENTITY","processIdentity","credential","secondaryLogin","fullName","nameParts","pseudo","addressName","addressFull","zipcode","owner","nameProperty","Label","Notes","CVV","expiry","Expiry","expParts","firstRow","containsField","fieldValue","fieldName","fieldNameLower","foldersMap","foldersIndexMap","folderTree","buildFolderTree","flattenFolderTree","template_type","processLogin","sensitive","uuid","parent_uuid","titlePrefix","tree","creditNumber","creditCvv","creditExpiry","keyRing","display_name","secret","attributes","attr","username_value","notesData","applicationsData","websitesData","workingData","parseDataCategory","applications","websites","nameKey","itemComment","itemCommentKey","colonIndex","rootGroup","traverse","isRootNode","groupPrefixName","groupName","nameEl","cipherIndex","entryString","valueEl","keyEl","attrs","ProtectInMemory","Title","Group","buildBaseCipher","parseSecureNote","parseCard","parseIdentity","ccnum","cardCipher","profilename","firstname","lastname","ccname","cccsc","ccexp","ccexpParts","middlename","zip","extraParts","processedNote","typeParts","mappedData","parseSecureNoteMapping","monthString","processingNotes","extraPart","DisplayName","UserName","Url","nickname","additionalInfo","twoFactAuthToken","cardName","exp_month","exp_year","firstAddressLine","secondAddressLine","zipCode","line","trashed","processStandardItem","processWinOpVaultItem","overview","URLs","parsePasswordHistory","notesPlain","parseFields","sections","section","openContents","faveIndex","typeName","secureContents","maxSize","designationKey","valueKey","fieldDesignation","street","setIdentityAddress","expSplit","tags","tag","getValue","custom_fields","customField","field_type","tagsJson","Tags","tagJson","__parsed_extra","fieldsJson","extraFields","fieldJson","newVersion","altFormat","login_url","identifiers","valObj","expDate","cf","records","record","categoryText","accountName","tagName","passwordSafe","notesDelimiter","getAttribute","groupText","trash","cardholder","verification","expiryMonth","expMonthNumber","expiryYear","expYearNumber","Name","Pwd","Rf_fields","labelEl","cardEl","labelIdEl","labelId","fieldEl","notesEl","Comment","parseFieldsToNotes","startIndex","loginNodes","loginNode","accountId","usernameText","passwordText","titleText","linkText","notesText","accountLogin","account","parentElement","buildGroupText","PropertiesToIgnore","memo","kind","expiryDate","document_content","ChamberName","parseData","SecretData","CustomData","connected","inactive","reconnectTimer","signalrConnection","off","signalR","HubConnectionBuilder","withUrl","accessTokenFactory","skipNegotiation","transport","HttpTransportType","WebSockets","withHubProtocol","signalRMsgPack","MessagePackHubProtocol","processNotification","NotificationResponse","onclose","reconnect","isAuthedAndUnlocked","updateConnection","sync","reconnectFromActivity","disconnectFromInactivity","contextId","payloadUserId","UserId","myUserId","SyncCipherCreate","SyncCipherUpdate","SyncCipherDelete","SyncLoginDelete","SyncFolderCreate","SyncFolderUpdate","SyncFolderDelete","SyncVault","SyncCiphers","SyncSettings","SyncOrgKeys","LogOut","SyncSendCreate","SyncSendUpdate","SyncSendDelete","SyncCipherNotification","SyncFolderNotification","UserNotification","SyncSendNotification","policyCache","MasterPasswordPolicyOptions","newPassword","toLocaleLowerCase","toLocaleUpperCase","indexing","builder","lunr","Builder","boost","extractor","uriExtractor","fieldExtractor","attachmentExtractor","isArray","every","getIndexForSearch","ciphersMap","searchResults","Query","wildcard","LEADING","TRAILING","q","tokenizer","term","joined","protocolIndex","queryIndex","decryptedSendCache","fileData","Send","cryptoKey","ArrayBuffer","encryptFileData","parseFile","decSends","SendRequest","encFileData","fileLength","ua","isOldSafari","algorithm","iterations","forgeLen","passwordBytes","toByteString","saltBytes","derivedKeyBytes","forge","wcLen","passwordBuf","toBuf","saltBuf","pbkdf2Params","toWebCryptoAlgorithm","importKey","impKey","deriveBits","ikm","outputByteSize","infoBuf","hkdfParams","prk","hashLen","infoArr","runningOkmLength","previousT","okm","md","md5","sha1","valueBytes","update","digest","valueBuf","signingAlgorithm","mac1","mac2","arr1","arr2","getBytes","rand","Uint32Array","util","createBuffer","putInt32","DecryptParameters","meta","encKeyByteString","macKeyByteString","decode64","parameters","dataBuffer","createDecipher","finish","rsaParams","impPrivateKey","exportKey","jwkPrivateKey","jwkPublicKeyParams","kty","ext","impPublicKey","modulusLength","publicExponent","generateKey","getRandomValues","encodeUtf8","angulartics2GoogleAnalytics","toasterConfig","ToasterConfig","showCloseButton","mouseoverTimerStop","animation","lastActivity","idleTimer","isIdle","runOutsideAngular","onmousemove","recordActivity","onmousedown","ontouchstart","onclick","onscroll","onkeypress","setFullWidth","idleStateChanged","sanitize","SecurityContext","HTML","bodyOutputType","BodyOutputType","TrustedHtml","trustedHtml","blur","elRef","formEls","formEl","inputEl"],"mappings":"aACA,cAQA,IAPA,IAMA,IANA,OACA,OACA,OAIA,SACQA,EAAIC,EAASC,OAAQF,IAC7B,OACA,MACA,gBAEA,OAEA,WACA,4CACA,WAKA,IAFA,QAEA,UACA,YAOA,OAHA,sBAGA,IAEA,aAEA,IADA,MACA,IAAkBA,EAAIG,EAAgBD,OAAQF,IAAK,CAGnD,IAFA,WACA,KACA,IAAmBI,EAAIC,EAAeH,OAAQE,IAAK,CACnD,WACA,iBAEA,IACA,gBACA,eAGA,SAIA,SAKA,GACA,KAGA,KAGA,cAGA,QACA,oBAGA,YACA,IACA,KACA,YAUA,OANA,mCAGA,OAGA,UAKA,MAGA,MAGA,oBACA,UACA,2BAA2CE,YAAY,EAAMC,IAAKC,KAKlE,gBACA,gDACA,4CAAyDC,MAAO,WAEhE,sCAAkDA,OAAO,KAQzD,kBAEA,GADA,cACA,aACA,qDACA,0BAGA,GAFA,OACA,mCAA0CH,YAAY,EAAMG,MAAOA,IACnE,2DAAiH,OAAOA,EAAMC,IAAQC,KAAK,KAAMD,IACjJ,UAIA,gBACA,sBACA,WAA4B,OAAOE,EAAgB,SACnD,WAAkC,OAAOA,GAEzC,OADA,aACA,GAIA,kBAAuD,OAAOC,OAAOC,UAAUC,eAAeC,KAAKC,EAAQC,IAG3G,OAEA,kDACA,iBACA,SACA,YACA,YAAiBlB,EAAImB,EAAWjB,OAAQF,IAAKoB,EAAqBD,EAAWnB,IAC7E,QAIA,gBAEA,I,mFCtJA,mBAAsB,EAAAqB,e,+ECEtB,mBAAsB,EAAAC,wB,8EC8HtB,mBAAsB,EAAAC,c,8EC3HtB,mBAAsB,EAAAC,e,gFCLtB,KAKA,KALA,I,cAOA,aAII,WAAoBC,GAAA,KAAAA,c,OAEpB,YAAAC,UAAA,SAAUC,EAAYC,EAAaC,EAAaC,GAC5C,OAAOC,KAAKN,YAAYO,EAAEL,EAAIC,EAAIC,EAAIC,I,iCAJjCG,GAAQ,qC,yCAARA,EAAQ,U,EAHrB,GAGa,EAAAA,Y,kFCVb,mBAAsB,EAAAC,oB,+ECAtB,KAOA,OAPA,I,gBASA,aAMI,WAAoBC,EAAwBC,GAAxB,KAAAD,KAAwB,KAAAC,oB,OAE5C,YAAAC,YAAA,SAAYC,GAAZ,WAC6B,MAArBP,KAAKQ,cAAkD,MAA1BR,KAAKQ,aAAaC,OAInDT,KAAKI,GAAGM,cAAcC,SAAU,EAEhCX,KAAKQ,aAAaC,MAAK,SAACG,GACpB,EAAKR,GAAGM,cAAcC,SAAU,KACjC,SAACE,GACA,EAAKT,GAAGM,cAAcC,SAAU,EAChC,EAAKN,kBAAkBS,UAAUD,Q,iCAhBhCE,GAAkB,6E,iCAAlBA,EAAkB,4G,EAH/B,GAGa,EAAAA,sB,8ECZb,S,OAOA,aAUI,WAAoBX,EAAwBY,GAAxB,KAAAZ,KAAwB,KAAAY,W,OAN5C,sBAAa,2BAAY,C,IAAzB,SAA0BC,GACtBjB,KAAKiB,MAAQA,G,gCAOjB,YAAAC,SAAA,WACSlB,KAAKI,GAAGM,cAAcS,aAAa,UACpCnB,KAAKgB,SAASI,aAAapB,KAAKI,GAAGM,cAAe,QAASV,KAAKiB,OAE/DjB,KAAKI,GAAGM,cAAcS,aAAa,eACpCnB,KAAKgB,SAASI,aAAapB,KAAKI,GAAGM,cAAe,aAAcV,KAAKiB,Q,iCAdpEI,GAAkB,qE,iCAAlBA,EAAkB,0E,EAH/B,GAGa,EAAAA,sB,8ECHb,mBAAsB,EAAAC,iB,8ECKtB,mBAAsB,EAAAC,iB,iFCZtB,iBAGI,WAAYX,GACRZ,KAAKY,SAAWA,EAkCxB,OA/Bc,YAAAY,oBAAV,SAA8BC,EAAsBb,EAAsBc,GACtE,QADgD,IAAAd,MAAA,WAAsB,IAAAc,OAAA,GAClD,MAAhBD,GAAyC,KAAjBA,EACxB,MAAM,IAAIE,MAAM,wCAKpB,GAHgB,MAAZf,GAAqC,MAAjBZ,KAAKY,WACzBA,EAAWZ,KAAKY,UAEJ,MAAZA,EACA,OAAO,KAEX,IAAKc,QAAwCE,IAA3BhB,EAASa,GAA6B,CACpD,IAAII,EAAgC,KAEhCA,EADAJ,EAAaK,OAAO,KAAOL,EAAaK,OAAO,GAAGC,cAC1BN,EAAaK,OAAO,GAAGE,cAEvBP,EAAaK,OAAO,GAAGC,cAE/CN,EAAatD,OAAS,IACtB0D,GAAyBJ,EAAaQ,MAAM,SAIjBL,IAA3BhB,EADJa,EAAeI,KAEXJ,EAAeA,EAAaO,oBAEDJ,IAA3BhB,EAASa,KACTA,EAAeA,EAAaM,eAGpC,OAAOnB,EAASa,IAExB,EAtCA,GAAsB,EAAAS,gB,+ECAtB,KAMA,KANA,I,6CCEQ,qB,8BAAG,2C,yBADP,2BACI,qDACA,YACJ,kB,6BAF2B,2CACvB,oE,+CDKR,aAYI,WAAoBxC,GAAA,KAAAA,cAPX,KAAAyC,KAAO,O,OAShB,YAAAjB,SAAA,WACIlB,KAAKoC,aAAepC,KAAKmC,KAEP,YAAdnC,KAAKmC,MAAoC,WAAdnC,KAAKmC,MACd,WAAdnC,KAAKmC,OACLnC,KAAKoC,aAAe,eAELR,IAAf5B,KAAKiB,QACLjB,KAAKiB,MAAQjB,KAAKN,YAAYO,EAAE,iBAElB2B,IAAd5B,KAAKqC,OACLrC,KAAKqC,KAAO,eAEK,UAAdrC,KAAKmC,MACZnC,KAAKoC,aAAe,cACDR,IAAf5B,KAAKiB,QACLjB,KAAKiB,MAAQjB,KAAKN,YAAYO,EAAE,eAElB2B,IAAd5B,KAAKqC,OACLrC,KAAKqC,KAAO,YAEK,QAAdrC,KAAKmC,OACZnC,KAAKoC,aAAe,eACDR,IAAf5B,KAAKiB,QACLjB,KAAKiB,MAAQjB,KAAKN,YAAYO,EAAE,aAElB2B,IAAd5B,KAAKqC,OACLrC,KAAKqC,KAAO,oB,iCArCfC,GAAgB,qC,iCAAhBA,EAAgB,oU,oBCZ7B,4BACI,kDAIA,uCACJ,kCACA,kB,MAPK,+DAAyC,2DACd,8C,kDDOhC,GAIa,EAAAA,oB,8EEZb,aAMA,SACA,SACA,SAEA,QAEA,SACA,SACA,SACA,QAEA,QACA,SACA,SAEA,SAEA,0BACI,KAAAC,eAAyB,KAEf,KAAAC,WAAyB,IAAI,EAAAC,mBAAkB,GAE/C,KAAAC,aAAe,iBAEf,KAAAC,mBAAqB,CAC3B,WAAY,YAAa,aAAc,cACvC,OAAQ,OAAQ,YAAa,WAC7B,SAAU,cAAe,YACzB,MAAO,UAAW,WAAY,YAAa,aAC3C,UAAW,aAAc,MAAO,MAAO,KAAM,QAAS,SACtD,IAAK,SAAU,UAAW,cAAe,QAGzC,YAGM,KAAAC,mBAAqB,CAC3B,OAAQ,OAAQ,YAAa,WAAY,aACzC,QAAS,SAAU,KAAM,SAAU,UACnC,QAAS,iBAAkB,SAAU,OACrC,UAAW,WAAY,MAAO,cAC9B,aAAc,YAAa,QAAS,YACpC,SAAU,WAGV,MAAO,gBAGD,KAAAC,gBAAkB,CACxB,OAAQ,QAAS,UAAW,WAAY,OACxC,cAAe,YAAa,WAC5B,YAAa,WAAY,OAGzB,aAGM,KAAAC,cAA0B,CAChC,MAAO,aAAc,YAAa,OAClC,OAAQ,WAAY,YAAa,SAAU,UAC3C,YAAa,OAAQ,MAAO,UAAW,WAAY,OACnD,WAAY,MAGZ,MAAO,WAGD,KAAAC,gBAAkB,CACxBC,SAAU,QACVC,gBAAgB,GA2SxB,OAxSI,sBAAc,2BAAY,C,IAA1B,WACI,OAA8B,MAAvBjD,KAAKuC,gB,gCAGN,YAAAW,SAAV,SAAmBC,GACf,IACMC,GADS,IAAIC,WACAC,gBAAgBH,EAAM,mBACzC,OAAc,MAAPC,GAAmD,MAApCA,EAAIG,cAAc,eAAyBH,EAAM,MAGjE,YAAAI,SAAV,SAAmBL,EAAcM,EAAiBC,GAAlD,gBAAkD,IAAAA,MAAA,IAC9C,IAAMC,EAAe7E,OAAO8E,OAAO,CAAEH,OAAQA,GAAUzD,KAAK+C,gBAAiBW,GAC7EP,EAAOnD,KAAK6D,aAAaV,GAAMW,KAAK,MAAMC,OAC1C,IAAMC,EAASC,EAAKC,MAAMf,EAAMQ,GAShC,OARqB,MAAjBK,EAAOG,QAAkBH,EAAOG,OAAOhG,OAAS,GAChD6F,EAAOG,OAAOC,SAAQ,SAAAvD,GACL,MAATA,EAAEwD,KAEF,EAAK7B,WAAW8B,QAAQ,qBAAuBzD,EAAEwD,IAAM,KAAOxD,EAAE0D,YAIrEP,EAAOb,MAAQa,EAAOb,KAAKhF,OAAS,EAAI6F,EAAOb,KAAO,MAGvD,YAAAqB,kBAAV,SAA4BC,GACxB,GAAIzE,KAAK0E,mBAAmBD,GACxB,OAAO,KAEX,IAAME,EAAY3E,KAAKwD,SAASiB,GAAS,GACzC,OAAiB,MAAbE,GAAqBA,EAAUxG,OAAS,GAAKwG,EAAU,GAAGxG,OAAS,EAC5DwG,EAAU,GAEd,MAGD,YAAAC,aAAV,SAAuBC,GAAvB,WACI,GAAW,MAAPA,EACA,OAAO,KAGX,GAAmB,iBAARA,EAAkB,CACzB,IAAMC,EAAW,IAAI,EAAAC,aAErB,OADAD,EAASD,IAAM7E,KAAKgF,OAAOH,GACvB7E,KAAK0E,mBAAmBI,EAASD,KAC1B,MAEXC,EAASG,MAAQ,KACV,CAACH,IAGZ,GAAID,EAAI1G,OAAS,EAAG,CAChB,IAAM,EAA4B,GAUlC,OATA0G,EAAIT,SAAQ,SAAAc,GACR,IAAMJ,EAAW,IAAI,EAAAC,aACrBD,EAASD,IAAM,EAAKG,OAAOE,GACvB,EAAKR,mBAAmBI,EAASD,OAGrCC,EAASG,MAAQ,KACjB,EAAUE,KAAKL,OAES,IAArB,EAAU3G,OAAe,KAAO,EAG3C,OAAO,MAGD,YAAA6G,OAAV,SAAiBH,GACb,OAAW,MAAPA,EACO,OAGiB,KAD5BA,EAAMA,EAAId,QACFqB,QAAQ,QAAiBP,EAAIO,QAAQ,MAAQ,IACjDP,EAAM,UAAYA,GAElBA,EAAI1G,OAAS,IACN0G,EAAIQ,UAAU,EAAG,KAErBR,IAGD,YAAAS,YAAV,SAAsBC,GAClB,IAAMC,EAAW,EAAAC,MAAMC,YAAYH,GACnC,OAAIvF,KAAK0E,mBAAmBc,GACjB,KAEJA,EAASG,WAAW,QAAUH,EAASI,QAAQ,OAAQ,IAAMJ,GAG9D,YAAAd,mBAAV,SAA6BmB,GACzB,OAAO,EAAAJ,MAAMf,mBAAmBmB,IAG1B,YAAAC,kBAAV,SAA4BD,EAAaE,GACrC,YADqC,IAAAA,MAAA,MACjC/F,KAAK0E,mBAAmBmB,GACjBE,EAEJF,GAGD,YAAAhC,aAAV,SAAuBgC,GACnB,OAAOA,EAAIG,MAAMhG,KAAK0C,eAIhB,YAAAuD,aAAV,SAAuBC,GACnB,GAAIlG,KAAK0E,mBAAmBwB,GACxB,OAAO,KAIX,IAAIC,EAAK,IAAIC,OAAO,MACpB,OAAyB,MAArBF,EAAQjB,MAAMkB,GACP,OAKP,sGACCE,KAAKH,GACC,cAIXC,EAAK,IAAIC,OAAO,UACS,MAArBF,EAAQjB,MAAMkB,GACP,QAIXA,EAAK,IAAIC,OAAO,iFACS,MAArBF,EAAQjB,MAAMkB,GACP,YAIXA,EAAK,IAAIC,OAAO,OACS,MAArBF,EAAQjB,MAAMkB,GACP,eAIXA,EAAK,IAAIC,OAAO,YACS,MAArBF,EAAQjB,MAAMkB,GACP,eAIXA,EAAK,IAAIC,OAAO,yBACS,MAArBF,EAAQjB,MAAMkB,GACP,OAIXA,EAAK,IAAIC,OAAO,qCACS,MAArBF,EAAQjB,MAAMkB,GACP,OAGJ,YAGD,YAAAG,kBAAV,SAA4BC,EAAoBC,GAC5C,IAAKxG,KAAK0E,mBAAmB8B,GAAa,CACtC,IAAMC,EAAQD,EAAWR,MAAM,KAC/B,GAAqB,IAAjBS,EAAMtI,OAAc,CACpB,IAAIuI,EAAgB,KAChBC,EAAe,KAUnB,GATwB,IAApBF,EAAM,GAAGtI,QAAoC,IAApBsI,EAAM,GAAGtI,QAEb,KADrBuI,EAAQD,EAAM,IACJtI,QAA6B,MAAbuI,EAAM,KAC5BA,EAAQA,EAAME,OAAO,EAAG,IAGR,IAApBH,EAAM,GAAGtI,QAAoC,IAApBsI,EAAM,GAAGtI,SAClCwI,EAAwB,IAAjBD,EAAMvI,OAAe,KAAOsI,EAAM,GAAKA,EAAM,IAE3C,MAATC,GAAyB,MAARC,EAGjB,OAFAJ,EAAOM,KAAKC,SAAWJ,EACvBH,EAAOM,KAAKE,QAAUJ,GACf,GAInB,OAAO,GAGD,YAAAK,yBAAV,SAAmChD,GAC/BA,EAAOiD,oBAAoB7C,SAAQ,SAAA8C,GAAK,OAAAlD,EAAOmD,wBAAwBhC,KAAK+B,MAC5ElD,EAAOoD,YAAcpD,EAAOqD,QAAQC,KAAI,SAAAC,GACpC,IAAMC,EAAa,IAAI,EAAAC,eAEvB,OADAD,EAAWE,KAAOH,EAAEG,KACbF,KAEXxD,EAAOiD,oBAAsB,GAC7BjD,EAAOqD,QAAU,IAGX,YAAAM,yBAAV,SAAmCC,EAAmBC,GAClD,IAAMC,EAAM9H,KAAK+H,4BAA4BH,EAAUC,GACvD,OAAsB,IAAfC,EAAI3J,OAAe,KAAO2J,EAAI,IAG/B,YAAAC,4BAAV,SAAsCH,EAAmBC,GACrD,OAAOG,MAAMC,KAAKL,EAASM,iBAAiBL,IAAQM,QAAO,SAAA/H,GAAM,OAAAA,EAAGgI,aAAeR,MAG7E,YAAAS,gBAAV,WACI,IAAM9B,EAAS,IAAI,EAAA+B,WAMnB,OALA/B,EAAOgC,UAAW,EAClBhC,EAAOiC,MAAQ,GACfjC,EAAOkC,OAAS,GAChBlC,EAAOmC,MAAQ,IAAI,EAAAC,UACnBpC,EAAOpE,KAAO,EAAAyG,WAAWC,MAClBtC,GAGD,YAAAuC,cAAV,SAAwBvC,GACN,MAAVA,IAGAA,EAAOpE,OAAS,EAAAyG,WAAWC,QAC3BtC,EAAOmC,MAAQ,MAEf1I,KAAK0E,mBAAmB6B,EAAOmB,QAC/BnB,EAAOmB,KAAO,MAEd1H,KAAK0E,mBAAmB6B,EAAOiC,OAC/BjC,EAAOiC,MAAQ,KAEfjC,EAAOiC,MAAQjC,EAAOiC,MAAMzE,OAEX,MAAjBwC,EAAOkC,QAA2C,IAAzBlC,EAAOkC,OAAOtK,SACvCoI,EAAOkC,OAAS,QAId,YAAAM,WAAV,SAAqBxC,EAAoB5H,EAAaD,EAAeyD,GACjE,QADiE,IAAAA,MAAkB,EAAA6G,UAAUC,OACzFjJ,KAAK0E,mBAAmBhG,GAM5B,GAHIsB,KAAK0E,mBAAmB/F,KACxBA,EAAM,IAEND,EAAMP,OAAS,KAAOO,EAAMqF,OAAOmF,OAAOlJ,KAAK0C,eAAiB,EAC5C,MAAhB6D,EAAOiC,QACPjC,EAAOiC,MAAQ,IAEnBjC,EAAOiC,OAAU7J,EAAM,KAAOqB,KAAK6D,aAAanF,GAAOoF,KAAK,MAAQ,SACjE,CACkB,MAAjByC,EAAOkC,SACPlC,EAAOkC,OAAS,IAEpB,IAAMU,EAAQ,IAAI,EAAAC,UAClBD,EAAMhH,KAAOA,EACbgH,EAAMzB,KAAO/I,EACbwK,EAAMzK,MAAQA,EACd6H,EAAOkC,OAAOtD,KAAKgE,KAIjB,YAAAE,cAAV,SAAwBrF,EAAsBsF,GAC1C,IAAIC,EAAcvF,EAAOqD,QAAQlJ,OAC3BqL,GAAaxJ,KAAK0E,mBAAmB4E,GACvCG,EAAYD,EAEhB,GAAIA,EACA,IAAK,IAAIvL,EAAI,EAAGA,EAAI+F,EAAOqD,QAAQlJ,OAAQF,IACvC,GAAI+F,EAAOqD,QAAQpJ,GAAGyJ,OAAS4B,EAAY,CACvCG,GAAY,EACZF,EAActL,EACd,MAKZ,GAAIwL,EAAW,CACX,IAAMlC,EAAI,IAAI,EAAAmC,WACdnC,EAAEG,KAAO4B,EACTtF,EAAOqD,QAAQlC,KAAKoC,GAEpBiC,GACAxF,EAAOiD,oBAAoB9B,KAAK,CAACnB,EAAO2F,QAAQxL,OAAQoL,KAItD,YAAAK,sBAAV,SAAgCrD,GACxBA,EAAOpE,OAAS,EAAAyG,WAAWC,OAAS7I,KAAK0E,mBAAmB6B,EAAOmC,MAAMmB,WACzE7J,KAAK0E,mBAAmB6B,EAAOmC,MAAMoB,YACf,MAArBvD,EAAOmC,MAAMqB,MAA6C,IAA7BxD,EAAOmC,MAAMqB,KAAK5L,UAChDoI,EAAOpE,KAAO,EAAAyG,WAAWoB,WACzBzD,EAAO0D,WAAa,IAAI,EAAAC,eACxB3D,EAAO0D,WAAW9H,KAAO,EAAAgI,eAAeC,UAGpD,EA/VA,GAAsB,EAAAC,gB,8ECnBtB,iBACI,KAAAC,SAAU,EAEV,KAAAX,QAAwB,GACxB,KAAAtC,QAAwB,GACxB,KAAAJ,oBAA0C,GAC1C,KAAAG,YAAgC,GAChC,KAAAD,wBAA8C,IAPrC,EAAAoD,gB,kGCJb,aAKMC,EAA4B,oBAAXC,OAAyB,EAAQ,KAAS,KAEjE,2BAkVA,OAxUW,EAAAC,KAAP,WACQjF,EAAMkF,SAIVlF,EAAMkF,QAAS,EACflF,EAAMmF,YAA4B,IAAZC,GAAuD,MAA3BA,EAAgBC,SAC5B,SAAjCD,EAAgBC,QAAQpD,KAC7BjC,EAAMsF,UAA8B,oBAAXN,OACzBhF,EAAMuF,gBAAkBvF,EAAMmF,SAAWnF,EAAMsF,UAC/CtF,EAAMwF,gBAAkBxF,EAAMsF,WAAa/K,KAAKkL,SAAST,QACzDhF,EAAM0F,qBAAuB1F,EAAMsF,WAAa/K,KAAKoL,cAAcX,QACnEhF,EAAM4F,OAAS5F,EAAMuF,gBAA2BvF,EAAMmF,SAAWnF,EAAMsF,UAAjCM,EAAsDZ,SAGzF,EAAAa,eAAP,SAAsBzF,GAClB,GAAIJ,EAAMmF,QAAUnF,EAAMuF,eACtB,OAAO,IAAIO,WAAWC,EAAOvD,KAAKpC,EAAK,WAIvC,IAFA,IAAM4F,EAAehB,OAAOiB,KAAK7F,GAC3B8F,EAAQ,IAAIJ,WAAWE,EAAatN,QACjCF,EAAI,EAAGA,EAAIwN,EAAatN,OAAQF,IACrC0N,EAAM1N,GAAKwN,EAAaG,WAAW3N,GAEvC,OAAO0N,GAIR,EAAAE,kBAAP,SAAyBhG,GACrB,OAAOJ,EAAM6F,eAAe7F,EAAMqG,gBAAgBjG,KAG/C,EAAAkG,eAAP,SAAsBlG,GAClB,GAAIJ,EAAMmF,QAAUnF,EAAMuF,eACtB,OAAO,IAAIO,WAAWC,EAAOvD,KAAKpC,EAAK,QAGvC,IADA,IAAM8F,EAAQ,IAAIJ,WAAW1F,EAAI1H,OAAS,GACjCF,EAAI,EAAGA,EAAI4H,EAAI1H,OAAQF,GAAK,EACjC0N,EAAM1N,EAAI,GAAK+N,SAASnG,EAAIe,OAAO3I,EAAG,GAAI,IAE9C,OAAO0N,GAIR,EAAAM,gBAAP,SAAuBpG,GACnB,GAAIJ,EAAMmF,QAAUnF,EAAMuF,eACtB,OAAO,IAAIO,WAAWC,EAAOvD,KAAKpC,EAAK,SAIvC,IAFA,IAAMqG,EAAUC,SAASC,mBAAmBvG,IACtCwG,EAAM,IAAId,WAAWW,EAAQ/N,QAC1BF,EAAI,EAAGA,EAAIiO,EAAQ/N,OAAQF,IAChCoO,EAAIpO,GAAKiO,EAAQN,WAAW3N,GAEhC,OAAOoO,GAIR,EAAAC,sBAAP,SAA6BzG,GAEzB,IADA,IAAMwG,EAAM,IAAId,WAAW1F,EAAI1H,QACtBF,EAAI,EAAGA,EAAI4H,EAAI1H,OAAQF,IAC5BoO,EAAIpO,GAAK4H,EAAI+F,WAAW3N,GAE5B,OAAOoO,GAGJ,EAAAE,gBAAP,SAAuBC,GACnB,GAAI/G,EAAMmF,QAAUnF,EAAMuF,eACtB,OAAOQ,EAAOvD,KAAKuE,GAAQC,SAAS,UAIpC,IAFA,IAAIC,EAAS,GACPf,EAAQ,IAAIJ,WAAWiB,GACpBvO,EAAI,EAAGA,EAAI0N,EAAMgB,WAAY1O,IAClCyO,GAAUE,OAAOC,aAAalB,EAAM1N,IAExC,OAAOwM,OAAOqC,KAAKJ,IAIpB,EAAAK,mBAAP,SAA0BP,GACtB,OAAO/G,EAAMuH,gBAAgBvH,EAAM8G,gBAAgBC,KAGhD,EAAAQ,gBAAP,SAAuBC,GACnB,OAAOA,EAAOrH,QAAQ,MAAO,KACxBA,QAAQ,MAAO,KACfA,QAAQ,KAAM,KAGhB,EAAAsH,iBAAP,SAAwBV,GACpB,GAAI/G,EAAMmF,QAAUnF,EAAMuF,eACtB,OAAOQ,EAAOvD,KAAKuE,GAAQC,SAAS,QAEpC,IAAMd,EAAQ,IAAIJ,WAAWiB,GACvBW,EAAgBP,OAAOC,aAAaO,MAAM,KAAMzB,GACtD,OAAO0B,mBAAmBC,OAAOH,KAIlC,EAAAI,uBAAP,SAA8Bf,GAC1B,OAAOI,OAAOC,aAAaO,MAAM,KAAM,IAAI7B,WAAWiB,KAInD,EAAAgB,gBAAP,SAAuBhB,GACnB,GAAI/G,EAAMmF,QAAUnF,EAAMuF,eACtB,OAAOQ,EAAOvD,KAAKuE,GAAQC,SAAS,OAEpC,IAAMd,EAAQ,IAAIJ,WAAWiB,GAC7B,OAAOxE,MAAMjJ,UAAUuI,IAAIrI,KAAK0M,GAAO,SAAC8B,GAAc,OAAC,KAAOA,EAAEhB,SAAS,KAAKxK,OAAO,MAAI6B,KAAK,KAI/F,EAAAgI,gBAAP,SAAuB4B,GACnB,IAAIC,EAASD,EAAU9H,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KACxD,OAAQ+H,EAAOxP,OAAS,GACpB,KAAK,EACD,MACJ,KAAK,EACDwP,GAAU,KACV,MACJ,KAAK,EACDA,GAAU,IACV,MACJ,QACI,MAAM,IAAIhM,MAAM,6BAGxB,OAAOgM,GAGJ,EAAAC,iBAAP,SAAwBF,GACpB,OAAOjI,EAAMoI,cAAcpI,EAAMqG,gBAAgB4B,KAG9C,EAAAG,cAAP,SAAqBZ,GACjB,OAAIxH,EAAMmF,QAAUnF,EAAMuF,eACfQ,EAAOvD,KAAKgF,EAAQ,UAAUR,SAAS,QAEvCY,mBAAmBC,OAAO7C,OAAOiB,KAAKuB,MAK9C,EAAAa,QAAP,WACI,MAAO,uCAAuClI,QAAQ,SAAS,SAAAmI,GAE3D,IAAM7G,EAAoB,GAAhB8G,KAAKC,SAAgB,EAG/B,OADgB,MAANF,EAAY7G,EAAS,EAAJA,EAAU,GAC5BuF,SAAS,QAInB,EAAAyB,OAAP,SAActO,GACV,OAAOwG,OAAO,4EAA6E,KAAKC,KAAKzG,IAGlG,EAAA8F,YAAP,SAAmByI,GACf,IAAM5I,EAAME,EAAM2I,OAAOD,GACzB,IACI,OAAc,MAAP5I,GAAgC,KAAjBA,EAAIC,SAAkBD,EAAIC,SAAW,KAC7D,SACE,OAAO,OAIR,EAAA6I,QAAP,SAAeF,GACX,IAAM5I,EAAME,EAAM2I,OAAOD,GACzB,IACI,OAAc,MAAP5I,GAA4B,KAAbA,EAAI+I,KAAc/I,EAAI+I,KAAO,KACrD,SACE,OAAO,OAIR,EAAAC,UAAP,SAAiBJ,GACb,GAAiB,MAAbA,EACA,OAAO,KAIX,GAAkB,MADlBA,EAAYA,EAAUpK,QAElB,OAAO,KAGX,GAAIoK,EAAUxI,WAAW,SACrB,OAAO,KAGX,IAAI6I,EAAUL,EAAUxI,WAAW,YAAcwI,EAAUxI,WAAW,YAMtE,IALK6I,GAAWL,EAAU/I,QAAQ,OAAS,GAAKK,EAAMgJ,eAAepI,KAAK8H,KACtEA,EAAY,UAAYA,EACxBK,GAAU,GAGVA,EACA,IACI,IAAMjJ,EAAME,EAAMiJ,aAAaP,GAC/B,GAAqB,cAAjB5I,EAAIC,UAA4BC,EAAMkJ,eAAepJ,EAAIC,UACzD,OAAOD,EAAIC,SAGf,IAAMoJ,EAAqB,MAATC,GAAoC,MAAnBA,EAAMN,UAAoBM,EAAMN,UAAUhJ,EAAIC,UAAY,KAC7F,OAAoB,MAAboJ,EAAoBA,EAAYrJ,EAAIC,SAC7C,MAAO3E,IAGb,IACI,IAAMiO,EAAkB,MAATD,GAAoC,MAAnBA,EAAMN,UAAoBM,EAAMN,UAAUJ,GAAa,KAEvF,GAAc,MAAVW,EACA,OAAOA,EAEb,SACE,OAAO,KAGX,OAAO,MAGJ,EAAAC,eAAP,SAAsBZ,GAClB,IAAM5I,EAAME,EAAM2I,OAAOD,GACzB,GAAW,MAAP5I,GAA6B,MAAdA,EAAI2D,QAAiC,KAAf3D,EAAI2D,OACzC,OAAO,KAEX,IAAM5B,EAAM,IAAI0H,IAShB,OARiC,MAAlBzJ,EAAI2D,OAAO,GAAa3D,EAAI2D,OAAOtC,OAAO,GAAKrB,EAAI2D,QAAQlD,MAAM,KAC1E5B,SAAQ,SAAA6K,GACV,IAAMxI,EAAQwI,EAAKjJ,MAAM,KACrBS,EAAMtI,OAAS,GAGnBmJ,EAAI4H,IAAI7B,mBAAmB5G,EAAM,IAAIzE,cAA2B,MAAZyE,EAAM,GAAa,GAAK4G,mBAAmB5G,EAAM,QAElGa,GAGJ,EAAA6H,gBAAP,SAAuBzP,EAA0B0P,GAC7C,OAAO,SAACC,EAAQC,GACZ,OAAe,MAAXD,EAAED,IAA4B,MAAXE,EAAEF,IACb,EAEG,MAAXC,EAAED,IAA4B,MAAXE,EAAEF,GACd,EAEI,MAAXC,EAAED,IAA4B,MAAXE,EAAEF,GACd,EAGJ1P,EAAY6P,SAAW7P,EAAY6P,SAASC,QAAQH,EAAED,GAAOE,EAAEF,IAClEC,EAAED,GAAMK,cAAcH,EAAEF,MAI7B,EAAA1K,mBAAP,SAA0BmB,GACtB,OAAc,MAAPA,GAA8B,iBAARA,GAAmC,KAAfA,EAAI9B,QAGlD,EAAA2L,OAAP,SAAiBhI,GACb,OAAOA,GAGJ,EAAA9D,OAAP,SAAiB+L,EAAWC,GACxB,OAAO9Q,OAAO8E,OAAO+L,EAAQC,IAGlB,EAAAjB,eAAf,SAA8BkB,GAG1B,MADgB,mKACDxJ,KAAKwJ,IAGT,EAAA3E,SAAf,SAAwB4E,GACpB,IACCT,EADGU,GAAS,EAOb,OANCV,EAKES,EAAIE,UAAUC,WAAaH,EAAIE,UAAUE,QAAWJ,EAAYK,OAH3D,2TAA2T9J,KAAKgJ,IAAM,0kDAA0kDhJ,KAAKgJ,EAAEzI,OAAO,EAAG,OACj6DmJ,GAAS,GAGVA,GAAoD,MAA1CD,EAAIE,UAAUC,UAAUhL,MAAM,UAGpC,EAAAmG,cAAf,SAA6B0E,GACzB,OAAmD,MAA5CA,EAAIE,UAAUC,UAAUhL,MAAM,YAAgE,MAA1C6K,EAAIE,UAAUC,UAAUhL,MAAM,UAG9E,EAAAmJ,OAAf,SAAsBD,GAClB,GAAiB,MAAbA,EACA,OAAO,KAIX,GAAkB,MADlBA,EAAYA,EAAUpK,QAElB,OAAO,KAGX,IAAIwB,EAAME,EAAMiJ,aAAaP,GAClB,MAAP5I,MACyD,IAAjC4I,EAAU/I,QAAQ,YAAsD,IAAlC+I,EAAU/I,QAAQ,cACxD+I,EAAU/I,QAAQ,MAAQ,IAC9CG,EAAME,EAAMiJ,aAAa,UAAYP,KAG7C,OAAO5I,GAGI,EAAAmJ,aAAf,SAA4BP,GACxB,IACI,GAAe,MAAX3D,EACA,OAAOA,EAAQ4F,IAAM,IAAI5F,EAAQ4F,IAAIjC,GAAa3D,EAAQtG,MAAMiK,GAC7D,GAAmB,mBAARiC,IACd,OAAO,IAAIA,IAAIjC,GACZ,GAAc,MAAV1D,OAAgB,CACvB,IAAM4F,EAAclC,EAAU/I,QAAQ,QAAU,EAChD,IAAKiL,GAAelC,EAAU/I,QAAQ,MAAQ,EAC1C+I,EAAY,UAAYA,OACrB,IAAKkC,EACR,OAAO,KAEX,IAAMC,EAAS7F,OAAO8F,SAASC,cAAc,KAE7C,OADAF,EAAOG,KAAOtC,EACPmC,GAEb,MAAOzP,IAET,OAAO,MA/UJ,EAAA8J,QAAS,EACT,EAAAK,gBAAiB,EACjB,EAAAJ,QAAS,EACT,EAAAG,WAAY,EACZ,EAAAE,iBAAkB,EAClB,EAAAE,sBAAuB,EACvB,EAAAE,OAAc,KACd,EAAAoD,eAAiB,iFA0U5B,EAlVA,GAAa,EAAAhJ,QAoVbA,EAAMiF,S,0HCxVN,mBAAsB,EAAAgG,6B,8ECHtB,S,OAKA,2B,OAIuC,YAAAC,QAAnC,SAA2CC,GACvCA,EAAOC,kB,iCAFFC,I,iCAAAA,EAAkB,mE,yCAAlB,mB,EAHb,GAGa,EAAAA,sB,8ECRb,mBAAsB,EAAAC,gB,8ECAtB,SAAYnI,GACR,qBACA,+BACA,mBACA,2BAJJ,CAAY,EAAAA,aAAA,EAAAA,WAAU,M,8ECOtB,mBAAsB,EAAAoI,qB,8ECPtB,mBAAsB,EAAAC,kB,+ECOtB,mBAAsB,EAAAC,iB,+ECPtB,S,OAOA,aAUI,WAAoB9Q,EAAwBY,GAAxB,KAAAZ,KAAwB,KAAAY,W,OAN5C,sBAAa,+BAAgB,C,IAA7B,SAA8BmQ,GAC1BnR,KAAKoR,gBAAgC,KAAdD,IAAkC,IAAdA,G,gCAO/C,YAAAjQ,SAAA,WACQlB,KAAKoR,kBAAoBpR,KAAKI,GAAGM,cAAcS,aAAa,iBAC5DnB,KAAKgB,SAASI,aAAapB,KAAKI,GAAGM,cAAe,eAAgB,OAEjEV,KAAKI,GAAGM,cAAcS,aAAa,mBACpCnB,KAAKgB,SAASI,aAAapB,KAAKI,GAAGM,cAAe,iBAAkB,QAEnEV,KAAKI,GAAGM,cAAcS,aAAa,gBACpCnB,KAAKgB,SAASI,aAAapB,KAAKI,GAAGM,cAAe,cAAe,QAEhEV,KAAKI,GAAGM,cAAcS,aAAa,eACpCnB,KAAKgB,SAASI,aAAapB,KAAKI,GAAGM,cAAe,aAAc,SAE/DV,KAAKI,GAAGM,cAAcS,aAAa,cACpCnB,KAAKgB,SAASI,aAAapB,KAAKI,GAAGM,cAAe,YAAa,a,iCAvB9D2Q,GAAsB,qE,iCAAtBA,EAAsB,sF,EAHnC,GAGa,EAAAA,0B,gFCFb,mBAAsB,EAAAC,iB,qFCRtB,S,OAKA,2B,OAIuC,YAAAX,QAAnC,SAA2CC,GACvCA,EAAOW,mB,iCAFFC,I,iCAAAA,EAAiB,kE,yCAAjB,mB,EAHb,GAGa,EAAAA,qB,+ECHb,mBAAsB,EAAAC,e,gFCCtB,mBAAsB,EAAAC,e,gFCNtB,mBAAsB,EAAAC,sB,8ECAtB,SAMA,Q,OAEA,aAUI,WAAoBvR,GAAA,KAAAA,K,OANpB,sBAAa,2BAAY,C,IAAzB,SAA0B+Q,GACtBnR,KAAK4R,UAA0B,KAAdT,IAAkC,IAAdA,G,gCAOzC,YAAAjQ,SAAA,YACS,EAAAuE,MAAMwF,iBAAmBjL,KAAK4R,WAC/B5R,KAAKI,GAAGM,cAAcmR,S,iCAXrBC,GAAkB,oC,iCAAlBA,EAAkB,0E,EAH/B,GAGa,EAAAA,sB,8ECXb,8BAiCa,KAAAC,mBAA6BC,EAAiBD,mBAC9C,KAAAE,aAAuBD,EAAiBC,aACxC,KAAAC,+BAAyCF,EAAiBE,+BAC1D,KAAAC,0BAAoCH,EAAiBG,0BACrD,KAAAC,kBAA4BJ,EAAiBI,kBAC7C,KAAAC,uBAAiCL,EAAiBK,uBAClD,KAAAC,uBAAiCN,EAAiBM,uBAClD,KAAAC,4BAAsCP,EAAiBO,4BACvD,KAAAC,gBAA0BR,EAAiBQ,gBAC3C,KAAAC,sBAAgCT,EAAiBS,sBACjD,KAAAC,cAAwBV,EAAiBU,cACzC,KAAAC,gBAA0BX,EAAiBW,gBAC3C,KAAAC,oBAA8BZ,EAAiBY,oBAC/C,KAAAC,UAAoBb,EAAiBa,UACrC,KAAAC,SAAmBd,EAAiBc,SACpC,KAAAC,sBAAgCf,EAAiBe,sBACjD,KAAAC,wBAAkChB,EAAiBgB,wBACnD,KAAAC,wBAAkCjB,EAAiBiB,wBACnD,KAAAC,6BAAuClB,EAAiBkB,6BACxD,KAAAC,gBAA0BnB,EAAiBmB,gBAC3C,KAAAC,gBAA0BpB,EAAiBoB,gBAC3C,KAAAC,aAAuBrB,EAAiBqB,aACxC,KAAAC,kBAA4BtB,EAAiBsB,kBAC7C,KAAAC,mBAA6BvB,EAAiBuB,mBAC9C,KAAAC,mBAA6BxB,EAAiBwB,mBAC9C,KAAAC,YAAsBzB,EAAiByB,YACvC,KAAAC,mBAA6B1B,EAAiB0B,mBAC9C,KAAAC,cAAwB3B,EAAiB2B,cACzC,KAAAC,4BAAsC5B,EAAiB4B,4BACvD,KAAAC,8BAAwC7B,EAAiB6B,8BACtE,OA9DoB,EAAA9B,mBAA6B,kBAC7B,EAAAE,aAAuB,YACvB,EAAAC,+BAAyC,8BACzC,EAAA4B,sCAAgD,qCAChD,EAAA3B,0BAAoC,yBACpC,EAAAC,kBAA4B,iBAC5B,EAAAC,uBAAiC,sBACjC,EAAAC,uBAAiC,sBACjC,EAAAC,4BAAsC,2BACtC,EAAAC,gBAA0B,aAC1B,EAAAC,sBAAgC,qBAChC,EAAAC,cAAwB,aACxB,EAAAC,gBAA0B,eAC1B,EAAAC,oBAA8B,mBAC9B,EAAAC,UAAoB,SACpB,EAAAC,SAAmB,QACnB,EAAAC,sBAAgC,qBAChC,EAAAC,wBAAkC,0BAClC,EAAAC,wBAAkC,0BAClC,EAAAC,6BAAuC,+BACvC,EAAAC,gBAA0B,kBAC1B,EAAAC,gBAA0B,kBAC1B,EAAAC,aAAuB,eACvB,EAAAC,kBAA4B,oBAC5B,EAAAC,mBAA6B,kBAC7B,EAAAC,mBAA6B,kBAC7B,EAAAC,YAAsB,WACtB,EAAAC,mBAA6B,YAC7B,EAAAC,cAAwB,gBACxB,EAAAC,4BAAsC,8BACtC,EAAAC,8BAAwC,gCAgC5D,EA/DA,GAAa,EAAA7B,oB,kFCEb,mBAAsB,EAAA+B,gB,qFCFtB,mBAAa,EAAAC,+B,8ECGb,mBAAsB,EAAAC,iB,68CCHtB,aAMA,2BA2DA,OA1Dc,YAAAC,iBAAV,SAA6CpF,EAAWqF,EAAc7M,EAClE8M,EAA2BC,GAC3B,IAAK,IAAMjF,UADgB,IAAAiF,MAAA,IACR/M,EACf,GAAKA,EAAItI,eAAeoQ,GAAxB,CAIA,IAAMkF,EAAUH,EAAS7M,EAAI8H,IAASA,IACb,IAArBgF,GAA6BC,EAAWjP,QAAQgK,IAAS,EACxDN,EAAeM,GAAQkF,GAAoB,KAE3CxF,EAAeM,GAAQkF,EAAU,IAAI,EAAAC,aAAaD,GAAW,OAIhE,YAAAE,eAAV,SAA2C1F,EAAWqF,EAAc7M,EAAUmN,GAC1E,IAAK,IAAMrF,UAD+D,IAAAqF,MAAA,IACvDnN,EACf,GAAKA,EAAItI,eAAeoQ,GAAxB,CAIA,IAAMkF,EAAWxF,EAAgBxH,EAAI8H,IAASA,GAC1CqF,EAAoBrP,QAAQgK,IAAS,EACpC+E,EAAgB/E,GAAmB,MAAXkF,EAAkBA,EAAU,KAEpDH,EAAgB/E,GAAmB,MAAXkF,EAAmBA,EAAyBI,gBAAkB,OAKnF,YAAAC,WAAhB,SAA2CC,EAActN,EAAUuN,EAC/DlW,G,YAAA,IAAAA,MAAA,M,6FAIA,IAAWyQ,KAHL0F,EAAW,GACXC,EAAY/U,KAECsH,EACVA,EAAItI,eAAeoQ,IAKxB,SAAW4F,GACP,IAAMC,EAAIC,QAAQC,UAAU1U,MAAK,WAC7B,IAAM2U,EAAU9N,EAAI0N,IAAYA,EAChC,OAAID,EAAKK,GACEL,EAAKK,GAASC,QAAQR,EAAOlW,GAEjC,QACR8B,MAAK,SAAC6U,GACJV,EAAkBI,GAAWM,KAElCR,EAAS3P,KAAK8P,GAVlB,CAWG7F,GAGP,SAAM8F,QAAQK,IAAIT,I,OAClB,OADA,SACO,CAAP,EAAOF,WAEf,EA3DA,G,6aCNA,aASA,GAPA,KAOA,QACA,Q,GAEA,M,+BAEA,kBAOI,WAAYY,EAAoDC,GAAhE,MACI,YAAMD,EAA0BC,IAAiB,K,OAHrD,EAAArV,GAAU,K,SADsB,OAOhC,YAAAsV,YAAA,aAEA,YAAAC,KAAA,SAAQxT,EAAeyT,EAAmCC,EACtDC,GADJ,gBAA0D,IAAAD,OAAA,QACtD,IAAAC,MAAA,MACA9V,KAAK4V,gBAAkBA,EACvB5V,KAAK6V,KAAOA,EAEZ,IAAME,EAAU/V,KAAKwV,yBAAyBQ,wBAA2B7T,GACnE8T,EAAejW,KAAKkW,UAAUC,gBAAmBJ,GACzB,MAA1BD,GACAA,EAAuBG,EAAaG,UAGxC,IAAMC,EAASrO,MAAMC,KAAKsI,SAASrI,iBAAiB,WA6BpD,OA5BImO,EAAOlY,OAAS,IAChB6B,KAAKI,GAAKkW,EAAGD,EAAO,IACpBrW,KAAKI,GAAGmW,MAAM,QAEdvW,KAAKI,GAAGoW,GAAG,iBAAiB,WACxB,EAAKC,OAAOC,OACZ,EAAKjB,iBAAiBkB,KAAK,gBAE/B3W,KAAKI,GAAGoW,GAAG,kBAAkB,WACzB,EAAKI,QAAQF,OACb,EAAKjB,iBAAiBkB,KAAK,cACtB,EAAAlR,MAAMwF,iBACP,EAAK7K,GAAGyW,KAAK,mBAAmBhF,WAGxC7R,KAAKI,GAAGoW,GAAG,iBAAiB,WACxB,EAAKM,QAAQJ,OACb,EAAKjB,iBAAiBkB,KAAK,iBAE/B3W,KAAKI,GAAGoW,GAAG,mBAAmB,WAC1B,EAAKO,SAASL,OACd,EAAKjB,iBAAiBkB,KAAK,eACC,MAAxB,EAAKf,iBACL,EAAKA,gBAAgBoB,YAK1Bf,EAAaG,UAGxB,YAAAa,MAAA,WACmB,MAAXjX,KAAKI,IACLJ,KAAKI,GAAGmW,MAAM,S,iCAtDbW,GAAc,0F,iCAAdA,EAAc,uIAFZ,qE,oBAFf,CAIoC,kBAAvB,EAAAA,kB,gFChBb,mBAAsB,EAAAC,gB,8ECEtB,iBAYI,WAAYpJ,GAXZ,KAAAqJ,eAAyB,KACzB,KAAAtQ,SAAmB,KACnB,KAAAC,QAAkB,KAClB,KAAAsQ,KAAe,KAGP,KAAAC,OAAiB,KACjB,KAAAC,QAAkB,KAClB,KAAAC,UAAoB,KA0DhC,OAnDI,sBAAI,yBAAU,C,IAAd,WACI,OAAoB,MAAbxX,KAAKqX,KAAe,IAAII,OAAOzX,KAAKqX,KAAKlZ,QAAU,M,gCAG9D,sBAAI,oBAAK,C,IAAT,WACI,OAAO6B,KAAKsX,Q,IAEhB,SAAU5Y,GACNsB,KAAKsX,OAAS5Y,EACdsB,KAAKwX,UAAY,M,gCAGrB,sBAAI,qBAAM,C,IAAV,WACI,OAAOxX,KAAKuX,S,IAEhB,SAAW7Y,GACPsB,KAAKuX,QAAU7Y,EACfsB,KAAKwX,UAAY,M,gCAGrB,sBAAI,uBAAQ,C,IAAZ,WACI,GAAsB,MAAlBxX,KAAKwX,YACLxX,KAAKwX,UAAYxX,KAAK0X,MACH,MAAf1X,KAAK2X,QAAkB3X,KAAK2X,OAAOxZ,QAAU,GAAG,CAC1B,MAAlB6B,KAAKwX,WAAwC,KAAnBxX,KAAKwX,UAC/BxX,KAAKwX,WAAa,KAElBxX,KAAKwX,UAAY,GAIrB,IAAMI,EAAQ5X,KAAK2X,OAAOxZ,QAAU,GAAgD,MAA3C6B,KAAK2X,OAAO1S,MAAM,IAAImB,OAAO,WAAqB,EAAI,EAC/FpG,KAAKwX,WAAc,IAAMxX,KAAK2X,OAAO/Q,OAAO5G,KAAK2X,OAAOxZ,OAASyZ,GAGzE,OAAO5X,KAAKwX,W,gCAGhB,sBAAI,yBAAU,C,IAAd,WACI,IAAKxX,KAAK8G,WAAa9G,KAAK+G,QACxB,OAAO,KAGX,IAAI8Q,EAAuB,MAAjB7X,KAAK8G,UAAoB,IAAM9G,KAAK8G,UAAU7E,OAAO,GAAK,KAEpE,OADA4V,GAAQ,OAAyB,MAAhB7X,KAAK+G,QAAkB/G,KAAK8X,WAAW9X,KAAK+G,SAAW,S,gCAIpE,YAAA+Q,WAAR,SAAmBnR,GACf,OAAuB,IAAhBA,EAAKxI,OAAe,KAAOwI,EAAOA,GAEjD,EAnEA,GAAa,EAAAoR,Y,kFCEb,iBAGI,WAAYC,GAFZ,KAAA7V,KAAuB,KAGd6V,IAILhY,KAAKmC,KAAO6V,EAAE7V,MAMtB,OAHI,sBAAI,uBAAQ,C,IAAZ,WACI,OAAO,M,gCAEf,EAdA,GAAa,EAAA+H,kB,qFCNb,mBAAsB,EAAA+N,gB,8ECGtB,mBAAsB,EAAAC,yB,68CCHtB,aAIA,QAIA,aAQI,WAAYC,EAAgDhV,EAAeiV,EAAaC,GACpF,GAAY,MAARlV,EAAc,CAEd,IAAMmV,EAAUH,EAkBhB,OAfInY,KAAK0U,gBADC,MAAN0D,EACuBE,EAAU,IAAMF,EAAK,IAAMjV,EAE3BmV,EAAU,IAAMnV,EAIhC,MAAPkV,IACArY,KAAK0U,iBAAoB,IAAM2D,GAGnCrY,KAAKuY,eAAiBD,EACtBtY,KAAKmD,KAAOA,EACZnD,KAAKoY,GAAKA,OACVpY,KAAKqY,IAAMA,GAMf,GADArY,KAAK0U,gBAAkByD,EAClBnY,KAAK0U,gBAAV,CAIA,IAAM8D,EAAexY,KAAK0U,gBAAgB1O,MAAM,KAC5CyS,EAAsB,KAE1B,GAA4B,IAAxBD,EAAara,OACb,IACI6B,KAAKuY,eAAiBvM,SAASwM,EAAa,GAAI,MAChDC,EAAYD,EAAa,GAAGxS,MAAM,KACpC,MAAOnF,GACL,YAGJ4X,EAAYzY,KAAK0U,gBAAgB1O,MAAM,KACvChG,KAAKuY,eAAsC,IAArBE,EAAUta,OAAe,EAAAua,eAAeC,yBAC1D,EAAAD,eAAeE,cAGvB,OAAQ5Y,KAAKuY,gBACT,KAAK,EAAAG,eAAeC,yBACpB,KAAK,EAAAD,eAAeG,yBAChB,GAAyB,IAArBJ,EAAUta,OACV,OAGJ6B,KAAKoY,GAAKK,EAAU,GACpBzY,KAAKmD,KAAOsV,EAAU,GACtBzY,KAAKqY,IAAMI,EAAU,GACrB,MACJ,KAAK,EAAAC,eAAeE,cAChB,GAAyB,IAArBH,EAAUta,OACV,OAGJ6B,KAAKoY,GAAKK,EAAU,GACpBzY,KAAKmD,KAAOsV,EAAU,GACtB,MACJ,KAAK,EAAAC,eAAeI,uBACpB,KAAK,EAAAJ,eAAeK,qBAChB,GAAyB,IAArBN,EAAUta,OACV,OAGJ6B,KAAKmD,KAAOsV,EAAU,GACtB,MACJ,QACI,SA2BhB,OAvBU,YAAApD,QAAN,SAAcR,EAAelW,G,YAAA,IAAAA,MAAA,M,6FACzB,GAA2B,MAAvBqB,KAAKgZ,eACL,MAAO,CAAP,EAAOhZ,KAAKgZ,gBAKhB,KADMC,EAAoB,EAAAxT,MAAM4F,OAAe6N,2BAI3C,MAAM,IAAIvX,MAAM,qDAFhBwX,EAAgBF,EAAiBG,mB,8CAMtB,MAAPza,EAAA,MACM,GAAMwa,EAAcE,UAAUxE,I,OAApClW,EAAM,S,iBAEY,OAAtB,EAAAqB,KAAsB,GAAMmZ,EAAcG,cAActZ,KAAMrB,I,cAA9D,EAAKqa,eAAiB,S,6BAEtBhZ,KAAKgZ,eAAiB,0B,aAE1B,MAAO,CAAP,EAAOhZ,KAAKgZ,wBAEpB,EA5GA,GAAa,EAAAzE,gB,68CCRb,SAMA,QAOA,GALA,OAEA,MACA,MAEA,OAEA,Q,+DCdI,uB,6BAAmB,0DAAd,6C,wBACL,mB,6BAAG,uDDeP,IAAMgF,EAAe,CACjB,WAAY3M,OAAOC,aAAa,OAChC,mBAAoBD,OAAOC,aAAa,OACxC,eAAgBD,OAAOC,aAAa,OACpC,iBAAkBD,OAAOC,aAAa,OACtC,aAAcD,OAAOC,aAAa,OAClC,WAAYD,OAAOC,aAAa,QAGpC,aAaI,WAAY2M,EAAkDC,GAAA,KAAAA,eAC1DzZ,KAAK0Z,SAAWF,EAAmBE,SAC9B1Z,KAAK0Z,WACFF,EAAmBG,QACnB3Z,KAAK0Z,SAAWF,EAAmBG,QAAU,SAE7C3Z,KAAK0Z,SAAW,+B,OAKtB,YAAApZ,YAAN,W,gGAC0B,OAAtB,EAAAN,KAAsB,GAAMA,KAAKyZ,aAAajb,IAAa,EAAAwT,iBAAiBI,oB,cAA5E,EAAKwH,cAAiB,SACtB5Z,KAAK6Z,O,YAGT,sBAAI,uBAAQ,C,IAAZ,WACI,OAAON,EAAQvZ,KAAKqC,O,gCAGd,YAAAwX,KAAV,WACI,OAAQ7Z,KAAKuG,OAAOpE,MAChB,KAAK,EAAAyG,WAAWC,MACZ7I,KAAKqC,KAAO,WACZrC,KAAK8Z,eACL,MACJ,KAAK,EAAAlR,WAAWoB,WACZhK,KAAKqC,KAAO,mBACZ,MACJ,KAAK,EAAAuG,WAAWmR,KACZ/Z,KAAKqC,KAAO,iBACZ,MACJ,KAAK,EAAAuG,WAAWoR,SACZha,KAAKqC,KAAO,iBAOhB,YAAAyX,aAAR,WACI,GAAI9Z,KAAKuG,OAAOmC,MAAM7D,IAAK,CACvB,IAAIoV,EAAcja,KAAKuG,OAAOmC,MAAM7D,IAChCqV,GAAY,EAehB,GAb6C,IAAzCD,EAAY7U,QAAQ,kBACpBpF,KAAKqC,KAAO,aACZrC,KAAKma,MAAQ,MAC+B,IAArCF,EAAY7U,QAAQ,cAC3BpF,KAAKqC,KAAO,WACZrC,KAAKma,MAAQ,MACNna,KAAK4Z,eAAgD,IAAhCK,EAAY7U,QAAQ,QAAiB6U,EAAY7U,QAAQ,MAAQ,GAC7F6U,EAAc,UAAYA,EAC1BC,GAAY,GACLla,KAAK4Z,eACZM,EAA4C,IAAhCD,EAAY7U,QAAQ,SAAiB6U,EAAY7U,QAAQ,MAAQ,GAG7EpF,KAAK4Z,cAAgBM,EACrB,IACIla,KAAKma,MAAQna,KAAK0Z,SAAW,IAAM,EAAAjU,MAAMC,YAAYuU,GAAe,YACpEja,KAAKoa,cAAgB,sBACvB,MAAOvZ,UAGbb,KAAKma,MAAQ,M,iCA1EZE,GAAa,gF,iCAAbA,EAAa,qRC9B1B,4BACI,mDACA,iDACJ,kCACA,kB,MAH0D,4DACnB,gE,+DDwBvC,GAIa,EAAAA,iB,maE9Bb,SAEA,S,OAEA,2B,sDACwC,O,+BAA3BC,I,oCAAAA,EAAkB,QAAlBA,EAAkB,O,EAD/B,CACwC,sBAA3B,EAAAA,qB,8BAAAA,I,8ECHb,mBAAsB,EAAAC,uB,8ECFtB,SAAYpQ,GACR,yBADJ,CAAY,EAAAA,iBAAA,EAAAA,eAAc,M,8ECA1B,SAAYqQ,GACR,qCACA,qBACA,iBACA,yBACA,iBACA,2BACA,yCAPJ,CAAY,EAAAA,wBAAA,EAAAA,sBAAqB,M,8ECAjC,mBAAsB,EAAAC,e,+8CCAtB,SAMA,SAKA,GAHA,KACA,KAEA,Q,uHCJI,4BACI,uDAC4C,mGAAoB,oFADhE,iBAEA,wDACI,mDAA0D,Y,mBAAwB,iBAC1F,sC,iCAHQ,qEAAuC,oBAEmB,8E,mDAElE,6BACI,wDACI,mGAAoB,oFADxB,iBAEA,wDACI,mDAAsD,sBAAM,iBACpE,sC,iCAJkF,gEAAkC,qB,mDAKpH,6BACI,wDACI,mGAAoB,oFADxB,iBAEA,wDACI,mDAAsD,Y,mBAA0B,iBACxF,sC,iCAJkF,gEAAkC,oBAGtD,gF,mDAvBlE,4BACI,iDACI,uDACI,kGAAoB,mFADxB,iBAEA,uDACI,kDAA2D,Y,oBAAuB,iBAC1F,uCACA,sDAMA,qDAMA,sDAMJ,mC,gCAvBoF,8DAAgC,oBAG7C,6EAEpB,gDAML,kDAMA,mD,sBAO9C,6BACI,kDACI,sDACI,4DAAwC,Y,mBAAmB,iBAC3D,sDACJ,2CACA,wDACI,uDAEJ,2CACA,wDACI,8DAAwC,a,oBAAuB,iBAC/D,uDACJ,2CACA,wDACI,4DACI,kEACI,a,oBACJ,iBACA,8D,oBAEI,6DACJ,mDACJ,+CACA,uDACJ,2CACJ,uCACJ,6C,MAxBoD,gEAQA,sEAMhC,uHAGgB,yF,mDAQpC,6BACI,0D,mBACI,Y,sCACJ,iBACA,kDACI,uDACI,8DAA4B,a,oBAA0B,iBACtD,8DACI,+GADJ,iBAEJ,2CACA,wDACI,8DAA4B,a,oBAA0B,iBACtD,8DACI,+GADJ,iBAEJ,2CACA,wDACI,8DAAiC,a,oBAA8B,iBAC/D,8DACI,oHADJ,iBAEJ,2CACA,wDACI,8DAAiC,a,oBAA4B,iBAC7D,+DACI,oHACA,mEAAiB,a,oBAAyB,iBAC1C,mEAAwB,a,oBAAmC,iBAC3D,mEAA2B,a,oBAAsC,iBACrE,+CACJ,2CACJ,uCACJ,4C,gCA7BgC,wFACxB,wKAIgC,yEAExB,6DAGwB,yEAExB,6DAG6B,6EAE7B,kEAG6B,2EAE7B,kEACiB,+EACO,kFACG,sF,sBAK3C,6BACI,kDACI,iDACA,wDAA0B,Y,mBAA8B,iBAC5D,sCACJ,6C,MAFkC,4E,sBAGlC,6BACI,0DACI,Y,mBACJ,iBACJ,4C,MAFQ,sGDhFR,IAAMC,EAAqB,CACvBC,KAAM,CACFC,MAAO,UACPC,WAAY,wHAEZC,SAAU,OACVC,cAAe,eAEnBC,QAAS,CACLJ,MAAO,YAITK,EAAuB,CACzBpJ,MAAO,aACPqJ,MAAO,WACPF,QAAS,cAGb,aAgCI,WAAoBG,EAAoDC,GAAxE,WAAoB,KAAAD,uBAAoD,KAAAC,aA3B/D,KAAAC,aAAc,EACd,KAAAC,aAAc,EACd,KAAAC,OAAS,EAAAC,kBAAkBzB,KAC3B,KAAA0B,UAAW,EACX,KAAAC,YAAa,EACb,KAAAC,YAAa,EAEtB,KAAAC,KAAY,CACRC,eAAgB,KAChBC,eAAgB,KAChBC,oBAAqB,KACrBC,oBAAqB,GACrBC,SAAU,MACVC,QAAS,MAGb,KAAAC,kBAAoB,EAAAX,kBAGZ,KAAAY,WAAkB,KAElB,KAAAC,OAAc,KACd,KAAAC,eAAsB,KACtB,KAAAC,wBAA+B,KAC/B,KAAAC,wBAA+B,KAC/B,KAAAC,qBAA4B,KAGhCzc,KAAK0c,aAAejS,OAAO8F,SAASC,cAAc,UAClDxQ,KAAK0c,aAAaC,IAAM,4BACxB3c,KAAK0c,aAAaE,OAAQ,EAC1B5c,KAAK0c,aAAaG,OAAS,WACvB,EAAKR,OAAU5R,OAAeqS,OAAO,EAAK3B,qBAAqB4B,QAC3D,EAAAC,aAAaC,cAAgB,EAAAD,aAAaE,eAC9C,EAAKZ,eAAiB,EAAKD,OAAOc,WAClC,EAAKC,oBAETpd,KAAKqd,SAAW5S,OAAO8F,SAASC,cAAc,UAC9CxQ,KAAKqd,SAASV,IAAM,oBACpB3c,KAAKqd,SAAST,OAAQ,E,OAG1B,YAAA1b,SAAA,WACSlB,KAAKsb,cACNtb,KAAK0b,WAAa1b,KAAKub,SAAW,EAAAC,kBAAkB8B,OACpDtd,KAAKyb,SAAWzb,KAAKub,SAAW,EAAAC,kBAAkB+B,YAClDvd,KAAK2b,WAAa3b,KAAKub,SAAW,EAAAC,kBAAkBgC,QAExD/S,OAAO8F,SAASkN,KAAKC,YAAY1d,KAAK0c,cACjC1c,KAAK0b,YACNjR,OAAO8F,SAASkN,KAAKC,YAAY1d,KAAKqd,WAI9C,YAAA3H,YAAA,WACIjL,OAAO8F,SAASkN,KAAKE,YAAY3d,KAAK0c,cACtCjS,OAAOmT,YAAW,WACd5V,MAAMC,KAAKwC,OAAO8F,SAASrI,iBAAiB,WAAW9D,SAAQ,SAAAhE,GAC3D,GAAc,MAAVA,EAAGuc,KAAevc,EAAGuc,IAAIvX,QAAQ,WAAa,EAC9C,IACIqF,OAAO8F,SAASsN,KAAKF,YAAYvd,GACnC,gBAGX,KACEJ,KAAK0b,aACNjR,OAAO8F,SAASkN,KAAKE,YAAY3d,KAAKqd,UACtC5S,OAAOmT,YAAW,WACd5V,MAAMC,KAAKwC,OAAO8F,SAASkN,KAAKvV,iBAAiB,WAAW9D,SAAQ,SAAAhE,GAChE,GAAc,MAAVA,EAAGuc,KAAevc,EAAGuc,IAAIvX,QAAQ,WAAa,EAC9C,IACIqF,OAAO8F,SAASkN,KAAKE,YAAYvd,GACnC,cAGV,IAAM0d,EAAerT,OAAO8F,SAASkN,KAAKla,cAAc,gCACxD,GAAoB,MAAhBua,EACA,IACIrT,OAAO8F,SAASkN,KAAKE,YAAYG,GACnC,aAEP,OAIX,YAAAC,aAAA,sBACI/d,KAAKoc,WAAa,KAEdpc,KAAKub,SAAW,EAAAC,kBAAkB8B,OAClC7S,OAAOmT,YAAW,WACbnT,OAAeuT,UAAUC,OAAOC,OAAO,CACpCC,cAAe,EAAKhD,qBAAqB4B,QACrC,EAAAC,aAAaoB,aAAe,EAAApB,aAAaqB,gBAC7CnI,UAAW,uBACXoI,sBAAuB,CAAC,UACxBC,OAAQ,CACJC,KAAM,QACNC,YAAa,CACTC,MAAO,MACPC,KAAM,SACNC,MAAO,OACPhE,MAAO,WAGhB,SAACiE,EAAgBzI,GACC,MAAbyI,EAKJ,EAAKzC,WAAahG,EAHd0I,QAAQC,MAAMF,QAKvB,KAEH7e,KAAKod,oBAIb,YAAA4B,mBAAA,sBACI,OAAO,IAAI9J,SAAQ,SAACC,EAAS8J,GACrB,EAAK1D,SAAW,EAAAC,kBAAkBgC,OAClCrI,EAAQ,CAAC,KAAM,EAAKoG,SACb,EAAKA,SAAW,EAAAC,kBAAkB8B,OACzC,EAAKlB,WAAW8C,uBAAuBze,MAAK,SAAC0e,GACzChK,EAAQ,CAACgK,EAAQC,MAAO,EAAK7D,YAC9B8D,OAAM,SAACC,GACNL,EAAOK,EAAI/a,YAER,EAAKgX,SAAW,EAAAC,kBAAkBzB,MAAQ,EAAKwB,SAAW,EAAAC,kBAAkB+B,cAC/E,EAAKhC,SAAW,EAAAC,kBAAkBzB,KAClC,EAAKqB,WAAWmE,mBAAmB9e,MAAK,SAAA+e,GACpC,SAAKnD,OAAOoD,gBAAgBD,EAAc,EAAKjD,4BAC9C9b,MAAK,SAACuD,GACCA,EAAO+a,MACPE,EAAOjb,EAAO+a,MAAMxa,SACbP,EAAO0b,aAA6C,cAA9B1b,EAAO0b,YAAYC,OAChDxK,EAAQ,CAACnR,EAAO0b,YAAYE,eAAgB,EAAKrE,SAEjD0D,OAIZ,EAAK5C,OAAOwD,YAAY,eAAgB,EAAKjE,MAAMnb,MAAK,SAACuD,GACjDA,EAAO+a,MACPE,EAAOjb,EAAO+a,MAAMxa,SACbP,EAAO8b,OAA4B,MAAnB9b,EAAO8b,MAAMlgB,GACpCuV,EAAQ,CAACnR,EAAO8b,MAAMlgB,GAAI,EAAK2b,SAE/B0D,YAQxB,YAAAc,wBAAA,SAAwBP,EAAsBQ,GAA9C,WACI,OAAO,IAAI9K,SAAQ,SAACC,EAAS8J,GACzB,IAAI,EAAK5D,aAA+C,MAAhC,EAAKkB,wBAA7B,CAOA,OAHgC,EAAKlB,YACjC,EAAKgB,OAAOoD,gBAAgBD,EAAc,EAAKjD,yBAC/C,EAAKF,OAAOoD,gBAAgBD,IACL/e,MAAK,SAAOuD,GAAW,qC,yDAC1CA,EAAO+a,OACPE,EAAOjb,EAAO+a,MAAMxa,S,OADpB,M,cAEOP,EAAOic,eAAiD,cAAhCjc,EAAOic,cAAcN,OAC7B,MAAnBK,EAAA,MACA,GAAMA,KAFH,M,OAEH,S,wBAEJ7K,I,aAEA8J,I,qCAfJA,QAqBJ,YAAA7B,iBAAR,sBACI3S,OAAOmT,YAAW,WACV,EAAKvC,aAAe,EAAKE,SAAW,EAAAC,kBAAkBzB,OAClB,MAAhC,EAAKwC,0BACL,EAAKA,wBAA0B,EAAKD,eAAe4B,OAAO,aAAc,CACpEgC,MAAOxF,EACPyF,QAASlF,EACTmF,YAAa,MAGe,MAAhC,EAAK5D,0BACL,EAAKA,wBAA0B,EAAKF,eAAe4B,OAAO,aAAc,CACpEgC,MAAOxF,EACPyF,QAASlF,KAGgB,MAA7B,EAAKwB,uBACL,EAAKA,qBAAuB,EAAKH,eAAe4B,OAAO,UAAW,CAC9DgC,MAAOxF,EACPyF,QAASlF,EACTmF,YAAa,MAGrB,EAAK7D,wBAAwB8D,MAAM,+BACnC,EAAK7D,wBAAwB6D,MAAM,+BACnC,EAAK5D,qBAAqB4D,MAAM,+BAErC,K,iCAhNEC,GAAgB,gF,iCAAhBA,EAAgB,w2FCpC7B,+BA0BA,0DA4BA,0DA+BA,yDAMA,wDAKA,kB,MAhG0B,kDA0BZ,uFA4BA,8FA+BA,yFAMA,2F,+SD3Dd,GAIa,EAAAA,oB,uFEpCb,SAAYtX,GACR,mBACA,uBACA,yBAHJ,CAAY,EAAAA,YAAA,EAAAA,UAAS,M,8ECKrB,MAKI,SAAYzB,GAJZ,KAAA3H,GAAa,KACb,KAAA8H,KAAe,KACf,KAAA6Y,aAAqB,KAGZhZ,IAILvH,KAAKJ,GAAK2H,EAAE3H,GACZI,KAAKugB,aAAehZ,EAAEgZ,eAXjB,EAAA7W,c,w9CCLb,KAMA,MAEA,OACA,MATA,IAWA,Q,iFAEA,aAkBI,WAAmB8W,EAAiCC,EACxChH,GADO,KAAA+G,YAAiC,KAAAC,wBACxC,KAAAhH,eAXH,KAAAkF,KAAO,GACP,KAAA+B,UAAY,EACZ,KAAAC,UAAY,UACZ,KAAA7F,SAAW,GACX,KAAA8F,WAAa,IACb,KAAAC,SAAU,EACV,KAAAC,QAAS,E,OAOlB,YAAA5f,SAAA,WACSlB,KAAK6gB,SACN7gB,KAAK+gB,YAIb,YAAAzgB,YAAA,WACQN,KAAK6gB,SACL7gB,KAAK+gB,YAIC,YAAAA,SAAd,W,gHAC4B,SAAM/gB,KAAKyZ,aAAajb,IAAa,oB,cAArC,UACa,MAAdwB,KAAKghB,MACN,GAAMhhB,KAAKygB,sBAAsBQ,KAAKjhB,KAAKghB,MAAMhf,cAAc+B,OAAQ,QADzF,M,cACMmd,EAAY,SACZD,EAAO,EAAAxb,MAAM+H,gBAAgB0T,GAAWlf,cAC9ChC,KAAK2c,IAAM,mCAAqCsE,EAAO,MAAQjhB,KAAK2e,KAAO,gB,aAEvEwC,EAAgB,KACdC,EAAYphB,KAAKmD,KAAKpB,cAExB/B,KAAK0gB,UAAY,IACjBS,EAAQnhB,KAAKqhB,gBAAgBD,EAAWphB,KAAK0gB,YAEpC,MAATS,IACAA,EAAQC,EAAUxa,OAAO,EAAG5G,KAAK0gB,YAG/BY,EAAUthB,KAAKuhB,YAAYJ,GAC3BvG,EAAQ5a,KAAKwhB,cAAcJ,IAC3BK,EAAMzhB,KAAK0hB,OAAO1hB,KAAK2e,KAAM/D,IAC/B8C,YAAY4D,GACVK,EAAOlX,OAAO8F,SAASC,cAAc,OAAOkN,YAAY+D,GAAKG,UAC7DC,EAAUpX,OAAOqC,KAAKX,SAASC,mBAAmBuV,KACxD3hB,KAAK2c,IAAM,6BAA+BkF,E,mCAI1C,YAAAL,cAAR,SAAsB3b,GAElB,IADA,IAAIob,EAAO,EACFhjB,EAAI,EAAGA,EAAI4H,EAAI1H,OAAQF,IAE5BgjB,EAAOpb,EAAI+F,WAAW3N,KAAOgjB,GAAQ,GAAKA,GAE9C,IAAIrG,EAAQ,IACZ,IAAS3c,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAGxB2c,IAAU,MADKqG,GAAa,EAAJhjB,EAAU,KACXwO,SAAS,KAAK7F,QAAQ,GAEjD,OAAOgU,GAGH,YAAAyG,gBAAR,SAAwBle,EAAcyU,GAClC,IAAMnR,EAAQtD,EAAK6C,MAAM,KACzB,GAAIS,EAAMtI,OAAS,EAAG,CAElB,IADA,IAAI2jB,EAAO,GACF7jB,EAAI,EAAGA,EAAI2Z,EAAO3Z,IACvB6jB,GAAQrb,EAAMxI,GAAG2I,OAAO,EAAG,GAE/B,OAAOkb,EAEX,OAAO,MAGH,YAAAJ,OAAR,SAAe/C,EAAc/D,GACzB,IAAMmH,EAAStX,OAAO8F,SAASC,cAAc,OAQ7C,OAPAuR,EAAO3gB,aAAa,QAAS,8BAC7B2gB,EAAO3gB,aAAa,iBAAkB,QACtC2gB,EAAO3gB,aAAa,QAASud,EAAKlS,YAClCsV,EAAO3gB,aAAa,SAAUud,EAAKlS,YACnCsV,EAAO7B,MAAM8B,gBAAkBpH,EAC/BmH,EAAO7B,MAAM+B,MAAQtD,EAAO,KAC5BoD,EAAO7B,MAAMgC,OAASvD,EAAO,KACtBoD,GAGH,YAAAR,YAAR,SAAoBY,GAChB,IAAMC,EAAU3X,OAAO8F,SAASC,cAAc,QAY9C,OAXA4R,EAAQhhB,aAAa,cAAe,UACpCghB,EAAQhhB,aAAa,IAAK,OAC1BghB,EAAQhhB,aAAa,IAAK,OAC1BghB,EAAQhhB,aAAa,KAAM,UAC3BghB,EAAQhhB,aAAa,iBAAkB,QACvCghB,EAAQhhB,aAAa,OAAQpB,KAAK2gB,WAClCyB,EAAQhhB,aAAa,cAAe,kHAEpCghB,EAAQC,YAAcF,EACtBC,EAAQlC,MAAMU,WAAa5gB,KAAK4gB,WAAWnU,WAC3C2V,EAAQlC,MAAMpF,SAAW9a,KAAK8a,SAAW,KAClCsH,G,iCA3GFE,GAAe,uH,iCAAfA,EAAe,sT,mPAL5B,GAKa,EAAAA,mB,8ZChBb,aAKA,cAQI,WAAYC,EAAsBnO,QAAA,IAAAA,OAAA,GAAlC,MACI,cAAO,KACP,OAAW,MAAPmO,GAIJ,EAAKrO,iBAAiB,EAAMqO,EAAK,CAC7B3iB,GAAI,KACJ2C,eAAgB,KAChBmF,KAAM,KACN8a,WAAY,KACZC,SAAU,KACVC,cAAe,MAChBtO,EAAkB,CAAC,KAAM,iBAAkB,aAAc,WAAY,kB,EAQhF,OA7BgC,OAwB5B,YAAAiB,QAAA,WACI,OAAOrV,KAAK2U,WAAW,IAAI,EAAAlN,eAAezH,MAAO,CAC7C0H,KAAM,MACP1H,KAAKuC,iBAEhB,EA7BA,CAFA,MAEgC,SAAnB,EAAAogB,c,8ECPb,SAAYC,GACR,yDACA,uCACA,6CACA,6BACA,+BACA,6CACA,iCAPJ,CAAY,EAAAA,aAAA,EAAAA,WAAU,M,68CCAtB,WAOA,GAFA,KACA,KACA,QACA,S,+FCmQI,4BACI,uDACI,6DACI,gHADJ,iBAEA,6DAA0D,Y,mBAAuB,iBACrF,0CACJ,uC,gCAHY,8DACsD,qE,mDAItE,4BACI,iDACI,qDACI,6DAAmB,Y,mBAAwB,iBAC3C,8DAAgE,yGAAhE,iBACJ,2CACJ,uCACJ,mC,gCAJ+B,qEAC6C,wD,mDAI5E,4BACI,iDACI,qDACI,6DAA0B,Y,mBAAqB,iBAC/C,8DACI,yGADJ,iBAEJ,2CACJ,uCACA,mDACI,uDACI,+DAA0B,a,oBAAqB,iBAC/C,+DACI,yGADJ,iBAEJ,2CACJ,uCACA,mDACI,uDACI,+DAAyB,a,oBAAqB,iBAC9C,+DACI,wGADJ,iBAEJ,2CACJ,uCACA,mDACI,uDACI,+DAA0B,a,oBAA0B,iBACpD,+DACI,yGADJ,iBAEJ,2CACJ,uCACJ,mC,gCA1BsC,kEAEtB,uDAKsB,oEAEtB,uDAKqB,oEAErB,sDAKsB,yEAEtB,wDD1ShB,iBAiCI,WAAoBxH,EAAgCyH,GAAhC,KAAAzH,aAAgC,KAAAyH,QA5B1C,KAAAC,iBAAmB,IAAI,EAAAC,aAEjC,KAAApiB,SAAmB,EAEnB,KAAAqiB,QAAe,CACXC,MAAO,KACPC,MAAO,KACPC,MAAO,KACPC,KAAM,KACNC,MAAO,KACPC,WAAY,KACZpH,QAAS,KACTqH,cAAc,GAKV,KAAAC,SAAgB,CACpBP,MAAO,KACPC,MAAO,KACPC,MAAO,KACPC,KAAM,KACNC,MAAO,KACPC,WAAY,KACZpH,QAAS,KACTqH,cAAc,G,OAKZ,YAAAriB,SAAN,W,uGAqCqB,OApCjBlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,2DAClD1jB,KAAKuC,eAAiBmhB,EAAOnhB,gBACzBvC,KAAKuC,eAAL,Y,iBAEoB,O,sBAAA,GAAMvC,KAAKob,WAAWwI,uBAAuB5jB,KAAKuC,iB,cAA5DygB,EAAU,YAEZhjB,KAAKgjB,QAAQC,MAAQD,EAAQC,MAC7BjjB,KAAKgjB,QAAQK,MAAQL,EAAQK,MAC7BrjB,KAAKgjB,QAAQE,MAAQF,EAAQE,MAC7BljB,KAAKgjB,QAAQG,MAAQH,EAAQG,MAC7BnjB,KAAKgjB,QAAQI,KAAOJ,EAAQI,KAC5BpjB,KAAKgjB,QAAQK,MAAQL,EAAQK,MAC7BrjB,KAAKgjB,QAAQM,WAAaN,EAAQM,WAClCtjB,KAAKgjB,QAAQ9G,QAAU8G,EAAQ9G,SAAW,KAC1Clc,KAAKgjB,QAAQO,eAAwC,OAAzBvjB,KAAKgjB,QAAQ9G,UACnC8G,EAAQC,QACLD,EAAQE,QACRF,EAAQG,QACRH,EAAQI,OACRJ,EAAQK,Q,6DAIT,SAAMrjB,KAAKob,WAAWyI,c,QAAhCb,EAAU,YAEZhjB,KAAKgjB,QAAQM,WAAaN,EAAQM,WAClCtjB,KAAKgjB,QAAQ9G,QAAU8G,EAAQ9G,SAAW,M,wBAGlDlc,KAAKwjB,SAAW1kB,OAAO8E,OAAO,GAAI5D,KAAKgjB,SAEV,OAAzBhjB,KAAKgjB,QAAQ9G,SACblc,KAAK8iB,iBAAiBpM,O,cAIb,GAAM1W,KAAKob,WAAW0I,e,cAAjCC,EAAW,SACjB/jB,KAAK+jB,SAAWA,EAAS5gB,KACzBnD,KAAKW,SAAU,E,YAGnB,sBAAI,sBAAO,C,IAAX,e,EAAA,OACI,GAAqB,MAAjBX,KAAK+jB,SAAkB,CACvB,IAAMC,EAAehkB,KAAK+jB,SAASlN,MAAK,SAAApJ,GACpC,OAAAA,EAAEyO,UAAY,EAAK8G,QAAQ9G,SAC3BzO,EAAE6V,aAAe,EAAKN,QAAQM,cAElC,OAAyB,QAAzB,EAAOU,aAAY,EAAZA,EAAcC,YAAI,QAAI,O,gCAIrC,YAAAC,kBAAA,WAEQ,IAWMC,EAZV,OAAInkB,KAAKuC,iBACC4hB,EAAU,IAAI,EAAAC,kCACZnB,MAAQjjB,KAAKgjB,QAAQC,MAC7BkB,EAAQd,MAAQrjB,KAAKgjB,QAAQK,MAC7Bc,EAAQjB,MAAQljB,KAAKgjB,QAAQE,MAC7BiB,EAAQhB,MAAQnjB,KAAKgjB,QAAQG,MAC7BgB,EAAQf,KAAOpjB,KAAKgjB,QAAQI,KAC5Be,EAAQd,MAAQrjB,KAAKgjB,QAAQK,MAC7Bc,EAAQb,WAAatjB,KAAKgjB,QAAQM,WAClCa,EAAQjI,QAAUlc,KAAKgjB,QAAQ9G,QACxBiI,KAEDA,EAAU,IAAI,EAAAE,sBACZf,WAAatjB,KAAKgjB,QAAQM,WAClCa,EAAQjI,QAAUlc,KAAKgjB,QAAQ9G,QACxBiI,IAIf,YAAAG,cAAA,WACI,IAAKtkB,KAAKukB,aACN,OAAO,IAAIrP,SAAQ,SAAAC,GAAaA,OAEpC,IAAMgP,EAAUnkB,KAAKkkB,oBACrB,OAAOlkB,KAAKuC,eAAiBvC,KAAKob,WAAWoJ,uBAAuBxkB,KAAKuC,eACrE4hB,GAA+CnkB,KAAKob,WAAWqJ,WAAWN,IAGlF,YAAAO,cAAA,WACiC,OAAzB1kB,KAAKgjB,QAAQ9G,UACblc,KAAKgjB,QAAQO,cAAe,EAC5BvjB,KAAKgjB,QAAQC,MAAQ,KACrBjjB,KAAKgjB,QAAQE,MAAQ,KACrBljB,KAAKgjB,QAAQG,MAAQ,KACrBnjB,KAAKgjB,QAAQI,KAAO,KACpBpjB,KAAKgjB,QAAQK,MAAQ,MAEzBrjB,KAAK8iB,iBAAiBpM,QAGlB,YAAA6N,WAAR,WACI,IAAK,IAAM5lB,KAAOqB,KAAKgjB,QACnB,GAAIhjB,KAAKwjB,SAASxkB,eAAeL,IAAQqB,KAAKwjB,SAAS7kB,KAASqB,KAAKgjB,QAAQrkB,GACzE,OAAO,EAGf,OAAO,G,iCAlIFgmB,GAAgB,0E,iCAAhBA,EAAgB,irKCf7B,4BACI,iDACI,qDACI,2DAA4B,Y,mBAAoB,iBAChD,6DAAiD,wEAA6B,4BACzC,EAAAD,mBACjC,kEAAiB,4BAAY,iBAC7B,kEAAmB,6BAAa,iBAChC,kEAAmB,qBAAK,iBACxB,kEAAmB,sBAAM,iBACzB,kEAAmB,uBAAO,iBAC1B,mEAAmB,sBAAM,iBACzB,mEAAmB,8BAAc,iBACjC,mEAAmB,yBAAS,iBAC5B,mEAAmB,qBAAK,iBACxB,8DACA,mEAAmB,2BAAW,iBAC9B,mEAAmB,6BAAa,iBAChC,mEAAmB,uBAAO,iBAC1B,mEAAmB,uBAAO,iBAC1B,mEAAmB,8BAAc,iBACjC,mEAAmB,uBAAO,iBAC1B,mEAAmB,sBAAM,iBACzB,mEAAmB,wBAAQ,iBAC3B,mEAAmB,0BAAU,iBAC7B,mEAAmB,mCAAmB,iBACtC,mEAAmB,yBAAS,iBAC5B,mEAAmB,uBAAO,iBAC1B,mEAAmB,qBAAK,iBACxB,mEAAmB,uBAAO,iBAC1B,mEAAmB,0BAAU,iBAC7B,mEAAmB,uBAAO,iBAC1B,mEAAmB,uBAAO,iBAC1B,mEAAmB,0BAAU,iBAC7B,mEAAmB,wBAAQ,iBAC3B,mEAAmB,uBAAO,iBAC1B,qEAAmB,wBAAO,iBAC1B,qEAAmB,uBAAM,iBACzB,qEAAmB,sBAAK,iBACxB,qEAAmB,wBAAO,iBAC1B,qEAAmB,uBAAM,iBACzB,qEAAmB,gDAA+B,iBAClD,qEAAmB,iDAAgC,iBACnD,qEAAmB,uCAAsB,iBACzC,qEAAmB,yBAAQ,iBAC3B,qEAAmB,8BAAa,iBAChC,qEAAmB,uBAAM,iBACzB,qEAAmB,+CAA8B,iBACjD,qEAAmB,kCAAiB,iBACpC,qEAAmB,yBAAQ,iBAC3B,qEAAmB,6BAAY,iBAC/B,qEAAmB,wBAAO,iBAC1B,qEAAmB,yBAAQ,iBAC3B,qEAAmB,yBAAQ,iBAC3B,qEAAmB,2BAAU,iBAC7B,qEAAmB,+BAAc,iBACjC,qEAAmB,yCAAwB,iBAC3C,qEAAmB,qBAAI,iBACvB,qEAAmB,sBAAK,iBACxB,qEAAmB,iCAAgB,iBACnC,qEAAmB,wCAAuB,iBAC1C,qEAAmB,yBAAQ,iBAC3B,qEAAmB,wBAAO,iBAC1B,qEAAmB,sBAAK,iBACxB,qEAAmB,sDAAqC,iBACxD,qEAAmB,6BAAY,iBAC/B,qEAAmB,2BAAU,iBAC7B,qEAAmB,8BAAa,iBAChC,qEAAmB,wBAAO,iBAC1B,qEAAmB,qBAAI,iBACvB,qEAAmB,wBAAO,iBAC1B,qEAAmB,uBAAM,iBACzB,qEAAmB,+BAAc,iBACjC,qEAAmB,wBAAO,iBAC1B,qEAAmB,yBAAQ,iBAC3B,qEAAmB,yBAAQ,iBAC3B,qEAAmB,mCAAkB,iBACrC,qEAAmB,wBAAO,iBAC1B,qEAAmB,sBAAK,iBACxB,qEAAmB,4BAAW,iBAC9B,qEAAmB,kCAAiB,iBACpC,qEAAmB,wBAAO,iBAC1B,qEAAmB,wBAAO,iBAC1B,qEAAmB,yBAAQ,iBAC3B,qEAAmB,4CAA2B,iBAC9C,qEAAmB,8BAAa,iBAChC,qEAAmB,qBAAI,iBACvB,qEAAmB,wBAAO,iBAC1B,qEAAmB,8BAAa,iBAChC,qEAAmB,iCAAgB,iBACnC,qEAAmB,4CAA2B,iBAC9C,qEAAmB,sBAAK,iBACxB,qEAAmB,uBAAM,iBACzB,qEAAmB,wBAAO,iBAC1B,qEAAmB,sBAAK,iBACxB,qEAAmB,0BAAS,iBAC5B,qEAAmB,uBAAM,iBACzB,qEAAmB,0BAAS,iBAC5B,qEAAmB,wBAAO,iBAC1B,qEAAmB,2BAAU,iBAC7B,qEAAmB,qBAAI,iBACvB,sEAAmB,0BAAS,iBAC5B,sEAAmB,yBAAQ,iBAC3B,sEAAmB,uBAAM,iBACzB,sEAAmB,8BAAa,iBAChC,sEAAmB,uBAAM,iBACzB,sEAAmB,sBAAK,iBACxB,sEAAmB,kDAAiC,iBACpD,sEAAmB,8CAA6B,iBAChD,sEAAmB,yBAAQ,iBAC3B,sEAAmB,0BAAS,iBAC5B,sEAAmB,wBAAO,iBAC1B,sEAAmB,wBAAO,iBAC1B,sEAAmB,0BAAS,iBAC5B,sEAAmB,0CAAyB,iBAC5C,sEAAmB,qBAAI,iBACvB,sEAAmB,wBAAO,iBAC1B,sEAAmB,4BAAW,iBAC9B,sEAAmB,uBAAM,iBACzB,sEAAmB,sBAAK,iBACxB,sEAAmB,wBAAO,iBAC1B,sEAAmB,sBAAK,iBACxB,sEAAmB,uBAAM,iBACzB,sEAAmB,uBAAM,iBACzB,sEAAmB,2BAAU,iBAC7B,sEAAmB,sBAAK,iBACxB,sEAAmB,yBAAQ,iBAC3B,sEAAmB,uDAAsC,iBACzD,sEAAmB,mCAAkB,iBACrC,sEAAmB,uBAAM,iBACzB,sEAAmB,2BAAU,iBAC7B,sEAAmB,iDAAgC,iBACnD,sEAAmB,uBAAM,iBACzB,sEAAmB,wBAAO,iBAC1B,sEAAmB,wBAAO,iBAC1B,sEAAmB,wBAAO,iBAC1B,sEAAmB,sBAAK,iBACxB,sEAAmB,8BAAa,iBAChC,sEAAmB,0BAAS,iBAC5B,sEAAmB,2BAAU,iBAC7B,sEAAmB,sBAAK,iBACxB,sEAAmB,2DAA0C,iBAC7D,sEAAmB,2BAAU,iBAC7B,sEAAmB,uBAAM,iBACzB,sEAAmB,yBAAQ,iBAC3B,sEAAmB,yBAAQ,iBAC3B,sEAAmB,qBAAI,iBACvB,sEAAmB,sBAAK,iBACxB,sEAAmB,iCAAgB,iBACnC,sEAAmB,2BAAU,iBAC7B,sEAAmB,2BAAU,iBAC7B,sEAAmB,0BAAS,iBAC5B,sEAAmB,wBAAO,iBAC1B,sEAAmB,uBAAM,iBACzB,sEAAmB,gDAA+B,iBAClD,sEAAmB,qCAAoB,iBACvC,sEAAmB,uBAAM,iBACzB,sEAAmB,yBAAQ,iBAC3B,sEAAmB,2BAAU,iBAC7B,sEAAmB,2BAAU,iBAC7B,sEAAmB,wBAAO,iBAC1B,sEAAmB,2BAAU,iBAC7B,sEAAmB,wBAAO,iBAC1B,sEAAmB,wBAAO,iBAC1B,sEAAmB,sBAAK,iBACxB,sEAAmB,sBAAK,iBACxB,sEAAmB,4BAAW,iBAC9B,sEAAmB,8BAAa,iBAChC,sEAAmB,4BAAW,iBAC9B,sEAAmB,0BAAS,iBAC5B,sEAAmB,sBAAK,iBACxB,sEAAmB,wBAAO,iBAC1B,sEAAmB,qBAAI,iBACvB,sEAAmB,+BAAc,iBACjC,sEAAmB,yCAAwB,iBAC3C,sEAAmB,uBAAM,iBACzB,sEAAmB,qBAAI,iBACvB,sEAAmB,yBAAQ,iBAC3B,sEAAmB,sBAAK,iBACxB,sEAAmB,gDAA+B,iBAClD,sEAAmB,uBAAM,iBACzB,sEAAmB,iCAAgB,iBACnC,sEAAmB,yBAAQ,iBAC3B,sEAAmB,qBAAI,iBACvB,sEAAmB,4BAAW,iBAC9B,sEAAmB,yBAAQ,iBAC3B,sEAAmB,uBAAM,iBACzB,sEAAmB,yBAAQ,iBAC3B,sEAAmB,4BAAW,iBAC9B,sEAAmB,sBAAK,iBACxB,sEAAmB,wBAAO,iBAC1B,sEAAmB,wBAAO,iBAC1B,sEAAmB,mCAAkB,iBACrC,sEAAmB,uBAAM,iBACzB,sEAAmB,iCAAgB,iBACnC,sEAAmB,6DAA4C,iBAC/D,sEAAmB,sCAAqB,iBACxC,sEAAmB,4BAAW,iBAC9B,sEAAmB,2CAA0B,iBAC7C,sEAAmB,0CAAyB,iBAC5C,sEAAmB,iDAAgC,iBACnD,sEAAmB,sBAAK,iBACxB,sEAAmB,2BAAU,iBAC7B,sEAAmB,sCAAqB,iBACxC,sEAAmB,6BAAY,iBAC/B,sEAAmB,wBAAO,iBAC1B,sEAAmB,uBAAM,iBACzB,sEAAmB,2BAAU,iBAC7B,sEAAmB,6BAAY,iBAC/B,sEAAmB,0BAAS,iBAC5B,sEAAmB,0CAAyB,iBAC5C,sEAAmB,yBAAQ,iBAC3B,sEAAmB,yBAAQ,iBAC3B,sEAAmB,gCAAe,iBAClC,sEAAmB,wBAAO,iBAC1B,sEAAmB,6BAAY,iBAC/B,sEAAmB,6DAA4C,iBAC/D,sEAAmB,4BAAW,iBAC9B,sEAAmB,sBAAK,iBACxB,sEAAmB,0BAAS,iBAC5B,sEAAmB,sBAAK,iBACxB,sEAAmB,yBAAQ,iBAC3B,sEAAmB,uCAAsB,iBACzC,sEAAmB,0BAAS,iBAC5B,sEAAmB,uBAAM,iBACzB,sEAAmB,4BAAW,iBAC9B,sEAAmB,qCAAoB,iBACvC,sEAAmB,uBAAM,iBACzB,sEAAmB,2BAAU,iBAC7B,sEAAmB,6CAA4B,iBAC/C,sEAAmB,yBAAQ,iBAC3B,sEAAmB,4BAAW,iBAC9B,sEAAmB,qBAAI,iBACvB,sEAAmB,wBAAO,iBAC1B,sEAAmB,sBAAK,iBACxB,sEAAmB,oCAAmB,iBACtC,sEAAmB,wBAAO,iBAC1B,sEAAmB,uBAAM,iBACzB,sEAAmB,6BAAY,iBAC/B,sEAAmB,yCAAwB,iBAC3C,sEAAmB,uBAAM,iBACzB,sEAAmB,uBAAM,iBACzB,sEAAmB,wBAAO,iBAC1B,sEAAmB,qCAAoB,iBACvC,sEAAmB,qDAAoC,iBACvD,sEAAmB,wBAAO,iBAC1B,sEAAmB,2BAAU,iBAC7B,sEAAmB,wBAAO,iBAC1B,sEAAmB,kDAAiC,iBACpD,sEAAmB,yBAAQ,iBAC3B,sEAAmB,wCAAuB,iBAC1C,sEAAmB,qCAAoB,iBACvC,sEAAmB,kCAAiB,iBACpC,sEAAmB,+BAAc,iBACjC,sEAAmB,sBAAK,iBACxB,sEAAmB,uBAAM,iBACzB,sEAAmB,yBAAQ,iBAC/B,gDACJ,4CACJ,wCACA,uDACI,yDACI,iEAA+B,c,qBAA0B,iBACzD,iEACI,2EADJ,iBAEJ,4CACJ,wCACA,0DAOJ,oCACA,sDAQA,uDA8BA,mB,MAtTwC,iEACqB,yDAkQlB,4EAE3B,4DAAgC,qCAGzB,+EAQN,6EAQA,+E,iPDhRjB,GAIa,EAAAC,oB,8EEfb,YAKA,QAEA,SACA,SAEA,QAGA,aAuBI,WAAY5W,GAtBZ,KAAAnO,GAAa,KACb,KAAA2C,eAAyB,KACzB,KAAAqiB,SAAmB,KACnB,KAAAld,KAAe,KACf,KAAAc,MAAgB,KAChB,KAAArG,KAAmB,KACnB,KAAAoG,UAAW,EACX,KAAAsc,qBAAsB,EACtB,KAAAC,MAAO,EACP,KAAAC,cAAe,EAEf,KAAArc,MAAQ,IAAI,EAAAC,UACZ,KAAAqc,SAAW,IAAI,EAAAC,aACf,KAAApe,KAAO,IAAI,EAAAkR,SACX,KAAA9N,WAAa,IAAI,EAAAC,eACjB,KAAAgb,YAAgC,KAChC,KAAAzc,OAAsB,KACtB,KAAA0c,gBAAyC,KACzC,KAAAC,cAA0B,KAC1B,KAAA7E,aAAqB,KACrB,KAAA8E,YAAoB,KAGXtX,IAIL/N,KAAKJ,GAAKmO,EAAEnO,GACZI,KAAKuC,eAAiBwL,EAAExL,eACxBvC,KAAK4kB,SAAW7W,EAAE6W,SAClB5kB,KAAKuI,SAAWwF,EAAExF,SAClBvI,KAAK6kB,oBAAsB9W,EAAE8W,oBAC7B7kB,KAAK8kB,KAAO/W,EAAE+W,KACd9kB,KAAK+kB,aAAehX,EAAEgX,aACtB/kB,KAAKmC,KAAO4L,EAAE5L,KACdnC,KAAKslB,UAAYvX,EAAEuX,UACnBtlB,KAAKolB,cAAgBrX,EAAEqX,cACvBplB,KAAKugB,aAAexS,EAAEwS,aACtBvgB,KAAKqlB,YAActX,EAAEsX,aAuD7B,OApDI,sBAAI,uBAAQ,C,IAAZ,WACI,OAAQrlB,KAAKmC,MACT,KAAK,EAAAyG,WAAWC,MACZ,OAAO7I,KAAK0I,MAAM6c,SACtB,KAAK,EAAA3c,WAAWoB,WACZ,OAAOhK,KAAKiK,WAAWsb,SAC3B,KAAK,EAAA3c,WAAWmR,KACZ,OAAO/Z,KAAK6G,KAAK0e,SACrB,KAAK,EAAA3c,WAAWoR,SACZ,OAAOha,KAAKglB,SAASO,SAK7B,OAAO,M,gCAGX,sBAAI,iCAAkB,C,IAAtB,WACI,OAAOvlB,KAAKmlB,iBAAmBnlB,KAAKmlB,gBAAgBhnB,OAAS,G,gCAGjE,sBAAI,6BAAc,C,IAAlB,WACI,OAAO6B,KAAKklB,aAAellB,KAAKklB,YAAY/mB,OAAS,G,gCAGzD,sBAAI,gCAAiB,C,IAArB,WACI,GAAI6B,KAAKwlB,eACL,IAAK,IAAIvnB,EAAI,EAAGA,EAAI+B,KAAKklB,YAAY/mB,OAAQF,IACzC,GAA+B,MAA3B+B,KAAKklB,YAAYjnB,GAAGU,IACpB,OAAO,EAInB,OAAO,G,gCAGX,sBAAI,wBAAS,C,IAAb,WACI,OAAOqB,KAAKyI,QAAUzI,KAAKyI,OAAOtK,OAAS,G,gCAG/C,sBAAI,0CAA2B,C,IAA/B,WACI,OAAI6B,KAAKmC,OAAS,EAAAyG,WAAWC,OAAuB,MAAd7I,KAAK0I,OAET,MAAvB1I,KAAK0I,MAAMoB,UAA4C,KAAxB9J,KAAK0I,MAAMoB,SAD1C,KAIJ9J,KAAK0I,MAAM+c,sB,gCAGtB,sBAAI,wBAAS,C,IAAb,WACI,OAA2B,MAApBzlB,KAAKqlB,a,gCAEpB,EA9FA,GAAa,EAAA/c,c,8ECTb,YAEA,aAwBI,WAAYrK,GAvBZ,KAAAgD,MAAgB,KAChB,KAAAykB,WAAqB,KACrB,KAAAC,SAAmB,KACnB,KAAAC,SAAmB,KACnB,KAAAC,SAAmB,KACnB,KAAAzC,KAAe,KACf,KAAAC,MAAgB,KAChB,KAAAC,WAAqB,KACrB,KAAApH,QAAkB,KAClB,KAAA4J,QAAkB,KAClB,KAAA9E,MAAgB,KAChB,KAAA+E,MAAgB,KAChB,KAAAC,IAAc,KACd,KAAAnc,SAAmB,KACnB,KAAAoc,eAAyB,KACzB,KAAAC,cAAwB,KAGhB,KAAAC,WAAqB,KACrB,KAAAC,UAAoB,KACpB,KAAA5O,UAAoB,KA4FhC,OArFI,sBAAI,wBAAS,C,IAAb,WACI,OAAOxX,KAAKmmB,Y,IAEhB,SAAcznB,GACVsB,KAAKmmB,WAAaznB,EAClBsB,KAAKwX,UAAY,M,gCAGrB,sBAAI,uBAAQ,C,IAAZ,WACI,OAAOxX,KAAKomB,W,IAEhB,SAAa1nB,GACTsB,KAAKomB,UAAY1nB,EACjBsB,KAAKwX,UAAY,M,gCAGrB,sBAAI,uBAAQ,C,IAAZ,WAcI,OAbsB,MAAlBxX,KAAKwX,WAAwC,MAAlBxX,KAAKqmB,WAAsC,MAAjBrmB,KAAKsmB,WAC1DtmB,KAAKwX,UAAY,GACK,MAAlBxX,KAAKqmB,YACLrmB,KAAKwX,UAAYxX,KAAKqmB,WAEL,MAAjBrmB,KAAKsmB,WACkB,KAAnBtmB,KAAKwX,YACLxX,KAAKwX,WAAa,KAEtBxX,KAAKwX,WAAaxX,KAAKsmB,WAIxBtmB,KAAKwX,W,gCAGhB,sBAAI,uBAAQ,C,IAAZ,WACI,GAAkB,MAAdxX,KAAKiB,OAAmC,MAAlBjB,KAAKqmB,WAAwC,MAAnBrmB,KAAK0lB,YAAuC,MAAjB1lB,KAAKsmB,SAAkB,CAClG,IAAI,EAAO,GAaX,OAZkB,MAAdtmB,KAAKiB,QACL,GAASjB,KAAKiB,MAAQ,KAEJ,MAAlBjB,KAAKqmB,YACL,GAASrmB,KAAKqmB,UAAY,KAEP,MAAnBrmB,KAAK0lB,aACL,GAAS1lB,KAAK0lB,WAAa,KAEV,MAAjB1lB,KAAKsmB,WACL,GAAQtmB,KAAKsmB,UAEV,EAAKviB,OAGhB,OAAO,M,gCAGX,sBAAI,0BAAW,C,IAAf,WACI,IAAIwiB,EAAUvmB,KAAK2lB,SAanB,OAZK,EAAAlgB,MAAMf,mBAAmB1E,KAAK4lB,YAC1B,EAAAngB,MAAMf,mBAAmB6hB,KAC1BA,GAAW,MAEfA,GAAWvmB,KAAK4lB,UAEf,EAAAngB,MAAMf,mBAAmB1E,KAAK6lB,YAC1B,EAAApgB,MAAMf,mBAAmB6hB,KAC1BA,GAAW,MAEfA,GAAWvmB,KAAK6lB,UAEbU,G,gCAGX,sBAAI,+BAAgB,C,IAApB,WACI,GAAiB,MAAbvmB,KAAKojB,MAA8B,MAAdpjB,KAAKqjB,OAAoC,MAAnBrjB,KAAKsjB,WAChD,OAAO,KAEX,IAAMF,EAAOpjB,KAAKojB,MAAQ,IACpBC,EAAQrjB,KAAKqjB,MACbC,EAAatjB,KAAKsjB,YAAc,IAClCkD,EAAepD,EAKnB,OAJK,EAAA3d,MAAMf,mBAAmB2e,KAC1BmD,GAAgB,KAAOnD,GAE3BmD,GAAgB,KAAOlD,G,gCAG/B,EAjHA,GAAa,EAAA2B,gB,wFCJb,MAOI,SAAYrkB,GACRZ,KAAKJ,GAAKgB,EAAShB,GACnBI,KAAKuC,eAAiB3B,EAAS2B,eAC/BvC,KAAK0H,KAAO9G,EAAS8G,KACrB1H,KAAKwiB,WAAa5hB,EAAS4hB,WAC3BxiB,KAAKyiB,SAAW7hB,EAAS6hB,UAZpB,EAAAgE,kB,8ECAb,aAKA,EAQI,SAAY1Y,GAPZ,KAAAnO,GAAa,KACb,KAAA2C,eAAyB,KACzB,KAAAmF,KAAe,KACf,KAAA8a,WAAqB,KACrB,KAAAC,SAAoB,KACpB,KAAAC,cAAyB,KAGhB3U,IAIL/N,KAAKJ,GAAKmO,EAAEnO,GACZI,KAAKuC,eAAiBwL,EAAExL,eACxBvC,KAAKwiB,WAAazU,EAAEyU,WAChBzU,aAAa,EAAA4U,aACb3iB,KAAKyiB,SAAW1U,EAAE0U,SAClBziB,KAAK0iB,cAAgB3U,EAAE2U,iBAlBtB,EAAAjb,kB,8ECPb,SAAYif,GACR,yBACA,2BACA,6BAHJ,CAAY,EAAAA,6BAAA,EAAAA,2BAA0B,M,8ECAtC,YAEA,SACA,SACA,SACA,SACA,SACA,SACA,SAIA,EAwBI,SAAY9lB,EAA2B+lB,EAAiBvB,GACpD,GAAgB,MAAZxkB,EAAJ,CAmBA,OAfAZ,KAAKJ,GAAKgB,EAAShB,GACnBI,KAAKuC,eAAiB3B,EAAS2B,eAC/BvC,KAAK4kB,SAAWhkB,EAASgkB,SACzB5kB,KAAK2mB,OAASA,EACd3mB,KAAK8kB,KAAOlkB,EAASkkB,KACrB9kB,KAAK+kB,aAAenkB,EAASmkB,aAC7B/kB,KAAK6kB,oBAAsBjkB,EAASikB,oBACpC7kB,KAAKuI,SAAW3H,EAAS2H,SACzBvI,KAAKugB,aAAe3f,EAAS2f,aAC7BvgB,KAAKmC,KAAOvB,EAASuB,KACrBnC,KAAK0H,KAAO9G,EAAS8G,KACrB1H,KAAKwI,MAAQ5H,EAAS4H,MACtBxI,KAAKolB,cAAiC,MAAjBA,EAAwBA,EAAgBxkB,EAASwkB,cACtEplB,KAAKqlB,YAAczkB,EAASykB,YAEpBrlB,KAAKmC,MACT,KAAK,EAAAyG,WAAWC,MACZ7I,KAAK0I,MAAQ,IAAI,EAAAke,UAAUhmB,EAAS8H,OACpC,MACJ,KAAK,EAAAE,WAAWoB,WACZhK,KAAKiK,WAAa,IAAI,EAAA4c,eAAejmB,EAASqJ,YAC9C,MACJ,KAAK,EAAArB,WAAWmR,KACZ/Z,KAAK6G,KAAO,IAAI,EAAAigB,SAASlmB,EAASiG,MAClC,MACJ,KAAK,EAAA+B,WAAWoR,SACZha,KAAKglB,SAAW,IAAI,EAAA+B,aAAanmB,EAASokB,UAM3B,MAAnBpkB,EAAS6H,SACTzI,KAAKyI,OAAS7H,EAAS6H,OAAOnB,KAAI,SAAAC,GAAK,WAAI,EAAAyf,UAAUzf,OAE7B,MAAxB3G,EAASskB,cACTllB,KAAKklB,YAActkB,EAASskB,YAAY5d,KAAI,SAAA+H,GAAK,WAAI,EAAA4X,eAAe5X,OAExC,MAA5BzO,EAASukB,kBACTnlB,KAAKmlB,gBAAkBvkB,EAASukB,gBAAgB7d,KAAI,SAAA4f,GAAM,WAAI,EAAAC,oBAAoBD,SApEjF,EAAAE,c,8ECTb,YAGA,aAOI,WAAYC,GANZ,KAAAxd,SAAmB,KACnB,KAAAC,SAAmB,KACnB,KAAA2b,qBAA8B,KAC9B,KAAA6B,KAAe,KACf,KAAAvd,KAAuB,KAGdsd,IAILrnB,KAAKylB,qBAAuB4B,EAAE5B,sBAoCtC,OAjCI,sBAAI,kBAAG,C,IAAP,WACI,OAAOzlB,KAAKunB,QAAUvnB,KAAK+J,KAAK,GAAGlF,IAAM,M,gCAG7C,sBAAI,6BAAc,C,IAAlB,WACI,OAAwB,MAAjB7E,KAAK8J,SAAmB,WAAa,M,gCAGhD,sBAAI,uBAAQ,C,IAAZ,WACI,OAAO9J,KAAK6J,U,gCAGhB,sBAAI,wBAAS,C,IAAb,WACI,OAAO7J,KAAKunB,SAAWvnB,KAAK+J,KAAKyd,MAAK,SAAAtiB,GAAK,OAAAA,EAAEuiB,c,gCAGjD,sBAAI,sBAAO,C,IAAX,WACI,OAAQ,EAAAhiB,MAAMf,mBAAmB1E,KAAKsnB,O,gCAG1C,sBAAI,wBAAS,C,IAAb,WACI,GAAItnB,KAAKunB,QAAS,CACd,IAAM1iB,EAAM7E,KAAK+J,KAAK8M,MAAK,SAAA3R,GAAK,OAAAA,EAAEuiB,aAClC,GAAW,MAAP5iB,EACA,OAAOA,EAAI6iB,UAGnB,OAAO,M,gCAGX,sBAAI,sBAAO,C,IAAX,WACI,OAAoB,MAAb1nB,KAAK+J,MAAgB/J,KAAK+J,KAAK5L,OAAS,G,gCAEvD,EAhDA,GAAa,EAAAwK,a,8ECNb,SAAYgf,GACR,mBACA,mBAFJ,CAAY,EAAAA,WAAA,EAAAA,SAAQ,M,y+CCApB,WASA,GAFA,KAEA,QAMA,GAJA,KACA,MACA,KAEA,O,oEAEA,aAcI,WAAoBvM,EAAgC1b,EACxCkoB,EAAwCzO,GADhC,KAAAiC,aAAgC,KAAA1b,cACxC,KAAAkoB,iBAAwC,KAAAzO,gBAR1C,KAAA0O,SAAW,IAAI,EAAA9E,a,OAUnB,YAAA+E,OAAN,W,sGACI,OAA2B,MAAvB9nB,KAAK+nB,gBAAkD,KAAxB/nB,KAAK+nB,gBACpC/nB,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,uBACvB,MAGEkkB,EAAU,IAAI,EAAAnQ,4BACpB,EAAAmQ,EAA6B,EAAAnkB,KACzB,GAAMA,KAAKmZ,cAAc8O,aAAajoB,KAAK+nB,eAAgB,Q,OAD/D,EAAQG,mBAAqB,EAAKA,mBAC9B,S,iBAGA,O,sBAAQloB,KAAKmC,MACT,KAAM,EACFnC,KAAKmoB,YAAcnoB,KAAKob,WAAWgN,oBAAoBjE,GACvD,MACJ,KAAK,EAAA3J,sBAAsB6N,IAC3B,KAAK,EAAA7N,sBAAsB8N,gBACI,MAAvBtoB,KAAKuC,eACLvC,KAAKmoB,YAAcnoB,KAAKob,WAAWmN,4BAA4BvoB,KAAKuC,eAAgB4hB,GAEpFnkB,KAAKmoB,YAAcnoB,KAAKob,WAAWoN,gBAAgBrE,GAEvD,MACJ,KAAK,EAAA3J,sBAAsBiO,MACvBzoB,KAAKmoB,YAAcnoB,KAAKob,WAAWsN,kBAAkBvE,GACrD,MACJ,KAAK,EAAA3J,sBAAsBmO,IACvB3oB,KAAKmoB,YAAcnoB,KAAKob,WAAWwN,gBAAgBzE,GACnD,MACJ,KAAK,EAAA3J,sBAAsBqO,cACvB7oB,KAAKmoB,YAAcnoB,KAAKob,WAAW0N,0BAA0B3E,GAC7D,MACJ,KAAK,EAAA3J,sBAAsBuO,QACvB/oB,KAAKmoB,YAAcnoB,KAAKob,WAAW4N,oBAAoB7E,GAI9C,SAAMnkB,KAAKmoB,a,cAAtBvnB,EAAW,SACjBZ,KAAK6nB,SAASnR,KAAK,CACf9V,SAAUA,EACVsnB,mBAAoBloB,KAAKkoB,qB,6FAtD5Be,GAAwB,kJ,iCAAxBA,EAAwB,0pB,GAAA,MCrBrC,+BAAY,2CAAY,EAAAnB,YACpB,iDACI,iDAAG,Y,mBAAiC,iBACpC,uDAA4B,a,oBAAuB,iBACnD,yDACI,uEADJ,iBAEJ,uCACA,mDACI,0DACI,oD,oBACA,0DAAM,a,oBAAqB,iBAC/B,2CACA,0DAA6E,a,oBAAkB,iBACnG,uCACJ,mCACA,mB,4BAfkC,2CAEvB,8EACyB,sEAExB,wDAGqD,kDACpB,+EAC3B,oEAEmE,mE,yMDKrF,GAIa,EAAAmB,4B,8EErBb,mBAAsB,EAAAC,iB,yxDCAtB,YAEA,SAEA,SAEA,SACA,SAEA,QACA,SACA,SACA,SACA,SACA,SAGA,cAuBI,WAAY3G,EAAkBnO,EAAmCkR,QAAnC,IAAAlR,OAAA,QAAmC,IAAAkR,MAAA,MAAjE,MACI,cAAO,KACP,GAAW,MAAP/C,E,SA2BJ,OAvBA,EAAKrO,iBAAiB,EAAMqO,EAAK,CAC7B3iB,GAAI,KACJ+mB,OAAQ,KACRpkB,eAAgB,KAChBqiB,SAAU,KACVld,KAAM,KACNc,MAAO,MACR4L,EAAkB,CAAC,KAAM,SAAU,iBAAkB,aAExD,EAAKjS,KAAOogB,EAAIpgB,KAChB,EAAKoG,SAAWga,EAAIha,SACpB,EAAKsc,oBAAsBtC,EAAIsC,oBAC/B,EAAKC,KAAOvC,EAAIuC,KACQ,MAApBvC,EAAIwC,aACJ,EAAKA,aAAexC,EAAIwC,aAExB,EAAKA,cAAe,EAExB,EAAKxE,aAAmC,MAApBgC,EAAIhC,aAAuB,IAAI4I,KAAK5G,EAAIhC,cAAgB,KAC5E,EAAK6E,cAAgB7C,EAAI6C,cACzB,EAAKE,UAAYA,EACjB,EAAKD,YAAiC,MAAnB9C,EAAI8C,YAAsB,IAAI8D,KAAK5G,EAAI8C,aAAe,KAEjE,EAAKljB,MACT,KAAK,EAAAyG,WAAWC,MACZ,EAAKH,MAAQ,IAAI,EAAAG,MAAM0Z,EAAI7Z,MAAO0L,GAClC,MACJ,KAAK,EAAAxL,WAAWoB,WACZ,EAAKC,WAAa,IAAI,EAAAD,WAAWuY,EAAItY,WAAYmK,GACjD,MACJ,KAAK,EAAAxL,WAAWmR,KACZ,EAAKlT,KAAO,IAAI,EAAAkT,KAAKwI,EAAI1b,KAAMuN,GAC/B,MACJ,KAAK,EAAAxL,WAAWoR,SACZ,EAAKgL,SAAW,IAAI,EAAAhL,SAASuI,EAAIyC,SAAU5Q,G,OAM5B,MAAnBmO,EAAI2C,YACJ,EAAKA,YAAc3C,EAAI2C,YAAY5d,KAAI,SAAA+H,GAAK,WAAI,EAAA+Z,WAAW/Z,EAAG+E,MAE9D,EAAK8Q,YAAc,KAGL,MAAd3C,EAAI9Z,OACJ,EAAKA,OAAS8Z,EAAI9Z,OAAOnB,KAAI,SAAAC,GAAK,WAAI,EAAA8hB,MAAM9hB,EAAG6M,MAE/C,EAAK3L,OAAS,KAGS,MAAvB8Z,EAAI4C,gBACJ,EAAKA,gBAAkB5C,EAAI4C,gBAAgB7d,KAAI,SAAA4f,GAAM,WAAI,EAAAoC,SAASpC,EAAI9S,MAEtE,EAAK+Q,gBAAkB,K,EAsHnC,OA1M4B,OAwFlB,YAAA9P,QAAN,SAAckU,G,gHAGV,OAFMC,EAAQ,IAAI,EAAAlhB,WAAWtI,MAE7B,GAAMA,KAAK2U,WAAW6U,EAAO,CACzB9hB,KAAM,KACNc,MAAO,MACRxI,KAAKuC,eAAgBgnB,I,cAHxB,SAKQvpB,KAAKmC,M,KACJ,EAAAyG,WAAWC,MAAX,Y,KAGA,EAAAD,WAAWoB,WAAX,Y,KAGA,EAAApB,WAAWmR,KAAX,Y,KAGA,EAAAnR,WAAWoR,SAAX,Y,oBARa,OAAd,EAAAwP,EAAc,GAAMxpB,KAAK0I,MAAM2M,QAAQrV,KAAKuC,eAAgBgnB,I,OAC5D,OADA,EAAM7gB,MAAQ,SACd,O,OAEmB,OAAnB,EAAA8gB,EAAmB,GAAMxpB,KAAKiK,WAAWoL,QAAQrV,KAAKuC,eAAgBgnB,I,OACtE,OADA,EAAMtf,WAAa,SACnB,O,OAEa,OAAb,EAAAuf,EAAa,GAAMxpB,KAAK6G,KAAKwO,QAAQrV,KAAKuC,eAAgBgnB,I,OAC1D,OADA,EAAM1iB,KAAO,SACb,O,OAEiB,OAAjB,EAAA2iB,EAAiB,GAAMxpB,KAAKglB,SAAS3P,QAAQrV,KAAKuC,eAAgBgnB,I,OAClE,OADA,EAAMvE,SAAW,SACjB,O,QAEA,a,eAGFnQ,EAAQ7U,KAAKuC,eAEK,MAApBvC,KAAKklB,aAAuBllB,KAAKklB,YAAY/mB,OAAS,GAChD,EAAqB,GAC3B,GAAM6B,KAAKklB,YAAYuE,QAAO,SAACC,EAASC,GACpC,OAAOD,EAAQjpB,MAAK,WAChB,OAAOkpB,EAAWtU,QAAQR,EAAO0U,MAClC9oB,MAAK,SAAAmpB,GACJ,EAAYzkB,KAAKykB,QAEtB1U,QAAQC,aARX,O,QAEA,SAOAqU,EAAMtE,YAAc,E,0BAGL,MAAfllB,KAAKyI,QAAkBzI,KAAKyI,OAAOtK,OAAS,GACtC,EAAgB,GACtB,GAAM6B,KAAKyI,OAAOghB,QAAO,SAACC,EAASvgB,GAC/B,OAAOugB,EAAQjpB,MAAK,WAChB,OAAO0I,EAAMkM,QAAQR,EAAO0U,MAC7B9oB,MAAK,SAAAopB,GACJ,EAAO1kB,KAAK0kB,QAEjB3U,QAAQC,aARX,O,QAEA,SAOAqU,EAAM/gB,OAAS,E,0BAGS,MAAxBzI,KAAKmlB,iBAA2BnlB,KAAKmlB,gBAAgBhnB,OAAS,GACxD,EAAyB,GAC/B,GAAM6B,KAAKmlB,gBAAgBsE,QAAO,SAACC,EAASxC,GACxC,OAAOwC,EAAQjpB,MAAK,WAChB,OAAOymB,EAAG7R,QAAQR,EAAO0U,MAC1B9oB,MAAK,SAAAqpB,GACJ,EAAgB3kB,KAAK2kB,QAE1B5U,QAAQC,aARX,O,QAEA,SAOAqU,EAAMrE,gBAAkB,E,mBAG5B,MAAO,CAAP,EAAOqE,WAGX,YAAAO,aAAA,SAAapD,GACT,IAAM5Y,EAAI,IAAI,EAAAqZ,WAmBd,OAlBArZ,EAAEnO,GAAKI,KAAKJ,GACZmO,EAAExL,eAAiBvC,KAAKuC,eACxBwL,EAAE6W,SAAW5kB,KAAK4kB,SAClB7W,EAAE4Y,OAAgC,MAAvB3mB,KAAKuC,eAAyBokB,EAAS,KAClD5Y,EAAE+W,KAAO9kB,KAAK8kB,KACd/W,EAAEgX,aAAe/kB,KAAK+kB,aACtBhX,EAAE8W,oBAAsB7kB,KAAK6kB,oBAC7B9W,EAAExF,SAAWvI,KAAKuI,SAClBwF,EAAEwS,aAAoC,MAArBvgB,KAAKugB,aAAuBvgB,KAAKugB,aAAayJ,cAAgB,KAC/Ejc,EAAE5L,KAAOnC,KAAKmC,KACd4L,EAAEqX,cAAgBplB,KAAKolB,cACvBrX,EAAEsX,YAAkC,MAApBrlB,KAAKqlB,YAAsBrlB,KAAKqlB,YAAY2E,cAAgB,KAE5EhqB,KAAKwU,eAAexU,KAAM+N,EAAG,CACzBrG,KAAM,KACNc,MAAO,OAGHuF,EAAE5L,MACN,KAAK,EAAAyG,WAAWC,MACZkF,EAAErF,MAAQ1I,KAAK0I,MAAMuhB,cACrB,MACJ,KAAK,EAAArhB,WAAWoB,WACZ+D,EAAE9D,WAAajK,KAAKiK,WAAWigB,mBAC/B,MACJ,KAAK,EAAAthB,WAAWmR,KACZhM,EAAElH,KAAO7G,KAAK6G,KAAKsjB,aACnB,MACJ,KAAK,EAAAvhB,WAAWoR,SACZjM,EAAEiX,SAAWhlB,KAAKglB,SAASoF,iBAenC,OATmB,MAAfpqB,KAAKyI,SACLsF,EAAEtF,OAASzI,KAAKyI,OAAOnB,KAAI,SAAAC,GAAK,OAAAA,EAAE8iB,kBAEd,MAApBrqB,KAAKklB,cACLnX,EAAEmX,YAAcllB,KAAKklB,YAAY5d,KAAI,SAAA+H,GAAK,OAAAA,EAAEib,uBAEpB,MAAxBtqB,KAAKmlB,kBACLpX,EAAEoX,gBAAkBnlB,KAAKmlB,gBAAgB7d,KAAI,SAAA4f,GAAM,OAAAA,EAAGqD,4BAEnDxc,GAEf,EA1MA,CAA4B,WAAf,EAAAyc,U,8ECVb,mBAAsB,EAAAC,e,8FCDtB,iBAOI,WAAYljB,GANZ,KAAAG,KAAe,KACf,KAAAhJ,MAAgB,KAChB,KAAAyD,KAAkB,KAClB,KAAAuoB,UAAoB,EACpB,KAAAC,WAAqB,EAGZpjB,IAILvH,KAAKmC,KAAOoF,EAAEpF,MAMtB,OAHI,sBAAI,0BAAW,C,IAAf,WACI,OAAqB,MAAdnC,KAAKtB,MAAgB,WAAa,M,gCAEjD,EAlBA,GAAa,EAAA0K,a,8ECNb,YAIA,SACA,SACA,SACA,SACA,SACA,SAEA,SAGA,EAkBI,SAAY7C,GAAZ,WASI,OARAvG,KAAKmC,KAAOoE,EAAOpE,KACnBnC,KAAK4kB,SAAWre,EAAOqe,SACvB5kB,KAAKuC,eAAiBgE,EAAOhE,eAC7BvC,KAAK0H,KAAOnB,EAAOmB,KAAOnB,EAAOmB,KAAKgN,gBAAkB,KACxD1U,KAAKwI,MAAQjC,EAAOiC,MAAQjC,EAAOiC,MAAMkM,gBAAkB,KAC3D1U,KAAKuI,SAAWhC,EAAOgC,SACvBvI,KAAK4qB,sBAAwBrkB,EAAOga,aAE5BvgB,KAAKmC,MACT,KAAK,EAAAyG,WAAWC,MACZ7I,KAAK0I,MAAQ,IAAI,EAAAmiB,SACjB7qB,KAAK0I,MAAMqB,KAAO,KAClB/J,KAAK0I,MAAMmB,SAAWtD,EAAOmC,MAAMmB,SAAWtD,EAAOmC,MAAMmB,SAAS6K,gBAAkB,KACtF1U,KAAK0I,MAAMoB,SAAWvD,EAAOmC,MAAMoB,SAAWvD,EAAOmC,MAAMoB,SAAS4K,gBAAkB,KACtF1U,KAAK0I,MAAM+c,qBAA4D,MAArClf,EAAOmC,MAAM+c,qBAC3Clf,EAAOmC,MAAM+c,qBAAqBuE,cAAgB,KACtDhqB,KAAK0I,MAAM4e,KAAO/gB,EAAOmC,MAAM4e,KAAO/gB,EAAOmC,MAAM4e,KAAK5S,gBAAkB,KAEjD,MAArBnO,EAAOmC,MAAMqB,OACb/J,KAAK0I,MAAMqB,KAAOxD,EAAOmC,MAAMqB,KAAKzC,KAAI,SAAApC,GACpC,IAAML,EAAM,IAAI,EAAAimB,YAGhB,OAFAjmB,EAAIA,IAAe,MAATK,EAAEL,IAAcK,EAAEL,IAAI6P,gBAAkB,KAClD7P,EAAII,MAAmB,MAAXC,EAAED,MAAgBC,EAAED,MAAQ,KACjCJ,MAGf,MACJ,KAAK,EAAA+D,WAAWoB,WACZhK,KAAKiK,WAAa,IAAI,EAAA8gB,cACtB/qB,KAAKiK,WAAW9H,KAAOoE,EAAO0D,WAAW9H,KACzC,MACJ,KAAK,EAAAyG,WAAWmR,KACZ/Z,KAAK6G,KAAO,IAAI,EAAAmkB,QAChBhrB,KAAK6G,KAAKuQ,eAA+C,MAA9B7Q,EAAOM,KAAKuQ,eACnC7Q,EAAOM,KAAKuQ,eAAe1C,gBAAkB,KACjD1U,KAAK6G,KAAK6Q,MAA6B,MAArBnR,EAAOM,KAAK6Q,MAAgBnR,EAAOM,KAAK6Q,MAAMhD,gBAAkB,KAClF1U,KAAK6G,KAAK8Q,OAA+B,MAAtBpR,EAAOM,KAAK8Q,OAAiBpR,EAAOM,KAAK8Q,OAAOjD,gBAAkB,KACrF1U,KAAK6G,KAAKC,SAAmC,MAAxBP,EAAOM,KAAKC,SAAmBP,EAAOM,KAAKC,SAAS4N,gBAAkB,KAC3F1U,KAAK6G,KAAKE,QAAiC,MAAvBR,EAAOM,KAAKE,QAAkBR,EAAOM,KAAKE,QAAQ2N,gBAAkB,KACxF1U,KAAK6G,KAAKwQ,KAA2B,MAApB9Q,EAAOM,KAAKwQ,KAAe9Q,EAAOM,KAAKwQ,KAAK3C,gBAAkB,KAC/E,MACJ,KAAK,EAAA9L,WAAWoR,SACZha,KAAKglB,SAAW,IAAI,EAAAiG,YACpBjrB,KAAKglB,SAAS/jB,MAAiC,MAAzBsF,EAAOye,SAAS/jB,MAAgBsF,EAAOye,SAAS/jB,MAAMyT,gBAAkB,KAC9F1U,KAAKglB,SAASqB,UAAyC,MAA7B9f,EAAOye,SAASqB,UACtC9f,EAAOye,SAASqB,UAAU3R,gBAAkB,KAChD1U,KAAKglB,SAASU,WAA2C,MAA9Bnf,EAAOye,SAASU,WACvCnf,EAAOye,SAASU,WAAWhR,gBAAkB,KACjD1U,KAAKglB,SAASsB,SAAuC,MAA5B/f,EAAOye,SAASsB,SACrC/f,EAAOye,SAASsB,SAAS5R,gBAAkB,KAC/C1U,KAAKglB,SAASW,SAAuC,MAA5Bpf,EAAOye,SAASW,SACrCpf,EAAOye,SAASW,SAASjR,gBAAkB,KAC/C1U,KAAKglB,SAASY,SAAuC,MAA5Brf,EAAOye,SAASY,SACrCrf,EAAOye,SAASY,SAASlR,gBAAkB,KAC/C1U,KAAKglB,SAASa,SAAuC,MAA5Btf,EAAOye,SAASa,SACrCtf,EAAOye,SAASa,SAASnR,gBAAkB,KAC/C1U,KAAKglB,SAAS5B,KAA+B,MAAxB7c,EAAOye,SAAS5B,KAAe7c,EAAOye,SAAS5B,KAAK1O,gBAAkB,KAC3F1U,KAAKglB,SAAS3B,MAAiC,MAAzB9c,EAAOye,SAAS3B,MAAgB9c,EAAOye,SAAS3B,MAAM3O,gBAAkB,KAC9F1U,KAAKglB,SAAS1B,WAA2C,MAA9B/c,EAAOye,SAAS1B,WACvC/c,EAAOye,SAAS1B,WAAW5O,gBAAkB,KACjD1U,KAAKglB,SAAS9I,QAAqC,MAA3B3V,EAAOye,SAAS9I,QACpC3V,EAAOye,SAAS9I,QAAQxH,gBAAkB,KAC9C1U,KAAKglB,SAASc,QAAqC,MAA3Bvf,EAAOye,SAASc,QACpCvf,EAAOye,SAASc,QAAQpR,gBAAkB,KAC9C1U,KAAKglB,SAAShE,MAAiC,MAAzBza,EAAOye,SAAShE,MAAgBza,EAAOye,SAAShE,MAAMtM,gBAAkB,KAC9F1U,KAAKglB,SAASe,MAAiC,MAAzBxf,EAAOye,SAASe,MAAgBxf,EAAOye,SAASe,MAAMrR,gBAAkB,KAC9F1U,KAAKglB,SAASgB,IAA6B,MAAvBzf,EAAOye,SAASgB,IAAczf,EAAOye,SAASgB,IAAItR,gBAAkB,KACxF1U,KAAKglB,SAASnb,SAAuC,MAA5BtD,EAAOye,SAASnb,SACrCtD,EAAOye,SAASnb,SAAS6K,gBAAkB,KAC/C1U,KAAKglB,SAASiB,eAAmD,MAAlC1f,EAAOye,SAASiB,eAC3C1f,EAAOye,SAASiB,eAAevR,gBAAkB,KACrD1U,KAAKglB,SAASkB,cAAiD,MAAjC3f,EAAOye,SAASkB,cAC1C3f,EAAOye,SAASkB,cAAcxR,gBAAkB,KAMvC,MAAjBnO,EAAOkC,SACPzI,KAAKyI,OAASlC,EAAOkC,OAAOnB,KAAI,SAAAC,GAC5B,IAAM4B,EAAQ,IAAI,EAAA+hB,SAIlB,OAHA/hB,EAAMhH,KAAOoF,EAAEpF,KACfgH,EAAMzB,KAAOH,EAAEG,KAAOH,EAAEG,KAAKgN,gBAAkB,KAC/CvL,EAAMzK,MAAQ6I,EAAE7I,MAAQ6I,EAAE7I,MAAMgW,gBAAkB,KAC3CvL,MAIe,MAA1B5C,EAAO4e,kBACPnlB,KAAKmlB,gBAAkB,GACvB5e,EAAO4e,gBAAgB/gB,SAAQ,SAAA8iB,GAC3B,EAAK/B,gBAAgBhgB,KAAK,CACtBgmB,aAAcjE,EAAGiE,aACjBrhB,SAAUod,EAAGpd,SAAWod,EAAGpd,SAAS4K,gBAAkB,WAKxC,MAAtBnO,EAAO2e,cACPllB,KAAKklB,YAAc,GACnBllB,KAAKorB,aAAe,GACpB7kB,EAAO2e,YAAY9gB,SAAQ,SAAAulB,GACvB,IAAM0B,EAAW1B,EAAW0B,SAAW1B,EAAW0B,SAAS3W,gBAAkB,KAC7E,EAAKwQ,YAAYyE,EAAW/pB,IAAMyrB,EAClC,IAAMC,EAAoB,IAAI,EAAAC,kBAC9BD,EAAkBD,SAAWA,EACP,MAAlB1B,EAAWhrB,MACX2sB,EAAkB3sB,IAAMgrB,EAAWhrB,IAAI+V,iBAE3C,EAAK0W,aAAazB,EAAW/pB,IAAM0rB,OAhItC,EAAAE,iB,gHCdb,KACA,MADA,IAEA,O,GAMA,K,4BAEA,aAKI,WAAoBC,EAAwBC,EAChCC,EAAqBjsB,GADjC,WAAoB,KAAA+rB,SAAwB,KAAAC,iBAChC,KAAAC,eAJJ,KAAAC,iBAAsBhqB,EACtB,KAAAiqB,gBAAqBjqB,EAIzB5B,KAAK6rB,WAAa7rB,KAAKyrB,OAAOlmB,IAC9BkmB,EAAOK,OAAOnI,WAAU,SAAAoI,GACpB,GAAIA,aAAiB,EAAAC,cAAe,CAChC,EAAKJ,YAAc,EAAKC,WACxB,EAAKA,WAAaE,EAAMxmB,IAMxB,IAJA,IAAItE,EAAQvB,EAAYO,EAAE,YAAa,aACnCgsB,EAAkB,KAClBC,EAAmB,KACnBC,EAAQ,EAAKT,eAAeU,WAChB,MAATD,GAAe,CAClB,GAAwB,MAApBA,EAAMC,WAEH,IAA2B,MAAvBD,EAAME,SAASlpB,MAA6C,MAA7BgpB,EAAME,SAASlpB,KAAKlC,MAAe,CACzEirB,EAAWC,EAAME,SAASlpB,KAAKlC,MAC/B,MACG,GAA2B,MAAvBkrB,EAAME,SAASlpB,MAA+C,MAA/BgpB,EAAME,SAASlpB,KAAK8oB,QAAiB,CAC3EA,EAAUE,EAAME,SAASlpB,KAAK8oB,QAC9B,MAEAA,EAAU,KACVC,EAAW,KACX,MAVAC,EAAQA,EAAMC,WActB,GAAe,MAAXH,GAA+B,MAAZC,EAAkB,CACrC,IAAMI,EAAuB,MAAZJ,EAAmBA,EAAWxsB,EAAYO,EAAEgsB,GAC7C,MAAZK,GAAiC,KAAbA,IACpBrrB,EAASqrB,EAAW,MAAQrrB,GAGpC,EAAK0qB,aAAaY,SAAStrB,O,OAKvC,YAAAurB,eAAA,WACI,OAAOxsB,KAAK4rB,aAGhB,YAAAa,eAAA,SAAelnB,GACXvF,KAAK4rB,YAAcrmB,G,iCAhDdmnB,GAAa,kG,oCAAbA,EAAa,QAAbA,EAAa,O,EAD1B,GACa,EAAAA,iB,8ECXb,SAAYC,GACR,qCADJ,CAAY,EAAAA,UAAA,EAAAA,QAAO,M,8ECAnB,KAMA,KANA,I,8CCGQ,6BACI,YACJ,2B,6BADI,2E,mCDIZ,aAYI,WAAoBjtB,GAAA,KAAAA,cANX,KAAAktB,UAAW,EAEpB,KAAAC,WAAa,EACb,KAAAjS,MAAQ,Y,OAKR,YAAAta,YAAA,WAEI,OADAN,KAAK6sB,WAA2B,MAAd7sB,KAAK8sB,MAAgB,EAAuB,IAAlB9sB,KAAK8sB,MAAQ,GACjD9sB,KAAK8sB,OACT,KAAK,EACD9sB,KAAK4a,MAAQ,aACb5a,KAAK8hB,KAAO9hB,KAAKN,YAAYO,EAAE,UAC/B,MACJ,KAAK,EACDD,KAAK4a,MAAQ,aACb5a,KAAK8hB,KAAO9hB,KAAKN,YAAYO,EAAE,QAC/B,MACJ,KAAK,EACDD,KAAK4a,MAAQ,aACb5a,KAAK8hB,KAAO9hB,KAAKN,YAAYO,EAAE,QAC/B,MACJ,QACID,KAAK4a,MAAQ,YACb5a,KAAK8hB,KAAqB,MAAd9hB,KAAK8sB,MAAgB9sB,KAAKN,YAAYO,EAAE,QAAU,O,iCA3BjE8sB,GAAyB,qC,iCAAzBA,EAAyB,+QCZtC,4BACI,iDAEI,gEAGJ,sCACJ,kCACA,kB,MAPS,oEAAkD,gEACnD,4CACc,yD,kDDKtB,GAIa,EAAAA,6B,8EEZb,SAAYC,GACR,qBACA,qBACA,mBACA,yBACA,uBALJ,CAAY,EAAAA,uBAAA,EAAAA,qBAAoB,M,8ECAhC,S,OAKA,2B,OAII,YAAArtB,UAAA,SAAUstB,EAAcC,EAAoBC,EAAgBC,EAAgBC,GACxE,OAAa,MAATJ,GAAkC,IAAjBA,EAAM9uB,OAChB,GAGO,MAAd+uB,GAAsBA,EAAW/uB,OAAS,EACnC8uB,GAGXC,EAAaA,EAAWnpB,OAAO/B,cACxBirB,EAAM9kB,QAAO,SAAAlK,GAChB,OAAa,MAATkvB,GAA6B,MAAZlvB,EAAEkvB,IAAkBlvB,EAAEkvB,GAAO1gB,WAAWzK,cAAcoD,QAAQ8nB,IAAe,IAGrF,MAATE,GAA6B,MAAZnvB,EAAEmvB,IAAkBnvB,EAAEmvB,GAAO3gB,WAAWzK,cAAcoD,QAAQ8nB,IAAe,GAGrF,MAATG,GAA6B,MAAZpvB,EAAEovB,IAAkBpvB,EAAEovB,GAAO5gB,WAAWzK,cAAcoD,QAAQ8nB,IAAe,Q,iCAlBjGI,I,2CAAAA,EAAU,U,EAHvB,GAGa,EAAAA,c,8ECRb,KAEA,KAFA,IAIA,SACA,S,cAIA,aAEI,WAAoB5tB,GAAA,KAAAA,c,OAEpB,YAAA6tB,sBAAA,WACI,IAAMC,EAAI,IAAIrE,KACRsE,EAAM,IAAItE,KAAKqE,EAAEE,cAAeF,EAAEG,WAAYH,EAAEI,UAAW,GAAI,IACrEJ,EAAEK,QAAQL,EAAEI,UAAY,IACxB,IAAME,EAAQ,IAAI3E,KAAKqE,EAAEE,cAAeF,EAAEG,WAAYH,EAAEI,UAAW,EAAG,GACtE,MAAO,CAAC5tB,KAAK+tB,sBAAsBD,GAAQ9tB,KAAK+tB,sBAAsBN,KAG1E,YAAAO,kBAAA,SAAkBC,EAAqBC,GACnC,IAAMJ,EAAc,IAAI3E,KAAK8E,GACvBR,EAAY,IAAItE,KAAK+E,EAAY,WACvC,GAAIC,MAAML,EAAMM,YAAcD,MAAMV,EAAIW,YAAcX,EAAMK,EACxD,MAAM,IAAInsB,MAAM,uBAEpB,MAAO,CAACmsB,EAAM9D,cAAeyD,EAAIzD,gBAGrC,YAAAqE,aAAA,SAAaC,EAAmB5qB,QAAA,IAAAA,MAAA,IAAc6qB,GAC1C,IAAMC,EAAUxuB,KAAKyuB,WAAWH,EAAGI,YACnC,MAAO,CACHnqB,QAASvE,KAAK2uB,gBAAgBL,EAAI5qB,GAClCkrB,QAASJ,EAAQ,GACjBK,QAASL,EAAQ,KAIjB,YAAAG,gBAAR,SAAwBL,EAAmB5qB,GACvC,IAAIorB,EAAM,GACV,OAAQR,EAAGnsB,MAEP,KAAK,EAAA4sB,UAAUC,cACXF,EAAM9uB,KAAKN,YAAYO,EAAE,YACzB,MACJ,KAAK,EAAA8uB,UAAUE,qBACXH,EAAM9uB,KAAKN,YAAYO,EAAE,mBACzB,MACJ,KAAK,EAAA8uB,UAAUG,gBACXJ,EAAM9uB,KAAKN,YAAYO,EAAE,qBACzB,MACJ,KAAK,EAAA8uB,UAAUI,iBACXL,EAAM9uB,KAAKN,YAAYO,EAAE,eACzB,MACJ,KAAK,EAAA8uB,UAAUK,kBACXN,EAAM9uB,KAAKN,YAAYO,EAAE,gBACzB,MACJ,KAAK,EAAA8uB,UAAUM,iBACXP,EAAM9uB,KAAKN,YAAYO,EAAE,eACzB,MACJ,KAAK,EAAA8uB,UAAUO,oBACXR,EAAM9uB,KAAKN,YAAYO,EAAE,kBACzB,MACJ,KAAK,EAAA8uB,UAAUQ,yBACXT,EAAM9uB,KAAKN,YAAYO,EAAE,iBACzB,MAEJ,KAAK,EAAA8uB,UAAUS,eACXV,EAAM9uB,KAAKN,YAAYO,EAAE,gBAAiBD,KAAKyvB,eAAenB,EAAI5qB,IAClE,MACJ,KAAK,EAAAqrB,UAAUW,eACXZ,EAAM9uB,KAAKN,YAAYO,EAAE,eAAgBD,KAAKyvB,eAAenB,EAAI5qB,IACjE,MACJ,KAAK,EAAAqrB,UAAUY,eACXb,EAAM9uB,KAAKN,YAAYO,EAAE,2BAA4BD,KAAKyvB,eAAenB,EAAI5qB,IAC7E,MACJ,KAAK,EAAAqrB,UAAUa,mBACXd,EAAM9uB,KAAKN,YAAYO,EAAE,gBAAiBD,KAAKyvB,eAAenB,EAAI5qB,IAClE,MACJ,KAAK,EAAAqrB,UAAUc,gBACXf,EAAM9uB,KAAKN,YAAYO,EAAE,iBAAkBD,KAAKyvB,eAAenB,EAAI5qB,IACnE,MACJ,KAAK,EAAAqrB,UAAUe,yBACXhB,EAAM9uB,KAAKN,YAAYO,EAAE,2BAA4BD,KAAKyvB,eAAenB,EAAI5qB,IAC7E,MACJ,KAAK,EAAAqrB,UAAUgB,yBACXjB,EAAM9uB,KAAKN,YAAYO,EAAE,2BAA4BD,KAAKyvB,eAAenB,EAAI5qB,IAC7E,MACJ,KAAK,EAAAqrB,UAAUiB,cACXlB,EAAM9uB,KAAKN,YAAYO,EAAE,eAAgBD,KAAKyvB,eAAenB,EAAI5qB,IACjE,MACJ,KAAK,EAAAqrB,UAAUkB,oBACXnB,EAAM9uB,KAAKN,YAAYO,EAAE,eAAgBD,KAAKyvB,eAAenB,EAAI5qB,IACjE,MACJ,KAAK,EAAAqrB,UAAUmB,oCACXpB,EAAM9uB,KAAKN,YAAYO,EAAE,uBAAwBD,KAAKyvB,eAAenB,EAAI5qB,IACzE,MACJ,KAAK,EAAAqrB,UAAUoB,uCACXrB,EAAM9uB,KAAKN,YAAYO,EAAE,0BAA2BD,KAAKyvB,eAAenB,EAAI5qB,IAC5E,MACJ,KAAK,EAAAqrB,UAAUqB,oCACXtB,EAAM9uB,KAAKN,YAAYO,EAAE,2BAA4BD,KAAKyvB,eAAenB,EAAI5qB,IAC7E,MACJ,KAAK,EAAAqrB,UAAUsB,+BACXvB,EAAM9uB,KAAKN,YAAYO,EAAE,0BAA2BD,KAAKyvB,eAAenB,EAAI5qB,IAC5E,MACJ,KAAK,EAAAqrB,UAAUuB,4BACXxB,EAAM9uB,KAAKN,YAAYO,EAAE,uBAAwBD,KAAKyvB,eAAenB,EAAI5qB,IACzE,MACJ,KAAK,EAAAqrB,UAAUwB,4BACXzB,EAAM9uB,KAAKN,YAAYO,EAAE,2BAA4BD,KAAKyvB,eAAenB,EAAI5qB,IAC7E,MACJ,KAAK,EAAAqrB,UAAUyB,wBACX1B,EAAM9uB,KAAKN,YAAYO,EAAE,mBAAoBD,KAAKyvB,eAAenB,EAAI5qB,IACrE,MACJ,KAAK,EAAAqrB,UAAU0B,0BACX3B,EAAM9uB,KAAKN,YAAYO,EAAE,2BAA4BD,KAAKyvB,eAAenB,EAAI5qB,IAC7E,MAEJ,KAAK,EAAAqrB,UAAU2B,mBACX5B,EAAM9uB,KAAKN,YAAYO,EAAE,sBAAuBD,KAAK2wB,mBAAmBrC,IACxE,MACJ,KAAK,EAAAS,UAAU6B,mBACX9B,EAAM9uB,KAAKN,YAAYO,EAAE,qBAAsBD,KAAK2wB,mBAAmBrC,IACvE,MACJ,KAAK,EAAAS,UAAU8B,mBACX/B,EAAM9uB,KAAKN,YAAYO,EAAE,sBAAuBD,KAAK2wB,mBAAmBrC,IACxE,MAEJ,KAAK,EAAAS,UAAU+B,cACXhC,EAAM9uB,KAAKN,YAAYO,EAAE,iBAAkBD,KAAK+wB,cAAczC,IAC9D,MACJ,KAAK,EAAAS,UAAUiC,cACXlC,EAAM9uB,KAAKN,YAAYO,EAAE,gBAAiBD,KAAK+wB,cAAczC,IAC7D,MACJ,KAAK,EAAAS,UAAUkC,cACXnC,EAAM9uB,KAAKN,YAAYO,EAAE,iBAAkBD,KAAK+wB,cAAczC,IAC9D,MAEJ,KAAK,EAAAS,UAAUmC,yBACXpC,EAAM9uB,KAAKN,YAAYO,EAAE,gBAAiBD,KAAKmxB,gBAAgB7C,IAC/D,MACJ,KAAK,EAAAS,UAAUqC,2BACXtC,EAAM9uB,KAAKN,YAAYO,EAAE,kBAAmBD,KAAKmxB,gBAAgB7C,IACjE,MACJ,KAAK,EAAAS,UAAUsC,yBACXvC,EAAM9uB,KAAKN,YAAYO,EAAE,eAAgBD,KAAKmxB,gBAAgB7C,IAC9D,MACJ,KAAK,EAAAS,UAAUuC,yBACXxC,EAAM9uB,KAAKN,YAAYO,EAAE,gBAAiBD,KAAKmxB,gBAAgB7C,IAC/D,MACJ,KAAK,EAAAS,UAAUwC,+BACXzC,EAAM9uB,KAAKN,YAAYO,EAAE,sBAAuBD,KAAKmxB,gBAAgB7C,IACrE,MACJ,KAAK,EAAAS,UAAUyC,6BACX1C,EAAM9uB,KAAKN,YAAYO,EAAE,kBAAmBD,KAAKmxB,gBAAgB7C,IAErE,KAAK,EAAAS,UAAU0C,qBACX3C,EAAM9uB,KAAKN,YAAYO,EAAE,qBACzB,MACJ,KAAK,EAAA8uB,UAAU2C,yBACX5C,EAAM9uB,KAAKN,YAAYO,EAAE,2BACzB,MAOJ,KAAK,EAAA8uB,UAAU4C,eACX7C,EAAM9uB,KAAKN,YAAYO,EAAE,iBAAkBD,KAAK4xB,eAAetD,IAMvE,MAAe,KAARQ,EAAa,KAAOA,GAGvB,YAAAL,WAAR,SAAmBC,GACf,OAAQA,GACJ,KAAK,EAAAmD,WAAWC,QACZ,MAAO,CAAC,aAAc9xB,KAAKN,YAAYO,EAAE,UAAY,cACzD,KAAK,EAAA4xB,WAAWE,IACZ,MAAO,CAAC,WAAY/xB,KAAKN,YAAYO,EAAE,UAAY,UACvD,KAAK,EAAA4xB,WAAWG,IACZ,MAAO,CAAC,aAAchyB,KAAKN,YAAYO,EAAE,UAAY,cACzD,KAAK,EAAA4xB,WAAWI,gBACZ,MAAO,CAAC,YAAajyB,KAAKN,YAAYO,EAAE,aAAe,aAC3D,KAAK,EAAA4xB,WAAWK,iBACZ,MAAO,CAAC,aAAclyB,KAAKN,YAAYO,EAAE,aAAe,cAC5D,KAAK,EAAA4xB,WAAWM,eACZ,MAAO,CAAC,WAAYnyB,KAAKN,YAAYO,EAAE,aAAe,YAC1D,KAAK,EAAA4xB,WAAWO,cACZ,MAAO,CAAC,UAAWpyB,KAAKN,YAAYO,EAAE,aAAe,WACzD,KAAK,EAAA4xB,WAAWQ,iBACZ,MAAO,CAAC,kBAAmBryB,KAAKN,YAAYO,EAAE,aAAe,cACjE,KAAK,EAAA4xB,WAAWS,gBACZ,MAAO,CAAC,YAAatyB,KAAKN,YAAYO,EAAE,aAAe,aAC3D,KAAK,EAAA4xB,WAAWU,eACZ,MAAO,CAAC,aAAcvyB,KAAKN,YAAYO,EAAE,WAAa,cAC1D,KAAK,EAAA4xB,WAAWW,aACZ,MAAO,CAAC,WAAYxyB,KAAKN,YAAYO,EAAE,WAAa,YACxD,KAAK,EAAA4xB,WAAWY,aACZ,MAAO,CAAC,WAAYzyB,KAAKN,YAAYO,EAAE,WAAa,YACxD,KAAK,EAAA4xB,WAAWa,cACZ,MAAO,CAAC,WAAY1yB,KAAKN,YAAYO,EAAE,YAAc,aACzD,KAAK,EAAA4xB,WAAWc,eACZ,MAAO,CAAC,WAAY3yB,KAAKN,YAAYO,EAAE,YAAc,cACzD,KAAK,EAAA4xB,WAAWe,aACZ,MAAO,CAAC,WAAY5yB,KAAKN,YAAYO,EAAE,YAAc,YACzD,KAAK,EAAA4xB,WAAWgB,cACZ,MAAO,CAAC,WAAY7yB,KAAKN,YAAYO,EAAE,YAAc,aACzD,KAAK,EAAA4xB,WAAWiB,eACZ,MAAO,CAAC,WAAY9yB,KAAKN,YAAYO,EAAE,YAAc,cACzD,KAAK,EAAA4xB,WAAWkB,YACZ,MAAO,CAAC,WAAY/yB,KAAKN,YAAYO,EAAE,YAAc,WACzD,KAAK,EAAA4xB,WAAWmB,UACZ,MAAO,CAAC,WAAYhzB,KAAKN,YAAYO,EAAE,YAAc,SACzD,KAAK,EAAA4xB,WAAWoB,eACZ,MAAO,CAAC,WAAYjzB,KAAKN,YAAYO,EAAE,YAAc,MAAQD,KAAKN,YAAYO,EAAE,YACpF,QACI,MAAO,CAAC,WAAYD,KAAKN,YAAYO,EAAE,cAI3C,YAAAwvB,eAAR,SAAuBnB,EAAmB5qB,GACtC,IAAMwvB,EAAUlzB,KAAKmzB,WAAW7E,EAAG8E,UACnC,GAAyB,MAArB9E,EAAG/rB,iBAA2BmB,EAAQ2vB,WACtC,MAAO,SAAWH,EAAU,UAEhC,IAAM7jB,EAAIrP,KAAKszB,WAAWJ,GAG1B,OAFA7jB,EAAEjO,aAAa,OAAQ,mBAAqBktB,EAAG/rB,eAAiB,iBAAmB2wB,EAC/E,eAAiB5E,EAAG8E,UACjB/jB,EAAEuS,WAGL,YAAAmP,cAAR,SAAsBzC,GAClB,IAAM4E,EAAUlzB,KAAKmzB,WAAW7E,EAAGiF,SAC7BlkB,EAAIrP,KAAKszB,WAAWJ,GAE1B,OADA7jB,EAAEjO,aAAa,OAAQ,mBAAqBktB,EAAG/rB,eAAiB,yBAA2B2wB,GACpF7jB,EAAEuS,WAGL,YAAA+O,mBAAR,SAA2BrC,GACvB,IAAM4E,EAAUlzB,KAAKmzB,WAAW7E,EAAGkF,cAC7BnkB,EAAIrP,KAAKszB,WAAWJ,GAE1B,OADA7jB,EAAEjO,aAAa,OAAQ,mBAAqBktB,EAAG/rB,eAAiB,8BAAgC2wB,GACzF7jB,EAAEuS,WAGL,YAAAuP,gBAAR,SAAwB7C,GACpB,IAAM4E,EAAUlzB,KAAKmzB,WAAW7E,EAAGmF,oBAC7BpkB,EAAIrP,KAAKszB,WAAWJ,GAG1B,OAFA7jB,EAAEjO,aAAa,OAAQ,mBAAqBktB,EAAG/rB,eAAiB,yBAA2B2wB,EACvF,eAAiB5E,EAAGmF,oBACjBpkB,EAAEuS,WAGL,YAAAgQ,eAAR,SAAuBtD,GACnB,IAAM4E,EAAUlzB,KAAKmzB,WAAW7E,EAAGoF,UAC7BrkB,EAAIrP,KAAKszB,WAAWJ,GAE1B,OADA7jB,EAAEjO,aAAa,OAAQ,mBAAqBktB,EAAG/rB,eAAiB,6BAA+B+rB,EAAGoF,UAC3FrkB,EAAEuS,WAGL,YAAA0R,WAAR,SAAmBJ,GACf,IAAM7jB,EAAIkB,SAASC,cAAc,KAGjC,OAFAnB,EAAEpO,MAAQjB,KAAKN,YAAYO,EAAE,QAC7BoP,EAAEskB,UAAY,SAAWT,EAAU,UAC5B7jB,GAGH,YAAA8jB,WAAR,SAAmBvzB,GACf,OAAOA,EAAGyF,UAAU,EAAG,IAGnB,YAAA0oB,sBAAR,SAA8B6F,GAC1B,OAAOA,EAAKlG,cACR,IAAM1tB,KAAK6zB,IAAID,EAAKjG,WAAa,GACjC,IAAM3tB,KAAK6zB,IAAID,EAAKhG,WACpB,IAAM5tB,KAAK6zB,IAAID,EAAKE,YACpB,IAAM9zB,KAAK6zB,IAAID,EAAKG,eAGpB,YAAAF,IAAR,SAAYG,GACR,IAAMC,EAAOjmB,KAAKkmB,MAAMlmB,KAAKmmB,IAAIH,IACjC,OAAQC,EAAO,GAAK,IAAM,IAAMA,G,iCAtR3BlgB,GAAY,4B,oCAAZA,EAAY,QAAZA,EAAY,O,EADzB,GACa,EAAAA,eA0Rb,mBAAa,EAAAqgB,YAMb,iBACI,KAAAf,YAAa,GADJ,EAAA9E,gB,8EC1Sb,SAAYQ,GACR,uCACA,sDACA,4CACA,8CACA,gDACA,8CACA,oDACA,8DAEA,0CACA,0CACA,0CACA,8DACA,8DACA,wCACA,gEACA,oDACA,oFACA,0FACA,oFACA,oEACA,0EACA,oEACA,4DACA,kDACA,4CAEA,kDACA,kDACA,kDAEA,wCACA,wCACA,wCAEA,8DACA,kEACA,8DACA,8DACA,0EACA,sEAEA,sDACA,8DAGA,0CA/CJ,CAAY,EAAAA,YAAA,EAAAA,UAAS,M,8ECArB,SAAYvT,GACR,mBACA,iCACA,uBACA,uBACA,uBACA,mCACA,+BACA,iCACA,qBATJ,CAAY,EAAAA,oBAAA,EAAAA,kBAAiB,M,68CCA7B,WAaA,GAPA,KACA,MAEA,KACA,KACA,KAEA,QACA,S,2CAEA,aAYI,WAAsBJ,EAAkC1b,EAC1C20B,EAAmCzM,EACnCzM,GAFQ,KAAAC,aAAkC,KAAA1b,cAC1C,KAAA20B,YAAmC,KAAAzM,iBACnC,KAAAzM,uBAZJ,KAAAmZ,UAAY,IAAI,EAAAvR,aAI1B,KAAAwR,sBAAwB,EAAA/Z,sBACxB,KAAAga,SAAU,EACV,KAAAC,QAAS,E,OAQC,YAAAC,KAAV,SAAeC,GACX30B,KAAKkoB,mBAAqByM,EAAazM,mBACvCloB,KAAKy0B,QAAS,GAGF,YAAAG,OAAhB,SAAuBC,G,0FAEf,O,sBAAA,GAAMA,K,cAAN,SACA70B,KAAKq0B,UAAUS,WAAWC,KAAK,CAC3BC,OAAQ,oBAAsB,EAAAxa,sBAAsBxa,KAAKmC,MAAMsK,aAEnEzM,KAAKs0B,UAAU5d,MAAK,G,4DAIZ,YAAAue,QAAhB,SAAwBvL,G,gGACF,SAAM1pB,KAAKmb,qBAAqB+Z,WAAWl1B,KAAKN,YAAYO,EAAE,sBAC5ED,KAAKN,YAAYO,EAAE,WAAYD,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,Y,OACxF,IAFkB,SAGd,U,iBAYA,O,uBARMkkB,EAAU,IAAI,EAAAgR,0BACZjN,mBAAqBloB,KAAKkoB,mBAClC/D,EAAQhiB,KAAOnC,KAAKmC,KAMpB,GAL2B,MAAvBnC,KAAKuC,eACKvC,KAAKob,WAAWga,gCAAgCp1B,KAAKuC,eAAgB4hB,GAErEnkB,KAAKob,WAAWia,oBAAoBlR,I,cAElD,SACAnkB,KAAKw0B,SAAU,EACfx0B,KAAKq0B,UAAUS,WAAWC,KAAK,CAC3BC,OAAQ,qBAAuB,EAAAxa,sBAAsBxa,KAAKmC,MAAMsK,aAEpEzM,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,oBACjED,KAAKs0B,UAAU5d,MAAK,G,6FApDV4e,GAAsB,6L,iCAAtBA,EAAsB,kC,EAD5C,GACsB,EAAAA,0B,68CCjBtB,WAWA,QACA,SACA,S,GAEA,MACA,K,uCAEA,aAWI,WAAoB9f,EAA8D+f,EACpE9f,EAA2C+f,GADrC,KAAAhgB,2BAA8D,KAAA+f,cACpE,KAAA9f,mBAA2C,KAAA+f,eARzD,KAAA70B,SAAU,EACV,KAAA80B,WAAY,EACZ,KAAA9rB,QAAwB,GAGhB,KAAA4M,MAAwB,K,OAK1B,YAAAsD,KAAN,W,0FAEI,OADA7Z,KAAKW,SAAU,EACf,GAAMX,KAAK01B,c,cAAX,SACA11B,KAAKW,SAAU,EACfX,KAAKy1B,WAAY,E,YAGrB,YAAAE,aAAA,SAAapvB,GAAb,WACsB,MAAdvG,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAEI2e,EAFE7f,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBA+BtE,OA9BAlX,KAAKuW,MAAQvW,KAAK61B,sBAAsB1f,gBAAgBJ,GAASK,SAExC,MAArBpW,KAAK81B,cACLF,EAAiB51B,KAAKuW,MAAMZ,KAA0B,mBAAqB3V,KAAK61B,wBACxCC,aAAe91B,KAAK81B,aAE5DF,EAAiB51B,KAAKuW,MAAMZ,KAAuB,EAAAogB,iBAAkB/1B,KAAK61B,uBAG9ED,EAAexC,SAAqB,MAAV7sB,EAAiB,KAAOA,EAAO3G,GAChC,MAArBI,KAAK81B,eACLF,EAAerzB,eAAiBvC,KAAK81B,aAAal2B,IAEtDg2B,EAAeI,cAAcrS,WAAU,SAAO5V,GAAa,qC,kDAEvD,OADA/N,KAAKuW,MAAMU,QACX,GAAMjX,KAAK6Z,Q,cAAX,S,cAEJ+b,EAAeK,gBAAgBtS,WAAU,SAAO5V,GAAa,qC,kDAEzD,OADA/N,KAAKuW,MAAMU,QACX,GAAMjX,KAAK6Z,Q,cAAX,S,cAEJ+b,EAAeM,iBAAiBvS,WAAU,SAAO5V,GAAa,qC,kDAE1D,OADA/N,KAAKuW,MAAMU,QACX,GAAMjX,KAAK6Z,Q,cAAX,S,cAGJ7Z,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,QAGVqf,GAGK,YAAAO,YAAhB,W,uGAC6B,MAArBn2B,KAAK81B,aAAL,MAGI91B,KAAKw1B,eAAiBx1B,KAAK81B,aAAaM,SACxCp2B,KAAKyV,iBAAiBkB,KAAK,sBAAuB,CAAEpU,eAAgBvC,KAAK81B,aAAal2B,KAC/E,CAAP,GAAO,I,aAGW,SAAMI,KAAKu1B,YAAYc,oB,OAC7C,GADMC,EAAgB,SAClBt2B,KAAKw1B,eAAiBc,EAGtB,OAFAt2B,KAAKyV,iBAAiBkB,KAAK,mBAC3B3W,KAAKW,SAAU,EACR,CAAP,GAAO,G,iBAGf,MAAO,CAAP,GAAO,WAGK,YAAA+0B,WAAhB,W,0EACI11B,KAAK2J,QAAU,G,qFA/EV4sB,EAAqB,wB,OAAA,K,yBACM,EAAAC,kB,oFAFxC,GACa,EAAAD,yB,8ECnBb,aAMA,QAEME,EAAqB,CACvB,WACA,UACA,SACA,SACA,UACA,SACA,SAEA,SACA,SACA,YACA,YACA,iBAGJ,aAWI,WAAYvxB,GAVZ,KAAAD,MAAsB,KAGd,KAAAyxB,KAAe,KACf,KAAAC,QAAkB,KAClB,KAAAC,UAAoB,KACpB,KAAAC,MAAgB,KAChB,KAAAC,WAAsB,KAIrB5xB,IAILlF,KAAKiF,MAAQC,EAAED,OAoFvB,OAjFI,sBAAI,kBAAG,C,IAAP,WACI,OAAOjF,KAAK02B,M,IAEhB,SAAQh4B,GACJsB,KAAK02B,KAAOh4B,EACZsB,KAAK22B,QAAU,KACf32B,KAAK82B,WAAa,M,gCAGtB,sBAAI,qBAAM,C,IAAV,WAQI,OAPoB,MAAhB92B,KAAK22B,SAA+B,MAAZ32B,KAAK6E,MAC7B7E,KAAK22B,QAAU,EAAAlxB,MAAM8I,UAAUvO,KAAK6E,KACf,KAAjB7E,KAAK22B,UACL32B,KAAK22B,QAAU,OAIhB32B,KAAK22B,S,gCAGhB,sBAAI,uBAAQ,C,IAAZ,WACI,OAAI32B,KAAKiF,QAAU,EAAA8xB,aAAaC,kBACrB,MAEW,MAAlBh3B,KAAK42B,WAAiC,MAAZ52B,KAAK6E,MAC/B7E,KAAK42B,UAAY,EAAAnxB,MAAMC,YAAY1F,KAAK6E,KACjB,KAAnB7E,KAAK42B,YACL52B,KAAK42B,UAAY,OAIlB52B,KAAK42B,Y,gCAGhB,sBAAI,mBAAI,C,IAAR,WACI,OAAI52B,KAAKiF,QAAU,EAAA8xB,aAAaC,kBACrB,MAEO,MAAdh3B,KAAK62B,OAA6B,MAAZ72B,KAAK6E,MAC3B7E,KAAK62B,MAAQ,EAAApxB,MAAM4I,QAAQrO,KAAK6E,KACb,KAAf7E,KAAK62B,QACL72B,KAAK62B,MAAQ,OAId72B,KAAK62B,Q,gCAGhB,sBAAI,4BAAa,C,IAAjB,WACI,OAAwB,MAAjB72B,KAAKwF,SAAmBxF,KAAKwF,SAAWxF,KAAK6E,K,gCAGxD,sBAAI,wBAAS,C,IAAb,WACI,OAAoB,MAAb7E,KAAKsO,KAAetO,KAAKsO,KAAOtO,KAAK6E,K,gCAGhD,sBAAI,wBAAS,C,IAAb,WACI,OAAmB,MAAZ7E,KAAK6E,MAAgD,IAAhC7E,KAAK6E,IAAIO,QAAQ,YAAqD,IAAjCpF,KAAK6E,IAAIO,QAAQ,aAC7EpF,KAAK6E,IAAIO,QAAQ,OAAS,GAAK,EAAAK,MAAMgJ,eAAepI,KAAKrG,KAAK6E,O,gCAGvE,sBAAI,wBAAS,C,IAAb,WACI,GAAuB,MAAnB7E,KAAK82B,WACL,OAAO92B,KAAK82B,WAEhB,GAAgB,MAAZ92B,KAAK6E,KAAe7E,KAAKiF,QAAU,EAAA8xB,aAAaC,kBAEhD,IADA,IAAMnyB,EAAM7E,KAAK0nB,UACRzpB,EAAI,EAAGA,EAAIw4B,EAAmBt4B,OAAQF,IAC3C,GAA2C,IAAvC4G,EAAIO,QAAQqxB,EAAmBx4B,IAE/B,OADA+B,KAAK82B,YAAa,EACX92B,KAAK82B,WAKxB,OADA92B,KAAK82B,YAAa,EACX92B,KAAK82B,Y,gCAGhB,sBAAI,wBAAS,C,IAAb,WACI,OAAO92B,KAAK6E,IAAIO,QAAQ,OAAS,GAAK,EAAAK,MAAMgJ,eAAepI,KAAKrG,KAAK6E,KAAQ,UAAY7E,KAAK6E,IAAO7E,KAAK6E,K,gCAElH,EApGA,GAAa,EAAAE,gB,yxDCxBb,SAEA,QACA,SAgBA,GAdA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,KACA,MACA,MACA,OACA,KAEA,Q,4NCRgB,qCACI,Y,mBACJ,kB,MADI,yI,yBAOQ,gCAA0D,YAAU,kB,uBAA9B,gCAAoB,4C,mDALtE,6BACI,kEACI,wEAAkB,Y,mBAA2B,iBAC7C,yEAA8B,wGAE1B,gFACJ,2DACJ,uDACJ,mD,iCAN0B,wEACY,qDAAyB,+BAE3C,sD,yBAcR,gCAAmD,YAAU,kB,uBAA3B,6BAAiB,4C,mDAJ3D,6BACI,wEAAoB,Y,mBAAmB,iBACvC,yEAAoC,4GAEhC,+EACJ,0DACJ,uD,iCALwB,gEACgB,yDAA6B,2CAErD,kD,mDAaJ,6BACI,qFAEI,mHAAqC,WAAY,e,mBACjD,+EACJ,sEACJ,kE,MAJQ,0F,mDAWJ,2BACiD,oG,mBAE7C,+EACJ,sE,KAHI,8E,mDAFR,6BACI,kFAKA,mFAC8C,iG,mBAE1C,+EAEA,gF,oBAEJ,uEACJ,mE,oDAXQ,0DAIA,0FACA,oDAC0C,gDAGD,8EAArC,mC,mDAqCZ,2BAA0D,mGAEtD,Y,mBACJ,iB,MADI,iJ,mDAEJ,2BACI,uGAEA,Y,mBACJ,iB,MADI,iJ,yBAVR,0BACI,yE,mBAEA,8EAIA,8EAKJ,+D,8BAXyC,0FAGjC,mGAKA,2K,uGAIR,6BACI,+EACI,mFAAuB,YAAW,iBAClC,kGACI,iFACI,0FAEA,0FACJ,2EACJ,uEACJ,mEACA,qG,oBAC8C,aAAqB,iBACnE,mFAEI,sGAAwB,uBAAwB,W,oBAChD,6EACJ,mEACJ,+D,iCAhB+B,8CAIX,yEAMZ,2FAA0C,wDAE1C,mG,yBA2CI,gCAA8D,YAC9D,kB,uBAD0C,gCAAoB,6F,mDAGlE,gCAA4D,gI,mBAExD,+EACJ,sE,KAFI,oE,mDAvChB,6BACI,0EACI,gFAA2B,Y,mBAAkC,iBAC7D,8EACI,qFACiC,yF,oBADjC,iBAIA,oFACI,2FACuC,6G,oBAEnC,qFACJ,2EACA,2FACwC,2GAAqB,MAAO,U,oBAChE,qFACJ,2EACJ,uEACJ,mEACJ,+DACA,4EACI,gFACI,sFACI,a,oBACJ,iBACA,kF,oBAEI,iFACJ,uEACJ,mEACA,gFACI,uFACmC,2FAAqB,+GAEpD,6FAEJ,uEACA,yFAIJ,mEACJ,+DACJ,2D,yDA1Ce,+DAAoB,0EAEK,8DACxB,yDAEA,2FAF6B,8BAAmB,2CAK5C,qFACA,sCAIA,sFAQD,qEACH,iKAG+B,wFAKU,mEACzC,2DAA+B,gCAAqB,2CAE5C,yDAI2B,sE,yBAxCvD,6BACI,0EA6CJ,gE,8BA7CqB,2DAA2E,mC,mDA8ChG,2BAAyB,0FAErB,+DAA2D,Y,mBAC/D,iB,MAD+D,+F,2IArJnE,6BACI,kEACI,sEACI,4EAA2B,Y,mBAAqB,iBAChD,2EACI,kFACI,kHADJ,iBAGA,kFAOJ,+DACJ,2DACA,wEACI,4EACI,kFAA2B,a,oBAAqB,iBAChD,oFAeJ,+DACA,4EACI,kFAEI,kHAFJ,iBAIA,gFACI,uFACiD,kG,oBAE7C,iFAEJ,uEACA,uFAEI,mHAAqC,WAAY,e,oBAEjD,iFACJ,uEACJ,mEACJ,+DACJ,2DACJ,uDACA,oEACI,wEACI,8EAAuB,a,oBAAiC,iBACxD,8EACwC,8GADxC,iBAGJ,2DACA,wEACI,8EAaA,gFAmBJ,2DACJ,uDACA,+EA+CA,oEAIJ,4D,iCApJuC,mEAGnB,+DAAmC,2CAEP,wDAWL,oEACC,qEAkBxB,gFACA,gDAAmC,mEAI/B,+FACA,gDAEI,8FAGJ,2FAEA,gDASW,iFACD,uFACkB,4CAA+B,mEAGjB,0EACjD,sEAaA,oEAqBC,2DAgDV,sE,0BAiBQ,gCAA+D,YAAU,kB,uBAA9B,gCAAoB,4C,0BAwB/D,gCAAkE,YAAU,kB,uBAA9B,gCAAoB,4C,oDApClF,6BACI,kEACI,sEACI,4EAAgC,Y,mBAA2B,iBAC3D,6EACmC,uHADnC,iBAGJ,2DACA,wEACI,8EAAuB,a,oBAAkB,iBACzC,+EACI,8GACA,sFACJ,+DACJ,2DACJ,uDACA,oEACI,wEACI,8EAAwB,a,oBAAmB,iBAC3C,4EACI,kFACI,+GADJ,iBAGA,gFACI,uFAEI,gHAAkC,SAAU,a,oBAC5C,iFACJ,uEACJ,mEACJ,+DACJ,2DACA,wEACI,8EAA0B,a,oBAA4B,iBACtD,+EACI,iHACA,sFACJ,+DACJ,2DACA,wEACI,8EAAyB,a,oBAA2B,iBACpD,8EACI,gH,oBADJ,iBAGJ,2DACJ,uDACA,oEACI,wEACI,8EAAsB,a,oBAAyB,iBAC/C,4EACI,kFAEI,6GAFJ,iBAIA,gFACI,uFACiD,kG,oBAC7C,iFAEJ,uEACA,uFAEI,8GAAgC,eAAgB,oB,oBAChD,iFACJ,uEACJ,mEACJ,+DACJ,2DACJ,wDACJ,6D,iCAlE4C,yEAEG,oEAAwC,2CAIpD,iEAEnB,2DAA+B,2CACvB,0DAMY,mEAGhB,4DAAgC,2CAI5B,yFAQc,4EAEtB,8DAAkC,2CAC1B,6DAIa,0EAEa,4FAAlC,8CAAiC,2CAMf,yEAGd,gFACA,2CAA8B,2CAI1B,+FAEI,8FAGJ,4F,0BAgBR,gCAAmE,YAAU,kB,uBAA9B,gCAAoB,4C,oDANnF,6BACI,kEACI,sEACI,6EAAqB,Y,mBAAkB,iBACvC,+EACI,kHACA,sFACJ,+DACJ,2DACJ,uDACA,oEACI,wEACI,+EAAyB,a,oBAAsB,iBAC/C,+EACI,sHADJ,iBAEJ,2DACA,wEACI,+EAA0B,a,oBAAuB,iBACjD,+EACI,uHADJ,iBAEJ,2DACA,wEACI,+EAAwB,a,oBAAqB,iBAC7C,+EACI,qHADJ,iBAEJ,2DACJ,uDACA,oEACI,wEACI,+EAAwB,a,oBAAqB,iBAC7C,+EACI,qHADJ,iBAGJ,2DACA,wEACI,+EAAuB,a,oBAAoB,iBAC3C,+EACI,oHADJ,iBAEJ,2DACJ,uDACA,oEACI,wEACI,+EAAmB,a,oBAAgB,iBACnC,+EACI,gHADJ,iBAGJ,2DACA,wEACI,+EAA8B,a,oBAA2B,iBACzD,+EACI,2HADJ,iBAGJ,2DACA,wEACI,+EAA6B,a,oBAA0B,iBACvD,+EACI,0HADJ,iBAGJ,2DACJ,uDACA,oEACI,yEACI,iFAAqB,c,qBAAkB,iBACvC,iFACI,kHADJ,iBAGJ,4DACA,0EACI,iFAAqB,c,qBAAkB,iBACvC,iFACI,kHADJ,iBAEJ,4DACJ,wDACA,sEACI,0EACI,iFAAwB,c,qBAAqB,iBAC7C,iFACI,qHADJ,iBAEJ,4DACA,0EACI,iFAAwB,c,qBAAqB,iBAC7C,iFACI,qHADJ,iBAEJ,4DACJ,wDACA,sEACI,0EACI,iFAAwB,c,qBAAqB,iBAC7C,iFACI,qHADJ,iBAEJ,4DACA,0EACI,iFAAoB,c,qBAAqB,iBACzC,iFACI,iHADJ,iBAEJ,4DACJ,wDACA,sEACI,0EACI,iFAAqB,c,qBAA0B,iBAC/C,iFACI,kHADJ,iBAEJ,4DACA,0EACI,iFAA0B,c,qBAA0B,iBACpD,iFACI,uHADJ,iBAEJ,4DACJ,wDACA,sEACI,0EACI,iFAAuB,c,qBAAoB,iBAC3C,iFACI,oHADJ,iBAEJ,4DACJ,wDACJ,6D,iCAjHiC,gEAEjB,+DAAmC,2CAC3B,8DAMa,sEAErB,mEAAuC,2CAGjB,sEAEtB,oEAAwC,2CAGpB,oEAEpB,kEAAsC,2CAKlB,oEAEpB,kEAAsC,2CAInB,mEAEnB,iEAAqC,2CAKtB,+DAEf,6DAAiC,2CAIP,0EAE1B,wEAA4C,2CAInB,yEAEzB,uEAA2C,2CAM1B,kEAEjB,+DAAmC,2CAIlB,kEAEjB,+DAAmC,2CAKf,qEAEpB,kEAAsC,2CAGlB,qEAEpB,kEAAsC,2CAKlB,qEAEpB,kEAAsC,2CAGtB,qEAEhB,8DAAkC,2CAKjB,0EAEjB,+DAAmC,2CAGb,0EAEtB,oEAAwC,2CAKrB,oEAEnB,iEAAqC,4C,oDA0BrC,6BACI,qFACI,2GADJ,iBAGA,kFACI,yFAEI,6HAAuB,QAAS,Y,mBAChC,mFACJ,2EACJ,uEACJ,mE,6EAVW,gEAAsD,oDACzD,gCAAqB,2CAIjB,uF,oDAMZ,6BACI,qFAC4B,2GAD5B,iBAIA,kFACI,yFACiD,uI,mBAE7C,wFAEA,+EACJ,2EACA,2FAEI,iIAAuB,QAAS,EAAF,0BAAgC,UAAY,Y,oBAE1E,qFACJ,2EACJ,uEACJ,mE,6EAnBW,gEAAqB,8DACxB,oDAAwB,gCAAqB,gFAKzC,8FACA,6DAEI,wFAIJ,wFAEA,8D,oDAMR,gCACI,2GADJ,iB,6EAAO,iDAAqB,oDACxB,gCAAqB,4C,oDAG7B,gCAA4D,kI,mBAExD,2EACJ,kE,KAFI,oE,uBAGJ,iC,mBAEI,4EACJ,mE,KAFI,wE,oDA1DhB,8BACI,sEACI,0EACI,gFAA4B,Y,mBAAiB,iBAC7C,8E,oBAEI,6EACJ,mEACJ,+DACA,+EAA8D,0FAA9D,iBAEJ,2DACA,wEACI,8EAA6B,a,oBAAkB,iBAC/C,4EACI,qFAYA,sFAqBA,iFACI,0FAGJ,mEACA,sFAIA,uFAIJ,+DACJ,2DACJ,uD,yDA5DmB,gEAAqB,+DAEO,wFAIhC,+DAAgC,mDAAuB,+BAAoB,2CAI3E,iEAAsB,iEAEA,8DAYA,gEAuBK,iEAIS,qEAII,sE,oDA3D3D,8BAAiB,uGACb,wEAgEJ,kD,iCAhE6B,uDAAuE,mC,oDAiEpG,4BAAyB,4FAErB,2DAA2D,Y,mBAC/D,iB,MAD+D,mG,0BAMnD,gCAAkE,YAAU,kB,uBAA9B,gCAAoB,4C,oDAJ9E,6BACI,mEACI,yEAA0C,Y,mBAAiB,iBAC3D,0EAAmE,yGAC/D,iFACJ,2DACJ,uDACJ,mD,iCALkD,8DACyB,sDACvD,8D,0BAYJ,gCAA+D,YAAU,kB,uBAA9B,gCAAoB,4C,oDAR/E,6BACI,iEAAiB,Y,mBAAsB,iBACvC,kEACI,uEACI,8EAA4B,a,oBAA4B,iBACxD,gFACI,kHAAmC,2FAEnC,sFACJ,+DACJ,2DACJ,uDACJ,4D,iCAXqB,mEAGmB,0EAExB,+DAAmC,2CAE3B,2D,uBAOpB,0BACI,Y,mBACJ,kB,MADI,qI,oDAGA,8BACI,6EAAgD,6FAAhD,iBAGA,6EAAuD,YAAU,iBACrE,0D,yDAHQ,iEAAsB,6DADsB,kCAAuB,2CAGvC,kEAAuB,4C,0BAL/D,6BACI,0EAMJ,gE,8BAN4B,sD,0BANhC,6BACI,iEAAiB,Y,mBAAwB,iBACzC,qEAGA,8EAQJ,4D,8BAZqB,qEACZ,0EAGS,yE,0BAeV,0BACI,yEAAgC,Y,mBAAiC,iBACjE,Y,mBACJ,kB,8BAFoC,qFAChC,qK,oDAEJ,0BACI,yEAAgC,Y,mBAA6B,iBAC7D,yEAAyB,+F,mBACrB,YACJ,iBACJ,0D,iCAJoC,iFACiB,0EAC7C,4I,0BAIJ,0BACI,Y,mBACA,+BAAmD,YAAe,iBACtE,+D,uBAFI,2JACmD,gD,0BAH3D,8BACI,8EAIJ,2D,8BAJS,iE,0BAjBjB,6BACI,mEACI,mEACI,yEAAgC,Y,mBAAyB,iBACzD,Y,oBACJ,iBACA,2EAIA,4EAMA,4EAMJ,uDACJ,6D,8BApB4C,6EAChC,sJAEC,uDAIA,yDAMa,8D,oDAhf9B,6BACI,wEAGA,iEASA,8DACI,kEACI,yEAAkB,a,oBAAiB,iBACnC,0EAA8D,uGAA9D,iBAEJ,uDACA,uEAOJ,mDACA,kCACA,8EAwJA,kCACA,+EAsEA,kCACA,+EAqHA,gEACI,sEAAmB,a,oBAAkB,iBACrC,yEAA2C,wGACwB,iBACvE,mDACA,+DAAiB,a,oBAAyB,iBAC1C,mEAkEA,iEAIA,oEAQA,6EAaA,6EAcA,8EAwBJ,+C,gCAvf6B,mFAGR,6DAWS,gEAC4C,qDAAyB,2CAG7D,oDASpB,uEAyJA,sEAuEA,0EAsHS,iEACwB,sDAA0B,2CAGxD,wEACoC,uDAmEjD,qEAGa,qEAQH,iEAaA,wFAcA,gD,0BA0Bd,iCACI,4D,mBACA,gEAAM,Y,mBAAmD,iBAC7D,mD,gDAHyD,mCACpB,6EAC3B,4G,4GAMN,gCAAiE,kG,mBAE7D,+DAEJ,sD,iCAHyB,qGACD,qG,oDAGxB,qCAAiC,0F,mBAG7B,gEACA,gE,mBAEJ,sD,oDALI,2GAC+B,mCAA8B,gCACxB,gDAEjC,6EADyC,mC,0BAVrD,8BACI,yEAKA,0EAOJ,mD,6BAZY,yEAOJ,8DD7fxB,mBAkBI,WAAYkyB,EAA8BC,EACtCx3B,EAA0Byb,EAC1Bgc,EAA4B1d,EAC5B8b,EAA0B6B,EAChBC,EAAoCC,EACpC7hB,EAAoC8hB,EACpCC,GANd,MAOI,YAAMP,EAAeC,EAAex3B,EAAayb,EAAsBgc,EAAc1d,EACjF8b,EAAa6B,EAAmB3hB,EAAkB8hB,EAAcC,IAAc,K,OAJxE,EAAAH,cAAoC,EAAAC,4BACpC,EAAA7hB,mBACA,EAAA+hB,gBAbd,EAAAC,kBAAmB,EACnB,EAAAC,oBAAqB,EACrB,EAAAC,wBAAyB,EACzB,EAAAC,UAAW,E,SAVuB,OAyB5B,YAAA12B,SAAN,W,yGACI,SAAM,YAAMA,SAAQ,Y,OACpB,OADA,SACA,GAAMlB,KAAK6Z,Q,OAKa,OALxB,SACA7Z,KAAKy3B,iBAA8D,MAA3Cz3B,KAAKuG,OAAOsxB,4BACpC73B,KAAK03B,mBAAqB13B,KAAKuG,OAAOmxB,mBACtC13B,KAAK83B,UAEL,EAAA93B,KAAwB,GAAMA,KAAKu1B,YAAYc,oB,cAA/C,EAAKA,iBAAmB,SACpBr2B,KAAKuG,OAAOpE,OAAS,EAAAyG,WAAWC,OAAS7I,KAAKuG,OAAOmC,MAAM4e,OAC1DtnB,KAAKuG,OAAOse,qBAAuB7kB,KAAKq2B,kBACzC,GAAMr2B,KAAK+3B,kBAFX,M,OAIA,OAFA,SACM,EAAW/3B,KAAKq3B,YAAYW,gBAAgBh4B,KAAKuG,OAAOmC,MAAM4e,MACpE,GAAMtnB,KAAKi4B,SAAS,I,OAApB,SAEAj4B,KAAKk4B,aAAeztB,OAAO0tB,aAAY,gD,kDACnC,SAAMn4B,KAAKi4B,SAAS,I,cAApB,S,aACD,K,mCAIX,YAAAG,eAAA,WACIp4B,KAAKuG,OAAOgC,UAAYvI,KAAKuG,OAAOgC,UAGxC,YAAA8vB,OAAA,SAAOxzB,GACEA,EAAI4iB,YAITznB,KAAKmb,qBAAqB2Z,WAAW,sBACrC90B,KAAKmb,qBAAqBuM,UAAU7iB,EAAI6iB,aAG5C,YAAA4Q,KAAA,SAAK55B,EAAe65B,EAAqBC,GACxB,MAAT95B,IAIJsB,KAAKmb,qBAAqB2Z,WAAW,UAAY0D,GACjDx4B,KAAKmb,qBAAqBsd,gBAAgB/5B,EAAO,CAAE+L,OAAQA,SAC3DzK,KAAKmb,qBAAqBud,UAAU,OAAQ,KACxC14B,KAAKN,YAAYO,EAAE,cAAeD,KAAKN,YAAYO,EAAEs4B,KAErDv4B,KAAK24B,WACe,aAAhBJ,EACAv4B,KAAKu3B,aAAaqB,QAAQ,EAAA7J,UAAUoB,uCAAwCnwB,KAAKozB,UAC1D,iBAAhBmF,EACPv4B,KAAKu3B,aAAaqB,QAAQ,EAAA7J,UAAUwB,4BAA6BvwB,KAAKozB,UACrD,YAAVoF,GACPx4B,KAAKu3B,aAAaqB,QAAQ,EAAA7J,UAAUsB,+BAAgCrwB,KAAKozB,aAK/E,YAAAyF,iBAAN,W,oGACsB,SAAM,YAAMA,iBAAgB,Y,cAAxCC,EAAY,UAEG,GAAM94B,KAAKs3B,0BAA0ByB,cADtD,M,OAE6B,OADvBr1B,EAAW,SAAmD,GACpE,EAAA1D,KAAKuG,OAAOmC,MAAiB,GAAM1I,KAAKs3B,0BAA0BuB,iBAAiBn1B,I,OAAnF,EAAkBoG,SAAW,S,iBAEjC,MAAO,CAAP,EAAOgvB,WAGX,YAAAE,gBAAA,WACSh5B,KAAKq2B,kBACNr2B,KAAKyV,iBAAiBkB,KAAK,oBAKnC,YAAAsiB,oBAAA,WACIj5B,KAAKyV,iBAAiBkB,KAAK,sBAAuB,CAAEpU,eAAgBvC,KAAKuG,OAAOhE,kBAGpF,YAAA22B,YAAA,WACIl5B,KAAK23B,wBAA0B33B,KAAK23B,wBAG9B,YAAAG,QAAV,WACQ93B,KAAKk4B,cACLztB,OAAO0uB,cAAcn5B,KAAKk4B,eAIlB,YAAAH,eAAhB,W,kGACI,OAAmB,MAAf/3B,KAAKuG,QAAkBvG,KAAKuG,OAAOpE,OAAS,EAAAyG,WAAWC,OAAmC,MAA1B7I,KAAKuG,OAAOmC,MAAM4e,MAC9EtnB,KAAKk4B,cACLztB,OAAO0uB,cAAcn5B,KAAKk4B,cAE9B,MAGJ,EAAAl4B,KAAgB,GAAMA,KAAKq3B,YAAY+B,QAAQp5B,KAAKuG,OAAOmC,MAAM4e,Q,cAAjE,EAAK+R,SAAW,SACK,MAAjBr5B,KAAKq5B,SACDr5B,KAAKq5B,SAASl7B,OAAS,GACjBm7B,EAAOtrB,KAAKkmB,MAAMl0B,KAAKq5B,SAASl7B,OAAS,GAC/C6B,KAAKu5B,kBAAoBv5B,KAAKq5B,SAASh0B,UAAU,EAAGi0B,GAAQ,IAAMt5B,KAAKq5B,SAASh0B,UAAUi0B,IAE1Ft5B,KAAKu5B,kBAAoBv5B,KAAKq5B,UAGlCr5B,KAAKu5B,kBAAoB,KACrBv5B,KAAKk4B,cACLztB,OAAO0uB,cAAcn5B,KAAKk4B,e,YAK5B,YAAAsB,yBAAV,WACI,QAASx5B,KAAK24B,UAAY34B,KAAKy5B,YAAuC,MAAzBz5B,KAAK05B,mBAC1C15B,KAAK05B,iBAAiBv7B,OAAS,IAAM6B,KAAK25B,gBAGxC,YAAA1B,SAAd,SAAuB2B,G,yGACbC,EAAQ7rB,KAAK8rB,OAAM,IAAI3Q,MAAOiF,UAAY,KAC1C2L,EAAMF,EAAQD,EAEpB55B,KAAKg6B,QAAUJ,EAAkBG,EACjC/5B,KAAKi6B,WAAajsB,KAAK8rB,MAAS,KAAOF,EAAmBG,EAAO,OAAiB,OAClF/5B,KAAKk6B,QAAUl6B,KAAKg6B,SAAW,EACnB,IAARD,EAAA,MACA,GAAM/5B,KAAK+3B,kB,OAAX,S,oEAlJChC,GAAgB,of,iCAAhBA,EAAgB,66UC1B7B,4BACI,iDACI,wDAAkC,2CAAY,EAAAjO,YAE1C,yDACI,4DAAgD,aAAS,iBACzD,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,gEAyfA,2DACI,sEAIA,mEACI,a,oBACJ,iBACA,mEAcJ,+CACJ,2CACJ,uCACJ,mCACA,mB,MA3hBgE,0DAGA,4CACS,mFAIrC,6CA0f+D,gDAK/E,mIAEiB,4D,4eDrfrC,CAIsC,oBAAzB,EAAAiO,qB,8EEpBb,mBAAsB,EAAAoE,iB,yxDCNtB,WAmBA,GAXA,KACA,MAEA,MACA,MACA,KACA,KACA,MACA,OACA,KAEA,QAEA,QACA,S,mKCRoB,6BACI,+D,mBACA,uEAAsB,Y,mBAAmB,iBAC7C,gE,MAF2C,4EACjB,iE,sBAKtB,6BACI,mE,mBAEA,2EAAsB,Y,mBAA+B,iBACzD,oE,MAFQ,wFACkB,6E,yBAN9B,6BACI,+D,mBACA,uEAAsB,Y,mBAAwB,iBAC9C,gFAKJ,iE,4DAP2C,iFACjB,qEACR,gE,mDAuBN,2BACI,yIAAmC,WAAY,eAC/C,2EACA,Y,mBACJ,iB,MADI,sJ,mDAEJ,2BAA+C,qIAA+B,uBAAwB,WAElG,2EACA,Y,mBACJ,iB,MADI,8J,mDAEJ,2BACI,8IACA,2EACA,Y,mBACJ,iB,MADI,gJ,mDAnBR,6BACI,4EACI,wIAAmC,WAAY,eAC/C,2EACA,Y,mBACJ,iBACA,8EAKA,+EAKA,gFAKJ,wE,+DAjBQ,qJAG4D,mDAK5D,+DAI2C,uD,mDAUnD,2BAEI,4HACA,uEACA,Y,mBACJ,iB,MADI,uI,mDAEJ,2BAC+D,4HAC3D,uEACA,Y,mBACJ,iB,MADI,uI,mDAEJ,2BACI,kIACA,uEACA,Y,mBACJ,iB,MADI,6I,mDAEJ,2BACI,6HACA,uEACA,Y,mBACJ,iB,MADI,2I,mDAEJ,2BAA+C,8HAC3C,uEACA,Y,mBACJ,iB,MADI,yI,mDAnFpB,yBACI,4DAAI,kHACA,mEAAuB,6FAAvB,iBACJ,kDACA,4DAAI,kHACA,uEACJ,mDACA,8DAAI,kHACA,kEAAqC,mH,oBACH,aAAU,iBAC5C,8EAIA,+EASA,2DACA,sEAAmB,aAAc,iBACrC,mDACA,+DACI,oEACI,2E,oBAGI,qEACJ,2DACA,wEACI,uFAsBA,0EAA+C,kHAC3C,yEACA,a,oBACJ,iBACA,4EAMA,4EAKA,4EAKA,4EAKA,4EAIA,0EAA2D,6GACvD,yEACA,a,oBACJ,iBACJ,2DACJ,uDACJ,mDACJ,+C,+CA1F+B,iDAGP,wCAIZ,gFAA8B,2CACpB,sEAIA,qDAUK,+CAMX,sFAIc,8EAwBV,8IAGA,uGAMA,qFAI2C,mEAKA,qEAKqB,gDAMhE,0K,mDA1F5B,8BACwE,+FACpE,qDACI,4DA6FJ,0CACJ,sC,yDAhGI,yCAA4B,wCAEpB,0C,sBAgGR,6BACI,mD,mBACA,2DAAsB,Y,mBAAoB,iBAC9C,oD,MAFgD,6EACtB,kE,mDAItB,gCAAQ,6FACJ,uDAAgC,Y,mBAAoB,iB,MAApB,kE,yBAHxC,6BACI,qDAAG,Y,mBAA0B,iBAC7B,+DAEJ,oD,8BAHO,uEAC2D,kD,yBAPtE,6BACI,gEAIA,gEAKJ,uC,8BATkB,8CAIA,8C,yBAxGtB,6BACI,qDAkGA,mDAWJ,4C,kBA7G8D,6CAkGpC,+CDzE1B,IAEA,cAeI,WAAYC,EAAwC/F,EACtCzM,EAA0CloB,EAC1Cyb,EAAsD8b,EACtDM,EAAsCF,EAAoC9B,GAHxF,MAII,YAAM6E,IAAc,K,OAJ4B,EAAA/F,YACtC,EAAAzM,iBAA0C,EAAAloB,cAC1C,EAAAyb,uBAAsD,EAAA8b,gBACtD,EAAAM,eAAsC,EAAAF,cAAoC,EAAA9B,cAb/E,EAAA8E,YAAa,EACZ,EAAAC,qBAAuB,IAAI,EAAAvX,aAC3B,EAAAwX,eAAiB,IAAI,EAAAxX,aACrB,EAAAyX,qBAAuB,IAAI,EAAAzX,aAC3B,EAAA0X,eAAiB,IAAI,EAAA1X,aAE/B,EAAA2X,WAAa,EAAA9xB,WAEb,EAAA+xB,sBAAuB,EAOnB,EAAKC,SAAW,I,SAhBc,OAmB5B,YAAA15B,SAAN,W,gGACgC,OAA5B,EAAAlB,KAA4B,GAAMA,KAAKu1B,YAAYc,oB,cAAnD,EAAKsE,qBAAuB,S,YAGhC,YAAAjlB,YAAA,WACI1V,KAAK66B,WAAU,IAGnB,YAAAxC,OAAA,SAAOxzB,GACH7E,KAAKmb,qBAAqB2Z,WAAW,sBACrC90B,KAAKmb,qBAAqBuM,UAAU7iB,IAGxC,YAAAqgB,YAAA,SAAYnX,GACR/N,KAAKs6B,qBAAqB5jB,KAAK3I,IAGnC,YAAA+sB,MAAA,SAAM/sB,GACF/N,KAAKu6B,eAAe7jB,KAAK3I,IAG7B,YAAA3G,YAAA,SAAY2G,GACR/N,KAAKw6B,qBAAqB9jB,KAAK3I,IAGnC,YAAAgtB,MAAA,SAAMhtB,GACF/N,KAAKy6B,eAAe/jB,KAAK3I,IAGvB,YAAAitB,OAAN,SAAajtB,G,gGACT,OAA0B,MAAtB/N,KAAKi7B,cACL,KAEEC,EAAYntB,EAAEotB,UACF,GAAMn7B,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAEi7B,EAAY,oCAAsC,0BACrEl7B,KAAKN,YAAYO,EAAEi7B,EAAY,wBAA0B,cACzDl7B,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,a,OACzD,IAJkB,SAKd,MAAO,CAAP,GAAO,G,iBAKP,O,sBADAD,KAAKi7B,cAAgBj7B,KAAKo7B,aAAartB,EAAEnO,GAAIs7B,GAC7C,GAAMl7B,KAAKi7B,e,cAAX,SACAj7B,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,mBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAEi7B,EAAY,yBACvE,gBACNl7B,KAAKq7B,U,iDAETr7B,KAAKi7B,cAAgB,K,YAGnB,YAAAK,QAAN,SAAcvtB,G,0FACV,OAA0B,MAAtB/N,KAAKi7B,eAA0BltB,EAAEotB,UAGnB,GAAMn7B,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,2BACnBD,KAAKN,YAAYO,EAAE,eACnBD,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,YALrD,I,OAMJ,IAJkB,SAKd,MAAO,CAAP,GAAO,G,iBAKP,O,sBADAD,KAAKi7B,cAAgBj7B,KAAKi3B,cAAcsE,kBAAkBxtB,EAAEnO,IAC5D,GAAMI,KAAKi7B,e,cAAX,SACAj7B,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,oBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,iBACjED,KAAKq7B,U,iDAETr7B,KAAKi7B,cAAgB,K,YAGnB,YAAA3C,KAAN,SAAW/xB,EAAoB7H,EAAe65B,EAAqBC,G,iGAClD,MAAT95B,GAA2B,SAAV85B,IAAqBx4B,KAAKw7B,sBAAsBj1B,GACjE,IADA,M,cAEO7H,IAAU6H,EAAOmC,MAAM4e,KAAvB,MACC,GAAMtnB,KAAKq3B,YAAY+B,QAAQ16B,I,OAAvCA,EAAQ,S,wBAGZsB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,UAAYwD,EAAMx2B,cAAgB,mBAC3EhC,KAAKmb,qBAAqBsd,gBAAgB/5B,EAAO,CAAE+L,OAAQA,SAC3DzK,KAAK4nB,eAAeI,SAAS,OAAQ,KACjChoB,KAAKN,YAAYO,EAAE,cAAeD,KAAKN,YAAYO,EAAEs4B,KAErC,aAAhBA,GAA8C,yBAAhBA,EAC9Bv4B,KAAKu3B,aAAaqB,QAAQ,EAAA7J,UAAUoB,uCAAwC5pB,EAAO3G,IAC5D,iBAAhB24B,GACPv4B,KAAKu3B,aAAaqB,QAAQ,EAAA7J,UAAUwB,4BAA6BhqB,EAAO3G,I,YAIhF,YAAAi7B,UAAA,SAAUY,GACFA,GACAz7B,KAAK66B,WAAU,GAKnB,IAHA,IAAMa,EAAcD,GAAUz7B,KAAK2J,QAAQxL,OA3H3B,QA6HV6B,KAAK2J,QAAQxL,OACVF,EAAI,EAAGA,EAAIy9B,EAAaz9B,IAC7B+B,KAAK27B,YAAY37B,KAAK2J,QAAQ1L,GAAIw9B,IAI1C,YAAAE,YAAA,SAAY5tB,EAAe0tB,GACtB1tB,EAAU6tB,QAAoB,MAAVH,GAAmB1tB,EAAU6tB,QAAUH,GAGhE,YAAAI,YAAA,WACI,OAAoB,MAAhB77B,KAAK2J,QACE,GAEJ3J,KAAK2J,QAAQxB,QAAO,SAAA4F,GAAK,QAAGA,EAAU6tB,YAGjD,YAAAE,eAAA,WACI,OAAO97B,KAAK67B,cAAcv0B,KAAI,SAAAyG,GAAK,OAAAA,EAAEnO,OAGzC,YAAA47B,sBAAA,SAAsBj1B,G,QAClB,OAA8B,QAAvB,EAAc,QAAd,EAACA,aAAM,EAANA,EAAQmC,aAAK,eAAEqzB,eAAO,WACzBx1B,EAAOse,qBAAuB7kB,KAAK26B,uBAGlC,YAAAS,aAAV,SAAuBx7B,EAAYs7B,GAC/B,OAAOA,EAAYl7B,KAAKi3B,cAAc+E,iBAAiBp8B,GAAMI,KAAKi3B,cAAcgF,qBAAqBr8B,IAG/F,YAAAs8B,sBAAV,SAAgCnuB,GAC5B,OAAOA,EAAEouB,mBAAyC,MAApBpuB,EAAExL,gB,iCAtJ3B65B,GAAgB,+U,iCAAhBA,EAAgB,m5EChC7B,uCA+GA,kB,KA/Gc,4D,wOD4Bd,CAIsC,oBAAzB,EAAAA,oB,69CE/Bb,aAEA,SAGA,SACA,SACA,SACA,SAiBa,EAAAC,qBAAkB,MAC1B,EAAA7hB,sBAAsBqO,eAAgB,CACnC1mB,KAAM,EAAAqY,sBAAsBqO,cAC5BnhB,KAAM,KACN40B,YAAa,KACbC,SAAU,EACVC,KAAM,EACNC,SAAS,GAEb,EAAC,EAAAjiB,sBAAsBuO,SAAU,CAC7B5mB,KAAM,EAAAqY,sBAAsBuO,QAC5BrhB,KAAM,KACN40B,YAAa,KACbC,SAAU,EACVC,KAAM,EACNC,SAAS,GAEb,EAAC,EAAAjiB,sBAAsB6N,KAAM,CACzBlmB,KAAM,EAAAqY,sBAAsB6N,IAC5B3gB,KAAM,MACN40B,YAAa,KACbC,SAAU,EACVC,KAAM,EACNC,SAAS,GAEb,EAAC,EAAAjiB,sBAAsB8N,iBAAkB,CACrCnmB,KAAM,EAAAqY,sBAAsB8N,gBAC5B5gB,KAAM,qBACN40B,YAAa,KACbC,SAAU,GACVC,KAAM,EACNC,SAAS,GAEb,EAAC,EAAAjiB,sBAAsBmO,KAAM,CACzBxmB,KAAM,EAAAqY,sBAAsBmO,IAC5BjhB,KAAM,KACN40B,YAAa,KACbC,SAAU,EACVC,KAAM,EACNC,SAAS,GAEb,EAAC,EAAAjiB,sBAAsBiO,OAAQ,CAC3BtmB,KAAM,EAAAqY,sBAAsBiO,MAC5B/gB,KAAM,KACN40B,YAAa,KACbC,SAAU,EACVC,KAAM,EACNC,SAAS,G,GAIjB,iBAaI,WAAoBtjB,EAAsCiC,EAC9Cma,EAAkCmH,EAClCC,EAAoCj9B,EACpCyb,EAAoD1F,EACpDmnB,EAAkDp6B,EAClDq6B,QAAA,IAAAA,OAAA,GALQ,KAAA1jB,gBAAsC,KAAAiC,aAC9C,KAAAma,cAAkC,KAAAmH,eAClC,KAAAC,eAAoC,KAAAj9B,cACpC,KAAAyb,uBAAoD,KAAA1F,mBACpD,KAAAmnB,sBAAkD,KAAAp6B,aAClD,KAAAq6B,gBATZ,KAAAC,8BAAuD,KAyS3D,OA7RI,YAAApyB,KAAA,WACI,EAAA2xB,mBAAmB,EAAA7hB,sBAAsBiO,OAAO/gB,KAAO1H,KAAKN,YAAYO,EAAE,cAC1E,EAAAo8B,mBAAmB,EAAA7hB,sBAAsBiO,OAAO6T,YAAct8B,KAAKN,YAAYO,EAAE,aAEjF,EAAAo8B,mBAAmB,EAAA7hB,sBAAsBqO,eAAenhB,KAAO1H,KAAKN,YAAYO,EAAE,yBAClF,EAAAo8B,mBAAmB,EAAA7hB,sBAAsBqO,eAAeyT,YACpDt8B,KAAKN,YAAYO,EAAE,wBAEvB,EAAAo8B,mBAAmB,EAAA7hB,sBAAsB6N,KAAKiU,YAAct8B,KAAKN,YAAYO,EAAE,WAE/E,EAAAo8B,mBAAmB,EAAA7hB,sBAAsB8N,iBAAiB5gB,KACtD,QAAU1H,KAAKN,YAAYO,EAAE,gBAAkB,IACnD,EAAAo8B,mBAAmB,EAAA7hB,sBAAsB8N,iBAAiBgU,YACtDt8B,KAAKN,YAAYO,EAAE,uBAEvB,EAAAo8B,mBAAmB,EAAA7hB,sBAAsBmO,KAAKjhB,KAAO1H,KAAKN,YAAYO,EAAE,YACxE,EAAAo8B,mBAAmB,EAAA7hB,sBAAsBmO,KAAK2T,YAAct8B,KAAKN,YAAYO,EAAE,WAE/E,EAAAo8B,mBAAmB,EAAA7hB,sBAAsBuO,SAASrhB,KAAO1H,KAAKN,YAAYO,EAAE,gBAC5E,EAAAo8B,mBAAmB,EAAA7hB,sBAAsBuO,SAASuT,YAAct8B,KAAKN,YAAYO,EAAE,gBAGjF,YAAA88B,MAAN,SAAY/b,EAAe+G,G,kGAEX,OADZ/nB,KAAK88B,8BAAgC,KACzB,GAAM98B,KAAKg9B,gBAAgBjV,EAAgB/G,I,OAChC,OADjBriB,EAAM,SACW,GAAMqB,KAAKmZ,cAAc8O,aAAaF,EAAgBppB,I,OACtE,OADDs+B,EAAiB,SAChB,GAAMj9B,KAAKk9B,YAAYlc,EAAOic,EAAgB,KAAM,KAAM,KAAM,KAAM,KACzEt+B,EAAK,KAAM,KAAM,O,OADrB,MAAO,CAAP,EAAO,kBAIL,YAAAw+B,SAAN,SAAe9lB,EAAc+lB,EAAsBC,G,0FAExC,OADPr9B,KAAK88B,8BAAgC,KAC9B,GAAM98B,KAAKk9B,YAAY,KAAM,KAAM7lB,EAAM+lB,EAAcC,EAAa,KAAM,KAC7E,KAAM,KAAM,KAAM,O,OADtB,MAAO,CAAP,EAAO,kBAIL,YAAAC,YAAN,SAAkBC,EAAkB/d,G,0FAEzB,OADPxf,KAAK88B,8BAAgC,KAC9B,GAAM98B,KAAKk9B,YAAY,KAAM,KAAM,KAAM,KAAM,KAAMK,EAAU/d,EAClE,KAAM,KAAM,KAAM,O,OADtB,MAAO,CAAP,EAAO,kBAIL,YAAAge,eAAN,SAAqBC,EAA0CC,EAC3DC,G,0FACO,SAAM39B,KAAKk9B,YAAYl9B,KAAKghB,MAAOhhB,KAAKkoB,mBAAoBloB,KAAKqX,KAAMrX,KAAKo9B,aAC/Ep9B,KAAK49B,eAAgB59B,KAAKu9B,SAAUv9B,KAAKwf,aAAcxf,KAAKrB,IAAK8+B,EACjEC,EAAgBC,I,OAFpB,MAAO,CAAP,EAAO,kBAKL,YAAAE,cAAN,SAAoB7c,EAAe+G,EAAwB0V,EACvDC,EAAwBC,G,kGAEZ,OADZ39B,KAAK88B,8BAAgC,KACzB,GAAM98B,KAAKg9B,gBAAgBjV,EAAgB/G,I,OAChC,OADjBriB,EAAM,SACW,GAAMqB,KAAKmZ,cAAc8O,aAAaF,EAAgBppB,I,OACtE,OADDs+B,EAAiB,SAChB,GAAMj9B,KAAKk9B,YAAYlc,EAAOic,EAAgB,KAAM,KAAM,KAAM,KAAM,KAAMt+B,EAC/E8+B,EAAmBC,EAAgBC,I,OADvC,MAAO,CAAP,EAAO,kBAIL,YAAAG,iBAAN,SAAuBzmB,EAAc+lB,EAAsBC,EACvDI,EAA0CC,EAAwBC,G,0FAE3D,OADP39B,KAAK88B,8BAAgC,KAC9B,GAAM98B,KAAKk9B,YAAY,KAAM,KAAM7lB,EAAM+lB,EAAcC,EAAa,KACvE,KAAM,KAAMI,EAAmBC,EAAgBC,I,OADnD,MAAO,CAAP,EAAO,kBAIL,YAAAI,oBAAN,SAA0BR,EAAkB/d,EAAsBie,EAC9DC,EAAwBC,G,0FAEjB,OADP39B,KAAK88B,8BAAgC,KAC9B,GAAM98B,KAAKk9B,YAAY,KAAM,KAAM,KAAM,KAAM,KAAMK,EAAU/d,EAAc,KAChFie,EAAmBC,EAAgBC,I,OADvC,MAAO,CAAP,EAAO,kBAIX,YAAAK,OAAA,SAAOC,GACHA,IACAj+B,KAAKyV,iBAAiBkB,KAAK,cAG/B,YAAAunB,+BAAA,SAA+BpuB,GAC3B,IAAMquB,EAAmB,GACzB,OAAmC,MAA/Bn+B,KAAKo+B,yBAILp+B,KAAKo+B,uBAAuBC,IAAI,EAAA7jB,sBAAsB8N,kBACtDtoB,KAAKmb,qBAAqBmjB,eAC1BH,EAAUh5B,KAAK,EAAAk3B,mBAAmB,EAAA7hB,sBAAsB8N,kBAGxDtoB,KAAKo+B,uBAAuBC,IAAI,EAAA7jB,sBAAsBqO,gBACtDsV,EAAUh5B,KAAK,EAAAk3B,mBAAmB,EAAA7hB,sBAAsBqO,gBAGxD7oB,KAAKo+B,uBAAuBC,IAAI,EAAA7jB,sBAAsBuO,UACtDoV,EAAUh5B,KAAK,EAAAk3B,mBAAmB,EAAA7hB,sBAAsBuO,UAGxD/oB,KAAKo+B,uBAAuBC,IAAI,EAAA7jB,sBAAsB6N,MAAQroB,KAAKmb,qBAAqBmjB,eACxFH,EAAUh5B,KAAK,EAAAk3B,mBAAmB,EAAA7hB,sBAAsB6N,MAGxDroB,KAAKo+B,uBAAuBC,IAAI,EAAA7jB,sBAAsBmO,MAAQ3oB,KAAKmb,qBAAqBojB,YAAYzuB,IACpGquB,EAAUh5B,KAAK,EAAAk3B,mBAAmB,EAAA7hB,sBAAsBmO,MAGxD3oB,KAAKo+B,uBAAuBC,IAAI,EAAA7jB,sBAAsBiO,QACtD0V,EAAUh5B,KAAK,EAAAk3B,mBAAmB,EAAA7hB,sBAAsBiO,SAzBjD0V,GA+Bf,YAAAK,4BAAA,SAA4BC,GACxB,GAAmC,MAA/Bz+B,KAAKo+B,uBACL,OAAO,KAGX,GAA0C,MAAtCp+B,KAAK88B,+BACL98B,KAAKo+B,uBAAuBC,IAAIr+B,KAAK88B,+BACrC,OAAO98B,KAAK88B,8BAGhB,IAAI4B,EAAsC,KACtCC,GAAoB,EAaxB,OAZA3+B,KAAKo+B,uBAAuBh6B,SAAQ,SAAC1F,EAAOyD,GACxC,IAAMy8B,EAAY,EAAAvC,mBAA2Bl6B,GAC7C,GAAgB,MAAZy8B,GAAoBA,EAASrC,SAAWoC,EAAkB,CAC1D,GAAIx8B,IAAS,EAAAqY,sBAAsBmO,MAAQ8V,EACvC,OAGJC,EAAev8B,EACfw8B,EAAmBC,EAASrC,aAI7BmC,GAGL,YAAA1B,gBAAN,SAAsBjV,EAAwB/G,G,sGAC1CA,EAAQA,EAAMjd,OAAO/B,cACjB68B,EAAe,KACfC,EAAwB,K,iBAEC,O,sBAAA,GAAM9+B,KAAKob,WAAW2jB,aAAa,IAAI,EAAAC,gBAAgBhe,K,cACxD,OADlBie,EAAmB,YAErBJ,EAAMI,EAAiBJ,IACvBC,EAAgBG,EAAiBH,e,aAGrC,GAAS,O,aAAyB,MAAjB,EAAEI,WACf,MAAM,E,mBAGd,MAAO,CAAP,EAAOl/B,KAAKmZ,cAAcgmB,QAAQpX,EAAgB/G,EAAO6d,EAAKC,YAGlE,YAAAM,kBAAA,WACI,OAAwB,MAAjBp/B,KAAKu9B,UAAyC,MAArBv9B,KAAKwf,cAGzC,YAAA6f,eAAA,WACI,OAAoB,MAAbr/B,KAAKqX,MAAqC,MAArBrX,KAAKo9B,cAA+C,MAAvBp9B,KAAK49B,gBAGlE,YAAA0B,oBAAA,WACI,OAAqB,MAAdt/B,KAAKghB,OAA4C,MAA3BhhB,KAAKkoB,oBAGxB,YAAAgV,YAAd,SAA0Blc,EAAeic,EAAwB5lB,EAAc+lB,EAC3EC,EAAqBE,EAAkB/d,EAAsB7gB,EAC7D8+B,EAA2CC,EAAyBC,G,wHACvC,SAAM39B,KAAK08B,aAAa6C,kBAAkBve,I,OACzD,OADRwe,EAAuB,SACf,GAAMx/B,KAAK28B,aAAa8C,Y,OAmCrB,OAnCXC,EAAQ,SACRC,EAAgB,IAAI,EAAAC,cAAcF,EAAO1/B,KAAKmb,sBAEhD0kB,EAA0B,GAC1BC,EAA6B,GAC7BC,EAAiC,GAGjCF,EADS,MAAT7e,GAAmC,MAAlBic,EACD,CAACjc,EAAOic,GAER,KAGhB6C,EADQ,MAARzoB,GAAgC,MAAhB+lB,GAAuC,MAAfC,EACrB,CAAChmB,EAAM+lB,EAAcC,GAErB,KAGnB0C,EADY,MAAZxC,GAAoC,MAAhB/d,EACG,CAAC+d,EAAU/d,GAEX,KAKvB2E,EADkB,MAAlBuZ,GAA+C,MAArBD,EAChB,IAAI,EAAAuC,aAAaH,EAAeC,EAAkBC,EAAsBtC,EAC9EC,EAAgBC,EAAUgC,GACC,MAAxBH,EACG,IAAI,EAAAQ,aAAaH,EAAeC,EAAkBC,EAAsB,EAAAvlB,sBAAsBylB,SACpGT,GAAsB,EAAOG,GAEvB,IAAI,EAAAK,aAAaH,EAAeC,EAAkBC,EAAsB,KAC9E,MAAM,EAAOJ,GAGJ,GAAM3/B,KAAKob,WAAW8kB,kBAAkB/b,I,OAMzD,OANMvjB,EAAW,SAEjBZ,KAAKmgC,cACCn8B,EAAS,IAAI,EAAAo8B,YACZC,WAAcz/B,EAAiB0/B,YAElCt8B,EAAOq8B,WAEDE,EAAoB3/B,EAC1BZ,KAAKghB,MAAQA,EACbhhB,KAAKkoB,mBAAqB+U,EAC1Bj9B,KAAKqX,KAAOA,EACZrX,KAAKo9B,aAAeA,EACpBp9B,KAAK49B,eAAiBP,EACtBr9B,KAAKu9B,SAAWA,EAChBv9B,KAAKwf,aAAeA,EACpBxf,KAAKrB,IAAMqB,KAAK68B,cAAgBl+B,EAAM,KACtCqB,KAAKo+B,uBAAyBmC,EAAkBC,oBAChDx8B,EAAOy8B,mBAAqBF,EAAkBC,oBACvC,CAAP,EAAOx8B,KAGL08B,EAAgB9/B,EACtBoD,EAAO28B,oBAAsBD,EAAcC,oBACP,MAAhCD,EAAchD,eAAd,MACA,GAAM19B,KAAK08B,aAAakE,kBAAkBF,EAAchD,eAAgB1c,K,OAAxE,S,iBAGJ,SAAMhhB,KAAK08B,aAAamE,UAAUH,EAAcJ,YAAaI,EAAcI,e,OAC3E,OADA,SACA,GAAM9gC,KAAKu1B,YAAYwL,eAAe/gC,KAAK08B,aAAasE,YAAahhC,KAAK08B,aAAauE,WACnFP,EAAc7B,IAAK6B,EAAc5B,gB,cADrC,SAEI9+B,KAAK68B,cACM,MAAPl+B,EAAA,MACA,GAAMqB,KAAKmZ,cAAc+nB,OAAOviC,IAFpC,O,OAEI,S,wBAEkB,MAAlBs+B,EAAA,OACA,GAAMj9B,KAAKmZ,cAAcgoB,WAAWlE,I,QAApC,S,0BAIQ,MAAR5lB,GAAqC,MAArBqpB,EAAc/hC,IAA9B,OACA,GAAMqB,KAAKmZ,cAAcioB,UAAUV,EAAc/hC,M,WAAjD,SAGgC,MAA5B+hC,EAAcW,WAAd,a,mBAEoB,O,yBAAA,GAAMrhC,KAAKmZ,cAAcmoB,e,QACzC,OADMC,EAAU,SAChB,GAAMvhC,KAAKob,WAAWomB,gBAAgB,IAAI,EAAAC,YAAYF,EAAQ,GAAIA,EAAQ,GAAG7sB,mB,eAA7E,SACAgsB,EAAcW,WAAaE,EAAQ,GAAG7sB,gB,iCAGtC1U,KAAKwC,WAAWuc,MAAM,G,eAI9B,SAAM/e,KAAKmZ,cAAcuoB,iBAAiBhB,EAAcW,a,QAAxD,S,mBAQR,OAJgC,MAA5BrhC,KAAK48B,sBACL58B,KAAK48B,oBAAoB+E,iBAAkB,GAE/C3hC,KAAKyV,iBAAiBkB,KAAK,YACpB,CAAP,EAAO3S,WAGH,YAAAm8B,WAAR,WACIngC,KAAKrB,IAAM,KACXqB,KAAKghB,MAAQ,KACbhhB,KAAKkoB,mBAAqB,KAC1BloB,KAAKqX,KAAO,KACZrX,KAAKo9B,aAAe,KACpBp9B,KAAK49B,eAAiB,KACtB59B,KAAKu9B,SAAW,KAChBv9B,KAAKwf,aAAe,KACpBxf,KAAKo+B,uBAAyB,KAC9Bp+B,KAAK88B,8BAAgC,MAE7C,EAlTA,GAAa,EAAArrB,e,8EC7Eb,MAKI,SAAY7R,EAAY6iB,EAAmBC,GACvC1iB,KAAKJ,GAAKA,EACVI,KAAKyiB,SAAWA,EAChBziB,KAAK0iB,cAAgBA,GARhB,EAAAkf,4B,8ECAb,SAAY/P,GACR,yBACA,iBACA,yCACA,2CACA,uCACA,qCACA,uCACA,mCACA,mCACA,qCACA,wCACA,oCACA,kCACA,8BACA,wCACA,sCACA,kBACA,sCACA,wCACA,4CACA,0CArBJ,CAAY,EAAAA,aAAA,EAAAA,WAAU,M,8ECAtB,mBAAsB,EAAAgQ,mB,8ECAtB,SAAYC,GACR,mBACA,mDACA,2CACA,6CACA,qDACA,uDACA,uBACA,2CACA,mCACA,qCACA,8CACA,gDAZJ,CAAY,EAAAA,WAAA,EAAAA,SAAQ,M,68CCApB,WAaA,GALA,KAEA,KACA,MAEA,QAUA,GARA,KACA,MACA,KACA,KACA,MACA,MACA,KAEA,QACA,SAEA,SACA,SACA,SACA,SACA,SAEA,SACA,S,gKCjCA,6BACI,0C,mBACA,kDAAsB,Y,mBAAoB,iBAC9C,4C,MAFgD,6EACtB,kE,mDAE1B,6BACI,6CAAG,Y,mBAAiC,iBACpC,oDAAY,4FACR,qDACI,6DAAkB,a,oBAAwB,iBAC1C,wDACA,6DACiC,a,oBAAoE,iBACzG,2CACA,2DACI,qD,oBACA,0DAAM,a,oBAAmB,iBAC7B,2CACJ,uCACJ,4C,mDAbO,8EAC+B,0DAER,sEAGe,iHAEoB,kDACpB,+EAC3B,mE,mDAOd,6BACI,sDACI,4DAAkB,Y,mBAA6B,iBAC/C,4DAA8D,iGAA9D,iBACJ,0CACA,wDACI,8DAA0B,a,oBAAyB,iBACnD,8DAA8E,yGAA9E,iBAEJ,2CACJ,uC,iCAR0B,0EAC4C,8CAGpC,uEACoD,uD,mDAStF,6BACI,sDACI,4DAA0B,Y,mBAAyB,iBACnD,4DAA8E,yGAA9E,iBACJ,0CACJ,uC,iCAHkC,sEACoD,uD,sBAY1E,4BAA6C,Y,mBAAoC,kB,MAApC,yF,sBAC7C,4BAAwC,Y,mBAAuC,kB,MAAvC,4F,sBACxC,4BAA6C,Y,mBAAwC,kB,MAAxC,6F,yBAC7C,4BAAiD,Y,mBAEjD,kB,wCAFiD,0I,yBALrD,6BACI,6DAAO,Y,mBAAsC,iBAC7C,iEACA,iEACA,kEACA,mEAGJ,yD,uCAPW,0FACA,kDACA,6CACA,kDACA,uD,yBAKP,4BAA8D,Y,mBACH,kB,wCADG,gH,yBAE9D,4BAA4F,Y,mBAC1B,kB,wCAD0B,wH,sBAE5F,4BAA2C,Y,mBACJ,kB,MADI,+G,yBAE3C,4BAAgD,Y,mBACuB,kB,wCADvB,4H,yBAEhD,4BAAoD,Y,mBACyB,kB,wCADzB,kI,sBAEpD,4BAAiD,Y,mBAAyC,kB,MAAzC,8F,yBACjD,4BAA+C,Y,mBACiC,kB,wCADjC,oI,sBAE/C,4BAA2C,Y,mBAAsC,kB,MAAtC,2F,sBAC3C,4BAAwC,Y,mBAA6B,kB,MAA7B,kF,sBACxC,4BAA8C,Y,mBAAqC,kB,MAArC,0F,sBAC9C,4BAA6C,Y,mBAAoC,kB,MAApC,yF,uBAC7C,4BAAiD,Y,mBAA8B,kB,MAA9B,mF,uBACjD,4BAA8D,Y,mBACtB,kB,MADsB,gH,0BAE9D,4BAAiD,Y,mBAEjD,kB,wCAFiD,0I,0BApBjD,iEAEA,iEAEA,iEAEA,iEAEA,iEAEA,mEACA,mEAEA,mEACA,mEACA,mEACA,mEACA,oEACA,oEAEA,oEAGJ,+B,4DAvBW,mEAEA,+EAEA,gDAEA,qDAEA,yDAEA,sDACA,oDAEA,gDACA,6CACA,mDACA,kDACA,sDACA,mEAEA,uD,0BAQH,6BACI,Y,6DAEJ,2B,wCAFI,kP,0BAJR,6BACI,Y,6DAEA,yCAIJ,4D,wCANI,uOAEc,gE,0BAJtB,2BACI,0EAQJ,+C,uCARkB,iD,0BASlB,2BACI,Y,6DACJ,kB,uCADI,mL,uBAEJ,2BAA6D,Y,mBAAwB,kB,MAAxB,sE,oDArDrE,6BACI,wDACwC,oGAAqB,sFAD7D,iBAEA,wDACI,Y,mBACA,+BAAoB,Y,mBAA8D,iBAClF,wEASA,uGAyBA,+DAUA,gEAGA,+DACJ,2CACJ,uC,mEAtDgE,qEACxD,gCAAmC,qBACP,sEAC5B,iHACoB,yFACN,0EAAmF,cAkC3F,mEAUA,6EAGA,oE,oDAIV,6BACI,yDAAiB,Y,mBAAkB,iBACnC,0DACI,8DACI,qEAA6B,a,oBAAsB,iBACnD,sEACI,4G,oBADJ,iBAGA,sEAAoC,a,oBAAiC,iBACzE,mDACJ,+CACJ,oD,iCAVqB,+DAGoB,oEAE0B,0FAAnD,0CAEgC,iF,oDAKhD,6BACI,0DACI,gEAA6B,Y,mBAAgC,iBAC7D,gEACI,4G,mBADJ,iBAEA,kEACiC,a,4CAA+G,iBACpJ,+CACJ,2C,iCANqC,6EAE0B,yFAAnD,0CAE6B,wK,oDAcrC,6BACI,8DACI,oEACI,+GADJ,iBAEA,oEAAyD,Y,mBAA0B,iBACvF,kDACA,kEACiC,a,gEAAyE,iBAC9G,+C,iCALY,4DACqD,uEAG5B,uI,0BAU7B,4BACI,Y,uGAKJ,kB,wCALI,6X,uBAOA,2BAAuC,Y,mBAA6B,kB,MAA7B,kF,uBACvC,2BAAwC,Y,mBAAmB,kB,MAAnB,wE,0BAF5C,4BACI,yEACA,yEACA,Y,oFAGJ,kB,6DALU,gDACA,iDACN,4S,0BAIJ,4BACI,Y,uGAIJ,kB,6DAJI,oZ,0BAKJ,4BACI,Y,uGAKJ,kB,wCALI,sY,0BAvBR,6BACI,Y,mBACA,kCAOA,wEAOA,uEAMA,uEAOJ,6D,4DA5BI,qHACO,gDAOA,+DAOA,iEAMA,oF,0BAUP,4BACI,Y,uGAIJ,kB,wCAJI,6V,uBAMA,2BAAuC,Y,mBAA6B,kB,MAA7B,kF,uBACvC,2BAAwC,Y,mBAAmB,kB,MAAnB,wE,0BAF5C,4BACI,yEACA,yEACA,Y,oFAGJ,kB,6DALU,gDACA,iDACN,qS,0BAIJ,4BACI,Y,uGAIJ,kB,6DAJI,6Y,0BAKJ,4BACI,Y,uGAIJ,kB,wCAJI,sW,0BAtBR,6BACI,Y,mBACA,kCAMA,wEAOA,uEAMA,uEAMJ,6D,4DA1BI,oHACO,gDAMA,+DAOA,iEAMA,oF,oDAvDnB,6BACI,4DACkC,iGADlC,iBAEA,4DACI,0EA8BA,0EA4BJ,8CACJ,2C,+CA9DwE,mEAChE,6BAA6B,kBACD,oEACd,+CA8BA,iD,sBAgCtB,gC,KAAwC,8B,uBAexC,6BACI,6DACJ,oD,MADiB,+C,0BAEjB,+BACI,Y,sCAA4D,kB,8BAA5D,wI,oDAlIR,0BACI,mEAYA,qDAAiB,Y,mBAAmB,iBACpC,2DASA,uDACI,4DACI,kEAA+B,a,oBAAgC,iBAC/D,kEACI,8G,oBADJ,iBAGA,kEACiC,a,gEAAqI,iBAC1K,+CACJ,2CACA,wDACI,iEASJ,2CACA,uDAA0B,a,oBAAoB,iBAC9C,4DAgEA,kDACA,uDAA+B,a,oBAA8E,iBAC7G,mEACA,iEAAc,6GAAsC,iBACpD,wDACI,4DACI,a,4CACA,qBACA,gEACI,a,4CACJ,0BACJ,+CACA,sDACA,0DAAmB,8BAAQ,a,oBAAmB,iBAC1C,a,4CAA4D,iBACpE,2CACA,0DAAsC,a,wCAAqE,iBAC3G,mEAGA,6DAEJ,uC,iCAlIkB,uGAYG,iEACA,sGAWsB,+EAG3B,qGADA,4CAG6B,sMAIP,0EAUR,mEACe,yDAiEV,wHAClB,yDAIL,6JAGI,sKAImB,yEACvB,kJAE8B,+HACxB,0DAGqC,2D,uBAGvD,6BACI,8DAA8B,Y,mBAAwC,iBAC1E,uC,MADiB,4CAAiB,sF,oDAO9B,gCAAwD,0FACpD,Y,mBACJ,iB,MADI,gG,oDA/NZ,+BAAY,4FAER,iDAAiB,Y,mBAA+B,iBAChD,qDAWA,kDACI,0DACI,yGAA2B,2FAD/B,iBAEA,0DAAoD,a,oBAAiC,iBACzF,uCACA,uDAMA,mDAAiB,a,oBAA2B,iBAC5C,yDAwDA,wDAoIA,uDAGA,oDACI,2DACI,qD,oBACA,0DAAM,a,oBAAmB,iBAC7B,2CACA,8DAGJ,uCACJ,mC,mDAlOkC,2CAEb,6EACA,yDAaT,uDACgD,gFAEvC,oDAMA,0EACZ,4DAwDA,oEAoIA,2DAIwD,kDACpB,+EAC3B,kEAEiE,kDD7MnF,kBA+BI,WAAoB1mB,EAAgC1b,EACxC20B,EAAiCzM,EACzCzM,EAAoDhC,EAC5CsS,EAAwBsW,EACxBvK,EAAsCjC,GAJ9B,KAAAna,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACW,KAAAzO,gBAC5C,KAAAsS,SAAwB,KAAAsW,cACxB,KAAAvK,gBAAsC,KAAAjC,cA1BzC,KAAAyM,UAAW,EACX,KAAAC,YAAa,EACb,KAAAC,QAAuB,EAAAC,YAAYC,KACnC,KAAAC,KAAiB,EAAAP,SAASM,KACzB,KAAAE,UAAY,IAAI,EAAAvf,aAChB,KAAAwf,WAAa,IAAI,EAAAxf,aAE3B,KAAApiB,SAAmB,EACnB,KAAA6hC,YAAsB,EACtB,KAAAC,eAAyB,EACzB,KAAAC,oBAA8B,EAC9B,KAAAC,kBAA4B,EAC5B,KAAAC,gBAA0B,EAI1B,KAAAC,aAAe,EAAAV,YAEf,KAAAW,sBAAgC,EAS5B9iC,KAAKwiC,WAAarnB,EAAqB4nB,a,OAGrC,YAAA7hC,SAAN,W,uGACSlB,KAAKwiC,WAAN,MACc,GAAMxiC,KAAKob,WAAW4nB,Y,OAA9BC,EAAQ,SACdjjC,KAAKijC,MAAQA,EAAM9/B,KACfnD,KAAKkiC,UAAY,EAAAC,YAAYe,YAAcljC,KAAKkiC,UAAY,EAAAC,YAAYgB,QACxEnjC,KAAKyiC,eAAgB,G,wBAG7BziC,KAAKW,SAAU,E,YAGnB,sBAAI,iCAAkB,C,IAAtB,WACI,OAA8B,MAAvBX,KAAKuC,gB,gCAGhB,sBAAI,2BAAY,C,IAAhB,sBACI,OAAOvC,KAAKijC,MAAMpsB,MAAK,SAAAwrB,GAAQ,OAAAA,EAAKlgC,OAAS,EAAKkgC,S,gCAGtD,sBAAI,mCAAoB,C,IAAxB,WACI,OAAOriC,KAAKojC,aAAaC,SACnB,OACA,S,gCAGV,sBAAI,iCAAkB,C,IAAtB,sBACQC,EAAatjC,KAAKijC,MAAM96B,QAAO,SAAAk6B,GAAQ,OAAAA,EAAKlgC,OAAS,EAAA2/B,SAASyB,UAelE,OAbIvjC,KAAKyiC,gBACLa,EAAaA,EAAWn7B,QAAO,SAAAk6B,GAAQ,OAAAA,EAAKmB,wBAG3CxjC,KAAKgiC,WACNsB,EAAaA,EAAWn7B,QAAO,SAAAk6B,GAAQ,OAAAA,EAAKH,UAAY,EAAAC,YAAYC,SAGxEkB,EAAaA,EACRn7B,QAAO,SAAAk6B,GAAQ,OAACA,EAAKoB,aACdpB,EAAKqB,WACLrB,EAAKgB,UAAYhB,EAAKH,UAAY,EAAKW,aAAaT,U,gCAKpE,sBAAI,8BAAe,C,IAAnB,sBACI,OAAOpiC,KAAKijC,MAAM96B,QAAO,SAAAk6B,GAAQ,OAACA,EAAKoB,aAAepB,EAAKqB,UAAYrB,EAAKH,UAAY,EAAKA,Y,gCAGjG,YAAAyB,8BAAA,SAA8BP,GAC1B,OAAKA,EAAaC,SAGXD,EAAaQ,4BAA8B,GAFvCR,EAAaQ,6BAK5B,YAAAC,iBAAA,SAAiBT,GACb,OAAKA,EAAaC,SAGXD,EAAaU,UAAY,GAFrBV,EAAaU,WAK5B,YAAAC,uBAAA,SAAuB1B,GACnB,OAAKA,EAAK2B,2BAIH3B,EAAKuB,4BAA8B51B,KAAKmmB,IAAIn0B,KAAK2iC,mBAAqB,GAHlE,GAMf,YAAAsB,UAAA,SAAU5B,GACN,OAAKA,EAAK6B,yBAIH7B,EAAKyB,UAAY91B,KAAKmmB,IAAIn0B,KAAK4iC,iBAAmB,GAH9C,GAMf,sBAAI,uBAAQ,C,IAAZ,WACI,IAAIuB,EAAWnkC,KAAKojC,aAAagB,UAUjC,OATIpkC,KAAKojC,aAAac,0BAA4BlkC,KAAK4iC,kBACnDuB,GAAYnkC,KAAKikC,UAAUjkC,KAAKojC,eAEhCpjC,KAAKojC,aAAaY,4BAA8BhkC,KAAK2iC,oBACrDwB,GAAYnkC,KAAK+jC,uBAAuB/jC,KAAKojC,eAE7CpjC,KAAKojC,aAAaiB,wBAA0BrkC,KAAK0iC,qBACjDyB,GAAYnkC,KAAKojC,aAAakB,0BAE3BH,G,gCAGX,sBAAI,yBAAU,C,IAAd,WACI,OAA4B,MAArBnkC,KAAKukC,cAAqD,MAA7BvkC,KAAKukC,aAAaC,QACjDxkC,KAAKukC,aAAaC,QAAU,IAAOxkC,KAAKykC,SACzC,G,gCAGR,sBAAI,oBAAK,C,IAAT,WACI,OAAQzkC,KAAKykC,SAAWzkC,KAAK0kC,YAAe,G,gCAGhD,YAAAC,eAAA,WACI3kC,KAAKqiC,KAAOriC,KAAK4kC,gBAAgB,GAAGziC,KAC/BnC,KAAKojC,aAAaiB,yBACnBrkC,KAAK0iC,oBAAqB,GAEzB1iC,KAAKojC,aAAaY,6BACnBhkC,KAAK2iC,kBAAoB,GAExB3iC,KAAKojC,aAAac,yBAEXlkC,KAAK4iC,iBAAoB5iC,KAAKojC,aAAayB,YACnD7kC,KAAKojC,aAAac,2BAClBlkC,KAAK4iC,gBAAkB,GAHvB5iC,KAAK4iC,gBAAkB,GAO/B,YAAAkC,qBAAA,WACS9kC,KAAKyiC,gBAAiBziC,KAAKojC,aAAaI,sBAG7CxjC,KAAKkiC,QAAU,EAAAC,YAAYgB,MAC3BnjC,KAAKqiC,KAAO,EAAAP,SAASiD,gBAGzB,YAAAC,eAAA,WACIhlC,KAAKilC,iBAAiBxpB,SAAiD,OAAtCzb,KAAKukC,aAAavhB,QAAQ9G,QAEvDlc,KAAKilC,iBAAiBxpB,UACtBzb,KAAKilC,iBAAiB1pB,SAAW,EAAAC,kBAAkB+B,cACnDvd,KAAKilC,iBAAiB1pB,OAAS,EAAAC,kBAAkBzB,KACjD/Z,KAAKilC,iBAAiBlnB,iBAI9B,YAAAmnB,OAAA,WACIllC,KAAKuiC,WAAW7rB,QAGd,YAAAoR,OAAN,W,wHACQ9nB,KAAK8iC,qBACL,IADA,M,OAGiB,SAAM9iC,KAAKw3B,cAAc2N,OAAO,EAAAviB,WAAWwiB,Y,OAC/C,OADPC,EAAW,SACJ,GAAMrlC,KAAKu1B,YAAY+P,uB,OAYpC,GAZMC,EAAO,SAEP,EAA0BF,EAC3Bl9B,QAAO,SAAA8M,GAAK,OAAAA,EAAEuf,SAAWvf,EAAE9S,OAAS,EAAAygB,WAAWwiB,aAC/C99B,KAAI,SAAA2N,GAAK,OAAAA,EAAE1S,kBAEhBvC,KAAK8iC,qBAAuByC,EAAK/d,MAAK,SAAAge,GAClC,OAAAA,EAAIrjC,OAAS,EAAA6qB,qBAAqByY,OAClCD,EAAIrjC,OAAS,EAAA6qB,qBAAqB0Y,OAClCF,EAAI7lB,SAAW,EAAA+G,2BAA2Bif,SAC1C,EAAwBC,SAASJ,EAAI5lC,OAErCI,KAAK8iC,qBACL,U,iBAKR,GADI+C,EAAkB,KAClB7lC,KAAK8lC,oBAAsB9lC,KAAKwiC,aAC1BuD,EAASx1B,SAASy1B,eAAe,QAE1B,OADbH,EAAQE,EAAOF,QACuB,IAAjBA,EAAM1nC,QAGvB,OAFA6B,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,eACvB,I,iBA0FJ,O,sBArFMgmC,EAAW,gD,iFACTpxB,EAAgB,KAChB7U,KAAK8lC,oBACDI,EAA2C,KAC1ClmC,KAAKwiC,YAAcxiC,KAAKqiC,OAAS,EAAAP,SAASM,KAA3C,MACc,GAAMpiC,KAAKilC,iBAAiBjmB,uBAH9C,M,OAGIknB,EAAc,S,iBAED,SAAMlmC,KAAKmZ,cAAcgtB,gB,OAEvB,OAFbC,EAAW,SACXznC,EAAMynC,EAAS,GAAG1xB,gBACL,GAAM1U,KAAKmZ,cAAcktB,QACxCrmC,KAAKN,YAAYO,EAAE,qBAAsBmmC,EAAS,K,cADhD5+B,EAAa,SAEb8+B,EAAe9+B,EAAWkN,gBAE5B1U,KAAKwiC,aACC+D,EAAK,IAAIC,UACZC,OAAO,UAAWZ,EAAM,IAC3BU,EAAGE,OAAO,MAAO9nC,GACjB4nC,EAAGE,OAAO,iBAAkBH,GACX,GAAMtmC,KAAKob,WAAWsrB,wBAAwBH,KAL/D,M,cAKM3lC,EAAW,SACjBiU,EAAQjU,EAAShB,G,aA6BA,OA3BXukB,EAAU,IAAI,EAAAwiB,2BACZhoC,IAAMA,EACdwlB,EAAQyiB,eAAiBN,EACzBniB,EAAQzc,KAAO1H,KAAK0H,KACpByc,EAAQ0iB,aAAe7mC,KAAK6mC,aAExB7mC,KAAKojC,aAAajhC,OAAS,EAAA2/B,SAASM,KACpCje,EAAQ2iB,SAAW,EAAAhF,SAASM,MAE5Bje,EAAQ4iB,aAAeb,EAAY,GACnC/hB,EAAQhI,kBAAoB+pB,EAAY,GACxC/hB,EAAQ6iB,aAAehnC,KAAKyiC,cAAgBziC,KAAKgnC,aAAe,KAChE7iB,EAAQye,gBAAkB5iC,KAAK4iC,gBAC/Bze,EAAQ8iB,oBAAsBjnC,KAAK2iC,kBACnCxe,EAAQue,mBAAqB1iC,KAAKojC,aAAaiB,wBAC3CrkC,KAAK0iC,mBACTve,EAAQ2iB,SAAW9mC,KAAKojC,aAAajhC,KACrCgiB,EAAQ+iB,yBAA2BlnC,KAAKukC,aAAavhB,QAAQM,WAC7Da,EAAQgjB,sBAAwBnnC,KAAKukC,aAAavhB,QAAQ9G,QACtDlc,KAAKukC,aAAavhB,QAAQO,eAC1BY,EAAQijB,YAAcpnC,KAAKukC,aAAavhB,QAAQC,MAChDkB,EAAQkjB,oBAAsBrnC,KAAKukC,aAAavhB,QAAQE,MACxDiB,EAAQmjB,oBAAsBtnC,KAAKukC,aAAavhB,QAAQG,MACxDgB,EAAQojB,mBAAqBvnC,KAAKukC,aAAavhB,QAAQI,KACvDe,EAAQqjB,oBAAsBxnC,KAAKukC,aAAavhB,QAAQK,QAG/C,GAAMrjB,KAAKob,WAAWqsB,iBAAiBtjB,I,OAAlDvjB,EAAW,SACjBiU,EAAQjU,EAAShB,G,qCAaN,OAVTukB,EAAU,IAAI,EAAAujB,4BACZV,aAAehnC,KAAKyiC,cAAgBziC,KAAKgnC,aAAe,KAChE7iB,EAAQye,gBAAkB5iC,KAAK4iC,gBAC/Bze,EAAQ8iB,oBAAsBjnC,KAAK2iC,kBACnCxe,EAAQue,mBAAqB1iC,KAAKojC,aAAaiB,wBAC3CrkC,KAAK0iC,mBACTve,EAAQ2iB,SAAW9mC,KAAKojC,aAAajhC,KACrCgiB,EAAQgjB,sBAAwBnnC,KAAKukC,aAAavhB,QAAQ9G,QAC1DiI,EAAQ+iB,yBAA2BlnC,KAAKukC,aAAavhB,QAAQM,WAE9C,GAAMtjB,KAAKob,WAAWusB,wBAAwB3nC,KAAKuC,eAAgB4hB,I,eAA5EngB,EAAS,UACHsG,SAA+C,MAApCtG,EAAO4jC,0BAA1B,OACA,GAAM5nC,KAAKilC,iBAAiBllB,wBAAwB/b,EAAO4jC,0BAA2B,O,QAAtF,S,mBAEJ/yB,EAAQ7U,KAAKuC,e,0BAGJ,MAATsS,EAAA,OACA,GAAM7U,KAAKob,WAAWysB,wB,QACtB,OADA,SACA,GAAM7nC,KAAK+hC,YAAY+F,UAAS,I,QAAhC,SACI9nC,KAAK8lC,oBACL9lC,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,yBACzCh1B,KAAK4nB,eAAeI,SAAS,UACzBhoB,KAAKN,YAAYO,EAAE,uBAAwBD,KAAKN,YAAYO,EAAE,4BAElED,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,0BACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,0BAErED,KAAKyrB,OAAOsc,SAAS,CAAC,kBAAoBlzB,I,qCAIlD7U,KAAKmoB,YAAc8d,IACnB,GAAMjmC,KAAKmoB,a,cAAX,SACAnoB,KAAKsiC,UAAU5rB,O,6FAvSdsxB,GAA0B,2W,iCAA1BA,EAA0B,+D,OAAA,M,cACxB,EAAA1nB,kBAAgB,G,cAChB,EAAAqE,kBAAgB,I,4qGC1C/B,uCAIA,0DAeA,mDAmOA,kB,MAtPc,+BAIA,uEAgBV,yE,0VDgBJ,GAIa,EAAAqjB,+B,8EExCb,aAEA,QAEA,EAYI,SAAYrpC,EAAkB2Z,GAC1B,GAAW,MAAP3Z,EACA,MAAM,IAAIgD,MAAM,oBAGpB,GAAe,MAAX2W,EACA,GAAuB,KAAnB3Z,EAAIgO,WACJ2L,EAAU,EAAAI,eAAeE,kBACtB,IAAuB,KAAnBja,EAAIgO,WAGX,MAAM,IAAIhL,MAAM,gCAFhB2W,EAAU,EAAAI,eAAeG,yBASjC,GAHA7Y,KAAKrB,IAAMA,EACXqB,KAAKsY,QAAUA,EAEXA,IAAY,EAAAI,eAAeE,eAAoC,KAAnBja,EAAIgO,WAChD3M,KAAKupB,OAAS5qB,EACdqB,KAAKioC,OAAS,UACX,GAAI3vB,IAAY,EAAAI,eAAeC,0BAA+C,KAAnBha,EAAIgO,WAClE3M,KAAKupB,OAAS5qB,EAAIsD,MAAM,EAAG,IAC3BjC,KAAKioC,OAAStpC,EAAIsD,MAAM,GAAI,QACzB,IAAIqW,IAAY,EAAAI,eAAeG,0BAA+C,KAAnBla,EAAIgO,WAIlE,MAAM,IAAIhL,MAAM,mCAHhB3B,KAAKupB,OAAS5qB,EAAIsD,MAAM,EAAG,IAC3BjC,KAAKioC,OAAStpC,EAAIsD,MAAM,GAAI,IAKhB,MAAZjC,KAAKrB,MACLqB,KAAKkoC,OAAS,EAAAziC,MAAM8G,gBAAgBvM,KAAKrB,MAE1B,MAAfqB,KAAKupB,SACLvpB,KAAKmoC,UAAY,EAAA1iC,MAAM8G,gBAAgBvM,KAAKupB,SAE7B,MAAfvpB,KAAKioC,SACLjoC,KAAKooC,UAAY,EAAA3iC,MAAM8G,gBAAgBvM,KAAKioC,UAlD3C,EAAAI,sB,8ZCJb,aAGA,QAEA,QAGA,cAQI,WAAY9lB,EAAgBnO,QAAA,IAAAA,OAAA,GAA5B,MACI,cAAO,KACP,OAAW,MAAPmO,GAIJ,EAAKrO,iBAAiB,EAAMqO,EAAK,CAC7BnL,eAAgB,KAChBM,MAAO,KACPC,OAAQ,KACR7Q,SAAU,KACVC,QAAS,KACTsQ,KAAM,MACPjD,EAAkB,I,EA0B7B,OA/C0B,OAwBtB,YAAAiB,QAAA,SAAQR,EAAe0U,GACnB,OAAOvpB,KAAK2U,WAAW,IAAI,EAAAoD,SAAS/X,MAAO,CACvCoX,eAAgB,KAChBM,MAAO,KACPC,OAAQ,KACR7Q,SAAU,KACVC,QAAS,KACTsQ,KAAM,MACPxC,EAAO0U,IAGd,YAAAY,WAAA,WACI,IAAMpc,EAAI,IAAI,EAAA+Y,SASd,OARA9mB,KAAKwU,eAAexU,KAAM+N,EAAG,CACzBqJ,eAAgB,KAChBM,MAAO,KACPC,OAAQ,KACR7Q,SAAU,KACVC,QAAS,KACTsQ,KAAM,OAEHtJ,GAEf,EA/CA,CAA0B,WAAb,EAAAgM,Q,8ZCNb,aAGA,QAEA,SAGA,cAKI,WAAYwI,EAAiBnO,QAAA,IAAAA,OAAA,GAA7B,MACI,cAAO,KACP,OAAW,MAAPmO,IAIJ,EAAKpgB,KAAOogB,EAAIpgB,KAChB,EAAK+R,iBAAiB,EAAMqO,EAAK,CAC7B7a,KAAM,KACNhJ,MAAO,MACR0V,EAAkB,K,EAmB7B,OAlC2B,OAkBvB,YAAAiB,QAAA,SAAQR,EAAe0U,GACnB,OAAOvpB,KAAK2U,WAAW,IAAI,EAAAvL,UAAUpJ,MAAO,CACxC0H,KAAM,KACNhJ,MAAO,MACRmW,EAAO0U,IAGd,YAAAc,YAAA,WACI,IAAM9iB,EAAI,IAAI,EAAAyf,UAMd,OALAhnB,KAAKwU,eAAexU,KAAMuH,EAAG,CACzBG,KAAM,KACNhJ,MAAO,KACPyD,KAAM,MACP,CAAC,SACGoF,GAEf,EAlCA,CAA2B,WAAd,EAAA8hB,S,8ZCVb,aAGA,QAGA,SAEA,cAoBI,WAAY9G,EAAoBnO,QAAA,IAAAA,OAAA,GAAhC,MACI,cAAO,KACP,OAAW,MAAPmO,GAIJ,EAAKrO,iBAAiB,EAAMqO,EAAK,CAC7BthB,MAAO,KACPolB,UAAW,KACXX,WAAY,KACZY,SAAU,KACVX,SAAU,KACVC,SAAU,KACVC,SAAU,KACVzC,KAAM,KACNC,MAAO,KACPC,WAAY,KACZpH,QAAS,KACT4J,QAAS,KACT9E,MAAO,KACP+E,MAAO,KACPC,IAAK,KACLnc,SAAU,KACVoc,eAAgB,KAChBC,cAAe,MAChB9R,EAAkB,I,EAkD7B,OA/F8B,OAgD1B,YAAAiB,QAAA,SAAQR,EAAe0U,GACnB,OAAOvpB,KAAK2U,WAAW,IAAI,EAAAsQ,aAAajlB,MAAO,CAC3CiB,MAAO,KACPolB,UAAW,KACXX,WAAY,KACZY,SAAU,KACVX,SAAU,KACVC,SAAU,KACVC,SAAU,KACVzC,KAAM,KACNC,MAAO,KACPC,WAAY,KACZpH,QAAS,KACT4J,QAAS,KACT9E,MAAO,KACP+E,MAAO,KACPC,IAAK,KACLnc,SAAU,KACVoc,eAAgB,KAChBC,cAAe,MAChBrR,EAAO0U,IAGd,YAAAa,eAAA,WACI,IAAMnsB,EAAI,IAAI,EAAA8oB,aAqBd,OApBA/mB,KAAKwU,eAAexU,KAAM/B,EAAG,CACzBgD,MAAO,KACPolB,UAAW,KACXX,WAAY,KACZY,SAAU,KACVX,SAAU,KACVC,SAAU,KACVC,SAAU,KACVzC,KAAM,KACNC,MAAO,KACPC,WAAY,KACZpH,QAAS,KACT4J,QAAS,KACT9E,MAAO,KACP+E,MAAO,KACPC,IAAK,KACLnc,SAAU,KACVoc,eAAgB,KAChBC,cAAe,OAEZjoB,GAEf,EA/FA,CAA8B,WAAjB,EAAA+b,Y,yxDCRb,aAEA,SAEA,SAMA,cAOI,WAAYuI,EAAiBnO,QAAA,IAAAA,OAAA,GAA7B,MACI,cAAO,KACP,OAAW,MAAPmO,IAIJ,EAAKkD,qBAAmD,MAA5BlD,EAAIkD,qBAA+B,IAAI0D,KAAK5G,EAAIkD,sBAAwB,KACpG,EAAKvR,iBAAiB,EAAMqO,EAAK,CAC7B1Y,SAAU,KACVC,SAAU,KACVwd,KAAM,MACPlT,EAAkB,IAEjBmO,EAAIxY,OACJ,EAAKA,KAAO,GACZwY,EAAIxY,KAAK3F,SAAQ,SAAAc,GACb,EAAK6E,KAAK5E,KAAK,IAAI,EAAAmjC,SAASpjC,EAAGkP,S,EAyC/C,OAhE2B,OA4BjB,YAAAiB,QAAN,SAAcR,EAAe0U,G,oGACZ,SAAMvpB,KAAK2U,WAAW,IAAI,EAAAhM,UAAU3I,MAAO,CACpD6J,SAAU,KACVC,SAAU,KACVwd,KAAM,MACPzS,EAAO0U,I,UAJJgf,EAAO,SAMI,MAAbvoC,KAAK+J,KAAL,YACAw+B,EAAKx+B,KAAO,GACH9L,EAAI,E,wBAAGA,EAAI+B,KAAK+J,KAAK5L,OACd,GAAM6B,KAAK+J,KAAK9L,GAAGoX,QAAQR,EAAO0U,IADd,M,OAC1B1kB,EAAM,SACZ0jC,EAAKx+B,KAAK5E,KAAKN,G,wBAFmB5G,I,aAM1C,MAAO,CAAP,EAAOsqC,WAGX,YAAAte,YAAA,WACI,IAAM5C,EAAI,IAAI,EAAAT,UAed,OAdAS,EAAE5B,qBAAoD,MAA7BzlB,KAAKylB,qBAA+BzlB,KAAKylB,qBAAqBuE,cAAgB,KACvGhqB,KAAKwU,eAAexU,KAAMqnB,EAAG,CACzBxd,SAAU,KACVC,SAAU,KACVwd,KAAM,OAGO,MAAbtnB,KAAK+J,MAAgB/J,KAAK+J,KAAK5L,OAAS,IACxCkpB,EAAEtd,KAAO,GACT/J,KAAK+J,KAAK3F,SAAQ,SAAAc,GACdmiB,EAAEtd,KAAK5E,KAAKD,EAAEsjC,sBAIfnhB,GAEf,EAhEA,CAHA,MAG2B,SAAd,EAAAxe,S,8ZCRb,aAEA,SAMA,cAII,WAAY0Z,EAAoBnO,QAAA,IAAAA,OAAA,GAAhC,MACI,cAAO,KACP,OAAW,MAAPmO,IAIJ,EAAKtd,MAAQsd,EAAItd,MACjB,EAAKiP,iBAAiB,EAAMqO,EAAK,CAC7B1d,IAAK,MACNuP,EAAkB,K,EAgB7B,OA7B8B,OAgB1B,YAAAiB,QAAA,SAAQR,EAAe0U,GACnB,OAAOvpB,KAAK2U,WAAW,IAAI,EAAA5P,aAAa/E,MAAO,CAC3C6E,IAAK,MACNgQ,EAAO0U,IAGd,YAAAif,eAAA,WACI,IAAMtjC,EAAI,IAAI,EAAAujC,aAId,OAHAzoC,KAAKwU,eAAexU,KAAMkF,EAAG,CACzBL,IAAK,MACN,CAAC,UACGK,GAEf,EA7BA,CAHA,MAG8B,SAAjB,EAAAojC,Y,8ECVb,SAAYvR,GACR,uBACA,mBACA,+BACA,qBACA,6CACA,qBANJ,CAAY,EAAAA,eAAA,EAAAA,aAAY,M,8ZCExB,aAEA,QAEA,QAGA,cAGI,WAAYxU,EAAsBnO,QAAA,IAAAA,OAAA,GAAlC,MACI,cAAO,KACP,OAAW,MAAPmO,IAIJ,EAAKpgB,KAAOogB,EAAIpgB,M,EAYxB,OArBgC,OAY5B,YAAAkT,QAAA,SAAQR,EAAe0U,GACnB,OAAOrU,QAAQC,QAAQ,IAAI,EAAAjL,eAAelK,QAG9C,YAAAkqB,iBAAA,WACI,IAAMlS,EAAI,IAAI,EAAA6O,eAEd,OADA7O,EAAE7V,KAAOnC,KAAKmC,KACP6V,GAEf,EArBA,CAAgC,WAAnB,EAAAhO,c,8ECTb,WAQA,Q,OAOA,aAcI,WAAoB0+B,EAAgC1nC,GAAhC,KAAA0nC,aAAgC,KAAA1nC,WAH3C,KAAA2nC,WAAY,EACZ,KAAAC,YAAa,EAyBd,KAAAC,gBAAkB,SAACC,K,OApB3B,YAAAC,aADA,SACaza,GACTtuB,KAAK6oC,gBAAgBva,EAAG3e,OAAOisB,QAAU57B,KAAK2oC,UAAY3oC,KAAK4oC,aAGnE,YAAAI,WAAA,SAAWzmB,GACHA,IAAQviB,KAAK2oC,UACb3oC,KAAKgB,SAASioC,YAAYjpC,KAAK0oC,WAAWhoC,cAAe,WAAW,GAEpEV,KAAKgB,SAASioC,YAAYjpC,KAAK0oC,WAAWhoC,cAAe,WAAW,IAI5E,YAAAwoC,iBAAA,SAAiBC,GACbnpC,KAAK6oC,gBAAkBM,GAG3B,YAAAC,kBAAA,SAAkBD,KAElB,YAAAE,iBAAA,SAAkBC,K,iCAzBTC,GAAuB,qE,iCAAvBA,EAAuB,+F,0CAAvB,sB,sFARE,CACP,CACIC,QAAS,EAAAC,kBACTC,YAAa,EAAAC,YAAW,WAAM,OAAAJ,KAC9BK,OAAO,Q,EANnB,GAUa,EAAAL,2B,8ZCzBb,WAWA,GALA,MACA,MACA,MACA,KAEA,Q,wKCMY,2BACI,2DAAyB,kGACrB,2DAAsC,Y,mBAC1C,iBACJ,8C,gCAJI,mEAE0C,6F,mDAG9C,2BACI,2DAAyB,8FACrB,2DAAyC,Y,mBAC7C,iBACJ,8C,gCAJI,+DAE6C,yF,sBA2BrD,2BACI,mD,mBACA,2DAAsB,Y,mBAAoB,iBAC9C,2C,MAFqC,6EACX,kE,qHAgBF,2BAEI,oI,mBAA2B,iB,+DAFe,qEAC1C,6F,qBAGA,sB,mDAEJ,2BACI,sI,mBAEA,2EACJ,kE,KAHiC,wE,sBAMjC,6BACA,4E,gEAFJ,4BACI,yFAEJ,+D,kFAFkB,kDAAuE,8D,mDAhB7F,2BAEI,0EACI,8EAGA,2EAAyB,wHACrB,kFAAuF,YAC3F,iBACA,gFAKJ,+DACA,6EAIJ,2D,+CAlBI,gGAEO,sDAII,0DAAoF,yFAIvF,8CAIyB,+E,yBAfrC,wEAoBJ,sC,uBApBQ,0C,sBAqBR,6BACA,gE,mDAhCR,6BACI,6DACI,Y,mBACA,2BAAoD,6F,mBAEhD,+DACJ,sDACJ,mDACA,8DACI,4GAsBA,+EAEJ,mDACJ,wD,qDAhCQ,oHAEI,sFA2BU,mDAA0E,mE,mDAShF,2BAEI,oI,mBAA2B,iB,+DAFe,qEAC1C,6F,qBAGA,sB,sBAGA,6BAEA,4E,yBAHJ,4BACI,yFAGJ,+D,iFAFQ,kDAA2E,8D,mDATvF,2BACI,0EAGA,uEAAyB,4HACrB,8EAAmF,YACvF,iBACA,2EAKJ,2D,+CAZkC,kFAC3B,sDAII,0DAAgF,qFAEtD,+E,yBAPrC,wEAaJ,sC,uBAbQ,0C,sBAcR,6BACA,gE,yBAnBR,6BACI,0DAAI,Y,mBAAwB,iBAC5B,4DACI,0GAeA,+EAEJ,mDACJ,yD,iDApBQ,qEAiBc,kDAAkF,uE,yBAtD5G,6BACI,uEAmCA,sEAsBJ,oD,6BAzDkB,kDAmCA,4FD9E1B,kBAUI,WAAYnS,EAAsCF,EAC9C2S,EAAgCtU,GADpC,MAEI,YAAM6B,EAAmBF,EAAe2S,EAAgBtU,IAAY,K,OAP9D,EAAAuU,oBAAsB,IAAI,EAAA/mB,aAEpC,EAAAmK,WAAqB,GACrB,EAAA6c,kBAA4B,K,SAJQ,OAWpC,YAAAC,kBAAA,WACIhqC,KAAK8pC,oBAAoBpzB,KAAK1W,KAAKktB,a,iCAZ9B+c,GAAkB,yJ,iCAAlBA,EAAkB,k9DCjB/B,4BACI,iDACI,Y,mBACA,0B,mBAEI,kDACJ,0CACJ,uCACA,mDACI,yDACyB,mEAAwB,2BAAU,EAAAD,uB,oBAD3D,iBAEA,sDACI,0DACI,6DAAyB,wCAAS,EAAAnP,eAC9B,4DAAoC,a,oBACxC,iBACJ,+CACA,6DAKA,6DAKJ,2CACA,oDAAI,a,oBAAkB,iBACtB,sDACI,0DACI,6DAAyB,wCAAS,EAAAqP,WAAA,uBAC9B,6DAAuC,a,oBAC3C,iBACJ,+CACA,0DACI,6DAAyB,wCAAS,EAAAA,WAAA,sBAC9B,6DAA6C,a,oBACjD,iBACJ,+CACA,0DACI,6DAAyB,wCAAS,EAAAA,WAAA,0BAC9B,6DAA2C,a,oBAC/C,iBACJ,+CACA,0DACI,6DAAyB,wCAAS,EAAAA,WAAA,4BAC9B,6DAA+C,a,oBACnD,iBACJ,+CACJ,2CACA,wDAIA,mEA2DJ,uCACJ,mCACA,mB,MAlHQ,6FAEI,uFAKiB,8GACI,qCAEjB,6EAEwC,6FAGA,oDAKJ,gDAMxC,iEAEI,mGAE2C,8FAG3C,kGAEiD,6FAGjD,sGAE+C,iGAG/C,wGAEmD,mGAIxD,8CAIW,+C,oND1CtB,CAIwC,sBAA3B,EAAAD,sB,8EEfb,aACA,SAIA,aAwBI,WAAY1nB,GACG,MAAPA,IAIJviB,KAAKJ,GAAK2iB,EAAI3iB,GACdI,KAAK0H,KAAO6a,EAAI7a,KAChB1H,KAAK2f,OAAS4C,EAAI5C,OAClB3f,KAAKmC,KAAOogB,EAAIpgB,KAChBnC,KAAKw0B,QAAUjS,EAAIiS,QACnBx0B,KAAKmqC,YAAc5nB,EAAI4nB,YACvBnqC,KAAKoqC,UAAY7nB,EAAI6nB,UACrBpqC,KAAKqqC,aAAe9nB,EAAI8nB,aACxBrqC,KAAKsqC,UAAY/nB,EAAI+nB,UACrBtqC,KAAKo2B,QAAU7T,EAAI6T,QACnBp2B,KAAKuqC,OAAShoB,EAAIgoB,OAClBvqC,KAAKwqC,OAASjoB,EAAIioB,OAClBxqC,KAAKyqC,kBAAoBloB,EAAIkoB,kBAC7BzqC,KAAK0qC,OAASnoB,EAAImoB,OAClB1qC,KAAK2qC,SAAWpoB,EAAIooB,SACpB3qC,KAAK4qC,gBAAkBroB,EAAIqoB,gBAC3B5qC,KAAK6qC,MAAQtoB,EAAIsoB,MACjB7qC,KAAK8qC,eAAiBvoB,EAAIuoB,eAC1B9qC,KAAK+qC,aAAexoB,EAAIwoB,aACxB/qC,KAAKgrC,SAAWzoB,EAAIyoB,SACpBhrC,KAAKirC,WAAa1oB,EAAI0oB,WACtBjrC,KAAKkrC,YAAc3oB,EAAI2oB,aA8D/B,OA3DI,sBAAI,wBAAS,C,IAAb,WACI,OAAIlrC,KAAKmC,OAAS,EAAA6qB,qBAAqByY,OAGhCzlC,KAAKw0B,SAAWx0B,KAAK2f,SAAW,EAAA+G,2BAA2BykB,W,gCAGtE,sBAAI,wBAAS,C,IAAb,WACI,OAAOnrC,KAAKmC,OAAS,EAAA6qB,qBAAqBoe,SAAWprC,KAAKmC,OAAS,EAAA6qB,qBAAqByY,OACpFzlC,KAAKmC,OAAS,EAAA6qB,qBAAqB0Y,O,gCAG3C,sBAAI,sBAAO,C,IAAX,WACI,OAAO1lC,KAAKmC,OAAS,EAAA6qB,qBAAqByY,OAASzlC,KAAKmC,OAAS,EAAA6qB,qBAAqB0Y,O,gCAG1F,sBAAI,sBAAO,C,IAAX,WACI,OAAO1lC,KAAKmC,OAAS,EAAA6qB,qBAAqByY,O,gCAG9C,sBAAI,sCAAuB,C,IAA3B,WACI,OAAOzlC,KAAKqrC,SAAWrrC,KAAKkrC,YAAYI,sB,gCAG5C,sBAAI,iCAAkB,C,IAAtB,WACI,OAAOtrC,KAAKqrC,SAAWrrC,KAAKkrC,YAAYK,iB,gCAG5C,sBAAI,oCAAqB,C,IAAzB,WACI,OAAOvrC,KAAKqrC,SAAWrrC,KAAKkrC,YAAYM,oB,gCAG5C,sBAAI,+BAAgB,C,IAApB,WACI,OAAOxrC,KAAKqrC,SAAWrrC,KAAKkrC,YAAYO,e,gCAG5C,sBAAI,sCAAuB,C,IAA3B,WACI,OAAOzrC,KAAKqrC,SAAWrrC,KAAKkrC,YAAYQ,sB,gCAG5C,sBAAI,2CAA4B,C,IAAhC,WACI,OAAO1rC,KAAK2rC,WAAa3rC,KAAKkrC,YAAYU,2B,gCAG9C,sBAAI,8BAAe,C,IAAnB,WACI,OAAO5rC,KAAKqrC,SAAWrrC,KAAKkrC,YAAYW,c,gCAG5C,sBAAI,2BAAY,C,IAAhB,WACI,OAAO7rC,KAAKqrC,SAAWrrC,KAAKkrC,YAAYY,W,gCAG5C,sBAAI,gCAAiB,C,IAArB,WACI,OAAO9rC,KAAKqrC,SAAWrrC,KAAKkrC,YAAYa,gB,gCAG5C,sBAAI,6BAAc,C,IAAlB,WACI,OAAO/rC,KAAKqrC,SAAWrrC,KAAKkrC,YAAYc,a,gCAEhD,EAhHA,GAAa,EAAAC,gB,8ECHb,iBAMI,WAAY1kC,GALZ,KAAA3H,GAAa,KACb,KAAA+e,KAAe,KACf,KAAAutB,SAAmB,KACnB,KAAA7gB,SAAmB,KAGV9jB,IAILvH,KAAKJ,GAAK2H,EAAE3H,GACZI,KAAK2e,KAAOpX,EAAEoX,KACd3e,KAAKksC,SAAW3kC,EAAE2kC,UAW1B,OARI,sBAAI,uBAAQ,C,IAAZ,WACI,IACI,GAAiB,MAAblsC,KAAK2e,KACL,OAAO3S,SAAShM,KAAK2e,KAAM,MAEjC,UACF,OAAO,G,gCAEf,EAxBA,GAAa,EAAAwtB,gB,8ECAb,iBAII,WAAYlsC,GAHZ,KAAA6hB,KAAe,KAIN7hB,IAILD,KAAKosC,OAASnsC,EAAEmsC,QAMxB,OAHI,sBAAI,yBAAU,C,IAAd,WACI,OAAoB,MAAbpsC,KAAK8hB,KAAe,WAAa,M,gCAEhD,EAfA,GAAa,EAAAuqB,gB,68CCJb,KAMA,KACA,MAEA,KACA,KACA,KACA,MACA,KAbA,IAiBA,Q,gJChBI,0BACI,8C,mBACA,sDAAsB,Y,mBAAoB,iBAC9C,uC,MAFqC,6EACX,kE,sBAOV,6BACI,+D,mBAEA,sEAAsB,Y,mBAAmC,iBAC7D,gE,MAHsD,4FAE5B,iF,uEANlC,yBACI,4DACI,2DAA2D,YAC3D,uCAKJ,kDACJ,+C,uBARO,sEAC4D,yEAC7C,gD,yBAJ1B,2BACI,0DAUJ,2C,8BAVQ,wD,sBAWR,wBAAmD,Y,mBAAgC,kB,MAAhC,8E,yBAbvD,6BACI,sDAYA,qDACJ,gD,8BAbqC,4EAY9B,+E,yBAlBX,6BACI,iDAIA,4DAeA,+CACI,8CACA,Y,oBACJ,iBACJ,6C,6BAvBO,8CAIW,6CAiBV,kG,sBAQQ,6BACI,2D,mBACA,kEAAsB,Y,mBAAoB,iBAC9C,4D,MAFgD,6EACtB,kE,sBAIlC,2BAEI,kDACA,Y,mBACJ,kB,MADI,yG,sBAGR,6BACI,+C,mBACA,sDAAsB,Y,mBAAoB,iBAC9C,gD,MAFgD,6EACtB,kE,sBAGtB,6BACI,qDAAG,Y,mBAAgC,iBACnC,wDACI,sDACA,Y,oBACJ,iBACJ,qD,MALO,6EAGC,kH,sBAWQ,6BACI,mE,mBAEA,0EAAsB,Y,mBAAmC,iBAC7D,oE,MAFQ,4FACkB,iF,mDAYd,2BACI,iIACA,+EACA,Y,mBACJ,iB,MADI,2J,yBAGA,+FACA,0EACJ,sD,wCAFkB,+C,yBAPtB,6BACI,kFAKA,0HAIJ,4E,0DATO,+CAAgC,e,mDArBvD,yBACI,iEACI,wEACJ,sDACA,8DACI,oEAAoD,aAAU,iBAC9D,kFAKJ,uDACA,mEACI,wEACI,+E,oBAGI,yEACJ,+DACA,4EACI,0FAWA,8EAA2D,4GACvD,6EACA,a,oBACJ,iBACJ,+DACJ,2DACJ,uDACJ,mD,0BApCoB,2CAAe,YAAf,CAAe,eAGf,uEAAwC,2CACtC,+CAUN,qFAIc,2DAaV,iJ,yBAnC5B,+BACI,yDACI,gEAuCJ,8CACJ,2C,8BAxCY,wD,yBAVhB,6BACI,iEAOA,0DA2CJ,gD,8BAlDkB,8EAO8B,6E,yBA7BpD,6BACI,kDACI,kDACI,Y,mBACA,kCACI,yEAIJ,+CACJ,2CACA,wDAKJ,uCACA,8DAIA,8DAoDJ,6C,gDAtEY,0GACO,4DACW,8CAOlB,uFAKM,8CAIA,8CD3BlB,iBAWI,WAAoB9W,EAAkCpa,EAC1Czb,EAAkC0b,EAClCiZ,EAAiCzM,EACjCma,GAHQ,KAAAxM,cAAkC,KAAApa,uBAC1C,KAAAzb,cAAkC,KAAA0b,aAClC,KAAAiZ,YAAiC,KAAAzM,iBACjC,KAAAma,cATH,KAAAuK,OAAQ,EAGjB,KAAAC,QAAkB,E,OAQZ,YAAArrC,SAAN,W,iGACSlB,KAAKssC,MAAN,MACA,GAAMtsC,KAAK+hC,YAAY+F,UAAS,I,OAChC,OADA,SACA,GAAM9nC,KAAK6Z,Q,OAAX,S,mCAIF,YAAAA,KAAN,W,gGACiB,SAAM7Z,KAAKu1B,YAAY+P,uB,cAA9BC,EAAO,UACR/I,KAAK,EAAA/2B,MAAM0J,gBAAgBnP,KAAKN,YAAa,SAClDM,KAAKwsC,cAAgBjH,EACrBvlC,KAAKusC,QAAS,E,YAGZ,YAAAE,UAAN,SAAgBjH,G,qGACM,SAAMxlC,KAAKmb,qBAAqB+Z,WAC9C,6DAA8DsQ,EAAI99B,KAClE1H,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,Y,OACzD,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAOP,O,sBAHAD,KAAKi7B,cAAgBj7B,KAAKob,WAAWsxB,cAAclH,EAAI5lC,IAAIa,MAAK,WAC5D,OAAO,EAAKshC,YAAY+F,UAAS,MAErC,GAAM9nC,KAAKi7B,e,OAGX,OAHA,SACAj7B,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,iBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAM,gBAC9C,GAAMhoB,KAAK6Z,Q,cAAX,S,4DAIF,YAAA8yB,MAAN,SAAYnH,G,qGACU,SAAMxlC,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,iCAAkCulC,EAAI99B,KACzD1H,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,Y,OACzD,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAOP,O,sBAHAD,KAAKi7B,cAAgBj7B,KAAKob,WAAWwxB,sBAAsBpH,EAAI5lC,IAAIa,MAAK,WACpE,OAAO,EAAKshC,YAAY+F,UAAS,MAErC,GAAM9nC,KAAKi7B,e,OAGX,OAHA,SACAj7B,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,sBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,qBACjE,GAAMD,KAAK6Z,Q,cAAX,S,6FA5DCgzB,GAAsB,mQ,iCAAtBA,EAAsB,w5DCvBnC,wCAyBA,yDA0EA,kB,MAnGc,6BAyBA,+C,8LDNd,GAIa,EAAAA,0B,8ZEvBb,IAEA,cAKI,WAAYjsC,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKhB,GAAK,EAAK4B,oBAAoB,MACnC,EAAKihB,SAAW,EAAKjhB,oBAAoB,YACzC,EAAKkhB,cAAgB,EAAKlhB,oBAAoB,iB,EAEtD,OAX+C,OAW/C,EAXA,CAFA,MAE+CU,cAAlC,EAAA4qC,6B,6mDCFb,KAKA,MACA,KACA,OAPA,I,uGC4BoB,6BACI,wEACA,sEACI,wEAAM,Y,mBAAuB,iBAC7B,6EAA0B,aAAQ,iBACtC,2DACJ,wD,6BALgB,2CAAa,gBAAb,CAAa,aAEf,oEACoB,4C,gDDvBtD,aASI,WAAoBr3B,EAA4C0F,EACpDuhB,GADQ,KAAAjnB,mBAA4C,KAAA0F,uBACpD,KAAAuhB,eALZ,KAAA8F,YAAa,EAMTxiC,KAAKwiC,WAAaxiC,KAAKmb,qBAAqB4nB,a,OAG1C,YAAA7hC,SAAN,W,kGACgB,OAAZ,EAAAlB,KAAY,GAAMA,KAAK08B,aAAaqQ,W,OACvB,OADb,EAAKrlC,KAAO,SACZ,EAAA1H,KAAa,GAAMA,KAAK08B,aAAauE,Y,cAArC,EAAKjgB,MAAQ,SACI,MAAbhhB,KAAK0H,MAAqC,KAArB1H,KAAK0H,KAAK3D,SAC/B/D,KAAK0H,KAAO1H,KAAKghB,O,YAIzB,YAAAgsB,KAAA,WACIhtC,KAAKyV,iBAAiBkB,KAAK,cAG/B,YAAAqnB,OAAA,WACIh+B,KAAKyV,iBAAiBkB,KAAK,W,iCAvBtBs2B,GAAe,0H,iCAAfA,EAAe,wrDCb5B,4BACI,iDACI,mD,mBACI,kDACJ,0CACA,sDACI,0DACI,8DACI,iEAAwC,a,oBAAoB,iBAChE,mDACA,8DACI,iEAAwC,a,oBAAiB,iBAC7D,mDACA,8DACI,iEAAwC,a,oBAAkB,iBAC9D,mDACA,8DACI,kEAA2C,a,oBAAqB,iBACpE,mDACJ,+CACJ,2CACA,uDACI,2DACI,8DAEI,6DACJ,mDACA,gEACI,uEAOA,+DACA,kEACI,iEACA,a,oBACJ,iBACA,kEACI,iEACA,a,oBACJ,iBACA,kEACI,iEACA,a,oBACJ,iBACA,+DACA,uEAA4C,wCAAS,EAAAD,UACjD,iEACA,a,oBACJ,iBACA,uEAA4C,wCAAS,EAAAhP,YACjD,iEACA,a,oBACJ,iBACJ,mDACJ,+CACJ,2CACJ,uCACJ,mCACA,mB,MA9DyD,6DAEV,mGAMa,oEAGA,gEAGA,iEAGG,oEAWe,4CAUtD,4HAIA,0HAIA,0HAKA,0HAIA,2H,wKD9CxB,GAIa,EAAAiP,mB,8EEbb,KAKA,KALA,I,sBAOA,aAQI,WAAoB9xB,GAAA,KAAAA,uBAFpB,KAAAxU,KAAe,O,OAIf,YAAAzF,SAAA,WACIlB,KAAK2G,MAAO,IAAIwiB,MAAOuE,cAAcjhB,WACrCzM,KAAKktC,QAAUltC,KAAKmb,qBAAqBgyB,yB,iCARpCC,GAAe,8C,iCAAfA,EAAe,0LCX5B,4BACI,iDACI,qDACI,YACJ,iBACA,gDACA,qDACI,a,oBACJ,iBACJ,uCACJ,mCACA,mB,MARY,qHAIA,mH,uCDAZ,GAIa,EAAAA,mB,8EEXb,KAEA,KACA,KAHA,I,qBAOA,aAEI,WAAoB1tC,EAAkCyb,GAAlC,KAAAzb,cAAkC,KAAAyb,uB,OAEtD,YAAAra,UAAA,SAAUqC,GACN,IAAMkqC,EAAsBrtC,KAAKN,YAAYO,EAAE,mBAC3CkE,EAAmB,GAoBvB,OAlBY,MAARhB,GAAgC,iBAATA,EACvBgB,EAAOgB,KAAKhC,GACG,MAARA,GAAgC,iBAATA,EAC9BgB,EAAOgB,KAAKkoC,GACoB,MAAzBlqC,EAAKmqC,iBACZnpC,EAASA,EAAOopC,OAAQpqC,EAAuBqqC,kBAE/CrpC,EAAOgB,KAAKhC,EAAKoB,QAAUpB,EAAKoB,QAAU8oC,GAGxB,IAAlBlpC,EAAOhG,OACP6B,KAAKmb,qBAAqBud,UAAU,QAAS14B,KAAKN,YAAYO,EAAE,iBAAkBkE,EAAO,IAClFA,EAAOhG,OAAS,GACvB6B,KAAKmb,qBAAqBud,UAAU,QAAS14B,KAAKN,YAAYO,EAAE,iBAAkBkE,EAAQ,CACtFspC,QAAS,IAAOtpC,EAAOhG,SAIxBgG,G,iCAzBFupC,GAAiB,+D,oCAAjBA,EAAiB,QAAjBA,EAAiB,O,EAD9B,GACa,EAAAA,qB,8ECRb,SAAYh1B,GACR,qCACA,2DACA,2DACA,uDACA,mDACA,6EACA,yEAPJ,CAAY,EAAAA,iBAAA,EAAAA,eAAc,M,8ECA1B,MAII,SAAYi1B,EAAmBC,GAC3B5tC,KAAK2tC,UAAYA,EACjB3tC,KAAK4tC,oBAAsBA,GANtB,EAAAnM,e,8ZCEb,IAIA,cAOI,WAAYlf,GAAZ,MACI,cAAO,KACP,OAAW,MAAPA,IAIJ,EAAK3iB,GAAK2iB,EAAI3iB,GACd,EAAK2C,eAAiBggB,EAAIhgB,eAC1B,EAAKJ,KAAOogB,EAAIpgB,KAChB,EAAKgB,KAAOof,EAAIpf,KAChB,EAAKqxB,QAAUjS,EAAIiS,S,EAE3B,OAnB4B,OAmB5B,EAnBA,CAJA,MAI4B,SAAf,EAAAqZ,U,8ECFb,MAOI,SAAYjtC,GACRZ,KAAKJ,GAAKgB,EAAShB,GACnBI,KAAKuC,eAAiB3B,EAAS2B,eAC/BvC,KAAKmC,KAAOvB,EAASuB,KACrBnC,KAAKmD,KAAOvC,EAASuC,KACrBnD,KAAKw0B,QAAU5zB,EAAS4zB,SAZnB,EAAAsZ,c,6gDCYb,aAaI,WAAsBpuC,EAAoCyZ,EAC5C1D,EAA8C8f,EAC9C+B,EACAnc,EAAsDqc,GAH9C,KAAA93B,cAAoC,KAAAyZ,gBAC5C,KAAA1D,mBAA8C,KAAA8f,cAC9C,KAAA+B,4BACA,KAAAnc,uBAAsD,KAAAqc,gB,OAE9D,YAAAt2B,SAAN,W,kGACiB,OAAb,EAAAlB,KAAa,GAAMA,KAAKu1B,YAAY0L,Y,OACP,OAD7B,EAAKjgB,MAAQ,SACb,EAAAhhB,KAA6B,GAAMA,KAAKw3B,cAAcuW,kC,cAAtD,EAAKC,sBAAwB,S,YAGjC,YAAAC,6BAAA,WACI,GAAkC,MAA9BjuC,KAAKguC,sBACL,MAAO,GAGX,IAAInoC,EACJ,OAAQ7F,KAAKguC,sBAAsBE,eAC/B,KAAK,EACDroC,EAAM7F,KAAKN,YAAYO,EAAE,UACzB,MACJ,KAAK,EACD4F,EAAM7F,KAAKN,YAAYO,EAAE,QACzB,MACJ,QACI4F,EAAM7F,KAAKN,YAAYO,EAAE,QAGjC,OAAO4F,EAAM,KAAO7F,KAAKguC,sBAAsBE,cAAgB,KAG7D,YAAApmB,OAAN,W,0GACS,SAAM9nB,KAAKmuC,kB,OAAhB,OAAK,SAIA,GAAMnuC,KAAKouC,sBAHZ,I,OAGJ,OAAK,SAIS,GAAMpuC,KAAKu1B,YAAY0L,YAHjC,I,cAGEjgB,EAAQ,SACE,MAAZhhB,KAAK6+B,IAAL,OACA,EAAA7+B,KAAW,GAAMA,KAAKu1B,YAAY8Y,W,OAAlC,EAAKxP,IAAM,S,wBAEW,MAAtB7+B,KAAK8+B,cAAL,OACA,EAAA9+B,KAAqB,GAAMA,KAAKu1B,YAAY+Y,qB,OAA5C,EAAKxP,cAAgB,S,iBAEb,SAAM9+B,KAAKmZ,cAAcgmB,QAAQn/B,KAAK+nB,eAAgB/G,EAAMjd,OAAO/B,cAC3EhC,KAAK6+B,IAAK7+B,KAAK8+B,gB,OACQ,OAFrBngC,EAAM,SAEe,GAAMqB,KAAKmZ,cAAc8O,aAAajoB,KAAK+nB,eAAgBppB,I,OAG/D,OAHjBupB,EAAqB,SAEvBqB,EAA6C,KAC1B,GAAMvpB,KAAKmZ,cAAco1B,a,eAC1B,MADC,SACnB,OACS,GAAMvuC,KAAKmZ,cAAcq1B,WAAW7vC,I,eAA7C4qB,EAAS,S,eAEA,SAAMvpB,KAAKmZ,cAAcs1B,aAAa9vC,I,QAA/C4qB,EAAS,S,mBAGb,SAAMvpB,KAAK0uC,qBAAqBxmB,EAAoBvpB,EAAK4qB,I,eAAzD,S,YAGE,YAAA6kB,mBAAN,W,mEAGI,MAAO,CAAP,GAAO,UAGL,YAAAM,qBAAN,SAA2BxmB,EAA4BvpB,EACnD4qB,G,oFAIE,YAAA4kB,eAAN,W,gGACI,OAA2B,MAAvBnuC,KAAK+nB,gBAAkD,KAAxB/nB,KAAK+nB,gBACpC/nB,KAAKmb,qBAAqBud,UAAU,QAAS14B,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,uBAChB,CAAP,GAAO,IAEPD,KAAK+nB,eAAe5pB,OAAS,GAC7B6B,KAAKmb,qBAAqBud,UAAU,QAAS14B,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,qBAChB,CAAP,GAAO,IAEPD,KAAK+nB,iBAAmB/nB,KAAK2uC,sBAC7B3uC,KAAKmb,qBAAqBud,UAAU,QAAS14B,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,0BAChB,CAAP,GAAO,KAGL2uC,EAAiB5uC,KAAKs3B,0BAA0BuX,iBAAiB7uC,KAAK+nB,eACxE/nB,KAAK8uC,gCAEyB,MAA9B9uC,KAAKguC,uBACJhuC,KAAKw3B,cAAcuX,uBAChBH,EAAe9hB,MACf9sB,KAAK+nB,eACL/nB,KAAKguC,uBAMS,MAAlBY,GAA0BA,EAAe9hB,MAAQ,EAClC,GAAM9sB,KAAKmb,qBAAqB+Z,WAAWl1B,KAAKN,YAAYO,EAAE,0BACzED,KAAKN,YAAYO,EAAE,sBAAuBD,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MACxF,YAHJ,OALAD,KAAKmb,qBAAqBud,UAAU,QAAS14B,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,2CAChB,CAAP,GAAO,K,OAOP,IAHe,SAIX,MAAO,CAAP,GAAO,G,iBAIf,MAAO,CAAP,GAAO,WAGX,YAAA+uC,uBAAA,sBAC8C,MAAtChvC,KAAKivC,+BACLC,aAAalvC,KAAKivC,+BAEtBjvC,KAAKivC,8BAAgCrxB,YAAW,WAC5C,IAAMgxB,EAAiB,EAAKtX,0BAA0BuX,iBAAiB,EAAK9mB,eACxE,EAAK+mB,gCACT,EAAKK,oBAAwC,MAAlBP,EAAyB,KAAOA,EAAe9hB,QAC3E,MAGD,YAAAkR,OAAN,W,0FACsB,SAAMh+B,KAAKmb,qBAAqB+Z,WAAWl1B,KAAKN,YAAYO,EAAE,sBAC5ED,KAAKN,YAAYO,EAAE,UAAWD,KAAKN,YAAYO,EAAE,UAAWD,KAAKN,YAAYO,EAAE,Y,cADjE,UAGdD,KAAKyV,iBAAiBkB,KAAK,U,YAI3B,YAAAm4B,6BAAR,WACI,IAAIM,EAAsB,GACpBC,EAAarvC,KAAKghB,MAAM5b,QAAQ,KAItC,OAHIiqC,GAAc,IACdD,EAAYA,EAAU7B,OAAOvtC,KAAKghB,MAAMpa,OAAO,EAAGyoC,GAAYtrC,OAAO/B,cAAcgE,MAAM,kBAEtFopC,G,iCAxJFE,GAAuB,uR,iCAAvBA,I,EAAb,GAAa,EAAAA,2B,88CChBb,WAcA,GANA,KACA,MAEA,KACA,KAEA,QACA,SACA,SAGA,Q,2HCPY,6BACI,uD,mBACA,+DAAsB,Y,mBAAoB,iBAC9C,+C,MAFgD,6EACtB,kE,yBAkBV,8BAAgE,YAAiB,kB,8BAAjB,qD,sBAI5E,6BACI,yDACA,Y,mBACJ,2B,MADI,uH,sBASY,yBAAoC,gBAAM,kB,sBAE1C,4BAAoE,Y,mBAC1D,kB,MAD0D,wE,sBAEpE,4BAAoE,Y,mBAC1D,kB,MAD0D,mE,sBAiBhE,8BAC4D,Y,mBAChD,kB,MADgD,kE,sBAE5D,8BAC6D,Y,mBACjD,kB,MADiD,mE,yBAE7D,+BAAiD,YAAU,kB,uCAAV,4C,sBAGjD,6BACI,+E,mBAEA,uFAAsB,Y,mBAA+B,iBACzD,gF,MAHwB,wFAEE,6E,yBAJ9B,yBACI,6FAKJ,mE,uCALkB,iD,sBAOd,2BAAoD,Y,mBAAkB,kB,MAAlB,gE,sBACpD,2BAAoD,Y,mBAAkB,kB,MAAlB,gE,sBACpD,2BAAsD,Y,mBAAoB,kB,MAApB,kE,sBACtD,2BAAmD,Y,mBAAiB,kB,MAAjB,+D,sBACnD,2BAAqD,Y,mBAAmB,kB,MAAnB,iE,mDAEzD,4BACI,oFAAuB,mHAAvB,iBAGJ,kE,0CAFQ,qFADmB,wCAA6B,qC,mDAIxD,4BACI,oFAAuB,8GAAvB,iBAEJ,kE,0CAFoD,gFAAzB,mCAAwB,qC,mDAxCvD,yBACI,6EAAgC,4GAC5B,oFAAuB,6FAAuB,0GAA9C,iBAGJ,kEACA,6EAAe,4GACX,oFAEJ,mEACA,4EACI,aACA,iCAGA,uFAGA,wFACJ,mEACA,iFAOA,4EACI,uFACA,uFACA,uFACA,uFACA,uFACJ,mEACA,iFAKA,iFAIJ,+D,+CAzCuD,+EAAxB,kCAAuB,iDAKlC,oDAA0B,gBAA1B,CAA0B,YAA1B,CAA0B,eAItC,+HAEI,oFAGA,qFAE8B,2CAElC,4DAQM,0EACA,0EACA,4EACA,yEACA,2EAEc,4DAKA,6D,yBAvDxC,6BACI,oEACI,qEACI,sEACI,0EAAI,gBAAM,iBACV,4EAAI,iBAAM,iBACV,4EAAI,a,oBAAiB,iBACrB,iFACA,4EAAI,a,oBAAqB,iBACzB,iFAEA,iFAEJ,+DACJ,2DACA,uEACI,+EA4CJ,2DACJ,uDACJ,6D,sDAxDoB,gEACA,4DACA,mEACgC,4DAEA,4DAKpC,0C,uFAxCpB,6BAEI,8DACI,kEACI,wEAAoC,Y,mBAAmB,iBACvD,yEACwD,sG,oBADxD,iBAEJ,uDACA,oEACI,2EACI,6FAAwB,MACxB,a,oBACJ,iBACA,2EACI,6FAAwB,MACxB,a,oBACA,iCACJ,2DACJ,uDACJ,mDACA,2EAIA,6EA+DJ,+C,yCAnFgD,iEAEhC,oFAAoD,qCAGA,+EAEpD,8HAEoD,8EAEpD,uIAC0C,oDAIxC,8CAIA,8C,qDDnB9B,aAsBI,WAAoBl0B,EAAgC1b,EACxC20B,EAAiCzM,GADzB,KAAAxM,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBAdnC,KAAA2nB,cAAgB,IAAI,EAAAxsB,aAE9B,KAAAysB,qBAAuB,EAAAxiB,qBACvB,KAAAyiB,2BAA6B,EAAA/oB,2BAE7B,KAAAgpB,cAAe,EACf,KAAA/uC,SAAU,EAEV,KAAAgvC,cAAgB,EAGR,KAAAC,SAAkD,G,OAKpD,YAAA1uC,SAAN,W,0FACI,SAAMlB,KAAK6vC,a,cAAX,SACA7vC,KAAKW,SAAU,E,YAGnB,sBAAI,oBAAK,C,IAAT,WACI,OAAIX,KAAK0vC,aACE1vC,KAAK4vC,SAASznC,QAAO,SAAAjD,GAAK,OAACA,EAAU02B,WAErC57B,KAAK4vC,U,gCAId,YAAAC,UAAN,W,yGACkB,SAAM7vC,KAAKob,WAAW00B,qBAAqB9vC,KAAKuC,iB,cAAxDwtC,EAAQ,SACd/vC,KAAK4vC,SAAWG,EAAM5sC,KAAKmE,KAAI,SAAAJ,GAAK,OAAAA,KAAGs1B,KAAK,EAAA/2B,MAAM0J,gBAAgBnP,KAAKN,YAAa,UAChE,UAAhBM,KAAKgwC,OAAL,MACiB,GAAMhwC,KAAKob,WAAW60B,cAAcjwC,KAAKuC,eAAgBvC,KAAKkwC,W,cAC/D,OADVtvC,EAAW,WACOmvC,EAAM5sC,KAAKhF,OAAS,GACxCyC,EAASwD,SAAQ,SAAA+rC,GACb,IAAMC,EAAOL,EAAM5sC,KAAKgF,QAAO,SAAAjD,GAAK,OAAAA,EAAEtF,KAAOuwC,KACjC,MAARC,GAAgBA,EAAKjyC,OAAS,IAC7BiyC,EAAK,GAAWxU,SAAU,M,mBAIhB,eAAhB57B,KAAKgwC,OAAL,MACU,GAAMhwC,KAAKob,WAAWi1B,mBAAmBrwC,KAAKuC,eAAgBvC,KAAKkwC,W,OACpE,OADVtvC,EAAW,WACOmvC,EAAM5sC,KAAKhF,OAAS,GACxCyC,EAASwD,SAAQ,SAAA+rC,GACb,IAAMC,EAAOL,EAAM5sC,KAAKgF,QAAO,SAAAjD,GAAK,OAACA,EAAEorC,WAAaprC,EAAEtF,KAAOuwC,EAAEvwC,MACnD,MAARwwC,GAAgBA,EAAKjyC,OAAS,IAC7BiyC,EAAK,GAAWxU,SAAU,EAC1BwU,EAAK,GAAW3tB,SAAW0tB,EAAE1tB,SAC7B2tB,EAAK,GAAW1tB,cAAgBytB,EAAEztB,kB,wBAMnD1iB,KAAK4vC,SAASxrC,SAAQ,SAAAc,GACE,eAAhB,EAAK8qC,QAA2B9qC,EAAEorC,YACjCprC,EAAU02B,SAAU,GAEpB12B,EAAU02B,SACX,EAAK+T,mB,YAKjB,YAAAY,MAAA,SAAMrrC,GACkB,eAAhBlF,KAAKgwC,QAA2B9qC,EAAEorC,YAGrCprC,EAAU02B,SAAY12B,EAAU02B,QACjC57B,KAAKwwC,gBAAgBtrC,KAGzB,YAAAsrC,gBAAA,SAAgBtrC,GACPA,EAAU02B,QACX57B,KAAK2vC,iBAEe,eAAhB3vC,KAAKgwC,SACJ9qC,EAAUud,UAAW,EACrBvd,EAAUwd,eAAgB,GAE/B1iB,KAAK2vC,kBAIb,YAAAc,eAAA,SAAef,GACX1vC,KAAK0vC,aAAeA,GAGlB,YAAA5nB,OAAN,W,gGAUQ,O,sBARoB,UAAhB9nB,KAAKgwC,QACCU,EAAa1wC,KAAK+vC,MAAM5nC,QAAO,SAAAjD,GAAK,OAACA,EAAU02B,WAASt0B,KAAI,SAAApC,GAAK,OAAAA,EAAEtF,MACzEI,KAAKmoB,YAAcnoB,KAAKob,WAAWu1B,cAAc3wC,KAAKuC,eAAgBvC,KAAKkwC,SAAUQ,KAE/EA,EAAa1wC,KAAK+vC,MAAM5nC,QAAO,SAAAjD,GAAK,OAACA,EAAU02B,UAAY12B,EAAEorC,aAC9DhpC,KAAI,SAAApC,GAAK,WAAI,EAAA08B,yBAAyB18B,EAAEtF,KAAOsF,EAAUud,WAAavd,EAAUwd,kBACrF1iB,KAAKmoB,YAAcnoB,KAAKob,WAAWw1B,mBAAmB5wC,KAAKuC,eAAgBvC,KAAKkwC,SAAUQ,IAE9F,GAAM1wC,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAC3BC,OAAwB,UAAhBh1B,KAAKgwC,OAAqB,qBAAuB,4BAE7DhwC,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,iBACjED,KAAKuvC,cAAc74B,O,6FA9GlBm6B,GAAoB,iJ,iCAApBA,EAAoB,4iE,GAAA,MCzBjC,4BACI,iDACI,wDAAkC,2CAAY,EAAA/oB,YAC1C,yDACI,4DACI,a,oBACA,6BAAO,aAAc,iBACzB,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,6DAIA,+D,sBAwFA,2DACI,mEACI,6D,oBACA,kEAAM,a,oBAAiB,iBAC3B,mDACA,mEAA6E,a,oBAAkB,iBACnG,+CACJ,2CACJ,uCACJ,mCACA,mB,4BAhHgE,0DAG5C,yHACO,iDAE8C,oFAIrC,wDAKpB,2HAwFyD,kDACpB,+EAC3B,gEAEmE,mE,8RDxF7F,GAIa,EAAA+oB,wB,68CEzBb,KAMA,KAEA,KACA,KAEA,OAXA,I,qGCMoB,+BAAuC,YAAQ,kB,6BAAR,4C,sBAM/C,6BACI,uD,mBACA,+DAAsB,Y,mBAAoB,iBAC9C,+C,MAFgD,6EACtB,kE,sBAsBtB,0BACI,Y,mBACJ,kB,MADI,wH,sBASQ,4BAAsD,Y,mBAAiB,kB,MAAjB,+D,yBAYtD,yBACI,+EAAqC,YAAc,iBACvD,+D,uCADU,mEAA+B,gD,yBAR7C,yBACI,sEAAI,Y,mBAA0B,iBAC9B,sEACI,uEAEA,gFAAsB,aAAuB,iBACjD,+DACA,6EAGA,sEACJ,4D,4CAVQ,wEAEG,6EAA0C,4DAEvB,+DAEtB,+CAGA,qE,yBAtBhB,+BACI,iEACI,kEACI,yEAAqC,Y,mBAAsB,iBAC3D,0EACI,iFAAsB,a,oBAAmB,iBAC7C,+DACA,6EACA,2EAAyB,a,oBAAkB,iBAC/C,2DACJ,uDACA,mEACI,2EAYJ,uDACJ,oD,8BAtBiD,mEAEX,iEAEW,+CACZ,gEAIzB,iD,mDAcZ,mCACI,0FAAoB,MACpB,2D,mBACA,gEAAM,Y,mBAAqB,iBAC/B,kD,oDAJiB,2CAA4B,gCAER,6EAC3B,mE,0FApDd,6BACI,8DACI,kEACI,wEAAmC,Y,mBAAsB,iBACzD,yEACyC,iG,oBADzC,iBAEA,yEAAmB,iBAAC,iBACpB,0EAAiC,a,oBAAoB,iBACrD,0EACuC,+F,oBADvC,iBAEJ,uDACA,0EACgD,yFAAoB,MAEhE,iEAEA,a,oBACJ,iBACJ,mDACA,uDACA,kEAGA,sEA0BA,sEAKJ,+C,oDAnD+C,oEAE/B,uFAAqC,gCAER,mEAE7B,qFAAmC,8BAEvB,6DAA+B,gCAGhB,mFAE/B,0HAIH,gEAGiC,8DA2BiC,yDDlDvF,iBAuBI,WAAoBz1B,EAAgC1b,EACxC63B,EAAoC3P,GAD5B,KAAAxM,aAAgC,KAAA1b,cACxC,KAAA63B,eAAoC,KAAA3P,iBAfvC,KAAAkpB,UAAW,EAEpB,KAAAnwC,SAAU,EACV,KAAA4rC,QAAS,EAQD,KAAAwE,kBAAoB,IAAI/hC,IACxB,KAAAgiC,cAAgB,IAAIhiC,I,OAKtB,YAAA9N,SAAN,W,gGAII,OAHM+vC,EAAejxC,KAAKu3B,aAAahK,wBACvCvtB,KAAK8tB,MAAQmjB,EAAa,GAC1BjxC,KAAKytB,IAAMwjB,EAAa,GACxB,GAAMjxC,KAAK6Z,Q,cAAX,S,YAGE,YAAAA,KAAN,W,4GACQ7Z,KAAK8wC,SACY,GAAM9wC,KAAKob,WAAW00B,qBAAqB9vC,KAAKuC,iBADjE,M,OACiB,SACRY,KAAKiB,SAAQ,SAAAc,GAClB,IAAMwC,EAAiB,MAAVxC,EAAEwC,MAAkC,KAAlBxC,EAAEwC,KAAK3D,OAAgBmB,EAAE8b,MAAQ9b,EAAEwC,KAClE,EAAKspC,cAAc9hC,IAAIhK,EAAEtF,GAAI,CAAE8H,KAAMA,EAAMsZ,MAAO9b,EAAE8b,QACpD,EAAK+vB,kBAAkB7hC,IAAIhK,EAAEyhB,OAAQ,CAAEjf,KAAMA,EAAMsZ,MAAO9b,EAAE8b,W,iBAGpE,SAAMhhB,KAAKkxC,YAAW,I,cAAtB,SACAlxC,KAAKusC,QAAS,E,YAGZ,YAAA2E,WAAN,SAAiBC,G,6GACb,GAA2B,MAAvBnxC,KAAKoxC,gBAA8C,MAApBpxC,KAAKqxC,YACpC,UAGAC,EAAkB,KACtB,IACIA,EAAQtxC,KAAKu3B,aAAavJ,kBAAkBhuB,KAAK8tB,MAAO9tB,KAAKytB,KAC/D,MAAO5sB,GAGL,OAFAb,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,qBACvB,IAGJD,KAAKW,SAAU,E,iBAgBA,O,sBAbP+oB,OAAO,EAEPA,EADgB,SAAhB1pB,KAAKgwC,OACKhwC,KAAKob,WAAWm2B,0BAA0BvxC,KAAKuC,eAAgBvC,KAAKkwC,SAC1EoB,EAAM,GAAIA,EAAM,GAAIH,EAAgB,KAAOnxC,KAAKwxC,mBAE1CxxC,KAAKob,WAAWq2B,gBAAgBzxC,KAAKkwC,SAC3CoB,EAAM,GAAIA,EAAM,GAAIH,EAAgB,KAAOnxC,KAAKwxC,mBAEpDL,EACAnxC,KAAKoxC,eAAiB1nB,EAEtB1pB,KAAKqxC,YAAc3nB,EAEZ,GAAMA,G,cAAjB9oB,EAAW,S,iDAGfZ,KAAKwxC,kBAAoB5wC,EAAS4wC,kBAC5B1lB,EAASlrB,EAASuC,KAAKmE,KAAI,SAAAJ,GAC7B,IAAMyf,EAA2B,MAAlBzf,EAAEwqC,aAAuBxqC,EAAEyf,OAASzf,EAAEwqC,aAC/CC,EAAY,EAAKpa,aAAalJ,aAAannB,GAC3CkpC,EAAO,EAAKU,UAAsB,MAAVnqB,GAAkB,EAAKoqB,kBAAkB1S,IAAI1X,GACvE,EAAKoqB,kBAAkBvyC,IAAImoB,GAAU,KACzC,MAAO,CACHpiB,QAASotC,EAAUptC,QACnBqqB,QAAS+iB,EAAU/iB,QACnBC,QAAS8iB,EAAU9iB,QACnBlI,OAAQA,EACRirB,SAAkB,MAARxB,EAAeA,EAAK1oC,KAAO,EAAKopC,SAAW,EAAKpxC,YAAYO,EAAE,WAAa,KACrF4xC,UAAmB,MAARzB,EAAeA,EAAKpvB,MAAQ,EAAK8vB,SAAW,GAAK,KAC5Dld,KAAM1sB,EAAE0sB,KACRke,GAAI5qC,EAAE6qC,UACN5vC,KAAM+E,EAAE/E,UAIXgvC,GAAgC,MAAfnxC,KAAK8rB,QAAkB9rB,KAAK8rB,OAAO3tB,OAAS,EAC9D6B,KAAK8rB,OAAS9rB,KAAK8rB,OAAOyhB,OAAOzhB,GAEjC9rB,KAAK8rB,OAASA,EAGlB9rB,KAAKW,SAAU,EACfX,KAAKqxC,YAAc,KACnBrxC,KAAKoxC,eAAiB,K,6CAtGjBY,GAAqB,iJ,iCAArBA,EAAqB,i9DCpBlC,4BACI,iDACI,qDACI,yDACI,4DACI,Y,oBACA,iCACJ,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,6DAIA,+DAuDA,2DACI,mEAA6E,a,oBAAkB,iBACnG,+CACJ,2CACJ,uCACJ,mCACA,mB,MAxEoB,uHAC0B,2CAE2B,mFAIrC,8CAIA,6CAwDyD,mE,uLDxD7F,GAIa,EAAAA,yB,8ZEpBb,IAEA,cAaI,WAAY7uC,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,OAAY,MAARA,IAGJ,EAAKmoC,qBAAuB,EAAK9pC,oBAAoB,wBACrD,EAAK+pC,gBAAkB,EAAK/pC,oBAAoB,mBAChD,EAAKgqC,mBAAqB,EAAKhqC,oBAAoB,sBACnD,EAAKiqC,cAAgB,EAAKjqC,oBAAoB,iBAC9C,EAAKkqC,qBAAuB,EAAKlqC,oBAAoB,wBACrD,EAAKoqC,0BAA4B,EAAKpqC,oBAAoB,6BAC1D,EAAKywC,cAAgB,EAAKzwC,oBAAoB,iBAC9C,EAAKqqC,aAAe,EAAKrqC,oBAAoB,gBAC7C,EAAKsqC,UAAY,EAAKtqC,oBAAoB,aAC1C,EAAKuqC,eAAiB,EAAKvqC,oBAAoB,kBAC/C,EAAKwqC,YAAc,EAAKxqC,oBAAoB,gBAZjC,EAcnB,OA9BoC,OA8BpC,EA9BA,CAFA,MAEoCU,cAAvB,EAAAgwC,kB,68CCFb,KAEA,KACA,MAEA,MACA,KANA,IAQA,Q,uJCGgB,6BACI,oEAA4B,Y,mBAAuB,iBACnD,oEACI,0GADJ,iBAEJ,2D,gCAHgC,oEAExB,yD,yBAER,qCAAiD,Y,mBAAwB,kB,6BAAxB,wE,yBACjD,qC,mBAEI,gEACI,sEAAQ,yBAAU,iBAAS,oBAC3B,oEAAM,aAAY,iBACtB,uDACA,kEACI,wEAAQ,8BAAc,iBAAS,qBAC/B,sEAAM,aAAgB,iBAC1B,uDACA,kEACI,wEAAQ,sBAAM,iBAAS,qBACvB,sEAAM,aAAS,iBACnB,uDACA,kEACI,wEAAQ,2BAAW,iBAAS,qBAC5B,sEAAM,aAAa,iBACvB,uDACJ,oD,6BAlByB,8EAIX,gDAIA,oDAIA,6CAIA,kD,yBAKd,gCAEI,2D,mBACA,gEAAM,Y,mBAAuD,iBACjE,mD,gDAJyD,mCAEpB,6EAC3B,iGD7B1B,iBAoBI,WAAoBxyC,EAAkC20B,EAC1CzM,EAAwCzO,GADhC,KAAAzZ,cAAkC,KAAA20B,YAC1C,KAAAzM,iBAAwC,KAAAzO,gB,OAE9C,YAAA2O,OAAN,W,oGACI,OAA2B,MAAvB9nB,KAAK+nB,gBAAkD,KAAxB/nB,KAAK+nB,gBACpC/nB,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,uBACvB,MAGEkkB,EAAU,IAAI,EAAAnQ,4BACpB,EAAAmQ,EAA6B,GAAMnkB,KAAKmZ,cAAc8O,aAAajoB,KAAK+nB,eAAgB,Q,OAAxF,EAAQG,mBAAqB,S,iBAGR,O,sBADjBloB,KAAKmoB,YAAcnoB,KAAKmyC,QAAQnyC,KAAKkwC,SAAU/rB,GAC9B,GAAMnkB,KAAKmoB,a,cAAtBvnB,EAAW,SACjBZ,KAAKwf,aAAe5e,EAASwxC,OAC7BpyC,KAAKu9B,SAAcv9B,KAAKqyC,QAAO,IAAIryC,KAAKkwC,SACxClwC,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,UAAUh1B,KAAKqyC,QAAO,a,6FAjC9DC,GAAe,oJ,iCAAfA,EAAe,8mCChB5B,4BACI,iDACI,wDAAkC,2CAAY,EAAAxqB,YAC1C,yDACI,4DAAyC,a,oBAAsB,iBAC/D,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,2DAAG,a,oBAA4B,iBAC/B,0EAKA,0EACA,2EAmBJ,+CACA,4DACI,qEAKA,mEAA6E,a,oBAAkB,iBACnG,+CACJ,2CACJ,uCACJ,mCACA,mB,MA9CgE,0DAEP,sEACgB,oFAKtD,8EACW,oDAKc,mDAExB,mDAqBA,oDAIyE,mE,6QD/B7F,GAIa,EAAAwqB,mB,68CEhBb,KAIA,KAEA,KACA,MAEA,KACA,MACA,KAXA,IAaA,Q,2GAEA,aAUI,WAAoBl3B,EAAgC1b,EACxC20B,EAAiCzM,EACjCzO,EAAsCsS,GAF9B,KAAArQ,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAAzO,gBAAsC,KAAAsS,SAPzC,KAAAlpB,eAA0B,K,OAS7B,YAAAulB,OAAN,W,kGACI,OAA2B,MAAvB9nB,KAAK+nB,gBAAkD,KAAxB/nB,KAAK+nB,gBACpC/nB,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,uBACvB,MAGEkkB,EAAU,IAAI,EAAAnQ,4BACpB,EAAAmQ,EAA6B,GAAMnkB,KAAKmZ,cAAc8O,aAAajoB,KAAK+nB,eAAgB,Q,OAAxF,EAAQG,mBAAqB,S,iBAGzB,O,sBADAloB,KAAKmoB,YAAcnoB,KAAKob,WAAWm3B,iBAAiBpuB,EAASnkB,KAAKuC,gBAClE,GAAMvC,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAC3BC,OAA+B,MAAvBh1B,KAAKuC,eAAyB,4BAA8B,iBAExEvC,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,gBACtC,MAAvBD,KAAKuC,eACLvC,KAAKyrB,OAAOsc,SAAS,CAAC,gBAAiB/nC,KAAKuC,eAAgB,UAE5DvC,KAAKyrB,OAAOsc,SAAS,CAAC,U,6FA7BzByK,GAAmB,oN,iCAAnBA,EAAmB,q7B,GAAA,MCnBhC,4BACI,iDACI,wDAAkC,2CAAY,EAAA1qB,YAC1C,yDACI,4DAA6C,a,oBAAuB,iBACpE,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,2DAAG,a,oBAAoE,iBACvE,uEAA4B,a,oBAA8B,iBAC1D,kEAA4B,a,oBAAuB,iBACnD,kEACI,uEADJ,iBAEJ,+CACA,4DACI,mEACI,6D,oBACA,kEAAM,a,oBAAuB,iBACjC,mDACA,mEAA6E,a,oBAAkB,iBACnG,+CACJ,2CACJ,uCACJ,mCACA,mB,4BAxBgE,0DAEH,sEACY,oFAKtD,gHACyB,6EACA,sEAExB,wDAGoD,kDACnB,+EAC3B,sEAEmE,mE,sQDN7F,GAIa,EAAA0qB,uB,68CEnBb,KAKA,KACA,MAIA,KACA,KACA,KAZA,IAcA,SACA,SACA,S,kMCZI,+BAAQ,uFACJ,8CACA,Y,mBACJ,iB,gCAH4F,mCACzD,wEAC/B,yF,sBAGR,6BACI,0C,mBACA,kDAAsB,Y,mBAAoB,iBAC9C,4C,MAFgD,6EACtB,kE,mDAMtB,gCAAwD,6FACpD,Y,mBACJ,iB,MADI,2F,mDAEJ,wCAAkD,gGAA0B,KAA1B,CAAgC,sFACjD,MACjC,sC,iCAFgB,iD,sBAIhB,wBAA0B,Y,mBAA4B,kB,MAA5B,0E,mDAEtB,qC,mBAEI,qDAAG,Y,sCAA+E,iBAClF,8DAAsC,iGAElC,kEAA2C,a,oBAAyB,iBACpE,gEACI,oEACI,wEAA8B,mBAAG,iBACrC,uDACA,sEACI,0GADJ,iBAEJ,mDACA,kEAA2C,a,oBAAyB,iBACpE,gEACI,oEACI,wEAA8B,mBAAG,iBACrC,uDACA,sEACI,0GADJ,iBAEJ,mDACA,mEACI,6D,oBACA,kEAAM,a,oBAA8B,iBACxC,mDACJ,+CACJ,2C,oDA1B4B,yEAErB,iJAC6D,gEAEjB,sEAMnC,wDAEmC,sEAMnC,wDAEyD,kDAC5B,+EAC3B,8E,sBAWd,2BAAiC,Y,mBAA0B,kB,MAA1B,wE,4LAnCzC,6BACI,kEA2BA,iDACI,mDAMA,4DACA,YACJ,iBACJ,iD,8BApCQ,8HA2BoB,qXAMd,yDACN,gG,mDAGR,gCAAwD,iGACpD,Y,mBACJ,iB,iCADI,wI,mDAEJ,4CACsC,iGAA2B,KAA3B,CAAiC,oFAA4B,MAEnG,sC,iCAHoB,4EAAiE,oC,sBAKrF,wBAAyC,Y,mBAAuB,kB,MAAvB,qE,sBAczB,2BACI,+DACA,Y,mBACJ,kB,MADI,sH,sBAEJ,2BACI,+DACA,Y,mBACJ,kB,MADI,wH,yBAjBZ,yBACI,0DAAI,Y,mBAA8B,iBAClC,0DACI,gE,mBAEI,iEAAmD,iBACvD,kE,oBACI,a,oBAAqC,iBAC7C,mDACA,4DAAI,a,wBAA2B,iBAC/B,4DACI,sEAIA,sEAIJ,mDACJ,gD,uBAnBQ,2EAEG,wEACC,8EAED,qEAAgD,oEAC/C,mHAEJ,sEAEM,2CAIA,6C,yBAjBtB,+BACI,qDACI,6DAqBJ,0CACJ,uC,8BAtBY,mD,sBAwBZ,wBAAiD,Y,mBAA2B,kB,MAA3B,yE,sBAMjC,2BACI,Y,mBACJ,kB,MADI,4H,sBAEJ,2BAAgD,Y,mBAAuB,kB,MAAvB,qE,qJAGhD,sB,4DAAmE,+S,oEAT3E,yBACI,0DAAI,Y,mBAAqC,iBACzC,0DACI,oEAGA,qEACJ,mDACA,4DACI,oEAOA,aACJ,iBACA,+D,oBACI,a,wBAA2B,iBACnC,gD,4CAnBQ,kFAEM,yGAGA,sEAGc,wDAOpB,6FAEwC,8FAAxC,2DACA,oG,yBArBhB,+BACI,qDACI,6DAqBJ,0CACJ,uC,8BAtBY,uD,yBAzFhB,6BACI,8CAAI,Y,mBAAiE,iBACrE,+CAAmB,6BAAQ,Y,uBAAkC,iBAAS,iBACtE,+CAAG,a,oBAA8B,iBACjC,wDAGA,gEAGA,mDAA0B,a,oBAA0B,iBACpD,mDACA,gEAuCA,wDAGA,qEAIA,mDAA0B,a,oBAAqB,iBAC/C,mDACA,wDAyBA,mDAA0B,a,oBAAyB,iBACnD,mDACA,wDAyBA,sDAA0B,a,oBAA6C,iBAC3E,6C,6BAhHQ,2GACuB,8EACxB,6EAC2E,qDAIrC,oDAEf,yEACvB,qDACW,oDAuCoE,yDAK9E,wDAEsB,oEACvB,oEACuB,kEAyBA,wEACvB,4EACuB,0EAyBA,kGD3G9B,iBAkBI,WAAsBp3B,EAAkC1b,EAC1C20B,EAAmCzM,EACnCzM,GAFQ,KAAAC,aAAkC,KAAA1b,cAC1C,KAAA20B,YAAmC,KAAAzM,iBACnC,KAAAzM,uBAfd,KAAAxa,SAAU,EACV,KAAA8xC,aAAc,EACd,KAAAC,mBAAoB,EACpB,KAAAC,eAAgB,EAEhB,KAAAx2B,kBAAoB,EAAAX,kBACpB,KAAAo3B,gBAAkB,EAAAC,gB,OAWZ,YAAA3xC,SAAN,W,0FACI,SAAMlB,KAAK6Z,Q,cAAX,SACA7Z,KAAKyyC,aAAc,E,YAGjB,YAAA54B,KAAN,W,kGACI,OAAI7Z,KAAKW,QACL,KAEJX,KAAKW,SAAU,EACY,MAAvBX,KAAKuC,eAAL,OACA,EAAAvC,KAAe,GAAMA,KAAKob,WAAW03B,uBAAuB9yC,KAAKuC,mB,cAAjE,EAAKwwC,QAAU,S,aAEA,OAAf,EAAA/yC,KAAe,GAAMA,KAAKob,WAAW43B,kB,OAArC,EAAKD,QAAU,S,wBAEnB/yC,KAAKW,SAAU,E,YAGb,YAAAsyC,WAAN,W,gGACI,GAAIjzC,KAAKW,QACL,U,iBAQA,O,uBAJMwjB,EAAU,IAAI,EAAA+uB,mBACZC,QAAUnzC,KAAKozC,cACvBjvB,EAAQkvB,QAAUrzC,KAAKszC,cACvBtzC,KAAKuzC,kBAAoBvzC,KAAKob,WAAWo4B,2BAA2BxzC,KAAKuC,eAAgB4hB,GACzF,GAAMnkB,KAAKuzC,mB,cAAX,SACAvzC,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,0BACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,wBACjED,KAAK6Z,O,4DAIb,YAAA45B,UAAA,WACQzzC,KAAK0zC,mBACL1zC,KAAKmb,qBAAqB+Z,WAAWl1B,KAAKN,YAAYO,EAAE,8BACpDD,KAAKN,YAAYO,EAAE,aAAc,KAAM,KAAM,WAGrDD,KAAK2yC,eAAgB,GAGzB,YAAAgB,eAAA,SAAe95B,GACX7Z,KAAK2yC,eAAgB,EACjB94B,GACA7Z,KAAK6Z,QAIb,YAAA+5B,cAAA,WACQ5zC,KAAK0zC,mBACL1zC,KAAKmb,qBAAqB+Z,WAAWl1B,KAAKN,YAAYO,EAAE,8BACpDD,KAAKN,YAAYO,EAAE,uBAAwB,KAAM,KAAM,WAG/DD,KAAK0yC,mBAAoB,GAG7B,YAAAmB,aAAA,SAAah6B,GACT7Z,KAAK0yC,mBAAoB,EACrB74B,GACA7Z,KAAK6Z,QAIb,sBAAI,8BAAe,C,IAAnB,WACI,OAAuB,MAAhB7Z,KAAK+yC,SAAmB/yC,KAAK+yC,QAAQe,SAAW,G,gCAG3D,sBAAI,8BAAe,C,IAAnB,WACI,OAAO9lC,KAAKmmB,IAAoB,MAAhBn0B,KAAK+yC,QAAkB/yC,KAAK+yC,QAAQe,QAAU,I,gCAGlE,sBAAI,4BAAa,C,IAAjB,WACI,OAAuB,MAAhB9zC,KAAK+yC,QAAkB/yC,KAAK+yC,QAAQgB,cAAgB,M,gCAG/D,sBAAI,iCAAkB,C,IAAtB,WACI,OAA6B,MAAtB/zC,KAAK+zC,gBACP/zC,KAAK+zC,cAAc5xC,OAAS,EAAAqZ,kBAAkBw4B,YAC3Ch0C,KAAK+zC,cAAc5xC,OAAS,EAAAqZ,kBAAkBy4B,c,gCAG1D,sBAAI,uBAAQ,C,IAAZ,WACI,OAAuB,MAAhBj0C,KAAK+yC,QAAkB/yC,KAAK+yC,QAAQmB,SAAW,M,gCAG1D,sBAAI,2BAAY,C,IAAhB,WACI,OAAuB,MAAhBl0C,KAAK+yC,QAAkB/yC,KAAK+yC,QAAQoB,aAAe,M,iEA5GrDC,GAAoB,6L,iCAApBA,EAAoB,6lECtBjC,4BACI,8CACI,Y,mBACJ,iBACA,sDAIJ,kCACA,wDAIA,4DAkHA,mB,MA7HQ,wFAEoE,kDAK9D,8DAIA,gD,iVDKd,GAIa,EAAAA,wB,68CEtBb,WAiBA,GAPA,KACA,MAEA,KACA,KACA,KAEA,QAEA,SAEA,S,wJChBQ,6BACI,0DACI,gEACuC,kGADvC,iBAEA,gEACI,2DAAsD,sBAAM,iBACpE,+CACA,4DACI,kEACuC,kGADvC,iBAEA,kEACI,6DAAuD,wBAAO,iBACtE,+CACJ,2C,gCAVY,gEAAkC,oBAMlC,iEAAkC,qBDStD,iBA2BI,WAAoB7e,EAAkCna,EAC1CiZ,EAAiCzM,EACjCzM,GAFQ,KAAAoa,cAAkC,KAAAna,aAC1C,KAAAiZ,YAAiC,KAAAzM,iBACjC,KAAAzM,uBAvBH,KAAAG,aAAc,EACd,KAAAC,OAAS,EAAAC,kBAAkB8B,OAE1B,KAAA+2B,QAAU,IAAI,EAAAtxB,aACd,KAAAwf,WAAa,IAAI,EAAAxf,aAI3B,KAAA5G,kBAAoB,EAAAX,kBACpB,KAAA84B,mBAAqB,EAAAt3B,aAAauB,OAAOg2B,uBACzC,KAAAC,mBAAqB,EAAAx3B,aAAauB,OAAOk2B,qBAEzC,KAAAC,WAAY,EAYJv5B,EAAqB4B,UACrB/c,KAAKs0C,mBAAqB,EAAAt3B,aAAauB,OAAOo2B,oBAC9C30C,KAAKw0C,mBAAqB,EAAAx3B,aAAauB,OAAOq2B,mB,OAIhD,YAAA1zC,SAAN,W,2GAC+B,MAAvBlB,KAAKuC,eAAL,OACyB,MAArBvC,KAAK60C,eACL70C,KAAK60C,aAAe,SAExB70C,KAAK80C,oBAAsB,mBAAqB90C,KAAKuC,eACzC,GAAMvC,KAAKu1B,YAAYwf,gBAAgB/0C,KAAKuC,kB,cAC7C,OADLijC,EAAM,YAERxlC,KAAKg1C,QAAUxP,EAAI99B,KACnB1H,KAAK0H,KAAO89B,EAAI99B,M,aAMN,OAHW,MAArB1H,KAAK60C,eACL70C,KAAK60C,aAAe,SAExB,EAAA70C,KAAc,GAAMA,KAAKu1B,YAAYyL,a,OACtB,OADf,EAAKra,OAAS,SACd,EAAA3mB,KAAe,GAAMA,KAAKu1B,YAAY0L,Y,OAAtC,EAAK+T,QAAU,SACfh1C,KAAKghB,MAAQhhB,KAAKg1C,QAClBh1C,KAAK80C,oBAAsB,WAAa90C,KAAK2mB,O,wBAEjD3mB,KAAK80C,qBAAuB,oBAC5B90C,KAAKi1C,UAAYxqC,OAAOyqC,SAASzkC,K,YAG/B,YAAAqX,OAAN,W,kGACI,GAAyB,MAArB9nB,KAAK60C,cAA8C,KAAtB70C,KAAK60C,aAClC,UAGJ,GAAI70C,KAAKub,SAAW,EAAAC,kBAAkB8B,OAGlC,OAFAtd,KAAKm1C,gBAAgBz0C,cAAconB,SACnC9nB,KAAK00C,WAAY,EACjB,I,GAEA10C,KAAKub,SAAW,EAAAC,kBAAkB45B,OAAlC,Y,iBAW8B,O,uBATpBC,EAAM,IAAI,EAAAC,sBACZt0B,MAAQhhB,KAAKghB,MACjBq0B,EAAI3tC,KAAO1H,KAAK0H,KAChB2tC,EAAIE,QAAS,EACbF,EAAIG,OAASx1C,KAAKy1C,mBAClBJ,EAAI9yC,eAAiBvC,KAAKuC,eAC1B8yC,EAAI1uB,OAAS3mB,KAAK2mB,OAClB0uB,EAAIJ,UAAYj1C,KAAKi1C,UACrBj1C,KAAKmoB,YAAcnoB,KAAKob,WAAWs6B,kBAAkBL,GAC3B,GAAMr1C,KAAKmoB,a,cAA/BwtB,EAAoB,SAC1B31C,KAAKmb,qBAAqBuM,UAAUiuB,G,0CAExC,U,OAEJ,IACI31C,KAAKq0B,UAAUS,WAAWC,KAAK,CAC3BC,OAAQ,iBAEZh1B,KAAKq0C,QAAQ39B,OACf,U,kBAGN,YAAAwuB,OAAA,WACIllC,KAAKuiC,WAAW7rB,QAGpB,YAAAk/B,aAAA,WACI,IACI,GAAyB,MAArB51C,KAAK60C,cAA8C,KAAtB70C,KAAK60C,aAAqB,CACvD,IAAMgB,EAAc7nC,KAAKmmB,IAAI2hB,WAAW91C,KAAK60C,eAC7C,GAAIgB,EAAc,EAGd,YAFA71C,KAAK60C,aAAeiB,YAAY9nC,KAAK8rB,MAAoB,IAAd+b,GAAqB,KAAKppC,YAChEspC,QAAQ,GAAGtpC,aAI1B,UACFzM,KAAK60C,aAAe,IAGxB,sBAAI,iCAAkB,C,IAAtB,WACI,GAAyB,MAArB70C,KAAK60C,cAA8C,KAAtB70C,KAAK60C,aAClC,IACI,OAAOiB,WAAW91C,KAAK60C,cACzB,UAEN,OAAO,M,iEAlHFmB,GAAkB,6L,iCAAlBA,EAAkB,uD,OAAA,K,yBAQQ,EAAAC,Y,+0ECnCvC,+BAAyB,2CAAY,EAAAnuB,YACjC,iDACI,wDAAuE,wCAAS,EAAAod,Y,mBAAU,6BAC/D,gBAAO,iBAAO,iBACzC,qDAA6B,a,oBAAsB,iBACnD,0DAcA,uDACI,2DACI,+DACI,sEAA0B,a,oBAAmB,iBAC7C,oEACI,wEAAiC,+BAA+B,oBAAI,iBAAO,iBAC3E,0EACI,qEAA0B,0BAAS,EAAA0Q,kBADvC,iBAEJ,uDACJ,mDACJ,+CACA,8DAAoC,a,oBAA0B,iBAClE,2CACA,2DACI,qD,oBACA,0DAAM,a,oBAAmB,iBAC7B,2CACA,2DAAwD,wCAAS,EAAA1Q,YAC7D,a,oBACJ,iBACJ,uCACJ,mCACA,oDACI,iDACA,iDACA,iDACA,iDACA,iDACA,iDACA,iDACA,iDACA,iDACA,iDACA,iDACA,iDACA,iDACA,iDACA,iDACJ,mCACA,mB,4BA1D+C,2CAEH,oFAEP,qEACH,kDAiBY,kEAIlB,sDAIoB,yEAEiB,+DACpB,+EAC3B,kEAGN,iGAIQ,sFAEqB,qEAKF,6DACO,4DAIP,+DACA,sEAEK,4D,0QDjC5C,GAIa,EAAA8Q,sB,68CE3Bb,WAcA,GANA,KACA,MAEA,KACA,KAEA,QAEA,SAEA,SACA,S,sFAEA,aAgBI,WAAoB56B,EAAgC1b,EACxC20B,EAAiCzM,GADzB,KAAAxM,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBAPnC,KAAAsuB,WAAa,IAAI,EAAAnzB,aACjB,KAAAwf,WAAa,IAAI,EAAAxf,aAE3B,KAAA5G,kBAAoB,EAAAX,kB,OAMd,YAAAsM,OAAN,W,uGAoBQ,O,sBAlBM,EAAU,IAAI,EAAAquB,eACpBn2C,KAAKmoB,YAAcnoB,KAAKilC,iBAAiBjmB,qBAAqBve,MAAK,SAAAuD,GAK/D,OAJA,EAAQ+iC,aAAe/iC,EAAO,GAC9B,EAAQmY,kBAAoBnY,EAAO,GACnC,EAAQsf,WAAa,EAAK8yB,iBAAiBpzB,QAAQM,WACnD,EAAQpH,QAAU,EAAKk6B,iBAAiBpzB,QAAQ9G,QACrB,MAAvB,EAAK3Z,eACE,EAAK6Y,WAAWi7B,mBAAmB,IAE1C,EAAQpzB,MAAQ,EAAKmzB,iBAAiBpzB,QAAQC,MAC9C,EAAQI,MAAQ,EAAK+yB,iBAAiBpzB,QAAQK,MAC9C,EAAQH,MAAQ,EAAKkzB,iBAAiBpzB,QAAQE,MAC9C,EAAQC,MAAQ,EAAKizB,iBAAiBpzB,QAAQG,MAC9C,EAAQC,KAAO,EAAKgzB,iBAAiBpzB,QAAQI,KAC7C,EAAQC,MAAQ,EAAK+yB,iBAAiBpzB,QAAQK,MACvC,EAAKjI,WAAWk7B,wBAAwB,EAAK/zC,eAAgB,OAG5E,GAAMvC,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAC3BC,OAA4B,MAApBh1B,KAAKu2C,YAAsB,uBAAyB,2BAEhEv2C,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,yBACjED,KAAKk2C,WAAWx/B,O,4DAIxB,YAAAwuB,OAAA,WACIllC,KAAKuiC,WAAW7rB,QAGpB,YAAAgO,cAAA,WACkD,OAA1C1kB,KAAKo2C,iBAAiBpzB,QAAQ9G,QAC9Blc,KAAKilC,iBAAiBxpB,UAAYzb,KAAKuC,gBAEvCvC,KAAKilC,iBAAiBxpB,UAAW,EAC7Bzb,KAAKilC,iBAAiB1pB,SAAW,EAAAC,kBAAkB+B,cACnDvd,KAAKilC,iBAAiB1pB,OAAS,EAAAC,kBAAkBzB,KACjD/Z,KAAKilC,iBAAiBlnB,kB,iCAvDzBy4B,GAAsB,iJ,iCAAtBA,EAAsB,2D,OAAA,M,oBACpB,EAAAl2B,kBAAkB,G,oBAClB,EAAAqE,kBAAkB,I,gvBC3BjC,+BAAyB,2CAAY,EAAAmD,YACjC,iDACI,wDAAuE,wCAAS,EAAAod,Y,mBAAU,6BAC/D,gBAAO,iBAAO,iBACzC,qDAA6B,a,oBAA6E,iBAC1G,0DACA,gEAAc,mDAAoB,EAAAxgB,mBAAiB,iBACnD,0DACI,oD,oBACA,0DAAM,a,oBAAmB,iBAC7B,2CACA,2DAAwD,wCAAS,EAAAwgB,YAC7D,a,oBACJ,iBACJ,uCACJ,mCACA,mB,4BAhB+C,2CAEH,mFAEP,sHAChB,0DAA4B,iBAEgB,kDACpB,+EAC3B,kEAGN,mG,oKDSZ,GAIa,EAAAsR,0B,68CEzBb,W,GAOA,KACA,MAEA,KACA,K,2DAEA,aAWI,WAAoBp7B,EAAgC1b,EACxC20B,EAAiCzM,GADzB,KAAAxM,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBANnC,KAAA0M,UAAY,IAAI,EAAAvR,aAChB,KAAAwf,WAAa,IAAI,EAAAxf,a,OAOrB,YAAA+E,OAAN,W,6GAGI,GAFMie,EAASx1B,SAASy1B,eAAe,QAE1B,OADPH,EAAQE,EAAOF,QACiB,IAAjBA,EAAM1nC,OAGvB,OAFA6B,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,eACvB,I,iBAkBA,O,uBAdMsmC,EAAK,IAAIC,UACZC,OAAO,UAAWZ,EAAM,IAEvB4Q,EAA8B,KAE9BA,EADuB,MAAvBz2C,KAAKuC,eACWvC,KAAKob,WAAWs7B,mBAAmBnQ,GAEnCvmC,KAAKob,WAAWu7B,8BAA8B32C,KAAKuC,eAAgBgkC,GAGvFvmC,KAAKmoB,YAAcsuB,EAAch2C,MAAK,WAClC,OAAO,EAAK2a,WAAWysB,0BAG3B,GAAM7nC,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,oBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,mBACjED,KAAKs0B,UAAU5d,O,4DAIvB,YAAAwuB,OAAA,WACIllC,KAAKuiC,WAAW7rB,Q,iCA1CXkgC,GAAsB,iJ,iCAAtBA,EAAsB,ykB,GAAA,MCjBnC,+BAAY,2CAAY,EAAA9uB,YACpB,iDACI,uDAAkC,Y,mBAAwB,iBAC1D,kDACA,yDACiC,a,oBAA2H,iBAChK,uCACA,sDACI,gD,oBACA,sDAAM,a,oBAAmB,iBAC7B,uCACA,sDAAwD,wCAAS,EAAAod,YAC7D,a,oBACJ,iBACJ,mCACA,mB,4BAfkC,2CAEQ,qEAGD,kKAEoB,kDACpB,+EAC3B,kEAGN,2F,yGDCR,GAIa,EAAA0R,0B,8EEjBb,SAAYzU,GACR,mBACA,2BACA,qBACA,+BAJJ,CAAY,EAAAA,cAAA,EAAAA,YAAW,M,68CCAvB,WAmBA,GAXA,KAKA,KACA,MAEA,KACA,KAEA,QAIA,S,oHCXQ,6BACI,0DAAQ,Y,mBAAmB,iBAAU,Y,iEAGzC,kB,6BAHY,uEAA6B,qODYjD,iBAiBI,WAAoB/mB,EAAgC1b,EACxC20B,EAAiCzM,EACjC6D,EAAwBC,GAFhB,KAAAtQ,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAA6D,SAAwB,KAAAC,iBAd3B,KAAAmrB,eAAiB,EACjB,KAAAC,KAAM,EAEN,KAAAC,SAAW,OACV,KAAAb,WAAa,IAAI,EAAAnzB,aACjB,KAAAwf,WAAa,IAAI,EAAAxf,aAI3B,KAAAi0B,kBAAoB,E,OAOd,YAAAlvB,OAAN,W,2GA0BQ,O,uBAxBM,EAAU,IAAI,EAAAmvB,gBACZC,oBAAsBl3C,KAAKg3C,kBAC9Bh3C,KAAK82C,MACN,EAAQI,sBAAwB,GAGhC,GAAgB,EACdliB,EAAS,gD,wDAOI,SALY,MAAvBh1B,KAAKuC,eACMvC,KAAKmoB,YAAcnoB,KAAKob,WAAW+7B,mBAAmB,GAEtDn3C,KAAKmoB,YAAcnoB,KAAKob,WAAWg8B,wBAAwBp3C,KAAKuC,eAAgB,I,UAGjF,OADRyB,EAAS,WAC2C,MAApCA,EAAO4jC,0BAAzB,Y,iBAEI,O,sBAAA,GAAM5nC,KAAKilC,iBAAiBllB,wBAAwB/b,EAAO4jC,0BAA2B,O,cAAtF,S,6BAEA,GAAgB,E,+BAI5B5nC,KAAKmoB,YAAc6M,IACnB,GAAMh1B,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQh1B,KAAK82C,IAAM,gBAAkB,oBACtE92C,KAAKk2C,WAAWx/B,KAAK1W,KAAKg3C,mBACtB,GACAh3C,KAAK4nB,eAAeI,SAAS,CACzBnK,KAAM7d,KAAKN,YAAYO,EAAE,gCACzBkC,KAAM,UACNsrC,QAAS,MAEbztC,KAAKyrB,OAAOsc,SAAS,CAAC,cAAe,CAAEsP,WAAYr3C,KAAK0rB,kBAExD1rB,KAAK4nB,eAAeI,SAAS,UAAW,KACpChoB,KAAKN,YAAYO,EAAE,kBAAmB,EAAQi3C,oBAAoBzqC,a,4DAKlF,YAAAy4B,OAAA,WACIllC,KAAKuiC,WAAW7rB,QAGpB,sBAAI,mCAAoB,C,IAAxB,WACI,OAAO1W,KAAK62C,eAAiB72C,KAAKg3C,mB,iEAjE7BM,GAAsB,qN,iCAAtBA,EAAsB,2D,OAAA,K,oBAQpB,EAAAh3B,kBAAkB,G,09BCrCjC,+BAAyB,2CAAY,EAAAwH,YACjC,iDACI,wDAAuE,wCAAS,EAAAod,Y,mBAAU,6BAC/D,gBAAO,iBAAO,iBACzC,qDAA6B,a,oBAAiD,iBAC9E,uDACI,2DACI,iEAA+B,a,oBAAqD,iBACpF,iEACI,0EADJ,iBAEJ,+CACJ,2CACA,2DAKA,2DACI,qD,oBACA,0DAAM,a,oBAAmB,iBAC7B,2CACA,2DAAwD,wCAAS,EAAAA,YAC7D,a,oBACJ,iBACA,0DACI,a,oBACJ,iBACJ,uCACJ,mCACA,mDACA,mB,4BA9B+C,2CAEH,oFAEP,4FAGU,gGAE3B,2DAGP,0CAKoD,kDACpB,+EAC3B,kEAGN,iGAGA,mIAIC,gD,oQDJb,GAIa,EAAAoS,0B,yxDE7Bb,KAEA,KACA,MAEA,KACA,KACA,KAPA,IASA,SACA,SAGA,S,8JCDY,8CAAuE,4FAEvE,8C,gCAFuB,gDAAiC,gB,yBAMhD,6BACI,8E,mBACI,Y,mBACJ,iBACA,iEACA,sEAAQ,a,oBAAwC,iBAAU,aAC1D,qBACA,wEAAQ,a,oBAAmC,iBAAU,aACrD,qBACA,wEAAQ,a,oBAAqC,iBAAU,aAC3D,2B,8BATgC,6EACxB,qJAGI,8FAAkD,6EAElD,yFAA6C,6EAE7C,2FAA+C,0E,mDAE3D,6BACI,iEACA,iEAAG,Y,mBAA6B,iBAChC,sEACI,6EAAkB,a,oBAAuC,iBACzD,8EAAwE,iGAAxE,iBAEJ,2DACA,wEACI,8EAAkB,a,oBAAkC,iBACpD,8EAAuE,iGAAvE,iBAEJ,2DACA,wEACI,8EAAkB,a,oBAAoC,iBACtD,8EAA8D,iG,oBAA9D,iBAEJ,2DACJ,gE,iCAhBO,0EAEmB,sFACsD,8CAItD,iFACqD,8CAIrD,mFAEd,oHAD0D,gC,sBAQlE,2BAAuB,Y,mBAAmB,kB,MAAnB,iE,sBACvB,2BAAsB,Y,mBAAoB,kB,MAApB,kE,mDAtClC,iCAAY,4FAER,8DACI,+EAWA,+EAmBJ,kDACA,+DACI,uEACI,iE,oBACA,2EACA,2EACJ,uDACA,uEACyB,a,oBAAkB,iBAC/C,mDACJ,+C,mDA3CkC,2CAGZ,8CAWA,+CAqB2C,kDACpB,8EAC3B,+CACA,8CAGe,kEDzC7C,kBAWI,WAAYl8B,EAAwB1b,EAChC20B,EAAyBzM,EACzBzM,GAFJ,MAGI,YAAMC,EAAY1b,EAAa20B,EAAWzM,EAAgBzM,IAAqB,K,OATnF,EAAAhZ,KAAO,EAAAqY,sBAAsB6N,I,SADU,OAavC,YAAAqM,KAAA,SAAKC,GACD,YAAMD,KAAI,UAACC,GACX30B,KAAKu3C,gBAAgB5iB,EAAa/zB,WAGtC,YAAAknB,OAAA,WACI,OAAI9nB,KAAKw0B,QACE,YAAMS,QAAO,UAACj1B,KAAKmoB,aAEnBnoB,KAAK40B,UAIV,YAAAA,OAAV,sBACUzQ,EAAU,IAAI,EAAAqzB,0BAMpB,OALArzB,EAAQ+D,mBAAqBloB,KAAKkoB,mBAClC/D,EAAQszB,eAAiBz3C,KAAK03C,KAC9BvzB,EAAQwzB,UAAY33C,KAAK43C,KACzBzzB,EAAQ7V,KAAOtO,KAAKsO,KAEb,YAAMsmB,OAAM,WAAC,gD,wDAMC,OALU,MAAvB50B,KAAKuC,eACLvC,KAAKmoB,YAAcnoB,KAAKob,WAAWy8B,4BAA4B73C,KAAKuC,eAAgB4hB,GAEpFnkB,KAAKmoB,YAAcnoB,KAAKob,WAAW08B,gBAAgB3zB,GAEtC,GAAMnkB,KAAKmoB,a,OAC5B,OADMvnB,EAAW,SACjB,GAAMZ,KAAKu3C,gBAAgB32C,I,cAA3B,S,eAIA,YAAA22C,gBAAR,SAAwB32C,GACpBZ,KAAK03C,KAAO92C,EAAS62C,eACrBz3C,KAAK43C,KAAOh3C,EAAS+2C,UACrB33C,KAAKsO,KAAO1N,EAAS0N,KACrBtO,KAAKw0B,QAAU5zB,EAAS4zB,S,iCAhDnBujB,GAAqB,6L,iCAArBA,EAAqB,ygDCnBlC,4BACI,iDACI,qDACI,yDACI,4DACI,Y,oBACA,6BAAO,mBAAG,iBACd,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,+EAGA,gEA4CJ,2CACJ,uCACJ,mCACA,mB,MAzDoB,0HAGqD,mFAKzD,8CAE4E,+C,mRDA5F,CAI2C,EAAAziB,wBAA9B,EAAAyiB,yB,68CEnBb,WAcA,GALA,KACA,MACA,MACA,KAEA,QAEA,SACA,SAEA,QAEA,SACA,SACA,SACA,SACA,SACA,S,2NCvBA,wBAA2B,Y,mBAA6B,kB,MAA7B,2E,sBAC3B,wBAA0B,Y,mBAAyC,kB,MAAzC,uF,mDAC1B,qCACI,6CAAG,Y,mBAAwC,iBAC3C,qDACI,+FAAyB,Y,mBAA6B,iBAC9D,kC,MAHO,qFAE0B,2E,sBAI7B,4BACI,+C,mBACA,uDAAsB,Y,mBAAoB,iBAC9C,uC,MAFsD,6EAC5B,kE,sBAG9B,qCACI,Y,mBACJ,kB,MADI,uG,sBAUY,6BACI,2D,mBACA,mEAAsB,Y,mBAAoB,iBAC9C,4D,MAF8C,6EACpB,kE,mDAE1B,2BACI,mGACA,Y,mBACJ,iB,MADI,iH,mDAbhB,4BACI,sDACI,qDACJ,0CACA,sDACI,yDACI,aACA,wCAIA,gEAIJ,+CACA,aACJ,iBACA,wDACI,+DACI,iHACA,a,oBACJ,iBACJ,2CACJ,uC,8CAtBa,sFAID,sFACc,8CAIuC,mEAKzD,iFAG+D,uEAE3D,yG,0IDdhB,aAoBI,WAAsB38B,EAAkCma,EAC1C/f,EAA8DC,EAC9D+hB,GAFQ,KAAApc,aAAkC,KAAAma,cAC1C,KAAA/f,2BAA8D,KAAAC,mBAC9D,KAAA+hB,gBATd,KAAA2G,UAAmB,GAEnB,KAAA6Z,mBAAoB,EACpB,KAAAr3C,SAAU,EAEF,KAAA4V,MAAwB,K,OAM1B,YAAArV,SAAN,W,oGAC4B,OAAxB,EAAAlB,KAAwB,GAAMA,KAAKu1B,YAAYc,oB,OAE/C,IAAW13B,KAFX,EAAK03B,iBAAmB,SAEN,EAAAgG,mBACT,EAAAA,mBAAmBr9B,eAAeL,KAIjCsW,EAAK,EAAAonB,mBAA2B19B,GAClCqB,KAAKi4C,eAAehjC,EAAE9S,OAI1BnC,KAAKm+B,UAAUh5B,KAAK,CAChBhD,KAAM8S,EAAE9S,KACRuF,KAAMuN,EAAEvN,KACR40B,YAAarnB,EAAEqnB,YACf9H,SAAS,EACTiI,QAASxnB,EAAEwnB,QACXD,KAAMvnB,EAAEunB,QAKhB,OADAx8B,KAAKm+B,UAAU3B,MAAK,SAACntB,EAAQC,GAAW,OAAAD,EAAEmtB,KAAOltB,EAAEktB,QACnD,GAAMx8B,KAAK6Z,Q,cAAX,S,YAGE,YAAAA,KAAN,W,qGAEyB,OADrB7Z,KAAKW,SAAU,EACM,GAAMX,KAAKk4C,yB,cAAX,SACR/0C,KAAKiB,SAAQ,SAAA6Q,GACtB,EAAKkpB,UAAU/5B,SAAQ,SAAAtE,GACfmV,EAAE9S,OAASrC,EAAGqC,OACdrC,EAAG00B,QAAUvf,EAAEuf,eAI3Bx0B,KAAKm4C,mBACLn4C,KAAKW,SAAU,E,YAGnB,YAAAy3C,OAAA,SAAOj2C,GAAP,WACI,OAAQA,GACJ,KAAK,EAAAqY,sBAAsBqO,cACN7oB,KAAKq4C,UAAUr4C,KAAKs4C,sBAAuB,EAAAC,iCACnDjkB,UAAU3Q,WAAU,SAAC6Q,GAC1B,EAAKgkB,aAAahkB,EAAS,EAAAha,sBAAsBqO,kBAErD,MACJ,KAAK,EAAArO,sBAAsBuO,QACN/oB,KAAKq4C,UAAUr4C,KAAKy4C,gBAAiB,EAAAC,2BAC7CpkB,UAAU3Q,WAAU,SAAC6Q,GAC1B,EAAKgkB,aAAahkB,EAAS,EAAAha,sBAAsBuO,YAErD,MACJ,KAAK,EAAAvO,sBAAsB6N,IACProB,KAAKq4C,UAAUr4C,KAAK24C,YAAa,EAAAZ,uBACzCzjB,UAAU3Q,WAAU,SAAC6Q,GACzB,EAAKgkB,aAAahkB,EAAS,EAAAha,sBAAsB6N,QAErD,MACJ,KAAK,EAAA7N,sBAAsBiO,MACLzoB,KAAKq4C,UAAUr4C,KAAK44C,cAAe,EAAAC,yBAC3CvkB,UAAU3Q,WAAU,SAAC6Q,GAC3B,EAAKgkB,aAAahkB,EAAS,EAAAha,sBAAsBiO,UAErD,MACJ,KAAK,EAAAjO,sBAAsBmO,IACP3oB,KAAKq4C,UAAUr4C,KAAK84C,YAAa,EAAAC,uBACzCzkB,UAAU3Q,WAAU,SAAC6Q,GACzB,EAAKgkB,aAAahkB,EAAS,EAAAha,sBAAsBmO,UAQjE,YAAAqwB,aAAA,WACIh5C,KAAKq4C,UAAUr4C,KAAKi5C,iBAAkB,EAAAC,6BAGpC,YAAAlgB,gBAAN,W,mEACI,OAAKh5B,KAAKq2B,kBACNr2B,KAAKyV,iBAAiBkB,KAAK,mB,WAKzB,YAAAuhC,sBAAV,WACI,OAAOl4C,KAAKob,WAAW88B,yBAGjB,YAAAD,eAAV,SAAyB91C,GACrB,OAAOA,IAAS,EAAAqY,sBAAsB8N,iBAGhC,YAAA+vB,UAAV,SAAuBc,EAAuBh3C,GAA9C,WACsB,MAAdnC,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQ4iC,EAAIhjC,gBAAgBJ,GAASK,SAC1C,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAAQxT,EAAMg3C,GAKhD,OAHAn5C,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,QAEVqf,GAGD,YAAA4iB,aAAV,SAAuBhkB,EAAkBryB,GAChCqyB,GAAyB,MAAdx0B,KAAKuW,OACjBvW,KAAKuW,MAAMU,QAEfjX,KAAKm+B,UAAU/5B,SAAQ,SAAA6Q,GACfA,EAAE9S,OAASA,IACX8S,EAAEuf,QAAUA,MAGpBx0B,KAAKm4C,oBAGK,YAAAA,iBAAd,W,uGAC+B,MAAvBn4C,KAAKuC,gBAA2E,IAAjDvC,KAAKm+B,UAAUh2B,QAAO,SAAA8M,GAAK,OAAAA,EAAEuf,WAASr2B,OAArE,MACiB,GAAM6B,KAAKw3B,cAAc2N,OAAO,EAAAviB,WAAWw2B,0B,cAAtD/T,EAAW,SACjBrlC,KAAKg4C,kBAAgC,MAAZ3S,GAAoBA,EAAS7d,MAAK,SAAAvS,GAAK,OAAAA,EAAEuf,W,aAElEx0B,KAAKg4C,mBAAoB,E,oEArJxBqB,GAAuB,oM,iCAAvBA,EAAuB,6D,OAAA,M,yBACO,EAAA7iB,kB,yBACK,EAAAA,kB,yBACN,EAAAA,kB,yBACJ,EAAAA,kB,yBACA,EAAAA,kB,yBACE,EAAAA,mB,u3CCtCxC,4BACI,8CAAI,Y,mBAAyB,iBACjC,kCACA,6CACA,6CACA,0DAKA,8CACI,a,oBACA,iCAIJ,mCACA,yDAGA,8CACI,qDAyBJ,mCAEA,yFACA,uFACA,uFACA,uFACA,wFACA,wFACA,mB,MArDQ,sEAEL,sDACA,qDACyB,sDAKxB,iFACA,wFACO,8CAKiB,wDAIpB,qD,uHDOR,GAIa,EAAA6iB,2B,8ZEhCb,KAEA,MACA,MACA,OACA,KACA,KANA,IAQA,S,8EAEA,cAOI,WAAYlgC,EAA8BzZ,EACtCyb,EAA4Cm+B,EAC5C/hB,G,OACA,YAAMpe,EAAezZ,EAAayb,EAAsBm+B,EAAe/hB,EAAc9sB,SAAO,K,OAN/D,OASvB,YAAA8uC,MAAV,WACI,YAAMA,MAAK,WACXv5C,KAAK+nB,eAAiB,KACtB/nB,KAAKmb,qBAAqBud,UAAU,UAAW,KAAM14B,KAAKN,YAAYO,EAAE,mB,iCAZnEu5C,GAAe,+L,iCAAfA,EAAe,grB,GAAA,MCd5B,+BAAY,2CAAY,EAAA1xB,YACpB,iDACI,kDAAI,Y,mBAAwB,iBAChC,sCACA,8CAAG,a,oBAAiC,iBACpC,mDACI,uDACI,6DAAoB,a,oBAAuB,iBAC3C,8DAAuD,+DACnD,kEAAqB,qBAAK,iBAC1B,kEAAoB,oBAAI,iBACxB,kEAA+B,iCAAiB,iBACpD,+CACJ,2CACJ,uCACA,mDACI,uDACI,8DAA4B,a,oBAAuB,iBACnD,8DACI,uEADJ,iBAEJ,2CACJ,uCACA,uDACI,iD,oBACA,sDAAM,a,oBAAwB,iBAClC,uCACJ,mCACA,mB,4BA3BmD,2CAEvC,sEAEL,gFAGyB,sEACmC,gDAS3B,uEAExB,wDAG6C,kDACpB,+EAC3B,yE,yRDdd,CAIqC,mBAAxB,EAAA0xB,mB,yxDEdb,KAMA,MACA,MACA,MACA,KATA,IAaA,QAEA,S,4GCNI,oC,mBACI,Y,mBACJ,kB,MAF4B,+DACxB,oG,mDAagB,6BACI,wEAAyB,mI,mBAAwD,YAAU,iBAC/F,mE,0CADuD,8EAA8B,4C,yBAGjF,wEAAM,YAAU,iBACpB,0C,uCADU,4C,sBAEV,6BACI,mE,mBACA,2EAAsB,Y,mBAAmB,iBAC7C,oE,MAF2C,4EACjB,iE,sBAE1B,6BACI,mE,mBAEA,2EAAsB,Y,mBAAwB,iBAClD,oE,MAH2C,iFAEjB,sE,yBAlBlC,yBACI,iEACI,4EACJ,sDACA,iEACI,iFAGA,gHAGA,kFAIA,kFAKA,+DACA,uEAAO,aAAc,iBACzB,uDACA,mEACI,yEACI,a,0CACJ,iBACJ,uDACJ,oD,gEA1BwB,wCAGF,0EAA6D,cAM7D,sEAIA,qDAMP,+CAIH,4L,yBA/BxB,6BACI,6D,mBACI,Y,wCACJ,iBACA,wDACI,0DACI,mEA6BJ,+CACJ,2CACJ,iD,8BApC+B,2FACvB,sJAIQ,kD,yBAVpB,4BACI,2DAGA,8DAsCJ,mC,6BAzC8D,sDAG5C,sD,iBDKlB,kBAOI,WAAsBviB,EAAwCE,EAC1D3hB,EAAoDC,EACpD8f,GAFJ,MAGI,YAAM/f,EAA0B+f,EAAa9f,GAAkB,IAAK,K,OAHlD,EAAAwhB,gBAAwC,EAAAE,eAF9D,EAAAsiB,mBAAqB,IAAIzqC,I,SADwB,OASjD,YAAA9N,SAAA,WACIlB,KAAKm2B,eAGH,YAAAtc,KAAN,W,0FACQ,SAAM7Z,KAAKm2B,e,cAAX,UACA,YAAMtc,KAAI,W,YAIZ,YAAA6b,WAAN,W,2GACuB,SAAM11B,KAAK05C,iB,OAe9B,OAfMC,EAAa,SACbC,EAAuC,GACvC9kC,EAA4B,GAClC6kC,EAAWv1C,SAAQ,SAAA2J,GACf,GAAIA,EAAE5L,OAAS,EAAAyG,WAAWC,OAA6B,MAApBkF,EAAErF,MAAMoB,UAAyC,KAArBiE,EAAErF,MAAMoB,WAAmBiE,EAAEotB,UAA5F,CAGA,IAAMzR,EAAU,EAAKyN,aAAa0iB,eAAe9rC,EAAErF,MAAMoB,UAAUrJ,MAAK,SAAAq5C,GAChEA,EAAe,IACfF,EAAuBz0C,KAAK4I,GAC5B,EAAK0rC,mBAAmBvqC,IAAInB,EAAEnO,GAAIk6C,OAG1ChlC,EAAS3P,KAAKukB,OAElB,GAAMxU,QAAQK,IAAIT,I,cAAlB,SACA9U,KAAK2J,QAAUiwC,E,YAGT,YAAAF,cAAV,WACI,OAAO15C,KAAKi3B,cAAc8iB,mBAGpB,YAAAC,gBAAV,SAA0BjsC,GAEtB,OAAO,G,iCA7CFksC,GAA+B,sM,iCAA/BA,EAA+B,u3BCrB5C,4BACI,8CAAI,Y,mBAAmC,iBAC3C,kCACA,yCAAG,Y,mBAAuC,iBAC1C,kDAA8E,wCAAS,EAAApgC,UACnF,4C,oBACA,kDAAM,a,oBAAkC,iBAC5C,mCACA,iDA2CA,uFACA,mB,MAnDQ,gFAEL,oFACsD,kDACpB,+EAC3B,iFAEQ,kD,+JDSlB,CAIqD,EAAA0c,uBAAxC,EAAA0jB,mC,yxDErBb,KAEA,KACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,KACA,MACA,MACA,OACA,KAfA,IAiBA,SACA,SAEA,SACA,SAEA,S,mOlEZgB,qCACI,Y,mBACJ,kB,MADI,yI,yBAOQ,gCAA0D,YAAU,kB,uBAA9B,gCAAoB,4C,mDALtE,6BACI,kEACI,wEAAkB,Y,mBAA2B,iBAC7C,yEAA8B,wGAE1B,gFACJ,2DACJ,uDACJ,mD,iCAN0B,wEACY,qDAAyB,+BAE3C,sD,yBAcR,gCAAmD,YAAU,kB,uBAA3B,6BAAiB,4C,mDAJ3D,6BACI,wEAAoB,Y,mBAAmB,iBACvC,yEAAoC,4GAEhC,+EACJ,0DACJ,uD,iCALwB,gEACgB,yDAA6B,2CAErD,kD,mDAaJ,6BACI,qFAEI,mHAAqC,WAAY,e,mBACjD,+EACJ,sEACJ,kE,MAJQ,0F,mDAWJ,2BACiD,oG,mBAE7C,+EACJ,sE,KAHI,8E,mDAFR,6BACI,kFAKA,mFAC8C,iG,mBAE1C,+EAEA,gF,oBAEJ,uEACJ,mE,oDAXQ,0DAIA,0FACA,oDAC0C,gDAGD,8EAArC,mC,mDAqCZ,2BAA0D,mGAEtD,Y,mBACJ,iB,MADI,iJ,mDAEJ,2BACI,uGAEA,Y,mBACJ,iB,MADI,iJ,yBAVR,0BACI,yE,mBAEA,8EAIA,8EAKJ,+D,8BAXyC,0FAGjC,mGAKA,2K,uGAIR,6BACI,+EACI,mFAAuB,YAAW,iBAClC,kGACI,iFACI,0FAEA,0FACJ,2EACJ,uEACJ,mEACA,qG,oBAC8C,aAAqB,iBACnE,mFAEI,sGAAwB,uBAAwB,W,oBAChD,6EACJ,mEACJ,+D,iCAhB+B,8CAIX,yEAMZ,2FAA0C,wDAE1C,mG,yBA2CI,gCAA8D,YAC9D,kB,uBAD0C,gCAAoB,6F,mDAGlE,gCAA4D,gI,mBAExD,+EACJ,sE,KAFI,oE,mDAvChB,6BACI,0EACI,gFAA2B,Y,mBAAkC,iBAC7D,8EACI,qFACiC,yF,oBADjC,iBAIA,oFACI,2FACuC,6G,oBAEnC,qFACJ,2EACA,2FACwC,2GAAqB,MAAO,U,oBAChE,qFACJ,2EACJ,uEACJ,mEACJ,+DACA,4EACI,gFACI,sFACI,a,oBACJ,iBACA,kF,oBAEI,iFACJ,uEACJ,mEACA,gFACI,uFACmC,2FAAqB,+GAEpD,6FAEJ,uEACA,yFAIJ,mEACJ,+DACJ,2D,yDA1Ce,+DAAoB,0EAEK,8DACxB,yDAEA,2FAF6B,8BAAmB,2CAK5C,qFACA,sCAIA,sFAQD,qEACH,iKAG+B,wFAKU,mEACzC,2DAA+B,gCAAqB,2CAE5C,yDAI2B,sE,0BAxCvD,6BACI,0EA6CJ,gE,8BA7CqB,2DAA2E,mC,oDA8ChG,2BAAyB,0FAErB,+DAA2D,Y,mBAC/D,iB,MAD+D,+F,4IArJnE,6BACI,kEACI,sEACI,4EAA2B,Y,mBAAqB,iBAChD,2EACI,kFACI,kHADJ,iBAGA,kFAOJ,+DACJ,2DACA,wEACI,4EACI,kFAA2B,a,oBAAqB,iBAChD,oFAeJ,+DACA,4EACI,kFAEI,kHAFJ,iBAIA,gFACI,uFACiD,kG,oBAE7C,iFAEJ,uEACA,uFAEI,mHAAqC,WAAY,e,oBAEjD,iFACJ,uEACJ,mEACJ,+DACJ,2DACJ,uDACA,oEACI,wEACI,8EAAuB,a,oBAAiC,iBACxD,8EACwC,8GADxC,iBAGJ,2DACA,wEACI,8EAaA,gFAmBJ,2DACJ,uDACA,gFA+CA,qEAIJ,4D,iCApJuC,mEAGnB,+DAAmC,2CAEP,wDAWL,oEACC,qEAkBxB,gFACA,gDAAmC,mEAI/B,+FACA,gDAEI,+FAGJ,2FAEA,gDASW,iFACD,uFACkB,4CAA+B,mEAGjB,0EACjD,sEAaA,oEAqBC,2DAgDV,sE,0BAiBQ,gCAA+D,YAAU,kB,uBAA9B,gCAAoB,4C,0BAwB/D,gCAAkE,YAAU,kB,uBAA9B,gCAAoB,4C,oDApClF,6BACI,kEACI,sEACI,4EAAgC,Y,mBAA2B,iBAC3D,6EACmC,uHADnC,iBAGJ,2DACA,wEACI,8EAAuB,a,oBAAkB,iBACzC,+EACI,8GACA,sFACJ,+DACJ,2DACJ,uDACA,oEACI,wEACI,8EAAwB,a,oBAAmB,iBAC3C,4EACI,kFACI,+GADJ,iBAGA,gFACI,uFAEI,gHAAkC,SAAU,a,oBAC5C,iFACJ,uEACJ,mEACJ,+DACJ,2DACA,wEACI,8EAA0B,a,oBAA4B,iBACtD,+EACI,iHACA,sFACJ,+DACJ,2DACA,wEACI,8EAAyB,a,oBAA2B,iBACpD,8EACI,gH,oBADJ,iBAGJ,2DACJ,uDACA,oEACI,wEACI,8EAAsB,a,oBAAyB,iBAC/C,4EACI,kFAEI,6GAFJ,iBAIA,gFACI,uFACiD,kG,oBAC7C,iFAEJ,uEACA,uFAEI,8GAAgC,eAAgB,oB,oBAChD,iFACJ,uEACJ,mEACJ,+DACJ,2DACJ,wDACJ,6D,iCAlE4C,yEAEG,oEAAwC,2CAIpD,iEAEnB,2DAA+B,2CACvB,0DAMY,mEAGhB,4DAAgC,2CAI5B,yFAQc,4EAEtB,8DAAkC,2CAC1B,6DAIa,0EAEa,4FAAlC,8CAAiC,2CAMf,yEAGd,gFACA,2CAA8B,2CAI1B,+FAEI,+FAGJ,4F,0BAgBR,gCAAmE,YAAU,kB,uBAA9B,gCAAoB,4C,oDANnF,6BACI,kEACI,sEACI,6EAAqB,Y,mBAAkB,iBACvC,+EACI,kHACA,sFACJ,+DACJ,2DACJ,uDACA,oEACI,wEACI,+EAAyB,a,oBAAsB,iBAC/C,+EACI,sHADJ,iBAEJ,2DACA,wEACI,+EAA0B,a,oBAAuB,iBACjD,+EACI,uHADJ,iBAEJ,2DACA,wEACI,+EAAwB,a,oBAAqB,iBAC7C,+EACI,qHADJ,iBAEJ,2DACJ,uDACA,oEACI,wEACI,+EAAwB,a,oBAAqB,iBAC7C,+EACI,qHADJ,iBAGJ,2DACA,wEACI,+EAAuB,a,oBAAoB,iBAC3C,+EACI,oHADJ,iBAEJ,2DACJ,uDACA,oEACI,wEACI,+EAAmB,a,oBAAgB,iBACnC,+EACI,gHADJ,iBAGJ,2DACA,wEACI,+EAA8B,a,oBAA2B,iBACzD,+EACI,2HADJ,iBAGJ,2DACA,wEACI,+EAA6B,a,oBAA0B,iBACvD,+EACI,0HADJ,iBAGJ,2DACJ,uDACA,oEACI,yEACI,iFAAqB,c,qBAAkB,iBACvC,iFACI,kHADJ,iBAGJ,4DACA,0EACI,iFAAqB,c,qBAAkB,iBACvC,iFACI,kHADJ,iBAEJ,4DACJ,wDACA,sEACI,0EACI,iFAAwB,c,qBAAqB,iBAC7C,iFACI,qHADJ,iBAEJ,4DACA,0EACI,iFAAwB,c,qBAAqB,iBAC7C,iFACI,qHADJ,iBAEJ,4DACJ,wDACA,sEACI,0EACI,iFAAwB,c,qBAAqB,iBAC7C,iFACI,qHADJ,iBAEJ,4DACA,0EACI,iFAAoB,c,qBAAqB,iBACzC,iFACI,iHADJ,iBAEJ,4DACJ,wDACA,sEACI,0EACI,iFAAqB,c,qBAA0B,iBAC/C,iFACI,kHADJ,iBAEJ,4DACA,0EACI,iFAA0B,c,qBAA0B,iBACpD,iFACI,uHADJ,iBAEJ,4DACJ,wDACA,sEACI,0EACI,iFAAuB,c,qBAAoB,iBAC3C,iFACI,oHADJ,iBAEJ,4DACJ,wDACJ,6D,iCAjHiC,gEAEjB,+DAAmC,2CAC3B,8DAMa,sEAErB,mEAAuC,2CAGjB,sEAEtB,oEAAwC,2CAGpB,oEAEpB,kEAAsC,2CAKlB,oEAEpB,kEAAsC,2CAInB,mEAEnB,iEAAqC,2CAKtB,+DAEf,6DAAiC,2CAIP,0EAE1B,wEAA4C,2CAInB,yEAEzB,uEAA2C,2CAM1B,kEAEjB,+DAAmC,2CAIlB,kEAEjB,+DAAmC,2CAKf,qEAEpB,kEAAsC,2CAGlB,qEAEpB,kEAAsC,2CAKlB,qEAEpB,kEAAsC,2CAGtB,qEAEhB,8DAAkC,2CAKjB,0EAEjB,+DAAmC,2CAGb,0EAEtB,oEAAwC,2CAKrB,oEAEnB,iEAAqC,4C,oDA0BrC,6BACI,qFACI,2GADJ,iBAGA,kFACI,yFAEI,6HAAuB,QAAS,Y,mBAChC,mFACJ,2EACJ,uEACJ,mE,6EAVW,gEAAsD,oDACzD,gCAAqB,2CAIjB,uF,oDAMZ,6BACI,qFAC4B,2GAD5B,iBAIA,kFACI,yFACiD,uI,mBAE7C,wFAEA,+EACJ,2EACA,2FAEI,iIAAuB,QAAS,EAAF,0BAAgC,UAAY,Y,oBAE1E,qFACJ,2EACJ,uEACJ,mE,6EAnBW,gEAAqB,8DACxB,oDAAwB,gCAAqB,gFAKzC,8FACA,6DAEI,yFAIJ,wFAEA,8D,oDAMR,gCACI,2GADJ,iB,6EAAO,iDAAqB,oDACxB,gCAAqB,4C,oDAG7B,gCAA4D,kI,mBAExD,2EACJ,kE,KAFI,oE,uBAGJ,iC,mBAEI,4EACJ,mE,KAFI,wE,oDA1DhB,8BACI,sEACI,0EACI,gFAA4B,Y,mBAAiB,iBAC7C,8E,oBAEI,6EACJ,mEACJ,+DACA,+EAA8D,0FAA9D,iBAEJ,2DACA,wEACI,8EAA6B,a,oBAAkB,iBAC/C,4EACI,qFAYA,sFAqBA,iFACI,0FAGJ,mEACA,sFAIA,uFAIJ,+DACJ,2DACJ,uD,yDA5DmB,gEAAqB,+DAEO,wFAIhC,+DAAgC,mDAAuB,+BAAoB,2CAI3E,iEAAsB,iEAEA,8DAYA,gEAuBK,iEAIS,qEAII,sE,oDA3D3D,8BAAiB,uGACb,wEAgEJ,kD,iCAhE6B,uDAAuE,mC,oDAiEpG,4BAAyB,4FAErB,2DAA2D,Y,mBAC/D,iB,MAD+D,mG,0BAMnD,gCAAkE,YAAU,kB,uBAA9B,gCAAoB,4C,oDAJ9E,6BACI,mEACI,yEAA0C,Y,mBAAiB,iBAC3D,0EAAmE,yGAC/D,iFACJ,2DACJ,uDACJ,mD,iCALkD,8DACyB,sDACvD,8D,0BAYJ,gCAA+D,YAAU,kB,uBAA9B,gCAAoB,4C,oDAR/E,6BACI,iEAAiB,Y,mBAAsB,iBACvC,kEACI,uEACI,8EAA4B,a,oBAA4B,iBACxD,gFACI,kHAAmC,2FAEnC,sFACJ,+DACJ,2DACJ,uDACJ,4D,iCAXqB,mEAGmB,0EAExB,+DAAmC,2CAE3B,2D,uBAOpB,0BACI,Y,mBACJ,kB,MADI,qI,oDAGA,8BACI,6EAAgD,6FAAhD,iBAGA,6EAAuD,YAAU,iBACrE,0D,yDAHQ,iEAAsB,6DADsB,kCAAuB,2CAGvC,kEAAuB,4C,0BAL/D,6BACI,0EAMJ,gE,8BAN4B,sD,0BANhC,6BACI,iEAAiB,Y,mBAAwB,iBACzC,qEAGA,8EAQJ,4D,8BAZqB,qEACZ,0EAGS,yE,0BAeV,0BACI,yEAAgC,Y,mBAAiC,iBACjE,Y,mBACJ,kB,8BAFoC,qFAChC,qK,oDAEJ,0BACI,yEAAgC,Y,mBAA6B,iBAC7D,yEAAyB,+F,mBACrB,YACJ,iBACJ,0D,iCAJoC,iFACiB,0EAC7C,4I,0BAIJ,0BACI,Y,mBACA,+BAAmD,YAAe,iBACtE,+D,uBAFI,2JACmD,gD,0BAH3D,8BACI,8EAIJ,2D,8BAJS,iE,0BAjBjB,6BACI,mEACI,mEACI,yEAAgC,Y,mBAAyB,iBACzD,Y,oBACJ,iBACA,2EAIA,4EAMA,4EAMJ,uDACJ,6D,8BApB4C,6EAChC,sJAEC,uDAIA,yDAMa,8D,oDAhf9B,6BACI,wEAGA,iEASA,8DACI,kEACI,yEAAkB,a,oBAAiB,iBACnC,0EAA8D,uGAA9D,iBAEJ,uDACA,uEAOJ,mDACA,kCACA,8EAwJA,kCACA,+EAsEA,kCACA,+EAqHA,gEACI,sEAAmB,a,oBAAkB,iBACrC,yEAA2C,wGACwB,iBACvE,mDACA,+DAAiB,a,oBAAyB,iBAC1C,mEAkEA,iEAIA,oEAQA,6EAaA,6EAcA,8EAwBJ,+C,gCAvf6B,mFAGR,6DAWS,gEAC4C,qDAAyB,2CAG7D,oDASpB,uEAyJA,sEAuEA,0EAsHS,iEACwB,sDAA0B,2CAGxD,wEACoC,uDAmEjD,qEAGa,qEAQH,iEAaA,wFAcA,gD,0BA0Bd,iCACI,4D,mBACA,gEAAM,Y,mBAAmD,iBAC7D,mD,gDAHyD,mCACpB,6EAC3B,4G,4GAMN,gCAAiE,kG,mBAE7D,+DAEJ,sD,iCAHyB,qGACD,qG,oDAGxB,qCAAiC,0F,mBAG7B,gEACA,gE,mBAEJ,sD,oDALI,2GAC+B,mCAA8B,gCACxB,gDAEjC,6EADyC,mC,0BAVrD,8BACI,yEAKA,0EAOJ,mD,6BAZY,yEAOJ,8DkE1fxB,mBAQI,WAAYhjB,EAA8BC,EACtCx3B,EAA0Byb,EAC1Bgc,EAA4B1d,EAC5B8b,EAA0B6B,EAC1BC,EAA0BC,EAClBlc,EAAwB3F,EAChC8hB,EAA4BC,GANhC,MAOI,YAAMP,EAAeC,EAAex3B,EAAayb,EAAsBgc,EAAc1d,EACjF8b,EAAa6B,EAAmBC,EAAaC,EAA2B7hB,EACxE8hB,EAAcC,IAAc,K,OAJxB,EAAApc,aAPZ,EAAA8+B,eAAyB,K,SAFS,OAgBxB,YAAA1gB,yBAAV,WACI,OAA6B,MAAzBx5B,KAAK05B,mBAA6B15B,KAAK05B,iBAAiBv7B,OAAS,IAAM6B,KAAK25B,iBACnD,MAArB35B,KAAK81B,aACE91B,KAAKy5B,WAAaz5B,KAAK81B,aAAaqkB,yBAEnCn6C,KAAK24B,UAAY34B,KAAKy5B,YAMhC,YAAA2gB,gBAAV,WACI,OAAKp6C,KAAK81B,aAAaqkB,wBAGhBjlC,QAAQC,QAAQnV,KAAKoH,aAFjB,YAAMgzC,gBAAe,YAKpB,YAAAC,WAAhB,W,yGACSr6C,KAAK81B,aAAaqkB,wBAAnB,MACO,GAAM,YAAME,WAAU,Y,OAA7B,MAAO,CAAP,EAAO,U,OAEM,SAAMr6C,KAAKob,WAAWk/B,eAAet6C,KAAKozB,W,OAG3D,OAHMxyB,EAAW,SACXuC,EAAO,IAAI,EAAAikB,WAAWxmB,GAC5BZ,KAAKk6C,eAAiB,IAAI,EAAA1vB,OAAOrnB,GAC1B,CAAP,EAAO,IAAI,EAAAqnB,OAAOrnB,YAGZ,YAAAo3C,cAAV,WACI,OAAKv6C,KAAK81B,aAAaqkB,wBAGhBn6C,KAAKi3B,cAAcoP,QAAQrmC,KAAKuG,OAAQ,KAAMvG,KAAKk6C,gBAF/C,YAAMK,cAAa,YAKlB,YAAAC,WAAhB,SAA2Bj0C,G,yEACvB,OAAKvG,KAAK81B,aAAaqkB,yBAAoD,MAAzB5zC,EAAOhE,eAGrDvC,KAAK24B,WAAa34B,KAAKy5B,WACjBtV,EAAU,IAAI,EAAAqH,cAAcjlB,GAC3B,CAAP,EAAOvG,KAAKob,WAAWq/B,eAAez6C,KAAKozB,SAAUjP,MAE/CA,EAAU,IAAI,EAAAu2B,oBAAoBn0C,GACjC,CAAP,EAAOvG,KAAKob,WAAWu/B,gBAAgBx2B,KAPhC,CAAP,EAAO,YAAMq2B,WAAU,UAACj0C,WAWhB,YAAA60B,aAAhB,W,mEACI,OAAKp7B,KAAK81B,aAAaqkB,wBAGhB,CAAP,EAAOn6C,KAAKuG,OAAO40B,UAAYn7B,KAAKob,WAAWw/B,kBAAkB56C,KAAKozB,UAChEpzB,KAAKob,WAAWy/B,qBAAqB76C,KAAKozB,WAHrC,CAAP,EAAO,YAAMgI,aAAY,mB,iCAlExBrF,GAAgB,shB,iCAAhBA,EAAgB,i7UlE7B7B,4BACI,iDACI,wDAAkC,2CAAY,EAAAjO,YAE1C,yDACI,4DAAgD,aAAS,iBACzD,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,gEAyfA,2DACI,sEAIA,mEACI,a,oBACJ,iBACA,mEAcJ,+CACJ,2CACJ,uCACJ,mCACA,mB,MA3hBgE,0DAGA,4CACS,mFAIrC,6CA0f+D,gDAK/E,mIAEiB,4D,4ekElfrC,CAIsC,oBAAzB,EAAAiO,qB,8EC3Bb,MAQI,SAAYn1B,GACQ,MAAZA,IAGJZ,KAAKJ,GAAKgB,EAAShB,GACnBI,KAAKuF,IAAM3E,EAAS2E,IACpBvF,KAAKqrB,SAAWzqB,EAASyqB,SACzBrrB,KAAKrB,IAAMiC,EAASjC,IACpBqB,KAAK2e,KAAO/d,EAAS+d,KACrB3e,KAAKksC,SAAWtrC,EAASsrC,WAjBpB,EAAAjlB,kB,8ECAb,MAQI,SAAY9jB,GACI,MAARA,IAIJnD,KAAKoX,eAAiBjU,EAAKiU,eAC3BpX,KAAK0X,MAAQvU,EAAKuU,MAClB1X,KAAK2X,OAASxU,EAAKwU,OACnB3X,KAAK8G,SAAW3D,EAAK2D,SACrB9G,KAAK+G,QAAU5D,EAAK4D,QACpB/G,KAAKqX,KAAOlU,EAAKkU,OAlBZ,EAAAyP,Y,8ECEb,MAKI,SAAYlmB,GACQ,MAAZA,IAGJZ,KAAKmC,KAAOvB,EAASuB,KACrBnC,KAAK0H,KAAO9G,EAAS8G,KACrB1H,KAAKtB,MAAQkC,EAASlC,QAXjB,EAAAsoB,a,8ECFb,MAoBI,SAAY7jB,GACI,MAARA,IAIJnD,KAAKiB,MAAQkC,EAAKlC,MAClBjB,KAAKqmB,UAAYljB,EAAKkjB,UACtBrmB,KAAK0lB,WAAaviB,EAAKuiB,WACvB1lB,KAAKsmB,SAAWnjB,EAAKmjB,SACrBtmB,KAAK2lB,SAAWxiB,EAAKwiB,SACrB3lB,KAAK4lB,SAAWziB,EAAKyiB,SACrB5lB,KAAK6lB,SAAW1iB,EAAK0iB,SACrB7lB,KAAKojB,KAAOjgB,EAAKigB,KACjBpjB,KAAKqjB,MAAQlgB,EAAKkgB,MAClBrjB,KAAKsjB,WAAangB,EAAKmgB,WACvBtjB,KAAKkc,QAAU/Y,EAAK+Y,QACpBlc,KAAK8lB,QAAU3iB,EAAK2iB,QACpB9lB,KAAKghB,MAAQ7d,EAAK6d,MAClBhhB,KAAK+lB,MAAQ5iB,EAAK4iB,MAClB/lB,KAAKgmB,IAAM7iB,EAAK6iB,IAChBhmB,KAAK6J,SAAW1G,EAAK0G,SACrB7J,KAAKimB,eAAiB9iB,EAAK8iB,eAC3BjmB,KAAKkmB,cAAgB/iB,EAAK+iB,gBA1CrB,EAAAa,gB,8ECAb,aAEA,EAOI,SAAY5jB,GACI,MAARA,IAIJnD,KAAK6J,SAAW1G,EAAK0G,SACrB7J,KAAK8J,SAAW3G,EAAK2G,SACrB9J,KAAKylB,qBAAuBtiB,EAAKsiB,qBACjCzlB,KAAKsnB,KAAOnkB,EAAKmkB,KAEbnkB,EAAK4G,OACL/J,KAAK+J,KAAO5G,EAAK4G,KAAKzC,KAAI,SAAApC,GAAK,WAAI,EAAAujC,aAAavjC,SAlB/C,EAAA0hB,a,8ECAb,MAII,SAAYzjB,GAFZ,KAAA8B,MAAsB,KAGN,MAAR9B,IAGJnD,KAAK6E,IAAM1B,EAAK0B,IAChB7E,KAAKiF,MAAQ9B,EAAK8B,QATb,EAAAwjC,gB,8ECAb,MAGI,SAAYtlC,GACI,MAARA,IAIJnD,KAAKmC,KAAOgB,EAAKhB,OARZ,EAAA0kB,kB,yxDCJb,aAEA,SAGA,QACA,SAIA,QAEA,cAQI,WAAYtE,EAAsBnO,QAAA,IAAAA,OAAA,GAAlC,MACI,cAAO,KACP,OAAW,MAAPmO,IAIJ,EAAK5D,KAAO4D,EAAI5D,KAChB,EAAKzK,iBAAiB,EAAMqO,EAAK,CAC7B3iB,GAAI,KACJ2F,IAAK,KACL2mC,SAAU,KACV7gB,SAAU,KACV1sB,IAAK,MACNyV,EAAkB,CAAC,KAAM,MAAO,c,EAyC3C,OA9DgC,OAwBtB,YAAAiB,QAAN,SAAcR,EAAe0U,G,wGACZ,SAAMvpB,KAAK2U,WAAW,IAAI,EAAAmmC,eAAe96C,MAAO,CACzDqrB,SAAU,MACXxW,EAAO0U,I,UAFJgf,EAAO,SAIG,MAAZvoC,KAAKrB,IAAL,YAGA,GAFIwa,OAAa,IACXF,EAAoB,EAAAxT,MAAM4F,OAAe6N,2BAI3C,MAAM,IAAIvX,MAAM,qDAFhBwX,EAAgBF,EAAiBG,mB,iBAMlB,O,sBAAA,GAAMD,EAAcE,UAAUxE,I,OAC5B,OADXkmC,EAAS,SACE,GAAM5hC,EAAc6hC,eAAeh7C,KAAKrB,IAAKo8C,UAAUxxB,I,cAAlE0xB,EAAW,SACjB1S,EAAK5pC,IAAM,IAAI,EAAA0pC,mBAAmB4S,G,0CAM1C,MAAO,CAAP,EAAO1S,WAGX,YAAAje,iBAAA,WACI,IAAMjb,EAAI,IAAI,EAAA4X,eASd,OARA5X,EAAEsP,KAAO3e,KAAK2e,KACd3e,KAAKwU,eAAexU,KAAMqP,EAAG,CACzBzP,GAAI,KACJ2F,IAAK,KACL2mC,SAAU,KACV7gB,SAAU,KACV1sB,IAAK,MACN,CAAC,KAAM,MAAO,aACV0Q,GAEf,EA9DA,CAAgC,WAAnB,EAAA+Z,c,8ECRb,MAII,SAAYlC,GAHZ,KAAApd,SAAmB,KACnB,KAAAqhB,aAAqB,KAGZjE,IAILlnB,KAAKmrB,aAAejE,EAAGiE,eATlB,EAAA+vB,uB,gqDCJb,KAIA,KAEA,KACA,MAEA,KACA,OACA,KAXA,IAaA,S,4GCJoB,gCAAiE,YAAU,kB,uBAA3B,6BAAiB,4C,yBAG7D,gCAAyD,YAAU,kB,uBAA3B,6BAAiB,4C,yBAF7D,6BACI,oEACA,0EACJ,gE,6BADY,wD,sBAOxB,6BACI,wFACA,2BACI,qFAAoD,iBAC5D,oD,sBACA,6BACI,wFACA,2BACI,yFAAwD,iBAChE,oD,sBACA,6BACI,gKAEJ,2B,sBACA,6BACI,kIACJ,2B,sBACA,6BACI,yMAGJ,2B,sBACA,6BACI,8JAEJ,2B,sBACA,6BACI,gOAGJ,2B,sBACA,6BACI,qKAEJ,2B,sBACA,6BACI,sKAEJ,2B,sBACA,6BACI,+NAEJ,2B,sBACA,6BACI,4LAEJ,2B,sBACA,6BACI,kOAEJ,2B,sBAEI,2BACI,+GACJ,kB,yBAHJ,6BACI,4DAGA,wFACA,2BACI,uFAAsD,iBAC9D,oD,8BANU,4D,sBAOV,6BACK,yFACD,2BACI,wFAAuD,iBAAI,0BACnE,2B,sBACA,6BACI,wFACA,2BACI,0FAAyD,iBAAI,0BACrE,2B,sBACA,6BACI,gQAEJ,2B,sBACA,6BACI,8UAGJ,2B,sBACA,6BACI,kNAEJ,2B,sBACA,6BACI,0KAEJ,2B,sBACA,6BACI,iMAEJ,2B,sBACA,6BACI,+JAEJ,2B,sBACA,6BACI,4NAEJ,2B,sBACA,6BACI,sOAEJ,2B,sBACA,6BACI,kSAGJ,2B,sBACA,6BACI,maAIJ,2B,sBACA,6BACI,gUAGJ,2B,sBACA,6BACI,sPAEJ,2B,sBACA,6BACI,kMAEJ,2B,sBACA,6BACI,sWAGA,2BAAM,8BAAe,iBAAO,0BAChC,2B,sBACA,6BACI,4NAEJ,2B,sBACA,6BACI,wMAEJ,2B,sBACA,6BACI,wHACA,2BAAgE,0CAA2B,iBAAK,8DACtE,2BAAM,2BAAY,iBAAO,oDACnD,2BAAM,6CAA8B,iBAAQ,uCAC5C,4BAAM,4EAA4D,iBAAO,yDACzE,4BAAM,iCAAiB,iBAAQ,kDACnC,2B,uBACA,6BACI,2SAGJ,2B,uBACA,6BACI,qLAEJ,2B,uBACA,6BACI,qUAGJ,2B,uBACA,6BACI,wOAEJ,2B,uBACA,6BACI,0OAEJ,2B,uBACA,6BACI,6NAEJ,2B,uBACA,6BACI,uPAEJ,2B,uBACA,6BACI,oOAEJ,2B,uBACA,6BACI,wOAEJ,2B,uBACA,6BACI,qRAGJ,2B,uBACA,6BACI,iHACJ,2B,uBACA,6BACI,gLAEJ,2B,uBACA,6BACI,qPAEJ,2B,uBACA,6BACI,6LAEJ,2B,uBACA,6BACI,8LAEJ,2B,uBACA,6BACI,gTAGJ,2B,uBACA,6BACI,8IACJ,2B,0BA1NJ,qCACI,gEAKA,gEAKA,gEAIA,gEAGA,iEAKA,kEAIA,kEAKA,kEAIA,kEAIA,kEAIA,kEAIA,kEAIA,kEAQA,kEAKA,kEAKA,kEAIA,kEAKA,kEAIA,kEAIA,kEAIA,kEAIA,kEAIA,kEAIA,kEAKA,kEAMA,kEAKA,kEAIA,kEAIA,kEAMA,kEAIA,kEAIA,mEAQA,mEAKA,mEAIA,mEAKA,mEAIA,mEAIA,mEAIA,mEAIA,mEAIA,mEAIA,mEAKA,mEAGA,mEAIA,mEAIA,mEAIA,mEAIA,mEAKA,mEAGJ,wC,6BA3NyB,+DACP,0FAKA,6DAKA,6DAIA,0DAGA,yDAKA,gEAIA,4DAKA,6DAIA,wDAIA,8DAIA,4DAIA,2DAIA,2GAQA,4DAKA,2HAKA,mEAIA,2DAKA,4DAIA,2DAIA,8DAIA,4DAIA,mEAIA,4DAIA,8DAKA,6DAMA,6DAKA,4DAIA,kEAIA,8DAMA,6DAIA,6DAIA,2DAQA,kEAKA,6DAIA,6DAKA,0DAIA,2DAIA,4DAIA,8DAIA,8DAIA,mEAIA,yDAKA,+DAGA,8DAIA,+DAIA,8DAIA,6DAIA,6DAKA,0DD3NtB,kBAeI,WAAsBx7C,EAAoC20B,EAC5CzM,EAA0CuzB,EAC1C1vB,EAA0BtQ,GAFlB,KAAAzb,cAAoC,KAAA20B,YAC5C,KAAAzM,iBAA0C,KAAAuzB,gBAC1C,KAAA1vB,SAA0B,KAAAtQ,uBAVxC,KAAAigC,OAAiB,KAGjB,KAAAz6C,SAAmB,EAET,KAAA4B,eAAyB,KACzB,KAAA84C,gBAAyB,CAAC,S,OAMpC,YAAAn6C,SAAA,sBACIlB,KAAKs7C,mBACLt7C,KAAKu7C,cAAc/e,MAAK,SAACntB,EAAGC,GACxB,OAAc,MAAVD,EAAE3H,MAA0B,MAAV4H,EAAE5H,MACZ,EAEE,MAAV2H,EAAE3H,MAA0B,MAAV4H,EAAE5H,KACb,EAEG,MAAV2H,EAAE3H,MAA0B,MAAV4H,EAAE5H,KACb,EAGJ,EAAKhI,YAAY6P,SAAW,EAAK7P,YAAY6P,SAASC,QAAQH,EAAE3H,KAAM4H,EAAE5H,MAC3E2H,EAAE3H,KAAK+H,cAAcH,EAAE5H,UAI7B,YAAAogB,OAAN,W,0GAII,GAHA9nB,KAAKW,SAAU,EAGE,QADX66C,EAAWx7C,KAAKm7C,cAAcM,YAAYz7C,KAAKo7C,OAAQp7C,KAAKuC,iBAK9D,OAHAvC,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,iBACvBD,KAAKW,SAAU,EACf,IAKJ,GAFMolC,EAASx1B,SAASy1B,eAAe,UAEzB,OADRH,EAAQE,EAAOF,QACkB,IAAjBA,EAAM1nC,QAAuC,MAArB6B,KAAK07C,cAA8C,KAAtB17C,KAAK07C,cAI5E,OAHA17C,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,eACvBD,KAAKW,SAAU,EACf,I,GAGA+6C,EAAe17C,KAAK07C,eACX,MAAT7V,GAAiBA,EAAM1nC,OAAS,GAAhC,Y,iBAEoB,O,sBAAA,GAAM6B,KAAK27C,gBAAgB9V,EAAM,K,cAClC,OADT+V,EAAU,YAEZF,EAAeE,G,0CAK3B,GAAoB,MAAhBF,GAAyC,KAAjBA,EAIxB,OAHA17C,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,eACvBD,KAAKW,SAAU,EACf,I,iBAKc,O,sBADdX,KAAKmoB,YAAcnoB,KAAKm7C,cAAcU,OAAOL,EAAUE,EAAc17C,KAAKuC,gBAC5D,GAAMvC,KAAKmoB,a,OACzB,OAAa,OADPpJ,EAAQ,WAEV/e,KAAK+e,MAAMA,GACX/e,KAAKW,SAAU,EACf,MAEJX,KAAKq0B,UAAUS,WAAWC,KAAK,CAC3BC,OAAQ,gBACR8mB,WAAY,CAAEp9B,MAAO1e,KAAKo7C,UAE9Bp7C,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,kBACjED,KAAKyrB,OAAOsc,SAAS/nC,KAAKq7C,iB,kDAG9Br7C,KAAKW,SAAU,E,YAGnB,YAAAo7C,0BAAA,sBACI,GAAmB,MAAf/7C,KAAKo7C,OACL,OAAO,KAGX,IAAMY,EAAUh8C,KAAKi8C,sBAAsB1O,OAAOvtC,KAAKu7C,eAAepzC,QAAO,SAAA+zC,GAAK,OAAAA,EAAEt8C,KAAO,EAAKw7C,UAChG,OAAIY,EAAQ79C,OAAS,EACV6B,KAAKN,YAAYO,EAAE,kBAAmB+7C,EAAQ,GAAGt0C,MAErD,MAGD,YAAA4zC,iBAAV,WACIt7C,KAAKi8C,sBAAwB,EAAH,CAAI,CAC1Br8C,GAAI,KACJ8H,KAAM,MAAQ1H,KAAKN,YAAYO,EAAE,UAAY,QAC3CD,KAAKm7C,cAAcc,uBACzBj8C,KAAKu7C,cAAgBv7C,KAAKm7C,cAAcgB,sBAG9B,YAAAp9B,MAAd,SAAoBA,G,0FAMhB,OALA/e,KAAKq0B,UAAUS,WAAWC,KAAK,CAC3BC,OAAQ,qBACR8mB,WAAY,CAAEp9B,MAAO1e,KAAKo7C,UAG9B,GAAM,UAAKgB,KAAK,CACZC,YAAY,EACZC,gBAAgB,EAChBj6C,KAAM,QACNk6C,SAAU,0DACVC,MAAO,WACPC,WAAY19B,EAAMxa,QAClBm4C,gBAAiB,CACb,SAAY,QAEhBz7C,MAAOjB,KAAKN,YAAYO,EAAE,eAC1B6hB,KAAM9hB,KAAKN,YAAYO,EAAE,mBACzB08C,mBAAmB,EACnBC,kBAAmB58C,KAAKN,YAAYO,EAAE,MACtC48C,OAAQ,SAAAC,GACJA,EAAQv5C,cAAc,mBAAmBw5C,SAAS,EAAG,O,cAf7D,S,YAoBI,YAAApB,gBAAR,SAAwBqB,GAAxB,WACI,OAAO,IAAI9nC,SAAQ,SAACC,EAAS8J,GACzB,IAAMg+B,EAAS,IAAIC,WACnBD,EAAOE,WAAWH,EAAM,SACxBC,EAAOpgC,OAAS,SAAAugC,GACZ,GAAoB,gBAAhB,EAAKhC,QAA0C,cAAd4B,EAAK76C,KAAsB,CAC5D,IAEMk7C,GAFS,IAAIh6C,WACAC,gBAAiB85C,EAAIztC,OAAe3L,OAAQ,aAC/CT,cAAc,OAC9B,OAAW,MAAP85C,OACAloC,EAAQkoC,EAAIh7B,kBAGhBpD,IAIJ9J,EAASioC,EAAIztC,OAAe3L,SAEhCi5C,EAAOK,QAAU,WACbr+B,S,iCA3JHs+B,GAAe,8N,iCAAfA,EAAe,0zCCnB5B,4BACI,8CAAI,Y,mBAAuB,iBAC/B,kCACA,gDAAY,2CAAY,EAAAz1B,YACpB,kDACI,uDACI,2DACI,iEAAkB,a,oBAA4B,iBAC9C,kEAAgC,+DAC5B,wEACA,8EAIJ,mDACJ,+CACJ,2CACJ,uCACA,kEA4NA,mDACI,uDACI,2DACI,kEAAkB,a,oBAAgC,iBAClD,6DACJ,+CACJ,2CACJ,uCACA,mDACI,0DAA0B,a,oBAAoC,iBAC9D,6DAAqE,qEAA2B,iBACpG,uCACA,uDACI,iD,oBACA,sDAAM,a,oBAAuB,iBACjC,uCACJ,mCACA,mB,MA9PQ,qEAM0B,mFACc,gDACpB,+DACM,4EAQmC,6CA+NnC,sFAMA,oFAC2C,sDAEhB,kDACpB,+EAC3B,wE,+QD7Od,GAIa,EAAAy1B,oB,0xDEnBb,KAMA,MACA,MACA,KARA,IAYA,QAEA,QAEA,S,oGCbQ,4BACI,kD,mBACA,0DAAsB,Y,mBAAoB,iBAC9C,2C,MAFgD,6EACtB,kE,sBAKlC,0BACI,0C,mBACA,kDAAsB,Y,mBAAoB,iBAC9C,mC,MAFgD,6EACtB,kE,sBAGtB,oC,mBACI,Y,mBACJ,kB,MAF4B,+DACxB,+F,sBAcgB,6BACI,mE,mBACA,0EAAsB,Y,mBAAmB,iBAC7C,oE,MAF2C,4EACjB,iE,sBAE1B,6BACI,mE,mBAEA,0EAAsB,Y,mBAAwB,iBAClD,oE,MAH2C,iFAEjB,sE,yBAM1B,2BAEI,Y,mBAAyB,kB,4DAFE,uEAE3B,4G,mDArBZ,yBACI,iEACI,4EACJ,sDACA,iEACI,oEAAyB,mH,oBAAwD,aAAU,iBAC3F,kFAIA,kFAKA,+DACA,uEAAO,aAAc,iBACzB,uDACA,mEACI,wEAGJ,uDACJ,mD,+CArBwB,wCAGmC,+EAA8B,2CACnE,sEAIA,qDAMP,+CAIH,4D,yBA1BxB,6BACI,6D,mBACI,Y,wCACJ,iBACA,wDACI,0DACI,kEAwBJ,+CACJ,2CACJ,iD,8BA/B+B,sFACvB,iJAIQ,kD,yBAVpB,4BACI,2DAGA,8DAiCJ,mC,6BApC8D,sDAG5C,sD,iBDAlB,kBAQI,WAAsBtmB,EAA8BzhB,EAChDC,EAAoC8f,GADxC,MAEI,YAAM/f,EAA0B+f,EAAa9f,GAAkB,IAAK,K,OAFlD,EAAAwhB,gBAHtB,EAAAumB,SAAW,IAAIxuC,IACf,EAAAyuC,WAAa,IAAIzuC,I,SAFiC,OAS5C,YAAA9N,SAAN,W,0FACQ,SAAMlB,KAAKm2B,e,cAAX,SACA,GAAM,YAAMtc,KAAI,YADhB,M,OACA,S,mCAIF,YAAA6b,WAAN,W,6GAEQ,O,sBAAA,GAAM11B,KAAK09C,W,cAAX,S,iDAEA19C,KAAKw9C,SAAS7+B,KAAO,EACF,GAAM3e,KAAK05C,iBAD9B,M,OAwBA,OAvBMC,EAAa,SACb,EAAmC,GACnC7kC,EAA4B,GAC5B,EAAO,IAAI9F,IACjB2qC,EAAWv1C,SAAQ,SAAA2J,GACf,GAAIA,EAAE5L,OAAS,EAAAyG,WAAWC,QAA0B,MAAhBkF,EAAErF,MAAM4e,MAAiC,KAAjBvZ,EAAErF,MAAM4e,OAAiBvZ,EAAErF,MAAM6e,UACzFxZ,EAAEotB,UAGN,IAAK,IAAIl9B,EAAI,EAAGA,EAAI8P,EAAErF,MAAMqB,KAAK5L,OAAQF,IAAK,CAC1C,IAAMiH,EAAI6I,EAAErF,MAAMqB,KAAK9L,GACvB,GAAa,MAATiH,EAAEL,KAAyB,KAAVK,EAAEL,IAAY,CAC/B,IAAMW,EAAW,EAAAC,MAAMC,YAAYR,EAAEL,KACrC,GAAgB,MAAZW,GAAoB,EAAKg4C,SAASnf,IAAI74B,GAAW,CACd,MAA/B,EAAKg4C,SAASh/C,IAAIgH,IAClB,EAAK0J,IAAInB,EAAEnO,GAAI,EAAK49C,SAASh/C,IAAIgH,IAErC,EAAmBL,KAAK4I,GACxB,YAKhB,GAAMmH,QAAQK,IAAIT,I,OAAlB,SACA9U,KAAK2J,QAAU,EACf3J,KAAKy9C,WAAa,E,mCAIhB,YAAA/D,cAAV,WACI,OAAO15C,KAAKi3B,cAAc8iB,mBAGhB,YAAA2D,QAAd,W,4GACI,OAAI19C,KAAKw9C,SAAS7+B,KAAO,EACrB,IAEa,GAAMg/B,MAAM,IAAIC,QAAQ,4C,OACzC,GAAwB,OADlBh9C,EAAW,UACJ+e,OACT,MAAM,IAAIhe,MAEO,SAAMf,EAASi9C,Q,OACpC,IAAWC,KADLC,EAAe,SAEjB,GAAIA,EAAa/+C,eAAe8+C,GAE5B,IAAWE,KADLC,EAAWF,EAAaD,GAEtBG,EAASj/C,eAAeg/C,IAEL,OADbE,EAAUD,EAASD,IACbz4C,KAEQ,OADVC,EAAW,EAAAC,MAAMC,YAAYw4C,EAAQ34C,OAEvCvF,KAAKw9C,SAAStuC,IAAI1J,EAAU04C,EAAQ96C,K,mDAvEvD+6C,GAAgC,kK,iCAAhCA,EAAgC,o5BCtB7C,4BACI,8CACI,Y,mBACA,gCAIJ,sCACJ,kCACA,yCAAG,a,oBAAkC,iBACrC,iDAIA,iDAsCA,uFACA,mB,MAnDQ,sGACO,2DAMZ,gFACE,4DAIa,kD,+JDIlB,CAIsD,EAAA5nB,uBAAzC,EAAA4nB,oC,yxDEtBb,KAMA,MACA,MACA,KARA,IAYA,QAEA,S,oGCXQ,4BACI,kD,mBACA,0DAAsB,Y,mBAAoB,iBAC9C,2C,MAFgD,6EACtB,kE,sBAKlC,0BACI,0C,mBACA,kDAAsB,Y,mBAAoB,iBAC9C,mC,MAFgD,6EACtB,kE,sBAGtB,oC,mBACI,Y,mBACJ,kB,MAF4B,+DACxB,mG,mDAagB,6BACI,wEAAyB,mI,mBAAwD,YAAU,iBAC/F,mE,0CADuD,8EAA8B,4C,yBAGjF,wEAAM,YAAU,iBACpB,0C,uCADU,4C,sBAEV,6BACI,mE,mBACA,0EAAsB,Y,mBAAmB,iBAC7C,oE,MAF2C,4EACjB,iE,sBAE1B,6BACI,mE,mBAEA,0EAAsB,Y,mBAAwB,iBAClD,oE,MAH2C,iFAEjB,sE,yBAlBlC,yBACI,iEACI,4EACJ,sDACA,iEACI,iFAGA,gHAGA,kFAIA,kFAKA,+DACA,uEAAO,aAAc,iBACzB,uDACA,mEACI,yEACI,a,oBACJ,iBACJ,uDACJ,oD,gEA1BwB,wCAGF,0EAA6D,cAM7D,sEAIA,qDAMP,+CAIH,8K,yBA/BxB,6BACI,6D,mBACI,Y,wCACJ,iBACA,wDACI,0DACI,mEA6BJ,+CACJ,2CACJ,iD,8BApC+B,0FACvB,qJAIQ,kD,yBAVpB,4BACI,2DAGA,8DAsCJ,mC,6BAzC8D,sDAG5C,sD,iBDFlB,kBAOI,WAAsBlnB,EAA8BzhB,EAChDC,EAAoC8f,GADxC,MAEI,YAAM/f,EAA0B+f,EAAa9f,GAAkB,IAAK,K,OAFlD,EAAAwhB,gB,SAH0B,OAQ1C,YAAA/1B,SAAN,W,0FACQ,SAAMlB,KAAKm2B,e,cAAX,SACA,GAAM,YAAMtc,KAAI,YADhB,M,OACA,S,mCAIF,YAAA6b,WAAN,W,2GACuB,SAAM11B,KAAK05C,iB,cAAxBC,EAAa,SACbyE,EAAqC,GAC3Cp+C,KAAKq+C,eAAiB,IAAIrvC,IAC1B2qC,EAAWv1C,SAAQ,SAAA2J,GACXA,EAAE5L,OAAS,EAAAyG,WAAWC,OAA6B,MAApBkF,EAAErF,MAAMoB,UAAyC,KAArBiE,EAAErF,MAAMoB,UAAmBiE,EAAEotB,YAG5FijB,EAAqBj5C,KAAK4I,GACtB,EAAKswC,eAAehgB,IAAItwB,EAAErF,MAAMoB,UAChC,EAAKu0C,eAAenvC,IAAInB,EAAErF,MAAMoB,SAAU,EAAKu0C,eAAe7/C,IAAIuP,EAAErF,MAAMoB,UAAY,GAEtF,EAAKu0C,eAAenvC,IAAInB,EAAErF,MAAMoB,SAAU,OAG5Cw0C,EAAwBF,EAAqBj2C,QAAO,SAAA4F,GACtD,SAAKswC,eAAehgB,IAAItwB,EAAErF,MAAMoB,WAAa,EAAKu0C,eAAe7/C,IAAIuP,EAAErF,MAAMoB,UAAY,KAC7F9J,KAAK2J,QAAU20C,E,YAGT,YAAA5E,cAAV,WACI,OAAO15C,KAAKi3B,cAAc8iB,mBAGpB,YAAAC,gBAAV,SAA0BjsC,GAEtB,OAAO,G,iCAxCFwwC,GAA8B,kK,iCAA9BA,EAA8B,wzBCpB3C,4BACI,8CACI,Y,mBACA,gCAIJ,sCACJ,kCACA,yCAAG,a,oBAAsC,iBACzC,iDAIA,iDA2CA,uFACA,mB,MAxDQ,0GACO,2DAMZ,oFACE,4DAIa,kD,+JDElB,CAIoD,EAAAhoB,uBAAvC,EAAAgoB,kC,yxDEpBb,KAMA,MACA,MACA,KARA,IAUA,QAIA,S,oGCXQ,4BACI,kD,mBACA,0DAAsB,Y,mBAAoB,iBAC9C,2C,MAFgD,6EACtB,kE,sBAKlC,0BACI,0C,mBACA,kDAAsB,Y,mBAAoB,iBAC9C,mC,MAFgD,6EACtB,kE,sBAGtB,oC,mBACI,Y,mBACJ,kB,MAF4B,+DACxB,qG,sBAcgB,6BACI,mE,mBACA,0EAAsB,Y,mBAAmB,iBAC7C,oE,MAF2C,4EACjB,iE,sBAE1B,6BACI,mE,mBAEA,0EAAsB,Y,mBAAwB,iBAClD,oE,MAH2C,iFAEjB,sE,mDAblC,yBACI,iEACI,4EACJ,sDACA,iEACI,oEAAyB,mH,oBAAwD,aAAU,iBAC3F,kFAIA,kFAKA,+DACA,uEAAO,aAAc,iBACzB,uDACJ,mD,+CAhBwB,wCAGmC,+EAA8B,2CACnE,sEAIA,qDAMP,gD,yBAtB3B,6BACI,6D,mBACI,Y,wCACJ,iBACA,wDACI,0DACI,kEAmBJ,+CACJ,2CACJ,iD,8BA1B+B,4FACvB,uJAIQ,kD,yBAVpB,4BACI,2DAGA,8DA4BJ,mC,6BA/B8D,sDAG5C,sD,iBDFlB,kBAKI,WAAsBtnB,EAA8BzhB,EAChDC,EAAoC8f,GADxC,MAEI,YAAM/f,EAA0B+f,EAAa9f,GAAkB,IAAK,K,OAFlD,EAAAwhB,gB,SAD4B,OAM5C,YAAA/1B,SAAN,W,0FACQ,SAAMlB,KAAKm2B,e,cAAX,SACA,GAAM,YAAMtc,KAAI,YADhB,M,OACA,S,mCAIF,YAAA6b,WAAN,W,kGACuB,SAAM11B,KAAK05C,iB,cAAxBC,EAAa,SACb6E,EAAmB7E,EAAWxxC,QAAO,SAAA4F,GACvC,QAAIA,EAAE5L,OAAS,EAAAyG,WAAWC,QAAUkF,EAAErF,MAAM6e,SAAWxZ,EAAEotB,YAGlDptB,EAAErF,MAAMqB,KAAKyd,MAAK,SAAAtiB,GAAK,OAAS,MAATA,EAAEL,KAA4C,IAA7BK,EAAEL,IAAIO,QAAQ,iBAEjEpF,KAAK2J,QAAU60C,E,YAGT,YAAA9E,cAAV,WACI,OAAO15C,KAAKi3B,cAAc8iB,mB,iCAxBrB0E,GAAgC,kK,iCAAhCA,EAAgC,quBCpB7C,4BACI,8CACI,Y,mBACA,gCAIJ,sCACJ,kCACA,yCAAG,a,oBAAwC,iBAC3C,iDAIA,iDAiCA,uFACA,mB,MA9CQ,4GACO,2DAMZ,sFACE,4DAIa,kD,+JDElB,CAIsD,EAAAloB,uBAAzC,EAAAkoB,oC,yxDEpBb,KAMA,MACA,MACA,MACA,KATA,IAaA,QAEA,S,4GCZQ,4BACI,kD,mBACA,0DAAsB,Y,mBAAoB,iBAC9C,2C,MAFgD,6EACtB,kE,sBAKlC,0BACI,0C,mBACA,kDAAsB,Y,mBAAoB,iBAC9C,mC,MAFgD,6EACtB,kE,sBAGtB,oC,mBACI,Y,mBACJ,kB,MAF4B,+DACxB,iG,mDAagB,6BACI,wEAAyB,mI,mBAAwD,YAAU,iBAC/F,mE,0CADuD,8EAA8B,4C,yBAGjF,wEAAM,YAAU,iBACpB,0C,uCADU,4C,sBAEV,6BACI,mE,mBACA,0EAAsB,Y,mBAAmB,iBAC7C,oE,MAF2C,4EACjB,iE,sBAE1B,6BACI,mE,mBAEA,0EAAsB,Y,mBAAwB,iBAClD,oE,MAH2C,iFAEjB,sE,yBAlBlC,yBACI,iEACI,4EACJ,sDACA,iEACI,iFAGA,gHAGA,kFAIA,kFAKA,+DACA,uEAAO,aAAc,iBACzB,uDACA,mEACI,sEACI,a,oBACJ,iBACJ,uDACJ,oD,gEA1BwB,wCAGF,0EAA6D,cAM7D,sEAIA,qDAMP,+CAGD,8FACF,4J,yBA/BxB,6BACI,6D,mBACI,Y,wCACJ,iBACA,wDACI,0DACI,mEA6BJ,+CACJ,2CACJ,iD,8BApC+B,wFACvB,mJAIQ,kD,yBAVpB,4BACI,2DAGA,8DAsCJ,mC,6BAzC8D,sDAG5C,sD,iBDDlB,kBASI,WAAsBxnB,EAAwCK,EAC1D9hB,EAAoDC,EACpD8f,GAFJ,MAGI,YAAM/f,EAA0B+f,EAAa9f,GAAkB,IAAK,K,OAHlD,EAAAwhB,gBAAwC,EAAAK,4BAJ9D,EAAAonB,oBAAsB,IAAI1vC,IAElB,EAAA2vC,sBAAwB,IAAI3vC,I,SAHU,OAWxC,YAAA9N,SAAN,W,0FACQ,SAAMlB,KAAKm2B,e,cAAX,SACA,GAAM,YAAMtc,KAAI,YADhB,M,OACA,S,mCAIF,YAAA6b,WAAN,W,yGACuB,SAAM11B,KAAK05C,iB,cAAxBC,EAAa,SACbiF,EAAoC,GAC1CjF,EAAWv1C,SAAQ,SAAA2J,GACf,GAAIA,EAAE5L,OAAS,EAAAyG,WAAWC,OAA6B,MAApBkF,EAAErF,MAAMoB,UAAyC,KAArBiE,EAAErF,MAAMoB,WAAmBiE,EAAEotB,UAA5F,CAGA,IAAM0jB,EAAkC,MAApB9wC,EAAErF,MAAMmB,UAAgD,KAA5BkE,EAAErF,MAAMmB,SAAS9F,OAC3D+6C,EAAW/wC,EAAErF,MAAMoB,SAAW,SAAW+0C,EAAc9wC,EAAErF,MAAMmB,SAAW,IAChF,IAAK,EAAK80C,sBAAsBtgB,IAAIygB,GAAW,CAC3C,IAAI1P,EAAsB,GAC1B,GAAIyP,EAAa,CACb,IAAMxP,EAAathC,EAAErF,MAAMmB,SAASzE,QAAQ,KAExCgqC,EADAC,GAAc,EACFD,EAAU7B,OAClBx/B,EAAErF,MAAMmB,SAASjD,OAAO,EAAGyoC,GAAYtrC,OAAO/B,cAAcgE,MAAM,iBACjEmC,QAAO,SAAAlK,GAAK,OAAAA,EAAEE,QAAU,KAEjB4P,EAAErF,MAAMmB,SAAS9F,OAAO/B,cAAcgE,MAAM,gBACnDmC,QAAO,SAAAlK,GAAK,OAAAA,EAAEE,QAAU,KAGrC,IAAM6F,EAAS,EAAKszB,0BAA0BuX,iBAAiB9gC,EAAErF,MAAMoB,SACnEslC,EAAUjxC,OAAS,EAAIixC,EAAY,MACvC,EAAKuP,sBAAsBzvC,IAAI4vC,EAAU96C,EAAO8oB,OAEpD,IAAMA,EAAQ,EAAK6xB,sBAAsBngD,IAAIsgD,GAChC,MAAThyB,GAAiBA,GAAS,IAC1B,EAAK4xB,oBAAoBxvC,IAAInB,EAAEnO,GAAI,EAAKm/C,SAASjyB,IACjD8xB,EAAoBz5C,KAAK4I,QAGjC/N,KAAK2J,QAAUi1C,E,YAGT,YAAAlF,cAAV,WACI,OAAO15C,KAAKi3B,cAAc8iB,mBAGpB,YAAAC,gBAAV,SAA0BjsC,GAEtB,OAAO,GAGH,YAAAgxC,SAAR,SAAiBjyB,GACb,OAAQA,GACJ,KAAK,EACD,MAAO,CAAC,SAAU,WACtB,KAAK,EACD,MAAO,CAAC,OAAQ,WACpB,KAAK,EACD,MAAO,CAAC,OAAQ,WACpB,QACI,MAAO,CAAC,WAAY,Y,iCAtEvBkyB,GAA4B,mN,iCAA5BA,EAA4B,0xBCrBzC,4BACI,8CACI,Y,mBACA,gCAIJ,sCACJ,kCACA,yCAAG,a,oBAAoC,iBACvC,iDAIA,iDA2CA,uFACA,mB,MAxDQ,wGACO,2DAMZ,kFACE,4DAIa,kD,+JDGlB,CAIkD,EAAAzoB,uBAArC,EAAAyoB,gC,yxDErBb,KAEA,MACA,MACA,KACA,KACA,KANA,IAUA,S,oHCJoB,4BAAsB,YAAe,kB,6BAAf,mD,qBAWV,sB,qBACA,sB,mDAMI,6BACI,oFAEI,mF,mBAEA,2FAAsB,Y,mBAA8B,iBAAO,iBAC/D,8FACI,+HACiC,a,oBAAgB,iBACzD,uE,mFALY,uFACkB,2EAEa,qEAAuC,sBACzC,+D,mDAKjD,4BACI,oFACuC,6H,mBAEnC,2EAEA,2E,mBAEJ,mEACJ,+D,kFAPQ,mFACA,oDAAqC,sBACA,gDAGjC,6EADyC,mC,mDA5BzD,yBACI,yEACI,8EACA,8EAEJ,8DACA,yEACI,gFACI,kFAAyB,+GAAsB,aAAc,iBAC7D,wFAUJ,mEACA,+EAAO,aAAc,iBACzB,+DACA,+EAUJ,2D,+CA9B4C,mDACS,kDAKM,+CAC1C,+DAWF,+CAEoB,iD,yBAxB3C,+BACI,iEACI,wEAiCJ,sDACJ,mD,6BAlCY,6D,sBAmCZ,0BACI,8DAAI,Y,mBAA0B,iBAC9B,oEAAkC,Y,mBAAiB,iBACnD,gEACA,sEAAoC,a,oBAAwB,iBAChE,oD,MAJQ,uEAC8B,8DAEE,uE,yBAIxC,gCACI,2D,mBACA,gEAAM,Y,mBAAiB,iBAC3B,mD,8CAHyD,mCACpB,6EAC3B,+DDhD1B,kBAOI,WAAY/nB,EAA8Bv3B,EACtCyZ,EAA8Boc,EAC9Bpa,GAFJ,MAGI,YAAM8b,EAAev3B,EAAayZ,EAAeoc,EAAapa,EAAsB1Q,SAAO,K,OAL/F,EAAAmtB,UAAW,E,SAD2B,OAStB,YAAAqnB,SAAhB,SAAyBt1B,G,iGACjB3pB,KAAKk8B,sBAAsBvS,GAC3B,GAAM3pB,KAAKk/C,yBAAyBv1B,GAAY,IADhD,M,OACA,S,mCAIE,YAAAuS,sBAAV,SAAgCvS,GAC5B,OAAyB,MAAlBA,EAAWhrB,KAA6C,MAA9BqB,KAAKuG,OAAOhE,gB,iCAhBxC48C,GAAoB,8L,iCAApBA,EAAoB,ioEChBjC,4BACI,iDACI,wDAAkC,2CAAY,EAAAr3B,YAC1C,yDACI,4DACI,a,oBACA,iCACJ,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,oEAqCA,kEAMJ,+CACA,4DACI,qEAIA,mEAA6E,a,oBACjE,iBAChB,+CACJ,2CACJ,uCACJ,mCACA,mB,MAlEgE,0DAG5C,yHACO,6CAE8C,oFAKb,uEAqCvC,gDAQ8E,gDAIN,mE,oKDlD7F,CAI0C,wBAA7B,EAAAq3B,wB,yxDEhBb,WAqBA,GAfA,KACA,MAEA,KACA,MACA,MACA,KACA,KACA,MACA,OACA,KAKA,Q,0KrFPoB,6BACI,+D,mBACA,uEAAsB,Y,mBAAmB,iBAC7C,gE,MAF2C,4EACjB,iE,sBAKtB,6BACI,mE,mBAEA,2EAAsB,Y,mBAA+B,iBACzD,oE,MAFQ,wFACkB,6E,yBAN9B,6BACI,+D,mBACA,uEAAsB,Y,mBAAwB,iBAC9C,gFAKJ,iE,4DAP2C,iFACjB,qEACR,gE,mDAuBN,2BACI,yIAAmC,WAAY,eAC/C,2EACA,Y,mBACJ,iB,MADI,sJ,mDAEJ,2BAA+C,qIAA+B,uBAAwB,WAElG,2EACA,Y,mBACJ,iB,MADI,8J,mDAEJ,2BACI,8IACA,2EACA,Y,mBACJ,iB,MADI,gJ,mDAnBR,6BACI,4EACI,wIAAmC,WAAY,eAC/C,2EACA,Y,mBACJ,iBACA,8EAKA,+EAKA,gFAKJ,wE,+DAjBQ,qJAG4D,mDAK5D,+DAI2C,uD,mDAUnD,2BAEI,4HACA,uEACA,Y,mBACJ,iB,MADI,uI,mDAEJ,2BAC+D,4HAC3D,uEACA,Y,mBACJ,iB,MADI,uI,mDAEJ,2BACI,kIACA,uEACA,Y,mBACJ,iB,MADI,6I,mDAEJ,2BACI,6HACA,uEACA,Y,mBACJ,iB,MADI,2I,mDAEJ,2BAA+C,8HAC3C,uEACA,Y,mBACJ,iB,MADI,yI,mDAnFpB,yBACI,4DAAI,kHACA,mEAAuB,6FAAvB,iBACJ,kDACA,4DAAI,kHACA,uEACJ,mDACA,8DAAI,kHACA,kEAAqC,mH,oBACH,aAAU,iBAC5C,8EAIA,+EASA,2DACA,sEAAmB,aAAc,iBACrC,mDACA,+DACI,oEACI,2E,oBAGI,qEACJ,2DACA,wEACI,uFAsBA,0EAA+C,kHAC3C,yEACA,a,oBACJ,iBACA,4EAMA,4EAKA,4EAKA,4EAKA,4EAIA,0EAA2D,6GACvD,yEACA,a,oBACJ,iBACJ,2DACJ,uDACJ,mDACJ,+C,+CA1F+B,iDAGP,wCAIZ,gFAA8B,2CACpB,sEAIA,qDAUK,+CAMX,sFAIc,8EAwBV,8IAGA,uGAMA,qFAI2C,mEAKA,qEAKqB,gDAMhE,0K,mDA1F5B,8BACwE,+FACpE,qDACI,4DA6FJ,0CACJ,sC,yDAhGI,yCAA4B,wCAEpB,0C,sBAgGR,6BACI,mD,mBACA,2DAAsB,Y,mBAAoB,iBAC9C,oD,MAFgD,6EACtB,kE,mDAItB,gCAAQ,6FACJ,uDAAgC,Y,mBAAoB,iB,MAApB,kE,yBAHxC,6BACI,qDAAG,Y,mBAA0B,iBAC7B,+DAEJ,oD,8BAHO,uEAC2D,kD,yBAPtE,6BACI,gEAIA,gEAKJ,uC,8BATkB,8CAIA,8C,yBAxGtB,6BACI,qDAkGA,mDAWJ,4C,kBA7G8D,6CAkGpC,+CqF5E1B,kBAYI,WAAY/kB,EAA8B/F,EACtCzM,EAAgCloB,EAChCyb,EAA4C8b,EACpC7b,EAAwBmc,EAA4BF,EAA0B9B,GAH1F,MAII,YAAM6E,EAAe/F,EAAWzM,EAAgBloB,EAAayb,EACzD8b,EAAeM,EAAcF,EAAa9B,IAAY,K,OAFlD,EAAAna,aAVF,EAAAgkC,gBAAkB,IAAI,EAAAr8B,aAGhC,EAAAs8B,cAAe,EAEL,EAAA1F,WAA2B,G,SANH,OAgB5B,YAAA9/B,KAAN,SAAW1R,G,YAAA,IAAAA,MAAA,M,gGACFnI,KAAK81B,aAAaqkB,wBAAnB,MACA,GAAM,YAAMtgC,KAAI,UAAC1R,EAAQnI,KAAKs/C,U,OAC9B,OADA,SACA,I,OAGc,OADlBt/C,KAAKq/C,aAAer/C,KAAK81B,aAAawU,UACtC,EAAAtqC,KAAkB,GAAMA,KAAKi3B,cAAcsoB,6BAA6Bv/C,KAAK81B,aAAal2B,K,cAA1F,EAAK+5C,WAAa,SAClB35C,KAAKw/C,YAAYr3C,GACjBnI,KAAKusC,QAAS,E,YAGZ,YAAAiT,YAAN,SAAkBr3C,G,YAAA,IAAAA,MAAA,M,uGACVnI,KAAK81B,aAAaqkB,wBAClB,GAAM,YAAMqF,YAAW,UAACr3C,IADxB,M,cACA,S,aAGA,OADMZ,EAAI,SAACwG,GAAkB,OAAAA,EAAExL,iBAAmB,EAAKuzB,aAAal2B,KAAiB,MAAVuI,GAAkBA,EAAO4F,KACpG,GAAM,YAAMyxC,YAAW,UAACj4C,I,OAAxB,S,mCAIF,YAAA2B,OAAN,SAAaukC,G,YAAA,IAAAA,MAAA,M,gGACT,OAAKztC,KAAK81B,aAAaqkB,yBAGvBn6C,KAAKy/C,eAAgB,EACjBC,EAAkB1/C,KAAK25C,WAEJ,MAAnB35C,KAAKktB,YAAsBltB,KAAKktB,WAAWnpB,OAAO5F,OAAS,EAC3D6B,KAAK2J,QAAU+1C,EAAgBv3C,QAAO,SAAA4F,GAClC,OAAIA,EAAEotB,YAAc,EAAKmkB,UAGH,MAAf,EAAKn3C,QAAkB,EAAKA,OAAO4F,QAG3B,MAAf/N,KAAKmI,SACLu3C,EAAkBA,EAAgBv3C,OAAOnI,KAAKmI,SAElDnI,KAAK2J,QAAU3J,KAAKo6B,cAAculB,mBAAmBD,EAAiB1/C,KAAKktB,WAAYltB,KAAKs/C,UAEhG,GAAMt/C,KAAK4/C,gBAlBA,CAAP,EAAO,YAAM12C,OAAM,UAACukC,I,cAkBxB,S,YAGJ,YAAA3hB,OAAA,SAAO/d,GACH/N,KAAKo/C,gBAAgB1oC,KAAK3I,IAGpB,YAAAqtB,aAAV,SAAuBx7B,GACnB,OAAKI,KAAK81B,aAAaqkB,wBAGhBn6C,KAAKs/C,QAAUt/C,KAAKob,WAAWw/B,kBAAkBh7C,GAAMI,KAAKob,WAAWy/B,qBAAqBj7C,GAFxF,YAAMw7B,aAAY,UAACx7B,EAAII,KAAKs/C,UAKjC,YAAApjB,sBAAV,SAAgCnuB,GAC5B,OAAO/N,KAAK81B,aAAaqkB,yBAA2BpsC,EAAEouB,mB,iCAvEjDC,GAAgB,iX,iCAAhBA,EAAgB,gwErF3B7B,uCA+GA,kB,KA/Gc,4D,wOqFuBd,CAIsC,oBAAzB,EAAAA,oB,8ZC3Bb,KAKA,MACA,MACA,KACA,KARA,IAYA,S,6GCNoB,4BAAsB,YAAe,kB,6BAAf,mD,mDAUtB,6BACI,yEAAsB,wFAAmB,MACrC,Y,mBACJ,iBACA,yEAAsB,wFAAmB,MACrC,Y,mBACJ,iBACJ,sD,MALQ,kIAGA,qI,sBAIZ,0BACI,Y,mBACJ,kB,MADI,6H,mDAII,4BAAiD,4GAC7C,yEACI,gFAAuB,6FAAvB,iBAEJ,8DACA,sEACI,YACJ,iBACJ,0D,oCANuD,4EAAxB,kCAIvB,mH,yBARhB,+BACI,iEACI,wEASJ,sDACJ,mD,6BAVY,sDDhB5B,kBAKI,WAAYhF,EAAsCjc,EAC9Czb,EAA0Bu3B,G,OAC1B,YAAMG,EAAmBjc,EAAsBzb,EAAau3B,IAAc,K,OAHxC,OAMtC,YAAAvhB,YAAA,WACI1V,KAAK66B,WAAU,IAGnB,YAAA0V,MAAA,SAAMxiC,EAAmB0tB,GACpB1tB,EAAU6tB,QAAoB,MAAVH,GAAmB1tB,EAAU6tB,QAAUH,GAGhE,YAAAZ,UAAA,SAAUY,GAAV,WACIz7B,KAAKoH,YAAYhD,SAAQ,SAAA2J,GAAK,SAAKwiC,MAAMxiC,EAAG0tB,O,iCAfvCokB,GAAoB,+J,iCAApBA,EAAoB,ulC,GAAA,MClBjC,4BACI,iDACI,wDAAkC,2CAAY,EAAA/3B,YAC1C,yDACI,4DACI,a,oBACA,iCACJ,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,2DAAG,a,oBAA4B,iBAC/B,gEACI,gEAAI,a,oBAAwB,iBAC5B,uEAQJ,mDACA,iEAGA,oEAaJ,+CACA,4DACI,mEACI,6D,oBACA,kEAAM,a,oBAAiB,iBAC3B,mDACA,mEACyB,a,oBAAmB,iBAChD,+CACJ,2CACJ,uCACJ,mCACA,mB,4BAnDgE,0DAG5C,0HACO,6CAE8C,oFAKtD,4EAEK,uEACwB,wEAS3B,0EAG4C,wEAeQ,kDACpB,+EAC3B,gEAGe,oE,gQDlCzC,CAI0C,wBAA7B,EAAA+3B,wB,yxDElBb,KAEA,KACA,MACA,MACA,KACA,MACA,KAPA,IASA,SACA,SAGA,SAEA,S,sLtEEY,2BACI,2DAAyB,kGACrB,2DAAsC,Y,mBAC1C,iBACJ,8C,gCAJI,mEAE0C,6F,mDAG9C,2BACI,2DAAyB,8FACrB,2DAAyC,Y,mBAC7C,iBACJ,8C,gCAJI,+DAE6C,yF,sBA2BrD,2BACI,mD,mBACA,2DAAsB,Y,mBAAoB,iBAC9C,2C,MAFqC,6EACX,kE,qHAgBF,2BAEI,oI,mBAA2B,iB,+DAFe,qEAC1C,6F,qBAGA,sB,mDAEJ,2BACI,sI,mBAEA,2EACJ,kE,KAHiC,wE,sBAMjC,6BACA,4E,gEAFJ,4BACI,yFAEJ,+D,kFAFkB,kDAAuE,8D,mDAhB7F,2BAEI,0EACI,8EAGA,2EAAyB,wHACrB,kFAAuF,YAC3F,iBACA,gFAKJ,+DACA,6EAIJ,2D,+CAlBI,gGAEO,sDAII,0DAAoF,yFAIvF,8CAIyB,+E,yBAfrC,wEAoBJ,sC,uBApBQ,0C,sBAqBR,6BACA,gE,mDAhCR,6BACI,6DACI,Y,mBACA,2BAAoD,6F,mBAEhD,+DACJ,sDACJ,mDACA,8DACI,4GAsBA,+EAEJ,mDACJ,wD,qDAhCQ,oHAEI,sFA2BU,mDAA0E,mE,mDAShF,2BAEI,oI,mBAA2B,iB,+DAFe,qEAC1C,6F,qBAGA,sB,sBAGA,6BAEA,4E,yBAHJ,4BACI,yFAGJ,+D,iFAFQ,kDAA2E,8D,mDATvF,2BACI,0EAGA,uEAAyB,4HACrB,8EAAmF,YACvF,iBACA,2EAKJ,2D,+CAZkC,kFAC3B,sDAII,0DAAgF,qFAEtD,+E,yBAPrC,wEAaJ,sC,uBAbQ,0C,sBAcR,6BACA,gE,yBAnBR,6BACI,0DAAI,Y,mBAAwB,iBAC5B,4DACI,0GAeA,+EAEJ,mDACJ,yD,iDApBQ,qEAiBc,kDAAkF,uE,yBAtD5G,6BACI,uEAmCA,sEAsBJ,oD,6BAzDkB,kDAmCA,4FsE1E1B,kBAOI,WAAYzoB,EAAsCF,EAC9C2S,EAAgCtU,EACxBna,EAAgC1b,GAF5C,MAGI,YAAM03B,EAAmBF,EAAe2S,EAAgBtU,IAAY,K,OAD5D,EAAAna,aAAgC,EAAA1b,c,SALR,OAS9B,YAAA06C,gBAAN,W,+GACSp6C,KAAK81B,aAAaqkB,wBAAnB,MACA,GAAM,YAAMC,gBAAe,UAACp6C,KAAK81B,aAAal2B,K,OAC9C,OADA,SACA,I,OAGgB,SAAMI,KAAKob,WAAW0kC,eAAe9/C,KAAK81B,aAAal2B,K,cACxD,OADbwH,EAAc,WAC2B,MAApBA,EAAYjE,MAAgBiE,EAAYjE,KAAKhF,QAC9D4hD,EAAoB34C,EAAYjE,KAAKmE,KAAI,SAAAJ,GAC3C,WAAI,EAAAyb,WAAW,IAAI,EAAA8D,eAAevf,OACtC,EAAAlH,KAAmB,GAAMA,KAAKo3B,kBAAkB4oB,YAAYD,KAH5D,M,cAGA,EAAK34C,YAAc,S,aAEnBpH,KAAKoH,YAAc,G,iBASE,OANnB64C,EAAuB,IAAI,EAAAx4C,gBACZC,KAAO1H,KAAKN,YAAYO,EAAE,cAC/CggD,EAAqBrgD,GAAK,aAC1BqgD,EAAqB19C,eAAiBvC,KAAK81B,aAAal2B,GACxDqgD,EAAqBx9B,UAAW,EAChCziB,KAAKoH,YAAYjC,KAAK86C,GACtB,EAAAjgD,KAAyB,GAAMA,KAAKo3B,kBAAkB8oB,aAAalgD,KAAKoH,c,cAAxE,EAAK+4C,kBAAoB,S,YAG7B,YAAAC,SAAA,SAASC,GACL,YAAMD,SAAQ,UAACC,EAAU,SAG7B,YAAAC,YAAA,SAAYD,GACR,OAAO,YAAMC,YAAW,UAACD,EAAU,S,iCAtC9BpW,GAAkB,8N,iCAAlBA,EAAkB,k6DtErB/B,4BACI,iDACI,Y,mBACA,0B,mBAEI,kDACJ,0CACJ,uCACA,mDACI,yDACyB,mEAAwB,2BAAU,EAAAD,uB,oBAD3D,iBAEA,sDACI,0DACI,6DAAyB,wCAAS,EAAAnP,eAC9B,4DAAoC,a,oBACxC,iBACJ,+CACA,6DAKA,6DAKJ,2CACA,oDAAI,a,oBAAkB,iBACtB,sDACI,0DACI,6DAAyB,wCAAS,EAAAqP,WAAA,uBAC9B,6DAAuC,a,oBAC3C,iBACJ,+CACA,0DACI,6DAAyB,wCAAS,EAAAA,WAAA,sBAC9B,6DAA6C,a,oBACjD,iBACJ,+CACA,0DACI,6DAAyB,wCAAS,EAAAA,WAAA,0BAC9B,6DAA2C,a,oBAC/C,iBACJ,+CACA,0DACI,6DAAyB,wCAAS,EAAAA,WAAA,4BAC9B,6DAA+C,a,oBACnD,iBACJ,+CACJ,2CACA,wDAIA,mEA2DJ,uCACJ,mCACA,mB,MAlHQ,6FAEI,uFAKiB,8GACI,qCAEjB,6EAEwC,6FAGA,oDAKJ,gDAMxC,iEAEI,mGAE2C,8FAG3C,kGAEiD,6FAGjD,sGAE+C,iGAG/C,wGAEmD,mGAIxD,8CAIW,+C,oNsEtCtB,CAIwC,sBAA3B,EAAAD,sB,68CCrBb,WAaA,GANA,KAEA,KAEA,OAEA,OAEA,SACA,SACA,SACA,S,GACA,O,wMCbQ,+BAA2C,2FACvC,mDACA,Y,mBACJ,iB,MADI,sG,mDAEJ,+BAA2C,4FACvC,mDACA,Y,mBACJ,iB,MADI,uG,mDAEJ,gCAA8B,8FAC1B,mDACA,Y,mBACJ,iB,MADI,yG,oEDKZ,iBAeI,WAAoBriB,EACRloB,EACA8V,GAFQ,KAAAoS,iBACR,KAAAloB,cACA,KAAA8V,2B,OAEZ,YAAA+qC,WAAA,sBACUC,EAAcxgD,KAAKygD,iBAAiB3kB,iBAC1C,GAA2B,IAAvB0kB,EAAYriD,OAAhB,CAMkB,MAAd6B,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK0gD,mBAAmBvqC,gBAAgBJ,GAASK,SAC9D,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAA0B,EAAAgrC,oBAAqB3gD,KAAK0gD,oBAEtF9qB,EAAesF,UAAYl7B,KAAKs/C,QAChC1pB,EAAegrB,UAAYJ,EAC3B5qB,EAAeE,aAAe91B,KAAK81B,aACnCF,EAAeirB,UAAUl9B,WAAU,gD,kDAE/B,OADA3jB,KAAKuW,MAAMU,QACX,GAAMjX,KAAKygD,iBAAiBplB,W,cAA5B,S,cAGJr7B,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,aAtBbvW,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,qBAyB/B,YAAA6gD,YAAA,sBACUN,EAAcxgD,KAAKygD,iBAAiB3kB,iBAC1C,GAA2B,IAAvB0kB,EAAYriD,OAAhB,CAMkB,MAAd6B,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK+gD,oBAAoB5qC,gBAAgBJ,GAASK,SAC/D,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAA2B,EAAAqrC,qBAAsBhhD,KAAK+gD,qBAExFnrB,EAAegrB,UAAYJ,EAC3B5qB,EAAeqrB,WAAWt9B,WAAU,gD,kDAEhC,OADA3jB,KAAKuW,MAAMU,QACX,GAAMjX,KAAKygD,iBAAiBplB,W,cAA5B,S,cAGJr7B,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,aApBbvW,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,qBAuB/B,YAAAihD,UAAA,sBACUC,EAAkBnhD,KAAKygD,iBAAiB5kB,cAC9C,GAA+B,IAA3BslB,EAAgBhjD,OAApB,CAMkB,MAAd6B,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKohD,kBAAkBjrC,gBAAgBJ,GAASK,SAC7D,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAAyB,EAAA0rC,mBAAoBrhD,KAAKohD,mBAEpFxrB,EAAejsB,QAAUw3C,EACzBvrB,EAAe0rB,SAAS39B,WAAU,gD,kDAE9B,OADA3jB,KAAKuW,MAAMU,QACX,GAAMjX,KAAKygD,iBAAiBplB,W,cAA5B,S,cAGJr7B,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,kCAC1B3jB,KAAKuW,MAAQ,K,kBApBbvW,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,qBAuB/B,YAAAshD,SAAA,sBACUf,EAAcxgD,KAAKygD,iBAAiB3kB,iBAC1C,GAA2B,IAAvB0kB,EAAYriD,OAAhB,CAMkB,MAAd6B,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKwhD,iBAAiBrrC,gBAAgBJ,GAASK,SAC5D,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAAwB,EAAA8rC,kBAAmBzhD,KAAKwhD,kBAElF5rB,EAAegrB,UAAYJ,EAC3B5qB,EAAe8rB,QAAQ/9B,WAAU,gD,kDAE7B,OADA3jB,KAAKuW,MAAMU,QACX,GAAMjX,KAAKygD,iBAAiBplB,W,cAA5B,S,cAGJr7B,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,aApBbvW,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,qBAuB/B,YAAA46B,UAAA,SAAUY,GACNz7B,KAAKygD,iBAAiB5lB,UAAUY,I,iCA9H3BkmB,GAAoB,2H,iCAApBA,EAAoB,+D,OAAA,M,yBAMY,EAAAnrB,kB,yBACC,EAAAA,kB,yBACH,EAAAA,kB,yBACC,EAAAA,mB,w7CClC5C,4BACI,oD,mBAEI,8CACJ,sCACA,iDACI,2DAIA,4DAIA,4DAIA,0DAA0C,wCAAS,EAAA+pB,gBAC/C,oDACA,a,oBACJ,iBACA,kDACA,0DAA2C,wCAAS,EAAA1lB,WAAU,MAC1D,qDACA,a,oBACJ,iBACA,0DAA2C,wCAAS,EAAAA,WAAU,MAC1D,qDACA,a,oBACJ,iBACJ,uCACJ,mCAEA,0FACA,wFACA,wFACA,wFACA,mB,MApC0E,oFAIF,gEAIC,gEAIX,+DAMlD,8IAKA,oGAIA,wG,qGDRZ,GAIa,EAAA8mB,wB,yxDExBb,YAKA,SAEA,cAMI,WAAYp/B,EAAoBnO,QAAA,IAAAA,OAAA,GAAhC,MACI,cAAO,KACP,OAAW,MAAPmO,IAIJ,EAAK5D,KAAO4D,EAAI5D,KAChB,EAAKzK,iBAAiB,EAAMqO,EAAK,CAC7B3iB,GAAI,KACJssC,SAAU,KACV7gB,SAAU,MACXjX,EAAkB,CAAC,KAAM,c,EASpC,OA1B8B,OAoBpB,YAAAiB,QAAN,SAAc1W,G,0FACG,SAAMqB,KAAK2U,WAAW,IAAI,EAAAw3B,aAAansC,MAAO,CACvDqrB,SAAU,MACX,KAAM1sB,I,OACT,MAAO,CAAP,EAHa,kBAKrB,EA1BA,CAA8B,WAAjB,EAAAijD,Y,8ZCPb,YAKA,SAEA,cAII,WAAYr/B,EAAoBnO,QAAA,IAAAA,OAAA,GAAhC,MACI,cAAO,KACP,OAAW,MAAPmO,IAIJ,EAAK6pB,OAAS7pB,EAAI6pB,OAClB,EAAKl4B,iBAAiB,EAAMqO,EAAK,CAC7BT,KAAM,MACP1N,EAAkB,K,EAQ7B,OArB8B,OAgB1B,YAAAiB,QAAA,SAAQ1W,GACJ,OAAOqB,KAAK2U,WAAW,IAAI,EAAA03B,aAAarsC,MAAO,CAC3C8hB,KAAM,MACP,KAAMnjB,IAEjB,EArBA,CAA8B,WAAjB,EAAAkjD,Y,8ZCRb,IAEA,cAKI,WAAYjhD,EAAe+e,EAAgBmiC,GAA3C,MACI,YAAMlhD,IAAS,KACXmhD,EAAa,KACjB,GAAgB,MAAZnhD,EAAkB,CAClB,IAAMohD,EAAqB,EAAKxgD,oBAAoB,cAEhDugD,EADAC,GAAsBF,EACTE,EAEAphD,E,OAIjBmhD,GACA,EAAKx9C,QAAU,EAAK/C,oBAAoB,UAAWugD,GACnD,EAAKzU,iBAAmB,EAAK9rC,oBAAoB,mBAAoBugD,IAEtD,MAAXpiC,IACA,EAAKpb,QAAU,yCAGvB,EAAK26B,WAAavf,E,EAsC1B,OA/DmC,OA4B/B,YAAAsiC,iBAAA,WACI,GAA6B,MAAzBjiD,KAAKstC,iBACL,OAAOttC,KAAKuE,QAEhB,IAAK,IAAM5F,KAAOqB,KAAKstC,iBACnB,GAAKttC,KAAKstC,iBAAiBtuC,eAAeL,IAGtCqB,KAAKstC,iBAAiB3uC,GAAKR,OAC3B,OAAO6B,KAAKstC,iBAAiB3uC,GAAK,GAG1C,OAAOqB,KAAKuE,SAGhB,YAAAipC,eAAA,WACI,IAAM0U,EAAqB,GAC3B,GAA6B,MAAzBliD,KAAKstC,iBACL,OAAO4U,E,eAEAvjD,GACP,IAAK,EAAK2uC,iBAAiBtuC,eAAeL,G,iBAG1C,EAAK2uC,iBAAiB3uC,GAAKyF,SAAQ,SAAC+9C,GAChC,IAAIC,EAAS,GACb,GAAIzjD,EAAIyG,QAAQ,MAAQ,GAAKzG,EAAIyG,QAAQ,MAAQ,EAAG,CAChD,IAAMi9C,EAAU1jD,EAAI2jD,YAAY,KAChCF,EAASzjD,EAAIiI,OAAO,EAAGy7C,GAAW,EAAIA,EAAU1jD,EAAIR,QAAU,KAElE+jD,EAAS/8C,KAAKi9C,EAASD,O,OAV/B,IAAK,IAAMxjD,KAAOqB,KAAKstC,iB,EAAZ3uC,GAaX,OAAOujD,GAEf,EA/DA,CAFA,MAEmChgD,cAAtB,EAAAqgD,iB,8ZCFb,IAIA,cAGI,WAAYh8C,GAAZ,MACI,YAAMA,IAAO,K,OACb,EAAK3G,GAAK2G,EAAO3G,G,EAEzB,OAPyC,OAOzC,EAPA,CAJA,OAIyC4rB,eAA5B,EAAAg3B,uB,8ECFb,MAGI,SAAYC,GACRziD,KAAK0H,KAAO+6C,EAAO/6C,KAAO+6C,EAAO/6C,KAAKgN,gBAAkB,MAJnD,EAAAguC,iB,8ECFb,KAMA,KANA,I,cAQA,aAII,WAAoBtiD,EAAwB+a,GAAxB,KAAA/a,KAAwB,KAAA+a,uB,OAEtB,YAAAwnC,OAAtB,WACI,GAAc,MAAVl4C,OAAJ,CAKA,IAFA,IAAIm4C,EAAW,GACTC,EAAYp4C,OAAOq4C,eAChB7kD,EAAI,EAAGA,EAAI4kD,EAAUE,WAAY9kD,IAAK,CAC3C,IACM6jB,EADQ+gC,EAAUG,WAAW/kD,GAChBwO,WAMfw2C,EAAenhC,EAAK3jB,OAClB+kD,EAAaphC,EAAK5Y,OAAO,kBAC/B,GAAIg6C,GAAc,EAEI,KADAphC,EAAKlb,OAAOs8C,GAAYn/C,SAEtCk/C,EAAeC,GAGvBN,GAAY9gC,EAAKzc,UAAU,EAAG49C,GAElCjjD,KAAKmb,qBAAqBsd,gBAAgBmqB,EAAU,CAAEn4C,OAAQA,W,iCA3BzD04C,GAAmB,gF,iCAAnBA,EAAmB,oE,uCAAnB,iB,EAHb,GAGa,EAAAA,uB,8ECXb,S,OAQA,2B,OAEI,YAAAxjD,UAAA,SAAUmK,GAEN,IADA,IAAIs5C,EAAoB,GACfnlD,EAAI,EAAGA,EAAI6L,EAAS3L,OAAQF,IAAK,CACtC,IAAIkkB,EAAYrY,EAAS7L,GACrBolD,GAAY,EAEhB,OAAQlhC,GACJ,IAAK,IACDA,EAAY,QACZkhC,GAAY,EACZ,MACJ,IAAK,IACDlhC,EAAY,OACZkhC,GAAY,EACZ,MACJ,IAAK,IACDlhC,EAAY,OACZkhC,GAAY,EACZ,MACJ,IAAK,IACDlhC,EAAY,SACZkhC,GAAY,EAKpB,IAAIlhD,EAAO,SACPkhD,GAAalhC,EAAUld,MAAM,UAC7B9C,EAAO,UACAggB,EAAUld,MAAM,QACvB9C,EAAO,UAEXihD,GAAqB,yBAA2BjhD,EAAO,KAAOggB,EAAY,UAE9E,OAAOihC,G,iCAnCFE,I,kDAAAA,EAAiB,U,EAD9B,GACa,EAAAA,qB,8ECPb,MAMI,SAAY1iD,EAA0B+lB,GAClC3mB,KAAK2mB,OAASA,EACd3mB,KAAK0H,KAAO9G,EAAS8G,KACrB1H,KAAKJ,GAAKgB,EAAShB,GACnBI,KAAKugB,aAAe3f,EAAS2f,cAVxB,EAAAgjC,c,8ZCAb,aAKA,cAKI,WAAYhhC,EAAkBnO,QAAA,IAAAA,OAAA,GAA9B,MACI,cAAO,KACP,OAAW,MAAPmO,IAIJ,EAAKrO,iBAAiB,EAAMqO,EAAK,CAC7B3iB,GAAI,KACJ8H,KAAM,MACP0M,EAAkB,CAAC,OAEtB,EAAKmM,aAAmC,MAApBgC,EAAIhC,aAAuB,IAAI4I,KAAK5G,EAAIhC,cAAgB,M,EAQpF,OAxB4B,OAmBxB,YAAAlL,QAAA,WACI,OAAOrV,KAAK2U,WAAW,IAAI,EAAAjL,WAAW1J,MAAO,CACzC0H,KAAM,MACP,OAEX,EAxBA,CAFA,MAE4B,SAAf,EAAA87C,U,8ZCPb,aACA,QACA,SAEA,SACA,SACA,SACA,SACA,SAEA,cAsBI,WAAY5iD,GAAZ,MACI,YAAMA,IAAS,KACf,EAAKhB,GAAK,EAAK4B,oBAAoB,MACnC,EAAKe,eAAiB,EAAKf,oBAAoB,kBAC/C,EAAKojB,SAAW,EAAKpjB,oBAAoB,aAAe,KACxD,EAAKW,KAAO,EAAKX,oBAAoB,QACrC,EAAKkG,KAAO,EAAKlG,oBAAoB,QACrC,EAAKgH,MAAQ,EAAKhH,oBAAoB,SACtC,EAAK+G,SAAW,EAAK/G,oBAAoB,cAAe,EACxD,EAAKsjB,OAAS,EAAKtjB,oBAAoB,QACS,MAA5C,EAAKA,oBAAoB,gBACzB,EAAKujB,cAAe,EAEpB,EAAKA,aAAe,EAAKvjB,oBAAoB,gBAEjD,EAAKqjB,oBAAsB,EAAKrjB,oBAAoB,uBACpD,EAAK+e,aAAe,EAAK/e,oBAAoB,gBAC7C,EAAK4jB,cAAgB,EAAK5jB,oBAAoB,iBAC9C,EAAK6jB,YAAc,EAAK7jB,oBAAoB,eAE5C,IAAMkH,EAAQ,EAAKlH,oBAAoB,SAC1B,MAATkH,IACA,EAAKA,MAAQ,IAAI,EAAAmiB,SAASniB,IAG9B,IAAM7B,EAAO,EAAKrF,oBAAoB,QAC1B,MAARqF,IACA,EAAKA,KAAO,IAAI,EAAAmkB,QAAQnkB,IAG5B,IAAMme,EAAW,EAAKxjB,oBAAoB,YAC1B,MAAZwjB,IACA,EAAKA,SAAW,IAAI,EAAAiG,YAAYjG,IAGpC,IAAM/a,EAAa,EAAKzI,oBAAoB,cAC1B,MAAdyI,IACA,EAAKA,WAAa,IAAI,EAAA8gB,cAAc9gB,IAGxC,IAAMxB,EAAS,EAAKjH,oBAAoB,UAC1B,MAAViH,IACA,EAAKA,OAASA,EAAOnB,KAAI,SAACC,GAAW,WAAI,EAAA2jB,SAAS3jB,OAGtD,IAAM2d,EAAc,EAAK1jB,oBAAoB,eAC1B,MAAf0jB,IACA,EAAKA,YAAcA,EAAY5d,KAAI,SAAC+H,GAAW,WAAI,EAAAo0C,mBAAmBp0C,OAG1E,IAAM8V,EAAkB,EAAK3jB,oBAAoB,mB,OAC1B,MAAnB2jB,IACA,EAAKA,gBAAkBA,EAAgB7d,KAAI,SAACo8C,GAAW,WAAI,EAAAC,wBAAwBD,O,EAG/F,OA7EoC,OA6EpC,EA7EA,CAAoC,EAAAxhD,cAAvB,EAAA0hD,kB,8ZCVb,YACA,SAEA,cAcI,WAAYhjD,GAAZ,MACI,YAAMA,IAAS,KAHnB,EAAA4rC,cAA+C,GAI3C,EAAK5sC,GAAK,EAAK4B,oBAAoB,MACnC,EAAKkG,KAAO,EAAKlG,oBAAoB,QACrC,EAAKwf,MAAQ,EAAKxf,oBAAoB,SACtC,EAAKqiD,cAAgB,EAAKriD,oBAAoB,iBAC9C,EAAKsiD,mBAAqB,EAAKtiD,oBAAoB,sBACnD,EAAKi7B,QAAU,EAAKj7B,oBAAoB,WACxC,EAAKuiD,QAAU,EAAKviD,oBAAoB,WACxC,EAAKwiD,iBAAmB,EAAKxiD,oBAAoB,oBACjD,EAAK7C,IAAM,EAAK6C,oBAAoB,OACpC,EAAK6/B,WAAa,EAAK7/B,oBAAoB,cAC3C,EAAKyiD,cAAgB,EAAKziD,oBAAoB,iBAE9C,IAAMgrC,EAAgB,EAAKhrC,oBAAoB,iB,OAC1B,MAAjBgrC,IACA,EAAKA,cAAgBA,EAAcllC,KAAI,SAAC40C,GAAW,WAAI,EAAAgI,4BAA4BhI,O,EAG/F,OAjCqC,OAiCrC,EAjCA,CAAqC,EAAAh6C,cAAxB,EAAAiiD,mB,8ZCHb,IAEA,cAOI,WAAYhhD,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,OAAY,MAARA,IAGJ,EAAKvD,GAAK,EAAK4B,oBAAoB,MACnC,EAAK6pB,SAAW,EAAK7pB,oBAAoB,YACzC,EAAK7C,IAAM,EAAK6C,oBAAoB,OACpC,EAAKmd,KAAO,EAAKnd,oBAAoB,QACrC,EAAK0qC,SAAW,EAAK1qC,oBAAoB,a,EAEjD,OAlBiC,OAkBjC,EAlBA,CAFA,MAEiCU,cAApB,EAAAkiD,e,8ZCFb,IAEA,cAII,WAAYjhD,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,OAAY,MAARA,IAGJ,EAAK2e,KAAO,EAAKtgB,oBAAoB,QACrC,EAAK4qC,OAAS,EAAK5qC,oBAAoB,YAAa,G,EAE5D,OAZiC,OAYjC,EAZA,CAFA,MAEiCU,cAApB,EAAAmiD,e,uGCAb,mBAAsB,EAAAC,wB,eCFtB,SAASC,EAAyBlP,GAGjC,OAAOngC,QAAQC,UAAU1U,MAAK,WAC7B,IAAII,EAAI,IAAIc,MAAM,uBAAyB0zC,EAAM,KAEjD,MADAx0C,EAAEwW,KAAO,mBACHxW,KAGR0jD,EAAyBC,KAAO,WAAa,MAAO,IACpDD,EAAyBpvC,QAAUovC,EACnC1lD,EAAO4lD,QAAUF,EACjBA,EAAyB3kD,GAAK,K,wFCZ9B,KAMA,KANA,I,6BAQA,aAQI,WAAoBub,GAAA,KAAAA,uBAFpB,KAAAxU,KAAe,O,OAIf,YAAAzF,SAAA,WACIlB,KAAK2G,MAAO,IAAIwiB,MAAOuE,cAAcjhB,WACrCzM,KAAKktC,QAAUltC,KAAKmb,qBAAqBgyB,wBACzC58B,SAASsN,KAAK6mC,UAAU5N,IAAI,oBAGhC,YAAAphC,YAAA,WACInF,SAASsN,KAAK6mC,UAAUC,OAAO,oB,iCAb1BC,GAAuB,8C,iCAAvBA,EAAuB,2ICZpC,+BACA,6CACI,YACA,oBAAK,Y,mBACT,iBACA,kB,MAHI,yGACK,6F,mEDKT,GAIa,EAAAA,2B,68CEZb,KAOA,KAEA,OAEA,KACA,MACA,KACA,KAdA,I,4HCUgB,6BACI,kEACI,+DACA,Y,mBACJ,iBACJ,mD,MAFQ,wI,yBAWR,4BACI,gEACI,+DACA,Y,mBACJ,iBACJ,mD,8BAJwB,wDAEhB,wH,yBAGR,4BACI,gEACI,+DACA,Y,mBACJ,iBACJ,mD,8BAJwB,uDAEhB,uH,sBAGR,4BACI,gEACI,+DACA,Y,mBACJ,iBACJ,mD,MAFQ,0H,yBAtBZ,4BACI,6DACI,gEACI,+DACA,Y,mBACJ,iBACJ,kDACA,iEAMA,iEAMA,iEAMJ,gD,8BArBY,sHAGa,oDAMA,mDAMA,4D,mDASzB,mCAAgC,sGAE5B,uDACA,uD,mBAEA,Y,mBACJ,iB,oDALI,oDAC4B,gDAC2C,6EAAhC,kCAEvC,kH,yBAjDhB,4BACI,iDACI,qDACI,yDACI,+DACA,8DACI,kEAAM,aAAqB,iBAC3B,qEAA0B,a,oBAAyB,iBACvD,mDACA,iEAMJ,+CACA,6DA0BJ,2CACA,wDACI,iEAOJ,2CACJ,uCACJ,oC,6BAjD4B,wDAA0B,aAE5B,wDACoB,uEAEkC,4DAO3C,kDA6BiB,gED5BtD,IAEA,aAUI,WAAoB/hC,EAA+B0S,EACvCsvB,EAAgDC,EAChD1pC,EAAgCD,EAChC3B,GAHQ,KAAAqJ,QAA+B,KAAA0S,cACvC,KAAAsvB,qBAAgD,KAAAC,SAChD,KAAA1pC,aAAgC,KAAAD,uBAChC,KAAA3B,qB,OAEZ,YAAAtY,SAAA,sBACIlB,KAAK+kD,YAAc,+BAC0B,MAAzC/kD,KAAKwZ,mBAAmBwrC,cACxBhlD,KAAK+kD,YAAc/kD,KAAKwZ,mBAAmBwrC,cACD,MAAnChlD,KAAKwZ,mBAAmBG,UAC/B3Z,KAAK+kD,YAAc/kD,KAAKwZ,mBAAmBG,QAAU,WAGzDpJ,SAASsN,KAAK6mC,UAAUC,OAAO,mBAC/B3kD,KAAK6iB,MAAMa,OAAOC,WAAU,SAAMD,GAAM,qC,kDAEpC,OADA1jB,KAAKuC,eAAiBmhB,EAAOnhB,eAC7B,GAAMvC,KAAK6Z,Q,cAAX,S,cAEJ7Z,KAAK6kD,mBAAmBlhC,UA9BE,+BA8BmC,SAACpf,GAC1D,EAAKugD,OAAOG,KAAI,gD,yDACJ1gD,EAAQ2gD,S,IACP,gC,mBACD,SAAMllD,KAAK6Z,Q,OACX,OADA,SACA,M,+BAMpB,YAAAnE,YAAA,WACI1V,KAAK6kD,mBAAmBM,YA1CE,gCA6CxB,YAAAtrC,KAAN,W,gGACwB,OAApB,EAAA7Z,KAAoB,GAAMA,KAAKu1B,YAAYwf,gBAAgB/0C,KAAKuC,iB,cAAhE,EAAKuzB,aAAe,S,YAGlB,YAAAsvB,mBAAN,W,kGACI,GAAiC,MAA7BplD,KAAKqlD,qBACL,U,iBAIc,O,sBADdrlD,KAAKqlD,qBAAuBrlD,KAAKob,WAAWkqC,iCAC9B,GAAMtlD,KAAKqlD,sB,cACZ,OADPvlC,EAAQ,UACV,MACe,GAAM9f,KAAKu1B,YAAYyL,a,OAAhCra,EAAS,SACf3mB,KAAKmb,qBAAqBuM,UAAU1nB,KAAK+kD,YAAc,iBAAmBp+B,EACtE,UAAalc,OAAe2B,mBAAmB0T,GAAS,mBAAqB9f,KAAK81B,aAAal2B,I,wEAG3GI,KAAKqlD,qBAAuB,K,YAGhC,sBAAI,0BAAW,C,IAAf,WACI,OAAOrlD,KAAKulD,eAAiBvlD,KAAKwlD,cAAgBxlD,KAAK81B,aAAa2vB,S,gCAGxE,sBAAI,4BAAa,C,IAAjB,WACI,OAAOzlD,KAAK81B,aAAa4vB,gBACrB1lD,KAAK81B,aAAa6vB,8BAClB3lD,KAAK81B,aAAaqkB,yBAClBn6C,KAAK81B,aAAa8vB,iBAClB5lD,KAAK81B,aAAa+vB,mBAClB7lD,KAAK81B,aAAagwB,oB,gCAG1B,sBAAI,2BAAY,C,IAAhB,WACI,OAAO9lD,KAAK81B,aAAaiwB,uBAAyB/lD,KAAK81B,aAAakwB,kB,gCAGxE,sBAAI,uCAAwB,C,IAA5B,WACI,OAAOhmD,KAAK81B,aAAa2U,mBAAqBzqC,KAAK81B,aAAamwB,yB,gCAGpE,sBAAI,yBAAU,C,IAAd,WACI,OAAOjmD,KAAK81B,aAAaiwB,sBACrB,eACA,kC,gCAGR,sBAAI,0BAAW,C,IAAf,WACI,IAAIljC,EACJ,QAAQ,GACJ,KAAK7iB,KAAK81B,aAAa4vB,eACnB7iC,EAAQ,gBACR,MACJ,KAAK7iB,KAAK81B,aAAa6vB,8BAAgC3lD,KAAK81B,aAAaqkB,wBACrEt3B,EAAQ,qBACR,MACJ,KAAK7iB,KAAK81B,aAAa8vB,gBACnB/iC,EAAQ,gBACR,MACJ,KAAK7iB,KAAK81B,aAAa+vB,kBACnBhjC,EAAQ,kBACR,MACJ,KAAK7iB,KAAK81B,aAAagwB,mBACnBjjC,EAAQ,gBAGhB,OAAOA,G,iEAzGFqjC,GAA2B,2Q,iCAA3BA,EAA2B,6wCCxBxC,4BACA,gDAsDA,gDACA,6CACA,kB,MAxDqB,qD,6LDmBrB,GAIa,EAAAA,+B,gFExBb,S,gCAKA,2B,OAKI,YAAAhlD,SAAA,WACIqP,SAASsN,KAAK6mC,UAAUC,OAAO,oB,iCAF1BwB,I,iCAAAA,EAAmB,4ECThC,4BACA,gDACA,6CACA,mB,oFDEA,GAIa,EAAAA,uB,68CETb,KAIA,KAKA,KAKA,KACA,KACA,MACA,KAjBA,IAkBA,S,uFClBA,4BACI,+CACI,gDACA,mDACI,kD,mBACA,4DAAsB,a,oBAAoB,iBAC9C,2CACJ,uCACJ,oC,MAJ8D,6EAC5B,mE,4DAIlC,4BACI,iDACI,qDACI,wDAAiC,Y,mBAA4B,iBAC7D,2DACI,gEACI,iEACI,aACJ,iBACA,+DAAG,a,oBAAkC,iBACrC,2DACA,oEACI,sEACI,a,oBACJ,iBACA,sEAEI,a,oBACJ,iBACJ,uDACJ,mDACJ,+CACJ,2CACJ,uCACJ,oC,6BArB6C,yEAIrB,kGAED,gFAGmB,2EACd,gIAEsB,2EAEtB,yIDN5B,iBAWI,WAAoB16B,EAAwB7D,EAChCloB,EAAkCmjB,EAClCzH,EAAgCma,EAChC9b,GAHQ,KAAAgS,SAAwB,KAAA7D,iBAChC,KAAAloB,cAAkC,KAAAmjB,QAClC,KAAAzH,aAAgC,KAAAma,cAChC,KAAA9b,eATZ,KAAA9Y,SAAU,EACV,KAAA8zB,QAAS,E,OAUT,YAAAvzB,SAAA,sBACQklD,GAAQ,EACZpmD,KAAK6iB,MAAMwjC,YAAY1iC,WAAU,SAAM2iC,GAAO,qC,kEAC1C,OAAIF,EACA,KAEJA,GAAQ,EACR,GAAMpmD,KAAKyZ,aAAakrC,OAAO,yB,cAA/B,SACI5lC,EAAsB,MAAdunC,EAAQ1mD,IAA8B,MAAhB0mD,EAAQ5+C,MAAiC,MAAjB4+C,EAAQtlC,OAAkC,MAAjBslC,EAAQxmC,MACvFymC,EAAuB,KACtBxnC,EAAD,OACA,EAAA/e,KAAc,GAAMA,KAAKu1B,YAAYixB,oB,UAArC,EAAK/xB,OAAS,UACVz0B,KAAKy0B,OAAL,aACMtQ,EAAU,IAAI,EAAAsiC,8BACZ3mC,MAAQwmC,EAAQxmC,M,iBAGpB,O,sBADA9f,KAAKi7B,cAAgBj7B,KAAKob,WAAWsrC,0BAA0BJ,EAAQ1mD,GAAIukB,GAC3E,GAAMnkB,KAAKi7B,e,cAAX,SACM0rB,EAAe,CACjBxkD,KAAM,UACNlB,MAAOjB,KAAKN,YAAYO,EAAE,kBAC1B4d,KAAM7d,KAAKN,YAAYO,EAAE,+BACzBwtC,QAAS,KAEbztC,KAAK4nB,eAAeI,SAAS2+B,GAC7B3mD,KAAKyrB,OAAOsc,SAAS,CAAC,W,+BAEtBhpB,GAAQ,EACRwnC,EAAe,EAAEhiD,Q,gCAGrB,SAAMvE,KAAKyZ,aAAamtC,KAAK,sBAAuBN,I,OAApD,SACAtmD,KAAKghB,MAAQslC,EAAQtlC,MACrBhhB,KAAK0H,KAAO4+C,EAAQ5+C,KACH,MAAb1H,KAAK0H,OAEL1H,KAAK0H,KAAO1H,KAAK0H,KAAK9B,QAAQ,MAAO,M,wBAK7CmZ,IACM4nC,EAAe,CACjBxkD,KAAM,QACNlB,MAAO,KACP4c,KAAsB,MAAhB0oC,EAAuBvmD,KAAKN,YAAYO,EAAE,mCAAoCsmD,GAChFvmD,KAAKN,YAAYO,EAAE,+BACvBwtC,QAAS,KAEbztC,KAAK4nB,eAAeI,SAAS2+B,GAC7B3mD,KAAKyrB,OAAOsc,SAAS,CAAC,OAG1B/nC,KAAKW,SAAU,E,gDAjEdkmD,GAAwB,wP,iCAAxBA,EAAwB,itBCxBrC,+BASA,iDAyBA,kB,MAlCgD,+BASzB,4D,gFDWvB,GAIa,EAAAA,4B,68CExBb,KAIA,KAKA,KAKA,KACA,KACA,MACA,KAjBA,IAmBA,S,uFCnBA,4BACI,+CACI,gDACA,mDACI,kD,mBACA,4DAAsB,a,oBAAoB,iBAC9C,2CACJ,uCACJ,oC,MAJ8D,6EAC5B,mE,4DAIlC,4BACI,iDACI,qDACI,wDAAiC,Y,mBAA6B,iBAC9D,2DACI,gEACI,iEACI,aACA,iCAA6B,aAAS,iBAC1C,uDACA,+DAAG,a,oBAAiC,iBACpC,2DACA,oEACI,sEACI,a,oBACJ,iBACA,sEAEI,a,oBACJ,iBACJ,uDACJ,mDACJ,+CACJ,2CACJ,uCACJ,oC,6BAtB6C,0EAIrB,yGAC6B,4CAE9B,gFAGmB,2EACd,gIAEsB,2EAEtB,yIDN5B,iBAWI,WAAoBp7B,EAAwB7D,EAChCloB,EAAkCmjB,EAClCzH,EAAgCma,EAChC9b,GAHQ,KAAAgS,SAAwB,KAAA7D,iBAChC,KAAAloB,cAAkC,KAAAmjB,QAClC,KAAAzH,aAAgC,KAAAma,cAChC,KAAA9b,eATZ,KAAA9Y,SAAU,EACV,KAAA8zB,QAAS,E,OAUT,YAAAvzB,SAAA,sBACQklD,GAAQ,EACZpmD,KAAK6iB,MAAMwjC,YAAY1iC,WAAU,SAAM2iC,GAAO,qC,kEAC1C,OAAIF,EACA,KAEJA,GAAQ,EACR,GAAMpmD,KAAKyZ,aAAakrC,OAAO,mB,cAA/B,SACI5lC,EAAkC,MAA1BunC,EAAQ/jD,gBAAwD,MAA9B+jD,EAAQ7yB,oBAA+C,MAAjB6yB,EAAQxmC,MACxFymC,EAAuB,KACtBxnC,EAAD,OACA,EAAA/e,KAAc,GAAMA,KAAKu1B,YAAYixB,oB,UAArC,EAAK/xB,OAAS,UACVz0B,KAAKy0B,OAAL,aACMtQ,EAAU,IAAI,EAAA2iC,+BACZhnC,MAAQwmC,EAAQxmC,M,iBAIpB,O,sBAFA9f,KAAKi7B,cAAgBj7B,KAAKob,WAAW2rC,2BAA2BT,EAAQ/jD,eACpE+jD,EAAQ7yB,mBAAoBtP,GAChC,GAAMnkB,KAAKi7B,e,cAAX,SACM0rB,EAAe,CACjBxkD,KAAM,UACNlB,MAAOjB,KAAKN,YAAYO,EAAE,kBAC1B4d,KAAM7d,KAAKN,YAAYO,EAAE,sBACzBwtC,QAAS,KAEbztC,KAAK4nB,eAAeI,SAAS2+B,GAC7B3mD,KAAKyrB,OAAOsc,SAAS,CAAC,W,+BAEtBhpB,GAAQ,EACRwnC,EAAe,EAAEhiD,Q,gCAGrB,SAAMvE,KAAKyZ,aAAamtC,KAAK,gBAAiBN,I,OAA9C,SACAtmD,KAAKghB,MAAQslC,EAAQtlC,MACrBhhB,KAAKgnD,QAAUV,EAAQW,iBACH,MAAhBjnD,KAAKgnD,UAELhnD,KAAKgnD,QAAUhnD,KAAKgnD,QAAQphD,QAAQ,MAAO,M,wBAKnDmZ,IACM4nC,EAAe,CACjBxkD,KAAM,QACNlB,MAAO,KACP4c,KAAsB,MAAhB0oC,EAAuBvmD,KAAKN,YAAYO,EAAE,0BAA2BsmD,GACvEvmD,KAAKN,YAAYO,EAAE,sBACvBwtC,QAAS,KAEbztC,KAAK4nB,eAAeI,SAAS2+B,GAC7B3mD,KAAKyrB,OAAOsc,SAAS,CAAC,OAG1B/nC,KAAKW,SAAU,E,gDAlEdumD,GAA2B,wP,iCAA3BA,EAA2B,yuBCzBxC,+BASA,iDA0BA,kB,MAnCgD,+BASzB,4D,gFDYvB,GAIa,EAAAA,+B,8ZEzBb,KACA,KAEA,KACA,KACA,KALA,IAOA,S,2EAEA,cAKI,WAAYz7B,EAAgB/rB,EACxB0b,EAAwBD,G,OACxB,YAAMsQ,EAAQ/rB,EAAa0b,EAAYD,IAAqB,K,OAHjC,O,iCAAtBgsC,GAAa,iJ,iCAAbA,EAAa,wxB,GAAA,MCb1B,+BAAY,2CAAY,EAAAr/B,YACpB,iDACI,qDACI,uDAAiC,Y,mBAAyB,iBAC1D,2DACI,+DACI,mEACI,yEAAmB,a,oBAAyB,iBAC5C,yEAAgE,8DAAhE,iBAEA,0EAAoC,a,oBAAgC,iBACxE,uDACA,2DACA,oEACI,2EACI,6EAA8B,a,oBAAmB,iBACjD,qE,oBACJ,2DACA,sEACI,a,oBACJ,iBACJ,uDACJ,mDACJ,+CACJ,2CACJ,uCACJ,mCACA,mB,4BA3BkC,2CAGW,uEAIF,yEAC6C,+CAE5B,+EAI+B,kDACzD,gDAAwB,kEACG,+EAGjC,mI,mPDV5B,CAImC,iBAAtB,EAAAq/B,iB,yxDEbb,KACA,KAEA,KACA,MACA,MACA,KACA,MACA,KACA,MACA,MACA,KACA,OAEA,OAdA,IAgBA,S,gNAEA,cAKI,WAAY17B,EAAgB/rB,EACxByb,EAA4C1F,EAC5C8f,EAA0Bpc,EAC1B0wB,EAAgCjN,EAChCpjB,EAAgD4tC,EAChD3tC,EAA4B2B,GALhC,MAMI,YAAMqQ,EAAQ/rB,EAAayb,EAAsB1F,EAAkB8f,EAAapc,EAC5E0wB,EAAgBjN,EAAqBpjB,EAAoBC,EAAc2B,IAAW,K,OAHtC,EAAAgsC,gB,SALrB,OAWzB,YAAAlmD,SAAN,W,qGACI,SAAM,YAAMA,SAAQ,Y,OACL,OADf,SACe,GAAMlB,KAAKu1B,YAAYixB,mB,cAAvB,SACX,OACAxmD,KAAKyrB,OAAOsc,SAAS,CAAC,M,cACf,SAAM/nC,KAAKmZ,cAAckuC,U,OAAzB,UACPrnD,KAAKyrB,OAAOsc,SAAS,CAAC,U,wBAG1B/nC,KAAKsnD,mBAAqB,WACtB,IAAM17B,EAAc,EAAKw7B,cAAc56B,iBACnB,MAAhBZ,IAAwD,IAAjCA,EAAYxmB,QAAQ,UAC3C,EAAKmiD,aAAe37B,GAExB,EAAKH,OAAOsc,SAAS,CAAC,EAAKwf,gB,6CAzB1BC,GAAa,qc,iCAAbA,EAAa,kiC,GAAA,MCtB1B,+BAAY,2CAAY,EAAA1/B,YACpB,iDACI,qDACI,uDACI,sDACJ,+CACA,yDAAsC,a,oBAA8B,iBACpE,2DACI,+DACI,mEACI,0EAA4B,a,oBAAuB,iBACnD,wEACI,8EAC8D,uEAD9D,iBAGA,+EACI,wCAAS,EAAA2/B,oB,oBACT,yEAEJ,+DACJ,2DACA,0EACI,a,oBACJ,iBACJ,uDACA,2DACA,oEACI,2EACI,0EACI,yEAAoD,a,oBACxD,iBACA,qE,oBACJ,2DACA,2EAA4E,wCAAS,EAAAzpB,YACjF,a,oBACJ,iBACJ,uDACJ,mDACJ,+CACJ,2CACJ,uCACJ,mCACA,mB,4BA1CkC,2CAMgB,8EAIE,uEAEG,gFACmC,yCAEd,+FAGxC,8FAIR,uKAK+D,kDAEP,wGAEvB,+EAGjC,mI,6PDhB5B,CAImC,iBAAtB,EAAAwpB,iB,yxDEtBb,KACA,KAKA,MACA,OACA,MACA,KACA,MACA,KACA,MACA,MAbA,IAeA,S,gNAEA,cAKI,WAAYE,EAA0Bj8B,EAClC/rB,EAAkCmjB,EAClCgnB,EAAgCpwB,EAChC0B,EAA4C3B,EAC5C8d,EAAsD7W,GAJ1D,MAKI,YAAMinC,EAAaj8B,EACftQ,EAAsBzb,EACtB+Z,EAAcD,EACd8d,EAA2B7W,EAC3BopB,IAAe,K,OARe,EAAAhnB,QASlC,EAAK8kC,0BAA4B,EAAKC,a,SAXV,OAc1B,YAAA1mD,SAAN,W,uFACU2mD,EAAiB7nD,KAAK6iB,MAAMwjC,YAAY1iC,WAAU,SAAM2iC,GAAO,qC,kDAUjE,OATqB,MAAjBA,EAAQtlC,OAAiBslC,EAAQtlC,MAAM5b,QAAQ,MAAQ,IACvDpF,KAAKghB,MAAQslC,EAAQtlC,OAEF,MAAnBslC,EAAQ7pB,QACRz8B,KAAKyZ,aAAamtC,KAAK,gBAAiB,CAAE/jC,MAAO,sBAC3B,MAAfyjC,EAAQ9gB,KACfxlC,KAAKyZ,aAAamtC,KAAK,gBACnB,CAAE/jC,MAAO,gCAAiCyjC,QAAS,CAAEjkB,KAAMikB,EAAQ9gB,OAE3E,GAAM,YAAMtkC,SAAQ,Y,cAApB,SACsB,MAAlB2mD,GACAA,EAAe1C,c,yBAKrB,YAAAyC,aAAN,W,oGACsB,SAAM5nD,KAAKyZ,aAAajb,IAAS,kB,OAC3B,OADlBspD,EAAY,SACM,GAAM9nD,KAAKyZ,aAAajb,IAAS,wB,cAAnDupD,EAAkB,SACP,MAAbD,EAAA,OACA9nD,KAAKyrB,OAAOsc,SAAS,CAAC,uBAAwB,CAAEse,YAAayB,I,qBACnC,MAAnBC,EAAA,OACP/nD,KAAKyrB,OAAOsc,SAAS,CAAC,oBAAqB,CAAEse,YAAa0B,I,cAEpC,SAAM/nD,KAAKyZ,aAAajb,IAAS,kB,cAClC,OADfwpD,EAAgB,UAClB,OACAhoD,KAAKyrB,OAAOsc,SAAS,CAACigB,EAAcnlC,OAAQ,CAAEwjC,YAAa2B,EAAc1B,UACzE,GAAMtmD,KAAKyZ,aAAakrC,OAAO,mB,cAA/B,S,aAEA3kD,KAAKyrB,OAAOsc,SAAS,CAAC/nC,KAAKunD,e,oEA7C9BU,GAAc,0Y,iCAAdA,EAAc,8gD,GAAA,MCrB3B,+BAAY,2CAAY,EAAAngC,YACpB,iDACI,qDACI,oDACA,uDAAsC,a,oBAAoC,iBAC1E,2DACI,+DACI,mEACI,yEAAmB,a,oBAAyB,iBAC5C,0EAAgE,8DAAhE,iBAEJ,uDACA,mEACI,0EAA4B,a,oBAAuB,iBACnD,wEACI,8EAC8D,uEAD9D,iBAGA,+EACI,wCAAS,EAAA2/B,oB,oBACT,yEAEJ,+DACJ,2DACA,0EACI,0EAAsB,a,oBAAkC,iBAC5D,2DACJ,uDACA,oEACI,0EACI,sEADJ,iBAEA,0EAAoD,a,oBAA0B,iBAClF,uDACA,2DACA,oEACI,2EACI,0EACI,yEAAiD,a,oBACrD,iBACA,qE,oBACJ,2DACA,sEAEI,qEAAyD,a,oBAC7D,iBACJ,uDACA,oEACI,sEACI,qEAA8C,a,oBAClD,iBACJ,uDACJ,mDACJ,+CACJ,2CACJ,uCACJ,mCACA,mB,4BAxDkC,2CAIgB,oFAIP,yEAC6C,+CAIpC,sEAEG,gFACmC,yCAEd,+FAGxC,8FAIc,iFAKtB,uDACgD,yEAIe,kDAEV,uGAEpB,+EAEX,2EAEmC,2GAKX,sH,4RD/B1E,CAIoC,kBAAvB,EAAAQ,kB,68CErBb,KACA,KAEA,KACA,MAEA,KACA,KAPA,IASA,S,mFAEA,aAQI,WAAoBx8B,EAAwBrQ,EAChCiZ,EAAiCzM,EACjCloB,GAFQ,KAAA+rB,SAAwB,KAAArQ,aAChC,KAAAiZ,YAAiC,KAAAzM,iBACjC,KAAAloB,c,OAGN,YAAAooB,OAAN,W,gGAKQ,O,uBAHM3D,EAAU,IAAI,EAAA+jC,sBACZlnC,MAAQhhB,KAAKghB,MAAMjd,OAAO/B,cAClChC,KAAKmoB,YAAcnoB,KAAKob,WAAW+sC,yBAAyBhkC,GAC5D,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,4BACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,2BACjED,KAAKyrB,OAAOsc,SAAS,CAAC,M,6FAjBrBqgB,GAAsB,+K,iCAAtBA,EAAsB,ssB,GAAA,MCfnC,+BAAY,2CAAY,EAAAtgC,YACpB,iDACI,qDACI,uDAAiC,Y,mBAA0B,iBAC3D,2DACI,+DACI,+DAAG,a,oBAA8B,iBACjC,mEACI,yEAAmB,a,oBAAyB,iBAC5C,yEAAgE,8DAAhE,iBAEJ,uDACA,2DACA,oEACI,2EACI,0EAAM,a,oBAAmB,iBACzB,qE,oBACJ,2DACA,sEACI,a,oBACJ,iBACJ,uDACJ,mDACJ,+CACJ,2CACJ,uCACJ,mCACA,mB,4BA3BkC,2CAGW,uEAGtB,6EAEoB,wEAC6C,+CAKG,kDACzD,kEAC2B,+EAGjC,mI,mPDR5B,GAIa,EAAAsgC,0B,68CEfb,KACA,KAEA,KACA,MAEA,KACA,MACA,MACA,KATA,IAWA,S,mGAEA,aAUI,WAAoB38B,EAAwBrQ,EAChCiZ,EAAiCzM,EACjCloB,EAAkCyZ,EAClCuuC,GAHQ,KAAAj8B,SAAwB,KAAArQ,aAChC,KAAAiZ,YAAiC,KAAAzM,iBACjC,KAAAloB,cAAkC,KAAAyZ,gBAClC,KAAAuuC,c,OAEN,YAAA5/B,OAAN,W,oGAKoB,O,uBAHN3D,EAAU,IAAI,EAAAkkC,0BACZrP,aAAeh5C,KAAKg5C,aAAapzC,QAAQ,MAAO,IAAI5D,cAC5DmiB,EAAQnD,MAAQhhB,KAAKghB,MAAMjd,OAAO/B,cACtB,GAAMhC,KAAK0nD,YAAY1qB,gBAAgBh9B,KAAK+nB,eAAgB5D,EAAQnD,Q,OACnD,OADvBriB,EAAM,SACZ,EAAAwlB,EAA6B,GAAMnkB,KAAKmZ,cAAc8O,aAAajoB,KAAK+nB,eAAgBppB,I,OAExF,OAFA,EAAQupB,mBAAqB,SAC7BloB,KAAKmoB,YAAcnoB,KAAKob,WAAWktC,qBAAqBnkC,GACxD,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,kBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,2BACjED,KAAKyrB,OAAOsc,SAAS,CAAC,M,6FAtBrBwgB,GAAyB,uP,iCAAzBA,EAAyB,gpC,GAAA,MCjBtC,+BAAY,2CAAY,EAAAzgC,YACpB,iDACI,qDACI,uDAAiC,Y,mBAAkC,iBACnE,2DACI,+DACI,+DAAG,a,oBACC,2BACmB,a,oBAAsB,iBAC7C,uDACA,mEACI,yEAAmB,a,oBAAyB,iBAC5C,0EAAgE,8DAAhE,iBAEJ,uDACA,mEACI,0EAA4B,a,oBAAuB,iBACnD,0EACI,uEADJ,iBAEJ,uDACA,mEACI,0EAA0B,a,oBAA8B,iBACxD,0EACI,qEADJ,iBAEJ,uDACA,2DACA,oEACI,2EACI,0EAAM,a,oBAAmB,iBACzB,qE,oBACJ,2DACA,sEACI,a,oBACJ,iBACJ,uDACJ,mDACJ,+CACJ,2CACJ,uCACJ,mCACA,mB,4BAxCkC,2CAGW,gFAGtB,sHAEoB,qEAGA,wEAC6C,+CAIpC,sEAExB,wDAGsB,6EAEtB,sDAI+D,kDACzD,kEAC2B,+EAGjC,mI,mPDnB5B,GAIa,EAAAygC,6B,yxDEjBb,KACA,KAKA,KACA,MACA,MACA,KACA,MACA,KACA,MACA,MAbA,IAeA,SAGA,SAEA,SACA,S,yKCpBI,gCACI,sDACI,yDACI,8DACI,6DACJ,kDACJ,+CACJ,2CACJ,wC,sBAKgB,0BACI,kEAAI,0EAA2D,iBAC/D,iEAAG,2CAA4B,iBAC/B,oEAAqB,mCAAoB,yBAAG,4BAAY,iBAAI,iBAC5D,mEAAG,kDAAkC,iBACrC,mEAAG,8CAA8B,iBACjC,wEACI,gFACI,8EACI,+EACJ,mEACJ,+DACA,gFACI,8PAEJ,iBACJ,2DACJ,wD,sBACA,0BACI,iEAAG,kCAAmB,iBAC1B,uD,sBACA,0BACI,iEAAG,kCAAmB,iBAC1B,uD,yBAzBR,6BACI,8DACI,qEAkBA,oEAGA,oEAGJ,kDACJ,gD,6BAzBa,6DAkBA,6DAGA,8D,sBAQD,2BAAiD,Y,mBAA0B,kB,MAA1B,wE,sBAGzC,qC,mBAEI,Y,mBACJ,kB,MAHa,8EAET,iL,yBAmBQ,yBACI,Y,mBACJ,kB,8BADI,8N,yBAEJ,yBACI,Y,mBACJ,kB,8BADI,yQ,sBAEJ,yBACI,Y,mBAAoC,kB,MAApC,2I,sBACJ,yBACI,Y,mBAAoC,kB,MAApC,2I,sBACJ,yBACI,Y,mBAAkC,kB,MAAlC,yI,sBACJ,yBACI,Y,mBAA+C,kB,MAA/C,oJ,yBAhBZ,qCACI,Y,mBACA,4BACI,2FAGA,2FAGA,2FAEA,6FAEA,6FAEA,6FAEJ,2EACJ,wE,6BAjBI,iLAEQ,iHAGA,6GAGA,4GAEA,4GAEA,8GAEA,+G,mDA4ChB,6BACI,kFACI,wFACI,0GADJ,iBAEA,wFACI,Y,mBAA2B,oBAC3B,0FACmB,a,oBAA2B,iBAAI,+DAClD,4BACmB,a,oBAA0B,iBACjD,2EACJ,uEACJ,mE,gCATY,wDAEA,6HAEmB,yEAEA,yE,yID7G/D,cAWI,WAAYb,EAA0Bj8B,EAClC/rB,EAA0ByZ,EAC1BiC,EAAgCyH,EAChCpJ,EAA4B0B,EAC5Bmc,EAA8DE,GAJlE,MAKI,YAAMkwB,EAAaj8B,EAAQ/rB,EAAayZ,EAAeiC,EAAY3B,EAAc0B,EAC7Emc,IAA0B,K,OAJE,EAAAzU,QAE8B,EAAA2U,gBAVlE,EAAAgxB,sBAAuB,EACvB,EAAAC,OAAS,G,SAF0B,OAgBnC,YAAAxa,6BAAA,WACI,GAAkC,MAA9BjuC,KAAKguC,sBACL,MAAO,GAGX,IAAInoC,EACJ,OAAQ7F,KAAKguC,sBAAsBE,eAC/B,KAAK,EACDroC,EAAM7F,KAAKN,YAAYO,EAAE,UACzB,MACJ,KAAK,EACD4F,EAAM7F,KAAKN,YAAYO,EAAE,QACzB,MACJ,QACI4F,EAAM7F,KAAKN,YAAYO,EAAE,QAGjC,OAAO4F,EAAM,KAAO7F,KAAKguC,sBAAsBE,cAAgB,KAG7D,YAAAhtC,SAAN,W,+GA6BmB,OA5BT2mD,EAAiB7nD,KAAK6iB,MAAMwjC,YAAY1iC,WAAU,SAAA2iC,GACpD,EAAKoC,cAAgB,IAAI,EAAAC,sBACJ,MAAjBrC,EAAQtlC,OAAiBslC,EAAQtlC,MAAM5b,QAAQ,MAAQ,IACvD,EAAK4b,MAAQslC,EAAQtlC,OAEF,MAAnBslC,EAAQ7pB,QACR,EAAKhjB,aAAamtC,KAAK,gBAAiB,CAAE/jC,MAAO,sBAC3B,MAAfyjC,EAAQ9gB,MACf,EAAKgjB,sBAAuB,EAC5B,EAAKE,cAAclqC,KAAO8nC,EAAQ9gB,IAClC,EAAK/rB,aAAamtC,KAAK,gBACnB,CAAE/jC,MAAO,gCAAiCyjC,QAAS,CAAEjkB,KAAMikB,EAAQ9gB,QAErD,MAAlB8gB,EAAQmC,SACR,EAAKA,OAAS,EAAKC,cAAcD,OAASnC,EAAQmC,QAE7B,MAArBnC,EAAQsC,UACR,EAAKF,cAAc9oD,GAAK0mD,EAAQsC,UAEhC,EAAKF,cAAc9oD,IAAM,KAAO2Q,SAASs4C,QAAQ7iD,MAAM,gBAAgB8iD,MAAM9iD,MAAM,KAAK+iD,QAE9D,KAA1B,EAAKL,cAAc9oD,KACnB,EAAK8oD,cAAc9oD,GAAK,MAEN,MAAlBioD,GACAA,EAAe1C,iBAGR,GAAMnlD,KAAKyZ,aAAajb,IAAS,kB,UAClC,OADRwqD,EAAS,UACX,Y,iBAEqB,O,sBAAA,GAAMhpD,KAAKob,WAAW6tC,mBAAmBD,EAAOzmD,eAAgBymD,EAAOlpC,MACpFkpC,EAAOhoC,MAAOgoC,EAAOv1B,qB,cACJ,OAFf4R,EAAW,UAEJliC,OACH+lD,EAAe7jB,EAASliC,KAAKmE,KAAI,SAAA2N,GAAK,WAAI,EAAA64B,WAAW74B,MAC3DjV,KAAKqlC,SAAW6jB,EAAa5hD,KAAI,SAAA2N,GAAK,WAAI,EAAA44B,OAAO54B,O,iDAKxC,MAAjBjV,KAAKqlC,SAAL,OACA,EAAArlC,KAA6B,GAAMA,KAAKw3B,cAAcuW,+BAA+B/tC,KAAKqlC,Y,OAA1F,EAAK2I,sBAAwB,S,mCAI/B,YAAAlmB,OAAN,W,0FACI,OAAkC,MAA9B9nB,KAAKguC,uBACJhuC,KAAKw3B,cAAcuX,uBAAuB/uC,KAAKmvC,oBAAqBnvC,KAAK+nB,eACtE/nB,KAAKguC,uBAMb,GAAM,YAAMlmB,OAAM,aALd9nB,KAAKmb,qBAAqBud,UAAU,QAAS14B,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,2CACvB,K,cAGJ,S,6CA3FKkpD,GAAiB,yX,iCAAjBA,EAAiB,y6E,GAAA,MC3B9B,4BACI,uDASA,oDAAY,2CAAY,EAAArhC,YACpB,qDACI,4DA4BA,2DACI,+DACI,mEACI,uEACA,uEACI,4EACI,0FAIA,gFACI,sFAAmB,a,oBAAyB,iBAC5C,sFAAgE,8DAAhE,iBAGA,sFAAoC,a,oBAA6B,iBACrE,mEACA,gFACI,sFAAkB,a,oBAAqB,iBACvC,sFAA8D,6DAA9D,iBAEA,sFAAoC,a,oBAAyB,iBACjE,mEACA,gFACI,+FAmBA,sFAA4B,a,oBAAuB,iBACnD,oFACI,wFACI,8FAEI,uEAA4B,2BAAU,EAAAknB,4BAF1C,iBAIA,8GACA,+EACJ,2EACA,qFACI,+FAEI,wCAAS,EAAAyY,gBAAe,M,oBACxB,yFAEJ,+EACA,uFACJ,2EACJ,uEACA,sFAAoC,a,oBAA2B,iBACnE,mEACA,gFACI,sFAAkC,a,oBAA6B,iBAC/D,oFACI,0FAEI,8EAFJ,iBAGA,2FACiD,wCAAS,EAAAA,gBAAe,M,oBACrE,qFAEJ,4EACJ,wEACJ,oEACA,kFACI,wFAAkB,c,qBAA2B,iBAC7C,wFAA8D,6DAA9D,iBACA,wFAAoC,c,qBAA+B,iBACvE,oEACA,sFAaA,yEACA,kFACI,yFAEI,wFAAM,c,qBAAmB,iBACzB,mF,qBAEJ,wEACA,oFACI,c,qBACJ,iBACJ,oEACJ,gEACJ,4DACJ,wDACJ,oDACJ,gDACJ,4CACJ,wCACJ,oCACA,oB,4BA5JoB,yDACO,6DASW,0DAEP,6CA4Bd,kFAEQ,kFACgC,8CAIA,2DAIF,wEAC6C,+CAAmB,6BAG/C,4EAGlB,oEAC4C,8CAAkB,6BAE5C,wEAGX,4DAmBG,sEAGO,gFAEvB,yCAEmB,2DAA6B,eAKhD,+FAGI,8FAKoB,0EAGF,4EAEG,gFAE7B,gDAEA,+FAEI,8FAKM,2EAC4C,8CAC1B,+EAEhB,gDAgBhB,kDACM,mEAC2B,gFAIjC,4J,uWD1HxC,CAIuC,qBAA1B,EAAA0B,qB,8ZE3Bb,KACA,KAKA,KACA,MACA,KACA,MACA,MACA,KACA,MACA,MACA,KAdA,IAgBA,S,wKCXgB,4BACI,0D,mBACA,Y,mBACJ,kB,MAFqC,6EACjC,iH,yBAQY,yBACI,Y,mBACJ,kB,8BADI,sM,yBAEJ,yBACI,Y,mBACJ,kB,8BADI,iP,sBAEJ,yBACI,Y,mBAAoC,kB,MAApC,+H,sBACJ,yBACI,Y,mBAAoC,kB,MAApC,+H,sBACJ,yBACI,Y,mBAAkC,kB,MAAlC,6H,sBACJ,yBACI,Y,mBAA+C,kB,MAA/C,wI,yBAhBZ,qCACI,Y,mBACA,4BACI,+EAGA,+EAGA,+EAEA,iFAEA,iFAEA,iFAEJ,+DACJ,4D,8BAjBI,yJAEQ,iHAGA,6GAGA,4GAEA,4GAEA,8GAEA,+G,4GAlBpB,6BACI,0EAAyB,Y,mBAAoC,iBAC7D,kEACI,iFAmBA,yEAA4B,a,oBAAuB,iBACnD,wEACI,4EACI,kFAEI,0GAA4B,4FAFhC,iBAIA,kGACA,mEACJ,+DACA,yEACI,mFACiD,6FAAwB,M,oBACrE,6EAEJ,mEACA,2EACJ,+DACJ,2DACA,0EAAoC,a,oBAA2B,iBACnE,uDACA,oEACI,0EAAkC,a,oBAA6B,iBAC/D,wEACI,8EAEI,gHAFJ,iBAGA,+EACI,6FAAwB,M,oBACxB,yEAEJ,+DACJ,2DACJ,uDACA,oEACI,0EAAkB,a,oBAA2B,iBAC7C,0EAA8D,gGAA9D,iBACA,0EAAoC,a,oBAA+B,iBACvE,uDACA,2DACA,oEACI,2EACI,oE,oBACA,0EAAM,a,oBAAmB,iBAC7B,2DACA,2EAA4E,yFACxE,a,oBACJ,iBACJ,uDACJ,mD,mDAtE6B,kFAEI,4DAmBG,sEAGO,gFAEvB,yCAEmB,2DAA6B,eAKhD,+FAEI,8FAKoB,0EAGF,4EAEG,gFAE7B,+CAC4C,+FAGxC,8FAKM,0EAC4C,8CAC1B,8EAI+B,kDAC9B,+EAC3B,kEAGN,kIDzD5B,kBAKI,WAAY/tC,EAAwB1b,EAChCyZ,EAA8B1D,EAC9B8f,EAA0B+B,EAC1Bnc,EAA4Cqc,EAA8B/L,EAC1EsW,EAA0Blf,G,OAC1B,YAAMnjB,EAAayZ,EAAe1D,EAAkB8f,EAAa+B,EAC7Dnc,EAAsBqc,EAAe/L,EAAQrQ,EAAY2mB,EAAalf,IAAM,K,OAP9C,O,iCAA7BumC,GAAoB,ga,iCAApBA,EAAoB,+7CCxBjC,+BAAY,2CAAY,EAAAthC,YACpB,iDACI,qDACI,uDAAiC,Y,mBAA8B,iBAC/D,2DACI,iEAIA,mEAwEJ,+CACJ,2CACJ,uCACJ,mCACA,mB,MArFkC,2CAGW,2EAEM,kDAIZ,qD,8RDWvC,CAI0C,wBAA7B,EAAAshC,wB,yxDExBb,KACA,KAKA,KACA,MACA,OACA,KACA,MACA,KACA,MACA,MAbA,IAeA,S,yICVgB,4BACI,0D,mBACA,Y,mBACJ,kB,MAFqC,6EACjC,iH,mDAEJ,4BACI,6DAAG,Y,mBAAsC,iBACzC,iEACI,wEAAwB,Y,oBAAmC,iBAC3D,0EACI,sGADJ,iBAEJ,uDACA,2DACA,oEACI,2EACI,0EACI,yEAAiD,a,oBACrD,iBACA,oE,oBACJ,2DACA,sEACI,a,oBACJ,iBACJ,uDACJ,mD,mDAlBO,mFAEyB,iFAEpB,oDAI+D,kDAEV,uGAEpB,+EAGjC,kIDR5B,IAEA,cAKI,WAAY1B,EAA0Bj8B,EAClC/rB,EAA0BmjB,EAC1BgnB,EAAgCpwB,EAChC0B,EAA4CC,EAC5CqF,EACA6W,GALJ,MAMI,YAAMowB,EAAaj8B,EAAQ/rB,EAAamjB,EAAOgnB,EAAgBpwB,EAAc0B,EACzEC,EAAYqF,EAAuB6W,IAA0B,K,OACjE,EAAK+xB,YAAc5+C,OAAOyqC,SAASoU,OAAS,sBAC5C,EAAK/rB,SAAW,M,SAVU,OAaxB,YAAAr8B,SAAN,W,uFACI,YAAMA,SAAQ,WACR2mD,EAAiB7nD,KAAK6iB,MAAMwjC,YAAY1iC,WAAU,SAAM2iC,GAAO,qC,+DACvC,MAAtBA,EAAQrb,WAAR,OACAjrC,KAAKirC,WAAaqb,EAAQrb,W,cAED,SAAMjrC,KAAK6pC,eAAerrC,IAzBtC,qB,OA0BW,OADlB+qD,EAAmB,YAErBvpD,KAAKirC,WAAase,G,wBAGJ,MAAlB1B,GACAA,EAAe1C,c,yBAKrB,YAAAr9B,OAAN,W,0FACI,SAAM9nB,KAAK6pC,eAAe+c,KArCL,mBAqCgC5mD,KAAKirC,a,cAA1D,SACsB,YAAlBjrC,KAAKu9B,WACLhtB,SAASs4C,OAAS,qBAAqB7oD,KAAKN,YAAYO,EAAE,cAAa,oBAE3E,YAAM6nB,OAAM,W,6CAnCP0hC,GAAY,kY,iCAAZA,EAAY,u0BCvBzB,+BAAY,2CAAY,EAAA1hC,YACpB,iDACI,qDACI,oDACA,yDACI,iEAIA,mEAoBJ,+CACJ,2CACJ,uCACJ,mCACA,mB,MAjCoD,sDAKb,iDAIA,mD,iODUvC,CAIkC,gBAArB,EAAA0hC,gB,68CETb,YAEA,Q,4EAIA,aAmBI,WAAsB9B,EAAoCj8B,EAC5C/rB,EAAoCmjB,EACpCgnB,EAA0CpwB,EAC1C0B,EAAsDC,EACtDqF,EACA6W,GALQ,KAAAowB,cAAoC,KAAAj8B,SAC5C,KAAA/rB,cAAoC,KAAAmjB,QACpC,KAAAgnB,iBAA0C,KAAApwB,eAC1C,KAAA0B,uBAAsD,KAAAC,aACtD,KAAAqF,wBACA,KAAA6W,4BAtBd,KAAAmyB,WAAY,EASF,KAAAC,eAAiB,MACjB,KAAAnC,aAAe,OACf,KAAAoC,oBAAsB,e,OAa1B,YAAAzoD,SAAN,W,uFACU2mD,EAAiB7nD,KAAK6iB,MAAMwjC,YAAY1iC,WAAU,SAAM2iC,GAAO,qC,iEAC7C,MAAhBA,EAAQjvC,MAAiC,MAAjBivC,EAAQjjC,MAAhC,MACqB,GAAMrjB,KAAK6pC,eAAerrC,IAAY,EAAAwT,iBAAiBwB,qB,OAC9D,OADR4pB,EAAe,SACP,GAAMp9B,KAAK6pC,eAAerrC,IAAY,EAAAwT,iBAAiByB,c,OACrE,OADM4P,EAAQ,SACd,GAAMrjB,KAAK6pC,eAAe8a,OAAO,EAAA3yC,iBAAiBwB,qB,OAClD,OADA,SACA,GAAMxT,KAAK6pC,eAAe8a,OAAO,EAAA3yC,iBAAiByB,c,cAAlD,SACoB,MAAhB6yC,EAAQjvC,MAAgC,MAAhB+lB,GAAiC,MAAT/Z,GAAiBrjB,KAAK4pD,WAAWvmC,EAAOijC,EAAQjjC,OAChG,GAAMrjB,KAAK+8B,MAAMupB,EAAQjvC,KAAM+lB,EAAcp9B,KAAK6pD,yBAAyBvD,EAAQjjC,SADnF,M,OACA,S,oCAEuB,MAApBijC,EAAQ/oB,UAA2C,MAAvB+oB,EAAQ+C,aAAwC,MAAjB/C,EAAQjjC,OACjD,MAAzBijC,EAAQwD,gBACR9pD,KAAKqpD,YAAc/C,EAAQ+C,YAC3BrpD,KAAKqjB,MAAQijC,EAAQjjC,MACrBrjB,KAAK8pD,cAAgBxD,EAAQwD,cAC7B9pD,KAAKu9B,SAAW+oB,EAAQ/oB,U,wBAEN,MAAlBsqB,GACAA,EAAe1C,c,yBAKrB,YAAAr9B,OAAN,SAAaiiC,EAAoBC,G,gGAEzB,OADJhqD,KAAKiqD,uBAAyBjqD,KAAKkqD,cAC/B,GAAMlqD,KAAKiqD,wB,cAAX,SACqB,GAAMjqD,KAAKmqD,kBAAkBJ,EAAWC,IAD7D,M,OACMI,EAAe,SACrBpqD,KAAKmb,qBAAqBuM,UAAU0iC,EAAc,CAAEC,YAAY,I,mCAIlE,YAAAH,YAAN,W,0FACI,OAAuB,MAAnBlqD,KAAKirC,YAA0C,KAApBjrC,KAAKirC,YAChCjrC,KAAKmb,qBAAqBud,UAAU,QAAS14B,KAAKN,YAAYO,EAAE,uBAC5DD,KAAKN,YAAYO,EAAE,0BAChB,CAAP,GAAO,IAEJ,GAAMD,KAAKob,WAAWkvC,eAAetqD,KAAKirC,a,OAAjD,MAAO,CAAP,EAAO,kBAGK,YAAAkf,kBAAhB,SAAkCJ,EAAoBC,G,mHAC9CF,EAAgB9pD,KAAK8pD,cACrBzmC,EAAQrjB,KAAKqjB,MAEXknC,EAAuB,CACzBpoD,KAAM,WACNhE,OAAQ,GACRqsD,WAAW,EACXC,WAAW,EACXC,SAAS,EACTC,SAAS,GAGQ,MAAjBb,EAAA,MACqB,GAAM9pD,KAAKs3B,0BAA0BuB,iBAAiB0xB,I,OAClD,OADnBntB,EAAe,SACI,GAAMp9B,KAAKygB,sBAAsBQ,KAAKmc,EAAc,W,OAE7E,OAFMwtB,EAAmB,SACzBd,EAAgB,EAAArkD,MAAMsH,mBAAmB69C,GACzC,GAAM5qD,KAAK6pC,eAAe+c,KAAK,EAAA50C,iBAAiBwB,mBAAoB4pB,I,OAApE,S,wBAGS,MAAT/Z,EAAA,MACQ,GAAMrjB,KAAKs3B,0BAA0BuB,iBAAiB0xB,I,OAA9DlnC,EAAQ,SACJ0mC,IACA1mC,GAAS,eAAe0mC,EAAS,K,iBAQzC,OAHA1mC,GAAS,eAAerjB,KAAKirC,WAG7B,GAAMjrC,KAAK6pC,eAAe+c,KAAK,EAAA50C,iBAAiByB,YAAa4P,I,cAA7D,SAEI+mC,EAAepqD,KAAKob,WAAWyvC,gBAAhB7qD,gCACAA,KAAKu9B,SAAW,iBAAmBnxB,mBAAmBpM,KAAKqpD,aAD3DrpD,sDAGJqjB,EAAQ,mBAAqBymC,EAHzB9pD,+DAKEoM,mBAAmBpM,KAAKirC,YAEzC+e,EACuB,GAAMhqD,KAAKob,WAAW0vC,wBAD7C,M,OACMC,EAAiB,SACvBX,GAAgB,oBAAoBh+C,mBAAmB2+C,G,iBAG3D,MAAO,CAAP,EAAOX,WAGG,YAAArtB,MAAd,SAAoB1lB,EAAc+lB,EAAsB4tB,G,kGACpDhrD,KAAKypD,WAAY,E,iBAGI,O,sBADjBzpD,KAAKmoB,YAAcnoB,KAAK0nD,YAAYvqB,SAAS9lB,EAAM+lB,EAAcp9B,KAAKqpD,aACrD,GAAMrpD,KAAKmoB,a,cAAtBvnB,EAAW,UACJy/B,WACTrgC,KAAKmb,qBAAqB2Z,WAAW,6BACU,MAA3C90B,KAAKirD,mCACLjrD,KAAKirD,qCAELjrD,KAAKyrB,OAAOsc,SAAS,CAAC/nC,KAAK0pD,gBAAiB,CACxCrD,YAAa,CACTpb,WAAY+f,EACZE,IAAK,U,OARjB,M,cAYOtqD,EAAS+/B,qBAChB3gC,KAAKmb,qBAAqB2Z,WAAW,0CACe,MAAhD90B,KAAKmrD,wCACLnrD,KAAKmrD,0CAELnrD,KAAKyrB,OAAOsc,SAAS,CAAC/nC,KAAK2pD,qBAAsB,CAC7CtD,YAAa,CACTpb,WAAY+f,K,OAPjB,M,OAYgB,SAAMhrD,KAAK6pC,eAAerrC,IAAa,EAAAwT,iBAAiBI,oB,OAC/E,OADMg5C,EAAiB,SACvB,GAAMprD,KAAKyZ,aAAamtC,KAAK,EAAA50C,iBAAiBI,oBAAqBg5C,I,OAAnE,SAC8B,MAA1BprD,KAAKqrD,mBACLrrD,KAAKqrD,oBAETrrD,KAAKmb,qBAAqB2Z,WAAW,iBACC,MAAlC90B,KAAK2nD,0BACL3nD,KAAK2nD,4BAEL3nD,KAAKyrB,OAAOsc,SAAS,CAAC/nC,KAAKunD,e,wEAIvCvnD,KAAKypD,WAAY,E,YAGb,YAAAI,yBAAR,SAAiCxmC,GAC7B,GAAIA,QACA,OAAO,KAGX,IAAMioC,EAAajoC,EAAMrd,MAAM,gBAC/B,OAAOslD,EAAWntD,OAAS,EAAImtD,EAAW,GAAK,MAG3C,YAAA1B,WAAR,SAAmBvmC,EAAeumC,GAC9B,GAAIvmC,QACA,OAAO,EAEX,GAAIumC,QACA,OAAO,EAGX,IAAM0B,EAAajoC,EAAMrd,MAAM,gBACzBulD,EAAkB3B,EAAW5jD,MAAM,gBACzC,OAAOslD,EAAW,KAAOC,EAAgB,I,iCAlLpC/B,GAAY,kY,iCAAZA,I,EAAb,GAAa,EAAAA,gB,yxDCpBb,WAYA,GALA,KAKA,QAEA,QAYA,GARA,KACA,MACA,MACA,KACA,KACA,MACA,MAEA,Q,uKCjBwB,wBACI,Y,mBAAqC,kB,MAArC,wH,yBACJ,wBACI,Y,mBACJ,kB,8BADI,qK,mDAOI,2BAAyB,yFAAmB,MAExC,Y,mBACJ,iB,iCAHmD,4CAE/C,wK,yBAHR,+BACI,8EAIJ,+D,8BAHQ,mF,mDAbhB,6BAEI,qEAEA,qEAGA,sEACI,4EAAkC,Y,oBAA6B,iBAC/D,8EAA8D,iGAA9D,iBAEA,gFAMJ,2DACJ,gE,gCAhBO,0FAEA,kFAImC,2EAC4B,+CAErC,mF,mDAQjC,6BACI,oEAAuB,Y,mBAA0B,iBACjD,iEACA,sEACI,6EAAkC,a,oBAA6B,iBAC/D,8EAAkE,iGAAlE,iBAEJ,2DACJ,gE,gCAP2B,uEAGe,2EACgC,gD,sBAKtE,2BACI,mE,mBAEA,2EAAsB,Y,mBAAoB,iBAC9C,2D,MAHgD,6EAEtB,kE,sBAE1B,6BACI,wEAAuB,Y,mBAAsB,iBAC7C,qEACJ,oE,MAF2B,oE,yBAP/B,6BACI,sEAKA,gFAIJ,gE,6BAT2B,gDAKT,gD,sBAKlB,6BAEI,sEACI,wEACJ,0DACJ,gE,sBACA,sB,yBAAuD,8D,mDAEvD,6BACI,wEACI,oGADJ,iBAEA,wEAA+C,Y,mBAAuB,iBAC1E,sD,gCAFQ,kDAC2C,qE,sBAEnD,6BACI,iEAAG,Y,mBAA+B,iBAClC,iEAAG,Y,mBAAgC,iBACvC,gE,MAFO,4EACA,8E,yBAIH,gCAGI,wEACI,uEAAiD,Y,mBACrD,iBACA,mE,mBACJ,4D,8CAPmE,mCAIV,wGAEpB,8E,sDD3C7D,cAOI,WAAY9B,EAA0Bj8B,EAClC/rB,EAA0B0b,EAC1BD,EAA4C1B,EAC5CD,EAAgDhE,EAChDq0B,EAAgChnB,GAJpC,MAKI,YAAM6kC,EAAaj8B,EAAQ/rB,EAAa0b,EAAYD,EAAsB1Q,OAAQ+O,EAC9EC,EAAcowB,EAAgBhnB,IAAM,K,OAHQ,EAAArN,2BAIhD,EAAKmyC,0BAA4B,EAAKC,a,SAVN,OAapC,YAAA4D,cAAA,sBACUz1C,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBAChEX,EAAQvW,KAAKyrD,sBAAsBt1C,gBAAgBJ,GAASK,SAC5Dwf,EAAiBrf,EAAMZ,KAAgC,EAAA+1C,0BACzD1rD,KAAKyrD,uBAET71B,EAAe+1B,mBAAmBhoC,WAAU,SAAOib,GAA+B,qC,kDAG9E,OAFAroB,EAAMU,QACNjX,KAAK4rD,qBAAuBhtB,EAC5B,GAAM5+B,KAAK0K,Q,cAAX,S,cAEJkrB,EAAei2B,kBAAkBloC,WAAU,WACvCpN,EAAMU,YAIR,YAAA2wC,aAAN,W,oGACsB,SAAM5nD,KAAKyZ,aAAajb,IAAS,kB,OAC3B,OADlBspD,EAAY,SACM,GAAM9nD,KAAKyZ,aAAajb,IAAS,wB,cAAnDupD,EAAkB,SACP,MAAbD,EAAA,OACA9nD,KAAKyrB,OAAOsc,SAAS,CAAC,uBAAwB,CAAEse,YAAayB,I,qBACnC,MAAnBC,EAAA,OACP/nD,KAAKyrB,OAAOsc,SAAS,CAAC,oBAAqB,CAAEse,YAAa0B,I,cAEpC,SAAM/nD,KAAKyZ,aAAajb,IAAS,kB,cAClC,OADfwpD,EAAgB,UAClB,OACAhoD,KAAKyrB,OAAOsc,SAAS,CAACigB,EAAcnlC,OAAQ,CAAEwjC,YAAa2B,EAAc1B,UACzE,GAAMtmD,KAAKyZ,aAAakrC,OAAO,mB,cAA/B,S,aAEA3kD,KAAKyrB,OAAOsc,SAAS,CAAC/nC,KAAKunD,cAAe,CACtClB,YAAa,CACTpb,WAAYjrC,KAAKirC,c,oEA5C5B6gB,GAAkB,8X,iCAAlBA,EAAkB,uD,OAAA,K,yBACY,EAAAt1B,kB,4lECjC3C,+BAAY,2CAAY,EAAA1O,YACpB,iDACI,qDAEI,uDAAiC,YAAS,iBAC1C,0DACI,+DACI,+EAmBA,+EASA,8EAWA,8EAMA,mEAEA,qEAKA,+EAIA,2DACA,oEACI,8EAQA,sEACI,a,oBACJ,iBACJ,uDACA,oEACI,sEAAyB,wCAAS,EAAA0jC,mBAAiB,a,oBAAoC,iBAC3F,uDACJ,mDACJ,+CACJ,2CACJ,uCACJ,mCACA,wFACA,8CACA,mB,4BAvFkC,2CAGtB,oKACiC,4CAIrB,yIAkBU,oFASA,gFAWA,yIAOV,2FACoB,iEAKV,iEAON,oNAQA,iIAI+C,qF,wTDlD3E,CAIwC,sBAA3B,EAAAM,sB,8ZEhCb,KACA,KAEA,MACA,KACA,KALA,IAOA,S,sHCGgB,0BAAqD,4GAEjD,6DACA,8DAAI,YAAU,iBACd,YACJ,iB,0BAHS,sFACD,2CACJ,kGDHpB,kBAKI,WAAYpE,EAA0Bj8B,EAClC/rB,EAA0Byb,G,OAC1B,YAAMusC,EAAaj8B,EAAQ/rB,EAAayb,EAAsB1Q,SAAO,K,OAH9B,O,iCAAlCihD,GAAyB,kJ,iCAAzBA,EAAyB,+yBCftC,4BACI,iDACI,qDACI,yDACI,4DAAiD,Y,oBAA2B,iBAC5E,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,+DAMA,6DAAwE,wCAAS,EAAAK,aAC7E,gEAAI,a,oBAA8B,iBAClC,a,oBACJ,iBACJ,+CACA,4DACI,mEAA6E,a,oBAAkB,iBACnG,+CACJ,2CACJ,uCACJ,mCACA,mB,MAvBiE,yEACQ,mFAKhC,oDAOjB,6EACJ,2HAIyE,mE,wGDX7F,CAI+C,6BAAlC,EAAAL,6B,8ZEfb,IAEA,cAGI,WAAY1qC,EAAekH,GAA3B,MACI,cAAO,K,OACP,EAAKA,mBAAqBA,EAC1B,EAAKlH,MAAQA,E,EAErB,OAR2C,OAQ3C,EARA,CAFA,MAE2ChN,6BAA9B,EAAAg4C,yB,8ECAb,iBACI,KAAA3rB,WAAqB,EACrB,KAAAM,qBAA+B,EAC/B,KAAAF,mBAA6E,MAHpE,EAAAL,c,68CCFb,KAIA,KAKA,KAEA,KACA,KACA,KAbA,IAeA,S,kDAEA,aAKI,WAAoB3U,EAAwB7D,EAChCloB,EAAkCmjB,EAClCzH,EAAgCma,GAFxB,KAAA9J,SAAwB,KAAA7D,iBAChC,KAAAloB,cAAkC,KAAAmjB,QAClC,KAAAzH,aAAgC,KAAAma,c,OAE5C,YAAAr0B,SAAA,sBACQklD,GAAQ,EACZpmD,KAAK6iB,MAAMwjC,YAAY1iC,WAAU,SAAM2iC,GAAO,qC,kDAC1C,GAAIF,EACA,U,GAEJA,GAAQ,EACc,MAAlBE,EAAQ3/B,QAAmC,MAAjB2/B,EAAQxmC,MAAlC,Y,iBAEI,O,sBAAA,GAAM9f,KAAKob,WAAW6wC,4BAClB,IAAI,EAAAC,mBAAmB5F,EAAQ3/B,OAAQ2/B,EAAQxmC,S,OACpC,OAFf,SAEe,GAAM9f,KAAKu1B,YAAYixB,mB,cAAvB,SAEX,GAAMxmD,KAAKob,WAAWysB,wBADtB,M,OACA,S,iBAIJ,OAFA7nC,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,kBACjED,KAAKyrB,OAAOsc,SAAS,CAAC,MACtB,I,2CAGR/nC,KAAK4nB,eAAeI,SAAS,QAAS,KAAMhoB,KAAKN,YAAYO,EAAE,wBAC/DD,KAAKyrB,OAAOsc,SAAS,CAAC,M,gDA1BrBokB,GAAyB,oN,iCAAzBA,EAAyB,kUCrBtC,4BACI,+CACI,gDACA,mDACI,kD,mBACA,4DAAsB,a,oBAAoB,iBAC9C,2CACJ,uCACJ,mCACA,mB,MAL8D,6EAC5B,oE,uCDYlC,GAIa,EAAAA,6B,68CErBb,KAIA,KAKA,KACA,MAEA,KACA,KAbA,IAeA,S,2EAEA,aAWI,WAAoB1gC,EAAwBrQ,EAChCiZ,EAAiCzM,EACjCloB,EAAkCmjB,GAF1B,KAAA4I,SAAwB,KAAArQ,aAChC,KAAAiZ,YAAiC,KAAAzM,iBACjC,KAAAloB,cAAkC,KAAAmjB,Q,OAG9C,YAAA3hB,SAAA,sBACQklD,GAAQ,EACZpmD,KAAK6iB,MAAMwjC,YAAY1iC,WAAU,SAAM2iC,GAAO,qC,2BAC1C,OAAIF,IAGJA,GAAQ,EACc,MAAlBE,EAAQ3/B,QAAmC,MAAjB2/B,EAAQxmC,OAAkC,MAAjBwmC,EAAQtlC,OAC3DhhB,KAAK2mB,OAAS2/B,EAAQ3/B,OACtB3mB,KAAK8f,MAAQwmC,EAAQxmC,MACrB9f,KAAKghB,MAAQslC,EAAQtlC,OAErBhhB,KAAKyrB,OAAOsc,SAAS,CAAC,OARtB,cAaN,YAAAjgB,OAAN,W,gGAIQ,O,sBAFM3D,EAAU,IAAI,EAAAioC,2BAA2BpsD,KAAK2mB,OAAQ3mB,KAAK8f,OACjE9f,KAAKmoB,YAAcnoB,KAAKob,WAAWixC,8BAA8BloC,GACjE,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,qBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAWhoB,KAAKN,YAAYO,EAAE,kBACvDD,KAAKN,YAAYO,EAAE,uBACvBD,KAAKyrB,OAAOsc,SAAS,CAAC,M,6FArCrBukB,GAA4B,qN,iCAA5BA,EAA4B,wiB,GAAA,MCrBzC,+BAAY,2CAAY,EAAAxkC,YACpB,iDACI,qDACI,uDAAiC,Y,mBAA0B,iBAC3D,2DACI,+DACI,2EAA4B,a,oBAAiC,iBAC7D,iEACI,wEAAQ,aAAS,iBACrB,uDACA,+DAAG,a,oBAAqC,iBACxC,2DACA,mEACI,2EACI,0EAAM,a,oBAA0B,iBAChC,qE,oBACJ,2DACA,sEACI,a,oBACJ,iBACJ,uDACJ,mDACJ,+CACJ,2CACJ,uCACJ,mCACA,mB,4BA1BkC,2CAGW,uEAGG,gFAEhB,4CAET,oFAGmE,kDACxD,yEAC2B,+EAGjC,mI,iJDD5B,GAIa,EAAAwkC,gC,68CErBb,WAmBA,GAZA,KAEA,KACA,MAEA,KACA,MACA,KACA,KACA,MACA,KAEA,QACA,SAQA,QACA,SACA,S,0LChBA,6BACI,0C,mBACA,mDAAsB,Y,mBAAoB,iBAC9C,4C,MAFgD,6EACtB,kE,sBAItB,wBAAuC,Y,mBAAgC,kB,MAAhC,8E,mDAI/B,yBACI,0DACI,gEAAyB,2GAAkB,YAAU,iBACzD,kDACA,6DACI,mEACI,2E,oBAEI,qEACJ,2DACA,wEACI,0EAA+C,4GAC3C,yEACA,a,oBACJ,iBACA,0EAA2D,6GACvD,yEACA,a,oBACJ,iBACJ,2DACJ,uDACJ,mDACJ,+C,0BApBmD,2CAKQ,qFAMvC,wIAIA,yI,mDApB5B,+BACwE,+FACpE,qDACI,6DAuBJ,0CACJ,sC,yDA1BI,yCAA4B,wCAEpB,0C,yBANhB,6BAEI,iDACA,sDA4BJ,4C,kBA7BO,8CACyC,8C,kCDWhD,iBAoBI,WAAoBlxC,EAAgCyH,EACxCuU,EAA8C5hB,EAC9C6e,EAAiCzM,EACjCloB,EAAkCyb,EAClCoa,EAAkC6E,GAJ1B,KAAAhf,aAAgC,KAAAyH,QACxC,KAAAuU,oBAA8C,KAAA5hB,2BAC9C,KAAA6e,YAAiC,KAAAzM,iBACjC,KAAAloB,cAAkC,KAAAyb,uBAClC,KAAAoa,cAAkC,KAAA6E,gBAhB9C,KAAAz5B,SAAU,EAMA,KAAA4rD,WAAY,EACZ,KAAA3xB,SAAW,IAEb,KAAA4xB,sBAAwB,EACxB,KAAAj2C,MAAwB,K,OAQ1B,YAAArV,SAAN,W,qFACIlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,+DAElD,OADA1jB,KAAKuC,eAAiBmhB,EAAOnhB,eAC7B,GAAMvC,KAAK6Z,Q,cAAX,SACMguC,EAAiB7nD,KAAK6iB,MAAMwjC,YAAY1iC,WAAU,SAAM2iC,GAAO,qC,kCACjEtmD,KAAKktB,WAAao5B,EAAQp9C,OACJ,MAAlB2+C,GACAA,EAAe1C,c,sCAMzB,YAAAtrC,KAAN,W,2GACyB,SAAM7Z,KAAKu1B,YAAYwf,gBAAgB/0C,KAAKuC,iB,cAA5C,SAEJ43C,wBACF,GAAMn6C,KAAKob,WAAW0kC,eAAe9/C,KAAKuC,iBADrD,M,cACA3B,EAAW,S,aAEA,SAAMZ,KAAKob,WAAWqxC,sB,OAAjC7rD,EAAW,S,iBAII,OAFbwG,EAAcxG,EAASuC,KAAKgF,QAAO,SAAA4F,GAAK,OAAAA,EAAExL,iBAAmB,EAAKA,kBAAgB+E,KAAI,SAAAJ,GACxF,WAAI,EAAAyb,WAAW,IAAI,EAAA8D,eAAevf,OACtC,EAAAlH,KAAmB,GAAMA,KAAKo3B,kBAAkB4oB,YAAY54C,I,cAA5D,EAAKA,YAAc,SACnBpH,KAAK4/C,cACL5/C,KAAKW,SAAU,E,YAGnB,YAAA+rD,SAAA,WACI,GAAK1sD,KAAKoH,eAAepH,KAAKoH,YAAYjJ,QAAU6B,KAAK46B,UAAzD,CAGA,IAAM+xB,EAAc3sD,KAAK4sD,iBAAiBzuD,OACtC0uD,EAAY7sD,KAAK46B,SACD,IAAhB+xB,GAAqB3sD,KAAKwsD,sBAAwBxsD,KAAK46B,WACvDiyB,EAAY7sD,KAAKwsD,uBAEjBxsD,KAAKoH,YAAYjJ,OAASwuD,IAC1B3sD,KAAK4sD,iBACD5sD,KAAK4sD,iBAAiBrf,OAAOvtC,KAAKoH,YAAYnF,MAAM0qD,EAAaA,EAAcE,KAEvF7sD,KAAKwsD,sBAAwBxsD,KAAK4sD,iBAAiBzuD,OACnD6B,KAAKusD,UAAYvsD,KAAK4sD,iBAAiBzuD,OAAS6B,KAAK46B,WAGzD,YAAA9V,KAAA,SAAKtd,GAAL,WACsB,MAAdxH,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK8sD,gBAAgB32C,gBAAgBJ,GAASK,SAC3D,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAAo3C,2BAA4B/sD,KAAK8sD,iBAErCl3B,EAAerzB,eAAiBvC,KAAKuC,eACrCqzB,EAAepC,aAA6B,MAAdhsB,EAAqBA,EAAW5H,GAAK,KACnEg2B,EAAeo3B,kBAAkBrpC,WAAU,WACvC,EAAKpN,MAAMU,QACX,EAAK4C,UAET+b,EAAeq3B,oBAAoBtpC,WAAU,WACzC,EAAKpN,MAAMU,QACX,EAAKi2C,iBAAiB1lD,MAG1BxH,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,SAIrB,YAAAugC,IAAA,WACI92C,KAAK8kB,KAAK,OAGR,YAAAkW,OAAN,SAAaxzB,G,0FACS,SAAMxH,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,gCAAiCuH,EAAWE,KAC/D1H,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,Y,OACzD,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAIP,O,sBAAA,GAAMD,KAAKob,WAAW+xC,iBAAiBntD,KAAKuC,eAAgBiF,EAAW5H,K,cAAvE,SACAI,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,uBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,sBAAuBuH,EAAWE,OACnG1H,KAAKktD,iBAAiB1lD,G,4DAI9B,YAAAuoC,MAAA,SAAMvoC,GAAN,WACsB,MAAdxH,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKotD,cAAcj3C,gBAAgBJ,GAASK,SACzD,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAAk7B,qBAAsB7wC,KAAKotD,eAE/Bx3B,EAAerzB,eAAiBvC,KAAKuC,eACrCqzB,EAAeoa,OAAS,aACxBpa,EAAesa,SAAW1oC,EAAW5H,GACrCg2B,EAAey3B,WAAa7lD,EAAWE,KAEvCkuB,EAAe2Z,cAAc5rB,WAAU,WACnC,EAAK9J,OACL,EAAKtD,MAAMU,WAEfjX,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,SAIf,YAAAqpC,YAAN,W,0EACI5/C,KAAK4sD,iBAAmB,GACxB5sD,KAAK0sD,W,WAGT,YAAAY,YAAA,WACI,OAAOttD,KAAKo6B,cAAcmzB,aAAavtD,KAAKktB,aAGhD,YAAAsgC,SAAA,WACI,IAAMC,EAAYztD,KAAKstD,cAIvB,OAHIG,GAAaztD,KAAKusD,WAClBvsD,KAAK4/C,eAED6N,GAAaztD,KAAKoH,aAAepH,KAAKoH,YAAYjJ,OAAS6B,KAAK46B,UAGpE,YAAAsyB,iBAAR,SAAyB1lD,GACrB,IAAMkmD,EAAQ1tD,KAAKoH,YAAYhC,QAAQoC,GACnCkmD,GAAS,IACT1tD,KAAKoH,YAAYumD,OAAOD,EAAO,GAC/B1tD,KAAK4/C,gB,iCA9JJC,GAAoB,oY,iCAApBA,EAAoB,mE,OAAA,M,yBACC,EAAArpB,kB,yBACM,EAAAA,mB,w9CCtCxC,4BACI,8CAAI,Y,mBAAwB,iBAC5B,iDACI,mDACI,4DAAoC,a,oBAAmB,iBACvD,6DACI,mE,oBADJ,iBAEJ,2CACA,0DAAkE,wCAAS,EAAAsgB,SACvE,oDACA,a,oBACJ,iBACJ,uCACJ,mCACA,0DAIA,0D,sBAgCA,uFACA,uFACA,mB,MAnDQ,qEAGwC,iEACkC,oFAClE,qCAIJ,wGAIE,8CAKV,gJ,yMDaJ,GAIa,EAAA+I,wB,68CEpCb,WAiBA,GATA,KACA,MAEA,KACA,MACA,KACA,KACA,KAEA,QAEA,SACA,SAGA,Q,uICdY,6BACI,uD,mBACA,+DAAsB,Y,mBAAoB,iBAC9C,+C,MAFgD,6EACtB,kE,mDAgBd,6BACI,6EAAsB,yFAAmB,MACrC,Y,mBACJ,iBACA,6EAAsB,yFAAmB,MACrC,Y,mBACJ,iBACJ,0D,MALQ,0IAGA,6I,sBAIZ,0BACI,Y,mBACJ,kB,MADI,gI,sBAmBY,6BACI,+E,mBAEA,uFAAsB,Y,mBAAgC,iBAC1D,gF,MAHyC,yFAEf,8E,mDAVlC,yBACI,6EAAgC,4GAC5B,oFAAuB,6FAAvB,iBAEJ,kEACA,6EAAI,4GACA,YACA,wCAKJ,mEACA,+EACI,sFAAuB,mGAAvB,iBAEJ,mEACA,+EACI,sFAAuB,8FAAvB,iBAEJ,mEACJ,+D,oCAnBuD,wEAAxB,kCAAuB,wBAI9C,8HACc,gDAQV,8EADmB,wCAA6B,oCAIJ,yEAAzB,mCAAwB,qC,yBA5B/D,+BACI,qEACI,sEACI,0EAAI,gBAAM,iBACV,0EAAI,a,oBAAiB,iBACrB,+EAAoC,a,oBAA0B,iBAC9D,+EAAoC,a,oBAAqB,iBAC7D,+DACJ,2DACA,uEACI,+EAsBJ,2DACJ,wD,8BA7BgB,gEACgC,wEACA,mEAIpC,iD,yBAzBhB,6BACI,iEACI,Y,mBACA,gCAQJ,sDACA,oEAGA,yEAkCJ,6D,8BA/CQ,gIACqB,8DASpB,gEAG4C,+D,mDA1BzD,6BACI,8DACI,oEAAkB,Y,mBAAiB,iBACnC,oEAA8D,gGAA9D,iBAEJ,kDACA,gEACI,sEAAwB,a,oBAAuB,iBAC/C,sEAA0E,sGAA1E,iBACA,sEAAoC,a,oBAA2B,iBACnE,mDACA,4EAkDJ,+C,gCA3D0B,8DAC4C,8CAItC,qEACkD,oDACtC,0EAE1B,oD,mDA2DV,mCAAiC,yF,mBAG7B,+DACA,+D,mBAEJ,sD,mDALI,oEAAoD,mCAA8B,gCAE7C,gDAEjC,6EADyC,mCD9DrE,iBAsBI,WAAoBzkC,EAAgC1b,EACxC20B,EAAiCzM,EACjCzM,EAAoDhC,EACpDoc,GAHQ,KAAAna,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAAzM,uBAAoD,KAAAhC,gBACpD,KAAAoc,cAlBF,KAAAy3B,kBAAoB,IAAI,EAAAjqC,aACxB,KAAAkqC,oBAAsB,IAAI,EAAAlqC,aAEpC,KAAApiB,SAAU,EACV,KAAAg4B,UAAoB,EACpB,KAAAi1B,cAAwB,EAIxB,KAAAC,OAA0B,G,OAWpB,YAAA3sD,SAAN,W,+GACyB,SAAMlB,KAAKu1B,YAAYwf,gBAAgB/0C,KAAKuC,iB,cAA3DuzB,EAAe,SACrB91B,KAAK4tD,aAAe93B,EAAasU,UACjCpqC,KAAK24B,SAAW34B,KAAKW,QAA+B,MAArBX,KAAKwzB,aAChCxzB,KAAK4tD,aACkB,GAAM5tD,KAAKob,WAAW0yC,UAAU9tD,KAAKuC,iBAD5D,M,OACMwrD,EAAiB,SACvB/tD,KAAK6tD,OAASE,EAAe5qD,KAAKmE,KAAI,SAAAJ,GAAK,OAAAA,KAAGs1B,KAAK,EAAA/2B,MAAM0J,gBAAgBnP,KAAKN,YAAa,S,iBAEjF,OAAd,EAAAM,KAAc,GAAMA,KAAKmZ,cAAcE,UAAUrZ,KAAKuC,iB,UAAtD,EAAKw4C,OAAS,UAEV/6C,KAAK24B,SAAL,aACA34B,KAAK24B,UAAW,EAChB34B,KAAKiB,MAAQjB,KAAKN,YAAYO,EAAE,kB,iBAET,O,sBAAA,GAAMD,KAAKob,WAAW4yC,qBAAqBhuD,KAAKuC,eAAgBvC,KAAKwzB,e,OAC5E,OADNhsB,EAAa,SACnB,EAAAxH,KAAY,GAAMA,KAAKmZ,cAAcG,cAAc,IAAI,EAAA/E,aAAa/M,EAAWE,MAAO1H,KAAK+6C,S,cAA3F,EAAKrzC,KAAO,SACZ1H,KAAKwiB,WAAahb,EAAWgb,WACJ,MAArBhb,EAAWqmD,QAAkB7tD,KAAK6tD,OAAO1vD,OAAS,GAClDqJ,EAAWqmD,OAAOzpD,SAAQ,SAAA+rC,GACtB,IAAM8d,EAAQ,EAAKJ,OAAO1lD,QAAO,SAAA+lD,GAAK,OAACA,EAAE5d,WAAa4d,EAAEtuD,KAAOuwC,EAAEvwC,MACpD,MAATquD,GAAiBA,EAAM9vD,OAAS,IAC/B8vD,EAAM,GAAWryB,SAAU,EAC3BqyB,EAAM,GAAWxrC,SAAW0tB,EAAE1tB,SAC9BwrC,EAAM,GAAWvrC,cAAgBytB,EAAEztB,kB,+DAMpD1iB,KAAKiB,MAAQjB,KAAKN,YAAYO,EAAE,iB,0BAGpCD,KAAK6tD,OAAOzpD,SAAQ,SAAA8pD,GACZA,EAAE5d,YACD4d,EAAUtyB,SAAU,MAI7B57B,KAAKW,SAAU,E,YAGnB,YAAA4vC,MAAA,SAAM2d,EAAkBzyB,GAChByyB,EAAE5d,YAGL4d,EAAUtyB,QAAoB,MAAVH,GAAmByyB,EAAUtyB,QAAUH,EACtDyyB,EAAUtyB,UACXsyB,EAAUzrC,UAAW,EACrByrC,EAAUxrC,eAAgB,KAInC,YAAAmY,UAAA,SAAUY,GAAV,WACIz7B,KAAK6tD,OAAOzpD,SAAQ,SAAA8pD,GAAK,SAAK3d,MAAM2d,EAAGzyB,OAGrC,YAAA3T,OAAN,W,kGACI,GAAmB,MAAf9nB,KAAK+6C,OACL,MAAM,IAAIp5C,MAAM,4CAIJ,OADVwiB,EAAU,IAAI,EAAAgqC,kBACpB,EAAAhqC,EAAgB,GAAMnkB,KAAKmZ,cAAcktB,QAAQrmC,KAAK0H,KAAM1H,KAAK+6C,S,OAAjE,EAAQrzC,KAAQ,SAA0DgN,gBAC1EyP,EAAQ3B,WAAaxiB,KAAKwiB,WAC1B2B,EAAQ0pC,OAAS7tD,KAAK6tD,OAAO1lD,QAAO,SAAA+lD,GAAK,OAACA,EAAUtyB,UAAYsyB,EAAE5d,aAC7DhpC,KAAI,SAAA4mD,GAAK,WAAI,EAAAtsB,yBAAyBssB,EAAEtuD,KAAOsuD,EAAUzrC,WAAayrC,EAAUxrC,kB,iBAQjF,O,sBALI1iB,KAAK24B,SACL34B,KAAKmoB,YAAcnoB,KAAKob,WAAWgzC,cAAcpuD,KAAKuC,eAAgBvC,KAAKwzB,aAAcrP,GAEzFnkB,KAAKmoB,YAAcnoB,KAAKob,WAAWizC,eAAeruD,KAAKuC,eAAgB4hB,GAE3E,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQh1B,KAAK24B,SAAW,oBAAsB,uBAC/E34B,KAAK4nB,eAAeI,SAAS,UAAW,KACpChoB,KAAKN,YAAYO,EAAED,KAAK24B,SAAW,qBAAuB,sBAAuB34B,KAAK0H,OAC1F1H,KAAKgtD,kBAAkBt2C,O,4DAIzB,YAAAskB,OAAN,W,0FACI,OAAKh7B,KAAK24B,SAIQ,GAAM34B,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,gCAAiCD,KAAK0H,KACzD1H,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,YALrD,I,OAMJ,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAKP,O,sBADAD,KAAKsuD,cAAgBtuD,KAAKob,WAAW+xC,iBAAiBntD,KAAKuC,eAAgBvC,KAAKwzB,cAChF,GAAMxzB,KAAKsuD,e,cAAX,SACAtuD,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,uBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,sBAAuBD,KAAK0H,OAC7F1H,KAAKitD,oBAAoBv2C,O,6FAzHxBq2C,GAA0B,qQ,iCAA1BA,EAA0B,0tE,GAAA,MC7BvC,4BACI,iDACI,wDAAkC,2CAAY,EAAAjlC,YAC1C,yDACI,4DAAoD,aAAS,iBAC7D,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,6DAIA,+DA8DA,2DACI,mEACI,6D,oBACA,kEAAM,a,oBAAiB,iBAC3B,mDACA,mEACyB,a,oBAAmB,iBAC5C,gEACI,0EAOJ,mDACJ,+CACJ,2CACJ,uCACJ,mCACA,mB,4BA7FgE,0DAEI,4CACK,oFAIrC,8CAIA,+CA+DqC,kDACpB,+EAC3B,gEAGe,kEAGkB,iD,8RD3D3D,GAIa,EAAAilC,8B,8EEzBb,MAKI,SAAYvlD,GAFZ,KAAAqmD,OAAqC,GAGf,MAAdrmD,IAGJxH,KAAK0H,KAAOF,EAAWE,KAAOF,EAAWE,KAAKgN,gBAAkB,KAChE1U,KAAKwiB,WAAahb,EAAWgb,aAVxB,EAAA2rC,qB,68CCJb,KAIA,KAEA,KAEA,KACA,KACA,KAEA,OAZA,I,wGCmBA,6BACI,2C,mBACA,mDAAsB,Y,mBAAoB,iBAC9C,4C,MAFgD,6EACtB,kE,sBAGtB,wBAAqC,Y,mBAA2B,kB,MAA3B,yE,yBAa7B,yBACI,0DAAI,Y,mBAA0B,iBAC9B,0DACI,2DACA,oEAAsB,aAAuB,iBACjD,mDACA,4DACI,qEAA8B,aAAc,iBAChD,mDACA,0DACJ,gD,uBATQ,wEAEG,6EAA0C,4DACvB,+DAGhB,4DAAwB,+CAE9B,qE,yBArBhB,+BACI,qDACI,sDACI,6DAAqC,Y,mBAAsB,iBAC3D,8DACI,qEAAsB,a,oBAAmB,iBAC7C,mDACA,+DAAqC,a,oBAAiB,iBACtD,+DAAyB,a,oBAAkB,iBAC/C,+CACJ,2CACA,uDACI,+DAWJ,2CACJ,wC,8BArBiD,mEAEX,iEAEW,+DACZ,iEAIzB,iD,mDAaZ,mCACI,0FAAoB,MACpB,+C,mBACA,oDAAM,Y,mBAAqB,iBAC/B,sC,oDAJiB,2CAA4B,gCAER,6EAC3B,mE,yBA9Bd,6BACI,kDACA,wDAyBA,wDAKJ,4C,6BA/BO,gEAC8B,8DA0BsC,yD,uCDlC3E,aAkBI,WAAoB/yC,EAAgCyH,EACxC0U,EAAoC73B,EACpCkoB,EAAwC2N,EACxC9J,GAHQ,KAAArQ,aAAgC,KAAAyH,QACxC,KAAA0U,eAAoC,KAAA73B,cACpC,KAAAkoB,iBAAwC,KAAA2N,cACxC,KAAA9J,SAhBZ,KAAA9qB,SAAU,EACV,KAAA4rC,QAAS,EASD,KAAAwE,kBAAoB,IAAI/hC,IACxB,KAAAgiC,cAAgB,IAAIhiC,I,OAOtB,YAAA9N,SAAN,W,qFACIlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,0DAE7B,OADrB1jB,KAAKuC,eAAiBmhB,EAAOnhB,eACR,GAAMvC,KAAKu1B,YAAYwf,gBAAgB/0C,KAAKuC,iB,OACjE,OAAoB,OADduzB,EAAe,WACQA,EAAawU,WAIpC2G,EAAejxC,KAAKu3B,aAAahK,wBACvCvtB,KAAK8tB,MAAQmjB,EAAa,GAC1BjxC,KAAKytB,IAAMwjB,EAAa,GACxB,GAAMjxC,KAAK6Z,UANP7Z,KAAKyrB,OAAOsc,SAAS,CAAC,iBAAkB/nC,KAAKuC,iBAC7C,K,cAKJ,S,yBAIF,YAAAsX,KAAN,W,qGACqB,SAAM7Z,KAAKob,WAAW00B,qBAAqB9vC,KAAKuC,iB,OAMjE,OANiB,SACRY,KAAKiB,SAAQ,SAAAc,GAClB,IAAMwC,EAAiB,MAAVxC,EAAEwC,MAAkC,KAAlBxC,EAAEwC,KAAK3D,OAAgBmB,EAAE8b,MAAQ9b,EAAEwC,KAClE,EAAKspC,cAAc9hC,IAAIhK,EAAEtF,GAAI,CAAE8H,KAAMA,EAAMsZ,MAAO9b,EAAE8b,QACpD,EAAK+vB,kBAAkB7hC,IAAIhK,EAAEyhB,OAAQ,CAAEjf,KAAMA,EAAMsZ,MAAO9b,EAAE8b,WAEhE,GAAMhhB,KAAKkxC,YAAW,I,cAAtB,SACAlxC,KAAKusC,QAAS,E,YAGZ,YAAA2E,WAAN,SAAiBC,G,6GACb,GAA2B,MAAvBnxC,KAAKoxC,gBAA8C,MAApBpxC,KAAKqxC,YACpC,UAGAC,EAAkB,KACtB,IACIA,EAAQtxC,KAAKu3B,aAAavJ,kBAAkBhuB,KAAK8tB,MAAO9tB,KAAKytB,KAC/D,MAAO5sB,GAGL,OAFAb,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,qBACvB,IAGJD,KAAKW,SAAU,E,iBAUA,O,sBAPL+oB,EAAU1pB,KAAKob,WAAWmzC,sBAAsBvuD,KAAKuC,eAAgB+uC,EAAM,GAAIA,EAAM,GACvFH,EAAgB,KAAOnxC,KAAKwxC,mBAC5BL,EACAnxC,KAAKoxC,eAAiB1nB,EAEtB1pB,KAAKqxC,YAAc3nB,EAEZ,GAAMA,G,cAAjB9oB,EAAW,S,iDAGfZ,KAAKwxC,kBAAoB5wC,EAAS4wC,kBAC5B1lB,EAASlrB,EAASuC,KAAKmE,KAAI,SAAAJ,GAC7B,IAAMyf,EAA2B,MAAlBzf,EAAEwqC,aAAuBxqC,EAAEyf,OAASzf,EAAEwqC,aAC/CC,EAAY,EAAKpa,aAAalJ,aAAannB,GAC3CkpC,EAAiB,MAAVzpB,GAAkB,EAAKoqB,kBAAkB1S,IAAI1X,GACtD,EAAKoqB,kBAAkBvyC,IAAImoB,GAAU,KACzC,MAAO,CACHpiB,QAASotC,EAAUptC,QACnBqqB,QAAS+iB,EAAU/iB,QACnBC,QAAS8iB,EAAU9iB,QACnBlI,OAAQA,EACRirB,SAAkB,MAARxB,EAAeA,EAAK1oC,KAAO,EAAKhI,YAAYO,EAAE,WACxD4xC,UAAmB,MAARzB,EAAeA,EAAKpvB,MAAQ,GACvC4S,KAAM1sB,EAAE0sB,KACRke,GAAI5qC,EAAE6qC,UACN5vC,KAAM+E,EAAE/E,UAIXgvC,GAAgC,MAAfnxC,KAAK8rB,QAAkB9rB,KAAK8rB,OAAO3tB,OAAS,EAC9D6B,KAAK8rB,OAAS9rB,KAAK8rB,OAAOyhB,OAAOzhB,GAEjC9rB,KAAK8rB,OAASA,EAGlB9rB,KAAKW,SAAU,EACfX,KAAKqxC,YAAc,KACnBrxC,KAAKoxC,eAAiB,K,6CAnGjBod,GAAe,wP,iCAAfA,EAAe,2zC,GAAA,MCrB5B,4BACI,8CAAI,Y,mBAAsB,iBAC1B,iDACI,qDACI,4DAAmC,a,oBAAsB,iBACzD,6DACyC,8D,oBADzC,iBAEA,4DAAmB,iBAAC,iBACpB,6DAAiC,a,oBAAoB,iBACrD,6DACuC,4D,oBADvC,iBAEJ,2CACA,4DACI,wCAAS,EAAAtd,YAAW,MACpB,qDACA,a,oBACJ,iBACJ,uCACJ,mCACA,2DAIA,2DAiCA,mB,6BAvDQ,oEAGuC,qEAE/B,uFAAqC,gCAER,mEAE7B,qFAAmC,8BAEvB,6DAA+B,gCAEG,mFAClD,kGAIE,8CAIA,+C,kKDNd,GAIa,EAAAsd,mB,68CErBb,WAuBA,GAhBA,KAKA,KACA,MAEA,KACA,KACA,KACA,MACA,KAIA,OAEA,QACA,SACA,S,kLCbA,6BACI,0C,mBACA,mDAAsB,Y,mBAAoB,iBAC9C,4C,MAFgD,6EACtB,kE,sBAGtB,wBAAkC,Y,mBAA2B,kB,MAA3B,yE,mDAI1B,yBACI,0DACI,gEAAyB,2GAAkB,YAAU,iBACzD,kDACA,6DACI,mEACI,2E,oBAEI,qEACJ,2DACA,wEACI,0EAA+C,4GAC3C,yEACA,a,oBACJ,iBACA,0EAA2D,6GACvD,yEACA,a,oBACJ,iBACJ,2DACJ,uDACJ,mDACJ,+C,0BApBmD,2CAKQ,qFAMvC,wIAIA,yI,mDApB5B,+BACwE,+FACpE,qDACI,6DAuBJ,0CACJ,sC,yDA1BI,yCAA4B,wCAEpB,0C,yBALhB,6BACI,iDACA,sDA4BJ,4C,kBA7BO,8CACyC,8C,kCDShD,iBAoBI,WAAoBpzC,EAAgCyH,EACxCnjB,EAAkC8V,EAClC6e,EAAiCzM,EACjCzM,EAAoDoa,EACpD9J,EAAwB2O,GAJhB,KAAAhf,aAAgC,KAAAyH,QACxC,KAAAnjB,cAAkC,KAAA8V,2BAClC,KAAA6e,YAAiC,KAAAzM,iBACjC,KAAAzM,uBAAoD,KAAAoa,cACpD,KAAA9J,SAAwB,KAAA2O,gBAhBpC,KAAAz5B,SAAU,EAMA,KAAA4rD,WAAY,EACZ,KAAA3xB,SAAW,IAEb,KAAA6zB,iBAAmB,EACnB,KAAAl4C,MAAwB,K,OAQ1B,YAAArV,SAAN,W,qFACIlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,iEAE7B,OADrB1jB,KAAKuC,eAAiBmhB,EAAOnhB,eACR,GAAMvC,KAAKu1B,YAAYwf,gBAAgB/0C,KAAKuC,iB,OACjE,OAAoB,OADduzB,EAAe,WACQA,EAAasU,UAI1C,GAAMpqC,KAAK6Z,SAHP7Z,KAAKyrB,OAAOsc,SAAS,CAAC,iBAAkB/nC,KAAKuC,iBAC7C,K,cAEJ,SACMslD,EAAiB7nD,KAAK6iB,MAAMwjC,YAAY1iC,WAAU,SAAM2iC,GAAO,qC,kCACjEtmD,KAAKktB,WAAao5B,EAAQp9C,OACJ,MAAlB2+C,GACAA,EAAe1C,c,sCAMzB,YAAAtrC,KAAN,W,kGACqB,SAAM7Z,KAAKob,WAAW0yC,UAAU9tD,KAAKuC,iB,cAAhD3B,EAAW,UACXitD,EAA0B,MAAjBjtD,EAASuC,MAAgBvC,EAASuC,KAAKhF,OAAS,EAAIyC,EAASuC,KAAO,IAC5Eq5B,KAAK,EAAA/2B,MAAM0J,gBAAgBnP,KAAKN,YAAa,SACpDM,KAAK6tD,OAASA,EACd7tD,KAAK4/C,cACL5/C,KAAKW,SAAU,E,YAGnB,YAAA+rD,SAAA,WACI,GAAK1sD,KAAK6tD,UAAU7tD,KAAK6tD,OAAO1vD,QAAU6B,KAAK46B,UAA/C,CAGA,IAAM+xB,EAAc3sD,KAAK0uD,YAAYvwD,OACjC0uD,EAAY7sD,KAAK46B,SACD,IAAhB+xB,GAAqB3sD,KAAKyuD,iBAAmBzuD,KAAK46B,WAClDiyB,EAAY7sD,KAAKyuD,kBAEjBzuD,KAAK6tD,OAAO1vD,OAASwuD,IACrB3sD,KAAK0uD,YAAc1uD,KAAK0uD,YAAYnhB,OAAOvtC,KAAK6tD,OAAO5rD,MAAM0qD,EAAaA,EAAcE,KAE5F7sD,KAAKyuD,iBAAmBzuD,KAAK0uD,YAAYvwD,OACzC6B,KAAKusD,UAAYvsD,KAAK0uD,YAAYvwD,OAAS6B,KAAK46B,WAGpD,YAAA9V,KAAA,SAAKmpC,GAAL,WACsB,MAAdjuD,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK8sD,gBAAgB32C,gBAAgBJ,GAASK,SAC3D,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAAg5C,sBAAuB3uD,KAAK8sD,iBAEhCl3B,EAAerzB,eAAiBvC,KAAKuC,eACrCqzB,EAAerC,QAAmB,MAAT06B,EAAgBA,EAAMruD,GAAK,KACpDg2B,EAAeg5B,aAAajrC,WAAU,WAClC,EAAKpN,MAAMU,QACX,EAAK4C,UAET+b,EAAei5B,eAAelrC,WAAU,WACpC,EAAKpN,MAAMU,QACX,EAAK63C,YAAYb,MAGrBjuD,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,SAIrB,YAAAugC,IAAA,WACI92C,KAAK8kB,KAAK,OAGR,YAAAkW,OAAN,SAAaizB,G,0FACS,SAAMjuD,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,2BAA4BguD,EAAMvmD,KACrD1H,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,Y,OACzD,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAIP,O,sBAAA,GAAMD,KAAKob,WAAW2zC,YAAY/uD,KAAKuC,eAAgB0rD,EAAMruD,K,cAA7D,SACAI,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,kBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,iBAAkBguD,EAAMvmD,OACzF1H,KAAK8uD,YAAYb,G,4DAIzB,YAAAle,MAAA,SAAMke,GAAN,WACsB,MAAdjuD,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKotD,cAAcj3C,gBAAgBJ,GAASK,SACzD,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAAk7B,qBAAsB7wC,KAAKotD,eAE/Bx3B,EAAerzB,eAAiBvC,KAAKuC,eACrCqzB,EAAeoa,OAAS,QACxBpa,EAAesa,SAAW+d,EAAMruD,GAChCg2B,EAAey3B,WAAaY,EAAMvmD,KAElCkuB,EAAe2Z,cAAc5rB,WAAU,WACnC,EAAKpN,MAAMU,WAEfjX,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,SAIf,YAAAqpC,YAAN,W,0EACI5/C,KAAK0uD,YAAc,GACnB1uD,KAAK0sD,W,WAGT,YAAAY,YAAA,WACI,OAAOttD,KAAKo6B,cAAcmzB,aAAavtD,KAAKktB,aAGhD,YAAAsgC,SAAA,WACI,IAAMC,EAAYztD,KAAKstD,cAIvB,OAHIG,GAAaztD,KAAKusD,WAClBvsD,KAAK4/C,eAED6N,GAAaztD,KAAK6tD,QAAU7tD,KAAK6tD,OAAO1vD,OAAS6B,KAAK46B,UAG1D,YAAAk0B,YAAR,SAAoBb,GAChB,IAAMP,EAAQ1tD,KAAK6tD,OAAOzoD,QAAQ6oD,GAC9BP,GAAS,IACT1tD,KAAK6tD,OAAOF,OAAOD,EAAO,GAC1B1tD,KAAK4/C,gB,iCA3JJoP,GAAe,yX,iCAAfA,EAAe,uD,OAAA,M,yBACM,EAAAx4B,kB,yBACM,EAAAA,mB,w9CCnCxC,4BACI,8CAAI,Y,mBAAmB,iBACvB,iDACI,mDACI,4DAAoC,a,oBAAmB,iBACvD,6DACI,mE,oBADJ,iBAEJ,2CACA,0DAAkE,wCAAS,EAAAsgB,SACvE,oDACA,a,oBACJ,iBACJ,uCACJ,mCACA,0DAIA,0D,sBA+BA,uFACA,uFACA,mB,MAlDQ,gEAGwC,iEACkC,oFAClE,qCAIJ,mGAIE,8CAIA,sI,yMDWd,GAIa,EAAAkY,mB,68CEjCb,WAgBA,GARA,KACA,MAEA,KACA,MACA,KACA,KAEA,QACA,SACA,SACA,S,wHCVY,6BACI,uD,mBACA,+DAAsB,Y,mBAAoB,iBAC9C,+C,MAFgD,6EACtB,kE,mDAoBlB,6BACI,yEAAsB,yFAAmB,MACrC,Y,mBACJ,iBACA,yEAAsB,yFAAmB,MACrC,Y,mBACJ,iBACJ,sD,MALQ,kIAGA,qI,sBAqBR,0BACI,Y,mBACJ,kB,MADI,qI,mDAYI,yBACI,6EAAgC,4GAC5B,oFAAuB,6FAAvB,iBAEJ,kEACA,6EAAI,4GACA,YACJ,iBACA,8EACI,sFAAuB,mGAAvB,iBAEJ,mEACA,+EACI,sFAAuB,8FAAvB,iBAEJ,mEACJ,+D,oCAduD,4EAAxB,kCAIvB,0HAII,kFADmB,wCAA6B,uBAIJ,6EAAzB,mCAAwB,wB,yBAvB/D,+BACI,qEACI,sEACI,0EAAI,gBAAM,iBACV,0EAAI,a,oBAAiB,iBACrB,+EAAoC,a,oBAA0B,iBAC9D,+EAAoC,a,oBAAqB,iBAC7D,+DACJ,2DACA,uEACI,8EAiBJ,2DACJ,wD,8BAxBgB,gEACgC,wEACA,mEAIpC,sD,yBAdhB,6BACI,oEAGA,wEA6BJ,4D,8BAhCS,0EAG4C,yE,uFA/CzD,6BACI,8DACI,oEAAkB,Y,mBAAiB,iBACnC,oEAA8D,gGAA9D,iBACJ,kDACA,gEACI,sEAAwB,a,oBAAuB,iBAC/C,sEAA0E,sGAA1E,iBACA,sEAAoC,a,oBAA2B,iBACnE,mDACA,+DACI,oEACI,a,oBACA,4B,oBAEI,qEACJ,2DACJ,uDACA,uEAQJ,mDACA,gEACI,oEACI,0EACI,kGADJ,iBAEA,0EACI,a,oBACJ,iBACJ,uDACA,oEACI,0EACI,kGADJ,iBAEA,0EACI,a,oBACJ,iBACJ,uDACJ,mDACA,2EAkCJ,+C,gCA3E0B,+DAC4C,8CAGtC,sEACkD,oDACtC,0EAIhC,oIACkC,wFAKjB,+FASD,qFAGZ,gDAEA,8IAKA,gDAEA,yJAIE,2D,mDA2CV,mCAAiC,yF,mBAG7B,+DACA,+D,mBAEJ,sD,mDALI,oEAAoD,mCAA8B,gCAE7C,gDAEjC,6EADyC,mCDhFrE,iBAoBI,WAAoB5zC,EAAgC1b,EACxC20B,EAAiCzM,EACjCwP,EAA8Cjc,GAFtC,KAAAC,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAAwP,oBAA8C,KAAAjc,uBAfhD,KAAAyzC,aAAe,IAAI,EAAA7rC,aACnB,KAAA8rC,eAAiB,IAAI,EAAA9rC,aAE/B,KAAApiB,SAAU,EACV,KAAAg4B,UAAoB,EAIpB,KAAAs2B,OAA6B,WAC7B,KAAA7nD,YAAgC,G,OAQ1B,YAAAlG,SAAN,W,uGAEI,OADAlB,KAAK24B,SAAW34B,KAAKW,QAA0B,MAAhBX,KAAKuzB,QACpC,GAAMvzB,KAAKo6C,mB,UAAX,UAEIp6C,KAAK24B,SAAL,YACA34B,KAAK24B,UAAW,EAChB34B,KAAKiB,MAAQjB,KAAKN,YAAYO,EAAE,a,iBAEd,O,sBAAA,GAAMD,KAAKob,WAAW8zC,gBAAgBlvD,KAAKuC,eAAgBvC,KAAKuzB,U,cAAxE06B,EAAQ,SACdjuD,KAAKivD,OAAShB,EAAM3d,UAAY,MAAQ,WACxCtwC,KAAK0H,KAAOumD,EAAMvmD,KAClB1H,KAAKwiB,WAAayrC,EAAMzrC,WACC,MAArByrC,EAAM7mD,aAA2C,MAApBpH,KAAKoH,aAClC6mD,EAAM7mD,YAAYhD,SAAQ,SAAA+rC,GACtB,IAAM3oC,EAAa,EAAKJ,YAAYe,QAAO,SAAA4F,GAAK,OAAAA,EAAEnO,KAAOuwC,EAAEvwC,MACzC,MAAd4H,GAAsBA,EAAWrJ,OAAS,IACzCqJ,EAAW,GAAWo0B,SAAU,EACjCp0B,EAAW,GAAGib,SAAW0tB,EAAE1tB,SAC3Bjb,EAAW,GAAGkb,cAAgBytB,EAAEztB,kB,6DAMhD1iB,KAAKiB,MAAQjB,KAAKN,YAAYO,EAAE,Y,wBAGpCD,KAAKW,SAAU,E,YAGb,YAAAy5C,gBAAN,W,oGACqB,SAAMp6C,KAAKob,WAAW0kC,eAAe9/C,KAAKuC,iB,OAGxC,OAHb3B,EAAW,SACXwG,EAAcxG,EAASuC,KAAKmE,KAAI,SAAAJ,GAClC,WAAI,EAAAyb,WAAW,IAAI,EAAA8D,eAAevf,OACtC,EAAAlH,KAAmB,GAAMA,KAAKo3B,kBAAkB4oB,YAAY54C,I,cAA5D,EAAKA,YAAc,S,YAGvB,YAAAmpC,MAAA,SAAMxiC,EAAmB0tB,GACpB1tB,EAAU6tB,QAAoB,MAAVH,GAAmB1tB,EAAU6tB,QAAUH,EACtD1tB,EAAU6tB,UACZ7tB,EAAE0U,UAAW,IAIrB,YAAAoY,UAAA,SAAUY,GAAV,WACIz7B,KAAKoH,YAAYhD,SAAQ,SAAA2J,GAAK,SAAKwiC,MAAMxiC,EAAG0tB,OAG1C,YAAA3T,OAAN,W,iGACU3D,EAAU,IAAI,EAAAgrC,cACZznD,KAAO1H,KAAK0H,KACpByc,EAAQ3B,WAAaxiB,KAAKwiB,WAC1B2B,EAAQmsB,UAA4B,QAAhBtwC,KAAKivD,OACpB9qC,EAAQmsB,YACTnsB,EAAQ/c,YAAcpH,KAAKoH,YAAYe,QAAO,SAAA4F,GAAK,OAACA,EAAU6tB,WACzDt0B,KAAI,SAAAyG,GAAK,WAAI,EAAA6zB,yBAAyB7zB,EAAEnO,KAAMmO,EAAE0U,WAAY1U,EAAE2U,mB,iBASnE,O,sBALI1iB,KAAK24B,SACL34B,KAAKmoB,YAAcnoB,KAAKob,WAAWg0C,SAASpvD,KAAKuC,eAAgBvC,KAAKuzB,QAASpP,GAE/EnkB,KAAKmoB,YAAcnoB,KAAKob,WAAWi0C,UAAUrvD,KAAKuC,eAAgB4hB,GAEtE,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQh1B,KAAK24B,SAAW,eAAiB,kBAC1E34B,KAAK4nB,eAAeI,SAAS,UAAW,KACpChoB,KAAKN,YAAYO,EAAED,KAAK24B,SAAW,gBAAkB,iBAAkB34B,KAAK0H,OAChF1H,KAAK4uD,aAAal4C,O,4DAIpB,YAAAskB,OAAN,W,0FACI,OAAKh7B,KAAK24B,SAIQ,GAAM34B,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,2BAA4BD,KAAK0H,KACpD1H,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,YALrD,I,OAMJ,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAKP,O,sBADAD,KAAKsuD,cAAgBtuD,KAAKob,WAAW2zC,YAAY/uD,KAAKuC,eAAgBvC,KAAKuzB,SAC3E,GAAMvzB,KAAKsuD,e,cAAX,SACAtuD,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,kBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,iBAAkBD,KAAK0H,OACxF1H,KAAK6uD,eAAen4C,O,6FA7GnBi4C,GAAqB,sO,iCAArBA,EAAqB,4oF,GAAA,MC3BlC,4BACI,iDACI,wDAAkC,2CAAY,EAAA7mC,YAC1C,yDACI,4DAA+C,aAAS,iBACxD,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,6DAIA,+DA8EA,2DACI,mEACI,6D,oBACA,kEAAM,a,oBAAiB,iBAC3B,mDACA,mEACyB,a,oBAAmB,iBAC5C,gEACI,0EAOJ,mDACJ,+CACJ,2CACJ,uCACJ,mCACA,mB,4BA7GgE,0DAED,4CACU,oFAIrC,8CAIA,+CA+EqC,kDACpB,+EAC3B,gEAGe,kEAGkB,iD,+SD7E3D,GAIa,EAAA6mC,yB,68CE3Bb,KAIA,KAEA,KANA,I,0DCMoB,2BAEI,Y,mBACJ,kB,MADI,wH,sBAEJ,2BAEI,Y,mBACJ,kB,MADI,6H,sBAEJ,2BAEI,Y,mBACJ,kB,MADI,wH,sBAEJ,2BAEI,Y,mBACJ,kB,MADI,0H,sBAEJ,2BAEI,Y,mBACJ,kB,MADI,2H,yBArBZ,4BACI,6DAAyB,Y,mBAAmB,iBAC5C,6DACI,iEAIA,kEAIA,oEAIA,oEAIA,oEAIJ,mDACJ,gD,6BAvB6B,gEAGjB,kEAIA,wHAIA,mFAIA,uFAIA,uFDbxB,iBAUI,WAAoB9rC,EAA+B0S,GAA/B,KAAA1S,QAA+B,KAAA0S,cAJnD,KAAA+5B,gBAAiB,EACjB,KAAA1B,cAAe,EACf,KAAAvO,cAAe,E,OAIf,YAAAn+C,SAAA,sBACIlB,KAAK6iB,MAAMY,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,wDACvB,OAApB,EAAA1jB,KAAoB,GAAMA,KAAKu1B,YAAYwf,gBAAgBrxB,EAAOnhB,iB,cAAlE,EAAKuzB,aAAe,SACpB91B,KAAKsvD,eAAiBtvD,KAAK81B,aAAaqU,YACxCnqC,KAAKq/C,aAAer/C,KAAK81B,aAAawU,UACtCtqC,KAAK4tD,aAAe5tD,KAAK81B,aAAasU,U,gDAbrCmlB,GAAe,2E,iCAAfA,EAAe,0hCCd5B,4BACI,iDACI,qDACI,4DAyBJ,0CACA,qDACI,8DACJ,2CACJ,uCACJ,mCACA,mB,MA/B8B,qD,kHDO9B,GAIa,EAAAA,mB,68CEdb,WAeA,GARA,KAKA,KACA,MAEA,OAUA,GARA,KACA,MACA,KACA,KACA,MACA,MACA,KAEA,QAIA,SACA,SAEA,QAEA,QACA,SACA,SACA,SACA,S,kQC/BgB,8BAA2D,YAAY,kB,6BAAZ,gD,yBAM3D,8BAA+D,YAAgB,kB,6BAAhB,oD,yBAM/D,8BAAmE,YAAiB,kB,6BAAjB,qD,sBAcnF,6BACI,2C,mBACA,mDAAsB,Y,mBAAoB,iBAC9C,4C,MAFgD,6EACtB,kE,sBAItB,wBAAiC,Y,mBAA0B,kB,MAA1B,wE,sBAE7B,qC,mBACI,Y,mBACJ,kB,MAFyB,mEACrB,4G,sBAYY,8BAC4D,Y,mBAAoB,kB,MAApB,kE,sBAC5D,8BAC6D,Y,mBAAqB,kB,MAArB,mE,yBAC7D,+BAAiD,YAAU,kB,uCAAV,4C,sBAGjD,6BACI,mE,mBACA,2EAAsB,Y,mBAA6B,iBACvD,oE,MAF0B,sFACA,2E,sBAI1B,2BAAoD,Y,mBAAkB,kB,MAAlB,gE,sBACpD,2BAAoD,Y,mBAAkB,kB,MAAlB,gE,sBACpD,2BAAsD,Y,mBAAoB,kB,MAApB,kE,sBACtD,2BAAmD,Y,mBAAiB,kB,MAAjB,+D,uBACnD,2BAAqD,Y,mBAAmB,kB,MAAnB,iE,oDAU7C,2BAA+C,+HAE3C,2EACA,Y,mBACJ,iB,MADI,0J,oDAEJ,2BAA4D,8HAExD,2EACA,Y,mBACJ,iB,MADI,iJ,oDAEJ,2BAA+C,6HAC3C,2EACA,Y,mBACJ,iB,MADI,gJ,oDAEJ,2BAA+C,6HAE3C,2EACA,Y,mBACJ,iB,MADI,mJ,oDAnDpB,yBACI,iEACI,wEAEJ,sDACA,8DACI,oEAAyB,2GAAkB,aAAW,iBACtD,2EAEA,2EAEA,4EACJ,uDACA,gEACI,mFAIJ,uDACA,gEACI,2EACA,2EACA,2EACA,2EACA,4EACJ,uDACA,mEACI,wEACI,+E,oBAGI,yEACJ,+DACA,4EACI,iFAKA,iFAKA,iFAIA,iFAKA,8EAA2D,6GACvD,6EACA,a,oBACJ,iBACJ,+DACJ,2DACJ,uDACJ,mD,+CA1DoB,oDAA0B,gBAA1B,CAA0B,YAA1B,CAA0B,eAIK,4CAEvC,oFAEA,qFAC8B,2CAGpB,uDAMR,0EACA,0EACA,4EACA,yEACA,2EAME,sFAKI,oFAKA,qFAI+D,mDAK/D,sGAMA,kJ,oDA9DhC,6BACI,gEAGA,wDAC2C,+FACvC,yDACI,kEA6DJ,8CACJ,2CACJ,gD,yDArEsF,uDAGvB,wDAA4B,wCAG3E,0C,0BAVpB,6BAEI,kDACA,+DAuEJ,4C,kBAxEO,8CACW,8C,+JDAlB,cA8BI,WAAoBn0C,EAAgCyH,EACxCnjB,EAAkC8V,EAClC2F,EAAoDkZ,EACpDzM,EAAwCzO,EACxCoc,EAAkC9J,EAClCoe,EAAwCzP,GALhC,KAAAhf,aAAgC,KAAAyH,QACxC,KAAAnjB,cAAkC,KAAA8V,2BAClC,KAAA2F,uBAAoD,KAAAkZ,YACpD,KAAAzM,iBAAwC,KAAAzO,gBACxC,KAAAoc,cAAkC,KAAA9J,SAClC,KAAAoe,iBAAwC,KAAAzP,gBAzBpD,KAAAz5B,SAAU,EAKV,KAAAgf,OAAqC,KACrC,KAAA6vC,UAAY,IAAIxgD,IAChB,KAAAwgC,qBAAuB,EAAAxiB,qBACvB,KAAAyiB,2BAA6B,EAAA/oB,2BAE7B,KAAA24B,cAAe,EACf,KAAAuO,cAAe,EAEL,KAAArB,WAAY,EACZ,KAAA3xB,SAAW,IAEb,KAAA60B,gBAAkB,EAClB,KAAAl5C,MAAwB,K,OAU1B,YAAArV,SAAN,W,qFACIlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,iEAE7B,OADrB1jB,KAAKuC,eAAiBmhB,EAAOnhB,eACR,GAAMvC,KAAKu1B,YAAYwf,gBAAgB/0C,KAAKuC,iB,OACjE,OADMuzB,EAAe,UACH4vB,gBAIlB1lD,KAAKq/C,aAAevpB,EAAawU,UACjCtqC,KAAK4tD,aAAe93B,EAAasU,UACjC,GAAMpqC,KAAK6Z,UALP7Z,KAAKyrB,OAAOsc,SAAS,CAAC,kBAAmB,CAAEsP,WAAYr3C,KAAK6iB,QAC5D,K,cAIJ,SAEMglC,EAAiB7nD,KAAK6iB,MAAMwjC,YAAY1iC,WAAU,SAAM2iC,GAAO,qC,wCACjEtmD,KAAKktB,WAAao5B,EAAQp9C,OACA,MAAtBo9C,EAAQoJ,aACFtf,EAAOpwC,KAAK+vC,MAAM5nC,QAAO,SAAAjD,GAAK,OAAAA,EAAEtF,KAAO0mD,EAAQoJ,eAC5CvxD,OAAS,GAAKiyC,EAAK,GAAGzwB,SAAW,EAAA+G,2BAA2BykB,WACjEnrC,KAAK8rB,OAAOskB,EAAK,IAGH,MAAlByX,GACAA,EAAe1C,c,sCAMzB,YAAAtrC,KAAN,W,uGACqB,SAAM7Z,KAAKob,WAAW00B,qBAAqB9vC,KAAKuC,iB,cAA3D3B,EAAW,SACjBZ,KAAKwvD,UAAUx4C,QACfhX,KAAK4vC,SAA4B,MAAjBhvC,EAASuC,MAAgBvC,EAASuC,KAAKhF,OAAS,EAAIyC,EAASuC,KAAO,GACpFnD,KAAK4vC,SAASpT,KAAK,EAAA/2B,MAAM0J,gBAAgBnP,KAAKN,YAAa,UAC3DM,KAAK4vC,SAASxrC,SAAQ,SAAAc,GACb,EAAKsqD,UAAUnxB,IAAIn5B,EAAEya,QAGtB,EAAK6vC,UAAUhxD,IAAI0G,EAAEya,QAAQxa,KAAKD,GAFlC,EAAKsqD,UAAUtgD,IAAIhK,EAAEya,OAAQ,CAACza,OAKtClF,KAAKmI,OAAOnI,KAAK2f,QACjB3f,KAAKW,SAAU,E,YAGnB,YAAAwH,OAAA,SAAOwX,GACH3f,KAAK2f,OAASA,EACK,MAAf3f,KAAK2f,OACL3f,KAAK+vC,MAAQ/vC,KAAKwvD,UAAUhxD,IAAIwB,KAAK2f,QAErC3f,KAAK+vC,MAAQ/vC,KAAK4vC,SAEtB5vC,KAAK4/C,eAGT,YAAA8M,SAAA,WACI,GAAK1sD,KAAK+vC,SAAS/vC,KAAK+vC,MAAM5xC,QAAU6B,KAAK46B,UAA7C,CAGA,IAAM+xB,EAAc3sD,KAAK2vD,WAAWxxD,OAChC0uD,EAAY7sD,KAAK46B,SACD,IAAhB+xB,GAAqB3sD,KAAKyvD,gBAAkBzvD,KAAK46B,WACjDiyB,EAAY7sD,KAAKyvD,iBAEjBzvD,KAAK+vC,MAAM5xC,OAASwuD,IACpB3sD,KAAK2vD,WAAa3vD,KAAK2vD,WAAWpiB,OAAOvtC,KAAK+vC,MAAM9tC,MAAM0qD,EAAaA,EAAcE,KAEzF7sD,KAAKyvD,gBAAkBzvD,KAAK2vD,WAAWxxD,OACvC6B,KAAKusD,UAAYvsD,KAAK2vD,WAAWxxD,OAAS6B,KAAK46B,WAGnD,sBAAI,uBAAQ,C,IAAZ,WACI,OAAwB,MAAjB56B,KAAK4vC,SAAmB5vC,KAAK4vC,SAASzxC,OAAS,G,gCAG1D,sBAAI,2BAAY,C,IAAhB,WACI,OAAO6B,KAAKwvD,UAAUnxB,IAAI,EAAA3X,2BAA2Bif,SACjD3lC,KAAKwvD,UAAUhxD,IAAI,EAAAkoB,2BAA2Bif,SAASxnC,OAAS,G,gCAGxE,sBAAI,4BAAa,C,IAAjB,WACI,OAAO6B,KAAKwvD,UAAUnxB,IAAI,EAAA3X,2BAA2BkpC,UACjD5vD,KAAKwvD,UAAUhxD,IAAI,EAAAkoB,2BAA2BkpC,UAAUzxD,OAAS,G,gCAGzE,sBAAI,6BAAc,C,IAAlB,WACI,OAAO6B,KAAKwvD,UAAUnxB,IAAI,EAAA3X,2BAA2BykB,WACjDnrC,KAAKwvD,UAAUhxD,IAAI,EAAAkoB,2BAA2BykB,WAAWhtC,OAAS,G,gCAG1E,sBAAI,+BAAgB,C,IAApB,WACI,OAAwB,MAAjB6B,KAAK4vC,UAAsC,MAAlB5vC,KAAKwvD,WAAqBxvD,KAAK4vC,SAASzxC,OAAS,GAC7E6B,KAAK6vD,eAAiB,GAAK7vD,KAAK6vD,eAAiB,GAAK7vD,KAAK8vD,cAAgB,G,gCAGnF,YAAAhrC,KAAA,SAAKsrB,GAAL,WACsB,MAAdpwC,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK8sD,gBAAgB32C,gBAAgBJ,GAASK,SAC3D,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAAo6C,qBAAsB/vD,KAAK8sD,iBAE/Bl3B,EAAeluB,KAAe,MAAR0oC,EAAeA,EAAK1oC,MAAQ0oC,EAAKpvB,MAAQ,KAC/D4U,EAAerzB,eAAiBvC,KAAKuC,eACrCqzB,EAAenC,mBAA6B,MAAR2c,EAAeA,EAAKxwC,GAAK,KAC7Dg2B,EAAeo6B,YAAYrsC,WAAU,WACjC,EAAKpN,MAAMU,QACX,EAAK4C,UAET+b,EAAeq6B,cAActsC,WAAU,WACnC,EAAKpN,MAAMU,QACX,EAAKi5C,WAAW9f,MAGpBpwC,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,SAIrB,YAAAyyC,OAAA,WACIhpD,KAAK8kB,KAAK,OAGd,YAAA+oC,OAAA,SAAOzd,GAAP,WACsB,MAAdpwC,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKmwD,eAAeh6C,gBAAgBJ,GAASK,SAC1D,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAAy6C,oBAAqBpwD,KAAKmwD,gBAE9Bv6B,EAAeluB,KAAe,MAAR0oC,EAAeA,EAAK1oC,MAAQ0oC,EAAKpvB,MAAQ,KAC/D4U,EAAerzB,eAAiBvC,KAAKuC,eACrCqzB,EAAenC,mBAA6B,MAAR2c,EAAeA,EAAKxwC,GAAK,KAC7Dg2B,EAAeo6B,YAAYrsC,WAAU,WACjC,EAAKpN,MAAMU,WAGfjX,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,SAIf,YAAAouC,OAAN,SAAavU,G,0FACS,SAAMpwC,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,0BAA2BmwC,EAAK1oC,MAAQ0oC,EAAKpvB,MAChEhhB,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,Y,OACzD,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAIP,O,sBAAA,GAAMD,KAAKob,WAAWi1C,uBAAuBrwD,KAAKuC,eAAgB6tC,EAAKxwC,K,cAAvE,SACAI,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,iBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,gBAAiBmwC,EAAK1oC,MAAQ0oC,EAAKpvB,QACpGhhB,KAAKkwD,WAAW9f,G,4DAIlB,YAAAkgB,SAAN,SAAelgB,G,0FACX,OAA0B,MAAtBpwC,KAAKi7B,cACL,KAEJj7B,KAAKi7B,cAAgBj7B,KAAKob,WAAWm1C,6BAA6BvwD,KAAKuC,eAAgB6tC,EAAKxwC,IAC5F,GAAMI,KAAKi7B,gB,cAAX,SACAj7B,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,mBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,mBAAoBmwC,EAAK1oC,MAAQ0oC,EAAKpvB,QACvGhhB,KAAKi7B,cAAgB,K,YAGnB,YAAAu1B,QAAN,SAAcpgB,G,wCACV,SAASqgB,EAAW17C,GAChBq7B,EAAKzwB,OAAS,EAAA+G,2BAA2BykB,UACzC,IAAMulB,EAAW37C,EAAKy6C,UAAUhxD,IAAI,EAAAkoB,2BAA2BkpC,UAAUxqD,QAAQgrC,GAC7EsgB,GAAY,IACZ37C,EAAKy6C,UAAUhxD,IAAI,EAAAkoB,2BAA2BkpC,UAAUjC,OAAO+C,EAAU,GACzE37C,EAAKy6C,UAAUhxD,IAAI,EAAAkoB,2BAA2BykB,WAAWhmC,KAAKirC,I,mEAItE,OAA0B,MAAtBpwC,KAAKi7B,cACL,IAGgB,GAAMj7B,KAAK6pC,eAAerrC,IAAa,EAAAwT,iBAAiBgB,0B,OAC5E,OAAmB,OADb29C,EAAc,WACQA,GAyB5B3wD,KAAKi7B,cAAgBj7B,KAAK4wD,eAAexgB,GACzC,GAAMpwC,KAAKi7B,iBAzBW,MAAdj7B,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGTlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK6wD,gBAAgB16C,gBAAgBJ,GAASK,UACrDwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAAm7C,qBAAsB9wD,KAAK6wD,kBAEhBnpD,KAAe,MAAR0oC,EAAeA,EAAK1oC,MAAQ0oC,EAAKpvB,MAAQ,KAC/D4U,EAAerzB,eAAiBvC,KAAKuC,eACrCqzB,EAAenC,mBAA6B,MAAR2c,EAAeA,EAAKxwC,GAAK,KAC7Dg2B,EAAejP,OAAiB,MAARypB,EAAeA,EAAKzpB,OAAS,KACrDiP,EAAem7B,gBAAgBptC,WAAU,WACrC,EAAKpN,MAAMU,QACXw5C,EAAW,MAGfzwD,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,QAEjB,K,cAIJ,SACAk6C,EAAWzwD,MACXA,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,mBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,mBAAoBmwC,EAAK1oC,MAAQ0oC,EAAKpvB,QACvGhhB,KAAKi7B,cAAgB,K,YAGnB,YAAAnP,OAAN,SAAaskB,G,yFACS,MAAdpwC,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGTlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKgxD,eAAe76C,gBAAgBJ,GAASK,UACpDwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAAq8B,sBAAuBhyC,KAAKgxD,iBAEjBtpD,KAAO0oC,EAAK1oC,MAAQ0oC,EAAKpvB,MACxC4U,EAAerzB,eAAiBvC,KAAKuC,eACrCqzB,EAAesa,SAAWE,EAAKxwC,GAC/Bg2B,EAAekb,UAAW,EAC1Blb,EAAeoa,OAAS,OAExBhwC,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,Q,WAIf,YAAAqpC,YAAN,W,0EACI5/C,KAAK2vD,WAAa,GAClB3vD,KAAK0sD,W,WAGT,YAAAY,YAAA,WACI,OAAOttD,KAAKo6B,cAAcmzB,aAAavtD,KAAKktB,aAGhD,YAAAsgC,SAAA,WACI,IAAMC,EAAYztD,KAAKstD,cAIvB,OAHIG,GAAaztD,KAAKusD,WAClBvsD,KAAK4/C,eAED6N,GAAaztD,KAAK+vC,OAAS/vC,KAAK+vC,MAAM5xC,OAAS6B,KAAK46B,UAGlD,YAAAg2B,eAAd,SAA6BxgB,G,8GACV,SAAMpwC,KAAKmZ,cAAcE,UAAUrZ,KAAKuC,iB,OAC7B,OADpBw4C,EAAS,SACW,GAAM/6C,KAAKob,WAAW61C,iBAAiB7gB,EAAKzpB,S,OAAhEuqC,EAAoB,SACpBvjB,EAAY,EAAAloC,MAAM6F,eAAe4lD,EAAkBvjB,W,iBAIhD,O,sBADL,KAAA7uB,SAAQqyC,IAAI,yBACP,GAAMnxD,KAAKmZ,cAAci4C,eAAehhB,EAAKzpB,OAAQgnB,EAAUnhC,S,cADpE,WAAY,EACP,SAAwE1I,KAAK,O,0CAE1E,SAAM9D,KAAKmZ,cAAck4C,WAAWtW,EAAOp8C,IAAKgvC,EAAUnhC,S,OAGtE,OAHM7N,EAAM,UACNwlB,EAAU,IAAI,EAAAmtC,gCACZ3yD,IAAMA,EAAI+V,gBAClB,GAAM1U,KAAKob,WAAWm2C,4BAA4BvxD,KAAKuC,eAAgB6tC,EAAKxwC,GAAIukB,I,cAAhF,S,YAGI,YAAA+rC,WAAR,SAAmB9f,GACf,IAAIsd,EAAQ1tD,KAAK+vC,MAAM3qC,QAAQgrC,GAC3Bsd,GAAS,IACT1tD,KAAK+vC,MAAM4d,OAAOD,EAAO,GACzB1tD,KAAK4/C,eAEL5/C,KAAKwvD,UAAUnxB,IAAI,EAAA3X,2BAA2BkpC,YAC9ClC,EAAQ1tD,KAAKwvD,UAAUhxD,IAAI,EAAAkoB,2BAA2BkpC,UAAUxqD,QAAQgrC,KAC3D,GACTpwC,KAAKwvD,UAAUhxD,IAAI,EAAAkoB,2BAA2BkpC,UAAUjC,OAAOD,EAAO,GAG1E1tD,KAAKwvD,UAAUnxB,IAAI,EAAA3X,2BAA2Bif,WAC9C+nB,EAAQ1tD,KAAKwvD,UAAUhxD,IAAI,EAAAkoB,2BAA2Bif,SAASvgC,QAAQgrC,KAC1D,GACTpwC,KAAKwvD,UAAUhxD,IAAI,EAAAkoB,2BAA2Bif,SAASgoB,OAAOD,EAAO,GAGzE1tD,KAAKwvD,UAAUnxB,IAAI,EAAA3X,2BAA2BykB,aAC9CuiB,EAAQ1tD,KAAKwvD,UAAUhxD,IAAI,EAAAkoB,2BAA2BykB,WAAW/lC,QAAQgrC,KAC5D,GACTpwC,KAAKwvD,UAAUhxD,IAAI,EAAAkoB,2BAA2BykB,WAAWwiB,OAAOD,EAAO,I,iCAxU1E8D,GAAe,oc,iCAAfA,EAAe,uD,OAAA,M,yBACM,EAAAh7B,kB,yBACO,EAAAA,kB,yBACA,EAAAA,kB,yBACC,EAAAA,mB,onFChD1C,4BACI,8CAAI,Y,mBAAmB,iBACvB,iDACI,qDACI,6DACI,wCAAS,EAAAruB,OAAO,SAChB,a,oBACA,gCACJ,+CACA,8DAEI,wCAAS,EAAAA,OAAA,yCACT,a,oBACA,gCACJ,+CACA,8DAEI,wCAAS,EAAAA,OAAA,0CACT,a,oBACA,gCACJ,+CACJ,2CACA,uDACI,6DAAoC,a,oBAAmB,iBACvD,6DACI,mE,oBADJ,iBAEJ,2CACA,0DAAkE,wCAAS,EAAA6gD,YACvE,qDACA,a,oBACJ,iBACJ,uCACJ,mCACA,2DAIA,4D,sBA2EA,yFACA,yFACA,yFACA,yFACA,mB,MAnHQ,iEAG4D,+EAEpD,0GAC0C,+CAG1C,+GAEA,8GAC0C,mDAG1C,gHAEA,+GAC6C,oDAIb,kEACkC,oFAClE,qCAIJ,qGAIE,8CAKV,iJ,wPDEJ,GAIa,EAAAwI,oB,8EE5Cb,mBAAa,EAAAF,kC,68CCAb,WAgBA,GARA,KACA,MAEA,KACA,MACA,KACA,KAEA,QACA,SACA,SACA,SACA,SAIA,SACA,S,2HCnBoB,+BAAuC,YAAQ,kB,6BAAR,4C,sBAM/C,6BACI,uD,mBACA,+DAAsB,Y,mBAAoB,iBAC9C,+C,MAFgD,6EACtB,kE,mDAGtB,6BACI,6DAAG,Y,mBAA2B,iBAC9B,kEACI,wEAAoB,Y,oBAAkB,iBACtC,0EAAkE,mGAAlE,iBAEA,0EAA0B,a,oBAA2C,iBACzE,uDACJ,4D,iCAPO,wEAEqB,gEAC8C,gDAExC,wF,mDAkDlC,6BACI,iEACI,Y,mBACJ,iBACA,kEACI,sEACI,2EACI,kFAAqC,mCAAmB,iBACxD,0EACA,gFACI,oFACI,0FAEI,kIAFJ,iBAGA,0FAEI,a,oBACJ,iBACJ,uEACJ,mEACJ,+DACJ,2DACA,wEACI,4EACI,kFAAqC,iCAAiB,iBACtD,0EACA,gFACI,oFACI,0FAC8B,6HAD9B,iBAEA,0FACI,a,oBACJ,iBACJ,uEACJ,mEACA,gFACI,oFACI,0FACyB,wHADzB,iBAEA,0FACI,a,oBACJ,iBACJ,uEACJ,mEACA,gFACI,oFACI,0FAC4B,2HAD5B,iBAEA,0FACI,a,oBACJ,iBACJ,uEACJ,mEACA,gFACI,oFACI,0FACuB,sHADvB,iBAEA,0FACI,a,oBACJ,iBACJ,uEACJ,mEACA,gFACI,oFACI,0FAC8B,6HAD9B,iBAEA,0FACI,a,oBACJ,iBACJ,uEACJ,mEACA,iFACI,sFACI,4FACsB,qHADtB,iBAEA,4FACI,c,qBACJ,iBACJ,wEACJ,oEACA,kFACI,sFACI,4FACwB,kHADxB,iBAEA,4FACI,c,qBACJ,iBACJ,wEACJ,oEACA,kFACI,sFACI,4FACwB,uHADxB,iBAEA,4FACI,c,qBACJ,iBACJ,wEACJ,oEACA,kFACI,sFACI,4FACqB,oHADrB,iBAEA,4FACI,c,qBACJ,iBACJ,wEACJ,oEACJ,gEACJ,4DACJ,wDACJ,6D,iCA5GQ,6HAWoB,gFAGA,oLAa0B,2EAE1B,+KAOqB,qEAErB,0KAOwB,wEAExB,6KAOmB,mEAEnB,wKAO0B,0EAE1B,+KAOkB,kEAElB,wKAOoB,+DAEpB,qKAOoB,oEAEpB,0KAOiB,iEAEjB,wK,mDAgBxB,6BACI,yEAAsB,yFAAmB,MACrC,Y,mBACJ,iBACA,yEAAsB,yFAAmB,MACrC,Y,mBACJ,iBACJ,sD,MALQ,kIAGA,qI,sBAqBR,0BACI,Y,mBACJ,kB,MADI,qI,mDAYI,yBACI,6EAAgC,4GAC5B,oFAAuB,6FAAvB,iBAEJ,kEACA,6EAAI,4GACA,YACJ,iBACA,8EACI,sFAAuB,mGAAvB,iBAEJ,mEACA,+EACI,sFAAuB,8FAAvB,iBAEJ,mEACJ,+D,oCAduD,4EAAxB,kCAIvB,0HAII,kFADmB,wCAA6B,uBAIJ,6EAAzB,mCAAwB,wB,yBAvB/D,+BACI,qEACI,sEACI,0EAAI,gBAAM,iBACV,0EAAI,a,oBAAiB,iBACrB,+EAAoC,a,oBAA0B,iBAC9D,+EAAoC,a,oBAAqB,iBAC7D,+DACJ,2DACA,uEACI,8EAiBJ,2DACJ,wD,8BAxBgB,gEACgC,wEACA,mEAIpC,sD,yBAdhB,6BACI,oEAGA,wEA6BJ,4D,8BAhCS,0EAG4C,yE,uFA7MzD,6BACI,2EASA,0DACI,Y,mBACA,2B,mBAEI,gEACJ,uDACJ,mDACA,gEACI,sEACwC,gGADxC,iBAEA,sEACI,a,oBACA,6BAAO,a,oBAAqB,iBAChC,uDACJ,mDACA,gEACI,sEAC2C,gGAD3C,iBAEA,sEACI,a,oBACA,6BAAO,a,oBAAwB,iBACnC,uDACJ,mDACA,gEACI,sEACyC,gGADzC,iBAEA,sEACI,a,oBACA,6BAAO,a,oBAAsB,iBACjC,uDACJ,mDACA,gEACI,sEACyC,gGADzC,iBAEA,sEACI,a,oBACA,6BAAO,a,oBAAsB,iBACjC,uDACJ,mDACA,gEACI,sEAC0C,gGAD1C,iBAEA,sEACI,a,oBACA,6BAAO,a,oBAAuB,iBAClC,uDACJ,mDACA,8EA+GA,+DACI,oEACI,a,oBACA,4B,oBAEI,qEACJ,2DACJ,uDACA,uEAQJ,mDACA,gEACI,oEACI,2EACI,kGADJ,iBAEA,4EACI,c,qBACJ,iBACJ,wDACA,sEACI,4EACI,kGADJ,iBAEA,4EACI,c,qBACJ,iBACJ,wDACJ,oDACA,6EAkCJ,gD,gCA1OkB,gDAUV,sHACkC,uFAO9B,iEAAmC,kBAEnC,2HACO,oEAKP,oEAAsC,kBAEtC,8HACO,uEAKP,kEAAoC,kBAEpC,4HACO,qEAKP,kEAAoC,kBAEpC,4HACO,qEAKP,mEAAqC,kBAErC,6HACO,sEAGD,6DAiHN,oIACkC,wFAKjB,+FASD,qFAGZ,gDAEA,8IAKA,gDAEA,yJAIE,2D,mDA2CV,mCAAiC,yF,mBAG7B,+DACA,+D,mBAEJ,sD,mDALI,oEAAoD,mCAA8B,gCAE7C,gDAEjC,6EADyC,mCD7OrE,iBA4BI,WAAoBl2C,EAAgC1b,EACxC20B,EAAiCzM,EACjCwP,EAA8Cjc,GAFtC,KAAAC,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAAwP,oBAA8C,KAAAjc,uBAtBhD,KAAA60C,YAAc,IAAI,EAAAjtC,aAClB,KAAAktC,cAAgB,IAAI,EAAAltC,aAE9B,KAAApiB,SAAU,EACV,KAAAg4B,UAAoB,EAGpB,KAAAx2B,KAA6B,EAAA6qB,qBAAqBykC,KAClD,KAAAvmB,YAAc,IAAI,EAAAgH,eAClB,KAAAwf,YAAa,EACb,KAAAzC,OAA6B,WAC7B,KAAA7nD,YAAgC,GAGhC,KAAAooC,qBAAuB,EAAAxiB,qB,OAEvB,sBAAI,qCAAsB,C,IAA1B,WACI,OAAOhtB,KAAKmC,OAAS,EAAA6qB,qBAAqBuW,Q,gCAOxC,YAAAriC,SAAN,W,uGAEI,OADAlB,KAAK24B,SAAW34B,KAAKW,QAAqC,MAA3BX,KAAKyzB,mBACpC,GAAMzzB,KAAKo6C,mB,UAAX,UAEIp6C,KAAK24B,SAAL,YACA34B,KAAK24B,UAAW,EAChB34B,KAAKiB,MAAQjB,KAAKN,YAAYO,EAAE,Y,iBAEf,O,sBAAA,GAAMD,KAAKob,WAAWu2C,oBAAoB3xD,KAAKuC,eAAgBvC,KAAKyzB,qB,cAA3E2c,EAAO,SACbpwC,KAAKivD,OAAS7e,EAAKE,UAAY,MAAQ,WACvCtwC,KAAKmC,KAAOiuC,EAAKjuC,KACbiuC,EAAKjuC,OAAS,EAAA6qB,qBAAqBuW,SACnCvjC,KAAKkrC,YAAckF,EAAKlF,aAEJ,MAApBkF,EAAKhpC,aAA2C,MAApBpH,KAAKoH,aACjCgpC,EAAKhpC,YAAYhD,SAAQ,SAAA+rC,GACrB,IAAM3oC,EAAa,EAAKJ,YAAYe,QAAO,SAAA4F,GAAK,OAAAA,EAAEnO,KAAOuwC,EAAEvwC,MACzC,MAAd4H,GAAsBA,EAAWrJ,OAAS,IACzCqJ,EAAW,GAAWo0B,SAAU,EACjCp0B,EAAW,GAAGib,SAAW0tB,EAAE1tB,SAC3Bjb,EAAW,GAAGkb,cAAgBytB,EAAEztB,kB,6DAMhD1iB,KAAKiB,MAAQjB,KAAKN,YAAYO,EAAE,c,wBAGpCD,KAAKW,SAAU,E,YAGb,YAAAy5C,gBAAN,W,oGACqB,SAAMp6C,KAAKob,WAAW0kC,eAAe9/C,KAAKuC,iB,OAGxC,OAHb3B,EAAW,SACXwG,EAAcxG,EAASuC,KAAKmE,KAAI,SAAAJ,GAClC,WAAI,EAAAyb,WAAW,IAAI,EAAA8D,eAAevf,OACtC,EAAAlH,KAAmB,GAAMA,KAAKo3B,kBAAkB4oB,YAAY54C,I,cAA5D,EAAKA,YAAc,S,YAGvB,YAAAmpC,MAAA,SAAMxiC,EAAmB0tB,GACpB1tB,EAAU6tB,QAAoB,MAAVH,GAAmB1tB,EAAU6tB,QAAUH,EACtD1tB,EAAU6tB,UACZ7tB,EAAE0U,UAAW,IAIrB,YAAAoY,UAAA,SAAUY,GAAV,WACIz7B,KAAKoH,YAAYhD,SAAQ,SAAA2J,GAAK,SAAKwiC,MAAMxiC,EAAG0tB,OAGhD,YAAAm2B,sBAAA,SAAsB38C,EAAmB48C,GA+BrC,OA9BA58C,EAAEq2B,sBAAuBumB,GAErB7xD,KAAKkrC,YAAYI,qBACrBr2B,EAAEs2B,gBAAkBvrC,KAAKkrC,YAAYK,iBAAkBsmB,GAEnD7xD,KAAKkrC,YAAYK,gBACrBt2B,EAAEu2B,oBAAqBqmB,GAEnB7xD,KAAKkrC,YAAYM,mBACrBv2B,EAAEw2B,eAAgBomB,GAEd7xD,KAAKkrC,YAAYO,cACrBx2B,EAAEy2B,sBAAuBmmB,GAErB7xD,KAAKkrC,YAAYQ,qBACrBz2B,EAAE22B,2BAA4BimB,GAE1B7xD,KAAKkrC,YAAYU,0BACrB32B,EAAE42B,cAAegmB,GAEb7xD,KAAKkrC,YAAYW,aACrB52B,EAAE62B,WAAY+lB,GAEV7xD,KAAKkrC,YAAYY,UACrB72B,EAAE82B,gBAAiB8lB,GAEf7xD,KAAKkrC,YAAYa,eACrB92B,EAAE+2B,aAAc6lB,GAEZ7xD,KAAKkrC,YAAYc,YACd/2B,GAGL,YAAA6S,OAAN,W,0GACQ1gB,EAA0C,KAC1B,QAAhBpH,KAAKivD,SACL7nD,EAAcpH,KAAKoH,YAAYe,QAAO,SAAA4F,GAAK,OAACA,EAAU6tB,WACjDt0B,KAAI,SAAAyG,GAAK,WAAI,EAAA6zB,yBAAyB7zB,EAAEnO,KAAMmO,EAAE0U,WAAY1U,EAAE2U,mB,iBAqBnE,O,sBAjBI1iB,KAAK24B,WACCxU,EAAU,IAAI,EAAA2tC,+BACZxhB,UAA4B,QAAhBtwC,KAAKivD,OACzB9qC,EAAQhiB,KAAOnC,KAAKmC,KACpBgiB,EAAQ/c,YAAcA,EACtB+c,EAAQ+mB,YAAclrC,KAAK4xD,sBAAyC,QAApB,EAACztC,EAAQ+mB,mBAAW,QAAI,IAAI,EAAAgH,eAAkB/tB,EAAQhiB,OAAS,EAAA6qB,qBAAqBuW,QACpIvjC,KAAKmoB,YAAcnoB,KAAKob,WAAW22C,oBAAoB/xD,KAAKuC,eAAgBvC,KAAKyzB,mBAC7EtP,MAEEA,EAAU,IAAI,EAAA6tC,+BACZC,OAASjyD,KAAKiyD,OAAOluD,OAAOiC,MAAM,WAC1Cme,EAAQmsB,UAA4B,QAAhBtwC,KAAKivD,OACzB9qC,EAAQhiB,KAAOnC,KAAKmC,KACpBgiB,EAAQ+mB,YAAclrC,KAAK4xD,sBAAyC,QAApB,EAACztC,EAAQ+mB,mBAAW,QAAI,IAAI,EAAAgH,eAAkB/tB,EAAQhiB,OAAS,EAAA6qB,qBAAqBuW,QACpIpf,EAAQ/c,YAAcA,EACtBpH,KAAKmoB,YAAcnoB,KAAKob,WAAW82C,2BAA2BlyD,KAAKuC,eAAgB4hB,IAEvF,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQh1B,KAAK24B,SAAW,cAAgB,iBACzE34B,KAAK4nB,eAAeI,SAAS,UAAW,KACpChoB,KAAKN,YAAYO,EAAED,KAAK24B,SAAW,eAAiB,eAAgB34B,KAAK0H,OAC7E1H,KAAKgwD,YAAYt5C,O,4DAInB,YAAAskB,OAAN,W,0FACI,OAAKh7B,KAAK24B,SAIQ,GAAM34B,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,0BAA2BD,KAAK0H,KACnD1H,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,YALrD,I,OAMJ,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAKP,O,sBADAD,KAAKsuD,cAAgBtuD,KAAKob,WAAWi1C,uBAAuBrwD,KAAKuC,eAAgBvC,KAAKyzB,oBACtF,GAAMzzB,KAAKsuD,e,cAAX,SACAtuD,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,iBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,gBAAiBD,KAAK0H,OACvF1H,KAAKiwD,cAAcv5C,O,6FAlKlBq5C,GAAoB,sO,iCAApBA,EAAoB,4gL,GAAA,MC/BjC,4BACI,iDACI,wDAAkC,2CAAY,EAAAjoC,YAC1C,yDACI,4DACI,aACA,iCACJ,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,6DAIA,gEA4OA,4DACI,mEACI,6D,oBACA,kEAAM,a,oBAAiB,iBAC3B,mDACA,mEACyB,a,oBAAmB,iBAC5C,gEACI,0EAOJ,mDACJ,+CACJ,2CACJ,uCACJ,mCACA,mB,4BA9QgE,0DAG5C,+FAC0B,2CAE2B,oFAIrC,8CAIA,+CA6OqC,kDACpB,+EAC3B,gEAGe,kEAGkB,iD,+SD1O3D,GAIa,EAAAioC,wB,68CE/Bb,WAWA,GAHA,KACA,MAEA,OAOA,GALA,KACA,MACA,KACA,MAEA,QAEA,Q,oHCdoB,+BAAuC,YAAQ,kB,6BAAR,4CDgB3D,iBAkBI,WAAoB30C,EAAgC1b,EACxC20B,EAAiCzM,EACjCzO,EAAsC0wB,GAF9B,KAAAzuB,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAAzO,gBAAsC,KAAA0wB,iBAXxC,KAAAknB,gBAAkB,IAAI,EAAAhuC,aAEhC,KAAAovC,cAAe,EACf,KAAAxxD,SAAU,EAIF,KAAAgtC,UAAwB,K,OAM1B,YAAAzsC,SAAN,W,kGAEkC,O,sBAAA,GAAMlB,KAAKob,WAAW61C,iBAAiBjxD,KAAK2mB,S,cAC7C,OADnBuqC,EAAoB,UACtB,OACAlxD,KAAK2tC,UAAY,EAAAloC,MAAM6F,eAAe4lD,EAAkBvjB,WACpC,GAAM3tC,KAAKmZ,cAAci4C,eAAepxD,KAAK2mB,OAAQ3mB,KAAK2tC,UAAUnhC,U,OACrE,OADb4lD,EAAc,YAEhBpyD,KAAKoyD,YAAcA,EAAYtuD,KAAK,M,wEAIhD9D,KAAKW,SAAU,E,YAGb,YAAAmnB,OAAN,W,0FACI,OAAI9nB,KAAKW,QACL,IAGAX,KAAKmyD,aACL,GAAMnyD,KAAK6pC,eAAe+c,KAAK,EAAA50C,iBAAiBgB,yBAAyB,IADzE,M,OACA,S,iBAKA,O,sBADAhT,KAAKmoB,YAAcnoB,KAAK4wD,iBACxB,GAAM5wD,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,mBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,mBAAoBD,KAAK0H,OAC1F1H,KAAK+wD,gBAAgBr6C,O,4DAIf,YAAAk6C,eAAd,W,oGACmB,SAAM5wD,KAAKmZ,cAAcE,UAAUrZ,KAAKuC,iB,OAC3C,OADNw4C,EAAS,SACH,GAAM/6C,KAAKmZ,cAAck4C,WAAWtW,EAAOp8C,IAAKqB,KAAK2tC,UAAUnhC,S,OAG3E,OAHM7N,EAAM,UACNwlB,EAAU,IAAI,EAAAmtC,gCACZ3yD,IAAMA,EAAI+V,gBAClB,GAAM1U,KAAKob,WAAWm2C,4BAA4BvxD,KAAKuC,eAAgBvC,KAAKyzB,mBAAoBtP,I,cAAhG,S,6CAvDK2sC,GAAoB,4N,iCAApBA,EAAoB,goC,GAAA,MC1BjC,4BACI,iDACI,wDAAkC,2CAAY,EAAAhpC,YAC1C,yDACI,4DACI,a,oBACA,iCACJ,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,2DACI,a,oBACA,4BACI,a,oBAAsB,iBAC9B,mDACA,2DAAG,4BAAM,aAAe,iBAAO,iBAC/B,gEACI,sEACI,qEADJ,iBAEA,sEACI,a,oBACJ,iBACJ,mDACJ,+CACA,4DACI,mEACI,6D,oBACA,kEAAM,a,oBAAoB,iBAC9B,mDACA,mEACyB,a,oBAAmB,iBAChD,+CACJ,2CACJ,uCACJ,mCACA,mB,4BApCgE,0DAG5C,0HAC0B,2CAE2B,oFAMrD,gJAEI,sGAEC,kDAGD,sDAEA,0IAKiD,kDACpB,+EAC3B,mEAGe,oE,kODXzC,GAIa,EAAAgpC,wB,68CE1Bb,WAcA,GANA,KACA,MAEA,KACA,KAEA,QAGA,Q,4GCXoB,+BAAuC,YAAQ,kB,6BAAR,4C,sBAM/C,6BACI,uD,mBACA,+DAAsB,Y,mBAAoB,iBAC9C,+C,MAFgD,6EACtB,kE,sBAItB,0BACI,Y,mBACJ,kB,MADI,wH,mDAII,yBACI,yEAAgC,4GAC5B,gFAAuB,6FAAvB,iBACJ,8DACA,yEAAI,4GACA,YACJ,iBACJ,0D,oCALuD,wEAAxB,kCAGvB,mH,yBAPhB,+BACI,iEACI,wEAQJ,sDACJ,mD,8BATY,iD,yBAPhB,6BACI,yDAAG,Y,mBAAgC,iBACnC,gEAGA,kEAYJ,+C,6BAhBO,6EACE,gEAG4C,+DDFjE,iBAcI,WAAoB11C,EAAgC1b,EACxC20B,EAAiCzM,GADzB,KAAAxM,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBAPnC,KAAAooC,YAAc,IAAI,EAAAjtC,aAE5B,KAAApiB,SAAU,EACV,KAAAktD,OAA0B,G,OAMpB,YAAA3sD,SAAN,W,2GAC2B,SAAMlB,KAAKob,WAAW0yC,UAAU9tD,KAAKuC,iB,OAAtDwrD,EAAiB,UACjBF,EAASE,EAAe5qD,KAAKmE,KAAI,SAAAJ,GAAK,OAAAA,MACrCs1B,KAAK,EAAA/2B,MAAM0J,gBAAgBnP,KAAKN,YAAa,SACpDM,KAAK6tD,OAASA,E,iBAGS,O,sBAAA,GAAM7tD,KAAKob,WAAWi3C,0BACrCryD,KAAKuC,eAAgBvC,KAAKyzB,qB,cACZ,OAFZ6+B,EAAa,WAEsB,MAAftyD,KAAK6tD,QAC3ByE,EAAWluD,SAAQ,SAAAmuD,GACf,IAAMtE,EAAQ,EAAKJ,OAAO1lD,QAAO,SAAA+lD,GAAK,OAAAA,EAAEtuD,KAAO2yD,KAClC,MAATtE,GAAiBA,EAAM9vD,OAAS,IAC/B8vD,EAAM,GAAWryB,SAAU,M,iDAM5C57B,KAAKW,SAAU,E,YAGnB,YAAA4vC,MAAA,SAAM2d,EAAkBzyB,GACnByyB,EAAUtyB,QAAoB,MAAVH,GAAmByyB,EAAUtyB,QAAUH,EACtDyyB,EAAUtyB,UACXsyB,EAAUzrC,UAAW,IAI9B,YAAAoY,UAAA,SAAUY,GAAV,WACIz7B,KAAK6tD,OAAOzpD,SAAQ,SAAA8pD,GAAK,SAAK3d,MAAM2d,EAAGzyB,OAGrC,YAAA3T,OAAN,W,iGACU3D,EAAU,IAAI,EAAAquC,qCACZC,SAAWzyD,KAAK6tD,OAAO1lD,QAAO,SAAA+lD,GAAK,OAACA,EAAUtyB,WAASt0B,KAAI,SAAA4mD,GAAK,OAAAA,EAAEtuD,M,iBAKtE,O,sBAFAI,KAAKmoB,YAAcnoB,KAAKob,WAAWs3C,0BAA0B1yD,KAAKuC,eAAgBvC,KAAKyzB,mBACnFtP,GACJ,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,uBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,sBAAuBD,KAAK0H,OAC7F1H,KAAKgwD,YAAYt5C,O,6FAxDhB05C,GAAmB,iJ,iCAAnBA,EAAmB,8sC,GAAA,MCvBhC,4BACI,iDACI,wDAAkC,2CAAY,EAAAtoC,YAC1C,yDACI,4DACI,a,oBACA,iCACJ,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,6DAIA,8DAkBA,4DACI,mEACI,6D,oBACA,kEAAM,a,oBAAiB,iBAC3B,mDACA,mEACyB,a,oBAAmB,iBAChD,+CACJ,2CACJ,uCACJ,mCACA,mB,4BA3CgE,0DAG5C,0HAC0B,2CAE2B,oFAIrC,8CAIA,+CAmBqC,kDACpB,+EAC3B,gEAGe,oE,gQDrBzC,GAIa,EAAAsoC,uB,68CEvBb,WAYA,GALA,KAKA,QAUA,GARA,OACA,KACA,KACA,KACA,KAIA,OAEA,S,wJCxBA,oCACI,6CAAG,Y,mBAA0C,iBAC7C,oDACI,uGAAiC,Y,mBAA2B,iBACpE,kC,MAJiD,+BAC1C,uFAEkC,yE,sBAKzC,6BACI,0C,mBACA,kDAAsB,Y,mBAAoB,iBAC9C,4C,MAFgD,6EACtB,kE,sBAOV,8BAAoD,Y,mBAAoB,kB,MAApB,kE,mDAFxD,yBACI,4DAAyB,2HAAkB,YAAU,iBACrD,iEACA,gEAAkC,YAAiB,iBACvD,8C,0CAH+C,2CACT,8CACA,mD,yBAJ1C,yBACI,2DAKJ,2C,uBALQ,+C,yBAHhB,8BACI,iDACI,uDAOJ,sCACJ,mC,6BARY,mD,iBDYZ,iBAqBI,WAAoBh1C,EAAgCyH,EACxCnjB,EAAkC8V,EAClC2F,EAAoDoa,EACpD9J,EAAwBjS,GAHhB,KAAA4B,aAAgC,KAAAyH,QACxC,KAAAnjB,cAAkC,KAAA8V,2BAClC,KAAA2F,uBAAoD,KAAAoa,cACpD,KAAA9J,SAAwB,KAAAjS,qBAjBpC,KAAA7Y,SAAU,EAMV,KAAAgyD,6BAA8B,EAItB,KAAAp8C,MAAwB,KAExB,KAAAq8C,mBAA+C,IAAI5jD,I,OAOrD,YAAA9N,SAAN,W,qFACIlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,iEAE7B,OADrB1jB,KAAKuC,eAAiBmhB,EAAOnhB,eACR,GAAMvC,KAAKu1B,YAAYwf,gBAAgB/0C,KAAKuC,iB,OACjE,OAAoB,OADduzB,EAAe,WACQA,EAAaqU,aAI1CnqC,KAAK2yD,4BAA8B78B,EAAamwB,wBAChDjmD,KAAKqlC,SAAW,CACZ,CACI39B,KAAM1H,KAAKN,YAAYO,EAAE,gBACzBq8B,YAAat8B,KAAKN,YAAYO,EAAE,0BAChCkC,KAAM,EAAAygB,WAAWw2B,wBACjB5kB,SAAS,EACTq+B,SAAS,GAEb,CACInrD,KAAM1H,KAAKN,YAAYO,EAAE,cACzBq8B,YAAat8B,KAAKN,YAAYO,EAAE,wBAChCkC,KAAM,EAAAygB,WAAWkwC,eACjBt+B,SAAS,EACTq+B,SAAS,GAEb,CACInrD,KAAM1H,KAAKN,YAAYO,EAAE,qBACzBq8B,YAAat8B,KAAKN,YAAYO,EAAE,+BAChCkC,KAAM,EAAAygB,WAAWmwC,kBACjBv+B,SAAS,EACTq+B,SAAS,GAEb,CACInrD,KAAM1H,KAAKN,YAAYO,EAAE,aACzBq8B,YAAat8B,KAAKN,YAAYO,EAAE,iBAChCkC,KAAM,EAAAygB,WAAWwiB,UACjB5Q,SAAS,EACTq+B,SAAS,GAEb,CACInrD,KAAM1H,KAAKN,YAAYO,EAAE,cACzBq8B,YAAat8B,KAAKN,YAAYO,EAAE,wBAChCkC,KAAM,EAAAygB,WAAWowC,WACjBx+B,SAAS,EACTq+B,QAAS/8B,EAAa4U,QAE1B,CACIhjC,KAAM1H,KAAKN,YAAYO,EAAE,qBACzBq8B,YAAat8B,KAAKN,YAAYO,EAAE,+BAChCkC,KAAM,EAAAygB,WAAWqwC,kBACjBz+B,SAAS,EACTq+B,SAAS,GAEb,CACInrD,KAAM1H,KAAKN,YAAYO,EAAE,eACzBq8B,YAAat8B,KAAKN,YAAYO,EAAE,yBAChCkC,KAAM,EAAAygB,WAAWswC,YACjB1+B,SAAS,EACTq+B,SAAS,IAGjB,GAAM7yD,KAAK6Z,UAvDP7Z,KAAKyrB,OAAOsc,SAAS,CAAC,iBAAkB/nC,KAAKuC,iBAC7C,K,cAsDJ,SAGMslD,EAAiB7nD,KAAK6iB,MAAMwjC,YAAY1iC,WAAU,SAAM2iC,GAAO,qC,yCACjE,GAAwB,MAApBA,EAAQ5yB,SAER,IADMy/B,EAA6B7M,EAAQ5yB,SACtC,EAAL,EAAwB,EAAA1zB,KAAKozD,YAAL,eACpB,IADOC,EAAS,MACFzzD,KAAOuzD,EAAoB,CACrC,IAASl1D,EAAI,EAAGA,EAAI+B,KAAKqlC,SAASlnC,OAAQF,IACtC,GAAI+B,KAAKqlC,SAASpnC,GAAGkE,OAASkxD,EAAUlxD,KAAM,CAC1CnC,KAAK8kB,KAAK9kB,KAAKqlC,SAASpnC,IACxB,MAGR,M,OAKU,MAAlB4pD,GACAA,EAAe1C,c,2BAM3BnlD,KAAKglD,cAAgB,+BACwB,MAAzChlD,KAAKwZ,mBAAmBwrC,cACxBhlD,KAAKglD,cAAgBhlD,KAAKwZ,mBAAmBwrC,cACH,MAAnChlD,KAAKwZ,mBAAmBG,UAC/B3Z,KAAKglD,cAAgBhlD,KAAKwZ,mBAAmBG,QAAU,W,WAIzD,YAAAE,KAAN,W,uGACqB,SAAM7Z,KAAKob,WAAWk4C,YAAYtzD,KAAKuC,iB,cAAlD3B,EAAW,SACjBZ,KAAKozD,YAA+B,MAAjBxyD,EAASuC,MAAgBvC,EAASuC,KAAKhF,OAAS,EAAIyC,EAASuC,KAAO,GACvFnD,KAAKozD,YAAYhvD,SAAQ,SAAAmvD,GACrB,EAAKX,mBAAmB1jD,IAAIqkD,EAAGpxD,KAAMoxD,EAAG/+B,YAE5Cx0B,KAAKqlC,SAASjhC,SAAQ,SAAA6Q,GAClBA,EAAEuf,QAAU,EAAKo+B,mBAAmBv0B,IAAIppB,EAAE9S,OAAS,EAAKywD,mBAAmBp0D,IAAIyW,EAAE9S,SAErFnC,KAAKW,SAAU,E,YAGnB,YAAAmkB,KAAA,SAAK7P,GAAL,WACsB,MAAdjV,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKwzD,aAAar9C,gBAAgBJ,GAASK,SACxD,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAA89C,oBAAqBzzD,KAAKwzD,cAE9B59B,EAAeluB,KAAOuN,EAAEvN,KACxBkuB,EAAe0G,YAAcrnB,EAAEqnB,YAC/B1G,EAAezzB,KAAO8S,EAAE9S,KACxByzB,EAAerzB,eAAiBvC,KAAKuC,eACrCqzB,EAAeg9B,mBAAqB5yD,KAAK4yD,mBACzCh9B,EAAe89B,cAAc/vC,WAAU,WACnC,EAAKpN,MAAMU,QACX,EAAK4C,UAGT7Z,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,SAMf,YAAAo9C,qBAAN,W,kGACI,GAAmC,MAA/B3zD,KAAK4zD,uBACL,U,iBAIc,O,sBADd5zD,KAAK4zD,uBAAyB5zD,KAAKob,WAAWkqC,iCAChC,GAAMtlD,KAAK4zD,wB,cACZ,OADP9zC,EAAQ,UACV,MACe,GAAM9f,KAAKu1B,YAAYyL,a,OAAhCra,EAAS,SACf3mB,KAAKmb,qBAAqBuM,UAAU1nB,KAAKglD,cAAgB,iBAAmBr+B,EACxE,UAAalc,OAAe2B,mBAAmB0T,GAAS,mBAAqB9f,KAAKuC,gB,wEAG9FvC,KAAK4zD,uBAAyB,K,6CAxKzBC,GAAiB,oT,iCAAjBA,EAAiB,yD,OAAA,K,yBACS,EAAAr9B,kB,omBC/BvC,uCAKA,6CACI,8CAAI,Y,mBAAqB,iBAC7B,kCACA,wDAIA,mDAWA,uFACA,mB,MAxBa,mDAML,kEAEM,8CAI8B,iD,6GDc5C,GAIa,EAAAq9B,qB,8EE7Bb,WAAS,EAAAr0D,WAAA,EAAAA,WACT,aAAS,EAAAs0D,aAAA,EAAAA,aACT,YAAS,EAAA38C,aAAA,EAAAA,aACT,YAAS,EAAA1F,YAAA,EAAAA,YACT,YAAS,EAAAlQ,cAAA,EAAAA,cACT,YAAS,EAAAyP,kBAAA,EAAAA,kBACT,YAAS,EAAA1P,cAAA,EAAAA,cACT,YAAS,EAAAqQ,mBAAA,EAAAA,mBACT,YAAS,EAAAL,cAAA,EAAAA,cACT,WAAS,EAAAhS,YAAA,EAAAA,YACT,aAAS,EAAAy0D,WAAA,EAAAA,WACT,YAAS,EAAA5zD,iBAAA,EAAAA,iBACT,YAAS,EAAAuQ,0BAAA,EAAAA,0BACT,WAAS,EAAAnR,qBAAA,EAAAA,qBACT,YAAS,EAAA0U,cAAA,EAAAA,cACT,aAAS,EAAA4tB,gBAAA,EAAAA,gBACT,YAAS,EAAA5wB,eAAA,EAAAA,eACT,YAAS,EAAAF,aAAA,EAAAA,aACT,YAAS,EAAAW,YAAA,EAAAA,YACT,aAAS,EAAAuG,aAAA,EAAAA,aACT,aAAS,EAAAwC,YAAA,EAAAA,YACT,WAAS,EAAAhb,YAAA,EAAAA,YACT,aAAS,EAAA8a,oBAAA,EAAAA,qB,68CCvBT,WAcA,GANA,KACA,MAEA,KACA,KAEA,QAEA,S,yGCPY,6BACI,uD,mBACA,+DAAsB,Y,mBAAoB,iBAC9C,+C,MAFgD,6EACtB,kE,sBAItB,qC,mBAEI,Y,mBACJ,kB,MAFI,8DACA,mI,sBAEJ,qC,mBAEI,Y,mBACJ,kB,MAHkE,8DAE9D,gI,sBAEJ,6BACI,0E,mBACI,Y,mBACJ,iBACA,0EACI,Y,mBACJ,iBACJ,6D,MAN4B,kFACpB,oIAGA,qI,sBAGR,qCACI,Y,mBACJ,kB,MADI,oI,sBAEJ,qCACI,Y,mBACJ,kB,MADI,8H,yBAeY,gCAA6D,YAAU,kB,uBAA9B,gCAAoB,4C,mDAN7E,6BACI,kEACI,sEACI,4EAAqC,Y,mBAA+B,iBACpE,8EACI,oHACA,qFACJ,+DACJ,2DACA,wEACI,8EAAiC,a,oBAAsB,iBACvD,8EAC+B,gHAD/B,iBAEJ,2DACJ,uDACA,oEACI,0EACI,mHADJ,iBAEA,0EAA6D,mBAAG,iBACpE,uDACA,oEACI,0EACI,mHADJ,iBAEA,0EAA6D,mBAAG,iBACpE,uDACA,oEACI,0EACI,qHADJ,iBAEA,0EAA+D,mBAAG,iBACtE,uDACA,oEACI,0EACI,qHADJ,iBAEA,0EAA+D,wBAAY,iBAC/E,uDACJ,4D,iCAhCiD,4EAEjC,iEACQ,wDAIqB,qEAEF,6DAK/B,gEAKA,gEAKA,kEAKA,mE,yBAUI,gCAA2D,YAAU,kB,uBAA9B,gCAAoB,4C,mDAN3E,6BACI,kEACI,sEACI,4EAAgC,Y,mBAAwB,iBACxD,8EAA0D,+GAEtD,qFACJ,+DACJ,2DACJ,uDACA,mEAAiB,a,oBAAqB,iBACtC,oEACI,wEACI,8EAA8B,a,oBAAsB,iBACpD,8EACsB,6GADtB,iBAEJ,2DACJ,uDACA,oEACI,wEACI,8EAA+B,a,oBAAuB,iBACtD,8EACoB,8GADpB,iBAEJ,2DACA,wEACI,8EAA+B,a,oBAAuB,iBACtD,8EACoB,8GADpB,iBAEJ,2DACJ,uDACA,oEACI,0EACI,4GADJ,iBAEA,0EAAsD,mBAAG,iBAC7D,uDACA,oEACI,0EACI,4GADJ,iBAEA,0EAAsD,mBAAG,iBAC7D,uDACA,oEACI,0EACI,8GADJ,iBAEA,0EAAwD,mBAAG,iBAC/D,uDACA,oEACI,0EACI,8GADJ,iBAEA,0EAAwD,wBAAY,iBACxE,uDACA,mEAAiB,a,oBAAuB,iBACxC,oEACI,wEACI,8EAAmC,a,oBAAiC,iBACpE,8EACkD,kHADlD,iBAEJ,2DACJ,wDACA,sEACI,4EACI,8GADJ,iBAEA,4EAAwD,c,qBAAuB,iBACnF,wDACA,sEACI,4EACI,iHADJ,iBAEA,4EAA2D,c,qBAA0B,iBACzF,wDACJ,6D,iCAjE4C,sEAC0B,4DAE9C,sDAIH,oEAGqB,qEAER,0DAKS,sEAEX,2DAGW,sEAEX,2DAKpB,yDAKA,yDAKA,2DAKA,2DAGS,sEAG0B,gFAEe,+DAKlD,2DACoD,uEAIpD,8DACuD,2E,mDArIvE,6BACI,yDAAG,YAAe,iBAClB,wEAIA,wEAIA,0EAQA,0EAGA,0EAGA,gEACI,oEACI,0EAA6D,mGAA7D,iBAEA,0EAA8C,aAAgB,iBAClE,uDACJ,mDACA,6EAoCA,8EAqEJ,+C,gCAvIO,kDACyB,kFAIA,oEAId,qEAQc,4EAGA,sEAKyC,iDAEf,mDAGxC,yEAoCA,6ED5D9B,iBA4CI,WAAoBa,EAAgC1b,EACxC20B,EAAiCzM,GADzB,KAAAxM,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBApCpC,KAAAgrC,mBAA+C,IAAI5jD,IAClD,KAAA0kD,cAAgB,IAAI,EAAA3wC,aAE9B,KAAAixC,WAAa,EAAApxC,WACb,KAAAjiB,SAAU,EACV,KAAA6zB,SAAU,EAOV,KAAAy/B,wBAAmC,KAyB/Bj0D,KAAKk0D,eAAiB,CAClB,CAAExsD,KAAM,MAAQhI,EAAYO,EAAE,UAAY,MAAOvB,MAAO,MACxD,CAAEgJ,KAAMhI,EAAYO,EAAE,QAAU,OAAQvB,MAAO,GAC/C,CAAEgJ,KAAMhI,EAAYO,EAAE,QAAU,OAAQvB,MAAO,GAC/C,CAAEgJ,KAAMhI,EAAYO,EAAE,QAAU,OAAQvB,MAAO,GAC/C,CAAEgJ,KAAMhI,EAAYO,EAAE,QAAU,OAAQvB,MAAO,GAC/C,CAAEgJ,KAAMhI,EAAYO,EAAE,UAAY,OAAQvB,MAAO,IAErDsB,KAAKm0D,aAAe,CAChB,CAAEzsD,KAAMhI,EAAYO,EAAE,kBAAmBvB,MAAO,MAChD,CAAEgJ,KAAMhI,EAAYO,EAAE,YAAavB,MAAO,YAC1C,CAAEgJ,KAAMhI,EAAYO,EAAE,cAAevB,MAAO,e,OAI9C,YAAAwC,SAAN,W,0FACI,SAAMlB,KAAK6Z,Q,cAAX,SACA7Z,KAAKW,SAAU,E,YAGb,YAAAkZ,KAAN,W,kGAEsB,O,sBAAd,EAAA7Z,KAAc,GAAMA,KAAKob,WAAWg5C,UAAUp0D,KAAKuC,eAAgBvC,KAAKmC,O,OAExE,GAFA,EAAKkyD,OAAS,SAEK,MAAfr0D,KAAKq0D,SACLr0D,KAAKw0B,QAAUx0B,KAAKq0D,OAAO7/B,QACH,MAApBx0B,KAAKq0D,OAAOlxD,MACZ,OAAQnD,KAAKmC,MACT,KAAK,EAAAygB,WAAWmwC,kBACZ/yD,KAAKs0D,mBAAqBt0D,KAAKq0D,OAAOlxD,KAAKoxD,YAC3Cv0D,KAAKw0D,iBAAmBx0D,KAAKq0D,OAAOlxD,KAAKsxD,UACzCz0D,KAAK00D,gBAAkB10D,KAAKq0D,OAAOlxD,KAAKwxD,SACxC30D,KAAK40D,gBAAkB50D,KAAKq0D,OAAOlxD,KAAK0xD,SACxC70D,KAAK80D,kBAAoB90D,KAAKq0D,OAAOlxD,KAAK4xD,WAC1C/0D,KAAKg1D,kBAAoBh1D,KAAKq0D,OAAOlxD,KAAK8xD,WAC1Cj1D,KAAKk1D,kBAAoBl1D,KAAKq0D,OAAOlxD,KAAKgyD,WAC1Cn1D,KAAKo1D,kBAAoBp1D,KAAKq0D,OAAOlxD,KAAKkyD,WAC1Cr1D,KAAKs1D,sBAAwBt1D,KAAKq0D,OAAOlxD,KAAKoyD,eAC9Cv1D,KAAKw1D,kBAAoBx1D,KAAKq0D,OAAOlxD,KAAKsyD,WAC1Cz1D,KAAK01D,qBAAuB11D,KAAKq0D,OAAOlxD,KAAKwyD,cAC7C,MACJ,KAAK,EAAA/yC,WAAWkwC,eACZ9yD,KAAKi0D,wBAA0Bj0D,KAAKq0D,OAAOlxD,KAAK+qC,cAChDluC,KAAK41D,oBAAsB51D,KAAKq0D,OAAOlxD,KAAKsxD,UAC5Cz0D,KAAK61D,uBAAyB71D,KAAKq0D,OAAOlxD,KAAK2yD,aAC/C91D,KAAK+1D,uBAAyB/1D,KAAKq0D,OAAOlxD,KAAK6yD,aAC/Ch2D,KAAKi2D,yBAA2Bj2D,KAAKq0D,OAAOlxD,KAAK+yD,eACjDl2D,KAAKm2D,yBAA2Bn2D,KAAKq0D,OAAOlxD,KAAKizD,e,mBAQjE,GAAqB,O,YAAfl3B,WAGF,MAAM,E,OAFNl/B,KAAKw0B,SAAU,E,+BAOrB,YAAA1M,OAAN,W,oGACQ9nB,KAAKkqD,cAAL,YAKA,QAJM/lC,EAAU,IAAI,EAAAkyC,eACZ7hC,QAAUx0B,KAAKw0B,QACvBrQ,EAAQhiB,KAAOnC,KAAKmC,KACpBgiB,EAAQhhB,KAAO,KACPnD,KAAKmC,MACT,KAAK,EAAAygB,WAAWmwC,kBACZ5uC,EAAQhhB,KAAO,CACXoxD,YAAav0D,KAAKs0D,mBAClBG,UAAWz0D,KAAKw0D,kBAAoB,KACpCG,SAAU30D,KAAK00D,gBACfG,SAAU70D,KAAK40D,gBACfG,WAAY/0D,KAAK80D,kBACjBG,WAAYj1D,KAAKg1D,kBACjBG,WAAYn1D,KAAKk1D,mBAAqB,KACtCG,WAAYr1D,KAAKo1D,mBAAqB,KACtCG,eAAgBv1D,KAAKs1D,uBAAyB,KAC9CG,WAAYz1D,KAAKw1D,kBACjBG,cAAe31D,KAAK01D,sBAExB,MACJ,KAAK,EAAA9yC,WAAWkwC,eACZ3uC,EAAQhhB,KAAO,CACX+qC,cAAeluC,KAAKi0D,yBAA2B,KAC/CQ,UAAWz0D,KAAK41D,qBAAuB,KACvCE,aAAc91D,KAAK61D,uBACnBG,aAAch2D,KAAK+1D,uBACnBG,eAAgBl2D,KAAKi2D,yBACrBG,eAAgBp2D,KAAKm2D,0B,iBAQ7B,O,sBADAn2D,KAAKmoB,YAAcnoB,KAAKob,WAAWk7C,UAAUt2D,KAAKuC,eAAgBvC,KAAKmC,KAAMgiB,GAC7E,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,kBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,iBAAkBD,KAAK0H,OACxF1H,KAAK0zD,cAAch9C,O,4DAK/B,sBAAI,2BAAY,C,IAAhB,WACI,OAAO1W,KAAKmC,OAAS,EAAAygB,WAAWqwC,kBAAoBjzD,KAAKN,YAAYO,EAAE,iCACnED,KAAKN,YAAYO,EAAE,Y,gCAGnB,YAAAiqD,YAAR,WACI,OAAQlqD,KAAKmC,MACT,KAAK,EAAAygB,WAAWowC,WAEZ,OAAKhzD,KAAKw0B,aAIJx0B,KAAK4yD,mBAAmBv0B,IAAI,EAAAzb,WAAWwiB,aACtCplC,KAAK4yD,mBAAmBp0D,IAAI,EAAAokB,WAAWwiB,cAC1CplC,KAAK4nB,eAAeI,SAAS,QAAS,KAAMhoB,KAAKN,YAAYO,EAAE,8BACxD,IAIf,KAAK,EAAA2iB,WAAWwiB,UAEZ,QAAIplC,KAAKw0B,WAILx0B,KAAK4yD,mBAAmBv0B,IAAI,EAAAzb,WAAWowC,cACpChzD,KAAK4yD,mBAAmBp0D,IAAI,EAAAokB,WAAWowC,cAC1ChzD,KAAK4nB,eAAeI,SAAS,QAAS,KAAMhoB,KAAKN,YAAYO,EAAE,4BACxD,IAIf,QACI,OAAO,I,iCAxLVwzD,GAAmB,iJ,iCAAnBA,EAAmB,8vI,GAAA,MCxBhC,4BACI,iDACI,wDAAkC,2CAAY,EAAA3rC,YAC1C,yDACI,4DAA+C,a,oBAAkC,iBACjF,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,6DAIA,+DAyIA,2DACI,mEACI,6D,oBACA,kEAAM,a,oBAAiB,iBAC3B,mDACA,mEACyB,a,oBAAmB,iBAChD,+CACJ,2CACJ,uCACJ,mCACA,mB,4BA/JgE,0DAED,0FACU,oFAIrC,8CAIA,+CA0IqC,kDACpB,+EAC3B,gEAGe,oE,0VDxIzC,GAIa,EAAA2rC,uB,68CExBb,WAgBA,GAVA,KAEA,KACA,MAEA,KACA,KACA,KACA,MAEA,QAGA,QACA,SACA,SACA,SACA,S,kPCpBA,0BACI,2C,mBACA,mDAAsB,Y,mBAAoB,iBAC9C,mC,MAFgD,6EACtB,kE,mDAE1B,iCAAoC,4FAChC,kDACI,sDACI,0DACI,gEAAkB,a,oBAA6B,iBAC/C,kEAA8D,oGAA9D,iBAEJ,+CACA,4DACI,kEAA0B,a,oBAAyB,iBACnD,kEACI,4GADJ,iBAEJ,+CACA,4DACI,kEAA0B,a,oBAAyB,iBACnD,kEACI,4GADJ,iBAEJ,+CACA,4DACI,kEAAwB,a,oBAAuB,iBAC/C,kEACI,0GADJ,iBAEJ,+CACJ,2CACA,wDACI,8DACJ,2CACJ,uCACA,uDACI,iD,oBACA,sDAAM,a,oBAAiB,iBAC3B,uCACJ,mC,mDAhC0D,2CAIxB,6EAC4C,kDAAsB,yBAI1D,wEAEtB,0DAA8B,yBAGR,wEAEtB,0DAA8B,yBAGV,sEAEpB,wDAII,0DAGqC,kDACpB,+EAC3B,iE,mDAGd,6BACI,iDACI,kDAAI,Y,mBAAmB,iBAC3B,sCACA,6CACI,a,oBACA,4BACI,a,oBACJ,iBACJ,uCACA,uDAAwD,6FAAuB,a,oBAAuB,iBACtG,uDAAwD,+FAAyB,a,oBAAyB,iBAC9G,4C,MAVY,gEAGJ,gGAEI,mGAGuE,sEACE,yE,sBAMrF,0BACI,2C,mBACA,mDAAsB,Y,mBAAoB,iBAC9C,mC,MAFgD,6EACtB,kE,mDAE1B,iCAAuC,mGACnC,mDACA,qDACI,+C,mBACA,qDAAM,a,oBAAiB,iBAC3B,uCACJ,mC,mDANoE,8CAEP,kDACpB,6EAC3B,gE,oEDxCd,iBAqBI,WAAoBj+C,EACR4F,EAAgC1b,EAChC20B,EAAiCzM,EACjC/E,EAA+Bkf,EAC/B5mB,GAJQ,KAAA3F,2BACR,KAAA4F,aAAgC,KAAA1b,cAChC,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAA/E,QAA+B,KAAAkf,cAC/B,KAAA5mB,uBAdZ,KAAAqnB,YAAa,EACb,KAAA7hC,SAAU,EACV,KAAA41D,WAAY,EAMJ,KAAAhgD,MAAwB,K,OAQ1B,YAAArV,SAAN,W,qFACIlB,KAAKwiC,WAAaxiC,KAAKmb,qBAAqB4nB,aAC5C/iC,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,wDAClD1jB,KAAKuC,eAAiBmhB,EAAOnhB,e,iBAEd,O,sBAAX,EAAAvC,KAAW,GAAMA,KAAKob,WAAW25B,gBAAgB/0C,KAAKuC,iB,cAAtD,EAAKijC,IAAM,SACXxlC,KAAKu2D,UAAYv2D,KAAKwlC,IAAIgF,O,8DAGlCxqC,KAAKW,SAAU,E,WAGb,YAAAmnB,OAAN,W,uGAUQ,O,uBARM3D,EAAU,IAAI,EAAAqyC,2BACZ9uD,KAAO1H,KAAKwlC,IAAI99B,KACxByc,EAAQ6iB,aAAehnC,KAAKwlC,IAAIwB,aAChC7iB,EAAQ0iB,aAAe7mC,KAAKwlC,IAAIqB,aAChC1iB,EAAQ8mB,WAAajrC,KAAKwlC,IAAIyF,WAC9BjrC,KAAKmoB,YAAcnoB,KAAKob,WAAWq7C,gBAAgBz2D,KAAKuC,eAAgB4hB,GAAS1jB,MAAK,WAClF,OAAO,EAAKshC,YAAY+F,UAAS,MAErC,GAAM9nC,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,kCACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,wB,4DAInE,YAAAqkB,cAAN,W,0FAEI,OADAtkB,KAAK02D,eAAiB12D,KAAKgjB,QAAQsB,gBACnC,GAAMtkB,KAAK02D,gB,cAAX,SACA12D,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,kCACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,mB,YAGrE,YAAA02D,mBAAA,sBACsB,MAAd32D,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK42D,eAAezgD,gBAAgBJ,GAASK,SACnCpW,KAAKuW,MAAMZ,KAC9B,EAAAkhD,4BAA6B72D,KAAK42D,gBACvBr0D,eAAiBvC,KAAKuC,eAErCvC,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,kCAC1B3jB,KAAKuW,MAAQ,K,cAIrB,YAAAugD,WAAA,sBACsB,MAAd92D,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK+2D,cAAc5gD,gBAAgBJ,GAASK,SAClCpW,KAAKuW,MAAMZ,KAA0B,EAAA68B,oBAAqBxyC,KAAK+2D,eACvEx0D,eAAiBvC,KAAKuC,eAErCvC,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,kCAC1B3jB,KAAKuW,MAAQ,K,cAIrB,YAAAygD,WAAA,sBACsB,MAAdh3D,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKi3D,eAAe9gD,gBAAgBJ,GAASK,SAC1D,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAAsB,EAAA28B,gBAAiBtyC,KAAKi3D,gBAC9ErhC,EAAeyc,QAAU,eACzBzc,EAAesa,SAAWlwC,KAAKuC,eAC/BqzB,EAAeuc,QAAUnyC,KAAKob,WAAW87C,uBAAuBt4D,KAAKoB,KAAKob,YAC1Ewa,EAAeuhC,MAAQ,mBACvBvhC,EAAewhC,UAAY,qBAC3BxhC,EAAeyhC,YAAc,SAC7BzhC,EAAe0hC,cAAgB,gBAC/B1hC,EAAe2hC,kBAAoB,aAEnCv3D,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,kCAC1B3jB,KAAKuW,MAAQ,K,cAIrB,YAAAihD,aAAA,sBACsB,MAAdx3D,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKy3D,qBAAqBthD,gBAAgBJ,GAASK,SAChE,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAAsB,EAAA28B,gBAAiBtyC,KAAKy3D,sBAC9E7hC,EAAeyc,QAAU,eACzBzc,EAAe8hC,YAAa,EAC5B9hC,EAAesa,SAAWlwC,KAAKuC,eAC/BqzB,EAAeuc,QAAUnyC,KAAKob,WAAWu8C,6BAA6B/4D,KAAKoB,KAAKob,YAChFwa,EAAeuhC,MAAQ,mBACvBvhC,EAAewhC,UAAY,qBAC3BxhC,EAAeyhC,YAAc,SAC7BzhC,EAAe0hC,cAAgB,gBAC/B1hC,EAAe2hC,kBAAoB,mBAEnCv3D,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,kCAC1B3jB,KAAKuW,MAAQ,K,+CAlIZqhD,GAAgB,sT,iCAAhBA,EAAgB,wD,OAAA,M,yBACwB,EAAAphC,kB,yBACD,EAAAA,kB,yBACX,EAAAA,kB,yBACM,EAAAA,kB,cAChC,EAAA7R,kBAAgB,I,0xDClC/B,4BACI,8CAAI,Y,mBAA2B,iBACnC,kCACA,+CAIA,kDAiCA,4DAaA,+CACI,gDAAI,a,oBAA2B,iBACnC,mCACA,2CAAG,a,oBAA+B,iBAClC,iDAIA,mDAOA,+CACI,gDAAI,a,oBAAuB,iBAC/B,mCACA,+CACI,mDACI,mDAAG,a,oBAA2B,iBAC9B,0DACI,wCAAS,EAAAgyC,wBAAsB,a,oBAA+B,iBAClE,0DAAqD,wCAAS,EAAAG,gBAAc,a,oBAAuB,iBACvG,uCACJ,mCACA,uFACA,uFACA,wFACA,wFACA,mB,MAlFQ,yEAEH,8CAIC,sDAiCQ,gDAcN,0EAEL,8EACE,sDAIC,sDAQE,sEAIG,0EAEgC,8EACyC,wE,wMDnDpF,GAIa,EAAAc,oB,8ZE7Bb,IAEA,2B,+CAMA,OANsD,OAMtD,EANA,CAFA,OAEsDvzC,sBAAzC,EAAAD,oC,8ECFb,mBAAa,EAAAC,wB,68CCAb,KACA,KAEA,KACA,MAEA,KACA,MACA,KARA,IAUA,Q,2GAEA,aAUI,WAAoBjJ,EAAgC1b,EACxC20B,EAAiCzM,EACjCzO,EAAsCsS,GAF9B,KAAArQ,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAAzO,gBAAsC,KAAAsS,S,OAE5C,YAAA3D,OAAN,W,kGACI,OAA2B,MAAvB9nB,KAAK+nB,gBAAkD,KAAxB/nB,KAAK+nB,gBACpC/nB,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,uBACvB,MAGEkkB,EAAU,IAAI,EAAAnQ,4BACpB,EAAAmQ,EAA6B,GAAMnkB,KAAKmZ,cAAc8O,aAAajoB,KAAK+nB,eAAgB,Q,OAAxF,EAAQG,mBAAqB,S,iBAGzB,O,sBADAloB,KAAKmoB,YAAcnoB,KAAKob,WAAWu7C,mBAAmB32D,KAAKuC,eAAgB4hB,GAC3E,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,yBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAWhoB,KAAKN,YAAYO,EAAE,uBACvDD,KAAKN,YAAYO,EAAE,4BACvBD,KAAKyrB,OAAOsc,SAAS,CAAC,M,6FAzBrB8uB,GAA2B,oN,iCAA3BA,EAA2B,o6B,GAAA,MChBxC,4BACI,iDACI,wDAAkC,2CAAY,EAAA/uC,YAC1C,yDACI,4DAAqD,a,oBAA+B,iBACpF,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,2DAAG,a,oBAAmC,iBACtC,uEAA4B,a,oBAAsC,iBAClE,kEAA4B,a,oBAAuB,iBACnD,kEACI,uEADJ,iBAEJ,+CACA,4DACI,mEACI,6D,oBACA,kEAAM,a,oBAA+B,iBACzC,mDACA,mEAA6E,a,oBAAkB,iBACnG,+CACJ,2CACJ,uCACJ,mCACA,mB,4BAxBgE,0DAEK,8EACI,oFAKtD,mFACyB,qFACA,sEAExB,wDAGoD,kDACnB,+EAC3B,8EAEmE,mE,sQDT7F,GAIa,EAAA+uC,+B,yxDEhBb,KAIA,KAEA,KACA,MAEA,KACA,KACA,KAXA,IAaA,S,yMnITI,+BAAQ,uFACJ,8CACA,Y,mBACJ,iB,gCAH4F,mCACzD,wEAC/B,yF,sBAGR,6BACI,0C,mBACA,kDAAsB,Y,mBAAoB,iBAC9C,4C,MAFgD,6EACtB,kE,mDAMtB,gCAAwD,6FACpD,Y,mBACJ,iB,MADI,2F,mDAEJ,wCAAkD,gGAA0B,KAA1B,CAAgC,sFACjD,MACjC,sC,iCAFgB,iD,sBAIhB,wBAA0B,Y,mBAA4B,kB,MAA5B,0E,mDAEtB,qC,mBAEI,qDAAG,Y,sCAA+E,iBAClF,8DAAsC,iGAElC,kEAA2C,a,oBAAyB,iBACpE,gEACI,oEACI,wEAA8B,mBAAG,iBACrC,uDACA,sEACI,0GADJ,iBAEJ,mDACA,kEAA2C,a,oBAAyB,iBACpE,gEACI,oEACI,wEAA8B,mBAAG,iBACrC,uDACA,sEACI,0GADJ,iBAEJ,mDACA,mEACI,6D,oBACA,kEAAM,a,oBAA8B,iBACxC,mDACJ,+CACJ,2C,oDA1B4B,yEAErB,iJAC6D,gEAEjB,sEAMnC,wDAEmC,sEAMnC,wDAEyD,kDAC5B,+EAC3B,8E,sBAWd,2BAAiC,Y,mBAA0B,kB,MAA1B,wE,4LAnCzC,6BACI,kEA2BA,iDACI,mDAMA,4DACA,YACJ,iBACJ,iD,8BApCQ,8HA2BoB,qXAMd,yDACN,gG,mDAGR,gCAAwD,iGACpD,Y,mBACJ,iB,iCADI,wI,mDAEJ,4CACsC,iGAA2B,KAA3B,CAAiC,oFAA4B,MAEnG,sC,iCAHoB,4EAAiE,oC,sBAKrF,wBAAyC,Y,mBAAuB,kB,MAAvB,qE,sBAczB,2BACI,+DACA,Y,mBACJ,kB,MADI,sH,sBAEJ,2BACI,+DACA,Y,mBACJ,kB,MADI,wH,yBAjBZ,yBACI,0DAAI,Y,mBAA8B,iBAClC,0DACI,gE,mBAEI,iEAAmD,iBACvD,kE,oBACI,a,oBAAqC,iBAC7C,mDACA,4DAAI,a,wBAA2B,iBAC/B,4DACI,sEAIA,sEAIJ,mDACJ,gD,uBAnBQ,2EAEG,wEACC,8EAED,qEAAgD,oEAC/C,mHAEJ,sEAEM,2CAIA,6C,yBAjBtB,+BACI,qDACI,6DAqBJ,0CACJ,uC,8BAtBY,mD,sBAwBZ,wBAAiD,Y,mBAA2B,kB,MAA3B,yE,sBAMjC,2BACI,Y,mBACJ,kB,MADI,4H,sBAEJ,2BAAgD,Y,mBAAuB,kB,MAAvB,qE,qJAGhD,sB,4DAAmE,+S,oEAT3E,yBACI,0DAAI,Y,mBAAqC,iBACzC,0DACI,oEAGA,qEACJ,mDACA,4DACI,oEAOA,aACJ,iBACA,+D,oBACI,a,wBAA2B,iBACnC,gD,4CAnBQ,kFAEM,yGAGA,sEAGc,wDAOpB,6FAEwC,8FAAxC,2DACA,oG,yBArBhB,+BACI,qDACI,6DAqBJ,0CACJ,uC,8BAtBY,uD,yBAzFhB,6BACI,8CAAI,Y,mBAAiE,iBACrE,+CAAmB,6BAAQ,Y,uBAAkC,iBAAS,iBACtE,+CAAG,a,oBAA8B,iBACjC,wDAGA,gEAGA,mDAA0B,a,oBAA0B,iBACpD,mDACA,gEAuCA,wDAGA,qEAIA,mDAA0B,a,oBAAqB,iBAC/C,mDACA,wDAyBA,mDAA0B,a,oBAAyB,iBACnD,mDACA,wDAyBA,sDAA0B,a,oBAA6C,iBAC3E,6C,6BAhHQ,2GACuB,8EACxB,6EAC2E,qDAIrC,oDAEf,yEACvB,qDACW,oDAuCoE,yDAK9E,wDAEsB,oEACvB,oEACuB,kEAyBA,wEACvB,4EACuB,0EAyBA,kGmI9G9B,kBAKI,WAAYz7C,EAAwB1b,EAChC20B,EAAyBzM,EACjB/E,EAAuB1H,GAFnC,MAGI,YAAMC,EAAY1b,EAAa20B,EAAWzM,EAAgBzM,IAAqB,K,OADvE,EAAA0H,Q,SAHkC,OAOxC,YAAA3hB,SAAN,W,qFACIlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,kDAElD,OADA1jB,KAAKuC,eAAiBmhB,EAAOnhB,eAC7B,GAAMvC,KAAK6Z,Q,cAAX,SACA7Z,KAAKyyC,aAAc,E,0DAXlBolB,GAA4B,mO,iCAA5BA,EAA4B,ooEnInBzC,4BACI,8CACI,Y,mBACJ,iBACA,sDAIJ,kCACA,wDAIA,4DAkHA,mB,MA7HQ,wFAEoE,kDAK9D,8DAIA,gD,iVmIEd,CAIkD,EAAAzjB,sBAArC,EAAAyjB,gC,8ECnBb,+BAWA,OAVoB,EAAA56C,cAAgB,mCAChB,EAAAC,cAAgB,mCAChB,EAAAkB,aAAe,oCACf,EAAAC,gBAAkB,uCAClB,EAAAE,OAAS,CACrBk2B,qBAAsB,gBACtBG,kBAAmB,gBACnBL,uBAAwB,wCACxBI,oBAAqB,iDAE7B,EAXA,GAAa,EAAA33B,gB,68CCAb,KAIA,KAEA,KACA,MAIA,KACA,KACA,MACA,KAdA,IAgBA,S,oKCbQ,4BACI,kD,mBACA,0DAAsB,Y,mBAAoB,iBAC9C,2C,MAFgD,6EACtB,kE,sBAIlC,6BACI,0C,mBACA,kDAAsB,Y,mBAAoB,iBAC9C,4C,MAFgD,6EACtB,kE,sBAGtB,oC,mBACI,Y,mBAAiC,kB,MADT,+DACxB,gG,mDACJ,oC,mBACI,iDAAG,Y,mBAAwC,iBAC3C,0DAAiF,6FAE7E,oD,oBACA,0DAAM,a,oBAAkC,iBAC5C,2CACJ,uC,oDAP4B,0EACrB,qFAEC,+DAAiC,sBACA,+EAC3B,kF,sBASN,8BACI,uDACA,Y,mBACJ,kB,MADI,kH,yBAJR,yBACI,Y,mBACA,gCAIJ,2C,8BALI,wHACM,iD,sBAKV,yBAA4B,Y,mBAAyB,kB,MAAzB,uE,yBAXhC,yBACI,kDAAI,Y,mBAAwB,iBAC5B,kDAAI,YAAiB,iBACrB,kDAAI,a,oBAAuB,iBAC3B,wDAOA,wDACJ,wC,8BAXQ,qEACA,oDACA,qEACA,qDAOA,uD,sBAWY,8BACwC,Y,mBAAgC,kB,MAAhC,8E,yBALhD,6BACI,8DAAI,Y,mBAAmB,iBACvB,8DACI,uEAA8B,YAA8B,iBAC5D,2EAEJ,uDACA,gEAAI,a,oBAAuB,iBAC3B,gEAAI,a,4CAEJ,iBACJ,6D,8BAVQ,gEAE8B,+DAE1B,kEAEJ,qEACA,2L,yBAUJ,yBACI,kEACI,Y,uBACJ,iBACA,kEACI,Y,0CACJ,iBACJ,wD,uBALQ,mLAGA,mL,yBATpB,6BACI,6DAA6B,Y,mBAAoB,iBACjD,4DACI,6DACI,sEAQJ,mDACJ,+CACJ,4C,8BAbiC,iEAGjB,6D,yBAvBpB,6BACI,sDACI,sDACI,0DAAI,Y,mBAAwB,iBAC5B,2DAAI,aAAiB,iBACrB,4EAYJ,+CACJ,2CACA,2DAeJ,wC,8BA/BgB,qEACA,oDACU,mDAcH,oD,mDAyBnB,6BACI,0DACI,iEACI,kGAA4B,M,mBAAQ,8BAAyB,gBAAO,iBAAO,iBAC/E,6DAA6B,a,oBAA0B,iBACvD,+EAAsD,sGAAgC,KAAhC,CAAsC,0FACvD,MAAQ,iBACjD,+CACJ,2C,iCAN4C,mFAEP,wEACT,gE,mDAdhC,6BACI,mDACI,6DAAwD,iGACpD,Y,mBACJ,iBACA,wDACI,Y,oBACJ,iBACJ,2CACA,2DASJ,gD,iCAfY,8GAGA,oHAGe,yD,mDAYnB,gCAAwD,8FACpD,Y,mBACJ,iB,MADI,mH,mDAEJ,gCAA6D,mGAEzD,Y,mBACJ,iB,iCAF+B,+CAC3B,iH,mDAEJ,mCAAmF,0FAG/E,uD,mBACA,4DAAM,Y,mBAA+B,iBACzC,8C,oDAJI,6CAA8B,sBAEG,6EAC3B,6E,mDAGd,yCAAmD,mGAA6B,KAA7B,CAAmC,uFACpD,MAA+B,iB,iCADhD,iD,mDAEjB,6BACI,2EAAwD,+GAAuC,gGACrD,iBAC9C,0C,iCAF0B,gE,mDAOlB,6BACI,qEAAwD,2FAAqB,MACzE,Y,mBACJ,iBACA,qEAA6D,2FAAqB,MAC9E,Y,mBACJ,iBACJ,kD,MALQ,yHAGA,6H,mDAGR,0CACiC,+FAAyB,KAAzB,CAA+B,kFAA0B,MAC9D,iB,iCAFV,sCAAuB,uBAAvB,CAAuB,kCAAvB,CAAuB,+B,yBAVjD,6BACI,0DACI,iEAQA,6EAGJ,8CACJ,oD,8BAZ4B,uDAUhB,uD,mDAYJ,6BACI,qEAAwD,6FAAuB,MAC3E,Y,mBACJ,iBACA,qEAA6D,6FAAuB,MAChF,Y,mBACJ,iBACJ,kD,MALQ,2HAGA,+H,mDAGR,4CACmE,iGAA2B,KAA3B,CAAiC,oFACrE,MAAkC,iB,iCAF7C,gDAAiC,yBAAjC,CAAiC,kCAAjC,CAAiC,+B,yBAV7D,6BACI,0DACI,iEAQA,+EAGJ,8CACJ,oD,8BAZ4B,yDAUmB,yD,4DA1DnD,6BACI,sDACI,+DAGA,+DAIA,gEAMJ,0CACA,sEAEA,0DAIA,uDAA0B,a,oBAAsB,iBAChD,mDAAG,a,oBAA8C,iBACjD,kEAeA,uDAA0B,a,oBAAoB,iBAC9C,mDAAG,a,oBAAoF,iBACvF,wDACI,4DAEI,a,uBAAuC,iBAC/C,2CACA,kEAeJ,iD,8BA3DuF,sDAI3E,yDAKA,8GAMkC,qDACxB,0DAIQ,qEACvB,6FACW,gIAeY,mEACvB,+HAEyD,0FACpD,mDACA,0GAEM,+G,yBA5HtB,6BACI,2DAEA,6DAQA,mDAaA,oDAmCA,8DAmBA,gEA8DJ,6C,6BA3I8D,6EAEW,kEAQjE,iDAaa,kDAmCH,iDAmBA,mDDzElB,iBAqBI,WAAoB5B,EAAgCD,EACxCzb,EAAkC20B,EAClCzM,EAAwCnS,EACxCoN,GAHQ,KAAAzH,aAAgC,KAAAD,uBACxC,KAAAzb,cAAkC,KAAA20B,YAClC,KAAAzM,iBAAwC,KAAAnS,mBACxC,KAAAoN,QAnBZ,KAAAliB,SAAU,EACV,KAAA8xC,aAAc,EAEd,KAAAqlB,gBAAiB,EACjB,KAAAC,iBAAkB,EAClB,KAAAC,kBAAmB,EACnB,KAAAC,mBAAoB,EACpB,KAAAC,mBAAoB,EACpB,KAAAC,qBAAsB,EACtB,KAAAC,gBAAiB,EAEjB,KAAA51B,YAAa,EASTxiC,KAAKwiC,WAAarnB,EAAqB4nB,a,OAGrC,YAAA7hC,SAAN,W,qFACIlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,kDAElD,OADA1jB,KAAKuC,eAAiBmhB,EAAOnhB,eAC7B,GAAMvC,KAAK6Z,Q,cAAX,SACA7Z,KAAKyyC,aAAc,E,yBAIrB,YAAA54B,KAAN,W,gGACI,OAAI7Z,KAAKW,QACL,KAEJX,KAAKW,SAAU,EACf,EAAAX,KAAW,GAAMA,KAAKob,WAAWi9C,4BAA4Br4D,KAAKuC,kB,cAAlE,EAAK+1D,IAAM,SACXt4D,KAAKW,SAAU,E,YAGb,YAAA43D,UAAN,W,0FACI,OAAIv4D,KAAKW,QACL,IAGc,GAAMX,KAAKmb,qBAAqB+Z,WAAWl1B,KAAKN,YAAYO,EAAE,yBAC5ED,KAAKN,YAAYO,EAAE,yBAA0BD,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,Y,OAC/F,IAFkB,SAGd,U,iBAKA,O,sBADAD,KAAKw4D,iBAAmBx4D,KAAKob,WAAWq9C,0BAA0Bz4D,KAAKuC,gBACvE,GAAMvC,KAAKw4D,kB,cAAX,SACAx4D,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,oBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,eACjED,KAAK6Z,O,4DAIP,YAAAqrB,OAAN,W,0FACI,OAAIllC,KAAKW,QACL,IAGc,GAAMX,KAAKmb,qBAAqB+Z,WAAWl1B,KAAKN,YAAYO,EAAE,sBAC5ED,KAAKN,YAAYO,EAAE,sBAAuBD,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,Y,OACnG,IAFkB,SAGd,U,iBAKA,O,sBADAD,KAAK04D,cAAgB14D,KAAKob,WAAWu9C,uBAAuB34D,KAAKuC,gBACjE,GAAMvC,KAAK04D,e,cAAX,SACA14D,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,kBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,yBACjED,KAAK6Z,O,4DAIP,YAAA++C,WAAN,W,0FACI,OAAyB,MAArB54D,KAAK64D,cAAwB74D,KAAKs4D,IAAIxxB,WAAa,EAAAhF,SAASM,MAC5DpiC,KAAKo4D,gBAAkBp4D,KAAKo4D,eAC5B,KAEmB,GAAMp4D,KAAKmb,qBAAqB+Z,WAAWl1B,KAAKN,YAAYO,EAAE,yBACjFD,KAAKN,YAAYO,EAAE,qBAAsBD,KAAKN,YAAYO,EAAE,kBAAmBD,KAAKN,YAAYO,EAAE,W,cAD/E,UAGnBD,KAAKmb,qBAAqBuM,UAAU,8C,YAI5C,YAAAoxC,gBAAA,SAAgBC,GACZ/4D,KAAKo4D,gBAAiB,GAG1B,YAAAY,gBAAA,WACIh5D,KAAKm4D,qBAAuBn4D,KAAKm4D,qBAGrC,YAAAc,qBAAA,WACIj5D,KAAKm4D,qBAAsB,GAG/B,YAAAe,cAAA,WACQl5D,KAAKW,UAGTX,KAAKk4D,mBAAoB,IAG7B,YAAAiB,mBAAA,SAAmBC,GACfp5D,KAAKk4D,mBAAoB,EACrBkB,IACAp5D,KAAK6Z,OACL7Z,KAAKyV,iBAAiBkB,KAAK,uBAInC,YAAA0iD,YAAA,SAAYviB,GACR92C,KAAK83D,eAAiBhhB,EACtB92C,KAAK+3D,iBAAkB,GAG3B,YAAAuB,WAAA,SAAWz/C,GACP7Z,KAAK+3D,iBAAkB,EACnBl+C,GACA7Z,KAAK6Z,QAIb,YAAA0/C,cAAA,SAAcziB,GACV92C,KAAKg4D,iBAAmBlhB,EACxB92C,KAAKi4D,mBAAoB,GAG7B,YAAAuB,aAAA,SAAa3/C,GACT7Z,KAAKi4D,mBAAoB,EACrBp+C,GACA7Z,KAAK6Z,QAIb,sBAAI,wBAAS,C,IAAb,WACI,OAAmB,MAAZ7Z,KAAKs4D,KAAsC,MAAvBt4D,KAAKs4D,IAAI9xD,YAChC,IAAI2iB,KAAKnpB,KAAKs4D,IAAI9xD,YAAc,IAAI2iB,M,gCAG5C,sBAAI,0CAA2B,C,IAA/B,WACI,OAA4B,MAArBnpB,KAAK64D,eAAyB74D,KAAK64D,aAAaY,WAAaz5D,KAAK64D,aAAaa,iB,gCAG1F,sBAAI,2BAAY,C,IAAhB,WACI,OAAmB,MAAZ15D,KAAKs4D,IAAct4D,KAAKs4D,IAAIO,aAAe,M,gCAGtD,sBAAI,0BAAW,C,IAAf,WACI,OAAmB,MAAZ74D,KAAKs4D,IAAct4D,KAAKs4D,IAAIqB,gBAAkB,M,gCAGzD,sBAAI,gCAAiB,C,IAArB,WACI,OAAmB,MAAZ35D,KAAKs4D,KAAet4D,KAAKs4D,IAAIvtB,eACvB/qC,KAAKs4D,IAAIsB,UAAY55D,KAAKs4D,IAAIvtB,aAArC,KAAoDgL,QAAQ,GAAK,G,gCAG3E,sBAAI,mCAAoB,C,IAAxB,WACI,OAAO/1C,KAAK65D,kBAAoB,EAAI,EAAI,G,gCAG5C,sBAAI,8BAAe,C,IAAnB,WAEI,OADiB75D,KAAKs4D,IAAIj2B,KAAKgB,SACd,QAAU,Q,gCAG/B,sBAAI,6BAAc,C,IAAlB,WACI,OAAOrjC,KAAKs4D,IAAIj2B,KAAKuB,6B,gCAGzB,sBAAI,wBAAS,C,IAAb,WACI,OAAO5jC,KAAKs4D,IAAIj2B,KAAKyB,W,gCAGzB,sBAAI,6BAAc,C,IAAlB,WACI,OAAO9jC,KAAKs4D,IAAIj2B,KAAK6B,0B,gCAGzB,sBAAI,iCAAkB,C,IAAtB,WACI,OAAQlkC,KAAKs4D,IAAIxxB,WAAa,EAAAhF,SAASM,MAA6B,MAArBpiC,KAAK64D,cAC1B,MAArB74D,KAAK64D,eAAyB74D,KAAK64D,aAAaY,W,iEA7LhDK,GAAiC,2Q,iCAAjCA,EAAiC,w7ECtB9C,4BACI,8CACI,Y,mBACA,gCAIJ,sCACJ,kCACA,wDAIA,2DA6IA,mB,MAxJQ,iGACO,6DAMD,8DAIA,4C,8SDKd,GAIa,EAAAA,qC,68CEtBb,WAUA,GAHA,KACA,KAEA,QACA,S,8CAEA,aAaI,WAAoB1+C,EAAgCD,GAAhC,KAAAC,aAAgC,KAAAD,uBAP1C,KAAA4+C,UAAY,IAAI,EAAAh3C,aAChB,KAAAwf,WAAa,IAAI,EAAAxf,aAG3B,KAAAi3C,mBAA+B,EAAAl4B,SAASm4B,iBACxC,KAAAC,sBAAqC,EAAA/3B,YAAYg4B,S,OAI3C,YAAAryC,OAAN,W,mEACI,IACI9nB,KAAKmb,qBAAqB2Z,WAAW,gBACrC90B,KAAK+5D,UAAUrjD,OACjB,U,iBAGN,YAAAwuB,OAAA,WACIllC,KAAKuiC,WAAW7rB,Q,iCAnBX0jD,GAAmB,gF,iCAAnBA,EAAmB,6ZCjBhC,4BACI,iDACI,wDAAuE,wCAAS,EAAAl1B,Y,mBAAU,6BAC/D,gBAAO,iBAAO,iBACzC,oDAA6B,a,oBAA8B,iBAC3D,qDAAgB,a,oBAAqC,iBACrD,0EACwE,6CAAc,EAAAA,YACtF,2CACJ,uCACJ,mCACA,mB,MAT4C,mFAEP,6EACb,oFACQ,2CAAkB,gBAAlB,CAAkB,4BAAlB,CAAkB,kCAAlB,CAAkB,qC,sGDOlD,GAIa,EAAAk1B,uB,68CEjBb,W,GAOA,KACA,K,oDAEA,aAYI,WAAoBh/C,EAAgCD,GAAhC,KAAAC,aAAgC,KAAAD,uBAN1C,KAAAk/C,aAAe,IAAI,EAAAt3C,aACnB,KAAAwf,WAAa,IAAI,EAAAxf,a,OAOrB,YAAA+E,OAAN,W,kGACI,GAA2B,MAAvB9nB,KAAKs6D,gBAAkD,KAAxBt6D,KAAKs6D,eACpC,U,iBAKgB,O,sBADhBt6D,KAAKmoB,YAAcnoB,KAAKob,WAAWm/C,uBAAuBv6D,KAAKuC,eAAgBvC,KAAKs6D,gBACpE,GAAMt6D,KAAKmoB,a,cAArBqyC,EAAU,SACVC,EAAgBC,KAAKC,UAAUH,EAAS,KAAM,GACpDx6D,KAAKmb,qBAAqBy/C,SAASnwD,OAAQgwD,EAAe,KAAM,uCAChEz6D,KAAKmb,qBAAqB2Z,WAAW,sBACrC90B,KAAKq6D,aAAa3jD,O,4DAI1B,YAAAwuB,OAAA,WACIllC,KAAKuiC,WAAW7rB,Q,iCA1BXmkD,GAAwB,gF,iCAAxBA,EAAwB,88B,GAAA,MCdrC,+BAAyB,2CAAY,EAAA/yC,YACjC,iDACI,wDAAuE,wCAAS,EAAAod,Y,mBAAU,6BAC/D,gBAAO,iBAAO,iBACzC,qDAA6B,a,oBAA4B,iBACzD,uDACI,2DACI,+DACI,qEAA4B,a,oBAAgC,iBAC5D,kE,oBAEI,iEACJ,uDACJ,mDACA,kEACI,uEADJ,iBAEJ,+CACJ,2CACA,2DACI,qD,oBACA,0DAAM,a,oBAAmB,iBAC7B,2CACA,2DAAwD,wCAAS,EAAAA,YAC7D,a,oBACJ,iBACJ,uCACJ,mCACA,mB,4BA3B+C,2CAEH,oFAEP,2EAIW,gFACsB,wFAMlD,wDAG6C,kDACpB,+EAC3B,kEAGN,mG,qMDbZ,GAIa,EAAA21B,4B,68CEdb,WAmBA,GAXA,KAKA,KACA,MAEA,KACA,KAEA,QAEA,S,oHCTQ,6BACI,0DAAQ,Y,mBAAmB,iBAAU,Y,iEAEzC,kB,6BAFY,uEAA6B,0MDUjD,iBAiBI,WAAoBz/C,EAAgC1b,EACxC20B,EAAiCzM,EACjC6D,EAAwBC,GAFhB,KAAAtQ,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAA6D,SAAwB,KAAAC,iBAd3B,KAAAoY,UAAY,EACZ,KAAAgT,KAAM,EAEN,KAAAC,SAAW,OACV,KAAAb,WAAa,IAAI,EAAAnzB,aACjB,KAAAwf,WAAa,IAAI,EAAAxf,aAI3B,KAAA+3C,eAAiB,E,OAOX,YAAAhzC,OAAN,W,2GAoBQ,O,uBAlBM,EAAU,IAAI,EAAAizC,aACZD,eAAiB96D,KAAK86D,eACzB96D,KAAK82C,MACN,EAAQgkB,iBAAmB,GAG3B,GAAgB,EACd9lC,EAAS,gD,wDACI,SAAMh1B,KAAKob,WAAW4/C,qBAAqBh7D,KAAKuC,eAAgB,I,UACjE,OADRyB,EAAS,WAC2C,MAApCA,EAAO4jC,0BAAzB,Y,iBAEI,O,sBAAA,GAAM5nC,KAAKilC,iBAAiBllB,wBAAwB/b,EAAO4jC,0BAA2B,O,cAAtF,S,6BAEA,GAAgB,E,+BAI5B5nC,KAAKmoB,YAAc6M,IACnB,GAAMh1B,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQh1B,KAAK82C,IAAM,cAAgB,kBACpE92C,KAAKk2C,WAAWx/B,KAAK1W,KAAK86D,gBACtB,GACA96D,KAAK4nB,eAAeI,SAAS,CACzBnK,KAAM7d,KAAKN,YAAYO,EAAE,gCACzBkC,KAAM,UACNsrC,QAAS,MAEbztC,KAAKyrB,OAAOsc,SAAS,CAAC,cAAe,CAAEsP,WAAYr3C,KAAK0rB,kBAExD1rB,KAAK4nB,eAAeI,SAAS,UAAW,KACpChoB,KAAKN,YAAYO,EAAE,gBAAiB,EAAQ66D,eAAeruD,a,4DAK3E,YAAAy4B,OAAA,WACIllC,KAAKuiC,WAAW7rB,QAGpB,sBAAI,gCAAiB,C,IAArB,WACI,OAAO1W,KAAK86D,eAAiB96D,KAAK8jC,W,iEA3D7Bm3B,GAAoB,qN,iCAApBA,EAAoB,yD,OAAA,K,oBAQlB,EAAA36C,kBAAkB,G,07BCnCjC,+BAAyB,2CAAY,EAAAwH,YACjC,iDACI,wDAAuE,wCAAS,EAAAod,Y,mBAAU,6BAC/D,gBAAO,iBAAO,iBACzC,qDAA6B,a,oBAA6C,iBAC1E,uDACI,2DACI,iEAA4B,a,oBAAiD,iBAC7E,iEACI,uEADJ,iBAEJ,+CACJ,2CACA,2DAIA,2DACI,qD,oBACA,0DAAM,a,oBAAmB,iBAC7B,2CACA,2DAAwD,wCAAS,EAAAA,YAC7D,a,oBACJ,iBACA,0DACI,a,oBACJ,iBACJ,uCACJ,mCACA,mDACA,mB,4BA7B+C,2CAEH,oFAEP,wFAGO,4FAExB,wDAGP,0CAIoD,kDACpB,+EAC3B,kEAGN,iGAGA,+HAIC,gD,oQDLb,GAIa,EAAA+1B,wB,68CE3Bb,KACA,KAEA,KACA,KAJA,I,iECYoB,2BACI,Y,mBACJ,kB,MADI,yH,sBAEJ,2BACI,Y,mBACJ,kB,MADI,8HDVxB,iBAQI,WAAoBp4C,EAA+B0S,EACvCpa,GADQ,KAAA0H,QAA+B,KAAA0S,cACvC,KAAApa,uBAJZ,KAAA+/C,WAAY,E,OAMZ,YAAAh6D,SAAA,sBACIlB,KAAK6iB,MAAMY,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,0DACzB,OAAlB,EAAA1jB,KAAkB,GAAMA,KAAKmb,qBAAqB4nB,c,OAC7B,OADrB,EAAKP,WAAa,SACG,GAAMxiC,KAAKu1B,YAAYwf,gBAAgBrxB,EAAOnhB,iB,cAA7DuzB,EAAe,SACrB91B,KAAKk7D,UAAYplC,EAAayU,O,gDAX7B4wB,GAAiB,uH,iCAAjBA,EAAiB,yrBCV9B,4BACI,iDACI,qDACI,yDACI,6DAAyB,Y,oBAAqB,iBAC9C,+DACI,iEACI,a,oBACJ,iBACA,iEACI,a,oBACJ,iBACA,mEAGA,mEAGJ,mDACJ,+CACJ,2CACA,wDACI,8DACJ,2CACJ,uCACJ,mCACA,mB,MAtByC,mEAGjB,gIAGA,8HAEsE,kDAGG,kD,kHDTjG,GAIa,EAAAA,qB,yxDEVb,KAIA,KAEA,KACA,MACA,MACA,KATA,IAWA,SAEA,SACA,S,iGlIXA,wBAA2B,Y,mBAA6B,kB,MAA7B,2E,sBAC3B,wBAA0B,Y,mBAAyC,kB,MAAzC,uF,mDAC1B,qCACI,6CAAG,Y,mBAAwC,iBAC3C,qDACI,+FAAyB,Y,mBAA6B,iBAC9D,kC,MAHO,qFAE0B,2E,sBAI7B,4BACI,+C,mBACA,uDAAsB,Y,mBAAoB,iBAC9C,uC,MAFsD,6EAC5B,kE,sBAG9B,qCACI,Y,mBACJ,kB,MADI,uG,sBAUY,6BACI,2D,mBACA,mEAAsB,Y,mBAAoB,iBAC9C,4D,MAF8C,6EACpB,kE,mDAE1B,2BACI,mGACA,Y,mBACJ,iB,MADI,iH,mDAbhB,4BACI,sDACI,qDACJ,0CACA,sDACI,yDACI,aACA,wCAIA,gEAIJ,+CACA,aACJ,iBACA,wDACI,+DACI,iHACA,a,oBACJ,iBACJ,2CACJ,uC,8CAtBa,sFAID,sFACc,8CAIuC,mEAKzD,iFAG+D,uEAE3D,yG,0IkI1BhB,cAKI,WAAY//C,EAAwBma,EAChC/f,EAAoDC,EACpD+hB,EAAsC3U,GAF1C,MAGI,YAAMzH,EAAYma,EAAa/f,EAA0BC,EAAkB+hB,IAAc,K,OADnD,EAAA3U,Q,SAHD,OAOnC,YAAA3hB,SAAN,W,qFACIlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,kDAElD,OADA1jB,KAAKuC,eAAiBmhB,EAAOnhB,eAC7B,GAAM,YAAMrB,SAAQ,Y,cAApB,S,yBAIR,YAAAk3C,OAAA,SAAOj2C,GAAP,WACI,OAAQA,GACJ,KAAK,EAAAqY,sBAAsB8N,gBACvB,IAAM8yC,EAAUp7D,KAAKq4C,UAAUr4C,KAAK24C,YAAa,EAAAZ,uBACjDqjB,EAAQj5D,KAAO,EAAAqY,sBAAsB8N,gBACrC8yC,EAAQ74D,eAAiBvC,KAAKuC,eAC9B64D,EAAQ9mC,UAAU3Q,WAAU,SAAC6Q,GACzB,EAAKgkB,aAAahkB,EAAS,EAAAha,sBAAsB8N,sBAQvD,YAAA4vB,sBAAV,WACI,OAAOl4C,KAAKob,WAAWigD,kCAAkCr7D,KAAKuC,iBAGxD,YAAA01C,eAAV,SAAyB91C,GACrB,OAAOA,IAAS,EAAAqY,sBAAsB8N,iB,iCAlCjC+wB,GAAuB,0O,iCAAvBA,EAAuB,wjClIpBpC,4BACI,8CAAI,Y,mBAAyB,iBACjC,kCACA,6CACA,6CACA,0DAKA,8CACI,a,oBACA,iCAIJ,mCACA,yDAGA,8CACI,qDAyBJ,mCAEA,yFACA,uFACA,uFACA,uFACA,wFACA,wFACA,mB,MArDQ,sEAEL,sDACA,qDACyB,sDAKxB,iFACA,wFACO,8CAKiB,wDAIpB,qD,uHkILR,CAI6C,2BAAhC,EAAAA,2B,yxDCpBb,KAMA,KACA,MAEA,KACA,KACA,KACA,KAZA,IAcA,SAGA,SAEA,S,qKCPY,8CAAuE,4FAEvE,8C,gCAFuB,gDAAiC,gB,sBAKhD,6BACI,iEACA,iEAAG,Y,mBAAqC,iBACxC,iEACI,2EAAQ,a,oBAA+C,iBAC3D,2DACJ,iE,MAJO,kFAES,qG,sBAGhB,6BACI,8E,mBACI,qEAAG,Y,mBAAwC,iBAC3C,Y,mBACJ,iBACA,mEACA,mEAAG,a,oBAAwC,iBAC/C,iE,MANgC,6EACrB,qFACH,sJAGD,wF,sBAoBP,wBACI,sEAAQ,Y,mBAA4C,iBACxD,uD,MADY,iG,qBAEZ,oB,mDAKA,6BACI,wEAAmB,Y,mBAA6C,iBAChE,wEAAgE,kGAAhE,iBAEJ,+D,iCAHuB,iGAC6C,gD,sBAOhE,2BAAuB,Y,mBAAmB,kB,MAAnB,iE,sBACvB,2BAAsB,Y,mBAAoB,kB,MAApB,kE,uFArDlC,iCAAY,4FACR,8DACI,8EAOA,+EAQA,iEACI,oEACI,qEAAiC,a,oBACjC,4BACmB,qBAAK,iBAC5B,2DACA,oEACI,qEAAmC,a,oBACnC,4BACmB,qBAAK,iBAC5B,2DACA,oEACI,qEAAmC,a,oBACnC,4BACmB,uCAAuB,iBAC9C,2DACJ,uDACA,+DAAG,a,oBAAgD,iBACnD,oEAGA,qEACA,kEACI,sEAAyB,qBACzB,yE,oBAAsC,aAAO,iBACjD,uDACA,+EAKJ,mDACA,gEACI,uEACI,iE,oBACA,2EACA,2EACJ,uDACA,uEACyB,a,oBAAkB,iBAC/C,mDACJ,+C,mDA1DkC,2CAEZ,+CAOA,8CAU2B,4GAKE,gHAKA,gHAKxC,+FACA,+CAGC,8CACmB,yEAEb,kFAAgC,0CAE5B,+CAO2C,kDACpB,+EAC3B,+CACA,8CAGe,kEDlD7C,kBAYI,WAAYj+B,EAAwB1b,EAChC20B,EAAyBzM,EACjB2N,EAA0Bpa,GAFtC,MAGI,YAAMC,EAAY1b,EAAa20B,EAAWzM,EAAgBzM,IAAqB,K,OADvE,EAAAoa,cATZ,EAAApzB,KAAO,EAAAqY,sBAAsBqO,cAWzB,EAAKyyC,SAAW7wD,OAAO8F,SAASC,cAAc,UAC9C,EAAK8qD,SAAS3+C,IAAM,wBACpB,EAAK2+C,SAAS1+C,OAAQ,E,SAduB,OAiBjD,YAAA1b,SAAA,WACIuJ,OAAO8F,SAASsN,KAAKH,YAAY1d,KAAKs7D,WAG1C,YAAA5lD,YAAA,WACIjL,OAAO8F,SAASsN,KAAKF,YAAY3d,KAAKs7D,WAG1C,YAAA5mC,KAAA,SAAKC,GAED,OADA,YAAMD,KAAI,UAACC,GACJ30B,KAAKu3C,gBAAgB5iB,EAAa/zB,WAG7C,YAAAknB,OAAA,WACI,OAAI9nB,KAAKw0B,QACE,YAAMS,QAAO,UAACj1B,KAAKmoB,aAEnBnoB,KAAK40B,UAIV,YAAAA,OAAV,sBACUzQ,EAAU,IAAI,EAAAo3C,oCAKpB,OAJAp3C,EAAQ+D,mBAAqBloB,KAAKkoB,mBAClC/D,EAAQrE,MAAQ9f,KAAK8f,MACrBqE,EAAQxlB,IAAMqB,KAAKrB,IAEZ,YAAMi2B,OAAM,WAAC,gD,wDAEC,OADjB50B,KAAKmoB,YAAcnoB,KAAKob,WAAWogD,0BAA0Br3C,GAC5C,GAAMnkB,KAAKmoB,a,OAC5B,OADMvnB,EAAW,SACjB,GAAMZ,KAAKu3C,gBAAgB32C,I,cAA3B,S,eAIM,YAAA22C,gBAAd,SAA8B32C,G,uGAIZ,OAHdZ,KAAK8f,MAAQ,KACb9f,KAAKw0B,QAAU5zB,EAAS4zB,QACxBx0B,KAAKrB,IAAMiC,EAASjC,IACN,GAAMqB,KAAKu1B,YAAY0L,Y,cAA/BjgB,EAAQ,SACdvW,OAAOmT,YAAW,WACH,IAAKnT,OAAegxD,OAAO,CAClCC,QAASnrD,SAASy1B,eAAe,MACjCtnC,MAAO,4BAA8B0N,mBAAmB4U,GACpD,WAAa5U,mBAAmB,EAAKzN,KAAO,oBAChDggB,KAAM,QAEX,K,6CA/DE45B,GAA+B,gO,iCAA/BA,EAA+B,0mDCzB5C,4BACI,iDACI,qDACI,yDACI,4DACI,Y,oBACA,6BAAO,a,oBAAkC,iBAC7C,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,+EAGA,gEA2DJ,2CACJ,uCACJ,mCACA,mB,MAxEoB,0HACO,gFAE8C,mFAKzD,8CAE4E,+C,6RDM5F,CAIqD,EAAAjjB,wBAAxC,EAAAijB,mC,yxDEzBb,KAEA,KACA,MAEA,KACA,KACA,KACA,KARA,IAUA,SAEA,SACA,SAGA,S,qKCJY,8CAAuE,4FAEvE,8C,gCAFuB,gDAAiC,gB,yBAKhD,6BACI,8E,mBACI,Y,mBACJ,iBACA,sEAAQ,Y,mBAAmB,iBAAU,aACzC,2B,8BAJgC,6EACxB,oJAEI,uEAA6B,2E,yBAmBjC,8BACI,Y,mBACJ,kB,8BADI,uK,mDAlBZ,6BACI,oEACI,2EAAmB,Y,mBAA+B,iBAClD,qEACJ,0DACA,wEACI,8EAAmB,a,oBAAwC,iBAC3D,8EAAgE,kGAAhE,iBAEJ,2DACA,wEACI,kFACuE,6FAEnE,yE,oBACA,8EAAM,a,oBAAsB,iBAChC,+DACA,+EAGJ,2DACA,wEACI,8EAAmB,a,oBAAuC,iBAC1D,8EAAgE,kGAAhE,iBAEJ,2DACJ,gE,qDAxB2B,6EAIA,8FAC6C,+CAM5D,2DAA6B,sBACI,+EAC3B,qEAEsB,gDAKb,6FAC6C,gD,sBAQpE,2BAAuB,Y,mBAAmB,kB,MAAnB,iE,sBACvB,2BAAsB,Y,mBAAoB,kB,MAApB,kE,mDAxClC,iCAAY,4FACR,8DACI,+EAMA,+EA2BJ,kDACA,+DACI,uEACI,iE,oBACA,2EACA,2EACJ,uDACA,uEACyB,a,oBAAkB,iBAC/C,mDACJ,+C,mDA7CkC,2CAEZ,8CAMA,+CA6B2C,kDACpB,8EAC3B,+CACA,8CAGe,kEDxC7C,kBAYI,WAAYn9B,EAAwB1b,EAChC20B,EAAyBzM,EACzBzM,EAAoDoa,GAFxD,MAGI,YAAMna,EAAY1b,EAAa20B,EAAWzM,EAAgBzM,IAAqB,K,OAD3B,EAAAoa,cATxD,EAAApzB,KAAO,EAAAqY,sBAAsBiO,M,SADY,OAczC,YAAAiM,KAAA,SAAKC,GAED,OADA,YAAMD,KAAI,UAACC,GACJ30B,KAAKu3C,gBAAgB5iB,EAAa/zB,WAG7C,YAAAknB,OAAA,WACI,OAAI9nB,KAAKw0B,QACE,YAAMS,QAAO,UAACj1B,KAAKmoB,aAEnBnoB,KAAK40B,UAId,YAAA+mC,UAAN,W,gGAIQ,O,sBAFMx3C,EAAU,IAAI,EAAA6nC,sBAAsBhsD,KAAKghB,MAAOhhB,KAAKkoB,oBAC3DloB,KAAK47D,aAAe57D,KAAKob,WAAWygD,wBAAwB13C,GAC5D,GAAMnkB,KAAK47D,c,cAAX,SACA57D,KAAK87D,UAAY97D,KAAKghB,M,4DAIpB,YAAA4T,OAAV,sBACUzQ,EAAU,IAAI,EAAA43C,4BAKpB,OAJA53C,EAAQ+D,mBAAqBloB,KAAKkoB,mBAClC/D,EAAQnD,MAAQhhB,KAAKghB,MACrBmD,EAAQrE,MAAQ9f,KAAK8f,MAEd,YAAM8U,OAAM,WAAC,gD,wDAEC,OADjB50B,KAAKmoB,YAAcnoB,KAAKob,WAAW4gD,kBAAkB73C,GACpC,GAAMnkB,KAAKmoB,a,OAC5B,OADMvnB,EAAW,SACjB,GAAMZ,KAAKu3C,gBAAgB32C,I,cAA3B,S,eAIM,YAAA22C,gBAAd,SAA8B32C,G,uGAC1BZ,KAAK8f,MAAQ,KACb9f,KAAKghB,MAAQpgB,EAASogB,MACtBhhB,KAAKw0B,QAAU5zB,EAAS4zB,QACnBx0B,KAAKw0B,SAA0B,MAAdx0B,KAAKghB,OAAgC,KAAfhhB,KAAKghB,MAA7C,OACA,EAAAhhB,KAAa,GAAMA,KAAKu1B,YAAY0L,a,OAApC,EAAKjgB,MAAQ,S,oEAtDZ63B,GAAuB,gO,iCAAvBA,EAAuB,qjDCtBpC,4BACI,iDACI,qDACI,yDACI,4DACI,Y,oBACA,6BAAO,a,oBAAuB,iBAClC,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,+EAGA,gEA8CJ,2CACJ,uCACJ,mCACA,mB,MA3DoB,0HACO,qEAE8C,mFAKzD,8CAE4E,+C,mRDG5F,CAI6C,EAAAvjB,wBAAhC,EAAAujB,2B,8EEtBb,KAEA,KAFA,IAMA,S,iGCMY,8CAAuE,4FAEvE,8C,gCAFuB,gDAAiC,gB,yBAKhD,6BACI,iEAAG,Y,mBAAuC,iBAC1C,uEAAsB,YAAQ,iBAClC,gE,8BAFO,2FACmB,4C,sBAE1B,6BACI,Y,mBACJ,2B,MADI,yI,mDAIJ,gCAA8C,yFAC7B,Y,mBAAsB,iB,MAAtB,oE,yBAZzB,6BACI,8DACI,4EAIA,4EAGJ,kDACA,8DACI,yEAEA,uEACyB,a,oBAAkB,iBAC/C,mDACJ,yD,6BAdsB,2CAIA,4CAMV,2CAEqB,iEDrB7C,iBAUI,WAAoBn5C,GAAA,KAAAA,cALpB,KAAAyC,MAAQ,EAGR,KAAAoyB,sBAAwB,EAAA/Z,sB,OAIxB,YAAAka,KAAA,SAAKC,GACD30B,KAAKy0B,QAAS,EACdz0B,KAAKu3C,gBAAgB5iB,EAAa/zB,WAGtC,YAAAq7D,MAAA,WACI,IAAMC,EAAIzxD,OAAO0xD,OACjBD,EAAE3rD,SAAS6rD,MAAM,wDACLp8D,KAAKN,YAAYO,EAAE,6BADd,wFAGbD,KAAKqX,KAHQ,+CAIuB,IAAI8R,KAAS,QACrD+yC,EAAEG,aAAe,WAAM,OAAAH,EAAEjlD,SACzBilD,EAAED,SAGE,YAAAK,aAAR,SAAqBnsB,GACjB,OAAS,MAALA,EACO,KAEJA,EAAEvqC,QAAQ,UAAW,OAAO7B,OAAOhC,eAGtC,YAAAw1C,gBAAR,SAAwB32C,GACpBZ,KAAKqX,KAAOrX,KAAKs8D,aAAa17D,EAASyW,O,iCAhClC6hC,GAA0B,qC,iCAA1BA,EAA0B,wvBCZvC,4BACI,iDACI,qDACI,yDACI,4DACI,Y,oBACA,6BAAO,a,oBAA8B,iBACzC,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,+EAGA,uEAiBJ,2CACJ,uCACJ,mCACA,mB,MA9BoB,0HACO,4EAE8C,mFAKzD,8CAEU,+C,2GDP1B,GAIa,EAAAA,8B,yxDEZb,KAOA,KACA,MAEA,KACA,KACA,KAZA,IAcA,SAEA,QACA,SACA,SAMA,S,8JCZY,8CAAuE,4FAEvE,8C,gCAFuB,gDAAiC,gB,sBAKhD,qC,mBACI,Y,mBACJ,kB,MAF4B,8DACxB,6I,yBAYI,6BAAyC,Y,mBAA4B,kB,mCAA5B,sE,yBACzC,6BAAuC,YAAU,kB,uCAAV,4C,sBAEnC,6BACI,2E,mBAEA,mFAAsB,Y,mBAA2B,iBACrD,4E,MAFQ,oFACkB,yE,sBAE1B,6BACI,2E,mBAEA,mFAAsB,Y,mBAAoB,iBAC9C,4E,MAFQ,6EACkB,kE,yBAT9B,6BACI,yFAKA,yFAKJ,wE,uCAVkB,kDAKA,oD,sBAOd,sB,yBAAkD,8D,mDADtD,6BACI,8EAEA,oFACA,2BAAyB,6HAAoB,Y,mBAAmB,iBACpE,uE,iDAHQ,8CAEyC,iE,yBApBrD,+BACI,mEACA,+EACA,+EACA,qFAYA,uFAMJ,4D,+DAtBwD,6CAE5C,2DACA,yDACM,6DAYA,2E,sBA4BtB,6BACI,+DACJ,gE,sBAEI,6BACI,mEACA,Y,mBACJ,2B,MADI,gJ,sBAEJ,6BACI,mEACA,Y,mBACJ,2B,MADI,+I,sBAEJ,6BACI,mEACA,Y,mBACJ,2B,MADI,4J,yBAXR,6BACI,iFAIA,iFAIA,iFAIJ,gE,8BAZkB,mDAIA,kDAIA,gD,sBAQd,sB,yBAAsD,8D,sBAEtD,2BAA4B,Y,mBAAiB,kB,MAAjB,+D,mDAEhC,mCACoE,2FAEhE,+D,mBACA,oEAAM,Y,mBAA2B,iBACrC,sD,oDAJI,8CAA+B,sBAEE,6EAC3B,yE,mDArFlB,iCAAY,4FACR,8DACI,4EAGA,0EACI,iEAAG,a,oBAAgC,iBACnC,uEACI,wEAAI,a,oBAAmC,iBAC3C,2DACJ,uDACA,+DACA,mEACI,0EAuBJ,uDACA,2DACA,+DAAG,a,oBAA6B,iBAChC,gEACI,oEAAI,a,oBAAiC,iBACrC,oEAAI,a,oBAAsC,iBAC1C,oEAAI,a,oBAAoC,iBACxC,oEAAI,a,oBAAiC,iBACzC,uDACA,oEACI,wEACI,8EAAkB,a,oBAAiB,iBACnC,8EAA8D,gGAA9D,iBAEJ,2DACJ,uDACA,0EAAsB,0FAGlB,a,oBACJ,iBACA,+EAGA,+EAcJ,mDACA,gEACI,uEACI,wEAEA,2EACJ,uDACA,0EAMA,uEACyB,a,oBAAkB,iBAC/C,mDACJ,+C,uEA1FkC,2CAEsD,8CAIzE,+EAEK,kFAKJ,8CAyBL,mFAEK,gFACA,qFACA,mFACA,gFAIkB,gEAC4C,8CAAkB,8BAKpF,qFAAkE,mCAElE,0HAEU,8CAGA,+CAgBgC,kEACT,8CAE3B,+CAIN,8CAKqB,kED7E7C,kBAkBI,WAAY99B,EAAwB1b,EAChC20B,EAAyBzM,EACzBzM,EAAoD2pC,GAFxD,MAGI,YAAM1pC,EAAY1b,EAAa20B,EAAWzM,EAAgBzM,IAAqB,K,OAD3B,EAAA2pC,SAfxD,EAAA3iD,KAAO,EAAAqY,sBAAsBmO,IAG7B,EAAA4zC,eAAyB,KACzB,EAAAC,oBAAsB,EAalB,EAAKC,UAAYhyD,OAAO8F,SAASC,cAAc,UAC/C,EAAKisD,UAAU9/C,IAAM,iBACrB,EAAK8/C,UAAU7/C,OAAQ,E,SApBY,OAuBvC,YAAA1b,SAAA,WACIuJ,OAAO8F,SAASsN,KAAKH,YAAY1d,KAAKy8D,YAG1C,YAAA/mD,YAAA,WACIjL,OAAO8F,SAASsN,KAAKF,YAAY3d,KAAKy8D,YAG1C,YAAA/nC,KAAA,SAAKC,GACD,YAAMD,KAAI,UAACC,GACX30B,KAAKu3C,gBAAgB5iB,EAAa/zB,WAGtC,YAAAknB,OAAA,sBACI,GAAwB,MAApB9nB,KAAK08D,aAA8C,MAAvB18D,KAAKu8D,eAEjC,OAAOrnD,QAAQ+J,SAEnB,IAAMkF,EAAU,IAAI,EAAAw4C,0BAMpB,OALAx4C,EAAQ+D,mBAAqBloB,KAAKkoB,mBAClC/D,EAAQy4C,eAAiB58D,KAAK08D,YAC9Bv4C,EAAQvkB,GAAKI,KAAKu8D,eAClBp4C,EAAQzc,KAAO1H,KAAK0H,KAEb,YAAMktB,OAAM,WAAC,gD,wDAEC,OADjB50B,KAAKmoB,YAAcnoB,KAAKob,WAAWyhD,gBAAgB14C,GAClC,GAAMnkB,KAAKmoB,a,OAC5B,OADMvnB,EAAW,SACjB,GAAMZ,KAAKu3C,gBAAgB32C,I,cAA3B,S,eAIR,YAAAq0B,QAAA,WACI,OAAO,YAAMA,QAAO,UAACj1B,KAAKmoB,cAGxB,YAAAw8B,OAAN,SAAahmD,G,oGACT,OAAIqB,KAAKw8D,qBAAuB,GAA0B,MAArB79D,EAAIm+D,cACrC,KAEEp1D,EAAmB,MAAZ/I,EAAI+I,KAAe/I,EAAI+I,KAAO1H,KAAKN,YAAYO,EAAE,UAAWtB,EAAIiB,IAC3D,GAAMI,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,yBAA0ByH,EAC7C1H,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,a,OACzD,IAHkB,SAId,WAEEkkB,EAAU,IAAI,EAAA44C,iCACZn9D,GAAKjB,EAAIiB,GACjBukB,EAAQ+D,mBAAqBloB,KAAKkoB,mB,iBAGb,O,sBADjBvpB,EAAIm+D,cAAgB98D,KAAKob,WAAW4hD,mBAAmB74C,GACtC,GAAMxlB,EAAIm+D,e,OAE3B,OAFMl8D,EAAW,SACjBjC,EAAIm+D,cAAgB,KACpB,GAAM98D,KAAKu3C,gBAAgB32C,I,cAA3B,S,4DAIF,YAAAq8D,QAAN,W,kGACI,GAA2B,MAAvBj9D,KAAKu8D,eACL,WAEEp4C,EAAU,IAAI,EAAAnQ,6BACZkU,mBAAqBloB,KAAKkoB,mB,iBAGZ,O,sBADlBloB,KAAKk9D,iBAAmBl9D,KAAKob,WAAW+hD,yBAAyBh5C,GAC/C,GAAMnkB,KAAKk9D,kB,cAAvBE,EAAY,SAClBp9D,KAAKq9D,WAAWD,G,4DAIhB,YAAAC,WAAR,SAAmBC,GAAnB,WAEIx+C,QAAQqyC,IAAI,wBACZnxD,KAAKu9D,UAAS,GACb9yD,OAAe+yD,IAAIC,SAASH,EAAa59B,MAAO,CAAC,CAC9CwN,QAASowB,EAAapwB,QACtBkwB,UAAWE,EAAaF,UACxBM,YAAa,WACb,IAAI,SAACv6D,GACL,EAAK2hD,OAAOG,KAAI,WAEZ,GADA,EAAK0Y,cAAe,EAChBx6D,EAAKy6D,UAIL,OAHA,EAAKC,UAAW,OAEhB/+C,QAAQqyC,IAAI,UAAYhuD,EAAKy6D,WAGjC,EAAKlB,YAAchC,KAAKC,UAAUx3D,QAEvC,KAGC,YAAAo6D,SAAR,SAAiBO,QAAA,IAAAA,OAAA,GACb99D,KAAK08D,YAAc,KACnB18D,KAAK69D,UAAW,EAChB79D,KAAK29D,aAAeG,GAGhB,YAAAvmB,gBAAR,SAAwB32C,GACpBZ,KAAKu9D,WACLv9D,KAAKwkD,KAAO,GACZxkD,KAAKu8D,eAAiB,KACtBv8D,KAAK0H,KAAO,KACZ1H,KAAKw8D,oBAAsB,EAC3B,I,eAASv+D,GACL,GAAqB,MAAjB2C,EAAS4jD,KAAc,CACvB,IAAM7lD,EAAMiC,EAAS4jD,KAAKr8C,QAAO,SAAA41D,GAAK,OAAAA,EAAEn+D,KAAO3B,KAC/C,GAAIU,EAAIR,OAAS,E,OACb,EAAKq+D,sBACL,EAAKhY,KAAKr/C,KAAK,CACXvF,GAAI3B,EAAGyJ,KAAM/I,EAAI,GAAG+I,KACpBs2D,YAAY,EACZC,YAAat/D,EAAI,GAAGs/D,YACpBnB,cAAe,O,WAK3B,EAAKtY,KAAKr/C,KAAK,CAAEvF,GAAI3B,EAAGyJ,KAAM,KAAMs2D,YAAY,EAAOC,aAAa,EAAOnB,cAAe,OAC/D,MAAvB,EAAKP,iBACL,EAAKA,eAAiBt+D,I,OAhBrBA,EAAI,EAAGA,GAAK,EAAGA,I,EAAfA,GAmBT+B,KAAKw0B,QAAU5zB,EAAS4zB,S,iCAlJnBukB,GAAqB,2N,iCAArBA,EAAqB,gzEC9BlC,4BACI,iDACI,qDACI,yDACI,4DACI,Y,oBACA,6BAAO,wBAAQ,iBACnB,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,+EAGA,gEA2FJ,2CACJ,uCACJ,mCACA,mB,MAxGoB,0HAGqD,mFAKzD,8CAE4E,+C,qQDW5F,CAI2C,EAAAzjB,wBAA9B,EAAAyjB,yB,yxDE9Bb,KAEA,KACA,MAEA,KACA,KACA,KAPA,IASA,SAGA,SAEA,S,8JCFY,8CAAuE,4FAEvE,8C,gCAFuB,gDAAiC,gB,sBAMhD,qC,mBACI,Y,mBACJ,kB,MAF4B,8DACxB,6I,mDAqBI,+BACI,yGADJ,iB,wDAAO,4CAAkC,8CACrC,+B,mDACJ,6BACI,+EAAmB,YAAiB,iBACpC,iFAA+D,6H,mBAE3D,2EACJ,kEACJ,+D,0CALuB,kDAEf,oF,yBAPZ,6BACI,4EAA0B,Y,mBAA6B,iBACvD,8EAEA,6EAOJ,2D,iCAVW,4DAAmB,sEAEF,mDACJ,mD,mDAqB5B,mCACoE,2FAEhE,+D,mBACA,oEAAM,Y,mBAA2B,iBACrC,sD,oDAJI,8CAA+B,sBAEE,6EAC3B,yE,mDApDlB,iCAAY,4FAER,8DACI,4EAGA,0EACI,iEAAG,a,oBAAoC,iBACvC,uEACI,wEAAI,a,oBAAuC,iBAC3C,wEAAI,a,oBAA0C,iBAClD,2DACJ,uDACA,+DACA,+DAAG,a,oBAAiC,iBACpC,gEACI,oEAAI,a,oBAAmC,iBACvC,oEAAI,a,oBAAsC,iBAC1C,oEAAI,a,oBAAwC,iBAC5C,oEAAI,a,oBAAqC,iBAC7C,uDACA,2DACA,oEACI,2EAYJ,uDACA,uEAA6B,a,oBAAuB,iBACpD,oEACI,0EAAoE,+FAApE,iBACA,0EAA0C,a,oBAAwC,iBACtF,uDACA,sEAAoC,a,oBAA4C,iBACpF,mDACA,gEACI,uEACI,iE,oBACA,sEAAM,a,oBAAiB,iBAC3B,uDACA,0EAMA,uEACyB,a,oBAAkB,iBAC/C,mDACJ,+C,mDAzDkC,2CAGsD,8CAIzE,mFAEK,sFACA,yFAIT,uFAEK,kFACA,qFACA,uFACA,oFAI0B,8CAaL,sEAE2C,6CAC1B,uFAEV,2FAGqB,kDACpB,+EAC3B,gEAIN,8CAKqB,kEDtD7C,kBAYI,WAAY39B,EAAwB1b,EAChC20B,EAAyBzM,EACzBzM,GAFJ,MAGI,YAAMC,EAAY1b,EAAa20B,EAAWzM,EAAgBzM,IAAqB,K,OAVnF,EAAAhZ,KAAO,EAAAqY,sBAAsBuO,QAE7B,EAAAm1C,KAAM,E,SAHqC,OAc3C,YAAAxpC,KAAA,SAAKC,GACD,YAAMD,KAAI,UAACC,GACX30B,KAAKu3C,gBAAgB5iB,EAAa/zB,WAGtC,YAAAknB,OAAA,sBACU3D,EAAU,IAAI,EAAAg6C,+BASpB,OARAh6C,EAAQ+D,mBAAqBloB,KAAKkoB,mBAClC/D,EAAQi6C,KAAoB,MAAbp+D,KAAKwkD,MAAgBxkD,KAAKwkD,KAAKrmD,OAAS,EAAI6B,KAAKwkD,KAAK,GAAG7lD,IAAM,KAC9EwlB,EAAQk6C,KAAoB,MAAbr+D,KAAKwkD,MAAgBxkD,KAAKwkD,KAAKrmD,OAAS,EAAI6B,KAAKwkD,KAAK,GAAG7lD,IAAM,KAC9EwlB,EAAQm6C,KAAoB,MAAbt+D,KAAKwkD,MAAgBxkD,KAAKwkD,KAAKrmD,OAAS,EAAI6B,KAAKwkD,KAAK,GAAG7lD,IAAM,KAC9EwlB,EAAQo6C,KAAoB,MAAbv+D,KAAKwkD,MAAgBxkD,KAAKwkD,KAAKrmD,OAAS,EAAI6B,KAAKwkD,KAAK,GAAG7lD,IAAM,KAC9EwlB,EAAQq6C,KAAoB,MAAbx+D,KAAKwkD,MAAgBxkD,KAAKwkD,KAAKrmD,OAAS,EAAI6B,KAAKwkD,KAAK,GAAG7lD,IAAM,KAC9EwlB,EAAQ+5C,IAAMl+D,KAAKk+D,IAEZ,YAAMtpC,OAAM,WAAC,gD,wDAEC,OADjB50B,KAAKmoB,YAAcnoB,KAAKob,WAAWqjD,oBAAoBt6C,GACtC,GAAMnkB,KAAKmoB,a,OAC5B,OADMvnB,EAAW,SACjB,GAAMZ,KAAKu3C,gBAAgB32C,I,cAA3B,SACAZ,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,oB,eAIzE,YAAAg1B,QAAA,WACI,OAAO,YAAMA,QAAO,UAACj1B,KAAK0+D,iBAG9B,YAAA/Z,OAAA,SAAOhmD,GACHA,EAAIggE,YAAc,KAClBhgE,EAAIA,IAAM,MAGN,YAAA44C,gBAAR,SAAwB32C,GACpBZ,KAAKw0B,QAAU5zB,EAAS4zB,QACxBx0B,KAAKwkD,KAAO,CACR,CAAE7lD,IAAKiC,EAASw9D,KAAMO,YAAa3+D,KAAK4+D,SAASh+D,EAASw9D,OAC1D,CAAEz/D,IAAKiC,EAASy9D,KAAMM,YAAa3+D,KAAK4+D,SAASh+D,EAASy9D,OAC1D,CAAE1/D,IAAKiC,EAAS09D,KAAMK,YAAa3+D,KAAK4+D,SAASh+D,EAAS09D,OAC1D,CAAE3/D,IAAKiC,EAAS29D,KAAMI,YAAa3+D,KAAK4+D,SAASh+D,EAAS29D,OAC1D,CAAE5/D,IAAKiC,EAAS49D,KAAMG,YAAa3+D,KAAK4+D,SAASh+D,EAAS49D,QAE9Dx+D,KAAKk+D,IAAMt9D,EAASs9D,MAAQt9D,EAAS4zB,SAGjC,YAAAoqC,SAAR,SAAiB/4D,EAAasc,EAAiBxD,GAC3C,QAD0B,IAAAwD,MAAA,UAAiB,IAAAxD,MAAA,IAChC,MAAP9Y,GAA4B,MAAbsc,GAAqBtc,EAAI1H,QAAUwgB,EAClD,OAAO9Y,EAGX,IADA,IAAMg5D,GAAOlgD,EAAO9Y,EAAI1H,QAAUgkB,EAAUhkB,OACnCF,EAAI,EAAGA,EAAI4gE,EAAK5gE,IACrB4H,GAAOsc,EAEX,OAAOtc,G,iCAlEF6yC,GAAyB,6L,iCAAzBA,EAAyB,ilECpBtC,4BACI,iDACI,qDACI,yDACI,4DACI,Y,oBACA,6BAAO,uBAAO,iBAClB,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,+EAGA,gEA0DJ,2CACJ,uCACJ,mCACA,mB,MAvEoB,0HAGqD,mFAKzD,8CAE4E,+C,wSDC5F,CAI+C,EAAApjB,wBAAlC,EAAAojB,6B,yxDEpBb,KACA,KAEA,MACA,MACA,OACA,KACA,KAPA,IASA,S,qFAIA,cAKI,WAAYv/B,EAA8BzZ,EACtCyb,EAA4Cm+B,EAC5C/hB,EAAoC1U,GAFxC,MAGI,YAAM1J,EAAezZ,EAAayb,EAAsBm+B,EAAe/hB,IAAa,K,OADhD,EAAA1U,Q,SAHP,OAOjC,YAAA3hB,SAAA,sBACIlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,kCAClD1jB,KAAKuC,eAAiBmhB,EAAOnhB,e,cAIrC,YAAAu8D,cAAA,WACI,OAAO9+D,KAAKs5C,cAAcylB,sBAAsB/+D,KAAKuC,eAAgBvC,KAAKo7C,SAG9E,YAAA4jB,YAAA,WACI,OAAO,YAAMA,YAAW,UAAC,QAGvB,YAAAC,aAAN,W,qHArBSzlB,GAAe,qO,iCAAfA,EAAe,orB,GAAA,M3IjB5B,+BAAY,2CAAY,EAAA1xB,YACpB,iDACI,kDAAI,Y,mBAAwB,iBAChC,sCACA,8CAAG,a,oBAAiC,iBACpC,mDACI,uDACI,6DAAoB,a,oBAAuB,iBAC3C,8DAAuD,+DACnD,kEAAqB,qBAAK,iBAC1B,kEAAoB,oBAAI,iBACxB,kEAA+B,iCAAiB,iBACpD,+CACJ,2CACJ,uCACA,mDACI,uDACI,8DAA4B,a,oBAAuB,iBACnD,8DACI,uEADJ,iBAEJ,2CACJ,uCACA,uDACI,iD,oBACA,sDAAM,a,oBAAwB,iBAClC,uCACJ,mCACA,mB,4BA3BmD,2CAEvC,sEAEL,gFAGyB,sEACmC,gDAS3B,uEAExB,wDAG6C,kDACpB,+EAC3B,yE,yR2IXd,CAIqC,mBAAxB,EAAA0xB,mB,yxDCjBb,KAIA,KAEA,MACA,MACA,MACA,KATA,IAWA,S,mH1IFI,oC,mBACI,Y,mBACJ,kB,MAF4B,+DACxB,oG,mDAagB,6BACI,wEAAyB,mI,mBAAwD,YAAU,iBAC/F,mE,0CADuD,8EAA8B,4C,yBAGjF,wEAAM,YAAU,iBACpB,0C,uCADU,4C,sBAEV,6BACI,mE,mBACA,2EAAsB,Y,mBAAmB,iBAC7C,oE,MAF2C,4EACjB,iE,sBAE1B,6BACI,mE,mBAEA,2EAAsB,Y,mBAAwB,iBAClD,oE,MAH2C,iFAEjB,sE,yBAlBlC,yBACI,iEACI,4EACJ,sDACA,iEACI,iFAGA,gHAGA,kFAIA,kFAKA,+DACA,uEAAO,aAAc,iBACzB,uDACA,mEACI,yEACI,a,0CACJ,iBACJ,uDACJ,oD,gEA1BwB,wCAGF,0EAA6D,cAM7D,sEAIA,qDAMP,+CAIH,4L,yBA/BxB,6BACI,6D,mBACI,Y,wCACJ,iBACA,wDACI,0DACI,mEA6BJ,+CACJ,2CACJ,iD,8BApC+B,2FACvB,sJAIQ,kD,yBAVpB,4BACI,2DAGA,8DAsCJ,mC,6BAzC8D,sDAG5C,sD,iB0IMlB,kBAOI,WAAYviB,EAA8BE,EACtC3hB,EAAoDC,EACpD8f,EAAkC1S,GAFtC,MAGI,YAAMoU,EAAeE,EAAc3hB,EAA0BC,EAAkB8f,IAAY,K,OADzD,EAAA1S,Q,SALW,OASjD,YAAA3hB,SAAA,sBACIlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,0DAC9B,OAApB,EAAA1jB,KAAoB,GAAMA,KAAKu1B,YAAYwf,gBAAgBrxB,EAAOnhB,iB,OACzC,OADzB,EAAKuzB,aAAe,SACpB,EAAA91B,KAAyB,GAAMA,KAAKi3B,cAAckO,U,cAAlD,EAAK+5B,kBAAoB,SACzB,YAAMh+D,SAAQ,W,eAItB,YAAAw4C,cAAA,WACI,OAAO15C,KAAKi3B,cAAcsoB,6BAA6Bv/C,KAAK81B,aAAal2B,KAG7E,YAAAo6C,gBAAA,SAAgBjsC,GACZ,OAAO/N,KAAKk/D,kBAAkB13C,MAAK,SAAA/Z,GAAK,OAAAA,EAAE7N,KAAOmO,EAAEnO,O,iCAtB9Cq6C,GAA+B,4O,iCAA/BA,EAA+B,u3B1ItB5C,4BACI,8CAAI,Y,mBAAmC,iBAC3C,kCACA,yCAAG,Y,mBAAuC,iBAC1C,kDAA8E,wCAAS,EAAApgC,UACnF,4C,oBACA,kDAAM,a,oBAAkC,iBAC5C,mCACA,iDA2CA,uFACA,mB,MAnDQ,gFAEL,oFACsD,kDACpB,+EAC3B,iFAEQ,kD,+J0IUlB,CAIqD,mCAAxC,EAAAogC,mC,8ECpBb,MAII,SAAYr5C,GACQ,MAAZA,IAIJZ,KAAK8J,SAAWlJ,EAASkJ,SACzB9J,KAAKmrB,aAAevqB,EAASuqB,eAVxB,EAAAhE,uB,8ECGb,iBAQI,WAAY9X,GAPZ,KAAAzP,GAAa,KACb,KAAA2F,IAAc,KACd,KAAAoZ,KAAe,KACf,KAAAutB,SAAmB,KACnB,KAAA7gB,SAAmB,KACnB,KAAA1sB,IAA0B,KAGjB0Q,IAILrP,KAAKJ,GAAKyP,EAAEzP,GACZI,KAAKuF,IAAM8J,EAAE9J,IACbvF,KAAK2e,KAAOtP,EAAEsP,KACd3e,KAAKksC,SAAW78B,EAAE68B,UAW1B,OARI,sBAAI,uBAAQ,C,IAAZ,WACI,IACI,GAAiB,MAAblsC,KAAK2e,KACL,OAAO3S,SAAShM,KAAK2e,KAAM,MAEjC,UACF,OAAO,G,gCAEf,EA3BA,GAAa,EAAAm8B,kB,8ZCLb,aAGA,QAEA,SAGA,cAII,WAAYv4B,EAA2BnO,QAAA,IAAAA,OAAA,GAAvC,MACI,cAAO,KACP,OAAW,MAAPmO,IAIJ,EAAKrO,iBAAiB,EAAMqO,EAAK,CAC7BzY,SAAU,MACXsK,GACH,EAAK+W,aAAe,IAAIhC,KAAK5G,EAAI4I,e,EAiBzC,OA9B8B,OAgB1B,YAAA9V,QAAA,SAAQR,EAAe0U,GAClB,OAAOvpB,KAAK2U,WAAW,IAAI,EAAAumC,oBAAoBl7C,MAAO,CACnD8J,SAAU,MACX+K,EAAO0U,IAGd,YAAAgB,sBAAA,WACI,IAAMrD,EAAK,IAAI,EAAAC,oBAKf,OAJAD,EAAGiE,aAAenrB,KAAKmrB,aAAanB,cACpChqB,KAAKwU,eAAexU,KAAMknB,EAAI,CAC1Bpd,SAAU,OAEPod,GAEf,EA9BA,CAA8B,WAAjB,EAAAoC,Y,8ECRb,aAIA,EAII,SAAY/iB,GACRvG,KAAKuG,OAAS,IAAI,EAAAilB,cAAcjlB,GAChCvG,KAAKolB,cAAgB7e,EAAO6e,eANvB,EAAAs1B,uB,8ZCJb,IAEA,cAQI,WAAYv3C,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,OAAY,MAARA,IAGJ,EAAKiU,eAAiB,EAAK5V,oBAAoB,kBAC/C,EAAKkW,MAAQ,EAAKlW,oBAAoB,SACtC,EAAKmW,OAAS,EAAKnW,oBAAoB,UACvC,EAAKsF,SAAW,EAAKtF,oBAAoB,YACzC,EAAKuF,QAAU,EAAKvF,oBAAoB,WACxC,EAAK6V,KAAO,EAAK7V,oBAAoB,S,EAE7C,OApB6B,OAoB7B,EApBA,CAFA,MAE6BU,cAAhB,EAAA8oB,W,8ZCFb,IAIA,cAKI,WAAY7nB,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,OAAY,MAARA,IAGJ,EAAKhB,KAAO,EAAKX,oBAAoB,QACrC,EAAKkG,KAAO,EAAKlG,oBAAoB,QACrC,EAAK9C,MAAQ,EAAK8C,oBAAoB,U,EAE9C,OAd8B,OAc9B,EAdA,CAJA,MAI8BU,cAAjB,EAAAgpB,Y,8ZCJb,IAEA,cAoBI,WAAY/nB,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,OAAY,MAARA,IAGJ,EAAKlC,MAAQ,EAAKO,oBAAoB,SACtC,EAAK6kB,UAAY,EAAK7kB,oBAAoB,aAC1C,EAAKkkB,WAAa,EAAKlkB,oBAAoB,cAC3C,EAAK8kB,SAAW,EAAK9kB,oBAAoB,YACzC,EAAKmkB,SAAW,EAAKnkB,oBAAoB,YACzC,EAAKokB,SAAW,EAAKpkB,oBAAoB,YACzC,EAAKqkB,SAAW,EAAKrkB,oBAAoB,YACzC,EAAK4hB,KAAO,EAAK5hB,oBAAoB,QACrC,EAAK6hB,MAAQ,EAAK7hB,oBAAoB,SACtC,EAAK8hB,WAAa,EAAK9hB,oBAAoB,cAC3C,EAAK0a,QAAU,EAAK1a,oBAAoB,WACxC,EAAKskB,QAAU,EAAKtkB,oBAAoB,WACxC,EAAKwf,MAAQ,EAAKxf,oBAAoB,SACtC,EAAKukB,MAAQ,EAAKvkB,oBAAoB,SACtC,EAAKwkB,IAAM,EAAKxkB,oBAAoB,OACpC,EAAKqI,SAAW,EAAKrI,oBAAoB,YACzC,EAAKykB,eAAiB,EAAKzkB,oBAAoB,kBAC/C,EAAK0kB,cAAgB,EAAK1kB,oBAAoB,kB,EAEtD,OA5CiC,OA4CjC,EA5CA,CAFA,MAEiCU,cAApB,EAAA+oB,e,8ZCFb,YAEA,SAEA,cAOI,WAAY9nB,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,GAAY,MAARA,E,SAGJ,EAAK0G,SAAW,EAAKrI,oBAAoB,YACzC,EAAKsI,SAAW,EAAKtI,oBAAoB,YACzC,EAAKikB,qBAAuB,EAAKjkB,oBAAoB,wBACrD,EAAK8lB,KAAO,EAAK9lB,oBAAoB,QAErC,IAAMuI,EAAO,EAAKvI,oBAAoB,Q,OAC1B,MAARuI,IACA,EAAKA,KAAOA,EAAKzC,KAAI,SAACpC,GAAW,WAAI,EAAA4lB,YAAY5lB,O,EAG7D,OAtB8B,OAsB9B,EAtBA,CAA8B,EAAAhD,cAAjB,EAAA2oB,Y,8ZCJb,IAIA,cAII,WAAY1nB,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,GAJJ,EAAA8B,MAAsB,KAIN,MAAR9B,E,SAGJ,EAAK0B,IAAM,EAAKrD,oBAAoB,OACpC,IAAMyD,EAAQ,EAAKzD,oBAAoB,S,OACvC,EAAKyD,MAAiB,MAATA,EAAgBA,EAAQ,K,EAE7C,OAbiC,OAajC,EAbA,CAJA,MAIiC/C,cAApB,EAAA4oB,e,8ZCJb,IAIA,cAGI,WAAY3nB,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,OAAY,MAARA,IAGJ,EAAKhB,KAAO,EAAKX,oBAAoB,S,EAE7C,OAVmC,OAUnC,EAVA,CAJA,MAImCU,cAAtB,EAAA6oB,iB,8ECJb,S,OAOA,aAMI,WAAoB3qB,GAAA,KAAAA,K,OAGG,YAAA++D,QAAvB,WACIn/D,KAAKI,GAAGM,cAAcic,IAAM3c,KAAKo/D,gB,iCAP5BC,GAAoB,oC,iCAApBA,EAAoB,qE,wCAApB,gB,6CAHb,GAGa,EAAAA,wB,yxDCVb,KACA,KAKA,KACA,MAEA,KACA,OACA,KACA,KAZA,IAcA,S,mH1ILoB,gCAAiE,YAAU,kB,uBAA3B,6BAAiB,4C,yBAG7D,gCAAyD,YAAU,kB,uBAA3B,6BAAiB,4C,yBAF7D,6BACI,oEACA,0EACJ,gE,6BADY,wD,sBAOxB,6BACI,wFACA,2BACI,qFAAoD,iBAC5D,oD,sBACA,6BACI,wFACA,2BACI,yFAAwD,iBAChE,oD,sBACA,6BACI,gKAEJ,2B,sBACA,6BACI,kIACJ,2B,sBACA,6BACI,yMAGJ,2B,sBACA,6BACI,8JAEJ,2B,sBACA,6BACI,gOAGJ,2B,sBACA,6BACI,qKAEJ,2B,sBACA,6BACI,sKAEJ,2B,sBACA,6BACI,+NAEJ,2B,sBACA,6BACI,4LAEJ,2B,sBACA,6BACI,kOAEJ,2B,sBAEI,2BACI,+GACJ,kB,yBAHJ,6BACI,4DAGA,wFACA,2BACI,uFAAsD,iBAC9D,oD,8BANU,4D,sBAOV,6BACK,yFACD,2BACI,wFAAuD,iBAAI,0BACnE,2B,sBACA,6BACI,wFACA,2BACI,0FAAyD,iBAAI,0BACrE,2B,sBACA,6BACI,gQAEJ,2B,sBACA,6BACI,8UAGJ,2B,sBACA,6BACI,kNAEJ,2B,sBACA,6BACI,0KAEJ,2B,sBACA,6BACI,iMAEJ,2B,sBACA,6BACI,+JAEJ,2B,sBACA,6BACI,4NAEJ,2B,sBACA,6BACI,sOAEJ,2B,sBACA,6BACI,kSAGJ,2B,sBACA,6BACI,maAIJ,2B,sBACA,6BACI,gUAGJ,2B,sBACA,6BACI,sPAEJ,2B,sBACA,6BACI,kMAEJ,2B,sBACA,6BACI,sWAGA,2BAAM,8BAAe,iBAAO,0BAChC,2B,sBACA,6BACI,4NAEJ,2B,uBACA,6BACI,wMAEJ,2B,uBACA,6BACI,wHACA,2BAAgE,0CAA2B,iBAAK,8DACtE,2BAAM,2BAAY,iBAAO,oDACnD,2BAAM,6CAA8B,iBAAQ,uCAC5C,4BAAM,4EAA4D,iBAAO,yDACzE,4BAAM,iCAAiB,iBAAQ,kDACnC,2B,uBACA,6BACI,2SAGJ,2B,uBACA,6BACI,qLAEJ,2B,uBACA,6BACI,qUAGJ,2B,uBACA,6BACI,wOAEJ,2B,uBACA,6BACI,0OAEJ,2B,uBACA,6BACI,6NAEJ,2B,uBACA,6BACI,uPAEJ,2B,uBACA,6BACI,oOAEJ,2B,uBACA,6BACI,wOAEJ,2B,uBACA,6BACI,qRAGJ,2B,uBACA,6BACI,iHACJ,2B,uBACA,6BACI,gLAEJ,2B,uBACA,6BACI,qPAEJ,2B,uBACA,6BACI,6LAEJ,2B,uBACA,6BACI,8LAEJ,2B,uBACA,6BACI,gTAGJ,2B,uBACA,6BACI,8IACJ,2B,0BA1NJ,qCACI,gEAKA,gEAKA,gEAIA,gEAGA,iEAKA,kEAIA,kEAKA,kEAIA,kEAIA,kEAIA,kEAIA,kEAIA,kEAQA,kEAKA,kEAKA,kEAIA,kEAKA,kEAIA,kEAIA,kEAIA,kEAIA,kEAIA,kEAIA,kEAKA,kEAMA,kEAKA,kEAIA,kEAIA,kEAMA,kEAIA,mEAIA,oEAQA,mEAKA,mEAIA,mEAKA,mEAIA,mEAIA,mEAIA,mEAIA,mEAIA,mEAIA,mEAKA,mEAGA,mEAIA,mEAIA,mEAIA,mEAIA,mEAKA,mEAGJ,wC,6BA3NyB,+DACP,0FAKA,6DAKA,6DAIA,0DAGA,yDAKA,gEAIA,4DAKA,6DAIA,wDAIA,8DAIA,4DAIA,2DAIA,2GAQA,4DAKA,2HAKA,mEAIA,2DAKA,4DAIA,2DAIA,8DAIA,4DAIA,mEAIA,4DAIA,8DAKA,6DAMA,6DAKA,4DAIA,kEAIA,8DAMA,6DAIA,6DAIA,2DAQA,kEAKA,6DAIA,6DAKA,0DAIA,2DAIA,4DAIA,8DAIA,8DAIA,mEAIA,yDAKA,+DAGA,8DAIA,+DAIA,8DAIA,6DAIA,6DAKA,0D0I1NtB,mBAOI,WAAY3/D,EAA0B20B,EAClCzM,EAAgCuzB,EAChC1vB,EAAwB5I,EACxB1H,EACQoa,GAJZ,MAKI,YAAM71B,EAAa20B,EAAWzM,EAAgBuzB,EAAe1vB,EAAQtQ,IAAqB,K,OAHlE,EAAA0H,QAEhB,EAAA0S,c,SAPqB,OAW3B,YAAAr0B,SAAN,W,uGAMyB,OALrBlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,kCAClD1jB,KAAKuC,eAAiBmhB,EAAOnhB,eAC7BvC,KAAKq7C,gBAAkB,CAAC,gBAAiBr7C,KAAKuC,eAAgB,SAC9D,YAAMrB,SAAQ,W,aAEG,GAAMlB,KAAKu1B,YAAYwf,gBAAgB/0C,KAAKuC,iB,cAA3DuzB,EAAe,SACrB91B,KAAKinD,iBAAmBnxB,EAAapuB,K,YAGnC,YAAAogB,OAAN,W,0FACsB,SAAM9nB,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,gBAAiBD,KAAKinD,kBACzCjnD,KAAKN,YAAYO,EAAE,WAAYD,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,Y,OACxF,OAHkB,UAMlB,YAAM6nB,OAAM,W,KAFR,Y,iCA1BCy1B,GAAe,uS,iCAAfA,EAAe,s2C1IpB5B,4BACI,8CAAI,Y,mBAAuB,iBAC/B,kCACA,gDAAY,2CAAY,EAAAz1B,YACpB,kDACI,uDACI,2DACI,iEAAkB,a,oBAA4B,iBAC9C,kEAAgC,+DAC5B,wEACA,8EAIJ,mDACJ,+CACJ,2CACJ,uCACA,kEA4NA,mDACI,uDACI,2DACI,kEAAkB,a,oBAAgC,iBAClD,6DACJ,+CACJ,2CACJ,uCACA,mDACI,0DAA0B,a,oBAAoC,iBAC9D,6DAAqE,qEAA2B,iBACpG,uCACA,uDACI,iD,oBACA,sDAAM,a,oBAAuB,iBACjC,uCACJ,mCACA,mB,MA9PQ,qEAM0B,mFACc,gDACpB,+DACM,4EAQmC,6CA+NnC,sFAMA,oFAC2C,sDAEhB,kDACpB,+EAC3B,wE,+Q0I5Od,CAIqC,mBAAxB,EAAAy1B,oB,yxDCpBb,KAIA,KAEA,MACA,MACA,KARA,IAUA,S,2GzIPQ,4BACI,kD,mBACA,0DAAsB,Y,mBAAoB,iBAC9C,2C,MAFgD,6EACtB,kE,sBAKlC,0BACI,0C,mBACA,kDAAsB,Y,mBAAoB,iBAC9C,mC,MAFgD,6EACtB,kE,sBAGtB,oC,mBACI,Y,mBACJ,kB,MAF4B,+DACxB,+F,sBAcgB,6BACI,mE,mBACA,0EAAsB,Y,mBAAmB,iBAC7C,oE,MAF2C,4EACjB,iE,sBAE1B,6BACI,mE,mBAEA,0EAAsB,Y,mBAAwB,iBAClD,oE,MAH2C,iFAEjB,sE,yBAM1B,2BAEI,Y,mBAAyB,kB,4DAFE,uEAE3B,4G,mDArBZ,yBACI,iEACI,4EACJ,sDACA,iEACI,oEAAyB,mH,oBAAwD,aAAU,iBAC3F,kFAIA,kFAKA,+DACA,uEAAO,aAAc,iBACzB,uDACA,mEACI,wEAGJ,uDACJ,mD,+CArBwB,wCAGmC,+EAA8B,2CACnE,sEAIA,qDAMP,+CAIH,4D,yBA1BxB,6BACI,6D,mBACI,Y,wCACJ,iBACA,wDACI,0DACI,kEAwBJ,+CACJ,2CACJ,iD,8BA/B+B,sFACvB,iJAIQ,kD,yBAVpB,4BACI,2DAGA,8DAiCJ,mC,6BApC8D,sDAG5C,sD,iByIFlB,kBAKI,WAAYtmB,EAA8BzhB,EACtCC,EAAoC8f,EAC5B1S,GAFZ,MAGI,YAAMoU,EAAezhB,EAA0BC,EAAkB8f,IAAY,K,OADrE,EAAA1S,Q,SAHsC,OAO5C,YAAA3hB,SAAN,W,qFACIlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,wDAC9B,OAApB,EAAA1jB,KAAoB,GAAMA,KAAKu1B,YAAYwf,gBAAgBrxB,EAAOnhB,iB,OAClE,OADA,EAAKuzB,aAAe,SACpB,GAAM,YAAM50B,SAAQ,Y,cAApB,S,yBAIR,YAAAw4C,cAAA,WACI,OAAO15C,KAAKi3B,cAAcsoB,6BAA6Bv/C,KAAK81B,aAAal2B,K,iCAfpEu+C,GAAgC,wM,iCAAhCA,EAAgC,o5BzIpB7C,4BACI,8CACI,Y,mBACA,gCAIJ,sCACJ,kCACA,yCAAG,a,oBAAkC,iBACrC,iDAIA,iDAsCA,uFACA,mB,MAnDQ,sGACO,2DAMZ,gFACE,4DAIa,kD,+JyIElB,CAIsD,oCAAzC,EAAAA,oC,yxDCpBb,KAIA,KAEA,MACA,MACA,KARA,IAcA,S,2GxIXQ,4BACI,kD,mBACA,0DAAsB,Y,mBAAoB,iBAC9C,2C,MAFgD,6EACtB,kE,sBAKlC,0BACI,0C,mBACA,kDAAsB,Y,mBAAoB,iBAC9C,mC,MAFgD,6EACtB,kE,sBAGtB,oC,mBACI,Y,mBACJ,kB,MAF4B,+DACxB,mG,mDAagB,6BACI,wEAAyB,mI,mBAAwD,YAAU,iBAC/F,mE,0CADuD,8EAA8B,4C,yBAGjF,wEAAM,YAAU,iBACpB,0C,uCADU,4C,sBAEV,6BACI,mE,mBACA,0EAAsB,Y,mBAAmB,iBAC7C,oE,MAF2C,4EACjB,iE,sBAE1B,6BACI,mE,mBAEA,0EAAsB,Y,mBAAwB,iBAClD,oE,MAH2C,iFAEjB,sE,yBAlBlC,yBACI,iEACI,4EACJ,sDACA,iEACI,iFAGA,gHAGA,kFAIA,kFAKA,+DACA,uEAAO,aAAc,iBACzB,uDACA,mEACI,yEACI,a,oBACJ,iBACJ,uDACJ,oD,gEA1BwB,wCAGF,0EAA6D,cAM7D,sEAIA,qDAMP,+CAIH,8K,yBA/BxB,6BACI,6D,mBACI,Y,wCACJ,iBACA,wDACI,0DACI,mEA6BJ,+CACJ,2CACJ,iD,8BApC+B,0FACvB,qJAIQ,kD,yBAVpB,4BACI,2DAGA,8DAsCJ,mC,6BAzC8D,sDAG5C,sD,iBwIAlB,kBAOI,WAAYlnB,EAA8BzhB,EACtCC,EAAoC8f,EAC5B1S,GAFZ,MAGI,YAAMoU,EAAezhB,EAA0BC,EAAkB8f,IAAY,K,OADrE,EAAA1S,Q,SALoC,OAS1C,YAAA3hB,SAAN,W,qFACIlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,0DAC9B,OAApB,EAAA1jB,KAAoB,GAAMA,KAAKu1B,YAAYwf,gBAAgBrxB,EAAOnhB,iB,OACzC,OADzB,EAAKuzB,aAAe,SACpB,EAAA91B,KAAyB,GAAMA,KAAKi3B,cAAckO,U,OAClD,OADA,EAAK+5B,kBAAoB,SACzB,GAAM,YAAMh+D,SAAQ,Y,cAApB,S,yBAIR,YAAAw4C,cAAA,WACI,OAAO15C,KAAKi3B,cAAcsoB,6BAA6Bv/C,KAAK81B,aAAal2B,KAG7E,YAAAo6C,gBAAA,SAAgBjsC,GACZ,OAAO/N,KAAKk/D,kBAAkB13C,MAAK,SAAA/Z,GAAK,OAAAA,EAAE7N,KAAOmO,EAAEnO,O,iCAtB9C2+C,GAA8B,wM,iCAA9BA,EAA8B,wzBxItB3C,4BACI,8CACI,Y,mBACA,gCAIJ,sCACJ,kCACA,yCAAG,a,oBAAsC,iBACzC,iDAIA,iDA2CA,uFACA,mB,MAxDQ,0GACO,2DAMZ,oFACE,4DAIa,kD,+JwIIlB,CAIoD,kCAAvC,EAAAA,kC,68CCtBb,KACA,KAIA,MACA,KANA,I,0ECCI,6BACI,8C,mBACA,sDAAsB,Y,mBAAoB,iBAC9C,gD,MAFgD,6EACtB,kE,sBAKd,4BACI,kEAAyB,Y,mBAAkB,iBAC3C,kEACI,oEACI,Y,oBACJ,iBACA,sEACI,a,oBACJ,iBACJ,uDACJ,oD,MAT6B,+DAGjB,oIAGA,sI,mDAQA,2BACI,uGACA,Y,mBACJ,iB,MADI,yI,yBANhB,6BACI,kEACI,Y,mBACA,6BACI,0EAIJ,0DACJ,sDACA,oEACI,sEACI,a,oBACJ,iBACA,sEACI,a,oBACJ,iBACA,sEACI,a,oBACJ,iBACA,sEACI,a,oBACJ,iBACA,sEACI,a,oBACJ,iBACJ,uDACJ,oD,8BAzBQ,4HAEyD,qDAQrD,gJAGA,gJAGA,8IAGA,kJAGA,6I,yBAtCxB,6BACI,qDACI,yDACI,gEAWA,iEA4BJ,8CACA,2DACI,kEACJ,+CACJ,2CACJ,iD,6BA5CmC,yEAWL,qEDXlC,iBASI,WAAoB17B,EAA+B0S,EACvC9f,GADQ,KAAAoN,QAA+B,KAAA0S,cACvC,KAAA9f,mBAJZ,KAAAg2B,eAAgB,EAChB,KAAA9qC,SAAU,E,OAKV,YAAAO,SAAA,sBACIlB,KAAK6iB,MAAMY,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,wDACvB,OAApB,EAAA1jB,KAAoB,GAAMA,KAAKu1B,YAAYwf,gBAAgBrxB,EAAOnhB,iB,cAAlE,EAAKuzB,aAAe,SAGpB91B,KAAKyrC,cAAgBzrC,KAAK81B,aAAaM,QACvCp2B,KAAKW,SAAU,E,eAIvB,YAAAs4B,oBAAA,WACIj5B,KAAKyV,iBAAiBkB,KAAK,sBAAuB,CAAEpU,eAAgBvC,KAAK81B,aAAal2B,M,iCAnBjF0/D,GAAc,mH,iCAAdA,EAAc,kpCCZ3B,4BACI,4DAIA,6DAgDJ,kCACA,kB,MArDkB,8CAIA,iD,uIDGlB,GAIa,EAAAA,kB,yxDEZb,KAIA,KAEA,MACA,MACA,KARA,IAUA,S,2GzIPQ,4BACI,kD,mBACA,0DAAsB,Y,mBAAoB,iBAC9C,2C,MAFgD,6EACtB,kE,sBAKlC,0BACI,0C,mBACA,kDAAsB,Y,mBAAoB,iBAC9C,mC,MAFgD,6EACtB,kE,sBAGtB,oC,mBACI,Y,mBACJ,kB,MAF4B,+DACxB,qG,sBAcgB,6BACI,mE,mBACA,0EAAsB,Y,mBAAmB,iBAC7C,oE,MAF2C,4EACjB,iE,sBAE1B,6BACI,mE,mBAEA,0EAAsB,Y,mBAAwB,iBAClD,oE,MAH2C,iFAEjB,sE,mDAblC,yBACI,iEACI,4EACJ,sDACA,iEACI,oEAAyB,mH,oBAAwD,aAAU,iBAC3F,kFAIA,kFAKA,+DACA,uEAAO,aAAc,iBACzB,uDACJ,mD,+CAhBwB,wCAGmC,+EAA8B,2CACnE,sEAIA,qDAMP,gD,yBAtB3B,6BACI,6D,mBACI,Y,wCACJ,iBACA,wDACI,0DACI,kEAmBJ,+CACJ,2CACJ,iD,8BA1B+B,4FACvB,uJAIQ,kD,yBAVpB,4BACI,2DAGA,8DA4BJ,mC,6BA/B8D,sDAG5C,sD,iByIFlB,kBAKI,WAAYroC,EAA8BzhB,EACtCC,EAAoC8f,EAC5B1S,GAFZ,MAGI,YAAMoU,EAAezhB,EAA0BC,EAAkB8f,IAAY,K,OADrE,EAAA1S,Q,SAHsC,OAO5C,YAAA3hB,SAAN,W,qFACIlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,wDAC9B,OAApB,EAAA1jB,KAAoB,GAAMA,KAAKu1B,YAAYwf,gBAAgBrxB,EAAOnhB,iB,OAClE,OADA,EAAKuzB,aAAe,SACpB,GAAM,YAAM50B,SAAQ,Y,cAApB,S,yBAIR,YAAAw4C,cAAA,WACI,OAAO15C,KAAKi3B,cAAcsoB,6BAA6Bv/C,KAAK81B,aAAal2B,K,iCAfpE6+C,GAAgC,wM,iCAAhCA,EAAgC,quBzIpB7C,4BACI,8CACI,Y,mBACA,gCAIJ,sCACJ,kCACA,yCAAG,a,oBAAwC,iBAC3C,iDAIA,iDAiCA,uFACA,mB,MA9CQ,4GACO,2DAMZ,sFACE,4DAIa,kD,+JyIElB,CAIsD,oCAAzC,EAAAA,oC,yxDCpBb,KAIA,KAEA,MACA,MACA,MACA,KATA,IAeA,S,mHxIZQ,4BACI,kD,mBACA,0DAAsB,Y,mBAAoB,iBAC9C,2C,MAFgD,6EACtB,kE,sBAKlC,0BACI,0C,mBACA,kDAAsB,Y,mBAAoB,iBAC9C,mC,MAFgD,6EACtB,kE,sBAGtB,oC,mBACI,Y,mBACJ,kB,MAF4B,+DACxB,iG,mDAagB,6BACI,wEAAyB,mI,mBAAwD,YAAU,iBAC/F,mE,0CADuD,8EAA8B,4C,yBAGjF,wEAAM,YAAU,iBACpB,0C,uCADU,4C,sBAEV,6BACI,mE,mBACA,0EAAsB,Y,mBAAmB,iBAC7C,oE,MAF2C,4EACjB,iE,sBAE1B,6BACI,mE,mBAEA,0EAAsB,Y,mBAAwB,iBAClD,oE,MAH2C,iFAEjB,sE,yBAlBlC,yBACI,iEACI,4EACJ,sDACA,iEACI,iFAGA,gHAGA,kFAIA,kFAKA,+DACA,uEAAO,aAAc,iBACzB,uDACA,mEACI,sEACI,a,oBACJ,iBACJ,uDACJ,oD,gEA1BwB,wCAGF,0EAA6D,cAM7D,sEAIA,qDAMP,+CAGD,8FACF,4J,yBA/BxB,6BACI,6D,mBACI,Y,wCACJ,iBACA,wDACI,0DACI,mEA6BJ,+CACJ,2CACJ,iD,8BApC+B,wFACvB,mJAIQ,kD,yBAVpB,4BACI,2DAGA,8DAsCJ,mC,6BAzC8D,sDAG5C,sD,iBwIClB,kBAOI,WAAYxnB,EAA8BK,EACtC9hB,EAAoDC,EACpD8f,EAAkC1S,GAFtC,MAGI,YAAMoU,EAAeK,EAA2B9hB,EAA0BC,EAAkB8f,IAAY,K,OADtE,EAAA1S,Q,SALQ,OASxC,YAAA3hB,SAAN,W,qFACIlB,KAAK6iB,MAAMY,OAAOA,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,0DAC9B,OAApB,EAAA1jB,KAAoB,GAAMA,KAAKu1B,YAAYwf,gBAAgBrxB,EAAOnhB,iB,OACzC,OADzB,EAAKuzB,aAAe,SACpB,EAAA91B,KAAyB,GAAMA,KAAKi3B,cAAckO,U,OAClD,OADA,EAAK+5B,kBAAoB,SACzB,GAAM,YAAMh+D,SAAQ,Y,cAApB,S,yBAIR,YAAAw4C,cAAA,WACI,OAAO15C,KAAKi3B,cAAcsoB,6BAA6Bv/C,KAAK81B,aAAal2B,KAG7E,YAAAo6C,gBAAA,SAAgBjsC,GACZ,OAAO/N,KAAKk/D,kBAAkB13C,MAAK,SAAA/Z,GAAK,OAAAA,EAAE7N,KAAOmO,EAAEnO,O,iCAtB9Co/C,GAA4B,yP,iCAA5BA,EAA4B,0xBxIvBzC,4BACI,8CACI,Y,mBACA,gCAIJ,sCACJ,kCACA,yCAAG,a,oBAAoC,iBACvC,iDAIA,iDA2CA,uFACA,mB,MAxDQ,wGACO,2DAMZ,kFACE,4DAIa,kD,+JwIKlB,CAIkD,gCAArC,EAAAA,gC,68CCvBb,WA2BA,GAjBA,KAKA,KACA,MACA,MACA,KAEA,OAOA,OAEA,SACA,SACA,SACA,SACA,SACA,S,0MCpBwB,6BACI,mE,mBAEA,2EAAsB,Y,mBAAoB,iBAC9C,oE,MAHgD,6EAEtB,kE,mDAQ9B,gCAAqE,4FAEjE,+DAAmD,Y,mBACvD,iB,MADuD,+F,oEDS3E,IAEA,aAmBI,WAAoBn8B,EAA+B0S,EACvC9J,EAAwB8zC,EACxBx9B,EAAkCriC,EAClC8V,EAA4DC,EAC5DovC,EAAgDC,GAJxC,KAAAjiC,QAA+B,KAAA0S,cACvC,KAAA9J,SAAwB,KAAA8zC,oBACxB,KAAAx9B,cAAkC,KAAAriC,cAClC,KAAA8V,2BAA4D,KAAAC,mBAC5D,KAAAovC,qBAAgD,KAAAC,SAV5D,KAAAtxB,aAAuB,KACvB,KAAArxB,KAAmB,KACnB,KAAAm9C,SAAmB,EAEnB,KAAA/oC,MAAwB,K,OAQxB,YAAArV,SAAA,sBACUmlD,EAAcrmD,KAAK6iB,MAAMY,OAAOC,OAAOC,WAAU,SAAMD,GAAM,qC,iEAC3C,OAApB,EAAA1jB,KAAoB,GAAMA,KAAKu1B,YAAYwf,gBAAgBrxB,EAAOnhB,iB,cAAlE,EAAKuzB,aAAe,SACpB91B,KAAKw/D,mBAAmB1pC,aAAe91B,KAAK81B,aAC5C91B,KAAKygD,iBAAiB3qB,aAAe91B,KAAK81B,aAEpC+xB,EAAiB7nD,KAAK6iB,MAAMwjC,YAAY1iC,WAAU,SAAM2iC,GAAO,qC,wEACjEtmD,KAAKygD,iBAAiBvzB,WAAaltB,KAAKw/D,mBAAmBtyC,WAAao5B,EAAQp9C,OAC3ElJ,KAAK81B,aAAaqkB,wBAAnB,MACA,GAAMn6C,KAAK+hC,YAAY+F,UAAS,I,OAAhC,SACA9nC,KAAK6kD,mBAAmBlhC,UArCV,qBAqC+C,SAACpf,GAC1D,EAAKugD,OAAOG,KAAI,gD,yDACJ1gD,EAAQ2gD,S,IACP,4B,0BACG3gD,EAAQk7D,aACR,GAAMvqD,QAAQK,IAAI,CACdvV,KAAKw/D,mBAAmB3lD,OACxB7Z,KAAKygD,iBAAiBplB,aAH1B,M,OACA,SAIAr7B,KAAKu/D,kBAAkBG,gB,iBAE3B,Y,+CAKpB,SAAM1/D,KAAKw/D,mBAAmB3lD,Q,cAA9B,SAEe,MAAXysC,EAAA,OACAtmD,KAAKw/D,mBAAmBG,aAAc,EACtC,GAAM3/D,KAAKygD,iBAAiBmf,W,cAA5B,S,qBAEItZ,EAAQhH,SACRt/C,KAAKw/D,mBAAmBK,eAAgB,EACxC,GAAM7/D,KAAK8/D,eAAc,KAFzB,M,cAEA,S,qBACOxZ,EAAQnkD,MACTlC,EAAI+L,SAASs6C,EAAQnkD,KAAM,MACjCnC,KAAKw/D,mBAAmBO,aAAe9/D,EACvC,GAAMD,KAAKggE,iBAAiB//D,GAAG,KAHxB,M,cAGP,S,qBACOqmD,EAAQ9yB,cACfxzB,KAAKw/D,mBAAmBS,qBAAuB3Z,EAAQ9yB,aACvD,GAAMxzB,KAAKkgE,iBAAiB5Z,EAAQ9yB,cAAc,KAF3C,O,eAEP,S,eAGA,OADAxzB,KAAKw/D,mBAAmBG,aAAc,EACtC,GAAM3/D,KAAKygD,iBAAiBmf,U,QAA5B,S,0BAIkB,MAAtBtZ,EAAQoJ,aACFnpD,EAASvG,KAAKygD,iBAAiB92C,QAAQxB,QAAO,SAAA4F,GAAK,OAAAA,EAAEnO,KAAO0mD,EAAQoJ,eAC/DvxD,OAAS,GAChB6B,KAAK0vD,WAAWnpD,EAAO,IAIT,MAAlBshD,GACAA,EAAe1C,c,cAIJ,MAAfkB,GACAA,EAAYlB,c,eAKxB,YAAAzvC,YAAA,WACI1V,KAAK6kD,mBAAmBM,YA9FE,sBAiGxB,YAAAgb,qBAAN,W,0FAII,OAHAngE,KAAKygD,iBAAiBpmB,YAAa,EACnCr6B,KAAKygD,iBAAiBnB,SAAU,EAChCt/C,KAAKw/D,mBAAmBz1B,kBAAoB/pC,KAAKN,YAAYO,EAAE,eAC/D,GAAMD,KAAKygD,iBAAiBjB,e,cAA5B,SACAx/C,KAAKogE,eACLpgE,KAAKqgE,K,YAGH,YAAAL,iBAAN,SAAuB79D,EAAkB0X,G,YAAA,IAAAA,OAAA,G,gGACrC7Z,KAAKygD,iBAAiBpmB,YAAa,EACnCr6B,KAAKygD,iBAAiBnB,SAAU,EAChCt/C,KAAKw/D,mBAAmBz1B,kBAAoB/pC,KAAKN,YAAYO,EAAE,cACzDkI,EAAS,SAAC4F,GAAkB,OAAAA,EAAE5L,OAASA,GACzC0X,EACA,GAAM7Z,KAAKygD,iBAAiBmf,OAAOz3D,IADnC,M,cACA,S,aAEA,SAAMnI,KAAKygD,iBAAiBjB,YAAYr3C,I,OAAxC,S,wBAEJnI,KAAKogE,eACLpgE,KAAKmC,KAAOA,EACZnC,KAAKqgE,K,YAGH,YAAAH,iBAAN,SAAuB1sC,EAAsB3Z,G,YAAA,IAAAA,OAAA,G,gGACzC7Z,KAAKygD,iBAAiBpmB,YAAa,EACnCr6B,KAAKygD,iBAAiBnB,SAAU,EAChCt/C,KAAKw/D,mBAAmBz1B,kBAAoB/pC,KAAKN,YAAYO,EAAE,oBACzDkI,EAAS,SAAC4F,GACZ,MAAqB,eAAjBylB,EAC0B,MAAnBzlB,EAAEqX,eAAoD,IAA3BrX,EAAEqX,cAAcjnB,OAExB,MAAnB4P,EAAEqX,eAAyBrX,EAAEqX,cAAchgB,QAAQouB,IAAiB,GAG/E3Z,EACA,GAAM7Z,KAAKygD,iBAAiBmf,OAAOz3D,IADnC,M,cACA,S,aAEA,SAAMnI,KAAKygD,iBAAiBjB,YAAYr3C,I,OAAxC,S,wBAEJnI,KAAKogE,eACLpgE,KAAKwzB,aAAeA,EACpBxzB,KAAKqgE,K,YAGH,YAAAP,cAAN,SAAoBjmD,G,YAAA,IAAAA,OAAA,G,0FAChB7Z,KAAKygD,iBAAiBpmB,YAAa,EACnCr6B,KAAKygD,iBAAiBnB,SAAU,EAChCt/C,KAAKw/D,mBAAmBz1B,kBAAoB/pC,KAAKN,YAAYO,EAAE,eAC3D4Z,EACA,GAAM7Z,KAAKygD,iBAAiBmf,OAAO,MAAM,IADzC,M,cACA,S,aAEA,SAAM5/D,KAAKygD,iBAAiBjB,YAAY,O,OAAxC,S,wBAEJx/C,KAAKogE,eACLpgE,KAAKs/C,SAAU,EACft/C,KAAKqgE,K,YAGT,YAAAC,iBAAA,SAAiBpzC,GACbltB,KAAKygD,iBAAiBvzB,WAAaA,EACnCltB,KAAKygD,iBAAiBv3C,OAAO,MAGjC,YAAAq3D,sBAAA,SAAsBh6D,GAAtB,WACI,GAAsC,MAAlCvG,KAAK81B,aAAaiV,cAA2D,IAAnC/qC,KAAK81B,aAAaiV,aAAhE,CAKkB,MAAd/qC,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKwgE,oBAAoBrqD,gBAAgBJ,GAASK,SAC/D,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAA2B,EAAAwpC,qBAAsBn/C,KAAKwgE,qBAExF5qC,EAAeE,aAAe91B,KAAK81B,aACnCF,EAAexC,SAAW7sB,EAAO3G,GACjC,IAAI6gE,GAAwB,EAC5B7qC,EAAe8qC,qBAAqB/8C,WAAU,WAAM,OAAA88C,GAAwB,KAC5E7qC,EAAe+qC,oBAAoBh9C,WAAU,WAAM,OAAA88C,GAAwB,KAE3EzgE,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,yDAC1B3jB,KAAKuW,MAAQ,KACTkqD,EACA,GAAMzgE,KAAKygD,iBAAiBplB,WAD5B,M,OACA,S,wBAEJolC,GAAwB,E,mBAvBxBzgE,KAAKyV,iBAAiBkB,KAAK,sBAAuB,CAAEpU,eAAgBgE,EAAOhE,kBA2BnF,YAAAq+D,sBAAA,SAAsBr6D,GAAtB,WACsB,MAAdvG,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK6gE,oBAAoB1qD,gBAAgBJ,GAASK,SAC/D,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAA2B,EAAAkqC,qBAAsB7/C,KAAK6gE,qBAEpF7gE,KAAK81B,aAAaqkB,0BAClBvkB,EAAexQ,cAAgB7e,EAAO6e,cACtCwQ,EAAexuB,YAAcpH,KAAKw/D,mBAAmBp4D,YAAYe,QAAO,SAAA4F,GAAK,OAACA,EAAE0U,aAEpFmT,EAAeE,aAAe91B,KAAK81B,aACnCF,EAAexC,SAAW7sB,EAAO3G,GACjCg2B,EAAekrC,mBAAmBn9C,WAAU,gD,kDAExC,OADA3jB,KAAKuW,MAAMU,QACX,GAAMjX,KAAKygD,iBAAiBplB,W,cAA5B,S,cAGJr7B,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,kCAC1B3jB,KAAKuW,MAAQ,K,cAIrB,YAAAwqD,UAAA,WACI,IAAMC,EAAYhhE,KAAKihE,WAAW,MAClCD,EAAUz+D,eAAiBvC,KAAK81B,aAAal2B,GAC7CohE,EAAU7+D,KAAOnC,KAAKmC,KAClBnC,KAAK81B,aAAaqkB,0BAClB6mB,EAAU55D,YAAcpH,KAAKw/D,mBAAmBp4D,YAAYe,QAAO,SAAA4F,GAAK,OAACA,EAAE0U,aAEtD,MAArBziB,KAAKwzB,eACLwtC,EAAU57C,cAAgB,CAACplB,KAAKwzB,gBAIxC,YAAAytC,WAAA,SAAW16D,GAAX,WACsB,MAAdvG,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK61B,sBAAsB1f,gBAAgBJ,GAASK,SACjE,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAAuB,EAAAogB,iBAAkB/1B,KAAK61B,uBAqBhF,OAnBAD,EAAeE,aAAe91B,KAAK81B,aACnCF,EAAexC,SAAqB,MAAV7sB,EAAiB,KAAOA,EAAO3G,GACzDg2B,EAAeI,cAAcrS,WAAU,SAAO5V,GAAa,qC,kDAEvD,OADA/N,KAAKuW,MAAMU,QACX,GAAMjX,KAAKygD,iBAAiBplB,W,cAA5B,S,cAEJzF,EAAeK,gBAAgBtS,WAAU,SAAO5V,GAAa,qC,kDAEzD,OADA/N,KAAKuW,MAAMU,QACX,GAAMjX,KAAKygD,iBAAiBplB,W,cAA5B,S,cAEJzF,EAAeM,iBAAiBvS,WAAU,SAAO5V,GAAa,qC,kDAE1D,OADA/N,KAAKuW,MAAMU,QACX,GAAMjX,KAAKygD,iBAAiBplB,W,cAA5B,S,cAGJr7B,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,QAGVqf,GAGX,YAAAsrC,YAAA,SAAY36D,GACR,IAAMy6D,EAAYhhE,KAAKihE,WAAW16D,GAClCy6D,EAAUvnC,WAAY,EACtBunC,EAAUz+D,eAAiBvC,KAAK81B,aAAal2B,GACzCI,KAAK81B,aAAaqkB,0BAClB6mB,EAAU55D,YAAcpH,KAAKw/D,mBAAmBp4D,YAAYe,QAAO,SAAA4F,GAAK,OAACA,EAAE0U,aAI/Eu+C,EAAU57C,cAAgB7e,EAAO6e,eAG/B,YAAAsqC,WAAN,SAAiBnpD,G,yFACK,MAAdvG,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGTlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKgxD,eAAe76C,gBAAgBJ,GAASK,UACpDwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAAq8B,sBAAuBhyC,KAAKgxD,iBAEjBtpD,KAAOnB,EAAOmB,KAC7BkuB,EAAerzB,eAAiBvC,KAAK81B,aAAal2B,GAClDg2B,EAAesa,SAAW3pC,EAAO3G,GACjCg2B,EAAekb,UAAW,EAC1Blb,EAAeoa,OAAS,SAExBhwC,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,Q,WAIb,YAAA6pD,aAAR,WACIpgE,KAAKwzB,aAAe,KACpBxzB,KAAKmC,KAAO,KACZnC,KAAKs/C,SAAU,GAGX,YAAA+gB,GAAR,SAAWha,QAAA,IAAAA,MAAA,MACY,MAAfA,IACAA,EAAc,CACVlkD,KAAMnC,KAAKmC,KACXqxB,aAAcxzB,KAAKwzB,aACnB8rB,UAASt/C,KAAKs/C,SAAiB,OAIvCt/C,KAAKyrB,OAAOsc,SAAS,GAAI,CACrBsP,WAAYr3C,KAAK6iB,MACjBwjC,YAAaA,EACb8a,YAAY,K,iCA/SXC,GAAc,wX,iCAAdA,EAAc,sD,OAAA,M,oBACZ,EAAAn3B,oBAAoB,G,oBACpB,EAAA7N,kBAAkB,G,yBACK,EAAA5F,kB,yBACE,EAAAA,kB,yBACF,EAAAA,kB,yBACG,EAAAA,mB,2zCChDzC,4BACI,iDACI,qDACI,6EACI,+CAAgB,EAAA2pC,yBAAhB,CAAuC,0CAAwB,EAAAH,iBAAA,KAA/D,CAAuC,0CAChB,EAAAE,iBAAA,QADvB,CAAuC,0CACoC,EAAAI,iBAAA,KAD3E,CAAuC,oCAErB,EAAAR,mBACtB,8CACJ,0CACA,sDACI,2DACI,4DACI,a,oBACA,iCACI,kFAKJ,uDACJ,mDACA,+DACI,uFAEA,uDACA,yEAIJ,mDACJ,+CACA,8EAAuB,mDAAmB,EAAAmB,WAAA,KAAnB,CAAsC,2CACjC,EAAAV,sBAAA,KADL,CAAsC,iCACa,EAAAQ,cADnD,CAAsC,2CAEjC,EAAAH,sBAAA,KAFL,CAAsC,sCAEiB,EAAAlR,WAAA,KAFvD,CAAsC,qCAGvC,EAAAwR,YAAA,MACtB,+CACJ,2CACJ,uCACJ,mCACA,wFACA,wFACA,wFACA,wFACA,mB,6BAxCqC,8CAAqB,mBAArB,CAAqB,gBAStC,oHACsB,6EACJ,8CAQM,mEAAqC,gBAArC,CAAqC,oBAArC,CAAqC,+BAIzD,iD,+IDYxB,GAIa,EAAAE,kB,yxDE1Cb,KAEA,KACA,MACA,MACA,KACA,KACA,KAPA,IASA,SACA,SAKA,S,2HzIToB,4BAAsB,YAAe,kB,6BAAf,mD,qBAWV,sB,qBACA,sB,mDAMI,6BACI,oFAEI,mF,mBAEA,2FAAsB,Y,mBAA8B,iBAAO,iBAC/D,8FACI,+HACiC,a,oBAAgB,iBACzD,uE,mFALY,uFACkB,2EAEa,qEAAuC,sBACzC,+D,mDAKjD,4BACI,oFACuC,6H,mBAEnC,2EAEA,2E,mBAEJ,mEACJ,+D,kFAPQ,mFACA,oDAAqC,sBACA,gDAGjC,6EADyC,mC,mDA5BzD,yBACI,yEACI,8EACA,8EAEJ,8DACA,yEACI,gFACI,kFAAyB,+GAAsB,aAAc,iBAC7D,wFAUJ,mEACA,+EAAO,aAAc,iBACzB,+DACA,+EAUJ,2D,+CA9B4C,mDACS,kDAKM,+CAC1C,+DAWF,+CAEoB,iD,yBAxB3C,+BACI,iEACI,wEAiCJ,sDACJ,mD,6BAlCY,6D,sBAmCZ,0BACI,8DAAI,Y,mBAA0B,iBAC9B,oEAAkC,Y,mBAAiB,iBACnD,gEACA,sEAAoC,a,oBAAwB,iBAChE,oD,MAJQ,uEAC8B,8DAEE,uE,yBAIxC,gCACI,2D,mBACA,gEAAM,Y,mBAAiB,iBAC3B,mD,8CAHyD,mCACpB,6EAC3B,+DyI3C1B,kBAQI,WAAYnqC,EAA8Bv3B,EACtCyZ,EAA8Boc,EAC9Bpa,EAAoDC,GAFxD,MAGI,YAAM6b,EAAev3B,EAAayZ,EAAeoc,EAAapa,IAAqB,K,OAD/B,EAAAC,aALxD,EAAAwc,UAAW,E,SAD2B,OAUtB,YAAAqnB,SAAhB,SAAyBt1B,G,iGACjB3pB,KAAK81B,aAAaqkB,yBAA2Bn6C,KAAKk8B,sBAAsBvS,GACxE,GAAM,YAAMu1B,yBAAwB,UAACv1B,GAAY,IADjD,M,OACA,S,mCAIQ,YAAA0wB,WAAhB,W,uGACSr6C,KAAK81B,aAAaqkB,wBAAnB,MACO,GAAM,YAAME,WAAU,Y,OAA7B,MAAO,CAAP,EAAO,U,OAEM,SAAMr6C,KAAKob,WAAWk/B,eAAet6C,KAAKozB,W,OAC3D,OADMxyB,EAAW,SACV,CAAP,EAAO,IAAI,EAAA4pB,OAAO,IAAI,EAAApD,WAAWxmB,aAG3B,YAAAygE,qBAAV,SAA+BrkB,GAC3B,OAAOh9C,KAAKi3B,cAAcqqC,yBAAyBthE,KAAKuhE,aAAcvkB,EAAMh9C,KAAK81B,aAAaqkB,0BAGxF,YAAAqnB,uBAAV,SAAiCC,GAC7B,OAAKzhE,KAAK81B,aAAaqkB,wBAGhBn6C,KAAKob,WAAWsmD,4BAA4B1hE,KAAKozB,SAAUquC,GAFvD,YAAMD,uBAAsB,UAACC,IAKlC,YAAAvlC,sBAAV,SAAgCvS,GAC5B,OAAyB,MAAlBA,EAAWhrB,KAAeqB,KAAK81B,aAAaqkB,yB,iCApC9CgF,GAAoB,gO,iCAApBA,EAAoB,qoEzIrBjC,4BACI,iDACI,wDAAkC,2CAAY,EAAAr3B,YAC1C,yDACI,4DACI,a,oBACA,iCACJ,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,oEAqCA,kEAMJ,+CACA,4DACI,qEAIA,mEAA6E,a,oBACjE,iBAChB,+CACJ,2CACJ,uCACJ,mCACA,mB,MAlEgE,0DAG5C,yHACO,6CAE8C,oFAKb,uEAqCvC,gDAQ8E,gDAIN,mE,oKyI7C7F,CAI0C,wBAA7B,EAAAq3B,wB,68CCrBb,W,GAQA,MACA,MACA,KACA,KACA,K,2CAOA,aAeI,WAAsBloB,EAAwCv3B,EAChDyZ,EAAwCoc,EACxCpa,EAAsDrL,GAF9C,KAAAmnB,gBAAwC,KAAAv3B,cAChD,KAAAyZ,gBAAwC,KAAAoc,cACxC,KAAApa,uBAAsD,KAAArL,MAd1D,KAAA4wD,qBAAuB,IAAI,EAAA39C,aAC3B,KAAA49C,oBAAsB,IAAI,EAAA59C,aAC1B,KAAA4+C,uBAAyB,IAAI,EAAA5+C,aAOvC,KAAA6+C,eAAkD,GAClD,KAAAC,iBAAoD,G,OAM9C,YAAA3gE,SAAN,W,0FACI,SAAMlB,KAAK0K,Q,cAAX,S,YAGE,YAAAod,OAAN,W,sGACI,IAAK9nB,KAAK8hE,cAGN,OAFA9hE,KAAKmb,qBAAqBud,UAAU,QAAS14B,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,cACvB,IAKJ,GAFM8lC,EAASx1B,SAASy1B,eAAe,QAE1B,OADPH,EAAQE,EAAOF,QACiB,IAAjBA,EAAM1nC,OAGvB,OAFA6B,KAAKmb,qBAAqBud,UAAU,QAAS14B,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,eACvB,IAGJ,GAAI4lC,EAAM,GAAGlnB,KAAO,UAGhB,OAFA3e,KAAKmb,qBAAqBud,UAAU,QAAS14B,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,gBACvB,I,iBAKoB,O,sBADpBD,KAAKmoB,YAAcnoB,KAAKqhE,qBAAqBx7B,EAAM,IACnD,EAAA7lC,KAAoB,GAAMA,KAAKmoB,a,OACjB,OADd,EAAKo5C,aAAe,SACpB,EAAAvhE,KAAc,GAAMA,KAAKuhE,aAAalsD,W,cAAtC,EAAK9O,OAAS,SACdvG,KAAKmb,qBAAqB2Z,WAAW,oBACrC90B,KAAKmb,qBAAqBud,UAAU,UAAW,KAAM14B,KAAKN,YAAYO,EAAE,oBACxED,KAAK0gE,qBAAqBhqD,O,iDAK9BqvB,EAAO5jC,KAAO,GACd4jC,EAAO5jC,KAAO,OACd4jC,EAAOrnC,MAAQ,G,YAGb,YAAAs8B,OAAN,SAAarR,G,gGACT,OAA0C,MAAtC3pB,KAAK4hE,eAAej4C,EAAW/pB,IAC/B,IAGc,GAAMI,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,gCAAiCD,KAAKN,YAAYO,EAAE,oBACvED,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,Y,OACzD,IAHkB,SAId,U,iBAKA,O,sBADAD,KAAK4hE,eAAej4C,EAAW/pB,IAAMI,KAAKwhE,uBAAuB73C,EAAW/pB,IAC5E,GAAMI,KAAK4hE,eAAej4C,EAAW/pB,K,cAArC,SACAI,KAAKmb,qBAAqB2Z,WAAW,sBACrC90B,KAAKmb,qBAAqBud,UAAU,UAAW,KAAM14B,KAAKN,YAAYO,EAAE,uBAClEhC,EAAI+B,KAAKuG,OAAO2e,YAAY9f,QAAQukB,KACjC,GACL3pB,KAAKuG,OAAO2e,YAAYyoC,OAAO1vD,EAAG,G,iDAI1C+B,KAAK4hE,eAAej4C,EAAW/pB,IAAM,KACrCI,KAAK2gE,oBAAoBjqD,O,YAGvB,YAAAqrD,SAAN,SAAep4C,G,0GAEX,OADMta,EAAKsa,GACLq4C,YACF,IAGChiE,KAAKiiE,sBAMV5yD,EAAE2yD,aAAc,EACC,GAAMrkB,MAAM,IAAIC,QAAQj0B,EAAWpkB,IAAK,CAAE28D,MAAO,iBAN9DliE,KAAKmb,qBAAqBud,UAAU,QAAS14B,KAAKN,YAAYO,EAAE,mBAC5DD,KAAKN,YAAYO,EAAE,wBACvB,K,OAKJ,GAAwB,OADlBW,EAAW,UACJ+e,OAGT,OAFA3f,KAAKmb,qBAAqBud,UAAU,QAAS,KAAM14B,KAAKN,YAAYO,EAAE,kBACtEoP,EAAE2yD,aAAc,EAChB,I,iBAIY,O,sBAAA,GAAMphE,EAASuhE,e,cAArBC,EAAM,SACkB,MAAlBz4C,EAAWhrB,IAAX,OAAyB,EAAAgrB,EAAWhrB,I,cAC5C,SAAMqB,KAAKmZ,cAAcE,UAAUrZ,KAAKuG,OAAOhE,iB,OAA/C,W,iBACW,OAFT5D,EAAM,EAEG,GAAMqB,KAAKmZ,cAAckpD,iBAAiBD,EAAKzjE,I,cAAxD2jE,EAAS,SACftiE,KAAKmb,qBAAqBy/C,SAAS56D,KAAK8P,IAAKwyD,EAAQ,KAAM34C,EAAW0B,U,6BAEtErrB,KAAKmb,qBAAqBud,UAAU,QAAS,KAAM14B,KAAKN,YAAYO,EAAE,kB,oBAG1EoP,EAAE2yD,aAAc,E,YAGJ,YAAAt3D,KAAhB,W,sGACwB,OAApB,EAAA1K,KAAoB,GAAMA,KAAKq6C,c,OACjB,OADd,EAAKknB,aAAe,SACpB,EAAAvhE,KAAc,GAAMA,KAAKuhE,aAAalsD,W,OAEjB,OAFrB,EAAK9O,OAAS,SAEd,EAAAvG,KAAqB,GAAMA,KAAKmZ,cAAcopD,a,OACrB,OADzB,EAAKT,cAAgB,SACI,GAAM9hE,KAAKu1B,YAAYc,oB,cAA1CA,EAAmB,SACzBr2B,KAAKiiE,qBAAuB5rC,GAAkD,MAA9Br2B,KAAKuG,OAAOhE,eAEvDvC,KAAKiiE,qBAAN,MACkB,GAAMjiE,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,uBAAwBD,KAAKN,YAAYO,EAAE,mBAC9DD,KAAKN,YAAYO,EAAE,aAAcD,KAAKN,YAAYO,EAAE,Y,cAFtC,UAIdD,KAAKmb,qBAAqBuM,UAAU,mD,oBAEhC1nB,KAAK8hE,cAAN,MACW,GAAM9hE,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,aAAcD,KAAKN,YAAYO,EAAE,sBACpDD,KAAKN,YAAYO,EAAE,aAAcD,KAAKN,YAAYO,EAAE,UAAW,Y,OAFjD,UAIdD,KAAKmb,qBAAqBuM,UAAU,6D,mCAKhC,YAAAw3B,yBAAhB,SAAyCv1B,EAA4B64C,G,uGAEjE,GADMnzD,EAAKsa,EACW,MAAlBA,EAAWhrB,KAAe0Q,EAAE2yD,aAAuD,MAAxChiE,KAAK6hE,iBAAiBl4C,EAAW/pB,IAC5E,U,iBA4CA,O,sBAxCAI,KAAK6hE,iBAAiBl4C,EAAW/pB,IAAMsV,QAAQC,UAAU1U,MAAK,gD,wEAGzC,OADjB4O,EAAE2yD,aAAc,EACC,GAAMrkB,MAAM,IAAIC,QAAQj0B,EAAWpkB,IAAK,CAAE28D,MAAO,e,OAClE,GAAwB,OADlBthE,EAAW,UACJ+e,OAGT,OAFA3f,KAAKmb,qBAAqBud,UAAU,QAAS,KAAM14B,KAAKN,YAAYO,EAAE,kBACtEoP,EAAE2yD,aAAc,EAChB,I,iBAKY,O,wBAAA,GAAMphE,EAASuhE,e,cAArBC,EAAM,SACkB,MAAlBz4C,EAAWhrB,IAAX,OAAyB,EAAAgrB,EAAWhrB,I,cAC5C,SAAMqB,KAAKmZ,cAAcE,UAAUrZ,KAAKuG,OAAOhE,iB,OAA/C,W,iBACW,OAFT5D,EAAM,EAEG,GAAMqB,KAAKmZ,cAAckpD,iBAAiBD,EAAKzjE,I,OAC1C,OADd2jE,EAAS,SACf,EAAAtiE,KAAoB,GAAMA,KAAKi3B,cAAcwrC,4BACzCziE,KAAKuhE,aAAc53C,EAAW0B,SAAUi3C,EAAQE,I,OACtC,OAFd,EAAKjB,aAAe,SAEpB,EAAAvhE,KAAc,GAAMA,KAAKuhE,aAAalsD,W,OAItC,OAJA,EAAK9O,OAAS,SAGdvG,KAAK4hE,eAAej4C,EAAW/pB,IAAMI,KAAKwhE,uBAAuB73C,EAAW/pB,IAC5E,GAAMI,KAAK4hE,eAAej4C,EAAW/pB,K,eAArC,UACM8iE,EAAkB1iE,KAAKuG,OAAO2e,YAAY/c,QAAO,SAAAw6D,GAAM,OAAAA,EAAG/iE,KAAO+pB,EAAW/pB,OAC9DzB,OAAS,IACnBF,EAAI+B,KAAKuG,OAAO2e,YAAY9f,QAAQs9D,EAAgB,MACjD,GACL1iE,KAAKuG,OAAO2e,YAAYyoC,OAAO1vD,EAAG,GAI1C+B,KAAKmb,qBAAqB2Z,WAAW,yBACrC90B,KAAKmb,qBAAqBud,UAAU,UAAW,KAAM14B,KAAKN,YAAYO,EAAE,oBACxED,KAAK2hE,uBAAuBjrD,O,+BAE5B1W,KAAKmb,qBAAqBud,UAAU,QAAS,KAAM14B,KAAKN,YAAYO,EAAE,kB,sBAG1EoP,EAAE2yD,aAAc,E,cAEpB,GAAMhiE,KAAK6hE,iBAAiBl4C,EAAW/pB,K,cAAvC,S,4DAIE,YAAAy6C,WAAV,WACI,OAAOr6C,KAAKi3B,cAAcz4B,IAAIwB,KAAKozB,WAG7B,YAAAiuC,qBAAV,SAA+BrkB,GAC3B,OAAOh9C,KAAKi3B,cAAcqqC,yBAAyBthE,KAAKuhE,aAAcvkB,IAGhE,YAAAwkB,uBAAV,SAAiCC,GAC7B,OAAOzhE,KAAKi3B,cAAc2rC,2BAA2B5iE,KAAKuG,OAAO3G,GAAI6hE,I,iCA5MhEtiB,GAAoB,gNAgB4C0jB,U,iCAhBhE1jB,EAAoB,+K,EADjC,GACa,EAAAA,wB,yxDCpBb,KAEA,KACA,MACA,MACA,KACA,KANA,IAQA,SACA,SAEA,SAEA,S,oHxIPoB,4BAAsB,YAAe,kB,6BAAf,mD,mDAUtB,6BACI,yEAAsB,wFAAmB,MACrC,Y,mBACJ,iBACA,yEAAsB,wFAAmB,MACrC,Y,mBACJ,iBACJ,sD,MALQ,kIAGA,qI,sBAIZ,0BACI,Y,mBACJ,kB,MADI,6H,mDAII,4BAAiD,4GAC7C,yEACI,gFAAuB,6FAAvB,iBAEJ,8DACA,sEACI,YACJ,iBACJ,0D,oCANuD,4EAAxB,kCAIvB,mH,yBARhB,+BACI,iEACI,wEASJ,sDACJ,mD,6BAVY,sDwIf5B,kBAOI,WAAY/nB,EAAsCjc,EAC9Czb,EAA0Bu3B,EAClB7b,GAFZ,MAGI,YAAMgc,EAAmBjc,EAAsBzb,EAAau3B,IAAc,K,OADlE,EAAA7b,aAER,EAAK0nD,iBAAkB,E,SAPW,OAUtB,YAAAzoB,WAAhB,W,uGACSr6C,KAAK81B,aAAaqkB,wBAAnB,MACO,GAAM,YAAME,WAAU,Y,OAA7B,MAAO,CAAP,EAAO,U,OAEM,SAAMr6C,KAAKob,WAAWk/B,eAAet6C,KAAKozB,W,OAC3D,OADMxyB,EAAW,SACV,CAAP,EAAO,IAAI,EAAA4pB,OAAO,IAAI,EAAApD,WAAWxmB,aAG3B,YAAAmiE,sBAAV,WACI,OAAK/iE,KAAK81B,aAAaqkB,wBAGhBn6C,KAAKolB,cAFD,YAAM29C,sBAAqB,YAKhC,YAAA3oB,gBAAV,WACI,OAAKp6C,KAAK81B,aAAaqkB,wBAGhBjlC,QAAQC,QAAQnV,KAAKoH,aAFjB,YAAMgzC,gBAAe,YAK1B,YAAA4oB,gBAAV,WACI,GAAIhjE,KAAK81B,aAAaqkB,wBAAyB,CAC3C,IAAMh2B,EAAU,IAAI,EAAA8+C,yBAAyBjjE,KAAKuhE,aAAan8C,eAC/D,OAAOplB,KAAKob,WAAW8nD,0BAA0BljE,KAAKozB,SAAUjP,GAEhE,OAAO,YAAM6+C,gBAAe,Y,iCArC3BnjB,GAAoB,iM,iCAApBA,EAAoB,2lC,GAAA,MxInBjC,4BACI,iDACI,wDAAkC,2CAAY,EAAA/3B,YAC1C,yDACI,4DACI,a,oBACA,iCACJ,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,2DAAG,a,oBAA4B,iBAC/B,gEACI,gEAAI,a,oBAAwB,iBAC5B,uEAQJ,mDACA,iEAGA,oEAaJ,+CACA,4DACI,mEACI,6D,oBACA,kEAAM,a,oBAAiB,iBAC3B,mDACA,mEACyB,a,oBAAmB,iBAChD,+CACJ,2CACJ,uCACJ,mCACA,mB,4BAnDgE,0DAG5C,0HACO,6CAE8C,oFAKtD,4EAEK,uEACwB,wEAS3B,0EAG4C,wEAeQ,kDACpB,+EAC3B,gEAGe,oE,gQwIjCzC,CAI0C,wBAA7B,EAAA+3B,wB,8ECnBb,MAGI,SAAYz6B,GACRplB,KAAKolB,cAAiC,MAAjBA,EAAwB,GAAKA,GAJ7C,EAAA69C,4B,68CCAb,WAcA,GARA,KACA,MAEA,KACA,MACA,KAEA,OACA,Q,4EAEA,aAYI,WAAoB5uC,EAAiC4C,EACzCrP,EAAwCloB,EACxC0b,GAFQ,KAAAiZ,YAAiC,KAAA4C,gBACzC,KAAArP,iBAAwC,KAAAloB,cACxC,KAAA0b,aATH,KAAAwlC,UAAsB,GACtB,KAAA1lB,WAAqB,EAEpB,KAAA2lB,UAAY,IAAI,EAAA99B,a,OAQpB,YAAA+E,OAAN,W,iGACS9nB,KAAK81B,cAAiB91B,KAAK81B,aAAaqkB,wBAAzC,MACA,GAAMn6C,KAAKmjE,iB,cAAX,S,aAEA,SAAMnjE,KAAKojE,sB,OAAX,S,iBAGJ,SAAMpjE,KAAKmoB,a,cAAX,SAEAnoB,KAAK6gD,UAAUnqC,OACf1W,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,uBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAED,KAAKk7B,UAAY,0BAC5E,iB,YAGI,YAAAioC,cAAd,W,yGACQnjE,KAAKk7B,WACL,EAAAl7B,KAAmB,GAAMA,KAAKi3B,cAAcosC,qBAAqBrjE,KAAK4gD,aADtE,M,cACA,EAAKz4B,YAAc,S,aAEA,OAAnB,EAAAnoB,KAAmB,GAAMA,KAAKi3B,cAAcqsC,yBAAyBtjE,KAAK4gD,Y,OAA1E,EAAKz4B,YAAc,S,mCAIb,YAAAi7C,mBAAd,W,2GACUG,EAAgB,IAAI,EAAAC,wBAAwBxjE,KAAK4gD,UAAW5gD,KAAK81B,aAAal2B,IAChFI,KAAKk7B,WACL,EAAAl7B,KAAmB,GAAMA,KAAKob,WAAWqoD,uBAAuBF,KADhE,M,cACA,EAAKp7C,YAAc,S,aAEA,OAAnB,EAAAnoB,KAAmB,GAAMA,KAAKob,WAAWsoD,0BAA0BH,I,OAAnE,EAAKp7C,YAAc,S,oEAxClBw4B,GAAmB,sL,iCAAnBA,EAAmB,6zB,GAAA,MCpBhC,4BACI,iDACI,wDAAkC,2CAAY,EAAA74B,YAC1C,yDACI,4DACI,a,oBACJ,iBACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,a,oBACJ,iBACA,2DACI,mEACI,6D,oBACA,kEAAM,a,oBAAuD,iBACjE,mDACA,mEACyB,a,oBAAmB,iBAChD,+CACJ,2CACJ,uCACJ,mCACA,mB,4BAvBgE,0DAG5C,gKAEqD,oFAKzD,8LAGqE,kDAChC,+EAC3B,kGAGe,oE,gKDJzC,GAIa,EAAA64B,uB,8EEpBb,MAII,SAAYgjB,EAAephE,GACvBvC,KAAK2jE,IAAa,MAAPA,EAAc,GAAKA,EAC9B3jE,KAAKuC,eAAiBA,GANjB,EAAAihE,2B,68CCAb,W,GAQA,KACA,MAEA,MACA,MACA,K,4GCGwB,gCAAmD,YAAU,kB,uBAA3B,6BAAiB,4CDC3E,iBAYI,WAAoBnvC,EAAiC4C,EACzCrP,EAAwCloB,EACxCw3B,GAFQ,KAAA7C,YAAiC,KAAA4C,gBACzC,KAAArP,iBAAwC,KAAAloB,cACxC,KAAAw3B,gBATH,KAAA0pB,UAAsB,GACrB,KAAAc,QAAU,IAAI,EAAA3+B,aAExB,KAAA6B,SAAmB,KACnB,KAAAvd,QAAwB,G,OAOlB,YAAAnG,SAAN,W,gGACmB,OAAf,EAAAlB,KAAe,GAAMA,KAAKk3B,cAAc6iB,mB,cAAxC,EAAK1yC,QAAU,SACfrH,KAAK4kB,SAAW5kB,KAAKqH,QAAQ,GAAGzH,G,YAG9B,YAAAkoB,OAAN,W,0FAEI,OADA9nB,KAAKmoB,YAAcnoB,KAAKi3B,cAAc2sC,mBAAmB5jE,KAAK4gD,UAAW5gD,KAAK4kB,UAC9E,GAAM5kB,KAAKmoB,a,cAAX,SACAnoB,KAAK0hD,QAAQhrC,OACb1W,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,qBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,e,6CAtB5DwhD,GAAiB,yL,iCAAjBA,EAAiB,i5B,GAAA,MCrB9B,4BACI,iDACI,wDAAkC,2CAAY,EAAA35B,YAC1C,yDACI,4DACI,a,oBACJ,iBACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,2DAAG,a,oBAAoD,iBACvD,+DACI,sEAAoB,a,oBAAmB,iBACvC,uEAAoC,iEAChC,6EACJ,uDACJ,mDACJ,+CACA,4DACI,mEACI,6D,oBACA,kEAAM,a,oBAAiB,iBAC3B,mDACA,mEACyB,a,oBAAmB,iBAChD,+CACJ,2CACJ,uCACJ,mCACA,mB,4BA7BgE,0DAG5C,uHAEqD,oFAKtD,qGAEqB,kEACgB,kDACxB,iDAKyC,kDACpB,+EAC3B,gEAGe,oE,sRDTzC,GAIa,EAAA25B,qB,68CErBb,W,GAOA,KACA,MAEA,MACA,K,oEAEA,aAUI,WAAoBptB,EAAiC4C,EACzCrP,EAAwCloB,GADhC,KAAA20B,YAAiC,KAAA4C,gBACzC,KAAArP,iBAAwC,KAAAloB,cAN3C,KAAAkhD,UAAsB,GACrB,KAAAK,WAAa,IAAI,EAAAl+B,a,OAOrB,YAAA+E,OAAN,W,0FAEI,OADA9nB,KAAKmoB,YAAcnoB,KAAKi3B,cAAc4sC,sBAAsB7jE,KAAK4gD,WACjE,GAAM5gD,KAAKmoB,a,cAAX,SACAnoB,KAAKihD,WAAWvqC,OAChB1W,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,wBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,kB,6CAd5D+gD,GAAoB,oJ,iCAApBA,EAAoB,ixB,GAAA,MCjBjC,4BACI,iDACI,wDAAkC,2CAAY,EAAAl5B,YAC1C,yDACI,4DACI,a,oBACJ,iBACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,a,oBACJ,iBACA,2DACI,mEACI,6D,oBACA,kEAAM,a,oBAAoB,iBAC9B,mDACA,mEACyB,a,oBAAmB,iBAChD,+CACJ,2CACJ,uCACJ,mCACA,mB,4BAvBgE,0DAG5C,yHAEqD,oFAKzD,8IAGsE,kDACjC,+EAC3B,mEAGe,oE,gKDPzC,GAIa,EAAAk5B,wB,68CEjBb,W,GAQA,KACA,MAEA,MACA,MACA,KACA,K,2HCKwB,gCAAyD,YAAU,kB,uBAA3B,6BAAiB,4C,mDAK7D,6BACI,yEAAsB,wFAAmB,MACrC,Y,mBACJ,iBACA,yEAAsB,wFAAmB,MACrC,Y,mBACJ,iBACJ,sD,MALQ,kIAGA,qI,sBAIZ,0BACI,Y,mBACJ,kB,MADI,6H,mDAII,4BAAiD,4GAC7C,yEACI,gFAAuB,6FAAvB,iBAEJ,8DACA,sEACI,YACJ,iBACJ,0D,oCANuD,4EAAxB,kCAIvB,mH,yBARhB,+BACI,iEACI,wEASJ,sDACJ,mD,6BAVY,sD,qCDjB5B,aAiBI,WAAoB3sB,EAAiC4C,EACzCrP,EAAwCloB,EACxC03B,EAA8C7B,GAFtC,KAAAlB,YAAiC,KAAA4C,gBACzC,KAAArP,iBAAwC,KAAAloB,cACxC,KAAA03B,oBAA8C,KAAA7B,cAdjD,KAAA5rB,QAAwB,GAEvB,KAAA23C,SAAW,IAAI,EAAAv+B,aAEzB,KAAA+gD,kBAAoB,EACpB,KAAA18D,YAAgC,GAChC,KAAAolC,cAAgC,GAChC,KAAAu3B,iBAAiC,GAGzB,KAAAC,qBAAyC,G,OAM3C,YAAA9iE,SAAN,W,kGAG2B,OAFvBlB,KAAK+jE,iBAAmB/jE,KAAK2J,QAAQxB,QAAO,SAAA4F,GAAK,OAACA,EAAEouB,mBAAyC,MAApBpuB,EAAExL,kBAC3EvC,KAAK8jE,kBAAoB9jE,KAAK2J,QAAQxL,OAAS6B,KAAK+jE,iBAAiB5lE,OAC9C,GAAM6B,KAAKo3B,kBAAkB2iB,mB,OAE/B,OAFfkqB,EAAiB,SACvBjkE,KAAKgkE,qBAAuBC,EAAe97D,QAAO,SAAA4F,GAAK,OAACA,EAAE0U,YAC1D,EAAAziB,KAAqB,GAAMA,KAAKu1B,YAAY+P,uB,cAA5C,EAAKkH,cAAgB,SACM,MAAvBxsC,KAAKuC,gBAA0BvC,KAAKwsC,cAAcruC,OAAS,IAC3D6B,KAAKuC,eAAiBvC,KAAKwsC,cAAc,GAAG5sC,IAEhDI,KAAKkkE,oB,YAGT,YAAAxuD,YAAA,WACI1V,KAAK66B,WAAU,IAGnB,YAAAqpC,kBAAA,sBACIlkE,KAAK66B,WAAU,GACY,MAAvB76B,KAAKuC,gBAA+D,IAArCvC,KAAKgkE,qBAAqB7lE,OACzD6B,KAAKoH,YAAc,GAEnBpH,KAAKoH,YAAcpH,KAAKgkE,qBAAqB77D,QAAO,SAAA4F,GAAK,OAAAA,EAAExL,iBAAmB,EAAKA,mBAIrF,YAAAulB,OAAN,W,gGACUq8C,EAAuBnkE,KAAKoH,YAAYe,QAAO,SAAA4F,GAAK,OAACA,EAAU6tB,WAASt0B,KAAI,SAAAyG,GAAK,OAAAA,EAAEnO,M,iBAIrF,O,sBAFAI,KAAKmoB,YAAcnoB,KAAKi3B,cAAcmtC,oBAAoBpkE,KAAK+jE,iBAAkB/jE,KAAKuC,eAClF4hE,GACJ,GAAMnkE,KAAKmoB,a,cAAX,SACAnoB,KAAKshD,SAAS5qC,OACd1W,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,sBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,gB,4DAIzE,YAAAswC,MAAA,SAAMxiC,EAAmB0tB,GACpB1tB,EAAU6tB,QAAoB,MAAVH,GAAmB1tB,EAAU6tB,QAAUH,GAGhE,YAAAZ,UAAA,SAAUY,GAAV,YACwBA,EAASz7B,KAAKoH,YAAcpH,KAAKgkE,sBACzC5/D,SAAQ,SAAA2J,GAAK,SAAKwiC,MAAMxiC,EAAG0tB,OAG3C,sBAAI,sBAAO,C,IAAX,WACI,GAA6B,MAAzBz7B,KAAK+jE,kBAA4B/jE,KAAK+jE,iBAAiB5lE,OAAS,GAAyB,MAApB6B,KAAKoH,YAC1E,IAAK,IAAInJ,EAAI,EAAGA,EAAI+B,KAAKoH,YAAYjJ,OAAQF,IACzC,GAAK+B,KAAKoH,YAAYnJ,GAAW29B,QAC7B,OAAO,EAInB,OAAO,G,iEAvEFylB,GAAkB,gO,iCAAlBA,EAAkB,01C,GAAA,MCzB/B,4BACI,iDACI,wDAAkC,2CAAY,EAAAv5B,YAC1C,yDACI,4DACI,a,oBACJ,iBACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,2DAAG,a,oBAA0B,iBAC7B,2DAAG,a,oBACH,iBACA,+DACI,sEAA0B,a,oBAAyB,iBACnD,uEAAgD,uEAA4B,4BAC9D,EAAAo8C,uBACV,6EACJ,uDACJ,mDACA,gEACI,gEAAI,a,oBAAwB,iBAC5B,uEAQJ,mDACA,kEAGA,oEAaJ,+CACA,4DACI,mEAEI,6D,oBACA,kEAAM,a,oBAAiB,iBAC3B,mDACA,mEACyB,a,oBAAmB,iBAChD,+CACJ,2CACJ,uCACJ,mCACA,mB,4BA5DgE,0DAG5C,wHAEqD,oFAKtD,0EACA,+KAG2B,wEACsB,wDAEpC,uDAIR,uEACwB,wEAS3B,0EAG4C,wEAee,8DAAqC,6CAEhE,+EAC3B,gEAGe,oE,0VDpCzC,GAIa,EAAA7iB,sB,68CEzBb,KAKA,KAEA,KACA,MACA,OACA,KACA,KAXA,IAaA,QAEA,SAKA,SACA,SACA,S,oICjBQ,6BACI,qDAAG,Y,mBAAsD,iBAC7D,2C,6BADO,oG,sBAIC,6BACI,2D,mBAEA,mEAAsB,Y,mBAAoB,iBAC9C,mD,MAHsD,6EAE5B,kE,mDAE1B,6BACI,6DAAG,Y,mBAAkC,iBACrC,6DAAG,Y,mBAA0C,iBAC7C,mEACI,0EAAsB,a,oBAAqB,iBAC3C,0EACI,oGADJ,iBAEJ,uDACA,oEACI,2EACI,0EACI,yEAAiD,a,oBACrD,iBACA,qE,oBACJ,2DACJ,uDACJ,mD,mDAfO,+EACA,uFAEuB,oEAElB,kDAG+D,kDAEV,0GAEpB,gF,sBAI7C,6BACI,Y,mBACJ,kB,MADI,+H,sBAEJ,6BACI,Y,mBACJ,kB,MADI,yH,sBAOI,qCAAiD,Y,mBAAgC,kB,MAAhC,8E,4GAKjD,gCAAqD,8FAEjD,mEAEA,Y,mBACJ,iB,iCAFQ,qFACJ,0I,mDAVR,6BACI,gFACA,sEACI,+EAAyC,qGAC5B,iBACjB,0DACA,2EAMA,2EAAqD,4FACjD,qEAA8C,a,oBAClD,iBACJ,gE,iCAdiB,uDAEgC,kDAIzC,uDAM8C,uG,mDAMlD,gCAAwD,4FACpD,mEACA,Y,mBAAkD,iB,iCAAlD,uI,sBACJ,gCACI,mE,mBACJ,2D,MADqC,8E,yBANzC,6BACI,iEAAG,YAAsB,iBACzB,2EAGA,2EAGJ,gE,8BAPO,yDAC0E,mDAGrB,mD,yBAI5D,2BAAyD,Y,mBAClB,kB,8BADkB,2H,yBA9B7D,6BACI,gEAAuB,wBAAG,YAAa,iBAAI,iBAC3C,yDACA,qCACA,8EAgBA,sCACA,+EASA,oEAEJ,oD,6BA/B8B,gDAGZ,kEAiBA,kEASX,sDD1CvB,iBAqBI,WAAoB3hD,EAAkC+gB,EAC1CrF,EAAgCD,EAChC0H,EAA+B1J,GAFvB,KAAAzZ,cAAkC,KAAA+gB,wBAC1C,KAAArF,aAAgC,KAAAD,uBAChC,KAAA0H,QAA+B,KAAA1J,gBAjB3C,KAAAkrD,SAAW,EAAA18C,SACX,KAAAq6C,aAAc,EACd,KAAArhE,SAAU,EACV,KAAA2jE,kBAAmB,EAGnB,KAAA13C,UAAW,EACX,KAAA23C,aAAc,EACd,KAAAxlD,OAAQ,E,OAYR,sBAAI,uBAAQ,C,IAAZ,WACI,OAAiB,MAAb/e,KAAK2W,MAAkC,MAAlB3W,KAAK2W,KAAKmL,KACxB,KAEJ9hB,KAAK4sB,SAAW5sB,KAAK2W,KAAKmL,KAAKA,KAAO9hB,KAAK2W,KAAKmL,KAAK0iD,Y,gCAGhE,sBAAI,6BAAc,C,IAAlB,WACI,OAAiB,MAAbxkE,KAAK2W,MAA4C,MAA5B3W,KAAK2W,KAAK8tD,eACxB,KAEJzkE,KAAK2W,KAAK8tD,gB,gCAGrB,sBAAI,gCAAiB,C,IAArB,WACI,OAAiB,MAAbzkE,KAAK2W,MAA+C,MAA/B3W,KAAK2W,KAAK+tD,kBACxB,KAEJ1kE,KAAK2W,KAAK+tD,mB,gCAGrB,YAAAxjE,SAAA,sBACIlB,KAAK6iB,MAAMa,OAAOC,WAAU,SAAMD,GAAM,qC,kDAGpC,OAFA1jB,KAAKJ,GAAK8jB,EAAOihD,OACjB3kE,KAAKrB,IAAM+kB,EAAO/kB,IACF,MAAZqB,KAAKrB,KAA0B,MAAXqB,KAAKJ,GACzB,IAEJ,GAAMI,KAAK6Z,Q,cAAX,S,eAIF,YAAAkoD,SAAN,W,sGACI,OAAiB,MAAb/hE,KAAK2W,MAA+B,MAAf3W,KAAK4kE,QAI1B5kE,KAAKgiE,YAHL,IAQiB,GAAMhiE,KAAKob,WAAWypD,wBAAwB7kE,KAAK2W,KAAM3W,KAAK8kE,gB,OAEnF,OAFMC,EAAe,SAEjB,EAAAt/D,MAAMf,mBAAmBqgE,EAAax/D,MACtCvF,KAAKmb,qBAAqBud,UAAU,QAAS,KAAM14B,KAAKN,YAAYO,EAAE,oBACtE,MAGJD,KAAKgiE,aAAc,EACF,GAAMrkB,MAAM,IAAIC,QAAQmnB,EAAax/D,IAAK,CAAE28D,MAAO,gB,OACpE,GAAwB,OADlBthE,EAAW,UACJ+e,OAGT,OAFA3f,KAAKmb,qBAAqBud,UAAU,QAAS,KAAM14B,KAAKN,YAAYO,EAAE,kBACtED,KAAKgiE,aAAc,EACnB,I,iBAIY,O,sBAAA,GAAMphE,EAASuhE,e,OACZ,OADTC,EAAM,SACG,GAAMpiE,KAAKmZ,cAAckpD,iBAAiBD,EAAKpiE,KAAK4kE,S,cAA7DtC,EAAS,SACftiE,KAAKmb,qBAAqBy/C,SAASnwD,OAAQ63D,EAAQ,KAAMtiE,KAAK2W,KAAKqmC,KAAK3xB,U,6BAExErrB,KAAKmb,qBAAqBud,UAAU,QAAS,KAAM14B,KAAKN,YAAYO,EAAE,kB,oBAG1ED,KAAKgiE,aAAc,E,YAGvB,YAAApf,SAAA,WACI5iD,KAAKmb,qBAAqBsd,gBAAgBz4B,KAAK2W,KAAKmL,KAAKA,MACzD9hB,KAAKmb,qBAAqBud,UAAU,UAAW,KAC3C14B,KAAKN,YAAYO,EAAE,cAAeD,KAAKN,YAAYO,EAAE,mBAG7D,YAAA+kE,WAAA,WACIhlE,KAAK4sB,UAAY5sB,KAAK4sB,UAGpB,YAAA/S,KAAN,W,mHACI7Z,KAAKukE,aAAc,EACnBvkE,KAAK+e,OAAQ,EACPkmD,EAAW,EAAAx/D,MAAMoG,kBAAkB7L,KAAKrB,KAC9CqB,KAAK8kE,cAAgB,IAAI,EAAAI,kBACJ,MAAjBllE,KAAK8J,SAAL,MACqB,GAAM9J,KAAKygB,sBAAsB0kD,OAAOnlE,KAAK8J,SAAUm7D,EAAU,SAAU,M,OAA1FG,EAAe,SACrBplE,KAAK8kE,cAAch7D,SAAW,EAAArE,MAAM8G,gBAAgB64D,G,+CAGhDC,EAAmC,KACnCrlE,KAAKW,QACU,GAAMX,KAAKob,WAAWkqD,eAAetlE,KAAKJ,GAAII,KAAK8kE,gBADlE,M,cACAO,EAAe,S,aAGA,OADfrlE,KAAKmoB,YAAcnoB,KAAKob,WAAWkqD,eAAetlE,KAAKJ,GAAII,KAAK8kE,eACjD,GAAM9kE,KAAKmoB,a,OAA1Bk9C,EAAe,S,iBAIL,OAFdrlE,KAAKskE,kBAAmB,EAClBiB,EAAa,IAAI,EAAAC,WAAWH,GAClC,EAAArlE,KAAc,GAAMA,KAAKmZ,cAAcssD,YAAYR,I,OACvC,OADZ,EAAKL,OAAS,SACd,EAAA5kE,KAAY,GAAMulE,EAAWlwD,QAAQrV,KAAK4kE,S,cAA1C,EAAKjuD,KAAO,SACZ3W,KAAK4sB,SAA6B,MAAlB5sB,KAAK2W,KAAKmL,OAAgB9hB,KAAK2W,KAAKmL,KAAKsqB,O,2CAExC,EAAAmW,gBACQ,MAAjB,EAAErjB,WACFl/B,KAAKskE,kBAAmB,EACA,MAAjB,EAAEplC,WACTl/B,KAAKukE,aAAc,EAEnBvkE,KAAK+e,OAAQ,G,sBAIzB/e,KAAKW,SAAU,E,6CArIV+kE,GAAe,2O,iCAAfA,EAAe,+0DC9B5B,+BAAY,2CAAY,EAAA7rD,UACpB,iDACI,qDACI,uDAAiC,6BAAc,iBACnD,0CACA,yDAGA,uDACI,2DACI,iEAKA,mEAiBA,iEAGA,iEAGA,kEAiCJ,+CACJ,2CACA,wDACI,0DAAgB,a,oBAAyC,qBACrD,a,oBAAwC,4BAC4B,8BAAc,iBAAI,+BAC1F,iBACJ,2CACJ,uCACJ,mCACA,mB,MAjFgC,2CAKQ,+DAKD,8CAKA,mEAiBA,8DAGA,wDAGA,4EAoCX,uFACZ,kH,6QDjDhB,GAIa,EAAA6rD,mB,yxDE9Bb,WAUA,SAEA,SAEA,Q,GAEA,MACA,KACA,KACA,MACA,MACA,OACA,KAEA,O,4KCvBI,6BACI,sDACI,mDAAuD,Y,mBAC3D,iBACA,qDACI,yDAAM,a,oBAAgC,iBAC1C,2CACJ,wC,MAL+D,wFAGjD,+E,sBAyCM,6BACI,mE,mBAEA,2EAAsB,Y,mBAAoB,iBAC9C,oE,MAHgD,6EAEtB,kE,qBAiBlB,sB,qBACA,sB,sBAKJ,6BACI,uE,mBAEA,+EAAsB,Y,mBAAqB,iBAC/C,wE,MAHyC,8EAEf,mE,sBAE1B,6BACI,uE,mBACA,+EAAsB,Y,mBAAqB,iBAC/C,wE,MAFqC,8EACX,mE,sBAE1B,6BACI,uE,mBAEA,+EAAsB,Y,mBAAkC,iBAC5D,wE,MAHqC,2FAEX,gF,sBAE1B,6BACI,uE,mBAEA,+EAAsB,Y,mBAAoB,iBAC9C,wE,MAHyC,6EAEf,kE,sBAE1B,6BACI,uE,mBAEA,+EAAsB,Y,mBAA4B,iBACtD,wE,MAHuC,qFAEb,0E,mDAiBlB,2BAA+C,qIAE3C,+EACA,Y,mBACJ,iB,MADI,gK,mDAnDpB,yBACI,qEACI,0EACI,8EACA,8EACJ,8DACJ,2DACA,uEACI,0EAAqC,+GAAsB,aAAU,iBACrE,uFAKA,uFAIA,uFAKA,uFAKA,uFAKA,mEACA,8EAAmB,a,oBAAkC,iBACzD,2DACA,uEACI,4EACI,mF,oBAGI,6EACJ,mEACA,gFACI,kFAA+C,2GAC3C,iFACA,a,oBACJ,iBACA,oFAKA,kFAA2D,6GACvD,iFACA,a,oBACJ,iBACJ,mEACJ,+DACJ,2DACJ,uD,+CAzDgD,4DACK,4DAIc,2CAC7C,+CAKA,+CAIA,4DAKA,8CAKA,oDAMK,iFAMW,sFAMlB,gKAGA,+DAMA,0J,yBAzD5B,+BACI,6DACI,qEA6DJ,kDACJ,+C,6BA9DY,wD,sBAgER,6BACI,2D,mBACA,mEAAsB,Y,mBAAoB,iBAC9C,4D,MAFgD,6EACtB,kE,mDAE1B,6BACI,6DAAG,Y,mBAA0B,iBAC7B,qEAAQ,2FACJ,+DAAgC,Y,oBAAuB,iBAC/D,4D,iCAHO,uEACyD,sDACxB,sE,yBAR5C,6BACI,yEAIA,0EAKJ,+C,6BATkB,8CAIA,8C,qDDxG9B,cASI,WAAYC,EAA0BjmE,EAClCyb,EAA4C3B,EAC5CsrC,EAAgB1qB,EAA8B5C,EAA8BjC,EACpE/f,EAA4DqvC,GAHxE,MAII,YAAM8gB,EAAajmE,EAAayb,EAAsB3B,EAAoBsrC,EAAQ1qB,EAC9E5C,EAAejC,IAAY,K,OAFvB,EAAA/f,2BAA4D,EAAAqvC,qBALxE,EAAAtuC,MAAwB,K,SAHO,OAazB,YAAArV,SAAN,W,qGACI,SAAM,YAAMA,SAAQ,Y,OACpB,OADA,SACA,GAAMlB,KAAK6Z,Q,cAAX,SAGA7Z,KAAK6kD,mBAAmBlhC,UAxBE,iBAwBmC,SAACpf,GAC1D,EAAKugD,OAAOG,KAAI,gD,yDACJ1gD,EAAQ2gD,S,IACP,4B,0BACG3gD,EAAQk7D,aACR,GAAMz/D,KAAK6Z,QADX,M,OACA,S,iBAEJ,Y,0CAMpB,YAAAnE,YAAA,WACI1V,KAAK6kD,mBAAmBM,YAtCE,kBAyC9B,YAAAygB,QAAA,WACQ5lE,KAAK6lE,cAIS7lE,KAAK8lE,SAAS,MACtB3jE,KAAOnC,KAAKmC,OAG1B,YAAA2jE,SAAA,SAASnvD,GAAT,WACsB,MAAd3W,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK+lE,oBAAoB5vD,gBAAgBJ,GAASK,SAC/D,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAAogB,iBAAkB/1B,KAAK+lE,qBAgB3B,OAdAnwC,EAAe+uC,OAAiB,MAARhuD,EAAe,KAAOA,EAAK/W,GACnDg2B,EAAeowC,YAAYriD,WAAU,SAAOwsB,GAAW,qC,kDAEnD,OADAnwC,KAAKuW,MAAMU,QACX,GAAMjX,KAAK6Z,Q,cAAX,S,cAEJ+b,EAAeqwC,cAActiD,WAAU,SAAOwsB,GAAW,qC,kDAErD,OADAnwC,KAAKuW,MAAMU,QACX,GAAMjX,KAAK6Z,Q,cAAX,S,cAGJ7Z,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,QAGVqf,G,iCApEFswC,GAAa,mY,iCAAbA,EAAa,iD,OAAA,K,yBACY,EAAA1vC,kB,ovFCjCtC,4BACI,oDAQA,iDACI,qDACI,yDACI,8DACI,a,oBACJ,iBACA,+DACI,qEACyB,mEAAwB,2BAAU,EAAAwT,uB,oBAD3D,iBAGA,kEACI,sEACI,0EAAyB,wCAAS,EAAAnP,eAC9B,yEAAoC,a,oBACxC,iBACJ,2DACJ,uDACA,gEAAI,a,oBAAkB,iBACtB,kEACI,sEACI,0EAAyB,wCAAS,EAAAqP,WAAA,oBAC9B,yEAA6C,a,oBACjD,iBACJ,2DACA,sEACI,0EAAyB,wCAAS,EAAAA,WAAA,oBAC9B,yEAAwC,a,oBAC5C,iBACJ,2DACJ,uDACJ,mDACJ,+CACJ,2CACA,wDACI,4DACI,4DACI,a,oBACA,mCACI,mFAKJ,uDACJ,mDACA,gEACI,uEAA6D,wCAAS,EAAA07B,aAElE,iEAAmD,a,oBACvD,iBACJ,mDACJ,+CACA,8BACA,gEAiEA,8DAWJ,2CACJ,uCACJ,mCACA,wFACA,mB,6BA7I8C,kDAY1B,kHAGqB,8GACI,qCAGjB,6EAEwC,yGAI5C,iEAEI,gGAEiD,6GAGjD,gGAE4C,6GAUpD,oHACsB,4DACJ,8CASd,sDACmD,mGAKnB,4EAiEtB,+E,qPDnGlC,CAImC,iBAAtB,EAAAM,iB,8ZEhCb,KAEA,KAEA,MACA,KACA,MACA,KACA,MACA,OACA,KAVA,IAYA,S,0ICDgB,kCACI,gEAAM,Y,mBAAgC,iBAC1C,mD,MADU,8E,mDAaF,6BACI,4EAA6C,sGAAuB,sGAApE,iBAGA,4EACI,YACJ,iBACJ,0D,+CANyE,mEACjE,kDADyC,oCAAuB,gBAAvB,CAAuB,iCAGpC,kEAC5B,mH,yBARhB,6BACI,kEACI,qEAAO,Y,mBAA2B,iBAClC,wEAQJ,sDACJ,oD,8BAVe,wEACiB,sD,mDAWhC,6BACI,kEACI,wEAAkB,Y,mBAAyB,iBAC3C,2EAA8C,2GACjB,iBAC7B,yEAAoC,a,oBAAyB,iBACjE,uDACA,oEACI,wEACI,8EAAgD,6GAAhD,iBAEA,8EAAkD,a,oBAAgC,iBACtF,2DACJ,uDACJ,4D,iCAZ0B,sEAC4B,wDAA4B,0BAEtC,uEAIgB,0DAA8B,0BAE5B,gF,yBAOtD,0BACI,6EAAwB,Y,mBAAiB,iBACzC,YACJ,kB,8BAF4B,8DACxB,oJ,yBAEJ,0BACI,4EAAkB,Y,mBAAiB,iBACnC,uEAEA,4EAAoC,Y,wCAC1B,iBACd,4D,8BALsB,8DAEd,sDACgC,qH,yBAVhD,6BACI,kEACI,wEAIA,0EAOJ,sDACJ,4D,8BAZa,+CAIA,iD,mDAUb,6BACI,oEAAkB,Y,mBAA0B,iBAC5C,oEAAkD,iGAAlD,iBACJ,kD,iCAFsB,uEACgC,+C,mDAsBtC,6BACI,oFACwB,yGADxB,iBAGJ,2E,iCAF4B,sDAA0B,2B,yBAS9C,gCAAyE,YAAc,kB,uBAAnC,iCAAqB,gD,mDAF7E,gCACI,+GACA,2FACJ,sE,iCAHwF,qCAAsB,gCAElG,oE,mDAEZ,+BAC4B,iHAD5B,iB,iCAC4B,+CAAkC,2B,mDATlE,6BACI,oFACgC,iHADhC,iBAGA,uFAIA,sFAGJ,kE,iCAToC,8DAAkC,0BAE1D,+CAID,iD,yBAbX,yFAKA,gFAYJ,8C,8BAjBkB,+DAKT,iE,yBAgBD,gCAAkE,YAClE,kB,uBAD8C,gCAAoB,yF,sBAIlE,6BACA,gF,yBAFJ,6BACI,6FAEJ,4E,gDAFkB,mD,mDAPtB,0BACI,iFAAoD,+GAEhD,uFAEJ,kEACA,yFAIJ,8D,iCATwD,4DAExC,6DAGE,8D,sBAMd,6BACA,4E,yBAFJ,0BACI,yFAEJ,+D,+CAFkB,mD,mDAQd,2BAAyB,mGAErB,Y,mBACJ,iB,MADI,+I,mDAIJ,6BACI,oFAC0B,2GAD1B,iBAEJ,2E,iCAD8B,wDAA4B,2B,yBAQ9C,gCAA6E,YAAc,kB,uBAArC,mCAAuB,gD,mDAFjF,gCACI,iHACA,+FACJ,0E,iCAH0F,qCAAsB,kCAEpG,sE,mDAEZ,+BACkC,mHADlC,iB,iCACkC,iDAAoC,uBAApC,CAAoC,2B,mDAT9E,6BACI,oFACkC,mHAAoC,qGADtE,iBAGI,2FAIA,0FAGR,kE,iCATsC,gEAAoC,uBAApC,CAAoC,0BAE1D,+CAID,iD,yBAZf,yFAIA,gFAYJ,8C,8BAhBkB,+DAI6B,iE,yBAgBvC,gCAAoE,YACpE,kB,uBADgD,gCAAoB,yF,sBAIpE,6BACA,gF,yBAFJ,6BACI,6FAEJ,4E,gDAFkB,mD,mDAPtB,0BACI,iFACI,iHACA,uFAEJ,kEACA,yFAIJ,8D,iCARQ,8DACQ,+DAGE,gE,sBAMd,6BACA,4E,yBAFJ,0BACI,yFAEJ,+D,+CAFkB,mD,oDAatB,6BACI,4EAAyB,Y,mBAA+B,iBACxD,4EACI,6GADJ,iBAEJ,0D,iCAH6B,4EAErB,2D,uBAKJ,+BAA2C,Y,mBAAqB,kB,MAArB,mE,uBAC3C,+BAA0C,Y,mBAAwB,kB,MAAxB,sE,8KAjL1D,6BACI,wEAGA,8DACI,kEACI,wEAAkB,Y,oBAAiB,iBACnC,0EAA8D,qGAA9D,iBAEA,0EAAoC,a,oBAAyB,iBACjE,uDACJ,mDACA,mEAaA,kCACA,6EAeA,kCACA,2EAeA,+DAAiB,a,oBAAkB,iBACnC,kEAIA,gEACI,oEACI,0EAAgD,oGAAhD,iBAEA,0EAAgD,a,oBAA+B,iBACnF,uDACJ,mDACA,gEACI,gGACA,mEAAsB,a,oBAAoB,iBAC1C,kEACI,iEAEJ,uDACJ,mDACA,gEACI,oEACI,wEACI,8EAA0B,a,oBAAyB,iBACnD,oHAmBA,8EAWA,8EAIA,4EAAwC,a,oBAA6B,iBACzE,2DACA,wEACI,4EACI,kFAA4B,a,oBAA2B,iBACvD,gFAIJ,+DACA,oHAkBA,8EAWA,8EAIA,4EAAwC,a,qBAA+B,iBAC3E,4DACJ,wDACA,sEACI,0EACI,gFAA4B,c,qBAA2B,iBACvD,gFACI,+GADJ,iBAEA,8EAAwC,c,qBAA+B,iBAC3E,4DACA,6EAKJ,wDACA,sEACI,0EACI,mFACA,mFACA,8EACI,oFACkE,oGADlE,iBAGA,kFACI,yFACiD,wG,qBAC7C,mFAEJ,wEACJ,oEACJ,gEACA,8EAAwC,c,qBAA6B,iBACzE,4DACJ,wDACA,sEACI,4EAAmB,c,qBAAkB,iBACrC,+EAA2C,sGACd,iBAC7B,0EAAwC,c,qBAA0B,iBACtE,wDACA,sEACI,0EACI,gFAAgD,yGAAhD,iBAEA,gFAA+C,c,qBAA4B,iBAC/E,4DACJ,wDACJ,oDACJ,gD,gCA9MiB,kDAKa,gEAC4C,mDAAuB,0BAEjD,wEAG3B,gDAcH,kEAgBA,kEAeG,iEACO,2CAMgC,kDAEA,8EAK9B,mEAGd,6FAGM,qDAGoB,wEAoBrB,gDAWA,+CAImC,4EAIR,0EAExB,+DAsBH,gDAWA,+CAImC,+EAKZ,4EAExB,6DAAiC,0BACG,+EAEd,+CAQJ,mDACA,kDAGd,gFAA8D,mCAAsB,0BAIhF,gGAEI,+FAIwB,6EAIzB,kEACwB,oDAAwB,0BAE3B,0EAIY,uDAA2B,0BAE5B,6E,uBAM3D,gCACI,gEAAM,Y,mBAAiB,iBAC3B,mD,MADU,+D,0BAEV,gCACI,2D,mBACA,gEAAM,Y,mBAAiB,iBAC3B,mD,8CAHyD,mCACpB,6EAC3B,+D,oDAMN,mCAAiC,0F,mBAG7B,+DACA,+D,mBAEJ,sD,oDALI,oEAAoD,mCAA8B,gCAE7C,gDAEjC,6EADyC,mC,0BALrD,6BACI,yEAOJ,mD,6BAN2C,gDDzN3D,mBAKI,WAAYxmE,EAA0Byb,EAClC3B,EAAwC2sD,EACxCR,EAA0BpwC,EAC1B9f,EAAoC+hB,G,OACpC,YAAM93B,EAAayb,EAAsB3B,EAAoB2sD,EAAUR,EAAapwC,EAChF9f,EAAkB+hB,IAAc,K,OANN,OASlC,YAAA4uC,oBAAA,SAAoBC,GAApB,WAGI57D,OAAOmT,YAAW,WAAM,mBAAMwoD,oBAAmB,OAACC,KAAO,M,iCAZpDtwC,GAAgB,8S,iCAAhBA,EAAgB,+8MClB7B,4BACI,iDACI,wDAAkC,2CAAY,EAAAjO,YAE1C,yDACI,4DAA8C,aAAS,iBACvD,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,iEAgNA,2DACI,sEAGA,sEAIA,mEACI,a,oBACJ,iBACA,mEASJ,+CACJ,2CACJ,uCACJ,mCACA,mB,MAhPgE,0DAGF,4CACW,mFAIrC,2CAiNmC,kDAG4B,mDAK/E,iHAEiB,6C,4bDvNrC,CAIsC,oBAAzB,EAAAiO,qB,8EEjBb,YAKA,SACA,SAGA,aAkBI,WAAYoa,GAjBZ,KAAAvwC,GAAa,KACb,KAAA0mE,SAAmB,KACnB,KAAA5+D,KAAe,KACf,KAAAc,MAAgB,KAGhB,KAAArG,KAAiB,KACjB,KAAA2f,KAAO,IAAI,EAAAuqB,aACX,KAAA2Q,KAAO,IAAI,EAAA7Q,aACX,KAAAo6B,eAA0B,KAC1B,KAAAC,YAAsB,EACtB,KAAAjmD,aAAqB,KACrB,KAAAkmD,aAAqB,KACrB,KAAAhC,eAAuB,KACvB,KAAA36D,SAAmB,KACnB,KAAA45B,UAAoB,EAGXyM,IAILnwC,KAAKJ,GAAKuwC,EAAEvwC,GACZI,KAAKsmE,SAAWn2B,EAAEm2B,SAClBtmE,KAAKmC,KAAOguC,EAAEhuC,KACdnC,KAAKumE,eAAiBp2B,EAAEo2B,eACxBvmE,KAAKwmE,YAAcr2B,EAAEq2B,YACrBxmE,KAAKugB,aAAe4vB,EAAE5vB,aACtBvgB,KAAKymE,aAAet2B,EAAEs2B,aACtBzmE,KAAKykE,eAAiBt0B,EAAEs0B,eACxBzkE,KAAK0jC,SAAWyM,EAAEzM,SAClB1jC,KAAK8J,SAAWqmC,EAAErmC,UAwB1B,OArBI,sBAAI,wBAAS,C,IAAb,WACI,OAAO,EAAArE,MAAMsH,mBAAmB/M,KAAKrB,M,gCAGzC,sBAAI,oCAAqB,C,IAAzB,WACI,OAA2B,MAAvBqB,KAAKumE,gBAGFvmE,KAAKwmE,aAAexmE,KAAKumE,gB,gCAGpC,sBAAI,sBAAO,C,IAAX,WACI,OAA2B,MAAvBvmE,KAAKykE,gBAGFzkE,KAAKykE,gBAAkB,IAAIt7C,M,gCAGtC,sBAAI,4BAAa,C,IAAjB,WACI,OAAOnpB,KAAKymE,cAAgB,IAAIt9C,M,gCAExC,EAxDA,GAAa,EAAAu9C,Y,68CCVb,WAOA,QACA,SACA,SACA,SACA,S,GAEA,KACA,K,wSAEA,iBAaI,WAAoBlxD,EAA4D4F,EACpEma,GADQ,KAAA/f,2BAA4D,KAAA4F,aACpE,KAAAma,cAHJ,KAAAhf,MAAwB,K,OAKhC,YAAAowD,oBAAA,sBACsB,MAAd3mE,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK4mE,eAAezwD,gBAAgBJ,GAASK,SAC1DpW,KAAKuW,MAAMZ,KAAmC,EAAAkxD,6BAA8B7mE,KAAK4mE,gBAEjF5mE,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,kCAC1B3jB,KAAKuW,MAAQ,K,cAIrB,YAAAugD,WAAA,sBACsB,MAAd92D,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK+2D,cAAc5gD,gBAAgBJ,GAASK,SACzDpW,KAAKuW,MAAMZ,KAA0B,EAAA68B,oBAAqBxyC,KAAK+2D,eAE/D/2D,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,kCAC1B3jB,KAAKuW,MAAQ,K,cAIrB,YAAAuwD,cAAA,sBACsB,MAAd9mE,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK42D,eAAezgD,gBAAgBJ,GAASK,SAC1DpW,KAAKuW,MAAMZ,KAA6B,EAAAoxD,uBAAwB/mE,KAAK42D,gBAErE52D,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,kCAC1B3jB,KAAKuW,MAAQ,K,cAIf,YAAAywD,eAAN,W,2GAS8B,OARR,MAAdhnE,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGTlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKinE,uBAAuB9wD,gBAAgBJ,GAASK,UAC5Dwf,EAAiB51B,KAAKuW,MAAMZ,KAAsB,EAAA28B,gBAAiBtyC,KAAKinE,yBAC/D50B,QAAU,OACzB,EAAAzc,EAA0B,GAAM51B,KAAKu1B,YAAYyL,a,cAAjD,EAAekP,SAAW,SAC1Bta,EAAeuc,QAAUnyC,KAAKob,WAAW8rD,eAAetoE,KAAKoB,KAAKob,YAClEwa,EAAeuhC,MAAQ,MACvBvhC,EAAewhC,UAAY,qBAC3BxhC,EAAeyhC,YAAc,SAC7BzhC,EAAe0hC,cAAgB,oBAC/B1hC,EAAe2hC,kBAAoB,iBAEnCv3D,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,kCAC1B3jB,KAAKuW,MAAQ,K,yBAIf,YAAA4wD,iBAAN,W,2GAU8B,OATR,MAAdnnE,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGTlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKonE,yBAAyBjxD,gBAAgBJ,GAASK,UAC9Dwf,EAAiB51B,KAAKuW,MAAMZ,KAAsB,EAAA28B,gBAAiBtyC,KAAKonE,2BAC/D/0B,QAAU,OACzBzc,EAAe8hC,YAAa,EAC5B,EAAA9hC,EAA0B,GAAM51B,KAAKu1B,YAAYyL,a,cAAjD,EAAekP,SAAW,SAC1Bta,EAAeuc,QAAUnyC,KAAKob,WAAWisD,qBAAqBzoE,KAAKoB,KAAKob,YACxEwa,EAAeuhC,MAAQ,MACvBvhC,EAAewhC,UAAY,qBAC3BxhC,EAAeyhC,YAAc,SAC7BzhC,EAAe0hC,cAAgB,oBAC/B1hC,EAAe2hC,kBAAoB,mBAEnCv3D,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,kCAC1B3jB,KAAKuW,MAAQ,K,0DA/FZqhD,GAAgB,uH,iCAAhBA,EAAgB,oD,OAAA,M,yBACyB,EAAAphC,kB,yBACT,EAAAA,kB,yBACG,EAAAA,kB,yBACC,EAAAA,kB,yBACE,EAAAA,mB,k1BCzBnD,4BACI,8CAAI,Y,mBAAsB,iBAC9B,kCACA,8CACA,6CACI,gDAAI,a,oBAAwB,iBAChC,mCACA,qDACA,+CACI,gDAAI,a,oBAAiC,iBACzC,mCACA,wDACA,+CACI,gDAAI,a,oBAA2B,iBACnC,mCACA,mDACA,+CACI,gDAAI,a,oBAAmB,iBAC3B,mCACA,2CACI,a,oBACJ,iBACA,kDAAwD,wCAAS,EAAAwwC,oBAAkB,a,oBAAuB,iBAC1G,kDAAwD,wCAAS,EAAAG,sBAAoB,a,oBAAyB,iBAC9G,+CACI,gDAAI,a,oBAAuB,iBAC/B,mCACA,+CACI,mDACI,mDAAG,a,oBAA2B,iBAC9B,0DACI,wCAAS,EAAAR,yBAAuB,a,oBAAgC,iBACpE,0DAAqD,wCAAS,EAAA7P,gBAAc,a,oBAAuB,iBACnG,0DACI,wCAAS,EAAAgQ,mBAAiB,a,oBAA0B,iBAC5D,uCACJ,mCACA,uFACA,uFACA,wFACA,wFACA,wFACA,mB,MAzCQ,oEAIA,uEAIA,gFAIA,0EAIA,kEAGJ,yFAE+E,sEACE,wEAE7E,sEAIG,0EAEiC,+EACwC,sEAE9C,2E,6IDlBtC,GAIa,EAAAlP,oB,68CEpBb,KAEA,KACA,MAEA,KACA,MACA,KACA,MARA,IAUA,Q,oGAEA,aAQI,WAAoBx8C,EAAgC1b,EACxC20B,EAAiCzM,EACjCzO,EAAsC1D,GAF9B,KAAA2F,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAAzO,gBAAsC,KAAA1D,mB,OAE5C,YAAAqS,OAAN,W,kGACI,OAA2B,MAAvB9nB,KAAK+nB,gBAAkD,KAAxB/nB,KAAK+nB,gBACpC/nB,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,uBACvB,MAGEkkB,EAAU,IAAI,EAAAnQ,4BACpB,EAAAmQ,EAA6B,GAAMnkB,KAAKmZ,cAAc8O,aAAajoB,KAAK+nB,eAAgB,Q,OAAxF,EAAQG,mBAAqB,S,iBAGzB,O,sBADAloB,KAAKmoB,YAAcnoB,KAAKob,WAAWksD,kBAAkBnjD,GACrD,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,0BACzCh1B,KAAK4nB,eAAeI,SAAS,UAAWhoB,KAAKN,YAAYO,EAAE,wBACvDD,KAAKN,YAAYO,EAAE,cACvBD,KAAKyV,iBAAiBkB,KAAK,U,6FAvB1BkwD,GAA4B,8N,iCAA5BA,EAA4B,64B,GAAA,MChBzC,4BACI,iDACI,wDAAkC,2CAAY,EAAA/+C,YAC1C,yDACI,4DAAyC,a,oBAAgC,iBACzE,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,2DAAG,a,oBAAoC,iBACvC,uEAA4B,a,oBAAuC,iBACnE,kEAA4B,a,oBAAuB,iBACnD,kEACI,uEADJ,iBAEJ,+CACA,4DACI,mEACI,6D,oBACA,kEAAM,a,oBAAgC,iBAC1C,mDACA,mEAA6E,a,oBAAkB,iBACnG,+CACJ,2CACJ,uCACJ,mCACA,mB,4BAxBgE,0DAEP,+EACgB,oFAKtD,oFACyB,sFACA,sEAExB,wDAGoD,kDACnB,+EAC3B,+EAEmE,mE,iPDT7F,GAIa,EAAA++C,gC,68CEhBb,KAEA,KACA,MAEA,KACA,MACA,KACA,MARA,IAUA,Q,4GAEA,aAQI,WAAoBzrD,EAAgC1b,EACxC20B,EAAiCzM,EACjCzO,EAAsC1D,GAF9B,KAAA2F,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAAzO,gBAAsC,KAAA1D,mB,OAE5C,YAAAqS,OAAN,W,kGACI,OAA2B,MAAvB9nB,KAAK+nB,gBAAkD,KAAxB/nB,KAAK+nB,gBACpC/nB,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,uBACvB,MAGEkkB,EAAU,IAAI,EAAAnQ,4BACpB,EAAAmQ,EAA6B,GAAMnkB,KAAKmZ,cAAc8O,aAAajoB,KAAK+nB,eAAgB,Q,OAAxF,EAAQG,mBAAqB,S,iBAGzB,O,sBADAloB,KAAKmoB,YAAcnoB,KAAKob,WAAW0rD,cAAc3iD,GACjD,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,oBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAWhoB,KAAKN,YAAYO,EAAE,kBACvDD,KAAKN,YAAYO,EAAE,uBACvBD,KAAKyV,iBAAiBkB,KAAK,U,6FAvB1BowD,GAAsB,8N,iCAAtBA,EAAsB,q5B,GAAA,MChBnC,4BACI,iDACI,wDAAkC,2CAAY,EAAAj/C,YAC1C,yDACI,4DAAgD,a,oBAA0B,iBAC1E,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,2DAAG,a,oBAA8B,iBACjC,uEAA4B,a,oBAAiC,iBAC7D,kEAA4B,a,oBAAuB,iBACnD,kEACI,uEADJ,iBAEJ,+CACA,4DACI,mEACI,6D,oBACA,kEAAM,a,oBAA0B,iBACpC,mDACA,mEAA6E,a,oBAAkB,iBACnG,+CACJ,2CACJ,uCACJ,mCACA,mB,4BAxBgE,0DAEA,yEACS,oFAKtD,8EACyB,gFACA,sEAExB,wDAGoD,kDACnB,+EAC3B,yEAEmE,mE,sQDT7F,GAIa,EAAAi/C,0B,68CEhBb,KAKA,KACA,MAEA,KACA,MACA,KACA,KAXA,IAaA,S,yHCbA,0BACI,0C,mBACA,kDAAsB,Y,mBAAoB,iBAC9C,mC,MAFgD,6EACtB,kE,yBAyBd,wBACI,Y,mBACA,2B,mBAEI,2DAA0D,iBAAI,oBAClE,4DAAM,aAAe,iBACzB,gD,8BALI,6HAEI,sFAEE,mD,mDA5BtB,+BAAwC,4FACpC,iDACI,qDACI,yDACI,+DAAkB,a,oBAAiB,iBACnC,kEAA8D,wGAA9D,iBACJ,+CACA,2DACI,kEAAmB,a,oBAAkB,iBACrC,kEAAgE,yGAAhE,iBACJ,+CACA,2DACI,kEAAgC,a,oBAAgC,iBAChE,kEACI,sHADJ,iBAEJ,+CACJ,2CACA,uDACI,4DACI,kEAEJ,+CACA,mDACA,4DAOJ,2CACJ,uCACA,uDACI,iD,oBACA,sDAAM,a,oBAAiB,iBAC3B,uCACJ,mC,mDApC8D,2CAI5B,iEAC4C,sDAG3C,iEAC6C,uDAGhC,+EAE5B,oEAKQ,+EAAyC,sCAItD,kDAS8C,kDACpB,+EAC3B,iEDrBd,iBAWI,WAAoB3rD,EAAgC1b,EACxC20B,EAAiCzM,EACjC2N,EAAkCpc,GAF1B,KAAAiC,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAA2N,cAAkC,KAAApc,gBAR9C,KAAAxY,SAAU,E,OAUJ,YAAAO,SAAN,W,sGACmB,OAAf,EAAAlB,KAAe,GAAMA,KAAKob,WAAWmsD,c,OAEuB,OAF5D,EAAKC,QAAU,SACfxnE,KAAKW,SAAU,EACW,KAAAX,KAAKmZ,eAAci4C,eAAe,GAAMpxD,KAAKu1B,YAAYyL,a,OAA/D,SAAM,WAAkC,Y,cACzC,OADboxB,EAAc,YAEhBpyD,KAAKoyD,YAAcA,EAAYtuD,KAAK,M,YAItC,YAAAgkB,OAAN,W,gGAIQ,O,sBAFM3D,EAAU,IAAI,EAAAsjD,qBAAqBznE,KAAKwnE,QAAQ9/D,KAAM1H,KAAKwnE,QAAQ1jB,oBACzE9jD,KAAKmoB,YAAcnoB,KAAKob,WAAWssD,WAAWvjD,GAC9C,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,oBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,mB,6FA1BhE0nE,GAAgB,yN,iCAAhBA,EAAgB,8jCCrB7B,8BAIA,kDAqCA,kB,MAzCK,+BAIC,4D,0MDaN,GAIa,EAAAA,oB,68CErBb,KAIA,KACA,MAEA,KACA,MACA,KACA,MACA,KAXA,IAaA,SACA,S,6JCCI,6BACI,6CACA,iDAAG,Y,mBAAuC,iBAC1C,8DAA4B,Y,oBAA6B,iBACzD,uDACI,2DACI,+DACI,sEAAmB,a,oBAAiB,iBACpC,sEAAgE,iGAAhE,iBAEJ,mDACJ,+CACJ,2CACJ,gD,gCAXO,oFACyB,2EAIG,gEAC6C,gD,sBAQ5E,2BAAyB,Y,mBAAqB,kB,MAArB,mE,sBACzB,2BAAwB,Y,mBAAwB,kB,MAAxB,sE,mDAE5B,gCAA0E,wFACtE,Y,mBACJ,iB,MADI,wFDnBR,iBAYI,WAAoBvsD,EAAgC1b,EACxC20B,EAAiCzM,EACjCzO,EAAsC1D,EACtC8f,GAHQ,KAAAna,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAAzO,gBAAsC,KAAA1D,mBACtC,KAAA8f,cAPZ,KAAAqyC,WAAY,E,OASN,YAAA9/C,OAAN,W,8GACsB,SAAM9nB,KAAKmZ,cAAcopD,a,OAC3C,OADkB,UAMlBviE,KAAK6nE,SAAW7nE,KAAK6nE,SAAS9jE,OAAO/B,cAChChC,KAAK4nE,UAAN,QACMzjD,EAAU,IAAI,EAAA2jD,mBACZD,SAAW7nE,KAAK6nE,SACxB,EAAA1jD,EAA6B,GAAMnkB,KAAKmZ,cAAc8O,aAAajoB,KAAK+nB,eAAgB,UARxF/nB,KAAK4nB,eAAeI,SAAS,QAAS,KAAMhoB,KAAKN,YAAYO,EAAE,cAC/D,K,OAOA,EAAQioB,mBAAqB,S,iBAGzB,O,sBADAloB,KAAKmoB,YAAcnoB,KAAKob,WAAW2sD,eAAe5jD,GAClD,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAK4nE,WAAY,E,8DAMQ,OAHvBzjD,EAAU,IAAI,EAAA6jD,cACZloD,MAAQ9f,KAAK8f,MACrBqE,EAAQ0jD,SAAW7nE,KAAK6nE,SACxB,EAAA1jD,EAA6B,GAAMnkB,KAAKmZ,cAAc8O,aAAajoB,KAAK+nB,eAAgB,O,OAC5E,OADZ,EAAQG,mBAAqB,SACjB,GAAMloB,KAAKu1B,YAAY8Y,U,OACb,OADhBxP,EAAM,SACU,GAAM7+B,KAAKu1B,YAAY+Y,oB,QAC9B,OADTxP,EAAgB,SACP,GAAM9+B,KAAKmZ,cAAcgmB,QAAQn/B,KAAK+nB,eAAgB/nB,KAAK6nE,SAAUhpC,EAAKC,I,QACzD,OAD1BmpC,EAAS,SACf,EAAA9jD,EAAgC,GAAMnkB,KAAKmZ,cAAc8O,aAAajoB,KAAK+nB,eAAgBkgD,I,QACzE,OADlB,EAAQC,sBAAwB,SACd,GAAMloE,KAAKmZ,cAAcs1B,aAAaw5B,I,QAAlDE,EAAY,SAClBhkD,EAAQxlB,IAAMwpE,EAAU,GAAGzzD,gB,mBAGvB,O,yBADA1U,KAAKmoB,YAAcnoB,KAAKob,WAAWgtD,UAAUjkD,GAC7C,GAAMnkB,KAAKmoB,a,eAAX,SACAnoB,KAAKqoE,QACLroE,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,kBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAWhoB,KAAKN,YAAYO,EAAE,gBACvDD,KAAKN,YAAYO,EAAE,cACvBD,KAAKyV,iBAAiBkB,KAAK,U,gEAKvC,YAAA0xD,MAAA,WACIroE,KAAK8f,MAAQ9f,KAAK6nE,SAAW7nE,KAAK+nB,eAAiB,KACnD/nB,KAAK4nE,WAAY,G,iCAvDZU,GAAoB,iQ,iCAApBA,EAAoB,+9B,GAAA,MCpBjC,+BAAY,2CAAY,EAAAxgD,YACpB,iDACI,qDACI,yDACI,+DAA4B,a,oBAAuB,iBACnD,iEACI,uEADJ,iBAEJ,+CACA,2DACI,iEAAsB,a,oBAAqB,iBAC3C,iEAAsE,iEAAtE,iBAEJ,+CACJ,2CACJ,uCACA,gEAcA,uDACI,iD,oBACA,0DACA,0DACJ,uCACA,yDAGJ,mCACA,mB,4BAtCkC,2CAIU,uEAExB,wDAA4B,wBAGV,oEACgD,kDAAsB,wBAK1F,gDAc2C,kDACpB,+EAC3B,iDACA,gDAE8C,kD,mODlB5D,GAIa,EAAAwgD,wB,8ZEpBb,IAEA,2B,+CAGA,OAHuC,OAGvC,EAHA,CAFA,MAEuCt0D,6BAA1B,EAAA8zD,qB,yxDCFb,KAEA,KACA,MACA,MACA,MACA,KACA,MACA,MACA,KACA,MACA,MACA,KAZA,IAcA,SAIA,SACA,QAKA,SACA,SACA,SACA,SACA,S,oLCxBQ,yBACI,Y,mBACJ,kB,8BADI,sJ,yBAEJ,yBACI,Y,mBACJ,kB,8BADI,iM,sBAEJ,yBAAgD,Y,mBAAoC,kB,MAApC,kF,sBAChD,yBAAgD,Y,mBAAoC,kB,MAApC,kF,sBAChD,yBAAkD,Y,mBAAkC,kB,MAAlC,gF,sBAClD,yBAAkD,Y,mBAA+C,kB,MAA/C,2F,yBAZ1D,qCACI,Y,mBACA,4BACI,uDAGA,uDAGA,uDACA,yDACA,yDACA,yDACJ,uCACJ,oC,6BAbI,yGAEQ,iHAGA,6GAGA,4GACA,4GACA,8GACA,+GDiBZ,kBAQI,WAAYpoE,EACRyZ,EAA8B1D,EAC9B8f,EAA0B+B,EAC1Bnc,EAA4Cqc,EACpCN,EAAsCD,EACtC8K,EAAkC3mB,GAL9C,MAMI,YAAM1b,EAAayZ,EAAe1D,EAAkB8f,EAAa+B,EAC7Dnc,EAAsBqc,IAAc,K,OAHhC,EAAAN,gBAAsC,EAAAD,gBACtC,EAAA8K,cAAkC,EAAA3mB,aAR9C,EAAAmtD,cAAe,E,SAD0B,OAcnC,YAAAC,oBAAN,W,2GACQxoE,KAAKuoE,aACW,GAAMvoE,KAAKi3B,cAAc8iB,mBADzC,M,OAGA,GAFMpwC,EAAU,SACZwyB,GAAoB,EACT,MAAXxyB,EACA,IAAS1L,EAAI,EAAGA,EAAI0L,EAAQxL,OAAQF,IAChC,GAAiC,MAA7B0L,EAAQ1L,GAAGsE,gBAA0BoH,EAAQ1L,GAAGk+B,kBAAmB,CACnEA,GAAoB,EACpB,M,OAKRA,EACkB,GAAMn8B,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,6BAA8B,KACjDD,KAAKN,YAAYO,EAAE,aAAcD,KAAKN,YAAYO,EAAE,SAAU,YAHlE,M,OASA,OARkB,UAIdD,KAAKmb,qBAAqBuM,UACtB,0EAER1nB,KAAKuoE,cAAe,EACpB,I,OAGW,SAAMvoE,KAAKmb,qBAAqB+Z,WAC3Cl1B,KAAKN,YAAYO,EAAE,8BAAgC,IACnDD,KAAKN,YAAYO,EAAE,oCAAsC,IACzDD,KAAKN,YAAYO,EAAE,4BAA6BD,KAAKN,YAAYO,EAAE,qBACnED,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,Y,OAJ1C,WAMXD,KAAKuoE,cAAe,G,mCAK1B,YAAAzgD,OAAN,W,0FACsB,SAAM9nB,KAAKmZ,cAAcopD,a,OAC3C,OADkB,SAMlB,GAAM,YAAMz6C,OAAM,aAJd9nB,KAAKmb,qBAAqBud,UAAU,QAAS,KAAM14B,KAAKN,YAAYO,EAAE,cACtE,K,cAGJ,S,YAGE,YAAAmuC,mBAAN,W,0FACI,OAAkC,MAA9BpuC,KAAKyoE,uBAAgE,KAA/BzoE,KAAKyoE,uBAC3CzoE,KAAKmb,qBAAqBud,UAAU,QAAS14B,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,uBAChB,CAAP,GAAO,IAGPD,KAAKuoE,aACL,GAAMvoE,KAAK+hC,YAAY+F,UAAS,IADhC,M,OACA,S,iBAGJ,MAAO,CAAP,EAAO,YAAMsG,mBAAkB,oBAG7B,YAAAM,qBAAN,SAA2Bw5B,EAA+BD,EACtDE,G,yGAE6B,OADvBhkD,EAAU,IAAI,EAAAukD,gBACpB,EAAAvkD,EAA6B,GAAMnkB,KAAKmZ,cAAc8O,aAAajoB,KAAKyoE,sBAAuB,O,OAA/F,EAAQvgD,mBAAqB,SAC7B/D,EAAQ+jD,sBAAwBA,EAChC/jD,EAAQxlB,IAAMwpE,EAAU,GAAGzzD,gB,iBAWvB,O,sBARI1U,KAAKuoE,aACLvoE,KAAKmoB,YAAcnoB,KAAKob,WAAWutD,aAAaxkD,GAAS1jB,MAAK,WAC1D,OAAO,EAAKmoE,UAAUX,EAAQ9jD,EAAQ+jD,0BAG1CloE,KAAKmoB,YAAcnoB,KAAKob,WAAWutD,aAAaxkD,GAGpD,GAAMnkB,KAAKmoB,a,cAAX,SAEAnoB,KAAKmb,qBAAqBud,UAAU,UAAW14B,KAAKN,YAAYO,EAAE,yBAC9DD,KAAKN,YAAYO,EAAE,cACvBD,KAAKyV,iBAAiBkB,KAAK,U,6BAE3B3W,KAAKmb,qBAAqBud,UAAU,QAAS,KAAM14B,KAAKN,YAAYO,EAAE,kB,+BAIhE,YAAA2oE,UAAd,SAAwBjqE,EAAyBupB,G,gHAC9B,SAAMloB,KAAKmZ,cAAcq1B,WAAW7vC,I,OAChC,OADb4qB,EAAS,SACI,GAAMvpB,KAAKmZ,cAAc0vD,iB,cAAtCxnC,EAAa,SACfynC,EAA8B,KAChB,MAAdznC,EAAA,MACgB,GAAMrhC,KAAKmZ,cAAcktB,QAAQhF,EAAY9X,EAAO,K,OAApEu/C,EAAgB,S,iBAOJ,OALV3kD,EAAU,IAAI,EAAA4kD,kBACZ1nC,WAA8B,MAAjBynC,EAAwBA,EAAcp0D,gBAAkB,KAC7EyP,EAAQxlB,IAAM4qB,EAAO,GAAG7U,gBACxByP,EAAQ+D,mBAAqBA,EAEb,GAAMloB,KAAKk3B,cAAc6iB,mB,OAAnC1yC,EAAU,SACPpJ,EAAI,E,wBAAGA,EAAIoJ,EAAQlJ,OACH,MAAjBkJ,EAAQpJ,GAAG2B,GACX,MAEW,GAAMI,KAAKk3B,cAAcmP,QAAQh/B,EAAQpJ,GAAIsrB,EAAO,KAJrC,M,OAIxBk5B,EAAS,SACft+B,EAAQ9c,QAAQlC,KAAK,IAAI,EAAA6jE,oBAAoBvmB,I,wBALbxkD,I,aAQpB,SAAM+B,KAAKi3B,cAAc8iB,mB,QAAnCpwC,EAAU,SACP1L,EAAI,E,0BAAGA,EAAI0L,EAAQxL,OACS,MAA7BwL,EAAQ1L,GAAGsE,eACX,OAGW,GAAMvC,KAAKi3B,cAAcoP,QAAQ18B,EAAQ1L,GAAIsrB,EAAO,KALrC,O,QAKxBhjB,EAAS,SACf4d,EAAQxa,QAAQxE,KAAK,IAAI,EAAAq9C,oBAAoBj8C,I,0BANbtI,I,eASpC,SAAM+B,KAAKob,WAAW6tD,eAAe9kD,I,QAErC,OAFA,SAEA,GAAMnkB,KAAKkpE,wBAAwB3/C,EAAO,K,eAA1C,S,YAGU,YAAA2/C,wBAAd,SAAsC3/C,G,kHACV,SAAMvpB,KAAKob,WAAW+tD,6B,OAAxCC,EAAkB,SAClBC,EAAkB,CACpB,EAAAC,0BAA0Bn+B,UAC1B,EAAAm+B,0BAA0BC,kBAC1B,EAAAD,0BAA0BE,kBAGxBC,EAAmBL,EAAgBjmE,KAAKgF,QAAO,SAAAqlB,GAAK,OAAA67C,EAAgBzjC,SAASpY,EAAE7N,W,IAE/D,EAAA8pD,E,wBAAA,YAAXC,EAAO,KACY,GAAM1pE,KAAKob,WAAW61C,iBAAiByY,EAAQC,aADvC,M,OAIb,OAHfzY,EAAoB,SACpBvjB,EAAY,EAAAloC,MAAM6F,eAAe4lD,EAAkBvjB,WAEpC,GAAM3tC,KAAKmZ,cAAck4C,WAAW9nC,EAAO5qB,IAAKgvC,EAAUnhC,S,OAO/E,OAPMo9D,EAAe,UAEfC,EAAgB,IAAI,EAAAC,8BACZ3nE,KAAOunE,EAAQvnE,KAC7B0nE,EAAcE,aAAeL,EAAQK,aACrCF,EAAcG,aAAeJ,EAAal1D,gBAE1C,GAAM1U,KAAKob,WAAW6uD,mBAAmBP,EAAQ9pE,GAAIiqE,I,OAArD,S,wBAXkB,I,gEAlJjBv6B,GAAuB,sa,iCAAvBA,EAAuB,4+C,GAAA,MClCpC,oCAA4B,Y,mBAA6B,iBACzD,wDAgBA,kDAAY,2CAAY,EAAAxnB,YACpB,iDACI,uDACI,2DACI,iEAAmC,a,oBAA8B,iBACjE,iEACI,8EADJ,iBAEJ,+CACJ,2CACJ,uCACA,mDACI,uDACI,2DACI,iEAA4B,a,oBAA0B,iBACtD,kEACI,uEAA4B,2BAAU,EAAAknB,4BAD1C,iBAGA,6EACJ,+CACJ,2CACA,uDACI,2DACI,kEAAkC,a,oBAAiC,iBACnE,kEACyB,6EADzB,iBAGJ,+CACJ,2CACJ,uCACA,mDACI,wDACI,8DACI,qEAA0B,4BAAW,EAAAw5B,yBADzC,iBAEA,8DACI,a,oBACJ,iBACA,0D,oBAEI,yDACJ,+CACJ,2CACJ,uCACA,uDACI,iD,oBACA,sDAAM,a,oBAAiC,iBAC3C,uCACJ,mCACA,mB,4BAhE4B,2EACH,4DAgBS,0DAIiB,8EAE/B,+DAOwB,0EAExB,wDAEmB,2DAA6B,eAKlB,gFAET,8DAQzB,sDAEA,sHAG+B,wFAKc,kDACpB,+EAC3B,kF,mTD/Bd,CAI6C,2BAAhC,EAAAl5B,2B,8EElCb,SAAYg6B,GACR,yBACA,2BACA,6BACA,6CACA,2CALJ,CAAY,EAAAA,4BAAA,EAAAA,0BAAyB,M,8ECErC,mBAAa,EAAAQ,gC,8ZCFb,IAIA,cAGI,WAAYrnB,GAAZ,MACI,YAAMA,IAAO,K,OACb,EAAK7iD,GAAK6iD,EAAO7iD,G,EAEzB,OAPyC,OAOzC,EAPA,CAJA,OAIyC8iD,eAA5B,EAAAsmB,uB,8ZCJb,IAEA,2B,+CAGA,OAHqC,OAGrC,EAHA,CAFA,MAEqCh1D,6BAAxB,EAAA00D,mB,8ECCb,iBACI,KAAA/+D,QAAiC,GACjC,KAAAtC,QAAiC,IAFxB,EAAA0hE,oB,68CCHb,KAKA,KACA,MAEA,KACA,MACA,KACA,MACA,KAZA,IAcA,SAEA,S,2ICIoB,gCAAyD,YAAU,kB,uBAA9B,gCAAoB,4CDF7E,iBAWI,WAAoB3tD,EAAgC1b,EACxC20B,EAAiCzM,EACjCzO,EAAsC1D,EACtC8f,GAHQ,KAAAna,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAAzO,gBAAsC,KAAA1D,mBACtC,KAAA8f,cAPZ,KAAAsJ,IAAM,EAAAlS,QAAQu9C,cACd,KAAAC,WAAoB,GAOhBnqE,KAAKmqE,WAAa,CACd,CAAEziE,KAAM,iBAAkBhJ,MAAO,EAAAiuB,QAAQu9C,gB,OAI3C,YAAAhpE,SAAN,W,kGACe,OAAX,EAAAlB,KAAW,GAAMA,KAAKu1B,YAAY8Y,U,OACb,OADrB,EAAKxP,IAAM,SACX,EAAA7+B,KAAqB,GAAMA,KAAKu1B,YAAY+Y,oB,cAA5C,EAAKxP,cAAgB,S,YAGnB,YAAAhX,OAAN,W,0GACsB,SAAM9nB,KAAKmZ,cAAcopD,a,OAC3C,OADkB,WAMZp+C,EAAU,IAAI,EAAAimD,YACZvrC,IAAM7+B,KAAK6+B,IACnB1a,EAAQ2a,cAAgB9+B,KAAK8+B,cAC7B,EAAA3a,EAA6B,GAAMnkB,KAAKmZ,cAAc8O,aAAajoB,KAAK+nB,eAAgB,SAPpF/nB,KAAK4nB,eAAeI,SAAS,QAAS,KAAMhoB,KAAKN,YAAYO,EAAE,cAC/D,K,OAOU,OADd,EAAQioB,mBAAqB,SACf,GAAMloB,KAAKu1B,YAAY0L,Y,OACtB,OADTjgB,EAAQ,SACC,GAAMhhB,KAAKmZ,cAAcgmB,QAAQn/B,KAAK+nB,eAAgB/G,EAAOhhB,KAAK6+B,IAAK7+B,KAAK8+B,gB,OAC3D,OAD1BmpC,EAAS,SACf,EAAA9jD,EAAgC,GAAMnkB,KAAKmZ,cAAc8O,aAAajoB,KAAK+nB,eAAgBkgD,I,OACzE,OADlB,EAAQC,sBAAwB,SACd,GAAMloE,KAAKmZ,cAAcs1B,aAAaw5B,I,OAAlDE,EAAY,SAClBhkD,EAAQxlB,IAAMwpE,EAAU,GAAGzzD,gB,iBAGvB,O,uBADA1U,KAAKmoB,YAAcnoB,KAAKob,WAAWivD,eAAelmD,GAClD,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,gBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAWhoB,KAAKN,YAAYO,EAAE,yBACvDD,KAAKN,YAAYO,EAAE,cACvBD,KAAKyV,iBAAiBkB,KAAK,U,gGA3C1B2zD,GAAkB,iQ,iCAAlBA,EAAkB,quC,GAAA,MCtB/B,oCAA4B,Y,mBAA6B,iBACzD,gDAAY,2CAAY,EAAAxiD,YACpB,iDACI,qDACI,2DACI,iEAA+B,a,oBAAuB,iBACtD,iEACI,uEADJ,iBAEJ,+CACJ,2CACJ,uCACA,mDACI,uDACI,2DACI,iEAAiB,a,oBAAyB,iBAC1C,8D,oBAEI,6DACJ,mDACA,mEAA4B,4DACxB,yEACJ,mDACJ,+CACJ,2CACA,uDACI,2DACI,kEAA2B,a,oBAA0B,iBACrD,8D,oBAEI,6DACJ,mDACA,kEACyB,sEADzB,iBAEJ,+CACJ,2CACA,wDACI,2DACI,gEACI,+DAAG,a,0CAAkD,iBACrD,oEAAQ,a,oBAAoB,iBAAS,a,0CACzC,iBACJ,+CACJ,2CACJ,uCACA,uDACI,iD,oBACA,sDAAM,a,oBAAsB,iBAChC,uCACJ,mCACA,mB,4BAjD4B,2EACM,0DAIa,uEAE3B,wDAOa,yEAEE,wFAGS,6CAChB,oDAMe,0EAEvB,wFAIqB,uDAMlB,uGACK,mEAA6B,oIAKI,kDACpB,+EAC3B,uE,+WD5Bd,GAIa,EAAAwiD,sB,68CEtBb,KAKA,KALA,IAOA,SACA,SAEA,S,+BAEA,aAOI,WAAoBznD,GAAA,KAAAA,Q,OAEpB,YAAA3hB,SAAA,sBACU2mD,EAAiB7nD,KAAK6iB,MAAMwjC,YAAY1iC,WAAU,SAAM2iC,GAAO,qC,iCAC5C,aAAjBA,EAAQjkB,MACRriC,KAAKuqE,kBAAkBloC,KAAO,EAAAP,SAASm4B,iBACvCj6D,KAAKuqE,kBAAkBroC,QAAU,EAAAC,YAAYg4B,UACrB,UAAjB7T,EAAQjkB,MACfriC,KAAKuqE,kBAAkBloC,KAAO,EAAAP,SAASiD,cACvC/kC,KAAKuqE,kBAAkBroC,QAAU,EAAAC,YAAYgB,OACrB,eAAjBmjB,EAAQjkB,OACfriC,KAAKuqE,kBAAkBloC,KAAO,EAAAP,SAAS0oC,mBACvCxqE,KAAKuqE,kBAAkBroC,QAAU,EAAAC,YAAYe,YAE3B,MAAlB2kB,GACAA,EAAe1C,c,+CAlBlBslB,GAA2B,wC,iCAA3BA,EAA2B,gE,OAAA,K,oBACzB,EAAAziC,4BAA4B,G,oJCjB3C,4BACI,8CAAI,Y,mBAA4B,iBACpC,kCACA,yCAAG,Y,mBAAgC,iBACnC,2DACA,mB,MAJQ,yEAEL,+E,iFDSH,GAIa,EAAAyiC,+B,68CEhBb,KAKA,KACA,MAEA,KACA,KATA,IAWA,S,yGCLI,wBACI,8C,mBACA,sDAAsB,Y,mBAAoB,iBAC9C,uC,MAFgD,6EACtB,kE,mDAGtB,6BACI,0DACI,gEAAgD,Y,mBAAoC,iBACpF,mEACI,oH,mBAAqF,iBAC7F,+CACA,+DAA4D,yG,oBAExD,yDACJ,+CACJ,2C,2CARe,oEAAyC,2EACjB,sEAA2B,oDAC9B,6FAAxB,oCAGJ,sF,mDARZ,6BACI,0DAWA,yDAAsB,sFAClB,mDAAoD,Y,mBACxD,iBACA,yDAAuC,a,oBAAgC,iBAC3E,gD,gCAfmC,gDAA8D,+BAYrC,2FAEjB,+E,sBAO3C,wBACI,8C,mBACA,sDAAsB,Y,mBAAoB,iBAC9C,uC,MAFgD,6EACtB,kE,mDAaF,2BAA+C,qIAE3C,uEACA,Y,mBACJ,iB,MADI,yI,mDAEJ,2BAA+C,qIAE3C,uEACA,Y,mBACJ,iB,MADI,yI,oGAjBpB,yBACI,6DAAkD,YAAa,iBAC/D,6DACI,kEACI,yE,oBAEI,qEACJ,2DACA,wEACI,4EAKA,4EAKA,0EAA+C,gHAC3C,yEACA,a,oBACJ,iBACJ,2DACJ,uDACJ,mDACJ,+C,0BAzBQ,0EAA8C,8CAIK,qFAKvC,gDAKA,+CAMA,4I,yBAvB5B,+BACI,qDACI,6DA2BJ,0CACJ,uC,6BA5BY,iDDzBhB,iBAUI,WAAoBrvD,EAAgC1b,EACxC20B,EAAiCzM,GADzB,KAAAxM,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBAN7C,KAAAjnB,SAAU,EACV,KAAA+pE,OAAmB,GACnB,KAAAr/D,OAAgB,G,OAMV,YAAAnK,SAAN,W,gGACqB,SAAMlB,KAAKob,WAAWuvD,sB,cAAjC/pE,EAAW,SACjBZ,KAAKW,SAAU,EACmB,MAA9BC,EAASgqE,oBACT5qE,KAAK0qE,OAAS9pE,EAASgqE,kBAAkBtjE,KAAI,SAAAkmB,GAAK,OAAAA,EAAE1pB,KAAK,UAErB,MAApClD,EAASiqE,0BACT7qE,KAAKqL,OAASzK,EAASiqE,wBAAwBvjE,KAAI,SAAAkmB,GAC/C,MAAO,CACHs9C,QAASt9C,EAAEs9C,QAAQhnE,KAAK,MACxBinE,SAAUv9C,EAAEu9C,SACZpsE,IAAK6uB,EAAErrB,U,YAMvB,YAAA6oE,eAAA,SAAeC,GACXA,EAAaF,UAAYE,EAAaF,UAG1C,YAAAG,UAAA,SAAUD,GACNA,EAAaF,UAAW,EACxB/qE,KAAK0qE,OAAOvlE,KAAK8lE,EAAaH,UAGlC,YAAAnmB,OAAA,SAAO+I,GACH1tD,KAAK0qE,OAAO/c,OAAOD,EAAO,IAG9B,YAAA5W,IAAA,WACI92C,KAAK0qE,OAAOvlE,KAAK,KAGf,YAAA2iB,OAAN,W,iGACU3D,EAAU,IAAI,EAAAgnD,sBACZC,gCAAkCprE,KAAKqL,OAAOlD,QAAO,SAAAqlB,GAAK,OAAAA,EAAEu9C,YAC/DzjE,KAAI,SAAAkmB,GAAK,OAAAA,EAAE7uB,OACuC,IAAnDwlB,EAAQinD,gCAAgCjtE,SACxCgmB,EAAQinD,gCAAkC,MAE9CjnD,EAAQymD,kBAAoB5qE,KAAK0qE,OAAOviE,QAAO,SAAAqlB,GAAK,OAAK,MAALA,GAA0B,KAAbA,EAAEzpB,UAC9DuD,KAAI,SAAAkmB,GAAK,OAAAA,EAAExnB,MAAM,KAAKsB,KAAI,SAAA+jE,GAAM,OAAAA,EAAGtnE,aACC,IAArCogB,EAAQymD,kBAAkBzsE,SAC1BgmB,EAAQymD,kBAAoB,M,iBAK5B,O,sBADA5qE,KAAKmoB,YAAcnoB,KAAKob,WAAWkwD,mBAAmBnnD,GACtD,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,6BACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,mB,4DAIzE,YAAAsrE,aAAA,SAAa7d,EAAenrC,GACxB,OAAOmrC,G,iCAjEF8d,GAAoB,iJ,iCAApBA,EAAoB,ymD,GAAA,MCjBjC,4BACI,8CAAI,Y,mBAAwB,iBAChC,kCACA,yCAAG,Y,mBAA4B,iBAC/B,kDAAY,2CAAY,EAAA1jD,YACpB,gDAAI,a,oBAA4B,iBAChC,mDAIA,+DAiBA,sDACI,gD,oBACA,sDAAM,a,oBAAiB,iBAC3B,uCACA,kDAA0B,a,oBAA4B,iBACtD,mDAIA,uDA+BA,sDACI,gD,oBACA,sDAAM,a,oBAAiB,iBAC3B,uCACJ,mCACA,mB,6BAvEQ,sEAEL,0EAC+B,0DAC1B,2EACD,8CAIW,+CAiB2C,kDACpB,+EAC3B,gEAEgB,2EACvB,8CAIyC,kEA+Ba,kDACpB,+EAC3B,kE,qPDxDd,GAIa,EAAA0jD,wB,68CEjBb,KAKA,KACA,MAEA,KACA,MACA,KACA,MACA,MACA,OAbA,IAeA,QAEA,Q,6HCPoB,gCAA4D,YAAU,kB,uBAA9B,gCAAoB,4C,yBAoC5D,gCAA4D,YAAU,kB,uBAA9B,gCAAoB,4CD3BhF,iBAgBI,WAAoB3hC,EAAwCpwB,EAChD4a,EAAiC30B,EACjCkoB,EAAwCgV,EACxCzhB,EAAoD1F,GAH5C,KAAAo0B,iBAAwC,KAAApwB,eAChD,KAAA4a,YAAiC,KAAA30B,cACjC,KAAAkoB,iBAAwC,KAAAgV,sBACxC,KAAAzhB,uBAAoD,KAAA1F,mBAdhE,KAAAg2D,aAAuB,KACvB,KAAAC,mBAA6B,OAczB1rE,KAAK2rE,cAAgB,CACjB,CAAEjkE,KAAMhI,EAAYO,EAAE,aAAcvB,MAAO,GAC3C,CAAEgJ,KAAMhI,EAAYO,EAAE,eAAgBvB,MAAO,GAC7C,CAAEgJ,KAAMhI,EAAYO,EAAE,kBAAmBvB,MAAO,IAChD,CAAEgJ,KAAMhI,EAAYO,EAAE,iBAAkBvB,MAAO,IAC/C,CAAEgJ,KAAMhI,EAAYO,EAAE,WAAYvB,MAAO,IACzC,CAAEgJ,KAAMhI,EAAYO,EAAE,aAAcvB,MAAO,KAC3C,CAAEgJ,KAAMhI,EAAYO,EAAE,aAAcvB,OAAQ,IAE5CsB,KAAKmb,qBAAqB4B,SAC1B/c,KAAK2rE,cAAcxmE,KAAK,CAAEuC,KAAMhI,EAAYO,EAAE,SAAUvB,MAAO,OAGnE,IAAMktE,EAAuB,GAC7BlsE,EAAYmsE,4BAA4BznE,SAAQ,SAAA0nE,GAC5C,IAAIpkE,EAAOokE,EACPpsE,EAAYqsE,YAAY1tC,IAAIytC,KAC5BpkE,GAAS,MAAQhI,EAAYqsE,YAAYvtE,IAAIstE,IAEjDF,EAAczmE,KAAK,CAAEuC,KAAMA,EAAMhJ,MAAOotE,OAE5CF,EAAcpvC,KAAK,EAAA/2B,MAAM0J,gBAAgBzP,EAAa,SACtDksE,EAAcje,OAAO,EAAG,EAAG,CAAEjmD,KAAMhI,EAAYO,EAAE,WAAYvB,MAAO,OACpEsB,KAAK4rE,cAAgBA,E,OAGnB,YAAA1qE,SAAN,W,4GACwB,OAApB,EAAAlB,KAAoB,GAAMA,KAAK6pC,eAAerrC,IAAY,EAAAwT,iBAAiBQ,kB,OACjD,OAD1B,EAAKi5D,aAAe,SACpB,EAAAzrE,KAA0B,GAAMA,KAAK6pC,eAAerrC,IAAY,EAAAwT,iBAAiBS,wB,OAC7D,OADpB,EAAKi5D,mBAAqB,SAC1B,EAAA1rE,KAAoB,GAAMA,KAAK6pC,eAAerrC,IAAa,EAAAwT,iBAAiBI,oB,OACrD,OADvB,EAAK45D,aAAe,SACpB,EAAAhsE,KAAuB,GAAMA,KAAK6pC,eAAerrC,IAAa,oB,OACvC,OADvB,EAAKytE,gBAAkB,SACvB,EAAAjsE,KAAuB,GAAMA,KAAK6pC,eAAerrC,IAAa,oB,OAC1B,OADpC,EAAK0tE,gBAAkB,SACvB,EAAAlsE,KAAc,EAAAA,KAAsB,GAAMA,KAAK6pC,eAAerrC,IAAY,EAAAwT,iBAAiBa,Y,cAA3F,EAAKi5D,OAAS,EAAKK,eAAiB,S,YAGlC,YAAArkD,OAAN,W,0FACI,SAAM9nB,KAAK48B,oBAAoBwvC,uBAA4C,MAArBpsE,KAAKyrE,aAAuBzrE,KAAKyrE,aAAe,KAClGzrE,KAAK0rE,qB,OACT,OAFA,SAEA,GAAM1rE,KAAK6pC,eAAe+c,KAAK,EAAA50C,iBAAiBI,kBAAmBpS,KAAKgsE,e,OACxE,OADA,SACA,GAAMhsE,KAAKyZ,aAAamtC,KAAK,EAAA50C,iBAAiBI,kBAAmBpS,KAAKgsE,e,OACtE,OADA,SACA,GAAMhsE,KAAK6pC,eAAe+c,KAAK,kBAAmB5mD,KAAKisE,kB,OACvD,OADA,SACA,GAAMjsE,KAAKyZ,aAAamtC,KAAK,kBAAmB5mD,KAAKisE,kB,OACrD,OADA,SACA,GAAMjsE,KAAK6pC,eAAe+c,KAAK,kBAAmB5mD,KAAKksE,kB,OAEvD,OAFA,SACAlsE,KAAKyV,iBAAiBkB,KAAK,gBAC3B,GAAM3W,KAAK6pC,eAAe+c,KAAK,EAAA50C,iBAAiBa,UAAW7S,KAAK8rE,S,cAAhE,SACA9rE,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,kBACrCh1B,KAAK8rE,SAAW9rE,KAAKmsE,eACrB1hE,OAAOyqC,SAAS0qB,SAEhB5/D,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,mB,YAInE,YAAAosE,0BAAN,SAAgCC,G,gGACX,WAAbA,EAAA,MACkB,GAAMtsE,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,kCACnBD,KAAKN,YAAYO,EAAE,uCACnBD,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,UAAW,Y,OAC7D,IAJkB,SAMd,OADAD,KAAK0rE,mBAAqB,OAC1B,I,wBAGR1rE,KAAK0rE,mBAAqBY,E,6CAhFrBC,GAAgB,wT,iCAAhBA,EAAgB,o0DCvB7B,4BACI,8CAAI,Y,mBAAoB,iBAC5B,kCACA,yCAAG,Y,mBAAwB,iBAC3B,gDAAM,2CAAY,EAAAzkD,YACd,mDACI,uDACI,2DACI,iEAA0B,a,oBAAyB,iBACnD,kEAA8C,qEAC1C,wEACJ,mDACA,iEAAoC,a,oBAA6B,iBACrE,+CACJ,2CACJ,uCACA,mDACI,uDAAO,a,oBAA+B,iBACtC,uDACI,8DACiB,2EADjB,iBAEA,8DACI,a,oBACA,6BAAO,a,oBAAuC,iBAClD,+CACJ,2CACA,wDACI,8DACmB,2EAAgC,oCAAkB,EAAAukD,0BAAA,MADrE,iBAEA,8DACI,a,oBACA,6BAAO,a,oBAAyC,iBACpD,+CACJ,2CACJ,uCACA,mDACI,uDACI,2DACI,gEACI,sEAAoB,a,oBAAqB,iBACzC,kE,oBAEI,iEACJ,uDACJ,mDACA,mEAAkC,+DAC9B,wEACJ,mDACA,iEAAoC,a,oBAAyB,iBACjE,+CACJ,2CACJ,uCACA,mDACI,0DACI,gEACI,qEADJ,iBAEA,gEACI,c,qBACJ,iBACA,4D,qBAEI,2DACJ,gDACJ,4CACA,2DAAoC,c,qBAA6B,iBACrE,wCACA,qDACI,0DACI,gEACI,wEADJ,iBAEA,gEACI,c,qBACJ,iBACA,4D,qBACI,2DACJ,gDACJ,4CACA,2DAAoC,c,qBAAgC,iBACxE,wCACH,mDACO,0DACI,gEACI,wEADJ,iBAEA,gEACI,c,qBACJ,iBACJ,4CACA,2DAAoC,c,qBAAgC,iBACxE,wCACA,yDACI,c,qBACJ,iBACJ,oCACA,oB,MA5FQ,kEAEL,sEAKuC,yEACoB,sDAClC,uDAEwB,4EAKrC,8EAGc,4DAEb,2GACO,sFAKQ,4DAEf,6GACO,wFAQiB,qEAED,wFAIW,gDACtB,uDAEwB,wEAOpC,uDAEA,gHAGA,yFAI4B,6EAK5B,yDAEA,mHAE2D,yFAI/B,gFAK5B,yDAEA,mHAG4B,gFAGpC,0F,iTDvER,GAIa,EAAAE,oB,yxDEvBb,KAKA,KAEA,KACA,MACA,OACA,KACA,MACA,KACA,MACA,MAdA,IAgBA,S,GAEA,O,2FAEA,cAQI,WAAYpxD,EAA4Czb,EACpD0b,EAAwBssC,EACxBj8B,EAAgB5I,EAChBpC,EAA8C6W,EAC9CuS,EAAgCpwB,GAJpC,MAKI,YAAMiuC,EAAaj8B,EACf/rB,EAAamjB,EACbgnB,EAAgBpwB,EAChB0B,EAAsBC,EACtBqF,EAAuB6W,IAA0B,K,OAXzD,EAAAyyB,UAAoB,0BAahB,EAAKA,UAAY,0BACjB,EAAKV,YAAc5+C,OAAOyqC,SAASoU,OAAS,sBAC5C,EAAK/rB,SAAW,M,SAjBc,OAoB5B,YAAAivC,mBAAN,W,0EACIxsE,KAAKirC,WAAajrC,KAAK81B,aAAamV,W,4CArB/BwhC,GAAgB,kY,iCAAhBA,EAAgB,0QCxB7B,0BAA+C,wCAAS,EAAA3kD,OAAA,aAAkB,MACtE,0CACA,Y,mBACJ,iBACA,kB,MAFI,kF,yEDkBJ,CAIsC,EAAA0hC,cAAzB,EAAAijB,oB,68CExBb,KAKA,KAEA,KACA,MAEA,KACA,KACA,MACA,KACA,MACA,OACA,KAhBA,IAkBA,SACA,S,iKChBA,oC,mBACI,Y,mBACJ,kB,MAFkD,2EAC9C,+F,sBAmCA,2BAEI,Y,mBACJ,kB,MADI,iG,mDAGR,6BACI,6CAAG,Y,mBAAqC,iBACxC,sDAAY,4FACR,sDACI,8DAAkB,a,oBAAwB,iBAC1C,yDACA,8DAAoC,a,oBAA+D,iBACvG,2CACA,2DACI,qD,oBACA,0DAAM,a,oBAAmB,iBAC7B,2CACJ,uCACJ,4C,mDAZO,kFAC+B,0DAER,sEAEkB,4GAEiB,kDACpB,+EAC3B,mE,mDAIlB,iCAAY,4FACR,iDAAiB,Y,mBAAmB,iBACpC,kDACI,sDACI,8DAA+B,a,oBAAgC,iBAC/D,8DACI,6G,oBADJ,iBAGA,8DACiC,a,gEAAuG,iBAC5I,2CACJ,uCACA,mDAA0B,a,oBAAoB,iBAC9C,a,4CACA,qBAAK,a,oEAEL,wBACA,mDAA+B,a,oBAA+B,iBAC9D,uDACA,qDACA,oDACI,wDACI,a,4CACA,qBACA,4DACI,a,4CACJ,0BACJ,2CACA,kDACA,sDAAmB,8BAAQ,a,oBAAmB,iBAC1C,a,4CAA8C,iBACtD,uCACA,sDAAsC,a,oBAAmC,iBACzE,uDACI,iD,oBACA,sDAAM,a,oBAAmB,iBAC7B,uCACJ,mC,mDArCkC,2CACb,iEAGsB,+EAG3B,qGADA,4CAG6B,sKAGf,mEAC1B,6IACK,oOAG0B,8EAClB,2CAIL,qJAGI,8JAImB,yEACvB,8HAE8B,kFACmB,kDACpB,+EAC3B,mE,oCDxEd,aAgBI,WAAoBrxD,EAAgC1b,EACxC20B,EAAiCzM,EACzCzM,EAAoDuhB,EAC5CjR,EAAwBhW,EACxBssB,EAAkCxM,GAJ1B,KAAAna,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACW,KAAA8U,eAC5C,KAAAjR,SAAwB,KAAAhW,mBACxB,KAAAssB,cAAkC,KAAAxM,cAZ9C,KAAAc,kBAAmB,EACnB,KAAAmM,YAAa,EACb,KAAAkqC,aAAe,GACf,KAAA71B,eAAiB,EACjB,KAAAlU,kBAAoB,EAShB3iC,KAAKwiC,WAAarnB,EAAqB4nB,a,OAGrC,YAAA7hC,SAAN,W,gGAC4B,OAAxB,EAAAlB,KAAwB,GAAMA,KAAKu1B,YAAYc,oB,OAC/B,OADhB,EAAKA,iBAAmB,SACR,GAAMr2B,KAAK08B,aAAaiwC,c,OACxC,OADgB,UAEZ3sE,KAAKyrB,OAAOsc,SAAS,CAAC,2BACtB,K,YAIF,YAAAjgB,OAAN,W,2GAEI,GADI+d,EAAkB,KAClB7lC,KAAKwiC,aACCuD,EAASx1B,SAASy1B,eAAe,QAE1B,OADbH,EAAQE,EAAOF,QACuB,IAAjBA,EAAM1nC,QAGvB,OAFA6B,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,eACvB,I,iBAKJ,G,sBAAID,KAAKwiC,WAAY,CACjB,IAAKxiC,KAAK08B,aAAakwC,mBAGnB,OAFA5sE,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,qBACvB,KAGEsmC,EAAK,IAAIC,UACZC,OAAO,UAAWZ,EAAM,IAC3B7lC,KAAKmoB,YAAcnoB,KAAKob,WAAWs7B,mBAAmBnQ,GAAI9lC,MAAK,WAC3D,OAAO,EAAKosE,0BAGhB7sE,KAAKmoB,YAAcnoB,KAAKilC,iBAAiBjmB,qBAAqBve,MAAK,SAAAuD,GAC/D,IAAMuiC,EAAK,IAAIC,SAQf,OAPAD,EAAGE,OAAO,oBAAqBziC,EAAO,GAAGyI,YACxB,MAAbzI,EAAO,IACPuiC,EAAGE,OAAO,eAAgBziC,EAAO,IAErCuiC,EAAGE,OAAO,uBAAwB,EAAK9D,mBAAqB,GAAGl2B,YAC/D85B,EAAGE,OAAO,UAAW,EAAK2P,iBAAiBpzB,QAAQ9G,SACnDqqB,EAAGE,OAAO,aAAc,EAAK2P,iBAAiBpzB,QAAQM,YAC/C,EAAKlI,WAAW0xD,YAAYvmC,MACpC9lC,MAAK,SAAAssE,GACJ,OAAKA,EAAgBziE,SAAwD,MAA7CyiE,EAAgBnlC,0BAIrC,EAAKilC,kBAHL,EAAK5nC,iBAAiBllB,wBAAwBgtD,EAAgBnlC,2BACjE,WAAM,SAAKilC,wBAM3B,SAAM7sE,KAAKmoB,a,cAAX,S,4DAIF,YAAA0kD,gBAAN,W,0FACI,SAAM7sE,KAAKob,WAAWysB,wB,OACtB,OADA,SACA,GAAM7nC,KAAK+hC,YAAY+F,UAAS,I,cAAhC,SACA9nC,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,sBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,mBACjED,KAAKyV,iBAAiBkB,KAAK,oBAC3B3W,KAAKyrB,OAAOsc,SAAS,CAAC,2B,YAG1B,sBAAI,qCAAsB,C,IAA1B,WACI,OAAO/nC,KAAK62C,eAAiB7oC,KAAKmmB,IAAIn0B,KAAK2iC,mBAAqB,I,gCAGpE,sBAAI,uBAAQ,C,IAAZ,WACI,OAAO3iC,KAAK0sE,aAAe1sE,KAAK+jC,wB,gCAGpC,sBAAI,yBAAU,C,IAAd,WACI,OAAgC,MAAzB/jC,KAAKo2C,kBAA6D,MAAjCp2C,KAAKo2C,iBAAiB5R,QACzDxkC,KAAKo2C,iBAAiB5R,QAAU,IAAOxkC,KAAKykC,SAC7C,G,gCAGR,sBAAI,oBAAK,C,IAAT,WACI,OAAQzkC,KAAKykC,SAAWzkC,KAAK0kC,YAAe,G,iEAtGvCsoC,GAAgB,6W,iCAAhBA,EAAgB,oD,OAAA,M,cACd,EAAA1sD,kBAAgB,G,cAChB,EAAAqE,kBAAgB,I,shDC3B/B,4BACI,8CAAI,Y,mBAAsB,iBAC9B,kCACA,uDAGA,qDACI,+CAAG,a,oBAAyC,iBAC5C,kDACI,oDACI,oDACA,a,oBACJ,iBACA,oDACI,oDACA,a,oBACJ,iBACA,oDACI,oDACA,a,oBACJ,iBACA,oDACI,oDACA,a,oBACJ,iBACA,oDACI,oDACA,a,oBACJ,iBACA,oDACI,oDACA,a,oBACJ,iBACA,oDACI,oDACA,a,oBACJ,iBACJ,uCACA,iDAAoD,a,4CAAyD,iBAC7G,mDAIJ,mCACA,4DAcA,oDAsCA,mB,MA/FQ,oEAEiB,uDAIlB,wFAIK,+GAIA,+GAIA,iHAIA,+GAIA,4GAIA,+GAIA,8GAGW,6EAAiC,gHAEd,iDAI5B,iDAckE,oD,2QDrChF,GAIa,EAAAqoD,oB,68CEzBb,KAOA,KACA,OAEA,OAVA,I,4ECeoB,2BACI,Y,mBACJ,kB,MADI,mI,sBAEJ,2BACI,Y,mBACJ,kB,MADI,2H,sBAEJ,2BACI,Y,mBACJ,kB,MADI,yHDVxB,IAEA,aAQI,WAAoBtwC,EAAoCmoB,EAC5CC,EAAwB3pC,GADhB,KAAAuhB,eAAoC,KAAAmoB,qBAC5C,KAAAC,SAAwB,KAAA3pC,uB,OAE9B,YAAAja,SAAN,W,uGAYsB,OAXlBlB,KAAK6kD,mBAAmBlhC,UAdE,qBAcmC,SAAOpf,GAAY,qC,6CAC5EvE,KAAK8kD,OAAOG,KAAI,gD,yDACJ1gD,EAAQ2gD,S,IACP,+B,mBACD,SAAMllD,KAAK6Z,Q,OACX,OADA,SACA,M,wCAMhB,EAAA7Z,KAAkB,GAAMA,KAAKmb,qBAAqB4nB,c,OAClD,OADA,EAAKP,WAAa,SAClB,GAAMxiC,KAAK6Z,Q,cAAX,S,YAGJ,YAAAnE,YAAA,WACI1V,KAAK6kD,mBAAmBM,YA9BE,sBAiCxB,YAAAtrC,KAAN,W,gGACmB,OAAf,EAAA7Z,KAAe,GAAMA,KAAK08B,aAAaiwC,c,cAAvC,EAAKlwC,QAAU,S,6CA5BV0+B,GAAiB,0J,iCAAjBA,EAAiB,gpCClB9B,4BACI,iDACI,qDACI,yDACI,6DAAyB,Y,oBAAqB,iBAC9C,+DACI,iEACI,a,oBACJ,iBACA,iEACI,a,oBACJ,iBACA,iEACI,a,oBACJ,iBACA,mEAGA,oEAGA,oEAGA,kEACI,a,oBACJ,iBACA,kEACI,a,oBACJ,iBACA,kEACI,a,oBACJ,iBACJ,mDACJ,+CACJ,2CACA,wDACI,8DACJ,2CACJ,uCACJ,mCACA,mB,MArCyC,oEAGjB,4HAGA,0HAGA,gIAE2E,8CAGL,+CAGA,kDAItE,+HAGA,8HAGA,oI,kHDjBxB,GAIa,EAAAA,qB,68CElBb,KAIA,KAEA,KACA,MAIA,KACA,KACA,KACA,OAdA,I,0ICGQ,4BACI,kD,mBACA,0DAAsB,Y,mBAAoB,iBAC9C,2C,MAFgD,6EACtB,kE,sBAIlC,6BACI,0C,mBACA,kDAAsB,Y,mBAAoB,iBAC9C,4C,MAFgD,6EACtB,kE,sBAGtB,oC,mBACI,Y,mBAAiC,kB,MADT,+DACxB,gG,mDACJ,oC,mBACI,iDAAG,Y,mBAAwC,iBAC3C,0DAAiF,6FAE7E,mD,oBACA,0DAAM,a,oBAAkC,iBAC5C,2CACJ,uC,oDAP4B,0EACrB,qFAEC,+DAAiC,sBACA,+EAC3B,kF,yBAKV,yBAA2B,Y,mBAAsC,kB,8BAAtC,sF,sBAC3B,yBAA4B,Y,mBAAyB,kB,MAAzB,uE,yBAHhC,yBACI,kDAAI,Y,mBAAuB,iBAC3B,sDACA,sDACJ,uC,8BAHQ,oEACA,qDACA,uD,sBAQQ,8BACwC,Y,mBAAgC,kB,MAAhC,8E,yBAYxC,yBACI,kEACI,Y,uBACJ,iBACA,kEACI,Y,0CACJ,iBACJ,wD,uBALQ,mLAGA,mL,yBATpB,6BACI,6DAA6B,Y,mBAAoB,iBACjD,4DACI,6DACI,sEAQJ,mDACJ,+CACJ,4C,8BAbiC,iEAGjB,6D,yBAnBpB,6BACI,sDACI,sDACI,0DAAI,Y,mBAAmB,iBACvB,2DACI,qEAA8B,aAAgD,iBAC9E,uEAEJ,mDACA,4DAAI,a,oBAAuB,iBAC3B,4DAAI,a,4CAEJ,iBACJ,+CACJ,2CACA,2DAeJ,wC,8BA3BgB,gEAE8B,+EAE1B,kEAEJ,qEACA,uLAKO,oD,mDA0BnB,6BACI,0DACI,iEACI,kGAA4B,M,mBAAQ,8BAAyB,gBAAO,iBAAO,iBAC/E,6DAA6B,a,oBAA0B,iBACvD,+EAAoB,sGAAgC,KAAhC,CAAsC,0FAAkC,MAC5F,mDACJ,+CACJ,2C,MAN4C,mFAEP,yE,mDAdzC,6BACI,mDACI,6DAAwD,iGACpD,Y,mBACJ,iBACA,wDAEI,Y,oBACJ,iBACJ,2CACA,2DASJ,gD,iCAhBY,8GAIA,oHAGe,yD,mDAYnB,gCAAwD,mGAEpD,Y,mBACJ,iB,MADI,iH,mDAEJ,mCAAmF,0FAG/E,sD,mBACA,4DAAM,Y,mBAA+B,iBACzC,8C,oDAJI,6CAA8B,sBAEG,6EAC3B,6E,mDAYN,6BACI,qEAAwD,6FAAuB,MAC3E,Y,mBACJ,iBACA,qEAA6D,6FAAuB,MAChF,Y,mBACJ,iBACJ,kD,MALQ,2HAGA,+H,mDAGR,4CAAkE,iGAA2B,KAA3B,CAAiC,oFACpE,MAAkC,iB,iCAD7C,iCAAoB,2B,yBAVhD,6BACI,0DACI,iEAQA,+EAEJ,8CACJ,oD,8BAX4B,yDASmB,yD,4DA/BnD,6BACI,sDACI,+DAIA,gEAMJ,0CACA,qDAA0B,a,oBAAoB,iBAC9C,mDAAG,a,oBAAoF,iBACvF,wDACI,4DAEI,a,uBAAuC,iBAC/C,2CACA,kEAcJ,iD,8BA/BY,+EAKA,8GAKkB,kEACvB,+HAEyD,0FACpD,mDACA,0GAEM,+G,yBAvFtB,6BACI,2DAEA,6DAQA,mDAKA,qDA+BA,8DAoBA,gEAmCJ,6C,6BArG8D,6EAEW,kEAQjE,iDAKa,kDA+BH,iDAoBA,mDDhElB,iBAgBI,WAAoBz+B,EAAoCthB,EAC5CD,EAAoDzb,EACpD20B,EAAiCzM,EACjC6D,GAHQ,KAAAiR,eAAoC,KAAAthB,aAC5C,KAAAD,uBAAoD,KAAAzb,cACpD,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAA6D,SAdZ,KAAA9qB,SAAU,EACV,KAAA8xC,aAAc,EACd,KAAAulB,kBAAmB,EACnB,KAAAC,mBAAoB,EACpB,KAAAC,mBAAoB,EAEpB,KAAA11B,YAAa,EASTxiC,KAAKwiC,WAAarnB,EAAqB4nB,a,OAGrC,YAAA7hC,SAAN,W,0FACI,SAAMlB,KAAK6Z,Q,cAAX,SACA7Z,KAAKyyC,aAAc,E,YAGjB,YAAA54B,KAAN,W,gGACI,OAAI7Z,KAAKW,QACL,IAGAX,KAAK08B,aAAaiwC,cAClB3sE,KAAKW,SAAU,EACf,EAAAX,KAAW,GAAMA,KAAKob,WAAW6xD,wBAFjC,M,cAEA,EAAK3U,IAAM,S,aAGX,OADAt4D,KAAKyrB,OAAOsc,SAAS,CAAC,sBACtB,I,cAGJ/nC,KAAKW,SAAU,E,YAGb,YAAA43D,UAAN,W,0FACI,OAAIv4D,KAAKW,QACL,IAGAX,KAAKktE,oBACLltE,KAAKmb,qBAAqB+Z,WAAWl1B,KAAKN,YAAYO,EAAE,+BACpDD,KAAKN,YAAYO,EAAE,sBAAuB,KAAM,KAAM,WAC1D,KAGc,GAAMD,KAAKmb,qBAAqB+Z,WAAWl1B,KAAKN,YAAYO,EAAE,yBAC5ED,KAAKN,YAAYO,EAAE,yBAA0BD,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,Y,OAC/F,IAFkB,SAGd,U,iBAKA,O,sBADAD,KAAKw4D,iBAAmBx4D,KAAKob,WAAW+xD,uBACxC,GAAMntE,KAAKw4D,kB,cAAX,SACAx4D,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,uBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,eACjED,KAAK6Z,O,4DAIP,YAAAqrB,OAAN,W,0FACI,OAAIllC,KAAKW,QACL,IAGAX,KAAKktE,oBACLltE,KAAKmb,qBAAqB+Z,WAAWl1B,KAAKN,YAAYO,EAAE,+BACpDD,KAAKN,YAAYO,EAAE,sBAAuB,KAAM,KAAM,WAC1D,KAGc,GAAMD,KAAKmb,qBAAqB+Z,WAAWl1B,KAAKN,YAAYO,EAAE,sBAC5ED,KAAKN,YAAYO,EAAE,sBAAuBD,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,Y,OACnG,IAFkB,SAGd,U,iBAKA,O,sBADAD,KAAK04D,cAAgB14D,KAAKob,WAAWgyD,oBACrC,GAAMptE,KAAK04D,e,cAAX,SACA14D,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,qBACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,yBACjED,KAAK6Z,O,4DAIb,YAAAm/C,gBAAA,WACI,IAAIh5D,KAAKW,QAAT,CAIA,IAAM85D,EAAgBC,KAAKC,UAAU36D,KAAKs4D,IAAIkC,QAAS,KAAM,GAC7Dx6D,KAAKmb,qBAAqBy/C,SAASnwD,OAAQgwD,EAAe,KAAM,oCAGpE,YAAAvB,cAAA,WACQl5D,KAAKW,UAGTX,KAAKk4D,mBAAoB,IAG7B,YAAAiB,mBAAA,SAAmBt/C,GACf7Z,KAAKk4D,mBAAoB,EACrBr+C,GACA7Z,KAAK6Z,QAIb,YAAA0/C,cAAA,SAAcziB,GACN92C,KAAKktE,mBACLltE,KAAKmb,qBAAqB+Z,WAAWl1B,KAAKN,YAAYO,EAAE,8BACpDD,KAAKN,YAAYO,EAAE62C,EAAM,aAAe,iBAAkB,KAAM,KAAM,YAG9E92C,KAAKg4D,iBAAmBlhB,EACxB92C,KAAKi4D,mBAAoB,IAG7B,YAAAuB,aAAA,SAAa3/C,GACT7Z,KAAKi4D,mBAAoB,EACrBp+C,GACA7Z,KAAK6Z,QAIb,sBAAI,0CAA2B,C,IAA/B,WACI,OAA4B,MAArB7Z,KAAK64D,eAAyB74D,KAAK64D,aAAaY,WAAaz5D,KAAK64D,aAAaa,iB,gCAG1F,sBAAI,2BAAY,C,IAAhB,WACI,OAAmB,MAAZ15D,KAAKs4D,IAAct4D,KAAKs4D,IAAIO,aAAe,M,gCAGtD,sBAAI,0BAAW,C,IAAf,WACI,OAAmB,MAAZ74D,KAAKs4D,IAAct4D,KAAKs4D,IAAIqB,gBAAkB,M,gCAGzD,sBAAI,gCAAiB,C,IAArB,WACI,OAAmB,MAAZ35D,KAAKs4D,KAAet4D,KAAKs4D,IAAIvtB,eACvB/qC,KAAKs4D,IAAIsB,UAAY55D,KAAKs4D,IAAIvtB,aAArC,KAAoDgL,QAAQ,GAAK,G,gCAG3E,sBAAI,mCAAoB,C,IAAxB,WACI,OAAO/1C,KAAK65D,kBAAoB,EAAI,EAAI,G,gCAG5C,sBAAI,iCAAkB,C,IAAtB,WACI,OAAmB,MAAZ75D,KAAKs4D,KAAct4D,KAAKs4D,IAAI4U,oB,iEA1J9BG,GAAyB,+P,iCAAzBA,EAAyB,kuDCpBtC,4BACI,8CACI,Y,mBACA,gCAIJ,sCACJ,kCACA,wDAIA,2DAuGA,mB,MAlHQ,sGACO,6DAMD,8DAIA,4C,sODGd,GAIa,EAAAA,6B,68CEpBb,KAKA,MACA,KANA,I,mFCkBI,wBAAiB,Y,mBAA2B,kB,MAA3B,gF,yBAEb,qC,mBACI,Y,mBACJ,kB,8BAF4B,+DACxB,kI,yBAEJ,qC,mBACI,Y,mBACJ,kB,8BAF2B,kEACvB,yJ,yBAagB,yBAAoC,YAAK,kB,uBAAL,uC,yBAVpD,4BACI,6DACI,kEACI,iEACJ,sDACA,kEACI,uEAAoB,aAAW,iBAC/B,iEACA,sEAAgB,a,oBAA6B,iBAC7C,oEACI,6EACJ,2DACJ,uDACA,oEACI,oEACI,wEAAI,a,oBAAoB,iBACxB,wEAAI,aAAY,iBAChB,wEAAI,a,oBAA0B,iBAC9B,wEAAI,a,sBAAuB,iBAC3B,wEAAI,a,oBAA2B,iBAC/B,wEAAI,a,oBAAqC,iBACzC,wEAAI,a,oBAA2B,iBAC/B,wEAAI,a,oBAAoC,iBAC5C,2DACJ,uDACJ,mDACJ,gD,uBAvBiB,8DAGe,4CACjB,wEACa,mFAER,qDAKA,mEACA,6CACA,yEACA,oEACA,0EACA,mFACA,0EACA,mF,yBAvBxB,4BACI,6DA2BJ,2C,8BA3BQ,2D,yBARZ,6BACI,gEAGA,gEAGA,uDA6BJ,gD,8BAnC8D,+DAGE,8DAGnB,+D,yBATjD,6BACI,kDACA,6DAqCJ,mC,6BAtCO,4CACW,8CDVlB,iBAWI,WAAoBl2C,EAAoC5B,GAApC,KAAA4B,eAAoC,KAAA5B,cANxD,KAAAxW,OAAQ,EAGR,KAAAuuD,iBAA4C,G,OAKtC,YAAApsE,SAAN,W,gGACoB,OAAhB,EAAAlB,KAAgB,GAAMA,KAAKu1B,YAAY0L,Y,cAAvC,EAAKp3B,SAAW,S,YAGd,YAAAie,OAAN,W,gGACI9nB,KAAK+e,OAAQ,EACb/e,KAAK6J,SAAW7J,KAAK6J,SAAS7H,c,iBAGF,O,sBADxBhC,KAAKmoB,YAAcnoB,KAAKm3B,aAAam2C,iBAAiBttE,KAAK6J,UAC3D,EAAA7J,KAAwB,GAAMA,KAAKmoB,a,cAAnC,EAAKmlD,iBAAmB,S,6BAExBttE,KAAK+e,OAAQ,E,oBAEjB/e,KAAKutE,gBAAkBvtE,KAAK6J,S,6CAtBvB2jE,GAAqB,yE,iCAArBA,EAAqB,y+B,GAAA,MCblC,4BACI,8CAAI,Y,mBAA6B,iBACrC,kCACA,yCAAG,Y,mBAAuB,iBAC1B,kDAAY,2CAAY,EAAA1lD,YACpB,mDACI,uDACI,6DAAsB,a,oBAAqB,iBAC3C,6DAAsE,iEAAtE,iBACA,6DAAoC,a,oBAAqC,iBAC7E,2CACJ,uCACA,sDACI,gD,oBACA,sDAAM,a,oBAA0B,iBACpC,uCACJ,mCACA,kDAwCA,mB,6BAxDQ,2EAEL,qEAC+B,0DAGA,oEACgD,kDAClC,oFAGa,kDACpB,+EAC3B,yEAGI,oE,6ODRlB,GAIa,EAAA0lD,yB,yxDEbb,WAWA,GAJA,KACA,MACA,KAEA,QAIA,QACA,S,kICbA,qCACI,Y,mBACJ,kB,MADI,yG,mDAmBJ,6BACI,kDACI,sDACI,4DAAuB,Y,mBAAqB,iBAC5C,6DAA0E,4GAA8B,gFAAxG,iBAEJ,2CACA,wDACI,8DAA4B,a,oBAA0B,iBACtD,8DACI,iHAAmC,gFADvC,iBAEJ,2CACJ,uCACA,mDACI,wDACI,8DAAgE,+FAAwB,iGAAxF,iBAEA,8DAAiD,a,oBAAuB,iBAC5E,2CACA,wDACI,8DAAoE,+FAAwB,oGAA5F,iBAEA,8DAAqD,a,oBAA0B,iBACnF,2CACJ,uCACJ,4C,gCAtBmC,mEACmD,0DAI9C,yEAExB,+DAMA,4DAAgC,kFACa,sEAI7C,+DAAmC,qFACc,0E,mDAIjE,6BACI,kDACI,sDACI,4DAAoB,Y,mBAAmB,iBACvC,6DAAwE,0GAA4B,+EAA5B,CAA4B,oFAApG,iBAEJ,2CACA,wDACI,8DAAwB,a,oBAAuB,iBAC/C,8DAA0E,6FAAsB,+FAAtB,CAAsB,uFAAhG,iBAEJ,2CACA,wDACI,8DAAyB,a,oBAAuB,iBAChD,8DAA2E,6FAAsB,gGAAtB,CAAsB,wFAAjG,iBAEJ,2CACJ,uCACA,mDACI,wDACI,8DAA+D,+FAAwB,gGAAvF,iBAEA,8DAAgD,mBAAG,iBACvD,2CACA,wDACI,8DAA+D,+FAAwB,gGAAvF,iBAEA,8DAAgD,mBAAG,iBACvD,2CACA,wDACI,8DAA6D,+FAAwB,6FAArF,iBAEA,8DAA8C,mBAAG,iBACrD,2CACA,wDACI,8DAA6D,+FAAwB,8FAArF,iBAEA,8DAA8C,wBAAY,iBAC9D,2CACA,wDACI,8DAA+D,+FAAwB,6FAAvF,iBAEA,8DAAgD,a,oBAAsB,iBAC1E,2CACJ,uCACJ,4C,gCA1CgC,iEACoD,wDAIhD,sEAEpB,2DAGqB,sEAErB,4DAMA,2DAA+B,oFAK/B,2DAA+B,oFAK/B,wDAA4B,kFAK5B,yDAA6B,kFAK7B,wDAC4C,sE,iBDzE5D,kBASI,WAAYl2C,EAAsDnc,EAC9Dzb,EAAkC8V,GADtC,MAEI,YAAM8hB,EAA2Bnc,EAAsBzb,EAAa+K,SAAO,K,OADzC,EAAA+K,2BAH9B,EAAAe,MAAwB,K,SAHY,OAU5C,YAAAk3D,QAAA,sBACsB,MAAdztE,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK0tE,gBAAgBv3D,gBAAgBJ,GAASK,SAC3DpW,KAAKuW,MAAMZ,KAAwC,EAAAg4D,kCAAmC3tE,KAAK0tE,iBAE3F1tE,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,kCAC1B3jB,KAAKuW,MAAQ,K,cAIrB,YAAAq3D,cAAA,WACIr9D,SAASy1B,eAAe,UAAUn0B,SAGtC,YAAAg8D,iBAAA,WACIt9D,SAASy1B,eAAe,cAAcn0B,SAG1C,YAAAi8D,kBAAA,WACIv9D,SAASy1B,eAAe,eAAen0B,S,iCAjClCk8D,GAA0B,kL,iCAA1BA,EAA0B,+D,OAAA,K,yBACG,EAAAv3C,kB,yvFCvB1C,4BACI,8CAAI,Y,mBAA8B,iBACtC,kCACA,uDAGA,6CACI,mDACI,kD,6BACJ,uCACJ,mCACA,+CACI,mDACI,yDACI,yCAAU,EAAAw3C,gBAAV,CAAwB,wDAD5B,iBAEA,yDAAwD,a,oBAAqB,iBACjF,uCACA,mDACI,yDACI,yCAAU,EAAAA,gBAAV,CAAwB,wDAD5B,iBAEA,0DAA0D,a,oBAAuB,iBACrF,uCACJ,mCACA,6DA0BA,6DA8CA,gDACI,iDACI,2DAA8C,wCAAS,EAAAC,gBACnD,a,oBACJ,iBACA,2DAAwD,wCAAS,EAAA31C,UAC7D,a,oBACJ,iBACJ,uCACA,oDACI,2DAAwD,wCAAS,EAAAm1C,a,oBAE7D,qDACJ,2CACJ,uCACJ,mCACA,wFACA,mB,MA/GQ,4EAEiB,0GAKa,0FAMD,sDAC2B,oEAI3B,sDAC6B,sEAGpD,kEA0BA,gEAiDF,6GAGA,uGAKA,gG,sSDxFZ,CAIgD,8BAAnC,EAAAM,8B,8ZEtBb,KAEA,KACA,MACA,KAJA,IAMA,S,yHCIgB,4BACI,kEACI,iE,4BAEA,wEAA0B,Y,mBAA0B,iBACxD,uDACA,oEACI,2EACI,oH,oBACA,qEACJ,2DACJ,uDACJ,mD,0BAVqD,wFAEnB,uEAGG,2F,yBARzC,4BACI,iEAaJ,+C,6BAbuC,kD,sBAcvC,6BACI,Y,mBACJ,kB,MADI,mHDfhB,kBAKI,WAAYz2C,EAAsDnc,EAC9Dzb,G,OACA,YAAM43B,EAA2Bnc,EAAsBzb,EAAa+K,SAAO,K,OAH5B,O,iCAA1CkjE,GAAiC,kI,iCAAjCA,EAAiC,gmCCd9C,4BACI,iDACI,qDACI,yDACI,4DAA8C,Y,oBAA4B,iBAC1E,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,4DAeA,6DAGA,2DACI,mEACI,a,oBACJ,iBACA,gEACI,uEAAsB,wCAAS,EAAA32D,W,oBAE3B,iEACJ,uDACJ,mDACJ,+CACJ,2CACJ,uCACJ,mCACA,mB,MArC8D,0EACW,mFAIrB,qDAehB,sDAKhB,gHAII,sF,+IDvBxB,CAIuD,qCAA1C,EAAA22D,qC,68CEdb,KAKA,MACA,KANA,I,uGCqBwB,2BACI,kGACA,Y,mBACJ,iB,MADI,iI,sBAuBA,8BACI,Y,2CACJ,kB,MADI,yJDvChC,iBAOI,WAAoBp4C,EAAkC9f,GAAlC,KAAA8f,cAAkC,KAAA9f,mBAFtD,KAAA4gB,kBAAmB,E,OAIb,YAAAn1B,SAAN,W,gGAC4B,OAAxB,EAAAlB,KAAwB,GAAMA,KAAKu1B,YAAYc,oB,cAA/C,EAAKA,iBAAmB,S,YAG5B,YAAA2C,gBAAA,WACSh5B,KAAKq2B,kBACNr2B,KAAKyV,iBAAiBkB,KAAK,oB,iCAX1B2oD,GAAc,6E,iCAAdA,EAAc,0tCCZ3B,4BACI,iDACI,qDACI,yDACI,6DAAyB,Y,oBAAkB,iBAC3C,+DACI,iEACI,a,oBACJ,iBACA,iEACI,a,oBACJ,iBACA,iEACI,a,oBACJ,iBACJ,mDACJ,+CACA,2DACI,gEACI,a,oBACA,8BACI,wEAIJ,uDACJ,mDACA,+DACI,kEACI,a,oBACJ,iBACA,kEACI,a,oBACJ,iBACA,kEACI,a,oBACJ,iBACA,kEACI,a,oBACJ,iBACA,kEACI,a,oBACJ,iBACA,kEACI,a,oBACA,8BACI,+EAGJ,2DACJ,uDACJ,mDACJ,+CACJ,2CACA,wDACI,8DACJ,2CACJ,uCACJ,mCACA,mB,MAvDyC,iEAGjB,oIAGA,6HAGA,8HAMJ,sHAEyD,wDAQrD,yIAGA,wIAGA,sIAGA,0IAGA,oIAGA,uIAEsC,0D,uJDtC9D,GAIa,EAAAA,kB,68CEZb,WAmBA,GATA,KASA,OAEA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,S,GAEA,MACA,KACA,MACA,KACA,MACA,OACA,KAEA,O,uSCxBwB,6BACI,mE,mBAEA,2EAAsB,Y,mBAAoB,iBAC9C,oE,MAHgD,6EAEtB,kE,mDAO9B,gCAA6D,4FACzD,+DAAmD,Y,mBACvD,iB,MADuD,+F,mDAW/D,6BACI,8DACI,2DAAuD,Y,mBAC3D,iBACA,8DACI,8DAAG,a,oBAAyC,iBAC5C,uEAAkE,4FAC9D,a,oBACJ,iBACJ,mDACJ,+C,MAR+D,kGAGpD,uFAEC,sI,qBAIZ,qC,sBAEA,6BACI,8DACI,2DAAuD,Y,mBAC3D,iBACA,8DACI,8DAAG,a,oBAA8B,iBACjC,kEAEI,a,oBACJ,iBACJ,mDACJ,gD,MAT+D,iGAGpD,4EAGC,gI,sBAIZ,6BACI,8DACI,2DAAoD,Y,mBACxD,iBACA,8DACI,8DAAG,a,oBAAyC,iBAC5C,kEACI,a,oBACJ,iBACJ,mDACJ,gD,MAR4D,6FAGjD,uFAEC,4H,sGD5BxB,IAEA,cA2BI,WAAoBv9B,EAAkClf,EAC1C4I,EAAwB8zC,EACxB7/D,EAAkC8V,EAClCknB,EAAoCvjB,EACpC1D,EAA4C8f,EAC5Cpa,EAAoD0pC,EACpDC,GANQ,KAAA/iB,cAAkC,KAAAlf,QAC1C,KAAA4I,SAAwB,KAAA8zC,oBACxB,KAAA7/D,cAAkC,KAAA8V,2BAClC,KAAAknB,eAAoC,KAAAvjB,gBACpC,KAAA1D,mBAA4C,KAAA8f,cAC5C,KAAApa,uBAAoD,KAAA0pC,qBACpD,KAAAC,SAlBZ,KAAAopB,WAAqB,EACrB,KAAA/rE,KAAmB,KACnB,KAAAyiB,SAAmB,KACnB,KAAA4O,aAAuB,KACvB,KAAA26C,iBAAkB,EAClB,KAAAC,qBAAsB,EACtB,KAAAC,eAAgB,EAChB,KAAAC,oBAAqB,EACrB,KAAAhvB,SAAmB,EAEnB,KAAA/oC,MAAwB,K,OAUlB,YAAArV,SAAN,W,yGAC6B,OAAzB,EAAAlB,KAAyB,GAAMA,KAAK08B,aAAakwC,oB,cAAjD,EAAKuB,iBAAoB,SACzBnuE,KAAKouE,qBAAsE,IAAhD3jE,OAAOuF,UAAUC,UAAU7K,QAAQ,QAExDyiD,EAAiB7nD,KAAK6iB,MAAMwjC,YAAY1iC,WAAU,SAAMD,GAAM,qC,mEAChE,SAAM1jB,KAAK+hC,YAAY+F,UAAS,I,OAET,OAFvB,SAEA,EAAA9nC,KAAuB,GAAMA,KAAKmZ,cAAcopD,a,OACvB,OADzB,EAAK8L,eAAkB,SACE,GAAMruE,KAAKu1B,YAAYc,oB,OAIhD,OAJMA,EAAmB,SACzBr2B,KAAKsuE,oBAAsBtuE,KAAKmuE,kBAAoB93C,IAC/Cr2B,KAAKmb,qBAAqB4nB,aAE/B,GAAM7tB,QAAQK,IAAI,CACdvV,KAAKw/D,mBAAmB3lD,OACxB7Z,KAAKuuE,uBAAuB10D,U,cAFhC,SAKc,MAAV6J,EAAA,OACA1jB,KAAKw/D,mBAAmBG,aAAc,EACtC,GAAM3/D,KAAKygD,iBAAiBmf,W,cAA5B,S,qBAEIl8C,EAAO47B,SACPt/C,KAAKw/D,mBAAmBK,eAAgB,EACxC,GAAM7/D,KAAK8/D,kBAFX,M,cAEA,S,qBACOp8C,EAAOwqD,WACdluE,KAAKw/D,mBAAmBgP,mBAAoB,EAC5C,GAAMxuE,KAAKyuE,oBAFJ,O,cAEP,S,sBACO/qD,EAAOvhB,MACRlC,EAAI+L,SAAS0X,EAAOvhB,KAAM,MAChCnC,KAAKw/D,mBAAmBO,aAAe9/D,EACvC,GAAMD,KAAKggE,iBAAiB//D,KAHrB,O,eAGP,S,sBACOyjB,EAAOkB,UACd5kB,KAAKw/D,mBAAmBkP,gBAAiB,EACzC1uE,KAAKw/D,mBAAmBmP,iBAAmBjrD,EAAOkB,SAClD,GAAM5kB,KAAK4uE,aAAalrD,EAAOkB,YAHxB,O,eAGP,S,sBACOlB,EAAO8P,cACdxzB,KAAKw/D,mBAAmBS,qBAAuBv8C,EAAO8P,aACtD,GAAMxzB,KAAKkgE,iBAAiBx8C,EAAO8P,gBAF5B,O,eAEP,S,eAGA,OADAxzB,KAAKw/D,mBAAmBG,aAAc,EACtC,GAAM3/D,KAAKygD,iBAAiBmf,U,QAA5B,S,0BAIR5/D,KAAK6kD,mBAAmBlhC,UAjFF,kBAiFuC,SAACpf,GAC1D,EAAKugD,OAAOG,KAAI,gD,yDACJ1gD,EAAQ2gD,S,IACP,4B,0BACG3gD,EAAQk7D,aACR,GAAMvqD,QAAQK,IAAI,CACdvV,KAAKw/D,mBAAmB3lD,OACxB7Z,KAAKuuE,uBAAuB10D,OAC5B7Z,KAAKygD,iBAAiB5mC,KAAK7Z,KAAKygD,iBAAiBt4C,WAJrD,M,OACA,SAKAnI,KAAKu/D,kBAAkBG,gB,iBAE3B,Y,8BAKM,MAAlB7X,GACAA,EAAe1C,c,0BAK3B,YAAAzvC,YAAA,WACI1V,KAAK6kD,mBAAmBM,YAzGE,mBA4GxB,YAAAgb,qBAAN,W,0FAGI,OAFAngE,KAAKygD,iBAAiBpmB,YAAa,EACnCr6B,KAAKw/D,mBAAmBz1B,kBAAoB/pC,KAAKN,YAAYO,EAAE,eAC/D,GAAMD,KAAKygD,iBAAiBmf,U,cAA5B,SACA5/D,KAAKogE,eACLpgE,KAAKqgE,K,YAGH,YAAAoO,gBAAN,W,0FAGI,OAFAzuE,KAAKygD,iBAAiBpmB,YAAa,EACnCr6B,KAAKw/D,mBAAmBz1B,kBAAoB/pC,KAAKN,YAAYO,EAAE,mBAC/D,GAAMD,KAAKygD,iBAAiBmf,QAAO,SAAA7xD,GAAK,OAAAA,EAAExF,a,cAA1C,SACAvI,KAAKogE,eACLpgE,KAAKkuE,WAAY,EACjBluE,KAAKqgE,K,YAGH,YAAAP,cAAN,W,0FAII,OAHA9/D,KAAKygD,iBAAiBpmB,YAAa,EACnCr6B,KAAKygD,iBAAiBnB,SAAU,EAChCt/C,KAAKw/D,mBAAmBz1B,kBAAoB/pC,KAAKN,YAAYO,EAAE,eAC/D,GAAMD,KAAKygD,iBAAiBmf,OAAO,MAAM,I,cAAzC,SACA5/D,KAAKogE,eACLpgE,KAAKs/C,SAAU,EACft/C,KAAKqgE,K,YAGH,YAAAL,iBAAN,SAAuB79D,G,0FAGnB,OAFAnC,KAAKygD,iBAAiBpmB,YAAa,EACnCr6B,KAAKw/D,mBAAmBz1B,kBAAoB/pC,KAAKN,YAAYO,EAAE,cAC/D,GAAMD,KAAKygD,iBAAiBmf,QAAO,SAAA7xD,GAAK,OAAAA,EAAE5L,OAASA,M,cAAnD,SACAnC,KAAKogE,eACLpgE,KAAKmC,KAAOA,EACZnC,KAAKqgE,K,YAGH,YAAAuO,aAAN,SAAmBhqD,G,0FAIf,OAHA5kB,KAAKygD,iBAAiBpmB,YAAa,EACnCzV,EAAwB,SAAbA,EAAsB,KAAOA,EACxC5kB,KAAKw/D,mBAAmBz1B,kBAAoB/pC,KAAKN,YAAYO,EAAE,gBAC/D,GAAMD,KAAKygD,iBAAiBmf,QAAO,SAAA7xD,GAAK,OAAAA,EAAE6W,WAAaA,M,cAAvD,SACA5kB,KAAKogE,eACLpgE,KAAK4kB,SAAuB,MAAZA,EAAmB,OAASA,EAC5C5kB,KAAKqgE,K,YAGH,YAAAH,iBAAN,SAAuB1sC,G,0FAGnB,OAFAxzB,KAAKygD,iBAAiBpmB,YAAa,EACnCr6B,KAAKw/D,mBAAmBz1B,kBAAoB/pC,KAAKN,YAAYO,EAAE,oBAC/D,GAAMD,KAAKygD,iBAAiBmf,QAAO,SAAA7xD,GAAK,OAAmB,MAAnBA,EAAEqX,eACtCrX,EAAEqX,cAAchgB,QAAQouB,IAAiB,M,cAD7C,SAEAxzB,KAAKogE,eACLpgE,KAAKwzB,aAAeA,EACpBxzB,KAAKqgE,K,YAGT,YAAAC,iBAAA,SAAiBpzC,GACbltB,KAAKygD,iBAAiBvzB,WAAaA,EACnCltB,KAAKygD,iBAAiBv3C,OAAO,MAG3B,YAAAq3D,sBAAN,SAA4Bh6D,G,+GACC,SAAMvG,KAAKu1B,YAAYc,oB,cAA1CA,EAAmB,SACI,MAAzB9vB,EAAOhE,gBAA2B8zB,EAAlC,OACAr2B,KAAKyV,iBAAiBkB,KAAK,mBAC3B,K,cACgC,MAAzBpQ,EAAOhE,eAAP,MACK,GAAMvC,KAAKu1B,YAAYwf,gBAAgBxuC,EAAOhE,iB,OAC1D,GAAW,OADLijC,EAAM,YAC4B,MAApBA,EAAIuF,cAA6C,IAArBvF,EAAIuF,cAEhD,OADA/qC,KAAKyV,iBAAiBkB,KAAK,sBAAuB,CAAEpU,eAAgBgE,EAAOhE,iBAC3E,I,wBAIU,MAAdvC,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGTlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKwgE,oBAAoBrqD,gBAAgBJ,GAASK,UACzDwf,EAAiB51B,KAAKuW,MAAMZ,KAA2B,EAAAwpC,qBAAsBn/C,KAAKwgE,sBAEzEptC,SAAW7sB,EAAO3G,GAC7B6gE,GAAwB,EAC5B7qC,EAAe8qC,qBAAqB/8C,WAAU,WAAM,OAAA88C,GAAwB,KAC5E7qC,EAAe+qC,oBAAoBh9C,WAAU,WAAM,OAAA88C,GAAwB,KAC3E7qC,EAAe+rC,uBAAuBh+C,WAAU,WAAM,OAAA88C,GAAwB,KAE9EzgE,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,yDAC1B3jB,KAAKuW,MAAQ,KACTkqD,EACA,GAAMzgE,KAAKygD,iBAAiBplB,WAD5B,M,OACA,S,wBAEJolC,GAAwB,E,0BAIhC,YAAAoO,YAAA,SAAYtoE,GAAZ,WACsB,MAAdvG,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK8uE,cAAc34D,gBAAgBJ,GAASK,SACzD,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAAqB,EAAAo5D,eAAgB/uE,KAAK8uE,eAE5El5C,EAAexC,SAAW7sB,EAAO3G,GACjCg2B,EAAeo5C,eAAerrD,WAAU,gD,kDAEpC,OADA3jB,KAAKuW,MAAMU,QACX,GAAMjX,KAAKygD,iBAAiBplB,W,cAA5B,S,cAGJr7B,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,kCAC1B3jB,KAAKuW,MAAQ,K,cAIrB,YAAAqqD,sBAAA,SAAsBr6D,GAAtB,WACsB,MAAdvG,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK6gE,oBAAoB1qD,gBAAgBJ,GAASK,SAC/D,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAA2B,EAAAkqC,qBAAsB7/C,KAAK6gE,qBAExFjrC,EAAexC,SAAW7sB,EAAO3G,GACjCg2B,EAAekrC,mBAAmBn9C,WAAU,gD,kDAExC,OADA3jB,KAAKuW,MAAMU,QACX,GAAMjX,KAAKygD,iBAAiBplB,W,cAA5B,S,cAGJr7B,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,kCAC1B3jB,KAAKuW,MAAQ,K,cAIf,YAAA9M,UAAN,W,yFACsB,MAAdzJ,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGTlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKivE,sBAAsB94D,gBAAgBJ,GAASK,UAC3Dwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAAu5D,uBAAwBlvE,KAAKivE,wBAElBrqD,SAAW,KAC1BgR,EAAeu5C,cAAcxrD,WAAU,gD,kDAEnC,OADA3jB,KAAKuW,MAAMU,QACX,GAAMjX,KAAKw/D,mBAAmB4P,e,cAA9B,S,cAGJpvE,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,Q,WAIf,YAAA84D,WAAN,SAAiBzqD,G,yFACK,MAAd5kB,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGTlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKivE,sBAAsB94D,gBAAgBJ,GAASK,UAC3Dwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAAu5D,uBAAwBlvE,KAAKivE,wBAElBrqD,SAAWA,EAC1BgR,EAAeu5C,cAAcxrD,WAAU,gD,kDAEnC,OADA3jB,KAAKuW,MAAMU,QACX,GAAMjX,KAAKw/D,mBAAmB4P,e,cAA9B,S,cAEJx5C,EAAe05C,gBAAgB3rD,WAAU,gD,kDAErC,OADA3jB,KAAKuW,MAAMU,QACX,GAAMjX,KAAKw/D,mBAAmB4P,e,OAC9B,OADA,SACA,GAAMpvE,KAAK4uE,aAAa,S,cAAxB,SACA5uE,KAAKw/D,mBAAmBmP,iBAAmB,K,cAG/C3uE,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,Q,WAIrB,YAAAwqD,UAAA,sBACUC,EAAYhhE,KAAKihE,WAAW,MAGlC,GAFAD,EAAU7+D,KAAOnC,KAAKmC,KACtB6+D,EAAUp8C,SAA6B,SAAlB5kB,KAAK4kB,SAAsB,KAAO5kB,KAAK4kB,SACnC,MAArB5kB,KAAKwzB,aAAsB,CAC3B,IAAMhsB,EAAaxH,KAAKw/D,mBAAmBp4D,YAAYe,QAAO,SAAA4F,GAAK,OAAAA,EAAEnO,KAAO,EAAK4zB,gBAC7EhsB,EAAWrJ,OAAS,IACpB6iE,EAAUz+D,eAAiBiF,EAAW,GAAGjF,eACzCy+D,EAAU57C,cAAgB,CAACplB,KAAKwzB,iBAK5C,YAAAytC,WAAA,SAAW16D,GAAX,WACsB,MAAdvG,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK61B,sBAAsB1f,gBAAgBJ,GAASK,SACjE,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAAogB,iBAAkB/1B,KAAK61B,uBAoB3B,OAlBAD,EAAexC,SAAqB,MAAV7sB,EAAiB,KAAOA,EAAO3G,GACzDg2B,EAAeI,cAAcrS,WAAU,SAAO5V,GAAa,qC,kDAEvD,OADA/N,KAAKuW,MAAMU,QACX,GAAMjX,KAAKygD,iBAAiBplB,W,cAA5B,S,cAEJzF,EAAeK,gBAAgBtS,WAAU,SAAO5V,GAAa,qC,kDAEzD,OADA/N,KAAKuW,MAAMU,QACX,GAAMjX,KAAKygD,iBAAiBplB,W,cAA5B,S,cAEJzF,EAAeM,iBAAiBvS,WAAU,SAAO5V,GAAa,qC,kDAE1D,OADA/N,KAAKuW,MAAMU,QACX,GAAMjX,KAAKygD,iBAAiBplB,W,cAA5B,S,cAGJr7B,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,QAGVqf,GAGX,YAAAsrC,YAAA,SAAY36D,GACUvG,KAAKihE,WAAW16D,GACxBkzB,WAAY,GAG1B,YAAAmvC,UAAA,sBACsB,MAAd5oE,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKuvE,kBAAkBp5D,gBAAgBJ,GAASK,SAC7DpW,KAAKuW,MAAMZ,KAAyB,EAAA65D,mBAAoBxvE,KAAKuvE,mBAE7DvvE,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,SAIb,YAAA6pD,aAAR,WACIpgE,KAAK4kB,SAAW,KAChB5kB,KAAKwzB,aAAe,KACpBxzB,KAAKkuE,WAAY,EACjBluE,KAAKmC,KAAO,KACZnC,KAAKs/C,SAAU,GAGX,YAAA+gB,GAAR,SAAWha,QAAA,IAAAA,MAAA,MACY,MAAfA,IACAA,EAAc,CACV6nB,YAAWluE,KAAKkuE,WAAmB,KACnC/rE,KAAMnC,KAAKmC,KACXyiB,SAAU5kB,KAAK4kB,SACf4O,aAAcxzB,KAAKwzB,aACnB8rB,UAASt/C,KAAKs/C,SAAiB,OAIvCt/C,KAAKyrB,OAAOsc,SAAS,GAAI,CACrBsP,WAAYr3C,KAAK6iB,MACjBwjC,YAAaA,EACb8a,YAAY,K,iCApXXC,GAAc,6e,iCAAdA,EAAc,kD,OAAA,M,oBACZ,EAAAn3B,oBAAoB,G,oBACpB,EAAA7N,kBAAkB,G,oBAClB,EAAAyQ,wBAAwB,G,yBACD,EAAArW,kB,yBACE,EAAAA,kB,yBACA,EAAAA,kB,yBACR,EAAAA,kB,yBACM,EAAAA,kB,yBACM,EAAAA,mB,29ECxD5C,4BACI,iDACI,qDACI,yEAAqB,+CAAgB,EAAA2pC,yBAAhB,CAAuC,wCAAuB,EAAAsO,oBAA9D,CAAuC,0CACjC,EAAAzO,iBAAA,KADN,CAAuC,sCACY,EAAA4O,aAAA,QADnD,CAAuC,iCAEzC,EAAAnlE,cAFE,CAAuC,mCAEZ,EAAA4lE,WAAA,QAF3B,CAAuC,0CAGjC,EAAAnP,iBAAA,QAHN,CAAuC,0CAGmB,EAAAI,iBAAA,KAH1D,CAAuC,oCAItC,EAAAR,mBACtB,8CACJ,0CACA,sDACI,2DACI,4DACI,a,oBACA,iCACI,kFAKJ,uDACJ,mDACA,+DACI,uFACA,uDACA,yEAGJ,mDACJ,+CACA,0EAAmB,mDAAmB,EAAAmB,WAAA,KAAnB,CAAsC,2CAC7B,EAAAV,sBAAA,KADT,CAAsC,iCACiB,EAAAQ,cADvD,CAAsC,qCAEnC,EAAA8N,YAAA,KAFH,CAAsC,2CAEU,EAAAjO,sBAAA,KAFhD,CAAsC,qCAGnC,EAAAM,YAAA,MACtB,+CACJ,2CACA,uDACI,+DAWA,2EACA,iEACA,+DAYA,+DAWA,4DACI,gEACI,a,oBACA,4B,oBAEI,iEACJ,uDACJ,mDACA,gEACI,6EACJ,mDACJ,+CACJ,2CACJ,uCACJ,mCACA,wFACA,wFACA,wFACA,wFACA,wFACA,wFACA,mB,6BAjFoB,uHACsB,6EACJ,8CAQM,mEAAqC,gBAArC,CAAqC,qBAEsB,+CAYrD,qDAWpB,sDAEoB,0DAYA,yDAa9B,4HAEmC,wFAKhB,0C,6PDvCvC,GAIa,EAAAE,mB,68CE/Cb,KAEA,KAIA,MAEA,KACA,MACA,MACA,MACA,KACA,MACA,MAdA,IAkBA,SACA,SACA,S,oIAEA,aAQI,WAAoBhmD,EAAgC1b,EACxC20B,EAAiCzM,EACjCzO,EAAsC1D,EACtCssB,EAAkC7K,EAClCD,GAJQ,KAAA7b,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iBACjC,KAAAzO,gBAAsC,KAAA1D,mBACtC,KAAAssB,cAAkC,KAAA7K,gBAClC,KAAAD,gB,OAEN,YAAAnP,OAAN,W,uGACsB,SAAM9nB,KAAKmZ,cAAcopD,a,OAC3C,GADkB,SAEd,UAGJ,GAA2B,MAAvBviE,KAAK+nB,gBAAkD,KAAxB/nB,KAAK+nB,eAGpC,OAFA/nB,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBACrDD,KAAKN,YAAYO,EAAE,uBACvB,I,iBAOA,O,sBAHAD,KAAKmoB,YAAcnoB,KAAKyvE,cAAchvE,MAAK,SAAA0jB,GACvC,OAAO,EAAK/I,WAAW6tD,eAAe9kD,MAE1C,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,gBACnC2xB,EAAe,CACjBxkD,KAAM,UACNlB,MAAOjB,KAAKN,YAAYO,EAAE,cAC1B4d,KAAM7d,KAAKN,YAAYO,EAAE,sBACzBwtC,QAAS,MAEbztC,KAAK4nB,eAAeI,SAAS2+B,GAC7B3mD,KAAKyV,iBAAiBkB,KAAK,U,4DAIrB,YAAA84D,YAAd,W,oHACgB,SAAMzvE,KAAKmZ,cAAcu2D,U,OACtB,OADT/wE,EAAM,SACG,GAAMqB,KAAKmZ,cAAcq1B,WAAW7vC,I,OAChC,OADb4qB,EAAS,SACI,GAAMvpB,KAAKmZ,cAAc0vD,iB,cAAtCxnC,EAAa,SACfynC,EAA8B,KAChB,MAAdznC,EAAA,MACgB,GAAMrhC,KAAKmZ,cAAcktB,QAAQhF,EAAY9X,EAAO,K,OAApEu/C,EAAgB,S,iBAKS,OAHvB3kD,EAAU,IAAI,EAAA4kD,kBACZ1nC,WAA8B,MAAjBynC,EAAwBA,EAAcp0D,gBAAkB,KAC7EyP,EAAQxlB,IAAM4qB,EAAO,GAAG7U,gBACxB,EAAAyP,EAA6B,GAAMnkB,KAAKmZ,cAAc8O,aAAajoB,KAAK+nB,eAAgB,O,OAExF,OAFA,EAAQG,mBAAqB,SAE7B,GAAMloB,KAAK+hC,YAAY+F,UAAS,I,OAEhB,OAFhB,SAEgB,GAAM9nC,KAAKk3B,cAAc6iB,mB,OAAnC1yC,EAAU,SACPpJ,EAAI,E,wBAAGA,EAAIoJ,EAAQlJ,OACH,MAAjBkJ,EAAQpJ,GAAG2B,GACX,OAEW,GAAMI,KAAKk3B,cAAcmP,QAAQh/B,EAAQpJ,GAAIsrB,EAAO,KAJrC,O,QAIxBk5B,EAAS,SACft+B,EAAQ9c,QAAQlC,KAAK,IAAI,EAAA6jE,oBAAoBvmB,I,0BALbxkD,I,cAQpB,SAAM+B,KAAKi3B,cAAc8iB,mB,QAAnCpwC,EAAU,SACP1L,EAAI,E,0BAAGA,EAAI0L,EAAQxL,OACS,MAA7BwL,EAAQ1L,GAAGsE,eACX,OAEW,GAAMvC,KAAKi3B,cAAcoP,QAAQ18B,EAAQ1L,GAAIsrB,EAAO,KAJrC,O,QAIxBhjB,EAAS,SACf4d,EAAQxa,QAAQxE,KAAK,IAAI,EAAAq9C,oBAAoBj8C,I,0BALbtI,I,eAQpC,MAAO,CAAP,EAAOkmB,W,iCAxEFqrD,GAAkB,2U,iCAAlBA,EAAkB,w/B,GAAA,MC1B/B,4BACI,iDACI,wDAAkC,2CAAY,EAAA1nD,YAC1C,yDACI,4DAA+C,a,oBAAgC,iBAC/E,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,2DAAG,a,wCACC,2BACmB,a,oBAAsB,iBAC7C,mDACA,wEAA4B,a,oBAAuC,iBACnE,kEAA4B,a,oBAAuB,iBACnD,kEACI,uEADJ,iBAEJ,+CACA,4DACI,mEACI,6D,oBACA,kEAAM,a,oBAAgC,iBAC1C,mDACA,mEAA6E,a,oBAAkB,iBACnG,+CACJ,2CACJ,uCACJ,mCACA,mB,4BA3BgE,0DAED,+EACU,oFAKtD,yKAEoB,qEAEK,sFACA,sEAExB,wDAGqD,kDACpB,+EAC3B,+EAEmE,mE,sQDF7F,GAIa,EAAA0nD,sB,8ZE1Bb,KAEA,MACA,KACA,KAJA,IAMA,S,+HCgBoB,mCAAiC,yF,mBAG7B,+DACA,+D,mBAEJ,sD,mDALI,oEAAoD,mCAA8B,gCAE7C,gDAEjC,6EADyC,mCDhBrE,kBAKI,WAAYt4C,EAA8Bx3B,EACtCyb,G,OACA,YAAM+b,EAAex3B,EAAayb,IAAqB,K,OAHnB,O,iCAA/B+zD,GAAsB,sH,iCAAtBA,EAAsB,ywC,GAAA,MCdnC,4BACI,iDACI,wDAAkC,2CAAY,EAAApnD,YAC1C,yDACI,4DAAgD,aAAS,iBACzD,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,iEAAkB,a,oBAAiB,iBACnC,kEAA8D,oEAA9D,iBAEJ,+CACA,4DACI,mEACI,6D,oBACA,kEAAM,a,oBAAiB,iBAC3B,mDACA,mEACyB,a,oBAAmB,iBAC5C,gEACI,0EAOJ,mDACJ,+CACJ,2CACJ,uCACJ,mCACA,mB,4BAhCgE,0DAEA,4CACS,oFAKvC,iEAC4C,qDAIL,kDACpB,+EAC3B,gEAGe,kEAGkB,iD,iODb3D,CAI4C,0BAA/B,EAAAonD,0B,8ZEdb,KAKA,MACA,MACA,KACA,KACA,KATA,IAaA,S,2HCPoB,4BAAsB,YAAe,kB,6BAAf,mD,sBAM9B,6BACI,Y,mBACJ,kB,MADI,qH,yBAQQ,gCAAyD,YAAU,kB,uBAA3B,6BAAiB,4C,mDAK7D,6BACI,yEAAsB,yFAAmB,MACrC,Y,mBACJ,iBACA,yEAAsB,yFAAmB,MACrC,Y,mBACJ,iBACJ,sD,MALQ,kIAGA,qI,sBAIZ,0BACI,Y,mBACJ,kB,MADI,6H,mDAII,4BAAiD,4GAC7C,yEACI,gFAAuB,6FAAvB,iBAEJ,8DACA,sEACI,YACJ,iBACJ,0D,oCANuD,4EAAxB,kCAIvB,mH,yBARhB,+BACI,iEACI,wEASJ,sDACJ,mD,8BAVY,sD,mDAzBhB,6BACI,yDAAG,Y,mBAAsB,iBACzB,8DACI,oEAA0B,Y,oBAAyB,iBACnD,uEAAgD,0GAA4B,wFAExE,6EACJ,uDACJ,mDACA,gEACI,gEAAI,a,oBAAwB,iBAC5B,uEAQJ,mDACA,iEAGA,oEAaJ,+C,gCAnCO,mEAE2B,wEACsB,wDAEpC,uDAIR,uEACwB,wEAS3B,0EAG4C,yE,8DAejD,gCAEI,2D,mBACA,gEAAM,Y,mBAAiB,iBAC3B,mD,gDAJgE,+CAAqC,4CAEhE,6EAC3B,+D,sBAEV,2BAEI,Y,mBACJ,kB,MADI,yHD7CpB,kBAKI,WAAY93C,EAAsCjc,EAC9Czb,EAA0B61B,EAC1B0B,G,OACA,YAAMG,EAAmBjc,EAAsBzb,EAAa61B,EAAa0B,IAAc,K,OAJ3D,OAOhC,YAAAvhB,YAAA,WACI1V,KAAK66B,WAAU,IAGnB,YAAA0V,MAAA,SAAMxiC,EAAmB0tB,GACpB1tB,EAAU6tB,QAAoB,MAAVH,GAAmB1tB,EAAU6tB,QAAUH,GAGhE,YAAAZ,UAAA,SAAUY,GAAV,YACwBA,EAASz7B,KAAKoH,YAAcpH,KAAKgkE,sBACzC5/D,SAAQ,SAAA2J,GAAK,SAAKwiC,MAAMxiC,EAAG0tB,O,iCAjBlCszC,GAAc,kM,iCAAdA,EAAc,qkDCnB3B,4BACI,iDACI,wDAAkC,2CAAY,EAAAjnD,YAC1C,yDACI,4DACI,a,oBACA,iCACJ,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,6DAGA,+DAqCA,4DACI,sEAKA,gEAIA,mEACyB,a,oBAAmB,iBAChD,+CACJ,2CACJ,uCACJ,mCACA,mB,MAlEgE,0DAG5C,mHACO,6CAE8C,oFAIrC,8EAGA,4EAuCmB,4EAKnC,8EAIqB,oE,+WDhDzC,CAIoC,kBAAvB,EAAAinD,kB,8EEnBb,S,eAEA,2B,wCAIaY,I,iCAAAA,EAAiB,4bCN9B,4BACI,iDACI,8CACA,mDAAsC,6BAAc,iBACxD,sCACA,kDACQ,a,oBACA,2BAAmF,a,oBACzE,iBAAI,a,oBAEd,2BAAsE,a,oBAAoC,iBAAI,a,oBAE9G,2BAAmB,a,oBAAkC,iBAAI,uBACjE,iBACJ,mCACA,mB,MATY,uHACmF,iFACrE,gHAEwD,mFAAwC,+GAE3F,mF,uCDV/B,GAIa,EAAAA,qB,68CENb,KAEA,KACA,MAEA,KACA,KANA,I,oDAQA,aAOI,WAAoBv0D,EAAgC1b,EACxC20B,EAAiCzM,GADzB,KAAAxM,aAAgC,KAAA1b,cACxC,KAAA20B,YAAiC,KAAAzM,iB,OAEvC,YAAAjR,KAAN,W,0FACI,GAA0B,MAAtB3W,KAAKi7B,cACL,U,iBAIA,O,sBADAj7B,KAAKi7B,cAAgBj7B,KAAKob,WAAWw0D,yBACrC,GAAM5vE,KAAKi7B,e,cAAX,SACAj7B,KAAKq0B,UAAUS,WAAWC,KAAK,CAAEC,OAAQ,4BACzCh1B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,8B,iDAErED,KAAKi7B,cAAgB,K,6CAhBhB40C,GAAoB,iJ,iCAApBA,EAAoB,6Z,GAAA,MCZjC,4BACI,iDACI,8CAA0D,Y,mBAC9D,iBACA,iDACI,kDAAG,a,oBAA4B,iBAC/B,4DACgE,wCAAS,EAAAl5D,UACrE,oD,oBACA,0DACI,a,oBACJ,iBACJ,2CACJ,uCACJ,mCACA,mB,6BAbkE,mFAGvD,0EAEC,4DAA8B,sBACG,+EAE7B,8G,yEDFhB,GAIa,EAAAk5D,wB,68CEZb,KACA,KAMA,KAEA,KACA,KAVA,I,mCAYA,aAEI,WAAoBt6C,EAAkC9J,EAC1C7D,EAAwCloB,GADhC,KAAA61B,cAAkC,KAAA9J,SAC1C,KAAA7D,iBAAwC,KAAAloB,c,OAE9C,YAAAowE,YAAN,SAAkBjtD,G,gGACF,SAAM7iB,KAAKu1B,YAAYwf,gBAAgBlyB,EAAMa,OAAOnhB,iB,OAChE,OAAW,OADLijC,EAAM,WAERxlC,KAAKyrB,OAAOsc,SAAS,CAAC,MACf,CAAP,GAAO,IAENvC,EAAIigB,SAAYjgB,EAAIhR,QAMlB,CAAP,GAAO,IALHx0B,KAAK4nB,eAAeI,SAAS,QAAS,KAAMhoB,KAAKN,YAAYO,EAAE,2BAC/DD,KAAKyrB,OAAOsc,SAAS,CAAC,MACf,CAAP,GAAO,Y,iCAbNgoC,GAAwB,wG,oCAAxBA,EAAwB,QAAxBA,EAAwB,O,EADrC,GACa,EAAAA,4B,68CCbb,KACA,KAMA,KAPA,IASA,S,qBAEA,aAEI,WAAoBx6C,EAAkC9J,GAAlC,KAAA8J,cAAkC,KAAA9J,S,OAEhD,YAAAqkD,YAAN,SAAkBjtD,G,kGACF,SAAM7iB,KAAKu1B,YAAYwf,gBAAgBlyB,EAAMa,OAAOnhB,iB,OAGhE,OAHMijC,EAAM,UAIoD,KAH1D0F,EAA4B,MAAdroB,EAAM1f,KAAe,KAAO0f,EAAM1f,KAAK+nC,aAG1C9lC,QAAQ,EAAA4qE,YAAYC,uBAAgCzqC,EAAIygB,0BACd,IAAtD/a,EAAY9lC,QAAQ,EAAA4qE,YAAYE,kBAA2B1qC,EAAIsgB,qBACN,IAAzD5a,EAAY9lC,QAAQ,EAAA4qE,YAAYG,qBAA8B3qC,EAAIugB,wBACd,IAApD7a,EAAY9lC,QAAQ,EAAA4qE,YAAYI,gBAAyB5qC,EAAIwgB,mBACF,IAA3D9a,EAAY9lC,QAAQ,EAAA4qE,YAAYK,uBAAgC7qC,EAAI2U,0BACJ,IAAhEjP,EAAY9lC,QAAQ,EAAA4qE,YAAYM,4BAAqC9qC,EAAImgB,+BACtB,IAAnDza,EAAY9lC,QAAQ,EAAA4qE,YAAYO,eAAwB/qC,EAAIogB,kBACH,IAAzD1a,EAAY9lC,QAAQ,EAAA4qE,YAAYQ,qBAA8BhrC,EAAIigB,UACb,IAArDva,EAAY9lC,QAAQ,EAAA4qE,YAAYS,iBAA0BjrC,EAAIqgB,oBACZ,IAAlD3a,EAAY9lC,QAAQ,EAAA4qE,YAAYU,cAAuBlrC,EAAIkgB,eAErD,CAAP,GAAO,IAGX1lD,KAAKyrB,OAAOsc,SAAS,CAAC,iBAAkBvC,EAAI5lC,KACrC,CAAP,GAAO,Y,iCAvBF+wE,GAA4B,iD,oCAA5BA,EAA4B,QAA5BA,EAA4B,O,EADzC,GACa,EAAAA,gC,8ECZb,SAAYX,GACR,mDACA,yCACA,+CACA,qCACA,mDACA,6DACA,mCACA,+CACA,uCACA,iCAVJ,CAAY,EAAAA,cAAA,EAAAA,YAAW,M,68CCAvB,KACA,KAKA,KACA,OAPA,I,8BASA,aAEI,WAAoBpzC,EAAkDrH,EAC1D9J,GADQ,KAAAmR,sBAAkD,KAAArH,cAC1D,KAAA9J,S,OAEN,YAAAqkD,YAAN,W,0FACqB,SAAM9vE,KAAKu1B,YAAYixB,mB,cAAvB,SAEE,GAAMxmD,KAAK48B,oBAAoBg0C,YAD9C,M,OAOA,OANe,SAEX5wE,KAAKyrB,OAAOsc,SAAS,CAAC,SAEtB/nC,KAAKyrB,OAAOsc,SAAS,CAAC,UAEnB,CAAP,GAAO,G,OAGX,MAAO,CAAP,GAAO,W,iCAhBF8oC,GAAkB,mF,oCAAlBA,EAAkB,QAAlBA,EAAkB,O,EAD/B,GACa,EAAAA,sB,68CCVb,KACA,KAOA,MACA,KACA,OAVA,I,sCAYA,aAEI,WAAoBj0C,EAAkDrH,EAC1D9J,EAAwBhW,GADhB,KAAAmnB,sBAAkD,KAAArH,cAC1D,KAAA9J,SAAwB,KAAAhW,mB,OAE9B,YAAAq6D,YAAN,SAAkBjtD,EAA+BiuD,G,0FAC5B,SAAM9wE,KAAKu1B,YAAYixB,mB,OACxC,OADiB,SAMF,GAAMxmD,KAAK48B,oBAAoBg0C,aAJ1C5wE,KAAKyV,iBAAiBkB,KAAK,eACpB,CAAP,GAAO,I,OAIX,OADe,UAEQ,MAAfm6D,GACA9wE,KAAKyV,iBAAiBkB,KAAK,YAAa,CAAEpR,IAAKurE,EAAYvrE,MAE/DvF,KAAKyrB,OAAOsc,SAAS,CAAC,QAAS,CAAEse,YAAa,CAAE0qB,iBAAiB,KAC1D,CAAP,GAAO,IAGJ,CAAP,GAAO,W,iCApBFC,GAAgB,kH,oCAAhBA,EAAgB,QAAhBA,EAAgB,O,EAD7B,GACa,EAAAA,oB,68CCbb,WAaA,GANA,KAEA,KACA,MACA,MAEA,QACA,SAIA,QAEA,SACA,S,iJCRwB,6BACI,mE,mBACA,2EAAsB,Y,mBAAmB,iBAC7C,oE,MAF2C,4EACjB,iE,sBAE1B,6BACI,mE,mBAEA,2EAAsB,Y,mBAAwB,iBAClD,oE,MAH2C,iFAEjB,sE,mDAM1B,6BACI,6E,mBAGI,uEACJ,8DACA,0EACI,6EAA+C,sIAC3C,6EACA,a,oBACJ,iBACJ,+DACJ,2D,MATQ,oFAMI,uJ,mDA5BpB,yBACI,gEACI,2EACJ,sDACA,gEACI,oEAAyB,mH,oBAAwD,aAAU,iBAC3F,kFAIA,kFAKA,+DACA,uEAAO,aAAc,iBACzB,uDACA,mEACI,2EAaJ,uDACJ,mD,+CA/BwB,wCAGmC,+EAA8B,2CACnE,sEAIA,qDAMP,+CAG+B,sD,yBAtB1D,6BACI,uDACI,yDACI,+DAkCJ,8CACJ,0CACJ,gD,6BApCgB,kD,kCDgBpB,iBAaI,WAAoB/5C,EAAsC9d,EAC9C3D,EAA4DiW,EAC5D5I,EAA+BzH,GAFvB,KAAA6b,gBAAsC,KAAA9d,gBAC9C,KAAA3D,2BAA4D,KAAAiW,SAC5D,KAAA5I,QAA+B,KAAAzH,aAN3C,KAAAzR,QAAwB,GAEhB,KAAA4M,MAAwB,K,OAMhC,YAAArV,SAAA,sBACIlB,KAAK6iB,MAAMa,OAAOC,WAAU,SAAA2iC,GACxB,GAAkB,MAAdA,EAAQ1mD,GACR,OAAO,EAAK6rB,OAAOsc,SAAS,CAAC,8BAGjC,EAAKnoC,GAAK0mD,EAAQ1mD,GAElB,EAAKia,WAIb,YAAA8b,aAAA,SAAapvB,GAAb,WACsB,MAAdvG,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK61B,sBAAsB1f,gBAAgBJ,GAASK,SACjE,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAAgC,EAAAs7D,0BAA2BjxE,KAAK61B,uBASlG,OAPAD,EAAexC,SAAqB,MAAV7sB,EAAiB,KAAOA,EAAO3G,GACzDg2B,EAAervB,OAASA,EAExBvG,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,QAGVqf,GAGL,YAAA/b,KAAN,W,kGACqB,SAAM7Z,KAAKob,WAAW81D,wBAAwBlxE,KAAKJ,K,OACrD,OADTgB,EAAW,SACjB,EAAAZ,KAAe,GAAMA,KAAK05C,cAAc94C,I,cAAxC,EAAK+I,QAAU,S,YAGb,YAAAwnE,gBAAN,SAAsB5qE,G,uFACA,MAAdvG,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGTlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAKwgE,oBAAoBrqD,gBAAgBJ,GAASK,SACxCpW,KAAKuW,MAAMZ,KAA0C,EAAAy7D,oCAAqCpxE,KAAKwgE,qBAEvGj6D,OAASA,EAExBvG,KAAKuW,MAAMQ,SAAS4M,WAAU,gD,kCAC1B3jB,KAAKuW,MAAQ,K,wBAIL,YAAAmjC,cAAhB,SAA8B94C,G,wGAIL,OAHf+I,EAAU/I,EAAS+I,QAEnB0nE,EAA2B,GACZ,GAAMrxE,KAAKmZ,cAAcm4D,WAAW1wE,EAASopE,e,OAUlE,OAVMuH,EAAe,SACfC,EAAY,IAAI,EAAAnpC,mBAAmBkpC,GAEnCz8D,EAAkB,GACxBnL,EAAQvF,SAAQ,SAAAqtE,GACZ,IAAMC,EAAa,IAAI,EAAAtqD,WAAWqqD,GAC5BlrE,EAAS,IAAI,EAAAikB,OAAOknD,GAC1B58D,EAAS3P,KAAKoB,EAAO8O,QAAQm8D,GAAW/wE,MAAK,SAAAsN,GAAK,OAAAsjE,EAAWlsE,KAAK4I,UAGtE,GAAMmH,QAAQK,IAAIT,I,OAGlB,OAHA,SACAu8D,EAAW70C,KAAKx8B,KAAKi3B,cAAc06C,4BAE5B,CAAP,EAAON,W,iCAlFFO,GAA4B,kO,iCAA5BA,EAA4B,8D,OAAA,M,yBACD,EAAAp7C,kB,yBACF,EAAAA,mB,yoCC7BtC,4BACI,8CAAI,Y,mBAAkB,iBAC1B,kCACA,6CACI,6DAwCJ,mCACA,uFACA,uFACA,mB,MA9CQ,+DAGU,uD,mJDmBlB,GAIa,EAAAo7C,gC,8EEzBb,mBAAa,EAAAC,mB,8ECFb,mBAAa,EAAAC,mB,8ECAb,MAII,SAAYhoE,EAAkB8pB,GAC1B5zB,KAAK8J,SAAWA,EAChB9J,KAAK4zB,KAAOA,GANP,EAAAm+C,4B,yxDCAb,KAEA,MACA,MACA,KACA,KACA,KANA,IAUA,S,oH7NJoB,4BAAsB,YAAe,kB,6BAAf,mD,qBAWV,sB,qBACA,sB,mDAMI,6BACI,oFAEI,mF,mBAEA,2FAAsB,Y,mBAA8B,iBAAO,iBAC/D,8FACI,+HACiC,a,oBAAgB,iBACzD,uE,mFALY,uFACkB,2EAEa,qEAAuC,sBACzC,+D,mDAKjD,4BACI,oFACuC,6H,mBAEnC,2EAEA,2E,mBAEJ,mEACJ,+D,kFAPQ,mFACA,oDAAqC,sBACA,gDAGjC,6EADyC,mC,mDA5BzD,yBACI,yEACI,8EACA,8EAEJ,8DACA,yEACI,gFACI,kFAAyB,+GAAsB,aAAc,iBAC7D,wFAUJ,mEACA,+EAAO,aAAc,iBACzB,+DACA,+EAUJ,2D,+CA9B4C,mDACS,kDAKM,+CAC1C,+DAWF,+CAEoB,iD,yBAxB3C,+BACI,iEACI,wEAiCJ,sDACJ,mD,6BAlCY,6D,sBAmCZ,0BACI,8DAAI,Y,mBAA0B,iBAC9B,oEAAkC,Y,mBAAiB,iBACnD,gEACA,sEAAoC,a,oBAAwB,iBAChE,oD,MAJQ,uEAC8B,8DAEE,uE,yBAIxC,gCACI,2D,mBACA,gEAAM,Y,mBAAiB,iBAC3B,mD,8CAHyD,mCACpB,6EAC3B,+D6NhD1B,kBAQI,WAAY96C,EAA8Bv3B,EACtCyZ,EAA8Boc,EAC9Bpa,GAFJ,MAGI,YAAM8b,EAAev3B,EAAayZ,EAAeoc,EAAapa,EAAsB1Q,SAAO,K,OAN/F,EAAAmtB,UAAW,EACX,EAAAqqC,sBAAuB,E,SAF8B,OAUrC,YAAAv3D,KAAhB,W,oFAIU,YAAAwxB,sBAAV,SAAgCvS,GAC5B,OAAO,G,iCAfFynD,GAAmC,8L,iCAAnCA,EAAmC,woE7NhBhD,4BACI,iDACI,wDAAkC,2CAAY,EAAAtpD,YAC1C,yDACI,4DACI,a,oBACA,iCACJ,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,oEAqCA,kEAMJ,+CACA,4DACI,qEAIA,mEAA6E,a,oBACjE,iBAChB,+CACJ,2CACJ,uCACJ,mCACA,mB,MAlEgE,0DAG5C,yHACO,6CAE8C,oFAKb,uEAqCvC,gDAQ8E,gDAIN,mE,oK6NlD7F,CAIyD,wBAA5C,EAAAspD,uC,yxDChBb,KAEA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,KACA,MACA,MACA,OACA,KAdA,IAkBA,S,4NrTPgB,qCACI,Y,mBACJ,kB,MADI,yI,yBAOQ,gCAA0D,YAAU,kB,uBAA9B,gCAAoB,4C,mDALtE,6BACI,kEACI,wEAAkB,Y,mBAA2B,iBAC7C,yEAA8B,wGAE1B,gFACJ,2DACJ,uDACJ,mD,iCAN0B,wEACY,qDAAyB,+BAE3C,sD,yBAcR,gCAAmD,YAAU,kB,uBAA3B,6BAAiB,4C,mDAJ3D,6BACI,wEAAoB,Y,mBAAmB,iBACvC,yEAAoC,4GAEhC,+EACJ,0DACJ,uD,iCALwB,gEACgB,yDAA6B,2CAErD,kD,mDAaJ,6BACI,qFAEI,mHAAqC,WAAY,e,mBACjD,+EACJ,sEACJ,kE,MAJQ,0F,mDAWJ,2BACiD,oG,mBAE7C,+EACJ,sE,KAHI,8E,mDAFR,6BACI,kFAKA,mFAC8C,iG,mBAE1C,+EAEA,gF,oBAEJ,uEACJ,mE,oDAXQ,0DAIA,0FACA,oDAC0C,gDAGD,8EAArC,mC,mDAqCZ,2BAA0D,mGAEtD,Y,mBACJ,iB,MADI,iJ,mDAEJ,2BACI,uGAEA,Y,mBACJ,iB,MADI,iJ,yBAVR,0BACI,yE,mBAEA,8EAIA,8EAKJ,+D,8BAXyC,0FAGjC,mGAKA,2K,uGAIR,6BACI,+EACI,mFAAuB,YAAW,iBAClC,kGACI,iFACI,0FAEA,0FACJ,2EACJ,uEACJ,mEACA,qG,oBAC8C,aAAqB,iBACnE,mFAEI,sGAAwB,uBAAwB,W,oBAChD,6EACJ,mEACJ,+D,iCAhB+B,8CAIX,yEAMZ,2FAA0C,wDAE1C,mG,yBA2CI,gCAA8D,YAC9D,kB,uBAD0C,gCAAoB,6F,mDAGlE,gCAA4D,gI,mBAExD,+EACJ,sE,KAFI,oE,mDAvChB,6BACI,0EACI,gFAA2B,Y,mBAAkC,iBAC7D,8EACI,qFACiC,yF,oBADjC,iBAIA,oFACI,2FACuC,6G,oBAEnC,qFACJ,2EACA,2FACwC,2GAAqB,MAAO,U,oBAChE,qFACJ,2EACJ,uEACJ,mEACJ,+DACA,4EACI,gFACI,sFACI,a,oBACJ,iBACA,kF,oBAEI,iFACJ,uEACJ,mEACA,gFACI,uFACmC,2FAAqB,+GAEpD,6FAEJ,uEACA,yFAIJ,mEACJ,+DACJ,2D,yDA1Ce,+DAAoB,0EAEK,8DACxB,yDAEA,2FAF6B,8BAAmB,2CAK5C,qFACA,sCAIA,sFAQD,qEACH,iKAG+B,wFAKU,mEACzC,2DAA+B,gCAAqB,2CAE5C,yDAI2B,sE,yBAxCvD,6BACI,0EA6CJ,gE,8BA7CqB,2DAA2E,mC,mDA8ChG,2BAAyB,0FAErB,+DAA2D,Y,mBAC/D,iB,MAD+D,+F,yIArJnE,6BACI,kEACI,sEACI,4EAA2B,Y,mBAAqB,iBAChD,2EACI,kFACI,kHADJ,iBAGA,kFAOJ,+DACJ,2DACA,wEACI,4EACI,kFAA2B,a,oBAAqB,iBAChD,oFAeJ,+DACA,4EACI,kFAEI,kHAFJ,iBAIA,gFACI,uFACiD,kG,oBAE7C,iFAEJ,uEACA,uFAEI,mHAAqC,WAAY,e,oBAEjD,iFACJ,uEACJ,mEACJ,+DACJ,2DACJ,uDACA,oEACI,wEACI,8EAAuB,a,oBAAiC,iBACxD,8EACwC,8GADxC,iBAGJ,2DACA,wEACI,8EAaA,gFAmBJ,2DACJ,uDACA,+EA+CA,oEAIJ,4D,iCApJuC,mEAGnB,+DAAmC,2CAEP,wDAWL,oEACC,qEAkBxB,gFACA,gDAAmC,mEAI/B,+FACA,gDAEI,8FAGJ,2FAEA,gDASW,iFACD,uFACkB,4CAA+B,mEAGjB,yEACjD,sEAaA,oEAqBC,2DAgDV,sE,0BAiBQ,gCAA+D,YAAU,kB,uBAA9B,gCAAoB,4C,0BAwB/D,gCAAkE,YAAU,kB,uBAA9B,gCAAoB,4C,oDApClF,6BACI,kEACI,sEACI,4EAAgC,Y,mBAA2B,iBAC3D,6EACmC,uHADnC,iBAGJ,2DACA,wEACI,8EAAuB,a,oBAAkB,iBACzC,+EACI,8GACA,sFACJ,+DACJ,2DACJ,uDACA,oEACI,wEACI,8EAAwB,a,oBAAmB,iBAC3C,4EACI,kFACI,+GADJ,iBAGA,gFACI,uFAEI,gHAAkC,SAAU,a,oBAC5C,iFACJ,uEACJ,mEACJ,+DACJ,2DACA,wEACI,8EAA0B,a,oBAA4B,iBACtD,+EACI,iHACA,sFACJ,+DACJ,2DACA,wEACI,8EAAyB,a,oBAA2B,iBACpD,8EACI,gH,oBADJ,iBAGJ,2DACJ,uDACA,oEACI,wEACI,8EAAsB,a,oBAAyB,iBAC/C,4EACI,kFAEI,6GAFJ,iBAIA,gFACI,uFACiD,kG,oBAC7C,iFAEJ,uEACA,uFAEI,8GAAgC,eAAgB,oB,oBAChD,iFACJ,uEACJ,mEACJ,+DACJ,2DACJ,wDACJ,6D,iCAlE4C,yEAEG,oEAAwC,2CAIpD,iEAEnB,2DAA+B,2CACvB,0DAMY,mEAGhB,4DAAgC,2CAI5B,yFAQc,4EAEtB,8DAAkC,2CAC1B,6DAIa,0EAEa,4FAAlC,8CAAiC,2CAMf,yEAGd,gFACA,2CAA8B,2CAI1B,+FAEI,8FAGJ,4F,0BAgBR,gCAAmE,YAAU,kB,uBAA9B,gCAAoB,4C,oDANnF,6BACI,kEACI,sEACI,6EAAqB,Y,mBAAkB,iBACvC,+EACI,kHACA,sFACJ,+DACJ,2DACJ,uDACA,oEACI,wEACI,+EAAyB,a,oBAAsB,iBAC/C,+EACI,sHADJ,iBAEJ,2DACA,wEACI,+EAA0B,a,oBAAuB,iBACjD,+EACI,uHADJ,iBAEJ,2DACA,wEACI,+EAAwB,a,oBAAqB,iBAC7C,+EACI,qHADJ,iBAEJ,2DACJ,uDACA,oEACI,wEACI,+EAAwB,a,oBAAqB,iBAC7C,+EACI,qHADJ,iBAGJ,2DACA,wEACI,+EAAuB,a,oBAAoB,iBAC3C,+EACI,oHADJ,iBAEJ,2DACJ,uDACA,oEACI,wEACI,+EAAmB,a,oBAAgB,iBACnC,+EACI,gHADJ,iBAGJ,2DACA,wEACI,+EAA8B,a,oBAA2B,iBACzD,+EACI,2HADJ,iBAGJ,2DACA,wEACI,+EAA6B,a,oBAA0B,iBACvD,+EACI,0HADJ,iBAGJ,2DACJ,uDACA,oEACI,yEACI,iFAAqB,c,qBAAkB,iBACvC,iFACI,kHADJ,iBAGJ,4DACA,0EACI,iFAAqB,c,qBAAkB,iBACvC,iFACI,kHADJ,iBAEJ,4DACJ,wDACA,sEACI,0EACI,iFAAwB,c,qBAAqB,iBAC7C,iFACI,qHADJ,iBAEJ,4DACA,0EACI,iFAAwB,c,qBAAqB,iBAC7C,iFACI,qHADJ,iBAEJ,4DACJ,wDACA,sEACI,0EACI,iFAAwB,c,qBAAqB,iBAC7C,iFACI,qHADJ,iBAEJ,4DACA,0EACI,iFAAoB,c,qBAAqB,iBACzC,iFACI,iHADJ,iBAEJ,4DACJ,wDACA,sEACI,0EACI,iFAAqB,c,qBAA0B,iBAC/C,iFACI,kHADJ,iBAEJ,4DACA,0EACI,iFAA0B,c,qBAA0B,iBACpD,iFACI,uHADJ,iBAEJ,4DACJ,wDACA,sEACI,0EACI,iFAAuB,c,qBAAoB,iBAC3C,iFACI,oHADJ,iBAEJ,4DACJ,wDACJ,6D,iCAjHiC,gEAEjB,+DAAmC,2CAC3B,8DAMa,sEAErB,mEAAuC,2CAGjB,sEAEtB,oEAAwC,2CAGpB,oEAEpB,kEAAsC,2CAKlB,oEAEpB,kEAAsC,2CAInB,mEAEnB,iEAAqC,2CAKtB,+DAEf,6DAAiC,2CAIP,0EAE1B,wEAA4C,2CAInB,yEAEzB,uEAA2C,2CAM1B,kEAEjB,+DAAmC,2CAIlB,kEAEjB,+DAAmC,2CAKf,qEAEpB,kEAAsC,2CAGlB,qEAEpB,kEAAsC,2CAKlB,qEAEpB,kEAAsC,2CAGtB,qEAEhB,8DAAkC,2CAKjB,0EAEjB,+DAAmC,2CAGb,0EAEtB,oEAAwC,2CAKrB,oEAEnB,iEAAqC,4C,oDA0BrC,6BACI,qFACI,2GADJ,iBAGA,kFACI,yFAEI,6HAAuB,QAAS,Y,mBAChC,mFACJ,2EACJ,uEACJ,mE,6EAVW,gEAAsD,oDACzD,gCAAqB,2CAIjB,uF,oDAMZ,6BACI,qFAC4B,2GAD5B,iBAIA,kFACI,yFACiD,uI,mBAE7C,wFAEA,+EACJ,2EACA,2FAEI,iIAAuB,QAAS,EAAF,0BAAgC,UAAY,Y,oBAE1E,qFACJ,2EACJ,uEACJ,mE,6EAnBW,gEAAqB,8DACxB,oDAAwB,gCAAqB,gFAKzC,8FACA,6DAEI,wFAIJ,wFAEA,8D,oDAMR,gCACI,2GADJ,iB,6EAAO,iDAAqB,oDACxB,gCAAqB,4C,oDAG7B,gCAA4D,kI,mBAExD,2EACJ,kE,KAFI,oE,uBAGJ,iC,mBAEI,4EACJ,mE,KAFI,wE,oDA1DhB,8BACI,sEACI,0EACI,gFAA4B,Y,mBAAiB,iBAC7C,8E,oBAEI,6EACJ,mEACJ,+DACA,+EAA8D,0FAA9D,iBAEJ,2DACA,wEACI,8EAA6B,a,oBAAkB,iBAC/C,4EACI,qFAYA,sFAqBA,iFACI,0FAGJ,mEACA,sFAIA,uFAIJ,+DACJ,2DACJ,uD,yDA5DmB,gEAAqB,+DAEO,wFAIhC,+DAAgC,mDAAuB,+BAAoB,2CAI3E,iEAAsB,iEAEA,8DAYA,gEAuBK,iEAIS,qEAII,sE,oDA3D3D,8BAAiB,uGACb,wEAgEJ,kD,iCAhE6B,uDAAuE,mC,oDAiEpG,4BAAyB,4FAErB,2DAA2D,Y,mBAC/D,iB,MAD+D,mG,0BAMnD,gCAAkE,YAAU,kB,uBAA9B,gCAAoB,4C,oDAJ9E,6BACI,mEACI,yEAA0C,Y,mBAAiB,iBAC3D,0EAAmE,yGAC/D,iFACJ,2DACJ,uDACJ,mD,iCALkD,8DACyB,sDACvD,8D,0BAYJ,gCAA+D,YAAU,kB,uBAA9B,gCAAoB,4C,oDAR/E,6BACI,iEAAiB,Y,mBAAsB,iBACvC,kEACI,uEACI,8EAA4B,a,oBAA4B,iBACxD,gFACI,kHAAmC,2FAEnC,sFACJ,+DACJ,2DACJ,uDACJ,4D,iCAXqB,mEAGmB,0EAExB,+DAAmC,2CAE3B,2D,uBAOpB,0BACI,Y,mBACJ,kB,MADI,qI,oDAGA,8BACI,6EAAgD,6FAAhD,iBAGA,6EAAuD,YAAU,iBACrE,0D,yDAHQ,iEAAsB,6DADsB,kCAAuB,2CAGvC,kEAAuB,4C,0BAL/D,6BACI,0EAMJ,gE,8BAN4B,sD,0BANhC,6BACI,iEAAiB,Y,mBAAwB,iBACzC,qEAGA,8EAQJ,4D,8BAZqB,qEACZ,0EAGS,yE,0BAeV,0BACI,yEAAgC,Y,mBAAiC,iBACjE,Y,mBACJ,kB,8BAFoC,qFAChC,qK,oDAEJ,0BACI,yEAAgC,Y,mBAA6B,iBAC7D,yEAAyB,+F,mBACrB,YACJ,iBACJ,0D,iCAJoC,iFACiB,0EAC7C,4I,0BAIJ,0BACI,Y,mBACA,+BAAmD,YAAe,iBACtE,+D,uBAFI,2JACmD,gD,0BAH3D,8BACI,8EAIJ,2D,8BAJS,iE,0BAjBjB,6BACI,mEACI,mEACI,yEAAgC,Y,mBAAyB,iBACzD,Y,oBACJ,iBACA,2EAIA,4EAMA,4EAMJ,uDACJ,6D,8BApB4C,6EAChC,sJAEC,uDAIA,yDAMa,8D,oDAhf9B,6BACI,wEAGA,iEASA,8DACI,kEACI,yEAAkB,a,oBAAiB,iBACnC,0EAA8D,uGAA9D,iBAEJ,uDACA,uEAOJ,mDACA,kCACA,6EAwJA,kCACA,+EAsEA,kCACA,+EAqHA,gEACI,sEAAmB,a,oBAAkB,iBACrC,yEAA2C,wGACwB,iBACvE,mDACA,+DAAiB,a,oBAAyB,iBAC1C,mEAkEA,iEAIA,oEAQA,6EAaA,6EAcA,8EAwBJ,+C,gCAvf6B,mFAGR,6DAWS,gEAC4C,qDAAyB,2CAG7D,oDASpB,uEAyJA,sEAuEA,0EAsHS,iEACwB,sDAA0B,2CAGxD,wEACoC,uDAmEjD,qEAGa,qEAQH,iEAaA,wFAcA,gD,0BA0Bd,iCACI,4D,mBACA,gEAAM,Y,mBAAmD,iBAC7D,mD,gDAHyD,mCACpB,6EAC3B,4G,4GAMN,gCAAiE,kG,mBAE7D,+DAEJ,sD,iCAHyB,qGACD,qG,oDAGxB,qCAAiC,0F,mBAG7B,gEACA,gE,mBAEJ,sD,oDALI,2GAC+B,mCAA8B,gCACxB,gDAEjC,6EADyC,mC,0BAVrD,8BACI,yEAKA,0EAOJ,mD,6BAZY,yEAOJ,8DqT/fxB,mBAQI,WAAYn6C,EAA8BC,EACtCx3B,EAA0Byb,EAC1Bgc,EAA4B1d,EAC5B8b,EAA0B6B,EAC1BC,EAA0BC,EAC1B7hB,EAAoC8hB,EAA4BC,GALpE,MAMI,YAAMP,EAAeC,EAAex3B,EAAayb,EAAsBgc,EAAc1d,EACjF8b,EAAa6B,EAAmBC,EAAaC,EAA2B7hB,EACxE8hB,EAAcC,IAAc,K,OAXpC,EAAA0iB,eAAyB,KACzB,EAAAtiB,UAAW,E,SAFgC,OAerC,YAAA/d,KAAN,W,0EACI7Z,KAAKiB,MAAQjB,KAAKN,YAAYO,EAAE,Y,WAGpB,YAAAo6C,WAAhB,W,mEACI,MAAO,CAAP,EAAOnlC,QAAQC,QAAQnV,KAAKk6C,wB,iCApBvB+2B,GAAyB,of,iCAAzBA,EAAyB,i7UrTxBtC,4BACI,iDACI,wDAAkC,2CAAY,EAAAnpD,YAE1C,yDACI,4DAAgD,aAAS,iBACzD,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,gEAyfA,2DACI,sEAIA,mEACI,a,oBACJ,iBACA,mEAcJ,+CACJ,2CACJ,uCACJ,mCACA,mB,MA3hBgE,0DAGA,4CACS,mFAIrC,6CA0f+D,gDAK/E,mIAEiB,4D,4eqTvfrC,CAI+C,oBAAlC,EAAAmpD,8B,68CCxBb,WAWA,GAVA,KAEA,KACA,MACA,KACA,MACA,KACA,MACA,KAEA,QACA,SACA,QACA,SACA,SACA,QAEA,QACA,SACA,SACA,S,kMCXA,wBACI,6CAAG,Y,mBAAsB,iBAAK,Y,mBAClC,kB,MADO,yEAA2B,gG,mDAM1B,2BAA+E,kGAC3E,Y,mBACJ,iB,MADI,iG,sBAoBI,8BAC2D,Y,mBAAoB,kB,MAApB,kE,sBAC3D,8BAC4D,Y,mBAAqB,kB,MAArB,mE,sBAC5D,8BACqE,Y,mBAA6C,kB,MAA7C,2F,sBACrE,8BACoE,Y,mBAA4C,kB,MAA5C,0F,sBAEpE,8BACgD,Y,mBAAiB,kB,MAAjB,+D,sBAChD,8BACoD,Y,mBAAqB,kB,MAArB,mE,yBAEpD,+BAAiD,YAAU,kB,uCAAV,4C,mDAUzC,2BAA+C,+HAE3C,mEACA,Y,mBACJ,iB,MADI,0I,mDAEJ,2BAA4D,8HAExD,mEACA,Y,mBACJ,iB,MADI,iI,mDAEJ,2BAA4D,8HAExD,mEACA,Y,mBACJ,iB,MADI,iI,mDAEJ,2BAA4D,6HAExD,mEACA,Y,mBACJ,iB,MADI,gI,mDAjDpB,yBACI,yDACI,gEAEJ,8CACA,sDACI,4DAAyB,2GAAkB,aAAW,iBACtD,mEAEA,mEAEA,mEAEA,mEAGA,qFAEA,mEAGA,sEACJ,+CACA,2DACI,gEACI,uE,oBAGI,iEACJ,uDACA,oEACI,wEAKA,wEAKA,wEAKA,wEAKA,sEAA2D,6GACvD,qEACA,a,oBACJ,iBACJ,uDACJ,mDACJ,+CACJ,2C,+CAxDoB,oDAA0B,gBAA1B,CAA0B,YAA1B,CAA0B,eAIK,4CAEvC,mFAEA,oFAEA,6FAEA,4FAGA,wEAEA,4EAE8B,2CAM1B,sFAKI,mFAKA,oFAKA,6FAKA,sJAMA,kI,yBAvD5B,+BACI,iDACI,yDA2DJ,sCACJ,mC,6BA5DY,0D,sBA8DZ,wBAAuD,Y,mBAA8B,kB,MAA9B,4E,sBAevC,8BAC2D,Y,mBAAoB,kB,MAApB,kE,sBAC3D,8BAC4D,Y,mBAAqB,kB,MAArB,mE,sBAC5D,8BACqE,Y,mBAA6C,kB,MAA7C,2F,sBACrE,8BACoE,Y,mBAA4C,kB,MAA5C,0F,uBAEpE,8BACgD,Y,mBAAiB,kB,MAAjB,+D,uBAChD,8BACoD,Y,mBAAqB,kB,MAArB,mE,0BAEpD,+BAAiD,YAAU,kB,uCAAV,4C,oDAUzC,2BAA+C,oIAE3C,mEACA,Y,mBACJ,iB,MADI,uI,oDAEJ,2BAA+C,+HAE3C,mEACA,Y,mBACJ,iB,MADI,kI,0BAEJ,2BAEI,mEACA,Y,mBACJ,kB,uCAJyB,gCAGrB,8H,oDA5CpB,yBACI,yDACI,gEAEJ,8CACA,sDACI,4DAAM,aAAW,iBACjB,mEAEA,mEAEA,mEAEA,mEAGA,sFAEA,oEAGA,uEACJ,+CACA,2DACI,gEACI,uE,oBAGI,iEACJ,uDACA,oEACI,yEAKA,yEAKA,yEAKA,sEAA2D,6GACvD,qEACA,a,oBACJ,iBACJ,uDACJ,mDACJ,+CACJ,2C,+CAnDoB,oDAA0B,gBAA1B,CAA0B,YAA1B,CAA0B,eAIhC,4CAEF,mFAEA,oFAEA,6FAEA,4FAGA,wEAEA,4EAE8B,2CAM1B,sFAKI,qFAKA,qIAKA,iIAMA,kI,0BAlD5B,+BACI,iDACI,0DAsDJ,sCACJ,mC,6BAvDY,0D,uBAyDZ,wBAAuD,Y,mBAA4B,kB,MAA5B,0E,sDDvIvD,kBAmBI,WAAoB71D,EAAgC1b,EACxC8V,EACA2F,EACAyM,EAAwCzO,EACxC0wB,EAAwCtU,EACxC9f,GALQ,KAAA2F,aAAgC,KAAA1b,cACxC,KAAA8V,2BACA,KAAA2F,uBACA,KAAAyM,iBAAwC,KAAAzO,gBACxC,KAAA0wB,iBAAwC,KAAAtU,cACxC,KAAA9f,mBAZZ,KAAAu8D,oBAAsB,EAAAC,oBACtB,KAAAC,0BAA4B,EAAA5I,0BAIpB,KAAA/yD,MAAwB,K,OAS1B,YAAArV,SAAN,W,kGAC4B,OAAxB,EAAAlB,KAAwB,GAAMA,KAAKu1B,YAAYc,oB,OAClC,OADb,EAAKA,iBAAmB,SACX,GAAMr2B,KAAKu1B,YAAY+P,uB,cAA9BC,EAAO,SACbvlC,KAAKmyE,oBAAsB5sC,EAAK/d,MAAK,SAAA00B,GAAK,OAAAA,EAAEuJ,WAC5CzlD,KAAK6Z,O,YAGH,YAAAA,KAAN,W,kGAC4B,OAAxB,EAAA7Z,KAAwB,GAAMA,KAAKob,WAAW+tD,6B,OACtB,OADxB,EAAKiJ,gBAAmB,SAAmDjvE,KAC3E,EAAAnD,KAAwB,GAAMA,KAAKob,WAAWi3D,6B,cAA9C,EAAKC,gBAAmB,SAAmDnvE,K,YAGzE,YAAA61B,gBAAN,W,mEACI,OAAKh5B,KAAKq2B,kBACNr2B,KAAKyV,iBAAiBkB,KAAK,mB,WAKnC,YAAAmO,KAAA,SAAK4kD,GAAL,I,EAAA,OACsB,MAAd1pE,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGf,IAAMlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK8sD,gBAAgB32C,gBAAgBJ,GAASK,SAC3D,IAAMwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAA48D,gCAAiCvyE,KAAK8sD,iBAE1Cl3B,EAAeluB,KAAoB,QAAhB,EAAGgiE,aAAO,EAAPA,EAAShiE,YAAI,QAAIgiE,aAAO,EAAPA,EAAS1oD,MAChD4U,EAAe48C,kBAAoB9I,aAAO,EAAPA,EAAS9pE,GAC5Cg2B,EAAenT,UAAYziB,KAAKq2B,iBAChCT,EAAe68C,QAAQ9uD,WAAU,WAC7B,EAAKpN,MAAMU,QACX,EAAK4C,UAET+b,EAAeirB,UAAUl9B,WAAU,WAC/B,EAAKpN,MAAMU,QACX,EAAK0tC,OAAO+kB,MAGhB1pE,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,SAIrB,YAAAyyC,OAAA,WACIhpD,KAAK8kB,KAAK,OAGR,YAAAwrC,SAAN,SAAeoiB,G,0FACX,OAA0B,MAAtB1yE,KAAKi7B,cACL,KAEJj7B,KAAKi7B,cAAgBj7B,KAAKob,WAAWu3D,4BAA4BD,EAAQ9yE,IACzE,GAAMI,KAAKi7B,gB,cAAX,SACAj7B,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,mBAAoByyE,EAAQ1xD,QAC7FhhB,KAAKi7B,cAAgB,K,YAGnB,YAAAu1B,QAAN,SAAckiB,G,8CACV,SAASjiB,IACLiiB,EAAQ/yD,OAAS,EAAA2pD,0BAA0Bn+B,U,mEAG/C,OAA0B,MAAtBnrC,KAAKi7B,cACL,IAGgB,GAAMj7B,KAAK6pC,eAAerrC,IAAa,EAAAwT,iBAAiBgB,0B,OAC5E,OAAmB,OADb29C,EAAc,WACQA,GA6B5B3wD,KAAKi7B,cAAgBj7B,KAAK4wD,eAAe8hB,GACzC,GAAM1yE,KAAKi7B,iBA7BW,MAAdj7B,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGTlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK6wD,gBAAgB16C,gBAAgBJ,GAASK,UACrD,EAAiBpW,KAAKuW,MAAMZ,KAC9B,EAAAi9D,gCAAiC5yE,KAAK6wD,kBAE3BnpD,KAAoB,QAAhB,EAAGgrE,aAAO,EAAPA,EAAShrE,YAAI,QAAIgrE,aAAO,EAAPA,EAAS1xD,MAChD,EAAewxD,kBAAoBE,EAAQ9yE,GAC3C,EAAe+mB,OAAS+rD,aAAO,EAAPA,EAAS/I,UACjC,EAAekJ,YAAYlvD,WAAU,gD,kDAIjC,OAHA3jB,KAAKuW,MAAMU,QAEX,EAAekR,YAAcnoB,KAAK4wD,eAAe8hB,GACjD,GAAM,EAAevqD,a,cAArB,SAEAsoC,IACAzwD,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,mBAAoByyE,EAAQhrE,MAAQgrE,EAAQ1xD,Q,cAGjHhhB,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,QAEjB,K,cAIJ,SACAk6C,IAEAzwD,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,mBAAoByyE,EAAQhrE,MAAQgrE,EAAQ1xD,QAC7GhhB,KAAKi7B,cAAgB,K,YAGnB,YAAA0pB,OAAN,SAAa+kB,G,0FACS,SAAM1pE,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,0BAA2BypE,EAAQhiE,MAAQgiE,EAAQ1oD,MACtEhhB,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,Y,OACzD,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAIP,O,sBAAA,GAAMD,KAAKob,WAAW03D,sBAAsBpJ,EAAQ9pE,K,cAApD,SACAI,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,gBAAiBypE,EAAQhiE,MAAQgiE,EAAQ1oD,QAEtG0oD,aAAmB,EAAAqJ,sCACnB/yE,KAAKgzE,cAActJ,GAEnB1pE,KAAKizE,cAAcvJ,G,4DAKzB,YAAAwJ,cAAN,SAAoBxJ,G,0FACE,SAAM1pE,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,4BAA6BypE,EAAQK,aAAat9D,YACrEi9D,EAAQhiE,MAAQgiE,EAAQ1oD,MACxBhhB,KAAKN,YAAYO,EAAE,iBACnBD,KAAKN,YAAYO,EAAE,MACnB,Y,OAGJ,OARkB,SAYlB,GAAMD,KAAKob,WAAW+3D,4BAA4BzJ,EAAQ9pE,KAH/C,CAAP,GAAO,G,cAGX,SAEA8pE,EAAQ/pD,OAAS,EAAA2pD,0BAA0BC,kBAC3CvpE,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,cAAeypE,EAAQhiE,MAAQgiE,EAAQ1oD,Q,YAGtG,YAAAoyD,QAAN,SAAc1J,G,gGAGQ,OAFZvnE,EAAOnC,KAAKN,YAAYO,EAAEypE,EAAQvnE,OAAS,EAAA8vE,oBAAoBoB,KAAO,OAAS,YAEnE,GAAMrzE,KAAKmb,qBAAqB+Z,WAC9Cl1B,KAAKN,YAAYO,EAAE,4BAA6BypE,EAAQhiE,MAAQgiE,EAAQ1oD,MAAO7e,GAC/EunE,EAAQhiE,MAAQgiE,EAAQ1oD,MACxBhhB,KAAKN,YAAYO,EAAE,WACnBD,KAAKN,YAAYO,EAAE,MACnB,Y,OAGJ,OARkB,SAYlB,GAAMD,KAAKob,WAAWk4D,2BAA2B5J,EAAQ9pE,KAH9C,CAAP,GAAO,G,cAGX,SACA8pE,EAAQ/pD,OAAS,EAAA2pD,0BAA0BE,iBAE3CxpE,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,oBAAqBypE,EAAQhiE,MAAQgiE,EAAQ1oD,Q,YAG5G,YAAA/B,OAAN,SAAayqD,G,0FACT,SAAM1pE,KAAKob,WAAWm4D,0BAA0B7J,EAAQ9pE,K,cAAxD,SACA8pE,EAAQ/pD,OAAS,EAAA2pD,0BAA0Bn+B,UAE3CnrC,KAAK4nB,eAAeI,SAAS,UAAW,KAAMhoB,KAAKN,YAAYO,EAAE,oBAAqBypE,EAAQhiE,MAAQgiE,EAAQ1oD,Q,YAG5G,YAAAwyD,SAAN,SAAe9J,G,yFACO,MAAd1pE,KAAKuW,OACLvW,KAAKuW,MAAMU,QAGTlB,EAAU/V,KAAKwV,yBAAyBQ,wBAAwB,EAAAkB,gBACtElX,KAAKuW,MAAQvW,KAAK8sD,gBAAgB32C,gBAAgBJ,GAASK,UACrDwf,EAAiB51B,KAAKuW,MAAMZ,KAC9B,EAAA89D,iCAAkCzzE,KAAK0zE,mBAE5BhsE,KAAkB,MAAXgiE,EAAkBA,EAAQhiE,MAAQgiE,EAAQ1oD,MAAQ,KACxE4U,EAAe5U,MAAQ0oD,EAAQ1oD,MAC/B4U,EAAe48C,kBAA+B,MAAX9I,EAAkBA,EAAQ9pE,GAAK,KAElEg2B,EAAe+9C,OAAOhwD,WAAU,WAC5B,EAAKpN,MAAMU,QACX,EAAK2Q,eAAeI,SAAS,UAAW,KAAM,EAAKtoB,YAAYO,EAAE,mBAAoBypE,EAAQhiE,MAAQgiE,EAAQ1oD,WAGjHhhB,KAAKuW,MAAMQ,SAAS4M,WAAU,WAC1B,EAAKpN,MAAQ,Q,WAIb,YAAAy8D,cAAR,SAAsBtJ,GAClB,IAAMhc,EAAQ1tD,KAAKoyE,gBAAgBhtE,QAAQskE,GACvChc,GAAS,GACT1tD,KAAKoyE,gBAAgBzkB,OAAOD,EAAO,IAInC,YAAAulB,cAAR,SAAsBvJ,GAClB,IAAMhc,EAAQ1tD,KAAKsyE,gBAAgBltE,QAAQskE,GACvChc,GAAS,GACT1tD,KAAKsyE,gBAAgB3kB,OAAOD,EAAO,IAK7B,YAAAkD,eAAd,SAA6B8Y,G,8GACV,SAAM1pE,KAAKmZ,cAAco1B,a,OACd,OADpBhlB,EAAS,SACW,GAAMvpB,KAAKob,WAAW61C,iBAAiByY,EAAQC,Y,OAAnEzY,EAAoB,SACpBvjB,EAAY,EAAAloC,MAAM6F,eAAe4lD,EAAkBvjB,W,iBAKhD,O,sBADL,KAAA7uB,SAAQqyC,IAAI,yBACP,GAAMnxD,KAAKmZ,cAAci4C,eAAesY,EAAQC,UAAWh8B,EAAUnhC,S,cAD1E,WAAY,EACP,SAA8E1I,KAAK,O,0CAGvE,SAAM9D,KAAKmZ,cAAck4C,WAAW9nC,EAAO5qB,IAAKgvC,EAAUnhC,S,OAG/E,OAHMo9D,EAAe,UACfzlD,EAAU,IAAI,EAAAyvD,+BACZj1E,IAAMirE,EAAal1D,gBAC3B,GAAM1U,KAAKob,WAAWy4D,2BAA2BnK,EAAQ9pE,GAAIukB,I,cAA7D,S,6CAzPK2vD,GAAwB,+V,iCAAxBA,EAAwB,yD,OAAA,M,yBACH,EAAAt9C,kB,yBACS,EAAAA,kB,yBACD,EAAAA,mB,8/EC9B1C,4BACI,8CAAI,Y,mBAA4B,iBACpC,kCACA,yCACI,Y,mBACA,2BACI,a,oBACJ,iBACJ,mCAEA,iDAIA,iDACI,gDACI,a,oBACA,6BAGJ,uCACA,mDACI,0DAAkE,wCAAS,EAAAwyB,YACvE,oDACA,a,oBACJ,iBACJ,uCACJ,mCAEA,qDAgEA,iDAEA,iDACI,gDAAI,a,oBAAwC,iBAChD,mCAEA,sDA2DA,kDAEA,2FACA,yFACA,yFACA,mB,MAlKQ,0EAGJ,iGAEI,6FAIL,0DAMK,+GACqD,wDAKgC,4DAEjF,8GAKqC,gFAgE9C,kFAGK,uFAGyC,gFA2D9C,oF,sJDvIH,GAIa,EAAA8qB,6B,8EE3Bb,SAAY7B,GAER,mBACA,2BAHJ,CAAY,EAAAA,sBAAA,EAAAA,oBAAmB,M,8ZCG/B,YACA,SAEA,cAUI,WAAYrxE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKhB,GAAK,EAAK4B,oBAAoB,MACnC,EAAKmoE,UAAY,EAAKnoE,oBAAoB,aAC1C,EAAKkG,KAAO,EAAKlG,oBAAoB,QACrC,EAAKwf,MAAQ,EAAKxf,oBAAoB,SACtC,EAAKW,KAAO,EAAKX,oBAAoB,QACrC,EAAKme,OAAS,EAAKne,oBAAoB,UACvC,EAAKuoE,aAAe,EAAKvoE,oBAAoB,gBAC7C,EAAKuyE,aAAe,EAAKvyE,oBAAoB,gB,EAErD,OArB2D,OAqB3D,EArBA,CAA2D,EAAAU,cAA9C,EAAA6wE,wCAuBb,kBAUI,WAAYnyE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKhB,GAAK,EAAK4B,oBAAoB,MACnC,EAAKwyE,UAAY,EAAKxyE,oBAAoB,aAC1C,EAAKkG,KAAO,EAAKlG,oBAAoB,QACrC,EAAKwf,MAAQ,EAAKxf,oBAAoB,SACtC,EAAKW,KAAO,EAAKX,oBAAoB,QACrC,EAAKme,OAAS,EAAKne,oBAAoB,UACvC,EAAKuoE,aAAe,EAAKvoE,oBAAoB,gBAC7C,EAAKuyE,aAAe,EAAKvyE,oBAAoB,gB,EAErD,OArB2D,OAqB3D,EArBA,CAA2D,EAAAU,cAA9C,EAAA+xE,wCAuBb,kBAKI,WAAYrzE,GAAZ,MACI,YAAMA,IAAS,K,OAEf,EAAKopE,aAAe,EAAKxoE,oBAAoB,gBAC7C,EAAKq9B,IAAM,EAAKr9B,oBAAoB,OACpC,EAAKs9B,cAAgB,EAAKt9B,oBAAoB,iB,EAEtD,OAZqD,OAYrD,EAZA,CAAqD,EAAAU,cAAxC,EAAAgyE,kCAcb,kBAII,WAAYtzE,GAAZ,MACI,YAAMA,IAAS,KAHnB,EAAA+I,QAA4B,GAKxB,EAAKqgE,aAAe,EAAKxoE,oBAAoB,gBAE7C,IAAMmI,EAAU,EAAKnI,oBAAoB,W,OAC1B,MAAXmI,IACA,EAAKA,QAAUA,EAAQrC,KAAI,SAACyG,GAAW,WAAI,EAAA61C,eAAe71C,O,EAGtE,OAdiD,OAcjD,EAdA,CAAiD,EAAA7L,cAApC,EAAAiyE,+B,68CClEb,WAaA,GALA,KAEA,KACA,KAEA,QACA,SACA,S,yFCVoB,8BAAmD,Y,mBAAoB,kB,MAApB,kE,yBAEnD,+BAAuC,YAAQ,kB,6BAAR,4C,sBAM/C,6BACI,uD,mBACA,+DAAsB,Y,mBAAoB,iBAC9C,+C,MAFgD,6EACtB,kE,mDAGtB,6BACI,6DAAG,Y,mBAAuC,iBAC1C,kEACI,wEAAmB,Y,oBAAkB,iBACrC,0EAAgE,kGAAhE,iBACJ,uDACJ,4D,iCALO,oFAEoB,gEAC6C,gD,yBA6BhE,gCAAwD,YAAU,kB,uBAA9B,gCAAoB,4C,mDAlCpE,6BACI,0EAOA,0DACI,Y,mBACA,2B,mBAEI,gEACJ,uDACJ,mDACA,gEACI,sEACuC,gGADvC,iBAEA,sEACI,a,oBACA,6BAAO,a,oBAAqB,iBAChC,uDACJ,mDACA,gEACI,sEAC2C,gGAD3C,iBAEA,sEACI,a,oBACA,6BAAO,a,oBAAyB,iBACpC,uDACJ,mDACA,gEACI,sEAAsB,a,oBAAqB,iBAC3C,uEAAsC,oGAClC,6EACJ,uDACA,sEAA0B,a,oBAAyB,iBACvD,mDACJ,+C,gCArCkB,gDAQV,wHACkC,uFAO9B,gEAAkC,kBAElC,2HACO,oEAKP,oEAAsC,iBAAtC,CAAsC,uBAEtC,+HACO,wEAIW,oEACgB,kDAAsB,uBAChD,mDAEc,yE,sBAM1B,sB,yBAAiC,8D,sBAEjC,2BAA6C,Y,mBAAiB,kB,MAAjB,+D,mDAK7C,mCAAiC,yF,mBAG7B,+DACA,+D,mBAEJ,sD,mDALI,oEAAoD,mCAA8B,gCAE7C,gDAEjC,6EADyC,mCDrDrE,iBAuBI,WAAoB/4D,EAAgC1b,EACxCkoB,GADQ,KAAAxM,aAAgC,KAAA1b,cACxC,KAAAkoB,iBAjBF,KAAA6qD,QAAU,IAAI,EAAA1vD,aACd,KAAA89B,UAAY,IAAI,EAAA99B,aAE1B,KAAApiB,SAAU,EACV,KAAA8hB,UAAoB,EACpB,KAAAkW,UAAoB,EAGpB,KAAAx2B,KAA4B,EAAA8vE,oBAAoBoB,KAIhD,KAAArB,oBAAsB,EAAAC,oB,OAOhB,YAAA/wE,SAAN,W,mGACIlB,KAAK24B,SAAW34B,KAAKW,QAAoC,MAA1BX,KAAKwyE,kBAEpCxyE,KAAKo0E,UAAY,CACb,CAAE1sE,KAAM1H,KAAKN,YAAYO,EAAE,UAAWvB,MAAO,GAC7C,CAAEgJ,KAAM1H,KAAKN,YAAYO,EAAE,OAAQ,KAAMvB,MAAO,GAChD,CAAEgJ,KAAM1H,KAAKN,YAAYO,EAAE,OAAQ,KAAMvB,MAAO,GAChD,CAAEgJ,KAAM1H,KAAKN,YAAYO,EAAE,OAAQ,MAAOvB,MAAO,IACjD,CAAEgJ,KAAM1H,KAAKN,YAAYO,EAAE,OAAQ,MAAOvB,MAAO,IACjD,CAAEgJ,KAAM1H,KAAKN,YAAYO,EAAE,OAAQ,MAAOvB,MAAO,MAGjDsB,KAAK24B,SAAL,YACA34B,KAAK24B,UAAW,EAChB34B,KAAKiB,MAAQjB,KAAKN,YAAYO,EAAE,wB,iBAEJ,O,sBAAA,GAAMD,KAAKob,WAAWi5D,mBAAmBr0E,KAAKwyE,oB,cAAhEpJ,EAAkB,SACxBppE,KAAKmC,KAAOinE,EAAgBjnE,KAC5BnC,KAAKs0E,SAAWlL,EAAgBW,a,6DAGpC/pE,KAAKiB,MAAQjB,KAAKN,YAAYO,EAAE,0BAChCD,KAAKs0E,SAAWt0E,KAAKo0E,UAAU,GAAG11E,M,wBAGtCsB,KAAKW,SAAU,E,YAGb,YAAAmnB,OAAN,W,gGAiBQ,O,sBAfI9nB,KAAK24B,WACCxU,EAAU,IAAI,EAAA2lD,8BACZ3nE,KAAOnC,KAAKmC,KACpBgiB,EAAQ4lD,aAAe/pE,KAAKs0E,SAE5Bt0E,KAAKmoB,YAAcnoB,KAAKob,WAAW6uD,mBAAmBjqE,KAAKwyE,kBAAmBruD,MAExEA,EAAU,IAAI,EAAAowD,8BACZvzD,MAAQhhB,KAAKghB,MAAMjd,OAC3BogB,EAAQhiB,KAAOnC,KAAKmC,KACpBgiB,EAAQ4lD,aAAe/pE,KAAKs0E,SAE5Bt0E,KAAKmoB,YAAcnoB,KAAKob,WAAWo5D,0BAA0BrwD,IAGjE,GAAMnkB,KAAKmoB,a,cAAX,SACAnoB,KAAK4nB,eAAeI,SAAS,UAAW,KACpChoB,KAAKN,YAAYO,EAAED,KAAK24B,SAAW,eAAiB,eAAgB34B,KAAK0H,OAC7E1H,KAAKyyE,QAAQ/7D,O,4DAIf,YAAAskB,OAAN,W,0EACIh7B,KAAK6gD,UAAUnqC,O,4CA3EV67D,GAA+B,6G,iCAA/BA,EAA+B,+6E,GAAA,MCrB5C,4BACI,iDACI,wDAAkC,2CAAY,EAAAzqD,YAC1C,yDACI,4DACI,sEACA,aACA,iCACJ,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,8DAIA,gEAuCA,4DACI,sEAEI,oEAEA,uEACJ,mDACA,mEACyB,a,oBAAmB,iBAC5C,gEACI,0EAOJ,mDACJ,+CACJ,2CACJ,uCACJ,mCACA,mB,6BA5EgE,0DAGV,+CAClC,+FAC0B,2CAE2B,oFAIrC,8CAIA,+CAyChB,yEAAqD,8BAEjD,yDACE,2DAGe,kEAGkB,iD,kUDlD3D,GAIa,EAAAyqD,mC,68CErBb,WAQA,QAMA,GAJA,KACA,MACA,MAEA,O,8FCRoB,+BAAuC,YAAQ,kB,6BAAR,4CDU3D,iBAeI,WAAoBn3D,EAAgCjC,EACxC0wB,GADQ,KAAAzuB,aAAgC,KAAAjC,gBACxC,KAAA0wB,iBAPF,KAAAgpC,YAAc,IAAI,EAAA9vD,aAE5B,KAAAovC,cAAe,EACf,KAAAxxD,SAAU,E,OAMJ,YAAAO,SAAN,W,oGAEkC,O,sBAAA,GAAMlB,KAAKob,WAAW61C,iBAAiBjxD,KAAK2mB,S,cAC7C,OADnBuqC,EAAoB,UACtB,OACMvjB,EAAY,EAAAloC,MAAM6F,eAAe4lD,EAAkBvjB,WACrC,GAAM3tC,KAAKmZ,cAAci4C,eAAepxD,KAAK2mB,OAAQgnB,EAAUnhC,U,OAChE,OADb4lD,EAAc,YAEhBpyD,KAAKoyD,YAAcA,EAAYtuD,KAAK,M,wEAIhD9D,KAAKW,SAAU,E,YAGb,YAAAmnB,OAAN,W,0FACI,OAAI9nB,KAAKW,QACL,IAGAX,KAAKmyD,aACL,GAAMnyD,KAAK6pC,eAAe+c,KAAK,EAAA50C,iBAAiBgB,yBAAyB,IADzE,M,OACA,S,iBAGJ,IACIhT,KAAK6yE,YAAYn8D,OACnB,U,mDAvCGk8D,GAA+B,+G,iCAA/BA,EAA+B,wnC,GAAA,MCpB5C,4BACI,iDACI,wDAAkC,2CAAY,EAAA9qD,YAC1C,yDACI,4DACI,a,oBACA,iCACJ,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,2DACI,a,oBACA,4BACI,a,oBAAsB,iBAC9B,mDACA,2DAAG,4BAAM,aAAe,iBAAO,iBAC/B,gEACI,sEACI,qEADJ,iBAEA,sEACI,a,oBACJ,iBACJ,mDACJ,+CACA,4DACI,mEACI,6D,oBACA,kEAAM,a,oBAAoB,iBAC9B,mDACA,mEACyB,a,oBAAmB,iBAChD,+CACJ,2CACJ,uCACJ,mCACA,mB,4BApCgE,0DAG5C,0HAC0B,2CAE2B,oFAMrD,gJAEI,sGAEC,kDAGD,sDAEA,0IAKiD,kDACpB,+EAC3B,mEAGe,oE,kODjBzC,GAIa,EAAA8qD,mC,yxDEpBb,WAkBA,GAVA,KAEA,KACA,MACA,KACA,MACA,MACA,KACA,MACA,KACA,QAGA,GADA,OACA,QACA,SACA,SACA,S,mKClBoB,+BAAuC,YAAQ,kB,6BAAR,4C,yBAWnC,yBACI,Y,mBACJ,kB,8BADI,sL,yBAEJ,yBACI,Y,mBACJ,kB,8BADI,iO,sBAEJ,yBACI,Y,mBAAoC,kB,MAApC,uH,sBACJ,yBACI,Y,mBAAoC,kB,MAApC,uH,sBACJ,yBACI,Y,mBAAkC,kB,MAAlC,qH,sBACJ,yBACI,Y,mBAA+C,kB,MAA/C,gI,yBAhBZ,qCACI,Y,mBACA,4BACI,uEAGA,uEAGA,uEAEA,yEAEA,yEAEA,yEAEJ,uDACJ,oD,6BAjBI,yIAEQ,iHAGA,6GAGA,4GAEA,4GAEA,8GAEA,+GDA5B,kBAcI,WAAYlzE,EAA0ByZ,EAClC1D,EAAoC8f,EACpC+B,EACAnc,EAA4Cqc,EACpCpc,EAAgCwM,GAJ5C,MAKI,YAAMloB,EAAayZ,EAAe1D,EAAkB8f,EAAa+B,EAC7Dnc,EAAsBqc,IAAc,K,OAFhC,EAAApc,aAAgC,EAAAwM,iBAblC,EAAA+rD,OAAS,IAAI,EAAA5wD,a,SAD2B,OAmB5C,YAAA7hB,SAAN,W,oGACqB,SAAMlB,KAAKob,WAAWq5D,4BAA4Bz0E,KAAKwyE,oB,cACnD,OADf5xE,EAAW,UACJuC,MAAgBvC,EAASuC,KAAKhF,OAAS,GAC1CknC,EAAWzkC,EAASuC,KAAKmE,KAAI,SAACotE,GAAmC,WAAI,EAAA7mC,OAAO,IAAI,EAAAC,WAAW4mC,OACjG,EAAA10E,KAA6B,GAAMA,KAAKw3B,cAAcuW,+BAA+B1I,KAFrF,M,OAEA,EAAK2I,sBAAwB,S,mCAI/B,YAAAlmB,OAAN,W,4GACS,SAAM9nB,KAAKmuC,kB,OAAhB,OAAK,SAIoB,GAAMnuC,KAAKob,WAAWu5D,4BAA4B30E,KAAKwyE,oBAH5E,I,OAKiB,OAFfoC,EAAmB,SAEJ,GAAM50E,KAAKmZ,cAAcm4D,WAAWsD,EAAiB5K,e,OAG1E,OAHMuH,EAAe,SAGJ,OAFXC,EAAY,IAAI,EAAAnpC,mBAAmBkpC,KAGrCvxE,KAAK4nB,eAAeI,SAAS,QAAShoB,KAAKN,YAAYO,EAAE,iBAAkBD,KAAKN,YAAYO,EAAE,oBAC9F,KAGQ,GAAMD,KAAKmZ,cAAcgmB,QAAQn/B,KAAK+nB,eAAgB/nB,KAAKghB,MAAO4zD,EAAiB/1C,IAAK+1C,EAAiB91C,gB,OAC1F,OADrBngC,EAAM,SACe,GAAMqB,KAAKmZ,cAAc8O,aAAajoB,KAAK+nB,eAAgBppB,I,OAEvE,OAFTupB,EAAqB,SAEZ,GAAMloB,KAAKmZ,cAAcs1B,aAAa9vC,EAAK6yE,I,OAApDjoD,EAAS,UAETpF,EAAU,IAAI,EAAA0wD,gCACZ3M,sBAAwBhgD,EAChC/D,EAAQxlB,IAAM4qB,EAAO,GAAG7U,gBAExB1U,KAAKob,WAAW05D,4BAA4B90E,KAAKwyE,kBAAmBruD,GAEpE,IACInkB,KAAK2zE,OAAOj9D,OACd,U,mDAvDG+8D,GAAgC,+V,iCAAhCA,EAAgC,+/C,GAAA,MCjC7C,4BACI,iDACI,wDAAkC,2CAAY,EAAA3rD,YAC1C,yDACI,4DACI,a,oBACA,iCACJ,mDACA,kE,oBACI,oEAAyB,iBAAO,iBACpC,mDACJ,+CACA,2DACI,wEAA4B,a,oBAA6B,iBACzD,2EAmBA,gEACI,oEACI,wEACI,8EAA4B,a,oBAA0B,iBACtD,8EACI,uEAA4B,2BAAU,EAAAknB,4BAD1C,iBAGA,yFACJ,2DACJ,uDACA,oEACI,wEACI,8EAAkC,a,oBAAiC,iBACnE,8EACyB,6EADzB,iBAGJ,2DACJ,uDACJ,mDACJ,+CACA,4DACI,mEACI,6D,oBACA,kEAAM,a,oBAAiB,iBAC3B,mDACA,mEAA6E,a,oBAAmB,iBACpG,+CACJ,2CACJ,uCACJ,mCACA,mB,4BA7DgE,0DAG5C,uHAC0B,2CAE2B,oFAK7B,6EACH,4DAsBe,yEAExB,wDAEmB,2DAA6B,eAKlB,gFAET,8DAOoB,kDACpB,+EAC3B,gEAEmE,oE,oRD7B7F,CAIsD,EAAAM,yBAAzC,EAAAmkC,oC,68CEjCb,aA2EA,QACA,SACA,SACA,SACA,SACA,SAIA,SACA,SAMA,SACA,SACA,SACA,SAIA,SACA,SACA,SACA,SACA,SACA,SAIA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAIA,SACA,SAIA,aAYI,WAAoB/2C,EAAoCvhB,EAC5C45D,EAA6DC,QAAA,IAAAA,MAAA,MADrD,KAAAt4C,eAAoC,KAAAvhB,uBAC5C,KAAA45D,iBAA6D,KAAAC,kBAZzE,KAAAC,SAAmB,EAOX,KAAAC,aAAc,EACd,KAAAC,iBAAkB,EAClB,KAAAC,cAAe,EAInBp1E,KAAKq1E,OAASl6D,EAAqBm6D,YACnCt1E,KAAK0uB,WAAa1uB,KAAKq1E,OAAO5oE,WAC9BzM,KAAKk1E,YAAcl1E,KAAKq1E,SAAW,EAAAxjD,WAAWmB,WAAahzB,KAAKq1E,SAAW,EAAAxjD,WAAWa,eAClF1yB,KAAKq1E,SAAW,EAAAxjD,WAAWkB,aAAe/yB,KAAKq1E,SAAW,EAAAxjD,WAAWc,gBACrE3yB,KAAKq1E,SAAW,EAAAxjD,WAAWe,cAAgB5yB,KAAKq1E,SAAW,EAAAxjD,WAAWgB,eACtE7yB,KAAKq1E,SAAW,EAAAxjD,WAAWoB,gBAAkBjzB,KAAKq1E,SAAW,EAAAxjD,WAAWiB,eAC5E9yB,KAAKm1E,gBAAkBn1E,KAAKq1E,SAAW,EAAAxjD,WAAWU,gBAAkBvyB,KAAKq1E,SAAW,EAAAxjD,WAAWW,cAC3FxyB,KAAKq1E,SAAW,EAAAxjD,WAAWY,aA2rCvC,OAxrCI,YAAA8iD,QAAA,SAAQC,GAGJ,GAFAx1E,KAAKi1E,SAAU,EAEE,MAAbO,EAAK76D,KAKL,OAJA3a,KAAKo1E,cAAe,EACpBp1E,KAAKy1E,WAAaD,EAAK76D,KAAO,OAC9B3a,KAAK6qD,gBAAkB2qB,EAAK76D,KAAO,iBACnC3a,KAAK01E,cAAgBF,EAAK76D,KAAO,WAIrC3a,KAAKy1E,WAAaD,EAAKG,IACvB31E,KAAK6qD,gBAAkB2qB,EAAKxwD,SAC5BhlB,KAAK01E,cAAgBF,EAAK1pD,OAGH,MAAnB9rB,KAAKy1E,aACLz1E,KAAKy1E,WAAa,6BAEM,MAAxBz1E,KAAK6qD,kBACL7qD,KAAK6qD,gBAAkB,kCAED,MAAtB7qD,KAAK01E,gBACL11E,KAAK01E,cAAgB,iCAMvB,YAAAx1C,kBAAN,SAAwB/b,G,0GASH,OARXyxD,EAAU,IAAIC,QAAQ,CACxB,eAAgB,mDAChB,OAAU,mBACV,cAAe71E,KAAK0uB,aAEI,MAAxB1uB,KAAKg1E,iBACLY,EAAQ1mE,IAAI,aAAclP,KAAKg1E,iBAElB,GAAMh1E,KAAK29C,MAAM,IAAIC,QAAQ59C,KAAK6qD,gBAAkB,iBAAkB,CACnFhtC,KAAM7d,KAAK81E,YAAY3xD,EAAQ4xD,gBAAgC,QAAjB,EAAC5xD,EAAQoZ,gBAAQ,QAAIv9B,KAAKmb,qBAAqB66D,mBAC7FC,YAAaj2E,KAAKk2E,iBAClBhU,MAAO,WACP0T,QAASA,EACTr6D,OAAQ,W,cALN3a,EAAW,SAQbm9C,EAAoB,KACpB/9C,KAAKm2E,eAAev1E,GACL,GAAMA,EAASi9C,QAD9B,M,OACAE,EAAe,S,wBAGC,MAAhBA,EAAA,MACwB,MAApBn9C,EAAS+e,OAAT,MACO,CAAP,EAAO,IAAI,EAAAy2D,sBAAsBr4B,I,cACN,MAApBn9C,EAAS+e,QAAkBo+B,EAAas4B,qBAC/Cv3E,OAAO0lD,KAAKzG,EAAas4B,qBAAqBl4E,OAC9C,GAAM6B,KAAK08B,aAAa45C,oBAAoBnyD,EAAQnD,QAF7C,M,OAGP,OADA,SACO,CAAP,EAAO,IAAI,EAAAu1D,0BAA0Bx4B,I,OAI7C,MAAO,CAAP,EAAO7oC,QAAQ+J,OAAO,IAAI,EAAAsjC,cAAcxE,EAAcn9C,EAAS+e,QAAQ,aAGrE,YAAAkoB,qBAAN,W,0FAEQ,O,sBAAA,GAAM7nC,KAAKw2E,kB,cAAX,S,aAEA,O,SAAO,CAAP,EAAOthE,QAAQ+J,OAAO,O,yBAMxB,YAAAsoD,WAAN,W,gGACc,SAAMvnE,KAAK2W,KAAK,MAAO,oBAAqB,MAAM,GAAM,I,OAClE,OADMzP,EAAI,SACH,CAAP,EAAO,IAAI,EAAAi9C,gBAAgBj9C,YAGzB,YAAA8rC,eAAN,W,gGACc,SAAMhzC,KAAK2W,KAAK,MAAO,oBAAqB,MAAM,GAAM,I,OAClE,OADMzP,EAAI,SACH,CAAP,EAAO,IAAI,EAAAuvE,gBAAgBvvE,YAGzB,YAAA+lE,oBAAN,W,gGACc,SAAMjtE,KAAK2W,KAAK,MAAO,yBAA0B,MAAM,GAAM,I,OACvE,OADMzP,EAAI,SACH,CAAP,EAAO,IAAI,EAAAwvE,qBAAqBxvE,YAG9B,YAAA2c,WAAN,W,gGACc,SAAM7jB,KAAK2W,KAAK,MAAO,gBAAiB,MAAM,GAAM,I,OAC9D,OADMzP,EAAI,SACH,CAAP,EAAO,IAAI,EAAAyvE,gBAAgBzvE,YAGzB,YAAAwgE,WAAN,SAAiBvjD,G,gGACH,SAAMnkB,KAAK2W,KAAK,MAAO,oBAAqBwN,GAAS,GAAM,I,OACrE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAAi9C,gBAAgBj9C,YAG/B,YAAAud,WAAA,SAAWN,GACP,OAAOnkB,KAAK2W,KAAK,MAAO,gBAAiBwN,GAAS,GAAM,IAGtD,YAAA4a,aAAN,SAAmB5a,G,gGACL,SAAMnkB,KAAK2W,KAAK,OAAQ,qBAAsBwN,GAAS,GAAO,I,OACxE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA0vE,iBAAiB1vE,YAGhC,YAAA6gE,eAAA,SAAe5jD,GACX,OAAOnkB,KAAK2W,KAAK,OAAQ,wBAAyBwN,GAAS,GAAM,IAGrE,YAAAikD,UAAA,SAAUjkD,GACN,OAAOnkB,KAAK2W,KAAK,OAAQ,kBAAmBwN,GAAS,GAAM,IAG/D,YAAAwkD,aAAA,SAAaxkD,GACT,OAAOnkB,KAAK2W,KAAK,OAAQ,qBAAsBwN,GAAS,GAAM,IAGlE,YAAA0yD,YAAA,SAAY1yD,GACR,OAAOnkB,KAAK2W,KAAK,OAAQ,yBAA0BwN,GAAS,GAAM,IAGtE,YAAAmjD,kBAAA,SAAkBnjD,GACd,OAAOnkB,KAAK2W,KAAK,OAAQ,2BAA4BwN,GAAS,GAAM,IAGxE,YAAA2iD,cAAA,SAAc3iD,GACV,OAAOnkB,KAAK2W,KAAK,SAAU,YAAawN,GAAS,GAAM,IAGrD,YAAA2yD,uBAAN,W,0FACc,SAAM92E,KAAK2W,KAAK,MAAO,0BAA2B,MAAM,GAAM,I,OACxE,MAAO,CAAP,EADU,kBAId,YAAAogE,iBAAA,SAAiB5yD,GACb,OAAOnkB,KAAK2W,KAAK,OAAQ,0BAA2BwN,GAAS,GAAO,IAGxE,YAAA6yD,aAAA,SAAa7yD,GACT,OAAOnkB,KAAK2W,KAAK,OAAQ,qBAAsBwN,GAAS,GAAO,IAG7D,YAAA2oD,YAAN,SAAkB3pE,G,gGACJ,SAAMnD,KAAK2W,KAAK,OAAQ,oBAAqBxT,GAAM,GAAM,I,OACnE,OADM+D,EAAI,SACH,CAAP,EAAO,IAAI,EAAA+vE,gBAAgB/vE,YAGzB,YAAAgwE,aAAN,SAAmB/yD,G,mEACf,MAAO,CAAP,EAAOnkB,KAAK2W,KAAK,OAAQ,sBAAuBwN,GAAS,GAAM,WAGnE,YAAAgpD,qBAAA,WACI,OAAOntE,KAAK2W,KAAK,OAAQ,8BAA+B,MAAM,GAAM,IAGxE,YAAAy2D,kBAAA,WACI,OAAOptE,KAAK2W,KAAK,OAAQ,2BAA4B,MAAM,GAAM,IAG/D,YAAAwgC,mBAAN,SAAyBhzB,G,gGACX,SAAMnkB,KAAK2W,KAAK,OAAQ,oBAAqBwN,GAAS,GAAM,I,OACtE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA+vE,gBAAgB/vE,YAG/B,YAAAmvC,mBAAA,SAAmBlyB,GACf,OAAOnkB,KAAK2W,KAAK,OAAQ,oBAAqBwN,GAAS,GAAM,IAGjE,YAAAuyB,mBAAA,SAAmBvzC,GACf,OAAOnD,KAAK2W,KAAK,OAAQ,oBAAqBxT,GAAM,GAAM,IAG9D,YAAAq+B,gBAAA,SAAgBrd,GACZ,OAAOnkB,KAAK2W,KAAK,OAAQ,iBAAkBwN,GAAS,GAAM,IAG9D,YAAA8kD,eAAA,SAAe9kD,GACX,OAAOnkB,KAAK2W,KAAK,OAAQ,gBAAiBwN,GAAS,GAAM,IAG7D,YAAAyrD,uBAAA,WACI,OAAO5vE,KAAK2W,KAAK,OAAQ,yBAA0B,MAAM,GAAM,IAGnE,YAAAs1C,4BAAA,SAA4B9nC,GACxB,OAAOnkB,KAAK2W,KAAK,OAAQ,+BAAgCwN,GAAS,GAAO,IAG7E,YAAAgzD,0BAAA,SAA0BhzD,GACtB,OAAOnkB,KAAK2W,KAAK,OAAQ,4BAA6BwN,GAAS,GAAM,IAGzE,YAAAgkC,yBAAA,SAAyBhkC,GACrB,OAAOnkB,KAAK2W,KAAK,OAAQ,2BAA4BwN,GAAS,GAAO,IAGzE,YAAAkoC,8BAAA,SAA8BloC,GAC1B,OAAOnkB,KAAK2W,KAAK,OAAQ,iCAAkCwN,GAAS,GAAO,IAG/E,YAAAkmD,eAAA,SAAelmD,GACX,OAAOnkB,KAAK2W,KAAK,OAAQ,gBAAiBwN,GAAS,GAAM,IAGvD,YAAAmhC,+BAAN,W,0FACc,SAAMtlD,KAAK2W,KAAK,MAAO,2CAA4C,MAAM,GAAM,I,OACzF,MAAO,CAAP,EADU,kBAIR,YAAA+1B,cAAN,SAAoBnqC,G,mEAChB,MAAO,CAAP,EAAOvC,KAAK2W,KAAK,SAAU,iBAAmBpU,EAAgB,MAAM,GAAM,WAGxE,YAAAuoD,qBAAN,W,mEACI,MAAO,CAAP,EAAO9qD,KAAK2W,KAAK,MAAO,gCAAiC,MAAM,GAAM,WAGnE,YAAAuwD,eAAN,SAAqBtnE,EAAYukB,G,gGACnB,SAAMnkB,KAAK2W,KAAK,OAAQ,oBAAqBwN,GAAS,GAAM,I,OACtE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAAkwE,eAAelwE,YAGxB,YAAAmgE,qBAAN,SAA2BznE,EAAYukB,G,gGACzB,SAAMnkB,KAAK2W,KAAK,OAAQ,2BAA4BwN,GAAS,GAAM,I,OAC7E,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAAkwE,eAAelwE,YAKxB,YAAAmwE,UAAN,SAAgBz3E,G,gGACF,SAAMI,KAAK2W,KAAK,MAAO,YAAc/W,EAAI,MAAM,GAAM,I,OAC/D,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAAowE,eAAepwE,YAGxB,YAAAqwE,WAAN,SAAiBpzD,G,gGACH,SAAMnkB,KAAK2W,KAAK,OAAQ,WAAYwN,GAAS,GAAM,I,OAC7D,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAAowE,eAAepwE,YAGxB,YAAAswE,UAAN,SAAgB53E,EAAYukB,G,gGACd,SAAMnkB,KAAK2W,KAAK,MAAO,YAAc/W,EAAIukB,GAAS,GAAM,I,OAClE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAAowE,eAAepwE,YAG9B,YAAAuwE,aAAA,SAAa73E,GACT,OAAOI,KAAK2W,KAAK,SAAU,YAAc/W,EAAI,MAAM,GAAM,IAKvD,YAAA83E,QAAN,SAAc93E,G,gGACA,SAAMI,KAAK2W,KAAK,MAAO,UAAY/W,EAAI,MAAM,GAAM,I,OAC7D,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAAywE,aAAazwE,YAGtB,YAAAo+D,eAAN,SAAqB1lE,EAAYukB,EAA4ByzD,G,gGAC/C,SAAM53E,KAAK2W,KAAK,OAAQ,iBAAmB/W,EAAIukB,GAAS,GAAO,EAAMyzD,I,OAC/E,OADM1wE,EAAI,SACH,CAAP,EAAO,IAAI,EAAA2wE,mBAAmB3wE,YAI5B,YAAA29D,wBAAN,SAA8BluD,EAAsBwN,G,gGACtC,SAAMnkB,KAAK2W,KAAK,OAAQ,UAAYA,EAAK/W,GAAK,gBAAkB+W,EAAKqmC,KAAKp9C,GAAIukB,GAAS,GAAO,I,OACxG,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA4wE,6BAA6B5wE,YAGtC,YAAA6wE,SAAN,W,gGACc,SAAM/3E,KAAK2W,KAAK,MAAO,SAAU,MAAM,GAAM,I,OACvD,OADMzP,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAAywE,uBAGzB,YAAAM,SAAN,SAAe9zD,G,gGACD,SAAMnkB,KAAK2W,KAAK,OAAQ,SAAUwN,GAAS,GAAM,I,OAC3D,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAAywE,aAAazwE,YAGtB,YAAAgxE,aAAN,SAAmB/0E,G,gGACL,SAAMnD,KAAK2W,KAAK,OAAQ,cAAexT,GAAM,GAAM,I,OAC7D,OADM+D,EAAI,SACH,CAAP,EAAO,IAAI,EAAAywE,aAAazwE,YAGtB,YAAAixE,QAAN,SAAcv4E,EAAYukB,G,gGACZ,SAAMnkB,KAAK2W,KAAK,MAAO,UAAY/W,EAAIukB,GAAS,GAAM,I,OAChE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAAywE,aAAazwE,YAGtB,YAAAkxE,sBAAN,SAA4Bx4E,G,gGACd,SAAMI,KAAK2W,KAAK,MAAO,UAAY/W,EAAK,mBAAoB,MAAM,GAAM,I,OAClF,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAAywE,aAAazwE,YAG5B,YAAAmxE,WAAA,SAAWz4E,GACP,OAAOI,KAAK2W,KAAK,SAAU,UAAY/W,EAAI,MAAM,GAAM,IAKrD,YAAA04E,UAAN,SAAgB14E,G,gGACF,SAAMI,KAAK2W,KAAK,MAAO,YAAc/W,EAAI,MAAM,GAAM,I,OAC/D,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAA08C,eAAe18C,YAGxB,YAAAozC,eAAN,SAAqB16C,G,gGACP,SAAMI,KAAK2W,KAAK,MAAO,YAAc/W,EAAK,SAAU,MAAM,GAAM,I,OAC1E,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAA08C,eAAe18C,YAGxB,YAAAqxE,uBAAN,SAA6Bh2E,G,gGACf,SAAMvC,KAAK2W,KAAK,MAAO,gDAAkDpU,EAC/E,MAAM,GAAM,I,OAChB,OAFM2E,EAAI,SAEH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAA08C,yBAGzB,YAAA40B,WAAN,SAAiBr0D,G,gGACH,SAAMnkB,KAAK2W,KAAK,OAAQ,WAAYwN,GAAS,GAAM,I,OAC7D,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA08C,eAAe18C,YAGxB,YAAAuxE,iBAAN,SAAuBt0D,G,gGACT,SAAMnkB,KAAK2W,KAAK,OAAQ,kBAAmBwN,GAAS,GAAM,I,OACpE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA08C,eAAe18C,YAGxB,YAAAyzC,gBAAN,SAAsBx2B,G,gGACR,SAAMnkB,KAAK2W,KAAK,OAAQ,iBAAkBwN,GAAS,GAAM,I,OACnE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA08C,eAAe18C,YAGxB,YAAAwxE,UAAN,SAAgB94E,EAAYukB,G,gGACd,SAAMnkB,KAAK2W,KAAK,MAAO,YAAc/W,EAAIukB,GAAS,GAAM,I,OAClE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA08C,eAAe18C,YAGxB,YAAAuzC,eAAN,SAAqB76C,EAAYukB,G,gGACnB,SAAMnkB,KAAK2W,KAAK,MAAO,YAAc/W,EAAK,SAAUukB,GAAS,GAAM,I,OAC7E,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA08C,eAAe18C,YAG9B,YAAAk0B,aAAA,SAAax7B,GACT,OAAOI,KAAK2W,KAAK,SAAU,YAAc/W,EAAI,MAAM,GAAM,IAG7D,YAAAg7C,kBAAA,SAAkBh7C,GACd,OAAOI,KAAK2W,KAAK,SAAU,YAAc/W,EAAK,SAAU,MAAM,GAAM,IAGxE,YAAA+4E,kBAAA,SAAkBx0D,GACd,OAAOnkB,KAAK2W,KAAK,SAAU,WAAYwN,GAAS,GAAM,IAG1D,YAAAs/C,uBAAA,SAAuBt/C,GACnB,OAAOnkB,KAAK2W,KAAK,SAAU,iBAAkBwN,GAAS,GAAM,IAGhE,YAAAy0D,eAAA,SAAez0D,GACX,OAAOnkB,KAAK2W,KAAK,MAAO,gBAAiBwN,GAAS,GAAM,IAGtD,YAAA00D,eAAN,SAAqBj5E,EAAYukB,G,gGACnB,SAAMnkB,KAAK2W,KAAK,MAAO,YAAc/W,EAAK,SAAUukB,GAAS,GAAM,I,OAC7E,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA08C,eAAe18C,YAG9B,YAAA4xE,gBAAA,SAAgB30D,GACZ,OAAOnkB,KAAK2W,KAAK,MAAO,iBAAkBwN,GAAS,GAAM,IAG7D,YAAA40D,qBAAA,SAAqBn5E,EAAYukB,GAC7B,OAAOnkB,KAAK2W,KAAK,MAAO,YAAc/W,EAAK,eAAgBukB,GAAS,GAAM,IAG9E,YAAA++C,0BAAA,SAA0BtjE,EAAYukB,GAClC,OAAOnkB,KAAK2W,KAAK,MAAO,YAAc/W,EAAK,qBAAsBukB,GAAS,GAAM,IAGpF,YAAAouB,iBAAA,SAAiBpuB,EAAsC5hB,QAAA,IAAAA,MAAA,MACnD,IAAIy2E,EAAO,iBAIX,OAHsB,MAAlBz2E,IACAy2E,GAAQ,mBAAqBz2E,GAE1BvC,KAAK2W,KAAK,OAAQqiE,EAAM70D,GAAS,GAAM,IAGlD,YAAA80D,kBAAA,SAAkB90D,GACd,OAAOnkB,KAAK2W,KAAK,OAAQ,kBAAmBwN,GAAS,GAAM,IAG/D,YAAA+0D,8BAAA,SAA8B32E,EAAwB4hB,GAClD,OAAOnkB,KAAK2W,KAAK,OAAQ,+CAAiDpU,EAAgB4hB,GAAS,GAAM,IAG7G,YAAAg1D,gBAAA,SAAgBv5E,GACZ,OAAOI,KAAK2W,KAAK,MAAO,YAAc/W,EAAK,UAAW,MAAM,GAAM,IAGtE,YAAAi7C,qBAAA,SAAqBj7C,GACjB,OAAOI,KAAK2W,KAAK,MAAO,YAAc/W,EAAK,gBAAiB,MAAM,GAAM,IAG5E,YAAAw5E,qBAAA,SAAqBj1D,GACjB,OAAOnkB,KAAK2W,KAAK,MAAO,kBAAmBwN,GAAS,GAAM,IAG9D,YAAAu/C,0BAAA,SAA0Bv/C,GACtB,OAAOnkB,KAAK2W,KAAK,MAAO,wBAAyBwN,GAAS,GAAM,IAG9D,YAAAk1D,iBAAN,SAAuBz5E,G,gGACT,SAAMI,KAAK2W,KAAK,MAAO,YAAc/W,EAAK,WAAY,MAAM,GAAM,I,OAC5E,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAA08C,eAAe18C,YAGxB,YAAAoyE,sBAAN,SAA4B15E,G,gGACd,SAAMI,KAAK2W,KAAK,MAAO,YAAc/W,EAAK,iBAAkB,MAAM,GAAM,I,OAClF,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAA08C,eAAe18C,YAGxB,YAAAqyE,sBAAN,SAA4Bp1D,G,gGACd,SAAMnkB,KAAK2W,KAAK,MAAO,mBAAoBwN,GAAS,GAAM,I,OACpE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8wE,aAA6B9wE,EAAG,EAAA08C,yBAKzC,YAAA41B,qBAAN,SAA2B55E,EAAYuD,G,gGACzB,SAAMnD,KAAK2W,KAAK,OAAQ,YAAc/W,EAAK,cAAeuD,GAAM,GAAM,I,OAChF,OADM+D,EAAI,SACH,CAAP,EAAO,IAAI,EAAA08C,eAAe18C,YAGxB,YAAAuyE,0BAAN,SAAgC75E,EAAYuD,G,gGAC9B,SAAMnD,KAAK2W,KAAK,OAAQ,YAAc/W,EAAK,oBAAqBuD,GAAM,GAAM,I,OACtF,OADM+D,EAAI,SACH,CAAP,EAAO,IAAI,EAAA08C,eAAe18C,YAG9B,YAAAs6D,uBAAA,SAAuB5hE,EAAY6hE,GAC/B,OAAOzhE,KAAK2W,KAAK,SAAU,YAAc/W,EAAK,eAAiB6hE,EAAc,MAAM,GAAM,IAG7F,YAAAC,4BAAA,SAA4B9hE,EAAY6hE,GACpC,OAAOzhE,KAAK2W,KAAK,SAAU,YAAc/W,EAAK,eAAiB6hE,EAAe,SAAU,MAAM,GAAM,IAGxG,YAAAiY,0BAAA,SAA0B95E,EAAY6hE,EAAsBt+D,EACxDZ,GACA,OAAOvC,KAAK2W,KAAK,OAAQ,YAAc/W,EAAK,eACxC6hE,EAAe,yBAA2Bl/D,EAAgBY,GAAM,GAAM,IAKxE,YAAA6qD,qBAAN,SAA2BzrD,EAAwB3C,G,gGACrC,SAAMI,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,gBAAkB3C,EAAK,WACzF,MAAM,GAAM,I,OAChB,OAFMsH,EAAI,SAEH,CAAP,EAAO,IAAI,EAAAyyE,+BAA+BzyE,YAGxC,YAAAulD,mBAAN,W,gGACc,SAAMzsD,KAAK2W,KAAK,MAAO,eAAgB,MAAM,GAAM,I,OAC7D,OADMzP,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAA0yE,6BAGzB,YAAA95B,eAAN,SAAqBv9C,G,gGACP,SAAMvC,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,eAAgB,MAAM,GAAM,I,OAClG,OADM2E,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAA0yE,6BAGzB,YAAAvpC,mBAAN,SAAyB9tC,EAAwB3C,G,0FACnC,SAAMI,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,gBAAkB3C,EAAK,SACzF,MAAM,GAAM,I,OAChB,MAAO,CAAP,EAFU,SAED0H,KAAI,SAACuyE,GAAY,WAAI,EAAA/sC,0BAA0B+sC,eAGtD,YAAAxrB,eAAN,SAAqB9rD,EAAwB4hB,G,gGAC/B,SAAMnkB,KAAK2W,KAAK,OAAQ,kBAAoBpU,EAAiB,eAAgB4hB,GAAS,GAAM,I,OACtG,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA0yE,mBAAmB1yE,YAG5B,YAAAknD,cAAN,SAAoB7rD,EAAwB3C,EAAYukB,G,gGAC1C,SAAMnkB,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,gBAAkB3C,EACpFukB,GAAS,GAAM,I,OACnB,OAFMjd,EAAI,SAEH,CAAP,EAAO,IAAI,EAAA0yE,mBAAmB1yE,YAG5B,YAAA0pC,mBAAN,SAAyBruC,EAAwB3C,EAAYukB,G,0FACzD,SAAMnkB,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,gBAAkB3C,EAAK,SAC/EukB,GAAS,GAAM,I,cADnB,S,YAIJ,YAAAgpC,iBAAA,SAAiB5qD,EAAwB3C,GACrC,OAAOI,KAAK2W,KAAK,SAAU,kBAAoBpU,EAAiB,gBAAkB3C,EAAI,MAAM,GAAM,IAGtG,YAAAk6E,qBAAA,SAAqBv3E,EAAwB3C,EAAY6zB,GACrD,OAAOzzB,KAAK2W,KAAK,SACb,kBAAoBpU,EAAiB,gBAAkB3C,EAAK,SAAW6zB,EACvE,MAAM,GAAM,IAKd,YAAAy7B,gBAAN,SAAsB3sD,EAAwB3C,G,gGAChC,SAAMI,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,WAAa3C,EAAK,WACpF,MAAM,GAAM,I,OAChB,OAFMsH,EAAI,SAEH,CAAP,EAAO,IAAI,EAAA6yE,qBAAqB7yE,YAG9B,YAAA4mD,UAAN,SAAgBvrD,G,gGACF,SAAMvC,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,UAAW,MAAM,GAAM,I,OAC7F,OADM2E,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAA8yE,wBAGzB,YAAA/pC,cAAN,SAAoB1tC,EAAwB3C,G,0FAC9B,SAAMI,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,WAAa3C,EAAK,SACpF,MAAM,GAAM,I,OAChB,MAAO,CAAP,EAFU,kBAKR,YAAAyvD,UAAN,SAAgB9sD,EAAwB4hB,G,gGAC1B,SAAMnkB,KAAK2W,KAAK,OAAQ,kBAAoBpU,EAAiB,UAAW4hB,GAAS,GAAM,I,OACjG,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8yE,cAAc9yE,YAGvB,YAAAkoD,SAAN,SAAe7sD,EAAwB3C,EAAYukB,G,gGACrC,SAAMnkB,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,WAAa3C,EAAIukB,GAAS,GAAM,I,OACtG,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8yE,cAAc9yE,YAGvB,YAAAypC,cAAN,SAAoBpuC,EAAwB3C,EAAYukB,G,0FACpD,SAAMnkB,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,WAAa3C,EAAK,SAAUukB,GAAS,GAAM,I,cAAvG,S,YAGJ,YAAA4qC,YAAA,SAAYxsD,EAAwB3C,GAChC,OAAOI,KAAK2W,KAAK,SAAU,kBAAoBpU,EAAiB,WAAa3C,EAAI,MAAM,GAAM,IAGjG,YAAAq6E,gBAAA,SAAgB13E,EAAwB3C,EAAY6zB,GAChD,OAAOzzB,KAAK2W,KAAK,SACb,kBAAoBpU,EAAiB,WAAa3C,EAAK,SAAW6zB,EAAoB,MAAM,GAAM,IAKpG,YAAA2gC,UAAN,SAAgB7xD,EAAwBJ,G,gGAC1B,SAAMnC,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,aAAeJ,EAAM,MAAM,GAAM,I,OACvG,OADM+E,EAAI,SACH,CAAP,EAAO,IAAI,EAAAgzE,eAAehzE,YAGxB,YAAAosD,YAAN,SAAkB/wD,G,gGACJ,SAAMvC,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,YAAa,MAAM,GAAM,I,OAC/F,OADM2E,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAAgzE,yBAGzB,YAAAjxB,mBAAN,SAAyB1mD,EAAwBud,EAAekB,EAAeyS,G,gGAEjE,SAAMzzB,KAAK2W,KAAK,MAAO,kBAAoBpU,EAApB,yBAClB6J,mBAAmB0T,GAAS,UAAY1T,mBAAmB4U,GACtE,uBAAyByS,EAAoB,MAAM,GAAO,I,OAC9D,OAHMvsB,EAAI,SAGH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAAgzE,yBAGzB,YAAA5jB,UAAN,SAAgB/zD,EAAwBJ,EAAkBgiB,G,gGAC5C,SAAMnkB,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,aAAeJ,EAAMgiB,GAAS,GAAM,I,OAC1G,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAAgzE,eAAehzE,YAKxB,YAAAyqD,oBAAN,SAA0BpvD,EAAwB3C,G,gGACpC,SAAMI,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,UAAY3C,EAAI,MAAM,GAAM,I,OAClG,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAAizE,gCAAgCjzE,YAGzC,YAAAmrD,0BAAN,SAAgC9vD,EAAwB3C,G,0FAC1C,SAAMI,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,UAAY3C,EAAK,UACnF,MAAM,GAAM,I,OAChB,MAAO,CAAP,EAFU,kBAKR,YAAAkwC,qBAAN,SAA2BvtC,G,gGACb,SAAMvC,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,SAAU,MAAM,GAAM,I,OAC5F,OADM2E,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAAkzE,8CAG/B,YAAAloB,2BAAA,SAA2B3vD,EAAwB4hB,GAC/C,OAAOnkB,KAAK2W,KAAK,OAAQ,kBAAoBpU,EAAiB,gBAAiB4hB,GAAS,GAAM,IAGlG,YAAAosC,6BAAA,SAA6BhuD,EAAwB3C,GACjD,OAAOI,KAAK2W,KAAK,OAAQ,kBAAoBpU,EAAiB,UAAY3C,EAAK,YAAa,MAAM,GAAM,IAG5G,YAAAmnD,2BAAA,SAA2BxkD,EAAwB3C,EAC/CukB,GACA,OAAOnkB,KAAK2W,KAAK,OAAQ,kBAAoBpU,EAAiB,UAAY3C,EAAK,UAAWukB,GAAS,GAAM,IAG7G,YAAAotC,4BAAA,SAA4BhvD,EAAwB3C,EAChDukB,GACA,OAAOnkB,KAAK2W,KAAK,OAAQ,kBAAoBpU,EAAiB,UAAY3C,EAAK,WAC3EukB,GAAS,GAAM,IAGvB,YAAA4tC,oBAAA,SAAoBxvD,EAAwB3C,EAAYukB,GACpD,OAAOnkB,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,UAAY3C,EAAIukB,GAAS,GAAM,IAGhG,YAAAuuC,0BAAA,SAA0BnwD,EAAwB3C,EAC9CukB,GACA,OAAOnkB,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,UAAY3C,EAAK,UAAWukB,GAAS,GAAM,IAG5G,YAAAksC,uBAAA,SAAuB9tD,EAAwB3C,GAC3C,OAAOI,KAAK2W,KAAK,SAAU,kBAAoBpU,EAAiB,UAAY3C,EAAI,MAAM,GAAM,IAK1F,YAAAojC,SAAN,W,gGACc,SAAMhjC,KAAK2W,KAAK,MAAO,UAAW,MAAM,GAAM,I,OACxD,OADMzP,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAAmzE,uBAGzB,YAAAC,oBAAN,SAA0B/3E,EAAwB4hB,G,mEAC9C,MAAO,CAAP,EAAOnkB,KAAK2W,KAAK,OAAQ,kBAAoBpU,EAAiB,UAAW4hB,GAAS,GAAM,WAGtF,YAAAL,YAAN,W,gGACc,SAAM9jB,KAAK2W,KAAK,MAAO,0BAA2B,MAAM,GAAM,I,OACxE,OADMzP,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAAqzE,0BAKzB,YAAA5P,mBAAN,W,gGACc,SAAM3qE,KAAK2W,KAAK,MAAO,oBAAqB,MAAM,GAAM,I,OAClE,OADMzP,EAAI,SACH,CAAP,EAAO,IAAI,EAAAszE,gBAAgBtzE,YAGzB,YAAAokE,mBAAN,SAAyBnnD,G,gGACX,SAAMnkB,KAAK2W,KAAK,MAAO,oBAAqBwN,GAAS,GAAM,I,OACrE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAAszE,gBAAgBtzE,YAKzB,YAAAuzE,QAAN,W,kGAEc,OADJzB,EAAOh5E,KAAKm1E,iBAAmBn1E,KAAKk1E,YAAc,4BAA8B,QAC5E,GAAMl1E,KAAK2W,KAAK,MAAOqiE,EAAM,MAAM,GAAM,I,OACnD,OADM9xE,EAAI,SACH,CAAP,EAAO,IAAI,EAAAwzE,aAAaxzE,YAKtB,YAAAgxC,sBAAN,W,gGACc,SAAMl4C,KAAK2W,KAAK,MAAO,cAAe,MAAM,GAAM,I,OAC5D,OADMzP,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAAyzE,oCAGzB,YAAAtf,kCAAN,SAAwC94D,G,gGAC1B,SAAMvC,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,cAAe,MAAM,GAAM,I,OACjG,OADM2E,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAAyzE,oCAGzB,YAAA7xD,0BAAN,SAAgC3E,G,gGAClB,SAAMnkB,KAAK2W,KAAK,OAAQ,gCAAiCwN,GAAS,GAAM,I,OAClF,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA0zE,+BAA+B1zE,YAGxC,YAAAwhB,kBAAN,SAAwBvE,G,gGACV,SAAMnkB,KAAK2W,KAAK,OAAQ,wBAAyBwN,GAAS,GAAM,I,OAC1E,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA2zE,uBAAuB3zE,YAGhC,YAAAshB,gBAAN,SAAsBrE,G,gGACR,SAAMnkB,KAAK2W,KAAK,OAAQ,sBAAuBwN,GAAS,GAAM,I,OACxE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA4zE,qBAAqB5zE,YAG9B,YAAAqhB,4BAAN,SAAkChmB,EAC9B4hB,G,gGACU,SAAMnkB,KAAK2W,KAAK,OAAQ,kBAAoBpU,EAAiB,sBACnE4hB,GAAS,GAAM,I,OACnB,OAFMjd,EAAI,SAEH,CAAP,EAAO,IAAI,EAAA4zE,qBAAqB5zE,YAG9B,YAAA8hB,oBAAN,SAA0B7E,G,gGACZ,SAAMnkB,KAAK2W,KAAK,OAAQ,0BAA2BwN,GAAS,GAAM,I,OAC5E,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA6zE,yBAAyB7zE,YAGlC,YAAA0hB,gBAAN,SAAsBzE,G,gGACR,SAAMnkB,KAAK2W,KAAK,OAAQ,sBAAuBwN,GAAS,GAAM,I,OACxE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8zE,qBAAqB9zE,YAG9B,YAAAi2D,yBAAN,SAA+Bh5C,G,gGACjB,SAAMnkB,KAAK2W,KAAK,OAAQ,gCAAiCwN,GAAS,GAAM,I,OAClF,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA+zE,kBAAkB/zE,YAG3B,YAAAkhB,oBAAN,SAA0BjE,G,gGACZ,SAAMnkB,KAAK2W,KAAK,OAAQ,0BAA2BwN,GAAS,GAAM,I,OAC5E,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAAg0E,yBAAyBh0E,YAGlC,YAAAs0D,0BAAN,SACIr3C,G,gGACU,SAAMnkB,KAAK2W,KAAK,MAAO,4BAA6BwN,GAAS,GAAM,I,OAC7E,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA0zE,+BAA+B1zE,YAGxC,YAAA80D,kBAAN,SAAwB73C,G,gGACV,SAAMnkB,KAAK2W,KAAK,MAAO,oBAAqBwN,GAAS,GAAM,I,OACrE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA2zE,uBAAuB3zE,YAGhC,YAAA4wC,gBAAN,SAAsB3zB,G,gGACR,SAAMnkB,KAAK2W,KAAK,MAAO,kBAAmBwN,GAAS,GAAM,I,OACnE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA4zE,qBAAqB5zE,YAG9B,YAAA2wC,4BAAN,SAAkCt1C,EAC9B4hB,G,gGACU,SAAMnkB,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,kBAAmB4hB,GAAS,GAAM,I,OACxG,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA4zE,qBAAqB5zE,YAG9B,YAAAu3D,oBAAN,SAA0Bt6C,G,gGACZ,SAAMnkB,KAAK2W,KAAK,MAAO,sBAAuBwN,GAAS,GAAM,I,OACvE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA6zE,yBAAyB7zE,YAGlC,YAAA21D,gBAAN,SAAsB14C,G,gGACR,SAAMnkB,KAAK2W,KAAK,MAAO,kBAAmBwN,GAAS,GAAM,I,OACnE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8zE,qBAAqB9zE,YAG9B,YAAA81D,mBAAN,SAAyB74C,G,gGACX,SAAMnkB,KAAK2W,KAAK,SAAU,kBAAmBwN,GAAS,GAAM,I,OACtE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8zE,qBAAqB9zE,YAG9B,YAAAmuB,oBAAN,SAA0BlR,G,gGACZ,SAAMnkB,KAAK2W,KAAK,MAAO,sBAAuBwN,GAAS,GAAM,I,OACvE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAAyzE,0BAA0BzzE,YAGnC,YAAAkuB,gCAAN,SAAsC7yB,EAClC4hB,G,gGACU,SAAMnkB,KAAK2W,KAAK,MAAO,kBAAoBpU,EAAiB,sBAClE4hB,GAAS,GAAM,I,OACnB,OAFMjd,EAAI,SAEH,CAAP,EAAO,IAAI,EAAAyzE,0BAA0BzzE,YAGzC,YAAAohD,qBAAA,SAAqBnkC,GACjB,OAAOnkB,KAAK2W,KAAK,OAAQ,sBAAuBwN,GAAS,GAAO,IAGpE,YAAA03C,wBAAA,SAAwB13C,GACpB,OAAOnkB,KAAK2W,KAAK,OAAQ,yBAA0BwN,GAAS,GAAM,IAGtE,YAAAg3D,mBAAA,SAAmBh3D,GACf,OAAOnkB,KAAK2W,KAAK,OAAQ,+BAAgCwN,GAAS,GAAO,IAKvE,YAAAglD,0BAAN,W,gGACc,SAAMnpE,KAAK2W,KAAK,MAAO,4BAA6B,MAAM,GAAM,I,OAC1E,OADMzP,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAA6rE,gDAGzB,YAAAV,0BAAN,W,gGACc,SAAMryE,KAAK2W,KAAK,MAAO,4BAA6B,MAAM,GAAM,I,OAC1E,OADMzP,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAA+sE,gDAGzB,YAAAI,mBAAN,SAAyBz0E,G,gGACX,SAAMI,KAAK2W,KAAK,MAAO,qBAAuB/W,EAAI,MAAM,GAAM,I,OACxE,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAA6rE,sCAAsC7rE,YAG/C,YAAAutE,4BAAN,SAAkC70E,G,gGACpB,SAAMI,KAAK2W,KAAK,MAAO,qBAAuB/W,EAAK,YAAa,MAAM,GAAM,I,OACtF,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAAgzE,yBAG/B,YAAAjQ,mBAAA,SAAmBrqE,EAAYukB,GAC3B,OAAOnkB,KAAK2W,KAAK,MAAO,qBAAuB/W,EAAIukB,GAAS,GAAM,IAGtE,YAAA2uD,sBAAA,SAAsBlzE,GAClB,OAAOI,KAAK2W,KAAK,SAAU,qBAAuB/W,EAAI,MAAM,GAAM,IAGtE,YAAA40E,0BAAA,SAA0BrwD,GACtB,OAAOnkB,KAAK2W,KAAK,OAAQ,2BAA4BwN,GAAS,GAAM,IAGxE,YAAAwuD,4BAAA,SAA4B/yE,GACxB,OAAOI,KAAK2W,KAAK,OAAQ,qBAAuB/W,EAAK,YAAa,MAAM,GAAM,IAGlF,YAAA8mD,0BAAA,SAA0B9mD,EAAYukB,GAClC,OAAOnkB,KAAK2W,KAAK,OAAQ,qBAAuB/W,EAAK,UAAWukB,GAAS,GAAM,IAGnF,YAAA0vD,2BAAA,SAA2Bj0E,EAAYukB,GACnC,OAAOnkB,KAAK2W,KAAK,OAAQ,qBAAuB/W,EAAK,WAAYukB,GAAS,GAAM,IAGpF,YAAAgvD,4BAAA,SAA4BvzE,GACxB,OAAOI,KAAK2W,KAAK,OAAQ,qBAAuB/W,EAAK,YAAa,MAAM,GAAM,IAGlF,YAAA0zE,2BAAA,SAA2B1zE,GACvB,OAAOI,KAAK2W,KAAK,OAAQ,qBAAuB/W,EAAK,WAAY,MAAM,GAAM,IAGjF,YAAA2zE,0BAAA,SAA0B3zE,GACtB,OAAOI,KAAK2W,KAAK,OAAQ,qBAAuB/W,EAAK,UAAW,MAAM,GAAM,IAG1E,YAAA+0E,4BAAN,SAAkC/0E,G,gGACpB,SAAMI,KAAK2W,KAAK,OAAQ,qBAAuB/W,EAAK,YAAa,MAAM,GAAM,I,OACvF,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAAgtE,gCAAgChtE,YAGzC,YAAA4tE,4BAAN,SAAkCl1E,EAAYukB,G,0FAChC,SAAMnkB,KAAK2W,KAAK,OAAQ,qBAAuB/W,EAAK,YAAaukB,GAAS,GAAM,I,cAAhF,S,YAGR,YAAA+sD,wBAAN,SAA8BtxE,G,gGAChB,SAAMI,KAAK2W,KAAK,OAAQ,qBAAuB/W,EAAK,QAAS,MAAM,GAAM,I,OACnF,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAAitE,4BAA4BjtE,YAKrC,YAAA6tC,gBAAN,SAAsBn1C,G,gGACR,SAAMI,KAAK2W,KAAK,MAAO,kBAAoB/W,EAAI,MAAM,GAAM,I,OACrE,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAAk0E,qBAAqBl0E,YAG9B,YAAA4rC,uBAAN,SAA6BlzC,G,gGACf,SAAMI,KAAK2W,KAAK,MAAO,kBAAoB/W,EAAK,WAAY,MAAM,GAAM,I,OAClF,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAAuvE,gBAAgBvvE,YAGzB,YAAAmxD,4BAAN,SAAkCz4D,G,gGACpB,SAAMI,KAAK2W,KAAK,MAAO,kBAAoB/W,EAAK,gBAAiB,MAAM,GAAM,I,OACvF,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAAm0E,iCAAiCn0E,YAG1C,YAAAqzD,uBAAN,SAA6B36D,EAAY06D,G,mEACrC,MAAO,CAAP,EAAOt6D,KAAK2W,KAAK,MAAO,kBAAoB/W,EAAK,2BAA6B06D,EAC1E,MAAM,GAAM,WAGd,YAAA12C,uBAAN,SAA6BhkB,G,gGACf,SAAMI,KAAK2W,KAAK,MAAO,kBAAoB/W,EAAK,OAAQ,MAAM,GAAM,I,OAC9E,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAAyvE,gBAAgBzvE,YAGzB,YAAAugC,iBAAN,SAAuBtjB,G,gGACT,SAAMnkB,KAAK2W,KAAK,OAAQ,iBAAkBwN,GAAS,GAAM,I,OACnE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAAk0E,qBAAqBl0E,YAG9B,YAAAuvD,gBAAN,SAAsB72D,EAAYukB,G,gGACpB,SAAMnkB,KAAK2W,KAAK,MAAO,kBAAoB/W,EAAIukB,GAAS,GAAM,I,OACxE,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAAk0E,qBAAqBl0E,YAG9B,YAAAsd,uBAAN,SAA6B5kB,EAAYukB,G,mEACrC,MAAO,CAAP,EAAOnkB,KAAK2W,KAAK,MAAO,kBAAoB/W,EAAK,OAAQukB,GAAS,GAAM,WAG5E,YAAAyoB,sBAAA,SAAsBhtC,GAClB,OAAOI,KAAK2W,KAAK,OAAQ,kBAAoB/W,EAAK,SAAU,MAAM,GAAM,IAGtE,YAAA8mC,wBAAN,SAA8BvjC,G,gGAChB,SAAMnD,KAAK2W,KAAK,OAAQ,yBAA0BxT,GAAM,GAAM,I,OACxE,OADM+D,EAAI,SACH,CAAP,EAAO,IAAI,EAAAk0E,qBAAqBl0E,YAG9B,YAAAyvC,8BAAN,SAAoC/2C,EAAYuD,G,mEAC5C,MAAO,CAAP,EAAOnD,KAAK2W,KAAK,OAAQ,kBAAoB/W,EAAK,WAAYuD,GAAM,GAAM,WAGxE,YAAA+zD,uBAAN,SAA6Bt3D,EAAYukB,G,gGAC3B,SAAMnkB,KAAK2W,KAAK,OAAQ,kBAAoB/W,EAAK,WAAYukB,GAAS,GAAM,I,OACtF,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAAkwE,eAAelwE,YAGxB,YAAAywD,6BAAN,SAAmC/3D,EAAYukB,G,gGACjC,SAAMnkB,KAAK2W,KAAK,OAAQ,kBAAoB/W,EAAK,kBAAmBukB,GAAS,GAAM,I,OAC7F,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAAkwE,eAAelwE,YAGxB,YAAAygC,wBAAN,SAA8B/nC,EAAYukB,G,gGAC5B,SAAMnkB,KAAK2W,KAAK,OAAQ,kBAAoB/W,EAAK,WAAYukB,GAAS,GAAM,I,OACtF,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA+vE,gBAAgB/vE,YAGzB,YAAA8zD,qBAAN,SAA2Bp7D,EAAYukB,G,gGACzB,SAAMnkB,KAAK2W,KAAK,OAAQ,kBAAoB/W,EAAK,QAASukB,GAAS,GAAM,I,OACnF,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA+vE,gBAAgB/vE,YAGzB,YAAAkwC,wBAAN,SAA8Bx3C,EAAYukB,G,gGAC5B,SAAMnkB,KAAK2W,KAAK,OAAQ,kBAAoB/W,EAAK,WAAYukB,GAAS,GAAM,I,OACtF,OADMjd,EAAI,SACH,CAAP,EAAO,IAAI,EAAA+vE,gBAAgB/vE,YAG/B,YAAAovC,wBAAA,SAAwB12C,EAAYukB,GAChC,OAAOnkB,KAAK2W,KAAK,OAAQ,kBAAoB/W,EAAK,WAAYukB,GAAS,GAAM,IAGjF,YAAAqvB,2BAAA,SAA2B5zC,EAAYukB,GACnC,OAAOnkB,KAAK2W,KAAK,OAAQ,kBAAoB/W,EAAK,eAAgBukB,GAAS,GAAM,IAGrF,YAAAw0C,uBAAA,SAAuB/4D,GACnB,OAAOI,KAAK2W,KAAK,OAAQ,kBAAoB/W,EAAK,UAAW,MAAM,GAAM,IAG7E,YAAA64D,0BAAA,SAA0B74D,GACtB,OAAOI,KAAK2W,KAAK,OAAQ,kBAAoB/W,EAAK,aAAc,MAAM,GAAM,IAGhF,YAAA+2D,mBAAA,SAAmB/2D,EAAYukB,GAC3B,OAAOnkB,KAAK2W,KAAK,SAAU,kBAAoB/W,EAAIukB,GAAS,GAAM,IAKhE,YAAAm3D,UAAN,SAAgBxtD,EAAeL,EAAa3N,G,gGAC9B,SAAM9f,KAAK2W,KAAK,MAAO3W,KAAKu7E,mBAAmB,UAAWztD,EAAOL,EAAK3N,GAAQ,MAAM,GAAM,I,OACpG,OADM5Y,EAAI,SACH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAAs0E,wBAGzB,YAAA/pC,gBAAN,SAAsB7xC,EAAYkuB,EAAeL,EAC7C3N,G,gGACU,SAAM9f,KAAK2W,KAAK,MAAO3W,KAAKu7E,mBAAmB,YAAc37E,EAAK,UAAWkuB,EAAOL,EAAK3N,GAC/F,MAAM,GAAM,I,OAChB,OAFM5Y,EAAI,SAEH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAAs0E,wBAGzB,YAAAjtB,sBAAN,SAA4B3uD,EAAYkuB,EAAeL,EACnD3N,G,gGACU,SAAM9f,KAAK2W,KAAK,MAAO3W,KAAKu7E,mBAAmB,kBAAoB37E,EAAK,UAAWkuB,EAAOL,EAAK3N,GACrG,MAAM,GAAM,I,OAChB,OAFM5Y,EAAI,SAEH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAAs0E,wBAGzB,YAAAjqC,0BAAN,SAAgChvC,EAAwB3C,EACpDkuB,EAAeL,EAAa3N,G,gGAClB,SAAM9f,KAAK2W,KAAK,MACtB3W,KAAKu7E,mBAAmB,kBAAoBh5E,EAAiB,UAAY3C,EAAK,UAAWkuB,EAAOL,EAAK3N,GACrG,MAAM,GAAM,I,OAChB,OAHM5Y,EAAI,SAGH,CAAP,EAAO,IAAI,EAAA8wE,aAAa9wE,EAAG,EAAAs0E,wBAGzB,YAAAC,kBAAN,SAAwBt3D,G,kGACD,SAAMnkB,KAAK07E,wB,OASb,OATXC,EAAa,SACb/F,EAAU,IAAIC,QAAQ,CACxB,cAAe71E,KAAK0uB,WACpB,cAAiB,UAAYitD,EAC7B,eAAgB,oCAEQ,MAAxB37E,KAAKg1E,iBACLY,EAAQ1mE,IAAI,aAAclP,KAAKg1E,iBAElB,GAAMh1E,KAAK29C,MAAM,IAAIC,QAAQ59C,KAAK01E,cAAgB,WAAY,CAC3ExT,MAAO,WACP+T,YAAaj2E,KAAKk2E,iBAClB36D,OAAQ,OACRsC,KAAM68C,KAAKC,UAAUx2C,GACrByxD,QAASA,M,OAEb,OAAwB,MAPP,SAOJj2D,OACF,CAAP,EAAOzK,QAAQ+J,OAAO,uB,YAMxB,YAAAgyC,iBAAN,SAAuBrxD,G,gGACT,SAAMI,KAAK2W,KAAK,MAAO,UAAY/W,EAAK,cAAe,MAAM,GAAM,I,OAC7E,OADMsH,EAAI,SACH,CAAP,EAAO,IAAI,EAAA00E,gBAAgB10E,YAKzB,YAAA20E,cAAN,SAAoBhyE,G,0FACN,SAAM7J,KAAK2W,KAAK,MAAO,yBAA2B9M,EAAU,MAAM,GAAM,I,OAClF,MAAO,CAAP,EADU,SACDvC,KAAI,SAAC+H,GAAW,WAAI,EAAAysE,sBAAsBzsE,eAKjD,YAAAqmC,kBAAN,SAAwBvxB,G,0FACV,SAAMnkB,KAAK2W,KAAK,OAAQ,kBAAmBwN,GAAS,GAAM,I,OACpE,MAAO,CAAP,EADU,kBAIR,YAAA5E,iBAAN,W,0FACc,SAAMvf,KAAK2W,KAAK,OAAQ,iBAAkB,MAAM,GAAM,I,OAChE,MAAO,CAAP,EADU,kBAMR,YAAA+kE,qBAAN,W,kGACsB,SAAM17E,KAAK08B,aAAaq/C,Y,cAAtCz7C,EAAc,SACdtgC,KAAK08B,aAAas/C,oBACI,GAAMh8E,KAAKw2E,kBADjC,M,OACM91C,EAAgB,SACtBJ,EAAcI,EAAcJ,Y,iBAEhC,MAAO,CAAP,EAAOA,WAGX,YAAAqd,MAAA,SAAMx5B,GAKF,MAJuB,QAAnBA,EAAQ5I,SACR4I,EAAQyxD,QAAQ1mE,IAAI,gBAAiB,YACrCiV,EAAQyxD,QAAQ1mE,IAAI,SAAU,aAE3BlP,KAAKi8E,YAAY93D,IAG5B,YAAA83D,YAAA,SAAY93D,GACR,OAAOw5B,MAAMx5B,IAGX,YAAAmmC,eAAN,SAAqBrf,G,sGACjB,GAAkB,MAAdA,GAAqC,KAAfA,EACtB,MAAM,IAAItpC,MAAM,6CAWH,OATXi0E,EAAU,IAAIC,QAAQ,CACxB,OAAU,mBACV,cAAe71E,KAAK0uB,aAEI,MAAxB1uB,KAAKg1E,iBACLY,EAAQ1mE,IAAI,aAAclP,KAAKg1E,iBAG7BgE,EAAO,mCAAmC5sE,mBAAmB6+B,GAClD,GAAMjrC,KAAK29C,MAAM,IAAIC,QAAQ59C,KAAK6qD,gBAAkBmuB,EAAM,CACvE9W,MAAO,WACP+T,YAAaj2E,KAAKk2E,iBAClBN,QAASA,EACTr6D,OAAQ,U,cAGY,OAPlB3a,EAAW,UAOJ+e,OAAT,MACO,CAAP,GAAO,G,OAEO,SAAM3f,KAAKk8E,YAAYt7E,GAAU,GAAO,I,OACtD,OADMme,EAAQ,SACP,CAAP,EAAO7J,QAAQ+J,OAAOF,YAIhB,YAAApI,KAAd,SAAmB4E,EAA2Cy9D,EAAcn7D,EACxE4W,EAAiB0nD,EAAsBvE,G,+GACvCA,EAAS,EAAAnyE,MAAMf,mBAAmBkzE,GAAU53E,KAAKy1E,WAAamC,EACxDhC,EAAU,IAAIC,QAAQ,CACxB,cAAe71E,KAAK0uB,aAEI,MAAxB1uB,KAAKg1E,iBACLY,EAAQ1mE,IAAI,aAAclP,KAAKg1E,iBAG7BoH,EAA2B,CAC7Bla,MAAO,WACP+T,YAAaj2E,KAAKk2E,iBAClB36D,OAAQA,GAGRkZ,EACmB,GAAMz0B,KAAK07E,wBAD9B,M,OACMC,EAAa,SACnB/F,EAAQ1mE,IAAI,gBAAiB,UAAYysE,G,iBAoB5B,OAlBL,MAAR99D,IACoB,iBAATA,GACPu+D,EAAYv+D,KAAOA,EACnB+3D,EAAQ1mE,IAAI,eAAgB,qDACL,iBAAT2O,IACVA,aAAgB2oB,SAChB41C,EAAYv+D,KAAOA,GAEnB+3D,EAAQ1mE,IAAI,eAAgB,mCAC5BktE,EAAYv+D,KAAO68C,KAAKC,UAAU98C,MAI1Cs+D,GACAvG,EAAQ1mE,IAAI,SAAU,oBAG1BktE,EAAYxG,QAAUA,EACL,GAAM51E,KAAK29C,MAAM,IAAIC,QAAQg6B,EAASoB,EAAMoD,K,cAAvDx7E,EAAW,SAEbu7E,GAAmC,MAApBv7E,EAAS+e,OACH,GAAM/e,EAASi9C,QADpC,M,OAEA,MAAO,CAAP,EADqB,U,cAEM,MAApBj9C,EAAS+e,OAAT,MACO,GAAM3f,KAAKk8E,YAAYt7E,GAAU,EAAO6zB,I,OACtD,OADM1V,EAAQ,SACP,CAAP,EAAO7J,QAAQ+J,OAAOF,I,yBAIhB,YAAAm9D,YAAd,SAA0Bt7E,EAAoBy7E,EAAqB5nD,G,yGAC3DA,IAAY4nD,GAAkC,MAApBz7E,EAAS+e,QAAuC,MAApB/e,EAAS+e,QAAsC,MAApB/e,EAAS+e,QAC1F,GAAM3f,KAAK+0E,gBAAe,IAD1B,M,OAEA,OADA,SACO,CAAP,EAAO,M,cAGPh3B,EAAoB,KACpB/9C,KAAKm2E,eAAev1E,GACL,GAAMA,EAASi9C,QAD9B,M,cACAE,EAAe,S,oBACR/9C,KAAKs8E,eAAe17E,I,KACF,GAAMA,EAASkhB,SADjC,M,OACS,EAAAy6D,QAAS,SAAzBx+B,EAA8C,E,iBAGlD,MAAO,CAAP,EAAO,IAAI,EAAAwE,cAAcxE,EAAcn9C,EAAS+e,OAAQ08D,YAG9C,YAAA7F,eAAd,W,4GACyB,SAAMx2E,KAAK08B,aAAa8/C,mB,OAC7C,GAAoB,OADd17C,EAAe,WACwB,KAAjBA,EACxB,MAAM,IAAIn/B,MAYG,OAVXi0E,EAAU,IAAIC,QAAQ,CACxB,eAAgB,mDAChB,OAAU,mBACV,cAAe71E,KAAK0uB,aAEI,MAAxB1uB,KAAKg1E,iBACLY,EAAQ1mE,IAAI,aAAclP,KAAKg1E,iBAG7ByH,EAAez8E,KAAK08B,aAAaggD,cACtB,GAAM18E,KAAK29C,MAAM,IAAIC,QAAQ59C,KAAK6qD,gBAAkB,iBAAkB,CACnFhtC,KAAM7d,KAAK81E,YAAY,CACnB6G,WAAY,gBACZC,UAAWH,EAAaG,UACxBC,cAAe/7C,IAEnBohC,MAAO,WACP+T,YAAaj2E,KAAKk2E,iBAClBN,QAASA,EACTr6D,OAAQ,W,cAGY,OAZlB3a,EAAW,UAYJ+e,OAAT,MACqB,GAAM/e,EAASi9C,Q,OAEpC,OAFME,EAAe,SACfrd,EAAgB,IAAI,EAAA01C,sBAAsBr4B,GAChD,GAAM/9C,KAAK08B,aAAamE,UAAUH,EAAcJ,YAAaI,EAAcI,e,OAC3E,OADA,SACO,CAAP,EAAOJ,G,OAEO,SAAM1gC,KAAKk8E,YAAYt7E,GAAU,GAAM,I,OACrD,OADMme,EAAQ,SACP,CAAP,EAAO7J,QAAQ+J,OAAOF,YAItB,YAAA+2D,YAAR,SAAoBpyD,GAChB,OAAO5kB,OAAO0lD,KAAK9gC,GAAQpc,KAAI,SAAA3I,GAC3B,OAAOyN,mBAAmBzN,GAAO,IAAMyN,mBAAmBsX,EAAO/kB,OAClEmF,KAAK,MAGJ,YAAAoyE,eAAR,WACI,IAAKl2E,KAAKk1E,aAAel1E,KAAKo1E,aAC1B,MAAO,WAKP,YAAAmG,mBAAR,SAA2B5gE,EAAcmT,EAAeL,EAAa3N,GAYjE,OAXa,MAATgO,IACAnT,GAAS,UAAYmT,GAEd,MAAPL,IACA9S,GAASA,EAAKvV,QAAQ,MAAQ,EAAI,IAAM,IACxCuV,GAAS,OAAS8S,GAET,MAAT3N,IACAnF,GAASA,EAAKvV,QAAQ,MAAQ,EAAI,IAAM,IACxCuV,GAAS,qBAAuBmF,GAE7BnF,GAGH,YAAAw7D,eAAR,SAAuBv1E,GACnB,IAAMk8E,EAAal8E,EAASg1E,QAAQp3E,IAAI,gBACxC,OAAqB,MAAds+E,GAAsBA,EAAW13E,QAAQ,qBAAuB,GAGnE,YAAAk3E,eAAR,SAAuB17E,GACnB,IAAMk8E,EAAal8E,EAASg1E,QAAQp3E,IAAI,gBACxC,OAAqB,MAAds+E,GAAsBA,EAAW13E,QAAQ,SAAW,GAEnE,EAhtCA,GAAa,EAAA5F,c,8ZCtIb,YACA,SAEA,cAMI,WAAYoB,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKhB,GAAK,EAAK4B,oBAAoB,MACnC,EAAKe,eAAiB,EAAKf,oBAAoB,kBAC/C,EAAKkG,KAAO,EAAKlG,oBAAoB,QACrC,EAAKghB,WAAa,EAAKhhB,oBAAoB,c,EAEnD,OAbwC,OAaxC,EAbA,CAAwC,EAAAU,cAA3B,EAAA03E,qBAeb,kBAGI,WAAYh5E,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK6hB,SAAW,EAAKjhB,oBAAoB,cAAe,E,EAEhE,OAP+C,OAO/C,EAPA,CAA+Co4E,GAAlC,EAAAmD,4BASb,kBAGI,WAAYn8E,GAAZ,MACI,YAAMA,IAAS,KAHnB,EAAAitD,OAAsC,GAIlC,IAAMA,EAAS,EAAKrsD,oBAAoB,U,OAC1B,MAAVqsD,IACA,EAAKA,OAASA,EAAOvmD,KAAI,SAAC4mD,GAAW,WAAI,EAAAphB,0BAA0BohB,O,EAG/E,OAVoD,OAUpD,EAVA,CAAoD0rB,GAAvC,EAAAD,kC,8ZC3Bb,YACA,SAEA,cAII,WAAY/4E,GAAZ,MACI,YAAMA,IAAS,KAHnB,EAAAiqE,wBAAkD,GAI9C,EAAKD,kBAAoB,EAAKppE,oBAAoB,qBAClD,IAAMqpE,EAA0B,EAAKrpE,oBAAoB,2B,OAErD,EAAKqpE,wBADsB,MAA3BA,EAC+BA,EAAwBvjE,KAAI,SAACkmB,GAAW,WAAI,EAAAwvD,qBAAqBxvD,MAEjE,G,EAG3C,OAdqC,OAcrC,EAdA,CAAqC,EAAAtrB,cAAxB,EAAAs4E,mB,8ZCHb,IAEA,cAKI,WAAY55E,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKhB,GAAK,EAAK4B,oBAAoB,MACnC,EAAKkG,KAAO,EAAKlG,oBAAoB,QACrC,EAAK+e,aAAe,EAAK/e,oBAAoB,gB,EAErD,OAXoC,OAWpC,EAXA,CAFA,MAEoCU,cAAvB,EAAAo1E,kB,8ZCFb,YACA,SAIA,cAuBI,WAAY12E,GAAZ,MACI,YAAMA,IAAS,KACf,EAAKhB,GAAK,EAAK4B,oBAAoB,MACnC,EAAKypC,WAAa,EAAKzpC,oBAAoB,cAC3C,EAAKkG,KAAO,EAAKlG,oBAAoB,QACrC,EAAKwlC,aAAe,EAAKxlC,oBAAoB,gBAC7C,EAAKy7E,iBAAmB,EAAKz7E,oBAAoB,oBACjD,EAAK07E,iBAAmB,EAAK17E,oBAAoB,oBACjD,EAAK27E,iBAAmB,EAAK37E,oBAAoB,oBACjD,EAAK47E,gBAAkB,EAAK57E,oBAAoB,mBAChD,EAAK67E,kBAAoB,EAAK77E,oBAAoB,qBAClD,EAAKqlC,aAAe,EAAKrlC,oBAAoB,gBAC7C,IAAM6gC,EAAO,EAAK7gC,oBAAoB,Q,OACtC,EAAK6gC,KAAe,MAARA,EAAe,KAAO,IAAI,EAAAg4C,aAAah4C,GACnD,EAAKyE,SAAW,EAAKtlC,oBAAoB,YACzC,EAAKqpC,MAAQ,EAAKrpC,oBAAoB,SACtC,EAAKspC,eAAiB,EAAKtpC,oBAAoB,kBAC/C,EAAKupC,aAAe,EAAKvpC,oBAAoB,gBAC7C,EAAK4oC,UAAY,EAAK5oC,oBAAoB,aAC1C,EAAK6oC,aAAe,EAAK7oC,oBAAoB,gBAC7C,EAAK8oC,UAAY,EAAK9oC,oBAAoB,aAC1C,EAAK40B,QAAU,EAAK50B,oBAAoB,WACxC,EAAK+oC,OAAS,EAAK/oC,oBAAoB,UACvC,EAAKgpC,OAAS,EAAKhpC,oBAAoB,U,EAE/C,OAhD0C,OAgD1C,EAhDA,CAA0C,EAAAU,cAA7B,EAAAk5E,wB,8ZCFb,IAEA,cA6CI,WAAYx6E,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKuB,KAAO,EAAKX,oBAAoB,QACrC,EAAK0gC,QAAU,EAAK1gC,oBAAoB,WACxC,EAAKkG,KAAO,EAAKlG,oBAAoB,QACrC,EAAK6hC,SAAW,EAAK7hC,oBAAoB,YACzC,EAAK87E,oBAAsB,EAAK97E,oBAAoB,uBACpD,EAAK+7E,2BAA6B,EAAK/7E,oBAAoB,8BAC3D,EAAKgiC,oBAAsB,EAAKhiC,oBAAoB,uBACpD,EAAKqjC,UAAY,EAAKrjC,oBAAoB,aAC1C,EAAKg8E,cAAgB,EAAKh8E,oBAAoB,iBAC9C,EAAKspC,eAAiB,EAAKtpC,oBAAoB,kBAC/C,EAAKi8E,SAAW,EAAKj8E,oBAAoB,YACzC,EAAK0iC,yBAA2B,EAAK1iC,oBAAoB,4BACzD,EAAKk8E,mBAAqB,EAAKl8E,oBAAoB,sBACnD,EAAKwiC,2BAA6B,EAAKxiC,oBAAoB,8BAC3D,EAAKm8E,qBAAuB,EAAKn8E,oBAAoB,wBACrD,EAAK6iC,uBAAyB,EAAK7iC,oBAAoB,0BACvD,EAAKo8E,gBAAkB,EAAKp8E,oBAAoB,mBAChD,EAAKq8E,YAAc,EAAKr8E,oBAAoB,eAC5C,EAAKs8E,YAAc,EAAKt8E,oBAAoB,eAC5C,EAAKu8E,UAAY,EAAKv8E,oBAAoB,aAC1C,EAAKw8E,aAAe,EAAKx8E,oBAAoB,gBAC7C,EAAKy8E,UAAY,EAAKz8E,oBAAoB,aAC1C,EAAKu6B,QAAU,EAAKv6B,oBAAoB,WACxC,EAAK08E,OAAS,EAAK18E,oBAAoB,UACvC,EAAK28E,OAAS,EAAK38E,oBAAoB,UACvC,EAAK48E,OAAS,EAAK58E,oBAAoB,UACvC,EAAKopC,gBAAkB,EAAKppC,oBAAoB,mBAChD,EAAK68E,iBAAmB,EAAK78E,oBAAoB,oBACjD,EAAK88E,iBAAmB,EAAK98E,oBAAoB,aACjD,EAAKiiC,WAAa,EAAKjiC,oBAAoB,cAC3C,EAAKkiC,SAAW,EAAKliC,oBAAoB,YACzC,EAAK+8E,aAAe,EAAK/8E,oBAAoB,gBAC7C,EAAKg9E,iBAAmB,EAAKh9E,oBAAoB,oBACjD,EAAKi9E,oBAAsB,EAAKj9E,oBAAoB,uBACpD,EAAKk9E,0BAA4B,EAAKl9E,oBAAoB,6BAC1D,EAAK4iC,UAAY,EAAK5iC,oBAAoB,aAC1C,EAAKsiC,UAAY,EAAKtiC,oBAAoB,aAC1C,EAAKoiC,4BAA8B,EAAKpiC,oBAAoB,+BAC5D,EAAK8iC,yBAA2B,EAAK9iC,oBAAoB,4B,EAEjE,OAvFkC,OAuFlC,EAvFA,CAFA,MAEkCU,cAArB,EAAAm4E,gB,8ZCLb,YAEA,cAUI,WAAYz5E,GAAZ,MACI,YAAMA,IAAS,KACf,EAAK+9E,YAAc,EAAKn9E,oBAAoB,eAC5C,EAAKo4D,UAAY,EAAKp4D,oBAAoB,aAC1C,EAAKupC,aAAe,EAAKvpC,oBAAoB,gBAC7C,EAAKg5D,QAAU,EAAKh5D,oBAAoB,WACxC,EAAKgF,WAAa,EAAKhF,oBAAoB,cAC3C,EAAK0rE,mBAAqB,EAAK1rE,oBAAoB,sBACnD,IAAMq3D,EAAe,EAAKr3D,oBAAoB,gBACxCm4D,EAAkB,EAAKn4D,oBAAoB,mB,OACjD,EAAKq3D,aAA+B,MAAhBA,EAAuB,KAAO,IAAI+lB,EAA4B/lB,GAClF,EAAKc,gBAAqC,MAAnBA,EAA0B,KAC7C,IAAIklB,EAA2CllB,G,EAE3D,OAxB0C,OAwB1C,EAxBA,CAA0C,EAAAz3D,cAA7B,EAAAw0E,uBA0Bb,kBAWI,WAAY91E,GAAZ,MACI,YAAMA,IAAS,KAHnB,EAAAqsB,MAA2C,GAIvC,EAAK6xD,aAAe,EAAKt9E,oBAAoB,kBAC7C,EAAKs9E,aAAe,EAAKt9E,oBAAoB,gBAC7C,EAAKu9E,gBAAkB,EAAKv9E,oBAAoB,mBAChD,EAAKw9E,cAAgB,EAAKx9E,oBAAoB,iBAC9C,EAAKy9E,cAAgB,EAAKz9E,oBAAoB,iBAC9C,EAAKk4D,gBAAkB,EAAKl4D,oBAAoB,mBAChD,EAAKme,OAAS,EAAKne,oBAAoB,UACvC,EAAKi4D,UAAY,EAAKj4D,oBAAoB,aAC1C,IAAMyrB,EAAQ,EAAKzrB,oBAAoB,S,OAC1B,MAATyrB,IACA,EAAKA,MAAQA,EAAM3lB,KAAI,SAACrJ,GAAW,WAAIihF,EAAgCjhF,O,EAGnF,OA1BiD,OA0BjD,EA1BA,CAAiD,EAAAiE,cAApC,EAAA08E,8BA4Bb,kBAMI,WAAYh+E,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK8G,KAAO,EAAKlG,oBAAoB,QACrC,EAAKg0C,OAAS,EAAKh0C,oBAAoB,UACvC,EAAK29E,SAAW,EAAK39E,oBAAoB,YACzC,EAAKu1C,SAAW,EAAKv1C,oBAAoB,Y,EAEjD,OAbqD,OAarD,EAbA,CAAqD,EAAAU,cAAxC,EAAAg9E,kCAeb,kBAII,WAAYt+E,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKgzB,KAAO,EAAKpyB,oBAAoB,QACrC,EAAKg0C,OAAS,EAAKh0C,oBAAoB,U,EAE/C,OATgE,OAShE,EATA,CAAgE,EAAAU,cAAnD,EAAA28E,8C,8ZCvEb,IAIA,cAOI,WAAYj+E,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKhB,GAAK,EAAK4B,oBAAoB,MACnC,EAAKe,eAAiB,EAAKf,oBAAoB,kBAC/C,EAAKW,KAAO,EAAKX,oBAAoB,QACrC,EAAK2B,KAAO,EAAK3B,oBAAoB,QACrC,EAAKgzB,QAAU,EAAKhzB,oBAAoB,W,EAEhD,OAfoC,OAepC,EAfA,CAJA,MAIoCU,cAAvB,EAAAg4E,kB,8ZCJb,YAIA,SACA,SAEA,cAiBI,WAAYt5E,GAAZ,MACI,YAAMA,IAAS,KACf,EAAKhB,GAAK,EAAK4B,oBAAoB,MACnC,EAAK8kE,SAAW,EAAK9kE,oBAAoB,YACzC,EAAKW,KAAO,EAAKX,oBAAoB,QACrC,EAAKkG,KAAO,EAAKlG,oBAAoB,QACrC,EAAKgH,MAAQ,EAAKhH,oBAAoB,SACtC,EAAK7C,IAAM,EAAK6C,oBAAoB,OACpC,EAAK+kE,eAAiB,EAAK/kE,oBAAoB,kBAC/C,EAAKglE,YAAc,EAAKhlE,oBAAoB,eAC5C,EAAK+e,aAAe,EAAK/e,oBAAoB,gBAC7C,EAAKijE,eAAiB,EAAKjjE,oBAAoB,kBAC/C,EAAKilE,aAAe,EAAKjlE,oBAAoB,gBAC7C,EAAKsI,SAAW,EAAKtI,oBAAoB,YACzC,EAAKyzB,QAAU,EAAKzzB,oBAAoB,cAAe,EAEvD,IAAMsgB,EAAO,EAAKtgB,oBAAoB,QAC1B,MAARsgB,IACA,EAAKA,KAAO,IAAI,EAAAuiC,YAAYviC,IAGhC,IAAMk7B,EAAO,EAAKx7C,oBAAoB,Q,OAC1B,MAARw7C,IACA,EAAKA,KAAO,IAAI,EAAAoH,YAAYpH,I,EAGxC,OA3CkC,OA2ClC,EA3CA,CAAkC,EAAA96C,cAArB,EAAAy1E,gB,68CCPb,YAKA,aACI,WAAoB9tC,GAAA,KAAAA,iBAqBxB,OAlBI,YAAApK,SAAA,WACI,OAAOz/B,KAAKo/E,gBAAgB,UAGhC,YAAAC,kBAAA,WACI,OAAOr/E,KAAKo/E,gBAAgB,mBAGlB,YAAAA,gBAAd,SAA8BzgF,G,kGACP,SAAMqB,KAAK6pC,eAAerrC,IAAYG,I,OACzD,OAAkB,OADZ2gF,EAAa,UAER,CAAP,EAAOA,IAGLC,EAAO,EAAA95E,MAAMqI,UACnB,GAAM9N,KAAK6pC,eAAe+c,KAAKjoD,EAAK4gF,K,OACpC,OADA,SACO,CAAP,EAAOA,WAEf,EAtBA,GAAa,EAAAzrB,gB,g7DCDb,aACA,QAOA,aACI,WAAoBrzC,EAAsDrF,GAAtD,KAAAqF,wBAAsD,KAAArF,aA6B9E,OA1BU,YAAAy+B,eAAN,SAAqB/vC,G,0GACC,SAAM9J,KAAKygB,sBAAsBQ,KAAKnX,EAAU,S,OAKjD,OALXoX,EAAY,SACZD,EAAO,EAAAxb,MAAM+H,gBAAgB0T,GAAWnf,cACxCy9E,EAAYv+D,EAAKra,OAAO,EAAG,GAC3B64E,EAAax+D,EAAKra,OAAO,GAEd,GAAM5G,KAAKob,WAAW6gE,YAAY,IAAIr+B,QAZrC,wCAYiE4hC,K,OAC9D,SADJ,SACmB19D,Q,OAKpC,OALM49D,EAAe,SAKd,CAAP,EAAgB,OAJVz6E,EAAQy6E,EAAa15E,MAAM,SAAS6Q,MAAK,SAAA8oE,GAC3C,OAAOA,EAAE35E,MAAM,KAAK,KAAOy5E,MAGRzzE,SAAS/G,EAAMe,MAAM,KAAK,GAAI,IAAM,WAGzD,YAAAsnE,iBAAN,SAAuBzjE,G,gGAER,O,sBAAA,GAAM7J,KAAKob,WAAWygE,cAAchyE,I,OAA3C,MAAO,CAAP,EAAO,U,OAGP,G,WAAyB,MADX,EACJq1B,WACN,MAAO,CAAC,EAAD,IAEX,MAAM,IAAIv9B,M,yBAvBlB,GADC,EAAAi+E,SAAS,KAAK,WAAM,0B,6HA2BzB,EA9BA,GAAa,EAAAzoE,gB,67DCZb,YACA,SACA,SAEA,SAEA,SACA,SACA,SAGA,SACA,SACA,SACA,SACA,SACA,SAGA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAQA,SAGA,SAWA,QAEA,SACA,QAEM0oE,EACa,WADbA,EAES,iBAFTA,EAGY,eAGZC,EAAuB,IAAI9wE,IAAyB,CACtD,CAAC,aAAc,IAAI+wE,IAAI,CAAC,yBAG5B,aAMI,WAAoB5mE,EAAsCoc,EAC9CyqD,EAA0C5kE,EAC1CyuB,EAAwCnqC,EACxC06B,GAHQ,KAAAjhB,gBAAsC,KAAAoc,cAC9C,KAAAyqD,kBAA0C,KAAA5kE,aAC1C,KAAAyuB,iBAAwC,KAAAnqC,cACxC,KAAA06B,gBALJ,KAAA6lD,mBAAyC,IAAI,EAAAC,mBAAmBlgF,KAAKmgF,uBA6+BjF,OAr+BI,sBAAI,mCAAoB,C,IAAxB,WACI,OAAOngF,KAAKogF,uB,IAEhB,SAAyB1hF,GACrBsB,KAAKogF,sBAAwB1hF,EACH,MAAtBsB,KAAKo6B,gBACQ,MAAT17B,EACAsB,KAAKo6B,gBAAgBimD,aAErBrgF,KAAKo6B,gBAAgBkmD,iB,gCAKjC,YAAAC,WAAA,WACIvgF,KAAKwgF,qBAAuB,KAC5BxgF,KAAKigF,mBAAmBjpE,SAGtB,YAAAqvB,QAAN,SAAc7c,EAAmB7qB,EAA0Bu7C,G,YAAA,IAAAA,MAAA,M,wGAEvC,MAAZ1wB,EAAM5pB,GAAN,MACsB,MAAlBs6C,EAAA,MACiB,GAAMl6C,KAAKxB,IAAIgrB,EAAM5pB,K,OAAtCs6C,EAAiB,S,wBAEC,MAAlBA,EAAA,MACuB,GAAMA,EAAe7kC,W,OAAtCorE,EAAiB,SACvBj3D,EAAMrE,gBAAkBs7D,EAAet7D,iBAAmB,GACtDqE,EAAMrnB,OAAS,EAAAyG,WAAWC,OAAS43E,EAAet+E,OAAS,EAAAyG,WAAWC,QACjC,MAAjC43E,EAAe/3E,MAAMoB,UAAsD,KAAlC22E,EAAe/3E,MAAMoB,UAC9D22E,EAAe/3E,MAAMoB,WAAa0f,EAAM9gB,MAAMoB,WACxCod,EAAK,IAAI,EAAAg0B,qBACZpxC,SAAW22E,EAAe/3E,MAAMoB,SACnCod,EAAGiE,aAAe3B,EAAM9gB,MAAM+c,qBAAuB,IAAI0D,KACzDK,EAAMrE,gBAAgBwoC,OAAO,EAAG,EAAGzmC,IAEnCsC,EAAM9gB,MAAM+c,qBAAuBg7D,EAAe/3E,MAAM+c,sBAG5Dg7D,EAAeC,YACTC,EAAuBF,EAAeh4E,OAAON,QAAO,SAAAZ,GAAK,OAAAA,EAAEpF,OAAS,EAAA6G,UAAU43E,QACtE,MAAVr5E,EAAEG,MAA2B,KAAXH,EAAEG,MAA0B,MAAXH,EAAE7I,OAA6B,KAAZ6I,EAAE7I,SACtD,EAA+B,MAAhB8qB,EAAM/gB,OAAiB,GACxC+gB,EAAM/gB,OAAON,QAAO,SAAAZ,GAAK,OAAAA,EAAEpF,OAAS,EAAA6G,UAAU43E,QAAoB,MAAVr5E,EAAEG,MAA2B,KAAXH,EAAEG,QAChFi5E,EAAqBv8E,SAAQ,SAAAy8E,GACzB,IAAMC,EAAe,EAAajqE,MAAK,SAAAtP,GAAK,OAAAA,EAAEG,OAASm5E,EAAGn5E,QAC1D,GAAoB,MAAhBo5E,GAAwBA,EAAapiF,QAAUmiF,EAAGniF,MAAO,CACzD,IAAMwoB,EAAK,IAAI,EAAAg0B,oBACfh0B,EAAGpd,SAAW+2E,EAAGn5E,KAAO,KAAOm5E,EAAGniF,MAClCwoB,EAAGiE,aAAe,IAAIhC,KACtBK,EAAMrE,gBAAgBwoC,OAAO,EAAG,EAAGzmC,Q,iBAKtB,MAAzBsC,EAAMrE,iBAA4D,IAAjCqE,EAAMrE,gBAAgBhnB,OACvDqrB,EAAMrE,gBAAkB,KACQ,MAAzBqE,EAAMrE,iBAA2BqE,EAAMrE,gBAAgBhnB,OAAS,IAEvEqrB,EAAMrE,gBAAkBqE,EAAMrE,gBAAgBljB,MAAM,EAAG,I,wBAIzDsE,EAAS,IAAI,EAAAikB,QACZ5qB,GAAK4pB,EAAM5pB,GAClB2G,EAAOqe,SAAW4E,EAAM5E,SACxBre,EAAOgC,SAAWihB,EAAMjhB,SACxBhC,EAAOhE,eAAiBinB,EAAMjnB,eAC9BgE,EAAOpE,KAAOqnB,EAAMrnB,KACpBoE,EAAO6e,cAAgBoE,EAAMpE,cAC7B7e,EAAOga,aAAeiJ,EAAMjJ,aAEjB,MAAP5hB,GAAwC,MAAzB4H,EAAOhE,eAAtB,MACM,GAAMvC,KAAKmZ,cAAcE,UAAU9S,EAAOhE,iB,OAChD,GAAW,OADX5D,EAAM,UAEF,MAAM,IAAIgD,MAAM,mD,iBAGxB,SAAMuT,QAAQK,IAAI,CACdvV,KAAK+gF,mBAAmBv3D,EAAOjjB,EAAQ,CACnCmB,KAAM,KACNc,MAAO,MACR7J,GACHqB,KAAKghF,kBAAkBz6E,EAAQijB,EAAO7qB,GACtCqB,KAAKihF,cAAcz3D,EAAM/gB,OAAQ9J,GAAK8B,MAAK,SAAAgI,GACvClC,EAAOkC,OAASA,KAEpBzI,KAAKkhF,yBAAyB13D,EAAMrE,gBAAiBxmB,GAAK8B,MAAK,SAAAymB,GAC3D3gB,EAAO4e,gBAAkB+B,KAE7BlnB,KAAKmhF,mBAAmB33D,EAAMtE,YAAavmB,GAAK8B,MAAK,SAAAykB,GACjD3e,EAAO2e,YAAcA,Q,OAI7B,OAjBA,SAiBO,CAAP,EAAO3e,WAGL,YAAA46E,mBAAN,SAAyBC,EAAoCziF,G,yGACzD,OAAwB,MAApByiF,GAAwD,IAA5BA,EAAiBjjF,OACtC,CAAP,EAAO,OAGL2W,EAA2B,GAC3BusE,EAA+B,GACrCD,EAAiBh9E,SAAQ,SAAMolB,GAAK,qC,iDAC1BG,EAAa,IAAI,EAAAP,YACZxpB,GAAK4pB,EAAM5pB,GACtB+pB,EAAWhL,KAAO6K,EAAM7K,KACxBgL,EAAWuiB,SAAW1iB,EAAM0iB,SAC5BviB,EAAWpkB,IAAMikB,EAAMjkB,IACjBmkB,EAAU1pB,KAAK+gF,mBAAmBv3D,EAAOG,EAAY,CACvD0B,SAAU,MACX1sB,GAAK8B,MAAK,gD,+DACQ,MAAb+oB,EAAM7qB,IAAN,OACA,EAAAgrB,EAAiB,GAAM3pB,KAAKmZ,cAAcktB,QAAQ7c,EAAM7qB,IAAIA,IAAKA,K,OAAjE,EAAWA,IAAM,S,wBAErB0iF,EAAel8E,KAAKwkB,G,cAExB7U,EAAS3P,KAAKukB,G,aAGlB,GAAMxU,QAAQK,IAAIT,K,OAClB,OADA,SACO,CAAP,EAAOusE,WAGL,YAAAJ,cAAN,SAAoBK,EAA0B3iF,G,kGAC1C,OAAK2iF,GAAgBA,EAAYnjF,QAI3B4W,EAAO/U,KACPuhF,EAAqB,GAC3B,GAAMD,EAAY73D,QAAO,SAACC,EAASvgB,GAC/B,OAAOugB,EAAQjpB,MAAK,WAChB,OAAOsU,EAAKysE,aAAar4E,EAAOxK,MACjC8B,MAAK,SAACghF,GACLF,EAAUp8E,KAAKs8E,QAEpBvsE,QAAQC,aAXA,CAAP,EAAO,M,OAaX,OARA,SAQO,CAAP,EAAOosE,WAGL,YAAAC,aAAN,SAAmBE,EAAuB/iF,G,gGAQtC,OAPMwK,EAAQ,IAAI,EAAAkgB,OACZlnB,KAAOu/E,EAAWv/E,KAEpBu/E,EAAWv/E,OAAS,EAAA6G,UAAU24E,SAAgC,SAArBD,EAAWhjF,QACpDgjF,EAAWhjF,MAAQ,SAGvB,GAAMsB,KAAK+gF,mBAAmBW,EAAYv4E,EAAO,CAC7CzB,KAAM,KACNhJ,MAAO,MACRC,I,OAEH,OALA,SAKO,CAAP,EAAOwK,WAGL,YAAA+3E,yBAAN,SAA+BU,EAAiCjjF,G,kGAC5D,OAAKijF,GAAaA,EAASzjF,QAIrB4W,EAAO/U,KACP6hF,EAAqB,GAC3B,GAAMD,EAASn4D,QAAO,SAACC,EAASxC,GAC5B,OAAOwC,EAAQjpB,MAAK,WAChB,OAAOsU,EAAK+sE,uBAAuB56D,EAAIvoB,MACxC8B,MAAK,SAACshF,GACLF,EAAO18E,KAAK48E,QAEjB7sE,QAAQC,aAXA,CAAP,EAAO,M,OAaX,OARA,SAQO,CAAP,EAAO0sE,WAGL,YAAAC,uBAAN,SAA6BE,EAA8BrjF,G,gGAIvD,OAHMuoB,EAAK,IAAI,EAAAoC,UACZ6B,aAAe62D,EAAQ72D,aAE1B,GAAMnrB,KAAK+gF,mBAAmBiB,EAAS96D,EAAI,CACvCpd,SAAU,MACXnL,I,OAEH,OAJA,SAIO,CAAP,EAAOuoB,WAGL,YAAA1oB,IAAN,SAAUoB,G,oGACS,SAAMI,KAAKu1B,YAAYyL,a,OACpB,OADZra,EAAS,SACG,GAAM3mB,KAAK6pC,eAAerrC,IAASqhF,I,OACrC,OADVv6D,EAAY,SACF,GAAMtlB,KAAK6pC,eAAerrC,IACtCqhF,EAAqBl5D,I,OACzB,OAAe,OAFThd,EAAU,WAEQA,EAAQ3K,eAAeY,GAIxC,CAAP,EAAO,IAAI,EAAA4qB,OAAO7gB,EAAQ/J,IAAK,EAAO0lB,EAAYA,EAAU1lB,GAAM,OAHvD,CAAP,EAAO,cAMT,YAAAulC,OAAN,W,wGACmB,SAAMnlC,KAAKu1B,YAAYyL,a,OACpB,OADZra,EAAS,SACG,GAAM3mB,KAAK6pC,eAAerrC,IAASqhF,I,OACrC,OADVv6D,EAAY,SACF,GAAMtlB,KAAK6pC,eAAerrC,IACtCqhF,EAAqBl5D,I,OAEzB,IAAW/mB,KAHL+J,EAAU,SAEV/I,EAAqB,GACV+I,EACTA,EAAQ3K,eAAeY,IACvBgB,EAASuE,KAAK,IAAI,EAAAqlB,OAAO7gB,EAAQ/J,IAAK,EAAO0lB,EAAYA,EAAU1lB,GAAM,OAGjF,MAAO,CAAP,EAAOgB,WAIL,YAAAm5C,gBAAN,W,kGACI,OAAiC,MAA7B/5C,KAAKwgF,qBACE,CAAP,EAAOxgF,KAAKwgF,uBAGVnP,EAA2B,GAClB,GAAMrxE,KAAKmZ,cAAckuC,W,OACxC,IADe,SAEX,MAAM,IAAI1lD,MAAM,WAIJ,OADVmT,EAAkB,GACR,GAAM9U,KAAKmlC,U,OAK3B,OALgB,SACR/gC,SAAQ,SAAAmC,GACZuO,EAAS3P,KAAKoB,EAAO8O,UAAU5U,MAAK,SAAAsN,GAAK,OAAAsjE,EAAWlsE,KAAK4I,UAG7D,GAAMmH,QAAQK,IAAIT,I,OAGlB,OAHA,SACAu8D,EAAW70C,KAAKx8B,KAAK2xE,4BACrB3xE,KAAKwgF,qBAAuBnP,EACrB,CAAP,EAAOrxE,KAAKwgF,8BAGV,YAAAyB,2BAAN,SAAiCC,EAAoBz/B,G,YAAA,IAAAA,OAAA,G,mFACjC,SAAMziD,KAAK+5C,mB,OAE3B,MAAO,CAAP,EAFgB,SAED5xC,QAAO,SAAA5B,GAClB,OAAIA,EAAO40B,eAGPsnB,GAAUl8C,EAAOqe,WAAas9D,KAEtBz/B,GAAkC,MAAxBl8C,EAAO6e,eAAyB7e,EAAO6e,cAAchgB,QAAQ88E,IAAe,eAQpG,YAAAC,sBAAN,SAA4B58E,EAAa68E,EACrCC,G,YAAA,IAAAA,MAAA,M,iGACA,OAAW,MAAP98E,GAAoC,MAArB68E,EACR,CAAP,EAAOltE,QAAQC,QAAQ,MAGrBrG,EAAS,EAAArJ,MAAM8I,UAAUhJ,GACzB+8E,EAA6B,MAAVxzE,EAAiBoG,QAAQC,QAAQ,IACtDnV,KAAKggF,gBAAgBuC,uBAAuB9hF,MAAK,SAAC+hF,GAC9C,IAAIC,EAAiB,GAWrB,OAVAD,EAAUp+E,SAAQ,SAAAs+E,GACVA,EAASvkF,QAAUukF,EAASt9E,QAAQ0J,IAAW,IAC/C2zE,EAAUA,EAAQl1C,OAAOm1C,OAI5BD,EAAQtkF,QACTskF,EAAQt9E,KAAK2J,GAGV2zE,KAGA,GAAMvtE,QAAQK,IAAI,CAAC+sE,EAAkBtiF,KAAK+5C,sB,cAAnD/1C,EAAS,SACT2+E,EAAkB3+E,EAAO,GACzB2F,EAAU3F,EAAO,GAEH,MAAhBq+E,EAAA,MACe,GAAMriF,KAAK6pC,eAAerrC,IAAkB,EAAAwT,iBAAiBmB,kB,OACxD,OADpBkvE,EAAe,YAEXA,EAAe,EAAAtrD,aAAa6rD,Q,iBAIpC,MAAO,CAAP,EAAOj5E,EAAQxB,QAAO,SAAA5B,GAClB,GAA0B,MAAtBA,EAAO8e,YACP,OAAO,EAEX,GAAyB,MAArB+8D,GAA6BA,EAAkBh9E,QAAQmB,EAAOpE,OAAS,EACvE,OAAO,EAGX,GAAW,MAAPoD,GAAegB,EAAOpE,OAAS,EAAAyG,WAAWC,OAA8B,MAArBtC,EAAOmC,MAAMqB,KAChE,IAAK,IAAI9L,EAAI,EAAGA,EAAIsI,EAAOmC,MAAMqB,KAAK5L,OAAQF,IAAK,CAC/C,IAAMiH,EAAIqB,EAAOmC,MAAMqB,KAAK9L,GAC5B,GAAa,MAATiH,EAAEL,IAKN,OADyB,MAAXK,EAAED,MAAgBo9E,EAAen9E,EAAED,OAE7C,KAAK,EAAA8xB,aAAa6rD,OACd,GAAc,MAAV9zE,GAA8B,MAAZ5J,EAAE4J,QAAkB6zE,EAAgBv9E,QAAQF,EAAE4J,SAAW,EAAG,CAC9E,IAAIgxE,EAAqBzhD,IAAIn5B,EAAE4J,QAM3B,OAAO,EALP,IAAM+zE,EAAgB,EAAAp9E,MAAM4I,QAAQ9I,GACpC,IAAKu6E,EAAqBthF,IAAI0G,EAAE4J,QAAQuvB,IAAIwkD,GACxC,OAAO,EAMnB,MACJ,KAAK,EAAA9rD,aAAa+rD,KACd,IAAMC,EAAU,EAAAt9E,MAAM4I,QAAQ9I,GAC9B,GAAe,MAAXw9E,GAAmBA,IAAY,EAAAt9E,MAAM4I,QAAQnJ,EAAEL,KAC/C,OAAO,EAEX,MACJ,KAAK,EAAAkyB,aAAaisD,MACd,GAAIz9E,IAAQL,EAAEL,IACV,OAAO,EAEX,MACJ,KAAK,EAAAkyB,aAAaksD,WACd,GAAI19E,EAAII,WAAWT,EAAEL,KACjB,OAAO,EAEX,MACJ,KAAK,EAAAkyB,aAAaC,kBACd,IAEI,GADc,IAAI5wB,OAAOlB,EAAEL,IAAK,KACtBwB,KAAKd,GACX,OAAO,EAEb,UACF,MACJ,KAAK,EAAAwxB,aAAamsD,QAO9B,OAAO,cAIT,YAAA3jC,6BAAN,SAAmCh9C,G,oGACf,SAAMvC,KAAKob,WAAWm9D,uBAAuBh2E,I,cAC9C,OADToH,EAAU,WACuB,MAAhBA,EAAQxG,MAAgBwG,EAAQxG,KAAKhF,QAClD,EAA2B,GAC3B,EAAkB,GACxBwL,EAAQxG,KAAKiB,SAAQ,SAAA8C,GACjB,IAAM/D,EAAO,IAAI,EAAAikB,WAAWlgB,GACtBX,EAAS,IAAI,EAAAikB,OAAOrnB,GAC1B,EAASgC,KAAKoB,EAAO8O,UAAU5U,MAAK,SAAAsN,GAAK,SAAW5I,KAAK4I,UAE7D,GAAMmH,QAAQK,IAAI,KARlB,M,OAUA,OAFA,SACA,EAAWinB,KAAKx8B,KAAK2xE,4BACd,CAAP,EAAO,G,OAEP,MAAO,CAAC,EAAD,YAIT,YAAAwR,kBAAN,SAAwB59E,G,mEACpB,MAAO,CAAP,EAAOvF,KAAKojF,gBAAgB79E,GAAK,GAAM,WAGrC,YAAA89E,sBAAN,SAA4B99E,G,mEACxB,MAAO,CAAP,EAAOvF,KAAKojF,gBAAgB79E,GAAK,GAAO,WAGtC,YAAA+9E,oBAAN,SAA0B/9E,G,mEACtB,MAAO,CAAP,EAAOvF,KAAKojF,gBAAgB79E,GAAK,GAAO,WAG5C,YAAAg+E,0BAAA,SAA0Bh+E,GACtBvF,KAAKigF,mBAAmBuD,oBAAoBj+E,IAG1C,YAAAk+E,mBAAN,SAAyB7jF,G,oGACE,SAAMI,KAAK6pC,eAAerrC,IAASqhF,I,OAa1D,OAbI6D,EAAmB,YAEnBA,EAAmB,IAGnBA,EAAiB9jF,GACjB8jF,EAAiB9jF,GAAIurB,cAAe,IAAIhC,MAAOiF,UAE/Cs1D,EAAiB9jF,GAAM,CACnBurB,cAAc,IAAIhC,MAAOiF,WAIjC,GAAMpuB,KAAK6pC,eAAe+c,KAAKi5B,EAAgB6D,I,OAE/C,GAFA,SAEiC,MAA7B1jF,KAAKwgF,qBACL,UAGJ,IAASviF,EAAI,EAAGA,EAAI+B,KAAKwgF,qBAAqBriF,OAAQF,IAElD,IADM0lF,EAAS3jF,KAAKwgF,qBAAqBviF,IAC9B2B,KAAOA,EAAI,CAClB+jF,EAAOr+D,UAAYo+D,EAAiB9jF,GACpC,M,kBAKN,YAAAgkF,uBAAN,SAA6BhkF,G,oGACF,SAAMI,KAAK6pC,eAAerrC,IAASqhF,I,OAa1D,OAbI6D,EAAmB,YAEnBA,EAAmB,IAGnBA,EAAiB9jF,GACjB8jF,EAAiB9jF,GAAIikF,cAAe,IAAI16D,MAAOiF,UAE/Cs1D,EAAiB9jF,GAAM,CACnBurB,cAAc,IAAIhC,MAAOiF,WAIjC,GAAMpuB,KAAK6pC,eAAe+c,KAAKi5B,EAAgB6D,I,OAE/C,GAFA,SAEiC,MAA7B1jF,KAAKwgF,qBACL,UAGJ,IAASviF,EAAI,EAAGA,EAAI+B,KAAKwgF,qBAAqBriF,OAAQF,IAElD,IADM0lF,EAAS3jF,KAAKwgF,qBAAqBviF,IAC9B2B,KAAOA,EAAI,CAClB+jF,EAAOr+D,UAAYo+D,EAAiB9jF,GACpC,M,kBAKN,YAAAkkF,gBAAN,SAAsBh1E,G,gGAClB,OAAc,MAAVA,EACA,IAGU,GAAM9O,KAAK6pC,eAAerrC,IAA4BqhF,I,OAKpE,OALI/U,EAAU,YAEVA,EAAU,IAEdA,EAAQh8D,GAAU,KAClB,GAAM9O,KAAK6pC,eAAe+c,KAAKi5B,EAAmB/U,I,cAAlD,S,YAGE,YAAAiZ,eAAN,SAAqBx9E,G,6GAEA,MAAbA,EAAO3G,GAAP,MAC4B,MAAxB2G,EAAO6e,cAAP,OACMjB,EAAU,IAAI,EAAAu2B,oBAAoBn0C,GAC7B,GAAMvG,KAAKob,WAAWq9D,iBAAiBt0D,K,cAAlDvjB,EAAW,S,aAGA,OADLujB,EAAU,IAAI,EAAAqH,cAAcjlB,GACvB,GAAMvG,KAAKob,WAAWo9D,WAAWr0D,I,OAA5CvjB,EAAW,S,wBAEf2F,EAAO3G,GAAKgB,EAAShB,G,aAGV,OADLukB,EAAU,IAAI,EAAAqH,cAAcjlB,GACvB,GAAMvG,KAAKob,WAAWs9D,UAAUnyE,EAAO3G,GAAIukB,I,OAAtDvjB,EAAW,S,iBAGA,SAAMZ,KAAKu1B,YAAYyL,a,OAEtC,OAFMra,EAAS,SACTxjB,EAAO,IAAI,EAAAikB,WAAWxmB,EAAU+lB,EAAQpgB,EAAO6e,eACrD,GAAMplB,KAAKgkF,OAAO7gF,I,cAAlB,S,YAGE,YAAA8gF,gBAAN,SAAsB19E,EAAoBhE,EAAwB6iB,G,iHAS9D,OARM8+D,EAAqC,GACjB,MAAtB39E,EAAO2e,aACP3e,EAAO2e,YAAY9gB,SAAQ,SAAAulB,GACD,MAAlBA,EAAWhrB,KACXulF,EAAmB/+E,KAAK,EAAKg/E,0BAA0Bx6D,EAAYpjB,EAAO3G,GAAI2C,OAI1F,GAAM2S,QAAQK,IAAI2uE,I,OAIA,OAJlB,SAEA39E,EAAOhE,eAAiBA,EACxBgE,EAAO6e,cAAgBA,EACL,GAAMplB,KAAKqmC,QAAQ9/B,I,OAEpB,OAFX69E,EAAY,SACZjgE,EAAU,IAAI,EAAAkgE,mBAAmBD,GACtB,GAAMpkF,KAAKob,WAAWy9D,eAAetyE,EAAO3G,GAAIukB,I,OAClD,OADTvjB,EAAW,SACF,GAAMZ,KAAKu1B,YAAYyL,a,OAEtC,OAFMra,EAAS,SACTxjB,EAAO,IAAI,EAAAikB,WAAWxmB,EAAU+lB,EAAQvB,GAC9C,GAAMplB,KAAKgkF,OAAO7gF,I,cAAlB,S,YAGE,YAAAihE,oBAAN,SAA0Bz6D,EAAuBpH,EAAwB6iB,G,4GAGrE,IAFMtQ,EAA2B,GAC3BwvE,EAAuB,GACxB,EAAL,EAAqB,EAAA36E,EAAA,gBAAVpD,EAAM,MACNhE,eAAiBA,EACxBgE,EAAO6e,cAAgBA,EACvBtQ,EAAS3P,KAAKnF,KAAKqmC,QAAQ9/B,GAAQ9F,MAAK,SAAAsN,GACpCu2E,EAAWn/E,KAAK4I,OAGxB,SAAMmH,QAAQK,IAAIT,I,OAElB,OAFA,SACMqP,EAAU,IAAI,EAAAogE,uBAAuBD,EAAYl/D,GACvD,GAAMplB,KAAKob,WAAW09D,gBAAgB30D,I,OACvB,OADf,SACe,GAAMnkB,KAAKu1B,YAAYyL,a,OACtC,OADMra,EAAS,SACf,GAAM3mB,KAAKgkF,OAAOM,EAAWh9E,KAAI,SAAAyG,GAAK,OAAAA,EAAEgc,aAAapD,Q,cAArD,S,YAGJ,YAAA26C,yBAAA,SAAyB/6D,EAAgBi+E,EAAsBhiB,GAA/D,WACI,YAD2D,IAAAA,OAAA,GACpD,IAAIttD,SAAQ,SAACC,EAAS8J,GACzB,IAAMg+B,EAAS,IAAIC,WACnBD,EAAOwnC,kBAAkBD,GACzBvnC,EAAOpgC,OAAS,SAAOugC,GAAQ,qC,0DAET,O,sBAAA,GAAMp9C,KAAKyiE,4BAA4Bl8D,EACjDi+E,EAAgB98E,KAAM01C,EAAIztC,OAAO3L,OAAQw+D,I,cADvCkiB,EAAQ,SAEdvvE,EAAQuvE,G,+BAERzlE,EAAO,G,+BAGfg+B,EAAOK,QAAU,SAAAF,GACbn+B,EAAO,4BAKb,YAAAwjD,4BAAN,SAAkCl8D,EAAgBo+E,EAC9CxhF,EAAmBq/D,G,YAAA,IAAAA,OAAA,G,2GACP,SAAMxiE,KAAKmZ,cAAcE,UAAU9S,EAAOhE,iB,OAClC,OADd5D,EAAM,SACQ,GAAMqB,KAAKmZ,cAAcktB,QAAQs+C,EAAUhmF,I,OAE5C,OAFbimF,EAAc,SAED,GAAM5kF,KAAKmZ,cAAcq1B,WAAW7vC,I,OACvC,OADVkmF,EAAa,SACH,GAAM7kF,KAAKmZ,cAAc2rE,eAAe3hF,EAAM0hF,EAAW,K,OAAnEE,EAAU,SAEVx+C,EAAK,IAAIC,SACf,IACUw+C,EAAO,IAAIC,KAAK,CAACF,GAAU,CAAE5iF,KAAM,6BACzCokC,EAAGE,OAAO,MAAOo+C,EAAW,GAAGnwE,iBAC/B6xB,EAAGE,OAAO,OAAQu+C,EAAMJ,EAAYlwE,iBACtC,MAAO7T,GACL,IAAI,EAAA4E,MAAMmF,QAAW,EAAAnF,MAAMsF,UAOvB,MAAMlK,EANN0lC,EAAGE,OAAO,MAAOo+C,EAAW,GAAGnwE,iBAC/B6xB,EAAGE,OAAO,OAAQj7B,EAAOvD,KAAK88E,GAAiB,CAC3CG,SAAUN,EAAYlwE,gBACtBywE,YAAa,6B,gDASjB3iB,EACW,GAAMxiE,KAAKob,WAAWq+D,0BAA0BlzE,EAAO3G,GAAI2mC,IADtE,M,cACA3lC,EAAW,S,aAEA,SAAMZ,KAAKob,WAAWo+D,qBAAqBjzE,EAAO3G,GAAI2mC,I,OAAjE3lC,EAAW,S,sCAGf,M,WAAM,IAAIe,MAAO,EAAoBsgD,oB,QAG1B,SAAMjiD,KAAKu1B,YAAYyL,a,eAAhCra,EAAS,SACT+9D,EAAQ,IAAI,EAAAt9D,WAAWxmB,EAAU+lB,EAAQpgB,EAAO6e,eACjDo9C,EAAD,OACA,GAAMxiE,KAAKgkF,OAAOU,I,QAAlB,S,mBAEJ,MAAO,CAAP,EAAO,IAAI,EAAAl6D,OAAOk6D,YAGhB,YAAAU,0BAAN,SAAgC7+E,G,oGAE5B,OADM4d,EAAU,IAAI,EAAA8+C,yBAAyB18D,EAAO6e,eACpD,GAAMplB,KAAKob,WAAW29D,qBAAqBxyE,EAAO3G,GAAIukB,I,OACvC,OADf,SACe,GAAMnkB,KAAKu1B,YAAYyL,a,OAEtC,OAFMra,EAAS,SACTxjB,EAAOoD,EAAOwjB,aAAapD,GACjC,GAAM3mB,KAAKgkF,OAAO7gF,I,cAAlB,S,YAGE,YAAA6gF,OAAN,SAAaz9E,G,oGACM,SAAMvG,KAAKu1B,YAAYyL,a,OACxB,OADRra,EAAS,SACD,GAAM3mB,KAAK6pC,eAAerrC,IACpCqhF,EAAqBl5D,I,OAczB,OAbe,OAFXhd,EAAU,YAGVA,EAAU,IAGVpD,aAAkB,EAAA6gB,WAElBzd,GADMoE,EAAIxH,GACA3G,IAAMmO,EAEfxH,EAAwBnC,SAAQ,SAAA2J,GAC7BpE,EAAQoE,EAAEnO,IAAMmO,KAIxB,GAAM/N,KAAK6pC,eAAe+c,KAAKi5B,EAAqBl5D,EAAQhd,I,cAA5D,SACA3J,KAAKwgF,qBAAuB,K,YAG1B,YAAA56E,QAAN,SAAc+D,G,gGACK,SAAM3J,KAAKu1B,YAAYyL,a,OACtC,OADMra,EAAS,SACf,GAAM3mB,KAAK6pC,eAAe+c,KAAKi5B,EAAqBl5D,EAAQhd,I,cAA5D,SACA3J,KAAKwgF,qBAAuB,K,YAG1B,YAAAxpE,MAAN,SAAY2P,G,0FACR,SAAM3mB,KAAK6pC,eAAe8a,OAAOk7B,EAAqBl5D,I,cAAtD,SACA3mB,KAAKugF,a,YAGH,YAAA3c,mBAAN,SAAyBD,EAAe/+C,G,kGACpC,SAAM5kB,KAAKob,WAAWw9D,eAAe,IAAI,EAAAyM,sBAAsB1hB,EAAK/+C,K,OAErD,OAFf,SAEe,GAAM5kB,KAAKu1B,YAAYyL,a,OACxB,OADRra,EAAS,SACD,GAAM3mB,KAAK6pC,eAAerrC,IACpCqhF,EAAqBl5D,I,OAWzB,OAVe,OAFXhd,EAAU,YAGVA,EAAU,IAGdg6D,EAAIv/D,SAAQ,SAAAxE,GACJ+J,EAAQ3K,eAAeY,KACvB+J,EAAQ/J,GAAIglB,SAAWA,MAI/B,GAAM5kB,KAAK6pC,eAAe+c,KAAKi5B,EAAqBl5D,EAAQhd,I,cAA5D,SACA3J,KAAKwgF,qBAAuB,K,YAG1B,YAAAxlD,OAAN,SAAap7B,G,kGACM,SAAMI,KAAKu1B,YAAYyL,a,OACtB,OADVra,EAAS,SACC,GAAM3mB,KAAK6pC,eAAerrC,IACtCqhF,EAAqBl5D,I,OACzB,GAAe,OAFThd,EAAU,UAGZ,UAGJ,GAAkB,iBAAP/J,EAAiB,CACxB,GAAmB,MAAf+J,EAAQ/J,GACR,iBAEG+J,EAAQ/J,QAEdA,EAAgBwE,SAAQ,SAAAnG,UACd0L,EAAQ1L,MAIvB,SAAM+B,KAAK6pC,eAAe+c,KAAKi5B,EAAqBl5D,EAAQhd,I,cAA5D,SACA3J,KAAKwgF,qBAAuB,K,YAG1B,YAAAxkD,iBAAN,SAAuBp8B,G,0FACnB,SAAMI,KAAKob,WAAWggB,aAAax7B,I,OACnC,OADA,SACA,GAAMI,KAAKg7B,OAAOp7B,I,cAAlB,S,YAGE,YAAAyjE,qBAAN,SAA2BM,G,0FACvB,SAAM3jE,KAAKob,WAAWu9D,kBAAkB,IAAI,EAAAnV,wBAAwBG,K,OACpE,OADA,SACA,GAAM3jE,KAAKg7B,OAAO2oC,I,cAAlB,S,YAGE,YAAA2hB,iBAAN,SAAuB1lF,EAAY6hE,G,oGAChB,SAAMzhE,KAAKu1B,YAAYyL,a,OACtB,OADVra,EAAS,SACC,GAAM3mB,KAAK6pC,eAAerrC,IACtCqhF,EAAqBl5D,I,OAEzB,GAAe,OAHThd,EAAU,YAGQA,EAAQ3K,eAAeY,IAAkC,MAA3B+J,EAAQ/J,GAAIslB,YAC9D,UAGJ,IAASjnB,EAAI,EAAGA,EAAI0L,EAAQ/J,GAAIslB,YAAY/mB,OAAQF,IAC5C0L,EAAQ/J,GAAIslB,YAAYjnB,GAAG2B,KAAO6hE,GAClC93D,EAAQ/J,GAAIslB,YAAYyoC,OAAO1vD,EAAG,GAI1C,SAAM+B,KAAK6pC,eAAe+c,KAAKi5B,EAAqBl5D,EAAQhd,I,cAA5D,SACA3J,KAAKwgF,qBAAuB,K,YAG1B,YAAA5d,2BAAN,SAAiChjE,EAAY6hE,G,gGAErC,O,sBAAA,GAAMzhE,KAAKob,WAAWomD,uBAAuB5hE,EAAI6hE,I,cAAjD,S,aAEA,O,WAAO,CAAP,EAAOvsD,QAAQ+J,OAAQ,EAAoBgjC,qB,OAE/C,SAAMjiD,KAAKslF,iBAAiB1lF,EAAI6hE,I,cAAhC,S,YAGJ,YAAA0e,sBAAA,SAAsB9wE,EAAeC,GACjC,IAAMi2E,EAAYl2E,EAAEiW,WAAajW,EAAEiW,UAAU6F,aAAe9b,EAAEiW,UAAU6F,aAAyB,KAC3Fq6D,EAAYl2E,EAAEgW,WAAahW,EAAEgW,UAAU6F,aAAe7b,EAAEgW,UAAU6F,aAAyB,KAE3Fs6D,EAA2B,MAAbF,GAAkC,MAAbC,EACzC,OAAIC,GAAeF,EAAYC,EACpB,EAEM,MAAbD,GAAkC,MAAbC,GAIrBC,GAAeF,EAAYC,GAHnB,EAMK,MAAbA,GAAkC,MAAbD,EACd,EAGJ,GAGX,YAAAG,8BAAA,SAA8Br2E,EAAeC,GACzC,IAAMtL,EAAShE,KAAKmgF,sBAAsB9wE,EAAGC,GAC7C,OAAe,IAAXtL,EACOA,EAGJhE,KAAK2xE,0BAAL3xE,CAAgCqP,EAAGC,IAG9C,YAAAqiE,yBAAA,sBACI,OAAO,SAACtiE,EAAGC,GACP,IAAIq2E,EAAQt2E,EAAE3H,KACVk+E,EAAQt2E,EAAE5H,KAEd,GAAa,MAATi+E,GAA0B,MAATC,EACjB,OAAQ,EAEZ,GAAa,MAATD,GAA0B,MAATC,EACjB,OAAO,EAEX,GAAa,MAATD,GAA0B,MAATC,EACjB,OAAO,EAGX,IAAM5hF,EAAS,EAAKtE,YAAY6P,SAAW,EAAK7P,YAAY6P,SAASC,QAAQm2E,EAAOC,GAChFD,EAAMl2E,cAAcm2E,GAExB,OAAe,IAAX5hF,GAAgBqL,EAAElN,OAAS,EAAAyG,WAAWC,OAASyG,EAAEnN,OAAS,EAAAyG,WAAWC,MAC9D7E,GAGa,MAApBqL,EAAE3G,MAAMmB,WACR87E,GAASt2E,EAAE3G,MAAMmB,UAGG,MAApByF,EAAE5G,MAAMmB,WACR+7E,GAASt2E,EAAE5G,MAAMmB,UAGd,EAAKnK,YAAY6P,SAAW,EAAK7P,YAAY6P,SAASC,QAAQm2E,EAAOC,GACxED,EAAMl2E,cAAcm2E,MAI1B,YAAAC,WAAN,SAAiBjmF,G,oGACE,SAAMI,KAAKu1B,YAAYyL,a,OACtB,OADVra,EAAS,SACC,GAAM3mB,KAAK6pC,eAAerrC,IACtCqhF,EAAqBl5D,I,OACzB,OAAe,OAFThd,EAAU,UAGZ,KAGEm8E,EAAiB,SAAC1yD,GACK,MAArBzpB,EAAQypB,KAGZzpB,EAAQypB,GAAU/N,aAAc,IAAI8D,MAAOa,gBAG7B,iBAAPpqB,EACPkmF,EAAelmF,GAEdA,EAAgBwE,QAAQ0hF,GAG7B,GAAM9lF,KAAK6pC,eAAe+c,KAAKi5B,EAAqBl5D,EAAQhd,K,cAA5D,SACA3J,KAAKwgF,qBAAuB,K,YAG1B,YAAAvkD,qBAAN,SAA2Br8B,G,0FACvB,SAAMI,KAAKob,WAAW+9D,gBAAgBv5E,I,OACtC,OADA,SACA,GAAMI,KAAK6lF,WAAWjmF,I,cAAtB,S,YAGE,YAAA0jE,yBAAN,SAA+BK,G,0FAC3B,SAAM3jE,KAAKob,WAAWg+D,qBAAqB,IAAI,EAAA5V,wBAAwBG,K,OACvE,OADA,SACA,GAAM3jE,KAAK6lF,WAAWliB,I,cAAtB,S,YAGE,YAAAroC,QAAN,SAAc/0B,G,oGACK,SAAMvG,KAAKu1B,YAAYyL,a,OACtB,OADVra,EAAS,SACC,GAAM3mB,KAAK6pC,eAAerrC,IACtCqhF,EAAqBl5D,I,OACzB,OAAe,OAFThd,EAAU,UAGZ,KAGEo8E,EAAmB,SAACh4E,GACD,MAAjBpE,EAAQoE,EAAEnO,MAGd+J,EAAQoE,EAAEnO,IAAIylB,YAAc,KAC5B1b,EAAQoE,EAAEnO,IAAI2gB,aAAexS,EAAEwS,eAIH,UAA5Bha,EAAOy/E,YAAYt+E,KAClBnB,EAAmDnC,QAAQ2hF,GAE5DA,EAAiBx/E,GAGrB,GAAMvG,KAAK6pC,eAAe+c,KAAKi5B,EAAqBl5D,EAAQhd,K,cAA5D,SACA3J,KAAKwgF,qBAAuB,K,YAG1B,YAAAjlD,kBAAN,SAAwB37B,G,gGACH,SAAMI,KAAKob,WAAWi+D,iBAAiBz5E,I,OACxD,OADMgB,EAAW,SACjB,GAAMZ,KAAKs7B,QAAQ,CAAE17B,GAAIA,EAAI2gB,aAAc3f,EAAS2f,gB,cAApD,S,YAGE,YAAAsjD,sBAAN,SAA4BF,G,wGACP,SAAM3jE,KAAKob,WAAWm+D,sBAAsB,IAAI,EAAA0M,yBAAyBtiB,K,OAE1F,IAFM/iE,EAAW,SACXslF,EAAoD,GACrD,EAAL,EAAqB,EAAAtlF,EAASuC,KAAT,eAAVoD,EAAM,KACb2/E,EAAS/gF,KAAK,CAAEvF,GAAI2G,EAAO3G,GAAI2gB,aAAcha,EAAOga,eAExD,SAAMvgB,KAAKs7B,QAAQ4qD,I,cAAnB,S,YAKU,YAAA/B,0BAAd,SAAwCgC,EAAgC/yD,EACpE7wB,G,kHAC2B,SAAMvC,KAAKob,WAAW6gE,YAC7C,IAAIr+B,QAAQuoC,EAAe5gF,IAAK,CAAE28D,MAAO,e,OAC7C,GAAkC,OAF5BkkB,EAAqB,UAEJzmE,OACnB,MAAMhe,MAAM,kCAAoCykF,EAAmBzmE,OAAOlT,YAGlE,SAAM25E,EAAmBjkB,e,OACtB,OADTC,EAAM,SACG,GAAMpiE,KAAKmZ,cAAckpD,iBAAiBD,EAAK,O,OAClD,OADNE,EAAS,SACH,GAAMtiE,KAAKmZ,cAAcE,UAAU9W,I,OAC3B,OADd5D,EAAM,SACQ,GAAMqB,KAAKmZ,cAAcktB,QAAQ8/C,EAAe96D,SAAU1sB,I,OAE3D,OAFbimF,EAAc,SAED,GAAM5kF,KAAKmZ,cAAcq1B,WAAW7vC,I,OACvC,OADVkmF,EAAa,SACH,GAAM7kF,KAAKmZ,cAAc2rE,eAAexiB,EAAQuiB,EAAW,K,OAArEE,EAAU,SAEVx+C,EAAK,IAAIC,SACf,IACUw+C,EAAO,IAAIC,KAAK,CAACF,GAAU,CAAE5iF,KAAM,6BACzCokC,EAAGE,OAAO,MAAOo+C,EAAW,GAAGnwE,iBAC/B6xB,EAAGE,OAAO,OAAQu+C,EAAMJ,EAAYlwE,iBACtC,MAAO7T,GACL,IAAI,EAAA4E,MAAMmF,QAAW,EAAAnF,MAAMsF,UAOvB,MAAMlK,EANN0lC,EAAGE,OAAO,MAAOo+C,EAAW,GAAGnwE,iBAC/B6xB,EAAGE,OAAO,OAAQj7B,EAAOvD,KAAK88E,GAAiB,CAC3CG,SAAUN,EAAYlwE,gBACtBywE,YAAa,6B,iBAQrB,O,wBAAA,GAAMnlF,KAAKob,WAAWs+D,0BAA0BtmD,EAAU+yD,EAAevmF,GAAI2mC,EAAIhkC,I,cAAjF,S,eAEA,M,WAAM,IAAIZ,MAAO,EAAoBsgD,oB,0BAI/B,YAAA8+B,mBAAd,SAAmEv3D,EAAUjH,EACzEjb,EAAU3I,G,oGAIV,IAAWyQ,KAHL0F,EAAW,GACXC,EAAO/U,KAEMsH,EACVA,EAAItI,eAAeoQ,IAKxB,SAAW4F,EAASqxE,GAChB,IAAMpxE,EAAIC,QAAQC,UAAU1U,MAAK,WAC7B,IAAM6lF,EAAa98D,EAAeliB,EAAI0N,IAAYA,GAClD,OAAIsxE,GAA2B,KAAdA,EACNvxE,EAAKoE,cAAcktB,QAAQigD,EAAW3nF,GAE1C,QACR8B,MAAK,SAAC6U,GACJ+wE,EAAerxE,GAAWM,KAE/BR,EAAS3P,KAAK8P,GAVlB,CAWG7F,EAAMmT,GAGb,SAAMrN,QAAQK,IAAIT,I,cAAlB,S,YAGU,YAAAksE,kBAAd,SAAgCz6E,EAAgBijB,EAAmB7qB,G,yGACvD4H,EAAOpE,M,KACN,EAAAyG,WAAWC,MAAX,Y,KAqBA,EAAAD,WAAWoB,WAAX,Y,KAIA,EAAApB,WAAWmR,KAAX,Y,KAWA,EAAAnR,WAAWoR,SAAX,a,oBAjCD,OAFAzT,EAAOmC,MAAQ,IAAI,EAAAG,MACnBtC,EAAOmC,MAAM+c,qBAAuB+D,EAAM9gB,MAAM+c,qBAChD,GAAMzlB,KAAK+gF,mBAAmBv3D,EAAM9gB,MAAOnC,EAAOmC,MAAO,CACrDmB,SAAU,KACVC,SAAU,KACVwd,KAAM,MACP3oB,I,UAJH,SAMwB,MAApB6qB,EAAM9gB,MAAMqB,KAAZ,YACAxD,EAAOmC,MAAMqB,KAAO,GACX9L,EAAI,E,wBAAGA,EAAIurB,EAAM9gB,MAAMqB,KAAK5L,SAC3B2G,EAAW,IAAI,EAAAwjC,UACZrjC,MAAQukB,EAAM9gB,MAAMqB,KAAK9L,GAAGgH,MACrC,GAAMjF,KAAK+gF,mBAAmBv3D,EAAM9gB,MAAMqB,KAAK9L,GAAI6G,EAAU,CACzDD,IAAK,MACNlG,KALoC,M,OAGvC,SAGA4H,EAAOmC,MAAMqB,KAAK5E,KAAKL,G,wBANkB7G,I,aASjD,U,OAIA,OAFAsI,EAAO0D,WAAa,IAAI,EAAAD,WACxBzD,EAAO0D,WAAW9H,KAAOqnB,EAAMvf,WAAW9H,KAC1C,I,OAGA,OADAoE,EAAOM,KAAO,IAAI,EAAAkT,KAClB,GAAM/Z,KAAK+gF,mBAAmBv3D,EAAM3iB,KAAMN,EAAOM,KAAM,CACnDuQ,eAAgB,KAChBM,MAAO,KACPC,OAAQ,KACR7Q,SAAU,KACVC,QAAS,KACTsQ,KAAM,MACP1Y,I,OACH,OARA,SAQA,I,QAGA,OADA4H,EAAOye,SAAW,IAAI,EAAAhL,SACtB,GAAMha,KAAK+gF,mBAAmBv3D,EAAMxE,SAAUze,EAAOye,SAAU,CAC3D/jB,MAAO,KACPolB,UAAW,KACXX,WAAY,KACZY,SAAU,KACVX,SAAU,KACVC,SAAU,KACVC,SAAU,KACVzC,KAAM,KACNC,MAAO,KACPC,WAAY,KACZpH,QAAS,KACT4J,QAAS,KACT9E,MAAO,KACP+E,MAAO,KACPC,IAAK,KACLnc,SAAU,KACVoc,eAAgB,KAChBC,cAAe,MAChBvnB,I,QACH,OApBA,SAoBA,I,QAEA,MAAM,IAAIgD,MAAM,gCAId,YAAAyhF,gBAAd,SAA8B79E,EAAaghF,EAAmB1C,G,uGACrD7jF,KAAKigF,mBAAmBuG,SAASjhF,GAAlC,MACgB,GAAMvF,KAAKmiF,sBAAsB58E,I,OACjD,KADMoE,EAAU,UAEZ,MAAO,CAAP,EAAO,MAEX3J,KAAKigF,mBAAmBwG,WAAWlhF,EAAKoE,G,iBAG5C,OAAIk6E,EACO,CAAP,EAAO7jF,KAAKigF,mBAAmByG,gBAAgBnhF,IACxCghF,EACA,CAAP,EAAOvmF,KAAKigF,mBAAmB0G,YAAYphF,IAEpC,CAAP,EAAOvF,KAAKigF,mBAAmB2G,QAAQrhF,YA1wB/C,GADC,EAAAshF,eAAc,WAAM,2B,wHA8wBzB,EAj/BA,GAAa,EAAAtlF,kB,wGCrDb,yBAA8Bu9C,GAC1B,OAAO,SAACnvC,EAAam3E,EAA8BC,GAC/C,IAAMC,EAAqCD,EAAWroF,MAChDuoF,EAAS,IAAIj4E,IAEbk4E,EAAW,SAAC3kE,GACd,IAAI2/C,EAAQ+kB,EAAOzoF,IAAI+jB,GACvB,OAAa,MAAT2/C,IAGJA,EAAQ,IAAIlzD,IACZi4E,EAAO/3E,IAAIqT,EAAK2/C,IAHLA,GAOf,MAAO,CACHxjE,MAAO,W,IAAA,WAAS,kDACZ,IAAMwjE,EAAQglB,EAASlnF,MACjBmnF,EAAeroC,EAASsoC,GAC1BxmF,EAAWshE,EAAM1jE,IAAI2oF,GACzB,GAAgB,MAAZvmF,EACA,OAAOA,EAGX,IAAMymF,EAAY,WACdnlB,EAAMlnC,OAAOmsD,GACM,IAAfjlB,EAAMvjD,MACNsoE,EAAOjsD,OAAO,IAYtB,OATAp6B,EAAWomF,EAAe55E,MAAMpN,KAAMonF,GAAM3mF,MAAK,SAAC6U,GAE9C,OADA+xE,IACO/xE,KACR+J,OAAM,SAACC,GAEN,MADA+nE,IACM/nE,KAGV4iD,EAAMhzD,IAAIi4E,EAAcvmF,GACjBA,O,68CCjDvB,aAEA,SAGA,SAQA,SACA,QAEMi/E,EACiB,eAIvB,aAGI,WAAoB1mE,EAAsCoc,EAC9CsU,EAAwCnqC,GADhC,KAAAyZ,gBAAsC,KAAAoc,cAC9C,KAAAsU,iBAAwC,KAAAnqC,cAmJxD,OAhJI,YAAA6gF,WAAA,WACIvgF,KAAKsnF,yBAA2B,MAG9B,YAAAjhD,QAAN,SAAc7c,G,oGACV,GAA4B,MAAxBA,EAAMjnB,eACN,MAAM,IAAIZ,MAAM,sCAER,SAAM3B,KAAKmZ,cAAcE,UAAUmQ,EAAMjnB,iB,OACrD,GAAW,OADL5D,EAAM,UAER,MAAM,IAAIgD,MAAM,8CAMF,OAJZ6F,EAAa,IAAI,EAAAmb,YACZ/iB,GAAK4pB,EAAM5pB,GACtB4H,EAAWjF,eAAiBinB,EAAMjnB,eAClCiF,EAAWib,SAAW+G,EAAM/G,SAC5B,EAAAjb,EAAkB,GAAMxH,KAAKmZ,cAAcktB,QAAQ7c,EAAM9hB,KAAM/I,I,OAC/D,OADA,EAAW+I,KAAO,SACX,CAAP,EAAOF,WAGL,YAAAw4C,YAAN,SAAkB54C,G,kGACd,OAAmB,MAAfA,EACO,CAAC,EAAD,KAELmgF,EAAmC,GACnCzyE,EAA2B,GACjC1N,EAAYhD,SAAQ,SAAAoD,GAChBsN,EAAS3P,KAAKqC,EAAW6N,UAAU5U,MAAK,SAAAsN,GAAK,OAAAw5E,EAAepiF,KAAK4I,UAErE,GAAMmH,QAAQK,IAAIT,K,OAClB,OADA,SACO,CAAP,EAAOyyE,EAAe/qD,KAAK,EAAA/2B,MAAM0J,gBAAgBnP,KAAKN,YAAa,kBAGjE,YAAAlB,IAAN,SAAUoB,G,kGACS,SAAMI,KAAKu1B,YAAYyL,a,OAClB,OADdra,EAAS,SACK,GAAM3mB,KAAK6pC,eAAerrC,IAC1CqhF,EAAyBl5D,I,OAC7B,OAAmB,OAFbvf,EAAc,WAEQA,EAAYpI,eAAeY,GAIhD,CAAP,EAAO,IAAI,EAAA+iB,WAAWvb,EAAYxH,KAHvB,CAAP,EAAO,cAMT,YAAAulC,OAAN,W,sGACmB,SAAMnlC,KAAKu1B,YAAYyL,a,OAClB,OADdra,EAAS,SACK,GAAM3mB,KAAK6pC,eAAerrC,IAC1CqhF,EAAyBl5D,I,OAE7B,IAAW/mB,KAHLwH,EAAc,SAEdxG,EAAyB,GACdwG,EACTA,EAAYpI,eAAeY,IAC3BgB,EAASuE,KAAK,IAAI,EAAAwd,WAAWvb,EAAYxH,KAGjD,MAAO,CAAP,EAAOgB,WAGL,YAAAm5C,gBAAN,W,kGACI,OAAqC,MAAjC/5C,KAAKsnF,yBACE,CAAP,EAAOtnF,KAAKsnF,0BAGD,GAAMtnF,KAAKmZ,cAAckuC,U,OACxC,IADe,SAEX,MAAM,IAAI1lD,MAAM,WAGA,SAAM3B,KAAKmlC,U,OACC,OAD1B/9B,EAAc,SACpB,EAAApH,KAAgC,GAAMA,KAAKggD,YAAY54C,I,OACvD,OADA,EAAKkgF,yBAA2B,SACzB,CAAP,EAAOtnF,KAAKsnF,kCAGV,YAAApnC,aAAN,SAAmB94C,G,YAAA,IAAAA,MAAA,M,gGACI,MAAfA,EAAA,MACc,GAAMpH,KAAK+5C,mB,OAAzB3yC,EAAc,S,iBAUlB,OARMogF,EAAoC,GAC1CpgF,EAAYhD,SAAQ,SAAA2J,GAChB,IAAM05E,EAAiB,IAAI,EAAAhgF,eAC3BggF,EAAe7nF,GAAKmO,EAAEnO,GACtB6nF,EAAellF,eAAiBwL,EAAExL,eAClC,IAAMkE,EAAkB,MAAVsH,EAAErG,KAAeqG,EAAErG,KAAK9B,QAAQ,aAAc,IAAII,MA1FnD,KA0F6E,GAC1F,EAAA0hF,aAAaC,eAAeH,EAAO,EAAG/gF,EAAOghF,EAAgB,KA3FhD,QA6FV,CAAP,EAAOD,WAGL,YAAAI,UAAN,SAAgBhoF,G,gGACQ,SAAMI,KAAKkgD,gB,OAC/B,OADM94C,EAAc,SACb,CAAP,EAAO,EAAAsgF,aAAaG,kBAAkBzgF,EAAaxH,YAGjD,YAAAokF,OAAN,SAAax8E,G,oGACM,SAAMxH,KAAKu1B,YAAYyL,a,OACpB,OADZra,EAAS,SACG,GAAM3mB,KAAK6pC,eAAerrC,IACxCqhF,EAAyBl5D,I,OAc7B,OAbmB,OAFfvf,EAAc,YAGdA,EAAc,IAGdI,aAAsB,EAAAif,eAEtBrf,GADM2G,EAAIvG,GACI5H,IAAMmO,EAEnBvG,EAAgCpD,SAAQ,SAAA2J,GACrC3G,EAAY2G,EAAEnO,IAAMmO,KAI5B,GAAM/N,KAAK6pC,eAAe+c,KAAKi5B,EAAyBl5D,EAAQvf,I,cAAhE,SACApH,KAAKsnF,yBAA2B,K,YAG9B,YAAA1hF,QAAN,SAAcwB,G,gGACK,SAAMpH,KAAKu1B,YAAYyL,a,OACtC,OADMra,EAAS,SACf,GAAM3mB,KAAK6pC,eAAe+c,KAAKi5B,EAAyBl5D,EAAQvf,I,cAAhE,SACApH,KAAKsnF,yBAA2B,K,YAG9B,YAAAtwE,MAAN,SAAY2P,G,0FACR,SAAM3mB,KAAK6pC,eAAe8a,OAAOk7B,EAAyBl5D,I,cAA1D,SACA3mB,KAAKsnF,yBAA2B,K,YAG9B,YAAAtsD,OAAN,SAAap7B,G,kGACM,SAAMI,KAAKu1B,YAAYyL,a,OAClB,OADdra,EAAS,SACK,GAAM3mB,KAAK6pC,eAAerrC,IAC1CqhF,EAAyBl5D,I,OAC7B,OAAmB,OAFbvf,EAAc,UAGhB,KAGc,iBAAPxH,GACGA,SACHwH,EAAYxH,IAElBA,EAAgBwE,SAAQ,SAAAnG,UACdmJ,EAAYnJ,MAI3B,GAAM+B,KAAK6pC,eAAe+c,KAAKi5B,EAAyBl5D,EAAQvf,K,cAAhE,SACApH,KAAKsnF,yBAA2B,K,YAExC,EAvJA,GAAa,EAAAt2E,qB,qSCrBb,aAKA,2BAgDA,OA/CW,EAAA22E,eAAP,SAAsBG,EAAuCC,EAAmBthF,EAC5E8b,EAAsBkB,EAAyBukE,GAC/C,KAAIvhF,EAAMtI,QAAU4pF,GAApB,CAOA,IAHA,IAAMt6D,EAAMs6D,IAActhF,EAAMtI,OAAS,EACnC8pF,EAAWxhF,EAAMshF,GAEd9pF,EAAI,EAAGA,EAAI6pF,EAAS3pF,OAAQF,IACjC,GAAI6pF,EAAS7pF,GAAGiqF,KAAKxgF,OAASjB,EAAMshF,GAGpC,OAAIt6D,GAAOq6D,EAAS7pF,GAAGiqF,KAAKtoF,KAAO2iB,EAAI3iB,QAEnCkoF,EAAS3iF,KAAK,IAAI,EAAAgjF,SAAS5lE,EAAK0lE,EAAUxkE,SAG9CikE,EAAaC,eAAeG,EAAS7pF,GAAGmqF,SAAUL,EAAY,EAAGthF,EAC7D8b,EAAKulE,EAAS7pF,GAAGiqF,KAAMF,GAI/B,GAA8D,IAA1DF,EAAS3/E,QAAO,SAAA6P,GAAK,OAAAA,EAAEkwE,KAAKxgF,OAASugF,KAAU9pF,OAAc,CAC7D,GAAIsvB,EAEA,YADAq6D,EAAS3iF,KAAK,IAAI,EAAAgjF,SAAS5lE,EAAK0lE,EAAUxkE,IAG9C,IAAM4kE,EAAc5hF,EAAMshF,GAAaC,EAAYvhF,EAAMshF,EAAY,GACrEL,EAAaC,eAAeG,EAAU,EAAG,EAAF,CAAGO,GAAgB5hF,EAAMxE,MAAM8lF,EAAY,IAC9ExlE,EAAKkB,EAAQukE,MAIlB,EAAAH,kBAAP,SAAyBC,EAAuCloF,GAC5D,IAAK,IAAI3B,EAAI,EAAGA,EAAI6pF,EAAS3pF,OAAQF,IAAK,CACtC,GAAI6pF,EAAS7pF,GAAGiqF,KAAKtoF,KAAOA,EACxB,OAAOkoF,EAAS7pF,GACb,GAA4B,MAAxB6pF,EAAS7pF,GAAGmqF,SAAkB,CACrC,IAAMF,EAAOR,EAAaG,kBAAkBC,EAAS7pF,GAAGmqF,SAAUxoF,GAClE,GAAa,OAATsoF,EACA,OAAOA,GAInB,OAAO,MAEf,EAhDA,GAAa,EAAAR,gB,8ECHb,iBACI,WAAoBvuE,GAAA,KAAAA,gBAiBxB,OAbI,YAAAmvE,eAAA,SAAex4E,GACX9P,KAAKuoF,eAAez4E,IAGxB,YAAAy4E,eAAA,SAAel9E,GACNA,EAAO6N,4BACR7N,EAAO6N,0BAA4BlZ,OAI3C,YAAAoZ,iBAAA,WACI,OAAOpZ,KAAKmZ,eAEpB,EAlBA,GAAa,EAAAqvE,oB,g7DCFb,aAEA,SACA,SAEA,SACA,SACA,SASA,QAEA,SACA,QACA,SAEM3I,EACG,MADHA,EAEU,aAFVA,EAGa,gBAHbA,EAIM,SAJNA,EAKO,UAGb,aASI,WAAoBh2C,EAAwC4+C,EAChDhoE,EAAsDioE,EACtDlmF,GAFQ,KAAAqnC,iBAAwC,KAAA4+C,uBAChD,KAAAhoE,wBAAsD,KAAAioE,sBACtD,KAAAlmF,aA+qBhB,OA5qBU,YAAA0+B,OAAN,SAAaviC,G,kGAGM,OAFfqB,KAAKrB,IAAMA,EAEI,GAAMqB,KAAK6pC,eAAerrC,IAAY,EAAAwT,iBAAiBQ,kB,OACpD,OADZm2E,EAAS,SACG,GAAM3oF,KAAK6pC,eAAerrC,IAAa,EAAAwT,iBAAiB0B,qB,OAC1E,OADMk1E,EAAY,SACJ,MAAVD,GAAoBC,GAAa5oF,KAAK0oF,oBAAoBG,wBAKvD,CAAP,EAAO7oF,KAAKyoF,qBAAqB7hC,KAAKi5B,EAAUlhF,EAAIupC,SAHhD,YAMR,YAAA/G,WAAA,SAAW2nD,GAEP,OADA9oF,KAAK8oF,QAAUA,EACR9oF,KAAK6pC,eAAe+c,KAAKi5B,EAAciJ,IAG5C,YAAA1nD,UAAN,SAAgB7X,G,0FACZ,OAAc,MAAVA,EACA,IAGJ,GAAMvpB,KAAK6pC,eAAe+c,KAAKi5B,EAAat2D,I,cAA5C,SACAvpB,KAAKupB,OAAS,K,YAGZ,YAAAmY,iBAAN,SAAuBonC,G,0FACnB,OAAqB,MAAjBA,EACA,IAGJ,GAAM9oE,KAAK6pC,eAAe+c,KAAKi5B,EAAoB/W,I,cAAnD,SACA9oE,KAAKqhC,WAAa,K,YAGtB,YAAA0nD,WAAA,SAAWxjD,GACP,IAAMyjD,EAAe,GAMrB,OALAzjD,EAAKnhC,SAAQ,SAAAohC,GACTwjD,EAAQxjD,EAAI5lC,IAAM4lC,EAAI7mC,OAG1BqB,KAAKgpF,QAAU,KACRhpF,KAAK6pC,eAAe+c,KAAKi5B,EAAiBmJ,IAG/C,YAAAtZ,OAAN,W,gGACI,OAAgB,MAAZ1vE,KAAKrB,IACE,CAAP,EAAOqB,KAAKrB,KAGJ,GAAMqB,KAAKyoF,qBAAqBjqF,IAAYqhF,I,OAKxD,OAJW,OADLlhF,EAAM,YAERqB,KAAKrB,IAAM,IAAI,EAAA0pC,mBAAmB,EAAA5iC,MAAM6F,eAAe3M,GAAK6N,SAGzD,CAAP,EAAc,MAAP7N,EAAc,KAAOqB,KAAKrB,aAG/B,YAAAsqF,WAAN,W,gGACI,OAAoB,MAAhBjpF,KAAK8oF,QACE,CAAP,EAAO9oF,KAAK8oF,SAGA,GAAM9oF,KAAK6pC,eAAerrC,IAAYqhF,I,OAKtD,OAJe,OADTiJ,EAAU,YAEZ9oF,KAAK8oF,QAAUA,GAGZ,CAAP,EAAkB,MAAXA,EAAkB,KAAO9oF,KAAK8oF,iBAInC,YAAAv6C,UAAN,SAAgB5vC,G,YAAA,IAAAA,MAAA,M,+FACZ,OAAmB,MAAfqB,KAAKupB,OACE,CAAP,EAAOvpB,KAAKupB,QAGD,GAAMvpB,KAAK6pC,eAAerrC,IAAYqhF,I,OACrD,OAAc,OADRt2D,EAAS,UAEJ,CAAP,EAAO,MAGA,MAAP5qB,EAAA,MACM,GAAMqB,KAAK0vE,U,OAAjB/wE,EAAM,S,iBAEV,OAAW,MAAPA,EACO,CAAP,EAAO,OAILuqF,EAAe,IAAI,EAAA30E,aAAagV,IACrBhR,iBAAmB,EAAAG,eAAeE,cAA/C,MACY,GAAM5Y,KAAKg7C,eAAekuC,EAAcvqF,I,cAApDwqF,EAAY,S,oBACLD,EAAa3wE,iBAAmB,EAAAG,eAAeG,yBAA/C,MACQ,GAAM7Y,KAAKopF,WAAWzqF,I,OACzB,OADNspE,EAAS,SACH,GAAMjoE,KAAKg7C,eAAekuC,EAAcjhB,I,cAApDkhB,EAAY,S,aAEZ,MAAM,IAAIxnF,MAAM,4B,OAGpB,OAAiB,MAAbwnF,EACO,CAAP,EAAO,OAEXnpF,KAAKupB,OAAS,IAAI,EAAA8e,mBAAmB8gD,GAC9B,CAAP,EAAOnpF,KAAKupB,iBAGV,YAAA8/D,aAAN,W,kGACI,OAAsB,MAAlBrpF,KAAK2tC,UACE,CAAP,EAAO3tC,KAAK2tC,WAGG,GAAM3tC,KAAK6oE,iB,OAC9B,OAAkB,OADZxnC,EAAa,UAER,CAAP,EAAO,OAGX,EAAArhC,KAAiB,GAAMA,KAAKygB,sBAAsB6oE,oBAAoBjoD,K,OACtE,OADA,EAAKsM,UAAY,SACV,CAAP,EAAO3tC,KAAK2tC,mBAGV,YAAAk7B,cAAN,W,kGACI,OAAuB,MAAnB7oE,KAAKqhC,WACE,CAAP,EAAOrhC,KAAKqhC,YAGM,GAAMrhC,KAAK6pC,eAAerrC,IAAYqhF,I,OAC5D,OAAqB,OADf/W,EAAgB,UAEX,CAAP,EAAO,OAGX,EAAA9oE,KAAkB,GAAMA,KAAKg7C,eAAe,IAAI,EAAAzmC,aAAau0D,GAAgB,Q,OAC7E,OADA,EAAKznC,WAAa,SACX,CAAP,EAAOrhC,KAAKqhC,oBAGV,YAAA+vB,eAAN,SAAqBzqC,EAAgBgnB,G,yGAChB,MAAbA,EAAA,MACY,GAAM3tC,KAAKqpF,gB,OAAvB17C,EAAY,S,iBAEhB,GAAkB,OAAdA,EACA,MAAM,IAAIhsC,MAAM,4BAEG,SAAM3B,KAAKygB,sBAAsBQ,KAAK0sB,EAAW,W,OAChD,OADlB47C,EAAiB,SACC,GAAMvpF,KAAKygB,sBAAsB+oE,WAAWD,EAAgB5iE,EAAQ,GAAI,W,OAChG,OADM8iE,EAAkB,SACjB,CAAP,EAAOzpF,KAAK0pF,WAAWD,YAIrB,YAAAE,WAAN,W,8GACI,OAAoB,MAAhB3pF,KAAKgpF,SAAmBhpF,KAAKgpF,QAAQrqE,KAAO,EACrC,CAAP,EAAO3e,KAAKgpF,SAGG,GAAMhpF,KAAK6pC,eAAerrC,IAASqhF,I,OACtD,GAAkB,OADZ+J,EAAa,UAEf,MAAO,CAAP,EAAO,M,SAGLZ,EAA2C,IAAIh6E,IACjDkyB,GAAS,E,KAEO0oD,E,yDACXA,EAAW5qF,eAAe6V,GAId,GAAM7U,KAAKsxE,WAAWsY,EAAW/0E,KAH9C,O,aAGEomC,EAAW,SACjB+tC,EAAQ95E,IAAI2F,EAAO,IAAI,EAAAwzB,mBAAmB4S,IAC1C/Z,GAAS,E,yCAOb,OAJIA,IACAlhC,KAAKgpF,QAAUA,GAGZ,CAAP,EAAOhpF,KAAKgpF,iBAGV,YAAA3vE,UAAN,SAAgBxE,G,gGACZ,OAAa,MAATA,EACO,CAAP,EAAO,MAGK,GAAM7U,KAAK2pF,c,OAC3B,OAAe,OADTX,EAAU,WACQA,EAAQ3qD,IAAIxpB,GAI7B,CAAP,EAAOm0E,EAAQxqF,IAAIqW,IAHR,CAAP,EAAO,cAMT,YAAAwyC,OAAN,W,0FACY,SAAMrnD,KAAK0vE,U,OAAnB,MAAO,CAAP,EAAgC,MAAxB,kBAGN,YAAAnN,UAAN,W,0FACmB,SAAMviE,KAAK6pC,eAAerrC,IAAYqhF,I,OACrD,MAAO,CAAP,EAAiB,MADF,kBAInB,YAAAgK,SAAA,WAEI,OADA7pF,KAAKrB,IAAMqB,KAAK8pF,aAAe,KACxB9pF,KAAKyoF,qBAAqB9jC,OAAOk7B,IAG5C,YAAAkK,aAAA,WAEI,OADA/pF,KAAK8oF,QAAU,KACR9oF,KAAK6pC,eAAe8a,OAAOk7B,IAGtC,YAAAmK,YAAA,SAAYC,GAER,OADAjqF,KAAKupB,OAAS,KACV0gE,EACO/0E,QAAQC,UAEZnV,KAAK6pC,eAAe8a,OAAOk7B,IAGtC,YAAAqK,aAAA,SAAaD,GAGT,OAFAjqF,KAAKqhC,WAAa,KAClBrhC,KAAK2tC,UAAY,KACbs8C,EACO/0E,QAAQC,UAEZnV,KAAK6pC,eAAe8a,OAAOk7B,IAGtC,YAAAsK,aAAA,SAAaF,GAET,OADAjqF,KAAKgpF,QAAU,KACXiB,EACO/0E,QAAQC,UAEZnV,KAAK6pC,eAAe8a,OAAOk7B,IAGtC,YAAAuK,qBAAA,WACI,OAAOpqF,KAAK6pC,eAAe8a,OAAO,EAAA3yC,iBAAiBoB,kBAGvD,YAAAi3E,UAAA,WACI,OAAOn1E,QAAQK,IAAI,CACfvV,KAAK6pF,WACL7pF,KAAK+pF,eACL/pF,KAAKmqF,eACLnqF,KAAKgqF,cACLhqF,KAAKkqF,eACLlqF,KAAKoqF,0BAIP,YAAAE,UAAN,W,kGACgB,SAAMtqF,KAAK0vE,U,OACR,OADT/wE,EAAM,SACG,GAAMqB,KAAK6pC,eAAerrC,IAAI,EAAAwT,iBAAiBQ,kB,OAC5C,OADZm2E,EAAS,SACG,GAAM3oF,KAAK6pC,eAAerrC,IAAI,EAAAwT,iBAAiB0B,qB,cAA/C,WACC1T,KAAK0oF,oBAAoBG,yBAAuC,MAAVF,GAA6B,IAAXA,EAAvF,MAEA,GAAM3oF,KAAK6pF,Y,OAEX,OAFA,SACA7pF,KAAKrB,IAAMA,EACX,I,OAGJ,SAAMqB,KAAKkhC,OAAOviC,I,cAAlB,S,YAGE,YAAAwgC,QAAN,SAAcr1B,EAAkBygF,EAAc1rD,EAAcC,G,mGAEpDngC,EAAmB,KACZ,MAAPkgC,GAAeA,IAAQ,EAAAlS,QAAQu9C,cAA/B,YACA,GAAqB,MAAjBprC,EACAA,EAAgB,SACb,GAAIA,EAAgB,IACvB,MAAM,IAAIn9B,MAAM,qCAEd,SAAM3B,KAAKygB,sBAAsB0kD,OAAOr7D,EAAUygF,EAAM,SAAUzrD,I,cAAxEngC,EAAM,S,aAEN,MAAM,IAAIgD,MAAM,gB,OAEpB,MAAO,CAAP,EAAO,IAAI,EAAA0mC,mBAAmB1pC,YAG5B,YAAA6rF,eAAN,SAAqBC,EAAaF,EAAc1rD,EAAcC,EAC1D4rD,G,YAAA,IAAAA,MAAA,M,oGAEsB,MAAlBA,EAAA,MACwB,GAAM1qF,KAAK6pC,eAAerrC,IAAY,EAAAwT,iBAAiBoB,kB,OAC/E,GAAuB,OADjBA,EAAkB,UAEpB,MAAM,IAAIzR,MAAM,+BAEpB+oF,EAAiB,IAAI,EAAAn2E,aAAanB,G,iBAEvB,SAAMpT,KAAK2qF,WAAWF,EAAKF,EAAM1rD,EAAKC,I,OACtC,OADT8rD,EAAS,SACA,GAAM5qF,KAAKg7C,eAAe0vC,EAAgBE,I,OACzD,OADMhmB,EAAS,SACR,CAAP,EAAO,IAAI,EAAAv8B,mBAAmBu8B,YAG5B,YAAAz+B,aAAN,W,kGACqB,SAAMnmC,KAAKygB,sBAAsBoqE,YAAY,K,OAC5C,OADZzkD,EAAW,SACC,GAAMpmC,KAAKqpF,gB,OACT,OADd17C,EAAY,SACE,GAAM3tC,KAAKqxD,WAAWjrB,EAAUuH,I,OACpD,MAAO,CAAC,EAAD,CADa,SACC,IAAI,EAAAtF,mBAAmBjC,aAG1C,YAAA9E,YAAN,SAAkB3iC,G,oGACE,SAAMqB,KAAKygB,sBAAsBqqE,mBAAmB,O,OAEjD,OAFbvpD,EAAU,SACVwpD,EAAY,EAAAtlF,MAAM8G,gBAAgBg1B,EAAQ,IAC7B,GAAMvhC,KAAKqmC,QAAQ9E,EAAQ,GAAI5iC,I,OAClD,OADMqsF,EAAa,SACZ,CAAC,EAAD,CAACD,EAAWC,YAGjB,YAAAL,WAAN,SAAiBF,EAAaF,EAAc1rD,EAAcC,G,gGACvC,SAAM9+B,KAAKm/B,QAAQsrD,EAAKF,EAAM1rD,EAAKC,I,OAC3C,OADD8rD,EAAS,SACR,GAAM5qF,KAAKopF,WAAWwB,I,OAA7B,MAAO,CAAP,EAAO,kBAGL,YAAAnlB,YAAN,SAAkBwlB,G,gGACE,SAAMjrF,KAAKygB,sBAAsByqE,KAAKD,EAAa,iBAAkB,OAAQ,GAAI,W,OACjG,OADME,EAAU,SACT,CAAP,EAAO,IAAI,EAAA9iD,mBAAmB8iD,YAG5B,YAAAljE,aAAN,SAAmBne,EAAkBnL,G,uGACtB,MAAPA,EAAA,MACM,GAAMqB,KAAK0vE,U,OAAjB/wE,EAAM,S,iBAEV,GAAgB,MAAZmL,GAA2B,MAAPnL,EACpB,MAAM,IAAIgD,MAAM,uBAGP,SAAM3B,KAAKygB,sBAAsB0kD,OAAOxmE,EAAIA,IAAKmL,EAAU,SAAU,I,OAClF,OADMmX,EAAO,SACN,CAAP,EAAO,EAAAxb,MAAM8G,gBAAgB0U,YAG3B,YAAAutB,WAAN,SAAiB7vC,G,kGACE,SAAMqB,KAAKorF,oBAAoBzsF,I,OAC/B,OADT0sF,EAAS,SACA,GAAMrrF,KAAKygB,sBAAsBoqE,YAAY,K,OAC5D,OADMthE,EAAS,SACR,CAAP,EAAOvpB,KAAKsrF,YAAYD,EAAQ9hE,YAG9B,YAAAklB,aAAN,SAAmB9vC,EAAyB4qB,G,iGAC1B,MAAVA,EAAA,MACS,GAAMvpB,KAAKuuC,a,OAApBhlB,EAAS,S,iBAEb,MAAO,CAAP,EAAOvpB,KAAKsrF,YAAY3sF,EAAK4qB,EAAO5qB,cAGlC,YAAA0nC,QAAN,SAAcklD,EAAkC5sF,G,wGAC5C,OAAkB,MAAd4sF,EACO,CAAP,EAAOr2E,QAAQC,QAAQ,QAKvBq2E,EADwB,iBAAjB,EACI,EAAA/lF,MAAMwG,gBAAgBs/E,GAAY/+E,OAElC++E,EAGA,GAAMvrF,KAAKyrF,WAAWD,EAAU7sF,K,OAI/C,OAJM+sF,EAAS,SACTtzE,EAAK,EAAA3S,MAAM8G,gBAAgBm/E,EAAOtzE,IAClCjV,EAAO,EAAAsC,MAAM8G,gBAAgBm/E,EAAOvoF,MACpCkV,EAAoB,MAAdqzE,EAAOrzE,IAAc,EAAA5S,MAAM8G,gBAAgBm/E,EAAOrzE,KAAO,KAC9D,CAAP,EAAO,IAAI,EAAA9D,aAAam3E,EAAO/sF,IAAI2Z,QAASnV,EAAMiV,EAAIC,YAGpD,YAAAysE,eAAN,SAAqByG,EAAyB5sF,G,oGACzB,SAAMqB,KAAKyrF,WAAWF,EAAY5sF,I,OAcnD,OAdMgtF,EAAW,SACbC,EAAS,EACO,MAAhBD,EAAStzE,MACTuzE,EAASD,EAAStzE,IAAI1L,aAGpBk/E,EAAW,IAAItgF,WAAW,EAAIogF,EAASvzE,GAAGzL,WAAai/E,EAASD,EAASxoF,KAAKwJ,aAC3EuC,IAAI,CAACy8E,EAAShtF,IAAI2Z,UAC3BuzE,EAAS38E,IAAI,IAAI3D,WAAWogF,EAASvzE,IAAK,GACtB,MAAhBuzE,EAAStzE,KACTwzE,EAAS38E,IAAI,IAAI3D,WAAWogF,EAAStzE,KAAM,EAAIszE,EAASvzE,GAAGzL,YAG/Dk/E,EAAS38E,IAAI,IAAI3D,WAAWogF,EAASxoF,MAAO,EAAIwoF,EAASvzE,GAAGzL,WAAai/E,GAClE,CAAP,EAAOC,EAASr/E,gBAGd,YAAA6kD,WAAN,SAAiBluD,EAAmBwqC,G,uGACf,MAAbA,EAAA,MACY,GAAM3tC,KAAKqpF,gB,OAAvB17C,EAAY,S,iBAEhB,GAAiB,MAAbA,EACA,MAAM,IAAIhsC,MAAM,2BAGH,SAAM3B,KAAKygB,sBAAsB4wC,WAAWluD,EAAMwqC,EAAW,S,OAC9E,OADMk+C,EAAW,SACV,CAAP,EAAO,IAAI,EAAAt3E,aAAa,EAAAmE,eAAeK,qBAAsB,EAAAtT,MAAM8G,gBAAgBs/E,aAGjF,YAAAva,WAAN,SAAiBqa,G,0GAKb,GAJMnzE,EAAemzE,EAAS3lF,MAAM,KAChCsS,EAA0B,KAGF,IAAxBE,EAAara,OACbma,EAAU,EAAAI,eAAeI,uBACzBL,EAAY,CAACD,EAAa,SACvB,GAA4B,IAAxBA,EAAara,OACpB,IACIma,EAAUtM,SAASwM,EAAa,GAAI,MACpCC,EAAYD,EAAa,GAAGxS,MAAM,KACpC,MAAOnF,IAGb,OAAQyX,GACJ,KAAK,EAAAI,eAAeI,uBACpB,KAAK,EAAAJ,eAAeK,qBAEpB,KAAK,EAAAL,eAAeozE,kCACpB,KAAK,EAAApzE,eAAeqzE,gCAChB,MACJ,QACI,MAAM,IAAIpqF,MAAM,wBAGxB,GAAiB,MAAb8W,GAAqBA,EAAUta,QAAU,EACzC,MAAM,IAAIwD,MAAM,0BAID,OADbwB,EAAO,EAAAsC,MAAM6F,eAAemN,EAAU,IAAIjM,OAC7B,GAAMxM,KAAK6oE,iB,OAC9B,GAAkB,OADZxnC,EAAa,UAEf,MAAM,IAAI1/B,MAAM,mBAIpB,OADIqqF,EAAyB,OACrB1zE,GACJ,KAAK,EAAAI,eAAeI,uBACpB,KAAK,EAAAJ,eAAeozE,kCAChBE,EAAM,SACN,MACJ,KAAK,EAAAtzE,eAAeK,qBACpB,KAAK,EAAAL,eAAeqzE,gCAChB,MACJ,QACI,MAAM,IAAIpqF,MAAM,wBAGxB,MAAO,CAAP,EAAO3B,KAAKygB,sBAAsB6wD,WAAWnuE,EAAMk+B,EAAY2qD,YAG7D,YAAAhxC,eAAN,SAAqBixC,EAA4BttF,G,sGAI5B,OAHXyZ,EAAK,EAAA3S,MAAM6F,eAAe2gF,EAAa7zE,IAAI5L,OAC3CrJ,EAAO,EAAAsC,MAAM6F,eAAe2gF,EAAa9oF,MAAMqJ,OAC/C6L,EAAM4zE,EAAa5zE,IAAM,EAAA5S,MAAM6F,eAAe2gF,EAAa5zE,KAAK7L,OAAS,KAC9D,GAAMxM,KAAKksF,kBAAkBD,EAAa1zE,eAAgBpV,EAAMiV,EAAIC,EAAK1Z,I,OAC1F,OAAgB,OADVwtF,EAAW,UAEN,CAAP,EAAO,MAGJ,CAAP,EAAOA,WAGL,YAAA7yE,cAAN,SAAoB2yE,EAA4BttF,G,0FACrC,SAAMqB,KAAKosF,iBAAiBH,EAAa1zE,eAAgB0zE,EAAa9oF,KACzE8oF,EAAa7zE,GAAI6zE,EAAa5zE,IAAK1Z,I,OADvC,MAAO,CAAP,EAAO,kBAIL,YAAA0jE,iBAAN,SAAuBgqB,EAAqB1tF,G,wGACxC,GAAc,MAAV0tF,EACA,MAAM,IAAI1qF,MAAM,cASpB,OANMkqF,EAAW,IAAItgF,WAAW8gF,GAC1B/zE,EAAUuzE,EAAS,GACrBS,EAAsB,KACtBC,EAAsB,KACtBC,EAAuB,KAEnBl0E,GACJ,KAAK,EAAAI,eAAeC,yBACpB,KAAK,EAAAD,eAAeG,yBAChB,GAAIgzE,EAAS1tF,QAAU,GACnB,MAAO,CAAP,EAAO,MAGXouF,EAAUV,EAAS5pF,MAAM,EAAG,IAC5BuqF,EAAWX,EAAS5pF,MAAM,GAAI,IAC9BqqF,EAAUT,EAAS5pF,MAAM,IACzB,MACJ,KAAK,EAAAyW,eAAeE,cAChB,GAAIizE,EAAS1tF,QAAU,GACnB,MAAO,CAAP,EAAO,MAGXouF,EAAUV,EAAS5pF,MAAM,EAAG,IAC5BqqF,EAAUT,EAAS5pF,MAAM,IACzB,MACJ,QACI,MAAO,CAAP,EAAO,MAGR,SAAMjC,KAAKksF,kBAAkB5zE,EAASg0E,EAAQ9/E,OAAQ+/E,EAAQ//E,OACrD,MAAZggF,EAAmBA,EAAShgF,OAAS,KAAM7N,I,OAD/C,MAAO,CAAP,EAAO,kBAML,YAAA8tF,aAAN,SAAmBC,EAAa7tB,G,gHAI5B,GAHI8tB,EAAO,EACLC,EAAQ/tB,EAAM6tB,EAAM,GACpBG,EAAa7+E,KAAK8+E,KAAK9+E,KAAK++E,KAAKH,KACtB,GACb,MAAM,IAAIjrF,MAAM,mDAQa,OAL3BqrF,EAAch/E,KAAK8+E,KAAKD,EAAa,GACrCI,EAAOj/E,KAAKk/E,IAAI,EAAGL,GAAc,E,EAIjBthF,WAAU,KAAC,GAAMvL,KAAKygB,sBAAsBoqE,YAAYmC,I,OAG9E,IAHMG,EAAY,YAAI5hF,WAAU,QAAC,YAE7B0J,EAAwB,GAAnB+3E,EAAc,GACd/uF,EAAI,EAAGA,EAAI+uF,EAAa/uF,IAC7B0uF,GAAQQ,EAAUlvF,GAAK+P,KAAKk/E,IAAI,EAAGj4E,GACnCA,GAAK,EAOT,OAFA03E,GAAcM,IAEFL,EAED,CAAP,EAAO5sF,KAAKysF,aAAaC,EAAK7tB,IAI3B,CAAP,EAAO6tB,EAAMC,WAKH,YAAAlB,WAAd,SAAyBtoF,EAAmBxE,G,0GAE9B,OADJ4jB,EAAM,IAAI,EAAAsvD,gBAChB,EAAAtvD,EAAU,GAAMviB,KAAKorF,oBAAoBzsF,I,OAChC,OADT,EAAIA,IAAM,SACV,EAAA4jB,EAAS,GAAMviB,KAAKygB,sBAAsBoqE,YAAY,K,OAC3C,OADX,EAAIzyE,GAAK,SACT,EAAAmK,EAAW,GAAMviB,KAAKygB,sBAAsBgrE,WAAWtoF,EAAMof,EAAInK,GAAImK,EAAI5jB,IAAI4qB,S,cAA7E,EAAIpmB,KAAO,SAEW,MAAlBof,EAAI5jB,IAAIspC,OAAR,QACMmlD,EAAU,IAAI7hF,WAAWgX,EAAInK,GAAGzL,WAAa4V,EAAIpf,KAAKwJ,aACpDuC,IAAI,IAAI3D,WAAWgX,EAAInK,IAAK,GACpCg1E,EAAQl+E,IAAI,IAAI3D,WAAWgX,EAAIpf,MAAOof,EAAInK,GAAGzL,YAC7C,EAAA4V,EAAU,GAAMviB,KAAKygB,sBAAsB4sE,KAAKD,EAAQ5gF,OAAQ+V,EAAI5jB,IAAIspC,OAAQ,Y,OAAhF,EAAI5vB,IAAM,S,iBAGd,MAAO,CAAP,EAAOkK,WAGG,YAAA6pE,iBAAd,SAA+B9zE,EAAyBnV,EAAciV,EAAYC,EAC9E1Z,G,sGACkB,SAAMqB,KAAKorF,oBAAoBzsF,I,OAGjD,OAHM2uF,EAAY,SAGG,OAFfjC,EAASrrF,KAAKutF,iBAAiBj1E,EAASg1E,IAEnCrlD,QAAyB,MAAP5vB,GACzBrY,KAAKwC,WAAWuc,MAAM,iBACf,CAAP,EAAO,OAGPssE,EAAO/yE,UAAYA,GACnBtY,KAAKwC,WAAWuc,MAAM,wBACf,CAAP,EAAO,OAIc,OADnByuE,EAAaxtF,KAAKygB,sBAAsBgtE,yBAAyBtqF,EAAMiV,EAAIC,EAAKgzE,IACvEpjD,QAAoC,MAAlBulD,EAAWn1E,IAAxC,MACoB,GAAMrY,KAAKygB,sBAAsBitE,SAASF,EAAWJ,QACrEI,EAAWvlD,OAAQ,W,OACL,OAFZ0lD,EAAc,SAEF,GAAM3tF,KAAKygB,sBAAsBmtE,YAAYJ,EAAWn1E,IAAKs1E,I,OAC/E,IADkB,SAGd,OADA3tF,KAAKwC,WAAWuc,MAAM,eACf,CAAP,EAAO,M,iBAIf,MAAO,CAAP,EAAO/e,KAAKygB,sBAAsBotE,eAAeL,YAGvC,YAAAtB,kBAAd,SAAgC5zE,EAAyBnV,EAAmBiV,EACxEC,EAAkB1Z,G,sGACA,SAAMqB,KAAKorF,oBAAoBzsF,I,OAGjD,OAHM2uF,EAAY,SAGG,OAFfjC,EAASrrF,KAAKutF,iBAAiBj1E,EAASg1E,IAEnCrlD,QAAyB,MAAP5vB,EAClB,CAAP,EAAO,MAGPgzE,EAAO/yE,UAAYA,EACZ,CAAP,EAAO,MAGU,MAAjB+yE,EAAOpjD,QAAyB,MAAP5vB,EAAzB,QACM+0E,EAAU,IAAI7hF,WAAW6M,EAAGzL,WAAaxJ,EAAKwJ,aAC5CuC,IAAI,IAAI3D,WAAW6M,GAAK,GAChCg1E,EAAQl+E,IAAI,IAAI3D,WAAWpI,GAAOiV,EAAGzL,YACjB,GAAM3M,KAAKygB,sBAAsB4sE,KAAKD,EAAQ5gF,OAAQ6+E,EAAOpjD,OAAQ,Y,OACzF,OAAoB,QADd0lD,EAAc,UAET,CAAP,EAAO,MAGO,GAAM3tF,KAAKygB,sBAAsBjR,QAAQ6I,EAAKs1E,I,OAChE,IADkB,SAGd,OADA3tF,KAAKwC,WAAWuc,MAAM,eACf,CAAP,EAAO,M,iBAIR,SAAM/e,KAAKygB,sBAAsBqtE,WAAW3qF,EAAMiV,EAAIizE,EAAO9hE,S,OAApE,MAAO,CAAP,EAAO,kBAGG,YAAA6hE,oBAAd,SAAkCzsF,G,gGAC9B,OAAW,MAAPA,EACO,CAAP,EAAOA,GAGI,GAAMqB,KAAKuuC,a,OAC1B,OAAc,OADRhlB,EAAS,UAEJ,CAAP,EAAOA,GAGJ,GAAMvpB,KAAK0vE,U,OAAlB,MAAO,CAAP,EAAO,kBAGH,YAAA6d,iBAAR,SAAyBj1E,EAAyB3Z,GAC9C,OAAI2Z,IAAY,EAAAI,eAAeC,0BAC3Bha,EAAI2Z,UAAY,EAAAI,eAAeE,eAEN,MAArB5Y,KAAK8pF,eACL9pF,KAAK8pF,aAAe,IAAI,EAAAzhD,mBAAmB1pC,EAAIA,IAAK,EAAA+Z,eAAeC,2BAEhE3Y,KAAK8pF,cAGTnrF,GAGG,YAAAyqF,WAAd,SAAyBzqF,G,oGAEN,OADTspE,EAAS,IAAI18D,WAAW,IACf,GAAMvL,KAAKygB,sBAAsB+oE,WAAW7qF,EAAIA,IAAK,MAAO,GAAI,W,OAChE,OADT4qB,EAAS,SACA,GAAMvpB,KAAKygB,sBAAsB+oE,WAAW7qF,EAAIA,IAAK,MAAO,GAAI,W,OAG/E,OAHMspC,EAAS,SACfggC,EAAO/4D,IAAI,IAAI3D,WAAWge,IAC1B0+C,EAAO/4D,IAAI,IAAI3D,WAAW08B,GAAS,IAC5B,CAAP,EAAO,IAAI,EAAAI,mBAAmB4/B,EAAOz7D,iBAG3B,YAAAk9E,WAAd,SAAyBzoE,EAAmB8sE,G,YAAA,IAAAA,MAAA,I,8EAMxC,GALMC,EAAiBhgF,KAAKmjD,IAAI,EAAA88B,gBAAgB9vF,QAAU6P,KAAKmjD,IAAI,GAC/D+8B,EAAWlgF,KAAK8+E,KAAKiB,EAAiBC,GAEpCG,EAAUnmF,MAAMC,KAAK,IAAIsD,WAAW0V,IACpCmtE,EAAoC,EAAjBD,EAAQhwF,OAC7B+vF,EAAWF,EAAiBI,EAC5B,MAAM,IAAIzsF,MAAM,gDAKpB,IAFM0sF,EAAmB,GACrBC,EAAaC,EAAOC,UAAUL,EAAS,KACpCD,KACGO,EAAYH,EAAWv0D,IAAI,EAAAk0D,gBAAgB9vF,QACjDmwF,EAAaA,EAAWI,OAAO,EAAAT,gBAAgB9vF,QAC/CkwF,EAAOlpF,KAAK,EAAA8oF,gBAAgBQ,IAEhC,MAAO,CAAP,EAAOJ,UAGG,YAAA/C,YAAd,SAA0B3sF,EAAyB4qB,G,yGAE3ColE,EAA0B,KACH,KAAvBhwF,EAAIA,IAAIgO,WAAR,MACe,GAAM3M,KAAKopF,WAAWzqF,I,OACzB,OADNspE,EAAS,SACH,GAAMjoE,KAAKqmC,QAAQ9c,EAAQ0+C,I,cAAvC0mB,EAAY,S,oBACkB,KAAvBhwF,EAAIA,IAAIgO,WAAR,MACK,GAAM3M,KAAKqmC,QAAQ9c,EAAQ5qB,I,cAAvCgwF,EAAY,S,aAEZ,MAAM,IAAIhtF,MAAM,qB,OAEpB,MAAO,CAAC,EAAD,CAAC,IAAI,EAAA0mC,mBAAmB9e,GAASolE,YAjmB5C,GADC,EAAA9H,eAAc,WAAM,qB,iDACA,EAAAx+C,qB,8DA4ErB,GADC,EAAAw+C,eAAc,WAAM,sB,mHAwhBzB,EA1rBA,GAAa,EAAAvlF,iB,8EC7BA,EAAA2sF,gBAAkB,CAC3B,SACA,UACA,YACA,QACA,UACA,UACA,SACA,OACA,WACA,WACA,WACA,UACA,UACA,SACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,SACA,SACA,UACA,YACA,YACA,UACA,WACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,WACA,UACA,OACA,UACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,WACA,WACA,UACA,OACA,UACA,YACA,WACA,WACA,UACA,YACA,OACA,SACA,WACA,YACA,YACA,YACA,YACA,SACA,QACA,YACA,WACA,SACA,UACA,SACA,SACA,WACA,QACA,SACA,YACA,YACA,YACA,YACA,YACA,OACA,UACA,SACA,SACA,QACA,YACA,SACA,QACA,UACA,QACA,WACA,UACA,YACA,QACA,YACA,YACA,SACA,WACA,YACA,UACA,QACA,OACA,OACA,OACA,MACA,OACA,YACA,QACA,YACA,QACA,UACA,UACA,YACA,QACA,QACA,YACA,WACA,SACA,QACA,QACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,QACA,QACA,YACA,QACA,WACA,UACA,WACA,WACA,OACA,WACA,SACA,SACA,WACA,QACA,YACA,QACA,WACA,YACA,YACA,WACA,YACA,YACA,SACA,YACA,YACA,SACA,UACA,UACA,WACA,OACA,QACA,QACA,QACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,SACA,WACA,SACA,YACA,SACA,UACA,WACA,YACA,UACA,YACA,UACA,SACA,UACA,UACA,UACA,SACA,SACA,WACA,OACA,YACA,UACA,QACA,SACA,SACA,SACA,UACA,UACA,YACA,YACA,UACA,SACA,UACA,YACA,YACA,WACA,QACA,YACA,QACA,QACA,WACA,YACA,WACA,WACA,UACA,WACA,UACA,YACA,UACA,YACA,WACA,WACA,WACA,SACA,UACA,YACA,WACA,SACA,WACA,WACA,YACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,SACA,UACA,QACA,QACA,UACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,WACA,QACA,SACA,UACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,QACA,YACA,YACA,UACA,QACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,WACA,QACA,OACA,WACA,YACA,YACA,WACA,OACA,QACA,WACA,WACA,QACA,QACA,YACA,UACA,WACA,QACA,SACA,UACA,SACA,UACA,UACA,UACA,SACA,UACA,OACA,QACA,QACA,SACA,UACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,QACA,MACA,SACA,YACA,SACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,YACA,SACA,WACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,YACA,SACA,WACA,QACA,OACA,WACA,OACA,SACA,YACA,UACA,SACA,SACA,UACA,YACA,WACA,YACA,YACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,UACA,WACA,QACA,WACA,YACA,SACA,YACA,SACA,SACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,UACA,WACA,QACA,WACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,UACA,SACA,QACA,OACA,OACA,SACA,WACA,SACA,SACA,WACA,YACA,YACA,WACA,SACA,SACA,YACA,WACA,WACA,UACA,YACA,WACA,WACA,YACA,UACA,UACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,YACA,SACA,WACA,WACA,YACA,WACA,QACA,WACA,YACA,SACA,QACA,UACA,QACA,UACA,SACA,WACA,QACA,SACA,UACA,SACA,SACA,YACA,UACA,QACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,QACA,WACA,SACA,SACA,SACA,WACA,QACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,SACA,YACA,UACA,SACA,WACA,SACA,UACA,SACA,UACA,QACA,WACA,UACA,WACA,SACA,UACA,SACA,OACA,YACA,UACA,YACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,OACA,YACA,SACA,QACA,QACA,QACA,SACA,SACA,QACA,OACA,QACA,OACA,YACA,WACA,YACA,UACA,UACA,SACA,SACA,UACA,UACA,UACA,QACA,OACA,QACA,UACA,YACA,YACA,QACA,YACA,YACA,QACA,WACA,YACA,SACA,UACA,SACA,QACA,QACA,UACA,QACA,QACA,WACA,QACA,QACA,UACA,UACA,WACA,SACA,OACA,WACA,QACA,WACA,UACA,WACA,OACA,OACA,WACA,WACA,UACA,OACA,SACA,UACA,QACA,SACA,YACA,QACA,QACA,UACA,SACA,QACA,QACA,WACA,UACA,WACA,WACA,OACA,SACA,UACA,SACA,SACA,UACA,UACA,YACA,OACA,SACA,SACA,QACA,OACA,MACA,UACA,OACA,UACA,SACA,UACA,WACA,QACA,WACA,WACA,WACA,QACA,UACA,SACA,SACA,QACA,OACA,YACA,YACA,OACA,YACA,SACA,QACA,SACA,UACA,WACA,UACA,QACA,QACA,QACA,SACA,UACA,WACA,YACA,OACA,YACA,WACA,SACA,QACA,OACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,YACA,YACA,SACA,SACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,YACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,QACA,QACA,QACA,QACA,UACA,UACA,SACA,YACA,OACA,QACA,QACA,UACA,UACA,YACA,UACA,UACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,WACA,QACA,QACA,UACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,QACA,QACA,WACA,QACA,YACA,SACA,WACA,SACA,YACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,QACA,SACA,UACA,SACA,SACA,UACA,UACA,QACA,OACA,QACA,YACA,SACA,OACA,UACA,YACA,YACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,WACA,QACA,QACA,SACA,SACA,SACA,UACA,YACA,WACA,QACA,OACA,SACA,OACA,SACA,UACA,OACA,WACA,OACA,SACA,UACA,SACA,YACA,QACA,UACA,QACA,SACA,QACA,SACA,SACA,QACA,QACA,WACA,UACA,OACA,UACA,OACA,WACA,WACA,UACA,YACA,WACA,UACA,YACA,OACA,UACA,UACA,UACA,YACA,QACA,SACA,WACA,SACA,WACA,UACA,WACA,SACA,QACA,SACA,SACA,UACA,SACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,SACA,SACA,QACA,YACA,SACA,UACA,SACA,UACA,UACA,WACA,OACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,UACA,YACA,UACA,YACA,UACA,UACA,QACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,YACA,YACA,YACA,WACA,SACA,YACA,QACA,SACA,UACA,UACA,WACA,UACA,YACA,WACA,YACA,QACA,YACA,YACA,UACA,UACA,UACA,SACA,YACA,QACA,SACA,WACA,SACA,UACA,YACA,YACA,QACA,UACA,UACA,UACA,OACA,OACA,SACA,SACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,WACA,SACA,UACA,WACA,WACA,UACA,YACA,WACA,UACA,SACA,SACA,SACA,UACA,YACA,SACA,QACA,UACA,YACA,SACA,SACA,YACA,QACA,UACA,YACA,UACA,WACA,WACA,UACA,SACA,SACA,QACA,SACA,YACA,WACA,WACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,WACA,QACA,QACA,UACA,YACA,UACA,YACA,WACA,SACA,SACA,UACA,QACA,QACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,WACA,UACA,WACA,UACA,UACA,QACA,UACA,UACA,WACA,QACA,UACA,SACA,WACA,WACA,WACA,UACA,WACA,SACA,WACA,UACA,QACA,QACA,SACA,SACA,OACA,YACA,UACA,QACA,YACA,SACA,QACA,QACA,UACA,QACA,WACA,SACA,UACA,QACA,QACA,YACA,YACA,YACA,WACA,YACA,YACA,QACA,QACA,QACA,OACA,WACA,SACA,WACA,WACA,QACA,WACA,WACA,SACA,YACA,UACA,QACA,UACA,WACA,SACA,OACA,SACA,UACA,WACA,SACA,SACA,QACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,UACA,SACA,SACA,OACA,QACA,QACA,OACA,QACA,WACA,SACA,SACA,QACA,YACA,QACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,OACA,OACA,QACA,QACA,QACA,UACA,QACA,SACA,YACA,WACA,QACA,SACA,UACA,SACA,UACA,WACA,QACA,SACA,WACA,OACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,UACA,UACA,WACA,QACA,SACA,UACA,WACA,YACA,QACA,WACA,SACA,SACA,YACA,SACA,UACA,QACA,YACA,UACA,UACA,WACA,YACA,YACA,OACA,WACA,SACA,UACA,SACA,QACA,UACA,MACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,OACA,OACA,OACA,OACA,WACA,WACA,UACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,SACA,WACA,OACA,OACA,OACA,UACA,QACA,QACA,SACA,QACA,WACA,UACA,UACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,YACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,QACA,YACA,UACA,WACA,WACA,SACA,WACA,YACA,YACA,UACA,YACA,YACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,YACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,UACA,YACA,OACA,SACA,SACA,UACA,SACA,UACA,SACA,OACA,QACA,OACA,WACA,YACA,UACA,SACA,SACA,SACA,YACA,YACA,WACA,WACA,YACA,QACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,OACA,UACA,SACA,QACA,QACA,QACA,YACA,YACA,WACA,YACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,SACA,WACA,OACA,WACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,YACA,SACA,QACA,YACA,QACA,UACA,UACA,QACA,QACA,QACA,UACA,WACA,WACA,WACA,WACA,SACA,SACA,UACA,YACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,SACA,WACA,WACA,WACA,WACA,WACA,SACA,QACA,QACA,SACA,QACA,QACA,WACA,UACA,WACA,YACA,UACA,WACA,UACA,WACA,OACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,UACA,UACA,UACA,WACA,UACA,YACA,SACA,WACA,UACA,QACA,QACA,QACA,QACA,OACA,QACA,SACA,UACA,UACA,QACA,QACA,UACA,UACA,YACA,UACA,YACA,UACA,QACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,UACA,UACA,WACA,QACA,OACA,SACA,UACA,UACA,YACA,OACA,UACA,UACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,YACA,WACA,UACA,YACA,UACA,QACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,SACA,SACA,SACA,YACA,UACA,QACA,QACA,QACA,UACA,SACA,UACA,SACA,SACA,YACA,QACA,QACA,QACA,OACA,SACA,UACA,YACA,UACA,YACA,WACA,YACA,UACA,MACA,QACA,SACA,UACA,UACA,WACA,SACA,YACA,YACA,MACA,MACA,WACA,SACA,QACA,WACA,SACA,QACA,QACA,WACA,QACA,UACA,YACA,SACA,WACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,WACA,YACA,UACA,WACA,WACA,UACA,OACA,OACA,YACA,OACA,YACA,OACA,WACA,SACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,WACA,SACA,YACA,WACA,SACA,UACA,YACA,QACA,OACA,YACA,SACA,WACA,QACA,UACA,WACA,SACA,QACA,SACA,SACA,QACA,QACA,YACA,QACA,WACA,SACA,WACA,YACA,WACA,UACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,WACA,OACA,WACA,UACA,SACA,YACA,YACA,YACA,QACA,WACA,SACA,WACA,YACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,SACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,SACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,QACA,WACA,UACA,UACA,SACA,SACA,OACA,WACA,YACA,WACA,SACA,YACA,QACA,WACA,QACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,QACA,SACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,SACA,QACA,SACA,QACA,UACA,SACA,UACA,UACA,OACA,YACA,YACA,WACA,YACA,SACA,UACA,YACA,WACA,SACA,SACA,SACA,WACA,YACA,YACA,UACA,UACA,QACA,WACA,SACA,SACA,WACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,WACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,QACA,UACA,WACA,UACA,UACA,YACA,WACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,OACA,WACA,SACA,YACA,QACA,OACA,SACA,UACA,YACA,WACA,YACA,WACA,WACA,YACA,YACA,MACA,WACA,YACA,WACA,OACA,SACA,OACA,WACA,QACA,SACA,SACA,UACA,SACA,QACA,UACA,SACA,YACA,QACA,QACA,SACA,SACA,UACA,UACA,UACA,SACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,SACA,WACA,WACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,WACA,OACA,YACA,UACA,OACA,UACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,QACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,WACA,SACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,QACA,SACA,SACA,OACA,WACA,WACA,QACA,QACA,QACA,QACA,OACA,SACA,YACA,SACA,QACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,QACA,QACA,SACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,UACA,QACA,OACA,YACA,SACA,SACA,OACA,SACA,WACA,SACA,OACA,OACA,QACA,OACA,OACA,WACA,YACA,YACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,YACA,QACA,UACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,SACA,QACA,OACA,UACA,QACA,QACA,QACA,UACA,WACA,YACA,WACA,WACA,SACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,QACA,QACA,QACA,YACA,UACA,WACA,UACA,UACA,UACA,QACA,QACA,WACA,SACA,OACA,MACA,SACA,YACA,UACA,WACA,UACA,WACA,WACA,QACA,OACA,OACA,SACA,SACA,MACA,OACA,SACA,WACA,OACA,UACA,WACA,WACA,MACA,OACA,SACA,YACA,YACA,UACA,UACA,WACA,SACA,SACA,OACA,OACA,UACA,OACA,QACA,QACA,QACA,UACA,UACA,WACA,UACA,YACA,UACA,WACA,UACA,WACA,WACA,OACA,QACA,UACA,UACA,UACA,SACA,UACA,QACA,UACA,UACA,WACA,WACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,SACA,UACA,QACA,UACA,SACA,WACA,SACA,YACA,YACA,SACA,WACA,UACA,QACA,SACA,SACA,OACA,OACA,QACA,QACA,QACA,YACA,OACA,SACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,YACA,OACA,WACA,SACA,OACA,UACA,SACA,WACA,YACA,WACA,MACA,YACA,UACA,YACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,UACA,SACA,QACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,SACA,MACA,WACA,WACA,YACA,QACA,UACA,SACA,MACA,UACA,WACA,MACA,YACA,QACA,YACA,WACA,YACA,QACA,UACA,QACA,QACA,UACA,SACA,UACA,YACA,YACA,QACA,WACA,UACA,SACA,SACA,WACA,SACA,YACA,QACA,UACA,YACA,WACA,OACA,QACA,WACA,UACA,WACA,UACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,UACA,UACA,YACA,QACA,MACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,SACA,SACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,YACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,UACA,SACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,SACA,SACA,SACA,UACA,UACA,SACA,SACA,YACA,WACA,YACA,WACA,SACA,UACA,SACA,SACA,YACA,SACA,SACA,WACA,UACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,WACA,QACA,OACA,SACA,OACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,WACA,UACA,QACA,SACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,WACA,SACA,SACA,UACA,YACA,SACA,SACA,UACA,QACA,QACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,SACA,WACA,WACA,YACA,YACA,WACA,UACA,UACA,WACA,UACA,QACA,YACA,SACA,YACA,WACA,UACA,QACA,WACA,YACA,YACA,UACA,UACA,OACA,YACA,YACA,YACA,WACA,WACA,QACA,WACA,UACA,OACA,QACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,SACA,UACA,SACA,QACA,WACA,OACA,SACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,YACA,YACA,YACA,QACA,SACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,YACA,SACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,SACA,WACA,SACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,OACA,SACA,UACA,SACA,OACA,QACA,UACA,OACA,WACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,UACA,OACA,UACA,YACA,YACA,UACA,UACA,WACA,SACA,UACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,MACA,QACA,UACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,WACA,WACA,WACA,WACA,QACA,QACA,UACA,SACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,SACA,SACA,WACA,UACA,YACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,WACA,YACA,UACA,UACA,QACA,WACA,QACA,UACA,SACA,WACA,SACA,SACA,SACA,UACA,OACA,SACA,QACA,WACA,SACA,WACA,WACA,UACA,UACA,YACA,QACA,WACA,QACA,UACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,MACA,OACA,UACA,UACA,WACA,WACA,YACA,YACA,QACA,UACA,QACA,QACA,YACA,UACA,WACA,WACA,OACA,UACA,YACA,YACA,YACA,WACA,WACA,SACA,QACA,UACA,WACA,SACA,WACA,UACA,YACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,OACA,UACA,SACA,QACA,QACA,SACA,SACA,QACA,QACA,OACA,QACA,QACA,QACA,WACA,OACA,SACA,UACA,QACA,WACA,UACA,UACA,QACA,SACA,UACA,WACA,OACA,MACA,MACA,OACA,QACA,OACA,WACA,SACA,WACA,SACA,WACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,YACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,MACA,QACA,WACA,WACA,UACA,YACA,WACA,YACA,WACA,QACA,QACA,UACA,UACA,YACA,SACA,UACA,QACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,SACA,YACA,WACA,YACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,WACA,SACA,YACA,WACA,QACA,UACA,UACA,WACA,SACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,QACA,SACA,UACA,QACA,UACA,YACA,SACA,OACA,QACA,YACA,UACA,WACA,WACA,YACA,SACA,QACA,QACA,SACA,WACA,YACA,WACA,QACA,YACA,SACA,MACA,QACA,MACA,YACA,UACA,QACA,OACA,YACA,WACA,UACA,SACA,SACA,UACA,YACA,SACA,YACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,MACA,SACA,UACA,SACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,MACA,WACA,YACA,SACA,UACA,WACA,QACA,OACA,OACA,SACA,OACA,QACA,OACA,SACA,MACA,SACA,UACA,WACA,WACA,QACA,UACA,YACA,SACA,QACA,YACA,WACA,YACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,YACA,WACA,YACA,UACA,YACA,UACA,UACA,UACA,QACA,QACA,YACA,SACA,UACA,YACA,QACA,OACA,WACA,YACA,WACA,SACA,WACA,SACA,SACA,SACA,QACA,UACA,SACA,WACA,QACA,QACA,SACA,QACA,UACA,UACA,UACA,QACA,YACA,SACA,YACA,UACA,SACA,WACA,YACA,QACA,UACA,QACA,WACA,UACA,WACA,UACA,SACA,UACA,UACA,UACA,UACA,SACA,UACA,SACA,UACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,QACA,QACA,QACA,UACA,WACA,UACA,OACA,SACA,YACA,UACA,SACA,OACA,OACA,WACA,OACA,UACA,QACA,WACA,WACA,YACA,OACA,UACA,QACA,UACA,OACA,OACA,OACA,QACA,WACA,YACA,QACA,SACA,OACA,SACA,OACA,SACA,WACA,OACA,UACA,SACA,SACA,SACA,OACA,OACA,OACA,WACA,YACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,UACA,WACA,QACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,SACA,UACA,QACA,WACA,QACA,QACA,UACA,YACA,QACA,QACA,YACA,UACA,UACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,QACA,OACA,UACA,WACA,WACA,YACA,SACA,QACA,UACA,WACA,OACA,YACA,OACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,OACA,UACA,OACA,WACA,SACA,QACA,QACA,SACA,WACA,SACA,QACA,SACA,UACA,QACA,QACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,UACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,OACA,WACA,QACA,OACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,OACA,OACA,QACA,QACA,UACA,OACA,SACA,MACA,UACA,WACA,YACA,WACA,UACA,WACA,SACA,SACA,UACA,UACA,MACA,UACA,QACA,OACA,UACA,OACA,SACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,YACA,SACA,QACA,YACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,WACA,QACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,UACA,QACA,UACA,OACA,SACA,QACA,UACA,YACA,QACA,SACA,YACA,WACA,UACA,WACA,YACA,OACA,UACA,SACA,QACA,QACA,SACA,WACA,SACA,WACA,SACA,OACA,WACA,WACA,YACA,YACA,YACA,SACA,SACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,UACA,WACA,OACA,OACA,QACA,UACA,YACA,UACA,QACA,UACA,YACA,QACA,SACA,SACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,QACA,WACA,QACA,SACA,SACA,YACA,QACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,YACA,WACA,WACA,UACA,WACA,SACA,SACA,WACA,OACA,MACA,OACA,OACA,OACA,QACA,SACA,WACA,SACA,QACA,YACA,WACA,UACA,SACA,YACA,WACA,YACA,WACA,WACA,SACA,SACA,YACA,YACA,SACA,WACA,SACA,OACA,SACA,UACA,WACA,WACA,SACA,SACA,SACA,UACA,SACA,YACA,UACA,QACA,OACA,UACA,OACA,SACA,YACA,MACA,SACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,MACA,UACA,QACA,OACA,OACA,MACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,QACA,OACA,QACA,WACA,SACA,SACA,YACA,WACA,WACA,QACA,YACA,WACA,UACA,WACA,UACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,SACA,YACA,UACA,WACA,YACA,YACA,WACA,SACA,UACA,YACA,YACA,WACA,UACA,YACA,YACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,SACA,SACA,MACA,OACA,SACA,OACA,QACA,MACA,OACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,WACA,YACA,YACA,UACA,QACA,UACA,YACA,UACA,OACA,YACA,SACA,QACA,MACA,MACA,SACA,SACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,MACA,UACA,UACA,SACA,UACA,UACA,WACA,QACA,OACA,QACA,UACA,UACA,OACA,UACA,YACA,OACA,OACA,YACA,UACA,QACA,SACA,SACA,MACA,QACA,SACA,QACA,SACA,WACA,OACA,UACA,UACA,MACA,SACA,YACA,SACA,UACA,OACA,UACA,WACA,WACA,YACA,QACA,OACA,MACA,SACA,WACA,YACA,SACA,UACA,WACA,YACA,WACA,QACA,YACA,WACA,YACA,OACA,SACA,WACA,UACA,QACA,YACA,QACA,UACA,UACA,OACA,SACA,QACA,OACA,WACA,WACA,OACA,SACA,UACA,SACA,UACA,WACA,SACA,QACA,OACA,UACA,YACA,UACA,SACA,WACA,WACA,QACA,WACA,UACA,SACA,QACA,QACA,SACA,WACA,OACA,MACA,OACA,SACA,OACA,WACA,WACA,SACA,OACA,OACA,WACA,WACA,YACA,WACA,OACA,SACA,SACA,WACA,SACA,WACA,UACA,UACA,UACA,OACA,UACA,UACA,YACA,WACA,SACA,UACA,UACA,OACA,SACA,QACA,OACA,UACA,WACA,OACA,QACA,WACA,QACA,QACA,QACA,SACA,UACA,QACA,OACA,UACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,UACA,WACA,SACA,UACA,SACA,OACA,OACA,QACA,SACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,QACA,UACA,SACA,QACA,SACA,UACA,SACA,OACA,QACA,OACA,OACA,QACA,OACA,QACA,OACA,SACA,WACA,UACA,SACA,WACA,SACA,UACA,UACA,SACA,WACA,SACA,WACA,SACA,WACA,OACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,OACA,UACA,SACA,YACA,UACA,QACA,OACA,SACA,OACA,OACA,UACA,SACA,UACA,YACA,WACA,SACA,UACA,QACA,WACA,SACA,WACA,YACA,YACA,SACA,UACA,YACA,UACA,UACA,WACA,MACA,OACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,SACA,QACA,QACA,OACA,OACA,UACA,YACA,QACA,QACA,UACA,WACA,OACA,QACA,WACA,WACA,SACA,SACA,WACA,UACA,OACA,OACA,MACA,UACA,UACA,SACA,OACA,OACA,WACA,YACA,SACA,SACA,SACA,UACA,QACA,SACA,QACA,YACA,UACA,SACA,SACA,YACA,YACA,QACA,UACA,YACA,WACA,YACA,YACA,SACA,WACA,UACA,SACA,YACA,WACA,YACA,UACA,UACA,SACA,QACA,WACA,WACA,YACA,YACA,OACA,QACA,OACA,YACA,OACA,SACA,WACA,SACA,YACA,UACA,YACA,WACA,QACA,YACA,SACA,QACA,YACA,WACA,WACA,SACA,WACA,WACA,QACA,OACA,UACA,YACA,WACA,UACA,SACA,UACA,WACA,QACA,YACA,WACA,YACA,YACA,YACA,UACA,YACA,WACA,WACA,SACA,WACA,UACA,YACA,WACA,WACA,QACA,YACA,SACA,YACA,OACA,OACA,SACA,UACA,YACA,UACA,WACA,UACA,WACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,YACA,UACA,UACA,UACA,YACA,WACA,YACA,SACA,UACA,UACA,YACA,QACA,UACA,SACA,UACA,QACA,WACA,SACA,SACA,SACA,OACA,MACA,WACA,YACA,UACA,UACA,WACA,QACA,QACA,YACA,YACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,YACA,SACA,UACA,SACA,QACA,YACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,UACA,WACA,SACA,UACA,UACA,UACA,YACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,OACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,WACA,WACA,WACA,QACA,WACA,WACA,UACA,QACA,SACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,QACA,SACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,YACA,WACA,QACA,WACA,OACA,YACA,WACA,WACA,UACA,MACA,YACA,SACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,YACA,YACA,YACA,WACA,MACA,SACA,WACA,UACA,YACA,WACA,WACA,WACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,OACA,WACA,YACA,SACA,WACA,YACA,SACA,YACA,QACA,QACA,YACA,WACA,UACA,WACA,UACA,WACA,QACA,YACA,YACA,QACA,QACA,UACA,OACA,QACA,SACA,QACA,SACA,OACA,OACA,MACA,MACA,WACA,QACA,OACA,SACA,UACA,WACA,WACA,YACA,YACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,WACA,UACA,YACA,SACA,QACA,YACA,QACA,YACA,WACA,SACA,UACA,YACA,WACA,QACA,QACA,SACA,YACA,QACA,UACA,UACA,SACA,YACA,QACA,UACA,SACA,WACA,OACA,YACA,YACA,SACA,OACA,SACA,SACA,SACA,UACA,YACA,UACA,OACA,QACA,MACA,OACA,OACA,SACA,QACA,YACA,OACA,SACA,SACA,UACA,QACA,SACA,UACA,YACA,WACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,WACA,SACA,WACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,UACA,OACA,SACA,OACA,UACA,QACA,OACA,MACA,YACA,SACA,WACA,WACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,QACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,QACA,UACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,SACA,WACA,WACA,YACA,QACA,SACA,QACA,MACA,MACA,QACA,MACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,YACA,OACA,UACA,YACA,YACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,SACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,SACA,QACA,SACA,UACA,SACA,UACA,UACA,OACA,MACA,OACA,WACA,OACA,MACA,QACA,WACA,QACA,OACA,UACA,WACA,OACA,WACA,UACA,WACA,UACA,QACA,SACA,WACA,OACA,WACA,QACA,UACA,YACA,UACA,OACA,SACA,OACA,OACA,OACA,OACA,UACA,OACA,OACA,WACA,UACA,YACA,YACA,YACA,WACA,QACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,MACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,QACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,YACA,UACA,UACA,SACA,UACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,OACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,UACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,MACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,SACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,QACA,SACA,UACA,SACA,YACA,OACA,WACA,YACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,QACA,WACA,OACA,YACA,QACA,UACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,SACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,YACA,SACA,SACA,QACA,UACA,UACA,SACA,WACA,SACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,WACA,QACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,YACA,SACA,WACA,YACA,OACA,WACA,UACA,QACA,YACA,UACA,SACA,YACA,YACA,SACA,WACA,QACA,YACA,WACA,SACA,SACA,UACA,UACA,WACA,SACA,QACA,QACA,SACA,UACA,WACA,UACA,SACA,SACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,UACA,SACA,OACA,SACA,WACA,UACA,SACA,UACA,UACA,YACA,WACA,UACA,YACA,QACA,SACA,UACA,WACA,YACA,MACA,WACA,UACA,QACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,QACA,OACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,YACA,SACA,YACA,QACA,SACA,WACA,QACA,YACA,SACA,YACA,YACA,QACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,UACA,UACA,WACA,QACA,UACA,QACA,SACA,UACA,UACA,SACA,WACA,UACA,WACA,WACA,UACA,WACA,YACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,UACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,YACA,WACA,QACA,WACA,QACA,SACA,YACA,SACA,WACA,YACA,UACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,UACA,WACA,SACA,OACA,YACA,UACA,QACA,MACA,OACA,OACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,SACA,QACA,SACA,WACA,QACA,OACA,YACA,UACA,YACA,UACA,SACA,OACA,OACA,UACA,OACA,SACA,SACA,QACA,WACA,WACA,UACA,WACA,YACA,OACA,SACA,WACA,WACA,SACA,YACA,WACA,UACA,SACA,WACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,UACA,WACA,SACA,SACA,UACA,YACA,UACA,UACA,QACA,SACA,WACA,QACA,UACA,OACA,WACA,YACA,UACA,QACA,SACA,MACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,YACA,UACA,SACA,WACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,SACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,UACA,SACA,YACA,YACA,YACA,SACA,UACA,YACA,UACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,UACA,SACA,UACA,UACA,YACA,UACA,UACA,WACA,SACA,YACA,WACA,QACA,SACA,YACA,UACA,UACA,SACA,QACA,WACA,QACA,QACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,YACA,WACA,WACA,YACA,QACA,UACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,QACA,QACA,YACA,SACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,UACA,YACA,WACA,SACA,YACA,YACA,WACA,WACA,QACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,QACA,YACA,QACA,UACA,MACA,UACA,SACA,YACA,SACA,SACA,MACA,OACA,YACA,OACA,UACA,QACA,YACA,OACA,SACA,SACA,QACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,SACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,QACA,UACA,WACA,SACA,SACA,UACA,SACA,SACA,WACA,YACA,OACA,QACA,YACA,WACA,UACA,WACA,WACA,YACA,SACA,YACA,UACA,WACA,UACA,SACA,QACA,UACA,OACA,SACA,WACA,UACA,YACA,SACA,QACA,WACA,QACA,WACA,QACA,UACA,YACA,YACA,UACA,UACA,QACA,UACA,UACA,SACA,YACA,YACA,WACA,UACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,QACA,QACA,QACA,UACA,YACA,QACA,OACA,SACA,YACA,WACA,YACA,QACA,QACA,OACA,SACA,SACA,OACA,SACA,QACA,SACA,WACA,YACA,WACA,YACA,WACA,QACA,SACA,SACA,OACA,OACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,UACA,SACA,OACA,SACA,QACA,SACA,WACA,OACA,SACA,QACA,YACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,QACA,OACA,SACA,SACA,OACA,UACA,SACA,QACA,SACA,SACA,UACA,YACA,WACA,QACA,YACA,WACA,WACA,UACA,WACA,OACA,YACA,WACA,UACA,YACA,YACA,YACA,WACA,SACA,WACA,WACA,WACA,UACA,YACA,SACA,QACA,UACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,SACA,SACA,YACA,SACA,SACA,SACA,SACA,YACA,YACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,UACA,WACA,WACA,WACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,YACA,UACA,UACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,UACA,SACA,WACA,YACA,SACA,SACA,UACA,UACA,SACA,SACA,SACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,UACA,WACA,WACA,QACA,QACA,UACA,UACA,YACA,WACA,WACA,WACA,UACA,QACA,UACA,YACA,UACA,SACA,SACA,SACA,WACA,SACA,YACA,OACA,SACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,QACA,UACA,YACA,SACA,UACA,SACA,YACA,UACA,UACA,UACA,WACA,SACA,WACA,YACA,YACA,WACA,YACA,YACA,UACA,UACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,WACA,UACA,SACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,UACA,SACA,UACA,QACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,YACA,OACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,UACA,WACA,SACA,SACA,WACA,YACA,YACA,SACA,WACA,YACA,SACA,YACA,YACA,UACA,UACA,UACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,SACA,UACA,UACA,WACA,QACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,SACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,UACA,UACA,WACA,SACA,OACA,SACA,UACA,OACA,UACA,QACA,QACA,UACA,SACA,OACA,OACA,QACA,UACA,OACA,UACA,WACA,WACA,UACA,SACA,WACA,UACA,OACA,SACA,OACA,UACA,UACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,UACA,QACA,UACA,OACA,QACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,QACA,QACA,QACA,OACA,OACA,SACA,SACA,OACA,SACA,UACA,UACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,UACA,QACA,SACA,QACA,SACA,SACA,UACA,SACA,UACA,OACA,SACA,SACA,MACA,SACA,OACA,SACA,WACA,UACA,QACA,YACA,UACA,SACA,UACA,QACA,OACA,SACA,UACA,QACA,OACA,OACA,OACA,MACA,UACA,WACA,YACA,SACA,YACA,SACA,YACA,UACA,WACA,QACA,UACA,SACA,YACA,YACA,SACA,WACA,UACA,OACA,OACA,UACA,QACA,OACA,QACA,OACA,QACA,SACA,WACA,SACA,SACA,QACA,SACA,QACA,OACA,WACA,SACA,UACA,YACA,YACA,OACA,SACA,WACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,UACA,SACA,WACA,UACA,UACA,YACA,UACA,YACA,YACA,WACA,QACA,WACA,YACA,OACA,QACA,UACA,YACA,QACA,UACA,YACA,UACA,OACA,YACA,QACA,UACA,WACA,QACA,YACA,YACA,UACA,WACA,WACA,YACA,QACA,QACA,SACA,UACA,QACA,UACA,SACA,QACA,YACA,MACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,WACA,OACA,UACA,UACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,QACA,UACA,YACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,QACA,QACA,WACA,QACA,QACA,UACA,QACA,SACA,YACA,YACA,SACA,YACA,SACA,UACA,QACA,WACA,SACA,YACA,UACA,WACA,WACA,SACA,WACA,WACA,WACA,YACA,YACA,QACA,UACA,UACA,SACA,WACA,SACA,WACA,YACA,SACA,SACA,UACA,YACA,WACA,WACA,UACA,UACA,WACA,QACA,QACA,WACA,YACA,SACA,UACA,WACA,YACA,YACA,SACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,QACA,SACA,WACA,WACA,WACA,SACA,WACA,UACA,UACA,UACA,SACA,WACA,YACA,YACA,WACA,OACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,UACA,OACA,SACA,WACA,YACA,YACA,YACA,YACA,WACA,QACA,YACA,SACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,UACA,WACA,QACA,UACA,UACA,SACA,WACA,UACA,UACA,SACA,WACA,QACA,YACA,YACA,UACA,UACA,WACA,SACA,QACA,SACA,UACA,YACA,UACA,SACA,QACA,QACA,WACA,UACA,YACA,UACA,QACA,QACA,UACA,UACA,QACA,UACA,WACA,QACA,SACA,QACA,UACA,QACA,YACA,UACA,UACA,UACA,YACA,QACA,SACA,OACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,SACA,SACA,UACA,WACA,YACA,SACA,UACA,SACA,UACA,QACA,UACA,YACA,UACA,QACA,OACA,QACA,YACA,QACA,QACA,WACA,UACA,WACA,WACA,QACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,SACA,QACA,QACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,QACA,UACA,YACA,YACA,WACA,QACA,SACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,SACA,SACA,UACA,WACA,YACA,SACA,QACA,SACA,WACA,UACA,UACA,YACA,OACA,QACA,OACA,MACA,UACA,WACA,UACA,SACA,SACA,SACA,OACA,UACA,WACA,WACA,SACA,SACA,UACA,OACA,YACA,QACA,OACA,OACA,SACA,YACA,SACA,YACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,UACA,MACA,QACA,SACA,SACA,SACA,UACA,WACA,YACA,UACA,UACA,QACA,UACA,WACA,YACA,UACA,UACA,OACA,SACA,SACA,WACA,SACA,UACA,YACA,WACA,WACA,UACA,SACA,SACA,SACA,OACA,QACA,QACA,QACA,SACA,UACA,UACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,SACA,YACA,UACA,WACA,WACA,QACA,UACA,WACA,WACA,UACA,QACA,YACA,UACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,OACA,UACA,QACA,WACA,YACA,UACA,WACA,QACA,UACA,OACA,OACA,QACA,QACA,QACA,SACA,QACA,YACA,SACA,SACA,UACA,QACA,SACA,YACA,UACA,WACA,YACA,WACA,WACA,QACA,WACA,YACA,SACA,OACA,OACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,OACA,YACA,UACA,SACA,OACA,OACA,QACA,QACA,MACA,QACA,UACA,YACA,UACA,WACA,UACA,QACA,WACA,QACA,YACA,QACA,QACA,QACA,UACA,QACA,OACA,SACA,YACA,YACA,UACA,QACA,UACA,SACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,QACA,UACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,WACA,QACA,QACA,UACA,WACA,SACA,UACA,SACA,QACA,UACA,UACA,QACA,QACA,WACA,YACA,YACA,UACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,QACA,OACA,QACA,UACA,SACA,WACA,QACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,YACA,SACA,QACA,YACA,UACA,WACA,YACA,UACA,WACA,QACA,OACA,SACA,YACA,SACA,SACA,QACA,SACA,QACA,QACA,UACA,SACA,UACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,YACA,UACA,YACA,WACA,YACA,UACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,UACA,QACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,UACA,UACA,WACA,SACA,UACA,SACA,QACA,SACA,SACA,SACA,QACA,QACA,QACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,QACA,WACA,WACA,SACA,SACA,SACA,YACA,UACA,YACA,YACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,QACA,SACA,WACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,QACA,WACA,UACA,YACA,UACA,WACA,SACA,WACA,UACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,QACA,YACA,WACA,WACA,YACA,QACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,OACA,SACA,UACA,OACA,SACA,UACA,YACA,YACA,WACA,YACA,UACA,OACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,QACA,YACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,SACA,WACA,SACA,UACA,YACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,YACA,YACA,YACA,UACA,QACA,QACA,SACA,QACA,QACA,YACA,YACA,WACA,UACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,QACA,QACA,QACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,QACA,SACA,SACA,SACA,WACA,YACA,QACA,SACA,UACA,SACA,WACA,SACA,SACA,SACA,SACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,WACA,YACA,SACA,YACA,UACA,WACA,QACA,SACA,QACA,UACA,UACA,UACA,WACA,SACA,QACA,UACA,UACA,SACA,QACA,UACA,WACA,SACA,UACA,YACA,QACA,QACA,UACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,YACA,UACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,YACA,YACA,YACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,UACA,WACA,SACA,WACA,WACA,UACA,SACA,SACA,YACA,UACA,YACA,OACA,UACA,SACA,SACA,OACA,WACA,YACA,UACA,SACA,YACA,WACA,QACA,UACA,QACA,WACA,WACA,WACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,WACA,YACA,SACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,SACA,WACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,SACA,UACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,YACA,WACA,SACA,WACA,UACA,YACA,WACA,QACA,UACA,UACA,WACA,YACA,YACA,OACA,YACA,UACA,YACA,OACA,WACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,WACA,WACA,WACA,UACA,WACA,QACA,QACA,SACA,SACA,UACA,UACA,QACA,SACA,QACA,QACA,QACA,WACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,QACA,SACA,UACA,UACA,QACA,WACA,SACA,SACA,YACA,UACA,YACA,UACA,SACA,WACA,QACA,OACA,UACA,WACA,UACA,UACA,WACA,UACA,YACA,MACA,UACA,OACA,SACA,SACA,WACA,OACA,QACA,SACA,WACA,QACA,SACA,OACA,SACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,UACA,UACA,OACA,YACA,SACA,SACA,UACA,QACA,SACA,SACA,WACA,OACA,SACA,QACA,YACA,UACA,QACA,WACA,SACA,WACA,SACA,QACA,SACA,QACA,OACA,OACA,UACA,YACA,OACA,QACA,QACA,WACA,WACA,UACA,UACA,YACA,QACA,SACA,WACA,UACA,UACA,YACA,WACA,WACA,QACA,UACA,QACA,QACA,SACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,WACA,SACA,YACA,SACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,WACA,WACA,OACA,YACA,UACA,QACA,QACA,QACA,SACA,WACA,UACA,OACA,QACA,UACA,UACA,YACA,YACA,WACA,UACA,OACA,SACA,OACA,OACA,QACA,SACA,UACA,YACA,UACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,OACA,UACA,OACA,SACA,SACA,SACA,UACA,YACA,SACA,SACA,SACA,QACA,UACA,QACA,WACA,UACA,QACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,UACA,SACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,WACA,WACA,OACA,YACA,WACA,YACA,UACA,QACA,SACA,OACA,UACA,UACA,YACA,SACA,SACA,QACA,WACA,SACA,QACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,WACA,WACA,UACA,YACA,SACA,WACA,WACA,UACA,QACA,SACA,YACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,YACA,SACA,WACA,QACA,SACA,QACA,QACA,UACA,QACA,SACA,YACA,UACA,WACA,WACA,YACA,QACA,MACA,QACA,WACA,UACA,UACA,UACA,MACA,UACA,QACA,SACA,WACA,QACA,SACA,UACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,OACA,MACA,QACA,QACA,QACA,WACA,SACA,YACA,SACA,QACA,QACA,UACA,YACA,OACA,WACA,QACA,QACA,QACA,YACA,UACA,UACA,WACA,SACA,SACA,UACA,SACA,QACA,OACA,QACA,WACA,YACA,QACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,UACA,YACA,WACA,SACA,SACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,UACA,WACA,WACA,YACA,UACA,YACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,YACA,UACA,YACA,WACA,QACA,YACA,UACA,YACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,SACA,YACA,UACA,YACA,WACA,UACA,WACA,UACA,SACA,WACA,SACA,YACA,UACA,WACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,YACA,YACA,YACA,SACA,WACA,UACA,YACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,QACA,YACA,YACA,YACA,YACA,YACA,QACA,WACA,YACA,SACA,WACA,OACA,YACA,WACA,WACA,UACA,SACA,YACA,YACA,UACA,UACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,UACA,WACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,SACA,YACA,WACA,UACA,WACA,UACA,YACA,YACA,SACA,SACA,YACA,YACA,YACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,WACA,WACA,SACA,SACA,WACA,UACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,SACA,WACA,YACA,SACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,UACA,UACA,YACA,WACA,UACA,WACA,WACA,SACA,QACA,QACA,UACA,WACA,WACA,YACA,SACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,UACA,WACA,UACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,YACA,UACA,QACA,YACA,SACA,WACA,YACA,SACA,UACA,YACA,YACA,YACA,SACA,YACA,WACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,WACA,YACA,SACA,UACA,UACA,WACA,SACA,SACA,SACA,WACA,YACA,SACA,OACA,QACA,UACA,WACA,UACA,SACA,SACA,UACA,SACA,UACA,WACA,UACA,UACA,WACA,WACA,UACA,SACA,UACA,SACA,WACA,SACA,SACA,UACA,QACA,SACA,WACA,UACA,SACA,SACA,YACA,UACA,SACA,QACA,UACA,OACA,YACA,OACA,QACA,QACA,UACA,UACA,UACA,SACA,SACA,QACA,UACA,SACA,SACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,QACA,SACA,SACA,YACA,QACA,UACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,OACA,QACA,SACA,YACA,SACA,WACA,SACA,WACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,QACA,QACA,YACA,WACA,UACA,UACA,SACA,QACA,UACA,SACA,YACA,WACA,UACA,OACA,SACA,OACA,UACA,OACA,WACA,YACA,SACA,QACA,OACA,WACA,UACA,QACA,WACA,SACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,UACA,WACA,QACA,OACA,YACA,UACA,WACA,UACA,UACA,SACA,WACA,UACA,QACA,QACA,WACA,WACA,UACA,WACA,YACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,QACA,UACA,OACA,WACA,SACA,UACA,UACA,QACA,SACA,UACA,QACA,QACA,SACA,YACA,MACA,QACA,SACA,QACA,QACA,QACA,SACA,QACA,OACA,SACA,OACA,UACA,SACA,SACA,QACA,OACA,UACA,SACA,UACA,SACA,WACA,YACA,YACA,WACA,YACA,UACA,SACA,SACA,YACA,UACA,UACA,WACA,YACA,UACA,OACA,UACA,QACA,QACA,WACA,SACA,OACA,WACA,SACA,OACA,QACA,QACA,WACA,QACA,YACA,SACA,QACA,WACA,UACA,QACA,WACA,UACA,WACA,SACA,MACA,OACA,SACA,QACA,SACA,QACA,QACA,YACA,UACA,OACA,OACA,YACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,SACA,YACA,UACA,SACA,YACA,OACA,OACA,QACA,UACA,OACA,OACA,UACA,SACA,WACA,SACA,OACA,QACA,WACA,SACA,OACA,SACA,OACA,OACA,WACA,QACA,UACA,SACA,SACA,WACA,SACA,MACA,OACA,YACA,YACA,YACA,YACA,YACA,UACA,OACA,OACA,SACA,OACA,QACA,OACA,OACA,UACA,UACA,YACA,QACA,YACA,YACA,QACA,QACA,QACA,MACA,UACA,QACA,SACA,WACA,UACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,UACA,UACA,YACA,UACA,WACA,UACA,YACA,UACA,OACA,QACA,QACA,MACA,UACA,UACA,OACA,OACA,OACA,WACA,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F,0B,8ECXtB,aAAS,EAAAnkD,eAAA,EAAAA,eACT,YAAS,EAAA/iC,SAAA,EAAAA,SACT,aAAS,EAAAzP,WAAA,EAAAA,WACT,aAAS,EAAAc,UAAA,EAAAA,UACT,aAAS,EAAA6b,aAAA,EAAAA,aACT,aAAS,EAAAlgB,aAAA,EAAAA,aACT,aAAS,EAAA4D,UAAA,EAAAA,UACT,YAAS,EAAAuB,eAAA,EAAAA,eACT,cAAS,EAAAmpE,KAAA,EAAAA,M,8ECRT,SAAY6rB,GACR,2CACA,2CACA,yCACA,2CACA,iCAEA,6BACA,iCACA,2CACA,2CACA,2CACA,oCAEA,wBAEA,wCACA,wCACA,wCAlBJ,CAAY,EAAAA,mBAAA,EAAAA,iBAAgB,M,0GCA5B,WAGA,OACA,OACA,OAGA,EAAQ,K,qBAKJ,EAAAC,iBAGJ,EAAAC,kBAAyBC,gBAAgB,EAAD,UAAY,CAAEC,qBAAqB,K,iGChB3E,OAEA,WACA,QAEA,SAEA,SAEA,SAEA,GADA,KACA,OACA,QACA,SAEA,SAEA,UACA,QAEA,SACA,SAEA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,SAGA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SACA,UACA,UACA,UACA,UAIA,UACA,UAGA,UACA,UAGA,UAGA,UACA,UAGA,UAIA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,SACA,UAEA,SACA,SACA,SACA,WACA,WACA,UACA,SACA,UACA,SACA,SACA,UAEA,UACA,SACA,WACA,UAEA,QAIA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,W,yBAEA,GAAAC,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAY,SAC/B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAY,SAC/B,GAAAA,mBAAmB,WAAY,SAC/B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAU,MAC7B,GAAAA,mBAAmB,WAAY,SAC/B,GAAAA,mBAAmB,WAAY,SAE/B,gC,wCAoNaC,EAAS,WAFN,EAAAC,gB,8DAEHD,IAAS,UAHP,CAAC,GAAAE,UAAS,SAhNZ,CACL,EAAAC,cACA,EAAAC,wBACA,EAAAC,YACA,EAAAC,iBACA,EAAAC,eACA,EAAAC,mBAAmBC,QAAQ,CACvBC,aAAc,CACVC,kBAAkB,KAG1B,EAAAC,cAAcH,UACd,EAAAI,qBACA,EAAAC,mB,EAdR,GAoNa,EAAAd,c,iEAAAA,GAAS,eAnMd,GAAAn+F,mBACA,EAAAwlD,yBACA,GAAA6e,gBACA,EAAAxe,4BACA,GAAA0Q,iBACA,EAAAxO,qBACA,GAAApT,mBACA,GAAAjgB,iBACA,GAAAygB,uBACA,EAAAykB,qBACA,GAAA3jB,uBACA,GAAAv2C,mBACA,GAAAuxC,gBACA,EAAAmtD,aACA,GAAAtgD,qBACA,GAAArtC,mBACA,EAAAwQ,gBACA,GAAAi+E,mBACA,GAAAC,gBACA,GAAAhzB,sBACA,GAAA7rB,qBACA,GAAAhB,oBACA,GAAAc,kBACA,GAAAT,qBACA,GAAAK,mBACA,GAAA/+C,iBACA,GAAAgmE,qBACA,GAAAgC,mBACA,GAAAh7B,wBACA,EAAA8qB,oBACA,GAAAh+B,iBACA,GAAAyjB,qBACA,GAAAyD,kBACA,GAAAmnB,4BACA,GAAA5D,6BACA,GAAAE,uBACA,EAAAlQ,4BACA,GAAA2U,qBACA,EAAA3Q,yBACA,GAAA0X,gCACA,GAAAnB,oCACA,GAAA0C,yBACA,GAAAlB,gCACA,GAAAa,iCACA,GAAA7B,6BACA,GAAAX,0BACA,GAAAz3B,gBACA,GAAAS,gCACA,GAAAolB,qBACA,GAAA6P,uBACA,EAAA9hC,gBACA,EAAAwX,wBACA,GAAA3a,mBACA,EAAAkd,cACA,GAAAjnD,SACA,GAAAma,cACA,GAAAkjC,gBACA,GAAAY,iCACA,GAAA9sC,uBACA,GAAAo7D,iBACA,EAAAjlB,cACA,EAAAS,eACA,EAAA/wC,eACA,EAAA+1B,gBACA,GAAAs/B,iBACA,mBACA,oBACA,GAAA1U,6BACA,GAAA7vB,2BACA,GAAA8xB,kCACA,wBACA,oBACA,6BACA,wBACA,wBACA,uBACA,kBACA,mBACA,mCACA,mBACA,oCACA,wBACA,sBACA,kBACA,uBACA,kBACA,kBACA,sBACA,oBACA,kCACA,qBACA,kBACA,2BACA,uBACA,uBACA,sBACA,GAAAjtB,uBACA,EAAAqZ,4BACA,oCACA,kBACA,gCACA,GAAA6nB,2BACA,GAAAJ,kCACA,EAAA5gD,0BACA,GAAAzM,iBACA,GAAA0sD,iBACA,GAAArF,iBACA,GAAAn1B,oBACA,EAAA4V,uBACA,EAAAG,0BACA,EAAAY,kBACA,GAAA5K,+BACA,GAAAkiD,kBACA,GAA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","file":"app/main.1ce65c29f5be69fbdfec.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([744,2]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export abstract class I18nService {\n locale: string;\n supportedTranslationLocales: string[];\n translationLocale: string;\n collator: Intl.Collator;\n localeNames: Map;\n t: (id: string, p1?: string, p2?: string, p3?: string) => string;\n translate: (id: string, p1?: string, p2?: string, p3?: string) => string;\n}\n","import { DeviceType } from '../enums/deviceType';\n\nexport abstract class PlatformUtilsService {\n identityClientId: string;\n getDevice: () => DeviceType;\n getDeviceString: () => string;\n isFirefox: () => boolean;\n isChrome: () => boolean;\n isEdge: () => boolean;\n isOpera: () => boolean;\n isVivaldi: () => boolean;\n isSafari: () => boolean;\n isIE: () => boolean;\n isMacAppStore: () => boolean;\n analyticsId: () => string;\n isViewOpen: () => Promise;\n /**\n * @deprecated This only ever returns null. Pull from your platform's storage using ConstantsService.vaultTimeoutKey\n */\n lockTimeout: () => number;\n launchUri: (uri: string, options?: any) => void;\n saveFile: (win: Window, blobData: any, blobOptions: any, fileName: string) => void;\n getApplicationVersion: () => string;\n supportsU2f: (win: Window) => boolean;\n supportsDuo: () => boolean;\n showToast: (type: 'error' | 'success' | 'warning' | 'info', title: string, text: string | string[],\n options?: any) => void;\n showDialog: (body: string, title?: string, confirmText?: string, cancelText?: string,\n type?: string, bodyIsHtml?: boolean) => Promise;\n eventTrack: (action: string, label?: string, options?: any) => void;\n isDev: () => boolean;\n isSelfHost: () => boolean;\n copyToClipboard: (text: string, options?: any) => void;\n readFromClipboard: (options?: any) => Promise;\n supportsBiometric: () => Promise;\n authenticateBiometric: () => Promise;\n getDefaultSystemTheme: () => 'light' | 'dark';\n onDefaultSystemThemeChange: (callback: ((theme: 'light' | 'dark') => unknown)) => unknown;\n supportsSecureStorage: () => boolean;\n}\n","import { PolicyType } from '../enums/policyType';\n\nimport { EnvironmentUrls } from '../models/domain/environmentUrls';\n\nimport { BitPayInvoiceRequest } from '../models/request/bitPayInvoiceRequest';\nimport { CipherBulkDeleteRequest } from '../models/request/cipherBulkDeleteRequest';\nimport { CipherBulkMoveRequest } from '../models/request/cipherBulkMoveRequest';\nimport { CipherBulkRestoreRequest } from '../models/request/cipherBulkRestoreRequest';\nimport { CipherBulkShareRequest } from '../models/request/cipherBulkShareRequest';\nimport { CipherCollectionsRequest } from '../models/request/cipherCollectionsRequest';\nimport { CipherCreateRequest } from '../models/request/cipherCreateRequest';\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CipherShareRequest } from '../models/request/cipherShareRequest';\nimport { CollectionRequest } from '../models/request/collectionRequest';\nimport { DeleteRecoverRequest } from '../models/request/deleteRecoverRequest';\nimport { EmailRequest } from '../models/request/emailRequest';\nimport { EmailTokenRequest } from '../models/request/emailTokenRequest';\nimport { EmergencyAccessAcceptRequest } from '../models/request/emergencyAccessAcceptRequest';\nimport { EmergencyAccessConfirmRequest } from '../models/request/emergencyAccessConfirmRequest';\nimport { EmergencyAccessInviteRequest } from '../models/request/emergencyAccessInviteRequest';\nimport { EmergencyAccessPasswordRequest } from '../models/request/emergencyAccessPasswordRequest';\nimport { EmergencyAccessUpdateRequest } from '../models/request/emergencyAccessUpdateRequest';\nimport { EventRequest } from '../models/request/eventRequest';\nimport { FolderRequest } from '../models/request/folderRequest';\nimport { GroupRequest } from '../models/request/groupRequest';\nimport { IapCheckRequest } from '../models/request/iapCheckRequest';\nimport { ImportCiphersRequest } from '../models/request/importCiphersRequest';\nimport { ImportDirectoryRequest } from '../models/request/importDirectoryRequest';\nimport { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest';\nimport { KdfRequest } from '../models/request/kdfRequest';\nimport { KeysRequest } from '../models/request/keysRequest';\nimport { OrganizationCreateRequest } from '../models/request/organizationCreateRequest';\nimport { OrganizationTaxInfoUpdateRequest } from '../models/request/organizationTaxInfoUpdateRequest';\nimport { OrganizationUpdateRequest } from '../models/request/organizationUpdateRequest';\nimport { OrganizationUpgradeRequest } from '../models/request/organizationUpgradeRequest';\nimport { OrganizationUserAcceptRequest } from '../models/request/organizationUserAcceptRequest';\nimport { OrganizationUserConfirmRequest } from '../models/request/organizationUserConfirmRequest';\nimport { OrganizationUserInviteRequest } from '../models/request/organizationUserInviteRequest';\nimport { OrganizationUserUpdateGroupsRequest } from '../models/request/organizationUserUpdateGroupsRequest';\nimport { OrganizationUserUpdateRequest } from '../models/request/organizationUserUpdateRequest';\nimport { PasswordHintRequest } from '../models/request/passwordHintRequest';\nimport { PasswordRequest } from '../models/request/passwordRequest';\nimport { PasswordVerificationRequest } from '../models/request/passwordVerificationRequest';\nimport { PaymentRequest } from '../models/request/paymentRequest';\nimport { PolicyRequest } from '../models/request/policyRequest';\nimport { PreloginRequest } from '../models/request/preloginRequest';\nimport { RegisterRequest } from '../models/request/registerRequest';\nimport { SeatRequest } from '../models/request/seatRequest';\nimport { SelectionReadOnlyRequest } from '../models/request/selectionReadOnlyRequest';\nimport { SendAccessRequest } from '../models/request/sendAccessRequest';\nimport { SendRequest } from '../models/request/sendRequest';\nimport { SetPasswordRequest } from '../models/request/setPasswordRequest';\nimport { StorageRequest } from '../models/request/storageRequest';\nimport { TaxInfoUpdateRequest } from '../models/request/taxInfoUpdateRequest';\nimport { TokenRequest } from '../models/request/tokenRequest';\nimport { TwoFactorEmailRequest } from '../models/request/twoFactorEmailRequest';\nimport { TwoFactorProviderRequest } from '../models/request/twoFactorProviderRequest';\nimport { TwoFactorRecoveryRequest } from '../models/request/twoFactorRecoveryRequest';\nimport { UpdateDomainsRequest } from '../models/request/updateDomainsRequest';\nimport { UpdateKeyRequest } from '../models/request/updateKeyRequest';\nimport { UpdateProfileRequest } from '../models/request/updateProfileRequest';\nimport { UpdateTwoFactorAuthenticatorRequest } from '../models/request/updateTwoFactorAuthenticatorRequest';\nimport { UpdateTwoFactorDuoRequest } from '../models/request/updateTwoFactorDuoRequest';\nimport { UpdateTwoFactorEmailRequest } from '../models/request/updateTwoFactorEmailRequest';\nimport { UpdateTwoFactorU2fDeleteRequest } from '../models/request/updateTwoFactorU2fDeleteRequest';\nimport { UpdateTwoFactorU2fRequest } from '../models/request/updateTwoFactorU2fRequest';\nimport { UpdateTwoFactorYubioOtpRequest } from '../models/request/updateTwoFactorYubioOtpRequest';\nimport { VerifyBankRequest } from '../models/request/verifyBankRequest';\nimport { VerifyDeleteRecoverRequest } from '../models/request/verifyDeleteRecoverRequest';\nimport { VerifyEmailRequest } from '../models/request/verifyEmailRequest';\n\nimport { ApiKeyResponse } from '../models/response/apiKeyResponse';\nimport { BillingResponse } from '../models/response/billingResponse';\nimport { BreachAccountResponse } from '../models/response/breachAccountResponse';\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport {\n CollectionGroupDetailsResponse,\n CollectionResponse,\n} from '../models/response/collectionResponse';\nimport { DomainsResponse } from '../models/response/domainsResponse';\nimport {\n EmergencyAccessGranteeDetailsResponse,\n EmergencyAccessGrantorDetailsResponse,\n EmergencyAccessTakeoverResponse,\n EmergencyAccessViewResponse\n} from '../models/response/emergencyAccessResponse';\nimport { EventResponse } from '../models/response/eventResponse';\nimport { FolderResponse } from '../models/response/folderResponse';\nimport {\n GroupDetailsResponse,\n GroupResponse,\n} from '../models/response/groupResponse';\nimport { IdentityTokenResponse } from '../models/response/identityTokenResponse';\nimport { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse';\nimport { ListResponse } from '../models/response/listResponse';\nimport { OrganizationResponse } from '../models/response/organizationResponse';\nimport { OrganizationSubscriptionResponse } from '../models/response/organizationSubscriptionResponse';\nimport {\n OrganizationUserDetailsResponse,\n OrganizationUserUserDetailsResponse,\n} from '../models/response/organizationUserResponse';\nimport { PaymentResponse } from '../models/response/paymentResponse';\nimport { PlanResponse } from '../models/response/planResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { PreloginResponse } from '../models/response/preloginResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { SelectionReadOnlyResponse } from '../models/response/selectionReadOnlyResponse';\nimport { SendAccessResponse } from '../models/response/sendAccessResponse';\nimport { SendFileDownloadDataResponse } from '../models/response/sendFileDownloadDataResponse';\nimport { SendResponse } from '../models/response/sendResponse';\nimport { SubscriptionResponse } from '../models/response/subscriptionResponse';\nimport { SyncResponse } from '../models/response/syncResponse';\nimport { TaxInfoResponse } from '../models/response/taxInfoResponse';\nimport { TaxRateResponse } from '../models/response/taxRateResponse';\nimport { TwoFactorAuthenticatorResponse } from '../models/response/twoFactorAuthenticatorResponse';\nimport { TwoFactorDuoResponse } from '../models/response/twoFactorDuoResponse';\nimport { TwoFactorEmailResponse } from '../models/response/twoFactorEmailResponse';\nimport { TwoFactorProviderResponse } from '../models/response/twoFactorProviderResponse';\nimport { TwoFactorRecoverResponse } from '../models/response/twoFactorRescoverResponse';\nimport {\n ChallengeResponse,\n TwoFactorU2fResponse,\n} from '../models/response/twoFactorU2fResponse';\nimport { TwoFactorYubiKeyResponse } from '../models/response/twoFactorYubiKeyResponse';\nimport { UserKeyResponse } from '../models/response/userKeyResponse';\n\nimport { SendAccessView } from '../models/view/sendAccessView';\n\nexport abstract class ApiService {\n urlsSet: boolean;\n apiBaseUrl: string;\n identityBaseUrl: string;\n eventsBaseUrl: string;\n\n setUrls: (urls: EnvironmentUrls) => void;\n postIdentityToken: (request: TokenRequest) => Promise;\n refreshIdentityToken: () => Promise;\n\n getProfile: () => Promise;\n getUserBilling: () => Promise;\n getUserSubscription: () => Promise;\n getTaxInfo: () => Promise;\n putProfile: (request: UpdateProfileRequest) => Promise;\n putTaxInfo: (request: TaxInfoUpdateRequest) => Promise;\n postPrelogin: (request: PreloginRequest) => Promise;\n postEmailToken: (request: EmailTokenRequest) => Promise;\n postEmail: (request: EmailRequest) => Promise;\n postPassword: (request: PasswordRequest) => Promise;\n setPassword: (request: SetPasswordRequest) => Promise;\n postSecurityStamp: (request: PasswordVerificationRequest) => Promise;\n deleteAccount: (request: PasswordVerificationRequest) => Promise;\n getAccountRevisionDate: () => Promise;\n postPasswordHint: (request: PasswordHintRequest) => Promise;\n postRegister: (request: RegisterRequest) => Promise;\n postPremium: (data: FormData) => Promise;\n postIapCheck: (request: IapCheckRequest) => Promise;\n postReinstatePremium: () => Promise;\n postCancelPremium: () => Promise;\n postAccountStorage: (request: StorageRequest) => Promise;\n postAccountPayment: (request: PaymentRequest) => Promise;\n postAccountLicense: (data: FormData) => Promise;\n postAccountKey: (request: UpdateKeyRequest) => Promise;\n postAccountKeys: (request: KeysRequest) => Promise;\n postAccountVerifyEmail: () => Promise;\n postAccountVerifyEmailToken: (request: VerifyEmailRequest) => Promise;\n postAccountVerifyPassword: (request: PasswordVerificationRequest) => Promise;\n postAccountRecoverDelete: (request: DeleteRecoverRequest) => Promise;\n postAccountRecoverDeleteToken: (request: VerifyDeleteRecoverRequest) => Promise;\n postAccountKdf: (request: KdfRequest) => Promise;\n getEnterprisePortalSignInToken: () => Promise;\n postUserApiKey: (id: string, request: PasswordVerificationRequest) => Promise;\n postUserRotateApiKey: (id: string, request: PasswordVerificationRequest) => Promise;\n\n getFolder: (id: string) => Promise;\n postFolder: (request: FolderRequest) => Promise;\n putFolder: (id: string, request: FolderRequest) => Promise;\n deleteFolder: (id: string) => Promise;\n\n getSend: (id: string) => Promise;\n postSendAccess: (id: string, request: SendAccessRequest, apiUrl?: string) => Promise;\n getSends: () => Promise>;\n postSend: (request: SendRequest) => Promise;\n postSendFile: (data: FormData) => Promise;\n putSend: (id: string, request: SendRequest) => Promise;\n putSendRemovePassword: (id: string) => Promise;\n deleteSend: (id: string) => Promise;\n getSendFileDownloadData: (send: SendAccessView, request: SendAccessRequest) => Promise;\n\n getCipher: (id: string) => Promise;\n getCipherAdmin: (id: string) => Promise;\n getCiphersOrganization: (organizationId: string) => Promise>;\n postCipher: (request: CipherRequest) => Promise;\n postCipherCreate: (request: CipherCreateRequest) => Promise;\n postCipherAdmin: (request: CipherCreateRequest) => Promise;\n putCipher: (id: string, request: CipherRequest) => Promise;\n putCipherAdmin: (id: string, request: CipherRequest) => Promise;\n deleteCipher: (id: string) => Promise;\n deleteCipherAdmin: (id: string) => Promise;\n deleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise;\n deleteManyCiphersAdmin: (request: CipherBulkDeleteRequest) => Promise;\n putMoveCiphers: (request: CipherBulkMoveRequest) => Promise;\n putShareCipher: (id: string, request: CipherShareRequest) => Promise;\n putShareCiphers: (request: CipherBulkShareRequest) => Promise;\n putCipherCollections: (id: string, request: CipherCollectionsRequest) => Promise;\n putCipherCollectionsAdmin: (id: string, request: CipherCollectionsRequest) => Promise;\n postPurgeCiphers: (request: PasswordVerificationRequest, organizationId?: string) => Promise;\n postImportCiphers: (request: ImportCiphersRequest) => Promise;\n postImportOrganizationCiphers: (organizationId: string, request: ImportOrganizationCiphersRequest) => Promise;\n putDeleteCipher: (id: string) => Promise;\n putDeleteCipherAdmin: (id: string) => Promise;\n putDeleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise;\n putDeleteManyCiphersAdmin: (request: CipherBulkDeleteRequest) => Promise;\n putRestoreCipher: (id: string) => Promise;\n putRestoreCipherAdmin: (id: string) => Promise;\n putRestoreManyCiphers: (request: CipherBulkRestoreRequest) => Promise>;\n\n postCipherAttachment: (id: string, data: FormData) => Promise;\n postCipherAttachmentAdmin: (id: string, data: FormData) => Promise;\n deleteCipherAttachment: (id: string, attachmentId: string) => Promise;\n deleteCipherAttachmentAdmin: (id: string, attachmentId: string) => Promise;\n postShareCipherAttachment: (id: string, attachmentId: string, data: FormData,\n organizationId: string) => Promise;\n\n getCollectionDetails: (organizationId: string, id: string) => Promise;\n getUserCollections: () => Promise>;\n getCollections: (organizationId: string) => Promise>;\n getCollectionUsers: (organizationId: string, id: string) => Promise;\n postCollection: (organizationId: string, request: CollectionRequest) => Promise;\n putCollectionUsers: (organizationId: string, id: string, request: SelectionReadOnlyRequest[]) => Promise;\n putCollection: (organizationId: string, id: string, request: CollectionRequest) => Promise;\n deleteCollection: (organizationId: string, id: string) => Promise;\n deleteCollectionUser: (organizationId: string, id: string, organizationUserId: string) => Promise;\n\n getGroupDetails: (organizationId: string, id: string) => Promise;\n getGroups: (organizationId: string) => Promise>;\n getGroupUsers: (organizationId: string, id: string) => Promise;\n postGroup: (organizationId: string, request: GroupRequest) => Promise;\n putGroup: (organizationId: string, id: string, request: GroupRequest) => Promise;\n putGroupUsers: (organizationId: string, id: string, request: string[]) => Promise;\n deleteGroup: (organizationId: string, id: string) => Promise;\n deleteGroupUser: (organizationId: string, id: string, organizationUserId: string) => Promise;\n\n getPolicy: (organizationId: string, type: PolicyType) => Promise;\n getPolicies: (organizationId: string) => Promise>;\n getPoliciesByToken: (organizationId: string, token: string, email: string, organizationUserId: string) =>\n Promise>;\n putPolicy: (organizationId: string, type: PolicyType, request: PolicyRequest) => Promise;\n\n getOrganizationUser: (organizationId: string, id: string) => Promise;\n getOrganizationUserGroups: (organizationId: string, id: string) => Promise;\n getOrganizationUsers: (organizationId: string) => Promise>;\n postOrganizationUserInvite: (organizationId: string, request: OrganizationUserInviteRequest) => Promise;\n postOrganizationUserReinvite: (organizationId: string, id: string) => Promise;\n postOrganizationUserAccept: (organizationId: string, id: string,\n request: OrganizationUserAcceptRequest) => Promise;\n postOrganizationUserConfirm: (organizationId: string, id: string,\n request: OrganizationUserConfirmRequest) => Promise;\n putOrganizationUser: (organizationId: string, id: string, request: OrganizationUserUpdateRequest) => Promise;\n putOrganizationUserGroups: (organizationId: string, id: string,\n request: OrganizationUserUpdateGroupsRequest) => Promise;\n deleteOrganizationUser: (organizationId: string, id: string) => Promise;\n\n getSync: () => Promise;\n postImportDirectory: (organizationId: string, request: ImportDirectoryRequest) => Promise;\n\n getSettingsDomains: () => Promise;\n putSettingsDomains: (request: UpdateDomainsRequest) => Promise;\n\n getTwoFactorProviders: () => Promise>;\n getTwoFactorOrganizationProviders: (organizationId: string) => Promise>;\n getTwoFactorAuthenticator: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorEmail: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorDuo: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorOrganizationDuo: (organizationId: string,\n request: PasswordVerificationRequest) => Promise;\n getTwoFactorYubiKey: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorU2f: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorU2fChallenge: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorRecover: (request: PasswordVerificationRequest) => Promise;\n putTwoFactorAuthenticator: (\n request: UpdateTwoFactorAuthenticatorRequest) => Promise;\n putTwoFactorEmail: (request: UpdateTwoFactorEmailRequest) => Promise;\n putTwoFactorDuo: (request: UpdateTwoFactorDuoRequest) => Promise;\n putTwoFactorOrganizationDuo: (organizationId: string,\n request: UpdateTwoFactorDuoRequest) => Promise;\n putTwoFactorYubiKey: (request: UpdateTwoFactorYubioOtpRequest) => Promise;\n putTwoFactorU2f: (request: UpdateTwoFactorU2fRequest) => Promise;\n deleteTwoFactorU2f: (request: UpdateTwoFactorU2fDeleteRequest) => Promise;\n putTwoFactorDisable: (request: TwoFactorProviderRequest) => Promise;\n putTwoFactorOrganizationDisable: (organizationId: string,\n request: TwoFactorProviderRequest) => Promise;\n postTwoFactorRecover: (request: TwoFactorRecoveryRequest) => Promise;\n postTwoFactorEmailSetup: (request: TwoFactorEmailRequest) => Promise;\n postTwoFactorEmail: (request: TwoFactorEmailRequest) => Promise;\n\n getEmergencyAccessTrusted: () => Promise>;\n getEmergencyAccessGranted: () => Promise>;\n getEmergencyAccess: (id: string) => Promise;\n getEmergencyGrantorPolicies: (id: string) => Promise>;\n putEmergencyAccess: (id: string, request: EmergencyAccessUpdateRequest) => Promise;\n deleteEmergencyAccess: (id: string) => Promise;\n postEmergencyAccessInvite: (request: EmergencyAccessInviteRequest) => Promise;\n postEmergencyAccessReinvite: (id: string) => Promise;\n postEmergencyAccessAccept: (id: string, request: EmergencyAccessAcceptRequest) => Promise;\n postEmergencyAccessConfirm: (id: string, request: EmergencyAccessConfirmRequest) => Promise;\n postEmergencyAccessInitiate: (id: string) => Promise;\n postEmergencyAccessApprove: (id: string) => Promise;\n postEmergencyAccessReject: (id: string) => Promise;\n postEmergencyAccessTakeover: (id: string) => Promise;\n postEmergencyAccessPassword: (id: string, request: EmergencyAccessPasswordRequest) => Promise;\n postEmergencyAccessView: (id: string) => Promise;\n\n getOrganization: (id: string) => Promise;\n getOrganizationBilling: (id: string) => Promise;\n getOrganizationSubscription: (id: string) => Promise;\n getOrganizationLicense: (id: string, installationId: string) => Promise;\n getOrganizationTaxInfo: (id: string) => Promise;\n postOrganization: (request: OrganizationCreateRequest) => Promise;\n putOrganization: (id: string, request: OrganizationUpdateRequest) => Promise;\n putOrganizationTaxInfo: (id: string, request: OrganizationTaxInfoUpdateRequest) => Promise;\n postLeaveOrganization: (id: string) => Promise;\n postOrganizationLicense: (data: FormData) => Promise;\n postOrganizationLicenseUpdate: (id: string, data: FormData) => Promise;\n postOrganizationApiKey: (id: string, request: PasswordVerificationRequest) => Promise;\n postOrganizationRotateApiKey: (id: string, request: PasswordVerificationRequest) => Promise;\n postOrganizationUpgrade: (id: string, request: OrganizationUpgradeRequest) => Promise;\n postOrganizationSeat: (id: string, request: SeatRequest) => Promise;\n postOrganizationStorage: (id: string, request: StorageRequest) => Promise;\n postOrganizationPayment: (id: string, request: PaymentRequest) => Promise;\n postOrganizationVerifyBank: (id: string, request: VerifyBankRequest) => Promise;\n postOrganizationCancel: (id: string) => Promise;\n postOrganizationReinstate: (id: string) => Promise;\n deleteOrganization: (id: string, request: PasswordVerificationRequest) => Promise;\n getPlans: () => Promise>;\n getTaxRates: () => Promise>;\n\n getEvents: (start: string, end: string, token: string) => Promise>;\n getEventsCipher: (id: string, start: string, end: string, token: string) => Promise>;\n getEventsOrganization: (id: string, start: string, end: string,\n token: string) => Promise>;\n getEventsOrganizationUser: (organizationId: string, id: string,\n start: string, end: string, token: string) => Promise>;\n postEventsCollect: (request: EventRequest[]) => Promise;\n\n deleteSsoUser: (organizationId: string) => Promise;\n getSsoUserIdentifier: () => Promise;\n\n getUserPublicKey: (id: string) => Promise;\n\n getHibpBreach: (username: string) => Promise;\n\n postBitPayInvoice: (request: BitPayInvoiceRequest) => Promise;\n postSetupPayment: () => Promise;\n\n getActiveBearerToken: () => Promise;\n fetch: (request: Request) => Promise;\n nativeFetch: (request: Request) => Promise;\n\n preValidateSso: (identifier: string) => Promise;\n}\n","import { OrganizationData } from '../models/data/organizationData';\nimport { Organization } from '../models/domain/organization';\n\nimport { KdfType } from '../enums/kdfType';\n\nexport abstract class UserService {\n setInformation: (userId: string, email: string, kdf: KdfType, kdfIterations: number) => Promise;\n setSecurityStamp: (stamp: string) => Promise;\n getUserId: () => Promise;\n getEmail: () => Promise;\n getSecurityStamp: () => Promise;\n getKdf: () => Promise;\n getKdfIterations: () => Promise;\n clear: () => Promise;\n isAuthenticated: () => Promise;\n canAccessPremium: () => Promise;\n getOrganization: (id: string) => Promise;\n getAllOrganizations: () => Promise;\n replaceOrganizations: (organizations: { [id: string]: OrganizationData; }) => Promise;\n clearOrganizations: (userId: string) => Promise;\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\nimport { I18nService } from '../../abstractions/i18n.service';\n\n@Pipe({\n name: 'i18n',\n})\nexport class I18nPipe implements PipeTransform {\n constructor(private i18nService: I18nService) { }\n\n transform(id: string, p1?: string, p2?: string, p3?: string): string {\n return this.i18nService.t(id, p1, p2, p3);\n }\n}\n","export abstract class MessagingService {\n send: (subscriber: string, arg?: any) => void;\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnChanges,\n} from '@angular/core';\n\nimport { ValidationService } from '../services/validation.service';\n\n@Directive({\n selector: '[appApiAction]',\n})\nexport class ApiActionDirective implements OnChanges {\n @Input() appApiAction: Promise;\n\n constructor(private el: ElementRef, private validationService: ValidationService) { }\n\n ngOnChanges(changes: any) {\n if (this.appApiAction == null || this.appApiAction.then == null) {\n return;\n }\n\n this.el.nativeElement.loading = true;\n\n this.appApiAction.then((response: any) => {\n this.el.nativeElement.loading = false;\n }, (e: any) => {\n this.el.nativeElement.loading = false;\n this.validationService.showError(e);\n });\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[appA11yTitle]',\n})\nexport class A11yTitleDirective {\n @Input() set appA11yTitle(title: string) {\n this.title = title;\n }\n\n private title: string;\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngOnInit() {\n if (!this.el.nativeElement.hasAttribute('title')) {\n this.renderer.setAttribute(this.el.nativeElement, 'title', this.title);\n }\n if (!this.el.nativeElement.hasAttribute('aria-label')) {\n this.renderer.setAttribute(this.el.nativeElement, 'aria-label', this.title);\n }\n }\n}\n","import { CipherString } from '../models/domain/cipherString';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { ProfileOrganizationResponse } from '../models/response/profileOrganizationResponse';\n\nimport { KdfType } from '../enums/kdfType';\n\nexport abstract class CryptoService {\n setKey: (key: SymmetricCryptoKey) => Promise;\n setKeyHash: (keyHash: string) => Promise<{}>;\n setEncKey: (encKey: string) => Promise<{}>;\n setEncPrivateKey: (encPrivateKey: string) => Promise<{}>;\n setOrgKeys: (orgs: ProfileOrganizationResponse[]) => Promise<{}>;\n getKey: () => Promise;\n getKeyHash: () => Promise;\n getEncKey: (key?: SymmetricCryptoKey) => Promise;\n getPublicKey: () => Promise;\n getPrivateKey: () => Promise;\n getFingerprint: (userId: string, publicKey?: ArrayBuffer) => Promise;\n getOrgKeys: () => Promise>;\n getOrgKey: (orgId: string) => Promise;\n hasKey: () => Promise;\n hasEncKey: () => Promise;\n clearKey: () => Promise;\n clearKeyHash: () => Promise;\n clearEncKey: (memoryOnly?: boolean) => Promise;\n clearKeyPair: (memoryOnly?: boolean) => Promise;\n clearOrgKeys: (memoryOnly?: boolean) => Promise;\n clearPinProtectedKey: () => Promise;\n clearKeys: () => Promise;\n toggleKey: () => Promise;\n makeKey: (password: string, salt: string, kdf: KdfType, kdfIterations: number) => Promise;\n makeKeyFromPin: (pin: string, salt: string, kdf: KdfType, kdfIterations: number,\n protectedKeyCs?: CipherString) => Promise;\n makeShareKey: () => Promise<[CipherString, SymmetricCryptoKey]>;\n makeKeyPair: (key?: SymmetricCryptoKey) => Promise<[string, CipherString]>;\n makePinKey: (pin: string, salt: string, kdf: KdfType, kdfIterations: number) => Promise;\n makeSendKey: (keyMaterial: ArrayBuffer) => Promise;\n hashPassword: (password: string, key: SymmetricCryptoKey) => Promise;\n makeEncKey: (key: SymmetricCryptoKey) => Promise<[SymmetricCryptoKey, CipherString]>;\n remakeEncKey: (key: SymmetricCryptoKey, encKey?: SymmetricCryptoKey) => Promise<[SymmetricCryptoKey, CipherString]>;\n encrypt: (plainValue: string | ArrayBuffer, key?: SymmetricCryptoKey) => Promise;\n encryptToBytes: (plainValue: ArrayBuffer, key?: SymmetricCryptoKey) => Promise;\n rsaEncrypt: (data: ArrayBuffer, publicKey?: ArrayBuffer) => Promise;\n rsaDecrypt: (encValue: string) => Promise;\n decryptToBytes: (cipherString: CipherString, key?: SymmetricCryptoKey) => Promise;\n decryptToUtf8: (cipherString: CipherString, key?: SymmetricCryptoKey) => Promise;\n decryptFromBytes: (encBuf: ArrayBuffer, key: SymmetricCryptoKey) => Promise;\n randomNumber: (min: number, max: number) => Promise;\n}\n","import { CipherType } from '../enums/cipherType';\nimport { UriMatchType } from '../enums/uriMatchType';\n\nimport { CipherData } from '../models/data/cipherData';\n\nimport { Cipher } from '../models/domain/cipher';\nimport { Field } from '../models/domain/field';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { FieldView } from '../models/view/fieldView';\n\nexport abstract class CipherService {\n decryptedCipherCache: CipherView[];\n\n clearCache: () => void;\n encrypt: (model: CipherView, key?: SymmetricCryptoKey, originalCipher?: Cipher) => Promise;\n encryptFields: (fieldsModel: FieldView[], key: SymmetricCryptoKey) => Promise;\n encryptField: (fieldModel: FieldView, key: SymmetricCryptoKey) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllDecryptedForGrouping: (groupingId: string, folder?: boolean) => Promise;\n getAllDecryptedForUrl: (url: string, includeOtherTypes?: CipherType[],\n defaultMatch?: UriMatchType) => Promise;\n getAllFromApiForOrganization: (organizationId: string) => Promise;\n getLastUsedForUrl: (url: string) => Promise;\n getLastLaunchedForUrl: (url: string) => Promise;\n getNextCipherForUrl: (url: string) => Promise;\n updateLastUsedIndexForUrl: (url: string) => void;\n updateLastUsedDate: (id: string) => Promise;\n updateLastLaunchedDate: (id: string) => Promise;\n saveNeverDomain: (domain: string) => Promise;\n saveWithServer: (cipher: Cipher) => Promise;\n shareWithServer: (cipher: CipherView, organizationId: string, collectionIds: string[]) => Promise;\n shareManyWithServer: (ciphers: CipherView[], organizationId: string, collectionIds: string[]) => Promise;\n saveAttachmentWithServer: (cipher: Cipher, unencryptedFile: any, admin?: boolean) => Promise;\n saveAttachmentRawWithServer: (cipher: Cipher, filename: string, data: ArrayBuffer,\n admin?: boolean) => Promise;\n saveCollectionsWithServer: (cipher: Cipher) => Promise;\n upsert: (cipher: CipherData | CipherData[]) => Promise;\n replace: (ciphers: { [id: string]: CipherData; }) => Promise;\n clear: (userId: string) => Promise;\n moveManyWithServer: (ids: string[], folderId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n deleteManyWithServer: (ids: string[]) => Promise;\n deleteAttachment: (id: string, attachmentId: string) => Promise;\n deleteAttachmentWithServer: (id: string, attachmentId: string) => Promise;\n sortCiphersByLastUsed: (a: any, b: any) => number;\n sortCiphersByLastUsedThenName: (a: any, b: any) => number;\n getLocaleSortingFunction: () => (a: CipherView, b: CipherView) => number;\n softDelete: (id: string | string[]) => Promise;\n softDeleteWithServer: (id: string) => Promise;\n softDeleteManyWithServer: (ids: string[]) => Promise;\n restore: (cipher: { id: string, revisionDate: string; } | { id: string, revisionDate: string; }[]) => Promise;\n restoreWithServer: (id: string) => Promise;\n restoreManyWithServer: (ids: string[]) => Promise;\n}\n","export abstract class BaseResponse {\n private response: any;\n\n constructor(response: any) {\n this.response = response;\n }\n\n protected getResponseProperty(propertyName: string, response: any = null, exactName = false): any {\n if (propertyName == null || propertyName === '') {\n throw new Error('propertyName must not be null/empty.');\n }\n if (response == null && this.response != null) {\n response = this.response;\n }\n if (response == null) {\n return null;\n }\n if (!exactName && response[propertyName] === undefined) {\n let otherCasePropertyName: string = null;\n if (propertyName.charAt(0) === propertyName.charAt(0).toUpperCase()) {\n otherCasePropertyName = propertyName.charAt(0).toLowerCase();\n } else {\n otherCasePropertyName = propertyName.charAt(0).toUpperCase();\n }\n if (propertyName.length > 1) {\n otherCasePropertyName += propertyName.slice(1);\n }\n\n propertyName = otherCasePropertyName;\n if (response[propertyName] === undefined) {\n propertyName = propertyName.toLowerCase();\n }\n if (response[propertyName] === undefined) {\n propertyName = propertyName.toUpperCase();\n }\n }\n return response[propertyName];\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { I18nService } from '../../abstractions/i18n.service';\n\n@Component({\n selector: 'app-callout',\n templateUrl: 'callout.component.html',\n})\nexport class CalloutComponent implements OnInit {\n @Input() type = 'info';\n @Input() icon: string;\n @Input() title: string;\n @Input() clickable: boolean;\n\n calloutStyle: string;\n\n constructor(private i18nService: I18nService) { }\n\n ngOnInit() {\n this.calloutStyle = this.type;\n\n if (this.type === 'warning' || this.type === 'danger') {\n if (this.type === 'danger') {\n this.calloutStyle = 'danger';\n }\n if (this.title === undefined) {\n this.title = this.i18nService.t('warning');\n }\n if (this.icon === undefined) {\n this.icon = 'fa-warning';\n }\n } else if (this.type === 'error') {\n this.calloutStyle = 'danger';\n if (this.title === undefined) {\n this.title = this.i18nService.t('error');\n }\n if (this.icon === undefined) {\n this.icon = 'fa-bolt';\n }\n } else if (this.type === 'tip') {\n this.calloutStyle = 'success';\n if (this.title === undefined) {\n this.title = this.i18nService.t('tip');\n }\n if (this.icon === undefined) {\n this.icon = 'fa-lightbulb-o';\n }\n }\n }\n}\n","
\n

\n \n {{title}}\n

\n \n
\n","import * as papa from 'papaparse';\n\nimport { LogService } from '../abstractions/log.service';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { CollectionView } from '../models/view/collectionView';\nimport { LoginUriView } from '../models/view/loginUriView';\n\nimport { Utils } from '../misc/utils';\n\nimport { FieldView } from '../models/view/fieldView';\nimport { FolderView } from '../models/view/folderView';\nimport { LoginView } from '../models/view/loginView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { ConsoleLogService } from '../services/consoleLog.service';\n\nexport abstract class BaseImporter {\n organizationId: string = null;\n\n protected logService: LogService = new ConsoleLogService(false);\n\n protected newLineRegex = /(?:\\r\\n|\\r|\\n)/;\n\n protected passwordFieldNames = [\n 'password', 'pass word', 'passphrase', 'pass phrase',\n 'pass', 'code', 'code word', 'codeword',\n 'secret', 'secret word', 'personpwd',\n 'key', 'keyword', 'key word', 'keyphrase', 'key phrase',\n 'form_pw', 'wppassword', 'pin', 'pwd', 'pw', 'pword', 'passwd',\n 'p', 'serial', 'serial#', 'license key', 'reg #',\n\n // Non-English names\n 'passwort',\n ];\n\n protected usernameFieldNames = [\n 'user', 'name', 'user name', 'username', 'login name',\n 'email', 'e-mail', 'id', 'userid', 'user id',\n 'login', 'form_loginname', 'wpname', 'mail',\n 'loginid', 'login id', 'log', 'personlogin',\n 'first name', 'last name', 'card#', 'account #',\n 'member', 'member #',\n\n // Non-English names\n 'nom', 'benutzername',\n ];\n\n protected notesFieldNames = [\n 'note', 'notes', 'comment', 'comments', 'memo',\n 'description', 'free form', 'freeform',\n 'free text', 'freetext', 'free',\n\n // Non-English names\n 'kommentar',\n ];\n\n protected uriFieldNames: string[] = [\n 'url', 'hyper link', 'hyperlink', 'link',\n 'host', 'hostname', 'host name', 'server', 'address',\n 'hyper ref', 'href', 'web', 'website', 'web site', 'site',\n 'web-site', 'uri',\n\n // Non-English names\n 'ort', 'adresse',\n ];\n\n protected parseCsvOptions = {\n encoding: 'UTF-8',\n skipEmptyLines: false,\n };\n\n protected get organization() {\n return this.organizationId != null;\n }\n\n protected parseXml(data: string): Document {\n const parser = new DOMParser();\n const doc = parser.parseFromString(data, 'application/xml');\n return doc != null && doc.querySelector('parsererror') == null ? doc : null;\n }\n\n protected parseCsv(data: string, header: boolean, options: any = {}): any[] {\n const parseOptions = Object.assign({ header: header }, this.parseCsvOptions, options);\n data = this.splitNewLine(data).join('\\n').trim();\n const result = papa.parse(data, parseOptions);\n if (result.errors != null && result.errors.length > 0) {\n result.errors.forEach(e => {\n if (e.row != null) {\n // tslint:disable-next-line\n this.logService.warning('Error parsing row ' + e.row + ': ' + e.message);\n }\n });\n }\n return result.data && result.data.length > 0 ? result.data : null;\n }\n\n protected parseSingleRowCsv(rowData: string) {\n if (this.isNullOrWhitespace(rowData)) {\n return null;\n }\n const parsedRow = this.parseCsv(rowData, false);\n if (parsedRow != null && parsedRow.length > 0 && parsedRow[0].length > 0) {\n return parsedRow[0];\n }\n return null;\n }\n\n protected makeUriArray(uri: string | string[]): LoginUriView[] {\n if (uri == null) {\n return null;\n }\n\n if (typeof uri === 'string') {\n const loginUri = new LoginUriView();\n loginUri.uri = this.fixUri(uri);\n if (this.isNullOrWhitespace(loginUri.uri)) {\n return null;\n }\n loginUri.match = null;\n return [loginUri];\n }\n\n if (uri.length > 0) {\n const returnArr: LoginUriView[] = [];\n uri.forEach(u => {\n const loginUri = new LoginUriView();\n loginUri.uri = this.fixUri(u);\n if (this.isNullOrWhitespace(loginUri.uri)) {\n return;\n }\n loginUri.match = null;\n returnArr.push(loginUri);\n });\n return returnArr.length === 0 ? null : returnArr;\n }\n\n return null;\n }\n\n protected fixUri(uri: string) {\n if (uri == null) {\n return null;\n }\n uri = uri.trim();\n if (uri.indexOf('://') === -1 && uri.indexOf('.') >= 0) {\n uri = 'http://' + uri;\n }\n if (uri.length > 1000) {\n return uri.substring(0, 1000);\n }\n return uri;\n }\n\n protected nameFromUrl(url: string) {\n const hostname = Utils.getHostname(url);\n if (this.isNullOrWhitespace(hostname)) {\n return null;\n }\n return hostname.startsWith('www.') ? hostname.replace('www.', '') : hostname;\n }\n\n protected isNullOrWhitespace(str: string): boolean {\n return Utils.isNullOrWhitespace(str);\n }\n\n protected getValueOrDefault(str: string, defaultValue: string = null): string {\n if (this.isNullOrWhitespace(str)) {\n return defaultValue;\n }\n return str;\n }\n\n protected splitNewLine(str: string): string[] {\n return str.split(this.newLineRegex);\n }\n\n // ref https://stackoverflow.com/a/5911300\n protected getCardBrand(cardNum: string) {\n if (this.isNullOrWhitespace(cardNum)) {\n return null;\n }\n\n // Visa\n let re = new RegExp('^4');\n if (cardNum.match(re) != null) {\n return 'Visa';\n }\n\n // Mastercard\n // Updated for Mastercard 2017 BINs expansion\n if (/^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/\n .test(cardNum)) {\n return 'Mastercard';\n }\n\n // AMEX\n re = new RegExp('^3[47]');\n if (cardNum.match(re) != null) {\n return 'Amex';\n }\n\n // Discover\n re = new RegExp('^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)');\n if (cardNum.match(re) != null) {\n return 'Discover';\n }\n\n // Diners\n re = new RegExp('^36');\n if (cardNum.match(re) != null) {\n return 'Diners Club';\n }\n\n // Diners - Carte Blanche\n re = new RegExp('^30[0-5]');\n if (cardNum.match(re) != null) {\n return 'Diners Club';\n }\n\n // JCB\n re = new RegExp('^35(2[89]|[3-8][0-9])');\n if (cardNum.match(re) != null) {\n return 'JCB';\n }\n\n // Visa Electron\n re = new RegExp('^(4026|417500|4508|4844|491(3|7))');\n if (cardNum.match(re) != null) {\n return 'Visa';\n }\n\n return null;\n }\n\n protected setCardExpiration(cipher: CipherView, expiration: string): boolean {\n if (!this.isNullOrWhitespace(expiration)) {\n const parts = expiration.split('/');\n if (parts.length === 2) {\n let month: string = null;\n let year: string = null;\n if (parts[0].length === 1 || parts[0].length === 2) {\n month = parts[0];\n if (month.length === 2 && month[0] === '0') {\n month = month.substr(1, 1);\n }\n }\n if (parts[1].length === 2 || parts[1].length === 4) {\n year = month.length === 2 ? '20' + parts[1] : parts[1];\n }\n if (month != null && year != null) {\n cipher.card.expMonth = month;\n cipher.card.expYear = year;\n return true;\n }\n }\n }\n return false;\n }\n\n protected moveFoldersToCollections(result: ImportResult) {\n result.folderRelationships.forEach(r => result.collectionRelationships.push(r));\n result.collections = result.folders.map(f => {\n const collection = new CollectionView();\n collection.name = f.name;\n return collection;\n });\n result.folderRelationships = [];\n result.folders = [];\n }\n\n protected querySelectorDirectChild(parentEl: Element, query: string) {\n const els = this.querySelectorAllDirectChild(parentEl, query);\n return els.length === 0 ? null : els[0];\n }\n\n protected querySelectorAllDirectChild(parentEl: Element, query: string) {\n return Array.from(parentEl.querySelectorAll(query)).filter(el => el.parentNode === parentEl);\n }\n\n protected initLoginCipher() {\n const cipher = new CipherView();\n cipher.favorite = false;\n cipher.notes = '';\n cipher.fields = [];\n cipher.login = new LoginView();\n cipher.type = CipherType.Login;\n return cipher;\n }\n\n protected cleanupCipher(cipher: CipherView) {\n if (cipher == null) {\n return;\n }\n if (cipher.type !== CipherType.Login) {\n cipher.login = null;\n }\n if (this.isNullOrWhitespace(cipher.name)) {\n cipher.name = '--';\n }\n if (this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = null;\n } else {\n cipher.notes = cipher.notes.trim();\n }\n if (cipher.fields != null && cipher.fields.length === 0) {\n cipher.fields = null;\n }\n }\n\n protected processKvp(cipher: CipherView, key: string, value: string, type: FieldType = FieldType.Text) {\n if (this.isNullOrWhitespace(value)) {\n return;\n }\n if (this.isNullOrWhitespace(key)) {\n key = '';\n }\n if (value.length > 200 || value.trim().search(this.newLineRegex) > -1) {\n if (cipher.notes == null) {\n cipher.notes = '';\n }\n cipher.notes += (key + ': ' + this.splitNewLine(value).join('\\n') + '\\n');\n } else {\n if (cipher.fields == null) {\n cipher.fields = [];\n }\n const field = new FieldView();\n field.type = type;\n field.name = key;\n field.value = value;\n cipher.fields.push(field);\n }\n }\n\n protected processFolder(result: ImportResult, folderName: string) {\n let folderIndex = result.folders.length;\n const hasFolder = !this.isNullOrWhitespace(folderName);\n let addFolder = hasFolder;\n\n if (hasFolder) {\n for (let i = 0; i < result.folders.length; i++) {\n if (result.folders[i].name === folderName) {\n addFolder = false;\n folderIndex = i;\n break;\n }\n }\n }\n\n if (addFolder) {\n const f = new FolderView();\n f.name = folderName;\n result.folders.push(f);\n }\n if (hasFolder) {\n result.folderRelationships.push([result.ciphers.length, folderIndex]);\n }\n }\n\n protected convertToNoteIfNeeded(cipher: CipherView) {\n if (cipher.type === CipherType.Login && this.isNullOrWhitespace(cipher.login.username) &&\n this.isNullOrWhitespace(cipher.login.password) &&\n (cipher.login.uris == null || cipher.login.uris.length === 0)) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n }\n }\n}\n","import { CipherView } from '../view/cipherView';\nimport { CollectionView } from '../view/collectionView';\nimport { FolderView } from '../view/folderView';\n\nexport class ImportResult {\n success = false;\n errorMessage: string;\n ciphers: CipherView[] = [];\n folders: FolderView[] = [];\n folderRelationships: [number, number][] = [];\n collections: CollectionView[] = [];\n collectionRelationships: [number, number][] = [];\n}\n","import * as tldjs from 'tldjs';\n\nimport { I18nService } from '../abstractions/i18n.service';\n\n// tslint:disable-next-line\nconst nodeURL = typeof window === 'undefined' ? require('url') : null;\n\nexport class Utils {\n static inited = false;\n static isNativeScript = false;\n static isNode = false;\n static isBrowser = true;\n static isMobileBrowser = false;\n static isAppleMobileBrowser = false;\n static global: any = null;\n static tldEndingRegex = /.*\\.(com|net|org|edu|uk|gov|ca|de|jp|fr|au|ru|ch|io|es|us|co|xyz|info|ly|mil)$/;\n\n static init() {\n if (Utils.inited) {\n return;\n }\n\n Utils.inited = true;\n Utils.isNode = typeof process !== 'undefined' && (process as any).release != null &&\n (process as any).release.name === 'node';\n Utils.isBrowser = typeof window !== 'undefined';\n Utils.isNativeScript = !Utils.isNode && !Utils.isBrowser;\n Utils.isMobileBrowser = Utils.isBrowser && this.isMobile(window);\n Utils.isAppleMobileBrowser = Utils.isBrowser && this.isAppleMobile(window);\n Utils.global = Utils.isNativeScript ? global : (Utils.isNode && !Utils.isBrowser ? global : window);\n }\n\n static fromB64ToArray(str: string): Uint8Array {\n if (Utils.isNode || Utils.isNativeScript) {\n return new Uint8Array(Buffer.from(str, 'base64'));\n } else {\n const binaryString = window.atob(str);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n }\n\n static fromUrlB64ToArray(str: string): Uint8Array {\n return Utils.fromB64ToArray(Utils.fromUrlB64ToB64(str));\n }\n\n static fromHexToArray(str: string): Uint8Array {\n if (Utils.isNode || Utils.isNativeScript) {\n return new Uint8Array(Buffer.from(str, 'hex'));\n } else {\n const bytes = new Uint8Array(str.length / 2);\n for (let i = 0; i < str.length; i += 2) {\n bytes[i / 2] = parseInt(str.substr(i, 2), 16);\n }\n return bytes;\n }\n }\n\n static fromUtf8ToArray(str: string): Uint8Array {\n if (Utils.isNode || Utils.isNativeScript) {\n return new Uint8Array(Buffer.from(str, 'utf8'));\n } else {\n const strUtf8 = unescape(encodeURIComponent(str));\n const arr = new Uint8Array(strUtf8.length);\n for (let i = 0; i < strUtf8.length; i++) {\n arr[i] = strUtf8.charCodeAt(i);\n }\n return arr;\n }\n }\n\n static fromByteStringToArray(str: string): Uint8Array {\n const arr = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n arr[i] = str.charCodeAt(i);\n }\n return arr;\n }\n\n static fromBufferToB64(buffer: ArrayBuffer): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(buffer).toString('base64');\n } else {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n }\n }\n\n static fromBufferToUrlB64(buffer: ArrayBuffer): string {\n return Utils.fromB64toUrlB64(Utils.fromBufferToB64(buffer));\n }\n\n static fromB64toUrlB64(b64Str: string) {\n return b64Str.replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=/g, '');\n }\n\n static fromBufferToUtf8(buffer: ArrayBuffer): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(buffer).toString('utf8');\n } else {\n const bytes = new Uint8Array(buffer);\n const encodedString = String.fromCharCode.apply(null, bytes);\n return decodeURIComponent(escape(encodedString));\n }\n }\n\n static fromBufferToByteString(buffer: ArrayBuffer): string {\n return String.fromCharCode.apply(null, new Uint8Array(buffer));\n }\n\n // ref: https://stackoverflow.com/a/40031979/1090359\n static fromBufferToHex(buffer: ArrayBuffer): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(buffer).toString('hex');\n } else {\n const bytes = new Uint8Array(buffer);\n return Array.prototype.map.call(bytes, (x: number) => ('00' + x.toString(16)).slice(-2)).join('');\n }\n }\n\n static fromUrlB64ToB64(urlB64Str: string): string {\n let output = urlB64Str.replace(/-/g, '+').replace(/_/g, '/');\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += '==';\n break;\n case 3:\n output += '=';\n break;\n default:\n throw new Error('Illegal base64url string!');\n }\n\n return output;\n }\n\n static fromUrlB64ToUtf8(urlB64Str: string): string {\n return Utils.fromB64ToUtf8(Utils.fromUrlB64ToB64(urlB64Str));\n }\n\n static fromB64ToUtf8(b64Str: string): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(b64Str, 'base64').toString('utf8');\n } else {\n return decodeURIComponent(escape(window.atob(b64Str)));\n }\n }\n\n // ref: http://stackoverflow.com/a/2117523/1090359\n static newGuid(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // tslint:disable-next-line\n const r = Math.random() * 16 | 0;\n // tslint:disable-next-line\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n static isGuid(id: string) {\n return RegExp(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/, 'i').test(id);\n }\n\n static getHostname(uriString: string): string {\n const url = Utils.getUrl(uriString);\n try {\n return url != null && url.hostname !== '' ? url.hostname : null;\n } catch {\n return null;\n }\n }\n\n static getHost(uriString: string): string {\n const url = Utils.getUrl(uriString);\n try {\n return url != null && url.host !== '' ? url.host : null;\n } catch {\n return null;\n }\n }\n\n static getDomain(uriString: string): string {\n if (uriString == null) {\n return null;\n }\n\n uriString = uriString.trim();\n if (uriString === '') {\n return null;\n }\n\n if (uriString.startsWith('data:')) {\n return null;\n }\n\n let httpUrl = uriString.startsWith('http://') || uriString.startsWith('https://');\n if (!httpUrl && uriString.indexOf('://') < 0 && Utils.tldEndingRegex.test(uriString)) {\n uriString = 'http://' + uriString;\n httpUrl = true;\n }\n\n if (httpUrl) {\n try {\n const url = Utils.getUrlObject(uriString);\n if (url.hostname === 'localhost' || Utils.validIpAddress(url.hostname)) {\n return url.hostname;\n }\n\n const urlDomain = tldjs != null && tldjs.getDomain != null ? tldjs.getDomain(url.hostname) : null;\n return urlDomain != null ? urlDomain : url.hostname;\n } catch (e) { }\n }\n\n try {\n const domain = tldjs != null && tldjs.getDomain != null ? tldjs.getDomain(uriString) : null;\n\n if (domain != null) {\n return domain;\n }\n } catch {\n return null;\n }\n\n return null;\n }\n\n static getQueryParams(uriString: string): Map {\n const url = Utils.getUrl(uriString);\n if (url == null || url.search == null || url.search === '') {\n return null;\n }\n const map = new Map();\n const pairs = (url.search[0] === '?' ? url.search.substr(1) : url.search).split('&');\n pairs.forEach(pair => {\n const parts = pair.split('=');\n if (parts.length < 1) {\n return;\n }\n map.set(decodeURIComponent(parts[0]).toLowerCase(), parts[1] == null ? '' : decodeURIComponent(parts[1]));\n });\n return map;\n }\n\n static getSortFunction(i18nService: I18nService, prop: string) {\n return (a: any, b: any) => {\n if (a[prop] == null && b[prop] != null) {\n return -1;\n }\n if (a[prop] != null && b[prop] == null) {\n return 1;\n }\n if (a[prop] == null && b[prop] == null) {\n return 0;\n }\n\n return i18nService.collator ? i18nService.collator.compare(a[prop], b[prop]) :\n a[prop].localeCompare(b[prop]);\n };\n }\n\n static isNullOrWhitespace(str: string): boolean {\n return str == null || typeof str !== 'string' || str.trim() === '';\n }\n\n static nameOf(name: string & keyof T) {\n return name;\n }\n\n static assign(target: T, source: Partial): T {\n return Object.assign(target, source);\n }\n\n private static validIpAddress(ipString: string): boolean {\n // tslint:disable-next-line\n const ipRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n return ipRegex.test(ipString);\n }\n\n private static isMobile(win: Window) {\n let mobile = false;\n (a => {\n // tslint:disable-next-line\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) {\n mobile = true;\n }\n })(win.navigator.userAgent || win.navigator.vendor || (win as any).opera);\n return mobile || win.navigator.userAgent.match(/iPad/i) != null;\n }\n\n private static isAppleMobile(win: Window) {\n return win.navigator.userAgent.match(/iPhone/i) != null || win.navigator.userAgent.match(/iPad/i) != null;\n }\n\n private static getUrl(uriString: string): URL {\n if (uriString == null) {\n return null;\n }\n\n uriString = uriString.trim();\n if (uriString === '') {\n return null;\n }\n\n let url = Utils.getUrlObject(uriString);\n if (url == null) {\n const hasHttpProtocol = uriString.indexOf('http://') === 0 || uriString.indexOf('https://') === 0;\n if (!hasHttpProtocol && uriString.indexOf('.') > -1) {\n url = Utils.getUrlObject('http://' + uriString);\n }\n }\n return url;\n }\n\n private static getUrlObject(uriString: string): URL {\n try {\n if (nodeURL != null) {\n return nodeURL.URL ? new nodeURL.URL(uriString) : nodeURL.parse(uriString);\n } else if (typeof URL === 'function') {\n return new URL(uriString);\n } else if (window != null) {\n const hasProtocol = uriString.indexOf('://') > -1;\n if (!hasProtocol && uriString.indexOf('.') > -1) {\n uriString = 'http://' + uriString;\n } else if (!hasProtocol) {\n return null;\n }\n const anchor = window.document.createElement('a');\n anchor.href = uriString;\n return anchor as any;\n }\n } catch (e) { }\n\n return null;\n }\n}\n\nUtils.init();\n","import { GeneratedPasswordHistory } from '../models/domain/generatedPasswordHistory';\nimport { PasswordGeneratorPolicyOptions } from '../models/domain/passwordGeneratorPolicyOptions';\n\nexport abstract class PasswordGenerationService {\n generatePassword: (options: any) => Promise;\n generatePassphrase: (options: any) => Promise;\n getOptions: () => Promise<[any, PasswordGeneratorPolicyOptions]>;\n enforcePasswordGeneratorPoliciesOnOptions: (options: any) => Promise<[any, PasswordGeneratorPolicyOptions]>;\n getPasswordGeneratorPolicyOptions: () => Promise;\n saveOptions: (options: any) => Promise;\n getHistory: () => Promise;\n addHistory: (password: string) => Promise;\n clear: () => Promise;\n passwordStrength: (password: string, userInputs?: string[]) => zxcvbn.ZXCVBNResult;\n normalizeOptions: (options: any, enforcedPolicyOptions: PasswordGeneratorPolicyOptions) => void;\n}\n","import {\n Directive,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appStopClick]',\n})\nexport class StopClickDirective {\n @HostListener('click', ['$event']) onClick($event: MouseEvent) {\n $event.preventDefault();\n }\n}\n","export abstract class StateService {\n get: (key: string) => Promise;\n save: (key: string, obj: any) => Promise;\n remove: (key: string) => Promise;\n purge: () => Promise;\n}\n","export enum CipherType {\n Login = 1,\n SecureNote = 2,\n Card = 3,\n Identity = 4,\n}\n","import { CollectionData } from '../models/data/collectionData';\n\nimport { Collection } from '../models/domain/collection';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { CollectionView } from '../models/view/collectionView';\n\nexport abstract class CollectionService {\n decryptedCollectionCache: CollectionView[];\n\n clearCache: () => void;\n encrypt: (model: CollectionView) => Promise;\n decryptMany: (collections: Collection[]) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllNested: (collections?: CollectionView[]) => Promise[]>;\n getNested: (id: string) => Promise>;\n upsert: (collection: CollectionData | CollectionData[]) => Promise;\n replace: (collections: { [id: string]: CollectionData; }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n}\n","export abstract class StorageService {\n get: (key: string) => Promise;\n save: (key: string, obj: any) => Promise;\n remove: (key: string) => Promise;\n}\n","import { PolicyData } from '../models/data/policyData';\n\nimport { MasterPasswordPolicyOptions } from '../models/domain/masterPasswordPolicyOptions';\nimport { Policy } from '../models/domain/policy';\n\nimport { PolicyType } from '../enums/policyType';\n\nexport abstract class PolicyService {\n policyCache: Policy[];\n\n clearCache: () => void;\n getAll: (type?: PolicyType) => Promise;\n replace: (policies: { [id: string]: PolicyData; }) => Promise;\n clear: (userId: string) => Promise;\n getMasterPasswordPolicyOptions: (policies?: Policy[]) => Promise;\n evaluateMasterPassword: (passwordStrength: number, newPassword: string,\n enforcedPolicyOptions?: MasterPasswordPolicyOptions) => boolean;\n}\n","import {\n Directive,\n ElementRef,\n Input,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[appInputVerbatim]',\n})\nexport class InputVerbatimDirective {\n @Input() set appInputVerbatim(condition: boolean | string) {\n this.disableComplete = condition === '' || condition === true;\n }\n\n private disableComplete: boolean;\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngOnInit() {\n if (this.disableComplete && !this.el.nativeElement.hasAttribute('autocomplete')) {\n this.renderer.setAttribute(this.el.nativeElement, 'autocomplete', 'off');\n }\n if (!this.el.nativeElement.hasAttribute('autocapitalize')) {\n this.renderer.setAttribute(this.el.nativeElement, 'autocapitalize', 'none');\n }\n if (!this.el.nativeElement.hasAttribute('autocorrect')) {\n this.renderer.setAttribute(this.el.nativeElement, 'autocorrect', 'none');\n }\n if (!this.el.nativeElement.hasAttribute('spellcheck')) {\n this.renderer.setAttribute(this.el.nativeElement, 'spellcheck', 'false');\n }\n if (!this.el.nativeElement.hasAttribute('inputmode')) {\n this.renderer.setAttribute(this.el.nativeElement, 'inputmode', 'verbatim');\n }\n }\n}\n","import { FolderData } from '../models/data/folderData';\n\nimport { Folder } from '../models/domain/folder';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { FolderView } from '../models/view/folderView';\n\nexport abstract class FolderService {\n decryptedFolderCache: FolderView[];\n\n clearCache: () => void;\n encrypt: (model: FolderView, key?: SymmetricCryptoKey) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllNested: () => Promise[]>;\n getNested: (id: string) => Promise>;\n saveWithServer: (folder: Folder) => Promise;\n upsert: (folder: FolderData | FolderData[]) => Promise;\n replace: (folders: { [id: string]: FolderData; }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n}\n","import {\n Directive,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appStopProp]',\n})\nexport class StopPropDirective {\n @HostListener('click', ['$event']) onClick($event: MouseEvent) {\n $event.stopPropagation();\n }\n}\n","import { TwoFactorProviderType } from '../enums/twoFactorProviderType';\n\nimport { AuthResult } from '../models/domain/authResult';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nexport abstract class AuthService {\n email: string;\n masterPasswordHash: string;\n code: string;\n codeVerifier: string;\n ssoRedirectUrl: string;\n clientId: string;\n clientSecret: string;\n twoFactorProvidersData: Map;\n selectedTwoFactorProviderType: TwoFactorProviderType;\n\n logIn: (email: string, masterPassword: string) => Promise;\n logInSso: (code: string, codeVerifier: string, redirectUrl: string) => Promise;\n logInApiKey: (clientId: string, clientSecret: string) => Promise;\n logInTwoFactor: (twoFactorProvider: TwoFactorProviderType, twoFactorToken: string,\n remember?: boolean) => Promise;\n logInComplete: (email: string, masterPassword: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean) => Promise;\n logInSsoComplete: (code: string, codeVerifier: string, redirectUrl: string,\n twoFactorProvider: TwoFactorProviderType, twoFactorToken: string, remember?: boolean) => Promise;\n logInApiKeyComplete: (clientId: string, clientSecret: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean) => Promise;\n logOut: (callback: Function) => void;\n getSupportedTwoFactorProviders: (win: Window) => any[];\n getDefaultTwoFactorProvider: (u2fSupported: boolean) => TwoFactorProviderType;\n makePreloginKey: (masterPassword: string, email: string) => Promise;\n authingWithApiKey: () => boolean;\n authingWithSso: () => boolean;\n authingWithPassword: () => boolean;\n}\n","import {\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from '../models/response/notificationResponse';\n\nexport abstract class SyncService {\n syncInProgress: boolean;\n\n getLastSync: () => Promise;\n setLastSync: (date: Date) => Promise;\n fullSync: (forceSync: boolean, allowThrowOnError?: boolean) => Promise;\n syncUpsertFolder: (notification: SyncFolderNotification, isEdit: boolean) => Promise;\n syncDeleteFolder: (notification: SyncFolderNotification) => Promise;\n syncUpsertCipher: (notification: SyncCipherNotification, isEdit: boolean) => Promise;\n syncDeleteCipher: (notification: SyncFolderNotification) => Promise;\n syncUpsertSend: (notification: SyncSendNotification, isEdit: boolean) => Promise;\n syncDeleteSend: (notification: SyncSendNotification) => Promise;\n}\n","export abstract class EnvironmentService {\n baseUrl: string;\n webVaultUrl: string;\n apiUrl: string;\n identityUrl: string;\n iconsUrl: string;\n notificationsUrl: string;\n eventsUrl: string;\n enterpriseUrl: string;\n\n getWebVaultUrl: () => string;\n setUrlsFromStorage: () => Promise;\n setUrls: (urls: any) => Promise;\n}\n","import {\n Directive,\n ElementRef,\n Input,\n} from '@angular/core';\n\nimport { Utils } from '../../misc/utils';\n\n@Directive({\n selector: '[appAutofocus]',\n})\nexport class AutofocusDirective {\n @Input() set appAutofocus(condition: boolean | string) {\n this.autofocus = condition === '' || condition === true;\n }\n\n private autofocus: boolean;\n\n constructor(private el: ElementRef) { }\n\n ngOnInit() {\n if (!Utils.isMobileBrowser && this.autofocus) {\n this.el.nativeElement.focus();\n }\n }\n}\n","export class ConstantsService {\n static readonly environmentUrlsKey: string = 'environmentUrls';\n static readonly disableGaKey: string = 'disableGa';\n static readonly disableAddLoginNotificationKey: string = 'disableAddLoginNotification';\n static readonly disableChangedPasswordNotificationKey: string = 'disableChangedPasswordNotification';\n static readonly disableContextMenuItemKey: string = 'disableContextMenuItem';\n static readonly disableFaviconKey: string = 'disableFavicon';\n static readonly disableBadgeCounterKey: string = 'disableBadgeCounter';\n static readonly disableAutoTotpCopyKey: string = 'disableAutoTotpCopy';\n static readonly enableAutoFillOnPageLoadKey: string = 'enableAutoFillOnPageLoad';\n static readonly vaultTimeoutKey: string = 'lockOption';\n static readonly vaultTimeoutActionKey: string = 'vaultTimeoutAction';\n static readonly lastActiveKey: string = 'lastActive';\n static readonly neverDomainsKey: string = 'neverDomains';\n static readonly installedVersionKey: string = 'installedVersion';\n static readonly localeKey: string = 'locale';\n static readonly themeKey: string = 'theme';\n static readonly collapsedGroupingsKey: string = 'collapsedGroupings';\n static readonly autoConfirmFingerprints: string = 'autoConfirmFingerprints';\n static readonly dontShowCardsCurrentTab: string = 'dontShowCardsCurrentTab';\n static readonly dontShowIdentitiesCurrentTab: string = 'dontShowIdentitiesCurrentTab';\n static readonly defaultUriMatch: string = 'defaultUriMatch';\n static readonly pinProtectedKey: string = 'pinProtectedKey';\n static readonly protectedPin: string = 'protectedPin';\n static readonly clearClipboardKey: string = 'clearClipboardKey';\n static readonly eventCollectionKey: string = 'eventCollection';\n static readonly ssoCodeVerifierKey: string = 'ssoCodeVerifier';\n static readonly ssoStateKey: string = 'ssoState';\n static readonly biometricUnlockKey: string = 'biometric';\n static readonly biometricText: string = 'biometricText';\n static readonly biometricAwaitingAcceptance: string = 'biometricAwaitingAcceptance';\n static readonly biometricFingerprintValidated: string = 'biometricFingerprintValidated';\n\n readonly environmentUrlsKey: string = ConstantsService.environmentUrlsKey;\n readonly disableGaKey: string = ConstantsService.disableGaKey;\n readonly disableAddLoginNotificationKey: string = ConstantsService.disableAddLoginNotificationKey;\n readonly disableContextMenuItemKey: string = ConstantsService.disableContextMenuItemKey;\n readonly disableFaviconKey: string = ConstantsService.disableFaviconKey;\n readonly disableBadgeCounterKey: string = ConstantsService.disableBadgeCounterKey;\n readonly disableAutoTotpCopyKey: string = ConstantsService.disableAutoTotpCopyKey;\n readonly enableAutoFillOnPageLoadKey: string = ConstantsService.enableAutoFillOnPageLoadKey;\n readonly vaultTimeoutKey: string = ConstantsService.vaultTimeoutKey;\n readonly vaultTimeoutActionKey: string = ConstantsService.vaultTimeoutActionKey;\n readonly lastActiveKey: string = ConstantsService.lastActiveKey;\n readonly neverDomainsKey: string = ConstantsService.neverDomainsKey;\n readonly installedVersionKey: string = ConstantsService.installedVersionKey;\n readonly localeKey: string = ConstantsService.localeKey;\n readonly themeKey: string = ConstantsService.themeKey;\n readonly collapsedGroupingsKey: string = ConstantsService.collapsedGroupingsKey;\n readonly autoConfirmFingerprints: string = ConstantsService.autoConfirmFingerprints;\n readonly dontShowCardsCurrentTab: string = ConstantsService.dontShowCardsCurrentTab;\n readonly dontShowIdentitiesCurrentTab: string = ConstantsService.dontShowIdentitiesCurrentTab;\n readonly defaultUriMatch: string = ConstantsService.defaultUriMatch;\n readonly pinProtectedKey: string = ConstantsService.pinProtectedKey;\n readonly protectedPin: string = ConstantsService.protectedPin;\n readonly clearClipboardKey: string = ConstantsService.clearClipboardKey;\n readonly eventCollectionKey: string = ConstantsService.eventCollectionKey;\n readonly ssoCodeVerifierKey: string = ConstantsService.ssoCodeVerifierKey;\n readonly ssoStateKey: string = ConstantsService.ssoStateKey;\n readonly biometricUnlockKey: string = ConstantsService.biometricUnlockKey;\n readonly biometricText: string = ConstantsService.biometricText;\n readonly biometricAwaitingAcceptance: string = ConstantsService.biometricAwaitingAcceptance;\n readonly biometricFingerprintValidated: string = ConstantsService.biometricFingerprintValidated;\n}\n","import { EventType } from '../enums/eventType';\n\nexport abstract class EventService {\n collect: (eventType: EventType, cipherId?: string, uploadImmediately?: boolean) => Promise;\n uploadEvents: () => Promise;\n clearEvents: () => Promise;\n}\n","export class PasswordVerificationRequest {\n masterPasswordHash: string;\n}\n","import { CipherView } from '../models/view/cipherView';\nimport { SendView } from '../models/view/sendView';\n\nexport abstract class SearchService {\n clearIndex: () => void;\n isSearchable: (query: string) => boolean;\n indexCiphers: () => Promise;\n searchCiphers: (query: string,\n filter?: ((cipher: CipherView) => boolean) | (((cipher: CipherView) => boolean)[]),\n ciphers?: CipherView[]) => Promise;\n searchCiphersBasic: (ciphers: CipherView[], query: string, deleted?: boolean) => CipherView[];\n searchSends: (sends: SendView[], query: string) => SendView[];\n}\n","import { CipherString } from './cipherString';\n\nimport { View } from '../view/view';\n\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport default class Domain {\n protected buildDomainModel(domain: D, dataObj: any, map: any,\n alreadyEncrypted: boolean, notEncList: any[] = []) {\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n const objProp = dataObj[(map[prop] || prop)];\n if (alreadyEncrypted === true || notEncList.indexOf(prop) > -1) {\n (domain as any)[prop] = objProp ? objProp : null;\n } else {\n (domain as any)[prop] = objProp ? new CipherString(objProp) : null;\n }\n }\n }\n protected buildDataModel(domain: D, dataObj: any, map: any, notCipherStringList: any[] = []) {\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n const objProp = (domain as any)[(map[prop] || prop)];\n if (notCipherStringList.indexOf(prop) > -1) {\n (dataObj as any)[prop] = objProp != null ? objProp : null;\n } else {\n (dataObj as any)[prop] = objProp != null ? (objProp as CipherString).encryptedString : null;\n }\n }\n }\n\n protected async decryptObj(viewModel: T, map: any, orgId: string,\n key: SymmetricCryptoKey = null): Promise {\n const promises = [];\n const self: any = this;\n\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n // tslint:disable-next-line\n (function (theProp) {\n const p = Promise.resolve().then(() => {\n const mapProp = map[theProp] || theProp;\n if (self[mapProp]) {\n return self[mapProp].decrypt(orgId, key);\n }\n return null;\n }).then((val: any) => {\n (viewModel as any)[theProp] = val;\n });\n promises.push(p);\n })(prop);\n }\n\n await Promise.all(promises);\n return viewModel;\n }\n}\n","import * as jq from 'jquery';\n\nimport {\n Component,\n ComponentFactoryResolver,\n Type,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ModalComponent as BaseModalComponent } from 'jslib/angular/components/modal.component';\nimport { Utils } from 'jslib/misc/utils';\n\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\n\n@Component({\n selector: 'app-modal',\n template: ``,\n})\nexport class ModalComponent extends BaseModalComponent {\n el: any = null;\n\n constructor(componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService) {\n super(componentFactoryResolver, messagingService);\n }\n\n ngOnDestroy() { /* Nothing */ }\n\n show(type: Type, parentContainer: ViewContainerRef, fade: boolean = true,\n setComponentParameters: (component: T) => void = null): T {\n this.parentContainer = parentContainer;\n this.fade = fade;\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(type);\n const componentRef = this.container.createComponent(factory);\n if (setComponentParameters != null) {\n setComponentParameters(componentRef.instance);\n }\n\n const modals = Array.from(document.querySelectorAll('.modal'));\n if (modals.length > 0) {\n this.el = jq(modals[0]);\n this.el.modal('show');\n\n this.el.on('show.bs.modal', () => {\n this.onShow.emit();\n this.messagingService.send('modalShow');\n });\n this.el.on('shown.bs.modal', () => {\n this.onShown.emit();\n this.messagingService.send('modalShown');\n if (!Utils.isMobileBrowser) {\n this.el.find('*[appAutoFocus]').focus();\n }\n });\n this.el.on('hide.bs.modal', () => {\n this.onClose.emit();\n this.messagingService.send('modalClose');\n });\n this.el.on('hidden.bs.modal', () => {\n this.onClosed.emit();\n this.messagingService.send('modalClosed');\n if (this.parentContainer != null) {\n this.parentContainer.clear();\n }\n });\n }\n\n return componentRef.instance;\n }\n\n close() {\n if (this.el != null) {\n this.el.modal('hide');\n }\n }\n}\n","import { BreachAccountResponse } from '../models/response/breachAccountResponse';\n\nexport abstract class AuditService {\n passwordLeaked: (password: string) => Promise;\n breachedAccounts: (username: string) => Promise;\n}\n","import { View } from './view';\n\nimport { Card } from '../domain/card';\n\nexport class CardView implements View {\n cardholderName: string = null;\n expMonth: string = null;\n expYear: string = null;\n code: string = null;\n\n // tslint:disable\n private _brand: string = null;\n private _number: string = null;\n private _subTitle: string = null;\n // tslint:enable\n\n constructor(c?: Card) {\n // ctor\n }\n\n get maskedCode(): string {\n return this.code != null ? '•'.repeat(this.code.length) : null;\n }\n\n get brand(): string {\n return this._brand;\n }\n set brand(value: string) {\n this._brand = value;\n this._subTitle = null;\n }\n\n get number(): string {\n return this._number;\n }\n set number(value: string) {\n this._number = value;\n this._subTitle = null;\n }\n\n get subTitle(): string {\n if (this._subTitle == null) {\n this._subTitle = this.brand;\n if (this.number != null && this.number.length >= 4) {\n if (this._subTitle != null && this._subTitle !== '') {\n this._subTitle += ', ';\n } else {\n this._subTitle = '';\n }\n\n // Show last 5 on amex, last 4 for all others\n const count = this.number.length >= 5 && this.number.match(new RegExp('^3[47]')) != null ? 5 : 4;\n this._subTitle += ('*' + this.number.substr(this.number.length - count));\n }\n }\n return this._subTitle;\n }\n\n get expiration(): string {\n if (!this.expMonth && !this.expYear) {\n return null;\n }\n\n let exp = this.expMonth != null ? ('0' + this.expMonth).slice(-2) : '__';\n exp += (' / ' + (this.expYear != null ? this.formatYear(this.expYear) : '____'));\n return exp;\n }\n\n private formatYear(year: string): string {\n return year.length === 2 ? '20' + year : year;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { View } from './view';\n\nimport { SecureNote } from '../domain/secureNote';\n\nexport class SecureNoteView implements View {\n type: SecureNoteType = null;\n\n constructor(n?: SecureNote) {\n if (!n) {\n return;\n }\n\n this.type = n.type;\n }\n\n get subTitle(): string {\n return null;\n }\n}\n","export abstract class TokenService {\n token: string;\n decodedToken: any;\n refreshToken: string;\n setTokens: (accessToken: string, refreshToken: string) => Promise;\n setToken: (token: string) => Promise;\n getToken: () => Promise;\n setRefreshToken: (refreshToken: string) => Promise;\n getRefreshToken: () => Promise;\n toggleTokens: () => Promise;\n setTwoFactorToken: (token: string, email: string) => Promise;\n getTwoFactorToken: (email: string) => Promise;\n clearTwoFactorToken: (email: string) => Promise;\n clearToken: () => Promise;\n decodeToken: () => any;\n getTokenExpirationDate: () => Date;\n tokenSecondsRemaining: (offsetSeconds?: number) => number;\n tokenNeedsRefresh: (minutes?: number) => boolean;\n getUserId: () => string;\n getEmail: () => string;\n getEmailVerified: () => boolean;\n getName: () => string;\n getPremium: () => boolean;\n getIssuer: () => string;\n}\n","import { DecryptParameters } from '../models/domain/decryptParameters';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nexport abstract class CryptoFunctionService {\n pbkdf2: (password: string | ArrayBuffer, salt: string | ArrayBuffer, algorithm: 'sha256' | 'sha512',\n iterations: number) => Promise;\n hkdf: (ikm: ArrayBuffer, salt: string | ArrayBuffer, info: string | ArrayBuffer,\n outputByteSize: number, algorithm: 'sha256' | 'sha512') => Promise;\n hkdfExpand: (prk: ArrayBuffer, info: string | ArrayBuffer, outputByteSize: number,\n algorithm: 'sha256' | 'sha512') => Promise;\n hash: (value: string | ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5') => Promise;\n hmac: (value: ArrayBuffer, key: ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512') => Promise;\n compare: (a: ArrayBuffer, b: ArrayBuffer) => Promise;\n hmacFast: (value: ArrayBuffer | string, key: ArrayBuffer | string, algorithm: 'sha1' | 'sha256' | 'sha512') =>\n Promise;\n compareFast: (a: ArrayBuffer | string, b: ArrayBuffer | string) => Promise;\n aesEncrypt: (data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer) => Promise;\n aesDecryptFastParameters: (data: string, iv: string, mac: string, key: SymmetricCryptoKey) =>\n DecryptParameters;\n aesDecryptFast: (parameters: DecryptParameters) => Promise;\n aesDecrypt: (data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer) => Promise;\n rsaEncrypt: (data: ArrayBuffer, publicKey: ArrayBuffer, algorithm: 'sha1' | 'sha256') => Promise;\n rsaDecrypt: (data: ArrayBuffer, privateKey: ArrayBuffer, algorithm: 'sha1' | 'sha256') => Promise;\n rsaExtractPublicKey: (privateKey: ArrayBuffer) => Promise;\n rsaGenerateKeyPair: (length: 1024 | 2048 | 4096) => Promise<[ArrayBuffer, ArrayBuffer]>;\n randomBytes: (length: number) => Promise;\n}\n","import { EncryptionType } from '../../enums/encryptionType';\n\nimport { CryptoService } from '../../abstractions/crypto.service';\n\nimport { Utils } from '../../misc/utils';\n\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class CipherString {\n encryptedString?: string;\n encryptionType?: EncryptionType;\n decryptedValue?: string;\n data?: string;\n iv?: string;\n mac?: string;\n\n constructor(encryptedStringOrType: string | EncryptionType, data?: string, iv?: string, mac?: string) {\n if (data != null) {\n // data and header\n const encType = encryptedStringOrType as EncryptionType;\n\n if (iv != null) {\n this.encryptedString = encType + '.' + iv + '|' + data;\n } else {\n this.encryptedString = encType + '.' + data;\n }\n\n // mac\n if (mac != null) {\n this.encryptedString += ('|' + mac);\n }\n\n this.encryptionType = encType;\n this.data = data;\n this.iv = iv;\n this.mac = mac;\n\n return;\n }\n\n this.encryptedString = encryptedStringOrType as string;\n if (!this.encryptedString) {\n return;\n }\n\n const headerPieces = this.encryptedString.split('.');\n let encPieces: string[] = null;\n\n if (headerPieces.length === 2) {\n try {\n this.encryptionType = parseInt(headerPieces[0], null);\n encPieces = headerPieces[1].split('|');\n } catch (e) {\n return;\n }\n } else {\n encPieces = this.encryptedString.split('|');\n this.encryptionType = encPieces.length === 3 ? EncryptionType.AesCbc128_HmacSha256_B64 :\n EncryptionType.AesCbc256_B64;\n }\n\n switch (this.encryptionType) {\n case EncryptionType.AesCbc128_HmacSha256_B64:\n case EncryptionType.AesCbc256_HmacSha256_B64:\n if (encPieces.length !== 3) {\n return;\n }\n\n this.iv = encPieces[0];\n this.data = encPieces[1];\n this.mac = encPieces[2];\n break;\n case EncryptionType.AesCbc256_B64:\n if (encPieces.length !== 2) {\n return;\n }\n\n this.iv = encPieces[0];\n this.data = encPieces[1];\n break;\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_B64:\n if (encPieces.length !== 1) {\n return;\n }\n\n this.data = encPieces[0];\n break;\n default:\n return;\n }\n }\n\n async decrypt(orgId: string, key: SymmetricCryptoKey = null): Promise {\n if (this.decryptedValue != null) {\n return this.decryptedValue;\n }\n\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error('global bitwardenContainerService not initialized.');\n }\n\n try {\n if (key == null) {\n key = await cryptoService.getOrgKey(orgId);\n }\n this.decryptedValue = await cryptoService.decryptToUtf8(this, key);\n } catch (e) {\n this.decryptedValue = '[error: cannot decrypt]';\n }\n return this.decryptedValue;\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n} from '@angular/core';\n\nimport { CipherType } from '../../enums/cipherType';\n\nimport { CipherView } from '../../models/view/cipherView';\n\nimport { EnvironmentService } from '../../abstractions/environment.service';\nimport { StateService } from '../../abstractions/state.service';\n\nimport { ConstantsService } from '../../services/constants.service';\n\nimport { Utils } from '../../misc/utils';\n\nconst IconMap: any = {\n 'fa-globe': String.fromCharCode(0xf0ac),\n 'fa-sticky-note-o': String.fromCharCode(0xf24a),\n 'fa-id-card-o': String.fromCharCode(0xf2c3),\n 'fa-credit-card': String.fromCharCode(0xf09d),\n 'fa-android': String.fromCharCode(0xf17b),\n 'fa-apple': String.fromCharCode(0xf179),\n};\n\n@Component({\n selector: 'app-vault-icon',\n templateUrl: 'icon.component.html',\n})\nexport class IconComponent implements OnChanges {\n @Input() cipher: CipherView;\n icon: string;\n image: string;\n fallbackImage: string;\n imageEnabled: boolean;\n\n private iconsUrl: string;\n\n constructor(environmentService: EnvironmentService, protected stateService: StateService) {\n this.iconsUrl = environmentService.iconsUrl;\n if (!this.iconsUrl) {\n if (environmentService.baseUrl) {\n this.iconsUrl = environmentService.baseUrl + '/icons';\n } else {\n this.iconsUrl = 'https://icons.bitwarden.net';\n }\n }\n }\n\n async ngOnChanges() {\n this.imageEnabled = !(await this.stateService.get(ConstantsService.disableFaviconKey));\n this.load();\n }\n\n get iconCode(): string {\n return IconMap[this.icon];\n }\n\n protected load() {\n switch (this.cipher.type) {\n case CipherType.Login:\n this.icon = 'fa-globe';\n this.setLoginIcon();\n break;\n case CipherType.SecureNote:\n this.icon = 'fa-sticky-note-o';\n break;\n case CipherType.Card:\n this.icon = 'fa-credit-card';\n break;\n case CipherType.Identity:\n this.icon = 'fa-id-card-o';\n break;\n default:\n break;\n }\n }\n\n private setLoginIcon() {\n if (this.cipher.login.uri) {\n let hostnameUri = this.cipher.login.uri;\n let isWebsite = false;\n\n if (hostnameUri.indexOf('androidapp://') === 0) {\n this.icon = 'fa-android';\n this.image = null;\n } else if (hostnameUri.indexOf('iosapp://') === 0) {\n this.icon = 'fa-apple';\n this.image = null;\n } else if (this.imageEnabled && hostnameUri.indexOf('://') === -1 && hostnameUri.indexOf('.') > -1) {\n hostnameUri = 'http://' + hostnameUri;\n isWebsite = true;\n } else if (this.imageEnabled) {\n isWebsite = hostnameUri.indexOf('http') === 0 && hostnameUri.indexOf('.') > -1;\n }\n\n if (this.imageEnabled && isWebsite) {\n try {\n this.image = this.iconsUrl + '/' + Utils.getHostname(hostnameUri) + '/icon.png';\n this.fallbackImage = 'images/fa-globe.png';\n } catch (e) { }\n }\n } else {\n this.image = null;\n }\n }\n}\n","
\n \"\"\n \n
\n","import { Injectable } from '@angular/core';\n\nimport { BroadcasterService as BaseBroadcasterService } from '../../services/broadcaster.service';\n\n@Injectable()\nexport class BroadcasterService extends BaseBroadcasterService {\n}\n","import { CipherString } from '../models/domain/cipherString';\n\nexport abstract class VaultTimeoutService {\n biometricLocked: boolean;\n pinProtectedKey: CipherString;\n isLocked: () => Promise;\n checkVaultTimeout: () => Promise;\n lock: (allowSoftLock?: boolean) => Promise;\n logOut: () => Promise;\n setVaultTimeoutOptions: (vaultTimeout: number, vaultTimeoutAction: string) => Promise;\n isPinLockSet: () => Promise<[boolean, boolean]>;\n isBiometricLockSet: () => Promise;\n clear: () => Promise;\n}\n","export enum SecureNoteType {\n Generic = 0,\n}\n","export enum TwoFactorProviderType {\n Authenticator = 0,\n Email = 1,\n Duo = 2,\n Yubikey = 3,\n U2f = 4,\n Remember = 5,\n OrganizationDuo = 6,\n}\n","export abstract class TotpService {\n getCode: (key: string) => Promise;\n getTimeInterval: (key: string) => number;\n isAutoCopyEnabled: () => Promise;\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { PaymentMethodType } from 'jslib/enums/paymentMethodType';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { WebConstants } from '../../services/webConstants';\n\nconst StripeElementStyle = {\n base: {\n color: '#333333',\n fontFamily: '\"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif, ' +\n '\"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\n fontSize: '14px',\n fontSmoothing: 'antialiased',\n },\n invalid: {\n color: '#333333',\n },\n};\n\nconst StripeElementClasses = {\n focus: 'is-focused',\n empty: 'is-empty',\n invalid: 'is-invalid',\n};\n\n@Component({\n selector: 'app-payment',\n templateUrl: 'payment.component.html',\n})\nexport class PaymentComponent implements OnInit {\n @Input() showMethods = true;\n @Input() showOptions = true;\n @Input() method = PaymentMethodType.Card;\n @Input() hideBank = false;\n @Input() hidePaypal = false;\n @Input() hideCredit = false;\n\n bank: any = {\n routing_number: null,\n account_number: null,\n account_holder_name: null,\n account_holder_type: '',\n currency: 'USD',\n country: 'US',\n };\n\n paymentMethodType = PaymentMethodType;\n\n private btScript: HTMLScriptElement;\n private btInstance: any = null;\n private stripeScript: HTMLScriptElement;\n private stripe: any = null;\n private stripeElements: any = null;\n private stripeCardNumberElement: any = null;\n private stripeCardExpiryElement: any = null;\n private stripeCardCvcElement: any = null;\n\n constructor(private platformUtilsService: PlatformUtilsService, private apiService: ApiService) {\n this.stripeScript = window.document.createElement('script');\n this.stripeScript.src = 'https://js.stripe.com/v3/';\n this.stripeScript.async = true;\n this.stripeScript.onload = () => {\n this.stripe = (window as any).Stripe(this.platformUtilsService.isDev() ?\n WebConstants.stripeTestKey : WebConstants.stripeLiveKey);\n this.stripeElements = this.stripe.elements();\n this.setStripeElement();\n };\n this.btScript = window.document.createElement('script');\n this.btScript.src = 'scripts/dropin.js';\n this.btScript.async = true;\n }\n\n ngOnInit() {\n if (!this.showOptions) {\n this.hidePaypal = this.method !== PaymentMethodType.PayPal;\n this.hideBank = this.method !== PaymentMethodType.BankAccount;\n this.hideCredit = this.method !== PaymentMethodType.Credit;\n }\n window.document.head.appendChild(this.stripeScript);\n if (!this.hidePaypal) {\n window.document.head.appendChild(this.btScript);\n }\n }\n\n ngOnDestroy() {\n window.document.head.removeChild(this.stripeScript);\n window.setTimeout(() => {\n Array.from(window.document.querySelectorAll('iframe')).forEach(el => {\n if (el.src != null && el.src.indexOf('stripe') > -1) {\n try {\n window.document.body.removeChild(el);\n } catch { }\n }\n });\n }, 500);\n if (!this.hidePaypal) {\n window.document.head.removeChild(this.btScript);\n window.setTimeout(() => {\n Array.from(window.document.head.querySelectorAll('script')).forEach(el => {\n if (el.src != null && el.src.indexOf('paypal') > -1) {\n try {\n window.document.head.removeChild(el);\n } catch { }\n }\n });\n const btStylesheet = window.document.head.querySelector('#braintree-dropin-stylesheet');\n if (btStylesheet != null) {\n try {\n window.document.head.removeChild(btStylesheet);\n } catch { }\n }\n }, 500);\n }\n }\n\n changeMethod() {\n this.btInstance = null;\n\n if (this.method === PaymentMethodType.PayPal) {\n window.setTimeout(() => {\n (window as any).braintree.dropin.create({\n authorization: this.platformUtilsService.isDev() ?\n WebConstants.btSandboxKey : WebConstants.btProductionKey,\n container: '#bt-dropin-container',\n paymentOptionPriority: ['paypal'],\n paypal: {\n flow: 'vault',\n buttonStyle: {\n label: 'pay',\n size: 'medium',\n shape: 'pill',\n color: 'blue',\n },\n },\n }, (createErr: any, instance: any) => {\n if (createErr != null) {\n // tslint:disable-next-line\n console.error(createErr);\n return;\n }\n this.btInstance = instance;\n });\n }, 250);\n } else {\n this.setStripeElement();\n }\n }\n\n createPaymentToken(): Promise<[string, PaymentMethodType]> {\n return new Promise((resolve, reject) => {\n if (this.method === PaymentMethodType.Credit) {\n resolve([null, this.method]);\n } else if (this.method === PaymentMethodType.PayPal) {\n this.btInstance.requestPaymentMethod().then((payload: any) => {\n resolve([payload.nonce, this.method]);\n }).catch((err: any) => {\n reject(err.message);\n });\n } else if (this.method === PaymentMethodType.Card || this.method === PaymentMethodType.BankAccount) {\n if (this.method === PaymentMethodType.Card) {\n this.apiService.postSetupPayment().then(clientSecret =>\n this.stripe.handleCardSetup(clientSecret, this.stripeCardNumberElement))\n .then((result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.setupIntent && result.setupIntent.status === 'succeeded') {\n resolve([result.setupIntent.payment_method, this.method]);\n } else {\n reject();\n }\n });\n } else {\n this.stripe.createToken('bank_account', this.bank).then((result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.token && result.token.id != null) {\n resolve([result.token.id, this.method]);\n } else {\n reject();\n }\n });\n }\n }\n });\n }\n\n handleStripeCardPayment(clientSecret: string, successCallback: () => Promise): Promise {\n return new Promise((resolve, reject) => {\n if (this.showMethods && this.stripeCardNumberElement == null) {\n reject();\n return;\n }\n const handleCardPayment = () => this.showMethods ?\n this.stripe.handleCardSetup(clientSecret, this.stripeCardNumberElement) :\n this.stripe.handleCardSetup(clientSecret);\n return handleCardPayment().then(async (result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.paymentIntent && result.paymentIntent.status === 'succeeded') {\n if (successCallback != null) {\n await successCallback();\n }\n resolve();\n } else {\n reject();\n }\n });\n });\n }\n\n private setStripeElement() {\n window.setTimeout(() => {\n if (this.showMethods && this.method === PaymentMethodType.Card) {\n if (this.stripeCardNumberElement == null) {\n this.stripeCardNumberElement = this.stripeElements.create('cardNumber', {\n style: StripeElementStyle,\n classes: StripeElementClasses,\n placeholder: '',\n });\n }\n if (this.stripeCardExpiryElement == null) {\n this.stripeCardExpiryElement = this.stripeElements.create('cardExpiry', {\n style: StripeElementStyle,\n classes: StripeElementClasses,\n });\n }\n if (this.stripeCardCvcElement == null) {\n this.stripeCardCvcElement = this.stripeElements.create('cardCvc', {\n style: StripeElementStyle,\n classes: StripeElementClasses,\n placeholder: '',\n });\n }\n this.stripeCardNumberElement.mount('#stripe-card-number-element');\n this.stripeCardExpiryElement.mount('#stripe-card-expiry-element');\n this.stripeCardCvcElement.mount('#stripe-card-cvc-element');\n }\n }, 50);\n }\n}\n","
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n
\n \n
\n
\n
\n \"Visa,\n
\n
\n \n
\n
\n
\n
\n \n \n \n \n
\n
\n
\n
\n
\n\n \n {{'verifyBankAccountInitialDesc' | i18n}} {{'verifyBankAccountFailureWarning' | i18n}}\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n\n
\n
\n {{'paypalClickSubmit' | i18n}}\n
\n
\n\n \n {{'makeSureEnoughCredit' | i18n}}\n \n\n","export enum FieldType {\n Text = 0,\n Hidden = 1,\n Boolean = 2,\n}\n","import { View } from './view';\n\nimport { Folder } from '../domain/folder';\nimport { ITreeNodeObject } from '../domain/treeNode';\n\nexport class FolderView implements View, ITreeNodeObject {\n id: string = null;\n name: string = null;\n revisionDate: Date = null;\n\n constructor(f?: Folder) {\n if (!f) {\n return;\n }\n\n this.id = f.id;\n this.revisionDate = f.revisionDate;\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n OnInit,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { CryptoFunctionService } from 'jslib/abstractions/cryptoFunction.service';\nimport { StateService } from 'jslib/abstractions/state.service';\n\nimport { Utils } from 'jslib/misc/utils';\n\n@Component({\n selector: 'app-avatar',\n template: '',\n})\nexport class AvatarComponent implements OnChanges, OnInit {\n @Input() data: string;\n @Input() email: string;\n @Input() size = 45;\n @Input() charCount = 2;\n @Input() textColor = '#ffffff';\n @Input() fontSize = 20;\n @Input() fontWeight = 300;\n @Input() dynamic = false;\n @Input() circle = false;\n\n src: string;\n\n constructor(public sanitizer: DomSanitizer, private cryptoFunctionService: CryptoFunctionService,\n private stateService: StateService) { }\n\n ngOnInit() {\n if (!this.dynamic) {\n this.generate();\n }\n }\n\n ngOnChanges() {\n if (this.dynamic) {\n this.generate();\n }\n }\n\n private async generate() {\n const enableGravatars = await this.stateService.get('enableGravatars');\n if (enableGravatars && this.email != null) {\n const hashBytes = await this.cryptoFunctionService.hash(this.email.toLowerCase().trim(), 'md5');\n const hash = Utils.fromBufferToHex(hashBytes).toLowerCase();\n this.src = 'https://www.gravatar.com/avatar/' + hash + '?s=' + this.size + '&r=pg&d=retro';\n } else {\n let chars: string = null;\n const upperData = this.data.toUpperCase();\n\n if (this.charCount > 1) {\n chars = this.getFirstLetters(upperData, this.charCount);\n }\n if (chars == null) {\n chars = upperData.substr(0, this.charCount);\n }\n\n const charObj = this.getCharText(chars);\n const color = this.stringToColor(upperData);\n const svg = this.getSvg(this.size, color);\n svg.appendChild(charObj);\n const html = window.document.createElement('div').appendChild(svg).outerHTML;\n const svgHtml = window.btoa(unescape(encodeURIComponent(html)));\n this.src = 'data:image/svg+xml;base64,' + svgHtml;\n }\n }\n\n private stringToColor(str: string): string {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n // tslint:disable-next-line\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n }\n let color = '#';\n for (let i = 0; i < 3; i++) {\n // tslint:disable-next-line\n const value = (hash >> (i * 8)) & 0xFF;\n color += ('00' + value.toString(16)).substr(-2);\n }\n return color;\n }\n\n private getFirstLetters(data: string, count: number): string {\n const parts = data.split(' ');\n if (parts.length > 1) {\n let text = '';\n for (let i = 0; i < count; i++) {\n text += parts[i].substr(0, 1);\n }\n return text;\n }\n return null;\n }\n\n private getSvg(size: number, color: string): HTMLElement {\n const svgTag = window.document.createElement('svg');\n svgTag.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n svgTag.setAttribute('pointer-events', 'none');\n svgTag.setAttribute('width', size.toString());\n svgTag.setAttribute('height', size.toString());\n svgTag.style.backgroundColor = color;\n svgTag.style.width = size + 'px';\n svgTag.style.height = size + 'px';\n return svgTag;\n }\n\n private getCharText(character: string): HTMLElement {\n const textTag = window.document.createElement('text');\n textTag.setAttribute('text-anchor', 'middle');\n textTag.setAttribute('y', '50%');\n textTag.setAttribute('x', '50%');\n textTag.setAttribute('dy', '0.35em');\n textTag.setAttribute('pointer-events', 'auto');\n textTag.setAttribute('fill', this.textColor);\n textTag.setAttribute('font-family', '\"Open Sans\",\"Helvetica Neue\",Helvetica,Arial,' +\n 'sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\"');\n textTag.textContent = character;\n textTag.style.fontWeight = this.fontWeight.toString();\n textTag.style.fontSize = this.fontSize + 'px';\n return textTag;\n }\n}\n","import { CollectionData } from '../data/collectionData';\n\nimport { CollectionView } from '../view/collectionView';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\n\nexport class Collection extends Domain {\n id: string;\n organizationId: string;\n name: CipherString;\n externalId: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(obj?: CollectionData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n organizationId: null,\n name: null,\n externalId: null,\n readOnly: null,\n hidePasswords: null,\n }, alreadyEncrypted, ['id', 'organizationId', 'externalId', 'readOnly', 'hidePasswords']);\n }\n\n decrypt(): Promise {\n return this.decryptObj(new CollectionView(this), {\n name: null,\n }, this.organizationId);\n }\n}\n","export enum PolicyType {\n TwoFactorAuthentication = 0, // Requires users to have 2fa enabled\n MasterPassword = 1, // Sets minimum requirements for master password complexity\n PasswordGenerator = 2, // Sets minimum requirements/default type for generated passwords/passphrases\n SingleOrg = 3, // Allows users to only be apart of one organization\n RequireSso = 4, // Requires users to authenticate with SSO\n PersonalOwnership = 5, // Disables personal vault ownership for adding/cloning items\n DisableSend = 6, // Disables the ability to create and edit Bitwarden Sends\n}\n","import {\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { OrganizationTaxInfoUpdateRequest } from 'jslib/models/request/organizationTaxInfoUpdateRequest';\nimport { TaxInfoUpdateRequest } from 'jslib/models/request/taxInfoUpdateRequest';\nimport { TaxRateResponse } from 'jslib/models/response/taxRateResponse';\n\n@Component({\n selector: 'app-tax-info',\n templateUrl: 'tax-info.component.html',\n})\nexport class TaxInfoComponent {\n @Output() onCountryChanged = new EventEmitter();\n\n loading: boolean = true;\n organizationId: string;\n taxInfo: any = {\n taxId: null,\n line1: null,\n line2: null,\n city: null,\n state: null,\n postalCode: null,\n country: 'US',\n includeTaxId: false,\n };\n\n taxRates: TaxRateResponse[];\n\n private pristine: any = {\n taxId: null,\n line1: null,\n line2: null,\n city: null,\n state: null,\n postalCode: null,\n country: 'US',\n includeTaxId: false,\n };\n\n constructor(private apiService: ApiService, private route: ActivatedRoute) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n if (this.organizationId) {\n try {\n const taxInfo = await this.apiService.getOrganizationTaxInfo(this.organizationId);\n if (taxInfo) {\n this.taxInfo.taxId = taxInfo.taxId;\n this.taxInfo.state = taxInfo.state;\n this.taxInfo.line1 = taxInfo.line1;\n this.taxInfo.line2 = taxInfo.line2;\n this.taxInfo.city = taxInfo.city;\n this.taxInfo.state = taxInfo.state;\n this.taxInfo.postalCode = taxInfo.postalCode;\n this.taxInfo.country = taxInfo.country || 'US';\n this.taxInfo.includeTaxId = this.taxInfo.country !== 'US' && (\n !!taxInfo.taxId\n || !!taxInfo.line1\n || !!taxInfo.line2\n || !!taxInfo.city\n || !!taxInfo.state);\n }\n } catch { }\n } else {\n const taxInfo = await this.apiService.getTaxInfo();\n if (taxInfo) {\n this.taxInfo.postalCode = taxInfo.postalCode;\n this.taxInfo.country = taxInfo.country || 'US';\n }\n }\n this.pristine = Object.assign({}, this.taxInfo);\n // If not the default (US) then trigger onCountryChanged\n if (this.taxInfo.country !== 'US') {\n this.onCountryChanged.emit();\n }\n });\n\n const taxRates = await this.apiService.getTaxRates();\n this.taxRates = taxRates.data;\n this.loading = false;\n }\n\n get taxRate() {\n if (this.taxRates != null) {\n const localTaxRate = this.taxRates.find(x =>\n x.country === this.taxInfo.country &&\n x.postalCode === this.taxInfo.postalCode\n );\n return localTaxRate?.rate ?? null;\n }\n }\n\n getTaxInfoRequest(): TaxInfoUpdateRequest {\n if (this.organizationId) {\n const request = new OrganizationTaxInfoUpdateRequest();\n request.taxId = this.taxInfo.taxId;\n request.state = this.taxInfo.state;\n request.line1 = this.taxInfo.line1;\n request.line2 = this.taxInfo.line2;\n request.city = this.taxInfo.city;\n request.state = this.taxInfo.state;\n request.postalCode = this.taxInfo.postalCode;\n request.country = this.taxInfo.country;\n return request;\n } else {\n const request = new TaxInfoUpdateRequest();\n request.postalCode = this.taxInfo.postalCode;\n request.country = this.taxInfo.country;\n return request;\n }\n }\n\n submitTaxInfo(): Promise {\n if (!this.hasChanged()) {\n return new Promise(resolve => { resolve(); });\n }\n const request = this.getTaxInfoRequest();\n return this.organizationId ? this.apiService.putOrganizationTaxInfo(this.organizationId,\n request as OrganizationTaxInfoUpdateRequest) : this.apiService.putTaxInfo(request);\n }\n\n changeCountry() {\n if (this.taxInfo.country === 'US') {\n this.taxInfo.includeTaxId = false;\n this.taxInfo.taxId = null;\n this.taxInfo.line1 = null;\n this.taxInfo.line2 = null;\n this.taxInfo.city = null;\n this.taxInfo.state = null;\n }\n this.onCountryChanged.emit();\n }\n\n private hasChanged(): boolean {\n for (const key in this.taxInfo) {\n if (this.pristine.hasOwnProperty(key) && this.pristine[key] !== this.taxInfo[key]) {\n return true;\n }\n }\n return false;\n }\n}\n","
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n","import { CipherType } from '../../enums/cipherType';\n\nimport { Cipher } from '../domain/cipher';\n\nimport { AttachmentView } from './attachmentView';\nimport { CardView } from './cardView';\nimport { FieldView } from './fieldView';\nimport { IdentityView } from './identityView';\nimport { LoginView } from './loginView';\nimport { PasswordHistoryView } from './passwordHistoryView';\nimport { SecureNoteView } from './secureNoteView';\nimport { View } from './view';\n\nexport class CipherView implements View {\n id: string = null;\n organizationId: string = null;\n folderId: string = null;\n name: string = null;\n notes: string = null;\n type: CipherType = null;\n favorite = false;\n organizationUseTotp = false;\n edit = false;\n viewPassword = true;\n localData: any;\n login = new LoginView();\n identity = new IdentityView();\n card = new CardView();\n secureNote = new SecureNoteView();\n attachments: AttachmentView[] = null;\n fields: FieldView[] = null;\n passwordHistory: PasswordHistoryView[] = null;\n collectionIds: string[] = null;\n revisionDate: Date = null;\n deletedDate: Date = null;\n\n constructor(c?: Cipher) {\n if (!c) {\n return;\n }\n\n this.id = c.id;\n this.organizationId = c.organizationId;\n this.folderId = c.folderId;\n this.favorite = c.favorite;\n this.organizationUseTotp = c.organizationUseTotp;\n this.edit = c.edit;\n this.viewPassword = c.viewPassword;\n this.type = c.type;\n this.localData = c.localData;\n this.collectionIds = c.collectionIds;\n this.revisionDate = c.revisionDate;\n this.deletedDate = c.deletedDate;\n }\n\n get subTitle(): string {\n switch (this.type) {\n case CipherType.Login:\n return this.login.subTitle;\n case CipherType.SecureNote:\n return this.secureNote.subTitle;\n case CipherType.Card:\n return this.card.subTitle;\n case CipherType.Identity:\n return this.identity.subTitle;\n default:\n break;\n }\n\n return null;\n }\n\n get hasPasswordHistory(): boolean {\n return this.passwordHistory && this.passwordHistory.length > 0;\n }\n\n get hasAttachments(): boolean {\n return this.attachments && this.attachments.length > 0;\n }\n\n get hasOldAttachments(): boolean {\n if (this.hasAttachments) {\n for (let i = 0; i < this.attachments.length; i++) {\n if (this.attachments[i].key == null) {\n return true;\n }\n }\n }\n return false;\n }\n\n get hasFields(): boolean {\n return this.fields && this.fields.length > 0;\n }\n\n get passwordRevisionDisplayDate(): Date {\n if (this.type !== CipherType.Login || this.login == null) {\n return null;\n } else if (this.login.password == null || this.login.password === '') {\n return null;\n }\n return this.login.passwordRevisionDate;\n }\n\n get isDeleted(): boolean {\n return this.deletedDate != null;\n }\n}\n","import { View } from './view';\n\nimport { Identity } from '../domain/identity';\n\nimport { Utils } from '../../misc/utils';\n\nexport class IdentityView implements View {\n title: string = null;\n middleName: string = null;\n address1: string = null;\n address2: string = null;\n address3: string = null;\n city: string = null;\n state: string = null;\n postalCode: string = null;\n country: string = null;\n company: string = null;\n email: string = null;\n phone: string = null;\n ssn: string = null;\n username: string = null;\n passportNumber: string = null;\n licenseNumber: string = null;\n\n // tslint:disable\n private _firstName: string = null;\n private _lastName: string = null;\n private _subTitle: string = null;\n // tslint:enable\n\n constructor(i?: Identity) {\n // ctor\n }\n\n get firstName(): string {\n return this._firstName;\n }\n set firstName(value: string) {\n this._firstName = value;\n this._subTitle = null;\n }\n\n get lastName(): string {\n return this._lastName;\n }\n set lastName(value: string) {\n this._lastName = value;\n this._subTitle = null;\n }\n\n get subTitle(): string {\n if (this._subTitle == null && (this.firstName != null || this.lastName != null)) {\n this._subTitle = '';\n if (this.firstName != null) {\n this._subTitle = this.firstName;\n }\n if (this.lastName != null) {\n if (this._subTitle !== '') {\n this._subTitle += ' ';\n }\n this._subTitle += this.lastName;\n }\n }\n\n return this._subTitle;\n }\n\n get fullName(): string {\n if (this.title != null || this.firstName != null || this.middleName != null || this.lastName != null) {\n let name = '';\n if (this.title != null) {\n name += (this.title + ' ');\n }\n if (this.firstName != null) {\n name += (this.firstName + ' ');\n }\n if (this.middleName != null) {\n name += (this.middleName + ' ');\n }\n if (this.lastName != null) {\n name += this.lastName;\n }\n return name.trim();\n }\n\n return null;\n }\n\n get fullAddress(): string {\n let address = this.address1;\n if (!Utils.isNullOrWhitespace(this.address2)) {\n if (!Utils.isNullOrWhitespace(address)) {\n address += ', ';\n }\n address += this.address2;\n }\n if (!Utils.isNullOrWhitespace(this.address3)) {\n if (!Utils.isNullOrWhitespace(address)) {\n address += ', ';\n }\n address += this.address3;\n }\n return address;\n }\n\n get fullAddressPart2(): string {\n if (this.city == null && this.state == null && this.postalCode == null) {\n return null;\n }\n const city = this.city || '-';\n const state = this.state;\n const postalCode = this.postalCode || '-';\n let addressPart2 = city;\n if (!Utils.isNullOrWhitespace(state)) {\n addressPart2 += ', ' + state;\n }\n addressPart2 += ', ' + postalCode;\n return addressPart2;\n }\n}\n","import { CollectionDetailsResponse } from '../response/collectionResponse';\n\nexport class CollectionData {\n id: string;\n organizationId: string;\n name: string;\n externalId: string;\n readOnly: boolean;\n\n constructor(response: CollectionDetailsResponse) {\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.name = response.name;\n this.externalId = response.externalId;\n this.readOnly = response.readOnly;\n }\n}\n","import { View } from './view';\n\nimport { Collection } from '../domain/collection';\nimport { ITreeNodeObject } from '../domain/treeNode';\n\nimport { CollectionGroupDetailsResponse } from '../response/collectionResponse';\n\nexport class CollectionView implements View, ITreeNodeObject {\n id: string = null;\n organizationId: string = null;\n name: string = null;\n externalId: string = null;\n readOnly: boolean = null;\n hidePasswords: boolean = null;\n\n constructor(c?: Collection | CollectionGroupDetailsResponse) {\n if (!c) {\n return;\n }\n\n this.id = c.id;\n this.organizationId = c.organizationId;\n this.externalId = c.externalId;\n if (c instanceof Collection) {\n this.readOnly = c.readOnly;\n this.hidePasswords = c.hidePasswords;\n }\n }\n}\n","export enum OrganizationUserStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n}\n","import { CipherType } from '../../enums/cipherType';\n\nimport { AttachmentData } from './attachmentData';\nimport { CardData } from './cardData';\nimport { FieldData } from './fieldData';\nimport { IdentityData } from './identityData';\nimport { LoginData } from './loginData';\nimport { PasswordHistoryData } from './passwordHistoryData';\nimport { SecureNoteData } from './secureNoteData';\n\nimport { CipherResponse } from '../response/cipherResponse';\n\nexport class CipherData {\n id: string;\n organizationId: string;\n folderId: string;\n userId: string;\n edit: boolean;\n viewPassword: boolean;\n organizationUseTotp: boolean;\n favorite: boolean;\n revisionDate: string;\n type: CipherType;\n sizeName: string;\n name: string;\n notes: string;\n login?: LoginData;\n secureNote?: SecureNoteData;\n card?: CardData;\n identity?: IdentityData;\n fields?: FieldData[];\n attachments?: AttachmentData[];\n passwordHistory?: PasswordHistoryData[];\n collectionIds?: string[];\n deletedDate: string;\n\n constructor(response?: CipherResponse, userId?: string, collectionIds?: string[]) {\n if (response == null) {\n return;\n }\n\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.folderId = response.folderId;\n this.userId = userId;\n this.edit = response.edit;\n this.viewPassword = response.viewPassword;\n this.organizationUseTotp = response.organizationUseTotp;\n this.favorite = response.favorite;\n this.revisionDate = response.revisionDate;\n this.type = response.type;\n this.name = response.name;\n this.notes = response.notes;\n this.collectionIds = collectionIds != null ? collectionIds : response.collectionIds;\n this.deletedDate = response.deletedDate;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new LoginData(response.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteData(response.secureNote);\n break;\n case CipherType.Card:\n this.card = new CardData(response.card);\n break;\n case CipherType.Identity:\n this.identity = new IdentityData(response.identity);\n break;\n default:\n break;\n }\n\n if (response.fields != null) {\n this.fields = response.fields.map(f => new FieldData(f));\n }\n if (response.attachments != null) {\n this.attachments = response.attachments.map(a => new AttachmentData(a));\n }\n if (response.passwordHistory != null) {\n this.passwordHistory = response.passwordHistory.map(ph => new PasswordHistoryData(ph));\n }\n }\n}\n","import { LoginUriView } from './loginUriView';\nimport { View } from './view';\n\nimport { Utils } from '../../misc/utils';\nimport { Login } from '../domain/login';\n\nexport class LoginView implements View {\n username: string = null;\n password: string = null;\n passwordRevisionDate?: Date = null;\n totp: string = null;\n uris: LoginUriView[] = null;\n\n constructor(l?: Login) {\n if (!l) {\n return;\n }\n\n this.passwordRevisionDate = l.passwordRevisionDate;\n }\n\n get uri(): string {\n return this.hasUris ? this.uris[0].uri : null;\n }\n\n get maskedPassword(): string {\n return this.password != null ? '••••••••' : null;\n }\n\n get subTitle(): string {\n return this.username;\n }\n\n get canLaunch(): boolean {\n return this.hasUris && this.uris.some(u => u.canLaunch);\n }\n\n get hasTotp(): boolean {\n return !Utils.isNullOrWhitespace(this.totp);\n }\n\n get launchUri(): string {\n if (this.hasUris) {\n const uri = this.uris.find(u => u.canLaunch);\n if (uri != null) {\n return uri.launchUri;\n }\n }\n return null;\n }\n\n get hasUris(): boolean {\n return this.uris != null && this.uris.length > 0;\n }\n}\n","export enum SendType {\n Text = 0,\n File = 1,\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-two-factor-verify',\n templateUrl: 'two-factor-verify.component.html',\n})\nexport class TwoFactorVerifyComponent {\n @Input() type: TwoFactorProviderType;\n @Input() organizationId: string;\n @Output() onAuthed = new EventEmitter();\n\n masterPassword: string;\n formPromise: Promise;\n\n private masterPasswordHash: string;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = this.masterPasswordHash =\n await this.cryptoService.hashPassword(this.masterPassword, null);\n\n try {\n switch (this.type) {\n case -1:\n this.formPromise = this.apiService.getTwoFactorRecover(request);\n break;\n case TwoFactorProviderType.Duo:\n case TwoFactorProviderType.OrganizationDuo:\n if (this.organizationId != null) {\n this.formPromise = this.apiService.getTwoFactorOrganizationDuo(this.organizationId, request);\n } else {\n this.formPromise = this.apiService.getTwoFactorDuo(request);\n }\n break;\n case TwoFactorProviderType.Email:\n this.formPromise = this.apiService.getTwoFactorEmail(request);\n break;\n case TwoFactorProviderType.U2f:\n this.formPromise = this.apiService.getTwoFactorU2f(request);\n break;\n case TwoFactorProviderType.Authenticator:\n this.formPromise = this.apiService.getTwoFactorAuthenticator(request);\n break;\n case TwoFactorProviderType.Yubikey:\n this.formPromise = this.apiService.getTwoFactorYubiKey(request);\n break;\n }\n\n const response = await this.formPromise;\n this.onAuthed.emit({\n response: response,\n masterPasswordHash: this.masterPasswordHash,\n });\n } catch { }\n }\n}\n","
\n
\n

{{'twoStepLoginAuthDesc' | i18n}}

\n \n \n
\n
\n \n \n
\n
\n","export abstract class ExportService {\n getExport: (format?: 'csv' | 'json' | 'encrypted_json') => Promise;\n getOrganizationExport: (organizationId: string, format?: 'csv' | 'json' | 'encrypted_json') => Promise;\n getFileName: (prefix?: string, extension?: string) => string;\n}\n","import { CipherType } from '../../enums/cipherType';\n\nimport { CipherData } from '../data/cipherData';\n\nimport { CipherView } from '../view/cipherView';\n\nimport { Attachment } from './attachment';\nimport { Card } from './card';\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\nimport { Field } from './field';\nimport { Identity } from './identity';\nimport { Login } from './login';\nimport { Password } from './password';\nimport { SecureNote } from './secureNote';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Cipher extends Domain {\n id: string;\n organizationId: string;\n folderId: string;\n name: CipherString;\n notes: CipherString;\n type: CipherType;\n favorite: boolean;\n organizationUseTotp: boolean;\n edit: boolean;\n viewPassword: boolean;\n revisionDate: Date;\n localData: any;\n login: Login;\n identity: Identity;\n card: Card;\n secureNote: SecureNote;\n attachments: Attachment[];\n fields: Field[];\n passwordHistory: Password[];\n collectionIds: string[];\n deletedDate: Date;\n\n constructor(obj?: CipherData, alreadyEncrypted: boolean = false, localData: any = null) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n userId: null,\n organizationId: null,\n folderId: null,\n name: null,\n notes: null,\n }, alreadyEncrypted, ['id', 'userId', 'organizationId', 'folderId']);\n\n this.type = obj.type;\n this.favorite = obj.favorite;\n this.organizationUseTotp = obj.organizationUseTotp;\n this.edit = obj.edit;\n if (obj.viewPassword != null) {\n this.viewPassword = obj.viewPassword;\n } else {\n this.viewPassword = true; // Default for already synced Ciphers without viewPassword\n }\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n this.collectionIds = obj.collectionIds;\n this.localData = localData;\n this.deletedDate = obj.deletedDate != null ? new Date(obj.deletedDate) : null;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new Login(obj.login, alreadyEncrypted);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNote(obj.secureNote, alreadyEncrypted);\n break;\n case CipherType.Card:\n this.card = new Card(obj.card, alreadyEncrypted);\n break;\n case CipherType.Identity:\n this.identity = new Identity(obj.identity, alreadyEncrypted);\n break;\n default:\n break;\n }\n\n if (obj.attachments != null) {\n this.attachments = obj.attachments.map(a => new Attachment(a, alreadyEncrypted));\n } else {\n this.attachments = null;\n }\n\n if (obj.fields != null) {\n this.fields = obj.fields.map(f => new Field(f, alreadyEncrypted));\n } else {\n this.fields = null;\n }\n\n if (obj.passwordHistory != null) {\n this.passwordHistory = obj.passwordHistory.map(ph => new Password(ph, alreadyEncrypted));\n } else {\n this.passwordHistory = null;\n }\n }\n\n async decrypt(encKey?: SymmetricCryptoKey): Promise {\n const model = new CipherView(this);\n\n await this.decryptObj(model, {\n name: null,\n notes: null,\n }, this.organizationId, encKey);\n\n switch (this.type) {\n case CipherType.Login:\n model.login = await this.login.decrypt(this.organizationId, encKey);\n break;\n case CipherType.SecureNote:\n model.secureNote = await this.secureNote.decrypt(this.organizationId, encKey);\n break;\n case CipherType.Card:\n model.card = await this.card.decrypt(this.organizationId, encKey);\n break;\n case CipherType.Identity:\n model.identity = await this.identity.decrypt(this.organizationId, encKey);\n break;\n default:\n break;\n }\n\n const orgId = this.organizationId;\n\n if (this.attachments != null && this.attachments.length > 0) {\n const attachments: any[] = [];\n await this.attachments.reduce((promise, attachment) => {\n return promise.then(() => {\n return attachment.decrypt(orgId, encKey);\n }).then(decAttachment => {\n attachments.push(decAttachment);\n });\n }, Promise.resolve());\n model.attachments = attachments;\n }\n\n if (this.fields != null && this.fields.length > 0) {\n const fields: any[] = [];\n await this.fields.reduce((promise, field) => {\n return promise.then(() => {\n return field.decrypt(orgId, encKey);\n }).then(decField => {\n fields.push(decField);\n });\n }, Promise.resolve());\n model.fields = fields;\n }\n\n if (this.passwordHistory != null && this.passwordHistory.length > 0) {\n const passwordHistory: any[] = [];\n await this.passwordHistory.reduce((promise, ph) => {\n return promise.then(() => {\n return ph.decrypt(orgId, encKey);\n }).then(decPh => {\n passwordHistory.push(decPh);\n });\n }, Promise.resolve());\n model.passwordHistory = passwordHistory;\n }\n\n return model;\n }\n\n toCipherData(userId: string): CipherData {\n const c = new CipherData();\n c.id = this.id;\n c.organizationId = this.organizationId;\n c.folderId = this.folderId;\n c.userId = this.organizationId != null ? userId : null;\n c.edit = this.edit;\n c.viewPassword = this.viewPassword;\n c.organizationUseTotp = this.organizationUseTotp;\n c.favorite = this.favorite;\n c.revisionDate = this.revisionDate != null ? this.revisionDate.toISOString() : null;\n c.type = this.type;\n c.collectionIds = this.collectionIds;\n c.deletedDate = this.deletedDate != null ? this.deletedDate.toISOString() : null;\n\n this.buildDataModel(this, c, {\n name: null,\n notes: null,\n });\n\n switch (c.type) {\n case CipherType.Login:\n c.login = this.login.toLoginData();\n break;\n case CipherType.SecureNote:\n c.secureNote = this.secureNote.toSecureNoteData();\n break;\n case CipherType.Card:\n c.card = this.card.toCardData();\n break;\n case CipherType.Identity:\n c.identity = this.identity.toIdentityData();\n break;\n default:\n break;\n }\n\n if (this.fields != null) {\n c.fields = this.fields.map(f => f.toFieldData());\n }\n if (this.attachments != null) {\n c.attachments = this.attachments.map(a => a.toAttachmentData());\n }\n if (this.passwordHistory != null) {\n c.passwordHistory = this.passwordHistory.map(ph => ph.toPasswordHistoryData());\n }\n return c;\n }\n}\n","import { SendData } from '../models/data/sendData';\n\nimport { Send } from '../models/domain/send';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { SendView } from '../models/view/sendView';\n\nexport abstract class SendService {\n decryptedSendCache: SendView[];\n\n clearCache: () => void;\n encrypt: (model: SendView, file: File | ArrayBuffer, password: string, key?: SymmetricCryptoKey) => Promise<[Send, ArrayBuffer]>;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n saveWithServer: (sendData: [Send, ArrayBuffer]) => Promise;\n upsert: (send: SendData | SendData[]) => Promise;\n replace: (sends: { [id: string]: SendData; }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n removePasswordWithServer: (id: string) => Promise;\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { View } from './view';\n\nimport { Field } from '../domain/field';\n\nexport class FieldView implements View {\n name: string = null;\n value: string = null;\n type: FieldType = null;\n newField: boolean = false; // Marks if the field is new and hasn't been saved\n showValue: boolean = false;\n\n constructor(f?: Field) {\n if (!f) {\n return;\n }\n\n this.type = f.type;\n }\n\n get maskedValue(): string {\n return this.value != null ? '••••••••' : null;\n }\n}\n","import { CipherType } from '../../enums/cipherType';\n\nimport { Cipher } from '../domain/cipher';\n\nimport { CardApi } from '../api/cardApi';\nimport { FieldApi } from '../api/fieldApi';\nimport { IdentityApi } from '../api/identityApi';\nimport { LoginApi } from '../api/loginApi';\nimport { LoginUriApi } from '../api/loginUriApi';\nimport { SecureNoteApi } from '../api/secureNoteApi';\n\nimport { AttachmentRequest } from './attachmentRequest';\nimport { PasswordHistoryRequest } from './passwordHistoryRequest';\n\nexport class CipherRequest {\n type: CipherType;\n folderId: string;\n organizationId: string;\n name: string;\n notes: string;\n favorite: boolean;\n login: LoginApi;\n secureNote: SecureNoteApi;\n card: CardApi;\n identity: IdentityApi;\n fields: FieldApi[];\n passwordHistory: PasswordHistoryRequest[];\n // Deprecated, remove at some point and rename attachments2 to attachments\n attachments: { [id: string]: string; };\n attachments2: { [id: string]: AttachmentRequest; };\n lastKnownRevisionDate: Date;\n\n constructor(cipher: Cipher) {\n this.type = cipher.type;\n this.folderId = cipher.folderId;\n this.organizationId = cipher.organizationId;\n this.name = cipher.name ? cipher.name.encryptedString : null;\n this.notes = cipher.notes ? cipher.notes.encryptedString : null;\n this.favorite = cipher.favorite;\n this.lastKnownRevisionDate = cipher.revisionDate;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new LoginApi();\n this.login.uris = null;\n this.login.username = cipher.login.username ? cipher.login.username.encryptedString : null;\n this.login.password = cipher.login.password ? cipher.login.password.encryptedString : null;\n this.login.passwordRevisionDate = cipher.login.passwordRevisionDate != null ?\n cipher.login.passwordRevisionDate.toISOString() : null;\n this.login.totp = cipher.login.totp ? cipher.login.totp.encryptedString : null;\n\n if (cipher.login.uris != null) {\n this.login.uris = cipher.login.uris.map(u => {\n const uri = new LoginUriApi();\n uri.uri = u.uri != null ? u.uri.encryptedString : null;\n uri.match = u.match != null ? u.match : null;\n return uri;\n });\n }\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteApi();\n this.secureNote.type = cipher.secureNote.type;\n break;\n case CipherType.Card:\n this.card = new CardApi();\n this.card.cardholderName = cipher.card.cardholderName != null ?\n cipher.card.cardholderName.encryptedString : null;\n this.card.brand = cipher.card.brand != null ? cipher.card.brand.encryptedString : null;\n this.card.number = cipher.card.number != null ? cipher.card.number.encryptedString : null;\n this.card.expMonth = cipher.card.expMonth != null ? cipher.card.expMonth.encryptedString : null;\n this.card.expYear = cipher.card.expYear != null ? cipher.card.expYear.encryptedString : null;\n this.card.code = cipher.card.code != null ? cipher.card.code.encryptedString : null;\n break;\n case CipherType.Identity:\n this.identity = new IdentityApi();\n this.identity.title = cipher.identity.title != null ? cipher.identity.title.encryptedString : null;\n this.identity.firstName = cipher.identity.firstName != null ?\n cipher.identity.firstName.encryptedString : null;\n this.identity.middleName = cipher.identity.middleName != null ?\n cipher.identity.middleName.encryptedString : null;\n this.identity.lastName = cipher.identity.lastName != null ?\n cipher.identity.lastName.encryptedString : null;\n this.identity.address1 = cipher.identity.address1 != null ?\n cipher.identity.address1.encryptedString : null;\n this.identity.address2 = cipher.identity.address2 != null ?\n cipher.identity.address2.encryptedString : null;\n this.identity.address3 = cipher.identity.address3 != null ?\n cipher.identity.address3.encryptedString : null;\n this.identity.city = cipher.identity.city != null ? cipher.identity.city.encryptedString : null;\n this.identity.state = cipher.identity.state != null ? cipher.identity.state.encryptedString : null;\n this.identity.postalCode = cipher.identity.postalCode != null ?\n cipher.identity.postalCode.encryptedString : null;\n this.identity.country = cipher.identity.country != null ?\n cipher.identity.country.encryptedString : null;\n this.identity.company = cipher.identity.company != null ?\n cipher.identity.company.encryptedString : null;\n this.identity.email = cipher.identity.email != null ? cipher.identity.email.encryptedString : null;\n this.identity.phone = cipher.identity.phone != null ? cipher.identity.phone.encryptedString : null;\n this.identity.ssn = cipher.identity.ssn != null ? cipher.identity.ssn.encryptedString : null;\n this.identity.username = cipher.identity.username != null ?\n cipher.identity.username.encryptedString : null;\n this.identity.passportNumber = cipher.identity.passportNumber != null ?\n cipher.identity.passportNumber.encryptedString : null;\n this.identity.licenseNumber = cipher.identity.licenseNumber != null ?\n cipher.identity.licenseNumber.encryptedString : null;\n break;\n default:\n break;\n }\n\n if (cipher.fields != null) {\n this.fields = cipher.fields.map(f => {\n const field = new FieldApi();\n field.type = f.type;\n field.name = f.name ? f.name.encryptedString : null;\n field.value = f.value ? f.value.encryptedString : null;\n return field;\n });\n }\n\n if (cipher.passwordHistory != null) {\n this.passwordHistory = [];\n cipher.passwordHistory.forEach(ph => {\n this.passwordHistory.push({\n lastUsedDate: ph.lastUsedDate,\n password: ph.password ? ph.password.encryptedString : null,\n });\n });\n }\n\n if (cipher.attachments != null) {\n this.attachments = {};\n this.attachments2 = {};\n cipher.attachments.forEach(attachment => {\n const fileName = attachment.fileName ? attachment.fileName.encryptedString : null;\n this.attachments[attachment.id] = fileName;\n const attachmentRequest = new AttachmentRequest();\n attachmentRequest.fileName = fileName;\n if (attachment.key != null) {\n attachmentRequest.key = attachment.key.encryptedString;\n }\n this.attachments2[attachment.id] = attachmentRequest;\n });\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport {\n ActivatedRoute,\n NavigationEnd,\n Router,\n} from '@angular/router';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\n@Injectable()\nexport class RouterService {\n private previousUrl: string = undefined;\n private currentUrl: string = undefined;\n\n constructor(private router: Router, private activatedRoute: ActivatedRoute,\n private titleService: Title, i18nService: I18nService) {\n this.currentUrl = this.router.url;\n router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.previousUrl = this.currentUrl;\n this.currentUrl = event.url;\n\n let title = i18nService.t('pageTitle', 'Bitwarden');\n let titleId: string = null;\n let rawTitle: string = null;\n let child = this.activatedRoute.firstChild;\n while (child != null) {\n if (child.firstChild != null) {\n child = child.firstChild;\n } else if (child.snapshot.data != null && child.snapshot.data.title != null) {\n rawTitle = child.snapshot.data.title;\n break;\n } else if (child.snapshot.data != null && child.snapshot.data.titleId != null) {\n titleId = child.snapshot.data.titleId;\n break;\n } else {\n titleId = null;\n rawTitle = null;\n break;\n }\n }\n\n if (titleId != null || rawTitle != null) {\n const newTitle = rawTitle != null ? rawTitle : i18nService.t(titleId);\n if (newTitle != null && newTitle !== '') {\n title = (newTitle + ' | ' + title);\n }\n }\n this.titleService.setTitle(title);\n }\n });\n }\n\n getPreviousUrl() {\n return this.previousUrl;\n }\n\n setPreviousUrl(url: string) {\n this.previousUrl = url;\n }\n}\n","export enum KdfType {\n PBKDF2_SHA256 = 0,\n}\n","import {\n Component,\n Input,\n OnChanges,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\n@Component({\n selector: 'app-password-strength',\n templateUrl: 'password-strength.component.html',\n})\nexport class PasswordStrengthComponent implements OnChanges {\n @Input() score?: number;\n @Input() showText = false;\n\n scoreWidth = 0;\n color = 'bg-danger';\n text: string;\n\n constructor(private i18nService: I18nService) { }\n\n ngOnChanges(): void {\n this.scoreWidth = this.score == null ? 0 : (this.score + 1) * 20;\n switch (this.score) {\n case 4:\n this.color = 'bg-success';\n this.text = this.i18nService.t('strong');\n break;\n case 3:\n this.color = 'bg-primary';\n this.text = this.i18nService.t('good');\n break;\n case 2:\n this.color = 'bg-warning';\n this.text = this.i18nService.t('weak');\n break;\n default:\n this.color = 'bg-danger';\n this.text = this.score != null ? this.i18nService.t('weak') : null;\n break;\n }\n }\n}\n","
\n
\n \n {{text}}\n \n
\n
\n","export enum OrganizationUserType {\n Owner = 0,\n Admin = 1,\n User = 2,\n Manager = 3,\n Custom = 4,\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\n@Pipe({\n name: 'search',\n})\nexport class SearchPipe implements PipeTransform {\n transform(items: any[], searchText: string, prop1?: string, prop2?: string, prop3?: string): any[] {\n if (items == null || items.length === 0) {\n return [];\n }\n\n if (searchText == null || searchText.length < 2) {\n return items;\n }\n\n searchText = searchText.trim().toLowerCase();\n return items.filter(i => {\n if (prop1 != null && i[prop1] != null && i[prop1].toString().toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (prop2 != null && i[prop2] != null && i[prop2].toString().toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (prop3 != null && i[prop3] != null && i[prop3].toString().toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n return false;\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { DeviceType } from 'jslib/enums/deviceType';\nimport { EventType } from 'jslib/enums/eventType';\n\nimport { EventResponse } from 'jslib/models/response/eventResponse';\n\n@Injectable()\nexport class EventService {\n constructor(private i18nService: I18nService) { }\n\n getDefaultDateFilters() {\n const d = new Date();\n const end = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59);\n d.setDate(d.getDate() - 30);\n const start = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0);\n return [this.toDateTimeLocalString(start), this.toDateTimeLocalString(end)];\n }\n\n formatDateFilters(filterStart: string, filterEnd: string) {\n const start: Date = new Date(filterStart);\n const end: Date = new Date(filterEnd + ':59.999');\n if (isNaN(start.getTime()) || isNaN(end.getTime()) || end < start) {\n throw new Error('Invalid date range.');\n }\n return [start.toISOString(), end.toISOString()];\n }\n\n getEventInfo(ev: EventResponse, options = new EventOptions()): EventInfo {\n const appInfo = this.getAppInfo(ev.deviceType);\n return {\n message: this.getEventMessage(ev, options),\n appIcon: appInfo[0],\n appName: appInfo[1],\n };\n }\n\n private getEventMessage(ev: EventResponse, options: EventOptions) {\n let msg = '';\n switch (ev.type) {\n // User\n case EventType.User_LoggedIn:\n msg = this.i18nService.t('loggedIn');\n break;\n case EventType.User_ChangedPassword:\n msg = this.i18nService.t('changedPassword');\n break;\n case EventType.User_Updated2fa:\n msg = this.i18nService.t('enabledUpdated2fa');\n break;\n case EventType.User_Disabled2fa:\n msg = this.i18nService.t('disabled2fa');\n break;\n case EventType.User_Recovered2fa:\n msg = this.i18nService.t('recovered2fa');\n break;\n case EventType.User_FailedLogIn:\n msg = this.i18nService.t('failedLogin');\n break;\n case EventType.User_FailedLogIn2fa:\n msg = this.i18nService.t('failedLogin2fa');\n break;\n case EventType.User_ClientExportedVault:\n msg = this.i18nService.t('exportedVault');\n break;\n // Cipher\n case EventType.Cipher_Created:\n msg = this.i18nService.t('createdItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_Updated:\n msg = this.i18nService.t('editedItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_Deleted:\n msg = this.i18nService.t('permanentlyDeletedItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_SoftDeleted:\n msg = this.i18nService.t('deletedItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_Restored:\n msg = this.i18nService.t('restoredItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_AttachmentCreated:\n msg = this.i18nService.t('createdAttachmentForItem', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_AttachmentDeleted:\n msg = this.i18nService.t('deletedAttachmentForItem', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_Shared:\n msg = this.i18nService.t('sharedItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientViewed:\n msg = this.i18nService.t('viewedItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientToggledPasswordVisible:\n msg = this.i18nService.t('viewedPasswordItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientToggledHiddenFieldVisible:\n msg = this.i18nService.t('viewedHiddenFieldItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientToggledCardCodeVisible:\n msg = this.i18nService.t('viewedSecurityCodeItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientCopiedHiddenField:\n msg = this.i18nService.t('copiedHiddenFieldItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientCopiedPassword:\n msg = this.i18nService.t('copiedPasswordItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientCopiedCardCode:\n msg = this.i18nService.t('copiedSecurityCodeItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientAutofilled:\n msg = this.i18nService.t('autofilledItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_UpdatedCollections:\n msg = this.i18nService.t('editedCollectionsForItem', this.formatCipherId(ev, options));\n break;\n // Collection\n case EventType.Collection_Created:\n msg = this.i18nService.t('createdCollectionId', this.formatCollectionId(ev));\n break;\n case EventType.Collection_Updated:\n msg = this.i18nService.t('editedCollectionId', this.formatCollectionId(ev));\n break;\n case EventType.Collection_Deleted:\n msg = this.i18nService.t('deletedCollectionId', this.formatCollectionId(ev));\n break;\n // Group\n case EventType.Group_Created:\n msg = this.i18nService.t('createdGroupId', this.formatGroupId(ev));\n break;\n case EventType.Group_Updated:\n msg = this.i18nService.t('editedGroupId', this.formatGroupId(ev));\n break;\n case EventType.Group_Deleted:\n msg = this.i18nService.t('deletedGroupId', this.formatGroupId(ev));\n break;\n // Org user\n case EventType.OrganizationUser_Invited:\n msg = this.i18nService.t('invitedUserId', this.formatOrgUserId(ev));\n break;\n case EventType.OrganizationUser_Confirmed:\n msg = this.i18nService.t('confirmedUserId', this.formatOrgUserId(ev));\n break;\n case EventType.OrganizationUser_Updated:\n msg = this.i18nService.t('editedUserId', this.formatOrgUserId(ev));\n break;\n case EventType.OrganizationUser_Removed:\n msg = this.i18nService.t('removedUserId', this.formatOrgUserId(ev));\n break;\n case EventType.OrganizationUser_UpdatedGroups:\n msg = this.i18nService.t('editedGroupsForUser', this.formatOrgUserId(ev));\n break;\n case EventType.OrganizationUser_UnlinkedSso:\n msg = this.i18nService.t('unlinkedSsoUser', this.formatOrgUserId(ev));\n // Org\n case EventType.Organization_Updated:\n msg = this.i18nService.t('editedOrgSettings');\n break;\n case EventType.Organization_PurgedVault:\n msg = this.i18nService.t('purgedOrganizationVault');\n break;\n /*\n case EventType.Organization_ClientExportedVault:\n msg = this.i18nService.t('exportedOrganizationVault');\n break;\n */\n // Policies\n case EventType.Policy_Updated:\n msg = this.i18nService.t('modifiedPolicy', this.formatPolicyId(ev));\n break;\n\n default:\n break;\n }\n return msg === '' ? null : msg;\n }\n\n private getAppInfo(deviceType: DeviceType): [string, string] {\n switch (deviceType) {\n case DeviceType.Android:\n return ['fa-android', this.i18nService.t('mobile') + ' - Android'];\n case DeviceType.iOS:\n return ['fa-apple', this.i18nService.t('mobile') + ' - iOS'];\n case DeviceType.UWP:\n return ['fa-windows', this.i18nService.t('mobile') + ' - Windows'];\n case DeviceType.ChromeExtension:\n return ['fa-chrome', this.i18nService.t('extension') + ' - Chrome'];\n case DeviceType.FirefoxExtension:\n return ['fa-firefox', this.i18nService.t('extension') + ' - Firefox'];\n case DeviceType.OperaExtension:\n return ['fa-opera', this.i18nService.t('extension') + ' - Opera'];\n case DeviceType.EdgeExtension:\n return ['fa-edge', this.i18nService.t('extension') + ' - Edge'];\n case DeviceType.VivaldiExtension:\n return ['fa-puzzle-piece', this.i18nService.t('extension') + ' - Vivaldi'];\n case DeviceType.SafariExtension:\n return ['fa-safari', this.i18nService.t('extension') + ' - Safari'];\n case DeviceType.WindowsDesktop:\n return ['fa-windows', this.i18nService.t('desktop') + ' - Windows'];\n case DeviceType.MacOsDesktop:\n return ['fa-apple', this.i18nService.t('desktop') + ' - macOS'];\n case DeviceType.LinuxDesktop:\n return ['fa-linux', this.i18nService.t('desktop') + ' - Linux'];\n case DeviceType.ChromeBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Chrome'];\n case DeviceType.FirefoxBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Firefox'];\n case DeviceType.OperaBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Opera'];\n case DeviceType.SafariBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Safari'];\n case DeviceType.VivaldiBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Vivaldi'];\n case DeviceType.EdgeBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Edge'];\n case DeviceType.IEBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - IE'];\n case DeviceType.UnknownBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - ' + this.i18nService.t('unknown')];\n default:\n return ['fa-globe', this.i18nService.t('unknown')];\n }\n }\n\n private formatCipherId(ev: EventResponse, options: EventOptions) {\n const shortId = this.getShortId(ev.cipherId);\n if (ev.organizationId == null || !options.cipherInfo) {\n return '' + shortId + '';\n }\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/vault?search=' + shortId +\n '&viewEvents=' + ev.cipherId);\n return a.outerHTML;\n }\n\n private formatGroupId(ev: EventResponse) {\n const shortId = this.getShortId(ev.groupId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/groups?search=' + shortId);\n return a.outerHTML;\n }\n\n private formatCollectionId(ev: EventResponse) {\n const shortId = this.getShortId(ev.collectionId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/collections?search=' + shortId);\n return a.outerHTML;\n }\n\n private formatOrgUserId(ev: EventResponse) {\n const shortId = this.getShortId(ev.organizationUserId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/people?search=' + shortId +\n '&viewEvents=' + ev.organizationUserId);\n return a.outerHTML;\n }\n\n private formatPolicyId(ev: EventResponse) {\n const shortId = this.getShortId(ev.policyId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/policies?policyId=' + ev.policyId);\n return a.outerHTML;\n }\n\n private makeAnchor(shortId: string) {\n const a = document.createElement('a');\n a.title = this.i18nService.t('view');\n a.innerHTML = '' + shortId + '';\n return a;\n }\n\n private getShortId(id: string) {\n return id.substring(0, 8);\n }\n\n private toDateTimeLocalString(date: Date) {\n return date.getFullYear() +\n '-' + this.pad(date.getMonth() + 1) +\n '-' + this.pad(date.getDate()) +\n 'T' + this.pad(date.getHours()) +\n ':' + this.pad(date.getMinutes());\n }\n\n private pad(num: number) {\n const norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n }\n}\n\nexport class EventInfo {\n message: string;\n appIcon: string;\n appName: string;\n}\n\nexport class EventOptions {\n cipherInfo = true;\n}\n","export enum EventType {\n User_LoggedIn = 1000,\n User_ChangedPassword = 1001,\n User_Updated2fa = 1002,\n User_Disabled2fa = 1003,\n User_Recovered2fa = 1004,\n User_FailedLogIn = 1005,\n User_FailedLogIn2fa = 1006,\n User_ClientExportedVault = 1007,\n\n Cipher_Created = 1100,\n Cipher_Updated = 1101,\n Cipher_Deleted = 1102,\n Cipher_AttachmentCreated = 1103,\n Cipher_AttachmentDeleted = 1104,\n Cipher_Shared = 1105,\n Cipher_UpdatedCollections = 1106,\n Cipher_ClientViewed = 1107,\n Cipher_ClientToggledPasswordVisible = 1108,\n Cipher_ClientToggledHiddenFieldVisible = 1109,\n Cipher_ClientToggledCardCodeVisible = 1110,\n Cipher_ClientCopiedPassword = 1111,\n Cipher_ClientCopiedHiddenField = 1112,\n Cipher_ClientCopiedCardCode = 1113,\n Cipher_ClientAutofilled = 1114,\n Cipher_SoftDeleted = 1115,\n Cipher_Restored = 1116,\n\n Collection_Created = 1300,\n Collection_Updated = 1301,\n Collection_Deleted = 1302,\n\n Group_Created = 1400,\n Group_Updated = 1401,\n Group_Deleted = 1402,\n\n OrganizationUser_Invited = 1500,\n OrganizationUser_Confirmed = 1501,\n OrganizationUser_Updated = 1502,\n OrganizationUser_Removed = 1503,\n OrganizationUser_UpdatedGroups = 1504,\n OrganizationUser_UnlinkedSso = 1505,\n\n Organization_Updated = 1600,\n Organization_PurgedVault = 1601,\n // Organization_ClientExportedVault = 1602,\n\n Policy_Updated = 1700,\n}\n","export enum PaymentMethodType {\n Card = 0,\n BankAccount = 1,\n PayPal = 2,\n BitPay = 3,\n Credit = 4,\n WireTransfer = 5,\n AppleInApp = 6,\n GoogleInApp = 7,\n Check = 8,\n}\n","import {\n Directive,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\nimport { TwoFactorProviderRequest } from 'jslib/models/request/twoFactorProviderRequest';\n\n@Directive()\nexport abstract class TwoFactorBaseComponent {\n @Output() onUpdated = new EventEmitter();\n\n type: TwoFactorProviderType;\n organizationId: string;\n twoFactorProviderType = TwoFactorProviderType;\n enabled = false;\n authed = false;\n\n protected masterPasswordHash: string;\n\n constructor(protected apiService: ApiService, protected i18nService: I18nService,\n protected analytics: Angulartics2, protected toasterService: ToasterService,\n protected platformUtilsService: PlatformUtilsService) { }\n\n protected auth(authResponse: any) {\n this.masterPasswordHash = authResponse.masterPasswordHash;\n this.authed = true;\n }\n\n protected async enable(enableFunction: () => Promise) {\n try {\n await enableFunction();\n this.analytics.eventTrack.next({\n action: 'Enabled Two-step ' + TwoFactorProviderType[this.type].toString(),\n });\n this.onUpdated.emit(true);\n } catch { }\n }\n\n protected async disable(promise: Promise) {\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('twoStepDisableDesc'),\n this.i18nService.t('disable'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n const request = new TwoFactorProviderRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.type = this.type;\n if (this.organizationId != null) {\n promise = this.apiService.putTwoFactorOrganizationDisable(this.organizationId, request);\n } else {\n promise = this.apiService.putTwoFactorDisable(request);\n }\n await promise;\n this.enabled = false;\n this.analytics.eventTrack.next({\n action: 'Disabled Two-step ' + TwoFactorProviderType[this.type].toString(),\n });\n this.toasterService.popAsync('success', null, this.i18nService.t('twoStepDisabled'));\n this.onUpdated.emit(false);\n } catch { }\n }\n}\n","import {\n ComponentFactoryResolver,\n Directive,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { Organization } from 'jslib/models/domain/organization';\n\nimport { ModalComponent } from '../modal.component';\nimport { AddEditComponent as OrgAddEditComponent } from '../organizations/vault/add-edit.component';\nimport { AddEditComponent } from '../vault/add-edit.component';\n\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\n@Directive()\nexport class CipherReportComponent {\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n\n loading = false;\n hasLoaded = false;\n ciphers: CipherView[] = [];\n organization: Organization;\n\n private modal: ModalComponent = null;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver, protected userService: UserService,\n protected messagingService: MessagingService, public requiresPaid: boolean) { }\n\n async load() {\n this.loading = true;\n await this.setCiphers();\n this.loading = false;\n this.hasLoaded = true;\n }\n\n selectCipher(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.cipherAddEditModalRef.createComponent(factory).instance;\n let childComponent: OrgAddEditComponent | AddEditComponent;\n if (this.organization != null) {\n childComponent = this.modal.show(OrgAddEditComponent, this.cipherAddEditModalRef);\n (childComponent as OrgAddEditComponent).organization = this.organization;\n } else {\n childComponent = this.modal.show(AddEditComponent, this.cipherAddEditModalRef);\n }\n\n childComponent.cipherId = cipher == null ? null : cipher.id;\n if (this.organization != null) {\n childComponent.organizationId = this.organization.id;\n }\n childComponent.onSavedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.load();\n });\n childComponent.onDeletedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.load();\n });\n childComponent.onRestoredCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.load();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n\n return childComponent;\n }\n\n protected async checkAccess(): Promise {\n if (this.organization != null) {\n // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now\n // since all paid plans include useTotp\n if (this.requiresPaid && !this.organization.useTotp) {\n this.messagingService.send('upgradeOrganization', { organizationId: this.organization.id });\n return false;\n }\n } else {\n const accessPremium = await this.userService.canAccessPremium();\n if (this.requiresPaid && !accessPremium) {\n this.messagingService.send('premiumRequired');\n this.loading = false;\n return false;\n }\n }\n return true;\n }\n\n protected async setCiphers() {\n this.ciphers = [];\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { View } from './view';\n\nimport { LoginUri } from '../domain/loginUri';\n\nimport { Utils } from '../../misc/utils';\n\nconst CanLaunchWhitelist = [\n 'https://',\n 'http://',\n 'ssh://',\n 'ftp://',\n 'sftp://',\n 'irc://',\n 'vnc://',\n // https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-uri\n 'rdp://', // Legacy RDP URI scheme\n 'ms-rd:', // Preferred RDP URI scheme\n 'chrome://',\n 'iosapp://',\n 'androidapp://',\n];\n\nexport class LoginUriView implements View {\n match: UriMatchType = null;\n\n // tslint:disable\n private _uri: string = null;\n private _domain: string = null;\n private _hostname: string = null;\n private _host: string = null;\n private _canLaunch: boolean = null;\n // tslint:enable\n\n constructor(u?: LoginUri) {\n if (!u) {\n return;\n }\n\n this.match = u.match;\n }\n\n get uri(): string {\n return this._uri;\n }\n set uri(value: string) {\n this._uri = value;\n this._domain = null;\n this._canLaunch = null;\n }\n\n get domain(): string {\n if (this._domain == null && this.uri != null) {\n this._domain = Utils.getDomain(this.uri);\n if (this._domain === '') {\n this._domain = null;\n }\n }\n\n return this._domain;\n }\n\n get hostname(): string {\n if (this.match === UriMatchType.RegularExpression) {\n return null;\n }\n if (this._hostname == null && this.uri != null) {\n this._hostname = Utils.getHostname(this.uri);\n if (this._hostname === '') {\n this._hostname = null;\n }\n }\n\n return this._hostname;\n }\n\n get host(): string {\n if (this.match === UriMatchType.RegularExpression) {\n return null;\n }\n if (this._host == null && this.uri != null) {\n this._host = Utils.getHost(this.uri);\n if (this._host === '') {\n this._host = null;\n }\n }\n\n return this._host;\n }\n\n get hostnameOrUri(): string {\n return this.hostname != null ? this.hostname : this.uri;\n }\n\n get hostOrUri(): string {\n return this.host != null ? this.host : this.uri;\n }\n\n get isWebsite(): boolean {\n return this.uri != null && (this.uri.indexOf('http://') === 0 || this.uri.indexOf('https://') === 0 ||\n (this.uri.indexOf('://') < 0 && Utils.tldEndingRegex.test(this.uri)));\n }\n\n get canLaunch(): boolean {\n if (this._canLaunch != null) {\n return this._canLaunch;\n }\n if (this.uri != null && this.match !== UriMatchType.RegularExpression) {\n const uri = this.launchUri;\n for (let i = 0; i < CanLaunchWhitelist.length; i++) {\n if (uri.indexOf(CanLaunchWhitelist[i]) === 0) {\n this._canLaunch = true;\n return this._canLaunch;\n }\n }\n }\n this._canLaunch = false;\n return this._canLaunch;\n }\n\n get launchUri(): string {\n return this.uri.indexOf('://') < 0 && Utils.tldEndingRegex.test(this.uri) ? ('http://' + this.uri) : this.uri;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { CipherType } from 'jslib/enums/cipherType';\nimport { EventType } from 'jslib/enums/eventType';\n\nimport { AuditService } from 'jslib/abstractions/audit.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { EventService } from 'jslib/abstractions/event.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { TotpService } from 'jslib/abstractions/totp.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { AddEditComponent as BaseAddEditComponent } from 'jslib/angular/components/add-edit.component';\nimport { LoginUriView } from 'jslib/models/view/loginUriView';\n\n@Component({\n selector: 'app-vault-add-edit',\n templateUrl: 'add-edit.component.html',\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n canAccessPremium: boolean;\n totpCode: string;\n totpCodeFormatted: string;\n totpDash: number;\n totpSec: number;\n totpLow: boolean;\n showRevisionDate = false;\n hasPasswordHistory = false;\n viewingPasswordHistory = false;\n viewOnly = false;\n\n protected totpInterval: number;\n\n constructor(cipherService: CipherService, folderService: FolderService,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n auditService: AuditService, stateService: StateService,\n userService: UserService, collectionService: CollectionService,\n protected totpService: TotpService, protected passwordGenerationService: PasswordGenerationService,\n protected messagingService: MessagingService, eventService: EventService,\n protected policyService: PolicyService) {\n super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, messagingService, eventService, policyService);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n await this.load();\n this.showRevisionDate = this.cipher.passwordRevisionDisplayDate != null;\n this.hasPasswordHistory = this.cipher.hasPasswordHistory;\n this.cleanUp();\n\n this.canAccessPremium = await this.userService.canAccessPremium();\n if (this.cipher.type === CipherType.Login && this.cipher.login.totp &&\n (this.cipher.organizationUseTotp || this.canAccessPremium)) {\n await this.totpUpdateCode();\n const interval = this.totpService.getTimeInterval(this.cipher.login.totp);\n await this.totpTick(interval);\n\n this.totpInterval = window.setInterval(async () => {\n await this.totpTick(interval);\n }, 1000);\n }\n }\n\n toggleFavorite() {\n this.cipher.favorite = !this.cipher.favorite;\n }\n\n launch(uri: LoginUriView) {\n if (!uri.canLaunch) {\n return;\n }\n\n this.platformUtilsService.eventTrack('Launched Login URI');\n this.platformUtilsService.launchUri(uri.launchUri);\n }\n\n copy(value: string, typeI18nKey: string, aType: string) {\n if (value == null) {\n return;\n }\n\n this.platformUtilsService.eventTrack('Copied ' + aType);\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t(typeI18nKey)));\n\n if (this.editMode) {\n if (typeI18nKey === 'password') {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, this.cipherId);\n } else if (typeI18nKey === 'securityCode') {\n this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, this.cipherId);\n } else if (aType === 'H_Field') {\n this.eventService.collect(EventType.Cipher_ClientCopiedHiddenField, this.cipherId);\n }\n }\n }\n\n async generatePassword(): Promise {\n const confirmed = await super.generatePassword();\n if (confirmed) {\n const options = (await this.passwordGenerationService.getOptions())[0];\n this.cipher.login.password = await this.passwordGenerationService.generatePassword(options);\n }\n return confirmed;\n }\n\n premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n\n upgradeOrganization() {\n this.messagingService.send('upgradeOrganization', { organizationId: this.cipher.organizationId });\n }\n\n viewHistory() {\n this.viewingPasswordHistory = !this.viewingPasswordHistory;\n }\n\n protected cleanUp() {\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n }\n\n protected async totpUpdateCode() {\n if (this.cipher == null || this.cipher.type !== CipherType.Login || this.cipher.login.totp == null) {\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n return;\n }\n\n this.totpCode = await this.totpService.getCode(this.cipher.login.totp);\n if (this.totpCode != null) {\n if (this.totpCode.length > 4) {\n const half = Math.floor(this.totpCode.length / 2);\n this.totpCodeFormatted = this.totpCode.substring(0, half) + ' ' + this.totpCode.substring(half);\n } else {\n this.totpCodeFormatted = this.totpCode;\n }\n } else {\n this.totpCodeFormatted = null;\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n }\n }\n\n protected allowOwnershipAssignment() {\n return (!this.editMode || this.cloneMode) && this.ownershipOptions != null\n && (this.ownershipOptions.length > 1 || !this.allowPersonal);\n }\n\n private async totpTick(intervalSeconds: number) {\n const epoch = Math.round(new Date().getTime() / 1000.0);\n const mod = epoch % intervalSeconds;\n\n this.totpSec = intervalSeconds - mod;\n this.totpDash = +(Math.round((((78.6 / intervalSeconds) * mod) + 'e+2') as any) + 'e-2');\n this.totpLow = this.totpSec <= 7;\n if (mod === 0) {\n await this.totpUpdateCode();\n }\n }\n}\n","
\n
\n
\n
\n

{{title}}

\n \n
\n
\n \n {{'personalOwnershipPolicyInEffect' | i18n}}\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n \n
\n \n
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n \n {{totpSec}}\n \n \n \n \n \n \n \n {{totpCodeFormatted}}\n \n
\n
\n
\n \n
\n
\n \n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n
\n \n {{'newUri' | i18n}}\n \n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n
\n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n

{{'customFields' | i18n}}

\n
\n
\n
\n
\n \n \n \n \n
\n \n
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n \n {{'newCustomField' | i18n}}\n \n
\n
\n \n \n
\n
\n \n

{{'ownership' | i18n}}

\n
\n
\n \n \n
\n
\n
\n \n

{{'collections' | i18n}}

\n
\n {{'noCollectionsInList' | i18n}}\n
\n \n
\n \n \n
\n
\n
\n \n
\n
\n {{'dateUpdated' | i18n}}:\n {{cipher.revisionDate | date:'medium'}}\n
\n
\n {{'datePasswordUpdated' | i18n}}:\n {{cipher.passwordRevisionDisplayDate | date:'medium'}}\n
\n
\n {{'passwordHistory' | i18n}}:\n \n {{cipher.passwordHistory.length}}\n \n
\n
\n
\n {{ph.lastUsedDate | date:'short'}} -\n {{ph.password}}\n
\n
\n
\n
\n
\n
\n \n \n
\n \n \n
\n
\n
\n
\n
\n","import { Importer } from '../importers/importer';\n\nexport interface ImportOption {\n id: string;\n name: string;\n}\nexport abstract class ImportService {\n featuredImportOptions: ImportOption[];\n regularImportOptions: ImportOption[];\n getImportOptions: () => ImportOption[];\n import: (importer: Importer, fileContents: string, organizationId?: string) => Promise;\n getImporter: (format: string, organizationId: string) => Importer;\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { EventService } from 'jslib/abstractions/event.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib/abstractions/search.service';\nimport { TotpService } from 'jslib/abstractions/totp.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CiphersComponent as BaseCiphersComponent } from 'jslib/angular/components/ciphers.component';\n\nimport { CipherType } from 'jslib/enums/cipherType';\nimport { EventType } from 'jslib/enums/eventType';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nconst MaxCheckedCount = 500;\n\n@Component({\n selector: 'app-vault-ciphers',\n templateUrl: 'ciphers.component.html',\n})\nexport class CiphersComponent extends BaseCiphersComponent implements OnDestroy {\n @Input() showAddNew = true;\n @Output() onAttachmentsClicked = new EventEmitter();\n @Output() onShareClicked = new EventEmitter();\n @Output() onCollectionsClicked = new EventEmitter();\n @Output() onCloneClicked = new EventEmitter();\n\n cipherType = CipherType;\n actionPromise: Promise;\n userHasPremiumAccess = false;\n\n constructor(searchService: SearchService, protected analytics: Angulartics2,\n protected toasterService: ToasterService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected cipherService: CipherService,\n protected eventService: EventService, protected totpService: TotpService, protected userService: UserService) {\n super(searchService);\n this.pageSize = 200;\n }\n\n async ngOnInit() {\n this.userHasPremiumAccess = await this.userService.canAccessPremium();\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n launch(uri: string) {\n this.platformUtilsService.eventTrack('Launched Login URI');\n this.platformUtilsService.launchUri(uri);\n }\n\n attachments(c: CipherView) {\n this.onAttachmentsClicked.emit(c);\n }\n\n share(c: CipherView) {\n this.onShareClicked.emit(c);\n }\n\n collections(c: CipherView) {\n this.onCollectionsClicked.emit(c);\n }\n\n clone(c: CipherView) {\n this.onCloneClicked.emit(c);\n }\n\n async delete(c: CipherView): Promise {\n if (this.actionPromise != null) {\n return;\n }\n const permanent = c.isDeleted;\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(permanent ? 'permanentlyDeleteItemConfirmation' : 'deleteItemConfirmation'),\n this.i18nService.t(permanent ? 'permanentlyDeleteItem' : 'deleteItem'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.deleteCipher(c.id, permanent);\n await this.actionPromise;\n this.analytics.eventTrack.next({ action: 'Deleted Cipher' });\n this.toasterService.popAsync('success', null, this.i18nService.t(permanent ? 'permanentlyDeletedItem'\n : 'deletedItem'));\n this.refresh();\n } catch { }\n this.actionPromise = null;\n }\n\n async restore(c: CipherView): Promise {\n if (this.actionPromise != null || !c.isDeleted) {\n return;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('restoreItemConfirmation'),\n this.i18nService.t('restoreItem'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.cipherService.restoreWithServer(c.id);\n await this.actionPromise;\n this.analytics.eventTrack.next({ action: 'Restored Cipher' });\n this.toasterService.popAsync('success', null, this.i18nService.t('restoredItem'));\n this.refresh();\n } catch { }\n this.actionPromise = null;\n }\n\n async copy(cipher: CipherView, value: string, typeI18nKey: string, aType: string) {\n if (value == null || aType === 'TOTP' && !this.displayTotpCopyButton(cipher)) {\n return;\n } else if (value === cipher.login.totp) {\n value = await this.totpService.getCode(value);\n }\n\n this.analytics.eventTrack.next({ action: 'Copied ' + aType.toLowerCase() + ' from listing.' });\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.toasterService.popAsync('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t(typeI18nKey)));\n\n if (typeI18nKey === 'password' || typeI18nKey === 'verificationCodeTotp') {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, cipher.id);\n } else if (typeI18nKey === 'securityCode') {\n this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, cipher.id);\n }\n }\n\n selectAll(select: boolean) {\n if (select) {\n this.selectAll(false);\n }\n const selectCount = select && this.ciphers.length > MaxCheckedCount\n ? MaxCheckedCount\n : this.ciphers.length;\n for (let i = 0; i < selectCount; i++) {\n this.checkCipher(this.ciphers[i], select);\n }\n }\n\n checkCipher(c: CipherView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n getSelected(): CipherView[] {\n if (this.ciphers == null) {\n return [];\n }\n return this.ciphers.filter(c => !!(c as any).checked);\n }\n\n getSelectedIds(): string[] {\n return this.getSelected().map(c => c.id);\n }\n\n displayTotpCopyButton(cipher: CipherView) {\n return (cipher?.login?.hasTotp ?? false) &&\n (cipher.organizationUseTotp || this.userHasPremiumAccess);\n }\n\n protected deleteCipher(id: string, permanent: boolean) {\n return permanent ? this.cipherService.deleteWithServer(id) : this.cipherService.softDeleteWithServer(id);\n }\n\n protected showFixOldAttachments(c: CipherView) {\n return c.hasOldAttachments && c.organizationId == null;\n }\n}\n","\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n {{c.name}}\n \n \n {{'shared' | i18n}}\n \n \n \n {{'attachments' | i18n}}\n \n \n {{'attachmentsNeedFix' | i18n}}\n \n \n
\n {{c.subTitle}}\n
\n \n
\n
\n \n \n {{'loading' | i18n}}\n \n \n

{{'noItemsInList' | i18n}}

\n \n
\n
\n
\n","import { KdfType } from '../enums/kdfType';\nimport { TwoFactorProviderType } from '../enums/twoFactorProviderType';\n\nimport { AuthResult } from '../models/domain/authResult';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { DeviceRequest } from '../models/request/deviceRequest';\nimport { KeysRequest } from '../models/request/keysRequest';\nimport { PreloginRequest } from '../models/request/preloginRequest';\nimport { TokenRequest } from '../models/request/tokenRequest';\n\nimport { IdentityTokenResponse } from '../models/response/identityTokenResponse';\nimport { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { AppIdService } from '../abstractions/appId.service';\nimport { AuthService as AuthServiceAbstraction } from '../abstractions/auth.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { LogService } from '../abstractions/log.service';\nimport { MessagingService } from '../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService } from '../abstractions/user.service';\nimport { VaultTimeoutService } from '../abstractions/vaultTimeout.service';\n\nexport const TwoFactorProviders = {\n [TwoFactorProviderType.Authenticator]: {\n type: TwoFactorProviderType.Authenticator,\n name: null as string,\n description: null as string,\n priority: 1,\n sort: 1,\n premium: false,\n },\n [TwoFactorProviderType.Yubikey]: {\n type: TwoFactorProviderType.Yubikey,\n name: null as string,\n description: null as string,\n priority: 3,\n sort: 2,\n premium: true,\n },\n [TwoFactorProviderType.Duo]: {\n type: TwoFactorProviderType.Duo,\n name: 'Duo',\n description: null as string,\n priority: 2,\n sort: 3,\n premium: true,\n },\n [TwoFactorProviderType.OrganizationDuo]: {\n type: TwoFactorProviderType.OrganizationDuo,\n name: 'Duo (Organization)',\n description: null as string,\n priority: 10,\n sort: 4,\n premium: false,\n },\n [TwoFactorProviderType.U2f]: {\n type: TwoFactorProviderType.U2f,\n name: null as string,\n description: null as string,\n priority: 4,\n sort: 5,\n premium: true,\n },\n [TwoFactorProviderType.Email]: {\n type: TwoFactorProviderType.Email,\n name: null as string,\n description: null as string,\n priority: 0,\n sort: 6,\n premium: false,\n },\n};\n\nexport class AuthService implements AuthServiceAbstraction {\n email: string;\n masterPasswordHash: string;\n code: string;\n codeVerifier: string;\n ssoRedirectUrl: string;\n clientId: string;\n clientSecret: string;\n twoFactorProvidersData: Map;\n selectedTwoFactorProviderType: TwoFactorProviderType = null;\n\n private key: SymmetricCryptoKey;\n\n constructor(private cryptoService: CryptoService, private apiService: ApiService,\n private userService: UserService, private tokenService: TokenService,\n private appIdService: AppIdService, private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService, private messagingService: MessagingService,\n private vaultTimeoutService: VaultTimeoutService, private logService: LogService,\n private setCryptoKeys = true) {\n }\n\n init() {\n TwoFactorProviders[TwoFactorProviderType.Email].name = this.i18nService.t('emailTitle');\n TwoFactorProviders[TwoFactorProviderType.Email].description = this.i18nService.t('emailDesc');\n\n TwoFactorProviders[TwoFactorProviderType.Authenticator].name = this.i18nService.t('authenticatorAppTitle');\n TwoFactorProviders[TwoFactorProviderType.Authenticator].description =\n this.i18nService.t('authenticatorAppDesc');\n\n TwoFactorProviders[TwoFactorProviderType.Duo].description = this.i18nService.t('duoDesc');\n\n TwoFactorProviders[TwoFactorProviderType.OrganizationDuo].name =\n 'Duo (' + this.i18nService.t('organization') + ')';\n TwoFactorProviders[TwoFactorProviderType.OrganizationDuo].description =\n this.i18nService.t('duoOrganizationDesc');\n\n TwoFactorProviders[TwoFactorProviderType.U2f].name = this.i18nService.t('u2fTitle');\n TwoFactorProviders[TwoFactorProviderType.U2f].description = this.i18nService.t('u2fDesc');\n\n TwoFactorProviders[TwoFactorProviderType.Yubikey].name = this.i18nService.t('yubiKeyTitle');\n TwoFactorProviders[TwoFactorProviderType.Yubikey].description = this.i18nService.t('yubiKeyDesc');\n }\n\n async logIn(email: string, masterPassword: string): Promise {\n this.selectedTwoFactorProviderType = null;\n const key = await this.makePreloginKey(masterPassword, email);\n const hashedPassword = await this.cryptoService.hashPassword(masterPassword, key);\n return await this.logInHelper(email, hashedPassword, null, null, null, null, null,\n key, null, null, null);\n }\n\n async logInSso(code: string, codeVerifier: string, redirectUrl: string): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, code, codeVerifier, redirectUrl, null, null,\n null, null, null, null);\n }\n\n async logInApiKey(clientId: string, clientSecret: string): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, null, null, null, clientId, clientSecret,\n null, null, null, null);\n }\n\n async logInTwoFactor(twoFactorProvider: TwoFactorProviderType, twoFactorToken: string,\n remember?: boolean): Promise {\n return await this.logInHelper(this.email, this.masterPasswordHash, this.code, this.codeVerifier,\n this.ssoRedirectUrl, this.clientId, this.clientSecret, this.key, twoFactorProvider,\n twoFactorToken, remember);\n }\n\n async logInComplete(email: string, masterPassword: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean): Promise {\n this.selectedTwoFactorProviderType = null;\n const key = await this.makePreloginKey(masterPassword, email);\n const hashedPassword = await this.cryptoService.hashPassword(masterPassword, key);\n return await this.logInHelper(email, hashedPassword, null, null, null, null, null, key,\n twoFactorProvider, twoFactorToken, remember);\n }\n\n async logInSsoComplete(code: string, codeVerifier: string, redirectUrl: string,\n twoFactorProvider: TwoFactorProviderType, twoFactorToken: string, remember?: boolean): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, code, codeVerifier, redirectUrl, null,\n null, null, twoFactorProvider, twoFactorToken, remember);\n }\n\n async logInApiKeyComplete(clientId: string, clientSecret: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, null, null, null, clientId, clientSecret, null,\n twoFactorProvider, twoFactorToken, remember);\n }\n\n logOut(callback: Function) {\n callback();\n this.messagingService.send('loggedOut');\n }\n\n getSupportedTwoFactorProviders(win: Window): any[] {\n const providers: any[] = [];\n if (this.twoFactorProvidersData == null) {\n return providers;\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.OrganizationDuo) &&\n this.platformUtilsService.supportsDuo()) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.OrganizationDuo]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Authenticator)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Authenticator]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Yubikey)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Yubikey]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Duo) && this.platformUtilsService.supportsDuo()) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Duo]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.U2f) && this.platformUtilsService.supportsU2f(win)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.U2f]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Email)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Email]);\n }\n\n return providers;\n }\n\n getDefaultTwoFactorProvider(u2fSupported: boolean): TwoFactorProviderType {\n if (this.twoFactorProvidersData == null) {\n return null;\n }\n\n if (this.selectedTwoFactorProviderType != null &&\n this.twoFactorProvidersData.has(this.selectedTwoFactorProviderType)) {\n return this.selectedTwoFactorProviderType;\n }\n\n let providerType: TwoFactorProviderType = null;\n let providerPriority = -1;\n this.twoFactorProvidersData.forEach((value, type) => {\n const provider = (TwoFactorProviders as any)[type];\n if (provider != null && provider.priority > providerPriority) {\n if (type === TwoFactorProviderType.U2f && !u2fSupported) {\n return;\n }\n\n providerType = type;\n providerPriority = provider.priority;\n }\n });\n\n return providerType;\n }\n\n async makePreloginKey(masterPassword: string, email: string): Promise {\n email = email.trim().toLowerCase();\n let kdf: KdfType = null;\n let kdfIterations: number = null;\n try {\n const preloginResponse = await this.apiService.postPrelogin(new PreloginRequest(email));\n if (preloginResponse != null) {\n kdf = preloginResponse.kdf;\n kdfIterations = preloginResponse.kdfIterations;\n }\n } catch (e) {\n if (e == null || e.statusCode !== 404) {\n throw e;\n }\n }\n return this.cryptoService.makeKey(masterPassword, email, kdf, kdfIterations);\n }\n\n authingWithApiKey(): boolean {\n return this.clientId != null && this.clientSecret != null;\n }\n\n authingWithSso(): boolean {\n return this.code != null && this.codeVerifier != null && this.ssoRedirectUrl != null;\n }\n\n authingWithPassword(): boolean {\n return this.email != null && this.masterPasswordHash != null;\n }\n\n private async logInHelper(email: string, hashedPassword: string, code: string, codeVerifier: string,\n redirectUrl: string, clientId: string, clientSecret: string, key: SymmetricCryptoKey,\n twoFactorProvider?: TwoFactorProviderType, twoFactorToken?: string, remember?: boolean): Promise {\n const storedTwoFactorToken = await this.tokenService.getTwoFactorToken(email);\n const appId = await this.appIdService.getAppId();\n const deviceRequest = new DeviceRequest(appId, this.platformUtilsService);\n\n let emailPassword: string[] = [];\n let codeCodeVerifier: string[] = [];\n let clientIdClientSecret: string[] = [];\n\n if (email != null && hashedPassword != null) {\n emailPassword = [email, hashedPassword];\n } else {\n emailPassword = null;\n }\n if (code != null && codeVerifier != null && redirectUrl != null) {\n codeCodeVerifier = [code, codeVerifier, redirectUrl];\n } else {\n codeCodeVerifier = null;\n }\n if (clientId != null && clientSecret != null) {\n clientIdClientSecret = [clientId, clientSecret];\n } else {\n clientIdClientSecret = null;\n }\n\n let request: TokenRequest;\n if (twoFactorToken != null && twoFactorProvider != null) {\n request = new TokenRequest(emailPassword, codeCodeVerifier, clientIdClientSecret, twoFactorProvider,\n twoFactorToken, remember, deviceRequest);\n } else if (storedTwoFactorToken != null) {\n request = new TokenRequest(emailPassword, codeCodeVerifier, clientIdClientSecret, TwoFactorProviderType.Remember,\n storedTwoFactorToken, false, deviceRequest);\n } else {\n request = new TokenRequest(emailPassword, codeCodeVerifier, clientIdClientSecret, null,\n null, false, deviceRequest);\n }\n\n const response = await this.apiService.postIdentityToken(request);\n\n this.clearState();\n const result = new AuthResult();\n result.twoFactor = !(response as any).accessToken;\n\n if (result.twoFactor) {\n // two factor required\n const twoFactorResponse = response as IdentityTwoFactorResponse;\n this.email = email;\n this.masterPasswordHash = hashedPassword;\n this.code = code;\n this.codeVerifier = codeVerifier;\n this.ssoRedirectUrl = redirectUrl;\n this.clientId = clientId;\n this.clientSecret = clientSecret;\n this.key = this.setCryptoKeys ? key : null;\n this.twoFactorProvidersData = twoFactorResponse.twoFactorProviders2;\n result.twoFactorProviders = twoFactorResponse.twoFactorProviders2;\n return result;\n }\n\n const tokenResponse = response as IdentityTokenResponse;\n result.resetMasterPassword = tokenResponse.resetMasterPassword;\n if (tokenResponse.twoFactorToken != null) {\n await this.tokenService.setTwoFactorToken(tokenResponse.twoFactorToken, email);\n }\n\n await this.tokenService.setTokens(tokenResponse.accessToken, tokenResponse.refreshToken);\n await this.userService.setInformation(this.tokenService.getUserId(), this.tokenService.getEmail(),\n tokenResponse.kdf, tokenResponse.kdfIterations);\n if (this.setCryptoKeys) {\n if (key != null) {\n await this.cryptoService.setKey(key);\n }\n if (hashedPassword != null) {\n await this.cryptoService.setKeyHash(hashedPassword);\n }\n\n // Skip this step during SSO new user flow. No key is returned from server.\n if (code == null || tokenResponse.key != null) {\n await this.cryptoService.setEncKey(tokenResponse.key);\n\n // User doesn't have a key pair yet (old account), let's generate one for them\n if (tokenResponse.privateKey == null) {\n try {\n const keyPair = await this.cryptoService.makeKeyPair();\n await this.apiService.postAccountKeys(new KeysRequest(keyPair[0], keyPair[1].encryptedString));\n tokenResponse.privateKey = keyPair[1].encryptedString;\n } catch (e) {\n // tslint:disable-next-line\n this.logService.error(e);\n }\n }\n\n await this.cryptoService.setEncPrivateKey(tokenResponse.privateKey);\n }\n }\n\n if (this.vaultTimeoutService != null) {\n this.vaultTimeoutService.biometricLocked = false;\n }\n this.messagingService.send('loggedIn');\n return result;\n }\n\n private clearState(): void {\n this.key = null;\n this.email = null;\n this.masterPasswordHash = null;\n this.code = null;\n this.codeVerifier = null;\n this.ssoRedirectUrl = null;\n this.clientId = null;\n this.clientSecret = null;\n this.twoFactorProvidersData = null;\n this.selectedTwoFactorProviderType = null;\n }\n}\n","export class SelectionReadOnlyRequest {\n id: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(id: string, readOnly: boolean, hidePasswords: boolean) {\n this.id = id;\n this.readOnly = readOnly;\n this.hidePasswords = hidePasswords;\n }\n}\n","export enum DeviceType {\n Android = 0,\n iOS = 1,\n ChromeExtension = 2,\n FirefoxExtension = 3,\n OperaExtension = 4,\n EdgeExtension = 5,\n WindowsDesktop = 6,\n MacOsDesktop = 7,\n LinuxDesktop = 8,\n ChromeBrowser = 9,\n FirefoxBrowser = 10,\n OperaBrowser = 11,\n EdgeBrowser = 12,\n IEBrowser = 13,\n UnknownBrowser = 14,\n AndroidAmazon = 15,\n UWP = 16,\n SafariBrowser = 17,\n VivaldiBrowser = 18,\n VivaldiExtension = 19,\n SafariExtension = 20,\n}\n","export abstract class SettingsService {\n clearCache: () => void;\n getEquivalentDomains: () => Promise;\n setEquivalentDomains: (equivalentDomains: string[][]) => Promise;\n clear: (userId: string) => Promise;\n}\n","export enum PlanType {\n Free = 0,\n FamiliesAnnually2019 = 1,\n TeamsMonthly2019 = 2,\n TeamsAnnually2019 = 3,\n EnterpriseMonthly2019 = 4,\n EnterpriseAnnually2019 = 5,\n Custom = 6,\n FamiliesAnnually = 7,\n TeamsMonthly = 8,\n TeamsAnnually = 9,\n EnterpriseMonthly = 10,\n EnterpriseAnnually = 11,\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { PaymentMethodType } from 'jslib/enums/paymentMethodType';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { PaymentComponent } from './payment.component';\nimport { TaxInfoComponent } from './tax-info.component';\n\nimport { OrganizationUserStatusType } from 'jslib/enums/organizationUserStatusType';\nimport { OrganizationUserType } from 'jslib/enums/organizationUserType';\nimport { PlanType } from 'jslib/enums/planType';\nimport { PolicyType } from 'jslib/enums/policyType';\nimport { ProductType } from 'jslib/enums/productType';\n\nimport { OrganizationCreateRequest } from 'jslib/models/request/organizationCreateRequest';\nimport { OrganizationUpgradeRequest } from 'jslib/models/request/organizationUpgradeRequest';\nimport { PlanResponse } from 'jslib/models/response/planResponse';\n\n@Component({\n selector: 'app-organization-plans',\n templateUrl: 'organization-plans.component.html',\n})\nexport class OrganizationPlansComponent implements OnInit {\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent) taxComponent: TaxInfoComponent;\n\n @Input() organizationId: string;\n @Input() showFree = true;\n @Input() showCancel = false;\n @Input() product: ProductType = ProductType.Free;\n @Input() plan: PlanType = PlanType.Free;\n @Output() onSuccess = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n loading: boolean = true;\n selfHosted: boolean = false;\n ownedBusiness: boolean = false;\n premiumAccessAddon: boolean = false;\n additionalStorage: number = 0;\n additionalSeats: number = 0;\n name: string;\n billingEmail: string;\n businessName: string;\n productTypes = ProductType;\n formPromise: Promise;\n singleOrgPolicyBlock: boolean = false;\n\n plans: PlanResponse[];\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n platformUtilsService: PlatformUtilsService, private cryptoService: CryptoService,\n private router: Router, private syncService: SyncService,\n private policyService: PolicyService, private userService: UserService) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n if (!this.selfHosted) {\n const plans = await this.apiService.getPlans();\n this.plans = plans.data;\n if (this.product === ProductType.Enterprise || this.product === ProductType.Teams) {\n this.ownedBusiness = true;\n }\n }\n this.loading = false;\n }\n\n get createOrganization() {\n return this.organizationId == null;\n }\n\n get selectedPlan() {\n return this.plans.find(plan => plan.type === this.plan);\n }\n\n get selectedPlanInterval() {\n return this.selectedPlan.isAnnual\n ? 'year'\n : 'month';\n }\n\n get selectableProducts() {\n let validPlans = this.plans.filter(plan => plan.type !== PlanType.Custom);\n\n if (this.ownedBusiness) {\n validPlans = validPlans.filter(plan => plan.canBeUsedByBusiness);\n }\n\n if (!this.showFree) {\n validPlans = validPlans.filter(plan => plan.product !== ProductType.Free);\n }\n\n validPlans = validPlans\n .filter(plan => !plan.legacyYear\n && !plan.disabled\n && (plan.isAnnual || plan.product === this.productTypes.Free));\n\n return validPlans;\n }\n\n get selectablePlans() {\n return this.plans.filter(plan => !plan.legacyYear && !plan.disabled && plan.product === this.product);\n }\n\n additionalStoragePriceMonthly(selectedPlan: PlanResponse) {\n if (!selectedPlan.isAnnual) {\n return selectedPlan.additionalStoragePricePerGb;\n }\n return selectedPlan.additionalStoragePricePerGb / 12;\n }\n\n seatPriceMonthly(selectedPlan: PlanResponse) {\n if (!selectedPlan.isAnnual) {\n return selectedPlan.seatPrice;\n }\n return selectedPlan.seatPrice / 12;\n }\n\n additionalStorageTotal(plan: PlanResponse): number {\n if (!plan.hasAdditionalStorageOption) {\n return 0;\n }\n\n return plan.additionalStoragePricePerGb * Math.abs(this.additionalStorage || 0);\n }\n\n seatTotal(plan: PlanResponse): number {\n if (!plan.hasAdditionalSeatsOption) {\n return 0;\n }\n\n return plan.seatPrice * Math.abs(this.additionalSeats || 0);\n }\n\n get subtotal() {\n let subTotal = this.selectedPlan.basePrice;\n if (this.selectedPlan.hasAdditionalSeatsOption && this.additionalSeats) {\n subTotal += this.seatTotal(this.selectedPlan);\n }\n if (this.selectedPlan.hasAdditionalStorageOption && this.additionalStorage) {\n subTotal += this.additionalStorageTotal(this.selectedPlan);\n }\n if (this.selectedPlan.hasPremiumAccessOption && this.premiumAccessAddon) {\n subTotal += this.selectedPlan.premiumAccessOptionPrice;\n }\n return subTotal;\n }\n\n get taxCharges() {\n return this.taxComponent != null && this.taxComponent.taxRate != null ?\n (this.taxComponent.taxRate / 100) * this.subtotal :\n 0;\n }\n\n get total() {\n return (this.subtotal + this.taxCharges) || 0;\n }\n\n changedProduct() {\n this.plan = this.selectablePlans[0].type;\n if (!this.selectedPlan.hasPremiumAccessOption) {\n this.premiumAccessAddon = false;\n }\n if (!this.selectedPlan.hasAdditionalStorageOption) {\n this.additionalStorage = 0;\n }\n if (!this.selectedPlan.hasAdditionalSeatsOption) {\n this.additionalSeats = 0;\n } else if (!this.additionalSeats && !this.selectedPlan.baseSeats &&\n this.selectedPlan.hasAdditionalSeatsOption) {\n this.additionalSeats = 1;\n }\n }\n\n changedOwnedBusiness() {\n if (!this.ownedBusiness || this.selectedPlan.canBeUsedByBusiness) {\n return;\n }\n this.product = ProductType.Teams;\n this.plan = PlanType.TeamsAnnually;\n }\n\n changedCountry() {\n this.paymentComponent.hideBank = this.taxComponent.taxInfo.country !== 'US';\n // Bank Account payments are only available for US customers\n if (this.paymentComponent.hideBank &&\n this.paymentComponent.method === PaymentMethodType.BankAccount) {\n this.paymentComponent.method = PaymentMethodType.Card;\n this.paymentComponent.changeMethod();\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n async submit() {\n if (this.singleOrgPolicyBlock) {\n return;\n } else {\n const policies = await this.policyService.getAll(PolicyType.SingleOrg);\n const orgs = await this.userService.getAllOrganizations();\n\n const orgsWithSingleOrgPolicy = policies\n .filter(p => p.enabled && p.type === PolicyType.SingleOrg)\n .map(p => p.organizationId);\n\n this.singleOrgPolicyBlock = orgs.some(org =>\n org.type !== OrganizationUserType.Owner &&\n org.type !== OrganizationUserType.Admin &&\n org.status !== OrganizationUserStatusType.Invited &&\n orgsWithSingleOrgPolicy.includes(org.id));\n\n if (this.singleOrgPolicyBlock) {\n return;\n }\n }\n\n let files: FileList = null;\n if (this.createOrganization && this.selfHosted) {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n files = fileEl.files;\n if (files == null || files.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n }\n\n try {\n const doSubmit = async () => {\n let orgId: string = null;\n if (this.createOrganization) {\n let tokenResult: [string, PaymentMethodType] = null;\n if (!this.selfHosted && this.plan !== PlanType.Free) {\n tokenResult = await this.paymentComponent.createPaymentToken();\n }\n const shareKey = await this.cryptoService.makeShareKey();\n const key = shareKey[0].encryptedString;\n const collection = await this.cryptoService.encrypt(\n this.i18nService.t('defaultCollection'), shareKey[1]);\n const collectionCt = collection.encryptedString;\n\n if (this.selfHosted) {\n const fd = new FormData();\n fd.append('license', files[0]);\n fd.append('key', key);\n fd.append('collectionName', collectionCt);\n const response = await this.apiService.postOrganizationLicense(fd);\n orgId = response.id;\n } else {\n const request = new OrganizationCreateRequest();\n request.key = key;\n request.collectionName = collectionCt;\n request.name = this.name;\n request.billingEmail = this.billingEmail;\n\n if (this.selectedPlan.type === PlanType.Free) {\n request.planType = PlanType.Free;\n } else {\n request.paymentToken = tokenResult[0];\n request.paymentMethodType = tokenResult[1];\n request.businessName = this.ownedBusiness ? this.businessName : null;\n request.additionalSeats = this.additionalSeats;\n request.additionalStorageGb = this.additionalStorage;\n request.premiumAccessAddon = this.selectedPlan.hasPremiumAccessOption &&\n this.premiumAccessAddon;\n request.planType = this.selectedPlan.type;\n request.billingAddressPostalCode = this.taxComponent.taxInfo.postalCode;\n request.billingAddressCountry = this.taxComponent.taxInfo.country;\n if (this.taxComponent.taxInfo.includeTaxId) {\n request.taxIdNumber = this.taxComponent.taxInfo.taxId;\n request.billingAddressLine1 = this.taxComponent.taxInfo.line1;\n request.billingAddressLine2 = this.taxComponent.taxInfo.line2;\n request.billingAddressCity = this.taxComponent.taxInfo.city;\n request.billingAddressState = this.taxComponent.taxInfo.state;\n }\n }\n const response = await this.apiService.postOrganization(request);\n orgId = response.id;\n }\n } else {\n const request = new OrganizationUpgradeRequest();\n request.businessName = this.ownedBusiness ? this.businessName : null;\n request.additionalSeats = this.additionalSeats;\n request.additionalStorageGb = this.additionalStorage;\n request.premiumAccessAddon = this.selectedPlan.hasPremiumAccessOption &&\n this.premiumAccessAddon;\n request.planType = this.selectedPlan.type;\n request.billingAddressCountry = this.taxComponent.taxInfo.country;\n request.billingAddressPostalCode = this.taxComponent.taxInfo.postalCode;\n\n const result = await this.apiService.postOrganizationUpgrade(this.organizationId, request);\n if (!result.success && result.paymentIntentClientSecret != null) {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n }\n orgId = this.organizationId;\n }\n\n if (orgId != null) {\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n if (this.createOrganization) {\n this.analytics.eventTrack.next({ action: 'Created Organization' });\n this.toasterService.popAsync('success',\n this.i18nService.t('organizationCreated'), this.i18nService.t('organizationReadyToGo'));\n } else {\n this.analytics.eventTrack.next({ action: 'Upgraded Organization' });\n this.toasterService.popAsync('success', null, this.i18nService.t('organizationUpgraded'));\n }\n this.router.navigate(['/organizations/' + orgId]);\n }\n };\n\n this.formPromise = doSubmit();\n await this.formPromise;\n this.onSuccess.emit();\n } catch { }\n }\n\n}\n","\n \n {{'loading' | i18n}}\n\n\n

{{'uploadLicenseFileOrg' | i18n}}

\n
\n
\n \n \n {{'licenseFileDesc' | i18n : 'bitwarden_organization_license.json'}}\n
\n \n
\n
\n
\n

{{'generalInformation' | i18n}}

\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n

{{'chooseYourPlan' | i18n}}

\n
\n \n \n
\n
\n \n

{{'users' | i18n}}

\n
\n
\n \n \n {{'userSeatsHowManyDesc' | i18n}}\n
\n
\n
\n

{{'addons' | i18n}}

\n
\n
\n \n \n {{'userSeatsAdditionalDesc' | i18n : selectedPlan.baseSeats : (seatPriceMonthly(selectedPlan) | currency:'$')}}\n
\n
\n
\n
\n \n \n {{'additionalStorageIntervalDesc' | i18n : '1 GB' : (additionalStoragePriceMonthly(selectedPlan) | currency:'$') : ('month' | i18n)}}\n
\n
\n
\n
\n
\n \n \n
\n {{'premiumAccessDesc' | i18n : (3.33 | currency:'$') : ('month' | i18n)}}\n
\n
\n

{{'summary' | i18n}}

\n
\n \n \n
\n
\n

{{ (createOrganization ? 'paymentInformation' : 'billingInformation') | i18n}}

\n \n \n
\n
\n {{ 'planPrice' | i18n }}: {{ subtotal | currency: 'USD $' }}\n
\n \n {{ 'estimatedTax' | i18n }}: {{ taxCharges | currency: 'USD $' }}\n \n
\n
\n

{{'total' | i18n}}:\n {{total | currency:'USD $'}}/{{selectedPlanInterval | i18n}}

\n
\n {{'paymentChargedWithTrial' | i18n : (selectedPlanInterval | i18n) }}\n \n \n \n \n {{'paymentCharged' | i18n : (selectedPlanInterval | i18n) }}\n
\n
\n {{'singleOrgBlockCreateMessage' | i18n}}\n
\n
\n \n \n
\n
\n","import { EncryptionType } from '../../enums/encryptionType';\n\nimport { Utils } from '../../misc/utils';\n\nexport class SymmetricCryptoKey {\n key: ArrayBuffer;\n encKey?: ArrayBuffer;\n macKey?: ArrayBuffer;\n encType: EncryptionType;\n\n keyB64: string;\n encKeyB64: string;\n macKeyB64: string;\n\n meta: any;\n\n constructor(key: ArrayBuffer, encType?: EncryptionType) {\n if (key == null) {\n throw new Error('Must provide key');\n }\n\n if (encType == null) {\n if (key.byteLength === 32) {\n encType = EncryptionType.AesCbc256_B64;\n } else if (key.byteLength === 64) {\n encType = EncryptionType.AesCbc256_HmacSha256_B64;\n } else {\n throw new Error('Unable to determine encType.');\n }\n }\n\n this.key = key;\n this.encType = encType;\n\n if (encType === EncryptionType.AesCbc256_B64 && key.byteLength === 32) {\n this.encKey = key;\n this.macKey = null;\n } else if (encType === EncryptionType.AesCbc128_HmacSha256_B64 && key.byteLength === 32) {\n this.encKey = key.slice(0, 16);\n this.macKey = key.slice(16, 32);\n } else if (encType === EncryptionType.AesCbc256_HmacSha256_B64 && key.byteLength === 64) {\n this.encKey = key.slice(0, 32);\n this.macKey = key.slice(32, 64);\n } else {\n throw new Error('Unsupported encType/key length.');\n }\n\n if (this.key != null) {\n this.keyB64 = Utils.fromBufferToB64(this.key);\n }\n if (this.encKey != null) {\n this.encKeyB64 = Utils.fromBufferToB64(this.encKey);\n }\n if (this.macKey != null) {\n this.macKeyB64 = Utils.fromBufferToB64(this.macKey);\n }\n }\n}\n","import { CardData } from '../data/cardData';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\n\nimport { CardView } from '../view/cardView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Card extends Domain {\n cardholderName: CipherString;\n brand: CipherString;\n number: CipherString;\n expMonth: CipherString;\n expYear: CipherString;\n code: CipherString;\n\n constructor(obj?: CardData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new CardView(this), {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n }, orgId, encKey);\n }\n\n toCardData(): CardData {\n const c = new CardData();\n this.buildDataModel(this, c, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n });\n return c;\n }\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { FieldData } from '../data/fieldData';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\n\nimport { FieldView } from '../view/fieldView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Field extends Domain {\n name: CipherString;\n value: CipherString;\n type: FieldType;\n\n constructor(obj?: FieldData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.type = obj.type;\n this.buildDomainModel(this, obj, {\n name: null,\n value: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new FieldView(this), {\n name: null,\n value: null,\n }, orgId, encKey);\n }\n\n toFieldData(): FieldData {\n const f = new FieldData();\n this.buildDataModel(this, f, {\n name: null,\n value: null,\n type: null,\n }, ['type']);\n return f;\n }\n}\n","import { IdentityData } from '../data/identityData';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { IdentityView } from '../view/identityView';\n\nexport class Identity extends Domain {\n title: CipherString;\n firstName: CipherString;\n middleName: CipherString;\n lastName: CipherString;\n address1: CipherString;\n address2: CipherString;\n address3: CipherString;\n city: CipherString;\n state: CipherString;\n postalCode: CipherString;\n country: CipherString;\n company: CipherString;\n email: CipherString;\n phone: CipherString;\n ssn: CipherString;\n username: CipherString;\n passportNumber: CipherString;\n licenseNumber: CipherString;\n\n constructor(obj?: IdentityData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new IdentityView(this), {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n }, orgId, encKey);\n }\n\n toIdentityData(): IdentityData {\n const i = new IdentityData();\n this.buildDataModel(this, i, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n });\n return i;\n }\n}\n","import { LoginUri } from './loginUri';\n\nimport { LoginData } from '../data/loginData';\n\nimport { LoginView } from '../view/loginView';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Login extends Domain {\n uris: LoginUri[];\n username: CipherString;\n password: CipherString;\n passwordRevisionDate?: Date;\n totp: CipherString;\n\n constructor(obj?: LoginData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.passwordRevisionDate = obj.passwordRevisionDate != null ? new Date(obj.passwordRevisionDate) : null;\n this.buildDomainModel(this, obj, {\n username: null,\n password: null,\n totp: null,\n }, alreadyEncrypted, []);\n\n if (obj.uris) {\n this.uris = [];\n obj.uris.forEach(u => {\n this.uris.push(new LoginUri(u, alreadyEncrypted));\n });\n }\n }\n\n async decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(new LoginView(this), {\n username: null,\n password: null,\n totp: null,\n }, orgId, encKey);\n\n if (this.uris != null) {\n view.uris = [];\n for (let i = 0; i < this.uris.length; i++) {\n const uri = await this.uris[i].decrypt(orgId, encKey);\n view.uris.push(uri);\n }\n }\n\n return view;\n }\n\n toLoginData(): LoginData {\n const l = new LoginData();\n l.passwordRevisionDate = this.passwordRevisionDate != null ? this.passwordRevisionDate.toISOString() : null;\n this.buildDataModel(this, l, {\n username: null,\n password: null,\n totp: null,\n });\n\n if (this.uris != null && this.uris.length > 0) {\n l.uris = [];\n this.uris.forEach(u => {\n l.uris.push(u.toLoginUriData());\n });\n }\n\n return l;\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriData } from '../data/loginUriData';\n\nimport { LoginUriView } from '../view/loginUriView';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class LoginUri extends Domain {\n uri: CipherString;\n match: UriMatchType;\n\n constructor(obj?: LoginUriData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.match = obj.match;\n this.buildDomainModel(this, obj, {\n uri: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new LoginUriView(this), {\n uri: null,\n }, orgId, encKey);\n }\n\n toLoginUriData(): LoginUriData {\n const u = new LoginUriData();\n this.buildDataModel(this, u, {\n uri: null,\n }, ['match']);\n return u;\n }\n}\n","export enum UriMatchType {\n Domain = 0,\n Host = 1,\n StartsWith = 2,\n Exact = 3,\n RegularExpression = 4,\n Never = 5,\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteData } from '../data/secureNoteData';\n\nimport Domain from './domainBase';\n\nimport { SecureNoteView } from '../view/secureNoteView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class SecureNote extends Domain {\n type: SecureNoteType;\n\n constructor(obj?: SecureNoteData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.type = obj.type;\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return Promise.resolve(new SecureNoteView(this));\n }\n\n toSecureNoteData(): SecureNoteData {\n const n = new SecureNoteData();\n n.type = this.type;\n return n;\n }\n}\n","import {\n Directive,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n Renderer2,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NgControl,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\n\n// ref: https://juristr.com/blog/2018/02/ng-true-value-directive/\n@Directive({\n selector: 'input[type=checkbox][appTrueFalseValue]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TrueFalseValueDirective),\n multi: true,\n },\n ],\n})\nexport class TrueFalseValueDirective implements ControlValueAccessor {\n @Input() trueValue = true;\n @Input() falseValue = false;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) { }\n\n @HostListener('change', ['$event'])\n onHostChange(ev: any) {\n this.propagateChange(ev.target.checked ? this.trueValue : this.falseValue);\n }\n\n writeValue(obj: any): void {\n if (obj === this.trueValue) {\n this.renderer.setProperty(this.elementRef.nativeElement, 'checked', true);\n } else {\n this.renderer.setProperty(this.elementRef.nativeElement, 'checked', false);\n }\n }\n\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n registerOnTouched(fn: any): void { /* nothing */ }\n\n setDisabledState?(isDisabled: boolean): void { /* nothing */ }\n\n private propagateChange = (_: any) => { /* nothing */ };\n}\n","import {\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { GroupingsComponent as BaseGroupingsComponent } from 'jslib/angular/components/groupings.component';\n\n@Component({\n selector: 'app-vault-groupings',\n templateUrl: 'groupings.component.html',\n})\nexport class GroupingsComponent extends BaseGroupingsComponent {\n @Output() onSearchTextChanged = new EventEmitter();\n\n searchText: string = '';\n searchPlaceholder: string = null;\n\n constructor(collectionService: CollectionService, folderService: FolderService,\n storageService: StorageService, userService: UserService) {\n super(collectionService, folderService, storageService, userService);\n }\n\n searchTextChanged() {\n this.onSearchTextChanged.emit(this.searchText);\n }\n}\n","
\n
\n {{'filters' | i18n}}\n \n \n \n
\n
\n \n \n

{{'types' | i18n}}

\n \n

\n \n {{'loading' | i18n}}\n

\n \n \n

\n {{'folders' | i18n}}\n \n \n \n

\n \n
\n \n

{{'collections' | i18n}}

\n \n
\n
\n
\n
\n","import { OrganizationData } from '../data/organizationData';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\n\nexport class Organization {\n id: string;\n name: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useBusinessPortal: boolean;\n useSso: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n\n constructor(obj?: OrganizationData) {\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.name = obj.name;\n this.status = obj.status;\n this.type = obj.type;\n this.enabled = obj.enabled;\n this.usePolicies = obj.usePolicies;\n this.useGroups = obj.useGroups;\n this.useDirectory = obj.useDirectory;\n this.useEvents = obj.useEvents;\n this.useTotp = obj.useTotp;\n this.use2fa = obj.use2fa;\n this.useApi = obj.useApi;\n this.useBusinessPortal = obj.useBusinessPortal;\n this.useSso = obj.useSso;\n this.selfHost = obj.selfHost;\n this.usersGetPremium = obj.usersGetPremium;\n this.seats = obj.seats;\n this.maxCollections = obj.maxCollections;\n this.maxStorageGb = obj.maxStorageGb;\n this.ssoBound = obj.ssoBound;\n this.identifier = obj.identifier;\n this.permissions = obj.permissions;\n }\n\n get canAccess() {\n if (this.type === OrganizationUserType.Owner) {\n return true;\n }\n return this.enabled && this.status === OrganizationUserStatusType.Confirmed;\n }\n\n get isManager() {\n return this.type === OrganizationUserType.Manager || this.type === OrganizationUserType.Owner ||\n this.type === OrganizationUserType.Admin;\n }\n\n get isAdmin() {\n return this.type === OrganizationUserType.Owner || this.type === OrganizationUserType.Admin;\n }\n\n get isOwner() {\n return this.type === OrganizationUserType.Owner;\n }\n\n get canAccessBusinessPortal() {\n return this.isAdmin || this.permissions.accessBusinessPortal;\n }\n\n get canAccessEventLogs() {\n return this.isAdmin || this.permissions.accessEventLogs;\n }\n\n get canAccessImportExport() {\n return this.isAdmin || this.permissions.accessImportExport;\n }\n\n get canAccessReports() {\n return this.isAdmin || this.permissions.accessReports;\n }\n\n get canManageAllCollections() {\n return this.isAdmin || this.permissions.manageAllCollections;\n }\n\n get canManageAssignedCollections() {\n return this.isManager || this.permissions.manageAssignedCollections;\n }\n\n get canManageGroups() {\n return this.isAdmin || this.permissions.manageGroups;\n }\n\n get canManageSso() {\n return this.isAdmin || this.permissions.manageSso;\n }\n\n get canManagePolicies() {\n return this.isAdmin || this.permissions.managePolicies;\n }\n\n get canManageUsers() {\n return this.isAdmin || this.permissions.manageUsers;\n }\n}\n","import { View } from './view';\n\nimport { SendFile } from '../domain/sendFile';\n\nexport class SendFileView implements View {\n id: string = null;\n size: string = null;\n sizeName: string = null;\n fileName: string = null;\n\n constructor(f?: SendFile) {\n if (!f) {\n return;\n }\n\n this.id = f.id;\n this.size = f.size;\n this.sizeName = f.sizeName;\n }\n\n get fileSize(): number {\n try {\n if (this.size != null) {\n return parseInt(this.size, null);\n }\n } catch { }\n return 0;\n }\n}\n","import { View } from './view';\n\nimport { SendText } from '../domain/sendText';\n\nexport class SendTextView implements View {\n text: string = null;\n hidden: boolean;\n\n constructor(t?: SendText) {\n if (!t) {\n return;\n }\n\n this.hidden = t.hidden;\n }\n\n get maskedText(): string {\n return this.text != null ? '••••••••' : null;\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { Organization } from 'jslib/models/domain/organization';\n\nimport { Utils } from 'jslib/misc/utils';\n\n@Component({\n selector: 'app-organizations',\n templateUrl: 'organizations.component.html',\n})\nexport class OrganizationsComponent implements OnInit {\n @Input() vault = false;\n\n organizations: Organization[];\n loaded: boolean = false;\n actionPromise: Promise;\n\n constructor(private userService: UserService, private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService, private apiService: ApiService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private syncService: SyncService) { }\n\n async ngOnInit() {\n if (!this.vault) {\n await this.syncService.fullSync(true);\n await this.load();\n }\n }\n\n async load() {\n const orgs = await this.userService.getAllOrganizations();\n orgs.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.organizations = orgs;\n this.loaded = true;\n }\n\n async unlinkSso(org: Organization) {\n const confirmed = await this.platformUtilsService.showDialog(\n 'Are you sure you want to unlink SSO for this organization?', org.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.apiService.deleteSsoUser(org.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.analytics.eventTrack.next({ action: 'Unlinked SSO' });\n this.toasterService.popAsync('success', null, 'Unlinked SSO');\n await this.load();\n } catch { }\n }\n\n async leave(org: Organization) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('leaveOrganizationConfirmation'), org.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.apiService.postLeaveOrganization(org.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.analytics.eventTrack.next({ action: 'Left Organization' });\n this.toasterService.popAsync('success', null, this.i18nService.t('leftOrganization'));\n await this.load();\n } catch { }\n }\n}\n","\n

\n \n {{'loading' | i18n}}\n

\n \n \n

{{'noOrganizationsList' | i18n}}

\n
\n \n \n {{'newOrganization' | i18n}}\n \n
\n\n
\n

\n {{'organizations' | i18n}}\n \n \n \n {{'loading' | i18n}}\n \n \n

\n \n \n {{'newOrganization' | i18n}}\n \n
\n \n \n {{'loading' | i18n}}\n \n \n \n

{{'noOrganizationsList' | i18n}}

\n \n \n {{'newOrganization' | i18n}}\n \n
\n \n \n \n \n \n \n \n \n
\n \n \n {{o.name}}\n \n \n {{'organizationIsDisabled' | i18n}}\n \n \n
\n \n \n
\n
\n
\n
\n","import { BaseResponse } from './baseResponse';\n\nexport class SelectionReadOnlyResponse extends BaseResponse {\n id: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.readOnly = this.getResponseProperty('ReadOnly');\n this.hidePasswords = this.getResponseProperty('HidePasswords');\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { TokenService } from 'jslib/abstractions/token.service';\n\n@Component({\n selector: 'app-navbar',\n templateUrl: 'navbar.component.html',\n})\nexport class NavbarComponent implements OnInit {\n selfHosted = false;\n name: string;\n email: string;\n\n constructor(private messagingService: MessagingService, private platformUtilsService: PlatformUtilsService,\n private tokenService: TokenService) {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.name = await this.tokenService.getName();\n this.email = await this.tokenService.getEmail();\n if (this.name == null || this.name.trim() === '') {\n this.name = this.email;\n }\n }\n\n lock() {\n this.messagingService.send('lockVault');\n }\n\n logOut() {\n this.messagingService.send('logout');\n }\n}\n","\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-footer',\n templateUrl: 'footer.component.html',\n})\nexport class FooterComponent implements OnInit {\n version: string;\n year: string = '2015';\n\n constructor(private platformUtilsService: PlatformUtilsService) { }\n\n ngOnInit() {\n this.year = new Date().getFullYear().toString();\n this.version = this.platformUtilsService.getApplicationVersion();\n }\n}\n","
\n
\n
\n © {{year}}, Bitwarden Inc. (Powered by Vaultwarden)\n
\n
\n
\n {{'versionNumber' | i18n : version}}\n
\n
\n
\n","import { Injectable } from '@angular/core';\n\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nimport { ErrorResponse } from '../../models/response/errorResponse';\n\n@Injectable()\nexport class ValidationService {\n constructor(private i18nService: I18nService, private platformUtilsService: PlatformUtilsService) { }\n\n showError(data: any): string[] {\n const defaultErrorMessage = this.i18nService.t('unexpectedError');\n let errors: string[] = [];\n\n if (data != null && typeof data === 'string') {\n errors.push(data);\n } else if (data == null || typeof data !== 'object') {\n errors.push(defaultErrorMessage);\n } else if (data.validationErrors != null) {\n errors = errors.concat((data as ErrorResponse).getAllMessages());\n } else {\n errors.push(data.message ? data.message : defaultErrorMessage);\n }\n\n if (errors.length === 1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), errors[0]);\n } else if (errors.length > 1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), errors, {\n timeout: 5000 * errors.length,\n });\n }\n\n return errors;\n }\n}\n","export enum EncryptionType {\n AesCbc256_B64 = 0,\n AesCbc128_HmacSha256_B64 = 1,\n AesCbc256_HmacSha256_B64 = 2,\n Rsa2048_OaepSha256_B64 = 3,\n Rsa2048_OaepSha1_B64 = 4,\n Rsa2048_OaepSha256_HmacSha256_B64 = 5,\n Rsa2048_OaepSha1_HmacSha256_B64 = 6,\n}\n","export class KeysRequest {\n publicKey: string;\n encryptedPrivateKey: string;\n\n constructor(publicKey: string, encryptedPrivateKey: string) {\n this.publicKey = publicKey;\n this.encryptedPrivateKey = encryptedPrivateKey;\n }\n}\n","import { PolicyData } from '../data/policyData';\n\nimport Domain from './domainBase';\n\nimport { PolicyType } from '../../enums/policyType';\n\nexport class Policy extends Domain {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(obj?: PolicyData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.organizationId = obj.organizationId;\n this.type = obj.type;\n this.data = obj.data;\n this.enabled = obj.enabled;\n }\n}\n","import { PolicyResponse } from '../response/policyResponse';\n\nimport { PolicyType } from '../../enums/policyType';\n\nexport class PolicyData {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(response: PolicyResponse) {\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.type = response.type;\n this.data = response.data;\n this.enabled = response.enabled;\n }\n}\n","import { OnInit } from '@angular/core';\n\nimport { CryptoService } from '../../abstractions/crypto.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { MessagingService } from '../../abstractions/messaging.service';\nimport { PasswordGenerationService } from '../../abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { PolicyService } from '../../abstractions/policy.service';\nimport { UserService } from '../../abstractions/user.service';\n\nimport { CipherString } from '../../models/domain/cipherString';\nimport { MasterPasswordPolicyOptions } from '../../models/domain/masterPasswordPolicyOptions';\nimport { SymmetricCryptoKey } from '../../models/domain/symmetricCryptoKey';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class ChangePasswordComponent implements OnInit {\n masterPassword: string;\n masterPasswordRetype: string;\n formPromise: Promise;\n masterPasswordScore: number;\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n\n protected email: string;\n protected kdf: KdfType;\n protected kdfIterations: number;\n\n private masterPasswordStrengthTimeout: any;\n\n constructor(protected i18nService: I18nService, protected cryptoService: CryptoService,\n protected messagingService: MessagingService, protected userService: UserService,\n protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService, protected policyService: PolicyService) { }\n\n async ngOnInit() {\n this.email = await this.userService.getEmail();\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions();\n }\n\n getPasswordScoreAlertDisplay() {\n if (this.enforcedPolicyOptions == null) {\n return '';\n }\n\n let str: string;\n switch (this.enforcedPolicyOptions.minComplexity) {\n case 4:\n str = this.i18nService.t('strong');\n break;\n case 3:\n str = this.i18nService.t('good');\n break;\n default:\n str = this.i18nService.t('weak');\n break;\n }\n return str + ' (' + this.enforcedPolicyOptions.minComplexity + ')';\n }\n\n async submit() {\n if (!await this.strongPassword()) {\n return;\n }\n\n if (!await this.setupSubmitActions()) {\n return;\n }\n\n const email = await this.userService.getEmail();\n if (this.kdf == null) {\n this.kdf = await this.userService.getKdf();\n }\n if (this.kdfIterations == null) {\n this.kdfIterations = await this.userService.getKdfIterations();\n }\n const key = await this.cryptoService.makeKey(this.masterPassword, email.trim().toLowerCase(),\n this.kdf, this.kdfIterations);\n const masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n\n let encKey: [SymmetricCryptoKey, CipherString] = null;\n const existingEncKey = await this.cryptoService.getEncKey();\n if (existingEncKey == null) {\n encKey = await this.cryptoService.makeEncKey(key);\n } else {\n encKey = await this.cryptoService.remakeEncKey(key);\n }\n\n await this.performSubmitActions(masterPasswordHash, key, encKey);\n }\n\n async setupSubmitActions(): Promise {\n // Override in sub-class\n // Can be used for additional validation and/or other processes the should occur before changing passwords\n return true;\n }\n\n async performSubmitActions(masterPasswordHash: string, key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, CipherString]) {\n // Override in sub-class\n }\n\n async strongPassword(): Promise {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return false;\n }\n if (this.masterPassword.length < 8) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassLength'));\n return false;\n }\n if (this.masterPassword !== this.masterPasswordRetype) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassDoesntMatch'));\n return false;\n }\n\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n\n if (this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(\n strengthResult.score,\n this.masterPassword,\n this.enforcedPolicyOptions)) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPasswordPolicyRequirementsNotMet'));\n return false;\n }\n\n if (strengthResult != null && strengthResult.score < 3) {\n const result = await this.platformUtilsService.showDialog(this.i18nService.t('weakMasterPasswordDesc'),\n this.i18nService.t('weakMasterPassword'), this.i18nService.t('yes'), this.i18nService.t('no'),\n 'warning');\n if (!result) {\n return false;\n }\n }\n\n return true;\n }\n\n updatePasswordStrength() {\n if (this.masterPasswordStrengthTimeout != null) {\n clearTimeout(this.masterPasswordStrengthTimeout);\n }\n this.masterPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n async logOut() {\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('logOutConfirmation'),\n this.i18nService.t('logOut'), this.i18nService.t('logOut'), this.i18nService.t('cancel'));\n if (confirmed) {\n this.messagingService.send('logout');\n }\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(this.email.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/));\n }\n return userInput;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { OrganizationUserStatusType } from 'jslib/enums/organizationUserStatusType';\nimport { OrganizationUserType } from 'jslib/enums/organizationUserType';\nimport { SelectionReadOnlyRequest } from 'jslib/models/request/selectionReadOnlyRequest';\nimport { OrganizationUserUserDetailsResponse } from 'jslib/models/response/organizationUserResponse';\n\nimport { Utils } from 'jslib/misc/utils';\n\n@Component({\n selector: 'app-entity-users',\n templateUrl: 'entity-users.component.html',\n})\nexport class EntityUsersComponent implements OnInit {\n @Input() entity: 'group' | 'collection';\n @Input() entityId: string;\n @Input() entityName: string;\n @Input() organizationId: string;\n @Output() onEditedUsers = new EventEmitter();\n\n organizationUserType = OrganizationUserType;\n organizationUserStatusType = OrganizationUserStatusType;\n\n showSelected = false;\n loading = true;\n formPromise: Promise;\n selectedCount = 0;\n searchText: string;\n\n private allUsers: OrganizationUserUserDetailsResponse[] = [];\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService) { }\n\n async ngOnInit() {\n await this.loadUsers();\n this.loading = false;\n }\n\n get users() {\n if (this.showSelected) {\n return this.allUsers.filter(u => (u as any).checked);\n } else {\n return this.allUsers;\n }\n }\n\n async loadUsers() {\n const users = await this.apiService.getOrganizationUsers(this.organizationId);\n this.allUsers = users.data.map(r => r).sort(Utils.getSortFunction(this.i18nService, 'email'));\n if (this.entity === 'group') {\n const response = await this.apiService.getGroupUsers(this.organizationId, this.entityId);\n if (response != null && users.data.length > 0) {\n response.forEach(s => {\n const user = users.data.filter(u => u.id === s);\n if (user != null && user.length > 0) {\n (user[0] as any).checked = true;\n }\n });\n }\n } else if (this.entity === 'collection') {\n const response = await this.apiService.getCollectionUsers(this.organizationId, this.entityId);\n if (response != null && users.data.length > 0) {\n response.forEach(s => {\n const user = users.data.filter(u => !u.accessAll && u.id === s.id);\n if (user != null && user.length > 0) {\n (user[0] as any).checked = true;\n (user[0] as any).readOnly = s.readOnly;\n (user[0] as any).hidePasswords = s.hidePasswords;\n }\n });\n }\n }\n\n this.allUsers.forEach(u => {\n if (this.entity === 'collection' && u.accessAll) {\n (u as any).checked = true;\n }\n if ((u as any).checked) {\n this.selectedCount++;\n }\n });\n }\n\n check(u: OrganizationUserUserDetailsResponse) {\n if (this.entity === 'collection' && u.accessAll) {\n return;\n }\n (u as any).checked = !(u as any).checked;\n this.selectedChanged(u);\n }\n\n selectedChanged(u: OrganizationUserUserDetailsResponse) {\n if ((u as any).checked) {\n this.selectedCount++;\n } else {\n if (this.entity === 'collection') {\n (u as any).readOnly = false;\n (u as any).hidePasswords = false;\n }\n this.selectedCount--;\n }\n }\n\n filterSelected(showSelected: boolean) {\n this.showSelected = showSelected;\n }\n\n async submit() {\n try {\n if (this.entity === 'group') {\n const selections = this.users.filter(u => (u as any).checked).map(u => u.id);\n this.formPromise = this.apiService.putGroupUsers(this.organizationId, this.entityId, selections);\n } else {\n const selections = this.users.filter(u => (u as any).checked && !u.accessAll)\n .map(u => new SelectionReadOnlyRequest(u.id, !!(u as any).readOnly, !!(u as any).hidePasswords));\n this.formPromise = this.apiService.putCollectionUsers(this.organizationId, this.entityId, selections);\n }\n await this.formPromise;\n this.analytics.eventTrack.next({\n action: this.entity === 'group' ? 'Edited Group Users' : 'Edited Collection Users',\n });\n this.toasterService.popAsync('success', null, this.i18nService.t('updatedUsers'));\n this.onEditedUsers.emit();\n } catch { }\n }\n}\n","
\n
\n
\n
\n

\n {{'userAccess' | i18n}}\n {{entityName}}\n

\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n {{'noUsersInList' | i18n}}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
  {{'name' | i18n}} {{'userType' | i18n}}{{'hidePasswords' |\n i18n}}{{'readOnly' |\n i18n}}
\n \n \n \n \n {{u.email}}\n {{'invited'\n | i18n}}\n {{'accepted'\n | i18n}}\n {{u.name}}\n \n \n \n {{'userAccessAllItems' | i18n}}\n \n \n {{'owner' | i18n}}\n {{'admin' | i18n}}\n {{'manager' | i18n}}\n {{'user' | i18n}}\n {{'custom' | i18n}}\n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { EventService } from '../../services/event.service';\n\nimport { EventResponse } from 'jslib/models/response/eventResponse';\nimport { ListResponse } from 'jslib/models/response/listResponse';\n\n@Component({\n selector: 'app-entity-events',\n templateUrl: 'entity-events.component.html',\n})\nexport class EntityEventsComponent implements OnInit {\n @Input() name: string;\n @Input() entity: 'user' | 'cipher';\n @Input() entityId: string;\n @Input() organizationId: string;\n @Input() showUser = false;\n\n loading = true;\n loaded = false;\n events: any[];\n start: string;\n end: string;\n continuationToken: string;\n refreshPromise: Promise;\n morePromise: Promise;\n\n private orgUsersUserIdMap = new Map();\n private orgUsersIdMap = new Map();\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private eventService: EventService, private toasterService: ToasterService) { }\n\n async ngOnInit() {\n const defaultDates = this.eventService.getDefaultDateFilters();\n this.start = defaultDates[0];\n this.end = defaultDates[1];\n await this.load();\n }\n\n async load() {\n if (this.showUser) {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n response.data.forEach(u => {\n const name = u.name == null || u.name.trim() === '' ? u.email : u.name;\n this.orgUsersIdMap.set(u.id, { name: name, email: u.email });\n this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n }\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n async loadEvents(clearExisting: boolean) {\n if (this.refreshPromise != null || this.morePromise != null) {\n return;\n }\n\n let dates: string[] = null;\n try {\n dates = this.eventService.formatDateFilters(this.start, this.end);\n } catch (e) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidDateRange'));\n return;\n }\n\n this.loading = true;\n let response: ListResponse;\n try {\n let promise: Promise;\n if (this.entity === 'user') {\n promise = this.apiService.getEventsOrganizationUser(this.organizationId, this.entityId,\n dates[0], dates[1], clearExisting ? null : this.continuationToken);\n } else {\n promise = this.apiService.getEventsCipher(this.entityId,\n dates[0], dates[1], clearExisting ? null : this.continuationToken);\n }\n if (clearExisting) {\n this.refreshPromise = promise;\n } else {\n this.morePromise = promise;\n }\n response = await promise;\n } catch { }\n\n this.continuationToken = response.continuationToken;\n const events = response.data.map(r => {\n const userId = r.actingUserId == null ? r.userId : r.actingUserId;\n const eventInfo = this.eventService.getEventInfo(r);\n const user = this.showUser && userId != null && this.orgUsersUserIdMap.has(userId) ?\n this.orgUsersUserIdMap.get(userId) : null;\n return {\n message: eventInfo.message,\n appIcon: eventInfo.appIcon,\n appName: eventInfo.appName,\n userId: userId,\n userName: user != null ? user.name : this.showUser ? this.i18nService.t('unknown') : null,\n userEmail: user != null ? user.email : this.showUser ? '' : null,\n date: r.date,\n ip: r.ipAddress,\n type: r.type,\n };\n });\n\n if (!clearExisting && this.events != null && this.events.length > 0) {\n this.events = this.events.concat(events);\n } else {\n this.events = events;\n }\n\n this.loading = false;\n this.morePromise = null;\n this.refreshPromise = null;\n }\n}\n","
\n
\n
\n
\n

\n {{'eventLogs' | i18n}}\n {{name}}\n

\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n
\n
\n \n \n -\n \n \n
\n \n
\n
\n
\n {{'noEventsInList' | i18n}}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{'timestamp' | i18n}}\n {{'device' | i18n}}\n {{'user' | i18n}}{{'event' | i18n}}
{{e.date | date:'medium'}}\n \n {{e.appName}}, {{e.ip}}\n \n {{e.userName}}\n
\n \n
\n
\n \n
\n
\n
\n
\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class PermissionsApi extends BaseResponse {\n accessBusinessPortal: boolean;\n accessEventLogs: boolean;\n accessImportExport: boolean;\n accessReports: boolean;\n manageAllCollections: boolean;\n manageAssignedCollections: boolean;\n manageCiphers: boolean;\n manageGroups: boolean;\n manageSso: boolean;\n managePolicies: boolean;\n manageUsers: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return this;\n }\n this.accessBusinessPortal = this.getResponseProperty('AccessBusinessPortal');\n this.accessEventLogs = this.getResponseProperty('AccessEventLogs');\n this.accessImportExport = this.getResponseProperty('AccessImportExport');\n this.accessReports = this.getResponseProperty('AccessReports');\n this.manageAllCollections = this.getResponseProperty('ManageAllCollections');\n this.manageAssignedCollections = this.getResponseProperty('ManageAssignedCollections');\n this.manageCiphers = this.getResponseProperty('ManageCiphers');\n this.manageGroups = this.getResponseProperty('ManageGroups');\n this.manageSso = this.getResponseProperty('ManageSso');\n this.managePolicies = this.getResponseProperty('ManagePolicies');\n this.manageUsers = this.getResponseProperty('ManageUsers');\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib/models/request/passwordVerificationRequest';\n\nimport { ApiKeyResponse } from 'jslib/models/response/apiKeyResponse';\n\n@Component({\n selector: 'app-api-key',\n templateUrl: 'api-key.component.html',\n})\nexport class ApiKeyComponent {\n keyType: string;\n isRotation: boolean;\n postKey: (entityId: string, request: PasswordVerificationRequest) => Promise;\n entityId: string;\n scope: string;\n grantType: string;\n apiKeyTitle: string;\n apiKeyWarning: string;\n apiKeyDescription: string;\n\n masterPassword: string;\n formPromise: Promise;\n clientId: string;\n clientSecret: string;\n\n constructor(private i18nService: I18nService, private analytics: Angulartics2,\n private toasterService: ToasterService, private cryptoService: CryptoService) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.postKey(this.entityId, request);\n const response = await this.formPromise;\n this.clientSecret = response.apiKey;\n this.clientId = `${this.keyType}.${this.entityId}`;\n this.analytics.eventTrack.next({ action: `Viewed ${this.keyType} API Key` });\n } catch { }\n }\n}\n","
\n
\n
\n
\n

{{apiKeyTitle | i18n}}

\n \n
\n
\n

{{apiKeyDescription | i18n}}

\n \n \n \n \n {{apiKeyWarning | i18n}}\n \n

\n client_id:
\n {{clientId}}\n

\n

\n client_secret:
\n {{clientSecret}}\n

\n

\n scope:
\n {{scope}}\n

\n

\n grant_type:
\n {{grantType}}\n

\n
\n
\n
\n \n \n
\n
\n
\n
\n","import {\n Component,\n Input,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-purge-vault',\n templateUrl: 'purge-vault.component.html',\n})\nexport class PurgeVaultComponent {\n @Input() organizationId?: string = null;\n\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private router: Router) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postPurgeCiphers(request, this.organizationId);\n await this.formPromise;\n this.analytics.eventTrack.next({\n action: this.organizationId != null ? 'Purged Organization Vault' : 'Purged Vault',\n });\n this.toasterService.popAsync('success', null, this.i18nService.t('vaultPurged'));\n if (this.organizationId != null) {\n this.router.navigate(['organizations', this.organizationId, 'vault']);\n } else {\n this.router.navigate(['vault']);\n }\n } catch { }\n }\n}\n","
\n
\n
\n
\n

{{'purgeVault' | i18n}}

\n \n
\n
\n

{{(organizationId ? 'purgeOrgVaultDesc' : 'purgeVaultDesc') | i18n}}

\n {{'purgeVaultWarning' | i18n}}\n \n \n
\n
\n \n \n
\n
\n
\n
\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { BillingResponse } from 'jslib/models/response/billingResponse';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { PaymentMethodType } from 'jslib/enums/paymentMethodType';\nimport { TransactionType } from 'jslib/enums/transactionType';\nimport { VerifyBankRequest } from 'jslib/models/request/verifyBankRequest';\n\n@Component({\n selector: 'app-user-billing',\n templateUrl: 'user-billing.component.html',\n})\nexport class UserBillingComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n showAdjustPayment = false;\n showAddCredit = false;\n billing: BillingResponse;\n paymentMethodType = PaymentMethodType;\n transactionType = TransactionType;\n organizationId: string;\n verifyAmount1: number;\n verifyAmount2: number;\n\n verifyBankPromise: Promise;\n\n constructor(protected apiService: ApiService, protected i18nService: I18nService,\n protected analytics: Angulartics2, protected toasterService: ToasterService,\n protected platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n this.loading = true;\n if (this.organizationId != null) {\n this.billing = await this.apiService.getOrganizationBilling(this.organizationId);\n } else {\n this.billing = await this.apiService.getUserBilling();\n }\n this.loading = false;\n }\n\n async verifyBank() {\n if (this.loading) {\n return;\n }\n\n try {\n const request = new VerifyBankRequest();\n request.amount1 = this.verifyAmount1;\n request.amount2 = this.verifyAmount2;\n this.verifyBankPromise = this.apiService.postOrganizationVerifyBank(this.organizationId, request);\n await this.verifyBankPromise;\n this.analytics.eventTrack.next({ action: 'Verified Bank Account' });\n this.toasterService.popAsync('success', null, this.i18nService.t('verifiedBankAccount'));\n this.load();\n } catch { }\n }\n\n addCredit() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(this.i18nService.t('cannotPerformInAppPurchase'),\n this.i18nService.t('addCredit'), null, null, 'warning');\n return;\n }\n this.showAddCredit = true;\n }\n\n closeAddCredit(load: boolean) {\n this.showAddCredit = false;\n if (load) {\n this.load();\n }\n }\n\n changePayment() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(this.i18nService.t('cannotPerformInAppPurchase'),\n this.i18nService.t('changePaymentMethod'), null, null, 'warning');\n return;\n }\n this.showAdjustPayment = true;\n }\n\n closePayment(load: boolean) {\n this.showAdjustPayment = false;\n if (load) {\n this.load();\n }\n }\n\n get isCreditBalance() {\n return this.billing == null || this.billing.balance <= 0;\n }\n\n get creditOrBalance() {\n return Math.abs(this.billing != null ? this.billing.balance : 0);\n }\n\n get paymentSource() {\n return this.billing != null ? this.billing.paymentSource : null;\n }\n\n get paymentSourceInApp() {\n return this.paymentSource != null &&\n (this.paymentSource.type === PaymentMethodType.AppleInApp ||\n this.paymentSource.type === PaymentMethodType.GoogleInApp);\n }\n\n get invoices() {\n return this.billing != null ? this.billing.invoices : null;\n }\n\n get transactions() {\n return this.billing != null ? this.billing.transactions : null;\n }\n}\n","
\n

\n {{'billing' | i18n}}\n

\n \n
\n\n \n {{'loading' | i18n}}\n\n\n

{{(isCreditBalance ? 'accountCredit' : 'accountBalance') | i18n}}

\n

{{creditOrBalance | currency:'$'}}

\n

{{'creditAppliedDesc' | i18n}}

\n \n \n \n

{{'paymentMethod' | i18n}}

\n

{{'noPaymentMethod' | i18n}}

\n \n \n

{{'verifyBankAccountDesc' | i18n}} {{'verifyBankAccountFailureWarning' | i18n}}

\n
\n \n
\n
\n
$0.
\n
\n \n
\n \n
\n
\n
$0.
\n
\n \n
\n \n
\n
\n

\n \n {{'inAppPurchase' | i18n}}\n {{paymentSource.description}}\n

\n
\n \n \n \n

{{'invoices' | i18n}}

\n

{{'noInvoices' | i18n}}

\n \n \n \n \n \n \n \n \n \n
{{i.date | date:'mediumDate'}}\n \n \n \n {{'invoiceNumber' | i18n : i.number}}\n {{i.amount | currency:'$'}}\n \n \n {{'paid' | i18n}}\n \n \n \n {{'unpaid' | i18n}}\n \n
\n

{{'transactions' | i18n}}

\n

{{'noTransactions' | i18n}}

\n \n \n \n \n \n \n \n \n \n
{{t.createdDate | date:'mediumDate'}}\n \n {{'chargeNoun' | i18n}}\n \n {{'refundNoun' | i18n}}\n \n \n {{t.details}}\n \n {{t.amount | currency:'$'}}
\n * {{'chargesStatement' | i18n : 'BITWARDEN'}}\n
\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { PaymentMethodType } from 'jslib/enums/paymentMethodType';\n\nimport { BitPayInvoiceRequest } from 'jslib/models/request/bitPayInvoiceRequest';\n\nimport { WebConstants } from '../../services/webConstants';\n\n@Component({\n selector: 'app-add-credit',\n templateUrl: 'add-credit.component.html',\n})\nexport class AddCreditComponent implements OnInit {\n @Input() creditAmount: string;\n @Input() showOptions = true;\n @Input() method = PaymentMethodType.PayPal;\n @Input() organizationId: string;\n @Output() onAdded = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild('ppButtonForm', { read: ElementRef, static: true }) ppButtonFormRef: ElementRef;\n\n paymentMethodType = PaymentMethodType;\n ppButtonFormAction = WebConstants.paypal.buttonActionProduction;\n ppButtonBusinessId = WebConstants.paypal.businessIdProduction;\n ppButtonCustomField: string;\n ppLoading = false;\n subject: string;\n returnUrl: string;\n formPromise: Promise;\n\n private userId: string;\n private name: string;\n private email: string;\n\n constructor(private userService: UserService, private apiService: ApiService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private platformUtilsService: PlatformUtilsService) {\n if (platformUtilsService.isDev()) {\n this.ppButtonFormAction = WebConstants.paypal.buttonActionSandbox;\n this.ppButtonBusinessId = WebConstants.paypal.businessIdSandbox;\n }\n }\n\n async ngOnInit() {\n if (this.organizationId != null) {\n if (this.creditAmount == null) {\n this.creditAmount = '20.00';\n }\n this.ppButtonCustomField = 'organization_id:' + this.organizationId;\n const org = await this.userService.getOrganization(this.organizationId);\n if (org != null) {\n this.subject = org.name;\n this.name = org.name;\n }\n } else {\n if (this.creditAmount == null) {\n this.creditAmount = '10.00';\n }\n this.userId = await this.userService.getUserId();\n this.subject = await this.userService.getEmail();\n this.email = this.subject;\n this.ppButtonCustomField = 'user_id:' + this.userId;\n }\n this.ppButtonCustomField += ',account_credit:1';\n this.returnUrl = window.location.href;\n }\n\n async submit() {\n if (this.creditAmount == null || this.creditAmount === '') {\n return;\n }\n\n if (this.method === PaymentMethodType.PayPal) {\n this.ppButtonFormRef.nativeElement.submit();\n this.ppLoading = true;\n return;\n }\n if (this.method === PaymentMethodType.BitPay) {\n try {\n const req = new BitPayInvoiceRequest();\n req.email = this.email;\n req.name = this.name;\n req.credit = true;\n req.amount = this.creditAmountNumber;\n req.organizationId = this.organizationId;\n req.userId = this.userId;\n req.returnUrl = this.returnUrl;\n this.formPromise = this.apiService.postBitPayInvoice(req);\n const bitPayUrl: string = await this.formPromise;\n this.platformUtilsService.launchUri(bitPayUrl);\n } catch { }\n return;\n }\n try {\n this.analytics.eventTrack.next({\n action: 'Added Credit',\n });\n this.onAdded.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n formatAmount() {\n try {\n if (this.creditAmount != null && this.creditAmount !== '') {\n const floatAmount = Math.abs(parseFloat(this.creditAmount));\n if (floatAmount > 0) {\n this.creditAmount = parseFloat((Math.round(floatAmount * 100) / 100).toString())\n .toFixed(2).toString();\n return;\n }\n }\n } catch { }\n this.creditAmount = '';\n }\n\n get creditAmountNumber(): number {\n if (this.creditAmount != null && this.creditAmount !== '') {\n try {\n return parseFloat(this.creditAmount);\n } catch { }\n }\n return null;\n }\n}\n","
\n
\n \n

{{'addCredit' | i18n}}

\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n \n
\n
$USD
\n \n
\n
\n
\n {{'creditDelayed' | i18n}}\n
\n \n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { PaymentRequest } from 'jslib/models/request/paymentRequest';\n\nimport { PaymentMethodType } from 'jslib/enums/paymentMethodType';\n\nimport { PaymentComponent } from './payment.component';\nimport { TaxInfoComponent } from './tax-info.component';\n\n@Component({\n selector: 'app-adjust-payment',\n templateUrl: 'adjust-payment.component.html',\n})\nexport class AdjustPaymentComponent {\n @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent, { static: true }) taxInfoComponent: TaxInfoComponent;\n\n @Input() currentType?: PaymentMethodType;\n @Input() organizationId: string;\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n paymentMethodType = PaymentMethodType;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService) { }\n\n async submit() {\n try {\n const request = new PaymentRequest();\n this.formPromise = this.paymentComponent.createPaymentToken().then(result => {\n request.paymentToken = result[0];\n request.paymentMethodType = result[1];\n request.postalCode = this.taxInfoComponent.taxInfo.postalCode;\n request.country = this.taxInfoComponent.taxInfo.country;\n if (this.organizationId == null) {\n return this.apiService.postAccountPayment(request);\n } else {\n request.taxId = this.taxInfoComponent.taxInfo.taxId;\n request.state = this.taxInfoComponent.taxInfo.state;\n request.line1 = this.taxInfoComponent.taxInfo.line1;\n request.line2 = this.taxInfoComponent.taxInfo.line2;\n request.city = this.taxInfoComponent.taxInfo.city;\n request.state = this.taxInfoComponent.taxInfo.state;\n return this.apiService.postOrganizationPayment(this.organizationId, request);\n }\n });\n await this.formPromise;\n this.analytics.eventTrack.next({\n action: this.currentType == null ? 'Added Payment Method' : 'Changed Payment Method',\n });\n this.toasterService.popAsync('success', null, this.i18nService.t('updatedPaymentMethod'));\n this.onAdjusted.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n changeCountry() {\n if (this.taxInfoComponent.taxInfo.country === 'US') {\n this.paymentComponent.hideBank = !this.organizationId;\n } else {\n this.paymentComponent.hideBank = true;\n if (this.paymentComponent.method === PaymentMethodType.BankAccount) {\n this.paymentComponent.method = PaymentMethodType.Card;\n this.paymentComponent.changeMethod();\n }\n }\n }\n}\n","
\n
\n \n

{{(currentType != null ? 'changePaymentMethod' : 'addPaymentMethod') | i18n}}

\n \n \n \n \n
\n
\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\n@Component({\n selector: 'app-update-license',\n templateUrl: 'update-license.component.html',\n})\nexport class UpdateLicenseComponent {\n @Input() organizationId: string;\n @Output() onUpdated = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService) { }\n\n async submit() {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n try {\n const fd = new FormData();\n fd.append('license', files[0]);\n\n let updatePromise: Promise = null;\n if (this.organizationId == null) {\n updatePromise = this.apiService.postAccountLicense(fd);\n } else {\n updatePromise = this.apiService.postOrganizationLicenseUpdate(this.organizationId, fd);\n }\n\n this.formPromise = updatePromise.then(() => {\n return this.apiService.refreshIdentityToken();\n });\n\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Updated License' });\n this.toasterService.popAsync('success', null, this.i18nService.t('updatedLicense'));\n this.onUpdated.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","
\n
\n \n \n {{'licenseFileDesc' | i18n : (!organizationId ? 'bitwarden_premium_license.json' : 'bitwarden_organization_license.json')}}\n
\n \n \n
\n","export enum ProductType {\n Free = 0,\n Families = 1,\n Teams = 2,\n Enterprise = 3,\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { StorageRequest } from 'jslib/models/request/storageRequest';\n\nimport { PaymentResponse } from 'jslib/models/response/paymentResponse';\n\nimport { PaymentComponent } from './payment.component';\n\n@Component({\n selector: 'app-adjust-storage',\n templateUrl: 'adjust-storage.component.html',\n})\nexport class AdjustStorageComponent {\n @Input() storageGbPrice = 0;\n @Input() add = true;\n @Input() organizationId: string;\n @Input() interval = 'year';\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent;\n\n storageAdjustment = 0;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private router: Router, private activatedRoute: ActivatedRoute) { }\n\n async submit() {\n try {\n const request = new StorageRequest();\n request.storageGbAdjustment = this.storageAdjustment;\n if (!this.add) {\n request.storageGbAdjustment *= -1;\n }\n\n let paymentFailed = false;\n const action = async () => {\n let response: Promise;\n if (this.organizationId == null) {\n response = this.formPromise = this.apiService.postAccountStorage(request);\n } else {\n response = this.formPromise = this.apiService.postOrganizationStorage(this.organizationId, request);\n }\n const result = await response;\n if (result != null && result.paymentIntentClientSecret != null) {\n try {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n } catch {\n paymentFailed = true;\n }\n }\n };\n this.formPromise = action();\n await this.formPromise;\n this.analytics.eventTrack.next({ action: this.add ? 'Added Storage' : 'Removed Storage' });\n this.onAdjusted.emit(this.storageAdjustment);\n if (paymentFailed) {\n this.toasterService.popAsync({\n body: this.i18nService.t('couldNotChargeCardPayInvoice'),\n type: 'warning',\n timeout: 10000,\n });\n this.router.navigate(['../billing'], { relativeTo: this.activatedRoute });\n } else {\n this.toasterService.popAsync('success', null,\n this.i18nService.t('adjustedStorage', request.storageGbAdjustment.toString()));\n }\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n get adjustedStorageTotal(): number {\n return this.storageGbPrice * this.storageAdjustment;\n }\n}\n","
\n
\n \n

{{(add ? 'addStorage' : 'removeStorage') | i18n}}

\n
\n
\n \n \n
\n
\n
\n {{'total' | i18n}}: {{storageAdjustment || 0}} GB × {{storageGbPrice | currency:'$'}}\n = {{adjustedStorageTotal\n | currency:'$'}} /{{interval | i18n}}\n
\n \n \n \n {{(add ? 'storageAddNote' : 'storageRemoveNote') | i18n}}\n \n
\n
\n\n","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\nimport { UpdateTwoFactorDuoRequest } from 'jslib/models/request/updateTwoFactorDuoRequest';\nimport { TwoFactorDuoResponse } from 'jslib/models/response/twoFactorDuoResponse';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-duo',\n templateUrl: 'two-factor-duo.component.html',\n})\nexport class TwoFactorDuoComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Duo;\n ikey: string;\n skey: string;\n host: string;\n formPromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n analytics: Angulartics2, toasterService: ToasterService,\n platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, analytics, toasterService, platformUtilsService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n protected enable() {\n const request = new UpdateTwoFactorDuoRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.integrationKey = this.ikey;\n request.secretKey = this.skey;\n request.host = this.host;\n\n return super.enable(async () => {\n if (this.organizationId != null) {\n this.formPromise = this.apiService.putTwoFactorOrganizationDuo(this.organizationId, request);\n } else {\n this.formPromise = this.apiService.putTwoFactorDuo(request);\n }\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private processResponse(response: TwoFactorDuoResponse) {\n this.ikey = response.integrationKey;\n this.skey = response.secretKey;\n this.host = response.host;\n this.enabled = response.enabled;\n }\n}\n","
\n
\n
\n
\n

\n {{'twoStepLogin' | i18n}}\n Duo\n

\n \n
\n \n \n
\n
\n \n \n {{'twoStepLoginProviderEnabled' | i18n}}\n \n \"\"\n {{'twoFactorDuoIntegrationKey' | i18n}}: {{ikey}}\n
\n {{'twoFactorDuoSecretKey' | i18n}}: {{skey}}\n
\n {{'twoFactorDuoApiHostname' | i18n}}: {{host}}\n
\n \n \"\"\n

{{'twoFactorDuoDesc' | i18n}}

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { TwoFactorProviders } from 'jslib/services/auth.service';\n\nimport { PolicyType } from 'jslib/enums/policyType';\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\nimport { ModalComponent } from '../modal.component';\n\nimport { TwoFactorAuthenticatorComponent } from './two-factor-authenticator.component';\nimport { TwoFactorDuoComponent } from './two-factor-duo.component';\nimport { TwoFactorEmailComponent } from './two-factor-email.component';\nimport { TwoFactorRecoveryComponent } from './two-factor-recovery.component';\nimport { TwoFactorU2fComponent } from './two-factor-u2f.component';\nimport { TwoFactorYubiKeyComponent } from './two-factor-yubikey.component';\n\n@Component({\n selector: 'app-two-factor-setup',\n templateUrl: 'two-factor-setup.component.html',\n})\nexport class TwoFactorSetupComponent implements OnInit {\n @ViewChild('recoveryTemplate', { read: ViewContainerRef, static: true }) recoveryModalRef: ViewContainerRef;\n @ViewChild('authenticatorTemplate', { read: ViewContainerRef, static: true }) authenticatorModalRef: ViewContainerRef;\n @ViewChild('yubikeyTemplate', { read: ViewContainerRef, static: true }) yubikeyModalRef: ViewContainerRef;\n @ViewChild('u2fTemplate', { read: ViewContainerRef, static: true }) u2fModalRef: ViewContainerRef;\n @ViewChild('duoTemplate', { read: ViewContainerRef, static: true }) duoModalRef: ViewContainerRef;\n @ViewChild('emailTemplate', { read: ViewContainerRef, static: true }) emailModalRef: ViewContainerRef;\n\n organizationId: string;\n providers: any[] = [];\n canAccessPremium: boolean;\n showPolicyWarning = false;\n loading = true;\n\n private modal: ModalComponent = null;\n\n constructor(protected apiService: ApiService, protected userService: UserService,\n protected componentFactoryResolver: ComponentFactoryResolver, protected messagingService: MessagingService,\n protected policyService: PolicyService) { }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n\n for (const key in TwoFactorProviders) {\n if (!TwoFactorProviders.hasOwnProperty(key)) {\n continue;\n }\n\n const p = (TwoFactorProviders as any)[key];\n if (this.filterProvider(p.type)) {\n continue;\n }\n\n this.providers.push({\n type: p.type,\n name: p.name,\n description: p.description,\n enabled: false,\n premium: p.premium,\n sort: p.sort,\n });\n }\n\n this.providers.sort((a: any, b: any) => a.sort - b.sort);\n await this.load();\n }\n\n async load() {\n this.loading = true;\n const providerList = await this.getTwoFactorProviders();\n providerList.data.forEach(p => {\n this.providers.forEach(p2 => {\n if (p.type === p2.type) {\n p2.enabled = p.enabled;\n }\n });\n });\n this.evaluatePolicies();\n this.loading = false;\n }\n\n manage(type: TwoFactorProviderType) {\n switch (type) {\n case TwoFactorProviderType.Authenticator:\n const authComp = this.openModal(this.authenticatorModalRef, TwoFactorAuthenticatorComponent);\n authComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Authenticator);\n });\n break;\n case TwoFactorProviderType.Yubikey:\n const yubiComp = this.openModal(this.yubikeyModalRef, TwoFactorYubiKeyComponent);\n yubiComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Yubikey);\n });\n break;\n case TwoFactorProviderType.Duo:\n const duoComp = this.openModal(this.duoModalRef, TwoFactorDuoComponent);\n duoComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Duo);\n });\n break;\n case TwoFactorProviderType.Email:\n const emailComp = this.openModal(this.emailModalRef, TwoFactorEmailComponent);\n emailComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Email);\n });\n break;\n case TwoFactorProviderType.U2f:\n const u2fComp = this.openModal(this.u2fModalRef, TwoFactorU2fComponent);\n u2fComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.U2f);\n });\n break;\n default:\n break;\n }\n }\n\n recoveryCode() {\n this.openModal(this.recoveryModalRef, TwoFactorRecoveryComponent);\n }\n\n async premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n\n protected getTwoFactorProviders() {\n return this.apiService.getTwoFactorProviders();\n }\n\n protected filterProvider(type: TwoFactorProviderType) {\n return type === TwoFactorProviderType.OrganizationDuo;\n }\n\n protected openModal(ref: ViewContainerRef, type: Type): T {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = ref.createComponent(factory).instance;\n const childComponent = this.modal.show(type, ref);\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n return childComponent;\n }\n\n protected updateStatus(enabled: boolean, type: TwoFactorProviderType) {\n if (!enabled && this.modal != null) {\n this.modal.close();\n }\n this.providers.forEach(p => {\n if (p.type === type) {\n p.enabled = enabled;\n }\n });\n this.evaluatePolicies();\n }\n\n private async evaluatePolicies() {\n if (this.organizationId == null && this.providers.filter(p => p.enabled).length === 1) {\n const policies = await this.policyService.getAll(PolicyType.TwoFactorAuthentication);\n this.showPolicyWarning = policies != null && policies.some(p => p.enabled);\n } else {\n this.showPolicyWarning = false;\n }\n }\n}\n","
\n

{{'twoStepLogin' | i18n}}

\n
\n

{{'twoStepLoginDesc' | i18n}}

\n

{{'twoStepLoginOrganizationDesc' | i18n}}

\n\n

{{'twoStepLoginRecoveryWarning' | i18n}}

\n \n
\n

\n {{'providers' | i18n}}\n \n \n {{'loading' | i18n}}\n \n

\n\n {{'twoStepLoginPolicyUserWarning' | i18n}}\n\n
    \n
  • \n
    \n \"\"\n
    \n
    \n

    \n {{p.name}}\n \n \n {{'enabled' | i18n}}\n \n \n {{'premium' | i18n}}\n \n

    \n {{p.description}}\n
    \n
    \n \n
    \n
  • \n
\n\n\n\n\n\n\n\n","import { Component } from '@angular/core';\n\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { EventService } from 'jslib/abstractions/event.service';\nimport { ExportService } from 'jslib/abstractions/export.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { ExportComponent as BaseExportComponent } from 'jslib/angular/components/export.component';\n\n@Component({\n selector: 'app-export',\n templateUrl: 'export.component.html',\n})\nexport class ExportComponent extends BaseExportComponent {\n organizationId: string;\n\n constructor(cryptoService: CryptoService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, exportService: ExportService,\n eventService: EventService) {\n super(cryptoService, i18nService, platformUtilsService, exportService, eventService, window);\n }\n\n protected saved() {\n super.saved();\n this.masterPassword = null;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('exportSuccess'));\n }\n}\n","
\n
\n

{{'exportVault' | i18n}}

\n
\n

{{'exportMasterPassword' | i18n}}

\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n
\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n} from '@angular/core';\n\nimport { AuditService } from 'jslib/abstractions/audit.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { CipherType } from 'jslib/enums/cipherType';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-exposed-passwords-report',\n templateUrl: 'exposed-passwords-report.component.html',\n})\nexport class ExposedPasswordsReportComponent extends CipherReportComponent implements OnInit {\n exposedPasswordMap = new Map();\n\n constructor(protected cipherService: CipherService, protected auditService: AuditService,\n componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService,\n userService: UserService) {\n super(componentFactoryResolver, userService, messagingService, true);\n }\n\n ngOnInit() {\n this.checkAccess();\n }\n\n async load() {\n if (await this.checkAccess()) {\n super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const exposedPasswordCiphers: CipherView[] = [];\n const promises: Promise[] = [];\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '' || c.isDeleted) {\n return;\n }\n const promise = this.auditService.passwordLeaked(c.login.password).then(exposedCount => {\n if (exposedCount > 0) {\n exposedPasswordCiphers.push(c);\n this.exposedPasswordMap.set(c.id, exposedCount);\n }\n });\n promises.push(promise);\n });\n await Promise.all(promises);\n this.ciphers = exposedPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from the org view;\n return true;\n }\n}\n","
\n

{{'exposedPasswordsReport' | i18n}}

\n
\n

{{'exposedPasswordsReportDesc' | i18n}}

\n\n
\n \n {{'noExposedPasswords' | i18n}}\n \n \n \n {{'exposedPasswordsFoundDesc' | i18n : (ciphers.length | number)}}\n \n \n \n \n \n \n \n \n \n
\n \n \n \n {{c.name}}\n \n \n {{c.name}}\n \n \n \n {{'shared' | i18n}}\n \n \n \n {{'attachments' | i18n}}\n \n
\n {{c.subTitle}}\n
\n \n {{'exposedXTimes' | i18n : (exposedPasswordMap.get(c.id) | number)}}\n \n
\n
\n
\n\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { AuditService } from 'jslib/abstractions/audit.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { EventService } from 'jslib/abstractions/event.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { TotpService } from 'jslib/abstractions/totp.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherData } from 'jslib/models/data/cipherData';\nimport { Cipher } from 'jslib/models/domain/cipher';\nimport { Organization } from 'jslib/models/domain/organization';\nimport { CipherCreateRequest } from 'jslib/models/request/cipherCreateRequest';\nimport { CipherRequest } from 'jslib/models/request/cipherRequest';\n\nimport { AddEditComponent as BaseAddEditComponent } from '../../vault/add-edit.component';\n\n@Component({\n selector: 'app-org-vault-add-edit',\n templateUrl: '../../vault/add-edit.component.html',\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n organization: Organization;\n originalCipher: Cipher = null;\n\n constructor(cipherService: CipherService, folderService: FolderService,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n auditService: AuditService, stateService: StateService,\n userService: UserService, collectionService: CollectionService,\n totpService: TotpService, passwordGenerationService: PasswordGenerationService,\n private apiService: ApiService, messagingService: MessagingService,\n eventService: EventService, policyService: PolicyService) {\n super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, totpService, passwordGenerationService, messagingService,\n eventService, policyService);\n }\n\n protected allowOwnershipAssignment() {\n if (this.ownershipOptions != null && (this.ownershipOptions.length > 1 || !this.allowPersonal)) {\n if (this.organization != null) {\n return this.cloneMode && this.organization.canManageAllCollections;\n } else {\n return !this.editMode || this.cloneMode;\n }\n }\n return false;\n }\n\n protected loadCollections() {\n if (!this.organization.canManageAllCollections) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected async loadCipher() {\n if (!this.organization.canManageAllCollections) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n const data = new CipherData(response);\n this.originalCipher = new Cipher(data);\n return new Cipher(data);\n }\n\n protected encryptCipher() {\n if (!this.organization.canManageAllCollections) {\n return super.encryptCipher();\n }\n return this.cipherService.encrypt(this.cipher, null, this.originalCipher);\n }\n\n protected async saveCipher(cipher: Cipher) {\n if (!this.organization.canManageAllCollections || cipher.organizationId == null) {\n return super.saveCipher(cipher);\n }\n if (this.editMode && !this.cloneMode) {\n const request = new CipherRequest(cipher);\n return this.apiService.putCipherAdmin(this.cipherId, request);\n } else {\n const request = new CipherCreateRequest(cipher);\n return this.apiService.postCipherAdmin(request);\n }\n }\n\n protected async deleteCipher() {\n if (!this.organization.canManageAllCollections) {\n return super.deleteCipher();\n }\n return this.cipher.isDeleted ? this.apiService.deleteCipherAdmin(this.cipherId)\n : this.apiService.putDeleteCipherAdmin(this.cipherId);\n }\n}\n","import { AttachmentResponse } from '../response/attachmentResponse';\n\nexport class AttachmentData {\n id: string;\n url: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(response?: AttachmentResponse) {\n if (response == null) {\n return;\n }\n this.id = response.id;\n this.url = response.url;\n this.fileName = response.fileName;\n this.key = response.key;\n this.size = response.size;\n this.sizeName = response.sizeName;\n }\n}\n","import { CardApi } from '../api/cardApi';\n\nexport class CardData {\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(data?: CardApi) {\n if (data == null) {\n return;\n }\n\n this.cardholderName = data.cardholderName;\n this.brand = data.brand;\n this.number = data.number;\n this.expMonth = data.expMonth;\n this.expYear = data.expYear;\n this.code = data.code;\n }\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { FieldApi } from '../api/fieldApi';\n\nexport class FieldData {\n type: FieldType;\n name: string;\n value: string;\n\n constructor(response?: FieldApi) {\n if (response == null) {\n return;\n }\n this.type = response.type;\n this.name = response.name;\n this.value = response.value;\n }\n}\n","import { IdentityApi } from '../api/identityApi';\n\nexport class IdentityData {\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(data?: IdentityApi) {\n if (data == null) {\n return;\n }\n\n this.title = data.title;\n this.firstName = data.firstName;\n this.middleName = data.middleName;\n this.lastName = data.lastName;\n this.address1 = data.address1;\n this.address2 = data.address2;\n this.address3 = data.address3;\n this.city = data.city;\n this.state = data.state;\n this.postalCode = data.postalCode;\n this.country = data.country;\n this.company = data.company;\n this.email = data.email;\n this.phone = data.phone;\n this.ssn = data.ssn;\n this.username = data.username;\n this.passportNumber = data.passportNumber;\n this.licenseNumber = data.licenseNumber;\n }\n}\n","import { LoginApi } from '../api/loginApi';\n\nimport { LoginUriData } from './loginUriData';\n\nexport class LoginData {\n uris: LoginUriData[];\n username: string;\n password: string;\n passwordRevisionDate: string;\n totp: string;\n\n constructor(data?: LoginApi) {\n if (data == null) {\n return;\n }\n\n this.username = data.username;\n this.password = data.password;\n this.passwordRevisionDate = data.passwordRevisionDate;\n this.totp = data.totp;\n\n if (data.uris) {\n this.uris = data.uris.map(u => new LoginUriData(u));\n }\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriApi } from '../api/loginUriApi';\n\nexport class LoginUriData {\n uri: string;\n match: UriMatchType = null;\n\n constructor(data?: LoginUriApi) {\n if (data == null) {\n return;\n }\n this.uri = data.uri;\n this.match = data.match;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteApi } from '../api/secureNoteApi';\n\nexport class SecureNoteData {\n type: SecureNoteType;\n\n constructor(data?: SecureNoteApi) {\n if (data == null) {\n return;\n }\n\n this.type = data.type;\n }\n}\n","import { AttachmentData } from '../data/attachmentData';\n\nimport { AttachmentView } from '../view/attachmentView';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { CryptoService } from '../../abstractions/crypto.service';\n\nimport { Utils } from '../../misc/utils';\n\nexport class Attachment extends Domain {\n id: string;\n url: string;\n size: string;\n sizeName: string;\n key: CipherString;\n fileName: CipherString;\n\n constructor(obj?: AttachmentData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.size = obj.size;\n this.buildDomainModel(this, obj, {\n id: null,\n url: null,\n sizeName: null,\n fileName: null,\n key: null,\n }, alreadyEncrypted, ['id', 'url', 'sizeName']);\n }\n\n async decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(new AttachmentView(this), {\n fileName: null,\n }, orgId, encKey);\n\n if (this.key != null) {\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error('global bitwardenContainerService not initialized.');\n }\n\n try {\n const orgKey = await cryptoService.getOrgKey(orgId);\n const decValue = await cryptoService.decryptToBytes(this.key, orgKey ?? encKey);\n view.key = new SymmetricCryptoKey(decValue);\n } catch (e) {\n // TODO: error?\n }\n }\n\n return view;\n }\n\n toAttachmentData(): AttachmentData {\n const a = new AttachmentData();\n a.size = this.size;\n this.buildDataModel(this, a, {\n id: null,\n url: null,\n sizeName: null,\n fileName: null,\n key: null,\n }, ['id', 'url', 'sizeName']);\n return a;\n }\n}\n","import { View } from './view';\n\nimport { Password } from '../domain/password';\n\nexport class PasswordHistoryView implements View {\n password: string = null;\n lastUsedDate: Date = null;\n\n constructor(ph?: Password) {\n if (!ph) {\n return;\n }\n\n this.lastUsedDate = ph.lastUsedDate;\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { ImportOption, ImportService } from 'jslib/abstractions/import.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport Swal, { SweetAlertIcon } from 'sweetalert2/dist/sweetalert2.js';\n\n@Component({\n selector: 'app-import',\n templateUrl: 'import.component.html',\n})\nexport class ImportComponent implements OnInit {\n featuredImportOptions: ImportOption[];\n importOptions: ImportOption[];\n format: string = null;\n fileContents: string;\n formPromise: Promise;\n loading: boolean = false;\n\n protected organizationId: string = null;\n protected successNavigate: any[] = ['vault'];\n\n constructor(protected i18nService: I18nService, protected analytics: Angulartics2,\n protected toasterService: ToasterService, protected importService: ImportService,\n protected router: Router, protected platformUtilsService: PlatformUtilsService) { }\n\n ngOnInit() {\n this.setImportOptions();\n this.importOptions.sort((a, b) => {\n if (a.name == null && b.name != null) {\n return -1;\n }\n if (a.name != null && b.name == null) {\n return 1;\n }\n if (a.name == null && b.name == null) {\n return 0;\n }\n\n return this.i18nService.collator ? this.i18nService.collator.compare(a.name, b.name) :\n a.name.localeCompare(b.name);\n });\n }\n\n async submit() {\n this.loading = true;\n\n const importer = this.importService.getImporter(this.format, this.organizationId);\n if (importer === null) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFormat'));\n this.loading = false;\n return;\n }\n\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if ((files == null || files.length === 0) && (this.fileContents == null || this.fileContents === '')) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n this.loading = false;\n return;\n }\n\n let fileContents = this.fileContents;\n if (files != null && files.length > 0) {\n try {\n const content = await this.getFileContents(files[0]);\n if (content != null) {\n fileContents = content;\n }\n } catch { }\n }\n\n if (fileContents == null || fileContents === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n this.loading = false;\n return;\n }\n\n try {\n this.formPromise = this.importService.import(importer, fileContents, this.organizationId);\n const error = await this.formPromise;\n if (error != null) {\n this.error(error);\n this.loading = false;\n return;\n }\n this.analytics.eventTrack.next({\n action: 'Imported Data',\n properties: { label: this.format },\n });\n this.toasterService.popAsync('success', null, this.i18nService.t('importSuccess'));\n this.router.navigate(this.successNavigate);\n } catch { }\n\n this.loading = false;\n }\n\n getFormatInstructionTitle() {\n if (this.format == null) {\n return null;\n }\n\n const results = this.featuredImportOptions.concat(this.importOptions).filter(o => o.id === this.format);\n if (results.length > 0) {\n return this.i18nService.t('instructionsFor', results[0].name);\n }\n return null;\n }\n\n protected setImportOptions() {\n this.featuredImportOptions = [{\n id: null,\n name: '-- ' + this.i18nService.t('select') + ' --',\n }, ...this.importService.featuredImportOptions];\n this.importOptions = this.importService.regularImportOptions;\n }\n\n private async error(error: Error) {\n this.analytics.eventTrack.next({\n action: 'Import Data Failed',\n properties: { label: this.format },\n });\n\n await Swal.fire({\n heightAuto: false,\n buttonsStyling: false,\n icon: 'error' as SweetAlertIcon,\n iconHtml: ``,\n input: 'textarea',\n inputValue: error.message,\n inputAttributes: {\n 'readonly': 'true',\n },\n title: this.i18nService.t('importError'),\n text: this.i18nService.t('importErrorDesc'),\n showConfirmButton: true,\n confirmButtonText: this.i18nService.t('ok'),\n onOpen: popupEl => {\n popupEl.querySelector('.swal2-textarea').scrollTo(0, 0);\n },\n });\n }\n\n private getFileContents(file: File): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsText(file, 'utf-8');\n reader.onload = evt => {\n if (this.format === 'lastpasscsv' && file.type === 'text/html') {\n const parser = new DOMParser();\n const doc = parser.parseFromString((evt.target as any).result, 'text/html');\n const pre = doc.querySelector('pre');\n if (pre != null) {\n resolve(pre.textContent);\n return;\n }\n reject();\n return;\n }\n\n resolve((evt.target as any).result);\n };\n reader.onerror = () => {\n reject();\n };\n });\n }\n}\n","
\n

{{'importData' | i18n}}

\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n See detailed instructions on our help site at\n \n https://help.bitwarden.com/article/export-your-data/\n \n \n See detailed instructions on our help site at\n \n https://help.bitwarden.com/article/import-from-lastpass/\n \n \n Using the KeePassX desktop application, navigate to \"Database\" → \"Export to CSV file\" and save the CSV\n file.\n \n \n In the Avira web vault, go to \"Settings\" → \"My Data\" → \"Export data\" and save the CSV file.\n \n \n In the Blur web vault, click your username at the top and go to \"Settings\" → \"Export Data\", then click\n \"Export CSV\"\n for your \"Accounts\".\n \n \n Using the SaveInCloud desktop application, navigate to \"File\" → \"Export\" → \"As XML\" and save the\n XML file.\n \n \n Using the Padlock desktop application, click the hamburger icon in the top left corner and navigate to\n \"Settings\" →\n \"Export\" button and save the file \"As CSV\".\n \n \n Using the KeePass 2 desktop application, navigate to \"File\" → \"Export\" and select the \"KeePass XML\n (2.x)\" option.\n \n \n Using the Universal Password Manager desktop application, navigate to \"Database\" → \"Export\" and save\n the CSV file.\n \n \n Using the SaferPass browser extension, click the hamburger icon in the top left corner and navigate to\n \"Settings\". Click the \"Export accounts\" button to save the CSV file.\n \n \n Using the Meldium web vault, navigate to \"Settings\". Locate the \"Export data\" function and click \"Show me my\n data\" to save the CSV file.\n \n \n Log into the Keeper web vault (keepersecurity.com/vault). Navigate to \"Backup\" (top right) and find the\n \"Export to .csv File\" option. Click \"Export Now\" to save the CSV file.\n \n \n \n The process is exactly the same as importing from Google Chrome.\n \n See detailed instructions on our help site at\n \n https://help.bitwarden.com/article/import-from-chrome/\n \n \n See detailed instructions on our help site at\n \n https://bitwarden.com/help/article/import-from-firefox/.\n \n \n See detailed instructions on our help site at\n \n https://help.bitwarden.com/article/import-from-1password/.\n \n \n Using the Password Dragon desktop application, navigate to \"File\" → \"Export\" → \"To XML\". In the\n dialog that pops up select \"All Rows\" and check all fields. Click the \"Export\" button and save the XML file.\n \n \n Using the Enpass desktop application, navigate to \"File\" → \"Export\" → \"As CSV\". Select \"OK\" to the\n warning alert and save the CSV file. Note that the importer only supports files exported while Enpass is set\n to the English language, so adjust your settings accordingly.\n \n \n Using the Enpass 6 desktop application, click the menu button and navigate to \"File\" → \"Export\".\n Select the \".json\" file format option and save the JSON file.\n \n \n Using the Password Safe desktop application, navigate to \"File\" → \"Export To\" → \"XML format...\"\n and save the XML file.\n \n \n Using the Dashlane desktop application, navigate to \"File\" → \"Export\" → \"Unsecured archive\n (readable) in JSON format\" and save the JSON file.\n \n \n Using the mSecure desktop application, navigate to \"File\" → \"Export\" → \"CSV File...\" and save the\n CSV file.\n \n \n Using the Sticky Password desktop application, navigate to \"Menu\" (top right) → \"Export\" → \"Export\n all\". Select the unencrypted format XML option and save the XML file.\n \n \n Using the True Key desktop application, click the gear icon (top right) and then navigate to \"App Settings\".\n Click the \"Export\" button, enter your password and save the CSV file.\n \n \n Log into the Clipperz web application (clipperz.is/app). Click the hamburger menu icon in the top right to\n expand the navigation bar. Navigate to \"Data\" → \"Export\". Click the \"download HTML+JSON\" button to save\n the HTML file.\n \n \n Using the RoboForm Editor desktop application, navigate to \"RoboForm\" (top left) → \"Options\" →\n \"Account & Data\" and click the \"Export\" button. Select all of your data, change the \"Format\" to \"CSV\n file\" and then click the \"Export\" button to save the CSV file. Note: RoboForm only allows you to export\n Logins. Other items will not be exported.\n \n \n Log into the Passbolt web vault and navigate to the \"Passwords\" listing. Select all of the passwords you\n would like to export and click the \"Export\" button at the top of the listing. Choose the \"csv (lastpass)\"\n export format and click the \"Export\" button.\n \n \n Using the Ascendo DataVault desktop application, navigate to \"Tools\" → \"Export\". In the dialog that\n pops up, select the \"All Items (DVX, CSV)\" option. Click the \"Ok\" button to save the CSV file.\n \n \n Using the Password Boss desktop application, navigate to \"File\" → \"Export data\" → \"Password Boss\n JSON - not encrypted\" and save the JSON file.\n \n \n Log into the Zoho web vault (vault.zoho.com). Navigate to \"Tools\" → \"Export Secrets\". Select \"All\n Secrets\" and click the \"Zoho Vault Format CSV\" button. Highlight and copy the data from the textarea. Open a\n text editor like Notepad and paste the data. Save the data from the text editor as\n zoho_export.csv.\n \n \n Using the SplashID Safe desktop application, click on the SplashID blue lock logo in the top right corner.\n Navigate to \"Export\" → \"Export as CSV\" and save the CSV file.\n \n \n Using the PassKeep mobile app, navigate to \"Backup/Restore\". Locate the \"CSV Backup/Restore\" section and\n click \"Backup to CSV\" to save the CSV file.\n \n \n Make sure you have python-keyring and python-gnomekeyring installed. Save the\n GNOME Keyring Import/Export python\n script to your desktop as pw_helper.py. Open terminal and run\n chmod +rx Desktop/pw_helper.py and then\n python Desktop/pw_helper.py export Desktop/my_passwords.json. Then upload the resulting\n my_passwords.json file here to Bitwarden.\n \n \n Using the Password Agent desktop application navigate to \"File\" → \"Export\", select the \"Fields to\n export\" button and check all of the fields, change the \"Output format\" to \"CSV\", and then click the \"Start\"\n button to save the CSV file.\n \n \n Log into the Passpack website vault and navigate to \"Settings\" → \"Export\", then click the \"Download\"\n button to save the CSV file.\n \n \n Open your Passman vault and click on \"Settings\" in the bottom left corner. In the \"Settings\" window switch\n to the \"Export credentials\" tab and choose \"JSON\" as the export type. Enter your vault's passphrase and\n click the \"Export\" button to save the JSON file.\n \n \n Open the Avast Passwords desktop application and navigate to \"Settings\" → \"Import/export data\". Select\n the \"Export\" button for the \"Export to CSV file\" option to save the CSV file.\n \n \n Open the Avast Passwords desktop application and navigate to \"Settings\" → \"Import/export data\". Select\n the \"Export\" button for the \"Export to JSON file\" option to save the JSON file.\n \n \n Open the F-Secure KEY desktop application and navigate to \"Settings\" → \"Export Passwords\". Select the\n \"Export\" button, enter your master password, and save the FSK file.\n \n \n Open the Kaspersky Password Manager desktop application and navigate to \"Settings\" → \"Import/Export\".\n Locate the \"Export to text file\" section and select the \"Export\" button to save the TXT file.\n \n \n Open the RememBear desktop application and navigate to \"Settings\" → \"Account\" → \"Export\".\n Enter your master password and select the \"Export Anyway\" button to save the CSV file.\n \n \n Open the PasswordWallet desktop application and navigate to \"File\" → \"Export\" →\n \"Visible entries to text file\". Enter your password and select the \"Ok\" button to save the TXT file.\n \n \n Open the Myki desktop browser extension and navigate to \"Advanced\" → \"Export Accounts\" and then scan\n the QR code with your mobile device. Various CSV files will then be saved to your computer's\n downloads folder.\n \n \n Export your SecureSafe password safe to a CSV file with a comma delimiter.\n \n \n Open the LogMeOnce browser extension, then navigate to \"Open Menu\" → \"Export To\" and\n select \"CSV File\" to save the CSV file.\n \n \n Open the BlackBerry Password Keeper application, then navigate to \"Settings\" → \"Import/Export\".\n Select \"Export Passwords\" and follow the instructions on screen to save the unencrypted CSV file.\n \n \n Open the Buttercup desktop application and unlock your vault. Right click on your vault's icon and\n select \"Export\" to save the CSV file.\n \n \n Open the Codebook desktop application and log in. Navigate to \"File\" → \"Export all\", then click\n \"Yes\" on the dialog and save the CSV file.\n \n \n Open the newest version of the Encryptr desktop application and allow all of your data to sync.\n Once syncing of your data is complete, the download icon in the top right corner will turn pink. Click\n the download icon and save the CSV file.\n \n \n From the Yoti browser extension, click on \"Settings\", then \"Export Saved Logins\" and save the CSV file.\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n
\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { CipherType } from 'jslib/enums/cipherType';\n\nimport { Utils } from 'jslib/misc/utils';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-inactive-two-factor-report',\n templateUrl: 'inactive-two-factor-report.component.html',\n})\nexport class InactiveTwoFactorReportComponent extends CipherReportComponent implements OnInit {\n services = new Map();\n cipherDocs = new Map();\n\n constructor(protected cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService) {\n super(componentFactoryResolver, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n try {\n await this.load2fa();\n } catch { }\n if (this.services.size > 0) {\n const allCiphers = await this.getAllCiphers();\n const inactive2faCiphers: CipherView[] = [];\n const promises: Promise[] = [];\n const docs = new Map();\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || (c.login.totp != null && c.login.totp !== '') || !c.login.hasUris ||\n c.isDeleted) {\n return;\n }\n for (let i = 0; i < c.login.uris.length; i++) {\n const u = c.login.uris[i];\n if (u.uri != null && u.uri !== '') {\n const hostname = Utils.getHostname(u.uri);\n if (hostname != null && this.services.has(hostname)) {\n if (this.services.get(hostname) != null) {\n docs.set(c.id, this.services.get(hostname));\n }\n inactive2faCiphers.push(c);\n break;\n }\n }\n }\n });\n await Promise.all(promises);\n this.ciphers = inactive2faCiphers;\n this.cipherDocs = docs;\n }\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n private async load2fa() {\n if (this.services.size > 0) {\n return;\n }\n const response = await fetch(new Request('https://2fa.directory/api/v2/totp.json'));\n if (response.status !== 200) {\n throw new Error();\n }\n const responseJson = await response.json();\n for (const categoryName in responseJson) {\n if (responseJson.hasOwnProperty(categoryName)) {\n const category = responseJson[categoryName];\n for (const serviceName in category) {\n if (category.hasOwnProperty(serviceName)) {\n const service = category[serviceName];\n if (service.url != null) {\n const hostname = Utils.getHostname(service.url);\n if (hostname != null) {\n this.services.set(hostname, service.doc);\n }\n }\n }\n }\n }\n }\n }\n}\n","
\n

\n {{'inactive2faReport' | i18n}}\n \n \n {{'loading' | i18n}}\n \n

\n
\n

{{'inactive2faReportDesc' | i18n}}

\n
\n \n {{'loading' | i18n}}\n
\n
\n \n {{'noInactive2fa' | i18n}}\n \n \n \n {{'inactive2faFoundDesc' | i18n : (ciphers.length | number)}}\n \n \n \n \n \n \n \n \n \n
\n \n \n {{c.name}}\n \n \n {{'shared' | i18n}}\n \n \n \n {{'attachments' | i18n}}\n \n
\n {{c.subTitle}}\n
\n \n {{'instructions' | i18n}}\n
\n
\n
\n\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { CipherType } from 'jslib/enums/cipherType';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-reused-passwords-report',\n templateUrl: 'reused-passwords-report.component.html',\n})\nexport class ReusedPasswordsReportComponent extends CipherReportComponent implements OnInit {\n passwordUseMap: Map;\n\n constructor(protected cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService) {\n super(componentFactoryResolver, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const ciphersWithPasswords: CipherView[] = [];\n this.passwordUseMap = new Map();\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '' || c.isDeleted) {\n return;\n }\n ciphersWithPasswords.push(c);\n if (this.passwordUseMap.has(c.login.password)) {\n this.passwordUseMap.set(c.login.password, this.passwordUseMap.get(c.login.password) + 1);\n } else {\n this.passwordUseMap.set(c.login.password, 1);\n }\n });\n const reusedPasswordCiphers = ciphersWithPasswords.filter(c =>\n this.passwordUseMap.has(c.login.password) && this.passwordUseMap.get(c.login.password) > 1);\n this.ciphers = reusedPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from an organization view\n return true;\n }\n}\n","
\n

\n {{'reusedPasswordsReport' | i18n}}\n \n \n {{'loading' | i18n}}\n \n

\n
\n

{{'reusedPasswordsReportDesc' | i18n}}

\n
\n \n {{'loading' | i18n}}\n
\n
\n \n {{'noReusedPasswords' | i18n}}\n \n \n \n {{'reusedPasswordsFoundDesc' | i18n : (ciphers.length | number)}}\n \n \n \n \n \n \n \n \n \n
\n \n \n \n {{c.name}}\n \n \n {{c.name}}\n \n \n \n {{'shared' | i18n}}\n \n \n \n {{'attachments' | i18n}}\n \n
\n {{c.subTitle}}\n
\n \n {{'reusedXTimes' | i18n : passwordUseMap.get(c.login.password)}}\n \n
\n
\n
\n\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherType } from 'jslib/enums/cipherType';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-unsecured-websites-report',\n templateUrl: 'unsecured-websites-report.component.html',\n})\nexport class UnsecuredWebsitesReportComponent extends CipherReportComponent implements OnInit {\n constructor(protected cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService) {\n super(componentFactoryResolver, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const unsecuredCiphers = allCiphers.filter(c => {\n if (c.type !== CipherType.Login || !c.login.hasUris || c.isDeleted) {\n return false;\n }\n return c.login.uris.some(u => u.uri != null && u.uri.indexOf('http://') === 0);\n });\n this.ciphers = unsecuredCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n}\n","
\n

\n {{'unsecuredWebsitesReport' | i18n}}\n \n \n {{'loading' | i18n}}\n \n

\n
\n

{{'unsecuredWebsitesReportDesc' | i18n}}

\n
\n \n {{'loading' | i18n}}\n
\n
\n \n {{'noUnsecuredWebsites' | i18n}}\n \n \n \n {{'unsecuredWebsitesFoundDesc' | i18n : (ciphers.length | number)}}\n \n \n \n \n \n \n \n \n
\n \n \n {{c.name}}\n \n \n {{'shared' | i18n}}\n \n \n \n {{'attachments' | i18n}}\n \n
\n {{c.subTitle}}\n
\n
\n
\n\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { CipherType } from 'jslib/enums/cipherType';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-weak-passwords-report',\n templateUrl: 'weak-passwords-report.component.html',\n})\nexport class WeakPasswordsReportComponent extends CipherReportComponent implements OnInit {\n passwordStrengthMap = new Map();\n\n private passwordStrengthCache = new Map();\n\n constructor(protected cipherService: CipherService, protected passwordGenerationService: PasswordGenerationService,\n componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService,\n userService: UserService) {\n super(componentFactoryResolver, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const weakPasswordCiphers: CipherView[] = [];\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '' || c.isDeleted) {\n return;\n }\n const hasUsername = c.login.username != null && c.login.username.trim() !== '';\n const cacheKey = c.login.password + '_____' + (hasUsername ? c.login.username : '');\n if (!this.passwordStrengthCache.has(cacheKey)) {\n let userInput: string[] = [];\n if (hasUsername) {\n const atPosition = c.login.username.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(\n c.login.username.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/))\n .filter(i => i.length >= 3);\n } else {\n userInput = c.login.username.trim().toLowerCase().split(/[^A-Za-z0-9]/)\n .filter(i => i.length >= 3);\n }\n }\n const result = this.passwordGenerationService.passwordStrength(c.login.password,\n userInput.length > 0 ? userInput : null);\n this.passwordStrengthCache.set(cacheKey, result.score);\n }\n const score = this.passwordStrengthCache.get(cacheKey);\n if (score != null && score <= 2) {\n this.passwordStrengthMap.set(c.id, this.scoreKey(score));\n weakPasswordCiphers.push(c);\n }\n });\n this.ciphers = weakPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from the org view;\n return true;\n }\n\n private scoreKey(score: number): [string, string] {\n switch (score) {\n case 4:\n return ['strong', 'success'];\n case 3:\n return ['good', 'primary'];\n case 2:\n return ['weak', 'warning'];\n default:\n return ['veryWeak', 'danger'];\n }\n }\n}\n","
\n

\n {{'weakPasswordsReport' | i18n}}\n \n \n {{'loading' | i18n}}\n \n

\n
\n

{{'weakPasswordsReportDesc' | i18n}}

\n
\n \n {{'loading' | i18n}}\n
\n
\n \n {{'noWeakPasswords' | i18n}}\n \n \n \n {{'weakPasswordsFoundDesc' | i18n : (ciphers.length | number)}}\n \n \n \n \n \n \n \n \n \n
\n \n \n \n {{c.name}}\n \n \n {{c.name}}\n \n \n \n {{'shared' | i18n}}\n \n \n \n {{'attachments' | i18n}}\n \n
\n {{c.subTitle}}\n
\n \n {{passwordStrengthMap.get(c.id)[0] | i18n}}\n \n
\n
\n
\n\n","import { Component } from '@angular/core';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { AttachmentView } from 'jslib/models/view/attachmentView';\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from 'jslib/angular/components/attachments.component';\n\n@Component({\n selector: 'app-vault-attachments',\n templateUrl: 'attachments.component.html',\n})\nexport class AttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = false;\n\n constructor(cipherService: CipherService, i18nService: I18nService,\n cryptoService: CryptoService, userService: UserService,\n platformUtilsService: PlatformUtilsService) {\n super(cipherService, i18nService, cryptoService, userService, platformUtilsService, window);\n }\n\n protected async reupload(attachment: AttachmentView) {\n if (this.showFixOldAttachments(attachment)) {\n await this.reuploadCipherAttachment(attachment, false);\n }\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return attachment.key == null && this.cipher.organizationId == null;\n }\n}\n","
\n
\n
\n
\n

\n {{'attachments' | i18n}}\n {{cipher.name}}\n

\n \n
\n
\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n {{a.fileName}}\n
\n \n \n {{'attachmentFixDesc' | i18n}}\n \n
\n
\n {{a.sizeName}}\n
\n \n
\n
\n

{{'newAttachment' | i18n}}

\n \n \n {{'maxFileSize' | i18n}}\n
\n
\n
\n \n \n
\n
\n
\n
\n","import {\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { EventService } from 'jslib/abstractions/event.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib/abstractions/search.service';\nimport { TotpService } from 'jslib/abstractions/totp.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { Organization } from 'jslib/models/domain/organization';\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { CiphersComponent as BaseCiphersComponent } from '../../vault/ciphers.component';\n\n@Component({\n selector: 'app-org-vault-ciphers',\n templateUrl: '../../vault/ciphers.component.html',\n})\nexport class CiphersComponent extends BaseCiphersComponent {\n @Output() onEventsClicked = new EventEmitter();\n\n organization: Organization;\n accessEvents = false;\n\n protected allCiphers: CipherView[] = [];\n\n constructor(searchService: SearchService, analytics: Angulartics2,\n toasterService: ToasterService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, cipherService: CipherService,\n private apiService: ApiService, eventService: EventService, totpService: TotpService, userService: UserService) {\n super(searchService, analytics, toasterService, i18nService, platformUtilsService,\n cipherService, eventService, totpService, userService);\n }\n\n async load(filter: (cipher: CipherView) => boolean = null) {\n if (!this.organization.canManageAllCollections) {\n await super.load(filter, this.deleted);\n return;\n }\n this.accessEvents = this.organization.useEvents;\n this.allCiphers = await this.cipherService.getAllFromApiForOrganization(this.organization.id);\n this.applyFilter(filter);\n this.loaded = true;\n }\n\n async applyFilter(filter: (cipher: CipherView) => boolean = null) {\n if (this.organization.canManageAllCollections) {\n await super.applyFilter(filter);\n } else {\n const f = (c: CipherView) => c.organizationId === this.organization.id && (filter == null || filter(c));\n await super.applyFilter(f);\n }\n }\n\n async search(timeout: number = null) {\n if (!this.organization.canManageAllCollections) {\n return super.search(timeout);\n }\n this.searchPending = false;\n let filteredCiphers = this.allCiphers;\n\n if (this.searchText == null || this.searchText.trim().length < 2) {\n this.ciphers = filteredCiphers.filter(c => {\n if (c.isDeleted !== this.deleted) {\n return false;\n }\n return this.filter == null || this.filter(c);\n });\n } else {\n if (this.filter != null) {\n filteredCiphers = filteredCiphers.filter(this.filter);\n }\n this.ciphers = this.searchService.searchCiphersBasic(filteredCiphers, this.searchText, this.deleted);\n }\n await this.resetPaging();\n }\n\n events(c: CipherView) {\n this.onEventsClicked.emit(c);\n }\n\n protected deleteCipher(id: string) {\n if (!this.organization.canManageAllCollections) {\n return super.deleteCipher(id, this.deleted);\n }\n return this.deleted ? this.apiService.deleteCipherAdmin(id) : this.apiService.putDeleteCipherAdmin(id);\n }\n\n protected showFixOldAttachments(c: CipherView) {\n return this.organization.canManageAllCollections && c.hasOldAttachments;\n }\n}\n","import {\n Component,\n OnDestroy,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { CollectionView } from 'jslib/models/view/collectionView';\n\nimport { CollectionsComponent as BaseCollectionsComponent } from 'jslib/angular/components/collections.component';\n\n@Component({\n selector: 'app-vault-collections',\n templateUrl: 'collections.component.html',\n})\nexport class CollectionsComponent extends BaseCollectionsComponent implements OnDestroy {\n constructor(collectionService: CollectionService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, cipherService: CipherService) {\n super(collectionService, platformUtilsService, i18nService, cipherService);\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n this.collections.forEach(c => this.check(c, select));\n }\n}\n","
\n
\n
\n
\n

\n {{'collections' | i18n}}\n {{cipher.name}}\n

\n \n
\n
\n

{{'collectionsDesc' | i18n}}

\n
\n

{{'collections' | i18n}}

\n
\n \n \n
\n
\n
\n {{'noCollectionsInList' | i18n}}\n
\n \n \n \n \n \n \n \n
\n \n \n {{c.name}}\n
\n
\n
\n \n \n
\n
\n
\n
\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CollectionData } from 'jslib/models/data/collectionData';\nimport { Collection } from 'jslib/models/domain/collection';\nimport { Organization } from 'jslib/models/domain/organization';\nimport { CollectionDetailsResponse } from 'jslib/models/response/collectionResponse';\nimport { CollectionView } from 'jslib/models/view/collectionView';\n\nimport { GroupingsComponent as BaseGroupingsComponent } from '../../vault/groupings.component';\n\n@Component({\n selector: 'app-org-vault-groupings',\n templateUrl: '../../vault/groupings.component.html',\n})\nexport class GroupingsComponent extends BaseGroupingsComponent {\n organization: Organization;\n\n constructor(collectionService: CollectionService, folderService: FolderService,\n storageService: StorageService, userService: UserService,\n private apiService: ApiService, private i18nService: I18nService) {\n super(collectionService, folderService, storageService, userService);\n }\n\n async loadCollections() {\n if (!this.organization.canManageAllCollections) {\n await super.loadCollections(this.organization.id);\n return;\n }\n\n const collections = await this.apiService.getCollections(this.organization.id);\n if (collections != null && collections.data != null && collections.data.length) {\n const collectionDomains = collections.data.map(r =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collectionDomains);\n } else {\n this.collections = [];\n }\n\n const unassignedCollection = new CollectionView();\n unassignedCollection.name = this.i18nService.t('unassigned');\n unassignedCollection.id = 'unassigned';\n unassignedCollection.organizationId = this.organization.id;\n unassignedCollection.readOnly = true;\n this.collections.push(unassignedCollection);\n this.nestedCollections = await this.collectionService.getAllNested(this.collections);\n }\n\n collapse(grouping: CollectionView) {\n super.collapse(grouping, 'org_');\n }\n\n isCollapsed(grouping: CollectionView) {\n return super.isCollapsed(grouping, 'org_');\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n Input,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { Organization } from 'jslib/models/domain/organization';\n\nimport { ModalComponent } from '../modal.component';\n\nimport { BulkDeleteComponent } from './bulk-delete.component';\nimport { BulkMoveComponent } from './bulk-move.component';\nimport { BulkRestoreComponent } from './bulk-restore.component';\nimport { BulkShareComponent } from './bulk-share.component';\nimport { CiphersComponent } from './ciphers.component';\n\n@Component({\n selector: 'app-vault-bulk-actions',\n templateUrl: 'bulk-actions.component.html',\n})\nexport class BulkActionsComponent {\n @Input() ciphersComponent: CiphersComponent;\n @Input() modal: ModalComponent;\n @Input() deleted: boolean;\n @Input() organization: Organization;\n\n @ViewChild('bulkDeleteTemplate', { read: ViewContainerRef, static: true }) bulkDeleteModalRef: ViewContainerRef;\n @ViewChild('bulkRestoreTemplate', { read: ViewContainerRef, static: true }) bulkRestoreModalRef: ViewContainerRef;\n @ViewChild('bulkMoveTemplate', { read: ViewContainerRef, static: true }) bulkMoveModalRef: ViewContainerRef;\n @ViewChild('bulkShareTemplate', { read: ViewContainerRef, static: true }) bulkShareModalRef: ViewContainerRef;\n\n constructor(private toasterService: ToasterService,\n private i18nService: I18nService,\n private componentFactoryResolver: ComponentFactoryResolver) { }\n\n bulkDelete() {\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.bulkDeleteModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(BulkDeleteComponent, this.bulkDeleteModalRef);\n\n childComponent.permanent = this.deleted;\n childComponent.cipherIds = selectedIds;\n childComponent.organization = this.organization;\n childComponent.onDeleted.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n bulkRestore() {\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.bulkRestoreModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(BulkRestoreComponent, this.bulkRestoreModalRef);\n\n childComponent.cipherIds = selectedIds;\n childComponent.onRestored.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n bulkShare() {\n const selectedCiphers = this.ciphersComponent.getSelected();\n if (selectedCiphers.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.bulkShareModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(BulkShareComponent, this.bulkShareModalRef);\n\n childComponent.ciphers = selectedCiphers;\n childComponent.onShared.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n bulkMove() {\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.bulkMoveModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(BulkMoveComponent, this.bulkMoveModalRef);\n\n childComponent.cipherIds = selectedIds;\n childComponent.onMoved.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n selectAll(select: boolean) {\n this.ciphersComponent.selectAll(select);\n }\n}\n","
\n \n
\n \n \n \n \n
\n \n \n
\n
\n\n\n\n\n\n","import { CipherString } from './cipherString';\nimport Domain from './domainBase';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { SendFileData } from '../data/sendFileData';\n\nimport { SendFileView } from '../view/sendFileView';\n\nexport class SendFile extends Domain {\n id: string;\n size: string;\n sizeName: string;\n fileName: CipherString;\n\n constructor(obj?: SendFileData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.size = obj.size;\n this.buildDomainModel(this, obj, {\n id: null,\n sizeName: null,\n fileName: null,\n }, alreadyEncrypted, ['id', 'sizeName']);\n }\n\n async decrypt(key: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(new SendFileView(this), {\n fileName: null,\n }, null, key);\n return view;\n }\n}\n","import { CipherString } from './cipherString';\nimport Domain from './domainBase';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { SendTextData } from '../data/sendTextData';\n\nimport { SendTextView } from '../view/sendTextView';\n\nexport class SendText extends Domain {\n text: CipherString;\n hidden: boolean;\n\n constructor(obj?: SendTextData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.hidden = obj.hidden;\n this.buildDomainModel(this, obj, {\n text: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(key: SymmetricCryptoKey): Promise {\n return this.decryptObj(new SendTextView(this), {\n text: null,\n }, null, key);\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class ErrorResponse extends BaseResponse {\n message: string;\n validationErrors: { [key: string]: string[]; };\n statusCode: number;\n\n constructor(response: any, status: number, identityResponse?: boolean) {\n super(response);\n let errorModel = null;\n if (response != null) {\n const responseErrorModel = this.getResponseProperty('ErrorModel');\n if (responseErrorModel && identityResponse) {\n errorModel = responseErrorModel;\n } else {\n errorModel = response;\n }\n }\n\n if (errorModel) {\n this.message = this.getResponseProperty('Message', errorModel);\n this.validationErrors = this.getResponseProperty('ValidationErrors', errorModel);\n } else {\n if (status === 429) {\n this.message = 'Rate limit exceeded. Try again later.';\n }\n }\n this.statusCode = status;\n }\n\n getSingleMessage(): string {\n if (this.validationErrors == null) {\n return this.message;\n }\n for (const key in this.validationErrors) {\n if (!this.validationErrors.hasOwnProperty(key)) {\n continue;\n }\n if (this.validationErrors[key].length) {\n return this.validationErrors[key][0];\n }\n }\n return this.message;\n }\n\n getAllMessages(): string[] {\n const messages: string[] = [];\n if (this.validationErrors == null) {\n return messages;\n }\n for (const key in this.validationErrors) {\n if (!this.validationErrors.hasOwnProperty(key)) {\n continue;\n }\n this.validationErrors[key].forEach((item: string) => {\n let prefix = '';\n if (key.indexOf('[') > -1 && key.indexOf(']') > -1) {\n const lastSep = key.lastIndexOf('.');\n prefix = key.substr(0, lastSep > -1 ? lastSep : key.length) + ': ';\n }\n messages.push(prefix + item);\n });\n }\n return messages;\n }\n}\n","import { CipherRequest } from './cipherRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherWithIdRequest extends CipherRequest {\n id: string;\n\n constructor(cipher: Cipher) {\n super(cipher);\n this.id = cipher.id;\n }\n}\n","import { Folder } from '../domain/folder';\n\nexport class FolderRequest {\n name: string;\n\n constructor(folder: Folder) {\n this.name = folder.name ? folder.name.encryptedString : null;\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\n@Directive({\n selector: '[appSelectCopy]',\n})\nexport class SelectCopyDirective {\n constructor(private el: ElementRef, private platformUtilsService: PlatformUtilsService) { }\n\n @HostListener('copy') onCopy() {\n if (window == null) {\n return;\n }\n let copyText = '';\n const selection = window.getSelection();\n for (let i = 0; i < selection.rangeCount; i++) {\n const range = selection.getRangeAt(i);\n const text = range.toString();\n\n // The selection should only contain one line of text. In some cases however, the\n // selection contains newlines and space characters from the indentation of following\n // sibling nodes. To avoid copying passwords containing trailing newlines and spaces\n // that aren't part of the password, the selection has to be trimmed.\n let stringEndPos = text.length;\n const newLinePos = text.search(/(?:\\r\\n|\\r|\\n)/);\n if (newLinePos > -1) {\n const otherPart = text.substr(newLinePos).trim();\n if (otherPart === '') {\n stringEndPos = newLinePos;\n }\n }\n copyText += text.substring(0, stringEndPos);\n }\n this.platformUtilsService.copyToClipboard(copyText, { window: window });\n }\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\n/**\n * A pipe that sanitizes HTML and highlights numbers and special characters (in different colors each).\n */\n@Pipe({ name: 'colorPassword' })\nexport class ColorPasswordPipe implements PipeTransform {\n transform(password: string) {\n let colorizedPassword = '';\n for (let i = 0; i < password.length; i++) {\n let character = password[i];\n let isSpecial = false;\n // Sanitize HTML first.\n switch (character) {\n case '&':\n character = '&';\n isSpecial = true;\n break;\n case '<':\n character = '<';\n isSpecial = true;\n break;\n case '>':\n character = '>';\n isSpecial = true;\n break;\n case ' ':\n character = ' ';\n isSpecial = true;\n break;\n default:\n break;\n }\n let type = 'letter';\n if (isSpecial || character.match(/[^\\w ]/)) {\n type = 'special';\n } else if (character.match(/\\d/)) {\n type = 'number';\n }\n colorizedPassword += '' + character + '';\n }\n return colorizedPassword;\n }\n}\n","import { FolderResponse } from '../response/folderResponse';\n\nexport class FolderData {\n id: string;\n userId: string;\n name: string;\n revisionDate: string;\n\n constructor(response: FolderResponse, userId: string) {\n this.userId = userId;\n this.name = response.name;\n this.id = response.id;\n this.revisionDate = response.revisionDate;\n }\n}\n","import { FolderData } from '../data/folderData';\n\nimport { FolderView } from '../view/folderView';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\n\nexport class Folder extends Domain {\n id: string;\n name: CipherString;\n revisionDate: Date;\n\n constructor(obj?: FolderData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n name: null,\n }, alreadyEncrypted, ['id']);\n\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n }\n\n decrypt(): Promise {\n return this.decryptObj(new FolderView(this), {\n name: null,\n }, null);\n }\n}\n","import { AttachmentResponse } from './attachmentResponse';\nimport { BaseResponse } from './baseResponse';\nimport { PasswordHistoryResponse } from './passwordHistoryResponse';\n\nimport { CardApi } from '../api/cardApi';\nimport { FieldApi } from '../api/fieldApi';\nimport { IdentityApi } from '../api/identityApi';\nimport { LoginApi } from '../api/loginApi';\nimport { SecureNoteApi } from '../api/secureNoteApi';\n\nexport class CipherResponse extends BaseResponse {\n id: string;\n organizationId: string;\n folderId: string;\n type: number;\n name: string;\n notes: string;\n fields: FieldApi[];\n login: LoginApi;\n card: CardApi;\n identity: IdentityApi;\n secureNote: SecureNoteApi;\n favorite: boolean;\n edit: boolean;\n viewPassword: boolean;\n organizationUseTotp: boolean;\n revisionDate: string;\n attachments: AttachmentResponse[];\n passwordHistory: PasswordHistoryResponse[];\n collectionIds: string[];\n deletedDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.folderId = this.getResponseProperty('FolderId') || null;\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n this.notes = this.getResponseProperty('Notes');\n this.favorite = this.getResponseProperty('Favorite') || false;\n this.edit = !!this.getResponseProperty('Edit');\n if (this.getResponseProperty('ViewPassword') == null) {\n this.viewPassword = true;\n } else {\n this.viewPassword = this.getResponseProperty('ViewPassword');\n }\n this.organizationUseTotp = this.getResponseProperty('OrganizationUseTotp');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n this.collectionIds = this.getResponseProperty('CollectionIds');\n this.deletedDate = this.getResponseProperty('DeletedDate');\n\n const login = this.getResponseProperty('Login');\n if (login != null) {\n this.login = new LoginApi(login);\n }\n\n const card = this.getResponseProperty('Card');\n if (card != null) {\n this.card = new CardApi(card);\n }\n\n const identity = this.getResponseProperty('Identity');\n if (identity != null) {\n this.identity = new IdentityApi(identity);\n }\n\n const secureNote = this.getResponseProperty('SecureNote');\n if (secureNote != null) {\n this.secureNote = new SecureNoteApi(secureNote);\n }\n\n const fields = this.getResponseProperty('Fields');\n if (fields != null) {\n this.fields = fields.map((f: any) => new FieldApi(f));\n }\n\n const attachments = this.getResponseProperty('Attachments');\n if (attachments != null) {\n this.attachments = attachments.map((a: any) => new AttachmentResponse(a));\n }\n\n const passwordHistory = this.getResponseProperty('PasswordHistory');\n if (passwordHistory != null) {\n this.passwordHistory = passwordHistory.map((h: any) => new PasswordHistoryResponse(h));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { ProfileOrganizationResponse } from './profileOrganizationResponse';\n\nexport class ProfileResponse extends BaseResponse {\n id: string;\n name: string;\n email: string;\n emailVerified: boolean;\n masterPasswordHint: string;\n premium: boolean;\n culture: string;\n twoFactorEnabled: boolean;\n key: string;\n privateKey: string;\n securityStamp: string;\n organizations: ProfileOrganizationResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.emailVerified = this.getResponseProperty('EmailVerified');\n this.masterPasswordHint = this.getResponseProperty('MasterPasswordHint');\n this.premium = this.getResponseProperty('Premium');\n this.culture = this.getResponseProperty('Culture');\n this.twoFactorEnabled = this.getResponseProperty('TwoFactorEnabled');\n this.key = this.getResponseProperty('Key');\n this.privateKey = this.getResponseProperty('PrivateKey');\n this.securityStamp = this.getResponseProperty('SecurityStamp');\n\n const organizations = this.getResponseProperty('Organizations');\n if (organizations != null) {\n this.organizations = organizations.map((o: any) => new ProfileOrganizationResponse(o));\n }\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class SendFileApi extends BaseResponse {\n id: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.id = this.getResponseProperty('Id');\n this.fileName = this.getResponseProperty('FileName');\n this.key = this.getResponseProperty('Key');\n this.size = this.getResponseProperty('Size');\n this.sizeName = this.getResponseProperty('SizeName');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class SendTextApi extends BaseResponse {\n text: string;\n hidden: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.text = this.getResponseProperty('Text');\n this.hidden = this.getResponseProperty('Hidden') || false;\n }\n}\n","import { EnvironmentService } from './environment.service';\n\nexport abstract class NotificationsService {\n init: (environmentService: EnvironmentService) => Promise;\n updateConnection: (sync?: boolean) => Promise;\n reconnectFromActivity: () => Promise;\n disconnectFromInactivity: () => Promise;\n}\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 526;","import {\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-frontend-layout',\n templateUrl: 'frontend-layout.component.html',\n})\nexport class FrontendLayoutComponent implements OnInit, OnDestroy {\n version: string;\n year: string = '2015';\n\n constructor(private platformUtilsService: PlatformUtilsService) { }\n\n ngOnInit() {\n this.year = new Date().getFullYear().toString();\n this.version = this.platformUtilsService.getApplicationVersion();\n document.body.classList.add('layout_frontend');\n }\n\n ngOnDestroy() {\n document.body.classList.remove('layout_frontend');\n }\n}\n","\n
\n © {{year}}, Bitwarden Inc. (Powered by Vaultwarden)\n
{{'versionNumber' | i18n : version}}\n
\n","import {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { ActivatedRoute } from '@angular/router';\n\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { EnvironmentService } from 'jslib/abstractions/environment.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { Organization } from 'jslib/models/domain/organization';\n\nconst BroadcasterSubscriptionId = 'OrganizationLayoutComponent';\n\n@Component({\n selector: 'app-organization-layout',\n templateUrl: 'organization-layout.component.html',\n})\nexport class OrganizationLayoutComponent implements OnInit, OnDestroy {\n organization: Organization;\n businessTokenPromise: Promise;\n private organizationId: string;\n private businessUrl: string;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private broadcasterService: BroadcasterService, private ngZone: NgZone,\n private apiService: ApiService, private platformUtilsService: PlatformUtilsService,\n private environmentService: EnvironmentService) { }\n\n ngOnInit() {\n this.businessUrl = 'https://portal.bitwarden.com';\n if (this.environmentService.enterpriseUrl != null) {\n this.businessUrl = this.environmentService.enterpriseUrl;\n } else if (this.environmentService.baseUrl != null) {\n this.businessUrl = this.environmentService.baseUrl + '/portal';\n }\n\n document.body.classList.remove('layout_frontend');\n this.route.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n });\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'updatedOrgLicense':\n await this.load();\n break;\n }\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async load() {\n this.organization = await this.userService.getOrganization(this.organizationId);\n }\n\n async goToBusinessPortal() {\n if (this.businessTokenPromise != null) {\n return;\n }\n try {\n this.businessTokenPromise = this.apiService.getEnterprisePortalSignInToken();\n const token = await this.businessTokenPromise;\n if (token != null) {\n const userId = await this.userService.getUserId();\n this.platformUtilsService.launchUri(this.businessUrl + '/login?userId=' + userId +\n '&token=' + (window as any).encodeURIComponent(token) + '&organizationId=' + this.organization.id);\n }\n } catch { }\n this.businessTokenPromise = null;\n }\n\n get showMenuBar() {\n return this.showManageTab || this.showToolsTab || this.organization.isOwner;\n }\n\n get showManageTab(): boolean {\n return this.organization.canManageUsers ||\n this.organization.canManageAssignedCollections ||\n this.organization.canManageAllCollections ||\n this.organization.canManageGroups ||\n this.organization.canManagePolicies ||\n this.organization.canAccessEventLogs;\n }\n\n get showToolsTab(): boolean {\n return this.organization.canAccessImportExport || this.organization.canAccessReports;\n }\n\n get showBusinessPortalButton(): boolean {\n return this.organization.useBusinessPortal && this.organization.canAccessBusinessPortal;\n }\n\n get toolsRoute(): string {\n return this.organization.canAccessImportExport ?\n 'tools/import' :\n 'tools/exposed-passwords-report';\n }\n\n get manageRoute(): string {\n let route: string;\n switch (true) {\n case this.organization.canManageUsers:\n route = 'manage/people';\n break;\n case this.organization.canManageAssignedCollections || this.organization.canManageAllCollections:\n route = 'manage/collections';\n break;\n case this.organization.canManageGroups:\n route = 'manage/groups';\n break;\n case this.organization.canManagePolicies:\n route = 'manage/policies';\n break;\n case this.organization.canAccessEventLogs:\n route = 'manage/events';\n break;\n }\n return route;\n }\n}\n","\n
\n
\n
\n
\n \n
\n {{organization.name}}\n {{'organization' | i18n}}\n
\n
\n
\n \n {{'organizationIsDisabled' | i18n}}\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n\n\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\n@Component({\n selector: 'app-user-layout',\n templateUrl: 'user-layout.component.html',\n})\nexport class UserLayoutComponent implements OnInit {\n ngOnInit() {\n document.body.classList.remove('layout_frontend');\n }\n}\n","\n\n\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { UserService } from 'jslib/abstractions/user.service';\nimport { EmergencyAccessAcceptRequest } from 'jslib/models/request/emergencyAccessAcceptRequest';\n\n@Component({\n selector: 'app-accept-emergency',\n templateUrl: 'accept-emergency.component.html',\n})\nexport class AcceptEmergencyComponent implements OnInit {\n loading = true;\n authed = false;\n name: string;\n email: string;\n actionPromise: Promise;\n\n constructor(private router: Router, private toasterService: ToasterService,\n private i18nService: I18nService, private route: ActivatedRoute,\n private apiService: ApiService, private userService: UserService,\n private stateService: StateService) { }\n\n ngOnInit() {\n let fired = false;\n this.route.queryParams.subscribe(async qParams => {\n if (fired) {\n return;\n }\n fired = true;\n await this.stateService.remove('emergencyInvitation');\n let error = qParams.id == null || qParams.name == null || qParams.email == null || qParams.token == null;\n let errorMessage: string = null;\n if (!error) {\n this.authed = await this.userService.isAuthenticated();\n if (this.authed) {\n const request = new EmergencyAccessAcceptRequest();\n request.token = qParams.token;\n try {\n this.actionPromise = this.apiService.postEmergencyAccessAccept(qParams.id, request);\n await this.actionPromise;\n const toast: Toast = {\n type: 'success',\n title: this.i18nService.t('inviteAccepted'),\n body: this.i18nService.t('emergencyInviteAcceptedDesc'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/vault']);\n } catch (e) {\n error = true;\n errorMessage = e.message;\n }\n } else {\n await this.stateService.save('emergencyInvitation', qParams);\n this.email = qParams.email;\n this.name = qParams.name;\n if (this.name != null) {\n // Fix URL encoding of space issue with Angular\n this.name = this.name.replace(/\\+/g, ' ');\n }\n }\n }\n\n if (error) {\n const toast: Toast = {\n type: 'error',\n title: null,\n body: errorMessage != null ? this.i18nService.t('emergencyInviteAcceptFailedShort', errorMessage) :\n this.i18nService.t('emergencyInviteAcceptFailed'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/']);\n }\n\n this.loading = false;\n });\n }\n}\n","
\n
\n \"Bitwarden\"\n

\n \n {{'loading' | i18n}}\n

\n
\n
\n
\n
\n
\n

{{'emergencyAccess' | i18n}}

\n
\n
\n

\n {{name}}\n

\n

{{'acceptEmergencyAccess' | i18n}}

\n
\n \n
\n
\n
\n
\n
\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { OrganizationUserAcceptRequest } from 'jslib/models/request/organizationUserAcceptRequest';\n\n@Component({\n selector: 'app-accept-organization',\n templateUrl: 'accept-organization.component.html',\n})\nexport class AcceptOrganizationComponent implements OnInit {\n loading = true;\n authed = false;\n orgName: string;\n email: string;\n actionPromise: Promise;\n\n constructor(private router: Router, private toasterService: ToasterService,\n private i18nService: I18nService, private route: ActivatedRoute,\n private apiService: ApiService, private userService: UserService,\n private stateService: StateService) { }\n\n ngOnInit() {\n let fired = false;\n this.route.queryParams.subscribe(async qParams => {\n if (fired) {\n return;\n }\n fired = true;\n await this.stateService.remove('orgInvitation');\n let error = qParams.organizationId == null || qParams.organizationUserId == null || qParams.token == null;\n let errorMessage: string = null;\n if (!error) {\n this.authed = await this.userService.isAuthenticated();\n if (this.authed) {\n const request = new OrganizationUserAcceptRequest();\n request.token = qParams.token;\n try {\n this.actionPromise = this.apiService.postOrganizationUserAccept(qParams.organizationId,\n qParams.organizationUserId, request);\n await this.actionPromise;\n const toast: Toast = {\n type: 'success',\n title: this.i18nService.t('inviteAccepted'),\n body: this.i18nService.t('inviteAcceptedDesc'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/vault']);\n } catch (e) {\n error = true;\n errorMessage = e.message;\n }\n } else {\n await this.stateService.save('orgInvitation', qParams);\n this.email = qParams.email;\n this.orgName = qParams.organizationName;\n if (this.orgName != null) {\n // Fix URL encoding of space issue with Angular\n this.orgName = this.orgName.replace(/\\+/g, ' ');\n }\n }\n }\n\n if (error) {\n const toast: Toast = {\n type: 'error',\n title: null,\n body: errorMessage != null ? this.i18nService.t('inviteAcceptFailedShort', errorMessage) :\n this.i18nService.t('inviteAcceptFailed'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/']);\n }\n\n this.loading = false;\n });\n }\n}\n","
\n
\n \"Bitwarden\"\n

\n \n {{'loading' | i18n}}\n

\n
\n
\n
\n
\n
\n

{{'joinOrganization' | i18n}}

\n
\n
\n

\n {{orgName}}\n {{email}}\n

\n

{{'joinOrganizationDesc' | i18n}}

\n
\n \n
\n
\n
\n
\n
\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { HintComponent as BaseHintComponent } from 'jslib/angular/components/hint.component';\n\n@Component({\n selector: 'app-hint',\n templateUrl: 'hint.component.html',\n})\nexport class HintComponent extends BaseHintComponent {\n constructor(router: Router, i18nService: I18nService,\n apiService: ApiService, platformUtilsService: PlatformUtilsService) {\n super(router, i18nService, apiService, platformUtilsService);\n }\n}\n","
\n
\n
\n

{{'passwordHint' | i18n}}

\n
\n
\n
\n \n \n {{'enterEmailToGetHint' | i18n}}\n
\n
\n
\n \n \n {{'cancel' | i18n}}\n \n
\n
\n
\n
\n
\n
\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { EnvironmentService } from 'jslib/abstractions/environment.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\nimport { UserService } from 'jslib/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib/abstractions/vaultTimeout.service';\n\nimport { RouterService } from '../services/router.service';\n\nimport { LockComponent as BaseLockComponent } from 'jslib/angular/components/lock.component';\n\n@Component({\n selector: 'app-lock',\n templateUrl: 'lock.component.html',\n})\nexport class LockComponent extends BaseLockComponent {\n constructor(router: Router, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, messagingService: MessagingService,\n userService: UserService, cryptoService: CryptoService,\n storageService: StorageService, vaultTimeoutService: VaultTimeoutService,\n environmentService: EnvironmentService, private routerService: RouterService,\n stateService: StateService, apiService: ApiService) {\n super(router, i18nService, platformUtilsService, messagingService, userService, cryptoService,\n storageService, vaultTimeoutService, environmentService, stateService, apiService);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n this.router.navigate(['/']);\n } else if (await this.cryptoService.hasKey()) {\n this.router.navigate(['vault']);\n }\n\n this.onSuccessfulSubmit = () => {\n const previousUrl = this.routerService.getPreviousUrl();\n if (previousUrl !== '/' && previousUrl.indexOf('lock') === -1) {\n this.successRoute = previousUrl;\n }\n this.router.navigate([this.successRoute]);\n };\n }\n}\n","
\n
\n
\n

\n \n

\n

{{'yourVaultIsLocked' | i18n}}

\n
\n
\n
\n \n
\n \n \n
\n \n {{'loggedInAsEmailOn' | i18n : email : webVaultHostname}}\n \n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { AuthService } from 'jslib/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib/abstractions/cryptoFunction.service';\nimport { EnvironmentService } from 'jslib/abstractions/environment.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\n\nimport { LoginComponent as BaseLoginComponent } from 'jslib/angular/components/login.component';\n\n@Component({\n selector: 'app-login',\n templateUrl: 'login.component.html',\n})\nexport class LoginComponent extends BaseLoginComponent {\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, private route: ActivatedRoute,\n storageService: StorageService, stateService: StateService,\n platformUtilsService: PlatformUtilsService, environmentService: EnvironmentService,\n passwordGenerationService: PasswordGenerationService, cryptoFunctionService: CryptoFunctionService) {\n super(authService, router,\n platformUtilsService, i18nService,\n stateService, environmentService,\n passwordGenerationService, cryptoFunctionService,\n storageService);\n this.onSuccessfulLoginNavigate = this.goAfterLogIn;\n }\n\n async ngOnInit() {\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.email != null && qParams.email.indexOf('@') > -1) {\n this.email = qParams.email;\n }\n if (qParams.premium != null) {\n this.stateService.save('loginRedirect', { route: '/settings/premium' });\n } else if (qParams.org != null) {\n this.stateService.save('loginRedirect',\n { route: '/settings/create-organization', qParams: { plan: qParams.org } });\n }\n await super.ngOnInit();\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n\n async goAfterLogIn() {\n const orgInvite = await this.stateService.get('orgInvitation');\n const emergencyInvite = await this.stateService.get('emergencyInvitation');\n if (orgInvite != null) {\n this.router.navigate(['accept-organization'], { queryParams: orgInvite });\n } else if (emergencyInvite != null) {\n this.router.navigate(['accept-emergency'], { queryParams: emergencyInvite });\n } else {\n const loginRedirect = await this.stateService.get('loginRedirect');\n if (loginRedirect != null) {\n this.router.navigate([loginRedirect.route], { queryParams: loginRedirect.qParams });\n await this.stateService.remove('loginRedirect');\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n }\n}\n","
\n
\n
\n \n

{{'loginOrCreateNewAccount' | i18n}}

\n
\n
\n
\n \n \n
\n
\n \n
\n \n \n
\n \n {{'getMasterPasswordHint' | i18n}}\n \n
\n
\n \n \n
\n
\n
\n \n \n {{'createAccount' | i18n}}\n \n
\n \n
\n
\n
\n
\n
\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { DeleteRecoverRequest } from 'jslib/models/request/deleteRecoverRequest';\n\n@Component({\n selector: 'app-recover-delete',\n templateUrl: 'recover-delete.component.html',\n})\nexport class RecoverDeleteComponent {\n email: string;\n formPromise: Promise;\n\n constructor(private router: Router, private apiService: ApiService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private i18nService: I18nService) {\n }\n\n async submit() {\n try {\n const request = new DeleteRecoverRequest();\n request.email = this.email.trim().toLowerCase();\n this.formPromise = this.apiService.postAccountRecoverDelete(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Started Delete Recovery' });\n this.toasterService.popAsync('success', null, this.i18nService.t('deleteRecoverEmailSent'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","
\n
\n
\n

{{'deleteAccount' | i18n}}

\n
\n
\n

{{'deleteRecoverDesc' | i18n}}

\n
\n \n \n
\n
\n
\n \n \n {{'cancel' | i18n}}\n \n
\n
\n
\n
\n
\n
\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { AuthService } from 'jslib/abstractions/auth.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { TwoFactorRecoveryRequest } from 'jslib/models/request/twoFactorRecoveryRequest';\n\n@Component({\n selector: 'app-recover-two-factor',\n templateUrl: 'recover-two-factor.component.html',\n})\nexport class RecoverTwoFactorComponent {\n email: string;\n masterPassword: string;\n recoveryCode: string;\n formPromise: Promise;\n\n constructor(private router: Router, private apiService: ApiService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private i18nService: I18nService, private cryptoService: CryptoService,\n private authService: AuthService) { }\n\n async submit() {\n try {\n const request = new TwoFactorRecoveryRequest();\n request.recoveryCode = this.recoveryCode.replace(/\\s/g, '').toLowerCase();\n request.email = this.email.trim().toLowerCase();\n const key = await this.authService.makePreloginKey(this.masterPassword, request.email);\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n this.formPromise = this.apiService.postTwoFactorRecover(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Recovered 2FA' });\n this.toasterService.popAsync('success', null, this.i18nService.t('twoStepRecoverDisabled'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","
\n
\n
\n

{{'recoverAccountTwoStep' | i18n}}

\n
\n
\n

{{'recoverAccountTwoStepDesc' | i18n}}\n {{'learnMore' | i18n}}\n

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n {{'cancel' | i18n}}\n \n
\n
\n
\n
\n
\n
\n","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { AuthService } from 'jslib/abstractions/auth.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { StateService } from 'jslib/abstractions/state.service';\n\nimport { RegisterComponent as BaseRegisterComponent } from 'jslib/angular/components/register.component';\n\nimport { MasterPasswordPolicyOptions } from 'jslib/models/domain/masterPasswordPolicyOptions';\nimport { Policy } from 'jslib/models/domain/policy';\n\nimport { PolicyData } from 'jslib/models/data/policyData';\nimport { ReferenceEventRequest } from 'jslib/models/request/referenceEventRequest';\n\n@Component({\n selector: 'app-register',\n templateUrl: 'register.component.html',\n})\nexport class RegisterComponent extends BaseRegisterComponent {\n showCreateOrgMessage = false;\n layout = '';\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n\n private policies: Policy[];\n\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, cryptoService: CryptoService,\n apiService: ApiService, private route: ActivatedRoute,\n stateService: StateService, platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService, private policyService: PolicyService) {\n super(authService, router, i18nService, cryptoService, apiService, stateService, platformUtilsService,\n passwordGenerationService);\n }\n\n getPasswordScoreAlertDisplay() {\n if (this.enforcedPolicyOptions == null) {\n return '';\n }\n\n let str: string;\n switch (this.enforcedPolicyOptions.minComplexity) {\n case 4:\n str = this.i18nService.t('strong');\n break;\n case 3:\n str = this.i18nService.t('good');\n break;\n default:\n str = this.i18nService.t('weak');\n break;\n }\n return str + ' (' + this.enforcedPolicyOptions.minComplexity + ')';\n }\n\n async ngOnInit() {\n const queryParamsSub = this.route.queryParams.subscribe(qParams => {\n this.referenceData = new ReferenceEventRequest();\n if (qParams.email != null && qParams.email.indexOf('@') > -1) {\n this.email = qParams.email;\n }\n if (qParams.premium != null) {\n this.stateService.save('loginRedirect', { route: '/settings/premium' });\n } else if (qParams.org != null) {\n this.showCreateOrgMessage = true;\n this.referenceData.flow = qParams.org;\n this.stateService.save('loginRedirect',\n { route: '/settings/create-organization', qParams: { plan: qParams.org } });\n }\n if (qParams.layout != null) {\n this.layout = this.referenceData.layout = qParams.layout;\n }\n if (qParams.reference != null) {\n this.referenceData.id = qParams.reference;\n } else {\n this.referenceData.id = ('; ' + document.cookie).split('; reference=').pop().split(';').shift();\n }\n if (this.referenceData.id === '') {\n this.referenceData.id = null;\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n const invite = await this.stateService.get('orgInvitation');\n if (invite != null) {\n try {\n const policies = await this.apiService.getPoliciesByToken(invite.organizationId, invite.token,\n invite.email, invite.organizationUserId);\n if (policies.data != null) {\n const policiesData = policies.data.map(p => new PolicyData(p));\n this.policies = policiesData.map(p => new Policy(p));\n }\n } catch { }\n }\n\n if (this.policies != null) {\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions(this.policies);\n }\n }\n\n async submit() {\n if (this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(this.masterPasswordScore, this.masterPassword,\n this.enforcedPolicyOptions)) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPasswordPolicyRequirementsNotMet'));\n return;\n }\n\n await super.submit();\n }\n}\n","
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Companies globally trust Bitwarden for password management.

\n

Start your 7-day free trial!

\n

Quickly deploy your organization

\n

Use Bitwarden across all platforms

\n

Collaborate and share securely

\n
\n
\n \n \"Wired\"\n \n
\n
\n \"Bitwarden has become a popular choice among open-source software advocates. After using\n it for a few months, I can see why.\" - February 2020\n
\n
\n
\n
\n

Enterprise 3 layout

\n
\n
\n

Enterprise 4 layout

\n
\n
\n
\n
\n
\n
\n

{{'createAccount' | i18n}}

\n
\n
\n \n {{'createOrganizationCreatePersonalAccount' | i18n}}\n \n
\n \n \n {{'emailAddressDesc' | i18n}}\n
\n
\n \n \n {{'yourNameDesc' | i18n}}\n
\n
\n \n {{'masterPasswordPolicyInEffect' | i18n}}\n
    \n
  • 0\">\n {{'policyInEffectMinComplexity' | i18n : getPasswordScoreAlertDisplay()}}\n
  • \n
  • 0\">\n {{'policyInEffectMinLength' | i18n : enforcedPolicyOptions?.minLength.toString()}}\n
  • \n
  • \n {{'policyInEffectUppercase' | i18n}}
  • \n
  • \n {{'policyInEffectLowercase' | i18n}}
  • \n
  • \n {{'policyInEffectNumbers' | i18n}}
  • \n
  • \n {{'policyInEffectSpecial' | i18n : '!@#$%^&*'}}
  • \n
\n
\n \n
\n
\n \n \n \n
\n
\n \n
\n
\n
\n {{'masterPassDesc' | i18n}}\n
\n
\n \n
\n \n \n
\n
\n
\n \n \n {{'masterPassHintDesc' | i18n}}\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n {{'cancel' | i18n}}\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport {\n SetPasswordComponent as BaseSetPasswordComponent,\n} from 'jslib/angular/components/set-password.component';\n\n@Component({\n selector: 'app-set-password',\n templateUrl: 'set-password.component.html',\n})\nexport class SetPasswordComponent extends BaseSetPasswordComponent {\n constructor(apiService: ApiService, i18nService: I18nService,\n cryptoService: CryptoService, messagingService: MessagingService,\n userService: UserService, passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService, router: Router,\n syncService: SyncService, route: ActivatedRoute) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService, router, apiService, syncService, route);\n }\n}\n","
\n
\n
\n

{{'setMasterPassword' | i18n}}

\n
\n
\n \n {{'loading' | i18n}}\n
\n
\n {{'ssoCompleteRegistration' | i18n}}\n
\n \n {{'masterPasswordPolicyInEffect' | i18n}}\n
    \n
  • 0\">\n {{'policyInEffectMinComplexity' | i18n : getPasswordScoreAlertDisplay()}}\n
  • \n
  • 0\">\n {{'policyInEffectMinLength' | i18n : enforcedPolicyOptions?.minLength.toString()}}\n
  • \n
  • \n {{'policyInEffectUppercase' | i18n}}
  • \n
  • \n {{'policyInEffectLowercase' | i18n}}
  • \n
  • \n {{'policyInEffectNumbers' | i18n}}
  • \n
  • \n {{'policyInEffectSpecial' | i18n : '!@#$%^&*'}}
  • \n
\n
\n \n
\n
\n \n \n \n
\n
\n \n
\n
\n
\n {{'masterPassDesc' | i18n}}\n
\n
\n \n
\n \n \n
\n
\n
\n \n \n {{'masterPassHintDesc' | i18n}}\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { AuthService } from 'jslib/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib/abstractions/cryptoFunction.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\n\nimport { SsoComponent as BaseSsoComponent } from 'jslib/angular/components/sso.component';\n\nconst IdentifierStorageKey = 'ssoOrgIdentifier';\n\n@Component({\n selector: 'app-sso',\n templateUrl: 'sso.component.html',\n})\nexport class SsoComponent extends BaseSsoComponent {\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, route: ActivatedRoute,\n storageService: StorageService, stateService: StateService,\n platformUtilsService: PlatformUtilsService, apiService: ApiService,\n cryptoFunctionService: CryptoFunctionService,\n passwordGenerationService: PasswordGenerationService) {\n super(authService, router, i18nService, route, storageService, stateService, platformUtilsService,\n apiService, cryptoFunctionService, passwordGenerationService);\n this.redirectUri = window.location.origin + '/sso-connector.html';\n this.clientId = 'web';\n }\n\n async ngOnInit() {\n super.ngOnInit();\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n } else {\n const storedIdentifier = await this.storageService.get(IdentifierStorageKey);\n if (storedIdentifier != null) {\n this.identifier = storedIdentifier;\n }\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n\n async submit() {\n await this.storageService.save(IdentifierStorageKey, this.identifier);\n if (this.clientId === 'browser') {\n document.cookie = `ssoHandOffMessage=${this.i18nService.t('ssoHandOff')};SameSite=strict`;\n }\n super.submit();\n }\n}\n","
\n
\n
\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n

{{'ssoLogInWithOrgIdentifier' | i18n}}

\n
\n \n \n
\n
\n
\n \n \n {{'cancel' | i18n}}\n \n
\n
\n
\n
\n
\n
\n","import {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from '../../abstractions/api.service';\nimport { AuthService } from '../../abstractions/auth.service';\nimport { CryptoFunctionService } from '../../abstractions/cryptoFunction.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PasswordGenerationService } from '../../abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { StateService } from '../../abstractions/state.service';\nimport { StorageService } from '../../abstractions/storage.service';\n\nimport { ConstantsService } from '../../services/constants.service';\n\nimport { Utils } from '../../misc/utils';\n\nimport { AuthResult } from '../../models/domain/authResult';\n\nexport class SsoComponent {\n identifier: string;\n loggingIn = false;\n\n formPromise: Promise;\n initiateSsoFormPromise: Promise;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n onSuccessfulLoginTwoFactorNavigate: () => Promise;\n onSuccessfulLoginChangePasswordNavigate: () => Promise;\n\n protected twoFactorRoute = '2fa';\n protected successRoute = 'lock';\n protected changePasswordRoute = 'set-password';\n protected clientId: string;\n protected redirectUri: string;\n protected state: string;\n protected codeChallenge: string;\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected route: ActivatedRoute,\n protected storageService: StorageService, protected stateService: StateService,\n protected platformUtilsService: PlatformUtilsService, protected apiService: ApiService,\n protected cryptoFunctionService: CryptoFunctionService,\n protected passwordGenerationService: PasswordGenerationService) { }\n\n async ngOnInit() {\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.code != null && qParams.state != null) {\n const codeVerifier = await this.storageService.get(ConstantsService.ssoCodeVerifierKey);\n const state = await this.storageService.get(ConstantsService.ssoStateKey);\n await this.storageService.remove(ConstantsService.ssoCodeVerifierKey);\n await this.storageService.remove(ConstantsService.ssoStateKey);\n if (qParams.code != null && codeVerifier != null && state != null && this.checkState(state, qParams.state)) {\n await this.logIn(qParams.code, codeVerifier, this.getOrgIdentiferFromState(qParams.state));\n }\n } else if (qParams.clientId != null && qParams.redirectUri != null && qParams.state != null &&\n qParams.codeChallenge != null) {\n this.redirectUri = qParams.redirectUri;\n this.state = qParams.state;\n this.codeChallenge = qParams.codeChallenge;\n this.clientId = qParams.clientId;\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n\n async submit(returnUri?: string, includeUserIdentifier?: boolean) {\n this.initiateSsoFormPromise = this.preValidate();\n if (await this.initiateSsoFormPromise) {\n const authorizeUrl = await this.buildAuthorizeUrl(returnUri, includeUserIdentifier);\n this.platformUtilsService.launchUri(authorizeUrl, { sameWindow: true });\n }\n }\n\n async preValidate(): Promise {\n if (this.identifier == null || this.identifier === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('ssoValidationFailed'),\n this.i18nService.t('ssoIdentifierRequired'));\n return false;\n }\n return await this.apiService.preValidateSso(this.identifier);\n }\n\n protected async buildAuthorizeUrl(returnUri?: string, includeUserIdentifier?: boolean): Promise {\n let codeChallenge = this.codeChallenge;\n let state = this.state;\n\n const passwordOptions: any = {\n type: 'password',\n length: 64,\n uppercase: true,\n lowercase: true,\n numbers: true,\n special: false,\n };\n\n if (codeChallenge == null) {\n const codeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions);\n const codeVerifierHash = await this.cryptoFunctionService.hash(codeVerifier, 'sha256');\n codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash);\n await this.storageService.save(ConstantsService.ssoCodeVerifierKey, codeVerifier);\n }\n\n if (state == null) {\n state = await this.passwordGenerationService.generatePassword(passwordOptions);\n if (returnUri) {\n state += `_returnUri='${returnUri}'`;\n }\n }\n\n // Add Organization Identifier to state\n state += `_identifier=${this.identifier}`;\n\n // Save state (regardless of new or existing)\n await this.storageService.save(ConstantsService.ssoStateKey, state);\n\n let authorizeUrl = this.apiService.identityBaseUrl + '/connect/authorize?' +\n 'client_id=' + this.clientId + '&redirect_uri=' + encodeURIComponent(this.redirectUri) + '&' +\n 'response_type=code&scope=api offline_access&' +\n 'state=' + state + '&code_challenge=' + codeChallenge + '&' +\n 'code_challenge_method=S256&response_mode=query&' +\n 'domain_hint=' + encodeURIComponent(this.identifier);\n\n if (includeUserIdentifier) {\n const userIdentifier = await this.apiService.getSsoUserIdentifier();\n authorizeUrl += `&user_identifier=${encodeURIComponent(userIdentifier)}`;\n }\n\n return authorizeUrl;\n }\n\n private async logIn(code: string, codeVerifier: string, orgIdFromState: string) {\n this.loggingIn = true;\n try {\n this.formPromise = this.authService.logInSso(code, codeVerifier, this.redirectUri);\n const response = await this.formPromise;\n if (response.twoFactor) {\n this.platformUtilsService.eventTrack('SSO Logged In To Two-step');\n if (this.onSuccessfulLoginTwoFactorNavigate != null) {\n this.onSuccessfulLoginTwoFactorNavigate();\n } else {\n this.router.navigate([this.twoFactorRoute], {\n queryParams: {\n identifier: orgIdFromState,\n sso: 'true',\n },\n });\n }\n } else if (response.resetMasterPassword) {\n this.platformUtilsService.eventTrack('SSO - routing to complete registration');\n if (this.onSuccessfulLoginChangePasswordNavigate != null) {\n this.onSuccessfulLoginChangePasswordNavigate();\n } else {\n this.router.navigate([this.changePasswordRoute], {\n queryParams: {\n identifier: orgIdFromState,\n },\n });\n }\n } else {\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n this.platformUtilsService.eventTrack('SSO Logged In');\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n } catch { }\n this.loggingIn = false;\n }\n\n private getOrgIdentiferFromState(state: string): string {\n if (state === null || state === undefined) {\n return null;\n }\n\n const stateSplit = state.split('_identifier=');\n return stateSplit.length > 1 ? stateSplit[1] : null;\n }\n\n private checkState(state: string, checkState: string): boolean {\n if (state === null || state === undefined) {\n return false;\n }\n if (checkState === null || checkState === undefined) {\n return false;\n }\n\n const stateSplit = state.split('_identifier=');\n const checkStateSplit = checkState.split('_identifier=');\n return stateSplit[0] === checkStateSplit[0];\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { TwoFactorOptionsComponent } from './two-factor-options.component';\n\nimport { ModalComponent } from '../modal.component';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { AuthService } from 'jslib/abstractions/auth.service';\nimport { EnvironmentService } from 'jslib/abstractions/environment.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\n\nimport { TwoFactorComponent as BaseTwoFactorComponent } from 'jslib/angular/components/two-factor.component';\n\n@Component({\n selector: 'app-two-factor',\n templateUrl: 'two-factor.component.html',\n})\nexport class TwoFactorComponent extends BaseTwoFactorComponent {\n @ViewChild('twoFactorOptions', { read: ViewContainerRef, static: true }) twoFactorOptionsModal: ViewContainerRef;\n\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, apiService: ApiService,\n platformUtilsService: PlatformUtilsService, stateService: StateService,\n environmentService: EnvironmentService, private componentFactoryResolver: ComponentFactoryResolver,\n storageService: StorageService, route: ActivatedRoute) {\n super(authService, router, i18nService, apiService, platformUtilsService, window, environmentService,\n stateService, storageService, route);\n this.onSuccessfulLoginNavigate = this.goAfterLogIn;\n }\n\n anotherMethod() {\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n const modal = this.twoFactorOptionsModal.createComponent(factory).instance;\n const childComponent = modal.show(TwoFactorOptionsComponent,\n this.twoFactorOptionsModal);\n\n childComponent.onProviderSelected.subscribe(async (provider: TwoFactorProviderType) => {\n modal.close();\n this.selectedProviderType = provider;\n await this.init();\n });\n childComponent.onRecoverSelected.subscribe(() => {\n modal.close();\n });\n }\n\n async goAfterLogIn() {\n const orgInvite = await this.stateService.get('orgInvitation');\n const emergencyInvite = await this.stateService.get('emergencyInvitation');\n if (orgInvite != null) {\n this.router.navigate(['accept-organization'], { queryParams: orgInvite });\n } else if (emergencyInvite != null) {\n this.router.navigate(['accept-emergency'], { queryParams: emergencyInvite });\n } else {\n const loginRedirect = await this.stateService.get('loginRedirect');\n if (loginRedirect != null) {\n this.router.navigate([loginRedirect.route], { queryParams: loginRedirect.qParams });\n await this.stateService.remove('loginRedirect');\n } else {\n this.router.navigate([this.successRoute], {\n queryParams: {\n identifier: this.identifier,\n },\n });\n }\n }\n }\n}\n","
\n
\n
\n

{{title}}

\n
\n
\n \n

\n {{'enterVerificationCodeApp' | i18n}}

\n

\n {{'enterVerificationCodeEmail' | i18n : twoFactorEmail}}\n

\n
\n \n \n \n \n {{'sendVerificationCodeEmailAgain' | i18n}}\n \n \n
\n \n \n

{{'insertYubiKey' | i18n}}

\n \"\"\n
\n \n \n
\n
\n \n

\n \n {{'loading' | i18n}}\n

\n \n

{{'insertU2f' | i18n}}

\n \"\"\n
\n
\n \n
\n \n
\n
\n \n
\n \n \n
\n \n

{{'noTwoStepProviders' | i18n}}

\n

{{'noTwoStepProviders2' | i18n}}

\n
\n
\n
\n \n \n {{'cancel' | i18n}}\n \n
\n \n
\n
\n
\n
\n
\n\n\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { AuthService } from 'jslib/abstractions/auth.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport {\n TwoFactorOptionsComponent as BaseTwoFactorOptionsComponent,\n} from 'jslib/angular/components/two-factor-options.component';\n\n@Component({\n selector: 'app-two-factor-options',\n templateUrl: 'two-factor-options.component.html',\n})\nexport class TwoFactorOptionsComponent extends BaseTwoFactorOptionsComponent {\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService) {\n super(authService, router, i18nService, platformUtilsService, window);\n }\n}\n","
\n
\n
\n
\n

{{'twoStepOptions' | i18n}}

\n \n
\n \n
\n \n
\n
\n
\n
\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class TwoFactorEmailRequest extends PasswordVerificationRequest {\n email: string;\n\n constructor(email: string, masterPasswordHash: string) {\n super();\n this.masterPasswordHash = masterPasswordHash;\n this.email = email;\n }\n}\n","import { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class AuthResult {\n twoFactor: boolean = false;\n resetMasterPassword: boolean = false;\n twoFactorProviders: Map = null;\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { VerifyEmailRequest } from 'jslib/models/request/verifyEmailRequest';\n\n@Component({\n selector: 'app-verify-email-token',\n templateUrl: 'verify-email-token.component.html',\n})\nexport class VerifyEmailTokenComponent implements OnInit {\n constructor(private router: Router, private toasterService: ToasterService,\n private i18nService: I18nService, private route: ActivatedRoute,\n private apiService: ApiService, private userService: UserService) { }\n\n ngOnInit() {\n let fired = false;\n this.route.queryParams.subscribe(async qParams => {\n if (fired) {\n return;\n }\n fired = true;\n if (qParams.userId != null && qParams.token != null) {\n try {\n await this.apiService.postAccountVerifyEmailToken(\n new VerifyEmailRequest(qParams.userId, qParams.token));\n const authed = await this.userService.isAuthenticated();\n if (authed) {\n await this.apiService.refreshIdentityToken();\n }\n this.toasterService.popAsync('success', null, this.i18nService.t('emailVerified'));\n this.router.navigate(['/']);\n return;\n } catch { }\n }\n this.toasterService.popAsync('error', null, this.i18nService.t('emailVerifiedFailed'));\n this.router.navigate(['/']);\n });\n }\n}\n","
\n
\n \"Bitwarden\"\n

\n \n {{'loading' | i18n}}\n

\n
\n
\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { VerifyDeleteRecoverRequest } from 'jslib/models/request/verifyDeleteRecoverRequest';\n\n@Component({\n selector: 'app-verify-recover-delete',\n templateUrl: 'verify-recover-delete.component.html',\n})\nexport class VerifyRecoverDeleteComponent implements OnInit {\n email: string;\n formPromise: Promise;\n\n private userId: string;\n private token: string;\n\n constructor(private router: Router, private apiService: ApiService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private i18nService: I18nService, private route: ActivatedRoute) {\n }\n\n ngOnInit() {\n let fired = false;\n this.route.queryParams.subscribe(async qParams => {\n if (fired) {\n return;\n }\n fired = true;\n if (qParams.userId != null && qParams.token != null && qParams.email != null) {\n this.userId = qParams.userId;\n this.token = qParams.token;\n this.email = qParams.email;\n } else {\n this.router.navigate(['/']);\n }\n });\n }\n\n async submit() {\n try {\n const request = new VerifyDeleteRecoverRequest(this.userId, this.token);\n this.formPromise = this.apiService.postAccountRecoverDeleteToken(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Recovered Delete' });\n this.toasterService.popAsync('success', this.i18nService.t('accountDeleted'),\n this.i18nService.t('accountDeletedDesc'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","
\n
\n
\n

{{'deleteAccount' | i18n}}

\n
\n
\n {{'deleteAccountWarning' | i18n}}\n

\n {{email}}\n

\n

{{'deleteRecoverConfirmDesc' | i18n}}

\n
\n
\n \n \n {{'cancel' | i18n}}\n \n
\n
\n
\n
\n
\n
\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib/abstractions/search.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CollectionData } from 'jslib/models/data/collectionData';\nimport { Collection } from 'jslib/models/domain/collection';\nimport {\n CollectionDetailsResponse,\n CollectionResponse,\n} from 'jslib/models/response/collectionResponse';\nimport { ListResponse } from 'jslib/models/response/listResponse';\nimport { CollectionView } from 'jslib/models/view/collectionView';\n\nimport { ModalComponent } from '../../modal.component';\nimport { CollectionAddEditComponent } from './collection-add-edit.component';\nimport { EntityUsersComponent } from './entity-users.component';\n\n@Component({\n selector: 'app-org-manage-collections',\n templateUrl: 'collections.component.html',\n})\nexport class CollectionsComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('usersTemplate', { read: ViewContainerRef, static: true }) usersModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n collections: CollectionView[];\n pagedCollections: CollectionView[];\n searchText: string;\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedCollectionsCount = 0;\n private modal: ModalComponent = null;\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private collectionService: CollectionService, private componentFactoryResolver: ComponentFactoryResolver,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private i18nService: I18nService, private platformUtilsService: PlatformUtilsService,\n private userService: UserService, private searchService: SearchService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n this.searchText = qParams.search;\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n }\n\n async load() {\n const organization = await this.userService.getOrganization(this.organizationId);\n let response: ListResponse;\n if (organization.canManageAllCollections) {\n response = await this.apiService.getCollections(this.organizationId);\n } else {\n response = await this.apiService.getUserCollections();\n }\n const collections = response.data.filter(c => c.organizationId === this.organizationId).map(r =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collections);\n this.resetPaging();\n this.loading = false;\n }\n\n loadMore() {\n if (!this.collections || this.collections.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedCollections.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedCollectionsCount > this.pageSize) {\n pagedSize = this.pagedCollectionsCount;\n }\n if (this.collections.length > pagedLength) {\n this.pagedCollections =\n this.pagedCollections.concat(this.collections.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedCollectionsCount = this.pagedCollections.length;\n this.didScroll = this.pagedCollections.length > this.pageSize;\n }\n\n edit(collection: CollectionView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.addEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n CollectionAddEditComponent, this.addEditModalRef);\n\n childComponent.organizationId = this.organizationId;\n childComponent.collectionId = collection != null ? collection.id : null;\n childComponent.onSavedCollection.subscribe(() => {\n this.modal.close();\n this.load();\n });\n childComponent.onDeletedCollection.subscribe(() => {\n this.modal.close();\n this.removeCollection(collection);\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n add() {\n this.edit(null);\n }\n\n async delete(collection: CollectionView) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteCollectionConfirmation'), collection.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteCollection(this.organizationId, collection.id);\n this.analytics.eventTrack.next({ action: 'Deleted Collection' });\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedCollectionId', collection.name));\n this.removeCollection(collection);\n } catch { }\n }\n\n users(collection: CollectionView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.usersModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EntityUsersComponent, this.usersModalRef);\n\n childComponent.organizationId = this.organizationId;\n childComponent.entity = 'collection';\n childComponent.entityId = collection.id;\n childComponent.entityName = collection.name;\n\n childComponent.onEditedUsers.subscribe(() => {\n this.load();\n this.modal.close();\n });\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n async resetPaging() {\n this.pagedCollections = [];\n this.loadMore();\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.collections && this.collections.length > this.pageSize;\n }\n\n private removeCollection(collection: CollectionView) {\n const index = this.collections.indexOf(collection);\n if (index > -1) {\n this.collections.splice(index, 1);\n this.resetPaging();\n }\n }\n}\n","
\n

{{'collections' | i18n}}

\n
\n
\n \n \n
\n \n
\n
\n\n \n {{'loading' | i18n}}\n\n\n

{{'noCollectionsInList' | i18n}}

\n \n \n \n \n \n \n \n
\n {{c.name}}\n \n \n
\n\n\n\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherString } from 'jslib/models/domain/cipherString';\nimport { SymmetricCryptoKey } from 'jslib/models/domain/symmetricCryptoKey';\nimport { CollectionRequest } from 'jslib/models/request/collectionRequest';\nimport { SelectionReadOnlyRequest } from 'jslib/models/request/selectionReadOnlyRequest';\nimport { GroupResponse } from 'jslib/models/response/groupResponse';\n\nimport { Utils } from 'jslib/misc/utils';\n\n@Component({\n selector: 'app-collection-add-edit',\n templateUrl: 'collection-add-edit.component.html',\n})\nexport class CollectionAddEditComponent implements OnInit {\n @Input() collectionId: string;\n @Input() organizationId: string;\n @Output() onSavedCollection = new EventEmitter();\n @Output() onDeletedCollection = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n accessGroups: boolean = false;\n title: string;\n name: string;\n externalId: string;\n groups: GroupResponse[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n\n private orgKey: SymmetricCryptoKey;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private platformUtilsService: PlatformUtilsService, private cryptoService: CryptoService,\n private userService: UserService) { }\n\n async ngOnInit() {\n const organization = await this.userService.getOrganization(this.organizationId);\n this.accessGroups = organization.useGroups;\n this.editMode = this.loading = this.collectionId != null;\n if (this.accessGroups) {\n const groupsResponse = await this.apiService.getGroups(this.organizationId);\n this.groups = groupsResponse.data.map(r => r).sort(Utils.getSortFunction(this.i18nService, 'name'));\n }\n this.orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editCollection');\n try {\n const collection = await this.apiService.getCollectionDetails(this.organizationId, this.collectionId);\n this.name = await this.cryptoService.decryptToUtf8(new CipherString(collection.name), this.orgKey);\n this.externalId = collection.externalId;\n if (collection.groups != null && this.groups.length > 0) {\n collection.groups.forEach(s => {\n const group = this.groups.filter(g => !g.accessAll && g.id === s.id);\n if (group != null && group.length > 0) {\n (group[0] as any).checked = true;\n (group[0] as any).readOnly = s.readOnly;\n (group[0] as any).hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch { }\n } else {\n this.title = this.i18nService.t('addCollection');\n }\n\n this.groups.forEach(g => {\n if (g.accessAll) {\n (g as any).checked = true;\n }\n });\n\n this.loading = false;\n }\n\n check(g: GroupResponse, select?: boolean) {\n if (g.accessAll) {\n return;\n }\n (g as any).checked = select == null ? !(g as any).checked : select;\n if (!(g as any).checked) {\n (g as any).readOnly = false;\n (g as any).hidePasswords = false;\n }\n }\n\n selectAll(select: boolean) {\n this.groups.forEach(g => this.check(g, select));\n }\n\n async submit() {\n if (this.orgKey == null) {\n throw new Error('No encryption key for this organization.');\n }\n\n const request = new CollectionRequest();\n request.name = (await this.cryptoService.encrypt(this.name, this.orgKey)).encryptedString;\n request.externalId = this.externalId;\n request.groups = this.groups.filter(g => (g as any).checked && !g.accessAll)\n .map(g => new SelectionReadOnlyRequest(g.id, !!(g as any).readOnly, !!(g as any).hidePasswords));\n\n try {\n if (this.editMode) {\n this.formPromise = this.apiService.putCollection(this.organizationId, this.collectionId, request);\n } else {\n this.formPromise = this.apiService.postCollection(this.organizationId, request);\n }\n await this.formPromise;\n this.analytics.eventTrack.next({ action: this.editMode ? 'Edited Collection' : 'Created Collection' });\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedCollectionId' : 'createdCollectionId', this.name));\n this.onSavedCollection.emit();\n } catch { }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteCollectionConfirmation'), this.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteCollection(this.organizationId, this.collectionId);\n await this.deletePromise;\n this.analytics.eventTrack.next({ action: 'Deleted Collection' });\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedCollectionId', this.name));\n this.onDeletedCollection.emit();\n } catch { }\n }\n}\n","
\n
\n
\n
\n

{{title}}

\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n
\n \n \n
\n
\n \n \n {{'externalIdDesc' | i18n}}\n
\n \n

\n {{'groupAccess' | i18n}}\n
\n \n \n
\n

\n
\n {{'noGroupsInList' | i18n}}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 {{'name' | i18n}}{{'hidePasswords' | i18n}}{{'readOnly' | i18n}}
\n \n \n {{g.name}}\n \n \n {{'groupAccessAllItems' | i18n}}\n \n \n \n \n \n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n","import { Collection } from '../domain/collection';\n\nimport { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nexport class CollectionRequest {\n name: string;\n externalId: string;\n groups: SelectionReadOnlyRequest[] = [];\n\n constructor(collection?: Collection) {\n if (collection == null) {\n return;\n }\n this.name = collection.name ? collection.name.encryptedString : null;\n this.externalId = collection.externalId;\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { EventService } from '../../services/event.service';\n\nimport { EventResponse } from 'jslib/models/response/eventResponse';\nimport { ListResponse } from 'jslib/models/response/listResponse';\n\n@Component({\n selector: 'app-org-events',\n templateUrl: 'events.component.html',\n})\nexport class EventsComponent implements OnInit {\n loading = true;\n loaded = false;\n organizationId: string;\n events: any[];\n start: string;\n end: string;\n continuationToken: string;\n refreshPromise: Promise;\n morePromise: Promise;\n\n private orgUsersUserIdMap = new Map();\n private orgUsersIdMap = new Map();\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private eventService: EventService, private i18nService: I18nService,\n private toasterService: ToasterService, private userService: UserService,\n private router: Router) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (organization == null || !organization.useEvents) {\n this.router.navigate(['/organizations', this.organizationId]);\n return;\n }\n const defaultDates = this.eventService.getDefaultDateFilters();\n this.start = defaultDates[0];\n this.end = defaultDates[1];\n await this.load();\n });\n }\n\n async load() {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n response.data.forEach(u => {\n const name = u.name == null || u.name.trim() === '' ? u.email : u.name;\n this.orgUsersIdMap.set(u.id, { name: name, email: u.email });\n this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n async loadEvents(clearExisting: boolean) {\n if (this.refreshPromise != null || this.morePromise != null) {\n return;\n }\n\n let dates: string[] = null;\n try {\n dates = this.eventService.formatDateFilters(this.start, this.end);\n } catch (e) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidDateRange'));\n return;\n }\n\n this.loading = true;\n let response: ListResponse;\n try {\n const promise = this.apiService.getEventsOrganization(this.organizationId, dates[0], dates[1],\n clearExisting ? null : this.continuationToken);\n if (clearExisting) {\n this.refreshPromise = promise;\n } else {\n this.morePromise = promise;\n }\n response = await promise;\n } catch { }\n\n this.continuationToken = response.continuationToken;\n const events = response.data.map(r => {\n const userId = r.actingUserId == null ? r.userId : r.actingUserId;\n const eventInfo = this.eventService.getEventInfo(r);\n const user = userId != null && this.orgUsersUserIdMap.has(userId) ?\n this.orgUsersUserIdMap.get(userId) : null;\n return {\n message: eventInfo.message,\n appIcon: eventInfo.appIcon,\n appName: eventInfo.appName,\n userId: userId,\n userName: user != null ? user.name : this.i18nService.t('unknown'),\n userEmail: user != null ? user.email : '',\n date: r.date,\n ip: r.ipAddress,\n type: r.type,\n };\n });\n\n if (!clearExisting && this.events != null && this.events.length > 0) {\n this.events = this.events.concat(events);\n } else {\n this.events = events;\n }\n\n this.loading = false;\n this.morePromise = null;\n this.refreshPromise = null;\n }\n}\n","
\n

{{'eventLogs' | i18n}}

\n
\n
\n \n \n -\n \n \n
\n \n
\n
\n\n \n {{'loading' | i18n}}\n\n\n

{{'noEventsInList' | i18n}}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{'timestamp' | i18n}}\n {{'device' | i18n}}\n {{'user' | i18n}}{{'event' | i18n}}
{{e.date | date:'medium'}}\n \n {{e.appName}}, {{e.ip}}\n \n {{e.userName}}\n
\n \n
\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib/abstractions/search.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { GroupResponse } from 'jslib/models/response/groupResponse';\n\nimport { Utils } from 'jslib/misc/utils';\n\nimport { ModalComponent } from '../../modal.component';\nimport { EntityUsersComponent } from './entity-users.component';\nimport { GroupAddEditComponent } from './group-add-edit.component';\n\n@Component({\n selector: 'app-org-groups',\n templateUrl: 'groups.component.html',\n})\nexport class GroupsComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('usersTemplate', { read: ViewContainerRef, static: true }) usersModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n groups: GroupResponse[];\n pagedGroups: GroupResponse[];\n searchText: string;\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedGroupsCount = 0;\n private modal: ModalComponent = null;\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private platformUtilsService: PlatformUtilsService, private userService: UserService,\n private router: Router, private searchService: SearchService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (organization == null || !organization.useGroups) {\n this.router.navigate(['/organizations', this.organizationId]);\n return;\n }\n await this.load();\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n this.searchText = qParams.search;\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getGroups(this.organizationId);\n const groups = response.data != null && response.data.length > 0 ? response.data : [];\n groups.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.groups = groups;\n this.resetPaging();\n this.loading = false;\n }\n\n loadMore() {\n if (!this.groups || this.groups.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedGroups.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedGroupsCount > this.pageSize) {\n pagedSize = this.pagedGroupsCount;\n }\n if (this.groups.length > pagedLength) {\n this.pagedGroups = this.pagedGroups.concat(this.groups.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedGroupsCount = this.pagedGroups.length;\n this.didScroll = this.pagedGroups.length > this.pageSize;\n }\n\n edit(group: GroupResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.addEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n GroupAddEditComponent, this.addEditModalRef);\n\n childComponent.organizationId = this.organizationId;\n childComponent.groupId = group != null ? group.id : null;\n childComponent.onSavedGroup.subscribe(() => {\n this.modal.close();\n this.load();\n });\n childComponent.onDeletedGroup.subscribe(() => {\n this.modal.close();\n this.removeGroup(group);\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n add() {\n this.edit(null);\n }\n\n async delete(group: GroupResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteGroupConfirmation'), group.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteGroup(this.organizationId, group.id);\n this.analytics.eventTrack.next({ action: 'Deleted Group' });\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedGroupId', group.name));\n this.removeGroup(group);\n } catch { }\n }\n\n users(group: GroupResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.usersModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EntityUsersComponent, this.usersModalRef);\n\n childComponent.organizationId = this.organizationId;\n childComponent.entity = 'group';\n childComponent.entityId = group.id;\n childComponent.entityName = group.name;\n\n childComponent.onEditedUsers.subscribe(() => {\n this.modal.close();\n });\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n async resetPaging() {\n this.pagedGroups = [];\n this.loadMore();\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.groups && this.groups.length > this.pageSize;\n }\n\n private removeGroup(group: GroupResponse) {\n const index = this.groups.indexOf(group);\n if (index > -1) {\n this.groups.splice(index, 1);\n this.resetPaging();\n }\n }\n}\n","
\n

{{'groups' | i18n}}

\n
\n
\n \n \n
\n \n
\n
\n\n \n {{'loading' | i18n}}\n\n\n

{{'noGroupsInList' | i18n}}

\n \n \n \n \n \n \n \n
\n {{g.name}}\n \n \n
\n
\n\n\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { CollectionData } from 'jslib/models/data/collectionData';\nimport { Collection } from 'jslib/models/domain/collection';\nimport { GroupRequest } from 'jslib/models/request/groupRequest';\nimport { SelectionReadOnlyRequest } from 'jslib/models/request/selectionReadOnlyRequest';\nimport { CollectionDetailsResponse } from 'jslib/models/response/collectionResponse';\nimport { CollectionView } from 'jslib/models/view/collectionView';\n\n@Component({\n selector: 'app-group-add-edit',\n templateUrl: 'group-add-edit.component.html',\n})\nexport class GroupAddEditComponent implements OnInit {\n @Input() groupId: string;\n @Input() organizationId: string;\n @Output() onSavedGroup = new EventEmitter();\n @Output() onDeletedGroup = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n title: string;\n name: string;\n externalId: string;\n access: 'all' | 'selected' = 'selected';\n collections: CollectionView[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private collectionService: CollectionService, private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.editMode = this.loading = this.groupId != null;\n await this.loadCollections();\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editGroup');\n try {\n const group = await this.apiService.getGroupDetails(this.organizationId, this.groupId);\n this.access = group.accessAll ? 'all' : 'selected';\n this.name = group.name;\n this.externalId = group.externalId;\n if (group.collections != null && this.collections != null) {\n group.collections.forEach(s => {\n const collection = this.collections.filter(c => c.id === s.id);\n if (collection != null && collection.length > 0) {\n (collection[0] as any).checked = true;\n collection[0].readOnly = s.readOnly;\n collection[0].hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch { }\n } else {\n this.title = this.i18nService.t('addGroup');\n }\n\n this.loading = false;\n }\n\n async loadCollections() {\n const response = await this.apiService.getCollections(this.organizationId);\n const collections = response.data.map(r =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collections);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n if (!(c as any).checked) {\n c.readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.collections.forEach(c => this.check(c, select));\n }\n\n async submit() {\n const request = new GroupRequest();\n request.name = this.name;\n request.externalId = this.externalId;\n request.accessAll = this.access === 'all';\n if (!request.accessAll) {\n request.collections = this.collections.filter(c => (c as any).checked)\n .map(c => new SelectionReadOnlyRequest(c.id, !!c.readOnly, !!c.hidePasswords));\n }\n\n try {\n if (this.editMode) {\n this.formPromise = this.apiService.putGroup(this.organizationId, this.groupId, request);\n } else {\n this.formPromise = this.apiService.postGroup(this.organizationId, request);\n }\n await this.formPromise;\n this.analytics.eventTrack.next({ action: this.editMode ? 'Edited Group' : 'Created Group' });\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedGroupId' : 'createdGroupId', this.name));\n this.onSavedGroup.emit();\n } catch { }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteGroupConfirmation'), this.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteGroup(this.organizationId, this.groupId);\n await this.deletePromise;\n this.analytics.eventTrack.next({ action: 'Deleted Group' });\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedGroupId', this.name));\n this.onDeletedGroup.emit();\n } catch { }\n }\n}\n","
\n
\n
\n
\n

{{title}}

\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n
\n \n \n
\n
\n \n \n {{'externalIdDesc' | i18n}}\n
\n

\n
\n {{'accessControl' | i18n}}\n \n \n \n
\n
\n \n \n
\n

\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n {{'noCollectionsInList' | i18n}}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 {{'name' | i18n}}{{'hidePasswords' | i18n}}{{'readOnly' | i18n}}
\n \n \n {{c.name}}\n \n \n \n \n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { Organization } from 'jslib/models/domain/organization';\n\n@Component({\n selector: 'app-org-manage',\n templateUrl: 'manage.component.html',\n})\nexport class ManageComponent implements OnInit {\n organization: Organization;\n accessPolicies = false;\n accessGroups = false;\n accessEvents = false;\n\n constructor(private route: ActivatedRoute, private userService: UserService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.accessPolicies = this.organization.usePolicies;\n this.accessEvents = this.organization.useEvents;\n this.accessGroups = this.organization.useGroups;\n });\n }\n}\n","\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ConstantsService } from 'jslib/services/constants.service';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib/abstractions/search.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { OrganizationUserConfirmRequest } from 'jslib/models/request/organizationUserConfirmRequest';\n\nimport { OrganizationUserUserDetailsResponse } from 'jslib/models/response/organizationUserResponse';\n\nimport { OrganizationUserStatusType } from 'jslib/enums/organizationUserStatusType';\nimport { OrganizationUserType } from 'jslib/enums/organizationUserType';\n\nimport { Utils } from 'jslib/misc/utils';\n\nimport { ModalComponent } from '../../modal.component';\nimport { EntityEventsComponent } from './entity-events.component';\nimport { UserAddEditComponent } from './user-add-edit.component';\nimport { UserConfirmComponent } from './user-confirm.component';\nimport { UserGroupsComponent } from './user-groups.component';\n\n@Component({\n selector: 'app-org-people',\n templateUrl: 'people.component.html',\n})\nexport class PeopleComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('groupsTemplate', { read: ViewContainerRef, static: true }) groupsModalRef: ViewContainerRef;\n @ViewChild('eventsTemplate', { read: ViewContainerRef, static: true }) eventsModalRef: ViewContainerRef;\n @ViewChild('confirmTemplate', { read: ViewContainerRef, static: true }) confirmModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n users: OrganizationUserUserDetailsResponse[];\n pagedUsers: OrganizationUserUserDetailsResponse[];\n searchText: string;\n status: OrganizationUserStatusType = null;\n statusMap = new Map();\n organizationUserType = OrganizationUserType;\n organizationUserStatusType = OrganizationUserStatusType;\n actionPromise: Promise;\n accessEvents = false;\n accessGroups = false;\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedUsersCount = 0;\n private modal: ModalComponent = null;\n private allUsers: OrganizationUserUserDetailsResponse[];\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver,\n private platformUtilsService: PlatformUtilsService, private analytics: Angulartics2,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private userService: UserService, private router: Router,\n private storageService: StorageService, private searchService: SearchService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (!organization.canManageUsers) {\n this.router.navigate(['../collections'], { relativeTo: this.route });\n return;\n }\n this.accessEvents = organization.useEvents;\n this.accessGroups = organization.useGroups;\n await this.load();\n\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n this.searchText = qParams.search;\n if (qParams.viewEvents != null) {\n const user = this.users.filter(u => u.id === qParams.viewEvents);\n if (user.length > 0 && user[0].status === OrganizationUserStatusType.Confirmed) {\n this.events(user[0]);\n }\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n this.statusMap.clear();\n this.allUsers = response.data != null && response.data.length > 0 ? response.data : [];\n this.allUsers.sort(Utils.getSortFunction(this.i18nService, 'email'));\n this.allUsers.forEach(u => {\n if (!this.statusMap.has(u.status)) {\n this.statusMap.set(u.status, [u]);\n } else {\n this.statusMap.get(u.status).push(u);\n }\n });\n this.filter(this.status);\n this.loading = false;\n }\n\n filter(status: OrganizationUserStatusType) {\n this.status = status;\n if (this.status != null) {\n this.users = this.statusMap.get(this.status);\n } else {\n this.users = this.allUsers;\n }\n this.resetPaging();\n }\n\n loadMore() {\n if (!this.users || this.users.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedUsers.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedUsersCount > this.pageSize) {\n pagedSize = this.pagedUsersCount;\n }\n if (this.users.length > pagedLength) {\n this.pagedUsers = this.pagedUsers.concat(this.users.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedUsersCount = this.pagedUsers.length;\n this.didScroll = this.pagedUsers.length > this.pageSize;\n }\n\n get allCount() {\n return this.allUsers != null ? this.allUsers.length : 0;\n }\n\n get invitedCount() {\n return this.statusMap.has(OrganizationUserStatusType.Invited) ?\n this.statusMap.get(OrganizationUserStatusType.Invited).length : 0;\n }\n\n get acceptedCount() {\n return this.statusMap.has(OrganizationUserStatusType.Accepted) ?\n this.statusMap.get(OrganizationUserStatusType.Accepted).length : 0;\n }\n\n get confirmedCount() {\n return this.statusMap.has(OrganizationUserStatusType.Confirmed) ?\n this.statusMap.get(OrganizationUserStatusType.Confirmed).length : 0;\n }\n\n get showConfirmUsers(): boolean {\n return this.allUsers != null && this.statusMap != null && this.allUsers.length > 1 &&\n this.confirmedCount > 0 && this.confirmedCount < 3 && this.acceptedCount > 0;\n }\n\n edit(user: OrganizationUserUserDetailsResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.addEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n UserAddEditComponent, this.addEditModalRef);\n\n childComponent.name = user != null ? user.name || user.email : null;\n childComponent.organizationId = this.organizationId;\n childComponent.organizationUserId = user != null ? user.id : null;\n childComponent.onSavedUser.subscribe(() => {\n this.modal.close();\n this.load();\n });\n childComponent.onDeletedUser.subscribe(() => {\n this.modal.close();\n this.removeUser(user);\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n invite() {\n this.edit(null);\n }\n\n groups(user: OrganizationUserUserDetailsResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.groupsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n UserGroupsComponent, this.groupsModalRef);\n\n childComponent.name = user != null ? user.name || user.email : null;\n childComponent.organizationId = this.organizationId;\n childComponent.organizationUserId = user != null ? user.id : null;\n childComponent.onSavedUser.subscribe(() => {\n this.modal.close();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n async remove(user: OrganizationUserUserDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeUserConfirmation'), user.name || user.email,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteOrganizationUser(this.organizationId, user.id);\n this.analytics.eventTrack.next({ action: 'Deleted User' });\n this.toasterService.popAsync('success', null, this.i18nService.t('removedUserId', user.name || user.email));\n this.removeUser(user);\n } catch { }\n }\n\n async reinvite(user: OrganizationUserUserDetailsResponse) {\n if (this.actionPromise != null) {\n return;\n }\n this.actionPromise = this.apiService.postOrganizationUserReinvite(this.organizationId, user.id);\n await this.actionPromise;\n this.analytics.eventTrack.next({ action: 'Reinvited User' });\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenReinvited', user.name || user.email));\n this.actionPromise = null;\n }\n\n async confirm(user: OrganizationUserUserDetailsResponse) {\n function updateUser(self: PeopleComponent) {\n user.status = OrganizationUserStatusType.Confirmed;\n const mapIndex = self.statusMap.get(OrganizationUserStatusType.Accepted).indexOf(user);\n if (mapIndex > -1) {\n self.statusMap.get(OrganizationUserStatusType.Accepted).splice(mapIndex, 1);\n self.statusMap.get(OrganizationUserStatusType.Confirmed).push(user);\n }\n }\n\n if (this.actionPromise != null) {\n return;\n }\n\n const autoConfirm = await this.storageService.get(ConstantsService.autoConfirmFingerprints);\n if (autoConfirm == null || !autoConfirm) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.confirmModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n UserConfirmComponent, this.confirmModalRef);\n\n childComponent.name = user != null ? user.name || user.email : null;\n childComponent.organizationId = this.organizationId;\n childComponent.organizationUserId = user != null ? user.id : null;\n childComponent.userId = user != null ? user.userId : null;\n childComponent.onConfirmedUser.subscribe(() => {\n this.modal.close();\n updateUser(this);\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n return;\n }\n\n this.actionPromise = this.doConfirmation(user);\n await this.actionPromise;\n updateUser(this);\n this.analytics.eventTrack.next({ action: 'Confirmed User' });\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenConfirmed', user.name || user.email));\n this.actionPromise = null;\n }\n\n async events(user: OrganizationUserUserDetailsResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.eventsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EntityEventsComponent, this.eventsModalRef);\n\n childComponent.name = user.name || user.email;\n childComponent.organizationId = this.organizationId;\n childComponent.entityId = user.id;\n childComponent.showUser = false;\n childComponent.entity = 'user';\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n async resetPaging() {\n this.pagedUsers = [];\n this.loadMore();\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.users && this.users.length > this.pageSize;\n }\n\n private async doConfirmation(user: OrganizationUserUserDetailsResponse) {\n const orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n const publicKeyResponse = await this.apiService.getUserPublicKey(user.userId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n try {\n // tslint:disable-next-line\n console.log('User\\'s fingerprint: ' +\n (await this.cryptoService.getFingerprint(user.userId, publicKey.buffer)).join('-'));\n } catch { }\n const key = await this.cryptoService.rsaEncrypt(orgKey.key, publicKey.buffer);\n const request = new OrganizationUserConfirmRequest();\n request.key = key.encryptedString;\n await this.apiService.postOrganizationUserConfirm(this.organizationId, user.id, request);\n }\n\n private removeUser(user: OrganizationUserUserDetailsResponse) {\n let index = this.users.indexOf(user);\n if (index > -1) {\n this.users.splice(index, 1);\n this.resetPaging();\n }\n if (this.statusMap.has(OrganizationUserStatusType.Accepted)) {\n index = this.statusMap.get(OrganizationUserStatusType.Accepted).indexOf(user);\n if (index > -1) {\n this.statusMap.get(OrganizationUserStatusType.Accepted).splice(index, 1);\n }\n }\n if (this.statusMap.has(OrganizationUserStatusType.Invited)) {\n index = this.statusMap.get(OrganizationUserStatusType.Invited).indexOf(user);\n if (index > -1) {\n this.statusMap.get(OrganizationUserStatusType.Invited).splice(index, 1);\n }\n }\n if (this.statusMap.has(OrganizationUserStatusType.Confirmed)) {\n index = this.statusMap.get(OrganizationUserStatusType.Confirmed).indexOf(user);\n if (index > -1) {\n this.statusMap.get(OrganizationUserStatusType.Confirmed).splice(index, 1);\n }\n }\n }\n}\n","
\n

{{'people' | i18n}}

\n
\n
\n \n \n \n
\n
\n \n \n
\n \n
\n
\n\n \n {{'loading' | i18n}}\n\n\n

{{'noUsersInList' | i18n}}

\n \n \n {{'usersNeedConfirmed' | i18n}}\n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{u.email}}\n {{'invited' | i18n}}\n {{'accepted' | i18n}}\n {{u.name}}\n \n \n \n {{'userUsingTwoStep' | i18n}}\n \n \n {{'owner' | i18n}}\n {{'admin' | i18n}}\n {{'manager' | i18n}}\n {{'user' | i18n}}\n {{'custom' | i18n}}\n \n \n
\n
\n\n\n\n\n\n","export class OrganizationUserConfirmRequest {\n key: string;\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { CollectionData } from 'jslib/models/data/collectionData';\nimport { Collection } from 'jslib/models/domain/collection';\nimport { OrganizationUserInviteRequest } from 'jslib/models/request/organizationUserInviteRequest';\nimport { OrganizationUserUpdateRequest } from 'jslib/models/request/organizationUserUpdateRequest';\nimport { SelectionReadOnlyRequest } from 'jslib/models/request/selectionReadOnlyRequest';\nimport { CollectionDetailsResponse } from 'jslib/models/response/collectionResponse';\nimport { CollectionView } from 'jslib/models/view/collectionView';\n\nimport { OrganizationUserType } from 'jslib/enums/organizationUserType';\nimport { PermissionsApi } from 'jslib/models/api/permissionsApi';\n\n@Component({\n selector: 'app-user-add-edit',\n templateUrl: 'user-add-edit.component.html',\n})\nexport class UserAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Output() onSavedUser = new EventEmitter();\n @Output() onDeletedUser = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n title: string;\n emails: string;\n type: OrganizationUserType = OrganizationUserType.User;\n permissions = new PermissionsApi();\n showCustom = false;\n access: 'all' | 'selected' = 'selected';\n collections: CollectionView[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n organizationUserType = OrganizationUserType;\n\n get customUserTypeSelected(): boolean {\n return this.type === OrganizationUserType.Custom;\n }\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private collectionService: CollectionService, private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.editMode = this.loading = this.organizationUserId != null;\n await this.loadCollections();\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editUser');\n try {\n const user = await this.apiService.getOrganizationUser(this.organizationId, this.organizationUserId);\n this.access = user.accessAll ? 'all' : 'selected';\n this.type = user.type;\n if (user.type === OrganizationUserType.Custom) {\n this.permissions = user.permissions;\n }\n if (user.collections != null && this.collections != null) {\n user.collections.forEach(s => {\n const collection = this.collections.filter(c => c.id === s.id);\n if (collection != null && collection.length > 0) {\n (collection[0] as any).checked = true;\n collection[0].readOnly = s.readOnly;\n collection[0].hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch { }\n } else {\n this.title = this.i18nService.t('inviteUser');\n }\n\n this.loading = false;\n }\n\n async loadCollections() {\n const response = await this.apiService.getCollections(this.organizationId);\n const collections = response.data.map(r =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collections);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n if (!(c as any).checked) {\n c.readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.collections.forEach(c => this.check(c, select));\n }\n\n setRequestPermissions(p: PermissionsApi, clearPermissions: boolean) {\n p.accessBusinessPortal = clearPermissions ?\n false :\n this.permissions.accessBusinessPortal;\n p.accessEventLogs = this.permissions.accessEventLogs = clearPermissions ?\n false :\n this.permissions.accessEventLogs;\n p.accessImportExport = clearPermissions ?\n false :\n this.permissions.accessImportExport;\n p.accessReports = clearPermissions ?\n false :\n this.permissions.accessReports;\n p.manageAllCollections = clearPermissions ?\n false :\n this.permissions.manageAllCollections;\n p.manageAssignedCollections = clearPermissions ?\n false :\n this.permissions.manageAssignedCollections;\n p.manageGroups = clearPermissions ?\n false :\n this.permissions.manageGroups;\n p.manageSso = clearPermissions ?\n false :\n this.permissions.manageSso;\n p.managePolicies = clearPermissions ?\n false :\n this.permissions.managePolicies;\n p.manageUsers = clearPermissions ?\n false :\n this.permissions.manageUsers;\n return p;\n }\n\n async submit() {\n let collections: SelectionReadOnlyRequest[] = null;\n if (this.access !== 'all') {\n collections = this.collections.filter(c => (c as any).checked)\n .map(c => new SelectionReadOnlyRequest(c.id, !!c.readOnly, !!c.hidePasswords));\n }\n\n try {\n if (this.editMode) {\n const request = new OrganizationUserUpdateRequest();\n request.accessAll = this.access === 'all';\n request.type = this.type;\n request.collections = collections;\n request.permissions = this.setRequestPermissions(request.permissions ?? new PermissionsApi(), request.type !== OrganizationUserType.Custom);\n this.formPromise = this.apiService.putOrganizationUser(this.organizationId, this.organizationUserId,\n request);\n } else {\n const request = new OrganizationUserInviteRequest();\n request.emails = this.emails.trim().split(/\\s*,\\s*/);\n request.accessAll = this.access === 'all';\n request.type = this.type;\n request.permissions = this.setRequestPermissions(request.permissions ?? new PermissionsApi(), request.type !== OrganizationUserType.Custom);\n request.collections = collections;\n this.formPromise = this.apiService.postOrganizationUserInvite(this.organizationId, request);\n }\n await this.formPromise;\n this.analytics.eventTrack.next({ action: this.editMode ? 'Edited User' : 'Invited User' });\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedUserId' : 'invitedUsers', this.name));\n this.onSavedUser.emit();\n } catch { }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeUserConfirmation'), this.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteOrganizationUser(this.organizationId, this.organizationUserId);\n await this.deletePromise;\n this.analytics.eventTrack.next({ action: 'Deleted User' });\n this.toasterService.popAsync('success', null, this.i18nService.t('removedUserId', this.name));\n this.onDeletedUser.emit();\n } catch { }\n }\n\n}\n","
\n
\n
\n
\n

\n {{title}}\n {{name}}\n

\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n \n

{{'inviteUserDesc' | i18n}}

\n
\n \n \n {{'inviteMultipleEmailDesc' | i18n : '20'}}\n
\n
\n

\n {{'userType' | i18n}}\n \n \n \n

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n \n

\n {{'permissions' | i18n}}\n

\n
\n
\n
\n \n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n

\n
\n {{'accessControl' | i18n}}\n \n \n \n
\n
\n \n \n
\n

\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n {{'noCollectionsInList' | i18n}}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 {{'name' | i18n}}{{'hidePasswords' | i18n}}{{'readOnly' | i18n}}
\n \n \n {{c.name}}\n \n \n \n \n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ConstantsService } from 'jslib/services/constants.service';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\n\nimport { OrganizationUserConfirmRequest } from 'jslib/models/request/organizationUserConfirmRequest';\n\nimport { Utils } from 'jslib/misc/utils';\n\n@Component({\n selector: 'app-user-confirm',\n templateUrl: 'user-confirm.component.html',\n})\nexport class UserConfirmComponent implements OnInit {\n @Input() name: string;\n @Input() userId: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Output() onConfirmedUser = new EventEmitter();\n\n dontAskAgain = false;\n loading = true;\n fingerprint: string;\n formPromise: Promise;\n\n private publicKey: Uint8Array = null;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private storageService: StorageService) { }\n\n async ngOnInit() {\n try {\n const publicKeyResponse = await this.apiService.getUserPublicKey(this.userId);\n if (publicKeyResponse != null) {\n this.publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n const fingerprint = await this.cryptoService.getFingerprint(this.userId, this.publicKey.buffer);\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join('-');\n }\n }\n } catch { }\n this.loading = false;\n }\n\n async submit() {\n if (this.loading) {\n return;\n }\n\n if (this.dontAskAgain) {\n await this.storageService.save(ConstantsService.autoConfirmFingerprints, true);\n }\n\n try {\n this.formPromise = this.doConfirmation();\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Confirmed User' });\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenConfirmed', this.name));\n this.onConfirmedUser.emit();\n } catch { }\n }\n\n private async doConfirmation() {\n const orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n const key = await this.cryptoService.rsaEncrypt(orgKey.key, this.publicKey.buffer);\n const request = new OrganizationUserConfirmRequest();\n request.key = key.encryptedString;\n await this.apiService.postOrganizationUserConfirm(this.organizationId, this.organizationUserId, request);\n }\n}\n","
\n
\n
\n
\n

\n {{'confirmUser' | i18n}}\n {{name}}\n

\n \n
\n
\n

\n {{'fingerprintEnsureIntegrityVerify' | i18n}}\n \n {{'learnMore' | i18n}}\n

\n

{{fingerprint}}

\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { OrganizationUserUpdateGroupsRequest } from 'jslib/models/request/organizationUserUpdateGroupsRequest';\nimport { GroupResponse } from 'jslib/models/response/groupResponse';\n\nimport { Utils } from 'jslib/misc/utils';\n\n@Component({\n selector: 'app-user-groups',\n templateUrl: 'user-groups.component.html',\n})\nexport class UserGroupsComponent implements OnInit {\n @Input() name: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Output() onSavedUser = new EventEmitter();\n\n loading = true;\n groups: GroupResponse[] = [];\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService) { }\n\n async ngOnInit() {\n const groupsResponse = await this.apiService.getGroups(this.organizationId);\n const groups = groupsResponse.data.map(r => r);\n groups.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.groups = groups;\n\n try {\n const userGroups = await this.apiService.getOrganizationUserGroups(\n this.organizationId, this.organizationUserId);\n if (userGroups != null && this.groups != null) {\n userGroups.forEach(ug => {\n const group = this.groups.filter(g => g.id === ug);\n if (group != null && group.length > 0) {\n (group[0] as any).checked = true;\n }\n });\n }\n } catch { }\n\n this.loading = false;\n }\n\n check(g: GroupResponse, select?: boolean) {\n (g as any).checked = select == null ? !(g as any).checked : select;\n if (!(g as any).checked) {\n (g as any).readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.groups.forEach(g => this.check(g, select));\n }\n\n async submit() {\n const request = new OrganizationUserUpdateGroupsRequest();\n request.groupIds = this.groups.filter(g => (g as any).checked).map(g => g.id);\n\n try {\n this.formPromise = this.apiService.putOrganizationUserGroups(this.organizationId, this.organizationUserId,\n request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Edited User Groups' });\n this.toasterService.popAsync('success', null, this.i18nService.t('editedGroupsForUser', this.name));\n this.onSavedUser.emit();\n } catch { }\n }\n}\n","
\n
\n
\n
\n

\n {{'groupAccess' | i18n}}\n {{name}}\n

\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n

{{'groupAccessUserDesc' | i18n}}

\n
\n {{'noGroupsInList' | i18n}}\n
\n \n \n \n \n \n \n \n
\n \n \n {{g.name}}\n
\n
\n
\n \n \n
\n
\n
\n
\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { PolicyType } from 'jslib/enums/policyType';\n\nimport { EnvironmentService } from 'jslib/abstractions';\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { PolicyResponse } from 'jslib/models/response/policyResponse';\n\nimport { ModalComponent } from '../../modal.component';\n\nimport { PolicyEditComponent } from './policy-edit.component';\n\n@Component({\n selector: 'app-org-policies',\n templateUrl: 'policies.component.html',\n})\nexport class PoliciesComponent implements OnInit {\n @ViewChild('editTemplate', { read: ViewContainerRef, static: true }) editModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n policies: any[];\n\n // Remove when removing deprecation warning\n enterpriseTokenPromise: Promise;\n userCanAccessBusinessPortal = false;\n\n private enterpriseUrl: string;\n\n private modal: ModalComponent = null;\n private orgPolicies: PolicyResponse[];\n private policiesEnabledMap: Map = new Map();\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver,\n private platformUtilsService: PlatformUtilsService, private userService: UserService,\n private router: Router, private environmentService: EnvironmentService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (organization == null || !organization.usePolicies) {\n this.router.navigate(['/organizations', this.organizationId]);\n return;\n }\n this.userCanAccessBusinessPortal = organization.canAccessBusinessPortal;\n this.policies = [\n {\n name: this.i18nService.t('twoStepLogin'),\n description: this.i18nService.t('twoStepLoginPolicyDesc'),\n type: PolicyType.TwoFactorAuthentication,\n enabled: false,\n display: true,\n },\n {\n name: this.i18nService.t('masterPass'),\n description: this.i18nService.t('masterPassPolicyDesc'),\n type: PolicyType.MasterPassword,\n enabled: false,\n display: true,\n },\n {\n name: this.i18nService.t('passwordGenerator'),\n description: this.i18nService.t('passwordGeneratorPolicyDesc'),\n type: PolicyType.PasswordGenerator,\n enabled: false,\n display: true,\n },\n {\n name: this.i18nService.t('singleOrg'),\n description: this.i18nService.t('singleOrgDesc'),\n type: PolicyType.SingleOrg,\n enabled: false,\n display: true,\n },\n {\n name: this.i18nService.t('requireSso'),\n description: this.i18nService.t('requireSsoPolicyDesc'),\n type: PolicyType.RequireSso,\n enabled: false,\n display: organization.useSso,\n },\n {\n name: this.i18nService.t('personalOwnership'),\n description: this.i18nService.t('personalOwnershipPolicyDesc'),\n type: PolicyType.PersonalOwnership,\n enabled: false,\n display: true,\n },\n {\n name: this.i18nService.t('disableSend'),\n description: this.i18nService.t('disableSendPolicyDesc'),\n type: PolicyType.DisableSend,\n enabled: false,\n display: true,\n },\n ];\n await this.load();\n\n // Handle policies component launch from Event message\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.policyId != null) {\n const policyIdFromEvents: string = qParams.policyId;\n for (const orgPolicy of this.orgPolicies) {\n if (orgPolicy.id === policyIdFromEvents) {\n for (let i = 0; i < this.policies.length; i++) {\n if (this.policies[i].type === orgPolicy.type) {\n this.edit(this.policies[i]);\n break;\n }\n }\n break;\n }\n }\n }\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n\n // Remove when removing deprecation warning\n this.enterpriseUrl = 'https://portal.bitwarden.com';\n if (this.environmentService.enterpriseUrl != null) {\n this.enterpriseUrl = this.environmentService.enterpriseUrl;\n } else if (this.environmentService.baseUrl != null) {\n this.enterpriseUrl = this.environmentService.baseUrl + '/portal';\n }\n }\n\n async load() {\n const response = await this.apiService.getPolicies(this.organizationId);\n this.orgPolicies = response.data != null && response.data.length > 0 ? response.data : [];\n this.orgPolicies.forEach(op => {\n this.policiesEnabledMap.set(op.type, op.enabled);\n });\n this.policies.forEach(p => {\n p.enabled = this.policiesEnabledMap.has(p.type) && this.policiesEnabledMap.get(p.type);\n });\n this.loading = false;\n }\n\n edit(p: any) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.editModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n PolicyEditComponent, this.editModalRef);\n\n childComponent.name = p.name;\n childComponent.description = p.description;\n childComponent.type = p.type;\n childComponent.organizationId = this.organizationId;\n childComponent.policiesEnabledMap = this.policiesEnabledMap;\n childComponent.onSavedPolicy.subscribe(() => {\n this.modal.close();\n this.load();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n\n // Remove when removing deprecation warning\n async goToEnterprisePortal() {\n if (this.enterpriseTokenPromise != null) {\n return;\n }\n try {\n this.enterpriseTokenPromise = this.apiService.getEnterprisePortalSignInToken();\n const token = await this.enterpriseTokenPromise;\n if (token != null) {\n const userId = await this.userService.getUserId();\n this.platformUtilsService.launchUri(this.enterpriseUrl + '/login?userId=' + userId +\n '&token=' + (window as any).encodeURIComponent(token) + '&organizationId=' + this.organizationId);\n }\n } catch { }\n this.enterpriseTokenPromise = null;\n }\n}\n","\n

{{'webPoliciesDeprecationWarning' | i18n}}

\n \n
\n
\n

{{'policies' | i18n}}

\n
\n\n \n {{'loading' | i18n}}\n\n\n \n \n \n \n \n
\n {{p.name}}\n {{'enabled' | i18n}}\n {{p.description}}\n
\n\n","// Using index.ts is deprecated, please do not extend\nexport { ApiService } from './api.service';\nexport { AppIdService } from './appId.service';\nexport { AuditService } from './audit.service';\nexport { AuthService } from './auth.service';\nexport { CipherService } from './cipher.service';\nexport { CollectionService } from './collection.service';\nexport { CryptoService } from './crypto.service';\nexport { EnvironmentService } from './environment.service';\nexport { FolderService } from './folder.service';\nexport { I18nService } from './i18n.service';\nexport { LogService } from './log.service';\nexport { MessagingService } from './messaging.service';\nexport { PasswordGenerationService } from './passwordGeneration.service';\nexport { PlatformUtilsService } from './platformUtils.service';\nexport { SearchService } from './search.service';\nexport { SettingsService } from './settings.service';\nexport { StorageService } from './storage.service';\nexport { StateService } from './state.service';\nexport { SyncService } from './sync.service';\nexport { TokenService } from './token.service';\nexport { TotpService } from './totp.service';\nexport { UserService } from './user.service';\nexport { VaultTimeoutService } from './vaultTimeout.service';\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { PolicyType } from 'jslib/enums/policyType';\n\nimport { PolicyRequest } from 'jslib/models/request/policyRequest';\n\nimport { PolicyResponse } from 'jslib/models/response/policyResponse';\n\n@Component({\n selector: 'app-policy-edit',\n templateUrl: 'policy-edit.component.html',\n})\nexport class PolicyEditComponent implements OnInit {\n @Input() name: string;\n @Input() description: string;\n @Input() type: PolicyType;\n @Input() organizationId: string;\n @Input() policiesEnabledMap: Map = new Map();\n @Output() onSavedPolicy = new EventEmitter();\n\n policyType = PolicyType;\n loading = true;\n enabled = false;\n formPromise: Promise;\n passwordScores: any[];\n defaultTypes: any[];\n\n // Master password\n\n masterPassMinComplexity?: number = null;\n masterPassMinLength?: number;\n masterPassRequireUpper?: number;\n masterPassRequireLower?: number;\n masterPassRequireNumbers?: number;\n masterPassRequireSpecial?: number;\n\n // Password generator\n\n passGenDefaultType?: string;\n passGenMinLength?: number;\n passGenUseUpper?: boolean;\n passGenUseLower?: boolean;\n passGenUseNumbers?: boolean;\n passGenUseSpecial?: boolean;\n passGenMinNumbers?: number;\n passGenMinSpecial?: number;\n passGenMinNumberWords?: number;\n passGenCapitalize?: boolean;\n passGenIncludeNumber?: boolean;\n\n private policy: PolicyResponse;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService) {\n this.passwordScores = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: i18nService.t('weak') + ' (0)', value: 0 },\n { name: i18nService.t('weak') + ' (1)', value: 1 },\n { name: i18nService.t('weak') + ' (2)', value: 2 },\n { name: i18nService.t('good') + ' (3)', value: 3 },\n { name: i18nService.t('strong') + ' (4)', value: 4 },\n ];\n this.defaultTypes = [\n { name: i18nService.t('userPreference'), value: null },\n { name: i18nService.t('password'), value: 'password' },\n { name: i18nService.t('passphrase'), value: 'passphrase' },\n ];\n }\n\n async ngOnInit() {\n await this.load();\n this.loading = false;\n }\n\n async load() {\n try {\n this.policy = await this.apiService.getPolicy(this.organizationId, this.type);\n\n if (this.policy != null) {\n this.enabled = this.policy.enabled;\n if (this.policy.data != null) {\n switch (this.type) {\n case PolicyType.PasswordGenerator:\n this.passGenDefaultType = this.policy.data.defaultType;\n this.passGenMinLength = this.policy.data.minLength;\n this.passGenUseUpper = this.policy.data.useUpper;\n this.passGenUseLower = this.policy.data.useLower;\n this.passGenUseNumbers = this.policy.data.useNumbers;\n this.passGenUseSpecial = this.policy.data.useSpecial;\n this.passGenMinNumbers = this.policy.data.minNumbers;\n this.passGenMinSpecial = this.policy.data.minSpecial;\n this.passGenMinNumberWords = this.policy.data.minNumberWords;\n this.passGenCapitalize = this.policy.data.capitalize;\n this.passGenIncludeNumber = this.policy.data.includeNumber;\n break;\n case PolicyType.MasterPassword:\n this.masterPassMinComplexity = this.policy.data.minComplexity;\n this.masterPassMinLength = this.policy.data.minLength;\n this.masterPassRequireUpper = this.policy.data.requireUpper;\n this.masterPassRequireLower = this.policy.data.requireLower;\n this.masterPassRequireNumbers = this.policy.data.requireNumbers;\n this.masterPassRequireSpecial = this.policy.data.requireSpecial;\n break;\n default:\n break;\n }\n }\n }\n } catch (e) {\n if (e.statusCode === 404) {\n this.enabled = false;\n } else {\n throw e;\n }\n }\n }\n\n async submit() {\n if (this.preValidate()) {\n const request = new PolicyRequest();\n request.enabled = this.enabled;\n request.type = this.type;\n request.data = null;\n switch (this.type) {\n case PolicyType.PasswordGenerator:\n request.data = {\n defaultType: this.passGenDefaultType,\n minLength: this.passGenMinLength || null,\n useUpper: this.passGenUseUpper,\n useLower: this.passGenUseLower,\n useNumbers: this.passGenUseNumbers,\n useSpecial: this.passGenUseSpecial,\n minNumbers: this.passGenMinNumbers || null,\n minSpecial: this.passGenMinSpecial || null,\n minNumberWords: this.passGenMinNumberWords || null,\n capitalize: this.passGenCapitalize,\n includeNumber: this.passGenIncludeNumber,\n };\n break;\n case PolicyType.MasterPassword:\n request.data = {\n minComplexity: this.masterPassMinComplexity || null,\n minLength: this.masterPassMinLength || null,\n requireUpper: this.masterPassRequireUpper,\n requireLower: this.masterPassRequireLower,\n requireNumbers: this.masterPassRequireNumbers,\n requireSpecial: this.masterPassRequireSpecial,\n };\n break;\n default:\n break;\n }\n try {\n this.formPromise = this.apiService.putPolicy(this.organizationId, this.type, request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Edited Policy' });\n this.toasterService.popAsync('success', null, this.i18nService.t('editedPolicyId', this.name));\n this.onSavedPolicy.emit();\n } catch { }\n }\n }\n\n get checkboxDesc(): string {\n return this.type === PolicyType.PersonalOwnership ? this.i18nService.t('personalOwnershipCheckboxDesc') :\n this.i18nService.t('enabled');\n }\n\n private preValidate(): boolean {\n switch (this.type) {\n case PolicyType.RequireSso:\n // Don't need prevalidation checks if submitting to disable\n if (!this.enabled) {\n return true;\n }\n // Have SingleOrg policy enabled?\n if (!(this.policiesEnabledMap.has(PolicyType.SingleOrg)\n && this.policiesEnabledMap.get(PolicyType.SingleOrg))) {\n this.toasterService.popAsync('error', null, this.i18nService.t('requireSsoPolicyReqError'));\n return false;\n }\n return true;\n\n case PolicyType.SingleOrg:\n // Don't need prevalidation checks if submitting to enable\n if (this.enabled) {\n return true;\n }\n // If RequireSso Policy is enabled prevent submittal\n if (this.policiesEnabledMap.has(PolicyType.RequireSso)\n && this.policiesEnabledMap.get(PolicyType.RequireSso)) {\n this.toasterService.popAsync('error', null, this.i18nService.t('disableRequireSsoError'));\n return false;\n }\n return true;\n\n default:\n return true;\n }\n }\n}\n","
\n
\n
\n
\n

{{'editPolicy' | i18n}} - {{name}}

\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n

{{description}}

\n \n {{'twoStepLoginPolicyWarning' | i18n}}\n \n \n {{'singleOrgPolicyWarning' | i18n}}\n \n \n \n {{'requireSsoPolicyReq' | i18n}}\n \n \n {{'requireSsoExemption' | i18n}}\n \n \n \n {{'personalOwnershipExemption' | i18n}}\n \n \n {{'disableSendExemption' | i18n}}\n \n
\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n

{{'password' | i18n}}

\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n

{{'passphrase' | i18n}}

\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n","import {\n Component,\n ComponentFactoryResolver,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\n\nimport { OrganizationUpdateRequest } from 'jslib/models/request/organizationUpdateRequest';\nimport { OrganizationResponse } from 'jslib/models/response/organizationResponse';\n\nimport { ModalComponent } from '../../modal.component';\nimport { ApiKeyComponent } from '../../settings/api-key.component';\nimport { PurgeVaultComponent } from '../../settings/purge-vault.component';\nimport { TaxInfoComponent } from '../../settings/tax-info.component';\nimport { DeleteOrganizationComponent } from './delete-organization.component';\n\n@Component({\n selector: 'app-org-account',\n templateUrl: 'account.component.html',\n})\nexport class AccountComponent {\n @ViewChild('deleteOrganizationTemplate', { read: ViewContainerRef, static: true }) deleteModalRef: ViewContainerRef;\n @ViewChild('purgeOrganizationTemplate', { read: ViewContainerRef, static: true }) purgeModalRef: ViewContainerRef;\n @ViewChild('apiKeyTemplate', { read: ViewContainerRef, static: true }) apiKeyModalRef: ViewContainerRef;\n @ViewChild('rotateApiKeyTemplate', { read: ViewContainerRef, static: true }) rotateApiKeyModalRef: ViewContainerRef;\n @ViewChild(TaxInfoComponent) taxInfo: TaxInfoComponent;\n\n selfHosted = false;\n loading = true;\n canUseApi = false;\n org: OrganizationResponse;\n formPromise: Promise;\n taxFormPromise: Promise;\n\n private organizationId: string;\n private modal: ModalComponent = null;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver,\n private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private route: ActivatedRoute, private syncService: SyncService,\n private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n try {\n this.org = await this.apiService.getOrganization(this.organizationId);\n this.canUseApi = this.org.useApi;\n } catch { }\n });\n this.loading = false;\n }\n\n async submit() {\n try {\n const request = new OrganizationUpdateRequest();\n request.name = this.org.name;\n request.businessName = this.org.businessName;\n request.billingEmail = this.org.billingEmail;\n request.identifier = this.org.identifier;\n this.formPromise = this.apiService.putOrganization(this.organizationId, request).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Updated Organization Settings' });\n this.toasterService.popAsync('success', null, this.i18nService.t('organizationUpdated'));\n } catch { }\n }\n\n async submitTaxInfo() {\n this.taxFormPromise = this.taxInfo.submitTaxInfo();\n await this.taxFormPromise;\n this.analytics.eventTrack.next({ action: 'Updated Organization Tax Info' });\n this.toasterService.popAsync('success', null, this.i18nService.t('taxInfoUpdated'));\n }\n\n deleteOrganization() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.deleteModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n DeleteOrganizationComponent, this.deleteModalRef);\n childComponent.organizationId = this.organizationId;\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n purgeVault() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.purgeModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(PurgeVaultComponent, this.purgeModalRef);\n childComponent.organizationId = this.organizationId;\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n viewApiKey() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.apiKeyModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(ApiKeyComponent, this.apiKeyModalRef);\n childComponent.keyType = 'organization';\n childComponent.entityId = this.organizationId;\n childComponent.postKey = this.apiService.postOrganizationApiKey.bind(this.apiService);\n childComponent.scope = 'api.organization';\n childComponent.grantType = 'client_credentials';\n childComponent.apiKeyTitle = 'apiKey';\n childComponent.apiKeyWarning = 'apiKeyWarning';\n childComponent.apiKeyDescription = 'apiKeyDesc';\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n rotateApiKey() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.rotateApiKeyModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(ApiKeyComponent, this.rotateApiKeyModalRef);\n childComponent.keyType = 'organization';\n childComponent.isRotation = true;\n childComponent.entityId = this.organizationId;\n childComponent.postKey = this.apiService.postOrganizationRotateApiKey.bind(this.apiService);\n childComponent.scope = 'api.organization';\n childComponent.grantType = 'client_credentials';\n childComponent.apiKeyTitle = 'apiKey';\n childComponent.apiKeyWarning = 'apiKeyWarning';\n childComponent.apiKeyDescription = 'apiKeyRotateDesc';\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n}\n","
\n

{{'myOrganization' | i18n}}

\n
\n
\n \n {{'loading' | i18n}}\n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n
\n\n
\n

{{'apiKey' | i18n}}

\n
\n

\n {{'apiKeyDesc' | i18n}}\n \n {{'learnMore' | i18n}}\n \n

\n \n \n
\n
\n

{{'taxInformation' | i18n}}

\n
\n

{{'taxInformationDesc' | i18n}}

\n
\n \n {{'loading' | i18n}}\n
\n
\n \n \n
\n
\n

{{'dangerZone' | i18n}}

\n
\n
\n
\n

{{'dangerZoneDesc' | i18n}}

\n \n \n
\n
\n\n\n\n\n","import { TaxInfoUpdateRequest } from './taxInfoUpdateRequest';\n\nexport class OrganizationTaxInfoUpdateRequest extends TaxInfoUpdateRequest {\n taxId: string;\n line1: string;\n line2: string;\n city: string;\n state: string;\n}\n","export class TaxInfoUpdateRequest {\n country: string;\n postalCode: string;\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-delete-organization',\n templateUrl: 'delete-organization.component.html',\n})\nexport class DeleteOrganizationComponent {\n organizationId: string;\n\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private router: Router) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.deleteOrganization(this.organizationId, request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Deleted Organization' });\n this.toasterService.popAsync('success', this.i18nService.t('organizationDeleted'),\n this.i18nService.t('organizationDeletedDesc'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","
\n
\n
\n
\n

{{'deleteOrganization' | i18n}}

\n \n
\n
\n

{{'deleteOrganizationDesc' | i18n}}

\n {{'deleteOrganizationWarning' | i18n}}\n \n \n
\n
\n \n \n
\n
\n
\n
\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { UserBillingComponent } from '../../settings/user-billing.component';\n\n@Component({\n selector: 'app-org-billing',\n templateUrl: '../../settings/user-billing.component.html',\n})\nexport class OrganizationBillingComponent extends UserBillingComponent implements OnInit {\n constructor(apiService: ApiService, i18nService: I18nService,\n analytics: Angulartics2, toasterService: ToasterService,\n private route: ActivatedRoute, platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, analytics, toasterService, platformUtilsService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n this.firstLoaded = true;\n });\n }\n}\n","export class WebConstants {\n static readonly stripeTestKey = 'pk_test_KPoCfZXu7mznb9uSCPZ2JpTD';\n static readonly stripeLiveKey = 'pk_live_bpN0P37nMxrMQkcaHXtAybJk';\n static readonly btSandboxKey = 'sandbox_r72q8jq6_9pnxkwm75f87sdc2';\n static readonly btProductionKey = 'production_qfbsv8kc_njj2zjtyngtjmbjd';\n static readonly paypal = {\n businessIdProduction: '4ZDA7DLUUJGMN',\n businessIdSandbox: 'AD3LAUZSNVPJY',\n buttonActionProduction: 'https://www.paypal.com/cgi-bin/webscr',\n buttonActionSandbox: 'https://www.sandbox.paypal.com/cgi-bin/webscr',\n };\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { OrganizationSubscriptionResponse } from 'jslib/models/response/organizationSubscriptionResponse';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { PlanType } from 'jslib/enums/planType';\n\n@Component({\n selector: 'app-org-subscription',\n templateUrl: 'organization-subscription.component.html',\n})\nexport class OrganizationSubscriptionComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n organizationId: string;\n adjustSeatsAdd = true;\n showAdjustSeats = false;\n adjustStorageAdd = true;\n showAdjustStorage = false;\n showUpdateLicense = false;\n showDownloadLicense = false;\n showChangePlan = false;\n sub: OrganizationSubscriptionResponse;\n selfHosted = false;\n\n cancelPromise: Promise;\n reinstatePromise: Promise;\n\n constructor(private apiService: ApiService, private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService, private analytics: Angulartics2,\n private toasterService: ToasterService, private messagingService: MessagingService,\n private route: ActivatedRoute) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n this.firstLoaded = true;\n });\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n this.loading = true;\n this.sub = await this.apiService.getOrganizationSubscription(this.organizationId);\n this.loading = false;\n }\n\n async reinstate() {\n if (this.loading) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('reinstateConfirmation'),\n this.i18nService.t('reinstateSubscription'), this.i18nService.t('yes'), this.i18nService.t('cancel'));\n if (!confirmed) {\n return;\n }\n\n try {\n this.reinstatePromise = this.apiService.postOrganizationReinstate(this.organizationId);\n await this.reinstatePromise;\n this.analytics.eventTrack.next({ action: 'Reinstated Plan' });\n this.toasterService.popAsync('success', null, this.i18nService.t('reinstated'));\n this.load();\n } catch { }\n }\n\n async cancel() {\n if (this.loading) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('cancelConfirmation'),\n this.i18nService.t('cancelSubscription'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n this.cancelPromise = this.apiService.postOrganizationCancel(this.organizationId);\n await this.cancelPromise;\n this.analytics.eventTrack.next({ action: 'Canceled Plan' });\n this.toasterService.popAsync('success', null, this.i18nService.t('canceledSubscription'));\n this.load();\n } catch { }\n }\n\n async changePlan() {\n if (this.subscription == null && this.sub.planType === PlanType.Free) {\n this.showChangePlan = !this.showChangePlan;\n return;\n }\n const contactSupport = await this.platformUtilsService.showDialog(this.i18nService.t('changeBillingPlanDesc'),\n this.i18nService.t('changeBillingPlan'), this.i18nService.t('contactSupport'), this.i18nService.t('close'));\n if (contactSupport) {\n this.platformUtilsService.launchUri('https://github.com/dani-garcia/vaultwarden');\n }\n }\n\n closeChangePlan(changed: boolean) {\n this.showChangePlan = false;\n }\n\n downloadLicense() {\n this.showDownloadLicense = !this.showDownloadLicense;\n }\n\n closeDownloadLicense() {\n this.showDownloadLicense = false;\n }\n\n updateLicense() {\n if (this.loading) {\n return;\n }\n this.showUpdateLicense = true;\n }\n\n closeUpdateLicense(updated: boolean) {\n this.showUpdateLicense = false;\n if (updated) {\n this.load();\n this.messagingService.send('updatedOrgLicense');\n }\n }\n\n adjustSeats(add: boolean) {\n this.adjustSeatsAdd = add;\n this.showAdjustSeats = true;\n }\n\n closeSeats(load: boolean) {\n this.showAdjustSeats = false;\n if (load) {\n this.load();\n }\n }\n\n adjustStorage(add: boolean) {\n this.adjustStorageAdd = add;\n this.showAdjustStorage = true;\n }\n\n closeStorage(load: boolean) {\n this.showAdjustStorage = false;\n if (load) {\n this.load();\n }\n }\n\n get isExpired() {\n return this.sub != null && this.sub.expiration != null &&\n new Date(this.sub.expiration) < new Date();\n }\n\n get subscriptionMarkedForCancel() {\n return this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate;\n }\n\n get subscription() {\n return this.sub != null ? this.sub.subscription : null;\n }\n\n get nextInvoice() {\n return this.sub != null ? this.sub.upcomingInvoice : null;\n }\n\n get storagePercentage() {\n return this.sub != null && this.sub.maxStorageGb ?\n +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2) : 0;\n }\n\n get storageProgressWidth() {\n return this.storagePercentage < 5 ? 5 : 0;\n }\n\n get billingInterval() {\n const monthly = !this.sub.plan.isAnnual;\n return monthly ? 'month' : 'year';\n }\n\n get storageGbPrice() {\n return this.sub.plan.additionalStoragePricePerGb;\n }\n\n get seatPrice() {\n return this.sub.plan.seatPrice;\n }\n\n get canAdjustSeats() {\n return this.sub.plan.hasAdditionalSeatsOption;\n }\n\n get canDownloadLicense() {\n return (this.sub.planType !== PlanType.Free && this.subscription == null) ||\n (this.subscription != null && !this.subscription.cancelled);\n }\n}\n","
\n

\n {{'subscription' | i18n}}\n \n \n {{'loading' | i18n}}\n \n

\n
\n\n \n {{'loading' | i18n}}\n\n\n \n {{'subscriptionCanceled' | i18n}}\n \n

{{'subscriptionPendingCanceled' | i18n}}

\n \n
\n
\n
{{'billingPlan' | i18n}}
\n
{{sub.plan.name}}
\n
{{'expiration' | i18n}}
\n
\n {{sub.expiration | date:'mediumDate'}}\n \n \n {{'licenseIsExpired' | i18n}}\n \n
\n
{{'neverExpires' | i18n}}
\n
\n
\n
\n
\n
{{'billingPlan' | i18n}}
\n
{{sub.plan.name}}
\n \n
{{'status' | i18n}}
\n
\n {{subscription.status || '-'}}\n {{'pendingCancellation' | i18n}}\n
\n
{{'nextCharge' | i18n}}
\n
{{nextInvoice ? ((nextInvoice.date | date: 'mediumDate') + ', ' + (nextInvoice.amount | currency:'$'))\n : '-'}}\n
\n
\n
\n
\n
\n {{'details' | i18n}}\n \n \n \n \n \n \n \n
\n {{i.name}} {{i.quantity > 1 ? '×' + i.quantity : ''}} @ {{i.amount | currency:'$'}}\n \n {{(i.quantity * i.amount) | currency:'$'}} /{{i.interval | i18n}}\n
\n
\n
\n \n
\n \n \n {{'manageSubscription' | i18n}}\n \n
\n
\n
\n \n

{{'updateLicense' | i18n}}

\n \n
\n
\n
\n \n
\n \n \n \n
\n \n
\n \n
\n

{{'userSeats' | i18n}}

\n

{{'subscriptionUserSeats' | i18n : sub.seats}}

\n \n
\n
\n \n \n
\n \n
\n
\n

{{'storage' | i18n}}

\n

{{'subscriptionStorage' | i18n : sub.maxStorageGb || 0 : sub.storageName || '0 MB'}}

\n
\n
\n {{(storagePercentage / 100) | percent}}
\n
\n \n
\n
\n \n \n
\n \n
\n
\n
\n
\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { PlanType } from 'jslib/enums/planType';\nimport { ProductType } from 'jslib/enums/productType';\n\n@Component({\n selector: 'app-change-plan',\n templateUrl: 'change-plan.component.html',\n})\nexport class ChangePlanComponent {\n @Input() organizationId: string;\n @Output() onChanged = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n formPromise: Promise;\n defaultUpgradePlan: PlanType = PlanType.FamiliesAnnually;\n defaultUpgradeProduct: ProductType = ProductType.Families;\n\n constructor(private apiService: ApiService, private platformUtilsService: PlatformUtilsService) { }\n\n async submit() {\n try {\n this.platformUtilsService.eventTrack('Changed Plan');\n this.onChanged.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","
\n
\n \n

{{'changeBillingPlan' | i18n}}

\n

{{'changeBillingPlanUpgrade' | i18n}}

\n \n \n
\n
\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-download-license',\n templateUrl: 'download-license.component.html',\n})\nexport class DownloadLicenseComponent {\n @Input() organizationId: string;\n @Output() onDownloaded = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n installationId: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private platformUtilsService: PlatformUtilsService) { }\n\n async submit() {\n if (this.installationId == null || this.installationId === '') {\n return;\n }\n\n try {\n this.formPromise = this.apiService.getOrganizationLicense(this.organizationId, this.installationId);\n const license = await this.formPromise;\n const licenseString = JSON.stringify(license, null, 2);\n this.platformUtilsService.saveFile(window, licenseString, null, 'bitwarden_organization_license.json');\n this.platformUtilsService.eventTrack('Downloaded License');\n this.onDownloaded.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","
\n
\n \n

{{'downloadLicense' | i18n}}

\n
\n
\n
\n \n \n \n \n
\n \n
\n
\n \n \n
\n
\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { SeatRequest } from 'jslib/models/request/seatRequest';\n\nimport { PaymentComponent } from '../../settings/payment.component';\n\n@Component({\n selector: 'app-adjust-seats',\n templateUrl: 'adjust-seats.component.html',\n})\nexport class AdjustSeatsComponent {\n @Input() seatPrice = 0;\n @Input() add = true;\n @Input() organizationId: string;\n @Input() interval = 'year';\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent;\n\n seatAdjustment = 0;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private router: Router, private activatedRoute: ActivatedRoute) { }\n\n async submit() {\n try {\n const request = new SeatRequest();\n request.seatAdjustment = this.seatAdjustment;\n if (!this.add) {\n request.seatAdjustment *= -1;\n }\n\n let paymentFailed = false;\n const action = async () => {\n const result = await this.apiService.postOrganizationSeat(this.organizationId, request);\n if (result != null && result.paymentIntentClientSecret != null) {\n try {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n } catch {\n paymentFailed = true;\n }\n }\n };\n this.formPromise = action();\n await this.formPromise;\n this.analytics.eventTrack.next({ action: this.add ? 'Added Seats' : 'Removed Seats' });\n this.onAdjusted.emit(this.seatAdjustment);\n if (paymentFailed) {\n this.toasterService.popAsync({\n body: this.i18nService.t('couldNotChargeCardPayInvoice'),\n type: 'warning',\n timeout: 10000,\n });\n this.router.navigate(['../billing'], { relativeTo: this.activatedRoute });\n } else {\n this.toasterService.popAsync('success', null,\n this.i18nService.t('adjustedSeats', request.seatAdjustment.toString()));\n }\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n get adjustedSeatTotal(): number {\n return this.seatAdjustment * this.seatPrice;\n }\n}\n","
\n
\n \n

{{(add ? 'addSeats' : 'removeSeats') | i18n}}

\n
\n
\n \n \n
\n
\n
\n {{'total' | i18n}}: {{seatAdjustment || 0}} × {{seatPrice | currency:'$'}} = {{adjustedSeatTotal\n | currency:'$'}} /{{interval | i18n}}\n
\n \n \n \n {{(add ? 'seatsAddNote' : 'seatsRemoveNote') | i18n}}\n \n
\n
\n\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\n@Component({\n selector: 'app-org-settings',\n templateUrl: 'settings.component.html',\n})\nexport class SettingsComponent {\n access2fa = false;\n selfHosted: boolean;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private platformUtilsService: PlatformUtilsService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.selfHosted = await this.platformUtilsService.isSelfHost();\n const organization = await this.userService.getOrganization(params.organizationId);\n this.access2fa = organization.use2fa;\n });\n }\n}\n","\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\nimport { TwoFactorDuoComponent } from '../../settings/two-factor-duo.component';\nimport { TwoFactorSetupComponent as BaseTwoFactorSetupComponent } from '../../settings/two-factor-setup.component';\n\n@Component({\n selector: 'app-two-factor-setup',\n templateUrl: '../../settings/two-factor-setup.component.html',\n})\nexport class TwoFactorSetupComponent extends BaseTwoFactorSetupComponent {\n constructor(apiService: ApiService, userService: UserService,\n componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService,\n policyService: PolicyService, private route: ActivatedRoute) {\n super(apiService, userService, componentFactoryResolver, messagingService, policyService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await super.ngOnInit();\n });\n }\n\n manage(type: TwoFactorProviderType) {\n switch (type) {\n case TwoFactorProviderType.OrganizationDuo:\n const duoComp = this.openModal(this.duoModalRef, TwoFactorDuoComponent);\n duoComp.type = TwoFactorProviderType.OrganizationDuo;\n duoComp.organizationId = this.organizationId;\n duoComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.OrganizationDuo);\n });\n break;\n default:\n break;\n }\n }\n\n protected getTwoFactorProviders() {\n return this.apiService.getTwoFactorOrganizationProviders(this.organizationId);\n }\n\n protected filterProvider(type: TwoFactorProviderType) {\n return type !== TwoFactorProviderType.OrganizationDuo;\n }\n}\n","import {\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { UpdateTwoFactorAuthenticatorRequest } from 'jslib/models/request/updateTwoFactorAuthenticatorRequest';\nimport { TwoFactorAuthenticatorResponse } from 'jslib/models/response/twoFactorAuthenticatorResponse';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-authenticator',\n templateUrl: 'two-factor-authenticator.component.html',\n})\nexport class TwoFactorAuthenticatorComponent extends TwoFactorBaseComponent implements OnInit, OnDestroy {\n type = TwoFactorProviderType.Authenticator;\n key: string;\n token: string;\n formPromise: Promise;\n\n private qrScript: HTMLScriptElement;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n analytics: Angulartics2, toasterService: ToasterService,\n private userService: UserService, platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, analytics, toasterService, platformUtilsService);\n this.qrScript = window.document.createElement('script');\n this.qrScript.src = 'scripts/qrious.min.js';\n this.qrScript.async = true;\n }\n\n ngOnInit() {\n window.document.body.appendChild(this.qrScript);\n }\n\n ngOnDestroy() {\n window.document.body.removeChild(this.qrScript);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n return this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n protected enable() {\n const request = new UpdateTwoFactorAuthenticatorRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.token = this.token;\n request.key = this.key;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorAuthenticator(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private async processResponse(response: TwoFactorAuthenticatorResponse) {\n this.token = null;\n this.enabled = response.enabled;\n this.key = response.key;\n const email = await this.userService.getEmail();\n window.setTimeout(() => {\n const qr = new (window as any).QRious({\n element: document.getElementById('qr'),\n value: 'otpauth://totp/Bitwarden:' + encodeURIComponent(email) +\n '?secret=' + encodeURIComponent(this.key) + '&issuer=Bitwarden',\n size: 160,\n });\n }, 100);\n }\n}\n","
\n
\n
\n
\n

\n {{'twoStepLogin' | i18n}}\n {{'authenticatorAppTitle' | i18n}}\n

\n \n
\n \n \n
\n
\n \n \"\"\n

{{'twoStepAuthenticatorDesc' | i18n}}

\n

\n 1. {{'twoStepAuthenticatorDownloadApp' | i18n}}\n

\n
\n \n \n

{{'twoStepLoginProviderEnabled' | i18n}}

\n {{'twoStepAuthenticatorReaddDesc' | i18n}}\n
\n \"\"\n

{{'twoStepAuthenticatorNeedApp' | i18n}}

\n
\n \n

{{'twoStepAuthenticatorAppsRecommended' | i18n}}

\n

\n 2. {{'twoStepAuthenticatorScanCode' | i18n}}\n

\n
\n

\n
\n {{key}}\n

\n \n \n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { TwoFactorEmailRequest } from 'jslib/models/request/twoFactorEmailRequest';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\nimport { UpdateTwoFactorEmailRequest } from 'jslib/models/request/updateTwoFactorEmailRequest';\nimport { TwoFactorEmailResponse } from 'jslib/models/response/twoFactorEmailResponse';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-email',\n templateUrl: 'two-factor-email.component.html',\n})\nexport class TwoFactorEmailComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Email;\n email: string;\n token: string;\n sentEmail: string;\n formPromise: Promise;\n emailPromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n analytics: Angulartics2, toasterService: ToasterService,\n platformUtilsService: PlatformUtilsService, private userService: UserService) {\n super(apiService, i18nService, analytics, toasterService, platformUtilsService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n return this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n async sendEmail() {\n try {\n const request = new TwoFactorEmailRequest(this.email, this.masterPasswordHash);\n this.emailPromise = this.apiService.postTwoFactorEmailSetup(request);\n await this.emailPromise;\n this.sentEmail = this.email;\n } catch { }\n }\n\n protected enable() {\n const request = new UpdateTwoFactorEmailRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.email = this.email;\n request.token = this.token;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorEmail(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private async processResponse(response: TwoFactorEmailResponse) {\n this.token = null;\n this.email = response.email;\n this.enabled = response.enabled;\n if (!this.enabled && (this.email == null || this.email === '')) {\n this.email = await this.userService.getEmail();\n }\n }\n}\n","
\n
\n
\n
\n

\n {{'twoStepLogin' | i18n}}\n {{'emailTitle' | i18n}}\n

\n \n
\n \n \n
\n
\n \n \n {{'twoStepLoginProviderEnabled' | i18n}}\n \n {{'email' | i18n}}: {{email}}\n \n \n

\n {{'twoFactorEmailDesc' | i18n}}\n \"\"\n

\n
\n \n \n
\n
\n \n \n {{'verificationCodeEmailSent' | i18n : sentEmail}}\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n","import { Component } from '@angular/core';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { TwoFactorRecoverResponse } from 'jslib/models/response/twoFactorRescoverResponse';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\n@Component({\n selector: 'app-two-factor-recovery',\n templateUrl: 'two-factor-recovery.component.html',\n})\nexport class TwoFactorRecoveryComponent {\n type = -1;\n code: string;\n authed: boolean;\n twoFactorProviderType = TwoFactorProviderType;\n\n constructor(private i18nService: I18nService) { }\n\n auth(authResponse: any) {\n this.authed = true;\n this.processResponse(authResponse.response);\n }\n\n print() {\n const w = window.open();\n w.document.write('
' +\n '

' + this.i18nService.t('twoFactorRecoveryYourCode') + ':

' +\n '' +\n this.code + '
' +\n '

' + new Date() + '

');\n w.onafterprint = () => w.close();\n w.print();\n }\n\n private formatString(s: string) {\n if (s == null) {\n return null;\n }\n return s.replace(/(.{4})/g, '$1 ').trim().toUpperCase();\n }\n\n private processResponse(response: TwoFactorRecoverResponse) {\n this.code = this.formatString(response.code);\n }\n}\n","
\n
\n
\n
\n

\n {{'twoStepLogin' | i18n}}\n {{'recoveryCodeTitle' | i18n}}\n

\n \n
\n \n \n \n
\n \n

{{'twoFactorRecoveryYourCode' | i18n}}:

\n {{code}}\n
\n \n {{'twoFactorRecoveryNoCode' | i18n}}\n \n
\n
\n \n \n
\n
\n
\n
\n
\n","import {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\nimport { PasswordVerificationRequest } from 'jslib/models/request/passwordVerificationRequest';\nimport { UpdateTwoFactorU2fDeleteRequest } from 'jslib/models/request/updateTwoFactorU2fDeleteRequest';\nimport { UpdateTwoFactorU2fRequest } from 'jslib/models/request/updateTwoFactorU2fRequest';\nimport {\n ChallengeResponse,\n TwoFactorU2fResponse,\n} from 'jslib/models/response/twoFactorU2fResponse';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-u2f',\n templateUrl: 'two-factor-u2f.component.html',\n})\nexport class TwoFactorU2fComponent extends TwoFactorBaseComponent implements OnInit, OnDestroy {\n type = TwoFactorProviderType.U2f;\n name: string;\n keys: any[];\n keyIdAvailable: number = null;\n keysConfiguredCount = 0;\n u2fError: boolean;\n u2fListening: boolean;\n u2fResponse: string;\n challengePromise: Promise;\n formPromise: Promise;\n\n private u2fScript: HTMLScriptElement;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n analytics: Angulartics2, toasterService: ToasterService,\n platformUtilsService: PlatformUtilsService, private ngZone: NgZone) {\n super(apiService, i18nService, analytics, toasterService, platformUtilsService);\n this.u2fScript = window.document.createElement('script');\n this.u2fScript.src = 'scripts/u2f.js';\n this.u2fScript.async = true;\n }\n\n ngOnInit() {\n window.document.body.appendChild(this.u2fScript);\n }\n\n ngOnDestroy() {\n window.document.body.removeChild(this.u2fScript);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.u2fResponse == null || this.keyIdAvailable == null) {\n // Should never happen.\n return Promise.reject();\n }\n const request = new UpdateTwoFactorU2fRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.deviceResponse = this.u2fResponse;\n request.id = this.keyIdAvailable;\n request.name = this.name;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorU2f(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n disable() {\n return super.disable(this.formPromise);\n }\n\n async remove(key: any) {\n if (this.keysConfiguredCount <= 1 || key.removePromise != null) {\n return;\n }\n const name = key.name != null ? key.name : this.i18nService.t('u2fkeyX', key.id);\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeU2fConfirmation'), name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n const request = new UpdateTwoFactorU2fDeleteRequest();\n request.id = key.id;\n request.masterPasswordHash = this.masterPasswordHash;\n try {\n key.removePromise = this.apiService.deleteTwoFactorU2f(request);\n const response = await key.removePromise;\n key.removePromise = null;\n await this.processResponse(response);\n } catch { }\n }\n\n async readKey() {\n if (this.keyIdAvailable == null) {\n return;\n }\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n try {\n this.challengePromise = this.apiService.getTwoFactorU2fChallenge(request);\n const challenge = await this.challengePromise;\n this.readDevice(challenge);\n } catch { }\n }\n\n private readDevice(u2fChallenge: ChallengeResponse) {\n // tslint:disable-next-line\n console.log('listening for key...');\n this.resetU2f(true);\n (window as any).u2f.register(u2fChallenge.appId, [{\n version: u2fChallenge.version,\n challenge: u2fChallenge.challenge,\n attestation: 'direct',\n }], [], (data: any) => {\n this.ngZone.run(() => {\n this.u2fListening = false;\n if (data.errorCode) {\n this.u2fError = true;\n // tslint:disable-next-line\n console.log('error: ' + data.errorCode);\n return;\n }\n this.u2fResponse = JSON.stringify(data);\n });\n }, 15);\n }\n\n private resetU2f(listening = false) {\n this.u2fResponse = null;\n this.u2fError = false;\n this.u2fListening = listening;\n }\n\n private processResponse(response: TwoFactorU2fResponse) {\n this.resetU2f();\n this.keys = [];\n this.keyIdAvailable = null;\n this.name = null;\n this.keysConfiguredCount = 0;\n for (let i = 1; i <= 5; i++) {\n if (response.keys != null) {\n const key = response.keys.filter(k => k.id === i);\n if (key.length > 0) {\n this.keysConfiguredCount++;\n this.keys.push({\n id: i, name: key[0].name,\n configured: true,\n compromised: key[0].compromised,\n removePromise: null,\n });\n continue;\n }\n }\n this.keys.push({ id: i, name: null, configured: false, compromised: false, removePromise: null });\n if (this.keyIdAvailable == null) {\n this.keyIdAvailable = i;\n }\n }\n this.enabled = response.enabled;\n }\n}\n","
\n
\n
\n
\n

\n {{'twoStepLogin' | i18n}}\n FIDO U2F\n

\n \n
\n \n \n
\n
\n \n {{'twoStepLoginProviderEnabled' | i18n}}\n \n \n

{{'twoFactorU2fWarning' | i18n}}

\n
    \n
  • {{'twoFactorU2fSupportWeb' | i18n}}
  • \n
\n
\n \"\"\n
    \n
  • \n \n {{'u2fkeyX' | i18n : i + 1}}\n {{k.name}}\n \n \n \n {{'keyCompromised' | i18n}}\n \n \n \n {{'enabled' | i18n}}\n \n \n 1 && k.configured\">\n \n -\n {{'remove' | i18n}}\n \n
  • \n
\n
\n

{{'twoFactorU2fAdd' | i18n}}:

\n
    \n
  1. {{'twoFactorU2fGiveName' | i18n}}
  2. \n
  3. {{'twoFactorU2fPlugInReadKey' | i18n}}
  4. \n
  5. {{'twoFactorU2fTouchButton' | i18n}}
  6. \n
  7. {{'twoFactorU2fSaveForm' | i18n}}
  8. \n
\n
\n
\n \n \n
\n
\n \n \n \n \n \n \n \n {{'twoFactorU2fWaiting' | i18n}}...\n \n \n \n {{'twoFactorU2fClickSave' | i18n}}\n \n \n \n {{'twoFactorU2fProblemReadingTryAgain' | i18n}}\n \n \n
\n
\n \n \n \n
\n
\n
\n
\n
\n","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { UpdateTwoFactorYubioOtpRequest } from 'jslib/models/request/updateTwoFactorYubioOtpRequest';\nimport { TwoFactorYubiKeyResponse } from 'jslib/models/response/twoFactorYubiKeyResponse';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-yubikey',\n templateUrl: 'two-factor-yubikey.component.html',\n})\nexport class TwoFactorYubiKeyComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Yubikey;\n keys: any[];\n nfc = false;\n\n formPromise: Promise;\n disablePromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n analytics: Angulartics2, toasterService: ToasterService,\n platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, analytics, toasterService, platformUtilsService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n submit() {\n const request = new UpdateTwoFactorYubioOtpRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.key1 = this.keys != null && this.keys.length > 0 ? this.keys[0].key : null;\n request.key2 = this.keys != null && this.keys.length > 1 ? this.keys[1].key : null;\n request.key3 = this.keys != null && this.keys.length > 2 ? this.keys[2].key : null;\n request.key4 = this.keys != null && this.keys.length > 3 ? this.keys[3].key : null;\n request.key5 = this.keys != null && this.keys.length > 4 ? this.keys[4].key : null;\n request.nfc = this.nfc;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorYubiKey(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n this.toasterService.popAsync('success', null, this.i18nService.t('yubikeysUpdated'));\n });\n }\n\n disable() {\n return super.disable(this.disablePromise);\n }\n\n remove(key: any) {\n key.existingKey = null;\n key.key = null;\n }\n\n private processResponse(response: TwoFactorYubiKeyResponse) {\n this.enabled = response.enabled;\n this.keys = [\n { key: response.key1, existingKey: this.padRight(response.key1) },\n { key: response.key2, existingKey: this.padRight(response.key2) },\n { key: response.key3, existingKey: this.padRight(response.key3) },\n { key: response.key4, existingKey: this.padRight(response.key4) },\n { key: response.key5, existingKey: this.padRight(response.key5) },\n ];\n this.nfc = response.nfc || !response.enabled;\n }\n\n private padRight(str: string, character = '•', size = 44) {\n if (str == null || character == null || str.length >= size) {\n return str;\n }\n const max = (size - str.length) / character.length;\n for (let i = 0; i < max; i++) {\n str += character;\n }\n return str;\n }\n}\n","
\n
\n
\n
\n

\n {{'twoStepLogin' | i18n}}\n YubiKey\n

\n \n
\n \n \n
\n
\n \n {{'twoStepLoginProviderEnabled' | i18n}}\n \n \n

{{'twoFactorYubikeyWarning' | i18n}}

\n
    \n
  • {{'twoFactorYubikeySupportUsb' | i18n}}
  • \n
  • {{'twoFactorYubikeySupportMobile' | i18n}}
  • \n
\n
\n \"\"\n

{{'twoFactorYubikeyAdd' | i18n}}:

\n
    \n
  1. {{'twoFactorYubikeyPlugIn' | i18n}}
  2. \n
  3. {{'twoFactorYubikeySelectKey' | i18n}}
  4. \n
  5. {{'twoFactorYubikeyTouchButton' | i18n}}
  6. \n
  7. {{'twoFactorYubikeySaveForm' | i18n}}
  8. \n
\n
\n
\n
\n \n \n
\n {{k.existingKey}}\n \n
\n
\n
\n {{'nfcSupport' | i18n}}\n
\n \n \n
\n {{'twoFactorYubikeySupportsNfcDesc' | i18n}}\n
\n
\n \n \n \n
\n
\n
\n
\n
\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { EventService } from 'jslib/abstractions/event.service';\nimport { ExportService } from 'jslib/abstractions/export.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { ExportComponent as BaseExportComponent } from '../../tools/export.component';\n\nimport { EventType } from 'jslib/enums/eventType';\n\n@Component({\n selector: 'app-org-export',\n templateUrl: '../../tools/export.component.html',\n})\nexport class ExportComponent extends BaseExportComponent {\n constructor(cryptoService: CryptoService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, exportService: ExportService,\n eventService: EventService, private route: ActivatedRoute) {\n super(cryptoService, i18nService, platformUtilsService, exportService, eventService);\n }\n\n ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n });\n }\n\n getExportData() {\n return this.exportService.getOrganizationExport(this.organizationId, this.format);\n }\n\n getFileName() {\n return super.getFileName('org');\n }\n\n async collectEvent(): Promise {\n // TODO\n // await this.eventService.collect(EventType.Organization_ClientExportedVault);\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { AuditService } from 'jslib/abstractions/audit.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport {\n ExposedPasswordsReportComponent as BaseExposedPasswordsReportComponent,\n} from '../../tools/exposed-passwords-report.component';\n\nimport { Cipher } from 'jslib/models/domain/cipher';\nimport { CipherView } from 'jslib/models/view/cipherView';\n\n@Component({\n selector: 'app-exposed-passwords-report',\n templateUrl: '../../tools/exposed-passwords-report.component.html',\n})\nexport class ExposedPasswordsReportComponent extends BaseExposedPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(cipherService: CipherService, auditService: AuditService,\n componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService,\n userService: UserService, private route: ActivatedRoute) {\n super(cipherService, auditService, componentFactoryResolver, messagingService, userService);\n }\n\n ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some(x => x.id === c.id);\n }\n}\n","import { PasswordHistoryResponse } from '../response/passwordHistoryResponse';\n\nexport class PasswordHistoryData {\n password: string;\n lastUsedDate: string;\n\n constructor(response?: PasswordHistoryResponse) {\n if (response == null) {\n return;\n }\n\n this.password = response.password;\n this.lastUsedDate = response.lastUsedDate;\n }\n}\n","import { View } from './view';\n\nimport { Attachment } from '../domain/attachment';\nimport { SymmetricCryptoKey } from '../domain/symmetricCryptoKey';\n\nexport class AttachmentView implements View {\n id: string = null;\n url: string = null;\n size: string = null;\n sizeName: string = null;\n fileName: string = null;\n key: SymmetricCryptoKey = null;\n\n constructor(a?: Attachment) {\n if (!a) {\n return;\n }\n\n this.id = a.id;\n this.url = a.url;\n this.size = a.size;\n this.sizeName = a.sizeName;\n }\n\n get fileSize(): number {\n try {\n if (this.size != null) {\n return parseInt(this.size, null);\n }\n } catch { }\n return 0;\n }\n}\n","import { PasswordHistoryData } from '../data/passwordHistoryData';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\n\nimport { PasswordHistoryView } from '../view/passwordHistoryView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Password extends Domain {\n password: CipherString;\n lastUsedDate: Date;\n\n constructor(obj?: PasswordHistoryData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n password: null,\n }, alreadyEncrypted);\n this.lastUsedDate = new Date(obj.lastUsedDate);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new PasswordHistoryView(this), {\n password: null,\n }, orgId, encKey);\n }\n\n toPasswordHistoryData(): PasswordHistoryData {\n const ph = new PasswordHistoryData();\n ph.lastUsedDate = this.lastUsedDate.toISOString();\n this.buildDataModel(this, ph, {\n password: null,\n });\n return ph;\n }\n}\n","import { CipherRequest } from './cipherRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherCreateRequest {\n cipher: CipherRequest;\n collectionIds: string[];\n\n constructor(cipher: Cipher) {\n this.cipher = new CipherRequest(cipher);\n this.collectionIds = cipher.collectionIds;\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class CardApi extends BaseResponse {\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.cardholderName = this.getResponseProperty('CardholderName');\n this.brand = this.getResponseProperty('Brand');\n this.number = this.getResponseProperty('Number');\n this.expMonth = this.getResponseProperty('ExpMonth');\n this.expYear = this.getResponseProperty('ExpYear');\n this.code = this.getResponseProperty('Code');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { FieldType } from '../../enums/fieldType';\n\nexport class FieldApi extends BaseResponse {\n name: string;\n value: string;\n type: FieldType;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n this.value = this.getResponseProperty('Value');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class IdentityApi extends BaseResponse {\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.title = this.getResponseProperty('Title');\n this.firstName = this.getResponseProperty('FirstName');\n this.middleName = this.getResponseProperty('MiddleName');\n this.lastName = this.getResponseProperty('LastName');\n this.address1 = this.getResponseProperty('Address1');\n this.address2 = this.getResponseProperty('Address2');\n this.address3 = this.getResponseProperty('Address3');\n this.city = this.getResponseProperty('City');\n this.state = this.getResponseProperty('State');\n this.postalCode = this.getResponseProperty('PostalCode');\n this.country = this.getResponseProperty('Country');\n this.company = this.getResponseProperty('Company');\n this.email = this.getResponseProperty('Email');\n this.phone = this.getResponseProperty('Phone');\n this.ssn = this.getResponseProperty('SSN');\n this.username = this.getResponseProperty('Username');\n this.passportNumber = this.getResponseProperty('PassportNumber');\n this.licenseNumber = this.getResponseProperty('LicenseNumber');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { LoginUriApi } from './loginUriApi';\n\nexport class LoginApi extends BaseResponse {\n uris: LoginUriApi[];\n username: string;\n password: string;\n passwordRevisionDate: string;\n totp: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.username = this.getResponseProperty('Username');\n this.password = this.getResponseProperty('Password');\n this.passwordRevisionDate = this.getResponseProperty('PasswordRevisionDate');\n this.totp = this.getResponseProperty('Totp');\n\n const uris = this.getResponseProperty('Uris');\n if (uris != null) {\n this.uris = uris.map((u: any) => new LoginUriApi(u));\n }\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { UriMatchType } from '../../enums/uriMatchType';\n\nexport class LoginUriApi extends BaseResponse {\n uri: string;\n match: UriMatchType = null;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.uri = this.getResponseProperty('Uri');\n const match = this.getResponseProperty('Match');\n this.match = match != null ? match : null;\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { SecureNoteType } from '../../enums/secureNoteType';\n\nexport class SecureNoteApi extends BaseResponse {\n type: SecureNoteType;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.type = this.getResponseProperty('Type');\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n} from '@angular/core';\n\n@Directive({\n selector: '[appFallbackSrc]',\n})\nexport class FallbackSrcDirective {\n @Input('appFallbackSrc') appFallbackSrc: string;\n\n constructor(private el: ElementRef) {\n }\n\n @HostListener('error') onError() {\n this.el.nativeElement.src = this.appFallbackSrc;\n }\n}\n","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { ImportService } from 'jslib/abstractions/import.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { ImportComponent as BaseImportComponent } from '../../tools/import.component';\n\n@Component({\n selector: 'app-org-import',\n templateUrl: '../../tools/import.component.html',\n})\nexport class ImportComponent extends BaseImportComponent {\n organizationName: string;\n\n constructor(i18nService: I18nService, analytics: Angulartics2,\n toasterService: ToasterService, importService: ImportService,\n router: Router, private route: ActivatedRoute,\n platformUtilsService: PlatformUtilsService,\n private userService: UserService) {\n super(i18nService, analytics, toasterService, importService, router, platformUtilsService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n this.successNavigate = ['organizations', this.organizationId, 'vault'];\n super.ngOnInit();\n });\n const organization = await this.userService.getOrganization(this.organizationId);\n this.organizationName = organization.name;\n }\n\n async submit() {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('importWarning', this.organizationName),\n this.i18nService.t('warning'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n super.submit();\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport {\n InactiveTwoFactorReportComponent as BaseInactiveTwoFactorReportComponent,\n} from '../../tools/inactive-two-factor-report.component';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\n@Component({\n selector: 'app-inactive-two-factor-report',\n templateUrl: '../../tools/inactive-two-factor-report.component.html',\n})\nexport class InactiveTwoFactorReportComponent extends BaseInactiveTwoFactorReportComponent {\n constructor(cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService,\n private route: ActivatedRoute) {\n super(cipherService, componentFactoryResolver, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { Cipher } from 'jslib/models/domain/cipher';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport {\n ReusedPasswordsReportComponent as BaseReusedPasswordsReportComponent,\n} from '../../tools/reused-passwords-report.component';\n\n@Component({\n selector: 'app-reused-passwords-report',\n templateUrl: '../../tools/reused-passwords-report.component.html',\n})\nexport class ReusedPasswordsReportComponent extends BaseReusedPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService,\n private route: ActivatedRoute) {\n super(cipherService, componentFactoryResolver, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some(x => x.id === c.id);\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { Organization } from 'jslib/models/domain/organization';\n\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\n@Component({\n selector: 'app-org-tools',\n templateUrl: 'tools.component.html',\n})\nexport class ToolsComponent {\n organization: Organization;\n accessReports = false;\n loading = true;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private messagingService: MessagingService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now\n // since all paid plans include useTotp\n this.accessReports = this.organization.useTotp;\n this.loading = false;\n });\n }\n\n upgradeOrganization() {\n this.messagingService.send('upgradeOrganization', { organizationId: this.organization.id });\n }\n}\n","\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport {\n UnsecuredWebsitesReportComponent as BaseUnsecuredWebsitesReportComponent,\n} from '../../tools/unsecured-websites-report.component';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\n@Component({\n selector: 'app-unsecured-websites-report',\n templateUrl: '../../tools/unsecured-websites-report.component.html',\n})\nexport class UnsecuredWebsitesReportComponent extends BaseUnsecuredWebsitesReportComponent {\n constructor(cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService,\n private route: ActivatedRoute) {\n super(cipherService, componentFactoryResolver, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { Cipher } from 'jslib/models/domain/cipher';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport {\n WeakPasswordsReportComponent as BaseWeakPasswordsReportComponent,\n} from '../../tools/weak-passwords-report.component';\n\n@Component({\n selector: 'app-weak-passwords-report',\n templateUrl: '../../tools/weak-passwords-report.component.html',\n})\nexport class WeakPasswordsReportComponent extends BaseWeakPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(cipherService: CipherService, passwordGenerationService: PasswordGenerationService,\n componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService,\n userService: UserService, private route: ActivatedRoute) {\n super(cipherService, passwordGenerationService, componentFactoryResolver, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some(x => x.id === c.id);\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\n\nimport { Organization } from 'jslib/models/domain/organization';\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { CipherType } from 'jslib/enums/cipherType';\n\nimport { ModalComponent } from '../../modal.component';\n\nimport { EntityEventsComponent } from '../manage/entity-events.component';\nimport { AddEditComponent } from './add-edit.component';\nimport { AttachmentsComponent } from './attachments.component';\nimport { CiphersComponent } from './ciphers.component';\nimport { CollectionsComponent } from './collections.component';\nimport { GroupingsComponent } from './groupings.component';\n\nconst BroadcasterSubscriptionId = 'OrgVaultComponent';\n\n@Component({\n selector: 'app-org-vault',\n templateUrl: 'vault.component.html',\n})\nexport class VaultComponent implements OnInit, OnDestroy {\n @ViewChild(GroupingsComponent, { static: true }) groupingsComponent: GroupingsComponent;\n @ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent;\n @ViewChild('attachments', { read: ViewContainerRef, static: true }) attachmentsModalRef: ViewContainerRef;\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('collections', { read: ViewContainerRef, static: true }) collectionsModalRef: ViewContainerRef;\n @ViewChild('eventsTemplate', { read: ViewContainerRef, static: true }) eventsModalRef: ViewContainerRef;\n\n organization: Organization;\n collectionId: string = null;\n type: CipherType = null;\n deleted: boolean = false;\n\n modal: ModalComponent = null;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private router: Router, private changeDetectorRef: ChangeDetectorRef,\n private syncService: SyncService, private i18nService: I18nService,\n private componentFactoryResolver: ComponentFactoryResolver, private messagingService: MessagingService,\n private broadcasterService: BroadcasterService, private ngZone: NgZone) { }\n\n ngOnInit() {\n const queryParams = this.route.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.groupingsComponent.organization = this.organization;\n this.ciphersComponent.organization = this.organization;\n\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n this.ciphersComponent.searchText = this.groupingsComponent.searchText = qParams.search;\n if (!this.organization.canManageAllCollections) {\n await this.syncService.fullSync(false);\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'syncCompleted':\n if (message.successfully) {\n await Promise.all([\n this.groupingsComponent.load(),\n this.ciphersComponent.refresh(),\n ]);\n this.changeDetectorRef.detectChanges();\n }\n break;\n }\n });\n });\n }\n await this.groupingsComponent.load();\n\n if (qParams == null) {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n } else {\n if (qParams.deleted) {\n this.groupingsComponent.selectedTrash = true;\n await this.filterDeleted(true);\n } else if (qParams.type) {\n const t = parseInt(qParams.type, null);\n this.groupingsComponent.selectedType = t;\n await this.filterCipherType(t, true);\n } else if (qParams.collectionId) {\n this.groupingsComponent.selectedCollectionId = qParams.collectionId;\n await this.filterCollection(qParams.collectionId, true);\n } else {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n }\n }\n\n if (qParams.viewEvents != null) {\n const cipher = this.ciphersComponent.ciphers.filter(c => c.id === qParams.viewEvents);\n if (cipher.length > 0) {\n this.viewEvents(cipher[0]);\n }\n }\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n\n if (queryParams != null) {\n queryParams.unsubscribe();\n }\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async clearGroupingFilters() {\n this.ciphersComponent.showAddNew = true;\n this.ciphersComponent.deleted = false;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchVault');\n await this.ciphersComponent.applyFilter();\n this.clearFilters();\n this.go();\n }\n\n async filterCipherType(type: CipherType, load = false) {\n this.ciphersComponent.showAddNew = true;\n this.ciphersComponent.deleted = false;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchType');\n const filter = (c: CipherView) => c.type === type;\n if (load) {\n await this.ciphersComponent.reload(filter);\n } else {\n await this.ciphersComponent.applyFilter(filter);\n }\n this.clearFilters();\n this.type = type;\n this.go();\n }\n\n async filterCollection(collectionId: string, load = false) {\n this.ciphersComponent.showAddNew = true;\n this.ciphersComponent.deleted = false;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchCollection');\n const filter = (c: CipherView) => {\n if (collectionId === 'unassigned') {\n return c.collectionIds == null || c.collectionIds.length === 0;\n } else {\n return c.collectionIds != null && c.collectionIds.indexOf(collectionId) > -1;\n }\n };\n if (load) {\n await this.ciphersComponent.reload(filter);\n } else {\n await this.ciphersComponent.applyFilter(filter);\n }\n this.clearFilters();\n this.collectionId = collectionId;\n this.go();\n }\n\n async filterDeleted(load: boolean = false) {\n this.ciphersComponent.showAddNew = false;\n this.ciphersComponent.deleted = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchTrash');\n if (load) {\n await this.ciphersComponent.reload(null, true);\n } else {\n await this.ciphersComponent.applyFilter(null);\n }\n this.clearFilters();\n this.deleted = true;\n this.go();\n }\n\n filterSearchText(searchText: string) {\n this.ciphersComponent.searchText = searchText;\n this.ciphersComponent.search(200);\n }\n\n editCipherAttachments(cipher: CipherView) {\n if (this.organization.maxStorageGb == null || this.organization.maxStorageGb === 0) {\n this.messagingService.send('upgradeOrganization', { organizationId: cipher.organizationId });\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.attachmentsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(AttachmentsComponent, this.attachmentsModalRef);\n\n childComponent.organization = this.organization;\n childComponent.cipherId = cipher.id;\n let madeAttachmentChanges = false;\n childComponent.onUploadedAttachment.subscribe(() => madeAttachmentChanges = true);\n childComponent.onDeletedAttachment.subscribe(() => madeAttachmentChanges = true);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n if (madeAttachmentChanges) {\n await this.ciphersComponent.refresh();\n }\n madeAttachmentChanges = false;\n });\n }\n\n editCipherCollections(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.collectionsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(CollectionsComponent, this.collectionsModalRef);\n\n if (this.organization.canManageAllCollections) {\n childComponent.collectionIds = cipher.collectionIds;\n childComponent.collections = this.groupingsComponent.collections.filter(c => !c.readOnly);\n }\n childComponent.organization = this.organization;\n childComponent.cipherId = cipher.id;\n childComponent.onSavedCollections.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n addCipher() {\n const component = this.editCipher(null);\n component.organizationId = this.organization.id;\n component.type = this.type;\n if (this.organization.canManageAllCollections) {\n component.collections = this.groupingsComponent.collections.filter(c => !c.readOnly);\n }\n if (this.collectionId != null) {\n component.collectionIds = [this.collectionId];\n }\n }\n\n editCipher(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.cipherAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(AddEditComponent, this.cipherAddEditModalRef);\n\n childComponent.organization = this.organization;\n childComponent.cipherId = cipher == null ? null : cipher.id;\n childComponent.onSavedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n childComponent.onDeletedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n childComponent.onRestoredCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n\n return childComponent;\n }\n\n cloneCipher(cipher: CipherView) {\n const component = this.editCipher(cipher);\n component.cloneMode = true;\n component.organizationId = this.organization.id;\n if (this.organization.canManageAllCollections) {\n component.collections = this.groupingsComponent.collections.filter(c => !c.readOnly);\n }\n // Regardless of Admin state, the collection Ids need to passed manually as they are not assigned value\n // in the add-edit componenet\n component.collectionIds = cipher.collectionIds;\n }\n\n async viewEvents(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.eventsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EntityEventsComponent, this.eventsModalRef);\n\n childComponent.name = cipher.name;\n childComponent.organizationId = this.organization.id;\n childComponent.entityId = cipher.id;\n childComponent.showUser = true;\n childComponent.entity = 'cipher';\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n private clearFilters() {\n this.collectionId = null;\n this.type = null;\n this.deleted = false;\n }\n\n private go(queryParams: any = null) {\n if (queryParams == null) {\n queryParams = {\n type: this.type,\n collectionId: this.collectionId,\n deleted: this.deleted ? true : null,\n };\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n replaceUrl: true,\n });\n }\n}\n","
\n
\n
\n \n \n
\n
\n
\n

\n {{'vault' | i18n}}\n \n \n \n {{'loading' | i18n}}\n \n \n

\n
\n \n \n \n
\n
\n \n \n
\n
\n
\n\n\n\n\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherData } from 'jslib/models/data/cipherData';\nimport { Cipher } from 'jslib/models/domain/cipher';\nimport { Organization } from 'jslib/models/domain/organization';\n\nimport { AttachmentView } from 'jslib/models/view/attachmentView';\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from '../../vault/attachments.component';\n\n@Component({\n selector: 'app-org-vault-attachments',\n templateUrl: '../../vault/attachments.component.html',\n})\nexport class AttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = false;\n organization: Organization;\n\n constructor(cipherService: CipherService, i18nService: I18nService,\n cryptoService: CryptoService, userService: UserService,\n platformUtilsService: PlatformUtilsService, private apiService: ApiService) {\n super(cipherService, i18nService, cryptoService, userService, platformUtilsService);\n }\n\n protected async reupload(attachment: AttachmentView) {\n if (this.organization.canManageAllCollections && this.showFixOldAttachments(attachment)) {\n await super.reuploadCipherAttachment(attachment, true);\n }\n }\n\n protected async loadCipher() {\n if (!this.organization.canManageAllCollections) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n return new Cipher(new CipherData(response));\n }\n\n protected saveCipherAttachment(file: File) {\n return this.cipherService.saveAttachmentWithServer(this.cipherDomain, file, this.organization.canManageAllCollections);\n }\n\n protected deleteCipherAttachment(attachmentId: string) {\n if (!this.organization.canManageAllCollections) {\n return super.deleteCipherAttachment(attachmentId);\n }\n return this.apiService.deleteCipherAttachmentAdmin(this.cipherId, attachmentId);\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return attachment.key == null && this.organization.canManageAllCollections;\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { CipherService } from '../../abstractions/cipher.service';\nimport { CryptoService } from '../../abstractions/crypto.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { UserService } from '../../abstractions/user.service';\n\nimport { Cipher } from '../../models/domain/cipher';\n\nimport { AttachmentView } from '../../models/view/attachmentView';\nimport { CipherView } from '../../models/view/cipherView';\n\n@Directive()\nexport class AttachmentsComponent implements OnInit {\n @Input() cipherId: string;\n @Output() onUploadedAttachment = new EventEmitter();\n @Output() onDeletedAttachment = new EventEmitter();\n @Output() onReuploadedAttachment = new EventEmitter();\n\n cipher: CipherView;\n cipherDomain: Cipher;\n hasUpdatedKey: boolean;\n canAccessAttachments: boolean;\n formPromise: Promise;\n deletePromises: { [id: string]: Promise; } = {};\n reuploadPromises: { [id: string]: Promise; } = {};\n\n constructor(protected cipherService: CipherService, protected i18nService: I18nService,\n protected cryptoService: CryptoService, protected userService: UserService,\n protected platformUtilsService: PlatformUtilsService, protected win: Window) { }\n\n async ngOnInit() {\n await this.init();\n }\n\n async submit() {\n if (!this.hasUpdatedKey) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('updateKey'));\n return;\n }\n\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n if (files[0].size > 104857600) { // 100 MB\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('maxFileSize'));\n return;\n }\n\n try {\n this.formPromise = this.saveCipherAttachment(files[0]);\n this.cipherDomain = await this.formPromise;\n this.cipher = await this.cipherDomain.decrypt();\n this.platformUtilsService.eventTrack('Added Attachment');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('attachmentSaved'));\n this.onUploadedAttachment.emit();\n } catch { }\n\n // reset file input\n // ref: https://stackoverflow.com/a/20552042\n fileEl.type = '';\n fileEl.type = 'file';\n fileEl.value = '';\n }\n\n async delete(attachment: AttachmentView) {\n if (this.deletePromises[attachment.id] != null) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteAttachmentConfirmation'), this.i18nService.t('deleteAttachment'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n this.deletePromises[attachment.id] = this.deleteCipherAttachment(attachment.id);\n await this.deletePromises[attachment.id];\n this.platformUtilsService.eventTrack('Deleted Attachment');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedAttachment'));\n const i = this.cipher.attachments.indexOf(attachment);\n if (i > -1) {\n this.cipher.attachments.splice(i, 1);\n }\n } catch { }\n\n this.deletePromises[attachment.id] = null;\n this.onDeletedAttachment.emit();\n }\n\n async download(attachment: AttachmentView) {\n const a = (attachment as any);\n if (a.downloading) {\n return;\n }\n\n if (!this.canAccessAttachments) {\n this.platformUtilsService.showToast('error', this.i18nService.t('premiumRequired'),\n this.i18nService.t('premiumRequiredDesc'));\n return;\n }\n\n a.downloading = true;\n const response = await fetch(new Request(attachment.url, { cache: 'no-store' }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n a.downloading = false;\n return;\n }\n\n try {\n const buf = await response.arrayBuffer();\n const key = attachment.key != null ? attachment.key :\n await this.cryptoService.getOrgKey(this.cipher.organizationId);\n const decBuf = await this.cryptoService.decryptFromBytes(buf, key);\n this.platformUtilsService.saveFile(this.win, decBuf, null, attachment.fileName);\n } catch (e) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n\n a.downloading = false;\n }\n\n protected async init() {\n this.cipherDomain = await this.loadCipher();\n this.cipher = await this.cipherDomain.decrypt();\n\n this.hasUpdatedKey = await this.cryptoService.hasEncKey();\n const canAccessPremium = await this.userService.canAccessPremium();\n this.canAccessAttachments = canAccessPremium || this.cipher.organizationId != null;\n\n if (!this.canAccessAttachments) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('premiumRequiredDesc'), this.i18nService.t('premiumRequired'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'));\n if (confirmed) {\n this.platformUtilsService.launchUri('https://vault.bitwarden.com/#/?premium=purchase');\n }\n } else if (!this.hasUpdatedKey) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('updateKey'), this.i18nService.t('featureUnavailable'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'), 'warning');\n if (confirmed) {\n this.platformUtilsService.launchUri('https://help.bitwarden.com/article/update-encryption-key/');\n }\n }\n }\n\n protected async reuploadCipherAttachment(attachment: AttachmentView, admin: boolean) {\n const a = (attachment as any);\n if (attachment.key != null || a.downloading || this.reuploadPromises[attachment.id] != null) {\n return;\n }\n\n try {\n this.reuploadPromises[attachment.id] = Promise.resolve().then(async () => {\n // 1. Download\n a.downloading = true;\n const response = await fetch(new Request(attachment.url, { cache: 'no-store' }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n a.downloading = false;\n return;\n }\n\n try {\n // 2. Resave\n const buf = await response.arrayBuffer();\n const key = attachment.key != null ? attachment.key :\n await this.cryptoService.getOrgKey(this.cipher.organizationId);\n const decBuf = await this.cryptoService.decryptFromBytes(buf, key);\n this.cipherDomain = await this.cipherService.saveAttachmentRawWithServer(\n this.cipherDomain, attachment.fileName, decBuf, admin);\n this.cipher = await this.cipherDomain.decrypt();\n\n // 3. Delete old\n this.deletePromises[attachment.id] = this.deleteCipherAttachment(attachment.id);\n await this.deletePromises[attachment.id];\n const foundAttachment = this.cipher.attachments.filter(a2 => a2.id === attachment.id);\n if (foundAttachment.length > 0) {\n const i = this.cipher.attachments.indexOf(foundAttachment[0]);\n if (i > -1) {\n this.cipher.attachments.splice(i, 1);\n }\n }\n\n this.platformUtilsService.eventTrack('Reuploaded Attachment');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('attachmentSaved'));\n this.onReuploadedAttachment.emit();\n } catch (e) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n\n a.downloading = false;\n });\n await this.reuploadPromises[attachment.id];\n } catch { }\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected saveCipherAttachment(file: File) {\n return this.cipherService.saveAttachmentWithServer(this.cipherDomain, file);\n }\n\n protected deleteCipherAttachment(attachmentId: string) {\n return this.cipherService.deleteAttachmentWithServer(this.cipher.id, attachmentId);\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { CipherData } from 'jslib/models/data/cipherData';\nimport { Cipher } from 'jslib/models/domain/cipher';\nimport { Organization } from 'jslib/models/domain/organization';\nimport { CipherCollectionsRequest } from 'jslib/models/request/cipherCollectionsRequest';\n\nimport { CollectionsComponent as BaseCollectionsComponent } from '../../vault/collections.component';\n\n@Component({\n selector: 'app-org-vault-collections',\n templateUrl: '../../vault/collections.component.html',\n})\nexport class CollectionsComponent extends BaseCollectionsComponent {\n organization: Organization;\n\n constructor(collectionService: CollectionService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, cipherService: CipherService,\n private apiService: ApiService) {\n super(collectionService, platformUtilsService, i18nService, cipherService);\n this.allowSelectNone = true;\n }\n\n protected async loadCipher() {\n if (!this.organization.canManageAllCollections) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n return new Cipher(new CipherData(response));\n }\n\n protected loadCipherCollections() {\n if (!this.organization.canManageAllCollections) {\n return super.loadCipherCollections();\n }\n return this.collectionIds;\n }\n\n protected loadCollections() {\n if (!this.organization.canManageAllCollections) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected saveCollections() {\n if (this.organization.canManageAllCollections) {\n const request = new CipherCollectionsRequest(this.cipherDomain.collectionIds);\n return this.apiService.putCipherCollectionsAdmin(this.cipherId, request);\n } else {\n return super.saveCollections();\n }\n }\n}\n","export class CipherCollectionsRequest {\n collectionIds: string[];\n\n constructor(collectionIds: string[]) {\n this.collectionIds = collectionIds == null ? [] : collectionIds;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { Organization } from 'jslib/models/domain/organization';\nimport { CipherBulkDeleteRequest } from 'jslib/models/request/cipherBulkDeleteRequest';\n\n@Component({\n selector: 'app-vault-bulk-delete',\n templateUrl: 'bulk-delete.component.html',\n})\nexport class BulkDeleteComponent {\n @Input() cipherIds: string[] = [];\n @Input() permanent: boolean = false;\n @Input() organization: Organization;\n @Output() onDeleted = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(private analytics: Angulartics2, private cipherService: CipherService,\n private toasterService: ToasterService, private i18nService: I18nService,\n private apiService: ApiService) { }\n\n async submit() {\n if (!this.organization || !this.organization.canManageAllCollections) {\n await this.deleteCiphers();\n } else {\n await this.deleteCiphersAdmin();\n }\n\n await this.formPromise;\n\n this.onDeleted.emit();\n this.analytics.eventTrack.next({ action: 'Bulk Deleted Items' });\n this.toasterService.popAsync('success', null, this.i18nService.t(this.permanent ? 'permanentlyDeletedItems'\n : 'deletedItems'));\n }\n\n private async deleteCiphers() {\n if (this.permanent) {\n this.formPromise = await this.cipherService.deleteManyWithServer(this.cipherIds);\n } else {\n this.formPromise = await this.cipherService.softDeleteManyWithServer(this.cipherIds);\n }\n }\n\n private async deleteCiphersAdmin() {\n const deleteRequest = new CipherBulkDeleteRequest(this.cipherIds, this.organization.id);\n if (this.permanent) {\n this.formPromise = await this.apiService.deleteManyCiphersAdmin(deleteRequest);\n } else {\n this.formPromise = await this.apiService.putDeleteManyCiphersAdmin(deleteRequest);\n }\n }\n}\n","
\n
\n
\n
\n

\n {{(permanent ? 'permanentlyDeleteSelected' : 'deleteSelected') | i18n}}\n

\n \n
\n
\n {{(permanent ? 'permanentlyDeleteSelectedItemsDesc' : 'deleteSelectedItemsDesc') | i18n: cipherIds.length}}\n
\n
\n \n \n
\n
\n
\n
\n","export class CipherBulkDeleteRequest {\n ids: string[];\n organizationId: string;\n\n constructor(ids: string[], organizationId?: string) {\n this.ids = ids == null ? [] : ids;\n this.organizationId = organizationId;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { FolderView } from 'jslib/models/view/folderView';\n\n@Component({\n selector: 'app-vault-bulk-move',\n templateUrl: 'bulk-move.component.html',\n})\nexport class BulkMoveComponent implements OnInit {\n @Input() cipherIds: string[] = [];\n @Output() onMoved = new EventEmitter();\n\n folderId: string = null;\n folders: FolderView[] = [];\n formPromise: Promise;\n\n constructor(private analytics: Angulartics2, private cipherService: CipherService,\n private toasterService: ToasterService, private i18nService: I18nService,\n private folderService: FolderService) { }\n\n async ngOnInit() {\n this.folders = await this.folderService.getAllDecrypted();\n this.folderId = this.folders[0].id;\n }\n\n async submit() {\n this.formPromise = this.cipherService.moveManyWithServer(this.cipherIds, this.folderId);\n await this.formPromise;\n this.onMoved.emit();\n this.analytics.eventTrack.next({ action: 'Bulk Moved Items' });\n this.toasterService.popAsync('success', null, this.i18nService.t('movedItems'));\n }\n}\n","
\n
\n
\n
\n

\n {{'moveSelected' | i18n}}\n

\n \n
\n
\n

{{'moveSelectedItemsDesc' | i18n: cipherIds.length}}

\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\n@Component({\n selector: 'app-vault-bulk-restore',\n templateUrl: 'bulk-restore.component.html',\n})\nexport class BulkRestoreComponent {\n @Input() cipherIds: string[] = [];\n @Output() onRestored = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(private analytics: Angulartics2, private cipherService: CipherService,\n private toasterService: ToasterService, private i18nService: I18nService) { }\n\n async submit() {\n this.formPromise = this.cipherService.restoreManyWithServer(this.cipherIds);\n await this.formPromise;\n this.onRestored.emit();\n this.analytics.eventTrack.next({ action: 'Bulk Restored Items' });\n this.toasterService.popAsync('success', null, this.i18nService.t('restoredItems'));\n }\n}\n","
\n
\n
\n
\n

\n {{'restoreSelected' | i18n}}\n

\n \n
\n
\n {{'restoreSelectedItemsDesc' | i18n: cipherIds.length}}\n
\n
\n \n \n
\n
\n
\n
\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherView } from 'jslib/models/view';\nimport { CollectionView } from 'jslib/models/view/collectionView';\n\nimport { Organization } from 'jslib/models/domain/organization';\n\n@Component({\n selector: 'app-vault-bulk-share',\n templateUrl: 'bulk-share.component.html',\n})\nexport class BulkShareComponent implements OnInit {\n @Input() ciphers: CipherView[] = [];\n @Input() organizationId: string;\n @Output() onShared = new EventEmitter();\n\n nonShareableCount = 0;\n collections: CollectionView[] = [];\n organizations: Organization[] = [];\n shareableCiphers: CipherView[] = [];\n formPromise: Promise;\n\n private writeableCollections: CollectionView[] = [];\n\n constructor(private analytics: Angulartics2, private cipherService: CipherService,\n private toasterService: ToasterService, private i18nService: I18nService,\n private collectionService: CollectionService, private userService: UserService) { }\n\n async ngOnInit() {\n this.shareableCiphers = this.ciphers.filter(c => !c.hasOldAttachments && c.organizationId == null);\n this.nonShareableCount = this.ciphers.length - this.shareableCiphers.length;\n const allCollections = await this.collectionService.getAllDecrypted();\n this.writeableCollections = allCollections.filter(c => !c.readOnly);\n this.organizations = await this.userService.getAllOrganizations();\n if (this.organizationId == null && this.organizations.length > 0) {\n this.organizationId = this.organizations[0].id;\n }\n this.filterCollections();\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n filterCollections() {\n this.selectAll(false);\n if (this.organizationId == null || this.writeableCollections.length === 0) {\n this.collections = [];\n } else {\n this.collections = this.writeableCollections.filter(c => c.organizationId === this.organizationId);\n }\n }\n\n async submit() {\n const checkedCollectionIds = this.collections.filter(c => (c as any).checked).map(c => c.id);\n try {\n this.formPromise = this.cipherService.shareManyWithServer(this.shareableCiphers, this.organizationId,\n checkedCollectionIds);\n await this.formPromise;\n this.onShared.emit();\n this.analytics.eventTrack.next({ action: 'Bulk Shared Items' });\n this.toasterService.popAsync('success', null, this.i18nService.t('sharedItems'));\n } catch { }\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n const collections = select ? this.collections : this.writeableCollections;\n collections.forEach(c => this.check(c, select));\n }\n\n get canSave() {\n if (this.shareableCiphers != null && this.shareableCiphers.length > 0 && this.collections != null) {\n for (let i = 0; i < this.collections.length; i++) {\n if ((this.collections[i] as any).checked) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","
\n
\n
\n
\n

\n {{'shareSelected' | i18n}}\n

\n \n
\n
\n

{{'shareManyDesc' | i18n}}

\n

{{'shareSelectedItemsCountDesc' | i18n: this.ciphers.length : shareableCiphers.length : nonShareableCount}}\n

\n
\n \n \n
\n
\n

{{'collections' | i18n}}

\n
\n \n \n
\n
\n
\n {{'noCollectionsInList' | i18n}}\n
\n \n \n \n \n \n \n \n
\n \n \n {{c.name}}\n
\n
\n
\n \n \n
\n
\n
\n
\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { CryptoFunctionService } from 'jslib/abstractions/cryptoFunction.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { Utils } from 'jslib/misc/utils';\n\nimport { SendAccess } from 'jslib/models/domain/sendAccess';\nimport { SymmetricCryptoKey } from 'jslib/models/domain/symmetricCryptoKey';\n\nimport { SendAccessView } from 'jslib/models/view/sendAccessView';\n\nimport { SendType } from 'jslib/enums/sendType';\nimport { SendAccessRequest } from 'jslib/models/request/sendAccessRequest';\nimport { ErrorResponse } from 'jslib/models/response/errorResponse';\n\nimport { SendAccessResponse } from 'jslib/models/response/sendAccessResponse';\n\n@Component({\n selector: 'app-send-access',\n templateUrl: 'access.component.html',\n})\nexport class AccessComponent implements OnInit {\n send: SendAccessView;\n sendType = SendType;\n downloading = false;\n loading = true;\n passwordRequired = false;\n formPromise: Promise;\n password: string;\n showText = false;\n unavailable = false;\n error = false;\n\n private id: string;\n private key: string;\n private decKey: SymmetricCryptoKey;\n private accessRequest: SendAccessRequest;\n\n constructor(private i18nService: I18nService, private cryptoFunctionService: CryptoFunctionService,\n private apiService: ApiService, private platformUtilsService: PlatformUtilsService,\n private route: ActivatedRoute, private cryptoService: CryptoService) {\n }\n\n get sendText() {\n if (this.send == null || this.send.text == null) {\n return null;\n }\n return this.showText ? this.send.text.text : this.send.text.maskedText;\n }\n\n get expirationDate() {\n if (this.send == null || this.send.expirationDate == null) {\n return null;\n }\n return this.send.expirationDate;\n }\n\n get creatorIdentifier() {\n if (this.send == null || this.send.creatorIdentifier == null) {\n return null;\n }\n return this.send.creatorIdentifier;\n }\n\n ngOnInit() {\n this.route.params.subscribe(async params => {\n this.id = params.sendId;\n this.key = params.key;\n if (this.key == null || this.id == null) {\n return;\n }\n await this.load();\n });\n }\n\n async download() {\n if (this.send == null || this.decKey == null) {\n return;\n }\n\n if (this.downloading) {\n return;\n }\n\n\n const downloadData = await this.apiService.getSendFileDownloadData(this.send, this.accessRequest);\n\n if (Utils.isNullOrWhitespace(downloadData.url)) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('missingSendFile'));\n return;\n }\n\n this.downloading = true;\n const response = await fetch(new Request(downloadData.url, { cache: 'no-store' }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n this.downloading = false;\n return;\n }\n\n try {\n const buf = await response.arrayBuffer();\n const decBuf = await this.cryptoService.decryptFromBytes(buf, this.decKey);\n this.platformUtilsService.saveFile(window, decBuf, null, this.send.file.fileName);\n } catch (e) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n\n this.downloading = false;\n }\n\n copyText() {\n this.platformUtilsService.copyToClipboard(this.send.text.text);\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t('valueCopied', this.i18nService.t('sendTypeText')));\n }\n\n toggleText() {\n this.showText = !this.showText;\n }\n\n async load() {\n this.unavailable = false;\n this.error = false;\n const keyArray = Utils.fromUrlB64ToArray(this.key);\n this.accessRequest = new SendAccessRequest();\n if (this.password != null) {\n const passwordHash = await this.cryptoFunctionService.pbkdf2(this.password, keyArray, 'sha256', 100000);\n this.accessRequest.password = Utils.fromBufferToB64(passwordHash);\n }\n try {\n let sendResponse: SendAccessResponse = null;\n if (this.loading) {\n sendResponse = await this.apiService.postSendAccess(this.id, this.accessRequest);\n } else {\n this.formPromise = this.apiService.postSendAccess(this.id, this.accessRequest);\n sendResponse = await this.formPromise;\n }\n this.passwordRequired = false;\n const sendAccess = new SendAccess(sendResponse);\n this.decKey = await this.cryptoService.makeSendKey(keyArray);\n this.send = await sendAccess.decrypt(this.decKey);\n this.showText = this.send.text != null ? !this.send.text.hidden : true;\n } catch (e) {\n if (e instanceof ErrorResponse) {\n if (e.statusCode === 401) {\n this.passwordRequired = true;\n } else if (e.statusCode === 404) {\n this.unavailable = true;\n } else {\n this.error = true;\n }\n }\n }\n this.loading = false;\n }\n}\n","
\n
\n
\n

Bitwarden Send

\n
\n
\n

{{'sendCreatorIdentifier' | i18n: creatorIdentifier }}

\n
\n
\n
\n
\n \n {{'loading' | i18n}}\n
\n
\n

{{'sendProtectedPassword' | i18n}}

\n

{{'sendProtectedPasswordDontKnow' | i18n}}

\n
\n \n \n
\n
\n \n
\n
\n
\n {{'sendAccessUnavailable' | i18n}}\n
\n
\n {{'unexpectedError' | i18n}}\n
\n
\n

{{send.name}}

\n
\n \n \n {{'sendHiddenByDefault' | i18n}}\n
\n \n
\n \n \n
\n \n \n

{{send.file.fileName}}

\n \n \n
\n

Expires:\n {{expirationDate | date: 'medium'}}

\n
\n
\n
\n
\n

{{'sendAccessTaglineProductDesc' | i18n}}
\n {{'sendAccessTaglineLearnMore' | i18n}} Bitwarden Send.\n

\n
\n
\n
\n","import {\n Component,\n ComponentFactoryResolver,\n NgZone,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { SendView } from 'jslib/models/view/sendView';\n\nimport { SendComponent as BaseSendComponent } from 'jslib/angular/components/send/send.component';\n\nimport { AddEditComponent } from './add-edit.component';\n\nimport { ModalComponent } from '../modal.component';\n\nimport { EnvironmentService } from 'jslib/abstractions/environment.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { SearchService } from 'jslib/abstractions/search.service';\nimport { SendService } from 'jslib/abstractions/send.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\n\nconst BroadcasterSubscriptionId = 'SendComponent';\n\n@Component({\n selector: 'app-send',\n templateUrl: 'send.component.html',\n})\nexport class SendComponent extends BaseSendComponent {\n @ViewChild('sendAddEdit', { read: ViewContainerRef, static: true }) sendAddEditModalRef: ViewContainerRef;\n\n modal: ModalComponent = null;\n\n constructor(sendService: SendService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, environmentService: EnvironmentService,\n ngZone: NgZone, searchService: SearchService, policyService: PolicyService, userService: UserService,\n private componentFactoryResolver: ComponentFactoryResolver, private broadcasterService: BroadcasterService) {\n super(sendService, i18nService, platformUtilsService, environmentService, ngZone, searchService,\n policyService, userService);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n await this.load();\n\n // Broadcaster subscription - load if sync completes in the background\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'syncCompleted':\n if (message.successfully) {\n await this.load();\n }\n break;\n }\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n addSend() {\n if (this.disableSend) {\n return;\n }\n\n const component = this.editSend(null);\n component.type = this.type;\n }\n\n editSend(send: SendView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.sendAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n AddEditComponent, this.sendAddEditModalRef);\n\n childComponent.sendId = send == null ? null : send.id;\n childComponent.onSavedSend.subscribe(async (s: SendView) => {\n this.modal.close();\n await this.load();\n });\n childComponent.onDeletedSend.subscribe(async (s: SendView) => {\n this.modal.close();\n await this.load();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n\n return childComponent;\n }\n}\n","
\n
\n
\n {{'sendDisabled' | i18n}}\n
\n
\n {{'sendDisabledWarning' | i18n}}\n
\n
\n
\n
\n
\n
\n {{'filters' | i18n}}\n
\n
\n \n \n

{{'types' | i18n}}

\n \n
\n
\n
\n
\n
\n

\n {{'send' | i18n}}\n \n \n \n {{'loading' | i18n}}\n \n \n

\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n
\n
\n \n \n
\n
\n {{s.name}}\n \n \n {{'disabled' | i18n}}\n \n \n \n {{'password' | i18n}}\n \n \n \n {{'maxAccessCountReached' | i18n}}\n \n \n \n {{'expired' | i18n}}\n \n \n \n {{'pendingDeletion' | i18n}}\n \n
\n {{s.deletionDate | date:'medium'}}\n
\n \n
\n
\n \n \n {{'loading' | i18n}}\n \n \n

{{'noSendsInList' | i18n}}

\n \n
\n
\n
\n
\n
\n\n","import { DatePipe } from '@angular/common';\n\nimport { Component } from '@angular/core';\n\nimport { EnvironmentService } from 'jslib/abstractions/environment.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { SendService } from 'jslib/abstractions/send.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { AddEditComponent as BaseAddEditComponent } from 'jslib/angular/components/send/add-edit.component';\n\n@Component({\n selector: 'app-send-add-edit',\n templateUrl: 'add-edit.component.html',\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n constructor(i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n environmentService: EnvironmentService, datePipe: DatePipe,\n sendService: SendService, userService: UserService,\n messagingService: MessagingService, policyService: PolicyService) {\n super(i18nService, platformUtilsService, environmentService, datePipe, sendService, userService,\n messagingService, policyService);\n }\n\n copyLinkToClipboard(link: string) {\n // Copy function on web depends on the modal being open or not. Since this event occurs during a transition\n // of the modal closing we need to add a small delay to make sure state of the DOM is consistent.\n window.setTimeout(() => super.copyLinkToClipboard(link), 500);\n }\n}\n","
\n
\n
\n
\n

{{title}}

\n \n
\n
\n \n {{'sendDisabledWarning' | i18n}}\n \n
\n
\n \n \n {{'sendNameDesc' | i18n}}\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n \n \n
\n \n \n {{'sendTextDesc' | i18n}}\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n {{'file' | i18n}}\n {{send.file.fileName}} ({{send.file.sizeName}})\n
\n
\n \n \n {{'sendFileDesc' | i18n}} {{'maxFileSize' |\n i18n}}\n
\n
\n
\n

{{'share' | i18n}}

\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n

{{'options' | i18n}}

\n \n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n \n \n \n
\n
\n
\n \n \n \n \n \n
\n
\n \n \n
\n
{{'deletionDateDesc' | i18n}}
\n
\n
\n
\n \n \n {{'clear' | i18n}}\n \n
\n \n \n \n \n
\n \n \n \n
\n
\n
\n \n \n \n \n \n
\n
\n \n \n
\n
{{'expirationDateDesc' | i18n}}
\n
\n
\n
\n
\n \n \n
{{'maxAccessCountDesc' | i18n}}
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n
\n \n
\n
\n
{{'sendPasswordDesc' | i18n}}
\n
\n
\n
\n \n \n
{{'sendNotesDesc' | i18n}}
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n \n
\n \n
\n
\n
\n
\n
\n","import { SendType } from '../../enums/sendType';\nimport { Utils } from '../../misc/utils';\n\nimport { Send } from '../domain/send';\nimport { SymmetricCryptoKey } from '../domain/symmetricCryptoKey';\n\nimport { SendFileView } from './sendFileView';\nimport { SendTextView } from './sendTextView';\nimport { View } from './view';\n\nexport class SendView implements View {\n id: string = null;\n accessId: string = null;\n name: string = null;\n notes: string = null;\n key: ArrayBuffer;\n cryptoKey: SymmetricCryptoKey;\n type: SendType = null;\n text = new SendTextView();\n file = new SendFileView();\n maxAccessCount?: number = null;\n accessCount: number = 0;\n revisionDate: Date = null;\n deletionDate: Date = null;\n expirationDate: Date = null;\n password: string = null;\n disabled: boolean = false;\n\n constructor(s?: Send) {\n if (!s) {\n return;\n }\n\n this.id = s.id;\n this.accessId = s.accessId;\n this.type = s.type;\n this.maxAccessCount = s.maxAccessCount;\n this.accessCount = s.accessCount;\n this.revisionDate = s.revisionDate;\n this.deletionDate = s.deletionDate;\n this.expirationDate = s.expirationDate;\n this.disabled = s.disabled;\n this.password = s.password;\n }\n\n get urlB64Key(): string {\n return Utils.fromBufferToUrlB64(this.key);\n }\n\n get maxAccessCountReached(): boolean {\n if (this.maxAccessCount == null) {\n return false;\n }\n return this.accessCount >= this.maxAccessCount;\n }\n\n get expired(): boolean {\n if (this.expirationDate == null) {\n return false;\n }\n return this.expirationDate <= new Date();\n }\n\n get pendingDelete(): boolean {\n return this.deletionDate <= new Date();\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ModalComponent } from '../modal.component';\nimport { ApiKeyComponent } from './api-key.component';\nimport { DeauthorizeSessionsComponent } from './deauthorize-sessions.component';\nimport { DeleteAccountComponent } from './delete-account.component';\nimport { PurgeVaultComponent } from './purge-vault.component';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\n@Component({\n selector: 'app-account',\n templateUrl: 'account.component.html',\n})\nexport class AccountComponent {\n @ViewChild('deauthorizeSessionsTemplate', { read: ViewContainerRef, static: true }) deauthModalRef: ViewContainerRef;\n @ViewChild('purgeVaultTemplate', { read: ViewContainerRef, static: true }) purgeModalRef: ViewContainerRef;\n @ViewChild('deleteAccountTemplate', { read: ViewContainerRef, static: true }) deleteModalRef: ViewContainerRef;\n @ViewChild('viewUserApiKeyTemplate', { read: ViewContainerRef, static: true }) viewUserApiKeyModalRef: ViewContainerRef;\n @ViewChild('rotateUserApiKeyTemplate', { read: ViewContainerRef, static: true }) rotateUserApiKeyModalRef: ViewContainerRef;\n\n private modal: ModalComponent = null;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver, private apiService: ApiService,\n private userService: UserService) { }\n\n deauthorizeSessions() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.deauthModalRef.createComponent(factory).instance;\n this.modal.show(DeauthorizeSessionsComponent, this.deauthModalRef);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n purgeVault() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.purgeModalRef.createComponent(factory).instance;\n this.modal.show(PurgeVaultComponent, this.purgeModalRef);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n deleteAccount() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.deleteModalRef.createComponent(factory).instance;\n this.modal.show(DeleteAccountComponent, this.deleteModalRef);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n async viewUserApiKey() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.viewUserApiKeyModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(ApiKeyComponent, this.viewUserApiKeyModalRef);\n childComponent.keyType = 'user';\n childComponent.entityId = await this.userService.getUserId();\n childComponent.postKey = this.apiService.postUserApiKey.bind(this.apiService);\n childComponent.scope = 'api';\n childComponent.grantType = 'client_credentials';\n childComponent.apiKeyTitle = 'apiKey';\n childComponent.apiKeyWarning = 'userApiKeyWarning';\n childComponent.apiKeyDescription = 'userApiKeyDesc';\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n async rotateUserApiKey() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.rotateUserApiKeyModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(ApiKeyComponent, this.rotateUserApiKeyModalRef);\n childComponent.keyType = 'user';\n childComponent.isRotation = true;\n childComponent.entityId = await this.userService.getUserId();\n childComponent.postKey = this.apiService.postUserRotateApiKey.bind(this.apiService);\n childComponent.scope = 'api';\n childComponent.grantType = 'client_credentials';\n childComponent.apiKeyTitle = 'apiKey';\n childComponent.apiKeyWarning = 'userApiKeyWarning';\n childComponent.apiKeyDescription = 'apiKeyRotateDesc';\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n}\n","
\n

{{'myAccount' | i18n}}

\n
\n\n
\n

{{'changeEmail' | i18n}}

\n
\n\n
\n

{{'changeMasterPassword' | i18n}}

\n
\n\n
\n

{{'encKeySettings' | i18n}}

\n
\n\n
\n

{{'apiKey' | i18n}}

\n
\n

\n {{'userApiKeyDesc' | i18n}}\n

\n\n\n
\n

{{'dangerZone' | i18n}}

\n
\n
\n
\n

{{'dangerZoneDesc' | i18n}}

\n \n \n \n
\n
\n\n\n\n\n\n","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\n\nimport { PasswordVerificationRequest } from 'jslib/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-deauthorize-sessions',\n templateUrl: 'deauthorize-sessions.component.html',\n})\nexport class DeauthorizeSessionsComponent {\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private messagingService: MessagingService) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postSecurityStamp(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Deauthorized Sessions' });\n this.toasterService.popAsync('success', this.i18nService.t('sessionsDeauthorized'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch { }\n }\n}\n","
\n
\n
\n
\n

{{'deauthorizeSessions' | i18n}}

\n \n
\n
\n

{{'deauthorizeSessionsDesc' | i18n}}

\n {{'deauthorizeSessionsWarning' | i18n}}\n \n \n
\n
\n \n \n
\n
\n
\n
\n","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\n\nimport { PasswordVerificationRequest } from 'jslib/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-delete-account',\n templateUrl: 'delete-account.component.html',\n})\nexport class DeleteAccountComponent {\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private messagingService: MessagingService) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.deleteAccount(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Deleted Account' });\n this.toasterService.popAsync('success', this.i18nService.t('accountDeleted'),\n this.i18nService.t('accountDeletedDesc'));\n this.messagingService.send('logout');\n } catch { }\n }\n}\n","
\n
\n
\n
\n

{{'deleteAccount' | i18n}}

\n \n
\n
\n

{{'deleteAccountDesc' | i18n}}

\n {{'deleteAccountWarning' | i18n}}\n \n \n
\n
\n \n \n
\n
\n
\n
\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { UpdateProfileRequest } from 'jslib/models/request/updateProfileRequest';\n\nimport { ProfileResponse } from 'jslib/models/response/profileResponse';\n\n@Component({\n selector: 'app-profile',\n templateUrl: 'profile.component.html',\n})\nexport class ProfileComponent implements OnInit {\n loading = true;\n profile: ProfileResponse;\n fingerprint: string;\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private userService: UserService, private cryptoService: CryptoService) { }\n\n async ngOnInit() {\n this.profile = await this.apiService.getProfile();\n this.loading = false;\n const fingerprint = await this.cryptoService.getFingerprint(await this.userService.getUserId());\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join('-');\n }\n }\n\n async submit() {\n try {\n const request = new UpdateProfileRequest(this.profile.name, this.profile.masterPasswordHint);\n this.formPromise = this.apiService.putProfile(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Updated Profile' });\n this.toasterService.popAsync('success', null, this.i18nService.t('accountUpdated'));\n } catch { }\n }\n}\n","
\n \n {{'loading' | i18n}}\n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n

\n {{'yourAccountsFingerprint' | i18n}}:\n \n
\n {{fingerprint}}\n

\n
\n
\n \n
\n","import {\n Component,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { EmailRequest } from 'jslib/models/request/emailRequest';\nimport { EmailTokenRequest } from 'jslib/models/request/emailTokenRequest';\n\n@Component({\n selector: 'app-change-email',\n templateUrl: 'change-email.component.html',\n})\nexport class ChangeEmailComponent {\n masterPassword: string;\n newEmail: string;\n token: string;\n tokenSent = false;\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private messagingService: MessagingService,\n private userService: UserService) { }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.toasterService.popAsync('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n this.newEmail = this.newEmail.trim().toLowerCase();\n if (!this.tokenSent) {\n const request = new EmailTokenRequest();\n request.newEmail = this.newEmail;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postEmailToken(request);\n await this.formPromise;\n this.tokenSent = true;\n } catch { }\n } else {\n const request = new EmailRequest();\n request.token = this.token;\n request.newEmail = this.newEmail;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const kdf = await this.userService.getKdf();\n const kdfIterations = await this.userService.getKdfIterations();\n const newKey = await this.cryptoService.makeKey(this.masterPassword, this.newEmail, kdf, kdfIterations);\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, newKey);\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\n try {\n this.formPromise = this.apiService.postEmail(request);\n await this.formPromise;\n this.reset();\n this.analytics.eventTrack.next({ action: 'Changed Email' });\n this.toasterService.popAsync('success', this.i18nService.t('emailChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch { }\n }\n }\n\n reset() {\n this.token = this.newEmail = this.masterPassword = null;\n this.tokenSent = false;\n }\n}\n","
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n

{{'changeEmailDesc' | i18n : newEmail}}

\n {{'loggedOutWarning' | i18n}}\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class EmailTokenRequest extends PasswordVerificationRequest {\n newEmail: string;\n masterPasswordHash: string;\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport {\n ChangePasswordComponent as BaseChangePasswordComponent,\n} from 'jslib/angular/components/change-password.component';\n\nimport { EmergencyAccessStatusType } from 'jslib/enums/emergencyAccessStatusType';\nimport { Utils } from 'jslib/misc/utils';\n\nimport { CipherString } from 'jslib/models/domain/cipherString';\nimport { SymmetricCryptoKey } from 'jslib/models/domain/symmetricCryptoKey';\n\nimport { CipherWithIdRequest } from 'jslib/models/request/cipherWithIdRequest';\nimport { EmergencyAccessUpdateRequest } from 'jslib/models/request/emergencyAccessUpdateRequest';\nimport { FolderWithIdRequest } from 'jslib/models/request/folderWithIdRequest';\nimport { PasswordRequest } from 'jslib/models/request/passwordRequest';\nimport { UpdateKeyRequest } from 'jslib/models/request/updateKeyRequest';\n\n@Component({\n selector: 'app-change-password',\n templateUrl: 'change-password.component.html',\n})\nexport class ChangePasswordComponent extends BaseChangePasswordComponent {\n rotateEncKey = false;\n currentMasterPassword: string;\n\n constructor(i18nService: I18nService,\n cryptoService: CryptoService, messagingService: MessagingService,\n userService: UserService, passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService,\n private folderService: FolderService, private cipherService: CipherService,\n private syncService: SyncService, private apiService: ApiService ) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService);\n }\n\n async rotateEncKeyClicked() {\n if (this.rotateEncKey) {\n const ciphers = await this.cipherService.getAllDecrypted();\n let hasOldAttachments = false;\n if (ciphers != null) {\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId == null && ciphers[i].hasOldAttachments) {\n hasOldAttachments = true;\n break;\n }\n }\n }\n\n if (hasOldAttachments) {\n const learnMore = await this.platformUtilsService.showDialog(\n this.i18nService.t('oldAttachmentsNeedFixDesc'), null,\n this.i18nService.t('learnMore'), this.i18nService.t('close'), 'warning');\n if (learnMore) {\n this.platformUtilsService.launchUri(\n 'https://help.bitwarden.com/article/attachments/#fixing-old-attachments');\n }\n this.rotateEncKey = false;\n return;\n }\n\n const result = await this.platformUtilsService.showDialog(\n this.i18nService.t('updateEncryptionKeyWarning') + ' ' +\n this.i18nService.t('updateEncryptionKeyExportWarning') + ' ' +\n this.i18nService.t('rotateEncKeyConfirmation'), this.i18nService.t('rotateEncKeyTitle'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!result) {\n this.rotateEncKey = false;\n }\n }\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n await super.submit();\n }\n\n async setupSubmitActions() {\n if (this.currentMasterPassword == null || this.currentMasterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return false;\n }\n\n if (this.rotateEncKey) {\n await this.syncService.fullSync(true);\n }\n\n return super.setupSubmitActions();\n }\n\n async performSubmitActions(newMasterPasswordHash: string, newKey: SymmetricCryptoKey,\n newEncKey: [SymmetricCryptoKey, CipherString]) {\n const request = new PasswordRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.currentMasterPassword, null);\n request.newMasterPasswordHash = newMasterPasswordHash;\n request.key = newEncKey[1].encryptedString;\n\n try {\n if (this.rotateEncKey) {\n this.formPromise = this.apiService.postPassword(request).then(() => {\n return this.updateKey(newKey, request.newMasterPasswordHash);\n });\n } else {\n this.formPromise = this.apiService.postPassword(request);\n }\n\n await this.formPromise;\n\n this.platformUtilsService.showToast('success', this.i18nService.t('masterPasswordChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n }\n\n private async updateKey(key: SymmetricCryptoKey, masterPasswordHash: string) {\n const encKey = await this.cryptoService.makeEncKey(key);\n const privateKey = await this.cryptoService.getPrivateKey();\n let encPrivateKey: CipherString = null;\n if (privateKey != null) {\n encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]);\n }\n const request = new UpdateKeyRequest();\n request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHash = masterPasswordHash;\n\n const folders = await this.folderService.getAllDecrypted();\n for (let i = 0; i < folders.length; i++) {\n if (folders[i].id == null) {\n continue;\n }\n const folder = await this.folderService.encrypt(folders[i], encKey[0]);\n request.folders.push(new FolderWithIdRequest(folder));\n }\n\n const ciphers = await this.cipherService.getAllDecrypted();\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId != null) {\n continue;\n }\n\n const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]);\n request.ciphers.push(new CipherWithIdRequest(cipher));\n }\n\n await this.apiService.postAccountKey(request);\n\n await this.updateEmergencyAccesses(encKey[0]);\n }\n\n private async updateEmergencyAccesses(encKey: SymmetricCryptoKey) {\n const emergencyAccess = await this.apiService.getEmergencyAccessTrusted();\n const allowedStatuses = [\n EmergencyAccessStatusType.Confirmed,\n EmergencyAccessStatusType.RecoveryInitiated,\n EmergencyAccessStatusType.RecoveryApproved,\n ];\n\n const filteredAccesses = emergencyAccess.data.filter(d => allowedStatuses.includes(d.status));\n\n for (const details of filteredAccesses) {\n const publicKeyResponse = await this.apiService.getUserPublicKey(details.granteeId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n const updateRequest = new EmergencyAccessUpdateRequest();\n updateRequest.type = details.type;\n updateRequest.waitTimeDays = details.waitTimeDays;\n updateRequest.keyEncrypted = encryptedKey.encryptedString;\n\n await this.apiService.putEmergencyAccess(details.id, updateRequest);\n }\n }\n}\n","{{'loggedOutWarning' | i18n}}\n\n {{'masterPasswordPolicyInEffect' | i18n}}\n
    \n
  • 0\">\n {{'policyInEffectMinComplexity' | i18n : getPasswordScoreAlertDisplay()}}\n
  • \n
  • 0\">\n {{'policyInEffectMinLength' | i18n : enforcedPolicyOptions?.minLength.toString()}}\n
  • \n
  • {{'policyInEffectUppercase' | i18n}}
  • \n
  • {{'policyInEffectLowercase' | i18n}}
  • \n
  • {{'policyInEffectNumbers' | i18n}}
  • \n
  • {{'policyInEffectSpecial' | i18n : '!@#$%^&*'}}
  • \n
\n
\n\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n \n
\n","export enum EmergencyAccessStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n RecoveryInitiated = 3,\n RecoveryApproved = 4,\n}\n","import { EmergencyAccessType } from '../../enums/emergencyAccessType';\n\nexport class EmergencyAccessUpdateRequest {\n type: EmergencyAccessType;\n waitTimeDays: number;\n keyEncrypted?: string;\n}\n","import { FolderRequest } from './folderRequest';\n\nimport { Folder } from '../domain/folder';\n\nexport class FolderWithIdRequest extends FolderRequest {\n id: string;\n\n constructor(folder: Folder) {\n super(folder);\n this.id = folder.id;\n }\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class PasswordRequest extends PasswordVerificationRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","import { CipherWithIdRequest } from './cipherWithIdRequest';\nimport { FolderWithIdRequest } from './folderWithIdRequest';\n\nexport class UpdateKeyRequest {\n ciphers: CipherWithIdRequest[] = [];\n folders: FolderWithIdRequest[] = [];\n masterPasswordHash: string;\n privateKey: string;\n key: string;\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { KdfRequest } from 'jslib/models/request/kdfRequest';\n\nimport { KdfType } from 'jslib/enums/kdfType';\n\n@Component({\n selector: 'app-change-kdf',\n templateUrl: 'change-kdf.component.html',\n})\nexport class ChangeKdfComponent implements OnInit {\n masterPassword: string;\n kdfIterations: number;\n kdf = KdfType.PBKDF2_SHA256;\n kdfOptions: any[] = [];\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private messagingService: MessagingService,\n private userService: UserService) {\n this.kdfOptions = [\n { name: 'PBKDF2 SHA-256', value: KdfType.PBKDF2_SHA256 },\n ];\n }\n\n async ngOnInit() {\n this.kdf = await this.userService.getKdf();\n this.kdfIterations = await this.userService.getKdfIterations();\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.toasterService.popAsync('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n const request = new KdfRequest();\n request.kdf = this.kdf;\n request.kdfIterations = this.kdfIterations;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const email = await this.userService.getEmail();\n const newKey = await this.cryptoService.makeKey(this.masterPassword, email, this.kdf, this.kdfIterations);\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, newKey);\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\n try {\n this.formPromise = this.apiService.postAccountKdf(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Changed KDF' });\n this.toasterService.popAsync('success', this.i18nService.t('encKeySettingsChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch { }\n }\n}\n","{{'loggedOutWarning' | i18n}}\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n
\n

{{'kdfIterationsDesc' | i18n : (100000 | number)}}

\n {{'warning' | i18n}}: {{'kdfIterationsWarning' | i18n : (50000 | number)}}\n
\n
\n
\n
\n \n
\n","import {\n Component,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { PlanType } from 'jslib/enums/planType';\nimport { ProductType } from 'jslib/enums/productType';\n\nimport { OrganizationPlansComponent } from './organization-plans.component';\n\n@Component({\n selector: 'app-create-organization',\n templateUrl: 'create-organization.component.html',\n})\nexport class CreateOrganizationComponent implements OnInit {\n @ViewChild(OrganizationPlansComponent, { static: true }) orgPlansComponent: OrganizationPlansComponent;\n\n constructor(private route: ActivatedRoute) { }\n\n ngOnInit() {\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.plan === 'families') {\n this.orgPlansComponent.plan = PlanType.FamiliesAnnually;\n this.orgPlansComponent.product = ProductType.Families;\n } else if (qParams.plan === 'teams') {\n this.orgPlansComponent.plan = PlanType.TeamsAnnually;\n this.orgPlansComponent.product = ProductType.Teams;\n } else if (qParams.plan === 'enterprise') {\n this.orgPlansComponent.plan = PlanType.EnterpriseAnnually;\n this.orgPlansComponent.product = ProductType.Enterprise;\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n}\n","
\n

{{'newOrganization' | i18n}}

\n
\n

{{'newOrganizationDesc' | i18n}}

\n\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { UpdateDomainsRequest } from 'jslib/models/request/updateDomainsRequest';\n\n@Component({\n selector: 'app-domain-rules',\n templateUrl: 'domain-rules.component.html',\n})\nexport class DomainRulesComponent implements OnInit {\n loading = true;\n custom: string[] = [];\n global: any[] = [];\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService) { }\n\n async ngOnInit() {\n const response = await this.apiService.getSettingsDomains();\n this.loading = false;\n if (response.equivalentDomains != null) {\n this.custom = response.equivalentDomains.map(d => d.join(', '));\n }\n if (response.globalEquivalentDomains != null) {\n this.global = response.globalEquivalentDomains.map(d => {\n return {\n domains: d.domains.join(', '),\n excluded: d.excluded,\n key: d.type,\n };\n });\n }\n }\n\n toggleExcluded(globalDomain: any) {\n globalDomain.excluded = !globalDomain.excluded;\n }\n\n customize(globalDomain: any) {\n globalDomain.excluded = true;\n this.custom.push(globalDomain.domains);\n }\n\n remove(index: number) {\n this.custom.splice(index, 1);\n }\n\n add() {\n this.custom.push('');\n }\n\n async submit() {\n const request = new UpdateDomainsRequest();\n request.excludedGlobalEquivalentDomains = this.global.filter(d => d.excluded)\n .map(d => d.key);\n if (request.excludedGlobalEquivalentDomains.length === 0) {\n request.excludedGlobalEquivalentDomains = null;\n }\n request.equivalentDomains = this.custom.filter(d => d != null && d.trim() !== '')\n .map(d => d.split(',').map(d2 => d2.trim()));\n if (request.equivalentDomains.length === 0) {\n request.equivalentDomains = null;\n }\n\n try {\n this.formPromise = this.apiService.putSettingsDomains(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Saved Equivalent Domains' });\n this.toasterService.popAsync('success', null, this.i18nService.t('domainsUpdated'));\n } catch { }\n }\n\n indexTrackBy(index: number, obj: any): any {\n return index;\n }\n}\n","
\n

{{'domainRules' | i18n}}

\n
\n

{{'domainRulesDesc' | i18n}}

\n
\n

{{'customEqDomains' | i18n}}

\n

\n \n {{'loading' | i18n}}\n

\n \n
\n
\n \n \n
\n \n
\n \n {{'newCustomDomainDesc' | i18n}}\n
\n \n

{{'globalEqDomains' | i18n}}

\n

\n \n {{'loading' | i18n}}\n

\n 0\">\n \n \n \n \n \n \n
{{d.domains}}\n \n
\n \n
\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\nimport { VaultTimeoutService } from 'jslib/abstractions/vaultTimeout.service';\n\nimport { ConstantsService } from 'jslib/services/constants.service';\n\nimport { Utils } from 'jslib/misc/utils';\n\n@Component({\n selector: 'app-options',\n templateUrl: 'options.component.html',\n})\nexport class OptionsComponent implements OnInit {\n vaultTimeout: number = null;\n vaultTimeoutAction: string = 'lock';\n disableIcons: boolean;\n enableGravatars: boolean;\n enableFullWidth: boolean;\n locale: string;\n vaultTimeouts: any[];\n localeOptions: any[];\n\n private startingLocale: string;\n\n constructor(private storageService: StorageService, private stateService: StateService,\n private analytics: Angulartics2, private i18nService: I18nService,\n private toasterService: ToasterService, private vaultTimeoutService: VaultTimeoutService,\n private platformUtilsService: PlatformUtilsService, private messagingService: MessagingService) {\n this.vaultTimeouts = [\n { name: i18nService.t('oneMinute'), value: 1 },\n { name: i18nService.t('fiveMinutes'), value: 5 },\n { name: i18nService.t('fifteenMinutes'), value: 15 },\n { name: i18nService.t('thirtyMinutes'), value: 30 },\n { name: i18nService.t('oneHour'), value: 60 },\n { name: i18nService.t('fourHours'), value: 240 },\n { name: i18nService.t('onRefresh'), value: -1 },\n ];\n if (this.platformUtilsService.isDev()) {\n this.vaultTimeouts.push({ name: i18nService.t('never'), value: null });\n }\n\n const localeOptions: any[] = [];\n i18nService.supportedTranslationLocales.forEach(locale => {\n let name = locale;\n if (i18nService.localeNames.has(locale)) {\n name += (' - ' + i18nService.localeNames.get(locale));\n }\n localeOptions.push({ name: name, value: locale });\n });\n localeOptions.sort(Utils.getSortFunction(i18nService, 'name'));\n localeOptions.splice(0, 0, { name: i18nService.t('default'), value: null });\n this.localeOptions = localeOptions;\n }\n\n async ngOnInit() {\n this.vaultTimeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n this.vaultTimeoutAction = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n this.disableIcons = await this.storageService.get(ConstantsService.disableFaviconKey);\n this.enableGravatars = await this.storageService.get('enableGravatars');\n this.enableFullWidth = await this.storageService.get('enableFullWidth');\n this.locale = this.startingLocale = await this.storageService.get(ConstantsService.localeKey);\n }\n\n async submit() {\n await this.vaultTimeoutService.setVaultTimeoutOptions(this.vaultTimeout != null ? this.vaultTimeout : null,\n this.vaultTimeoutAction);\n await this.storageService.save(ConstantsService.disableFaviconKey, this.disableIcons);\n await this.stateService.save(ConstantsService.disableFaviconKey, this.disableIcons);\n await this.storageService.save('enableGravatars', this.enableGravatars);\n await this.stateService.save('enableGravatars', this.enableGravatars);\n await this.storageService.save('enableFullWidth', this.enableFullWidth);\n this.messagingService.send('setFullWidth');\n await this.storageService.save(ConstantsService.localeKey, this.locale);\n this.analytics.eventTrack.next({ action: 'Saved Options' });\n if (this.locale !== this.startingLocale) {\n window.location.reload();\n } else {\n this.toasterService.popAsync('success', null, this.i18nService.t('optionsUpdated'));\n }\n }\n\n async vaultTimeoutActionChanged(newValue: string) {\n if (newValue === 'logOut') {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('vaultTimeoutLogOutConfirmation'),\n this.i18nService.t('vaultTimeoutLogOutConfirmationTitle'),\n this.i18nService.t('yes'), this.i18nService.t('cancel'), 'warning');\n if (!confirmed) {\n this.vaultTimeoutAction = 'lock';\n return;\n }\n }\n this.vaultTimeoutAction = newValue;\n }\n}\n","
\n

{{'options' | i18n}}

\n
\n

{{'optionsDesc' | i18n}}

\n
\n
\n
\n
\n \n \n {{'vaultTimeoutDesc' | i18n}}\n
\n
\n
\n
\n \n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n \n \n
\n \n {{'languageDesc' | i18n}}\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n {{'disableIconsDesc' | i18n}}\n
\n
\n
\n \n \n \n \n \n
\n {{'enableGravatarsDesc' | i18n}}\n
\n\t
\n
\n \n \n
\n {{'enableFullWidthDesc' | i18n}}\n
\n \n
\n","import {\n AfterContentInit,\n Component,\n Input,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { AuthService } from 'jslib/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib/abstractions/cryptoFunction.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\n\nimport { SsoComponent } from 'jslib/angular/components/sso.component';\n\nimport { Organization } from 'jslib/models/domain/organization';\n\n@Component({\n selector: 'app-link-sso',\n templateUrl: 'link-sso.component.html',\n})\nexport class LinkSsoComponent extends SsoComponent implements AfterContentInit {\n @Input() organization: Organization;\n returnUri: string = '/settings/organizations';\n\n constructor(platformUtilsService: PlatformUtilsService, i18nService: I18nService,\n apiService: ApiService, authService: AuthService,\n router: Router, route: ActivatedRoute,\n cryptoFunctionService: CryptoFunctionService, passwordGenerationService: PasswordGenerationService,\n storageService: StorageService, stateService: StateService) {\n super(authService, router,\n i18nService, route,\n storageService, stateService,\n platformUtilsService, apiService,\n cryptoFunctionService, passwordGenerationService);\n\n this.returnUri = '/settings/organizations';\n this.redirectUri = window.location.origin + '/sso-connector.html';\n this.clientId = 'web';\n }\n\n async ngAfterContentInit() {\n this.identifier = this.organization.identifier;\n }\n}\n","\n \n {{'linkSso' | i18n}}\n\n","import {\n Component,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\nimport { TokenService } from 'jslib/abstractions/token.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { PaymentComponent } from './payment.component';\nimport { TaxInfoComponent } from './tax-info.component';\n\n@Component({\n selector: 'app-premium',\n templateUrl: 'premium.component.html',\n})\nexport class PremiumComponent implements OnInit {\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent) taxInfoComponent: TaxInfoComponent;\n\n canAccessPremium = false;\n selfHosted = false;\n premiumPrice = 10;\n storageGbPrice = 4;\n additionalStorage = 0;\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n platformUtilsService: PlatformUtilsService, private tokenService: TokenService,\n private router: Router, private messagingService: MessagingService,\n private syncService: SyncService, private userService: UserService) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n const premium = await this.tokenService.getPremium();\n if (premium) {\n this.router.navigate(['/settings/subscription']);\n return;\n }\n }\n\n async submit() {\n let files: FileList = null;\n if (this.selfHosted) {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n files = fileEl.files;\n if (files == null || files.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n }\n\n try {\n if (this.selfHosted) {\n if (!this.tokenService.getEmailVerified()) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('verifyEmailFirst'));\n return;\n }\n\n const fd = new FormData();\n fd.append('license', files[0]);\n this.formPromise = this.apiService.postAccountLicense(fd).then(() => {\n return this.finalizePremium();\n });\n } else {\n this.formPromise = this.paymentComponent.createPaymentToken().then(result => {\n const fd = new FormData();\n fd.append('paymentMethodType', result[1].toString());\n if (result[0] != null) {\n fd.append('paymentToken', result[0]);\n }\n fd.append('additionalStorageGb', (this.additionalStorage || 0).toString());\n fd.append('country', this.taxInfoComponent.taxInfo.country);\n fd.append('postalCode', this.taxInfoComponent.taxInfo.postalCode);\n return this.apiService.postPremium(fd);\n }).then(paymentResponse => {\n if (!paymentResponse.success && paymentResponse.paymentIntentClientSecret != null) {\n return this.paymentComponent.handleStripeCardPayment(paymentResponse.paymentIntentClientSecret,\n () => this.finalizePremium());\n } else {\n return this.finalizePremium();\n }\n });\n }\n await this.formPromise;\n } catch { }\n }\n\n async finalizePremium() {\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n this.analytics.eventTrack.next({ action: 'Signed Up Premium' });\n this.toasterService.popAsync('success', null, this.i18nService.t('premiumUpdated'));\n this.messagingService.send('purchasedPremium');\n this.router.navigate(['/settings/subscription']);\n }\n\n get additionalStorageTotal(): number {\n return this.storageGbPrice * Math.abs(this.additionalStorage || 0);\n }\n\n get subtotal(): number {\n return this.premiumPrice + this.additionalStorageTotal;\n }\n\n get taxCharges(): number {\n return this.taxInfoComponent != null && this.taxInfoComponent.taxRate != null ?\n (this.taxInfoComponent.taxRate / 100) * this.subtotal :\n 0;\n }\n\n get total(): number {\n return (this.subtotal + this.taxCharges) || 0;\n }\n}\n","
\n

{{'goPremium' | i18n}}

\n
\n\n {{'alreadyPremiumFromOrg' | i18n}}\n\n\n

{{'premiumUpgradeUnlockFeatures' | i18n}}

\n
    \n
  • \n \n {{'premiumSignUpStorage' | i18n}}\n
  • \n
  • \n \n {{'premiumSignUpTwoStep' | i18n}}\n
  • \n
  • \n \n {{'premiumSignUpEmergency' |i18n}}\n
  • \n
  • \n \n {{'premiumSignUpReports' | i18n}}\n
  • \n
  • \n \n {{'premiumSignUpTotp' | i18n}}\n
  • \n
  • \n \n {{'premiumSignUpSupport' | i18n}}\n
  • \n
  • \n \n {{'premiumSignUpFuture' | i18n}}\n
  • \n
\n

{{'premiumPrice' | i18n : (premiumPrice | currency:'$')}}

\n \n {{'purchasePremium' | i18n}}\n \n
\n\n

{{'uploadLicenseFilePremium' | i18n}}

\n
\n
\n \n \n {{'licenseFileDesc' | i18n : 'bitwarden_premium_license.json'}}\n
\n \n
\n
\n
\n

{{'addons' | i18n}}

\n
\n
\n \n \n {{'additionalStorageIntervalDesc' | i18n : '1 GB' : (storageGbPrice | currency:'$') : ('year' | i18n)}}\n
\n
\n

{{'summary' | i18n}}

\n {{'premiumMembership' | i18n}}: {{premiumPrice | currency:'$'}}\n
{{'additionalStorageGb' | i18n}}: {{additionalStorage || 0}} GB × {{storageGbPrice | currency:'$'}} = {{additionalStorageTotal\n | currency:'$'}}\n
\n

{{'paymentInformation' | i18n}}

\n \n \n
\n
\n {{ 'planPrice' | i18n }}: {{ subtotal | currency: 'USD $' }}\n
\n \n {{ 'estimatedTax' | i18n }}: {{ taxCharges | currency: 'USD $' }}\n \n
\n
\n

{{'total' | i18n}}:\n {{total | currency:'USD $'}}/{{'year' | i18n}}

\n
\n {{'paymentChargedAnnually' | i18n}}\n \n
\n","import {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { TokenService } from 'jslib/abstractions/token.service';\n\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\n\nconst BroadcasterSubscriptionId = 'SettingsComponent';\n\n@Component({\n selector: 'app-settings',\n templateUrl: 'settings.component.html',\n})\nexport class SettingsComponent implements OnInit, OnDestroy {\n premium: boolean;\n selfHosted: boolean;\n\n constructor(private tokenService: TokenService, private broadcasterService: BroadcasterService,\n private ngZone: NgZone, private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'purchasedPremium':\n await this.load();\n break;\n default:\n }\n });\n });\n\n this.selfHosted = await this.platformUtilsService.isSelfHost();\n await this.load();\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async load() {\n this.premium = await this.tokenService.getPremium();\n }\n}\n","\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { SubscriptionResponse } from 'jslib/models/response/subscriptionResponse';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { TokenService } from 'jslib/abstractions/token.service';\n\n@Component({\n selector: 'app-user-subscription',\n templateUrl: 'user-subscription.component.html',\n})\nexport class UserSubscriptionComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n adjustStorageAdd = true;\n showAdjustStorage = false;\n showUpdateLicense = false;\n sub: SubscriptionResponse;\n selfHosted = false;\n\n cancelPromise: Promise;\n reinstatePromise: Promise;\n\n constructor(private tokenService: TokenService, private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private router: Router) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n\n if (this.tokenService.getPremium()) {\n this.loading = true;\n this.sub = await this.apiService.getUserSubscription();\n } else {\n this.router.navigate(['/settings/premium']);\n return;\n }\n\n this.loading = false;\n }\n\n async reinstate() {\n if (this.loading) {\n return;\n }\n\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(this.i18nService.t('manageSubscriptionFromStore'),\n this.i18nService.t('cancelSubscription'), null, null, 'warning');\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('reinstateConfirmation'),\n this.i18nService.t('reinstateSubscription'), this.i18nService.t('yes'), this.i18nService.t('cancel'));\n if (!confirmed) {\n return;\n }\n\n try {\n this.reinstatePromise = this.apiService.postReinstatePremium();\n await this.reinstatePromise;\n this.analytics.eventTrack.next({ action: 'Reinstated Premium' });\n this.toasterService.popAsync('success', null, this.i18nService.t('reinstated'));\n this.load();\n } catch { }\n }\n\n async cancel() {\n if (this.loading) {\n return;\n }\n\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(this.i18nService.t('manageSubscriptionFromStore'),\n this.i18nService.t('cancelSubscription'), null, null, 'warning');\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('cancelConfirmation'),\n this.i18nService.t('cancelSubscription'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n this.cancelPromise = this.apiService.postCancelPremium();\n await this.cancelPromise;\n this.analytics.eventTrack.next({ action: 'Canceled Premium' });\n this.toasterService.popAsync('success', null, this.i18nService.t('canceledSubscription'));\n this.load();\n } catch { }\n }\n\n downloadLicense() {\n if (this.loading) {\n return;\n }\n\n const licenseString = JSON.stringify(this.sub.license, null, 2);\n this.platformUtilsService.saveFile(window, licenseString, null, 'bitwarden_premium_license.json');\n }\n\n updateLicense() {\n if (this.loading) {\n return;\n }\n this.showUpdateLicense = true;\n }\n\n closeUpdateLicense(load: boolean) {\n this.showUpdateLicense = false;\n if (load) {\n this.load();\n }\n }\n\n adjustStorage(add: boolean) {\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(this.i18nService.t('cannotPerformInAppPurchase'),\n this.i18nService.t(add ? 'addStorage' : 'removeStorage'), null, null, 'warning');\n return;\n }\n this.adjustStorageAdd = add;\n this.showAdjustStorage = true;\n }\n\n closeStorage(load: boolean) {\n this.showAdjustStorage = false;\n if (load) {\n this.load();\n }\n }\n\n get subscriptionMarkedForCancel() {\n return this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate;\n }\n\n get subscription() {\n return this.sub != null ? this.sub.subscription : null;\n }\n\n get nextInvoice() {\n return this.sub != null ? this.sub.upcomingInvoice : null;\n }\n\n get storagePercentage() {\n return this.sub != null && this.sub.maxStorageGb ?\n +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2) : 0;\n }\n\n get storageProgressWidth() {\n return this.storagePercentage < 5 ? 5 : 0;\n }\n\n get usingInAppPurchase() {\n return this.sub != null ? this.sub.usingInAppPurchase : false;\n }\n}\n","
\n

\n {{'premiumMembership' | i18n}}\n \n \n {{'loading' | i18n}}\n \n

\n
\n\n \n {{'loading' | i18n}}\n\n\n \n {{'subscriptionCanceled' | i18n}}\n \n

{{'subscriptionPendingCanceled' | i18n}}

\n \n
\n
\n
{{'expiration' | i18n}}
\n
{{sub.expiration | date:'mediumDate'}}
\n
{{'neverExpires' | i18n}}
\n
\n
\n
\n
\n
{{'status' | i18n}}
\n
\n {{(subscription && subscription.status) || '-'}}\n {{'pendingCancellation' | i18n}}\n
\n
{{'nextCharge' | i18n}}
\n
{{nextInvoice ? ((nextInvoice.date | date: 'mediumDate') + ', ' + (nextInvoice.amount | currency:'$')) :\n '-'}}\n
\n
\n
\n
\n {{'details' | i18n}}\n \n \n \n \n \n \n \n
\n {{i.name}} {{i.quantity > 1 ? '×' + i.quantity : ''}} @ {{i.amount | currency:'$'}}\n \n {{(i.quantity * i.amount) | currency:'$'}} /{{i.interval | i18n}}\n
\n
\n
\n \n
\n \n \n {{'manageSubscription' | i18n}}\n \n
\n
\n
\n \n

{{'updateLicense' | i18n}}

\n \n \n
\n
\n
\n \n
\n \n \n
\n

{{'storage' | i18n}}

\n

{{'subscriptionStorage' | i18n : sub.maxStorageGb || 0 : sub.storageName || '0 MB'}}

\n
\n
\n {{(storagePercentage / 100) | percent}}
\n
\n \n
\n
\n \n \n
\n \n
\n
\n
\n
\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { AuditService } from 'jslib/abstractions/audit.service';\nimport { UserService } from 'jslib/abstractions/user.service';\nimport { BreachAccountResponse } from 'jslib/models/response/breachAccountResponse';\n\n@Component({\n selector: 'app-breach-report',\n templateUrl: 'breach-report.component.html',\n})\nexport class BreachReportComponent implements OnInit {\n error = false;\n username: string;\n checkedUsername: string;\n breachedAccounts: BreachAccountResponse[] = [];\n formPromise: Promise;\n\n constructor(private auditService: AuditService, private userService: UserService) { }\n\n async ngOnInit() {\n this.username = await this.userService.getEmail();\n }\n\n async submit() {\n this.error = false;\n this.username = this.username.toLowerCase();\n try {\n this.formPromise = this.auditService.breachedAccounts(this.username);\n this.breachedAccounts = await this.formPromise;\n } catch {\n this.error = true;\n }\n this.checkedUsername = this.username;\n }\n}\n","
\n

{{'dataBreachReport' | i18n}}

\n
\n

{{'breachDesc' | i18n}}

\n
\n
\n
\n \n \n {{'breachCheckUsernameEmail' | i18n}}\n
\n
\n \n
\n
\n

{{'reportError' | i18n}}...

\n \n \n {{'breachUsernameNotFound' | i18n : checkedUsername}}\n \n \n {{'breachUsernameFound' | i18n : checkedUsername : breachedAccounts.length}}\n \n
    \n
  • \n
    \n
    \n \"\"\n
    \n
    \n

    {{a.title}}

    \n

    \n

    {{'compromisedData' | i18n}}:

    \n
      \n
    • {{d}}
    • \n
    \n
    \n
    \n
    \n
    {{'website' | i18n}}
    \n
    {{a.domain}}
    \n
    {{'affectedUsers' | i18n}}
    \n
    {{a.pwnCount | number}}
    \n
    {{'breachOccurred' | i18n}}
    \n
    {{a.breachDate | date: 'mediumDate'}}
    \n
    {{'breachReported' | i18n}}
    \n
    {{a.addedDate | date: 'mediumDate'}}
    \n
    \n
    \n
    \n
  • \n
\n
\n
\n","import {\n Component,\n ComponentFactoryResolver,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport {\n PasswordGeneratorComponent as BasePasswordGeneratorComponent,\n} from 'jslib/angular/components/password-generator.component';\n\nimport { ModalComponent } from '../modal.component';\nimport { PasswordGeneratorHistoryComponent } from './password-generator-history.component';\n\n@Component({\n selector: 'app-password-generator',\n templateUrl: 'password-generator.component.html',\n})\nexport class PasswordGeneratorComponent extends BasePasswordGeneratorComponent {\n @ViewChild('historyTemplate', { read: ViewContainerRef, static: true }) historyModalRef: ViewContainerRef;\n\n private modal: ModalComponent = null;\n\n constructor(passwordGenerationService: PasswordGenerationService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver) {\n super(passwordGenerationService, platformUtilsService, i18nService, window);\n }\n\n history() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.historyModalRef.createComponent(factory).instance;\n this.modal.show(PasswordGeneratorHistoryComponent, this.historyModalRef);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n lengthChanged() {\n document.getElementById('length').focus();\n }\n\n minNumberChanged() {\n document.getElementById('min-number').focus();\n }\n\n minSpecialChanged() {\n document.getElementById('min-special').focus();\n }\n}\n","
\n

{{'passwordGenerator' | i18n}}

\n
\n\n {{'passwordGeneratorPolicyInEffect' | i18n}}\n\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n\n","import { Component } from '@angular/core';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport {\n PasswordGeneratorHistoryComponent as BasePasswordGeneratorHistoryComponent,\n} from 'jslib/angular/components/password-generator-history.component';\n\n@Component({\n selector: 'app-password-generator-history',\n templateUrl: 'password-generator-history.component.html',\n})\nexport class PasswordGeneratorHistoryComponent extends BasePasswordGeneratorHistoryComponent {\n constructor(passwordGenerationService: PasswordGenerationService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService) {\n super(passwordGenerationService, platformUtilsService, i18nService, window);\n }\n}\n","
\n
\n
\n
\n

{{'passwordHistory' | i18n}}

\n \n
\n
    \n
  • \n
    \n
    \n {{h.date | date:'medium'}}\n
    \n
    \n \n
    \n
  • \n
\n
\n {{'noPasswordsInList' | i18n}}\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\n@Component({\n selector: 'app-tools',\n templateUrl: 'tools.component.html',\n})\nexport class ToolsComponent implements OnInit {\n canAccessPremium = false;\n\n constructor(private userService: UserService, private messagingService: MessagingService) { }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n }\n\n premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n}\n","\n","import {\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { CipherType } from 'jslib/enums/cipherType';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { ModalComponent } from '../modal.component';\n\nimport { OrganizationsComponent } from '../settings/organizations.component';\nimport { UpdateKeyComponent } from '../settings/update-key.component';\nimport { AddEditComponent } from './add-edit.component';\nimport { AttachmentsComponent } from './attachments.component';\nimport { CiphersComponent } from './ciphers.component';\nimport { CollectionsComponent } from './collections.component';\nimport { FolderAddEditComponent } from './folder-add-edit.component';\nimport { GroupingsComponent } from './groupings.component';\nimport { ShareComponent } from './share.component';\n\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\nimport { TokenService } from 'jslib/abstractions/token.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\n\nconst BroadcasterSubscriptionId = 'VaultComponent';\n\n@Component({\n selector: 'app-vault',\n templateUrl: 'vault.component.html',\n})\nexport class VaultComponent implements OnInit, OnDestroy {\n @ViewChild(GroupingsComponent, { static: true }) groupingsComponent: GroupingsComponent;\n @ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent;\n @ViewChild(OrganizationsComponent, { static: true }) organizationsComponent: OrganizationsComponent;\n @ViewChild('attachments', { read: ViewContainerRef, static: true }) attachmentsModalRef: ViewContainerRef;\n @ViewChild('folderAddEdit', { read: ViewContainerRef, static: true }) folderAddEditModalRef: ViewContainerRef;\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('share', { read: ViewContainerRef, static: true }) shareModalRef: ViewContainerRef;\n @ViewChild('collections', { read: ViewContainerRef, static: true }) collectionsModalRef: ViewContainerRef;\n @ViewChild('updateKeyTemplate', { read: ViewContainerRef, static: true }) updateKeyModalRef: ViewContainerRef;\n\n favorites: boolean = false;\n type: CipherType = null;\n folderId: string = null;\n collectionId: string = null;\n showVerifyEmail = false;\n showBrowserOutdated = false;\n showUpdateKey = false;\n showPremiumCallout = false;\n deleted: boolean = false;\n\n modal: ModalComponent = null;\n\n constructor(private syncService: SyncService, private route: ActivatedRoute,\n private router: Router, private changeDetectorRef: ChangeDetectorRef,\n private i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver,\n private tokenService: TokenService, private cryptoService: CryptoService,\n private messagingService: MessagingService, private userService: UserService,\n private platformUtilsService: PlatformUtilsService, private broadcasterService: BroadcasterService,\n private ngZone: NgZone) { }\n\n async ngOnInit() {\n this.showVerifyEmail = !(await this.tokenService.getEmailVerified());\n this.showBrowserOutdated = window.navigator.userAgent.indexOf('MSIE') !== -1;\n\n const queryParamsSub = this.route.queryParams.subscribe(async params => {\n await this.syncService.fullSync(false);\n\n this.showUpdateKey = !(await this.cryptoService.hasEncKey());\n const canAccessPremium = await this.userService.canAccessPremium();\n this.showPremiumCallout = !this.showVerifyEmail && !canAccessPremium &&\n !this.platformUtilsService.isSelfHost();\n\n await Promise.all([\n this.groupingsComponent.load(),\n this.organizationsComponent.load(),\n ]);\n\n if (params == null) {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n } else {\n if (params.deleted) {\n this.groupingsComponent.selectedTrash = true;\n await this.filterDeleted();\n } else if (params.favorites) {\n this.groupingsComponent.selectedFavorites = true;\n await this.filterFavorites();\n } else if (params.type) {\n const t = parseInt(params.type, null);\n this.groupingsComponent.selectedType = t;\n await this.filterCipherType(t);\n } else if (params.folderId) {\n this.groupingsComponent.selectedFolder = true;\n this.groupingsComponent.selectedFolderId = params.folderId;\n await this.filterFolder(params.folderId);\n } else if (params.collectionId) {\n this.groupingsComponent.selectedCollectionId = params.collectionId;\n await this.filterCollection(params.collectionId);\n } else {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n }\n }\n\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'syncCompleted':\n if (message.successfully) {\n await Promise.all([\n this.groupingsComponent.load(),\n this.organizationsComponent.load(),\n this.ciphersComponent.load(this.ciphersComponent.filter),\n ]);\n this.changeDetectorRef.detectChanges();\n }\n break;\n }\n });\n });\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async clearGroupingFilters() {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchVault');\n await this.ciphersComponent.reload();\n this.clearFilters();\n this.go();\n }\n\n async filterFavorites() {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchFavorites');\n await this.ciphersComponent.reload(c => c.favorite);\n this.clearFilters();\n this.favorites = true;\n this.go();\n }\n\n async filterDeleted() {\n this.ciphersComponent.showAddNew = false;\n this.ciphersComponent.deleted = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchTrash');\n await this.ciphersComponent.reload(null, true);\n this.clearFilters();\n this.deleted = true;\n this.go();\n }\n\n async filterCipherType(type: CipherType) {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchType');\n await this.ciphersComponent.reload(c => c.type === type);\n this.clearFilters();\n this.type = type;\n this.go();\n }\n\n async filterFolder(folderId: string) {\n this.ciphersComponent.showAddNew = true;\n folderId = folderId === 'none' ? null : folderId;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchFolder');\n await this.ciphersComponent.reload(c => c.folderId === folderId);\n this.clearFilters();\n this.folderId = folderId == null ? 'none' : folderId;\n this.go();\n }\n\n async filterCollection(collectionId: string) {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchCollection');\n await this.ciphersComponent.reload(c => c.collectionIds != null &&\n c.collectionIds.indexOf(collectionId) > -1);\n this.clearFilters();\n this.collectionId = collectionId;\n this.go();\n }\n\n filterSearchText(searchText: string) {\n this.ciphersComponent.searchText = searchText;\n this.ciphersComponent.search(200);\n }\n\n async editCipherAttachments(cipher: CipherView) {\n const canAccessPremium = await this.userService.canAccessPremium();\n if (cipher.organizationId == null && !canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n } else if (cipher.organizationId != null) {\n const org = await this.userService.getOrganization(cipher.organizationId);\n if (org != null && (org.maxStorageGb == null || org.maxStorageGb === 0)) {\n this.messagingService.send('upgradeOrganization', { organizationId: cipher.organizationId });\n return;\n }\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.attachmentsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(AttachmentsComponent, this.attachmentsModalRef);\n\n childComponent.cipherId = cipher.id;\n let madeAttachmentChanges = false;\n childComponent.onUploadedAttachment.subscribe(() => madeAttachmentChanges = true);\n childComponent.onDeletedAttachment.subscribe(() => madeAttachmentChanges = true);\n childComponent.onReuploadedAttachment.subscribe(() => madeAttachmentChanges = true);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n if (madeAttachmentChanges) {\n await this.ciphersComponent.refresh();\n }\n madeAttachmentChanges = false;\n });\n }\n\n shareCipher(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.shareModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(ShareComponent, this.shareModalRef);\n\n childComponent.cipherId = cipher.id;\n childComponent.onSharedCipher.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n editCipherCollections(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.collectionsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(CollectionsComponent, this.collectionsModalRef);\n\n childComponent.cipherId = cipher.id;\n childComponent.onSavedCollections.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n async addFolder() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.folderAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n FolderAddEditComponent, this.folderAddEditModalRef);\n\n childComponent.folderId = null;\n childComponent.onSavedFolder.subscribe(async () => {\n this.modal.close();\n await this.groupingsComponent.loadFolders();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n async editFolder(folderId: string) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.folderAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n FolderAddEditComponent, this.folderAddEditModalRef);\n\n childComponent.folderId = folderId;\n childComponent.onSavedFolder.subscribe(async () => {\n this.modal.close();\n await this.groupingsComponent.loadFolders();\n });\n childComponent.onDeletedFolder.subscribe(async () => {\n this.modal.close();\n await this.groupingsComponent.loadFolders();\n await this.filterFolder('none');\n this.groupingsComponent.selectedFolderId = null;\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n addCipher() {\n const component = this.editCipher(null);\n component.type = this.type;\n component.folderId = this.folderId === 'none' ? null : this.folderId;\n if (this.collectionId != null) {\n const collection = this.groupingsComponent.collections.filter(c => c.id === this.collectionId);\n if (collection.length > 0) {\n component.organizationId = collection[0].organizationId;\n component.collectionIds = [this.collectionId];\n }\n }\n }\n\n editCipher(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.cipherAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n AddEditComponent, this.cipherAddEditModalRef);\n\n childComponent.cipherId = cipher == null ? null : cipher.id;\n childComponent.onSavedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n childComponent.onDeletedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n childComponent.onRestoredCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n\n return childComponent;\n }\n\n cloneCipher(cipher: CipherView) {\n const component = this.editCipher(cipher);\n component.cloneMode = true;\n }\n\n updateKey() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.updateKeyModalRef.createComponent(factory).instance;\n this.modal.show(UpdateKeyComponent, this.updateKeyModalRef);\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n private clearFilters() {\n this.folderId = null;\n this.collectionId = null;\n this.favorites = false;\n this.type = null;\n this.deleted = false;\n }\n\n private go(queryParams: any = null) {\n if (queryParams == null) {\n queryParams = {\n favorites: this.favorites ? true : null,\n type: this.type,\n folderId: this.folderId,\n collectionId: this.collectionId,\n deleted: this.deleted ? true : null,\n };\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n replaceUrl: true,\n });\n }\n}\n","
\n
\n
\n \n \n
\n
\n
\n

\n {{'myVault' | i18n}}\n \n \n \n {{'loading' | i18n}}\n \n \n

\n
\n \n \n \n
\n
\n \n \n
\n
\n
\n
\n {{'updateKeyTitle' | i18n}}\n
\n
\n

{{'updateEncryptionKeyShortDesc' | i18n}}

\n \n
\n
\n \n \n
\n
\n {{'updateBrowser' | i18n}}\n
\n
\n

{{'updateBrowserDesc' | i18n}}

\n \n {{'updateBrowser' | i18n}}\n \n
\n
\n
\n
\n {{'goPremium' | i18n}}\n
\n
\n

{{'premiumUpgradeUnlockFeatures' | i18n}}

\n \n {{'goPremium' | i18n}}\n \n
\n
\n
\n
\n {{'organizations' | i18n}}\n \n \n \n
\n
\n \n
\n
\n
\n
\n
\n\n\n\n\n\n\n","import { Component } from '@angular/core';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\n\nimport { CipherString } from 'jslib/models/domain/cipherString';\n\nimport { CipherWithIdRequest } from 'jslib/models/request/cipherWithIdRequest';\nimport { FolderWithIdRequest } from 'jslib/models/request/folderWithIdRequest';\nimport { UpdateKeyRequest } from 'jslib/models/request/updateKeyRequest';\n\n@Component({\n selector: 'app-update-key',\n templateUrl: 'update-key.component.html',\n})\nexport class UpdateKeyComponent {\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private messagingService: MessagingService,\n private syncService: SyncService, private folderService: FolderService,\n private cipherService: CipherService) { }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (hasEncKey) {\n return;\n }\n\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n try {\n this.formPromise = this.makeRequest().then(request => {\n return this.apiService.postAccountKey(request);\n });\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Key Updated' });\n const toast: Toast = {\n type: 'success',\n title: this.i18nService.t('keyUpdated'),\n body: this.i18nService.t('logBackInOthersToo'),\n timeout: 15000,\n };\n this.toasterService.popAsync(toast);\n this.messagingService.send('logout');\n } catch { }\n }\n\n private async makeRequest(): Promise {\n const key = await this.cryptoService.getKey();\n const encKey = await this.cryptoService.makeEncKey(key);\n const privateKey = await this.cryptoService.getPrivateKey();\n let encPrivateKey: CipherString = null;\n if (privateKey != null) {\n encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]);\n }\n const request = new UpdateKeyRequest();\n request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n\n await this.syncService.fullSync(true);\n\n const folders = await this.folderService.getAllDecrypted();\n for (let i = 0; i < folders.length; i++) {\n if (folders[i].id == null) {\n continue;\n }\n const folder = await this.folderService.encrypt(folders[i], encKey[0]);\n request.folders.push(new FolderWithIdRequest(folder));\n }\n\n const ciphers = await this.cipherService.getAllDecrypted();\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId != null) {\n continue;\n }\n const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]);\n request.ciphers.push(new CipherWithIdRequest(cipher));\n }\n\n return request;\n }\n}\n","
\n
\n
\n
\n

{{'updateEncryptionKey' | i18n}}

\n \n
\n
\n

{{'updateEncryptionKeyShortDesc' | i18n}} {{'updateEncryptionKeyDesc' | i18n}}\n {{'learnMore' | i18n}}\n

\n {{'updateEncryptionKeyWarning' | i18n}}\n \n \n
\n
\n \n \n
\n
\n
\n
\n","import { Component } from '@angular/core';\n\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport {\n FolderAddEditComponent as BaseFolderAddEditComponent,\n} from 'jslib/angular/components/folder-add-edit.component';\n\n@Component({\n selector: 'app-folder-add-edit',\n templateUrl: 'folder-add-edit.component.html',\n})\nexport class FolderAddEditComponent extends BaseFolderAddEditComponent {\n constructor(folderService: FolderService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService) {\n super(folderService, i18nService, platformUtilsService);\n }\n}\n","
\n
\n
\n
\n

{{title}}

\n \n
\n
\n \n \n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n","import {\n Component,\n OnDestroy,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CollectionView } from 'jslib/models/view/collectionView';\n\nimport { ShareComponent as BaseShareComponent } from 'jslib/angular/components/share.component';\n\n@Component({\n selector: 'app-vault-share',\n templateUrl: 'share.component.html',\n})\nexport class ShareComponent extends BaseShareComponent implements OnDestroy {\n constructor(collectionService: CollectionService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, userService: UserService,\n cipherService: CipherService) {\n super(collectionService, platformUtilsService, i18nService, userService, cipherService);\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n const collections = select ? this.collections : this.writeableCollections;\n collections.forEach(c => this.check(c, select));\n }\n}\n","
\n
\n
\n
\n

\n {{'share' | i18n}}\n {{cipher.name}}\n

\n \n
\n
\n {{'noOrganizationsList' | i18n}}\n
\n
\n

{{'shareDesc' | i18n}}

\n
\n \n \n
\n
\n

{{'collections' | i18n}}

\n
\n \n \n
\n
\n
\n {{'noCollectionsInList' | i18n}}\n
\n \n \n \n \n \n \n \n
\n \n \n {{c.name}}\n
\n
\n
\n \n \n {{'newOrganization' | i18n}}\n \n \n
\n
\n
\n
\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-send-info',\n templateUrl: 'send-info.component.html',\n})\nexport class SendInfoComponent { }\n","
\n \n
\n {{'sendVaultCardProductDesc' | i18n}}\n {{'sendVaultCardLearnMore' |\n i18n}},\n {{'sendVaultCardSee' | i18n}}\n {{'sendVaultCardHowItWorks' | i18n}},\n {{'sendVaultCardOr' | i18n}}\n {{'sendVaultCardTryItNow' | i18n}}.\n
\n
\n","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\n@Component({\n selector: 'app-verify-email',\n templateUrl: 'verify-email.component.html',\n})\nexport class VerifyEmailComponent {\n actionPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService) { }\n\n async send() {\n if (this.actionPromise != null) {\n return;\n }\n try {\n this.actionPromise = this.apiService.postAccountVerifyEmail();\n await this.actionPromise;\n this.analytics.eventTrack.next({ action: 'Sent Verification Email' });\n this.toasterService.popAsync('success', null, this.i18nService.t('checkInboxForVerification'));\n } catch { }\n this.actionPromise = null;\n }\n}\n","
\n
\n {{'verifyEmail' | i18n}}\n
\n
\n

{{'verifyEmailDesc' | i18n}}

\n \n
\n
\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\n@Injectable()\nexport class OrganizationGuardService implements CanActivate {\n constructor(private userService: UserService, private router: Router,\n private toasterService: ToasterService, private i18nService: I18nService) { }\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const org = await this.userService.getOrganization(route.params.organizationId);\n if (org == null) {\n this.router.navigate(['/']);\n return false;\n }\n if (!org.isOwner && !org.enabled) {\n this.toasterService.popAsync('error', null, this.i18nService.t('organizationIsDisabled'));\n this.router.navigate(['/']);\n return false;\n }\n\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { Permissions } from 'jslib/enums/permissions';\n\n@Injectable()\nexport class OrganizationTypeGuardService implements CanActivate {\n constructor(private userService: UserService, private router: Router) { }\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const org = await this.userService.getOrganization(route.params.organizationId);\n const permissions = route.data == null ? null : route.data.permissions as Permissions[];\n\n if (\n (permissions.indexOf(Permissions.AccessBusinessPortal) !== -1 && org.canAccessBusinessPortal) ||\n (permissions.indexOf(Permissions.AccessEventLogs) !== -1 && org.canAccessEventLogs) ||\n (permissions.indexOf(Permissions.AccessImportExport) !== -1 && org.canAccessImportExport) ||\n (permissions.indexOf(Permissions.AccessReports) !== -1 && org.canAccessReports) ||\n (permissions.indexOf(Permissions.ManageAllCollections) !== -1 && org.canManageAllCollections) ||\n (permissions.indexOf(Permissions.ManageAssignedCollections) !== -1 && org.canManageAssignedCollections) ||\n (permissions.indexOf(Permissions.ManageGroups) !== -1 && org.canManageGroups) ||\n (permissions.indexOf(Permissions.ManageOrganization) !== -1 && org.isOwner) ||\n (permissions.indexOf(Permissions.ManagePolicies) !== -1 && org.canManagePolicies) ||\n (permissions.indexOf(Permissions.ManageUsers) !== -1 && org.canManageUsers)\n ) {\n return true;\n }\n\n this.router.navigate(['/organizations', org.id]);\n return false;\n }\n}\n","export enum Permissions {\n AccessBusinessPortal,\n AccessEventLogs,\n AccessImportExport,\n AccessReports,\n ManageAllCollections,\n ManageAssignedCollections,\n ManageGroups,\n ManageOrganization,\n ManagePolicies,\n ManageUsers,\n}\n","import { Injectable } from '@angular/core';\nimport {\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { UserService } from 'jslib/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib/abstractions/vaultTimeout.service';\n\n@Injectable()\nexport class UnauthGuardService implements CanActivate {\n constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService,\n private router: Router) { }\n\n async canActivate() {\n const isAuthed = await this.userService.isAuthenticated();\n if (isAuthed) {\n const locked = await this.vaultTimeoutService.isLocked();\n if (locked) {\n this.router.navigate(['lock']);\n } else {\n this.router.navigate(['vault']);\n }\n return false;\n }\n\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n RouterStateSnapshot,\n} from '@angular/router';\n\nimport { MessagingService } from '../../abstractions/messaging.service';\nimport { UserService } from '../../abstractions/user.service';\nimport { VaultTimeoutService } from '../../abstractions/vaultTimeout.service';\n\n@Injectable()\nexport class AuthGuardService implements CanActivate {\n constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService,\n private router: Router, private messagingService: MessagingService) { }\n\n async canActivate(route: ActivatedRouteSnapshot, routerState: RouterStateSnapshot) {\n const isAuthed = await this.userService.isAuthenticated();\n if (!isAuthed) {\n this.messagingService.send('authBlocked');\n return false;\n }\n\n const locked = await this.vaultTimeoutService.isLocked();\n if (locked) {\n if (routerState != null) {\n this.messagingService.send('lockedUrl', { url: routerState.url });\n }\n this.router.navigate(['lock'], { queryParams: { promptBiometric: true }});\n return false;\n }\n\n return true;\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\n\nimport { CipherData } from 'jslib/models/data';\nimport { Cipher, SymmetricCryptoKey } from 'jslib/models/domain';\nimport { EmergencyAccessViewResponse } from 'jslib/models/response/emergencyAccessResponse';\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { ModalComponent } from '../modal.component';\n\nimport { EmergencyAccessAttachmentsComponent } from './emergency-access-attachments.component';\nimport { EmergencyAddEditComponent } from './emergency-add-edit.component';\n\n@Component({\n selector: 'emergency-access-view',\n templateUrl: 'emergency-access-view.component.html',\n})\nexport class EmergencyAccessViewComponent implements OnInit {\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('attachments', { read: ViewContainerRef, static: true }) attachmentsModalRef: ViewContainerRef;\n\n id: string;\n ciphers: CipherView[] = [];\n\n private modal: ModalComponent = null;\n\n constructor(private cipherService: CipherService, private cryptoService: CryptoService,\n private componentFactoryResolver: ComponentFactoryResolver, private router: Router,\n private route: ActivatedRoute, private apiService: ApiService) { }\n\n ngOnInit() {\n this.route.params.subscribe(qParams => {\n if (qParams.id == null) {\n return this.router.navigate(['settings/emergency-access']);\n }\n\n this.id = qParams.id;\n\n this.load();\n });\n }\n\n selectCipher(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.cipherAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(EmergencyAddEditComponent, this.cipherAddEditModalRef);\n\n childComponent.cipherId = cipher == null ? null : cipher.id;\n childComponent.cipher = cipher;\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n\n return childComponent;\n }\n\n async load() {\n const response = await this.apiService.postEmergencyAccessView(this.id);\n this.ciphers = await this.getAllCiphers(response);\n }\n\n async viewAttachments(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.attachmentsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(EmergencyAccessAttachmentsComponent, this.attachmentsModalRef);\n\n childComponent.cipher = cipher;\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n protected async getAllCiphers(response: EmergencyAccessViewResponse): Promise {\n const ciphers = response.ciphers;\n\n const decCiphers: CipherView[] = [];\n const oldKeyBuffer = await this.cryptoService.rsaDecrypt(response.keyEncrypted);\n const oldEncKey = new SymmetricCryptoKey(oldKeyBuffer);\n\n const promises: any[] = [];\n ciphers.forEach(cipherResponse => {\n const cipherData = new CipherData(cipherResponse);\n const cipher = new Cipher(cipherData);\n promises.push(cipher.decrypt(oldEncKey).then(c => decCiphers.push(c)));\n });\n\n await Promise.all(promises);\n decCiphers.sort(this.cipherService.getLocaleSortingFunction());\n\n return decCiphers;\n }\n}\n","
\n

{{'vault' | i18n}}

\n
\n
\n \n \n \n \n \n \n \n \n \n
\n \n \n {{c.name}}\n \n \n {{'shared' | i18n}}\n \n \n \n {{'attachments' | i18n}}\n \n
\n {{c.subTitle}}\n
\n \n
\n
\n
\n\n\n","import { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class EncryptedObject {\n iv: ArrayBuffer;\n data: ArrayBuffer;\n mac: ArrayBuffer;\n key: SymmetricCryptoKey;\n}\n","export class EnvironmentUrls {\n base: string;\n api: string;\n identity: string;\n events: string;\n}\n","export class GeneratedPasswordHistory {\n password: string;\n date: number;\n\n constructor(password: string, date: number) {\n this.password = password;\n this.date = date;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { AttachmentView } from 'jslib/models/view/attachmentView';\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from 'jslib/angular/components/attachments.component';\n\n@Component({\n selector: 'emergency-access-attachments',\n templateUrl: '../vault/attachments.component.html',\n})\nexport class EmergencyAccessAttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = true;\n canAccessAttachments = true;\n\n constructor(cipherService: CipherService, i18nService: I18nService,\n cryptoService: CryptoService, userService: UserService,\n platformUtilsService: PlatformUtilsService) {\n super(cipherService, i18nService, cryptoService, userService, platformUtilsService, window);\n }\n\n protected async init() {\n // Do nothing since cipher is already decoded\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return false;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { AuditService } from 'jslib/abstractions/audit.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { EventService } from 'jslib/abstractions/event.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { TotpService } from 'jslib/abstractions/totp.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { Cipher } from 'jslib/models/domain/cipher';\n\nimport { AddEditComponent as BaseAddEditComponent } from '../vault/add-edit.component';\n\n@Component({\n selector: 'app-org-vault-add-edit',\n templateUrl: '../vault/add-edit.component.html',\n})\nexport class EmergencyAddEditComponent extends BaseAddEditComponent {\n originalCipher: Cipher = null;\n viewOnly = true;\n\n constructor(cipherService: CipherService, folderService: FolderService,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n auditService: AuditService, stateService: StateService,\n userService: UserService, collectionService: CollectionService,\n totpService: TotpService, passwordGenerationService: PasswordGenerationService,\n messagingService: MessagingService, eventService: EventService, policyService: PolicyService) {\n super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, totpService, passwordGenerationService, messagingService,\n eventService, policyService);\n }\n\n async load() {\n this.title = this.i18nService.t('viewItem');\n }\n\n protected async loadCipher() {\n return Promise.resolve(this.originalCipher);\n }\n}\n","import { Component, ComponentFactoryResolver, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { EmergencyAccessStatusType } from 'jslib/enums/emergencyAccessStatusType';\nimport { EmergencyAccessType } from 'jslib/enums/emergencyAccessType';\nimport { Utils } from 'jslib/misc/utils';\nimport { EmergencyAccessConfirmRequest } from 'jslib/models/request/emergencyAccessConfirmRequest';\nimport { EmergencyAccessGranteeDetailsResponse, EmergencyAccessGrantorDetailsResponse } from 'jslib/models/response/emergencyAccessResponse';\nimport { ConstantsService } from 'jslib/services/constants.service';\n\nimport { ModalComponent } from '../modal.component';\nimport { EmergencyAccessAddEditComponent } from './emergency-access-add-edit.component';\nimport { EmergencyAccessConfirmComponent } from './emergency-access-confirm.component';\nimport { EmergencyAccessTakeoverComponent } from './emergency-access-takeover.component';\n\n@Component({\n selector: 'emergency-access',\n templateUrl: 'emergency-access.component.html',\n})\nexport class EmergencyAccessComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('takeoverTemplate', { read: ViewContainerRef, static: true}) takeoverModalRef: ViewContainerRef;\n @ViewChild('confirmTemplate', { read: ViewContainerRef, static: true }) confirmModalRef: ViewContainerRef;\n\n canAccessPremium: boolean;\n trustedContacts: EmergencyAccessGranteeDetailsResponse[];\n grantedContacts: EmergencyAccessGrantorDetailsResponse[];\n emergencyAccessType = EmergencyAccessType;\n emergencyAccessStatusType = EmergencyAccessStatusType;\n actionPromise: Promise;\n isOrganizationOwner: boolean;\n\n private modal: ModalComponent = null;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private componentFactoryResolver: ComponentFactoryResolver,\n private platformUtilsService: PlatformUtilsService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private storageService: StorageService, private userService: UserService,\n private messagingService: MessagingService) { }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n const orgs = await this.userService.getAllOrganizations();\n this.isOrganizationOwner = orgs.some(o => o.isOwner);\n this.load();\n }\n\n async load() {\n this.trustedContacts = (await this.apiService.getEmergencyAccessTrusted()).data;\n this.grantedContacts = (await this.apiService.getEmergencyAccessGranted()).data;\n }\n\n async premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n\n edit(details: EmergencyAccessGranteeDetailsResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.addEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EmergencyAccessAddEditComponent, this.addEditModalRef);\n\n childComponent.name = details?.name ?? details?.email;\n childComponent.emergencyAccessId = details?.id;\n childComponent.readOnly = !this.canAccessPremium;\n childComponent.onSaved.subscribe(() => {\n this.modal.close();\n this.load();\n });\n childComponent.onDeleted.subscribe(() => {\n this.modal.close();\n this.remove(details);\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n invite() {\n this.edit(null);\n }\n\n async reinvite(contact: EmergencyAccessGranteeDetailsResponse) {\n if (this.actionPromise != null) {\n return;\n }\n this.actionPromise = this.apiService.postEmergencyAccessReinvite(contact.id);\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenReinvited', contact.email));\n this.actionPromise = null;\n }\n\n async confirm(contact: EmergencyAccessGranteeDetailsResponse) {\n function updateUser() {\n contact.status = EmergencyAccessStatusType.Confirmed;\n }\n\n if (this.actionPromise != null) {\n return;\n }\n\n const autoConfirm = await this.storageService.get(ConstantsService.autoConfirmFingerprints);\n if (autoConfirm == null || !autoConfirm) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.confirmModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EmergencyAccessConfirmComponent, this.confirmModalRef);\n\n childComponent.name = contact?.name ?? contact?.email;\n childComponent.emergencyAccessId = contact.id;\n childComponent.userId = contact?.granteeId;\n childComponent.onConfirmed.subscribe(async () => {\n this.modal.close();\n\n childComponent.formPromise = this.doConfirmation(contact);\n await childComponent.formPromise;\n\n updateUser();\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenConfirmed', contact.name || contact.email));\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n return;\n }\n\n this.actionPromise = this.doConfirmation(contact);\n await this.actionPromise;\n updateUser();\n\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenConfirmed', contact.name || contact.email));\n this.actionPromise = null;\n }\n\n async remove(details: EmergencyAccessGranteeDetailsResponse | EmergencyAccessGrantorDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeUserConfirmation'), details.name || details.email,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteEmergencyAccess(details.id);\n this.toasterService.popAsync('success', null, this.i18nService.t('removedUserId', details.name || details.email));\n\n if (details instanceof EmergencyAccessGranteeDetailsResponse) {\n this.removeGrantee(details);\n } else {\n this.removeGrantor(details);\n }\n } catch { }\n }\n\n async requestAccess(details: EmergencyAccessGrantorDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('requestAccessConfirmation', details.waitTimeDays.toString()),\n details.name || details.email,\n this.i18nService.t('requestAccess'),\n this.i18nService.t('no'),\n 'warning',\n );\n\n if (!confirmed) {\n return false;\n }\n\n await this.apiService.postEmergencyAccessInitiate(details.id);\n\n details.status = EmergencyAccessStatusType.RecoveryInitiated;\n this.toasterService.popAsync('success', null, this.i18nService.t('requestSent', details.name || details.email));\n }\n\n async approve(details: EmergencyAccessGranteeDetailsResponse) {\n const type = this.i18nService.t(details.type === EmergencyAccessType.View ? 'view' : 'takeover');\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('approveAccessConfirmation', details.name || details.email, type),\n details.name || details.email,\n this.i18nService.t('approve'),\n this.i18nService.t('no'),\n 'warning',\n );\n\n if (!confirmed) {\n return false;\n }\n\n await this.apiService.postEmergencyAccessApprove(details.id);\n details.status = EmergencyAccessStatusType.RecoveryApproved;\n\n this.toasterService.popAsync('success', null, this.i18nService.t('emergencyApproved', details.name || details.email));\n }\n\n async reject(details: EmergencyAccessGranteeDetailsResponse) {\n await this.apiService.postEmergencyAccessReject(details.id);\n details.status = EmergencyAccessStatusType.Confirmed;\n\n this.toasterService.popAsync('success', null, this.i18nService.t('emergencyRejected', details.name || details.email));\n }\n\n async takeover(details: EmergencyAccessGrantorDetailsResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.addEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EmergencyAccessTakeoverComponent, this.takeoverModalRef);\n\n childComponent.name = details != null ? details.name || details.email : null;\n childComponent.email = details.email;\n childComponent.emergencyAccessId = details != null ? details.id : null;\n\n childComponent.onDone.subscribe(() => {\n this.modal.close();\n this.toasterService.popAsync('success', null, this.i18nService.t('passwordResetFor', details.name || details.email));\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n private removeGrantee(details: EmergencyAccessGranteeDetailsResponse) {\n const index = this.trustedContacts.indexOf(details);\n if (index > -1) {\n this.trustedContacts.splice(index, 1);\n }\n }\n\n private removeGrantor(details: EmergencyAccessGrantorDetailsResponse) {\n const index = this.grantedContacts.indexOf(details);\n if (index > -1) {\n this.grantedContacts.splice(index, 1);\n }\n }\n\n // Encrypt the master password hash using the grantees public key, and send it to bitwarden for escrow.\n private async doConfirmation(details: EmergencyAccessGranteeDetailsResponse) {\n const encKey = await this.cryptoService.getEncKey();\n const publicKeyResponse = await this.apiService.getUserPublicKey(details.granteeId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n try {\n // tslint:disable-next-line\n console.log('User\\'s fingerprint: ' +\n (await this.cryptoService.getFingerprint(details.granteeId, publicKey.buffer)).join('-'));\n } catch { }\n\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n const request = new EmergencyAccessConfirmRequest();\n request.key = encryptedKey.encryptedString;\n await this.apiService.postEmergencyAccessConfirm(details.id, request);\n }\n}\n","
\n

{{'emergencyAccess' | i18n}}

\n
\n

\n {{'emergencyAccessDesc' | i18n}}\n \n {{'learnMore' | i18n}}.\n \n

\n\n

\n {{'warning' | i18n }}: {{'emergencyAccessOwnerWarning' | i18n}}\n

\n\n
\n

\n {{'trustedEmergencyContacts' | i18n}}\n \n {{'premium' | i18n}}\n \n

\n
\n \n
\n
\n\n\n \n \n \n \n \n \n \n
\n \n \n {{c.email}}\n {{'invited' | i18n}}\n {{'accepted' | i18n}}\n {{'emergencyAccessRecoveryInitiated' | i18n}}\n {{'emergencyAccessRecoveryApproved' | i18n}}\n \n {{'view' | i18n}}\n {{'takeover' | i18n}}\n\n {{c.name}}\n \n \n
\n\n

{{'noTrustedContacts' | i18n}}

\n\n
\n

{{'designatedEmergencyContacts' | i18n}}

\n
\n\n\n \n \n \n \n \n \n \n
\n \n \n {{c.email}}\n {{'invited' | i18n}}\n {{'accepted' | i18n}}\n {{'emergencyAccessRecoveryInitiated' | i18n}}\n {{'emergencyAccessRecoveryApproved' | i18n}}\n \n {{'view' | i18n}}\n {{'takeover' | i18n}}\n\n {{c.name}}\n \n \n
\n\n

{{'noGrantedAccess' | i18n}}

\n\n\n\n\n","export enum EmergencyAccessType\n{\n View = 0,\n Takeover = 1,\n}\n","import { EmergencyAccessStatusType } from '../../enums/emergencyAccessStatusType';\nimport { EmergencyAccessType } from '../../enums/emergencyAccessType';\nimport { KdfType } from '../../enums/kdfType';\nimport { BaseResponse } from './baseResponse';\nimport { CipherResponse } from './cipherResponse';\n\nexport class EmergencyAccessGranteeDetailsResponse extends BaseResponse {\n id: string;\n granteeId: string;\n name: string;\n email: string;\n type: EmergencyAccessType;\n status: EmergencyAccessStatusType;\n waitTimeDays: number;\n creationDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.granteeId = this.getResponseProperty('GranteeId');\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.type = this.getResponseProperty('Type');\n this.status = this.getResponseProperty('Status');\n this.waitTimeDays = this.getResponseProperty('WaitTimeDays');\n this.creationDate = this.getResponseProperty('CreationDate');\n }\n}\n\nexport class EmergencyAccessGrantorDetailsResponse extends BaseResponse {\n id: string;\n grantorId: string;\n name: string;\n email: string;\n type: EmergencyAccessType;\n status: EmergencyAccessStatusType;\n waitTimeDays: number;\n creationDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.grantorId = this.getResponseProperty('GrantorId');\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.type = this.getResponseProperty('Type');\n this.status = this.getResponseProperty('Status');\n this.waitTimeDays = this.getResponseProperty('WaitTimeDays');\n this.creationDate = this.getResponseProperty('CreationDate');\n }\n}\n\nexport class EmergencyAccessTakeoverResponse extends BaseResponse {\n keyEncrypted: string;\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n\n this.keyEncrypted = this.getResponseProperty('KeyEncrypted');\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n }\n}\n\nexport class EmergencyAccessViewResponse extends BaseResponse {\n keyEncrypted: string;\n ciphers: CipherResponse[] = [];\n\n constructor(response: any) {\n super(response);\n\n this.keyEncrypted = this.getResponseProperty('KeyEncrypted');\n\n const ciphers = this.getResponseProperty('Ciphers');\n if (ciphers != null) {\n this.ciphers = ciphers.map((c: any) => new CipherResponse(c));\n }\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { EmergencyAccessType } from 'jslib/enums/emergencyAccessType';\nimport { EmergencyAccessInviteRequest } from 'jslib/models/request/emergencyAccessInviteRequest';\nimport { EmergencyAccessUpdateRequest } from 'jslib/models/request/emergencyAccessUpdateRequest';\n\n@Component({\n selector: 'emergency-access-add-edit',\n templateUrl: 'emergency-access-add-edit.component.html',\n})\nexport class EmergencyAccessAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() emergencyAccessId: string;\n @Output() onSaved = new EventEmitter();\n @Output() onDeleted = new EventEmitter();\n\n loading = true;\n readOnly: boolean = false;\n editMode: boolean = false;\n title: string;\n email: string;\n type: EmergencyAccessType = EmergencyAccessType.View;\n\n formPromise: Promise;\n\n emergencyAccessType = EmergencyAccessType;\n waitTimes: { name: string; value: number; }[];\n waitTime: number;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) { }\n\n async ngOnInit() {\n this.editMode = this.loading = this.emergencyAccessId != null;\n\n this.waitTimes = [\n { name: this.i18nService.t('oneDay'), value: 1 },\n { name: this.i18nService.t('days', '2'), value: 2 },\n { name: this.i18nService.t('days', '7'), value: 7 },\n { name: this.i18nService.t('days', '14'), value: 14 },\n { name: this.i18nService.t('days', '30'), value: 30 },\n { name: this.i18nService.t('days', '90'), value: 90 },\n ];\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editEmergencyContact');\n try {\n const emergencyAccess = await this.apiService.getEmergencyAccess(this.emergencyAccessId);\n this.type = emergencyAccess.type;\n this.waitTime = emergencyAccess.waitTimeDays;\n } catch { }\n } else {\n this.title = this.i18nService.t('inviteEmergencyContact');\n this.waitTime = this.waitTimes[2].value;\n }\n\n this.loading = false;\n }\n\n async submit() {\n try {\n if (this.editMode) {\n const request = new EmergencyAccessUpdateRequest();\n request.type = this.type;\n request.waitTimeDays = this.waitTime;\n\n this.formPromise = this.apiService.putEmergencyAccess(this.emergencyAccessId, request);\n } else {\n const request = new EmergencyAccessInviteRequest();\n request.email = this.email.trim();\n request.type = this.type;\n request.waitTimeDays = this.waitTime;\n\n this.formPromise = this.apiService.postEmergencyAccessInvite(request);\n }\n\n await this.formPromise;\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedUserId' : 'invitedUsers', this.name));\n this.onSaved.emit();\n } catch { }\n }\n\n async delete() {\n this.onDeleted.emit();\n }\n}\n","
\n
\n
\n
\n

\n {{'premium' | i18n}}\n {{title}}\n {{name}}\n

\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n \n

{{'inviteEmergencyContactDesc' | i18n}}

\n
\n \n \n
\n
\n

\n {{'userAccess' | i18n}}\n \n \n \n

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n {{'waitTimeDesc' | i18n}}\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ConstantsService } from 'jslib/services/constants.service';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\n\nimport { Utils } from 'jslib/misc/utils';\n\n@Component({\n selector: 'emergency-access-confirm',\n templateUrl: 'emergency-access-confirm.component.html',\n})\nexport class EmergencyAccessConfirmComponent implements OnInit {\n @Input() name: string;\n @Input() userId: string;\n @Input() emergencyAccessId: string;\n @Input() formPromise: Promise;\n @Output() onConfirmed = new EventEmitter();\n\n dontAskAgain = false;\n loading = true;\n fingerprint: string;\n\n constructor(private apiService: ApiService, private cryptoService: CryptoService,\n private storageService: StorageService) { }\n\n async ngOnInit() {\n try {\n const publicKeyResponse = await this.apiService.getUserPublicKey(this.userId);\n if (publicKeyResponse != null) {\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n const fingerprint = await this.cryptoService.getFingerprint(this.userId, publicKey.buffer);\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join('-');\n }\n }\n } catch { }\n this.loading = false;\n }\n\n async submit() {\n if (this.loading) {\n return;\n }\n\n if (this.dontAskAgain) {\n await this.storageService.save(ConstantsService.autoConfirmFingerprints, true);\n }\n\n try {\n this.onConfirmed.emit();\n } catch { }\n }\n}\n","
\n
\n
\n
\n

\n {{'confirmUser' | i18n}}\n {{name}}\n

\n \n
\n
\n

\n {{'fingerprintEnsureIntegrityVerify' | i18n}}\n \n {{'learnMore' | i18n}}\n

\n

{{fingerprint}}

\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { UserService } from 'jslib/abstractions/user.service';\nimport { ChangePasswordComponent } from 'jslib/angular/components/change-password.component';\n\nimport { KdfType } from 'jslib/enums/kdfType';\nimport { PolicyData } from 'jslib/models/data/policyData';\nimport { Policy } from 'jslib/models/domain/policy';\nimport { SymmetricCryptoKey } from 'jslib/models/domain/symmetricCryptoKey';\nimport { EmergencyAccessPasswordRequest } from 'jslib/models/request/emergencyAccessPasswordRequest';\nimport { ListResponse } from 'jslib/models/response';\nimport { EmergencyAccessTakeoverResponse } from 'jslib/models/response/emergencyAccessResponse';\nimport { PolicyResponse } from 'jslib/models/response/policyResponse';\n\n@Component({\n selector: 'emergency-access-takeover',\n templateUrl: 'emergency-access-takeover.component.html',\n})\nexport class EmergencyAccessTakeoverComponent extends ChangePasswordComponent implements OnInit {\n @Output() onDone = new EventEmitter();\n @Input() emergencyAccessId: string;\n @Input() name: string;\n @Input() email: string;\n @Input() kdf: KdfType;\n @Input() kdfIterations: number;\n\n formPromise: Promise;\n\n constructor(i18nService: I18nService, cryptoService: CryptoService,\n messagingService: MessagingService, userService: UserService,\n passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService,\n private apiService: ApiService, private toasterService: ToasterService) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService);\n }\n\n async ngOnInit() {\n const response = await this.apiService.getEmergencyGrantorPolicies(this.emergencyAccessId);\n if (response.data != null && response.data.length > 0) {\n const policies = response.data.map((policyResponse: PolicyResponse) => new Policy(new PolicyData(policyResponse)));\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions(policies);\n }\n }\n\n async submit() {\n if (!await this.strongPassword()) {\n return;\n }\n\n const takeoverResponse = await this.apiService.postEmergencyAccessTakeover(this.emergencyAccessId);\n\n const oldKeyBuffer = await this.cryptoService.rsaDecrypt(takeoverResponse.keyEncrypted);\n const oldEncKey = new SymmetricCryptoKey(oldKeyBuffer);\n\n if (oldEncKey == null) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'), this.i18nService.t('unexpectedError'));\n return;\n }\n\n const key = await this.cryptoService.makeKey(this.masterPassword, this.email, takeoverResponse.kdf, takeoverResponse.kdfIterations);\n const masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n\n const encKey = await this.cryptoService.remakeEncKey(key, oldEncKey);\n\n const request = new EmergencyAccessPasswordRequest();\n request.newMasterPasswordHash = masterPasswordHash;\n request.key = encKey[1].encryptedString;\n\n this.apiService.postEmergencyAccessPassword(this.emergencyAccessId, request);\n\n try {\n this.onDone.emit();\n } catch { }\n }\n}\n","
\n
\n
\n
\n

\n {{'takeover' | i18n}}\n {{name}}\n

\n \n
\n
\n {{'loggedOutWarning' | i18n}}\n \n {{'masterPasswordPolicyInEffect' | i18n}}\n
    \n
  • 0\">\n {{'policyInEffectMinComplexity' | i18n : getPasswordScoreAlertDisplay()}}\n
  • \n
  • 0\">\n {{'policyInEffectMinLength' | i18n : enforcedPolicyOptions?.minLength.toString()}}\n
  • \n
  • \n {{'policyInEffectUppercase' | i18n}}
  • \n
  • \n {{'policyInEffectLowercase' | i18n}}
  • \n
  • \n {{'policyInEffectNumbers' | i18n}}
  • \n
  • \n {{'policyInEffectSpecial' | i18n : '!@#$%^&*'}}
  • \n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n","import { DeviceType } from '../enums/deviceType';\nimport { PolicyType } from '../enums/policyType';\n\nimport { ApiService as ApiServiceAbstraction } from '../abstractions/api.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { TokenService } from '../abstractions/token.service';\n\nimport { EnvironmentUrls } from '../models/domain/environmentUrls';\n\nimport { BitPayInvoiceRequest } from '../models/request/bitPayInvoiceRequest';\nimport { CipherBulkDeleteRequest } from '../models/request/cipherBulkDeleteRequest';\nimport { CipherBulkMoveRequest } from '../models/request/cipherBulkMoveRequest';\nimport { CipherBulkShareRequest } from '../models/request/cipherBulkShareRequest';\nimport { CipherCollectionsRequest } from '../models/request/cipherCollectionsRequest';\nimport { CipherCreateRequest } from '../models/request/cipherCreateRequest';\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CipherShareRequest } from '../models/request/cipherShareRequest';\nimport { CollectionRequest } from '../models/request/collectionRequest';\nimport { DeleteRecoverRequest } from '../models/request/deleteRecoverRequest';\nimport { EmailRequest } from '../models/request/emailRequest';\nimport { EmailTokenRequest } from '../models/request/emailTokenRequest';\nimport { EmergencyAccessAcceptRequest } from '../models/request/emergencyAccessAcceptRequest';\nimport { EmergencyAccessConfirmRequest } from '../models/request/emergencyAccessConfirmRequest';\nimport { EmergencyAccessInviteRequest } from '../models/request/emergencyAccessInviteRequest';\nimport { EmergencyAccessPasswordRequest } from '../models/request/emergencyAccessPasswordRequest';\nimport { EmergencyAccessUpdateRequest } from '../models/request/emergencyAccessUpdateRequest';\nimport { EventRequest } from '../models/request/eventRequest';\nimport { FolderRequest } from '../models/request/folderRequest';\nimport { GroupRequest } from '../models/request/groupRequest';\nimport { IapCheckRequest } from '../models/request/iapCheckRequest';\nimport { ImportCiphersRequest } from '../models/request/importCiphersRequest';\nimport { ImportDirectoryRequest } from '../models/request/importDirectoryRequest';\nimport { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest';\nimport { KdfRequest } from '../models/request/kdfRequest';\nimport { KeysRequest } from '../models/request/keysRequest';\nimport { OrganizationCreateRequest } from '../models/request/organizationCreateRequest';\nimport { OrganizationTaxInfoUpdateRequest } from '../models/request/organizationTaxInfoUpdateRequest';\nimport { OrganizationUpdateRequest } from '../models/request/organizationUpdateRequest';\nimport { OrganizationUpgradeRequest } from '../models/request/organizationUpgradeRequest';\nimport { OrganizationUserAcceptRequest } from '../models/request/organizationUserAcceptRequest';\nimport { OrganizationUserConfirmRequest } from '../models/request/organizationUserConfirmRequest';\nimport { OrganizationUserInviteRequest } from '../models/request/organizationUserInviteRequest';\nimport { OrganizationUserUpdateGroupsRequest } from '../models/request/organizationUserUpdateGroupsRequest';\nimport { OrganizationUserUpdateRequest } from '../models/request/organizationUserUpdateRequest';\nimport { PasswordHintRequest } from '../models/request/passwordHintRequest';\nimport { PasswordRequest } from '../models/request/passwordRequest';\nimport { PasswordVerificationRequest } from '../models/request/passwordVerificationRequest';\nimport { PaymentRequest } from '../models/request/paymentRequest';\nimport { PolicyRequest } from '../models/request/policyRequest';\nimport { PreloginRequest } from '../models/request/preloginRequest';\nimport { RegisterRequest } from '../models/request/registerRequest';\nimport { SeatRequest } from '../models/request/seatRequest';\nimport { SelectionReadOnlyRequest } from '../models/request/selectionReadOnlyRequest';\nimport { SendAccessRequest } from '../models/request/sendAccessRequest';\nimport { SendRequest } from '../models/request/sendRequest';\nimport { SetPasswordRequest } from '../models/request/setPasswordRequest';\nimport { StorageRequest } from '../models/request/storageRequest';\nimport { TaxInfoUpdateRequest } from '../models/request/taxInfoUpdateRequest';\nimport { TokenRequest } from '../models/request/tokenRequest';\nimport { TwoFactorEmailRequest } from '../models/request/twoFactorEmailRequest';\nimport { TwoFactorProviderRequest } from '../models/request/twoFactorProviderRequest';\nimport { TwoFactorRecoveryRequest } from '../models/request/twoFactorRecoveryRequest';\nimport { UpdateDomainsRequest } from '../models/request/updateDomainsRequest';\nimport { UpdateKeyRequest } from '../models/request/updateKeyRequest';\nimport { UpdateProfileRequest } from '../models/request/updateProfileRequest';\nimport { UpdateTwoFactorAuthenticatorRequest } from '../models/request/updateTwoFactorAuthenticatorRequest';\nimport { UpdateTwoFactorDuoRequest } from '../models/request/updateTwoFactorDuoRequest';\nimport { UpdateTwoFactorEmailRequest } from '../models/request/updateTwoFactorEmailRequest';\nimport { UpdateTwoFactorU2fDeleteRequest } from '../models/request/updateTwoFactorU2fDeleteRequest';\nimport { UpdateTwoFactorU2fRequest } from '../models/request/updateTwoFactorU2fRequest';\nimport { UpdateTwoFactorYubioOtpRequest } from '../models/request/updateTwoFactorYubioOtpRequest';\nimport { VerifyBankRequest } from '../models/request/verifyBankRequest';\nimport { VerifyDeleteRecoverRequest } from '../models/request/verifyDeleteRecoverRequest';\nimport { VerifyEmailRequest } from '../models/request/verifyEmailRequest';\n\nimport { Utils } from '../misc/utils';\nimport { ApiKeyResponse } from '../models/response/apiKeyResponse';\nimport { BillingResponse } from '../models/response/billingResponse';\nimport { BreachAccountResponse } from '../models/response/breachAccountResponse';\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport {\n CollectionGroupDetailsResponse,\n CollectionResponse,\n} from '../models/response/collectionResponse';\nimport { DomainsResponse } from '../models/response/domainsResponse';\nimport {\n EmergencyAccessGranteeDetailsResponse,\n EmergencyAccessGrantorDetailsResponse,\n EmergencyAccessTakeoverResponse,\n EmergencyAccessViewResponse\n} from '../models/response/emergencyAccessResponse';\nimport { ErrorResponse } from '../models/response/errorResponse';\nimport { EventResponse } from '../models/response/eventResponse';\nimport { FolderResponse } from '../models/response/folderResponse';\nimport {\n GroupDetailsResponse,\n GroupResponse,\n} from '../models/response/groupResponse';\nimport { IdentityTokenResponse } from '../models/response/identityTokenResponse';\nimport { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse';\nimport { ListResponse } from '../models/response/listResponse';\nimport { OrganizationResponse } from '../models/response/organizationResponse';\nimport { OrganizationSubscriptionResponse } from '../models/response/organizationSubscriptionResponse';\nimport {\n OrganizationUserDetailsResponse,\n OrganizationUserUserDetailsResponse,\n} from '../models/response/organizationUserResponse';\nimport { PaymentResponse } from '../models/response/paymentResponse';\nimport { PlanResponse } from '../models/response/planResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { PreloginResponse } from '../models/response/preloginResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { SelectionReadOnlyResponse } from '../models/response/selectionReadOnlyResponse';\nimport { SendAccessResponse } from '../models/response/sendAccessResponse';\nimport { SendFileDownloadDataResponse } from '../models/response/sendFileDownloadDataResponse';\nimport { SendResponse } from '../models/response/sendResponse';\nimport { SubscriptionResponse } from '../models/response/subscriptionResponse';\nimport { SyncResponse } from '../models/response/syncResponse';\nimport { TaxInfoResponse } from '../models/response/taxInfoResponse';\nimport { TaxRateResponse } from '../models/response/taxRateResponse';\nimport { TwoFactorAuthenticatorResponse } from '../models/response/twoFactorAuthenticatorResponse';\nimport { TwoFactorDuoResponse } from '../models/response/twoFactorDuoResponse';\nimport { TwoFactorEmailResponse } from '../models/response/twoFactorEmailResponse';\nimport { TwoFactorProviderResponse } from '../models/response/twoFactorProviderResponse';\nimport { TwoFactorRecoverResponse } from '../models/response/twoFactorRescoverResponse';\nimport {\n ChallengeResponse,\n TwoFactorU2fResponse,\n} from '../models/response/twoFactorU2fResponse';\nimport { TwoFactorYubiKeyResponse } from '../models/response/twoFactorYubiKeyResponse';\nimport { UserKeyResponse } from '../models/response/userKeyResponse';\n\nimport { SendAccessView } from '../models/view/sendAccessView';\n\nexport class ApiService implements ApiServiceAbstraction {\n urlsSet: boolean = false;\n apiBaseUrl: string;\n identityBaseUrl: string;\n eventsBaseUrl: string;\n\n private device: DeviceType;\n private deviceType: string;\n private isWebClient = false;\n private isDesktopClient = false;\n private usingBaseUrl = false;\n\n constructor(private tokenService: TokenService, private platformUtilsService: PlatformUtilsService,\n private logoutCallback: (expired: boolean) => Promise, private customUserAgent: string = null) {\n this.device = platformUtilsService.getDevice();\n this.deviceType = this.device.toString();\n this.isWebClient = this.device === DeviceType.IEBrowser || this.device === DeviceType.ChromeBrowser ||\n this.device === DeviceType.EdgeBrowser || this.device === DeviceType.FirefoxBrowser ||\n this.device === DeviceType.OperaBrowser || this.device === DeviceType.SafariBrowser ||\n this.device === DeviceType.UnknownBrowser || this.device === DeviceType.VivaldiBrowser;\n this.isDesktopClient = this.device === DeviceType.WindowsDesktop || this.device === DeviceType.MacOsDesktop ||\n this.device === DeviceType.LinuxDesktop;\n }\n\n setUrls(urls: EnvironmentUrls): void {\n this.urlsSet = true;\n\n if (urls.base != null) {\n this.usingBaseUrl = true;\n this.apiBaseUrl = urls.base + '/api';\n this.identityBaseUrl = urls.base + '/identity';\n this.eventsBaseUrl = urls.base + '/events';\n return;\n }\n\n this.apiBaseUrl = urls.api;\n this.identityBaseUrl = urls.identity;\n this.eventsBaseUrl = urls.events;\n\n // Production\n if (this.apiBaseUrl == null) {\n this.apiBaseUrl = 'https://api.bitwarden.com';\n }\n if (this.identityBaseUrl == null) {\n this.identityBaseUrl = 'https://identity.bitwarden.com';\n }\n if (this.eventsBaseUrl == null) {\n this.eventsBaseUrl = 'https://events.bitwarden.com';\n }\n }\n\n // Auth APIs\n\n async postIdentityToken(request: TokenRequest): Promise {\n const headers = new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n 'Accept': 'application/json',\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n const response = await this.fetch(new Request(this.identityBaseUrl + '/connect/token', {\n body: this.qsStringify(request.toIdentityToken(request.clientId ?? this.platformUtilsService.identityClientId)),\n credentials: this.getCredentials(),\n cache: 'no-store',\n headers: headers,\n method: 'POST',\n }));\n\n let responseJson: any = null;\n if (this.isJsonResponse(response)) {\n responseJson = await response.json();\n }\n\n if (responseJson != null) {\n if (response.status === 200) {\n return new IdentityTokenResponse(responseJson);\n } else if (response.status === 400 && responseJson.TwoFactorProviders2 &&\n Object.keys(responseJson.TwoFactorProviders2).length) {\n await this.tokenService.clearTwoFactorToken(request.email);\n return new IdentityTwoFactorResponse(responseJson);\n }\n }\n\n return Promise.reject(new ErrorResponse(responseJson, response.status, true));\n }\n\n async refreshIdentityToken(): Promise {\n try {\n await this.doRefreshToken();\n } catch (e) {\n return Promise.reject(null);\n }\n }\n\n // Account APIs\n\n async getProfile(): Promise {\n const r = await this.send('GET', '/accounts/profile', null, true, true);\n return new ProfileResponse(r);\n }\n\n async getUserBilling(): Promise {\n const r = await this.send('GET', '/accounts/billing', null, true, true);\n return new BillingResponse(r);\n }\n\n async getUserSubscription(): Promise {\n const r = await this.send('GET', '/accounts/subscription', null, true, true);\n return new SubscriptionResponse(r);\n }\n\n async getTaxInfo(): Promise {\n const r = await this.send('GET', '/accounts/tax', null, true, true);\n return new TaxInfoResponse(r);\n }\n\n async putProfile(request: UpdateProfileRequest): Promise {\n const r = await this.send('PUT', '/accounts/profile', request, true, true);\n return new ProfileResponse(r);\n }\n\n putTaxInfo(request: TaxInfoUpdateRequest): Promise {\n return this.send('PUT', '/accounts/tax', request, true, false);\n }\n\n async postPrelogin(request: PreloginRequest): Promise {\n const r = await this.send('POST', '/accounts/prelogin', request, false, true);\n return new PreloginResponse(r);\n }\n\n postEmailToken(request: EmailTokenRequest): Promise {\n return this.send('POST', '/accounts/email-token', request, true, false);\n }\n\n postEmail(request: EmailRequest): Promise {\n return this.send('POST', '/accounts/email', request, true, false);\n }\n\n postPassword(request: PasswordRequest): Promise {\n return this.send('POST', '/accounts/password', request, true, false);\n }\n\n setPassword(request: SetPasswordRequest): Promise {\n return this.send('POST', '/accounts/set-password', request, true, false);\n }\n\n postSecurityStamp(request: PasswordVerificationRequest): Promise {\n return this.send('POST', '/accounts/security-stamp', request, true, false);\n }\n\n deleteAccount(request: PasswordVerificationRequest): Promise {\n return this.send('DELETE', '/accounts', request, true, false);\n }\n\n async getAccountRevisionDate(): Promise {\n const r = await this.send('GET', '/accounts/revision-date', null, true, true);\n return r as number;\n }\n\n postPasswordHint(request: PasswordHintRequest): Promise {\n return this.send('POST', '/accounts/password-hint', request, false, false);\n }\n\n postRegister(request: RegisterRequest): Promise {\n return this.send('POST', '/accounts/register', request, false, false);\n }\n\n async postPremium(data: FormData): Promise {\n const r = await this.send('POST', '/accounts/premium', data, true, true);\n return new PaymentResponse(r);\n }\n\n async postIapCheck(request: IapCheckRequest): Promise {\n return this.send('POST', '/accounts/iap-check', request, true, false);\n }\n\n postReinstatePremium(): Promise {\n return this.send('POST', '/accounts/reinstate-premium', null, true, false);\n }\n\n postCancelPremium(): Promise {\n return this.send('POST', '/accounts/cancel-premium', null, true, false);\n }\n\n async postAccountStorage(request: StorageRequest): Promise {\n const r = await this.send('POST', '/accounts/storage', request, true, true);\n return new PaymentResponse(r);\n }\n\n postAccountPayment(request: PaymentRequest): Promise {\n return this.send('POST', '/accounts/payment', request, true, false);\n }\n\n postAccountLicense(data: FormData): Promise {\n return this.send('POST', '/accounts/license', data, true, false);\n }\n\n postAccountKeys(request: KeysRequest): Promise {\n return this.send('POST', '/accounts/keys', request, true, false);\n }\n\n postAccountKey(request: UpdateKeyRequest): Promise {\n return this.send('POST', '/accounts/key', request, true, false);\n }\n\n postAccountVerifyEmail(): Promise {\n return this.send('POST', '/accounts/verify-email', null, true, false);\n }\n\n postAccountVerifyEmailToken(request: VerifyEmailRequest): Promise {\n return this.send('POST', '/accounts/verify-email-token', request, false, false);\n }\n\n postAccountVerifyPassword(request: PasswordVerificationRequest): Promise {\n return this.send('POST', '/accounts/verify-password', request, true, false);\n }\n\n postAccountRecoverDelete(request: DeleteRecoverRequest): Promise {\n return this.send('POST', '/accounts/delete-recover', request, false, false);\n }\n\n postAccountRecoverDeleteToken(request: VerifyDeleteRecoverRequest): Promise {\n return this.send('POST', '/accounts/delete-recover-token', request, false, false);\n }\n\n postAccountKdf(request: KdfRequest): Promise {\n return this.send('POST', '/accounts/kdf', request, true, false);\n }\n\n async getEnterprisePortalSignInToken(): Promise {\n const r = await this.send('GET', '/accounts/enterprise-portal-signin-token', null, true, true);\n return r as string;\n }\n\n async deleteSsoUser(organizationId: string): Promise {\n return this.send('DELETE', '/accounts/sso/' + organizationId, null, true, false);\n }\n\n async getSsoUserIdentifier(): Promise {\n return this.send('GET', '/accounts/sso/user-identifier', null, true, true);\n }\n\n async postUserApiKey(id: string, request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/accounts/api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postUserRotateApiKey(id: string, request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/accounts/rotate-api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n // Folder APIs\n\n async getFolder(id: string): Promise {\n const r = await this.send('GET', '/folders/' + id, null, true, true);\n return new FolderResponse(r);\n }\n\n async postFolder(request: FolderRequest): Promise {\n const r = await this.send('POST', '/folders', request, true, true);\n return new FolderResponse(r);\n }\n\n async putFolder(id: string, request: FolderRequest): Promise {\n const r = await this.send('PUT', '/folders/' + id, request, true, true);\n return new FolderResponse(r);\n }\n\n deleteFolder(id: string): Promise {\n return this.send('DELETE', '/folders/' + id, null, true, false);\n }\n\n // Send APIs\n\n async getSend(id: string): Promise {\n const r = await this.send('GET', '/sends/' + id, null, true, true);\n return new SendResponse(r);\n }\n\n async postSendAccess(id: string, request: SendAccessRequest, apiUrl?: string): Promise {\n const r = await this.send('POST', '/sends/access/' + id, request, false, true, apiUrl);\n return new SendAccessResponse(r);\n }\n\n\n async getSendFileDownloadData(send: SendAccessView, request: SendAccessRequest): Promise {\n const r = await this.send('POST', '/sends/' + send.id + '/access/file/' + send.file.id, request, false, true);\n return new SendFileDownloadDataResponse(r);\n }\n\n async getSends(): Promise> {\n const r = await this.send('GET', '/sends', null, true, true);\n return new ListResponse(r, SendResponse);\n }\n\n async postSend(request: SendRequest): Promise {\n const r = await this.send('POST', '/sends', request, true, true);\n return new SendResponse(r);\n }\n\n async postSendFile(data: FormData): Promise {\n const r = await this.send('POST', '/sends/file', data, true, true);\n return new SendResponse(r);\n }\n\n async putSend(id: string, request: SendRequest): Promise {\n const r = await this.send('PUT', '/sends/' + id, request, true, true);\n return new SendResponse(r);\n }\n\n async putSendRemovePassword(id: string): Promise {\n const r = await this.send('PUT', '/sends/' + id + '/remove-password', null, true, true);\n return new SendResponse(r);\n }\n\n deleteSend(id: string): Promise {\n return this.send('DELETE', '/sends/' + id, null, true, false);\n }\n\n // Cipher APIs\n\n async getCipher(id: string): Promise {\n const r = await this.send('GET', '/ciphers/' + id, null, true, true);\n return new CipherResponse(r);\n }\n\n async getCipherAdmin(id: string): Promise {\n const r = await this.send('GET', '/ciphers/' + id + '/admin', null, true, true);\n return new CipherResponse(r);\n }\n\n async getCiphersOrganization(organizationId: string): Promise> {\n const r = await this.send('GET', '/ciphers/organization-details?organizationId=' + organizationId,\n null, true, true);\n return new ListResponse(r, CipherResponse);\n }\n\n async postCipher(request: CipherRequest): Promise {\n const r = await this.send('POST', '/ciphers', request, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherCreate(request: CipherCreateRequest): Promise {\n const r = await this.send('POST', '/ciphers/create', request, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherAdmin(request: CipherCreateRequest): Promise {\n const r = await this.send('POST', '/ciphers/admin', request, true, true);\n return new CipherResponse(r);\n }\n\n async putCipher(id: string, request: CipherRequest): Promise {\n const r = await this.send('PUT', '/ciphers/' + id, request, true, true);\n return new CipherResponse(r);\n }\n\n async putCipherAdmin(id: string, request: CipherRequest): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/admin', request, true, true);\n return new CipherResponse(r);\n }\n\n deleteCipher(id: string): Promise {\n return this.send('DELETE', '/ciphers/' + id, null, true, false);\n }\n\n deleteCipherAdmin(id: string): Promise {\n return this.send('DELETE', '/ciphers/' + id + '/admin', null, true, false);\n }\n\n deleteManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send('DELETE', '/ciphers', request, true, false);\n }\n\n deleteManyCiphersAdmin(request: CipherBulkDeleteRequest): Promise {\n return this.send('DELETE', '/ciphers/admin', request, true, false);\n }\n\n putMoveCiphers(request: CipherBulkMoveRequest): Promise {\n return this.send('PUT', '/ciphers/move', request, true, false);\n }\n\n async putShareCipher(id: string, request: CipherShareRequest): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/share', request, true, true);\n return new CipherResponse(r);\n }\n\n putShareCiphers(request: CipherBulkShareRequest): Promise {\n return this.send('PUT', '/ciphers/share', request, true, false);\n }\n\n putCipherCollections(id: string, request: CipherCollectionsRequest): Promise {\n return this.send('PUT', '/ciphers/' + id + '/collections', request, true, false);\n }\n\n putCipherCollectionsAdmin(id: string, request: CipherCollectionsRequest): Promise {\n return this.send('PUT', '/ciphers/' + id + '/collections-admin', request, true, false);\n }\n\n postPurgeCiphers(request: PasswordVerificationRequest, organizationId: string = null): Promise {\n let path = '/ciphers/purge';\n if (organizationId != null) {\n path += '?organizationId=' + organizationId;\n }\n return this.send('POST', path, request, true, false);\n }\n\n postImportCiphers(request: ImportCiphersRequest): Promise {\n return this.send('POST', '/ciphers/import', request, true, false);\n }\n\n postImportOrganizationCiphers(organizationId: string, request: ImportOrganizationCiphersRequest): Promise {\n return this.send('POST', '/ciphers/import-organization?organizationId=' + organizationId, request, true, false);\n }\n\n putDeleteCipher(id: string): Promise {\n return this.send('PUT', '/ciphers/' + id + '/delete', null, true, false);\n }\n\n putDeleteCipherAdmin(id: string): Promise {\n return this.send('PUT', '/ciphers/' + id + '/delete-admin', null, true, false);\n }\n\n putDeleteManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send('PUT', '/ciphers/delete', request, true, false);\n }\n\n putDeleteManyCiphersAdmin(request: CipherBulkDeleteRequest): Promise {\n return this.send('PUT', '/ciphers/delete-admin', request, true, false);\n }\n\n async putRestoreCipher(id: string): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/restore', null, true, true);\n return new CipherResponse(r);\n }\n\n async putRestoreCipherAdmin(id: string): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/restore-admin', null, true, true);\n return new CipherResponse(r);\n }\n\n async putRestoreManyCiphers(request: CipherBulkDeleteRequest): Promise> {\n const r = await this.send('PUT', '/ciphers/restore', request, true, true);\n return new ListResponse(r, CipherResponse);\n }\n\n // Attachments APIs\n\n async postCipherAttachment(id: string, data: FormData): Promise {\n const r = await this.send('POST', '/ciphers/' + id + '/attachment', data, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherAttachmentAdmin(id: string, data: FormData): Promise {\n const r = await this.send('POST', '/ciphers/' + id + '/attachment-admin', data, true, true);\n return new CipherResponse(r);\n }\n\n deleteCipherAttachment(id: string, attachmentId: string): Promise {\n return this.send('DELETE', '/ciphers/' + id + '/attachment/' + attachmentId, null, true, false);\n }\n\n deleteCipherAttachmentAdmin(id: string, attachmentId: string): Promise {\n return this.send('DELETE', '/ciphers/' + id + '/attachment/' + attachmentId + '/admin', null, true, false);\n }\n\n postShareCipherAttachment(id: string, attachmentId: string, data: FormData,\n organizationId: string): Promise {\n return this.send('POST', '/ciphers/' + id + '/attachment/' +\n attachmentId + '/share?organizationId=' + organizationId, data, true, false);\n }\n\n // Collections APIs\n\n async getCollectionDetails(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/collections/' + id + '/details',\n null, true, true);\n return new CollectionGroupDetailsResponse(r);\n }\n\n async getUserCollections(): Promise> {\n const r = await this.send('GET', '/collections', null, true, true);\n return new ListResponse(r, CollectionResponse);\n }\n\n async getCollections(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/collections', null, true, true);\n return new ListResponse(r, CollectionResponse);\n }\n\n async getCollectionUsers(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/collections/' + id + '/users',\n null, true, true);\n return r.map((dr: any) => new SelectionReadOnlyResponse(dr));\n }\n\n async postCollection(organizationId: string, request: CollectionRequest): Promise {\n const r = await this.send('POST', '/organizations/' + organizationId + '/collections', request, true, true);\n return new CollectionResponse(r);\n }\n\n async putCollection(organizationId: string, id: string, request: CollectionRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/collections/' + id,\n request, true, true);\n return new CollectionResponse(r);\n }\n\n async putCollectionUsers(organizationId: string, id: string, request: SelectionReadOnlyRequest[]): Promise {\n await this.send('PUT', '/organizations/' + organizationId + '/collections/' + id + '/users',\n request, true, false);\n }\n\n deleteCollection(organizationId: string, id: string): Promise {\n return this.send('DELETE', '/organizations/' + organizationId + '/collections/' + id, null, true, false);\n }\n\n deleteCollectionUser(organizationId: string, id: string, organizationUserId: string): Promise {\n return this.send('DELETE',\n '/organizations/' + organizationId + '/collections/' + id + '/user/' + organizationUserId,\n null, true, false);\n }\n\n // Groups APIs\n\n async getGroupDetails(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/groups/' + id + '/details',\n null, true, true);\n return new GroupDetailsResponse(r);\n }\n\n async getGroups(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/groups', null, true, true);\n return new ListResponse(r, GroupResponse);\n }\n\n async getGroupUsers(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/groups/' + id + '/users',\n null, true, true);\n return r;\n }\n\n async postGroup(organizationId: string, request: GroupRequest): Promise {\n const r = await this.send('POST', '/organizations/' + organizationId + '/groups', request, true, true);\n return new GroupResponse(r);\n }\n\n async putGroup(organizationId: string, id: string, request: GroupRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/groups/' + id, request, true, true);\n return new GroupResponse(r);\n }\n\n async putGroupUsers(organizationId: string, id: string, request: string[]): Promise {\n await this.send('PUT', '/organizations/' + organizationId + '/groups/' + id + '/users', request, true, false);\n }\n\n deleteGroup(organizationId: string, id: string): Promise {\n return this.send('DELETE', '/organizations/' + organizationId + '/groups/' + id, null, true, false);\n }\n\n deleteGroupUser(organizationId: string, id: string, organizationUserId: string): Promise {\n return this.send('DELETE',\n '/organizations/' + organizationId + '/groups/' + id + '/user/' + organizationUserId, null, true, false);\n }\n\n // Policy APIs\n\n async getPolicy(organizationId: string, type: PolicyType): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/policies/' + type, null, true, true);\n return new PolicyResponse(r);\n }\n\n async getPolicies(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/policies', null, true, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n async getPoliciesByToken(organizationId: string, token: string, email: string, organizationUserId: string):\n Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/policies/token?' +\n 'token=' + encodeURIComponent(token) + '&email=' + encodeURIComponent(email) +\n '&organizationUserId=' + organizationUserId, null, false, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n async putPolicy(organizationId: string, type: PolicyType, request: PolicyRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/policies/' + type, request, true, true);\n return new PolicyResponse(r);\n }\n\n // Organization User APIs\n\n async getOrganizationUser(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users/' + id, null, true, true);\n return new OrganizationUserDetailsResponse(r);\n }\n\n async getOrganizationUserGroups(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users/' + id + '/groups',\n null, true, true);\n return r;\n }\n\n async getOrganizationUsers(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users', null, true, true);\n return new ListResponse(r, OrganizationUserUserDetailsResponse);\n }\n\n postOrganizationUserInvite(organizationId: string, request: OrganizationUserInviteRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/invite', request, true, false);\n }\n\n postOrganizationUserReinvite(organizationId: string, id: string): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/' + id + '/reinvite', null, true, false);\n }\n\n postOrganizationUserAccept(organizationId: string, id: string,\n request: OrganizationUserAcceptRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/' + id + '/accept', request, true, false);\n }\n\n postOrganizationUserConfirm(organizationId: string, id: string,\n request: OrganizationUserConfirmRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/' + id + '/confirm',\n request, true, false);\n }\n\n putOrganizationUser(organizationId: string, id: string, request: OrganizationUserUpdateRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + id, request, true, false);\n }\n\n putOrganizationUserGroups(organizationId: string, id: string,\n request: OrganizationUserUpdateGroupsRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + id + '/groups', request, true, false);\n }\n\n deleteOrganizationUser(organizationId: string, id: string): Promise {\n return this.send('DELETE', '/organizations/' + organizationId + '/users/' + id, null, true, false);\n }\n\n // Plan APIs\n\n async getPlans(): Promise> {\n const r = await this.send('GET', '/plans/', null, true, true);\n return new ListResponse(r, PlanResponse);\n }\n\n async postImportDirectory(organizationId: string, request: ImportDirectoryRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/import', request, true, false);\n }\n\n async getTaxRates(): Promise> {\n const r = await this.send('GET', '/plans/sales-tax-rates/', null, true, true);\n return new ListResponse(r, TaxRateResponse);\n }\n\n // Settings APIs\n\n async getSettingsDomains(): Promise {\n const r = await this.send('GET', '/settings/domains', null, true, true);\n return new DomainsResponse(r);\n }\n\n async putSettingsDomains(request: UpdateDomainsRequest): Promise {\n const r = await this.send('PUT', '/settings/domains', request, true, true);\n return new DomainsResponse(r);\n }\n\n // Sync APIs\n\n async getSync(): Promise {\n const path = this.isDesktopClient || this.isWebClient ? '/sync?excludeDomains=true' : '/sync';\n const r = await this.send('GET', path, null, true, true);\n return new SyncResponse(r);\n }\n\n // Two-factor APIs\n\n async getTwoFactorProviders(): Promise> {\n const r = await this.send('GET', '/two-factor', null, true, true);\n return new ListResponse(r, TwoFactorProviderResponse);\n }\n\n async getTwoFactorOrganizationProviders(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/two-factor', null, true, true);\n return new ListResponse(r, TwoFactorProviderResponse);\n }\n\n async getTwoFactorAuthenticator(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-authenticator', request, true, true);\n return new TwoFactorAuthenticatorResponse(r);\n }\n\n async getTwoFactorEmail(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-email', request, true, true);\n return new TwoFactorEmailResponse(r);\n }\n\n async getTwoFactorDuo(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-duo', request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async getTwoFactorOrganizationDuo(organizationId: string,\n request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/organizations/' + organizationId + '/two-factor/get-duo',\n request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async getTwoFactorYubiKey(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-yubikey', request, true, true);\n return new TwoFactorYubiKeyResponse(r);\n }\n\n async getTwoFactorU2f(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-u2f', request, true, true);\n return new TwoFactorU2fResponse(r);\n }\n\n async getTwoFactorU2fChallenge(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-u2f-challenge', request, true, true);\n return new ChallengeResponse(r);\n }\n\n async getTwoFactorRecover(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-recover', request, true, true);\n return new TwoFactorRecoverResponse(r);\n }\n\n async putTwoFactorAuthenticator(\n request: UpdateTwoFactorAuthenticatorRequest): Promise {\n const r = await this.send('PUT', '/two-factor/authenticator', request, true, true);\n return new TwoFactorAuthenticatorResponse(r);\n }\n\n async putTwoFactorEmail(request: UpdateTwoFactorEmailRequest): Promise {\n const r = await this.send('PUT', '/two-factor/email', request, true, true);\n return new TwoFactorEmailResponse(r);\n }\n\n async putTwoFactorDuo(request: UpdateTwoFactorDuoRequest): Promise {\n const r = await this.send('PUT', '/two-factor/duo', request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async putTwoFactorOrganizationDuo(organizationId: string,\n request: UpdateTwoFactorDuoRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/two-factor/duo', request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async putTwoFactorYubiKey(request: UpdateTwoFactorYubioOtpRequest): Promise {\n const r = await this.send('PUT', '/two-factor/yubikey', request, true, true);\n return new TwoFactorYubiKeyResponse(r);\n }\n\n async putTwoFactorU2f(request: UpdateTwoFactorU2fRequest): Promise {\n const r = await this.send('PUT', '/two-factor/u2f', request, true, true);\n return new TwoFactorU2fResponse(r);\n }\n\n async deleteTwoFactorU2f(request: UpdateTwoFactorU2fDeleteRequest): Promise {\n const r = await this.send('DELETE', '/two-factor/u2f', request, true, true);\n return new TwoFactorU2fResponse(r);\n }\n\n async putTwoFactorDisable(request: TwoFactorProviderRequest): Promise {\n const r = await this.send('PUT', '/two-factor/disable', request, true, true);\n return new TwoFactorProviderResponse(r);\n }\n\n async putTwoFactorOrganizationDisable(organizationId: string,\n request: TwoFactorProviderRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/two-factor/disable',\n request, true, true);\n return new TwoFactorProviderResponse(r);\n }\n\n postTwoFactorRecover(request: TwoFactorRecoveryRequest): Promise {\n return this.send('POST', '/two-factor/recover', request, false, false);\n }\n\n postTwoFactorEmailSetup(request: TwoFactorEmailRequest): Promise {\n return this.send('POST', '/two-factor/send-email', request, true, false);\n }\n\n postTwoFactorEmail(request: TwoFactorEmailRequest): Promise {\n return this.send('POST', '/two-factor/send-email-login', request, false, false);\n }\n\n // Emergency Access APIs\n\n async getEmergencyAccessTrusted(): Promise> {\n const r = await this.send('GET', '/emergency-access/trusted', null, true, true);\n return new ListResponse(r, EmergencyAccessGranteeDetailsResponse);\n }\n\n async getEmergencyAccessGranted(): Promise> {\n const r = await this.send('GET', '/emergency-access/granted', null, true, true);\n return new ListResponse(r, EmergencyAccessGrantorDetailsResponse);\n }\n\n async getEmergencyAccess(id: string): Promise {\n const r = await this.send('GET', '/emergency-access/' + id, null, true, true);\n return new EmergencyAccessGranteeDetailsResponse(r);\n }\n\n async getEmergencyGrantorPolicies(id: string): Promise> {\n const r = await this.send('GET', '/emergency-access/' + id + '/policies', null, true, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n putEmergencyAccess(id: string, request: EmergencyAccessUpdateRequest): Promise {\n return this.send('PUT', '/emergency-access/' + id, request, true, false);\n }\n\n deleteEmergencyAccess(id: string): Promise {\n return this.send('DELETE', '/emergency-access/' + id, null, true, false);\n }\n\n postEmergencyAccessInvite(request: EmergencyAccessInviteRequest): Promise {\n return this.send('POST', '/emergency-access/invite', request, true, false);\n }\n\n postEmergencyAccessReinvite(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/reinvite', null, true, false);\n }\n\n postEmergencyAccessAccept(id: string, request: EmergencyAccessAcceptRequest): Promise {\n return this.send('POST', '/emergency-access/' + id + '/accept', request, true, false);\n }\n\n postEmergencyAccessConfirm(id: string, request: EmergencyAccessConfirmRequest): Promise {\n return this.send('POST', '/emergency-access/' + id + '/confirm', request, true, false);\n }\n\n postEmergencyAccessInitiate(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/initiate', null, true, false);\n }\n\n postEmergencyAccessApprove(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/approve', null, true, false);\n }\n\n postEmergencyAccessReject(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/reject', null, true, false);\n }\n\n async postEmergencyAccessTakeover(id: string): Promise {\n const r = await this.send('POST', '/emergency-access/' + id + '/takeover', null, true, true);\n return new EmergencyAccessTakeoverResponse(r);\n }\n\n async postEmergencyAccessPassword(id: string, request: EmergencyAccessPasswordRequest): Promise {\n const r = await this.send('POST', '/emergency-access/' + id + '/password', request, true, true);\n }\n\n async postEmergencyAccessView(id: string): Promise {\n const r = await this.send('POST', '/emergency-access/' + id + '/view', null, true, true);\n return new EmergencyAccessViewResponse(r);\n }\n\n // Organization APIs\n\n async getOrganization(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id, null, true, true);\n return new OrganizationResponse(r);\n }\n\n async getOrganizationBilling(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/billing', null, true, true);\n return new BillingResponse(r);\n }\n\n async getOrganizationSubscription(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/subscription', null, true, true);\n return new OrganizationSubscriptionResponse(r);\n }\n\n async getOrganizationLicense(id: string, installationId: string): Promise {\n return this.send('GET', '/organizations/' + id + '/license?installationId=' + installationId,\n null, true, true);\n }\n\n async getOrganizationTaxInfo(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/tax', null, true, true);\n return new TaxInfoResponse(r);\n }\n\n async postOrganization(request: OrganizationCreateRequest): Promise {\n const r = await this.send('POST', '/organizations', request, true, true);\n return new OrganizationResponse(r);\n }\n\n async putOrganization(id: string, request: OrganizationUpdateRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + id, request, true, true);\n return new OrganizationResponse(r);\n }\n\n async putOrganizationTaxInfo(id: string, request: OrganizationTaxInfoUpdateRequest): Promise {\n return this.send('PUT', '/organizations/' + id + '/tax', request, true, false);\n }\n\n postLeaveOrganization(id: string): Promise {\n return this.send('POST', '/organizations/' + id + '/leave', null, true, false);\n }\n\n async postOrganizationLicense(data: FormData): Promise {\n const r = await this.send('POST', '/organizations/license', data, true, true);\n return new OrganizationResponse(r);\n }\n\n async postOrganizationLicenseUpdate(id: string, data: FormData): Promise {\n return this.send('POST', '/organizations/' + id + '/license', data, true, false);\n }\n\n async postOrganizationApiKey(id: string, request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postOrganizationRotateApiKey(id: string, request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/rotate-api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postOrganizationUpgrade(id: string, request: OrganizationUpgradeRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/upgrade', request, true, true);\n return new PaymentResponse(r);\n }\n\n async postOrganizationSeat(id: string, request: SeatRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/seat', request, true, true);\n return new PaymentResponse(r);\n }\n\n async postOrganizationStorage(id: string, request: StorageRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/storage', request, true, true);\n return new PaymentResponse(r);\n }\n\n postOrganizationPayment(id: string, request: PaymentRequest): Promise {\n return this.send('POST', '/organizations/' + id + '/payment', request, true, false);\n }\n\n postOrganizationVerifyBank(id: string, request: VerifyBankRequest): Promise {\n return this.send('POST', '/organizations/' + id + '/verify-bank', request, true, false);\n }\n\n postOrganizationCancel(id: string): Promise {\n return this.send('POST', '/organizations/' + id + '/cancel', null, true, false);\n }\n\n postOrganizationReinstate(id: string): Promise {\n return this.send('POST', '/organizations/' + id + '/reinstate', null, true, false);\n }\n\n deleteOrganization(id: string, request: PasswordVerificationRequest): Promise {\n return this.send('DELETE', '/organizations/' + id, request, true, false);\n }\n\n // Event APIs\n\n async getEvents(start: string, end: string, token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/events', start, end, token), null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsCipher(id: string, start: string, end: string,\n token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/ciphers/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsOrganization(id: string, start: string, end: string,\n token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/organizations/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsOrganizationUser(organizationId: string, id: string,\n start: string, end: string, token: string): Promise> {\n const r = await this.send('GET',\n this.addEventParameters('/organizations/' + organizationId + '/users/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async postEventsCollect(request: EventRequest[]): Promise {\n const authHeader = await this.getActiveBearerToken();\n const headers = new Headers({\n 'Device-Type': this.deviceType,\n 'Authorization': 'Bearer ' + authHeader,\n 'Content-Type': 'application/json; charset=utf-8',\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n const response = await this.fetch(new Request(this.eventsBaseUrl + '/collect', {\n cache: 'no-store',\n credentials: this.getCredentials(),\n method: 'POST',\n body: JSON.stringify(request),\n headers: headers,\n }));\n if (response.status !== 200) {\n return Promise.reject('Event post failed.');\n }\n }\n\n // User APIs\n\n async getUserPublicKey(id: string): Promise {\n const r = await this.send('GET', '/users/' + id + '/public-key', null, true, true);\n return new UserKeyResponse(r);\n }\n\n // HIBP APIs\n\n async getHibpBreach(username: string): Promise {\n const r = await this.send('GET', '/hibp/breach?username=' + username, null, true, true);\n return r.map((a: any) => new BreachAccountResponse(a));\n }\n\n // Misc\n\n async postBitPayInvoice(request: BitPayInvoiceRequest): Promise {\n const r = await this.send('POST', '/bitpay-invoice', request, true, true);\n return r as string;\n }\n\n async postSetupPayment(): Promise {\n const r = await this.send('POST', '/setup-payment', null, true, true);\n return r as string;\n }\n\n // Helpers\n\n async getActiveBearerToken(): Promise {\n let accessToken = await this.tokenService.getToken();\n if (this.tokenService.tokenNeedsRefresh()) {\n const tokenResponse = await this.doRefreshToken();\n accessToken = tokenResponse.accessToken;\n }\n return accessToken;\n }\n\n fetch(request: Request): Promise {\n if (request.method === 'GET') {\n request.headers.set('Cache-Control', 'no-store');\n request.headers.set('Pragma', 'no-cache');\n }\n return this.nativeFetch(request);\n }\n\n nativeFetch(request: Request): Promise {\n return fetch(request);\n }\n\n async preValidateSso(identifier: string): Promise {\n if (identifier == null || identifier === '') {\n throw new Error('Organization Identifier was not provided.');\n }\n const headers = new Headers({\n 'Accept': 'application/json',\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n\n const path = `/account/prevalidate?domainHint=${encodeURIComponent(identifier)}`;\n const response = await this.fetch(new Request(this.identityBaseUrl + path, {\n cache: 'no-store',\n credentials: this.getCredentials(),\n headers: headers,\n method: 'GET',\n }));\n\n if (response.status === 200) {\n return true;\n } else {\n const error = await this.handleError(response, false, true);\n return Promise.reject(error);\n }\n }\n\n private async send(method: 'GET' | 'POST' | 'PUT' | 'DELETE', path: string, body: any,\n authed: boolean, hasResponse: boolean, apiUrl?: string): Promise {\n apiUrl = Utils.isNullOrWhitespace(apiUrl) ? this.apiBaseUrl : apiUrl;\n const headers = new Headers({\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n\n const requestInit: RequestInit = {\n cache: 'no-store',\n credentials: this.getCredentials(),\n method: method,\n };\n\n if (authed) {\n const authHeader = await this.getActiveBearerToken();\n headers.set('Authorization', 'Bearer ' + authHeader);\n }\n if (body != null) {\n if (typeof body === 'string') {\n requestInit.body = body;\n headers.set('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');\n } else if (typeof body === 'object') {\n if (body instanceof FormData) {\n requestInit.body = body;\n } else {\n headers.set('Content-Type', 'application/json; charset=utf-8');\n requestInit.body = JSON.stringify(body);\n }\n }\n }\n if (hasResponse) {\n headers.set('Accept', 'application/json');\n }\n\n requestInit.headers = headers;\n const response = await this.fetch(new Request(apiUrl + path, requestInit));\n\n if (hasResponse && response.status === 200) {\n const responseJson = await response.json();\n return responseJson;\n } else if (response.status !== 200) {\n const error = await this.handleError(response, false, authed);\n return Promise.reject(error);\n }\n }\n\n private async handleError(response: Response, tokenError: boolean, authed: boolean): Promise {\n if (authed && ((tokenError && response.status === 400) || response.status === 401 || response.status === 403)) {\n await this.logoutCallback(true);\n return null;\n }\n\n let responseJson: any = null;\n if (this.isJsonResponse(response)) {\n responseJson = await response.json();\n } else if (this.isTextResponse(response)) {\n responseJson = {Message: await response.text()};\n }\n\n return new ErrorResponse(responseJson, response.status, tokenError);\n }\n\n private async doRefreshToken(): Promise {\n const refreshToken = await this.tokenService.getRefreshToken();\n if (refreshToken == null || refreshToken === '') {\n throw new Error();\n }\n const headers = new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n 'Accept': 'application/json',\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n\n const decodedToken = this.tokenService.decodeToken();\n const response = await this.fetch(new Request(this.identityBaseUrl + '/connect/token', {\n body: this.qsStringify({\n grant_type: 'refresh_token',\n client_id: decodedToken.client_id,\n refresh_token: refreshToken,\n }),\n cache: 'no-store',\n credentials: this.getCredentials(),\n headers: headers,\n method: 'POST',\n }));\n\n if (response.status === 200) {\n const responseJson = await response.json();\n const tokenResponse = new IdentityTokenResponse(responseJson);\n await this.tokenService.setTokens(tokenResponse.accessToken, tokenResponse.refreshToken);\n return tokenResponse;\n } else {\n const error = await this.handleError(response, true, true);\n return Promise.reject(error);\n }\n }\n\n private qsStringify(params: any): string {\n return Object.keys(params).map(key => {\n return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);\n }).join('&');\n }\n\n private getCredentials(): RequestCredentials {\n if (!this.isWebClient || this.usingBaseUrl) {\n return 'include';\n }\n return undefined;\n }\n\n private addEventParameters(base: string, start: string, end: string, token: string) {\n if (start != null) {\n base += ('?start=' + start);\n }\n if (end != null) {\n base += (base.indexOf('?') > -1 ? '&' : '?');\n base += ('end=' + end);\n }\n if (token != null) {\n base += (base.indexOf('?') > -1 ? '&' : '?');\n base += ('continuationToken=' + token);\n }\n return base;\n }\n\n private isJsonResponse(response: Response): boolean {\n const typeHeader = response.headers.get('content-type');\n return typeHeader != null && typeHeader.indexOf('application/json') > -1;\n }\n\n private isTextResponse(response: Response): boolean {\n const typeHeader = response.headers.get('content-type');\n return typeHeader != null && typeHeader.indexOf('text') > -1;\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nexport class CollectionResponse extends BaseResponse {\n id: string;\n organizationId: string;\n name: string;\n externalId: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.name = this.getResponseProperty('Name');\n this.externalId = this.getResponseProperty('ExternalId');\n }\n}\n\nexport class CollectionDetailsResponse extends CollectionResponse {\n readOnly: boolean;\n\n constructor(response: any) {\n super(response);\n this.readOnly = this.getResponseProperty('ReadOnly') || false;\n }\n}\n\nexport class CollectionGroupDetailsResponse extends CollectionResponse {\n groups: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const groups = this.getResponseProperty('Groups');\n if (groups != null) {\n this.groups = groups.map((g: any) => new SelectionReadOnlyResponse(g));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { GlobalDomainResponse } from './globalDomainResponse';\n\nexport class DomainsResponse extends BaseResponse {\n equivalentDomains: string[][];\n globalEquivalentDomains: GlobalDomainResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.equivalentDomains = this.getResponseProperty('EquivalentDomains');\n const globalEquivalentDomains = this.getResponseProperty('GlobalEquivalentDomains');\n if (globalEquivalentDomains != null) {\n this.globalEquivalentDomains = globalEquivalentDomains.map((d: any) => new GlobalDomainResponse(d));\n } else {\n this.globalEquivalentDomains = [];\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class FolderResponse extends BaseResponse {\n id: string;\n name: string;\n revisionDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { PlanResponse } from './planResponse';\n\nimport { PlanType } from '../../enums/planType';\n\nexport class OrganizationResponse extends BaseResponse {\n id: string;\n identifier: string;\n name: string;\n businessName: string;\n businessAddress1: string;\n businessAddress2: string;\n businessAddress3: string;\n businessCountry: string;\n businessTaxNumber: string;\n billingEmail: string;\n plan: PlanResponse;\n planType: PlanType;\n seats: number;\n maxCollections: number;\n maxStorageGb: number;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.identifier = this.getResponseProperty('Identifier');\n this.name = this.getResponseProperty('Name');\n this.businessName = this.getResponseProperty('BusinessName');\n this.businessAddress1 = this.getResponseProperty('BusinessAddress1');\n this.businessAddress2 = this.getResponseProperty('BusinessAddress2');\n this.businessAddress3 = this.getResponseProperty('BusinessAddress3');\n this.businessCountry = this.getResponseProperty('BusinessCountry');\n this.businessTaxNumber = this.getResponseProperty('BusinessTaxNumber');\n this.billingEmail = this.getResponseProperty('BillingEmail');\n const plan = this.getResponseProperty('Plan');\n this.plan = plan == null ? null : new PlanResponse(plan);\n this.planType = this.getResponseProperty('PlanType');\n this.seats = this.getResponseProperty('Seats');\n this.maxCollections = this.getResponseProperty('MaxCollections');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.useGroups = this.getResponseProperty('UseGroups');\n this.useDirectory = this.getResponseProperty('UseDirectory');\n this.useEvents = this.getResponseProperty('UseEvents');\n this.useTotp = this.getResponseProperty('UseTotp');\n this.use2fa = this.getResponseProperty('Use2fa');\n this.useApi = this.getResponseProperty('UseApi');\n }\n}\n","import { PlanType } from '../../enums/planType';\nimport { ProductType } from '../../enums/productType';\n\nimport { BaseResponse } from './baseResponse';\n\nexport class PlanResponse extends BaseResponse {\n type: PlanType;\n product: ProductType;\n name: string;\n isAnnual: boolean;\n nameLocalizationKey: string;\n descriptionLocalizationKey: string;\n canBeUsedByBusiness: boolean;\n baseSeats: number;\n baseStorageGb: number;\n maxCollections: number;\n maxUsers: number;\n\n hasAdditionalSeatsOption: boolean;\n maxAdditionalSeats: number;\n hasAdditionalStorageOption: boolean;\n maxAdditionalStorage: number;\n hasPremiumAccessOption: boolean;\n trialPeriodDays: number;\n\n hasSelfHost: boolean;\n hasPolicies: boolean;\n hasGroups: boolean;\n hasDirectory: boolean;\n hasEvents: boolean;\n hasTotp: boolean;\n has2fa: boolean;\n hasApi: boolean;\n hasSso: boolean;\n usersGetPremium: boolean;\n\n upgradeSortOrder: number;\n displaySortOrder: number;\n legacyYear: number;\n disabled: boolean;\n\n stripePlanId: string;\n stripeSeatPlanId: string;\n stripeStoragePlanId: string;\n stripePremiumAccessPlanId: string;\n basePrice: number;\n seatPrice: number;\n additionalStoragePricePerGb: number;\n premiumAccessOptionPrice: number;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.product = this.getResponseProperty('Product');\n this.name = this.getResponseProperty('Name');\n this.isAnnual = this.getResponseProperty('IsAnnual');\n this.nameLocalizationKey = this.getResponseProperty('NameLocalizationKey');\n this.descriptionLocalizationKey = this.getResponseProperty('DescriptionLocalizationKey');\n this.canBeUsedByBusiness = this.getResponseProperty('CanBeUsedByBusiness');\n this.baseSeats = this.getResponseProperty('BaseSeats');\n this.baseStorageGb = this.getResponseProperty('BaseStorageGb');\n this.maxCollections = this.getResponseProperty('MaxCollections');\n this.maxUsers = this.getResponseProperty('MaxUsers');\n this.hasAdditionalSeatsOption = this.getResponseProperty('HasAdditionalSeatsOption');\n this.maxAdditionalSeats = this.getResponseProperty('MaxAdditionalSeats');\n this.hasAdditionalStorageOption = this.getResponseProperty('HasAdditionalStorageOption');\n this.maxAdditionalStorage = this.getResponseProperty('MaxAdditionalStorage');\n this.hasPremiumAccessOption = this.getResponseProperty('HasPremiumAccessOption');\n this.trialPeriodDays = this.getResponseProperty('TrialPeriodDays');\n this.hasSelfHost = this.getResponseProperty('HasSelfHost');\n this.hasPolicies = this.getResponseProperty('HasPolicies');\n this.hasGroups = this.getResponseProperty('HasGroups');\n this.hasDirectory = this.getResponseProperty('HasDirectory');\n this.hasEvents = this.getResponseProperty('HasEvents');\n this.hasTotp = this.getResponseProperty('HasTotp');\n this.has2fa = this.getResponseProperty('Has2fa');\n this.hasApi = this.getResponseProperty('HasApi');\n this.hasSso = this.getResponseProperty('HasSso');\n this.usersGetPremium = this.getResponseProperty('UsersGetPremium');\n this.upgradeSortOrder = this.getResponseProperty('UpgradeSortOrder');\n this.displaySortOrder = this.getResponseProperty('SortOrder');\n this.legacyYear = this.getResponseProperty('LegacyYear');\n this.disabled = this.getResponseProperty('Disabled');\n this.stripePlanId = this.getResponseProperty('StripePlanId');\n this.stripeSeatPlanId = this.getResponseProperty('StripeSeatPlanId');\n this.stripeStoragePlanId = this.getResponseProperty('StripeStoragePlanId');\n this.stripePremiumAccessPlanId = this.getResponseProperty('StripePremiumAccessPlanId');\n this.basePrice = this.getResponseProperty('BasePrice');\n this.seatPrice = this.getResponseProperty('SeatPrice');\n this.additionalStoragePricePerGb = this.getResponseProperty('AdditionalStoragePricePerGb');\n this.premiumAccessOptionPrice = this.getResponseProperty('PremiumAccessOptionPrice');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class SubscriptionResponse extends BaseResponse {\n storageName: string;\n storageGb: number;\n maxStorageGb: number;\n subscription: BillingSubscriptionResponse;\n upcomingInvoice: BillingSubscriptionUpcomingInvoiceResponse;\n license: any;\n expiration: string;\n usingInAppPurchase: boolean;\n\n constructor(response: any) {\n super(response);\n this.storageName = this.getResponseProperty('StorageName');\n this.storageGb = this.getResponseProperty('StorageGb');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.license = this.getResponseProperty('License');\n this.expiration = this.getResponseProperty('Expiration');\n this.usingInAppPurchase = this.getResponseProperty('UsingInAppPurchase');\n const subscription = this.getResponseProperty('Subscription');\n const upcomingInvoice = this.getResponseProperty('UpcomingInvoice');\n this.subscription = subscription == null ? null : new BillingSubscriptionResponse(subscription);\n this.upcomingInvoice = upcomingInvoice == null ? null :\n new BillingSubscriptionUpcomingInvoiceResponse(upcomingInvoice);\n }\n}\n\nexport class BillingSubscriptionResponse extends BaseResponse {\n trialStartDate: string;\n trialEndDate: string;\n periodStartDate: string;\n periodEndDate: string;\n cancelledDate: string;\n cancelAtEndDate: boolean;\n status: string;\n cancelled: boolean;\n items: BillingSubscriptionItemResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.trialEndDate = this.getResponseProperty('TrialStartDate');\n this.trialEndDate = this.getResponseProperty('TrialEndDate');\n this.periodStartDate = this.getResponseProperty('PeriodStartDate');\n this.periodEndDate = this.getResponseProperty('PeriodEndDate');\n this.cancelledDate = this.getResponseProperty('CancelledDate');\n this.cancelAtEndDate = this.getResponseProperty('CancelAtEndDate');\n this.status = this.getResponseProperty('Status');\n this.cancelled = this.getResponseProperty('Cancelled');\n const items = this.getResponseProperty('Items');\n if (items != null) {\n this.items = items.map((i: any) => new BillingSubscriptionItemResponse(i));\n }\n }\n}\n\nexport class BillingSubscriptionItemResponse extends BaseResponse {\n name: string;\n amount: number;\n quantity: number;\n interval: string;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.amount = this.getResponseProperty('Amount');\n this.quantity = this.getResponseProperty('Quantity');\n this.interval = this.getResponseProperty('Interval');\n }\n}\n\nexport class BillingSubscriptionUpcomingInvoiceResponse extends BaseResponse {\n date: string;\n amount: number;\n\n constructor(response: any) {\n super(response);\n this.date = this.getResponseProperty('Date');\n this.amount = this.getResponseProperty('Amount');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { PolicyType } from '../../enums/policyType';\n\nexport class PolicyResponse extends BaseResponse {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.type = this.getResponseProperty('Type');\n this.data = this.getResponseProperty('Data');\n this.enabled = this.getResponseProperty('Enabled');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { SendType } from '../../enums/sendType';\n\nimport { SendFileApi } from '../api/sendFileApi';\nimport { SendTextApi } from '../api/sendTextApi';\n\nexport class SendResponse extends BaseResponse {\n id: string;\n accessId: string;\n type: SendType;\n name: string;\n notes: string;\n file: SendFileApi;\n text: SendTextApi;\n key: string;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: string;\n expirationDate: string;\n deletionDate: string;\n password: string;\n disable: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.accessId = this.getResponseProperty('AccessId');\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n this.notes = this.getResponseProperty('Notes');\n this.key = this.getResponseProperty('Key');\n this.maxAccessCount = this.getResponseProperty('MaxAccessCount');\n this.accessCount = this.getResponseProperty('AccessCount');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n this.expirationDate = this.getResponseProperty('ExpirationDate');\n this.deletionDate = this.getResponseProperty('DeletionDate');\n this.password = this.getResponseProperty('Password');\n this.disable = this.getResponseProperty('Disabled') || false;\n\n const text = this.getResponseProperty('Text');\n if (text != null) {\n this.text = new SendTextApi(text);\n }\n\n const file = this.getResponseProperty('File');\n if (file != null) {\n this.file = new SendFileApi(file);\n }\n }\n}\n","import { Utils } from '../misc/utils';\n\nimport { AppIdService as AppIdServiceAbstraction } from '../abstractions/appId.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nexport class AppIdService implements AppIdServiceAbstraction {\n constructor(private storageService: StorageService) {\n }\n\n getAppId(): Promise {\n return this.makeAndGetAppId('appId');\n }\n\n getAnonymousAppId(): Promise {\n return this.makeAndGetAppId('anonymousAppId');\n }\n\n private async makeAndGetAppId(key: string) {\n const existingId = await this.storageService.get(key);\n if (existingId != null) {\n return existingId;\n }\n\n const guid = Utils.newGuid();\n await this.storageService.save(key, guid);\n return guid;\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { AuditService as AuditServiceAbstraction } from '../abstractions/audit.service';\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\n\nimport { throttle } from '../misc/throttle';\nimport { Utils } from '../misc/utils';\n\nimport { BreachAccountResponse } from '../models/response/breachAccountResponse';\nimport { ErrorResponse } from '../models/response/errorResponse';\n\nconst PwnedPasswordsApi = 'https://api.pwnedpasswords.com/range/';\n\nexport class AuditService implements AuditServiceAbstraction {\n constructor(private cryptoFunctionService: CryptoFunctionService, private apiService: ApiService) { }\n\n @throttle(100, () => 'passwordLeaked')\n async passwordLeaked(password: string): Promise {\n const hashBytes = await this.cryptoFunctionService.hash(password, 'sha1');\n const hash = Utils.fromBufferToHex(hashBytes).toUpperCase();\n const hashStart = hash.substr(0, 5);\n const hashEnding = hash.substr(5);\n\n const response = await this.apiService.nativeFetch(new Request(PwnedPasswordsApi + hashStart));\n const leakedHashes = await response.text();\n const match = leakedHashes.split(/\\r?\\n/).find(v => {\n return v.split(':')[0] === hashEnding;\n });\n\n return match != null ? parseInt(match.split(':')[1], 10) : 0;\n }\n\n async breachedAccounts(username: string): Promise {\n try {\n return await this.apiService.getHibpBreach(username);\n } catch (e) {\n const error = e as ErrorResponse;\n if (error.statusCode === 404) {\n return [];\n }\n throw new Error();\n }\n }\n}\n","import { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { UriMatchType } from '../enums/uriMatchType';\n\nimport { CipherData } from '../models/data/cipherData';\n\nimport { Attachment } from '../models/domain/attachment';\nimport { Card } from '../models/domain/card';\nimport { Cipher } from '../models/domain/cipher';\nimport { CipherString } from '../models/domain/cipherString';\nimport Domain from '../models/domain/domainBase';\nimport { Field } from '../models/domain/field';\nimport { Identity } from '../models/domain/identity';\nimport { Login } from '../models/domain/login';\nimport { LoginUri } from '../models/domain/loginUri';\nimport { Password } from '../models/domain/password';\nimport { SecureNote } from '../models/domain/secureNote';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { CipherBulkDeleteRequest } from '../models/request/cipherBulkDeleteRequest';\nimport { CipherBulkMoveRequest } from '../models/request/cipherBulkMoveRequest';\nimport { CipherBulkRestoreRequest } from '../models/request/cipherBulkRestoreRequest';\nimport { CipherBulkShareRequest } from '../models/request/cipherBulkShareRequest';\nimport { CipherCollectionsRequest } from '../models/request/cipherCollectionsRequest';\nimport { CipherCreateRequest } from '../models/request/cipherCreateRequest';\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CipherShareRequest } from '../models/request/cipherShareRequest';\n\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport { ErrorResponse } from '../models/response/errorResponse';\n\nimport { AttachmentView } from '../models/view/attachmentView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FieldView } from '../models/view/fieldView';\nimport { PasswordHistoryView } from '../models/view/passwordHistoryView';\nimport { View } from '../models/view/view';\n\nimport { SortedCiphersCache } from '../models/domain/sortedCiphersCache';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService as CipherServiceAbstraction } from '../abstractions/cipher.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { SearchService } from '../abstractions/search.service';\nimport { SettingsService } from '../abstractions/settings.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { ConstantsService } from './constants.service';\n\nimport { sequentialize } from '../misc/sequentialize';\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n ciphersPrefix: 'ciphers_',\n localData: 'sitesLocalData',\n neverDomains: 'neverDomains',\n};\n\nconst DomainMatchBlacklist = new Map>([\n ['google.com', new Set(['script.google.com'])],\n]);\n\nexport class CipherService implements CipherServiceAbstraction {\n // tslint:disable-next-line\n _decryptedCipherCache: CipherView[];\n\n private sortedCiphersCache: SortedCiphersCache = new SortedCiphersCache(this.sortCiphersByLastUsed);\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private settingsService: SettingsService, private apiService: ApiService,\n private storageService: StorageService, private i18nService: I18nService,\n private searchService: () => SearchService) {\n }\n\n get decryptedCipherCache() {\n return this._decryptedCipherCache;\n }\n set decryptedCipherCache(value: CipherView[]) {\n this._decryptedCipherCache = value;\n if (this.searchService != null) {\n if (value == null) {\n this.searchService().clearIndex();\n } else {\n this.searchService().indexCiphers();\n }\n }\n }\n\n clearCache(): void {\n this.decryptedCipherCache = null;\n this.sortedCiphersCache.clear();\n }\n\n async encrypt(model: CipherView, key?: SymmetricCryptoKey, originalCipher: Cipher = null): Promise {\n // Adjust password history\n if (model.id != null) {\n if (originalCipher == null) {\n originalCipher = await this.get(model.id);\n }\n if (originalCipher != null) {\n const existingCipher = await originalCipher.decrypt();\n model.passwordHistory = existingCipher.passwordHistory || [];\n if (model.type === CipherType.Login && existingCipher.type === CipherType.Login) {\n if (existingCipher.login.password != null && existingCipher.login.password !== '' &&\n existingCipher.login.password !== model.login.password) {\n const ph = new PasswordHistoryView();\n ph.password = existingCipher.login.password;\n ph.lastUsedDate = model.login.passwordRevisionDate = new Date();\n model.passwordHistory.splice(0, 0, ph);\n } else {\n model.login.passwordRevisionDate = existingCipher.login.passwordRevisionDate;\n }\n }\n if (existingCipher.hasFields) {\n const existingHiddenFields = existingCipher.fields.filter(f => f.type === FieldType.Hidden &&\n f.name != null && f.name !== '' && f.value != null && f.value !== '');\n const hiddenFields = model.fields == null ? [] :\n model.fields.filter(f => f.type === FieldType.Hidden && f.name != null && f.name !== '');\n existingHiddenFields.forEach(ef => {\n const matchedField = hiddenFields.find(f => f.name === ef.name);\n if (matchedField == null || matchedField.value !== ef.value) {\n const ph = new PasswordHistoryView();\n ph.password = ef.name + ': ' + ef.value;\n ph.lastUsedDate = new Date();\n model.passwordHistory.splice(0, 0, ph);\n }\n });\n }\n }\n if (model.passwordHistory != null && model.passwordHistory.length === 0) {\n model.passwordHistory = null;\n } else if (model.passwordHistory != null && model.passwordHistory.length > 5) {\n // only save last 5 history\n model.passwordHistory = model.passwordHistory.slice(0, 5);\n }\n }\n\n const cipher = new Cipher();\n cipher.id = model.id;\n cipher.folderId = model.folderId;\n cipher.favorite = model.favorite;\n cipher.organizationId = model.organizationId;\n cipher.type = model.type;\n cipher.collectionIds = model.collectionIds;\n cipher.revisionDate = model.revisionDate;\n\n if (key == null && cipher.organizationId != null) {\n key = await this.cryptoService.getOrgKey(cipher.organizationId);\n if (key == null) {\n throw new Error('Cannot encrypt cipher for organization. No key.');\n }\n }\n await Promise.all([\n this.encryptObjProperty(model, cipher, {\n name: null,\n notes: null,\n }, key),\n this.encryptCipherData(cipher, model, key),\n this.encryptFields(model.fields, key).then(fields => {\n cipher.fields = fields;\n }),\n this.encryptPasswordHistories(model.passwordHistory, key).then(ph => {\n cipher.passwordHistory = ph;\n }),\n this.encryptAttachments(model.attachments, key).then(attachments => {\n cipher.attachments = attachments;\n }),\n ]);\n\n return cipher;\n }\n\n async encryptAttachments(attachmentsModel: AttachmentView[], key: SymmetricCryptoKey): Promise {\n if (attachmentsModel == null || attachmentsModel.length === 0) {\n return null;\n }\n\n const promises: Promise[] = [];\n const encAttachments: Attachment[] = [];\n attachmentsModel.forEach(async model => {\n const attachment = new Attachment();\n attachment.id = model.id;\n attachment.size = model.size;\n attachment.sizeName = model.sizeName;\n attachment.url = model.url;\n const promise = this.encryptObjProperty(model, attachment, {\n fileName: null,\n }, key).then(async () => {\n if (model.key != null) {\n attachment.key = await this.cryptoService.encrypt(model.key.key, key);\n }\n encAttachments.push(attachment);\n });\n promises.push(promise);\n });\n\n await Promise.all(promises);\n return encAttachments;\n }\n\n async encryptFields(fieldsModel: FieldView[], key: SymmetricCryptoKey): Promise {\n if (!fieldsModel || !fieldsModel.length) {\n return null;\n }\n\n const self = this;\n const encFields: Field[] = [];\n await fieldsModel.reduce((promise, field) => {\n return promise.then(() => {\n return self.encryptField(field, key);\n }).then((encField: Field) => {\n encFields.push(encField);\n });\n }, Promise.resolve());\n\n return encFields;\n }\n\n async encryptField(fieldModel: FieldView, key: SymmetricCryptoKey): Promise {\n const field = new Field();\n field.type = fieldModel.type;\n // normalize boolean type field values\n if (fieldModel.type === FieldType.Boolean && fieldModel.value !== 'true') {\n fieldModel.value = 'false';\n }\n\n await this.encryptObjProperty(fieldModel, field, {\n name: null,\n value: null,\n }, key);\n\n return field;\n }\n\n async encryptPasswordHistories(phModels: PasswordHistoryView[], key: SymmetricCryptoKey): Promise {\n if (!phModels || !phModels.length) {\n return null;\n }\n\n const self = this;\n const encPhs: Password[] = [];\n await phModels.reduce((promise, ph) => {\n return promise.then(() => {\n return self.encryptPasswordHistory(ph, key);\n }).then((encPh: Password) => {\n encPhs.push(encPh);\n });\n }, Promise.resolve());\n\n return encPhs;\n }\n\n async encryptPasswordHistory(phModel: PasswordHistoryView, key: SymmetricCryptoKey): Promise {\n const ph = new Password();\n ph.lastUsedDate = phModel.lastUsedDate;\n\n await this.encryptObjProperty(phModel, ph, {\n password: null,\n }, key);\n\n return ph;\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const localData = await this.storageService.get(Keys.localData);\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null || !ciphers.hasOwnProperty(id)) {\n return null;\n }\n\n return new Cipher(ciphers[id], false, localData ? localData[id] : null);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const localData = await this.storageService.get(Keys.localData);\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n const response: Cipher[] = [];\n for (const id in ciphers) {\n if (ciphers.hasOwnProperty(id)) {\n response.push(new Cipher(ciphers[id], false, localData ? localData[id] : null));\n }\n }\n return response;\n }\n\n @sequentialize(() => 'getAllDecrypted')\n async getAllDecrypted(): Promise {\n if (this.decryptedCipherCache != null) {\n return this.decryptedCipherCache;\n }\n\n const decCiphers: CipherView[] = [];\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const promises: any[] = [];\n const ciphers = await this.getAll();\n ciphers.forEach(cipher => {\n promises.push(cipher.decrypt().then(c => decCiphers.push(c)));\n });\n\n await Promise.all(promises);\n decCiphers.sort(this.getLocaleSortingFunction());\n this.decryptedCipherCache = decCiphers;\n return this.decryptedCipherCache;\n }\n\n async getAllDecryptedForGrouping(groupingId: string, folder: boolean = true): Promise {\n const ciphers = await this.getAllDecrypted();\n\n return ciphers.filter(cipher => {\n if (cipher.isDeleted) {\n return false;\n }\n if (folder && cipher.folderId === groupingId) {\n return true;\n } else if (!folder && cipher.collectionIds != null && cipher.collectionIds.indexOf(groupingId) > -1) {\n return true;\n }\n\n return false;\n });\n }\n\n async getAllDecryptedForUrl(url: string, includeOtherTypes?: CipherType[],\n defaultMatch: UriMatchType = null): Promise {\n if (url == null && includeOtherTypes == null) {\n return Promise.resolve([]);\n }\n\n const domain = Utils.getDomain(url);\n const eqDomainsPromise = domain == null ? Promise.resolve([]) :\n this.settingsService.getEquivalentDomains().then((eqDomains: any[][]) => {\n let matches: any[] = [];\n eqDomains.forEach(eqDomain => {\n if (eqDomain.length && eqDomain.indexOf(domain) >= 0) {\n matches = matches.concat(eqDomain);\n }\n });\n\n if (!matches.length) {\n matches.push(domain);\n }\n\n return matches;\n });\n\n const result = await Promise.all([eqDomainsPromise, this.getAllDecrypted()]);\n const matchingDomains = result[0];\n const ciphers = result[1];\n\n if (defaultMatch == null) {\n defaultMatch = await this.storageService.get(ConstantsService.defaultUriMatch);\n if (defaultMatch == null) {\n defaultMatch = UriMatchType.Domain;\n }\n }\n\n return ciphers.filter(cipher => {\n if (cipher.deletedDate != null) {\n return false;\n }\n if (includeOtherTypes != null && includeOtherTypes.indexOf(cipher.type) > -1) {\n return true;\n }\n\n if (url != null && cipher.type === CipherType.Login && cipher.login.uris != null) {\n for (let i = 0; i < cipher.login.uris.length; i++) {\n const u = cipher.login.uris[i];\n if (u.uri == null) {\n continue;\n }\n\n const match = u.match == null ? defaultMatch : u.match;\n switch (match) {\n case UriMatchType.Domain:\n if (domain != null && u.domain != null && matchingDomains.indexOf(u.domain) > -1) {\n if (DomainMatchBlacklist.has(u.domain)) {\n const domainUrlHost = Utils.getHost(url);\n if (!DomainMatchBlacklist.get(u.domain).has(domainUrlHost)) {\n return true;\n }\n } else {\n return true;\n }\n }\n break;\n case UriMatchType.Host:\n const urlHost = Utils.getHost(url);\n if (urlHost != null && urlHost === Utils.getHost(u.uri)) {\n return true;\n }\n break;\n case UriMatchType.Exact:\n if (url === u.uri) {\n return true;\n }\n break;\n case UriMatchType.StartsWith:\n if (url.startsWith(u.uri)) {\n return true;\n }\n break;\n case UriMatchType.RegularExpression:\n try {\n const regex = new RegExp(u.uri, 'i');\n if (regex.test(url)) {\n return true;\n }\n } catch { }\n break;\n case UriMatchType.Never:\n default:\n break;\n }\n }\n }\n\n return false;\n });\n }\n\n async getAllFromApiForOrganization(organizationId: string): Promise {\n const ciphers = await this.apiService.getCiphersOrganization(organizationId);\n if (ciphers != null && ciphers.data != null && ciphers.data.length) {\n const decCiphers: CipherView[] = [];\n const promises: any[] = [];\n ciphers.data.forEach(r => {\n const data = new CipherData(r);\n const cipher = new Cipher(data);\n promises.push(cipher.decrypt().then(c => decCiphers.push(c)));\n });\n await Promise.all(promises);\n decCiphers.sort(this.getLocaleSortingFunction());\n return decCiphers;\n } else {\n return [];\n }\n }\n\n async getLastUsedForUrl(url: string): Promise {\n return this.getCipherForUrl(url, true, false);\n }\n\n async getLastLaunchedForUrl(url: string): Promise {\n return this.getCipherForUrl(url, false, true);\n }\n\n async getNextCipherForUrl(url: string): Promise {\n return this.getCipherForUrl(url, false, false);\n }\n\n updateLastUsedIndexForUrl(url: string) {\n this.sortedCiphersCache.updateLastUsedIndex(url);\n }\n\n async updateLastUsedDate(id: string): Promise {\n let ciphersLocalData = await this.storageService.get(Keys.localData);\n if (!ciphersLocalData) {\n ciphersLocalData = {};\n }\n\n if (ciphersLocalData[id]) {\n ciphersLocalData[id].lastUsedDate = new Date().getTime();\n } else {\n ciphersLocalData[id] = {\n lastUsedDate: new Date().getTime(),\n };\n }\n\n await this.storageService.save(Keys.localData, ciphersLocalData);\n\n if (this.decryptedCipherCache == null) {\n return;\n }\n\n for (let i = 0; i < this.decryptedCipherCache.length; i++) {\n const cached = this.decryptedCipherCache[i];\n if (cached.id === id) {\n cached.localData = ciphersLocalData[id];\n break;\n }\n }\n }\n\n async updateLastLaunchedDate(id: string): Promise {\n let ciphersLocalData = await this.storageService.get(Keys.localData);\n if (!ciphersLocalData) {\n ciphersLocalData = {};\n }\n\n if (ciphersLocalData[id]) {\n ciphersLocalData[id].lastLaunched = new Date().getTime();\n } else {\n ciphersLocalData[id] = {\n lastUsedDate: new Date().getTime(),\n };\n }\n\n await this.storageService.save(Keys.localData, ciphersLocalData);\n\n if (this.decryptedCipherCache == null) {\n return;\n }\n\n for (let i = 0; i < this.decryptedCipherCache.length; i++) {\n const cached = this.decryptedCipherCache[i];\n if (cached.id === id) {\n cached.localData = ciphersLocalData[id];\n break;\n }\n }\n }\n\n async saveNeverDomain(domain: string): Promise {\n if (domain == null) {\n return;\n }\n\n let domains = await this.storageService.get<{ [id: string]: any; }>(Keys.neverDomains);\n if (!domains) {\n domains = {};\n }\n domains[domain] = null;\n await this.storageService.save(Keys.neverDomains, domains);\n }\n\n async saveWithServer(cipher: Cipher): Promise {\n let response: CipherResponse;\n if (cipher.id == null) {\n if (cipher.collectionIds != null) {\n const request = new CipherCreateRequest(cipher);\n response = await this.apiService.postCipherCreate(request);\n } else {\n const request = new CipherRequest(cipher);\n response = await this.apiService.postCipher(request);\n }\n cipher.id = response.id;\n } else {\n const request = new CipherRequest(cipher);\n response = await this.apiService.putCipher(cipher.id, request);\n }\n\n const userId = await this.userService.getUserId();\n const data = new CipherData(response, userId, cipher.collectionIds);\n await this.upsert(data);\n }\n\n async shareWithServer(cipher: CipherView, organizationId: string, collectionIds: string[]): Promise {\n const attachmentPromises: Promise[] = [];\n if (cipher.attachments != null) {\n cipher.attachments.forEach(attachment => {\n if (attachment.key == null) {\n attachmentPromises.push(this.shareAttachmentWithServer(attachment, cipher.id, organizationId));\n }\n });\n }\n await Promise.all(attachmentPromises);\n\n cipher.organizationId = organizationId;\n cipher.collectionIds = collectionIds;\n const encCipher = await this.encrypt(cipher);\n const request = new CipherShareRequest(encCipher);\n const response = await this.apiService.putShareCipher(cipher.id, request);\n const userId = await this.userService.getUserId();\n const data = new CipherData(response, userId, collectionIds);\n await this.upsert(data);\n }\n\n async shareManyWithServer(ciphers: CipherView[], organizationId: string, collectionIds: string[]): Promise {\n const promises: Promise[] = [];\n const encCiphers: Cipher[] = [];\n for (const cipher of ciphers) {\n cipher.organizationId = organizationId;\n cipher.collectionIds = collectionIds;\n promises.push(this.encrypt(cipher).then(c => {\n encCiphers.push(c);\n }));\n }\n await Promise.all(promises);\n const request = new CipherBulkShareRequest(encCiphers, collectionIds);\n await this.apiService.putShareCiphers(request);\n const userId = await this.userService.getUserId();\n await this.upsert(encCiphers.map(c => c.toCipherData(userId)));\n }\n\n saveAttachmentWithServer(cipher: Cipher, unencryptedFile: any, admin = false): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(unencryptedFile);\n reader.onload = async (evt: any) => {\n try {\n const cData = await this.saveAttachmentRawWithServer(cipher,\n unencryptedFile.name, evt.target.result, admin);\n resolve(cData);\n } catch (e) {\n reject(e);\n }\n };\n reader.onerror = evt => {\n reject('Error reading file.');\n };\n });\n }\n\n async saveAttachmentRawWithServer(cipher: Cipher, filename: string,\n data: ArrayBuffer, admin = false): Promise {\n const key = await this.cryptoService.getOrgKey(cipher.organizationId);\n const encFileName = await this.cryptoService.encrypt(filename, key);\n\n const dataEncKey = await this.cryptoService.makeEncKey(key);\n const encData = await this.cryptoService.encryptToBytes(data, dataEncKey[0]);\n\n const fd = new FormData();\n try {\n const blob = new Blob([encData], { type: 'application/octet-stream' });\n fd.append('key', dataEncKey[1].encryptedString);\n fd.append('data', blob, encFileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('key', dataEncKey[1].encryptedString);\n fd.append('data', Buffer.from(encData) as any, {\n filepath: encFileName.encryptedString,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n\n let response: CipherResponse;\n try {\n if (admin) {\n response = await this.apiService.postCipherAttachmentAdmin(cipher.id, fd);\n } else {\n response = await this.apiService.postCipherAttachment(cipher.id, fd);\n }\n } catch (e) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n }\n\n const userId = await this.userService.getUserId();\n const cData = new CipherData(response, userId, cipher.collectionIds);\n if (!admin) {\n await this.upsert(cData);\n }\n return new Cipher(cData);\n }\n\n async saveCollectionsWithServer(cipher: Cipher): Promise {\n const request = new CipherCollectionsRequest(cipher.collectionIds);\n await this.apiService.putCipherCollections(cipher.id, request);\n const userId = await this.userService.getUserId();\n const data = cipher.toCipherData(userId);\n await this.upsert(data);\n }\n\n async upsert(cipher: CipherData | CipherData[]): Promise {\n const userId = await this.userService.getUserId();\n let ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n ciphers = {};\n }\n\n if (cipher instanceof CipherData) {\n const c = cipher as CipherData;\n ciphers[c.id] = c;\n } else {\n (cipher as CipherData[]).forEach(c => {\n ciphers[c.id] = c;\n });\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async replace(ciphers: { [id: string]: CipherData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.ciphersPrefix + userId);\n this.clearCache();\n }\n\n async moveManyWithServer(ids: string[], folderId: string): Promise {\n await this.apiService.putMoveCiphers(new CipherBulkMoveRequest(ids, folderId));\n\n const userId = await this.userService.getUserId();\n let ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n ciphers = {};\n }\n\n ids.forEach(id => {\n if (ciphers.hasOwnProperty(id)) {\n ciphers[id].folderId = folderId;\n }\n });\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n return;\n }\n\n if (typeof id === 'string') {\n if (ciphers[id] == null) {\n return;\n }\n delete ciphers[id];\n } else {\n (id as string[]).forEach(i => {\n delete ciphers[i];\n });\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteCipher(id);\n await this.delete(id);\n }\n\n async deleteManyWithServer(ids: string[]): Promise {\n await this.apiService.deleteManyCiphers(new CipherBulkDeleteRequest(ids));\n await this.delete(ids);\n }\n\n async deleteAttachment(id: string, attachmentId: string): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n\n if (ciphers == null || !ciphers.hasOwnProperty(id) || ciphers[id].attachments == null) {\n return;\n }\n\n for (let i = 0; i < ciphers[id].attachments.length; i++) {\n if (ciphers[id].attachments[i].id === attachmentId) {\n ciphers[id].attachments.splice(i, 1);\n }\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async deleteAttachmentWithServer(id: string, attachmentId: string): Promise {\n try {\n await this.apiService.deleteCipherAttachment(id, attachmentId);\n } catch (e) {\n return Promise.reject((e as ErrorResponse).getSingleMessage());\n }\n await this.deleteAttachment(id, attachmentId);\n }\n\n sortCiphersByLastUsed(a: CipherView, b: CipherView): number {\n const aLastUsed = a.localData && a.localData.lastUsedDate ? a.localData.lastUsedDate as number : null;\n const bLastUsed = b.localData && b.localData.lastUsedDate ? b.localData.lastUsedDate as number : null;\n\n const bothNotNull = aLastUsed != null && bLastUsed != null;\n if (bothNotNull && aLastUsed < bLastUsed) {\n return 1;\n }\n if (aLastUsed != null && bLastUsed == null) {\n return -1;\n }\n\n if (bothNotNull && aLastUsed > bLastUsed) {\n return -1;\n }\n if (bLastUsed != null && aLastUsed == null) {\n return 1;\n }\n\n return 0;\n }\n\n sortCiphersByLastUsedThenName(a: CipherView, b: CipherView): number {\n const result = this.sortCiphersByLastUsed(a, b);\n if (result !== 0) {\n return result;\n }\n\n return this.getLocaleSortingFunction()(a, b);\n }\n\n getLocaleSortingFunction(): (a: CipherView, b: CipherView) => number {\n return (a, b) => {\n let aName = a.name;\n let bName = b.name;\n\n if (aName == null && bName != null) {\n return -1;\n }\n if (aName != null && bName == null) {\n return 1;\n }\n if (aName == null && bName == null) {\n return 0;\n }\n\n const result = this.i18nService.collator ? this.i18nService.collator.compare(aName, bName) :\n aName.localeCompare(bName);\n\n if (result !== 0 || a.type !== CipherType.Login || b.type !== CipherType.Login) {\n return result;\n }\n\n if (a.login.username != null) {\n aName += a.login.username;\n }\n\n if (b.login.username != null) {\n bName += b.login.username;\n }\n\n return this.i18nService.collator ? this.i18nService.collator.compare(aName, bName) :\n aName.localeCompare(bName);\n };\n }\n\n async softDelete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n return;\n }\n\n const setDeletedDate = (cipherId: string) => {\n if (ciphers[cipherId] == null) {\n return;\n }\n ciphers[cipherId].deletedDate = new Date().toISOString();\n };\n\n if (typeof id === 'string') {\n setDeletedDate(id);\n } else {\n (id as string[]).forEach(setDeletedDate);\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async softDeleteWithServer(id: string): Promise {\n await this.apiService.putDeleteCipher(id);\n await this.softDelete(id);\n }\n\n async softDeleteManyWithServer(ids: string[]): Promise {\n await this.apiService.putDeleteManyCiphers(new CipherBulkDeleteRequest(ids));\n await this.softDelete(ids);\n }\n\n async restore(cipher: { id: string, revisionDate: string; } | { id: string, revisionDate: string; }[]) {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n return;\n }\n\n const clearDeletedDate = (c: { id: string, revisionDate: string; }) => {\n if (ciphers[c.id] == null) {\n return;\n }\n ciphers[c.id].deletedDate = null;\n ciphers[c.id].revisionDate = c.revisionDate;\n };\n\n\n if (cipher.constructor.name === 'Array') {\n (cipher as { id: string, revisionDate: string; }[]).forEach(clearDeletedDate);\n } else {\n clearDeletedDate(cipher as { id: string, revisionDate: string; });\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async restoreWithServer(id: string): Promise {\n const response = await this.apiService.putRestoreCipher(id);\n await this.restore({ id: id, revisionDate: response.revisionDate });\n }\n\n async restoreManyWithServer(ids: string[]): Promise {\n const response = await this.apiService.putRestoreManyCiphers(new CipherBulkRestoreRequest(ids));\n const restores: { id: string, revisionDate: string; }[] = [];\n for (const cipher of response.data) {\n restores.push({ id: cipher.id, revisionDate: cipher.revisionDate });\n }\n await this.restore(restores);\n }\n\n // Helpers\n\n private async shareAttachmentWithServer(attachmentView: AttachmentView, cipherId: string,\n organizationId: string): Promise {\n const attachmentResponse = await this.apiService.nativeFetch(\n new Request(attachmentView.url, { cache: 'no-store' }));\n if (attachmentResponse.status !== 200) {\n throw Error('Failed to download attachment: ' + attachmentResponse.status.toString());\n }\n\n const buf = await attachmentResponse.arrayBuffer();\n const decBuf = await this.cryptoService.decryptFromBytes(buf, null);\n const key = await this.cryptoService.getOrgKey(organizationId);\n const encFileName = await this.cryptoService.encrypt(attachmentView.fileName, key);\n\n const dataEncKey = await this.cryptoService.makeEncKey(key);\n const encData = await this.cryptoService.encryptToBytes(decBuf, dataEncKey[0]);\n\n const fd = new FormData();\n try {\n const blob = new Blob([encData], { type: 'application/octet-stream' });\n fd.append('key', dataEncKey[1].encryptedString);\n fd.append('data', blob, encFileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('key', dataEncKey[1].encryptedString);\n fd.append('data', Buffer.from(encData) as any, {\n filepath: encFileName.encryptedString,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n\n try {\n await this.apiService.postShareCipherAttachment(cipherId, attachmentView.id, fd, organizationId);\n } catch (e) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n }\n }\n\n private async encryptObjProperty(model: V, obj: D,\n map: any, key: SymmetricCryptoKey): Promise {\n const promises = [];\n const self = this;\n\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n // tslint:disable-next-line\n (function (theProp, theObj) {\n const p = Promise.resolve().then(() => {\n const modelProp = (model as any)[(map[theProp] || theProp)];\n if (modelProp && modelProp !== '') {\n return self.cryptoService.encrypt(modelProp, key);\n }\n return null;\n }).then((val: CipherString) => {\n (theObj as any)[theProp] = val;\n });\n promises.push(p);\n })(prop, obj);\n }\n\n await Promise.all(promises);\n }\n\n private async encryptCipherData(cipher: Cipher, model: CipherView, key: SymmetricCryptoKey) {\n switch (cipher.type) {\n case CipherType.Login:\n cipher.login = new Login();\n cipher.login.passwordRevisionDate = model.login.passwordRevisionDate;\n await this.encryptObjProperty(model.login, cipher.login, {\n username: null,\n password: null,\n totp: null,\n }, key);\n\n if (model.login.uris != null) {\n cipher.login.uris = [];\n for (let i = 0; i < model.login.uris.length; i++) {\n const loginUri = new LoginUri();\n loginUri.match = model.login.uris[i].match;\n await this.encryptObjProperty(model.login.uris[i], loginUri, {\n uri: null,\n }, key);\n cipher.login.uris.push(loginUri);\n }\n }\n return;\n case CipherType.SecureNote:\n cipher.secureNote = new SecureNote();\n cipher.secureNote.type = model.secureNote.type;\n return;\n case CipherType.Card:\n cipher.card = new Card();\n await this.encryptObjProperty(model.card, cipher.card, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n }, key);\n return;\n case CipherType.Identity:\n cipher.identity = new Identity();\n await this.encryptObjProperty(model.identity, cipher.identity, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n }, key);\n return;\n default:\n throw new Error('Unknown cipher type.');\n }\n }\n\n private async getCipherForUrl(url: string, lastUsed: boolean, lastLaunched: boolean): Promise {\n if (!this.sortedCiphersCache.isCached(url)) {\n const ciphers = await this.getAllDecryptedForUrl(url);\n if (!ciphers) {\n return null;\n }\n this.sortedCiphersCache.addCiphers(url, ciphers);\n }\n\n if (lastLaunched) {\n return this.sortedCiphersCache.getLastLaunched(url);\n } else if (lastUsed) {\n return this.sortedCiphersCache.getLastUsed(url);\n } else {\n return this.sortedCiphersCache.getNext(url);\n }\n }\n}\n","/**\n * Use as a Decorator on async functions, it will prevent multiple 'active' calls as the same time\n *\n * If a promise was returned from a previous call to this function, that hasn't yet resolved it will\n * be returned, instead of calling the original function again\n *\n * Results are not cached, once the promise has returned, the next call will result in a fresh call\n *\n * Read more at https://github.com/bitwarden/jslib/pull/7\n */\nexport function sequentialize(cacheKey: (args: any[]) => string) {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const originalMethod: () => Promise = descriptor.value;\n const caches = new Map>>();\n\n const getCache = (obj: any) => {\n let cache = caches.get(obj);\n if (cache != null) {\n return cache;\n }\n cache = new Map>();\n caches.set(obj, cache);\n return cache;\n };\n\n return {\n value: function(...args: any[]) {\n const cache = getCache(this);\n const argsCacheKey = cacheKey(args);\n let response = cache.get(argsCacheKey);\n if (response != null) {\n return response;\n }\n\n const onFinally = () => {\n cache.delete(argsCacheKey);\n if (cache.size === 0) {\n caches.delete(this);\n }\n };\n response = originalMethod.apply(this, args).then((val: any) => {\n onFinally();\n return val;\n }).catch((err: any) => {\n onFinally();\n throw err;\n });\n\n cache.set(argsCacheKey, response);\n return response;\n },\n };\n };\n}\n","import { CollectionData } from '../models/data/collectionData';\n\nimport { Collection } from '../models/domain/collection';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { CollectionView } from '../models/view/collectionView';\n\nimport { CollectionService as CollectionServiceAbstraction } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { ServiceUtils } from '../misc/serviceUtils';\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n collectionsPrefix: 'collections_',\n};\nconst NestingDelimiter = '/';\n\nexport class CollectionService implements CollectionServiceAbstraction {\n decryptedCollectionCache: CollectionView[];\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private storageService: StorageService, private i18nService: I18nService) {\n }\n\n clearCache(): void {\n this.decryptedCollectionCache = null;\n }\n\n async encrypt(model: CollectionView): Promise {\n if (model.organizationId == null) {\n throw new Error('Collection has no organization id.');\n }\n const key = await this.cryptoService.getOrgKey(model.organizationId);\n if (key == null) {\n throw new Error('No key for this collection\\'s organization.');\n }\n const collection = new Collection();\n collection.id = model.id;\n collection.organizationId = model.organizationId;\n collection.readOnly = model.readOnly;\n collection.name = await this.cryptoService.encrypt(model.name, key);\n return collection;\n }\n\n async decryptMany(collections: Collection[]): Promise {\n if (collections == null) {\n return [];\n }\n const decCollections: CollectionView[] = [];\n const promises: Promise[] = [];\n collections.forEach(collection => {\n promises.push(collection.decrypt().then(c => decCollections.push(c)));\n });\n await Promise.all(promises);\n return decCollections.sort(Utils.getSortFunction(this.i18nService, 'name'));\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n if (collections == null || !collections.hasOwnProperty(id)) {\n return null;\n }\n\n return new Collection(collections[id]);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n const response: Collection[] = [];\n for (const id in collections) {\n if (collections.hasOwnProperty(id)) {\n response.push(new Collection(collections[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n if (this.decryptedCollectionCache != null) {\n return this.decryptedCollectionCache;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const collections = await this.getAll();\n this.decryptedCollectionCache = await this.decryptMany(collections);\n return this.decryptedCollectionCache;\n }\n\n async getAllNested(collections: CollectionView[] = null): Promise[]> {\n if (collections == null) {\n collections = await this.getAllDecrypted();\n }\n const nodes: TreeNode[] = [];\n collections.forEach(c => {\n const collectionCopy = new CollectionView();\n collectionCopy.id = c.id;\n collectionCopy.organizationId = c.organizationId;\n const parts = c.name != null ? c.name.replace(/^\\/+|\\/+$/g, '').split(NestingDelimiter) : [];\n ServiceUtils.nestedTraverse(nodes, 0, parts, collectionCopy, null, NestingDelimiter);\n });\n return nodes;\n }\n\n async getNested(id: string): Promise> {\n const collections = await this.getAllNested();\n return ServiceUtils.getTreeNodeObject(collections, id) as TreeNode;\n }\n\n async upsert(collection: CollectionData | CollectionData[]): Promise {\n const userId = await this.userService.getUserId();\n let collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n if (collections == null) {\n collections = {};\n }\n\n if (collection instanceof CollectionData) {\n const c = collection as CollectionData;\n collections[c.id] = c;\n } else {\n (collection as CollectionData[]).forEach(c => {\n collections[c.id] = c;\n });\n }\n\n await this.storageService.save(Keys.collectionsPrefix + userId, collections);\n this.decryptedCollectionCache = null;\n }\n\n async replace(collections: { [id: string]: CollectionData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.collectionsPrefix + userId, collections);\n this.decryptedCollectionCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.collectionsPrefix + userId);\n this.decryptedCollectionCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n if (collections == null) {\n return;\n }\n\n if (typeof id === 'string') {\n const i = id as string;\n delete collections[id];\n } else {\n (id as string[]).forEach(i => {\n delete collections[i];\n });\n }\n\n await this.storageService.save(Keys.collectionsPrefix + userId, collections);\n this.decryptedCollectionCache = null;\n }\n}\n","import {\n ITreeNodeObject,\n TreeNode,\n} from '../models/domain/treeNode';\n\nexport class ServiceUtils {\n static nestedTraverse(nodeTree: TreeNode[], partIndex: number, parts: string[],\n obj: ITreeNodeObject, parent: ITreeNodeObject, delimiter: string) {\n if (parts.length <= partIndex) {\n return;\n }\n\n const end = partIndex === parts.length - 1;\n const partName = parts[partIndex];\n\n for (let i = 0; i < nodeTree.length; i++) {\n if (nodeTree[i].node.name !== parts[partIndex]) {\n continue;\n }\n if (end && nodeTree[i].node.id !== obj.id) {\n // Another node with the same name.\n nodeTree.push(new TreeNode(obj, partName, parent));\n return;\n }\n ServiceUtils.nestedTraverse(nodeTree[i].children, partIndex + 1, parts,\n obj, nodeTree[i].node, delimiter);\n return;\n }\n\n if (nodeTree.filter(n => n.node.name === partName).length === 0) {\n if (end) {\n nodeTree.push(new TreeNode(obj, partName, parent));\n return;\n }\n const newPartName = parts[partIndex] + delimiter + parts[partIndex + 1];\n ServiceUtils.nestedTraverse(nodeTree, 0, [newPartName, ...parts.slice(partIndex + 2)],\n obj, parent, delimiter);\n }\n }\n\n static getTreeNodeObject(nodeTree: TreeNode[], id: string): TreeNode {\n for (let i = 0; i < nodeTree.length; i++) {\n if (nodeTree[i].node.id === id) {\n return nodeTree[i];\n } else if (nodeTree[i].children != null) {\n const node = ServiceUtils.getTreeNodeObject(nodeTree[i].children, id);\n if (node !== null) {\n return node;\n }\n }\n }\n return null;\n }\n}\n","import { CryptoService } from '../abstractions/crypto.service';\n\nexport class ContainerService {\n constructor(private cryptoService: CryptoService) {\n }\n\n // deprecated, use attachToGlobal instead\n attachToWindow(win: any) {\n this.attachToGlobal(win);\n }\n\n attachToGlobal(global: any) {\n if (!global.bitwardenContainerService) {\n global.bitwardenContainerService = this;\n }\n }\n\n getCryptoService(): CryptoService {\n return this.cryptoService;\n }\n}\n","import * as bigInt from 'big-integer';\n\nimport { EncryptionType } from '../enums/encryptionType';\nimport { KdfType } from '../enums/kdfType';\n\nimport { CipherString } from '../models/domain/cipherString';\nimport { EncryptedObject } from '../models/domain/encryptedObject';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\nimport { ProfileOrganizationResponse } from '../models/response/profileOrganizationResponse';\n\nimport { CryptoService as CryptoServiceAbstraction } from '../abstractions/crypto.service';\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { LogService } from '../abstractions/log.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nimport { ConstantsService } from './constants.service';\n\nimport { sequentialize } from '../misc/sequentialize';\nimport { Utils } from '../misc/utils';\nimport { EEFLongWordList } from '../misc/wordlist';\n\nconst Keys = {\n key: 'key', // Master Key\n encOrgKeys: 'encOrgKeys',\n encPrivateKey: 'encPrivateKey',\n encKey: 'encKey', // Generated Symmetric Key\n keyHash: 'keyHash',\n};\n\nexport class CryptoService implements CryptoServiceAbstraction {\n private key: SymmetricCryptoKey;\n private encKey: SymmetricCryptoKey;\n private legacyEtmKey: SymmetricCryptoKey;\n private keyHash: string;\n private publicKey: ArrayBuffer;\n private privateKey: ArrayBuffer;\n private orgKeys: Map;\n\n constructor(private storageService: StorageService, private secureStorageService: StorageService,\n private cryptoFunctionService: CryptoFunctionService, private platformUtilService: PlatformUtilsService,\n private logService: LogService) {\n }\n\n async setKey(key: SymmetricCryptoKey): Promise {\n this.key = key;\n\n const option = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n const biometric = await this.storageService.get(ConstantsService.biometricUnlockKey);\n if (option != null && !(biometric && this.platformUtilService.supportsSecureStorage())) {\n // if we have a lock option set, we do not store the key\n return;\n }\n\n return this.secureStorageService.save(Keys.key, key.keyB64);\n }\n\n setKeyHash(keyHash: string): Promise<{}> {\n this.keyHash = keyHash;\n return this.storageService.save(Keys.keyHash, keyHash);\n }\n\n async setEncKey(encKey: string): Promise<{}> {\n if (encKey == null) {\n return;\n }\n\n await this.storageService.save(Keys.encKey, encKey);\n this.encKey = null;\n }\n\n async setEncPrivateKey(encPrivateKey: string): Promise<{}> {\n if (encPrivateKey == null) {\n return;\n }\n\n await this.storageService.save(Keys.encPrivateKey, encPrivateKey);\n this.privateKey = null;\n }\n\n setOrgKeys(orgs: ProfileOrganizationResponse[]): Promise<{}> {\n const orgKeys: any = {};\n orgs.forEach(org => {\n orgKeys[org.id] = org.key;\n });\n\n this.orgKeys = null;\n return this.storageService.save(Keys.encOrgKeys, orgKeys);\n }\n\n async getKey(): Promise {\n if (this.key != null) {\n return this.key;\n }\n\n const key = await this.secureStorageService.get(Keys.key);\n if (key != null) {\n this.key = new SymmetricCryptoKey(Utils.fromB64ToArray(key).buffer);\n }\n\n return key == null ? null : this.key;\n }\n\n async getKeyHash(): Promise {\n if (this.keyHash != null) {\n return this.keyHash;\n }\n\n const keyHash = await this.storageService.get(Keys.keyHash);\n if (keyHash != null) {\n this.keyHash = keyHash;\n }\n\n return keyHash == null ? null : this.keyHash;\n }\n\n @sequentialize(() => 'getEncKey')\n async getEncKey(key: SymmetricCryptoKey = null): Promise {\n if (this.encKey != null) {\n return this.encKey;\n }\n\n const encKey = await this.storageService.get(Keys.encKey);\n if (encKey == null) {\n return null;\n }\n\n if (key == null) {\n key = await this.getKey();\n }\n if (key == null) {\n return null;\n }\n\n let decEncKey: ArrayBuffer;\n const encKeyCipher = new CipherString(encKey);\n if (encKeyCipher.encryptionType === EncryptionType.AesCbc256_B64) {\n decEncKey = await this.decryptToBytes(encKeyCipher, key);\n } else if (encKeyCipher.encryptionType === EncryptionType.AesCbc256_HmacSha256_B64) {\n const newKey = await this.stretchKey(key);\n decEncKey = await this.decryptToBytes(encKeyCipher, newKey);\n } else {\n throw new Error('Unsupported encKey type.');\n }\n\n if (decEncKey == null) {\n return null;\n }\n this.encKey = new SymmetricCryptoKey(decEncKey);\n return this.encKey;\n }\n\n async getPublicKey(): Promise {\n if (this.publicKey != null) {\n return this.publicKey;\n }\n\n const privateKey = await this.getPrivateKey();\n if (privateKey == null) {\n return null;\n }\n\n this.publicKey = await this.cryptoFunctionService.rsaExtractPublicKey(privateKey);\n return this.publicKey;\n }\n\n async getPrivateKey(): Promise {\n if (this.privateKey != null) {\n return this.privateKey;\n }\n\n const encPrivateKey = await this.storageService.get(Keys.encPrivateKey);\n if (encPrivateKey == null) {\n return null;\n }\n\n this.privateKey = await this.decryptToBytes(new CipherString(encPrivateKey), null);\n return this.privateKey;\n }\n\n async getFingerprint(userId: string, publicKey?: ArrayBuffer): Promise {\n if (publicKey == null) {\n publicKey = await this.getPublicKey();\n }\n if (publicKey === null) {\n throw new Error('No public key available.');\n }\n const keyFingerprint = await this.cryptoFunctionService.hash(publicKey, 'sha256');\n const userFingerprint = await this.cryptoFunctionService.hkdfExpand(keyFingerprint, userId, 32, 'sha256');\n return this.hashPhrase(userFingerprint);\n }\n\n @sequentialize(() => 'getOrgKeys')\n async getOrgKeys(): Promise> {\n if (this.orgKeys != null && this.orgKeys.size > 0) {\n return this.orgKeys;\n }\n\n const encOrgKeys = await this.storageService.get(Keys.encOrgKeys);\n if (encOrgKeys == null) {\n return null;\n }\n\n const orgKeys: Map = new Map();\n let setKey = false;\n\n for (const orgId in encOrgKeys) {\n if (!encOrgKeys.hasOwnProperty(orgId)) {\n continue;\n }\n\n const decValue = await this.rsaDecrypt(encOrgKeys[orgId]);\n orgKeys.set(orgId, new SymmetricCryptoKey(decValue));\n setKey = true;\n }\n\n if (setKey) {\n this.orgKeys = orgKeys;\n }\n\n return this.orgKeys;\n }\n\n async getOrgKey(orgId: string): Promise {\n if (orgId == null) {\n return null;\n }\n\n const orgKeys = await this.getOrgKeys();\n if (orgKeys == null || !orgKeys.has(orgId)) {\n return null;\n }\n\n return orgKeys.get(orgId);\n }\n\n async hasKey(): Promise {\n return (await this.getKey()) != null;\n }\n\n async hasEncKey(): Promise {\n const encKey = await this.storageService.get(Keys.encKey);\n return encKey != null;\n }\n\n clearKey(): Promise {\n this.key = this.legacyEtmKey = null;\n return this.secureStorageService.remove(Keys.key);\n }\n\n clearKeyHash(): Promise {\n this.keyHash = null;\n return this.storageService.remove(Keys.keyHash);\n }\n\n clearEncKey(memoryOnly?: boolean): Promise {\n this.encKey = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encKey);\n }\n\n clearKeyPair(memoryOnly?: boolean): Promise {\n this.privateKey = null;\n this.publicKey = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encPrivateKey);\n }\n\n clearOrgKeys(memoryOnly?: boolean): Promise {\n this.orgKeys = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encOrgKeys);\n }\n\n clearPinProtectedKey(): Promise {\n return this.storageService.remove(ConstantsService.pinProtectedKey);\n }\n\n clearKeys(): Promise {\n return Promise.all([\n this.clearKey(),\n this.clearKeyHash(),\n this.clearOrgKeys(),\n this.clearEncKey(),\n this.clearKeyPair(),\n this.clearPinProtectedKey(),\n ]);\n }\n\n async toggleKey(): Promise {\n const key = await this.getKey();\n const option = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n const biometric = await this.storageService.get(ConstantsService.biometricUnlockKey);\n if ((!biometric && this.platformUtilService.supportsSecureStorage()) && (option != null || option === 0)) {\n // if we have a lock option set, clear the key\n await this.clearKey();\n this.key = key;\n return;\n }\n\n await this.setKey(key);\n }\n\n async makeKey(password: string, salt: string, kdf: KdfType, kdfIterations: number):\n Promise {\n let key: ArrayBuffer = null;\n if (kdf == null || kdf === KdfType.PBKDF2_SHA256) {\n if (kdfIterations == null) {\n kdfIterations = 5000;\n } else if (kdfIterations < 5000) {\n throw new Error('PBKDF2 iteration minimum is 5000.');\n }\n key = await this.cryptoFunctionService.pbkdf2(password, salt, 'sha256', kdfIterations);\n } else {\n throw new Error('Unknown Kdf.');\n }\n return new SymmetricCryptoKey(key);\n }\n\n async makeKeyFromPin(pin: string, salt: string, kdf: KdfType, kdfIterations: number,\n protectedKeyCs: CipherString = null):\n Promise {\n if (protectedKeyCs == null) {\n const pinProtectedKey = await this.storageService.get(ConstantsService.pinProtectedKey);\n if (pinProtectedKey == null) {\n throw new Error('No PIN protected key found.');\n }\n protectedKeyCs = new CipherString(pinProtectedKey);\n }\n const pinKey = await this.makePinKey(pin, salt, kdf, kdfIterations);\n const decKey = await this.decryptToBytes(protectedKeyCs, pinKey);\n return new SymmetricCryptoKey(decKey);\n }\n\n async makeShareKey(): Promise<[CipherString, SymmetricCryptoKey]> {\n const shareKey = await this.cryptoFunctionService.randomBytes(64);\n const publicKey = await this.getPublicKey();\n const encShareKey = await this.rsaEncrypt(shareKey, publicKey);\n return [encShareKey, new SymmetricCryptoKey(shareKey)];\n }\n\n async makeKeyPair(key?: SymmetricCryptoKey): Promise<[string, CipherString]> {\n const keyPair = await this.cryptoFunctionService.rsaGenerateKeyPair(2048);\n const publicB64 = Utils.fromBufferToB64(keyPair[0]);\n const privateEnc = await this.encrypt(keyPair[1], key);\n return [publicB64, privateEnc];\n }\n\n async makePinKey(pin: string, salt: string, kdf: KdfType, kdfIterations: number): Promise {\n const pinKey = await this.makeKey(pin, salt, kdf, kdfIterations);\n return await this.stretchKey(pinKey);\n }\n\n async makeSendKey(keyMaterial: ArrayBuffer): Promise {\n const sendKey = await this.cryptoFunctionService.hkdf(keyMaterial, 'bitwarden-send', 'send', 64, 'sha256');\n return new SymmetricCryptoKey(sendKey);\n }\n\n async hashPassword(password: string, key: SymmetricCryptoKey): Promise {\n if (key == null) {\n key = await this.getKey();\n }\n if (password == null || key == null) {\n throw new Error('Invalid parameters.');\n }\n\n const hash = await this.cryptoFunctionService.pbkdf2(key.key, password, 'sha256', 1);\n return Utils.fromBufferToB64(hash);\n }\n\n async makeEncKey(key: SymmetricCryptoKey): Promise<[SymmetricCryptoKey, CipherString]> {\n const theKey = await this.getKeyForEncryption(key);\n const encKey = await this.cryptoFunctionService.randomBytes(64);\n return this.buildEncKey(theKey, encKey);\n }\n\n async remakeEncKey(key: SymmetricCryptoKey, encKey?: SymmetricCryptoKey): Promise<[SymmetricCryptoKey, CipherString]> {\n if (encKey == null) {\n encKey = await this.getEncKey();\n }\n return this.buildEncKey(key, encKey.key);\n }\n\n async encrypt(plainValue: string | ArrayBuffer, key?: SymmetricCryptoKey): Promise {\n if (plainValue == null) {\n return Promise.resolve(null);\n }\n\n let plainBuf: ArrayBuffer;\n if (typeof (plainValue) === 'string') {\n plainBuf = Utils.fromUtf8ToArray(plainValue).buffer;\n } else {\n plainBuf = plainValue;\n }\n\n const encObj = await this.aesEncrypt(plainBuf, key);\n const iv = Utils.fromBufferToB64(encObj.iv);\n const data = Utils.fromBufferToB64(encObj.data);\n const mac = encObj.mac != null ? Utils.fromBufferToB64(encObj.mac) : null;\n return new CipherString(encObj.key.encType, data, iv, mac);\n }\n\n async encryptToBytes(plainValue: ArrayBuffer, key?: SymmetricCryptoKey): Promise {\n const encValue = await this.aesEncrypt(plainValue, key);\n let macLen = 0;\n if (encValue.mac != null) {\n macLen = encValue.mac.byteLength;\n }\n\n const encBytes = new Uint8Array(1 + encValue.iv.byteLength + macLen + encValue.data.byteLength);\n encBytes.set([encValue.key.encType]);\n encBytes.set(new Uint8Array(encValue.iv), 1);\n if (encValue.mac != null) {\n encBytes.set(new Uint8Array(encValue.mac), 1 + encValue.iv.byteLength);\n }\n\n encBytes.set(new Uint8Array(encValue.data), 1 + encValue.iv.byteLength + macLen);\n return encBytes.buffer;\n }\n\n async rsaEncrypt(data: ArrayBuffer, publicKey?: ArrayBuffer): Promise {\n if (publicKey == null) {\n publicKey = await this.getPublicKey();\n }\n if (publicKey == null) {\n throw new Error('Public key unavailable.');\n }\n\n const encBytes = await this.cryptoFunctionService.rsaEncrypt(data, publicKey, 'sha1');\n return new CipherString(EncryptionType.Rsa2048_OaepSha1_B64, Utils.fromBufferToB64(encBytes));\n }\n\n async rsaDecrypt(encValue: string): Promise {\n const headerPieces = encValue.split('.');\n let encType: EncryptionType = null;\n let encPieces: string[];\n\n if (headerPieces.length === 1) {\n encType = EncryptionType.Rsa2048_OaepSha256_B64;\n encPieces = [headerPieces[0]];\n } else if (headerPieces.length === 2) {\n try {\n encType = parseInt(headerPieces[0], null);\n encPieces = headerPieces[1].split('|');\n } catch (e) { }\n }\n\n switch (encType) {\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_B64:\n // HmacSha256 types are deprecated\n case EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:\n break;\n default:\n throw new Error('encType unavailable.');\n }\n\n if (encPieces == null || encPieces.length <= 0) {\n throw new Error('encPieces unavailable.');\n }\n\n const data = Utils.fromB64ToArray(encPieces[0]).buffer;\n const privateKey = await this.getPrivateKey();\n if (privateKey == null) {\n throw new Error('No private key.');\n }\n\n let alg: 'sha1' | 'sha256' = 'sha1';\n switch (encType) {\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:\n alg = 'sha256';\n break;\n case EncryptionType.Rsa2048_OaepSha1_B64:\n case EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:\n break;\n default:\n throw new Error('encType unavailable.');\n }\n\n return this.cryptoFunctionService.rsaDecrypt(data, privateKey, alg);\n }\n\n async decryptToBytes(cipherString: CipherString, key?: SymmetricCryptoKey): Promise {\n const iv = Utils.fromB64ToArray(cipherString.iv).buffer;\n const data = Utils.fromB64ToArray(cipherString.data).buffer;\n const mac = cipherString.mac ? Utils.fromB64ToArray(cipherString.mac).buffer : null;\n const decipher = await this.aesDecryptToBytes(cipherString.encryptionType, data, iv, mac, key);\n if (decipher == null) {\n return null;\n }\n\n return decipher;\n }\n\n async decryptToUtf8(cipherString: CipherString, key?: SymmetricCryptoKey): Promise {\n return await this.aesDecryptToUtf8(cipherString.encryptionType, cipherString.data,\n cipherString.iv, cipherString.mac, key);\n }\n\n async decryptFromBytes(encBuf: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n if (encBuf == null) {\n throw new Error('no encBuf.');\n }\n\n const encBytes = new Uint8Array(encBuf);\n const encType = encBytes[0];\n let ctBytes: Uint8Array = null;\n let ivBytes: Uint8Array = null;\n let macBytes: Uint8Array = null;\n\n switch (encType) {\n case EncryptionType.AesCbc128_HmacSha256_B64:\n case EncryptionType.AesCbc256_HmacSha256_B64:\n if (encBytes.length <= 49) { // 1 + 16 + 32 + ctLength\n return null;\n }\n\n ivBytes = encBytes.slice(1, 17);\n macBytes = encBytes.slice(17, 49);\n ctBytes = encBytes.slice(49);\n break;\n case EncryptionType.AesCbc256_B64:\n if (encBytes.length <= 17) { // 1 + 16 + ctLength\n return null;\n }\n\n ivBytes = encBytes.slice(1, 17);\n ctBytes = encBytes.slice(17);\n break;\n default:\n return null;\n }\n\n return await this.aesDecryptToBytes(encType, ctBytes.buffer, ivBytes.buffer,\n macBytes != null ? macBytes.buffer : null, key);\n }\n\n // EFForg/OpenWireless\n // ref https://github.com/EFForg/OpenWireless/blob/master/app/js/diceware.js\n async randomNumber(min: number, max: number): Promise {\n let rval = 0;\n const range = max - min + 1;\n const bitsNeeded = Math.ceil(Math.log2(range));\n if (bitsNeeded > 53) {\n throw new Error('We cannot generate numbers larger than 53 bits.');\n }\n\n const bytesNeeded = Math.ceil(bitsNeeded / 8);\n const mask = Math.pow(2, bitsNeeded) - 1;\n // 7776 -> (2^13 = 8192) -1 == 8191 or 0x00001111 11111111\n\n // Fill a byte array with N random numbers\n const byteArray = new Uint8Array(await this.cryptoFunctionService.randomBytes(bytesNeeded));\n\n let p = (bytesNeeded - 1) * 8;\n for (let i = 0; i < bytesNeeded; i++) {\n rval += byteArray[i] * Math.pow(2, p);\n p -= 8;\n }\n\n // Use & to apply the mask and reduce the number of recursive lookups\n // tslint:disable-next-line\n rval = rval & mask;\n\n if (rval >= range) {\n // Integer out of acceptable range\n return this.randomNumber(min, max);\n }\n\n // Return an integer that falls within the range\n return min + rval;\n }\n\n // Helpers\n\n private async aesEncrypt(data: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n const obj = new EncryptedObject();\n obj.key = await this.getKeyForEncryption(key);\n obj.iv = await this.cryptoFunctionService.randomBytes(16);\n obj.data = await this.cryptoFunctionService.aesEncrypt(data, obj.iv, obj.key.encKey);\n\n if (obj.key.macKey != null) {\n const macData = new Uint8Array(obj.iv.byteLength + obj.data.byteLength);\n macData.set(new Uint8Array(obj.iv), 0);\n macData.set(new Uint8Array(obj.data), obj.iv.byteLength);\n obj.mac = await this.cryptoFunctionService.hmac(macData.buffer, obj.key.macKey, 'sha256');\n }\n\n return obj;\n }\n\n private async aesDecryptToUtf8(encType: EncryptionType, data: string, iv: string, mac: string,\n key: SymmetricCryptoKey): Promise {\n const keyForEnc = await this.getKeyForEncryption(key);\n const theKey = this.resolveLegacyKey(encType, keyForEnc);\n\n if (theKey.macKey != null && mac == null) {\n this.logService.error('mac required.');\n return null;\n }\n\n if (theKey.encType !== encType) {\n this.logService.error('encType unavailable.');\n return null;\n }\n\n const fastParams = this.cryptoFunctionService.aesDecryptFastParameters(data, iv, mac, theKey);\n if (fastParams.macKey != null && fastParams.mac != null) {\n const computedMac = await this.cryptoFunctionService.hmacFast(fastParams.macData,\n fastParams.macKey, 'sha256');\n const macsEqual = await this.cryptoFunctionService.compareFast(fastParams.mac, computedMac);\n if (!macsEqual) {\n this.logService.error('mac failed.');\n return null;\n }\n }\n\n return this.cryptoFunctionService.aesDecryptFast(fastParams);\n }\n\n private async aesDecryptToBytes(encType: EncryptionType, data: ArrayBuffer, iv: ArrayBuffer,\n mac: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n const keyForEnc = await this.getKeyForEncryption(key);\n const theKey = this.resolveLegacyKey(encType, keyForEnc);\n\n if (theKey.macKey != null && mac == null) {\n return null;\n }\n\n if (theKey.encType !== encType) {\n return null;\n }\n\n if (theKey.macKey != null && mac != null) {\n const macData = new Uint8Array(iv.byteLength + data.byteLength);\n macData.set(new Uint8Array(iv), 0);\n macData.set(new Uint8Array(data), iv.byteLength);\n const computedMac = await this.cryptoFunctionService.hmac(macData.buffer, theKey.macKey, 'sha256');\n if (computedMac === null) {\n return null;\n }\n\n const macsMatch = await this.cryptoFunctionService.compare(mac, computedMac);\n if (!macsMatch) {\n this.logService.error('mac failed.');\n return null;\n }\n }\n\n return await this.cryptoFunctionService.aesDecrypt(data, iv, theKey.encKey);\n }\n\n private async getKeyForEncryption(key?: SymmetricCryptoKey): Promise {\n if (key != null) {\n return key;\n }\n\n const encKey = await this.getEncKey();\n if (encKey != null) {\n return encKey;\n }\n\n return await this.getKey();\n }\n\n private resolveLegacyKey(encType: EncryptionType, key: SymmetricCryptoKey): SymmetricCryptoKey {\n if (encType === EncryptionType.AesCbc128_HmacSha256_B64 &&\n key.encType === EncryptionType.AesCbc256_B64) {\n // Old encrypt-then-mac scheme, make a new key\n if (this.legacyEtmKey == null) {\n this.legacyEtmKey = new SymmetricCryptoKey(key.key, EncryptionType.AesCbc128_HmacSha256_B64);\n }\n return this.legacyEtmKey;\n }\n\n return key;\n }\n\n private async stretchKey(key: SymmetricCryptoKey): Promise {\n const newKey = new Uint8Array(64);\n const encKey = await this.cryptoFunctionService.hkdfExpand(key.key, 'enc', 32, 'sha256');\n const macKey = await this.cryptoFunctionService.hkdfExpand(key.key, 'mac', 32, 'sha256');\n newKey.set(new Uint8Array(encKey));\n newKey.set(new Uint8Array(macKey), 32);\n return new SymmetricCryptoKey(newKey.buffer);\n }\n\n private async hashPhrase(hash: ArrayBuffer, minimumEntropy: number = 64) {\n const entropyPerWord = Math.log(EEFLongWordList.length) / Math.log(2);\n let numWords = Math.ceil(minimumEntropy / entropyPerWord);\n\n const hashArr = Array.from(new Uint8Array(hash));\n const entropyAvailable = hashArr.length * 4;\n if (numWords * entropyPerWord > entropyAvailable) {\n throw new Error('Output entropy of hash function is too small');\n }\n\n const phrase: string[] = [];\n let hashNumber = bigInt.fromArray(hashArr, 256);\n while (numWords--) {\n const remainder = hashNumber.mod(EEFLongWordList.length);\n hashNumber = hashNumber.divide(EEFLongWordList.length);\n phrase.push(EEFLongWordList[remainder as any]);\n }\n return phrase;\n }\n\n private async buildEncKey(key: SymmetricCryptoKey, encKey: ArrayBuffer)\n : Promise<[SymmetricCryptoKey, CipherString]> {\n let encKeyEnc: CipherString = null;\n if (key.key.byteLength === 32) {\n const newKey = await this.stretchKey(key);\n encKeyEnc = await this.encrypt(encKey, newKey);\n } else if (key.key.byteLength === 64) {\n encKeyEnc = await this.encrypt(encKey, key);\n } else {\n throw new Error('Invalid key size.');\n }\n return [new SymmetricCryptoKey(encKey), encKeyEnc];\n }\n}\n","// EFF's Long Wordlist from https://www.eff.org/dice\nexport const EEFLongWordList = [\n 'abacus',\n 'abdomen',\n 'abdominal',\n 'abide',\n 'abiding',\n 'ability',\n 'ablaze',\n 'able',\n 'abnormal',\n 'abrasion',\n 'abrasive',\n 'abreast',\n 'abridge',\n 'abroad',\n 'abruptly',\n 'absence',\n 'absentee',\n 'absently',\n 'absinthe',\n 'absolute',\n 'absolve',\n 'abstain',\n 'abstract',\n 'absurd',\n 'accent',\n 'acclaim',\n 'acclimate',\n 'accompany',\n 'account',\n 'accuracy',\n 'accurate',\n 'accustom',\n 'acetone',\n 'achiness',\n 'aching',\n 'acid',\n 'acorn',\n 'acquaint',\n 'acquire',\n 'acre',\n 'acrobat',\n 'acronym',\n 'acting',\n 'action',\n 'activate',\n 'activator',\n 'active',\n 'activism',\n 'activist',\n 'activity',\n 'actress',\n 'acts',\n 'acutely',\n 'acuteness',\n 'aeration',\n 'aerobics',\n 'aerosol',\n 'aerospace',\n 'afar',\n 'affair',\n 'affected',\n 'affecting',\n 'affection',\n 'affidavit',\n 'affiliate',\n 'affirm',\n 'affix',\n 'afflicted',\n 'affluent',\n 'afford',\n 'affront',\n 'aflame',\n 'afloat',\n 'aflutter',\n 'afoot',\n 'afraid',\n 'afterglow',\n 'afterlife',\n 'aftermath',\n 'aftermost',\n 'afternoon',\n 'aged',\n 'ageless',\n 'agency',\n 'agenda',\n 'agent',\n 'aggregate',\n 'aghast',\n 'agile',\n 'agility',\n 'aging',\n 'agnostic',\n 'agonize',\n 'agonizing',\n 'agony',\n 'agreeable',\n 'agreeably',\n 'agreed',\n 'agreeing',\n 'agreement',\n 'aground',\n 'ahead',\n 'ahoy',\n 'aide',\n 'aids',\n 'aim',\n 'ajar',\n 'alabaster',\n 'alarm',\n 'albatross',\n 'album',\n 'alfalfa',\n 'algebra',\n 'algorithm',\n 'alias',\n 'alibi',\n 'alienable',\n 'alienate',\n 'aliens',\n 'alike',\n 'alive',\n 'alkaline',\n 'alkalize',\n 'almanac',\n 'almighty',\n 'almost',\n 'aloe',\n 'aloft',\n 'aloha',\n 'alone',\n 'alongside',\n 'aloof',\n 'alphabet',\n 'alright',\n 'although',\n 'altitude',\n 'alto',\n 'aluminum',\n 'alumni',\n 'always',\n 'amaretto',\n 'amaze',\n 'amazingly',\n 'amber',\n 'ambiance',\n 'ambiguity',\n 'ambiguous',\n 'ambition',\n 'ambitious',\n 'ambulance',\n 'ambush',\n 'amendable',\n 'amendment',\n 'amends',\n 'amenity',\n 'amiable',\n 'amicably',\n 'amid',\n 'amigo',\n 'amino',\n 'amiss',\n 'ammonia',\n 'ammonium',\n 'amnesty',\n 'amniotic',\n 'among',\n 'amount',\n 'amperage',\n 'ample',\n 'amplifier',\n 'amplify',\n 'amply',\n 'amuck',\n 'amulet',\n 'amusable',\n 'amused',\n 'amusement',\n 'amuser',\n 'amusing',\n 'anaconda',\n 'anaerobic',\n 'anagram',\n 'anatomist',\n 'anatomy',\n 'anchor',\n 'anchovy',\n 'ancient',\n 'android',\n 'anemia',\n 'anemic',\n 'aneurism',\n 'anew',\n 'angelfish',\n 'angelic',\n 'anger',\n 'angled',\n 'angler',\n 'angles',\n 'angling',\n 'angrily',\n 'angriness',\n 'anguished',\n 'angular',\n 'animal',\n 'animate',\n 'animating',\n 'animation',\n 'animator',\n 'anime',\n 'animosity',\n 'ankle',\n 'annex',\n 'annotate',\n 'announcer',\n 'annoying',\n 'annually',\n 'annuity',\n 'anointer',\n 'another',\n 'answering',\n 'antacid',\n 'antarctic',\n 'anteater',\n 'antelope',\n 'antennae',\n 'anthem',\n 'anthill',\n 'anthology',\n 'antibody',\n 'antics',\n 'antidote',\n 'antihero',\n 'antiquely',\n 'antiques',\n 'antiquity',\n 'antirust',\n 'antitoxic',\n 'antitrust',\n 'antiviral',\n 'antivirus',\n 'antler',\n 'antonym',\n 'antsy',\n 'anvil',\n 'anybody',\n 'anyhow',\n 'anymore',\n 'anyone',\n 'anyplace',\n 'anything',\n 'anytime',\n 'anyway',\n 'anywhere',\n 'aorta',\n 'apache',\n 'apostle',\n 'appealing',\n 'appear',\n 'appease',\n 'appeasing',\n 'appendage',\n 'appendix',\n 'appetite',\n 'appetizer',\n 'applaud',\n 'applause',\n 'apple',\n 'appliance',\n 'applicant',\n 'applied',\n 'apply',\n 'appointee',\n 'appraisal',\n 'appraiser',\n 'apprehend',\n 'approach',\n 'approval',\n 'approve',\n 'apricot',\n 'april',\n 'apron',\n 'aptitude',\n 'aptly',\n 'aqua',\n 'aqueduct',\n 'arbitrary',\n 'arbitrate',\n 'ardently',\n 'area',\n 'arena',\n 'arguable',\n 'arguably',\n 'argue',\n 'arise',\n 'armadillo',\n 'armband',\n 'armchair',\n 'armed',\n 'armful',\n 'armhole',\n 'arming',\n 'armless',\n 'armoire',\n 'armored',\n 'armory',\n 'armrest',\n 'army',\n 'aroma',\n 'arose',\n 'around',\n 'arousal',\n 'arrange',\n 'array',\n 'arrest',\n 'arrival',\n 'arrive',\n 'arrogance',\n 'arrogant',\n 'arson',\n 'art',\n 'ascend',\n 'ascension',\n 'ascent',\n 'ascertain',\n 'ashamed',\n 'ashen',\n 'ashes',\n 'ashy',\n 'aside',\n 'askew',\n 'asleep',\n 'asparagus',\n 'aspect',\n 'aspirate',\n 'aspire',\n 'aspirin',\n 'astonish',\n 'astound',\n 'astride',\n 'astrology',\n 'astronaut',\n 'astronomy',\n 'astute',\n 'atlantic',\n 'atlas',\n 'atom',\n 'atonable',\n 'atop',\n 'atrium',\n 'atrocious',\n 'atrophy',\n 'attach',\n 'attain',\n 'attempt',\n 'attendant',\n 'attendee',\n 'attention',\n 'attentive',\n 'attest',\n 'attic',\n 'attire',\n 'attitude',\n 'attractor',\n 'attribute',\n 'atypical',\n 'auction',\n 'audacious',\n 'audacity',\n 'audible',\n 'audibly',\n 'audience',\n 'audio',\n 'audition',\n 'augmented',\n 'august',\n 'authentic',\n 'author',\n 'autism',\n 'autistic',\n 'autograph',\n 'automaker',\n 'automated',\n 'automatic',\n 'autopilot',\n 'available',\n 'avalanche',\n 'avatar',\n 'avenge',\n 'avenging',\n 'avenue',\n 'average',\n 'aversion',\n 'avert',\n 'aviation',\n 'aviator',\n 'avid',\n 'avoid',\n 'await',\n 'awaken',\n 'award',\n 'aware',\n 'awhile',\n 'awkward',\n 'awning',\n 'awoke',\n 'awry',\n 'axis',\n 'babble',\n 'babbling',\n 'babied',\n 'baboon',\n 'backache',\n 'backboard',\n 'backboned',\n 'backdrop',\n 'backed',\n 'backer',\n 'backfield',\n 'backfire',\n 'backhand',\n 'backing',\n 'backlands',\n 'backlash',\n 'backless',\n 'backlight',\n 'backlit',\n 'backlog',\n 'backpack',\n 'backpedal',\n 'backrest',\n 'backroom',\n 'backshift',\n 'backside',\n 'backslid',\n 'backspace',\n 'backspin',\n 'backstab',\n 'backstage',\n 'backtalk',\n 'backtrack',\n 'backup',\n 'backward',\n 'backwash',\n 'backwater',\n 'backyard',\n 'bacon',\n 'bacteria',\n 'bacterium',\n 'badass',\n 'badge',\n 'badland',\n 'badly',\n 'badness',\n 'baffle',\n 'baffling',\n 'bagel',\n 'bagful',\n 'baggage',\n 'bagged',\n 'baggie',\n 'bagginess',\n 'bagging',\n 'baggy',\n 'bagpipe',\n 'baguette',\n 'baked',\n 'bakery',\n 'bakeshop',\n 'baking',\n 'balance',\n 'balancing',\n 'balcony',\n 'balmy',\n 'balsamic',\n 'bamboo',\n 'banana',\n 'banish',\n 'banister',\n 'banjo',\n 'bankable',\n 'bankbook',\n 'banked',\n 'banker',\n 'banking',\n 'banknote',\n 'bankroll',\n 'banner',\n 'bannister',\n 'banshee',\n 'banter',\n 'barbecue',\n 'barbed',\n 'barbell',\n 'barber',\n 'barcode',\n 'barge',\n 'bargraph',\n 'barista',\n 'baritone',\n 'barley',\n 'barmaid',\n 'barman',\n 'barn',\n 'barometer',\n 'barrack',\n 'barracuda',\n 'barrel',\n 'barrette',\n 'barricade',\n 'barrier',\n 'barstool',\n 'bartender',\n 'barterer',\n 'bash',\n 'basically',\n 'basics',\n 'basil',\n 'basin',\n 'basis',\n 'basket',\n 'batboy',\n 'batch',\n 'bath',\n 'baton',\n 'bats',\n 'battalion',\n 'battered',\n 'battering',\n 'battery',\n 'batting',\n 'battle',\n 'bauble',\n 'bazooka',\n 'blabber',\n 'bladder',\n 'blade',\n 'blah',\n 'blame',\n 'blaming',\n 'blanching',\n 'blandness',\n 'blank',\n 'blaspheme',\n 'blasphemy',\n 'blast',\n 'blatancy',\n 'blatantly',\n 'blazer',\n 'blazing',\n 'bleach',\n 'bleak',\n 'bleep',\n 'blemish',\n 'blend',\n 'bless',\n 'blighted',\n 'blimp',\n 'bling',\n 'blinked',\n 'blinker',\n 'blinking',\n 'blinks',\n 'blip',\n 'blissful',\n 'blitz',\n 'blizzard',\n 'bloated',\n 'bloating',\n 'blob',\n 'blog',\n 'bloomers',\n 'blooming',\n 'blooper',\n 'blot',\n 'blouse',\n 'blubber',\n 'bluff',\n 'bluish',\n 'blunderer',\n 'blunt',\n 'blurb',\n 'blurred',\n 'blurry',\n 'blurt',\n 'blush',\n 'blustery',\n 'boaster',\n 'boastful',\n 'boasting',\n 'boat',\n 'bobbed',\n 'bobbing',\n 'bobble',\n 'bobcat',\n 'bobsled',\n 'bobtail',\n 'bodacious',\n 'body',\n 'bogged',\n 'boggle',\n 'bogus',\n 'boil',\n 'bok',\n 'bolster',\n 'bolt',\n 'bonanza',\n 'bonded',\n 'bonding',\n 'bondless',\n 'boned',\n 'bonehead',\n 'boneless',\n 'bonelike',\n 'boney',\n 'bonfire',\n 'bonnet',\n 'bonsai',\n 'bonus',\n 'bony',\n 'boogeyman',\n 'boogieman',\n 'book',\n 'boondocks',\n 'booted',\n 'booth',\n 'bootie',\n 'booting',\n 'bootlace',\n 'bootleg',\n 'boots',\n 'boozy',\n 'borax',\n 'boring',\n 'borough',\n 'borrower',\n 'borrowing',\n 'boss',\n 'botanical',\n 'botanist',\n 'botany',\n 'botch',\n 'both',\n 'bottle',\n 'bottling',\n 'bottom',\n 'bounce',\n 'bouncing',\n 'bouncy',\n 'bounding',\n 'boundless',\n 'bountiful',\n 'bovine',\n 'boxcar',\n 'boxer',\n 'boxing',\n 'boxlike',\n 'boxy',\n 'breach',\n 'breath',\n 'breeches',\n 'breeching',\n 'breeder',\n 'breeding',\n 'breeze',\n 'breezy',\n 'brethren',\n 'brewery',\n 'brewing',\n 'briar',\n 'bribe',\n 'brick',\n 'bride',\n 'bridged',\n 'brigade',\n 'bright',\n 'brilliant',\n 'brim',\n 'bring',\n 'brink',\n 'brisket',\n 'briskly',\n 'briskness',\n 'bristle',\n 'brittle',\n 'broadband',\n 'broadcast',\n 'broaden',\n 'broadly',\n 'broadness',\n 'broadside',\n 'broadways',\n 'broiler',\n 'broiling',\n 'broken',\n 'broker',\n 'bronchial',\n 'bronco',\n 'bronze',\n 'bronzing',\n 'brook',\n 'broom',\n 'brought',\n 'browbeat',\n 'brownnose',\n 'browse',\n 'browsing',\n 'bruising',\n 'brunch',\n 'brunette',\n 'brunt',\n 'brush',\n 'brussels',\n 'brute',\n 'brutishly',\n 'bubble',\n 'bubbling',\n 'bubbly',\n 'buccaneer',\n 'bucked',\n 'bucket',\n 'buckle',\n 'buckshot',\n 'buckskin',\n 'bucktooth',\n 'buckwheat',\n 'buddhism',\n 'buddhist',\n 'budding',\n 'buddy',\n 'budget',\n 'buffalo',\n 'buffed',\n 'buffer',\n 'buffing',\n 'buffoon',\n 'buggy',\n 'bulb',\n 'bulge',\n 'bulginess',\n 'bulgur',\n 'bulk',\n 'bulldog',\n 'bulldozer',\n 'bullfight',\n 'bullfrog',\n 'bullhorn',\n 'bullion',\n 'bullish',\n 'bullpen',\n 'bullring',\n 'bullseye',\n 'bullwhip',\n 'bully',\n 'bunch',\n 'bundle',\n 'bungee',\n 'bunion',\n 'bunkbed',\n 'bunkhouse',\n 'bunkmate',\n 'bunny',\n 'bunt',\n 'busboy',\n 'bush',\n 'busily',\n 'busload',\n 'bust',\n 'busybody',\n 'buzz',\n 'cabana',\n 'cabbage',\n 'cabbie',\n 'cabdriver',\n 'cable',\n 'caboose',\n 'cache',\n 'cackle',\n 'cacti',\n 'cactus',\n 'caddie',\n 'caddy',\n 'cadet',\n 'cadillac',\n 'cadmium',\n 'cage',\n 'cahoots',\n 'cake',\n 'calamari',\n 'calamity',\n 'calcium',\n 'calculate',\n 'calculus',\n 'caliber',\n 'calibrate',\n 'calm',\n 'caloric',\n 'calorie',\n 'calzone',\n 'camcorder',\n 'cameo',\n 'camera',\n 'camisole',\n 'camper',\n 'campfire',\n 'camping',\n 'campsite',\n 'campus',\n 'canal',\n 'canary',\n 'cancel',\n 'candied',\n 'candle',\n 'candy',\n 'cane',\n 'canine',\n 'canister',\n 'cannabis',\n 'canned',\n 'canning',\n 'cannon',\n 'cannot',\n 'canola',\n 'canon',\n 'canopener',\n 'canopy',\n 'canteen',\n 'canyon',\n 'capable',\n 'capably',\n 'capacity',\n 'cape',\n 'capillary',\n 'capital',\n 'capitol',\n 'capped',\n 'capricorn',\n 'capsize',\n 'capsule',\n 'caption',\n 'captivate',\n 'captive',\n 'captivity',\n 'capture',\n 'caramel',\n 'carat',\n 'caravan',\n 'carbon',\n 'cardboard',\n 'carded',\n 'cardiac',\n 'cardigan',\n 'cardinal',\n 'cardstock',\n 'carefully',\n 'caregiver',\n 'careless',\n 'caress',\n 'caretaker',\n 'cargo',\n 'caring',\n 'carless',\n 'carload',\n 'carmaker',\n 'carnage',\n 'carnation',\n 'carnival',\n 'carnivore',\n 'carol',\n 'carpenter',\n 'carpentry',\n 'carpool',\n 'carport',\n 'carried',\n 'carrot',\n 'carrousel',\n 'carry',\n 'cartel',\n 'cartload',\n 'carton',\n 'cartoon',\n 'cartridge',\n 'cartwheel',\n 'carve',\n 'carving',\n 'carwash',\n 'cascade',\n 'case',\n 'cash',\n 'casing',\n 'casino',\n 'casket',\n 'cassette',\n 'casually',\n 'casualty',\n 'catacomb',\n 'catalog',\n 'catalyst',\n 'catalyze',\n 'catapult',\n 'cataract',\n 'catatonic',\n 'catcall',\n 'catchable',\n 'catcher',\n 'catching',\n 'catchy',\n 'caterer',\n 'catering',\n 'catfight',\n 'catfish',\n 'cathedral',\n 'cathouse',\n 'catlike',\n 'catnap',\n 'catnip',\n 'catsup',\n 'cattail',\n 'cattishly',\n 'cattle',\n 'catty',\n 'catwalk',\n 'caucasian',\n 'caucus',\n 'causal',\n 'causation',\n 'cause',\n 'causing',\n 'cauterize',\n 'caution',\n 'cautious',\n 'cavalier',\n 'cavalry',\n 'caviar',\n 'cavity',\n 'cedar',\n 'celery',\n 'celestial',\n 'celibacy',\n 'celibate',\n 'celtic',\n 'cement',\n 'census',\n 'ceramics',\n 'ceremony',\n 'certainly',\n 'certainty',\n 'certified',\n 'certify',\n 'cesarean',\n 'cesspool',\n 'chafe',\n 'chaffing',\n 'chain',\n 'chair',\n 'chalice',\n 'challenge',\n 'chamber',\n 'chamomile',\n 'champion',\n 'chance',\n 'change',\n 'channel',\n 'chant',\n 'chaos',\n 'chaperone',\n 'chaplain',\n 'chapped',\n 'chaps',\n 'chapter',\n 'character',\n 'charbroil',\n 'charcoal',\n 'charger',\n 'charging',\n 'chariot',\n 'charity',\n 'charm',\n 'charred',\n 'charter',\n 'charting',\n 'chase',\n 'chasing',\n 'chaste',\n 'chastise',\n 'chastity',\n 'chatroom',\n 'chatter',\n 'chatting',\n 'chatty',\n 'cheating',\n 'cheddar',\n 'cheek',\n 'cheer',\n 'cheese',\n 'cheesy',\n 'chef',\n 'chemicals',\n 'chemist',\n 'chemo',\n 'cherisher',\n 'cherub',\n 'chess',\n 'chest',\n 'chevron',\n 'chevy',\n 'chewable',\n 'chewer',\n 'chewing',\n 'chewy',\n 'chief',\n 'chihuahua',\n 'childcare',\n 'childhood',\n 'childish',\n 'childless',\n 'childlike',\n 'chili',\n 'chill',\n 'chimp',\n 'chip',\n 'chirping',\n 'chirpy',\n 'chitchat',\n 'chivalry',\n 'chive',\n 'chloride',\n 'chlorine',\n 'choice',\n 'chokehold',\n 'choking',\n 'chomp',\n 'chooser',\n 'choosing',\n 'choosy',\n 'chop',\n 'chosen',\n 'chowder',\n 'chowtime',\n 'chrome',\n 'chubby',\n 'chuck',\n 'chug',\n 'chummy',\n 'chump',\n 'chunk',\n 'churn',\n 'chute',\n 'cider',\n 'cilantro',\n 'cinch',\n 'cinema',\n 'cinnamon',\n 'circle',\n 'circling',\n 'circular',\n 'circulate',\n 'circus',\n 'citable',\n 'citadel',\n 'citation',\n 'citizen',\n 'citric',\n 'citrus',\n 'city',\n 'civic',\n 'civil',\n 'clad',\n 'claim',\n 'clambake',\n 'clammy',\n 'clamor',\n 'clamp',\n 'clamshell',\n 'clang',\n 'clanking',\n 'clapped',\n 'clapper',\n 'clapping',\n 'clarify',\n 'clarinet',\n 'clarity',\n 'clash',\n 'clasp',\n 'class',\n 'clatter',\n 'clause',\n 'clavicle',\n 'claw',\n 'clay',\n 'clean',\n 'clear',\n 'cleat',\n 'cleaver',\n 'cleft',\n 'clench',\n 'clergyman',\n 'clerical',\n 'clerk',\n 'clever',\n 'clicker',\n 'client',\n 'climate',\n 'climatic',\n 'cling',\n 'clinic',\n 'clinking',\n 'clip',\n 'clique',\n 'cloak',\n 'clobber',\n 'clock',\n 'clone',\n 'cloning',\n 'closable',\n 'closure',\n 'clothes',\n 'clothing',\n 'cloud',\n 'clover',\n 'clubbed',\n 'clubbing',\n 'clubhouse',\n 'clump',\n 'clumsily',\n 'clumsy',\n 'clunky',\n 'clustered',\n 'clutch',\n 'clutter',\n 'coach',\n 'coagulant',\n 'coastal',\n 'coaster',\n 'coasting',\n 'coastland',\n 'coastline',\n 'coat',\n 'coauthor',\n 'cobalt',\n 'cobbler',\n 'cobweb',\n 'cocoa',\n 'coconut',\n 'cod',\n 'coeditor',\n 'coerce',\n 'coexist',\n 'coffee',\n 'cofounder',\n 'cognition',\n 'cognitive',\n 'cogwheel',\n 'coherence',\n 'coherent',\n 'cohesive',\n 'coil',\n 'coke',\n 'cola',\n 'cold',\n 'coleslaw',\n 'coliseum',\n 'collage',\n 'collapse',\n 'collar',\n 'collected',\n 'collector',\n 'collide',\n 'collie',\n 'collision',\n 'colonial',\n 'colonist',\n 'colonize',\n 'colony',\n 'colossal',\n 'colt',\n 'coma',\n 'come',\n 'comfort',\n 'comfy',\n 'comic',\n 'coming',\n 'comma',\n 'commence',\n 'commend',\n 'comment',\n 'commerce',\n 'commode',\n 'commodity',\n 'commodore',\n 'common',\n 'commotion',\n 'commute',\n 'commuting',\n 'compacted',\n 'compacter',\n 'compactly',\n 'compactor',\n 'companion',\n 'company',\n 'compare',\n 'compel',\n 'compile',\n 'comply',\n 'component',\n 'composed',\n 'composer',\n 'composite',\n 'compost',\n 'composure',\n 'compound',\n 'compress',\n 'comprised',\n 'computer',\n 'computing',\n 'comrade',\n 'concave',\n 'conceal',\n 'conceded',\n 'concept',\n 'concerned',\n 'concert',\n 'conch',\n 'concierge',\n 'concise',\n 'conclude',\n 'concrete',\n 'concur',\n 'condense',\n 'condiment',\n 'condition',\n 'condone',\n 'conducive',\n 'conductor',\n 'conduit',\n 'cone',\n 'confess',\n 'confetti',\n 'confidant',\n 'confident',\n 'confider',\n 'confiding',\n 'configure',\n 'confined',\n 'confining',\n 'confirm',\n 'conflict',\n 'conform',\n 'confound',\n 'confront',\n 'confused',\n 'confusing',\n 'confusion',\n 'congenial',\n 'congested',\n 'congrats',\n 'congress',\n 'conical',\n 'conjoined',\n 'conjure',\n 'conjuror',\n 'connected',\n 'connector',\n 'consensus',\n 'consent',\n 'console',\n 'consoling',\n 'consonant',\n 'constable',\n 'constant',\n 'constrain',\n 'constrict',\n 'construct',\n 'consult',\n 'consumer',\n 'consuming',\n 'contact',\n 'container',\n 'contempt',\n 'contend',\n 'contented',\n 'contently',\n 'contents',\n 'contest',\n 'context',\n 'contort',\n 'contour',\n 'contrite',\n 'control',\n 'contusion',\n 'convene',\n 'convent',\n 'copartner',\n 'cope',\n 'copied',\n 'copier',\n 'copilot',\n 'coping',\n 'copious',\n 'copper',\n 'copy',\n 'coral',\n 'cork',\n 'cornball',\n 'cornbread',\n 'corncob',\n 'cornea',\n 'corned',\n 'corner',\n 'cornfield',\n 'cornflake',\n 'cornhusk',\n 'cornmeal',\n 'cornstalk',\n 'corny',\n 'coronary',\n 'coroner',\n 'corporal',\n 'corporate',\n 'corral',\n 'correct',\n 'corridor',\n 'corrode',\n 'corroding',\n 'corrosive',\n 'corsage',\n 'corset',\n 'cortex',\n 'cosigner',\n 'cosmetics',\n 'cosmic',\n 'cosmos',\n 'cosponsor',\n 'cost',\n 'cottage',\n 'cotton',\n 'couch',\n 'cough',\n 'could',\n 'countable',\n 'countdown',\n 'counting',\n 'countless',\n 'country',\n 'county',\n 'courier',\n 'covenant',\n 'cover',\n 'coveted',\n 'coveting',\n 'coyness',\n 'cozily',\n 'coziness',\n 'cozy',\n 'crabbing',\n 'crabgrass',\n 'crablike',\n 'crabmeat',\n 'cradle',\n 'cradling',\n 'crafter',\n 'craftily',\n 'craftsman',\n 'craftwork',\n 'crafty',\n 'cramp',\n 'cranberry',\n 'crane',\n 'cranial',\n 'cranium',\n 'crank',\n 'crate',\n 'crave',\n 'craving',\n 'crawfish',\n 'crawlers',\n 'crawling',\n 'crayfish',\n 'crayon',\n 'crazed',\n 'crazily',\n 'craziness',\n 'crazy',\n 'creamed',\n 'creamer',\n 'creamlike',\n 'crease',\n 'creasing',\n 'creatable',\n 'create',\n 'creation',\n 'creative',\n 'creature',\n 'credible',\n 'credibly',\n 'credit',\n 'creed',\n 'creme',\n 'creole',\n 'crepe',\n 'crept',\n 'crescent',\n 'crested',\n 'cresting',\n 'crestless',\n 'crevice',\n 'crewless',\n 'crewman',\n 'crewmate',\n 'crib',\n 'cricket',\n 'cried',\n 'crier',\n 'crimp',\n 'crimson',\n 'cringe',\n 'cringing',\n 'crinkle',\n 'crinkly',\n 'crisped',\n 'crisping',\n 'crisply',\n 'crispness',\n 'crispy',\n 'criteria',\n 'critter',\n 'croak',\n 'crock',\n 'crook',\n 'croon',\n 'crop',\n 'cross',\n 'crouch',\n 'crouton',\n 'crowbar',\n 'crowd',\n 'crown',\n 'crucial',\n 'crudely',\n 'crudeness',\n 'cruelly',\n 'cruelness',\n 'cruelty',\n 'crumb',\n 'crummiest',\n 'crummy',\n 'crumpet',\n 'crumpled',\n 'cruncher',\n 'crunching',\n 'crunchy',\n 'crusader',\n 'crushable',\n 'crushed',\n 'crusher',\n 'crushing',\n 'crust',\n 'crux',\n 'crying',\n 'cryptic',\n 'crystal',\n 'cubbyhole',\n 'cube',\n 'cubical',\n 'cubicle',\n 'cucumber',\n 'cuddle',\n 'cuddly',\n 'cufflink',\n 'culinary',\n 'culminate',\n 'culpable',\n 'culprit',\n 'cultivate',\n 'cultural',\n 'culture',\n 'cupbearer',\n 'cupcake',\n 'cupid',\n 'cupped',\n 'cupping',\n 'curable',\n 'curator',\n 'curdle',\n 'cure',\n 'curfew',\n 'curing',\n 'curled',\n 'curler',\n 'curliness',\n 'curling',\n 'curly',\n 'curry',\n 'curse',\n 'cursive',\n 'cursor',\n 'curtain',\n 'curtly',\n 'curtsy',\n 'curvature',\n 'curve',\n 'curvy',\n 'cushy',\n 'cusp',\n 'cussed',\n 'custard',\n 'custodian',\n 'custody',\n 'customary',\n 'customer',\n 'customize',\n 'customs',\n 'cut',\n 'cycle',\n 'cyclic',\n 'cycling',\n 'cyclist',\n 'cylinder',\n 'cymbal',\n 'cytoplasm',\n 'cytoplast',\n 'dab',\n 'dad',\n 'daffodil',\n 'dagger',\n 'daily',\n 'daintily',\n 'dainty',\n 'dairy',\n 'daisy',\n 'dallying',\n 'dance',\n 'dancing',\n 'dandelion',\n 'dander',\n 'dandruff',\n 'dandy',\n 'danger',\n 'dangle',\n 'dangling',\n 'daredevil',\n 'dares',\n 'daringly',\n 'darkened',\n 'darkening',\n 'darkish',\n 'darkness',\n 'darkroom',\n 'darling',\n 'darn',\n 'dart',\n 'darwinism',\n 'dash',\n 'dastardly',\n 'data',\n 'datebook',\n 'dating',\n 'daughter',\n 'daunting',\n 'dawdler',\n 'dawn',\n 'daybed',\n 'daybreak',\n 'daycare',\n 'daydream',\n 'daylight',\n 'daylong',\n 'dayroom',\n 'daytime',\n 'dazzler',\n 'dazzling',\n 'deacon',\n 'deafening',\n 'deafness',\n 'dealer',\n 'dealing',\n 'dealmaker',\n 'dealt',\n 'dean',\n 'debatable',\n 'debate',\n 'debating',\n 'debit',\n 'debrief',\n 'debtless',\n 'debtor',\n 'debug',\n 'debunk',\n 'decade',\n 'decaf',\n 'decal',\n 'decathlon',\n 'decay',\n 'deceased',\n 'deceit',\n 'deceiver',\n 'deceiving',\n 'december',\n 'decency',\n 'decent',\n 'deception',\n 'deceptive',\n 'decibel',\n 'decidable',\n 'decimal',\n 'decimeter',\n 'decipher',\n 'deck',\n 'declared',\n 'decline',\n 'decode',\n 'decompose',\n 'decorated',\n 'decorator',\n 'decoy',\n 'decrease',\n 'decree',\n 'dedicate',\n 'dedicator',\n 'deduce',\n 'deduct',\n 'deed',\n 'deem',\n 'deepen',\n 'deeply',\n 'deepness',\n 'deface',\n 'defacing',\n 'defame',\n 'default',\n 'defeat',\n 'defection',\n 'defective',\n 'defendant',\n 'defender',\n 'defense',\n 'defensive',\n 'deferral',\n 'deferred',\n 'defiance',\n 'defiant',\n 'defile',\n 'defiling',\n 'define',\n 'definite',\n 'deflate',\n 'deflation',\n 'deflator',\n 'deflected',\n 'deflector',\n 'defog',\n 'deforest',\n 'defraud',\n 'defrost',\n 'deftly',\n 'defuse',\n 'defy',\n 'degraded',\n 'degrading',\n 'degrease',\n 'degree',\n 'dehydrate',\n 'deity',\n 'dejected',\n 'delay',\n 'delegate',\n 'delegator',\n 'delete',\n 'deletion',\n 'delicacy',\n 'delicate',\n 'delicious',\n 'delighted',\n 'delirious',\n 'delirium',\n 'deliverer',\n 'delivery',\n 'delouse',\n 'delta',\n 'deluge',\n 'delusion',\n 'deluxe',\n 'demanding',\n 'demeaning',\n 'demeanor',\n 'demise',\n 'democracy',\n 'democrat',\n 'demote',\n 'demotion',\n 'demystify',\n 'denatured',\n 'deniable',\n 'denial',\n 'denim',\n 'denote',\n 'dense',\n 'density',\n 'dental',\n 'dentist',\n 'denture',\n 'deny',\n 'deodorant',\n 'deodorize',\n 'departed',\n 'departure',\n 'depict',\n 'deplete',\n 'depletion',\n 'deplored',\n 'deploy',\n 'deport',\n 'depose',\n 'depraved',\n 'depravity',\n 'deprecate',\n 'depress',\n 'deprive',\n 'depth',\n 'deputize',\n 'deputy',\n 'derail',\n 'deranged',\n 'derby',\n 'derived',\n 'desecrate',\n 'deserve',\n 'deserving',\n 'designate',\n 'designed',\n 'designer',\n 'designing',\n 'deskbound',\n 'desktop',\n 'deskwork',\n 'desolate',\n 'despair',\n 'despise',\n 'despite',\n 'destiny',\n 'destitute',\n 'destruct',\n 'detached',\n 'detail',\n 'detection',\n 'detective',\n 'detector',\n 'detention',\n 'detergent',\n 'detest',\n 'detonate',\n 'detonator',\n 'detoxify',\n 'detract',\n 'deuce',\n 'devalue',\n 'deviancy',\n 'deviant',\n 'deviate',\n 'deviation',\n 'deviator',\n 'device',\n 'devious',\n 'devotedly',\n 'devotee',\n 'devotion',\n 'devourer',\n 'devouring',\n 'devoutly',\n 'dexterity',\n 'dexterous',\n 'diabetes',\n 'diabetic',\n 'diabolic',\n 'diagnoses',\n 'diagnosis',\n 'diagram',\n 'dial',\n 'diameter',\n 'diaper',\n 'diaphragm',\n 'diary',\n 'dice',\n 'dicing',\n 'dictate',\n 'dictation',\n 'dictator',\n 'difficult',\n 'diffused',\n 'diffuser',\n 'diffusion',\n 'diffusive',\n 'dig',\n 'dilation',\n 'diligence',\n 'diligent',\n 'dill',\n 'dilute',\n 'dime',\n 'diminish',\n 'dimly',\n 'dimmed',\n 'dimmer',\n 'dimness',\n 'dimple',\n 'diner',\n 'dingbat',\n 'dinghy',\n 'dinginess',\n 'dingo',\n 'dingy',\n 'dining',\n 'dinner',\n 'diocese',\n 'dioxide',\n 'diploma',\n 'dipped',\n 'dipper',\n 'dipping',\n 'directed',\n 'direction',\n 'directive',\n 'directly',\n 'directory',\n 'direness',\n 'dirtiness',\n 'disabled',\n 'disagree',\n 'disallow',\n 'disarm',\n 'disarray',\n 'disaster',\n 'disband',\n 'disbelief',\n 'disburse',\n 'discard',\n 'discern',\n 'discharge',\n 'disclose',\n 'discolor',\n 'discount',\n 'discourse',\n 'discover',\n 'discuss',\n 'disdain',\n 'disengage',\n 'disfigure',\n 'disgrace',\n 'dish',\n 'disinfect',\n 'disjoin',\n 'disk',\n 'dislike',\n 'disliking',\n 'dislocate',\n 'dislodge',\n 'disloyal',\n 'dismantle',\n 'dismay',\n 'dismiss',\n 'dismount',\n 'disobey',\n 'disorder',\n 'disown',\n 'disparate',\n 'disparity',\n 'dispatch',\n 'dispense',\n 'dispersal',\n 'dispersed',\n 'disperser',\n 'displace',\n 'display',\n 'displease',\n 'disposal',\n 'dispose',\n 'disprove',\n 'dispute',\n 'disregard',\n 'disrupt',\n 'dissuade',\n 'distance',\n 'distant',\n 'distaste',\n 'distill',\n 'distinct',\n 'distort',\n 'distract',\n 'distress',\n 'district',\n 'distrust',\n 'ditch',\n 'ditto',\n 'ditzy',\n 'dividable',\n 'divided',\n 'dividend',\n 'dividers',\n 'dividing',\n 'divinely',\n 'diving',\n 'divinity',\n 'divisible',\n 'divisibly',\n 'division',\n 'divisive',\n 'divorcee',\n 'dizziness',\n 'dizzy',\n 'doable',\n 'docile',\n 'dock',\n 'doctrine',\n 'document',\n 'dodge',\n 'dodgy',\n 'doily',\n 'doing',\n 'dole',\n 'dollar',\n 'dollhouse',\n 'dollop',\n 'dolly',\n 'dolphin',\n 'domain',\n 'domelike',\n 'domestic',\n 'dominion',\n 'dominoes',\n 'donated',\n 'donation',\n 'donator',\n 'donor',\n 'donut',\n 'doodle',\n 'doorbell',\n 'doorframe',\n 'doorknob',\n 'doorman',\n 'doormat',\n 'doornail',\n 'doorpost',\n 'doorstep',\n 'doorstop',\n 'doorway',\n 'doozy',\n 'dork',\n 'dormitory',\n 'dorsal',\n 'dosage',\n 'dose',\n 'dotted',\n 'doubling',\n 'douche',\n 'dove',\n 'down',\n 'dowry',\n 'doze',\n 'drab',\n 'dragging',\n 'dragonfly',\n 'dragonish',\n 'dragster',\n 'drainable',\n 'drainage',\n 'drained',\n 'drainer',\n 'drainpipe',\n 'dramatic',\n 'dramatize',\n 'drank',\n 'drapery',\n 'drastic',\n 'draw',\n 'dreaded',\n 'dreadful',\n 'dreadlock',\n 'dreamboat',\n 'dreamily',\n 'dreamland',\n 'dreamless',\n 'dreamlike',\n 'dreamt',\n 'dreamy',\n 'drearily',\n 'dreary',\n 'drench',\n 'dress',\n 'drew',\n 'dribble',\n 'dried',\n 'drier',\n 'drift',\n 'driller',\n 'drilling',\n 'drinkable',\n 'drinking',\n 'dripping',\n 'drippy',\n 'drivable',\n 'driven',\n 'driver',\n 'driveway',\n 'driving',\n 'drizzle',\n 'drizzly',\n 'drone',\n 'drool',\n 'droop',\n 'drop-down',\n 'dropbox',\n 'dropkick',\n 'droplet',\n 'dropout',\n 'dropper',\n 'drove',\n 'drown',\n 'drowsily',\n 'drudge',\n 'drum',\n 'dry',\n 'dubbed',\n 'dubiously',\n 'duchess',\n 'duckbill',\n 'ducking',\n 'duckling',\n 'ducktail',\n 'ducky',\n 'duct',\n 'dude',\n 'duffel',\n 'dugout',\n 'duh',\n 'duke',\n 'duller',\n 'dullness',\n 'duly',\n 'dumping',\n 'dumpling',\n 'dumpster',\n 'duo',\n 'dupe',\n 'duplex',\n 'duplicate',\n 'duplicity',\n 'durable',\n 'durably',\n 'duration',\n 'duress',\n 'during',\n 'dusk',\n 'dust',\n 'dutiful',\n 'duty',\n 'duvet',\n 'dwarf',\n 'dweeb',\n 'dwelled',\n 'dweller',\n 'dwelling',\n 'dwindle',\n 'dwindling',\n 'dynamic',\n 'dynamite',\n 'dynasty',\n 'dyslexia',\n 'dyslexic',\n 'each',\n 'eagle',\n 'earache',\n 'eardrum',\n 'earflap',\n 'earful',\n 'earlobe',\n 'early',\n 'earmark',\n 'earmuff',\n 'earphone',\n 'earpiece',\n 'earplugs',\n 'earring',\n 'earshot',\n 'earthen',\n 'earthlike',\n 'earthling',\n 'earthly',\n 'earthworm',\n 'earthy',\n 'earwig',\n 'easeful',\n 'easel',\n 'easiest',\n 'easily',\n 'easiness',\n 'easing',\n 'eastbound',\n 'eastcoast',\n 'easter',\n 'eastward',\n 'eatable',\n 'eaten',\n 'eatery',\n 'eating',\n 'eats',\n 'ebay',\n 'ebony',\n 'ebook',\n 'ecard',\n 'eccentric',\n 'echo',\n 'eclair',\n 'eclipse',\n 'ecologist',\n 'ecology',\n 'economic',\n 'economist',\n 'economy',\n 'ecosphere',\n 'ecosystem',\n 'edge',\n 'edginess',\n 'edging',\n 'edgy',\n 'edition',\n 'editor',\n 'educated',\n 'education',\n 'educator',\n 'eel',\n 'effective',\n 'effects',\n 'efficient',\n 'effort',\n 'eggbeater',\n 'egging',\n 'eggnog',\n 'eggplant',\n 'eggshell',\n 'egomaniac',\n 'egotism',\n 'egotistic',\n 'either',\n 'eject',\n 'elaborate',\n 'elastic',\n 'elated',\n 'elbow',\n 'eldercare',\n 'elderly',\n 'eldest',\n 'electable',\n 'election',\n 'elective',\n 'elephant',\n 'elevate',\n 'elevating',\n 'elevation',\n 'elevator',\n 'eleven',\n 'elf',\n 'eligible',\n 'eligibly',\n 'eliminate',\n 'elite',\n 'elitism',\n 'elixir',\n 'elk',\n 'ellipse',\n 'elliptic',\n 'elm',\n 'elongated',\n 'elope',\n 'eloquence',\n 'eloquent',\n 'elsewhere',\n 'elude',\n 'elusive',\n 'elves',\n 'email',\n 'embargo',\n 'embark',\n 'embassy',\n 'embattled',\n 'embellish',\n 'ember',\n 'embezzle',\n 'emblaze',\n 'emblem',\n 'embody',\n 'embolism',\n 'emboss',\n 'embroider',\n 'emcee',\n 'emerald',\n 'emergency',\n 'emission',\n 'emit',\n 'emote',\n 'emoticon',\n 'emotion',\n 'empathic',\n 'empathy',\n 'emperor',\n 'emphases',\n 'emphasis',\n 'emphasize',\n 'emphatic',\n 'empirical',\n 'employed',\n 'employee',\n 'employer',\n 'emporium',\n 'empower',\n 'emptier',\n 'emptiness',\n 'empty',\n 'emu',\n 'enable',\n 'enactment',\n 'enamel',\n 'enchanted',\n 'enchilada',\n 'encircle',\n 'enclose',\n 'enclosure',\n 'encode',\n 'encore',\n 'encounter',\n 'encourage',\n 'encroach',\n 'encrust',\n 'encrypt',\n 'endanger',\n 'endeared',\n 'endearing',\n 'ended',\n 'ending',\n 'endless',\n 'endnote',\n 'endocrine',\n 'endorphin',\n 'endorse',\n 'endowment',\n 'endpoint',\n 'endurable',\n 'endurance',\n 'enduring',\n 'energetic',\n 'energize',\n 'energy',\n 'enforced',\n 'enforcer',\n 'engaged',\n 'engaging',\n 'engine',\n 'engorge',\n 'engraved',\n 'engraver',\n 'engraving',\n 'engross',\n 'engulf',\n 'enhance',\n 'enigmatic',\n 'enjoyable',\n 'enjoyably',\n 'enjoyer',\n 'enjoying',\n 'enjoyment',\n 'enlarged',\n 'enlarging',\n 'enlighten',\n 'enlisted',\n 'enquirer',\n 'enrage',\n 'enrich',\n 'enroll',\n 'enslave',\n 'ensnare',\n 'ensure',\n 'entail',\n 'entangled',\n 'entering',\n 'entertain',\n 'enticing',\n 'entire',\n 'entitle',\n 'entity',\n 'entomb',\n 'entourage',\n 'entrap',\n 'entree',\n 'entrench',\n 'entrust',\n 'entryway',\n 'entwine',\n 'enunciate',\n 'envelope',\n 'enviable',\n 'enviably',\n 'envious',\n 'envision',\n 'envoy',\n 'envy',\n 'enzyme',\n 'epic',\n 'epidemic',\n 'epidermal',\n 'epidermis',\n 'epidural',\n 'epilepsy',\n 'epileptic',\n 'epilogue',\n 'epiphany',\n 'episode',\n 'equal',\n 'equate',\n 'equation',\n 'equator',\n 'equinox',\n 'equipment',\n 'equity',\n 'equivocal',\n 'eradicate',\n 'erasable',\n 'erased',\n 'eraser',\n 'erasure',\n 'ergonomic',\n 'errand',\n 'errant',\n 'erratic',\n 'error',\n 'erupt',\n 'escalate',\n 'escalator',\n 'escapable',\n 'escapade',\n 'escapist',\n 'escargot',\n 'eskimo',\n 'esophagus',\n 'espionage',\n 'espresso',\n 'esquire',\n 'essay',\n 'essence',\n 'essential',\n 'establish',\n 'estate',\n 'esteemed',\n 'estimate',\n 'estimator',\n 'estranged',\n 'estrogen',\n 'etching',\n 'eternal',\n 'eternity',\n 'ethanol',\n 'ether',\n 'ethically',\n 'ethics',\n 'euphemism',\n 'evacuate',\n 'evacuee',\n 'evade',\n 'evaluate',\n 'evaluator',\n 'evaporate',\n 'evasion',\n 'evasive',\n 'even',\n 'everglade',\n 'evergreen',\n 'everybody',\n 'everyday',\n 'everyone',\n 'evict',\n 'evidence',\n 'evident',\n 'evil',\n 'evoke',\n 'evolution',\n 'evolve',\n 'exact',\n 'exalted',\n 'example',\n 'excavate',\n 'excavator',\n 'exceeding',\n 'exception',\n 'excess',\n 'exchange',\n 'excitable',\n 'exciting',\n 'exclaim',\n 'exclude',\n 'excluding',\n 'exclusion',\n 'exclusive',\n 'excretion',\n 'excretory',\n 'excursion',\n 'excusable',\n 'excusably',\n 'excuse',\n 'exemplary',\n 'exemplify',\n 'exemption',\n 'exerciser',\n 'exert',\n 'exes',\n 'exfoliate',\n 'exhale',\n 'exhaust',\n 'exhume',\n 'exile',\n 'existing',\n 'exit',\n 'exodus',\n 'exonerate',\n 'exorcism',\n 'exorcist',\n 'expand',\n 'expanse',\n 'expansion',\n 'expansive',\n 'expectant',\n 'expedited',\n 'expediter',\n 'expel',\n 'expend',\n 'expenses',\n 'expensive',\n 'expert',\n 'expire',\n 'expiring',\n 'explain',\n 'expletive',\n 'explicit',\n 'explode',\n 'exploit',\n 'explore',\n 'exploring',\n 'exponent',\n 'exporter',\n 'exposable',\n 'expose',\n 'exposure',\n 'express',\n 'expulsion',\n 'exquisite',\n 'extended',\n 'extending',\n 'extent',\n 'extenuate',\n 'exterior',\n 'external',\n 'extinct',\n 'extortion',\n 'extradite',\n 'extras',\n 'extrovert',\n 'extrude',\n 'extruding',\n 'exuberant',\n 'fable',\n 'fabric',\n 'fabulous',\n 'facebook',\n 'facecloth',\n 'facedown',\n 'faceless',\n 'facelift',\n 'faceplate',\n 'faceted',\n 'facial',\n 'facility',\n 'facing',\n 'facsimile',\n 'faction',\n 'factoid',\n 'factor',\n 'factsheet',\n 'factual',\n 'faculty',\n 'fade',\n 'fading',\n 'failing',\n 'falcon',\n 'fall',\n 'false',\n 'falsify',\n 'fame',\n 'familiar',\n 'family',\n 'famine',\n 'famished',\n 'fanatic',\n 'fancied',\n 'fanciness',\n 'fancy',\n 'fanfare',\n 'fang',\n 'fanning',\n 'fantasize',\n 'fantastic',\n 'fantasy',\n 'fascism',\n 'fastball',\n 'faster',\n 'fasting',\n 'fastness',\n 'faucet',\n 'favorable',\n 'favorably',\n 'favored',\n 'favoring',\n 'favorite',\n 'fax',\n 'feast',\n 'federal',\n 'fedora',\n 'feeble',\n 'feed',\n 'feel',\n 'feisty',\n 'feline',\n 'felt-tip',\n 'feminine',\n 'feminism',\n 'feminist',\n 'feminize',\n 'femur',\n 'fence',\n 'fencing',\n 'fender',\n 'ferment',\n 'fernlike',\n 'ferocious',\n 'ferocity',\n 'ferret',\n 'ferris',\n 'ferry',\n 'fervor',\n 'fester',\n 'festival',\n 'festive',\n 'festivity',\n 'fetal',\n 'fetch',\n 'fever',\n 'fiber',\n 'fiction',\n 'fiddle',\n 'fiddling',\n 'fidelity',\n 'fidgeting',\n 'fidgety',\n 'fifteen',\n 'fifth',\n 'fiftieth',\n 'fifty',\n 'figment',\n 'figure',\n 'figurine',\n 'filing',\n 'filled',\n 'filler',\n 'filling',\n 'film',\n 'filter',\n 'filth',\n 'filtrate',\n 'finale',\n 'finalist',\n 'finalize',\n 'finally',\n 'finance',\n 'financial',\n 'finch',\n 'fineness',\n 'finer',\n 'finicky',\n 'finished',\n 'finisher',\n 'finishing',\n 'finite',\n 'finless',\n 'finlike',\n 'fiscally',\n 'fit',\n 'five',\n 'flaccid',\n 'flagman',\n 'flagpole',\n 'flagship',\n 'flagstick',\n 'flagstone',\n 'flail',\n 'flakily',\n 'flaky',\n 'flame',\n 'flammable',\n 'flanked',\n 'flanking',\n 'flannels',\n 'flap',\n 'flaring',\n 'flashback',\n 'flashbulb',\n 'flashcard',\n 'flashily',\n 'flashing',\n 'flashy',\n 'flask',\n 'flatbed',\n 'flatfoot',\n 'flatly',\n 'flatness',\n 'flatten',\n 'flattered',\n 'flatterer',\n 'flattery',\n 'flattop',\n 'flatware',\n 'flatworm',\n 'flavored',\n 'flavorful',\n 'flavoring',\n 'flaxseed',\n 'fled',\n 'fleshed',\n 'fleshy',\n 'flick',\n 'flier',\n 'flight',\n 'flinch',\n 'fling',\n 'flint',\n 'flip',\n 'flirt',\n 'float',\n 'flock',\n 'flogging',\n 'flop',\n 'floral',\n 'florist',\n 'floss',\n 'flounder',\n 'flyable',\n 'flyaway',\n 'flyer',\n 'flying',\n 'flyover',\n 'flypaper',\n 'foam',\n 'foe',\n 'fog',\n 'foil',\n 'folic',\n 'folk',\n 'follicle',\n 'follow',\n 'fondling',\n 'fondly',\n 'fondness',\n 'fondue',\n 'font',\n 'food',\n 'fool',\n 'footage',\n 'football',\n 'footbath',\n 'footboard',\n 'footer',\n 'footgear',\n 'foothill',\n 'foothold',\n 'footing',\n 'footless',\n 'footman',\n 'footnote',\n 'footpad',\n 'footpath',\n 'footprint',\n 'footrest',\n 'footsie',\n 'footsore',\n 'footwear',\n 'footwork',\n 'fossil',\n 'foster',\n 'founder',\n 'founding',\n 'fountain',\n 'fox',\n 'foyer',\n 'fraction',\n 'fracture',\n 'fragile',\n 'fragility',\n 'fragment',\n 'fragrance',\n 'fragrant',\n 'frail',\n 'frame',\n 'framing',\n 'frantic',\n 'fraternal',\n 'frayed',\n 'fraying',\n 'frays',\n 'freckled',\n 'freckles',\n 'freebase',\n 'freebee',\n 'freebie',\n 'freedom',\n 'freefall',\n 'freehand',\n 'freeing',\n 'freeload',\n 'freely',\n 'freemason',\n 'freeness',\n 'freestyle',\n 'freeware',\n 'freeway',\n 'freewill',\n 'freezable',\n 'freezing',\n 'freight',\n 'french',\n 'frenzied',\n 'frenzy',\n 'frequency',\n 'frequent',\n 'fresh',\n 'fretful',\n 'fretted',\n 'friction',\n 'friday',\n 'fridge',\n 'fried',\n 'friend',\n 'frighten',\n 'frightful',\n 'frigidity',\n 'frigidly',\n 'frill',\n 'fringe',\n 'frisbee',\n 'frisk',\n 'fritter',\n 'frivolous',\n 'frolic',\n 'from',\n 'front',\n 'frostbite',\n 'frosted',\n 'frostily',\n 'frosting',\n 'frostlike',\n 'frosty',\n 'froth',\n 'frown',\n 'frozen',\n 'fructose',\n 'frugality',\n 'frugally',\n 'fruit',\n 'frustrate',\n 'frying',\n 'gab',\n 'gaffe',\n 'gag',\n 'gainfully',\n 'gaining',\n 'gains',\n 'gala',\n 'gallantly',\n 'galleria',\n 'gallery',\n 'galley',\n 'gallon',\n 'gallows',\n 'gallstone',\n 'galore',\n 'galvanize',\n 'gambling',\n 'game',\n 'gaming',\n 'gamma',\n 'gander',\n 'gangly',\n 'gangrene',\n 'gangway',\n 'gap',\n 'garage',\n 'garbage',\n 'garden',\n 'gargle',\n 'garland',\n 'garlic',\n 'garment',\n 'garnet',\n 'garnish',\n 'garter',\n 'gas',\n 'gatherer',\n 'gathering',\n 'gating',\n 'gauging',\n 'gauntlet',\n 'gauze',\n 'gave',\n 'gawk',\n 'gazing',\n 'gear',\n 'gecko',\n 'geek',\n 'geiger',\n 'gem',\n 'gender',\n 'generic',\n 'generous',\n 'genetics',\n 'genre',\n 'gentile',\n 'gentleman',\n 'gently',\n 'gents',\n 'geography',\n 'geologic',\n 'geologist',\n 'geology',\n 'geometric',\n 'geometry',\n 'geranium',\n 'gerbil',\n 'geriatric',\n 'germicide',\n 'germinate',\n 'germless',\n 'germproof',\n 'gestate',\n 'gestation',\n 'gesture',\n 'getaway',\n 'getting',\n 'getup',\n 'giant',\n 'gibberish',\n 'giblet',\n 'giddily',\n 'giddiness',\n 'giddy',\n 'gift',\n 'gigabyte',\n 'gigahertz',\n 'gigantic',\n 'giggle',\n 'giggling',\n 'giggly',\n 'gigolo',\n 'gilled',\n 'gills',\n 'gimmick',\n 'girdle',\n 'giveaway',\n 'given',\n 'giver',\n 'giving',\n 'gizmo',\n 'gizzard',\n 'glacial',\n 'glacier',\n 'glade',\n 'gladiator',\n 'gladly',\n 'glamorous',\n 'glamour',\n 'glance',\n 'glancing',\n 'glandular',\n 'glare',\n 'glaring',\n 'glass',\n 'glaucoma',\n 'glazing',\n 'gleaming',\n 'gleeful',\n 'glider',\n 'gliding',\n 'glimmer',\n 'glimpse',\n 'glisten',\n 'glitch',\n 'glitter',\n 'glitzy',\n 'gloater',\n 'gloating',\n 'gloomily',\n 'gloomy',\n 'glorified',\n 'glorifier',\n 'glorify',\n 'glorious',\n 'glory',\n 'gloss',\n 'glove',\n 'glowing',\n 'glowworm',\n 'glucose',\n 'glue',\n 'gluten',\n 'glutinous',\n 'glutton',\n 'gnarly',\n 'gnat',\n 'goal',\n 'goatskin',\n 'goes',\n 'goggles',\n 'going',\n 'goldfish',\n 'goldmine',\n 'goldsmith',\n 'golf',\n 'goliath',\n 'gonad',\n 'gondola',\n 'gone',\n 'gong',\n 'good',\n 'gooey',\n 'goofball',\n 'goofiness',\n 'goofy',\n 'google',\n 'goon',\n 'gopher',\n 'gore',\n 'gorged',\n 'gorgeous',\n 'gory',\n 'gosling',\n 'gossip',\n 'gothic',\n 'gotten',\n 'gout',\n 'gown',\n 'grab',\n 'graceful',\n 'graceless',\n 'gracious',\n 'gradation',\n 'graded',\n 'grader',\n 'gradient',\n 'grading',\n 'gradually',\n 'graduate',\n 'graffiti',\n 'grafted',\n 'grafting',\n 'grain',\n 'granddad',\n 'grandkid',\n 'grandly',\n 'grandma',\n 'grandpa',\n 'grandson',\n 'granite',\n 'granny',\n 'granola',\n 'grant',\n 'granular',\n 'grape',\n 'graph',\n 'grapple',\n 'grappling',\n 'grasp',\n 'grass',\n 'gratified',\n 'gratify',\n 'grating',\n 'gratitude',\n 'gratuity',\n 'gravel',\n 'graveness',\n 'graves',\n 'graveyard',\n 'gravitate',\n 'gravity',\n 'gravy',\n 'gray',\n 'grazing',\n 'greasily',\n 'greedily',\n 'greedless',\n 'greedy',\n 'green',\n 'greeter',\n 'greeting',\n 'grew',\n 'greyhound',\n 'grid',\n 'grief',\n 'grievance',\n 'grieving',\n 'grievous',\n 'grill',\n 'grimace',\n 'grimacing',\n 'grime',\n 'griminess',\n 'grimy',\n 'grinch',\n 'grinning',\n 'grip',\n 'gristle',\n 'grit',\n 'groggily',\n 'groggy',\n 'groin',\n 'groom',\n 'groove',\n 'grooving',\n 'groovy',\n 'grope',\n 'ground',\n 'grouped',\n 'grout',\n 'grove',\n 'grower',\n 'growing',\n 'growl',\n 'grub',\n 'grudge',\n 'grudging',\n 'grueling',\n 'gruffly',\n 'grumble',\n 'grumbling',\n 'grumbly',\n 'grumpily',\n 'grunge',\n 'grunt',\n 'guacamole',\n 'guidable',\n 'guidance',\n 'guide',\n 'guiding',\n 'guileless',\n 'guise',\n 'gulf',\n 'gullible',\n 'gully',\n 'gulp',\n 'gumball',\n 'gumdrop',\n 'gumminess',\n 'gumming',\n 'gummy',\n 'gurgle',\n 'gurgling',\n 'guru',\n 'gush',\n 'gusto',\n 'gusty',\n 'gutless',\n 'guts',\n 'gutter',\n 'guy',\n 'guzzler',\n 'gyration',\n 'habitable',\n 'habitant',\n 'habitat',\n 'habitual',\n 'hacked',\n 'hacker',\n 'hacking',\n 'hacksaw',\n 'had',\n 'haggler',\n 'haiku',\n 'half',\n 'halogen',\n 'halt',\n 'halved',\n 'halves',\n 'hamburger',\n 'hamlet',\n 'hammock',\n 'hamper',\n 'hamster',\n 'hamstring',\n 'handbag',\n 'handball',\n 'handbook',\n 'handbrake',\n 'handcart',\n 'handclap',\n 'handclasp',\n 'handcraft',\n 'handcuff',\n 'handed',\n 'handful',\n 'handgrip',\n 'handgun',\n 'handheld',\n 'handiness',\n 'handiwork',\n 'handlebar',\n 'handled',\n 'handler',\n 'handling',\n 'handmade',\n 'handoff',\n 'handpick',\n 'handprint',\n 'handrail',\n 'handsaw',\n 'handset',\n 'handsfree',\n 'handshake',\n 'handstand',\n 'handwash',\n 'handwork',\n 'handwoven',\n 'handwrite',\n 'handyman',\n 'hangnail',\n 'hangout',\n 'hangover',\n 'hangup',\n 'hankering',\n 'hankie',\n 'hanky',\n 'haphazard',\n 'happening',\n 'happier',\n 'happiest',\n 'happily',\n 'happiness',\n 'happy',\n 'harbor',\n 'hardcopy',\n 'hardcore',\n 'hardcover',\n 'harddisk',\n 'hardened',\n 'hardener',\n 'hardening',\n 'hardhat',\n 'hardhead',\n 'hardiness',\n 'hardly',\n 'hardness',\n 'hardship',\n 'hardware',\n 'hardwired',\n 'hardwood',\n 'hardy',\n 'harmful',\n 'harmless',\n 'harmonica',\n 'harmonics',\n 'harmonize',\n 'harmony',\n 'harness',\n 'harpist',\n 'harsh',\n 'harvest',\n 'hash',\n 'hassle',\n 'haste',\n 'hastily',\n 'hastiness',\n 'hasty',\n 'hatbox',\n 'hatchback',\n 'hatchery',\n 'hatchet',\n 'hatching',\n 'hatchling',\n 'hate',\n 'hatless',\n 'hatred',\n 'haunt',\n 'haven',\n 'hazard',\n 'hazelnut',\n 'hazily',\n 'haziness',\n 'hazing',\n 'hazy',\n 'headache',\n 'headband',\n 'headboard',\n 'headcount',\n 'headdress',\n 'headed',\n 'header',\n 'headfirst',\n 'headgear',\n 'heading',\n 'headlamp',\n 'headless',\n 'headlock',\n 'headphone',\n 'headpiece',\n 'headrest',\n 'headroom',\n 'headscarf',\n 'headset',\n 'headsman',\n 'headstand',\n 'headstone',\n 'headway',\n 'headwear',\n 'heap',\n 'heat',\n 'heave',\n 'heavily',\n 'heaviness',\n 'heaving',\n 'hedge',\n 'hedging',\n 'heftiness',\n 'hefty',\n 'helium',\n 'helmet',\n 'helper',\n 'helpful',\n 'helping',\n 'helpless',\n 'helpline',\n 'hemlock',\n 'hemstitch',\n 'hence',\n 'henchman',\n 'henna',\n 'herald',\n 'herbal',\n 'herbicide',\n 'herbs',\n 'heritage',\n 'hermit',\n 'heroics',\n 'heroism',\n 'herring',\n 'herself',\n 'hertz',\n 'hesitancy',\n 'hesitant',\n 'hesitate',\n 'hexagon',\n 'hexagram',\n 'hubcap',\n 'huddle',\n 'huddling',\n 'huff',\n 'hug',\n 'hula',\n 'hulk',\n 'hull',\n 'human',\n 'humble',\n 'humbling',\n 'humbly',\n 'humid',\n 'humiliate',\n 'humility',\n 'humming',\n 'hummus',\n 'humongous',\n 'humorist',\n 'humorless',\n 'humorous',\n 'humpback',\n 'humped',\n 'humvee',\n 'hunchback',\n 'hundredth',\n 'hunger',\n 'hungrily',\n 'hungry',\n 'hunk',\n 'hunter',\n 'hunting',\n 'huntress',\n 'huntsman',\n 'hurdle',\n 'hurled',\n 'hurler',\n 'hurling',\n 'hurray',\n 'hurricane',\n 'hurried',\n 'hurry',\n 'hurt',\n 'husband',\n 'hush',\n 'husked',\n 'huskiness',\n 'hut',\n 'hybrid',\n 'hydrant',\n 'hydrated',\n 'hydration',\n 'hydrogen',\n 'hydroxide',\n 'hyperlink',\n 'hypertext',\n 'hyphen',\n 'hypnoses',\n 'hypnosis',\n 'hypnotic',\n 'hypnotism',\n 'hypnotist',\n 'hypnotize',\n 'hypocrisy',\n 'hypocrite',\n 'ibuprofen',\n 'ice',\n 'iciness',\n 'icing',\n 'icky',\n 'icon',\n 'icy',\n 'idealism',\n 'idealist',\n 'idealize',\n 'ideally',\n 'idealness',\n 'identical',\n 'identify',\n 'identity',\n 'ideology',\n 'idiocy',\n 'idiom',\n 'idly',\n 'igloo',\n 'ignition',\n 'ignore',\n 'iguana',\n 'illicitly',\n 'illusion',\n 'illusive',\n 'image',\n 'imaginary',\n 'imagines',\n 'imaging',\n 'imbecile',\n 'imitate',\n 'imitation',\n 'immature',\n 'immerse',\n 'immersion',\n 'imminent',\n 'immobile',\n 'immodest',\n 'immorally',\n 'immortal',\n 'immovable',\n 'immovably',\n 'immunity',\n 'immunize',\n 'impaired',\n 'impale',\n 'impart',\n 'impatient',\n 'impeach',\n 'impeding',\n 'impending',\n 'imperfect',\n 'imperial',\n 'impish',\n 'implant',\n 'implement',\n 'implicate',\n 'implicit',\n 'implode',\n 'implosion',\n 'implosive',\n 'imply',\n 'impolite',\n 'important',\n 'importer',\n 'impose',\n 'imposing',\n 'impotence',\n 'impotency',\n 'impotent',\n 'impound',\n 'imprecise',\n 'imprint',\n 'imprison',\n 'impromptu',\n 'improper',\n 'improve',\n 'improving',\n 'improvise',\n 'imprudent',\n 'impulse',\n 'impulsive',\n 'impure',\n 'impurity',\n 'iodine',\n 'iodize',\n 'ion',\n 'ipad',\n 'iphone',\n 'ipod',\n 'irate',\n 'irk',\n 'iron',\n 'irregular',\n 'irrigate',\n 'irritable',\n 'irritably',\n 'irritant',\n 'irritate',\n 'islamic',\n 'islamist',\n 'isolated',\n 'isolating',\n 'isolation',\n 'isotope',\n 'issue',\n 'issuing',\n 'italicize',\n 'italics',\n 'item',\n 'itinerary',\n 'itunes',\n 'ivory',\n 'ivy',\n 'jab',\n 'jackal',\n 'jacket',\n 'jackknife',\n 'jackpot',\n 'jailbird',\n 'jailbreak',\n 'jailer',\n 'jailhouse',\n 'jalapeno',\n 'jam',\n 'janitor',\n 'january',\n 'jargon',\n 'jarring',\n 'jasmine',\n 'jaundice',\n 'jaunt',\n 'java',\n 'jawed',\n 'jawless',\n 'jawline',\n 'jaws',\n 'jaybird',\n 'jaywalker',\n 'jazz',\n 'jeep',\n 'jeeringly',\n 'jellied',\n 'jelly',\n 'jersey',\n 'jester',\n 'jet',\n 'jiffy',\n 'jigsaw',\n 'jimmy',\n 'jingle',\n 'jingling',\n 'jinx',\n 'jitters',\n 'jittery',\n 'job',\n 'jockey',\n 'jockstrap',\n 'jogger',\n 'jogging',\n 'john',\n 'joining',\n 'jokester',\n 'jokingly',\n 'jolliness',\n 'jolly',\n 'jolt',\n 'jot',\n 'jovial',\n 'joyfully',\n 'joylessly',\n 'joyous',\n 'joyride',\n 'joystick',\n 'jubilance',\n 'jubilant',\n 'judge',\n 'judgingly',\n 'judicial',\n 'judiciary',\n 'judo',\n 'juggle',\n 'juggling',\n 'jugular',\n 'juice',\n 'juiciness',\n 'juicy',\n 'jujitsu',\n 'jukebox',\n 'july',\n 'jumble',\n 'jumbo',\n 'jump',\n 'junction',\n 'juncture',\n 'june',\n 'junior',\n 'juniper',\n 'junkie',\n 'junkman',\n 'junkyard',\n 'jurist',\n 'juror',\n 'jury',\n 'justice',\n 'justifier',\n 'justify',\n 'justly',\n 'justness',\n 'juvenile',\n 'kabob',\n 'kangaroo',\n 'karaoke',\n 'karate',\n 'karma',\n 'kebab',\n 'keenly',\n 'keenness',\n 'keep',\n 'keg',\n 'kelp',\n 'kennel',\n 'kept',\n 'kerchief',\n 'kerosene',\n 'kettle',\n 'kick',\n 'kiln',\n 'kilobyte',\n 'kilogram',\n 'kilometer',\n 'kilowatt',\n 'kilt',\n 'kimono',\n 'kindle',\n 'kindling',\n 'kindly',\n 'kindness',\n 'kindred',\n 'kinetic',\n 'kinfolk',\n 'king',\n 'kinship',\n 'kinsman',\n 'kinswoman',\n 'kissable',\n 'kisser',\n 'kissing',\n 'kitchen',\n 'kite',\n 'kitten',\n 'kitty',\n 'kiwi',\n 'kleenex',\n 'knapsack',\n 'knee',\n 'knelt',\n 'knickers',\n 'knoll',\n 'koala',\n 'kooky',\n 'kosher',\n 'krypton',\n 'kudos',\n 'kung',\n 'labored',\n 'laborer',\n 'laboring',\n 'laborious',\n 'labrador',\n 'ladder',\n 'ladies',\n 'ladle',\n 'ladybug',\n 'ladylike',\n 'lagged',\n 'lagging',\n 'lagoon',\n 'lair',\n 'lake',\n 'lance',\n 'landed',\n 'landfall',\n 'landfill',\n 'landing',\n 'landlady',\n 'landless',\n 'landline',\n 'landlord',\n 'landmark',\n 'landmass',\n 'landmine',\n 'landowner',\n 'landscape',\n 'landside',\n 'landslide',\n 'language',\n 'lankiness',\n 'lanky',\n 'lantern',\n 'lapdog',\n 'lapel',\n 'lapped',\n 'lapping',\n 'laptop',\n 'lard',\n 'large',\n 'lark',\n 'lash',\n 'lasso',\n 'last',\n 'latch',\n 'late',\n 'lather',\n 'latitude',\n 'latrine',\n 'latter',\n 'latticed',\n 'launch',\n 'launder',\n 'laundry',\n 'laurel',\n 'lavender',\n 'lavish',\n 'laxative',\n 'lazily',\n 'laziness',\n 'lazy',\n 'lecturer',\n 'left',\n 'legacy',\n 'legal',\n 'legend',\n 'legged',\n 'leggings',\n 'legible',\n 'legibly',\n 'legislate',\n 'lego',\n 'legroom',\n 'legume',\n 'legwarmer',\n 'legwork',\n 'lemon',\n 'lend',\n 'length',\n 'lens',\n 'lent',\n 'leotard',\n 'lesser',\n 'letdown',\n 'lethargic',\n 'lethargy',\n 'letter',\n 'lettuce',\n 'level',\n 'leverage',\n 'levers',\n 'levitate',\n 'levitator',\n 'liability',\n 'liable',\n 'liberty',\n 'librarian',\n 'library',\n 'licking',\n 'licorice',\n 'lid',\n 'life',\n 'lifter',\n 'lifting',\n 'liftoff',\n 'ligament',\n 'likely',\n 'likeness',\n 'likewise',\n 'liking',\n 'lilac',\n 'lilly',\n 'lily',\n 'limb',\n 'limeade',\n 'limelight',\n 'limes',\n 'limit',\n 'limping',\n 'limpness',\n 'line',\n 'lingo',\n 'linguini',\n 'linguist',\n 'lining',\n 'linked',\n 'linoleum',\n 'linseed',\n 'lint',\n 'lion',\n 'lip',\n 'liquefy',\n 'liqueur',\n 'liquid',\n 'lisp',\n 'list',\n 'litigate',\n 'litigator',\n 'litmus',\n 'litter',\n 'little',\n 'livable',\n 'lived',\n 'lively',\n 'liver',\n 'livestock',\n 'lividly',\n 'living',\n 'lizard',\n 'lubricant',\n 'lubricate',\n 'lucid',\n 'luckily',\n 'luckiness',\n 'luckless',\n 'lucrative',\n 'ludicrous',\n 'lugged',\n 'lukewarm',\n 'lullaby',\n 'lumber',\n 'luminance',\n 'luminous',\n 'lumpiness',\n 'lumping',\n 'lumpish',\n 'lunacy',\n 'lunar',\n 'lunchbox',\n 'luncheon',\n 'lunchroom',\n 'lunchtime',\n 'lung',\n 'lurch',\n 'lure',\n 'luridness',\n 'lurk',\n 'lushly',\n 'lushness',\n 'luster',\n 'lustfully',\n 'lustily',\n 'lustiness',\n 'lustrous',\n 'lusty',\n 'luxurious',\n 'luxury',\n 'lying',\n 'lyrically',\n 'lyricism',\n 'lyricist',\n 'lyrics',\n 'macarena',\n 'macaroni',\n 'macaw',\n 'mace',\n 'machine',\n 'machinist',\n 'magazine',\n 'magenta',\n 'maggot',\n 'magical',\n 'magician',\n 'magma',\n 'magnesium',\n 'magnetic',\n 'magnetism',\n 'magnetize',\n 'magnifier',\n 'magnify',\n 'magnitude',\n 'magnolia',\n 'mahogany',\n 'maimed',\n 'majestic',\n 'majesty',\n 'majorette',\n 'majority',\n 'makeover',\n 'maker',\n 'makeshift',\n 'making',\n 'malformed',\n 'malt',\n 'mama',\n 'mammal',\n 'mammary',\n 'mammogram',\n 'manager',\n 'managing',\n 'manatee',\n 'mandarin',\n 'mandate',\n 'mandatory',\n 'mandolin',\n 'manger',\n 'mangle',\n 'mango',\n 'mangy',\n 'manhandle',\n 'manhole',\n 'manhood',\n 'manhunt',\n 'manicotti',\n 'manicure',\n 'manifesto',\n 'manila',\n 'mankind',\n 'manlike',\n 'manliness',\n 'manly',\n 'manmade',\n 'manned',\n 'mannish',\n 'manor',\n 'manpower',\n 'mantis',\n 'mantra',\n 'manual',\n 'many',\n 'map',\n 'marathon',\n 'marauding',\n 'marbled',\n 'marbles',\n 'marbling',\n 'march',\n 'mardi',\n 'margarine',\n 'margarita',\n 'margin',\n 'marigold',\n 'marina',\n 'marine',\n 'marital',\n 'maritime',\n 'marlin',\n 'marmalade',\n 'maroon',\n 'married',\n 'marrow',\n 'marry',\n 'marshland',\n 'marshy',\n 'marsupial',\n 'marvelous',\n 'marxism',\n 'mascot',\n 'masculine',\n 'mashed',\n 'mashing',\n 'massager',\n 'masses',\n 'massive',\n 'mastiff',\n 'matador',\n 'matchbook',\n 'matchbox',\n 'matcher',\n 'matching',\n 'matchless',\n 'material',\n 'maternal',\n 'maternity',\n 'math',\n 'mating',\n 'matriarch',\n 'matrimony',\n 'matrix',\n 'matron',\n 'matted',\n 'matter',\n 'maturely',\n 'maturing',\n 'maturity',\n 'mauve',\n 'maverick',\n 'maximize',\n 'maximum',\n 'maybe',\n 'mayday',\n 'mayflower',\n 'moaner',\n 'moaning',\n 'mobile',\n 'mobility',\n 'mobilize',\n 'mobster',\n 'mocha',\n 'mocker',\n 'mockup',\n 'modified',\n 'modify',\n 'modular',\n 'modulator',\n 'module',\n 'moisten',\n 'moistness',\n 'moisture',\n 'molar',\n 'molasses',\n 'mold',\n 'molecular',\n 'molecule',\n 'molehill',\n 'mollusk',\n 'mom',\n 'monastery',\n 'monday',\n 'monetary',\n 'monetize',\n 'moneybags',\n 'moneyless',\n 'moneywise',\n 'mongoose',\n 'mongrel',\n 'monitor',\n 'monkhood',\n 'monogamy',\n 'monogram',\n 'monologue',\n 'monopoly',\n 'monorail',\n 'monotone',\n 'monotype',\n 'monoxide',\n 'monsieur',\n 'monsoon',\n 'monstrous',\n 'monthly',\n 'monument',\n 'moocher',\n 'moodiness',\n 'moody',\n 'mooing',\n 'moonbeam',\n 'mooned',\n 'moonlight',\n 'moonlike',\n 'moonlit',\n 'moonrise',\n 'moonscape',\n 'moonshine',\n 'moonstone',\n 'moonwalk',\n 'mop',\n 'morale',\n 'morality',\n 'morally',\n 'morbidity',\n 'morbidly',\n 'morphine',\n 'morphing',\n 'morse',\n 'mortality',\n 'mortally',\n 'mortician',\n 'mortified',\n 'mortify',\n 'mortuary',\n 'mosaic',\n 'mossy',\n 'most',\n 'mothball',\n 'mothproof',\n 'motion',\n 'motivate',\n 'motivator',\n 'motive',\n 'motocross',\n 'motor',\n 'motto',\n 'mountable',\n 'mountain',\n 'mounted',\n 'mounting',\n 'mourner',\n 'mournful',\n 'mouse',\n 'mousiness',\n 'moustache',\n 'mousy',\n 'mouth',\n 'movable',\n 'move',\n 'movie',\n 'moving',\n 'mower',\n 'mowing',\n 'much',\n 'muck',\n 'mud',\n 'mug',\n 'mulberry',\n 'mulch',\n 'mule',\n 'mulled',\n 'mullets',\n 'multiple',\n 'multiply',\n 'multitask',\n 'multitude',\n 'mumble',\n 'mumbling',\n 'mumbo',\n 'mummified',\n 'mummify',\n 'mummy',\n 'mumps',\n 'munchkin',\n 'mundane',\n 'municipal',\n 'muppet',\n 'mural',\n 'murkiness',\n 'murky',\n 'murmuring',\n 'muscular',\n 'museum',\n 'mushily',\n 'mushiness',\n 'mushroom',\n 'mushy',\n 'music',\n 'musket',\n 'muskiness',\n 'musky',\n 'mustang',\n 'mustard',\n 'muster',\n 'mustiness',\n 'musty',\n 'mutable',\n 'mutate',\n 'mutation',\n 'mute',\n 'mutilated',\n 'mutilator',\n 'mutiny',\n 'mutt',\n 'mutual',\n 'muzzle',\n 'myself',\n 'myspace',\n 'mystified',\n 'mystify',\n 'myth',\n 'nacho',\n 'nag',\n 'nail',\n 'name',\n 'naming',\n 'nanny',\n 'nanometer',\n 'nape',\n 'napkin',\n 'napped',\n 'napping',\n 'nappy',\n 'narrow',\n 'nastily',\n 'nastiness',\n 'national',\n 'native',\n 'nativity',\n 'natural',\n 'nature',\n 'naturist',\n 'nautical',\n 'navigate',\n 'navigator',\n 'navy',\n 'nearby',\n 'nearest',\n 'nearly',\n 'nearness',\n 'neatly',\n 'neatness',\n 'nebula',\n 'nebulizer',\n 'nectar',\n 'negate',\n 'negation',\n 'negative',\n 'neglector',\n 'negligee',\n 'negligent',\n 'negotiate',\n 'nemeses',\n 'nemesis',\n 'neon',\n 'nephew',\n 'nerd',\n 'nervous',\n 'nervy',\n 'nest',\n 'net',\n 'neurology',\n 'neuron',\n 'neurosis',\n 'neurotic',\n 'neuter',\n 'neutron',\n 'never',\n 'next',\n 'nibble',\n 'nickname',\n 'nicotine',\n 'niece',\n 'nifty',\n 'nimble',\n 'nimbly',\n 'nineteen',\n 'ninetieth',\n 'ninja',\n 'nintendo',\n 'ninth',\n 'nuclear',\n 'nuclei',\n 'nucleus',\n 'nugget',\n 'nullify',\n 'number',\n 'numbing',\n 'numbly',\n 'numbness',\n 'numeral',\n 'numerate',\n 'numerator',\n 'numeric',\n 'numerous',\n 'nuptials',\n 'nursery',\n 'nursing',\n 'nurture',\n 'nutcase',\n 'nutlike',\n 'nutmeg',\n 'nutrient',\n 'nutshell',\n 'nuttiness',\n 'nutty',\n 'nuzzle',\n 'nylon',\n 'oaf',\n 'oak',\n 'oasis',\n 'oat',\n 'obedience',\n 'obedient',\n 'obituary',\n 'object',\n 'obligate',\n 'obliged',\n 'oblivion',\n 'oblivious',\n 'oblong',\n 'obnoxious',\n 'oboe',\n 'obscure',\n 'obscurity',\n 'observant',\n 'observer',\n 'observing',\n 'obsessed',\n 'obsession',\n 'obsessive',\n 'obsolete',\n 'obstacle',\n 'obstinate',\n 'obstruct',\n 'obtain',\n 'obtrusive',\n 'obtuse',\n 'obvious',\n 'occultist',\n 'occupancy',\n 'occupant',\n 'occupier',\n 'occupy',\n 'ocean',\n 'ocelot',\n 'octagon',\n 'octane',\n 'october',\n 'octopus',\n 'ogle',\n 'oil',\n 'oink',\n 'ointment',\n 'okay',\n 'old',\n 'olive',\n 'olympics',\n 'omega',\n 'omen',\n 'ominous',\n 'omission',\n 'omit',\n 'omnivore',\n 'onboard',\n 'oncoming',\n 'ongoing',\n 'onion',\n 'online',\n 'onlooker',\n 'only',\n 'onscreen',\n 'onset',\n 'onshore',\n 'onslaught',\n 'onstage',\n 'onto',\n 'onward',\n 'onyx',\n 'oops',\n 'ooze',\n 'oozy',\n 'opacity',\n 'opal',\n 'open',\n 'operable',\n 'operate',\n 'operating',\n 'operation',\n 'operative',\n 'operator',\n 'opium',\n 'opossum',\n 'opponent',\n 'oppose',\n 'opposing',\n 'opposite',\n 'oppressed',\n 'oppressor',\n 'opt',\n 'opulently',\n 'osmosis',\n 'other',\n 'otter',\n 'ouch',\n 'ought',\n 'ounce',\n 'outage',\n 'outback',\n 'outbid',\n 'outboard',\n 'outbound',\n 'outbreak',\n 'outburst',\n 'outcast',\n 'outclass',\n 'outcome',\n 'outdated',\n 'outdoors',\n 'outer',\n 'outfield',\n 'outfit',\n 'outflank',\n 'outgoing',\n 'outgrow',\n 'outhouse',\n 'outing',\n 'outlast',\n 'outlet',\n 'outline',\n 'outlook',\n 'outlying',\n 'outmatch',\n 'outmost',\n 'outnumber',\n 'outplayed',\n 'outpost',\n 'outpour',\n 'output',\n 'outrage',\n 'outrank',\n 'outreach',\n 'outright',\n 'outscore',\n 'outsell',\n 'outshine',\n 'outshoot',\n 'outsider',\n 'outskirts',\n 'outsmart',\n 'outsource',\n 'outspoken',\n 'outtakes',\n 'outthink',\n 'outward',\n 'outweigh',\n 'outwit',\n 'oval',\n 'ovary',\n 'oven',\n 'overact',\n 'overall',\n 'overarch',\n 'overbid',\n 'overbill',\n 'overbite',\n 'overblown',\n 'overboard',\n 'overbook',\n 'overbuilt',\n 'overcast',\n 'overcoat',\n 'overcome',\n 'overcook',\n 'overcrowd',\n 'overdraft',\n 'overdrawn',\n 'overdress',\n 'overdrive',\n 'overdue',\n 'overeager',\n 'overeater',\n 'overexert',\n 'overfed',\n 'overfeed',\n 'overfill',\n 'overflow',\n 'overfull',\n 'overgrown',\n 'overhand',\n 'overhang',\n 'overhaul',\n 'overhead',\n 'overhear',\n 'overheat',\n 'overhung',\n 'overjoyed',\n 'overkill',\n 'overlabor',\n 'overlaid',\n 'overlap',\n 'overlay',\n 'overload',\n 'overlook',\n 'overlord',\n 'overlying',\n 'overnight',\n 'overpass',\n 'overpay',\n 'overplant',\n 'overplay',\n 'overpower',\n 'overprice',\n 'overrate',\n 'overreach',\n 'overreact',\n 'override',\n 'overripe',\n 'overrule',\n 'overrun',\n 'overshoot',\n 'overshot',\n 'oversight',\n 'oversized',\n 'oversleep',\n 'oversold',\n 'overspend',\n 'overstate',\n 'overstay',\n 'overstep',\n 'overstock',\n 'overstuff',\n 'oversweet',\n 'overtake',\n 'overthrow',\n 'overtime',\n 'overtly',\n 'overtone',\n 'overture',\n 'overturn',\n 'overuse',\n 'overvalue',\n 'overview',\n 'overwrite',\n 'owl',\n 'oxford',\n 'oxidant',\n 'oxidation',\n 'oxidize',\n 'oxidizing',\n 'oxygen',\n 'oxymoron',\n 'oyster',\n 'ozone',\n 'paced',\n 'pacemaker',\n 'pacific',\n 'pacifier',\n 'pacifism',\n 'pacifist',\n 'pacify',\n 'padded',\n 'padding',\n 'paddle',\n 'paddling',\n 'padlock',\n 'pagan',\n 'pager',\n 'paging',\n 'pajamas',\n 'palace',\n 'palatable',\n 'palm',\n 'palpable',\n 'palpitate',\n 'paltry',\n 'pampered',\n 'pamperer',\n 'pampers',\n 'pamphlet',\n 'panama',\n 'pancake',\n 'pancreas',\n 'panda',\n 'pandemic',\n 'pang',\n 'panhandle',\n 'panic',\n 'panning',\n 'panorama',\n 'panoramic',\n 'panther',\n 'pantomime',\n 'pantry',\n 'pants',\n 'pantyhose',\n 'paparazzi',\n 'papaya',\n 'paper',\n 'paprika',\n 'papyrus',\n 'parabola',\n 'parachute',\n 'parade',\n 'paradox',\n 'paragraph',\n 'parakeet',\n 'paralegal',\n 'paralyses',\n 'paralysis',\n 'paralyze',\n 'paramedic',\n 'parameter',\n 'paramount',\n 'parasail',\n 'parasite',\n 'parasitic',\n 'parcel',\n 'parched',\n 'parchment',\n 'pardon',\n 'parish',\n 'parka',\n 'parking',\n 'parkway',\n 'parlor',\n 'parmesan',\n 'parole',\n 'parrot',\n 'parsley',\n 'parsnip',\n 'partake',\n 'parted',\n 'parting',\n 'partition',\n 'partly',\n 'partner',\n 'partridge',\n 'party',\n 'passable',\n 'passably',\n 'passage',\n 'passcode',\n 'passenger',\n 'passerby',\n 'passing',\n 'passion',\n 'passive',\n 'passivism',\n 'passover',\n 'passport',\n 'password',\n 'pasta',\n 'pasted',\n 'pastel',\n 'pastime',\n 'pastor',\n 'pastrami',\n 'pasture',\n 'pasty',\n 'patchwork',\n 'patchy',\n 'paternal',\n 'paternity',\n 'path',\n 'patience',\n 'patient',\n 'patio',\n 'patriarch',\n 'patriot',\n 'patrol',\n 'patronage',\n 'patronize',\n 'pauper',\n 'pavement',\n 'paver',\n 'pavestone',\n 'pavilion',\n 'paving',\n 'pawing',\n 'payable',\n 'payback',\n 'paycheck',\n 'payday',\n 'payee',\n 'payer',\n 'paying',\n 'payment',\n 'payphone',\n 'payroll',\n 'pebble',\n 'pebbly',\n 'pecan',\n 'pectin',\n 'peculiar',\n 'peddling',\n 'pediatric',\n 'pedicure',\n 'pedigree',\n 'pedometer',\n 'pegboard',\n 'pelican',\n 'pellet',\n 'pelt',\n 'pelvis',\n 'penalize',\n 'penalty',\n 'pencil',\n 'pendant',\n 'pending',\n 'penholder',\n 'penknife',\n 'pennant',\n 'penniless',\n 'penny',\n 'penpal',\n 'pension',\n 'pentagon',\n 'pentagram',\n 'pep',\n 'perceive',\n 'percent',\n 'perch',\n 'percolate',\n 'perennial',\n 'perfected',\n 'perfectly',\n 'perfume',\n 'periscope',\n 'perish',\n 'perjurer',\n 'perjury',\n 'perkiness',\n 'perky',\n 'perm',\n 'peroxide',\n 'perpetual',\n 'perplexed',\n 'persecute',\n 'persevere',\n 'persuaded',\n 'persuader',\n 'pesky',\n 'peso',\n 'pessimism',\n 'pessimist',\n 'pester',\n 'pesticide',\n 'petal',\n 'petite',\n 'petition',\n 'petri',\n 'petroleum',\n 'petted',\n 'petticoat',\n 'pettiness',\n 'petty',\n 'petunia',\n 'phantom',\n 'phobia',\n 'phoenix',\n 'phonebook',\n 'phoney',\n 'phonics',\n 'phoniness',\n 'phony',\n 'phosphate',\n 'photo',\n 'phrase',\n 'phrasing',\n 'placard',\n 'placate',\n 'placidly',\n 'plank',\n 'planner',\n 'plant',\n 'plasma',\n 'plaster',\n 'plastic',\n 'plated',\n 'platform',\n 'plating',\n 'platinum',\n 'platonic',\n 'platter',\n 'platypus',\n 'plausible',\n 'plausibly',\n 'playable',\n 'playback',\n 'player',\n 'playful',\n 'playgroup',\n 'playhouse',\n 'playing',\n 'playlist',\n 'playmaker',\n 'playmate',\n 'playoff',\n 'playpen',\n 'playroom',\n 'playset',\n 'plaything',\n 'playtime',\n 'plaza',\n 'pleading',\n 'pleat',\n 'pledge',\n 'plentiful',\n 'plenty',\n 'plethora',\n 'plexiglas',\n 'pliable',\n 'plod',\n 'plop',\n 'plot',\n 'plow',\n 'ploy',\n 'pluck',\n 'plug',\n 'plunder',\n 'plunging',\n 'plural',\n 'plus',\n 'plutonium',\n 'plywood',\n 'poach',\n 'pod',\n 'poem',\n 'poet',\n 'pogo',\n 'pointed',\n 'pointer',\n 'pointing',\n 'pointless',\n 'pointy',\n 'poise',\n 'poison',\n 'poker',\n 'poking',\n 'polar',\n 'police',\n 'policy',\n 'polio',\n 'polish',\n 'politely',\n 'polka',\n 'polo',\n 'polyester',\n 'polygon',\n 'polygraph',\n 'polymer',\n 'poncho',\n 'pond',\n 'pony',\n 'popcorn',\n 'pope',\n 'poplar',\n 'popper',\n 'poppy',\n 'popsicle',\n 'populace',\n 'popular',\n 'populate',\n 'porcupine',\n 'pork',\n 'porous',\n 'porridge',\n 'portable',\n 'portal',\n 'portfolio',\n 'porthole',\n 'portion',\n 'portly',\n 'portside',\n 'poser',\n 'posh',\n 'posing',\n 'possible',\n 'possibly',\n 'possum',\n 'postage',\n 'postal',\n 'postbox',\n 'postcard',\n 'posted',\n 'poster',\n 'posting',\n 'postnasal',\n 'posture',\n 'postwar',\n 'pouch',\n 'pounce',\n 'pouncing',\n 'pound',\n 'pouring',\n 'pout',\n 'powdered',\n 'powdering',\n 'powdery',\n 'power',\n 'powwow',\n 'pox',\n 'praising',\n 'prance',\n 'prancing',\n 'pranker',\n 'prankish',\n 'prankster',\n 'prayer',\n 'praying',\n 'preacher',\n 'preaching',\n 'preachy',\n 'preamble',\n 'precinct',\n 'precise',\n 'precision',\n 'precook',\n 'precut',\n 'predator',\n 'predefine',\n 'predict',\n 'preface',\n 'prefix',\n 'preflight',\n 'preformed',\n 'pregame',\n 'pregnancy',\n 'pregnant',\n 'preheated',\n 'prelaunch',\n 'prelaw',\n 'prelude',\n 'premiere',\n 'premises',\n 'premium',\n 'prenatal',\n 'preoccupy',\n 'preorder',\n 'prepaid',\n 'prepay',\n 'preplan',\n 'preppy',\n 'preschool',\n 'prescribe',\n 'preseason',\n 'preset',\n 'preshow',\n 'president',\n 'presoak',\n 'press',\n 'presume',\n 'presuming',\n 'preteen',\n 'pretended',\n 'pretender',\n 'pretense',\n 'pretext',\n 'pretty',\n 'pretzel',\n 'prevail',\n 'prevalent',\n 'prevent',\n 'preview',\n 'previous',\n 'prewar',\n 'prewashed',\n 'prideful',\n 'pried',\n 'primal',\n 'primarily',\n 'primary',\n 'primate',\n 'primer',\n 'primp',\n 'princess',\n 'print',\n 'prior',\n 'prism',\n 'prison',\n 'prissy',\n 'pristine',\n 'privacy',\n 'private',\n 'privatize',\n 'prize',\n 'proactive',\n 'probable',\n 'probably',\n 'probation',\n 'probe',\n 'probing',\n 'probiotic',\n 'problem',\n 'procedure',\n 'process',\n 'proclaim',\n 'procreate',\n 'procurer',\n 'prodigal',\n 'prodigy',\n 'produce',\n 'product',\n 'profane',\n 'profanity',\n 'professed',\n 'professor',\n 'profile',\n 'profound',\n 'profusely',\n 'progeny',\n 'prognosis',\n 'program',\n 'progress',\n 'projector',\n 'prologue',\n 'prolonged',\n 'promenade',\n 'prominent',\n 'promoter',\n 'promotion',\n 'prompter',\n 'promptly',\n 'prone',\n 'prong',\n 'pronounce',\n 'pronto',\n 'proofing',\n 'proofread',\n 'proofs',\n 'propeller',\n 'properly',\n 'property',\n 'proponent',\n 'proposal',\n 'propose',\n 'props',\n 'prorate',\n 'protector',\n 'protegee',\n 'proton',\n 'prototype',\n 'protozoan',\n 'protract',\n 'protrude',\n 'proud',\n 'provable',\n 'proved',\n 'proven',\n 'provided',\n 'provider',\n 'providing',\n 'province',\n 'proving',\n 'provoke',\n 'provoking',\n 'provolone',\n 'prowess',\n 'prowler',\n 'prowling',\n 'proximity',\n 'proxy',\n 'prozac',\n 'prude',\n 'prudishly',\n 'prune',\n 'pruning',\n 'pry',\n 'psychic',\n 'public',\n 'publisher',\n 'pucker',\n 'pueblo',\n 'pug',\n 'pull',\n 'pulmonary',\n 'pulp',\n 'pulsate',\n 'pulse',\n 'pulverize',\n 'puma',\n 'pumice',\n 'pummel',\n 'punch',\n 'punctual',\n 'punctuate',\n 'punctured',\n 'pungent',\n 'punisher',\n 'punk',\n 'pupil',\n 'puppet',\n 'puppy',\n 'purchase',\n 'pureblood',\n 'purebred',\n 'purely',\n 'pureness',\n 'purgatory',\n 'purge',\n 'purging',\n 'purifier',\n 'purify',\n 'purist',\n 'puritan',\n 'purity',\n 'purple',\n 'purplish',\n 'purposely',\n 'purr',\n 'purse',\n 'pursuable',\n 'pursuant',\n 'pursuit',\n 'purveyor',\n 'pushcart',\n 'pushchair',\n 'pusher',\n 'pushiness',\n 'pushing',\n 'pushover',\n 'pushpin',\n 'pushup',\n 'pushy',\n 'putdown',\n 'putt',\n 'puzzle',\n 'puzzling',\n 'pyramid',\n 'pyromania',\n 'python',\n 'quack',\n 'quadrant',\n 'quail',\n 'quaintly',\n 'quake',\n 'quaking',\n 'qualified',\n 'qualifier',\n 'qualify',\n 'quality',\n 'qualm',\n 'quantum',\n 'quarrel',\n 'quarry',\n 'quartered',\n 'quarterly',\n 'quarters',\n 'quartet',\n 'quench',\n 'query',\n 'quicken',\n 'quickly',\n 'quickness',\n 'quicksand',\n 'quickstep',\n 'quiet',\n 'quill',\n 'quilt',\n 'quintet',\n 'quintuple',\n 'quirk',\n 'quit',\n 'quiver',\n 'quizzical',\n 'quotable',\n 'quotation',\n 'quote',\n 'rabid',\n 'race',\n 'racing',\n 'racism',\n 'rack',\n 'racoon',\n 'radar',\n 'radial',\n 'radiance',\n 'radiantly',\n 'radiated',\n 'radiation',\n 'radiator',\n 'radio',\n 'radish',\n 'raffle',\n 'raft',\n 'rage',\n 'ragged',\n 'raging',\n 'ragweed',\n 'raider',\n 'railcar',\n 'railing',\n 'railroad',\n 'railway',\n 'raisin',\n 'rake',\n 'raking',\n 'rally',\n 'ramble',\n 'rambling',\n 'ramp',\n 'ramrod',\n 'ranch',\n 'rancidity',\n 'random',\n 'ranged',\n 'ranger',\n 'ranging',\n 'ranked',\n 'ranking',\n 'ransack',\n 'ranting',\n 'rants',\n 'rare',\n 'rarity',\n 'rascal',\n 'rash',\n 'rasping',\n 'ravage',\n 'raven',\n 'ravine',\n 'raving',\n 'ravioli',\n 'ravishing',\n 'reabsorb',\n 'reach',\n 'reacquire',\n 'reaction',\n 'reactive',\n 'reactor',\n 'reaffirm',\n 'ream',\n 'reanalyze',\n 'reappear',\n 'reapply',\n 'reappoint',\n 'reapprove',\n 'rearrange',\n 'rearview',\n 'reason',\n 'reassign',\n 'reassure',\n 'reattach',\n 'reawake',\n 'rebalance',\n 'rebate',\n 'rebel',\n 'rebirth',\n 'reboot',\n 'reborn',\n 'rebound',\n 'rebuff',\n 'rebuild',\n 'rebuilt',\n 'reburial',\n 'rebuttal',\n 'recall',\n 'recant',\n 'recapture',\n 'recast',\n 'recede',\n 'recent',\n 'recess',\n 'recharger',\n 'recipient',\n 'recital',\n 'recite',\n 'reckless',\n 'reclaim',\n 'recliner',\n 'reclining',\n 'recluse',\n 'reclusive',\n 'recognize',\n 'recoil',\n 'recollect',\n 'recolor',\n 'reconcile',\n 'reconfirm',\n 'reconvene',\n 'recopy',\n 'record',\n 'recount',\n 'recoup',\n 'recovery',\n 'recreate',\n 'rectal',\n 'rectangle',\n 'rectified',\n 'rectify',\n 'recycled',\n 'recycler',\n 'recycling',\n 'reemerge',\n 'reenact',\n 'reenter',\n 'reentry',\n 'reexamine',\n 'referable',\n 'referee',\n 'reference',\n 'refill',\n 'refinance',\n 'refined',\n 'refinery',\n 'refining',\n 'refinish',\n 'reflected',\n 'reflector',\n 'reflex',\n 'reflux',\n 'refocus',\n 'refold',\n 'reforest',\n 'reformat',\n 'reformed',\n 'reformer',\n 'reformist',\n 'refract',\n 'refrain',\n 'refreeze',\n 'refresh',\n 'refried',\n 'refueling',\n 'refund',\n 'refurbish',\n 'refurnish',\n 'refusal',\n 'refuse',\n 'refusing',\n 'refutable',\n 'refute',\n 'regain',\n 'regalia',\n 'regally',\n 'reggae',\n 'regime',\n 'region',\n 'register',\n 'registrar',\n 'registry',\n 'regress',\n 'regretful',\n 'regroup',\n 'regular',\n 'regulate',\n 'regulator',\n 'rehab',\n 'reheat',\n 'rehire',\n 'rehydrate',\n 'reimburse',\n 'reissue',\n 'reiterate',\n 'rejoice',\n 'rejoicing',\n 'rejoin',\n 'rekindle',\n 'relapse',\n 'relapsing',\n 'relatable',\n 'related',\n 'relation',\n 'relative',\n 'relax',\n 'relay',\n 'relearn',\n 'release',\n 'relenting',\n 'reliable',\n 'reliably',\n 'reliance',\n 'reliant',\n 'relic',\n 'relieve',\n 'relieving',\n 'relight',\n 'relish',\n 'relive',\n 'reload',\n 'relocate',\n 'relock',\n 'reluctant',\n 'rely',\n 'remake',\n 'remark',\n 'remarry',\n 'rematch',\n 'remedial',\n 'remedy',\n 'remember',\n 'reminder',\n 'remindful',\n 'remission',\n 'remix',\n 'remnant',\n 'remodeler',\n 'remold',\n 'remorse',\n 'remote',\n 'removable',\n 'removal',\n 'removed',\n 'remover',\n 'removing',\n 'rename',\n 'renderer',\n 'rendering',\n 'rendition',\n 'renegade',\n 'renewable',\n 'renewably',\n 'renewal',\n 'renewed',\n 'renounce',\n 'renovate',\n 'renovator',\n 'rentable',\n 'rental',\n 'rented',\n 'renter',\n 'reoccupy',\n 'reoccur',\n 'reopen',\n 'reorder',\n 'repackage',\n 'repacking',\n 'repaint',\n 'repair',\n 'repave',\n 'repaying',\n 'repayment',\n 'repeal',\n 'repeated',\n 'repeater',\n 'repent',\n 'rephrase',\n 'replace',\n 'replay',\n 'replica',\n 'reply',\n 'reporter',\n 'repose',\n 'repossess',\n 'repost',\n 'repressed',\n 'reprimand',\n 'reprint',\n 'reprise',\n 'reproach',\n 'reprocess',\n 'reproduce',\n 'reprogram',\n 'reps',\n 'reptile',\n 'reptilian',\n 'repugnant',\n 'repulsion',\n 'repulsive',\n 'repurpose',\n 'reputable',\n 'reputably',\n 'request',\n 'require',\n 'requisite',\n 'reroute',\n 'rerun',\n 'resale',\n 'resample',\n 'rescuer',\n 'reseal',\n 'research',\n 'reselect',\n 'reseller',\n 'resemble',\n 'resend',\n 'resent',\n 'reset',\n 'reshape',\n 'reshoot',\n 'reshuffle',\n 'residence',\n 'residency',\n 'resident',\n 'residual',\n 'residue',\n 'resigned',\n 'resilient',\n 'resistant',\n 'resisting',\n 'resize',\n 'resolute',\n 'resolved',\n 'resonant',\n 'resonate',\n 'resort',\n 'resource',\n 'respect',\n 'resubmit',\n 'result',\n 'resume',\n 'resupply',\n 'resurface',\n 'resurrect',\n 'retail',\n 'retainer',\n 'retaining',\n 'retake',\n 'retaliate',\n 'retention',\n 'rethink',\n 'retinal',\n 'retired',\n 'retiree',\n 'retiring',\n 'retold',\n 'retool',\n 'retorted',\n 'retouch',\n 'retrace',\n 'retract',\n 'retrain',\n 'retread',\n 'retreat',\n 'retrial',\n 'retrieval',\n 'retriever',\n 'retry',\n 'return',\n 'retying',\n 'retype',\n 'reunion',\n 'reunite',\n 'reusable',\n 'reuse',\n 'reveal',\n 'reveler',\n 'revenge',\n 'revenue',\n 'reverb',\n 'revered',\n 'reverence',\n 'reverend',\n 'reversal',\n 'reverse',\n 'reversing',\n 'reversion',\n 'revert',\n 'revisable',\n 'revise',\n 'revision',\n 'revisit',\n 'revivable',\n 'revival',\n 'reviver',\n 'reviving',\n 'revocable',\n 'revoke',\n 'revolt',\n 'revolver',\n 'revolving',\n 'reward',\n 'rewash',\n 'rewind',\n 'rewire',\n 'reword',\n 'rework',\n 'rewrap',\n 'rewrite',\n 'rhyme',\n 'ribbon',\n 'ribcage',\n 'rice',\n 'riches',\n 'richly',\n 'richness',\n 'rickety',\n 'ricotta',\n 'riddance',\n 'ridden',\n 'ride',\n 'riding',\n 'rifling',\n 'rift',\n 'rigging',\n 'rigid',\n 'rigor',\n 'rimless',\n 'rimmed',\n 'rind',\n 'rink',\n 'rinse',\n 'rinsing',\n 'riot',\n 'ripcord',\n 'ripeness',\n 'ripening',\n 'ripping',\n 'ripple',\n 'rippling',\n 'riptide',\n 'rise',\n 'rising',\n 'risk',\n 'risotto',\n 'ritalin',\n 'ritzy',\n 'rival',\n 'riverbank',\n 'riverbed',\n 'riverboat',\n 'riverside',\n 'riveter',\n 'riveting',\n 'roamer',\n 'roaming',\n 'roast',\n 'robbing',\n 'robe',\n 'robin',\n 'robotics',\n 'robust',\n 'rockband',\n 'rocker',\n 'rocket',\n 'rockfish',\n 'rockiness',\n 'rocking',\n 'rocklike',\n 'rockslide',\n 'rockstar',\n 'rocky',\n 'rogue',\n 'roman',\n 'romp',\n 'rope',\n 'roping',\n 'roster',\n 'rosy',\n 'rotten',\n 'rotting',\n 'rotunda',\n 'roulette',\n 'rounding',\n 'roundish',\n 'roundness',\n 'roundup',\n 'roundworm',\n 'routine',\n 'routing',\n 'rover',\n 'roving',\n 'royal',\n 'rubbed',\n 'rubber',\n 'rubbing',\n 'rubble',\n 'rubdown',\n 'ruby',\n 'ruckus',\n 'rudder',\n 'rug',\n 'ruined',\n 'rule',\n 'rumble',\n 'rumbling',\n 'rummage',\n 'rumor',\n 'runaround',\n 'rundown',\n 'runner',\n 'running',\n 'runny',\n 'runt',\n 'runway',\n 'rupture',\n 'rural',\n 'ruse',\n 'rush',\n 'rust',\n 'rut',\n 'sabbath',\n 'sabotage',\n 'sacrament',\n 'sacred',\n 'sacrifice',\n 'sadden',\n 'saddlebag',\n 'saddled',\n 'saddling',\n 'sadly',\n 'sadness',\n 'safari',\n 'safeguard',\n 'safehouse',\n 'safely',\n 'safeness',\n 'saffron',\n 'saga',\n 'sage',\n 'sagging',\n 'saggy',\n 'said',\n 'saint',\n 'sake',\n 'salad',\n 'salami',\n 'salaried',\n 'salary',\n 'saline',\n 'salon',\n 'saloon',\n 'salsa',\n 'salt',\n 'salutary',\n 'salute',\n 'salvage',\n 'salvaging',\n 'salvation',\n 'same',\n 'sample',\n 'sampling',\n 'sanction',\n 'sanctity',\n 'sanctuary',\n 'sandal',\n 'sandbag',\n 'sandbank',\n 'sandbar',\n 'sandblast',\n 'sandbox',\n 'sanded',\n 'sandfish',\n 'sanding',\n 'sandlot',\n 'sandpaper',\n 'sandpit',\n 'sandstone',\n 'sandstorm',\n 'sandworm',\n 'sandy',\n 'sanitary',\n 'sanitizer',\n 'sank',\n 'santa',\n 'sapling',\n 'sappiness',\n 'sappy',\n 'sarcasm',\n 'sarcastic',\n 'sardine',\n 'sash',\n 'sasquatch',\n 'sassy',\n 'satchel',\n 'satiable',\n 'satin',\n 'satirical',\n 'satisfied',\n 'satisfy',\n 'saturate',\n 'saturday',\n 'sauciness',\n 'saucy',\n 'sauna',\n 'savage',\n 'savanna',\n 'saved',\n 'savings',\n 'savior',\n 'savor',\n 'saxophone',\n 'say',\n 'scabbed',\n 'scabby',\n 'scalded',\n 'scalding',\n 'scale',\n 'scaling',\n 'scallion',\n 'scallop',\n 'scalping',\n 'scam',\n 'scandal',\n 'scanner',\n 'scanning',\n 'scant',\n 'scapegoat',\n 'scarce',\n 'scarcity',\n 'scarecrow',\n 'scared',\n 'scarf',\n 'scarily',\n 'scariness',\n 'scarring',\n 'scary',\n 'scavenger',\n 'scenic',\n 'schedule',\n 'schematic',\n 'scheme',\n 'scheming',\n 'schilling',\n 'schnapps',\n 'scholar',\n 'science',\n 'scientist',\n 'scion',\n 'scoff',\n 'scolding',\n 'scone',\n 'scoop',\n 'scooter',\n 'scope',\n 'scorch',\n 'scorebook',\n 'scorecard',\n 'scored',\n 'scoreless',\n 'scorer',\n 'scoring',\n 'scorn',\n 'scorpion',\n 'scotch',\n 'scoundrel',\n 'scoured',\n 'scouring',\n 'scouting',\n 'scouts',\n 'scowling',\n 'scrabble',\n 'scraggly',\n 'scrambled',\n 'scrambler',\n 'scrap',\n 'scratch',\n 'scrawny',\n 'screen',\n 'scribble',\n 'scribe',\n 'scribing',\n 'scrimmage',\n 'script',\n 'scroll',\n 'scrooge',\n 'scrounger',\n 'scrubbed',\n 'scrubber',\n 'scruffy',\n 'scrunch',\n 'scrutiny',\n 'scuba',\n 'scuff',\n 'sculptor',\n 'sculpture',\n 'scurvy',\n 'scuttle',\n 'secluded',\n 'secluding',\n 'seclusion',\n 'second',\n 'secrecy',\n 'secret',\n 'sectional',\n 'sector',\n 'secular',\n 'securely',\n 'security',\n 'sedan',\n 'sedate',\n 'sedation',\n 'sedative',\n 'sediment',\n 'seduce',\n 'seducing',\n 'segment',\n 'seismic',\n 'seizing',\n 'seldom',\n 'selected',\n 'selection',\n 'selective',\n 'selector',\n 'self',\n 'seltzer',\n 'semantic',\n 'semester',\n 'semicolon',\n 'semifinal',\n 'seminar',\n 'semisoft',\n 'semisweet',\n 'senate',\n 'senator',\n 'send',\n 'senior',\n 'senorita',\n 'sensation',\n 'sensitive',\n 'sensitize',\n 'sensually',\n 'sensuous',\n 'sepia',\n 'september',\n 'septic',\n 'septum',\n 'sequel',\n 'sequence',\n 'sequester',\n 'series',\n 'sermon',\n 'serotonin',\n 'serpent',\n 'serrated',\n 'serve',\n 'service',\n 'serving',\n 'sesame',\n 'sessions',\n 'setback',\n 'setting',\n 'settle',\n 'settling',\n 'setup',\n 'sevenfold',\n 'seventeen',\n 'seventh',\n 'seventy',\n 'severity',\n 'shabby',\n 'shack',\n 'shaded',\n 'shadily',\n 'shadiness',\n 'shading',\n 'shadow',\n 'shady',\n 'shaft',\n 'shakable',\n 'shakily',\n 'shakiness',\n 'shaking',\n 'shaky',\n 'shale',\n 'shallot',\n 'shallow',\n 'shame',\n 'shampoo',\n 'shamrock',\n 'shank',\n 'shanty',\n 'shape',\n 'shaping',\n 'share',\n 'sharpener',\n 'sharper',\n 'sharpie',\n 'sharply',\n 'sharpness',\n 'shawl',\n 'sheath',\n 'shed',\n 'sheep',\n 'sheet',\n 'shelf',\n 'shell',\n 'shelter',\n 'shelve',\n 'shelving',\n 'sherry',\n 'shield',\n 'shifter',\n 'shifting',\n 'shiftless',\n 'shifty',\n 'shimmer',\n 'shimmy',\n 'shindig',\n 'shine',\n 'shingle',\n 'shininess',\n 'shining',\n 'shiny',\n 'ship',\n 'shirt',\n 'shivering',\n 'shock',\n 'shone',\n 'shoplift',\n 'shopper',\n 'shopping',\n 'shoptalk',\n 'shore',\n 'shortage',\n 'shortcake',\n 'shortcut',\n 'shorten',\n 'shorter',\n 'shorthand',\n 'shortlist',\n 'shortly',\n 'shortness',\n 'shorts',\n 'shortwave',\n 'shorty',\n 'shout',\n 'shove',\n 'showbiz',\n 'showcase',\n 'showdown',\n 'shower',\n 'showgirl',\n 'showing',\n 'showman',\n 'shown',\n 'showoff',\n 'showpiece',\n 'showplace',\n 'showroom',\n 'showy',\n 'shrank',\n 'shrapnel',\n 'shredder',\n 'shredding',\n 'shrewdly',\n 'shriek',\n 'shrill',\n 'shrimp',\n 'shrine',\n 'shrink',\n 'shrivel',\n 'shrouded',\n 'shrubbery',\n 'shrubs',\n 'shrug',\n 'shrunk',\n 'shucking',\n 'shudder',\n 'shuffle',\n 'shuffling',\n 'shun',\n 'shush',\n 'shut',\n 'shy',\n 'siamese',\n 'siberian',\n 'sibling',\n 'siding',\n 'sierra',\n 'siesta',\n 'sift',\n 'sighing',\n 'silenced',\n 'silencer',\n 'silent',\n 'silica',\n 'silicon',\n 'silk',\n 'silliness',\n 'silly',\n 'silo',\n 'silt',\n 'silver',\n 'similarly',\n 'simile',\n 'simmering',\n 'simple',\n 'simplify',\n 'simply',\n 'sincere',\n 'sincerity',\n 'singer',\n 'singing',\n 'single',\n 'singular',\n 'sinister',\n 'sinless',\n 'sinner',\n 'sinuous',\n 'sip',\n 'siren',\n 'sister',\n 'sitcom',\n 'sitter',\n 'sitting',\n 'situated',\n 'situation',\n 'sixfold',\n 'sixteen',\n 'sixth',\n 'sixties',\n 'sixtieth',\n 'sixtyfold',\n 'sizable',\n 'sizably',\n 'size',\n 'sizing',\n 'sizzle',\n 'sizzling',\n 'skater',\n 'skating',\n 'skedaddle',\n 'skeletal',\n 'skeleton',\n 'skeptic',\n 'sketch',\n 'skewed',\n 'skewer',\n 'skid',\n 'skied',\n 'skier',\n 'skies',\n 'skiing',\n 'skilled',\n 'skillet',\n 'skillful',\n 'skimmed',\n 'skimmer',\n 'skimming',\n 'skimpily',\n 'skincare',\n 'skinhead',\n 'skinless',\n 'skinning',\n 'skinny',\n 'skintight',\n 'skipper',\n 'skipping',\n 'skirmish',\n 'skirt',\n 'skittle',\n 'skydiver',\n 'skylight',\n 'skyline',\n 'skype',\n 'skyrocket',\n 'skyward',\n 'slab',\n 'slacked',\n 'slacker',\n 'slacking',\n 'slackness',\n 'slacks',\n 'slain',\n 'slam',\n 'slander',\n 'slang',\n 'slapping',\n 'slapstick',\n 'slashed',\n 'slashing',\n 'slate',\n 'slather',\n 'slaw',\n 'sled',\n 'sleek',\n 'sleep',\n 'sleet',\n 'sleeve',\n 'slept',\n 'sliceable',\n 'sliced',\n 'slicer',\n 'slicing',\n 'slick',\n 'slider',\n 'slideshow',\n 'sliding',\n 'slighted',\n 'slighting',\n 'slightly',\n 'slimness',\n 'slimy',\n 'slinging',\n 'slingshot',\n 'slinky',\n 'slip',\n 'slit',\n 'sliver',\n 'slobbery',\n 'slogan',\n 'sloped',\n 'sloping',\n 'sloppily',\n 'sloppy',\n 'slot',\n 'slouching',\n 'slouchy',\n 'sludge',\n 'slug',\n 'slum',\n 'slurp',\n 'slush',\n 'sly',\n 'small',\n 'smartly',\n 'smartness',\n 'smasher',\n 'smashing',\n 'smashup',\n 'smell',\n 'smelting',\n 'smile',\n 'smilingly',\n 'smirk',\n 'smite',\n 'smith',\n 'smitten',\n 'smock',\n 'smog',\n 'smoked',\n 'smokeless',\n 'smokiness',\n 'smoking',\n 'smoky',\n 'smolder',\n 'smooth',\n 'smother',\n 'smudge',\n 'smudgy',\n 'smuggler',\n 'smuggling',\n 'smugly',\n 'smugness',\n 'snack',\n 'snagged',\n 'snaking',\n 'snap',\n 'snare',\n 'snarl',\n 'snazzy',\n 'sneak',\n 'sneer',\n 'sneeze',\n 'sneezing',\n 'snide',\n 'sniff',\n 'snippet',\n 'snipping',\n 'snitch',\n 'snooper',\n 'snooze',\n 'snore',\n 'snoring',\n 'snorkel',\n 'snort',\n 'snout',\n 'snowbird',\n 'snowboard',\n 'snowbound',\n 'snowcap',\n 'snowdrift',\n 'snowdrop',\n 'snowfall',\n 'snowfield',\n 'snowflake',\n 'snowiness',\n 'snowless',\n 'snowman',\n 'snowplow',\n 'snowshoe',\n 'snowstorm',\n 'snowsuit',\n 'snowy',\n 'snub',\n 'snuff',\n 'snuggle',\n 'snugly',\n 'snugness',\n 'speak',\n 'spearfish',\n 'spearhead',\n 'spearman',\n 'spearmint',\n 'species',\n 'specimen',\n 'specked',\n 'speckled',\n 'specks',\n 'spectacle',\n 'spectator',\n 'spectrum',\n 'speculate',\n 'speech',\n 'speed',\n 'spellbind',\n 'speller',\n 'spelling',\n 'spendable',\n 'spender',\n 'spending',\n 'spent',\n 'spew',\n 'sphere',\n 'spherical',\n 'sphinx',\n 'spider',\n 'spied',\n 'spiffy',\n 'spill',\n 'spilt',\n 'spinach',\n 'spinal',\n 'spindle',\n 'spinner',\n 'spinning',\n 'spinout',\n 'spinster',\n 'spiny',\n 'spiral',\n 'spirited',\n 'spiritism',\n 'spirits',\n 'spiritual',\n 'splashed',\n 'splashing',\n 'splashy',\n 'splatter',\n 'spleen',\n 'splendid',\n 'splendor',\n 'splice',\n 'splicing',\n 'splinter',\n 'splotchy',\n 'splurge',\n 'spoilage',\n 'spoiled',\n 'spoiler',\n 'spoiling',\n 'spoils',\n 'spoken',\n 'spokesman',\n 'sponge',\n 'spongy',\n 'sponsor',\n 'spoof',\n 'spookily',\n 'spooky',\n 'spool',\n 'spoon',\n 'spore',\n 'sporting',\n 'sports',\n 'sporty',\n 'spotless',\n 'spotlight',\n 'spotted',\n 'spotter',\n 'spotting',\n 'spotty',\n 'spousal',\n 'spouse',\n 'spout',\n 'sprain',\n 'sprang',\n 'sprawl',\n 'spray',\n 'spree',\n 'sprig',\n 'spring',\n 'sprinkled',\n 'sprinkler',\n 'sprint',\n 'sprite',\n 'sprout',\n 'spruce',\n 'sprung',\n 'spry',\n 'spud',\n 'spur',\n 'sputter',\n 'spyglass',\n 'squabble',\n 'squad',\n 'squall',\n 'squander',\n 'squash',\n 'squatted',\n 'squatter',\n 'squatting',\n 'squeak',\n 'squealer',\n 'squealing',\n 'squeamish',\n 'squeegee',\n 'squeeze',\n 'squeezing',\n 'squid',\n 'squiggle',\n 'squiggly',\n 'squint',\n 'squire',\n 'squirt',\n 'squishier',\n 'squishy',\n 'stability',\n 'stabilize',\n 'stable',\n 'stack',\n 'stadium',\n 'staff',\n 'stage',\n 'staging',\n 'stagnant',\n 'stagnate',\n 'stainable',\n 'stained',\n 'staining',\n 'stainless',\n 'stalemate',\n 'staleness',\n 'stalling',\n 'stallion',\n 'stamina',\n 'stammer',\n 'stamp',\n 'stand',\n 'stank',\n 'staple',\n 'stapling',\n 'starboard',\n 'starch',\n 'stardom',\n 'stardust',\n 'starfish',\n 'stargazer',\n 'staring',\n 'stark',\n 'starless',\n 'starlet',\n 'starlight',\n 'starlit',\n 'starring',\n 'starry',\n 'starship',\n 'starter',\n 'starting',\n 'startle',\n 'startling',\n 'startup',\n 'starved',\n 'starving',\n 'stash',\n 'state',\n 'static',\n 'statistic',\n 'statue',\n 'stature',\n 'status',\n 'statute',\n 'statutory',\n 'staunch',\n 'stays',\n 'steadfast',\n 'steadier',\n 'steadily',\n 'steadying',\n 'steam',\n 'steed',\n 'steep',\n 'steerable',\n 'steering',\n 'steersman',\n 'stegosaur',\n 'stellar',\n 'stem',\n 'stench',\n 'stencil',\n 'step',\n 'stereo',\n 'sterile',\n 'sterility',\n 'sterilize',\n 'sterling',\n 'sternness',\n 'sternum',\n 'stew',\n 'stick',\n 'stiffen',\n 'stiffly',\n 'stiffness',\n 'stifle',\n 'stifling',\n 'stillness',\n 'stilt',\n 'stimulant',\n 'stimulate',\n 'stimuli',\n 'stimulus',\n 'stinger',\n 'stingily',\n 'stinging',\n 'stingray',\n 'stingy',\n 'stinking',\n 'stinky',\n 'stipend',\n 'stipulate',\n 'stir',\n 'stitch',\n 'stock',\n 'stoic',\n 'stoke',\n 'stole',\n 'stomp',\n 'stonewall',\n 'stoneware',\n 'stonework',\n 'stoning',\n 'stony',\n 'stood',\n 'stooge',\n 'stool',\n 'stoop',\n 'stoplight',\n 'stoppable',\n 'stoppage',\n 'stopped',\n 'stopper',\n 'stopping',\n 'stopwatch',\n 'storable',\n 'storage',\n 'storeroom',\n 'storewide',\n 'storm',\n 'stout',\n 'stove',\n 'stowaway',\n 'stowing',\n 'straddle',\n 'straggler',\n 'strained',\n 'strainer',\n 'straining',\n 'strangely',\n 'stranger',\n 'strangle',\n 'strategic',\n 'strategy',\n 'stratus',\n 'straw',\n 'stray',\n 'streak',\n 'stream',\n 'street',\n 'strength',\n 'strenuous',\n 'strep',\n 'stress',\n 'stretch',\n 'strewn',\n 'stricken',\n 'strict',\n 'stride',\n 'strife',\n 'strike',\n 'striking',\n 'strive',\n 'striving',\n 'strobe',\n 'strode',\n 'stroller',\n 'strongbox',\n 'strongly',\n 'strongman',\n 'struck',\n 'structure',\n 'strudel',\n 'struggle',\n 'strum',\n 'strung',\n 'strut',\n 'stubbed',\n 'stubble',\n 'stubbly',\n 'stubborn',\n 'stucco',\n 'stuck',\n 'student',\n 'studied',\n 'studio',\n 'study',\n 'stuffed',\n 'stuffing',\n 'stuffy',\n 'stumble',\n 'stumbling',\n 'stump',\n 'stung',\n 'stunned',\n 'stunner',\n 'stunning',\n 'stunt',\n 'stupor',\n 'sturdily',\n 'sturdy',\n 'styling',\n 'stylishly',\n 'stylist',\n 'stylized',\n 'stylus',\n 'suave',\n 'subarctic',\n 'subatomic',\n 'subdivide',\n 'subdued',\n 'subduing',\n 'subfloor',\n 'subgroup',\n 'subheader',\n 'subject',\n 'sublease',\n 'sublet',\n 'sublevel',\n 'sublime',\n 'submarine',\n 'submerge',\n 'submersed',\n 'submitter',\n 'subpanel',\n 'subpar',\n 'subplot',\n 'subprime',\n 'subscribe',\n 'subscript',\n 'subsector',\n 'subside',\n 'subsiding',\n 'subsidize',\n 'subsidy',\n 'subsoil',\n 'subsonic',\n 'substance',\n 'subsystem',\n 'subtext',\n 'subtitle',\n 'subtly',\n 'subtotal',\n 'subtract',\n 'subtype',\n 'suburb',\n 'subway',\n 'subwoofer',\n 'subzero',\n 'succulent',\n 'such',\n 'suction',\n 'sudden',\n 'sudoku',\n 'suds',\n 'sufferer',\n 'suffering',\n 'suffice',\n 'suffix',\n 'suffocate',\n 'suffrage',\n 'sugar',\n 'suggest',\n 'suing',\n 'suitable',\n 'suitably',\n 'suitcase',\n 'suitor',\n 'sulfate',\n 'sulfide',\n 'sulfite',\n 'sulfur',\n 'sulk',\n 'sullen',\n 'sulphate',\n 'sulphuric',\n 'sultry',\n 'superbowl',\n 'superglue',\n 'superhero',\n 'superior',\n 'superjet',\n 'superman',\n 'supermom',\n 'supernova',\n 'supervise',\n 'supper',\n 'supplier',\n 'supply',\n 'support',\n 'supremacy',\n 'supreme',\n 'surcharge',\n 'surely',\n 'sureness',\n 'surface',\n 'surfacing',\n 'surfboard',\n 'surfer',\n 'surgery',\n 'surgical',\n 'surging',\n 'surname',\n 'surpass',\n 'surplus',\n 'surprise',\n 'surreal',\n 'surrender',\n 'surrogate',\n 'surround',\n 'survey',\n 'survival',\n 'survive',\n 'surviving',\n 'survivor',\n 'sushi',\n 'suspect',\n 'suspend',\n 'suspense',\n 'sustained',\n 'sustainer',\n 'swab',\n 'swaddling',\n 'swagger',\n 'swampland',\n 'swan',\n 'swapping',\n 'swarm',\n 'sway',\n 'swear',\n 'sweat',\n 'sweep',\n 'swell',\n 'swept',\n 'swerve',\n 'swifter',\n 'swiftly',\n 'swiftness',\n 'swimmable',\n 'swimmer',\n 'swimming',\n 'swimsuit',\n 'swimwear',\n 'swinger',\n 'swinging',\n 'swipe',\n 'swirl',\n 'switch',\n 'swivel',\n 'swizzle',\n 'swooned',\n 'swoop',\n 'swoosh',\n 'swore',\n 'sworn',\n 'swung',\n 'sycamore',\n 'sympathy',\n 'symphonic',\n 'symphony',\n 'symptom',\n 'synapse',\n 'syndrome',\n 'synergy',\n 'synopses',\n 'synopsis',\n 'synthesis',\n 'synthetic',\n 'syrup',\n 'system',\n 't-shirt',\n 'tabasco',\n 'tabby',\n 'tableful',\n 'tables',\n 'tablet',\n 'tableware',\n 'tabloid',\n 'tackiness',\n 'tacking',\n 'tackle',\n 'tackling',\n 'tacky',\n 'taco',\n 'tactful',\n 'tactical',\n 'tactics',\n 'tactile',\n 'tactless',\n 'tadpole',\n 'taekwondo',\n 'tag',\n 'tainted',\n 'take',\n 'taking',\n 'talcum',\n 'talisman',\n 'tall',\n 'talon',\n 'tamale',\n 'tameness',\n 'tamer',\n 'tamper',\n 'tank',\n 'tanned',\n 'tannery',\n 'tanning',\n 'tantrum',\n 'tapeless',\n 'tapered',\n 'tapering',\n 'tapestry',\n 'tapioca',\n 'tapping',\n 'taps',\n 'tarantula',\n 'target',\n 'tarmac',\n 'tarnish',\n 'tarot',\n 'tartar',\n 'tartly',\n 'tartness',\n 'task',\n 'tassel',\n 'taste',\n 'tastiness',\n 'tasting',\n 'tasty',\n 'tattered',\n 'tattle',\n 'tattling',\n 'tattoo',\n 'taunt',\n 'tavern',\n 'thank',\n 'that',\n 'thaw',\n 'theater',\n 'theatrics',\n 'thee',\n 'theft',\n 'theme',\n 'theology',\n 'theorize',\n 'thermal',\n 'thermos',\n 'thesaurus',\n 'these',\n 'thesis',\n 'thespian',\n 'thicken',\n 'thicket',\n 'thickness',\n 'thieving',\n 'thievish',\n 'thigh',\n 'thimble',\n 'thing',\n 'think',\n 'thinly',\n 'thinner',\n 'thinness',\n 'thinning',\n 'thirstily',\n 'thirsting',\n 'thirsty',\n 'thirteen',\n 'thirty',\n 'thong',\n 'thorn',\n 'those',\n 'thousand',\n 'thrash',\n 'thread',\n 'threaten',\n 'threefold',\n 'thrift',\n 'thrill',\n 'thrive',\n 'thriving',\n 'throat',\n 'throbbing',\n 'throng',\n 'throttle',\n 'throwaway',\n 'throwback',\n 'thrower',\n 'throwing',\n 'thud',\n 'thumb',\n 'thumping',\n 'thursday',\n 'thus',\n 'thwarting',\n 'thyself',\n 'tiara',\n 'tibia',\n 'tidal',\n 'tidbit',\n 'tidiness',\n 'tidings',\n 'tidy',\n 'tiger',\n 'tighten',\n 'tightly',\n 'tightness',\n 'tightrope',\n 'tightwad',\n 'tigress',\n 'tile',\n 'tiling',\n 'till',\n 'tilt',\n 'timid',\n 'timing',\n 'timothy',\n 'tinderbox',\n 'tinfoil',\n 'tingle',\n 'tingling',\n 'tingly',\n 'tinker',\n 'tinkling',\n 'tinsel',\n 'tinsmith',\n 'tint',\n 'tinwork',\n 'tiny',\n 'tipoff',\n 'tipped',\n 'tipper',\n 'tipping',\n 'tiptoeing',\n 'tiptop',\n 'tiring',\n 'tissue',\n 'trace',\n 'tracing',\n 'track',\n 'traction',\n 'tractor',\n 'trade',\n 'trading',\n 'tradition',\n 'traffic',\n 'tragedy',\n 'trailing',\n 'trailside',\n 'train',\n 'traitor',\n 'trance',\n 'tranquil',\n 'transfer',\n 'transform',\n 'translate',\n 'transpire',\n 'transport',\n 'transpose',\n 'trapdoor',\n 'trapeze',\n 'trapezoid',\n 'trapped',\n 'trapper',\n 'trapping',\n 'traps',\n 'trash',\n 'travel',\n 'traverse',\n 'travesty',\n 'tray',\n 'treachery',\n 'treading',\n 'treadmill',\n 'treason',\n 'treat',\n 'treble',\n 'tree',\n 'trekker',\n 'tremble',\n 'trembling',\n 'tremor',\n 'trench',\n 'trend',\n 'trespass',\n 'triage',\n 'trial',\n 'triangle',\n 'tribesman',\n 'tribunal',\n 'tribune',\n 'tributary',\n 'tribute',\n 'triceps',\n 'trickery',\n 'trickily',\n 'tricking',\n 'trickle',\n 'trickster',\n 'tricky',\n 'tricolor',\n 'tricycle',\n 'trident',\n 'tried',\n 'trifle',\n 'trifocals',\n 'trillion',\n 'trilogy',\n 'trimester',\n 'trimmer',\n 'trimming',\n 'trimness',\n 'trinity',\n 'trio',\n 'tripod',\n 'tripping',\n 'triumph',\n 'trivial',\n 'trodden',\n 'trolling',\n 'trombone',\n 'trophy',\n 'tropical',\n 'tropics',\n 'trouble',\n 'troubling',\n 'trough',\n 'trousers',\n 'trout',\n 'trowel',\n 'truce',\n 'truck',\n 'truffle',\n 'trump',\n 'trunks',\n 'trustable',\n 'trustee',\n 'trustful',\n 'trusting',\n 'trustless',\n 'truth',\n 'try',\n 'tubby',\n 'tubeless',\n 'tubular',\n 'tucking',\n 'tuesday',\n 'tug',\n 'tuition',\n 'tulip',\n 'tumble',\n 'tumbling',\n 'tummy',\n 'turban',\n 'turbine',\n 'turbofan',\n 'turbojet',\n 'turbulent',\n 'turf',\n 'turkey',\n 'turmoil',\n 'turret',\n 'turtle',\n 'tusk',\n 'tutor',\n 'tutu',\n 'tux',\n 'tweak',\n 'tweed',\n 'tweet',\n 'tweezers',\n 'twelve',\n 'twentieth',\n 'twenty',\n 'twerp',\n 'twice',\n 'twiddle',\n 'twiddling',\n 'twig',\n 'twilight',\n 'twine',\n 'twins',\n 'twirl',\n 'twistable',\n 'twisted',\n 'twister',\n 'twisting',\n 'twisty',\n 'twitch',\n 'twitter',\n 'tycoon',\n 'tying',\n 'tyke',\n 'udder',\n 'ultimate',\n 'ultimatum',\n 'ultra',\n 'umbilical',\n 'umbrella',\n 'umpire',\n 'unabashed',\n 'unable',\n 'unadorned',\n 'unadvised',\n 'unafraid',\n 'unaired',\n 'unaligned',\n 'unaltered',\n 'unarmored',\n 'unashamed',\n 'unaudited',\n 'unawake',\n 'unaware',\n 'unbaked',\n 'unbalance',\n 'unbeaten',\n 'unbend',\n 'unbent',\n 'unbiased',\n 'unbitten',\n 'unblended',\n 'unblessed',\n 'unblock',\n 'unbolted',\n 'unbounded',\n 'unboxed',\n 'unbraided',\n 'unbridle',\n 'unbroken',\n 'unbuckled',\n 'unbundle',\n 'unburned',\n 'unbutton',\n 'uncanny',\n 'uncapped',\n 'uncaring',\n 'uncertain',\n 'unchain',\n 'unchanged',\n 'uncharted',\n 'uncheck',\n 'uncivil',\n 'unclad',\n 'unclaimed',\n 'unclamped',\n 'unclasp',\n 'uncle',\n 'unclip',\n 'uncloak',\n 'unclog',\n 'unclothed',\n 'uncoated',\n 'uncoiled',\n 'uncolored',\n 'uncombed',\n 'uncommon',\n 'uncooked',\n 'uncork',\n 'uncorrupt',\n 'uncounted',\n 'uncouple',\n 'uncouth',\n 'uncover',\n 'uncross',\n 'uncrown',\n 'uncrushed',\n 'uncured',\n 'uncurious',\n 'uncurled',\n 'uncut',\n 'undamaged',\n 'undated',\n 'undaunted',\n 'undead',\n 'undecided',\n 'undefined',\n 'underage',\n 'underarm',\n 'undercoat',\n 'undercook',\n 'undercut',\n 'underdog',\n 'underdone',\n 'underfed',\n 'underfeed',\n 'underfoot',\n 'undergo',\n 'undergrad',\n 'underhand',\n 'underline',\n 'underling',\n 'undermine',\n 'undermost',\n 'underpaid',\n 'underpass',\n 'underpay',\n 'underrate',\n 'undertake',\n 'undertone',\n 'undertook',\n 'undertow',\n 'underuse',\n 'underwear',\n 'underwent',\n 'underwire',\n 'undesired',\n 'undiluted',\n 'undivided',\n 'undocked',\n 'undoing',\n 'undone',\n 'undrafted',\n 'undress',\n 'undrilled',\n 'undusted',\n 'undying',\n 'unearned',\n 'unearth',\n 'unease',\n 'uneasily',\n 'uneasy',\n 'uneatable',\n 'uneaten',\n 'unedited',\n 'unelected',\n 'unending',\n 'unengaged',\n 'unenvied',\n 'unequal',\n 'unethical',\n 'uneven',\n 'unexpired',\n 'unexposed',\n 'unfailing',\n 'unfair',\n 'unfasten',\n 'unfazed',\n 'unfeeling',\n 'unfiled',\n 'unfilled',\n 'unfitted',\n 'unfitting',\n 'unfixable',\n 'unfixed',\n 'unflawed',\n 'unfocused',\n 'unfold',\n 'unfounded',\n 'unframed',\n 'unfreeze',\n 'unfrosted',\n 'unfrozen',\n 'unfunded',\n 'unglazed',\n 'ungloved',\n 'unglue',\n 'ungodly',\n 'ungraded',\n 'ungreased',\n 'unguarded',\n 'unguided',\n 'unhappily',\n 'unhappy',\n 'unharmed',\n 'unhealthy',\n 'unheard',\n 'unhearing',\n 'unheated',\n 'unhelpful',\n 'unhidden',\n 'unhinge',\n 'unhitched',\n 'unholy',\n 'unhook',\n 'unicorn',\n 'unicycle',\n 'unified',\n 'unifier',\n 'uniformed',\n 'uniformly',\n 'unify',\n 'unimpeded',\n 'uninjured',\n 'uninstall',\n 'uninsured',\n 'uninvited',\n 'union',\n 'uniquely',\n 'unisexual',\n 'unison',\n 'unissued',\n 'unit',\n 'universal',\n 'universe',\n 'unjustly',\n 'unkempt',\n 'unkind',\n 'unknotted',\n 'unknowing',\n 'unknown',\n 'unlaced',\n 'unlatch',\n 'unlawful',\n 'unleaded',\n 'unlearned',\n 'unleash',\n 'unless',\n 'unleveled',\n 'unlighted',\n 'unlikable',\n 'unlimited',\n 'unlined',\n 'unlinked',\n 'unlisted',\n 'unlit',\n 'unlivable',\n 'unloaded',\n 'unloader',\n 'unlocked',\n 'unlocking',\n 'unlovable',\n 'unloved',\n 'unlovely',\n 'unloving',\n 'unluckily',\n 'unlucky',\n 'unmade',\n 'unmanaged',\n 'unmanned',\n 'unmapped',\n 'unmarked',\n 'unmasked',\n 'unmasking',\n 'unmatched',\n 'unmindful',\n 'unmixable',\n 'unmixed',\n 'unmolded',\n 'unmoral',\n 'unmovable',\n 'unmoved',\n 'unmoving',\n 'unnamable',\n 'unnamed',\n 'unnatural',\n 'unneeded',\n 'unnerve',\n 'unnerving',\n 'unnoticed',\n 'unopened',\n 'unopposed',\n 'unpack',\n 'unpadded',\n 'unpaid',\n 'unpainted',\n 'unpaired',\n 'unpaved',\n 'unpeeled',\n 'unpicked',\n 'unpiloted',\n 'unpinned',\n 'unplanned',\n 'unplanted',\n 'unpleased',\n 'unpledged',\n 'unplowed',\n 'unplug',\n 'unpopular',\n 'unproven',\n 'unquote',\n 'unranked',\n 'unrated',\n 'unraveled',\n 'unreached',\n 'unread',\n 'unreal',\n 'unreeling',\n 'unrefined',\n 'unrelated',\n 'unrented',\n 'unrest',\n 'unretired',\n 'unrevised',\n 'unrigged',\n 'unripe',\n 'unrivaled',\n 'unroasted',\n 'unrobed',\n 'unroll',\n 'unruffled',\n 'unruly',\n 'unrushed',\n 'unsaddle',\n 'unsafe',\n 'unsaid',\n 'unsalted',\n 'unsaved',\n 'unsavory',\n 'unscathed',\n 'unscented',\n 'unscrew',\n 'unsealed',\n 'unseated',\n 'unsecured',\n 'unseeing',\n 'unseemly',\n 'unseen',\n 'unselect',\n 'unselfish',\n 'unsent',\n 'unsettled',\n 'unshackle',\n 'unshaken',\n 'unshaved',\n 'unshaven',\n 'unsheathe',\n 'unshipped',\n 'unsightly',\n 'unsigned',\n 'unskilled',\n 'unsliced',\n 'unsmooth',\n 'unsnap',\n 'unsocial',\n 'unsoiled',\n 'unsold',\n 'unsolved',\n 'unsorted',\n 'unspoiled',\n 'unspoken',\n 'unstable',\n 'unstaffed',\n 'unstamped',\n 'unsteady',\n 'unsterile',\n 'unstirred',\n 'unstitch',\n 'unstopped',\n 'unstuck',\n 'unstuffed',\n 'unstylish',\n 'unsubtle',\n 'unsubtly',\n 'unsuited',\n 'unsure',\n 'unsworn',\n 'untagged',\n 'untainted',\n 'untaken',\n 'untamed',\n 'untangled',\n 'untapped',\n 'untaxed',\n 'unthawed',\n 'unthread',\n 'untidy',\n 'untie',\n 'until',\n 'untimed',\n 'untimely',\n 'untitled',\n 'untoasted',\n 'untold',\n 'untouched',\n 'untracked',\n 'untrained',\n 'untreated',\n 'untried',\n 'untrimmed',\n 'untrue',\n 'untruth',\n 'unturned',\n 'untwist',\n 'untying',\n 'unusable',\n 'unused',\n 'unusual',\n 'unvalued',\n 'unvaried',\n 'unvarying',\n 'unveiled',\n 'unveiling',\n 'unvented',\n 'unviable',\n 'unvisited',\n 'unvocal',\n 'unwanted',\n 'unwarlike',\n 'unwary',\n 'unwashed',\n 'unwatched',\n 'unweave',\n 'unwed',\n 'unwelcome',\n 'unwell',\n 'unwieldy',\n 'unwilling',\n 'unwind',\n 'unwired',\n 'unwitting',\n 'unwomanly',\n 'unworldly',\n 'unworn',\n 'unworried',\n 'unworthy',\n 'unwound',\n 'unwoven',\n 'unwrapped',\n 'unwritten',\n 'unzip',\n 'upbeat',\n 'upchuck',\n 'upcoming',\n 'upcountry',\n 'update',\n 'upfront',\n 'upgrade',\n 'upheaval',\n 'upheld',\n 'uphill',\n 'uphold',\n 'uplifted',\n 'uplifting',\n 'upload',\n 'upon',\n 'upper',\n 'upright',\n 'uprising',\n 'upriver',\n 'uproar',\n 'uproot',\n 'upscale',\n 'upside',\n 'upstage',\n 'upstairs',\n 'upstart',\n 'upstate',\n 'upstream',\n 'upstroke',\n 'upswing',\n 'uptake',\n 'uptight',\n 'uptown',\n 'upturned',\n 'upward',\n 'upwind',\n 'uranium',\n 'urban',\n 'urchin',\n 'urethane',\n 'urgency',\n 'urgent',\n 'urging',\n 'urologist',\n 'urology',\n 'usable',\n 'usage',\n 'useable',\n 'used',\n 'uselessly',\n 'user',\n 'usher',\n 'usual',\n 'utensil',\n 'utility',\n 'utilize',\n 'utmost',\n 'utopia',\n 'utter',\n 'vacancy',\n 'vacant',\n 'vacate',\n 'vacation',\n 'vagabond',\n 'vagrancy',\n 'vagrantly',\n 'vaguely',\n 'vagueness',\n 'valiant',\n 'valid',\n 'valium',\n 'valley',\n 'valuables',\n 'value',\n 'vanilla',\n 'vanish',\n 'vanity',\n 'vanquish',\n 'vantage',\n 'vaporizer',\n 'variable',\n 'variably',\n 'varied',\n 'variety',\n 'various',\n 'varmint',\n 'varnish',\n 'varsity',\n 'varying',\n 'vascular',\n 'vaseline',\n 'vastly',\n 'vastness',\n 'veal',\n 'vegan',\n 'veggie',\n 'vehicular',\n 'velcro',\n 'velocity',\n 'velvet',\n 'vendetta',\n 'vending',\n 'vendor',\n 'veneering',\n 'vengeful',\n 'venomous',\n 'ventricle',\n 'venture',\n 'venue',\n 'venus',\n 'verbalize',\n 'verbally',\n 'verbose',\n 'verdict',\n 'verify',\n 'verse',\n 'version',\n 'versus',\n 'vertebrae',\n 'vertical',\n 'vertigo',\n 'very',\n 'vessel',\n 'vest',\n 'veteran',\n 'veto',\n 'vexingly',\n 'viability',\n 'viable',\n 'vibes',\n 'vice',\n 'vicinity',\n 'victory',\n 'video',\n 'viewable',\n 'viewer',\n 'viewing',\n 'viewless',\n 'viewpoint',\n 'vigorous',\n 'village',\n 'villain',\n 'vindicate',\n 'vineyard',\n 'vintage',\n 'violate',\n 'violation',\n 'violator',\n 'violet',\n 'violin',\n 'viper',\n 'viral',\n 'virtual',\n 'virtuous',\n 'virus',\n 'visa',\n 'viscosity',\n 'viscous',\n 'viselike',\n 'visible',\n 'visibly',\n 'vision',\n 'visiting',\n 'visitor',\n 'visor',\n 'vista',\n 'vitality',\n 'vitalize',\n 'vitally',\n 'vitamins',\n 'vivacious',\n 'vividly',\n 'vividness',\n 'vixen',\n 'vocalist',\n 'vocalize',\n 'vocally',\n 'vocation',\n 'voice',\n 'voicing',\n 'void',\n 'volatile',\n 'volley',\n 'voltage',\n 'volumes',\n 'voter',\n 'voting',\n 'voucher',\n 'vowed',\n 'vowel',\n 'voyage',\n 'wackiness',\n 'wad',\n 'wafer',\n 'waffle',\n 'waged',\n 'wager',\n 'wages',\n 'waggle',\n 'wagon',\n 'wake',\n 'waking',\n 'walk',\n 'walmart',\n 'walnut',\n 'walrus',\n 'waltz',\n 'wand',\n 'wannabe',\n 'wanted',\n 'wanting',\n 'wasabi',\n 'washable',\n 'washbasin',\n 'washboard',\n 'washbowl',\n 'washcloth',\n 'washday',\n 'washed',\n 'washer',\n 'washhouse',\n 'washing',\n 'washout',\n 'washroom',\n 'washstand',\n 'washtub',\n 'wasp',\n 'wasting',\n 'watch',\n 'water',\n 'waviness',\n 'waving',\n 'wavy',\n 'whacking',\n 'whacky',\n 'wham',\n 'wharf',\n 'wheat',\n 'whenever',\n 'whiff',\n 'whimsical',\n 'whinny',\n 'whiny',\n 'whisking',\n 'whoever',\n 'whole',\n 'whomever',\n 'whoopee',\n 'whooping',\n 'whoops',\n 'why',\n 'wick',\n 'widely',\n 'widen',\n 'widget',\n 'widow',\n 'width',\n 'wieldable',\n 'wielder',\n 'wife',\n 'wifi',\n 'wikipedia',\n 'wildcard',\n 'wildcat',\n 'wilder',\n 'wildfire',\n 'wildfowl',\n 'wildland',\n 'wildlife',\n 'wildly',\n 'wildness',\n 'willed',\n 'willfully',\n 'willing',\n 'willow',\n 'willpower',\n 'wilt',\n 'wimp',\n 'wince',\n 'wincing',\n 'wind',\n 'wing',\n 'winking',\n 'winner',\n 'winnings',\n 'winter',\n 'wipe',\n 'wired',\n 'wireless',\n 'wiring',\n 'wiry',\n 'wisdom',\n 'wise',\n 'wish',\n 'wisplike',\n 'wispy',\n 'wistful',\n 'wizard',\n 'wobble',\n 'wobbling',\n 'wobbly',\n 'wok',\n 'wolf',\n 'wolverine',\n 'womanhood',\n 'womankind',\n 'womanless',\n 'womanlike',\n 'womanly',\n 'womb',\n 'woof',\n 'wooing',\n 'wool',\n 'woozy',\n 'word',\n 'work',\n 'worried',\n 'worrier',\n 'worrisome',\n 'worry',\n 'worsening',\n 'worshiper',\n 'worst',\n 'wound',\n 'woven',\n 'wow',\n 'wrangle',\n 'wrath',\n 'wreath',\n 'wreckage',\n 'wrecker',\n 'wrecking',\n 'wrench',\n 'wriggle',\n 'wriggly',\n 'wrinkle',\n 'wrinkly',\n 'wrist',\n 'writing',\n 'written',\n 'wrongdoer',\n 'wronged',\n 'wrongful',\n 'wrongly',\n 'wrongness',\n 'wrought',\n 'xbox',\n 'xerox',\n 'yahoo',\n 'yam',\n 'yanking',\n 'yapping',\n 'yard',\n 'yarn',\n 'yeah',\n 'yearbook',\n 'yearling',\n 'yearly',\n 'yearning',\n 'yeast',\n 'yelling',\n 'yelp',\n 'yen',\n 'yesterday',\n 'yiddish',\n 'yield',\n 'yin',\n 'yippee',\n 'yo-yo',\n 'yodel',\n 'yoga',\n 'yogurt',\n 'yonder',\n 'yoyo',\n 'yummy',\n 'zap',\n 'zealous',\n 'zebra',\n 'zen',\n 'zeppelin',\n 'zero',\n 'zestfully',\n 'zesty',\n 'zigzagged',\n 'zipfile',\n 'zipping',\n 'zippy',\n 'zips',\n 'zit',\n 'zodiac',\n 'zombie',\n 'zone',\n 'zoning',\n 'zookeeper',\n 'zoologist',\n 'zoology',\n 'zoom',\n];\n","import { EnvironmentUrls } from '../models/domain/environmentUrls';\n\nimport { ConstantsService } from './constants.service';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { EnvironmentService as EnvironmentServiceAbstraction } from '../abstractions/environment.service';\nimport { NotificationsService } from '../abstractions/notifications.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nexport class EnvironmentService implements EnvironmentServiceAbstraction {\n baseUrl: string;\n webVaultUrl: string;\n apiUrl: string;\n identityUrl: string;\n iconsUrl: string;\n notificationsUrl: string;\n eventsUrl: string;\n enterpriseUrl: string;\n\n constructor(private apiService: ApiService, private storageService: StorageService,\n private notificationsService: NotificationsService) { }\n\n getWebVaultUrl(): string {\n if (this.webVaultUrl != null) {\n return this.webVaultUrl;\n } else if (this.baseUrl) {\n return this.baseUrl;\n }\n return null;\n }\n\n async setUrlsFromStorage(): Promise {\n const urlsObj: any = await this.storageService.get(ConstantsService.environmentUrlsKey);\n const urls = urlsObj || {\n base: null,\n api: null,\n identity: null,\n icons: null,\n notifications: null,\n events: null,\n webVault: null,\n enterprise: null,\n };\n\n const envUrls = new EnvironmentUrls();\n\n if (urls.base) {\n this.baseUrl = envUrls.base = urls.base;\n this.apiService.setUrls(envUrls);\n return;\n }\n\n this.webVaultUrl = urls.webVault;\n this.apiUrl = envUrls.api = urls.api;\n this.identityUrl = envUrls.identity = urls.identity;\n this.iconsUrl = urls.icons;\n this.notificationsUrl = urls.notifications;\n this.eventsUrl = envUrls.events = urls.events;\n this.enterpriseUrl = urls.enterprise;\n this.apiService.setUrls(envUrls);\n }\n\n async setUrls(urls: any): Promise {\n urls.base = this.formatUrl(urls.base);\n urls.webVault = this.formatUrl(urls.webVault);\n urls.api = this.formatUrl(urls.api);\n urls.identity = this.formatUrl(urls.identity);\n urls.icons = this.formatUrl(urls.icons);\n urls.notifications = this.formatUrl(urls.notifications);\n urls.events = this.formatUrl(urls.events);\n urls.enterprise = this.formatUrl(urls.enterprise);\n\n await this.storageService.save(ConstantsService.environmentUrlsKey, {\n base: urls.base,\n api: urls.api,\n identity: urls.identity,\n webVault: urls.webVault,\n icons: urls.icons,\n notifications: urls.notifications,\n events: urls.events,\n enterprise: urls.enterprise,\n });\n\n this.baseUrl = urls.base;\n this.webVaultUrl = urls.webVault;\n this.apiUrl = urls.api;\n this.identityUrl = urls.identity;\n this.iconsUrl = urls.icons;\n this.notificationsUrl = urls.notifications;\n this.eventsUrl = urls.events;\n this.enterpriseUrl = urls.enterprise;\n\n const envUrls = new EnvironmentUrls();\n if (this.baseUrl) {\n envUrls.base = this.baseUrl;\n } else {\n envUrls.api = this.apiUrl;\n envUrls.identity = this.identityUrl;\n envUrls.events = this.eventsUrl;\n }\n\n this.apiService.setUrls(envUrls);\n if (this.notificationsService != null) {\n this.notificationsService.init(this);\n }\n return urls;\n }\n\n private formatUrl(url: string): string {\n if (url == null || url === '') {\n return null;\n }\n\n url = url.replace(/\\/+$/g, '');\n if (!url.startsWith('http://') && !url.startsWith('https://')) {\n url = 'https://' + url;\n }\n\n return url.trim();\n }\n}\n","import { FolderData } from '../models/data/folderData';\n\nimport { Folder } from '../models/domain/folder';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { FolderRequest } from '../models/request/folderRequest';\n\nimport { FolderResponse } from '../models/response/folderResponse';\n\nimport { FolderView } from '../models/view/folderView';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService as FolderServiceAbstraction } from '../abstractions/folder.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\nimport { CipherData } from '../models/data/cipherData';\n\nimport { ServiceUtils } from '../misc/serviceUtils';\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n foldersPrefix: 'folders_',\n ciphersPrefix: 'ciphers_',\n};\nconst NestingDelimiter = '/';\n\nexport class FolderService implements FolderServiceAbstraction {\n decryptedFolderCache: FolderView[];\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private apiService: ApiService, private storageService: StorageService,\n private i18nService: I18nService, private cipherService: CipherService) { }\n\n clearCache(): void {\n this.decryptedFolderCache = null;\n }\n\n async encrypt(model: FolderView, key?: SymmetricCryptoKey): Promise {\n const folder = new Folder();\n folder.id = model.id;\n folder.name = await this.cryptoService.encrypt(model.name, key);\n return folder;\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n if (folders == null || !folders.hasOwnProperty(id)) {\n return null;\n }\n\n return new Folder(folders[id]);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n const response: Folder[] = [];\n for (const id in folders) {\n if (folders.hasOwnProperty(id)) {\n response.push(new Folder(folders[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n if (this.decryptedFolderCache != null) {\n return this.decryptedFolderCache;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const decFolders: FolderView[] = [];\n const promises: Promise[] = [];\n const folders = await this.getAll();\n folders.forEach(folder => {\n promises.push(folder.decrypt().then(f => decFolders.push(f)));\n });\n\n await Promise.all(promises);\n decFolders.sort(Utils.getSortFunction(this.i18nService, 'name'));\n\n const noneFolder = new FolderView();\n noneFolder.name = this.i18nService.t('noneFolder');\n decFolders.push(noneFolder);\n\n this.decryptedFolderCache = decFolders;\n return this.decryptedFolderCache;\n }\n\n async getAllNested(): Promise[]> {\n const folders = await this.getAllDecrypted();\n const nodes: TreeNode[] = [];\n folders.forEach(f => {\n const folderCopy = new FolderView();\n folderCopy.id = f.id;\n folderCopy.revisionDate = f.revisionDate;\n const parts = f.name != null ? f.name.replace(/^\\/+|\\/+$/g, '').split(NestingDelimiter) : [];\n ServiceUtils.nestedTraverse(nodes, 0, parts, folderCopy, null, NestingDelimiter);\n });\n return nodes;\n }\n\n async getNested(id: string): Promise> {\n const folders = await this.getAllNested();\n return ServiceUtils.getTreeNodeObject(folders, id) as TreeNode;\n }\n\n async saveWithServer(folder: Folder): Promise {\n const request = new FolderRequest(folder);\n\n let response: FolderResponse;\n if (folder.id == null) {\n response = await this.apiService.postFolder(request);\n folder.id = response.id;\n } else {\n response = await this.apiService.putFolder(folder.id, request);\n }\n\n const userId = await this.userService.getUserId();\n const data = new FolderData(response, userId);\n await this.upsert(data);\n }\n\n async upsert(folder: FolderData | FolderData[]): Promise {\n const userId = await this.userService.getUserId();\n let folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n if (folders == null) {\n folders = {};\n }\n\n if (folder instanceof FolderData) {\n const f = folder as FolderData;\n folders[f.id] = f;\n } else {\n (folder as FolderData[]).forEach(f => {\n folders[f.id] = f;\n });\n }\n\n await this.storageService.save(Keys.foldersPrefix + userId, folders);\n this.decryptedFolderCache = null;\n }\n\n async replace(folders: { [id: string]: FolderData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.foldersPrefix + userId, folders);\n this.decryptedFolderCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.foldersPrefix + userId);\n this.decryptedFolderCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n if (folders == null) {\n return;\n }\n\n if (typeof id === 'string') {\n if (folders[id] == null) {\n return;\n }\n delete folders[id];\n } else {\n (id as string[]).forEach(i => {\n delete folders[i];\n });\n }\n\n await this.storageService.save(Keys.foldersPrefix + userId, folders);\n this.decryptedFolderCache = null;\n\n // Items in a deleted folder are re-assigned to \"No Folder\"\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(Keys.ciphersPrefix + userId);\n if (ciphers != null) {\n const updates: CipherData[] = [];\n for (const cId in ciphers) {\n if (ciphers[cId].folderId === id) {\n ciphers[cId].folderId = null;\n updates.push(ciphers[cId]);\n }\n }\n if (updates.length > 0) {\n this.cipherService.upsert(updates);\n }\n }\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteFolder(id);\n await this.delete(id);\n }\n}\n","import { I18nService as I18nServiceAbstraction } from '../abstractions/i18n.service';\n\nexport class I18nService implements I18nServiceAbstraction {\n locale: string;\n // First locale is the default (English)\n supportedTranslationLocales: string[] = ['en'];\n translationLocale: string;\n collator: Intl.Collator;\n localeNames = new Map([\n ['af', 'Afrikaans'],\n ['be', 'Беларуская'],\n ['bg', 'български'],\n ['ca', 'català'],\n ['cs', 'čeština'],\n ['da', 'dansk'],\n ['de', 'Deutsch'],\n ['el', 'Ελληνικά'],\n ['en', 'English'],\n ['en-GB', 'English (British)'],\n ['eo', 'Esperanto'],\n ['es', 'español'],\n ['et', 'eesti'],\n ['fa', 'فارسی'],\n ['fi', 'suomi'],\n ['fr', 'français'],\n ['he', 'עברית'],\n ['hi', 'हिन्दी'],\n ['hr', 'hrvatski'],\n ['hu', 'magyar'],\n ['id', 'Bahasa Indonesia'],\n ['it', 'italiano'],\n ['ja', '日本語'],\n ['ko', '한국어'],\n ['lv', 'Latvietis'],\n ['ml', 'മലയാളം'],\n ['nb', 'norsk (bokmål)'],\n ['nl', 'Nederlands'],\n ['pl', 'polski'],\n ['pt-BR', 'português do Brasil'],\n ['pt-PT', 'português'],\n ['ro', 'română'],\n ['ru', 'русский'],\n ['sk', 'slovenčina'],\n ['sr', 'Српски'],\n ['sv', 'svenska'],\n ['th', 'ไทย'],\n ['tr', 'Türkçe'],\n ['uk', 'українська'],\n ['vi', 'Tiếng Việt'],\n ['zh-CN', '中文(中国大陆)'],\n ['zh-TW', '中文(台灣)'],\n ]);\n\n protected inited: boolean;\n protected defaultMessages: any = {};\n protected localeMessages: any = {};\n\n constructor(protected systemLanguage: string, protected localesDirectory: string,\n protected getLocalesJson: (formattedLocale: string) => Promise) {\n this.systemLanguage = systemLanguage.replace('_', '-');\n }\n\n async init(locale?: string) {\n if (this.inited) {\n throw new Error('i18n already initialized.');\n }\n if (this.supportedTranslationLocales == null || this.supportedTranslationLocales.length === 0) {\n throw new Error('supportedTranslationLocales not set.');\n }\n\n this.inited = true;\n this.locale = this.translationLocale = locale != null ? locale : this.systemLanguage;\n\n try {\n this.collator = new Intl.Collator(this.locale, { numeric: true, sensitivity: 'base' });\n } catch {\n this.collator = null;\n }\n\n if (this.supportedTranslationLocales.indexOf(this.translationLocale) === -1) {\n this.translationLocale = this.translationLocale.slice(0, 2);\n\n if (this.supportedTranslationLocales.indexOf(this.translationLocale) === -1) {\n this.translationLocale = this.supportedTranslationLocales[0];\n }\n }\n\n if (this.localesDirectory != null) {\n await this.loadMessages(this.translationLocale, this.localeMessages);\n if (this.translationLocale !== this.supportedTranslationLocales[0]) {\n await this.loadMessages(this.supportedTranslationLocales[0], this.defaultMessages);\n }\n }\n }\n\n t(id: string, p1?: string, p2?: string, p3?: string): string {\n return this.translate(id, p1, p2, p3);\n }\n\n translate(id: string, p1?: string, p2?: string, p3?: string): string {\n let result: string;\n if (this.localeMessages.hasOwnProperty(id) && this.localeMessages[id]) {\n result = this.localeMessages[id];\n } else if (this.defaultMessages.hasOwnProperty(id) && this.defaultMessages[id]) {\n result = this.defaultMessages[id];\n } else {\n result = '';\n }\n\n if (result !== '') {\n if (p1 != null) {\n result = result.split('__$1__').join(p1);\n }\n if (p2 != null) {\n result = result.split('__$2__').join(p2);\n }\n if (p3 != null) {\n result = result.split('__$3__').join(p3);\n }\n }\n\n return result;\n }\n\n private async loadMessages(locale: string, messagesObj: any): Promise {\n const formattedLocale = locale.replace('-', '_');\n const locales = await this.getLocalesJson(formattedLocale);\n for (const prop in locales) {\n if (!locales.hasOwnProperty(prop)) {\n continue;\n }\n messagesObj[prop] = locales[prop].message;\n\n if (locales[prop].placeholders) {\n for (const placeProp in locales[prop].placeholders) {\n if (!locales[prop].placeholders.hasOwnProperty(placeProp) ||\n !locales[prop].placeholders[placeProp].content) {\n continue;\n }\n\n const replaceToken = '\\\\$' + placeProp.toUpperCase() + '\\\\$';\n let replaceContent = locales[prop].placeholders[placeProp].content;\n if (replaceContent === '$1' || replaceContent === '$2' || replaceContent === '$3') {\n replaceContent = '__$' + replaceContent + '__';\n }\n messagesObj[prop] = messagesObj[prop].replace(new RegExp(replaceToken, 'g'), replaceContent);\n }\n }\n }\n }\n\n}\n","import * as zxcvbn from 'zxcvbn';\n\nimport { CipherString } from '../models/domain/cipherString';\nimport { GeneratedPasswordHistory } from '../models/domain/generatedPasswordHistory';\nimport { PasswordGeneratorPolicyOptions } from '../models/domain/passwordGeneratorPolicyOptions';\nimport { Policy } from '../models/domain/policy';\n\nimport { CryptoService } from '../abstractions/crypto.service';\nimport {\n PasswordGenerationService as PasswordGenerationServiceAbstraction,\n} from '../abstractions/passwordGeneration.service';\nimport { PolicyService } from '../abstractions/policy.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nimport { EEFLongWordList } from '../misc/wordlist';\n\nimport { PolicyType } from '../enums/policyType';\n\nconst DefaultOptions = {\n length: 14,\n ambiguous: false,\n number: true,\n minNumber: 1,\n uppercase: true,\n minUppercase: 0,\n lowercase: true,\n minLowercase: 0,\n special: false,\n minSpecial: 1,\n type: 'password',\n numWords: 3,\n wordSeparator: '-',\n capitalize: false,\n includeNumber: false,\n};\n\nconst Keys = {\n options: 'passwordGenerationOptions',\n history: 'generatedPasswordHistory',\n};\n\nconst MaxPasswordsInHistory = 100;\n\nexport class PasswordGenerationService implements PasswordGenerationServiceAbstraction {\n private optionsCache: any;\n private history: GeneratedPasswordHistory[];\n\n constructor(private cryptoService: CryptoService, private storageService: StorageService,\n private policyService: PolicyService) { }\n\n async generatePassword(options: any): Promise {\n // overload defaults with given options\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.type === 'passphrase') {\n return this.generatePassphrase(options);\n }\n\n // sanitize\n this.sanitizePasswordLength(o, true);\n\n const minLength: number = o.minUppercase + o.minLowercase + o.minNumber + o.minSpecial;\n if (o.length < minLength) {\n o.length = minLength;\n }\n\n const positions: string[] = [];\n if (o.lowercase && o.minLowercase > 0) {\n for (let i = 0; i < o.minLowercase; i++) {\n positions.push('l');\n }\n }\n if (o.uppercase && o.minUppercase > 0) {\n for (let i = 0; i < o.minUppercase; i++) {\n positions.push('u');\n }\n }\n if (o.number && o.minNumber > 0) {\n for (let i = 0; i < o.minNumber; i++) {\n positions.push('n');\n }\n }\n if (o.special && o.minSpecial > 0) {\n for (let i = 0; i < o.minSpecial; i++) {\n positions.push('s');\n }\n }\n while (positions.length < o.length) {\n positions.push('a');\n }\n\n // shuffle\n await this.shuffleArray(positions);\n\n // build out the char sets\n let allCharSet = '';\n\n let lowercaseCharSet = 'abcdefghijkmnopqrstuvwxyz';\n if (o.ambiguous) {\n lowercaseCharSet += 'l';\n }\n if (o.lowercase) {\n allCharSet += lowercaseCharSet;\n }\n\n let uppercaseCharSet = 'ABCDEFGHJKLMNPQRSTUVWXYZ';\n if (o.ambiguous) {\n uppercaseCharSet += 'IO';\n }\n if (o.uppercase) {\n allCharSet += uppercaseCharSet;\n }\n\n let numberCharSet = '23456789';\n if (o.ambiguous) {\n numberCharSet += '01';\n }\n if (o.number) {\n allCharSet += numberCharSet;\n }\n\n const specialCharSet = '!@#$%^&*';\n if (o.special) {\n allCharSet += specialCharSet;\n }\n\n let password = '';\n for (let i = 0; i < o.length; i++) {\n let positionChars: string;\n switch (positions[i]) {\n case 'l':\n positionChars = lowercaseCharSet;\n break;\n case 'u':\n positionChars = uppercaseCharSet;\n break;\n case 'n':\n positionChars = numberCharSet;\n break;\n case 's':\n positionChars = specialCharSet;\n break;\n case 'a':\n positionChars = allCharSet;\n break;\n default:\n break;\n }\n\n const randomCharIndex = await this.cryptoService.randomNumber(0, positionChars.length - 1);\n password += positionChars.charAt(randomCharIndex);\n }\n\n return password;\n }\n\n async generatePassphrase(options: any): Promise {\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.numWords == null || o.numWords <= 2) {\n o.numWords = DefaultOptions.numWords;\n }\n if (o.wordSeparator == null || o.wordSeparator.length === 0 || o.wordSeparator.length > 1) {\n o.wordSeparator = ' ';\n }\n if (o.capitalize == null) {\n o.capitalize = false;\n }\n if (o.includeNumber == null) {\n o.includeNumber = false;\n }\n\n const listLength = EEFLongWordList.length - 1;\n const wordList = new Array(o.numWords);\n for (let i = 0; i < o.numWords; i++) {\n const wordIndex = await this.cryptoService.randomNumber(0, listLength);\n if (o.capitalize) {\n wordList[i] = this.capitalize(EEFLongWordList[wordIndex]);\n } else {\n wordList[i] = EEFLongWordList[wordIndex];\n }\n }\n\n if (o.includeNumber) {\n await this.appendRandomNumberToRandomWord(wordList);\n }\n return wordList.join(o.wordSeparator);\n }\n\n async getOptions(): Promise<[any, PasswordGeneratorPolicyOptions]> {\n if (this.optionsCache == null) {\n const options = await this.storageService.get(Keys.options);\n if (options == null) {\n this.optionsCache = DefaultOptions;\n } else {\n this.optionsCache = Object.assign({}, DefaultOptions, options);\n }\n }\n const enforcedOptions = await this.enforcePasswordGeneratorPoliciesOnOptions(this.optionsCache);\n this.optionsCache = enforcedOptions[0];\n return [this.optionsCache, enforcedOptions[1]];\n }\n\n async enforcePasswordGeneratorPoliciesOnOptions(options: any): Promise<[any, PasswordGeneratorPolicyOptions]> {\n let enforcedPolicyOptions = await this.getPasswordGeneratorPolicyOptions();\n if (enforcedPolicyOptions != null) {\n if (options.length < enforcedPolicyOptions.minLength) {\n options.length = enforcedPolicyOptions.minLength;\n }\n\n if (enforcedPolicyOptions.useUppercase) {\n options.uppercase = true;\n }\n\n if (enforcedPolicyOptions.useLowercase) {\n options.lowercase = true;\n }\n\n if (enforcedPolicyOptions.useNumbers) {\n options.number = true;\n }\n\n if (options.minNumber < enforcedPolicyOptions.numberCount) {\n options.minNumber = enforcedPolicyOptions.numberCount;\n }\n\n if (enforcedPolicyOptions.useSpecial) {\n options.special = true;\n }\n\n if (options.minSpecial < enforcedPolicyOptions.specialCount) {\n options.minSpecial = enforcedPolicyOptions.specialCount;\n }\n\n // Must normalize these fields because the receiving call expects all options to pass the current rules\n if (options.minSpecial + options.minNumber > options.length) {\n options.minSpecial = options.length - options.minNumber;\n }\n\n if (options.numWords < enforcedPolicyOptions.minNumberWords) {\n options.numWords = enforcedPolicyOptions.minNumberWords;\n }\n\n if (enforcedPolicyOptions.capitalize) {\n options.capitalize = true;\n }\n\n if (enforcedPolicyOptions.includeNumber) {\n options.includeNumber = true;\n }\n\n // Force default type if password/passphrase selected via policy\n if (enforcedPolicyOptions.defaultType === 'password' ||\n enforcedPolicyOptions.defaultType === 'passphrase') {\n options.type = enforcedPolicyOptions.defaultType;\n }\n } else { // UI layer expects an instantiated object to prevent more explicit null checks\n enforcedPolicyOptions = new PasswordGeneratorPolicyOptions();\n }\n return [options, enforcedPolicyOptions];\n }\n\n async getPasswordGeneratorPolicyOptions(): Promise {\n const policies: Policy[] = this.policyService == null ? null :\n await this.policyService.getAll(PolicyType.PasswordGenerator);\n let enforcedOptions: PasswordGeneratorPolicyOptions = null;\n\n if (policies == null || policies.length === 0) {\n return enforcedOptions;\n }\n\n policies.forEach(currentPolicy => {\n if (!currentPolicy.enabled || currentPolicy.data == null) {\n return;\n }\n\n if (enforcedOptions == null) {\n enforcedOptions = new PasswordGeneratorPolicyOptions();\n }\n\n // Password wins in multi-org collisions\n if (currentPolicy.data.defaultType != null && enforcedOptions.defaultType !== 'password') {\n enforcedOptions.defaultType = currentPolicy.data.defaultType;\n }\n\n if (currentPolicy.data.minLength != null\n && currentPolicy.data.minLength > enforcedOptions.minLength) {\n enforcedOptions.minLength = currentPolicy.data.minLength;\n }\n\n if (currentPolicy.data.useUpper) {\n enforcedOptions.useUppercase = true;\n }\n\n if (currentPolicy.data.useLower) {\n enforcedOptions.useLowercase = true;\n }\n\n if (currentPolicy.data.useNumbers) {\n enforcedOptions.useNumbers = true;\n }\n\n if (currentPolicy.data.minNumbers != null\n && currentPolicy.data.minNumbers > enforcedOptions.numberCount) {\n enforcedOptions.numberCount = currentPolicy.data.minNumbers;\n }\n\n if (currentPolicy.data.useSpecial) {\n enforcedOptions.useSpecial = true;\n }\n\n if (currentPolicy.data.minSpecial != null\n && currentPolicy.data.minSpecial > enforcedOptions.specialCount) {\n enforcedOptions.specialCount = currentPolicy.data.minSpecial;\n }\n\n if (currentPolicy.data.minNumberWords != null\n && currentPolicy.data.minNumberWords > enforcedOptions.minNumberWords) {\n enforcedOptions.minNumberWords = currentPolicy.data.minNumberWords;\n }\n\n if (currentPolicy.data.capitalize) {\n enforcedOptions.capitalize = true;\n }\n\n if (currentPolicy.data.includeNumber) {\n enforcedOptions.includeNumber = true;\n }\n });\n\n return enforcedOptions;\n }\n\n async saveOptions(options: any) {\n await this.storageService.save(Keys.options, options);\n this.optionsCache = options;\n }\n\n async getHistory(): Promise {\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n return new Array();\n }\n\n if (!this.history) {\n const encrypted = await this.storageService.get(Keys.history);\n this.history = await this.decryptHistory(encrypted);\n }\n\n return this.history || new Array();\n }\n\n async addHistory(password: string): Promise {\n // Cannot add new history if no key is available\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n return;\n }\n\n const currentHistory = await this.getHistory();\n\n // Prevent duplicates\n if (this.matchesPrevious(password, currentHistory)) {\n return;\n }\n\n currentHistory.unshift(new GeneratedPasswordHistory(password, Date.now()));\n\n // Remove old items.\n if (currentHistory.length > MaxPasswordsInHistory) {\n currentHistory.pop();\n }\n\n const newHistory = await this.encryptHistory(currentHistory);\n return await this.storageService.save(Keys.history, newHistory);\n }\n\n async clear(): Promise {\n this.history = [];\n return await this.storageService.remove(Keys.history);\n }\n\n passwordStrength(password: string, userInputs: string[] = null): zxcvbn.ZXCVBNResult {\n if (password == null || password.length === 0) {\n return null;\n }\n let globalUserInputs = ['bitwarden', 'bit', 'warden'];\n if (userInputs != null && userInputs.length > 0) {\n globalUserInputs = globalUserInputs.concat(userInputs);\n }\n // Use a hash set to get rid of any duplicate user inputs\n const finalUserInputs = Array.from(new Set(globalUserInputs));\n const result = zxcvbn(password, finalUserInputs);\n return result;\n }\n\n normalizeOptions(options: any, enforcedPolicyOptions: PasswordGeneratorPolicyOptions) {\n options.minLowercase = 0;\n options.minUppercase = 0;\n\n if (!options.length || options.length < 5) {\n options.length = 5;\n } else if (options.length > 128) {\n options.length = 128;\n }\n\n if (options.length < enforcedPolicyOptions.minLength) {\n options.length = enforcedPolicyOptions.minLength;\n }\n\n if (!options.minNumber) {\n options.minNumber = 0;\n } else if (options.minNumber > options.length) {\n options.minNumber = options.length;\n } else if (options.minNumber > 9) {\n options.minNumber = 9;\n }\n\n if (options.minNumber < enforcedPolicyOptions.numberCount) {\n options.minNumber = enforcedPolicyOptions.numberCount;\n }\n\n if (!options.minSpecial) {\n options.minSpecial = 0;\n } else if (options.minSpecial > options.length) {\n options.minSpecial = options.length;\n } else if (options.minSpecial > 9) {\n options.minSpecial = 9;\n }\n\n if (options.minSpecial < enforcedPolicyOptions.specialCount) {\n options.minSpecial = enforcedPolicyOptions.specialCount;\n }\n\n if (options.minSpecial + options.minNumber > options.length) {\n options.minSpecial = options.length - options.minNumber;\n }\n\n if (options.numWords == null || options.length < 3) {\n options.numWords = 3;\n } else if (options.numWords > 20) {\n options.numWords = 20;\n }\n\n if (options.numWords < enforcedPolicyOptions.minNumberWords) {\n options.numWords = enforcedPolicyOptions.minNumberWords;\n }\n\n if (options.wordSeparator != null && options.wordSeparator.length > 1) {\n options.wordSeparator = options.wordSeparator[0];\n }\n\n this.sanitizePasswordLength(options, false);\n }\n\n private capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n private async appendRandomNumberToRandomWord(wordList: string[]) {\n if (wordList == null || wordList.length <= 0) {\n return;\n }\n const index = await this.cryptoService.randomNumber(0, wordList.length - 1);\n const num = await this.cryptoService.randomNumber(0, 9);\n wordList[index] = wordList[index] + num;\n }\n\n private async encryptHistory(history: GeneratedPasswordHistory[]): Promise {\n if (history == null || history.length === 0) {\n return Promise.resolve([]);\n }\n\n const promises = history.map(async item => {\n const encrypted = await this.cryptoService.encrypt(item.password);\n return new GeneratedPasswordHistory(encrypted.encryptedString, item.date);\n });\n\n return await Promise.all(promises);\n }\n\n private async decryptHistory(history: GeneratedPasswordHistory[]): Promise {\n if (history == null || history.length === 0) {\n return Promise.resolve([]);\n }\n\n const promises = history.map(async item => {\n const decrypted = await this.cryptoService.decryptToUtf8(new CipherString(item.password));\n return new GeneratedPasswordHistory(decrypted, item.date);\n });\n\n return await Promise.all(promises);\n }\n\n private matchesPrevious(password: string, history: GeneratedPasswordHistory[]): boolean {\n if (history == null || history.length === 0) {\n return false;\n }\n\n return history[history.length - 1].password === password;\n }\n\n // ref: https://stackoverflow.com/a/12646864/1090359\n private async shuffleArray(array: string[]) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = await this.cryptoService.randomNumber(0, i);\n [array[i], array[j]] = [array[j], array[i]];\n }\n }\n\n private sanitizePasswordLength(options: any, forGeneration: boolean) {\n let minUppercaseCalc = 0;\n let minLowercaseCalc = 0;\n let minNumberCalc: number = options.minNumber;\n let minSpecialCalc: number = options.minSpecial;\n\n if (options.uppercase && options.minUppercase <= 0) {\n minUppercaseCalc = 1;\n } else if (!options.uppercase) {\n minUppercaseCalc = 0;\n }\n\n if (options.lowercase && options.minLowercase <= 0) {\n minLowercaseCalc = 1;\n } else if (!options.lowercase) {\n minLowercaseCalc = 0;\n }\n\n if (options.number && options.minNumber <= 0) {\n minNumberCalc = 1;\n } else if (!options.number) {\n minNumberCalc = 0;\n }\n\n if (options.special && options.minSpecial <= 0) {\n minSpecialCalc = 1;\n } else if (!options.special) {\n minSpecialCalc = 0;\n }\n\n // This should never happen but is a final safety net\n if (!options.length || options.length < 1) {\n options.length = 10;\n }\n\n const minLength: number = minUppercaseCalc + minLowercaseCalc + minNumberCalc + minSpecialCalc;\n // Normalize and Generation both require this modification\n if (options.length < minLength) {\n options.length = minLength;\n }\n\n // Apply other changes if the options object passed in is for generation\n if (forGeneration) {\n options.minUppercase = minUppercaseCalc;\n options.minLowercase = minLowercaseCalc;\n options.minNumber = minNumberCalc;\n options.minSpecial = minSpecialCalc;\n }\n }\n}\n","import { SettingsService as SettingsServiceAbstraction } from '../abstractions/settings.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nconst Keys = {\n settingsPrefix: 'settings_',\n equivalentDomains: 'equivalentDomains',\n};\n\nexport class SettingsService implements SettingsServiceAbstraction {\n private settingsCache: any;\n\n constructor(private userService: UserService, private storageService: StorageService) {\n }\n\n clearCache(): void {\n this.settingsCache = null;\n }\n\n getEquivalentDomains(): Promise {\n return this.getSettingsKey(Keys.equivalentDomains);\n }\n\n async setEquivalentDomains(equivalentDomains: string[][]): Promise {\n await this.setSettingsKey(Keys.equivalentDomains, equivalentDomains);\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.settingsPrefix + userId);\n this.clearCache();\n }\n\n // Helpers\n\n private async getSettings(): Promise {\n if (this.settingsCache == null) {\n const userId = await this.userService.getUserId();\n this.settingsCache = this.storageService.get(Keys.settingsPrefix + userId);\n }\n return this.settingsCache;\n }\n\n private async getSettingsKey(key: string): Promise {\n const settings = await this.getSettings();\n if (settings != null && settings[key]) {\n return settings[key];\n }\n return null;\n }\n\n private async setSettingsKey(key: string, value: any): Promise {\n const userId = await this.userService.getUserId();\n let settings = await this.getSettings();\n if (!settings) {\n settings = {};\n }\n\n settings[key] = value;\n await this.storageService.save(Keys.settingsPrefix + userId, settings);\n this.settingsCache = settings;\n }\n}\n","import { StateService as StateServiceAbstraction } from '../abstractions/state.service';\n\nexport class StateService implements StateServiceAbstraction {\n private state: any = {};\n\n get(key: string): Promise {\n if (this.state.hasOwnProperty(key)) {\n return Promise.resolve(this.state[key]);\n }\n return Promise.resolve(null);\n }\n\n save(key: string, obj: any): Promise {\n this.state[key] = obj;\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n delete this.state[key];\n return Promise.resolve();\n }\n\n purge(): Promise {\n this.state = {};\n return Promise.resolve();\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CollectionService } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService } from '../abstractions/folder.service';\nimport { MessagingService } from '../abstractions/messaging.service';\nimport { PolicyService } from '../abstractions/policy.service';\nimport { SendService } from '../abstractions/send.service';\nimport { SettingsService } from '../abstractions/settings.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { SyncService as SyncServiceAbstraction } from '../abstractions/sync.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { CipherData } from '../models/data/cipherData';\nimport { CollectionData } from '../models/data/collectionData';\nimport { FolderData } from '../models/data/folderData';\nimport { OrganizationData } from '../models/data/organizationData';\nimport { PolicyData } from '../models/data/policyData';\nimport { SendData } from '../models/data/sendData';\n\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport { CollectionDetailsResponse } from '../models/response/collectionResponse';\nimport { DomainsResponse } from '../models/response/domainsResponse';\nimport { FolderResponse } from '../models/response/folderResponse';\nimport {\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from '../models/response/notificationResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { SendResponse } from '../models/response/sendResponse';\n\nconst Keys = {\n lastSyncPrefix: 'lastSync_',\n};\n\nexport class SyncService implements SyncServiceAbstraction {\n syncInProgress: boolean = false;\n\n constructor(private userService: UserService, private apiService: ApiService,\n private settingsService: SettingsService, private folderService: FolderService,\n private cipherService: CipherService, private cryptoService: CryptoService,\n private collectionService: CollectionService, private storageService: StorageService,\n private messagingService: MessagingService, private policyService: PolicyService,\n private sendService: SendService, private logoutCallback: (expired: boolean) => Promise) {\n }\n\n async getLastSync(): Promise {\n const userId = await this.userService.getUserId();\n if (userId == null) {\n return null;\n }\n\n const lastSync = await this.storageService.get(Keys.lastSyncPrefix + userId);\n if (lastSync) {\n return new Date(lastSync);\n }\n\n return null;\n }\n\n async setLastSync(date: Date): Promise {\n const userId = await this.userService.getUserId();\n if (userId == null) {\n return;\n }\n\n await this.storageService.save(Keys.lastSyncPrefix + userId, date.toJSON());\n }\n\n async fullSync(forceSync: boolean, allowThrowOnError = false): Promise {\n this.syncStarted();\n const isAuthenticated = await this.userService.isAuthenticated();\n if (!isAuthenticated) {\n return this.syncCompleted(false);\n }\n\n const now = new Date();\n let needsSync = false;\n try {\n needsSync = await this.needsSyncing(forceSync);\n } catch (e) {\n if (allowThrowOnError) {\n throw e;\n }\n }\n\n if (!needsSync) {\n await this.setLastSync(now);\n return this.syncCompleted(false);\n }\n\n const userId = await this.userService.getUserId();\n try {\n const response = await this.apiService.getSync();\n\n await this.syncProfile(response.profile);\n await this.syncFolders(userId, response.folders);\n await this.syncCollections(response.collections);\n await this.syncCiphers(userId, response.ciphers);\n await this.syncSends(userId, response.sends);\n await this.syncSettings(userId, response.domains);\n await this.syncPolicies(response.policies);\n\n await this.setLastSync(now);\n return this.syncCompleted(true);\n } catch (e) {\n if (allowThrowOnError) {\n throw e;\n } else {\n return this.syncCompleted(false);\n }\n }\n }\n\n async syncUpsertFolder(notification: SyncFolderNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n try {\n const localFolder = await this.folderService.get(notification.id);\n if ((!isEdit && localFolder == null) ||\n (isEdit && localFolder != null && localFolder.revisionDate < notification.revisionDate)) {\n const remoteFolder = await this.apiService.getFolder(notification.id);\n if (remoteFolder != null) {\n const userId = await this.userService.getUserId();\n await this.folderService.upsert(new FolderData(remoteFolder, userId));\n this.messagingService.send('syncedUpsertedFolder', { folderId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch { }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteFolder(notification: SyncFolderNotification): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n await this.folderService.delete(notification.id);\n this.messagingService.send('syncedDeletedFolder', { folderId: notification.id });\n this.syncCompleted(true);\n return true;\n }\n return this.syncCompleted(false);\n }\n\n async syncUpsertCipher(notification: SyncCipherNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n try {\n let shouldUpdate = true;\n const localCipher = await this.cipherService.get(notification.id);\n if (localCipher != null && localCipher.revisionDate >= notification.revisionDate) {\n shouldUpdate = false;\n }\n\n let checkCollections = false;\n if (shouldUpdate) {\n if (isEdit) {\n shouldUpdate = localCipher != null;\n checkCollections = true;\n } else {\n if (notification.collectionIds == null || notification.organizationId == null) {\n shouldUpdate = localCipher == null;\n } else {\n shouldUpdate = false;\n checkCollections = true;\n }\n }\n }\n\n if (!shouldUpdate && checkCollections && notification.organizationId != null &&\n notification.collectionIds != null && notification.collectionIds.length > 0) {\n const collections = await this.collectionService.getAll();\n if (collections != null) {\n for (let i = 0; i < collections.length; i++) {\n if (notification.collectionIds.indexOf(collections[i].id) > -1) {\n shouldUpdate = true;\n break;\n }\n }\n }\n }\n\n if (shouldUpdate) {\n const remoteCipher = await this.apiService.getCipher(notification.id);\n if (remoteCipher != null) {\n const userId = await this.userService.getUserId();\n await this.cipherService.upsert(new CipherData(remoteCipher, userId));\n this.messagingService.send('syncedUpsertedCipher', { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch (e) {\n if (e != null && e.statusCode === 404 && isEdit) {\n await this.cipherService.delete(notification.id);\n this.messagingService.send('syncedDeletedCipher', { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteCipher(notification: SyncCipherNotification): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n await this.cipherService.delete(notification.id);\n this.messagingService.send('syncedDeletedCipher', { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n return this.syncCompleted(false);\n }\n\n async syncUpsertSend(notification: SyncSendNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n try {\n const localSend = await this.sendService.get(notification.id);\n if ((!isEdit && localSend == null) ||\n (isEdit && localSend != null && localSend.revisionDate < notification.revisionDate)) {\n const remoteSend = await this.apiService.getSend(notification.id);\n if (remoteSend != null) {\n const userId = await this.userService.getUserId();\n await this.sendService.upsert(new SendData(remoteSend, userId));\n this.messagingService.send('syncedUpsertedSend', { sendId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch { }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteSend(notification: SyncSendNotification): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n await this.sendService.delete(notification.id);\n this.messagingService.send('syncedDeletedSend', { sendId: notification.id });\n this.syncCompleted(true);\n return true;\n }\n return this.syncCompleted(false);\n }\n\n // Helpers\n\n private syncStarted() {\n this.syncInProgress = true;\n this.messagingService.send('syncStarted');\n }\n\n private syncCompleted(successfully: boolean): boolean {\n this.syncInProgress = false;\n this.messagingService.send('syncCompleted', { successfully: successfully });\n return successfully;\n }\n\n private async needsSyncing(forceSync: boolean) {\n if (forceSync) {\n return true;\n }\n\n const lastSync = await this.getLastSync();\n if (lastSync == null || lastSync.getTime() === 0) {\n return true;\n }\n\n const response = await this.apiService.getAccountRevisionDate();\n if (new Date(response) <= lastSync) {\n return false;\n }\n return true;\n }\n\n private async syncProfile(response: ProfileResponse) {\n const stamp = await this.userService.getSecurityStamp();\n if (stamp != null && stamp !== response.securityStamp) {\n if (this.logoutCallback != null) {\n await this.logoutCallback(true);\n }\n\n throw new Error('Stamp has changed');\n }\n\n await this.cryptoService.setEncKey(response.key);\n await this.cryptoService.setEncPrivateKey(response.privateKey);\n await this.cryptoService.setOrgKeys(response.organizations);\n await this.userService.setSecurityStamp(response.securityStamp);\n\n const organizations: { [id: string]: OrganizationData; } = {};\n response.organizations.forEach(o => {\n organizations[o.id] = new OrganizationData(o);\n });\n return await this.userService.replaceOrganizations(organizations);\n }\n\n private async syncFolders(userId: string, response: FolderResponse[]) {\n const folders: { [id: string]: FolderData; } = {};\n response.forEach(f => {\n folders[f.id] = new FolderData(f, userId);\n });\n return await this.folderService.replace(folders);\n }\n\n private async syncCollections(response: CollectionDetailsResponse[]) {\n const collections: { [id: string]: CollectionData; } = {};\n response.forEach(c => {\n collections[c.id] = new CollectionData(c);\n });\n return await this.collectionService.replace(collections);\n }\n\n private async syncCiphers(userId: string, response: CipherResponse[]) {\n const ciphers: { [id: string]: CipherData; } = {};\n response.forEach(c => {\n ciphers[c.id] = new CipherData(c, userId);\n });\n return await this.cipherService.replace(ciphers);\n }\n\n private async syncSends(userId: string, response: SendResponse[]) {\n const sends: { [id: string]: SendData; } = {};\n response.forEach(s => {\n sends[s.id] = new SendData(s, userId);\n });\n return await this.sendService.replace(sends);\n }\n\n private async syncSettings(userId: string, response: DomainsResponse) {\n let eqDomains: string[][] = [];\n if (response != null && response.equivalentDomains != null) {\n eqDomains = eqDomains.concat(response.equivalentDomains);\n }\n\n if (response != null && response.globalEquivalentDomains != null) {\n response.globalEquivalentDomains.forEach(global => {\n if (global.domains.length > 0) {\n eqDomains.push(global.domains);\n }\n });\n }\n\n return this.settingsService.setEquivalentDomains(eqDomains);\n }\n\n private async syncPolicies(response: PolicyResponse[]) {\n const policies: { [id: string]: PolicyData; } = {};\n if (response != null) {\n response.forEach(p => {\n policies[p.id] = new PolicyData(p);\n });\n }\n return await this.policyService.replace(policies);\n }\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendFileData } from './sendFileData';\nimport { SendTextData } from './sendTextData';\n\nimport { SendResponse } from '../response/sendResponse';\n\nexport class SendData {\n id: string;\n accessId: string;\n userId: string;\n type: SendType;\n name: string;\n notes: string;\n file: SendFileData;\n text: SendTextData;\n key: string;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: string;\n expirationDate: string;\n deletionDate: string;\n password: string;\n disabled: boolean;\n\n constructor(response?: SendResponse, userId?: string) {\n if (response == null) {\n return;\n }\n\n this.id = response.id;\n this.accessId = response.accessId;\n this.userId = userId;\n this.type = response.type;\n this.name = response.name;\n this.notes = response.notes;\n this.key = response.key;\n this.maxAccessCount = response.maxAccessCount;\n this.accessCount = response.accessCount;\n this.revisionDate = response.revisionDate;\n this.expirationDate = response.expirationDate;\n this.deletionDate = response.deletionDate;\n this.password = response.password;\n this.disabled = response.disable;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendTextData(response.text);\n break;\n case SendType.File:\n this.file = new SendFileData(response.file);\n break;\n default:\n break;\n }\n }\n}\n","import { ConstantsService } from './constants.service';\n\nimport { StorageService } from '../abstractions/storage.service';\nimport { TokenService as TokenServiceAbstraction } from '../abstractions/token.service';\n\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n accessToken: 'accessToken',\n refreshToken: 'refreshToken',\n twoFactorTokenPrefix: 'twoFactorToken_',\n};\n\nexport class TokenService implements TokenServiceAbstraction {\n token: string;\n decodedToken: any;\n refreshToken: string;\n\n constructor(private storageService: StorageService) {\n }\n\n setTokens(accessToken: string, refreshToken: string): Promise {\n return Promise.all([\n this.setToken(accessToken),\n this.setRefreshToken(refreshToken),\n ]);\n }\n\n async setToken(token: string): Promise {\n this.token = token;\n this.decodedToken = null;\n\n if (await this.skipTokenStorage()) {\n // if we have a vault timeout and the action is log out, don't store token\n return;\n }\n\n return this.storageService.save(Keys.accessToken, token);\n }\n\n async getToken(): Promise {\n if (this.token != null) {\n return this.token;\n }\n\n this.token = await this.storageService.get(Keys.accessToken);\n return this.token;\n }\n\n async setRefreshToken(refreshToken: string): Promise {\n this.refreshToken = refreshToken;\n\n if (await this.skipTokenStorage()) {\n // if we have a vault timeout and the action is log out, don't store token\n return;\n }\n\n return this.storageService.save(Keys.refreshToken, refreshToken);\n }\n\n async getRefreshToken(): Promise {\n if (this.refreshToken != null) {\n return this.refreshToken;\n }\n\n this.refreshToken = await this.storageService.get(Keys.refreshToken);\n return this.refreshToken;\n }\n\n async toggleTokens(): Promise {\n const token = await this.getToken();\n const refreshToken = await this.getRefreshToken();\n const timeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n const action = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n if ((timeout != null || timeout === 0) && action === 'logOut') {\n // if we have a vault timeout and the action is log out, reset tokens\n await this.clearToken();\n this.token = token;\n this.refreshToken = refreshToken;\n return;\n }\n\n await this.setToken(token);\n await this.setRefreshToken(refreshToken);\n }\n\n setTwoFactorToken(token: string, email: string): Promise {\n return this.storageService.save(Keys.twoFactorTokenPrefix + email, token);\n }\n\n getTwoFactorToken(email: string): Promise {\n return this.storageService.get(Keys.twoFactorTokenPrefix + email);\n }\n\n clearTwoFactorToken(email: string): Promise {\n return this.storageService.remove(Keys.twoFactorTokenPrefix + email);\n }\n\n clearToken(): Promise {\n this.token = null;\n this.decodedToken = null;\n this.refreshToken = null;\n\n return Promise.all([\n this.storageService.remove(Keys.accessToken),\n this.storageService.remove(Keys.refreshToken),\n ]);\n }\n\n // jwthelper methods\n // ref https://github.com/auth0/angular-jwt/blob/master/src/angularJwt/services/jwt.js\n\n decodeToken(): any {\n if (this.decodedToken) {\n return this.decodedToken;\n }\n\n if (this.token == null) {\n throw new Error('Token not found.');\n }\n\n const parts = this.token.split('.');\n if (parts.length !== 3) {\n throw new Error('JWT must have 3 parts');\n }\n\n const decoded = Utils.fromUrlB64ToUtf8(parts[1]);\n if (decoded == null) {\n throw new Error('Cannot decode the token');\n }\n\n this.decodedToken = JSON.parse(decoded);\n return this.decodedToken;\n }\n\n getTokenExpirationDate(): Date {\n const decoded = this.decodeToken();\n if (typeof decoded.exp === 'undefined') {\n return null;\n }\n\n const d = new Date(0); // The 0 here is the key, which sets the date to the epoch\n d.setUTCSeconds(decoded.exp);\n return d;\n }\n\n tokenSecondsRemaining(offsetSeconds: number = 0): number {\n const d = this.getTokenExpirationDate();\n if (d == null) {\n return 0;\n }\n\n const msRemaining = d.valueOf() - (new Date().valueOf() + (offsetSeconds * 1000));\n return Math.round(msRemaining / 1000);\n }\n\n tokenNeedsRefresh(minutes: number = 5): boolean {\n const sRemaining = this.tokenSecondsRemaining();\n return sRemaining < (60 * minutes);\n }\n\n getUserId(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.sub === 'undefined') {\n throw new Error('No user id found');\n }\n\n return decoded.sub as string;\n }\n\n getEmail(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.email === 'undefined') {\n throw new Error('No email found');\n }\n\n return decoded.email as string;\n }\n\n getEmailVerified(): boolean {\n const decoded = this.decodeToken();\n if (typeof decoded.email_verified === 'undefined') {\n throw new Error('No email verification found');\n }\n\n return decoded.email_verified as boolean;\n }\n\n getName(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.name === 'undefined') {\n return null;\n }\n\n return decoded.name as string;\n }\n\n getPremium(): boolean {\n const decoded = this.decodeToken();\n if (typeof decoded.premium === 'undefined') {\n return false;\n }\n\n return decoded.premium as boolean;\n }\n\n getIssuer(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.iss === 'undefined') {\n throw new Error('No issuer found');\n }\n\n return decoded.iss as string;\n }\n\n private async skipTokenStorage(): Promise {\n const timeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n const action = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n return timeout != null && action === 'logOut';\n }\n}\n","import { ConstantsService } from './constants.service';\n\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { TotpService as TotpServiceAbstraction } from '../abstractions/totp.service';\n\nimport { Utils } from '../misc/utils';\n\nconst B32Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';\nconst SteamChars = '23456789BCDFGHJKMNPQRTVWXY';\n\nexport class TotpService implements TotpServiceAbstraction {\n constructor(private storageService: StorageService, private cryptoFunctionService: CryptoFunctionService) { }\n\n async getCode(key: string): Promise {\n if (key == null) {\n return null;\n }\n let period = 30;\n let alg: 'sha1' | 'sha256' | 'sha512' = 'sha1';\n let digits = 6;\n let keyB32 = key;\n const isOtpAuth = key.toLowerCase().indexOf('otpauth://') === 0;\n const isSteamAuth = !isOtpAuth && key.toLowerCase().indexOf('steam://') === 0;\n if (isOtpAuth) {\n const params = Utils.getQueryParams(key);\n if (params.has('digits') && params.get('digits') != null) {\n try {\n const digitParams = parseInt(params.get('digits').trim(), null);\n if (digitParams > 10) {\n digits = 10;\n } else if (digitParams > 0) {\n digits = digitParams;\n }\n } catch { }\n }\n if (params.has('period') && params.get('period') != null) {\n try {\n const periodParam = parseInt(params.get('period').trim(), null);\n if (periodParam > 0) {\n period = periodParam;\n }\n } catch { }\n }\n if (params.has('secret') && params.get('secret') != null) {\n keyB32 = params.get('secret');\n }\n if (params.has('algorithm') && params.get('algorithm') != null) {\n const algParam = params.get('algorithm').toLowerCase();\n if (algParam === 'sha1' || algParam === 'sha256' || algParam === 'sha512') {\n alg = algParam;\n }\n }\n } else if (isSteamAuth) {\n keyB32 = key.substr('steam://'.length);\n digits = 5;\n }\n\n const epoch = Math.round(new Date().getTime() / 1000.0);\n const timeHex = this.leftPad(this.decToHex(Math.floor(epoch / period)), 16, '0');\n const timeBytes = Utils.fromHexToArray(timeHex);\n const keyBytes = this.b32ToBytes(keyB32);\n\n if (!keyBytes.length || !timeBytes.length) {\n return null;\n }\n\n const hash = await this.sign(keyBytes, timeBytes, alg);\n if (hash.length === 0) {\n return null;\n }\n\n /* tslint:disable */\n const offset = (hash[hash.length - 1] & 0xf);\n const binary = ((hash[offset] & 0x7f) << 24) | ((hash[offset + 1] & 0xff) << 16) |\n ((hash[offset + 2] & 0xff) << 8) | (hash[offset + 3] & 0xff);\n /* tslint:enable */\n\n let otp = '';\n if (isSteamAuth) {\n // tslint:disable-next-line\n let fullCode = binary & 0x7fffffff;\n for (let i = 0; i < digits; i++) {\n otp += SteamChars[fullCode % SteamChars.length];\n fullCode = Math.trunc(fullCode / SteamChars.length);\n }\n } else {\n otp = (binary % Math.pow(10, digits)).toString();\n otp = this.leftPad(otp, digits, '0');\n }\n\n return otp;\n }\n\n getTimeInterval(key: string): number {\n let period = 30;\n if (key != null && key.toLowerCase().indexOf('otpauth://') === 0) {\n const params = Utils.getQueryParams(key);\n if (params.has('period') && params.get('period') != null) {\n try {\n period = parseInt(params.get('period').trim(), null);\n } catch { }\n }\n }\n return period;\n }\n\n async isAutoCopyEnabled(): Promise {\n return !(await this.storageService.get(ConstantsService.disableAutoTotpCopyKey));\n }\n\n // Helpers\n\n private leftPad(s: string, l: number, p: string): string {\n if (l + 1 >= s.length) {\n s = Array(l + 1 - s.length).join(p) + s;\n }\n return s;\n }\n\n private decToHex(d: number): string {\n return (d < 15.5 ? '0' : '') + Math.round(d).toString(16);\n }\n\n private b32ToHex(s: string): string {\n s = s.toUpperCase();\n let cleanedInput = '';\n\n for (let i = 0; i < s.length; i++) {\n if (B32Chars.indexOf(s[i]) < 0) {\n continue;\n }\n\n cleanedInput += s[i];\n }\n s = cleanedInput;\n\n let bits = '';\n let hex = '';\n for (let i = 0; i < s.length; i++) {\n const byteIndex = B32Chars.indexOf(s.charAt(i));\n if (byteIndex < 0) {\n continue;\n }\n bits += this.leftPad(byteIndex.toString(2), 5, '0');\n }\n for (let i = 0; i + 4 <= bits.length; i += 4) {\n const chunk = bits.substr(i, 4);\n hex = hex + parseInt(chunk, 2).toString(16);\n }\n return hex;\n }\n\n private b32ToBytes(s: string): Uint8Array {\n return Utils.fromHexToArray(this.b32ToHex(s));\n }\n\n private async sign(keyBytes: Uint8Array, timeBytes: Uint8Array, alg: 'sha1' | 'sha256' | 'sha512') {\n const signature = await this.cryptoFunctionService.hmac(timeBytes.buffer, keyBytes.buffer, alg);\n return new Uint8Array(signature);\n }\n}\n","import { StorageService } from '../abstractions/storage.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService as UserServiceAbstraction } from '../abstractions/user.service';\n\nimport { OrganizationData } from '../models/data/organizationData';\nimport { Organization } from '../models/domain/organization';\n\nimport { KdfType } from '../enums/kdfType';\n\nconst Keys = {\n userId: 'userId',\n userEmail: 'userEmail',\n stamp: 'securityStamp',\n kdf: 'kdf',\n kdfIterations: 'kdfIterations',\n organizationsPrefix: 'organizations_',\n};\n\nexport class UserService implements UserServiceAbstraction {\n private userId: string;\n private email: string;\n private stamp: string;\n private kdf: KdfType;\n private kdfIterations: number;\n\n constructor(private tokenService: TokenService, private storageService: StorageService) { }\n\n setInformation(userId: string, email: string, kdf: KdfType, kdfIterations: number): Promise {\n this.email = email;\n this.userId = userId;\n this.kdf = kdf;\n this.kdfIterations = kdfIterations;\n\n return Promise.all([\n this.storageService.save(Keys.userEmail, email),\n this.storageService.save(Keys.userId, userId),\n this.storageService.save(Keys.kdf, kdf),\n this.storageService.save(Keys.kdfIterations, kdfIterations),\n ]);\n }\n\n setSecurityStamp(stamp: string): Promise {\n this.stamp = stamp;\n return this.storageService.save(Keys.stamp, stamp);\n }\n\n async getUserId(): Promise {\n if (this.userId == null) {\n this.userId = await this.storageService.get(Keys.userId);\n }\n return this.userId;\n }\n\n async getEmail(): Promise {\n if (this.email == null) {\n this.email = await this.storageService.get(Keys.userEmail);\n }\n return this.email;\n }\n\n async getSecurityStamp(): Promise {\n if (this.stamp == null) {\n this.stamp = await this.storageService.get(Keys.stamp);\n }\n return this.stamp;\n }\n\n async getKdf(): Promise {\n if (this.kdf == null) {\n this.kdf = await this.storageService.get(Keys.kdf);\n }\n return this.kdf;\n }\n\n async getKdfIterations(): Promise {\n if (this.kdfIterations == null) {\n this.kdfIterations = await this.storageService.get(Keys.kdfIterations);\n }\n return this.kdfIterations;\n }\n\n async clear(): Promise {\n const userId = await this.getUserId();\n\n await Promise.all([\n this.storageService.remove(Keys.userId),\n this.storageService.remove(Keys.userEmail),\n this.storageService.remove(Keys.stamp),\n this.storageService.remove(Keys.kdf),\n this.storageService.remove(Keys.kdfIterations),\n this.clearOrganizations(userId),\n ]);\n\n this.userId = this.email = this.stamp = null;\n this.kdf = null;\n this.kdfIterations = null;\n }\n\n async isAuthenticated(): Promise {\n const token = await this.tokenService.getToken();\n if (token == null) {\n return false;\n }\n\n const userId = await this.getUserId();\n return userId != null;\n }\n\n async canAccessPremium(): Promise {\n const authed = await this.isAuthenticated();\n if (!authed) {\n return false;\n }\n\n const tokenPremium = this.tokenService.getPremium();\n if (tokenPremium) {\n return true;\n }\n\n const orgs = await this.getAllOrganizations();\n for (let i = 0; i < orgs.length; i++) {\n if (orgs[i].usersGetPremium && orgs[i].enabled) {\n return true;\n }\n }\n return false;\n }\n\n async getOrganization(id: string): Promise {\n const userId = await this.getUserId();\n const organizations = await this.storageService.get<{ [id: string]: OrganizationData; }>(\n Keys.organizationsPrefix + userId);\n if (organizations == null || !organizations.hasOwnProperty(id)) {\n return null;\n }\n\n return new Organization(organizations[id]);\n }\n\n async getAllOrganizations(): Promise {\n const userId = await this.getUserId();\n const organizations = await this.storageService.get<{ [id: string]: OrganizationData; }>(\n Keys.organizationsPrefix + userId);\n const response: Organization[] = [];\n for (const id in organizations) {\n if (organizations.hasOwnProperty(id)) {\n response.push(new Organization(organizations[id]));\n }\n }\n return response;\n }\n\n async replaceOrganizations(organizations: { [id: string]: OrganizationData; }): Promise {\n const userId = await this.getUserId();\n await this.storageService.save(Keys.organizationsPrefix + userId, organizations);\n }\n\n async clearOrganizations(userId: string): Promise {\n await this.storageService.remove(Keys.organizationsPrefix + userId);\n }\n}\n","import { ConstantsService } from './constants.service';\n\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CollectionService } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService } from '../abstractions/folder.service';\nimport { MessagingService } from '../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { SearchService } from '../abstractions/search.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService } from '../abstractions/user.service';\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from '../abstractions/vaultTimeout.service';\n\nimport { CipherString } from '../models/domain/cipherString';\n\nexport class VaultTimeoutService implements VaultTimeoutServiceAbstraction {\n pinProtectedKey: CipherString = null;\n biometricLocked: boolean = true;\n\n private inited = false;\n\n constructor(private cipherService: CipherService, private folderService: FolderService,\n private collectionService: CollectionService, private cryptoService: CryptoService,\n protected platformUtilsService: PlatformUtilsService, private storageService: StorageService,\n private messagingService: MessagingService, private searchService: SearchService,\n private userService: UserService, private tokenService: TokenService,\n private lockedCallback: () => Promise = null, private loggedOutCallback: () => Promise = null) {\n }\n\n init(checkOnInterval: boolean) {\n if (this.inited) {\n return;\n }\n\n this.inited = true;\n if (checkOnInterval) {\n this.startCheck();\n }\n }\n\n startCheck() {\n this.checkVaultTimeout();\n setInterval(() => this.checkVaultTimeout(), 10 * 1000); // check every 10 seconds\n }\n\n // Keys aren't stored for a device that is locked or logged out.\n async isLocked(): Promise {\n const hasKey = await this.cryptoService.hasKey();\n if (hasKey) {\n if (await this.isBiometricLockSet() && this.biometricLocked) {\n return true;\n }\n }\n return !hasKey;\n }\n\n async checkVaultTimeout(): Promise {\n if (await this.platformUtilsService.isViewOpen()) {\n // Do not lock\n return;\n }\n\n // \"is logged out check\" - similar to isLocked, below\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n\n if (await this.isLocked()) {\n return;\n }\n\n // This has the potential to be removed. Evaluate after all platforms complete with auto-logout\n let vaultTimeout = this.platformUtilsService.lockTimeout();\n if (vaultTimeout == null) {\n vaultTimeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n }\n\n if (vaultTimeout == null || vaultTimeout < 0) {\n return;\n }\n\n const lastActive = await this.storageService.get(ConstantsService.lastActiveKey);\n if (lastActive == null) {\n return;\n }\n\n const vaultTimeoutSeconds = vaultTimeout * 60;\n const diffSeconds = ((new Date()).getTime() - lastActive) / 1000;\n if (diffSeconds >= vaultTimeoutSeconds) {\n // Pivot based on the saved vault timeout action\n const timeoutAction = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n timeoutAction === 'logOut' ? await this.logOut() : await this.lock(true);\n }\n }\n\n async lock(allowSoftLock = false): Promise {\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n\n this.biometricLocked = true;\n if (allowSoftLock) {\n const biometricLocked = await this.isBiometricLockSet();\n if (biometricLocked && this.platformUtilsService.supportsSecureStorage()) {\n this.messagingService.send('locked');\n if (this.lockedCallback != null) {\n await this.lockedCallback();\n }\n return;\n }\n }\n\n await Promise.all([\n this.cryptoService.clearKey(),\n this.cryptoService.clearOrgKeys(true),\n this.cryptoService.clearKeyPair(true),\n this.cryptoService.clearEncKey(true),\n ]);\n\n this.folderService.clearCache();\n this.cipherService.clearCache();\n this.collectionService.clearCache();\n this.searchService.clearIndex();\n this.messagingService.send('locked');\n if (this.lockedCallback != null) {\n await this.lockedCallback();\n }\n }\n\n async logOut(): Promise {\n if (this.loggedOutCallback != null) {\n await this.loggedOutCallback();\n }\n }\n\n async setVaultTimeoutOptions(timeout: number, action: string): Promise {\n await this.storageService.save(ConstantsService.vaultTimeoutKey, timeout);\n await this.storageService.save(ConstantsService.vaultTimeoutActionKey, action);\n await this.cryptoService.toggleKey();\n await this.tokenService.toggleTokens();\n }\n\n async isPinLockSet(): Promise<[boolean, boolean]> {\n const protectedPin = await this.storageService.get(ConstantsService.protectedPin);\n const pinProtectedKey = await this.storageService.get(ConstantsService.pinProtectedKey);\n return [protectedPin != null, pinProtectedKey != null];\n }\n\n async isBiometricLockSet(): Promise {\n return await this.storageService.get(ConstantsService.biometricUnlockKey);\n }\n\n clear(): Promise {\n this.pinProtectedKey = null;\n return this.storageService.remove(ConstantsService.protectedPin);\n }\n}\n","import { LogLevelType } from '../enums/logLevelType';\n\nimport { LogService as LogServiceAbstraction } from '../abstractions/log.service';\n\nimport * as hrtime from 'browser-hrtime';\n\nexport class ConsoleLogService implements LogServiceAbstraction {\n protected timersMap: Map = new Map();\n\n constructor(protected isDev: boolean, protected filter: (level: LogLevelType) => boolean = null) { }\n\n debug(message: string) {\n if (!this.isDev) {\n return;\n }\n this.write(LogLevelType.Debug, message);\n }\n\n info(message: string) {\n this.write(LogLevelType.Info, message);\n }\n\n warning(message: string) {\n this.write(LogLevelType.Warning, message);\n }\n\n error(message: string) {\n this.write(LogLevelType.Error, message);\n }\n\n write(level: LogLevelType, message: string) {\n if (this.filter != null && this.filter(level)) {\n return;\n }\n\n switch (level) {\n case LogLevelType.Debug:\n // tslint:disable-next-line\n console.log(message);\n break;\n case LogLevelType.Info:\n // tslint:disable-next-line\n console.log(message);\n break;\n case LogLevelType.Warning:\n // tslint:disable-next-line\n console.warn(message);\n break;\n case LogLevelType.Error:\n // tslint:disable-next-line\n console.error(message);\n break;\n default:\n break;\n }\n }\n\n time(label: string = 'default') {\n if (!this.timersMap.has(label)) {\n this.timersMap.set(label, hrtime());\n }\n }\n\n timeEnd(label: string = 'default'): [number, number] {\n const elapsed = hrtime(this.timersMap.get(label));\n this.timersMap.delete(label);\n this.write(LogLevelType.Info, `${label}: ${elapsed[0] * 1000 + elapsed[1] / 10e6}ms`);\n return elapsed;\n }\n}\n","import { Cipher } from './cipher';\n\nimport { CipherView } from '../view/cipherView';\n\nimport { Cipher as CipherDomain } from '../domain/cipher';\n\nexport class CipherWithIds extends Cipher {\n id: string;\n collectionIds: string[];\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CipherView | CipherDomain) {\n this.id = o.id;\n super.build(o);\n this.collectionIds = o.collectionIds;\n }\n}\n","import { Collection } from './collection';\n\nimport { CollectionView } from '../view/collectionView';\n\nimport { Collection as CollectionDomain } from '../domain/collection';\n\nexport class CollectionWithId extends Collection {\n id: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CollectionView | CollectionDomain) {\n this.id = o.id;\n super.build(o);\n }\n}\n","import { Folder } from './folder';\n\nimport { FolderView } from '../view/folderView';\n\nimport { Folder as FolderDomain } from '../domain/folder';\n\nexport class FolderWithId extends Folder {\n id: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: FolderView | FolderDomain) {\n this.id = o.id;\n super.build(o);\n }\n}\n","import { ImportResult } from '../../models/domain/importResult';\nimport { BaseImporter } from '../baseImporter';\nimport { Importer } from '../importer';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { FieldType } from '../../enums/fieldType';\nimport { CipherView } from '../../models/view';\nimport { CipherImportContext } from './cipherImportContext';\n\nexport const IgnoredProperties = ['ainfo', 'autosubmit', 'notesplain', 'ps', 'scope', 'tags', 'title', 'uuid', 'notes'];\n\nexport abstract class OnePasswordCsvImporter extends BaseImporter implements Importer {\n protected loginPropertyParsers = [this.setLoginUsername, this.setLoginPassword, this.setLoginUris];\n protected creditCardPropertyParsers = [this.setCreditCardNumber, this.setCreditCardVerification, this.setCreditCardCardholderName, this.setCreditCardExpiry];\n protected identityPropertyParsers = [this.setIdentityFirstName, this.setIdentityInitial, this.setIdentityLastName, this.setIdentityUserName, this.setIdentityEmail, this.setIdentityPhone, this.setIdentityCompany];\n\n abstract setCipherType(value: any, cipher: CipherView): void;\n\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true, {\n quoteChar: '\"',\n escapeChar: '\\\\',\n });\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.isNullOrWhitespace(this.getProp(value, 'title'))) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.getProp(value, 'title'), '--');\n\n this.setNotes(value, cipher);\n\n this.setCipherType(value, cipher);\n\n let altUsername: string = null;\n for (const property in value) {\n if (!value.hasOwnProperty(property) || this.isNullOrWhitespace(value[property])) {\n continue;\n }\n\n const context = new CipherImportContext(value, property, cipher);\n if (cipher.type === CipherType.Login && this.setKnownLoginValue(context)) {\n continue;\n } else if (cipher.type === CipherType.Card && this.setKnownCreditCardValue(context)) {\n continue;\n } else if (cipher.type === CipherType.Identity && this.setKnownIdentityValue(context)) {\n continue;\n }\n\n altUsername = this.setUnknownValue(context, altUsername);\n }\n\n if (cipher.type === CipherType.Login && !this.isNullOrWhitespace(altUsername) &&\n this.isNullOrWhitespace(cipher.login.username) && altUsername.indexOf('://') === -1) {\n cipher.login.username = altUsername;\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n protected getProp(obj: any, name: string): any {\n const lowerObj = Object.entries(obj).reduce((agg: any, entry: [string, any]) => {\n agg[entry[0].toLowerCase()] = entry[1];\n return agg;\n }, {});\n return lowerObj[name.toLowerCase()];\n }\n\n protected getPropByRegexp(obj: any, regexp: RegExp): any {\n const matchingKeys = Object.keys(obj).reduce((agg: string[], key: string) => {\n if (key.match(regexp)) {\n agg.push(key);\n }\n return agg;\n }, []);\n if (matchingKeys.length === 0) {\n return null;\n } else {\n return obj[matchingKeys[0]];\n }\n }\n\n protected getPropIncluding(obj: any, name: string): any {\n const includesMap = Object.keys(obj).reduce((agg: string[], entry: string) => {\n if (entry.toLowerCase().includes(name.toLowerCase())) {\n agg.push(entry);\n }\n return agg;\n }, []);\n if (includesMap.length === 0) {\n return null;\n } else {\n return obj[includesMap[0]];\n }\n }\n\n protected setNotes(importRecord: any, cipher: CipherView) {\n cipher.notes = this.getValueOrDefault(this.getProp(importRecord, 'notesPlain'), '') + '\\n' +\n this.getValueOrDefault(this.getProp(importRecord, 'notes'), '') + '\\n';\n cipher.notes.trim();\n\n }\n\n protected setKnownLoginValue(context: CipherImportContext): boolean {\n return this.loginPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setKnownCreditCardValue(context: CipherImportContext): boolean {\n return this.creditCardPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setKnownIdentityValue(context: CipherImportContext): boolean {\n return this.identityPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setUnknownValue(context: CipherImportContext, altUsername: string): string {\n if (IgnoredProperties.indexOf(context.lowerProperty) === -1 && !context.lowerProperty.startsWith('section:') &&\n !context.lowerProperty.startsWith('section ')) {\n if (altUsername == null && context.lowerProperty === 'email') {\n return context.importRecord[context.property];\n }\n else if (context.lowerProperty === 'created date' || context.lowerProperty === 'modified date') {\n const readableDate = new Date(parseInt(context.importRecord[context.property], 10) * 1000).toUTCString();\n this.processKvp(context.cipher, '1Password ' + context.property, readableDate);\n return null;\n }\n if (context.lowerProperty.includes('password') || context.lowerProperty.includes('key') || context.lowerProperty.includes('secret')) {\n this.processKvp(context.cipher, context.property, context.importRecord[context.property], FieldType.Hidden);\n } else {\n this.processKvp(context.cipher, context.property, context.importRecord[context.property]);\n }\n }\n return null;\n }\n\n protected setIdentityFirstName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.firstName) && context.lowerProperty.includes('first name')) {\n context.cipher.identity.firstName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityInitial(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.middleName) && context.lowerProperty.includes('initial')) {\n context.cipher.identity.middleName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityLastName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.lastName) && context.lowerProperty.includes('last name')) {\n context.cipher.identity.lastName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityUserName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.username) && context.lowerProperty.includes('username')) {\n context.cipher.identity.username = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityCompany(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.company) && context.lowerProperty.includes('company')) {\n context.cipher.identity.company = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityPhone(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.phone) && context.lowerProperty.includes('default phone')) {\n context.cipher.identity.phone = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityEmail(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.email) && context.lowerProperty.includes('email')) {\n context.cipher.identity.email = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardNumber(context: CipherImportContext): boolean {\n if (this.isNullOrWhitespace(context.cipher.card.number) && context.lowerProperty.includes('number')) {\n context.cipher.card.number = context.importRecord[context.property];\n context.cipher.card.brand = this.getCardBrand(context.cipher.card.number);\n return true;\n }\n return false;\n }\n\n protected setCreditCardVerification(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.code) && context.lowerProperty.includes('verification number')) {\n context.cipher.card.code = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardCardholderName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.cardholderName) && context.lowerProperty.includes('cardholder name')) {\n context.cipher.card.cardholderName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardExpiry(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.expiration) && context.lowerProperty.includes('expiry date') &&\n context.importRecord[context.property].length === 7) {\n context.cipher.card.expMonth = (context.importRecord[context.property] as string).substr(0, 2);\n if (context.cipher.card.expMonth[0] === '0') {\n context.cipher.card.expMonth = context.cipher.card.expMonth.substr(1, 1);\n }\n context.cipher.card.expYear = (context.importRecord[context.property] as string).substr(3, 4);\n return true;\n }\n return false;\n }\n\n protected setLoginPassword(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.login.password) && context.lowerProperty === 'password') {\n context.cipher.login.password = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setLoginUsername(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.login.username) && context.lowerProperty === 'username') {\n context.cipher.login.username = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setLoginUris(context: CipherImportContext) {\n if ((context.cipher.login.uris == null || context.cipher.login.uris.length === 0) && context.lowerProperty === 'urls') {\n const urls = context.importRecord[context.property].split(this.newLineRegex);\n context.cipher.login.uris = this.makeUriArray(urls);\n return true;\n } else if ((context.lowerProperty === 'url')) {\n if (context.cipher.login.uris == null) {\n context.cipher.login.uris = [];\n }\n context.cipher.login.uris.concat(this.makeUriArray(context.importRecord[context.property]));\n return true;\n }\n return false;\n }\n}\n","export { AttachmentView } from './attachmentView';\nexport { CardView } from './cardView';\nexport { CipherView } from './cipherView';\nexport { FieldView } from './fieldView';\nexport { IdentityView } from './identityView';\nexport { LoginUriView } from './loginUriView';\nexport { LoginView } from './loginView';\nexport { SecureNoteView } from './secureNoteView';\nexport { View } from './view';\n","export enum NotificationType {\n SyncCipherUpdate = 0,\n SyncCipherCreate = 1,\n SyncLoginDelete = 2,\n SyncFolderDelete = 3,\n SyncCiphers = 4,\n\n SyncVault = 5,\n SyncOrgKeys = 6,\n SyncFolderCreate = 7,\n SyncFolderUpdate = 8,\n SyncCipherDelete = 9,\n SyncSettings = 10,\n\n LogOut = 11,\n\n SyncSendCreate = 12,\n SyncSendUpdate = 13,\n SyncSendDelete = 14,\n}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport 'bootstrap';\nimport 'jquery';\nimport 'popper.js';\n\n// tslint:disable-next-line\nrequire('../scss/styles.scss');\n\nimport { AppModule } from './app.module';\n\nif (process.env.ENV === 'production') {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule, { preserveWhitespaces: true });\n","import 'core-js';\n\nimport { ToasterModule } from 'angular2-toaster';\nimport { Angulartics2Module } from 'angulartics2';\nimport { Angulartics2GoogleAnalytics } from 'angulartics2/ga';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\n\nimport { AppRoutingModule } from './app-routing.module';\n\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\nimport { ServicesModule } from './services/services.module';\n\nimport { AppComponent } from './app.component';\nimport { ModalComponent } from './modal.component';\n\nimport { AvatarComponent } from './components/avatar.component';\nimport { PasswordStrengthComponent } from './components/password-strength.component';\n\nimport { FooterComponent } from './layouts/footer.component';\nimport { FrontendLayoutComponent } from './layouts/frontend-layout.component';\nimport { NavbarComponent } from './layouts/navbar.component';\nimport { OrganizationLayoutComponent } from './layouts/organization-layout.component';\nimport { UserLayoutComponent } from './layouts/user-layout.component';\n\nimport { AcceptEmergencyComponent } from './accounts/accept-emergency.component';\nimport { AcceptOrganizationComponent } from './accounts/accept-organization.component';\nimport { HintComponent } from './accounts/hint.component';\nimport { LockComponent } from './accounts/lock.component';\nimport { LoginComponent } from './accounts/login.component';\nimport { RecoverDeleteComponent } from './accounts/recover-delete.component';\nimport { RecoverTwoFactorComponent } from './accounts/recover-two-factor.component';\nimport { RegisterComponent } from './accounts/register.component';\nimport { SetPasswordComponent } from './accounts/set-password.component';\nimport { SsoComponent } from './accounts/sso.component';\nimport { TwoFactorOptionsComponent } from './accounts/two-factor-options.component';\nimport { TwoFactorComponent } from './accounts/two-factor.component';\nimport { VerifyEmailTokenComponent } from './accounts/verify-email-token.component';\nimport { VerifyRecoverDeleteComponent } from './accounts/verify-recover-delete.component';\n\nimport {\n CollectionAddEditComponent as OrgCollectionAddEditComponent,\n} from './organizations/manage/collection-add-edit.component';\nimport { CollectionsComponent as OrgManageCollectionsComponent } from './organizations/manage/collections.component';\nimport { EntityEventsComponent as OrgEntityEventsComponent } from './organizations/manage/entity-events.component';\nimport { EntityUsersComponent as OrgEntityUsersComponent } from './organizations/manage/entity-users.component';\nimport { EventsComponent as OrgEventsComponent } from './organizations/manage/events.component';\nimport { GroupAddEditComponent as OrgGroupAddEditComponent } from './organizations/manage/group-add-edit.component';\nimport { GroupsComponent as OrgGroupsComponent } from './organizations/manage/groups.component';\nimport { ManageComponent as OrgManageComponent } from './organizations/manage/manage.component';\nimport { PeopleComponent as OrgPeopleComponent } from './organizations/manage/people.component';\nimport { PoliciesComponent as OrgPoliciesComponent } from './organizations/manage/policies.component';\nimport { PolicyEditComponent as OrgPolicyEditComponent } from './organizations/manage/policy-edit.component';\nimport { UserAddEditComponent as OrgUserAddEditComponent } from './organizations/manage/user-add-edit.component';\nimport { UserConfirmComponent as OrgUserConfirmComponent } from './organizations/manage/user-confirm.component';\nimport { UserGroupsComponent as OrgUserGroupsComponent } from './organizations/manage/user-groups.component';\n\nimport { AccountComponent as OrgAccountComponent } from './organizations/settings/account.component';\nimport { AdjustSeatsComponent } from './organizations/settings/adjust-seats.component';\nimport { ChangePlanComponent } from './organizations/settings/change-plan.component';\nimport { DeleteOrganizationComponent } from './organizations/settings/delete-organization.component';\nimport { DownloadLicenseComponent } from './organizations/settings/download-license.component';\nimport { OrganizationBillingComponent } from './organizations/settings/organization-billing.component';\nimport { OrganizationSubscriptionComponent } from './organizations/settings/organization-subscription.component';\nimport { SettingsComponent as OrgSettingComponent } from './organizations/settings/settings.component';\nimport {\n TwoFactorSetupComponent as OrgTwoFactorSetupComponent,\n} from './organizations/settings/two-factor-setup.component';\n\nimport { ExportComponent as OrgExportComponent } from './organizations/tools/export.component';\nimport {\n ExposedPasswordsReportComponent as OrgExposedPasswordsReportComponent,\n} from './organizations/tools/exposed-passwords-report.component';\nimport { ImportComponent as OrgImportComponent } from './organizations/tools/import.component';\nimport {\n InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent,\n} from './organizations/tools/inactive-two-factor-report.component';\nimport {\n ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent,\n} from './organizations/tools/reused-passwords-report.component';\nimport { ToolsComponent as OrgToolsComponent } from './organizations/tools/tools.component';\nimport {\n UnsecuredWebsitesReportComponent as OrgUnsecuredWebsitesReportComponent,\n} from './organizations/tools/unsecured-websites-report.component';\nimport {\n WeakPasswordsReportComponent as OrgWeakPasswordsReportComponent,\n} from './organizations/tools/weak-passwords-report.component';\n\nimport { AddEditComponent as OrgAddEditComponent } from './organizations/vault/add-edit.component';\nimport { AttachmentsComponent as OrgAttachmentsComponent } from './organizations/vault/attachments.component';\nimport { CiphersComponent as OrgCiphersComponent } from './organizations/vault/ciphers.component';\nimport { CollectionsComponent as OrgCollectionsComponent } from './organizations/vault/collections.component';\nimport { GroupingsComponent as OrgGroupingsComponent } from './organizations/vault/groupings.component';\nimport { VaultComponent as OrgVaultComponent } from './organizations/vault/vault.component';\n\nimport { AccessComponent } from './send/access.component';\nimport { AddEditComponent as SendAddEditComponent } from './send/add-edit.component';\nimport { SendComponent } from './send/send.component';\n\nimport { AccountComponent } from './settings/account.component';\nimport { AddCreditComponent } from './settings/add-credit.component';\nimport { AdjustPaymentComponent } from './settings/adjust-payment.component';\nimport { AdjustStorageComponent } from './settings/adjust-storage.component';\nimport { ApiKeyComponent } from './settings/api-key.component';\nimport { ChangeEmailComponent } from './settings/change-email.component';\nimport { ChangeKdfComponent } from './settings/change-kdf.component';\nimport { ChangePasswordComponent } from './settings/change-password.component';\nimport { CreateOrganizationComponent } from './settings/create-organization.component';\nimport { DeauthorizeSessionsComponent } from './settings/deauthorize-sessions.component';\nimport { DeleteAccountComponent } from './settings/delete-account.component';\nimport { DomainRulesComponent } from './settings/domain-rules.component';\nimport { EmergencyAccessAddEditComponent } from './settings/emergency-access-add-edit.component';\nimport { EmergencyAccessAttachmentsComponent } from './settings/emergency-access-attachments.component';\nimport { EmergencyAccessConfirmComponent } from './settings/emergency-access-confirm.component';\nimport { EmergencyAccessTakeoverComponent } from './settings/emergency-access-takeover.component';\nimport { EmergencyAccessViewComponent } from './settings/emergency-access-view.component';\nimport { EmergencyAccessComponent } from './settings/emergency-access.component';\nimport { EmergencyAddEditComponent } from './settings/emergency-add-edit.component';\nimport { LinkSsoComponent } from './settings/link-sso.component';\nimport { OptionsComponent } from './settings/options.component';\nimport { OrganizationPlansComponent } from './settings/organization-plans.component';\nimport { OrganizationsComponent } from './settings/organizations.component';\nimport { PaymentComponent } from './settings/payment.component';\nimport { PremiumComponent } from './settings/premium.component';\nimport { ProfileComponent } from './settings/profile.component';\nimport { PurgeVaultComponent } from './settings/purge-vault.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { TaxInfoComponent } from './settings/tax-info.component';\nimport { TwoFactorAuthenticatorComponent } from './settings/two-factor-authenticator.component';\nimport { TwoFactorDuoComponent } from './settings/two-factor-duo.component';\nimport { TwoFactorEmailComponent } from './settings/two-factor-email.component';\nimport { TwoFactorRecoveryComponent } from './settings/two-factor-recovery.component';\nimport { TwoFactorSetupComponent } from './settings/two-factor-setup.component';\nimport { TwoFactorU2fComponent } from './settings/two-factor-u2f.component';\nimport { TwoFactorVerifyComponent } from './settings/two-factor-verify.component';\nimport { TwoFactorYubiKeyComponent } from './settings/two-factor-yubikey.component';\nimport { UpdateKeyComponent } from './settings/update-key.component';\nimport { UpdateLicenseComponent } from './settings/update-license.component';\nimport { UserBillingComponent } from './settings/user-billing.component';\nimport { UserSubscriptionComponent } from './settings/user-subscription.component';\nimport { VerifyEmailComponent } from './settings/verify-email.component';\n\nimport { BreachReportComponent } from './tools/breach-report.component';\nimport { ExportComponent } from './tools/export.component';\nimport { ExposedPasswordsReportComponent } from './tools/exposed-passwords-report.component';\nimport { ImportComponent } from './tools/import.component';\nimport { InactiveTwoFactorReportComponent } from './tools/inactive-two-factor-report.component';\nimport { PasswordGeneratorHistoryComponent } from './tools/password-generator-history.component';\nimport { PasswordGeneratorComponent } from './tools/password-generator.component';\nimport { ReusedPasswordsReportComponent } from './tools/reused-passwords-report.component';\nimport { ToolsComponent } from './tools/tools.component';\nimport { UnsecuredWebsitesReportComponent } from './tools/unsecured-websites-report.component';\nimport { WeakPasswordsReportComponent } from './tools/weak-passwords-report.component';\n\nimport { AddEditComponent } from './vault/add-edit.component';\nimport { AttachmentsComponent } from './vault/attachments.component';\nimport { BulkActionsComponent } from './vault/bulk-actions.component';\nimport { BulkDeleteComponent } from './vault/bulk-delete.component';\nimport { BulkMoveComponent } from './vault/bulk-move.component';\nimport { BulkRestoreComponent } from './vault/bulk-restore.component';\nimport { BulkShareComponent } from './vault/bulk-share.component';\nimport { CiphersComponent } from './vault/ciphers.component';\nimport { CollectionsComponent } from './vault/collections.component';\nimport { FolderAddEditComponent } from './vault/folder-add-edit.component';\nimport { GroupingsComponent } from './vault/groupings.component';\nimport { SendInfoComponent } from './vault/send-info.component';\nimport { ShareComponent } from './vault/share.component';\nimport { VaultComponent } from './vault/vault.component';\n\nimport { CalloutComponent } from 'jslib/angular/components/callout.component';\nimport { IconComponent } from 'jslib/angular/components/icon.component';\n\nimport { A11yTitleDirective } from 'jslib/angular/directives/a11y-title.directive';\nimport { ApiActionDirective } from 'jslib/angular/directives/api-action.directive';\nimport { AutofocusDirective } from 'jslib/angular/directives/autofocus.directive';\nimport { BlurClickDirective } from 'jslib/angular/directives/blur-click.directive';\nimport { BoxRowDirective } from 'jslib/angular/directives/box-row.directive';\nimport { FallbackSrcDirective } from 'jslib/angular/directives/fallback-src.directive';\nimport { InputVerbatimDirective } from 'jslib/angular/directives/input-verbatim.directive';\nimport { SelectCopyDirective } from 'jslib/angular/directives/select-copy.directive';\nimport { StopClickDirective } from 'jslib/angular/directives/stop-click.directive';\nimport { StopPropDirective } from 'jslib/angular/directives/stop-prop.directive';\nimport { TrueFalseValueDirective } from 'jslib/angular/directives/true-false-value.directive';\n\nimport { ColorPasswordPipe } from 'jslib/angular/pipes/color-password.pipe';\nimport { I18nPipe } from 'jslib/angular/pipes/i18n.pipe';\nimport { SearchCiphersPipe } from 'jslib/angular/pipes/search-ciphers.pipe';\nimport { SearchPipe } from 'jslib/angular/pipes/search.pipe';\n\nimport {\n DatePipe,\n registerLocaleData,\n} from '@angular/common';\nimport localeCa from '@angular/common/locales/ca';\nimport localeCs from '@angular/common/locales/cs';\nimport localeDa from '@angular/common/locales/da';\nimport localeDe from '@angular/common/locales/de';\nimport localeEl from '@angular/common/locales/el';\nimport localeEnGb from '@angular/common/locales/en-GB';\nimport localeEs from '@angular/common/locales/es';\nimport localeEt from '@angular/common/locales/et';\nimport localeFr from '@angular/common/locales/fr';\nimport localeHe from '@angular/common/locales/he';\nimport localeIt from '@angular/common/locales/it';\nimport localeJa from '@angular/common/locales/ja';\nimport localeKo from '@angular/common/locales/ko';\nimport localeLv from '@angular/common/locales/lv';\nimport localeMl from '@angular/common/locales/ml';\nimport localeNb from '@angular/common/locales/nb';\nimport localeNl from '@angular/common/locales/nl';\nimport localePl from '@angular/common/locales/pl';\nimport localePtBr from '@angular/common/locales/pt';\nimport localePtPt from '@angular/common/locales/pt-PT';\nimport localeRu from '@angular/common/locales/ru';\nimport localeSk from '@angular/common/locales/sk';\nimport localeSv from '@angular/common/locales/sv';\nimport localeUk from '@angular/common/locales/uk';\nimport localeZhCn from '@angular/common/locales/zh-Hans';\nimport localeZhTw from '@angular/common/locales/zh-Hant';\n\nregisterLocaleData(localeCa, 'ca');\nregisterLocaleData(localeCs, 'cs');\nregisterLocaleData(localeDa, 'da');\nregisterLocaleData(localeDe, 'de');\nregisterLocaleData(localeEl, 'el');\nregisterLocaleData(localeEnGb, 'en-GB');\nregisterLocaleData(localeEs, 'es');\nregisterLocaleData(localeEt, 'et');\nregisterLocaleData(localeFr, 'fr');\nregisterLocaleData(localeHe, 'he');\nregisterLocaleData(localeIt, 'it');\nregisterLocaleData(localeJa, 'ja');\nregisterLocaleData(localeKo, 'ko');\nregisterLocaleData(localeLv, 'lv');\nregisterLocaleData(localeMl, 'ml');\nregisterLocaleData(localeNb, 'nb');\nregisterLocaleData(localeNl, 'nl');\nregisterLocaleData(localePl, 'pl');\nregisterLocaleData(localePtBr, 'pt-BR');\nregisterLocaleData(localePtPt, 'pt-PT');\nregisterLocaleData(localeRu, 'ru');\nregisterLocaleData(localeSk, 'sk');\nregisterLocaleData(localeSv, 'sv');\nregisterLocaleData(localeUk, 'uk');\nregisterLocaleData(localeZhCn, 'zh-CN');\nregisterLocaleData(localeZhTw, 'zh-TW');\n\n@NgModule({\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n FormsModule,\n AppRoutingModule,\n ServicesModule,\n Angulartics2Module.forRoot({\n pageTracking: {\n clearQueryParams: true,\n },\n }),\n ToasterModule.forRoot(),\n InfiniteScrollModule,\n DragDropModule,\n ],\n declarations: [\n A11yTitleDirective,\n AcceptEmergencyComponent,\n AccessComponent,\n AcceptOrganizationComponent,\n AccountComponent,\n SetPasswordComponent,\n AddCreditComponent,\n AddEditComponent,\n AdjustPaymentComponent,\n AdjustSeatsComponent,\n AdjustStorageComponent,\n ApiActionDirective,\n ApiKeyComponent,\n AppComponent,\n AttachmentsComponent,\n AutofocusDirective,\n AvatarComponent,\n BlurClickDirective,\n BoxRowDirective,\n BreachReportComponent,\n BulkActionsComponent,\n BulkDeleteComponent,\n BulkMoveComponent,\n BulkRestoreComponent,\n BulkShareComponent,\n CalloutComponent,\n ChangeEmailComponent,\n ChangeKdfComponent,\n ChangePasswordComponent,\n ChangePlanComponent,\n CiphersComponent,\n CollectionsComponent,\n ColorPasswordPipe,\n CreateOrganizationComponent,\n DeauthorizeSessionsComponent,\n DeleteAccountComponent,\n DeleteOrganizationComponent,\n DomainRulesComponent,\n DownloadLicenseComponent,\n EmergencyAccessAddEditComponent,\n EmergencyAccessAttachmentsComponent,\n EmergencyAccessComponent,\n EmergencyAccessConfirmComponent,\n EmergencyAccessTakeoverComponent,\n EmergencyAccessViewComponent,\n EmergencyAddEditComponent,\n ExportComponent,\n ExposedPasswordsReportComponent,\n FallbackSrcDirective,\n FolderAddEditComponent,\n FooterComponent,\n FrontendLayoutComponent,\n GroupingsComponent,\n HintComponent,\n I18nPipe,\n IconComponent,\n ImportComponent,\n InactiveTwoFactorReportComponent,\n InputVerbatimDirective,\n LinkSsoComponent,\n LockComponent,\n LoginComponent,\n ModalComponent,\n NavbarComponent,\n OptionsComponent,\n OrgAccountComponent,\n OrgAddEditComponent,\n OrganizationBillingComponent,\n OrganizationPlansComponent,\n OrganizationSubscriptionComponent,\n OrgAttachmentsComponent,\n OrgCiphersComponent,\n OrgCollectionAddEditComponent,\n OrgCollectionsComponent,\n OrgEntityEventsComponent,\n OrgEntityUsersComponent,\n OrgEventsComponent,\n OrgExportComponent,\n OrgExposedPasswordsReportComponent,\n OrgImportComponent,\n OrgInactiveTwoFactorReportComponent,\n OrgGroupAddEditComponent,\n OrgGroupingsComponent,\n OrgGroupsComponent,\n OrgManageCollectionsComponent,\n OrgManageComponent,\n OrgPeopleComponent,\n OrgPolicyEditComponent,\n OrgPoliciesComponent,\n OrgReusedPasswordsReportComponent,\n OrgSettingComponent,\n OrgToolsComponent,\n OrgTwoFactorSetupComponent,\n OrgUserAddEditComponent,\n OrgUserConfirmComponent,\n OrgUserGroupsComponent,\n OrganizationsComponent,\n OrganizationLayoutComponent,\n OrgUnsecuredWebsitesReportComponent,\n OrgVaultComponent,\n OrgWeakPasswordsReportComponent,\n PasswordGeneratorComponent,\n PasswordGeneratorHistoryComponent,\n PasswordStrengthComponent,\n PaymentComponent,\n PremiumComponent,\n ProfileComponent,\n PurgeVaultComponent,\n RecoverDeleteComponent,\n RecoverTwoFactorComponent,\n RegisterComponent,\n ReusedPasswordsReportComponent,\n SearchCiphersPipe,\n SearchPipe,\n SelectCopyDirective,\n SendAddEditComponent,\n SendComponent,\n SendInfoComponent,\n SettingsComponent,\n ShareComponent,\n SsoComponent,\n StopClickDirective,\n StopPropDirective,\n TaxInfoComponent,\n ToolsComponent,\n TrueFalseValueDirective,\n TwoFactorAuthenticatorComponent,\n TwoFactorComponent,\n TwoFactorDuoComponent,\n TwoFactorEmailComponent,\n TwoFactorOptionsComponent,\n TwoFactorRecoveryComponent,\n TwoFactorSetupComponent,\n TwoFactorU2fComponent,\n TwoFactorVerifyComponent,\n TwoFactorYubiKeyComponent,\n UnsecuredWebsitesReportComponent,\n UpdateKeyComponent,\n UpdateLicenseComponent,\n UserBillingComponent,\n UserLayoutComponent,\n UserSubscriptionComponent,\n VaultComponent,\n VerifyEmailComponent,\n VerifyEmailTokenComponent,\n VerifyRecoverDeleteComponent,\n WeakPasswordsReportComponent,\n ],\n entryComponents: [\n AddEditComponent,\n ApiKeyComponent,\n AttachmentsComponent,\n BulkActionsComponent,\n BulkDeleteComponent,\n BulkMoveComponent,\n BulkRestoreComponent,\n BulkShareComponent,\n CollectionsComponent,\n DeauthorizeSessionsComponent,\n DeleteAccountComponent,\n DeleteOrganizationComponent,\n EmergencyAccessAddEditComponent,\n EmergencyAccessAttachmentsComponent,\n EmergencyAccessConfirmComponent,\n EmergencyAccessTakeoverComponent,\n EmergencyAddEditComponent,\n FolderAddEditComponent,\n ModalComponent,\n OrgAddEditComponent,\n OrgAttachmentsComponent,\n OrgCollectionAddEditComponent,\n OrgCollectionsComponent,\n OrgEntityEventsComponent,\n OrgEntityUsersComponent,\n OrgGroupAddEditComponent,\n OrgPolicyEditComponent,\n OrgUserAddEditComponent,\n OrgUserConfirmComponent,\n OrgUserGroupsComponent,\n PasswordGeneratorHistoryComponent,\n PurgeVaultComponent,\n SendAddEditComponent,\n ShareComponent,\n TwoFactorAuthenticatorComponent,\n TwoFactorDuoComponent,\n TwoFactorEmailComponent,\n TwoFactorOptionsComponent,\n TwoFactorRecoveryComponent,\n TwoFactorU2fComponent,\n TwoFactorYubiKeyComponent,\n UpdateKeyComponent,\n ],\n providers: [DatePipe],\n bootstrap: [AppComponent],\n})\nexport class AppModule { }\n","import { NgModule } from '@angular/core';\nimport {\n RouterModule,\n Routes,\n} from '@angular/router';\n\nimport { FrontendLayoutComponent } from './layouts/frontend-layout.component';\nimport { OrganizationLayoutComponent } from './layouts/organization-layout.component';\nimport { UserLayoutComponent } from './layouts/user-layout.component';\n\nimport { AcceptEmergencyComponent } from './accounts/accept-emergency.component';\nimport { AcceptOrganizationComponent } from './accounts/accept-organization.component';\nimport { HintComponent } from './accounts/hint.component';\nimport { LockComponent } from './accounts/lock.component';\nimport { LoginComponent } from './accounts/login.component';\nimport { RecoverDeleteComponent } from './accounts/recover-delete.component';\nimport { RecoverTwoFactorComponent } from './accounts/recover-two-factor.component';\nimport { RegisterComponent } from './accounts/register.component';\nimport { SetPasswordComponent } from './accounts/set-password.component';\nimport { SsoComponent } from './accounts/sso.component';\nimport { TwoFactorComponent } from './accounts/two-factor.component';\nimport { VerifyEmailTokenComponent } from './accounts/verify-email-token.component';\nimport { VerifyRecoverDeleteComponent } from './accounts/verify-recover-delete.component';\n\nimport { CollectionsComponent as OrgManageCollectionsComponent } from './organizations/manage/collections.component';\nimport { EventsComponent as OrgEventsComponent } from './organizations/manage/events.component';\nimport { GroupsComponent as OrgGroupsComponent } from './organizations/manage/groups.component';\nimport { ManageComponent as OrgManageComponent } from './organizations/manage/manage.component';\nimport { PeopleComponent as OrgPeopleComponent } from './organizations/manage/people.component';\nimport { PoliciesComponent as OrgPoliciesComponent } from './organizations/manage/policies.component';\n\nimport { AccountComponent as OrgAccountComponent } from './organizations/settings/account.component';\nimport { OrganizationBillingComponent } from './organizations/settings/organization-billing.component';\nimport { OrganizationSubscriptionComponent } from './organizations/settings/organization-subscription.component';\nimport { SettingsComponent as OrgSettingsComponent } from './organizations/settings/settings.component';\nimport {\n TwoFactorSetupComponent as OrgTwoFactorSetupComponent,\n} from './organizations/settings/two-factor-setup.component';\n\nimport { ExportComponent as OrgExportComponent } from './organizations/tools/export.component';\nimport {\n ExposedPasswordsReportComponent as OrgExposedPasswordsReportComponent,\n} from './organizations/tools/exposed-passwords-report.component';\nimport { ImportComponent as OrgImportComponent } from './organizations/tools/import.component';\nimport {\n InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent,\n} from './organizations/tools/inactive-two-factor-report.component';\nimport {\n ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent,\n} from './organizations/tools/reused-passwords-report.component';\nimport { ToolsComponent as OrgToolsComponent } from './organizations/tools/tools.component';\nimport {\n UnsecuredWebsitesReportComponent as OrgUnsecuredWebsitesReportComponent,\n} from './organizations/tools/unsecured-websites-report.component';\nimport {\n WeakPasswordsReportComponent as OrgWeakPasswordsReportComponent,\n} from './organizations/tools/weak-passwords-report.component';\n\nimport { VaultComponent as OrgVaultComponent } from './organizations/vault/vault.component';\n\nimport { AccessComponent } from './send/access.component';\nimport { SendComponent } from './send/send.component';\n\nimport { AccountComponent } from './settings/account.component';\nimport { CreateOrganizationComponent } from './settings/create-organization.component';\nimport { DomainRulesComponent } from './settings/domain-rules.component';\nimport { OptionsComponent } from './settings/options.component';\nimport { OrganizationsComponent } from './settings/organizations.component';\nimport { PremiumComponent } from './settings/premium.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { TwoFactorSetupComponent } from './settings/two-factor-setup.component';\nimport { UserBillingComponent } from './settings/user-billing.component';\nimport { UserSubscriptionComponent } from './settings/user-subscription.component';\n\nimport { BreachReportComponent } from './tools/breach-report.component';\nimport { ExportComponent } from './tools/export.component';\nimport { ExposedPasswordsReportComponent } from './tools/exposed-passwords-report.component';\nimport { ImportComponent } from './tools/import.component';\nimport { InactiveTwoFactorReportComponent } from './tools/inactive-two-factor-report.component';\nimport { PasswordGeneratorComponent } from './tools/password-generator.component';\nimport { ReusedPasswordsReportComponent } from './tools/reused-passwords-report.component';\nimport { ToolsComponent } from './tools/tools.component';\nimport { UnsecuredWebsitesReportComponent } from './tools/unsecured-websites-report.component';\nimport { WeakPasswordsReportComponent } from './tools/weak-passwords-report.component';\n\nimport { VaultComponent } from './vault/vault.component';\n\nimport { OrganizationGuardService } from './services/organization-guard.service';\nimport { OrganizationTypeGuardService } from './services/organization-type-guard.service';\nimport { UnauthGuardService } from './services/unauth-guard.service';\n\nimport { AuthGuardService } from 'jslib/angular/services/auth-guard.service';\n\nimport { Permissions } from 'jslib/enums/permissions';\n\nimport { EmergencyAccessViewComponent } from './settings/emergency-access-view.component';\nimport { EmergencyAccessComponent } from './settings/emergency-access.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: FrontendLayoutComponent,\n children: [\n { path: '', pathMatch: 'full', component: LoginComponent, canActivate: [UnauthGuardService] },\n { path: '2fa', component: TwoFactorComponent, canActivate: [UnauthGuardService] },\n {\n path: 'register', component: RegisterComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'createAccount' },\n },\n {\n path: 'sso', component: SsoComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'enterpriseSingleSignOn' },\n },\n {\n path: 'set-password', component: SetPasswordComponent,\n data: { titleId: 'setMasterPassword' },\n },\n {\n path: 'hint', component: HintComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'passwordHint' },\n },\n { path: 'lock', component: LockComponent },\n { path: 'verify-email', component: VerifyEmailTokenComponent },\n {\n path: 'accept-organization',\n component: AcceptOrganizationComponent,\n data: { titleId: 'joinOrganization' },\n },\n {\n path: 'accept-emergency',\n component: AcceptEmergencyComponent,\n data: { titleId: 'acceptEmergency' },\n },\n { path: 'recover', pathMatch: 'full', redirectTo: 'recover-2fa' },\n {\n path: 'recover-2fa',\n component: RecoverTwoFactorComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'recoverAccountTwoStep' },\n },\n {\n path: 'recover-delete',\n component: RecoverDeleteComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'deleteAccount' },\n },\n {\n path: 'verify-recover-delete',\n component: VerifyRecoverDeleteComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'deleteAccount' },\n },\n {\n path: 'send/:sendId/:key',\n component: AccessComponent,\n data: { title: 'Bitwarden Send' },\n },\n ],\n },\n {\n path: '',\n component: UserLayoutComponent,\n canActivate: [AuthGuardService],\n children: [\n { path: 'vault', component: VaultComponent, data: { titleId: 'myVault' } },\n { path: 'sends', component: SendComponent, data: { title: 'Send' } },\n {\n path: 'settings',\n component: SettingsComponent,\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'account' },\n { path: 'account', component: AccountComponent, data: { titleId: 'myAccount' } },\n { path: 'options', component: OptionsComponent, data: { titleId: 'options' } },\n { path: 'domain-rules', component: DomainRulesComponent, data: { titleId: 'domainRules' } },\n { path: 'two-factor', component: TwoFactorSetupComponent, data: { titleId: 'twoStepLogin' } },\n { path: 'premium', component: PremiumComponent, data: { titleId: 'goPremium' } },\n { path: 'billing', component: UserBillingComponent, data: { titleId: 'billing' } },\n {\n path: 'subscription',\n component: UserSubscriptionComponent,\n data: { titleId: 'premiumMembership' },\n },\n { path: 'organizations', component: OrganizationsComponent, data: { titleId: 'organizations' } },\n {\n path: 'create-organization',\n component: CreateOrganizationComponent,\n data: { titleId: 'newOrganization' },\n },\n {\n path: 'emergency-access',\n children: [\n {\n path: '',\n component: EmergencyAccessComponent,\n data: { titleId: 'emergencyAccess'},\n },\n {\n path: ':id',\n component: EmergencyAccessViewComponent,\n data: { titleId: 'emergencyAccess'},\n },\n ],\n },\n ],\n },\n {\n path: 'tools',\n component: ToolsComponent,\n canActivate: [AuthGuardService],\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'generator' },\n { path: 'import', component: ImportComponent, data: { titleId: 'importData' } },\n { path: 'export', component: ExportComponent, data: { titleId: 'exportVault' } },\n {\n path: 'generator',\n component: PasswordGeneratorComponent,\n data: { titleId: 'passwordGenerator' },\n },\n { path: 'breach-report', component: BreachReportComponent, data: { titleId: 'dataBreachReport' } },\n {\n path: 'reused-passwords-report',\n component: ReusedPasswordsReportComponent,\n data: { titleId: 'reusedPasswordsReport' },\n },\n {\n path: 'unsecured-websites-report',\n component: UnsecuredWebsitesReportComponent,\n data: { titleId: 'unsecuredWebsitesReport' },\n },\n {\n path: 'weak-passwords-report',\n component: WeakPasswordsReportComponent,\n data: { titleId: 'weakPasswordsReport' },\n },\n {\n path: 'exposed-passwords-report',\n component: ExposedPasswordsReportComponent,\n data: { titleId: 'exposedPasswordsReport' },\n },\n {\n path: 'inactive-two-factor-report',\n component: InactiveTwoFactorReportComponent,\n data: { titleId: 'inactive2faReport' },\n },\n ],\n },\n ],\n },\n {\n path: 'organizations/:organizationId',\n component: OrganizationLayoutComponent,\n canActivate: [AuthGuardService, OrganizationGuardService],\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'vault' },\n { path: 'vault', component: OrgVaultComponent, data: { titleId: 'vault' } },\n {\n path: 'tools',\n component: OrgToolsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: { permissions: [Permissions.AccessImportExport, Permissions.AccessReports] },\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'import',\n },\n {\n path: 'import',\n component: OrgImportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'importData',\n permissions: [Permissions.AccessImportExport],\n },\n },\n {\n path: 'export',\n component: OrgExportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'exportVault',\n permissions: [Permissions.AccessImportExport],\n },\n },\n {\n path: 'exposed-passwords-report',\n component: OrgExposedPasswordsReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'exposedPasswordsReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'inactive-two-factor-report',\n component: OrgInactiveTwoFactorReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'inactive2faReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'reused-passwords-report',\n component: OrgReusedPasswordsReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'reusedPasswordsReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'unsecured-websites-report',\n component: OrgUnsecuredWebsitesReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'unsecuredWebsitesReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'weak-passwords-report',\n component: OrgWeakPasswordsReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'weakPasswordsReport',\n permissions: [Permissions.AccessReports],\n },\n },\n ],\n },\n {\n path: 'manage',\n component: OrgManageComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n permissions: [\n Permissions.ManageAssignedCollections,\n Permissions.ManageAllCollections,\n Permissions.AccessEventLogs,\n Permissions.ManageGroups,\n Permissions.ManageUsers,\n Permissions.ManagePolicies,\n ],\n },\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'people',\n },\n {\n path: 'collections',\n component: OrgManageCollectionsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'collections',\n permissions: [Permissions.ManageAssignedCollections, Permissions.ManageAllCollections],\n },\n },\n {\n path: 'events',\n component: OrgEventsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'eventLogs',\n permissions: [Permissions.AccessEventLogs],\n },\n },\n {\n path: 'groups',\n component: OrgGroupsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'groups',\n permissions: [Permissions.ManageGroups],\n },\n },\n {\n path: 'people',\n component: OrgPeopleComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'people',\n permissions: [Permissions.ManageUsers],\n },\n },\n {\n path: 'policies',\n component: OrgPoliciesComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'policies',\n permissions: [Permissions.ManagePolicies],\n },\n },\n ],\n },\n {\n path: 'settings',\n component: OrgSettingsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: { permissions: [Permissions.ManageOrganization] },\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'account' },\n { path: 'account', component: OrgAccountComponent, data: { titleId: 'myOrganization' } },\n { path: 'two-factor', component: OrgTwoFactorSetupComponent, data: { titleId: 'twoStepLogin' } },\n {\n path: 'billing',\n component: OrganizationBillingComponent,\n data: { titleId: 'billing' },\n },\n {\n path: 'subscription',\n component: OrganizationSubscriptionComponent,\n data: { titleId: 'subscription' },\n },\n ],\n },\n ],\n },\n { path: '**', redirectTo: '' },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, {\n useHash: true,\n paramsInheritanceStrategy: 'always',\n /*enableTracing: true,*/\n })],\n exports: [RouterModule],\n})\nexport class AppRoutingModule { }\n","import { BroadcasterService as BroadcasterServiceAbstraction } from '../abstractions/broadcaster.service';\n\nexport class BroadcasterService implements BroadcasterServiceAbstraction {\n subscribers: Map any> = new Map any>();\n\n send(message: any, id?: string) {\n if (id != null) {\n if (this.subscribers.has(id)) {\n this.subscribers.get(id)(message);\n }\n return;\n }\n\n this.subscribers.forEach(value => {\n value(message);\n });\n }\n\n subscribe(id: string, messageCallback: (message: any) => any) {\n this.subscribers.set(id, messageCallback);\n }\n\n unsubscribe(id: string) {\n if (this.subscribers.has(id)) {\n this.subscribers.delete(id);\n }\n }\n}\n","export function getDomain(host: string): string | null {\n return null;\n}\n","export class EmergencyAccessAcceptRequest {\n token: string;\n}\n","export class OrganizationUserAcceptRequest {\n token: string;\n}\n","import { Router } from '@angular/router';\n\nimport { PasswordHintRequest } from '../../models/request/passwordHintRequest';\n\nimport { ApiService } from '../../abstractions/api.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nexport class HintComponent {\n email: string = '';\n formPromise: Promise;\n\n protected successRoute = 'login';\n protected onSuccessfulSubmit: () => void;\n\n constructor(protected router: Router, protected i18nService: I18nService,\n protected apiService: ApiService, protected platformUtilsService: PlatformUtilsService) { }\n\n async submit() {\n if (this.email == null || this.email === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('emailRequired'));\n return;\n }\n if (this.email.indexOf('@') === -1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidEmail'));\n return;\n }\n\n try {\n this.formPromise = this.apiService.postPasswordHint(new PasswordHintRequest(this.email));\n await this.formPromise;\n this.platformUtilsService.eventTrack('Requested Hint');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('masterPassSent'));\n if (this.onSuccessfulSubmit != null) {\n this.onSuccessfulSubmit();\n } else if (this.router != null) {\n this.router.navigate([this.successRoute]);\n }\n } catch { }\n }\n}\n","export class PasswordHintRequest {\n email: string;\n\n constructor(email: string) {\n this.email = email;\n }\n}\n","import { OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ApiService } from '../../abstractions/api.service';\nimport { CryptoService } from '../../abstractions/crypto.service';\nimport { EnvironmentService } from '../../abstractions/environment.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { MessagingService } from '../../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { StateService } from '../../abstractions/state.service';\nimport { StorageService } from '../../abstractions/storage.service';\nimport { UserService } from '../../abstractions/user.service';\nimport { VaultTimeoutService } from '../../abstractions/vaultTimeout.service';\n\nimport { ConstantsService } from '../../services/constants.service';\n\nimport { CipherString } from '../../models/domain/cipherString';\nimport { SymmetricCryptoKey } from '../../models/domain/symmetricCryptoKey';\n\nimport { PasswordVerificationRequest } from '../../models/request/passwordVerificationRequest';\n\nimport { Utils } from '../../misc/utils';\n\nexport class LockComponent implements OnInit {\n masterPassword: string = '';\n pin: string = '';\n showPassword: boolean = false;\n email: string;\n pinLock: boolean = false;\n webVaultHostname: string = '';\n formPromise: Promise;\n supportsBiometric: boolean;\n biometricLock: boolean;\n biometricText: string;\n\n protected successRoute: string = 'vault';\n protected onSuccessfulSubmit: () => void;\n\n private invalidPinAttempts = 0;\n private pinSet: [boolean, boolean];\n\n constructor(protected router: Router, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected messagingService: MessagingService,\n protected userService: UserService, protected cryptoService: CryptoService,\n protected storageService: StorageService, protected vaultTimeoutService: VaultTimeoutService,\n protected environmentService: EnvironmentService, protected stateService: StateService,\n protected apiService: ApiService) { }\n\n async ngOnInit() {\n this.pinSet = await this.vaultTimeoutService.isPinLockSet();\n this.pinLock = (this.pinSet[0] && this.vaultTimeoutService.pinProtectedKey != null) || this.pinSet[1];\n this.supportsBiometric = await this.platformUtilsService.supportsBiometric();\n this.biometricLock = await this.vaultTimeoutService.isBiometricLockSet() && (await this.cryptoService.hasKey() || !this.platformUtilsService.supportsSecureStorage());\n this.biometricText = await this.storageService.get(ConstantsService.biometricText);\n this.email = await this.userService.getEmail();\n let vaultUrl = this.environmentService.getWebVaultUrl();\n if (vaultUrl == null) {\n vaultUrl = 'https://bitwarden.com';\n }\n this.webVaultHostname = Utils.getHostname(vaultUrl);\n }\n\n async submit() {\n if (this.pinLock && (this.pin == null || this.pin === '')) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('pinRequired'));\n return;\n }\n if (!this.pinLock && (this.masterPassword == null || this.masterPassword === '')) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const kdf = await this.userService.getKdf();\n const kdfIterations = await this.userService.getKdfIterations();\n\n if (this.pinLock) {\n let failed = true;\n try {\n if (this.pinSet[0]) {\n const key = await this.cryptoService.makeKeyFromPin(this.pin, this.email, kdf, kdfIterations,\n this.vaultTimeoutService.pinProtectedKey);\n const encKey = await this.cryptoService.getEncKey(key);\n const protectedPin = await this.storageService.get(ConstantsService.protectedPin);\n const decPin = await this.cryptoService.decryptToUtf8(new CipherString(protectedPin), encKey);\n failed = decPin !== this.pin;\n if (!failed) {\n await this.setKeyAndContinue(key);\n }\n } else {\n const key = await this.cryptoService.makeKeyFromPin(this.pin, this.email, kdf, kdfIterations);\n failed = false;\n await this.setKeyAndContinue(key);\n }\n } catch {\n failed = true;\n }\n\n if (failed) {\n this.invalidPinAttempts++;\n if (this.invalidPinAttempts >= 5) {\n this.messagingService.send('logout');\n return;\n }\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidPin'));\n }\n } else {\n const key = await this.cryptoService.makeKey(this.masterPassword, this.email, kdf, kdfIterations);\n const keyHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n\n let passwordValid = false;\n\n if (keyHash != null) {\n const storedKeyHash = await this.cryptoService.getKeyHash();\n if (storedKeyHash != null) {\n passwordValid = storedKeyHash === keyHash;\n } else {\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = keyHash;\n try {\n this.formPromise = this.apiService.postAccountVerifyPassword(request);\n await this.formPromise;\n passwordValid = true;\n await this.cryptoService.setKeyHash(keyHash);\n } catch { }\n }\n }\n\n if (passwordValid) {\n if (this.pinSet[0]) {\n const protectedPin = await this.storageService.get(ConstantsService.protectedPin);\n const encKey = await this.cryptoService.getEncKey(key);\n const decPin = await this.cryptoService.decryptToUtf8(new CipherString(protectedPin), encKey);\n const pinKey = await this.cryptoService.makePinKey(decPin, this.email, kdf, kdfIterations);\n this.vaultTimeoutService.pinProtectedKey = await this.cryptoService.encrypt(key.key, pinKey);\n }\n this.setKeyAndContinue(key);\n } else {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidMasterPassword'));\n }\n }\n }\n\n async logOut() {\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('logOutConfirmation'),\n this.i18nService.t('logOut'), this.i18nService.t('logOut'), this.i18nService.t('cancel'));\n if (confirmed) {\n this.messagingService.send('logout');\n }\n }\n\n async unlockBiometric() {\n if (!this.biometricLock) {\n return;\n }\n const success = await this.platformUtilsService.authenticateBiometric();\n\n if (success) {\n await this.doContinue();\n }\n }\n\n togglePassword() {\n this.platformUtilsService.eventTrack('Toggled Master Password on Unlock');\n this.showPassword = !this.showPassword;\n document.getElementById(this.pinLock ? 'pin' : 'masterPassword').focus();\n }\n\n private async setKeyAndContinue(key: SymmetricCryptoKey) {\n await this.cryptoService.setKey(key);\n this.doContinue();\n }\n\n private async doContinue() {\n this.vaultTimeoutService.biometricLocked = false;\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n this.messagingService.send('unlocked');\n if (this.onSuccessfulSubmit != null) {\n this.onSuccessfulSubmit();\n } else if (this.router != null) {\n this.router.navigate([this.successRoute]);\n }\n }\n}\n","import {\n Directive,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { Router } from '@angular/router';\n\nimport { AuthResult } from '../../models/domain/authResult';\n\nimport { AuthService } from '../../abstractions/auth.service';\nimport { CryptoFunctionService } from '../../abstractions/cryptoFunction.service';\nimport { EnvironmentService } from '../../abstractions/environment.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PasswordGenerationService } from '../../abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { StateService } from '../../abstractions/state.service';\nimport { StorageService } from '../../abstractions/storage.service';\n\nimport { ConstantsService } from '../../services/constants.service';\n\nimport { Utils } from '../../misc/utils';\n\nconst Keys = {\n rememberedEmail: 'rememberedEmail',\n rememberEmail: 'rememberEmail',\n};\n\n@Directive()\nexport class LoginComponent implements OnInit {\n @Input() email: string = '';\n @Input() rememberEmail = true;\n\n masterPassword: string = '';\n showPassword: boolean = false;\n formPromise: Promise;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n onSuccessfulLoginTwoFactorNavigate: () => Promise;\n\n protected twoFactorRoute = '2fa';\n protected successRoute = 'vault';\n\n constructor(protected authService: AuthService, protected router: Router,\n protected platformUtilsService: PlatformUtilsService, protected i18nService: I18nService,\n protected stateService: StateService, protected environmentService: EnvironmentService,\n protected passwordGenerationService: PasswordGenerationService,\n protected cryptoFunctionService: CryptoFunctionService, private storageService: StorageService) { }\n\n async ngOnInit() {\n if (this.email == null || this.email === '') {\n this.email = await this.storageService.get(Keys.rememberedEmail);\n if (this.email == null) {\n this.email = '';\n }\n }\n this.rememberEmail = await this.storageService.get(Keys.rememberEmail);\n if (this.rememberEmail == null) {\n this.rememberEmail = true;\n }\n if (Utils.isBrowser) {\n document.getElementById(this.email == null || this.email === '' ? 'email' : 'masterPassword').focus();\n }\n }\n\n async submit() {\n if (this.email == null || this.email === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('emailRequired'));\n return;\n }\n if (this.email.indexOf('@') === -1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidEmail'));\n return;\n }\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n try {\n this.formPromise = this.authService.logIn(this.email, this.masterPassword);\n const response = await this.formPromise;\n await this.storageService.save(Keys.rememberEmail, this.rememberEmail);\n if (this.rememberEmail) {\n await this.storageService.save(Keys.rememberedEmail, this.email);\n } else {\n await this.storageService.remove(Keys.rememberedEmail);\n }\n if (response.twoFactor) {\n this.platformUtilsService.eventTrack('Logged In To Two-step');\n if (this.onSuccessfulLoginTwoFactorNavigate != null) {\n this.onSuccessfulLoginTwoFactorNavigate();\n } else {\n this.router.navigate([this.twoFactorRoute]);\n }\n } else {\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n this.platformUtilsService.eventTrack('Logged In');\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n } catch { }\n }\n\n togglePassword() {\n this.platformUtilsService.eventTrack('Toggled Master Password on Login');\n this.showPassword = !this.showPassword;\n document.getElementById('masterPassword').focus();\n }\n\n async launchSsoBrowser(clientId: string, ssoRedirectUri: string) {\n // Generate necessary sso params\n const passwordOptions: any = {\n type: 'password',\n length: 64,\n uppercase: true,\n lowercase: true,\n numbers: true,\n special: false,\n };\n const state = await this.passwordGenerationService.generatePassword(passwordOptions);\n const ssoCodeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions);\n const codeVerifierHash = await this.cryptoFunctionService.hash(ssoCodeVerifier, 'sha256');\n const codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash);\n\n // Save sso params\n await this.storageService.save(ConstantsService.ssoStateKey, state);\n await this.storageService.save(ConstantsService.ssoCodeVerifierKey, ssoCodeVerifier);\n\n // Build URI\n const webUrl = this.environmentService.getWebVaultUrl() == null ? 'https://vault.bitwarden.com' :\n this.environmentService.getWebVaultUrl();\n\n // Launch browser\n this.platformUtilsService.launchUri(webUrl + '/#/sso?clientId=' + clientId +\n '&redirectUri=' + encodeURIComponent(ssoRedirectUri) +\n '&state=' + state + '&codeChallenge=' + codeChallenge);\n }\n}\n","export class DeleteRecoverRequest {\n email: string;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class TwoFactorRecoveryRequest extends PasswordVerificationRequest {\n recoveryCode: string;\n email: string;\n}\n","import { Router } from '@angular/router';\n\nimport { KeysRequest } from '../../models/request/keysRequest';\nimport { ReferenceEventRequest } from '../../models/request/referenceEventRequest';\nimport { RegisterRequest } from '../../models/request/registerRequest';\n\nimport { ApiService } from '../../abstractions/api.service';\nimport { AuthService } from '../../abstractions/auth.service';\nimport { CryptoService } from '../../abstractions/crypto.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PasswordGenerationService } from '../../abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { StateService } from '../../abstractions/state.service';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class RegisterComponent {\n name: string = '';\n email: string = '';\n masterPassword: string = '';\n confirmMasterPassword: string = '';\n hint: string = '';\n showPassword: boolean = false;\n formPromise: Promise;\n masterPasswordScore: number;\n referenceData: ReferenceEventRequest;\n showTerms = true;\n acceptPolicies: boolean = false;\n\n protected successRoute = 'login';\n private masterPasswordStrengthTimeout: any;\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected cryptoService: CryptoService,\n protected apiService: ApiService, protected stateService: StateService,\n protected platformUtilsService: PlatformUtilsService,\n protected passwordGenerationService: PasswordGenerationService) {\n this.showTerms = !platformUtilsService.isSelfHost();\n }\n\n get masterPasswordScoreWidth() {\n return this.masterPasswordScore == null ? 0 : (this.masterPasswordScore + 1) * 20;\n }\n\n get masterPasswordScoreColor() {\n switch (this.masterPasswordScore) {\n case 4:\n return 'success';\n case 3:\n return 'primary';\n case 2:\n return 'warning';\n default:\n return 'danger';\n }\n }\n\n get masterPasswordScoreText() {\n switch (this.masterPasswordScore) {\n case 4:\n return this.i18nService.t('strong');\n case 3:\n return this.i18nService.t('good');\n case 2:\n return this.i18nService.t('weak');\n default:\n return this.masterPasswordScore != null ? this.i18nService.t('weak') : null;\n }\n }\n\n async submit() {\n if (typeof crypto.subtle === 'undefined') {\n this.platformUtilsService.showToast('error', \"This browser requires HTTPS to use the web vault\",\n \"Check the bitwarden_rs wiki for details on how to enable it\");\n return;\n }\n\n if (!this.acceptPolicies && this.showTerms) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('acceptPoliciesError'));\n return;\n }\n\n if (this.email == null || this.email === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('emailRequired'));\n return;\n }\n if (this.email.indexOf('@') === -1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidEmail'));\n return;\n }\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n if (this.masterPassword.length < 8) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassLength'));\n return;\n }\n if (this.masterPassword !== this.confirmMasterPassword) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassDoesntMatch'));\n return;\n }\n\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n if (strengthResult != null && strengthResult.score < 3) {\n const result = await this.platformUtilsService.showDialog(this.i18nService.t('weakMasterPasswordDesc'),\n this.i18nService.t('weakMasterPassword'), this.i18nService.t('yes'), this.i18nService.t('no'),\n 'warning');\n if (!result) {\n return;\n }\n }\n\n if (this.hint === this.masterPassword) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), this.i18nService.t('hintEqualsPassword'));\n return;\n }\n\n this.name = this.name === '' ? null : this.name;\n this.email = this.email.trim().toLowerCase();\n const kdf = KdfType.PBKDF2_SHA256;\n const useLowerKdf = this.platformUtilsService.isIE();\n const kdfIterations = useLowerKdf ? 10000 : 100000;\n const key = await this.cryptoService.makeKey(this.masterPassword, this.email, kdf, kdfIterations);\n const encKey = await this.cryptoService.makeEncKey(key);\n const hashedPassword = await this.cryptoService.hashPassword(this.masterPassword, key);\n const keys = await this.cryptoService.makeKeyPair(encKey[0]);\n const request = new RegisterRequest(this.email, this.name, hashedPassword,\n this.hint, encKey[1].encryptedString, kdf, kdfIterations, this.referenceData);\n request.keys = new KeysRequest(keys[0], keys[1].encryptedString);\n const orgInvite = await this.stateService.get('orgInvitation');\n if (orgInvite != null && orgInvite.token != null && orgInvite.organizationUserId != null) {\n request.token = orgInvite.token;\n request.organizationUserId = orgInvite.organizationUserId;\n }\n\n try {\n this.formPromise = this.apiService.postRegister(request);\n await this.formPromise;\n this.platformUtilsService.eventTrack('Registered');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('newAccountCreated'));\n this.router.navigate([this.successRoute], { queryParams: { email: this.email } });\n } catch { }\n }\n\n togglePassword(confirmField: boolean) {\n this.platformUtilsService.eventTrack('Toggled Master Password on Register');\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? 'masterPasswordRetype' : 'masterPassword').focus();\n }\n\n updatePasswordStrength() {\n if (this.masterPasswordStrengthTimeout != null) {\n clearTimeout(this.masterPasswordStrengthTimeout);\n }\n this.masterPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(this.email.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/));\n }\n if (this.name != null && this.name !== '') {\n userInput = userInput.concat(this.name.trim().toLowerCase().split(' '));\n }\n return userInput;\n }\n}\n","import { KeysRequest } from './keysRequest';\nimport { ReferenceEventRequest } from './referenceEventRequest';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class RegisterRequest {\n name: string;\n email: string;\n masterPasswordHash: string;\n masterPasswordHint: string;\n key: string;\n keys: KeysRequest;\n token: string;\n organizationUserId: string;\n kdf: KdfType;\n kdfIterations: number;\n referenceData: ReferenceEventRequest;\n\n constructor(email: string, name: string, masterPasswordHash: string, masterPasswordHint: string, key: string,\n kdf: KdfType, kdfIterations: number, referenceData: ReferenceEventRequest) {\n this.name = name;\n this.email = email;\n this.masterPasswordHash = masterPasswordHash;\n this.masterPasswordHint = masterPasswordHint ? masterPasswordHint : null;\n this.key = key;\n this.kdf = kdf;\n this.kdfIterations = kdfIterations;\n this.referenceData = referenceData;\n }\n}\n","export class ReferenceEventRequest {\n id: string;\n layout: string;\n flow: string;\n}\n","import {\n ActivatedRoute,\n Router\n} from '@angular/router';\n\nimport { ApiService } from '../../abstractions/api.service';\nimport { CryptoService } from '../../abstractions/crypto.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { MessagingService } from '../../abstractions/messaging.service';\nimport { PasswordGenerationService } from '../../abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { PolicyService } from '../../abstractions/policy.service';\nimport { SyncService } from '../../abstractions/sync.service';\nimport { UserService } from '../../abstractions/user.service';\n\nimport { CipherString } from '../../models/domain/cipherString';\nimport { SymmetricCryptoKey } from '../../models/domain/symmetricCryptoKey';\n\nimport { KeysRequest } from '../../models/request/keysRequest';\nimport { SetPasswordRequest } from '../../models/request/setPasswordRequest';\n\nimport { ChangePasswordComponent as BaseChangePasswordComponent } from './change-password.component';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class SetPasswordComponent extends BaseChangePasswordComponent {\n syncLoading: boolean = true;\n showPassword: boolean = false;\n hint: string = '';\n identifier: string = null;\n\n onSuccessfulChangePassword: () => Promise;\n successRoute = 'vault';\n\n constructor(i18nService: I18nService, cryptoService: CryptoService, messagingService: MessagingService,\n userService: UserService, passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService, private router: Router,\n private apiService: ApiService, private syncService: SyncService, private route: ActivatedRoute) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService);\n }\n\n async ngOnInit() {\n await this.syncService.fullSync(true);\n this.syncLoading = false;\n\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n }\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n\n super.ngOnInit();\n }\n\n async setupSubmitActions() {\n this.kdf = KdfType.PBKDF2_SHA256;\n const useLowerKdf = this.platformUtilsService.isIE();\n this.kdfIterations = useLowerKdf ? 10000 : 100000;\n return true;\n }\n\n async performSubmitActions(masterPasswordHash: string, key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, CipherString]) {\n const request = new SetPasswordRequest();\n request.masterPasswordHash = masterPasswordHash;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHint = this.hint;\n request.kdf = this.kdf;\n request.kdfIterations = this.kdfIterations;\n request.orgIdentifier = this.identifier;\n\n const keys = await this.cryptoService.makeKeyPair(encKey[0]);\n request.keys = new KeysRequest(keys[0], keys[1].encryptedString);\n\n try {\n this.formPromise = this.apiService.setPassword(request);\n await this.formPromise;\n\n await this.userService.setInformation(await this.userService.getUserId(), await this.userService.getEmail(),\n this.kdf, this.kdfIterations);\n await this.cryptoService.setKey(key);\n await this.cryptoService.setKeyHash(masterPasswordHash);\n await this.cryptoService.setEncKey(encKey[1].encryptedString);\n await this.cryptoService.setEncPrivateKey(keys[1].encryptedString);\n\n if (this.onSuccessfulChangePassword != null) {\n this.onSuccessfulChangePassword();\n } else {\n this.router.navigate([this.successRoute]);\n }\n } catch {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n }\n\n togglePassword(confirmField: boolean) {\n this.platformUtilsService.eventTrack('Toggled Master Password on Set Password');\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? 'masterPasswordRetype' : 'masterPassword').focus();\n }\n}\n","import { KeysRequest } from './keysRequest';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class SetPasswordRequest {\n masterPasswordHash: string;\n key: string;\n masterPasswordHint: string;\n keys: KeysRequest;\n kdf: KdfType;\n kdfIterations: number;\n orgIdentifier: string;\n}\n","import {\n Directive,\n EventEmitter,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nimport { AuthService } from '../../abstractions/auth.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\n@Directive()\nexport class TwoFactorOptionsComponent implements OnInit {\n @Output() onProviderSelected = new EventEmitter();\n @Output() onRecoverSelected = new EventEmitter();\n\n providers: any[] = [];\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected win: Window) { }\n\n ngOnInit() {\n this.providers = this.authService.getSupportedTwoFactorProviders(this.win);\n }\n\n choose(p: any) {\n this.onProviderSelected.emit(p.type);\n }\n\n recover() {\n this.platformUtilsService.eventTrack('Selected Recover');\n this.platformUtilsService.launchUri('https://help.bitwarden.com/article/lost-two-step-device/');\n this.onRecoverSelected.emit();\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n EventEmitter,\n OnDestroy,\n Output,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { MessagingService } from '../../abstractions/messaging.service';\n\n@Component({\n selector: 'app-modal',\n template: ``,\n})\nexport class ModalComponent implements OnDestroy {\n @Output() onClose = new EventEmitter();\n @Output() onClosed = new EventEmitter();\n @Output() onShow = new EventEmitter();\n @Output() onShown = new EventEmitter();\n @ViewChild('container', { read: ViewContainerRef, static: true }) container: ViewContainerRef;\n parentContainer: ViewContainerRef = null;\n fade: boolean = true;\n\n constructor(protected componentFactoryResolver: ComponentFactoryResolver,\n protected messagingService: MessagingService) { }\n\n ngOnDestroy() {\n document.body.classList.remove('modal-open');\n document.body.removeChild(document.querySelector('.modal-backdrop'));\n }\n\n show(type: Type, parentContainer: ViewContainerRef, fade: boolean = true,\n setComponentParameters: (component: T) => void = null): T {\n this.onShow.emit();\n this.messagingService.send('modalShow');\n this.parentContainer = parentContainer;\n this.fade = fade;\n\n document.body.classList.add('modal-open');\n const backdrop = document.createElement('div');\n backdrop.className = 'modal-backdrop' + (this.fade ? ' fade' : '');\n document.body.appendChild(backdrop);\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(type);\n const componentRef = this.container.createComponent(factory);\n if (setComponentParameters != null) {\n setComponentParameters(componentRef.instance);\n }\n\n document.querySelector('.modal-dialog').addEventListener('click', (e: Event) => {\n e.stopPropagation();\n });\n\n const modals = Array.from(document.querySelectorAll('.modal, .modal *[data-dismiss=\"modal\"]'));\n for (const closeElement of modals) {\n closeElement.addEventListener('click', event => {\n this.close();\n });\n }\n\n this.onShown.emit();\n this.messagingService.send('modalShown');\n return componentRef.instance;\n }\n\n close() {\n this.onClose.emit();\n this.messagingService.send('modalClose');\n this.onClosed.emit();\n this.messagingService.send('modalClosed');\n if (this.parentContainer != null) {\n this.parentContainer.clear();\n }\n }\n}\n","import {\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nimport { TwoFactorEmailRequest } from '../../models/request/twoFactorEmailRequest';\n\nimport { AuthResult } from '../../models/domain';\n\nimport { ApiService } from '../../abstractions/api.service';\nimport { AuthService } from '../../abstractions/auth.service';\nimport { EnvironmentService } from '../../abstractions/environment.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { StateService } from '../../abstractions/state.service';\nimport { StorageService } from '../../abstractions/storage.service';\n\nimport { TwoFactorProviders } from '../../services/auth.service';\nimport { ConstantsService } from '../../services/constants.service';\n\nimport * as DuoWebSDK from 'duo_web_sdk';\nimport { U2f } from '../../misc/u2f';\n\nexport class TwoFactorComponent implements OnInit, OnDestroy {\n token: string = '';\n remember: boolean = false;\n u2fReady: boolean = false;\n initU2f: boolean = true;\n providers = TwoFactorProviders;\n providerType = TwoFactorProviderType;\n selectedProviderType: TwoFactorProviderType = TwoFactorProviderType.Authenticator;\n u2fSupported: boolean = false;\n u2f: U2f = null;\n title: string = '';\n twoFactorEmail: string = null;\n formPromise: Promise;\n emailPromise: Promise;\n identifier: string = null;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n\n protected loginRoute = 'login';\n protected successRoute = 'vault';\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected apiService: ApiService,\n protected platformUtilsService: PlatformUtilsService, protected win: Window,\n protected environmentService: EnvironmentService, protected stateService: StateService,\n protected storageService: StorageService, protected route: ActivatedRoute) {\n this.u2fSupported = this.platformUtilsService.supportsU2f(win);\n }\n\n async ngOnInit() {\n if (!this.authing || this.authService.twoFactorProvidersData == null) {\n this.router.navigate([this.loginRoute]);\n return;\n }\n\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n }\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n\n if (this.needsLock) {\n this.successRoute = 'lock';\n }\n\n if (this.initU2f && this.win != null && this.u2fSupported) {\n let customWebVaultUrl: string = null;\n if (this.environmentService.baseUrl != null) {\n customWebVaultUrl = this.environmentService.baseUrl;\n } else if (this.environmentService.webVaultUrl != null) {\n customWebVaultUrl = this.environmentService.webVaultUrl;\n }\n\n this.u2f = new U2f(this.win, customWebVaultUrl, (token: string) => {\n this.token = token;\n this.submit();\n }, (error: string) => {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), error);\n }, (info: string) => {\n if (info === 'ready') {\n this.u2fReady = true;\n }\n });\n }\n\n this.selectedProviderType = this.authService.getDefaultTwoFactorProvider(this.u2fSupported);\n await this.init();\n }\n\n ngOnDestroy(): void {\n this.cleanupU2f();\n this.u2f = null;\n }\n\n async init() {\n if (this.selectedProviderType == null) {\n this.title = this.i18nService.t('loginUnavailable');\n return;\n }\n\n this.cleanupU2f();\n this.title = (TwoFactorProviders as any)[this.selectedProviderType].name;\n const providerData = this.authService.twoFactorProvidersData.get(this.selectedProviderType);\n switch (this.selectedProviderType) {\n case TwoFactorProviderType.U2f:\n if (!this.u2fSupported || this.u2f == null) {\n break;\n }\n\n if (providerData.Challenge != null) {\n setTimeout(() => {\n this.u2f.init(JSON.parse(providerData.Challenge));\n }, 500);\n } else {\n // TODO: Deprecated. Remove in future version.\n const challenges = JSON.parse(providerData.Challenges);\n if (challenges != null && challenges.length > 0) {\n this.u2f.init({\n appId: challenges[0].appId,\n challenge: challenges[0].challenge,\n keys: challenges.map((c: any) => {\n return {\n version: c.version,\n keyHandle: c.keyHandle,\n };\n }),\n });\n }\n }\n break;\n case TwoFactorProviderType.Duo:\n case TwoFactorProviderType.OrganizationDuo:\n setTimeout(() => {\n DuoWebSDK.init({\n iframe: undefined,\n host: providerData.Host,\n sig_request: providerData.Signature,\n submit_callback: async (f: HTMLFormElement) => {\n const sig = f.querySelector('input[name=\"sig_response\"]') as HTMLInputElement;\n if (sig != null) {\n this.token = sig.value;\n await this.submit();\n }\n },\n });\n }, 0);\n break;\n case TwoFactorProviderType.Email:\n this.twoFactorEmail = providerData.Email;\n if (this.authService.twoFactorProvidersData.size > 1) {\n await this.sendEmail(false);\n }\n break;\n default:\n break;\n }\n }\n\n async submit() {\n if (this.token == null || this.token === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('verificationCodeRequired'));\n return;\n }\n\n if (this.selectedProviderType === TwoFactorProviderType.U2f) {\n if (this.u2f != null) {\n this.u2f.stop();\n } else {\n return;\n }\n } else if (this.selectedProviderType === TwoFactorProviderType.Email ||\n this.selectedProviderType === TwoFactorProviderType.Authenticator) {\n this.token = this.token.replace(' ', '').trim();\n }\n\n try {\n this.formPromise = this.authService.logInTwoFactor(this.selectedProviderType, this.token, this.remember);\n const response: AuthResult = await this.formPromise;\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n this.platformUtilsService.eventTrack('Logged In From Two-step');\n if (response.resetMasterPassword) {\n this.successRoute = 'set-password';\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute], {\n queryParams: {\n identifier: this.identifier,\n },\n });\n }\n } catch {\n if (this.selectedProviderType === TwoFactorProviderType.U2f && this.u2f != null) {\n this.u2f.start();\n }\n }\n }\n\n async sendEmail(doToast: boolean) {\n if (this.selectedProviderType !== TwoFactorProviderType.Email) {\n return;\n }\n\n if (this.emailPromise != null) {\n return;\n }\n\n try {\n const request = new TwoFactorEmailRequest(this.authService.email, this.authService.masterPasswordHash);\n this.emailPromise = this.apiService.postTwoFactorEmail(request);\n await this.emailPromise;\n if (doToast) {\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t('verificationCodeEmailSent', this.twoFactorEmail));\n }\n } catch { }\n\n this.emailPromise = null;\n }\n\n private cleanupU2f() {\n if (this.u2f != null) {\n this.u2f.stop();\n this.u2f.cleanup();\n }\n }\n\n get authing(): boolean {\n return this.authService.authingWithPassword() || this.authService.authingWithSso() || this.authService.authingWithApiKey();\n }\n\n get needsLock(): boolean {\n return this.authService.authingWithSso() || this.authService.authingWithApiKey();\n }\n}\n","import { DeviceType } from '../../enums/deviceType';\n\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nexport class DeviceRequest {\n type: DeviceType;\n name: string;\n identifier: string;\n pushToken?: string;\n\n constructor(appId: string, platformUtilsService: PlatformUtilsService) {\n this.type = platformUtilsService.getDevice();\n this.name = platformUtilsService.getDeviceString();\n this.identifier = appId;\n this.pushToken = null;\n }\n}\n","export class PreloginRequest {\n email: string;\n\n constructor(email: string) {\n this.email = email;\n }\n}\n","import { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nimport { DeviceRequest } from './deviceRequest';\n\nexport class TokenRequest {\n email: string;\n masterPasswordHash: string;\n code: string;\n codeVerifier: string;\n redirectUri: string;\n clientId: string;\n clientSecret: string;\n token: string;\n provider: TwoFactorProviderType;\n remember: boolean;\n device?: DeviceRequest;\n\n constructor(credentials: string[], codes: string[], clientIdClientSecret: string[], provider: TwoFactorProviderType,\n token: string, remember: boolean, device?: DeviceRequest) {\n if (credentials != null && credentials.length > 1) {\n this.email = credentials[0];\n this.masterPasswordHash = credentials[1];\n } else if (codes != null && codes.length > 2) {\n this.code = codes[0];\n this.codeVerifier = codes[1];\n this.redirectUri = codes[2];\n } else if (clientIdClientSecret != null && clientIdClientSecret.length > 1) {\n this.clientId = clientIdClientSecret[0];\n this.clientSecret = clientIdClientSecret[1];\n }\n this.token = token;\n this.provider = provider;\n this.remember = remember;\n this.device = device != null ? device : null;\n }\n\n toIdentityToken(clientId: string) {\n const obj: any = {\n scope: 'api offline_access',\n client_id: clientId,\n };\n\n if (this.clientSecret != null) {\n obj.scope = 'api';\n obj.grant_type = 'client_credentials';\n obj.client_secret = this.clientSecret;\n } else if (this.masterPasswordHash != null && this.email != null) {\n obj.grant_type = 'password';\n obj.username = this.email;\n obj.password = this.masterPasswordHash;\n } else if (this.code != null && this.codeVerifier != null && this.redirectUri != null) {\n obj.grant_type = 'authorization_code';\n obj.code = this.code;\n obj.code_verifier = this.codeVerifier;\n obj.redirect_uri = this.redirectUri;\n } else {\n throw new Error('must provide credentials or codes');\n }\n\n if (this.device) {\n obj.deviceType = this.device.type;\n obj.deviceIdentifier = this.device.identifier;\n obj.deviceName = this.device.name;\n // no push tokens for browser apps yet\n // obj.devicePushToken = this.device.pushToken;\n }\n\n if (this.token && this.provider != null) {\n obj.twoFactorToken = this.token;\n obj.twoFactorProvider = this.provider;\n obj.twoFactorRemember = this.remember ? '1' : '0';\n }\n\n return obj;\n }\n}\n","export class U2f {\n private iframe: HTMLIFrameElement = null;\n private connectorLink: HTMLAnchorElement;\n private parseFunction = this.parseMessage.bind(this);\n\n constructor(private win: Window, private webVaultUrl: string, private successCallback: Function,\n private errorCallback: Function, private infoCallback: Function) {\n this.connectorLink = win.document.createElement('a');\n this.webVaultUrl = webVaultUrl != null && webVaultUrl !== '' ? webVaultUrl : 'https://vault.bitwarden.com';\n }\n\n init(data: any): void {\n this.connectorLink.href = this.webVaultUrl + '/u2f-connector.html' +\n '?data=' + this.base64Encode(JSON.stringify(data)) +\n '&parent=' + encodeURIComponent(this.win.document.location.href) +\n '&v=1';\n\n this.iframe = this.win.document.getElementById('u2f_iframe') as HTMLIFrameElement;\n this.iframe.src = this.connectorLink.href;\n\n this.win.addEventListener('message', this.parseFunction, false);\n }\n\n stop() {\n this.sendMessage('stop');\n }\n\n start() {\n this.sendMessage('start');\n }\n\n sendMessage(message: any) {\n if (!this.iframe || !this.iframe.src || !this.iframe.contentWindow) {\n return;\n }\n\n this.iframe.contentWindow.postMessage(message, this.iframe.src);\n }\n\n base64Encode(str: string): string {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => {\n return String.fromCharCode(('0x' + p1) as any);\n }));\n }\n\n cleanup() {\n this.win.removeEventListener('message', this.parseFunction, false);\n }\n\n private parseMessage(event: MessageEvent) {\n if (!this.validMessage(event)) {\n return;\n }\n\n const parts: string[] = event.data.split('|');\n if (parts[0] === 'success' && this.successCallback) {\n this.successCallback(parts[1]);\n } else if (parts[0] === 'error' && this.errorCallback) {\n this.errorCallback(parts[1]);\n } else if (parts[0] === 'info' && this.infoCallback) {\n this.infoCallback(parts[1]);\n }\n }\n\n private validMessage(event: MessageEvent) {\n if (event.origin == null || event.origin === '' || event.origin !== (this.connectorLink as any).origin ||\n event.data == null || typeof (event.data) !== 'string') {\n return false;\n }\n\n return event.data.indexOf('success|') === 0 || event.data.indexOf('error|') === 0 ||\n event.data.indexOf('info|') === 0;\n }\n}\n","export class VerifyEmailRequest {\n userId: string;\n token: string;\n\n constructor(userId: string, token: string) {\n this.userId = userId;\n this.token = token;\n }\n}\n","export class VerifyDeleteRecoverRequest {\n userId: string;\n token: string;\n\n constructor(userId: string, token: string) {\n this.userId = userId;\n this.token = token;\n }\n}\n","import { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nexport class GroupRequest {\n name: string;\n accessAll: boolean;\n externalId: string;\n collections: SelectionReadOnlyRequest[] = [];\n}\n","import { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class OrganizationUserInviteRequest {\n emails: string[] = [];\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n permissions: PermissionsApi;\n}\n","import { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class OrganizationUserUpdateRequest {\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n permissions: PermissionsApi;\n}\n","export class OrganizationUserUpdateGroupsRequest {\n groupIds: string[] = [];\n}\n","export abstract class AppIdService {\n getAppId: () => Promise;\n getAnonymousAppId: () => Promise;\n}\n","import { LogLevelType } from '../enums/logLevelType';\n\nexport abstract class LogService {\n debug: (message: string) => void;\n info: (message: string) => void;\n warning: (message: string) => void;\n error: (message: string) => void;\n write: (level: LogLevelType, message: string) => void;\n time: (label: string) => void;\n timeEnd: (label: string) => [number, number];\n}\n","import { PolicyType } from '../../enums/policyType';\n\nexport class PolicyRequest {\n type: PolicyType;\n enabled: boolean;\n data: any;\n}\n","export class OrganizationUpdateRequest {\n name: string;\n identifier: string;\n businessName: string;\n billingEmail: string;\n}\n","export enum TransactionType {\n Charge = 0,\n Credit = 1,\n PromotionalCredit = 2,\n ReferralCredit = 3,\n Refund = 4,\n}\n","export class VerifyBankRequest {\n amount1: number;\n amount2: number;\n}\n","export class BitPayInvoiceRequest {\n userId: string;\n organizationId: string;\n credit: boolean;\n amount: number;\n returnUrl: string;\n name: string;\n email: string;\n}\n","import { PaymentMethodType } from '../../enums/paymentMethodType';\nimport { OrganizationTaxInfoUpdateRequest } from '../request/organizationTaxInfoUpdateRequest';\n\nexport class PaymentRequest extends OrganizationTaxInfoUpdateRequest {\n paymentMethodType: PaymentMethodType;\n paymentToken: string;\n}\n","import { PaymentMethodType } from '../../enums/paymentMethodType';\nimport { PlanType } from '../../enums/planType';\n\nexport class OrganizationCreateRequest {\n name: string;\n businessName: string;\n billingEmail: string;\n planType: PlanType;\n key: string;\n paymentMethodType: PaymentMethodType;\n paymentToken: string;\n additionalSeats: number;\n additionalStorageGb: number;\n premiumAccessAddon: boolean;\n collectionName: string;\n taxIdNumber: string;\n billingAddressLine1: string;\n billingAddressLine2: string;\n billingAddressCity: string;\n billingAddressState: string;\n billingAddressPostalCode: string;\n billingAddressCountry: string;\n}\n","import { PlanType } from '../../enums/planType';\n\nexport class OrganizationUpgradeRequest {\n businessName: string;\n planType: PlanType;\n additionalSeats: number;\n additionalStorageGb: number;\n premiumAccessAddon: boolean;\n billingAddressCountry: string;\n billingAddressPostalCode: string;\n}\n","export class SeatRequest {\n seatAdjustment: number;\n}\n","export class StorageRequest {\n storageGbAdjustment: number;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorDuoRequest extends PasswordVerificationRequest {\n integrationKey: string;\n secretKey: string;\n host: string;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class TwoFactorProviderRequest extends PasswordVerificationRequest {\n type: TwoFactorProviderType;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorAuthenticatorRequest extends PasswordVerificationRequest {\n token: string;\n key: string;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorEmailRequest extends PasswordVerificationRequest {\n token: string;\n email: string;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorU2fDeleteRequest extends PasswordVerificationRequest {\n id: number;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorU2fRequest extends PasswordVerificationRequest {\n deviceResponse: string;\n name: string;\n id: number;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorYubioOtpRequest extends PasswordVerificationRequest {\n key1: string;\n key2: string;\n key3: string;\n key4: string;\n key5: string;\n nfc: boolean;\n}\n","import {\n Directive,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { CryptoService } from '../../abstractions/crypto.service';\nimport { EventService } from '../../abstractions/event.service';\nimport { ExportService } from '../../abstractions/export.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { EventType } from '../../enums/eventType';\n\n@Directive()\nexport class ExportComponent {\n @Output() onSaved = new EventEmitter();\n\n formPromise: Promise;\n masterPassword: string;\n format: 'json' | 'encrypted_json' | 'csv' = 'json';\n showPassword = false;\n\n constructor(protected cryptoService: CryptoService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected exportService: ExportService,\n protected eventService: EventService, protected win: Window) { }\n\n get encryptedFormat() {\n return this.format === 'encrypted_json';\n }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidMasterPassword'));\n return;\n }\n\n const acceptedWarning = await this.warningDialog();\n if (!acceptedWarning) {\n return;\n }\n\n const keyHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const storedKeyHash = await this.cryptoService.getKeyHash();\n if (storedKeyHash != null && keyHash != null && storedKeyHash === keyHash) {\n try {\n this.formPromise = this.getExportData();\n const data = await this.formPromise;\n this.platformUtilsService.eventTrack('Exported Data');\n this.downloadFile(data);\n this.saved();\n await this.collectEvent();\n } catch { }\n } else {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidMasterPassword'));\n }\n }\n\n async warningDialog() {\n if (this.encryptedFormat) {\n return await this.platformUtilsService.showDialog(\n '

' + this.i18nService.t('encExportKeyWarningDesc') +\n '

' + this.i18nService.t('encExportAccountWarningDesc'),\n this.i18nService.t('confirmVaultExport'), this.i18nService.t('exportVault'),\n this.i18nService.t('cancel'), 'warning',\n true);\n } else {\n return await this.platformUtilsService.showDialog(\n this.i18nService.t('exportWarningDesc'),\n this.i18nService.t('confirmVaultExport'), this.i18nService.t('exportVault'),\n this.i18nService.t('cancel'), 'warning');\n }\n }\n\n togglePassword() {\n this.platformUtilsService.eventTrack('Toggled Master Password on Export');\n this.showPassword = !this.showPassword;\n document.getElementById('masterPassword').focus();\n }\n\n protected saved() {\n this.onSaved.emit();\n }\n\n protected getExportData() {\n return this.exportService.getExport(this.format);\n }\n\n protected getFileName(prefix?: string) {\n let extension = this.format;\n if (this.format === 'encrypted_json') {\n if (prefix == null) {\n prefix = 'encrypted';\n } else {\n prefix = 'encrypted_' + prefix;\n }\n extension = 'json';\n }\n return this.exportService.getFileName(prefix, extension);\n }\n\n protected async collectEvent(): Promise {\n await this.eventService.collect(EventType.User_ClientExportedVault);\n }\n\n private downloadFile(csv: string): void {\n const fileName = this.getFileName();\n this.platformUtilsService.saveFile(this.win, csv, { type: 'text/plain' }, fileName);\n }\n}\n","export class AttachmentRequest {\n fileName: string;\n key: string;\n}\n","import {\n CdkDragDrop,\n moveItemInArray,\n} from '@angular/cdk/drag-drop';\nimport {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { EventType } from '../../enums/eventType';\nimport { FieldType } from '../../enums/fieldType';\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { PolicyType } from '../../enums/policyType';\nimport { SecureNoteType } from '../../enums/secureNoteType';\nimport { UriMatchType } from '../../enums/uriMatchType';\n\nimport { AuditService } from '../../abstractions/audit.service';\nimport { CipherService } from '../../abstractions/cipher.service';\nimport { CollectionService } from '../../abstractions/collection.service';\nimport { EventService } from '../../abstractions/event.service';\nimport { FolderService } from '../../abstractions/folder.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { MessagingService } from '../../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { PolicyService } from '../../abstractions/policy.service';\nimport { StateService } from '../../abstractions/state.service';\nimport { UserService } from '../../abstractions/user.service';\n\nimport { Cipher } from '../../models/domain/cipher';\n\nimport { CardView } from '../../models/view/cardView';\nimport { CipherView } from '../../models/view/cipherView';\nimport { CollectionView } from '../../models/view/collectionView';\nimport { FieldView } from '../../models/view/fieldView';\nimport { FolderView } from '../../models/view/folderView';\nimport { IdentityView } from '../../models/view/identityView';\nimport { LoginUriView } from '../../models/view/loginUriView';\nimport { LoginView } from '../../models/view/loginView';\nimport { SecureNoteView } from '../../models/view/secureNoteView';\n\nimport { Utils } from '../../misc/utils';\n\n@Directive()\nexport class AddEditComponent implements OnInit {\n @Input() cloneMode: boolean = false;\n @Input() folderId: string = null;\n @Input() cipherId: string;\n @Input() type: CipherType;\n @Input() collectionIds: string[];\n @Input() organizationId: string = null;\n @Output() onSavedCipher = new EventEmitter();\n @Output() onDeletedCipher = new EventEmitter();\n @Output() onRestoredCipher = new EventEmitter();\n @Output() onCancelled = new EventEmitter();\n @Output() onEditAttachments = new EventEmitter();\n @Output() onShareCipher = new EventEmitter();\n @Output() onEditCollections = new EventEmitter();\n @Output() onGeneratePassword = new EventEmitter();\n\n editMode: boolean = false;\n cipher: CipherView;\n folders: FolderView[];\n collections: CollectionView[] = [];\n title: string;\n formPromise: Promise;\n deletePromise: Promise;\n restorePromise: Promise;\n checkPasswordPromise: Promise;\n showPassword: boolean = false;\n showCardCode: boolean = false;\n cipherType = CipherType;\n fieldType = FieldType;\n addFieldType: FieldType = FieldType.Text;\n typeOptions: any[];\n cardBrandOptions: any[];\n cardExpMonthOptions: any[];\n identityTitleOptions: any[];\n addFieldTypeOptions: any[];\n uriMatchOptions: any[];\n ownershipOptions: any[] = [];\n currentDate = new Date();\n allowPersonal = true;\n\n protected writeableCollections: CollectionView[];\n private previousCipherId: string;\n\n constructor(protected cipherService: CipherService, protected folderService: FolderService,\n protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected auditService: AuditService, protected stateService: StateService,\n protected userService: UserService, protected collectionService: CollectionService,\n protected messagingService: MessagingService, protected eventService: EventService,\n protected policyService: PolicyService) {\n this.typeOptions = [\n { name: i18nService.t('typeLogin'), value: CipherType.Login },\n { name: i18nService.t('typeCard'), value: CipherType.Card },\n { name: i18nService.t('typeIdentity'), value: CipherType.Identity },\n { name: i18nService.t('typeSecureNote'), value: CipherType.SecureNote },\n ];\n this.cardBrandOptions = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: 'Visa', value: 'Visa' },\n { name: 'Mastercard', value: 'Mastercard' },\n { name: 'American Express', value: 'Amex' },\n { name: 'Discover', value: 'Discover' },\n { name: 'Diners Club', value: 'Diners Club' },\n { name: 'JCB', value: 'JCB' },\n { name: 'Maestro', value: 'Maestro' },\n { name: 'UnionPay', value: 'UnionPay' },\n { name: i18nService.t('other'), value: 'Other' },\n ];\n this.cardExpMonthOptions = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: '01 - ' + i18nService.t('january'), value: '1' },\n { name: '02 - ' + i18nService.t('february'), value: '2' },\n { name: '03 - ' + i18nService.t('march'), value: '3' },\n { name: '04 - ' + i18nService.t('april'), value: '4' },\n { name: '05 - ' + i18nService.t('may'), value: '5' },\n { name: '06 - ' + i18nService.t('june'), value: '6' },\n { name: '07 - ' + i18nService.t('july'), value: '7' },\n { name: '08 - ' + i18nService.t('august'), value: '8' },\n { name: '09 - ' + i18nService.t('september'), value: '9' },\n { name: '10 - ' + i18nService.t('october'), value: '10' },\n { name: '11 - ' + i18nService.t('november'), value: '11' },\n { name: '12 - ' + i18nService.t('december'), value: '12' },\n ];\n this.identityTitleOptions = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: i18nService.t('mr'), value: i18nService.t('mr') },\n { name: i18nService.t('mrs'), value: i18nService.t('mrs') },\n { name: i18nService.t('ms'), value: i18nService.t('ms') },\n { name: i18nService.t('dr'), value: i18nService.t('dr') },\n ];\n this.addFieldTypeOptions = [\n { name: i18nService.t('cfTypeText'), value: FieldType.Text },\n { name: i18nService.t('cfTypeHidden'), value: FieldType.Hidden },\n { name: i18nService.t('cfTypeBoolean'), value: FieldType.Boolean },\n ];\n this.uriMatchOptions = [\n { name: i18nService.t('defaultMatchDetection'), value: null },\n { name: i18nService.t('baseDomain'), value: UriMatchType.Domain },\n { name: i18nService.t('host'), value: UriMatchType.Host },\n { name: i18nService.t('startsWith'), value: UriMatchType.StartsWith },\n { name: i18nService.t('regEx'), value: UriMatchType.RegularExpression },\n { name: i18nService.t('exact'), value: UriMatchType.Exact },\n { name: i18nService.t('never'), value: UriMatchType.Never },\n ];\n }\n\n async ngOnInit() {\n await this.init();\n }\n\n async init() {\n const policies = await this.policyService.getAll(PolicyType.PersonalOwnership);\n const myEmail = await this.userService.getEmail();\n this.ownershipOptions.push({ name: myEmail, value: null });\n const orgs = await this.userService.getAllOrganizations();\n orgs.sort(Utils.getSortFunction(this.i18nService, 'name')).forEach(o => {\n if (o.enabled && o.status === OrganizationUserStatusType.Confirmed) {\n this.ownershipOptions.push({ name: o.name, value: o.id });\n if (policies != null && o.usePolicies && !o.canManagePolicies && this.allowPersonal) {\n for (const policy of policies) {\n if (policy.organizationId === o.id && policy.enabled) {\n this.allowPersonal = false;\n this.ownershipOptions.splice(0, 1);\n // Default to the organization who owns this policy for now (if necessary)\n if (this.organizationId == null) {\n this.organizationId = o.id;\n }\n break;\n }\n }\n }\n }\n });\n this.writeableCollections = await this.loadCollections();\n }\n\n async load() {\n this.editMode = this.cipherId != null;\n if (this.editMode) {\n this.editMode = true;\n if (this.cloneMode) {\n this.cloneMode = true;\n this.title = this.i18nService.t('addItem');\n } else {\n this.title = this.i18nService.t('editItem');\n }\n } else {\n this.title = this.i18nService.t('addItem');\n }\n\n const addEditCipherInfo: any = await this.stateService.get('addEditCipherInfo');\n if (addEditCipherInfo != null) {\n this.cipher = addEditCipherInfo.cipher;\n this.collectionIds = addEditCipherInfo.collectionIds;\n }\n await this.stateService.remove('addEditCipherInfo');\n\n if (this.cipher == null) {\n if (this.editMode) {\n const cipher = await this.loadCipher();\n this.cipher = await cipher.decrypt();\n\n // Adjust Cipher Name if Cloning\n if (this.cloneMode) {\n this.cipher.name += ' - ' + this.i18nService.t('clone');\n // If not allowing personal ownership, update cipher's org Id to prompt downstream changes\n if (this.cipher.organizationId == null && !this.allowPersonal) {\n this.cipher.organizationId = this.organizationId;\n }\n }\n } else {\n this.cipher = new CipherView();\n this.cipher.organizationId = this.organizationId == null ? null : this.organizationId;\n this.cipher.folderId = this.folderId;\n this.cipher.type = this.type == null ? CipherType.Login : this.type;\n this.cipher.login = new LoginView();\n this.cipher.login.uris = [new LoginUriView()];\n this.cipher.card = new CardView();\n this.cipher.identity = new IdentityView();\n this.cipher.secureNote = new SecureNoteView();\n this.cipher.secureNote.type = SecureNoteType.Generic;\n }\n }\n\n if (this.cipher != null && (!this.editMode || addEditCipherInfo != null || this.cloneMode)) {\n await this.organizationChanged();\n if (this.collectionIds != null && this.collectionIds.length > 0 && this.collections.length > 0) {\n this.collections.forEach(c => {\n if (this.collectionIds.indexOf(c.id) > -1) {\n (c as any).checked = true;\n }\n });\n }\n }\n\n this.folders = await this.folderService.getAllDecrypted();\n\n if (this.editMode && this.previousCipherId !== this.cipherId) {\n this.eventService.collect(EventType.Cipher_ClientViewed, this.cipherId);\n }\n this.previousCipherId = this.cipherId;\n }\n\n async submit(): Promise {\n if (this.cipher.isDeleted) {\n return this.restore();\n }\n\n if (this.cipher.name == null || this.cipher.name === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nameRequired'));\n return false;\n }\n\n if ((!this.editMode || this.cloneMode) && !this.allowPersonal && this.cipher.organizationId == null) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('personalOwnershipSubmitError'));\n return false;\n }\n\n if ((!this.editMode || this.cloneMode) && this.cipher.type === CipherType.Login &&\n this.cipher.login.uris != null && this.cipher.login.uris.length === 1 &&\n (this.cipher.login.uris[0].uri == null || this.cipher.login.uris[0].uri === '')) {\n this.cipher.login.uris = null;\n }\n\n // Allows saving of selected collections during \"Add\" and \"Clone\" flows\n if ((!this.editMode || this.cloneMode) && this.cipher.organizationId != null) {\n this.cipher.collectionIds = this.collections == null ? [] :\n this.collections.filter(c => (c as any).checked).map(c => c.id);\n }\n\n // Clear current Cipher Id to trigger \"Add\" cipher flow\n if (this.cloneMode) {\n this.cipher.id = null;\n }\n\n const cipher = await this.encryptCipher();\n try {\n this.formPromise = this.saveCipher(cipher);\n await this.formPromise;\n this.cipher.id = cipher.id;\n this.platformUtilsService.eventTrack(this.editMode && !this.cloneMode ? 'Edited Cipher' : 'Added Cipher');\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.editMode && !this.cloneMode ? 'editedItem' : 'addedItem'));\n this.onSavedCipher.emit(this.cipher);\n this.messagingService.send(this.editMode && !this.cloneMode ? 'editedCipher' : 'addedCipher');\n return true;\n } catch { }\n\n return false;\n }\n\n addUri() {\n if (this.cipher.type !== CipherType.Login) {\n return;\n }\n\n if (this.cipher.login.uris == null) {\n this.cipher.login.uris = [];\n }\n\n this.cipher.login.uris.push(new LoginUriView());\n }\n\n removeUri(uri: LoginUriView) {\n if (this.cipher.type !== CipherType.Login || this.cipher.login.uris == null) {\n return;\n }\n\n const i = this.cipher.login.uris.indexOf(uri);\n if (i > -1) {\n this.cipher.login.uris.splice(i, 1);\n }\n }\n\n addField() {\n if (this.cipher.fields == null) {\n this.cipher.fields = [];\n }\n\n const f = new FieldView();\n f.type = this.addFieldType;\n f.newField = true;\n this.cipher.fields.push(f);\n }\n\n removeField(field: FieldView) {\n const i = this.cipher.fields.indexOf(field);\n if (i > -1) {\n this.cipher.fields.splice(i, 1);\n }\n }\n\n trackByFunction(index: number, item: any) {\n return index;\n }\n\n cancel() {\n this.onCancelled.emit(this.cipher);\n }\n\n attachments() {\n this.onEditAttachments.emit(this.cipher);\n }\n\n share() {\n this.onShareCipher.emit(this.cipher);\n }\n\n editCollections() {\n this.onEditCollections.emit(this.cipher);\n }\n\n async delete(): Promise {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(this.cipher.isDeleted ? 'permanentlyDeleteItemConfirmation' : 'deleteItemConfirmation'),\n this.i18nService.t('deleteItem'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.deleteCipher();\n await this.deletePromise;\n this.platformUtilsService.eventTrack((this.cipher.isDeleted ? 'Permanently ' : '') + 'Deleted Cipher');\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.cipher.isDeleted ? 'permanentlyDeletedItem' : 'deletedItem'));\n this.onDeletedCipher.emit(this.cipher);\n this.messagingService.send(this.cipher.isDeleted ? 'permanentlyDeletedCipher' : 'deletedCipher');\n } catch { }\n\n return true;\n }\n\n async restore(): Promise {\n if (!this.cipher.isDeleted) {\n return false;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('restoreItemConfirmation'), this.i18nService.t('restoreItem'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.restorePromise = this.restoreCipher();\n await this.restorePromise;\n this.platformUtilsService.eventTrack('Restored Cipher');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('restoredItem'));\n this.onRestoredCipher.emit(this.cipher);\n this.messagingService.send('restoredCipher');\n } catch { }\n\n return true;\n }\n\n async generatePassword(): Promise {\n if (this.cipher.login != null && this.cipher.login.password != null && this.cipher.login.password.length) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('overwritePasswordConfirmation'), this.i18nService.t('overwritePassword'),\n this.i18nService.t('yes'), this.i18nService.t('no'));\n if (!confirmed) {\n return false;\n }\n }\n\n this.onGeneratePassword.emit();\n return true;\n }\n\n togglePassword() {\n this.platformUtilsService.eventTrack('Toggled Password on Edit');\n this.showPassword = !this.showPassword;\n document.getElementById('loginPassword').focus();\n if (this.editMode && this.showPassword) {\n this.eventService.collect(EventType.Cipher_ClientToggledPasswordVisible, this.cipherId);\n }\n }\n\n toggleCardCode() {\n this.platformUtilsService.eventTrack('Toggled CardCode on Edit');\n this.showCardCode = !this.showCardCode;\n document.getElementById('cardCode').focus();\n if (this.editMode && this.showCardCode) {\n this.eventService.collect(EventType.Cipher_ClientToggledCardCodeVisible, this.cipherId);\n }\n }\n\n toggleFieldValue(field: FieldView) {\n const f = (field as any);\n f.showValue = !f.showValue;\n if (this.editMode && f.showValue) {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, this.cipherId);\n }\n }\n\n toggleUriOptions(uri: LoginUriView) {\n const u = (uri as any);\n u.showOptions = u.showOptions == null && uri.match != null ? false : !u.showOptions;\n }\n\n loginUriMatchChanged(uri: LoginUriView) {\n const u = (uri as any);\n u.showOptions = u.showOptions == null ? true : u.showOptions;\n }\n\n drop(event: CdkDragDrop) {\n moveItemInArray(this.cipher.fields, event.previousIndex, event.currentIndex);\n }\n\n async organizationChanged() {\n if (this.writeableCollections != null) {\n this.writeableCollections.forEach(c => (c as any).checked = false);\n }\n if (this.cipher.organizationId != null) {\n this.collections = this.writeableCollections.filter(c => c.organizationId === this.cipher.organizationId);\n const org = await this.userService.getOrganization(this.cipher.organizationId);\n if (org != null) {\n this.cipher.organizationUseTotp = org.useTotp;\n }\n } else {\n this.collections = [];\n }\n }\n\n async checkPassword() {\n if (this.checkPasswordPromise != null) {\n return;\n }\n\n if (this.cipher.login == null || this.cipher.login.password == null || this.cipher.login.password === '') {\n return;\n }\n\n this.platformUtilsService.eventTrack('Check Password');\n this.checkPasswordPromise = this.auditService.passwordLeaked(this.cipher.login.password);\n const matches = await this.checkPasswordPromise;\n this.checkPasswordPromise = null;\n\n if (matches > 0) {\n this.platformUtilsService.showToast('warning', null,\n this.i18nService.t('passwordExposed', matches.toString()));\n } else {\n this.platformUtilsService.showToast('success', null, this.i18nService.t('passwordSafe'));\n }\n }\n\n protected async loadCollections() {\n const allCollections = await this.collectionService.getAllDecrypted();\n return allCollections.filter(c => !c.readOnly);\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected encryptCipher() {\n return this.cipherService.encrypt(this.cipher);\n }\n\n protected saveCipher(cipher: Cipher) {\n return this.cipherService.saveWithServer(cipher);\n }\n\n protected deleteCipher() {\n return this.cipher.isDeleted ? this.cipherService.deleteWithServer(this.cipher.id)\n : this.cipherService.softDeleteWithServer(this.cipher.id);\n }\n\n protected restoreCipher() {\n return this.cipherService.restoreWithServer(this.cipher.id);\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { SearchService } from '../../abstractions/search.service';\n\nimport { CipherView } from '../../models/view/cipherView';\n\n@Directive()\nexport class CiphersComponent {\n @Input() activeCipherId: string = null;\n @Output() onCipherClicked = new EventEmitter();\n @Output() onCipherRightClicked = new EventEmitter();\n @Output() onAddCipher = new EventEmitter();\n @Output() onAddCipherOptions = new EventEmitter();\n\n loaded: boolean = false;\n ciphers: CipherView[] = [];\n pagedCiphers: CipherView[] = [];\n searchText: string;\n searchPlaceholder: string = null;\n filter: (cipher: CipherView) => boolean = null;\n deleted: boolean = false;\n\n protected searchPending = false;\n protected didScroll = false;\n protected pageSize = 100;\n\n private searchTimeout: any = null;\n private pagedCiphersCount = 0;\n private refreshing = false;\n\n constructor(protected searchService: SearchService) { }\n\n async load(filter: (cipher: CipherView) => boolean = null, deleted: boolean = false) {\n this.deleted = deleted || false;\n await this.applyFilter(filter);\n this.loaded = true;\n }\n\n loadMore() {\n if (this.ciphers.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedCiphers.length;\n let pagedSize = this.pageSize;\n if (this.refreshing && pagedLength === 0 && this.pagedCiphersCount > this.pageSize) {\n pagedSize = this.pagedCiphersCount;\n }\n if (this.ciphers.length > pagedLength) {\n this.pagedCiphers = this.pagedCiphers.concat(this.ciphers.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedCiphersCount = this.pagedCiphers.length;\n this.didScroll = this.pagedCiphers.length > this.pageSize;\n }\n\n async reload(filter: (cipher: CipherView) => boolean = null, deleted: boolean = false) {\n this.loaded = false;\n this.ciphers = [];\n await this.load(filter, deleted);\n }\n\n async refresh() {\n try {\n this.refreshing = true;\n await this.reload(this.filter, this.deleted);\n } finally {\n this.refreshing = false;\n }\n }\n\n async applyFilter(filter: (cipher: CipherView) => boolean = null) {\n this.filter = filter;\n await this.search(null);\n }\n\n async search(timeout: number = null) {\n this.searchPending = false;\n if (this.searchTimeout != null) {\n clearTimeout(this.searchTimeout);\n }\n const deletedFilter: (cipher: CipherView) => boolean = c => c.isDeleted === this.deleted;\n if (timeout == null) {\n this.ciphers = await this.searchService.searchCiphers(this.searchText, [this.filter, deletedFilter], null);\n await this.resetPaging();\n return;\n }\n this.searchPending = true;\n this.searchTimeout = setTimeout(async () => {\n this.ciphers = await this.searchService.searchCiphers(this.searchText, [this.filter, deletedFilter], null);\n await this.resetPaging();\n this.searchPending = false;\n }, timeout);\n }\n\n selectCipher(cipher: CipherView) {\n this.onCipherClicked.emit(cipher);\n }\n\n rightClickCipher(cipher: CipherView) {\n this.onCipherRightClicked.emit(cipher);\n }\n\n addCipher() {\n this.onAddCipher.emit();\n }\n\n addCipherOptions() {\n this.onAddCipherOptions.emit();\n }\n\n isSearching() {\n return !this.searchPending && this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.ciphers.length > this.pageSize;\n }\n\n async resetPaging() {\n this.pagedCiphers = [];\n this.loadMore();\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { CipherService } from '../../abstractions/cipher.service';\nimport { CollectionService } from '../../abstractions/collection.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nimport { CipherView } from '../../models/view/cipherView';\nimport { CollectionView } from '../../models/view/collectionView';\n\nimport { Cipher } from '../../models/domain/cipher';\n\n@Directive()\nexport class CollectionsComponent implements OnInit {\n @Input() cipherId: string;\n @Input() allowSelectNone = false;\n @Output() onSavedCollections = new EventEmitter();\n\n formPromise: Promise;\n cipher: CipherView;\n collectionIds: string[];\n collections: CollectionView[] = [];\n\n protected cipherDomain: Cipher;\n\n constructor(protected collectionService: CollectionService, protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService, protected cipherService: CipherService) { }\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n this.cipherDomain = await this.loadCipher();\n this.collectionIds = this.loadCipherCollections();\n this.cipher = await this.cipherDomain.decrypt();\n this.collections = await this.loadCollections();\n\n this.collections.forEach(c => (c as any).checked = false);\n if (this.collectionIds != null) {\n this.collections.forEach(c => {\n (c as any).checked = this.collectionIds != null && this.collectionIds.indexOf(c.id) > -1;\n });\n }\n }\n\n async submit() {\n const selectedCollectionIds = this.collections\n .filter(c => !!(c as any).checked)\n .map(c => c.id);\n if (!this.allowSelectNone && selectedCollectionIds.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectOneCollection'));\n return;\n }\n this.cipherDomain.collectionIds = selectedCollectionIds;\n try {\n this.formPromise = this.saveCollections();\n await this.formPromise;\n this.onSavedCollections.emit();\n this.platformUtilsService.eventTrack('Edited Cipher Collections');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('editedItem'));\n } catch { }\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected loadCipherCollections() {\n return this.cipherDomain.collectionIds;\n }\n\n protected async loadCollections() {\n const allCollections = await this.collectionService.getAllDecrypted();\n return allCollections.filter(c => !c.readOnly && c.organizationId === this.cipher.organizationId);\n }\n\n protected saveCollections() {\n return this.cipherService.saveCollectionsWithServer(this.cipherDomain);\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { CipherType } from '../../enums/cipherType';\n\nimport { CollectionView } from '../../models/view/collectionView';\nimport { FolderView } from '../../models/view/folderView';\n\nimport { TreeNode } from '../../models/domain/treeNode';\n\nimport { CollectionService } from '../../abstractions/collection.service';\nimport { FolderService } from '../../abstractions/folder.service';\nimport { StorageService } from '../../abstractions/storage.service';\nimport { UserService } from '../../abstractions/user.service';\n\nimport { ConstantsService } from '../../services/constants.service';\n\n@Directive()\nexport class GroupingsComponent {\n @Input() showFolders = true;\n @Input() showCollections = true;\n @Input() showFavorites = true;\n @Input() showTrash = true;\n\n @Output() onAllClicked = new EventEmitter();\n @Output() onFavoritesClicked = new EventEmitter();\n @Output() onTrashClicked = new EventEmitter();\n @Output() onCipherTypeClicked = new EventEmitter();\n @Output() onFolderClicked = new EventEmitter();\n @Output() onAddFolder = new EventEmitter();\n @Output() onEditFolder = new EventEmitter();\n @Output() onCollectionClicked = new EventEmitter();\n\n folders: FolderView[];\n nestedFolders: TreeNode[];\n collections: CollectionView[];\n nestedCollections: TreeNode[];\n loaded: boolean = false;\n cipherType = CipherType;\n selectedAll: boolean = false;\n selectedFavorites: boolean = false;\n selectedTrash: boolean = false;\n selectedType: CipherType = null;\n selectedFolder: boolean = false;\n selectedFolderId: string = null;\n selectedCollectionId: string = null;\n\n private collapsedGroupings: Set;\n private collapsedGroupingsKey: string;\n\n constructor(protected collectionService: CollectionService, protected folderService: FolderService,\n protected storageService: StorageService, protected userService: UserService) { }\n\n async load(setLoaded = true) {\n const userId = await this.userService.getUserId();\n this.collapsedGroupingsKey = ConstantsService.collapsedGroupingsKey + '_' + userId;\n const collapsedGroupings = await this.storageService.get(this.collapsedGroupingsKey);\n if (collapsedGroupings == null) {\n this.collapsedGroupings = new Set();\n } else {\n this.collapsedGroupings = new Set(collapsedGroupings);\n }\n\n await this.loadFolders();\n await this.loadCollections();\n\n if (setLoaded) {\n this.loaded = true;\n }\n }\n\n async loadCollections(organizationId?: string) {\n if (!this.showCollections) {\n return;\n }\n const collections = await this.collectionService.getAllDecrypted();\n if (organizationId != null) {\n this.collections = collections.filter(c => c.organizationId === organizationId);\n } else {\n this.collections = collections;\n }\n this.nestedCollections = await this.collectionService.getAllNested(this.collections);\n }\n\n async loadFolders() {\n if (!this.showFolders) {\n return;\n }\n this.folders = await this.folderService.getAllDecrypted();\n this.nestedFolders = await this.folderService.getAllNested();\n }\n\n selectAll() {\n this.clearSelections();\n this.selectedAll = true;\n this.onAllClicked.emit();\n }\n\n selectFavorites() {\n this.clearSelections();\n this.selectedFavorites = true;\n this.onFavoritesClicked.emit();\n }\n\n selectTrash() {\n this.clearSelections();\n this.selectedTrash = true;\n this.onTrashClicked.emit();\n }\n\n selectType(type: CipherType) {\n this.clearSelections();\n this.selectedType = type;\n this.onCipherTypeClicked.emit(type);\n }\n\n selectFolder(folder: FolderView) {\n this.clearSelections();\n this.selectedFolder = true;\n this.selectedFolderId = folder.id;\n this.onFolderClicked.emit(folder);\n }\n\n addFolder() {\n this.onAddFolder.emit();\n }\n\n editFolder(folder: FolderView) {\n this.onEditFolder.emit(folder);\n }\n\n selectCollection(collection: CollectionView) {\n this.clearSelections();\n this.selectedCollectionId = collection.id;\n this.onCollectionClicked.emit(collection);\n }\n\n clearSelections() {\n this.selectedAll = false;\n this.selectedFavorites = false;\n this.selectedTrash = false;\n this.selectedType = null;\n this.selectedFolder = false;\n this.selectedFolderId = null;\n this.selectedCollectionId = null;\n }\n\n collapse(grouping: FolderView | CollectionView, idPrefix = '') {\n if (grouping.id == null) {\n return;\n }\n const id = idPrefix + grouping.id;\n if (this.isCollapsed(grouping, idPrefix)) {\n this.collapsedGroupings.delete(id);\n } else {\n this.collapsedGroupings.add(id);\n }\n this.storageService.save(this.collapsedGroupingsKey, this.collapsedGroupings);\n }\n\n isCollapsed(grouping: FolderView | CollectionView, idPrefix = '') {\n return this.collapsedGroupings.has(idPrefix + grouping.id);\n }\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendAccessResponse } from '../response/sendAccessResponse';\n\nimport { SendAccessView } from '../view/sendAccessView';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\nimport { SendFile } from './sendFile';\nimport { SendText } from './sendText';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class SendAccess extends Domain {\n id: string;\n type: SendType;\n name: CipherString;\n file: SendFile;\n text: SendText;\n expirationDate: Date;\n creatorIdentifier: string;\n\n constructor(obj?: SendAccessResponse, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n name: null,\n expirationDate: null,\n creatorIdentifier: null,\n }, alreadyEncrypted, ['id', 'expirationDate', 'creatorIdentifier']);\n\n this.type = obj.type;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendText(obj.text, alreadyEncrypted);\n break;\n case SendType.File:\n this.file = new SendFile(obj.file, alreadyEncrypted);\n break;\n default:\n break;\n }\n }\n\n async decrypt(key: SymmetricCryptoKey): Promise {\n const model = new SendAccessView(this);\n\n await this.decryptObj(model, {\n name: null,\n }, null, key);\n\n switch (this.type) {\n case SendType.File:\n model.file = await this.file.decrypt(key);\n break;\n case SendType.Text:\n model.text = await this.text.decrypt(key);\n break;\n default:\n break;\n }\n\n return model;\n }\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendAccess } from '../domain/sendAccess';\n\nimport { SendFileView } from './sendFileView';\nimport { SendTextView } from './sendTextView';\nimport { View } from './view';\n\nexport class SendAccessView implements View {\n id: string = null;\n name: string = null;\n type: SendType = null;\n text = new SendTextView();\n file = new SendFileView();\n expirationDate: Date = null;\n creatorIdentifier: string = null;\n\n constructor(s?: SendAccess) {\n if (!s) {\n return;\n }\n\n this.id = s.id;\n this.type = s.type;\n this.expirationDate = s.expirationDate;\n this.creatorIdentifier = s.creatorIdentifier;\n }\n}\n","export class SendAccessRequest {\n password: string;\n}\n","import {\n NgZone,\n OnInit,\n} from '@angular/core';\n\nimport { OrganizationUserStatusType } from '../../../enums/organizationUserStatusType';\nimport { PolicyType } from '../../../enums/policyType';\nimport { SendType } from '../../../enums/sendType';\n\nimport { SendView } from '../../../models/view/sendView';\n\nimport { EnvironmentService } from '../../../abstractions/environment.service';\nimport { I18nService } from '../../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../../abstractions/platformUtils.service';\nimport { PolicyService } from '../../../abstractions/policy.service';\nimport { SearchService } from '../../../abstractions/search.service';\nimport { SendService } from '../../../abstractions/send.service';\nimport { UserService } from '../../../abstractions/user.service';\n\nexport class SendComponent implements OnInit {\n\n disableSend = false;\n sendType = SendType;\n loaded = false;\n loading = true;\n refreshing = false;\n expired: boolean = false;\n type: SendType = null;\n sends: SendView[] = [];\n filteredSends: SendView[] = [];\n searchText: string;\n selectedType: SendType;\n selectedAll: boolean;\n searchPlaceholder: string;\n filter: (cipher: SendView) => boolean;\n searchPending = false;\n hasSearched = false; // search() function called - returns true if text qualifies for search\n\n actionPromise: any;\n onSuccessfulRemovePassword: () => Promise;\n onSuccessfulDelete: () => Promise;\n onSuccessfulLoad: () => Promise;\n\n private searchTimeout: any;\n\n constructor(protected sendService: SendService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected environmentService: EnvironmentService,\n protected ngZone: NgZone, protected searchService: SearchService,\n protected policyService: PolicyService, protected userService: UserService) { }\n\n async ngOnInit() {\n const policies = await this.policyService.getAll(PolicyType.DisableSend);\n const organizations = await this.userService.getAllOrganizations();\n this.disableSend = organizations.some(o => {\n return o.enabled &&\n o.status === OrganizationUserStatusType.Confirmed &&\n o.usePolicies &&\n !o.canManagePolicies &&\n policies.some(p => p.organizationId === o.id && p.enabled);\n });\n }\n\n async load(filter: (send: SendView) => boolean = null) {\n this.loading = true;\n const sends = await this.sendService.getAllDecrypted();\n this.sends = sends;\n if (this.onSuccessfulLoad != null) {\n await this.onSuccessfulLoad();\n } else {\n // Default action\n this.selectAll();\n }\n this.loading = false;\n this.loaded = true;\n }\n\n async reload(filter: (send: SendView) => boolean = null) {\n this.loaded = false;\n this.sends = [];\n await this.load(filter);\n }\n\n async refresh() {\n try {\n this.refreshing = true;\n await this.reload(this.filter);\n } finally {\n this.refreshing = false;\n }\n }\n\n async applyFilter(filter: (send: SendView) => boolean = null) {\n this.filter = filter;\n await this.search(null);\n }\n\n async search(timeout: number = null) {\n this.searchPending = false;\n if (this.searchTimeout != null) {\n clearTimeout(this.searchTimeout);\n }\n if (timeout == null) {\n this.hasSearched = this.searchService.isSearchable(this.searchText);\n this.filteredSends = this.sends.filter(s => this.filter == null || this.filter(s));\n this.applyTextSearch();\n return;\n }\n this.searchPending = true;\n this.searchTimeout = setTimeout(async () => {\n this.hasSearched = this.searchService.isSearchable(this.searchText);\n this.filteredSends = this.sends.filter(s => this.filter == null || this.filter(s));\n this.applyTextSearch();\n this.searchPending = false;\n }, timeout);\n }\n\n async removePassword(s: SendView): Promise {\n if (this.actionPromise != null || s.password == null) {\n return;\n }\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('removePasswordConfirmation'),\n this.i18nService.t('removePassword'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.sendService.removePasswordWithServer(s.id);\n await this.actionPromise;\n if (this.onSuccessfulRemovePassword != null) {\n this.onSuccessfulRemovePassword();\n } else {\n // Default actions\n this.platformUtilsService.showToast('success', null, this.i18nService.t('removedPassword'));\n await this.load();\n }\n } catch { }\n this.actionPromise = null;\n }\n\n async delete(s: SendView): Promise {\n if (this.actionPromise != null) {\n return false;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteSendConfirmation'),\n this.i18nService.t('deleteSend'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.sendService.deleteWithServer(s.id);\n await this.actionPromise;\n\n if (this.onSuccessfulDelete != null) {\n this.onSuccessfulDelete();\n } else {\n // Default actions\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedSend'));\n await this.refresh();\n }\n } catch { }\n this.actionPromise = null;\n return true;\n }\n\n copy(s: SendView) {\n let sendLinkBaseUrl = 'https://send.bitwarden.com/#';\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n if (webVaultUrl != null) {\n sendLinkBaseUrl = webVaultUrl + '/#/send/';\n }\n const link = sendLinkBaseUrl + s.accessId + '/' + s.urlB64Key;\n this.platformUtilsService.copyToClipboard(link);\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t('valueCopied', this.i18nService.t('sendLink')));\n }\n\n searchTextChanged() {\n this.search(200);\n }\n\n selectAll() {\n this.clearSelections();\n this.selectedAll = true;\n this.applyFilter(null);\n }\n\n selectType(type: SendType) {\n this.clearSelections();\n this.selectedType = type;\n this.applyFilter(s => s.type === type);\n }\n\n clearSelections() {\n this.selectedAll = false;\n this.selectedType = null;\n }\n\n private applyTextSearch() {\n if (this.searchText != null) {\n this.filteredSends = this.searchService.searchSends(this.filteredSends, this.searchText);\n }\n }\n}\n","import { DatePipe } from '@angular/common';\n\nimport {\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { OrganizationUserStatusType } from '../../../enums/organizationUserStatusType';\nimport { PolicyType } from '../../../enums/policyType';\nimport { SendType } from '../../../enums/sendType';\n\nimport { EnvironmentService } from '../../../abstractions/environment.service';\nimport { I18nService } from '../../../abstractions/i18n.service';\nimport { MessagingService } from '../../../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../../../abstractions/platformUtils.service';\nimport { PolicyService } from '../../../abstractions/policy.service';\nimport { SendService } from '../../../abstractions/send.service';\nimport { UserService } from '../../../abstractions/user.service';\n\nimport { SendFileView } from '../../../models/view/sendFileView';\nimport { SendTextView } from '../../../models/view/sendTextView';\nimport { SendView } from '../../../models/view/sendView';\n\nimport { Send } from '../../../models/domain/send';\n\n// TimeOption is used for the dropdown implementation of custom times\n// Standard = displayed time; Military = stored time\ninterface TimeOption {\n standard: string;\n military: string;\n}\n\nenum DateField {\n DeletionDate = 'deletion',\n ExpriationDate = 'expiration',\n}\n\nexport class AddEditComponent implements OnInit {\n @Input() sendId: string;\n @Input() type: SendType;\n\n @Output() onSavedSend = new EventEmitter();\n @Output() onDeletedSend = new EventEmitter();\n @Output() onCancelled = new EventEmitter();\n\n copyLink = false;\n disableSend = false;\n send: SendView;\n deletionDate: string;\n deletionDateFallback: string;\n deletionTimeFallback: string;\n expirationDate: string = null;\n expirationDateFallback: string;\n expirationTimeFallback: string;\n hasPassword: boolean;\n password: string;\n showPassword = false;\n formPromise: Promise;\n deletePromise: Promise;\n sendType = SendType;\n typeOptions: any[];\n deletionDateOptions: any[];\n expirationDateOptions: any[];\n deletionDateSelect = 168;\n expirationDateSelect: number = null;\n canAccessPremium = true;\n premiumRequiredAlertShown = false;\n showOptions = false;\n\n safariDeletionTime: string;\n safariExpirationTime: string;\n safariDeletionTimeOptions: TimeOption[];\n safariExpirationTimeOptions: TimeOption[];\n\n private sendLinkBaseUrl: string;\n\n constructor(protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected environmentService: EnvironmentService, protected datePipe: DatePipe,\n protected sendService: SendService, protected userService: UserService,\n protected messagingService: MessagingService, protected policyService: PolicyService) {\n this.typeOptions = [\n { name: i18nService.t('sendTypeFile'), value: SendType.File },\n { name: i18nService.t('sendTypeText'), value: SendType.Text },\n ];\n this.deletionDateOptions = this.expirationDateOptions = [\n { name: i18nService.t('oneHour'), value: 1 },\n { name: i18nService.t('oneDay'), value: 24 },\n { name: i18nService.t('days', '2'), value: 48 },\n { name: i18nService.t('days', '3'), value: 72 },\n { name: i18nService.t('days', '7'), value: 168 },\n { name: i18nService.t('days', '30'), value: 720 },\n { name: i18nService.t('custom'), value: 0 },\n ];\n this.expirationDateOptions = [\n { name: i18nService.t('never'), value: null },\n ].concat([...this.deletionDateOptions]);\n\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n if (webVaultUrl == null) {\n this.sendLinkBaseUrl = 'https://send.bitwarden.com/#';\n } else {\n this.sendLinkBaseUrl = webVaultUrl + '/#/send/';\n }\n }\n\n get link(): string {\n if (this.send.id != null && this.send.accessId != null) {\n return this.sendLinkBaseUrl + this.send.accessId + '/' + this.send.urlB64Key;\n }\n return null;\n }\n\n get isSafari() {\n return this.platformUtilsService.isSafari();\n }\n\n get isDateTimeLocalSupported(): boolean {\n return !(this.platformUtilsService.isFirefox() || this.platformUtilsService.isSafari());\n }\n\n async ngOnInit() {\n await this.load();\n }\n\n get editMode(): boolean {\n return this.sendId != null;\n }\n\n get title(): string {\n return this.i18nService.t(\n this.editMode ?\n 'editSend' :\n 'createSend'\n );\n }\n\n get expirationDateTimeFallback() {\n return this.nullOrWhiteSpaceCount([this.expirationDateFallback, this.expirationTimeFallback]) > 0 ?\n null :\n `${this.formatDateFallbacks(this.expirationDateFallback)}T${this.expirationTimeFallback}`;\n }\n\n get deletionDateTimeFallback() {\n return this.nullOrWhiteSpaceCount([this.deletionDateFallback, this.deletionTimeFallback]) > 0 ?\n null :\n `${this.formatDateFallbacks(this.deletionDateFallback)}T${this.deletionTimeFallback}`;\n }\n\n async load() {\n const policies = await this.policyService.getAll(PolicyType.DisableSend);\n const organizations = await this.userService.getAllOrganizations();\n this.disableSend = organizations.some(o => {\n return o.enabled &&\n o.status === OrganizationUserStatusType.Confirmed &&\n o.usePolicies &&\n !o.canManagePolicies &&\n policies.some(p => p.organizationId === o.id && p.enabled);\n });\n\n this.canAccessPremium = await this.userService.canAccessPremium();\n if (!this.canAccessPremium) {\n this.type = SendType.Text;\n }\n\n if (this.send == null) {\n if (this.editMode) {\n const send = await this.loadSend();\n this.send = await send.decrypt();\n } else {\n this.send = new SendView();\n this.send.type = this.type == null ? SendType.File : this.type;\n this.send.file = new SendFileView();\n this.send.text = new SendTextView();\n this.send.deletionDate = new Date();\n this.send.deletionDate.setDate(this.send.deletionDate.getDate() + 7);\n }\n }\n\n this.hasPassword = this.send.password != null && this.send.password.trim() !== '';\n\n // Parse dates\n if (!this.isDateTimeLocalSupported) {\n const deletionDateParts = this.dateToSplitString(this.send.deletionDate);\n if (deletionDateParts !== undefined && deletionDateParts.length > 0) {\n this.deletionDateFallback = deletionDateParts[0];\n this.deletionTimeFallback = deletionDateParts[1];\n if (this.isSafari) {\n this.safariDeletionTime = this.deletionTimeFallback;\n }\n }\n\n const expirationDateParts = this.dateToSplitString(this.send.expirationDate);\n if (expirationDateParts !== undefined && expirationDateParts.length > 0) {\n this.expirationDateFallback = expirationDateParts[0];\n this.expirationTimeFallback = expirationDateParts[1];\n if (this.isSafari) {\n this.safariExpirationTime = this.expirationTimeFallback;\n }\n }\n } else {\n this.deletionDate = this.dateToString(this.send.deletionDate);\n this.expirationDate = this.dateToString(this.send.expirationDate);\n }\n\n if (this.isSafari) {\n this.safariDeletionTimeOptions = this.safariTimeOptions(DateField.DeletionDate);\n this.safariExpirationTimeOptions = this.safariTimeOptions(DateField.ExpriationDate);\n }\n }\n\n async submit(): Promise {\n if (!this.isDateTimeLocalSupported) {\n if (this.isSafari) {\n this.expirationTimeFallback = this.safariExpirationTime ?? this.expirationTimeFallback;\n this.deletionTimeFallback = this.safariDeletionTime ?? this.deletionTimeFallback;\n }\n this.deletionDate = this.deletionDateTimeFallback;\n if (this.expirationDateTimeFallback != null && isNaN(Date.parse(this.expirationDateTimeFallback))) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('expirationDateIsInvalid'));\n return;\n }\n if (isNaN(Date.parse(this.deletionDateTimeFallback))) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('deletionDateIsInvalid'));\n return;\n }\n if (this.nullOrWhiteSpaceCount([this.expirationDateFallback, this.expirationTimeFallback]) === 1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('expirationDateAndTimeRequired'));\n return;\n }\n if (this.editMode || this.expirationDateSelect === 0) {\n this.expirationDate = this.expirationDateTimeFallback;\n }\n }\n\n if (this.disableSend) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('sendDisabledWarning'));\n return false;\n }\n\n if (this.send.name == null || this.send.name === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nameRequired'));\n return false;\n }\n\n let file: File = null;\n if (this.send.type === SendType.File && !this.editMode) {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n file = files[0];\n if (file.size > 104857600) { // 100 MB\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('maxFileSize'));\n return;\n }\n }\n\n if (!this.editMode) {\n const now = new Date();\n if (this.deletionDateSelect > 0) {\n const d = new Date();\n d.setHours(now.getHours() + this.deletionDateSelect);\n this.deletionDate = this.dateToString(d);\n }\n if (this.expirationDateSelect != null && this.expirationDateSelect > 0) {\n const d = new Date();\n d.setHours(now.getHours() + this.expirationDateSelect);\n this.expirationDate = this.dateToString(d);\n }\n }\n\n if (this.password != null && this.password.trim() === '') {\n this.password = null;\n }\n\n const encSend = await this.encryptSend(file);\n try {\n this.formPromise = this.sendService.saveWithServer(encSend);\n await this.formPromise;\n if (this.send.id == null) {\n this.send.id = encSend[0].id;\n }\n if (this.send.accessId == null) {\n this.send.accessId = encSend[0].accessId;\n }\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.editMode ? 'editedSend' : 'createdSend'));\n this.onSavedSend.emit(this.send);\n if (this.copyLink) {\n this.copyLinkToClipboard(this.link);\n }\n return true;\n } catch { }\n\n return false;\n }\n\n clearExpiration() {\n this.expirationDate = null;\n this.expirationDateFallback = null;\n this.expirationTimeFallback = null;\n this.safariExpirationTime = null;\n }\n\n copyLinkToClipboard(link: string) {\n if (link != null) {\n this.platformUtilsService.copyToClipboard(link);\n }\n }\n\n async delete(): Promise {\n if (this.deletePromise != null) {\n return false;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteSendConfirmation'),\n this.i18nService.t('deleteSend'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.sendService.deleteWithServer(this.send.id);\n await this.deletePromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedSend'));\n await this.load();\n this.onDeletedSend.emit(this.send);\n return true;\n } catch { }\n\n return false;\n }\n\n typeChanged() {\n if (!this.canAccessPremium && this.send.type === SendType.File && !this.premiumRequiredAlertShown) {\n this.premiumRequiredAlertShown = true;\n this.messagingService.send('premiumRequired');\n }\n }\n\n toggleOptions() {\n this.showOptions = !this.showOptions;\n }\n\n expirationDateFallbackChanged() {\n this.isSafari ?\n this.safariExpirationTime = this.safariExpirationTime ?? '00:00' :\n this.expirationTimeFallback = this.expirationTimeFallback ?? this.datePipe.transform(new Date(), 'HH:mm');\n }\n\n protected async loadSend(): Promise {\n return this.sendService.get(this.sendId);\n }\n\n protected async encryptSend(file: File): Promise<[Send, ArrayBuffer]> {\n const sendData = await this.sendService.encrypt(this.send, file, this.password, null);\n\n // Parse dates\n try {\n sendData[0].deletionDate = this.deletionDate == null ? null : new Date(this.deletionDate);\n } catch {\n sendData[0].deletionDate = null;\n }\n try {\n sendData[0].expirationDate = this.expirationDate == null ? null : new Date(this.expirationDate);\n } catch {\n sendData[0].expirationDate = null;\n }\n\n return sendData;\n }\n\n protected dateToString(d: Date) {\n return d == null ? null : this.datePipe.transform(d, 'yyyy-MM-ddTHH:mm');\n }\n\n protected formatDateFallbacks(dateString: string) {\n try {\n // The Firefox date picker doesn't supply a time, safari's polyfill does.\n // Unknown if Safari's native date picker will or not when it releases.\n if (!this.isSafari) {\n dateString += ' 00:00';\n }\n return this.datePipe.transform(new Date(dateString), 'yyyy-MM-dd');\n } catch {\n // this should never happen\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('dateParsingError'));\n }\n }\n\n protected dateToSplitString(d: Date) {\n if (d != null) {\n const date = !this.isSafari ?\n this.datePipe.transform(d, 'yyyy-MM-dd') :\n this.datePipe.transform(d, 'MM/dd/yyyy');\n const time = this.datePipe.transform(d, 'HH:mm');\n return [date, time];\n }\n }\n\n protected togglePasswordVisible() {\n this.showPassword = !this.showPassword;\n document.getElementById('password').focus();\n }\n\n protected nullOrWhiteSpaceCount(strarray: string[]): number {\n return strarray.filter(str => str == null || str.trim() === '').length;\n }\n\n protected safariTimeOptions(field: DateField): TimeOption[] {\n // init individual arrays for major sort groups\n const noon: TimeOption[] = [];\n const midnight: TimeOption[] = [];\n const ams: TimeOption[] = [];\n const pms: TimeOption[] = [];\n\n // determine minute skip (5 min, 10 min, 15 min, etc.)\n const minuteIncrementer = 15;\n\n // loop through each hour on a 12 hour system\n for (let h = 1; h <= 12; h++) {\n // loop through each minute in the hour using the skip to incriment\n for (let m = 0; m < 60; m += minuteIncrementer) {\n // init the final strings that will be added to the lists\n let hour = h.toString();\n let minutes = m.toString();\n\n // add prepending 0s to single digit hours/minutes\n if (h < 10) {\n hour = '0' + hour;\n }\n if (m < 10) {\n minutes = '0' + minutes;\n }\n\n // build time strings and push to relevant sort groups\n if (h === 12) {\n const midnightOption: TimeOption = {\n standard: `${hour}:${minutes} AM`,\n military: `00:${minutes}`,\n };\n midnight.push(midnightOption);\n\n const noonOption: TimeOption = {\n standard: `${hour}:${minutes} PM`,\n military: `${hour}:${minutes}`,\n };\n noon.push(noonOption);\n } else {\n const amOption: TimeOption = {\n standard: `${hour}:${minutes} AM`,\n military: `${hour}:${minutes}`,\n };\n ams.push(amOption);\n\n const pmOption: TimeOption = {\n standard: `${hour}:${minutes} PM`,\n military: `${h + 12}:${minutes}`,\n };\n pms.push(pmOption);\n }\n }\n }\n\n // bring all the arrays together in the right order\n const validTimes = [...midnight, ...ams, ...noon, ...pms];\n\n // determine if an unsupported value already exists on the send & add that to the top of the option list\n // example: if the Send was created with a different client\n if (field === DateField.ExpriationDate && this.expirationDateTimeFallback != null && this.editMode) {\n const previousValue: TimeOption = {\n standard: this.datePipe.transform(this.expirationDateTimeFallback, 'hh:mm a'),\n military: this.datePipe.transform(this.expirationDateTimeFallback, 'HH:mm'),\n };\n return [previousValue, { standard: null, military: null }, ...validTimes];\n } else if (field === DateField.DeletionDate && this.deletionDateTimeFallback != null && this.editMode) {\n const previousValue: TimeOption = {\n standard: this.datePipe.transform(this.deletionDateTimeFallback, 'hh:mm a'),\n military: this.datePipe.transform(this.deletionDateTimeFallback, 'HH:mm'),\n };\n return [previousValue, ...validTimes];\n } else {\n return [{ standard: null, military: null }, ...validTimes];\n }\n }\n}\n","export class UpdateProfileRequest {\n name: string;\n masterPasswordHint: string;\n culture = 'en-US'; // deprecated\n\n constructor(name: string, masterPasswordHint: string) {\n this.name = name;\n this.masterPasswordHint = masterPasswordHint ? masterPasswordHint : null;\n }\n}\n","import { EmailTokenRequest } from './emailTokenRequest';\n\nexport class EmailRequest extends EmailTokenRequest {\n newMasterPasswordHash: string;\n token: string;\n key: string;\n}\n","import { PasswordRequest } from './passwordRequest';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class KdfRequest extends PasswordRequest {\n kdf: KdfType;\n kdfIterations: number;\n}\n","export class UpdateDomainsRequest {\n equivalentDomains: string[][];\n excludedGlobalEquivalentDomains: number[];\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PasswordGenerationService } from '../../abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nimport { PasswordGeneratorPolicyOptions } from '../../models/domain/passwordGeneratorPolicyOptions';\n\n@Directive()\nexport class PasswordGeneratorComponent implements OnInit {\n @Input() showSelect: boolean = false;\n @Output() onSelected = new EventEmitter();\n\n options: any = {};\n password: string = '-';\n showOptions = false;\n avoidAmbiguous = false;\n enforcedPolicyOptions: PasswordGeneratorPolicyOptions;\n\n constructor(protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService, protected i18nService: I18nService,\n private win: Window) { }\n\n async ngOnInit() {\n const optionsResponse = await this.passwordGenerationService.getOptions();\n this.options = optionsResponse[0];\n this.enforcedPolicyOptions = optionsResponse[1];\n this.avoidAmbiguous = !this.options.ambiguous;\n this.options.type = this.options.type === 'passphrase' ? 'passphrase' : 'password';\n this.password = await this.passwordGenerationService.generatePassword(this.options);\n this.platformUtilsService.eventTrack('Generated Password');\n await this.passwordGenerationService.addHistory(this.password);\n }\n\n async sliderChanged() {\n this.saveOptions(false);\n await this.passwordGenerationService.addHistory(this.password);\n this.platformUtilsService.eventTrack('Regenerated Password');\n }\n\n async sliderInput() {\n this.normalizeOptions();\n this.password = await this.passwordGenerationService.generatePassword(this.options);\n }\n\n async saveOptions(regenerate: boolean = true) {\n this.normalizeOptions();\n await this.passwordGenerationService.saveOptions(this.options);\n\n if (regenerate) {\n await this.regenerate();\n }\n }\n\n async regenerate() {\n this.password = await this.passwordGenerationService.generatePassword(this.options);\n await this.passwordGenerationService.addHistory(this.password);\n this.platformUtilsService.eventTrack('Regenerated Password');\n }\n\n copy() {\n this.platformUtilsService.eventTrack('Copied Generated Password');\n const copyOptions = this.win != null ? { window: this.win } : null;\n this.platformUtilsService.copyToClipboard(this.password, copyOptions);\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t('password')));\n }\n\n select() {\n this.platformUtilsService.eventTrack('Selected Generated Password');\n this.onSelected.emit(this.password);\n }\n\n toggleOptions() {\n this.showOptions = !this.showOptions;\n }\n\n private normalizeOptions() {\n // Application level normalize options depedent on class variables\n this.options.ambiguous = !this.avoidAmbiguous;\n\n if (!this.options.uppercase && !this.options.lowercase && !this.options.number && !this.options.special) {\n this.options.lowercase = true;\n if (this.win != null) {\n const lowercase = this.win.document.querySelector('#lowercase') as HTMLInputElement;\n if (lowercase) {\n lowercase.checked = true;\n }\n }\n }\n\n this.passwordGenerationService.normalizeOptions(this.options, this.enforcedPolicyOptions);\n }\n}\n","import { OnInit } from '@angular/core';\n\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PasswordGenerationService } from '../../abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nimport { GeneratedPasswordHistory } from '../../models/domain/generatedPasswordHistory';\n\nexport class PasswordGeneratorHistoryComponent implements OnInit {\n history: GeneratedPasswordHistory[] = [];\n\n constructor(protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService, protected i18nService: I18nService,\n private win: Window) { }\n\n async ngOnInit() {\n this.history = await this.passwordGenerationService.getHistory();\n }\n\n clear() {\n this.history = [];\n this.passwordGenerationService.clear();\n }\n\n copy(password: string) {\n this.platformUtilsService.eventTrack('Copied Historical Password');\n const copyOptions = this.win != null ? { window: this.win } : null;\n this.platformUtilsService.copyToClipboard(password, copyOptions);\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t('password')));\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { FolderService } from '../../abstractions/folder.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nimport { FolderView } from '../../models/view/folderView';\n\n@Directive()\nexport class FolderAddEditComponent implements OnInit {\n @Input() folderId: string;\n @Output() onSavedFolder = new EventEmitter();\n @Output() onDeletedFolder = new EventEmitter();\n\n editMode: boolean = false;\n folder: FolderView = new FolderView();\n title: string;\n formPromise: Promise;\n deletePromise: Promise;\n\n constructor(protected folderService: FolderService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n await this.init();\n }\n\n async submit(): Promise {\n if (this.folder.name == null || this.folder.name === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nameRequired'));\n return false;\n }\n\n try {\n const folder = await this.folderService.encrypt(this.folder);\n this.formPromise = this.folderService.saveWithServer(folder);\n await this.formPromise;\n this.platformUtilsService.eventTrack(this.editMode ? 'Edited Folder' : 'Added Folder');\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.editMode ? 'editedFolder' : 'addedFolder'));\n this.onSavedFolder.emit(this.folder);\n return true;\n } catch { }\n\n return false;\n }\n\n async delete(): Promise {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteFolderConfirmation'), this.i18nService.t('deleteFolder'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.folderService.deleteWithServer(this.folder.id);\n await this.deletePromise;\n this.platformUtilsService.eventTrack('Deleted Folder');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedFolder'));\n this.onDeletedFolder.emit(this.folder);\n } catch { }\n\n return true;\n }\n\n protected async init() {\n this.editMode = this.folderId != null;\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editFolder');\n const folder = await this.folderService.get(this.folderId);\n this.folder = await folder.decrypt();\n } else {\n this.title = this.i18nService.t('addFolder');\n }\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\n\nimport { CipherService } from '../../abstractions/cipher.service';\nimport { CollectionService } from '../../abstractions/collection.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { UserService } from '../../abstractions/user.service';\n\nimport { Organization } from '../../models/domain/organization';\nimport { CipherView } from '../../models/view/cipherView';\nimport { CollectionView } from '../../models/view/collectionView';\n\nimport { Utils } from '../../misc/utils';\n\n@Directive()\nexport class ShareComponent implements OnInit {\n @Input() cipherId: string;\n @Input() organizationId: string;\n @Output() onSharedCipher = new EventEmitter();\n\n formPromise: Promise;\n cipher: CipherView;\n collections: CollectionView[] = [];\n organizations: Organization[] = [];\n\n protected writeableCollections: CollectionView[] = [];\n\n constructor(protected collectionService: CollectionService, protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService, protected userService: UserService,\n protected cipherService: CipherService) { }\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n const allCollections = await this.collectionService.getAllDecrypted();\n this.writeableCollections = allCollections.map(c => c).filter(c => !c.readOnly);\n const orgs = await this.userService.getAllOrganizations();\n this.organizations = orgs.sort(Utils.getSortFunction(this.i18nService, 'name'))\n .filter(o => o.enabled && o.status === OrganizationUserStatusType.Confirmed);\n\n const cipherDomain = await this.cipherService.get(this.cipherId);\n this.cipher = await cipherDomain.decrypt();\n if (this.organizationId == null && this.organizations.length > 0) {\n this.organizationId = this.organizations[0].id;\n }\n this.filterCollections();\n }\n\n filterCollections() {\n this.writeableCollections.forEach(c => (c as any).checked = false);\n if (this.organizationId == null || this.writeableCollections.length === 0) {\n this.collections = [];\n } else {\n this.collections = this.writeableCollections.filter(c => c.organizationId === this.organizationId);\n }\n }\n\n async submit(): Promise {\n const selectedCollectionIds = this.collections\n .filter(c => !!(c as any).checked)\n .map(c => c.id);\n if (selectedCollectionIds.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectOneCollection'));\n return;\n }\n\n const cipherDomain = await this.cipherService.get(this.cipherId);\n const cipherView = await cipherDomain.decrypt();\n\n try {\n this.formPromise = this.cipherService.shareWithServer(cipherView, this.organizationId,\n selectedCollectionIds).then(async () => {\n this.onSharedCipher.emit();\n this.platformUtilsService.eventTrack('Shared Cipher');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('sharedItem'));\n });\n await this.formPromise;\n return true;\n } catch { }\n return false;\n }\n\n get canSave() {\n if (this.collections != null) {\n for (let i = 0; i < this.collections.length; i++) {\n if ((this.collections[i] as any).checked) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","export { AttachmentData } from './attachmentData';\nexport { CardData } from './cardData';\nexport { CipherData } from './cipherData';\nexport { CollectionData } from './collectionData';\nexport { FieldData } from './fieldData';\nexport { FolderData } from './folderData';\nexport { IdentityData } from './identityData';\nexport { LoginData } from './loginData';\nexport { LoginUriData } from './loginUriData';\nexport { SecureNoteData } from './secureNoteData';\n","export { Attachment } from './attachment';\nexport { AuthResult } from './authResult';\nexport { Card } from './card';\nexport { Cipher } from './cipher';\nexport { CipherString } from './cipherString';\nexport { Collection } from './collection';\nexport { EncryptedObject } from './encryptedObject';\nexport { EnvironmentUrls } from './environmentUrls';\nexport { Field } from './field';\nexport { Folder } from './folder';\nexport { Identity } from './identity';\nexport { Login } from './login';\nexport { LoginUri } from './loginUri';\nexport { GeneratedPasswordHistory } from './generatedPasswordHistory';\nexport { SecureNote } from './secureNote';\nexport { SymmetricCryptoKey } from './symmetricCryptoKey';\n","export class EmergencyAccessConfirmRequest {\n key: string;\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class AttachmentResponse extends BaseResponse {\n id: string;\n url: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.url = this.getResponseProperty('Url');\n this.fileName = this.getResponseProperty('FileName');\n this.key = this.getResponseProperty('Key');\n this.size = this.getResponseProperty('Size');\n this.sizeName = this.getResponseProperty('SizeName');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class PasswordHistoryResponse extends BaseResponse {\n password: string;\n lastUsedDate: string;\n\n constructor(response: any) {\n super(response);\n this.password = this.getResponseProperty('Password');\n this.lastUsedDate = this.getResponseProperty('LastUsedDate');\n }\n}\n","import { EmergencyAccessType } from '../../enums/emergencyAccessType';\n\nexport class EmergencyAccessInviteRequest {\n email: string;\n type: EmergencyAccessType;\n waitTimeDays: number;\n}\n","export class EmergencyAccessPasswordRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","import {\n APP_INITIALIZER,\n LOCALE_ID,\n NgModule,\n} from '@angular/core';\n\nimport { ToasterModule } from 'angular2-toaster';\n\nimport { BroadcasterMessagingService } from '../../services/broadcasterMessaging.service';\nimport { HtmlStorageService } from '../../services/htmlStorage.service';\nimport { I18nService } from '../../services/i18n.service';\nimport { MemoryStorageService } from '../../services/memoryStorage.service';\nimport { WebPlatformUtilsService } from '../../services/webPlatformUtils.service';\n\nimport { EventService } from './event.service';\nimport { OrganizationGuardService } from './organization-guard.service';\nimport { OrganizationTypeGuardService } from './organization-type-guard.service';\nimport { RouterService } from './router.service';\nimport { UnauthGuardService } from './unauth-guard.service';\n\nimport { AuthGuardService } from 'jslib/angular/services/auth-guard.service';\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\nimport { ValidationService } from 'jslib/angular/services/validation.service';\n\nimport { Analytics } from 'jslib/misc/analytics';\n\nimport { ApiService } from 'jslib/services/api.service';\nimport { AppIdService } from 'jslib/services/appId.service';\nimport { AuditService } from 'jslib/services/audit.service';\nimport { AuthService } from 'jslib/services/auth.service';\nimport { CipherService } from 'jslib/services/cipher.service';\nimport { CollectionService } from 'jslib/services/collection.service';\nimport { ConsoleLogService } from 'jslib/services/consoleLog.service';\nimport { ConstantsService } from 'jslib/services/constants.service';\nimport { ContainerService } from 'jslib/services/container.service';\nimport { CryptoService } from 'jslib/services/crypto.service';\nimport { EnvironmentService } from 'jslib/services/environment.service';\nimport { EventService as EventLoggingService } from 'jslib/services/event.service';\nimport { ExportService } from 'jslib/services/export.service';\nimport { FolderService } from 'jslib/services/folder.service';\nimport { ImportService } from 'jslib/services/import.service';\nimport { NotificationsService } from 'jslib/services/notifications.service';\nimport { PasswordGenerationService } from 'jslib/services/passwordGeneration.service';\nimport { PolicyService } from 'jslib/services/policy.service';\nimport { SearchService } from 'jslib/services/search.service';\nimport { SendService } from 'jslib/services/send.service';\nimport { SettingsService } from 'jslib/services/settings.service';\nimport { StateService } from 'jslib/services/state.service';\nimport { SyncService } from 'jslib/services/sync.service';\nimport { TokenService } from 'jslib/services/token.service';\nimport { TotpService } from 'jslib/services/totp.service';\nimport { UserService } from 'jslib/services/user.service';\nimport { VaultTimeoutService } from 'jslib/services/vaultTimeout.service';\nimport { WebCryptoFunctionService } from 'jslib/services/webCryptoFunction.service';\n\nimport { ApiService as ApiServiceAbstraction } from 'jslib/abstractions/api.service';\nimport { AppIdService as AppIdServiceAbstraction } from 'jslib/abstractions/appId.service';\nimport { AuditService as AuditServiceAbstraction } from 'jslib/abstractions/audit.service';\nimport { AuthService as AuthServiceAbstraction } from 'jslib/abstractions/auth.service';\nimport { CipherService as CipherServiceAbstraction } from 'jslib/abstractions/cipher.service';\nimport { CollectionService as CollectionServiceAbstraction } from 'jslib/abstractions/collection.service';\nimport { CryptoService as CryptoServiceAbstraction } from 'jslib/abstractions/crypto.service';\nimport { CryptoFunctionService as CryptoFunctionServiceAbstraction } from 'jslib/abstractions/cryptoFunction.service';\nimport { EnvironmentService as EnvironmentServiceAbstraction } from 'jslib/abstractions/environment.service';\nimport { EventService as EventLoggingServiceAbstraction } from 'jslib/abstractions/event.service';\nimport { ExportService as ExportServiceAbstraction } from 'jslib/abstractions/export.service';\nimport { FolderService as FolderServiceAbstraction } from 'jslib/abstractions/folder.service';\nimport { I18nService as I18nServiceAbstraction } from 'jslib/abstractions/i18n.service';\nimport { ImportService as ImportServiceAbstraction } from 'jslib/abstractions/import.service';\nimport { LogService as LogServiceAbstraction } from 'jslib/abstractions/log.service';\nimport { MessagingService as MessagingServiceAbstraction } from 'jslib/abstractions/messaging.service';\nimport { NotificationsService as NotificationsServiceAbstraction } from 'jslib/abstractions/notifications.service';\nimport {\n PasswordGenerationService as PasswordGenerationServiceAbstraction,\n} from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService as PlatformUtilsServiceAbstraction } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService as PolicyServiceAbstraction } from 'jslib/abstractions/policy.service';\nimport { SearchService as SearchServiceAbstraction } from 'jslib/abstractions/search.service';\nimport { SendService as SendServiceAbstraction } from 'jslib/abstractions/send.service';\nimport { SettingsService as SettingsServiceAbstraction } from 'jslib/abstractions/settings.service';\nimport { StateService as StateServiceAbstraction } from 'jslib/abstractions/state.service';\nimport { StorageService as StorageServiceAbstraction } from 'jslib/abstractions/storage.service';\nimport { SyncService as SyncServiceAbstraction } from 'jslib/abstractions/sync.service';\nimport { TokenService as TokenServiceAbstraction } from 'jslib/abstractions/token.service';\nimport { TotpService as TotpServiceAbstraction } from 'jslib/abstractions/totp.service';\nimport { UserService as UserServiceAbstraction } from 'jslib/abstractions/user.service';\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from 'jslib/abstractions/vaultTimeout.service';\n\nconst i18nService = new I18nService(window.navigator.language, 'locales');\nconst stateService = new StateService();\nconst broadcasterService = new BroadcasterService();\nconst messagingService = new BroadcasterMessagingService(broadcasterService);\nconst platformUtilsService = new WebPlatformUtilsService(i18nService, messagingService);\nconst storageService: StorageServiceAbstraction = new HtmlStorageService(platformUtilsService);\nconst secureStorageService: StorageServiceAbstraction = new MemoryStorageService();\nconst cryptoFunctionService: CryptoFunctionServiceAbstraction = new WebCryptoFunctionService(window,\n platformUtilsService);\nconst consoleLogService = new ConsoleLogService(false);\nconst cryptoService = new CryptoService(storageService,\n platformUtilsService.isDev() ? storageService : secureStorageService, cryptoFunctionService, platformUtilsService,\n consoleLogService);\nconst tokenService = new TokenService(storageService);\nconst appIdService = new AppIdService(storageService);\nconst apiService = new ApiService(tokenService, platformUtilsService,\n async (expired: boolean) => messagingService.send('logout', { expired: expired }));\nconst userService = new UserService(tokenService, storageService);\nconst settingsService = new SettingsService(userService, storageService);\nexport let searchService: SearchService = null;\nconst cipherService = new CipherService(cryptoService, userService, settingsService,\n apiService, storageService, i18nService, () => searchService);\nconst folderService = new FolderService(cryptoService, userService, apiService, storageService,\n i18nService, cipherService);\nconst collectionService = new CollectionService(cryptoService, userService, storageService, i18nService);\nsearchService = new SearchService(cipherService, consoleLogService);\nconst policyService = new PolicyService(userService, storageService);\nconst sendService = new SendService(cryptoService, userService, apiService, storageService,\n i18nService, cryptoFunctionService);\nconst vaultTimeoutService = new VaultTimeoutService(cipherService, folderService, collectionService,\n cryptoService, platformUtilsService, storageService, messagingService, searchService, userService, tokenService,\n null, async () => messagingService.send('logout', { expired: false }));\nconst syncService = new SyncService(userService, apiService, settingsService,\n folderService, cipherService, cryptoService, collectionService, storageService, messagingService, policyService,\n sendService, async (expired: boolean) => messagingService.send('logout', { expired: expired }));\nconst passwordGenerationService = new PasswordGenerationService(cryptoService, storageService, policyService);\nconst totpService = new TotpService(storageService, cryptoFunctionService);\nconst containerService = new ContainerService(cryptoService);\nconst authService = new AuthService(cryptoService, apiService,\n userService, tokenService, appIdService, i18nService, platformUtilsService, messagingService, vaultTimeoutService,\n consoleLogService);\nconst exportService = new ExportService(folderService, cipherService, apiService);\nconst importService = new ImportService(cipherService, folderService, apiService, i18nService, collectionService,\n platformUtilsService);\nconst notificationsService = new NotificationsService(userService, syncService, appIdService,\n apiService, vaultTimeoutService, async () => messagingService.send('logout', { expired: true }), consoleLogService);\nconst environmentService = new EnvironmentService(apiService, storageService, notificationsService);\nconst auditService = new AuditService(cryptoFunctionService, apiService);\nconst eventLoggingService = new EventLoggingService(storageService, apiService, userService, cipherService);\n\nconst analytics = new Analytics(window, () => platformUtilsService.isDev() || platformUtilsService.isSelfHost() || true,\n platformUtilsService, storageService, appIdService);\ncontainerService.attachToWindow(window);\n\nexport function initFactory(): Function {\n function getBaseUrl() {\n // If the base URL is `https://bitwarden.example.com/base/path/`,\n // `window.location.href` should have one of the following forms:\n //\n // - `https://bitwarden.example.com/base/path/`\n // - `https://bitwarden.example.com/base/path/#/some/route[?queryParam=...]`\n //\n // We want to get to just `https://bitwarden.example.com/base/path`.\n let baseUrl = window.location.href;\n baseUrl = baseUrl.replace(/#.*/, ''); // Strip off `#` and everything after.\n baseUrl = baseUrl.replace(/\\/+$/, ''); // Trim any trailing `/` chars.\n return baseUrl;\n }\n return async () => {\n await (storageService as HtmlStorageService).init();\n const isDev = false;\n environmentService.baseUrl = getBaseUrl();\n environmentService.webVaultUrl = environmentService.baseUrl;\n environmentService.notificationsUrl = environmentService.baseUrl + '/notifications';\n environmentService.enterpriseUrl = environmentService.baseUrl + '/portal';\n apiService.setUrls({\n base: isDev ? null : environmentService.baseUrl,\n api: isDev ? 'http://localhost:4000' : null,\n identity: isDev ? 'http://localhost:33656' : null,\n events: isDev ? 'http://localhost:46273' : null,\n\n // Uncomment these (and comment out the above) if you want to target production\n // servers for local development.\n\n // base: null,\n // api: 'https://api.bitwarden.com',\n // identity: 'https://identity.bitwarden.com',\n // events: 'https://events.bitwarden.com',\n });\n setTimeout(() => notificationsService.init(environmentService), 3000);\n\n vaultTimeoutService.init(true);\n const locale = await storageService.get(ConstantsService.localeKey);\n await i18nService.init(locale);\n eventLoggingService.init(true);\n authService.init();\n const htmlEl = window.document.documentElement;\n htmlEl.classList.add('locale_' + i18nService.translationLocale);\n let theme = await storageService.get(ConstantsService.themeKey);\n if (theme == null) {\n theme = 'light';\n }\n htmlEl.classList.add('theme_' + theme);\n stateService.save(ConstantsService.disableFaviconKey,\n await storageService.get(ConstantsService.disableFaviconKey));\n stateService.save('enableGravatars', await storageService.get('enableGravatars'));\n };\n}\n\n@NgModule({\n imports: [\n ToasterModule,\n ],\n declarations: [],\n providers: [\n ValidationService,\n AuthGuardService,\n OrganizationGuardService,\n OrganizationTypeGuardService,\n UnauthGuardService,\n RouterService,\n EventService,\n { provide: AuditServiceAbstraction, useValue: auditService },\n { provide: AuthServiceAbstraction, useValue: authService },\n { provide: CipherServiceAbstraction, useValue: cipherService },\n { provide: FolderServiceAbstraction, useValue: folderService },\n { provide: CollectionServiceAbstraction, useValue: collectionService },\n { provide: EnvironmentServiceAbstraction, useValue: environmentService },\n { provide: TotpServiceAbstraction, useValue: totpService },\n { provide: TokenServiceAbstraction, useValue: tokenService },\n { provide: I18nServiceAbstraction, useValue: i18nService },\n { provide: CryptoServiceAbstraction, useValue: cryptoService },\n { provide: PlatformUtilsServiceAbstraction, useValue: platformUtilsService },\n { provide: PasswordGenerationServiceAbstraction, useValue: passwordGenerationService },\n { provide: ApiServiceAbstraction, useValue: apiService },\n { provide: SyncServiceAbstraction, useValue: syncService },\n { provide: UserServiceAbstraction, useValue: userService },\n { provide: MessagingServiceAbstraction, useValue: messagingService },\n { provide: BroadcasterService, useValue: broadcasterService },\n { provide: SettingsServiceAbstraction, useValue: settingsService },\n { provide: VaultTimeoutServiceAbstraction, useValue: vaultTimeoutService },\n { provide: StorageServiceAbstraction, useValue: storageService },\n { provide: StateServiceAbstraction, useValue: stateService },\n { provide: ExportServiceAbstraction, useValue: exportService },\n { provide: SearchServiceAbstraction, useValue: searchService },\n { provide: ImportServiceAbstraction, useValue: importService },\n { provide: NotificationsServiceAbstraction, useValue: notificationsService },\n { provide: CryptoFunctionServiceAbstraction, useValue: cryptoFunctionService },\n { provide: EventLoggingServiceAbstraction, useValue: eventLoggingService },\n { provide: PolicyServiceAbstraction, useValue: policyService },\n { provide: SendServiceAbstraction, useValue: sendService },\n {\n provide: APP_INITIALIZER,\n useFactory: initFactory,\n deps: [],\n multi: true,\n },\n {\n provide: LOCALE_ID,\n useFactory: () => i18nService.translationLocale,\n deps: [],\n },\n ],\n})\nexport class ServicesModule {\n}\n","import { MessagingService } from 'jslib/abstractions/messaging.service';\n\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\n\nexport class BroadcasterMessagingService implements MessagingService {\n constructor(private broadcasterService: BroadcasterService) { }\n\n send(subscriber: string, arg: any = {}) {\n const message = Object.assign({}, { command: subscriber }, arg);\n this.broadcasterService.send(message);\n }\n}\n","import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\nimport { ConstantsService } from 'jslib/services';\n\nexport class HtmlStorageService implements StorageService {\n private localStorageKeys = new Set(['appId', 'anonymousAppId', 'rememberedEmail', 'passwordGenerationOptions',\n ConstantsService.disableFaviconKey, 'rememberEmail', 'enableGravatars', 'enableFullWidth',\n ConstantsService.localeKey, ConstantsService.autoConfirmFingerprints,\n ConstantsService.vaultTimeoutKey, ConstantsService.vaultTimeoutActionKey, ConstantsService.ssoCodeVerifierKey,\n ConstantsService.ssoStateKey, 'ssoOrgIdentifier']);\n private localStorageStartsWithKeys = ['twoFactorToken_', ConstantsService.collapsedGroupingsKey + '_'];\n private memoryStorageStartsWithKeys = ['ciphers_', 'folders_', 'collections_', 'settings_', 'lastSync_'];\n private memoryStorage = new Map();\n\n constructor(private platformUtilsService: PlatformUtilsService) { }\n\n async init() {\n // LockOption -> VaultTimeout (uses the same legacy string value for backwards compat)\n const vaultTimeout = await this.get(ConstantsService.vaultTimeoutKey);\n if (vaultTimeout == null && !this.platformUtilsService.isDev()) {\n await this.save(ConstantsService.vaultTimeoutKey, 15);\n }\n\n // Default Action to lock\n const vaultTimeoutAction = await this.get(ConstantsService.vaultTimeoutActionKey);\n if (vaultTimeoutAction == null) {\n await this.save(ConstantsService.vaultTimeoutActionKey, 'lock');\n }\n }\n\n get(key: string): Promise {\n let json: string = null;\n if (this.isLocalStorage(key)) {\n json = window.localStorage.getItem(key);\n } else if (this.isMemoryStorage(key)) {\n json = this.memoryStorage.get(key);\n } else {\n json = window.sessionStorage.getItem(key);\n }\n if (json != null) {\n const obj = JSON.parse(json);\n return Promise.resolve(obj as T);\n }\n return Promise.resolve(null);\n }\n\n save(key: string, obj: any): Promise {\n if (obj == null) {\n return this.remove(key);\n }\n\n const json = JSON.stringify(obj);\n if (this.isLocalStorage(key)) {\n window.localStorage.setItem(key, json);\n } else if (this.isMemoryStorage(key)) {\n this.memoryStorage.set(key, json);\n } else {\n window.sessionStorage.setItem(key, json);\n }\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n if (this.isLocalStorage(key)) {\n window.localStorage.removeItem(key);\n } else if (this.isMemoryStorage(key)) {\n this.memoryStorage.delete(key);\n } else {\n window.sessionStorage.removeItem(key);\n }\n return Promise.resolve();\n }\n\n private isLocalStorage(key: string): boolean {\n if (this.localStorageKeys.has(key)) {\n return true;\n }\n for (const swKey of this.localStorageStartsWithKeys) {\n if (key.startsWith(swKey)) {\n return true;\n }\n }\n return false;\n }\n\n private isMemoryStorage(key: string): boolean {\n for (const swKey of this.memoryStorageStartsWithKeys) {\n if (key.startsWith(swKey)) {\n return true;\n }\n }\n return false;\n }\n}\n","export { ApiService } from './api.service';\nexport { AppIdService } from './appId.service';\nexport { AuditService } from './audit.service';\nexport { AuthService } from './auth.service';\nexport { CipherService } from './cipher.service';\nexport { CollectionService } from './collection.service';\nexport { ConstantsService } from './constants.service';\nexport { ContainerService } from './container.service';\nexport { CryptoService } from './crypto.service';\nexport { EnvironmentService } from './environment.service';\nexport { FolderService } from './folder.service';\nexport { I18nService } from './i18n.service';\nexport { PasswordGenerationService } from './passwordGeneration.service';\nexport { SettingsService } from './settings.service';\nexport { StateService } from './state.service';\nexport { SyncService } from './sync.service';\nexport { TokenService } from './token.service';\nexport { TotpService } from './totp.service';\nexport { UserService } from './user.service';\nexport { VaultTimeoutService } from './vaultTimeout.service';\n","import { BaseResponse } from './baseResponse';\n\nexport class ApiKeyResponse extends BaseResponse {\n apiKey: string;\n\n constructor(response: any) {\n super(response);\n this.apiKey = this.getResponseProperty('ApiKey');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { PaymentMethodType } from '../../enums/paymentMethodType';\nimport { TransactionType } from '../../enums/transactionType';\n\nexport class BillingResponse extends BaseResponse {\n balance: number;\n paymentSource: BillingSourceResponse;\n invoices: BillingInvoiceResponse[] = [];\n transactions: BillingTransactionResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.balance = this.getResponseProperty('Balance');\n const paymentSource = this.getResponseProperty('PaymentSource');\n const transactions = this.getResponseProperty('Transactions');\n const invoices = this.getResponseProperty('Invoices');\n this.paymentSource = paymentSource == null ? null : new BillingSourceResponse(paymentSource);\n if (transactions != null) {\n this.transactions = transactions.map((t: any) => new BillingTransactionResponse(t));\n }\n if (invoices != null) {\n this.invoices = invoices.map((i: any) => new BillingInvoiceResponse(i));\n }\n }\n}\n\nexport class BillingSourceResponse extends BaseResponse {\n type: PaymentMethodType;\n cardBrand: string;\n description: string;\n needsVerification: boolean;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.cardBrand = this.getResponseProperty('CardBrand');\n this.description = this.getResponseProperty('Description');\n this.needsVerification = this.getResponseProperty('NeedsVerification');\n }\n}\n\nexport class BillingInvoiceResponse extends BaseResponse {\n url: string;\n pdfUrl: string;\n number: string;\n paid: boolean;\n date: string;\n amount: number;\n\n constructor(response: any) {\n super(response);\n this.url = this.getResponseProperty('Url');\n this.pdfUrl = this.getResponseProperty('PdfUrl');\n this.number = this.getResponseProperty('Number');\n this.paid = this.getResponseProperty('Paid');\n this.date = this.getResponseProperty('Date');\n this.amount = this.getResponseProperty('Amount');\n }\n}\n\nexport class BillingTransactionResponse extends BaseResponse {\n createdDate: string;\n amount: number;\n refunded: boolean;\n partiallyRefunded: boolean;\n refundedAmount: number;\n type: TransactionType;\n paymentMethodType: PaymentMethodType;\n details: string;\n\n constructor(response: any) {\n super(response);\n this.createdDate = this.getResponseProperty('CreatedDate');\n this.amount = this.getResponseProperty('Amount');\n this.refunded = this.getResponseProperty('Refunded');\n this.partiallyRefunded = this.getResponseProperty('PartiallyRefunded');\n this.refundedAmount = this.getResponseProperty('RefundedAmount');\n this.type = this.getResponseProperty('Type');\n this.paymentMethodType = this.getResponseProperty('PaymentMethodType');\n this.details = this.getResponseProperty('Details');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class BreachAccountResponse extends BaseResponse {\n addedDate: string;\n breachDate: string;\n dataClasses: string[];\n description: string;\n domain: string;\n isActive: boolean;\n isVerified: boolean;\n logoPath: string;\n modifiedDate: string;\n name: string;\n pwnCount: number;\n title: string;\n\n constructor(response: any) {\n super(response);\n this.addedDate = this.getResponseProperty('AddedDate');\n this.breachDate = this.getResponseProperty('BreachDate');\n this.dataClasses = this.getResponseProperty('DataClasses');\n this.description = this.getResponseProperty('Description');\n this.domain = this.getResponseProperty('Domain');\n this.isActive = this.getResponseProperty('IsActive');\n this.isVerified = this.getResponseProperty('IsVerified');\n this.logoPath = this.getResponseProperty('LogoPath');\n this.modifiedDate = this.getResponseProperty('ModifiedDate');\n this.name = this.getResponseProperty('Name');\n this.pwnCount = this.getResponseProperty('PwnCount');\n this.title = this.getResponseProperty('Title');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class GlobalDomainResponse extends BaseResponse {\n type: number;\n domains: string[];\n excluded: boolean;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.domains = this.getResponseProperty('Domains');\n this.excluded = this.getResponseProperty('Excluded');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { DeviceType } from '../../enums/deviceType';\nimport { EventType } from '../../enums/eventType';\n\nexport class EventResponse extends BaseResponse {\n type: EventType;\n userId: string;\n organizationId: string;\n cipherId: string;\n collectionId: string;\n groupId: string;\n policyId: string;\n organizationUserId: string;\n actingUserId: string;\n date: string;\n deviceType: DeviceType;\n ipAddress: string;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.userId = this.getResponseProperty('UserId');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.cipherId = this.getResponseProperty('CipherId');\n this.collectionId = this.getResponseProperty('CollectionId');\n this.groupId = this.getResponseProperty('GroupId');\n this.policyId = this.getResponseProperty('PolicyId');\n this.organizationUserId = this.getResponseProperty('OrganizationUserId');\n this.actingUserId = this.getResponseProperty('ActingUserId');\n this.date = this.getResponseProperty('Date');\n this.deviceType = this.getResponseProperty('DeviceType');\n this.ipAddress = this.getResponseProperty('IpAddress');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nexport class GroupResponse extends BaseResponse {\n id: string;\n organizationId: string;\n name: string;\n accessAll: boolean;\n externalId: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.name = this.getResponseProperty('Name');\n this.accessAll = this.getResponseProperty('AccessAll');\n this.externalId = this.getResponseProperty('ExternalId');\n }\n}\n\nexport class GroupDetailsResponse extends GroupResponse {\n collections: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const collections = this.getResponseProperty('Collections');\n if (collections != null) {\n this.collections = collections.map((c: any) => new SelectionReadOnlyResponse(c));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class IdentityTokenResponse extends BaseResponse {\n accessToken: string;\n expiresIn: number;\n refreshToken: string;\n tokenType: string;\n\n resetMasterPassword: boolean;\n privateKey: string;\n key: string;\n twoFactorToken: string;\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n this.accessToken = response.access_token;\n this.expiresIn = response.expires_in;\n this.refreshToken = response.refresh_token;\n this.tokenType = response.token_type;\n\n this.resetMasterPassword = this.getResponseProperty('ResetMasterPassword');\n this.privateKey = this.getResponseProperty('PrivateKey');\n this.key = this.getResponseProperty('Key');\n this.twoFactorToken = this.getResponseProperty('TwoFactorToken');\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class IdentityTwoFactorResponse extends BaseResponse {\n twoFactorProviders: TwoFactorProviderType[];\n twoFactorProviders2 = new Map();\n\n constructor(response: any) {\n super(response);\n this.twoFactorProviders = this.getResponseProperty('TwoFactorProviders');\n const twoFactorProviders2 = this.getResponseProperty('TwoFactorProviders2');\n if (twoFactorProviders2 != null) {\n for (const prop in twoFactorProviders2) {\n if (twoFactorProviders2.hasOwnProperty(prop)) {\n this.twoFactorProviders2.set(parseInt(prop, null), twoFactorProviders2[prop]);\n }\n }\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class ListResponse extends BaseResponse {\n data: T[];\n continuationToken: string;\n\n constructor(response: any, t: new (dataResponse: any) => T) {\n super(response);\n const data = this.getResponseProperty('Data');\n this.data = data == null ? [] : data.map((dr: any) => new t(dr));\n this.continuationToken = this.getResponseProperty('ContinuationToken');\n }\n}\n","import { OrganizationResponse } from './organizationResponse';\nimport {\n BillingSubscriptionResponse,\n BillingSubscriptionUpcomingInvoiceResponse,\n} from './subscriptionResponse';\n\nexport class OrganizationSubscriptionResponse extends OrganizationResponse {\n storageName: string;\n storageGb: number;\n subscription: BillingSubscriptionResponse;\n upcomingInvoice: BillingSubscriptionUpcomingInvoiceResponse;\n expiration: string;\n\n constructor(response: any) {\n super(response);\n this.storageName = this.getResponseProperty('StorageName');\n this.storageGb = this.getResponseProperty('StorageGb');\n const subscription = this.getResponseProperty('Subscription');\n this.subscription = subscription == null ? null : new BillingSubscriptionResponse(subscription);\n const upcomingInvoice = this.getResponseProperty('UpcomingInvoice');\n this.upcomingInvoice = upcomingInvoice == null ? null :\n new BillingSubscriptionUpcomingInvoiceResponse(upcomingInvoice);\n this.expiration = this.getResponseProperty('Expiration');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nimport { PermissionsApi } from '../api/permissionsApi';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\n\nexport class OrganizationUserResponse extends BaseResponse {\n id: string;\n userId: string;\n type: OrganizationUserType;\n status: OrganizationUserStatusType;\n accessAll: boolean;\n permissions: PermissionsApi;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.type = this.getResponseProperty('Type');\n this.status = this.getResponseProperty('Status');\n this.permissions = new PermissionsApi(this.getResponseProperty('Permissions'));\n this.accessAll = this.getResponseProperty('AccessAll');\n }\n}\n\nexport class OrganizationUserUserDetailsResponse extends OrganizationUserResponse {\n name: string;\n email: string;\n twoFactorEnabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.twoFactorEnabled = this.getResponseProperty('TwoFactorEnabled');\n }\n}\n\nexport class OrganizationUserDetailsResponse extends OrganizationUserResponse {\n collections: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const collections = this.getResponseProperty('Collections');\n if (collections != null) {\n this.collections = collections.map((c: any) => new SelectionReadOnlyResponse(c));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { ProfileResponse } from './profileResponse';\n\nexport class PaymentResponse extends BaseResponse {\n userProfile: ProfileResponse;\n paymentIntentClientSecret: string;\n success: boolean;\n\n constructor(response: any) {\n super(response);\n const userProfile = this.getResponseProperty('UserProfile');\n if (userProfile != null) {\n this.userProfile = new ProfileResponse(userProfile);\n }\n this.paymentIntentClientSecret = this.getResponseProperty('PaymentIntentClientSecret');\n this.success = this.getResponseProperty('Success');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class ProfileOrganizationResponse extends BaseResponse {\n id: string;\n name: string;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useBusinessPortal: boolean;\n useSso: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n key: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.usePolicies = this.getResponseProperty('UsePolicies');\n this.useGroups = this.getResponseProperty('UseGroups');\n this.useDirectory = this.getResponseProperty('UseDirectory');\n this.useEvents = this.getResponseProperty('UseEvents');\n this.useTotp = this.getResponseProperty('UseTotp');\n this.use2fa = this.getResponseProperty('Use2fa');\n this.useApi = this.getResponseProperty('UseApi');\n this.useBusinessPortal = this.getResponseProperty('UseBusinessPortal');\n this.useSso = this.getResponseProperty('UseSso');\n this.selfHost = this.getResponseProperty('SelfHost');\n this.usersGetPremium = this.getResponseProperty('UsersGetPremium');\n this.seats = this.getResponseProperty('Seats');\n this.maxCollections = this.getResponseProperty('MaxCollections');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.key = this.getResponseProperty('Key');\n this.status = this.getResponseProperty('Status');\n this.type = this.getResponseProperty('Type');\n this.enabled = this.getResponseProperty('Enabled');\n this.ssoBound = this.getResponseProperty('SsoBound');\n this.identifier = this.getResponseProperty('Identifier');\n this.permissions = new PermissionsApi(this.getResponseProperty('permissions'));\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class PreloginResponse extends BaseResponse {\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { SendType } from '../../enums/sendType';\n\nimport { SendFileApi } from '../api/sendFileApi';\nimport { SendTextApi } from '../api/sendTextApi';\n\nexport class SendAccessResponse extends BaseResponse {\n id: string;\n type: SendType;\n name: string;\n file: SendFileApi;\n text: SendTextApi;\n expirationDate: Date;\n creatorIdentifier: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n\n const text = this.getResponseProperty('Text');\n if (text != null) {\n this.text = new SendTextApi(text);\n }\n\n const file = this.getResponseProperty('File');\n if (file != null) {\n this.file = new SendFileApi(file);\n }\n\n this.expirationDate = this.getResponseProperty('ExpirationDate');\n this.creatorIdentifier = this.getResponseProperty('CreatorIdentifier');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class SendFileDownloadDataResponse extends BaseResponse {\n\n id: string = null;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.url = this.getResponseProperty('Url');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { CipherResponse } from './cipherResponse';\nimport { CollectionDetailsResponse } from './collectionResponse';\nimport { DomainsResponse } from './domainsResponse';\nimport { FolderResponse } from './folderResponse';\nimport { PolicyResponse } from './policyResponse';\nimport { ProfileResponse } from './profileResponse';\nimport { SendResponse } from './sendResponse';\n\nexport class SyncResponse extends BaseResponse {\n profile?: ProfileResponse;\n folders: FolderResponse[] = [];\n collections: CollectionDetailsResponse[] = [];\n ciphers: CipherResponse[] = [];\n domains?: DomainsResponse;\n policies?: PolicyResponse[] = [];\n sends: SendResponse[] = [];\n\n constructor(response: any) {\n super(response);\n\n const profile = this.getResponseProperty('Profile');\n if (profile != null) {\n this.profile = new ProfileResponse(profile);\n }\n\n const folders = this.getResponseProperty('Folders');\n if (folders != null) {\n this.folders = folders.map((f: any) => new FolderResponse(f));\n }\n\n const collections = this.getResponseProperty('Collections');\n if (collections != null) {\n this.collections = collections.map((c: any) => new CollectionDetailsResponse(c));\n }\n\n const ciphers = this.getResponseProperty('Ciphers');\n if (ciphers != null) {\n this.ciphers = ciphers.map((c: any) => new CipherResponse(c));\n }\n\n const domains = this.getResponseProperty('Domains');\n if (domains != null) {\n this.domains = new DomainsResponse(domains);\n }\n\n const policies = this.getResponseProperty('Policies');\n if (policies != null) {\n this.policies = policies.map((p: any) => new PolicyResponse(p));\n }\n\n const sends = this.getResponseProperty('Sends');\n if (sends != null) {\n this.sends = sends.map((s: any) => new SendResponse(s));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TaxInfoResponse extends BaseResponse {\n taxId: string;\n taxIdType: string;\n line1: string;\n line2: string;\n city: string;\n state: string;\n country: string;\n postalCode: string;\n\n constructor(response: any) {\n super(response);\n this.taxId = this.getResponseProperty('TaxIdNumber');\n this.taxIdType = this.getResponseProperty('TaxIdType');\n this.line1 = this.getResponseProperty('Line1');\n this.line2 = this.getResponseProperty('Line2');\n this.city = this.getResponseProperty('City');\n this.state = this.getResponseProperty('State');\n this.postalCode = this.getResponseProperty('PostalCode');\n this.country = this.getResponseProperty('Country');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TaxRateResponse extends BaseResponse {\n id: string;\n country: string;\n state: string;\n postalCode: string;\n rate: number;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.country = this.getResponseProperty('Country');\n this.state = this.getResponseProperty('State');\n this.postalCode = this.getResponseProperty('PostalCode');\n this.rate = this.getResponseProperty('Rate');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorAuthenticatorResponse extends BaseResponse {\n enabled: boolean;\n key: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.key = this.getResponseProperty('Key');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorDuoResponse extends BaseResponse {\n enabled: boolean;\n host: string;\n secretKey: string;\n integrationKey: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.host = this.getResponseProperty('Host');\n this.secretKey = this.getResponseProperty('SecretKey');\n this.integrationKey = this.getResponseProperty('IntegrationKey');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorEmailResponse extends BaseResponse {\n enabled: boolean;\n email: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.email = this.getResponseProperty('Email');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class TwoFactorProviderResponse extends BaseResponse {\n enabled: boolean;\n type: TwoFactorProviderType;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.type = this.getResponseProperty('Type');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorRecoverResponse extends BaseResponse {\n code: string;\n\n constructor(response: any) {\n super(response);\n this.code = this.getResponseProperty('Code');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorU2fResponse extends BaseResponse {\n enabled: boolean;\n keys: KeyResponse[];\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n const keys = this.getResponseProperty('Keys');\n this.keys = keys == null ? null : keys.map((k: any) => new KeyResponse(k));\n }\n}\n\nexport class KeyResponse extends BaseResponse {\n name: string;\n id: number;\n compromised: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.id = this.getResponseProperty('Id');\n this.compromised = this.getResponseProperty('Compromised');\n }\n}\n\nexport class ChallengeResponse extends BaseResponse {\n userId: string;\n appId: string;\n challenge: string;\n version: string;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty('UserId');\n this.appId = this.getResponseProperty('AppId');\n this.challenge = this.getResponseProperty('Challenge');\n this.version = this.getResponseProperty('Version');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorYubiKeyResponse extends BaseResponse {\n enabled: boolean;\n key1: string;\n key2: string;\n key3: string;\n key4: string;\n key5: string;\n nfc: boolean;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.key1 = this.getResponseProperty('Key1');\n this.key2 = this.getResponseProperty('Key2');\n this.key3 = this.getResponseProperty('Key3');\n this.key4 = this.getResponseProperty('Key4');\n this.key5 = this.getResponseProperty('Key5');\n this.nfc = this.getResponseProperty('Nfc');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class UserKeyResponse extends BaseResponse {\n userId: string;\n publicKey: string;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty('UserId');\n this.publicKey = this.getResponseProperty('PublicKey');\n }\n}\n","/**\n * Use as a Decorator on async functions, it will limit how many times the function can be\n * in-flight at a time.\n *\n * Calls beyond the limit will be queued, and run when one of the active calls finishes\n */\nexport function throttle(limit: number, throttleKey: (args: any[]) => string) {\n return (target: any, propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise>) => {\n const originalMethod: () => Promise = descriptor.value;\n const allThrottles = new Map void)[]>>();\n\n const getThrottles = (obj: any) => {\n let throttles = allThrottles.get(obj);\n if (throttles != null) {\n return throttles;\n }\n throttles = new Map void)[]>();\n allThrottles.set(obj, throttles);\n return throttles;\n };\n\n return {\n value: function(...args: any[]) {\n const throttles = getThrottles(this);\n const argsThrottleKey = throttleKey(args);\n let queue = throttles.get(argsThrottleKey);\n if (queue == null) {\n queue = [];\n throttles.set(argsThrottleKey, queue);\n }\n\n return new Promise((resolve, reject) => {\n const exec = () => {\n const onFinally = () => {\n queue.splice(queue.indexOf(exec), 1);\n if (queue.length >= limit) {\n queue[limit - 1]();\n } else if (queue.length === 0) {\n throttles.delete(argsThrottleKey);\n if (throttles.size === 0) {\n allThrottles.delete(this);\n }\n }\n };\n originalMethod.apply(this, args).then((val: any) => {\n onFinally();\n return val;\n }).catch((err: any) => {\n onFinally();\n throw err;\n }).then(resolve, reject);\n };\n queue.push(exec);\n if (queue.length <= limit) {\n exec();\n }\n });\n },\n };\n };\n}\n","export class CipherBulkMoveRequest {\n ids: string[];\n folderId: string;\n\n constructor(ids: string[], folderId: string) {\n this.ids = ids == null ? [] : ids;\n this.folderId = folderId;\n }\n}\n","export class CipherBulkRestoreRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","import { CipherWithIdRequest } from './cipherWithIdRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherBulkShareRequest {\n ciphers: CipherWithIdRequest[];\n collectionIds: string[];\n\n constructor(ciphers: Cipher[], collectionIds: string[]) {\n if (ciphers != null) {\n this.ciphers = [];\n ciphers.forEach(c => {\n this.ciphers.push(new CipherWithIdRequest(c));\n });\n }\n this.collectionIds = collectionIds;\n }\n}\n","import { CipherRequest } from './cipherRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherShareRequest {\n cipher: CipherRequest;\n collectionIds: string[];\n\n constructor(cipher: Cipher) {\n this.cipher = new CipherRequest(cipher);\n this.collectionIds = cipher.collectionIds;\n }\n}\n","import { CipherView } from '../view';\n\nconst CacheTTL = 3000;\n\nexport class SortedCiphersCache {\n private readonly sortedCiphersByUrl: Map = new Map();\n private readonly timeouts: Map = new Map();\n\n constructor(private readonly comparator: (a: CipherView, b: CipherView) => number) { }\n\n isCached(url: string) {\n return this.sortedCiphersByUrl.has(url);\n }\n\n addCiphers(url: string, ciphers: CipherView[]) {\n ciphers.sort(this.comparator);\n this.sortedCiphersByUrl.set(url, new Ciphers(ciphers));\n this.resetTimer(url);\n }\n\n getLastUsed(url: string) {\n this.resetTimer(url);\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getLastUsed() : null;\n }\n\n getLastLaunched(url: string) {\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getLastLaunched() : null;\n }\n\n getNext(url: string) {\n this.resetTimer(url);\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getNext() : null;\n }\n\n updateLastUsedIndex(url: string) {\n if (this.isCached(url)) {\n this.sortedCiphersByUrl.get(url).updateLastUsedIndex();\n }\n }\n\n clear() {\n this.sortedCiphersByUrl.clear();\n this.timeouts.clear();\n }\n\n private resetTimer(url: string) {\n clearTimeout(this.timeouts.get(url));\n this.timeouts.set(url, setTimeout(() => {\n this.sortedCiphersByUrl.delete(url);\n this.timeouts.delete(url);\n }, CacheTTL));\n }\n}\n\nclass Ciphers {\n lastUsedIndex = -1;\n\n constructor(private readonly ciphers: CipherView[]) { }\n\n getLastUsed() {\n this.lastUsedIndex = Math.max(this.lastUsedIndex, 0);\n return this.ciphers[this.lastUsedIndex];\n }\n\n getLastLaunched() {\n const usedCiphers = this.ciphers.filter(cipher => cipher.localData?.lastLaunched);\n const sortedCiphers = usedCiphers.sort((x, y) => y.localData.lastLaunched.valueOf() - x.localData.lastLaunched.valueOf());\n return sortedCiphers[0];\n }\n\n getNextIndex() {\n return (this.lastUsedIndex + 1) % this.ciphers.length;\n }\n\n getNext() {\n return this.ciphers[this.getNextIndex()];\n }\n\n updateLastUsedIndex() {\n this.lastUsedIndex = this.getNextIndex();\n }\n}\n","export class TreeNode {\n parent: T;\n node: T;\n children: TreeNode[] = [];\n\n constructor(node: T, name: string, parent: T) {\n this.parent = parent;\n this.node = node;\n this.node.name = name;\n }\n}\n\nexport interface ITreeNodeObject {\n id: string;\n name: string;\n}\n","import Domain from './domainBase';\n\nexport class PasswordGeneratorPolicyOptions extends Domain {\n defaultType: string = '';\n minLength: number = 0;\n useUppercase: boolean = false;\n useLowercase: boolean = false;\n useNumbers: boolean = false;\n numberCount: number = 0;\n useSpecial: boolean = false;\n specialCount: number = 0;\n minNumberWords: number = 0;\n capitalize: boolean = false;\n includeNumber: boolean = false;\n\n inEffect() {\n return this.defaultType !== '' ||\n this.minLength > 0 ||\n this.numberCount > 0 ||\n this.specialCount > 0 ||\n this.useUppercase ||\n this.useLowercase ||\n this.useNumbers ||\n this.useSpecial ||\n this.minNumberWords > 0 ||\n this.capitalize ||\n this.includeNumber;\n }\n}\n","import { ProfileOrganizationResponse } from '../response/profileOrganizationResponse';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class OrganizationData {\n id: string;\n name: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useBusinessPortal: boolean;\n useSso: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n\n constructor(response: ProfileOrganizationResponse) {\n this.id = response.id;\n this.name = response.name;\n this.status = response.status;\n this.type = response.type;\n this.enabled = response.enabled;\n this.usePolicies = response.usePolicies;\n this.useGroups = response.useGroups;\n this.useDirectory = response.useDirectory;\n this.useEvents = response.useEvents;\n this.useTotp = response.useTotp;\n this.use2fa = response.use2fa;\n this.useApi = response.useApi;\n this.useBusinessPortal = response.useBusinessPortal;\n this.useSso = response.useSso;\n this.selfHost = response.selfHost;\n this.usersGetPremium = response.usersGetPremium;\n this.seats = response.seats;\n this.maxCollections = response.maxCollections;\n this.maxStorageGb = response.maxStorageGb;\n this.ssoBound = response.ssoBound;\n this.identifier = response.identifier;\n this.permissions = response.permissions;\n }\n}\n","import { SendFileApi } from '../api/sendFileApi';\n\nexport class SendFileData {\n id: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(data?: SendFileApi) {\n if (data == null) {\n return;\n }\n\n this.id = data.id;\n this.fileName = data.fileName;\n this.key = data.key;\n this.size = data.size;\n this.sizeName = data.sizeName;\n }\n}\n","import { SendTextApi } from '../api/sendTextApi';\n\nexport class SendTextData {\n text: string;\n hidden: boolean;\n\n constructor(data?: SendTextApi) {\n if (data == null) {\n return;\n }\n\n this.text = data.text;\n this.hidden = data.hidden;\n }\n}\n","import { I18nService as BaseI18nService } from 'jslib/services/i18n.service';\n\nexport class I18nService extends BaseI18nService {\n constructor(systemLanguage: string, localesDirectory: string) {\n super(systemLanguage || 'en-US', localesDirectory, async (formattedLocale: string) => {\n const filePath = this.localesDirectory + '/' + formattedLocale + '/messages.json?cache=' +\n process.env.CACHE_TAG;\n const localesResult = await fetch(filePath);\n const locales = await localesResult.json();\n return locales;\n });\n\n this.supportedTranslationLocales = [\n 'en', 'ca', 'cs', 'da', 'de', 'el', 'en-GB', 'es', 'et', 'fr', 'he', 'it', 'ja', 'ko', 'lv', 'ml', 'nb',\n 'nl', 'pl', 'pt-PT', 'pt-BR', 'ru', 'sk', 'sv', 'uk', 'zh-CN', 'zh-TW',\n ];\n }\n}\n","import { StorageService } from 'jslib/abstractions/storage.service';\n\nexport class MemoryStorageService implements StorageService {\n private store = new Map();\n\n get(key: string): Promise {\n if (this.store.has(key)) {\n const obj = this.store.get(key);\n return Promise.resolve(obj as T);\n }\n return Promise.resolve(null);\n }\n\n save(key: string, obj: any): Promise {\n if (obj == null) {\n return this.remove(key);\n }\n this.store.set(key, obj);\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n this.store.delete(key);\n return Promise.resolve();\n }\n}\n","import Swal, { SweetAlertIcon } from 'sweetalert2/dist/sweetalert2.js';\n\nimport { DeviceType } from 'jslib/enums/deviceType';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { Utils } from 'jslib/misc/utils';\n\nexport class WebPlatformUtilsService implements PlatformUtilsService {\n identityClientId: string = 'web';\n\n private browserCache: DeviceType = null;\n\n constructor(private i18nService: I18nService, private messagingService: MessagingService) { }\n\n getDevice(): DeviceType {\n if (this.browserCache != null) {\n return this.browserCache;\n }\n\n if (navigator.userAgent.indexOf(' Firefox/') !== -1 || navigator.userAgent.indexOf(' Gecko/') !== -1) {\n this.browserCache = DeviceType.FirefoxBrowser;\n } else if (navigator.userAgent.indexOf(' OPR/') >= 0) {\n this.browserCache = DeviceType.OperaBrowser;\n } else if (navigator.userAgent.indexOf(' Edg/') !== -1) {\n this.browserCache = DeviceType.EdgeBrowser;\n } else if (navigator.userAgent.indexOf(' Vivaldi/') !== -1) {\n this.browserCache = DeviceType.VivaldiBrowser;\n } else if (navigator.userAgent.indexOf(' Safari/') !== -1 && navigator.userAgent.indexOf('Chrome') === -1) {\n this.browserCache = DeviceType.SafariBrowser;\n } else if ((window as any).chrome && navigator.userAgent.indexOf(' Chrome/') !== -1) {\n this.browserCache = DeviceType.ChromeBrowser;\n } else if (navigator.userAgent.indexOf(' Trident/') !== -1) {\n this.browserCache = DeviceType.IEBrowser;\n } else {\n this.browserCache = DeviceType.UnknownBrowser;\n }\n\n return this.browserCache;\n }\n\n getDeviceString(): string {\n const device = DeviceType[this.getDevice()].toLowerCase();\n return device.replace('browser', '');\n }\n\n isFirefox(): boolean {\n return this.getDevice() === DeviceType.FirefoxBrowser;\n }\n\n isChrome(): boolean {\n return this.getDevice() === DeviceType.ChromeBrowser;\n }\n\n isEdge(): boolean {\n return this.getDevice() === DeviceType.EdgeBrowser;\n }\n\n isOpera(): boolean {\n return this.getDevice() === DeviceType.OperaBrowser;\n }\n\n isVivaldi(): boolean {\n return this.getDevice() === DeviceType.VivaldiBrowser;\n }\n\n isSafari(): boolean {\n return this.getDevice() === DeviceType.SafariBrowser;\n }\n\n isIE(): boolean {\n return this.getDevice() === DeviceType.IEBrowser;\n }\n\n isMacAppStore(): boolean {\n return false;\n }\n\n analyticsId(): string {\n return 'UA-81915606-3';\n }\n\n isViewOpen(): Promise {\n return Promise.resolve(false);\n }\n\n lockTimeout(): number {\n return null;\n }\n\n launchUri(uri: string, options?: any): void {\n const a = document.createElement('a');\n a.href = uri;\n if (options == null || !options.sameWindow) {\n a.target = '_blank';\n a.rel = 'noreferrer noopener';\n }\n a.classList.add('d-none');\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n\n saveFile(win: Window, blobData: any, blobOptions: any, fileName: string): void {\n let blob: Blob = null;\n let type: string = null;\n const fileNameLower = fileName.toLowerCase();\n let doDownload = true;\n if (fileNameLower.endsWith('.pdf')) {\n type = 'application/pdf';\n doDownload = false;\n } else if (fileNameLower.endsWith('.xlsx')) {\n type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n } else if (fileNameLower.endsWith('.docx')) {\n type = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n } else if (fileNameLower.endsWith('.pptx')) {\n type = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';\n } else if (fileNameLower.endsWith('.csv')) {\n type = 'text/csv';\n } else if (fileNameLower.endsWith('.png')) {\n type = 'image/png';\n } else if (fileNameLower.endsWith('.jpg') || fileNameLower.endsWith('.jpeg')) {\n type = 'image/jpeg';\n } else if (fileNameLower.endsWith('.gif')) {\n type = 'image/gif';\n }\n if (type != null) {\n blobOptions = blobOptions || {};\n if (blobOptions.type == null) {\n blobOptions.type = type;\n }\n }\n if (blobOptions != null && !this.isIE()) {\n blob = new Blob([blobData], blobOptions);\n } else {\n blob = new Blob([blobData]);\n }\n if (navigator.msSaveOrOpenBlob) {\n navigator.msSaveBlob(blob, fileName);\n } else {\n const a = win.document.createElement('a');\n if (doDownload) {\n a.download = fileName;\n } else {\n a.target = '_blank';\n }\n a.href = URL.createObjectURL(blob);\n a.style.position = 'fixed';\n win.document.body.appendChild(a);\n a.click();\n win.document.body.removeChild(a);\n }\n }\n\n getApplicationVersion(): string {\n return process.env.APPLICATION_VERSION || '-';\n }\n\n supportsU2f(win: Window): boolean {\n if (win != null && (win as any).u2f != null) {\n return true;\n }\n return this.isChrome() || ((this.isEdge() || this.isOpera() || this.isVivaldi()) && !Utils.isMobileBrowser);\n }\n\n supportsDuo(): boolean {\n return true;\n }\n\n showToast(type: 'error' | 'success' | 'warning' | 'info', title: string, text: string | string[],\n options?: any): void {\n this.messagingService.send('showToast', {\n text: text,\n title: title,\n type: type,\n options: options,\n });\n }\n\n async showDialog(body: string, title?: string, confirmText?: string, cancelText?: string, type?: string,\n bodyIsHtml: boolean = false) {\n let iconClasses: string = null;\n if (type != null) {\n // If you add custom types to this part, the type to SweetAlertIcon cast below needs to be changed.\n switch (type) {\n case 'success':\n iconClasses = 'fa-check text-success';\n break;\n case 'warning':\n iconClasses = 'fa-warning text-warning';\n break;\n case 'error':\n iconClasses = 'fa-bolt text-danger';\n break;\n case 'info':\n iconClasses = 'fa-info-circle text-info';\n break;\n default:\n break;\n }\n }\n\n const iconHtmlStr = iconClasses != null ? `` : undefined;\n const confirmed = await Swal.fire({\n heightAuto: false,\n buttonsStyling: false,\n icon: type as SweetAlertIcon, // required to be any of the SweetAlertIcons to output the iconHtml.\n iconHtml: iconHtmlStr,\n text: bodyIsHtml ? null : body,\n html: bodyIsHtml ? body : null,\n title: title,\n showCancelButton: (cancelText != null),\n cancelButtonText: cancelText,\n showConfirmButton: true,\n confirmButtonText: confirmText == null ? this.i18nService.t('ok') : confirmText,\n });\n\n return confirmed.value;\n }\n\n eventTrack(action: string, label?: string, options?: any) {\n this.messagingService.send('analyticsEventTrack', {\n action: action,\n label: label,\n options: options,\n });\n }\n\n isDev(): boolean {\n return process.env.ENV === 'development';\n }\n\n isSelfHost(): boolean {\n return process.env.SELF_HOST.toString() === 'true';\n }\n\n copyToClipboard(text: string, options?: any): void {\n let win = window;\n let doc = window.document;\n if (options && (options.window || options.win)) {\n win = options.window || options.win;\n doc = win.document;\n } else if (options && options.doc) {\n doc = options.doc;\n }\n if ((win as any).clipboardData && (win as any).clipboardData.setData) {\n // IE specific code path to prevent textarea being shown while dialog is visible.\n (win as any).clipboardData.setData('Text', text);\n } else if (doc.queryCommandSupported && doc.queryCommandSupported('copy')) {\n const textarea = doc.createElement('textarea');\n textarea.textContent = text;\n // Prevent scrolling to bottom of page in MS Edge.\n textarea.style.position = 'fixed';\n let copyEl = doc.body;\n // For some reason copy command won't work when modal is open if appending to body\n if (doc.body.classList.contains('modal-open')) {\n copyEl = doc.body.querySelector('.modal');\n }\n copyEl.appendChild(textarea);\n textarea.select();\n try {\n // Security exception may be thrown by some browsers.\n doc.execCommand('copy');\n } catch (e) {\n // tslint:disable-next-line\n console.warn('Copy to clipboard failed.', e);\n } finally {\n copyEl.removeChild(textarea);\n }\n }\n }\n\n readFromClipboard(options?: any): Promise {\n throw new Error('Cannot read from clipboard on web.');\n }\n\n supportsBiometric() {\n return Promise.resolve(false);\n }\n\n authenticateBiometric() {\n return Promise.resolve(false);\n }\n\n supportsSecureStorage() {\n return false;\n }\n\n getDefaultSystemTheme() {\n return null as 'light' | 'dark';\n }\n\n onDefaultSystemThemeChange() {\n /* noop */\n }\n}\n","import { AppIdService } from '../abstractions/appId.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nimport { ConstantsService } from '../services/constants.service';\n\nimport { DeviceType } from '../enums/deviceType';\n\nconst GaObj = 'ga';\n\nexport const AnalyticsIds = {\n [DeviceType.ChromeExtension]: 'UA-81915606-6',\n [DeviceType.FirefoxExtension]: 'UA-81915606-7',\n [DeviceType.OperaExtension]: 'UA-81915606-8',\n [DeviceType.EdgeExtension]: 'UA-81915606-9',\n [DeviceType.VivaldiExtension]: 'UA-81915606-15',\n [DeviceType.SafariExtension]: 'UA-81915606-16',\n [DeviceType.WindowsDesktop]: 'UA-81915606-17',\n [DeviceType.LinuxDesktop]: 'UA-81915606-19',\n [DeviceType.MacOsDesktop]: 'UA-81915606-18',\n};\n\nexport class Analytics {\n private gaTrackingId: string = null;\n private defaultDisabled = false;\n private appVersion: string;\n\n constructor(win: Window, private gaFilter?: () => boolean,\n private platformUtilsService?: PlatformUtilsService, private storageService?: StorageService,\n private appIdService?: AppIdService, private dependencyResolver?: () => any) {\n if (dependencyResolver != null) {\n const deps = dependencyResolver();\n if (platformUtilsService == null && deps.platformUtilsService) {\n this.platformUtilsService = deps.platformUtilsService as PlatformUtilsService;\n }\n if (storageService == null && deps.storageService) {\n this.storageService = deps.storageService as StorageService;\n }\n if (appIdService == null && deps.appIdService) {\n this.appIdService = deps.appIdService as AppIdService;\n }\n }\n\n this.appVersion = this.platformUtilsService.getApplicationVersion();\n this.defaultDisabled = this.platformUtilsService.getDevice() === DeviceType.FirefoxExtension ||\n this.platformUtilsService.isMacAppStore();\n this.gaTrackingId = this.platformUtilsService.analyticsId();\n\n (win as any).GoogleAnalyticsObject = GaObj;\n (win as any)[GaObj] = async (action: string, param1: any, param2?: any) => {\n await this.ga(action, param1, param2);\n };\n }\n\n async ga(action: string, param1: any, param2?: any) {\n return;\n\n if (this.gaFilter != null && this.gaFilter()) {\n return;\n }\n\n const disabled = await this.storageService.get(ConstantsService.disableGaKey);\n if ((this.defaultDisabled && disabled == null) || disabled != null && disabled) {\n return;\n }\n\n if (action !== 'send' || !param1) {\n return;\n }\n\n const gaAnonAppId = await this.appIdService.getAnonymousAppId();\n const version = encodeURIComponent(this.appVersion);\n let message = 'v=1&tid=' + this.gaTrackingId + '&cid=' + gaAnonAppId + '&cd1=' + version;\n\n if (param1 === 'pageview' && param2) {\n message += this.gaTrackPageView(param2);\n } else if (typeof param1 === 'object' && param1.hitType === 'pageview') {\n message += this.gaTrackPageView(param1.page);\n } else if (param1 === 'event' && param2) {\n message += this.gaTrackEvent(param2);\n } else if (typeof param1 === 'object' && param1.hitType === 'event') {\n message += this.gaTrackEvent(param1);\n }\n\n const request = new XMLHttpRequest();\n request.open('POST', 'https://www.google-analytics.com/collect', true);\n request.send(message);\n }\n\n private gaTrackEvent(options: any) {\n return '&t=event&ec=' + (options.eventCategory ? encodeURIComponent(options.eventCategory) : 'Event') +\n '&ea=' + encodeURIComponent(options.eventAction) +\n (options.eventLabel ? '&el=' + encodeURIComponent(options.eventLabel) : '') +\n (options.eventValue ? '&ev=' + encodeURIComponent(options.eventValue) : '') +\n (options.page ? '&dp=' + this.cleanPagePath(options.page) : '');\n }\n\n private gaTrackPageView(pagePath: string) {\n return '&t=pageview&dp=' + this.cleanPagePath(pagePath);\n }\n\n private cleanPagePath(pagePath: string) {\n const paramIndex = pagePath.indexOf('?');\n if (paramIndex > -1) {\n pagePath = pagePath.substring(0, paramIndex);\n }\n if (pagePath.indexOf('!/') === 0 || pagePath.indexOf('#/') === 0) {\n pagePath = pagePath.substring(1);\n }\n const pathParts = pagePath.split('/');\n const newPathParts: string[] = [];\n pathParts.forEach(p => {\n if (p.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i)) {\n newPathParts.push('__guid__');\n } else {\n newPathParts.push(p);\n }\n });\n return encodeURIComponent(newPathParts.join('/'));\n }\n}\n","export enum LogLevelType {\n Debug,\n Info,\n Warning,\n Error,\n}\n","import { EventType } from '../enums/eventType';\n\nimport { EventData } from '../models/data/eventData';\n\nimport { EventRequest } from '../models/request/eventRequest';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { EventService as EventServiceAbstraction } from '../abstractions/event.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { ConstantsService } from './constants.service';\n\nexport class EventService implements EventServiceAbstraction {\n private inited = false;\n\n constructor(private storageService: StorageService, private apiService: ApiService,\n private userService: UserService, private cipherService: CipherService) { }\n\n init(checkOnInterval: boolean) {\n if (this.inited) {\n return;\n }\n\n this.inited = true;\n if (checkOnInterval) {\n this.uploadEvents();\n setInterval(() => this.uploadEvents(), 60 * 1000); // check every 60 seconds\n }\n }\n\n async collect(eventType: EventType, cipherId: string = null, uploadImmediately = false): Promise {\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n const organizations = await this.userService.getAllOrganizations();\n if (organizations == null) {\n return;\n }\n const orgIds = new Set(organizations.filter(o => o.useEvents).map(o => o.id));\n if (orgIds.size === 0) {\n return;\n }\n if (cipherId != null) {\n const cipher = await this.cipherService.get(cipherId);\n if (cipher == null || cipher.organizationId == null || !orgIds.has(cipher.organizationId)) {\n return;\n }\n }\n let eventCollection = await this.storageService.get(ConstantsService.eventCollectionKey);\n if (eventCollection == null) {\n eventCollection = [];\n }\n const event = new EventData();\n event.type = eventType;\n event.cipherId = cipherId;\n event.date = new Date().toISOString();\n eventCollection.push(event);\n await this.storageService.save(ConstantsService.eventCollectionKey, eventCollection);\n if (uploadImmediately) {\n await this.uploadEvents();\n }\n }\n\n async uploadEvents(): Promise {\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n const eventCollection = await this.storageService.get(ConstantsService.eventCollectionKey);\n if (eventCollection == null || eventCollection.length === 0) {\n return;\n }\n const request = eventCollection.map(e => {\n const req = new EventRequest();\n req.type = e.type;\n req.cipherId = e.cipherId;\n req.date = e.date;\n return req;\n });\n try {\n await this.apiService.postEventsCollect(request);\n this.clearEvents();\n } catch { }\n }\n\n async clearEvents(): Promise {\n await this.storageService.remove(ConstantsService.eventCollectionKey);\n }\n}\n","import { EventType } from '../../enums/eventType';\n\nexport class EventData {\n type: EventType;\n cipherId: string;\n date: string;\n}\n","import { EventType } from '../../enums/eventType';\n\nexport class EventRequest {\n type: EventType;\n cipherId: string;\n date: string;\n}\n","import * as papa from 'papaparse';\n\nimport { CipherType } from '../enums/cipherType';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { ExportService as ExportServiceAbstraction } from '../abstractions/export.service';\nimport { FolderService } from '../abstractions/folder.service';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { CollectionView } from '../models/view/collectionView';\nimport { FolderView } from '../models/view/folderView';\n\nimport { Cipher } from '../models/domain/cipher';\nimport { Collection } from '../models/domain/collection';\nimport { Folder } from '../models/domain/folder';\n\nimport { CipherData } from '../models/data/cipherData';\nimport { CollectionData } from '../models/data/collectionData';\nimport { CollectionDetailsResponse } from '../models/response/collectionResponse';\n\nimport { CipherWithIds as CipherExport } from '../models/export/cipherWithIds';\nimport { CollectionWithId as CollectionExport } from '../models/export/collectionWithId';\nimport { FolderWithId as FolderExport } from '../models/export/folderWithId';\n\nexport class ExportService implements ExportServiceAbstraction {\n constructor(private folderService: FolderService, private cipherService: CipherService,\n private apiService: ApiService) { }\n\n async getExport(format: 'csv' | 'json' | 'encrypted_json' = 'csv'): Promise {\n if (format === 'encrypted_json') {\n return this.getEncryptedExport();\n } else {\n return this.getDecryptedExport(format);\n }\n }\n\n async getOrganizationExport(organizationId: string,\n format: 'csv' | 'json' | 'encrypted_json' = 'csv'): Promise {\n if (format === 'encrypted_json') {\n return this.getOrganizationEncryptedExport(organizationId);\n } else {\n return this.getOrganizationDecryptedExport(organizationId, format);\n }\n }\n\n getFileName(prefix: string = null, extension: string = 'csv'): string {\n const now = new Date();\n const dateString =\n now.getFullYear() + '' + this.padNumber(now.getMonth() + 1, 2) + '' + this.padNumber(now.getDate(), 2) +\n this.padNumber(now.getHours(), 2) + '' + this.padNumber(now.getMinutes(), 2) +\n this.padNumber(now.getSeconds(), 2);\n\n return 'bitwarden' + (prefix ? ('_' + prefix) : '') + '_export_' + dateString + '.' + extension;\n }\n\n private async getDecryptedExport(format: 'json' | 'csv'): Promise {\n let decFolders: FolderView[] = [];\n let decCiphers: CipherView[] = [];\n const promises = [];\n\n promises.push(this.folderService.getAllDecrypted().then(folders => {\n decFolders = folders;\n }));\n\n promises.push(this.cipherService.getAllDecrypted().then(ciphers => {\n decCiphers = ciphers.filter(f => f.deletedDate == null);\n }));\n\n await Promise.all(promises);\n\n if (format === 'csv') {\n const foldersMap = new Map();\n decFolders.forEach(f => {\n if (f.id != null) {\n foldersMap.set(f.id, f);\n }\n });\n\n const exportCiphers: any[] = [];\n decCiphers.forEach(c => {\n // only export logins and secure notes\n if (c.type !== CipherType.Login && c.type !== CipherType.SecureNote) {\n return;\n }\n if (c.organizationId != null) {\n return;\n }\n\n const cipher: any = {};\n cipher.folder = c.folderId != null && foldersMap.has(c.folderId) ?\n foldersMap.get(c.folderId).name : null;\n cipher.favorite = c.favorite ? 1 : null;\n this.buildCommonCipher(cipher, c);\n exportCiphers.push(cipher);\n });\n\n return papa.unparse(exportCiphers);\n } else {\n const jsonDoc: any = {\n encrypted: false,\n folders: [],\n items: [],\n };\n\n decFolders.forEach(f => {\n if (f.id == null) {\n return;\n }\n const folder = new FolderExport();\n folder.build(f);\n jsonDoc.folders.push(folder);\n });\n\n decCiphers.forEach(c => {\n if (c.organizationId != null) {\n return;\n }\n const cipher = new CipherExport();\n cipher.build(c);\n cipher.collectionIds = null;\n jsonDoc.items.push(cipher);\n });\n\n return JSON.stringify(jsonDoc, null, ' ');\n }\n }\n\n private async getEncryptedExport(): Promise {\n let folders: Folder[] = [];\n let ciphers: Cipher[] = [];\n const promises = [];\n\n promises.push(this.folderService.getAll().then(f => {\n folders = f;\n }));\n\n promises.push(this.cipherService.getAll().then(c => {\n ciphers = c.filter(f => f.deletedDate == null);\n }));\n\n await Promise.all(promises);\n\n const jsonDoc: any = {\n encrypted: true,\n folders: [],\n items: [],\n };\n\n folders.forEach(f => {\n if (f.id == null) {\n return;\n }\n const folder = new FolderExport();\n folder.build(f);\n jsonDoc.folders.push(folder);\n });\n\n ciphers.forEach(c => {\n if (c.organizationId != null) {\n return;\n }\n const cipher = new CipherExport();\n cipher.build(c);\n cipher.collectionIds = null;\n jsonDoc.items.push(cipher);\n });\n\n return JSON.stringify(jsonDoc, null, ' ');\n }\n\n private async getOrganizationDecryptedExport(organizationId: string, format: 'json' | 'csv'): Promise {\n const decCollections: CollectionView[] = [];\n const decCiphers: CipherView[] = [];\n const promises = [];\n\n promises.push(this.apiService.getCollections(organizationId).then(collections => {\n const collectionPromises: any = [];\n if (collections != null && collections.data != null && collections.data.length > 0) {\n collections.data.forEach(c => {\n const collection = new Collection(new CollectionData(c as CollectionDetailsResponse));\n collectionPromises.push(collection.decrypt().then(decCol => {\n decCollections.push(decCol);\n }));\n });\n }\n return Promise.all(collectionPromises);\n }));\n\n promises.push(this.apiService.getCiphersOrganization(organizationId).then(ciphers => {\n const cipherPromises: any = [];\n if (ciphers != null && ciphers.data != null && ciphers.data.length > 0) {\n ciphers.data.filter(c => c.deletedDate === null).forEach(c => {\n const cipher = new Cipher(new CipherData(c));\n cipherPromises.push(cipher.decrypt().then(decCipher => {\n decCiphers.push(decCipher);\n }));\n });\n }\n return Promise.all(cipherPromises);\n }));\n\n await Promise.all(promises);\n\n if (format === 'csv') {\n const collectionsMap = new Map();\n decCollections.forEach(c => {\n collectionsMap.set(c.id, c);\n });\n\n const exportCiphers: any[] = [];\n decCiphers.forEach(c => {\n // only export logins and secure notes\n if (c.type !== CipherType.Login && c.type !== CipherType.SecureNote) {\n return;\n }\n\n const cipher: any = {};\n cipher.collections = [];\n if (c.collectionIds != null) {\n cipher.collections = c.collectionIds.filter(id => collectionsMap.has(id))\n .map(id => collectionsMap.get(id).name);\n }\n this.buildCommonCipher(cipher, c);\n exportCiphers.push(cipher);\n });\n\n return papa.unparse(exportCiphers);\n } else {\n const jsonDoc: any = {\n encrypted: false,\n collections: [],\n items: [],\n };\n\n decCollections.forEach(c => {\n const collection = new CollectionExport();\n collection.build(c);\n jsonDoc.collections.push(collection);\n });\n\n decCiphers.forEach(c => {\n const cipher = new CipherExport();\n cipher.build(c);\n jsonDoc.items.push(cipher);\n });\n return JSON.stringify(jsonDoc, null, ' ');\n }\n }\n\n private async getOrganizationEncryptedExport(organizationId: string): Promise {\n const collections: Collection[] = [];\n const ciphers: Cipher[] = [];\n const promises = [];\n\n promises.push(this.apiService.getCollections(organizationId).then(c => {\n const collectionPromises: any = [];\n if (c != null && c.data != null && c.data.length > 0) {\n c.data.forEach(r => {\n const collection = new Collection(new CollectionData(r as CollectionDetailsResponse));\n collections.push(collection);\n });\n }\n return Promise.all(collectionPromises);\n }));\n\n promises.push(this.apiService.getCiphersOrganization(organizationId).then(c => {\n const cipherPromises: any = [];\n if (c != null && c.data != null && c.data.length > 0) {\n c.data.filter(item => item.deletedDate === null).forEach(item => {\n const cipher = new Cipher(new CipherData(item));\n ciphers.push(cipher);\n });\n }\n return Promise.all(cipherPromises);\n }));\n\n await Promise.all(promises);\n\n const jsonDoc: any = {\n encrypted: true,\n collections: [],\n items: [],\n };\n\n collections.forEach(c => {\n const collection = new CollectionExport();\n collection.build(c);\n jsonDoc.collections.push(collection);\n });\n\n ciphers.forEach(c => {\n const cipher = new CipherExport();\n cipher.build(c);\n jsonDoc.items.push(cipher);\n });\n return JSON.stringify(jsonDoc, null, ' ');\n }\n\n private padNumber(num: number, width: number, padCharacter: string = '0'): string {\n const numString = num.toString();\n return numString.length >= width ? numString :\n new Array(width - numString.length + 1).join(padCharacter) + numString;\n }\n\n private buildCommonCipher(cipher: any, c: CipherView) {\n cipher.type = null;\n cipher.name = c.name;\n cipher.notes = c.notes;\n cipher.fields = null;\n // Login props\n cipher.login_uri = null;\n cipher.login_username = null;\n cipher.login_password = null;\n cipher.login_totp = null;\n\n if (c.fields) {\n c.fields.forEach((f: any) => {\n if (!cipher.fields) {\n cipher.fields = '';\n } else {\n cipher.fields += '\\n';\n }\n\n cipher.fields += ((f.name || '') + ': ' + f.value);\n });\n }\n\n switch (c.type) {\n case CipherType.Login:\n cipher.type = 'login';\n cipher.login_username = c.login.username;\n cipher.login_password = c.login.password;\n cipher.login_totp = c.login.totp;\n\n if (c.login.uris) {\n cipher.login_uri = [];\n c.login.uris.forEach(u => {\n cipher.login_uri.push(u.uri);\n });\n }\n break;\n case CipherType.SecureNote:\n cipher.type = 'note';\n break;\n default:\n return;\n }\n\n return cipher;\n }\n}\n","import { CipherType } from '../../enums/cipherType';\n\nimport { CipherView } from '../view/cipherView';\n\nimport { Cipher as CipherDomain } from '../domain/cipher';\nimport { CipherString } from '../domain/cipherString';\n\nimport { Card } from './card';\nimport { Field } from './field';\nimport { Identity } from './identity';\nimport { Login } from './login';\nimport { SecureNote } from './secureNote';\n\nexport class Cipher {\n static template(): Cipher {\n const req = new Cipher();\n req.organizationId = null;\n req.folderId = null;\n req.type = CipherType.Login;\n req.name = 'Item name';\n req.notes = 'Some notes about this item.';\n req.favorite = false;\n req.fields = [];\n req.login = null;\n req.secureNote = null;\n req.card = null;\n req.identity = null;\n return req;\n }\n\n static toView(req: Cipher, view = new CipherView()) {\n view.type = req.type;\n view.folderId = req.folderId;\n if (view.organizationId == null) {\n view.organizationId = req.organizationId;\n }\n view.name = req.name;\n view.notes = req.notes;\n view.favorite = req.favorite;\n\n if (req.fields != null) {\n view.fields = req.fields.map(f => Field.toView(f));\n }\n\n switch (req.type) {\n case CipherType.Login:\n view.login = Login.toView(req.login);\n break;\n case CipherType.SecureNote:\n view.secureNote = SecureNote.toView(req.secureNote);\n break;\n case CipherType.Card:\n view.card = Card.toView(req.card);\n break;\n case CipherType.Identity:\n view.identity = Identity.toView(req.identity);\n break;\n }\n\n return view;\n }\n\n static toDomain(req: Cipher, domain = new CipherDomain()) {\n domain.type = req.type;\n domain.folderId = req.folderId;\n if (domain.organizationId == null) {\n domain.organizationId = req.organizationId;\n }\n domain.name = req.name != null ? new CipherString(req.name) : null;\n domain.notes = req.notes != null ? new CipherString(req.notes) : null;\n domain.favorite = req.favorite;\n\n if (req.fields != null) {\n domain.fields = req.fields.map(f => Field.toDomain(f));\n }\n\n switch (req.type) {\n case CipherType.Login:\n domain.login = Login.toDomain(req.login);\n break;\n case CipherType.SecureNote:\n domain.secureNote = SecureNote.toDomain(req.secureNote);\n break;\n case CipherType.Card:\n domain.card = Card.toDomain(req.card);\n break;\n case CipherType.Identity:\n domain.identity = Identity.toDomain(req.identity);\n break;\n }\n\n return domain;\n }\n\n type: CipherType;\n folderId: string;\n organizationId: string;\n name: string;\n notes: string;\n favorite: boolean;\n fields: Field[];\n login: Login;\n secureNote: SecureNote;\n card: Card;\n identity: Identity;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CipherView | CipherDomain) {\n this.organizationId = o.organizationId;\n this.folderId = o.folderId;\n this.type = o.type;\n\n if (o instanceof CipherView) {\n this.name = o.name;\n this.notes = o.notes;\n } else {\n this.name = o.name?.encryptedString;\n this.notes = o.notes?.encryptedString;\n }\n\n this.favorite = o.favorite;\n\n if (o.fields != null) {\n if (o instanceof CipherView) {\n this.fields = o.fields.map(f => new Field(f));\n } else {\n this.fields = o.fields.map(f => new Field(f));\n }\n }\n\n switch (o.type) {\n case CipherType.Login:\n this.login = new Login(o.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNote(o.secureNote);\n break;\n case CipherType.Card:\n this.card = new Card(o.card);\n break;\n case CipherType.Identity:\n this.identity = new Identity(o.identity);\n break;\n }\n }\n}\n","import { CardView } from '../view/cardView';\n\nimport { Card as CardDomain } from '../domain/card';\nimport { CipherString } from '../domain/cipherString';\n\nexport class Card {\n static template(): Card {\n const req = new Card();\n req.cardholderName = 'John Doe';\n req.brand = 'visa';\n req.number = '4242424242424242';\n req.expMonth = '04';\n req.expYear = '2023';\n req.code = '123';\n return req;\n }\n\n static toView(req: Card, view = new CardView()) {\n view.cardholderName = req.cardholderName;\n view.brand = req.brand;\n view.number = req.number;\n view.expMonth = req.expMonth;\n view.expYear = req.expYear;\n view.code = req.code;\n return view;\n }\n\n static toDomain(req: Card, domain = new CardDomain()) {\n domain.cardholderName = req.cardholderName != null ? new CipherString(req.cardholderName) : null;\n domain.brand = req.brand != null ? new CipherString(req.brand) : null;\n domain.number = req.number != null ? new CipherString(req.number) : null;\n domain.expMonth = req.expMonth != null ? new CipherString(req.expMonth) : null;\n domain.expYear = req.expYear != null ? new CipherString(req.expYear) : null;\n domain.code = req.code != null ? new CipherString(req.code) : null;\n return domain;\n }\n\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(o?: CardView | CardDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof CardView) {\n this.cardholderName = o.cardholderName;\n this.brand = o.brand;\n this.number = o.number;\n this.expMonth = o.expMonth;\n this.expYear = o.expYear;\n this.code = o.code;\n } else {\n this.cardholderName = o.cardholderName?.encryptedString;\n this.brand = o.brand?.encryptedString;\n this.number = o.number?.encryptedString;\n this.expMonth = o.expMonth?.encryptedString;\n this.expYear = o.expYear?.encryptedString;\n this.code = o.code?.encryptedString;\n }\n }\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { FieldView } from '../view/fieldView';\n\nimport { CipherString } from '../domain/cipherString';\nimport { Field as FieldDomain } from '../domain/field';\n\nexport class Field {\n static template(): Field {\n const req = new Field();\n req.name = 'Field name';\n req.value = 'Some value';\n req.type = FieldType.Text;\n return req;\n }\n\n static toView(req: Field, view = new FieldView()) {\n view.type = req.type;\n view.value = req.value;\n view.name = req.name;\n return view;\n }\n\n static toDomain(req: Field, domain = new FieldDomain()) {\n domain.type = req.type;\n domain.value = req.value != null ? new CipherString(req.value) : null;\n domain.name = req.name != null ? new CipherString(req.name) : null;\n return domain;\n }\n\n name: string;\n value: string;\n type: FieldType;\n\n constructor(o?: FieldView | FieldDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof FieldView) {\n this.name = o.name;\n this.value = o.value;\n } else {\n this.name = o.name?.encryptedString;\n this.value = o.value?.encryptedString;\n }\n this.type = o.type;\n }\n}\n","import { IdentityView } from '../view/identityView';\n\nimport { CipherString } from '../domain/cipherString';\nimport { Identity as IdentityDomain } from '../domain/identity';\n\nexport class Identity {\n static template(): Identity {\n const req = new Identity();\n req.title = 'Mr';\n req.firstName = 'John';\n req.middleName = 'William';\n req.lastName = 'Doe';\n req.address1 = '123 Any St';\n req.address2 = 'Apt #123';\n req.address3 = null;\n req.city = 'New York';\n req.state = 'NY';\n req.postalCode = '10001';\n req.country = 'US';\n req.company = 'Acme Inc.';\n req.email = 'john@company.com';\n req.phone = '5555551234';\n req.ssn = '000-123-4567';\n req.username = 'jdoe';\n req.passportNumber = 'US-123456789';\n req.licenseNumber = 'D123-12-123-12333';\n return req;\n }\n\n static toView(req: Identity, view = new IdentityView()) {\n view.title = req.title;\n view.firstName = req.firstName;\n view.middleName = req.middleName;\n view.lastName = req.lastName;\n view.address1 = req.address1;\n view.address2 = req.address2;\n view.address3 = req.address3;\n view.city = req.city;\n view.state = req.state;\n view.postalCode = req.postalCode;\n view.country = req.country;\n view.company = req.company;\n view.email = req.email;\n view.phone = req.phone;\n view.ssn = req.ssn;\n view.username = req.username;\n view.passportNumber = req.passportNumber;\n view.licenseNumber = req.licenseNumber;\n return view;\n }\n\n static toDomain(req: Identity, domain = new IdentityDomain()) {\n domain.title = req.title != null ? new CipherString(req.title) : null;\n domain.firstName = req.firstName != null ? new CipherString(req.firstName) : null;\n domain.middleName = req.middleName != null ? new CipherString(req.middleName) : null;\n domain.lastName = req.lastName != null ? new CipherString(req.lastName) : null;\n domain.address1 = req.address1 != null ? new CipherString(req.address1) : null;\n domain.address2 = req.address2 != null ? new CipherString(req.address2) : null;\n domain.address3 = req.address3 != null ? new CipherString(req.address3) : null;\n domain.city = req.city != null ? new CipherString(req.city) : null;\n domain.state = req.state != null ? new CipherString(req.state) : null;\n domain.postalCode = req.postalCode != null ? new CipherString(req.postalCode) : null;\n domain.country = req.country != null ? new CipherString(req.country) : null;\n domain.company = req.company != null ? new CipherString(req.company) : null;\n domain.email = req.email != null ? new CipherString(req.email) : null;\n domain.phone = req.phone != null ? new CipherString(req.phone) : null;\n domain.ssn = req.ssn != null ? new CipherString(req.ssn) : null;\n domain.username = req.username != null ? new CipherString(req.username) : null;\n domain.passportNumber = req.passportNumber != null ? new CipherString(req.passportNumber) : null;\n domain.licenseNumber = req.licenseNumber != null ? new CipherString(req.licenseNumber) : null;\n return domain;\n }\n\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(o?: IdentityView | IdentityDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof IdentityView) {\n this.title = o.title;\n this.firstName = o.firstName;\n this.middleName = o.middleName;\n this.lastName = o.lastName;\n this.address1 = o.address1;\n this.address2 = o.address2;\n this.address3 = o.address3;\n this.city = o.city;\n this.state = o.state;\n this.postalCode = o.postalCode;\n this.country = o.country;\n this.company = o.company;\n this.email = o.email;\n this.phone = o.phone;\n this.ssn = o.ssn;\n this.username = o.username;\n this.passportNumber = o.passportNumber;\n this.licenseNumber = o.licenseNumber;\n } else {\n this.title = o.title?.encryptedString;\n this.firstName = o.firstName?.encryptedString;\n this.middleName = o.middleName?.encryptedString;\n this.lastName = o.lastName?.encryptedString;\n this.address1 = o.address1?.encryptedString;\n this.address2 = o.address2?.encryptedString;\n this.address3 = o.address3?.encryptedString;\n this.city = o.city?.encryptedString;\n this.state = o.state?.encryptedString;\n this.postalCode = o.postalCode?.encryptedString;\n this.country = o.country?.encryptedString;\n this.company = o.company?.encryptedString;\n this.email = o.email?.encryptedString;\n this.phone = o.phone?.encryptedString;\n this.ssn = o.ssn?.encryptedString;\n this.username = o.username?.encryptedString;\n this.passportNumber = o.passportNumber?.encryptedString;\n this.licenseNumber = o.licenseNumber?.encryptedString;\n }\n }\n}\n","import { LoginUri } from './loginUri';\n\nimport { LoginView } from '../view/loginView';\n\nimport { CipherString } from '../domain/cipherString';\nimport { Login as LoginDomain } from '../domain/login';\n\nexport class Login {\n static template(): Login {\n const req = new Login();\n req.uris = [];\n req.username = 'jdoe';\n req.password = 'myp@ssword123';\n req.totp = 'JBSWY3DPEHPK3PXP';\n return req;\n }\n\n static toView(req: Login, view = new LoginView()) {\n if (req.uris != null) {\n view.uris = req.uris.map(u => LoginUri.toView(u));\n }\n view.username = req.username;\n view.password = req.password;\n view.totp = req.totp;\n return view;\n }\n\n static toDomain(req: Login, domain = new LoginDomain()) {\n if (req.uris != null) {\n domain.uris = req.uris.map(u => LoginUri.toDomain(u));\n }\n domain.username = req.username != null ? new CipherString(req.username) : null;\n domain.password = req.password != null ? new CipherString(req.password) : null;\n domain.totp = req.totp != null ? new CipherString(req.totp) : null;\n return domain;\n }\n\n uris: LoginUri[];\n username: string;\n password: string;\n totp: string;\n\n constructor(o?: LoginView | LoginDomain) {\n if (o == null) {\n return;\n }\n\n if (o.uris != null) {\n if (o instanceof LoginView) {\n this.uris = o.uris.map(u => new LoginUri(u));\n } else {\n this.uris = o.uris.map(u => new LoginUri(u));\n }\n }\n\n if (o instanceof LoginView) {\n this.username = o.username;\n this.password = o.password;\n this.totp = o.totp;\n } else {\n this.username = o.username?.encryptedString;\n this.password = o.password?.encryptedString;\n this.totp = o.totp?.encryptedString;\n }\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriView } from '../view/loginUriView';\n\nimport { CipherString } from '../domain/cipherString';\nimport { LoginUri as LoginUriDomain } from '../domain/loginUri';\n\nexport class LoginUri {\n static template(): LoginUri {\n const req = new LoginUri();\n req.uri = 'https://google.com';\n req.match = null;\n return req;\n }\n\n static toView(req: LoginUri, view = new LoginUriView()) {\n view.uri = req.uri;\n view.match = req.match;\n return view;\n }\n\n static toDomain(req: LoginUri, domain = new LoginUriDomain()) {\n domain.uri = req.uri != null ? new CipherString(req.uri) : null;\n domain.match = req.match;\n return domain;\n }\n\n uri: string;\n match: UriMatchType = null;\n\n constructor(o?: LoginUriView | LoginUriDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof LoginUriView) {\n this.uri = o.uri;\n } else {\n this.uri = o.uri?.encryptedString;\n }\n this.match = o.match;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteView } from '../view/secureNoteView';\n\nimport { SecureNote as SecureNoteDomain } from '../domain/secureNote';\n\nexport class SecureNote {\n static template(): SecureNote {\n const req = new SecureNote();\n req.type = SecureNoteType.Generic;\n return req;\n }\n\n static toView(req: SecureNote, view = new SecureNoteView()) {\n view.type = req.type;\n return view;\n }\n\n static toDomain(req: SecureNote, view = new SecureNoteDomain()) {\n view.type = req.type;\n return view;\n }\n\n type: SecureNoteType;\n\n constructor(o?: SecureNoteView | SecureNoteDomain) {\n if (o == null) {\n return;\n }\n\n this.type = o.type;\n }\n}\n","import { CollectionView } from '../view/collectionView';\n\nimport { CipherString } from '../domain/cipherString';\nimport { Collection as CollectionDomain } from '../domain/collection';\n\nexport class Collection {\n static template(): Collection {\n const req = new Collection();\n req.organizationId = '00000000-0000-0000-0000-000000000000';\n req.name = 'Collection name';\n req.externalId = null;\n return req;\n }\n\n static toView(req: Collection, view = new CollectionView()) {\n view.name = req.name;\n view.externalId = req.externalId;\n if (view.organizationId == null) {\n view.organizationId = req.organizationId;\n }\n return view;\n }\n\n static toDomain(req: Collection, domain = new CollectionDomain()) {\n domain.name = req.name != null ? new CipherString(req.name) : null;\n domain.externalId = req.externalId;\n if (domain.organizationId == null) {\n domain.organizationId = req.organizationId;\n }\n return domain;\n }\n\n organizationId: string;\n name: string;\n externalId: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CollectionView | CollectionDomain) {\n this.organizationId = o.organizationId;\n if (o instanceof CollectionView) {\n this.name = o.name;\n } else {\n this.name = o.name?.encryptedString;\n }\n this.externalId = o.externalId;\n }\n}\n","import { FolderView } from '../view/folderView';\n\nimport { CipherString } from '../domain/cipherString';\nimport { Folder as FolderDomain } from '../domain/folder';\n\nexport class Folder {\n static template(): Folder {\n const req = new Folder();\n req.name = 'Folder name';\n return req;\n }\n\n static toView(req: Folder, view = new FolderView()) {\n view.name = req.name;\n return view;\n }\n\n static toDomain(req: Folder, domain = new FolderDomain()) {\n domain.name = req.name != null ? new CipherString(req.name) : null;\n return domain;\n }\n\n name: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: FolderView | FolderDomain) {\n if (o instanceof FolderView) {\n this.name = o.name;\n } else {\n this.name = o.name?.encryptedString;\n }\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CollectionService } from '../abstractions/collection.service';\nimport { FolderService } from '../abstractions/folder.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport {\n ImportOption,\n ImportService as ImportServiceAbstraction,\n} from '../abstractions/import.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\n\nimport { Utils } from '../misc/utils';\n\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CollectionRequest } from '../models/request/collectionRequest';\nimport { FolderRequest } from '../models/request/folderRequest';\nimport { ImportCiphersRequest } from '../models/request/importCiphersRequest';\nimport { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest';\nimport { KvpRequest } from '../models/request/kvpRequest';\n\nimport { ErrorResponse } from '../models/response/errorResponse';\nimport { CipherView } from '../models/view/cipherView';\n\nimport { AscendoCsvImporter } from '../importers/ascendoCsvImporter';\nimport { AvastCsvImporter } from '../importers/avastCsvImporter';\nimport { AvastJsonImporter } from '../importers/avastJsonImporter';\nimport { AviraCsvImporter } from '../importers/aviraCsvImporter';\nimport { BitwardenCsvImporter } from '../importers/bitwardenCsvImporter';\nimport { BitwardenJsonImporter } from '../importers/bitwardenJsonImporter';\nimport { BlackBerryCsvImporter } from '../importers/blackBerryCsvImporter';\nimport { BlurCsvImporter } from '../importers/blurCsvImporter';\nimport { ButtercupCsvImporter } from '../importers/buttercupCsvImporter';\nimport { ChromeCsvImporter } from '../importers/chromeCsvImporter';\nimport { ClipperzHtmlImporter } from '../importers/clipperzHtmlImporter';\nimport { CodebookCsvImporter } from '../importers/codebookCsvImporter';\nimport { DashlaneJsonImporter } from '../importers/dashlaneJsonImporter';\nimport { EncryptrCsvImporter } from '../importers/encryptrCsvImporter';\nimport { EnpassCsvImporter } from '../importers/enpassCsvImporter';\nimport { EnpassJsonImporter } from '../importers/enpassJsonImporter';\nimport { FirefoxCsvImporter } from '../importers/firefoxCsvImporter';\nimport { FSecureFskImporter } from '../importers/fsecureFskImporter';\nimport { GnomeJsonImporter } from '../importers/gnomeJsonImporter';\nimport { Importer } from '../importers/importer';\nimport { KasperskyTxtImporter } from '../importers/kasperskyTxtImporter';\nimport { KeePass2XmlImporter } from '../importers/keepass2XmlImporter';\nimport { KeePassXCsvImporter } from '../importers/keepassxCsvImporter';\nimport { KeeperCsvImporter } from '../importers/keeperCsvImporter';\nimport { LastPassCsvImporter } from '../importers/lastpassCsvImporter';\nimport { LogMeOnceCsvImporter } from '../importers/logMeOnceCsvImporter';\nimport { MeldiumCsvImporter } from '../importers/meldiumCsvImporter';\nimport { MSecureCsvImporter } from '../importers/msecureCsvImporter';\nimport { MykiCsvImporter } from '../importers/mykiCsvImporter';\nimport { OnePassword1PifImporter } from '../importers/onepasswordImporters/onepassword1PifImporter';\nimport { OnePasswordMacCsvImporter } from '../importers/onepasswordImporters/onepasswordMacCsvImporter';\nimport { OnePasswordWinCsvImporter } from '../importers/onepasswordImporters/onepasswordWinCsvImporter';\nimport { PadlockCsvImporter } from '../importers/padlockCsvImporter';\nimport { PassKeepCsvImporter } from '../importers/passkeepCsvImporter';\nimport { PassmanJsonImporter } from '../importers/passmanJsonImporter';\nimport { PasspackCsvImporter } from '../importers/passpackCsvImporter';\nimport { PasswordAgentCsvImporter } from '../importers/passwordAgentCsvImporter';\nimport { PasswordBossJsonImporter } from '../importers/passwordBossJsonImporter';\nimport { PasswordDragonXmlImporter } from '../importers/passwordDragonXmlImporter';\nimport { PasswordSafeXmlImporter } from '../importers/passwordSafeXmlImporter';\nimport { PasswordWalletTxtImporter } from '../importers/passwordWalletTxtImporter';\nimport { RememBearCsvImporter } from '../importers/rememBearCsvImporter';\nimport { RoboFormCsvImporter } from '../importers/roboformCsvImporter';\nimport { SafeInCloudXmlImporter } from '../importers/safeInCloudXmlImporter';\nimport { SaferPassCsvImporter } from '../importers/saferpassCsvImport';\nimport { SecureSafeCsvImporter } from '../importers/secureSafeCsvImporter';\nimport { SplashIdCsvImporter } from '../importers/splashIdCsvImporter';\nimport { StickyPasswordXmlImporter } from '../importers/stickyPasswordXmlImporter';\nimport { TrueKeyCsvImporter } from '../importers/truekeyCsvImporter';\nimport { UpmCsvImporter } from '../importers/upmCsvImporter';\nimport { YotiCsvImporter } from '../importers/yotiCsvImporter';\nimport { ZohoVaultCsvImporter } from '../importers/zohoVaultCsvImporter';\n\nexport class ImportService implements ImportServiceAbstraction {\n featuredImportOptions = [\n { id: 'bitwardenjson', name: 'Bitwarden (json)' },\n { id: 'bitwardencsv', name: 'Bitwarden (csv)' },\n { id: 'lastpasscsv', name: 'LastPass (csv)' },\n { id: 'chromecsv', name: 'Chrome (csv)' },\n { id: 'firefoxcsv', name: 'Firefox (csv)' },\n { id: 'keepass2xml', name: 'KeePass 2 (xml)' },\n { id: '1password1pif', name: '1Password (1pif)' },\n { id: 'dashlanejson', name: 'Dashlane (json)' },\n ];\n\n regularImportOptions: ImportOption[] = [\n { id: 'keepassxcsv', name: 'KeePassX (csv)' },\n { id: '1passwordwincsv', name: '1Password 6 and 7 Windows (csv)' },\n { id: '1passwordmaccsv', name: '1Password 6 and 7 Mac (csv)' },\n { id: 'roboformcsv', name: 'RoboForm (csv)' },\n { id: 'keepercsv', name: 'Keeper (csv)' },\n { id: 'enpasscsv', name: 'Enpass (csv)' },\n { id: 'enpassjson', name: 'Enpass (json)' },\n { id: 'safeincloudxml', name: 'SafeInCloud (xml)' },\n { id: 'pwsafexml', name: 'Password Safe (xml)' },\n { id: 'stickypasswordxml', name: 'Sticky Password (xml)' },\n { id: 'msecurecsv', name: 'mSecure (csv)' },\n { id: 'truekeycsv', name: 'True Key (csv)' },\n { id: 'passwordbossjson', name: 'Password Boss (json)' },\n { id: 'zohovaultcsv', name: 'Zoho Vault (csv)' },\n { id: 'splashidcsv', name: 'SplashID (csv)' },\n { id: 'passworddragonxml', name: 'Password Dragon (xml)' },\n { id: 'padlockcsv', name: 'Padlock (csv)' },\n { id: 'passboltcsv', name: 'Passbolt (csv)' },\n { id: 'clipperzhtml', name: 'Clipperz (html)' },\n { id: 'aviracsv', name: 'Avira (csv)' },\n { id: 'saferpasscsv', name: 'SaferPass (csv)' },\n { id: 'upmcsv', name: 'Universal Password Manager (csv)' },\n { id: 'ascendocsv', name: 'Ascendo DataVault (csv)' },\n { id: 'meldiumcsv', name: 'Meldium (csv)' },\n { id: 'passkeepcsv', name: 'PassKeep (csv)' },\n { id: 'operacsv', name: 'Opera (csv)' },\n { id: 'vivaldicsv', name: 'Vivaldi (csv)' },\n { id: 'gnomejson', name: 'GNOME Passwords and Keys/Seahorse (json)' },\n { id: 'blurcsv', name: 'Blur (csv)' },\n { id: 'passwordagentcsv', name: 'Password Agent (csv)' },\n { id: 'passpackcsv', name: 'Passpack (csv)' },\n { id: 'passmanjson', name: 'Passman (json)' },\n { id: 'avastcsv', name: 'Avast Passwords (csv)' },\n { id: 'avastjson', name: 'Avast Passwords (json)' },\n { id: 'fsecurefsk', name: 'F-Secure KEY (fsk)' },\n { id: 'kasperskytxt', name: 'Kaspersky Password Manager (txt)' },\n { id: 'remembearcsv', name: 'RememBear (csv)' },\n { id: 'passwordwallettxt', name: 'PasswordWallet (txt)' },\n { id: 'mykicsv', name: 'Myki (csv)' },\n { id: 'securesafecsv', name: 'SecureSafe (csv)' },\n { id: 'logmeoncecsv', name: 'LogMeOnce (csv)' },\n { id: 'blackberrycsv', name: 'BlackBerry Password Keeper (csv)' },\n { id: 'buttercupcsv', name: 'Buttercup (csv)' },\n { id: 'codebookcsv', name: 'Codebook (csv)' },\n { id: 'encryptrcsv', name: 'Encryptr (csv)' },\n { id: 'yoticsv', name: 'Yoti (csv)' },\n ];\n\n constructor(private cipherService: CipherService, private folderService: FolderService,\n private apiService: ApiService, private i18nService: I18nService,\n private collectionService: CollectionService, private platformUtilsService: PlatformUtilsService) { }\n\n getImportOptions(): ImportOption[] {\n return this.featuredImportOptions.concat(this.regularImportOptions);\n }\n\n async import(importer: Importer, fileContents: string, organizationId: string = null): Promise {\n const importResult = await importer.parse(fileContents);\n if (importResult.success) {\n if (importResult.folders.length === 0 && importResult.ciphers.length === 0) {\n return new Error(this.i18nService.t('importNothingError'));\n } else if (importResult.ciphers.length > 0) {\n const halfway = Math.floor(importResult.ciphers.length / 2);\n const last = importResult.ciphers.length - 1;\n\n if (this.badData(importResult.ciphers[0]) &&\n this.badData(importResult.ciphers[halfway]) &&\n this.badData(importResult.ciphers[last])) {\n return new Error(this.i18nService.t('importFormatError'));\n }\n }\n try {\n await this.postImport(importResult, organizationId);\n } catch (error) {\n const errorResponse = new ErrorResponse(error, 400);\n return this.handleServerError(errorResponse, importResult);\n }\n return null;\n } else {\n return new Error(this.i18nService.t('importFormatError'));\n }\n }\n\n getImporter(format: string, organizationId: string = null): Importer {\n const importer = this.getImporterInstance(format);\n if (importer == null) {\n return null;\n }\n importer.organizationId = organizationId;\n return importer;\n }\n\n private getImporterInstance(format: string) {\n if (format == null || format === '') {\n return null;\n }\n\n switch (format) {\n case 'bitwardencsv':\n return new BitwardenCsvImporter();\n case 'bitwardenjson':\n return new BitwardenJsonImporter();\n case 'lastpasscsv':\n case 'passboltcsv':\n return new LastPassCsvImporter();\n case 'keepassxcsv':\n return new KeePassXCsvImporter();\n case 'aviracsv':\n return new AviraCsvImporter();\n case 'blurcsv':\n return new BlurCsvImporter();\n case 'safeincloudxml':\n return new SafeInCloudXmlImporter();\n case 'padlockcsv':\n return new PadlockCsvImporter();\n case 'keepass2xml':\n return new KeePass2XmlImporter();\n case 'chromecsv':\n case 'operacsv':\n case 'vivaldicsv':\n return new ChromeCsvImporter();\n case 'firefoxcsv':\n return new FirefoxCsvImporter();\n case 'upmcsv':\n return new UpmCsvImporter();\n case 'saferpasscsv':\n return new SaferPassCsvImporter();\n case 'meldiumcsv':\n return new MeldiumCsvImporter();\n case '1password1pif':\n return new OnePassword1PifImporter();\n case '1passwordwincsv':\n return new OnePasswordWinCsvImporter();\n case '1passwordmaccsv':\n return new OnePasswordMacCsvImporter();\n case 'keepercsv':\n return new KeeperCsvImporter();\n case 'passworddragonxml':\n return new PasswordDragonXmlImporter();\n case 'enpasscsv':\n return new EnpassCsvImporter();\n case 'enpassjson':\n return new EnpassJsonImporter();\n case 'pwsafexml':\n return new PasswordSafeXmlImporter();\n case 'dashlanejson':\n return new DashlaneJsonImporter();\n case 'msecurecsv':\n return new MSecureCsvImporter();\n case 'stickypasswordxml':\n return new StickyPasswordXmlImporter();\n case 'truekeycsv':\n return new TrueKeyCsvImporter();\n case 'clipperzhtml':\n return new ClipperzHtmlImporter();\n case 'roboformcsv':\n return new RoboFormCsvImporter();\n case 'ascendocsv':\n return new AscendoCsvImporter();\n case 'passwordbossjson':\n return new PasswordBossJsonImporter();\n case 'zohovaultcsv':\n return new ZohoVaultCsvImporter();\n case 'splashidcsv':\n return new SplashIdCsvImporter();\n case 'passkeepcsv':\n return new PassKeepCsvImporter();\n case 'gnomejson':\n return new GnomeJsonImporter();\n case 'passwordagentcsv':\n return new PasswordAgentCsvImporter();\n case 'passpackcsv':\n return new PasspackCsvImporter();\n case 'passmanjson':\n return new PassmanJsonImporter();\n case 'avastcsv':\n return new AvastCsvImporter();\n case 'avastjson':\n return new AvastJsonImporter();\n case 'fsecurefsk':\n return new FSecureFskImporter();\n case 'kasperskytxt':\n return new KasperskyTxtImporter();\n case 'remembearcsv':\n return new RememBearCsvImporter();\n case 'passwordwallettxt':\n return new PasswordWalletTxtImporter();\n case 'mykicsv':\n return new MykiCsvImporter();\n case 'securesafecsv':\n return new SecureSafeCsvImporter();\n case 'logmeoncecsv':\n return new LogMeOnceCsvImporter();\n case 'blackberrycsv':\n return new BlackBerryCsvImporter();\n case 'buttercupcsv':\n return new ButtercupCsvImporter();\n case 'codebookcsv':\n return new CodebookCsvImporter();\n case 'encryptrcsv':\n return new EncryptrCsvImporter();\n case 'yoticsv':\n return new YotiCsvImporter();\n default:\n return null;\n }\n }\n\n private async postImport(importResult: ImportResult, organizationId: string = null) {\n if (organizationId == null) {\n const request = new ImportCiphersRequest();\n for (let i = 0; i < importResult.ciphers.length; i++) {\n const c = await this.cipherService.encrypt(importResult.ciphers[i]);\n request.ciphers.push(new CipherRequest(c));\n }\n if (importResult.folders != null) {\n for (let i = 0; i < importResult.folders.length; i++) {\n const f = await this.folderService.encrypt(importResult.folders[i]);\n request.folders.push(new FolderRequest(f));\n }\n }\n if (importResult.folderRelationships != null) {\n importResult.folderRelationships.forEach(r =>\n request.folderRelationships.push(new KvpRequest(r[0], r[1])));\n }\n return await this.apiService.postImportCiphers(request);\n } else {\n const request = new ImportOrganizationCiphersRequest();\n for (let i = 0; i < importResult.ciphers.length; i++) {\n importResult.ciphers[i].organizationId = organizationId;\n const c = await this.cipherService.encrypt(importResult.ciphers[i]);\n request.ciphers.push(new CipherRequest(c));\n }\n if (importResult.collections != null) {\n for (let i = 0; i < importResult.collections.length; i++) {\n importResult.collections[i].organizationId = organizationId;\n const c = await this.collectionService.encrypt(importResult.collections[i]);\n request.collections.push(new CollectionRequest(c));\n }\n }\n if (importResult.collectionRelationships != null) {\n importResult.collectionRelationships.forEach(r =>\n request.collectionRelationships.push(new KvpRequest(r[0], r[1])));\n }\n return await this.apiService.postImportOrganizationCiphers(organizationId, request);\n }\n }\n\n private badData(c: CipherView) {\n return (c.name == null || c.name === '--') &&\n (c.type === CipherType.Login && c.login != null && Utils.isNullOrWhitespace(c.login.password));\n }\n\n private handleServerError(errorResponse: ErrorResponse, importResult: ImportResult): Error {\n if (errorResponse.validationErrors == null) {\n return new Error(errorResponse.message);\n }\n\n let errorMessage = '';\n\n Object.entries(errorResponse.validationErrors).forEach(([key, value], index) => {\n let item;\n let itemType;\n const i = Number(key.match(/[0-9]+/)[0]);\n\n switch (key.match(/^\\w+/)[0]) {\n case 'Ciphers':\n item = importResult.ciphers[i];\n itemType = CipherType[item.type];\n break;\n case 'Folders':\n item = importResult.folders[i];\n itemType = 'Folder';\n break;\n case 'Collections':\n item = importResult.collections[i];\n itemType = 'Collection';\n break;\n default:\n return;\n }\n\n if (index > 0) {\n errorMessage += '\\n\\n';\n }\n\n if (itemType !== 'Folder' && itemType !== 'Collection') {\n errorMessage += '[' + (i + 1) + '] ';\n }\n\n errorMessage += '[' + itemType + '] \"' + item.name + '\": ' + value;\n });\n\n return new Error(errorMessage);\n }\n}\n","import { CipherRequest } from './cipherRequest';\nimport { FolderRequest } from './folderRequest';\nimport { KvpRequest } from './kvpRequest';\n\nexport class ImportCiphersRequest {\n ciphers: CipherRequest[] = [];\n folders: FolderRequest[] = [];\n folderRelationships: KvpRequest[] = [];\n}\n","import { CipherRequest } from './cipherRequest';\nimport { CollectionRequest } from './collectionRequest';\nimport { KvpRequest } from './kvpRequest';\n\nexport class ImportOrganizationCiphersRequest {\n ciphers: CipherRequest[] = [];\n collections: CollectionRequest[] = [];\n collectionRelationships: KvpRequest[] = [];\n}\n","export class KvpRequest {\n key: TK;\n value: TV;\n\n constructor(key: TK, value: TV) {\n this.key = key;\n this.value = value;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class AscendoCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 2) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 1]);\n cipher.name = this.getValueOrDefault(value[0], '--');\n\n if (value.length > 2 && (value.length % 2) === 0) {\n for (let i = 0; i < value.length - 2; i += 2) {\n const val: string = value[i + 2];\n const field: string = value[i + 1];\n if (this.isNullOrWhitespace(val) || this.isNullOrWhitespace(field)) {\n continue;\n }\n\n const fieldLower = field.toLowerCase();\n if (cipher.login.password == null && this.passwordFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.password = this.getValueOrDefault(val);\n } else if (cipher.login.username == null &&\n this.usernameFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.username = this.getValueOrDefault(val);\n } else if ((cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.uris = this.makeUriArray(val);\n } else {\n this.processKvp(cipher, field, val);\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class AvastCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name);\n cipher.login.uris = this.makeUriArray(value.web);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.login);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class AvastJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n if (results.logins != null) {\n results.logins.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.custName);\n cipher.notes = this.getValueOrDefault(value.note);\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.password = this.getValueOrDefault(value.pwd);\n cipher.login.username = this.getValueOrDefault(value.loginName);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (results.notes != null) {\n results.notes.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.name = this.getValueOrDefault(value.label);\n cipher.notes = this.getValueOrDefault(value.text);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (results.cards != null) {\n results.cards.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.Card;\n cipher.name = this.getValueOrDefault(value.custName);\n cipher.notes = this.getValueOrDefault(value.note);\n cipher.card.cardholderName = this.getValueOrDefault(value.holderName);\n cipher.card.number = this.getValueOrDefault(value.cardNumber);\n cipher.card.code = this.getValueOrDefault(value.cvv);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n if (value.expirationDate != null) {\n if (value.expirationDate.month != null) {\n cipher.card.expMonth = value.expirationDate.month + '';\n }\n if (value.expirationDate.year != null) {\n cipher.card.expYear = value.expirationDate.year + '';\n }\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class AviraCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name,\n this.getValueOrDefault(this.nameFromUrl(value.website), '--'));\n cipher.login.uris = this.makeUriArray(value.website);\n cipher.login.password = this.getValueOrDefault(value.password);\n\n if (this.isNullOrWhitespace(value.username) && !this.isNullOrWhitespace(value.secondary_username)) {\n cipher.login.username = value.secondary_username;\n } else {\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.notes = this.getValueOrDefault(value.secondary_username);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { CollectionView } from '../models/view/collectionView';\nimport { FieldView } from '../models/view/fieldView';\nimport { FolderView } from '../models/view/folderView';\nimport { LoginView } from '../models/view/loginView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class BitwardenCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.organization && !this.isNullOrWhitespace(value.collections)) {\n const collections = (value.collections as string).split(',');\n collections.forEach(col => {\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === col) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = col;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else if (!this.organization) {\n this.processFolder(result, value.folder);\n }\n\n const cipher = new CipherView();\n cipher.favorite = !this.organization && this.getValueOrDefault(value.favorite, '0') !== '0' ? true : false;\n cipher.type = CipherType.Login;\n cipher.notes = this.getValueOrDefault(value.notes);\n cipher.name = this.getValueOrDefault(value.name, '--');\n\n if (!this.isNullOrWhitespace(value.fields)) {\n const fields = this.splitNewLine(value.fields);\n for (let i = 0; i < fields.length; i++) {\n if (this.isNullOrWhitespace(fields[i])) {\n continue;\n }\n\n const delimPosition = fields[i].lastIndexOf(': ');\n if (delimPosition === -1) {\n continue;\n }\n\n if (cipher.fields == null) {\n cipher.fields = [];\n }\n\n const field = new FieldView();\n field.name = fields[i].substr(0, delimPosition);\n field.value = null;\n field.type = FieldType.Text;\n if (fields[i].length > (delimPosition + 2)) {\n field.value = fields[i].substr(delimPosition + 2);\n }\n cipher.fields.push(field);\n }\n }\n\n const valueType = value.type != null ? value.type.toLowerCase() : null;\n switch (valueType) {\n case 'note':\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n break;\n default:\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n cipher.login.totp = this.getValueOrDefault(value.login_totp || value.totp);\n cipher.login.username = this.getValueOrDefault(value.login_username || value.username);\n cipher.login.password = this.getValueOrDefault(value.login_password || value.password);\n const uris = this.parseSingleRowCsv(value.login_uri || value.uri);\n cipher.login.uris = this.makeUriArray(uris);\n break;\n }\n\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherWithIds } from '../models/export/cipherWithIds';\nimport { CollectionWithId } from '../models/export/collectionWithId';\nimport { FolderWithId } from '../models/export/folderWithId';\n\nexport class BitwardenJsonImporter extends BaseImporter implements Importer {\n private results: any;\n private result: ImportResult;\n\n async parse(data: string): Promise {\n this.result = new ImportResult();\n this.results = JSON.parse(data);\n if (this.results == null || this.results.items == null || this.results.items.length === 0) {\n this.result.success = false;\n return this.result;\n }\n\n if (this.results.encrypted) {\n await this.parseEncrypted();\n } else {\n this.parseDecrypted();\n }\n\n this.result.success = true;\n return this.result;\n }\n\n private async parseEncrypted() {\n const groupingsMap = new Map();\n\n if (this.organization && this.results.collections != null) {\n for (const c of this.results.collections as CollectionWithId[]) {\n const collection = CollectionWithId.toDomain(c);\n if (collection != null) {\n collection.id = null;\n collection.organizationId = this.organizationId;\n const view = await collection.decrypt();\n groupingsMap.set(c.id, this.result.collections.length);\n this.result.collections.push(view);\n }\n }\n } else if (!this.organization && this.results.folders != null) {\n for (const f of this.results.folders as FolderWithId[]) {\n const folder = FolderWithId.toDomain(f);\n if (folder != null) {\n folder.id = null;\n const view = await folder.decrypt();\n groupingsMap.set(f.id, this.result.folders.length);\n this.result.folders.push(view);\n }\n }\n }\n\n for (const c of this.results.items as CipherWithIds[]) {\n const cipher = CipherWithIds.toDomain(c);\n // reset ids incase they were set for some reason\n cipher.id = null;\n cipher.folderId = null;\n cipher.organizationId = this.organizationId;\n cipher.collectionIds = null;\n\n // make sure password history is limited\n if (cipher.passwordHistory != null && cipher.passwordHistory.length > 5) {\n cipher.passwordHistory = cipher.passwordHistory.slice(0, 5);\n }\n\n if (!this.organization && c.folderId != null && groupingsMap.has(c.folderId)) {\n this.result.folderRelationships.push([this.result.ciphers.length, groupingsMap.get(c.folderId)]);\n } else if (this.organization && c.collectionIds != null) {\n c.collectionIds.forEach(cId => {\n if (groupingsMap.has(cId)) {\n this.result.collectionRelationships.push([this.result.ciphers.length, groupingsMap.get(cId)]);\n }\n });\n }\n\n const view = await cipher.decrypt();\n this.cleanupCipher(view);\n this.result.ciphers.push(view);\n }\n }\n\n private parseDecrypted() {\n const groupingsMap = new Map();\n if (this.organization && this.results.collections != null) {\n this.results.collections.forEach((c: CollectionWithId) => {\n const collection = CollectionWithId.toView(c);\n if (collection != null) {\n collection.id = null;\n collection.organizationId = null;\n groupingsMap.set(c.id, this.result.collections.length);\n this.result.collections.push(collection);\n }\n });\n } else if (!this.organization && this.results.folders != null) {\n this.results.folders.forEach((f: FolderWithId) => {\n const folder = FolderWithId.toView(f);\n if (folder != null) {\n folder.id = null;\n groupingsMap.set(f.id, this.result.folders.length);\n this.result.folders.push(folder);\n }\n });\n }\n\n this.results.items.forEach((c: CipherWithIds) => {\n const cipher = CipherWithIds.toView(c);\n // reset ids incase they were set for some reason\n cipher.id = null;\n cipher.folderId = null;\n cipher.organizationId = null;\n cipher.collectionIds = null;\n\n // make sure password history is limited\n if (cipher.passwordHistory != null && cipher.passwordHistory.length > 5) {\n cipher.passwordHistory = cipher.passwordHistory.slice(0, 5);\n }\n\n if (!this.organization && c.folderId != null && groupingsMap.has(c.folderId)) {\n this.result.folderRelationships.push([this.result.ciphers.length, groupingsMap.get(c.folderId)]);\n } else if (this.organization && c.collectionIds != null) {\n c.collectionIds.forEach(cId => {\n if (groupingsMap.has(cId)) {\n this.result.collectionRelationships.push([this.result.ciphers.length, groupingsMap.get(cId)]);\n }\n });\n }\n\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class BlackBerryCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.grouping === 'list') {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.favorite = value.fav === '1';\n cipher.name = this.getValueOrDefault(value.name);\n cipher.notes = this.getValueOrDefault(value.extra);\n if (value.grouping !== 'note') {\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.username);\n }\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class BlurCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.label === 'null') {\n value.label = null;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.label,\n this.getValueOrDefault(this.nameFromUrl(value.domain), '--'));\n cipher.login.uris = this.makeUriArray(value.domain);\n cipher.login.password = this.getValueOrDefault(value.password);\n\n if (this.isNullOrWhitespace(value.email) && !this.isNullOrWhitespace(value.username)) {\n cipher.login.username = value.username;\n } else {\n cipher.login.username = this.getValueOrDefault(value.email);\n cipher.notes = this.getValueOrDefault(value.username);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nconst OfficialProps = [\n '!group_id', '!group_name', 'title', 'username', 'password', 'URL', 'id',\n];\n\nexport class ButtercupCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n this.processFolder(result, this.getValueOrDefault(value['!group_name']));\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.title, '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.URL);\n\n let processingCustomFields = false;\n for (const prop in value) {\n if (value.hasOwnProperty(prop)) {\n if (!processingCustomFields && OfficialProps.indexOf(prop) === -1) {\n processingCustomFields = true;\n }\n if (processingCustomFields) {\n this.processKvp(cipher, prop, value[prop]);\n }\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class ChromeCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class ClipperzHtmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const textarea = doc.querySelector('textarea');\n if (textarea == null || this.isNullOrWhitespace(textarea.textContent)) {\n result.errorMessage = 'Missing textarea.';\n result.success = false;\n return Promise.resolve(result);\n }\n\n const entries = JSON.parse(textarea.textContent);\n entries.forEach((entry: any) => {\n const cipher = this.initLoginCipher();\n if (!this.isNullOrWhitespace(entry.label)) {\n cipher.name = entry.label.split(' ')[0];\n }\n if (entry.data != null && !this.isNullOrWhitespace(entry.data.notes)) {\n cipher.notes = entry.data.notes.split('\\\\n').join('\\n');\n }\n\n if (entry.currentVersion != null && entry.currentVersion.fields != null) {\n for (const property in entry.currentVersion.fields) {\n if (!entry.currentVersion.fields.hasOwnProperty(property)) {\n continue;\n }\n\n const field = entry.currentVersion.fields[property];\n const actionType = field.actionType != null ? field.actionType.toLowerCase() : null;\n switch (actionType) {\n case 'password':\n cipher.login.password = this.getValueOrDefault(field.value);\n break;\n case 'email':\n case 'username':\n case 'user':\n case 'name':\n cipher.login.username = this.getValueOrDefault(field.value);\n break;\n case 'url':\n cipher.login.uris = this.makeUriArray(field.value);\n break;\n default:\n const labelLower = field.label != null ? field.label.toLowerCase() : null;\n if (cipher.login.password == null && this.passwordFieldNames.indexOf(labelLower) > -1) {\n cipher.login.password = this.getValueOrDefault(field.value);\n } else if (cipher.login.username == null &&\n this.usernameFieldNames.indexOf(labelLower) > -1) {\n cipher.login.username = this.getValueOrDefault(field.value);\n } else if ((cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(labelLower) > -1) {\n cipher.login.uris = this.makeUriArray(field.value);\n } else {\n this.processKvp(cipher, field.label, field.value);\n }\n break;\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class CodebookCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n this.processFolder(result, this.getValueOrDefault(value.Category));\n\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.Favorite) === 'True';\n cipher.name = this.getValueOrDefault(value.Entry, '--');\n cipher.notes = this.getValueOrDefault(value.Note);\n cipher.login.username = this.getValueOrDefault(value.Username, value.Email);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.totp = this.getValueOrDefault(value.TOTP);\n cipher.login.uris = this.makeUriArray(value.Website);\n\n if (!this.isNullOrWhitespace(value.Username)) {\n this.processKvp(cipher, 'Email', value.Email);\n }\n this.processKvp(cipher, 'Phone', value.Phone);\n this.processKvp(cipher, 'PIN', value.PIN);\n this.processKvp(cipher, 'Account', value.Account);\n this.processKvp(cipher, 'Date', value.Date);\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { IdentityView } from '../models/view/identityView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nconst HandledResults = new Set(['ADDRESS', 'AUTHENTIFIANT', 'BANKSTATEMENT', 'IDCARD', 'IDENTITY',\n 'PAYMENTMEANS_CREDITCARD', 'PAYMENTMEAN_PAYPAL', 'EMAIL']);\n\nexport class DashlaneJsonImporter extends BaseImporter implements Importer {\n private result: ImportResult;\n\n parse(data: string): Promise {\n this.result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.length === 0) {\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n if (results.ADDRESS != null) {\n this.processAddress(results.ADDRESS);\n }\n if (results.AUTHENTIFIANT != null) {\n this.processAuth(results.AUTHENTIFIANT);\n }\n if (results.BANKSTATEMENT != null) {\n this.processNote(results.BANKSTATEMENT, 'BankAccountName');\n }\n if (results.IDCARD != null) {\n this.processNote(results.IDCARD, 'Fullname');\n }\n if (results.PAYMENTMEANS_CREDITCARD != null) {\n this.processCard(results.PAYMENTMEANS_CREDITCARD);\n }\n if (results.IDENTITY != null) {\n this.processIdentity(results.IDENTITY);\n }\n\n for (const key in results) {\n if (results.hasOwnProperty(key) && !HandledResults.has(key)) {\n this.processNote(results[key], null, 'Generic Note');\n }\n }\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n private processAuth(results: any[]) {\n results.forEach((credential: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(credential.title);\n\n cipher.login.username = this.getValueOrDefault(credential.login,\n this.getValueOrDefault(credential.secondaryLogin));\n if (this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = this.getValueOrDefault(credential.email);\n } else if (!this.isNullOrWhitespace(credential.email)) {\n cipher.notes = ('Email: ' + credential.email + '\\n');\n }\n\n cipher.login.password = this.getValueOrDefault(credential.password);\n cipher.login.uris = this.makeUriArray(credential.domain);\n cipher.notes += this.getValueOrDefault(credential.note, '');\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processIdentity(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.name = this.getValueOrDefault(obj.fullName, '');\n const nameParts = cipher.name.split(' ');\n if (nameParts.length > 0) {\n cipher.identity.firstName = this.getValueOrDefault(nameParts[0]);\n }\n if (nameParts.length === 2) {\n cipher.identity.lastName = this.getValueOrDefault(nameParts[1]);\n } else if (nameParts.length === 3) {\n cipher.identity.middleName = this.getValueOrDefault(nameParts[1]);\n cipher.identity.lastName = this.getValueOrDefault(nameParts[2]);\n }\n cipher.identity.username = this.getValueOrDefault(obj.pseudo);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processAddress(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.name = this.getValueOrDefault(obj.addressName);\n cipher.identity.address1 = this.getValueOrDefault(obj.addressFull);\n cipher.identity.city = this.getValueOrDefault(obj.city);\n cipher.identity.state = this.getValueOrDefault(obj.state);\n cipher.identity.postalCode = this.getValueOrDefault(obj.zipcode);\n cipher.identity.country = this.getValueOrDefault(obj.country);\n if (cipher.identity.country != null) {\n cipher.identity.country = cipher.identity.country.toUpperCase();\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processCard(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n cipher.name = this.getValueOrDefault(obj.bank);\n cipher.card.number = this.getValueOrDefault(obj.cardNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.cardholderName = this.getValueOrDefault(obj.owner);\n if (!this.isNullOrWhitespace(cipher.card.brand)) {\n if (this.isNullOrWhitespace(cipher.name)) {\n cipher.name = cipher.card.brand;\n } else {\n cipher.name += (' - ' + cipher.card.brand);\n }\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processNote(results: any[], nameProperty: string, name: string = null) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.secureNote = new SecureNoteView();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n if (name != null) {\n cipher.name = name;\n } else {\n cipher.name = this.getValueOrDefault(obj[nameProperty]);\n }\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && key !== nameProperty) {\n this.processKvp(cipher, key, obj[key].toString());\n }\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class EncryptrCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Label, '--');\n cipher.notes = this.getValueOrDefault(value.Notes);\n const text = this.getValueOrDefault(value.Text);\n if (!this.isNullOrWhitespace(text)) {\n if (this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = text;\n } else {\n cipher.notes += ('\\n\\n' + text);\n }\n }\n\n const type = value['Entry Type'];\n if (type === 'Password') {\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value['Site URL']);\n } else if (type === 'Credit Card') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value['Name on card']);\n cipher.card.number = this.getValueOrDefault(value['Card Number']);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.CVV);\n const expiry = this.getValueOrDefault(value.Expiry);\n if (!this.isNullOrWhitespace(expiry)) {\n const expParts = expiry.split('/');\n if (expParts.length > 1) {\n cipher.card.expMonth = parseInt(expParts[0], null).toString();\n cipher.card.expYear = (2000 + parseInt(expParts[1], null)).toString();\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { CardView } from '../models/view/cardView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nexport class EnpassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let firstRow = true;\n results.forEach(value => {\n if (value.length < 2 || (firstRow && (value[0] === 'Title' || value[0] === 'title'))) {\n firstRow = false;\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 1]);\n cipher.name = this.getValueOrDefault(value[0], '--');\n\n if (value.length === 2 || (!this.containsField(value, 'username') &&\n !this.containsField(value, 'password') && !this.containsField(value, 'email') &&\n !this.containsField(value, 'url'))) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n }\n\n if (this.containsField(value, 'cardholder') && this.containsField(value, 'number') &&\n this.containsField(value, 'expiry date')) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n }\n\n if (value.length > 2 && (value.length % 2) === 0) {\n for (let i = 0; i < value.length - 2; i += 2) {\n const fieldValue: string = value[i + 2];\n if (this.isNullOrWhitespace(fieldValue)) {\n continue;\n }\n\n const fieldName: string = value[i + 1];\n const fieldNameLower = fieldName.toLowerCase();\n\n if (cipher.type === CipherType.Login) {\n if (fieldNameLower === 'url' && (cipher.login.uris == null || cipher.login.uris.length === 0)) {\n cipher.login.uris = this.makeUriArray(fieldValue);\n continue;\n } else if ((fieldNameLower === 'username' || fieldNameLower === 'email') &&\n this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = fieldValue;\n continue;\n } else if (fieldNameLower === 'password' && this.isNullOrWhitespace(cipher.login.password)) {\n cipher.login.password = fieldValue;\n continue;\n } else if (fieldNameLower === 'totp' && this.isNullOrWhitespace(cipher.login.totp)) {\n cipher.login.totp = fieldValue;\n continue;\n }\n } else if (cipher.type === CipherType.Card) {\n if (fieldNameLower === 'cardholder' && this.isNullOrWhitespace(cipher.card.cardholderName)) {\n cipher.card.cardholderName = fieldValue;\n continue;\n } else if (fieldNameLower === 'number' && this.isNullOrWhitespace(cipher.card.number)) {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n continue;\n } else if (fieldNameLower === 'cvc' && this.isNullOrWhitespace(cipher.card.code)) {\n cipher.card.code = fieldValue;\n continue;\n } else if (fieldNameLower === 'expiry date' && this.isNullOrWhitespace(cipher.card.expMonth) &&\n this.isNullOrWhitespace(cipher.card.expYear)) {\n if (this.setCardExpiration(cipher, fieldValue)) {\n continue;\n }\n } else if (fieldNameLower === 'type') {\n // Skip since brand was determined from number above\n continue;\n }\n }\n\n this.processKvp(cipher, fieldName, fieldValue);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private containsField(fields: any[], name: string) {\n if (fields == null || name == null) {\n return false;\n }\n return fields.filter(f => !this.isNullOrWhitespace(f) &&\n f.toLowerCase() === name.toLowerCase()).length > 0;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FolderView } from '../models/view/folderView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\n\nexport class EnpassJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null || results.items.length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n const foldersIndexMap = new Map();\n const folderTree = this.buildFolderTree(results.folders);\n this.flattenFolderTree(null, folderTree, foldersMap);\n foldersMap.forEach((val, key) => {\n foldersIndexMap.set(key, result.folders.length);\n const f = new FolderView();\n f.name = val;\n result.folders.push(f);\n });\n\n results.items.forEach((item: any) => {\n if (item.folders != null && item.folders.length > 0 && foldersIndexMap.has(item.folders[0])) {\n result.folderRelationships.push([result.ciphers.length, foldersIndexMap.get(item.folders[0])]);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(item.title);\n cipher.favorite = item.favorite > 0;\n\n if (item.template_type != null && item.fields != null && item.fields.length > 0) {\n if (item.template_type.indexOf('login.') === 0 || item.template_type.indexOf('password.') === 0) {\n this.processLogin(cipher, item.fields);\n } else if (item.template_type.indexOf('creditcard.') === 0) {\n this.processCard(cipher, item.fields);\n } else if (item.template_type.indexOf('identity.') < 0 &&\n item.fields.some((f: any) => f.type === 'password' && !this.isNullOrWhitespace(f.value))) {\n this.processLogin(cipher, item.fields);\n } else {\n this.processNote(cipher, item.fields);\n }\n }\n\n cipher.notes += ('\\n' + this.getValueOrDefault(item.note, ''));\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private processLogin(cipher: CipherView, fields: any[]) {\n const urls: string[] = [];\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === 'section') {\n return;\n }\n\n if ((field.type === 'username' || field.type === 'email') &&\n this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = field.value;\n } else if (field.type === 'password' && this.isNullOrWhitespace(cipher.login.password)) {\n cipher.login.password = field.value;\n } else if (field.type === 'totp' && this.isNullOrWhitespace(cipher.login.totp)) {\n cipher.login.totp = field.value;\n } else if (field.type === 'url') {\n urls.push(field.value);\n } else {\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n\n private processCard(cipher: CipherView, fields: any[]) {\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === 'section' || field.type === 'ccType') {\n return;\n }\n\n if (field.type === 'ccName' && this.isNullOrWhitespace(cipher.card.cardholderName)) {\n cipher.card.cardholderName = field.value;\n } else if (field.type === 'ccNumber' && this.isNullOrWhitespace(cipher.card.number)) {\n cipher.card.number = field.value;\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n } else if (field.type === 'ccCvc' && this.isNullOrWhitespace(cipher.card.code)) {\n cipher.card.code = field.value;\n } else if (field.type === 'ccExpiry' && this.isNullOrWhitespace(cipher.card.expYear)) {\n if (!this.setCardExpiration(cipher, field.value)) {\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n }\n } else {\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n }\n });\n }\n\n private processNote(cipher: CipherView, fields: any[]) {\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === 'section') {\n return;\n }\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n });\n }\n\n private buildFolderTree(folders: any[]): any[] {\n if (folders == null) {\n return [];\n }\n const folderTree: any[] = [];\n const map = new Map([]);\n folders.forEach((obj: any) => {\n map.set(obj.uuid, obj);\n obj.children = [];\n });\n folders.forEach((obj: any) => {\n if (obj.parent_uuid != null && obj.parent_uuid !== '' && map.has(obj.parent_uuid)) {\n map.get(obj.parent_uuid).children.push(obj);\n } else {\n folderTree.push(obj);\n }\n });\n return folderTree;\n }\n\n private flattenFolderTree(titlePrefix: string, tree: any[], map: Map) {\n if (tree == null) {\n return;\n }\n tree.forEach((f: any) => {\n if (f.title != null && f.title.trim() !== '') {\n let title = f.title.trim();\n if (titlePrefix != null && titlePrefix.trim() !== '') {\n title = titlePrefix + '/' + title;\n }\n map.set(f.uuid, title);\n if (f.children != null && f.children.length !== 0) {\n this.flattenFolderTree(title, f.children, map);\n }\n }\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class FirefoxCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n const url = this.getValueOrDefault(value.url, this.getValueOrDefault(value.hostname));\n cipher.name = this.getValueOrDefault(this.nameFromUrl(url), '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class FSecureFskImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.data == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n for (const key in results.data) {\n if (!results.data.hasOwnProperty(key)) {\n continue;\n }\n\n const value = results.data[key];\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.service);\n cipher.notes = this.getValueOrDefault(value.notes);\n\n if (value.style === 'website') {\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n } else if (value.style === 'creditcard') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.username);\n cipher.card.number = this.getValueOrDefault(value.creditNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.creditCvv);\n if (!this.isNullOrWhitespace(value.creditExpiry)) {\n if (!this.setCardExpiration(cipher, value.creditExpiry)) {\n this.processKvp(cipher, 'Expiration', value.creditExpiry);\n }\n }\n if (!this.isNullOrWhitespace(value.password)) {\n this.processKvp(cipher, 'PIN', value.password);\n }\n } else {\n continue;\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class GnomeJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || Object.keys(results).length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n for (const keyRing in results) {\n if (!results.hasOwnProperty(keyRing) || this.isNullOrWhitespace(keyRing) ||\n results[keyRing].length === 0) {\n continue;\n }\n\n results[keyRing].forEach((value: any) => {\n if (this.isNullOrWhitespace(value.display_name) || value.display_name.indexOf('http') !== 0) {\n return;\n }\n\n this.processFolder(result, keyRing);\n const cipher = this.initLoginCipher();\n cipher.name = value.display_name.replace('http://', '').replace('https://', '');\n if (cipher.name.length > 30) {\n cipher.name = cipher.name.substring(0, 30);\n }\n cipher.login.password = this.getValueOrDefault(value.secret);\n cipher.login.uris = this.makeUriArray(value.display_name);\n\n if (value.attributes != null) {\n cipher.login.username = value.attributes != null ?\n this.getValueOrDefault(value.attributes.username_value) : null;\n for (const attr in value.attributes) {\n if (!value.attributes.hasOwnProperty(attr) || attr === 'username_value' ||\n attr === 'xdg:schema') {\n continue;\n }\n this.processKvp(cipher, attr, value.attributes[attr]);\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nconst NotesHeader = 'Notes\\n\\n';\nconst ApplicationsHeader = 'Applications\\n\\n';\nconst WebsitesHeader = 'Websites\\n\\n';\nconst Delimiter = '\\n---\\n';\n\nexport class KasperskyTxtImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n\n let notesData: string;\n let applicationsData: string;\n let websitesData: string;\n let workingData = this.splitNewLine(data).join('\\n');\n\n if (workingData.indexOf(NotesHeader) !== -1) {\n const parts = workingData.split(NotesHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n notesData = parts[1];\n }\n }\n if (workingData.indexOf(ApplicationsHeader) !== -1) {\n const parts = workingData.split(ApplicationsHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n applicationsData = parts[1];\n }\n }\n if (workingData.indexOf(WebsitesHeader) === 0) {\n const parts = workingData.split(WebsitesHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n websitesData = parts[1];\n }\n }\n\n const notes = this.parseDataCategory(notesData);\n const applications = this.parseDataCategory(applicationsData);\n const websites = this.parseDataCategory(websitesData);\n\n notes.forEach(n => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(n.get('Name'));\n cipher.notes = this.getValueOrDefault(n.get('Text'));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n websites.concat(applications).forEach(w => {\n const cipher = this.initLoginCipher();\n const nameKey = w.has('Website name') ? 'Website name' : 'Application';\n cipher.name = this.getValueOrDefault(w.get(nameKey), '');\n if (!this.isNullOrWhitespace(w.get('Login name'))) {\n if (!this.isNullOrWhitespace(cipher.name)) {\n cipher.name += ': ';\n }\n cipher.name += w.get('Login name');\n }\n cipher.notes = this.getValueOrDefault(w.get('Comment'));\n if (w.has('Website URL')) {\n cipher.login.uris = this.makeUriArray(w.get('Website URL'));\n }\n cipher.login.username = this.getValueOrDefault(w.get('Login'));\n cipher.login.password = this.getValueOrDefault(w.get('Password'));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseDataCategory(data: string): Map[] {\n if (this.isNullOrWhitespace(data) || data.indexOf(Delimiter) === -1) {\n return [];\n }\n const items: Map[] = [];\n data.split(Delimiter).forEach(p => {\n if (p.indexOf('\\n') === -1) {\n return;\n }\n const item = new Map();\n let itemComment: string;\n let itemCommentKey: string;\n p.split('\\n').forEach(l => {\n if (itemComment != null) {\n itemComment += ('\\n' + l);\n return;\n }\n const colonIndex = l.indexOf(':');\n let key: string;\n let val: string;\n if (colonIndex === -1) {\n return;\n } else {\n key = l.substring(0, colonIndex);\n if (l.length > colonIndex + 1) {\n val = l.substring(colonIndex + 2);\n }\n }\n if (key != null) {\n item.set(key, val);\n }\n if (key === 'Comment' || key === 'Text') {\n itemComment = val;\n itemCommentKey = key;\n }\n });\n if (itemComment != null && itemCommentKey != null) {\n item.set(itemCommentKey, itemComment);\n }\n if (item.size === 0) {\n return;\n }\n items.push(item);\n });\n return items;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { FieldType } from '../enums/fieldType';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { FolderView } from '../models/view/folderView';\n\nexport class KeePass2XmlImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): Promise {\n const doc = this.parseXml(data);\n if (doc == null) {\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n const rootGroup = doc.querySelector('KeePassFile > Root > Group');\n if (rootGroup == null) {\n this.result.errorMessage = 'Missing `KeePassFile > Root > Group` node.';\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n this.traverse(rootGroup, true, '');\n\n if (this.organization) {\n this.moveFoldersToCollections(this.result);\n }\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n traverse(node: Element, isRootNode: boolean, groupPrefixName: string) {\n const folderIndex = this.result.folders.length;\n let groupName = groupPrefixName;\n\n if (!isRootNode) {\n if (groupName !== '') {\n groupName += '/';\n }\n const nameEl = this.querySelectorDirectChild(node, 'Name');\n groupName += nameEl == null ? '-' : nameEl.textContent;\n const folder = new FolderView();\n folder.name = groupName;\n this.result.folders.push(folder);\n }\n\n this.querySelectorAllDirectChild(node, 'Entry').forEach(entry => {\n const cipherIndex = this.result.ciphers.length;\n\n const cipher = this.initLoginCipher();\n this.querySelectorAllDirectChild(entry, 'String').forEach(entryString => {\n const valueEl = this.querySelectorDirectChild(entryString, 'Value');\n const value = valueEl != null ? valueEl.textContent : null;\n if (this.isNullOrWhitespace(value)) {\n return;\n }\n const keyEl = this.querySelectorDirectChild(entryString, 'Key');\n const key = keyEl != null ? keyEl.textContent : null;\n\n if (key === 'URL') {\n cipher.login.uris = this.makeUriArray(value);\n } else if (key === 'UserName') {\n cipher.login.username = value;\n } else if (key === 'Password') {\n cipher.login.password = value;\n } else if (key === 'otp') {\n cipher.login.totp = value.replace('key=', '');\n } else if (key === 'Title') {\n cipher.name = value;\n } else if (key === 'Notes') {\n cipher.notes += (value + '\\n');\n } else {\n let type = FieldType.Text;\n const attrs = (valueEl.attributes as any);\n if (attrs.length > 0 && attrs.ProtectInMemory != null &&\n attrs.ProtectInMemory.value === 'True') {\n type = FieldType.Hidden;\n }\n this.processKvp(cipher, key, value, type);\n }\n });\n\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n\n if (!isRootNode) {\n this.result.folderRelationships.push([cipherIndex, folderIndex]);\n }\n });\n\n this.querySelectorAllDirectChild(node, 'Group').forEach(group => {\n this.traverse(group, false, groupName);\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class KeePassXCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.isNullOrWhitespace(value.Title)) {\n return;\n }\n\n value.Group = !this.isNullOrWhitespace(value.Group) && value.Group.startsWith('Root/') ?\n value.Group.replace('Root/', '') : value.Group;\n const groupName = !this.isNullOrWhitespace(value.Group) ? value.Group : null;\n this.processFolder(result, groupName);\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.name = this.getValueOrDefault(value.Title, '--');\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { FolderView } from '../models/view/folderView';\n\nexport class KeeperCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 6) {\n return;\n }\n\n this.processFolder(result, value[0]);\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[5]) + '\\n';\n cipher.name = this.getValueOrDefault(value[1], '--');\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n\n if (value.length > 7) {\n // we have some custom fields.\n for (let i = 7; i < value.length; i = i + 2) {\n this.processKvp(cipher, value[i], value[i + 1]);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FolderView } from '../models/view/folderView';\nimport { IdentityView } from '../models/view/identityView';\nimport { LoginView } from '../models/view/loginView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class LastPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value, index) => {\n const cipherIndex = result.ciphers.length;\n let folderIndex = result.folders.length;\n let grouping = value.grouping;\n if (grouping != null) {\n grouping = grouping.replace(/\\\\/g, '/').replace(/[\\x00-\\x1F\\x7F-\\x9F]/g, '');\n }\n const hasFolder = this.getValueOrDefault(grouping, '(none)') !== '(none)';\n let addFolder = hasFolder;\n\n if (hasFolder) {\n for (let i = 0; i < result.folders.length; i++) {\n if (result.folders[i].name === grouping) {\n addFolder = false;\n folderIndex = i;\n break;\n }\n }\n }\n\n const cipher = this.buildBaseCipher(value);\n if (cipher.type === CipherType.Login) {\n cipher.notes = this.getValueOrDefault(value.extra);\n cipher.login = new LoginView();\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n } else if (cipher.type === CipherType.SecureNote) {\n this.parseSecureNote(value, cipher);\n } else if (cipher.type === CipherType.Card) {\n cipher.card = this.parseCard(value);\n cipher.notes = this.getValueOrDefault(value.notes);\n } else if (cipher.type === CipherType.Identity) {\n cipher.identity = this.parseIdentity(value);\n cipher.notes = this.getValueOrDefault(value.notes);\n if (!this.isNullOrWhitespace(value.ccnum)) {\n // there is a card on this identity too\n const cardCipher = this.buildBaseCipher(value);\n cardCipher.identity = null;\n cardCipher.type = CipherType.Card;\n cardCipher.card = this.parseCard(value);\n result.ciphers.push(cardCipher);\n }\n }\n\n result.ciphers.push(cipher);\n\n if (addFolder) {\n const f = new FolderView();\n f.name = grouping;\n result.folders.push(f);\n }\n if (hasFolder) {\n result.folderRelationships.push([cipherIndex, folderIndex]);\n }\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private buildBaseCipher(value: any) {\n const cipher = new CipherView();\n if (value.hasOwnProperty('profilename') && value.hasOwnProperty('profilelanguage')) {\n // form fill\n cipher.favorite = false;\n cipher.name = this.getValueOrDefault(value.profilename, '--');\n cipher.type = CipherType.Card;\n\n if (!this.isNullOrWhitespace(value.title) || !this.isNullOrWhitespace(value.firstname) ||\n !this.isNullOrWhitespace(value.lastname) || !this.isNullOrWhitespace(value.address1) ||\n !this.isNullOrWhitespace(value.phone) || !this.isNullOrWhitespace(value.username) ||\n !this.isNullOrWhitespace(value.email)) {\n cipher.type = CipherType.Identity;\n }\n } else {\n // site or secure note\n cipher.favorite = !this.organization && this.getValueOrDefault(value.fav, '0') === '1';\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.type = value.url === 'http://sn' ? CipherType.SecureNote : CipherType.Login;\n }\n return cipher;\n }\n\n private parseCard(value: any): CardView {\n const card = new CardView();\n card.cardholderName = this.getValueOrDefault(value.ccname);\n card.number = this.getValueOrDefault(value.ccnum);\n card.code = this.getValueOrDefault(value.cccsc);\n card.brand = this.getCardBrand(value.ccnum);\n\n if (!this.isNullOrWhitespace(value.ccexp) && value.ccexp.indexOf('-') > -1) {\n const ccexpParts = (value.ccexp as string).split('-');\n if (ccexpParts.length > 1) {\n card.expYear = ccexpParts[0];\n card.expMonth = ccexpParts[1];\n if (card.expMonth.length === 2 && card.expMonth[0] === '0') {\n card.expMonth = card.expMonth[1];\n }\n }\n }\n\n return card;\n }\n\n private parseIdentity(value: any): IdentityView {\n const identity = new IdentityView();\n identity.title = this.getValueOrDefault(value.title);\n identity.firstName = this.getValueOrDefault(value.firstname);\n identity.middleName = this.getValueOrDefault(value.middlename);\n identity.lastName = this.getValueOrDefault(value.lastname);\n identity.username = this.getValueOrDefault(value.username);\n identity.company = this.getValueOrDefault(value.company);\n identity.ssn = this.getValueOrDefault(value.ssn);\n identity.address1 = this.getValueOrDefault(value.address1);\n identity.address2 = this.getValueOrDefault(value.address2);\n identity.address3 = this.getValueOrDefault(value.address3);\n identity.city = this.getValueOrDefault(value.city);\n identity.state = this.getValueOrDefault(value.state);\n identity.postalCode = this.getValueOrDefault(value.zip);\n identity.country = this.getValueOrDefault(value.country);\n identity.email = this.getValueOrDefault(value.email);\n identity.phone = this.getValueOrDefault(value.phone);\n\n if (!this.isNullOrWhitespace(identity.title)) {\n identity.title = identity.title.charAt(0).toUpperCase() + identity.title.slice(1);\n }\n\n return identity;\n }\n\n private parseSecureNote(value: any, cipher: CipherView) {\n const extraParts = this.splitNewLine(value.extra);\n let processedNote = false;\n\n if (extraParts.length) {\n const typeParts = extraParts[0].split(':');\n if (typeParts.length > 1 && typeParts[0] === 'NoteType' &&\n (typeParts[1] === 'Credit Card' || typeParts[1] === 'Address')) {\n if (typeParts[1] === 'Credit Card') {\n const mappedData = this.parseSecureNoteMapping(cipher, extraParts, {\n 'Number': 'number',\n 'Name on Card': 'cardholderName',\n 'Security Code': 'code',\n // LP provides date in a format like 'June,2020'\n // Store in expMonth, then parse and modify\n 'Expiration Date': 'expMonth',\n });\n\n if (this.isNullOrWhitespace(mappedData.expMonth) || mappedData.expMonth === ',') {\n // No expiration data\n mappedData.expMonth = undefined;\n } else {\n const [monthString, year] = mappedData.expMonth.split(',');\n // Parse month name into number\n if (!this.isNullOrWhitespace(monthString)) {\n const month = new Date(Date.parse(monthString.trim() + ' 1, 2012')).getMonth() + 1;\n if (isNaN(month)) {\n mappedData.expMonth = undefined;\n } else {\n mappedData.expMonth = month.toString();\n }\n } else {\n mappedData.expMonth = undefined;\n }\n if (!this.isNullOrWhitespace(year)) {\n mappedData.expYear = year;\n }\n }\n\n cipher.type = CipherType.Card;\n cipher.card = mappedData;\n } else if (typeParts[1] === 'Address') {\n const mappedData = this.parseSecureNoteMapping(cipher, extraParts, {\n 'Title': 'title',\n 'First Name': 'firstName',\n 'Last Name': 'lastName',\n 'Middle Name': 'middleName',\n 'Company': 'company',\n 'Address 1': 'address1',\n 'Address 2': 'address2',\n 'Address 3': 'address3',\n 'City / Town': 'city',\n 'State': 'state',\n 'Zip / Postal Code': 'postalCode',\n 'Country': 'country',\n 'Email Address': 'email',\n 'Username': 'username',\n });\n cipher.type = CipherType.Identity;\n cipher.identity = mappedData;\n }\n processedNote = true;\n }\n }\n\n if (!processedNote) {\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.notes = this.getValueOrDefault(value.extra);\n }\n }\n\n private parseSecureNoteMapping(cipher: CipherView, extraParts: string[], map: any): T {\n const dataObj: any = {};\n\n let processingNotes = false;\n extraParts.forEach(extraPart => {\n let key: string = null;\n let val: string = null;\n if (!processingNotes) {\n if (this.isNullOrWhitespace(extraPart)) {\n return;\n }\n const colonIndex = extraPart.indexOf(':');\n if (colonIndex === -1) {\n key = extraPart;\n } else {\n key = extraPart.substring(0, colonIndex);\n if (extraPart.length > colonIndex) {\n val = extraPart.substring(colonIndex + 1);\n }\n }\n if (this.isNullOrWhitespace(key) || this.isNullOrWhitespace(val) || key === 'NoteType') {\n return;\n }\n }\n\n if (processingNotes) {\n cipher.notes += ('\\n' + extraPart);\n } else if (key === 'Notes') {\n if (!this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes += ('\\n' + val);\n } else {\n cipher.notes = val;\n }\n processingNotes = true;\n } else if (map.hasOwnProperty(key)) {\n dataObj[map[key]] = val;\n } else {\n this.processKvp(cipher, key, val);\n }\n });\n\n return dataObj;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class LogMeOnceCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 4) {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[1]);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class MeldiumCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.DisplayName, '--');\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.login.username = this.getValueOrDefault(value.UserName);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.Url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nexport class MSecureCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 3) {\n return;\n }\n\n const folderName = this.getValueOrDefault(value[0], 'Unassigned') !== 'Unassigned' ? value[0] : null;\n this.processFolder(result, folderName);\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[2], '--');\n\n if (value[1] === 'Web Logins' || value[1] === 'Login') {\n cipher.login.uris = this.makeUriArray(value[4]);\n cipher.login.username = this.getValueOrDefault(value[5]);\n cipher.login.password = this.getValueOrDefault(value[6]);\n cipher.notes = !this.isNullOrWhitespace(value[3]) ? value[3].split('\\\\n').join('\\n') : null;\n } else if (value.length > 3) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n for (let i = 3; i < value.length; i++) {\n if (!this.isNullOrWhitespace(value[i])) {\n cipher.notes += (value[i] + '\\n');\n }\n }\n }\n\n if (!this.isNullOrWhitespace(value[1]) && cipher.type !== CipherType.Login) {\n cipher.name = value[1] + ': ' + cipher.name;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { CardView } from '../models/view/cardView';\nimport { IdentityView } from '../models/view/identityView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class MykiCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.nickname, '--');\n cipher.notes = this.getValueOrDefault(value.additionalInfo);\n\n if (value.url !== undefined) {\n // Accounts\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.totp = this.getValueOrDefault(value.twoFactAuthToken);\n } else if (value.cardNumber !== undefined) {\n // Cards\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n cipher.card.cardholderName = this.getValueOrDefault(value.cardName);\n cipher.card.number = this.getValueOrDefault(value.cardNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.expMonth = this.getValueOrDefault(value.exp_month);\n cipher.card.expYear = this.getValueOrDefault(value.exp_year);\n cipher.card.code = this.getValueOrDefault(value.cvv);\n } else if (value.firstName !== undefined) {\n // Identities\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.identity.title = this.getValueOrDefault(value.title);\n cipher.identity.firstName = this.getValueOrDefault(value.firstName);\n cipher.identity.middleName = this.getValueOrDefault(value.middleName);\n cipher.identity.lastName = this.getValueOrDefault(value.lastName);\n cipher.identity.phone = this.getValueOrDefault(value.number);\n cipher.identity.email = this.getValueOrDefault(value.email);\n cipher.identity.address1 = this.getValueOrDefault(value.firstAddressLine);\n cipher.identity.address2 = this.getValueOrDefault(value.secondAddressLine);\n cipher.identity.city = this.getValueOrDefault(value.city);\n cipher.identity.country = this.getValueOrDefault(value.country);\n cipher.identity.postalCode = this.getValueOrDefault(value.zipCode);\n } else if (value.content !== undefined) {\n // Notes\n cipher.secureNote = new SecureNoteView();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.name = this.getValueOrDefault(value.title, '--');\n cipher.notes = this.getValueOrDefault(value.content);\n } else {\n return;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from '../baseImporter';\nimport { Importer } from '../importer';\n\nimport { ImportResult } from '../../models/domain/importResult';\n\nimport { CardView } from '../../models/view/cardView';\nimport { CipherView } from '../../models/view/cipherView';\nimport { IdentityView } from '../../models/view/identityView';\nimport { PasswordHistoryView } from '../../models/view/passwordHistoryView';\nimport { SecureNoteView } from '../../models/view/secureNoteView';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { FieldType } from '../../enums/fieldType';\nimport { SecureNoteType } from '../../enums/secureNoteType';\n\nexport class OnePassword1PifImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): Promise {\n data.split(this.newLineRegex).forEach(line => {\n if (this.isNullOrWhitespace(line) || line[0] !== '{') {\n return;\n }\n const item = JSON.parse(line);\n if (item.trashed === true) {\n return;\n }\n const cipher = this.initLoginCipher();\n\n if (this.isNullOrWhitespace(item.hmac)) {\n this.processStandardItem(item, cipher);\n } else {\n this.processWinOpVaultItem(item, cipher);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n private processWinOpVaultItem(item: any, cipher: CipherView) {\n if (item.overview != null) {\n cipher.name = this.getValueOrDefault(item.overview.title);\n if (item.overview.URLs != null) {\n const urls: string[] = [];\n item.overview.URLs.forEach((url: any) => {\n if (!this.isNullOrWhitespace(url.u)) {\n urls.push(url.u);\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n }\n\n if (item.details != null) {\n if (item.details.passwordHistory != null) {\n this.parsePasswordHistory(item.details.passwordHistory, cipher);\n }\n if (!this.isNullOrWhitespace(item.details.ccnum) || !this.isNullOrWhitespace(item.details.cvv)) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n } else if (!this.isNullOrWhitespace(item.details.firstname) ||\n !this.isNullOrWhitespace(item.details.address1)) {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n }\n if (cipher.type === CipherType.Login && !this.isNullOrWhitespace(item.details.password)) {\n cipher.login.password = item.details.password;\n }\n if (!this.isNullOrWhitespace(item.details.notesPlain)) {\n cipher.notes = item.details.notesPlain.split(this.newLineRegex).join('\\n') + '\\n';\n }\n if (item.details.fields != null) {\n this.parseFields(item.details.fields, cipher, 'designation', 'value', 'name');\n }\n if (item.details.sections != null) {\n item.details.sections.forEach((section: any) => {\n if (section.fields != null) {\n this.parseFields(section.fields, cipher, 'n', 'v', 't');\n }\n });\n }\n }\n }\n\n private processStandardItem(item: any, cipher: CipherView) {\n cipher.favorite = item.openContents && item.openContents.faveIndex ? true : false;\n cipher.name = this.getValueOrDefault(item.title);\n\n if (item.typeName === 'securenotes.SecureNote') {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n } else if (item.typeName === 'wallet.financial.CreditCard') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n } else if (item.typeName === 'identities.Identity') {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n } else {\n cipher.login.uris = this.makeUriArray(item.location);\n }\n\n if (item.secureContents != null) {\n if (item.secureContents.passwordHistory != null) {\n this.parsePasswordHistory(item.secureContents.passwordHistory, cipher);\n }\n if (!this.isNullOrWhitespace(item.secureContents.notesPlain)) {\n cipher.notes = item.secureContents.notesPlain.split(this.newLineRegex).join('\\n') + '\\n';\n }\n if (cipher.type === CipherType.Login) {\n if (!this.isNullOrWhitespace(item.secureContents.password)) {\n cipher.login.password = item.secureContents.password;\n }\n if (item.secureContents.URLs != null) {\n const urls: string[] = [];\n item.secureContents.URLs.forEach((u: any) => {\n if (!this.isNullOrWhitespace(u.url)) {\n urls.push(u.url);\n }\n });\n if (urls.length > 0) {\n cipher.login.uris = this.makeUriArray(urls);\n }\n }\n }\n if (item.secureContents.fields != null) {\n this.parseFields(item.secureContents.fields, cipher, 'designation', 'value', 'name');\n }\n if (item.secureContents.sections != null) {\n item.secureContents.sections.forEach((section: any) => {\n if (section.fields != null) {\n this.parseFields(section.fields, cipher, 'n', 'v', 't');\n }\n });\n }\n }\n }\n\n private parsePasswordHistory(items: any[], cipher: CipherView) {\n const maxSize = items.length > 5 ? 5 : items.length;\n cipher.passwordHistory = items\n .filter((h: any) => !this.isNullOrWhitespace(h.value) && h.time != null)\n .sort((a, b) => b.time - a.time)\n .slice(0, maxSize)\n .map((h: any) => {\n const ph = new PasswordHistoryView();\n ph.password = h.value;\n ph.lastUsedDate = new Date(('' + h.time).length >= 13 ? h.time : h.time * 1000);\n return ph;\n });\n }\n\n private parseFields(fields: any[], cipher: CipherView, designationKey: string, valueKey: string, nameKey: string) {\n fields.forEach((field: any) => {\n if (field[valueKey] == null || field[valueKey].toString().trim() === '') {\n return;\n }\n\n const fieldValue = field[valueKey].toString();\n const fieldDesignation = field[designationKey] != null ? field[designationKey].toString() : null;\n\n if (cipher.type === CipherType.Login) {\n if (this.isNullOrWhitespace(cipher.login.username) && fieldDesignation === 'username') {\n cipher.login.username = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.login.password) && fieldDesignation === 'password') {\n cipher.login.password = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.login.totp) && fieldDesignation != null &&\n fieldDesignation.startsWith('TOTP_')) {\n cipher.login.totp = fieldValue;\n return;\n }\n } else if (cipher.type === CipherType.Card) {\n if (this.isNullOrWhitespace(cipher.card.number) && fieldDesignation === 'ccnum') {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n return;\n } else if (this.isNullOrWhitespace(cipher.card.code) && fieldDesignation === 'cvv') {\n cipher.card.code = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.card.cardholderName) && fieldDesignation === 'cardholder') {\n cipher.card.cardholderName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.card.expiration) && fieldDesignation === 'expiry' &&\n fieldValue.length === 6) {\n cipher.card.expMonth = (fieldValue as string).substr(4, 2);\n if (cipher.card.expMonth[0] === '0') {\n cipher.card.expMonth = cipher.card.expMonth.substr(1, 1);\n }\n cipher.card.expYear = (fieldValue as string).substr(0, 4);\n return;\n } else if (fieldDesignation === 'type') {\n // Skip since brand was determined from number above\n return;\n }\n } else if (cipher.type === CipherType.Identity) {\n const identity = cipher.identity;\n if (this.isNullOrWhitespace(identity.firstName) && fieldDesignation === 'firstname') {\n identity.firstName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.lastName) && fieldDesignation === 'lastname') {\n identity.lastName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.middleName) && fieldDesignation === 'initial') {\n identity.middleName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.phone) && fieldDesignation === 'defphone') {\n identity.phone = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.company) && fieldDesignation === 'company') {\n identity.company = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.email) && fieldDesignation === 'email') {\n identity.email = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.username) && fieldDesignation === 'username') {\n identity.username = fieldValue;\n return;\n } else if (fieldDesignation === 'address') {\n // fieldValue is an object casted into a string, so access the plain value instead\n const { street, city, country, zip } = field[valueKey];\n identity.address1 = this.getValueOrDefault(street);\n identity.city = this.getValueOrDefault(city);\n if (!this.isNullOrWhitespace(country)) {\n identity.country = country.toUpperCase();\n }\n identity.postalCode = this.getValueOrDefault(zip);\n return;\n }\n }\n\n const fieldName = this.isNullOrWhitespace(field[nameKey]) ? 'no_name' : field[nameKey];\n if (fieldName === 'password' && cipher.passwordHistory != null &&\n cipher.passwordHistory.some(h => h.password === fieldValue)) {\n return;\n }\n\n const fieldType = field.k === 'concealed' ? FieldType.Hidden : FieldType.Text;\n this.processKvp(cipher, fieldName, fieldValue, fieldType);\n });\n }\n}\n","import { Importer } from '../importer';\nimport { IgnoredProperties, OnePasswordCsvImporter } from './onepasswordCsvImporter';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { CardView, CipherView, IdentityView } from '../../models/view';\n\nexport class OnePasswordMacCsvImporter extends OnePasswordCsvImporter implements Importer {\n setCipherType(value: any, cipher: CipherView) {\n const onePassType = this.getValueOrDefault(this.getProp(value, 'type'), 'Login');\n switch (onePassType) {\n case 'Credit Card':\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n IgnoredProperties.push('type');\n break;\n case 'Identity':\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n IgnoredProperties.push('type');\n break;\n case 'Login':\n case 'Secure Note':\n IgnoredProperties.push('type');\n default:\n break;\n }\n }\n}\n","import { CipherView } from '../../models/view';\n\nexport class CipherImportContext {\n lowerProperty: string;\n constructor(public importRecord: any, public property: string, public cipher: CipherView) {\n this.lowerProperty = property.toLowerCase();\n }\n}\n","export class View {\n}\n","import { Importer } from '../importer';\nimport { CipherImportContext } from './cipherImportContext';\nimport { OnePasswordCsvImporter } from './onepasswordCsvImporter';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { CardView, CipherView, IdentityView, LoginView } from '../../models/view';\n\nexport class OnePasswordWinCsvImporter extends OnePasswordCsvImporter implements Importer {\n constructor() {\n super();\n this.identityPropertyParsers.push(this.setIdentityAddress);\n }\n\n setCipherType(value: any, cipher: CipherView) {\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n\n if (!this.isNullOrWhitespace(this.getPropByRegexp(value, /\\d+: number/i)) &&\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /\\d+: expiry date/i))) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n }\n\n if (!this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: first name/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: initial/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: last name/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /internet \\d+: email/i))) {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n }\n }\n\n setIdentityAddress(context: CipherImportContext) {\n if (context.lowerProperty.match(/address \\d+: address/i)) {\n this.processKvp(context.cipher, 'address', context.importRecord[context.property]);\n return true;\n }\n return false;\n }\n\n setCreditCardExpiry(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.expiration) && context.lowerProperty.includes('expiry date')) {\n const expSplit = (context.importRecord[context.property] as string).split('/');\n context.cipher.card.expMonth = expSplit[0];\n if (context.cipher.card.expMonth[0] === '0' && context.cipher.card.expMonth.length === 2) {\n context.cipher.card.expMonth = context.cipher.card.expMonth.substr(1, 1);\n }\n context.cipher.card.expYear = expSplit[2].length > 4 ? expSplit[2].substr(0, 4) : expSplit[2];\n return true;\n }\n return false;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CollectionView } from '../models/view/collectionView';\nimport { FolderView } from '../models/view/folderView';\n\nexport class PadlockCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let headers: string[] = null;\n results.forEach(value => {\n if (headers == null) {\n headers = value.map((v: string) => v);\n return;\n }\n\n if (value.length < 2 || value.length !== headers.length) {\n return;\n }\n\n if (!this.isNullOrWhitespace(value[1])) {\n if (this.organization) {\n const tags = (value[1] as string).split(',');\n tags.forEach(tag => {\n tag = tag.trim();\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === tag) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = tag;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else {\n const tags = (value[1] as string).split(',');\n const tag = tags.length > 0 ? tags[0].trim() : null;\n this.processFolder(result, tag);\n }\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n\n for (let i = 2; i < value.length; i++) {\n const header = headers[i].trim().toLowerCase();\n if (this.isNullOrWhitespace(value[i]) || this.isNullOrWhitespace(header)) {\n continue;\n }\n\n if (this.usernameFieldNames.indexOf(header) > -1) {\n cipher.login.username = value[i];\n } else if (this.passwordFieldNames.indexOf(header) > -1) {\n cipher.login.password = value[i];\n } else if (this.uriFieldNames.indexOf(header) > -1) {\n cipher.login.uris = this.makeUriArray(value[i]);\n } else {\n this.processKvp(cipher, headers[i], value[i]);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PassKeepCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n this.processFolder(result, this.getValue('category', value));\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValue('description', value);\n cipher.name = this.getValueOrDefault(this.getValue('title', value), '--');\n cipher.login.username = this.getValue('username', value);\n cipher.login.password = this.getValue('password', value);\n cipher.login.uris = this.makeUriArray(this.getValue('site', value));\n this.processKvp(cipher, 'Password 2', this.getValue('password2', value));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private getValue(key: string, value: any) {\n return this.getValueOrDefault(value[key], this.getValueOrDefault(value[(' ' + key)]));\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PassmanJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((credential: any) => {\n if (credential.tags != null && credential.tags.length > 0) {\n const folderName = credential.tags[0].text;\n this.processFolder(result, folderName);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = credential.label;\n\n cipher.login.username = this.getValueOrDefault(credential.username);\n if (this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = this.getValueOrDefault(credential.email);\n } else if (!this.isNullOrWhitespace(credential.email)) {\n cipher.notes = ('Email: ' + credential.email + '\\n');\n }\n\n cipher.login.password = this.getValueOrDefault(credential.password);\n cipher.login.uris = this.makeUriArray(credential.url);\n cipher.notes += this.getValueOrDefault(credential.description, '');\n if (credential.otp != null) {\n cipher.login.totp = this.getValueOrDefault(credential.otp.secret);\n }\n\n if (credential.custom_fields != null) {\n credential.custom_fields.forEach((customField: any) => {\n switch (customField.field_type) {\n case 'text':\n case 'password':\n this.processKvp(cipher, customField.label, customField.value);\n break;\n }\n });\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CollectionView } from '../models/view/collectionView';\n\nexport class PasspackCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const tagsJson = !this.isNullOrWhitespace(value.Tags) ? JSON.parse(value.Tags) : null;\n const tags: string[] = tagsJson != null && tagsJson.tags != null && tagsJson.tags.length > 0 ?\n tagsJson.tags.map((tagJson: string) => {\n try {\n const t = JSON.parse(tagJson);\n return this.getValueOrDefault(t.tag);\n } catch { }\n return null;\n }).filter((t: string) => !this.isNullOrWhitespace(t)) : null;\n\n if (this.organization && tags != null && tags.length > 0) {\n tags.forEach(tag => {\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === tag) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = tag;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else if (!this.organization && tags != null && tags.length > 0) {\n this.processFolder(result, tags[0]);\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Notes, '');\n cipher.notes += ('\\n\\n' + this.getValueOrDefault(value['Shared Notes'], '') + '\\n');\n cipher.name = this.getValueOrDefault(value['Entry Name'], '--');\n cipher.login.username = this.getValueOrDefault(value['User ID']);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n\n if (value.__parsed_extra != null && value.__parsed_extra.length > 0) {\n value.__parsed_extra.forEach((extra: string) => {\n if (!this.isNullOrWhitespace(extra)) {\n cipher.notes += ('\\n' + extra);\n }\n });\n }\n\n const fieldsJson = !this.isNullOrWhitespace(value['Extra Fields']) ?\n JSON.parse(value['Extra Fields']) : null;\n const fields = fieldsJson != null && fieldsJson.extraFields != null &&\n fieldsJson.extraFields.length > 0 ? fieldsJson.extraFields.map((fieldJson: string) => {\n try {\n return JSON.parse(fieldJson);\n } catch { }\n return null;\n }) : null;\n if (fields != null) {\n fields.forEach((f: any) => {\n if (f != null) {\n this.processKvp(cipher, f.name, f.data);\n }\n });\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordAgentCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let newVersion = true;\n results.forEach(value => {\n if (value.length !== 5 && value.length < 9) {\n return;\n }\n const altFormat = value.length === 10 && value[0] === '0';\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[altFormat ? 1 : 0], '--');\n cipher.login.username = this.getValueOrDefault(value[altFormat ? 2 : 1]);\n cipher.login.password = this.getValueOrDefault(value[altFormat ? 3 : 2]);\n if (value.length === 5) {\n newVersion = false;\n cipher.notes = this.getValueOrDefault(value[4]);\n cipher.login.uris = this.makeUriArray(value[3]);\n } else {\n const folder = this.getValueOrDefault(value[altFormat ? 9 : 8], '(None)');\n let folderName = folder !== '(None)' ? folder.split('\\\\').join('/') : null;\n if (folderName != null) {\n folderName = folder.split(' > ').join('/');\n folderName = folder.split('>').join('/');\n }\n this.processFolder(result, folderName);\n cipher.notes = this.getValueOrDefault(value[altFormat ? 5 : 3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n }\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (newVersion && this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { FolderView } from '../models/view/folderView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class PasswordBossJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n results.folders.forEach((value: any) => {\n foldersMap.set(value.id, value.name);\n });\n const foldersIndexMap = new Map();\n foldersMap.forEach((val, key) => {\n foldersIndexMap.set(key, result.folders.length);\n const f = new FolderView();\n f.name = val;\n result.folders.push(f);\n });\n\n results.items.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.login.uris = this.makeUriArray(value.login_url);\n\n if (value.folder != null && foldersIndexMap.has(value.folder)) {\n result.folderRelationships.push([result.ciphers.length, foldersIndexMap.get(value.folder)]);\n }\n\n if (value.identifiers == null) {\n return;\n }\n\n if (!this.isNullOrWhitespace(value.identifiers.notes)) {\n cipher.notes = value.identifiers.notes.split('\\\\r\\\\n').join('\\n').split('\\\\n').join('\\n');\n }\n\n if (value.type === 'CreditCard') {\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n }\n\n for (const property in value.identifiers) {\n if (!value.identifiers.hasOwnProperty(property)) {\n continue;\n }\n const valObj = value.identifiers[property];\n const val = valObj != null ? valObj.toString() : null;\n if (this.isNullOrWhitespace(val) || property === 'notes' || property === 'ignoreItemInSecurityScore') {\n continue;\n }\n\n if (property === 'custom_fields') {\n valObj.forEach((cf: any) => {\n this.processKvp(cipher, cf.name, cf.value);\n });\n continue;\n }\n\n if (cipher.type === CipherType.Card) {\n if (property === 'cardNumber') {\n cipher.card.number = val;\n cipher.card.brand = this.getCardBrand(val);\n continue;\n } else if (property === 'nameOnCard') {\n cipher.card.cardholderName = val;\n continue;\n } else if (property === 'security_code') {\n cipher.card.code = val;\n continue;\n } else if (property === 'expires') {\n try {\n const expDate = new Date(val);\n cipher.card.expYear = expDate.getFullYear().toString();\n cipher.card.expMonth = (expDate.getMonth() + 1).toString();\n } catch { }\n continue;\n } else if (property === 'cardType') {\n continue;\n }\n } else {\n if ((property === 'username' || property === 'email') &&\n this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = val;\n continue;\n } else if (property === 'password') {\n cipher.login.password = val;\n continue;\n } else if (property === 'totp') {\n cipher.login.totp = val;\n continue;\n } else if ((cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(property) > -1) {\n cipher.login.uris = this.makeUriArray(val);\n continue;\n }\n }\n\n this.processKvp(cipher, property, val);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordDragonXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const records = doc.querySelectorAll('PasswordManager > record');\n Array.from(records).forEach(record => {\n const category = this.querySelectorDirectChild(record, 'Category');\n const categoryText = category != null && !this.isNullOrWhitespace(category.textContent) &&\n category.textContent !== 'Unfiled' ? category.textContent : null;\n this.processFolder(result, categoryText);\n\n const accountName = this.querySelectorDirectChild(record, 'Account-Name');\n const userId = this.querySelectorDirectChild(record, 'User-Id');\n const password = this.querySelectorDirectChild(record, 'Password');\n const url = this.querySelectorDirectChild(record, 'URL');\n const notes = this.querySelectorDirectChild(record, 'Notes');\n const cipher = this.initLoginCipher();\n cipher.name = accountName != null ? this.getValueOrDefault(accountName.textContent, '--') : '--';\n cipher.notes = notes != null ? this.getValueOrDefault(notes.textContent) : '';\n cipher.login.username = userId != null ? this.getValueOrDefault(userId.textContent) : null;\n cipher.login.password = password != null ? this.getValueOrDefault(password.textContent) : null;\n cipher.login.uris = url != null ? this.makeUriArray(url.textContent) : null;\n\n const attributes: string[] = [];\n for (let i = 1; i <= 10; i++) {\n attributes.push('Attribute-' + i);\n }\n\n this.querySelectorAllDirectChild(record, attributes.join(',')).forEach(attr => {\n if (this.isNullOrWhitespace(attr.textContent) || attr.textContent === 'null') {\n return;\n }\n this.processKvp(cipher, attr.tagName, attr.textContent);\n });\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordSafeXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const passwordSafe = doc.querySelector('passwordsafe');\n if (passwordSafe == null) {\n result.errorMessage = 'Missing `passwordsafe` node.';\n result.success = false;\n return Promise.resolve(result);\n }\n\n const notesDelimiter = passwordSafe.getAttribute('delimiter');\n const entries = doc.querySelectorAll('passwordsafe > entry');\n Array.from(entries).forEach(entry => {\n const group = this.querySelectorDirectChild(entry, 'group');\n const groupText = group != null && !this.isNullOrWhitespace(group.textContent) ?\n group.textContent.split('.').join('/') : null;\n this.processFolder(result, groupText);\n\n const title = this.querySelectorDirectChild(entry, 'title');\n const username = this.querySelectorDirectChild(entry, 'username');\n const email = this.querySelectorDirectChild(entry, 'email');\n const password = this.querySelectorDirectChild(entry, 'password');\n const url = this.querySelectorDirectChild(entry, 'url');\n const notes = this.querySelectorDirectChild(entry, 'notes');\n const cipher = this.initLoginCipher();\n cipher.name = title != null ? this.getValueOrDefault(title.textContent, '--') : '--';\n cipher.notes = notes != null ?\n this.getValueOrDefault(notes.textContent, '').split(notesDelimiter).join('\\n') : null;\n cipher.login.username = username != null ? this.getValueOrDefault(username.textContent) : null;\n cipher.login.password = password != null ? this.getValueOrDefault(password.textContent) : null;\n cipher.login.uris = url != null ? this.makeUriArray(url.textContent) : null;\n\n if (this.isNullOrWhitespace(cipher.login.username) && email != null) {\n cipher.login.username = this.getValueOrDefault(email.textContent);\n } else if (email != null && !this.isNullOrWhitespace(email.textContent)) {\n cipher.notes = this.isNullOrWhitespace(cipher.notes) ? 'Email: ' + email.textContent\n : (cipher.notes + '\\n' + 'Email: ' + email.textContent);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordWalletTxtImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 1) {\n return;\n }\n if (value.length > 5) {\n this.processFolder(result, value[5]);\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n if (value.length > 4) {\n cipher.notes = this.getValueOrDefault(value[4], '').split('¬').join('\\n');\n }\n if (value.length > 2) {\n cipher.login.username = this.getValueOrDefault(value[2]);\n }\n if (value.length > 3) {\n cipher.login.password = this.getValueOrDefault(value[3]);\n }\n if (value.length > 1) {\n cipher.login.uris = this.makeUriArray(value[1]);\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { CipherType } from '../enums/cipherType';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\n\nexport class RememBearCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.trash === 'true') {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name);\n cipher.notes = this.getValueOrDefault(value.notes);\n if (value.type === 'LoginItem') {\n cipher.login.uris = this.makeUriArray(value.website);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.username);\n } else if (value.type === 'CreditCardItem') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.cardholder);\n cipher.card.number = this.getValueOrDefault(value.number);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.verification);\n\n try {\n const expMonth = this.getValueOrDefault(value.expiryMonth);\n if (expMonth != null) {\n const expMonthNumber = parseInt(expMonth, null);\n if (expMonthNumber != null && expMonthNumber >= 1 && expMonthNumber <= 12) {\n cipher.card.expMonth = expMonthNumber.toString();\n }\n }\n } catch { }\n try {\n const expYear = this.getValueOrDefault(value.expiryYear);\n if (expYear != null) {\n const expYearNumber = parseInt(expYear, null);\n if (expYearNumber != null) {\n cipher.card.expYear = expYearNumber.toString();\n }\n }\n } catch { }\n\n const pin = this.getValueOrDefault(value.pin);\n if (pin != null) {\n this.processKvp(cipher, 'PIN', pin);\n }\n const zip = this.getValueOrDefault(value.zipCode);\n if (zip != null) {\n this.processKvp(cipher, 'Zip Code', zip);\n }\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class RoboFormCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let i = 1;\n results.forEach(value => {\n const folder = !this.isNullOrWhitespace(value.Folder) && value.Folder.startsWith('/') ?\n value.Folder.replace('/', '') : value.Folder;\n const folderName = !this.isNullOrWhitespace(folder) ? folder : null;\n this.processFolder(result, folderName);\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Note);\n cipher.name = this.getValueOrDefault(value.Name, '--');\n cipher.login.username = this.getValueOrDefault(value.Login);\n cipher.login.password = this.getValueOrDefault(value.Pwd);\n cipher.login.uris = this.makeUriArray(value.Url);\n\n if (!this.isNullOrWhitespace(value.Rf_fields)) {\n let fields: string[] = [value.Rf_fields];\n if (value.__parsed_extra != null && value.__parsed_extra.length > 0) {\n fields = fields.concat(value.__parsed_extra);\n }\n fields.forEach((field: string) => {\n const parts = field.split(':');\n if (parts.length < 3) {\n return;\n }\n const key = parts[0] === '-no-name-' ? null : parts[0];\n const val = parts.length === 4 && parts[2] === 'rck' ? parts[1] : parts[2];\n this.processKvp(cipher, key, val);\n });\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n\n if (i === results.length && cipher.name === '--' && this.isNullOrWhitespace(cipher.login.password)) {\n return;\n }\n\n result.ciphers.push(cipher);\n i++;\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { FolderView } from '../models/view/folderView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class SafeInCloudXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const db = doc.querySelector('database');\n if (db == null) {\n result.errorMessage = 'Missing `database` node.';\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n\n Array.from(doc.querySelectorAll('database > label')).forEach(labelEl => {\n const name = labelEl.getAttribute('name');\n const id = labelEl.getAttribute('id');\n if (!this.isNullOrWhitespace(name) && !this.isNullOrWhitespace(id)) {\n foldersMap.set(id, result.folders.length);\n const folder = new FolderView();\n folder.name = name;\n result.folders.push(folder);\n }\n });\n\n Array.from(doc.querySelectorAll('database > card')).forEach(cardEl => {\n if (cardEl.getAttribute('template') === 'true') {\n return;\n }\n\n const labelIdEl = this.querySelectorDirectChild(cardEl, 'label_id');\n if (labelIdEl != null) {\n const labelId = labelIdEl.textContent;\n if (!this.isNullOrWhitespace(labelId) && foldersMap.has(labelId)) {\n result.folderRelationships.push([result.ciphers.length, foldersMap.get(labelId)]);\n }\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(cardEl.getAttribute('title'), '--');\n\n const cardType = cardEl.getAttribute('type');\n if (cardType === 'note') {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n } else {\n Array.from(this.querySelectorAllDirectChild(cardEl, 'field')).forEach(fieldEl => {\n const text = fieldEl.textContent;\n if (this.isNullOrWhitespace(text)) {\n return;\n }\n const name = fieldEl.getAttribute('name');\n const fieldType = this.getValueOrDefault(fieldEl.getAttribute('type'), '').toLowerCase();\n if (fieldType === 'login') {\n cipher.login.username = text;\n } else if (fieldType === 'password') {\n cipher.login.password = text;\n } else if (fieldType === 'one_time_password') {\n cipher.login.totp = text;\n } else if (fieldType === 'notes') {\n cipher.notes += (text + '\\n');\n } else if (fieldType === 'weblogin' || fieldType === 'website') {\n cipher.login.uris = this.makeUriArray(text);\n } else {\n this.processKvp(cipher, name, text);\n }\n });\n }\n\n Array.from(this.querySelectorAllDirectChild(cardEl, 'notes')).forEach(notesEl => {\n cipher.notes += (notesEl.textContent + '\\n');\n });\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class SaferPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.nameFromUrl(value.url), '--');\n cipher.notes = this.getValueOrDefault(value.notes);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class SecureSafeCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Title);\n cipher.notes = this.getValueOrDefault(value.Comment);\n cipher.login.uris = this.makeUriArray(value.Url);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.username = this.getValueOrDefault(value.Username);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\nimport { CipherView } from '../models/view/cipherView';\n\nexport class SplashIdCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 3) {\n return;\n }\n\n this.processFolder(result, this.getValueOrDefault(value[value.length - 1]));\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 2], '');\n cipher.name = this.getValueOrDefault(value[1], '--');\n\n if (value[0] === 'Web Logins' || value[0] === 'Servers' || value[0] === 'Email Accounts') {\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n this.parseFieldsToNotes(cipher, 5, value);\n } else {\n this.parseFieldsToNotes(cipher, 2, value);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseFieldsToNotes(cipher: CipherView, startIndex: number, value: any) {\n // last 3 rows do not get parsed\n for (let i = startIndex; i < value.length - 3; i++) {\n if (this.isNullOrWhitespace(value[i])) {\n continue;\n }\n cipher.notes += (value[i] + '\\n');\n }\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class StickyPasswordXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const loginNodes = doc.querySelectorAll('root > Database > Logins > Login');\n Array.from(loginNodes).forEach(loginNode => {\n const accountId = loginNode.getAttribute('ID');\n if (this.isNullOrWhitespace(accountId)) {\n return;\n }\n\n const usernameText = loginNode.getAttribute('Name');\n const passwordText = loginNode.getAttribute('Password');\n let titleText: string = null;\n let linkText: string = null;\n let notesText: string = null;\n let groupId: string = null;\n let groupText: string = null;\n\n const accountLogin = doc.querySelector('root > Database > Accounts > Account > ' +\n 'LoginLinks > Login[SourceLoginID=\"' + accountId + '\"]');\n if (accountLogin != null) {\n const account = accountLogin.parentElement.parentElement;\n if (account != null) {\n titleText = account.getAttribute('Name');\n linkText = account.getAttribute('Link');\n groupId = account.getAttribute('ParentID');\n notesText = account.getAttribute('Comments');\n if (!this.isNullOrWhitespace(notesText)) {\n notesText = notesText.split('/n').join('\\n');\n }\n }\n }\n\n if (!this.isNullOrWhitespace(groupId)) {\n groupText = this.buildGroupText(doc, groupId, '');\n this.processFolder(result, groupText);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(titleText, '--');\n cipher.notes = this.getValueOrDefault(notesText);\n cipher.login.username = this.getValueOrDefault(usernameText);\n cipher.login.password = this.getValueOrDefault(passwordText);\n cipher.login.uris = this.makeUriArray(linkText);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n buildGroupText(doc: Document, groupId: string, groupText: string): string {\n const group = doc.querySelector('root > Database > Groups > Group[ID=\"' + groupId + '\"]');\n if (group == null) {\n return groupText;\n }\n if (!this.isNullOrWhitespace(groupText)) {\n groupText = '/' + groupText;\n }\n groupText = group.getAttribute('Name') + groupText;\n return this.buildGroupText(doc, group.getAttribute('ParentID'), groupText);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nconst PropertiesToIgnore = ['kind', 'autologin', 'favorite', 'hexcolor', 'protectedwithpassword', 'subdomainonly',\n 'type', 'tk_export_version', 'note', 'title', 'document_content',\n];\n\nexport class TrueKeyCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.favorite, '').toLowerCase() === 'true';\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.notes = this.getValueOrDefault(value.memo, '');\n cipher.login.username = this.getValueOrDefault(value.login);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n\n if (value.kind !== 'login') {\n cipher.name = this.getValueOrDefault(value.title, '--');\n cipher.notes = this.getValueOrDefault(value.note, '');\n }\n\n if (value.kind === 'cc') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.cardholder);\n cipher.card.number = this.getValueOrDefault(value.number);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n if (!this.isNullOrWhitespace(value.expiryDate)) {\n try {\n const expDate = new Date(value.expiryDate);\n cipher.card.expYear = expDate.getFullYear().toString();\n cipher.card.expMonth = (expDate.getMonth() + 1).toString();\n } catch { }\n }\n } else if (value.kind !== 'login') {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n if (!this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = this.getValueOrDefault(value.document_content, '');\n }\n for (const property in value) {\n if (value.hasOwnProperty(property) && PropertiesToIgnore.indexOf(property.toLowerCase()) < 0 &&\n !this.isNullOrWhitespace(value[property])) {\n this.processKvp(cipher, property, value[property]);\n }\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class UpmCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length !== 5) {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n cipher.notes = this.getValueOrDefault(value[4]);\n cipher.login.username = this.getValueOrDefault(value[1]);\n cipher.login.password = this.getValueOrDefault(value[2]);\n cipher.login.uris = this.makeUriArray(value[3]);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class YotiCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Name, '--');\n cipher.login.username = this.getValueOrDefault(value['User name']);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\nimport { CipherView } from '../models/view';\n\nexport class ZohoVaultCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.isNullOrWhitespace(value['Password Name']) && this.isNullOrWhitespace(value['Secret Name'])) {\n return;\n }\n this.processFolder(result, this.getValueOrDefault(value.ChamberName));\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.Favorite, '0') === '1';\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.name = this.getValueOrDefault(\n value['Password Name'], this.getValueOrDefault(value['Secret Name'], '--'));\n cipher.login.uris = this.makeUriArray(\n this.getValueOrDefault(value['Password URL'], this.getValueOrDefault(value['Secret URL'])));\n this.parseData(cipher, value.SecretData);\n this.parseData(cipher, value.CustomData);\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseData(cipher: CipherView, data: string) {\n if (this.isNullOrWhitespace(data)) {\n return;\n }\n const dataLines = this.splitNewLine(data);\n dataLines.forEach(line => {\n const delimPosition = line.indexOf(':');\n if (delimPosition < 0) {\n return;\n }\n const field = line.substring(0, delimPosition);\n const value = line.length > delimPosition ? line.substring(delimPosition + 1) : null;\n if (this.isNullOrWhitespace(field) || this.isNullOrWhitespace(value) || field === 'SecretType') {\n return;\n }\n const fieldLower = field.toLowerCase();\n if (cipher.login.username == null && this.usernameFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.username = value;\n } else if (cipher.login.password == null && this.passwordFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.password = value;\n } else {\n this.processKvp(cipher, field, value);\n }\n });\n }\n}\n","import * as signalR from '@microsoft/signalr';\nimport * as signalRMsgPack from '@microsoft/signalr-protocol-msgpack';\n\nimport { NotificationType } from '../enums/notificationType';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { AppIdService } from '../abstractions/appId.service';\nimport { EnvironmentService } from '../abstractions/environment.service';\nimport { LogService } from '../abstractions/log.service';\nimport { NotificationsService as NotificationsServiceAbstraction } from '../abstractions/notifications.service';\nimport { SyncService } from '../abstractions/sync.service';\nimport { UserService } from '../abstractions/user.service';\nimport { VaultTimeoutService } from '../abstractions/vaultTimeout.service';\n\nimport {\n NotificationResponse,\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from '../models/response/notificationResponse';\n\nexport class NotificationsService implements NotificationsServiceAbstraction {\n private signalrConnection: signalR.HubConnection;\n private url: string;\n private connected = false;\n private inited = false;\n private inactive = false;\n private reconnectTimer: any = null;\n\n constructor(private userService: UserService, private syncService: SyncService,\n private appIdService: AppIdService, private apiService: ApiService,\n private vaultTimeoutService: VaultTimeoutService,\n private logoutCallback: () => Promise, private logService: LogService) {\n }\n\n async init(environmentService: EnvironmentService): Promise {\n this.inited = false;\n this.url = 'https://notifications.bitwarden.com';\n if (environmentService.notificationsUrl != null) {\n this.url = environmentService.notificationsUrl;\n } else if (environmentService.baseUrl != null) {\n this.url = environmentService.baseUrl + '/notifications';\n }\n\n // Set notifications server URL to `https://-` to effectively disable communication\n // with the notifications server from the client app\n if (this.url === 'https://-') {\n return;\n }\n\n if (this.signalrConnection != null) {\n this.signalrConnection.off('ReceiveMessage');\n this.signalrConnection.off('Heartbeat');\n await this.signalrConnection.stop();\n this.connected = false;\n this.signalrConnection = null;\n }\n\n this.signalrConnection = new signalR.HubConnectionBuilder()\n .withUrl(this.url + '/hub', {\n accessTokenFactory: () => this.apiService.getActiveBearerToken(),\n skipNegotiation: true,\n transport: signalR.HttpTransportType.WebSockets,\n })\n .withHubProtocol(new signalRMsgPack.MessagePackHubProtocol())\n // .configureLogging(signalR.LogLevel.Trace)\n .build();\n\n this.signalrConnection.on('ReceiveMessage',\n (data: any) => this.processNotification(new NotificationResponse(data)));\n this.signalrConnection.on('Heartbeat',\n (data: any) => { /*console.log('Heartbeat!');*/ });\n this.signalrConnection.onclose(() => {\n this.connected = false;\n this.reconnect(true);\n });\n this.inited = true;\n if (await this.isAuthedAndUnlocked()) {\n await this.reconnect(false);\n }\n }\n\n async updateConnection(sync = false): Promise {\n if (!this.inited) {\n return;\n }\n try {\n if (await this.isAuthedAndUnlocked()) {\n await this.reconnect(sync);\n } else {\n await this.signalrConnection.stop();\n }\n } catch (e) {\n this.logService.error(e.toString());\n }\n }\n\n async reconnectFromActivity(): Promise {\n this.inactive = false;\n if (this.inited && !this.connected) {\n await this.reconnect(true);\n }\n }\n\n async disconnectFromInactivity(): Promise {\n this.inactive = true;\n if (this.inited && this.connected) {\n await this.signalrConnection.stop();\n }\n }\n\n private async processNotification(notification: NotificationResponse) {\n const appId = await this.appIdService.getAppId();\n if (notification == null || notification.contextId === appId) {\n return;\n }\n\n const isAuthenticated = await this.userService.isAuthenticated();\n const payloadUserId = notification.payload.userId || notification.payload.UserId;\n const myUserId = await this.userService.getUserId();\n if (isAuthenticated && payloadUserId != null && payloadUserId !== myUserId) {\n return;\n }\n\n switch (notification.type) {\n case NotificationType.SyncCipherCreate:\n case NotificationType.SyncCipherUpdate:\n await this.syncService.syncUpsertCipher(notification.payload as SyncCipherNotification,\n notification.type === NotificationType.SyncCipherUpdate);\n break;\n case NotificationType.SyncCipherDelete:\n case NotificationType.SyncLoginDelete:\n await this.syncService.syncDeleteCipher(notification.payload as SyncCipherNotification);\n break;\n case NotificationType.SyncFolderCreate:\n case NotificationType.SyncFolderUpdate:\n await this.syncService.syncUpsertFolder(notification.payload as SyncFolderNotification,\n notification.type === NotificationType.SyncFolderUpdate);\n break;\n case NotificationType.SyncFolderDelete:\n await this.syncService.syncDeleteFolder(notification.payload as SyncFolderNotification);\n break;\n case NotificationType.SyncVault:\n case NotificationType.SyncCiphers:\n case NotificationType.SyncSettings:\n if (isAuthenticated) {\n await this.syncService.fullSync(false);\n }\n break;\n case NotificationType.SyncOrgKeys:\n if (isAuthenticated) {\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n // Stop so a reconnect can be made\n await this.signalrConnection.stop();\n }\n break;\n case NotificationType.LogOut:\n if (isAuthenticated) {\n this.logoutCallback();\n }\n break;\n case NotificationType.SyncSendCreate:\n case NotificationType.SyncSendUpdate:\n await this.syncService.syncUpsertSend(notification.payload as SyncSendNotification,\n notification.type === NotificationType.SyncSendUpdate);\n break;\n case NotificationType.SyncSendDelete:\n await this.syncService.syncDeleteSend(notification.payload as SyncSendNotification);\n default:\n break;\n }\n }\n\n private async reconnect(sync: boolean) {\n if (this.reconnectTimer != null) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n if (this.connected || !this.inited || this.inactive) {\n return;\n }\n const authedAndUnlocked = await this.isAuthedAndUnlocked();\n if (!authedAndUnlocked) {\n return;\n }\n\n try {\n await this.signalrConnection.start();\n this.connected = true;\n if (sync) {\n await this.syncService.fullSync(false);\n }\n } catch { }\n\n if (!this.connected) {\n this.reconnectTimer = setTimeout(() => this.reconnect(sync), this.random(120000, 300000));\n }\n }\n\n private async isAuthedAndUnlocked() {\n if (await this.userService.isAuthenticated()) {\n const locked = await this.vaultTimeoutService.isLocked();\n return !locked;\n }\n return false;\n }\n\n private random(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { NotificationType } from '../../enums/notificationType';\n\nexport class NotificationResponse extends BaseResponse {\n contextId: string;\n type: NotificationType;\n payload: any;\n\n constructor(response: any) {\n super(response);\n this.contextId = this.getResponseProperty('ContextId');\n this.type = this.getResponseProperty('Type');\n\n const payload = this.getResponseProperty('Payload');\n switch (this.type) {\n case NotificationType.SyncCipherCreate:\n case NotificationType.SyncCipherDelete:\n case NotificationType.SyncCipherUpdate:\n case NotificationType.SyncLoginDelete:\n this.payload = new SyncCipherNotification(payload);\n break;\n case NotificationType.SyncFolderCreate:\n case NotificationType.SyncFolderDelete:\n case NotificationType.SyncFolderUpdate:\n this.payload = new SyncFolderNotification(payload);\n break;\n case NotificationType.SyncVault:\n case NotificationType.SyncCiphers:\n case NotificationType.SyncOrgKeys:\n case NotificationType.SyncSettings:\n case NotificationType.LogOut:\n this.payload = new UserNotification(payload);\n break;\n case NotificationType.SyncSendCreate:\n case NotificationType.SyncSendUpdate:\n case NotificationType.SyncSendDelete:\n this.payload = new SyncSendNotification(payload);\n default:\n break;\n }\n }\n}\n\nexport class SyncCipherNotification extends BaseResponse {\n id: string;\n userId: string;\n organizationId: string;\n collectionIds: string[];\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.collectionIds = this.getResponseProperty('CollectionIds');\n this.revisionDate = new Date(this.getResponseProperty('RevisionDate'));\n }\n}\n\nexport class SyncFolderNotification extends BaseResponse {\n id: string;\n userId: string;\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.revisionDate = new Date(this.getResponseProperty('RevisionDate'));\n }\n}\n\nexport class UserNotification extends BaseResponse {\n userId: string;\n date: Date;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty('UserId');\n this.date = new Date(this.getResponseProperty('Date'));\n }\n}\n\nexport class SyncSendNotification extends BaseResponse {\n id: string;\n userId: string;\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.revisionDate = new Date(this.getResponseProperty('RevisionDate'));\n }\n}\n","import { PolicyService as PolicyServiceAbstraction } from '../abstractions/policy.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { PolicyData } from '../models/data/policyData';\n\nimport { MasterPasswordPolicyOptions } from '../models/domain/masterPasswordPolicyOptions';\nimport { Policy } from '../models/domain/policy';\n\nimport { PolicyType } from '../enums/policyType';\n\nconst Keys = {\n policiesPrefix: 'policies_',\n};\n\nexport class PolicyService implements PolicyServiceAbstraction {\n policyCache: Policy[];\n\n constructor(private userService: UserService, private storageService: StorageService) {\n }\n\n clearCache(): void {\n this.policyCache = null;\n }\n\n async getAll(type?: PolicyType): Promise {\n if (this.policyCache == null) {\n const userId = await this.userService.getUserId();\n const policies = await this.storageService.get<{ [id: string]: PolicyData; }>(\n Keys.policiesPrefix + userId);\n const response: Policy[] = [];\n for (const id in policies) {\n if (policies.hasOwnProperty(id)) {\n response.push(new Policy(policies[id]));\n }\n }\n this.policyCache = response;\n }\n if (type != null) {\n return this.policyCache.filter(p => p.type === type);\n } else {\n return this.policyCache;\n }\n }\n\n async replace(policies: { [id: string]: PolicyData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.policiesPrefix + userId, policies);\n this.policyCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.policiesPrefix + userId);\n this.policyCache = null;\n }\n\n async getMasterPasswordPolicyOptions(policies?: Policy[]): Promise {\n let enforcedOptions: MasterPasswordPolicyOptions = null;\n\n if (policies == null) {\n policies = await this.getAll(PolicyType.MasterPassword);\n } else {\n policies = policies.filter(p => p.type === PolicyType.MasterPassword);\n }\n\n if (policies == null || policies.length === 0) {\n return enforcedOptions;\n }\n\n policies.forEach(currentPolicy => {\n if (!currentPolicy.enabled || currentPolicy.data == null) {\n return;\n }\n\n if (enforcedOptions == null) {\n enforcedOptions = new MasterPasswordPolicyOptions();\n }\n\n if (currentPolicy.data.minComplexity != null\n && currentPolicy.data.minComplexity > enforcedOptions.minComplexity) {\n enforcedOptions.minComplexity = currentPolicy.data.minComplexity;\n }\n\n if (currentPolicy.data.minLength != null\n && currentPolicy.data.minLength > enforcedOptions.minLength) {\n enforcedOptions.minLength = currentPolicy.data.minLength;\n }\n\n if (currentPolicy.data.requireUpper) {\n enforcedOptions.requireUpper = true;\n }\n\n if (currentPolicy.data.requireLower) {\n enforcedOptions.requireLower = true;\n }\n\n if (currentPolicy.data.requireNumbers) {\n enforcedOptions.requireNumbers = true;\n }\n\n if (currentPolicy.data.requireSpecial) {\n enforcedOptions.requireSpecial = true;\n }\n });\n\n return enforcedOptions;\n }\n\n evaluateMasterPassword(passwordStrength: number, newPassword: string,\n enforcedPolicyOptions: MasterPasswordPolicyOptions): boolean {\n if (enforcedPolicyOptions == null) {\n return true;\n }\n\n if (enforcedPolicyOptions.minComplexity > 0 && enforcedPolicyOptions.minComplexity > passwordStrength) {\n return false;\n }\n\n if (enforcedPolicyOptions.minLength > 0 && enforcedPolicyOptions.minLength > newPassword.length) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireUpper && newPassword.toLocaleLowerCase() === newPassword) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireLower && newPassword.toLocaleUpperCase() === newPassword) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireNumbers && !(/[0-9]/.test(newPassword))) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireSpecial && !(/[!@#$%\\^&*]/g.test(newPassword))) {\n return false;\n }\n\n return true;\n }\n}\n","import Domain from './domainBase';\n\nexport class MasterPasswordPolicyOptions extends Domain {\n minComplexity: number = 0;\n minLength: number = 0;\n requireUpper: boolean = false;\n requireLower: boolean = false;\n requireNumbers: boolean = false;\n requireSpecial: boolean = false;\n}\n","import * as lunr from 'lunr';\n\nimport { CipherView } from '../models/view/cipherView';\n\nimport { CipherService } from '../abstractions/cipher.service';\nimport { LogService } from '../abstractions/log.service';\nimport { SearchService as SearchServiceAbstraction } from '../abstractions/search.service';\n\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { UriMatchType } from '../enums/uriMatchType';\nimport { SendView } from '../models/view/sendView';\n\nexport class SearchService implements SearchServiceAbstraction {\n private indexing = false;\n private index: lunr.Index = null;\n\n constructor(private cipherService: CipherService, private logService: LogService) {\n }\n\n clearIndex(): void {\n this.index = null;\n }\n\n isSearchable(query: string): boolean {\n const notSearchable = query == null || (this.index == null && query.length < 2) ||\n (this.index != null && query.length < 2 && query.indexOf('>') !== 0);\n return !notSearchable;\n }\n\n async indexCiphers(): Promise {\n if (this.indexing) {\n return;\n }\n\n this.logService.time('search indexing');\n this.indexing = true;\n this.index = null;\n const builder = new lunr.Builder();\n builder.ref('id');\n builder.field('shortid', { boost: 100, extractor: (c: CipherView) => c.id.substr(0, 8) });\n builder.field('name', { boost: 10 });\n builder.field('subtitle', {\n boost: 5,\n extractor: (c: CipherView) => {\n if (c.subTitle != null && c.type === CipherType.Card) {\n return c.subTitle.replace(/\\*/g, '');\n }\n return c.subTitle;\n },\n });\n builder.field('notes');\n builder.field('login.username', {\n extractor: (c: CipherView) => c.type === CipherType.Login && c.login != null ? c.login.username : null,\n });\n builder.field('login.uris', { boost: 2, extractor: (c: CipherView) => this.uriExtractor(c) });\n builder.field('fields', { extractor: (c: CipherView) => this.fieldExtractor(c, false) });\n builder.field('fields_joined', { extractor: (c: CipherView) => this.fieldExtractor(c, true) });\n builder.field('attachments', { extractor: (c: CipherView) => this.attachmentExtractor(c, false) });\n builder.field('attachments_joined',\n { extractor: (c: CipherView) => this.attachmentExtractor(c, true) });\n builder.field('organizationid', { extractor: (c: CipherView) => c.organizationId });\n const ciphers = await this.cipherService.getAllDecrypted();\n ciphers.forEach(c => builder.add(c));\n this.index = builder.build();\n this.indexing = false;\n\n this.logService.timeEnd('search indexing');\n }\n\n async searchCiphers(query: string,\n filter: (((cipher: CipherView) => boolean) | (((cipher: CipherView) => boolean)[])) = null,\n ciphers: CipherView[] = null):\n Promise {\n const results: CipherView[] = [];\n if (query != null) {\n query = query.trim().toLowerCase();\n }\n if (query === '') {\n query = null;\n }\n\n if (ciphers == null) {\n ciphers = await this.cipherService.getAllDecrypted();\n }\n\n if (filter != null && Array.isArray(filter) && filter.length > 0) {\n ciphers = ciphers.filter(c => filter.every(f => f == null || f(c)));\n } else if (filter != null) {\n ciphers = ciphers.filter(filter as (cipher: CipherView) => boolean);\n }\n\n if (!this.isSearchable(query)) {\n return ciphers;\n }\n\n if (this.indexing) {\n await new Promise(r => setTimeout(r, 250));\n if (this.indexing) {\n await new Promise(r => setTimeout(r, 500));\n }\n }\n\n const index = this.getIndexForSearch();\n if (index == null) {\n // Fall back to basic search if index is not available\n return this.searchCiphersBasic(ciphers, query);\n }\n\n const ciphersMap = new Map();\n ciphers.forEach(c => ciphersMap.set(c.id, c));\n\n let searchResults: lunr.Index.Result[] = null;\n const isQueryString = query != null && query.length > 1 && query.indexOf('>') === 0;\n if (isQueryString) {\n try {\n searchResults = index.search(query.substr(1).trim());\n } catch { }\n } else {\n // tslint:disable-next-line\n const soWild = lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING;\n searchResults = index.query(q => {\n lunr.tokenizer(query).forEach(token => {\n const t = token.toString();\n q.term(t, { fields: ['name'], wildcard: soWild });\n q.term(t, { fields: ['subtitle'], wildcard: soWild });\n q.term(t, { fields: ['login.uris'], wildcard: soWild });\n q.term(t, {});\n });\n });\n }\n\n if (searchResults != null) {\n searchResults.forEach(r => {\n if (ciphersMap.has(r.ref)) {\n results.push(ciphersMap.get(r.ref));\n }\n });\n }\n return results;\n }\n\n searchCiphersBasic(ciphers: CipherView[], query: string, deleted: boolean = false) {\n query = query.trim().toLowerCase();\n return ciphers.filter(c => {\n if (deleted !== c.isDeleted) {\n return false;\n }\n if (c.name != null && c.name.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (query.length >= 8 && c.id.startsWith(query)) {\n return true;\n }\n if (c.subTitle != null && c.subTitle.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (c.login && c.login.uri != null && c.login.uri.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n return false;\n });\n }\n\n searchSends(sends: SendView[], query: string) {\n query = query.trim().toLocaleLowerCase();\n\n return sends.filter(s => {\n if (s.name != null && s.name.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (query.length >= 8 && (s.id.startsWith(query) || s.accessId.toLocaleLowerCase().startsWith(query) || (s.file?.id != null && s.file.id.startsWith(query)))) {\n return true;\n }\n if (s.notes != null && s.notes.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (s.text?.text != null && s.text.text.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (s.file?.fileName != null && s.file.fileName.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n });\n }\n\n getIndexForSearch(): lunr.Index {\n return this.index;\n }\n\n private fieldExtractor(c: CipherView, joined: boolean) {\n if (!c.hasFields) {\n return null;\n }\n let fields: string[] = [];\n c.fields.forEach(f => {\n if (f.name != null) {\n fields.push(f.name);\n }\n if (f.type === FieldType.Text && f.value != null) {\n fields.push(f.value);\n }\n });\n fields = fields.filter(f => f.trim() !== '');\n if (fields.length === 0) {\n return null;\n }\n return joined ? fields.join(' ') : fields;\n }\n\n private attachmentExtractor(c: CipherView, joined: boolean) {\n if (!c.hasAttachments) {\n return null;\n }\n let attachments: string[] = [];\n c.attachments.forEach(a => {\n if (a != null && a.fileName != null) {\n if (joined && a.fileName.indexOf('.') > -1) {\n attachments.push(a.fileName.substr(0, a.fileName.lastIndexOf('.')));\n } else {\n attachments.push(a.fileName);\n }\n }\n });\n attachments = attachments.filter(f => f.trim() !== '');\n if (attachments.length === 0) {\n return null;\n }\n return joined ? attachments.join(' ') : attachments;\n }\n\n private uriExtractor(c: CipherView) {\n if (c.type !== CipherType.Login || c.login == null || !c.login.hasUris) {\n return null;\n }\n const uris: string[] = [];\n c.login.uris.forEach(u => {\n if (u.uri == null || u.uri === '') {\n return;\n }\n if (u.hostname != null) {\n uris.push(u.hostname);\n return;\n }\n let uri = u.uri;\n if (u.match !== UriMatchType.RegularExpression) {\n const protocolIndex = uri.indexOf('://');\n if (protocolIndex > -1) {\n uri = uri.substr(protocolIndex + 3);\n }\n const queryIndex = uri.search(/\\?|&|#/);\n if (queryIndex > -1) {\n uri = uri.substring(0, queryIndex);\n }\n }\n uris.push(uri);\n });\n return uris.length > 0 ? uris : null;\n }\n}\n","import { SendData } from '../models/data/sendData';\n\nimport { SendRequest } from '../models/request/sendRequest';\n\nimport { SendResponse } from '../models/response/sendResponse';\n\nimport { Send } from '../models/domain/send';\nimport { SendFile } from '../models/domain/sendFile';\nimport { SendText } from '../models/domain/sendText';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { SendType } from '../enums/sendType';\n\nimport { SendView } from '../models/view/sendView';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { SendService as SendServiceAbstraction } from '../abstractions/send.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { Utils } from '../misc/utils';\nimport { CipherString } from '../models/domain';\n\nconst Keys = {\n sendsPrefix: 'sends_',\n};\n\nexport class SendService implements SendServiceAbstraction {\n decryptedSendCache: SendView[];\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private apiService: ApiService, private storageService: StorageService,\n private i18nService: I18nService, private cryptoFunctionService: CryptoFunctionService) { }\n\n clearCache(): void {\n this.decryptedSendCache = null;\n }\n\n async encrypt(model: SendView, file: File | ArrayBuffer, password: string,\n key?: SymmetricCryptoKey): Promise<[Send, ArrayBuffer]> {\n let fileData: ArrayBuffer = null;\n const send = new Send();\n send.id = model.id;\n send.type = model.type;\n send.disabled = model.disabled;\n send.maxAccessCount = model.maxAccessCount;\n if (model.key == null) {\n model.key = await this.cryptoFunctionService.randomBytes(16);\n model.cryptoKey = await this.cryptoService.makeSendKey(model.key);\n }\n if (password != null) {\n const passwordHash = await this.cryptoFunctionService.pbkdf2(password, model.key, 'sha256', 100000);\n send.password = Utils.fromBufferToB64(passwordHash);\n }\n send.key = await this.cryptoService.encrypt(model.key, key);\n send.name = await this.cryptoService.encrypt(model.name, model.cryptoKey);\n send.notes = await this.cryptoService.encrypt(model.notes, model.cryptoKey);\n if (send.type === SendType.Text) {\n send.text = new SendText();\n send.text.text = await this.cryptoService.encrypt(model.text.text, model.cryptoKey);\n send.text.hidden = model.text.hidden;\n } else if (send.type === SendType.File) {\n send.file = new SendFile();\n if (file != null) {\n if (file instanceof ArrayBuffer) {\n const [name, data] = await this.encryptFileData(model.file.fileName, file, model.cryptoKey);\n send.file.fileName = name;\n fileData = data;\n } else {\n fileData = await this.parseFile(send, file, model.cryptoKey);\n }\n }\n }\n\n return [send, fileData];\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n if (sends == null || !sends.hasOwnProperty(id)) {\n return null;\n }\n\n return new Send(sends[id]);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n const response: Send[] = [];\n for (const id in sends) {\n if (sends.hasOwnProperty(id)) {\n response.push(new Send(sends[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n if (this.decryptedSendCache != null) {\n return this.decryptedSendCache;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const decSends: SendView[] = [];\n const promises: Promise[] = [];\n const sends = await this.getAll();\n sends.forEach(send => {\n promises.push(send.decrypt().then(f => decSends.push(f)));\n });\n\n await Promise.all(promises);\n decSends.sort(Utils.getSortFunction(this.i18nService, 'name'));\n\n this.decryptedSendCache = decSends;\n return this.decryptedSendCache;\n }\n\n async saveWithServer(sendData: [Send, ArrayBuffer]): Promise {\n const request = new SendRequest(sendData[0], sendData[1]?.byteLength);\n let response: SendResponse;\n if (sendData[0].id == null) {\n if (sendData[0].type === SendType.Text) {\n response = await this.apiService.postSend(request);\n } else {\n const fd = new FormData();\n try {\n const blob = new Blob([sendData[1]], { type: 'application/octet-stream' });\n fd.append('model', JSON.stringify(request));\n fd.append('data', blob, sendData[0].file.fileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('model', JSON.stringify(request));\n fd.append('data', Buffer.from(sendData[1]) as any, {\n filepath: sendData[0].file.fileName.encryptedString,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n response = await this.apiService.postSendFile(fd);\n }\n sendData[0].id = response.id;\n sendData[0].accessId = response.accessId;\n } else {\n response = await this.apiService.putSend(sendData[0].id, request);\n }\n\n const userId = await this.userService.getUserId();\n const data = new SendData(response, userId);\n await this.upsert(data);\n }\n\n async upsert(send: SendData | SendData[]): Promise {\n const userId = await this.userService.getUserId();\n let sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n if (sends == null) {\n sends = {};\n }\n\n if (send instanceof SendData) {\n const s = send as SendData;\n sends[s.id] = s;\n } else {\n (send as SendData[]).forEach(s => {\n sends[s.id] = s;\n });\n }\n\n await this.storageService.save(Keys.sendsPrefix + userId, sends);\n this.decryptedSendCache = null;\n }\n\n async replace(sends: { [id: string]: SendData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.sendsPrefix + userId, sends);\n this.decryptedSendCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.sendsPrefix + userId);\n this.decryptedSendCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n if (sends == null) {\n return;\n }\n\n if (typeof id === 'string') {\n if (sends[id] == null) {\n return;\n }\n delete sends[id];\n } else {\n (id as string[]).forEach(i => {\n delete sends[i];\n });\n }\n\n await this.storageService.save(Keys.sendsPrefix + userId, sends);\n this.decryptedSendCache = null;\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteSend(id);\n await this.delete(id);\n }\n\n async removePasswordWithServer(id: string): Promise {\n const response = await this.apiService.putSendRemovePassword(id);\n const userId = await this.userService.getUserId();\n const data = new SendData(response, userId);\n await this.upsert(data);\n }\n\n private parseFile(send: Send, file: File, key: SymmetricCryptoKey): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(file);\n reader.onload = async evt => {\n try {\n const [name, data] = await this.encryptFileData(file.name, evt.target.result as ArrayBuffer, key);\n send.file.fileName = name;\n resolve(data);\n } catch (e) {\n reject(e);\n }\n };\n reader.onerror = evt => {\n reject('Error reading file.');\n };\n });\n }\n\n private async encryptFileData(fileName: string, data: ArrayBuffer,\n key: SymmetricCryptoKey): Promise<[CipherString, ArrayBuffer]> {\n const encFileName = await this.cryptoService.encrypt(fileName, key);\n const encFileData = await this.cryptoService.encryptToBytes(data, key);\n return [encFileName, encFileData];\n }\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendFileApi } from '../api/sendFileApi';\nimport { SendTextApi } from '../api/sendTextApi';\n\nimport { Send } from '../domain/send';\n\nexport class SendRequest {\n type: SendType;\n fileLength?: number;\n name: string;\n notes: string;\n key: string;\n maxAccessCount?: number;\n expirationDate: string;\n deletionDate: string;\n text: SendTextApi;\n file: SendFileApi;\n password: string;\n disabled: boolean;\n\n constructor(send: Send, fileLength?: number) {\n this.type = send.type;\n this.fileLength = fileLength;\n this.name = send.name ? send.name.encryptedString : null;\n this.notes = send.notes ? send.notes.encryptedString : null;\n this.maxAccessCount = send.maxAccessCount;\n this.expirationDate = send.expirationDate != null ? send.expirationDate.toISOString() : null;\n this.deletionDate = send.deletionDate != null ? send.deletionDate.toISOString() : null;\n this.key = send.key != null ? send.key.encryptedString : null;\n this.password = send.password;\n this.disabled = send.disabled;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendTextApi();\n this.text.text = send.text.text != null ? send.text.text.encryptedString : null;\n this.text.hidden = send.text.hidden;\n break;\n case SendType.File:\n this.file = new SendFileApi();\n this.file.fileName = send.file.fileName != null ? send.file.fileName.encryptedString : null;\n break;\n default:\n break;\n }\n }\n}\n","import { CryptoService } from '../../abstractions/crypto.service';\n\nimport { SendType } from '../../enums/sendType';\n\nimport { Utils } from '../../misc/utils';\n\nimport { SendData } from '../data/sendData';\n\nimport { SendView } from '../view/sendView';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\nimport { SendFile } from './sendFile';\nimport { SendText } from './sendText';\n\nexport class Send extends Domain {\n id: string;\n accessId: string;\n userId: string;\n type: SendType;\n name: CipherString;\n notes: CipherString;\n file: SendFile;\n text: SendText;\n key: CipherString;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: Date;\n expirationDate: Date;\n deletionDate: Date;\n password: string;\n disabled: boolean;\n\n constructor(obj?: SendData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n accessId: null,\n userId: null,\n name: null,\n notes: null,\n key: null,\n }, alreadyEncrypted, ['id', 'accessId', 'userId']);\n\n this.type = obj.type;\n this.maxAccessCount = obj.maxAccessCount;\n this.accessCount = obj.accessCount;\n this.password = obj.password;\n this.disabled = obj.disabled;\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n this.deletionDate = obj.deletionDate != null ? new Date(obj.deletionDate) : null;\n this.expirationDate = obj.expirationDate != null ? new Date(obj.expirationDate) : null;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendText(obj.text, alreadyEncrypted);\n break;\n case SendType.File:\n this.file = new SendFile(obj.file, alreadyEncrypted);\n break;\n default:\n break;\n }\n }\n\n async decrypt(): Promise {\n const model = new SendView(this);\n\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error('global bitwardenContainerService not initialized.');\n }\n\n try {\n model.key = await cryptoService.decryptToBytes(this.key, null);\n model.cryptoKey = await cryptoService.makeSendKey(model.key);\n } catch (e) {\n // TODO: error?\n }\n\n await this.decryptObj(model, {\n name: null,\n notes: null,\n }, null, model.cryptoKey);\n\n switch (this.type) {\n case SendType.File:\n model.file = await this.file.decrypt(model.cryptoKey);\n break;\n case SendType.Text:\n model.text = await this.text.decrypt(model.cryptoKey);\n break;\n default:\n break;\n }\n\n return model;\n }\n}\n","import * as forge from 'node-forge';\n\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\n\nimport { Utils } from '../misc/utils';\n\nimport { DecryptParameters } from '../models/domain/decryptParameters';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nexport class WebCryptoFunctionService implements CryptoFunctionService {\n private crypto: Crypto;\n private subtle: SubtleCrypto;\n private isIE: boolean;\n private isOldSafari: boolean;\n\n constructor(private win: Window, private platformUtilsService: PlatformUtilsService) {\n this.crypto = typeof win.crypto !== 'undefined' ? win.crypto : null;\n this.subtle = (!!this.crypto && typeof win.crypto.subtle !== 'undefined') ? win.crypto.subtle : null;\n this.isIE = platformUtilsService.isIE();\n const ua = win.navigator.userAgent;\n this.isOldSafari = platformUtilsService.isSafari() &&\n (ua.indexOf(' Version/10.') > -1 || ua.indexOf(' Version/9.') > -1);\n }\n\n async pbkdf2(password: string | ArrayBuffer, salt: string | ArrayBuffer, algorithm: 'sha256' | 'sha512',\n iterations: number): Promise {\n if (this.isIE || this.isOldSafari) {\n const forgeLen = algorithm === 'sha256' ? 32 : 64;\n const passwordBytes = this.toByteString(password);\n const saltBytes = this.toByteString(salt);\n const derivedKeyBytes = (forge as any).pbkdf2(passwordBytes, saltBytes, iterations, forgeLen, algorithm);\n return Utils.fromByteStringToArray(derivedKeyBytes).buffer;\n }\n\n const wcLen = algorithm === 'sha256' ? 256 : 512;\n const passwordBuf = this.toBuf(password);\n const saltBuf = this.toBuf(salt);\n\n const pbkdf2Params: Pbkdf2Params = {\n name: 'PBKDF2',\n salt: saltBuf,\n iterations: iterations,\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey('raw', passwordBuf, { name: 'PBKDF2' } as any,\n false, ['deriveBits']);\n return await this.subtle.deriveBits(pbkdf2Params, impKey, wcLen);\n }\n\n async hkdf(ikm: ArrayBuffer, salt: string | ArrayBuffer, info: string | ArrayBuffer,\n outputByteSize: number, algorithm: 'sha256' | 'sha512'): Promise {\n const saltBuf = this.toBuf(salt);\n const infoBuf = this.toBuf(info);\n\n const hkdfParams: HkdfParams = {\n name: 'HKDF',\n salt: saltBuf,\n info: infoBuf,\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey('raw', ikm, { name: 'HKDF' } as any,\n false, ['deriveBits']);\n return await this.subtle.deriveBits(hkdfParams as any, impKey, outputByteSize * 8);\n }\n\n // ref: https://tools.ietf.org/html/rfc5869\n async hkdfExpand(prk: ArrayBuffer, info: string | ArrayBuffer, outputByteSize: number,\n algorithm: 'sha256' | 'sha512'): Promise {\n const hashLen = algorithm === 'sha256' ? 32 : 64;\n if (outputByteSize > 255 * hashLen) {\n throw new Error('outputByteSize is too large.');\n }\n const prkArr = new Uint8Array(prk);\n if (prkArr.length < hashLen) {\n throw new Error('prk is too small.');\n }\n const infoBuf = this.toBuf(info);\n const infoArr = new Uint8Array(infoBuf);\n let runningOkmLength = 0;\n let previousT = new Uint8Array(0);\n const n = Math.ceil(outputByteSize / hashLen);\n const okm = new Uint8Array(n * hashLen);\n for (let i = 0; i < n; i++) {\n const t = new Uint8Array(previousT.length + infoArr.length + 1);\n t.set(previousT);\n t.set(infoArr, previousT.length);\n t.set([i + 1], t.length - 1);\n previousT = new Uint8Array(await this.hmac(t.buffer, prk, algorithm));\n okm.set(previousT, runningOkmLength);\n runningOkmLength += previousT.length;\n if (runningOkmLength >= outputByteSize) {\n break;\n }\n }\n return okm.slice(0, outputByteSize).buffer;\n }\n\n async hash(value: string | ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5'): Promise {\n if ((this.isIE && algorithm === 'sha1') || algorithm === 'md5') {\n const md = algorithm === 'md5' ? forge.md.md5.create() : forge.md.sha1.create();\n const valueBytes = this.toByteString(value);\n md.update(valueBytes, 'raw');\n return Utils.fromByteStringToArray(md.digest().data).buffer;\n }\n\n const valueBuf = this.toBuf(value);\n return await this.subtle.digest({ name: this.toWebCryptoAlgorithm(algorithm) }, valueBuf);\n }\n\n async hmac(value: ArrayBuffer, key: ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512'): Promise {\n if (this.isIE && algorithm === 'sha512') {\n const hmac = (forge as any).hmac.create();\n const keyBytes = this.toByteString(key);\n const valueBytes = this.toByteString(value);\n hmac.start(algorithm, keyBytes);\n hmac.update(valueBytes, 'raw');\n return Utils.fromByteStringToArray(hmac.digest().data).buffer;\n }\n\n const signingAlgorithm = {\n name: 'HMAC',\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey('raw', key, signingAlgorithm, false, ['sign']);\n return await this.subtle.sign(signingAlgorithm, impKey, value);\n }\n\n // Safely compare two values in a way that protects against timing attacks (Double HMAC Verification).\n // ref: https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/february/double-hmac-verification/\n // ref: https://paragonie.com/blog/2015/11/preventing-timing-attacks-on-string-comparison-with-double-hmac-strategy\n async compare(a: ArrayBuffer, b: ArrayBuffer): Promise {\n const macKey = await this.randomBytes(32);\n const signingAlgorithm = {\n name: 'HMAC',\n hash: { name: 'SHA-256' },\n };\n const impKey = await this.subtle.importKey('raw', macKey, signingAlgorithm, false, ['sign']);\n const mac1 = await this.subtle.sign(signingAlgorithm, impKey, a);\n const mac2 = await this.subtle.sign(signingAlgorithm, impKey, b);\n\n if (mac1.byteLength !== mac2.byteLength) {\n return false;\n }\n\n const arr1 = new Uint8Array(mac1);\n const arr2 = new Uint8Array(mac2);\n for (let i = 0; i < arr2.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n hmacFast(value: string, key: string, algorithm: 'sha1' | 'sha256' | 'sha512'): Promise {\n const hmac = (forge as any).hmac.create();\n hmac.start(algorithm, key);\n hmac.update(value);\n const bytes = hmac.digest().getBytes();\n return Promise.resolve(bytes);\n }\n\n async compareFast(a: string, b: string): Promise {\n const rand = await this.randomBytes(32);\n const bytes = new Uint32Array(rand);\n const buffer = forge.util.createBuffer();\n for (let i = 0; i < bytes.length; i++) {\n buffer.putInt32(bytes[i]);\n }\n const macKey = buffer.getBytes();\n\n const hmac = (forge as any).hmac.create();\n hmac.start('sha256', macKey);\n hmac.update(a);\n const mac1 = hmac.digest().getBytes();\n\n hmac.start(null, null);\n hmac.update(b);\n const mac2 = hmac.digest().getBytes();\n\n const equals = mac1 === mac2;\n return equals;\n }\n\n async aesEncrypt(data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer): Promise {\n const impKey = await this.subtle.importKey('raw', key, { name: 'AES-CBC' } as any, false, ['encrypt']);\n return await this.subtle.encrypt({ name: 'AES-CBC', iv: iv }, impKey, data);\n }\n\n aesDecryptFastParameters(data: string, iv: string, mac: string, key: SymmetricCryptoKey):\n DecryptParameters {\n const p = new DecryptParameters();\n if (key.meta != null) {\n p.encKey = key.meta.encKeyByteString;\n p.macKey = key.meta.macKeyByteString;\n }\n\n if (p.encKey == null) {\n p.encKey = forge.util.decode64(key.encKeyB64);\n }\n p.data = forge.util.decode64(data);\n p.iv = forge.util.decode64(iv);\n p.macData = p.iv + p.data;\n if (p.macKey == null && key.macKeyB64 != null) {\n p.macKey = forge.util.decode64(key.macKeyB64);\n }\n if (mac != null) {\n p.mac = forge.util.decode64(mac);\n }\n\n // cache byte string keys for later\n if (key.meta == null) {\n key.meta = {};\n }\n if (key.meta.encKeyByteString == null) {\n key.meta.encKeyByteString = p.encKey;\n }\n if (p.macKey != null && key.meta.macKeyByteString == null) {\n key.meta.macKeyByteString = p.macKey;\n }\n\n return p;\n }\n\n aesDecryptFast(parameters: DecryptParameters): Promise {\n const dataBuffer = (forge as any).util.createBuffer(parameters.data);\n const decipher = (forge as any).cipher.createDecipher('AES-CBC', parameters.encKey);\n decipher.start({ iv: parameters.iv });\n decipher.update(dataBuffer);\n decipher.finish();\n const val = decipher.output.toString('utf8');\n return Promise.resolve(val);\n }\n\n async aesDecrypt(data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer): Promise {\n const impKey = await this.subtle.importKey('raw', key, { name: 'AES-CBC' } as any, false, ['decrypt']);\n return await this.subtle.decrypt({ name: 'AES-CBC', iv: iv }, impKey, data);\n }\n\n async rsaEncrypt(data: ArrayBuffer, publicKey: ArrayBuffer, algorithm: 'sha1' | 'sha256'): Promise {\n // Note: Edge browser requires that we specify name and hash for both key import and decrypt.\n // We cannot use the proper types here.\n const rsaParams = {\n name: 'RSA-OAEP',\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n const impKey = await this.subtle.importKey('spki', publicKey, rsaParams, false, ['encrypt']);\n return await this.subtle.encrypt(rsaParams, impKey, data);\n }\n\n async rsaDecrypt(data: ArrayBuffer, privateKey: ArrayBuffer, algorithm: 'sha1' | 'sha256'): Promise {\n // Note: Edge browser requires that we specify name and hash for both key import and decrypt.\n // We cannot use the proper types here.\n const rsaParams = {\n name: 'RSA-OAEP',\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n const impKey = await this.subtle.importKey('pkcs8', privateKey, rsaParams, false, ['decrypt']);\n return await this.subtle.decrypt(rsaParams, impKey, data);\n }\n\n async rsaExtractPublicKey(privateKey: ArrayBuffer): Promise {\n const rsaParams = {\n name: 'RSA-OAEP',\n // Have to specify some algorithm\n hash: { name: this.toWebCryptoAlgorithm('sha1') },\n };\n const impPrivateKey = await this.subtle.importKey('pkcs8', privateKey, rsaParams, true, ['decrypt']);\n const jwkPrivateKey = await this.subtle.exportKey('jwk', impPrivateKey);\n const jwkPublicKeyParams = {\n kty: 'RSA',\n e: jwkPrivateKey.e,\n n: jwkPrivateKey.n,\n alg: 'RSA-OAEP',\n ext: true,\n };\n const impPublicKey = await this.subtle.importKey('jwk', jwkPublicKeyParams, rsaParams, true, ['encrypt']);\n return await this.subtle.exportKey('spki', impPublicKey);\n }\n\n async rsaGenerateKeyPair(length: 1024 | 2048 | 4096): Promise<[ArrayBuffer, ArrayBuffer]> {\n const rsaParams = {\n name: 'RSA-OAEP',\n modulusLength: length,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // 65537\n // Have to specify some algorithm\n hash: { name: this.toWebCryptoAlgorithm('sha1') },\n };\n const keyPair = await this.subtle.generateKey(rsaParams, true, ['encrypt', 'decrypt']);\n const publicKey = await this.subtle.exportKey('spki', keyPair.publicKey);\n const privateKey = await this.subtle.exportKey('pkcs8', keyPair.privateKey);\n return [publicKey, privateKey];\n }\n\n randomBytes(length: number): Promise {\n const arr = new Uint8Array(length);\n this.crypto.getRandomValues(arr);\n return Promise.resolve(arr.buffer);\n }\n\n private toBuf(value: string | ArrayBuffer): ArrayBuffer {\n let buf: ArrayBuffer;\n if (typeof (value) === 'string') {\n buf = Utils.fromUtf8ToArray(value).buffer;\n } else {\n buf = value;\n }\n return buf;\n }\n\n private toByteString(value: string | ArrayBuffer): string {\n let bytes: string;\n if (typeof (value) === 'string') {\n bytes = forge.util.encodeUtf8(value);\n } else {\n bytes = Utils.fromBufferToByteString(value);\n }\n return bytes;\n }\n\n private toWebCryptoAlgorithm(algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5'): string {\n if (algorithm === 'md5') {\n throw new Error('MD5 is not supported in WebCrypto.');\n }\n return algorithm === 'sha1' ? 'SHA-1' : algorithm === 'sha256' ? 'SHA-256' : 'SHA-512';\n }\n}\n","export class DecryptParameters {\n encKey: T;\n data: T;\n iv: T;\n macKey: T;\n mac: T;\n macData: T;\n}\n","import * as jq from 'jquery';\nimport Swal from 'sweetalert2/dist/sweetalert2.js';\n\nimport {\n BodyOutputType,\n Toast,\n ToasterConfig,\n ToasterContainerComponent,\n ToasterService,\n} from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\nimport { Angulartics2GoogleAnalytics } from 'angulartics2/ga';\n\nimport {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n SecurityContext,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport {\n NavigationEnd,\n Router,\n} from '@angular/router';\n\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\n\nimport { StorageService } from 'jslib/abstractions/storage.service';\n\nimport { AuthService } from 'jslib/abstractions/auth.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { EventService } from 'jslib/abstractions/event.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { NotificationsService } from 'jslib/abstractions/notifications.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { SearchService } from 'jslib/abstractions/search.service';\nimport { SettingsService } from 'jslib/abstractions/settings.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\nimport { TokenService } from 'jslib/abstractions/token.service';\nimport { UserService } from 'jslib/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib/abstractions/vaultTimeout.service';\n\nimport { ConstantsService } from 'jslib/services/constants.service';\n\nimport { RouterService } from './services/router.service';\n\nconst BroadcasterSubscriptionId = 'AppComponent';\nconst IdleTimeout = 60000 * 10; // 10 minutes\n\n@Component({\n selector: 'app-root',\n templateUrl: 'app.component.html',\n})\nexport class AppComponent implements OnDestroy, OnInit {\n toasterConfig: ToasterConfig = new ToasterConfig({\n showCloseButton: true,\n mouseoverTimerStop: true,\n animation: 'flyRight',\n limit: 5,\n });\n\n private lastActivity: number = null;\n private idleTimer: number = null;\n private isIdle = false;\n\n constructor(private angulartics2GoogleAnalytics: Angulartics2GoogleAnalytics,\n private broadcasterService: BroadcasterService, private userService: UserService,\n private tokenService: TokenService, private folderService: FolderService,\n private settingsService: SettingsService, private syncService: SyncService,\n private passwordGenerationService: PasswordGenerationService, private cipherService: CipherService,\n private authService: AuthService, private router: Router, private analytics: Angulartics2,\n private toasterService: ToasterService, private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService, private ngZone: NgZone,\n private vaultTimeoutService: VaultTimeoutService, private storageService: StorageService,\n private cryptoService: CryptoService, private collectionService: CollectionService,\n private sanitizer: DomSanitizer, private searchService: SearchService,\n private notificationsService: NotificationsService, private routerService: RouterService,\n private stateService: StateService, private eventService: EventService,\n private policyService: PolicyService) { }\n\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n window.onmousemove = () => this.recordActivity();\n window.onmousedown = () => this.recordActivity();\n window.ontouchstart = () => this.recordActivity();\n window.onclick = () => this.recordActivity();\n window.onscroll = () => this.recordActivity();\n window.onkeypress = () => this.recordActivity();\n });\n\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'loggedIn':\n case 'loggedOut':\n case 'unlocked':\n this.notificationsService.updateConnection(false);\n break;\n case 'authBlocked':\n this.router.navigate(['/']);\n break;\n case 'logout':\n this.logOut(!!message.expired);\n break;\n case 'lockVault':\n await this.vaultTimeoutService.lock();\n break;\n case 'locked':\n this.notificationsService.updateConnection(false);\n this.router.navigate(['lock']);\n break;\n case 'lockedUrl':\n window.setTimeout(() => this.routerService.setPreviousUrl(message.url), 500);\n break;\n case 'syncStarted':\n break;\n case 'syncCompleted':\n break;\n case 'upgradeOrganization':\n const upgradeConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('upgradeOrganizationDesc'), this.i18nService.t('upgradeOrganization'),\n this.i18nService.t('upgradeOrganization'), this.i18nService.t('cancel'));\n if (upgradeConfirmed) {\n this.router.navigate(['organizations', message.organizationId, 'settings', 'billing']);\n }\n break;\n case 'premiumRequired':\n const premiumConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('premiumRequiredDesc'), this.i18nService.t('premiumRequired'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'));\n if (premiumConfirmed) {\n this.router.navigate(['settings/premium']);\n }\n break;\n case 'showToast':\n if (typeof message.text === \"string\" && typeof crypto.subtle === 'undefined') {\n message.title=\"This browser requires HTTPS to use the web vault\";\n message.text=\"Check the bitwarden_rs wiki for details on how to enable it\";\n }\n this.showToast(message);\n break;\n case 'analyticsEventTrack':\n this.analytics.eventTrack.next({\n action: message.action,\n properties: { label: message.label },\n });\n break;\n case 'setFullWidth':\n this.setFullWidth();\n break;\n default:\n break;\n }\n });\n });\n\n this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n const modals = Array.from(document.querySelectorAll('.modal'));\n for (const modal of modals) {\n (jq(modal) as any).modal('hide');\n }\n\n if (document.querySelector('.swal-modal') != null) {\n Swal.close(undefined);\n }\n }\n });\n\n this.setFullWidth();\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n private async logOut(expired: boolean) {\n await this.eventService.uploadEvents();\n const userId = await this.userService.getUserId();\n\n await Promise.all([\n this.eventService.clearEvents(),\n this.syncService.setLastSync(new Date(0)),\n this.tokenService.clearToken(),\n this.cryptoService.clearKeys(),\n this.userService.clear(),\n this.settingsService.clear(userId),\n this.cipherService.clear(userId),\n this.folderService.clear(userId),\n this.collectionService.clear(userId),\n this.policyService.clear(userId),\n this.passwordGenerationService.clear(),\n this.stateService.purge(),\n ]);\n\n this.searchService.clearIndex();\n this.authService.logOut(async () => {\n this.analytics.eventTrack.next({ action: 'Logged Out' });\n if (expired) {\n this.toasterService.popAsync('warning', this.i18nService.t('loggedOut'),\n this.i18nService.t('loginExpired'));\n }\n\n Swal.close();\n this.router.navigate(['/']);\n });\n }\n\n private async recordActivity() {\n const now = (new Date()).getTime();\n if (this.lastActivity != null && now - this.lastActivity < 250) {\n return;\n }\n\n this.lastActivity = now;\n this.storageService.save(ConstantsService.lastActiveKey, now);\n\n // Idle states\n if (this.isIdle) {\n this.isIdle = false;\n this.idleStateChanged();\n }\n if (this.idleTimer != null) {\n window.clearTimeout(this.idleTimer);\n this.idleTimer = null;\n }\n this.idleTimer = window.setTimeout(() => {\n if (!this.isIdle) {\n this.isIdle = true;\n this.idleStateChanged();\n }\n }, IdleTimeout);\n }\n\n private showToast(msg: any) {\n const toast: Toast = {\n type: msg.type,\n title: msg.title,\n };\n if (typeof (msg.text) === 'string') {\n toast.body = msg.text;\n } else if (msg.text.length === 1) {\n toast.body = msg.text[0];\n } else {\n let message = '';\n msg.text.forEach((t: string) =>\n message += ('

' + this.sanitizer.sanitize(SecurityContext.HTML, t) + '

'));\n toast.body = message;\n toast.bodyOutputType = BodyOutputType.TrustedHtml;\n }\n if (msg.options != null) {\n if (msg.options.trustedHtml === true) {\n toast.bodyOutputType = BodyOutputType.TrustedHtml;\n }\n if (msg.options.timeout != null && msg.options.timeout > 0) {\n toast.timeout = msg.options.timeout;\n }\n }\n this.toasterService.popAsync(toast);\n }\n\n private idleStateChanged() {\n if (this.isIdle) {\n this.notificationsService.disconnectFromInactivity();\n } else {\n this.notificationsService.reconnectFromActivity();\n }\n }\n\n private async setFullWidth() {\n const enableFullWidth = await this.storageService.get('enableFullWidth');\n if (enableFullWidth) {\n document.body.classList.add('full-width');\n } else {\n document.body.classList.remove('full-width');\n }\n }\n}\n","\n\n","import {\n Directive,\n ElementRef,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appBlurClick]',\n})\nexport class BlurClickDirective {\n constructor(private el: ElementRef) {\n }\n\n @HostListener('click') onClick() {\n this.el.nativeElement.blur();\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n OnInit,\n} from '@angular/core';\n\n@Directive({\n selector: '[appBoxRow]',\n})\nexport class BoxRowDirective implements OnInit {\n el: HTMLElement = null;\n formEls: Element[];\n\n constructor(private elRef: ElementRef) {\n this.el = elRef.nativeElement;\n }\n\n ngOnInit(): void {\n this.formEls = Array.from(this.el.querySelectorAll('input:not([type=\"hidden\"]), select, textarea'));\n this.formEls.forEach(formEl => {\n formEl.addEventListener('focus', (event: Event) => {\n this.el.classList.add('active');\n }, false);\n\n formEl.addEventListener('blur', (event: Event) => {\n this.el.classList.remove('active');\n }, false);\n });\n }\n\n @HostListener('click', ['$event']) onClick(event: Event) {\n const target = event.target as HTMLElement;\n if (target !== this.el && !target.classList.contains('progress') &&\n !target.classList.contains('progress-bar')) {\n return;\n }\n\n if (this.formEls.length > 0) {\n const formEl = (this.formEls[0] as HTMLElement);\n if (formEl.tagName.toLowerCase() === 'input') {\n const inputEl = (formEl as HTMLInputElement);\n if (inputEl.type != null && inputEl.type.toLowerCase() === 'checkbox') {\n inputEl.click();\n return;\n }\n }\n formEl.focus();\n }\n }\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\nimport { CipherView } from '../../models/view/cipherView';\n\n@Pipe({\n name: 'searchCiphers',\n})\nexport class SearchCiphersPipe implements PipeTransform {\n transform(ciphers: CipherView[], searchText: string, deleted: boolean = false): CipherView[] {\n if (ciphers == null || ciphers.length === 0) {\n return [];\n }\n\n if (searchText == null || searchText.length < 2) {\n return ciphers.filter(c => {\n return deleted !== c.isDeleted;\n });\n }\n\n searchText = searchText.trim().toLowerCase();\n return ciphers.filter(c => {\n if (deleted !== c.isDeleted) {\n return false;\n }\n if (c.name != null && c.name.toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (searchText.length >= 8 && c.id.startsWith(searchText)) {\n return true;\n }\n if (c.subTitle != null && c.subTitle.toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (c.login && c.login.uri != null && c.login.uri.toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n\n return false;\n });\n }\n}\n"],"sourceRoot":""}