{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./jslib/src/abstractions/i18n.service.ts","webpack:///./jslib/src/abstractions/api.service.ts","webpack:///./jslib/src/abstractions/platformUtils.service.ts","webpack:///./jslib/src/angular/pipes/i18n.pipe.ts","webpack:///./jslib/src/abstractions/user.service.ts","webpack:///./jslib/src/angular/services/validation.service.ts","webpack:///./jslib/src/angular/directives/api-action.directive.ts","webpack:///./jslib/src/abstractions/messaging.service.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/importers/baseImporter.ts","webpack:///./jslib/src/models/domain/importResult.ts","webpack:///./jslib/src/angular/components/callout.component.ts","webpack:///./jslib/src/angular/components/callout.component.html","webpack:///./jslib/src/abstractions/state.service.ts","webpack:///./jslib/src/models/response/baseResponse.ts","webpack:///./jslib/src/enums/cipherType.ts","webpack:///./jslib/src/misc/utils.ts","webpack:///./jslib/src/angular/directives/stop-click.directive.ts","webpack:///./jslib/src/abstractions/collection.service.ts","webpack:///./jslib/src/angular/directives/input-verbatim.directive.ts","webpack:///./jslib/src/abstractions/storage.service.ts","webpack:///./jslib/src/abstractions/folder.service.ts","webpack:///./jslib/src/abstractions/sync.service.ts","webpack:///./jslib/src/angular/directives/stop-prop.directive.ts","webpack:///./jslib/src/abstractions/environment.service.ts","webpack:///./jslib/src/abstractions/passwordGeneration.service.ts","webpack:///./jslib/src/services/constants.service.ts","webpack:///./jslib/src/models/request/passwordVerificationRequest.ts","webpack:///./jslib/src/abstractions/event.service.ts","webpack:///./jslib/src/abstractions/token.service.ts","webpack:///./jslib/src/models/view/cardView.ts","webpack:///./jslib/src/abstractions/search.service.ts","webpack:///./jslib/src/models/view/secureNoteView.ts","webpack:///./jslib/src/angular/directives/autofocus.directive.ts","webpack:///./jslib/src/models/domain/domainBase.ts","webpack:///./jslib/src/abstractions/auth.service.ts","webpack:///./src/app/modal.component.ts","webpack:///./jslib/src/angular/components/icon.component.ts","webpack:///./jslib/src/enums/secureNoteType.ts","webpack:///./jslib/src/angular/services/broadcaster.service.ts","webpack:///./jslib/src/abstractions/policy.service.ts","webpack:///./jslib/src/enums/twoFactorProviderType.ts","webpack:///./jslib/src/angular/components/icon.component.html","webpack:///./jslib/src/abstractions/cryptoFunction.service.ts","webpack:///./jslib/src/abstractions/audit.service.ts","webpack:///./src/app/settings/payment.component.ts","webpack:///./jslib/src/models/view/folderView.ts","webpack:///./jslib/src/abstractions/vaultTimeout.service.ts","webpack:///./jslib/src/models/view/cipherView.ts","webpack:///./jslib/src/models/view/identityView.ts","webpack:///./jslib/src/enums/fieldType.ts","webpack:///./src/app/settings/tax-info.component.ts","webpack:///./src/app/components/avatar.component.ts","webpack:///./jslib/src/models/view/loginView.ts","webpack:///./jslib/src/models/view/collectionView.ts","webpack:///./src/app/components/avatar.component.ts.AvatarComponent.html","webpack:///./jslib/src/models/data/cipherData.ts","webpack:///./jslib/src/models/data/collectionData.ts","webpack:///./jslib/src/models/domain/collection.ts","webpack:///./src/app/settings/two-factor-verify.component.ts","webpack:///./jslib/src/models/request/cipherRequest.ts","webpack:///./jslib/src/models/view/fieldView.ts","webpack:///./src/app/settings/two-factor-verify.component.html","webpack:///./src/app/services/router.service.ts","webpack:///./jslib/src/models/domain/cipherString.ts","webpack:///./jslib/src/enums/eventType.ts","webpack:///./src/app/settings/organizations.component.ts","webpack:///./jslib/src/abstractions/totp.service.ts","webpack:///./jslib/src/enums/organizationUserStatusType.ts","webpack:///./jslib/src/models/view/loginUriView.ts","webpack:///./jslib/src/enums/policyType.ts","webpack:///./src/app/settings/two-factor-base.component.ts","webpack:///./src/app/settings/payment.component.html","webpack:///./jslib/src/enums/paymentMethodType.ts","webpack:///./jslib/src/abstractions/import.service.ts","webpack:///./jslib/src/abstractions/export.service.ts","webpack:///./src/app/tools/cipher-report.component.ts","webpack:///./jslib/src/models/domain/cipher.ts","webpack:///./src/app/services/event.service.ts","webpack:///./jslib/src/enums/deviceType.ts","webpack:///./jslib/src/enums/organizationUserType.ts","webpack:///./jslib/src/services/auth.service.ts","webpack:///./src/app/vault/groupings.component.ts","webpack:///./src/app/vault/ciphers.component.ts","webpack:///./src/app/vault/add-edit.component.ts","webpack:///./jslib/src/enums/uriMatchType.ts","webpack:///./src/app/settings/two-factor-setup.component.ts","webpack:///./src/app/settings/tax-info.component.html","webpack:///./src/app/settings/user-billing.component.ts","webpack:///./src/app/settings/organization-plans.component.ts","webpack:///./src/app/tools/import.component.ts","webpack:///./src/app/tools/export.component.ts","webpack:///./src/app/tools/reused-passwords-report.component.ts","webpack:///./src/app/tools/unsecured-websites-report.component.ts","webpack:///./src/app/tools/weak-passwords-report.component.ts","webpack:///./src/app/tools/exposed-passwords-report.component.ts","webpack:///./src/app/tools/inactive-two-factor-report.component.ts","webpack:///./jslib/src/angular/pipes/search.pipe.ts","webpack:///./jslib/src/models/request/selectionReadOnlyRequest.ts","webpack:///./jslib/src/models/response/selectionReadOnlyResponse.ts","webpack:///./jslib/src/abstractions/notifications.service.ts","webpack:///./jslib/src/abstractions/settings.service.ts","webpack:///./src/app/layouts/frontend-layout.component.ts","webpack:///./src/app/accounts/login.component.ts","webpack:///./src/app/accounts/two-factor.component.ts","webpack:///./src/app/components/password-strength.component.ts","webpack:///./src/app/accounts/register.component.ts","webpack:///./jslib/src/enums/kdfType.ts","webpack:///./jslib/src/enums/encryptionType.ts","webpack:///./src/app/accounts/hint.component.ts","webpack:///./src/app/accounts/lock.component.ts","webpack:///./src/app/accounts/verify-email-token.component.ts","webpack:///./src/app/accounts/accept-organization.component.ts","webpack:///./src/app/accounts/recover-two-factor.component.ts","webpack:///./src/app/accounts/recover-delete.component.ts","webpack:///./src/app/accounts/verify-recover-delete.component.ts","webpack:///./src/app/layouts/navbar.component.ts","webpack:///./src/app/layouts/footer.component.ts","webpack:///./src/app/layouts/user-layout.component.ts","webpack:///./src/app/vault/vault.component.ts","webpack:///./jslib/src/models/request/cipherWithIdRequest.ts","webpack:///./jslib/src/models/request/folderRequest.ts","webpack:///./src/app/vault/attachments.component.ts","webpack:///./src/app/vault/collections.component.ts","webpack:///./src/app/settings/settings.component.ts","webpack:///./src/app/settings/account.component.ts","webpack:///./src/app/settings/purge-vault.component.ts","webpack:///./src/app/settings/options.component.ts","webpack:///./src/app/settings/domain-rules.component.ts","webpack:///./src/app/settings/two-factor-duo.component.ts","webpack:///./src/app/settings/premium.component.ts","webpack:///./src/app/settings/add-credit.component.ts","webpack:///./src/app/settings/adjust-payment.component.ts","webpack:///./src/app/settings/update-license.component.ts","webpack:///./src/app/settings/adjust-storage.component.ts","webpack:///./src/app/settings/user-subscription.component.ts","webpack:///./src/app/settings/create-organization.component.ts","webpack:///./src/app/tools/tools.component.ts","webpack:///./src/app/tools/password-generator.component.ts","webpack:///./src/app/tools/breach-report.component.ts","webpack:///./src/app/organizations/vault/add-edit.component.ts","webpack:///./jslib/src/models/view/passwordHistoryView.ts","webpack:///./src/app/layouts/organization-layout.component.ts","webpack:///./src/app/organizations/vault/groupings.component.ts","webpack:///./src/app/organizations/vault/ciphers.component.ts","webpack:///./src/app/organizations/vault/vault.component.ts","webpack:///./src/app/organizations/manage/entity-events.component.ts","webpack:///./src/app/organizations/tools/tools.component.ts","webpack:///./src/app/organizations/tools/import.component.ts","webpack:///./src/app/organizations/tools/export.component.ts","webpack:///./src/app/organizations/tools/exposed-passwords-report.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/unsecured-websites-report.component.ts","webpack:///./src/app/organizations/tools/weak-passwords-report.component.ts","webpack:///./src/app/organizations/manage/manage.component.ts","webpack:///./src/app/organizations/manage/collections.component.ts","webpack:///./src/app/organizations/manage/entity-users.component.ts","webpack:///./src/app/organizations/manage/events.component.ts","webpack:///./src/app/organizations/manage/groups.component.ts","webpack:///./src/app/organizations/manage/people.component.ts","webpack:///./src/app/organizations/manage/policies.component.ts","webpack:///./src/app/organizations/settings/settings.component.ts","webpack:///./src/app/organizations/settings/account.component.ts","webpack:///./src/app/organizations/settings/two-factor-setup.component.ts","webpack:///./src/app/organizations/settings/organization-billing.component.ts","webpack:///./src/app/organizations/settings/organization-subscription.component.ts","webpack:///./jslib/src/models/response/profileResponse.ts","webpack:///./src lazy namespace object","webpack:///./src/app/app.component.ts","webpack:///./src/app/accounts/two-factor-options.component.ts","webpack:///./jslib/src/models/request/twoFactorEmailRequest.ts","webpack:///./jslib/src/models/request/keysRequest.ts","webpack:///./src/app/components/password-strength.component.html","webpack:///./jslib/src/models/domain/policy.ts","webpack:///./jslib/src/models/data/policyData.ts","webpack:///./src/app/layouts/navbar.component.html","webpack:///./src/app/layouts/footer.component.html","webpack:///./src/app/settings/verify-email.component.ts","webpack:///./src/app/settings/organizations.component.html","webpack:///./src/app/settings/update-key.component.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/models/request/folderWithIdRequest.ts","webpack:///./jslib/src/models/request/updateKeyRequest.ts","webpack:///./src/app/vault/bulk-delete.component.ts","webpack:///./src/app/vault/bulk-move.component.ts","webpack:///./src/app/vault/bulk-restore.component.ts","webpack:///./src/app/vault/bulk-share.component.ts","webpack:///./src/app/vault/folder-add-edit.component.ts","webpack:///./src/app/vault/share.component.ts","webpack:///./src/app/settings/profile.component.ts","webpack:///./src/app/settings/change-email.component.ts","webpack:///./jslib/src/models/request/emailTokenRequest.ts","webpack:///./src/app/settings/change-password.component.ts","webpack:///./jslib/src/models/request/passwordRequest.ts","webpack:///./src/app/settings/change-kdf.component.ts","webpack:///./src/app/settings/deauthorize-sessions.component.ts","webpack:///./src/app/settings/delete-account.component.ts","webpack:///./src/app/settings/two-factor-authenticator.component.ts","webpack:///./src/app/settings/two-factor-email.component.ts","webpack:///./src/app/settings/two-factor-recovery.component.ts","webpack:///./src/app/settings/two-factor-u2f.component.ts","webpack:///./src/app/settings/two-factor-yubikey.component.ts","webpack:///./src/services/webConstants.ts","webpack:///./jslib/src/models/request/organizationTaxInfoUpdateRequest.ts","webpack:///./jslib/src/models/request/taxInfoUpdateRequest.ts","webpack:///./src/app/settings/add-credit.component.html","webpack:///./src/app/settings/adjust-payment.component.html","webpack:///./src/app/settings/update-license.component.html","webpack:///./src/app/settings/adjust-storage.component.html","webpack:///./src/app/settings/organization-plans.component.html","webpack:///./jslib/src/enums/planType.ts","webpack:///./jslib/src/angular/pipes/color-password.pipe.ts","webpack:///./jslib/src/angular/directives/select-copy.directive.ts","webpack:///./src/app/tools/password-generator-history.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/passwordHistoryData.ts","webpack:///./jslib/src/models/data/secureNoteData.ts","webpack:///./jslib/src/models/domain/attachment.ts","webpack:///./jslib/src/models/view/attachmentView.ts","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/models/domain/password.ts","webpack:///./jslib/src/models/domain/secureNote.ts","webpack:///./jslib/src/models/request/cipherCreateRequest.ts","webpack:///./src/app/organizations/vault/attachments.component.ts","webpack:///./src/app/organizations/vault/collections.component.ts","webpack:///./jslib/src/models/request/cipherCollectionsRequest.ts","webpack:///./src/app/organizations/manage/collection-add-edit.component.ts","webpack:///./jslib/src/models/request/collectionRequest.ts","webpack:///./src/app/organizations/manage/group-add-edit.component.ts","webpack:///./jslib/src/models/request/organizationUserConfirmRequest.ts","webpack:///./src/app/organizations/manage/user-add-edit.component.ts","webpack:///./src/app/organizations/manage/user-confirm.component.ts","webpack:///./src/app/organizations/manage/user-groups.component.ts","webpack:///./src/app/organizations/manage/policy-edit.component.ts","webpack:///./src/app/organizations/settings/api-key.component.ts","webpack:///./src/app/organizations/settings/delete-organization.component.ts","webpack:///./src/app/organizations/settings/rotate-api-key.component.ts","webpack:///./src/app/organizations/settings/change-plan.component.ts","webpack:///./src/app/organizations/settings/download-license.component.ts","webpack:///./src/app/organizations/settings/adjust-seats.component.ts","webpack:///./jslib/src/angular/directives/true-false-value.directive.ts","webpack:///./jslib/src/services/api.service.ts","webpack:///./jslib/src/models/response/cipherResponse.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/subscriptionResponse.ts","webpack:///./jslib/src/models/response/policyResponse.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/models/data/folderData.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/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/models/export/cipherWithIds.ts","webpack:///./jslib/src/models/export/collectionWithId.ts","webpack:///./jslib/src/models/export/folderWithId.ts","webpack:///./jslib/src/enums/notificationType.ts","webpack:///./jslib/src/angular/services/auth-guard.service.ts","webpack:///./src/app/services/organization-guard.service.ts","webpack:///./src/app/services/organization-type-guard.service.ts","webpack:///./src/app/services/unauth-guard.service.ts","webpack:///./src/app/main.ts","webpack:///./src/app/app.module.ts","webpack:///./jslib/src/services/broadcaster.service.ts","webpack:///./src/app/layouts/frontend-layout.component.html","webpack:///./src/app/accounts/login.component.html","webpack:///./jslib/src/angular/components/login.component.ts","webpack:///./jslib/src/misc/tldjs.noop.ts","webpack:///./src/app/accounts/two-factor.component.html","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/domain/authResult.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:///./src/app/accounts/register.component.html","webpack:///./jslib/src/angular/components/register.component.ts","webpack:///./jslib/src/models/request/registerRequest.ts","webpack:///./src/app/accounts/hint.component.html","webpack:///./jslib/src/angular/components/hint.component.ts","webpack:///./jslib/src/models/request/passwordHintRequest.ts","webpack:///./src/app/accounts/lock.component.html","webpack:///./jslib/src/angular/components/lock.component.ts","webpack:///./src/app/accounts/verify-email-token.component.html","webpack:///./jslib/src/models/request/verifyEmailRequest.ts","webpack:///./src/app/accounts/accept-organization.component.html","webpack:///./jslib/src/models/request/organizationUserAcceptRequest.ts","webpack:///./src/app/accounts/recover-two-factor.component.html","webpack:///./jslib/src/models/request/twoFactorRecoveryRequest.ts","webpack:///./src/app/accounts/recover-delete.component.html","webpack:///./jslib/src/models/request/deleteRecoverRequest.ts","webpack:///./src/app/accounts/verify-recover-delete.component.html","webpack:///./jslib/src/models/request/verifyDeleteRecoverRequest.ts","webpack:///./src/app/layouts/user-layout.component.html","webpack:///./src/app/vault/vault.component.html","webpack:///./src/app/settings/verify-email.component.html","webpack:///./src/app/vault/groupings.component.html","webpack:///./jslib/src/angular/components/groupings.component.ts","webpack:///./src/app/vault/ciphers.component.html","webpack:///./jslib/src/angular/directives/fallback-src.directive.ts","webpack:///./jslib/src/angular/components/ciphers.component.ts","webpack:///./jslib/src/models/request/attachmentRequest.ts","webpack:///./jslib/src/angular/components/add-edit.component.ts","webpack:///./jslib/src/angular/components/attachments.component.ts","webpack:///./jslib/src/angular/components/collections.component.ts","webpack:///./jslib/src/angular/components/folder-add-edit.component.ts","webpack:///./jslib/src/angular/components/share.component.ts","webpack:///./src/app/settings/settings.component.html","webpack:///./src/app/settings/account.component.html","webpack:///./src/app/settings/profile.component.html","webpack:///./jslib/src/models/request/updateProfileRequest.ts","webpack:///./src/app/settings/change-email.component.html","webpack:///./jslib/src/models/request/emailRequest.ts","webpack:///./src/app/settings/change-password.component.html","webpack:///./src/app/settings/change-kdf.component.html","webpack:///./jslib/src/models/request/kdfRequest.ts","webpack:///./src/app/settings/options.component.html","webpack:///./src/app/settings/domain-rules.component.html","webpack:///./jslib/src/models/request/updateDomainsRequest.ts","webpack:///./src/app/settings/two-factor-setup.component.html","webpack:///./jslib/src/models/request/updateTwoFactorAuthenticatorRequest.ts","webpack:///./jslib/src/models/request/twoFactorProviderRequest.ts","webpack:///./jslib/src/models/request/updateTwoFactorDuoRequest.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:///./src/app/settings/premium.component.html","webpack:///./src/app/settings/user-billing.component.html","webpack:///./jslib/src/models/request/bitPayInvoiceRequest.ts","webpack:///./jslib/src/models/request/paymentRequest.ts","webpack:///./jslib/src/enums/transactionType.ts","webpack:///./jslib/src/models/request/verifyBankRequest.ts","webpack:///./src/app/settings/user-subscription.component.html","webpack:///./jslib/src/models/request/storageRequest.ts","webpack:///./src/app/settings/create-organization.component.html","webpack:///./jslib/src/models/request/organizationCreateRequest.ts","webpack:///./jslib/src/models/request/organizationUpgradeRequest.ts","webpack:///./src/app/tools/tools.component.html","webpack:///./src/app/tools/import.component.html","webpack:///./src/app/tools/export.component.html","webpack:///./jslib/src/angular/components/export.component.ts","webpack:///./src/app/tools/password-generator.component.html","webpack:///./jslib/src/angular/components/password-generator.component.ts","webpack:///./jslib/src/angular/components/password-generator-history.component.ts","webpack:///./src/app/tools/breach-report.component.html","webpack:///./src/app/tools/reused-passwords-report.component.html","webpack:///./src/app/tools/unsecured-websites-report.component.html","webpack:///./src/app/tools/weak-passwords-report.component.html","webpack:///./src/app/tools/exposed-passwords-report.component.html","webpack:///./src/app/tools/inactive-two-factor-report.component.html","webpack:///./src/app/layouts/organization-layout.component.html","webpack:///./src/app/organizations/vault/vault.component.html","webpack:///./src/app/organizations/tools/tools.component.html","webpack:///./src/app/organizations/manage/manage.component.html","webpack:///./src/app/organizations/manage/collections.component.html","webpack:///./src/app/organizations/manage/events.component.html","webpack:///./src/app/organizations/manage/groups.component.html","webpack:///./jslib/src/models/request/groupRequest.ts","webpack:///./src/app/organizations/manage/people.component.html","webpack:///./jslib/src/models/request/organizationUserInviteRequest.ts","webpack:///./jslib/src/models/request/organizationUserUpdateRequest.ts","webpack:///./jslib/src/models/request/organizationUserUpdateGroupsRequest.ts","webpack:///./src/app/organizations/manage/policies.component.html","webpack:///./jslib/src/models/request/policyRequest.ts","webpack:///./src/app/organizations/settings/settings.component.html","webpack:///./src/app/organizations/settings/account.component.html","webpack:///./jslib/src/models/request/organizationUpdateRequest.ts","webpack:///./src/app/organizations/settings/organization-subscription.component.html","webpack:///./src/app/organizations/settings/change-plan.component.html","webpack:///./src/app/organizations/settings/download-license.component.html","webpack:///./src/app/organizations/settings/adjust-seats.component.html","webpack:///./jslib/src/models/request/seatRequest.ts","webpack:///./src/app/vault/add-edit.component.html","webpack:///./src/app/vault/attachments.component.html","webpack:///./src/app/vault/bulk-delete.component.html","webpack:///./src/app/vault/bulk-move.component.html","webpack:///./src/app/vault/bulk-restore.component.html","webpack:///./src/app/vault/bulk-share.component.html","webpack:///./src/app/vault/collections.component.html","webpack:///./src/app/settings/deauthorize-sessions.component.html","webpack:///./src/app/settings/delete-account.component.html","webpack:///./src/app/organizations/settings/delete-organization.component.html","webpack:///./src/app/vault/folder-add-edit.component.html","webpack:///./src/app/modal.component.ts.ModalComponent.html","webpack:///./src/app/organizations/settings/api-key.component.html","webpack:///./src/app/organizations/manage/collection-add-edit.component.html","webpack:///./src/app/organizations/manage/entity-events.component.html","webpack:///./src/app/organizations/manage/entity-users.component.html","webpack:///./src/app/organizations/manage/group-add-edit.component.html","webpack:///./src/app/organizations/manage/policy-edit.component.html","webpack:///./src/app/organizations/settings/rotate-api-key.component.html","webpack:///./src/app/organizations/manage/user-add-edit.component.html","webpack:///./src/app/organizations/manage/user-confirm.component.html","webpack:///./src/app/organizations/manage/user-groups.component.html","webpack:///./src/app/tools/password-generator-history.component.html","webpack:///./src/app/settings/purge-vault.component.html","webpack:///./src/app/vault/share.component.html","webpack:///./src/app/settings/two-factor-authenticator.component.html","webpack:///./src/app/settings/two-factor-duo.component.html","webpack:///./src/app/settings/two-factor-email.component.html","webpack:///./src/app/accounts/two-factor-options.component.html","webpack:///./src/app/settings/two-factor-recovery.component.html","webpack:///./src/app/settings/two-factor-u2f.component.html","webpack:///./src/app/settings/two-factor-yubikey.component.html","webpack:///./src/app/settings/update-key.component.html","webpack:///./src/app/app.component.html","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/attachmentResponse.ts","webpack:///./jslib/src/models/response/passwordHistoryResponse.ts","webpack:///./jslib/src/models/response/globalDomainResponse.ts","webpack:///./jslib/src/models/response/errorResponse.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/syncResponse.ts","webpack:///./jslib/src/models/response/taxInfoResponse.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/cipherBulkDeleteRequest.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/treeNode.ts","webpack:///./jslib/src/models/domain/encryptedObject.ts","webpack:///./jslib/src/models/domain/environmentUrls.ts","webpack:///./jslib/src/models/domain/folder.ts","webpack:///./jslib/src/models/domain/generatedPasswordHistory.ts","webpack:///./jslib/src/models/domain/passwordGeneratorPolicyOptions.ts","webpack:///./jslib/src/models/data/organizationData.ts","webpack:///./jslib/src/models/domain/organization.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/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/onepassword1PifImporter.ts","webpack:///./jslib/src/importers/onepasswordWinCsvImporter.ts","webpack:///./jslib/src/models/view/index.ts","webpack:///./jslib/src/models/view/view.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/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/webCryptoFunction.service.ts","webpack:///./jslib/src/models/domain/decryptParameters.ts","webpack:///./src/app/app-routing.module.ts"],"names":["i","chunkIds","length","deferredModules","j","deferredModule","enumerable","get","getter","value","key","bind","module","Object","prototype","hasOwnProperty","call","object","property","jsonpArray","webpackJsonpCallback","I18nService","ApiService","PlatformUtilsService","i18nService","transform","id","p1","p2","p3","this","t","I18nPipe","UserService","platformUtilsService","showError","data","defaultErrorMessage","errors","push","validationErrors","concat","getAllMessages","message","showToast","timeout","ValidationService","el","validationService","ngOnChanges","changes","appApiAction","then","nativeElement","loading","response","e","ApiActionDirective","MessagingService","renderer","title","ngOnInit","hasAttribute","setAttribute","A11yTitleDirective","CryptoService","CipherService","organization","newLineRegex","passwordFieldNames","usernameFieldNames","notesFieldNames","uriFieldNames","parseXml","doc","DOMParser","parseFromString","querySelector","parseCsv","header","splitNewLine","join","trim","result","papa","parse","encoding","skipEmptyLines","forEach","row","console","warn","parseSingleRowCsv","rowData","isNullOrWhitespace","parsedRow","makeUriArray","uri","loginUri","LoginUriView","fixUri","match","u","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","type","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","calloutStyle","undefined","icon","CalloutComponent","StateService","getResponseProperty","propertyName","exactName","Error","otherCasePropertyName","charAt","toUpperCase","toLowerCase","slice","BaseResponse","nodeURL","window","init","inited","isNode","process","release","isBrowser","isNativeScript","isMobileBrowser","isMobile","isAppleMobileBrowser","isAppleMobile","global","fromB64ToArray","Uint8Array","Buffer","binaryString","atob","bytes","charCodeAt","fromHexToArray","parseInt","fromUtf8ToArray","strUtf8","unescape","encodeURIComponent","arr","fromByteStringToArray","fromBufferToB64","buffer","toString","binary","byteLength","String","fromCharCode","btoa","fromBufferToUtf8","encodedString","apply","decodeURIComponent","escape","fromBufferToByteString","fromBufferToHex","x","fromUrlB64ToUtf8","b64Str","output","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","ipString","win","mobile","navigator","userAgent","vendor","opera","URL","hasProtocol","anchor","document","createElement","href","onClick","$event","preventDefault","StopClickDirective","CollectionService","condition","disableComplete","InputVerbatimDirective","StorageService","FolderService","SyncService","stopPropagation","StopPropDirective","EnvironmentService","PasswordGenerationService","environmentUrlsKey","ConstantsService","disableGaKey","disableAddLoginNotificationKey","disableContextMenuItemKey","disableFaviconKey","disableAutoTotpCopyKey","enableAutoFillOnPageLoadKey","vaultTimeoutKey","vaultTimeoutActionKey","lastActiveKey","neverDomainsKey","installedVersionKey","localeKey","themeKey","collapsedGroupingsKey","autoConfirmFingerprints","dontShowCardsCurrentTab","dontShowIdentitiesCurrentTab","defaultUriMatch","pinProtectedKey","protectedPin","clearClipboardKey","eventCollectionKey","disableChangedPasswordNotificationKey","PasswordVerificationRequest","EventService","TokenService","cardholderName","code","_brand","_number","_subTitle","repeat","brand","number","count","exp","formatYear","CardView","SearchService","n","autofocus","focus","AutofocusDirective","buildDomainModel","dataObj","alreadyEncrypted","notEncList","objProp","CipherString","buildDataModel","notCipherStringList","encryptedString","decryptObj","viewModel","orgId","promises","self","theProp","p","Promise","resolve","mapProp","decrypt","val","all","AuthService","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","IconMap","environmentService","stateService","iconsUrl","baseUrl","imageEnabled","load","setLoginIcon","Card","Identity","hostnameUri","isWebsite","image","fallbackImage","IconComponent","BroadcasterService","PolicyService","TwoFactorProviderType","CryptoFunctionService","AuditService","StripeElementStyle","base","color","fontFamily","fontSize","fontSmoothing","invalid","StripeElementClasses","empty","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","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","VaultTimeoutService","organizationId","folderId","organizationUseTotp","edit","viewPassword","identity","IdentityView","attachments","passwordHistory","collectionIds","deletedDate","localData","subTitle","hasAttachments","passwordRevisionDate","middleName","address1","address2","address3","city","state","postalCode","company","email","phone","ssn","passportNumber","licenseNumber","_firstName","_lastName","firstName","lastName","address","addressPart2","route","onCountryChanged","EventEmitter","taxInfo","taxId","line1","line2","includeTaxId","pristine","parent","params","subscribe","getOrganizationTaxInfo","getTaxInfo","assign","getTaxInfoRequest","request","OrganizationTaxInfoUpdateRequest","TaxInfoUpdateRequest","submitTaxInfo","hasChanged","putOrganizationTaxInfo","putTaxInfo","changeCountry","TaxInfoComponent","sanitizer","cryptoFunctionService","charCount","textColor","fontWeight","dynamic","circle","generate","hash","hashBytes","chars","upperData","getFirstLetters","charObj","getCharText","stringToColor","svg","getSvg","html","outerHTML","svgHtml","text","svgTag","backgroundColor","width","height","character","textTag","textContent","AvatarComponent","l","totp","hasUris","some","canLaunch","launchUri","externalId","readOnly","hidePasswords","Collection","userId","LoginData","SecureNoteData","CardData","IdentityData","FieldData","AttachmentData","ph","PasswordHistoryData","CipherData","CollectionData","obj","toasterService","cryptoService","onAuthed","submit","masterPassword","popAsync","hashPassword","masterPasswordHash","formPromise","getTwoFactorRecover","Duo","OrganizationDuo","getTwoFactorOrganizationDuo","getTwoFactorDuo","Email","getTwoFactorEmail","U2f","getTwoFactorU2f","Authenticator","getTwoFactorAuthenticator","Yubikey","getTwoFactorYubiKey","TwoFactorVerifyComponent","LoginApi","toISOString","LoginUriApi","SecureNoteApi","CardApi","IdentityApi","FieldApi","lastUsedDate","attachments2","attachment","fileName","attachmentRequest","AttachmentRequest","CipherRequest","newField","router","activatedRoute","titleService","previousUrl","currentUrl","events","event","NavigationEnd","titleId","rawTitle","child","firstChild","snapshot","newTitle","setTitle","getPreviousUrl","setPreviousUrl","RouterService","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","getCryptoService","getOrgKey","orgKey","decryptToUtf8","EventType","userService","analytics","syncService","vault","loaded","getAllOrganizations","orgs","sort","organizations","leave","org","showDialog","actionPromise","postLeaveOrganization","fullSync","eventTrack","next","action","OrganizationsComponent","TotpService","OrganizationUserStatusType","CanLaunchWhitelist","_uri","_domain","_hostname","_canLaunch","UriMatchType","RegularExpression","PolicyType","onUpdated","twoFactorProviderType","enabled","authed","auth","authResponse","enable","enableFunction","disable","promise","TwoFactorProviderRequest","putTwoFactorOrganizationDisable","putTwoFactorDisable","TwoFactorBaseComponent","ImportService","ExportService","requiresPaid","hasLoaded","setCiphers","selectCipher","childComponent","cipherAddEditModalRef","AddEditComponent","cipherId","onSavedCipher","onDeletedCipher","onRestoredCipher","checkAccess","useTotp","canAccessPremium","accessPremium","CipherReportComponent","Date","Attachment","Field","Password","model","reduce","decAttachment","decField","decPh","toCipherData","toLoginData","toSecureNoteData","toCardData","toIdentityData","toFieldData","toAttachmentData","toPasswordHistoryData","Cipher","getDefaultDateFilters","d","end","getFullYear","getMonth","getDate","setDate","start","toDateTimeLocalString","formatDateFilters","filterStart","filterEnd","isNaN","getTime","getEventInfo","ev","options","EventOptions","appInfo","getAppInfo","deviceType","getEventMessage","appIcon","appName","msg","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","Organization_Updated","Organization_PurgedVault","DeviceType","Android","iOS","UWP","ChromeExtension","FirefoxExtension","OperaExtension","EdgeExtension","VivaldiExtension","SafariExtension","WindowsDesktop","MacOsDesktop","LinuxDesktop","ChromeBrowser","FirefoxBrowser","OperaBrowser","SafariBrowser","VivaldiBrowser","EdgeBrowser","IEBrowser","UnknownBrowser","shortId","getShortId","cipherInfo","makeAnchor","groupId","collectionId","organizationUserId","innerHTML","date","pad","getHours","getMinutes","num","norm","floor","abs","EventInfo","OrganizationUserType","TwoFactorProviders","description","priority","premium","tokenService","appIdService","setCryptoKeys","selectedTwoFactorProviderType","logIn","makePreloginKey","hashedPassword","logInHelper","logInTwoFactor","twoFactorProvider","twoFactorToken","remember","logInComplete","logOut","callback","getSupportedTwoFactorProviders","providers","twoFactorProvidersData","has","supportsDuo","supportsU2f","getDefaultTwoFactorProvider","u2fSupported","providerType","providerPriority","provider","kdf","kdfIterations","postPrelogin","PreloginRequest","preloginResponse","statusCode","makeKey","getTwoFactorToken","storedTwoFactorToken","getAppId","appId","deviceRequest","DeviceRequest","TokenRequest","Remember","postIdentityToken","clearState","AuthResult","twoFactor","accessToken","twoFactorResponse","twoFactorProviders2","twoFactorProviders","tokenResponse","setTwoFactorToken","setTokens","refreshToken","setInformation","getUserId","getEmail","setKey","setKeyHash","setEncKey","privateKey","makeKeyPair","keyPair","postAccountKeys","KeysRequest","setEncPrivateKey","collectionService","folderService","storageService","onSearchTextChanged","searchText","searchPlaceholder","searchTextChanged","GroupingsComponent","searchService","cipherService","eventService","showAddNew","onAttachmentsClicked","onShareClicked","onCollectionsClicked","onCloneClicked","cipherType","pageSize","selectAll","checkCipher","select","checked","launch","selectCount","getSelected","getSelectedIds","share","clone","delete","permanent","isDeleted","deleteCipher","refresh","restore","restoreWithServer","copy","typeI18nKey","aType","copyToClipboard","collect","deleteWithServer","softDeleteWithServer","showFixOldAttachments","hasOldAttachments","CiphersComponent","auditService","totpService","passwordGenerationService","showRevisionDate","hasPasswordHistory","viewingPasswordHistory","passwordRevisionDisplayDate","cleanUp","totpUpdateCode","getTimeInterval","totpTick","totpInterval","setInterval","toggleFavorite","editMode","generatePassword","confirmed","getOptions","premiumRequired","upgradeOrganization","viewHistory","clearInterval","getCode","totpCode","half","totpCodeFormatted","allowOwnershipAssignment","cloneMode","ownershipOptions","intervalSeconds","epoch","round","mod","totpSec","totpDash","totpLow","policyService","showPolicyWarning","filterProvider","getTwoFactorProviders","evaluatePolicies","manage","openModal","authenticatorModalRef","TwoFactorAuthenticatorComponent","updateStatus","yubikeyModalRef","TwoFactorYubiKeyComponent","duoModalRef","TwoFactorDuoComponent","emailModalRef","TwoFactorEmailComponent","u2fModalRef","TwoFactorU2fComponent","recoveryCode","recoveryModalRef","TwoFactorRecoveryComponent","ref","getAll","TwoFactorAuthentication","policies","TwoFactorSetupComponent","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","showFree","showCancel","plan","onSuccess","onCanceled","selfHosted","ownedBusiness","premiumAccessAddon","storageGbPriceMonthly","additionalStorage","additionalSeats","interval","storageGb","price","monthlyPrice","yearlyPrice","plans","free","basePrice","noAdditionalSeats","noPayment","families","annualBasePrice","baseSeats","annualPlanType","PlanType","FamiliesAnnually","canBuyPremiumAccessAddon","teams","monthlyBasePrice","seatPrice","annualSeatPrice","monthlySeatPrice","monthPlanType","TeamsMonthly","TeamsAnnually","enterprise","EnterpriseMonthly","EnterpriseAnnually","isSelfHost","files","createOrganization","fileEl","getElementById","doSubmit","tokenResult","paymentComponent","makeShareKey","shareKey","encrypt","collectionCt","fd","FormData","append","postOrganizationLicense","OrganizationCreateRequest","collectionName","billingEmail","planType","Free","paymentToken","businessName","additionalStorageGb","billingAddressPostalCode","taxComponent","billingAddressCountry","taxIdNumber","billingAddressLine1","billingAddressLine2","billingAddressCity","billingAddressState","postOrganization","OrganizationUpgradeRequest","postOrganizationUpgrade","paymentIntentClientSecret","refreshIdentityToken","navigate","cancel","changedPlan","changedOwnedBusiness","additionalStorageTotal","annual","seatTotal","baseTotal","premiumAccessTotal","changedCountry","OrganizationPlansComponent","importService","format","successNavigate","setImportOptions","importOptions","importer","getImporter","fileContents","getFileContents","content","import","properties","getFormatInstructionTitle","results","featuredImportOptions","o","regularImportOptions","file","reader","FileReader","readAsText","evt","pre","target","onerror","ImportComponent","exportService","saved","ExportComponent","getAllCiphers","allCiphers","ciphersWithPasswords","passwordUseMap","reusedPasswordCiphers","getAllDecrypted","ReusedPasswordsReportComponent","unsecuredCiphers","UnsecuredWebsitesReportComponent","passwordStrengthMap","passwordStrengthCache","weakPasswordCiphers","hasUsername","cacheKey","userInput","atPosition","passwordStrength","score","scoreKey","WeakPasswordsReportComponent","exposedPasswordMap","exposedPasswordCiphers","passwordLeaked","exposedCount","ExposedPasswordsReportComponent","services","cipherDocs","load2fa","fetch","Request","json","categoryName","responseJson","serviceName","category","service","tfa","software","InactiveTwoFactorReportComponent","items","prop1","prop2","prop3","SearchPipe","SelectionReadOnlyRequest","SelectionReadOnlyResponse","NotificationsService","SettingsService","version","getApplicationVersion","classList","add","remove","FrontendLayoutComponent","authService","onSuccessfulLoginNavigate","goAfterLogIn","queryParamsSub","queryParams","qParams","save","unsubscribe","invite","loginRedirect","successRoute","LoginComponent","anotherMethod","twoFactorOptionsModal","TwoFactorOptionsComponent","onProviderSelected","selectedProviderType","onRecoverSelected","TwoFactorComponent","showText","scoreWidth","PasswordStrengthComponent","showCreateOrgMessage","showTerms","layout","getPasswordScoreAlertDisplay","enforcedPolicyOptions","minComplexity","reference","referenceId","cookie","pop","shift","getPoliciesByToken","policiesData","PolicyData","Policy","getMasterPasswordPolicyOptions","evaluateMasterPassword","masterPasswordScore","RegisterComponent","KdfType","HintComponent","vaultTimeoutService","routerService","isAuthenticated","hasKey","onSuccessfulSubmit","LockComponent","fired","postAccountVerifyEmailToken","VerifyEmailRequest","VerifyEmailTokenComponent","errorMessage","OrganizationUserAcceptRequest","postOrganizationUserAccept","toast","orgName","organizationName","AcceptOrganizationComponent","TwoFactorRecoveryRequest","postTwoFactorRecover","RecoverTwoFactorComponent","DeleteRecoverRequest","postAccountRecoverDelete","RecoverDeleteComponent","VerifyDeleteRecoverRequest","postAccountRecoverDeleteToken","VerifyRecoverDeleteComponent","getName","lock","NavbarComponent","FooterComponent","UserLayoutComponent","changeDetectorRef","broadcasterService","ngZone","favorites","showVerifyEmail","showBrowserOutdated","showUpdateKey","showPremiumCallout","deleted","getEmailVerified","hasEncKey","groupingsComponent","organizationsComponent","selectedAll","ciphersComponent","reload","selectedTrash","filterDeleted","selectedFavorites","filterFavorites","selectedType","filterCipherType","selectedFolder","selectedFolderId","filterFolder","selectedCollectionId","filterCollection","run","command","successfully","detectChanges","clearGroupingFilters","clearFilters","go","filterSearchText","editCipherAttachments","getOrganization","maxStorageGb","attachmentsModalRef","AttachmentsComponent","madeAttachmentChanges","onUploadedAttachment","onDeletedAttachment","onReuploadedAttachment","shareCipher","shareModalRef","ShareComponent","onSharedCipher","editCipherCollections","collectionsModalRef","CollectionsComponent","onSavedCollections","folderAddEditModalRef","FolderAddEditComponent","onSavedFolder","loadFolders","editFolder","onDeletedFolder","addCipher","component","editCipher","cloneCipher","bulkDelete","selectedIds","bulkDeleteModalRef","BulkDeleteComponent","cipherIds","onDeleted","bulkRestore","bulkRestoreModalRef","BulkRestoreComponent","onRestored","bulkShare","selectedCiphers","bulkShareModalRef","BulkShareComponent","onShared","bulkMove","bulkMoveModalRef","BulkMoveComponent","onMoved","updateKey","updateKeyModalRef","UpdateKeyComponent","relativeTo","replaceUrl","VaultComponent","CipherWithIdRequest","folder","FolderRequest","reupload","reuploadCipherAttachment","check","getPremium","SettingsComponent","deauthorizeSessions","deauthModalRef","DeauthorizeSessionsComponent","purgeVault","purgeModalRef","PurgeVaultComponent","deleteAccount","deleteModalRef","DeleteAccountComponent","AccountComponent","postPurgeCiphers","vaultTimeout","vaultTimeoutAction","vaultTimeouts","localeOptions","supportedTranslationLocales","locale","localeNames","splice","disableIcons","enableGravatars","enableFullWidth","startingLocale","setVaultTimeoutOptions","location","vaultTimeoutActionChanged","newValue","OptionsComponent","custom","getSettingsDomains","equivalentDomains","globalEquivalentDomains","domains","excluded","toggleExcluded","globalDomain","customize","index","UpdateDomainsRequest","excludedGlobalEquivalentDomains","d2","putSettingsDomains","indexTrackBy","DomainRulesComponent","processResponse","UpdateTwoFactorDuoRequest","integrationKey","ikey","secretKey","skey","putTwoFactorOrganizationDuo","putTwoFactorDuo","premiumPrice","storageGbPrice","postAccountLicense","finalizePremium","taxInfoComponent","postPremium","paymentResponse","PremiumComponent","onAdded","ppButtonFormAction","buttonActionProduction","ppButtonBusinessId","businessIdProduction","ppLoading","buttonActionSandbox","businessIdSandbox","creditAmount","ppButtonCustomField","subject","returnUrl","ppButtonFormRef","BitPay","req","BitPayInvoiceRequest","credit","amount","creditAmountNumber","postBitPayInvoice","bitPayUrl","formatAmount","floatAmount","parseFloat","toFixed","AddCreditComponent","onAdjusted","PaymentRequest","postAccountPayment","postOrganizationPayment","currentType","AdjustPaymentComponent","updatePromise","postOrganizationLicenseUpdate","UpdateLicenseComponent","storageAdjustment","StorageRequest","storageGbAdjustment","postAccountStorage","postOrganizationStorage","AdjustStorageComponent","adjustStorageAdd","showAdjustStorage","showUpdateLicense","getUserSubscription","sub","reinstate","usingInAppPurchase","reinstatePromise","postReinstatePremium","cancelPromise","postCancelPremium","downloadLicense","licenseString","JSON","stringify","license","saveFile","updateLicense","closeUpdateLicense","adjustStorage","closeStorage","subscription","cancelled","cancelAtEndDate","upcomingInvoice","storagePercentage","UserSubscriptionComponent","orgPlansComponent","CreateOrganizationComponent","ToolsComponent","history","historyModalRef","PasswordGeneratorHistoryComponent","lengthChanged","minNumberChanged","minSpecialChanged","PasswordGeneratorComponent","breachedAccounts","checkedUsername","BreachReportComponent","originalCipher","isAdmin","loadCollections","loadCipher","getCipherAdmin","encryptCipher","saveCipher","putCipherAdmin","CipherCreateRequest","postCipherAdmin","deleteCipherAdmin","putDeleteCipherAdmin","PasswordHistoryView","enterpriseUrl","OrganizationLayoutComponent","getCollections","collectionDomains","decryptMany","unassignedCollection","getAllNested","nestedCollections","collapse","grouping","isCollapsed","onEventsClicked","accessEvents","useEvents","getAllFromApiForOrganization","applyFilter","searchPending","filteredCiphers","searchCiphersBasic","resetPaging","viewEvents","eventsModalRef","EntityEventsComponent","entityId","showUser","entity","orgUsersUserIdMap","orgUsersIdMap","defaultDates","getOrganizationUsers","loadEvents","clearExisting","refreshPromise","morePromise","dates","getEventsOrganizationUser","continuationToken","getEventsCipher","actingUserId","eventInfo","user","userName","userEmail","ip","ipAddress","accessReports","getExportData","getOrganizationExport","getFileName","collectEvent","accessPolicies","accessGroups","usePolicies","useGroups","ManageComponent","didScroll","pagedCollectionsCount","getUserCollections","loadMore","pagedLength","pagedCollections","pagedSize","addEditModalRef","CollectionAddEditComponent","onSavedCollection","onDeletedCollection","removeCollection","deleteCollection","users","usersModalRef","EntityUsersComponent","entityName","onEditedUsers","isSearching","isSearchable","isPaging","searching","organizationUserType","organizationUserStatusType","showSelected","selectedCount","allUsers","loadUsers","getGroupUsers","s","getCollectionUsers","accessAll","selectedChanged","filterSelected","selections","putGroupUsers","putCollectionUsers","getEventsOrganization","EventsComponent","pagedGroupsCount","getGroups","groups","pagedGroups","group","GroupAddEditComponent","onSavedGroup","onDeletedGroup","removeGroup","deleteGroup","GroupsComponent","statusMap","pagedUsersCount","Confirmed","pagedUsers","Invited","Accepted","confirmedCount","acceptedCount","UserAddEditComponent","onSavedUser","onDeletedUser","removeUser","groupsModalRef","UserGroupsComponent","deleteOrganizationUser","reinvite","postOrganizationUserReinvite","confirm","updateUser","mapIndex","autoConfirm","doConfirmation","confirmModalRef","UserConfirmComponent","onConfirmedUser","getUserPublicKey","publicKeyResponse","publicKey","log","getFingerprint","rsaEncrypt","OrganizationUserConfirmRequest","postOrganizationUserConfirm","PeopleComponent","policiesEnabledMap","MasterPassword","PasswordGenerator","getPolicies","orgPolicies","op","editModalRef","PolicyEditComponent","onSavedPolicy","PoliciesComponent","access2fa","use2fa","canUseApi","useApi","OrganizationUpdateRequest","putOrganization","taxFormPromise","deleteOrganization","DeleteOrganizationComponent","viewApiKey","apiKeyModalRef","ApiKeyComponent","rotateApiKey","rotateApiKeyModalRef","RotateApiKeyComponent","duoComp","getTwoFactorOrganizationProviders","OrganizationBillingComponent","adjustSeatsAdd","showAdjustSeats","showDownloadLicense","showChangePlan","getOrganizationSubscription","postOrganizationReinstate","postOrganizationCancel","changePlan","closeChangePlan","changed","closeDownloadLicense","updated","adjustSeats","closeSeats","billingInterval","OrganizationSubscriptionComponent","emailVerified","masterPasswordHint","culture","twoFactorEnabled","securityStamp","ProfileOrganizationResponse","ProfileResponse","webpackEmptyAsyncContext","keys","exports","angulartics2GoogleAnalytics","settingsService","notificationsService","toasterConfig","ToasterConfig","showCloseButton","mouseoverTimerStop","animation","limit","lastActivity","idleTimer","isIdle","runOutsideAngular","onmousemove","recordActivity","onmousedown","ontouchstart","onclick","onscroll","onkeypress","updateConnection","expired","setFullWidth","uploadEvents","clearEvents","setLastSync","clearToken","clearKeys","purge","clearIndex","now","idleStateChanged","clearTimeout","sanitize","SecurityContext","HTML","bodyOutputType","BodyOutputType","TrustedHtml","trustedHtml","disconnectFromInactivity","reconnectFromActivity","AppComponent","TwoFactorEmailRequest","encryptedPrivateKey","postAccountVerifyEmail","VerifyEmailComponent","makeRequest","postAccountKey","getKey","makeEncKey","encKey","getPrivateKey","encPrivateKey","UpdateKeyRequest","FolderWithIdRequest","deleteManyWithServer","softDeleteManyWithServer","moveManyWithServer","restoreManyWithServer","nonShareableCount","shareableCiphers","writeableCollections","allCollections","filterCollections","checkedCollectionIds","shareManyWithServer","getProfile","profile","fingerprint","UpdateProfileRequest","putProfile","ProfileComponent","tokenSent","newEmail","EmailTokenRequest","postEmailToken","EmailRequest","getKdf","getKdfIterations","newKey","newMasterPasswordHash","remakeEncKey","newEncKey","postEmail","reset","ChangeEmailComponent","rotateEncKey","currentMasterPassword","newMasterPassword","confirmNewMasterPassword","strengthResult","getPasswordStrengthUserInput","PasswordRequest","postPassword","updatePasswordStrength","masterPasswordStrengthTimeout","rotateEncKeyClicked","ChangePasswordComponent","PBKDF2_SHA256","kdfOptions","KdfRequest","postAccountKdf","ChangeKdfComponent","postSecurityStamp","qrScript","UpdateTwoFactorAuthenticatorRequest","putTwoFactorAuthenticator","QRious","element","sendEmail","emailPromise","postTwoFactorEmailSetup","sentEmail","UpdateTwoFactorEmailRequest","putTwoFactorEmail","print","w","open","write","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","colorizedPassword","isSpecial","ColorPasswordPipe","onCopy","copyText","selection","getSelection","rangeCount","getRangeAt","stringEndPos","newLinePos","SelectCopyDirective","sizeName","LoginUriData","AttachmentView","view","decryptToBytes","decValue","SymmetricCryptoKey","macKey","keyB64","encKeyB64","macKeyB64","LoginUri","toLoginUriData","saveCipherAttachment","saveAttachmentWithServer","cipherDomain","deleteCipherAttachment","attachmentId","deleteCipherAttachmentAdmin","allowSelectNone","loadCipherCollections","saveCollections","CipherCollectionsRequest","putCipherCollectionsAdmin","groupsResponse","getCollectionDetails","g","CollectionRequest","putCollection","postCollection","deletePromise","access","getGroupDetails","GroupRequest","putGroup","postGroup","User","getOrganizationUser","OrganizationUserUpdateRequest","putOrganizationUser","OrganizationUserInviteRequest","emails","postOrganizationUserInvite","dontAskAgain","getOrganizationUserGroups","userGroups","ug","OrganizationUserUpdateGroupsRequest","groupIds","putOrganizationUserGroups","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","postOrganizationApiKey","apiKey","clientId","scope","postOrganizationRotateApiKey","onChanged","ChangePlanComponent","onDownloaded","installationId","getOrganizationLicense","DownloadLicenseComponent","seatAdjustment","SeatRequest","postOrganizationSeat","AdjustSeatsComponent","elementRef","trueValue","falseValue","propagateChange","_","onHostChange","writeValue","setProperty","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","TrueFalseValueDirective","logoutCallback","customUserAgent","urlsSet","isWebClient","isDesktopClient","usingBaseUrl","device","getDevice","setUrls","urls","apiBaseUrl","identityBaseUrl","eventsBaseUrl","api","headers","Headers","qsStringify","toIdentityToken","identityClientId","credentials","getCredentials","cache","isJsonResponse","IdentityTokenResponse","TwoFactorProviders2","clearTwoFactorToken","IdentityTwoFactorResponse","ErrorResponse","doRefreshToken","BillingResponse","SubscriptionResponse","TaxInfoResponse","PreloginResponse","getAccountRevisionDate","postPasswordHint","postRegister","PaymentResponse","postIapCheck","getEnterprisePortalSignInToken","getFolder","FolderResponse","postFolder","putFolder","deleteFolder","getCipher","CipherResponse","getCiphersOrganization","ListResponse","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","getSync","SyncResponse","postImportDirectory","DomainsResponse","TwoFactorProviderResponse","TwoFactorAuthenticatorResponse","TwoFactorEmailResponse","TwoFactorDuoResponse","TwoFactorYubiKeyResponse","TwoFactorU2fResponse","ChallengeResponse","TwoFactorRecoverResponse","postTwoFactorEmail","OrganizationResponse","OrganizationSubscriptionResponse","ApiKeyResponse","getEvents","addEventParameters","EventResponse","postEventsCollect","getActiveBearerToken","authHeader","UserKeyResponse","getHibpBreach","BreachAccountResponse","getToken","tokenNeedsRefresh","nativeFetch","hasResponse","requestInit","handleError","tokenError","getRefreshToken","decodedToken","decodeToken","grant_type","client_id","refresh_token","typeHeader","AttachmentResponse","h","PasswordHistoryResponse","CollectionDetailsResponse","GlobalDomainResponse","businessAddress1","businessAddress2","businessAddress3","businessCountry","businessTaxNumber","seats","maxCollections","useDirectory","storageName","BillingSubscriptionResponse","BillingSubscriptionUpcomingInvoiceResponse","trialEndDate","periodStartDate","periodEndDate","cancelledDate","BillingSubscriptionItemResponse","quantity","makeAndGetAppId","getAnonymousAppId","existingId","guid","AppIdService","hashStart","hashEnding","leakedHashes","v","throttle","Keys","DomainMatchBlacklist","Set","_decryptedCipherCache","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","decCiphers","getLocaleSortingFunction","getAllDecryptedForGrouping","groupingId","getAllDecryptedForUrl","includeOtherTypes","eqDomainsPromise","getEquivalentDomains","eqDomains","matches","eqDomain","matchingDomains","defaultMatch","Domain","domainUrlHost","Host","urlHost","Exact","StartsWith","Never","getLastUsedForUrl","sortCiphersByLastUsed","updateLastUsedDate","ciphersLocalData","cached","saveNeverDomain","saveWithServer","upsert","shareWithServer","attachmentPromises","shareAttachmentWithServer","encCipher","CipherShareRequest","encCiphers","CipherBulkShareRequest","unencryptedFile","admin","readAsArrayBuffer","saveAttachmentRawWithServer","cData","filename","encFileName","dataEncKey","encryptToBytes","encData","blob","Blob","filepath","contentType","getSingleMessage","saveCollectionsWithServer","ids","CipherBulkMoveRequest","CipherBulkDeleteRequest","deleteAttachment","deleteAttachmentWithServer","aLastUsed","bLastUsed","bothNotNull","sortCiphersByLastUsedThenName","aName","bName","softDelete","setDeletedDate","clearDeletedDate","CipherBulkRestoreRequest","attachmentView","attachmentResponse","arrayBuffer","buf","decryptFromBytes","decBuf","theObj","modelProp","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","keyHash","setOrgKeys","orgKeys","getKeyHash","getEncKey","encKeyCipher","decEncKey","stretchKey","getPublicKey","rsaExtractPublicKey","keyFingerprint","hkdfExpand","userFingerprint","hashPhrase","getOrgKeys","encOrgKeys","rsaDecrypt","clearKey","legacyEtmKey","clearKeyHash","clearEncKey","memoryOnly","clearKeyPair","clearOrgKeys","clearPinProtectedKey","toggleKey","option","salt","pbkdf2","makeKeyFromPin","pin","protectedKeyCs","makePinKey","pinKey","decKey","randomBytes","rsaGenerateKeyPair","publicB64","privateEnc","getKeyForEncryption","theKey","buildEncKey","plainValue","plainBuf","aesEncrypt","encObj","encValue","macLen","encBytes","cipherString","aesDecryptToBytes","decipher","aesDecryptToUtf8","encBuf","ctBytes","ivBytes","macBytes","randomNumber","min","rval","range","bitsNeeded","ceil","log2","bytesNeeded","mask","pow","byteArray","EncryptedObject","macData","hmac","keyForEnc","resolveLegacyKey","fastParams","aesDecryptFastParameters","hmacFast","computedMac","compareFast","aesDecryptFast","aesDecrypt","Rsa2048_OaepSha256_HmacSha256_B64","Rsa2048_OaepSha1_HmacSha256_B64","alg","prk","info","hashLen","okm","previousT","minimumEntropy","entropyPerWord","EEFLongWordList","numWords","hashArr","entropyAvailable","phrase","hashNumber","bigInt","fromArray","remainder","divide","encKeyEnc","getWebVaultUrl","webVaultUrl","setUrlsFromStorage","urlsObj","icons","notifications","webVault","envUrls","EnvironmentUrls","apiUrl","identityUrl","notificationsUrl","eventsUrl","formatUrl","decryptedFolderCache","Folder","decFolders","noneFolder","folderCopy","FolderData","cId","updates","systemLanguage","localesDirectory","getLocalesJson","defaultMessages","localeMessages","translationLocale","Intl","Collator","numeric","sensitivity","loadMessages","translate","messagesObj","formattedLocale","locales","placeholders","placeProp","replaceToken","replaceContent","DefaultOptions","ambiguous","minNumber","uppercase","minUppercase","lowercase","minLowercase","special","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","saveOptions","getHistory","encrypted","decryptHistory","addHistory","currentHistory","matchesPrevious","unshift","GeneratedPasswordHistory","encryptHistory","newHistory","userInputs","globalUserInputs","finalUserInputs","zxcvbn","normalizeOptions","item","decrypted","array","forGeneration","minUppercaseCalc","minLowercaseCalc","minNumberCalc","minSpecialCalc","settingsCache","getSettingsKey","setEquivalentDomains","setSettingsKey","getSettings","settings","syncInProgress","getLastSync","lastSync","toJSON","forceSync","allowThrowOnError","syncStarted","needsSyncing","syncCompleted","needsSyncResult","needsSync","syncProfile","syncFolders","syncCollections","syncCiphers","syncSettings","syncPolicies","syncUpsertFolder","notification","isEdit","localFolder","remoteFolder","syncDeleteFolder","syncUpsertCipher","shouldUpdate","localCipher","checkCollections","remoteCipher","syncDeleteCipher","getSecurityStamp","stamp","setSecurityStamp","OrganizationData","replaceOrganizations","setToken","setRefreshToken","skipTokenStorage","toggleTokens","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","usersGetPremium","Organization","lockedCallback","loggedOutCallback","checkOnInterval","checkVaultTimeout","isLocked","isViewOpen","lockTimeout","lastActive","vaultTimeoutSeconds","allowSoftLock","isPinLockSet","build","CipherWithIds","CollectionWithId","FolderWithId","NotificationType","canActivate","routerState","AuthGuardService","isOwner","OrganizationGuardService","allowedTypes","OrganizationTypeGuardService","UnauthGuardService","enableProdMode","platformBrowser","preserveWhitespaces","registerLocaleData","AppModule","subscribers","messageCallback","rememberEmail","showPassword","twoFactorRoute","onSuccessfulLoginTwoFactorNavigate","disableFavicon","onSuccessfulLogin","togglePassword","choose","recover","backdrop","className","addEventListener","u2fReady","initU2f","twoFactorEmail","loginRoute","customWebVaultUrl","cleanupU2f","providerData","Challenge","challenges","Challenges","keyHandle","DuoWebSDK","iframe","sig_request","Signature","submit_callback","sig","stop","doToast","cleanup","getDeviceString","identifier","pushToken","deviceIdentifier","deviceName","twoFactorRemember","errorCallback","infoCallback","parseFunction","parseMessage","connectorLink","base64Encode","sendMessage","contentWindow","postMessage","removeEventListener","validMessage","origin","confirmMasterPassword","hint","useLowerKdf","isEdge","isIE","RegisterRequest","orgInvite","confirmField","PasswordHintRequest","pinLock","webVaultHostname","invalidPinAttempts","pinSet","vaultUrl","failed","decPin","setKeyAndContinue","storedKeyHash","doContinue","showFolders","showCollections","showFavorites","showTrash","onAllClicked","onFavoritesClicked","onTrashClicked","onCipherTypeClicked","onFolderClicked","onAddFolder","onEditFolder","onCollectionClicked","setLoaded","collapsedGroupings","nestedFolders","clearSelections","selectFavorites","selectTrash","selectType","selectFolder","selectCollection","idPrefix","onError","appFallbackSrc","FallbackSrcDirective","activeCipherId","onCipherClicked","onCipherRightClicked","onAddCipher","onAddCipherOptions","pagedCiphers","searchTimeout","pagedCiphersCount","refreshing","deletedFilter","searchCiphers","rightClickCipher","addCipherOptions","onCancelled","onEditAttachments","onShareCipher","onEditCollections","onGeneratePassword","showCardCode","fieldType","addFieldType","typeOptions","cardBrandOptions","cardExpMonthOptions","identityTitleOptions","addFieldTypeOptions","uriMatchOptions","myEmail","addEditCipherInfo","organizationChanged","previousCipherId","addUri","removeUri","addField","removeField","trackByFunction","editCollections","restorePromise","restoreCipher","toggleCardCode","toggleFieldValue","showValue","toggleUriOptions","loginUriMatchChanged","drop","moveItemInArray","previousIndex","currentIndex","checkPassword","checkPasswordPromise","deletePromises","reuploadPromises","hasUpdatedKey","download","downloading","canAccessAttachments","foundAttachment","a2","selectedCollectionIds","cipherView","onSaved","downloadFile","getExport","prefix","csv","showSelect","onSelected","avoidAmbiguous","optionsResponse","sliderChanged","sliderInput","regenerate","copyOptions","toggleOptions","language","BroadcasterMessagingService","WebPlatformUtilsService","HtmlStorageService","MemoryStorageService","WebCryptoFunctionService","eventLoggingService","Analytics","htmlEl","documentElement","theme","ServicesModule","subscriber","arg","localStorageKeys","localStorageStartsWithKeys","isLocalStorage","localStorage","getItem","sessionStorage","setItem","removeItem","swKey","BillingSourceResponse","BillingTransactionResponse","BillingInvoiceResponse","cardBrand","needsVerification","pdfUrl","paid","createdDate","refunded","partiallyRefunded","refundedAmount","details","addedDate","breachDate","dataClasses","isActive","isVerified","logoPath","modifiedDate","pwnCount","identityResponse","errorModel","responseErrorModel","messages","lastSep","lastIndexOf","access_token","expiresIn","expires_in","tokenType","token_type","OrganizationUserResponse","userProfile","selfHost","taxIdType","KeyResponse","throttleKey","allThrottles","getThrottles","throttles","argsThrottleKey","queue","exec","inEffect","Owner","Manager","Admin","filePath","store","browserCache","chrome","isFirefox","isChrome","isOpera","isVivaldi","isSafari","isMacAppStore","analyticsId","rel","click","blobData","blobOptions","fileNameLower","doDownload","endsWith","msSaveOrOpenBlob","msSaveBlob","createObjectURL","position","confirmText","cancelText","iconClasses","iconHtmlStr","fire","heightAuto","buttonsStyling","iconHtml","showCancelButton","cancelButtonText","showConfirmButton","confirmButtonText","clipboardData","setData","queryCommandSupported","textarea","copyEl","contains","execCommand","readFromClipboard","AnalyticsIds","gaFilter","dependencyResolver","gaTrackingId","defaultDisabled","deps","appVersion","GoogleAnalyticsObject","param1","param2","ga","disabled","gaAnonAppId","gaTrackPageView","hitType","page","gaTrackEvent","XMLHttpRequest","eventCategory","eventAction","eventLabel","eventValue","cleanPagePath","pagePath","paramIndex","pathParts","newPathParts","eventType","uploadImmediately","orgIds","eventCollection","EventData","EventRequest","buildCommonCipher","unparse","collectionPromises","decCol","cipherPromises","decCipher","extension","padNumber","getSeconds","padCharacter","numString","login_uri","login_username","login_password","login_totp","template","toView","getImportOptions","importResult","halfway","last","badData","postImport","getImporterInstance","BitwardenCsvImporter","BitwardenJsonImporter","LastPassCsvImporter","KeePassXCsvImporter","AviraCsvImporter","BlurCsvImporter","SafeInCloudXmlImporter","PadlockCsvImporter","KeePass2XmlImporter","ChromeCsvImporter","FirefoxCsvImporter","UpmCsvImporter","SaferPassCsvImporter","MeldiumCsvImporter","OnePassword1PifImporter","OnePasswordWinCsvImporter","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","ImportCiphersRequest","KvpRequest","ImportOrganizationCiphersRequest","fieldLower","web","logins","custName","note","pwd","loginName","cards","holderName","cardNumber","cvv","expirationDate","website","secondary_username","col","addCollection","collectionIndex","delimPosition","groupingsMap","fav","extra","OfficialProps","processingCustomFields","entry","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","time","designationKey","valueKey","fieldDesignation","street","IgnoredProperties","getProp","altUsername","lowerProp","View","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","entries","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","sync","contextId","payloadUserId","UserId","myUserId","SyncCipherCreate","SyncCipherUpdate","SyncCipherDelete","SyncLoginDelete","SyncFolderCreate","SyncFolderUpdate","SyncFolderDelete","SyncVault","SyncCiphers","SyncSettings","SyncOrgKeys","LogOut","SyncCipherNotification","SyncFolderNotification","UserNotification","policyCache","MasterPasswordPolicyOptions","newPassword","toLocaleLowerCase","toLocaleUpperCase","indexing","onlySearchName","builder","lunr","Builder","boost","extractor","uriExtractor","fieldExtractor","attachmentExtractor","timeEnd","isArray","every","getIndexForSearch","ciphersMap","searchResults","Query","wildcard","LEADING","TRAILING","q","tokenizer","term","joined","protocolIndex","queryIndex","crypto","subtle","ua","isOldSafari","algorithm","iterations","forgeLen","passwordBytes","toByteString","saltBytes","derivedKeyBytes","forge","wcLen","passwordBuf","toBuf","saltBuf","pbkdf2Params","toWebCryptoAlgorithm","importKey","impKey","deriveBits","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","AppRoutingModule"],"mappings":"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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,WACA,SACA,WACA,QACA,UACA,OACA,MACA,YACA,UACA,QACA,MACA,SACA,QACA,QACA,OACA,SACA,SACA,OACA,QACA,MACA,UACA,QACA,MACA,WACA,OACA,YACA,QACA,YACA,UACA,UACA,QACA,OACA,MACA,SACA,SACA,OACA,SACA,YACA,YACA,UACA,S,g7CCjmPJ,cAEA,QAOA,aAUI,WAAoBz9D,EAAgCghB,EACxCqzB,GADQ,KAAAr0C,aAAgC,KAAAghB,iBACxC,KAAAqzB,uBAoGhB,OAlGI,YAAA+pB,eAAA,WACI,OAAwB,MAApBt3E,KAAKu3E,YACEv3E,KAAKu3E,YACLv3E,KAAKyX,QACLzX,KAAKyX,QAET,MAGL,YAAA+/D,mBAAN,W,oGACyB,SAAMx3E,KAAKk6B,eAAez7B,IAAI,EAAA8S,iBAAiBD,qB,OAcpE,OAdMmmE,EAAe,SACfzX,EAAOyX,GAAW,CACpB/+D,KAAM,KACN0nD,IAAK,KACLzhD,SAAU,KACV+4D,MAAO,KACPC,cAAe,KACf3vD,OAAQ,KACR4vD,SAAU,KACVjzC,WAAY,MAGVkzC,EAAU,IAAI,EAAAC,gBAEhB9X,EAAKtnD,MACL1Y,KAAKyX,QAAUogE,EAAQn/D,KAAOsnD,EAAKtnD,KACnC1Y,KAAKkZ,WAAW6mD,QAAQ8X,GACxB,MAGJ73E,KAAKu3E,YAAcvX,EAAK4X,SACxB53E,KAAK+3E,OAASF,EAAQzX,IAAMJ,EAAKI,IACjCpgE,KAAKg4E,YAAcH,EAAQl5D,SAAWqhD,EAAKrhD,SAC3C3e,KAAKwX,SAAWwoD,EAAK0X,MACrB13E,KAAKi4E,iBAAmBjY,EAAK2X,cAC7B33E,KAAKk4E,UAAYL,EAAQ7vD,OAASg4C,EAAKh4C,OACvChoB,KAAKohD,cAAgB4e,EAAKr7B,WAC1B3kC,KAAKkZ,WAAW6mD,QAAQ8X,G,aAGtB,YAAA9X,QAAN,SAAcC,G,gGAUV,OATAA,EAAKtnD,KAAO1Y,KAAKm4E,UAAUnY,EAAKtnD,MAChCsnD,EAAK4X,SAAW53E,KAAKm4E,UAAUnY,EAAK4X,UACpC5X,EAAKI,IAAMpgE,KAAKm4E,UAAUnY,EAAKI,KAC/BJ,EAAKrhD,SAAW3e,KAAKm4E,UAAUnY,EAAKrhD,UACpCqhD,EAAK0X,MAAQ13E,KAAKm4E,UAAUnY,EAAK0X,OACjC1X,EAAK2X,cAAgB33E,KAAKm4E,UAAUnY,EAAK2X,eACzC3X,EAAKh4C,OAAShoB,KAAKm4E,UAAUnY,EAAKh4C,QAClCg4C,EAAKr7B,WAAa3kC,KAAKm4E,UAAUnY,EAAKr7B,YAEtC,GAAM3kC,KAAKk6B,eAAeqT,KAAK,EAAAh8B,iBAAiBD,mBAAoB,CAChEoH,KAAMsnD,EAAKtnD,KACX0nD,IAAKJ,EAAKI,IACVzhD,SAAUqhD,EAAKrhD,SACfi5D,SAAU5X,EAAK4X,SACfF,MAAO1X,EAAK0X,MACZC,cAAe3X,EAAK2X,cACpB3vD,OAAQg4C,EAAKh4C,OACb2c,WAAYq7B,EAAKr7B,c,OAyBrB,OAjCA,SAWA3kC,KAAKyX,QAAUuoD,EAAKtnD,KACpB1Y,KAAKu3E,YAAcvX,EAAK4X,SACxB53E,KAAK+3E,OAAS/X,EAAKI,IACnBpgE,KAAKg4E,YAAchY,EAAKrhD,SACxB3e,KAAKwX,SAAWwoD,EAAK0X,MACrB13E,KAAKi4E,iBAAmBjY,EAAK2X,cAC7B33E,KAAKk4E,UAAYlY,EAAKh4C,OACtBhoB,KAAKohD,cAAgB4e,EAAKr7B,WAEpBkzC,EAAU,IAAI,EAAAC,gBAChB93E,KAAKyX,QACLogE,EAAQn/D,KAAO1Y,KAAKyX,SAEpBogE,EAAQzX,IAAMpgE,KAAK+3E,OACnBF,EAAQl5D,SAAW3e,KAAKg4E,YACxBH,EAAQ7vD,OAAShoB,KAAKk4E,WAG1Bl4E,KAAKkZ,WAAW6mD,QAAQ8X,GACS,MAA7B73E,KAAKutD,sBACLvtD,KAAKutD,qBAAqBxiD,KAAK/K,MAE5B,CAAP,EAAOggE,WAGH,YAAAmY,UAAR,SAAkBvzE,GACd,OAAW,MAAPA,GAAuB,KAARA,EACR,OAGXA,EAAMA,EAAIK,QAAQ,QAAS,KAClBD,WAAW,YAAeJ,EAAII,WAAW,cAC9CJ,EAAM,WAAaA,GAGhBA,EAAIxB,SAEnB,EA/GA,GAAa,EAAAgO,sB,g7CCTb,aAEA,UAIA,SAIA,SAWA,SACA,QAEMu3D,EACa,WADbA,EAEa,WAInB,aAGI,WAAoBrjD,EAAsC4E,EAC9ChR,EAAgCghB,EAChCx6B,EAAkC+6B,GAF1B,KAAAnV,gBAAsC,KAAA4E,cAC9C,KAAAhR,aAAgC,KAAAghB,iBAChC,KAAAx6B,cAAkC,KAAA+6B,gBA6KlD,OA3KI,YAAAuuC,WAAA,WACIhpE,KAAKo4E,qBAAuB,MAG1B,YAAA5yC,QAAN,SAAcrX,EAAmBvvB,G,kGAGf,OAFRu4C,EAAS,IAAI,EAAAkhC,QACZz4E,GAAKuuB,EAAMvuB,GAClB,EAAAu3C,EAAc,GAAMn3C,KAAKslB,cAAckgB,QAAQrX,EAAMpnB,KAAMnI,I,OAC3D,OADA,EAAOmI,KAAO,SACP,CAAP,EAAOowC,WAGL,YAAA14C,IAAN,SAAUmB,G,kGACS,SAAMI,KAAKkqB,YAAYmP,a,OACtB,OADV5U,EAAS,SACC,GAAMzkB,KAAKk6B,eAAez7B,IACtCkqE,EAAqBlkD,I,OACzB,OAAe,OAFT/d,EAAU,WAEQA,EAAQzH,eAAeW,GAIxC,CAAP,EAAO,IAAI,EAAAy4E,OAAO3xE,EAAQ9G,KAHf,CAAP,EAAO,cAMT,YAAA2gC,OAAN,W,sGACmB,SAAMvgC,KAAKkqB,YAAYmP,a,OACtB,OADV5U,EAAS,SACC,GAAMzkB,KAAKk6B,eAAez7B,IACtCkqE,EAAqBlkD,I,OAEzB,IAAW7kB,KAHL8G,EAAU,SAEVjF,EAAqB,GACViF,EACTA,EAAQzH,eAAeW,IACvB6B,EAAShB,KAAK,IAAI,EAAA43E,OAAO3xE,EAAQ9G,KAGzC,MAAO,CAAP,EAAO6B,WAGL,YAAAuoC,gBAAN,W,oGACI,OAAiC,MAA7BhqC,KAAKo4E,qBACE,CAAP,EAAOp4E,KAAKo4E,sBAGD,GAAMp4E,KAAKslB,cAAcyqB,U,OACxC,IADe,SAEX,MAAM,IAAIzlC,MAAM,WAKJ,OAFVguE,EAA2B,GAC3BvjE,EAAgC,GACtB,GAAM/U,KAAKugC,U,OAK3B,OALgB,SACR78B,SAAQ,SAACyzC,GACbpiC,EAAStU,KAAK02C,EAAO7hC,UAAUhU,MAAK,SAACsF,GAAM,OAAA0xE,EAAW73E,KAAKmG,UAG/D,GAAMuO,QAAQK,IAAIT,I,OAQlB,OARA,SACAujE,EAAW7tD,KAAK,EAAA3lB,MAAMqK,gBAAgBnP,KAAKN,YAAa,UAElD64E,EAAa,IAAI,EAAAvvE,YACZjC,KAAO/G,KAAKN,YAAYO,EAAE,cACrCq4E,EAAW73E,KAAK83E,GAEhBv4E,KAAKo4E,qBAAuBE,EACrB,CAAP,EAAOt4E,KAAKo4E,8BAGV,YAAA12B,aAAN,W,kGACoB,SAAM1hD,KAAKgqC,mB,OAS3B,OATMtjC,EAAU,SACVqpE,EAAqC,GAC3CrpE,EAAQhD,SAAQ,SAACkD,GACb,IAAM4xE,EAAa,IAAI,EAAAxvE,WACvBwvE,EAAW54E,GAAKgH,EAAEhH,GAClB44E,EAAWp6D,aAAexX,EAAEwX,aAC5B,IAAMtY,EAAkB,MAAVc,EAAEG,KAAeH,EAAEG,KAAK9B,QAAQ,aAAc,IAAII,MA/EnD,KA+E6E,GAC1F,EAAA4qE,aAAaC,eAAeH,EAAO,EAAGjqE,EAAO0yE,EAAY,KAhF5C,QAkFV,CAAP,EAAOzI,WAGL,YAAAI,UAAN,SAAgBvwE,G,gGACI,SAAMI,KAAK0hD,gB,OAC3B,OADMh7C,EAAU,SACT,CAAP,EAAO,EAAAupE,aAAaG,kBAAkB1pE,EAAS9G,YAG7C,YAAAwsE,eAAN,SAAqBj1B,G,6GACX31B,EAAU,IAAI,EAAA41B,cAAcD,GAGjB,MAAbA,EAAOv3C,GAAP,MACW,GAAMI,KAAKkZ,WAAW8oD,WAAWxgD,I,cAA5C/f,EAAW,SACX01C,EAAOv3C,GAAK6B,EAAS7B,G,aAEV,SAAMI,KAAKkZ,WAAW+oD,UAAU9qB,EAAOv3C,GAAI4hB,I,OAAtD/f,EAAW,S,iBAGA,SAAMzB,KAAKkqB,YAAYmP,a,OAEtC,OAFM5U,EAAS,SACTnkB,EAAO,IAAI,EAAAm4E,WAAWh3E,EAAUgjB,GACtC,GAAMzkB,KAAKqsE,OAAO/rE,I,cAAlB,S,YAGE,YAAA+rE,OAAN,SAAal1B,G,oGACM,SAAMn3C,KAAKkqB,YAAYmP,a,OACxB,OADR5U,EAAS,SACD,GAAMzkB,KAAKk6B,eAAez7B,IACpCkqE,EAAqBlkD,I,OAczB,OAbe,OAFX/d,EAAU,YAGVA,EAAU,IAGVywC,aAAkB,EAAAshC,WAElB/xE,GADME,EAAIuwC,GACAv3C,IAAMgH,EAEfuwC,EAAwBzzC,SAAQ,SAACkD,GAC9BF,EAAQE,EAAEhH,IAAMgH,KAIxB,GAAM5G,KAAKk6B,eAAeqT,KAAKo7B,EAAqBlkD,EAAQ/d,I,cAA5D,SACA1G,KAAKo4E,qBAAuB,K,YAG1B,YAAAnzE,QAAN,SAAcyB,G,gGACK,SAAM1G,KAAKkqB,YAAYmP,a,OACtC,OADM5U,EAAS,SACf,GAAMzkB,KAAKk6B,eAAeqT,KAAKo7B,EAAqBlkD,EAAQ/d,I,cAA5D,SACA1G,KAAKo4E,qBAAuB,K,YAG1B,YAAAlhE,MAAN,SAAYuN,G,0FACR,SAAMzkB,KAAKk6B,eAAe6S,OAAO47B,EAAqBlkD,I,cAAtD,SACAzkB,KAAKo4E,qBAAuB,K,YAG1B,YAAAx8C,OAAN,SAAah8B,G,wGACM,SAAMI,KAAKkqB,YAAYmP,a,OACtB,OADV5U,EAAS,SACC,GAAMzkB,KAAKk6B,eAAez7B,IACtCkqE,EAAqBlkD,I,OACzB,GAAe,OAFT/d,EAAU,UAGZ,UAGJ,GAAkB,iBAAP9G,EAAiB,CACxB,GAAmB,MAAf8G,EAAQ9G,GACR,iBAEG8G,EAAQ9G,QAEdA,EAAgB8D,SAAQ,SAACxF,UACfwI,EAAQxI,MAIvB,SAAM8B,KAAKk6B,eAAeqT,KAAKo7B,EAAqBlkD,EAAQ/d,I,OAI5C,OAJhB,SACA1G,KAAKo4E,qBAAuB,KAGZ,GAAMp4E,KAAKk6B,eAAez7B,IAAmCkqE,EAAqBlkD,I,OAClG,GAAe,OADTxb,EAAU,UACK,CAEjB,IAAWyvE,KADLC,EAAwB,GACZ1vE,EACVA,EAAQyvE,GAAKn6D,WAAa3e,IAC1BqJ,EAAQyvE,GAAKn6D,SAAW,KACxBo6D,EAAQl4E,KAAKwI,EAAQyvE,KAGzBC,EAAQv6E,OAAS,GACjB4B,KAAKy6B,cAAc4xC,OAAOsM,G,kBAKhC,YAAAn8C,iBAAN,SAAuB58B,G,0FACnB,SAAMI,KAAKkZ,WAAWgpD,aAAatiE,I,OACnC,OADA,SACA,GAAMI,KAAK47B,OAAOh8B,I,cAAlB,S,YAER,EAlLA,GAAa,EAAAoR,iB,8EC5Bb,MAMI,SAAYvP,EAA0BgjB,GAClCzkB,KAAKykB,OAASA,EACdzkB,KAAK+G,KAAOtF,EAASsF,KACrB/G,KAAKJ,GAAK6B,EAAS7B,GACnBI,KAAKoe,aAAe3c,EAAS2c,cAVxB,EAAAq6D,c,g7CCAb,iBAmDI,WAAsBG,EAAkCC,EAC1CC,GADQ,KAAAF,iBAAkC,KAAAC,mBAC1C,KAAAC,iBAjDd,KAAArgC,4BAAwC,CAAC,MAGzC,KAAAE,YAAc,IAAI3pC,IAAoB,CAClC,CAAC,KAAM,aACP,CAAC,KAAM,aACP,CAAC,KAAM,UACP,CAAC,KAAM,WACP,CAAC,KAAM,SACP,CAAC,KAAM,WACP,CAAC,KAAM,YACP,CAAC,KAAM,WACP,CAAC,QAAS,qBACV,CAAC,KAAM,aACP,CAAC,KAAM,WACP,CAAC,KAAM,SACP,CAAC,KAAM,SACP,CAAC,KAAM,SACP,CAAC,KAAM,YACP,CAAC,KAAM,SACP,CAAC,KAAM,UACP,CAAC,KAAM,YACP,CAAC,KAAM,UACP,CAAC,KAAM,oBACP,CAAC,KAAM,YACP,CAAC,KAAM,OACP,CAAC,KAAM,OACP,CAAC,KAAM,kBACP,CAAC,KAAM,cACP,CAAC,KAAM,UACP,CAAC,QAAS,uBACV,CAAC,QAAS,aACV,CAAC,KAAM,UACP,CAAC,KAAM,WACP,CAAC,KAAM,cACP,CAAC,KAAM,WACP,CAAC,KAAM,OACP,CAAC,KAAM,UACP,CAAC,KAAM,cACP,CAAC,KAAM,cACP,CAAC,QAAS,YACV,CAAC,QAAS,YAIJ,KAAA+pE,gBAAuB,GACvB,KAAAC,eAAsB,GAI5Bh5E,KAAK44E,eAAiBA,EAAe3zE,QAAQ,IAAK,KA4F1D,OAzFU,YAAA8F,KAAN,SAAW2tC,G,0FACP,GAAI14C,KAAKgL,OACL,MAAM,IAAIV,MAAM,6BAEpB,GAAwC,MAApCtK,KAAKy4C,6BAAmF,IAA5Cz4C,KAAKy4C,4BAA4Br6C,OAC7E,MAAM,IAAIkM,MAAM,wCAGpBtK,KAAKgL,QAAS,EACdhL,KAAK04C,OAAS14C,KAAKi5E,kBAA8B,MAAVvgC,EAAiBA,EAAS14C,KAAK44E,eAEtE,IACI54E,KAAKuP,SAAW,IAAI2pE,KAAKC,SAASn5E,KAAK04C,OAAQ,CAAE0gC,SAAS,EAAMC,YAAa,SAC/E,SACEr5E,KAAKuP,SAAW,K,OAGsD,IAAtEvP,KAAKy4C,4BAA4Bh0C,QAAQzE,KAAKi5E,qBAC9Cj5E,KAAKi5E,kBAAoBj5E,KAAKi5E,kBAAkBtuE,MAAM,EAAG,IAEiB,IAAtE3K,KAAKy4C,4BAA4Bh0C,QAAQzE,KAAKi5E,qBAC9Cj5E,KAAKi5E,kBAAoBj5E,KAAKy4C,4BAA4B,KAIrC,MAAzBz4C,KAAK64E,iBAAL,MACA,GAAM74E,KAAKs5E,aAAat5E,KAAKi5E,kBAAmBj5E,KAAKg5E,iB,cAArD,SACIh5E,KAAKi5E,oBAAsBj5E,KAAKy4C,4BAA4B,GAA5D,MACA,GAAMz4C,KAAKs5E,aAAat5E,KAAKy4C,4BAA4B,GAAIz4C,KAAK+4E,kB,OAAlE,S,mCAKZ,YAAA94E,EAAA,SAAEL,EAAYC,EAAaC,EAAaC,GACpC,OAAOC,KAAKu5E,UAAU35E,EAAIC,EAAIC,EAAIC,IAGtC,YAAAw5E,UAAA,SAAU35E,EAAYC,EAAaC,EAAaC,GAC5C,IAAIsD,EAqBJ,MAZe,MAPXA,EADArD,KAAKg5E,eAAe/5E,eAAeW,IAAOI,KAAKg5E,eAAep5E,GACrDI,KAAKg5E,eAAep5E,GACtBI,KAAK+4E,gBAAgB95E,eAAeW,IAAOI,KAAK+4E,gBAAgBn5E,GAC9DI,KAAK+4E,gBAAgBn5E,GAErB,MAIC,MAANC,IACAwD,EAASA,EAAOgC,MAAM,UAAUlC,KAAKtD,IAE/B,MAANC,IACAuD,EAASA,EAAOgC,MAAM,UAAUlC,KAAKrD,IAE/B,MAANC,IACAsD,EAASA,EAAOgC,MAAM,UAAUlC,KAAKpD,KAItCsD,GAGG,YAAAi2E,aAAd,SAA2B5gC,EAAgB8gC,G,0GAEvB,OADVC,EAAkB/gC,EAAOzzC,QAAQ,IAAK,KAC5B,GAAMjF,KAAK84E,eAAeW,I,OAC1C,IAAWrqE,KADLsqE,EAAU,SAEZ,GAAKA,EAAQz6E,eAAemQ,KAG5BoqE,EAAYpqE,GAAQsqE,EAAQtqE,GAAMvO,QAE9B64E,EAAQtqE,GAAMuqE,cACd,IAAWC,KAAaF,EAAQtqE,GAAMuqE,aAC7BD,EAAQtqE,GAAMuqE,aAAa16E,eAAe26E,IAC1CF,EAAQtqE,GAAMuqE,aAAaC,GAAWrxC,UAIrCsxC,EAAe,MAAQD,EAAUnvE,cAAgB,MAEhC,QADnBqvE,EAAiBJ,EAAQtqE,GAAMuqE,aAAaC,GAAWrxC,UACT,OAAnBuxC,GAA8C,OAAnBA,IACtDA,EAAiB,MAAQA,EAAiB,MAE9CN,EAAYpqE,GAAQoqE,EAAYpqE,GAAMnK,QAAQ,IAAIQ,OAAOo0E,EAAc,KAAMC,I,kBAMjG,EAjJA,GAAa,EAAAv6E,e,g7CCFb,cAEA,SACA,UACA,UAUA,SAEA,SAEMw6E,EAAiB,CACnB37E,OAAQ,GACR47E,WAAW,EACXvmE,QAAQ,EACRwmE,UAAW,EACXC,WAAW,EACXC,aAAc,EACdC,WAAW,EACXC,aAAc,EACdC,SAAS,EACT9d,WAAY,EACZv0D,KAAM,WACN2uE,SAAU,EACV2D,cAAe,IACf3d,YAAY,EACZE,eAAe,GAGb6L,EACO,4BADPA,EAEO,2BAKb,aAII,WAAoBrjD,EAAsC4U,EAC9C+E,GADQ,KAAA3Z,gBAAsC,KAAA4U,iBAC9C,KAAA+E,gBA8fhB,OA5fU,YAAArB,iBAAN,SAAuB3N,G,sHAInB,GAAe,gBAFT4Y,EAAI9pC,OAAOuiB,OAAO,GAAIy4D,EAAgB9pD,IAEtChoB,KACF,MAAO,CAAP,EAAOjI,KAAKw6E,mBAAmBvqD,IAYnC,GARAjwB,KAAKy6E,uBAAuB5xC,GAAG,GAEzB+yB,EAAoB/yB,EAAEsxC,aAAetxC,EAAEwxC,aAAexxC,EAAEoxC,UAAYpxC,EAAE2zB,WACxE3zB,EAAEzqC,OAASw9D,IACX/yB,EAAEzqC,OAASw9D,GAGT8e,EAAsB,GACxB7xC,EAAEuxC,WAAavxC,EAAEwxC,aAAe,EAChC,IAASn8E,EAAI,EAAGA,EAAI2qC,EAAEwxC,aAAcn8E,IAChCw8E,EAAUj6E,KAAK,KAGvB,GAAIooC,EAAEqxC,WAAarxC,EAAEsxC,aAAe,EAChC,IAASj8E,EAAI,EAAGA,EAAI2qC,EAAEsxC,aAAcj8E,IAChCw8E,EAAUj6E,KAAK,KAGvB,GAAIooC,EAAEp1B,QAAUo1B,EAAEoxC,UAAY,EAC1B,IAAS/7E,EAAI,EAAGA,EAAI2qC,EAAEoxC,UAAW/7E,IAC7Bw8E,EAAUj6E,KAAK,KAGvB,GAAIooC,EAAEyxC,SAAWzxC,EAAE2zB,WAAa,EAC5B,IAASt+D,EAAI,EAAGA,EAAI2qC,EAAE2zB,WAAYt+D,IAC9Bw8E,EAAUj6E,KAAK,KAGvB,KAAOi6E,EAAUt8E,OAASyqC,EAAEzqC,QACxBs8E,EAAUj6E,KAAK,KAInB,SAAMT,KAAK26E,aAAaD,I,OAAxB,SAGIE,EAAa,GAEbC,EAAmB,4BACnBhyC,EAAEmxC,YACFa,GAAoB,KAEpBhyC,EAAEuxC,YACFQ,GAAcC,GAGdC,EAAmB,2BACnBjyC,EAAEmxC,YACFc,GAAoB,MAEpBjyC,EAAEqxC,YACFU,GAAcE,GAGdC,EAAgB,WAChBlyC,EAAEmxC,YACFe,GAAiB,MAEjBlyC,EAAEp1B,SACFmnE,GAAcG,GAGZC,EAAiB,WACnBnyC,EAAEyxC,UACFM,GAAcI,GAGd5xE,EAAW,GACNlL,EAAI,E,sBAAGA,EAAI2qC,EAAEzqC,QAAM,YAExB,OADI68E,OAAa,EACTP,EAAUx8E,IACd,IAAK,IACD+8E,EAAgBJ,EAChB,MACJ,IAAK,IACDI,EAAgBH,EAChB,MACJ,IAAK,IACDG,EAAgBF,EAChB,MACJ,IAAK,IACDE,EAAgBD,EAChB,MACJ,IAAK,IACDC,EAAgBL,EAMA,SAAM56E,KAAKslB,cAAcovD,aAAa,EAAGuG,EAAc78E,OAAS,I,OAAlF88E,EAAkB,SACxB9xE,GAAY6xE,EAAczwE,OAAO0wE,G,wBAvBPh9E,I,aA0B9B,MAAO,CAAP,EAAOkL,WAGL,YAAAoxE,mBAAN,SAAyBvqD,G,yGAGH,OAFZ4Y,EAAI9pC,OAAOuiB,OAAO,GAAIy4D,EAAgB9pD,IAEtC2mD,UAAoB/tC,EAAE+tC,UAAY,KACpC/tC,EAAE+tC,SAAWmD,EAAenD,WAET,MAAnB/tC,EAAE0xC,eAAoD,IAA3B1xC,EAAE0xC,cAAcn8E,QAAgByqC,EAAE0xC,cAAcn8E,OAAS,KACpFyqC,EAAE0xC,cAAgB,KAEF,MAAhB1xC,EAAE+zB,aACF/zB,EAAE+zB,YAAa,GAEI,MAAnB/zB,EAAEi0B,gBACFj0B,EAAEi0B,eAAgB,GAGhBqe,EAAa,EAAAxE,gBAAgBv4E,OAAS,EACtCg9E,EAAW,IAAI/zE,MAAMwhC,EAAE+tC,UACpB14E,EAAI,E,wBAAGA,EAAI2qC,EAAE+tC,SACA,GAAM52E,KAAKslB,cAAcovD,aAAa,EAAGyG,IADjC,M,OACpBE,EAAY,SACdxyC,EAAE+zB,WACFwe,EAASl9E,GAAK8B,KAAK48D,WAAW,EAAA+Z,gBAAgB0E,IAE9CD,EAASl9E,GAAK,EAAAy4E,gBAAgB0E,G,wBALNn9E,I,oBAS5B2qC,EAAEi0B,cACF,GAAM98D,KAAKs7E,+BAA+BF,IAD1C,M,OACA,S,iBAEJ,MAAO,CAAP,EAAOA,EAASj4E,KAAK0lC,EAAE0xC,wBAGrB,YAAAz8C,WAAN,W,yGAC6B,MAArB99B,KAAKu7E,aAAL,MACgB,GAAMv7E,KAAKk6B,eAAez7B,IAAIkqE,I,OAAxC14C,EAAU,SAEZjwB,KAAKu7E,aADM,MAAXtrD,EACoB8pD,EAEAh7E,OAAOuiB,OAAO,GAAIy4D,EAAgB9pD,G,iBAGtC,SAAMjwB,KAAKw7E,0CAA0Cx7E,KAAKu7E,e,OAElF,OAFME,EAAkB,SACxBz7E,KAAKu7E,aAAeE,EAAgB,GAC7B,CAAC,EAAD,CAACz7E,KAAKu7E,aAAcE,EAAgB,aAGzC,YAAAD,0CAAN,SAAgDvrD,G,gGAChB,SAAMjwB,KAAK07E,qC,OAuDvC,OAtD6B,OADzB/sC,EAAwB,WAEpB1e,EAAQ7xB,OAASuwC,EAAsBitB,YACvC3rC,EAAQ7xB,OAASuwC,EAAsBitB,WAGvCjtB,EAAsBgtC,eACtB1rD,EAAQiqD,WAAY,GAGpBvrC,EAAsBitC,eACtB3rD,EAAQmqD,WAAY,GAGpBzrC,EAAsButB,aACtBjsC,EAAQxc,QAAS,GAGjBwc,EAAQgqD,UAAYtrC,EAAsBktC,cAC1C5rD,EAAQgqD,UAAYtrC,EAAsBktC,aAG1CltC,EAAsBytB,aACtBnsC,EAAQqqD,SAAU,GAGlBrqD,EAAQusC,WAAa7tB,EAAsBmtC,eAC3C7rD,EAAQusC,WAAa7tB,EAAsBmtC,cAI3C7rD,EAAQusC,WAAavsC,EAAQgqD,UAAYhqD,EAAQ7xB,SACjD6xB,EAAQusC,WAAavsC,EAAQ7xB,OAAS6xB,EAAQgqD,WAG9ChqD,EAAQ2mD,SAAWjoC,EAAsB+tB,iBACzCzsC,EAAQ2mD,SAAWjoC,EAAsB+tB,gBAGzC/tB,EAAsBiuB,aACtB3sC,EAAQ2sC,YAAa,GAGrBjuB,EAAsBmuB,gBACtB7sC,EAAQ6sC,eAAgB,GAIc,aAAtCnuB,EAAsB+sB,aACgB,eAAtC/sB,EAAsB+sB,cACtBzrC,EAAQhoB,KAAO0mC,EAAsB+sB,cAGzC/sB,EAAwB,IAAI,EAAAotC,+BAEzB,CAAC,EAAD,CAAC9rD,EAAS0e,YAGf,YAAA+sC,kCAAN,W,kGAC+B,SAAM17E,KAAKi/B,cAAcsB,OAAO,EAAAzU,WAAWm+B,oB,OAGtE,OAHMxpB,EAAqB,SACvBg7C,EAAkD,KAEtC,MAAZh7C,GAAwC,IAApBA,EAASriC,OACtB,CAAP,EAAOq9E,IAGXh7C,EAAS/8B,SAAQ,SAACs4E,GACTA,EAAc/vD,SAAiC,MAAtB+vD,EAAc17E,OAIrB,MAAnBm7E,IACAA,EAAkB,IAAI,EAAAM,gCAIY,MAAlCC,EAAc17E,KAAKo7D,aAAuD,aAAhC+f,EAAgB/f,cAC1D+f,EAAgB/f,YAAcsgB,EAAc17E,KAAKo7D,aAGjB,MAAhCsgB,EAAc17E,KAAKs7D,WAChBogB,EAAc17E,KAAKs7D,UAAY6f,EAAgB7f,YAClD6f,EAAgB7f,UAAYogB,EAAc17E,KAAKs7D,WAG/CogB,EAAc17E,KAAKw7D,WACnB2f,EAAgBE,cAAe,GAG/BK,EAAc17E,KAAK07D,WACnByf,EAAgBG,cAAe,GAG/BI,EAAc17E,KAAK47D,aACnBuf,EAAgBvf,YAAa,GAGI,MAAjC8f,EAAc17E,KAAKg8D,YAChB0f,EAAc17E,KAAKg8D,WAAamf,EAAgBI,cACnDJ,EAAgBI,YAAcG,EAAc17E,KAAKg8D,YAGjD0f,EAAc17E,KAAK87D,aACnBqf,EAAgBrf,YAAa,GAGI,MAAjC4f,EAAc17E,KAAKk8D,YAChBwf,EAAc17E,KAAKk8D,WAAaif,EAAgBK,eACnDL,EAAgBK,aAAeE,EAAc17E,KAAKk8D,YAGb,MAArCwf,EAAc17E,KAAKo8D,gBAChBsf,EAAc17E,KAAKo8D,eAAiB+e,EAAgB/e,iBACvD+e,EAAgB/e,eAAiBsf,EAAc17E,KAAKo8D,gBAGpDsf,EAAc17E,KAAKs8D,aACnB6e,EAAgB7e,YAAa,GAG7Bof,EAAc17E,KAAKw8D,gBACnB2e,EAAgB3e,eAAgB,OAIjC,CAAP,EAAO2e,YAGL,YAAAQ,YAAN,SAAkBhsD,G,0FACd,SAAMjwB,KAAKk6B,eAAeqT,KAAKo7B,EAAc14C,I,cAA7C,SACAjwB,KAAKu7E,aAAetrD,E,YAGlB,YAAAisD,WAAN,W,kGACmB,SAAMl8E,KAAKslB,cAAcyqB,U,OACxC,OADe,SAKV/vC,KAAK6/C,QAAN,MACkB,GAAM7/C,KAAKk6B,eAAez7B,IAAgCkqE,IAJrE,CAAP,EAAO,IAAIthE,O,OAKI,OADT80E,EAAY,SAClB,EAAAn8E,KAAe,GAAMA,KAAKo8E,eAAeD,I,OAAzC,EAAKt8B,QAAU,S,iBAGnB,MAAO,CAAP,EAAO7/C,KAAK6/C,SAAW,IAAIx4C,eAGzB,YAAAg1E,WAAN,SAAiBjzE,G,kGAEE,SAAMpJ,KAAKslB,cAAcyqB,U,OACxC,OADe,SAKQ,GAAM/vC,KAAKk8E,cAH9B,I,OAMJ,OAHMI,EAAiB,SAGnBt8E,KAAKu8E,gBAAgBnzE,EAAUkzE,GAC/B,KAGJA,EAAeE,QAAQ,IAAI,EAAAC,yBAAyBrzE,EAAU2kB,KAAKohC,QAG/DmtB,EAAel+E,OAvUG,KAwUlBk+E,EAAettC,MAGA,GAAMhvC,KAAK08E,eAAeJ,K,OACtC,OADDK,EAAa,SACZ,GAAM38E,KAAKk6B,eAAeqT,KAAKo7B,EAAcgU,I,OAApD,MAAO,CAAP,EAAO,kBAGL,YAAAzlE,MAAN,W,0FAEW,OADPlX,KAAK6/C,QAAU,GACR,GAAM7/C,KAAKk6B,eAAe6S,OAAO47B,I,OAAxC,MAAO,CAAP,EAAO,kBAGX,YAAAh+B,iBAAA,SAAiBvhC,EAAkBwzE,GAC/B,QAD+B,IAAAA,MAAA,MACf,MAAZxzE,GAAwC,IAApBA,EAAShL,OAC7B,OAAO,KAEX,IAAIy+E,EAAmB,CAAC,YAAa,MAAO,UAC1B,MAAdD,GAAsBA,EAAWx+E,OAAS,IAC1Cy+E,EAAmBA,EAAiBl8E,OAAOi8E,IAG/C,IAAME,EAAkBz1E,MAAMC,KAAK,IAAIuhE,IAAIgU,IAE3C,OADeE,EAAO3zE,EAAU0zE,IAIpC,YAAAE,iBAAA,SAAiB/sD,EAAc0e,GAC3B1e,EAAQoqD,aAAe,EACvBpqD,EAAQkqD,aAAe,GAElBlqD,EAAQ7xB,QAAU6xB,EAAQ7xB,OAAS,EACpC6xB,EAAQ7xB,OAAS,EACV6xB,EAAQ7xB,OAAS,MACxB6xB,EAAQ7xB,OAAS,KAGjB6xB,EAAQ7xB,OAASuwC,EAAsBitB,YACvC3rC,EAAQ7xB,OAASuwC,EAAsBitB,WAGtC3rC,EAAQgqD,UAEFhqD,EAAQgqD,UAAYhqD,EAAQ7xB,OACnC6xB,EAAQgqD,UAAYhqD,EAAQ7xB,OACrB6xB,EAAQgqD,UAAY,IAC3BhqD,EAAQgqD,UAAY,GAJpBhqD,EAAQgqD,UAAY,EAOpBhqD,EAAQgqD,UAAYtrC,EAAsBktC,cAC1C5rD,EAAQgqD,UAAYtrC,EAAsBktC,aAGzC5rD,EAAQusC,WAEFvsC,EAAQusC,WAAavsC,EAAQ7xB,OACpC6xB,EAAQusC,WAAavsC,EAAQ7xB,OACtB6xB,EAAQusC,WAAa,IAC5BvsC,EAAQusC,WAAa,GAJrBvsC,EAAQusC,WAAa,EAOrBvsC,EAAQusC,WAAa7tB,EAAsBmtC,eAC3C7rD,EAAQusC,WAAa7tB,EAAsBmtC,cAG3C7rD,EAAQusC,WAAavsC,EAAQgqD,UAAYhqD,EAAQ7xB,SACjD6xB,EAAQusC,WAAavsC,EAAQ7xB,OAAS6xB,EAAQgqD,WAG1B,MAApBhqD,EAAQ2mD,UAAoB3mD,EAAQ7xB,OAAS,EAC7C6xB,EAAQ2mD,SAAW,EACZ3mD,EAAQ2mD,SAAW,KAC1B3mD,EAAQ2mD,SAAW,IAGnB3mD,EAAQ2mD,SAAWjoC,EAAsB+tB,iBACzCzsC,EAAQ2mD,SAAWjoC,EAAsB+tB,gBAGhB,MAAzBzsC,EAAQsqD,eAAyBtqD,EAAQsqD,cAAcn8E,OAAS,IAChE6xB,EAAQsqD,cAAgBtqD,EAAQsqD,cAAc,IAGlDv6E,KAAKy6E,uBAAuBxqD,GAAS,IAGjC,YAAA2sC,WAAR,SAAmB13D,GACf,OAAOA,EAAIsF,OAAO,GAAGC,cAAgBvF,EAAIyF,MAAM,IAGrC,YAAA2wE,+BAAd,SAA6CF,G,kGACzC,OAAgB,MAAZA,GAAoBA,EAASh9E,QAAU,EACvC,IAEU,GAAM4B,KAAKslB,cAAcovD,aAAa,EAAG0G,EAASh9E,OAAS,I,OAC7D,OADN27C,EAAQ,SACF,GAAM/5C,KAAKslB,cAAcovD,aAAa,EAAG,I,cAA/Cr/C,EAAM,SACZ+lD,EAASrhC,GAASqhC,EAASrhC,GAAS1kB,E,YAG1B,YAAAqnD,eAAd,SAA6B78B,G,uGACzB,OAAe,MAAXA,GAAsC,IAAnBA,EAAQzhD,OACpB,CAAP,EAAO+W,QAAQC,QAAQ,MAGrBL,EAAW8qC,EAAQl5C,KAAI,SAAOs2E,GAAI,qC,wDAClB,SAAMj9E,KAAKslB,cAAckgB,QAAQy3C,EAAK7zE,W,OACxD,OADM+yE,EAAY,SACX,CAAP,EAAO,IAAI,EAAAM,yBAAyBN,EAAUxnE,gBAAiBsoE,EAAKhoD,iBAGjE,GAAM9f,QAAQK,IAAIT,K,OAAzB,MAAO,CAAP,EAAO,kBAGG,YAAAqnE,eAAd,SAA6Bv8B,G,uGACzB,OAAe,MAAXA,GAAsC,IAAnBA,EAAQzhD,OACpB,CAAP,EAAO+W,QAAQC,QAAQ,MAGrBL,EAAW8qC,EAAQl5C,KAAI,SAAOs2E,GAAI,qC,wDAClB,SAAMj9E,KAAKslB,cAAc0E,cAAc,IAAI,EAAAxV,aAAayoE,EAAK7zE,Y,OAC/E,OADM8zE,EAAY,SACX,CAAP,EAAO,IAAI,EAAAT,yBAAyBS,EAAWD,EAAKhoD,iBAGjD,GAAM9f,QAAQK,IAAIT,K,OAAzB,MAAO,CAAP,EAAO,kBAGH,YAAAwnE,gBAAR,SAAwBnzE,EAAkBy2C,GACtC,OAAe,MAAXA,GAAsC,IAAnBA,EAAQzhD,QAIxByhD,EAAQA,EAAQzhD,OAAS,GAAGgL,WAAaA,GAItC,YAAAuxE,aAAd,SAA2BwC,G,oGACdj/E,EAAIi/E,EAAM/+E,OAAS,E,wBAAGF,EAAI,EACrB,GAAM8B,KAAKslB,cAAcovD,aAAa,EAAGx2E,IADnB,M,OAC1BI,EAAI,SACV,cAAC6+E,EAAMj/E,GAAN,KAAUi/E,EAAM7+E,GAAN,K,wBAFuBJ,I,+BAMlC,YAAAu8E,uBAAR,SAA+BxqD,EAAcmtD,GACzC,IAAIC,EAAmB,EACnBC,EAAmB,EACnBC,EAAwBttD,EAAQgqD,UAChCuD,EAAyBvtD,EAAQusC,WAEjCvsC,EAAQiqD,WAAajqD,EAAQkqD,cAAgB,EAC7CkD,EAAmB,EACXptD,EAAQiqD,YAChBmD,EAAmB,GAGnBptD,EAAQmqD,WAAanqD,EAAQoqD,cAAgB,EAC7CiD,EAAmB,EACXrtD,EAAQmqD,YAChBkD,EAAmB,GAGnBrtD,EAAQxc,QAAUwc,EAAQgqD,WAAa,EACvCsD,EAAgB,EACRttD,EAAQxc,SAChB8pE,EAAgB,GAGhBttD,EAAQqqD,SAAWrqD,EAAQusC,YAAc,EACzCghB,EAAiB,EACTvtD,EAAQqqD,UAChBkD,EAAiB,KAIhBvtD,EAAQ7xB,QAAU6xB,EAAQ7xB,OAAS,KACpC6xB,EAAQ7xB,OAAS,IAGrB,IAAMw9D,EAAoByhB,EAAmBC,EAAmBC,EAAgBC,EAE5EvtD,EAAQ7xB,OAASw9D,IACjB3rC,EAAQ7xB,OAASw9D,GAIjBwhB,IACAntD,EAAQkqD,aAAekD,EACvBptD,EAAQoqD,aAAeiD,EACvBrtD,EAAQgqD,UAAYsD,EACpBttD,EAAQusC,WAAaghB,IAGjC,EAngBA,GAAa,EAAAnsE,6B,i7CCvCb,IAAMs3D,EACc,YADdA,EAEiB,oBAGvB,aAGI,WAAoBz+C,EAAkCgQ,GAAlC,KAAAhQ,cAAkC,KAAAgQ,iBAiD1D,OA9CI,YAAA8uC,WAAA,WACIhpE,KAAKy9E,cAAgB,MAGzB,YAAAxS,qBAAA,WACI,OAAOjrE,KAAK09E,eAAe/U,IAGzB,YAAAgV,qBAAN,SAA2BnkC,G,0FACvB,SAAMx5C,KAAK49E,eAAejV,EAAwBnvB,I,cAAlD,S,YAGE,YAAAtiC,MAAN,SAAYuN,G,0FACR,SAAMzkB,KAAKk6B,eAAe6S,OAAO47B,EAAsBlkD,I,cAAvD,SACAzkB,KAAKgpE,a,YAKK,YAAA6U,YAAd,W,uGAC8B,MAAtB79E,KAAKy9E,cAAL,MACe,GAAMz9E,KAAKkqB,YAAYmP,a,OAAhC5U,EAAS,SACfzkB,KAAKy9E,cAAgBz9E,KAAKk6B,eAAez7B,IAAIkqE,EAAsBlkD,G,iBAEvE,MAAO,CAAP,EAAOzkB,KAAKy9E,uBAGF,YAAAC,eAAd,SAA6B9+E,G,gGACR,SAAMoB,KAAK69E,e,OAC5B,OAAgB,OADVC,EAAW,WACOA,EAASl/E,GACtB,CAAP,EAAOk/E,EAASl/E,IAEb,CAAP,EAAO,cAGG,YAAAg/E,eAAd,SAA6Bh/E,EAAaD,G,kGACvB,SAAMqB,KAAKkqB,YAAYmP,a,OACvB,OADT5U,EAAS,SACA,GAAMzkB,KAAK69E,e,OAM1B,OANIC,EAAW,YAEXA,EAAW,IAGfA,EAASl/E,GAAOD,EAChB,GAAMqB,KAAKk6B,eAAeqT,KAAKo7B,EAAsBlkD,EAAQq5D,I,cAA7D,SACA99E,KAAKy9E,cAAgBK,E,YAE7B,EApDA,GAAa,EAAApxC,mB,8ECPb,8BACY,KAAAhtB,MAAa,GAuBzB,OArBI,YAAAjhB,IAAA,SAAOG,GACH,OAAIoB,KAAK0f,MAAMzgB,eAAeL,GACnBuW,QAAQC,QAAQpV,KAAK0f,MAAM9gB,IAE/BuW,QAAQC,QAAQ,OAG3B,YAAAm4B,KAAA,SAAK3uC,EAAawmB,GAEd,OADAplB,KAAK0f,MAAM9gB,GAAOwmB,EACXjQ,QAAQC,WAGnB,YAAA23B,OAAA,SAAOnuC,GAEH,cADOoB,KAAK0f,MAAM9gB,GACXuW,QAAQC,WAGnB,YAAA65C,MAAA,WAEI,OADAjvD,KAAK0f,MAAQ,GACNvK,QAAQC,WAEvB,EAxBA,GAAa,EAAAlL,gB,g7CCUb,aACA,SACA,SACA,UACA,SAaMy+D,EACc,YAGpB,aAGI,WAAoBz+C,EAAkChR,EAC1Co0C,EAA0CrzB,EAC1CQ,EAAsCnV,EACtC0U,EAA8CE,EAC9CvkB,EAA4CspB,EAC5CsgC,GALQ,KAAAr1C,cAAkC,KAAAhR,aAC1C,KAAAo0C,kBAA0C,KAAArzB,gBAC1C,KAAAQ,gBAAsC,KAAAnV,gBACtC,KAAA0U,oBAA8C,KAAAE,iBAC9C,KAAAvkB,mBAA4C,KAAAspB,gBAC5C,KAAAsgC,iBAPZ,KAAAwe,gBAA0B,EAyR9B,OA/QU,YAAAC,YAAN,W,kGACmB,SAAMh+E,KAAKkqB,YAAYmP,a,OACtC,OAAc,OADR5U,EAAS,UAEJ,CAAP,EAAO,MAGM,GAAMzkB,KAAKk6B,eAAez7B,IAASkqE,EAAsBlkD,I,OAC1E,OADMw5D,EAAW,UAEN,CAAP,EAAO,IAAIlwD,KAAKkwD,IAGb,CAAP,EAAO,cAGL,YAAAnvB,YAAN,SAAkB75B,G,gGACC,SAAMj1B,KAAKkqB,YAAYmP,a,OACtC,OAAc,OADR5U,EAAS,UAEX,IAGJ,GAAMzkB,KAAKk6B,eAAeqT,KAAKo7B,EAAsBlkD,EAAQwQ,EAAKipD,W,cAAlE,S,YAGE,YAAAlzD,SAAN,SAAemzD,EAAoBC,G,YAAA,IAAAA,OAAA,G,mGAEP,OADxBp+E,KAAKq+E,cACmB,GAAMr+E,KAAKkqB,YAAY4lB,mB,OAC/C,OADwB,UAKlBqf,EAAM,IAAIphC,KACQ,GAAM/tB,KAAKs+E,aAAaH,KAJrC,CAAP,EAAOn+E,KAAKu+E,eAAc,I,OAQ9B,OAJMC,EAAkB,SAClBC,EAAYD,EAAgB,GAClBA,EAAgB,GAGrB,CAAP,EAAOx+E,KAAKu+E,eAAc,IAGzBE,EAAD,MACA,GAAMz+E,KAAK8uD,YAAYK,I,OACvB,OADA,SACO,CAAP,EAAOnvD,KAAKu+E,eAAc,I,OAGf,SAAMv+E,KAAKkqB,YAAYmP,a,OAAhC5U,EAAS,S,iBAEM,O,wBAAA,GAAMzkB,KAAKkZ,WAAWkrD,W,OAEvC,OAFM3iE,EAAW,SAEjB,GAAMzB,KAAK0+E,YAAYj9E,EAASgwD,U,OAChC,OADA,SACA,GAAMzxD,KAAK2+E,YAAYl6D,EAAQhjB,EAASiF,U,OACxC,OADA,SACA,GAAM1G,KAAK4+E,gBAAgBn9E,EAASgF,c,QACpC,OADA,SACA,GAAMzG,KAAK6+E,YAAYp6D,EAAQhjB,EAASwH,U,QACxC,OADA,SACA,GAAMjJ,KAAK8+E,aAAar6D,EAAQhjB,EAASi4C,U,QACzC,OADA,SACA,GAAM15C,KAAK++E,aAAat9E,EAASg/B,W,QAEjC,OAFA,SAEA,GAAMzgC,KAAK8uD,YAAYK,I,QACvB,OADA,SACO,CAAP,EAAOnvD,KAAKu+E,eAAc,I,QAE1B,G,WAAIH,EACA,MAAM,EAEN,MAAO,CAAP,EAAOp+E,KAAKu+E,eAAc,I,0BAKhC,YAAAS,iBAAN,SAAuBC,EAAsCC,G,oGAErD,OADJl/E,KAAKq+E,cACD,GAAMr+E,KAAKkqB,YAAY4lB,mB,WAAvB,qB,iBAEwB,O,sBAAA,GAAM9vC,KAAKi6B,cAAcx7B,IAAIwgF,EAAar/E,K,cAAxDu/E,EAAc,UACdD,GAAyB,MAAfC,GACXD,GAAyB,MAAfC,GAAuBA,EAAY/gE,aAAe6gE,EAAa7gE,aACrD,GAAMpe,KAAKkZ,WAAW4oD,UAAUmd,EAAar/E,KAFlE,M,cAGoB,OADdw/E,EAAe,UACjB,MACe,GAAMp/E,KAAKkqB,YAAYmP,a,OACtC,OADM5U,EAAS,SACf,GAAMzkB,KAAKi6B,cAAcoyC,OAAO,IAAI,EAAAoM,WAAW2G,EAAc36D,K,OAE7D,OAFA,SACAzkB,KAAK2V,iBAAiBkB,KAAK,uBAAwB,CAAE0H,SAAU0gE,EAAar/E,KACrE,CAAP,EAAOI,KAAKu+E,eAAc,I,uDAK1C,MAAO,CAAP,EAAOv+E,KAAKu+E,eAAc,YAGxB,YAAAc,iBAAN,SAAuBJ,G,0FAEf,OADJj/E,KAAKq+E,cACD,GAAMr+E,KAAKkqB,YAAY4lB,mB,cAAvB,SACA,GAAM9vC,KAAKi6B,cAAc2B,OAAOqjD,EAAar/E,KAD7C,M,OAIA,OAHA,SACAI,KAAK2V,iBAAiBkB,KAAK,sBAAuB,CAAE0H,SAAU0gE,EAAar/E,KAC3EI,KAAKu+E,eAAc,GACZ,CAAP,GAAO,G,OAEX,MAAO,CAAP,EAAOv+E,KAAKu+E,eAAc,YAGxB,YAAAe,iBAAN,SAAuBL,EAAsCC,G,8GAErD,OADJl/E,KAAKq+E,cACD,GAAMr+E,KAAKkqB,YAAY4lB,mB,WAAvB,sB,iBAGwB,O,wBADhByvC,GAAe,EACC,GAAMv/E,KAAKy6B,cAAch8B,IAAIwgF,EAAar/E,K,cAC3C,OADb4/E,EAAc,WACOA,EAAYphE,cAAgB6gE,EAAa7gE,eAChEmhE,GAAe,GAGfE,GAAmB,EACnBF,IACIL,GACAK,EAA8B,MAAfC,EACfC,GAAmB,GAEe,MAA9BR,EAAalgE,eAAwD,MAA/BkgE,EAAa3gE,eACnDihE,EAA8B,MAAfC,GAEfD,GAAe,EACfE,GAAmB,KAK1BF,GAAgBE,GAAmD,MAA/BR,EAAa3gE,gBACpB,MAA9B2gE,EAAalgE,eAAyBkgE,EAAalgE,cAAc3gB,OAAS,EACtD,GAAM4B,KAAKg6B,kBAAkBuG,UAFjD,M,OAGA,GAAmB,OADb95B,EAAc,UAEhB,IAASvI,EAAI,EAAGA,EAAIuI,EAAYrI,OAAQF,IACpC,GAAI+gF,EAAalgE,cAActa,QAAQgC,EAAYvI,GAAG0B,KAAO,EAAG,CAC5D2/E,GAAe,EACf,M,wBAMZA,EACqB,GAAMv/E,KAAKkZ,WAAWipD,UAAU8c,EAAar/E,KADlE,M,cAEoB,OADd8/E,EAAe,UACjB,MACe,GAAM1/E,KAAKkqB,YAAYmP,a,OACtC,OADM5U,EAAS,SACf,GAAMzkB,KAAKy6B,cAAc4xC,OAAO,IAAI,EAAAnnD,WAAWw6D,EAAcj7D,K,OAE7D,OAFA,SACAzkB,KAAK2V,iBAAiBkB,KAAK,uBAAwB,CAAEyW,SAAU2xD,EAAar/E,KACrE,CAAP,EAAOI,KAAKu+E,eAAc,I,mCAIzB,O,aAAyB,MAAjB,EAAEzmD,YAAsBonD,EACrC,GAAMl/E,KAAKy6B,cAAcmB,OAAOqjD,EAAar/E,KAD7C,O,QAGA,OAFA,SACAI,KAAK2V,iBAAiBkB,KAAK,sBAAuB,CAAEyW,SAAU2xD,EAAar/E,KACpE,CAAP,EAAOI,KAAKu+E,eAAc,I,6BAItC,MAAO,CAAP,EAAOv+E,KAAKu+E,eAAc,YAGxB,YAAAoB,iBAAN,SAAuBV,G,0FAEf,OADJj/E,KAAKq+E,cACD,GAAMr+E,KAAKkqB,YAAY4lB,mB,cAAvB,SACA,GAAM9vC,KAAKy6B,cAAcmB,OAAOqjD,EAAar/E,KAD7C,M,OAGA,OAFA,SACAI,KAAK2V,iBAAiBkB,KAAK,sBAAuB,CAAEyW,SAAU2xD,EAAar/E,KACpE,CAAP,EAAOI,KAAKu+E,eAAc,I,OAE9B,MAAO,CAAP,EAAOv+E,KAAKu+E,eAAc,YAKtB,YAAAF,YAAR,WACIr+E,KAAK+9E,gBAAiB,EACtB/9E,KAAK2V,iBAAiBkB,KAAK,gBAGvB,YAAA0nE,cAAR,SAAsB/qC,GAGlB,OAFAxzC,KAAK+9E,gBAAiB,EACtB/9E,KAAK2V,iBAAiBkB,KAAK,gBAAiB,CAAE28B,aAAcA,IACrDA,GAGG,YAAA8qC,aAAd,SAA2BH,G,kGACvB,OAAIA,EACO,CAAC,EAAD,EAAC,GAAM,IAGD,GAAMn+E,KAAKg+E,e,OAC5B,GAAgB,OADVC,EAAW,WAC8B,IAAvBA,EAASnuD,UAC7B,MAAO,CAAC,EAAD,EAAC,GAAM,I,iBAIG,O,sBAAA,GAAM9vB,KAAKkZ,WAAWsoD,0B,OACvC,OADM//D,EAAW,SACb,IAAIssB,KAAKtsB,IAAaw8E,EACf,CAAC,EAAD,EAAC,GAAO,IAEZ,CAAC,EAAD,EAAC,GAAM,I,OAEd,O,SAAO,CAAC,EAAD,EAAC,GAAO,I,yBAIT,YAAAS,YAAd,SAA0Bj9E,G,kGACR,SAAMzB,KAAKkqB,YAAY01D,oB,cACxB,OADPC,EAAQ,WACOA,IAAUp+E,EAASsrD,cAApC,MAC2B,MAAvB/sD,KAAKu/D,eAAL,MACA,GAAMv/D,KAAKu/D,gBAAe,I,OAA1B,S,iBAGJ,MAAM,IAAIj1D,MAAM,qB,OAGpB,SAAMtK,KAAKslB,cAAcmU,UAAUh4B,EAAS7C,M,OAC5C,OADA,SACA,GAAMoB,KAAKslB,cAAcyU,iBAAiBt4B,EAASi4B,a,OACnD,OADA,SACA,GAAM15B,KAAKslB,cAAc4rD,WAAWzvE,EAASipB,gB,OAC7C,OADA,SACA,GAAM1qB,KAAKkqB,YAAY41D,iBAAiBr+E,EAASsrD,gB,OAM1C,OANP,SAEMriC,EAAqD,GAC3DjpB,EAASipB,cAAchnB,SAAQ,SAACmlC,GAC5Bne,EAAcme,EAAEjpC,IAAM,IAAI,EAAAmgF,iBAAiBl3C,MAExC,GAAM7oC,KAAKkqB,YAAY81D,qBAAqBt1D,I,OAAnD,MAAO,CAAP,EAAO,kBAGG,YAAAi0D,YAAd,SAA0Bl6D,EAAgBhjB,G,gGAK/B,OAJDiF,EAAyC,GAC/CjF,EAASiC,SAAQ,SAACkD,GACdF,EAAQE,EAAEhH,IAAM,IAAI,EAAA64E,WAAW7xE,EAAG6d,MAE/B,GAAMzkB,KAAKi6B,cAAch1B,QAAQyB,I,OAAxC,MAAO,CAAP,EAAO,kBAGG,YAAAk4E,gBAAd,SAA8Bn9E,G,gGAKnB,OAJDgF,EAAiD,GACvDhF,EAASiC,SAAQ,SAACqK,GACdtH,EAAYsH,EAAEnO,IAAM,IAAI,EAAAulB,eAAepX,MAEpC,GAAM/N,KAAKg6B,kBAAkB/0B,QAAQwB,I,OAA5C,MAAO,CAAP,EAAO,kBAGG,YAAAo4E,YAAd,SAA0Bp6D,EAAgBhjB,G,gGAK/B,OAJDwH,EAAyC,GAC/CxH,EAASiC,SAAQ,SAACqK,GACd9E,EAAQ8E,EAAEnO,IAAM,IAAI,EAAAslB,WAAWnX,EAAG0W,MAE/B,GAAMzkB,KAAKy6B,cAAcx1B,QAAQgE,I,OAAxC,MAAO,CAAP,EAAO,kBAGG,YAAA61E,aAAd,SAA2Br6D,EAAgBhjB,G,yEAcvC,OAbIypE,EAAwB,GACZ,MAAZzpE,GAAkD,MAA9BA,EAAS+3C,oBAC7B0xB,EAAYA,EAAUvqE,OAAOc,EAAS+3C,oBAG1B,MAAZ/3C,GAAwD,MAApCA,EAASg4C,yBAC7Bh4C,EAASg4C,wBAAwB/1C,SAAQ,SAACgI,GAClCA,EAAOguC,QAAQt7C,OAAS,GACxB8sE,EAAUzqE,KAAKiL,EAAOguC,YAK3B,CAAP,EAAO15C,KAAKstD,gBAAgBqwB,qBAAqBzS,WAGvC,YAAA6T,aAAd,SAA2Bt9E,G,gGAOhB,OANDg/B,EAA0C,GAChC,MAAZh/B,GACAA,EAASiC,SAAQ,SAACwR,GACdurB,EAASvrB,EAAEtV,IAAM,IAAI,EAAAwvC,WAAWl6B,MAGjC,GAAMlV,KAAKi/B,cAAch6B,QAAQw7B,I,OAAxC,MAAO,CAAP,EAAO,kBAEf,EA1RA,GAAa,EAAAxvB,e,g7CCjCb,YAKA,QAEM03D,EACW,cADXA,EAEY,eAFZA,EAGoB,kBAG1B,aAKI,WAAoBzuC,GAAA,KAAAA,iBA0MxB,OAvMI,YAAAhB,UAAA,SAAUN,EAAqBO,GAC3B,OAAOhkB,QAAQK,IAAI,CACfxV,KAAKigF,SAASrnD,GACd54B,KAAKkgF,gBAAgB/mD,MAIvB,YAAA8mD,SAAN,SAAetiE,G,0FAIP,OAHJ3d,KAAK2d,MAAQA,EACb3d,KAAKqmE,aAAe,KAEhB,GAAMrmE,KAAKmgF,oB,OAAf,OAAI,SAEA,IAGG,CAAP,EAAOngF,KAAKk6B,eAAeqT,KAAKo7B,EAAkBhrD,YAGhD,YAAAkoD,SAAN,W,gGACI,OAAkB,MAAd7lE,KAAK2d,MACE,CAAP,EAAO3d,KAAK2d,QAGhB,EAAA3d,KAAa,GAAMA,KAAKk6B,eAAez7B,IAAYkqE,K,OACnD,OADA,EAAKhrD,MAAQ,SACN,CAAP,EAAO3d,KAAK2d,eAGV,YAAAuiE,gBAAN,SAAsB/mD,G,0FAGd,OAFJn5B,KAAKm5B,aAAeA,EAEhB,GAAMn5B,KAAKmgF,oB,OAAf,OAAI,SAEA,IAGG,CAAP,EAAOngF,KAAKk6B,eAAeqT,KAAKo7B,EAAmBxvC,YAGjD,YAAAitC,gBAAN,W,gGACI,OAAyB,MAArBpmE,KAAKm5B,aACE,CAAP,EAAOn5B,KAAKm5B,eAGhB,EAAAn5B,KAAoB,GAAMA,KAAKk6B,eAAez7B,IAAYkqE,K,OAC1D,OADA,EAAKxvC,aAAe,SACb,CAAP,EAAOn5B,KAAKm5B,sBAGV,YAAAinD,aAAN,W,sGACkB,SAAMpgF,KAAK6lE,Y,OACJ,OADfloD,EAAQ,SACO,GAAM3d,KAAKomE,mB,OAChB,OADVjtC,EAAe,SACL,GAAMn5B,KAAKk6B,eAAez7B,IAAI,EAAA8S,iBAAiBO,kB,OAChD,OADT/Q,EAAU,SACD,GAAMf,KAAKk6B,eAAez7B,IAAI,EAAA8S,iBAAiBQ,wB,cAAxDoZ,EAAS,SACC,MAAXpqB,GAA+B,IAAZA,GAA6B,WAAXoqB,EAAtC,MAEA,GAAMnrB,KAAK+uD,c,OAGX,OAHA,SACA/uD,KAAK2d,MAAQA,EACb3d,KAAKm5B,aAAeA,EACpB,I,OAGJ,SAAMn5B,KAAKigF,SAAStiE,I,OACpB,OADA,SACA,GAAM3d,KAAKkgF,gBAAgB/mD,I,cAA3B,S,YAGJ,YAAAF,kBAAA,SAAkBtb,EAAekC,GAC7B,OAAO7f,KAAKk6B,eAAeqT,KAAKo7B,EAA4B9oD,EAAOlC,IAGvE,YAAAqa,kBAAA,SAAkBnY,GACd,OAAO7f,KAAKk6B,eAAez7B,IAAYkqE,EAA4B9oD,IAGvE,YAAAmhD,oBAAA,SAAoBnhD,GAChB,OAAO7f,KAAKk6B,eAAe6S,OAAO47B,EAA4B9oD,IAGlE,YAAAkvC,WAAA,WAKI,OAJA/uD,KAAK2d,MAAQ,KACb3d,KAAKqmE,aAAe,KACpBrmE,KAAKm5B,aAAe,KAEbhkB,QAAQK,IAAI,CACfxV,KAAKk6B,eAAe6S,OAAO47B,GAC3B3oE,KAAKk6B,eAAe6S,OAAO47B,MAOnC,YAAArC,YAAA,WACI,GAAItmE,KAAKqmE,aACL,OAAOrmE,KAAKqmE,aAGhB,GAAkB,MAAdrmE,KAAK2d,MACL,MAAM,IAAIrT,MAAM,oBAGpB,IAAMxE,EAAQ9F,KAAK2d,MAAMtY,MAAM,KAC/B,GAAqB,IAAjBS,EAAM1H,OACN,MAAM,IAAIkM,MAAM,yBAGpB,IAAM+1E,EAAU,EAAAv7E,MAAM4I,iBAAiB5H,EAAM,IAC7C,GAAe,MAAXu6E,EACA,MAAM,IAAI/1E,MAAM,2BAIpB,OADAtK,KAAKqmE,aAAeznB,KAAKr7C,MAAM88E,GACxBrgF,KAAKqmE,cAGhB,YAAAia,uBAAA,WACI,IAAMD,EAAUrgF,KAAKsmE,cACrB,QAA2B,IAAhB+Z,EAAQ1sE,IACf,OAAO,KAGX,IAAMub,EAAI,IAAInB,KAAK,GAEnB,OADAmB,EAAEqxD,cAAcF,EAAQ1sE,KACjBub,GAGX,YAAAsxD,sBAAA,SAAsBC,QAAA,IAAAA,MAAA,GAClB,IAAMvxD,EAAIlvB,KAAKsgF,yBACf,GAAS,MAALpxD,EACA,OAAO,EAGX,IAAMwxD,EAAcxxD,EAAEyxD,YAAa,IAAI5yD,MAAO4yD,UAA6B,IAAhBF,GAC3D,OAAOzyE,KAAK4wB,MAAM8hD,EAAc,MAGpC,YAAA5a,kBAAA,SAAkB8a,GAEd,YAFc,IAAAA,MAAA,GACK5gF,KAAKwgF,wBACH,GAAKI,GAG9B,YAAAvnD,UAAA,WACI,IAAMgnD,EAAUrgF,KAAKsmE,cACrB,QAA2B,IAAhB+Z,EAAQliC,IACf,MAAM,IAAI7zC,MAAM,oBAGpB,OAAO+1E,EAAQliC,KAGnB,YAAA7kB,SAAA,WACI,IAAM+mD,EAAUrgF,KAAKsmE,cACrB,QAA6B,IAAlB+Z,EAAQxgE,MACf,MAAM,IAAIvV,MAAM,kBAGpB,OAAO+1E,EAAQxgE,OAGnB,YAAAuyB,iBAAA,WACI,IAAMiuC,EAAUrgF,KAAKsmE,cACrB,QAAsC,IAA3B+Z,EAAQQ,eACf,MAAM,IAAIv2E,MAAM,+BAGpB,OAAO+1E,EAAQQ,gBAGnB,YAAAvvC,QAAA,WACI,IAAM+uC,EAAUrgF,KAAKsmE,cACrB,YAA4B,IAAjB+Z,EAAQt5E,KACR,KAGJs5E,EAAQt5E,MAGnB,YAAAywC,WAAA,WACI,IAAM6oC,EAAUrgF,KAAKsmE,cACrB,YAA+B,IAApB+Z,EAAQvqD,SAIZuqD,EAAQvqD,SAGnB,YAAAgrD,UAAA,WACI,IAAMT,EAAUrgF,KAAKsmE,cACrB,QAA2B,IAAhB+Z,EAAQU,IACf,MAAM,IAAIz2E,MAAM,mBAGpB,OAAO+1E,EAAQU,KAGL,YAAAZ,iBAAd,W,kGACoB,SAAMngF,KAAKk6B,eAAez7B,IAAY,EAAA8S,iBAAiBO,kB,OACxD,OADT/Q,EAAU,SACD,GAAMf,KAAKk6B,eAAez7B,IAAY,EAAA8S,iBAAiBQ,wB,OACtE,OADMoZ,EAAS,SACR,CAAP,EAAkB,MAAXpqB,GAA8B,WAAXoqB,WAElC,EA/MA,GAAa,EAAAlY,gB,g7CCbb,YAMA,QAEM+tE,EAAW,mCACXC,EAAa,6BAEnB,aACI,WAAoB/mD,EAAwChY,GAAxC,KAAAgY,iBAAwC,KAAAhY,wBAqJhE,OAnJU,YAAAic,QAAN,SAAcv/B,G,sIACV,GAAW,MAAPA,EACA,MAAO,CAAP,EAAO,MAQX,GANIsiF,EAAS,GACT/K,EAAoC,OACpCgL,EAAS,EACTC,EAASxiF,EACPyiF,EAAwD,IAA5CziF,EAAI8L,cAAcjG,QAAQ,cACtC68E,GAAeD,GAAuD,IAA1CziF,EAAI8L,cAAcjG,QAAQ,YACxD48E,EAAW,CAEX,IADMngE,EAAS,EAAApc,MAAMiK,eAAenQ,IACzBq4B,IAAI,WAAqC,MAAxB/V,EAAOziB,IAAI,UACnC,KACU8iF,EAAcp1E,SAAS+U,EAAOziB,IAAI,UAAU2E,OAAQ,OACxC,GACd+9E,EAAS,GACFI,EAAc,IACrBJ,EAASI,GAEf,UAEN,GAAIrgE,EAAO+V,IAAI,WAAqC,MAAxB/V,EAAOziB,IAAI,UACnC,KACU+iF,EAAcr1E,SAAS+U,EAAOziB,IAAI,UAAU2E,OAAQ,OACxC,IACd89E,EAASM,GAEf,UAEFtgE,EAAO+V,IAAI,WAAqC,MAAxB/V,EAAOziB,IAAI,YACnC2iF,EAASlgE,EAAOziB,IAAI,WAEpByiB,EAAO+V,IAAI,cAA2C,MAA3B/V,EAAOziB,IAAI,eAErB,UADXgjF,EAAWvgE,EAAOziB,IAAI,aAAaiM,gBACD,WAAb+2E,GAAsC,WAAbA,IAChDtL,EAAMsL,SAGPH,IACPF,EAASxiF,EAAIqH,OAAO,WAAW7H,QAC/B+iF,EAAS,GAQb,OALMxiD,EAAQ3wB,KAAK4wB,OAAM,IAAI7Q,MAAO+B,UAAY,KAC1C4xD,EAAU1hF,KAAK2hF,QAAQ3hF,KAAK4hF,SAAS5zE,KAAKunB,MAAMoJ,EAAQuiD,IAAU,GAAI,KACtEW,EAAY,EAAA/8E,MAAMoH,eAAew1E,IACjCI,EAAW9hF,KAAK+hF,WAAWX,IAEnBhjF,QAAWyjF,EAAUzjF,OAItB,GAAM4B,KAAKgiF,KAAKF,EAAUD,EAAW1L,IAHvC,CAAP,EAAO,M,OAIX,GAAoB,KADd1zD,EAAO,UACJrkB,OACL,MAAO,CAAP,EAAO,MAUX,GANM6jF,EAAkC,GAAxBx/D,EAAKA,EAAKrkB,OAAS,GAC7ByO,GAA0B,IAAf4V,EAAKw/D,KAAmB,IAA2B,IAAnBx/D,EAAKw/D,EAAS,KAAc,IACpD,IAAnBx/D,EAAKw/D,EAAS,KAAc,EAAyB,IAAnBx/D,EAAKw/D,EAAS,GAGlDC,EAAM,GACNZ,EAGA,IADIa,EAAoB,WAATt1E,EACN3O,EAAI,EAAGA,EAAIijF,EAAQjjF,IACxBgkF,GAAOjB,EAAWkB,EAAWlB,EAAW7iF,QACxC+jF,EAAWn0E,KAAKo0E,MAAMD,EAAWlB,EAAW7iF,aAGhD8jF,GAAOr1E,EAASmB,KAAKmnE,IAAI,GAAIgM,IAASv0E,WACtCs1E,EAAMliF,KAAK2hF,QAAQO,EAAKf,EAAQ,KAGpC,MAAO,CAAP,EAAOe,WAGX,YAAA5kD,gBAAA,SAAgB1+B,GACZ,IAAIsiF,EAAS,GACb,GAAW,MAAPtiF,GAA2D,IAA5CA,EAAI8L,cAAcjG,QAAQ,cAAqB,CAC9D,IAAMyc,EAAS,EAAApc,MAAMiK,eAAenQ,GACpC,GAAIsiB,EAAO+V,IAAI,WAAqC,MAAxB/V,EAAOziB,IAAI,UACnC,IACIyiF,EAAS/0E,SAAS+U,EAAOziB,IAAI,UAAU2E,OAAQ,MACjD,WAGV,OAAO89E,GAGL,YAAAmB,kBAAN,W,0FACa,SAAMriF,KAAKk6B,eAAez7B,IAAa,EAAA8S,iBAAiBK,yB,OAAjE,MAAO,CAAP,GAAS,kBAKL,YAAA+vE,QAAR,SAAgBn7B,EAAWziC,EAAW7O,GAIlC,OAHI6O,EAAI,GAAKyiC,EAAEpoD,SACXooD,EAAIn/C,MAAM0c,EAAI,EAAIyiC,EAAEpoD,QAAQ+E,KAAK+R,GAAKsxC,GAEnCA,GAGH,YAAAo7B,SAAR,SAAiB1yD,GACb,OAAQA,EAAI,KAAO,IAAM,IAAMlhB,KAAK4wB,MAAM1P,GAAGtiB,SAAS,KAGlD,YAAA01E,SAAR,SAAiB97B,GACbA,EAAIA,EAAE/7C,cAGN,IAFA,IAAI83E,EAAe,GAEVrkF,EAAI,EAAGA,EAAIsoD,EAAEpoD,OAAQF,IACtB8iF,EAASv8E,QAAQ+hD,EAAEtoD,IAAM,IAI7BqkF,GAAgB/7B,EAAEtoD,IAEtBsoD,EAAI+7B,EAEJ,IAAIC,EAAO,GACPC,EAAM,GACV,IAASvkF,EAAI,EAAGA,EAAIsoD,EAAEpoD,OAAQF,IAAK,CAC/B,IAAMwkF,EAAY1B,EAASv8E,QAAQ+hD,EAAEh8C,OAAOtM,IACxCwkF,EAAY,IAGhBF,GAAQxiF,KAAK2hF,QAAQe,EAAU91E,SAAS,GAAI,EAAG,MAEnD,IAAS1O,EAAI,EAAGA,EAAI,GAAKskF,EAAKpkF,OAAQF,GAAK,EAAG,CAC1C,IAAMykF,EAAQH,EAAKv8E,OAAO/H,EAAG,GAC7BukF,GAAYt2E,SAASw2E,EAAO,GAAG/1E,SAAS,IAE5C,OAAO61E,GAGH,YAAAV,WAAR,SAAmBv7B,GACf,OAAO,EAAA1hD,MAAMoH,eAAelM,KAAKsiF,SAAS97B,KAGhC,YAAAw7B,KAAd,SAAmBF,EAAsBD,EAAuB1L,G,gGAC1C,SAAMn2E,KAAKkiB,sBAAsBqzD,KAAKsM,EAAUl1E,OAAQm1E,EAASn1E,OAAQwpE,I,OAC3F,OADMyM,EAAY,SACX,CAAP,EAAO,IAAIh3E,WAAWg3E,YAE9B,EAtJA,GAAa,EAAAv3D,e,g7CCNb,cAIMs9C,EACM,SADNA,EAES,YAFTA,EAGK,gBAHLA,EAIG,MAJHA,EAKa,gBALbA,EAMmB,iBAGzB,aAOI,WAAoB5yC,EAAoCmE,GAApC,KAAAnE,eAAoC,KAAAmE,iBAkI5D,OAhII,YAAAd,eAAA,SAAe3U,EAAgB5E,EAAe4X,EAAcC,GAMxD,OALA13B,KAAK6f,MAAQA,EACb7f,KAAKykB,OAASA,EACdzkB,KAAKy3B,IAAMA,EACXz3B,KAAK03B,cAAgBA,EAEdviB,QAAQK,IAAI,CACfxV,KAAKk6B,eAAeqT,KAAKo7B,EAAgB9oD,GACzC7f,KAAKk6B,eAAeqT,KAAKo7B,EAAalkD,GACtCzkB,KAAKk6B,eAAeqT,KAAKo7B,EAAUlxC,GACnCz3B,KAAKk6B,eAAeqT,KAAKo7B,EAAoBjxC,MAIrD,YAAAooD,iBAAA,SAAiBD,GAEb,OADA7/E,KAAK6/E,MAAQA,EACN7/E,KAAKk6B,eAAeqT,KAAKo7B,EAAYkX,IAG1C,YAAAxmD,UAAN,W,uGACuB,MAAfr5B,KAAKykB,OAAL,OACA,EAAAzkB,KAAc,GAAMA,KAAKk6B,eAAez7B,IAAYkqE,K,OAApD,EAAKlkD,OAAS,S,iBAElB,MAAO,CAAP,EAAOzkB,KAAKykB,gBAGV,YAAA6U,SAAN,W,uGACsB,MAAdt5B,KAAK6f,MAAL,OACA,EAAA7f,KAAa,GAAMA,KAAKk6B,eAAez7B,IAAYkqE,K,OAAnD,EAAK9oD,MAAQ,S,iBAEjB,MAAO,CAAP,EAAO7f,KAAK6f,eAGV,YAAA+/D,iBAAN,W,uGACsB,MAAd5/E,KAAK6/E,MAAL,OACA,EAAA7/E,KAAa,GAAMA,KAAKk6B,eAAez7B,IAAYkqE,K,OAAnD,EAAKkX,MAAQ,S,iBAEjB,MAAO,CAAP,EAAO7/E,KAAK6/E,eAGV,YAAA1tB,OAAN,W,uGACoB,MAAZnyD,KAAKy3B,IAAL,OACA,EAAAz3B,KAAW,GAAMA,KAAKk6B,eAAez7B,IAAakqE,K,OAAlD,EAAKlxC,IAAM,S,iBAEf,MAAO,CAAP,EAAOz3B,KAAKy3B,aAGV,YAAA26B,iBAAN,W,uGAC8B,MAAtBpyD,KAAK03B,cAAL,OACA,EAAA13B,KAAqB,GAAMA,KAAKk6B,eAAez7B,IAAYkqE,K,OAA3D,EAAKjxC,cAAgB,S,iBAEzB,MAAO,CAAP,EAAO13B,KAAK03B,uBAGV,YAAAxgB,MAAN,W,gGACmB,SAAMlX,KAAKq5B,a,OAE1B,OAFM5U,EAAS,SAEf,GAAMtP,QAAQK,IAAI,CACdxV,KAAKk6B,eAAe6S,OAAO47B,GAC3B3oE,KAAKk6B,eAAe6S,OAAO47B,GAC3B3oE,KAAKk6B,eAAe6S,OAAO47B,GAC3B3oE,KAAKk6B,eAAe6S,OAAO47B,GAC3B3oE,KAAKk6B,eAAe6S,OAAO47B,GAC3B3oE,KAAK6iF,mBAAmBp+D,M,cAN5B,SASAzkB,KAAKykB,OAASzkB,KAAK6f,MAAQ7f,KAAK6/E,MAAQ,KACxC7/E,KAAKy3B,IAAM,KACXz3B,KAAK03B,cAAgB,K,YAGnB,YAAAoY,gBAAN,W,0FACkB,SAAM9vC,KAAK+1B,aAAa8vC,Y,OACtC,OAAa,MADC,SAEH,CAAP,GAAO,GAGI,GAAM7lE,KAAKq5B,a,OAC1B,MAAO,CAAP,EAAiB,MADF,kBAIb,YAAAzL,iBAAN,W,kGAEI,OADqB5tB,KAAK+1B,aAAayhB,aAE5B,CAAP,GAAO,GAGE,GAAMx3C,KAAKuqB,uB,OACxB,IADMC,EAAO,SACJtsB,EAAI,EAAGA,EAAIssB,EAAKpsB,OAAQF,IAC7B,GAAIssB,EAAKtsB,GAAG4kF,iBAAmBt4D,EAAKtsB,GAAG+tB,QACnC,MAAO,CAAP,GAAO,GAGf,MAAO,CAAP,GAAO,WAGL,YAAA8nB,gBAAN,SAAsBn0C,G,kGACH,SAAMI,KAAKq5B,a,OACJ,OADhB5U,EAAS,SACO,GAAMzkB,KAAKk6B,eAAez7B,IAC5CkqE,EAA2BlkD,I,OAC/B,OAAqB,OAFfiG,EAAgB,WAEQA,EAAczrB,eAAeW,GAIpD,CAAP,EAAO,IAAI,EAAAmjF,aAAar4D,EAAc9qB,KAH3B,CAAP,EAAO,cAMT,YAAA2qB,oBAAN,W,sGACmB,SAAMvqB,KAAKq5B,a,OACJ,OADhB5U,EAAS,SACO,GAAMzkB,KAAKk6B,eAAez7B,IAC5CkqE,EAA2BlkD,I,OAE/B,IAAW7kB,KAHL8qB,EAAgB,SAEhBjpB,EAA2B,GAChBipB,EACTA,EAAczrB,eAAeW,IAC7B6B,EAAShB,KAAK,IAAI,EAAAsiF,aAAar4D,EAAc9qB,KAGrD,MAAO,CAAP,EAAO6B,WAGL,YAAAu+E,qBAAN,SAA2Bt1D,G,gGACR,SAAM1qB,KAAKq5B,a,OAC1B,OADM5U,EAAS,SACf,GAAMzkB,KAAKk6B,eAAeqT,KAAKo7B,EAA2BlkD,EAAQiG,I,cAAlE,S,YAGE,YAAAm4D,mBAAN,SAAyBp+D,G,0FACrB,SAAMzkB,KAAKk6B,eAAe6S,OAAO47B,EAA2BlkD,I,cAA5D,S,YAER,EAzIA,GAAa,EAAAtkB,e,g7CClBb,YAgBA,aAKI,WAAoBs6B,EAAsCR,EAC9CD,EAA8C1U,EAC9CllB,EAAoD85B,EACpDvkB,EAA4C6kB,EAC5CtQ,EAAkC6L,EAClCitD,EAAoDC,QAApD,IAAAD,MAAA,WAAoD,IAAAC,MAAA,MAL5C,KAAAxoD,gBAAsC,KAAAR,gBAC9C,KAAAD,oBAA8C,KAAA1U,gBAC9C,KAAAllB,uBAAoD,KAAA85B,iBACpD,KAAAvkB,mBAA4C,KAAA6kB,gBAC5C,KAAAtQ,cAAkC,KAAA6L,eAClC,KAAAitD,iBAAoD,KAAAC,oBAThE,KAAAvwE,gBAAgC,KAExB,KAAA1H,QAAS,EAkHrB,OAxGI,YAAAD,KAAA,SAAKm4E,GAAL,WACQljF,KAAKgL,SAIThL,KAAKgL,QAAS,EACVk4E,IACAljF,KAAKmjF,oBACL1lD,aAAY,WAAM,SAAK0lD,sBAAqB,QAK9C,YAAAC,SAAN,W,0FACmB,SAAMpjF,KAAKslB,cAAcyqB,U,OACxC,MAAO,CAAP,GADe,kBAIb,YAAAozC,kBAAN,W,oGACQ,SAAMnjF,KAAKI,qBAAqBijF,c,OAApC,OAAI,SAEA,IAIW,GAAMrjF,KAAKkqB,YAAY4lB,mB,OACtC,OADe,SAKX,GAAM9vC,KAAKojF,YAHX,I,OAGJ,OAAI,SACA,IAKgB,OADhB/qC,EAAer4C,KAAKI,qBAAqBkjF,eACzC,MACe,GAAMtjF,KAAKk6B,eAAez7B,IAAY,EAAA8S,iBAAiBO,kB,OAAtEumC,EAAe,S,iBAGnB,OAAoB,MAAhBA,GAAwBA,EAAe,EACvC,IAGe,GAAMr4C,KAAKk6B,eAAez7B,IAAY,EAAA8S,iBAAiBS,gB,OAC1E,OAAkB,OADZuxE,EAAa,UAEf,KAGEC,EAAqC,GAAfnrC,IACP,IAAKtqB,MAAQ+B,UAAYyzD,GAAc,KACzCC,EAEO,GAAMxjF,KAAKk6B,eAAez7B,IAAY,EAAA8S,iBAAiBQ,wBAF7E,Q,aAGkB,WADI,SACtB,MAA6B,GAAM/R,KAAK42B,U,cAAX,S,cAAsB,SAAM52B,KAAKuxC,MAAK,I,QAAhB,S,wDAIrD,YAAAA,KAAN,SAAWkyC,G,YAAA,IAAAA,OAAA,G,mFACQ,SAAMzjF,KAAKkqB,YAAY4lB,mB,OACtC,OADe,SAKf,GAAM36B,QAAQK,IAAI,CACdxV,KAAKslB,cAAc4sD,WACnBlyE,KAAKslB,cAAcktD,cAAa,GAChCxyE,KAAKslB,cAAcitD,cAAa,GAChCvyE,KAAKslB,cAAc+sD,aAAY,MAP/B,I,cAGJ,SAOAryE,KAAKi6B,cAAc+uC,aACnBhpE,KAAKy6B,cAAcuuC,aACnBhpE,KAAKg6B,kBAAkBgvC,aACvBhpE,KAAKw6B,cAAc00B,aACnBlvD,KAAK2V,iBAAiBkB,KAAK,UACA,MAAvB7W,KAAKgjF,eAAL,MACA,GAAMhjF,KAAKgjF,kB,OAAX,S,mCAIF,YAAApsD,OAAN,W,iGACkC,MAA1B52B,KAAKijF,kBAAL,MACA,GAAMjjF,KAAKijF,qB,OAAX,S,mCAIF,YAAAhqC,uBAAN,SAA6Bl4C,EAAiBoqB,G,0FAC1C,SAAMnrB,KAAKk6B,eAAeqT,KAAK,EAAAh8B,iBAAiBO,gBAAiB/Q,I,OACjE,OADA,SACA,GAAMf,KAAKk6B,eAAeqT,KAAK,EAAAh8B,iBAAiBQ,sBAAuBoZ,I,OACvE,OADA,SACA,GAAMnrB,KAAKslB,cAAcotD,a,OACzB,OADA,SACA,GAAM1yE,KAAK+1B,aAAaqqD,gB,cAAxB,S,YAGE,YAAAsD,aAAN,W,kGACyB,SAAM1jF,KAAKk6B,eAAez7B,IAAY,EAAA8S,iBAAiBoB,e,OACpD,OADlBA,EAAe,SACG,GAAM3S,KAAKk6B,eAAez7B,IAAY,EAAA8S,iBAAiBmB,kB,OAC/E,OADMA,EAAkB,SACjB,CAAC,EAAD,CAAiB,MAAhBC,EAAyC,MAAnBD,YAGlC,YAAAwE,MAAA,WAEI,OADAlX,KAAK0S,gBAAkB,KAChB1S,KAAKk6B,eAAe6S,OAAO,EAAAx7B,iBAAiBoB,eAE3D,EArHA,GAAa,EAAA0L,uB,qaChBb,IAIA,2B,+CAUA,OAVmC,OAK/B,YAAAslE,MAAA,SAAM96C,GACF7oC,KAAKJ,GAAKipC,EAAEjpC,GACZ,YAAM+jF,MAAK,UAAC96C,GACZ7oC,KAAK+e,cAAgB8pB,EAAE9pB,eAE/B,EAVA,CAJA,QAImCiQ,QAAtB,EAAA40D,iB,8ZCJb,IAIA,2B,+CAQA,OARsC,OAIlC,YAAAD,MAAA,SAAM96C,GACF7oC,KAAKJ,GAAKipC,EAAEjpC,GACZ,YAAM+jF,MAAK,UAAC96C,IAEpB,EARA,CAJA,QAIsCrkB,YAAzB,EAAAq/D,oB,8ZCJb,IAIA,2B,+CAQA,OARkC,OAI9B,YAAAF,MAAA,SAAM96C,GACF7oC,KAAKJ,GAAKipC,EAAEjpC,GACZ,YAAM+jF,MAAK,UAAC96C,IAEpB,EARA,CAJA,QAIkCwvC,QAArB,EAAAyL,gB,8ECJb,SAAYC,GACR,2CACA,2CACA,yCACA,2CACA,iCAEA,6BACA,iCACA,2CACA,2CACA,2CACA,oCAEA,wBAdJ,CAAY,EAAAA,mBAAA,EAAAA,iBAAgB,M,+8CCC5B,KAOA,MACA,MACA,OATA,IAWA,aAEI,WAAoBn0C,EAAkD1lB,EAC1DvC,EAAwBhS,GADhB,KAAAi6B,sBAAkD,KAAA1lB,cAC1D,KAAAvC,SAAwB,KAAAhS,mBAoBxC,OAlBU,YAAAquE,YAAN,SAAkBxjE,EAA+ByjE,G,0FAC5B,SAAMjkF,KAAKkqB,YAAY4lB,mB,OACxC,OADiB,SAMF,GAAM9vC,KAAK4vC,oBAAoBwzC,aAJ1CpjF,KAAK2V,iBAAiBkB,KAAK,eACpB,CAAP,GAAO,I,OAIX,OADe,UAEQ,MAAfotE,GACAjkF,KAAK2V,iBAAiBkB,KAAK,YAAa,CAAEjS,IAAKq/E,EAAYr/E,MAE/D5E,KAAK2nB,OAAOwf,SAAS,CAAC,SACf,CAAP,GAAO,IAGJ,CAAP,GAAO,WAEf,EAvBA,GACa,EAAA+8C,oB,g7CCZb,KAMA,MAEA,KACA,MATA,IAWA,aAEI,WAAoBh6D,EAAkCvC,EAC1CtC,EAAwC3lB,GADhC,KAAAwqB,cAAkC,KAAAvC,SAC1C,KAAAtC,iBAAwC,KAAA3lB,cAgBxD,OAdU,YAAAskF,YAAN,SAAkBxjE,G,gGACF,SAAMxgB,KAAKkqB,YAAY6pB,gBAAgBvzB,EAAMU,OAAO5C,iB,OAChE,OAAW,OADLsM,EAAM,WAER5qB,KAAK2nB,OAAOwf,SAAS,CAAC,MACf,CAAP,GAAO,IAENvc,EAAIu5D,SAAYv5D,EAAIqB,QAMlB,CAAP,GAAO,IALHjsB,KAAKqlB,eAAeK,SAAS,QAAS,KAAM1lB,KAAKN,YAAYO,EAAE,2BAC/DD,KAAK2nB,OAAOwf,SAAS,CAAC,MACf,CAAP,GAAO,YAKnB,EAnBA,GACa,EAAAi9C,4B,g7CCZb,KAMA,MANA,IAUA,aAEI,WAAoBl6D,EAAkCvC,GAAlC,KAAAuC,cAAkC,KAAAvC,SAY1D,OAVU,YAAAq8D,YAAN,SAAkBxjE,G,kGACF,SAAMxgB,KAAKkqB,YAAY6pB,gBAAgBvzB,EAAMS,OAAOC,OAAO5C,iB,OAEvE,OAFMsM,EAAM,SAEQ,OADdy5D,EAA6B,MAAd7jE,EAAMlgB,KAAe,KAAOkgB,EAAMlgB,KAAK+jF,gBACI,IAApCA,EAAa5/E,QAAQmmB,EAAI3iB,OACjDjI,KAAK2nB,OAAOwf,SAAS,CAAC,iBAAkBvc,EAAIhrB,KACrC,CAAP,GAAO,IAGJ,CAAP,GAAO,WAEf,EAdA,GACa,EAAA0kF,gC,g7CCXb,KAKA,MACA,OANA,IAQA,aAEI,WAAoB10C,EAAkD1lB,EAC1DvC,GADQ,KAAAioB,sBAAkD,KAAA1lB,cAC1D,KAAAvC,SAgBhB,OAdU,YAAAq8D,YAAN,W,0FACqB,SAAMhkF,KAAKkqB,YAAY4lB,mB,cAAvB,SAEE,GAAM9vC,KAAK4vC,oBAAoBwzC,YAD9C,M,OAOA,OANe,SAEXpjF,KAAK2nB,OAAOwf,SAAS,CAAC,SAEtBnnC,KAAK2nB,OAAOwf,SAAS,CAAC,UAEnB,CAAP,GAAO,G,OAGX,MAAO,CAAP,GAAO,WAEf,EAnBA,GACa,EAAAo9C,sB,0FCVb,WAGA,OACA,OACA,OAGA,EAAQ,K,qBAKJ,EAAAC,iBAGJ,EAAAC,kBAAyB,uBAAgB,EAAD,mBAAY,CAAEC,qBAAqB,K,43iBChB3E,OAiLA,WACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,EAAAC,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAY,SAC/B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAY,SAC/B,EAAAA,mBAAmB,UAAY,SAC/B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAU,MAC7B,EAAAA,mBAAmB,UAAY,SAC/B,EAAAA,mBAAmB,UAAY,SAE/B,mBA+La,EAAAC,a,uKCjab,8BACI,KAAAC,YAAkD,IAAI71E,IAwB1D,OAtBI,YAAA6H,KAAA,SAAKhW,EAAcjB,GACL,MAANA,EAOJI,KAAK6kF,YAAYnhF,SAAQ,SAAC/E,GACtBA,EAAMkC,MAPFb,KAAK6kF,YAAY5tD,IAAIr3B,IACrBI,KAAK6kF,YAAYpmF,IAAImB,EAArBI,CAAyBa,IAUrC,YAAAsgB,UAAA,SAAUvhB,EAAYklF,GAClB9kF,KAAK6kF,YAAY31E,IAAItP,EAAIklF,IAG7B,YAAAt3C,YAAA,SAAY5tC,GACJI,KAAK6kF,YAAY5tD,IAAIr3B,IACrBI,KAAK6kF,YAAYjpD,OAAOh8B,IAGpC,EAzBA,GAAa,EAAAwY,sB,mPCFb,0OAA+B,+BAAC,mHAEP,6DAAyC,iEAAI,8CAA4C,gCAAC,cAFnH,YAAe,gCAEU,gBAA6C,iF,4vBCFtE,mW,kFAAY,iB,sBAAZ,sWAEwC,mCAAK,kHAAgD,uCAAS,qFAAmB,2CAAa,8IAAqE,2CAAa,uGAAsC,6CAAwC,2CAAa,4FAA0B,+CAAiB,yFAAuB,mDAAqB,0FAAwB,uDAAyB,oFAAmB,6CAAiC,uDAAyB,8f,0PAAgE,sB,uBAAhE,+xBAAoK,mDAA2B,mDAAqB,0FAAwB,uDAAyB,6FAA4B,6CAA+B,uDAAyB,sFAAoB,2DAA6B,igB,0PAAmK,sB,gCAAnK,+xBAA0P,2DAA6B,6IAAwJ,UAA3B,c,8BAA7H,sIAAgD,cAAwG,+DAAiC,4PAA2E,0CAAwE,2DAAsC,uDAA+B,uDAAyB,0FAAyB,2DAA6B,kJ,iOAAsB,6CAAsC,uDAAiC,mDAA2B,mDAAqB,0FAAwB,uDAAyB,kZ,oGAAoH,sB,+BAApH,4eAAgJ,uDAAyB,yHAAoD,6CAAkC,mDAA2B,mDAAqB,kEAAI,mDAAqB,sFAAoB,uDAAyB,uJAA6F,2DAA6B,oEAAM,+DAAiC,iHAAgD,4EAAuD,2DAA6B,oIAAiC,eAAoD,uDAAkC,uDAAyB,iN,gQAA0B,uBAAiH,2DAA6B,0HAAwD,0EAAwD,mDAA2B,+CAAuB,2CAAmB,uCAAe,mCAAW,+BAAQ,gCAAC,gCAFj/F,QAAkC,EAE9B,aAAogB,SAAoF,IAApF,SAAmD,QAAa,EAAmB,OAAnF,SAA2I,SAA+P,SAAgO,IAAhO,SAAyG,iBAA0D,EAA4B,gBAA/L,SAAyO,IAA8F,4FAAhD,SAAgD,GAA4I,IAAwE,6BAAmE,cAA9I,SAAG,WAAwE,GAA4N,SAAG,SAA2L,SAAmE,gBAAiD,EAA2B,eAAqrB,kBAA8B,OAAxD,UAA0B,EAAvB,gBAAsB,gCAF1oF,qMAE8P,iFAAgN,sEAA0D,2OAAiS,oEAAyG,SAA2B,+DAA3B,kOAAuvB,gDAAsB,+EAAwK,6MAA6N,uEAAwJ,SAAmE,YAAyB,SAAqH,+DAAqH,qFAAjC,UAAiC,GAA+G,mDAAgO,6E,y6DCFj1F,SAcA,QAEA,QAEMuwD,EACe,kBADfA,EAEa,gBAGnB,aAcI,WAAsB17B,EAAoCtlB,EAC5CvnB,EAAsDV,EACxDw6B,EAA0C3iB,GAFhC,KAAA01B,cAAoC,KAAAtlB,SAC5C,KAAAvnB,uBAAsD,KAAAV,cACxD,KAAAw6B,iBAA0C,KAAA3iB,eAf7C,KAAAsI,MAAgB,GAChB,KAAAklE,eAAgB,EAEzB,KAAAt/D,eAAyB,GACzB,KAAAu/D,cAAwB,EAMd,KAAAC,eAAiB,MACjB,KAAAt3C,aAAe,QA4E7B,OAtEU,YAAA5rC,SAAN,W,yGACsB,MAAd/B,KAAK6f,OAAgC,KAAf7f,KAAK6f,MAA3B,OACA,EAAA7f,KAAa,GAAMA,KAAKk6B,eAAez7B,IAAYkqE,K,OAAnD,EAAK9oD,MAAQ,SACK,MAAd7f,KAAK6f,QACL7f,KAAK6f,MAAQ,I,iBAGA,OAArB,EAAA7f,KAAqB,GAAMA,KAAKk6B,eAAez7B,IAAakqE,I,cAA5D,EAAKoc,cAAgB,SACK,MAAtB/kF,KAAK+kF,gBACL/kF,KAAK+kF,eAAgB,GAErB,EAAAjgF,MAAMsG,WACNgF,SAAS80B,eAA6B,MAAdllC,KAAK6f,OAAgC,KAAf7f,KAAK6f,MAAe,QAAU,kBAAkB5L,Q,YAIhG,YAAAuR,OAAN,W,kGACI,GAAkB,MAAdxlB,KAAK6f,OAAgC,KAAf7f,KAAK6f,MAG3B,OAFA7f,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,kBACvB,IAEJ,IAAiC,IAA7BD,KAAK6f,MAAMpb,QAAQ,KAGnB,OAFAzE,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,iBACvB,IAEJ,GAA2B,MAAvBD,KAAKylB,gBAAkD,KAAxBzlB,KAAKylB,eAGpC,OAFAzlB,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,uBACvB,I,iBAKiB,O,wBADjBD,KAAK6lB,YAAc7lB,KAAKitC,YAAY9W,MAAMn2B,KAAK6f,MAAO7f,KAAKylB,gBAC1C,GAAMzlB,KAAK6lB,a,OAC5B,OADMpkB,EAAW,SACjB,GAAMzB,KAAKk6B,eAAeqT,KAAKo7B,EAAoB3oE,KAAK+kF,gB,cAAxD,SACI/kF,KAAK+kF,cACL,GAAM/kF,KAAKk6B,eAAeqT,KAAKo7B,EAAsB3oE,KAAK6f,QAD1D,M,cACA,S,aAEA,SAAM7f,KAAKk6B,eAAe6S,OAAO47B,I,OAAjC,S,wBAEAlnE,EAASk3B,WACT34B,KAAKI,qBAAqB6qB,WAAW,yBACU,MAA3CjrB,KAAKklF,mCACLllF,KAAKklF,qCAELllF,KAAK2nB,OAAOwf,SAAS,CAACnnC,KAAKilF,iB,QAL/B,M,OAQuB,SAAMjlF,KAAKk6B,eAAez7B,IAAa,EAAA8S,iBAAiBI,oB,OAC/E,OADMwzE,EAAiB,SACvB,GAAMnlF,KAAKuX,aAAag2B,KAAK,EAAAh8B,iBAAiBI,oBAAqBwzE,I,QAAnE,SAC8B,MAA1BnlF,KAAKolF,mBACLplF,KAAKolF,oBAETplF,KAAKI,qBAAqB6qB,WAAW,aACC,MAAlCjrB,KAAKktC,0BACLltC,KAAKktC,4BAELltC,KAAK2nB,OAAOwf,SAAS,CAACnnC,KAAK2tC,e,yFAM3C,YAAA03C,eAAA,WACIrlF,KAAKI,qBAAqB6qB,WAAW,oCACrCjrB,KAAKglF,cAAgBhlF,KAAKglF,aAC1B50E,SAAS80B,eAAe,kBAAkBjxB,SAElD,EAxFA,GAAa,EAAA25B,kB,gFCvBb,qBAA0Bt/B,GACtB,OAAO,O,mTCCglB,gEAA+D,6L,gCAA+F,gEAAuD,wP,gCAAwlB,gJ,kCAAyB,c,2BAAzB,wMAAyK,oHAAiH,cAA1R,QAA0R,YAA1M,+BAAyF,6G,gCAAvR,yFAA6E,+DAAiC,oIAA8R,4DAA6B,gCAA3T,QAAqH,2BAAmD,4B,gCAA/nC,oEAAiJ,uDAAyB,oIAAqI,uDAAyB,oIAAyK,uDAAyB,yFAAwB,2DAA6B,uGAAkC,6CAAqC,2DAA6B,ygB,0PAA8D,sB,uBAA9D,k4BAAyK,2DAA6B,qIAAib,uDAA+B,oDAAqB,gCAApqC,QAAG,2BAA2D,4BAAgG,QAAG,2BAAmD,oBAAqS,SAAkF,IAAlF,SAA6B,OAAiC,EAAmB,OAAjF,SAA2H,IAA3H,SAAwJ,IAA8C,SAAyB,2BAAmD,qCAApV,iFAAkE,8O,gCAA+sB,oEAAoE,uDAAyB,uFAAuB,2CAA8B,uDAAyB,4IAAoE,uDAAyB,yFAAwB,2DAA6B,uGAAkC,6CAAqC,2DAA6B,yhB,0PAAkE,sB,uBAAlE,k4BAAyL,uDAA+B,oDAAqB,gCAA7O,SAAsH,IAAtH,SAAiC,OAAiC,EAAmB,OAArF,SAA+H,IAA/H,SAA4I,OAAgB,cAAzc,2EAA2O,iFAAkE,8O,gCAA0W,uFAAyC,2DAA6B,6IAA4C,aAAoF,2DAA6B,sFAAsB,2CAA2B,uDAAyB,oBAA3L,+FAA5C,QAA4C,GAAuI,+E,gCAAiF,mEAA+B,2DAA6B,uFAAuB,2CAA0B,2DAA6B,2IAAmE,uDAAyB,oBAAnJ,iF,gCAAtf,mEAAgE,uDAAyB,oIAAiT,uDAAyB,oIAAqP,oDAAqB,gCAAplB,SAAuB,EAAiB,UAAkS,QAAc,EAAgB,kB,gCAAgR,mEAAiJ,uDAAyB,qGAAiC,2DAA6B,wFAAiC,uDAA+B,mDAAqB,W,gCAAoC,wJAAuD,yHAAvD,QAAuD,M,gCAAmK,yFAA6D,uDAAyB,uY,kGAA0G,sB,0BAA1G,yeAAiI,uDAAyB,mHAA+C,6CAA+B,oDAAqB,cAA7P,QAAqC,WAAwN,YAA7H,2BAAhI,qMAAyM,8E,gCAA+E,mEAAmD,uDAAyB,gEAAG,2CAAmC,uDAAyB,gEAAG,2CAAoC,mDAAqB,oBAAxH,gFAA+D,oF,gCAAwK,sJAA0U,2DAA6B,mEAAM,+DAAiC,gHAAgD,0EAA0D,2DAA6B,kIAAiC,aAAoD,uDAAyB,oBAAnoB,QAAmE,mBAAyB,SAAkW,sEAAwH,wFAAjC,QAAiC,M,4LAF37J,yX,kFAAY,iB,sBAAZ,sWAE2D,mCAAK,iHAAgD,uCAAS,qOAA+B,wBAA0H,2CAAa,kGAAiC,gCAAa,2CAAa,4FAA0B,+CAAiB,yFAAuB,mDAAqB,qIAA61C,mDAAqB,qIAA6pB,mDAAqB,qIAA4rB,mDAAqB,qIAA4U,mDAAqB,qIAAqM,mDAAqB,qIAAyV,mDAAqB,qIAAsN,mDAAqB,kEAAI,mDAAqB,0FAAyB,uDAAyB,qIAA4oB,uDAAyB,wM,iOAAwE,qGAA6E,mDAA2B,mDAAqB,0FAAyB,uDAAyB,iJ,mCAAyB,c,6BAAzB,kFAAmD,6CAAwC,mDAA2B,+CAAuB,2CAAmB,uCAAe,mCAAW,+BAAQ,+BAAC,sEAA6C,+BAAC,uGAAwC,gCAAC,gCAF3jL,QAAkC,EAE9B,aAA0H,IAA0B,mFAAyH,8BAAxJ,SAAK,QAA0B,GAAyR,SAAsC,0EAA0G,4BAAkuC,SAAc,2BAAqD,sBAA+mB,SAAc,2BAAiD,kBAAkpB,SAAc,wEAAkI,8BAAiN,SAA4G,gDAAiE,kBAA6C,SAAwB,8BAAsV,SAAc,8BAAwS,SAAyH,+JAAgN,kBAA4V,SAAG,QAAc,gCAF3jK,qMAEgU,kBAA0uJ,gDAAwE,gEAAkO,oF,0mBCFp1K,WAcA,aAMI,WAAsB2+B,EAAoCtlB,EAC5CjoB,EAAoCU,EACpCuP,GAFQ,KAAAs9B,cAAoC,KAAAtlB,SAC5C,KAAAjoB,cAAoC,KAAAU,uBACpC,KAAAuP,MAPJ,KAAAq+B,mBAAqB,IAAI,EAAAttB,aACzB,KAAAwtB,kBAAoB,IAAI,EAAAxtB,aAElC,KAAAqW,UAAmB,GAmBvB,OAbI,YAAAh1B,SAAA,WACI/B,KAAK+2B,UAAY/2B,KAAKitC,YAAYnW,+BAA+B92B,KAAK2P,MAG1E,YAAA21E,OAAA,SAAOpwE,GACHlV,KAAKguC,mBAAmBp3B,KAAK1B,EAAEjN,OAGnC,YAAAs9E,QAAA,WACIvlF,KAAKI,qBAAqB6qB,WAAW,oBACrCjrB,KAAKI,qBAAqBgkB,UAAU,4DACpCpkB,KAAKkuC,kBAAkBt3B,QAE/B,EAvBA,GAAa,EAAAm3B,6B,8ECdb,WAaA,GAFA,MAEA,WAaI,WAAsBr4B,EACRC,GADQ,KAAAD,2BACR,KAAAC,mBATJ,KAAAqB,QAAU,IAAI,EAAA0J,aACd,KAAAzJ,SAAW,IAAI,EAAAyJ,aACf,KAAA/J,OAAS,IAAI,EAAA+J,aACb,KAAA5J,QAAU,IAAI,EAAA4J,aAExB,KAAA5K,gBAAoC,KACpC,KAAAC,MAAgB,EAqDpB,OAhDI,YAAAH,YAAA,WACIxF,SAASuL,KAAKkxB,UAAUE,OAAO,cAC/B38B,SAASuL,KAAKF,YAAYrL,SAASrN,cAAc,qBAGrD,YAAA8S,KAAA,SAAQ5N,EAAe6N,EAAmCC,EACtDC,GADJ,gBAA0D,IAAAD,OAAA,QACtD,IAAAC,MAAA,MACAhW,KAAK2W,OAAOC,OACZ5W,KAAK2V,iBAAiBkB,KAAK,aAC3B7W,KAAK8V,gBAAkBA,EACvB9V,KAAK+V,KAAOA,EAEZ3F,SAASuL,KAAKkxB,UAAUC,IAAI,cAC5B,IAAM04C,EAAWp1E,SAASC,cAAc,OACxCm1E,EAASC,UAAY,kBAAoBzlF,KAAK+V,KAAO,QAAU,IAC/D3F,SAASuL,KAAKH,YAAYgqE,GAE1B,IAAMvvE,EAAUjW,KAAK0V,yBAAyBQ,wBAA2BjO,GACnEkO,EAAenW,KAAKoW,UAAUC,gBAAmBJ,GACzB,MAA1BD,GACAA,EAAuBG,EAAaG,UAGxClG,SAASrN,cAAc,iBAAiB2iF,iBAAiB,SAAS,SAAChkF,GAC/DA,EAAEwP,qBAIN,IADA,IAC2B,MADZ7J,MAAMC,KAAK8I,SAAS7I,iBAAiB,2CACzB,eAAQ,CAAZ,KACNm+E,iBAAiB,SAAS,SAACz9D,GACpC,EAAK9Q,WAMb,OAFAnX,KAAK8W,QAAQF,OACb5W,KAAK2V,iBAAiBkB,KAAK,cACpBV,EAAaG,UAGxB,YAAAa,MAAA,WACInX,KAAKgX,QAAQJ,OACb5W,KAAK2V,iBAAiBkB,KAAK,cAC3B7W,KAAKiX,SAASL,OACd5W,KAAK2V,iBAAiBkB,KAAK,eACC,MAAxB7W,KAAK8V,iBACL9V,KAAK8V,gBAAgBoB,SAGjC,EAhEA,IAIa,EAAAE,kB,g7CCVb,aAEA,SAUA,SACA,QAEA,SACA,SAEA,aAoBI,WAAsB61B,EAAoCtlB,EAC5CjoB,EAAoCwZ,EACpC9Y,EAAsDuP,EACtD2H,EAAkDC,EAClD2iB,GAJQ,KAAA+S,cAAoC,KAAAtlB,SAC5C,KAAAjoB,cAAoC,KAAAwZ,aACpC,KAAA9Y,uBAAsD,KAAAuP,MACtD,KAAA2H,qBAAkD,KAAAC,eAClD,KAAA2iB,iBAvBd,KAAAvc,MAAgB,GAChB,KAAA+Y,UAAoB,EACpB,KAAAivD,UAAoB,EACpB,KAAAC,SAAmB,EACnB,KAAA7uD,UAAY,EAAApB,mBACZ,KAAA2B,aAAe,EAAAhf,sBACf,KAAA21B,qBAA8C,EAAA31B,sBAAsBiO,cACpE,KAAA8Q,cAAwB,EACxB,KAAA0+B,IAAW,KACX,KAAAj0D,MAAgB,GAChB,KAAA+jF,eAAyB,KAMf,KAAAC,WAAa,QACb,KAAAn4C,aAAe,QAOrB3tC,KAAKq3B,aAAer3B,KAAKI,qBAAqB+2B,YAAYxnB,GA0KlE,OAvKU,YAAA5N,SAAN,W,uGACI,OAA8B,MAA1B/B,KAAKitC,YAAYptB,OAAwD,MAAvC7f,KAAKitC,YAAYrnB,oBACR,MAA3C5lB,KAAKitC,YAAYjW,wBACjBh3B,KAAK2nB,OAAOwf,SAAS,CAACnnC,KAAK8lF,aAC3B,MAGA9lF,KAAK4lF,SAAuB,MAAZ5lF,KAAK2P,KAAe3P,KAAKq3B,eACrC0uD,EAA4B,KACO,MAAnC/lF,KAAKsX,mBAAmBG,QACxBsuE,EAAoB/lF,KAAKsX,mBAAmBG,QACE,MAAvCzX,KAAKsX,mBAAmBigE,cAC/BwO,EAAoB/lF,KAAKsX,mBAAmBigE,aAGhDv3E,KAAK+1D,IAAM,IAAI,EAAA1vC,IAAIrmB,KAAK2P,IAAKo2E,GAAmB,SAACpoE,GAC7C,EAAKA,MAAQA,EACb,EAAK6H,YACN,SAAC5I,GACA,EAAKxc,qBAAqBU,UAAU,QAAS,EAAKpB,YAAYO,EAAE,iBAAkB2c,MACnF,SAACy5D,GACa,UAATA,IACA,EAAKsP,UAAW,OAK5B3lF,KAAKiuC,qBAAuBjuC,KAAKitC,YAAY7V,4BAA4Bp3B,KAAKq3B,cAC9E,GAAMr3B,KAAK+K,S,cAAX,S,YAGJ,YAAA6K,YAAA,WACI5V,KAAKgmF,aACLhmF,KAAK+1D,IAAM,MAGT,YAAAhrD,KAAN,W,yGACI,GAAiC,MAA7B/K,KAAKiuC,qBAEL,OADAjuC,KAAK8B,MAAQ9B,KAAKN,YAAYO,EAAE,oBAChC,I,OAGJD,KAAKgmF,aACLhmF,KAAK8B,MAAS,EAAA6zB,mBAA2B31B,KAAKiuC,sBAAsBlnC,KAC9Dk/E,EAAejmF,KAAKitC,YAAYjW,uBAAuBv4B,IAAIuB,KAAKiuC,sBAC9DjuC,KAAKiuC,sB,KACJ,EAAA31B,sBAAsB+N,IAAtB,Y,KA0BA,EAAA/N,sBAAsByN,I,KACtB,EAAAzN,sBAAsB0N,gBAAtB,Y,KAgBA,EAAA1N,sBAAsB6N,MAAtB,Y,mBA1CD,OAAKnmB,KAAKq3B,cAA4B,MAAZr3B,KAAK+1D,KAID,MAA1BkwB,EAAaC,UACbxqE,YAAW,WACP,EAAKq6C,IAAIhrD,KAAK6zC,KAAKr7C,MAAM0iF,EAAaC,cACvC,KAIe,OADZC,EAAavnC,KAAKr7C,MAAM0iF,EAAaG,cACjBD,EAAW/nF,OAAS,GAC1C4B,KAAK+1D,IAAIhrD,KAAK,CACVotB,MAAOguD,EAAW,GAAGhuD,MACrBw9B,UAAWwwB,EAAW,GAAGxwB,UACzBxI,KAAMg5B,EAAWx/E,KAAI,SAACoH,GAClB,MAAO,CACH4+B,QAAS5+B,EAAE4+B,QACX05C,UAAWt4E,EAAEs4E,gBAMjC,OAvBI,M,OAwCJ,OAdA3qE,YAAW,WACP4qE,EAAUv7E,KAAK,CACXw7E,YAAQx8E,EACRuE,KAAM23E,EAAaxa,KACnB+a,YAAaP,EAAaQ,UAC1BC,gBAAiB,SAAO9/E,GAAkB,qC,+DAE3B,OADL+/E,EAAM//E,EAAE7D,cAAc,+BACxB,OACA/C,KAAK2d,MAAQgpE,EAAIhoF,MACjB,GAAMqB,KAAKwlB,W,OAAX,S,uCAIb,GACH,M,cAEAxlB,KAAK6lF,eAAiBI,EAAa9/D,MAC/BnmB,KAAKitC,YAAYjW,uBAAuBva,KAAO,EAC/C,GAAMzc,KAAKm0D,WAAU,IADrB,M,OACA,S,wBAIJ,Y,yBAIN,YAAA3uC,OAAN,W,gGACI,GAAkB,MAAdxlB,KAAK2d,OAAgC,KAAf3d,KAAK2d,MAG3B,OAFA3d,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,6BACvB,IAGJ,GAAID,KAAKiuC,uBAAyB,EAAA31B,sBAAsB+N,IAAK,CACzD,GAAgB,MAAZrmB,KAAK+1D,IAGL,UAFA/1D,KAAK+1D,IAAI6wB,YAIN5mF,KAAKiuC,uBAAyB,EAAA31B,sBAAsB6N,OAC3DnmB,KAAKiuC,uBAAyB,EAAA31B,sBAAsBiO,gBACpDvmB,KAAK2d,MAAQ3d,KAAK2d,MAAM1Y,QAAQ,IAAK,IAAI7B,Q,iBAKzC,O,sBADApD,KAAK6lB,YAAc7lB,KAAKitC,YAAY1W,eAAev2B,KAAKiuC,qBAAsBjuC,KAAK2d,MAAO3d,KAAK02B,UAC/F,GAAM12B,KAAK6lB,a,OACY,OADvB,SACuB,GAAM7lB,KAAKk6B,eAAez7B,IAAa,EAAA8S,iBAAiBI,oB,OAC/E,OADMwzE,EAAiB,SACvB,GAAMnlF,KAAKuX,aAAag2B,KAAK,EAAAh8B,iBAAiBI,oBAAqBwzE,I,cAAnE,SAC8B,MAA1BnlF,KAAKolF,mBACLplF,KAAKolF,oBAETplF,KAAKI,qBAAqB6qB,WAAW,2BACC,MAAlCjrB,KAAKktC,0BACLltC,KAAKktC,4BAELltC,KAAK2nB,OAAOwf,SAAS,CAACnnC,KAAK2tC,e,6BAG3B3tC,KAAKiuC,uBAAyB,EAAA31B,sBAAsB+N,KAAmB,MAAZrmB,KAAK+1D,KAChE/1D,KAAK+1D,IAAIvmC,Q,+BAKf,YAAA2kC,UAAN,SAAgB0yB,G,gGACZ,GAAI7mF,KAAKiuC,uBAAyB,EAAA31B,sBAAsB6N,MACpD,UAGJ,GAAyB,MAArBnmB,KAAKo0D,aACL,U,iBAMA,O,sBAFM5yC,EAAU,IAAI,EAAAwuC,sBAAsBhwD,KAAKitC,YAAYptB,MAAO7f,KAAKitC,YAAYrnB,oBACnF5lB,KAAKo0D,aAAep0D,KAAKkZ,WAAW8rD,mBAAmBxjD,GACvD,GAAMxhB,KAAKo0D,c,cAAX,SACIyyB,GACA7mF,KAAKI,qBAAqBU,UAAU,UAAW,KAC3Cd,KAAKN,YAAYO,EAAE,4BAA6BD,KAAK6lF,iB,iDAIjE7lF,KAAKo0D,aAAe,K,YAGhB,YAAA4xB,WAAR,WACoB,MAAZhmF,KAAK+1D,MACL/1D,KAAK+1D,IAAI6wB,OACT5mF,KAAK+1D,IAAI+wB,YAGrB,EAnMA,GAAa,EAAA34C,sB,8ECvBb,iBACI,KAAAxV,WAAqB,EACrB,KAAAI,mBAA6E,MAFpE,EAAAL,c,8ECEb,MAMI,SAAYP,EAAe/3B,GACvBJ,KAAKiI,KAAO7H,EAAqB0/D,YACjC9/D,KAAK+G,KAAO3G,EAAqB2mF,kBACjC/mF,KAAKgnF,WAAa7uD,EAClBn4B,KAAKinF,UAAY,MAVZ,EAAA5uD,iB,8ECJb,MAGI,SAAYxY,GACR7f,KAAK6f,MAAQA,GAJR,EAAA+X,mB,8ECIb,iBAQI,WAAY/X,EAAe+F,EAA4B4R,EACnD7Z,EAAe+Y,EAAmBmpC,GAClC7/D,KAAK6f,MAAQA,EACb7f,KAAK4lB,mBAAqBA,EAC1B5lB,KAAK2d,MAAQA,EACb3d,KAAKw3B,SAAWA,EAChBx3B,KAAK02B,SAAWA,EAChB12B,KAAK6/D,OAAmB,MAAVA,EAAiBA,EAAS,KA4BhD,OAzBI,YAAAW,gBAAA,SAAgB5C,GACZ,IAAMx4C,EAAW,CACbmhD,WAAY,WACZp9D,SAAUnJ,KAAK6f,MACfzW,SAAUpJ,KAAK4lB,mBACfi4C,MAAO,qBACP2I,UAAW5I,GAiBf,OAdI59D,KAAK6/D,SACLz6C,EAAIiL,WAAarwB,KAAK6/D,OAAO53D,KAC7Bmd,EAAI8hE,iBAAmBlnF,KAAK6/D,OAAOmnB,WACnC5hE,EAAI+hE,WAAannF,KAAK6/D,OAAO94D,MAK7B/G,KAAK2d,OAA0B,MAAjB3d,KAAKw3B,WACnBpS,EAAIqR,eAAiBz2B,KAAK2d,MAC1ByH,EAAIoR,kBAAoBx2B,KAAKw3B,SAC7BpS,EAAIgiE,kBAAoBpnF,KAAK02B,SAAW,IAAM,KAG3CtR,GAEf,EA3CA,GAAa,EAAAkT,gB,8ECJb,iBAKI,WAAoB3oB,EAAqB4nE,EAA6B15D,EAC1DwpE,EAAiCC,GADzB,KAAA33E,MAAqB,KAAA4nE,cAA6B,KAAA15D,kBAC1D,KAAAwpE,gBAAiC,KAAAC,eALrC,KAAAf,OAA4B,KAE5B,KAAAgB,cAAgBvnF,KAAKwnF,aAAa3oF,KAAKmB,MAI3CA,KAAKynF,cAAgB93E,EAAIS,SAASC,cAAc,KAChDrQ,KAAKu3E,YAA6B,MAAfA,GAAuC,KAAhBA,EAAqBA,EAAc,8BAiErF,OA9DI,YAAAxsE,KAAA,SAAKzK,GACDN,KAAKynF,cAAcn3E,KAAOtQ,KAAKu3E,YAALv3E,4BACXA,KAAK0nF,aAAa9oC,KAAKC,UAAUv+C,IAC5C,WAAaiM,mBAAmBvM,KAAK2P,IAAIS,SAAS8oC,SAAS5oC,MAC3D,OAEJtQ,KAAKumF,OAASvmF,KAAK2P,IAAIS,SAAS80B,eAAe,cAC/CllC,KAAKumF,OAAO9rE,IAAMza,KAAKynF,cAAcn3E,KAErCtQ,KAAK2P,IAAI+1E,iBAAiB,UAAW1lF,KAAKunF,eAAe,IAG7D,YAAAX,KAAA,WACI5mF,KAAK2nF,YAAY,SAGrB,YAAAn4D,MAAA,WACIxvB,KAAK2nF,YAAY,UAGrB,YAAAA,YAAA,SAAY9mF,GACHb,KAAKumF,QAAWvmF,KAAKumF,OAAO9rE,KAAQza,KAAKumF,OAAOqB,eAIrD5nF,KAAKumF,OAAOqB,cAAcC,YAAYhnF,EAASb,KAAKumF,OAAO9rE,MAG/D,YAAAitE,aAAA,SAAaxiF,GACT,OAAO+H,KAAKV,mBAAmBrH,GAAKD,QAAQ,mBAAmB,SAACV,EAAO1E,GACnE,OAAOkN,OAAOC,aAAc,KAAOnN,QAI3C,YAAAinF,QAAA,WACI9mF,KAAK2P,IAAIm4E,oBAAoB,UAAW9nF,KAAKunF,eAAe,IAGxD,YAAAC,aAAR,SAAqBv/D,GACjB,GAAKjoB,KAAK+nF,aAAa9/D,GAAvB,CAIA,IAAMniB,EAAkBmiB,EAAM3nB,KAAK+E,MAAM,KACxB,YAAbS,EAAM,IAAoB9F,KAAK6d,gBAC/B7d,KAAK6d,gBAAgB/X,EAAM,IACP,UAAbA,EAAM,IAAkB9F,KAAKqnF,cACpCrnF,KAAKqnF,cAAcvhF,EAAM,IACL,SAAbA,EAAM,IAAiB9F,KAAKsnF,cACnCtnF,KAAKsnF,aAAaxhF,EAAM,MAIxB,YAAAiiF,aAAR,SAAqB9/D,GACjB,OAAoB,MAAhBA,EAAM+/D,QAAmC,KAAjB//D,EAAM+/D,QAAiB//D,EAAM+/D,SAAYhoF,KAAKynF,cAAsBO,QAC9E,MAAd//D,EAAM3nB,MAAwC,iBAAhB2nB,EAAU,OAIF,IAAnCA,EAAM3nB,KAAKmE,QAAQ,aAAsD,IAAjCwjB,EAAM3nB,KAAKmE,QAAQ,WAC9B,IAAhCwjB,EAAM3nB,KAAKmE,QAAQ,WAE/B,EAzEA,GAAa,EAAA4hB,O,wVCCM,wFACmC,uCAAS,uFAAuB,2CAAa,iFAAiB,+CAAiB,mFAAmB,mDAAqB,sJAA8E,+CAAuB,2CAAmB,uCAAe,mCAAK,W,gCAAiP,mEAAsC,uDAAyB,iEAAI,wFAAgE,uDAAyB,gEAAG,yDAAgC,uDAAyB,qFAAqB,iDAAoB,iEAAG,yCAAoB,uDAAyB,iEAAG,+DAAsC,uDAAyB,iEAAG,2DAAkC,uDAAyB,uEAAQ,2DAA6B,0EAAY,+DAAiC,oEAAM,mEAAqC,kHAA6C,+DAAwC,2DAA0C,2DAA6B,0EAAY,2QAAwP,uDAAkC,mDAAqB,W,gCAA2B,kEAAsC,uDAAyB,gEAAG,gDAAuB,mDAAqB,W,gCAA2B,kEAAsC,uDAAyB,gEAAG,gDAAuB,mDAAqB,W,gCAAj3C,oFAAkC,+CAAiB,mFAAkB,mDAAqB,oIAA2gC,mDAAqB,oIAAoH,mDAAqB,qIAAoH,+CAAuB,4CAAa,gCAAj0C,QAAK,0BAA2hC,QAAK,0BAAoI,SAAK,4BAAgC,M,gCAAiW,iGAAiD,6I,gCAAsK,mRAAa,aAA+I,iHAA0H,cAA5N,IAA7C,oGAAb,QAA0D,OAAY,gBAAzD,MAA4C,cAAmG,wG,gCAA08C,iEAAqD,iT,gCAAyN,iEAAiD,4V,gCAAkO,iEAAgD,gN,gCAAuI,iEAAgD,gN,gCAAuI,iEAAkD,8M,gCAAqI,iEAAkD,yN,gCAAx2C,0NAAuD,4HAA2H,+EAAiB,2EAA6C,oIAAiO,2EAA6C,qIAAsO,2EAA6C,qIAA0I,2EAA6C,qIAA0I,2EAA6C,qIAA0I,2EAA6C,qIAAuJ,uEAA8C,iEAAqC,gCAAhiD,QAAa,QAAmO,SAAI,6EAA0Q,UAAI,yEAA+Q,SAAI,qCAA2C,oCAAwI,SAAI,qCAA2C,oCAAwI,SAAI,qCAA6C,sCAAsI,SAAI,qCAA6C,uDAAhzC,6F,gCAA0gL,2FAA4C,uHAA0G,8IAA8G,2CAA+B,oEAAsC,gJAAgH,2CAA8B,+DAAiC,oBAA5c,iFAAwN,4EAAqL,8E,qEAFhqT,qOAAoB,aACN,mCAAK,oIAC+S,mCAAK,mW,kFAAY,iB,sBAAZ,wWAAkG,uCAAS,oFAAiB,2CAAa,qIAAi6C,2CAAa,mMAAK,mCAAiD,+CAAiB,mHAAgD,mDAAqB,mMAAK,mCAAiD,uDAAyB,qIAA+E,uDAAyB,6FAA0B,2DAA6B,0FAAuB,+DAAiC,qIAAoS,+DAAiC,0FAAwB,mEAAqC,oFAAmB,6CAAiC,mEAAqC,8f,0PAAgE,sB,uBAAhE,k4BAA8M,mEAAqC,qGAAoC,6CAAqC,+DAAuC,+DAAiC,0FAAwB,mEAAqC,mFAAkB,6CAA6B,mEAAqC,wa,0PAA8D,sB,sBAA9D,6lBAAuJ,mEAAqC,qGAAoC,6CAAiC,+DAAuC,+DAAiC,0FAAwB,mEAAqC,qIAA8iD,mEAAqC,6FAA4B,6CAA+B,mEAAqC,sFAAoB,uEAAyC,qFAAmB,2EAA6C,sgB,0PAAwO,sB,gCAA6B,c,sCAArQ,iyBAAkX,2EAA6C,6QAAuE,2EAAqE,uEAA+C,uEAAyC,qEAAK,2EAA6C,8IAA6N,UAAhC,c,gCAA7L,uIAAgG,eAA6H,+EAAiD,8PAA2F,2CAAwE,2EAAsD,2EAA6C,sGAA0C,uEAA+C,mEAA2C,mEAAqC,sGAAoC,+CAAmC,+DAAuC,+DAAiC,2FAAwB,mEAAqC,oGAAkC,+CAAqC,mEAAqC,uFAAoB,uEAAyC,8gB,8PAAuO,sB,uCAAvO,oyBAAqS,uEAAyC,8IAAwK,UAA/B,c,gCAAzI,uIAA4F,eAA4E,2EAA6C,8PAAuF,2CAAwE,uEAAkD,mEAA2C,+DAAuC,+DAAiC,2FAAwB,mEAAqC,oFAAkB,+CAAmC,mEAAqC,ya,8PAA8D,sB,sBAA9D,6fAAiF,mEAAqC,sGAAoC,+CAAuC,+DAAuC,+DAAiC,mEAAI,+DAAiC,4FAAyB,mEAAqC,uJAAqI,uEAAyC,qEAAM,+CAA0B,uEAAyC,oIAAiC,eAAgG,mEAA8C,mEAAqC,yM,mOAAwE,+HAAqG,+DAAuC,+DAAiC,sIAAggB,2DAAmC,uDAA+B,mDAA2B,+CAAuB,2CAAmB,uCAAe,mCAAY,+BAAO,gCAAC,gCAF73T,qBACP,QADb,QAAK,SAAe,GACD,QACE,0BAAkT,SAAkC,EAA4B,aAA2E,SAAmB,EAAc,QAAk5C,2BAAgD,QAArD,SAAK,GAA4I,2BAAgD,QAArD,SAAK,GAA0E,UAAiC,EAAe,QAAuK,SAA+H,EAA4B,sBAAgU,SAA4H,IAA5H,SAAmD,QAAa,EAAmB,OAAnF,SAAqI,cAArI,SAAqL,SAAgW,SAAkD,OAAY,EAAkB,MAAhF,SAAyH,cAA6Q,SAAyB,EAA6B,uBAA0vD,SAAwS,IAAxS,SAAyH,iBAA+G,EAA4B,gBAApQ,UAAiW,IAA8D,UAAuB,EAA6B,qBAAC,GAAiU,8FAAhG,UAAgG,GAAiL,IAAwF,8BAAmE,cAA9J,UAAG,WAAwF,GAAysB,UAA2Q,IAA3Q,UAA2H,uBAA4G,EAAmC,uBAA1Q,UAAoR,IAAsJ,8FAA5F,UAA4F,GAA4H,IAAoF,8BAAmE,cAA1J,UAAG,WAAoF,GAAoY,UAAkD,OAAY,EAAkB,MAAuuB,UAAG,KAAkP,UAA0B,EAAiB,8CAA38R,4MAA83E,sEAAsE,2OAAuR,0EAA4L,kEAAkE,6MAAgO,sEAAqxD,oEAAiM,SAA2B,+DAA3B,yOAAs5C,2EAA0M,6EAAuI,UAAiC,+DAAjC,0OAAs7B,2EAAwE,qNAA0J,+EAAkN,UAA2G,YAAyB,SAAgD,mEAAoG,qFAAjC,UAAiC,GAAmL,mDAAwE,sE,88DCA1jS,aACA,SAUA,SAEA,aAcI,WAAsB4mB,EAAoCtlB,EAC5CjoB,EAAoC4lB,EACpCpM,EAAkC3B,EAClCnX,EACA28B,GAJQ,KAAAkQ,cAAoC,KAAAtlB,SAC5C,KAAAjoB,cAAoC,KAAA4lB,gBACpC,KAAApM,aAAkC,KAAA3B,eAClC,KAAAnX,uBACA,KAAA28B,4BAjBd,KAAAh2B,KAAe,GACf,KAAA8Y,MAAgB,GAChB,KAAA4F,eAAyB,GACzB,KAAAwiE,sBAAgC,GAChC,KAAAC,KAAe,GACf,KAAAlD,cAAwB,EAKd,KAAAr3C,aAAe,QAoI7B,OA3HI,sBAAI,uCAAwB,C,IAA5B,WACI,OAAmC,MAA5B3tC,KAAKwvC,oBAA8B,EAAqC,IAAhCxvC,KAAKwvC,oBAAsB,I,gCAG9E,sBAAI,uCAAwB,C,IAA5B,WACI,OAAQxvC,KAAKwvC,qBACT,KAAK,EACD,MAAO,UACX,KAAK,EACD,MAAO,UACX,KAAK,EACD,MAAO,UACX,QACI,MAAO,W,gCAInB,sBAAI,sCAAuB,C,IAA3B,WACI,OAAQxvC,KAAKwvC,qBACT,KAAK,EACD,OAAOxvC,KAAKN,YAAYO,EAAE,UAC9B,KAAK,EACD,OAAOD,KAAKN,YAAYO,EAAE,QAC9B,KAAK,EACD,OAAOD,KAAKN,YAAYO,EAAE,QAC9B,QACI,OAAmC,MAA5BD,KAAKwvC,oBAA8BxvC,KAAKN,YAAYO,EAAE,QAAU,O,gCAI7E,YAAAulB,OAAN,W,kHACI,OAAkB,MAAdxlB,KAAK6f,OAAgC,KAAf7f,KAAK6f,OAC3B7f,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,kBACvB,MAE6B,IAA7BD,KAAK6f,MAAMpb,QAAQ,MACnBzE,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,iBACvB,KAEuB,MAAvBD,KAAKylB,gBAAkD,KAAxBzlB,KAAKylB,gBACpCzlB,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,uBACvB,KAEAD,KAAKylB,eAAernB,OAAS,GAC7B4B,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,qBACvB,KAEAD,KAAKylB,iBAAmBzlB,KAAKioF,uBAC7BjoF,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,0BACvB,KAKkB,OAFhB+yD,EAAiBhzD,KAAK+8B,0BAA0B4N,iBAAiB3qC,KAAKylB,eACxEzlB,KAAKizD,kCACqBD,EAAepoB,MAAQ,EAClC,GAAM5qC,KAAKI,qBAAqByqB,WAAW7qB,KAAKN,YAAYO,EAAE,0BACzED,KAAKN,YAAYO,EAAE,sBAAuBD,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MACxF,YAHJ,M,OAIA,IAHe,SAIX,U,iBASI,OALZD,KAAK+G,KAAqB,KAAd/G,KAAK+G,KAAc,KAAO/G,KAAK+G,KAC3C/G,KAAK6f,MAAQ7f,KAAK6f,MAAMzc,OAAOsH,cACzB+sB,EAAM,EAAAiY,QAAQ8jB,cACd20B,EAAcnoF,KAAKI,qBAAqBgoF,UAAYpoF,KAAKI,qBAAqBioF,OAC9E3wD,EAAgBywD,EAAc,IAAQ,IAChC,GAAMnoF,KAAKslB,cAAcyS,QAAQ/3B,KAAKylB,eAAgBzlB,KAAK6f,MAAO4X,EAAKC,I,OACpE,OADT94B,EAAM,SACG,GAAMoB,KAAKslB,cAAcirC,WAAW3xD,I,OAC5B,OADjB4xD,EAAS,SACQ,GAAMxwD,KAAKslB,cAAcK,aAAa3lB,KAAKylB,eAAgB7mB,I,OACrE,OADPy3B,EAAiB,SACV,GAAMr2B,KAAKslB,cAAcqU,YAAY62B,EAAO,K,OAIvC,OAJZrD,EAAO,UACP3rC,EAAU,IAAI,EAAA8mE,gBAAgBtoF,KAAK6f,MAAO7f,KAAK+G,KAAMsvB,EACvDr2B,KAAKkoF,KAAM13B,EAAO,GAAG77C,gBAAiB8iB,EAAKC,EAAe13B,KAAK8uC,cAC3Dqe,KAAO,IAAI,EAAArzB,YAAYqzB,EAAK,GAAIA,EAAK,GAAGx4C,iBAC9B,GAAM3U,KAAKuX,aAAa9Y,IAAS,kB,OAClC,OADX8pF,EAAY,WAC0B,MAAnBA,EAAU5qE,OAAiD,MAAhC4qE,EAAUxzD,qBAC1DvT,EAAQ7D,MAAQ4qE,EAAU5qE,MAC1B6D,EAAQuT,mBAAqBwzD,EAAUxzD,oB,iBAKvC,O,wBADA/0B,KAAK6lB,YAAc7lB,KAAKkZ,WAAWwoD,aAAalgD,GAChD,GAAMxhB,KAAK6lB,a,cAAX,SACA7lB,KAAKI,qBAAqB6qB,WAAW,cACrCjrB,KAAKI,qBAAqBU,UAAU,UAAW,KAAMd,KAAKN,YAAYO,EAAE,sBACxED,KAAK2nB,OAAOwf,SAAS,CAACnnC,KAAK2tC,cAAe,CAAEN,YAAa,CAAExtB,MAAO7f,KAAK6f,S,gEAI/E,YAAAwlE,eAAA,SAAemD,GACXxoF,KAAKI,qBAAqB6qB,WAAW,uCACrCjrB,KAAKglF,cAAgBhlF,KAAKglF,aAC1B50E,SAAS80B,eAAesjD,EAAe,uBAAyB,kBAAkBv0E,SAGtF,YAAAm/C,uBAAA,sBAC8C,MAAtCpzD,KAAKqzD,+BACLhE,aAAarvD,KAAKqzD,+BAEtBrzD,KAAKqzD,8BAAgC33C,YAAW,WAC5C,IAAMs3C,EAAiB,EAAKj2B,0BAA0B4N,iBAAiB,EAAKllB,eACxE,EAAKwtC,gCACT,EAAKzjB,oBAAwC,MAAlBwjB,EAAyB,KAAOA,EAAepoB,QAC3E,MAGC,YAAAqoB,6BAAR,WACI,IAAIxoB,EAAsB,GACpBC,EAAa1qC,KAAK6f,MAAMpb,QAAQ,KAOtC,OANIimC,GAAc,IACdD,EAAYA,EAAU9pC,OAAOX,KAAK6f,MAAM5Z,OAAO,EAAGykC,GAAYtnC,OAAOsH,cAAcrF,MAAM,kBAE5E,MAAbrF,KAAK+G,MAA8B,KAAd/G,KAAK+G,OAC1B0jC,EAAYA,EAAU9pC,OAAOX,KAAK+G,KAAK3D,OAAOsH,cAAcrF,MAAM,OAE/DolC,GAEf,EA/IA,GAAa,EAAAgF,qB,8ECXb,MAaI,SAAY5vB,EAAe9Y,EAAc6e,EAA4BgnC,EAA4BhuD,EAC7F64B,EAAcC,EAAuBoX,GACrC9uC,KAAK+G,KAAOA,EACZ/G,KAAK6f,MAAQA,EACb7f,KAAK4lB,mBAAqBA,EAC1B5lB,KAAK4sD,mBAAqBA,GAA0C,KACpE5sD,KAAKpB,IAAMA,EACXoB,KAAKy3B,IAAMA,EACXz3B,KAAK03B,cAAgBA,EACrB13B,KAAK8uC,YAAcA,GAtBd,EAAAw5C,mB,ySCJb,kW,kFAAY,iB,sBAAZ,sWAEwC,mCAAK,iHAAgD,uCAAS,oFAAmB,2CAAa,kGAAiC,6CAA6B,2CAAa,4FAA0B,+CAAiB,yFAAuB,mDAAqB,0FAAwB,uDAAyB,oFAAmB,6CAAiC,uDAAyB,khB,0PAAgE,sB,uBAAhE,k4BAAiL,uDAAyB,qGAAoC,6CAAwC,mDAA2B,mDAAqB,kEAAI,mDAAqB,sFAAoB,uDAAyB,sJAA6F,2DAA6B,gFAA8B,6CAA0B,2DAA6B,mIAAiC,cAAoD,uDAAkC,uDAAyB,wM,iOAAwE,qGAA6E,mDAA2B,+CAAuB,2CAAmB,uCAAe,mCAAW,+BAAQ,gCAAC,gCAF94C,QAAkC,EAE9B,aAAka,SAAoF,IAApF,SAAmD,QAAa,EAAmB,OAAnF,SAAyH,IAAzH,SAAwJ,SAAmlB,SAAG,QAAc,cAFlqC,qMAEuK,sEAAqM,sEAA0D,2OAA8O,6EAA8J,SAAmE,YAAyB,SAA8B,SAAM,YAAuB,SAAC,gEAAwF,mFAAjC,SAAiC,GAA+G,gDAAwE,mE,8yDCAztC,aAMA,aAOI,WAAsB3gE,EAA0BjoB,EAClCwZ,EAAkC9Y,GAD1B,KAAAunB,SAA0B,KAAAjoB,cAClC,KAAAwZ,aAAkC,KAAA9Y,uBAPhD,KAAAyf,MAAgB,GAGN,KAAA8tB,aAAe,QA8B7B,OAxBU,YAAAnoB,OAAN,W,0FACI,GAAkB,MAAdxlB,KAAK6f,OAAgC,KAAf7f,KAAK6f,MAG3B,OAFA7f,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,kBACvB,IAEJ,IAAiC,IAA7BD,KAAK6f,MAAMpb,QAAQ,KAGnB,OAFAzE,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,iBACvB,I,iBAKA,O,sBADAD,KAAK6lB,YAAc7lB,KAAKkZ,WAAWuoD,iBAAiB,IAAI,EAAAgnB,oBAAoBzoF,KAAK6f,QACjF,GAAM7f,KAAK6lB,a,cAAX,SACA7lB,KAAKI,qBAAqB6qB,WAAW,kBACrCjrB,KAAKI,qBAAqBU,UAAU,UAAW,KAAMd,KAAKN,YAAYO,EAAE,mBACzC,MAA3BD,KAAKgwC,mBACLhwC,KAAKgwC,qBACiB,MAAfhwC,KAAK2nB,QACZ3nB,KAAK2nB,OAAOwf,SAAS,CAACnnC,KAAK2tC,e,4DAI3C,EAlCA,GAAa,EAAAgC,iB,8ECRb,MAGI,SAAY9vB,GACR7f,KAAK6f,MAAQA,GAJR,EAAA4oE,uB,4VCAb,0V,kFAAM,iB,sBAAN,+OAEK,mCAAK,iHAAgD,uCAAS,oFAAmB,2CAAa,6FAA4B,+CAAiB,+HAA8D,2CAAiB,2CAAa,uGAAsC,6CAAkC,2CAAa,4FAA0B,+CAAiB,yFAAuB,mDAAqB,0FAAwB,uDAAyB,6FAA4B,6CAA+B,uDAAyB,sFAAoB,2DAA6B,qhB,0PAAmK,sB,gCAAnK,k4BAAuQ,2DAA6B,6IAAwJ,UAA3B,c,8BAA7H,sIAAgD,cAAwG,+DAAiC,4PAA2E,0CAAwE,2DAAsC,uDAA+B,uDAAyB,qGAAoC,qGAAuH,mDAA2B,mDAAqB,kEAAI,mDAAqB,sFAAoB,uDAAyB,6HAAwD,2DAA6B,oHAAmD,qGAAkF,uDAAyB,yKAA+F,UAAnB,c,sBAA5E,wBAA+F,qGAAkF,mDAA2B,+CAAuB,2CAAmB,uCAAe,mCAAW,+BAAQ,gCAAC,gCAA3+C,SAAgO,IAAhO,SAAyG,iBAA0D,EAA4B,gBAA/L,SAAyO,IAAzO,SAAsP,IAA8F,4FAAhD,SAAgD,GAA4I,IAAwE,6BAAmE,cAA9I,SAAG,WAAwE,MAAmE,gCAFzrC,qMAEkR,2EAAmN,oEAAyG,SAA2B,+DAA3B,kOAAkvB,sGAAqX,gEAA0M,mE,m8DCW/3D,YAEA,SAGA,QAEA,aAcI,WAAsB9gE,EAA0BjoB,EAClCU,EAAsDuV,EACtDuU,EAAoC5E,EACpC4U,EAA0C0V,EAC1Ct4B,EAAkDC,GAJ1C,KAAAoQ,SAA0B,KAAAjoB,cAClC,KAAAU,uBAAsD,KAAAuV,mBACtD,KAAAuU,cAAoC,KAAA5E,gBACpC,KAAA4U,iBAA0C,KAAA0V,sBAC1C,KAAAt4B,qBAAkD,KAAAC,eAjBhE,KAAAkO,eAAyB,GACzB,KAAAstD,IAAc,GACd,KAAAiS,cAAwB,EAExB,KAAA0D,SAAmB,EACnB,KAAAC,iBAA2B,GAEjB,KAAAh7C,aAAuB,QAGzB,KAAAi7C,mBAAqB,EAoHjC,OA3GU,YAAA7mF,SAAN,W,oGACkB,OAAd,EAAA/B,KAAc,GAAMA,KAAK4vC,oBAAoB8zC,gB,OAEhC,OAFb,EAAKmF,OAAS,SACd7oF,KAAK0oF,QAAW1oF,KAAK6oF,OAAO,IAAkD,MAA5C7oF,KAAK4vC,oBAAoBl9B,iBAA4B1S,KAAK6oF,OAAO,GACnG,EAAA7oF,KAAa,GAAMA,KAAKkqB,YAAYoP,Y,cAApC,EAAKzZ,MAAQ,SAEG,OADZipE,EAAW9oF,KAAKsX,mBAAmBggE,oBAEnCwR,EAAW,yBAEf9oF,KAAK2oF,iBAAmB,EAAA7jF,MAAMC,YAAY+jF,G,YAGxC,YAAAtjE,OAAN,W,oHACI,OAAIxlB,KAAK0oF,SAAwB,MAAZ1oF,KAAK+yE,KAA4B,KAAb/yE,KAAK+yE,IAKzC/yE,KAAK0oF,SAAmC,MAAvB1oF,KAAKylB,gBAAkD,KAAxBzlB,KAAKylB,eAM9C,GAAMzlB,KAAKkqB,YAAYioC,WAL/BnyD,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,uBACvB,MAPAD,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,gBACvB,K,OASkB,OADhBw3B,EAAM,SACU,GAAMz3B,KAAKkqB,YAAYkoC,oB,UAAvC16B,EAAgB,UAElB13B,KAAK0oF,QAAL,aACIK,GAAS,E,gDAEL/oF,KAAK6oF,OAAO,GACA,GAAM7oF,KAAKslB,cAAcwtD,eAAe9yE,KAAK+yE,IAAK/yE,KAAK6f,MAAO4X,EAAKC,EAC3E13B,KAAK4vC,oBAAoBl9B,kBAF7B,O,OAGe,OAFT9T,EAAM,SAEG,GAAMoB,KAAKslB,cAAc+rD,UAAUzyE,I,OAC7B,OADf4xD,EAAS,SACM,GAAMxwD,KAAKk6B,eAAez7B,IAAY,EAAA8S,iBAAiBoB,e,OAC7D,OADTA,EAAe,SACN,GAAM3S,KAAKslB,cAAc0E,cAAc,IAAI,EAAAxV,aAAa7B,GAAe69C,I,cAAhFw4B,EAAS,UACfD,EAASC,IAAWhpF,KAAK+yE,KACrB,MACA,GAAM/yE,KAAKipF,kBAAkBrqF,I,OAA7B,S,sCAGQ,SAAMoB,KAAKslB,cAAcwtD,eAAe9yE,KAAK+yE,IAAK/yE,KAAK6f,MAAO4X,EAAKC,I,QAE/E,OAFM94B,EAAM,SACZmqF,GAAS,EACT,GAAM/oF,KAAKipF,kBAAkBrqF,I,QAA7B,S,wDAGJmqF,GAAS,E,eAGb,GAAIA,EAAQ,CAER,GADA/oF,KAAK4oF,qBACD5oF,KAAK4oF,oBAAsB,EAE3B,OADA5oF,KAAK2V,iBAAiBkB,KAAK,UAC3B,IAEJ7W,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,e,qBAGf,SAAMD,KAAKslB,cAAcyS,QAAQ/3B,KAAKylB,eAAgBzlB,KAAK6f,MAAO4X,EAAKC,I,QACnE,OADV94B,EAAM,SACI,GAAMoB,KAAKslB,cAAcK,aAAa3lB,KAAKylB,eAAgB7mB,I,QACrD,OADhBqyE,EAAU,SACM,GAAMjxE,KAAKslB,cAAc8rD,c,eAE1B,OAFf8X,EAAgB,WAEkB,MAAXjY,GAAmBiY,IAAkBjY,EAA9D,OACIjxE,KAAK6oF,OAAO,GACS,GAAM7oF,KAAKk6B,eAAez7B,IAAY,EAAA8S,iBAAiBoB,eAD5E,O,QAEe,OADTA,EAAe,SACN,GAAM3S,KAAKslB,cAAc+rD,UAAUzyE,I,QACnC,OADT4xD,EAAS,SACA,GAAMxwD,KAAKslB,cAAc0E,cAAc,IAAI,EAAAxV,aAAa7B,GAAe69C,I,QACvE,OADTw4B,EAAS,SACA,GAAMhpF,KAAKslB,cAAc2tD,WAAW+V,EAAQhpF,KAAK6f,MAAO4X,EAAKC,I,QACjC,OADrCw7C,EAAS,SACf,EAAAlzE,KAAK4vC,oBAAsC,GAAM5vC,KAAKslB,cAAckgB,QAAQ5mC,EAAIA,IAAKs0E,I,QAArF,EAAyBxgE,gBAAkB,S,0BAE/C1S,KAAKipF,kBAAkBrqF,G,eAEvBoB,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,0B,qCAK7B,YAAA22B,OAAN,W,0FACsB,SAAM52B,KAAKI,qBAAqByqB,WAAW7qB,KAAKN,YAAYO,EAAE,sBAC5ED,KAAKN,YAAYO,EAAE,UAAWD,KAAKN,YAAYO,EAAE,UAAWD,KAAKN,YAAYO,EAAE,Y,cADjE,UAGdD,KAAK2V,iBAAiBkB,KAAK,U,YAInC,YAAAwuE,eAAA,WACIrlF,KAAKI,qBAAqB6qB,WAAW,qCACrCjrB,KAAKglF,cAAgBhlF,KAAKglF,aAC1B50E,SAAS80B,eAAellC,KAAK0oF,QAAU,MAAQ,kBAAkBz0E,SAGvD,YAAAg1E,kBAAd,SAAgCrqF,G,0FAC5B,SAAMoB,KAAKslB,cAAciU,OAAO36B,I,cAAhC,SACAoB,KAAKmpF,a,YAGK,YAAAA,WAAd,W,gGAC2B,SAAMnpF,KAAKk6B,eAAez7B,IAAa,EAAA8S,iBAAiBI,oB,OAC/E,OADMwzE,EAAiB,SACvB,GAAMnlF,KAAKuX,aAAag2B,KAAK,EAAAh8B,iBAAiBI,oBAAqBwzE,I,cAAnE,SACAnlF,KAAK2V,iBAAiBkB,KAAK,YACI,MAA3B7W,KAAKgwC,mBACLhwC,KAAKgwC,qBACiB,MAAfhwC,KAAK2nB,QACZ3nB,KAAK2nB,OAAOwf,SAAS,CAACnnC,KAAK2tC,e,YAGvC,EA/HA,GAAa,EAAAsC,iB,kQCpBb,iHACW,mCAAK,mEAChB,uCAAS,6IAAqE,uCAAS,uFAAuB,2CAAa,mJAAkD,cAAoD,2CAAa,uFAAsB,6CAA2B,uCAAa,mCAAW,+BAAO,+BAAC,oBAAlJ,kFAAlD,QAAkD,GAAuF,oE,+lBCFpQ,MAII,SAAYxrB,EAAgB9G,GACxB3d,KAAKykB,OAASA,EACdzkB,KAAK2d,MAAQA,GANR,EAAAyyB,sB,4OCAb,iHAEM,mCAAK,mEAAK,uCAAS,6IAAqE,uCAAS,uFAAuB,2CAAa,mJAAkD,aAAoD,2CAAa,uFAAsB,6CAA2B,uCAAa,mCAAW,+BAAC,oBAA3I,wFAAlD,QAAkD,GAAuF,2E,gCAA2D,wFAAmD,mCAAK,iHAAgD,uCAAS,oFAAmB,2CAAa,iGAAiC,2CAAiC,2CAAa,4FAA0B,+CAAiB,yFAAuB,mDAAqB,wFAAuB,oFAA6D,8FAA6B,gCAAkB,mDAAyB,mDAAqB,iEAAG,6CAAqC,mDAAqB,kEAAI,mDAAqB,sFAAoB,uDAAyB,oL,8PAAkB,sBAAiE,qGAA4E,uDAAyB,sM,8PAA0B,sBAAuG,qGAAoF,mDAA2B,+CAAuB,2CAAmB,uCAAe,mCAAW,gCAAC,gCAA3d,aAA8B,OAAhD,SAAkB,EAAf,KAA+M,iBAA8B,OAAxD,SAA0B,EAAvB,gBAAsB,gCAA1oB,0EAA4J,oBAA0F,kBAAmE,qFAAgI,gDAAmF,sEAAqG,gDAAiI,iF,qEAFnvC,oIAE8U,+BAAC,oIAA8lC,gCAAC,gCAF96C,QACW,EACN,SAA0U,SAAuB,cAA2B,gB,4nBCFjY,mBAAa,EAAAG,iC,kUCAb,mW,kFAAY,iB,sBAAZ,sWAEwC,mCAAK,iHAAgD,uCAAS,oFAAmB,2CAAa,kGAAiC,6CAAsC,2CAAa,oFAAkB,+CAAiB,yFAAuB,mDAAqB,iEAAG,uEAA+D,2KAA8H,6CAA0B,mDAAyB,mDAAqB,0FAAwB,uDAAyB,oFAAmB,6CAAiC,uDAAyB,khB,0PAAgE,sB,uBAAhE,k4BAAiL,mDAA2B,mDAAqB,0FAAwB,uDAAyB,6FAA4B,6CAA+B,uDAAyB,yf,0PAAkH,sB,gCAAlH,+xBAAyK,mDAA2B,mDAAqB,0FAAwB,uDAAyB,2FAA0B,6CAAsC,uDAAyB,ggB,0PAAyH,sB,8BAAzH,+xBAA8K,mDAA2B,mDAAqB,kEAAI,mDAAqB,sFAAoB,uDAAyB,sJAA6F,2DAA6B,oEAAM,6CAA0B,2DAA6B,mIAAiC,cAAoD,uDAAkC,uDAAyB,wM,iOAAwE,qGAA6E,mDAA2B,+CAAuB,2CAAmB,uCAAe,mCAAW,+BAAQ,gCAAC,gCAFhuE,QAAkC,EAE9B,aAA2qB,SAAoF,IAApF,SAAmD,QAAa,EAAmB,OAAnF,SAAyH,IAAzH,SAAwJ,SAA8M,SAA+I,IAA/I,SAA2C,iBAAuE,EAA4B,gBAA9I,SAAwJ,IAA2M,SAAoJ,IAApJ,SAAyE,eAAgD,EAA0B,cAAnJ,SAA6J,IAA8c,SAAG,QAAc,cAFp/D,qMAEuK,+EAAqI,mFAA6L,mEAA4I,sEAA0D,2OAA8S,oEAAwD,2OAAoS,2EAA+D,2OAAoS,SAAmE,YAAyB,SAAoC,gEAAwF,mFAAjC,SAAiC,GAA+G,gDAAwE,mE,u6BCF3iE,IAEA,2B,+CAGA,OAH8C,OAG9C,EAHA,CAFA,MAE8Cx9B,6BAAjC,EAAA89B,4B,iTCFb,kW,kFAAY,iB,sBAAZ,sWAEwC,mCAAK,iHAAgD,uCAAS,oFAAmB,2CAAa,kGAAiC,6CAA8B,2CAAa,oFAAkB,+CAAiB,yFAAuB,mDAAqB,iEAAG,6CAAkC,mDAAqB,0FAAwB,uDAAyB,oFAAmB,6CAAiC,uDAAyB,khB,0PAAgE,sB,uBAAhE,k4BAAiL,mDAA2B,mDAAqB,kEAAI,mDAAqB,sFAAoB,uDAAyB,sJAA6F,2DAA6B,oEAAM,6CAA0B,2DAA6B,mIAAiC,cAAoD,uDAAkC,uDAAyB,wM,iOAAwE,qGAA6E,mDAA2B,+CAAuB,2CAAmB,uCAAe,mCAAW,+BAAQ,gCAAC,gCAFp0C,QAAkC,EAE9B,aAAqd,SAAoF,IAApF,SAAmD,QAAa,EAAmB,OAAnF,SAAyH,IAAzH,SAAwJ,SAAsd,SAAG,QAAc,cAFxlC,qMAEuK,uEAA6H,2EAA2H,sEAA0D,2OAAuS,SAAmE,YAAyB,SAAoC,gEAAwF,mFAAjC,SAAiC,GAA+G,gDAAwE,mE,+hBCF/oC,mBAAa,EAAAG,wB,gTCAb,kW,kFAAY,iB,sBAAZ,sWAEwC,mCAAK,iHAAgD,uCAAS,oFAAmB,2CAAa,kGAAiC,6CAA8B,2CAAa,oFAAkB,+CAAiB,yFAAuB,mDAAqB,8NAA4B,0CAA+C,mDAAqB,wFAAuB,uDAAyB,sEAAQ,gCAAkB,mDAAyB,mDAAqB,iEAAG,6CAAyC,mDAAqB,kEAAI,mDAAqB,sFAAoB,uDAAyB,qJAA4F,2DAA6B,oEAAM,6CAAiC,2DAA6B,mIAAiC,cAAoD,uDAAkC,uDAAyB,wM,iOAAwE,qGAA6E,mDAA2B,+CAAuB,2CAAmB,uCAAe,mCAAW,+BAAQ,gCAAC,cAF1sC,QAE0sC,YAAtsC,aAA6R,SAAa,WAA+pB,SAAG,QAAc,gCAF99B,qMAEuK,uEAAsJ,8EAA4H,kBAAmE,kFAAoI,SAAkE,YAAyB,SAAoC,uEAA+F,mFAAjC,SAAiC,GAA+G,gDAAwE,mE,wnBCFrhC,MAII,SAAYvsB,EAAgB9G,GACxB3d,KAAKykB,OAASA,EACdzkB,KAAK2d,MAAQA,GANR,EAAAwzB,8B,kPCAb,oOAAyB,+BAAC,0OACN,+BACpB,kMAAyB,gCAAC,cAF1B,SAA0B,SAE1B,WAAY,M,+zBCAwxB,mEAA4C,2DAA6B,6IAA4C,aAAoF,2DAA6B,sFAAsB,2CAA2B,uDAAyB,oBAA3L,wFAA5C,QAA4C,GAAuI,wE,gCAAovB,0K,kCAA+C,c,wBAA/C,iFAAqF,+DAAiC,oHAAoD,4M,gCAAwH,0K,kCAA+C,c,yBAA/C,iFAAsF,+DAAiC,wHAAwD,6M,gCAAyH,8HAA0E,UAAxC,c,2BAAlC,wBAA0E,+DAAiC,mHAAmD,+M,gCAAymC,yJAAoG,UAAvC,c,yBAA7D,wBAAoG,uDAAyB,mHAAmD,6J,gCAAogB,uGAA4D,+CAAiB,+GAA+C,mDAAqB,sHAAsD,8DAAmD,+CAAiB,uFAAuB,mDAAqB,iEAAG,6CAA6C,mDAAqB,+JAAwF,UAAtB,c,yBAAlE,wBAAwF,6FAAuF,+CAAuB,2CAAa,oBAAxY,4EAAmH,6FAA0J,uF,gCAA8I,kRAA+D,W,gCAAgC,uGAAkE,+CAAiB,+GAA+C,mDAAqB,sHAAsD,8DAAkD,+CAAiB,uFAAuB,mDAAqB,iEAAG,6CAAkC,mDAAqB,iNAA4J,6FAA4E,+CAAuB,2CAAa,oBAArb,2EAAkH,kFAAmN,iF,gCAAmI,uGAAiE,+CAAiB,+GAA+C,mDAAqB,mHAAmD,8DAA8C,+CAAiB,wFAAuB,mDAAqB,iEAAG,6CAA6C,mDAAqB,8M,iOAA8E,6FAAwE,+CAAuB,4CAAa,cAA1L,SAA+C,wBAA8B,cAA7P,uEAA8G,6FAAkE,gDAA8E,6E,w1CAFtjM,uGAAoC,mCAChC,oFACJ,uCAAS,oFAAmB,2CAAa,iUAA8c,UAAzb,qB,oCAAwC,2B,+BAAyD,4B,iCAAiD,wB,gCAA4D,oB,yBAA4B,qB,8BAAuD,4B,oCAAoD,4B,iCAAiE,uB,6BAA3a,ggBAA8c,2CAAmC,uCAAe,uCAAS,qFAAmB,2CAAa,kGAAgC,+CAAiB,kEAAI,yFAA8D,8MAAsE,uDAAyB,qIAA+T,mDAA6B,+CAAsB,+CAAiB,8FAA4B,mDAAqB,oHAA2C,uDAAyB,2WAAgO,cAAoC,2DAA6B,6GAA4C,uDAAkC,uDAAyB,yJAAmF,2DAA6B,qIAAqQ,2DAA6B,qIAA2Q,2DAA6B,qIAA4P,2DAA6B,2IAAqE,UAAvB,c,0BAA9C,wBAAqE,+DAAiC,uHAAsD,6GAAuI,2DAA6B,+FAAoC,2DAA6B,2K,mCAA+C,c,2BAA/C,kFAAyE,+DAAiC,8HAA6D,6GAAwF,2DAA6B,2K,mCAA+C,c,2BAA/C,kFAA0E,+DAAiC,8HAA6D,6GAA0F,uDAA+B,mDAA2B,mDAAqB,qIAAkO,+CAAuB,2CAAmB,2CAAa,oPAAkU,UAA/S,wB,2BAAuD,6B,sCAAuD,oB,yBAA4C,uB,4BAAuC,6B,sCAAuE,uB,4BAA3R,scAAkU,2CAAiC,uCAAe,uCAAS,qFAAmB,2CAAa,qIAAqlB,2CAAa,sIAAkF,2CAAa,sIAAwoB,2CAAa,sIAAyjB,2CAAa,qFAAkB,+CAAiB,kGAAgC,2FAAoE,kTAA6I,eAAsC,uDAAyB,4HAA0D,mDAAyB,+CAAuB,+CAAiB,yFAAuB,mDAAqB,2UAAsD,+CAAuB,2CAAmB,uCAAe,mCAAW,+BAAO,+BAAC,iEAAwC,+BAAC,mEAA0C,+BAAC,mEAA0C,+BAAC,2DAAkC,+BAAC,iEAAwC,+BAAC,wEAA+C,+BAAC,0EAAgD,+BAAC,wEAA6C,+BAAC,yEAA8C,+BAAC,yEAA8C,gCAAC,gCAApiN,SAAsB,EAA+C,gCAA0B,SAAc,aAA6B,SAA6qB,mFAAhO,SAAgO,GAAwR,UAAoE,EAAgB,SAA8M,UAAqE,EAAgB,SAAmN,SAA0D,EAAe,SAA8rC,UAAmF,EAAgB,SAAilB,SAAsC,EAAqB,eAAuiB,UAAkB,EAAuB,iBAAsD,UAAsC,EAA2B,qBAAolB,UAAsC,EAA0B,oBAA0xB,uFAA7I,UAA6I,GAAsO,WAAmB,MAAc,gCAAzkM,6DAA4oE,8GAA4Y,mEAA6R,qEAA4zF,6E,61BCFxvM,kGAAiC,mCAChC,+GAC0B,uCAAS,yHAAyD,kDAAoC,mCAAK,wFAAuB,uCAAS,iEAAG,6CAAgC,uCAAS,mMAA+K,UAAjB,c,oBAA9J,gJAA+K,2CAAa,mIAAiC,cAAoD,2CAAa,oEAAM,6EAA2D,uCAAkB,mCAAW,+BAAO,gCAAC,cAApY,SAAoY,YAApQ,gCAArP,kEAA4E,yEAAyC,SAAiI,aAA4B,SAAgE,mFAAjC,SAAiC,GAAuE,sE,+rBCA6U,+LAAI,sBAA8D,+CAAiB,gJ,kCAAyB,c,+BAAzB,iFAAqD,mDAAqB,kGAAsC,6DAA2C,4CAAa,kBAAvP,UAAuP,YAAhN,mBAA3C,QAAI,MAAuC,cAAwJ,0E,gCAA0E,+LAAI,sBAAsD,+CAAiB,gJ,kCAAyB,c,2BAAzB,iFAAiD,mDAAqB,qGAAyC,6DAAuC,4CAAa,kBAA1O,UAA0O,YAAvM,eAAvC,QAAI,MAAmC,cAAmJ,sE,gCAAwxC,sFAAsC,2CAAa,kIAAiC,aAAoD,2CAAa,sFAAsB,2CAA2B,uCAAS,oBAA3H,wFAAjC,QAAiC,GAAuF,wE,gCAAusC,2L,kCAAoG,c,yDAApG,qIAAiI,YAAjI,0DAA8N,mEAAqC,qHAAqD,gEAAiC,cAAxN,uHAAjI,QAAiI,KAAsC,M,gCAA0W,mEAAsF,+DAAiC,W,gCAA3O,iGAAmF,+DAAiC,gNAAc,yBAAwH,4DAA6B,cAArJ,mDAAd,QAAc,uCAAuE,M,gCAAhsC,+LAA0D,sBAAuE,2DAA6B,qFAAoB,+DAAiC,uHAAsP,UAA3B,c,gDAA3N,uKAA4F,iDAAxE,aAAsO,+DAAiC,iJ,mCAAyB,c,oDAAzB,kFAAwD,gCAAmB,+DAAiC,qIAA6V,2DAAmC,2DAA6B,qIAA4R,wDAAyB,gCAAlvC,4DAAsE,kBAAhI,QAA0D,GAA4J,IAAyF,mEAA0F,yBAAtL,QAAG,WAAyF,GAA2S,SAA4M,EAAiB,2BAAgM,SAAiC,sDAAiD,0CAAl2B,oHAApB,QAAoB,GAA+T,2C,gCAA/jB,uDAAyB,gKAAizC,oDAAqB,cAAt0C,QAAI,EAAyB,2B,gCAA40C,mEAAyF,mDAAqB,W,gCAAz+D,oEAAkC,+CAAiB,oFAAmB,uFAA8D,+K,kCAAoD,c,yBAApD,qIAAkG,YAAlG,0DAAwI,uDAAyB,oHAAmD,mDAAyB,+CAAsB,+CAAiB,kGAAiC,mDAAqB,yDAAw5C,mDAAqB,iNAAc,0BAA+G,+CAAsB,4CAAa,gCAArzD,6FAAlG,QAAkG,GAAmqD,gCAAd,SAAc,mBAA0E,cAA74D,+E,gCAAw2F,mEAA8H,+DAAiC,W,gCAAnR,iGAAmF,+DAAiC,gNAAkD,yBAA4H,4DAA6B,cAAzJ,mDAAlD,QAAkD,sCAA2E,M,gCAApuB,+LAAkC,sBAAyD,2DAA6B,uHAA8O,UAA3B,c,gDAAnN,uKAAwF,iDAApE,aAA8N,2DAA6B,gJ,mCAAyB,c,wDAAzB,kFAA4D,gCAAmB,2DAA6B,qIAAoU,wDAAyB,gCAA9yB,0CAAwD,sBAA1F,QAAkC,GAAyF,IAAqF,mEAA0F,yBAAlL,QAAG,WAAqF,GAAmS,SAAiC,sDAAiD,0CAAzb,oHAApB,QAAoB,GAAuT,2C,gCAA5d,uDAAyB,gKAAq1B,oDAAqB,cAA12B,QAAI,EAA6B,2B,gCAA42B,mEAAiG,mDAAqB,W,gCAAnxC,oEAA2E,+CAAiB,iEAAI,2CAA6B,+CAAiB,iGAAiC,mDAAqB,6DAAo8B,mDAAqB,iNAAc,0BAAuH,+CAAsB,4CAAa,kBAA1J,WAA0J,YAA1J,mBAAd,SAAc,kBAAkF,cAA7pC,mF,gCAAjsE,mEAA6B,2CAAa,oIAA0iE,2CAAa,oIAAo1C,wCAAS,gCAAp5G,QAAc,EAAmB,aAAshE,QAAc,oCAA4D,4B,qEAFz6J,kGAAgC,mCAChC,gGACW,+DAAsC,sSAAyH,aAAsC,2CAAa,2HAA0D,uCAAa,mCAAW,mCAAK,yFAAuB,uCAAS,2d,0PAAgI,sB,4BAAyB,c,iCAAzJ,8jBAAqB,cAAkM,uCAAS,4FAA0B,2CAAa,iMAAI,uBAAkC,+CAAiB,iJ,mCAAyB,c,yBAAzB,kFAA+C,mDAAqB,iGAAoC,+DAA0C,2CAAkB,2CAAa,qIAAgQ,2CAAa,qIAAmP,uCAAc,uCAAS,kEAAI,6CAAuB,uCAAS,4FAA0B,2CAAa,iMAAI,uBAAwD,+CAAiB,iJ,mCAAyB,c,4CAAzB,kFAAgE,mDAAqB,oGAAuC,+DAA2C,2CAAkB,2CAAa,iMAAI,uBAAuD,+CAAiB,iJ,mCAAyB,c,2CAAzB,kFAA+D,mDAAqB,0GAA6C,+DAA0C,2CAAkB,2CAAa,iMAAI,uBAA2D,+CAAiB,iJ,mCAAyB,c,+CAAzB,kFAAmE,mDAAqB,wGAA2C,+DAA8C,2CAAkB,2CAAa,iMAAI,uBAA6D,+CAAiB,iJ,mCAAyB,c,iDAAzB,kFAAqE,mDAAqB,4GAA+C,+DAAgD,2CAAkB,uCAAc,uCAAS,sIAAmN,uCAAS,sIAA68G,mCAAW,+BAAO,gCAAC,gCAApjM,+EAAzH,QAAyH,GAA0K,SAAgI,EAAwB,YAAxJ,SAA0M,IAAiE,iBAAiC,aAArC,SAAI,GAAoO,SAA4C,EAAqB,eAA4M,SAAwC,EAAiB,WAAgS,kCAAuD,kBAA3D,SAAI,GAAmR,kCAAsD,iBAA1D,SAAI,GAAsR,kCAA0D,qBAA9D,SAAI,GAAgS,kCAA4D,uBAAhE,SAAI,GAAgT,WAAG,EAAe,QAA0M,UAAc,EAAc,2CAA/wF,0DAA8V,4GAArB,SAAqB,EAArB,oMAAsa,kEAAomB,+DAAgR,mEAAuR,kEAA4R,sEAAwS,2E,kxECFz8E,WAMA,QAYA,QAEA,aAgCI,WAAsBnX,EAAgDC,EACxDC,EAA0ChQ,GADlC,KAAA8P,oBAAgD,KAAAC,gBACxD,KAAAC,iBAA0C,KAAAhQ,cAhC/C,KAAAk/D,aAAc,EACd,KAAAC,iBAAkB,EAClB,KAAAC,eAAgB,EAChB,KAAAC,WAAY,EAEX,KAAAC,aAAe,IAAI,EAAA9oE,aACnB,KAAA+oE,mBAAqB,IAAI,EAAA/oE,aACzB,KAAAgpE,eAAiB,IAAI,EAAAhpE,aACrB,KAAAipE,oBAAsB,IAAI,EAAAjpE,aAC1B,KAAAkpE,gBAAkB,IAAI,EAAAlpE,aACtB,KAAAmpE,YAAc,IAAI,EAAAnpE,aAClB,KAAAopE,aAAe,IAAI,EAAAppE,aACnB,KAAAqpE,oBAAsB,IAAI,EAAArpE,aAMpC,KAAA4J,QAAkB,EAClB,KAAA0Q,WAAa,EAAA9yB,WACb,KAAAsqC,aAAuB,EACvB,KAAAK,mBAA6B,EAC7B,KAAAF,eAAyB,EACzB,KAAAI,aAA2B,KAC3B,KAAAE,gBAA0B,EAC1B,KAAAC,iBAA2B,KAC3B,KAAAE,qBAA+B,KAsHnC,OA9GU,YAAAz7B,KAAN,SAAWqyE,G,YAAA,IAAAA,OAAA,G,2FACQ,SAAMhqF,KAAKkqB,YAAYmP,a,OAEX,OAFrB5U,EAAS,SACfzkB,KAAKqS,sBAAwB,EAAAd,iBAAiBc,sBAAwB,IAAMoS,EACjD,GAAMzkB,KAAKk6B,eAAez7B,IAAcuB,KAAKqS,wB,OAOxE,OAPM43E,EAAqB,SAEvBjqF,KAAKiqF,mBADiB,MAAtBA,EAC0B,IAAIphB,IAEJ,IAAIA,IAAIohB,GAGtC,GAAMjqF,KAAKk1C,e,OACX,OADA,SACA,GAAMl1C,KAAKygD,mB,cAAX,SAEIupC,IACAhqF,KAAKsqB,QAAS,G,YAIhB,YAAAm2B,gBAAN,SAAsBniC,G,kGAClB,OAAKte,KAAKqpF,gBAGU,GAAMrpF,KAAKg6B,kBAAkBgQ,mBAF7C,I,OAQqB,OANnBvjC,EAAc,SAEhBzG,KAAKyG,YADa,MAAlB6X,EACmB7X,EAAYe,QAAO,SAACuG,GAAM,OAAAA,EAAEuQ,iBAAmBA,KAE/C7X,EAEvB,EAAAzG,KAAyB,GAAMA,KAAKg6B,kBAAkB0nB,aAAa1hD,KAAKyG,c,cAAxE,EAAKk7C,kBAAoB,S,YAGvB,YAAAzM,YAAN,W,kGACI,OAAKl1C,KAAKopF,aAGV,EAAAppF,KAAe,GAAMA,KAAKi6B,cAAc+P,oBAFpC,I,OAGiB,OADrB,EAAKtjC,QAAU,SACf,EAAA1G,KAAqB,GAAMA,KAAKi6B,cAAcynB,gB,cAA9C,EAAKwoC,cAAgB,S,YAGzB,YAAAhvD,UAAA,WACIl7B,KAAKmqF,kBACLnqF,KAAKwyC,aAAc,EACnBxyC,KAAKwpF,aAAa5yE,QAGtB,YAAAwzE,gBAAA,WACIpqF,KAAKmqF,kBACLnqF,KAAK6yC,mBAAoB,EACzB7yC,KAAKypF,mBAAmB7yE,QAG5B,YAAAyzE,YAAA,WACIrqF,KAAKmqF,kBACLnqF,KAAK2yC,eAAgB,EACrB3yC,KAAK0pF,eAAe9yE,QAGxB,YAAA0zE,WAAA,SAAWriF,GACPjI,KAAKmqF,kBACLnqF,KAAK+yC,aAAe9qC,EACpBjI,KAAK2pF,oBAAoB/yE,KAAK3O,IAGlC,YAAAsiF,aAAA,SAAapzC,GACTn3C,KAAKmqF,kBACLnqF,KAAKizC,gBAAiB,EACtBjzC,KAAKkzC,iBAAmBiE,EAAOv3C,GAC/BI,KAAK4pF,gBAAgBhzE,KAAKugC,IAG9B,YAAApuC,UAAA,WACI/I,KAAK6pF,YAAYjzE,QAGrB,YAAAu+B,WAAA,SAAWgC,GACPn3C,KAAK8pF,aAAalzE,KAAKugC,IAG3B,YAAAqzC,iBAAA,SAAiB3jF,GACb7G,KAAKmqF,kBACLnqF,KAAKozC,qBAAuBvsC,EAAWjH,GACvCI,KAAK+pF,oBAAoBnzE,KAAK/P,IAGlC,YAAAsjF,gBAAA,WACInqF,KAAKwyC,aAAc,EACnBxyC,KAAK6yC,mBAAoB,EACzB7yC,KAAK2yC,eAAgB,EACrB3yC,KAAK+yC,aAAe,KACpB/yC,KAAKizC,gBAAiB,EACtBjzC,KAAKkzC,iBAAmB,KACxBlzC,KAAKozC,qBAAuB,MAGhC,YAAAwO,SAAA,SAASC,EAAuC4oC,GAC5C,QAD4C,IAAAA,MAAA,IACzB,MAAf5oC,EAASjiD,GAAb,CAGA,IAAMA,EAAK6qF,EAAW5oC,EAASjiD,GAC3BI,KAAK8hD,YAAYD,EAAU4oC,GAC3BzqF,KAAKiqF,mBAAmBruD,OAAOh8B,GAE/BI,KAAKiqF,mBAAmBn9C,IAAIltC,GAEhCI,KAAKk6B,eAAeqT,KAAKvtC,KAAKqS,sBAAuBrS,KAAKiqF,sBAG9D,YAAAnoC,YAAA,SAAYD,EAAuC4oC,GAC/C,YAD+C,IAAAA,MAAA,IACxCzqF,KAAKiqF,mBAAmBhzD,IAAIwzD,EAAW5oC,EAASjiD,KAE/D,EAjJA,GAAa,EAAA26B,sB,+TClB6S,wHAA+E,UAA3E,c,qDAAJ,wBAA+E,mDAAqB,wV,kJAAuB,sB,kDAAvB,mgBAA2D,gDAAiB,cAA5E,QAAuB,EAAuB,mDAA9C,wM,gCAAme,mEAAwD,uDAAyB,kL,iHAAuC,aAAmD,uDAAyB,sFAAsB,2CAA0B,mDAAqB,oBAAjJ,4GAAvC,QAAuC,GAAkG,4F,gCAAyV,mEAA+C,2DAA6B,0M,iHAA+F,aAA+D,2DAA6B,sFAAsB,2CAAsC,uDAAyB,oBAAjL,+HAA/F,QAA+F,GAAkH,+G,gCAAniB,oEAAuC,uDAAyB,kL,iHAAuC,aAAwD,uDAAyB,sFAAsB,2CAA+B,uDAAyB,qIAA2W,oDAAqB,cAAhY,SAAgY,YAAlX,wBAAgC,4CAA7M,iHAAvC,QAAuC,GAAuG,iG,gCAAoxC,0K,kCAAmF,c,4HAAnF,iFAAsK,mEAAqC,wHAAwD,gP,gCAAoI,0K,kCAA6G,c,uEAA7G,iFAAiJ,mEAAqC,6HAA6D,0O,gCAA7tB,mEAAkE,+DAAiC,oIAAsW,+DAAiC,oIAAgV,4DAA6B,cAApvB,QAA+I,EAAsB,uCAAkO,QAA+C,EAAyB,kD,gCAAymB,0K,kCAA8L,c,+CAA9L,iFAAiN,+DAAiC,oHAAoD,0N,gCAAiH,0K,kCAA2K,c,+CAA3K,iFAA8L,+DAAiC,wHAAwD,0N,gCAAiH,0K,kCAAwH,c,qDAAxH,iFAAiJ,+DAAiC,oHAAoD,gO,gCAAuH,0K,kCAAwH,c,gDAAxH,iFAA4I,+DAAiC,0HAA0D,8N,gCAAqH,0K,kCAA+C,c,iDAA/C,iFAAwF,+DAAiC,mHAAmD,4N,gCAAzkK,kEAAsC,+CAAiB,oIAAqL,+CAAiB,oHAAqD,UAAjD,c,8CAAJ,wBAAqD,mDAAqB,8NAA8C,+CAAsB,+CAAiB,sHAAqD,UAAjD,c,8CAAJ,wBAAqD,mDAAqB,+K,oFAAqC,c,+CAArC,0IAAuF,cAA8B,gCAAc,mDAAqB,qIAAwR,mDAAqB,qIAAqpB,mDAAqB,kEAAI,mDAAqB,yH,oHAAmB,gCAAsB,+CAAsB,+CAAiB,iGAA+B,mDAAqB,+GAAsC,uDAAyB,qWAA0N,cAAoC,2DAA6B,mHAAkD,uDAAkC,uDAAyB,0JAAoF,2DAA6B,qIAAs2B,2DAA6B,2K,mCAA+C,c,8CAA/C,kFAAwE,+DAAiC,yHAAwD,6GAA0F,2DAA6B,qIAA0X,2DAA6B,qIAA2W,2DAA6B,qIAAgU,2DAA6B,qIAA+T,2DAA6B,qIAAkQ,2DAA6B,uL,mCAA2D,c,yCAA3D,kFAA+E,+DAAiC,uHAAsD,6GAA2H,uDAA+B,mDAA2B,+CAAsB,4CAAa,gCAAngL,SAAyD,EAAqB,cAAkM,QAAgB,EAAY,mBAA2R,UAAc,kBAAyC,kCAAsP,SAAc,EAAwB,kCAA0jC,wGAA1N,SAA0N,GAA+R,SAAc,kDAAmD,6BAA0lC,WAA+E,yEAA8E,6BAA0P,UAAgF,wDAA0D,6BAA8P,SAA+C,uCAAwC,6BAAsQ,SAA+C,sCAAwC,cAAqQ,SAAoE,EAAmB,8CAAv7I,yGAAvF,SAAuF,GAA8B,mCAAsiC,uCAA6sD,0FAAohE,0I,gCAA3kL,2KAA4M,UAAxB,iB,wBAApL,mOAA4M,uCAAS,oEAAO,2CAAa,gKAA+jL,uCAAiB,oCAAK,cAA9zL,QAAgH,GAA8sL,YAA3oL,YAAsD,QAAI,EAAiC,6B,gCAA4nL,mEAA8B,2CAAa,6IAA4C,aAAoD,2CAAa,sFAAsB,2CAA2B,uCAAS,oBAA3H,sGAA5C,QAA4C,GAAuF,sF,gCAAoJ,gIAAiF,UAAzE,c,yBAAR,wBAAiF,+CAAiB,4FAAgC,4J,gCAA1N,mEAA6B,2CAAa,gEAAG,2CAA8B,2CAAa,oIAA+J,wCAAS,cAAxK,QAAwK,YAAxF,6BAA3H,4F,gCAAtV,sFAAsD,uCAAS,oIAAiO,uCAAS,oIAA+Q,oCAAK,gCAA9f,SAAc,EAAe,QAA6M,QAAc,EAAc,gB,gCAF1qM,mEAEqB,mCAAK,oIAAs0L,mCAAK,oIAAmkB,gCAAC,cAA/4M,QAA0D,EAA8B,qBAAmvL,SAAsB,EAA+B,6B,qEAF15L,oIAEw7M,gCAAC,gCAFz7M,QAAc,8BAEM,iB,w4BCFpB,SAOA,aAMI,WAAoBt5B,GAAA,KAAAA,KAMxB,OAH2B,YAAAypF,QAAvB,WACI1qF,KAAKiB,GAAGM,cAAckZ,IAAMza,KAAK2qF,gBAEzC,EAZA,GAGa,EAAAC,wB,g7CCVb,WAUA,aAuBI,WAAsBpwD,GAAA,KAAAA,gBAtBb,KAAAqwD,eAAyB,KACxB,KAAAC,gBAAkB,IAAI,EAAApqE,aACtB,KAAAqqE,qBAAuB,IAAI,EAAArqE,aAC3B,KAAAsqE,YAAc,IAAI,EAAAtqE,aAClB,KAAAuqE,mBAAqB,IAAI,EAAAvqE,aAEnC,KAAA4J,QAAkB,EAClB,KAAArhB,QAAwB,GACxB,KAAAiiF,aAA6B,GAE7B,KAAA7wD,kBAA4B,KAC5B,KAAA7yB,OAA0C,KAC1C,KAAA2qC,SAAmB,EAET,KAAAiQ,eAAgB,EAChB,KAAAuC,WAAY,EACZ,KAAA1pB,SAAW,IAEb,KAAAkwD,cAAqB,KACrB,KAAAC,kBAAoB,EACpB,KAAAC,YAAa,EAiGzB,OA7FU,YAAA1zE,KAAN,SAAWnQ,EAAgD2qC,G,YAAhD,IAAA3qC,MAAA,WAAgD,IAAA2qC,OAAA,G,mFAEvD,OADAnyC,KAAKmyC,QAAUA,IAAW,EAC1B,GAAMnyC,KAAKmiD,YAAY36C,I,cAAvB,SACAxH,KAAKsqB,QAAS,E,YAGlB,YAAAw6B,SAAA,WACI,KAAI9kD,KAAKiJ,QAAQ7K,QAAU4B,KAAKi7B,UAAhC,CAGA,IAAM8pB,EAAc/kD,KAAKkrF,aAAa9sF,OAClC6mD,EAAYjlD,KAAKi7B,SACjBj7B,KAAKqrF,YAA8B,IAAhBtmC,GAAqB/kD,KAAKorF,kBAAoBprF,KAAKi7B,WACtEgqB,EAAYjlD,KAAKorF,mBAEjBprF,KAAKiJ,QAAQ7K,OAAS2mD,IACtB/kD,KAAKkrF,aAAelrF,KAAKkrF,aAAavqF,OAAOX,KAAKiJ,QAAQ0B,MAAMo6C,EAAaA,EAAcE,KAE/FjlD,KAAKorF,kBAAoBprF,KAAKkrF,aAAa9sF,OAC3C4B,KAAK2kD,UAAY3kD,KAAKkrF,aAAa9sF,OAAS4B,KAAKi7B,WAG/C,YAAAyX,OAAN,SAAalrC,EAAgD2qC,G,YAAhD,IAAA3qC,MAAA,WAAgD,IAAA2qC,OAAA,G,mFAGzD,OAFAnyC,KAAKsqB,QAAS,EACdtqB,KAAKiJ,QAAU,GACf,GAAMjJ,KAAK2X,KAAKnQ,EAAQ2qC,I,cAAxB,S,YAGE,YAAAnW,QAAN,W,0FAGQ,O,sBADAh8B,KAAKqrF,YAAa,EAClB,GAAMrrF,KAAK0yC,OAAO1yC,KAAKwH,OAAQxH,KAAKmyC,U,cAApC,S,oBAEAnyC,KAAKqrF,YAAa,E,6BAIpB,YAAAlpC,YAAN,SAAkB36C,G,YAAA,IAAAA,MAAA,M,mFAEd,OADAxH,KAAKwH,OAASA,EACd,GAAMxH,KAAKwI,OAAO,O,cAAlB,S,YAGE,YAAAA,OAAN,SAAazH,G,YAAA,IAAAA,MAAA,M,yGACTf,KAAKoiD,eAAgB,EACK,MAAtBpiD,KAAKmrF,eACL97B,aAAarvD,KAAKmrF,eAEhBG,EAAiD,SAACv9E,GAAM,OAAAA,EAAE+tB,YAAc,EAAKqW,SACpE,MAAXpxC,EAAA,OACA,EAAAf,KAAe,GAAMA,KAAKw6B,cAAc+wD,cAAcvrF,KAAKo6B,WAAY,CAACp6B,KAAKwH,OAAQ8jF,GAAgB,Q,OACrG,OADA,EAAKriF,QAAU,SACf,GAAMjJ,KAAKuiD,e,OACX,OADA,SACA,I,cAEJviD,KAAKoiD,eAAgB,EACrBpiD,KAAKmrF,cAAgBzvE,YAAW,gD,wDACb,OAAf,EAAA1b,KAAe,GAAMA,KAAKw6B,cAAc+wD,cAAcvrF,KAAKo6B,WAAY,CAACp6B,KAAKwH,OAAQ8jF,GAAgB,O,OACrG,OADA,EAAKriF,QAAU,SACf,GAAMjJ,KAAKuiD,e,cAAX,SACAviD,KAAKoiD,eAAgB,E,aACtBrhD,G,YAGP,YAAAmsB,aAAA,SAAatnB,GACT5F,KAAK8qF,gBAAgBl0E,KAAKhR,IAG9B,YAAA4lF,iBAAA,SAAiB5lF,GACb5F,KAAK+qF,qBAAqBn0E,KAAKhR,IAGnC,YAAAyvC,UAAA,WACIr1C,KAAKgrF,YAAYp0E,QAGrB,YAAA60E,iBAAA,WACIzrF,KAAKirF,mBAAmBr0E,QAG5B,YAAAivC,YAAA,WACI,OAAQ7lD,KAAKoiD,eAAiBpiD,KAAKw6B,cAAcsrB,aAAa9lD,KAAKo6B,aAGvE,YAAA2rB,SAAA,WACI,IAAMC,EAAYhmD,KAAK6lD,cAIvB,OAHIG,GAAahmD,KAAK2kD,WAClB3kD,KAAKuiD,eAEDyD,GAAahmD,KAAKiJ,QAAQ7K,OAAS4B,KAAKi7B,UAG9C,YAAAsnB,YAAN,W,0EACIviD,KAAKkrF,aAAe,GACpBlrF,KAAK8kD,W,WAEb,EAtHA,GAAa,EAAAloB,oB,8ECVb,mBAAa,EAAApV,qB,g7CCAb,aAIA,OAOA,QACA,SACA,SACA,SACA,SACA,SAeA,QACA,SAEA,SAEA,SACA,SACA,SACA,QAEA,QAEA,aAyCI,WAAsBiT,EAAwCR,EAChDv6B,EAAoCU,EACpCy8B,EAAsCtlB,EACtC2S,EAAoC8P,EACpCrkB,EAA8C+kB,GAJtC,KAAAD,gBAAwC,KAAAR,gBAChD,KAAAv6B,cAAoC,KAAAU,uBACpC,KAAAy8B,eAAsC,KAAAtlB,eACtC,KAAA2S,cAAoC,KAAA8P,oBACpC,KAAArkB,mBAA8C,KAAA+kB,eA5CnD,KAAA8D,WAAqB,EACrB,KAAAjgB,SAAmB,KAInB,KAAAD,eAAyB,KACxB,KAAAiP,cAAgB,IAAI,EAAA7M,aACpB,KAAA8M,gBAAkB,IAAI,EAAA9M,aACtB,KAAA+M,iBAAmB,IAAI,EAAA/M,aACvB,KAAAgrE,YAAc,IAAI,EAAAhrE,aAClB,KAAAirE,kBAAoB,IAAI,EAAAjrE,aACxB,KAAAkrE,cAAgB,IAAI,EAAAlrE,aACpB,KAAAmrE,kBAAoB,IAAI,EAAAnrE,aACxB,KAAAorE,mBAAqB,IAAI,EAAAprE,aAEnC,KAAAid,UAAoB,EAGpB,KAAAl3B,YAAgC,GAMhC,KAAAu+E,cAAwB,EACxB,KAAA+G,cAAwB,EACxB,KAAA/wD,WAAa,EAAA9yB,WACb,KAAA8jF,UAAY,EAAA1jF,UACZ,KAAA2jF,aAA0B,EAAA3jF,UAAUC,KAOpC,KAAAk2B,iBAA0B,GAUtBz+B,KAAKksF,YAAc,CACf,CAAEnlF,KAAMrH,EAAYO,EAAE,aAActB,MAAO,EAAAuJ,WAAWC,OACtD,CAAEpB,KAAMrH,EAAYO,EAAE,YAAatB,MAAO,EAAAuJ,WAAW2P,MACrD,CAAE9Q,KAAMrH,EAAYO,EAAE,gBAAiBtB,MAAO,EAAAuJ,WAAW4P,UACzD,CAAE/Q,KAAMrH,EAAYO,EAAE,kBAAmBtB,MAAO,EAAAuJ,WAAWoB,aAE/DtJ,KAAKmsF,iBAAmB,CACpB,CAAEplF,KAAM,MAAQrH,EAAYO,EAAE,UAAY,MAAOtB,MAAO,MACxD,CAAEoI,KAAM,OAAQpI,MAAO,QACvB,CAAEoI,KAAM,aAAcpI,MAAO,cAC7B,CAAEoI,KAAM,mBAAoBpI,MAAO,QACnC,CAAEoI,KAAM,WAAYpI,MAAO,YAC3B,CAAEoI,KAAM,cAAepI,MAAO,eAC9B,CAAEoI,KAAM,MAAOpI,MAAO,OACtB,CAAEoI,KAAM,UAAWpI,MAAO,WAC1B,CAAEoI,KAAM,WAAYpI,MAAO,YAC3B,CAAEoI,KAAMrH,EAAYO,EAAE,SAAUtB,MAAO,UAE3CqB,KAAKosF,oBAAsB,CACvB,CAAErlF,KAAM,MAAQrH,EAAYO,EAAE,UAAY,MAAOtB,MAAO,MACxD,CAAEoI,KAAM,QAAUrH,EAAYO,EAAE,WAAYtB,MAAO,KACnD,CAAEoI,KAAM,QAAUrH,EAAYO,EAAE,YAAatB,MAAO,KACpD,CAAEoI,KAAM,QAAUrH,EAAYO,EAAE,SAAUtB,MAAO,KACjD,CAAEoI,KAAM,QAAUrH,EAAYO,EAAE,SAAUtB,MAAO,KACjD,CAAEoI,KAAM,QAAUrH,EAAYO,EAAE,OAAQtB,MAAO,KAC/C,CAAEoI,KAAM,QAAUrH,EAAYO,EAAE,QAAStB,MAAO,KAChD,CAAEoI,KAAM,QAAUrH,EAAYO,EAAE,QAAStB,MAAO,KAChD,CAAEoI,KAAM,QAAUrH,EAAYO,EAAE,UAAWtB,MAAO,KAClD,CAAEoI,KAAM,QAAUrH,EAAYO,EAAE,aAActB,MAAO,KACrD,CAAEoI,KAAM,QAAUrH,EAAYO,EAAE,WAAYtB,MAAO,MACnD,CAAEoI,KAAM,QAAUrH,EAAYO,EAAE,YAAatB,MAAO,MACpD,CAAEoI,KAAM,QAAUrH,EAAYO,EAAE,YAAatB,MAAO,OAExDqB,KAAKqsF,qBAAuB,CACxB,CAAEtlF,KAAM,MAAQrH,EAAYO,EAAE,UAAY,MAAOtB,MAAO,MACxD,CAAEoI,KAAMrH,EAAYO,EAAE,MAAOtB,MAAOe,EAAYO,EAAE,OAClD,CAAE8G,KAAMrH,EAAYO,EAAE,OAAQtB,MAAOe,EAAYO,EAAE,QACnD,CAAE8G,KAAMrH,EAAYO,EAAE,MAAOtB,MAAOe,EAAYO,EAAE,OAClD,CAAE8G,KAAMrH,EAAYO,EAAE,MAAOtB,MAAOe,EAAYO,EAAE,QAEtDD,KAAKssF,oBAAsB,CACvB,CAAEvlF,KAAMrH,EAAYO,EAAE,cAAetB,MAAO,EAAA2J,UAAUC,MACtD,CAAExB,KAAMrH,EAAYO,EAAE,gBAAiBtB,MAAO,EAAA2J,UAAU+gE,QACxD,CAAEtiE,KAAMrH,EAAYO,EAAE,iBAAkBtB,MAAO,EAAA2J,UAAU8hE,UAE7DpqE,KAAKusF,gBAAkB,CACnB,CAAExlF,KAAMrH,EAAYO,EAAE,yBAA0BtB,MAAO,MACvD,CAAEoI,KAAMrH,EAAYO,EAAE,cAAetB,MAAO,EAAAitB,aAAa2/C,QACzD,CAAExkE,KAAMrH,EAAYO,EAAE,QAAStB,MAAO,EAAAitB,aAAa6/C,MACnD,CAAE1kE,KAAMrH,EAAYO,EAAE,cAAetB,MAAO,EAAAitB,aAAaggD,YACzD,CAAE7kE,KAAMrH,EAAYO,EAAE,SAAUtB,MAAO,EAAAitB,aAAaC,mBACpD,CAAE9kB,KAAMrH,EAAYO,EAAE,SAAUtB,MAAO,EAAAitB,aAAa+/C,OACpD,CAAE5kE,KAAMrH,EAAYO,EAAE,SAAUtB,MAAO,EAAAitB,aAAaigD,QA6VhE,OAzVU,YAAA9pE,SAAN,W,0FACI,SAAM/B,KAAK+K,Q,cAAX,S,YAGE,YAAAA,KAAN,W,yGACoB,SAAM/K,KAAKkqB,YAAYoP,Y,OAE1B,OAFPkzD,EAAU,SAChBxsF,KAAKy+B,iBAAiBh+B,KAAK,CAAEsG,KAAMylF,EAAS7tF,MAAO,OACtC,GAAMqB,KAAKkqB,YAAYK,uB,OAMR,OANf,SACRE,KAAK,EAAA3lB,MAAMqK,gBAAgBnP,KAAKN,YAAa,SAASgE,SAAQ,SAACmlC,GAC5DA,EAAE5c,SAAW4c,EAAErrB,SAAW,EAAA8N,2BAA2By8B,WACrD,EAAKtpB,iBAAiBh+B,KAAK,CAAEsG,KAAM8hC,EAAE9hC,KAAMpI,MAAOkqC,EAAEjpC,QAG5D,EAAAI,KAA4B,GAAMA,KAAKygD,mB,cAAvC,EAAK0Q,qBAAuB,S,YAG1B,YAAAx5C,KAAN,W,6GAcmC,OAb/B3X,KAAK29B,SAA4B,MAAjB39B,KAAKstB,SACjBttB,KAAK29B,UACL39B,KAAK29B,UAAW,EACZ39B,KAAKw+B,WACLx+B,KAAKw+B,WAAY,EACjBx+B,KAAK8B,MAAQ9B,KAAKN,YAAYO,EAAE,YAEhCD,KAAK8B,MAAQ9B,KAAKN,YAAYO,EAAE,aAGpCD,KAAK8B,MAAQ9B,KAAKN,YAAYO,EAAE,WAGL,GAAMD,KAAKuX,aAAa9Y,IAAS,sB,OAKhE,OAJyB,OADnBguF,EAAyB,YAE3BzsF,KAAK4F,OAAS6mF,EAAkB7mF,OAChC5F,KAAK+e,cAAgB0tE,EAAkB1tE,eAE3C,GAAM/e,KAAKuX,aAAaw1B,OAAO,sB,cAA/B,SAEmB,MAAf/sC,KAAK4F,OAAL,MACI5F,KAAK29B,SACU,GAAM39B,KAAK0gD,cAD1B,M,OAEc,OADR96C,EAAS,SACf,EAAA5F,KAAc,GAAM4F,EAAO0P,W,cAA3B,EAAK1P,OAAS,SAGV5F,KAAKw+B,YACLx+B,KAAK4F,OAAOmB,MAAQ,MAAQ/G,KAAKN,YAAYO,EAAE,U,aAGnDD,KAAK4F,OAAS,IAAI,EAAA+B,WAClB3H,KAAK4F,OAAO0Y,eAAwC,MAAvBte,KAAKse,eAAyB,KAAOte,KAAKse,eACvEte,KAAK4F,OAAO2Y,SAAWve,KAAKue,SAC5Bve,KAAK4F,OAAOqC,KAAoB,MAAbjI,KAAKiI,KAAe,EAAAC,WAAWC,MAAQnI,KAAKiI,KAC/DjI,KAAK4F,OAAOmC,MAAQ,IAAI,EAAAC,UACxBhI,KAAK4F,OAAOmC,MAAMsB,KAAO,CAAC,IAAI,EAAAhF,cAC9BrE,KAAK4F,OAAOM,KAAO,IAAI,EAAA2N,SACvB7T,KAAK4F,OAAO+Y,SAAW,IAAI,EAAAC,aAC3B5e,KAAK4F,OAAO2D,WAAa,IAAI,EAAAC,eAC7BxJ,KAAK4F,OAAO2D,WAAWtB,KAAO,EAAAwB,eAAeC,Q,wBAIlC,MAAf1J,KAAK4F,QAAoB5F,KAAK29B,UAAiC,MAArB8uD,IAA6BzsF,KAAKw+B,UAA5E,MACA,GAAMx+B,KAAK0sF,uB,OAAX,SAC0B,MAAtB1sF,KAAK+e,eAAyB/e,KAAK+e,cAAc3gB,OAAS,GAAK4B,KAAKyG,YAAYrI,OAAS,GACzF4B,KAAKyG,YAAY/C,SAAQ,SAACqK,GAClB,EAAKgR,cAActa,QAAQsJ,EAAEnO,KAAO,IACnCmO,EAAUstB,SAAU,M,iBAMtB,OAAf,EAAAr7B,KAAe,GAAMA,KAAKi6B,cAAc+P,mB,cAAxC,EAAKtjC,QAAU,SAEX1G,KAAK29B,UAAY39B,KAAK2sF,mBAAqB3sF,KAAKstB,UAChDttB,KAAK06B,aAAa6B,QAAQ,EAAAtS,UAAU0H,oBAAqB3xB,KAAKstB,UAElEttB,KAAK2sF,iBAAmB3sF,KAAKstB,S,YAG3B,YAAA9H,OAAN,W,gGACI,OAAIxlB,KAAK4F,OAAOk2B,UACL,CAAP,EAAO97B,KAAKi8B,WAGQ,MAApBj8B,KAAK4F,OAAOmB,MAAqC,KAArB/G,KAAK4F,OAAOmB,MACxC/G,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,iBAChB,CAAP,GAAO,KAGLD,KAAK29B,WAAY39B,KAAKw+B,WAAcx+B,KAAK4F,OAAOqC,OAAS,EAAAC,WAAWC,OAC5C,MAA1BnI,KAAK4F,OAAOmC,MAAMsB,MAAkD,IAAlCrJ,KAAK4F,OAAOmC,MAAMsB,KAAKjL,QACvB,MAAjC4B,KAAK4F,OAAOmC,MAAMsB,KAAK,GAAGlF,KAAiD,KAAlCnE,KAAK4F,OAAOmC,MAAMsB,KAAK,GAAGlF,MACpEnE,KAAK4F,OAAOmC,MAAMsB,KAAO,MAIvBrJ,KAAK29B,WAAY39B,KAAKw+B,WAA4C,MAA9Bx+B,KAAK4F,OAAO0Y,iBAClDte,KAAK4F,OAAOmZ,cAAoC,MAApB/e,KAAKyG,YAAsB,GACnDzG,KAAKyG,YAAYe,QAAO,SAACuG,GAAM,OAACA,EAAUstB,WAAS10B,KAAI,SAACoH,GAAM,OAAAA,EAAEnO,OAIpEI,KAAKw+B,YACLx+B,KAAK4F,OAAOhG,GAAK,MAGN,GAAMI,KAAK4gD,kB,OAApBh7C,EAAS,S,iBAGX,O,sBADA5F,KAAK6lB,YAAc7lB,KAAK6gD,WAAWj7C,GACnC,GAAM5F,KAAK6lB,a,OAOX,OAPA,SACA7lB,KAAK4F,OAAOhG,GAAKgG,EAAOhG,GACxBI,KAAKI,qBAAqB6qB,WAAWjrB,KAAK29B,WAAa39B,KAAKw+B,UAAY,gBAAkB,gBAC1Fx+B,KAAKI,qBAAqBU,UAAU,UAAW,KAC3Cd,KAAKN,YAAYO,EAAED,KAAK29B,WAAa39B,KAAKw+B,UAAY,aAAe,cACzEx+B,KAAKutB,cAAc3W,KAAK5W,KAAK4F,QAC7B5F,KAAK2V,iBAAiBkB,KAAK7W,KAAK29B,WAAa39B,KAAKw+B,UAAY,eAAiB,eACxE,CAAP,GAAO,G,oCAGX,MAAO,CAAP,GAAO,WAGX,YAAAouD,OAAA,WACQ5sF,KAAK4F,OAAOqC,OAAS,EAAAC,WAAWC,QAIN,MAA1BnI,KAAK4F,OAAOmC,MAAMsB,OAClBrJ,KAAK4F,OAAOmC,MAAMsB,KAAO,IAG7BrJ,KAAK4F,OAAOmC,MAAMsB,KAAK5I,KAAK,IAAI,EAAA4D,gBAGpC,YAAAwoF,UAAA,SAAU1oF,GACN,GAAInE,KAAK4F,OAAOqC,OAAS,EAAAC,WAAWC,OAAmC,MAA1BnI,KAAK4F,OAAOmC,MAAMsB,KAA/D,CAIA,IAAMnL,EAAI8B,KAAK4F,OAAOmC,MAAMsB,KAAK5E,QAAQN,GACrCjG,GAAK,GACL8B,KAAK4F,OAAOmC,MAAMsB,KAAKuvC,OAAO16C,EAAG,KAIzC,YAAA4uF,SAAA,WAC8B,MAAtB9sF,KAAK4F,OAAOkC,SACZ9H,KAAK4F,OAAOkC,OAAS,IAGzB,IAAMlB,EAAI,IAAI,EAAA8B,UACd9B,EAAEqB,KAAOjI,KAAKisF,aACdrlF,EAAE8gB,UAAW,EACb1nB,KAAK4F,OAAOkC,OAAOrH,KAAKmG,IAG5B,YAAAmmF,YAAA,SAAYtkF,GACR,IAAMvK,EAAI8B,KAAK4F,OAAOkC,OAAOrD,QAAQgE,GACjCvK,GAAK,GACL8B,KAAK4F,OAAOkC,OAAO8wC,OAAO16C,EAAG,IAIrC,YAAA8uF,gBAAA,SAAgBjzC,EAAekjC,GAC3B,OAAOljC,GAGX,YAAA3S,OAAA,WACIpnC,KAAK0rF,YAAY90E,KAAK5W,KAAK4F,SAG/B,YAAAiZ,YAAA,WACI7e,KAAK2rF,kBAAkB/0E,KAAK5W,KAAK4F,SAGrC,YAAA81B,MAAA,WACI17B,KAAK4rF,cAAch1E,KAAK5W,KAAK4F,SAGjC,YAAAqnF,gBAAA,WACIjtF,KAAK6rF,kBAAkBj1E,KAAK5W,KAAK4F,SAG/B,YAAAg2B,OAAN,W,0FACsB,SAAM57B,KAAKI,qBAAqByqB,WAC9C7qB,KAAKN,YAAYO,EAAED,KAAK4F,OAAOk2B,UAAY,oCAAsC,0BACjF97B,KAAKN,YAAYO,EAAE,cAAeD,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,Y,OAC3F,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAKP,O,sBADAD,KAAK+5D,cAAgB/5D,KAAK+7B,eAC1B,GAAM/7B,KAAK+5D,e,cAAX,SACA/5D,KAAKI,qBAAqB6qB,YAAYjrB,KAAK4F,OAAOk2B,UAAY,eAAiB,IAAM,kBACrF97B,KAAKI,qBAAqBU,UAAU,UAAW,KAC3Cd,KAAKN,YAAYO,EAAED,KAAK4F,OAAOk2B,UAAY,yBAA2B,gBAC1E97B,KAAKwtB,gBAAgB5W,KAAK5W,KAAK4F,QAC/B5F,KAAK2V,iBAAiBkB,KAAK7W,KAAK4F,OAAOk2B,UAAY,2BAA6B,iB,0CAGpF,MAAO,CAAP,GAAO,WAGL,YAAAG,QAAN,W,0FACI,OAAKj8B,KAAK4F,OAAOk2B,UAIC,GAAM97B,KAAKI,qBAAqByqB,WAC9C7qB,KAAKN,YAAYO,EAAE,2BAA4BD,KAAKN,YAAYO,EAAE,eAClED,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,YAL9C,CAAP,GAAO,G,OAMX,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAKP,O,sBADAD,KAAKktF,eAAiBltF,KAAKmtF,gBAC3B,GAAMntF,KAAKktF,gB,cAAX,SACAltF,KAAKI,qBAAqB6qB,WAAW,mBACrCjrB,KAAKI,qBAAqBU,UAAU,UAAW,KAAMd,KAAKN,YAAYO,EAAE,iBACxED,KAAKytB,iBAAiB7W,KAAK5W,KAAK4F,QAChC5F,KAAK2V,iBAAiBkB,KAAK,kB,0CAG/B,MAAO,CAAP,GAAO,WAGL,YAAA+mB,iBAAN,W,iGAC6B,MAArB59B,KAAK4F,OAAOmC,OAA+C,MAA9B/H,KAAK4F,OAAOmC,MAAMqB,UAAoBpJ,KAAK4F,OAAOmC,MAAMqB,SAAShL,OAC5E,GAAM4B,KAAKI,qBAAqByqB,WAC9C7qB,KAAKN,YAAYO,EAAE,iCAAkCD,KAAKN,YAAYO,EAAE,qBACxED,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,QAHlD,M,OAIA,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAKf,OADAD,KAAK8rF,mBAAmBl1E,OACjB,CAAP,GAAO,WAGX,YAAAyuE,eAAA,WACIrlF,KAAKI,qBAAqB6qB,WAAW,4BACrCjrB,KAAKglF,cAAgBhlF,KAAKglF,aAC1B50E,SAAS80B,eAAe,iBAAiBjxB,QACrCjU,KAAK29B,UAAY39B,KAAKglF,cACtBhlF,KAAK06B,aAAa6B,QAAQ,EAAAtS,UAAU2H,oCAAqC5xB,KAAKstB,WAItF,YAAA8/D,eAAA,WACIptF,KAAKI,qBAAqB6qB,WAAW,4BACrCjrB,KAAK+rF,cAAgB/rF,KAAK+rF,aAC1B37E,SAAS80B,eAAe,YAAYjxB,QAChCjU,KAAK29B,UAAY39B,KAAK+rF,cACtB/rF,KAAK06B,aAAa6B,QAAQ,EAAAtS,UAAU6H,oCAAqC9xB,KAAKstB,WAItF,YAAA+/D,iBAAA,SAAiB5kF,GACb,IAAM7B,EAAK6B,EACX7B,EAAE0mF,WAAa1mF,EAAE0mF,UACbttF,KAAK29B,UAAY/2B,EAAE0mF,WACnBttF,KAAK06B,aAAa6B,QAAQ,EAAAtS,UAAU4H,uCAAwC7xB,KAAKstB,WAIzF,YAAAigE,iBAAA,SAAiBppF,GACb,IAAMK,EAAKL,EACXK,EAAE4U,aAA+B,MAAjB5U,EAAE4U,aAAoC,MAAbjV,EAAII,SAAyBC,EAAE4U,aAG5E,YAAAo0E,qBAAA,SAAqBrpF,GACjB,IAAMK,EAAKL,EACXK,EAAE4U,YAA+B,MAAjB5U,EAAE4U,aAA6B5U,EAAE4U,aAGrD,YAAAq0E,KAAA,SAAKxlE,GACD,EAAAylE,gBAAgB1tF,KAAK4F,OAAOkC,OAAQmgB,EAAM0lE,cAAe1lE,EAAM2lE,eAG7D,YAAAlB,oBAAN,W,8GACqC,MAA7B1sF,KAAKmxD,sBACLnxD,KAAKmxD,qBAAqBztD,SAAQ,SAACqK,GAAM,OAACA,EAAUstB,SAAU,KAEhC,MAA9Br7B,KAAK4F,OAAO0Y,eAAZ,OACAte,KAAKyG,YAAczG,KAAKmxD,qBAAqB3pD,QAAO,SAACuG,GAAM,OAAAA,EAAEuQ,iBAAmB,EAAK1Y,OAAO0Y,kBAChF,GAAMte,KAAKkqB,YAAY6pB,gBAAgB/zC,KAAK4F,OAAO0Y,kB,cACpD,OADLsM,EAAM,YAER5qB,KAAK4F,OAAO4Y,oBAAsBoM,EAAI+C,S,aAG1C3tB,KAAKyG,YAAc,G,mCAIrB,YAAAonF,cAAN,W,gGACI,OAAiC,MAA7B7tF,KAAK8tF,uBAIgB,MAArB9tF,KAAK4F,OAAOmC,OAA+C,MAA9B/H,KAAK4F,OAAOmC,MAAMqB,UAAmD,KAA/BpJ,KAAK4F,OAAOmC,MAAMqB,UAHrF,KAOJpJ,KAAKI,qBAAqB6qB,WAAW,kBACrCjrB,KAAK8tF,qBAAuB9tF,KAAK68B,aAAaoO,eAAejrC,KAAK4F,OAAOmC,MAAMqB,UAC/D,GAAMpJ,KAAK8tF,uB,cAArB3iB,EAAU,SAChBnrE,KAAK8tF,qBAAuB,KAExB3iB,EAAU,EACVnrE,KAAKI,qBAAqBU,UAAU,UAAW,KAC3Cd,KAAKN,YAAYO,EAAE,kBAAmBkrE,EAAQv+D,aAElD5M,KAAKI,qBAAqBU,UAAU,UAAW,KAAMd,KAAKN,YAAYO,EAAE,iB,YAIhE,YAAAwgD,gBAAhB,W,0FAC2B,SAAMzgD,KAAKg6B,kBAAkBgQ,mB,OACpD,MAAO,CAAP,EADuB,SACDxiC,QAAO,SAACuG,GAAM,OAACA,EAAEuW,qBAGjC,YAAAo8B,WAAV,WACI,OAAO1gD,KAAKy6B,cAAch8B,IAAIuB,KAAKstB,WAG7B,YAAAszB,cAAV,WACI,OAAO5gD,KAAKy6B,cAAc+K,QAAQxlC,KAAK4F,SAGjC,YAAAi7C,WAAV,SAAqBj7C,GACjB,OAAO5F,KAAKy6B,cAAc2xC,eAAexmE,IAGnC,YAAAm2B,aAAV,WACI,OAAO/7B,KAAK4F,OAAOk2B,UAAY97B,KAAKy6B,cAAc+B,iBAAiBx8B,KAAK4F,OAAOhG,IACzEI,KAAKy6B,cAAcgC,qBAAqBz8B,KAAK4F,OAAOhG,KAGpD,YAAAutF,cAAV,WACI,OAAOntF,KAAKy6B,cAAcyB,kBAAkBl8B,KAAK4F,OAAOhG,KAEhE,EA/bA,GAAa,EAAAytB,oB,g7CC3Cb,WAkBA,aAcI,WAAsBoN,EAAwC/6B,EAChD4lB,EAAwC4E,EACxC9pB,EAAsDuP,GAF9C,KAAA8qB,gBAAwC,KAAA/6B,cAChD,KAAA4lB,gBAAwC,KAAA4E,cACxC,KAAA9pB,uBAAsD,KAAAuP,MAd1D,KAAAykC,qBAAuB,IAAI,EAAA1zB,aAC3B,KAAA2zB,oBAAsB,IAAI,EAAA3zB,aAC1B,KAAA4zB,uBAAyB,IAAI,EAAA5zB,aAOvC,KAAAqtE,eAAkD,GAClD,KAAAC,iBAAoD,GAkMxD,OA5LU,YAAAjsF,SAAN,W,0FACI,SAAM/B,KAAK+K,Q,cAAX,S,YAGE,YAAAya,OAAN,W,sGACI,IAAKxlB,KAAKiuF,cAGN,OAFAjuF,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,cACvB,IAKJ,GAFMglC,EAAS70B,SAAS80B,eAAe,QAE1B,OADPH,EAAQE,EAAOF,QACiB,IAAjBA,EAAM3mC,OAGvB,OAFA4B,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,eACvB,IAGJ,GAAI8kC,EAAM,GAAGtoB,KAAO,UAGhB,OAFAzc,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,gBACvB,I,iBAKoB,O,sBADpBD,KAAK6lB,YAAc7lB,KAAK84D,qBAAqB/zB,EAAM,IACnD,EAAA/kC,KAAoB,GAAMA,KAAK6lB,a,OACjB,OADd,EAAKmzC,aAAe,SACpB,EAAAh5D,KAAc,GAAMA,KAAKg5D,aAAa1jD,W,cAAtC,EAAK1P,OAAS,SACd5F,KAAKI,qBAAqB6qB,WAAW,oBACrCjrB,KAAKI,qBAAqBU,UAAU,UAAW,KAAMd,KAAKN,YAAYO,EAAE,oBACxED,KAAKo0C,qBAAqBx9B,O,iDAK9BquB,EAAOh9B,KAAO,GACdg9B,EAAOh9B,KAAO,OACdg9B,EAAOtmC,MAAQ,G,YAGb,YAAAi9B,OAAN,SAAavU,G,gGACT,OAA0C,MAAtCrnB,KAAK+tF,eAAe1mE,EAAWznB,IAC/B,IAGc,GAAMI,KAAKI,qBAAqByqB,WAC9C7qB,KAAKN,YAAYO,EAAE,gCAAiCD,KAAKN,YAAYO,EAAE,oBACvED,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,Y,OACzD,IAHkB,SAId,U,iBAKA,O,sBADAD,KAAK+tF,eAAe1mE,EAAWznB,IAAMI,KAAKi5D,uBAAuB5xC,EAAWznB,IAC5E,GAAMI,KAAK+tF,eAAe1mE,EAAWznB,K,cAArC,SACAI,KAAKI,qBAAqB6qB,WAAW,sBACrCjrB,KAAKI,qBAAqBU,UAAU,UAAW,KAAMd,KAAKN,YAAYO,EAAE,uBAClE/B,EAAI8B,KAAK4F,OAAOiZ,YAAYpa,QAAQ4iB,KACjC,GACLrnB,KAAK4F,OAAOiZ,YAAY+5B,OAAO16C,EAAG,G,iDAI1C8B,KAAK+tF,eAAe1mE,EAAWznB,IAAM,KACrCI,KAAKq0C,oBAAoBz9B,O,YAGvB,YAAAs3E,SAAN,SAAe7mE,G,0GAEX,OADMhY,EAAKgY,GACL8mE,YACF,IAGCnuF,KAAKouF,sBAMV/+E,EAAE8+E,aAAc,EACC,GAAM5iD,MAAM,IAAIC,QAAQnkB,EAAWziB,IAAK,CAAEg8D,MAAO,iBAN9D5gE,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,mBAC5DD,KAAKN,YAAYO,EAAE,wBACvB,K,OAKJ,GAAwB,OADlBwB,EAAW,UACJ+b,OAGT,OAFAxd,KAAKI,qBAAqBU,UAAU,QAAS,KAAMd,KAAKN,YAAYO,EAAE,kBACtEoP,EAAE8+E,aAAc,EAChB,I,iBAIY,O,sBAAA,GAAM1sF,EAASqtE,e,cAArBC,EAAM,SACkB,MAAlB1nD,EAAWzoB,IAAX,OAAyB,EAAAyoB,EAAWzoB,I,cAC5C,SAAMoB,KAAKslB,cAAcwE,UAAU9pB,KAAK4F,OAAO0Y,iB,OAA/C,W,iBACW,OAFT1f,EAAM,EAEG,GAAMoB,KAAKslB,cAAc0pD,iBAAiBD,EAAKnwE,I,cAAxDqwE,EAAS,SACfjvE,KAAKI,qBAAqB2+C,SAAS/+C,KAAK2P,IAAKs/D,EAAQ,KAAM5nD,EAAWC,U,6BAEtEtnB,KAAKI,qBAAqBU,UAAU,QAAS,KAAMd,KAAKN,YAAYO,EAAE,kB,oBAG1EoP,EAAE8+E,aAAc,E,YAGJ,YAAApjF,KAAhB,W,sGACwB,OAApB,EAAA/K,KAAoB,GAAMA,KAAK0gD,c,OACjB,OADd,EAAKsY,aAAe,SACpB,EAAAh5D,KAAc,GAAMA,KAAKg5D,aAAa1jD,W,OAEjB,OAFrB,EAAK1P,OAAS,SAEd,EAAA5F,KAAqB,GAAMA,KAAKslB,cAAc+sB,a,OACrB,OADzB,EAAK47C,cAAgB,SACI,GAAMjuF,KAAKkqB,YAAY0D,oB,cAA1CA,EAAmB,SACzB5tB,KAAKouF,qBAAuBxgE,GAAkD,MAA9B5tB,KAAK4F,OAAO0Y,eAEvDte,KAAKouF,qBAAN,MACkB,GAAMpuF,KAAKI,qBAAqByqB,WAC9C7qB,KAAKN,YAAYO,EAAE,uBAAwBD,KAAKN,YAAYO,EAAE,mBAC9DD,KAAKN,YAAYO,EAAE,aAAcD,KAAKN,YAAYO,EAAE,Y,cAFtC,UAIdD,KAAKI,qBAAqBgkB,UAAU,mD,oBAEhCpkB,KAAKiuF,cAAN,MACW,GAAMjuF,KAAKI,qBAAqByqB,WAC9C7qB,KAAKN,YAAYO,EAAE,aAAcD,KAAKN,YAAYO,EAAE,sBACpDD,KAAKN,YAAYO,EAAE,aAAcD,KAAKN,YAAYO,EAAE,UAAW,Y,OAFjD,UAIdD,KAAKI,qBAAqBgkB,UAAU,6D,mCAKhC,YAAAkzB,yBAAhB,SAAyCjwB,EAA4BylD,G,uGAEjE,GADMz9D,EAAKgY,EACW,MAAlBA,EAAWzoB,KAAeyQ,EAAE8+E,aAAuD,MAAxCnuF,KAAKguF,iBAAiB3mE,EAAWznB,IAC5E,U,iBA4CA,O,sBAxCAI,KAAKguF,iBAAiB3mE,EAAWznB,IAAMuV,QAAQC,UAAU9T,MAAK,gD,wEAGzC,OADjB+N,EAAE8+E,aAAc,EACC,GAAM5iD,MAAM,IAAIC,QAAQnkB,EAAWziB,IAAK,CAAEg8D,MAAO,e,OAClE,GAAwB,OADlBn/D,EAAW,UACJ+b,OAGT,OAFAxd,KAAKI,qBAAqBU,UAAU,QAAS,KAAMd,KAAKN,YAAYO,EAAE,kBACtEoP,EAAE8+E,aAAc,EAChB,I,iBAKY,O,wBAAA,GAAM1sF,EAASqtE,e,cAArBC,EAAM,SACkB,MAAlB1nD,EAAWzoB,IAAX,OAAyB,EAAAyoB,EAAWzoB,I,cAC5C,SAAMoB,KAAKslB,cAAcwE,UAAU9pB,KAAK4F,OAAO0Y,iB,OAA/C,W,iBACW,OAFT1f,EAAM,EAEG,GAAMoB,KAAKslB,cAAc0pD,iBAAiBD,EAAKnwE,I,OAC1C,OADdqwE,EAAS,SACf,EAAAjvE,KAAoB,GAAMA,KAAKy6B,cAAcuyC,4BACzChtE,KAAKg5D,aAAc3xC,EAAWC,SAAU2nD,EAAQnC,I,OACtC,OAFd,EAAK9T,aAAe,SAEpB,EAAAh5D,KAAc,GAAMA,KAAKg5D,aAAa1jD,W,OAItC,OAJA,EAAK1P,OAAS,SAGd5F,KAAK+tF,eAAe1mE,EAAWznB,IAAMI,KAAKi5D,uBAAuB5xC,EAAWznB,IAC5E,GAAMI,KAAK+tF,eAAe1mE,EAAWznB,K,eAArC,UACMyuF,EAAkBruF,KAAK4F,OAAOiZ,YAAYrX,QAAO,SAAC8mF,GAAO,OAAAA,EAAG1uF,KAAOynB,EAAWznB,OAChExB,OAAS,IACnBF,EAAI8B,KAAK4F,OAAOiZ,YAAYpa,QAAQ4pF,EAAgB,MACjD,GACLruF,KAAK4F,OAAOiZ,YAAY+5B,OAAO16C,EAAG,GAI1C8B,KAAKI,qBAAqB6qB,WAAW,yBACrCjrB,KAAKI,qBAAqBU,UAAU,UAAW,KAAMd,KAAKN,YAAYO,EAAE,oBACxED,KAAKs0C,uBAAuB19B,O,+BAE5B5W,KAAKI,qBAAqBU,UAAU,QAAS,KAAMd,KAAKN,YAAYO,EAAE,kB,sBAG1EoP,EAAE8+E,aAAc,E,cAEpB,GAAMnuF,KAAKguF,iBAAiB3mE,EAAWznB,K,cAAvC,S,4DAIE,YAAA8gD,WAAV,WACI,OAAO1gD,KAAKy6B,cAAch8B,IAAIuB,KAAKstB,WAG7B,YAAAwrC,qBAAV,SAA+B/vB,GAC3B,OAAO/oC,KAAKy6B,cAAcs+B,yBAAyB/4D,KAAKg5D,aAAcjwB,IAGhE,YAAAkwB,uBAAV,SAAiCC,GAC7B,OAAOl5D,KAAKy6B,cAAcwzC,2BAA2BjuE,KAAK4F,OAAOhG,GAAIs5D,IAE7E,EA9MA,GAAa,EAAAhlB,wB,g7CClBb,WAiBA,aAYI,WAAsBla,EAAgD55B,EACxDV,EAAoC+6B,GAD5B,KAAAT,oBAAgD,KAAA55B,uBACxD,KAAAV,cAAoC,KAAA+6B,gBAXzC,KAAA2+B,iBAAkB,EACjB,KAAAtkB,mBAAqB,IAAI,EAAAp0B,aAKnC,KAAAja,YAAgC,GA4DpC,OArDU,YAAA1E,SAAN,W,0FACI,SAAM/B,KAAK2X,Q,cAAX,S,YAGE,YAAAA,KAAN,W,2GACwB,OAApB,EAAA3X,KAAoB,GAAMA,KAAK0gD,c,OAEjB,OAFd,EAAKsY,aAAe,SACpBh5D,KAAK+e,cAAgB/e,KAAKq5D,wBAC1B,EAAAr5D,KAAc,GAAMA,KAAKg5D,aAAa1jD,W,OACnB,OADnB,EAAK1P,OAAS,SACd,EAAA5F,KAAmB,GAAMA,KAAKygD,mB,cAA9B,EAAKh6C,YAAc,SAEnBzG,KAAKyG,YAAY/C,SAAQ,SAACqK,GAAM,OAACA,EAAUstB,SAAU,KAC3B,MAAtBr7B,KAAK+e,eACL/e,KAAKyG,YAAY/C,SAAQ,SAACqK,GACrBA,EAAUstB,QAAgC,MAAtB,EAAKtc,eAAyB,EAAKA,cAActa,QAAQsJ,EAAEnO,KAAO,K,YAK7F,YAAA4lB,OAAN,W,gGAII,GAHM+oE,EAAwBvuF,KAAKyG,YAC9Be,QAAO,SAACuG,GAAM,QAAGA,EAAUstB,WAC3B10B,KAAI,SAACoH,GAAM,OAAAA,EAAEnO,OACbI,KAAKo5D,iBAAoD,IAAjCm1B,EAAsBnwF,OAG/C,OAFA4B,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,wBACvB,IAEJD,KAAKg5D,aAAaj6C,cAAgBwvE,E,iBAG9B,O,sBADAvuF,KAAK6lB,YAAc7lB,KAAKs5D,kBACxB,GAAMt5D,KAAK6lB,a,cAAX,SACA7lB,KAAK80C,mBAAmBl+B,OACxB5W,KAAKI,qBAAqB6qB,WAAW,6BACrCjrB,KAAKI,qBAAqBU,UAAU,UAAW,KAAMd,KAAKN,YAAYO,EAAE,e,4DAItE,YAAAygD,WAAV,WACI,OAAO1gD,KAAKy6B,cAAch8B,IAAIuB,KAAKstB,WAG7B,YAAA+rC,sBAAV,WACI,OAAOr5D,KAAKg5D,aAAaj6C,eAGb,YAAA0hC,gBAAhB,W,qGAC2B,SAAMzgD,KAAKg6B,kBAAkBgQ,mB,OACpD,MAAO,CAAP,EADuB,SACDxiC,QAAO,SAACuG,GAAM,OAACA,EAAEuW,UAAYvW,EAAEuQ,iBAAmB,EAAK1Y,OAAO0Y,2BAG9E,YAAAg7C,gBAAV,WACI,OAAOt5D,KAAKy6B,cAAcmzC,0BAA0B5tE,KAAKg5D,eAEjE,EApEA,GAAa,EAAAnkB,wB,g7CCjBb,WAWA,SAEA,aAWI,WAAsB5a,EAAwCv6B,EAChDU,GADQ,KAAA65B,gBAAwC,KAAAv6B,cAChD,KAAAU,uBAVJ,KAAA60C,cAAgB,IAAI,EAAAv0B,aACpB,KAAA00B,gBAAkB,IAAI,EAAA10B,aAEhC,KAAAid,UAAoB,EACpB,KAAAwZ,OAAqB,IAAI,EAAAnuC,WAgE7B,OAxDU,YAAAjH,SAAN,W,0FACI,SAAM/B,KAAK+K,Q,cAAX,S,YAGE,YAAAya,OAAN,W,gGACI,GAAwB,MAApBxlB,KAAKm3C,OAAOpwC,MAAqC,KAArB/G,KAAKm3C,OAAOpwC,KAGxC,OAFA/G,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,iBAChB,CAAP,GAAO,G,iBAIQ,O,sBAAA,GAAMD,KAAKi6B,cAAcuL,QAAQxlC,KAAKm3C,S,OAErD,OAFMA,EAAS,SACfn3C,KAAK6lB,YAAc7lB,KAAKi6B,cAAcmyC,eAAej1B,GACrD,GAAMn3C,KAAK6lB,a,OAKX,OALA,SACA7lB,KAAKI,qBAAqB6qB,WAAWjrB,KAAK29B,SAAW,gBAAkB,gBACvE39B,KAAKI,qBAAqBU,UAAU,UAAW,KAC3Cd,KAAKN,YAAYO,EAAED,KAAK29B,SAAW,eAAiB,gBACxD39B,KAAKi1C,cAAcr+B,KAAK5W,KAAKm3C,QACtB,CAAP,GAAO,G,oCAGX,MAAO,CAAP,GAAO,WAGL,YAAAvb,OAAN,W,0FACsB,SAAM57B,KAAKI,qBAAqByqB,WAC9C7qB,KAAKN,YAAYO,EAAE,4BAA6BD,KAAKN,YAAYO,EAAE,gBACnED,KAAKN,YAAYO,EAAE,OAAQD,KAAKN,YAAYO,EAAE,MAAO,Y,OACzD,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAKP,O,sBADAD,KAAK+5D,cAAgB/5D,KAAKi6B,cAAcuC,iBAAiBx8B,KAAKm3C,OAAOv3C,IACrE,GAAMI,KAAK+5D,e,cAAX,SACA/5D,KAAKI,qBAAqB6qB,WAAW,kBACrCjrB,KAAKI,qBAAqBU,UAAU,UAAW,KAAMd,KAAKN,YAAYO,EAAE,kBACxED,KAAKo1C,gBAAgBx+B,KAAK5W,KAAKm3C,Q,0CAGnC,MAAO,CAAP,GAAO,WAGK,YAAApsC,KAAhB,W,yGACI/K,KAAK29B,SAA4B,MAAjB39B,KAAKue,SAEjBve,KAAK29B,UACL39B,KAAK29B,UAAW,EAChB39B,KAAK8B,MAAQ9B,KAAKN,YAAYO,EAAE,cACjB,GAAMD,KAAKi6B,cAAcx7B,IAAIuB,KAAKue,YAHjD,M,OAIc,OADR44B,EAAS,SACf,EAAAn3C,KAAc,GAAMm3C,EAAO7hC,W,cAA3B,EAAK6hC,OAAS,S,aAEdn3C,KAAK8B,MAAQ9B,KAAKN,YAAYO,EAAE,a,mCAG5C,EAtEA,GAAa,EAAA+0C,0B,g7CCbb,WAOA,SAYA,QAEA,aAYI,WAAsBhb,EAAgD55B,EACxDV,EAAoCwqB,EACpCuQ,GAFQ,KAAAT,oBAAgD,KAAA55B,uBACxD,KAAAV,cAAoC,KAAAwqB,cACpC,KAAAuQ,gBAXJ,KAAAia,eAAiB,IAAI,EAAAh0B,aAI/B,KAAAja,YAAgC,GAChC,KAAAikB,cAAgC,GAEtB,KAAAymC,qBAAyC,GAsEvD,OAhEU,YAAApvD,SAAN,W,0FACI,SAAM/B,KAAK2X,Q,cAAX,S,YAGE,YAAAA,KAAN,W,sGAC2B,SAAM3X,KAAKg6B,kBAAkBgQ,mB,OAEvC,OAFPonB,EAAiB,SACvBpxD,KAAKmxD,qBAAuBC,EAAezqD,KAAI,SAACoH,GAAM,OAAAA,KAAGvG,QAAO,SAACuG,GAAM,OAACA,EAAEuW,YAC7D,GAAMtkB,KAAKkqB,YAAYK,uB,OAIf,OAJfC,EAAO,SACbxqB,KAAK0qB,cAAgBF,EAAKC,KAAK,EAAA3lB,MAAMqK,gBAAgBnP,KAAKN,YAAa,SAClE8H,QAAO,SAACqhC,GAAM,OAAAA,EAAE5c,SAAW4c,EAAErrB,SAAW,EAAA8N,2BAA2By8B,aAEnD,GAAM/nD,KAAKy6B,cAAch8B,IAAIuB,KAAKstB,W,OACzC,OADR0rC,EAAe,SACrB,EAAAh5D,KAAc,GAAMg5D,EAAa1jD,W,cAAjC,EAAK1P,OAAS,SACa,MAAvB5F,KAAKse,gBAA0Bte,KAAK0qB,cAActsB,OAAS,IAC3D4B,KAAKse,eAAiBte,KAAK0qB,cAAc,GAAG9qB,IAEhDI,KAAKqxD,oB,YAGT,YAAAA,kBAAA,sBACIrxD,KAAKmxD,qBAAqBztD,SAAQ,SAACqK,GAAM,OAACA,EAAUstB,SAAU,KACnC,MAAvBr7B,KAAKse,gBAA+D,IAArCte,KAAKmxD,qBAAqB/yD,OACzD4B,KAAKyG,YAAc,GAEnBzG,KAAKyG,YAAczG,KAAKmxD,qBAAqB3pD,QAAO,SAACuG,GAAM,OAAAA,EAAEuQ,iBAAmB,EAAKA,mBAIvF,YAAAkH,OAAN,W,yGAII,OAAqC,KAH/B+oE,EAAwBvuF,KAAKyG,YAC9Be,QAAO,SAACuG,GAAM,QAAGA,EAAUstB,WAC3B10B,KAAI,SAACoH,GAAM,OAAAA,EAAEnO,OACQxB,QACtB4B,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,wBACvB,KAGiB,GAAMD,KAAKy6B,cAAch8B,IAAIuB,KAAKstB,W,OACpC,SADE,SACiBhY,W,OAAhCk5E,EAAa,S,iBASf,O,sBANAxuF,KAAK6lB,YAAc7lB,KAAKy6B,cAAc6xC,gBAAgBkiB,EAAYxuF,KAAKse,eACnEiwE,GAAuBjtF,MAAK,gD,kCACxBtB,KAAK00C,eAAe99B,OACpB5W,KAAKI,qBAAqB6qB,WAAW,iBACrCjrB,KAAKI,qBAAqBU,UAAU,UAAW,KAAMd,KAAKN,YAAYO,EAAE,e,aAEhF,GAAMD,KAAK6lB,a,OACX,OADA,SACO,CAAP,GAAO,G,oCAEX,MAAO,CAAP,GAAO,WAGX,sBAAI,sBAAO,C,IAAX,WACI,GAAwB,MAApB7lB,KAAKyG,YACL,IAAK,IAAIvI,EAAI,EAAGA,EAAI8B,KAAKyG,YAAYrI,OAAQF,IACzC,GAAK8B,KAAKyG,YAAYvI,GAAWm9B,QAC7B,OAAO,EAInB,OAAO,G,gCAEf,EAhFA,GAAa,EAAAoZ,kB,qOCnB+rB,kN,0bAA+F,4FAA4E,cAA3K,QAAG,gBAAH,QAAqD,aAAyB,cAA9E,6CAA+F,kF,gCAAqG,6M,4bAA2F,4FAAoE,cAA/J,QAAG,WAAH,QAAgD,aAAyB,cAAzE,6CAA2F,0E,gCAA6F,6M,6bAA8F,4FAAkE,cAAhK,QAAG,WAAH,QAAgD,aAAyB,cAAzE,6CAA8F,wE,qEAFtqC,qGAAoC,mCAChC,kFACJ,uCAAS,oFAAmB,2CAAa,mFAAkB,+CAAiB,yFAAyB,6CAA2B,+CAAiB,2GAAyC,mDAAqB,8M,6bAA0E,6FAAwE,mDAAqB,8M,6bAA0E,6FAAsE,mDAAqB,oN,6bAAgF,6FAA4E,mDAAqB,qIAA+K,mDAAqB,qIAAmK,mDAAqB,qIAAoK,mDAAqB,iN,gcAA6E,6FAA2E,mDAAqB,mN,gcAA+E,6FAA0E,+CAAuB,2CAAmB,uCAAe,uCAAS,oFAAmB,2CAAa,4OAA+B,uCAAe,mCAAW,+BAAO,gCAAC,gCAA3hD,SAAG,WAAH,SAAgD,UAAuH,SAAG,WAAH,SAAgD,UAAqH,SAAG,iBAAH,SAAsD,UAA2H,SAA+E,EAAe,SAAsG,UAA0E,EAAgB,SAA8F,UAA0E,EAAmB,YAA4F,SAAG,cAAH,SAAmD,UAA0H,SAAG,gBAAH,SAAqD,UAAsM,aAAe,cAAnlD,kEAA0G,gDAA0E,mEAA6F,gDAA0E,iEAA2F,gDAAgF,uEAAspB,gDAA6E,sEAAgG,gDAA+E,wE,spCCF7/C,yFAAyB,mCAAK,iEAAI,2CAE/B,+BAAO,+BAAC,0QAA2B,+BAAC,+FAA8B,mCAAK,kEAAI,6CAA6B,+BAAO,+BAAC,6SAAqC,+BAAC,+FAA8B,mCAAK,kEAAI,6CAAsC,+BAAO,+BAAC,2aAA2C,+BAAC,+FAA8B,mCAAK,kEAAI,6CAAgC,+BAAO,+BAAC,sSAAiC,+BAAC,yHAAwD,mCAAK,kEAAI,6CAA4B,+BAAO,+BAAC,kGAAgC,mCAAK,yFAAuB,uCAAS,iEAAG,6CAA+B,uCAAS,kJAAiG,UAAhC,c,mCAAjE,wBAAiG,6CAAyC,uCAAS,kJAA4E,UAAvB,c,0BAArD,wBAA4E,6CAAgC,uCAAS,kJAA2F,UAA1B,c,6BAAjE,wBAA2F,6CAAmC,mCAAW,+BAAO,+BAAC,iFAAwD,+BAAC,wEAA+C,+BAAC,2EAAkD,gCAAC,cAA1oC,UAAmO,UAA2H,aAAgB,cAFvV,gEAE4C,qEAAkH,8EAAiI,wEAA2I,oEAA4G,wEAAyI,6EAA8H,oEAAoI,0E,6qBCFn8B,kEAAqB,mCAAK,6IAEd,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAFc,QAEd,GAA+E,wE,gCAAquC,iEAAuB,gFAAuE,qRAAoH,aAAsC,mDAAqB,0HAA8D,iEAAI,+CAAiB,oEAAM,gCAAsB,4CAAa,cAAvL,iGAApH,QAAoH,MAAqC,gCAAhO,wFAA+U,2B,gCAAxiD,4U,kFAAwC,iB,sBAAxC,sWAA4G,mCAAK,kFAAiB,uCAAS,oFAAmB,2CAAa,0FAAwB,+CAAiB,mFAAkB,6CAAyB,+CAAiB,wa,0PAA8D,sB,8BAA9D,0fAAyF,2CAAmB,2CAAa,0FAAwB,+CAAiB,oFAAmB,6CAA0B,+CAAiB,0b,0PAAgE,sB,+BAAhE,0fAAqG,2CAAmB,2CAAa,0FAAwB,+CAAiB,iGAAgC,6CAAwC,+CAAiB,oc,0PAA8G,sB,4CAA9G,0fAAuJ,2CAAmB,uCAAe,uCAAS,qFAAmB,2CAAa,mFAAkB,+CAAiB,kXAAqJ,2CAAmB,2CAAa,kEAAI,2CAAa,qIAA6Y,uCAAe,mCAAW,mCAAK,4IAAmF,uCAAS,mIAAiC,cAAoD,uCAAS,oEAAM,6CAAwB,mCAAc,gCAAC,gCAAr1D,QAA8D,EAA4B,aAAsL,SAAkD,OAAY,EAA0B,cAAwI,SAAmD,QAAa,EAA2B,eAA4K,SAAgE,qBAA8C,EAAwC,4BAA+G,SAAY,8DAAyC,EAAuB,cAAgB,KAA8B,KAA7C,QAAyH,SAAG,EAAmB,8BAAxtC,qMAAsO,qEAA0C,6MAAqL,sEAA2C,6MAA8M,oFAAyD,6MAAu3B,SAAyD,YAAyB,SAA2C,0FAAjC,SAAiC,GAAmE,wE,qEAF56D,oIAE6H,+BAAC,oIAA41D,gCAAC,gCAF39D,QAAK,EAAe,SAE0G,QAAM,cAA2B,iB,whBCF/J,MAKI,SAAY1tC,EAAc6lD,GAF1B,KAAAC,QAAU,QAGN7sD,KAAK+G,KAAOA,EACZ/G,KAAK4sD,mBAAqBA,GAA0C,MAP/D,EAAA+E,wB,oSCEovB,oEAAgC,uCAAS,iEAAI,uCAAS,gEAAG,2CAA2C,uCAAS,4NAA4B,0CAA2C,uCAAS,mFAAiB,2CAAa,qFAAmB,+CAAiB,0FAAwB,mDAAqB,oFAAmB,6CAAyB,mDAAqB,me,0PAAgE,sB,uBAAhE,+xBAAsI,+CAAuB,2CAAmB,uCAAe,oCAAK,gCAApc,QAAa,WAAmP,SAAoF,IAApF,SAAmD,QAAa,EAAmB,OAAnF,SAAqH,OAAgB,gCAAzb,oFAAgF,iFAAsL,qEAA8C,8O,gCAAkZ,mEAAyB,wI,gCAAqC,mEAAwB,2I,gCAAkD,oJAA4F,UAAlB,c,qBAA1E,wBAA4F,sJ,qEAFpuD,4U,kFAAY,iB,sBAAZ,sWAEsB,mCAAK,kFAAiB,uCAAS,oFAAmB,2CAAa,0FAAwB,+CAAiB,6FAA4B,6CAA+B,+CAAiB,8gB,0PAA8G,sB,gCAA9G,+xBAA4L,2CAAmB,2CAAa,0FAAwB,+CAAiB,uFAAsB,6CAA6B,+CAAiB,qhB,0PAAsE,sB,0BAAtE,+xBAA4L,2CAAmB,uCAAe,mCAAW,mCAAK,qIAAgkB,mCAAK,6IAAmF,uCAAS,mIAAiC,cAAoD,uCAAS,qIAAqD,uCAAS,qIAAuD,mCAAc,mCAAK,qIAAsI,+BAAQ,gCAAC,gCAFvxD,QAAkC,EAE9B,aAAsM,SAA2I,IAA3I,SAA2C,qBAAmE,EAA4B,gBAA1I,SAA2K,IAA8J,SAA6F,IAA7F,SAAsD,WAAgB,EAAsB,UAA5F,SAAmK,SAA2E,SAAc,EAAiB,WAAguB,UAAM,EAAkB,WAAsC,SAAM,EAAiB,WAAmD,SAAwD,EAAiB,8CAFjtD,qMAE0J,oEAAgD,SAAoJ,EAAsB,UAA1K,kOAA2R,kEAA8C,SAA0H,EAAsB,UAAhJ,kOAAmzB,SAAyD,YAAyB,SAA2C,mFAAjC,SAAiC,M,u4BCFn8C,IAEA,2B,+CAIA,OAJkC,OAIlC,EAJA,CAFA,OAEkCK,mBAArB,EAAAE,gB,8WCAqI,iEAAqD,yO,gCAA6G,iEAAiD,oR,gCAAsH,iEAAgD,8J,gCAAkD,iEAAgD,8J,gCAAkD,iEAAkD,4J,gCAAgD,iEAAkD,uK,gCAAryB,0NAAuD,oDAAmD,+EAAiB,uCAAS,oIAAyJ,uCAAS,qIAA8J,uCAAS,qIAAyF,uCAAS,qIAAyF,uCAAS,qIAAyF,uCAAS,qIAAsG,mCAAU,6BAAC,gCAAp2B,QAAa,QAAuH,SAAI,6EAA8J,UAAI,yEAAmK,SAAI,qCAA2C,oCAAmD,SAAI,qCAA2C,oCAAmD,SAAI,qCAA6C,sCAAiD,SAAI,qCAA6C,uDAA7uB,6F,qEAFrE,4NAA4B,wCAEf,+BAAC,oIAAk3B,iCAAE,oW,oFAAY,iB,sBAAZ,yWAAmG,mCAAK,mFAAiB,uCAAS,qFAAmB,2CAAa,0FAAwB,+CAAiB,oGAAmC,6CAAsC,+CAAiB,ogB,0PAAqH,sB,uCAArH,+xBAAmL,2CAAmB,uCAAe,mCAAW,mCAAK,mFAAiB,uCAAS,qFAAmB,2CAAa,0FAAwB,+CAAiB,gGAA+B,6CAAkC,+CAAiB,wiB,0PAAyH,sB,mCAAgC,c,sCAAzJ,+xBAAsQ,+CAAiB,2QAA+F,2CAAmB,uCAAe,uCAAS,qFAAmB,2CAAa,0FAAwB,+CAAiB,uGAAsC,6CAAyC,+CAAiB,ijB,0PAAkI,sB,0CAAlI,+xBAAmP,2CAAmB,uCAAe,mCAAW,mCAAK,0FAAwB,uCAAS,0FAAwB,2CAAa,gZ,oGAAsG,sB,8BAA2B,e,mCAAjI,4eAAkK,2CAAa,wHAAmD,6EAAsE,2CAAa,uUAA+J,eAAsC,+CAAiB,4HAA0D,2CAAiB,uCAAe,mCAAW,mCAAK,6IAAmF,uCAAS,oIAAiC,eAAoD,uCAAS,qEAAM,+CAAwC,mCAAc,+BAAQ,gCAAC,gCAF12G,QAAa,WAEC,QAAyB,EAA6B,uBAA8zB,SAAkC,EAA4B,aAAuO,SAAyJ,IAAzJ,SAAkD,qBAAmE,EAAmC,uBAAxJ,SAAkK,IAAwP,SAA4L,IAA5L,SAA8C,wBAA2E,EAA+B,mBAAxJ,SAAqM,IAAkF,SAAuB,EAA6B,qBAAC,GAA8P,SAAyK,IAAzK,SAAqD,+BAA6E,EAAsC,0BAAxK,SAAkL,IAAyL,SAAkE,eAAoC,EAA0B,cAAoV,uFAA/J,UAA+J,MAAqC,cAFn9F,uEAEs2B,4MAA8O,2EAAuD,2OAAuW,uEAAmD,2OAAghB,8EAA0D,2OAA2W,6MAAkO,6EAAmZ,UAAyD,YAAyB,SAA2C,qFAAjC,UAAiC,GAAmE,oF,o7BCA/vE,kUAAyD,gCAAU,cAAnE,QAAqC,EAAmB,yBAAxD,QAAqC,EAAmB,0CAAC,qC,2GAFrmC,4NAA4B,wCAEf,+BAAC,oW,kFAAY,iB,sBAAZ,wWAAmG,mCAAK,mFAAiB,uCAAS,qFAAmB,2CAAa,0FAAwB,+CAAiB,gGAA+B,6CAA+B,+CAAiB,ggB,0PAAiH,sB,gCAAjH,+xBAAwK,2CAAmB,uCAAe,mCAAW,mCAAK,mFAAiB,uCAAS,qFAAmB,2CAAa,+FAA6B,+CAAiB,kFAAiB,6CAAiC,+CAAiB,0SAAmI,cAAsC,mDAAqB,2HAA0D,+CAAqB,+CAAiB,yY,kGAA4B,sB,qBAA5B,kpBAA4E,mDAAqB,iKAA4E,+CAA0B,2CAAmB,uCAAe,uCAAS,qFAAmB,2CAAa,+FAA6B,+CAAiB,4FAA2B,6CAAkC,+CAAiB,yRAAkH,cAAsC,mDAAqB,2HAA0D,+CAAqB,+CAAiB,8gB,0aAA+H,sB,+BAA/H,2yBAAoK,2CAAmB,uCAAe,uCAAS,sFAAoB,2CAAa,0FAAwB,+CAAiB,0GAAwC,mDAAqB,kEAAG,6DAAsD,mDAAqB,uEAAQ,+CAA6B,iFAA6E,2CAAmB,uCAAe,mCAAW,mCAAK,6IAAmF,uCAAS,oIAAiC,eAAoD,uCAAS,qEAAM,+CAA6B,mCAAc,+BAAQ,gCAAC,gCAFl6E,QAAa,WAEC,SAAkC,EAA4B,aAA4N,SAA8I,IAA9I,SAA8C,qBAAmE,EAA4B,gBAA7I,SAAuJ,IAAiX,qFAAnI,SAAmI,GAA2J,SAAmE,IAAnE,SAAiB,MAAW,EAAiB,KAAoD,SAAQ,EAA4B,YAA2X,qFAAlH,SAAkH,GAA2J,SAA2J,IAA3J,SAAiE,gBAA8D,EAA2B,gCAFpuD,uEAEd,4MAA0O,oEAAgD,2OAAmV,sEAAgV,2OAA2V,uEAAgU,2OAAyV,yHAAmF,oEAA6B,4HAA+H,UAAyD,YAAyB,SAA2C,qFAAjC,UAAiC,GAAmE,yE,64BCF92E,IAIA,2B,+CAGA,OAHgC,OAGhC,EAHA,CAJA,OAIgCgB,iBAAnB,EAAAQ,c,6QCFgX,kUAA4D,gCAAU,cAAtE,QAAwC,EAAmB,yBAA3D,QAAwC,EAAmB,0CAAC,qC,gCAAwzD,kUAA4D,gCAAU,cAAtE,QAAwC,EAAmB,yBAA3D,QAAwC,EAAmB,0CAAC,qC,qEAF7yE,yFAAyB,mCAAK,iEAAI,2CAEjC,+BAAO,+BAAC,gEAAG,4CAA4B,+BAAC,sU,oFAAM,iB,sBAAN,iPAA6C,mCAAK,mFAAiB,uCAAS,qFAAmB,2CAAa,0FAAwB,+CAAiB,2FAA0B,6CAAiC,+CAAiB,yX,kGAA8C,sB,8BAA9C,weAA8F,mDAAqB,iKAA+E,+CAA0B,+CAAiB,qGAAoC,6CAAqC,2CAAmB,uCAAe,mCAAW,mCAAK,0FAAwB,uCAAS,qEAAO,6CAAuC,uCAAS,2GAAyC,2CAAa,8e,6VAAgI,sB,oCAAhI,gsBAAiK,2CAAa,kIAA6D,iFAAmD,qEAAO,6CAA+C,2CAAqB,uCAAe,uCAAS,gHAA8C,2CAAa,kf,6VAAoI,sB,oCAAiC,sB,0CAArK,gsBAAyN,2CAAa,oIAA+D,iFAAqD,qEAAO,6CAAiD,2CAAqB,uCAAe,mCAAW,mCAAK,mFAAiB,uCAAS,qFAAmB,2CAAa,0FAAwB,+CAAiB,sFAAoB,mDAAqB,qFAAoB,8CAA6B,mDAAqB,uSAAkI,eAAsC,uDAAyB,4HAA0D,mDAAyB,+CAAuB,+CAAiB,8W,oGAAkC,sB,wBAAlC,2eAA4E,mDAAqB,kKAA+E,+CAA0B,+CAAiB,sGAAoC,+CAAiC,2CAAmB,uCAAe,mCAAW,mCAAK,2FAAwB,uCAAS,2FAAwB,2CAAa,iZ,sGAAsG,sB,8BAAtG,+eAAiI,2CAAa,yHAAmD,+EAA+D,2CAAa,oRAA2G,eAAsC,+CAAiB,4HAA0D,2CAAiB,uCAAe,uCAAS,sGAAoC,+CAAqC,mCAAW,mCAAK,2FAAwB,uCAAS,2FAAwB,2CAAa,uZ,sGAA4G,sB,iCAA5G,+eAA0I,2CAAa,4HAAsD,+EAAkE,2CAAa,wPAA+D,eAAsC,+CAAiB,4HAA0D,2CAAiB,uCAAe,uCAAS,sGAAoC,+CAAwC,mCAAW,iCAAE,2FAAwB,uCAAS,2FAAwB,2CAAa,uZ,sGAA4G,sB,iCAA5G,+eAA0I,2CAAa,4HAAsD,+EAAkE,uCAAe,uCAAS,sGAAoC,+CAAwC,mCAAW,mCAAK,oHAA8C,+DAAwC,+BAAQ,gCAAC,gCAArkI,SAA0B,eAAoB,EAA0B,cAA2C,SAAQ,EAA+B,eAA4V,SAA6C,qBAAsE,QAAnH,SAA6C,qBAAmF,EAAgC,oBAA4R,SAA6C,qBAAwE,UAArH,SAA6C,qBAAuF,EAAgC,oBAAsnB,uFAAlI,UAAkI,GAA0L,UAAoB,SAAc,EAAoB,QAA2C,UAAQ,EAA+B,eAAgR,UAAkE,eAAoC,EAA0B,cAAwP,uFAA3G,UAA2G,GAAyT,UAAqE,kBAAuC,EAA6B,iBAAkN,uFAA/D,UAA+D,GAAyT,UAAqE,kBAAuC,EAA6B,kCAFp9H,8DAEtB,mEAA6B,6MAA+K,sEAAkD,6MAAiR,0EAA+H,4EAAsG,6MAA2O,8DAA0D,oFAAuJ,6MAAqS,gEAA4D,sFAAqQ,mEAA8W,qNAA+P,yEAAyJ,qNAAiM,yEAAqX,6EAA2H,qNAA6M,4EAA4U,gFAA2H,qNAA6M,4EAA8H,gFAAsG,oE,mwBCA9mI,gEAAmB,uCAAS,6IAA4C,aAAoD,uCAAS,sFAAsB,2CAA2B,mCAAK,oBAAnH,wFAA5C,QAA4C,GAAmF,wE,gCAAiF,gGAA8F,2CAAa,wFAAuB,+CAAiB,oGAAgD,2CAA4C,+CAAiB,4b,sPAAsG,sB,yCAAtG,kqBAA8H,cAAwE,2CAAmB,2CAAa,yJAAmI,UAAvE,c,qCAA5D,sIAAgG,cAAmC,+CAAiB,4HAA2D,2CAAsB,wCAAS,gCAApd,SAAkL,IAAlL,SAA+B,4DAAuE,WAAuB,gBAAyM,gGAAhG,SAAgG,MAAkC,cAArd,QAAO,4DAAyC,oGAAuH,iEAAoE,6GAA9H,QAA0D,EAAoE,EAA9H,qO,gCAAxS,oEAA+B,uCAAS,gMAA0tB,uCAAS,gKAAoF,UAA9D,c,mBAAtB,wBAAoF,2CAAa,mHAAmD,sDAA+C,uCAAS,wGAAuC,6CAAwC,oCAAK,gCAAngC,QAA+B,WAA8D,+BAA0xB,6EAA+F,uF,gCAA4W,gEAAmB,uCAAS,6IAA4C,aAAoD,uCAAS,sFAAsB,2CAA2B,mCAAK,oBAAnH,wFAA5C,QAA4C,GAAmF,wE,gCAA8yB,0K,kCAA+C,c,wDAA/C,iFAA+H,+DAAiC,oHAAoD,qN,gCAAmH,0K,kCAA+C,c,wDAA/C,iFAA8H,+DAAiC,mHAAmD,qN,gCAA/qC,kEAA6B,+CAAiB,8LAAI,mCAA8C,+BAAkB,+CAAiB,gGAA+B,mDAAqB,8GAAsC,uDAAyB,yUAAsK,cAAoC,2DAA6B,mHAAkD,uDAAkC,uDAAyB,iHAA+C,2DAA6B,qIAA0S,2DAA6B,qIAAwS,2DAA6B,2K,mCAA+C,c,4CAA/C,kFAAsE,+DAAiC,wHAAuD,6GAAwF,uDAA+B,mDAA2B,+CAAsB,4CAAa,cAAnkD,gBAA6C,4BAAjD,QAAI,GAA0W,iGAAtK,SAAsK,GAA0P,UAA2G,EAAmB,4BAAyM,SAA2G,EAAkB,6CAA1/B,qCAAg2C,oF,gCAA/iD,4GAAkF,uCAAS,oEAAO,2CAAa,gKAA0nD,uCAAiB,oCAAK,cAAhpD,QAAgpD,YAApnD,gB,qEAF7iE,yFAAyB,mCAAK,iEAAI,2CAE7B,+BAAO,+BAAC,gEAAG,4CAAgC,+BAAC,6U,oFAAY,iB,sBAAZ,yWAAgF,mCAAK,kEAAI,6CAAiC,mCAAK,qIAA+L,mCAAK,qIAA0jC,mCAAK,4IAAmF,uCAAS,mIAAiC,cAAoD,uCAAS,oEAAM,6CAAwB,mCAAc,mCAAK,2FAA0B,6CAAiC,mCAAK,qIAA+L,mCAAK,qIAAuwD,mCAAK,4IAAmF,uCAAS,mIAAiC,cAAoD,uCAAS,oEAAM,6CAAwB,mCAAc,+BAAQ,gCAAC,gCAA52H,SAAkC,EAA4B,aAAiE,SAAG,EAAe,SAAkL,UAAc,EAAgB,SAA40C,SAAG,EAAe,SAAkL,UAA4C,iCAAqC,cAFj9D,kEAElB,uEAAiC,6MAAyF,yEAAyyC,SAAyD,aAAyB,SAA2C,mFAAjC,SAAiC,GAAmE,8DAAqE,yEAAs/D,SAAyD,aAAyB,SAA2C,mFAAjC,SAAiC,GAAmE,iE,4hBCF92H,mBAAa,EAAA1Z,wB,8PCEC,gEAA2B,gJ,gCAAkC,gEAA0B,4J,gCAA8C,6NAAoD,gCAAK,6DAAG,2CAA4C,gCAAK,iJAAyF,UAAzB,c,4BAAhE,wBAAyF,2CAAsC,6BAAC,cAA7O,QAAa,cAAc,cAAiC,yFAA0I,iF,gCAA+H,oEAAuB,uCAAS,mJAAkD,aAAoD,uCAAS,sFAAsB,2CAA2B,mCAAK,oBAAnH,wFAAlD,QAAkD,GAAmF,wE,gCAA+C,4NAAsD,iDAAgD,cAAtG,QAAa,cAAc,cAA2B,8F,gCAAqb,mEAAgC,mDAAqB,2IAA0C,aAAoD,mDAAqB,sFAAsB,2CAA2B,+CAAiB,oBAA3I,+FAA1C,QAA0C,GAA+F,+E,gCAA4E,gL,kCAAgH,c,+BAAhH,iFAA4I,sL,gCAAjuB,uHAAkF,uCAAS,oHAAoD,2CAAa,qFAA2D,uCAAe,uCAAS,mFAAkB,2CAAa,iFAAiB,oEAA4C,qIAAyP,+CAAiB,qIAA0M,2CAAkB,wDAA6C,uCAAS,sFAAqB,2CAAa,0KAAoJ,UAAzB,c,8CAA3H,wBAAoJ,6EAA0D,uCAAe,oCAAK,gCAAhyB,SAAc,EAAiB,2BAA2O,UAAqD,sBAAsC,8DAAphB,QAAK,sDAA8H,mCAAkhB,0CAAwF,UAA+D,sBAA2C,2BAA0C,0E,wuBAFz2D,yFAAyB,mCAAK,iEAAI,6CAE5B,+BAAO,+BAAC,qIAA4D,+BAAC,qIAAuE,+BAAC,qIAA2P,+BAAC,gMAAI,uBAAqC,yDAAgC,qIAA6M,+BAAM,+BAAC,qIAAoH,+BAAC,uGAAsC,mCAAK,iKAAgnC,+BAAM,iCAAE,2EAAkD,+BAAC,sEAA6C,+BAAC,iEAAwC,+BAAC,mEAA0C,+BAAC,qEAA4C,+BAAC,iEAAwC,gCAAC,gCAAjsE,UAAG,EAAuB,gBAAmC,SAAG,EAAsB,gBAA+C,UAA4B,EAAuB,gBAA6M,kBAAoC,gBAAxC,SAAI,GAAqE,SAAO,EAAe,SAA8L,SAA4B,EAAyB,mBAA2G,SAAI,EAA2B,4BAFz0B,sEAEsZ,sE,o6BCFxb,IAEA,2B,+CAGA,OAHyD,OAGzD,EAHA,CAFA,MAEyDjnC,6BAA5C,EAAAghD,uC,8ZCFb,IAIA,2B,+CAEA,OAF8C,OAE9C,EAFA,CAJA,MAI8ChhD,6BAAjC,EAAA0Z,4B,8ZCJb,IAEA,2B,+CAIA,OAJ+C,OAI/C,EAJA,CAFA,MAE+C1Z,6BAAlC,EAAAwnC,6B,8ZCFb,IAEA,2B,+CAGA,OAHiD,OAGjD,EAHA,CAFA,MAEiDxnC,6BAApC,EAAAwhD,+B,8ZCFb,IAEA,2B,+CAEA,OAFqD,OAErD,EAFA,CAFA,MAEqDxhD,6BAAxC,EAAAuiD,mC,8ZCFb,IAEA,2B,+CAIA,OAJ+C,OAI/C,EAJA,CAFA,MAE+CviD,6BAAlC,EAAAmiD,6B,8ZCFb,IAEA,2B,+CAOA,OAPoD,OAOpD,EAPA,CAFA,MAEoDniD,6BAAvC,EAAA2jD,kC,sVCAF,6QAAkD,aAAyD,iDAAwC,cAAtI,IAAqC,iGAAlD,QAAa,OAA+E,UAA1C,MAAyC,cAAgB,sF,gCAA0qC,sMAAqJ,+J,gCAA8D,oEAAiC,mCAAK,gEAAG,2CAAyC,mCAAK,4U,kFAAY,iB,sBAAZ,uWAAgF,uCAAS,0FAAwB,2CAAa,mFAAkB,6CAAgC,2CAAa,gKAA4E,2CAAa,qGAAoC,6CAAuE,uCAAe,uCAAS,4IAAmF,2CAAa,mIAAiC,cAAoD,2CAAa,oEAAM,6CAA0B,uCAAkB,mCAAY,gCAAC,cAA1pB,SAA0pB,YAA5lB,8BAA5G,sFAA8C,qMAAgJ,4EAA0K,iHAA+F,SAAyD,YAAyB,SAA+C,0FAAjC,SAAiC,GAAuE,0E,gCAAyE,4U,kFAAY,iB,sBAAZ,sWAAoG,mCAAK,iFAAiB,2CAAwB,mCAAK,mFAAiB,uCAAS,gGAA8B,2CAAa,gGAA+B,6CAAwC,2CAAa,ghB,0aAA4G,sB,mCAA5G,goBAAsL,cAAmD,2CAAa,qGAAoD,uEAA+G,uCAAe,mCAAW,mCAAK,2FAA0B,6CAAyB,2EAAyE,kEAAI,kGAA+J,kFAAiB,mCAAK,sFAAqB,uCAAS,sEAAQ,8CAA4B,sEAA2D,mCAAK,uGAAsC,6CAA2C,mCAAK,gGAA+B,6CAAoC,mCAAK,6OAA6C,mCAAK,mNAA6B,mCAAK,4IAAmF,uCAAS,mIAAiC,cAAoD,uCAAS,oEAAM,6CAA0B,mCAAc,gCAAC,gCAA1nD,QAAkC,EAA4B,aAAkP,SAAiE,sBAA2C,EAA+B,mBAAk4B,UAAa,GAAqC,aAAc,gCAA73C,qMAA0H,oEAAiI,oFAA2O,0GAAtL,SAAsL,EAAtL,oMAA0S,yNAAwK,wEAAyB,qJAA6E,iQAA2N,sEAA4B,qIAAsG,uFAA+E,mFAA6H,SAAyD,YAAyB,SAA2C,0FAAjC,SAAiC,GAAmE,0E,8LAFr0H,yFAAyB,mCAAK,iEAAI,2CAE/B,+BAAO,+BAAC,qIAAiK,+BAAC,+NAA4B,gCAAK,8DAAG,6CAA6C,gCAAK,iFAAkB,uCAAS,kEAAI,2CAAa,kIAAiE,qEAA4D,uCAAS,kEAAI,2CAAa,kIAAiE,qEAA4D,uCAAS,kEAAI,2CAAa,kIAAiE,qEAA4D,uCAAS,kEAAI,2CAAa,kIAAiE,qEAAyD,uCAAS,kEAAI,2CAAa,kIAAiE,qEAA4D,uCAAS,kEAAI,2CAAa,kIAAiE,qEAA2D,mCAAU,gCAAK,iOAAmB,uBAAiC,0DAA6D,gCAAK,kIAAmM,4BAAe,+BAAC,qIAAgwB,+BAAC,qIAAioD,gCAAC,gCAA32H,SAAyB,EAAwB,kBAAiH,SAAa,WAAm/B,IAAgB,cAAgC,YAAnD,SAAG,UAAgB,GAAmG,SAAkI,EAAkB,YAA+D,SAAc,EAAkB,YAAiuB,UAAgF,EAAmB,+CAFrzE,4DAE+K,sFAA+J,8EAAuJ,8EAAuJ,8EAAuJ,2EAAoJ,8EAAuJ,6EAA8H,iI,y0BCAnsC,6JAAiH,UAAzG,c,oBAAR,wBAAiH,uCAAS,qQAA+B,yBAAwD,4DAAkC,kBAA1F,UAA0F,YAA1D,SAA/D,QAAG,sBAA4B,MAAgC,cAAzL,QAAyL,YAAzE,SAAiG,wE,gCAAmD,mEAA8C,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAAuR,oJAAqG,UAA7C,c,yBAAxD,wBAAqG,gK,gCAAkD,2HAAsJ,UAApG,gB,gCAAyC,mB,gCAA3F,6RAAsJ,oCAAK,cAA3J,QAA2J,YAA1G,wB,gCAA8L,gEAA0B,sJ,gCAAkF,8OAA4B,aAAmJ,wCAAa,6DAAG,2DAAmF,wCAAa,uW,oFAAsC,iB,0BAAtC,yWAAoI,+CAAiB,gHAA2C,6CAAiC,+CAAiB,gGAA8B,mDAAqB,kGAAiC,uDAAyB,+FAA8B,gCAAS,mDAA2B,mDAAqB,kiB,0aAAqH,sB,+BAArH,2yBAAoL,+CAAuB,+CAAiB,gHAA2C,6CAAiC,+CAAiB,gGAA8B,mDAAqB,kGAAiC,uDAAyB,+FAA8B,gCAAS,mDAA2B,mDAAqB,kiB,0aAAqH,sB,+BAArH,2yBAAoL,+CAAuB,+CAAiB,oJAAiG,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAqC,+CAA0B,2CAAoB,qCAAS,gCAAptD,4GAA5B,QAAa,UAAe,GAAmQ,SAAgE,EAAkC,mBAAoV,SAA2K,IAA3K,SAA8E,UAAuC,EAA2B,eAA6W,SAA2K,IAA3K,SAA8E,UAAuC,EAA2B,gCAAnqC,+LAAgG,4MAAgM,yFAAsP,2OAAuQ,yFAAsP,2OAA4N,SAAiE,YAA+B,SAAuD,wGAAjC,SAAiC,GAA+E,mG,gCAAksB,mEAAiC,2J,gCAAp6E,oEAAoC,uCAAS,oIAA8vD,uCAAS,gEAAG,2CAAa,mOAAoB,2IAA8hB,2CAAa,qIAAkE,wDAAuD,oCAAK,gCAAp9E,QAA+E,0DAA+F,iCAA4mD,IAAiB,mSAAyhB,+BAA7iB,QAAG,WAAiB,GAA2iB,SAAM,EAA0B,qCAAkC,SAAlC,YAAkC,8B,gCAAgF,oJAA6G,UAArD,c,6BAAxD,wBAA6G,2N,gCAAmG,kIAAuO,UAAvG,mB,8BAAkC,mB,8BAAlK,qTAAuO,oCAAK,gCAA5O,QAAoB,gDAA0E,EAAiC,wB,gCAAgM,gEAAyC,iJ,gCAAmvB,mEAAqB,uDAAyB,2HAA2D,yM,gCAA2F,mEAAsB,uDAAyB,sIAAsE,2M,gCAAj7B,kEAA+B,+CAAiB,iEAAI,2CAAmC,+CAAiB,kEAAI,mDAAqB,8OAA2F,cAA4C,uDAAyB,oHAAuD,mDAAqB,8HAAmD,cAAiC,uEAAkE,+CAAsB,+CAAiB,kEAAI,6CAAgC,+CAAiB,kEAAI,mDAAqB,qIAA+K,mDAAqB,qIAA6L,+CAAsB,4CAAa,cAAh0B,+GAA3F,QAA2F,GAA4Z,SAAM,EAAc,wBAAgL,UAAM,EAAe,yCAA7xB,+GAA6E,QAAG,0DAA4O,4DAAgD,wGAAnD,SAAG,EAAgD,GAAiC,uHAA6G,8G,gCAAzoB,0FAA8D,uCAAS,oEAAO,2CAAa,gKAAiiC,uCAAiB,oCAAK,cAAvjC,QAAujC,YAAzhC,kB,gCAAmmC,gEAAiD,qJ,gCAAmR,mEAAqF,+M,gCAAiG,mEAAgD,+J,gCAA8F,0PAAmE,0GAAmhB,gCAAnhB,6WAAmhB,0BAAtlB,QAAG,WAAgE,KAAmhB,M,gCAAtiC,kEAAmC,+CAAiB,iEAAI,2CAA0C,+CAAiB,iEAAI,mDAAqB,oIAAiK,mDAAqB,qIAA8E,+CAAsB,+CAAiB,kEAAI,mDAAqB,qIAA2lB,wEAAwD,+CAAiB,2MAAI,6BAAwC,cAAkD,mEAAqD,4CAAa,gCAAxoC,QAAM,kFAA8E,wBAAkG,SAAM,6BAAyC,wBAA+F,SAAoB,EAA2B,qCAAynB,iBAAuC,4BAA3C,SAAI,MAAuC,cAAvmC,sHAAm/B,sCAAqH,yIAA5C,SAA4C,GAAkD,8G,gCAArzC,0FAAsE,uCAAS,oEAAO,2CAAa,gKAAyxC,uCAAiB,oCAAK,cAA/yC,QAA+yC,YAA7wC,sB,gCAAntK,oEAA8B,mCAAK,iEAAI,2CAAsE,mCAAK,mFAAmB,qEAAQ,2CAA+C,mCAAK,iEAAG,6CAAkC,mCAAK,qIAAkJ,mCAAK,qIAA4K,mCAAK,2FAA0B,6CAA+B,mCAAK,qIAA0D,mCAAK,qIAAghF,mCAAK,qIAA2M,mCAAK,qIAAiQ,mCAAK,2FAA0B,6CAA0B,mCAAK,qIAAoE,mCAAK,qIAA0pC,mCAAK,2FAA0B,6CAA8B,mCAAK,qIAAgF,mCAAK,qIAA05C,mCAAK,2FAA0B,+CAAqD,gCAAC,gCAAl1M,UAA8E,EAAsB,eAAmD,SAAgI,EAAqB,eAA0F,UAAG,EAAsB,eAAsC,SAAc,EAAqB,eAAk/E,UAAkF,EAA0B,mBAAoG,SAA6M,EAAyB,mBAAyF,UAAG,eAAqC,iBAAiC,SAA0B,cAAmC,iBAA+pC,UAAG,mBAA6C,qBAAqC,SAA0B,kBAA2C,wDAA5mK,0GAAsG,iFAAuD,kFAAyY,8EAAwmG,yEAAiyC,6EAAijD,gG,+IAFhgO,gGAAgC,mCAChC,iEAAI,2DACkB,mCAAK,qIAA4P,+BAAO,+BAAC,qIAAyN,+BAAC,qIAA4kN,gCAAC,gCAA3iO,SAAwE,EAAmB,aAAyK,UAAc,iBAA+B,SAA6K,SAAc,EAAe,0BADlhB,iE,mjBCDJ,mBAAa,EAAAra,wB,8ZCCb,IAEA,2B,+CAGA,OAHoC,OAGpC,EAHA,CAFA,OAEoC56B,kCAAvB,EAAAw7B,kB,8ECHb,SAAYlc,GACR,uBACA,uBACA,6CACA,uCACA,uBALJ,CAAY,EAAAA,kBAAA,EAAAA,gBAAe,M,8ECA3B,mBAAa,EAAAK,qB,8TCEW,oEAAsC,2CAAa,6IAA4C,aAAoD,2CAAa,sFAAsB,2CAA2B,uCAAS,oBAA3H,wFAA5C,QAA4C,GAAuF,wE,gCAA8D,mEAA8C,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAA2E,6OAA4B,aAA6E,mDAA0C,cAAtI,IAAe,4FAA5B,QAAa,UAAe,MAA6B,cAAgD,4F,gCAA6D,8OAA4B,aAA6E,oCAAS,6DAAG,2CAA4C,oCAAS,0LAAuL,UAAtG,c,yBAAjF,+IAAuL,2CAAa,mIAAiC,cAAoD,2CAAa,oEAAM,6CAAyC,uCAAkB,iCAAK,gCAA1f,uGAA5B,QAAa,UAAe,GAA8I,QAAmH,EAAiC,mCAAzM,gGAAqD,QAAqJ,YAAiC,SAA+C,iGAAjC,SAAiC,GAAuE,gG,gCAA4J,iEAA2B,uL,gCAAoD,iEAA4B,0J,gCAApL,kEAAuB,uCAAS,iEAAI,2CAA4B,uCAAS,oIAAsE,uCAAS,qIAA0D,oCAAK,gCAA9I,QAAI,EAAsB,gBAAqD,UAAI,EAAuB,iCAA/I,kF,gCAAgd,kGAA8F,iK,gCAAmgB,kEAAyC,uDAAyB,iEAAI,6GAAoJ,uDAAyB,iEAAI,oHAA4H,mDAAqB,oBAAlU,mNAAiL,+O,gCAArb,oFAAwC,2CAAa,6FAA6B,2CAA6B,2CAAa,qFAAqB,+CAAiB,oEAAO,mDAAqB,iKAA6Y,+CAAyB,2CAAqB,wCAAS,cAApc,SAAoc,YAA5Z,qCAApJ,sF,gCAAxwB,kFAAqC,uCAAS,oFAAmB,2CAAa,kEAAI,+CAAiB,iEAAI,2CAAwB,+CAAiB,kEAAI,mDAAqB,+FAA8B,gCAAuD,mDAAqB,qIAAqI,+CAAsB,+CAAiB,kEAAI,6CAA4B,+CAAiB,kEAAI,4EAAwJ,2CAAkB,uCAAe,uCAAS,qIAAwoB,oCAAK,gCAAhjC,SAA0D,EAAmC,6BAAsU,SAAmB,EAAoB,iDAAtnB,uEAAgG,qDAA4P,kFAAiD,2M,gCAA8xC,wFAAiD,2CAAa,wFAAuB,+CAAiB,gIAA+H,UAApC,c,oCAA3F,qIAAoC,aAA2F,yFAAyB,8BAAuB,+CAAiB,8FAA6B,6CAA+B,+CAAiB,kIAAoG,UAAhF,kB,oCAAuC,mB,oCAA3D,qPAAoG,+CAAsC,2CAAmB,wCAAS,cAA/Y,qGAApC,QAAoC,MAAkC,cAAuJ,+F,gCAAvwB,oEAAiC,uCAAS,kEAAK,2CAAa,oJAAkF,UAA1B,c,6BAAxD,wBAAkF,2EAAiE,2CAAa,2MAA+I,4EAAiE,uCAAe,uCAAS,qIAA+hB,oCAAK,cAApiB,SAAoiB,YAApf,oCAAtW,kFAA6N,2F,gCAA6tB,oJAAqJ,UAA7F,c,+BAAxD,wBAAqJ,6L,gCAAgF,+LAAoR,UAAjM,c,sBAAnF,+IAAoR,+CAAiB,kIAAiC,aAAoD,+CAAiB,mEAAM,2CAAsC,4CAAa,cAApc,QAAoc,YAAhT,gCAApJ,QAAqJ,YAA8B,SAAmJ,sGAAjC,QAAiC,GAA2E,iG,gCAAmsB,oFAA+C,mDAAqB,oJAAsF,UAA9B,c,+BAAxD,wBAAsF,2FAA8E,mDAAqB,yJAA4F,UAA/B,c,+BAA7D,wBAA4F,2FAAiF,+CAAiB,oBAAjS,6FAA+L,mG,gCAAyH,kIAAqL,UAAnH,mB,8BAAsD,mB,8BAAxH,gUAAqL,cAArL,QAAoB,EAAiK,YAApH,0B,gCAAjqB,oEAA8F,2CAAa,kFAAkB,+CAAiB,oIAAic,+CAAiB,oIAA0M,2CAAmB,wCAAS,gCAAxrB,SAAoB,EAA0B,mBAAoa,QAA2J,EAAyB,2B,gCAA3gE,oEAAkC,uCAAS,oFAAoB,2CAAa,oIAAwN,2CAAa,oIAA6c,uCAAe,uCAAS,2FAA0B,6CAAyB,uCAAS,iEAAG,6CAAwF,uCAAS,uFAAsB,2CAAa,0SAAwD,sBAAgJ,+DAA8D,uCAAe,uCAAS,qIAAq1B,oCAAK,gCAArgE,SAAoG,mBAAgD,wBAAiF,QAAoM,8CAA+E,6BAA6c,2CAAxD,SAAwD,GAAsO,SAAc,8CAA+E,gEAApiB,2EAAqC,2IAAoI,SAAyH,EAAwC,mBAAuC,gG,gCAA17I,oEAA0B,mCAAK,oIAAiK,mCAAK,oIAAoiB,mCAAK,oIAA4N,mCAAK,qIAAy0C,mCAAK,qIAAu/B,mCAAK,qIAAgmE,gCAAC,gCAA31K,QAA0D,kBAA8C,wBAA8D,QAAqE,EAAmC,6BAAic,QAAI,EAAkB,YAA2M,UAAiB,EAAmB,YAA0yC,SAAc,EAAkB,YAA49B,UAAc,EAAmB,oB,qLAFhyH,yFAAyB,mCAAK,iEAAI,+DAEV,qIAAkO,mCAAU,+BAAO,+BAAC,qIAAyN,+BAAC,qIAAy4K,gCAAC,gCAAx1L,SAAO,iBAA8B,SAA+M,UAAc,iBAA+B,SAA6K,SAAc,EAAW,sBAF7d,2E,mnBCAlC,mBAAa,EAAAsc,kB,oVCAb,yFAAyB,mCAAK,iEAAI,2CAEzB,+BAAO,+BAAC,gEAAG,6CAAoC,+BAAC,qVAAiD,+BAAC,oBAFzE,sEAEd,gF,0iBCCpB,mBAAa,EAAA5X,6B,8ECDb,mBAAa,EAAAiB,8B,qOCAq5B,gL,kCAA2G,c,+BAA3G,iFAAuI,+L,gCAAu3C,kGAA4D,0P,kGAF59E,sGAAoC,mCAChC,mFACJ,uCAAS,qFAAmB,2CAAa,wFAAuB,+CAAiB,0FAAyB,6CAAwB,+CAAiB,2GAAyC,mDAAqB,gN,6bAA4E,6FAAgF,mDAAqB,6M,6bAAyE,6FAAyE,mDAAqB,6M,6bAAyE,6FAA0E,+CAAuB,2CAAmB,2CAAa,oFAAkB,+CAAiB,iGAAgC,yFAA8D,sFAAqB,uDAAyB,qIAAqN,mDAA2B,+CAAuB,+CAAiB,2GAAyC,mDAAqB,+N,6bAA2F,6FAAqF,mDAAqB,8N,+bAA0F,6FAAoF,mDAAqB,4N,gcAAwF,6FAAkF,mDAAqB,gO,gcAA4F,6FAAsF,mDAAqB,iO,gcAA6F,6FAAgF,mDAAqB,4N,gcAAuF,mGAA+E,uFAAqB,2DAA6B,sIAA8J,uDAA+B,mDAAyB,+CAAuB,2CAAmB,uCAAe,uCAAS,qFAAmB,2CAAa,8OAA+B,uCAAe,mCAAW,+BAAO,gCAAC,gCAAxkF,SAAG,aAAH,SAAkD,UAA+H,SAAG,UAAH,SAA+C,UAAwH,SAAG,UAAH,SAA+C,UAA0U,UAAqD,EAAyB,kBAAwQ,SAAG,4BAAH,SAAiE,UAAoI,SAAG,2BAAH,SAAgE,UAAmI,SAAG,yBAAH,SAA8D,UAAiI,SAAG,6BAAH,SAAkE,UAAqI,SAAG,8BAAH,SAAmE,UAA+H,SAAG,iBAAH,SAA6D,UAA2J,WAAkC,EAAyB,kBAA6P,cAAe,cAA7nF,+DAAuG,gDAA4E,2EAAqG,gDAAyE,oEAA8F,gDAAyE,qEAAoM,iEAAkc,gDAA2F,gFAA0G,gDAA0F,+EAAyG,gDAAwF,6EAAuG,gDAA4F,iFAA2G,gDAA6F,2EAAqG,gDAAuF,gF,+oBCA56D,kUAAiE,gCAAU,cAA3E,QAAgD,EAAgB,sBAAhE,QAAgD,EAAgB,uCAAC,qC,gCAA0L,kUAAyD,gCAAU,cAAnE,QAAwC,EAAgB,sBAAxD,QAAwC,EAAgB,uCAAC,qC,gCAA3M,mEAA4D,uDAAyB,uVAAoC,uDAAyB,gKAA4E,oDAAqB,gCAA9J,QAAQ,KAAR,QAAQ,KAAqD,QAAQ,EAA+B,uB,gCAA8O,mEAA8E,sGAAuE,sKAA8F,mGAAyE,uCAAS,W,gCAAwB,mEAA+C,sGAAuE,0KAAkG,uGAA6E,uCAAS,W,gCAAwB,mEAA+C,8KAAmJ,W,gCAAwB,mEAA4C,gJAA2H,W,gCAAwB,mEAA2C,uNAA2L,W,gCAAwB,mEAAkD,4KAAsJ,W,gCAAwB,mEAA8C,8OAAkN,W,gCAAwB,mEAA+C,mLAAwJ,W,gCAAwB,mEAA0C,oLAAyJ,W,gCAAwB,mEAAgD,6OAA6M,W,gCAAwB,mEAA8C,0MAA0K,W,gCAAwB,mEAA6C,gPAAgN,W,gCAAsI,mEAAqC,6HAA8F,W,gCAAjP,mEAAiG,2CAAa,oIAA0I,sGAAuE,wKAAgG,qGAA2E,wCAAS,cAArY,QAAM,cAA+X,YAA/X,UAA8B,M,gCAAyX,mEAA8C,gEAAiC,8MAAsJ,mEAAyC,2FAA6D,W,gCAAwB,mEAAiF,sGAAuE,2KAAmG,wGAA8E,wCAAU,W,gCAAwB,mEAAqD,8QAAwP,W,gCAAwB,mEAA6C,4VAAqU,W,gCAAwB,mEAA8C,gOAAqM,W,gCAAwB,mEAA6C,wLAAkK,W,gCAAwB,mEAAgD,+MAAyL,W,gCAAwB,mEAA8C,6KAAuJ,W,gCAAwB,mEAAqD,0OAAoN,W,gCAAwB,mEAA8C,oPAAoN,W,gCAAwB,mEAAgD,gTAAoR,W,gCAAwB,mEAA+C,ibAA6Z,W,gCAAwB,mEAA+C,8UAA6S,W,gCAAwB,mEAA8C,oQAAyO,W,gCAAwB,mEAAoD,gNAA0L,W,gCAAwB,mEAAgD,oXAAwV,mEAAM,4CAAsB,wCAAU,W,gCAAwB,mEAA+C,0OAA+M,W,gCAAwB,mEAA+C,sNAAsL,W,gCAAwB,oEAA6C,sIAAuG,wIAAgE,wDAA+B,4EAA8C,mEAAM,yCAAmB,kEAAoC,mEAAM,2DAAqC,oDAAsB,oEAAM,yFAAmE,sEAAwC,oEAAM,8CAAwB,+DAAiC,W,iCAAwB,mEAAoD,yTAA6R,W,iCAAwB,mEAA+C,mMAAwK,W,iCAAwB,mEAA+C,mVAAiT,W,iCAAwB,mEAA4C,sPAA2N,W,iCAAwB,mEAA6C,wPAA6N,W,iCAAwB,mEAA8C,2OAAgN,W,iCAAwB,mEAAgD,qQAA0O,W,iCAAwB,mEAAgD,kPAA4N,W,iCAAwB,mEAAqD,sPAAgO,W,iCAAwB,mEAA2C,mSAAsQ,W,iCAAwB,mEAAiD,+HAAgG,W,iCAAwB,mEAAgD,8LAAmK,W,iCAAwB,mEAAiD,mQAAwO,W,iCAAwB,mEAAgD,2MAA0K,W,iCAAwB,mEAA+C,4MAAiL,W,iCAAwB,mEAA+C,8TAA6R,W,iCAAzyc,6OAAgF,oCAAS,iIAAoV,oCAAS,iIAA6T,oCAAS,kIAAiN,oCAAS,kIAAsL,oCAAS,kIAAqP,oCAAS,kIAAuN,oCAAS,kIAA+Q,oCAAS,kIAAsN,oCAAS,kIAAkN,oCAAS,kIAA4Q,oCAAS,kIAAuO,oCAAS,kIAA4Q,oCAAS,kIAAkgB,oCAAS,kIAA0V,oCAAS,kIAAkW,oCAAS,kIAA4T,oCAAS,kIAAiY,oCAAS,kIAAkQ,oCAAS,kIAA8N,oCAAS,kIAAwP,oCAAS,kIAAoN,oCAAS,kIAAwR,oCAAS,kIAAiR,oCAAS,kIAAmV,oCAAS,kIAA2d,oCAAS,kIAA2W,oCAAS,kIAAsS,oCAAS,kIAA6P,oCAAS,kIAA6b,oCAAS,kIAA6Q,oCAAS,kIAAoP,oCAAS,kIAA8lB,oCAAS,oIAAgW,oCAAS,oIAAsO,oCAAS,oIAA+W,oCAAS,oIAAsR,oCAAS,oIAAyR,oCAAS,oIAA6Q,oCAAS,oIAAyS,oCAAS,oIAA2R,oCAAS,oIAAoS,oCAAS,oIAAgU,oCAAS,oIAAgK,oCAAS,oIAAkO,oCAAS,oIAAwS,oCAAS,oIAAyO,oCAAS,oIAA+O,oCAAS,oIAA2V,iCAAK,gCAA7zc,QAAa,OAAY,6DAAgE,QAAc,uDAA+U,QAAc,0BAAwT,SAAc,0BAA4M,SAAc,uBAAiL,SAAc,sBAAgP,SAAc,6BAAkN,SAAc,yBAA0Q,SAAc,0BAAiN,SAAc,qBAA6M,SAAc,2BAAuQ,SAAc,yBAAkO,SAAc,wBAAuQ,SAAc,wEAA6f,SAAc,yBAAqV,SAAc,0DAA6V,SAAc,gCAAuT,SAAc,wBAA4X,SAAc,yBAA6P,SAAc,wBAAyN,SAAc,2BAAmP,SAAc,yBAA+M,SAAc,gCAAmR,SAAc,yBAA4Q,SAAc,2BAA8U,SAAc,0BAAsd,SAAc,0BAAsW,SAAc,yBAAiS,SAAc,+BAAwP,SAAc,2BAAwb,SAAc,0BAAwQ,SAAc,0BAA+O,SAAc,wBAAylB,UAAc,+BAA2V,UAAc,0BAAiO,UAAc,0BAA0W,UAAc,uBAAiR,UAAc,wBAAoR,UAAc,yBAAwQ,UAAc,2BAAoS,UAAc,2BAAsR,UAAc,gCAA+R,UAAc,sBAA2T,UAAc,4BAA2J,UAAc,2BAA6N,UAAc,4BAAmS,UAAc,2BAAoO,UAAc,0BAA0O,UAAc,4BAAgC,M,sEAFrzd,yFAAyB,mCAAK,iEAAI,2CAE9B,+BAAO,+BAAC,4U,kFAAY,iB,sBAAZ,wWAAgF,mCAAK,mFAAiB,uCAAS,qFAAmB,2CAAa,0FAAwB,+CAAiB,mFAAkB,gDAAoC,+CAAiB,6Y,kGAAgC,sB,wBAAhC,kpBAAmF,mDAAqB,iKAAoF,mDAAqB,qIAAkQ,+CAA0B,2CAAmB,uCAAe,mCAAW,mCAAK,sIAA20c,mCAAK,mFAAiB,uCAAS,qFAAmB,2CAAa,yFAAwB,+CAAiB,mFAAkB,gDAAwC,+CAAiB,gJAAmE,2CAAmB,uCAAe,mCAAW,mCAAK,0FAAwB,uCAAS,2FAA0B,6CAA4C,uCAAS,2a,0PAAqE,sB,8BAArE,0fAA2G,mCAAW,mCAAK,4IAAmF,uCAAS,mIAAiC,cAAoD,uCAAS,oEAAM,6CAA8B,mCAAc,+BAAQ,gCAAC,gCAAj3f,SAAkC,EAA4B,aAAiM,SAA0E,IAA1E,SAAkB,SAAc,EAAoB,QAAoD,SAAQ,EAAuC,uBAA0D,SAAc,mBAA6C,sBAAmR,SAAiE,EAAc,QAAopd,SAAiD,eAAoB,EAA0B,+BAF1kf,iEAEtB,4MAA0M,sEAAqD,2OAAo+d,0EAAyO,iFAAqD,6MAA2H,SAAyD,YAAyB,SAA2C,mFAAjC,SAAiC,GAAmE,uE,2uBCFx0f,4U,kFAAY,iB,sBAAZ,sWAEsB,mCAAK,yFAAyB,uCAAS,iEAAI,6CAA6B,mCAAW,mCAAK,iEAAG,6CAAqC,mCAAK,8NAA4B,0CAA4C,mCAAK,mFAAiB,uCAAS,gGAA8B,2CAAa,qFAAoB,6CAA+B,2CAAa,8W,kGAAuD,sB,wBAAvD,weAA4E,+CAAiB,6UAAqB,kCAAc,+CAAiB,4UAAoB,iCAAa,2CAAsB,uCAAe,mCAAW,mCAAK,mFAAiB,uCAAS,gGAA8B,2CAAa,6FAA4B,6CAA+B,2CAAa,yf,0PAAsG,sB,gCAAtG,+xBAA6J,uCAAe,mCAAW,mCAAK,4IAAmF,uCAAS,mIAAiC,cAAoD,uCAAS,oEAAM,6CAA+B,mCAAc,+BAAQ,gCAAC,gCAFnpC,QACc,EACO,aAAsI,SAAa,WAAqM,SAAyC,SAAc,EAAoB,QAAkB,SAAQ,QAAR,SAAQ,QAA4C,SAAQ,OAAR,SAAQ,OAA2N,SAAmI,IAAnI,SAA2C,iBAA2D,EAA4B,gBAAlI,SAA4I,OAAgB,cAF73B,qMAEiE,qEAAgD,8EAAsE,2EAA0I,oEAA4C,6MAAwU,oEAA4C,2OAA4L,SAAyD,YAAyB,SAA2C,mFAAjC,SAAiC,GAAmE,wE,w2DCF7lC,WAUA,SAEA,aAQI,WAAsBzhB,EAAwC5lB,EAChDU,EAAsDopC,EACtD9O,EAAsC/qB,GAF9B,KAAA2V,gBAAwC,KAAA5lB,cAChD,KAAAU,uBAAsD,KAAAopC,gBACtD,KAAA9O,eAAsC,KAAA/qB,MAT1C,KAAA8+E,QAAU,IAAI,EAAA/tE,aAIxB,KAAAqnB,OAAyB,OACzB,KAAAi9C,cAAe,EAwDnB,OAlDU,YAAAx/D,OAAN,W,oGACI,OAA2B,MAAvBxlB,KAAKylB,gBAAkD,KAAxBzlB,KAAKylB,gBACpCzlB,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,0BACvB,KAGY,GAAMD,KAAKslB,cAAcK,aAAa3lB,KAAKylB,eAAgB,O,OACrD,OADhBwrD,EAAU,SACM,GAAMjxE,KAAKslB,cAAc8rD,c,UAC1B,OADf8X,EAAgB,WACkB,MAAXjY,GAAmBiY,IAAkBjY,EAA9D,Y,iBAGiB,O,sBADbjxE,KAAK6lB,YAAc7lB,KAAKkkD,gBACX,GAAMlkD,KAAK6lB,a,OAIxB,OAJMvlB,EAAO,SACbN,KAAKI,qBAAqB6qB,WAAW,iBACrCjrB,KAAK0uF,aAAapuF,GAClBN,KAAKypC,QACL,GAAMzpC,KAAKqkD,gB,cAAX,S,6DAGJrkD,KAAKI,qBAAqBU,UAAU,QAASd,KAAKN,YAAYO,EAAE,iBAC5DD,KAAKN,YAAYO,EAAE,0B,mCAI/B,YAAAolF,eAAA,WACIrlF,KAAKI,qBAAqB6qB,WAAW,qCACrCjrB,KAAKglF,cAAgBhlF,KAAKglF,aAC1B50E,SAAS80B,eAAe,kBAAkBjxB,SAGpC,YAAAw1B,MAAV,WACIzpC,KAAKyuF,QAAQ73E,QAGP,YAAAstC,cAAV,WACI,OAAOlkD,KAAKwpC,cAAcmlD,UAAU3uF,KAAK+nC,SAGnC,YAAAqc,YAAV,SAAsBwqC,GAClB,OAAO5uF,KAAKwpC,cAAc4a,YAAYwqC,EAAQ5uF,KAAK+nC,SAGvC,YAAAsc,aAAhB,W,0FACI,SAAMrkD,KAAK06B,aAAa6B,QAAQ,EAAAtS,UAAUgH,2B,cAA1C,S,YAGI,YAAAy9D,aAAR,SAAqBG,GACjB,IAAMvnE,EAAWtnB,KAAKokD,cACtBpkD,KAAKI,qBAAqB2+C,SAAS/+C,KAAK2P,IAAKk/E,EAAK,CAAE5mF,KAAM,cAAgBqf,IAElF,EA9DA,GAAa,EAAAoiB,mB,uQCVM,yNAAmE,iDAAkD,cAArH,QAAa,WAAW,cAA2C,gG,gCAA46B,oEAAoD,mCAAK,kFAAiB,uCAAS,+FAA8B,2CAAa,uFAAuB,2CAA6B,2CAAa,wc,0aAA0E,sB,kCAA+C,a,2BAAzH,mmBAAgJ,uCAAe,uCAAS,gGAA8B,2CAAa,6FAA4B,6CAAkC,2CAAa,sc,0PAA0F,sB,uCAAoC,a,2BAA9H,2oBAAqJ,uCAAe,mCAAW,mCAAK,0FAAwB,uCAAS,0FAAwB,2CAAa,sX,oGAAgE,e,2BAAyC,sB,oCAAzG,0eAAyL,2CAAa,sHAAiD,6CAA+B,uCAAe,uCAAS,0FAAwB,2CAAa,0X,oGAAoE,e,2BAAyC,sB,uCAA7G,0eAAmM,2CAAa,0HAAqD,6CAAkC,uCAAe,mCAAW,gCAAC,gCAA7qC,SAA0E,EAA8B,kBAAsL,SAA4D,KAA5D,SAA0F,EAAmC,uBAA6H,SAA0I,qCAA8C,iCAA/E,EAAgC,oBAA0M,SAAiJ,qCAAiD,oCAArF,EAAmC,wCAAriC,sEAA0C,6MAA+O,8EAA+C,gQAA0P,6MAAuP,2EAA4F,6MAAqQ,iF,gCAA6E,qEAAkD,mCAAK,kFAAiB,uCAAS,+FAA8B,2CAAa,oFAAoB,2CAA2B,2CAAa,sc,0aAAwE,sB,gCAA6C,a,2BAAuB,e,6BAA5I,mmBAAuK,uCAAe,uCAAS,gGAA8B,2CAAa,yFAAwB,6CAA+B,2CAAa,wc,0aAA0E,a,2BAAuC,sB,mCAAgC,e,gCAAjJ,mmBAA+K,uCAAe,uCAAS,gGAA8B,2CAAa,0FAAyB,6CAA+B,2CAAa,yc,0aAA2E,a,2BAAuC,sB,oCAAiC,e,iCAAnJ,mmBAAkL,uCAAe,mCAAW,mCAAK,0FAAwB,uCAAS,0FAAwB,2CAAa,qX,oGAA+D,e,2BAAyC,sB,mCAAxG,0eAAyL,2CAAa,qHAAgD,gCAAW,uCAAe,uCAAS,0FAAwB,2CAAa,qX,oGAA+D,e,2BAAyC,sB,mCAAxG,0eAAyL,2CAAa,qHAAgD,gCAAW,uCAAe,uCAAS,0FAAwB,2CAAa,mX,oGAA6D,e,2BAAyC,sB,gCAAtG,0eAAkL,2CAAa,mHAA8C,gCAAW,uCAAe,uCAAS,0FAAwB,2CAAa,mX,oGAA6D,e,2BAAyC,sB,iCAAtG,0eAAmL,2CAAa,oHAA8C,qCAAoB,uCAAe,uCAAS,2FAAwB,2CAAa,sX,sGAA+D,e,2BAAyC,sB,gCAAxG,idAAqI,2CAAa,sHAAgD,+CAA8B,uCAAe,mCAAW,gCAAC,gCAAv2E,SAAwE,EAA4B,gBAA0M,SAAiH,EAA+B,mBAAuK,SAAkH,EAAgC,oBAAqI,SAAwI,qCAAgD,mCAAhF,EAA+B,mBAAuL,SAAwI,qCAAgD,mCAAhF,EAA+B,mBAAuL,SAAmI,qCAA8C,iCAA3E,EAA4B,gBAAmL,SAAoI,qCAA8C,iCAA5E,EAA6B,iBAA4L,UAAwG,EAA4B,iCAAxxE,oEAAwC,6MAAkQ,2EAA4C,6MAA2Q,2EAA4C,6MAAuR,6MAA8T,6MAA8T,6MAAqT,6MAA+T,qNAAkM,gF,uNAFp2J,yFAAyB,mCAAK,iEAAI,2CAEvB,+BAAO,+BAAC,qIAAmI,+BAAC,+GAA8C,mCAAK,wFAAuB,uCAAS,mK,sJAA8B,cAA2D,mCAAW,+BAAO,+BAAC,0FAAwB,mCAAK,4GAA0C,uCAAS,+d,6VAA6G,e,2BAAyB,sB,8BAAtI,krBAAiK,uCAAS,6HAAwD,6CAA6B,mCAAW,mCAAK,4GAA0C,uCAAS,me,6VAAiH,e,2BAAyB,sB,8BAA1I,krBAAqK,uCAAS,+HAA0D,6CAA+B,mCAAW,+BAAO,+BAAC,qIAA23C,+BAAC,qIAA8iF,+BAAC,sFAAoB,mCAAK,mEAAK,uCAAS,2IAAqE,UAAvB,c,0BAA9C,wBAAqE,qEAA8D,uCAAS,qJAAyE,UAAjB,c,oBAAxD,wBAAyE,qEAAwD,mCAAW,mCAAK,sFAAqB,uCAAS,qJAAoI,UAA5E,c,uBAAxD,sIAAwF,cAA4C,2CAAa,uHAAsD,uCAAkB,mCAAW,+BAAO,+BAAC,qEAA4C,gCAAC,gCAArhL,SAAyB,qCAAyC,kCAAiV,SAA8B,OAAY,YAA1C,SAA8B,OAAwG,EAA0B,cAAkK,SAAgC,OAAY,cAA5C,SAAgC,OAA0G,EAA0B,cAAsH,SAAc,+BAA82C,SAAc,6BAA29F,2FAAxF,SAAwF,MAA2C,gCAFh3K,oEAEsO,2CAAsC,WAApE,SAA8B,GAA8J,6MAAkO,kEAAgG,6MAAwO,oEAAykI,4EAAgJ,yE,6/DCFzqK,WAaA,aAUI,WAAsB3M,EACR38B,EAAsDV,EACxDiQ,GAFU,KAAAotB,4BACR,KAAA38B,uBAAsD,KAAAV,cACxD,KAAAiQ,MAXH,KAAAm/E,YAAsB,EACrB,KAAAC,WAAa,IAAI,EAAAruE,aAE3B,KAAAuP,QAAe,GACf,KAAA7mB,SAAmB,IACnB,KAAAgQ,aAAc,EACd,KAAA41E,gBAAiB,EA6ErB,OAtEU,YAAAjtF,SAAN,W,kGAC4B,SAAM/B,KAAK+8B,0BAA0Be,c,OAK7C,OALVmxD,EAAkB,SACxBjvF,KAAKiwB,QAAUg/D,EAAgB,GAC/BjvF,KAAK2uC,sBAAwBsgD,EAAgB,GAC7CjvF,KAAKgvF,gBAAkBhvF,KAAKiwB,QAAQ+pD,UACpCh6E,KAAKiwB,QAAQhoB,KAA6B,eAAtBjI,KAAKiwB,QAAQhoB,KAAwB,aAAe,WACxE,EAAAjI,KAAgB,GAAMA,KAAK+8B,0BAA0Ba,iBAAiB59B,KAAKiwB,U,OAE3E,OAFA,EAAK7mB,SAAW,SAChBpJ,KAAKI,qBAAqB6qB,WAAW,sBACrC,GAAMjrB,KAAK+8B,0BAA0Bs/C,WAAWr8E,KAAKoJ,W,cAArD,S,YAGE,YAAA8lF,cAAN,W,0FAEI,OADAlvF,KAAKi8E,aAAY,GACjB,GAAMj8E,KAAK+8B,0BAA0Bs/C,WAAWr8E,KAAKoJ,W,cAArD,SACApJ,KAAKI,qBAAqB6qB,WAAW,wB,YAGnC,YAAAkkE,YAAN,W,gGAEoB,OADhBnvF,KAAKg9E,mBACL,EAAAh9E,KAAgB,GAAMA,KAAK+8B,0BAA0Ba,iBAAiB59B,KAAKiwB,U,cAA3E,EAAK7mB,SAAW,S,YAGd,YAAA6yE,YAAN,SAAkBmT,G,YAAA,IAAAA,OAAA,G,mFAEd,OADApvF,KAAKg9E,mBACL,GAAMh9E,KAAK+8B,0BAA0Bk/C,YAAYj8E,KAAKiwB,U,cAAtD,SAEIm/D,EACA,GAAMpvF,KAAKovF,cADX,M,OACA,S,mCAIF,YAAAA,WAAN,W,gGACoB,OAAhB,EAAApvF,KAAgB,GAAMA,KAAK+8B,0BAA0Ba,iBAAiB59B,KAAKiwB,U,OAC3E,OADA,EAAK7mB,SAAW,SAChB,GAAMpJ,KAAK+8B,0BAA0Bs/C,WAAWr8E,KAAKoJ,W,cAArD,SACApJ,KAAKI,qBAAqB6qB,WAAW,wB,YAGzC,YAAAkR,KAAA,WACIn8B,KAAKI,qBAAqB6qB,WAAW,6BACrC,IAAMokE,EAA0B,MAAZrvF,KAAK2P,IAAc,CAAE7E,OAAQ9K,KAAK2P,KAAQ,KAC9D3P,KAAKI,qBAAqBk8B,gBAAgBt8B,KAAKoJ,SAAUimF,GACzDrvF,KAAKI,qBAAqBU,UAAU,OAAQ,KACxCd,KAAKN,YAAYO,EAAE,cAAeD,KAAKN,YAAYO,EAAE,eAG7D,YAAAm7B,OAAA,WACIp7B,KAAKI,qBAAqB6qB,WAAW,+BACrCjrB,KAAK+uF,WAAWn4E,KAAK5W,KAAKoJ,WAG9B,YAAAkmF,cAAA,WACItvF,KAAKoZ,aAAepZ,KAAKoZ,aAGrB,YAAA4jE,iBAAR,WAII,GAFAh9E,KAAKiwB,QAAQ+pD,WAAah6E,KAAKgvF,iBAE1BhvF,KAAKiwB,QAAQiqD,WAAcl6E,KAAKiwB,QAAQmqD,WAAcp6E,KAAKiwB,QAAQxc,QAAWzT,KAAKiwB,QAAQqqD,WAC5Ft6E,KAAKiwB,QAAQmqD,WAAY,EACT,MAAZp6E,KAAK2P,KAAa,CAClB,IAAMyqE,EAAYp6E,KAAK2P,IAAIS,SAASrN,cAAc,cAC9Cq3E,IACAA,EAAU/+C,SAAU,GAKhCr7B,KAAK+8B,0BAA0BigD,iBAAiBh9E,KAAKiwB,QAASjwB,KAAK2uC,wBAE3E,EApFA,GAAa,EAAAwR,8B,g7CCLb,iBAGI,WAAsBpjB,EACR38B,EAAsDV,EACxDiQ,GAFU,KAAAotB,4BACR,KAAA38B,uBAAsD,KAAAV,cACxD,KAAAiQ,MAJZ,KAAAkwC,QAAsC,GAsB1C,OAhBU,YAAA99C,SAAN,W,gGACmB,OAAf,EAAA/B,KAAe,GAAMA,KAAK+8B,0BAA0Bm/C,c,cAApD,EAAKr8B,QAAU,S,YAGnB,YAAA3oC,MAAA,WACIlX,KAAK6/C,QAAU,GACf7/C,KAAK+8B,0BAA0B7lB,SAGnC,YAAAilB,KAAA,SAAK/yB,GACDpJ,KAAKI,qBAAqB6qB,WAAW,8BACrC,IAAMokE,EAA0B,MAAZrvF,KAAK2P,IAAc,CAAE7E,OAAQ9K,KAAK2P,KAAQ,KAC9D3P,KAAKI,qBAAqBk8B,gBAAgBlzB,EAAUimF,GACpDrvF,KAAKI,qBAAqBU,UAAU,OAAQ,KACxCd,KAAKN,YAAYO,EAAE,cAAeD,KAAKN,YAAYO,EAAE,eAEjE,EAvBA,GAAa,EAAA8/C,qC,+PCNyxB,gEAAiB,qJ,gCAA0E,6OAA4B,aAA+D,iEAA2E,cAAzJ,IAAe,mGAA5B,QAAa,UAAe,MAA6B,gCAAkC,mH,gCAAkG,4OAA2B,aAAiE,iEAAkG,cAAjL,IAAc,sGAA3B,QAAa,SAAc,MAAgC,gCAAiC,0I,gCAA6vB,iEAAoC,mF,gCAAllB,4GAA8E,+CAAiB,kFAAiB,mDAAqB,+FAA+B,uDAAyB,2GAAiD,mDAA2B,mDAAqB,oFAAmB,uDAAyB,qFAAoB,gCAAgB,uDAAyB,gFAAmC,uDAAyB,iFAAgB,8CAAiC,uDAAyB,kEAAI,2DAA6B,iKAA8C,uDAA8B,mDAA2B,mDAAqB,qFAAmB,uDAAyB,mEAAI,2DAA6B,kEAAI,6CAAyB,2DAA6B,kEAAI,gCAAiB,2DAA6B,kEAAI,6CAA+B,2DAA6B,kEAAI,6CAA4B,2DAA6B,kEAAI,6CAAgC,2DAA6B,kEAAI,6CAA0C,2DAA6B,kEAAI,6CAAgC,2DAA6B,kEAAI,6CAAyC,uDAA8B,mDAA2B,+CAAuB,4CAAa,cAAzwB,SAAI,EAA+B,gDAApZ,QAAK,EAAkB,4BAA0I,oCAAyC,SAAG,EAA2B,+BAA8C,qGAAwS,6FAA0D,qCAAkD,mGAAgE,gHAA6D,oGAAiE,+HAA2E,oGAAiE,iI,gCAAvwC,yGAAyE,2CAAa,gKAA4zC,wCAAS,cAAr0C,QAAq0C,YAA/xC,0B,gCAApjB,oEAA6B,uCAAS,oIAAoL,uCAAS,oIAA4M,uCAAS,oIAAg6C,oCAAK,gCAAvzD,SAA0D,EAAgC,yBAAmG,QAA4D,EAA+B,yBAA0H,QAAyC,EAA+B,iC,gCAArnB,kFAA2D,mCAAK,oIAAgD,mCAAK,oIAA42D,gCAAC,gCAAl6D,QAAG,EAAa,OAAqC,SAAc,EAAc,e,8IAFv3B,yFAAyB,mCAAK,iEAAI,2CAExB,+BAAO,+BAAC,iEAAG,6CAA2B,+BAAC,6U,oFAAY,iB,sBAAZ,yWAAgF,mCAAK,mFAAiB,uCAAS,gGAA8B,2CAAa,uFAAsB,6CAA6B,2CAAa,id,0PAAsE,sB,0BAAtE,oqBAAsG,2CAAa,qGAAoC,6CAA6C,uCAAe,mCAAW,mCAAK,4IAAmF,uCAAS,mIAAiC,cAAoD,uCAAS,oEAAM,6CAAiC,mCAAc,+BAAQ,+BAAC,qIAAw+D,gCAAC,gCAA9pF,SAAkC,EAA4B,aAA4J,SAA6F,IAA7F,SAAiC,WAAqC,EAAsB,UAA+X,UAAkB,wBAAwC,kCAF9vB,uEAEb,oEAA4B,6MAAgL,kEAA0C,2OAAuJ,kFAA4E,SAAyD,aAAyB,SAA2C,mFAAjC,SAAiC,GAAmE,0E,wtBCAlpB,oEAAoC,2CAAa,6IAA4C,aAAoD,2CAAa,sFAAsB,2CAA2B,uCAAS,oBAA3H,wFAA5C,QAA4C,GAAuF,wE,gCAA4G,kEAAmC,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAA4E,6OAA4B,aAAsD,yDAA4C,cAAjH,IAAe,4FAA5B,QAAa,UAAe,MAA6B,cAAyB,yF,gCAAivB,mEAAwD,2DAA6B,kL,iHAAuC,aAAmD,2DAA6B,sFAAsB,2CAA0B,uDAAyB,oBAAzJ,4GAAvC,QAAuC,GAAsG,4F,gCAA2F,mEAAuC,2DAA6B,kL,iHAAuC,aAAwF,2DAA6B,sFAAsB,2CAA+B,uDAAyB,oBAAnM,iHAAvC,QAAuC,GAA2I,iG,gCAAr6B,kEAA8B,mDAAqB,4FAA4B,uDAAyB,8NAA8C,mDAA0B,mDAAqB,6FAA4B,uDAAyB,4J,mCAAyB,c,+CAAzB,iFAAmD,cAA8B,gCAAc,uDAAyB,qIAAoS,uDAAyB,qIAA6T,uDAAyB,kEAAI,uDAAyB,qEAAO,gCAAsB,mDAA0B,mDAAqB,wFAAuB,uDAAyB,mGAAkC,qGAA6H,mDAA0B,gDAAiB,gCAAhwC,QAAgB,EAAY,mBAA8O,UAAc,kBAAyC,kCAAsQ,SAAc,EAAwB,qEAAxa,qGAAnD,SAAmD,GAA8B,mCAA8tB,uCAAuJ,uJ,gCAAhgD,oEAAqC,uCAAS,4OAA2B,aAA0C,4EAAqG,uCAAS,0HAA0D,2CAAa,qEAAO,+CAAiB,iKAA62C,2CAAqB,uCAAiB,oCAAK,gCAA/oD,wGAA3B,QAAa,SAAc,GAAuP,SAAI,EAAyB,4CAA1O,8J,gCAA7S,kFAAoC,mCAAK,oIAA4I,mCAAK,oIAAuuD,gCAAC,gCAAz3D,SAA0D,EAAuB,gBAAgE,QAAc,EAAsB,wB,kOAFhuB,yFAAyB,mCAAK,iEAAI,+DAEN,oIAAgO,mCAAU,+BAAO,+BAAC,iEAAG,6CAA0C,+BAAC,qIAAqM,+BAAC,qIAAw6D,+BAAC,mEAA0C,gCAAC,gCAA17E,QAAO,eAA4B,SAA6P,UAAK,eAA6B,SAAoK,SAAkB,EAAiB,4BAFngB,4EAE+O,sF,i1BCAnP,oEAAoC,2CAAa,6IAA4C,aAAoD,2CAAa,sFAAsB,2CAA2B,uCAAS,oBAA3H,wFAA5C,QAA4C,GAAuF,wE,gCAA8G,kEAAmC,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAA4E,6OAA4B,aAAsD,yDAA8C,cAAnH,IAAe,4FAA5B,QAAa,UAAe,MAA6B,cAAyB,2F,gCAAuvB,mEAAwD,2DAA6B,kL,iHAAuC,aAAmD,2DAA6B,sFAAsB,2CAA0B,uDAAyB,oBAAzJ,4GAAvC,QAAuC,GAAsG,4F,gCAA2F,mEAAuC,2DAA6B,kL,iHAAuC,aAAwF,2DAA6B,sFAAsB,2CAA+B,uDAAyB,oBAAnM,iHAAvC,QAAuC,GAA2I,iG,gCAAr6B,kEAA8B,mDAAqB,4FAA4B,uDAAyB,8NAA8C,mDAA0B,mDAAqB,6FAA4B,uDAAyB,4J,mCAAyB,c,+CAAzB,iFAAmD,cAA8B,gCAAc,uDAAyB,qIAAoS,uDAAyB,qIAA6T,uDAAyB,kEAAI,uDAAyB,qEAAO,gCAAsB,mDAA0B,gDAAiB,gCAAlgC,QAAgB,EAAY,mBAA8O,UAAc,kBAAyC,kCAAsQ,SAAc,EAAwB,mDAAxa,yGAAnD,SAAmD,GAA8B,mCAA8tB,0C,gCAA72C,oEAAqC,uCAAS,4OAA2B,aAA4C,4EAAuG,uCAAS,0HAA0D,2CAAa,qEAAO,+CAAiB,iKAA+mC,2CAAqB,uCAAiB,oCAAK,gCAAr5C,0GAA3B,QAAa,SAAc,GAA2P,SAAI,EAAyB,4CAA5O,gK,gCAAjT,kFAAoC,mCAAK,oIAA8I,mCAAK,oIAA6+C,gCAAC,gCAAjoD,SAA0D,EAAuB,gBAAkE,QAAc,EAAsB,wB,kOAFtuB,yFAAyB,mCAAK,iEAAI,+DAEJ,oIAAgO,mCAAU,+BAAO,+BAAC,iEAAG,6CAA4C,+BAAC,qIAAqM,+BAAC,qIAAgrD,+BAAC,mEAA0C,gCAAC,gCAApsE,QAAO,eAA4B,SAA+P,UAAK,eAA6B,SAAoK,SAAkB,EAAiB,4BAFvgB,8EAEiP,wF,y2BCAzP,oEAAoC,2CAAa,6IAA4C,aAAoD,2CAAa,sFAAsB,2CAA2B,uCAAS,oBAA3H,wFAA5C,QAA4C,GAAuF,wE,gCAA0G,kEAAmC,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAA4E,6OAA4B,aAAsD,yDAA0C,cAA/G,IAAe,4FAA5B,QAAa,UAAe,MAA6B,cAAyB,uF,gCAA2uB,mEAAwD,2DAA6B,kL,iHAAuC,aAAmD,2DAA6B,sFAAsB,2CAA0B,uDAAyB,oBAAzJ,4GAAvC,QAAuC,GAAsG,4F,gCAA2F,mEAAuC,2DAA6B,kL,iHAAuC,aAAwF,2DAA6B,sFAAsB,2CAA+B,uDAAyB,oBAAnM,iHAAvC,QAAuC,GAA2I,iG,gCAAr6B,kEAA8B,mDAAqB,4FAA4B,uDAAyB,8NAA8C,mDAA0B,mDAAqB,6FAA4B,uDAAyB,4J,mCAAyB,c,+CAAzB,iFAAmD,cAA8B,gCAAc,uDAAyB,qIAAoS,uDAAyB,qIAA6T,uDAAyB,kEAAI,uDAAyB,qEAAO,gCAAsB,mDAA0B,mDAAqB,wFAAuB,uDAAyB,mFAA+D,qGAAwG,mDAA0B,gDAAiB,gCAAxwC,QAAgB,EAAY,mBAA8O,UAAc,kBAAyC,kCAAsQ,SAAc,EAAwB,qEAAxa,qGAAnD,SAAmD,GAA8B,mCAA8tB,uCAAqH,SAAM,gGAAyD,oI,gCAAzhD,oEAAqC,uCAAS,4OAA2B,aAAwC,4EAAmG,uCAAS,0HAA0D,2CAAa,qEAAO,+CAAiB,iKAAq3C,2CAAqB,uCAAiB,oCAAK,gCAAnpD,sGAA3B,QAAa,SAAc,GAAmP,SAAI,EAAyB,4CAAxO,4J,gCAAzS,kFAAoC,mCAAK,oIAA0I,mCAAK,oIAA2uD,gCAAC,gCAA33D,SAA0D,EAAuB,gBAA8D,QAAc,EAAsB,wB,kOAF1tB,yFAAyB,mCAAK,iEAAI,+DAER,oIAAgO,mCAAU,+BAAO,+BAAC,iEAAG,6CAAwC,+BAAC,qIAAqM,+BAAC,qIAA06D,+BAAC,mEAA0C,gCAAC,gCAA17E,QAAO,eAA4B,SAA2P,UAAK,eAA6B,SAAoK,SAAkB,EAAiB,4BAF/f,0EAE6O,oF,s2BCAyF,6OAA4B,aAAsD,yDAA6C,cAAlH,IAAe,4FAA5B,QAAa,UAAe,MAA6B,cAAyB,0F,gCAAovB,mEAAwD,2DAA6B,kL,iHAAuC,aAAmD,2DAA6B,sFAAsB,2CAA0B,uDAAyB,oBAAzJ,4GAAvC,QAAuC,GAAsG,4F,gCAA2F,mEAAuC,2DAA6B,kL,iHAAuC,aAAwF,2DAA6B,sFAAsB,2CAA+B,uDAAyB,oBAAnM,iHAAvC,QAAuC,GAA2I,iG,gCAAr6B,kEAA8B,mDAAqB,4FAA4B,uDAAyB,8NAA8C,mDAA0B,mDAAqB,6FAA4B,uDAAyB,4J,mCAAyB,c,+CAAzB,iFAAmD,cAA8B,gCAAc,uDAAyB,qIAAoS,uDAAyB,qIAA6T,uDAAyB,kEAAI,uDAAyB,qEAAO,gCAAsB,mDAA0B,mDAAqB,wFAAuB,uDAAyB,mGAAkC,kHAAiI,mDAA0B,gDAAiB,gCAApwC,QAAgB,EAAY,mBAA8O,UAAc,kBAAyC,kCAAsQ,SAAc,EAAwB,qEAAxa,qGAAnD,SAAmD,GAA8B,mCAA8tB,uCAAuJ,0M,gCAAlgD,oEAAqC,uCAAS,4OAA2B,aAA2C,4EAAsG,uCAAS,0HAA0D,2CAAa,qEAAO,+CAAiB,iKAAi3C,2CAAqB,uCAAiB,oCAAK,gCAArpD,yGAA3B,QAAa,SAAc,GAAyP,SAAI,EAAyB,4CAA3O,+J,gCAA/S,kFAAoC,mCAAK,oIAA6I,mCAAK,oIAA6uD,gCAAC,gCAAh4D,SAA0D,EAAuB,gBAAiE,QAAc,EAAsB,wB,kOAF9hB,yFAAyB,mCAAK,iEAAI,2CAElB,+BAAO,+BAAC,iEAAG,6CAA2C,+BAAC,oKAA+F,UAAjB,c,oBAA9E,wBAA+F,mCAAK,mIAAiC,cAAoD,mCAAK,oEAAM,6CAAyC,+BAAU,+BAAC,qIAA+6D,+BAAC,mEAA0C,gCAAC,cAA39D,SAA29D,YAAx7D,8CAFhU,yEAEP,oFAA4C,SAAyD,EAAoB,SAAwD,mFAAjC,SAAiC,GAA+D,kF,w2BCAnP,oEAAoC,2CAAa,6IAA4C,aAAoD,2CAAa,sFAAsB,2CAA2B,uCAAS,oBAA3H,wFAA5C,QAA4C,GAAuF,wE,gCAAwG,kEAAmC,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAA4E,6OAA4B,aAAsD,yDAAwC,cAA7G,IAAe,4FAA5B,QAAa,UAAe,MAA6B,cAAyB,qF,gCAAquB,mEAAwD,2DAA6B,kL,iHAAuC,aAAmD,2DAA6B,sFAAsB,2CAA0B,uDAAyB,oBAAzJ,4GAAvC,QAAuC,GAAsG,4F,gCAA2F,mEAAuC,2DAA6B,kL,iHAAuC,aAAwF,2DAA6B,sFAAsB,2CAA+B,uDAAyB,oBAAnM,iHAAvC,QAAuC,GAA2I,iG,gCAAyP,gJAAuJ,yEAAsD,sCAA7M,QAA+B,+EAAwH,kG,gCAArzC,kEAA8B,mDAAqB,4FAA4B,uDAAyB,8NAA8C,mDAA0B,mDAAqB,6FAA4B,uDAAyB,4J,mCAAyB,c,+CAAzB,iFAAmD,cAA8B,gCAAc,uDAAyB,qIAAoS,uDAAyB,qIAA6T,uDAAyB,kEAAI,uDAAyB,qEAAO,gCAAsB,mDAA0B,mDAAqB,wFAAuB,uDAAyB,qIAAiN,mDAA0B,gDAAiB,gCAAlzC,QAAgB,EAAY,mBAA8O,UAAc,kBAAyC,kCAAsQ,SAAc,EAAwB,kCAAyc,SAA0H,mBAA4B,wCAAvgC,yGAAnD,SAAmD,GAA8B,mCAA8tB,0C,gCAAj2C,oEAAqC,uCAAS,4OAA2B,aAAsC,4EAAiG,uCAAS,0HAA0D,2CAAa,qEAAO,+CAAiB,iKAA+5C,2CAAqB,uCAAiB,oCAAK,gCAAzrD,oGAA3B,QAAa,SAAc,GAA+O,SAAI,EAAyB,4CAAtO,0J,gCAArS,kFAAoC,mCAAK,oIAAwI,mCAAK,oIAAixD,gCAAC,gCAA/5D,SAA0D,EAAuB,gBAA4D,QAAc,EAAsB,wB,kOAFptB,yFAAyB,mCAAK,iEAAI,+DAEV,oIAAgO,mCAAU,+BAAO,+BAAC,iEAAG,6CAAsC,+BAAC,qIAAqM,+BAAC,qIAA88D,+BAAC,mEAA0C,gCAAC,gCAA59E,QAAO,eAA4B,SAAyP,UAAK,eAA6B,SAAoK,SAAkB,EAAiB,4BAF3f,wEAE2O,kF,+4BCA2I,mIAAiG,+CAAiB,4FAA4B,mDAAqB,6HAA6D,mFAA+E,2CAAa,oBAA5F,8F,gCAA4sB,sFAAkD,+CAAiB,oM,0bAAiE,mDAAqB,+GAA+C,oFAA4D,4CAAa,cAA9M,QAAoB,SAApB,QAAuC,aAAyB,cAAhE,6CAAqI,qF,gCAA2F,sFAAkD,+CAAiB,uM,0bAAoE,mDAAqB,6GAA6C,oFAA+D,4CAAa,cAAlN,QAAoB,YAApB,QAA0C,aAAyB,cAAnE,6CAAsI,wF,gCAA9jC,0FAAwD,2CAAa,sFAAqB,+CAAiB,oM,0bAAiE,mDAAqB,8GAA6C,qFAA4D,2CAAkB,2CAAa,uFAAqB,+CAAiB,sM,6bAAkE,mDAAqB,iHAAgD,qFAA6D,2CAAkB,2CAAa,qIAAsR,2CAAa,qIAA0R,wCAAS,gCAA7iC,QAAoB,SAApB,QAAuC,UAA6N,SAAoB,UAApB,SAAwC,UAA2L,SAAqB,EAA4B,sBAAkP,SAAqB,EAA4B,uCAA3zB,6CAAmI,6EAAiI,gDAAuI,iF,gCAF9sC,sFAEhB,mCAAK,2GAA0C,uCAAS,qHAAoD,2CAAa,+RAA8E,2CAAa,2FAA2B,+CAAiB,oEAAM,gCAA4B,+CAAiB,2FAA0B,6CAAiC,2CAAmB,2CAAa,qIAAkU,uCAAe,uCAAS,qIAA6pC,mCAAW,gCAAC,gCAAxxD,QAAY,EAA0B,kBAAC,MAAU,GAAoO,UAAmE,EAA6B,sBAA0P,SAAyB,EAA8B,yCAAzhB,SAAyhB,YAAzhB,mBAAuE,gF,qEAFvV,oOAAyB,+BAAC,oIAEu4D,+BAAC,0OAA+B,+BAAC,oMAAyB,gCAAC,gCAF59D,SAA0B,QAChB,EACD,cAAy5D,SAAgC,YAAY,M,44BCA3wC,mEAA4C,2DAA6B,6IAA4C,aAAoF,2DAA6B,sFAAsB,2CAA2B,uDAAyB,oBAA3L,wFAA5C,QAA4C,GAAuI,wE,gCAAuI,iKAAgI,UAA3D,c,yBAArE,wBAAgI,mDAAqB,mHAAmD,yJ,0mBAF9wC,qGAAoC,mCAChC,kFACJ,uCAAS,oFAAmB,2CAAa,qOAA2W,UAAjQ,qB,oCAAwC,4B,iCAAiE,4B,oCAAoD,4B,iCAAiE,uB,6BAAxU,kfAA2W,2CAAuC,uCAAe,uCAAS,qFAAmB,2CAAa,kGAAgC,+CAAiB,kEAAI,yFAA4D,8MAAsE,uDAAyB,qIAA+T,mDAA6B,+CAAsB,+CAAiB,qIAAsP,2CAAmB,2CAAa,yPAAsU,UAA/S,wB,2BAAuD,6B,sCAAuD,oB,yBAA4C,6B,sCAAuD,wB,2BAAuD,uB,4BAA/R,qdAAsU,2CAAqC,uCAAe,mCAAW,+BAAO,+BAAC,iEAAwC,+BAAC,mEAA0C,+BAAC,iEAAwC,+BAAC,oEAA2C,gCAAC,gCAAz2D,UAAyB,GAAsB,GAAwB,GAAof,SAAsB,EAA+C,gCAA0B,SAAc,aAA6B,SAAwV,UAA+G,EAAgB,0BAA7pB,kE,2xBxDA2R,+LAAI,sBAA8D,+CAAiB,gJ,kCAAyB,c,+BAAzB,iFAAqD,mDAAqB,kGAAsC,6DAA2C,4CAAa,kBAAvP,UAAuP,YAAhN,mBAA3C,QAAI,MAAuC,cAAwJ,0E,gCAA0E,+LAAI,sBAAsD,+CAAiB,gJ,kCAAyB,c,2BAAzB,iFAAiD,mDAAqB,qGAAyC,6DAAuC,4CAAa,kBAA1O,UAA0O,YAAvM,eAAvC,QAAI,MAAmC,cAAmJ,sE,gCAAwxC,sFAAsC,2CAAa,kIAAiC,aAAoD,2CAAa,sFAAsB,2CAA2B,uCAAS,oBAA3H,wFAAjC,QAAiC,GAAuF,wE,gCAAusC,2L,kCAAoG,c,yDAApG,qIAAiI,YAAjI,0DAA8N,mEAAqC,qHAAqD,gEAAiC,cAAxN,uHAAjI,QAAiI,KAAsC,M,gCAA0W,mEAAsF,+DAAiC,W,gCAA3O,iGAAmF,+DAAiC,gNAAc,yBAAwH,4DAA6B,cAArJ,mDAAd,QAAc,uCAAuE,M,gCAAhsC,+LAA0D,sBAAuE,2DAA6B,qFAAoB,+DAAiC,uHAAsP,UAA3B,c,gDAA3N,uKAA4F,iDAAxE,aAAsO,+DAAiC,iJ,mCAAyB,c,oDAAzB,kFAAwD,gCAAmB,+DAAiC,qIAA6V,2DAAmC,2DAA6B,qIAA4R,wDAAyB,gCAAlvC,4DAAsE,kBAAhI,QAA0D,GAA4J,IAAyF,mEAA0F,yBAAtL,QAAG,WAAyF,GAA2S,SAA4M,EAAiB,2BAAgM,SAAiC,sDAAiD,0CAAl2B,oHAApB,QAAoB,GAA+T,2C,gCAA/jB,uDAAyB,gKAAizC,oDAAqB,cAAt0C,QAAI,EAAyB,2B,gCAA40C,mEAAyF,mDAAqB,W,gCAAz+D,oEAAkC,+CAAiB,oFAAmB,uFAA8D,+K,kCAAoD,c,yBAApD,qIAAkG,YAAlG,0DAAwI,uDAAyB,oHAAmD,mDAAyB,+CAAsB,+CAAiB,kGAAiC,mDAAqB,yDAAw5C,mDAAqB,iNAAc,0BAA+G,+CAAsB,4CAAa,gCAArzD,6FAAlG,QAAkG,GAAmqD,gCAAd,SAAc,mBAA0E,cAA74D,+E,gCAAw2F,mEAA8H,+DAAiC,W,gCAAnR,iGAAmF,+DAAiC,gNAAkD,yBAA4H,4DAA6B,cAAzJ,mDAAlD,QAAkD,sCAA2E,M,gCAApuB,+LAAkC,sBAAyD,2DAA6B,uHAA8O,UAA3B,c,gDAAnN,uKAAwF,iDAApE,aAA8N,2DAA6B,gJ,mCAAyB,c,wDAAzB,kFAA4D,gCAAmB,2DAA6B,qIAAoU,wDAAyB,gCAA9yB,0CAAwD,sBAA1F,QAAkC,GAAyF,IAAqF,mEAA0F,yBAAlL,QAAG,WAAqF,GAAmS,SAAiC,sDAAiD,0CAAzb,oHAApB,QAAoB,GAAuT,2C,gCAA5d,uDAAyB,gKAAq1B,oDAAqB,cAA12B,QAAI,EAA6B,2B,gCAA42B,mEAAiG,mDAAqB,W,gCAAnxC,oEAA2E,+CAAiB,iEAAI,2CAA6B,+CAAiB,iGAAiC,mDAAqB,6DAAo8B,mDAAqB,iNAAc,0BAAuH,+CAAsB,4CAAa,kBAA1J,WAA0J,YAA1J,mBAAd,SAAc,kBAAkF,cAA7pC,mF,gCAAjsE,mEAA6B,2CAAa,oIAA0iE,2CAAa,oIAAo1C,wCAAS,gCAAp5G,QAAc,EAAmB,aAAshE,QAAc,oCAA4D,4B,qEAFz6J,kGAAgC,mCAChC,gGACW,+DAAsC,sSAAyH,aAAsC,2CAAa,2HAA0D,uCAAa,mCAAW,mCAAK,yFAAuB,uCAAS,2d,0PAAgI,sB,4BAAyB,c,iCAAzJ,8jBAAqB,cAAkM,uCAAS,4FAA0B,2CAAa,iMAAI,uBAAkC,+CAAiB,iJ,mCAAyB,c,yBAAzB,kFAA+C,mDAAqB,iGAAoC,+DAA0C,2CAAkB,2CAAa,qIAAgQ,2CAAa,qIAAmP,uCAAc,uCAAS,kEAAI,6CAAuB,uCAAS,4FAA0B,2CAAa,iMAAI,uBAAwD,+CAAiB,iJ,mCAAyB,c,4CAAzB,kFAAgE,mDAAqB,oGAAuC,+DAA2C,2CAAkB,2CAAa,iMAAI,uBAAuD,+CAAiB,iJ,mCAAyB,c,2CAAzB,kFAA+D,mDAAqB,0GAA6C,+DAA0C,2CAAkB,2CAAa,iMAAI,uBAA2D,+CAAiB,iJ,mCAAyB,c,+CAAzB,kFAAmE,mDAAqB,wGAA2C,+DAA8C,2CAAkB,2CAAa,iMAAI,uBAA6D,+CAAiB,iJ,mCAAyB,c,iDAAzB,kFAAqE,mDAAqB,4GAA+C,+DAAgD,2CAAkB,uCAAc,uCAAS,sIAAmN,uCAAS,sIAA68G,mCAAW,+BAAO,gCAAC,gCAApjM,+EAAzH,QAAyH,GAA0K,SAAgI,EAAwB,YAAxJ,SAA0M,IAAiE,iBAAiC,aAArC,SAAI,GAAoO,SAA4C,EAAqB,eAA4M,SAAwC,EAAiB,WAAgS,kCAAuD,kBAA3D,SAAI,GAAmR,kCAAsD,iBAA1D,SAAI,GAAsR,kCAA0D,qBAA9D,SAAI,GAAgS,kCAA4D,uBAAhE,SAAI,GAAgT,WAAG,EAAe,QAA0M,UAAc,EAAc,2CAA/wF,0DAA8V,4GAArB,SAAqB,EAArB,oMAAsa,kEAAomB,+DAAgR,mEAAuR,kEAA4R,sEAAwS,2E,2sCEA/oE,wHAA+E,UAA3E,c,qDAAJ,wBAA+E,mDAAqB,wV,kJAAuB,sB,kDAAvB,mgBAA2D,gDAAiB,cAA5E,QAAuB,EAAuB,mDAA9C,wM,gCAAme,mEAAwD,uDAAyB,kL,iHAAuC,aAAmD,uDAAyB,sFAAsB,2CAA0B,mDAAqB,oBAAjJ,4GAAvC,QAAuC,GAAkG,4F,gCAAyV,mEAA+C,2DAA6B,0M,iHAA+F,aAA+D,2DAA6B,sFAAsB,2CAAsC,uDAAyB,oBAAjL,+HAA/F,QAA+F,GAAkH,+G,gCAAniB,oEAAuC,uDAAyB,kL,iHAAuC,aAAwD,uDAAyB,sFAAsB,2CAA+B,uDAAyB,qIAA2W,oDAAqB,cAAhY,SAAgY,YAAlX,wBAAgC,4CAA7M,iHAAvC,QAAuC,GAAuG,iG,gCAAoxC,0K,kCAAmF,c,4HAAnF,iFAAsK,mEAAqC,wHAAwD,gP,gCAAoI,0K,kCAA6G,c,uEAA7G,iFAAiJ,mEAAqC,6HAA6D,0O,gCAA7tB,mEAAkE,+DAAiC,oIAAsW,+DAAiC,oIAAgV,4DAA6B,cAApvB,QAA+I,EAAsB,uCAAkO,QAA+C,EAAyB,kD,gCAAymB,0K,kCAA8L,c,+CAA9L,iFAAiN,+DAAiC,oHAAoD,0N,gCAAiH,0K,kCAA2K,c,+CAA3K,iFAA8L,+DAAiC,wHAAwD,0N,gCAAiH,0K,kCAAwH,c,qDAAxH,iFAAiJ,+DAAiC,oHAAoD,gO,gCAAuH,0K,kCAAwH,c,gDAAxH,iFAA4I,+DAAiC,0HAA0D,8N,gCAAqH,0K,kCAA+C,c,iDAA/C,iFAAwF,+DAAiC,mHAAmD,4N,gCAAzkK,kEAAsC,+CAAiB,oIAAqL,+CAAiB,oHAAqD,UAAjD,c,8CAAJ,wBAAqD,mDAAqB,8NAA8C,+CAAsB,+CAAiB,sHAAqD,UAAjD,c,8CAAJ,wBAAqD,mDAAqB,+K,oFAAqC,c,+CAArC,0IAAuF,cAA8B,gCAAc,mDAAqB,qIAAwR,mDAAqB,qIAAqpB,mDAAqB,kEAAI,mDAAqB,yH,oHAAmB,gCAAsB,+CAAsB,+CAAiB,iGAA+B,mDAAqB,+GAAsC,uDAAyB,qWAA0N,cAAoC,2DAA6B,mHAAkD,uDAAkC,uDAAyB,0JAAoF,2DAA6B,qIAAs2B,2DAA6B,2K,mCAA+C,c,8CAA/C,kFAAwE,+DAAiC,yHAAwD,6GAA0F,2DAA6B,qIAA0X,2DAA6B,qIAA2W,2DAA6B,qIAAgU,2DAA6B,qIAA+T,2DAA6B,qIAAkQ,2DAA6B,uL,mCAA2D,c,yCAA3D,kFAA+E,+DAAiC,uHAAsD,6GAA2H,uDAA+B,mDAA2B,+CAAsB,4CAAa,gCAAngL,SAAyD,EAAqB,cAAkM,QAAgB,EAAY,mBAA2R,UAAc,kBAAyC,kCAAsP,SAAc,EAAwB,kCAA0jC,wGAA1N,SAA0N,GAA+R,SAAc,kDAAmD,6BAA0lC,WAA+E,yEAA8E,6BAA0P,UAAgF,wDAA0D,6BAA8P,SAA+C,uCAAwC,6BAAsQ,SAA+C,sCAAwC,cAAqQ,SAAoE,EAAmB,8CAAv7I,yGAAvF,SAAuF,GAA8B,mCAAsiC,uCAA6sD,0FAAohE,0I,gCAA3kL,2KAA4M,UAAxB,iB,wBAApL,mOAA4M,uCAAS,oEAAO,2CAAa,gKAA+jL,uCAAiB,oCAAK,cAA9zL,QAAgH,GAA8sL,YAA3oL,YAAsD,QAAI,EAAiC,6B,gCAA4nL,mEAA8B,2CAAa,6IAA4C,aAAoD,2CAAa,sFAAsB,2CAA2B,uCAAS,oBAA3H,sGAA5C,QAA4C,GAAuF,sF,gCAAoJ,gIAAiF,UAAzE,c,yBAAR,wBAAiF,+CAAiB,4FAAgC,4J,gCAA1N,mEAA6B,2CAAa,gEAAG,2CAA8B,2CAAa,oIAA+J,wCAAS,cAAxK,QAAwK,YAAxF,6BAA3H,4F,gCAAtV,sFAAsD,uCAAS,oIAAiO,uCAAS,oIAA+Q,oCAAK,gCAA9f,SAAc,EAAe,QAA6M,QAAc,EAAc,gB,gCAF1qM,mEAEqB,mCAAK,oIAAs0L,mCAAK,oIAAmkB,gCAAC,cAA/4M,QAA0D,EAA8B,qBAAmvL,SAAsB,EAA+B,6B,qEAF15L,oIAEw7M,gCAAC,gCAFz7M,QAAc,8BAEM,iB,slCuDA6tB,gL,kCAAwG,c,mCAAxG,iFAAwI,+L,qEAFz3B,qGAAoC,mCAChC,kFACJ,uCAAS,oFAAmB,2CAAa,wFAAuB,+CAAiB,yFAAyB,6CAAwB,+CAAiB,2GAAyC,mDAAqB,6M,6bAAyE,6FAAyE,mDAAqB,6M,6bAAyE,6FAA0E,+CAAuB,2CAAmB,2CAAa,oFAAkB,+CAAiB,iGAAgC,yFAA8D,sFAAqB,uDAAyB,qIAAsN,mDAA2B,+CAAuB,+CAAiB,2GAAyC,mDAAqB,+N,6bAA2F,6FAAqF,mDAAqB,8N,6bAA0F,6FAAoF,mDAAqB,4N,+bAAwF,6FAAkF,mDAAqB,gO,gcAA4F,6FAAsF,mDAAqB,iO,gcAA6F,6FAAgF,+CAAuB,2CAAmB,uCAAe,uCAAS,oFAAmB,2CAAa,4OAA+B,uCAAe,mCAAW,+BAAO,gCAAC,gCAAr9D,SAAG,UAAH,SAA+C,UAAwH,SAAG,UAAH,SAA+C,UAA0U,UAAqD,EAAsB,eAA4Q,SAAG,4BAAH,SAAiE,UAAoI,SAAG,2BAAH,SAAgE,UAAmI,SAAG,yBAAH,SAA8D,UAAiI,SAAG,6BAAH,SAAkE,UAAqI,SAAG,8BAAH,SAAmE,UAA4M,aAAe,cAA1gE,+DAAuG,gDAAyE,oEAA8F,gDAAyE,qEAAoM,iEAAmc,gDAA2F,gFAA0G,gDAA0F,+EAAyG,gDAAwF,6EAAuG,gDAA4F,iFAA2G,gDAA6F,8E,wqBdAhkD,kUAAiE,gCAAU,cAA3E,QAAgD,EAAgB,sBAAhE,QAAgD,EAAgB,uCAAC,qC,gCAA0L,kUAAyD,gCAAU,cAAnE,QAAwC,EAAgB,sBAAxD,QAAwC,EAAgB,uCAAC,qC,gCAA3M,mEAA4D,uDAAyB,uVAAoC,uDAAyB,gKAA4E,oDAAqB,gCAA9J,QAAQ,KAAR,QAAQ,KAAqD,QAAQ,EAA+B,uB,gCAA8O,mEAA8E,sGAAuE,sKAA8F,mGAAyE,uCAAS,W,gCAAwB,mEAA+C,sGAAuE,0KAAkG,uGAA6E,uCAAS,W,gCAAwB,mEAA+C,8KAAmJ,W,gCAAwB,mEAA4C,gJAA2H,W,gCAAwB,mEAA2C,uNAA2L,W,gCAAwB,mEAAkD,4KAAsJ,W,gCAAwB,mEAA8C,8OAAkN,W,gCAAwB,mEAA+C,mLAAwJ,W,gCAAwB,mEAA0C,oLAAyJ,W,gCAAwB,mEAAgD,6OAA6M,W,gCAAwB,mEAA8C,0MAA0K,W,gCAAwB,mEAA6C,gPAAgN,W,gCAAsI,mEAAqC,6HAA8F,W,gCAAjP,mEAAiG,2CAAa,oIAA0I,sGAAuE,wKAAgG,qGAA2E,wCAAS,cAArY,QAAM,cAA+X,YAA/X,UAA8B,M,gCAAyX,mEAA8C,gEAAiC,8MAAsJ,mEAAyC,2FAA6D,W,gCAAwB,mEAAiF,sGAAuE,2KAAmG,wGAA8E,wCAAU,W,gCAAwB,mEAAqD,8QAAwP,W,gCAAwB,mEAA6C,4VAAqU,W,gCAAwB,mEAA8C,gOAAqM,W,gCAAwB,mEAA6C,wLAAkK,W,gCAAwB,mEAAgD,+MAAyL,W,gCAAwB,mEAA8C,6KAAuJ,W,gCAAwB,mEAAqD,0OAAoN,W,gCAAwB,mEAA8C,oPAAoN,W,gCAAwB,mEAAgD,gTAAoR,W,gCAAwB,mEAA+C,ibAA6Z,W,gCAAwB,mEAA+C,8UAA6S,W,gCAAwB,mEAA8C,oQAAyO,W,gCAAwB,mEAAoD,gNAA0L,W,gCAAwB,mEAAgD,oXAAwV,mEAAM,4CAAsB,wCAAU,W,gCAAwB,mEAA+C,0OAA+M,W,gCAAwB,mEAA+C,sNAAsL,W,gCAAwB,oEAA6C,sIAAuG,wIAAgE,wDAA+B,4EAA8C,mEAAM,yCAAmB,kEAAoC,mEAAM,2DAAqC,oDAAsB,oEAAM,yFAAmE,sEAAwC,oEAAM,8CAAwB,+DAAiC,W,iCAAwB,mEAAoD,yTAA6R,W,iCAAwB,mEAA+C,mMAAwK,W,iCAAwB,mEAA+C,mVAAiT,W,iCAAwB,mEAA4C,sPAA2N,W,iCAAwB,mEAA6C,wPAA6N,W,iCAAwB,mEAA8C,2OAAgN,W,iCAAwB,mEAAgD,qQAA0O,W,iCAAwB,mEAAgD,kPAA4N,W,iCAAwB,mEAAqD,sPAAgO,W,iCAAwB,mEAA2C,mSAAsQ,W,iCAAwB,mEAAiD,+HAAgG,W,iCAAwB,mEAAgD,8LAAmK,W,iCAAwB,mEAAiD,mQAAwO,W,iCAAwB,mEAAgD,2MAA0K,W,iCAAwB,mEAA+C,4MAAiL,W,iCAAwB,mEAA+C,8TAA6R,W,iCAAzyc,6OAAgF,oCAAS,iIAAoV,oCAAS,iIAA6T,oCAAS,kIAAiN,oCAAS,kIAAsL,oCAAS,kIAAqP,oCAAS,kIAAuN,oCAAS,kIAA+Q,oCAAS,kIAAsN,oCAAS,kIAAkN,oCAAS,kIAA4Q,oCAAS,kIAAuO,oCAAS,kIAA4Q,oCAAS,kIAAkgB,oCAAS,kIAA0V,oCAAS,kIAAkW,oCAAS,kIAA4T,oCAAS,kIAAiY,oCAAS,kIAAkQ,oCAAS,kIAA8N,oCAAS,kIAAwP,oCAAS,kIAAoN,oCAAS,kIAAwR,oCAAS,kIAAiR,oCAAS,kIAAmV,oCAAS,kIAA2d,oCAAS,kIAA2W,oCAAS,kIAAsS,oCAAS,kIAA6P,oCAAS,kIAA6b,oCAAS,kIAA6Q,oCAAS,kIAAoP,oCAAS,kIAA8lB,oCAAS,oIAAgW,oCAAS,oIAAsO,oCAAS,oIAA+W,oCAAS,oIAAsR,oCAAS,oIAAyR,oCAAS,oIAA6Q,oCAAS,oIAAyS,oCAAS,oIAA2R,oCAAS,oIAAoS,oCAAS,oIAAgU,oCAAS,oIAAgK,oCAAS,oIAAkO,oCAAS,oIAAwS,oCAAS,oIAAyO,oCAAS,oIAA+O,oCAAS,oIAA2V,iCAAK,gCAA7zc,QAAa,OAAY,6DAAgE,QAAc,uDAA+U,QAAc,0BAAwT,SAAc,0BAA4M,SAAc,uBAAiL,SAAc,sBAAgP,SAAc,6BAAkN,SAAc,yBAA0Q,SAAc,0BAAiN,SAAc,qBAA6M,SAAc,2BAAuQ,SAAc,yBAAkO,SAAc,wBAAuQ,SAAc,wEAA6f,SAAc,yBAAqV,SAAc,0DAA6V,SAAc,gCAAuT,SAAc,wBAA4X,SAAc,yBAA6P,SAAc,wBAAyN,SAAc,2BAAmP,SAAc,yBAA+M,SAAc,gCAAmR,SAAc,yBAA4Q,SAAc,2BAA8U,SAAc,0BAAsd,SAAc,0BAAsW,SAAc,yBAAiS,SAAc,+BAAwP,SAAc,2BAAwb,SAAc,0BAAwQ,SAAc,0BAA+O,SAAc,wBAAylB,UAAc,+BAA2V,UAAc,0BAAiO,UAAc,0BAA0W,UAAc,uBAAiR,UAAc,wBAAoR,UAAc,yBAAwQ,UAAc,2BAAoS,UAAc,2BAAsR,UAAc,gCAA+R,UAAc,sBAA2T,UAAc,4BAA2J,UAAc,2BAA6N,UAAc,4BAAmS,UAAc,2BAAoO,UAAc,0BAA0O,UAAc,4BAAgC,M,sEAFrzd,yFAAyB,mCAAK,iEAAI,2CAE9B,+BAAO,+BAAC,4U,kFAAY,iB,sBAAZ,wWAAgF,mCAAK,mFAAiB,uCAAS,qFAAmB,2CAAa,0FAAwB,+CAAiB,mFAAkB,gDAAoC,+CAAiB,6Y,kGAAgC,sB,wBAAhC,kpBAAmF,mDAAqB,iKAAoF,mDAAqB,qIAAkQ,+CAA0B,2CAAmB,uCAAe,mCAAW,mCAAK,sIAA20c,mCAAK,mFAAiB,uCAAS,qFAAmB,2CAAa,yFAAwB,+CAAiB,mFAAkB,gDAAwC,+CAAiB,gJAAmE,2CAAmB,uCAAe,mCAAW,mCAAK,0FAAwB,uCAAS,2FAA0B,6CAA4C,uCAAS,2a,0PAAqE,sB,8BAArE,0fAA2G,mCAAW,mCAAK,4IAAmF,uCAAS,mIAAiC,cAAoD,uCAAS,oEAAM,6CAA8B,mCAAc,+BAAQ,gCAAC,gCAAj3f,SAAkC,EAA4B,aAAiM,SAA0E,IAA1E,SAAkB,SAAc,EAAoB,QAAoD,SAAQ,EAAuC,uBAA0D,SAAc,mBAA6C,sBAAmR,SAAiE,EAAc,QAAopd,SAAiD,eAAoB,EAA0B,+BAF1kf,iEAEtB,4MAA0M,sEAAqD,2OAAo+d,0EAAyO,iFAAqD,6MAA2H,SAAyD,YAAyB,SAA2C,mFAAjC,SAAiC,GAAmE,uE,2wBCFx0f,4U,kFAAY,iB,sBAAZ,sWAEsB,mCAAK,yFAAyB,uCAAS,iEAAI,6CAA6B,mCAAW,mCAAK,iEAAG,6CAAqC,mCAAK,8NAA4B,0CAA4C,mCAAK,mFAAiB,uCAAS,gGAA8B,2CAAa,qFAAoB,6CAA+B,2CAAa,8W,kGAAuD,sB,wBAAvD,weAA4E,+CAAiB,6UAAqB,kCAAc,+CAAiB,4UAAoB,iCAAa,2CAAsB,uCAAe,mCAAW,mCAAK,mFAAiB,uCAAS,gGAA8B,2CAAa,6FAA4B,6CAA+B,2CAAa,yf,0PAAsG,sB,gCAAtG,+xBAA6J,uCAAe,mCAAW,mCAAK,4IAAmF,uCAAS,mIAAiC,cAAoD,uCAAS,oEAAM,6CAA+B,mCAAc,+BAAQ,gCAAC,gCAFnpC,QACc,EACO,aAAsI,SAAa,WAAqM,SAAyC,SAAc,EAAoB,QAAkB,SAAQ,QAAR,SAAQ,QAA4C,SAAQ,OAAR,SAAQ,OAA2N,SAAmI,IAAnI,SAA2C,iBAA2D,EAA4B,gBAAlI,SAA4I,OAAgB,cAF73B,qMAEiE,qEAAgD,8EAAsE,2EAA0I,oEAA4C,6MAAwU,oEAA4C,2OAA4L,SAAyD,YAAyB,SAA2C,mFAAjC,SAAiC,GAAmE,wE,uxBSArvB,6OAA4B,aAAsD,yDAA6C,cAAlH,IAAe,4FAA5B,QAAa,UAAe,MAA6B,cAAyB,0F,gCAAovB,mEAAwD,2DAA6B,kL,iHAAuC,aAAmD,2DAA6B,sFAAsB,2CAA0B,uDAAyB,oBAAzJ,4GAAvC,QAAuC,GAAsG,4F,gCAA2F,mEAAuC,2DAA6B,kL,iHAAuC,aAAwF,2DAA6B,sFAAsB,2CAA+B,uDAAyB,oBAAnM,iHAAvC,QAAuC,GAA2I,iG,gCAAr6B,kEAA8B,mDAAqB,4FAA4B,uDAAyB,8NAA8C,mDAA0B,mDAAqB,6FAA4B,uDAAyB,4J,mCAAyB,c,+CAAzB,iFAAmD,cAA8B,gCAAc,uDAAyB,qIAAoS,uDAAyB,qIAA6T,uDAAyB,kEAAI,uDAAyB,qEAAO,gCAAsB,mDAA0B,mDAAqB,wFAAuB,uDAAyB,mGAAkC,kHAAiI,mDAA0B,gDAAiB,gCAApwC,QAAgB,EAAY,mBAA8O,UAAc,kBAAyC,kCAAsQ,SAAc,EAAwB,qEAAxa,qGAAnD,SAAmD,GAA8B,mCAA8tB,uCAAuJ,0M,gCAAlgD,oEAAqC,uCAAS,4OAA2B,aAA2C,4EAAsG,uCAAS,0HAA0D,2CAAa,qEAAO,+CAAiB,iKAAi3C,2CAAqB,uCAAiB,oCAAK,gCAArpD,yGAA3B,QAAa,SAAc,GAAyP,SAAI,EAAyB,4CAA3O,+J,gCAA/S,kFAAoC,mCAAK,oIAA6I,mCAAK,oIAA6uD,gCAAC,gCAAh4D,SAA0D,EAAuB,gBAAiE,QAAc,EAAsB,wB,kOAF9hB,yFAAyB,mCAAK,iEAAI,2CAElB,+BAAO,+BAAC,iEAAG,6CAA2C,+BAAC,oKAA+F,UAAjB,c,oBAA9E,wBAA+F,mCAAK,mIAAiC,cAAoD,mCAAK,oEAAM,6CAAyC,+BAAU,+BAAC,qIAA+6D,+BAAC,mEAA0C,gCAAC,cAA39D,SAA29D,YAAx7D,8CAFhU,yEAEP,oFAA4C,SAAyD,EAAoB,SAAwD,mFAAjC,SAAiC,GAA+D,kF,g4BCAnP,oEAAoC,2CAAa,6IAA4C,aAAoD,2CAAa,sFAAsB,2CAA2B,uCAAS,oBAA3H,wFAA5C,QAA4C,GAAuF,wE,gCAAwG,kEAAmC,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAA4E,6OAA4B,aAAsD,yDAAwC,cAA7G,IAAe,4FAA5B,QAAa,UAAe,MAA6B,cAAyB,qF,gCAAquB,mEAAwD,2DAA6B,kL,iHAAuC,aAAmD,2DAA6B,sFAAsB,2CAA0B,uDAAyB,oBAAzJ,4GAAvC,QAAuC,GAAsG,4F,gCAA2F,mEAAuC,2DAA6B,kL,iHAAuC,aAAwF,2DAA6B,sFAAsB,2CAA+B,uDAAyB,oBAAnM,iHAAvC,QAAuC,GAA2I,iG,gCAAyP,gJAAuJ,yEAAsD,sCAA7M,QAA+B,+EAAwH,kG,gCAArzC,kEAA8B,mDAAqB,4FAA4B,uDAAyB,8NAA8C,mDAA0B,mDAAqB,6FAA4B,uDAAyB,4J,mCAAyB,c,+CAAzB,iFAAmD,cAA8B,gCAAc,uDAAyB,qIAAoS,uDAAyB,qIAA6T,uDAAyB,kEAAI,uDAAyB,qEAAO,gCAAsB,mDAA0B,mDAAqB,wFAAuB,uDAAyB,qIAAiN,mDAA0B,gDAAiB,gCAAlzC,QAAgB,EAAY,mBAA8O,UAAc,kBAAyC,kCAAsQ,SAAc,EAAwB,kCAAyc,SAA0H,mBAA4B,wCAAvgC,yGAAnD,SAAmD,GAA8B,mCAA8tB,0C,gCAAj2C,oEAAqC,uCAAS,4OAA2B,aAAsC,4EAAiG,uCAAS,0HAA0D,2CAAa,qEAAO,+CAAiB,iKAA+5C,2CAAqB,uCAAiB,oCAAK,gCAAzrD,oGAA3B,QAAa,SAAc,GAA+O,SAAI,EAAyB,4CAAtO,0J,gCAArS,kFAAoC,mCAAK,oIAAwI,mCAAK,oIAAixD,gCAAC,gCAA/5D,SAA0D,EAAuB,gBAA4D,QAAc,EAAsB,wB,kOAFptB,yFAAyB,mCAAK,iEAAI,+DAEV,oIAAgO,mCAAU,+BAAO,+BAAC,iEAAG,6CAAsC,+BAAC,qIAAqM,+BAAC,qIAA88D,+BAAC,mEAA0C,gCAAC,gCAA59E,QAAO,eAA4B,SAAyP,UAAK,eAA6B,SAAoK,SAAkB,EAAiB,4BAF3f,wEAE2O,kF,23BJAjP,oEAAoC,2CAAa,6IAA4C,aAAoD,2CAAa,sFAAsB,2CAA2B,uCAAS,oBAA3H,wFAA5C,QAA4C,GAAuF,wE,gCAA4G,kEAAmC,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAA4E,6OAA4B,aAAsD,yDAA4C,cAAjH,IAAe,4FAA5B,QAAa,UAAe,MAA6B,cAAyB,yF,gCAAivB,mEAAwD,2DAA6B,kL,iHAAuC,aAAmD,2DAA6B,sFAAsB,2CAA0B,uDAAyB,oBAAzJ,4GAAvC,QAAuC,GAAsG,4F,gCAA2F,mEAAuC,2DAA6B,kL,iHAAuC,aAAwF,2DAA6B,sFAAsB,2CAA+B,uDAAyB,oBAAnM,iHAAvC,QAAuC,GAA2I,iG,gCAAr6B,kEAA8B,mDAAqB,4FAA4B,uDAAyB,8NAA8C,mDAA0B,mDAAqB,6FAA4B,uDAAyB,4J,mCAAyB,c,+CAAzB,iFAAmD,cAA8B,gCAAc,uDAAyB,qIAAoS,uDAAyB,qIAA6T,uDAAyB,kEAAI,uDAAyB,qEAAO,gCAAsB,mDAA0B,mDAAqB,wFAAuB,uDAAyB,mGAAkC,qGAA6H,mDAA0B,gDAAiB,gCAAhwC,QAAgB,EAAY,mBAA8O,UAAc,kBAAyC,kCAAsQ,SAAc,EAAwB,qEAAxa,qGAAnD,SAAmD,GAA8B,mCAA8tB,uCAAuJ,uJ,gCAAhgD,oEAAqC,uCAAS,4OAA2B,aAA0C,4EAAqG,uCAAS,0HAA0D,2CAAa,qEAAO,+CAAiB,iKAA62C,2CAAqB,uCAAiB,oCAAK,gCAA/oD,wGAA3B,QAAa,SAAc,GAAuP,SAAI,EAAyB,4CAA1O,8J,gCAA7S,kFAAoC,mCAAK,oIAA4I,mCAAK,oIAAuuD,gCAAC,gCAAz3D,SAA0D,EAAuB,gBAAgE,QAAc,EAAsB,wB,kOAFhuB,yFAAyB,mCAAK,iEAAI,+DAEN,oIAAgO,mCAAU,+BAAO,+BAAC,iEAAG,6CAA0C,+BAAC,qIAAqM,+BAAC,qIAAw6D,+BAAC,mEAA0C,gCAAC,gCAA17E,QAAO,eAA4B,SAA6P,UAAK,eAA6B,SAAoK,SAAkB,EAAiB,4BAFngB,4EAE+O,sF,y2BCAnP,oEAAoC,2CAAa,6IAA4C,aAAoD,2CAAa,sFAAsB,2CAA2B,uCAAS,oBAA3H,wFAA5C,QAA4C,GAAuF,wE,gCAA8G,kEAAmC,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAA4E,6OAA4B,aAAsD,yDAA8C,cAAnH,IAAe,4FAA5B,QAAa,UAAe,MAA6B,cAAyB,2F,gCAAuvB,mEAAwD,2DAA6B,kL,iHAAuC,aAAmD,2DAA6B,sFAAsB,2CAA0B,uDAAyB,oBAAzJ,4GAAvC,QAAuC,GAAsG,4F,gCAA2F,mEAAuC,2DAA6B,kL,iHAAuC,aAAwF,2DAA6B,sFAAsB,2CAA+B,uDAAyB,oBAAnM,iHAAvC,QAAuC,GAA2I,iG,gCAAr6B,kEAA8B,mDAAqB,4FAA4B,uDAAyB,8NAA8C,mDAA0B,mDAAqB,6FAA4B,uDAAyB,4J,mCAAyB,c,+CAAzB,iFAAmD,cAA8B,gCAAc,uDAAyB,qIAAoS,uDAAyB,qIAA6T,uDAAyB,kEAAI,uDAAyB,qEAAO,gCAAsB,mDAA0B,gDAAiB,gCAAlgC,QAAgB,EAAY,mBAA8O,UAAc,kBAAyC,kCAAsQ,SAAc,EAAwB,mDAAxa,yGAAnD,SAAmD,GAA8B,mCAA8tB,0C,gCAA72C,oEAAqC,uCAAS,4OAA2B,aAA4C,4EAAuG,uCAAS,0HAA0D,2CAAa,qEAAO,+CAAiB,iKAA+mC,2CAAqB,uCAAiB,oCAAK,gCAAr5C,0GAA3B,QAAa,SAAc,GAA2P,SAAI,EAAyB,4CAA5O,gK,gCAAjT,kFAAoC,mCAAK,oIAA8I,mCAAK,oIAA6+C,gCAAC,gCAAjoD,SAA0D,EAAuB,gBAAkE,QAAc,EAAsB,wB,kOAFtuB,yFAAyB,mCAAK,iEAAI,+DAEJ,oIAAgO,mCAAU,+BAAO,+BAAC,iEAAG,6CAA4C,+BAAC,qIAAqM,+BAAC,qIAAgrD,+BAAC,mEAA0C,gCAAC,gCAApsE,QAAO,eAA4B,SAA+P,UAAK,eAA6B,SAAoK,SAAkB,EAAiB,4BAFvgB,8EAEiP,wF,i4BCAzP,oEAAoC,2CAAa,6IAA4C,aAAoD,2CAAa,sFAAsB,2CAA2B,uCAAS,oBAA3H,wFAA5C,QAA4C,GAAuF,wE,gCAA0G,kEAAmC,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAA4E,6OAA4B,aAAsD,yDAA0C,cAA/G,IAAe,4FAA5B,QAAa,UAAe,MAA6B,cAAyB,uF,gCAA2uB,mEAAwD,2DAA6B,kL,iHAAuC,aAAmD,2DAA6B,sFAAsB,2CAA0B,uDAAyB,oBAAzJ,4GAAvC,QAAuC,GAAsG,4F,gCAA2F,mEAAuC,2DAA6B,kL,iHAAuC,aAAwF,2DAA6B,sFAAsB,2CAA+B,uDAAyB,oBAAnM,iHAAvC,QAAuC,GAA2I,iG,gCAAr6B,kEAA8B,mDAAqB,4FAA4B,uDAAyB,8NAA8C,mDAA0B,mDAAqB,6FAA4B,uDAAyB,4J,mCAAyB,c,+CAAzB,iFAAmD,cAA8B,gCAAc,uDAAyB,qIAAoS,uDAAyB,qIAA6T,uDAAyB,kEAAI,uDAAyB,qEAAO,gCAAsB,mDAA0B,mDAAqB,wFAAuB,uDAAyB,mFAA+D,qGAAwG,mDAA0B,gDAAiB,gCAAxwC,QAAgB,EAAY,mBAA8O,UAAc,kBAAyC,kCAAsQ,SAAc,EAAwB,qEAAxa,qGAAnD,SAAmD,GAA8B,mCAA8tB,uCAAqH,SAAM,gGAAyD,oI,gCAAzhD,oEAAqC,uCAAS,4OAA2B,aAAwC,4EAAmG,uCAAS,0HAA0D,2CAAa,qEAAO,+CAAiB,iKAAq3C,2CAAqB,uCAAiB,oCAAK,gCAAnpD,sGAA3B,QAAa,SAAc,GAAmP,SAAI,EAAyB,4CAAxO,4J,gCAAzS,kFAAoC,mCAAK,oIAA0I,mCAAK,oIAA2uD,gCAAC,gCAA33D,SAA0D,EAAuB,gBAA8D,QAAc,EAAsB,wB,kOAF1tB,yFAAyB,mCAAK,iEAAI,+DAER,oIAAgO,mCAAU,+BAAO,+BAAC,iEAAG,6CAAwC,+BAAC,qIAAqM,+BAAC,qIAA06D,+BAAC,mEAA0C,gCAAC,gCAA17E,QAAO,eAA4B,SAA2P,UAAK,eAA6B,SAAoK,SAAkB,EAAiB,4BAF/f,0EAE6O,oF,myBMA7C,4M,0bAA8H,4FAAiE,cAA/L,QAAG,UAAH,QAA+C,aAAyB,cAAxE,6CAA8H,8E,gCAAuQ,4M,0bAA8I,4FAAiE,cAA/M,QAAG,UAAH,QAA+C,aAAyB,cAAxE,6CAA8I,8E,gCAA0F,8M,0bAAkJ,4FAAmE,cAArN,QAAG,YAAH,QAAiD,aAAyB,cAA1E,6CAAkJ,gF,gCAA4F,4M,4bAA8I,4FAAoE,cAAlN,QAAG,UAAH,QAA+C,aAAyB,cAAxE,6CAA8I,iF,gCAAlqC,mFAAuC,+CAAiB,yFAAyB,2CAAyB,+CAAiB,0GAAyC,mDAAqB,oIAAmM,mDAAqB,kN,6bAA8E,6FAA0E,mDAAqB,qIAAmN,mDAAqB,qIAAyN,mDAAqB,qIAAsN,+CAAuB,4CAAa,gCAArlC,QAAiG,EAA4B,sBAA2F,SAAG,eAAH,SAAoD,UAAyH,SAAiG,0BAA4C,cAA2F,SAAmG,0BAA8C,gBAA6F,SAAiG,0BAA4C,+BAAhlC,oEAAgU,gDAA8E,+E,qEAFxgB,qGAAoC,mCAChC,kFACJ,uCAAS,mFAAmB,2CAAa,oIAAoxC,uCAAe,uCAAS,oFAAmB,2CAAa,4OAA+B,uCAAe,mCAAW,+BAAO,gCAAC,cAA74C,QAA64C,YAAv2C,cAAsyC,YAAe,M,4rBCAz2B,mEAA8B,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAA4L,gEAAuC,0J,gCAAwQ,kEAA0C,+CAAiB,iEAAI,mDAAqB,gJ,kCAAyB,c,uCAAzB,iFAA2C,+BAAc,+CAAsB,+CAAiB,gGAA+B,mDAAqB,+GAAsC,uDAAyB,yUAAsK,cAAoC,2DAA6B,mHAAkD,uDAAkC,uDAAyB,iHAA+C,2DAA6B,2K,mCAA+C,c,wCAA/C,kFAAkE,+DAAiC,qHAAoD,6GAAoF,2DAA6B,uL,mCAA2D,c,yCAA3D,kFAA+E,+DAAiC,uHAAsD,6GAAqF,uDAA+B,mDAA2B,+CAAsB,4CAAa,cAA11B,wGAAtK,SAAsK,MAAmC,cAAjX,kCAA+tB,oFAAuR,wF,gCAAp1C,6JAAkM,UAAxB,iB,wBAA1K,mOAAkM,uCAAS,oEAAO,2CAAa,gKAA4yC,uCAAiB,oCAAK,cAAjiD,QAAsG,GAA27C,YAAx3C,YAAsD,QAAI,EAAqC,6B,gCAAxe,mEAA2I,mCAAK,oIAA2E,mCAAK,oIAAyiD,gCAAC,cAA1nD,SAAG,EAAmC,qBAA0C,QAA4C,EAAkC,6B,+TAFnhC,iGAAgC,mCAChC,iEAAI,2CACQ,mCAAK,8FAA4B,uCAAS,oEAAK,2CAAa,yGAAoC,6CAA2B,2CAAa,gc,0PAAwH,sB,4BAAxH,2dAAsE,cAA2E,uCAAe,uCAAS,+JAAkF,UAAhB,c,mBAAlE,wBAAkF,2CAAa,oHAAmD,qEAAyD,mCAAW,+BAAO,+BAAC,qIAAyM,+BAAC,oIAAkB,cAAuwD,+BAAC,6DAAoC,+BAAC,mEAA0C,gCAAC,gCAA37E,SAAwH,EAAwB,YAAuP,SAAc,EAAe,SAA+L,gIAAlB,SAAkB,MAAwH,cAD32B,kEACwG,gEAA8G,kFAAtE,SAAsE,EAAtE,oMAA2T,0E,41BCAklB,mEAA8B,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAA8E,gEAAqC,qJ,gCAAojB,kEAA6B,+CAAiB,iEAAI,2CAA+B,+CAAiB,iEAAI,mDAAqB,mHAAoG,mDAAqB,uFAAsB,qCAA8B,+CAAsB,+CAAiB,kEAAI,mDAAqB,+EAA8B,gCAAqB,+CAAsB,+CAAiB,iFAAiC,2CAAa,oBAA9b,2GAAyE,QAAG,8EAA0C,uFAAkG,6DAA8F,SAAM,6DAAwB,uCAA4D,SAAI,EAAuB,8B,gCAA7+B,kGAAiE,uCAAS,qEAAO,2CAAa,kEAAI,+CAAiB,yGAAqC,2CAA2B,+CAAiB,yGAAoC,mDAAqB,uFAAsB,6CAA0B,+CAAsB,+CAAiB,0GAAqC,6CAAsB,+CAAiB,0FAAyB,6CAAuB,2CAAkB,uCAAiB,uCAAS,qEAAO,2CAAa,iKAAqf,uCAAiB,oCAAK,cAA3gB,SAA2gB,YAA/e,yBAApZ,8EAA2H,8EAAsG,4EAAgE,gF,gCAA+mB,qLAA2M,UAA7F,c,4BAA9G,+IAA2M,uCAAS,kIAAiC,aAAoD,uCAAS,mEAAM,2CAA4B,oCAAK,cAAzV,QAAyV,YAA5S,8BAA7C,QAA6C,YAA6F,oBAAsC,SAAqE,+FAAjC,QAAiC,GAAmE,gF,gCAA38C,oEAA6B,mCAAK,oIAAoE,mCAAK,oIAAmiC,mCAAK,oIAAkW,gCAAC,gCAAp9C,SAAG,aAAiC,eAAqC,QAAiC,YAA+B,eAAw+B,QAAiL,EAAyB,2B,wGAFxkF,iGAAgC,mCAChC,iEAAI,2CACM,mCAAK,6FAA4B,uCAAS,2FAAyB,2CAAa,wGAAmC,6CAA8B,2CAAa,0e,0PAAkI,sB,uBAAlI,2dAA6F,cAAwF,2CAAa,oFAAmB,8BAAQ,2CAAa,sGAAiC,6CAA4B,2CAAa,we,0PAA8H,sB,qBAA9H,2dAA2F,cAAoF,uCAAe,uCAAS,2LAA+L,UAArE,c,4BAA1H,gJAA+L,2CAAa,uQAAkD,0BAA0D,qEAAmD,mCAAW,+BAAO,+BAAC,qIAAyM,+BAAC,qIAAqgD,gCAAC,gCAAzkF,SAAkI,EAAmB,OAA+J,SAA8H,EAAiB,KAAwD,SAAoB,EAA+B,gBAA4J,IAA+C,kCAAqD,SAAvG,SAAG,sBAA+C,GAAgI,UAAc,EAAe,QAA6K,SAAc,EAAc,2CADnwC,4DACyH,mEAAwI,qFAA7F,SAA6F,EAA7F,oMAA2Q,iEAAoI,mFAA3F,SAA2F,EAA3F,oMAAuM,SAAqJ,uBAAyC,SAA0H,oE,wvBCA1c,mEAA8B,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAAyK,gEAAkC,qJ,gCAA8P,kEAAqC,+CAAiB,iEAAI,mDAAqB,gJ,kCAAyB,c,uCAAzB,iFAA2C,+BAAc,+CAAsB,+CAAiB,gGAA+B,mDAAqB,+GAAsC,uDAAyB,yUAAsK,cAAoC,2DAA6B,mHAAkD,uDAAkC,uDAAyB,iHAA+C,2DAA6B,2K,mCAA+C,c,wCAA/C,kFAAkE,+DAAiC,qHAAoD,6GAAoF,2DAA6B,uL,mCAA2D,c,yCAA3D,kFAA+E,+DAAiC,uHAAsD,6GAAqF,uDAA+B,mDAA2B,+CAAsB,4CAAa,cAA11B,wGAAtK,SAAsK,MAAmC,cAAjX,kCAA+tB,oFAAuR,wF,gCAA10C,6JAA6L,UAAxB,iB,wBAArK,mOAA6L,uCAAS,oEAAO,2CAAa,gKAAuyC,uCAAiB,oCAAK,cAAvhD,QAAiG,GAAs7C,YAAn3C,YAAsD,QAAI,EAAgC,6B,gCAAjc,mEAAwH,mCAAK,oIAAiE,mCAAK,oIAA+hD,gCAAC,cAAtmD,SAAG,EAA8B,qBAAqC,QAA4C,EAA6B,6B,+TAFv+B,iGAAgC,mCAChC,iEAAI,2CACG,mCAAK,8FAA4B,uCAAS,oEAAK,2CAAa,yGAAoC,6CAA2B,2CAAa,gc,0PAAwH,sB,4BAAxH,2dAAsE,cAA2E,uCAAe,uCAAS,+JAAkF,UAAhB,c,mBAAlE,wBAAkF,2CAAa,oHAAmD,qEAAoD,mCAAW,+BAAO,+BAAC,qIAAyM,+BAAC,oIAAc,cAAouD,+BAAC,6DAAoC,+BAAC,mEAA0C,gCAAC,gCAA/4E,SAAwH,EAAwB,YAAkP,SAAc,EAAe,SAA2L,sHAAd,SAAc,MAAyG,cAD90B,6DACmG,gEAA8G,kFAAtE,SAAsE,EAAtE,oMAA2T,qE,omBCA1c,iBAII,KAAAt5C,YAA0C,IAJjC,EAAAyzD,gB,+WCAwR,0GAA2D,oF,gCAA4T,0GAA+D,wF,gCAAmU,6GAAmE,yF,gCAAwjB,mEAA8B,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAAkL,gEAAiC,oJ,gCAAuF,qRAAyB,aAAkF,iEAAqD,cAAnJ,IAAY,uGAAzB,QAAa,OAA8C,kBAAlC,MAAiC,cAAiD,iG,gCAAgqB,oGAAwH,4J,gCAAoD,kGAAuH,6J,gCAAqD,kGAAiD,+F,gCAA8F,mEAAyC,2DAA6B,uHAAsB,aAA6D,2DAA6B,sFAAsB,2CAAoC,uDAAyB,oBAA7K,sHAAtB,QAAsB,GAAgH,sG,gCAAwJ,mEAAoD,0J,gCAAkD,mEAAoD,0J,gCAAkD,mEAAsD,4J,gCAAoD,mEAAmD,yJ,gCAAspB,0K,kCAA+C,c,kDAA/C,iFAAiK,mEAAqC,yHAAyD,6O,gCAAwI,uL,kCAA4D,c,iDAA5D,iFAA8K,mEAAqC,oHAAoD,oO,gCAA+H,0K,kCAA+C,c,gDAA/C,iFAAwF,mEAAqC,sHAAsD,mO,gCAA8H,0K,kCAA+C,c,gDAA/C,iFAAiL,mEAAqC,0HAA0D,sO,gCAApiH,kEAAoC,mDAAqB,+EAAe,uDAAyB,yUAA4I,mDAA0B,mDAAqB,kEAAI,uDAAyB,iJ,mCAAyB,c,uCAAzB,kFAA2C,gCAAe,uDAAyB,qIAAmJ,uDAAyB,qIAAmJ,uDAAyB,qIAAmE,mDAA0B,mDAAqB,kEAAI,uDAAyB,qIAAwR,mDAA0B,mDAAqB,mEAAI,uDAAyB,qIAA6E,uDAAyB,qIAA6E,uDAAyB,qIAAiF,uDAAyB,qIAA2E,mDAA0B,mDAAqB,iGAA+B,uDAAyB,+GAAsC,2DAA6B,yUAA0M,cAAoC,+DAAiC,mHAAkD,2DAAsC,2DAA6B,iHAA+C,+DAAiC,qIAAsW,+DAAiC,qIAAqW,+DAAiC,qIAAgR,+DAAiC,qIAAgX,+DAAiC,uL,mCAA2D,c,yCAA3D,kFAA+E,mEAAqC,sHAAqD,qHAA6F,2DAAmC,uDAA+B,mDAA0B,gDAAiB,gCAAv7H,QAAY,4BAA0B,wBAAC,EAAiB,wBAAC,KAAsD,IAA5C,GAAwO,SAAgE,+BAAuD,oCAAqD,SAA8D,+BAAwD,qCAAsD,SAAkC,EAAc,wBAA+F,SAAc,EAA0B,oCAA4T,SAAM,6BAA6C,4BAAmD,SAAM,6BAA6C,4BAAmD,SAAM,6BAA+C,8BAAqD,SAAM,6BAA4C,2BAA6Y,wGAA1M,SAA0M,GAA0Q,SAAyG,+BAAuD,oCAAuO,SAAqH,+BAAwD,qCAAyN,SAAmE,EAAoB,cAA0N,SAAuG,+CAAyE,uDAAhmG,oCAA0+G,wF,gCAAjwI,oEAA2C,uCAAS,oIAA8K,uCAAS,6JAAmK,UAAxB,iB,wBAA3I,mOAAmK,2CAAa,oEAAO,+CAAiB,iKAA6hI,2CAAqB,uCAAiB,oCAAK,gCAAv8I,QAAkF,EAAwB,kBAA6E,QAA2D,GAAyC,EAAsC,YAA8D,SAAI,EAA+B,6B,gCAAhqB,mEAAiI,mCAAK,oIAA+D,mCAAK,oIAA0gJ,gCAAC,cAA/kJ,SAAG,EAA6B,qBAAoC,QAAc,EAA4B,6B,miBAFvlE,iGAAgC,mCAChC,iEAAI,4CACG,mCAAK,8FAA4B,uCAAS,uHAAiD,2CAAa,qJAAoI,UAAvB,c,0BAA7G,wKAAwD,uBAA4E,iFAAkD,qIAA8E,2CAAsB,2CAAa,qJAAgN,UAArD,c,0DAA3J,wKAAwE,uBAAwI,iFAAsD,qIAAsF,2CAAsB,2CAAa,qJAAkN,UAAtD,c,2DAA5J,wKAAwE,uBAA0I,iFAAuD,qIAA2F,2CAAsB,uCAAe,uCAAS,oFAAkB,2CAAa,yGAAoC,6CAA2B,2CAAa,gc,0PAAwH,sB,4BAAxH,2dAAsE,cAA2E,uCAAe,uCAAS,+JAAqF,UAAnB,c,sBAAlE,wBAAqF,2CAAa,oHAAmD,qEAAsD,mCAAW,+BAAO,+BAAC,qIAAyM,+BAAC,oIAAkB,cAAktJ,+BAAC,6DAAoC,+BAAC,oEAA2C,+BAAC,oEAA2C,+BAAC,sEAA4C,gCAAC,gCAA3kN,2BAAxD,SAAsB,4BAAkC,GAA8H,SAA0C,EAAgB,UAA6E,IAAkD,uBAAkE,oCAA1I,SAAsB,4BAAkD,GAA8L,SAA0C,EAAoB,cAAiF,IAAkD,uBAAmE,qCAA3I,SAAsB,4BAAkD,GAAiM,SAA6C,EAAqB,eAAkL,SAAwH,EAAwB,YAAuP,SAAc,EAAe,SAA+L,4HAAlB,SAAkB,MAA8G,cAD/9D,8DAC+O,6DAAmX,iEAAiY,kEAAmQ,gEAA8G,kFAAtE,SAAsE,EAAtE,oMAA8T,uE,4oBCEhlD,iBACI,KAAAQ,OAAmB,GAGnB,KAAAj0D,YAA0C,IAJjC,EAAAg0D,iC,8ECAb,iBAGI,KAAAh0D,YAA0C,IAHjC,EAAA8zD,iC,8ECJb,iBACI,KAAAU,SAAqB,IADZ,EAAAD,uC,2OCEI,mEAA8B,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAAyQ,kGAAoD,qJ,gCAA/L,kEAA+B,2CAAa,kEAAI,+CAAiB,gJ,kCAAyB,c,uCAAzB,iFAA2C,+BAAc,+CAAiB,oIAA+E,+CAAiB,mGAAkC,gCAAyB,2CAAkB,wCAAS,cAAtL,QAAkC,EAAiB,4CAAlF,kCAAiK,6C,gCAA/V,4GAA6D,mCAAK,oEAAO,uCAAS,gKAAsU,mCAAa,gCAAC,cAApV,QAAoV,YAAtT,kB,mLAF3U,gGAAgC,mCAChC,iEAAI,2CACK,+BAAO,+BAAC,qIAAyM,+BAAC,qIAA8a,+BAAC,kEAAyC,gCAAC,gCAAnqB,SAAc,EAAe,SAA6K,UAA4C,EAAgB,0BADnR,kE,okBCCJ,mBAAa,EAAAwC,iB,4NCA6hB,6M,0bAA8F,4FAAkE,cAAhK,QAAG,WAAH,QAAgD,aAAyB,cAAzE,6CAA8F,wE,gCAA2F,gN,0bAA+F,4FAAuE,cAAtK,QAAG,cAAH,QAAmD,aAAyB,cAA5E,6CAA+F,6E,qEAFl0B,qGAAoC,mCAChC,kFACJ,uCAAS,oFAAmB,2CAAa,mFAAkB,+CAAiB,yFAAyB,6CAA2B,+CAAiB,2GAAyC,mDAAqB,8M,6bAA0E,6FAA6E,mDAAqB,mN,6bAA+E,6FAA2E,mDAAqB,qIAAoK,mDAAqB,qIAA0K,+CAAuB,2CAAmB,uCAAe,uCAAS,oFAAmB,2CAAa,4OAA+B,uCAAe,mCAAW,+BAAO,gCAAC,gCAAj2B,SAAG,WAAH,SAAgD,UAA4H,SAAG,gBAAH,SAAqD,UAA0H,UAA0E,EAAmB,YAA4F,SAA6E,EAAiB,WAA8K,aAAe,cAAz5B,kEAA0G,gDAA0E,wEAAkG,gDAA+E,yE,uvBCA1b,kEAAqB,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAAmC,4U,kFAAoC,iB,sBAApC,sWAAwG,mCAAK,kFAAiB,uCAAS,oFAAmB,2CAAa,0FAAwB,+CAAiB,mFAAkB,6CAAqC,+CAAiB,wa,0PAA8D,sB,0BAA9D,0fAAqF,2CAAmB,2CAAa,0FAAwB,+CAAiB,2FAA0B,6CAAiC,+CAAiB,wb,0PAAkG,sB,kCAAlG,0fAAiI,2CAAmB,2CAAa,0FAAwB,+CAAiB,2FAA0B,6CAAiC,+CAAiB,wb,0PAAkG,sB,kCAAlG,0fAAiI,2CAAmB,uCAAe,uCAAS,oFAAmB,2CAAa,gWAAoF,uCAAe,mCAAW,mCAAK,4IAAmF,uCAAS,mIAAiC,cAAoD,uCAAS,oEAAM,6CAAwB,mCAAc,gCAAC,gCAA9zC,QAA0D,EAA4B,aAAkM,SAAkD,OAAY,EAAsB,UAAsJ,SAA0D,eAAwC,EAA8B,kBAAsJ,SAA0D,eAAwC,EAA8B,kBAA4E,SAAY,yCAAmC,KAAU,KAAzB,WAAc,cAAlhC,qMAAkO,iFAAsD,6MAAwL,6EAAkD,6MAAoO,6EAAkD,6MAA+T,SAAyD,YAAyB,SAA2C,0FAAjC,SAAiC,GAAmE,wE,gCAA+C,oEAAgC,mCAAK,4GAA4C,uCAAS,iEAAI,2CAAwB,mCAAW,mCAAK,gEAAG,iEAAyC,6IAAoE,qEAAgD,mCAAS,mCAAK,qJAA+E,UAAvB,c,0BAAxD,wBAA+E,6CAAgC,mCAAK,qJAAiF,UAAzB,c,4BAAxD,wBAAiF,6CAAkC,+BAAC,oBAA9b,oEAA2C,2EAA6G,0EAA6I,2EAAsH,gF,gCAAuL,kEAA6B,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAAmC,+U,kFAAuC,iB,6BAAvC,sWAAqH,mCAAK,iNAA6B,mCAAK,2IAAsF,uCAAS,mIAAiC,cAAoD,uCAAS,oEAAM,6CAAwB,mCAAc,gCAAC,cAAtY,QAAsY,YAAnS,gBAAuB,YAAc,cAAxI,qMAA4J,QAAyD,YAA4B,SAA2C,0FAAjC,SAAiC,GAAmE,wE,0iBAF7tF,yFAAyB,mCAAK,iEAAI,4CAE1B,+BAAO,+BAAC,qIAAuL,+BAAC,qIAAq0C,+BAAC,qIAA2iB,+BAAC,6GAA4C,mCAAK,kEAAI,6CAAgC,+BAAO,+BAAC,iEAAG,6CAAmC,+BAAC,qIAA+L,+BAAC,qIAA6Y,+BAAC,yHAAwD,mCAAK,kEAAI,6CAA4B,+BAAO,+BAAC,kGAAgC,mCAAK,yFAAuB,uCAAS,iEAAG,6CAA+B,uCAAS,kJAAgG,UAA/B,c,kCAAjE,wBAAgG,6CAAwC,uCAAS,kJAA4E,UAAvB,c,0BAArD,wBAA4E,6CAAgC,mCAAW,+BAAO,+BAAC,gFAAuD,+BAAC,+EAAsD,+BAAC,oEAA2C,+BAAC,0EAAiD,gCAAC,gCAA96G,SAAK,EAAe,SAAoK,SAAM,UAAuB,SAAyyC,SAAc,EAAiB,WAAipB,UAAK,SAAuB,SAAoK,SAAM,UAAuB,0BAFz3E,sEAE6kE,wEAA2C,4EAAmrB,oEAA4G,wEAAwI,4EAA6H,uE,4jBCF9rG,mBAAa,EAAA3S,6B,qQhDEC,gEAA2B,gJ,gCAAkC,gEAA0B,4J,gCAA8C,6NAAoD,gCAAK,6DAAG,2CAA4C,gCAAK,iJAAyF,UAAzB,c,4BAAhE,wBAAyF,2CAAsC,6BAAC,cAA7O,QAAa,cAAc,cAAiC,yFAA0I,iF,gCAA+H,oEAAuB,uCAAS,mJAAkD,aAAoD,uCAAS,sFAAsB,2CAA2B,mCAAK,oBAAnH,wFAAlD,QAAkD,GAAmF,wE,gCAA+C,4NAAsD,iDAAgD,cAAtG,QAAa,cAAc,cAA2B,8F,gCAAqb,mEAAgC,mDAAqB,2IAA0C,aAAoD,mDAAqB,sFAAsB,2CAA2B,+CAAiB,oBAA3I,+FAA1C,QAA0C,GAA+F,+E,gCAA4E,gL,kCAAgH,c,+BAAhH,iFAA4I,sL,gCAAjuB,uHAAkF,uCAAS,oHAAoD,2CAAa,qFAA2D,uCAAe,uCAAS,mFAAkB,2CAAa,iFAAiB,oEAA4C,qIAAyP,+CAAiB,qIAA0M,2CAAkB,wDAA6C,uCAAS,sFAAqB,2CAAa,0KAAoJ,UAAzB,c,8CAA3H,wBAAoJ,6EAA0D,uCAAe,oCAAK,gCAAhyB,SAAc,EAAiB,2BAA2O,UAAqD,sBAAsC,8DAAphB,QAAK,sDAA8H,mCAAkhB,0CAAwF,UAA+D,sBAA2C,2BAA0C,0E,wuBAFz2D,yFAAyB,mCAAK,iEAAI,6CAE5B,+BAAO,+BAAC,qIAA4D,+BAAC,qIAAuE,+BAAC,qIAA2P,+BAAC,gMAAI,uBAAqC,yDAAgC,qIAA6M,+BAAM,+BAAC,qIAAoH,+BAAC,uGAAsC,mCAAK,iKAAgnC,+BAAM,iCAAE,2EAAkD,+BAAC,sEAA6C,+BAAC,iEAAwC,+BAAC,mEAA0C,+BAAC,qEAA4C,+BAAC,iEAAwC,gCAAC,gCAAjsE,UAAG,EAAuB,gBAAmC,SAAG,EAAsB,gBAA+C,UAA4B,EAAuB,gBAA6M,kBAAoC,gBAAxC,SAAI,GAAqE,SAAO,EAAe,SAA8L,SAA4B,EAAyB,mBAA2G,SAAI,EAA2B,4BAFz0B,sEAEsZ,sE,61BSA7Z,6JAAiH,UAAzG,c,oBAAR,wBAAiH,uCAAS,qQAA+B,yBAAwD,4DAAkC,kBAA1F,UAA0F,YAA1D,SAA/D,QAAG,sBAA4B,MAAgC,cAAzL,QAAyL,YAAzE,SAAiG,wE,gCAAmD,mEAA8C,mCAAK,6IAA4C,aAAoD,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAA3G,wFAA5C,QAA4C,GAA+E,wE,gCAAuR,oJAAqG,UAA7C,c,yBAAxD,wBAAqG,gK,gCAAkD,2HAAsJ,UAApG,gB,gCAAyC,mB,gCAA3F,6RAAsJ,oCAAK,cAA3J,QAA2J,YAA1G,wB,gCAA8L,gEAA0B,sJ,gCAAkF,8OAA4B,aAAmJ,wCAAa,6DAAG,2DAAmF,wCAAa,uW,oFAAsC,iB,0BAAtC,yWAAoI,+CAAiB,gHAA2C,6CAAiC,+CAAiB,gGAA8B,mDAAqB,kGAAiC,uDAAyB,+FAA8B,gCAAS,mDAA2B,mDAAqB,kiB,0aAAqH,sB,+BAArH,2yBAAoL,+CAAuB,+CAAiB,gHAA2C,6CAAiC,+CAAiB,gGAA8B,mDAAqB,kGAAiC,uDAAyB,+FAA8B,gCAAS,mDAA2B,mDAAqB,kiB,0aAAqH,sB,+BAArH,2yBAAoL,+CAAuB,+CAAiB,oJAAiG,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAqC,+CAA0B,2CAAoB,qCAAS,gCAAptD,4GAA5B,QAAa,UAAe,GAAmQ,SAAgE,EAAkC,mBAAoV,SAA2K,IAA3K,SAA8E,UAAuC,EAA2B,eAA6W,SAA2K,IAA3K,SAA8E,UAAuC,EAA2B,gCAAnqC,+LAAgG,4MAAgM,yFAAsP,2OAAuQ,yFAAsP,2OAA4N,SAAiE,YAA+B,SAAuD,wGAAjC,SAAiC,GAA+E,mG,gCAAksB,mEAAiC,2J,gCAAp6E,oEAAoC,uCAAS,oIAA8vD,uCAAS,gEAAG,2CAAa,mOAAoB,2IAA8hB,2CAAa,qIAAkE,wDAAuD,oCAAK,gCAAp9E,QAA+E,0DAA+F,iCAA4mD,IAAiB,mSAAyhB,+BAA7iB,QAAG,WAAiB,GAA2iB,SAAM,EAA0B,qCAAkC,SAAlC,YAAkC,8B,gCAAgF,oJAA6G,UAArD,c,6BAAxD,wBAA6G,2N,gCAAmG,kIAAuO,UAAvG,mB,8BAAkC,mB,8BAAlK,qTAAuO,oCAAK,gCAA5O,QAAoB,gDAA0E,EAAiC,wB,gCAAgM,gEAAyC,iJ,gCAAmvB,mEAAqB,uDAAyB,2HAA2D,yM,gCAA2F,mEAAsB,uDAAyB,sIAAsE,2M,gCAAj7B,kEAA+B,+CAAiB,iEAAI,2CAAmC,+CAAiB,kEAAI,mDAAqB,8OAA2F,cAA4C,uDAAyB,oHAAuD,mDAAqB,8HAAmD,cAAiC,uEAAkE,+CAAsB,+CAAiB,kEAAI,6CAAgC,+CAAiB,kEAAI,mDAAqB,qIAA+K,mDAAqB,qIAA6L,+CAAsB,4CAAa,cAAh0B,+GAA3F,QAA2F,GAA4Z,SAAM,EAAc,wBAAgL,UAAM,EAAe,yCAA7xB,+GAA6E,QAAG,0DAA4O,4DAAgD,wGAAnD,SAAG,EAAgD,GAAiC,uHAA6G,8G,gCAAzoB,0FAA8D,uCAAS,oEAAO,2CAAa,gKAAiiC,uCAAiB,oCAAK,cAAvjC,QAAujC,YAAzhC,kB,gCAAmmC,gEAAiD,qJ,gCAAmR,mEAAqF,+M,gCAAiG,mEAAgD,+J,gCAA8F,0PAAmE,0GAAmhB,gCAAnhB,6WAAmhB,0BAAtlB,QAAG,WAAgE,KAAmhB,M,gCAAtiC,kEAAmC,+CAAiB,iEAAI,2CAA0C,+CAAiB,iEAAI,mDAAqB,oIAAiK,mDAAqB,qIAA8E,+CAAsB,+CAAiB,kEAAI,mDAAqB,qIAA2lB,wEAAwD,+CAAiB,2MAAI,6BAAwC,cAAkD,mEAAqD,4CAAa,gCAAxoC,QAAM,kFAA8E,wBAAkG,SAAM,6BAAyC,wBAA+F,SAAoB,EAA2B,qCAAynB,iBAAuC,4BAA3C,SAAI,MAAuC,cAAvmC,sHAAm/B,sCAAqH,yIAA5C,SAA4C,GAAkD,8G,gCAArzC,0FAAsE,uCAAS,oEAAO,2CAAa,gKAAyxC,uCAAiB,oCAAK,cAA/yC,QAA+yC,YAA7wC,sB,gCAAntK,oEAA8B,mCAAK,iEAAI,2CAAsE,mCAAK,mFAAmB,qEAAQ,2CAA+C,mCAAK,iEAAG,6CAAkC,mCAAK,qIAAkJ,mCAAK,qIAA4K,mCAAK,2FAA0B,6CAA+B,mCAAK,qIAA0D,mCAAK,qIAAghF,mCAAK,qIAA2M,mCAAK,qIAAiQ,mCAAK,2FAA0B,6CAA0B,mCAAK,qIAAoE,mCAAK,qIAA0pC,mCAAK,2FAA0B,6CAA8B,mCAAK,qIAAgF,mCAAK,qIAA05C,mCAAK,2FAA0B,+CAAqD,gCAAC,gCAAl1M,UAA8E,EAAsB,eAAmD,SAAgI,EAAqB,eAA0F,UAAG,EAAsB,eAAsC,SAAc,EAAqB,eAAk/E,UAAkF,EAA0B,mBAAoG,SAA6M,EAAyB,mBAAyF,UAAG,eAAqC,iBAAiC,SAA0B,cAAmC,iBAA+pC,UAAG,mBAA6C,qBAAqC,SAA0B,kBAA2C,wDAA5mK,0GAAsG,iFAAuD,kFAAyY,8EAAwmG,yEAAiyC,6EAAijD,gG,+IAFhgO,gGAAgC,mCAChC,iEAAI,2DACkB,mCAAK,qIAA4P,+BAAO,+BAAC,qIAAyN,+BAAC,qIAA4kN,gCAAC,gCAA3iO,SAAwE,EAAmB,aAAyK,UAAc,iBAA+B,SAA6K,SAAc,EAAe,0BADlhB,iE,g6BwCCe,oEAAsC,2CAAa,6IAA4C,aAAoD,2CAAa,sFAAsB,2CAA2B,uCAAS,oBAA3H,wFAA5C,QAA4C,GAAuF,wE,gCAA8D,mEAA8C,mCAAK,sHAA4C,aAAiC,mCAAK,sFAAsB,2CAA2B,+BAAC,oBAAxF,wFAA5C,QAA4C,GAA4D,wE,gCAA2E,6OAA4B,aAA6E,mDAA0C,cAAtI,IAAe,4FAA5B,QAAa,UAAe,MAA6B,cAAgD,4F,gCAA6D,8OAA4B,aAA6E,oCAAS,6DAAG,2CAA4C,oCAAS,0LAAuL,UAAtG,c,yBAAjF,+IAAuL,2CAAa,mIAAiC,cAAoD,2CAAa,oEAAM,6CAAyC,uCAAkB,iCAAK,gCAA1f,uGAA5B,QAAa,UAAe,GAA8I,QAAmH,EAAiC,mCAAzM,gGAAqD,QAAqJ,YAAiC,SAA+C,iGAAjC,SAAiC,GAAuE,gG,gCAA+T,+FAAiD,+CAAiB,6HAA6D,qM,gCAA1N,iEAA2B,uEAAgE,oIAAiM,wCAAS,cAA1M,QAA0M,YAAnL,8CAAvF,sG,gCAAwR,iEAA4B,0J,gCAAhe,kEAAuB,uCAAS,iEAAI,2CAA6B,uCAAS,iEAAI,+BAAiB,uCAAS,iEAAI,6CAA4B,uCAAS,qIAA0S,uCAAS,qIAA0D,oCAAK,gCAAlX,SAAI,EAAsB,gBAAyR,UAAI,EAAuB,mDAA3b,4EAA0C,oBAA8B,qF,gCAA8zB,kGAAkG,wK,gCAApU,oEAAmC,mDAAqB,iEAAI,2CAAwB,mDAAqB,iEAAI,uDAAyB,8FAA8B,+BAAqC,uDAAyB,qIAAyI,mDAA0B,mDAAqB,kEAAI,6CAA4B,mDAAqB,kEAAI,gFAAgK,gDAAiB,cAAla,SAAka,YAAjU,gEAAvQ,8EAAwG,oCAA0P,yFAAqD,yN,gCAAwa,kEAAyC,uDAAyB,iEAAI,6GAAoJ,uDAAyB,iEAAI,oHAA4H,mDAAqB,oBAAlU,mNAAiL,+O,gCAArb,oFAAwC,2CAAa,6FAA6B,2CAA6B,2CAAa,qFAAqB,+CAAiB,oEAAO,mDAAqB,iKAA6Y,+CAAyB,2CAAqB,wCAAS,cAApc,SAAoc,YAA5Z,qCAApJ,sF,gCAA18B,kFAAqC,uCAAS,oFAAmB,2CAAa,kEAAI,+CAAiB,iEAAI,2CAA6B,+CAAiB,kEAAI,gCAAiB,+CAAiB,qIAAmpB,2CAAkB,uCAAe,uCAAS,qIAAwoB,oCAAK,gCAA10C,SAAc,EAAoB,cAA2pB,SAAmB,EAAoB,iDAAxzB,4EAAkD,wB,gCAAmxD,wFAAiD,2CAAa,wFAAuB,+CAAiB,gIAA+H,UAApC,c,oCAA3F,qIAAoC,aAA2F,yFAAyB,8BAAuB,+CAAiB,8FAA6B,6CAA+B,+CAAiB,kIAA0J,UAApG,kB,oCAA2D,mB,oCAAjH,sRAA+K,2CAAmB,wCAAS,gCAApb,iGAApC,QAAoC,GAAyO,SAAoB,EAAiC,iCAArG,+F,gCAA/tB,oEAAiC,uCAAS,kEAAK,2CAAa,oJAAkF,UAA1B,c,6BAAxD,wBAAkF,2EAAiE,2CAAa,mLAAuG,4EAAiE,uCAAe,uCAAS,qIAAokB,oCAAK,cAAzkB,SAAykB,YAAzhB,oCAA9T,kFAAqL,2F,gCAAkwB,oJAAuG,UAA/C,c,0BAAxD,wBAAuG,+L,gCAAkF,uKAAqK,UAAxG,c,+BAA7D,wBAAqK,2EAA0D,oBAA/N,QAA+N,YAA3D,qBAAC,8F,gCAAgF,+LAAoR,UAAjM,c,sBAAnF,+IAAoR,+CAAiB,kIAAiC,aAAoD,+CAAiB,mEAAM,2CAAsC,4CAAa,cAApc,QAAoc,YAAhT,gCAApJ,QAAqJ,YAA8B,SAAmJ,sGAAjC,QAAiC,GAA2E,iG,gCAAoF,8HAAgK,UAA7G,kB,iCAAgD,mB,iCAAnG,sPAAgK,cAAhK,QAAgK,YAA9G,wB,gCAAyI,kFAA8C,2CAAa,sIAAsJ,UAA9F,qB,oCAAwD,mB,oCAAhH,0QAA6K,wCAAS,cAAtL,QAAsL,YAA/H,wB,gCAA0a,oFAA6C,mDAAqB,oJAAoF,UAA5B,c,6BAAxD,wBAAoF,2FAA4E,mDAAqB,yJAA0F,UAA7B,c,6BAA7D,wBAA0F,2FAA+E,+CAAiB,oBAA3R,2FAA2L,iG,gCAAuH,gIAAiQ,UAA7G,mB,4BAAgC,mB,4BAApL,4WAAiQ,gCAAjQ,QAAkB,EAAuB,UAAC,EAAsB,eAAC,EAAiC,eAAqB,EAA4B,yB,gCAA3vB,oEAAgH,2CAAa,kFAAkB,+CAAiB,oIAAub,+CAAiB,oIAAoR,2CAAmB,wCAAS,gCAAxvB,SAAoB,EAAwB,iBAA4Z,QAAyO,EAAuB,yB,iCAAurB,oFAA+C,mDAAqB,oJAAsF,UAA9B,c,+BAAxD,wBAAsF,2FAA8E,mDAAqB,yJAA4F,UAA/B,c,+BAA7D,wBAA4F,2FAAiF,+CAAiB,oBAAjS,6FAA+L,mG,iCAAyH,kIAAqR,UAAnH,mB,8BAAsD,mB,8BAAxN,4XAAqR,gCAArR,QAAoB,EAAiC,eAAC,EAAwB,iBAAqB,EAAiC,eAAC,EAA4B,yB,iCAAjwB,oEAA8F,2CAAa,kFAAkB,+CAAiB,qIAAic,+CAAiB,qIAA0S,2CAAmB,wCAAS,gCAAxxB,SAAoB,EAA0B,mBAAoa,QAA2P,EAAyB,2B,iCAA3xH,oEAAkC,uCAAS,qFAAoB,2CAAa,oIAA4K,2CAAa,oIAAwO,2CAAa,qIAA6c,uCAAe,uCAAS,qIAAkL,uCAAS,qIAAuP,uCAAS,2FAA0B,6CAA2B,uCAAS,iEAAG,6CAAkD,uCAAS,qIAAu6B,uCAAS,2FAA0B,6CAAyB,uCAAS,iEAAG,6CAAwF,uCAAS,uFAAsB,2CAAa,0SAAwD,sBAAgJ,+DAA8D,uCAAe,uCAAS,sIAAq7B,oCAAK,gCAArxH,SAA+E,EAAuB,gBAAmF,QAAyG,EAA0B,oBAAkH,SAAoM,8CAA+E,6BAAkN,SAAyI,EAAsB,gBAA4B,SAAkB,EAA2B,qBAA+U,SAAc,gEAAiG,6BAA4jC,2CAAxD,SAAwD,GAAsO,SAAc,8CAA+E,gEAAhlD,6EAAuC,yGAAqgC,+EAAqC,2IAAoI,SAAyH,EAAwC,mBAAuC,gG,iCAArlN,oEAA0B,mCAAK,oIAAiK,mCAAK,oIAAoiB,mCAAK,oIAAwgB,mCAAK,qIAA2gD,mCAAK,qIAAo/B,mCAAK,sIAAg3H,gCAAC,gCAAtlP,QAA0D,kBAA8C,wBAA8D,QAAqE,EAAmC,6BAAic,QAAI,EAAkB,YAAuf,UAAiB,EAAmB,YAA4+C,SAAc,EAAkB,YAAy9B,UAAc,EAAmB,oB,sLAFnvI,yFAAyB,mCAAK,iEAAI,+DAEf,qIAAkO,mCAAU,+BAAO,+BAAC,qIAAsM,+BAAC,sIAAooP,gCAAC,gCAAhkQ,SAAO,iBAA8B,SAA+M,UAAc,iBAA+B,SAA0J,SAAc,EAAW,sBAFrc,sE,u6BCAlC,kGAAiC,mCAChC,wFACE,uCAAS,gIAA0F,UAAnB,c,sBAAvE,qIAAoC,aAAsD,yFAAyC,8BAAuB,uCAAS,8FAA6B,6CAAmC,uCAAS,iFAAgB,6CAAyC,uCAAS,sIAAqJ,UAAxB,mB,sBAA7H,8YAAqJ,uCAAkC,mCAAW,+BAAO,gCAAC,gCAApd,4EAApC,QAAoC,GAA0Q,SAA+E,EAAiC,gBAAxF,GAAmB,EAAoB,eAAe,cAA5L,2EAA4D,qF,uvBCFxQ,6V,kFAAyB,iB,sBAAzB,sWAEmC,mCAAK,wFAAuB,uCAAS,gIAA0F,UAAnB,c,sBAAvE,sIAAoC,cAAsD,0FAAyC,8BAAuB,uCAAS,8FAA6B,6CAAiC,uCAAS,mFAAiB,2CAAa,gGAA8B,+CAAiB,sFAAoB,mDAAqB,6FAA4B,6CAAwC,mDAAqB,0UAAkD,cAA2J,uDAAyB,2HAA0D,mDAAyB,+CAAuB,+CAAiB,6d,0PAAsG,sB,gCAAtG,oqBAA4I,2CAAmB,uCAAe,uCAAS,4IAAmF,2CAAa,mIAAiC,cAAoD,2CAAa,oEAAM,6CAA0B,uCAAkB,uCAAS,qJAA2E,UAAnB,c,sBAAxD,wBAA2E,qEAAkD,mCAAW,+BAAQ,gCAAC,gCAFv6C,QACU,EACO,aAA2F,kFAApC,SAAoC,GAAuc,qFAAlD,SAAkD,GAA+S,SAAmI,IAAnI,SAA4D,iBAA0C,EAA4B,iCAFp+B,qMAEwQ,yEAA4L,6EAA8Z,2OAAuL,SAAyD,YAAyB,SAA+C,mFAAjC,SAAiC,GAAuE,gEAAgI,mE,+yBCAjqB,kFAA8B,2CAAa,qEAAQ,4CAA4B,+FAA8I,sCAA1K,+DAA4B,qO,qJAF/wB,6V,kFAAyB,iB,sBAAzB,sWAEmC,mCAAK,wFAAuB,uCAAS,iIAA0F,UAAnB,c,sBAAvE,sIAAoC,cAAsD,0FAAyC,8BAAuB,uCAAS,8FAA6B,6CAAkD,uCAAS,mFAAiB,2CAAa,gGAA8B,+CAAiB,6FAA4B,6CAAyD,+CAAiB,wgB,0aAAwG,sB,gCAAxG,2yBAA+J,2CAAmB,uCAAe,uCAAS,qIAAmO,uCAAS,4IAAmF,2CAAa,mIAAiC,cAAoD,2CAAa,oEAAM,6CAA0B,uCAAkB,uCAAS,qJAA2E,UAAnB,c,sBAAxD,wBAA2E,qEAAkD,uCAAS,wGAAuC,qEAAmF,mCAAW,+BAAQ,+BAAC,mPAAiD,gCAAC,gCAF/+C,QACU,EACO,aAA2F,kFAApC,SAAoC,GAA0Y,SAAsJ,IAAtJ,SAA8D,iBAA0C,EAA4B,gBAAsE,SAAK,EAAW,KAA6uB,UAAa,MAAqB,gCAF/9C,qMAEwQ,sFAAoK,0FAA0E,2OAAsb,SAAyD,YAAyB,SAA+C,mFAAjC,SAAiC,GAAuE,gEAAgI,gEAAkG,iG,kqBCFt1C,mBAAa,EAAAyT,e,mXCE49B,kUAA0D,gCAAU,cAApE,QAAsC,EAAmB,yBAAzD,QAAsC,EAAmB,0CAAC,qC,gCAA5Z,kFAAmC,mDAAqB,+FAA8B,uDAAyB,kFAAkB,2CAAmC,uDAAyB,wW,gGAA8B,sB,6BAA9B,mgBAAwI,2DAA6B,iKAA6E,uDAAkC,mDAA2B,gDAAiB,gCAAhU,SAAkB,OAAwF,EAA6B,iBAAzG,EAAyB,aAA8G,SAAQ,EAA6B,8BAAtQ,mFAA4D,+M,gCAAugC,kUAAmD,gCAAU,cAA7D,QAAkC,EAAgB,sBAAlD,QAAkC,EAAgB,uCAAC,qC,gCAAvX,+FAAoD,uDAAyB,oFAAoB,2CAA2B,uDAAyB,8W,gGAAoC,sB,iCAApC,kgBAAkJ,2DAA6B,iKAAsE,uDAAkC,oDAAqB,gCAA5S,QAAoB,WAAgG,EAA6B,iBAA7G,EAA6B,iBAA8G,SAAQ,EAAyB,0BAApQ,2EAAoD,+M,gCAAk6B,gGAA0D,mEAAqC,sKAA6P,UAA5E,c,iEAAjL,qIAAgG,aAA6J,uEAAyC,wHAAwD,mEAA8C,gEAAiC,cAA7U,2GAAhG,QAAgG,KAAwC,M,gCAA0qB,yK,kCAAmI,c,gCAAnI,qIAAsF,YAAtF,0DAAoO,uEAAyC,4HAA4D,oEAAqC,cAAxR,sHAAtF,QAAsF,KAA4C,M,gCAA7N,6FAAsD,mEAAqC,oIAAkX,mEAAqC,yL,kCAA6I,c,6BAA7I,qIAAmG,YAAnG,iLAAqP,uEAAyC,8IAAiJ,uEAAyC,8JAAiJ,cAAiC,mEAAyC,gEAAiC,gCAA3mC,QAAwM,EAA2B,qBAAuR,4GAAnG,QAAmG,GAAnG,QAA+M,EAAqC,uCAA0C,SAA0C,YAAmC,SAAyN,mBAAoC,QAAC,oGAAjJ,SAA4G,EAAqC,M,gCAAirF,qL,kCAA0D,c,+BAA1D,iFAA+L,oO,gCAA+H,qL,kCAA8F,c,mCAA9F,iFAAkT,oO,gCAA/1B,mEAA6C,+DAAiC,gIAAqC,aAA2F,+DAAiC,oIAA6R,+DAAiC,oIAAgZ,4DAA6B,gCAA3uB,SAA0H,6CAAoE,kBAAgI,QAAkK,2GAA+I,6CAA3uB,mHAArC,QAAqC,M,gCAA04B,wGAA6E,+DAAiC,wGAAuC,mEAAqC,uFAAuB,+BAAkB,mEAAqC,wEAAK,uEAAyC,qEAAG,2EAA6C,yPAA2G,uCAAwD,2EAA6C,2IAAkE,uEAA6C,mEAA2C,+DAAwC,+DAAiC,wGAAiE,cAA0C,gCAA4B,+DAAiC,wIAA6N,UAAzD,c,4DAApK,sIAA+E,cAA8I,mEAAqC,mHAAkD,+DAA0C,4DAA6B,kBAA32B,WAA22B,YAA7zB,UAAzJ,SAA2G,GAA+jB,qHAA/E,SAA+E,MAAgD,gCAA/2B,mBAAyoB,qHAAjE,SAAiE,GAA0C,iC,gCAAixG,kUAA8D,0EAAmD,cAAjH,QAA0C,EAAmB,yBAA7D,QAA0C,EAAmB,0CAAC,qC,gCAA+I,wJAAwL,UAA5H,c,mDAA5D,qIAA2H,aAA6D,uEAAyC,2HAA2D,oEAAqC,cAAtM,mHAA3H,QAA2H,KAAkC,M,gCAA1iG,kFAA6F,2DAA6B,+FAA8B,+DAAiC,iFAA2B,2CAA0C,+DAAiC,0FAAyB,mEAAqC,mb,0PAAgI,sB,uCAAhI,gpBAA0N,cAAkE,mEAAqC,kGAAgC,uEAAyC,qLAA+O,UAAxG,c,yCAAvI,sIAAoG,cAA2I,2EAA6C,qHAAoD,uEAAkD,uEAAyC,uKAAsO,UAA9F,c,uDAAxI,sIAAoG,cAAkI,2EAA6C,yHAAwD,uEAAkD,mEAA2C,+DAAuC,2DAAmC,2DAA6B,gGAA8B,+DAAiC,sFAAoB,mEAAqC,kFAAgC,6HAAiH,mEAAqC,4SAAyJ,cAAsC,uEAAyC,2HAA0D,mEAAyC,+DAAuC,+DAAiC,sFAAoB,mEAAqC,sV,kGAA4H,sB,yCAAsB,e,uDAAlJ,ogBAA4P,uEAAyC,iKAA0H,mEAA8C,mEAAqC,qIAA0U,+DAAuC,2DAAmC,wDAAyB,gCAA79F,SAAmG,8DAAiD,EAA6B,iBAAjD,EAAmB,uBAAnJ,SAA2Q,IAAmO,8GAApG,SAAoG,GAA2a,+GAApG,SAAoG,GAAk3B,iHAAzJ,SAAyJ,GAAmT,SAAqD,gEAAyK,EAA6B,iBAA/H,EAAqB,yBAAoJ,SAAQ,EAAiC,iBAAoK,UAA8J,EAAyB,mCAA34F,QAAO,uDAAoB,gHAAqK,4DAA8L,yHAA1N,SAA4B,EAA8L,EAA1N,oMAA0Y,UAAuM,EAAyB,6BAAk1B,SAAO,4DAAyB,oGAAkmB,SAA6B,2DAA7B,uM,gCAA/9E,mEAA2C,uDAAyB,gMAAg0G,oDAAqB,gCAAr1G,QAAiB,sBAA2E,yB,gCAA6xG,gL,kCAAyB,c,sBAAzB,iFAAkG,uDAAyB,0HAA0D,2K,gCAA53V,qEAAuD,mDAAqB,kFAAiB,uDAAyB,+FAA8B,2DAA6B,2FAA2B,2CAA6B,2DAA6B,2FAAyB,+DAAiC,md,0PAAqH,sB,uCAArH,ipBAAwM,+DAAiC,qIAAkhB,2DAAmC,uDAA+B,uDAAyB,gGAA8B,2DAA6B,qFAAoB,+DAAiC,4FAA2B,6CAA6B,+DAAiC,qIAA4sC,2DAAmC,2DAA6B,2FAAyB,+DAAiC,+f,0PAA0M,sB,uCAA1M,ipBAAqX,+DAAiC,kGAAgC,mEAAqC,qLAAgQ,UAAnH,c,8BAA7I,sIAAgG,cAAgK,uEAAyC,4PAAmF,0CAAwE,mEAA8C,mEAAqC,qLAAuU,UAAtJ,c,iEAAjL,sIAAgG,cAAuO,uEAAyC,yHAAwD,mEAA8C,+DAAuC,2DAAmC,uDAA+B,mDAA2B,mDAAqB,mFAAiB,uDAAyB,gGAA8B,2DAA6B,wFAAuB,6CAAyC,2DAA6B,ud,0PAAiK,sB,mCAAjK,ipBAAwQ,uDAA+B,uDAAyB,2QAA0D,oBAA6B,2DAA6B,qIAAg+B,2DAA6B,qIAAk0C,uDAA+B,mDAA2B,mDAAqB,qIAAw6G,mDAAqB,sIAAkO,gDAAiB,gCAA1nV,SAA2D,iBAA+G,EAA6B,iBAAlF,EAAmC,uBAAxJ,SAAyJ,IAAgF,UAAgC,EAAyB,kBAA6vB,UAA4B,EAAyB,kBAAixC,SAAgJ,iBAA+K,uBAAqD,oBAA1K,EAAmC,uBAA7O,SAA8O,IAA6U,0GAAhG,SAAgG,GAA4M,IAAgF,6BAAmE,cAAtJ,SAAG,WAAgF,GAA2P,sGAAhG,SAAgG,GAAitB,SAA2E,aAAuI,uBAAqD,oBAAtG,EAA+B,mBAAhM,SAAiM,IAAoI,IAAqD,aAA4B,SAAtF,SAAK,+CAAqD,GAA0D,UAAK,wBAAuC,UAAi9B,SAAK,uBAAqC,UAAu2C,SAAc,EAA4B,sBAAm5G,WAAwE,EAAyB,qDAA5lV,yEAAoH,6MAAi+B,gFAAo4C,SAAkG,+DAAlG,oMAA2d,UAA8N,EAAiC,qBAAwR,UAAqS,EAAiC,qBAAqa,4FAAsE,SAAsB,sEAAtB,uM,gCAAo6O,kUAA+D,gCAAU,cAAzE,QAA2C,EAAmB,yBAA9D,QAA2C,EAAmB,0CAAC,qC,gCAA2/C,kUAAkE,gCAAU,cAA5E,QAA8C,EAAmB,yBAAjE,QAA8C,EAAmB,0CAAC,qC,gCAAh/E,qEAAsD,mDAAqB,kFAAiB,uDAAyB,+FAA8B,2DAA6B,gGAAgC,2CAAmC,2DAA6B,yc,0PAA+H,sB,4CAA/H,shBAAsO,uDAA+B,uDAAyB,gGAA8B,2DAA6B,wFAAuB,6CAA0B,2DAA6B,oX,kGAA8F,sB,mCAA9F,ogBAA4J,+DAAiC,iKAAkF,2DAAsC,uDAA+B,mDAA2B,mDAAqB,mFAAiB,uDAAyB,gGAA8B,2DAA6B,yFAAwB,6CAA2B,2DAA6B,2FAAyB,+DAAiC,6c,0PAA+G,sB,oCAA/G,ipBAA+L,+DAAiC,iGAAgC,mEAAqC,uKAAoP,UAArE,c,0DAA/K,sIAAgG,cAAoJ,uEAAyC,yHAAwD,mEAA8C,+DAAuC,2DAAmC,uDAA+B,uDAAyB,8FAA4B,2DAA6B,2FAA0B,6CAAoC,2DAA6B,0X,kGAAoG,sB,sCAApG,ogBAAqK,+DAAiC,iKAAqF,2DAAsC,uDAA+B,uDAAyB,8FAA4B,2DAA6B,0FAAyB,6CAAmC,2DAA6B,2c,0PAA6G,sB,qCAA7G,qhBAA+I,cAAkG,uDAA+B,mDAA2B,mDAAqB,oFAAiB,uDAAyB,iGAA8B,2DAA6B,wFAAsB,+CAAiC,2DAA6B,4FAAyB,+DAAiC,sf,8PAAgM,sB,kCAAhM,qpBAA8U,+DAAiC,mGAAgC,mEAAqC,wKAA8N,UAAjF,c,8BAA7I,uIAAgG,eAA8H,uEAAyC,8PAAmF,2CAAwE,mEAA8C,mEAAqC,wKAAiQ,UAAhF,c,qEAAjL,uIAAgG,eAAiK,uEAAyC,0HAAwD,mEAA8C,+DAAuC,2DAAmC,uDAA+B,mDAA2B,gDAAiB,gCAAp+I,SAAgG,0BAAwG,EAA6B,iBAAtG,EAAwC,4BAAgQ,SAA4C,aAAkF,EAA6B,iBAA7D,EAA+B,mBAAgE,SAAQ,EAAkC,kBAA4Y,SAAwD,cAAyG,EAA6B,iBAA/E,EAAgC,oBAA/I,SAAgJ,IAAqP,oGAAhG,SAAgG,GAAyjB,SAA+C,gBAAwF,EAA6B,iBAAhE,EAAkC,sBAAgE,SAAQ,EAAqC,qBAAwR,SAAyD,eAA0J,EAA6B,iBAAnI,EAAiC,qBAAqa,UAA2I,YAAqK,EAA6B,iBAA7I,EAA8B,kBAA9N,UAA+N,IAAqT,4GAAhG,UAAgG,GAA0K,IAAgF,8BAAmE,cAAtJ,UAAG,WAAgF,GAA2P,wGAAhG,UAAgG,MAAwC,gCAAvoI,+EAAgE,6MAAgX,6EAAuD,6MAAigB,8EAAkH,6MAA63B,uFAAiE,6MAA2c,sFAA+M,iGAA/I,SAA+I,EAA/I,oMAA2b,uFAAwH,UAA6F,+DAA7F,8M,gCAAm9D,kUAAmE,gCAAU,cAA7E,QAA+C,EAAmB,yBAAlE,QAA+C,EAAmB,0CAAC,qC,gCAAtgB,qEAA0D,mDAAqB,kFAAiB,uDAAyB,+FAA8B,2DAA6B,qFAAqB,2CAA0B,2DAA6B,sX,kGAAgG,sB,uCAAhG,ogBAAkK,+DAAiC,iKAAsF,2DAAsC,uDAA+B,mDAA2B,mDAAqB,mFAAiB,uDAAyB,gGAA8B,2DAA6B,0FAAyB,6CAA8B,2DAA6B,6b,0PAAmH,sB,2CAAnH,shBAAyL,uDAA+B,uDAAyB,gGAA8B,2DAA6B,2FAA0B,6CAA+B,2DAA6B,+b,0PAAqH,sB,4CAArH,shBAA4L,uDAA+B,uDAAyB,gGAA8B,2DAA6B,yFAAwB,6CAA6B,2DAA6B,2b,0PAAiH,sB,0CAAjH,shBAAsL,uDAA+B,mDAA2B,mDAAqB,mFAAiB,uDAAyB,gGAA8B,2DAA6B,yFAAwB,6CAA6B,2DAA6B,md,0PAAiH,sB,0CAAjH,ipBAAuM,uDAA+B,uDAAyB,gGAA8B,2DAA6B,wFAAuB,6CAA4B,2DAA6B,yb,0PAA+G,sB,yCAA/G,shBAAmL,uDAA+B,mDAA2B,mDAAqB,oFAAiB,uDAAyB,iGAA8B,2DAA6B,qFAAmB,+CAAwB,2DAA6B,0c,8PAAuG,sB,qCAAvG,qpBAAwL,uDAA+B,uDAAyB,iGAA8B,2DAA6B,gGAA8B,+CAAmC,2DAA6B,ge,8PAA6H,sB,gDAA7H,qpBAAyN,uDAA+B,uDAAyB,iGAA8B,2DAA6B,+FAA6B,+CAAkC,2DAA6B,8d,8PAA2H,sB,+CAA3H,qpBAAsN,uDAA+B,mDAA2B,mDAAqB,oFAAiB,uDAAyB,iGAA8B,2DAA6B,uFAAqB,+CAA0B,2DAA6B,8c,8PAA2G,sB,uCAA3G,qpBAA8L,uDAA+B,uDAAyB,iGAA8B,2DAA6B,uFAAqB,+CAA0B,2DAA6B,sb,8PAA2G,sB,uCAA3G,yhBAA6K,uDAA+B,mDAA2B,mDAAqB,oFAAiB,uDAAyB,iGAA8B,2DAA6B,0FAAwB,+CAA6B,2DAA6B,4b,8PAAiH,sB,0CAAjH,yhBAAsL,uDAA+B,uDAAyB,iGAA8B,2DAA6B,0FAAwB,+CAA6B,2DAA6B,4b,8PAAiH,sB,0CAAjH,yhBAAsL,uDAA+B,mDAA2B,mDAAqB,oFAAiB,uDAAyB,iGAA8B,2DAA6B,0FAAwB,+CAA6B,2DAA6B,4b,8PAAiH,sB,0CAAjH,yhBAAsL,uDAA+B,uDAAyB,iGAA8B,2DAA6B,sFAAoB,+CAA6B,2DAA6B,ob,8PAAyG,sB,sCAAzG,yhBAA0K,uDAA+B,mDAA2B,mDAAqB,oFAAiB,uDAAyB,iGAA8B,2DAA6B,uFAAqB,+CAAkC,2DAA6B,sb,8PAA2G,sB,uCAA3G,yhBAA6K,uDAA+B,uDAAyB,iGAA8B,2DAA6B,4FAA0B,+CAAkC,2DAA6B,gc,8PAAqH,sB,4CAArH,yhBAA4L,uDAA+B,mDAA2B,mDAAqB,oFAAiB,uDAAyB,iGAA8B,2DAA6B,yFAAuB,+CAA4B,2DAA6B,0b,8PAA+G,sB,yCAA/G,yhBAAmL,uDAA+B,mDAA2B,gDAAiB,gCAA7wO,SAA0C,iBAA0F,EAA6B,iBAAjE,EAAmC,uBAAgE,SAAQ,EAAsC,sBAAsV,SAAyD,qBAAkG,EAA6B,iBAArE,EAAuC,2BAAwO,SAA0D,sBAAoG,EAA6B,iBAAtE,EAAwC,4BAAoO,SAAwD,oBAAgG,EAA6B,iBAApE,EAAsC,0BAAqS,SAAwD,oBAAiH,EAA6B,iBAArF,EAAsC,0BAAvJ,SAAwJ,IAAkP,SAAuD,mBAA8F,EAA6B,iBAAnE,EAAqC,yBAA2R,UAAmD,eAAuG,EAA6B,iBAAhF,EAAiC,qBAAxI,UAAyI,IAAgQ,UAA8D,0BAA6H,EAA6B,iBAA3F,EAA4C,gCAAzK,UAA0K,IAA8P,UAA6D,yBAA2H,EAA6B,iBAA1F,EAA2C,+BAAtK,UAAuK,IAA+S,UAAqD,iBAA2G,EAA6B,iBAAlF,EAAmC,uBAA9I,UAA+I,IAA8O,UAAqD,iBAA0F,EAA6B,iBAAjE,EAAmC,uBAAqS,UAAwD,oBAAgG,EAA6B,iBAApE,EAAsC,0BAAoO,UAAwD,oBAAgG,EAA6B,iBAApE,EAAsC,0BAAqS,UAAwD,oBAAgG,EAA6B,iBAApE,EAAsC,0BAAgO,UAAoD,gBAAwF,EAA6B,iBAAhE,EAAkC,sBAAuS,UAAqD,iBAA0F,EAA6B,iBAAjE,EAAmC,uBAA2O,UAA0D,sBAAoG,EAA6B,iBAAtE,EAAwC,4BAAmS,UAAuD,mBAA8F,EAA6B,iBAAnE,EAAqC,0CAA1tO,0EAAuD,6MAA4gB,iFAA2D,6MAAsU,kFAA4D,6MAAuU,gFAA0D,6MAAkY,gFAA0D,6MAAiV,+EAAyD,6MAA0X,8EAAqD,qNAAyU,yFAAgE,qNAAyW,wFAA+D,qNAA+Z,gFAAuD,qNAAsU,gFAAuD,qNAAyX,mFAA0D,qNAAiU,mFAA0D,qNAAkY,mFAA0D,qNAA6T,mFAA0D,qNAAmX,wFAA+D,qNAA0T,wFAA+D,qNAAuY,kFAAyD,wN,gCAAm3D,0FAA2D,mEAAqC,8Z,sPAA6H,sB,gDAA7H,6oBAAkM,mEAAqC,iGAAgC,uEAAyC,uKAA8O,UAAxD,c,oEAAtL,sIAAoG,cAA0I,2EAA6C,yHAAwD,uEAAkD,mEAA2C,gEAAiC,gCAAjwB,QAA6D,gEAAuG,EAA6B,iBAApE,EAAqB,gCAAlJ,QAAmJ,IAAiQ,iHAApG,SAAoG,MAAqC,cAAzb,QAAO,+DAAP,gM,gCAAwyB,0FAA6D,mEAAqC,0c,sPAAyI,sB,gDAAzI,6oBAAuY,mEAAqC,kGAAgC,uEAAyC,qLAA0R,UAAzI,c,0DAAjJ,sIAAoG,cAAsL,2EAA6C,4PAAuF,0CAAkE,2EAAiD,uEAAkD,uEAAyC,qLAAqX,UAA/L,c,mIAAtL,sIAAoG,cAAiR,2EAA6C,yHAAwD,uEAAkD,mEAA2C,gEAAiC,gCAAzrD,QAAiH,gEAA+M,+CAAsE,kCAA7P,EAAqB,gCAA9J,QAA2O,IAA8W,wHAApG,SAAoG,GAAsO,IAAoF,mDAAiE,oCAAxJ,SAAG,WAAoF,GAAkT,iHAApG,SAAoG,MAAqC,gCAA1uC,QAAO,+DAAqB,qFAA5B,6LAAqf,UAAyO,0BAAgD,mCAAmV,UAAoU,0BAAgD,sC,iCAAuU,sY,wJAA4G,sB,gDAA5G,6qBAAmS,gCAAnS,QAAiO,OAAiB,SAAlP,QAA4B,gEAAyO,EAA6B,iBAAtL,EAAqB,iDAAjI,QAAO,+DAAP,gM,iCAA2W,wJAAsL,UAA1H,c,qDAA5D,qIAAyH,aAA6D,mEAAqC,2HAA2D,gEAAiC,cAA9L,4GAAzH,QAAyH,KAAkC,M,iCAAsM,mPAAsG,aAAiE,mEAAqC,mHAAmD,gEAAiC,cAA1L,gHAAtG,QAAsG,KAAsC,M,iCAA7tJ,8eAAiG,uDAAyB,+FAA8B,2DAA6B,qFAAoB,+DAAiC,kFAA4B,6CAAyB,+DAAiC,sSAA+I,cAAsC,mEAAqC,2HAA0D,+DAAqC,2DAAmC,2DAA6B,+Z,0PAA8D,sB,wCAA9D,ipBAAuL,uDAA+B,uDAAyB,gGAA8B,2DAA6B,kFAA6B,6CAA0B,2DAA6B,yGAAuC,+DAAiC,qIAAu2B,+DAAiC,qIAAiyD,+DAAiC,wFAAuB,mEAAqC,sIAAmS,+DAAuC,+DAAiC,sIAAgU,+DAAiC,sIAAyS,2DAAmC,uDAA+B,mDAAqB,+DAAlgJ,sGAA/I,SAA+I,GAA0O,SAAuC,wDAAkH,EAA6B,iBAAxH,EAAoB,wBAAlF,SAAwI,IAA8T,SAAyB,6BAAiC,gBAA80B,SAAyB,6BAAmC,kBAAk0D,SAAkI,6BAAoC,mBAAqM,UAA4J,EAAyB,kBAA4K,UAA6I,EAAyB,mCAAvvJ,2CAA0O,SAAO,wDAAqB,mFAAmb,SAAO,uDAAP,oMAA0S,SAAO,yDAAsB,uF,iCAAnmC,gOAA8E,UAA7D,2B,qBAAjB,4VAA8E,mDAAqB,iMAAu9J,gDAAiB,gCAAx+J,QAAyB,kBAAuE,kCAAnM,wG,iCAAkmK,gL,kCAAyB,c,wBAAzB,iFAAoG,mDAAqB,0HAA0D,wK,iCAAqY,kUAAkE,gCAAU,cAA5E,QAA8C,EAAmB,yBAAjE,QAA8C,EAAmB,0CAAC,qC,iCAArY,kFAA2C,mDAAqB,oFAAmB,uDAAyB,8GAA0C,2CAAyB,uDAAyB,wX,gGAAmE,sB,8BAAnE,ueAA8F,2DAA6B,kKAAqF,uDAAkC,mDAA2B,gDAAiB,gCAA9R,SAA+C,eAAoB,EAA0B,cAA8B,SAAQ,EAAqC,sCAA1N,yEAAkD,+M,iCAA83B,kUAA+D,gCAAU,cAAzE,QAA2C,EAAmB,yBAA9D,QAA2C,EAAmB,0CAAC,qC,iCAAxoB,oEAAiD,mDAAqB,iFAAiB,2CAA2B,mDAAqB,kFAAiB,uDAAyB,oFAAmB,2DAA6B,6FAA4B,6CAAoC,2DAA6B,6X,kGAAuG,sB,uCAAoC,e,mCAA3I,ogBAA0O,+DAAiC,kKAAkF,2DAAsC,uDAA+B,mDAA2B,gDAAiB,gCAA9c,SAAiD,iBAA2J,EAA6B,iBAAlI,EAAmC,uBAAiI,SAAQ,EAAkC,mCAA5hB,8EAAsK,uFAAiE,gN,iCAA8oB,kEAAiD,iN,iCAA0L,yFAAqE,2DAA6B,8V,kGAAgD,sB,2CAAhD,qgBAA6L,2DAA6B,6GAAuD,gCAAkB,wDAAyB,gCAA5T,QAA8H,kEAAiC,EAA6B,iBAA5I,EAAuB,4CAAvE,QAAwG,yDAAxG,6LAA0N,QAAgC,0DAAuB,sC,iCAApc,mEAAwD,uDAAyB,iKAAoa,oDAAqB,cAAzb,QAAyb,YAArX,qB,iCAA/c,oEAAwE,mDAAqB,iFAAiB,2CAA6B,mDAAqB,qIAAqI,mDAAqB,sIAAyhB,gDAAiB,gCAApsB,SAAK,kBAA2C,oBAA0G,SAAc,iBAAyC,qCAAnQ,mF,iCAAimC,kEAA8B,2DAA6B,gGAAgC,4CAAqC,mGAA4G,sCAAjJ,2FAAqC,0H,iCAA2I,mEAAgC,2DAA6B,gGAAgC,4CAAiC,2DAA6B,2J,kCAAyB,c,2BAAzB,gFAAiD,aAA0B,+FAAmG,uDAAyB,sCAArQ,uFAA+G,mGAAjD,QAAiD,GAA0B,4C,iCAAyO,kEAA+C,iHAAsG,kGAAkC,+BAAsB,2DAA6B,oBAA3L,yHAAwI,yC,iCAArQ,kFAAiD,2DAA6B,iKAAgP,wDAAyB,cAAzQ,QAAyQ,YAA3N,gC,iCAAnlC,oEAA+B,mDAAqB,oGAAmC,uDAAyB,kEAAK,2DAA6B,gGAAgC,4CAA6B,oGAAmG,uDAAyB,sIAAkP,uDAAyB,sIAAwW,uDAAyB,sIAA6V,mDAA2B,gDAAiB,gCAArhC,SAAK,EAAwB,kBAA8O,SAAK,EAA0B,oBAAkW,SAAkB,EAA8B,2DAAr1B,4EAA6B,qG,iCAAv2hC,yFAAuC,+CAAiB,oIAAmgB,+CAAiB,kFAAiB,mDAAqB,+FAA8B,uDAAyB,kFAAkB,6CAAyB,uDAAyB,yc,0PAA8D,sB,6BAA9D,gsBAA2J,mDAA2B,mDAAqB,qIAAuc,+CAAuB,+CAA+B,+CAAiB,qIAAy8V,+CAA8B,+CAAiB,qIAAmwJ,+CAAkC,+CAAiB,qIAA4hP,+CAAiB,0FAAwB,mDAAqB,oFAAmB,6CAA0B,mDAAqB,0a,0PAA2C,sB,8BAA3C,shBAA4J,+CAAuB,+CAAiB,kFAAiB,6CAA8B,+CAAiB,sIAAilK,+CAAiB,sIAAoO,+CAAiB,sIAA4e,+CAAiB,sIAA2xB,+CAAiB,sIAAm3B,+CAAiB,sIAA+2C,4CAAa,gCAA59jC,SAAiB,EAAiB,UAAmpB,SAAoH,IAApH,SAAkD,OAA2E,EAA6B,iBAA5F,EAAyB,aAAoH,UAA8B,EAAqB,cAA2d,SAAc,kBAAwC,kBAAk8V,SAAc,kBAAuC,iBAAiwJ,SAAc,kBAA2C,qBAAmmP,SAAqB,QAAiD,EAA6B,iBAAxD,EAA0B,cAA+L,SAAqD,EAAwB,kBAAqhK,UAA0E,EAAyB,kBAAkJ,UAAiB,EAAyB,kBAAmd,SAAc,EAAkC,4BAA4vB,WAAc,4BAAyD,uBAA6zB,SAAc,EAAgB,2BAA3//B,qEAAkD,2OAAonwB,sEAA+C,6MAAqN,gF,iCAAmgT,uIAAiN,UAAhJ,c,8BAAjE,qIAAyI,aAAwE,uDAAyB,0PAAoB,uCAA2H,oDAAqB,gCAArQ,2HAAzI,QAAyI,GAAoG,IAAiB,+BAAuE,iBAA3F,QAAG,WAAiB,KAAuE,M,iCAAuG,4KAAsU,UAArS,c,sBAAjC,qIAA2G,YAA3G,wHAAsU,uDAAyB,wIAAyF,uDAAyB,6JAAuG,aAAoD,oDAAqB,gCAAthB,iIAA3G,QAA2G,GAA3G,QAAuS,EAA8B,gCAArU,QAAgP,YAA8B,SAAiF,QAAqC,YAA4B,SAA8F,mBAA6B,QAA6B,2FAAvG,QAA6C,EAA0D,M,iCAA7hC,qFAAoC,mDAAqB,qIAAuZ,mDAAqB,qIAA0oB,gDAAiB,gCAAvkC,SAAQ,mBAA0C,kBAA0X,QAAiN,eAA8B,mB,yGAFl1nC,4LAEiD,mCAAK,wHAAmD,uCAAS,6X,kFAAkC,iB,sBAAlC,uWAAqI,2CAAa,4FAA0B,+CAAiB,qHAAgD,gCAAc,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,sIAA0hkC,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAA0D,+CAA0B,+CAAiB,sJAA6E,qFAAkE,+CAAiB,sIAAsoC,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAAxsoC,SAAwD,EAA4B,aAAiP,iFAAzD,SAAyD,GAAwJ,SAAwB,EAAc,QAAyglC,SAAqB,EAAc,2CAA/imC,qMAA6O,kBAAk0kC,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,2GAAkL,mE,0vCCAtrlC,oEAAsB,uF,gCAAokB,2HAA8E,W,gCAAqC,oIAA0H,W,gCAAuQ,mFAAmD,uEAAyC,wLAA4J,2EAA6C,oJAAmG,aAA8D,2EAA6C,sFAAsB,2CAAyC,uEAAyC,qMAA+Q,UAAxJ,c,kDAAvH,gJAA+Q,6CAAyB,oEAAqC,cAA7U,SAA6U,YAAnL,mBAAuC,+CAApZ,gHAAnG,QAAmG,GAAiI,6FAAkF,SAA8O,aAAgC,SAAC,qF,gCAAj+C,kEAAyC,2DAA6B,4FAA4B,+DAAiC,oIAAkF,+DAAiC,oIAA8H,2DAAkC,2DAA6B,mEAAI,+DAAiC,qFAAoB,mEAAqC,iJ,mCAAyB,c,2CAAzB,kFAA+C,gCAAkB,mEAAqC,qIAA86B,+DAAuC,+DAAiC,qEAAO,gCAAsB,2DAAkC,2DAA6B,iGAA+B,+DAAiC,0N,mCAAyI,c,yCAAzI,sIAAsG,aAAtG,mLAAiR,mEAAqC,yIAAiI,mEAAqC,8JAAmH,cAAoD,+DAA0C,2DAAkC,wDAAyB,gCAA92E,SAAoC,EAAsB,+BAAyD,QAA6C,EAAqB,+BAA+T,SAAK,0BAAgC,oBAAmtC,gGAAtG,SAAsG,GAAtG,SAA4M,mBAAqC,wCAA17C,uCAAojC,uCAAqJ,SAAkP,aAA8B,SAAsC,SAAqC,aAA4B,SAAkJ,oBAA6B,QAAyC,6FAAnH,SAA6C,EAAsE,M,gCAAj+E,4GAAoF,mDAAqB,oEAAO,uDAAyB,gKAAs/E,mDAA6B,gDAAiB,cAApiF,QAAoiF,YAA5/E,4B,qEAFp3B,0LAE+C,mCAAK,+GAA0C,uCAAS,sW,kFAAkC,iB,sBAAlC,sWAAsG,2CAAa,4FAA0B,+CAAiB,mHAA8C,yFAAkE,qIAA6C,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,0FAAwB,+CAAiB,qIAAqrF,+CAAiB,kEAAI,6CAA+B,+CAAiB,uGAAkC,6CAAyB,+CAAiB,gKAA4E,+CAAiB,qGAAoC,6CAAgC,2CAAmB,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAwB,+CAA0B,+CAAiB,sJAA6E,6CAA+C,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAA3lI,QAAwD,EAA4B,aAA0L,SAAO,EAAc,QAAwH,iFAAzD,SAAyD,GAAiM,SAA4C,YAAuC,wCAA/qB,qMAA4M,qEAA0lG,uEAAkF,8DAA2K,qEAA2G,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,8DAAgJ,kE,m6BCF7lI,6LAEkD,mCAAK,wHAAmD,uCAAS,gW,kFAAkC,iB,sBAAlC,8aAAqF,2CAAa,4FAA0B,+CAAiB,sHAAiD,qFAAkH,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,yFAAwB,6EAA+I,2CAAa,4FAA0B,+CAAiB,+JAA+F,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAA8D,+CAA0B,+CAAiB,sJAAiG,6CAA4B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,cAAjvC,SAAivC,YAA7pC,aAAsS,iFAAzD,SAAyD,MAAiC,gCAA3Z,qMAA8L,gHAA4W,qJAAuM,SAAqE,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,gGAA0M,mE,owBCAhX,kUAAmD,gCAAU,cAA7D,QAAkC,EAAgB,sBAAlD,QAAkC,EAAgB,uCAAC,qC,qEAFr9B,2LAEgD,mCAAK,wHAAmD,uCAAS,gW,kFAAkC,iB,sBAAlC,8aAAqF,2CAAa,4FAA0B,+CAAiB,oHAA+C,qFAAoE,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,0FAAwB,+CAAiB,iEAAG,6CAAwD,+CAAiB,0FAAwB,mDAAqB,qFAAoB,6CAA2B,mDAAqB,+W,kGAAoC,sB,0BAApC,weAAgF,uDAAyB,iKAAsE,mDAA8B,+CAAuB,2CAAmB,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAwB,+CAA0B,+CAAiB,sJAAiG,6CAA4B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAAr8C,SAAwD,EAA4B,aAAsP,iFAAzD,SAAyD,GAA8X,SAAoB,WAAgB,EAAsB,UAA+C,SAAQ,EAAyB,4CAAl1B,qMAA4L,sEAAkV,kGAA0I,gEAAgD,6MAA+S,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,8DAAoK,mE,sxBCFp+C,8LAEmD,mCAAK,wHAAmD,uCAAS,gW,kFAAkC,iB,sBAAlC,8aAAqF,2CAAa,4FAA0B,+CAAiB,uHAAkD,qFAAuE,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,yFAAwB,6EAA2F,2CAAa,4FAA0B,+CAAiB,gKAAgG,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAA2B,+CAA0B,+CAAiB,sJAAiG,6CAA4B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,cAAjnC,SAAinC,YAA7hC,aAA4P,iFAAzD,SAAyD,MAAiC,gCAAjX,qMAA+L,yEAAiU,qGAAmJ,SAAsE,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,iEAAuK,mE,wwBCAxC,kUAAyD,gCAAU,cAAnE,QAAwC,EAAgB,sBAAxD,QAAwC,EAAgB,uCAAC,qC,gCAAwL,4FAAsE,uDAAyB,mJAAiF,UAA3D,c,2BAAtB,wBAAiF,mGAAqF,uDAAyB,mJAAkF,UAA5D,c,2BAAtB,wBAAkF,mGAAuF,mDAAqB,oBAA5S,uEAAgM,4E,gCAA0J,kEAAiD,2L,gCAA6O,0FAAoE,UAAnB,c,wCAAjD,wBAAoE,2DAA6B,gGAAgC,+DAAiC,wV,mJAAuB,sB,2CAAvB,kiBAAgI,2DAAkC,2DAA6B,kEAAI,gGAA6E,wDAAyB,cAAzS,QAA+C,kEAAxB,EAAuB,4CAA9C,qMAAmM,sC,gCAArf,iHAA2F,mDAAqB,oEAAO,uDAAyB,gKAAgd,mDAA6B,gDAAiB,cAA9f,QAA8f,YAA9c,qB,qEAFprE,4LAEiD,mCAAK,+GAA0C,uCAAS,gW,kFAAkC,iB,sBAAlC,8aAAqF,2CAAa,4FAA0B,+CAAiB,qHAAgD,qFAAqE,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,0FAAwB,+CAAiB,iEAAG,6CAA8B,+CAAiB,iEAAG,+DAAgI,+CAAiB,0FAAwB,mDAAqB,2FAA0B,6CAAiC,mDAAqB,2X,kGAAgD,sB,gCAA0E,e,iCAA1H,weAAyJ,uDAAyB,iKAA4E,mDAA8B,+CAAuB,+CAAiB,qFAAoB,mDAAqB,kEAAI,6CAA6B,mDAAqB,qIAAke,+CAAuB,+CAAiB,qIAA6H,+CAAiB,qIAAspB,2CAAmB,2CAAa,4FAA0B,+CAAiB,oSAA0H,wBAAmC,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAwB,+CAA0B,+CAAiB,sJAAiG,6CAA4B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAApoG,SAAwD,EAA4B,aAAwP,iFAAzD,SAAyD,GAAogB,SAA0B,iBAAsB,EAA4B,gBAAsG,SAAQ,EAA+B,eAA0M,SAA4B,iBAAyC,oBAAqc,UAAK,kBAA2C,oBAA8F,SAAiD,iBAAyC,oBAA6pB,IAAoG,uBAAkC,SAA5J,SAAsB,oCAAoG,MAAkC,gCAAxwF,qMAA6L,uEAAmV,uEAAkD,oJAAwN,sEAAsD,6MAAiX,qEAA26C,SAAgE,wBAAqC,SAA8G,mFAAjC,SAAiC,GAA+E,8DAAoK,mE,wzBCAvzF,oEAAsB,uF,gCAA2c,4FAAsE,uDAAyB,mJAAiF,UAA3D,c,2BAAtB,wBAAiF,mGAAqF,uDAAyB,mJAAkF,UAA5D,c,2BAAtB,wBAAkF,mGAAuF,mDAAqB,oBAA5S,uEAAgM,4E,gCAA0J,kEAAiD,2L,gCAA6O,0FAAoE,UAAnB,c,wCAAjD,wBAAoE,2DAA6B,gGAAgC,+DAAiC,wV,mJAAuB,sB,2CAAvB,kiBAAgI,2DAAkC,2DAA6B,kEAAI,gGAA6E,wDAAyB,cAAzS,QAA+C,kEAAxB,EAAuB,4CAA9C,qMAAmM,sC,gCAArf,iHAA2F,mDAAqB,oEAAO,uDAAyB,gKAAgd,mDAA6B,gDAAiB,cAA9f,QAA8f,YAA9c,qB,qEAF7pD,0LAE+C,mCAAK,+GAA0C,uCAAS,gW,kFAAkC,iB,sBAAlC,8aAAqF,2CAAa,4FAA0B,+CAAiB,mHAA8C,yFAAkE,qIAA6C,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,0FAAwB,+CAAiB,iEAAG,6CAAgC,+CAAiB,qFAAoB,mDAAqB,kEAAI,6CAA6B,mDAAqB,qIAAke,+CAAuB,+CAAiB,qIAA6H,+CAAiB,qIAAspB,2CAAmB,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAwB,+CAA0B,+CAAiB,sJAAiG,6CAA4B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAAriF,SAAwD,EAA4B,aAAyK,SAAO,EAAc,QAAwH,iFAAzD,SAAyD,GAAoV,SAA4B,iBAAyC,oBAAqc,UAAK,kBAA2C,oBAA8F,SAAiD,iBAAyC,qCAAh9C,qMAA2L,qEAAmZ,yEAA8F,qEAA26C,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,8DAAoK,mE,o4BCF1jF,qLAE0C,mCAAK,+GAA0C,uCAAS,sW,kFAAkC,iB,sBAAlC,sWAAsG,2CAAa,4FAA0B,+CAAiB,8GAAyC,6CAAqC,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,0FAAwB,+CAAiB,iEAAG,6CAAwC,+CAAiB,8NAA4B,0CAAqD,+CAAiB,6FAA4B,6CAA+B,+CAAiB,ihB,0PAA8G,sB,gCAA9G,+xBAAkL,2CAAmB,2CAAa,4FAA0B,+CAAiB,2IAAkF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAuC,+CAA0B,+CAAiB,sJAA6E,6CAA2B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAAr6C,QAAwD,EAA4B,aAAkO,iFAAzD,SAAyD,GAA6P,SAAa,WAAiK,SAA2I,IAA3I,SAA2C,qBAAmE,EAA4B,gBAA1I,SAAiK,OAAgB,cAAl5B,qMAAuM,6EAAmT,iFAAqF,oFAAkG,oEAAgD,2OAA6P,SAAwD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,6EAA+J,kE,s2BCFt7C,4LAEiD,mCAAK,+GAA0C,uCAAS,sW,kFAAkC,iB,sBAAlC,sWAAsG,2CAAa,4FAA0B,+CAAiB,qHAAgD,6CAA+B,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,0FAAwB,+CAAiB,iEAAG,6CAAkC,+CAAiB,8NAA4B,0CAA+C,+CAAiB,6FAA4B,6CAA+B,+CAAiB,ihB,0PAA8G,sB,gCAA9G,k4BAAkL,2CAAmB,2CAAa,4FAA0B,+CAAiB,2IAAkF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAiC,+CAA0B,+CAAiB,sJAA6E,6CAA2B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAAp5C,QAAwD,EAA4B,aAAmO,iFAAzD,SAAyD,GAAuP,SAAa,WAA2J,SAA2I,IAA3I,SAA2C,qBAAmE,EAA4B,gBAA1I,SAAoJ,IAApJ,SAAiK,OAAgB,cAAv4B,qMAA8M,uEAA6S,2EAA+E,8EAA4F,oEAAgD,2OAA6P,SAAwD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,uEAAyJ,kE,qzBCF56C,iMAEsD,mCAAK,+GAA0C,uCAAS,sW,kFAAkC,iB,sBAAlC,sWAAsG,2CAAa,4FAA0B,+CAAiB,0HAAqD,6CAAoC,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,0FAAwB,+CAAiB,iEAAG,6CAAuC,+CAAiB,8NAA4B,0CAAoD,+CAAiB,6FAA4B,6CAA+B,+CAAiB,ihB,0PAA8G,sB,gCAA9G,k4BAAkL,2CAAmB,2CAAa,4FAA0B,+CAAiB,2IAAkF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAsC,+CAA0B,+CAAiB,sJAA6E,6CAA2B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAA76C,QAAwD,EAA4B,aAA6O,iFAAzD,SAAyD,GAA4P,SAAa,WAAgK,SAA2I,IAA3I,SAA2C,qBAAmE,EAA4B,gBAA1I,SAAoJ,IAApJ,SAAiK,OAAgB,cAA35B,qMAAmN,4EAAkT,gFAAoF,mFAAiG,oEAAgD,2OAA6P,SAAwD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,4EAA8J,kE,8vBCAtL,4KAAqP,UAApN,c,sBAAjC,qIAA2G,YAA3G,wHAAqP,uDAAyB,wIAAyF,uDAAyB,6JAAuG,aAAoD,oDAAqB,gCAArc,mFAA3G,QAA2G,GAA3G,QAAsN,EAA8B,gCAApP,QAA+J,YAA8B,SAAiF,QAAqC,YAA4B,SAA8F,mBAA6B,QAA6B,oFAAvG,QAA6C,EAA0D,M,qEAF3vD,4LAEiD,mCAAK,wHAAmD,uCAAS,sW,kFAAkC,iB,sBAAlC,sWAAsG,2CAAa,4FAA0B,+CAAiB,qHAAgD,gCAAc,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,0FAAwB,+CAAiB,mFAAkB,6CAAyB,+CAAiB,yc,0PAA8D,sB,6BAA9D,oqBAAiG,2CAAmB,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAwB,+CAA0B,+CAAiB,sJAAiG,6CAA4B,+CAAiB,sFAAqB,mDAAqB,qIAAyjB,+CAAuB,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAAxyD,QAAwD,EAA4B,aAAkN,iFAAzD,SAAyD,GAA6P,SAAwF,IAAxF,SAAkD,OAAY,EAAyB,aAAwiB,SAA8I,EAAgB,6CAAh0C,qMAA8M,kBAA2S,8DAA0C,2OAA4K,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,8DAAoK,mE,+0BCF7rC,+DAAwB,W,2zBXEi9B,kUAA0D,gCAAU,cAApE,QAAsC,EAAmB,yBAAzD,QAAsC,EAAmB,0CAAC,qC,gCAA5Z,kFAAmC,mDAAqB,+FAA8B,uDAAyB,kFAAkB,2CAAmC,uDAAyB,wW,gGAA8B,sB,6BAA9B,mgBAAwI,2DAA6B,iKAA6E,uDAAkC,mDAA2B,gDAAiB,gCAAhU,SAAkB,OAAwF,EAA6B,iBAAzG,EAAyB,aAA8G,SAAQ,EAA6B,8BAAtQ,mFAA4D,+M,gCAAugC,kUAAmD,gCAAU,cAA7D,QAAkC,EAAgB,sBAAlD,QAAkC,EAAgB,uCAAC,qC,gCAAvX,+FAAoD,uDAAyB,oFAAoB,2CAA2B,uDAAyB,8W,gGAAoC,sB,iCAApC,kgBAAkJ,2DAA6B,iKAAsE,uDAAkC,oDAAqB,gCAA5S,QAAoB,WAAgG,EAA6B,iBAA7G,EAA6B,iBAA8G,SAAQ,EAAyB,0BAApQ,2EAAoD,+M,gCAAk6B,gGAA0D,mEAAqC,sKAA6P,UAA5E,c,iEAAjL,qIAAgG,aAA6J,uEAAyC,wHAAwD,mEAA8C,gEAAiC,cAA7U,2GAAhG,QAAgG,KAAwC,M,gCAA0qB,yK,kCAAmI,c,gCAAnI,qIAAsF,YAAtF,0DAAoO,uEAAyC,4HAA4D,oEAAqC,cAAxR,sHAAtF,QAAsF,KAA4C,M,gCAA7N,6FAAsD,mEAAqC,oIAAkX,mEAAqC,yL,kCAA6I,c,6BAA7I,qIAAmG,YAAnG,iLAAqP,uEAAyC,8IAAiJ,uEAAyC,8JAAiJ,cAAiC,mEAAyC,gEAAiC,gCAA3mC,QAAwM,EAA2B,qBAAuR,4GAAnG,QAAmG,GAAnG,QAA+M,EAAqC,uCAA0C,SAA0C,YAAmC,SAAyN,mBAAoC,QAAC,oGAAjJ,SAA4G,EAAqC,M,gCAAirF,qL,kCAA0D,c,+BAA1D,iFAA+L,oO,gCAA+H,qL,kCAA8F,c,mCAA9F,iFAAkT,oO,gCAA/1B,mEAA6C,+DAAiC,gIAAqC,aAA2F,+DAAiC,oIAA6R,+DAAiC,oIAAgZ,4DAA6B,gCAA3uB,SAA0H,6CAAoE,kBAAgI,QAAkK,2GAA+I,6CAA3uB,mHAArC,QAAqC,M,gCAA04B,wGAA6E,+DAAiC,wGAAuC,mEAAqC,uFAAuB,+BAAkB,mEAAqC,wEAAK,uEAAyC,qEAAG,2EAA6C,yPAA2G,uCAAwD,2EAA6C,2IAAkE,uEAA6C,mEAA2C,+DAAwC,+DAAiC,wGAAiE,cAA0C,gCAA4B,+DAAiC,wIAA6N,UAAzD,c,4DAApK,sIAA+E,cAA8I,mEAAqC,mHAAkD,+DAA0C,4DAA6B,kBAA32B,WAA22B,YAA7zB,UAAzJ,SAA2G,GAA+jB,qHAA/E,SAA+E,MAAgD,gCAA/2B,mBAAyoB,qHAAjE,SAAiE,GAA0C,iC,gCAAixG,kUAA8D,0EAAmD,cAAjH,QAA0C,EAAmB,yBAA7D,QAA0C,EAAmB,0CAAC,qC,gCAA+I,wJAAwL,UAA5H,c,mDAA5D,qIAA2H,aAA6D,uEAAyC,2HAA2D,oEAAqC,cAAtM,mHAA3H,QAA2H,KAAkC,M,gCAA1iG,kFAA6F,2DAA6B,+FAA8B,+DAAiC,iFAA2B,2CAA0C,+DAAiC,0FAAyB,mEAAqC,mb,0PAAgI,sB,uCAAhI,gpBAA0N,cAAkE,mEAAqC,kGAAgC,uEAAyC,qLAA+O,UAAxG,c,yCAAvI,sIAAoG,cAA2I,2EAA6C,qHAAoD,uEAAkD,uEAAyC,uKAAsO,UAA9F,c,uDAAxI,sIAAoG,cAAkI,2EAA6C,yHAAwD,uEAAkD,mEAA2C,+DAAuC,2DAAmC,2DAA6B,gGAA8B,+DAAiC,sFAAoB,mEAAqC,kFAAgC,6HAAiH,mEAAqC,4SAAyJ,cAAsC,uEAAyC,2HAA0D,mEAAyC,+DAAuC,+DAAiC,sFAAoB,mEAAqC,sV,kGAA4H,sB,yCAAsB,e,uDAAlJ,ogBAA4P,uEAAyC,iKAA0H,mEAA8C,mEAAqC,qIAA0U,+DAAuC,2DAAmC,wDAAyB,gCAA79F,SAAmG,8DAAiD,EAA6B,iBAAjD,EAAmB,uBAAnJ,SAA2Q,IAAmO,8GAApG,SAAoG,GAA2a,+GAApG,SAAoG,GAAk3B,iHAAzJ,SAAyJ,GAAmT,SAAqD,gEAAyK,EAA6B,iBAA/H,EAAqB,yBAAoJ,SAAQ,EAAiC,iBAAoK,UAA8J,EAAyB,mCAA34F,QAAO,uDAAoB,gHAAqK,4DAA8L,yHAA1N,SAA4B,EAA8L,EAA1N,oMAA0Y,UAAuM,EAAyB,6BAAk1B,SAAO,4DAAyB,oGAAkmB,SAA6B,2DAA7B,uM,gCAA/9E,mEAA2C,uDAAyB,gMAAg0G,oDAAqB,gCAAr1G,QAAiB,sBAA2E,yB,gCAA6xG,gL,kCAAyB,c,sBAAzB,iFAAkG,uDAAyB,0HAA0D,2K,gCAA53V,qEAAuD,mDAAqB,kFAAiB,uDAAyB,+FAA8B,2DAA6B,2FAA2B,2CAA6B,2DAA6B,2FAAyB,+DAAiC,md,0PAAqH,sB,uCAArH,ipBAAwM,+DAAiC,qIAAkhB,2DAAmC,uDAA+B,uDAAyB,gGAA8B,2DAA6B,qFAAoB,+DAAiC,4FAA2B,6CAA6B,+DAAiC,qIAA4sC,2DAAmC,2DAA6B,2FAAyB,+DAAiC,+f,0PAA0M,sB,uCAA1M,ipBAAqX,+DAAiC,kGAAgC,mEAAqC,qLAAgQ,UAAnH,c,8BAA7I,sIAAgG,cAAgK,uEAAyC,4PAAmF,0CAAwE,mEAA8C,mEAAqC,qLAAuU,UAAtJ,c,iEAAjL,sIAAgG,cAAuO,uEAAyC,yHAAwD,mEAA8C,+DAAuC,2DAAmC,uDAA+B,mDAA2B,mDAAqB,mFAAiB,uDAAyB,gGAA8B,2DAA6B,wFAAuB,6CAAyC,2DAA6B,ud,0PAAiK,sB,mCAAjK,ipBAAwQ,uDAA+B,uDAAyB,2QAA0D,oBAA6B,2DAA6B,qIAAg+B,2DAA6B,qIAAk0C,uDAA+B,mDAA2B,mDAAqB,qIAAw6G,mDAAqB,sIAAkO,gDAAiB,gCAA1nV,SAA2D,iBAA+G,EAA6B,iBAAlF,EAAmC,uBAAxJ,SAAyJ,IAAgF,UAAgC,EAAyB,kBAA6vB,UAA4B,EAAyB,kBAAixC,SAAgJ,iBAA+K,uBAAqD,oBAA1K,EAAmC,uBAA7O,SAA8O,IAA6U,0GAAhG,SAAgG,GAA4M,IAAgF,6BAAmE,cAAtJ,SAAG,WAAgF,GAA2P,sGAAhG,SAAgG,GAAitB,SAA2E,aAAuI,uBAAqD,oBAAtG,EAA+B,mBAAhM,SAAiM,IAAoI,IAAqD,aAA4B,SAAtF,SAAK,+CAAqD,GAA0D,UAAK,wBAAuC,UAAi9B,SAAK,uBAAqC,UAAu2C,SAAc,EAA4B,sBAAm5G,WAAwE,EAAyB,qDAA5lV,yEAAoH,6MAAi+B,gFAAo4C,SAAkG,+DAAlG,oMAA2d,UAA8N,EAAiC,qBAAwR,UAAqS,EAAiC,qBAAqa,4FAAsE,SAAsB,sEAAtB,uM,gCAAo6O,kUAA+D,gCAAU,cAAzE,QAA2C,EAAmB,yBAA9D,QAA2C,EAAmB,0CAAC,qC,gCAA2/C,kUAAkE,gCAAU,cAA5E,QAA8C,EAAmB,yBAAjE,QAA8C,EAAmB,0CAAC,qC,gCAAh/E,qEAAsD,mDAAqB,kFAAiB,uDAAyB,+FAA8B,2DAA6B,gGAAgC,2CAAmC,2DAA6B,yc,0PAA+H,sB,4CAA/H,shBAAsO,uDAA+B,uDAAyB,gGAA8B,2DAA6B,wFAAuB,6CAA0B,2DAA6B,oX,kGAA8F,sB,mCAA9F,ogBAA4J,+DAAiC,iKAAkF,2DAAsC,uDAA+B,mDAA2B,mDAAqB,mFAAiB,uDAAyB,gGAA8B,2DAA6B,yFAAwB,6CAA2B,2DAA6B,2FAAyB,+DAAiC,6c,0PAA+G,sB,oCAA/G,ipBAA+L,+DAAiC,iGAAgC,mEAAqC,uKAAoP,UAArE,c,0DAA/K,sIAAgG,cAAoJ,uEAAyC,yHAAwD,mEAA8C,+DAAuC,2DAAmC,uDAA+B,uDAAyB,8FAA4B,2DAA6B,2FAA0B,6CAAoC,2DAA6B,0X,kGAAoG,sB,sCAApG,ogBAAqK,+DAAiC,iKAAqF,2DAAsC,uDAA+B,uDAAyB,8FAA4B,2DAA6B,0FAAyB,6CAAmC,2DAA6B,2c,0PAA6G,sB,qCAA7G,qhBAA+I,cAAkG,uDAA+B,mDAA2B,mDAAqB,oFAAiB,uDAAyB,iGAA8B,2DAA6B,wFAAsB,+CAAiC,2DAA6B,4FAAyB,+DAAiC,sf,8PAAgM,sB,kCAAhM,qpBAA8U,+DAAiC,mGAAgC,mEAAqC,wKAA8N,UAAjF,c,8BAA7I,uIAAgG,eAA8H,uEAAyC,8PAAmF,2CAAwE,mEAA8C,mEAAqC,wKAAiQ,UAAhF,c,qEAAjL,uIAAgG,eAAiK,uEAAyC,0HAAwD,mEAA8C,+DAAuC,2DAAmC,uDAA+B,mDAA2B,gDAAiB,gCAAp+I,SAAgG,0BAAwG,EAA6B,iBAAtG,EAAwC,4BAAgQ,SAA4C,aAAkF,EAA6B,iBAA7D,EAA+B,mBAAgE,SAAQ,EAAkC,kBAA4Y,SAAwD,cAAyG,EAA6B,iBAA/E,EAAgC,oBAA/I,SAAgJ,IAAqP,oGAAhG,SAAgG,GAAyjB,SAA+C,gBAAwF,EAA6B,iBAAhE,EAAkC,sBAAgE,SAAQ,EAAqC,qBAAwR,SAAyD,eAA0J,EAA6B,iBAAnI,EAAiC,qBAAqa,UAA2I,YAAqK,EAA6B,iBAA7I,EAA8B,kBAA9N,UAA+N,IAAqT,4GAAhG,UAAgG,GAA0K,IAAgF,8BAAmE,cAAtJ,UAAG,WAAgF,GAA2P,wGAAhG,UAAgG,MAAwC,gCAAvoI,+EAAgE,6MAAgX,6EAAuD,6MAAigB,8EAAkH,6MAA63B,uFAAiE,6MAA2c,sFAA+M,iGAA/I,SAA+I,EAA/I,oMAA2b,uFAAwH,UAA6F,+DAA7F,8M,gCAAm9D,kUAAmE,gCAAU,cAA7E,QAA+C,EAAmB,yBAAlE,QAA+C,EAAmB,0CAAC,qC,gCAAtgB,qEAA0D,mDAAqB,kFAAiB,uDAAyB,+FAA8B,2DAA6B,qFAAqB,2CAA0B,2DAA6B,sX,kGAAgG,sB,uCAAhG,ogBAAkK,+DAAiC,iKAAsF,2DAAsC,uDAA+B,mDAA2B,mDAAqB,mFAAiB,uDAAyB,gGAA8B,2DAA6B,0FAAyB,6CAA8B,2DAA6B,6b,0PAAmH,sB,2CAAnH,shBAAyL,uDAA+B,uDAAyB,gGAA8B,2DAA6B,2FAA0B,6CAA+B,2DAA6B,+b,0PAAqH,sB,4CAArH,shBAA4L,uDAA+B,uDAAyB,gGAA8B,2DAA6B,yFAAwB,6CAA6B,2DAA6B,2b,0PAAiH,sB,0CAAjH,shBAAsL,uDAA+B,mDAA2B,mDAAqB,mFAAiB,uDAAyB,gGAA8B,2DAA6B,yFAAwB,6CAA6B,2DAA6B,md,0PAAiH,sB,0CAAjH,ipBAAuM,uDAA+B,uDAAyB,gGAA8B,2DAA6B,wFAAuB,6CAA4B,2DAA6B,yb,0PAA+G,sB,yCAA/G,shBAAmL,uDAA+B,mDAA2B,mDAAqB,oFAAiB,uDAAyB,iGAA8B,2DAA6B,qFAAmB,+CAAwB,2DAA6B,0c,8PAAuG,sB,qCAAvG,qpBAAwL,uDAA+B,uDAAyB,iGAA8B,2DAA6B,gGAA8B,+CAAmC,2DAA6B,ge,8PAA6H,sB,gDAA7H,qpBAAyN,uDAA+B,uDAAyB,iGAA8B,2DAA6B,+FAA6B,+CAAkC,2DAA6B,8d,8PAA2H,sB,+CAA3H,qpBAAsN,uDAA+B,mDAA2B,mDAAqB,oFAAiB,uDAAyB,iGAA8B,2DAA6B,uFAAqB,+CAA0B,2DAA6B,8c,8PAA2G,sB,uCAA3G,qpBAA8L,uDAA+B,uDAAyB,iGAA8B,2DAA6B,uFAAqB,+CAA0B,2DAA6B,sb,8PAA2G,sB,uCAA3G,yhBAA6K,uDAA+B,mDAA2B,mDAAqB,oFAAiB,uDAAyB,iGAA8B,2DAA6B,0FAAwB,+CAA6B,2DAA6B,4b,8PAAiH,sB,0CAAjH,yhBAAsL,uDAA+B,uDAAyB,iGAA8B,2DAA6B,0FAAwB,+CAA6B,2DAA6B,4b,8PAAiH,sB,0CAAjH,yhBAAsL,uDAA+B,mDAA2B,mDAAqB,oFAAiB,uDAAyB,iGAA8B,2DAA6B,0FAAwB,+CAA6B,2DAA6B,4b,8PAAiH,sB,0CAAjH,yhBAAsL,uDAA+B,uDAAyB,iGAA8B,2DAA6B,sFAAoB,+CAA6B,2DAA6B,ob,8PAAyG,sB,sCAAzG,yhBAA0K,uDAA+B,mDAA2B,mDAAqB,oFAAiB,uDAAyB,iGAA8B,2DAA6B,uFAAqB,+CAAkC,2DAA6B,sb,8PAA2G,sB,uCAA3G,yhBAA6K,uDAA+B,uDAAyB,iGAA8B,2DAA6B,4FAA0B,+CAAkC,2DAA6B,gc,8PAAqH,sB,4CAArH,yhBAA4L,uDAA+B,mDAA2B,mDAAqB,oFAAiB,uDAAyB,iGAA8B,2DAA6B,yFAAuB,+CAA4B,2DAA6B,0b,8PAA+G,sB,yCAA/G,yhBAAmL,uDAA+B,mDAA2B,gDAAiB,gCAA7wO,SAA0C,iBAA0F,EAA6B,iBAAjE,EAAmC,uBAAgE,SAAQ,EAAsC,sBAAsV,SAAyD,qBAAkG,EAA6B,iBAArE,EAAuC,2BAAwO,SAA0D,sBAAoG,EAA6B,iBAAtE,EAAwC,4BAAoO,SAAwD,oBAAgG,EAA6B,iBAApE,EAAsC,0BAAqS,SAAwD,oBAAiH,EAA6B,iBAArF,EAAsC,0BAAvJ,SAAwJ,IAAkP,SAAuD,mBAA8F,EAA6B,iBAAnE,EAAqC,yBAA2R,UAAmD,eAAuG,EAA6B,iBAAhF,EAAiC,qBAAxI,UAAyI,IAAgQ,UAA8D,0BAA6H,EAA6B,iBAA3F,EAA4C,gCAAzK,UAA0K,IAA8P,UAA6D,yBAA2H,EAA6B,iBAA1F,EAA2C,+BAAtK,UAAuK,IAA+S,UAAqD,iBAA2G,EAA6B,iBAAlF,EAAmC,uBAA9I,UAA+I,IAA8O,UAAqD,iBAA0F,EAA6B,iBAAjE,EAAmC,uBAAqS,UAAwD,oBAAgG,EAA6B,iBAApE,EAAsC,0BAAoO,UAAwD,oBAAgG,EAA6B,iBAApE,EAAsC,0BAAqS,UAAwD,oBAAgG,EAA6B,iBAApE,EAAsC,0BAAgO,UAAoD,gBAAwF,EAA6B,iBAAhE,EAAkC,sBAAuS,UAAqD,iBAA0F,EAA6B,iBAAjE,EAAmC,uBAA2O,UAA0D,sBAAoG,EAA6B,iBAAtE,EAAwC,4BAAmS,UAAuD,mBAA8F,EAA6B,iBAAnE,EAAqC,0CAA1tO,0EAAuD,6MAA4gB,iFAA2D,6MAAsU,kFAA4D,6MAAuU,gFAA0D,6MAAkY,gFAA0D,6MAAiV,+EAAyD,6MAA0X,8EAAqD,qNAAyU,yFAAgE,qNAAyW,wFAA+D,qNAA+Z,gFAAuD,qNAAsU,gFAAuD,qNAAyX,mFAA0D,qNAAiU,mFAA0D,qNAAkY,mFAA0D,qNAA6T,mFAA0D,qNAAmX,wFAA+D,qNAA0T,wFAA+D,qNAAuY,kFAAyD,wN,gCAAm3D,0FAA2D,mEAAqC,8Z,sPAA6H,sB,gDAA7H,6oBAAkM,mEAAqC,iGAAgC,uEAAyC,uKAA8O,UAAxD,c,oEAAtL,sIAAoG,cAA0I,2EAA6C,yHAAwD,uEAAkD,mEAA2C,gEAAiC,gCAAjwB,QAA6D,gEAAuG,EAA6B,iBAApE,EAAqB,gCAAlJ,QAAmJ,IAAiQ,iHAApG,SAAoG,MAAqC,cAAzb,QAAO,+DAAP,gM,iCAAwyB,0FAA6D,mEAAqC,0c,sPAAyI,sB,gDAAzI,6oBAAuY,mEAAqC,kGAAgC,uEAAyC,qLAA0R,UAAzI,c,0DAAjJ,sIAAoG,cAAsL,2EAA6C,4PAAuF,0CAAkE,2EAAiD,uEAAkD,uEAAyC,qLAAqX,UAA/L,c,mIAAtL,sIAAoG,cAAiR,2EAA6C,yHAAwD,uEAAkD,mEAA2C,gEAAiC,gCAAzrD,QAAiH,gEAA+M,+CAAsE,kCAA7P,EAAqB,gCAA9J,QAA2O,IAA8W,wHAApG,SAAoG,GAAsO,IAAoF,mDAAiE,oCAAxJ,SAAG,WAAoF,GAAkT,iHAApG,SAAoG,MAAqC,gCAA1uC,QAAO,+DAAqB,qFAA5B,6LAAqf,UAAyO,0BAAgD,mCAAmV,UAAoU,0BAAgD,sC,iCAAuU,sY,wJAA4G,sB,gDAA5G,6qBAAmS,gCAAnS,QAAiO,OAAiB,SAAlP,QAA4B,gEAAyO,EAA6B,iBAAtL,EAAqB,iDAAjI,QAAO,+DAAP,gM,iCAA2W,wJAAsL,UAA1H,c,qDAA5D,qIAAyH,aAA6D,mEAAqC,2HAA2D,gEAAiC,cAA9L,4GAAzH,QAAyH,KAAkC,M,iCAAsM,mPAAsG,aAAiE,mEAAqC,mHAAmD,gEAAiC,cAA1L,gHAAtG,QAAsG,KAAsC,M,iCAA7tJ,8eAAiG,uDAAyB,+FAA8B,2DAA6B,qFAAoB,+DAAiC,kFAA4B,6CAAyB,+DAAiC,sSAA+I,cAAsC,mEAAqC,2HAA0D,+DAAqC,2DAAmC,2DAA6B,+Z,0PAA8D,sB,wCAA9D,ipBAAuL,uDAA+B,uDAAyB,gGAA8B,2DAA6B,kFAA6B,6CAA0B,2DAA6B,yGAAuC,+DAAiC,qIAAu2B,+DAAiC,sIAAiyD,+DAAiC,wFAAuB,mEAAqC,sIAAmS,+DAAuC,+DAAiC,sIAAgU,+DAAiC,sIAAyS,2DAAmC,uDAA+B,mDAAqB,+DAAlgJ,sGAA/I,SAA+I,GAA0O,SAAuC,wDAAkH,EAA6B,iBAAxH,EAAoB,wBAAlF,SAAwI,IAA8T,SAAyB,6BAAiC,gBAA80B,SAAyB,6BAAmC,kBAAk0D,SAAkI,6BAAoC,mBAAqM,UAA4J,EAAyB,kBAA4K,UAA6I,EAAyB,mCAAvvJ,2CAA0O,SAAO,wDAAqB,mFAAmb,SAAO,uDAAP,oMAA0S,SAAO,yDAAsB,uF,iCAAnmC,gOAA8E,UAA7D,2B,qBAAjB,4VAA8E,mDAAqB,iMAAu9J,gDAAiB,gCAAx+J,QAAyB,kBAAuE,kCAAnM,wG,iCAAkmK,gL,kCAAyB,c,wBAAzB,iFAAoG,mDAAqB,0HAA0D,wK,iCAAqY,kUAAkE,gCAAU,cAA5E,QAA8C,EAAmB,yBAAjE,QAA8C,EAAmB,0CAAC,qC,iCAArY,kFAA2C,mDAAqB,oFAAmB,uDAAyB,8GAA0C,2CAAyB,uDAAyB,wX,gGAAmE,sB,8BAAnE,ueAA8F,2DAA6B,kKAAqF,uDAAkC,mDAA2B,gDAAiB,gCAA9R,SAA+C,eAAoB,EAA0B,cAA8B,SAAQ,EAAqC,sCAA1N,yEAAkD,+M,iCAA83B,kUAA+D,gCAAU,cAAzE,QAA2C,EAAmB,yBAA9D,QAA2C,EAAmB,0CAAC,qC,iCAAxoB,oEAAiD,mDAAqB,iFAAiB,2CAA2B,mDAAqB,kFAAiB,uDAAyB,oFAAmB,2DAA6B,6FAA4B,6CAAoC,2DAA6B,6X,kGAAuG,sB,uCAAoC,e,mCAA3I,ogBAA0O,+DAAiC,kKAAkF,2DAAsC,uDAA+B,mDAA2B,gDAAiB,gCAA9c,SAAiD,iBAA2J,EAA6B,iBAAlI,EAAmC,uBAAiI,SAAQ,EAAkC,mCAA5hB,8EAAsK,uFAAiE,gN,iCAA8oB,kEAAiD,iN,iCAA0L,yFAAqE,2DAA6B,8V,kGAAgD,sB,2CAAhD,qgBAA6L,2DAA6B,6GAAuD,gCAAkB,wDAAyB,gCAA5T,QAA8H,kEAAiC,EAA6B,iBAA5I,EAAuB,4CAAvE,QAAwG,yDAAxG,6LAA0N,QAAgC,0DAAuB,sC,iCAApc,mEAAwD,uDAAyB,iKAAoa,oDAAqB,cAAzb,QAAyb,YAArX,qB,iCAA/c,oEAAwE,mDAAqB,iFAAiB,2CAA6B,mDAAqB,qIAAqI,mDAAqB,sIAAyhB,gDAAiB,gCAApsB,SAAK,kBAA2C,oBAA0G,SAAc,iBAAyC,qCAAnQ,mF,iCAAimC,kEAA8B,2DAA6B,gGAAgC,4CAAqC,mGAA4G,sCAAjJ,2FAAqC,0H,iCAA2I,mEAAgC,2DAA6B,gGAAgC,4CAAiC,2DAA6B,2J,kCAAyB,c,2BAAzB,gFAAiD,aAA0B,+FAAmG,uDAAyB,sCAArQ,uFAA+G,mGAAjD,QAAiD,GAA0B,4C,iCAAyO,kEAA+C,iHAAsG,kGAAkC,+BAAsB,2DAA6B,oBAA3L,yHAAwI,yC,iCAArQ,kFAAiD,2DAA6B,iKAAgP,wDAAyB,cAAzQ,QAAyQ,YAA3N,gC,iCAAnlC,oEAA+B,mDAAqB,oGAAmC,uDAAyB,kEAAK,2DAA6B,gGAAgC,4CAA6B,oGAAmG,uDAAyB,sIAAkP,uDAAyB,sIAAwW,uDAAyB,sIAA6V,mDAA2B,gDAAiB,gCAArhC,SAAK,EAAwB,kBAA8O,SAAK,EAA0B,oBAAkW,SAAkB,EAA8B,2DAAr1B,4EAA6B,qG,iCAAv2hC,yFAAuC,+CAAiB,oIAAmgB,+CAAiB,kFAAiB,mDAAqB,+FAA8B,uDAAyB,kFAAkB,6CAAyB,uDAAyB,yc,0PAA8D,sB,6BAA9D,gsBAA2J,mDAA2B,mDAAqB,qIAAuc,+CAAuB,+CAA+B,+CAAiB,qIAAy8V,+CAA8B,+CAAiB,qIAAmwJ,+CAAkC,+CAAiB,qIAA4hP,+CAAiB,0FAAwB,mDAAqB,oFAAmB,6CAA0B,mDAAqB,0a,0PAA2C,sB,8BAA3C,shBAA4J,+CAAuB,+CAAiB,kFAAiB,6CAA8B,+CAAiB,sIAAilK,+CAAiB,sIAAoO,+CAAiB,sIAA4e,+CAAiB,sIAA2xB,+CAAiB,sIAAm3B,+CAAiB,sIAA+2C,4CAAa,gCAA59jC,SAAiB,EAAiB,UAAmpB,SAAoH,IAApH,SAAkD,OAA2E,EAA6B,iBAA5F,EAAyB,aAAoH,UAA8B,EAAqB,cAA2d,SAAc,kBAAwC,kBAAk8V,SAAc,kBAAuC,iBAAiwJ,SAAc,kBAA2C,qBAAmmP,SAAqB,QAAiD,EAA6B,iBAAxD,EAA0B,cAA+L,SAAqD,EAAwB,kBAAqhK,UAA0E,EAAyB,kBAAkJ,UAAiB,EAAyB,kBAAmd,SAAc,EAAkC,4BAA4vB,WAAc,4BAAyD,uBAA6zB,SAAc,EAAgB,2BAA3//B,qEAAkD,2OAAonwB,sEAA+C,6MAAqN,gF,iCAAmgT,uIAAiN,UAAhJ,c,8BAAjE,qIAAyI,aAAwE,uDAAyB,0PAAoB,uCAA2H,oDAAqB,gCAArQ,2HAAzI,QAAyI,GAAoG,IAAiB,+BAAuE,iBAA3F,QAAG,WAAiB,KAAuE,M,iCAAuG,4KAAsU,UAArS,c,sBAAjC,qIAA2G,YAA3G,wHAAsU,uDAAyB,wIAAyF,uDAAyB,6JAAuG,aAAoD,oDAAqB,gCAAthB,iIAA3G,QAA2G,GAA3G,QAAuS,EAA8B,gCAArU,QAAgP,YAA8B,SAAiF,QAAqC,YAA4B,SAA8F,mBAA6B,QAA6B,2FAAvG,QAA6C,EAA0D,M,iCAA7hC,qFAAoC,mDAAqB,qIAAuZ,mDAAqB,qIAA0oB,gDAAiB,gCAAvkC,SAAQ,mBAA0C,kBAA0X,QAAiN,eAA8B,mB,yGAFl1nC,4LAEiD,mCAAK,wHAAmD,uCAAS,6X,kFAAkC,iB,sBAAlC,uWAAqI,2CAAa,4FAA0B,+CAAiB,qHAAgD,gCAAc,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,sIAA0hkC,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAA0D,+CAA0B,+CAAiB,sJAA6E,qFAAkE,+CAAiB,sIAAsoC,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAAxsoC,SAAwD,EAA4B,aAAiP,iFAAzD,SAAyD,GAAwJ,SAAwB,EAAc,QAAyglC,SAAqB,EAAc,2CAA/imC,qMAA6O,kBAAk0kC,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,2GAAkL,mE,8yCYAh7kC,oEAAoC,mDAAqB,4FAA4B,2CAA+B,mDAAqB,ghB,sPAAkH,sB,gCAAlH,g4BAAsL,gDAAiB,gCAAvM,QAA+I,IAA/I,SAA2C,qBAAuE,EAA4B,gBAA9I,SAAwJ,IAAxJ,SAAqK,OAAgB,cAAzO,wEAAoD,4O,gCAAuO,4NAAiD,yCAA0B,cAA3E,QAAa,cAAc,cAAsB,8E,gCAAyD,6QAAyB,aAAoG,gDAAqB,6EAAgB,uDAAyB,qEAAQ,uCAAmB,iEAAI,uDAAyB,oEAAM,gCAAmB,mDAAyB,gDAAqB,8EAAgB,uDAAyB,sEAAQ,2CAAuB,kEAAI,uDAAyB,oEAAM,gCAAuB,mDAAyB,gDAAqB,8EAAgB,uDAAyB,sEAAQ,mCAAe,kEAAI,uDAAyB,oEAAM,gCAAgB,mDAAyB,gDAAqB,8EAAgB,uDAAyB,sEAAQ,wCAAoB,kEAAI,uDAAyB,oEAAM,+CAAyB,mDAAyB,6CAAiB,cAAzyB,IAAY,oGAAzB,QAAa,OAAyD,SAA7C,MAA4C,gCAAoL,qBAA4K,yBAAwK,qB,gCAAkU,2IAA6H,mDAAqB,kIAAiC,aAAoD,mDAAqB,mEAAM,2CAA8B,+CAAiB,oBAAjT,QAAyD,mBAAyB,SAAiG,wFAAjC,QAAiC,GAA+E,2E,qEAFtuE,qLAE0C,mCAAK,+GAA0C,uCAAS,sW,kFAAkC,iB,sBAAlC,sWAAsG,2CAAa,4FAA0B,+CAAiB,8GAAyC,6CAAwB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,0FAAwB,+CAAiB,iEAAG,6CAA2B,+CAAiB,qIAA+V,+CAAiB,qIAAyF,+CAAiB,qIAAo0B,2CAAmB,2CAAa,2FAA0B,+CAAiB,qIAA0T,+CAAiB,sJAA6E,6CAA2B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAA32E,QAAwD,EAA4B,aAAqN,iFAAzD,SAAyD,GAAgP,UAAc,EAAqB,cAA6U,SAA4B,EAAoB,cAA0D,SAAwG,EAAoB,cAAmxB,UAAuG,EAAqB,+BAA9/D,qMAAuM,gEAAsS,oEAA6yD,kE,6rBXAvgE,oEAAsB,uF,gCAAokB,2HAA8E,W,gCAAqC,oIAA0H,W,gCAAuQ,mFAAmD,uEAAyC,wLAA4J,2EAA6C,oJAAmG,aAA8D,2EAA6C,sFAAsB,2CAAyC,uEAAyC,qMAA+Q,UAAxJ,c,kDAAvH,gJAA+Q,6CAAyB,oEAAqC,cAA7U,SAA6U,YAAnL,mBAAuC,+CAApZ,gHAAnG,QAAmG,GAAiI,6FAAkF,SAA8O,aAAgC,SAAC,qF,gCAAj+C,kEAAyC,2DAA6B,4FAA4B,+DAAiC,oIAAkF,+DAAiC,oIAA8H,2DAAkC,2DAA6B,mEAAI,+DAAiC,qFAAoB,mEAAqC,iJ,mCAAyB,c,2CAAzB,kFAA+C,gCAAkB,mEAAqC,qIAA86B,+DAAuC,+DAAiC,qEAAO,gCAAsB,2DAAkC,2DAA6B,iGAA+B,+DAAiC,0N,mCAAyI,c,yCAAzI,sIAAsG,aAAtG,mLAAiR,mEAAqC,yIAAiI,mEAAqC,8JAAmH,cAAoD,+DAA0C,2DAAkC,wDAAyB,gCAA92E,SAAoC,EAAsB,+BAAyD,QAA6C,EAAqB,+BAA+T,SAAK,0BAAgC,oBAAmtC,gGAAtG,SAAsG,GAAtG,SAA4M,mBAAqC,wCAA17C,uCAAojC,uCAAqJ,SAAkP,aAA8B,SAAsC,SAAqC,aAA4B,SAAkJ,oBAA6B,QAAyC,6FAAnH,SAA6C,EAAsE,M,gCAAj+E,4GAAoF,mDAAqB,oEAAO,uDAAyB,gKAAs/E,mDAA6B,gDAAiB,cAApiF,QAAoiF,YAA5/E,4B,qEAFp3B,0LAE+C,mCAAK,+GAA0C,uCAAS,sW,kFAAkC,iB,sBAAlC,sWAAsG,2CAAa,4FAA0B,+CAAiB,mHAA8C,yFAAkE,qIAA6C,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,0FAAwB,+CAAiB,qIAAqrF,+CAAiB,kEAAI,6CAA+B,+CAAiB,uGAAkC,6CAAyB,+CAAiB,gKAA4E,+CAAiB,qGAAoC,6CAAgC,2CAAmB,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAwB,+CAA0B,+CAAiB,sJAA6E,6CAA+C,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAA3lI,QAAwD,EAA4B,aAA0L,SAAO,EAAc,QAAwH,iFAAzD,SAAyD,GAAiM,SAA4C,YAAuC,wCAA/qB,qMAA4M,qEAA0lG,uEAAkF,8DAA2K,qEAA2G,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,8DAAgJ,kE,w7BYA9iH,wFAAwC,+CAAiB,6IAA4C,aAAoD,+CAAiB,sFAAsB,2CAA2B,2CAAa,oBAAnI,wFAA5C,QAA4C,GAA2F,wE,gCAAm2B,qFAAqD,2DAA6B,mJAAiF,UAA3D,c,2BAAtB,wBAAiF,2GAA6F,2DAA6B,mJAAkF,UAA5D,c,2BAAtB,wBAAkF,2GAA+F,uDAAyB,oBAApU,qFAA4M,0F,gCAA6K,kEAAuC,4M,gCAAopC,mEAAkC,uEAAyC,sIAAqC,aAA4G,uEAAyC,sFAAsB,2CAAuC,mEAAqC,oBAAvP,gIAArC,QAAqC,GAA2K,gH,gCAA3wB,kEAA4C,+DAAiC,wHAAmD,UAAnB,c,wCAAhC,wBAAmD,mEAAqC,wV,mJAAuB,sB,2CAAvB,8jBAAyJ,+DAAsC,+DAAiC,0FAAuB,UAAnB,c,wCAAJ,wBAAuB,4GAAoF,qIAAsX,+DAAsC,+DAAiC,yFAAwB,mEAAqC,uT,oGAAuB,sB,iDAAvB,wgBAAuK,+DAAsC,+DAAiC,yFAAwB,mEAAqC,uT,oGAAuB,sB,4CAAvB,wgBAA6J,+DAAsC,4DAA6B,cAAh1C,QAA+C,8DAAqE,EAAwB,4BAArH,EAAuB,2BAA6R,SAAc,EAAmB,6BAAyd,SAA6F,qEAAmC,+BAAsC,4BAA/I,EAA6B,iCAAuP,SAAgD,gEAAsE,+BAAsC,4BAArI,EAAwB,6CAA/pC,qMAAuP,mCAA8kB,6MAA2S,gN,gCAAr1D,kHAAiF,uDAAyB,qEAAO,2DAA6B,kEAAI,+DAAiC,iEAAI,8BAAW,+DAAiC,iEAAI,6CAAsB,+DAAiC,yGAAoC,6CAA+B,+DAAiC,yGAAoC,6CAA0B,2DAAkC,uDAAiC,uDAAyB,qEAAO,2DAA6B,iKAA0/C,uDAAiC,oDAAqB,cAAhjD,SAAgjD,YAArgD,yBAApY,mFAA2F,4FAAoG,0F,gCAA5uC,oEAAmC,mDAAqB,6FAA6B,+FAA0E,oIAA6e,mDAA0B,mDAAqB,qIAAsH,mDAAqB,qIAAwnE,gDAAiB,gCAAhzF,QAAqB,YAA+B,eAAwe,UAAK,aAAiC,eAAqG,SAAiD,YAA+B,gCAAj0B,mF,gCAA9tB,yFAAyC,+CAAiB,yFAAwB,mDAAqB,kFAAkB,2CAAyB,mDAAqB,wc,sPAA8D,sB,sBAA9D,mqBAA0F,+CAAuB,+CAAiB,0FAAwB,mDAAqB,yFAAwB,6CAA+B,mDAAqB,ob,0PAA0E,sB,4BAA1E,0fAAmG,mDAAqB,qGAAoC,6CAAmC,+CAAuB,+CAAiB,qIAA89F,4CAAa,gCAA78G,SAAiF,IAAjF,SAAkD,OAAY,EAAkB,MAA2K,SAAwD,aAAkB,EAAwB,YAAqI,SAAc,EAAoB,+BAAljB,kEAA8C,0OAAuM,2EAAoD,6MAA4J,kF,gCAAukH,4KAAqP,UAApN,c,sBAAjC,qIAA2G,YAA3G,wHAAqP,uDAAyB,wIAAyF,uDAAyB,6JAAuG,aAAoD,oDAAqB,gCAArc,mFAA3G,QAA2G,GAA3G,QAAsN,EAA8B,gCAApP,QAA+J,YAA8B,SAAiF,QAAqC,YAA4B,SAA8F,mBAA6B,QAA6B,oFAAvG,QAA6C,EAA0D,M,qEAFt5K,gMAEqD,mCAAK,+GAA0C,uCAAS,sW,kFAAkC,iB,sBAAlC,sWAAsG,2CAAa,4FAA0B,+CAAiB,yHAAoD,gCAAc,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,qIAA8O,2CAAa,qIAA0nH,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAwB,+CAA0B,+CAAiB,sJAAiG,6CAA4B,+CAAiB,sFAAqB,mDAAqB,qIAAyjB,+CAAuB,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAAx8K,QAAwD,EAA4B,aAAsN,iFAAzD,SAAyD,GAAwJ,SAAwB,EAAe,SAAoN,UAAwB,EAAgB,SAA6lI,SAA8I,EAAgB,6CAAh+J,qMAAkN,kBAA6pI,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,8DAAoK,mE,28BPAp/I,oEAAsB,uF,gCAA2c,4FAAsE,uDAAyB,mJAAiF,UAA3D,c,2BAAtB,wBAAiF,mGAAqF,uDAAyB,mJAAkF,UAA5D,c,2BAAtB,wBAAkF,mGAAuF,mDAAqB,oBAA5S,uEAAgM,4E,gCAA0J,kEAAiD,2L,gCAA6O,0FAAoE,UAAnB,c,wCAAjD,wBAAoE,2DAA6B,gGAAgC,+DAAiC,wV,mJAAuB,sB,2CAAvB,kiBAAgI,2DAAkC,2DAA6B,kEAAI,gGAA6E,wDAAyB,cAAzS,QAA+C,kEAAxB,EAAuB,4CAA9C,qMAAmM,sC,gCAArf,iHAA2F,mDAAqB,oEAAO,uDAAyB,gKAAgd,mDAA6B,gDAAiB,cAA9f,QAA8f,YAA9c,qB,qEAF7pD,0LAE+C,mCAAK,+GAA0C,uCAAS,gW,kFAAkC,iB,sBAAlC,8aAAqF,2CAAa,4FAA0B,+CAAiB,mHAA8C,yFAAkE,qIAA6C,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,0FAAwB,+CAAiB,iEAAG,6CAAgC,+CAAiB,qFAAoB,mDAAqB,kEAAI,6CAA6B,mDAAqB,qIAAke,+CAAuB,+CAAiB,qIAA6H,+CAAiB,qIAAspB,2CAAmB,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAwB,+CAA0B,+CAAiB,sJAAiG,6CAA4B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAAriF,SAAwD,EAA4B,aAAyK,SAAO,EAAc,QAAwH,iFAAzD,SAAyD,GAAoV,SAA4B,iBAAyC,oBAAqc,UAAK,kBAA2C,oBAA8F,SAAiD,iBAAyC,qCAAh9C,qMAA2L,qEAAmZ,yEAA8F,qEAA26C,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,8DAAoK,mE,q1BQA7wE,0FAAuC,gF,gCAAwQ,wFAAwC,+CAAiB,6IAA4C,aAAoD,+CAAiB,sFAAsB,2CAA2B,2CAAa,oBAAnI,wFAA5C,QAA4C,GAA2F,wE,gCAAm4C,kEAAuC,6L,gCAAqgB,yGAAsD,kJ,gCAA8oB,iEAAqB,+DAAiC,iLAAqC,+BAAqB,4DAA6B,cAAvF,QAAM,uEAA8B,cAAC,gD,gCAAthB,kEAA6B,2DAA6B,iEAAI,2CAA+B,2DAA6B,iEAAI,+DAAiC,mHAAwI,+DAAiC,uFAAsB,qCAA8B,2DAAkC,2DAA6B,qIAAkJ,2DAA6B,iFAAiC,wDAAyB,cAAzO,SAAyO,YAArN,2BAAjZ,2GAAiG,QAAG,8EAA0C,uFAAkJ,6DAA4Q,SAAI,EAAuB,8B,gCAA3zC,uGAAsE,mDAAqB,qEAAO,uDAAyB,kEAAI,2DAA6B,yGAAqC,2CAA2B,2DAA6B,yGAAoC,+DAAiC,uFAAsB,6CAA0B,2DAAkC,2DAA6B,qIAA4E,2DAA6B,0FAAyB,6CAAuB,uDAA8B,mDAA6B,mDAAqB,qEAAO,uDAAyB,iKAAyqB,mDAA6B,gDAAiB,gCAAh+B,SAAqC,EAAgB,UAAoN,SAAI,EAAwB,yBAAjhB,8EAAmJ,8EAA2N,gF,gCAAu3B,qLAAuN,UAA7F,c,4BAA1H,+IAAuN,mDAAqB,kIAAiC,aAAoD,mDAAqB,mEAAM,2CAA4B,gDAAiB,cAAzY,QAAyY,YAA5V,8BAA7C,QAA6C,YAAyG,oBAAsC,SAAiF,+FAAjC,QAAiC,GAA+E,gF,gCAAzsG,yFAAuC,+CAAiB,qFAAoB,mDAAqB,0FAAyB,uDAAyB,uGAAmC,2CAA8B,uDAAyB,0e,0PAA8I,sB,uBAA9I,2dAAyG,cAAwF,uDAAyB,oFAAmB,8BAAQ,uDAAyB,sGAAiC,6CAA4B,uDAAyB,we,0PAA0I,sB,qBAA1I,2dAAuG,cAAoF,mDAA2B,mDAAqB,2LAAmO,UAA7F,c,4BAAtI,gJAAmO,uDAAyB,uQAA+B,0BAAyG,6FAA2E,+CAAuB,+CAAiB,kEAAI,+CAAiB,qIAA8G,+CAAiB,qIAAq5C,+CAAiB,qIAAkZ,4CAAa,gCAA/hG,SAA8I,EAAmB,OAAmM,SAA0I,EAAiB,KAAgF,SAAoB,EAA+B,gBAA4M,IAA4B,kCAAqD,SAApF,SAAG,sBAA4B,GAAiP,UAAK,aAAiC,eAAyF,SAAsC,YAA+B,eAAi2C,SAA6L,EAAyB,sDAA74F,mEAAgK,4FAAzG,SAAyG,EAAzG,oMAA+S,wEAA4J,0FAAvG,SAAuG,EAAvG,oMAA2O,SAAyL,uBAAyC,SAAkK,2E,wGAFvhE,wLAE6C,mCAAK,wHAAmD,uCAAS,4FAA2B,2CAAa,2FAA0B,+CAAiB,iHAA4C,yFAAgE,qIAAuD,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,qIAA8O,2CAAa,qIAAkxG,2CAAa,2FAA0B,+CAAiB,sJAA6E,6CAA2B,2CAAmB,uCAAe,mCAAW,+BAAO,gCAAC,gCAAjhI,SAA0B,EAAY,MAAiH,iFAAzD,SAAyD,GAAwJ,UAAwB,EAAe,QAAoN,SAAwB,EAAc,yBAAhpB,mEAAigI,kE,i3BCA9lH,wFAAkD,+CAAiB,6IAA4C,aAAoD,+CAAiB,sFAAsB,2CAA2B,2CAAa,oBAAnI,wFAA5C,QAA4C,GAA2F,wE,gCAA4oC,0GAAgE,yF,gCAA6H,mEAA4C,mDAAqB,iEAAI,4L,gCAA8c,iEAAoC,8BAAM,W,gCAAqG,wGAAoE,2J,gCAAoG,wGAAoE,sJ,gCAAkiC,oGAAoI,4J,gCAAwG,kGAAmI,6J,gCAAyG,kGAAiD,+F,gCAAkK,mEAAkC,uEAAyC,qHAAoB,aAA2G,uEAAyC,sFAAsB,2CAAsC,mEAAqC,oBAArP,+HAApB,QAAoB,GAA0K,+G,gCAAlV,iEAAoC,mEAAqC,oIAAmW,gEAAiC,cAApY,QAAc,EAAmB,4C,gCAAkb,mEAAoD,0J,gCAA8D,mEAAoD,0J,gCAA8D,mEAAsD,4J,gCAAgE,mEAAmD,yJ,gCAA+F,wFAAwD,mEAAqC,sT,kGAAuB,sB,wDAAvB,qgBAAsN,gEAAiC,cAA1J,4FAA7F,QAA6F,EAAkF,yCAAsC,iCAA9L,EAA6B,yDAApD,wM,gCAA6R,wFAAwD,mEAAqC,sT,kGAAuB,sB,mDAAvB,qgBAAoK,gEAAiC,cAArJ,uFAAhD,QAAgD,EAA6E,yCAAsC,iCAA5I,EAAwB,oDAA/C,wM,gCAAr6F,kEAAoC,+DAAiC,wHAAmD,UAAnB,c,wCAAhC,wBAAmD,mEAAqC,sW,mJAAuB,sB,2CAAgM,e,kDAAvN,8jBAAiQ,+DAAsC,+DAAiC,wGAAkC,UAAnB,c,wCAAf,wBAAkC,mEAAqC,2UAAwJ,+DAAsC,+DAAiC,mEAAI,4GAAqF,qIAAuM,mEAAqC,qIAAuM,mEAAqC,qIAAmE,+DAAsC,+DAAiC,qIAAkd,+DAAiC,mEAAI,mEAAqC,qIAA6E,mEAAqC,qIAA6E,mEAAqC,qIAAiF,mEAAqC,qIAA2E,+DAAsC,+DAAiC,qIAAyV,+DAAiC,qIAAuS,4DAA6B,gCAAh8F,2EAA/C,QAA+C,EAA4E,2BAAmD,4BAAvJ,EAAuB,2BAAiW,SAAY,4BAA0B,wBAAC,EAAiB,wBAAC,KAAkE,IAAxD,GAAqP,SAA4E,+BAAuD,oCAAyG,SAA0E,+BAAwD,qCAA0G,SAAkC,EAAc,wBAA0F,SAAI,yBAAwhB,SAAM,6BAA6C,4BAA+D,SAAM,6BAA6C,4BAA+D,SAAM,6BAA+C,8BAAiE,SAAM,6BAA4C,2BAAgG,SAAwB,yBAAkW,SAAwB,4BAA+B,cAAluF,qMAAknB,uC,gCAAtrD,oEAA2C,mDAAqB,kHAAiD,uDAAyB,qEAAO,2DAA6B,kEAAI,+DAAiC,iEAAI,8BAAW,+DAAiC,kEAAI,8BAAW,+DAAiC,kEAAI,6CAAsB,+DAAiC,qIAA+C,+DAAiC,kEAAI,6CAA0B,+DAAiC,qIAAuI,+DAAiC,qIAAkI,2DAAkC,uDAAiC,uDAAyB,qEAAO,2DAA6B,iKAAipG,uDAAiC,mDAA6B,gDAAiB,gCAAzxH,SAAI,yBAA2I,SAAoC,yBAAoI,SAAoC,yBAA8N,SAAI,EAA+B,sCAAnpB,4EAA2I,mF,gCAAr3D,yFAAsI,+CAAiB,qFAAoB,mDAAqB,mFAAkB,uDAAyB,wGAAoC,2CAA2B,uDAAyB,sd,0PAAsJ,sB,4BAAtJ,yfAAkG,cAA6E,mDAA2B,mDAAqB,uHAAiD,uDAAyB,qJAAwJ,UAAhC,c,gCAAxH,wKAAwD,uBAAgG,qGAA+E,uDAAyB,qJAAsJ,UAA/B,c,gCAAvH,wKAAwD,uBAA8F,yGAA+E,qIAAwF,uDAAkC,mDAA2B,+CAAuB,+CAAiB,qIAAoJ,+CAAiB,qIAAspI,4CAAa,gCAAnxK,SAAoI,aAAkB,EAAwB,YAAiJ,IAAkC,cAAmC,cAA3F,SAAsB,4BAAkC,GAA8N,IAAkC,aAAkC,cAA1F,SAAsB,4BAAkC,GAA6K,SAA0C,EAAqB,eAA8H,UAAc,EAA6B,qBAA0H,SAAc,EAA4B,sCAA9sC,oEAAsJ,yFAAlG,SAAkG,EAAlG,oMAAic,oEAA8P,4E,+FAFv5D,yLAE8C,mCAAK,wHAAmD,uCAAS,sW,kFAAkC,iB,sBAAlC,uWAAsG,2CAAa,4FAA0B,+CAAiB,kHAA6C,yFAAiE,qEAAO,gCAAsB,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,qIAAwP,2CAAa,oIAAwC,cAAojL,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAwB,+CAA0B,+CAAiB,sJAA6E,6CAA2B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAAn3N,SAAwD,EAA4B,aAAqT,iFAAzD,SAAyD,GAAwJ,SAAwB,cAAyB,OAA4P,yGAAxC,SAAwC,MAA6F,gCAA36B,qMAA2M,oEAAwE,uBAAuqM,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,8DAAgJ,kE,y1BCAn2M,wFAAwC,+CAAiB,6IAA4C,aAAoD,+CAAiB,sFAAsB,2CAA2B,2CAAa,oBAAnI,wFAA5C,QAA4C,GAA2F,wE,gCAA2qC,qFAAwF,uDAAyB,mJAAiF,UAA3D,c,2BAAtB,wBAAiF,mGAAqF,uDAAyB,mJAAkF,UAA5D,c,2BAAtB,wBAAkF,mGAAuF,mDAAqB,oBAA5S,8EAAgM,mF,gCAA8nC,kEAAiD,iN,gCAAmrB,kEAAiD,+DAAiC,wHAAmD,UAAnB,c,wCAAhC,wBAAmD,mEAAqC,wV,mJAAuB,sB,2CAAvB,kiBAAoI,+DAAsC,+DAAiC,0FAAuB,UAAnB,c,wCAAJ,wBAAuB,wGAAqF,+DAAiC,yFAAwB,mEAAqC,uT,oGAAuB,sB,iDAAvB,wgBAA4J,+DAAsC,+DAAiC,yFAAwB,mEAAqC,uT,oGAAuB,sB,4CAAvB,wgBAAkJ,+DAAsC,4DAA6B,cAA14B,QAA+C,kEAAxB,EAAuB,2BAAuW,SAA6F,yEAAuC,EAAuB,0BAApI,EAA6B,iCAA4O,SAAgD,oEAA0E,EAAuB,0BAA1H,EAAwB,6CAApuB,qMAAkO,mCAAmL,6MAAgS,gN,gCAAz6C,kHAA2F,uDAAyB,qEAAO,2DAA6B,kEAAI,+DAAiC,iEAAI,8BAAW,+DAAiC,iEAAI,6CAAsB,+DAAiC,yGAAoC,6CAA+B,+DAAiC,yGAAoC,6CAA0B,2DAAkC,uDAAiC,uDAAyB,qEAAO,2DAA6B,iKAAyjC,uDAAiC,oDAAqB,cAA/mC,SAA+mC,YAA/jC,8BAAzY,mFAA2F,4FAAoG,0F,gCAA3oB,mEAA4C,mDAAqB,oIAAqI,mDAAqB,oIAAisD,gDAAiB,gCAA52D,SAAK,kBAA2C,oBAA0G,QAAiD,iBAAyC,4B,gCAAp2F,yFAAyC,+CAAiB,yFAAwB,mDAAqB,kFAAkB,2CAAyB,mDAAqB,wc,sPAA8D,sB,sBAA9D,mqBAA0F,+CAAuB,+CAAiB,0FAAwB,mDAAqB,yFAAwB,6CAA+B,mDAAqB,ob,0PAA0E,sB,4BAA1E,0fAAmG,mDAAqB,qGAAoC,6CAAmC,+CAAuB,+CAAiB,0FAAwB,mDAAqB,mFAAkB,iGAA4E,6SAAkC,cAAsJ,2DAA6B,2HAA0D,uDAA6B,mDAA2B,mDAAqB,qIAAof,+CAAsB,+CAAiB,0OAAwB,uBAA4C,mDAAqB,0FAAwB,uDAAyB,od,6VAAkH,sB,wBAAlH,gsBAAuI,uDAAyB,qHAAgD,qGAA8F,mDAA2B,mDAAqB,0FAAwB,uDAAyB,8d,6VAA4H,sB,wBAA5H,gsBAAiJ,uDAAyB,0HAAqD,qGAAyG,mDAA2B,+CAAuB,+CAAiB,qIAA47D,4CAAa,gCAAj1I,SAAiF,IAAjF,SAAkD,OAAY,EAAkB,MAA2K,SAAwD,aAAkB,EAAwB,YAAkT,4FAAlC,SAAkC,GAA0T,SAAqB,wCAAkE,oBAAyc,IAAmB,kCAAxB,SAAK,aAAmB,GAAkH,SAA6C,SAA6B,OAA1E,SAA6C,SAAqE,EAAoB,QAAyQ,SAA6C,SAAkC,YAA/E,SAA6C,SAA+E,EAAoB,QAA2P,SAAc,0BAA6B,cAAj+E,kEAA8C,0OAAuM,2EAAoD,6MAA4J,+EAA0I,8EAA6kC,6MAAgN,oFAA+L,6MAA+N,kG,gCAAsoF,4KAAqP,UAApN,c,sBAAjC,qIAA2G,YAA3G,wHAAqP,uDAAyB,wIAAyF,uDAAyB,6JAA0H,aAAiC,oDAAqB,gCAArc,mFAA3G,QAA2G,GAA3G,QAAsN,EAA8B,gCAApP,QAA+J,YAA8B,SAAiF,QAAqC,YAA4B,SAA8F,mBAA6B,QAAgD,oFAA1H,QAA6C,EAA6E,M,qEAF5yM,2LAEgD,mCAAK,wHAAmD,uCAAS,sW,kFAAkC,iB,sBAAlC,sWAAsG,2CAAa,4FAA0B,+CAAiB,oHAA+C,gCAAc,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,qIAA8O,2CAAa,qIAA8/I,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAwB,+CAA0B,+CAAiB,sJAAiG,6CAA4B,+CAAiB,sFAAqB,mDAAqB,qIAAyjB,+CAAuB,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAAv0M,QAAwD,EAA4B,aAAiN,iFAAzD,SAAyD,GAAwJ,SAAwB,EAAe,SAAoN,UAAwB,EAAgB,SAAi+J,SAA8I,EAAgB,6CAA/1L,qMAA6M,kBAAiiK,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,8DAAoK,mE,23BCA7pK,wFAAwC,+CAAiB,6IAA4C,aAAoD,+CAAiB,sFAAsB,2CAA2B,2CAAa,oBAAnI,wFAA5C,QAA4C,GAA2F,wE,gCAA4J,mRAAoG,aAA+C,iFAA4E,cAAlN,IAAuF,2FAApG,QAAa,UAAoH,aAA7B,MAA4B,cAAmB,iG,gCAAy8B,kUAA6D,gCAAU,cAAvE,QAAyC,EAAmB,yBAA5D,QAAyC,EAAmB,0CAAC,qC,gCAAzhB,oEAAyD,mDAAqB,kFAAiB,uDAAyB,+FAA8B,2DAA6B,qGAAqC,2CAAuC,2DAA6B,+Y,kGAAoG,sB,yCAApG,weAA+J,+DAAiC,iKAAgF,2DAAsC,uDAA+B,uDAAyB,gGAA8B,2DAA6B,kGAAiC,6CAA8B,2DAA6B,oe,0aAAsI,sB,qCAAtI,ioBAAwK,uDAA+B,mDAA2B,mDAAqB,0FAAwB,uDAAyB,oa,oGAAwG,sB,wCAAxG,4eAA2K,uDAAyB,kIAA6D,gCAAW,mDAA2B,mDAAqB,0FAAwB,uDAAyB,oa,oGAAwG,sB,wCAAxG,4eAA2K,uDAAyB,kIAA6D,gCAAW,mDAA2B,mDAAqB,0FAAwB,uDAAyB,wa,oGAA0G,sB,0CAA1G,4eAAiL,uDAAyB,oIAA+D,gCAAW,mDAA2B,mDAAqB,0FAAwB,uDAAyB,wa,oGAA0G,sB,0CAA1G,4eAAiL,uDAAyB,oIAA+D,qCAAoB,mDAA2B,gDAAiB,gCAArsE,SAAqC,0BAA+D,EAAqC,yBAAuD,SAAQ,EAAgC,gBAA6R,SAA2G,sBAA2B,EAAiC,qBAAiI,SAA6I,yBAArC,EAAoC,wBAAiO,SAA6I,yBAArC,EAAoC,wBAAiO,SAAiJ,2BAAvC,EAAsC,0BAAqO,SAAiJ,2BAAvC,EAAsC,2CAAhlE,uFAAoE,6MAA0c,iFAA2D,6MAAwS,6MAA6W,6MAA6W,6MAAqX,gN,gCAAmzB,kUAA2D,gCAAU,cAArE,QAAuC,EAAmB,yBAA1D,QAAuC,EAAmB,0CAAC,qC,gCAArgB,qEAA4D,mDAAqB,kFAAiB,uDAAyB,qGAAoC,2DAA6B,gGAAgC,2CAAgC,2DAA6B,qY,kGAA0D,sB,oCAA1D,weAAgJ,+DAAiC,iKAA8E,2DAAsC,uDAA+B,mDAA2B,mDAAqB,kFAAiB,6CAA0B,mDAAqB,mFAAiB,uDAAyB,gGAA8B,2DAA6B,+FAA8B,6CAA8B,2DAA6B,4e,0aAA0I,sB,kCAA1I,ioBAAyK,uDAA+B,mDAA2B,mDAAqB,mFAAiB,uDAAyB,gGAA8B,2DAA6B,gGAA+B,6CAA+B,2DAA6B,4e,0aAA0I,sB,mCAA1I,ioBAA0K,uDAA+B,uDAAyB,gGAA8B,2DAA6B,gGAA+B,6CAA+B,2DAA6B,4e,0aAA0I,sB,mCAA1I,ioBAA0K,uDAA+B,mDAA2B,mDAAqB,0FAAwB,uDAAyB,sZ,oGAAiG,sB,iCAAjG,4eAAsJ,uDAAyB,2HAAsD,gCAAW,mDAA2B,mDAAqB,0FAAwB,uDAAyB,sZ,oGAAiG,sB,iCAAjG,4eAAsJ,uDAAyB,4HAAsD,gCAAW,mDAA2B,mDAAqB,2FAAwB,uDAAyB,2Z,sGAAmG,sB,mCAAnG,+eAA4J,uDAAyB,8HAAwD,gCAAW,mDAA2B,mDAAqB,2FAAwB,uDAAyB,2Z,sGAAmG,sB,mCAAnG,+eAA4J,uDAAyB,8HAAwD,qCAAoB,mDAA2B,mDAAqB,mFAAiB,+CAA4B,mDAAqB,oFAAiB,uDAAyB,iGAA8B,2DAA6B,qGAAmC,+CAAyC,2DAA6B,sf,ibAAmJ,sB,uCAAnJ,qoBAAuL,uDAA+B,mDAA2B,mDAAqB,2FAAwB,uDAAyB,2Z,sGAAmG,sB,mCAAnG,+eAA4J,uDAAyB,8HAAwD,+CAA+B,mDAA2B,mDAAqB,2FAAwB,uDAAyB,ia,sGAAsG,sB,sCAAtG,+eAAqK,uDAAyB,iIAA2D,+CAAkC,mDAA2B,gDAAiB,gCAAnvI,SAAgC,qBAA0B,EAAgC,oBAAuF,SAAQ,EAA8B,cAA2Z,SAAgE,mBAA0E,EAA8B,kBAAgR,SAAiE,oBAAyE,EAA+B,mBAA+M,SAAiE,oBAAyE,EAA+B,mBAAiI,SAA+H,kBAA9B,EAA6B,iBAAmN,SAA+H,kBAA9B,EAA6B,iBAAmN,UAAmI,oBAAhC,EAA+B,mBAAuN,UAAmI,oBAAhC,EAA+B,mBAA+b,UAAqG,wBAA8C,EAAmC,uBAAiI,UAAmI,oBAAhC,EAA+B,mBAA2O,UAAyI,uBAAnC,EAAkC,uCAAjnI,gFAA6D,6MAAqY,gFAAkL,iFAA2D,6MAA4X,kFAA4D,6MAA4T,kFAA4D,6MAA0S,6MAAiV,6MAAiV,qNAAyV,qNAAkU,qFAAyL,+FAAsE,qNAAuT,qNAA6O,qFAAgI,qNAAyP,2F,gCAAhqP,yFAAyC,+CAAiB,gEAAG,+BAAmB,+CAAiB,oIAA6O,+CAAiB,yFAAwB,mDAAqB,0FAAwB,uDAAyB,sY,oGAA6D,sB,yBAA7D,4eAA8H,uDAAyB,mHAA8C,6CAA4B,mDAA2B,+CAAuB,+CAAiB,qIAAg/E,+CAAiB,qIAA2hJ,4CAAa,gCAAzqP,QAA4B,WAAmD,oCAA6Q,SAA+G,UAAlD,EAAqB,SAAkN,SAAc,WAA0C,2BAAy8E,SAAc,WAA6C,+CAAhuG,QAAguG,YAAhuG,aAAgY,6MAAqM,2E,qEAF37C,2LAEgD,mCAAK,+GAA0C,uCAAS,sW,kFAAkC,iB,sBAAlC,sWAAsG,2CAAa,4FAA0B,+CAAiB,oHAA+C,mDAAuC,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,qIAA8O,2CAAa,qIAAgxP,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAwB,+CAA0B,+CAAiB,sJAAiG,6CAA4B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAAv+R,QAAwD,EAA4B,aAA0O,iFAAzD,SAAyD,GAAwJ,SAAwB,EAAe,SAAoN,UAAwB,EAAgB,4CAAzvB,qMAA6M,2EAA40Q,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,8DAAoK,mE,g2BCAh3Q,oEAAoC,mDAAqB,4FAA4B,2CAA+B,mDAAqB,ghB,sPAAkH,sB,gCAAlH,g4BAAsL,gDAAiB,gCAAvM,QAA+I,IAA/I,SAA2C,qBAAuE,EAA4B,gBAA9I,SAAwJ,IAAxJ,SAAqK,OAAgB,cAAzO,wEAAoD,4O,gCAAuO,4NAAiD,yCAA0B,cAA3E,QAAa,cAAc,cAAsB,8E,gCAAyD,6QAAyB,aAAoG,gDAAqB,6EAAgB,uDAAyB,qEAAQ,uCAAmB,iEAAI,uDAAyB,oEAAM,gCAAmB,mDAAyB,gDAAqB,8EAAgB,uDAAyB,sEAAQ,2CAAuB,kEAAI,uDAAyB,oEAAM,gCAAuB,mDAAyB,gDAAqB,8EAAgB,uDAAyB,sEAAQ,mCAAe,kEAAI,uDAAyB,oEAAM,gCAAgB,mDAAyB,gDAAqB,8EAAgB,uDAAyB,sEAAQ,wCAAoB,kEAAI,uDAAyB,oEAAM,+CAAyB,mDAAyB,6CAAiB,cAAzyB,IAAY,oGAAzB,QAAa,OAAyD,SAA7C,MAA4C,gCAAoL,qBAA4K,yBAAwK,qB,gCAAkU,2IAA6H,mDAAqB,kIAAiC,aAAoD,mDAAqB,mEAAM,2CAAgC,+CAAiB,oBAAnT,QAAyD,mBAAyB,SAAiG,wFAAjC,QAAiC,GAA+E,6E,qEAFxvE,wLAE6C,mCAAK,+GAA0C,uCAAS,sW,kFAAkC,iB,sBAAlC,sWAAsG,2CAAa,4FAA0B,+CAAiB,iHAA4C,6CAA8B,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,0FAAwB,+CAAiB,iEAAG,6CAAiC,+CAAiB,qIAA+V,+CAAiB,qIAAyF,+CAAiB,qIAAo0B,2CAAmB,2CAAa,2FAA0B,+CAAiB,qIAA4T,+CAAiB,sJAA6E,6CAA2B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAA53E,QAAwD,EAA4B,aAA8N,iFAAzD,SAAyD,GAAsP,UAAc,EAAqB,cAA6U,SAA4B,EAAoB,cAA0D,SAAwG,EAAoB,cAAmxB,UAAuG,EAAqB,+BAA7gE,qMAA0M,sEAA4S,0EAAqzD,kE,8uBCAjiE,0FAAuC,gF,gCAAwQ,wFAAwC,+CAAiB,6IAA4C,aAAoD,+CAAiB,sFAAsB,2CAA2B,2CAAa,oBAAnI,wFAA5C,QAA4C,GAA2F,wE,gCAAqH,oEAAgC,mDAAqB,gEAAG,2CAA+B,mDAAqB,8FAA6B,uDAAyB,oFAAoB,4CAA0B,uDAAyB,6c,0PAAkE,sB,wBAAlE,oqBAAgG,uDAAyB,2FAA0B,6CAAmD,mDAA2B,gDAAiB,gCAAlP,SAAuF,IAAvF,SAAoD,SAAc,EAAoB,yBAAvQ,mFAA8H,2EAAmD,2OAAmJ,uG,gCAAy1F,qFAAwF,uDAAyB,mJAAiF,UAA3D,c,2BAAtB,wBAAiF,mGAAqF,uDAAyB,mJAAkF,UAA5D,c,2BAAtB,wBAAkF,mGAAuF,mDAAqB,oBAA5S,8EAAgM,mF,gCAA4nC,kEAAiD,iN,gCAAmrB,kEAAiD,+DAAiC,wHAAmD,UAAnB,c,wCAAhC,wBAAmD,mEAAqC,wV,mJAAuB,sB,2CAAvB,kiBAAoI,+DAAsC,+DAAiC,0FAAuB,UAAnB,c,wCAAJ,wBAAuB,wGAAqF,+DAAiC,yFAAwB,mEAAqC,uT,oGAAuB,sB,iDAAvB,wgBAA4J,+DAAsC,+DAAiC,yFAAwB,mEAAqC,uT,oGAAuB,sB,4CAAvB,wgBAAkJ,+DAAsC,4DAA6B,cAA14B,QAA+C,kEAAxB,EAAuB,2BAAuW,SAA6F,yEAAuC,EAAuB,0BAApI,EAA6B,iCAA4O,SAAgD,oEAA0E,EAAuB,0BAA1H,EAAwB,6CAApuB,qMAAkO,mCAAmL,6MAAgS,gN,gCAAz6C,kHAA2F,uDAAyB,qEAAO,2DAA6B,kEAAI,+DAAiC,iEAAI,8BAAW,+DAAiC,iEAAI,6CAAsB,+DAAiC,yGAAoC,6CAA+B,+DAAiC,yGAAoC,6CAA0B,2DAAkC,uDAAiC,uDAAyB,qEAAO,2DAA6B,iKAAyjC,uDAAiC,oDAAqB,cAA/mC,SAA+mC,YAA/jC,8BAAzY,mFAA2F,4FAAoG,0F,gCAA3oB,mEAA4C,mDAAqB,oIAAqI,mDAAqB,oIAAisD,gDAAiB,gCAA52D,SAAK,kBAA2C,oBAA0G,QAAiD,iBAAyC,4B,gCAAjgK,0FAAyC,+CAAiB,oIAA0e,+CAAiB,iEAAI,uFAA+D,uSAAkC,cAA8I,uDAAyB,2HAA0D,mDAAyB,+CAAsB,+CAAiB,gHAA8C,mDAAqB,yc,6VAA2I,sB,sBAA3I,gsBAA8J,mDAAqB,wHAAmD,iGAAmE,qEAAO,6CAA6B,mDAA6B,+CAAuB,+CAAiB,gHAA8C,mDAAqB,4c,6VAAiJ,sB,sBAAjJ,gsBAAoK,mDAAqB,2HAAsD,iGAAsE,qEAAO,6CAAgC,mDAA6B,+CAAuB,+CAAiB,gHAA8C,mDAAqB,0c,6VAA6I,sB,sBAA7I,gsBAAgK,mDAAqB,yHAAoD,iGAAoE,qEAAO,6CAA8B,mDAA6B,+CAAuB,+CAAiB,gHAA8C,mDAAqB,0c,6VAA6I,sB,sBAA7I,gsBAAgK,mDAAqB,yHAAoD,iGAAoE,qEAAO,6CAA8B,mDAA6B,+CAAuB,+CAAiB,0FAAwB,mDAAqB,mFAAkB,iGAA4E,6SAAkC,cAAsJ,2DAA6B,4HAA0D,uDAA6B,mDAA2B,mDAAqB,sIAAof,+CAAsB,+CAAiB,4OAAwB,wBAA4C,mDAAqB,2FAAwB,uDAAyB,qd,mWAAkH,sB,wBAAlH,osBAAuI,uDAAyB,sHAAgD,uGAA6F,mDAA2B,mDAAqB,2FAAwB,uDAAyB,+d,mWAA4H,sB,wBAA5H,osBAAiJ,uDAAyB,2HAAqD,uGAAwG,mDAA2B,+CAAuB,+CAAiB,sIAA47D,4CAAa,gCAA3lN,SAAc,EAAiB,UAAikB,2FAAlC,QAAkC,GAAoW,SAA6C,WAA0D,EAAmC,2BAA1I,SAA6C,WAA8F,EAAkB,MAAwT,SAA6C,WAA6D,EAAsC,8BAAhJ,SAA6C,WAAoG,EAAkB,MAAiU,SAA6C,WAA2D,EAAoC,4BAA5I,SAA6C,WAAgG,EAAkB,MAA2T,SAA6C,WAA2D,EAAoC,4BAA5I,SAA6C,WAAgG,EAAkB,MAAqa,4FAAlC,SAAkC,GAA0T,UAAqB,wCAAkE,oBAAyc,IAAmB,mCAAxB,UAAK,aAAmB,GAAkH,UAA6C,SAA6B,OAA1E,UAA6C,SAAqE,EAAoB,QAAwQ,UAA6C,SAAkC,YAA/E,UAA6C,SAA+E,EAAoB,QAA0P,UAAc,0BAA6B,cAA9rI,sEAAqc,6MAAsO,qEAA0E,yEAAqK,6MAA+O,wEAA6E,4EAAwK,6MAAyO,sEAA2E,0EAAsK,6MAAyO,sEAA2E,0EAAkK,8EAA6kC,qNAAgN,sFAA8L,qNAA+N,oG,gCAAqoF,4KAAqP,UAApN,c,sBAAjC,qIAA2G,YAA3G,wHAAqP,uDAAyB,wIAAyF,uDAAyB,6JAAuG,aAAoD,oDAAqB,gCAArc,mFAA3G,QAA2G,GAA3G,QAAsN,EAA8B,gCAApP,QAA+J,YAA8B,SAAiF,QAAqC,YAA4B,SAA8F,mBAA6B,QAA6B,oFAAvG,QAA6C,EAA0D,M,qEAFtiR,0LAE+C,mCAAK,wHAAmD,uCAAS,sW,kFAAkC,iB,sBAAlC,sWAAsG,2CAAa,4FAA0B,+CAAiB,mHAA8C,4EAAmD,qIAAuD,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,qIAA8O,2CAAa,qIAA2pN,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAwB,+CAA0B,+CAAiB,sJAAiG,6CAA4B,+CAAiB,sFAAqB,mDAAqB,qIAAyjB,+CAAuB,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAArlR,QAAwD,EAA4B,aAA2K,SAA0B,EAAY,MAAiH,iFAAzD,SAAyD,GAAwJ,SAAwB,EAAe,SAAoN,UAAwB,EAAgB,SAA8nO,SAA8I,EAAgB,6CAA7mQ,qMAA4M,kBAAgzO,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,8DAAoK,mE,i5BCApoP,0FAAuC,gF,qEAF3Y,0LAE+C,mCAAK,+GAA0C,uCAAS,gW,kFAAkC,iB,sBAAlC,8aAAqF,2CAAa,4FAA0B,+CAAiB,mHAA8C,yFAAkE,qIAAuD,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,0FAAwB,+CAAiB,iEAAG,yFAAuF,yKAAgG,uEAAmD,+CAAqB,+CAAiB,iEAAG,oEAAM,gCAA0B,+CAAiB,0FAAwB,mDAAqB,gZ,oGAA8G,sB,8BAA9G,4eAAyI,mDAAqB,wHAAmD,6FAA0F,+CAAuB,2CAAmB,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAA2B,+CAA0B,+CAAiB,sJAAiG,6CAA4B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAAvyD,SAAwD,EAA4B,aAAyK,SAA0B,EAAY,MAAiH,iFAAzD,SAAyD,GAAqjB,SAAkE,eAA4C,EAA0B,iDAAjlC,qMAA2L,qEAA6Z,0FAAuL,mEAAkG,wBAAwF,6MAAiN,iFAA4L,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,iEAAuK,mE,u3BCAx9C,0FAAuC,gF,gCAAwQ,wFAAwC,+CAAiB,6IAA4C,aAAoD,+CAAiB,sFAAsB,2CAA2B,2CAAa,oBAAnI,wFAA5C,QAA4C,GAA2F,wE,gCAA6K,kEAAuC,6L,gCAA8N,kEAA4C,2DAA6B,wHAAmD,UAAnB,c,wCAAhC,wBAAmD,+DAAiC,wV,mJAAuB,sB,2CAAvB,kiBAAwF,2DAAkC,2DAA6B,0FAAuB,UAAnB,c,wCAAJ,wBAAuB,gGAA6E,wDAAyB,cAApR,QAA+C,8DAAxB,EAAuB,4CAA9C,qMAA8K,sC,gCAAjd,iHAAiF,mDAAqB,oEAAO,uDAAyB,gKAAsb,mDAA6B,gDAAiB,cAApe,QAAoe,YAAzb,gB,gCAAla,yFAAyC,+CAAiB,gEAAG,2CAAoC,+CAAiB,oIAA8G,+CAAiB,qIAAknB,4CAAa,gCAA9vB,SAAK,aAAiC,eAAyF,SAAiD,YAA+B,gCAApQ,oF,qEAF38B,0LAE+C,mCAAK,+GAA0C,uCAAS,gW,kFAAkC,iB,sBAAlC,8aAAqF,2CAAa,4FAA0B,+CAAiB,mHAA8C,yFAAkE,qIAAuD,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,qIAA8O,2CAAa,qIAAs3B,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAwB,+CAA0B,+CAAiB,sJAAiG,6CAA4B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAAnqE,SAAwD,EAA4B,aAAyK,SAA0B,EAAY,MAAiH,iFAAzD,SAAyD,GAAwJ,SAAwB,EAAe,SAAoN,UAAwB,EAAgB,0BAA/0B,qMAA2L,qEAA0hD,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,8DAAoK,mE,iyBCA7nD,oGAA6D,mDAAqB,0FAA0B,uDAAyB,iL,oJAA6C,aAAyF,uDAAyB,0FAA0B,4CAAkC,mDAA2B,mDAAqB,sFAAqB,uDAAyB,sHAA6H,UAA3B,c,gDAAlG,sIAA6B,cAAgG,2DAA6B,yHAAwD,uDAAkC,mDAA2B,gDAAiB,cAAnQ,sGAA7B,SAA6B,MAAwC,cAAjV,uDAAwC,6BAArF,QAA6C,GAA4I,wG,gCAA9Y,wGAA+D,+CAAiB,gKAAmuB,4CAAa,cAAhvB,QAAgvB,YAAprB,iB,gCAAssB,wFAAgD,iL,yIAF72C,0LAE+C,mCAAK,+GAA0C,uCAAS,4FAA2B,2CAAa,2FAA0B,+CAAiB,mHAA8C,6CAAiC,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,qIAAq0B,2CAAa,qIAAkH,2CAAa,4FAA0B,+CAAiB,sJAA6E,qFAAiE,+CAAiB,sFAAqB,mDAAqB,kJAAiI,UAA3G,c,qBAAtB,sIAA+F,cAAkC,uDAAyB,6HAA4D,mDAA8B,+CAAuB,2CAAmB,uCAAe,mCAAW,+BAAO,gCAAC,gCAA7pD,6EAAzD,SAAyD,GAAwJ,SAAwC,EAAsB,gBAAoxB,UAAwB,EAAuB,gBAAma,iFAA/F,SAA+F,MAAiC,cAAxkD,yEAA40C,kE,w4BCFpjD,yLAE8C,mCAAK,+GAA0C,uCAAS,sW,kFAAkC,iB,sBAAlC,sWAAsG,2CAAa,4FAA0B,+CAAiB,kHAA6C,6CAA4B,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,0FAAwB,+CAAiB,iEAAG,6CAAwE,+CAAiB,8NAA4B,0CAA4C,+CAAiB,6FAA4B,6CAA+B,+CAAiB,ihB,0PAA8G,sB,gCAA9G,k4BAAkL,2CAAmB,2CAAa,4FAA0B,+CAAiB,2IAAkF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAA8B,+CAA0B,+CAAiB,sJAA6E,6CAA2B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAA96C,QAAwD,EAA4B,aAA6N,iFAAzD,SAAyD,GAA6R,SAAa,WAAwJ,SAA2I,IAA3I,SAA2C,qBAAmE,EAA4B,gBAA1I,SAAoJ,IAApJ,SAAiK,OAAgB,gCAAp6B,qMAA2M,oEAA0S,6GAAqH,2EAAyF,oEAAgD,2OAA6P,SAAwD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,oEAAsJ,kE,4vBCAjnC,oEAAsB,uF,gCAA+Q,wFAAwE,mL,gCAAqgB,kUAAyD,gCAAU,cAAnE,QAAwC,EAAgB,sBAAxD,QAAwC,EAAgB,uCAAC,qC,gCAAwL,4FAAsE,uDAAyB,mJAAiF,UAA3D,c,2BAAtB,wBAAiF,mGAAqF,uDAAyB,mJAAkF,UAA5D,c,2BAAtB,wBAAkF,mGAAuF,mDAAqB,oBAA5S,8EAAgM,mF,gCAA0J,kEAAiD,kM,gCAA6O,0FAAoE,UAAnB,c,wCAAjD,wBAAoE,2DAA6B,gGAAgC,+DAAiC,wV,mJAAuB,sB,2CAAvB,kiBAAgI,2DAAkC,2DAA6B,kEAAI,gGAA6E,wDAAyB,cAAzS,QAA+C,kEAAxB,EAAuB,4CAA9C,qMAAmM,sC,gCAArf,iHAA2F,mDAAqB,oEAAO,uDAAyB,gKAAgd,mDAA6B,gDAAiB,cAA9f,QAA8f,YAA9c,qB,gCAA7/C,yFAAsE,+CAAiB,gEAAG,2CAA0B,+CAAiB,yFAAwB,mDAAqB,0FAA0B,4CAAiC,mDAAqB,2X,kGAAgD,sB,gCAA0E,e,iCAA1H,weAAyJ,uDAAyB,iKAA4E,mDAA8B,+CAAuB,+CAAiB,qFAAoB,mDAAqB,kEAAI,6CAA6B,mDAAqB,qIAAke,+CAAuB,+CAAiB,qIAA6H,+CAAiB,qIAAspB,4CAAa,gCAA9tD,SAA0B,iBAAsB,EAA4B,gBAAsG,SAAQ,EAA+B,eAA0M,SAA4B,iBAAyC,oBAAqc,UAAK,kBAA2C,oBAA8F,SAAiD,iBAAyC,qCAA7zC,uEAAkH,2EAAsD,6MAAiX,+E,gCAA26C,kSAA0H,uBAAiF,mDAAqB,kIAAiC,aAAoD,mDAAqB,mEAAM,2CAAwB,gDAAiB,cAAnW,IAAoG,6BAAkC,SAA5J,QAAsB,oCAAoG,MAAkC,gCAA5J,QAAgE,+BAAqC,SAA4J,wFAAjC,QAAiC,GAA+E,qE,gCAAmE,kN,+NAAmJ,oFAAkE,cAArN,QAAY,oCAA0C,cAAtD,6CAAmJ,gF,qEAFp1G,oLAEyC,mCAAK,+GAA0C,uCAAS,gW,kFAAkC,iB,sBAAlC,8aAAqF,2CAAa,4FAA0B,+CAAiB,6GAAwC,yFAA4D,qIAA6C,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,qIAA4I,2CAAa,qIAAs+D,2CAAa,4FAA0B,+CAAiB,qIAAkY,+CAAiB,qIAAyN,+CAAiB,sJAAiG,6CAA4B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAA7/G,SAAwD,EAA4B,aAA6J,SAAO,EAAc,QAAwH,iFAAzD,SAAyD,GAAwJ,UAAwB,oBAA+C,sBAAkF,SAAwB,mBAA6C,sBAAy9D,SAA6J,mBAA6C,sBAAyM,UAAmG,oBAA+C,uCAAlvG,qMAAqL,+DAAsvG,mE,m1BCA96F,+GAAiI,UAA1D,iB,qBAAvE,kRAAiI,4CAAa,gCAA9I,QAAyD,EAAa,KAA/C,EAAiC,wB,gCAAwR,oEAA+B,uDAAyB,2HAAmD,uDAAyB,gEAAG,2CAAyC,uDAAyB,gEAAG,2DAA6B,sEAAQ,gDAAwD,uDAA6B,mDAAqB,oBAApN,6FAA0G,0G,gCAA8I,oEAA8B,uDAAyB,wRAA4B,aAAoD,wDAA6B,6DAAG,2CAA4C,iGAA8G,uDAAyB,4HAAmD,uDAAyB,iEAAG,6CAA4C,oDAAqB,cAAta,IAAe,2FAA5B,QAAa,UAA4C,kBAA7B,MAA4B,cAAwD,gGAA4C,mGAAsN,sG,gCAA4rC,gEAAoB,uDAAyB,qEAAQ,8CAAqD,mDAAqB,oBAA1E,oG,gCAAmG,iEAAoB,W,gCAA2P,oEAA+B,uDAAyB,mFAAmB,8CAAqD,uDAAyB,ke,sPAAgE,sB,uBAAhE,6xBAA0I,oDAAqB,gCAA/J,QAAoF,IAApF,SAA8B,QAAkC,EAAmB,OAAnF,SAAyH,OAAgB,cAAvN,kGAA8E,4O,gCAA+d,mEAAuB,6I,gCAAmD,mEAAsB,8I,gCAAhwG,4U,kFAAY,iB,sBAAZ,sWAA+F,+CAAiB,yFAAwB,mDAAqB,oIAA0W,mDAAqB,qIAAyf,mDAAqB,oFAAkB,uDAAyB,kEAAI,2DAA6B,8FAAiC,4EAAqD,yKAAgI,kCAAS,uDAA8B,uDAAyB,kEAAI,2DAA6B,gGAAmC,4EAAyD,gLAAuI,kCAAS,uDAA8B,uDAAyB,kEAAI,2DAA6B,gGAAmC,4EAAyD,yKAAgI,oDAA2B,uDAA8B,mDAA0B,mDAAqB,iEAAG,6CAAoD,mDAAqB,qIAAmI,mDAAqB,qIAAoB,mDAAqB,yOAAuB,uBAA8B,uDAAyB,iFAAyB,kEAAI,uDAAyB,kLAAM,cAAgC,gCAAc,mDAAyB,mDAAqB,qIAAuU,+CAAuB,+CAAiB,4FAA0B,mDAAqB,6IAAmF,uDAAyB,mIAAiC,cAAoD,uDAAyB,qIAAiD,uDAAyB,qIAAiD,mDAA8B,mDAAqB,sJAAqG,6CAA2B,+CAAuB,4CAAa,gCAAl/G,QAAkC,EAA4B,aAA+F,SAAc,EAAgB,SAAiW,SAAc,EAAe,SAAwkD,UAAG,EAAgB,SAAqI,SAAI,EAAe,SAAyB,IAAoB,aAA6B,SAApD,SAAG,cAAoB,GAAmH,sFAAN,SAAM,GAA4F,UAAc,EAAgB,SAA0lB,UAAM,EAAgB,SAAoD,SAAM,EAAe,4CAA/vG,qMAAupC,2EAAyT,+EAAoU,+EAAoS,oGAAob,gBAA0d,SAAyD,YAAyB,SAA2D,0FAAjC,SAAiC,GAAgW,yE,qEAFpsI,+LAEoD,mCAAK,+GAA0C,uCAAS,4FAA2B,2CAAa,2FAA0B,+CAAiB,uHAAmD,yFAAmE,qEAAO,6CAA0C,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,qIAAsK,2CAAa,qIAAy/G,uCAAe,mCAAW,+BAAO,gCAAC,gCAAt2H,6EAAzD,SAAyD,GAAwJ,UAAiH,EAAe,QAAmD,SAAgF,EAAc,yBAA7nB,sEAA0E,kF,u5BCAkP,+GAAiI,UAA1D,iB,qBAAvE,kRAAiI,4CAAa,gCAA9I,QAAyD,EAAa,KAA/C,EAAiC,wB,gCAA2T,oEAA8B,uDAAyB,wRAA4B,aAAoD,gGAA4G,uDAAyB,gIAAwD,uDAAyB,sEAAQ,8CAAiD,2DAAkC,kEAAI,uDAAyB,sEAAQ,8CAA4C,2DAAkC,kEAAI,uDAAyB,sEAAQ,8CAA8C,wDAA8B,cAAxlB,IAAe,2FAA5B,QAAa,UAA4C,kBAA7B,MAA4B,gCAAwB,4FAA8N,kGAAiD,iBAAuE,6FAA4C,iBAAuE,+FAA8C,oB,gCAAkE,oEAA+B,uDAAyB,gIAAwD,uDAAyB,gEAAG,2CAAiC,uDAAyB,yFAAwB,2DAA6B,mFAAkB,6CAA+C,2DAA6B,2e,0PAAwE,sB,sBAAxE,+xBAAqJ,uDAA+B,uDAAyB,0FAAwB,2DAA6B,mFAAkB,6CAA0C,2DAA6B,0gB,0PAAuE,sB,sBAAvE,+xBAAgL,uDAA+B,uDAAyB,0FAAwB,2DAA6B,mFAAkB,6CAA4C,2DAA6B,qf,0PAA8D,sB,sBAA9D,8xBAAiH,cAAqF,uDAA+B,oDAAqB,gCAA78B,SAA2H,IAA3H,SAA6B,iBAA2C,EAAkB,MAA1F,SAAoI,IAAuN,SAA0H,IAA1H,SAAiC,YAAsC,EAAkB,MAAzF,SAAmI,IAAqP,SAA4K,IAA5K,SAA6B,OAAiC,EAAkB,MAAhF,SAAqL,OAAgB,cAArmC,qFAAiI,kGAA4E,2OAAoR,6FAAuE,2OAA+S,+FAA0L,yHAAjH,SAAiH,EAAjH,qO,gCAA0jB,mEAAuB,6I,gCAAmD,mEAAsB,8I,gCAAtkF,mW,kFAAY,iB,sBAAZ,sWAAkI,+CAAiB,wFAAwB,mDAAqB,oIAA2qB,mDAAqB,qIAAqzC,+CAAuB,+CAAiB,4FAA0B,mDAAqB,6IAAmF,uDAAyB,mIAAiC,cAAoD,uDAAyB,qIAAiD,uDAAyB,qIAAiD,mDAA8B,mDAAqB,sJAAqG,6CAA2B,+CAAuB,4CAAa,gCAAxzF,QAAkC,EAA4B,aAAkI,QAAc,EAAe,SAAmqB,UAAc,EAAgB,SAAwkD,UAAM,EAAgB,SAAoD,SAAM,EAAe,0BAArkF,qMAA4wE,SAAyD,YAAyB,SAA2D,0FAAjC,SAAiC,GAAgW,yE,qEAF19G,qLAE0C,mCAAK,+GAA0C,uCAAS,4FAA2B,2CAAa,2FAA0B,+CAAiB,gHAA4C,yFAAmE,qEAAO,gCAAW,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,qIAAsK,2CAAa,qIAA+zF,uCAAe,mCAAW,+BAAO,gCAAC,gCAA5qG,6EAAzD,SAAyD,GAAwJ,UAAiH,EAAe,QAAmD,SAAgF,EAAc,yBAA9lB,yE,2yBCAkW,+GAAiI,UAA1D,iB,qBAAvE,kRAAiI,4CAAa,gCAA9I,QAAyD,EAAa,KAA/C,EAAiC,wB,gCAAwR,oEAA8B,uDAAyB,wRAA4B,aAAoD,gGAA4G,uDAAyB,qEAAQ,6CAA4B,wDAA+B,cAA3Q,IAAe,2FAA5B,QAAa,UAA4C,kBAA7B,MAA4B,gCAAwB,4FAA6I,2EAA4B,qB,gCAA4wC,gGAAkD,iQ,gCAA3vC,oEAA+B,uDAAyB,kFAAkB,2DAA6B,mFAAmB,2CAAsC,2DAA6B,mIAA2D,uDAA6B,uDAAyB,0FAAwB,2DAA6B,oFAAmB,gDAAgD,2DAA6B,8f,0PAAgE,sB,uBAAhE,+xBAAwK,uDAA+B,uDAAyB,2FAAyB,2DAA6B,+MAAmP,UAAjH,c,yBAAlI,gJAAmP,+DAAiC,mIAAiC,cAAoD,+DAAiC,oEAAM,6CAA6B,2DAAsC,2DAA6B,qIAAyK,uDAA+B,uDAAyB,0FAAwB,2DAA6B,oFAAmB,gDAA+C,2DAA6B,me,0PAAgE,sB,uBAAhE,+xBAA8I,uDAA+B,oDAAqB,gCAA7zC,SAAoF,IAApF,SAA8B,QAAkC,EAAmB,OAAnF,SAA+I,SAAuI,SAAwL,EAA6B,cAA2R,SAAgC,EAAiB,WAAoU,SAAoF,IAApF,SAA8B,QAAkC,EAAmB,OAAnF,SAA6H,OAAgB,cAAjlD,uFAA4P,gGAA6E,2OAAsR,SAAsN,aAA4B,SAAmE,iGAAjC,SAAiC,GAA2F,iFAAyY,+FAA4E,8O,gCAAkgB,mEAAuB,6I,gCAAmD,mEAAsB,8I,gCAAhrF,4U,kFAAY,iB,sBAAZ,sWAA+F,+CAAiB,wFAAwB,mDAAqB,oIAA8V,mDAAqB,qIAA+wD,+CAAuB,+CAAiB,4FAA0B,mDAAqB,6IAAmF,uDAAyB,mIAAiC,cAAoD,uDAAyB,qIAAiD,uDAAyB,qIAAiD,mDAA8B,mDAAqB,sJAAqG,6CAA2B,+CAAuB,4CAAa,gCAAl6F,QAAkC,EAA4B,aAA+F,QAAc,EAAe,SAAsV,UAAc,EAAgB,SAAkiE,UAAM,EAAgB,SAAoD,SAAM,EAAe,0BAA/qF,qMAAs3E,SAAyD,YAAyB,SAA2D,0FAAjC,SAAiC,GAAgW,yE,qEAFzlH,uLAE4C,mCAAK,+GAA0C,uCAAS,4FAA2B,2CAAa,2FAA0B,+CAAiB,+GAA2C,yFAAmE,qEAAO,6CAA+B,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,qIAAsK,2CAAa,qIAAy6F,uCAAe,mCAAW,+BAAO,gCAAC,gCAAtxG,6EAAzD,SAAyD,GAAwJ,UAAiH,EAAe,QAAmD,SAAgF,EAAc,yBAAlnB,sEAA0E,uE,yvBCA8P,mM,kCAAqD,c,yCAArD,iFAA4I,mDAAqB,4GAA8E,mDAAqB,iEAAI,+BAAe,uEAAuD,oBAA7K,QAAK,sDAAkG,kCAAe,4C,qEAFj0B,6LAEkD,mCAAK,+GAA0C,uCAAS,4FAA2B,2CAAa,2FAA0B,+CAAiB,qHAAiD,6CAAgC,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,2GAAyC,+CAAiB,iKAAkV,+CAAiB,oM,mCAAwE,c,uBAAxE,kFAA4F,mDAAqB,kEAAI,6CAAmC,qFAAuE,2CAAmB,2CAAa,2FAA0B,+CAAiB,sJAA6E,6CAA2B,2CAAmB,uCAAe,mCAAW,+BAAO,gCAAC,gCAA5/B,6EAAzD,SAAyD,GAAkN,SAAyB,EAA2B,4BAAhX,wEAAoxB,2EAAmC,0EAA+N,kE,6zBCAprB,+GAAiI,UAA1D,iB,qBAAvE,kRAAiI,4CAAa,gCAA9I,QAAyD,EAAa,KAA/C,EAAiC,wB,gCAAkO,mEAA2B,uDAAyB,gEAAG,4CAA2C,uDAAyB,sFAAsB,+BAAe,mDAAqB,sCAA9H,0FAA0F,mB,gCAAwE,mEAA4B,8M,gCAAwL,0IAAqG,UAAvD,c,qBAA9C,wBAAqG,gJ,gCAAznB,oEAA6B,+CAAiB,oGAAoC,mDAAqB,oIAAoM,mDAAqB,oIAA6H,+CAAuB,+CAAiB,2FAA0B,mDAAqB,qIAAoI,mDAAqB,sJAAqG,6CAA2B,+CAAuB,4CAAa,gCAA1uB,QAAc,EAAY,MAA+L,SAAc,EAAa,MAAyL,SAAwF,EAAY,uBAA0J,yE,qEAFrhD,0LAE+C,mCAAK,+GAA0C,uCAAS,4FAA2B,2CAAa,2FAA0B,+CAAiB,kHAA8C,yFAAmE,qEAAO,6CAAsC,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,qIAAsK,2CAAa,qIAAg2B,uCAAe,mCAAW,+BAAO,gCAAC,gCAA7sC,6EAAzD,SAAyD,GAAwJ,UAAiH,EAAe,QAAmD,SAAc,EAAc,yBAAvjB,sEAA0E,8E,kvBCAuQ,+GAAiI,UAA1D,iB,qBAAvE,kRAAiI,4CAAa,gCAA9I,QAAyD,EAAa,KAA/C,EAAiC,wB,gCAAwR,wRAA4B,aAAoE,yFAAsF,cAAzK,IAAe,2FAA5B,QAAa,UAA4C,kBAA7B,MAA4B,cAAwC,mG,gCAAwsB,qEAAyC,8K,gCAAkE,qEAAuC,+F,gCAA6I,mEAAoC,mEAAqC,0JAAoH,aAAwC,mEAAqC,sFAAsB,2CAAkC,+DAAiC,oBAAtK,oHAApH,QAAoH,GAAmG,oG,gCAAmH,mEAAqC,mEAAqC,2IAAqG,aAAiC,mEAAqC,sFAAsB,2CAA2B,+DAAiC,oBAAxJ,6GAArG,QAAqG,GAA4F,6F,gCAA3vB,mEAA4D,+DAAiC,oIAAkX,+DAAiC,oIAAsV,4DAA6B,cAAtwB,QAAc,EAAqB,sCAAgX,SAAc,EAAsB,8C,gCAA0d,mJAAkD,8IAAlD,QAAkD,M,gCAAjJ,mEAA8D,+DAAiC,oIAAuK,kGAAmE,gJ,kCAAyB,c,gDAAzB,iFAA6C,2CAAuB,4DAA6B,cAA3U,QAAmH,mBAA4B,0BAAwI,qF,gCAAznD,yMAAyF,2DAA6B,2FAA+B,2DAA6B,oIAA8E,2DAA6B,oIAA0D,2DAA6B,qIAAk3B,2DAA6B,qIAAyb,wDAAyB,gCAArtD,QAAwD,EAAgC,iCAA0F,SAAQ,mCAAgC,wBAAmE,QAAQ,kCAA8B,wBAAiD,SAAc,6CAA6C,SAAo1B,SAAc,2BAA+C,sC,gCAA8jD,mEAAyC,uDAAyB,mIAAmE,mDAAqB,W,gCAAuG,mEAAmC,2DAA6B,mIAAmE,4N,gCAAiI,mEAAkC,2DAA6B,kIAAkE,2N,gCAAgI,mEAA+B,2DAA6B,4HAA4D,wO,gCAAhsB,oEAA0C,uDAAyB,oIAA2O,uDAAyB,oIAAwO,uDAAyB,oIAA4O,oDAAqB,gCAAtwB,QAAc,EAAoB,cAAkO,QAAc,EAAmB,aAAgO,QAAc,EAAgB,kB,gCAA0b,kIAAsD,gIAAtD,QAAsD,M,gCAAyG,mEAA4B,2I,gCAA2E,2LAAmO,UAA5D,c,uBAAvK,+IAAmO,uDAAyB,kIAAiC,aAAoD,uDAAyB,mEAAM,2CAAkC,oDAAqB,cAAva,QAAua,YAAjS,iCAAtI,QAAuI,YAA+B,SAAuH,+FAAjC,QAAiC,GAAmF,sF,gCAAr+K,6U,kFAAY,iB,sBAAZ,sWAA+F,+CAAiB,yFAAwB,mDAAqB,oIAAoM,mDAAqB,+NAA4B,oDAAyB,8DAAG,6CAAoC,oDAAyB,+EAAiB,2DAA6B,kEAAI,6CAAwC,uDAA8B,gDAAmC,mDAAqB,iIAAwD,mDAAqB,mFAAkB,uDAAyB,iKAA0tD,mDAA0B,mDAAqB,kEAAI,mDAAqB,iEAAG,8CAAiC,mDAAqB,mEAAI,uDAAyB,kEAAI,6CAAsC,uDAAyB,kEAAI,6CAA2C,uDAAyB,kEAAI,6CAAyC,uDAAyB,kEAAI,6CAAsC,mDAA0B,mDAAqB,mFAAiB,uDAAyB,gGAA8B,2DAA6B,mFAAkB,6CAAyB,2DAA6B,wa,0PAA8D,sB,sBAA9D,shBAA8I,uDAA+B,mDAA2B,mDAAqB,sLAAkP,UAA5N,c,uBAAtB,gJAAkP,6FAA2E,mDAAqB,qIAAyK,mDAAqB,qIAAw1B,+CAAuB,+CAAiB,4FAA0B,mDAAqB,iIAAwF,uDAAyB,qIAAsI,uDAAyB,qIAAoD,mDAA8B,mDAAqB,sIAAgb,mDAAqB,uJAAqG,+CAA2B,+CAAuB,4CAAa,gCAA9tL,QAAkC,EAA4B,aAA+F,QAAgF,EAAe,SAA0H,SAAa,WAAgZ,SAAI,EAAqC,MAAsyE,SAA6B,QAAoF,EAA4B,eAA/E,EAAkB,MAA6I,SAAgN,EAAiC,kBAAiG,SAAc,aAA0B,SAAsJ,UAAc,aAA2B,SAAu/B,SAAiC,YAAoB,SAA0G,UAAM,YAAqB,SAA4E,UAAmN,EAAe,4CAAv1K,qMAA8a,oFAA+G,uFAA2hE,gFAAuF,qFAAmE,0FAAwE,wFAAsE,qFAA4M,qEAAsD,6MAA6N,SAAyG,yCAAkE,gBAAuE,wEAA6sC,SAA8C,wBAAyC,aAA00B,4E,qEAF34M,qLAE0C,mCAAK,wHAAmD,uCAAS,4FAA2B,2CAAa,2FAA0B,+CAAiB,6GAAyC,yFAAmE,qEAAO,qCAAgB,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,qIAAsK,2CAAa,qIAAquL,uCAAe,mCAAW,+BAAO,gCAAC,gCAAllM,6EAAzD,SAAyD,GAAwJ,UAAiH,EAAe,QAAmD,SAAgF,EAAc,yBAAnmB,yE,k0BCAyV,+GAAiI,UAA1D,iB,qBAAvE,kRAAiI,4CAAa,gCAA9I,QAAyD,EAAa,KAA/C,EAAiC,wB,gCAA2T,wRAA4B,aAAoE,yFAAsF,cAAzK,IAAe,2FAA5B,QAAa,UAA4C,kBAA7B,MAA4B,cAAwC,mG,gCAA4sC,kc,sPAAkH,sB,8CAAlH,knBAA0M,cAA1M,QAAyC,0DAAyE,EAAmB,8BAArI,QAA6J,OAAgB,cAA7K,QAAO,0DAAP,gM,gCAAuO,qFAA0C,+DAAiC,mFAAmB,+BAAwB,+DAAiC,2JAA0J,UAA3F,c,gDAA/D,qIAAuH,aAAmC,mEAAqC,2HAA2D,+DAA0C,4DAA6B,cAA1M,qGAAvH,QAAuH,MAAkC,cAAlN,mD,gCAAlgB,+FAAoE,2DAA6B,iFAA0B,2CAAqC,2DAA6B,oIAA0M,2DAA6B,qIAA8d,wDAAyB,cAA9tB,SAAsI,EAAsB,+BAA2E,SAAoB,EAAqB,gDAA5W,QAAO,oDAAmB,kG,gCAA4qD,2LAAmO,UAA5D,c,uBAAvK,+IAAmO,uDAAyB,kIAAiC,aAAoD,uDAAyB,mEAAM,2CAAkC,oDAAqB,cAAva,QAAua,YAAjS,iCAAtI,QAAuI,YAA+B,SAAuH,+FAAjC,QAAiC,GAAmF,sF,gCAAt8G,oW,kFAAY,iB,sBAAZ,sWAAkI,+CAAiB,yFAAwB,mDAAqB,oIAAoM,mDAAqB,+NAA4B,oDAAyB,8DAAG,6CAAwC,oDAAyB,+EAAiB,2DAA6B,kEAAI,6CAA4C,2DAA6B,kEAAI,6CAA+C,uDAA8B,gDAAmC,mDAAqB,4HAAmD,mDAAqB,iEAAG,8CAAqC,mDAAqB,mEAAI,uDAAyB,kEAAI,6CAAwC,uDAAyB,kEAAI,6CAA2C,uDAAyB,kEAAI,6CAA6C,uDAAyB,kEAAI,6CAA0C,mDAA0B,mDAAqB,kEAAI,mDAAqB,kFAAiB,uDAAyB,iKAAi6B,mDAA2B,mDAAqB,8FAA6B,6CAAgC,mDAAqB,0FAAwB,uDAAyB,8X,oGAAoE,sB,qBAApE,4eAAsF,uDAAyB,+GAA0C,6CAAgD,mDAA2B,mDAAqB,qGAAoC,6CAAoD,+CAAuB,+CAAiB,4FAA0B,mDAAqB,4IAAmF,uDAAyB,mIAAiC,cAAoD,uDAAyB,oEAAM,6CAAwB,mDAA8B,mDAAqB,qIAAgb,mDAAqB,uJAAqG,+CAA2B,+CAAuB,4CAAa,gCAA/rH,QAAkC,EAA4B,aAAkI,QAAgF,EAAe,SAA0H,SAAa,WAAy4B,SAA8B,EAAqC,MAAihC,SAAyD,MAAW,EAAiB,KAA8nB,SAAmN,EAAe,0BAAxzG,qMAAid,wFAAmH,2FAA6E,8FAAgN,oFAA2F,uFAAqE,0FAAwE,4FAA0E,yFAA0oC,2EAAsG,6MAAyJ,4FAAoI,gGAA2I,SAAyD,YAAyB,SAA2D,0FAAjC,SAAiC,GAAmF,qEAAqnB,4E,qEAFn3I,yLAE8C,mCAAK,wHAAmD,uCAAS,4FAA2B,2CAAa,2FAA0B,+CAAiB,iHAA6C,yFAAmE,qEAAO,oCAAe,+CAAsB,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,qIAAsK,2CAAa,qIAAssH,uCAAe,mCAAW,+BAAO,gCAAC,gCAAnjI,6EAAzD,SAAyD,GAAwJ,UAAiH,EAAe,QAAmD,SAAgF,EAAc,yBAAlmB,yE,i3BCF/O,2LAEgD,mCAAK,+GAA0C,uCAAS,sW,kFAAkC,iB,sBAAlC,sWAAsG,2CAAa,4FAA0B,+CAAiB,oHAA+C,6CAAqC,+CAAiB,gPAAyD,cAAkC,mDAAqB,0FAAyB,8BAAc,+CAA0B,2CAAmB,2CAAa,0FAAwB,+CAAiB,iEAAG,oFAAmG,4KAA2H,6CAA0B,+CAAqB,+CAAiB,8NAA4B,0CAAqD,+CAAiB,6FAA4B,6CAA+B,+CAAiB,ihB,0PAA8G,sB,gCAA9G,k4BAAkL,2CAAmB,2CAAa,4FAA0B,+CAAiB,4IAAmF,mDAAqB,mIAAiC,cAAoD,mDAAqB,oEAAM,6CAAuC,+CAA0B,+CAAiB,sJAA6E,6CAA2B,2CAAmB,uCAAgB,mCAAW,+BAAO,gCAAC,gCAAjpD,QAAwD,EAA4B,aAAwO,iFAAzD,SAAyD,GAAke,SAAa,WAAiK,SAA2I,IAA3I,SAA2C,qBAAmE,EAA4B,gBAA1I,SAAoJ,IAApJ,SAAiK,OAAgB,cAA7nC,qMAA6M,6EAAmT,yJAA8N,mEAA4F,oFAAkG,oEAAgD,2OAA6P,SAAyD,YAAyB,SAAuD,mFAAjC,SAAiC,GAA+E,6EAA+J,kE,+4BCFxqD,mTAEgC,+BAAC,0OAA+B,gCAAC,cAFjE,QAEiE,YADpD,eACoB,WAAe,M,oqECFhD,O,iDAQA,aACA,SACA,UACA,UACA,UASA,SAGA,UAEA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,SACA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UAkCM5+D,GAzBN,OAkBA,MAOoB,IAAI,EAAAH,YAAYuL,OAAO+E,UAAU0/E,SAAU,YACzDh4E,EAAe,IAAI,EAAArN,aACnB0nC,EAAqB,IAAI,EAAAx5B,mBACzBzC,EAAmB,IAAI,EAAA65E,4BAA4B59C,GACnDxxC,EAAuB,IAAI,EAAAqvF,wBAAwB/vF,EAAaiW,GAChEukB,EAA4C,IAAI,EAAAw1D,mBAAmBtvF,GACnE4wE,EAAkD,IAAI,EAAA2e,qBACtDztE,EAA0D,IAAI,EAAA0tE,yBAAyB9kF,OACzF1K,GACEklB,EAAgB,IAAI,EAAAnjB,cAAc+3B,EACpC95B,EAAqBya,QAAUqf,EAAiB82C,EAAsB9uD,GACpE6T,EAAe,IAAI,EAAA9iB,aAAainB,GAChClE,EAAe,IAAI,EAAAqyC,aAAanuC,G,EAElC,SAAOw0B,GAAgB,gEAAK,SAAA/4C,EAAiBkB,KAAK,SAAU,CAAE63C,QAASA,Y,OAD3E,IAAMx1C,EAAa,IAAI,EAAA1Z,WAAWu2B,EAAc31B,EAAoB,GAE9D8pB,EAAc,IAAI,EAAA/pB,YAAY41B,EAAcmE,GAC5CozB,EAAkB,IAAI,EAAA5gB,gBAAgBxiB,EAAagQ,GAC9C,EAAAM,cAA+B,K,OAEG,WAAM,SAAAA,e,QADnD,IAAMC,GAAgB,IAAI,EAAAr4B,cAAckjB,EAAe4E,EAAaojC,EAChEp0C,EAAYghB,EAAgBx6B,EAAa,IACvCu6B,GAAgB,IAAI,EAAAjpB,cAAcsU,EAAe4E,EAAahR,EAAYghB,EAC5Ex6B,EAAa+6B,IACXT,GAAoB,IAAI,EAAArpB,kBAAkB2U,EAAe4E,EAAagQ,EAAgBx6B,GAC5F,EAAA86B,cAAgB,IAAI,EAAA1mB,cAAc2mB,GAAer6B,GACjD,IAAM6+B,GAAgB,IAAI,EAAA5mB,cAAc6R,EAAagQ,G,GAG3C,2EAAY,SAAAvkB,EAAiBkB,KAAK,SAAU,CAAE63C,SAAS,Y,QAFjE,IAAM9e,GAAsB,IAAI,EAAAvxB,oBAAoBoc,GAAeR,GAAeD,GAC9E1U,EAAellB,EAAsB85B,EAAgBvkB,EAAkB,EAAA6kB,cAAetQ,EAAa6L,EACnG,KAAM,I,GAGN,SAAO24B,GAAgB,gEAAK,SAAA/4C,EAAiBkB,KAAK,SAAU,CAAE63C,QAASA,Y,QAF3E,IAAMtkC,GAAc,IAAI,EAAAnZ,YAAYiZ,EAAahR,EAAYo0C,EACzDrzB,GAAeQ,GAAenV,EAAe0U,GAAmBE,EAAgBvkB,EAAkBspB,GAAa,IAE7GlC,GAA4B,IAAI,EAAA1rB,0BAA0BiU,EAAe4U,EAAgB+E,IACzFnC,GAAc,IAAI,EAAAzR,YAAY6O,EAAgBhY,GAC9CyH,GAAmB,IAAI,EAAAonD,iBAAiBzrD,GACxC2nB,GAAc,IAAI,EAAAx3B,YAAY6P,EAAepM,EAC/CgR,EAAa6L,EAAcC,EAAct2B,EAAaU,EAAsBuV,GAC1E6zB,GAAgB,IAAI,EAAA1c,cAAcmN,GAAeQ,GAAevhB,GAChE4uB,GAAgB,IAAI,EAAAjb,cAAc4N,GAAeR,GAAe/gB,EAAYxZ,EAAas6B,I,GAE1D,2EAAY,SAAArkB,EAAiBkB,KAAK,SAAU,CAAE63C,SAAS,Y,QAD5F,IAAMnB,GAAuB,IAAI,EAAA9gB,qBAAqBviB,EAAaE,GAAa4L,EAC5E9c,EAAY02B,GAAqB,IAC/Bt4B,GAAqB,IAAI,EAAAlG,mBAAmB8H,EAAYghB,EAAgBqzB,IACxE1wB,GAAe,IAAI,EAAArkB,aAAa0J,EAAuBhJ,GACvD22E,GAAsB,IAAI,eAAoB31D,EAAgBhhB,EAAYgR,EAAauQ,I,GAErD,WAAM,OAAAr6B,EAAqBya,SAAWza,EAAqB0kC,eAAgB,G,QAAjG,IAAI,EAAAgrD,UAAUhlF,OAAQ,GACpC1K,EAAsB85B,EAAgBlE,GAC1CrM,GAAiBknD,eAAe/lE,QAEhC,oCAcI,OAAO,gD,wEACH,SAAOovB,EAAsCnvB,Q,OAsB9B,OAtBf,UACc,EACduM,GAAmBG,QARL3M,OAAOouC,SAAS5oC,KACZrL,QAAQ,MAAO,IACfA,QAAQ,OAAQ,IAOlCqS,GAAmB2gE,iBAAmB3gE,GAAmBG,QAAU,iBACnEH,GAAmB8pC,cAAgB9pC,GAAmBG,QAAU,cAChEyB,EAAW6mD,QAAQ,CACfrnD,KAAqBpB,GAAmBG,QACxC2oD,IAAuC,KACvCzhD,SAA6C,KAC7CqJ,OAA2C,OAU/CtM,YAAW,WAAM,OAAA6xC,GAAqBxiD,KAAKuM,MAAqB,KAEhEs4B,GAAoB7kC,MAAK,GACV,GAAMmvB,EAAez7B,IAAY,EAAA8S,iBAAiBY,Y,OACjE,OADMumC,EAAS,SACf,GAAMh5C,EAAYqL,KAAK2tC,I,OAKX,OALZ,SACAm3C,GAAoB9kF,MAAK,GACzBkiC,GAAYliC,QACNglF,EAASjlF,OAAOsF,SAAS4/E,iBACxBnjD,UAAUC,IAAI,UAAYptC,EAAYu5E,mBACjC,GAAM/+C,EAAez7B,IAAY,EAAA8S,iBAAiBa,W,OAM1D,OALS,OADT69E,EAAQ,YAERA,EAAQ,SAEZF,EAAOljD,UAAUC,IAAI,SAAWmjD,GAChC,KAAA14E,GAAag2B,K,GAAK,EAAAh8B,iBAAiBI,mBAC/B,GAAMuoB,EAAez7B,IAAa,EAAA8S,iBAAiBI,oB,OAClB,OAFrC,oBACI,YACJ,KAAA4F,GAAag2B,K,GAAK,mBAAmB,GAAMrT,EAAez7B,IAAa,oB,cAAvE,oBAAqC,Y,oBAiBSo+B,GAAY,GACboQ,GAAW,GACTxS,GAAa,GACbR,GAAa,GACTD,GAAiB,GAChB1iB,GAAkB,GACzBwlB,GAAW,GACV/G,EAAY,GACbr2B,EAAW,GACT4lB,EAAa,GACNllB,EAAoB,GACf28B,GAAyB,GACxC7jB,EAAU,GACTkR,GAAW,GACXF,EAAW,GACNvU,EAAgB,GACzBi8B,EAAkB,GACV0b,EAAe,GACX1d,GAAmB,GACxB1V,EAAc,GAChB3iB,EAAY,GACXiyB,GAAa,GAEb1B,GAAa,GACNylB,GAAoB,GACnBrrC,EAAqB,GACvB2tE,GAAmB,GACzB5wD,G,qPAS/B,WAAM,OAAAv/B,EAAYu5E,mBAjD1C,oBAsDa,EAAAiX,mB,8EC7Ob,iBACI,WAAoBt+C,GAAA,KAAAA,qBAMxB,OAJI,YAAA/6B,KAAA,SAAKs5E,EAAoBC,QAAA,IAAAA,MAAA,IACrB,IAAMvvF,EAAU9B,OAAOuiB,OAAO,GAAI,CAAEiyB,QAAS48C,GAAcC,GAC3DpwF,KAAK4xC,mBAAmB/6B,KAAKhW,IAErC,EAPA,GAAa,EAAA2uF,+B,g7CCFb,aAEA,aAOI,WAAoBpvF,GAAA,KAAAA,uBANZ,KAAAiwF,iBAAmB,IAAIxnB,IAAI,CAAC,QAAS,iBAAkB,kBAAmB,4BAC9E,EAAAt3D,iBAAiBI,kBAAmB,gBAAiB,kBAAmB,kBACxE,EAAAJ,iBAAiBY,UAAW,EAAAZ,iBAAiBe,wBAC7C,EAAAf,iBAAiBO,gBAAiB,EAAAP,iBAAiBQ,wBAC/C,KAAAu+E,2BAA6B,CAAC,kBAAmB,EAAA/+E,iBAAiBc,sBAAwB,KAkEtG,OA9DU,YAAAtH,KAAN,W,0FAEyB,SAAM/K,KAAKvB,IAAY,EAAA8S,iBAAiBO,kB,cACzC,MADC,UACQ9R,KAAKI,qBAAqBya,QAAnD,MACA,GAAM7a,KAAKutC,KAAK,EAAAh8B,iBAAiBO,gBAAiB,K,OAAlD,S,iBAIuB,SAAM9R,KAAKvB,IAAY,EAAA8S,iBAAiBQ,wB,cACzC,MADC,SACvB,MACA,GAAM/R,KAAKutC,KAAK,EAAAh8B,iBAAiBQ,sBAAuB,S,OAAxD,S,mCAIR,YAAAtT,IAAA,SAAOG,GACH,IAAI6sC,EAAe,KAMnB,GAAY,OAJRA,EADAzrC,KAAKuwF,eAAe3xF,GACbkM,OAAO0lF,aAAaC,QAAQ7xF,GAE5BkM,OAAO4lF,eAAeD,QAAQ7xF,IAEvB,CACd,IAAMwmB,EAAMw5B,KAAKr7C,MAAMkoC,GACvB,OAAOt2B,QAAQC,QAAQgQ,GAE3B,OAAOjQ,QAAQC,QAAQ,OAG3B,YAAAm4B,KAAA,SAAK3uC,EAAawmB,GACd,GAAW,MAAPA,EACA,OAAOplB,KAAK+sC,OAAOnuC,GAGvB,IAAM6sC,EAAOmT,KAAKC,UAAUz5B,GAM5B,OALIplB,KAAKuwF,eAAe3xF,GACpBkM,OAAO0lF,aAAaG,QAAQ/xF,EAAK6sC,GAEjC3gC,OAAO4lF,eAAeC,QAAQ/xF,EAAK6sC,GAEhCt2B,QAAQC,WAGnB,YAAA23B,OAAA,SAAOnuC,GAMH,OALIoB,KAAKuwF,eAAe3xF,GACpBkM,OAAO0lF,aAAaI,WAAWhyF,GAE/BkM,OAAO4lF,eAAeE,WAAWhyF,GAE9BuW,QAAQC,WAGX,YAAAm7E,eAAR,SAAuB3xF,GACnB,GAAIoB,KAAKqwF,iBAAiBp5D,IAAIr4B,GAC1B,OAAO,EAEX,IAAoB,UAAAoB,KAAKswF,2BAAL,eAAiC,CAAhD,IAAMO,EAAK,KACZ,GAAIjyF,EAAIoG,WAAW6rF,GACf,OAAO,EAGf,OAAO,GAEf,EAvEA,GAAa,EAAAnB,sB,8ECJb,aAAS,EAAAlwF,WAAA,EAAAA,WACT,aAAS,EAAA6oE,aAAA,EAAAA,aACT,aAAS,EAAA7vD,aAAA,EAAAA,aACT,aAAS,EAAA/C,YAAA,EAAAA,YACT,aAAS,EAAArT,cAAA,EAAAA,cACT,aAAS,EAAAuO,kBAAA,EAAAA,kBACT,YAAS,EAAAY,iBAAA,EAAAA,iBACT,aAAS,EAAAw/D,iBAAA,EAAAA,iBACT,aAAS,EAAA5uE,cAAA,EAAAA,cACT,aAAS,EAAAiP,mBAAA,EAAAA,mBACT,aAAS,EAAAJ,cAAA,EAAAA,cACT,aAAS,EAAAzR,YAAA,EAAAA,YACT,aAAS,EAAA8R,0BAAA,EAAAA,0BACT,aAAS,EAAAq7B,gBAAA,EAAAA,gBACT,aAAS,EAAAxiC,aAAA,EAAAA,aACT,aAAS,EAAA+G,YAAA,EAAAA,YACT,aAAS,EAAAgC,aAAA,EAAAA,aACT,aAAS,EAAAoY,YAAA,EAAAA,YACT,aAAS,EAAAlrB,YAAA,EAAAA,YACT,aAAS,EAAAke,oBAAA,EAAAA,qB,8ZCnBT,IAEA,cAGI,WAAY5c,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKk8D,OAAS,EAAKxzD,oBAAoB,U,EAE/C,OAPoC,OAOpC,EAPA,CAFA,MAEoCS,cAAvB,EAAAu6D,kB,8ZCFb,YAKA,cAMI,WAAY1jE,GAAZ,MACI,YAAMA,IAAS,KAJnB,EAAA2gC,SAAqC,GACrC,EAAAC,aAA6C,GAIzC,EAAKL,QAAU,EAAK73B,oBAAoB,WACxC,IAAM83B,EAAgB,EAAK93B,oBAAoB,iBACzCk4B,EAAe,EAAKl4B,oBAAoB,gBACxCi4B,EAAW,EAAKj4B,oBAAoB,Y,OAC1C,EAAK83B,cAAiC,MAAjBA,EAAwB,KAAO,IAAI6uD,EAAsB7uD,GAC1D,MAAhBI,IACA,EAAKA,aAAeA,EAAa17B,KAAI,SAAC1G,GAAW,WAAI8wF,EAA2B9wF,OAEpE,MAAZmiC,IACA,EAAKA,SAAWA,EAASz7B,KAAI,SAACzI,GAAW,WAAI8yF,EAAuB9yF,O,EAGhF,OApBqC,OAoBrC,EApBA,CAAqC,EAAA0M,cAAxB,EAAAw2D,kBAsBb,kBAMI,WAAY3/D,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKwG,KAAO,EAAKkC,oBAAoB,QACrC,EAAK8mF,UAAY,EAAK9mF,oBAAoB,aAC1C,EAAKyrB,YAAc,EAAKzrB,oBAAoB,eAC5C,EAAK+mF,kBAAoB,EAAK/mF,oBAAoB,qB,EAE1D,OAb2C,OAa3C,EAbA,CAA2C,EAAAS,cAA9B,EAAAkmF,wBAeb,kBAQI,WAAYrvF,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKmD,IAAM,EAAKuF,oBAAoB,OACpC,EAAKgnF,OAAS,EAAKhnF,oBAAoB,UACvC,EAAKsJ,OAAS,EAAKtJ,oBAAoB,UACvC,EAAKinF,KAAO,EAAKjnF,oBAAoB,QACrC,EAAK8qB,KAAO,EAAK9qB,oBAAoB,QACrC,EAAKoyC,OAAS,EAAKpyC,oBAAoB,U,EAE/C,OAjB4C,OAiB5C,EAjBA,CAA4C,EAAAS,cAA/B,EAAAomF,yBAmBb,kBAUI,WAAYvvF,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK4vF,YAAc,EAAKlnF,oBAAoB,eAC5C,EAAKoyC,OAAS,EAAKpyC,oBAAoB,UACvC,EAAKmnF,SAAW,EAAKnnF,oBAAoB,YACzC,EAAKonF,kBAAoB,EAAKpnF,oBAAoB,qBAClD,EAAKqnF,eAAiB,EAAKrnF,oBAAoB,kBAC/C,EAAKlC,KAAO,EAAKkC,oBAAoB,QACrC,EAAK8P,kBAAoB,EAAK9P,oBAAoB,qBAClD,EAAKsnF,QAAU,EAAKtnF,oBAAoB,W,EAEhD,OArBgD,OAqBhD,EArBA,CAAgD,EAAAS,cAAnC,EAAAmmF,8B,8ZC7Db,IAEA,cAcI,WAAYtvF,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKiwF,UAAY,EAAKvnF,oBAAoB,aAC1C,EAAKwnF,WAAa,EAAKxnF,oBAAoB,cAC3C,EAAKynF,YAAc,EAAKznF,oBAAoB,eAC5C,EAAKyrB,YAAc,EAAKzrB,oBAAoB,eAC5C,EAAK2E,OAAS,EAAK3E,oBAAoB,UACvC,EAAK0nF,SAAW,EAAK1nF,oBAAoB,YACzC,EAAK2nF,WAAa,EAAK3nF,oBAAoB,cAC3C,EAAK4nF,SAAW,EAAK5nF,oBAAoB,YACzC,EAAK6nF,aAAe,EAAK7nF,oBAAoB,gBAC7C,EAAKpD,KAAO,EAAKoD,oBAAoB,QACrC,EAAK8nF,SAAW,EAAK9nF,oBAAoB,YACzC,EAAKrI,MAAQ,EAAKqI,oBAAoB,S,EAE9C,OA7B2C,OA6B3C,EA7BA,CAFA,MAE2CS,cAA9B,EAAAg7D,yB,8ZCFb,IAEA,cAQI,WAAYnkE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK7B,GAAK,EAAKuK,oBAAoB,MACnC,EAAKvF,IAAM,EAAKuF,oBAAoB,OACpC,EAAKmd,SAAW,EAAKnd,oBAAoB,YACzC,EAAKvL,IAAM,EAAKuL,oBAAoB,OACpC,EAAKsS,KAAO,EAAKtS,oBAAoB,QACrC,EAAK8tD,SAAW,EAAK9tD,oBAAoB,Y,EAEjD,OAjBwC,OAiBxC,EAjBA,CAFA,MAEwCS,cAA3B,EAAA+7D,sB,8ZCFb,IAEA,cAII,WAAYllE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK2H,SAAW,EAAKe,oBAAoB,YACzC,EAAKgd,aAAe,EAAKhd,oBAAoB,gB,EAErD,OAT6C,OAS7C,EATA,CAFA,MAE6CS,cAAhC,EAAAi8D,2B,8ZCFb,IAEA,cAKI,WAAYplE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKwG,KAAO,EAAKkC,oBAAoB,QACrC,EAAKuvC,QAAU,EAAKvvC,oBAAoB,WACxC,EAAKwvC,SAAW,EAAKxvC,oBAAoB,Y,EAEjD,OAX0C,OAW1C,EAXA,CAFA,MAE0CS,cAA7B,EAAAm8D,wB,8ZCFb,IAEA,cAKI,WAAYtlE,EAAe+b,EAAgB00E,GAA3C,MACI,YAAMzwF,IAAS,KACX0wF,EAAa,KACjB,GAAgB,MAAZ1wF,EAAkB,CAClB,IAAM2wF,EAAqB,EAAKjoF,oBAAoB,cAEhDgoF,EADAC,GAAsBF,EACTE,EAEA3wF,E,OAIjB0wF,GACA,EAAKtxF,QAAU,EAAKsJ,oBAAoB,UAAWgoF,GACnD,EAAKzxF,iBAAmB,EAAKyJ,oBAAoB,mBAAoBgoF,IAEtD,MAAX30E,IACA,EAAK3c,QAAU,yCAGvB,EAAKi3B,WAAata,E,EAsC1B,OA/DmC,OA4B/B,YAAAmwD,iBAAA,WACI,GAA6B,MAAzB3tE,KAAKU,iBACL,OAAOV,KAAKa,QAEhB,IAAK,IAAMjC,KAAOoB,KAAKU,iBACnB,GAAKV,KAAKU,iBAAiBzB,eAAeL,IAGtCoB,KAAKU,iBAAiB9B,GAAKR,OAC3B,OAAO4B,KAAKU,iBAAiB9B,GAAK,GAG1C,OAAOoB,KAAKa,SAGhB,YAAAD,eAAA,WACI,IAAMyxF,EAAqB,GAC3B,GAA6B,MAAzBryF,KAAKU,iBACL,OAAO2xF,E,eAEAzzF,GACP,IAAK,EAAK8B,iBAAiBzB,eAAeL,G,iBAG1C,EAAK8B,iBAAiB9B,GAAK8E,SAAQ,SAACu5E,GAChC,IAAI2R,EAAS,GACb,GAAIhwF,EAAI6F,QAAQ,MAAQ,GAAK7F,EAAI6F,QAAQ,MAAQ,EAAG,CAChD,IAAM6tF,EAAU1zF,EAAI2zF,YAAY,KAChC3D,EAAShwF,EAAIqH,OAAO,EAAGqsF,GAAW,EAAIA,EAAU1zF,EAAIR,QAAU,KAElEi0F,EAAS5xF,KAAKmuF,EAAS3R,O,OAV/B,IAAK,IAAMr+E,KAAOoB,KAAKU,iB,EAAZ9B,GAaX,OAAOyzF,GAEf,EA/DA,CAFA,MAEmCznF,cAAtB,EAAAs2D,iB,8ZCFb,IAKA,cAaI,WAAYz/D,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKwG,KAAO,EAAKkC,oBAAoB,QACrC,EAAKsa,OAAS,EAAKta,oBAAoB,UACvC,EAAKmU,eAAiB,EAAKnU,oBAAoB,kBAC/C,EAAKmjB,SAAW,EAAKnjB,oBAAoB,YACzC,EAAK2qB,aAAe,EAAK3qB,oBAAoB,gBAC7C,EAAK0qB,QAAU,EAAK1qB,oBAAoB,WACxC,EAAK4qB,mBAAqB,EAAK5qB,oBAAoB,sBACnD,EAAKu5C,aAAe,EAAKv5C,oBAAoB,gBAC7C,EAAK8qB,KAAO,EAAK9qB,oBAAoB,QACrC,EAAKkmB,WAAa,EAAKlmB,oBAAoB,cAC3C,EAAK65C,UAAY,EAAK75C,oBAAoB,a,EAElD,OA3BmC,OA2BnC,EA3BA,CALA,MAKmCS,cAAtB,EAAA06D,iB,8ZCLb,YACA,SAEA,cAOI,WAAY7jE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK7B,GAAK,EAAKuK,oBAAoB,MACnC,EAAKmU,eAAiB,EAAKnU,oBAAoB,kBAC/C,EAAKpD,KAAO,EAAKoD,oBAAoB,QACrC,EAAKu8C,UAAY,EAAKv8C,oBAAoB,aAC1C,EAAKka,WAAa,EAAKla,oBAAoB,c,EAEnD,OAfmC,OAenC,EAfA,CAAmC,EAAAS,cAAtB,EAAAm5D,gBAiBb,kBAGI,WAAYtiE,GAAZ,MACI,YAAMA,IAAS,KAHnB,EAAAgF,YAA2C,GAIvC,IAAMA,EAAc,EAAK0D,oBAAoB,e,OAC1B,MAAf1D,IACA,EAAKA,YAAcA,EAAYE,KAAI,SAACoH,GAAW,WAAI,EAAAy+B,0BAA0Bz+B,O,EAGzF,OAV0C,OAU1C,EAVA,CAA0Cg2D,GAA7B,EAAAD,wB,8ZCpBb,IAEA,cAUI,WAAYriE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKm3B,YAAcn3B,EAAS+wF,aAC5B,EAAKC,UAAYhxF,EAASixF,WAC1B,EAAKv5D,aAAe13B,EAASglE,cAC7B,EAAKksB,UAAYlxF,EAASmxF,WAE1B,EAAKl5D,WAAa,EAAKvvB,oBAAoB,cAC3C,EAAKvL,IAAM,EAAKuL,oBAAoB,OACpC,EAAKssB,eAAiB,EAAKtsB,oBAAoB,kB,EAEvD,OArB2C,OAqB3C,EArBA,CAFA,MAE2CS,cAA9B,EAAAk2D,yB,8ZCFb,IAIA,cAII,WAAYr/D,GAAZ,MACI,YAAMA,IAAS,KAHnB,EAAAq3B,oBAAsB,IAAI9pB,IAItB,EAAK+pB,mBAAqB,EAAK5uB,oBAAoB,sBACnD,IAAM2uB,EAAsB,EAAK3uB,oBAAoB,uBACrD,GAA2B,MAAvB2uB,EACA,IAAK,IAAM1pB,KAAQ0pB,EACXA,EAAoB75B,eAAemQ,IACnC,EAAK0pB,oBAAoB5pB,IAAI/C,SAASiD,EAAM,MAAO0pB,EAAoB1pB,I,SAK3F,OAhB+C,OAgB/C,EAhBA,CAJA,MAI+CxE,cAAlC,EAAAq2D,6B,8ZCJb,IAEA,cAII,WAAYx/D,EAAexB,GAA3B,MACI,YAAMwB,IAAS,KACTnB,EAAO,EAAK6J,oBAAoB,Q,OACtC,EAAK7J,KAAe,MAARA,EAAe,GAAKA,EAAKqG,KAAI,SAACi9D,GAAY,WAAI3jE,EAAE2jE,MAC5D,EAAKpgB,kBAAoB,EAAKr5C,oBAAoB,qB,EAE1D,OAVqC,OAUrC,EAVA,CAFA,MAEqCS,cAAxB,EAAA03D,gB,8ZCFb,aACA,SAKA,cAOI,WAAY7gE,GAAZ,MACI,YAAMA,IAAS,KACf,EAAK+lE,YAAc,EAAKr9D,oBAAoB,eAC5C,EAAKg5B,UAAY,EAAKh5B,oBAAoB,aAC1C,IAAMi1C,EAAe,EAAKj1C,oBAAoB,gBAC9C,EAAKi1C,aAA+B,MAAhBA,EAAuB,KAAO,IAAI,EAAAqoB,4BAA4BroB,GAClF,IAAMG,EAAkB,EAAKp1C,oBAAoB,mB,OACjD,EAAKo1C,gBAAqC,MAAnBA,EAA0B,KAC7C,IAAI,EAAAmoB,2CAA2CnoB,GACnD,EAAK15C,WAAa,EAAKsE,oBAAoB,c,EAEnD,OAlBsD,OAkBtD,EAlBA,CAAsD,EAAA86D,sBAAzC,EAAAC,oC,8ZCHb,YACA,SAEA,cAOI,WAAYzjE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK7B,GAAK,EAAKuK,oBAAoB,MACnC,EAAKsa,OAAS,EAAKta,oBAAoB,UACvC,EAAKlC,KAAO,EAAKkC,oBAAoB,QACrC,EAAKqT,OAAS,EAAKrT,oBAAoB,UACvC,EAAKu8C,UAAY,EAAKv8C,oBAAoB,a,EAElD,OAf8C,OAe9C,EAfA,CAA8C,EAAAS,cAAjC,EAAAioF,2BAiBb,kBAKI,WAAYpxF,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKsF,KAAO,EAAKoD,oBAAoB,QACrC,EAAK0V,MAAQ,EAAK1V,oBAAoB,SACtC,EAAK2iD,iBAAmB,EAAK3iD,oBAAoB,oB,EAEzD,OAXyD,OAWzD,EAXA,CAAyD0oF,GAA5C,EAAA1uB,sCAab,kBAGI,WAAY1iE,GAAZ,MACI,YAAMA,IAAS,KAHnB,EAAAgF,YAA2C,GAIvC,IAAMA,EAAc,EAAK0D,oBAAoB,e,OAC1B,MAAf1D,IACA,EAAKA,YAAcA,EAAYE,KAAI,SAACoH,GAAW,WAAI,EAAAy+B,0BAA0Bz+B,O,EAGzF,OAVqD,OAUrD,EAVA,CAAqD8kF,GAAxC,EAAA3uB,mC,8ZCpCb,YACA,SAEA,cAKI,WAAYziE,GAAZ,MACI,YAAMA,IAAS,KACTqxF,EAAc,EAAK3oF,oBAAoB,e,OAC1B,MAAf2oF,IACA,EAAKA,YAAc,IAAI,EAAA7lC,gBAAgB6lC,IAE3C,EAAK7rD,0BAA4B,EAAK98B,oBAAoB,6BAC1D,EAAKP,QAAU,EAAKO,oBAAoB,W,EAEhD,OAdqC,OAcrC,EAdA,CAAqC,EAAAS,cAAxB,EAAA+2D,mB,8ZCHb,IAKA,cAoBI,WAAYlgE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK7B,GAAK,EAAKuK,oBAAoB,MACnC,EAAKpD,KAAO,EAAKoD,oBAAoB,QACrC,EAAKq6C,YAAc,EAAKr6C,oBAAoB,eAC5C,EAAKs6C,UAAY,EAAKt6C,oBAAoB,aAC1C,EAAKo9D,aAAe,EAAKp9D,oBAAoB,gBAC7C,EAAK83C,UAAY,EAAK93C,oBAAoB,aAC1C,EAAKwjB,QAAU,EAAKxjB,oBAAoB,WACxC,EAAKugD,OAAS,EAAKvgD,oBAAoB,UACvC,EAAKygD,OAAS,EAAKzgD,oBAAoB,UACvC,EAAK4oF,SAAW,EAAK5oF,oBAAoB,YACzC,EAAK24E,gBAAkB,EAAK34E,oBAAoB,mBAChD,EAAKk9D,MAAQ,EAAKl9D,oBAAoB,SACtC,EAAKm9D,eAAiB,EAAKn9D,oBAAoB,kBAC/C,EAAK6pC,aAAe,EAAK7pC,oBAAoB,gBAC7C,EAAKvL,IAAM,EAAKuL,oBAAoB,OACpC,EAAKqT,OAAS,EAAKrT,oBAAoB,UACvC,EAAKlC,KAAO,EAAKkC,oBAAoB,QACrC,EAAK8hB,QAAU,EAAK9hB,oBAAoB,W,EAEhD,OAzCiD,OAyCjD,EAzCA,CALA,MAKiDS,cAApC,EAAAoiD,+B,8ZCLb,IAIA,cAII,WAAYvrD,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKg2B,IAAM,EAAKttB,oBAAoB,OACpC,EAAKutB,cAAgB,EAAKvtB,oBAAoB,iB,EAEtD,OATsC,OAStC,EATA,CAJA,MAIsCS,cAAzB,EAAA22D,oB,8ZCJb,YACA,SACA,SACA,SACA,SACA,SACA,SAEA,cAQI,WAAY9/D,GAAZ,MACI,YAAMA,IAAS,KAPnB,EAAAiF,QAA4B,GAC5B,EAAAD,YAA2C,GAC3C,EAAAwC,QAA4B,GAE5B,EAAAw3B,SAA8B,GAK1B,IAAMgxB,EAAU,EAAKtnD,oBAAoB,WAC1B,MAAXsnD,IACA,EAAKA,QAAU,IAAI,EAAAxE,gBAAgBwE,IAGvC,IAAM/qD,EAAU,EAAKyD,oBAAoB,WAC1B,MAAXzD,IACA,EAAKA,QAAUA,EAAQC,KAAI,SAACC,GAAW,WAAI,EAAAm7D,eAAen7D,OAG9D,IAAMH,EAAc,EAAK0D,oBAAoB,eAC1B,MAAf1D,IACA,EAAKA,YAAcA,EAAYE,KAAI,SAACoH,GAAW,WAAI,EAAA+4D,0BAA0B/4D,OAGjF,IAAM9E,EAAU,EAAKkB,oBAAoB,WAC1B,MAAXlB,IACA,EAAKA,QAAUA,EAAQtC,KAAI,SAACoH,GAAW,WAAI,EAAAq0D,eAAer0D,OAG9D,IAAM2rC,EAAU,EAAKvvC,oBAAoB,WAC1B,MAAXuvC,IACA,EAAKA,QAAU,IAAI,EAAA6qB,gBAAgB7qB,IAGvC,IAAMjZ,EAAW,EAAKt2B,oBAAoB,Y,OAC1B,MAAZs2B,IACA,EAAKA,SAAWA,EAAS95B,KAAI,SAACuO,GAAW,WAAI,EAAA+uD,eAAe/uD,O,EAGxE,OAzCkC,OAyClC,EAzCA,CAAkC,EAAAtK,cAArB,EAAAy5D,gB,8ZCRb,IAEA,cAUI,WAAY5iE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKmf,MAAQ,EAAKzW,oBAAoB,eACtC,EAAK6oF,UAAY,EAAK7oF,oBAAoB,aAC1C,EAAK0W,MAAQ,EAAK1W,oBAAoB,SACtC,EAAK2W,MAAQ,EAAK3W,oBAAoB,SACtC,EAAKsV,KAAO,EAAKtV,oBAAoB,QACrC,EAAKuV,MAAQ,EAAKvV,oBAAoB,SACtC,EAAKwV,WAAa,EAAKxV,oBAAoB,cAC3C,EAAK6P,QAAU,EAAK7P,oBAAoB,W,EAEhD,OArBqC,OAqBrC,EArBA,CAFA,MAEqCS,cAAxB,EAAA02D,mB,8ZCFb,IAEA,cAII,WAAY7/D,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKwqB,QAAU,EAAK9hB,oBAAoB,WACxC,EAAKvL,IAAM,EAAKuL,oBAAoB,O,EAE5C,OAToD,OASpD,EATA,CAFA,MAEoDS,cAAvC,EAAA65D,kC,8ZCFb,IAEA,cAMI,WAAYhjE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKwqB,QAAU,EAAK9hB,oBAAoB,WACxC,EAAKmE,KAAO,EAAKnE,oBAAoB,QACrC,EAAKuwC,UAAY,EAAKvwC,oBAAoB,aAC1C,EAAKqwC,eAAiB,EAAKrwC,oBAAoB,kB,EAEvD,OAb0C,OAa1C,EAbA,CAFA,MAE0CS,cAA7B,EAAA+5D,wB,8ZCFb,IAEA,cAII,WAAYljE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKwqB,QAAU,EAAK9hB,oBAAoB,WACxC,EAAK0V,MAAQ,EAAK1V,oBAAoB,S,EAE9C,OAT4C,OAS5C,EATA,CAFA,MAE4CS,cAA/B,EAAA85D,0B,8ZCFb,IAIA,cAII,WAAYjjE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKwqB,QAAU,EAAK9hB,oBAAoB,WACxC,EAAKlC,KAAO,EAAKkC,oBAAoB,Q,EAE7C,OAT+C,OAS/C,EATA,CAJA,MAI+CS,cAAlC,EAAA45D,6B,8ZCJb,IAEA,cAGI,WAAY/iE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK0R,KAAO,EAAKhJ,oBAAoB,Q,EAE7C,OAP8C,OAO9C,EAPA,CAFA,MAE8CS,cAAjC,EAAAm6D,4B,8ZCFb,YAEA,cAII,WAAYtjE,GAAZ,MACI,YAAMA,IAAS,KACf,EAAKwqB,QAAU,EAAK9hB,oBAAoB,WACxC,IAAMgjD,EAAO,EAAKhjD,oBAAoB,Q,OACtC,EAAKgjD,KAAe,MAARA,EAAe,KAAOA,EAAKxmD,KAAI,SAAC2vD,GAAW,WAAI28B,EAAY38B,M,EAE/E,OAV0C,OAU1C,EAVA,CAA0C,EAAA1rD,cAA7B,EAAAi6D,uBAYb,kBAKI,WAAYpjE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKsF,KAAO,EAAKoD,oBAAoB,QACrC,EAAKvK,GAAK,EAAKuK,oBAAoB,MACnC,EAAKqsD,YAAc,EAAKrsD,oBAAoB,e,EAEpD,OAXiC,OAWjC,EAXA,CAAiC,EAAAS,cAApB,EAAAqoF,cAab,kBAMI,WAAYxxF,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKgjB,OAAS,EAAKta,oBAAoB,UACvC,EAAKguB,MAAQ,EAAKhuB,oBAAoB,SACtC,EAAKwrD,UAAY,EAAKxrD,oBAAoB,aAC1C,EAAKwiC,QAAU,EAAKxiC,oBAAoB,W,EAEhD,OAbuC,OAavC,EAbA,CAAuC,EAAAS,cAA1B,EAAAk6D,qB,8ZC3Bb,IAEA,cASI,WAAYrjE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKwqB,QAAU,EAAK9hB,oBAAoB,WACxC,EAAKwsD,KAAO,EAAKxsD,oBAAoB,QACrC,EAAKysD,KAAO,EAAKzsD,oBAAoB,QACrC,EAAK0sD,KAAO,EAAK1sD,oBAAoB,QACrC,EAAK2sD,KAAO,EAAK3sD,oBAAoB,QACrC,EAAK4sD,KAAO,EAAK5sD,oBAAoB,QACrC,EAAKssD,IAAM,EAAKtsD,oBAAoB,O,EAE5C,OAnB8C,OAmB9C,EAnBA,CAFA,MAE8CS,cAAjC,EAAAg6D,4B,8ZCFb,IAEA,cAII,WAAYnjE,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKgjB,OAAS,EAAKta,oBAAoB,UACvC,EAAKq/C,UAAY,EAAKr/C,oBAAoB,a,EAElD,OATqC,OASrC,EATA,CAFA,MAEqCS,cAAxB,EAAA86D,mB,8ECIb,oBAAyB7X,EAAeqlC,GACpC,OAAO,SAAI7pD,EAAagmC,EACpBC,GACA,IAAMC,EAAmCD,EAAW3wE,MAC9Cw0F,EAAe,IAAInkF,IAEnBokF,EAAe,SAAChuE,GAClB,IAAIiuE,EAAYF,EAAa10F,IAAI2mB,GACjC,OAAiB,MAAbiuE,IAGJA,EAAY,IAAIrkF,IAChBmkF,EAAajkF,IAAIkW,EAAKiuE,IAHXA,GAOf,MAAO,CACH10F,MAAO,W,IAAA,WAAS,kDACZ,IAAM00F,EAAYD,EAAapzF,MACzBszF,EAAkBJ,EAAYvjB,GAChC4jB,EAAQF,EAAU50F,IAAI60F,GAM1B,OALa,MAATC,IACAA,EAAQ,GACRF,EAAUnkF,IAAIokF,EAAiBC,IAG5B,IAAIp+E,SAAW,SAACC,EAAS0H,GAC5B,IAAM02E,EAAO,WACT,IAAM5jB,EAAY,WACd2jB,EAAM36C,OAAO26C,EAAM9uF,QAAQ+uF,GAAO,GAC9BD,EAAMn1F,QAAUyvD,EAChB0lC,EAAM1lC,EAAQ,KACU,IAAjB0lC,EAAMn1F,SACbi1F,EAAUz3D,OAAO03D,GACM,IAAnBD,EAAU52E,MACV02E,EAAav3D,OAAO,KAIhC2zC,EAAeniE,MAAM,EAAMuiE,GAAMruE,MAAK,SAACiU,GAEnC,OADAq6D,IACOr6D,KACR2H,OAAM,SAACC,GAEN,MADAyyD,IACMzyD,KACP7b,KAAK8T,EAAS0H,IAErBy2E,EAAM9yF,KAAK+yF,GACPD,EAAMn1F,QAAUyvD,GAChB2lC,Y,8ECvDxB,MAGI,SAAY3lB,GACR7tE,KAAK6tE,IAAa,MAAPA,EAAc,GAAKA,GAJzB,EAAAE,2B,8ECAb,MAII,SAAYF,EAAetvD,GACvBve,KAAK6tE,IAAa,MAAPA,EAAc,GAAKA,EAC9B7tE,KAAKue,SAAWA,GANX,EAAAuvD,yB,8ECAb,MAGI,SAAYD,GACR7tE,KAAK6tE,IAAa,MAAPA,EAAc,GAAKA,GAJzB,EAAAc,4B,8ECAb,aAIA,EAII,SAAY1lE,EAAmB8V,GAA/B,WACmB,MAAX9V,IACAjJ,KAAKiJ,QAAU,GACfA,EAAQvF,SAAQ,SAACqK,GACb,EAAK9E,QAAQxI,KAAK,IAAI,EAAAy2C,oBAAoBnpC,QAGlD/N,KAAK+e,cAAgBA,GAXhB,EAAA6tD,0B,8ECJb,aAIA,EAII,SAAYhnE,GACR5F,KAAK4F,OAAS,IAAI,EAAA6hB,cAAc7hB,GAChC5F,KAAK+e,cAAgBnZ,EAAOmZ,eANvB,EAAA2tD,sB,8ECJb,MAKI,SAAY+D,EAAS1pE,EAAcka,GAFnC,KAAA0vD,SAA+B,GAG3B3wE,KAAKihB,OAASA,EACdjhB,KAAKywE,KAAOA,EACZzwE,KAAKywE,KAAK1pE,KAAOA,GARZ,EAAA2pE,Y,+ECEb,mBAAa,EAAA2E,mB,8ECFb,mBAAa,EAAAyC,mB,8ZCEb,aAKA,cAKI,WAAY1yD,EAAkB/Q,QAAA,IAAAA,OAAA,GAA9B,MACI,cAAO,KACP,OAAW,MAAP+Q,IAIJ,EAAKjR,iBAAiB,EAAMiR,EAAK,CAC7BxlB,GAAI,KACJmH,KAAM,MACPsN,EAAkB,CAAC,OAEtB,EAAK+J,aAAmC,MAApBgH,EAAIhH,aAAuB,IAAI2P,KAAK3I,EAAIhH,cAAgB,M,EAQpF,OAxB4B,OAmBxB,YAAA9I,QAAA,WACI,OAAOtV,KAAK4U,WAAW,IAAI,EAAA5L,WAAWhJ,MAAO,CACzC+G,KAAM,MACP,OAEX,EAxBA,CAFA,OAE4B,SAAf,EAAAsxE,U,mFCPb,MAII,SAAYjvE,EAAkB6rB,GAC1Bj1B,KAAKoJ,SAAWA,EAChBpJ,KAAKi1B,KAAOA,GANP,EAAAwnD,4B,8ZCAb,IAEA,yE,OACI,EAAA/gB,YAAsB,GACtB,EAAAE,UAAoB,EACpB,EAAA+f,cAAwB,EACxB,EAAAC,cAAwB,EACxB,EAAA1f,YAAsB,EACtB,EAAA2f,YAAsB,EACtB,EAAAzf,YAAsB,EACtB,EAAA0f,aAAuB,EACvB,EAAApf,eAAyB,EACzB,EAAAE,YAAsB,EACtB,EAAAE,eAAyB,E,EAe7B,OA1BoD,OAahD,YAAA22B,SAAA,WACI,MAA4B,KAArBzzF,KAAK07D,aACR17D,KAAK47D,UAAY,GACjB57D,KAAK67E,YAAc,GACnB77E,KAAK87E,aAAe,GACpB97E,KAAK27E,cACL37E,KAAK47E,cACL57E,KAAKk8D,YACLl8D,KAAKo8D,YACLp8D,KAAK08D,eAAiB,GACtB18D,KAAK48D,YACL58D,KAAK88D,eAEjB,EA1BA,CAFA,OAEoD,SAAvC,EAAAif,kC,8ECGb,MAmBI,SAAYt6E,GACRzB,KAAKJ,GAAK6B,EAAS7B,GACnBI,KAAK+G,KAAOtF,EAASsF,KACrB/G,KAAKwd,OAAS/b,EAAS+b,OACvBxd,KAAKiI,KAAOxG,EAASwG,KACrBjI,KAAKisB,QAAUxqB,EAASwqB,QACxBjsB,KAAKwkD,YAAc/iD,EAAS+iD,YAC5BxkD,KAAKykD,UAAYhjD,EAASgjD,UAC1BzkD,KAAKunE,aAAe9lE,EAAS8lE,aAC7BvnE,KAAKiiD,UAAYxgD,EAASwgD,UAC1BjiD,KAAK2tB,QAAUlsB,EAASksB,QACxB3tB,KAAK0qD,OAASjpD,EAASipD,OACvB1qD,KAAK4qD,OAASnpD,EAASmpD,OACvB5qD,KAAK+yF,SAAWtxF,EAASsxF,SACzB/yF,KAAK8iF,gBAAkBrhF,EAASqhF,gBAChC9iF,KAAKqnE,MAAQ5lE,EAAS4lE,MACtBrnE,KAAKsnE,eAAiB7lE,EAAS6lE,eAC/BtnE,KAAKg0C,aAAevyC,EAASuyC,cApCxB,EAAA+rC,oB,8ECHb,aACA,SAEA,aAmBI,WAAY36D,GACG,MAAPA,IAIJplB,KAAKJ,GAAKwlB,EAAIxlB,GACdI,KAAK+G,KAAOqe,EAAIre,KAChB/G,KAAKwd,OAAS4H,EAAI5H,OAClBxd,KAAKiI,KAAOmd,EAAInd,KAChBjI,KAAKisB,QAAU7G,EAAI6G,QACnBjsB,KAAKwkD,YAAcp/B,EAAIo/B,YACvBxkD,KAAKykD,UAAYr/B,EAAIq/B,UACrBzkD,KAAKunE,aAAeniD,EAAImiD,aACxBvnE,KAAKiiD,UAAY78B,EAAI68B,UACrBjiD,KAAK2tB,QAAUvI,EAAIuI,QACnB3tB,KAAK0qD,OAAStlC,EAAIslC,OAClB1qD,KAAK4qD,OAASxlC,EAAIwlC,OAClB5qD,KAAK+yF,SAAW3tE,EAAI2tE,SACpB/yF,KAAK8iF,gBAAkB19D,EAAI09D,gBAC3B9iF,KAAKqnE,MAAQjiD,EAAIiiD,MACjBrnE,KAAKsnE,eAAiBliD,EAAIkiD,eAC1BtnE,KAAKg0C,aAAe5uB,EAAI4uB,cAsBhC,OAnBI,sBAAI,wBAAS,C,IAAb,WACI,OAAIh0C,KAAKiI,OAAS,EAAAytB,qBAAqBg+D,OAGhC1zF,KAAKisB,SAAWjsB,KAAKwd,SAAW,EAAA8N,2BAA2By8B,W,gCAGtE,sBAAI,wBAAS,C,IAAb,WACI,OAAO/nD,KAAKiI,OAAS,EAAAytB,qBAAqBi+D,SAAW3zF,KAAKiI,OAAS,EAAAytB,qBAAqBg+D,OACpF1zF,KAAKiI,OAAS,EAAAytB,qBAAqBk+D,O,gCAG3C,sBAAI,sBAAO,C,IAAX,WACI,OAAO5zF,KAAKiI,OAAS,EAAAytB,qBAAqBg+D,OAAS1zF,KAAKiI,OAAS,EAAAytB,qBAAqBk+D,O,gCAG1F,sBAAI,sBAAO,C,IAAX,WACI,OAAO5zF,KAAKiI,OAAS,EAAAytB,qBAAqBg+D,O,gCAElD,EA9DA,GAAa,EAAA3Q,gB,4vDCLb,IAEA,cACI,WAAYnK,EAAwBC,GAApC,MACI,YAAMD,GAAkB,QAASC,GAAkB,SAAOY,GAAuB,qC,wDAGvD,OAFhBoa,EAAW7zF,KAAK64E,iBAAmB,IAAMY,EAA9Bz5E,4BAEK,GAAMurC,MAAMsoD,I,OAClB,SADM,SACcpoD,Q,OACpC,MAAO,CAAP,EADgB,qBAElB,K,OAEF,EAAKgN,4BAA8B,CAC/B,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACnG,QAAS,QAAS,KAAM,KAAM,KAAM,KAAM,QAAS,S,EAG/D,OAfiC,OAejC,EAfA,CAFA,OAEiC,aAApB,EAAAl5C,e,8ECAb,8BACY,KAAAu0F,MAAQ,IAAI9kF,IAsBxB,OApBI,YAAAvQ,IAAA,SAAOG,GACH,GAAIoB,KAAK8zF,MAAM78D,IAAIr4B,GAAM,CACrB,IAAMwmB,EAAMplB,KAAK8zF,MAAMr1F,IAAIG,GAC3B,OAAOuW,QAAQC,QAAQgQ,GAE3B,OAAOjQ,QAAQC,QAAQ,OAG3B,YAAAm4B,KAAA,SAAK3uC,EAAawmB,GACd,OAAW,MAAPA,EACOplB,KAAK+sC,OAAOnuC,IAEvBoB,KAAK8zF,MAAM5kF,IAAItQ,EAAKwmB,GACbjQ,QAAQC,YAGnB,YAAA23B,OAAA,SAAOnuC,GAEH,OADAoB,KAAK8zF,MAAMl4D,OAAOh9B,GACXuW,QAAQC,WAEvB,EAvBA,GAAa,EAAAu6E,wB,g7CCFb,aAEA,SAMA,QAEA,aAKI,WAAoBjwF,EAAkCiW,GAAlC,KAAAjW,cAAkC,KAAAiW,mBAJtD,KAAA8qD,iBAA2B,MAEnB,KAAAszB,aAA2B,KAoQvC,OAhQI,YAAAj0B,UAAA,WACI,OAAyB,MAArB9/D,KAAK+zF,gBAIyC,IAA9ClkF,UAAUC,UAAUrL,QAAQ,eAAmE,IAA5CoL,UAAUC,UAAUrL,QAAQ,WAC/EzE,KAAK+zF,aAAe,EAAA3gE,WAAWc,eACxBrkB,UAAUC,UAAUrL,QAAQ,UAAY,EAC/CzE,KAAK+zF,aAAe,EAAA3gE,WAAWe,cACmB,IAA3CtkB,UAAUC,UAAUrL,QAAQ,UACnCzE,KAAK+zF,aAAe,EAAA3gE,WAAWkB,aACsB,IAA9CzkB,UAAUC,UAAUrL,QAAQ,aACnCzE,KAAK+zF,aAAe,EAAA3gE,WAAWiB,gBACqB,IAA7CxkB,UAAUC,UAAUrL,QAAQ,cAAiE,IAA3CoL,UAAUC,UAAUrL,QAAQ,UACrFzE,KAAK+zF,aAAe,EAAA3gE,WAAWgB,cACvBtpB,OAAekpF,SAAuD,IAA7CnkF,UAAUC,UAAUrL,QAAQ,YAC7DzE,KAAK+zF,aAAe,EAAA3gE,WAAWa,eACsB,IAA9CpkB,UAAUC,UAAUrL,QAAQ,aACnCzE,KAAK+zF,aAAe,EAAA3gE,WAAWmB,UAE/Bv0B,KAAK+zF,aAAe,EAAA3gE,WAAWoB,gBAlBxBx0B,KAAK+zF,cAwBpB,YAAAhN,gBAAA,WAEI,OADe,EAAA3zD,WAAWpzB,KAAK8/D,aAAap1D,cAC9BzF,QAAQ,UAAW,KAGrC,YAAAgvF,UAAA,WACI,OAAOj0F,KAAK8/D,cAAgB,EAAA1sC,WAAWc,gBAG3C,YAAAggE,SAAA,WACI,OAAOl0F,KAAK8/D,cAAgB,EAAA1sC,WAAWa,eAG3C,YAAAm0D,OAAA,WACI,OAAOpoF,KAAK8/D,cAAgB,EAAA1sC,WAAWkB,aAG3C,YAAA6/D,QAAA,WACI,OAAOn0F,KAAK8/D,cAAgB,EAAA1sC,WAAWe,cAG3C,YAAAigE,UAAA,WACI,OAAOp0F,KAAK8/D,cAAgB,EAAA1sC,WAAWiB,gBAG3C,YAAAggE,SAAA,WACI,OAAOr0F,KAAK8/D,cAAgB,EAAA1sC,WAAWgB,eAG3C,YAAAi0D,KAAA,WACI,OAAOroF,KAAK8/D,cAAgB,EAAA1sC,WAAWmB,WAG3C,YAAA+/D,cAAA,WACI,OAAO,GAGX,YAAAC,YAAA,WACI,MAAO,iBAGX,YAAAlR,WAAA,WACI,OAAOluE,QAAQC,SAAQ,IAG3B,YAAAkuE,YAAA,WACI,OAAO,MAGX,YAAAl/D,UAAA,SAAUjgB,EAAa8rB,GACnB,IAAM5gB,EAAIe,SAASC,cAAc,KACjChB,EAAEiB,KAAOnM,EACTkL,EAAEg6B,OAAS,SACXh6B,EAAEmlF,IAAM,sBACRnlF,EAAEw9B,UAAUC,IAAI,UAChB18B,SAASuL,KAAKH,YAAYnM,GAC1BA,EAAEolF,QACFrkF,SAASuL,KAAKF,YAAYpM,IAG9B,YAAA0vC,SAAA,SAASpvC,EAAa+kF,EAAeC,EAAkBrtE,GACnD,IAAIimD,EAAa,KACbtlE,EAAe,KACb2sF,EAAgBttE,EAAS5c,cAC3BmqF,GAAa,EA8BjB,GA7BID,EAAcE,SAAS,SACvB7sF,EAAO,kBACP4sF,GAAa,GACND,EAAcE,SAAS,SAC9B7sF,EAAO,oEACA2sF,EAAcE,SAAS,SAC9B7sF,EAAO,0EACA2sF,EAAcE,SAAS,SAC9B7sF,EAAO,4EACA2sF,EAAcE,SAAS,QAC9B7sF,EAAO,WACA2sF,EAAcE,SAAS,QAC9B7sF,EAAO,YACA2sF,EAAcE,SAAS,SAAWF,EAAcE,SAAS,SAChE7sF,EAAO,aACA2sF,EAAcE,SAAS,UAC9B7sF,EAAO,aAEC,MAARA,GAEwB,OADxB0sF,EAAcA,GAAe,IACb1sF,OACZ0sF,EAAY1sF,KAAOA,GAMvBslE,EAHe,MAAfonB,GAAwB30F,KAAKqoF,OAGtB,IAAI7a,KAAK,CAACknB,IAFV,IAAIlnB,KAAK,CAACknB,GAAWC,GAI5B9kF,UAAUklF,iBACVllF,UAAUmlF,WAAWznB,EAAMjmD,OACxB,CACH,IAAMjY,EAAIM,EAAIS,SAASC,cAAc,KACjCwkF,EACAxlF,EAAE6+E,SAAW5mE,EAEbjY,EAAEg6B,OAAS,SAEfh6B,EAAEiB,KAAOX,EAAIM,IAAIglF,gBAAgB1nB,GACjCl+D,EAAE0O,MAAMm3E,SAAW,QACnBvlF,EAAIS,SAASuL,KAAKH,YAAYnM,GAC9BA,EAAEolF,QACF9kF,EAAIS,SAASuL,KAAKF,YAAYpM,KAItC,YAAAu9B,sBAAA,WACI,MAAO,UAGX,YAAAzV,YAAA,SAAYxnB,GACR,OAAW,MAAPA,GAAmC,MAAnBA,EAAYomD,MAGzB/1D,KAAKk0F,aAAgBl0F,KAAKm0F,WAAan0F,KAAKo0F,eAAiB,EAAAtvF,MAAMwG,kBAG9E,YAAA4rB,YAAA,WACI,OAAO,GAGX,YAAAp2B,UAAA,SAAUmH,EAAgDnG,EAAewhB,EACrE2M,GACAjwB,KAAK2V,iBAAiBkB,KAAK,YAAa,CACpCyM,KAAMA,EACNxhB,MAAOA,EACPmG,KAAMA,EACNgoB,QAASA,KAIX,YAAApF,WAAN,SAAiBvH,EAAcxhB,EAAgBqzF,EAAsBC,EAAqBntF,G,kGAEtF,GADIotF,EAAsB,KACd,MAARptF,EAEA,OAAQA,GACJ,IAAK,UACDotF,EAAc,wBACd,MACJ,IAAK,UACDA,EAAc,0BACd,MACJ,IAAK,QACDA,EAAc,sBACd,MACJ,IAAK,OACDA,EAAc,2BAQR,OADZC,EAA6B,MAAfD,EAAsB,iCAAiCA,EAAW,cAAWtrF,EAC/E,GAAM,UAAKwrF,KAAK,CAC9BC,YAAY,EACZC,gBAAgB,EAChBzrF,KAAM/B,EACNytF,SAAUJ,EACVhyE,KAAMA,EACNxhB,MAAOA,EACP6zF,iBAAiC,MAAdP,EACnBQ,iBAAkBR,EAClBS,mBAAmB,EACnBC,kBAAkC,MAAfX,EAAsBn1F,KAAKN,YAAYO,EAAE,MAAQk1F,K,OAGxE,MAAO,CAAP,EAbkB,SAaDx2F,eAGrB,YAAAssB,WAAA,SAAWE,EAAgB3O,EAAgByT,GACvCjwB,KAAK2V,iBAAiBkB,KAAK,sBAAuB,CAC9CsU,OAAQA,EACR3O,MAAOA,EACPyT,QAASA,KAIjB,YAAApV,MAAA,WACI,OAAO,GAGX,YAAAiqB,WAAA,WACI,MAA4C,WAArC,GAAsBl4B,YAGjC,YAAA0vB,gBAAA,SAAgBhZ,EAAc2M,GAC1B,IAAItgB,EAAM7E,OACNlI,EAAMkI,OAAOsF,SAOjB,GANI6f,IAAYA,EAAQnlB,QAAUmlB,EAAQtgB,KAEtC/M,GADA+M,EAAMsgB,EAAQnlB,QAAUmlB,EAAQtgB,KACtBS,SACH6f,GAAWA,EAAQrtB,MAC1BA,EAAMqtB,EAAQrtB,KAEb+M,EAAYomF,eAAkBpmF,EAAYomF,cAAcC,QAExDrmF,EAAYomF,cAAcC,QAAQ,OAAQ1yE,QACxC,GAAI1gB,EAAIqzF,uBAAyBrzF,EAAIqzF,sBAAsB,QAAS,CACvE,IAAMC,EAAWtzF,EAAIyN,cAAc,YACnC6lF,EAASryE,YAAcP,EAEvB4yE,EAASn4E,MAAMm3E,SAAW,QAC1B,IAAIiB,EAASvzF,EAAI+Y,KAEb/Y,EAAI+Y,KAAKkxB,UAAUupD,SAAS,gBAC5BD,EAASvzF,EAAI+Y,KAAK5Y,cAA2B,WAEjDozF,EAAO36E,YAAY06E,GACnBA,EAAS96D,SACT,IAEIx4B,EAAIyzF,YAAY,QAClB,MAAO30F,GAELkC,QAAQC,KAAK,4BAA6BnC,G,QAE1Cy0F,EAAO16E,YAAYy6E,MAK/B,YAAAI,kBAAA,SAAkBrmE,GACd,MAAM,IAAI3lB,MAAM,uCAExB,EAvQA,GAAa,EAAAmlF,2B,k7CCNb,UAEA,SAIa,EAAA8G,eAAY,MACpB,EAAAnjE,WAAWI,iBAAkB,gBAC9B,EAAC,EAAAJ,WAAWK,kBAAmB,gBAC/B,EAAC,EAAAL,WAAWM,gBAAiB,gBAC7B,EAAC,EAAAN,WAAWO,eAAgB,gBAC5B,EAAC,EAAAP,WAAWQ,kBAAmB,iBAC/B,EAAC,EAAAR,WAAWS,iBAAkB,iBAC9B,EAAC,EAAAT,WAAWU,gBAAiB,iBAC7B,EAAC,EAAAV,WAAWY,cAAe,iBAC3B,EAAC,EAAAZ,WAAWW,cAAe,iB,GAG/B,iBAKI,WAAYpkB,EAAqB6mF,EACrBp2F,EAAqD85B,EACrDlE,EAAqCygE,GAFjD,WAGI,GAH6B,KAAAD,WACrB,KAAAp2F,uBAAqD,KAAA85B,iBACrD,KAAAlE,eAAqC,KAAAygE,qBANzC,KAAAC,aAAuB,KACvB,KAAAC,iBAAkB,EAMI,MAAtBF,EAA4B,CAC5B,IAAMG,EAAOH,IACe,MAAxBr2F,GAAgCw2F,EAAKx2F,uBACrCJ,KAAKI,qBAAuBw2F,EAAKx2F,sBAEf,MAAlB85B,GAA0B08D,EAAK18D,iBAC/Bl6B,KAAKk6B,eAAiB08D,EAAK18D,gBAEX,MAAhBlE,GAAwB4gE,EAAK5gE,eAC7Bh2B,KAAKg2B,aAAe4gE,EAAK5gE,cAIjCh2B,KAAK62F,WAAa72F,KAAKI,qBAAqBwsC,wBAC5C5sC,KAAK22F,gBAAkB32F,KAAKI,qBAAqB0/D,cAAgB,EAAA1sC,WAAWK,kBACxEzzB,KAAKI,qBAAqBk0F,gBAC9Bt0F,KAAK02F,aAAe12F,KAAKI,qBAAqBm0F,cAE7C5kF,EAAYmnF,sBAxCP,KAyCLnnF,EAAiB,GAAI,SAAOwb,EAAgB4rE,EAAaC,GAAY,qC,kDAClE,SAAMh3F,KAAKi3F,GAAG9rE,EAAQ4rE,EAAQC,I,cAA9B,S,YAsEZ,OAlEU,YAAAC,GAAN,SAAS9rE,EAAgB4rE,EAAaC,G,wGAClC,U,OAOA,OADME,EAAW,SACZl3F,KAAK22F,iBAA+B,MAAZO,GAAiC,MAAZA,GAAoBA,EAClE,IAGW,SAAX/rE,GAAsB4rE,EAIN,GAAM/2F,KAAKg2B,aAAakyC,qBAHxC,I,cAGEivB,EAAc,SACdxqD,EAAUpgC,mBAAmBvM,KAAK62F,YACpCh2F,EAAU,WAAab,KAAK02F,aAAe,QAAUS,EAAc,QAAUxqD,EAElE,aAAXoqD,GAAyBC,EACzBn2F,GAAWb,KAAKo3F,gBAAgBJ,GACP,iBAAXD,GAA0C,aAAnBA,EAAOM,QAC5Cx2F,GAAWb,KAAKo3F,gBAAgBL,EAAOO,MACrB,UAAXP,GAAsBC,EAC7Bn2F,GAAWb,KAAKu3F,aAAaP,GACJ,iBAAXD,GAA0C,UAAnBA,EAAOM,UAC5Cx2F,GAAWb,KAAKu3F,aAAaR,KAG3Bv1E,EAAU,IAAIg2E,gBACZ7iC,KAAK,OAAQ,4CAA4C,GACjEnzC,EAAQ3K,KAAKhW,G,YAGT,YAAA02F,aAAR,SAAqBtnE,GACjB,MAAO,gBAAkBA,EAAQwnE,cAAgBlrF,mBAAmB0jB,EAAQwnE,eAAiB,SACzF,OAASlrF,mBAAmB0jB,EAAQynE,cACnCznE,EAAQ0nE,WAAa,OAASprF,mBAAmB0jB,EAAQ0nE,YAAc,KACvE1nE,EAAQ2nE,WAAa,OAASrrF,mBAAmB0jB,EAAQ2nE,YAAc,KACvE3nE,EAAQqnE,KAAO,OAASt3F,KAAK63F,cAAc5nE,EAAQqnE,MAAQ,KAG5D,YAAAF,gBAAR,SAAwBU,GACpB,MAAO,kBAAoB93F,KAAK63F,cAAcC,IAG1C,YAAAD,cAAR,SAAsBC,GAClB,IAAMC,EAAaD,EAASrzF,QAAQ,KAChCszF,GAAc,IACdD,EAAWA,EAASpzF,UAAU,EAAGqzF,IAEN,IAA3BD,EAASrzF,QAAQ,OAA0C,IAA3BqzF,EAASrzF,QAAQ,QACjDqzF,EAAWA,EAASpzF,UAAU,IAElC,IAAMszF,EAAYF,EAASzyF,MAAM,KAC3B4yF,EAAyB,GAQ/B,OAPAD,EAAUt0F,SAAQ,SAACwR,GACXA,EAAE3Q,MAAM,8EACR0zF,EAAax3F,KAAK,YAElBw3F,EAAax3F,KAAKyU,MAGnB3I,mBAAmB0rF,EAAa90F,KAAK,OAEpD,EAlGA,GAAa,EAAA2sF,a,g7CCpBb,cAEA,UAQA,QAEA,aAGI,WAAoB51D,EAAwChhB,EAChDgR,EAAkCuQ,GAD1B,KAAAP,iBAAwC,KAAAhhB,aAChD,KAAAgR,cAAkC,KAAAuQ,gBAHtC,KAAAzvB,QAAS,EA4ErB,OAvEI,YAAAD,KAAA,SAAKm4E,GAAL,WACQljF,KAAKgL,SAIThL,KAAKgL,QAAS,EACVk4E,IACAljF,KAAK4uD,eACLnxB,aAAY,WAAM,SAAKmxB,iBAAgB,QAIzC,YAAAryB,QAAN,SAAc27D,EAAsB5qE,EAAyB6qE,G,YAAzB,IAAA7qE,MAAA,WAAyB,IAAA6qE,OAAA,G,iGAC1C,SAAMn4F,KAAKkqB,YAAY4lB,mB,OACtC,OADe,SAIO,GAAM9vC,KAAKkqB,YAAYK,uBAFzC,I,OAGJ,OAAqB,OADfG,EAAgB,WAKF,KADd0tE,EAAS,IAAIvvB,IAAYn+C,EAAcljB,QAAO,SAACqhC,GAAM,OAAAA,EAAEoZ,aAAWt7C,KAAI,SAACkiC,GAAM,OAAAA,EAAEjpC,QAC1E6c,KAHP,IAMY,MAAZ6Q,EAAA,MACe,GAAMttB,KAAKy6B,cAAch8B,IAAI6uB,I,OAC5C,GAAc,OADR1nB,EAAS,WACgC,MAAzBA,EAAO0Y,iBAA2B85E,EAAOnhE,IAAIrxB,EAAO0Y,gBACtE,U,iBAGc,SAAMte,KAAKk6B,eAAez7B,IAAiB,EAAA8S,iBAAiBsB,qB,OASlF,OARuB,OADnBwlF,EAAkB,YAElBA,EAAkB,KAEhBpwE,EAAQ,IAAI,EAAAqwE,WACZrwF,KAAOiwF,EACbjwE,EAAMqF,SAAWA,EACjBrF,EAAMgN,MAAO,IAAIlH,MAAOlH,cACxBwxE,EAAgB53F,KAAKwnB,GACrB,GAAMjoB,KAAKk6B,eAAeqT,KAAK,EAAAh8B,iBAAiBsB,mBAAoBwlF,I,cAApE,SACIF,EACA,GAAMn4F,KAAK4uD,gBADX,M,OACA,S,mCAIF,YAAAA,aAAN,W,kGACmB,SAAM5uD,KAAKkqB,YAAY4lB,mB,OACtC,OADe,SAIS,GAAM9vC,KAAKk6B,eAAez7B,IAAiB,EAAA8S,iBAAiBsB,qBAFhF,I,OAGJ,GAAuB,OADjBwlF,EAAkB,WACkC,IAA3BA,EAAgBj6F,OAC3C,UAEEojB,EAAU62E,EAAgB1xF,KAAI,SAACjF,GACjC,IAAM06C,EAAM,IAAI,EAAAm8C,aAIhB,OAHAn8C,EAAIn0C,KAAOvG,EAAEuG,KACbm0C,EAAI9uB,SAAW5rB,EAAE4rB,SACjB8uB,EAAInnB,KAAOvzB,EAAEuzB,KACNmnB,K,iBAGP,O,sBAAA,GAAMp8C,KAAKkZ,WAAWqsD,kBAAkB/jD,I,cAAxC,SACAxhB,KAAK6uD,c,4DAIP,YAAAA,YAAN,W,0FACI,SAAM7uD,KAAKk6B,eAAe6S,OAAO,EAAAx7B,iBAAiBsB,qB,cAAlD,S,YAER,EA7EA,GAAa,EAAAG,gB,8ECZb,mBAAa,EAAAslF,a,8ECAb,mBAAa,EAAAC,gB,g7CCFb,aAEA,QAWA,SACA,SAEA,SACA,SAGA,SACA,SACA,SAEA,aACI,WAAoBt+D,EAAsCQ,EAC9CvhB,GADQ,KAAA+gB,gBAAsC,KAAAQ,gBAC9C,KAAAvhB,aAqNhB,OAnNU,YAAAy1E,UAAN,SAAgB5mD,G,YAAA,IAAAA,MAAA,O,0GAaZ,OAZIuwC,EAA2B,GAC3B5N,EAA2B,IACzB31D,EAAW,IAERtU,KAAKT,KAAKi6B,cAAc+P,kBAAkB1oC,MAAK,SAACoF,GACrD4xE,EAAa5xE,MAGjBqO,EAAStU,KAAKT,KAAKy6B,cAAcuP,kBAAkB1oC,MAAK,SAAC2H,GACrDyhE,EAAazhE,MAGjB,GAAMkM,QAAQK,IAAIT,I,OAElB,OAFA,SAEe,QAAXgzB,GACM,EAAa,IAAI/4B,IACvBspE,EAAW50E,SAAQ,SAACkD,GACJ,MAARA,EAAEhH,IACF,EAAWsP,IAAItI,EAAEhH,GAAIgH,MAIvB,EAAuB,GAC7B8jE,EAAWhnE,SAAQ,SAACqK,GAEhB,IAAIA,EAAE9F,OAAS,EAAAC,WAAWC,OAAS4F,EAAE9F,OAAS,EAAAC,WAAWoB,aAGjC,MAApByE,EAAEuQ,eAAN,CAIA,IAAM1Y,EAAc,GACpBA,EAAOuxC,OAAuB,MAAdppC,EAAEwQ,UAAoB,EAAW0Y,IAAIlpB,EAAEwQ,UACnD,EAAW9f,IAAIsP,EAAEwQ,UAAUxX,KAAO,KACtCnB,EAAOgC,SAAWmG,EAAEnG,SAAW,EAAI,KACnC,EAAK4wF,kBAAkB5yF,EAAQmI,GAC/B,EAActN,KAAKmF,OAGhB,CAAP,EAAOtC,EAAKm1F,QAAQ,MAEd,EAAe,CACjB/xF,QAAS,GACTwlC,MAAO,IAGXosC,EAAW50E,SAAQ,SAACkD,GAChB,GAAY,MAARA,EAAEhH,GAAN,CAGA,IAAMu3C,EAAS,IAAI,eACnBA,EAAOwsC,MAAM/8E,GACb,EAAQF,QAAQjG,KAAK02C,OAGzBuzB,EAAWhnE,SAAQ,SAACqK,GAChB,GAAwB,MAApBA,EAAEuQ,eAAN,CAGA,IAAM1Y,EAAS,IAAI,gBACnBA,EAAO+9E,MAAM51E,GACbnI,EAAOmZ,cAAgB,KACvB,EAAQmtB,MAAMzrC,KAAKmF,OAGhB,CAAP,EAAOg5C,KAAKC,UAAU,EAAS,KAAM,gBAIvC,YAAAsF,sBAAN,SAA4B7lC,EAAwBypB,G,YAAA,IAAAA,MAAA,O,0GA+BhD,OA9BM+nC,EAAmC,GACnCpF,EAA2B,IAC3B31D,EAAW,IAERtU,KAAKT,KAAKkZ,WAAWooC,eAAehjC,GAAgBhd,MAAK,SAACmF,GAC/D,IAAMiyF,EAA0B,GAShC,OARmB,MAAfjyF,GAA2C,MAApBA,EAAYnG,MAAgBmG,EAAYnG,KAAKlC,OAAS,GAC7EqI,EAAYnG,KAAKoD,SAAQ,SAACqK,GACtB,IAAMlH,EAAa,IAAI,EAAA2d,WAAW,IAAI,EAAAW,eAAepX,IACrD2qF,EAAmBj4F,KAAKoG,EAAWyO,UAAUhU,MAAK,SAACq3F,GAC/C7oB,EAAervE,KAAKk4F,UAIzBxjF,QAAQK,IAAIkjF,OAGvB3jF,EAAStU,KAAKT,KAAKkZ,WAAWmpD,uBAAuB/jD,GAAgBhd,MAAK,SAAC2H,GACvE,IAAM2vF,EAAsB,GAS5B,OARe,MAAX3vF,GAAmC,MAAhBA,EAAQ3I,MAAgB2I,EAAQ3I,KAAKlC,OAAS,GACjE6K,EAAQ3I,KAAKoD,SAAQ,SAACqK,GAClB,IAAMnI,EAAS,IAAI,EAAAopB,OAAO,IAAI,EAAA9J,WAAWnX,IACzC6qF,EAAen4F,KAAKmF,EAAO0P,UAAUhU,MAAK,SAACu3F,GACvCnuB,EAAWjqE,KAAKo4F,UAIrB1jF,QAAQK,IAAIojF,OAGvB,GAAMzjF,QAAQK,IAAIT,I,OAElB,OAFA,SAEe,QAAXgzB,GACM,EAAiB,IAAI/4B,IAC3B8gE,EAAepsE,SAAQ,SAACqK,GACpB,EAAemB,IAAInB,EAAEnO,GAAImO,MAGvB,EAAuB,GAC7B28D,EAAWhnE,SAAQ,SAACqK,GAEhB,GAAIA,EAAE9F,OAAS,EAAAC,WAAWC,OAAS4F,EAAE9F,OAAS,EAAAC,WAAWoB,WAAzD,CAIA,IAAM1D,EAAc,CACpB,YAAqB,IACE,MAAnBmI,EAAEgR,gBACFnZ,EAAOa,YAAcsH,EAAEgR,cAAcvX,QAAO,SAAC5H,GAAO,SAAeq3B,IAAIr3B,MAClE+G,KAAI,SAAC/G,GAAO,SAAenB,IAAImB,GAAImH,SAE5C,EAAKyxF,kBAAkB5yF,EAAQmI,GAC/B,EAActN,KAAKmF,OAGhB,CAAP,EAAOtC,EAAKm1F,QAAQ,MAEd,EAAe,CACjBhyF,YAAa,GACbylC,MAAO,IAGX4jC,EAAepsE,SAAQ,SAACqK,GACpB,IAAMlH,EAAa,IAAI,mBACvBA,EAAW88E,MAAM51E,GACjB,EAAQtH,YAAYhG,KAAKoG,MAG7B6jE,EAAWhnE,SAAQ,SAACqK,GAChB,IAAMnI,EAAS,IAAI,gBACnBA,EAAO+9E,MAAM51E,GACb,EAAQm+B,MAAMzrC,KAAKmF,MAEhB,CAAP,EAAOg5C,KAAKC,UAAU,EAAS,KAAM,gBAI7C,YAAAuF,YAAA,SAAYwqC,EAAuBkK,QAAvB,IAAAlK,MAAA,WAAuB,IAAAkK,MAAA,OAC/B,IAAM3pC,EAAM,IAAIphC,KAMhB,MAAO,aAAe6gE,EAAU,IAAMA,EAAU,IAAM,YAJlDz/B,EAAI//B,cAAgB,GAAKpvB,KAAK+4F,UAAU5pC,EAAI9/B,WAAa,EAAG,GAAUrvB,KAAK+4F,UAAU5pC,EAAI7/B,UAAW,GACpGtvB,KAAK+4F,UAAU5pC,EAAIh6B,WAAY,GAAUn1B,KAAK+4F,UAAU5pC,EAAI/5B,aAAc,GAC1Ep1B,KAAK+4F,UAAU5pC,EAAI6pC,aAAc,IAE2C,IAAMF,GAGlF,YAAAC,UAAR,SAAkB1jE,EAAa5R,EAAew1E,QAAA,IAAAA,MAAA,KAC1C,IAAMC,EAAY7jE,EAAIzoB,WACtB,OAAOssF,EAAU96F,QAAUqlB,EAAQy1E,EAC/B,IAAI7xF,MAAMoc,EAAQy1E,EAAU96F,OAAS,GAAG+E,KAAK81F,GAAgBC,GAG7D,YAAAV,kBAAR,SAA0B5yF,EAAamI,GAuBnC,OAtBAnI,EAAOqC,KAAO,KACdrC,EAAOmB,KAAOgH,EAAEhH,KAChBnB,EAAOiC,MAAQkG,EAAElG,MACjBjC,EAAOkC,OAAS,KAEhBlC,EAAOuzF,UAAY,KACnBvzF,EAAOwzF,eAAiB,KACxBxzF,EAAOyzF,eAAiB,KACxBzzF,EAAO0zF,WAAa,KAEhBvrF,EAAEjG,QACFiG,EAAEjG,OAAOpE,SAAQ,SAACkD,GACThB,EAAOkC,OAGRlC,EAAOkC,QAAU,KAFjBlC,EAAOkC,OAAS,GAKpBlC,EAAOkC,SAAYlB,EAAEG,MAAQ,IAAM,KAAOH,EAAEjI,SAI5CoP,EAAE9F,MACN,KAAK,EAAAC,WAAWC,MACZvC,EAAOqC,KAAO,QACdrC,EAAOwzF,eAAiBrrF,EAAEhG,MAAMoB,SAChCvD,EAAOyzF,eAAiBtrF,EAAEhG,MAAMqB,SAChCxD,EAAO0zF,WAAavrF,EAAEhG,MAAMic,KAExBjW,EAAEhG,MAAMsB,OACRzD,EAAOuzF,UAAY,GACnBprF,EAAEhG,MAAMsB,KAAK3F,SAAQ,SAACc,GAClBoB,EAAOuzF,UAAU14F,KAAK+D,EAAEL,SAGhC,MACJ,KAAK,EAAA+D,WAAWoB,WACZ1D,EAAOqC,KAAO,OACd,MACJ,QACI,OAGR,OAAOrC,GAEf,EAvNA,GAAa,EAAAknB,iB,uHCxBb,YAEA,SAEA,UACA,UACA,UACA,UACA,UAEA,2BAyFA,OAxFW,EAAAysE,SAAP,WACI,IAAMn9C,EAAM,IAAIptB,EAYhB,OAXAotB,EAAI99B,eAAiB,KACrB89B,EAAI79B,SAAW,KACf69B,EAAIn0C,KAAO,EAAAC,WAAWC,MACtBi0C,EAAIr1C,KAAO,YACXq1C,EAAIv0C,MAAQ,8BACZu0C,EAAIx0C,UAAW,EACfw0C,EAAIt0C,OAAS,GACbs0C,EAAIr0C,MAAQ,KACZq0C,EAAI7yC,WAAa,KACjB6yC,EAAIl2C,KAAO,KACXk2C,EAAIz9B,SAAW,KACRy9B,GAGJ,EAAAo9C,OAAP,SAAcp9C,EAAagc,GAcvB,YAduB,IAAAA,MAAA,IAAW,EAAAzwD,YAClCywD,EAAKnwD,KAAOm0C,EAAIn0C,KAChBmwD,EAAK75C,SAAW69B,EAAI79B,SACO,MAAvB65C,EAAK95C,iBACL85C,EAAK95C,eAAiB89B,EAAI99B,gBAE9B85C,EAAKrxD,KAAOq1C,EAAIr1C,KAChBqxD,EAAKvwD,MAAQu0C,EAAIv0C,MACjBuwD,EAAKxwD,SAAWw0C,EAAIx0C,SAEF,MAAdw0C,EAAIt0C,SACJswD,EAAKtwD,OAASs0C,EAAIt0C,OAAOnB,KAAI,SAACC,GAAM,SAAAqnB,MAAMurE,OAAO5yF,OAG7Cw1C,EAAIn0C,MACR,KAAK,EAAAC,WAAWC,MACZiwD,EAAKrwD,MAAQ,EAAAI,MAAMqxF,OAAOp9C,EAAIr0C,OAC9B,MACJ,KAAK,EAAAG,WAAWoB,WACZ8uD,EAAK7uD,WAAa,EAAAD,WAAWkwF,OAAOp9C,EAAI7yC,YACxC,MACJ,KAAK,EAAArB,WAAW2P,KACZugD,EAAKlyD,KAAO,EAAA2R,KAAK2hF,OAAOp9C,EAAIl2C,MAC5B,MACJ,KAAK,EAAAgC,WAAW4P,SACZsgD,EAAKz5C,SAAW,EAAA7G,SAAS0hF,OAAOp9C,EAAIz9B,UAI5C,OAAOy5C,GAgBX,YAAAurB,MAAA,SAAM96C,GAYF,OAXA7oC,KAAKse,eAAiBuqB,EAAEvqB,eACxBte,KAAKue,SAAWsqB,EAAEtqB,SAClBve,KAAKiI,KAAO4gC,EAAE5gC,KACdjI,KAAK+G,KAAO8hC,EAAE9hC,KACd/G,KAAK6H,MAAQghC,EAAEhhC,MACf7H,KAAK4H,SAAWihC,EAAEjhC,SAEF,MAAZihC,EAAE/gC,SACF9H,KAAK8H,OAAS+gC,EAAE/gC,OAAOnB,KAAI,SAACC,GAAM,WAAI,EAAAqnB,MAAMrnB,OAGxCiiC,EAAE5gC,MACN,KAAK,EAAAC,WAAWC,MACZnI,KAAK+H,MAAQ,IAAI,EAAAI,MAAM0gC,EAAE9gC,OACzB,MACJ,KAAK,EAAAG,WAAWoB,WACZtJ,KAAKuJ,WAAa,IAAI,EAAAD,WAAWu/B,EAAEt/B,YACnC,MACJ,KAAK,EAAArB,WAAW2P,KACZ7X,KAAKkG,KAAO,IAAI,EAAA2R,KAAKgxB,EAAE3iC,MACvB,MACJ,KAAK,EAAAgC,WAAW4P,SACZ9X,KAAK2e,SAAW,IAAI,EAAA7G,SAAS+wB,EAAElqB,YAI/C,EAzFA,GAAa,EAAAqQ,U,8ECVb,YAEA,aA6BI,WAAY6Z,GACC,MAALA,IAIJ7oC,KAAKkT,eAAiB21B,EAAE31B,eACxBlT,KAAKwT,MAAQq1B,EAAEr1B,MACfxT,KAAKyT,OAASo1B,EAAEp1B,OAChBzT,KAAKmG,SAAW0iC,EAAE1iC,SAClBnG,KAAKoG,QAAUyiC,EAAEziC,QACjBpG,KAAKmT,KAAO01B,EAAE11B,MAEtB,OAxCW,EAAAomF,SAAP,WACI,IAAMn9C,EAAM,IAAIvkC,EAOhB,OANAukC,EAAIlpC,eAAiB,WACrBkpC,EAAI5oC,MAAQ,OACZ4oC,EAAI3oC,OAAS,mBACb2oC,EAAIj2C,SAAW,KACfi2C,EAAIh2C,QAAU,OACdg2C,EAAIjpC,KAAO,MACJipC,GAGJ,EAAAo9C,OAAP,SAAcp9C,EAAWgc,GAOrB,YAPqB,IAAAA,MAAA,IAAW,EAAAvkD,UAChCukD,EAAKllD,eAAiBkpC,EAAIlpC,eAC1BklD,EAAK5kD,MAAQ4oC,EAAI5oC,MACjB4kD,EAAK3kD,OAAS2oC,EAAI3oC,OAClB2kD,EAAKjyD,SAAWi2C,EAAIj2C,SACpBiyD,EAAKhyD,QAAUg2C,EAAIh2C,QACnBgyD,EAAKjlD,KAAOipC,EAAIjpC,KACTilD,GAsBf,EAzCA,GAAa,EAAAvgD,Q,8ECFb,aAEA,SAEA,aAoBI,WAAYgxB,GACC,MAALA,IAIJ7oC,KAAK+G,KAAO8hC,EAAE9hC,KACd/G,KAAKrB,MAAQkqC,EAAElqC,MACfqB,KAAKiI,KAAO4gC,EAAE5gC,MAEtB,OA5BW,EAAAsxF,SAAP,WACI,IAAMn9C,EAAM,IAAInuB,EAIhB,OAHAmuB,EAAIr1C,KAAO,aACXq1C,EAAIz9C,MAAQ,aACZy9C,EAAIn0C,KAAO,EAAAK,UAAUC,KACd6zC,GAGJ,EAAAo9C,OAAP,SAAcp9C,EAAYgc,GAItB,YAJsB,IAAAA,MAAA,IAAW,EAAA1vD,WACjC0vD,EAAKnwD,KAAOm0C,EAAIn0C,KAChBmwD,EAAKz5D,MAAQy9C,EAAIz9C,MACjBy5D,EAAKrxD,KAAOq1C,EAAIr1C,KACTqxD,GAgBf,EA7BA,GAAa,EAAAnqC,S,8ECJb,aAEA,aAiEI,WAAY4a,GACC,MAALA,IAIJ7oC,KAAK8B,MAAQ+mC,EAAE/mC,MACf9B,KAAKogB,UAAYyoB,EAAEzoB,UACnBpgB,KAAKqf,WAAawpB,EAAExpB,WACpBrf,KAAKqgB,SAAWwoB,EAAExoB,SAClBrgB,KAAKsf,SAAWupB,EAAEvpB,SAClBtf,KAAKuf,SAAWspB,EAAEtpB,SAClBvf,KAAKwf,SAAWqpB,EAAErpB,SAClBxf,KAAKyf,KAAOopB,EAAEppB,KACdzf,KAAK0f,MAAQmpB,EAAEnpB,MACf1f,KAAK2f,WAAakpB,EAAElpB,WACpB3f,KAAKga,QAAU6uB,EAAE7uB,QACjBha,KAAK4f,QAAUipB,EAAEjpB,QACjB5f,KAAK6f,MAAQgpB,EAAEhpB,MACf7f,KAAK8f,MAAQ+oB,EAAE/oB,MACf9f,KAAK+f,IAAM8oB,EAAE9oB,IACb/f,KAAKmJ,SAAW0/B,EAAE1/B,SAClBnJ,KAAKggB,eAAiB6oB,EAAE7oB,eACxBhgB,KAAKigB,cAAgB4oB,EAAE5oB,eAE/B,OAxFW,EAAAs5E,SAAP,WACI,IAAMn9C,EAAM,IAAItkC,EAmBhB,OAlBAskC,EAAIt6C,MAAQ,KACZs6C,EAAIh8B,UAAY,OAChBg8B,EAAI/8B,WAAa,UACjB+8B,EAAI/7B,SAAW,MACf+7B,EAAI98B,SAAW,aACf88B,EAAI78B,SAAW,WACf68B,EAAI58B,SAAW,KACf48B,EAAI38B,KAAO,WACX28B,EAAI18B,MAAQ,KACZ08B,EAAIz8B,WAAa,QACjBy8B,EAAIpiC,QAAU,KACdoiC,EAAIx8B,QAAU,YACdw8B,EAAIv8B,MAAQ,mBACZu8B,EAAIt8B,MAAQ,aACZs8B,EAAIr8B,IAAM,eACVq8B,EAAIjzC,SAAW,OACfizC,EAAIp8B,eAAiB,eACrBo8B,EAAIn8B,cAAgB,oBACbm8B,GAGJ,EAAAo9C,OAAP,SAAcp9C,EAAegc,GAmBzB,YAnByB,IAAAA,MAAA,IAAW,EAAAx5C,cACpCw5C,EAAKt2D,MAAQs6C,EAAIt6C,MACjBs2D,EAAKh4C,UAAYg8B,EAAIh8B,UACrBg4C,EAAK/4C,WAAa+8B,EAAI/8B,WACtB+4C,EAAK/3C,SAAW+7B,EAAI/7B,SACpB+3C,EAAK94C,SAAW88B,EAAI98B,SACpB84C,EAAK74C,SAAW68B,EAAI78B,SACpB64C,EAAK54C,SAAW48B,EAAI58B,SACpB44C,EAAK34C,KAAO28B,EAAI38B,KAChB24C,EAAK14C,MAAQ08B,EAAI18B,MACjB04C,EAAKz4C,WAAay8B,EAAIz8B,WACtBy4C,EAAKp+C,QAAUoiC,EAAIpiC,QACnBo+C,EAAKx4C,QAAUw8B,EAAIx8B,QACnBw4C,EAAKv4C,MAAQu8B,EAAIv8B,MACjBu4C,EAAKt4C,MAAQs8B,EAAIt8B,MACjBs4C,EAAKr4C,IAAMq8B,EAAIr8B,IACfq4C,EAAKjvD,SAAWizC,EAAIjzC,SACpBivD,EAAKp4C,eAAiBo8B,EAAIp8B,eAC1Bo4C,EAAKn4C,cAAgBm8B,EAAIn8B,cAClBm4C,GA8Cf,EAzFA,GAAa,EAAAtgD,Y,8ECFb,cAEA,SAEA,aAyBI,WAAY+wB,GACC,MAALA,IAIU,MAAVA,EAAEx/B,OACFrJ,KAAKqJ,KAAOw/B,EAAEx/B,KAAK1C,KAAI,SAACnC,GAAM,WAAI,EAAAo0D,SAASp0D,OAG/CxE,KAAKmJ,SAAW0/B,EAAE1/B,SAClBnJ,KAAKoJ,SAAWy/B,EAAEz/B,SAClBpJ,KAAKgkB,KAAO6kB,EAAE7kB,MAEtB,OArCW,EAAAu1E,SAAP,WACI,IAAMn9C,EAAM,IAAIj0C,EAKhB,OAJAi0C,EAAI/yC,KAAO,GACX+yC,EAAIjzC,SAAW,OACfizC,EAAIhzC,SAAW,gBACfgzC,EAAIp4B,KAAO,mBACJo4B,GAGJ,EAAAo9C,OAAP,SAAcp9C,EAAYgc,GAOtB,YAPsB,IAAAA,MAAA,IAAW,EAAApwD,WACjB,MAAZo0C,EAAI/yC,OACJ+uD,EAAK/uD,KAAO+yC,EAAI/yC,KAAK1C,KAAI,SAACnC,GAAM,SAAAo0D,SAAS4gC,OAAOh1F,OAEpD4zD,EAAKjvD,SAAWizC,EAAIjzC,SACpBivD,EAAKhvD,SAAWgzC,EAAIhzC,SACpBgvD,EAAKp0C,KAAOo4B,EAAIp4B,KACTo0C,GAqBf,EAtCA,GAAa,EAAAjwD,S,8ECFb,aAEA,aAiBI,WAAY0gC,GAFZ,KAAAtkC,MAAsB,KAGT,MAALskC,IAIJ7oC,KAAKmE,IAAM0kC,EAAE1kC,IACbnE,KAAKuE,MAAQskC,EAAEtkC,OAEvB,OAxBW,EAAAg1F,SAAP,WACI,IAAMn9C,EAAM,IAAIwc,EAGhB,OAFAxc,EAAIj4C,IAAM,qBACVi4C,EAAI73C,MAAQ,KACL63C,GAGJ,EAAAo9C,OAAP,SAAcp9C,EAAegc,GAGzB,YAHyB,IAAAA,MAAA,IAAW,EAAA/zD,cACpC+zD,EAAKj0D,IAAMi4C,EAAIj4C,IACfi0D,EAAK7zD,MAAQ63C,EAAI73C,MACV6zD,GAcf,EAzBA,GAAa,EAAAQ,Y,8ECJb,aAEA,QAEA,aAcI,WAAY/vB,GACC,MAALA,IAIJ7oC,KAAKiI,KAAO4gC,EAAE5gC,MAEtB,OApBW,EAAAsxF,SAAP,WACI,IAAMn9C,EAAM,IAAI9yC,EAEhB,OADA8yC,EAAIn0C,KAAO,EAAAwB,eAAeC,QACnB0yC,GAGJ,EAAAo9C,OAAP,SAAcp9C,EAAiBgc,GAE3B,YAF2B,IAAAA,MAAA,IAAW,EAAA5uD,gBACtC4uD,EAAKnwD,KAAOm0C,EAAIn0C,KACTmwD,GAYf,EArBA,GAAa,EAAA9uD,c,8ECJb,aAEA,2BA4BA,OA3BW,EAAAiwF,SAAP,WACI,IAAMn9C,EAAM,IAAI53B,EAIhB,OAHA43B,EAAI99B,eAAiB,uCACrB89B,EAAIr1C,KAAO,kBACXq1C,EAAI/3B,WAAa,KACV+3B,GAGJ,EAAAo9C,OAAP,SAAcp9C,EAAiBgc,GAM3B,YAN2B,IAAAA,MAAA,IAAW,EAAAtxD,gBACtCsxD,EAAKrxD,KAAOq1C,EAAIr1C,KAChBqxD,EAAK/zC,WAAa+3B,EAAI/3B,WACK,MAAvB+zC,EAAK95C,iBACL85C,EAAK95C,eAAiB89B,EAAI99B,gBAEvB85C,GAQX,YAAAurB,MAAA,SAAM96C,GACF7oC,KAAKse,eAAiBuqB,EAAEvqB,eACxBte,KAAK+G,KAAO8hC,EAAE9hC,KACd/G,KAAKqkB,WAAawkB,EAAExkB,YAE5B,EA5BA,GAAa,EAAAG,c,8ECFb,aAEA,2BAkBA,OAjBW,EAAA+0E,SAAP,WACI,IAAMn9C,EAAM,IAAIi8B,EAEhB,OADAj8B,EAAIr1C,KAAO,cACJq1C,GAGJ,EAAAo9C,OAAP,SAAcp9C,EAAagc,GAEvB,YAFuB,IAAAA,MAAA,IAAW,EAAApvD,YAClCovD,EAAKrxD,KAAOq1C,EAAIr1C,KACTqxD,GAMX,YAAAurB,MAAA,SAAM96C,GACF7oC,KAAK+G,KAAO8hC,EAAE9hC,MAEtB,EAlBA,GAAa,EAAAsxE,U,g7CCUb,YAEA,QAEA,SACA,SACA,SACA,UACA,UACA,UAIA,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,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WAEA,cA2DI,WAAoB59C,EAAsCR,EAC9C/gB,EAAgCxZ,EAChCs6B,GAFQ,KAAAS,gBAAsC,KAAAR,gBAC9C,KAAA/gB,aAAgC,KAAAxZ,cAChC,KAAAs6B,oBA5DZ,KAAA4O,sBAAwB,CACpB,CAAEhpC,GAAI,gBAAiBmH,KAAM,oBAC7B,CAAEnH,GAAI,eAAgBmH,KAAM,mBAC5B,CAAEnH,GAAI,cAAemH,KAAM,kBAC3B,CAAEnH,GAAI,YAAamH,KAAM,gBACzB,CAAEnH,GAAI,aAAcmH,KAAM,iBAC1B,CAAEnH,GAAI,cAAemH,KAAM,mBAC3B,CAAEnH,GAAI,gBAAiBmH,KAAM,oBAC7B,CAAEnH,GAAI,eAAgBmH,KAAM,oBAGhC,KAAA+hC,qBAAuC,CACnC,CAAElpC,GAAI,cAAemH,KAAM,kBAC3B,CAAEnH,GAAI,kBAAmBmH,KAAM,mCAC/B,CAAEnH,GAAI,cAAemH,KAAM,kBAC3B,CAAEnH,GAAI,YAAamH,KAAM,gBACzB,CAAEnH,GAAI,YAAamH,KAAM,gBACzB,CAAEnH,GAAI,aAAcmH,KAAM,iBAC1B,CAAEnH,GAAI,iBAAkBmH,KAAM,qBAC9B,CAAEnH,GAAI,YAAamH,KAAM,uBACzB,CAAEnH,GAAI,oBAAqBmH,KAAM,yBACjC,CAAEnH,GAAI,aAAcmH,KAAM,iBAC1B,CAAEnH,GAAI,aAAcmH,KAAM,kBAC1B,CAAEnH,GAAI,mBAAoBmH,KAAM,wBAChC,CAAEnH,GAAI,eAAgBmH,KAAM,oBAC5B,CAAEnH,GAAI,cAAemH,KAAM,kBAC3B,CAAEnH,GAAI,oBAAqBmH,KAAM,yBACjC,CAAEnH,GAAI,aAAcmH,KAAM,iBAC1B,CAAEnH,GAAI,cAAemH,KAAM,kBAC3B,CAAEnH,GAAI,eAAgBmH,KAAM,mBAC5B,CAAEnH,GAAI,WAAYmH,KAAM,eACxB,CAAEnH,GAAI,eAAgBmH,KAAM,mBAC5B,CAAEnH,GAAI,SAAUmH,KAAM,oCACtB,CAAEnH,GAAI,aAAcmH,KAAM,2BAC1B,CAAEnH,GAAI,aAAcmH,KAAM,iBAC1B,CAAEnH,GAAI,cAAemH,KAAM,kBAC3B,CAAEnH,GAAI,WAAYmH,KAAM,eACxB,CAAEnH,GAAI,aAAcmH,KAAM,iBAC1B,CAAEnH,GAAI,YAAamH,KAAM,4CACzB,CAAEnH,GAAI,UAAWmH,KAAM,cACvB,CAAEnH,GAAI,mBAAoBmH,KAAM,wBAChC,CAAEnH,GAAI,cAAemH,KAAM,kBAC3B,CAAEnH,GAAI,cAAemH,KAAM,kBAC3B,CAAEnH,GAAI,WAAYmH,KAAM,yBACxB,CAAEnH,GAAI,YAAamH,KAAM,0BACzB,CAAEnH,GAAI,aAAcmH,KAAM,sBAC1B,CAAEnH,GAAI,eAAgBmH,KAAM,oCAC5B,CAAEnH,GAAI,eAAgBmH,KAAM,mBAC5B,CAAEnH,GAAI,oBAAqBmH,KAAM,wBACjC,CAAEnH,GAAI,UAAWmH,KAAM,cACvB,CAAEnH,GAAI,gBAAiBmH,KAAM,oBAC7B,CAAEnH,GAAI,eAAgBmH,KAAM,mBAC5B,CAAEnH,GAAI,gBAAiBmH,KAAM,oCAC7B,CAAEnH,GAAI,eAAgBmH,KAAM,mBAC5B,CAAEnH,GAAI,cAAemH,KAAM,kBAC3B,CAAEnH,GAAI,cAAemH,KAAM,mBAsMnC,OA/LI,YAAA0yF,iBAAA,WACI,OAAOz5F,KAAK4oC,sBAAsBjoC,OAAOX,KAAK8oC,uBAG5C,YAAAN,OAAN,SAAaL,EAAoBE,EAAsB/pB,G,YAAA,IAAAA,MAAA,M,6FAC9B,SAAM6pB,EAAS5kC,MAAM8kC,I,cAApCqxD,EAAe,UACJ9vF,QACuB,IAAhC8vF,EAAahzF,QAAQtI,QAAgD,IAAhCs7F,EAAazwF,QAAQ7K,OACnD,CAAP,EAAO,IAAIkM,MAAMtK,KAAKN,YAAYO,EAAE,wBAC7By5F,EAAazwF,QAAQ7K,OAAS,IAC/Bu7F,EAAU3rF,KAAKunB,MAAMmkE,EAAazwF,QAAQ7K,OAAS,GACnDw7F,EAAOF,EAAazwF,QAAQ7K,OAAS,EAEvC4B,KAAK65F,QAAQH,EAAazwF,QAAQ,KAClCjJ,KAAK65F,QAAQH,EAAazwF,QAAQ0wF,KAClC35F,KAAK65F,QAAQH,EAAazwF,QAAQ2wF,KAC3B,CAAP,EAAO,IAAItvF,MAAMtK,KAAKN,YAAYO,EAAE,uBAG5C,GAAMD,KAAK85F,WAAWJ,EAAcp7E,IAbpC,M,OAcA,OADA,SACO,CAAP,EAAO,M,OAEP,MAAO,CAAP,EAAO,IAAIhU,MAAMtK,KAAKN,YAAYO,EAAE,+BAI5C,YAAAmoC,YAAA,SAAYL,EAAgB1lC,QAAA,IAAAA,OAAA,GACxB,IAAM8lC,EAAWnoC,KAAK+5F,oBAAoBhyD,GAC1C,OAAgB,MAAZI,EACO,MAEXA,EAAS9lC,aAAeA,EACjB8lC,IAGH,YAAA4xD,oBAAR,SAA4BhyD,GACxB,GAAc,MAAVA,GAA6B,KAAXA,EAClB,OAAO,KAGX,OAAQA,GACJ,IAAK,eACD,OAAO,IAAI,EAAAiyD,qBACf,IAAK,gBACD,OAAO,IAAI,EAAAC,sBACf,IAAK,cACL,IAAK,cACD,OAAO,IAAI,EAAAC,oBACf,IAAK,cACD,OAAO,IAAI,EAAAC,oBACf,IAAK,WACD,OAAO,IAAI,EAAAC,iBACf,IAAK,UACD,OAAO,IAAI,EAAAC,gBACf,IAAK,iBACD,OAAO,IAAI,GAAAC,uBACf,IAAK,aACD,OAAO,IAAI,EAAAC,mBACf,IAAK,cACD,OAAO,IAAI,EAAAC,oBACf,IAAK,YACL,IAAK,WACL,IAAK,aACD,OAAO,IAAI,EAAAC,kBACf,IAAK,aACD,OAAO,IAAI,EAAAC,mBACf,IAAK,SACD,OAAO,IAAI,GAAAC,eACf,IAAK,eACD,OAAO,IAAI,GAAAC,qBACf,IAAK,aACD,OAAO,IAAI,EAAAC,mBACf,IAAK,gBACD,OAAO,IAAI,EAAAC,wBACf,IAAK,kBACD,OAAO,IAAI,EAAAC,0BACf,IAAK,YACD,OAAO,IAAI,EAAAC,kBACf,IAAK,oBACD,OAAO,IAAI,EAAAC,0BACf,IAAK,YACD,OAAO,IAAI,EAAAC,kBACf,IAAK,aACD,OAAO,IAAI,EAAAC,mBACf,IAAK,YACD,OAAO,IAAI,EAAAC,wBACf,IAAK,eACD,OAAO,IAAI,EAAAC,qBACf,IAAK,aACD,OAAO,IAAI,EAAAC,mBACf,IAAK,oBACD,OAAO,IAAI,GAAAC,0BACf,IAAK,aACD,OAAO,IAAI,GAAAC,mBACf,IAAK,eACD,OAAO,IAAI,EAAAC,qBACf,IAAK,cACD,OAAO,IAAI,EAAAC,oBACf,IAAK,aACD,OAAO,IAAI,EAAAC,mBACf,IAAK,mBACD,OAAO,IAAI,EAAAC,yBACf,IAAK,eACD,OAAO,IAAI,GAAAC,qBACf,IAAK,cACD,OAAO,IAAI,GAAAC,oBACf,IAAK,cACD,OAAO,IAAI,EAAAC,oBACf,IAAK,YACD,OAAO,IAAI,EAAAC,kBACf,IAAK,mBACD,OAAO,IAAI,EAAAC,yBACf,IAAK,cACD,OAAO,IAAI,EAAAC,oBACf,IAAK,cACD,OAAO,IAAI,EAAAC,oBACf,IAAK,WACD,OAAO,IAAI,EAAAC,iBACf,IAAK,YACD,OAAO,IAAI,EAAAC,kBACf,IAAK,aACD,OAAO,IAAI,EAAAC,mBACf,IAAK,eACD,OAAO,IAAI,EAAAC,qBACf,IAAK,eACD,OAAO,IAAI,EAAAC,qBACf,IAAK,oBACD,OAAO,IAAI,EAAAC,0BACf,IAAK,UACD,OAAO,IAAI,EAAAC,gBACf,IAAK,gBACD,OAAO,IAAI,GAAAC,sBACf,IAAK,eACD,OAAO,IAAI,EAAAC,qBACf,IAAK,gBACD,OAAO,IAAI,EAAAC,sBACf,IAAK,eACD,OAAO,IAAI,EAAAC,qBACf,IAAK,cACD,OAAO,IAAI,EAAAC,oBACf,IAAK,cACD,OAAO,IAAI,EAAAC,oBACf,QACI,OAAO,OAIL,YAAAlD,WAAd,SAAyBJ,EAA4Bp7E,G,YAAA,IAAAA,MAAA,M,oGAC3B,MAAlBA,EAAA,aACM,EAAU,IAAI,EAAA2+E,qBACX/+F,EAAI,E,wBAAGA,EAAIw7F,EAAazwF,QAAQ7K,OAC3B,GAAM4B,KAAKy6B,cAAc+K,QAAQk0D,EAAazwF,QAAQ/K,KADrB,M,OACrC6P,EAAI,SACV,EAAQ9E,QAAQxI,KAAK,IAAI,EAAAgnB,cAAc1Z,I,wBAFM7P,I,gBAIrB,MAAxBw7F,EAAahzF,QAAb,YACSxI,EAAI,E,wBAAGA,EAAIw7F,EAAahzF,QAAQtI,OAC3B,GAAM4B,KAAKi6B,cAAcuL,QAAQk0D,EAAahzF,QAAQxI,KADrB,M,OACrC0I,EAAI,SACV,EAAQF,QAAQjG,KAAK,IAAI,EAAA22C,cAAcxwC,I,wBAFM1I,I,aAS9C,OAJiC,MAApCw7F,EAAapzF,qBACbozF,EAAapzF,oBAAoB5C,SAAQ,SAAC6C,GACtC,SAAQD,oBAAoB7F,KAAK,IAAI,EAAAy8F,WAAW32F,EAAE,GAAIA,EAAE,QAEzD,GAAMvG,KAAKkZ,WAAW8pD,kBAAkB,I,OAA/C,MAAO,CAAP,EAAO,U,QAED,EAAU,IAAI,EAAAm6B,iCACXj/F,EAAI,E,0BAAGA,EAAIw7F,EAAazwF,QAAQ7K,QACrCs7F,EAAazwF,QAAQ/K,GAAGogB,eAAiBA,EAC/B,GAAMte,KAAKy6B,cAAc+K,QAAQk0D,EAAazwF,QAAQ/K,MAFrB,O,QAErC6P,EAAI,SACV,EAAQ9E,QAAQxI,KAAK,IAAI,EAAAgnB,cAAc1Z,I,0BAHM7P,I,kBAKjB,MAA5Bw7F,EAAajzF,YAAb,aACSvI,EAAI,E,0BAAGA,EAAIw7F,EAAajzF,YAAYrI,QACzCs7F,EAAajzF,YAAYvI,GAAGogB,eAAiBA,EACnC,GAAMte,KAAKg6B,kBAAkBwL,QAAQk0D,EAAajzF,YAAYvI,MAFzB,O,QAEzC6P,EAAI,SACV,EAAQtH,YAAYhG,KAAK,IAAI,EAAAm5D,kBAAkB7rD,I,0BAHE7P,I,eAUlD,OAJqC,MAAxCw7F,EAAalzF,yBACbkzF,EAAalzF,wBAAwB9C,SAAQ,SAAC6C,GAC1C,SAAQC,wBAAwB/F,KAAK,IAAI,EAAAy8F,WAAW32F,EAAE,GAAIA,EAAE,QAE7D,GAAMvG,KAAKkZ,WAAW+pD,8BAA8B3kD,EAAgB,I,QAA3E,MAAO,CAAP,EAAO,kBAIP,YAAAu7E,QAAR,SAAgB9rF,GACZ,OAAkB,MAAVA,EAAEhH,MAA2B,OAAXgH,EAAEhH,OACvBgH,EAAE9F,OAAS,EAAAC,WAAWC,OAAoB,MAAX4F,EAAEhG,OAAiB,EAAAjD,MAAMd,mBAAmB+J,EAAEhG,MAAMqB,WAEhG,EA9PA,GAAa,EAAAyjB,kB,8ECxEb,iBACI,KAAA5jB,QAA2B,GAC3B,KAAAvC,QAA2B,GAC3B,KAAAJ,oBAAyD,IAHhD,EAAA22F,wB,8ECAb,iBACI,KAAAh0F,QAA2B,GAC3B,KAAAxC,YAAmC,GACnC,KAAAD,wBAA6D,IAHpD,EAAA22F,oC,8ECJb,MAII,SAAYv+F,EAASD,GACjBqB,KAAKpB,IAAMA,EACXoB,KAAKrB,MAAQA,GANR,EAAAu+F,c,8ZCAb,YAGA,QAEA,2B,+CAiDA,OAjDwC,OACpC,YAAA35F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,KAAIA,EAAMP,OAAS,GAAnB,CAIA,IAAMwH,EAAS,EAAK8B,kBAIpB,GAHA9B,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMA,EAAMP,OAAS,IAC3DwH,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM,GAAI,MAE3CA,EAAMP,OAAS,GAAMO,EAAMP,OAAS,GAAO,EAC3C,IAAK,IAAIF,EAAI,EAAGA,EAAIS,EAAMP,OAAS,EAAGF,GAAK,EAAG,CAC1C,IAAMqX,EAAc5W,EAAMT,EAAI,GACxBuK,EAAgB9J,EAAMT,EAAI,GAChC,IAAI,EAAK8F,mBAAmBuR,KAAQ,EAAKvR,mBAAmByE,GAA5D,CAIA,IAAM20F,EAAa30F,EAAMiC,cACI,MAAzB9E,EAAOmC,MAAMqB,UAAoB,EAAK7G,mBAAmBkC,QAAQ24F,IAAe,EAChFx3F,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBoQ,GACf,MAAzB3P,EAAOmC,MAAMoB,UACpB,EAAK3G,mBAAmBiC,QAAQ24F,IAAe,EAC/Cx3F,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBoQ,IAClB,MAArB3P,EAAOmC,MAAMsB,MAA6C,IAA7BzD,EAAOmC,MAAMsB,KAAKjL,SACvD,EAAKsE,cAAc+B,QAAQ24F,IAAe,EAC1Cx3F,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAaqR,GAEtC,EAAKlN,WAAWzC,EAAQ6C,EAAO8M,IAK3C,EAAKrM,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EAjDA,CAAwC,EAAAsG,cAA3B,EAAAgyF,sB,8ZCLb,YAGA,QAEA,2B,+CAsBA,OAtBsC,OAClC,YAAAp4F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,IAAMiH,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMoI,MAC3CnB,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAM0+F,KAC5Cz3F,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMyK,UACrDxD,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMoJ,OACrD,EAAKK,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EAtBA,CAAsC,EAAAsG,cAAzB,EAAAyyF,oB,8ZCLb,YAGA,QAEA,QACA,SAEA,2B,+CA4DA,OA5DuC,OACnC,YAAA74F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAUiW,KAAKr7C,MAAMjD,GAC3B,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGW,MAAlBslC,EAAQ20D,QACR30D,EAAQ20D,OAAO55F,SAAQ,SAAC/E,GACpB,IAAMiH,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM4+F,UAC3C33F,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAM6+F,MAC5C53F,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMiG,KAC5CgB,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAM8+F,KACrD73F,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAM++F,WACrD,EAAKt1F,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAIP,MAAjB+iC,EAAQ9gC,OACR8gC,EAAQ9gC,MAAMnE,SAAQ,SAAC/E,GACnB,IAAMiH,EAAS,EAAK8B,kBACpB9B,EAAOqC,KAAO,EAAAC,WAAWoB,WACzB1D,EAAO2D,WAAWtB,KAAO,EAAAwB,eAAeC,QACxC9D,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM6d,OAC3C5W,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAM2kB,MAC5C,EAAKlb,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAIP,MAAjB+iC,EAAQg1D,OACRh1D,EAAQg1D,MAAMj6F,SAAQ,SAAC/E,GACnB,IAAMiH,EAAS,EAAK8B,kBACpB9B,EAAOqC,KAAO,EAAAC,WAAW2P,KACzBjS,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM4+F,UAC3C33F,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAM6+F,MAC5C53F,EAAOM,KAAKgN,eAAiB,EAAK/N,kBAAkBxG,EAAMi/F,YAC1Dh4F,EAAOM,KAAKuN,OAAS,EAAKtO,kBAAkBxG,EAAMk/F,YAClDj4F,EAAOM,KAAKiN,KAAO,EAAKhO,kBAAkBxG,EAAMm/F,KAChDl4F,EAAOM,KAAKsN,MAAQ,EAAKlO,aAAaM,EAAOM,KAAKuN,QACtB,MAAxB9U,EAAMo/F,iBAC4B,MAA9Bp/F,EAAMo/F,eAAeh4F,QACrBH,EAAOM,KAAKC,SAAWxH,EAAMo/F,eAAeh4F,MAAQ,IAEvB,MAA7BpH,EAAMo/F,eAAe/3F,OACrBJ,EAAOM,KAAKE,QAAUzH,EAAMo/F,eAAe/3F,KAAO,KAG1D,EAAKoC,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAI5BvC,EAAOuG,SAAU,EACVvG,IAEf,EA5DA,CAAuC,EAAAsG,cAA1B,EAAA0yF,qB,8ZCRb,YAGA,QAEA,2B,+CA8BA,OA9BsC,OAClC,YAAA94F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,IAAMiH,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMoI,KACvC,EAAK5B,kBAAkB,EAAKR,YAAYhG,EAAMq/F,SAAU,OAC5Dp4F,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMq/F,SAC5Cp4F,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMyK,UAEjD,EAAKpF,mBAAmBrF,EAAMwK,YAAc,EAAKnF,mBAAmBrF,EAAMs/F,oBAC1Er4F,EAAOmC,MAAMoB,SAAWxK,EAAMs/F,oBAE9Br4F,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMwK,UACrDvD,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMs/F,qBAGhD,EAAK71F,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EA9BA,CAAsC,EAAAsG,cAAzB,EAAAywF,oB,8ZCLb,YAGA,QAEA,SACA,SACA,SAEA,SACA,QAEA,QACA,SACA,SAEA,2B,+CA6FA,OA7F0C,OACtC,YAAA72F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACT,EAAK0D,eAAiB,EAAK2B,mBAAmBrF,EAAM8H,aAC/B9H,EAAM8H,YAAuBpB,MAAM,KAC5C3B,SAAQ,SAACw6F,GAIjB,IAHA,IAAIC,GAAgB,EAChBC,EAAkB/6F,EAAOoD,YAAYrI,OAEhCF,EAAI,EAAGA,EAAImF,EAAOoD,YAAYrI,OAAQF,IAC3C,GAAImF,EAAOoD,YAAYvI,GAAG6I,OAASm3F,EAAK,CACpCC,GAAgB,EAChBC,EAAkBlgG,EAClB,MAIR,GAAIigG,EAAe,CACf,IAAMt3F,EAAa,IAAI,EAAAC,eACvBD,EAAWE,KAAOm3F,EAClB76F,EAAOoD,YAAYhG,KAAKoG,GAG5BxD,EAAOmD,wBAAwB/F,KAAK,CAAC4C,EAAO4F,QAAQ7K,OAAQggG,OAExD,EAAK/7F,cACb,EAAKsG,cAActF,EAAQ1E,EAAMw4C,QAGrC,IAAMvxC,EAAS,IAAI,EAAA+B,WAMnB,GALA/B,EAAOgC,UAAY,EAAKvF,cAAgE,MAAhD,EAAK8C,kBAAkBxG,EAAMiJ,SAAU,KAC/EhC,EAAOqC,KAAO,EAAAC,WAAWC,MACzBvC,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMkJ,OAC5CjC,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMoI,KAAM,OAE5C,EAAK/C,mBAAmBrF,EAAMmJ,QAE/B,IADA,IAAMA,EAAS,EAAK5E,aAAavE,EAAMmJ,QAC9B5J,EAAI,EAAGA,EAAI4J,EAAO1J,OAAQF,IAC/B,IAAI,EAAK8F,mBAAmB8D,EAAO5J,IAAnC,CAIA,IAAMmgG,EAAgBv2F,EAAO5J,GAAGq0F,YAAY,MAC5C,IAAuB,IAAnB8L,EAAJ,CAIqB,MAAjBz4F,EAAOkC,SACPlC,EAAOkC,OAAS,IAGpB,IAAMW,EAAQ,IAAI,EAAAC,UAClBD,EAAM1B,KAAOe,EAAO5J,GAAG+H,OAAO,EAAGo4F,GACjC51F,EAAM9J,MAAQ,KACd8J,EAAMR,KAAO,EAAAK,UAAUC,KACnBT,EAAO5J,GAAGE,OAAUigG,EAAgB,IACpC51F,EAAM9J,MAAQmJ,EAAO5J,GAAG+H,OAAOo4F,EAAgB,IAEnDz4F,EAAOkC,OAAOrH,KAAKgI,IAK3B,OADgC,MAAd9J,EAAMsJ,KAAetJ,EAAMsJ,KAAKyC,cAAgB,MAE9D,IAAK,OACD9E,EAAOqC,KAAO,EAAAC,WAAWoB,WACzB1D,EAAO2D,WAAa,IAAI,EAAAC,eACxB5D,EAAO2D,WAAWtB,KAAO,EAAAwB,eAAeC,QACxC,MACJ,QACI9D,EAAOqC,KAAO,EAAAC,WAAWC,MACzBvC,EAAOmC,MAAQ,IAAI,EAAAC,UACnBpC,EAAOmC,MAAMic,KAAO,EAAK7e,kBAAkBxG,EAAM26F,YAAc36F,EAAMqlB,MACrEpe,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMy6F,gBAAkBz6F,EAAMwK,UAC7EvD,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAM06F,gBAAkB16F,EAAMyK,UAC7E,IAAMC,EAAO,EAAKvF,kBAAkBnF,EAAMw6F,WAAax6F,EAAMwF,KAC7DyB,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAamF,GAI9ChG,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EA7FA,CAA0C,EAAAsG,cAA7B,EAAAqwF,wB,8ZChBb,YAGA,QAEA,SACA,SACA,SAEA,2B,+CA6DA,OA7D2C,OACvC,YAAAz2F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAUiW,KAAKr7C,MAAMjD,GAC3B,GAAe,MAAXqoC,GAAoC,MAAjBA,EAAQuD,OAA0C,IAAzBvD,EAAQuD,MAAM9tC,OAE1D,OADAiF,EAAOuG,SAAU,EACVvG,EAGX,IAAMi7F,EAAe,IAAItvF,IAkDzB,OAjDIhP,KAAKqC,cAAuC,MAAvBsmC,EAAQliC,YAC7BkiC,EAAQliC,YAAY/C,SAAQ,SAACqK,GACzB,IAAMlH,EAAa,EAAAg9E,iBAAiB2V,OAAOzrF,GACzB,MAAdlH,IACAA,EAAWjH,GAAK,KAChBiH,EAAWyX,eAAiB,KAC5BggF,EAAapvF,IAAInB,EAAEnO,GAAIyD,EAAOoD,YAAYrI,QAC1CiF,EAAOoD,YAAYhG,KAAKoG,OAGxB7G,KAAKqC,cAAmC,MAAnBsmC,EAAQjiC,SACrCiiC,EAAQjiC,QAAQhD,SAAQ,SAACkD,GACrB,IAAMuwC,EAAS,EAAA2sC,aAAa0V,OAAO5yF,GACrB,MAAVuwC,IACAA,EAAOv3C,GAAK,KACZ0+F,EAAapvF,IAAItI,EAAEhH,GAAIyD,EAAOqD,QAAQtI,QACtCiF,EAAOqD,QAAQjG,KAAK02C,OAKhCxO,EAAQuD,MAAMxoC,SAAQ,SAACqK,GACnB,IAAMnI,EAAS,EAAAg+E,cAAc4V,OAAOzrF,GAEpCnI,EAAOhG,GAAK,KACZgG,EAAO2Y,SAAW,KAClB3Y,EAAO0Y,eAAiB,KACxB1Y,EAAOmZ,cAAgB,KAGO,MAA1BnZ,EAAOkZ,iBAA2BlZ,EAAOkZ,gBAAgB1gB,OAAS,IAClEwH,EAAOkZ,gBAAkBlZ,EAAOkZ,gBAAgBnU,MAAM,EAAG,KAGxD,EAAKtI,cAA8B,MAAd0L,EAAEwQ,UAAoB+/E,EAAarnE,IAAIlpB,EAAEwQ,UAC/Dlb,EAAOiD,oBAAoB7F,KAAK,CAAC4C,EAAO4F,QAAQ7K,OAAQkgG,EAAa7/F,IAAIsP,EAAEwQ,YACpE,EAAKlc,cAAmC,MAAnB0L,EAAEgR,eAC9BhR,EAAEgR,cAAcrb,SAAQ,SAACg1E,GACjB4lB,EAAarnE,IAAIyhD,IACjBr1E,EAAOmD,wBAAwB/F,KAAK,CAAC4C,EAAO4F,QAAQ7K,OAAQkgG,EAAa7/F,IAAIi6E,QAKzF,EAAKtwE,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,GAEf,EA7DA,CAA2C,EAAAsG,cAA9B,EAAAswF,yB,8ZCTb,YAGA,QAEA,2B,+CA8BA,OA9B2C,OACvC,YAAA12F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,GAAuB,SAAnBA,EAAMkjD,SAAV,CAGA,IAAMj8C,EAAS,EAAK8B,kBACpB9B,EAAOgC,SAAyB,MAAdjJ,EAAM4/F,IACxB34F,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMoI,MAC3CnB,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAM6/F,OACrB,SAAnB7/F,EAAMkjD,WACNj8C,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMiG,KAC5CgB,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMyK,UACrDxD,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMwK,WAEzD,EAAKD,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EA9BA,CAA2C,EAAAsG,cAA9B,EAAAkzF,yB,8ZCLb,YAGA,QAEA,2B,+CAiCA,OAjCqC,OACjC,YAAAt5F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACO,SAAhBA,EAAM6d,QACN7d,EAAM6d,MAAQ,MAElB,IAAM5W,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM6d,MACvC,EAAKrX,kBAAkB,EAAKR,YAAYhG,EAAMmQ,QAAS,OAC3DlJ,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMmQ,QAC5ClJ,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMyK,UAEjD,EAAKpF,mBAAmBrF,EAAMkhB,SAAW,EAAK7b,mBAAmBrF,EAAMwK,UACvEvD,EAAOmC,MAAMoB,SAAWxK,EAAMwK,UAE9BvD,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMkhB,OACrDja,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMwK,WAGhD,EAAKf,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EAjCA,CAAqC,EAAAsG,cAAxB,EAAA0wF,mB,8ZCLb,YAGA,QAEMoE,EAAgB,CAClB,YAAa,cAAe,QAAS,WAAY,WAAY,MAAO,MAGxE,2B,+CAyCA,OAzC0C,OACtC,YAAAl7F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,EAAKgK,cAActF,EAAQ,EAAK8B,kBAAkBxG,EAAM,iBAExD,IAAMiH,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMmD,MAAO,MAClD8D,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMwK,UACrDvD,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMyK,UACrDxD,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMsR,KAE5C,IAAIyuF,GAAyB,EAC7B,IAAK,IAAMtvF,KAAQzQ,EACXA,EAAMM,eAAemQ,KAChBsvF,IAA2D,IAAjCD,EAAch6F,QAAQ2K,KACjDsvF,GAAyB,GAEzBA,GACA,EAAKr2F,WAAWzC,EAAQwJ,EAAMzQ,EAAMyQ,KAKhD,EAAKhH,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGpB5F,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,IAEf,EAzCA,CAA0C,EAAAsG,cAA7B,EAAAmzF,wB,8ZCTb,YAGA,QAEA,2B,+CAsBA,OAtBuC,OACnC,YAAAv5F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,IAAMiH,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMoI,KAAM,MACjDnB,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMwK,UACrDvD,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMyK,UACrDxD,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMiG,KAC5C,EAAKwD,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EAtBA,CAAuC,EAAAsG,cAA1B,EAAA8wF,qB,8ZCLb,YAGA,QAEA,2B,+CAyEA,OAzE0C,OACtC,YAAAl3F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACbjH,EAAM5C,KAAK2C,SAASrC,GAC1B,GAAW,MAAPsC,EAEA,OADAS,EAAOuG,SAAU,EACVvG,EAGX,IAAM6yF,EAAWtzF,EAAIG,cAAc,YACnC,OAAgB,MAAZmzF,GAAoBl2F,KAAKgE,mBAAmBkyF,EAASryE,cACrDxgB,EAAOitC,aAAe,oBACtBjtC,EAAOuG,SAAU,EACVvG,IAGKu7C,KAAKr7C,MAAM2yF,EAASryE,aAC5BngB,SAAQ,SAACi7F,GACb,IAAM/4F,EAAS,EAAK8B,kBAQpB,GAPK,EAAK1D,mBAAmB26F,EAAMniF,SAC/B5W,EAAOmB,KAAO43F,EAAMniF,MAAMnX,MAAM,MAAM,IAExB,MAAds5F,EAAMr+F,MAAiB,EAAK0D,mBAAmB26F,EAAMr+F,KAAKuH,SAC1DjC,EAAOiC,MAAQ82F,EAAMr+F,KAAKuH,MAAMxC,MAAM,OAAOlC,KAAK,OAG1B,MAAxBw7F,EAAMC,gBAAyD,MAA/BD,EAAMC,eAAe92F,OACrD,IAAK,IAAM1I,KAAYu/F,EAAMC,eAAe92F,OACxC,GAAK62F,EAAMC,eAAe92F,OAAO7I,eAAeG,GAAhD,CAIA,IAAMqJ,EAAQk2F,EAAMC,eAAe92F,OAAO1I,GAE1C,OADuC,MAApBqJ,EAAMo2F,WAAqBp2F,EAAMo2F,WAAWn0F,cAAgB,MAE3E,IAAK,WACD9E,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBsD,EAAM9J,OACrD,MACJ,IAAK,QACL,IAAK,WACL,IAAK,OACL,IAAK,OACDiH,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBsD,EAAM9J,OACrD,MACJ,IAAK,MACDiH,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAauE,EAAM9J,OAC5C,MACJ,QACI,IAAMmgG,EAA4B,MAAfr2F,EAAM+T,MAAgB/T,EAAM+T,MAAM9R,cAAgB,KACxC,MAAzB9E,EAAOmC,MAAMqB,UAAoB,EAAK7G,mBAAmBkC,QAAQq6F,IAAe,EAChFl5F,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBsD,EAAM9J,OACrB,MAAzBiH,EAAOmC,MAAMoB,UACpB,EAAK3G,mBAAmBiC,QAAQq6F,IAAe,EAC/Cl5F,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBsD,EAAM9J,QACxB,MAArBiH,EAAOmC,MAAMsB,MAA6C,IAA7BzD,EAAOmC,MAAMsB,KAAKjL,SACvD,EAAKsE,cAAc+B,QAAQq6F,IAAe,EAC1Cl5F,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAauE,EAAM9J,OAE5C,EAAK0J,WAAWzC,EAAQ6C,EAAM+T,MAAO/T,EAAM9J,QAO/D,EAAKuK,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EAzEA,CAA0C,EAAAsG,cAA7B,EAAA8xF,wB,8ZCLb,YAGA,QAEA,2B,+CAyCA,OAzCyC,OACrC,YAAAl4F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,EAAKgK,cAActF,EAAQ,EAAK8B,kBAAkBxG,EAAMogG,WAExD,IAAMn5F,EAAS,EAAK8B,kBACpB9B,EAAOgC,SAAsD,SAA3C,EAAKzC,kBAAkBxG,EAAMqgG,UAC/Cp5F,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMsgG,MAAO,MAClDr5F,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMugG,MAC5Ct5F,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMwgG,SAAUxgG,EAAMwnB,OACrEvgB,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMuvB,UACrDtoB,EAAOmC,MAAMic,KAAO,EAAK7e,kBAAkBxG,EAAMygG,MACjDx5F,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAM0gG,SAEvC,EAAKr7F,mBAAmBrF,EAAMwgG,WAC/B,EAAK92F,WAAWzC,EAAQ,QAASjH,EAAMwnB,OAE3C,EAAK9d,WAAWzC,EAAQ,QAASjH,EAAM2gG,OACvC,EAAKj3F,WAAWzC,EAAQ,MAAOjH,EAAM4gG,KACrC,EAAKl3F,WAAWzC,EAAQ,UAAWjH,EAAM6gG,SACzC,EAAKn3F,WAAWzC,EAAQ,OAAQjH,EAAMovB,MAEtC,EAAK7kB,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGpB5F,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,IAEf,EAzCA,CAAyC,EAAAsG,cAA5B,EAAAozF,uB,8ZCLb,YAGA,QAEA,QACA,SACA,SACA,QAEA,QACA,SAEM0C,EAAiB,IAAI52B,IAAI,CAAC,UAAW,gBAAiB,gBAAiB,SAAU,WACnF,0BAA2B,qBAAsB,UAErD,2B,+CAiJA,OAjJ0C,OAGtC,YAAAtlE,MAAA,SAAMjD,GACFN,KAAKqD,OAAS,IAAI,EAAAwG,aAClB,IAAM8+B,EAAUiW,KAAKr7C,MAAMjD,GAC3B,GAAe,MAAXqoC,GAAsC,IAAnBA,EAAQvqC,OAE3B,OADA4B,KAAKqD,OAAOuG,SAAU,EACf5J,KAAKqD,OAsBhB,IAAK,IAAMzE,KAnBY,MAAnB+pC,EAAQ+2D,SACR1/F,KAAK2/F,eAAeh3D,EAAQ+2D,SAEH,MAAzB/2D,EAAQi3D,eACR5/F,KAAK6/F,YAAYl3D,EAAQi3D,eAEA,MAAzBj3D,EAAQm3D,eACR9/F,KAAK+/F,YAAYp3D,EAAQm3D,cAAe,mBAEtB,MAAlBn3D,EAAQq3D,QACRhgG,KAAK+/F,YAAYp3D,EAAQq3D,OAAQ,YAEE,MAAnCr3D,EAAQs3D,yBACRjgG,KAAKkgG,YAAYv3D,EAAQs3D,yBAEL,MAApBt3D,EAAQw3D,UACRngG,KAAKogG,gBAAgBz3D,EAAQw3D,UAGfx3D,EACVA,EAAQ1pC,eAAeL,KAAS6gG,EAAexoE,IAAIr4B,IACnDoB,KAAK+/F,YAAYp3D,EAAQ/pC,GAAM,KAAM,gBAK7C,OADAoB,KAAKqD,OAAOuG,SAAU,EACf5J,KAAKqD,QAGR,YAAAw8F,YAAR,SAAoBl3D,GAApB,WACIA,EAAQjlC,SAAQ,SAAC28F,GACb,IAAMz6F,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkBk7F,EAAWv+F,OAEhD8D,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBk7F,EAAWt4F,MACtD,EAAK5C,kBAAkBk7F,EAAWC,iBAClC,EAAKt8F,mBAAmB4B,EAAOmC,MAAMoB,UACrCvD,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBk7F,EAAWxgF,OAClD,EAAK7b,mBAAmBq8F,EAAWxgF,SAC3Cja,EAAOiC,MAAS,UAAYw4F,EAAWxgF,MAAQ,MAGnDja,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBk7F,EAAWj3F,UAC1DxD,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAam8F,EAAWvxF,QACjDlJ,EAAOiC,OAAS,EAAK1C,kBAAkBk7F,EAAW7C,KAAM,IAExD,EAAKt0F,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GACnB,EAAKvC,OAAO4F,QAAQxI,KAAKmF,OAIzB,YAAAw6F,gBAAR,SAAwBz3D,GAAxB,WACIA,EAAQjlC,SAAQ,SAAC0hB,GACb,IAAMxf,EAAS,IAAI,EAAA+B,WACnB/B,EAAO+Y,SAAW,IAAI,EAAAC,aACtBhZ,EAAOqC,KAAO,EAAAC,WAAW4P,SACzBlS,EAAOmB,KAAO,EAAK5B,kBAAkBigB,EAAIm7E,SAAU,IACnD,IAAMC,EAAY56F,EAAOmB,KAAK1B,MAAM,KAChCm7F,EAAUpiG,OAAS,IACnBwH,EAAO+Y,SAASyB,UAAY,EAAKjb,kBAAkBq7F,EAAU,KAExC,IAArBA,EAAUpiG,OACVwH,EAAO+Y,SAAS0B,SAAW,EAAKlb,kBAAkBq7F,EAAU,IAChC,IAArBA,EAAUpiG,SACjBwH,EAAO+Y,SAASU,WAAa,EAAKla,kBAAkBq7F,EAAU,IAC9D56F,EAAO+Y,SAAS0B,SAAW,EAAKlb,kBAAkBq7F,EAAU,KAEhE56F,EAAO+Y,SAASxV,SAAW,EAAKhE,kBAAkBigB,EAAIq7E,QACtD,EAAKr4F,cAAcxC,GACnB,EAAKvC,OAAO4F,QAAQxI,KAAKmF,OAIzB,YAAA+5F,eAAR,SAAuBh3D,GAAvB,WACIA,EAAQjlC,SAAQ,SAAC0hB,GACb,IAAMxf,EAAS,IAAI,EAAA+B,WACnB/B,EAAO+Y,SAAW,IAAI,EAAAC,aACtBhZ,EAAOqC,KAAO,EAAAC,WAAW4P,SACzBlS,EAAOmB,KAAO,EAAK5B,kBAAkBigB,EAAIs7E,aACzC96F,EAAO+Y,SAASW,SAAW,EAAKna,kBAAkBigB,EAAIu7E,aACtD/6F,EAAO+Y,SAASc,KAAO,EAAKta,kBAAkBigB,EAAI3F,MAClD7Z,EAAO+Y,SAASe,MAAQ,EAAKva,kBAAkBigB,EAAI1F,OACnD9Z,EAAO+Y,SAASgB,WAAa,EAAKxa,kBAAkBigB,EAAIw7E,SACxDh7F,EAAO+Y,SAAS3E,QAAU,EAAK7U,kBAAkBigB,EAAIpL,SACtB,MAA3BpU,EAAO+Y,SAAS3E,UAChBpU,EAAO+Y,SAAS3E,QAAUpU,EAAO+Y,SAAS3E,QAAQvP,eAEtD,EAAKrC,cAAcxC,GACnB,EAAKvC,OAAO4F,QAAQxI,KAAKmF,OAIzB,YAAAs6F,YAAR,SAAoBv3D,GAApB,WACIA,EAAQjlC,SAAQ,SAAC0hB,GACb,IAAMxf,EAAS,IAAI,EAAA+B,WACnB/B,EAAOM,KAAO,IAAI,EAAA2N,SAClBjO,EAAOqC,KAAO,EAAAC,WAAW2P,KACzBjS,EAAOmB,KAAO,EAAK5B,kBAAkBigB,EAAI1L,MACzC9T,EAAOM,KAAKuN,OAAS,EAAKtO,kBAAkBigB,EAAIy4E,YAChDj4F,EAAOM,KAAKsN,MAAQ,EAAKlO,aAAaM,EAAOM,KAAKuN,QAClD7N,EAAOM,KAAKgN,eAAiB,EAAK/N,kBAAkBigB,EAAIy7E,OACnD,EAAK78F,mBAAmB4B,EAAOM,KAAKsN,SACjC,EAAKxP,mBAAmB4B,EAAOmB,MAC/BnB,EAAOmB,KAAOnB,EAAOM,KAAKsN,MAE1B5N,EAAOmB,MAAS,MAAQnB,EAAOM,KAAKsN,OAG5C,EAAKpL,cAAcxC,GACnB,EAAKvC,OAAO4F,QAAQxI,KAAKmF,OAIzB,YAAAm6F,YAAR,SAAoBp3D,EAAgBm4D,EAAsB/5F,GAA1D,gBAA0D,IAAAA,MAAA,MACtD4hC,EAAQjlC,SAAQ,SAAC0hB,GACb,IAAMxf,EAAS,IAAI,EAAA+B,WASnB,IAAK,IAAM/I,KARXgH,EAAO2D,WAAa,IAAI,EAAAC,eACxB5D,EAAOqC,KAAO,EAAAC,WAAWoB,WACzB1D,EAAO2D,WAAWtB,KAAO,EAAAwB,eAAeC,QAEpC9D,EAAOmB,KADC,MAARA,EACcA,EAEA,EAAK5B,kBAAkBigB,EAAI07E,IAE3B17E,EACVA,EAAInmB,eAAeL,IAAQA,IAAQkiG,GACnC,EAAKz4F,WAAWzC,EAAQhH,EAAKwmB,EAAIxmB,GAAKgO,YAG9C,EAAKxE,cAAcxC,GACnB,EAAKvC,OAAO4F,QAAQxI,KAAKmF,OAGrC,EAjJA,CAA0C,EAAA+D,cAA7B,EAAA0xF,wB,8ZChBb,YAGA,QAEA,QAEA,QAEA,2B,+CAoDA,OApDyC,OACrC,YAAA93F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,IAAMiH,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMoiG,MAAO,MAClDn7F,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMqiG,OAC5C,IAAM19E,EAAO,EAAKne,kBAAkBxG,EAAM4J,MACrC,EAAKvE,mBAAmBsf,KACrB,EAAKtf,mBAAmB4B,EAAOiC,OAC/BjC,EAAOiC,MAAQyb,EAEf1d,EAAOiC,OAAU,OAASyb,GAIlC,IAAMrb,EAAOtJ,EAAM,cACnB,GAAa,aAATsJ,EACArC,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMwgG,UACrDv5F,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMuvB,UACrDtoB,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAM,kBACzC,GAAa,gBAATsJ,EAAwB,CAC/BrC,EAAOqC,KAAO,EAAAC,WAAW2P,KACzBjS,EAAOM,KAAO,IAAI,EAAA2N,SAClBjO,EAAOM,KAAKgN,eAAiB,EAAK/N,kBAAkBxG,EAAM,iBAC1DiH,EAAOM,KAAKuN,OAAS,EAAKtO,kBAAkBxG,EAAM,gBAClDiH,EAAOM,KAAKsN,MAAQ,EAAKlO,aAAaM,EAAOM,KAAKuN,QAClD7N,EAAOM,KAAKiN,KAAO,EAAKhO,kBAAkBxG,EAAMsiG,KAChD,IAAMC,EAAS,EAAK/7F,kBAAkBxG,EAAMwiG,QAC5C,IAAK,EAAKn9F,mBAAmBk9F,GAAS,CAClC,IAAME,EAAWF,EAAO77F,MAAM,KAC1B+7F,EAAShjG,OAAS,IAClBwH,EAAOM,KAAKC,SAAWgG,SAASi1F,EAAS,GAAI,MAAMx0F,WACnDhH,EAAOM,KAAKE,SAAW,IAAO+F,SAASi1F,EAAS,GAAI,OAAOx0F,aAKvE,EAAK1D,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EApDA,CAAyC,EAAAsG,cAA5B,EAAAqzF,uB,8ZCTb,YAGA,QAEA,QACA,SAEA,QACA,QAEA,2B,+CAoGA,OApGuC,OACnC,YAAAz5F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,GAAe,MAAXqoC,EAEA,OADAtlC,EAAOuG,SAAU,EACVvG,EAGX,IAAIg+F,GAAW,EAiFf,OAhFA14D,EAAQjlC,SAAQ,SAAC/E,GACb,GAAIA,EAAMP,OAAS,GAAMijG,IAA0B,UAAb1iG,EAAM,IAA+B,UAAbA,EAAM,IAChE0iG,GAAW,MADf,CAKA,IAAMz7F,EAAS,EAAK8B,kBAkBpB,GAjBA9B,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMA,EAAMP,OAAS,IAC3DwH,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM,GAAI,MAE1B,IAAjBA,EAAMP,SAAkB,EAAKkjG,cAAc3iG,EAAO,aACjD,EAAK2iG,cAAc3iG,EAAO,aAAgB,EAAK2iG,cAAc3iG,EAAO,UACpE,EAAK2iG,cAAc3iG,EAAO,UAC3BiH,EAAOqC,KAAO,EAAAC,WAAWoB,WACzB1D,EAAO2D,WAAa,IAAI,EAAAC,eACxB5D,EAAO2D,WAAWtB,KAAO,EAAAwB,eAAeC,SAGxC,EAAK43F,cAAc3iG,EAAO,eAAiB,EAAK2iG,cAAc3iG,EAAO,WACrE,EAAK2iG,cAAc3iG,EAAO,iBAC1BiH,EAAOqC,KAAO,EAAAC,WAAW2P,KACzBjS,EAAOM,KAAO,IAAI,EAAA2N,UAGlBlV,EAAMP,OAAS,GAAMO,EAAMP,OAAS,GAAO,EAC3C,IAAK,IAAIF,EAAI,EAAGA,EAAIS,EAAMP,OAAS,EAAGF,GAAK,EAAG,CAC1C,IAAMqjG,EAAqB5iG,EAAMT,EAAI,GACrC,IAAI,EAAK8F,mBAAmBu9F,GAA5B,CAIA,IAAMC,EAAoB7iG,EAAMT,EAAI,GAC9BujG,EAAiBD,EAAU92F,cAEjC,GAAI9E,EAAOqC,OAAS,EAAAC,WAAWC,MAAO,CAClC,GAAuB,QAAnBs5F,IAAkD,MAArB77F,EAAOmC,MAAMsB,MAA6C,IAA7BzD,EAAOmC,MAAMsB,KAAKjL,QAAe,CAC3FwH,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAaq9F,GACtC,SACG,IAAwB,aAAnBE,GAAoD,UAAnBA,IACzC,EAAKz9F,mBAAmB4B,EAAOmC,MAAMoB,UAAW,CAChDvD,EAAOmC,MAAMoB,SAAWo4F,EACxB,SACG,GAAuB,aAAnBE,GAAiC,EAAKz9F,mBAAmB4B,EAAOmC,MAAMqB,UAAW,CACxFxD,EAAOmC,MAAMqB,SAAWm4F,EACxB,SACG,GAAuB,SAAnBE,GAA6B,EAAKz9F,mBAAmB4B,EAAOmC,MAAMic,MAAO,CAChFpe,EAAOmC,MAAMic,KAAOu9E,EACpB,eAED,GAAI37F,EAAOqC,OAAS,EAAAC,WAAW2P,KAAM,CACxC,GAAuB,eAAnB4pF,GAAmC,EAAKz9F,mBAAmB4B,EAAOM,KAAKgN,gBAAiB,CACxFtN,EAAOM,KAAKgN,eAAiBquF,EAC7B,SACG,GAAuB,WAAnBE,GAA+B,EAAKz9F,mBAAmB4B,EAAOM,KAAKuN,QAAS,CACnF7N,EAAOM,KAAKuN,OAAS8tF,EACrB37F,EAAOM,KAAKsN,MAAQ,EAAKlO,aAAai8F,GACtC,SACG,GAAuB,QAAnBE,GAA4B,EAAKz9F,mBAAmB4B,EAAOM,KAAKiN,MAAO,CAC9EvN,EAAOM,KAAKiN,KAAOouF,EACnB,SACG,GAAuB,gBAAnBE,GAAoC,EAAKz9F,mBAAmB4B,EAAOM,KAAKC,WAC/E,EAAKnC,mBAAmB4B,EAAOM,KAAKE,UACpC,GAAI,EAAKT,kBAAkBC,EAAQ27F,GAC/B,cAED,GAAuB,SAAnBE,EAEP,SAIR,EAAKp5F,WAAWzC,EAAQ47F,EAAWD,IAI3C,EAAKn5F,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGxBvC,EAAOuG,SAAU,EACVvG,GAGH,YAAAi+F,cAAR,SAAsBx5F,EAAef,GAArC,WACI,OAAc,MAAVe,GAA0B,MAARf,GAGfe,EAAON,QAAO,SAACZ,GAAM,OAAC,EAAK5C,mBAAmB4C,IACjDA,EAAE8D,gBAAkB3D,EAAK2D,iBAAetM,OAAS,GAE7D,EApGA,CAAuC,EAAAuL,cAA1B,EAAAuxF,qB,8ZCXb,YAGA,QAEA,QAEA,SAEA,QACA,SAEA,2B,+CAsJA,OAtJwC,OACpC,YAAA33F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAUiW,KAAKr7C,MAAMjD,GAC3B,GAAe,MAAXqoC,GAAoC,MAAjBA,EAAQuD,OAA0C,IAAzBvD,EAAQuD,MAAM9tC,OAE1D,OADAiF,EAAOuG,SAAU,EACVvG,EAGX,IAAMq+F,EAAa,IAAI1yF,IACjB2yF,EAAkB,IAAI3yF,IACtB4yF,EAAa5hG,KAAK6hG,gBAAgBl5D,EAAQjiC,SAsChD,OArCA1G,KAAK8hG,kBAAkB,KAAMF,EAAYF,GACzCA,EAAWh+F,SAAQ,SAAC6R,EAAK3W,GACrB+iG,EAAgBzyF,IAAItQ,EAAKyE,EAAOqD,QAAQtI,QACxC,IAAMwI,EAAI,IAAI,EAAAoC,WACdpC,EAAEG,KAAOwO,EACTlS,EAAOqD,QAAQjG,KAAKmG,MAGxB+hC,EAAQuD,MAAMxoC,SAAQ,SAACu5E,GACC,MAAhBA,EAAKv2E,SAAmBu2E,EAAKv2E,QAAQtI,OAAS,GAAKujG,EAAgB1qE,IAAIgmD,EAAKv2E,QAAQ,KACpFrD,EAAOiD,oBAAoB7F,KAAK,CAAC4C,EAAO4F,QAAQ7K,OAAQujG,EAAgBljG,IAAIw+E,EAAKv2E,QAAQ,MAG7F,IAAMd,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkB83E,EAAKn7E,OAC1C8D,EAAOgC,SAAWq1E,EAAKr1E,SAAW,EAER,MAAtBq1E,EAAK8kB,eAAwC,MAAf9kB,EAAKn1E,QAAkBm1E,EAAKn1E,OAAO1J,OAAS,IAC7B,IAAzC6+E,EAAK8kB,cAAct9F,QAAQ,WAA+D,IAA5Cw4E,EAAK8kB,cAAct9F,QAAQ,aACzE,EAAKu9F,aAAap8F,EAAQq3E,EAAKn1E,QACsB,IAA9Cm1E,EAAK8kB,cAAct9F,QAAQ,eAClC,EAAKy7F,YAAYt6F,EAAQq3E,EAAKn1E,QACvBm1E,EAAK8kB,cAAct9F,QAAQ,aAAe,GACjDw4E,EAAKn1E,OAAOoc,MAAK,SAACtd,GAAW,MAAW,aAAXA,EAAEqB,OAAwB,EAAKjE,mBAAmB4C,EAAEjI,UACjF,EAAKqjG,aAAap8F,EAAQq3E,EAAKn1E,QAE/B,EAAKi4F,YAAYn6F,EAAQq3E,EAAKn1E,SAItClC,EAAOiC,OAAU,KAAO,EAAK1C,kBAAkB83E,EAAKugB,KAAM,IAC1D,EAAKt0F,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,GAGH,YAAA2+F,aAAR,SAAqBp8F,EAAoBkC,GAAzC,WACUk4D,EAAiB,GACvBl4D,EAAOpE,SAAQ,SAAC+E,GACR,EAAKzE,mBAAmByE,EAAM9J,QAAyB,YAAf8J,EAAMR,OAI9B,aAAfQ,EAAMR,MAAsC,UAAfQ,EAAMR,OACpC,EAAKjE,mBAAmB4B,EAAOmC,MAAMoB,UAEf,aAAfV,EAAMR,MAAuB,EAAKjE,mBAAmB4B,EAAOmC,MAAMqB,UACzExD,EAAOmC,MAAMqB,SAAWX,EAAM9J,MACR,SAAf8J,EAAMR,MAAmB,EAAKjE,mBAAmB4B,EAAOmC,MAAMic,MACrEpe,EAAOmC,MAAMic,KAAOvb,EAAM9J,MACJ,QAAf8J,EAAMR,KACb+3D,EAAKv/D,KAAKgI,EAAM9J,OAEhB,EAAK0J,WAAWzC,EAAQ6C,EAAM+T,MAAO/T,EAAM9J,MACnB,IAApB8J,EAAMw5F,UAAkB,EAAA35F,UAAU+gE,OAAS,EAAA/gE,UAAUC,MATzD3C,EAAOmC,MAAMoB,SAAWV,EAAM9J,UAYtCiH,EAAOmC,MAAMsB,KAAOrJ,KAAKkE,aAAa87D,IAGlC,YAAAkgC,YAAR,SAAoBt6F,EAAoBkC,GAAxC,WACIlC,EAAOM,KAAO,IAAI,EAAA2N,SAClBjO,EAAOqC,KAAO,EAAAC,WAAW2P,KACzB/P,EAAOpE,SAAQ,SAAC+E,GACR,EAAKzE,mBAAmByE,EAAM9J,QAAyB,YAAf8J,EAAMR,MAAqC,WAAfQ,EAAMR,OAI3D,WAAfQ,EAAMR,MAAqB,EAAKjE,mBAAmB4B,EAAOM,KAAKgN,gBAC/DtN,EAAOM,KAAKgN,eAAiBzK,EAAM9J,MACb,aAAf8J,EAAMR,MAAuB,EAAKjE,mBAAmB4B,EAAOM,KAAKuN,SACxE7N,EAAOM,KAAKuN,OAAShL,EAAM9J,MAC3BiH,EAAOM,KAAKsN,MAAQ,EAAKlO,aAAaM,EAAOM,KAAKuN,SAC5B,UAAfhL,EAAMR,MAAoB,EAAKjE,mBAAmB4B,EAAOM,KAAKiN,MACrEvN,EAAOM,KAAKiN,KAAO1K,EAAM9J,MACH,aAAf8J,EAAMR,MAAuB,EAAKjE,mBAAmB4B,EAAOM,KAAKE,UACnE,EAAKT,kBAAkBC,EAAQ6C,EAAM9J,QAK1C,EAAK0J,WAAWzC,EAAQ6C,EAAM+T,MAAO/T,EAAM9J,MACnB,IAApB8J,EAAMw5F,UAAkB,EAAA35F,UAAU+gE,OAAS,EAAA/gE,UAAUC,WAK7D,YAAAw3F,YAAR,SAAoBn6F,EAAoBkC,GAAxC,WACIA,EAAOpE,SAAQ,SAAC+E,GACR,EAAKzE,mBAAmByE,EAAM9J,QAAyB,YAAf8J,EAAMR,MAGlD,EAAKI,WAAWzC,EAAQ6C,EAAM+T,MAAO/T,EAAM9J,MACnB,IAApB8J,EAAMw5F,UAAkB,EAAA35F,UAAU+gE,OAAS,EAAA/gE,UAAUC,UAIzD,YAAAs5F,gBAAR,SAAwBn7F,GACpB,GAAe,MAAXA,EACA,MAAO,GAEX,IAAMk7F,EAAoB,GACpBj7F,EAAM,IAAIqI,IAAiB,IAYjC,OAXAtI,EAAQhD,SAAQ,SAAC0hB,GACbze,EAAIuI,IAAIkW,EAAI88E,KAAM98E,GAClBA,EAAIurD,SAAW,MAEnBjqE,EAAQhD,SAAQ,SAAC0hB,GACU,MAAnBA,EAAI+8E,aAA2C,KAApB/8E,EAAI+8E,aAAsBx7F,EAAIswB,IAAI7R,EAAI+8E,aACjEx7F,EAAIlI,IAAI2mB,EAAI+8E,aAAaxxB,SAASlwE,KAAK2kB,GAEvCw8E,EAAWnhG,KAAK2kB,MAGjBw8E,GAGH,YAAAE,kBAAR,SAA0BM,EAAqBC,EAAa17F,GAA5D,WACgB,MAAR07F,GAGJA,EAAK3+F,SAAQ,SAACkD,GACV,GAAe,MAAXA,EAAE9E,OAAoC,KAAnB8E,EAAE9E,MAAMsB,OAAe,CAC1C,IAAItB,EAAQ8E,EAAE9E,MAAMsB,OACD,MAAfg/F,GAA8C,KAAvBA,EAAYh/F,SACnCtB,EAAQsgG,EAAc,IAAMtgG,GAEhC6E,EAAIuI,IAAItI,EAAEs7F,KAAMpgG,GACE,MAAd8E,EAAE+pE,UAA0C,IAAtB/pE,EAAE+pE,SAASvyE,QACjC,EAAK0jG,kBAAkBhgG,EAAO8E,EAAE+pE,SAAUhqE,QAK9D,EAtJA,CAAwC,EAAAgD,cAA3B,EAAAwxF,sB,8ZCZb,YAGA,QAEA,2B,+CAsBA,OAtBwC,OACpC,YAAA53F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,IAAMiH,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkB,EAAKR,YAAYhG,EAAMkG,UAAW,MACvEe,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMwK,UACrDvD,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMyK,UACrDxD,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMkG,UAC5C,EAAKuD,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EAtBA,CAAwC,EAAAsG,cAA3B,EAAA+wF,sB,8ZCLb,YAGA,QAEA,QAEA,QAEA,2B,+CAkDA,OAlDwC,OACpC,YAAAn3F,MAAA,SAAMjD,GACF,IAAM+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAUiW,KAAKr7C,MAAMjD,GAC3B,GAAe,MAAXqoC,GAAmC,MAAhBA,EAAQroC,KAE3B,OADA+C,EAAOuG,SAAU,EACVvG,EAGX,IAAK,IAAMzE,KAAO+pC,EAAQroC,KACtB,GAAKqoC,EAAQroC,KAAKrB,eAAeL,GAAjC,CAIA,IAAMD,EAAQgqC,EAAQroC,KAAK1B,GACrBgH,EAAS5F,KAAK0H,kBAIpB,GAHA9B,EAAOmB,KAAO/G,KAAKmF,kBAAkBxG,EAAMmtC,SAC3ClmC,EAAOiC,MAAQ7H,KAAKmF,kBAAkBxG,EAAMkJ,OAExB,YAAhBlJ,EAAMof,MACNnY,EAAOmC,MAAMoB,SAAWnJ,KAAKmF,kBAAkBxG,EAAMwK,UACrDvD,EAAOmC,MAAMqB,SAAWpJ,KAAKmF,kBAAkBxG,EAAMyK,UACrDxD,EAAOmC,MAAMsB,KAAOrJ,KAAKkE,aAAavF,EAAMiG,SACzC,IAAoB,eAAhBjG,EAAMof,MAgBb,SAfAnY,EAAOqC,KAAO,EAAAC,WAAW2P,KACzBjS,EAAOM,KAAO,IAAI,EAAA2N,SAClBjO,EAAOM,KAAKgN,eAAiBlT,KAAKmF,kBAAkBxG,EAAMwK,UAC1DvD,EAAOM,KAAKuN,OAASzT,KAAKmF,kBAAkBxG,EAAM2jG,cAClD18F,EAAOM,KAAKsN,MAAQxT,KAAKsF,aAAaM,EAAOM,KAAKuN,QAClD7N,EAAOM,KAAKiN,KAAOnT,KAAKmF,kBAAkBxG,EAAM4jG,WAC3CviG,KAAKgE,mBAAmBrF,EAAM6jG,eAC1BxiG,KAAK2F,kBAAkBC,EAAQjH,EAAM6jG,eACtCxiG,KAAKqI,WAAWzC,EAAQ,aAAcjH,EAAM6jG,cAG/CxiG,KAAKgE,mBAAmBrF,EAAMyK,WAC/BpJ,KAAKqI,WAAWzC,EAAQ,MAAOjH,EAAMyK,UAM7CpJ,KAAKkJ,sBAAsBtD,GAC3B5F,KAAKoI,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,GAIxB,OADAvC,EAAOuG,SAAU,EACVvG,GAEf,EAlDA,CAAwC,EAAAsG,cAA3B,EAAA2yF,sB,8ZCTb,YAGA,QAEA,2B,+CAsDA,OAtDuC,OACnC,YAAA/4F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAUiW,KAAKr7C,MAAMjD,GAC3B,GAAe,MAAXqoC,GAAmD,IAAhC5pC,OAAOouD,KAAKxkB,GAASvqC,OAExC,OADAiF,EAAOuG,SAAU,EACVvG,E,eAGAo/F,GACP,IAAK95D,EAAQ1pC,eAAewjG,IAAY,EAAKz+F,mBAAmBy+F,IAChC,IAA5B95D,EAAQ85D,GAASrkG,O,iBAIrBuqC,EAAQ85D,GAAS/+F,SAAQ,SAAC/E,GACtB,IAAI,EAAKqF,mBAAmBrF,EAAM+jG,eAAwD,IAAvC/jG,EAAM+jG,aAAaj+F,QAAQ,QAA9E,CAIA,EAAKkE,cAActF,EAAQo/F,GAC3B,IAAM78F,EAAS,EAAK8B,kBAQpB,GAPA9B,EAAOmB,KAAOpI,EAAM+jG,aAAaz9F,QAAQ,UAAW,IAAIA,QAAQ,WAAY,IACxEW,EAAOmB,KAAK3I,OAAS,KACrBwH,EAAOmB,KAAOnB,EAAOmB,KAAKrC,UAAU,EAAG,KAE3CkB,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMgkG,QACrD/8F,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAM+jG,cAEpB,MAApB/jG,EAAMikG,WAGN,IAAK,IAAMC,KAFXj9F,EAAOmC,MAAMoB,SAA+B,MAApBxK,EAAMikG,WAC1B,EAAKz9F,kBAAkBxG,EAAMikG,WAAWE,gBAAkB,KAC3CnkG,EAAMikG,WAChBjkG,EAAMikG,WAAW3jG,eAAe4jG,IAAkB,mBAATA,GACjC,eAATA,GAGJ,EAAKx6F,WAAWzC,EAAQi9F,EAAMlkG,EAAMikG,WAAWC,IAIvD,EAAK35F,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,Q,OAlC5B,IAAK,IAAM68F,KAAW95D,E,EAAX85D,GA2CX,OALIziG,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,GAEf,EAtDA,CAAuC,EAAAsG,cAA1B,EAAAqyF,qB,8ZCLb,YAGA,QAOA,2B,+CAiHA,OAjH0C,OACtC,YAAAz4F,MAAA,SAAMjD,GAAN,IAGQyiG,EACAC,EACAC,EAkBMn9F,EAvBd,OACUzC,EAAS,IAAI,EAAAwG,aAKfq5F,EAAcljG,KAAKkD,aAAa5C,GAAM6C,KAAK,OAEL,IAAtC+/F,EAAYz+F,QAdJ,gBAeFqB,EAAQo9F,EAAY79F,MAflB,cAgBEjH,OAAS,IACf8kG,EAAcp9F,EAAM,GACpBi9F,EAAYj9F,EAAM,MAGuB,IAA7Co9F,EAAYz+F,QApBG,uBAqBTqB,EAAQo9F,EAAY79F,MArBX,qBAsBLjH,OAAS,IACf8kG,EAAcp9F,EAAM,GACpBk9F,EAAmBl9F,EAAM,KAGW,IAAxCo9F,EAAYz+F,QA1BD,mBA2BLqB,EAAQo9F,EAAY79F,MA3Bf,iBA4BDjH,OAAS,IACf8kG,EAAcp9F,EAAM,GACpBm9F,EAAen9F,EAAM,KAI7B,IAAM+B,EAAQ7H,KAAKmjG,kBAAkBJ,GAC/BK,EAAepjG,KAAKmjG,kBAAkBH,GACtCK,EAAWrjG,KAAKmjG,kBAAkBF,GA+BxC,OA7BAp7F,EAAMnE,SAAQ,SAACqQ,GACX,IAAMnO,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkB4O,EAAEtV,IAAI,SAC3CmH,EAAOiC,MAAQ,EAAK1C,kBAAkB4O,EAAEtV,IAAI,SAC5C,EAAK2J,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBy9F,EAAS1iG,OAAOyiG,GAAc1/F,SAAQ,SAACgxD,GACnC,IAAM9uD,EAAS,EAAK8B,kBACd47F,EAAU5uC,EAAEz9B,IAAI,gBAAkB,eAAiB,cACzDrxB,EAAOmB,KAAO,EAAK5B,kBAAkBuvD,EAAEj2D,IAAI6kG,GAAU,IAChD,EAAKt/F,mBAAmB0wD,EAAEj2D,IAAI,iBAC1B,EAAKuF,mBAAmB4B,EAAOmB,QAChCnB,EAAOmB,MAAQ,MAEnBnB,EAAOmB,MAAQ2tD,EAAEj2D,IAAI,eAEzBmH,EAAOiC,MAAQ,EAAK1C,kBAAkBuvD,EAAEj2D,IAAI,YACxCi2D,EAAEz9B,IAAI,iBACNrxB,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAawwD,EAAEj2D,IAAI,iBAEhDmH,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBuvD,EAAEj2D,IAAI,UACrDmH,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBuvD,EAAEj2D,IAAI,aACrD,EAAK2J,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,GAGH,YAAA8/F,kBAAR,SAA0B7iG,GACtB,GAAIN,KAAKgE,mBAAmB1D,KAAsC,IAA7BA,EAAKmE,QAtEhC,WAuEN,MAAO,GAEX,IAAMynC,EAAoC,GAwC1C,OAvCA5rC,EAAK+E,MA1EK,WA0EY3B,SAAQ,SAACwR,GAC3B,IAAyB,IAArBA,EAAEzQ,QAAQ,MAAd,CAGA,IACI8+F,EACAC,EAFEvmB,EAAO,IAAIjuE,IAGjBkG,EAAE7P,MAAM,MAAM3B,SAAQ,SAACqgB,GACnB,GAAmB,MAAfw/E,EAAJ,CAIA,IACI3kG,EACA2W,EAFEkuF,EAAa1/E,EAAEtf,QAAQ,MAGT,IAAhBg/F,IAGA7kG,EAAMmlB,EAAErf,UAAU,EAAG++F,GACjB1/E,EAAE3lB,OAASqlG,EAAa,IACxBluF,EAAMwO,EAAErf,UAAU++F,EAAa,IAG5B,MAAP7kG,GACAq+E,EAAK/tE,IAAItQ,EAAK2W,GAEN,YAAR3W,GAA6B,SAARA,IACrB2kG,EAAchuF,EACdiuF,EAAiB5kG,SAnBjB2kG,GAAgB,KAAOx/E,KAsBZ,MAAfw/E,GAAyC,MAAlBC,GACvBvmB,EAAK/tE,IAAIs0F,EAAgBD,GAEX,IAAdtmB,EAAKxgE,MAGTyvB,EAAMzrC,KAAKw8E,OAER/wC,GAEf,EAjHA,CAA0C,EAAAviC,cAA7B,EAAA4yF,wB,8ZCVb,YAGA,SAEA,QAEA,SAEA,yE,OACI,EAAAl5F,OAAS,IAAI,EAAAwG,a,EAuFjB,OAxFyC,OAGrC,YAAAtG,MAAA,SAAMjD,GACF,IAAMsC,EAAM5C,KAAK2C,SAASrC,GAC1B,GAAW,MAAPsC,EAEA,OADA5C,KAAKqD,OAAOuG,SAAU,EACf5J,KAAKqD,OAGhB,IAAMqgG,EAAY9gG,EAAIG,cAAc,8BACpC,OAAiB,MAAb2gG,GACA1jG,KAAKqD,OAAOitC,aAAe,6CAC3BtwC,KAAKqD,OAAOuG,SAAU,EACf5J,KAAKqD,SAGhBrD,KAAK2jG,SAASD,GAAW,EAAM,IAE3B1jG,KAAKqC,cACLrC,KAAKqG,yBAAyBrG,KAAKqD,QAGvCrD,KAAKqD,OAAOuG,SAAU,EACf5J,KAAKqD,SAGhB,YAAAsgG,SAAA,SAASlzB,EAAemzB,EAAqBC,GAA7C,WACUh7F,EAAc7I,KAAKqD,OAAOqD,QAAQtI,OACpC0lG,EAAYD,EAEhB,IAAKD,EAAY,CACK,KAAdE,IACAA,GAAa,KAEjB,IAAMC,EAAS/jG,KAAKgH,yBAAyBypE,EAAM,QACnDqzB,GAAuB,MAAVC,EAAiB,IAAMA,EAAOlgF,YAC3C,IAAMszB,EAAS,IAAI,EAAAnuC,WACnBmuC,EAAOpwC,KAAO+8F,EACd9jG,KAAKqD,OAAOqD,QAAQjG,KAAK02C,GAG7Bn3C,KAAKoH,4BAA4BqpE,EAAM,SAAS/sE,SAAQ,SAACi7F,GACrD,IAAMqF,EAAc,EAAK3gG,OAAO4F,QAAQ7K,OAElCwH,EAAS,EAAK8B,kBACpB,EAAKN,4BAA4Bu3F,EAAO,UAAUj7F,SAAQ,SAACugG,GACvD,IAAMC,EAAU,EAAKl9F,yBAAyBi9F,EAAa,SACrDtlG,EAAmB,MAAXulG,EAAkBA,EAAQrgF,YAAc,KACtD,IAAI,EAAK7f,mBAAmBrF,GAA5B,CAGA,IAAMwlG,EAAQ,EAAKn9F,yBAAyBi9F,EAAa,OACnDrlG,EAAe,MAATulG,EAAgBA,EAAMtgF,YAAc,KAEhD,GAAY,QAARjlB,EACAgH,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,QACnC,GAAY,aAARC,EACPgH,EAAOmC,MAAMoB,SAAWxK,OACrB,GAAY,aAARC,EACPgH,EAAOmC,MAAMqB,SAAWzK,OACrB,GAAY,UAARC,EACPgH,EAAOmB,KAAOpI,OACX,GAAY,UAARC,EACPgH,EAAOiC,OAAUlJ,EAAQ,SACtB,CACH,IAAIsJ,EAAO,EAAAK,UAAUC,KACf67F,EAASF,EAAQtB,WACnBwB,EAAMhmG,OAAS,GAA8B,MAAzBgmG,EAAMC,iBACM,SAAhCD,EAAMC,gBAAgB1lG,QACtBsJ,EAAO,EAAAK,UAAU+gE,QAErB,EAAKhhE,WAAWzC,EAAQhH,EAAKD,EAAOsJ,QAI5C,EAAKG,cAAcxC,GACnB,EAAKvC,OAAO4F,QAAQxI,KAAKmF,GAEpBg+F,GACD,EAAKvgG,OAAOiD,oBAAoB7F,KAAK,CAACujG,EAAan7F,OAI3D7I,KAAKoH,4BAA4BqpE,EAAM,SAAS/sE,SAAQ,SAAC4jD,GACrD,EAAKq8C,SAASr8C,GAAO,EAAOw8C,OAGxC,EAxFA,CAAyC,EAAAn6F,cAA5B,EAAA6wF,uB,8ZCTb,YAGA,QAEA,2B,+CAoCA,OApCyC,OACrC,YAAAj3F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,IAAI,EAAKqF,mBAAmBrF,EAAM2lG,OAAlC,CAIA3lG,EAAM4lG,OAAS,EAAKvgG,mBAAmBrF,EAAM4lG,QAAU5lG,EAAM4lG,MAAMv/F,WAAW,SAC1ErG,EAAM4lG,MAAMt/F,QAAQ,QAAS,IAAMtG,EAAM4lG,MAC7C,IAAMT,EAAa,EAAK9/F,mBAAmBrF,EAAM4lG,OAAuB,KAAd5lG,EAAM4lG,MAChE,EAAK57F,cAActF,EAAQygG,GAE3B,IAAMl+F,EAAS,EAAK8B,kBACpB9B,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMqiG,OAC5Cp7F,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM2lG,MAAO,MAClD1+F,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMwgG,UACrDv5F,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMuvB,UACrDtoB,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMsR,KAC5C,EAAK7H,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGpB5F,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,IAEf,EApCA,CAAyC,EAAAsG,cAA5B,EAAAwwF,uB,8ZCLb,YAGA,QAIA,2B,+CAwCA,OAxCuC,OACnC,YAAA52F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,KAAIA,EAAMP,OAAS,GAAnB,CAIA,EAAKuK,cAActF,EAAQ1E,EAAM,IACjC,IAAMiH,EAAS,EAAK8B,kBAOpB,GANA9B,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAM,IAAM,KAClDiH,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM,GAAI,MAC/CiH,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAM,IACrDiH,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAM,IACrDiH,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAM,IAExCA,EAAMP,OAAS,EAEf,IAAK,IAAIF,EAAI,EAAGA,EAAIS,EAAMP,OAAQF,GAAQ,EACtC,EAAKmK,WAAWzC,EAAQjH,EAAMT,GAAIS,EAAMT,EAAI,IAIpD,EAAKkK,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGpB5F,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,IAEf,EAxCA,CAAuC,EAAAsG,cAA1B,EAAAqxF,qB,8ZCPb,YAGA,QAEA,QACA,SACA,SACA,SACA,SACA,QAEA,QACA,SAEA,2B,+CAmQA,OAnQyC,OACrC,YAAAz3F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,EAAOo7C,GACpB,IAAMiqD,EAAc3gG,EAAO4F,QAAQ7K,OAC/ByK,EAAcxF,EAAOqD,QAAQtI,OAC7ByjD,EAAWljD,EAAMkjD,SACL,MAAZA,IACAA,EAAWA,EAAS58C,QAAQ,MAAO,KAAKA,QAAQ,wBAAyB,KAE7E,IAAM6D,EAA2D,WAA/C,EAAK3D,kBAAkB08C,EAAU,UAC/C94C,EAAYD,EAEhB,GAAIA,EACA,IAAK,IAAI5K,EAAI,EAAGA,EAAImF,EAAOqD,QAAQtI,OAAQF,IACvC,GAAImF,EAAOqD,QAAQxI,GAAG6I,OAAS86C,EAAU,CACrC94C,GAAY,EACZF,EAAc3K,EACd,MAKZ,IAAM0H,EAAS,EAAK4+F,gBAAgB7lG,GACpC,GAAIiH,EAAOqC,OAAS,EAAAC,WAAWC,MAC3BvC,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAM6/F,OAC5C54F,EAAOmC,MAAQ,IAAI,EAAAC,UACnBpC,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMiG,KAC5CgB,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMwK,UACrDvD,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMyK,eAClD,GAAIxD,EAAOqC,OAAS,EAAAC,WAAWoB,WAClC,EAAKm7F,gBAAgB9lG,EAAOiH,QACzB,GAAIA,EAAOqC,OAAS,EAAAC,WAAW2P,KAClCjS,EAAOM,KAAO,EAAKw+F,UAAU/lG,GAC7BiH,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMkJ,YACzC,GAAIjC,EAAOqC,OAAS,EAAAC,WAAW4P,WAClClS,EAAO+Y,SAAW,EAAKgmF,cAAchmG,GACrCiH,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMkJ,QACvC,EAAK7D,mBAAmBrF,EAAMimG,QAAQ,CAEvC,IAAMC,EAAa,EAAKL,gBAAgB7lG,GACxCkmG,EAAWlmF,SAAW,KACtBkmF,EAAW58F,KAAO,EAAAC,WAAW2P,KAC7BgtF,EAAW3+F,KAAO,EAAKw+F,UAAU/lG,GACjC0E,EAAO4F,QAAQxI,KAAKokG,GAM5B,GAFAxhG,EAAO4F,QAAQxI,KAAKmF,GAEhBmD,EAAW,CACX,IAAMnC,EAAI,IAAI,EAAAoC,WACdpC,EAAEG,KAAO86C,EACTx+C,EAAOqD,QAAQjG,KAAKmG,GAEpBkC,GACAzF,EAAOiD,oBAAoB7F,KAAK,CAACujG,EAAan7F,OAIlD7I,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,IAGH,YAAAmhG,gBAAR,SAAwB7lG,GACpB,IAAMiH,EAAS,IAAI,EAAA+B,WAmBnB,OAlBIhJ,EAAMM,eAAe,gBAAkBN,EAAMM,eAAe,oBAE5D2G,EAAOgC,UAAW,EAClBhC,EAAOmB,KAAO/G,KAAKmF,kBAAkBxG,EAAMmmG,YAAa,MACxDl/F,EAAOqC,KAAO,EAAAC,WAAW2P,KAEpB7X,KAAKgE,mBAAmBrF,EAAMmD,QAAW9B,KAAKgE,mBAAmBrF,EAAMomG,YACvE/kG,KAAKgE,mBAAmBrF,EAAMqmG,WAAchlG,KAAKgE,mBAAmBrF,EAAM2gB,WAC1Etf,KAAKgE,mBAAmBrF,EAAMmhB,QAAW9f,KAAKgE,mBAAmBrF,EAAMwK,WACvEnJ,KAAKgE,mBAAmBrF,EAAMkhB,SAC/Bja,EAAOqC,KAAO,EAAAC,WAAW4P,YAI7BlS,EAAOgC,UAAY5H,KAAKqC,cAA2D,MAA3CrC,KAAKmF,kBAAkBxG,EAAM4/F,IAAK,KAC1E34F,EAAOmB,KAAO/G,KAAKmF,kBAAkBxG,EAAMoI,KAAM,MACjDnB,EAAOqC,KAAqB,cAAdtJ,EAAMiG,IAAsB,EAAAsD,WAAWoB,WAAa,EAAApB,WAAWC,OAE1EvC,GAGH,YAAA8+F,UAAR,SAAkB/lG,GACd,IAAMuH,EAAO,IAAI,EAAA2N,SAMjB,GALA3N,EAAKgN,eAAiBlT,KAAKmF,kBAAkBxG,EAAMsmG,QACnD/+F,EAAKuN,OAASzT,KAAKmF,kBAAkBxG,EAAMimG,OAC3C1+F,EAAKiN,KAAOnT,KAAKmF,kBAAkBxG,EAAMumG,OACzCh/F,EAAKsN,MAAQxT,KAAKsF,aAAa3G,EAAMimG,QAEhC5kG,KAAKgE,mBAAmBrF,EAAMwmG,QAAUxmG,EAAMwmG,MAAM1gG,QAAQ,MAAQ,EAAG,CACxE,IAAM2gG,EAAczmG,EAAMwmG,MAAiB9/F,MAAM,KAC7C+/F,EAAWhnG,OAAS,IACpB8H,EAAKE,QAAUg/F,EAAW,GAC1Bl/F,EAAKC,SAAWi/F,EAAW,GACE,IAAzBl/F,EAAKC,SAAS/H,QAAqC,MAArB8H,EAAKC,SAAS,KAC5CD,EAAKC,SAAWD,EAAKC,SAAS,KAK1C,OAAOD,GAGH,YAAAy+F,cAAR,SAAsBhmG,GAClB,IAAMggB,EAAW,IAAI,EAAAC,aAsBrB,OArBAD,EAAS7c,MAAQ9B,KAAKmF,kBAAkBxG,EAAMmD,OAC9C6c,EAASyB,UAAYpgB,KAAKmF,kBAAkBxG,EAAMomG,WAClDpmF,EAASU,WAAarf,KAAKmF,kBAAkBxG,EAAM0mG,YACnD1mF,EAAS0B,SAAWrgB,KAAKmF,kBAAkBxG,EAAMqmG,UACjDrmF,EAASxV,SAAWnJ,KAAKmF,kBAAkBxG,EAAMwK,UACjDwV,EAASiB,QAAU5f,KAAKmF,kBAAkBxG,EAAMihB,SAChDjB,EAASoB,IAAM/f,KAAKmF,kBAAkBxG,EAAMohB,KAC5CpB,EAASW,SAAWtf,KAAKmF,kBAAkBxG,EAAM2gB,UACjDX,EAASY,SAAWvf,KAAKmF,kBAAkBxG,EAAM4gB,UACjDZ,EAASa,SAAWxf,KAAKmF,kBAAkBxG,EAAM6gB,UACjDb,EAASc,KAAOzf,KAAKmF,kBAAkBxG,EAAM8gB,MAC7Cd,EAASe,MAAQ1f,KAAKmF,kBAAkBxG,EAAM+gB,OAC9Cf,EAASgB,WAAa3f,KAAKmF,kBAAkBxG,EAAM2mG,KACnD3mF,EAAS3E,QAAUha,KAAKmF,kBAAkBxG,EAAMqb,SAChD2E,EAASkB,MAAQ7f,KAAKmF,kBAAkBxG,EAAMkhB,OAC9ClB,EAASmB,MAAQ9f,KAAKmF,kBAAkBxG,EAAMmhB,OAEzC9f,KAAKgE,mBAAmB2a,EAAS7c,SAClC6c,EAAS7c,MAAQ6c,EAAS7c,MAAM0I,OAAO,GAAGC,cAAgBkU,EAAS7c,MAAM6I,MAAM,IAG5EgU,GAGH,YAAA8lF,gBAAR,SAAwB9lG,EAAYiH,GAChC,IAAM2/F,EAAavlG,KAAKkD,aAAavE,EAAM6/F,OACvCgH,GAAgB,EAEpB,GAAID,EAAWnnG,OAAQ,CACnB,IAAMqnG,EAAYF,EAAW,GAAGlgG,MAAM,KACtC,GAAIogG,EAAUrnG,OAAS,GAAsB,aAAjBqnG,EAAU,KAChB,gBAAjBA,EAAU,IAAyC,YAAjBA,EAAU,IAAmB,CAChE,GAAqB,gBAAjBA,EAAU,GAAsB,CAChC,IAAMC,EAAa1lG,KAAK2lG,uBAAiC//F,EAAQ2/F,EAAY,CACzE,OAAU,SACV,eAAgB,iBAChB,gBAAiB,OAGjB,kBAAmB,aAGvB,GAAIvlG,KAAKgE,mBAAmB0hG,EAAWv/F,WAAqC,MAAxBu/F,EAAWv/F,SAE3Du/F,EAAWv/F,cAAW4D,MACnB,CACG,4BAAC67F,EAAA,KAAa5/F,EAAA,KAEpB,GAAKhG,KAAKgE,mBAAmB4hG,GAQzBF,EAAWv/F,cAAW4D,MARiB,CACvC,IAAMhE,EAAQ,IAAIgoB,KAAKA,KAAKxqB,MAAMqiG,EAAYxiG,OAAS,aAAaisB,WAAa,EAC7EQ,MAAM9pB,GACN2/F,EAAWv/F,cAAW4D,EAEtB27F,EAAWv/F,SAAWJ,EAAM6G,WAK/B5M,KAAKgE,mBAAmBgC,KACzB0/F,EAAWt/F,QAAUJ,GAI7BJ,EAAOqC,KAAO,EAAAC,WAAW2P,KACzBjS,EAAOM,KAAOw/F,OACX,GAAqB,YAAjBD,EAAU,GAAkB,CAC7BC,EAAa1lG,KAAK2lG,uBAAqC//F,EAAQ2/F,EAAY,CAC7E,MAAS,QACT,aAAc,YACd,YAAa,WACb,cAAe,aACf,QAAW,UACX,YAAa,WACb,YAAa,WACb,YAAa,WACb,cAAe,OACf,MAAS,QACT,oBAAqB,aACrB,QAAW,UACX,gBAAiB,QACjB,SAAY,aAEhB3/F,EAAOqC,KAAO,EAAAC,WAAW4P,SACzBlS,EAAO+Y,SAAW+mF,EAEtBF,GAAgB,GAInBA,IACD5/F,EAAO2D,WAAa,IAAI,EAAAC,eACxB5D,EAAO2D,WAAWtB,KAAO,EAAAwB,eAAeC,QACxC9D,EAAOiC,MAAQ7H,KAAKmF,kBAAkBxG,EAAM6/F,SAI5C,YAAAmH,uBAAR,SAAkC//F,EAAoB2/F,EAAsB5+F,GAA5E,WACUyN,EAAe,GAEjByxF,GAAkB,EAsCtB,OArCAN,EAAW7hG,SAAQ,SAACoiG,GAChB,IAAIlnG,EAAc,KACd2W,EAAc,KAClB,IAAKswF,EAAiB,CAClB,GAAI,EAAK7hG,mBAAmB8hG,GACxB,OAEJ,IAAMrC,EAAaqC,EAAUrhG,QAAQ,KASrC,IARoB,IAAhBg/F,EACA7kG,EAAMknG,GAENlnG,EAAMknG,EAAUphG,UAAU,EAAG++F,GACzBqC,EAAU1nG,OAASqlG,IACnBluF,EAAMuwF,EAAUphG,UAAU++F,EAAa,KAG3C,EAAKz/F,mBAAmBpF,IAAQ,EAAKoF,mBAAmBuR,IAAgB,aAAR3W,EAChE,OAIJinG,EACAjgG,EAAOiC,OAAU,KAAOi+F,EACT,UAARlnG,GACF,EAAKoF,mBAAmB4B,EAAOiC,OAGhCjC,EAAOiC,MAAQ0N,EAFf3P,EAAOiC,OAAU,KAAO0N,EAI5BswF,GAAkB,GACXl/F,EAAI1H,eAAeL,GAC1BwV,EAAQzN,EAAI/H,IAAQ2W,EAEpB,EAAKlN,WAAWzC,EAAQhH,EAAK2W,MAI9BnB,GAEf,EAnQA,CAAyC,EAAAzK,cAA5B,EAAAuwF,uB,8ZCfb,YAGA,QAEA,2B,+CAyBA,OAzB0C,OACtC,YAAA32F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,KAAIA,EAAMP,OAAS,GAAnB,CAGA,IAAMwH,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM,GAAI,MAC/CiH,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAM,IACrDiH,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAM,IACrDiH,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAM,IAC5C,EAAKyJ,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EAzBA,CAA0C,EAAAsG,cAA7B,EAAAizF,wB,8ZCLb,YAGA,QAEA,2B,+CAuBA,OAvBwC,OACpC,YAAAr5F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,IAAMiH,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMonG,YAAa,MACxDngG,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMqiG,OAC5Cp7F,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMqnG,UACrDpgG,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMuvB,UACrDtoB,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMsnG,KAC5C,EAAK79F,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EAvBA,CAAwC,EAAAsG,cAA3B,EAAAkxF,sB,8ZCLb,YAGA,QAEA,QACA,SAEA,QAEA,2B,+CAmDA,OAnDwC,OACpC,YAAAt3F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,KAAIA,EAAMP,OAAS,GAAnB,CAIA,IAAMwK,EAAgE,eAAnD,EAAKzD,kBAAkBxG,EAAM,GAAI,cAAiCA,EAAM,GAAK,KAChG,EAAKgK,cAActF,EAAQuF,GAE3B,IAAMhD,EAAS,EAAK8B,kBAGpB,GAFA9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM,GAAI,MAE9B,eAAbA,EAAM,IAAoC,UAAbA,EAAM,GACnCiH,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAM,IAC5CiH,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAM,IACrDiH,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAM,IACrDiH,EAAOiC,MAAS,EAAK7D,mBAAmBrF,EAAM,IAAyC,KAAnCA,EAAM,GAAG0G,MAAM,OAAOlC,KAAK,WAC5E,GAAIxE,EAAMP,OAAS,EAAG,CACzBwH,EAAOqC,KAAO,EAAAC,WAAWoB,WACzB1D,EAAO2D,WAAa,IAAI,EAAAC,eACxB5D,EAAO2D,WAAWtB,KAAO,EAAAwB,eAAeC,QACxC,IAAK,IAAIxL,EAAI,EAAGA,EAAIS,EAAMP,OAAQF,IACzB,EAAK8F,mBAAmBrF,EAAMT,MAC/B0H,EAAOiC,OAAUlJ,EAAMT,GAAK,MAKnC,EAAK8F,mBAAmBrF,EAAM,KAAOiH,EAAOqC,OAAS,EAAAC,WAAWC,QACjEvC,EAAOmB,KAAOpI,EAAM,GAAK,KAAOiH,EAAOmB,MAG3C,EAAKqB,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGpB5F,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,IAEf,EAnDA,CAAwC,EAAAsG,cAA3B,EAAA2xF,sB,8ZCVb,YAGA,QACA,SAEA,QACA,SACA,QAEA,QAEA,2B,+CA+DA,OA/DqC,OACjC,YAAA/3F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,IAAMiH,EAAS,EAAK8B,kBAIpB,GAHA9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMunG,SAAU,MACrDtgG,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMwnG,qBAE1Bp8F,IAAdpL,EAAMiG,IAENgB,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMiG,KAC5CgB,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMwK,UACrDvD,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMyK,UACrDxD,EAAOmC,MAAMic,KAAO,EAAK7e,kBAAkBxG,EAAMynG,uBAC9C,QAAyBr8F,IAArBpL,EAAMk/F,WAEbj4F,EAAOM,KAAO,IAAI,EAAA2N,SAClBjO,EAAOqC,KAAO,EAAAC,WAAW2P,KACzBjS,EAAOM,KAAKgN,eAAiB,EAAK/N,kBAAkBxG,EAAM0nG,UAC1DzgG,EAAOM,KAAKuN,OAAS,EAAKtO,kBAAkBxG,EAAMk/F,YAClDj4F,EAAOM,KAAKsN,MAAQ,EAAKlO,aAAaM,EAAOM,KAAKuN,QAClD7N,EAAOM,KAAKC,SAAW,EAAKhB,kBAAkBxG,EAAM2nG,WACpD1gG,EAAOM,KAAKE,QAAU,EAAKjB,kBAAkBxG,EAAM4nG,UACnD3gG,EAAOM,KAAKiN,KAAO,EAAKhO,kBAAkBxG,EAAMm/F,UAC7C,QAAwB/zF,IAApBpL,EAAMyhB,UAEbxa,EAAO+Y,SAAW,IAAI,EAAAC,aACtBhZ,EAAOqC,KAAO,EAAAC,WAAW4P,SACzBlS,EAAO+Y,SAAS7c,MAAQ,EAAKqD,kBAAkBxG,EAAMmD,OACrD8D,EAAO+Y,SAASyB,UAAY,EAAKjb,kBAAkBxG,EAAMyhB,WACzDxa,EAAO+Y,SAASU,WAAa,EAAKla,kBAAkBxG,EAAM0gB,YAC1DzZ,EAAO+Y,SAAS0B,SAAW,EAAKlb,kBAAkBxG,EAAM0hB,UACxDza,EAAO+Y,SAASmB,MAAQ,EAAK3a,kBAAkBxG,EAAM8U,QACrD7N,EAAO+Y,SAASkB,MAAQ,EAAK1a,kBAAkBxG,EAAMkhB,OACrDja,EAAO+Y,SAASW,SAAW,EAAKna,kBAAkBxG,EAAM6nG,kBACxD5gG,EAAO+Y,SAASY,SAAW,EAAKpa,kBAAkBxG,EAAM8nG,mBACxD7gG,EAAO+Y,SAASc,KAAO,EAAKta,kBAAkBxG,EAAM8gB,MACpD7Z,EAAO+Y,SAAS3E,QAAU,EAAK7U,kBAAkBxG,EAAMqb,SACvDpU,EAAO+Y,SAASgB,WAAa,EAAKxa,kBAAkBxG,EAAM+nG,aACvD,SAAsB38F,IAAlBpL,EAAM4pC,QAQb,OANA3iC,EAAO2D,WAAa,IAAI,EAAAC,eACxB5D,EAAOqC,KAAO,EAAAC,WAAWoB,WACzB1D,EAAO2D,WAAWtB,KAAO,EAAAwB,eAAeC,QACxC9D,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMmD,MAAO,MAClD8D,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAM4pC,SAKhD,EAAKngC,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EA/DA,CAAqC,EAAAsG,cAAxB,EAAA+yF,mB,8ZCZb,YAGA,QAEA,QAEA,SACA,SACA,QAEA,QACA,SACA,SAEA,yE,OACI,EAAAr5F,OAAS,IAAI,EAAAwG,a,EAuOjB,OAxO6C,OAGzC,YAAAtG,MAAA,SAAMjD,GAAN,WAuBI,OAtBAA,EAAK+E,MAAMrF,KAAKsC,cAAcoB,SAAQ,SAACijG,GACnC,IAAI,EAAK3iG,mBAAmB2iG,IAAqB,MAAZA,EAAK,GAA1C,CAGA,IAAM1pB,EAAOr+B,KAAKr7C,MAAMojG,GACxB,IAAqB,IAAjB1pB,EAAK2pB,QAAT,CAGA,IAAMhhG,EAAS,EAAK8B,kBAEhB,EAAK1D,mBAAmBi5E,EAAK1H,MAC7B,EAAKsxB,oBAAoB5pB,EAAMr3E,GAE/B,EAAKkhG,sBAAsB7pB,EAAMr3E,GAGrC,EAAKsD,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GACnB,EAAKvC,OAAO4F,QAAQxI,KAAKmF,QAG7B5F,KAAKqD,OAAOuG,SAAU,EACf5J,KAAKqD,QAGR,YAAAyjG,sBAAR,SAA8B7pB,EAAWr3E,GAAzC,WACI,GAAqB,MAAjBq3E,EAAK8pB,WACLnhG,EAAOmB,KAAO/G,KAAKmF,kBAAkB83E,EAAK8pB,SAASjlG,OACzB,MAAtBm7E,EAAK8pB,SAASC,MAAc,CAC5B,IAAM,EAAiB,GACvB/pB,EAAK8pB,SAASC,KAAKtjG,SAAQ,SAACkB,GACnB,EAAKZ,mBAAmBY,EAAIJ,IAC7B,EAAK/D,KAAKmE,EAAIJ,MAGtBoB,EAAOmC,MAAMsB,KAAOrJ,KAAKkE,aAAa,GAI1B,MAAhB+4E,EAAKwU,UAC+B,MAAhCxU,EAAKwU,QAAQ3yE,iBACb9e,KAAKinG,qBAAqBhqB,EAAKwU,QAAQ3yE,gBAAiBlZ,GAEvD5F,KAAKgE,mBAAmBi5E,EAAKwU,QAAQmT,QAAW5kG,KAAKgE,mBAAmBi5E,EAAKwU,QAAQqM,KAG9E99F,KAAKgE,mBAAmBi5E,EAAKwU,QAAQsT,YAC5C/kG,KAAKgE,mBAAmBi5E,EAAKwU,QAAQnyE,YACtC1Z,EAAOqC,KAAO,EAAAC,WAAW4P,SACzBlS,EAAO+Y,SAAW,IAAI,EAAAC,eALtBhZ,EAAOqC,KAAO,EAAAC,WAAW2P,KACzBjS,EAAOM,KAAO,IAAI,EAAA2N,UAMlBjO,EAAOqC,OAAS,EAAAC,WAAWC,OAAUnI,KAAKgE,mBAAmBi5E,EAAKwU,QAAQroF,YAC1ExD,EAAOmC,MAAMqB,SAAW6zE,EAAKwU,QAAQroF,UAEpCpJ,KAAKgE,mBAAmBi5E,EAAKwU,QAAQyV,cACtCthG,EAAOiC,MAAQo1E,EAAKwU,QAAQyV,WAAW7hG,MAAMrF,KAAKsC,cAAca,KAAK,MAAQ,MAEtD,MAAvB85E,EAAKwU,QAAQ3pF,QACb9H,KAAKmnG,YAAYlqB,EAAKwU,QAAQ3pF,OAAQlC,EAAQ,cAAe,QAAS,QAE7C,MAAzBq3E,EAAKwU,QAAQ2V,UACbnqB,EAAKwU,QAAQ2V,SAAS1jG,SAAQ,SAAC2jG,GACL,MAAlBA,EAAQv/F,QACR,EAAKq/F,YAAYE,EAAQv/F,OAAQlC,EAAQ,IAAK,IAAK,UAO/D,YAAAihG,oBAAR,SAA4B5pB,EAAWr3E,GAAvC,WAkBI,GAjBAA,EAAOgC,YAAWq1E,EAAKqqB,eAAgBrqB,EAAKqqB,aAAaC,WACzD3hG,EAAOmB,KAAO/G,KAAKmF,kBAAkB83E,EAAKn7E,OAEpB,2BAAlBm7E,EAAKuqB,UACL5hG,EAAOqC,KAAO,EAAAC,WAAWoB,WACzB1D,EAAO2D,WAAa,IAAI,EAAAC,eACxB5D,EAAO2D,WAAWtB,KAAO,EAAAwB,eAAeC,SACf,gCAAlBuzE,EAAKuqB,UACZ5hG,EAAOqC,KAAO,EAAAC,WAAW2P,KACzBjS,EAAOM,KAAO,IAAI,EAAA2N,UACO,wBAAlBopE,EAAKuqB,UACZ5hG,EAAOqC,KAAO,EAAAC,WAAW4P,SACzBlS,EAAO+Y,SAAW,IAAI,EAAAC,cAEtBhZ,EAAOmC,MAAMsB,KAAOrJ,KAAKkE,aAAa+4E,EAAK/jC,UAGpB,MAAvB+jC,EAAKwqB,eAAwB,CAO7B,GAN2C,MAAvCxqB,EAAKwqB,eAAe3oF,iBACpB9e,KAAKinG,qBAAqBhqB,EAAKwqB,eAAe3oF,gBAAiBlZ,GAE9D5F,KAAKgE,mBAAmBi5E,EAAKwqB,eAAeP,cAC7CthG,EAAOiC,MAAQo1E,EAAKwqB,eAAeP,WAAW7hG,MAAMrF,KAAKsC,cAAca,KAAK,MAAQ,MAEpFyC,EAAOqC,OAAS,EAAAC,WAAWC,QACtBnI,KAAKgE,mBAAmBi5E,EAAKwqB,eAAer+F,YAC7CxD,EAAOmC,MAAMqB,SAAW6zE,EAAKwqB,eAAer+F,UAEhB,MAA5B6zE,EAAKwqB,eAAeT,MAAc,CAClC,IAAM,EAAiB,GACvB/pB,EAAKwqB,eAAeT,KAAKtjG,SAAQ,SAACc,GACzB,EAAKR,mBAAmBQ,EAAEI,MAC3B,EAAKnE,KAAK+D,EAAEI,QAGhB,EAAKxG,OAAS,IACdwH,EAAOmC,MAAMsB,KAAOrJ,KAAKkE,aAAa,IAIhB,MAA9B+4E,EAAKwqB,eAAe3/F,QACpB9H,KAAKmnG,YAAYlqB,EAAKwqB,eAAe3/F,OAAQlC,EAAQ,cAAe,QAAS,QAE7C,MAAhCq3E,EAAKwqB,eAAeL,UACpBnqB,EAAKwqB,eAAeL,SAAS1jG,SAAQ,SAAC2jG,GACZ,MAAlBA,EAAQv/F,QACR,EAAKq/F,YAAYE,EAAQv/F,OAAQlC,EAAQ,IAAK,IAAK,UAO/D,YAAAqhG,qBAAR,SAA6B/6D,EAActmC,GAA3C,WACU8hG,EAAUx7D,EAAM9tC,OAAS,EAAI,EAAI8tC,EAAM9tC,OAC7CwH,EAAOkZ,gBAAkBotB,EACpB1kC,QAAO,SAACo/D,GAAW,OAAC,EAAK5iE,mBAAmB4iE,EAAEjoE,QAAoB,MAAVioE,EAAE+gC,QAC1Dl9E,MAAK,SAACpb,EAAGC,GAAM,OAAAA,EAAEq4F,KAAOt4F,EAAEs4F,QAC1Bh9F,MAAM,EAAG+8F,GACT/gG,KAAI,SAACigE,GACF,IAAM5hD,EAAK,IAAI,EAAAm8B,oBAGf,OAFAn8B,EAAG5b,SAAWw9D,EAAEjoE,MAChBqmB,EAAGmC,aAAe,IAAI4G,MAAM,GAAK64C,EAAE+gC,MAAMvpG,QAAU,GAAKwoE,EAAE+gC,KAAgB,IAAT/gC,EAAE+gC,MAC5D3iF,MAIX,YAAAmiF,YAAR,SAAoBr/F,EAAelC,EAAoBgiG,EAAwBC,EAAkBvE,GAAjG,WACIx7F,EAAOpE,SAAQ,SAAC+E,GACZ,GAAuB,MAAnBA,EAAMo/F,IAA2D,KAAtCp/F,EAAMo/F,GAAUj7F,WAAWxJ,OAA1D,CAIA,IAAMm+F,EAAa94F,EAAMo/F,GAAUj7F,WAC7Bk7F,EAA4C,MAAzBr/F,EAAMm/F,GAA0Bn/F,EAAMm/F,GAAgBh7F,WAAa,KAE5F,GAAIhH,EAAOqC,OAAS,EAAAC,WAAWC,MAAO,CAClC,GAAI,EAAKnE,mBAAmB4B,EAAOmC,MAAMoB,WAAkC,aAArB2+F,EAElD,YADAliG,EAAOmC,MAAMoB,SAAWo4F,GAErB,GAAI,EAAKv9F,mBAAmB4B,EAAOmC,MAAMqB,WAAkC,aAArB0+F,EAEzD,YADAliG,EAAOmC,MAAMqB,SAAWm4F,GAErB,GAAI,EAAKv9F,mBAAmB4B,EAAOmC,MAAMic,OAA6B,MAApB8jF,GACrDA,EAAiB9iG,WAAW,SAE5B,YADAY,EAAOmC,MAAMic,KAAOu9E,QAGrB,GAAI37F,EAAOqC,OAAS,EAAAC,WAAW2P,KAAM,CACxC,GAAI,EAAK7T,mBAAmB4B,EAAOM,KAAKuN,SAAgC,UAArBq0F,EAG/C,OAFAliG,EAAOM,KAAKuN,OAAS8tF,OACrB37F,EAAOM,KAAKsN,MAAQ,EAAKlO,aAAai8F,IAEnC,GAAI,EAAKv9F,mBAAmB4B,EAAOM,KAAKiN,OAA8B,QAArB20F,EAEpD,YADAliG,EAAOM,KAAKiN,KAAOouF,GAEhB,GAAI,EAAKv9F,mBAAmB4B,EAAOM,KAAKgN,iBAAwC,eAArB40F,EAE9D,YADAliG,EAAOM,KAAKgN,eAAiBquF,GAE1B,GAAI,EAAKv9F,mBAAmB4B,EAAOM,KAAKL,aAAoC,WAArBiiG,GACpC,IAAtBvG,EAAWnjG,OAMX,OALAwH,EAAOM,KAAKC,SAAYo7F,EAAsBt7F,OAAO,EAAG,GACxB,MAA5BL,EAAOM,KAAKC,SAAS,KACrBP,EAAOM,KAAKC,SAAWP,EAAOM,KAAKC,SAASF,OAAO,EAAG,SAE1DL,EAAOM,KAAKE,QAAWm7F,EAAsBt7F,OAAO,EAAG,IAEpD,GAAyB,SAArB6hG,EAEP,YAED,GAAIliG,EAAOqC,OAAS,EAAAC,WAAW4P,SAAU,CAC5C,IAAM6G,EAAW/Y,EAAO+Y,SACxB,GAAI,EAAK3a,mBAAmB2a,EAASyB,YAAmC,cAArB0nF,EAE/C,YADAnpF,EAASyB,UAAYmhF,GAElB,GAAI,EAAKv9F,mBAAmB2a,EAAS0B,WAAkC,aAArBynF,EAErD,YADAnpF,EAAS0B,SAAWkhF,GAEjB,GAAI,EAAKv9F,mBAAmB2a,EAASU,aAAoC,YAArByoF,EAEvD,YADAnpF,EAASU,WAAakiF,GAEnB,GAAI,EAAKv9F,mBAAmB2a,EAASmB,QAA+B,aAArBgoF,EAElD,YADAnpF,EAASmB,MAAQyhF,GAEd,GAAI,EAAKv9F,mBAAmB2a,EAASiB,UAAiC,YAArBkoF,EAEpD,YADAnpF,EAASiB,QAAU2hF,GAEhB,GAAI,EAAKv9F,mBAAmB2a,EAASkB,QAA+B,UAArBioF,EAElD,YADAnpF,EAASkB,MAAQ0hF,GAEd,GAAI,EAAKv9F,mBAAmB2a,EAASxV,WAAkC,aAArB2+F,EAErD,YADAnpF,EAASxV,SAAWo4F,GAEjB,GAAyB,YAArBuG,EAAgC,CAEjC,WAAEC,EAAA,EAAAA,OAAQtoF,EAAA,EAAAA,KAAMzF,EAAA,EAAAA,QAASsrF,EAAA,EAAAA,IAO/B,OANA3mF,EAASW,SAAW,EAAKna,kBAAkB4iG,GAC3CppF,EAASc,KAAO,EAAKta,kBAAkBsa,GAClC,EAAKzb,mBAAmBgW,KACzB2E,EAAS3E,QAAUA,EAAQvP,oBAE/BkU,EAASgB,WAAa,EAAKxa,kBAAkBmgG,KAKrD,IAAM9D,EAAY,EAAKx9F,mBAAmByE,EAAM66F,IAAY,UAAY76F,EAAM66F,GAC9E,GAAkB,aAAd9B,GAAsD,MAA1B57F,EAAOkZ,kBACnClZ,EAAOkZ,gBAAgBoF,MAAK,SAAC0iD,GAAM,OAAAA,EAAEx9D,WAAam4F,KADtD,CAKA,IAAMvV,EAAwB,cAAZvjF,EAAM6tD,EAAoB,EAAAhuD,UAAU+gE,OAAS,EAAA/gE,UAAUC,KACzE,EAAKF,WAAWzC,EAAQ47F,EAAWD,EAAYvV,SAG3D,EAxOA,CAA6C,EAAAriF,cAAhC,EAAAmxF,2B,8ZCfb,YAGA,QAEA,QACA,UAEMkN,EAAoB,CAAC,QAAS,aAAc,aAAc,KAAM,QAAS,OAAQ,QAAS,QAEhG,2B,+CA8FA,OA9F+C,OAC3C,YAAAzkG,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,IAAI,EAAKqF,mBAAmB,EAAKikG,QAAQtpG,EAAO,UAAhD,CAIA,IAAMiH,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkB,EAAK8iG,QAAQtpG,EAAO,SAAU,MACnEiH,EAAOiC,MAAQ,EAAK1C,kBAAkB,EAAK8iG,QAAQtpG,EAAO,cAAe,IAAM,KAE1E,EAAKqF,mBAAmB,EAAKikG,QAAQtpG,EAAO,YAC5C,EAAKqF,mBAAmB,EAAKikG,QAAQtpG,EAAO,kBAC7CiH,EAAOqC,KAAO,EAAAC,WAAW2P,KACzBjS,EAAOM,KAAO,IAAI,EAAA2N,UAGtB,IAAIq0F,EAAsB,KAC1B,IAAK,IAAM9oG,KAAYT,EACnB,GAAKA,EAAMM,eAAeG,KAAa,EAAK4E,mBAAmBrF,EAAMS,IAArE,CAIA,IAAM+oG,EAAY/oG,EAASsL,cAC3B,GAAI9E,EAAOqC,OAAS,EAAAC,WAAWC,MAAO,CAClC,GAAI,EAAKnE,mBAAmB4B,EAAOmC,MAAMqB,WAA2B,aAAd++F,EAA0B,CAC5EviG,EAAOmC,MAAMqB,SAAWzK,EAAMS,GAC9B,SACG,GAAI,EAAK4E,mBAAmB4B,EAAOmC,MAAMoB,WAA2B,aAAdg/F,EAA0B,CACnFviG,EAAOmC,MAAMoB,SAAWxK,EAAMS,GAC9B,SACG,IAA0B,MAArBwG,EAAOmC,MAAMsB,MAA4C,IAA5BzD,EAAOmC,MAAM5D,IAAI/F,SAA+B,SAAd+pG,EAAsB,CAC7F,IAAMnoC,EAAOrhE,EAAMS,GAAUiG,MAAM,EAAK/C,cACxCsD,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAa87D,GACtC,eAED,GAAIp6D,EAAOqC,OAAS,EAAAC,WAAW2P,KAAM,CACxC,GAAI,EAAK7T,mBAAmB4B,EAAOM,KAAKuN,SAAyB,WAAd00F,EAAwB,CACvEviG,EAAOM,KAAKuN,OAAS9U,EAAMS,GAC3BwG,EAAOM,KAAKsN,MAAQ,EAAKlO,aAAa,EAAK2iG,QAAQtpG,EAAO,WAC1D,SACG,GAAI,EAAKqF,mBAAmB4B,EAAOM,KAAKiN,OAAuB,wBAAdg1F,EAAqC,CACzFviG,EAAOM,KAAKiN,KAAOxU,EAAMS,GACzB,SACG,GAAI,EAAK4E,mBAAmB4B,EAAOM,KAAKgN,iBAAiC,oBAAdi1F,EAAiC,CAC/FviG,EAAOM,KAAKgN,eAAiBvU,EAAMS,GACnC,SACG,GAAI,EAAK4E,mBAAmB4B,EAAOM,KAAKL,aAA6B,gBAAdsiG,GAC/B,IAA3BxpG,EAAMS,GAAUhB,OAAc,CAC9BwH,EAAOM,KAAKC,SAAYxH,EAAMS,GAAqB6G,OAAO,EAAG,GAC7B,MAA5BL,EAAOM,KAAKC,SAAS,KACrBP,EAAOM,KAAKC,SAAWP,EAAOM,KAAKC,SAASF,OAAO,EAAG,IAE1DL,EAAOM,KAAKE,QAAWzH,EAAMS,GAAqB6G,OAAO,EAAG,GAC5D,SACG,GAAkB,SAAdkiG,EAEP,UAIsC,IAA1CH,EAAkBvjG,QAAQ0jG,IAAsBA,EAAUnjG,WAAW,aACpEmjG,EAAUnjG,WAAW,cACH,MAAfkjG,GAAqC,UAAdC,IACvBD,EAAcvpG,EAAMS,IAExB,EAAKiJ,WAAWzC,EAAQxG,EAAUT,EAAMS,KAI5CwG,EAAOqC,OAAS,EAAAC,WAAWC,QAAU,EAAKnE,mBAAmBkkG,IAC7D,EAAKlkG,mBAAmB4B,EAAOmC,MAAMoB,YAA6C,IAAhC++F,EAAYzjG,QAAQ,SACtEmB,EAAOmC,MAAMoB,SAAW++F,GAG5B,EAAKh/F,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGxBvC,EAAOuG,SAAU,EACVvG,IAGH,YAAA4kG,QAAR,SAAgB7iF,EAAUre,GACtB,OAAOqe,EAAIre,IAASqe,EAAIre,EAAK0D,gBAErC,EA9FA,CAA+C,EAAAd,cAAlC,EAAAoxF,6B,8ECVb,aAAS,EAAA5iC,eAAA,EAAAA,eACT,YAAS,EAAAtkD,SAAA,EAAAA,SACT,aAAS,EAAAlM,WAAA,EAAAA,WACT,aAAS,EAAAe,UAAA,EAAAA,UACT,aAAS,EAAAkW,aAAA,EAAAA,aACT,aAAS,EAAAva,aAAA,EAAAA,aACT,aAAS,EAAA2D,UAAA,EAAAA,UACT,YAAS,EAAAwB,eAAA,EAAAA,eACT,cAAS,EAAA4+F,KAAA,EAAAA,M,8ECRT,mBAAa,EAAAA,Q,8ZCAb,YAGA,QAEA,SAGA,2B,+CA8EA,OA9EwC,OACpC,YAAA7kG,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,GAAe,MAAXqoC,EAEA,OADAtlC,EAAOuG,SAAU,EACVvG,EAGX,IAAIg9D,EAAoB,KAmExB,OAlEA13B,EAAQjlC,SAAQ,SAAC/E,GACb,GAAe,MAAX0hE,GAKJ,KAAI1hE,EAAMP,OAAS,GAAKO,EAAMP,SAAWiiE,EAAQjiE,QAAjD,CAIA,IAAK,EAAK4F,mBAAmBrF,EAAM,IAC/B,GAAI,EAAK0D,aAAc,EACbgmG,EAAQ1pG,EAAM,GAAc0G,MAAM,MACnC3B,SAAQ,SAAC4kG,GACVA,EAAMA,EAAIllG,OAIV,IAHA,IAAI+6F,GAAgB,EAChBC,EAAkB/6F,EAAOoD,YAAYrI,OAEhCF,EAAI,EAAGA,EAAImF,EAAOoD,YAAYrI,OAAQF,IAC3C,GAAImF,EAAOoD,YAAYvI,GAAG6I,OAASuhG,EAAK,CACpCnK,GAAgB,EAChBC,EAAkBlgG,EAClB,MAIR,GAAIigG,EAAe,CACf,IAAMt3F,EAAa,IAAI,EAAAC,eACvBD,EAAWE,KAAOuhG,EAClBjlG,EAAOoD,YAAYhG,KAAKoG,GAG5BxD,EAAOmD,wBAAwB/F,KAAK,CAAC4C,EAAO4F,QAAQ7K,OAAQggG,WAE7D,CACH,IAAMiK,EACAC,GADAD,EAAQ1pG,EAAM,GAAc0G,MAAM,MACvBjH,OAAS,EAAIiqG,EAAK,GAAGjlG,OAAS,KAC/C,EAAKuF,cAActF,EAAQilG,GAInC,IAAM1iG,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM,GAAI,MAE/C,IAAK,IAAIT,EAAI,EAAGA,EAAIS,EAAMP,OAAQF,IAAK,CACnC,IAAM+E,EAASo9D,EAAQniE,GAAGkF,OAAOsH,cAC7B,EAAK1G,mBAAmBrF,EAAMT,KAAO,EAAK8F,mBAAmBf,KAI7D,EAAKT,mBAAmBiC,QAAQxB,IAAW,EAC3C2C,EAAOmC,MAAMoB,SAAWxK,EAAMT,GACvB,EAAKqE,mBAAmBkC,QAAQxB,IAAW,EAClD2C,EAAOmC,MAAMqB,SAAWzK,EAAMT,GACvB,EAAKwE,cAAc+B,QAAQxB,IAAW,EAC7C2C,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMT,IAE5C,EAAKmK,WAAWzC,EAAQy6D,EAAQniE,GAAIS,EAAMT,KAIlD,EAAKkK,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,SA5DhBy6D,EAAU1hE,EAAMgI,KAAI,SAAC8hE,GAAc,OAAAA,QA+D3CplE,EAAOuG,SAAU,EACVvG,GAEf,EA9EA,CAAwC,EAAAsG,cAA3B,EAAA4wF,sB,8ZCRb,YAGA,QAEA,2B,+CAiCA,OAjCyC,OACrC,YAAAh3F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,EAAKgK,cAActF,EAAQ,EAAKklG,SAAS,WAAY5pG,IACrD,IAAMiH,EAAS,EAAK8B,kBACpB9B,EAAOiC,MAAQ,EAAK0gG,SAAS,cAAe5pG,GAC5CiH,EAAOmB,KAAO,EAAK5B,kBAAkB,EAAKojG,SAAS,QAAS5pG,GAAQ,MACpEiH,EAAOmC,MAAMoB,SAAW,EAAKo/F,SAAS,WAAY5pG,GAClDiH,EAAOmC,MAAMqB,SAAW,EAAKm/F,SAAS,WAAY5pG,GAClDiH,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAa,EAAKqkG,SAAS,OAAQ5pG,IAC5D,EAAK0J,WAAWzC,EAAQ,aAAc,EAAK2iG,SAAS,YAAa5pG,IACjE,EAAKyJ,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGpB5F,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,IAGH,YAAAklG,SAAR,SAAiB3pG,EAAaD,GAC1B,OAAOqB,KAAKmF,kBAAkBxG,EAAMC,GAAMoB,KAAKmF,kBAAkBxG,EAAO,IAAMC,MAEtF,EAjCA,CAAyC,EAAA+K,cAA5B,EAAAoyF,uB,8ZCLb,YAGA,QAEA,2B,+CAuDA,OAvDyC,OACrC,YAAAx4F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAUiW,KAAKr7C,MAAMjD,GAC3B,OAAe,MAAXqoC,GAAsC,IAAnBA,EAAQvqC,QAC3BiF,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC28F,GACb,GAAuB,MAAnBA,EAAWgI,MAAgBhI,EAAWgI,KAAKjqG,OAAS,EAAG,CACvD,IAAMwK,EAAay3F,EAAWgI,KAAK,GAAG/kF,KACtC,EAAK3a,cAActF,EAAQuF,GAG/B,IAAMhD,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAOs5F,EAAW7jF,MAEzB5W,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBk7F,EAAWl3F,UACtD,EAAKnF,mBAAmB4B,EAAOmC,MAAMoB,UACrCvD,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBk7F,EAAWxgF,OAClD,EAAK7b,mBAAmBq8F,EAAWxgF,SAC3Cja,EAAOiC,MAAS,UAAYw4F,EAAWxgF,MAAQ,MAGnDja,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBk7F,EAAWj3F,UAC1DxD,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAam8F,EAAWz7F,KACjDgB,EAAOiC,OAAS,EAAK1C,kBAAkBk7F,EAAWzqE,YAAa,IACzC,MAAlByqE,EAAWne,MACXt8E,EAAOmC,MAAMic,KAAO,EAAK7e,kBAAkBk7F,EAAWne,IAAIygB,SAG9B,MAA5BtC,EAAWmI,eACXnI,EAAWmI,cAAc9kG,SAAQ,SAAC+kG,GAC9B,OAAQA,EAAYC,YAChB,IAAK,OACL,IAAK,WACD,EAAKrgG,WAAWzC,EAAQ6iG,EAAYjsF,MAAOisF,EAAY9pG,WAMvE,EAAKuK,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGpB5F,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,IAEf,EAvDA,CAAyC,EAAAsG,cAA5B,EAAAwyF,uB,8ZCLb,YAGA,QAEA,SAEA,2B,+CAqFA,OArFyC,OACrC,YAAA54F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,IAAMgqG,EAAY,EAAK3kG,mBAAmBrF,EAAMiqG,MAAiC,KAAzBhqD,KAAKr7C,MAAM5E,EAAMiqG,MACnEP,EAA6B,MAAZM,GAAqC,MAAjBA,EAASN,MAAgBM,EAASN,KAAKjqG,OAAS,EACvFuqG,EAASN,KAAK1hG,KAAI,SAACkiG,GACf,IACI,IAAM5oG,EAAI2+C,KAAKr7C,MAAMslG,GACrB,OAAO,EAAK1jG,kBAAkBlF,EAAEqoG,KAClC,UACF,OAAO,QACR9gG,QAAO,SAACvH,GAAc,OAAC,EAAK+D,mBAAmB/D,MAAM,KAExD,EAAKoC,cAAwB,MAARgmG,GAAgBA,EAAKjqG,OAAS,EACnDiqG,EAAK3kG,SAAQ,SAAC4kG,GAIV,IAHA,IAAInK,GAAgB,EAChBC,EAAkB/6F,EAAOoD,YAAYrI,OAEhCF,EAAI,EAAGA,EAAImF,EAAOoD,YAAYrI,OAAQF,IAC3C,GAAImF,EAAOoD,YAAYvI,GAAG6I,OAASuhG,EAAK,CACpCnK,GAAgB,EAChBC,EAAkBlgG,EAClB,MAIR,GAAIigG,EAAe,CACf,IAAMt3F,EAAa,IAAI,EAAAC,eACvBD,EAAWE,KAAOuhG,EAClBjlG,EAAOoD,YAAYhG,KAAKoG,GAG5BxD,EAAOmD,wBAAwB/F,KAAK,CAAC4C,EAAO4F,QAAQ7K,OAAQggG,QAExD,EAAK/7F,cAAwB,MAARgmG,GAAgBA,EAAKjqG,OAAS,GAC3D,EAAKuK,cAActF,EAAQglG,EAAK,IAGpC,IAAMziG,EAAS,EAAK8B,kBACpB9B,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMqiG,MAAO,IACnDp7F,EAAOiC,OAAU,OAAS,EAAK1C,kBAAkBxG,EAAM,gBAAiB,IAAM,KAC9EiH,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM,cAAe,MAC1DiH,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAM,YACrDiH,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMuvB,UACrDtoB,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMsR,KAEhB,MAAxBtR,EAAMmqG,gBAA0BnqG,EAAMmqG,eAAe1qG,OAAS,GAC9DO,EAAMmqG,eAAeplG,SAAQ,SAAC86F,GACrB,EAAKx6F,mBAAmBw6F,KACzB54F,EAAOiC,OAAU,KAAO22F,MAKpC,IAAMuK,EAAc,EAAK/kG,mBAAmBrF,EAAM,iBACV,KAApCigD,KAAKr7C,MAAM5E,EAAM,iBACfmJ,EAAuB,MAAdihG,GAAgD,MAA1BA,EAAWC,aAC5CD,EAAWC,YAAY5qG,OAAS,EAAI2qG,EAAWC,YAAYriG,KAAI,SAACsiG,GAC5D,IACI,OAAOrqD,KAAKr7C,MAAM0lG,GACpB,UACF,OAAO,QACN,KACK,MAAVnhG,GACAA,EAAOpE,SAAQ,SAACkD,GACH,MAALA,GACA,EAAKyB,WAAWzC,EAAQgB,EAAEG,KAAMH,EAAEtG,SAK9C,EAAK8H,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EArFA,CAAyC,EAAAsG,cAA5B,EAAAuyF,uB,8ZCPb,YAGA,QAEA,2B,+CA8CA,OA9C8C,OAC1C,YAAA34F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,GAAe,MAAXqoC,EAEA,OADAtlC,EAAOuG,SAAU,EACVvG,EAGX,IAAI6lG,GAAa,EAmCjB,OAlCAvgE,EAAQjlC,SAAQ,SAAC/E,GACb,KAAqB,IAAjBA,EAAMP,QAAgBO,EAAMP,OAAS,GAAzC,CAGA,IAAM+qG,EAA6B,KAAjBxqG,EAAMP,QAA8B,MAAbO,EAAM,GACzCiH,EAAS,EAAK8B,kBAIpB,GAHA9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMwqG,EAAY,EAAI,GAAI,MAC/DvjG,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMwqG,EAAY,EAAI,IACrEvjG,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMwqG,EAAY,EAAI,IAChD,IAAjBxqG,EAAMP,OACN8qG,GAAa,EACbtjG,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAM,IAC5CiH,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAM,QACzC,CACH,IAAMw4C,EAAS,EAAKhyC,kBAAkBxG,EAAMwqG,EAAY,EAAI,GAAI,UAC5DvgG,EAAwB,WAAXuuC,EAAsBA,EAAO9xC,MAAM,MAAMlC,KAAK,KAAO,KACpD,MAAdyF,IACAA,EAAauuC,EAAO9xC,MAAM,OAAOlC,KAAK,KACtCyF,EAAauuC,EAAO9xC,MAAM,KAAKlC,KAAK,MAExC,EAAKwF,cAActF,EAAQuF,GAC3BhD,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMwqG,EAAY,EAAI,IAC5DvjG,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAM,IAEhD,EAAKuK,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGpBsjG,GAAclpG,KAAKqC,cACnBrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,GAEf,EA9CA,CAA8C,EAAAsG,cAAjC,EAAAsyF,4B,8ZCLb,YAGA,QAEA,QACA,SAEA,QAEA,2B,+CA8GA,OA9G8C,OAC1C,YAAA14F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAUiW,KAAKr7C,MAAMjD,GAC3B,GAAe,MAAXqoC,GAAoC,MAAjBA,EAAQuD,MAE3B,OADA7oC,EAAOuG,SAAU,EACVvG,EAGX,IAAMq+F,EAAa,IAAI1yF,IACvB25B,EAAQjiC,QAAQhD,SAAQ,SAAC/E,GACrB+iG,EAAWxyF,IAAIvQ,EAAMiB,GAAIjB,EAAMoI,SAEnC,IAAM46F,EAAkB,IAAI3yF,IA+F5B,OA9FA0yF,EAAWh+F,SAAQ,SAAC6R,EAAK3W,GACrB+iG,EAAgBzyF,IAAItQ,EAAKyE,EAAOqD,QAAQtI,QACxC,IAAMwI,EAAI,IAAI,EAAAoC,WACdpC,EAAEG,KAAOwO,EACTlS,EAAOqD,QAAQjG,KAAKmG,MAGxB+hC,EAAQuD,MAAMxoC,SAAQ,SAAC/E,GACnB,IAAMiH,EAAS,EAAK8B,kBAQpB,GAPA9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMoI,KAAM,MACjDnB,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMyqG,WAExB,MAAhBzqG,EAAMw4C,QAAkBwqD,EAAgB1qE,IAAIt4B,EAAMw4C,SAClD9zC,EAAOiD,oBAAoB7F,KAAK,CAAC4C,EAAO4F,QAAQ7K,OAAQujG,EAAgBljG,IAAIE,EAAMw4C,UAG7D,MAArBx4C,EAAM0qG,YAAV,CAaA,IAAK,IAAMjqG,KATN,EAAK4E,mBAAmBrF,EAAM0qG,YAAYxhG,SAC3CjC,EAAOiC,MAAQlJ,EAAM0qG,YAAYxhG,MAAMxC,MAAM,UAAUlC,KAAK,MAAMkC,MAAM,OAAOlC,KAAK,OAGrE,eAAfxE,EAAMsJ,OACNrC,EAAOM,KAAO,IAAI,EAAA2N,SAClBjO,EAAOqC,KAAO,EAAAC,WAAW2P,MAGNlZ,EAAM0qG,YACzB,GAAK1qG,EAAM0qG,YAAYpqG,eAAeG,GAAtC,CAGA,IAAMkqG,EAAS3qG,EAAM0qG,YAAYjqG,GAC3BmW,EAAgB,MAAV+zF,EAAiBA,EAAO18F,WAAa,KACjD,IAAI,EAAK5I,mBAAmBuR,IAAqB,UAAbnW,GAAqC,8BAAbA,EAI5D,GAAiB,kBAAbA,EAAJ,CAOA,GAAIwG,EAAOqC,OAAS,EAAAC,WAAW2P,KAAM,CACjC,GAAiB,eAAbzY,EAA2B,CAC3BwG,EAAOM,KAAKuN,OAAS8B,EACrB3P,EAAOM,KAAKsN,MAAQ,EAAKlO,aAAaiQ,GACtC,SACG,GAAiB,eAAbnW,EAA2B,CAClCwG,EAAOM,KAAKgN,eAAiBqC,EAC7B,SACG,GAAiB,kBAAbnW,EAA8B,CACrCwG,EAAOM,KAAKiN,KAAOoC,EACnB,SACG,GAAiB,YAAbnW,EAAwB,CAC/B,IACI,IAAMmqG,EAAU,IAAIx7E,KAAKxY,GACzB3P,EAAOM,KAAKE,QAAUmjG,EAAQn6E,cAAcxiB,WAC5ChH,EAAOM,KAAKC,UAAYojG,EAAQl6E,WAAa,GAAGziB,WAClD,UACF,SACG,GAAiB,aAAbxN,EACP,aAED,CACH,IAAkB,aAAbA,GAAwC,UAAbA,IAC5B,EAAK4E,mBAAmB4B,EAAOmC,MAAMoB,UAAW,CAChDvD,EAAOmC,MAAMoB,SAAWoM,EACxB,SACG,GAAiB,aAAbnW,EAAyB,CAChCwG,EAAOmC,MAAMqB,SAAWmM,EACxB,SACG,GAAiB,SAAbnW,EAAqB,CAC5BwG,EAAOmC,MAAMic,KAAOzO,EACpB,SACG,IAA0B,MAArB3P,EAAOmC,MAAMsB,MAA6C,IAA7BzD,EAAOmC,MAAMsB,KAAKjL,SACvD,EAAKsE,cAAc+B,QAAQrF,IAAa,EAAG,CAC3CwG,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAaqR,GACtC,UAIR,EAAKlN,WAAWzC,EAAQxG,EAAUmW,QA7C9B+zF,EAAO5lG,SAAQ,SAAC8lG,GACZ,EAAKnhG,WAAWzC,EAAQ4jG,EAAGziG,KAAMyiG,EAAG7qG,UA+ChD,EAAKuK,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGxBvC,EAAOuG,SAAU,EACVvG,GAEf,EA9GA,CAA8C,EAAAsG,cAAjC,EAAAiyF,4B,8ZCVb,YAGA,QAEA,2B,+CAmDA,OAnD+C,OAC3C,YAAAr4F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACbjH,EAAM5C,KAAK2C,SAASrC,GAC1B,GAAW,MAAPsC,EAEA,OADAS,EAAOuG,SAAU,EACVvG,EAGX,IAAMomG,EAAU7mG,EAAI2E,iBAAiB,4BAwCrC,OAvCAF,MAAMC,KAAKmiG,GAAS/lG,SAAQ,SAACgmG,GACzB,IAAM79D,EAAW,EAAK7kC,yBAAyB0iG,EAAQ,YACjDC,EAA2B,MAAZ99D,GAAqB,EAAK7nC,mBAAmB6nC,EAAShoB,cAC9C,YAAzBgoB,EAAShoB,YAAmD,KAAvBgoB,EAAShoB,YAClD,EAAKlb,cAActF,EAAQsmG,GAE3B,IAAMC,EAAc,EAAK5iG,yBAAyB0iG,EAAQ,gBACpDjlF,EAAS,EAAKzd,yBAAyB0iG,EAAQ,WAC/CtgG,EAAW,EAAKpC,yBAAyB0iG,EAAQ,YACjD9kG,EAAM,EAAKoC,yBAAyB0iG,EAAQ,OAC5C7hG,EAAQ,EAAKb,yBAAyB0iG,EAAQ,SAC9C9jG,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAsB,MAAf6iG,EAAsB,EAAKzkG,kBAAkBykG,EAAY/lF,YAAa,MAAQ,KAC5Fje,EAAOiC,MAAiB,MAATA,EAAgB,EAAK1C,kBAAkB0C,EAAMgc,aAAe,GAC3Eje,EAAOmC,MAAMoB,SAAqB,MAAVsb,EAAiB,EAAKtf,kBAAkBsf,EAAOZ,aAAe,KACtFje,EAAOmC,MAAMqB,SAAuB,MAAZA,EAAmB,EAAKjE,kBAAkBiE,EAASya,aAAe,KAC1Fje,EAAOmC,MAAMsB,KAAc,MAAPzE,EAAc,EAAKV,aAAaU,EAAIif,aAAe,KAGvE,IADA,IAAM++E,EAAuB,GACpB1kG,EAAI,EAAGA,GAAK,GAAIA,IACrB0kG,EAAWniG,KAAK,aAAevC,GAGnC,EAAKkJ,4BAA4BsiG,EAAQ9G,EAAWz/F,KAAK,MAAMO,SAAQ,SAACm/F,GAChE,EAAK7+F,mBAAmB6+F,EAAKh/E,cAAqC,SAArBg/E,EAAKh/E,aAGtD,EAAKxb,WAAWzC,EAAQi9F,EAAKgH,QAAShH,EAAKh/E,gBAG/C,EAAKzb,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGpB5F,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,GAEf,EAnDA,CAA+C,EAAAsG,cAAlC,EAAAsxF,6B,8ZCLb,YAGA,QAEA,2B,+CAwDA,OAxD6C,OACzC,YAAA13F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACbjH,EAAM5C,KAAK2C,SAASrC,GAC1B,GAAW,MAAPsC,EAEA,OADAS,EAAOuG,SAAU,EACVvG,EAGX,IAAMymG,EAAelnG,EAAIG,cAAc,gBACvC,GAAoB,MAAhB+mG,EAGA,OAFAzmG,EAAOitC,aAAe,+BACtBjtC,EAAOuG,SAAU,EACVvG,EAGX,IAAM0mG,EAAiBD,EAAaE,aAAa,aAC3CC,EAAUrnG,EAAI2E,iBAAiB,wBAqCrC,OApCAF,MAAMC,KAAK2iG,GAASvmG,SAAQ,SAACi7F,GACzB,IAAMr3C,EAAQ,EAAKtgD,yBAAyB23F,EAAO,SAC7CuL,EAAqB,MAAT5iD,GAAkB,EAAKtjD,mBAAmBsjD,EAAMzjC,aACrB,KAAzCyjC,EAAMzjC,YAAYxe,MAAM,KAAKlC,KAAK,KACtC,EAAKwF,cAActF,EAAQ6mG,GAE3B,IAAMpoG,EAAQ,EAAKkF,yBAAyB23F,EAAO,SAC7Cx1F,EAAW,EAAKnC,yBAAyB23F,EAAO,YAChD9+E,EAAQ,EAAK7Y,yBAAyB23F,EAAO,SAC7Cv1F,EAAW,EAAKpC,yBAAyB23F,EAAO,YAChD/5F,EAAM,EAAKoC,yBAAyB23F,EAAO,OAC3C92F,EAAQ,EAAKb,yBAAyB23F,EAAO,SAC7C/4F,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAgB,MAATjF,EAAgB,EAAKqD,kBAAkBrD,EAAM+hB,YAAa,MAAQ,KAChFje,EAAOiC,MAAiB,MAATA,EACX,EAAK1C,kBAAkB0C,EAAMgc,YAAa,IAAIxe,MAAM0kG,GAAgB5mG,KAAK,MAAQ,KACrFyC,EAAOmC,MAAMoB,SAAuB,MAAZA,EAAmB,EAAKhE,kBAAkBgE,EAAS0a,aAAe,KAC1Fje,EAAOmC,MAAMqB,SAAuB,MAAZA,EAAmB,EAAKjE,kBAAkBiE,EAASya,aAAe,KAC1Fje,EAAOmC,MAAMsB,KAAc,MAAPzE,EAAc,EAAKV,aAAaU,EAAIif,aAAe,KAEnE,EAAK7f,mBAAmB4B,EAAOmC,MAAMoB,WAAsB,MAAT0W,EAClDja,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkB0a,EAAMgE,aACrC,MAAThE,GAAkB,EAAK7b,mBAAmB6b,EAAMgE,eACvDje,EAAOiC,MAAQ,EAAK7D,mBAAmB4B,EAAOiC,OAAS,UAAYgY,EAAMgE,YAClEje,EAAOiC,MAAPjC,YAAkCia,EAAMgE,aAGnD,EAAKzb,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGpB5F,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,GAEf,EAxDA,CAA6C,EAAAsG,cAAhC,EAAAyxF,2B,8ZCLb,YAGA,QAEA,2B,+CAyCA,OAzC+C,OAC3C,YAAA73F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,KAAIA,EAAMP,OAAS,GAAnB,CAGIO,EAAMP,OAAS,GACf,EAAKuK,cAActF,EAAQ1E,EAAM,IAErC,IAAMiH,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM,GAAI,MAC3CA,EAAMP,OAAS,IACfwH,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAM,GAAI,IAAI0G,MAAM,KAAKlC,KAAK,OAEpExE,EAAMP,OAAS,IACfwH,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAM,KAErDA,EAAMP,OAAS,IACfwH,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAM,KAErDA,EAAMP,OAAS,IACfwH,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAM,KAEhD,EAAKyJ,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGpB5F,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,IAEf,EAzCA,CAA+C,EAAAsG,cAAlC,EAAA8yF,6B,8ZCLb,YAGA,QAEA,QAEA,QAEA,2B,+CA+DA,OA/D0C,OACtC,YAAAl5F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,GAAoB,SAAhBA,EAAMwrG,MAAV,CAGA,IAAMvkG,EAAS,EAAK8B,kBAGpB,GAFA9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMoI,MAC3CnB,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMkJ,OACzB,cAAflJ,EAAMsJ,KACNrC,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMq/F,SAC5Cp4F,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMyK,UACrDxD,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMwK,eAClD,GAAmB,mBAAfxK,EAAMsJ,KAA2B,CACxCrC,EAAOqC,KAAO,EAAAC,WAAW2P,KACzBjS,EAAOM,KAAO,IAAI,EAAA2N,SAClBjO,EAAOM,KAAKgN,eAAiB,EAAK/N,kBAAkBxG,EAAMyrG,YAC1DxkG,EAAOM,KAAKuN,OAAS,EAAKtO,kBAAkBxG,EAAM8U,QAClD7N,EAAOM,KAAKsN,MAAQ,EAAKlO,aAAaM,EAAOM,KAAKuN,QAClD7N,EAAOM,KAAKiN,KAAO,EAAKhO,kBAAkBxG,EAAM0rG,cAEhD,IACI,IAAMlkG,EAAW,EAAKhB,kBAAkBxG,EAAM2rG,aAC9C,GAAgB,MAAZnkG,EAAkB,CAClB,IAAMokG,EAAiBp+F,SAAShG,EAAU,MACpB,MAAlBokG,GAA0BA,GAAkB,GAAKA,GAAkB,KACnE3kG,EAAOM,KAAKC,SAAWokG,EAAe39F,aAGhD,UACF,IACI,IAAMxG,EAAU,EAAKjB,kBAAkBxG,EAAM6rG,YAC7C,GAAe,MAAXpkG,EAAiB,CACjB,IAAMqkG,EAAgBt+F,SAAS/F,EAAS,MACnB,MAAjBqkG,IACA7kG,EAAOM,KAAKE,QAAUqkG,EAAc79F,aAG9C,UAEF,IAAMmmE,EAAM,EAAK5tE,kBAAkBxG,EAAMo0E,KAC9B,MAAPA,GACA,EAAK1qE,WAAWzC,EAAQ,MAAOmtE,GAEnC,IAAMuyB,EAAM,EAAKngG,kBAAkBxG,EAAM+nG,SAC9B,MAAPpB,GACA,EAAKj9F,WAAWzC,EAAQ,WAAY0/F,GAG5C,EAAKl9F,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EA/DA,CAA0C,EAAAsG,cAA7B,EAAA6yF,wB,8ZCTb,YAGA,QAEA,2B,+CAyDA,OAzDyC,OACrC,YAAAj5F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,GAAe,MAAXqoC,EAEA,OADAtlC,EAAOuG,SAAU,EACVvG,EAGX,IAAInF,EAAI,EA8CR,OA7CAyqC,EAAQjlC,SAAQ,SAAC/E,GACb,IAAMw4C,GAAU,EAAKnzC,mBAAmBrF,EAAM05E,SAAW15E,EAAM05E,OAAOrzE,WAAW,KAC7ErG,EAAM05E,OAAOpzE,QAAQ,IAAK,IAAMtG,EAAM05E,OACpCzvE,EAAc,EAAK5E,mBAAmBmzC,GAAmB,KAATA,EACtD,EAAKxuC,cAActF,EAAQuF,GAE3B,IAAMhD,EAAS,EAAK8B,kBAOpB,GANA9B,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMugG,MAC5Ct5F,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM+rG,KAAM,MACjD9kG,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMwJ,OACrDvC,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMgsG,KACrD/kG,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMsnG,MAEvC,EAAKjiG,mBAAmBrF,EAAMisG,WAAY,CAC3C,IAAI9iG,EAAmB,CAACnJ,EAAMisG,WACF,MAAxBjsG,EAAMmqG,gBAA0BnqG,EAAMmqG,eAAe1qG,OAAS,IAC9D0J,EAASA,EAAOnH,OAAOhC,EAAMmqG,iBAEjChhG,EAAOpE,SAAQ,SAAC+E,GACZ,IAAM3C,EAAQ2C,EAAMpD,MAAM,KAC1B,KAAIS,EAAM1H,OAAS,GAAnB,CAGA,IAAMQ,EAAmB,cAAbkH,EAAM,GAAqB,KAAOA,EAAM,GAC9CyP,EAAuB,IAAjBzP,EAAM1H,QAA6B,QAAb0H,EAAM,GAAeA,EAAM,GAAKA,EAAM,GACxE,EAAKuC,WAAWzC,EAAQhH,EAAK2W,OAIrC,EAAKrM,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GAEf1H,IAAMyqC,EAAQvqC,QAA0B,OAAhBwH,EAAOmB,MAAiB,EAAK/C,mBAAmB4B,EAAOmC,MAAMqB,YAIzF/F,EAAO4F,QAAQxI,KAAKmF,GACpB1H,QAGA8B,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,GAEf,EAzDA,CAAyC,EAAAsG,cAA5B,EAAA+xF,uB,8ZCLb,YAGA,QAEA,SACA,QAEA,QACA,SAEA,2B,+CAyFA,OAzF4C,OACxC,YAAAn4F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACbjH,EAAM5C,KAAK2C,SAASrC,GAC1B,GAAW,MAAPsC,EAEA,OADAS,EAAOuG,SAAU,EACVvG,EAIX,GAAU,MADCT,EAAIG,cAAc,YAIzB,OAFAM,EAAOitC,aAAe,2BACtBjtC,EAAOuG,SAAU,EACVvG,EAGX,IAAMq+F,EAAa,IAAI1yF,IAuEvB,OArEA3H,MAAMC,KAAK1E,EAAI2E,iBAAiB,qBAAqB7D,SAAQ,SAACmnG,GAC1D,IAAM9jG,EAAO8jG,EAAQb,aAAa,QAC5BpqG,EAAKirG,EAAQb,aAAa,MAChC,IAAK,EAAKhmG,mBAAmB+C,KAAU,EAAK/C,mBAAmBpE,GAAK,CAChE8hG,EAAWxyF,IAAItP,EAAIyD,EAAOqD,QAAQtI,QAClC,IAAM+4C,EAAS,IAAI,EAAAnuC,WACnBmuC,EAAOpwC,KAAOA,EACd1D,EAAOqD,QAAQjG,KAAK02C,OAI5B9vC,MAAMC,KAAK1E,EAAI2E,iBAAiB,oBAAoB7D,SAAQ,SAAConG,GACzD,GAAwC,SAApCA,EAAOd,aAAa,YAAxB,CAIA,IAAMe,EAAY,EAAK/jG,yBAAyB8jG,EAAQ,YACxD,GAAiB,MAAbC,EAAmB,CACnB,IAAMC,EAAUD,EAAUlnF,aACrB,EAAK7f,mBAAmBgnG,IAAYtJ,EAAWzqE,IAAI+zE,IACpD3nG,EAAOiD,oBAAoB7F,KAAK,CAAC4C,EAAO4F,QAAQ7K,OAAQsjG,EAAWjjG,IAAIusG,KAI/E,IAAMplG,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkB2lG,EAAOd,aAAa,SAAU,MAGlD,SADAc,EAAOd,aAAa,SAEjCpkG,EAAOqC,KAAO,EAAAC,WAAWoB,WACzB1D,EAAO2D,WAAa,IAAI,EAAAC,eACxB5D,EAAO2D,WAAWtB,KAAO,EAAAwB,eAAeC,SAExCrC,MAAMC,KAAK,EAAKF,4BAA4B0jG,EAAQ,UAAUpnG,SAAQ,SAACunG,GACnE,IAAM3nF,EAAO2nF,EAAQpnF,YACrB,IAAI,EAAK7f,mBAAmBsf,GAA5B,CAGA,IAAMvc,EAAOkkG,EAAQjB,aAAa,QAC5Bhe,EAAY,EAAK7mF,kBAAkB8lG,EAAQjB,aAAa,QAAS,IAAIt/F,cACzD,UAAdshF,EACApmF,EAAOmC,MAAMoB,SAAWma,EACH,aAAd0oE,EACPpmF,EAAOmC,MAAMqB,SAAWka,EACH,sBAAd0oE,EACPpmF,EAAOmC,MAAMic,KAAOV,EACC,UAAd0oE,EACPpmF,EAAOiC,OAAUyb,EAAO,KACH,aAAd0oE,GAA0C,YAAdA,EACnCpmF,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAaof,GAEtC,EAAKjb,WAAWzC,EAAQmB,EAAMuc,OAK1Cjc,MAAMC,KAAK,EAAKF,4BAA4B0jG,EAAQ,UAAUpnG,SAAQ,SAACwnG,GACnEtlG,EAAOiC,OAAUqjG,EAAQrnF,YAAc,QAG3C,EAAKzb,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGpB5F,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,GAEf,EAzFA,CAA4C,EAAAsG,cAA/B,EAAA2wF,0B,8ZCXb,YAGA,QAEA,2B,+CAuBA,OAvB0C,OACtC,YAAA/2F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,IAAMiH,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkB,EAAKR,YAAYhG,EAAMiG,KAAM,MAClEgB,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMkJ,OAC5CjC,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMwK,UACrDvD,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMyK,UACrDxD,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMiG,KAC5C,EAAKwD,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EAvBA,CAA0C,EAAAsG,cAA7B,EAAAixF,wB,8ZCLb,YAGA,QAEA,2B,+CAuBA,OAvB2C,OACvC,YAAAr3F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,IAAMiH,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM2lG,OAC3C1+F,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMwsG,SAC5CvlG,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMsnG,KAC5CrgG,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMuvB,UACrDtoB,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMwgG,UACrD,EAAK/2F,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EAvBA,CAA2C,EAAAsG,cAA9B,EAAAgzF,yB,8ZCLb,YAGA,QAGA,2B,+CAkDA,OAlDyC,OACrC,YAAAp5F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,KAAIA,EAAMP,OAAS,GAAnB,CAIA,EAAKuK,cAActF,EAAQ,EAAK8B,kBAAkBxG,EAAMA,EAAMP,OAAS,KACvE,IAAMwH,EAAS,EAAK8B,kBACpB9B,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMA,EAAMP,OAAS,GAAI,IAC/DwH,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM,GAAI,MAE9B,eAAbA,EAAM,IAAoC,YAAbA,EAAM,IAAiC,mBAAbA,EAAM,IAC7DiH,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAM,IACrDiH,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAM,IACrDiH,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAM,IAC5C,EAAKysG,mBAAmBxlG,EAAQ,EAAGjH,IAEnC,EAAKysG,mBAAmBxlG,EAAQ,EAAGjH,GAGvC,EAAKuK,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGpB5F,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,IAGH,YAAA+nG,mBAAR,SAA2BxlG,EAAoBylG,EAAoB1sG,GAE/D,IAAK,IAAIT,EAAImtG,EAAYntG,EAAIS,EAAMP,OAAS,EAAGF,IACvC8B,KAAKgE,mBAAmBrF,EAAMT,MAGlC0H,EAAOiC,OAAUlJ,EAAMT,GAAK,OAGxC,EAlDA,CAAyC,EAAAyL,cAA5B,EAAAmyF,uB,8ZCNb,YAGA,QAEA,2B,+CAyEA,OAzE+C,OAC3C,YAAAv4F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACbjH,EAAM5C,KAAK2C,SAASrC,GAC1B,GAAW,MAAPsC,EAEA,OADAS,EAAOuG,SAAU,EACVvG,EAGX,IAAMioG,EAAa1oG,EAAI2E,iBAAiB,oCAkDxC,OAjDAF,MAAMC,KAAKgkG,GAAY5nG,SAAQ,SAAC6nG,GAC5B,IAAMC,EAAYD,EAAUvB,aAAa,MACzC,IAAI,EAAKhmG,mBAAmBwnG,GAA5B,CAIA,IAAMC,EAAeF,EAAUvB,aAAa,QACtC0B,EAAeH,EAAUvB,aAAa,YACxC2B,EAAoB,KACpBC,EAAmB,KACnBC,EAAoB,KACpBh3E,EAAkB,KAClBq1E,EAAoB,KAElB4B,EAAelpG,EAAIG,cAAc,4EACIyoG,EAAY,MACvD,GAAoB,MAAhBM,EAAsB,CACtB,IAAMC,EAAUD,EAAaE,cAAcA,cAC5B,MAAXD,IACAJ,EAAYI,EAAQ/B,aAAa,QACjC4B,EAAWG,EAAQ/B,aAAa,QAChCn1E,EAAUk3E,EAAQ/B,aAAa,YAC/B6B,EAAYE,EAAQ/B,aAAa,YAC5B,EAAKhmG,mBAAmB6nG,KACzBA,EAAYA,EAAUxmG,MAAM,MAAMlC,KAAK,QAK9C,EAAKa,mBAAmB6wB,KACzBq1E,EAAY,EAAK+B,eAAerpG,EAAKiyB,EAAS,IAC9C,EAAKlsB,cAActF,EAAQ6mG,IAG/B,IAAMtkG,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkBwmG,EAAW,MAChD/lG,EAAOiC,MAAQ,EAAK1C,kBAAkB0mG,GACtCjmG,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBsmG,GAC/C7lG,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBumG,GAC/C9lG,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAa0nG,GACtC,EAAKxjG,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGpB5F,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,GAGX,YAAA4oG,eAAA,SAAerpG,EAAeiyB,EAAiBq1E,GAC3C,IAAM5iD,EAAQ1kD,EAAIG,cAAc,wCAA0C8xB,EAAU,MACpF,OAAa,MAATyyB,EACO4iD,GAENlqG,KAAKgE,mBAAmBkmG,KACzBA,EAAY,IAAMA,GAEtBA,EAAY5iD,EAAM0iD,aAAa,QAAUE,EAClClqG,KAAKisG,eAAerpG,EAAK0kD,EAAM0iD,aAAa,YAAaE,KAExE,EAzEA,CAA+C,EAAAvgG,cAAlC,EAAA4xF,6B,8ZCLb,YAGA,QAEA,QACA,QAEA,QACA,SAEM2Q,EAAqB,CAAC,OAAQ,YAAa,WAAY,WAAY,wBAAyB,gBAC9F,OAAQ,oBAAqB,OAAQ,QAAS,oBAGlD,2B,+CA0DA,OA1DwC,OACpC,YAAA3oG,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,IAAMiH,EAAS,EAAK8B,kBAapB,GAZA9B,EAAOgC,SAAwE,SAA7D,EAAKzC,kBAAkBxG,EAAMiJ,SAAU,IAAI8C,cAC7D9E,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMoI,KAAM,MACjDnB,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMwtG,KAAM,IAClDvmG,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAMoJ,OACrDnC,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAMyK,UACrDxD,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAMiG,KAEzB,UAAfjG,EAAMytG,OACNxmG,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAMmD,MAAO,MAClD8D,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAM6+F,KAAM,KAGnC,OAAf7+F,EAAMytG,MAMN,GALAxmG,EAAOqC,KAAO,EAAAC,WAAW2P,KACzBjS,EAAOM,KAAO,IAAI,EAAA2N,SAClBjO,EAAOM,KAAKgN,eAAiB,EAAK/N,kBAAkBxG,EAAMyrG,YAC1DxkG,EAAOM,KAAKuN,OAAS,EAAKtO,kBAAkBxG,EAAM8U,QAClD7N,EAAOM,KAAKsN,MAAQ,EAAKlO,aAAaM,EAAOM,KAAKuN,SAC7C,EAAKzP,mBAAmBrF,EAAM0tG,YAC/B,IACI,IAAM9C,EAAU,IAAIx7E,KAAKpvB,EAAM0tG,YAC/BzmG,EAAOM,KAAKE,QAAUmjG,EAAQn6E,cAAcxiB,WAC5ChH,EAAOM,KAAKC,UAAYojG,EAAQl6E,WAAa,GAAGziB,WAClD,gBAEH,GAAmB,UAAfjO,EAAMytG,KAOb,IAAK,IAAMhtG,KANXwG,EAAOqC,KAAO,EAAAC,WAAWoB,WACzB1D,EAAO2D,WAAa,IAAI,EAAAC,eACxB5D,EAAO2D,WAAWtB,KAAO,EAAAwB,eAAeC,QACnC,EAAK1F,mBAAmB4B,EAAOiC,SAChCjC,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAM2tG,iBAAkB,KAE3C3tG,EACfA,EAAMM,eAAeG,IAAa8sG,EAAmBznG,QAAQrF,EAASsL,eAAiB,IACtF,EAAK1G,mBAAmBrF,EAAMS,KAC/B,EAAKiJ,WAAWzC,EAAQxG,EAAUT,EAAMS,IAKpD,EAAKgJ,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,MAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EA1DA,CAAwC,EAAAsG,cAA3B,EAAA6xF,sB,8ZCfb,YAGA,QAEA,2B,+CA0BA,OA1BoC,OAChC,YAAAj4F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,GAAqB,IAAjBA,EAAMP,OAAV,CAGA,IAAMwH,EAAS,EAAK8B,kBACpB9B,EAAOmB,KAAO,EAAK5B,kBAAkBxG,EAAM,GAAI,MAC/CiH,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAM,IAC5CiH,EAAOmC,MAAMoB,SAAW,EAAKhE,kBAAkBxG,EAAM,IACrDiH,EAAOmC,MAAMqB,SAAW,EAAKjE,kBAAkBxG,EAAM,IACrDiH,EAAOmC,MAAMsB,KAAO,EAAKnF,aAAavF,EAAM,IAC5C,EAAKyJ,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGxBvC,EAAOuG,SAAU,EACVvG,IAEf,EA1BA,CAAoC,EAAAsG,cAAvB,EAAAgxF,kB,8ZCLb,YAGA,QAGA,2B,+CA6DA,OA7D0C,OACtC,YAAAp3F,MAAA,SAAMjD,GAAN,WACU+C,EAAS,IAAI,EAAAwG,aACb8+B,EAAU3oC,KAAKgD,SAAS1C,GAAM,GACpC,OAAe,MAAXqoC,GACAtlC,EAAOuG,SAAU,EACVvG,IAGXslC,EAAQjlC,SAAQ,SAAC/E,GACb,IAAI,EAAKqF,mBAAmBrF,EAAM,oBAAqB,EAAKqF,mBAAmBrF,EAAM,gBAArF,CAGA,EAAKgK,cAActF,EAAQ,EAAK8B,kBAAkBxG,EAAM4tG,cACxD,IAAM3mG,EAAS,EAAK8B,kBACpB9B,EAAOgC,SAA2D,MAAhD,EAAKzC,kBAAkBxG,EAAMqgG,SAAU,KACzDp5F,EAAOiC,MAAQ,EAAK1C,kBAAkBxG,EAAMqiG,OAC5Cp7F,EAAOmB,KAAO,EAAK5B,kBACfxG,EAAM,iBAAkB,EAAKwG,kBAAkBxG,EAAM,eAAgB,OACzEiH,EAAOmC,MAAMsB,KAAO,EAAKnF,aACrB,EAAKiB,kBAAkBxG,EAAM,gBAAiB,EAAKwG,kBAAkBxG,EAAM,iBAC/E,EAAK6tG,UAAU5mG,EAAQjH,EAAM8tG,YAC7B,EAAKD,UAAU5mG,EAAQjH,EAAM+tG,YAC7B,EAAKxjG,sBAAsBtD,GAC3B,EAAKwC,cAAcxC,GACnBvC,EAAO4F,QAAQxI,KAAKmF,OAGpB5F,KAAKqC,cACLrC,KAAKqG,yBAAyBhD,GAGlCA,EAAOuG,SAAU,EACVvG,IAGH,YAAAmpG,UAAR,SAAkB5mG,EAAoBtF,GAAtC,WACQN,KAAKgE,mBAAmB1D,IAGVN,KAAKkD,aAAa5C,GAC1BoD,SAAQ,SAACijG,GACf,IAAMtI,EAAgBsI,EAAKliG,QAAQ,KACnC,KAAI45F,EAAgB,GAApB,CAGA,IAAM51F,EAAQk+F,EAAKjiG,UAAU,EAAG25F,GAC1B1/F,EAAQgoG,EAAKvoG,OAASigG,EAAgBsI,EAAKjiG,UAAU25F,EAAgB,GAAK,KAChF,IAAI,EAAKr6F,mBAAmByE,KAAU,EAAKzE,mBAAmBrF,IAAoB,eAAV8J,EAAxE,CAGA,IAAM20F,EAAa30F,EAAMiC,cACI,MAAzB9E,EAAOmC,MAAMoB,UAAoB,EAAK3G,mBAAmBiC,QAAQ24F,IAAe,EAChFx3F,EAAOmC,MAAMoB,SAAWxK,EACQ,MAAzBiH,EAAOmC,MAAMqB,UAAoB,EAAK7G,mBAAmBkC,QAAQ24F,IAAe,EACvFx3F,EAAOmC,MAAMqB,SAAWzK,EAExB,EAAK0J,WAAWzC,EAAQ6C,EAAO9J,SAI/C,EA7DA,CAA0C,EAAAgL,cAA7B,EAAAkyF,wB,g7CCNb,YACA,UAEA,SAUA,UAMA,aAQI,WAAoB3xE,EAAkCE,EAC1C4L,EAAoC9c,EACpC02B,EAAkD2vB,GAF1C,KAAAr1C,cAAkC,KAAAE,cAC1C,KAAA4L,eAAoC,KAAA9c,aACpC,KAAA02B,sBAAkD,KAAA2vB,iBAPtD,KAAAotC,WAAY,EACZ,KAAA3hG,QAAS,EACT,KAAA4hG,UAAW,EACX,KAAAC,eAAsB,KAkLlC,OA5KU,YAAA9hG,KAAN,SAAWuM,G,qGAWP,OAVAtX,KAAKgL,QAAS,EACdhL,KAAK4E,IAAM,sCACgC,MAAvC0S,EAAmB2gE,iBACnBj4E,KAAK4E,IAAM0S,EAAmB2gE,iBACO,MAA9B3gE,EAAmBG,UAC1BzX,KAAK4E,IAAM0S,EAAmBG,QAAU,kBAK3B,cAAbzX,KAAK4E,IACL,IAG0B,MAA1B5E,KAAK8sG,kBAAL,OACA9sG,KAAK8sG,kBAAkBC,IAAI,kBAC3B/sG,KAAK8sG,kBAAkBC,IAAI,aAC3B,GAAM/sG,KAAK8sG,kBAAkBlmB,S,OAA7B,SACA5mF,KAAK2sG,WAAY,EACjB3sG,KAAK8sG,kBAAoB,K,iBAsBzB,OAnBJ9sG,KAAK8sG,mBAAoB,IAAIE,EAAQC,sBAChCC,QAAQltG,KAAK4E,IAAM,OAAQ,CACxBuoG,mBAAoB,WAAM,SAAKj0F,WAAWssD,wBAC1C4nC,iBAAiB,EACjBC,UAAWL,EAAQM,kBAAkBC,aAExCC,gBAAgB,IAAIC,EAAeC,wBAEnC/pB,QAEL3jF,KAAK8sG,kBAAkBp2F,GAAG,kBACtB,SAACpW,GAAc,SAAKqtG,oBAAoB,IAAI,EAAAC,qBAAqBttG,OACrEN,KAAK8sG,kBAAkBp2F,GAAG,aACtB,SAACpW,OACLN,KAAK8sG,kBAAkBe,SAAQ,WAC3B,EAAKlB,WAAY,EACjB,EAAKmB,WAAU,MAEnB9tG,KAAKgL,QAAS,EACV,GAAMhL,KAAK+tG,uB,cAAX,SACA,GAAM/tG,KAAK8tG,WAAU,IADrB,M,OACA,S,mCAIF,YAAAr/C,iBAAN,SAAuBu/C,G,YAAA,IAAAA,OAAA,G,yFACnB,IAAKhuG,KAAKgL,OACN,U,iBAGI,O,sBAAA,GAAMhL,KAAK+tG,uB,cAAX,SACA,GAAM/tG,KAAK8tG,UAAUE,IADrB,M,cACA,S,aAEA,SAAMhuG,KAAK8sG,kBAAkBlmB,Q,OAA7B,S,sDAIJhjF,QAAQgZ,MAAM,EAAEhQ,Y,+BAIlB,YAAAkjD,sBAAN,W,iGACI9vD,KAAK4sG,UAAW,GACZ5sG,KAAKgL,QAAWhL,KAAK2sG,UAArB,MACA,GAAM3sG,KAAK8tG,WAAU,I,OAArB,S,mCAIF,YAAAj+C,yBAAN,W,iGACI7vD,KAAK4sG,UAAW,EACZ5sG,KAAKgL,QAAUhL,KAAK2sG,UACpB,GAAM3sG,KAAK8sG,kBAAkBlmB,QAD7B,M,OACA,S,mCAIM,YAAA+mB,oBAAd,SAAkC1uB,G,sGAChB,SAAMj/E,KAAKg2B,aAAakC,Y,OACtC,OADMC,EAAQ,SACM,MAAhB8mD,GAAwBA,EAAagvB,YAAc91E,EACnD,IAGoB,GAAMn4B,KAAKkqB,YAAY4lB,mB,OAE9B,OAFXA,EAAkB,SAClBo+D,EAAgBjvB,EAAajiE,QAAQyH,QAAUw6D,EAAajiE,QAAQmxF,OACzD,GAAMnuG,KAAKkqB,YAAYmP,a,OACxC,GADM+0E,EAAW,SACbt+D,GAAoC,MAAjBo+D,GAAyBA,IAAkBE,EAC9D,U,OAGInvB,EAAah3E,M,KACZ,EAAA87E,iBAAiBsqB,iB,KACjB,EAAAtqB,iBAAiBuqB,iBAAjB,Y,KAIA,EAAAvqB,iBAAiBwqB,iB,KACjB,EAAAxqB,iBAAiByqB,gBAAjB,Y,KAGA,EAAAzqB,iBAAiB0qB,iB,KACjB,EAAA1qB,iBAAiB2qB,iBAAjB,Y,KAIA,EAAA3qB,iBAAiB4qB,iBAAjB,a,KAGA,EAAA5qB,iBAAiB6qB,U,KACjB,EAAA7qB,iBAAiB8qB,Y,KACjB,EAAA9qB,iBAAiB+qB,aAAjB,a,KAKA,EAAA/qB,iBAAiBgrB,YAAjB,a,KAQA,EAAAhrB,iBAAiBirB,OAAjB,a,oBA9BD,SAAMhvG,KAAKoqB,YAAYk1D,iBAAiBL,EAAajiE,QACjDiiE,EAAah3E,OAAS,EAAA87E,iBAAiBuqB,mB,OAC3C,OAFA,SAEA,O,OAGA,SAAMtuG,KAAKoqB,YAAYu1D,iBAAiBV,EAAajiE,U,OACrD,OADA,SACA,O,OAGA,SAAMhd,KAAKoqB,YAAY40D,iBAAiBC,EAAajiE,QACjDiiE,EAAah3E,OAAS,EAAA87E,iBAAiB2qB,mB,OAC3C,OAFA,SAEA,O,QAEA,SAAM1uG,KAAKoqB,YAAYi1D,iBAAiBJ,EAAajiE,U,QACrD,OADA,SACA,O,eAII8yB,EACA,GAAM9vC,KAAKoqB,YAAYY,UAAS,IADhC,O,QACA,S,mBAEJ,a,eAEI8kB,EACA,GAAM9vC,KAAKkZ,WAAWguB,wBADtB,O,QAEA,OADA,SACA,GAAMlnC,KAAKoqB,YAAYY,UAAS,I,QAEhC,OAFA,SAEA,GAAMhrB,KAAK8sG,kBAAkBlmB,Q,QAA7B,S,mBAEJ,a,QAKA,OAHI92C,GACA9vC,KAAKu/D,iBAET,O,QAEA,a,0BAIE,YAAAuuC,UAAd,SAAwBE,G,qGAKpB,OAJ2B,MAAvBhuG,KAAK6sG,iBACLx9C,aAAarvD,KAAK6sG,gBAClB7sG,KAAK6sG,eAAiB,MAEtB7sG,KAAK2sG,YAAc3sG,KAAKgL,QAAUhL,KAAK4sG,SACvC,IAEsB,GAAM5sG,KAAK+tG,uB,OACrC,IAD0B,SAEtB,U,iBAIA,O,sBAAA,GAAM/tG,KAAK8sG,kBAAkBt9E,S,cAA7B,SACAxvB,KAAK2sG,WAAY,EACbqB,EACA,GAAMhuG,KAAKoqB,YAAYY,UAAS,IADhC,M,OACA,S,wEAIHhrB,KAAK2sG,YACN3sG,KAAK6sG,eAAiBnxF,YAAW,WAAM,SAAKoyF,UAAUE,KAAOhuG,KAAKiO,OAAO,KAAQ,O,YAI3E,YAAA8/F,oBAAd,W,0FACQ,SAAM/tG,KAAKkqB,YAAY4lB,mB,cAAvB,SACe,GAAM9vC,KAAK4vC,oBAAoBwzC,YAD9C,M,OAEA,MAAO,CAAP,GADe,U,OAGnB,MAAO,CAAP,GAAO,WAGH,YAAAn1E,OAAR,SAAe0mE,EAAavd,GAGxB,OAFAud,EAAM3mE,KAAK+mE,KAAKJ,GAChBvd,EAAMppD,KAAKunB,MAAM6hC,GACVppD,KAAKunB,MAAMvnB,KAAKC,UAAYmpD,EAAMud,EAAM,IAAMA,GAE7D,EAxLA,GAAa,EAAAloC,wB,maCnBb,YAEA,SAEA,cAKI,WAAYhrC,GAAZ,MACI,YAAMA,IAAS,KACf,EAAKwsG,UAAY,EAAK9jG,oBAAoB,aAC1C,EAAKlC,KAAO,EAAKkC,oBAAoB,QAErC,IAAM6S,EAAU,EAAK7S,oBAAoB,WACzC,OAAQ,EAAKlC,MACT,KAAK,EAAA87E,iBAAiBsqB,iBACtB,KAAK,EAAAtqB,iBAAiBwqB,iBACtB,KAAK,EAAAxqB,iBAAiBuqB,iBACtB,KAAK,EAAAvqB,iBAAiByqB,gBAClB,EAAKxxF,QAAU,IAAIiyF,EAAuBjyF,GAC1C,MACJ,KAAK,EAAA+mE,iBAAiB0qB,iBACtB,KAAK,EAAA1qB,iBAAiB4qB,iBACtB,KAAK,EAAA5qB,iBAAiB2qB,iBAClB,EAAK1xF,QAAU,IAAIkyF,EAAuBlyF,GAC1C,MACJ,KAAK,EAAA+mE,iBAAiB6qB,UACtB,KAAK,EAAA7qB,iBAAiB8qB,YACtB,KAAK,EAAA9qB,iBAAiBgrB,YACtB,KAAK,EAAAhrB,iBAAiB+qB,aACtB,KAAK,EAAA/qB,iBAAiBirB,OAClB,EAAKhyF,QAAU,IAAImyF,EAAiBnyF,G,SAMpD,OAlC0C,OAkC1C,EAlCA,CAA0C,EAAApS,cAA7B,EAAAgjG,uBAoCb,kBAOI,WAAYnsG,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK7B,GAAK,EAAKuK,oBAAoB,MACnC,EAAKsa,OAAS,EAAKta,oBAAoB,UACvC,EAAKmU,eAAiB,EAAKnU,oBAAoB,kBAC/C,EAAK4U,cAAgB,EAAK5U,oBAAoB,iBAC9C,EAAKiU,aAAe,IAAI2P,KAAK,EAAK5jB,oBAAoB,iB,EAE9D,OAf4C,OAe5C,EAfA,CAA4C,EAAAS,cAA/B,EAAAqkG,yBAiBb,kBAKI,WAAYxtG,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK7B,GAAK,EAAKuK,oBAAoB,MACnC,EAAKsa,OAAS,EAAKta,oBAAoB,UACvC,EAAKiU,aAAe,IAAI2P,KAAK,EAAK5jB,oBAAoB,iB,EAE9D,OAX4C,OAW5C,EAXA,CAA4C,EAAAS,cAA/B,EAAAskG,yBAab,kBAII,WAAYztG,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKgjB,OAAS,EAAKta,oBAAoB,UACvC,EAAK8qB,KAAO,IAAIlH,KAAK,EAAK5jB,oBAAoB,S,EAEtD,OATsC,OAStC,EATA,CAAsC,EAAAS,cAAzB,EAAAukG,oB,g7CChEb,cACA,SAEA,SAEMxmC,EACc,YAGpB,aAGI,WAAoBz+C,EAAkCgQ,GAAlC,KAAAhQ,cAAkC,KAAAgQ,iBA0H1D,OAvHI,YAAA8uC,WAAA,WACIhpE,KAAKovG,YAAc,MAGjB,YAAA7uE,OAAN,SAAat4B,G,6GACe,MAApBjI,KAAKovG,YAAL,MACe,GAAMpvG,KAAKkqB,YAAYmP,a,OACrB,OADX5U,EAAS,SACE,GAAMzkB,KAAKk6B,eAAez7B,IACvCkqE,EAAsBlkD,I,OAE1B,IAAW7kB,KAHL6gC,EAAW,SAEXh/B,EAAqB,GACVg/B,EACTA,EAASxhC,eAAeW,IACxB6B,EAAShB,KAAK,IAAI,EAAA4uC,OAAO5O,EAAS7gC,KAG1CI,KAAKovG,YAAc3tG,E,iBAEvB,OAAY,MAARwG,EACO,CAAP,EAAOjI,KAAKovG,YAAY5nG,QAAO,SAAC0N,GAAM,OAAAA,EAAEjN,OAASA,MAE1C,CAAP,EAAOjI,KAAKovG,qBAId,YAAAnqG,QAAN,SAAcw7B,G,gGACK,SAAMzgC,KAAKkqB,YAAYmP,a,OACtC,OADM5U,EAAS,SACf,GAAMzkB,KAAKk6B,eAAeqT,KAAKo7B,EAAsBlkD,EAAQgc,I,cAA7D,SACAzgC,KAAKovG,YAAc,K,YAGjB,YAAAl4F,MAAN,SAAYuN,G,0FACR,SAAMzkB,KAAKk6B,eAAe6S,OAAO47B,EAAsBlkD,I,cAAvD,SACAzkB,KAAKovG,YAAc,K,YAGjB,YAAA9/D,+BAAN,SAAqC7O,G,uGAC7Bg7C,EAA+C,KAEnC,MAAZh7C,EAAA,MACW,GAAMzgC,KAAKugC,OAAO,EAAAzU,WAAWk+B,iB,cAAxCvpB,EAAW,S,aAEXA,EAAWA,EAASj5B,QAAO,SAAC0N,GAAM,OAAAA,EAAEjN,OAAS,EAAA6jB,WAAWk+B,kB,iBAG5D,OAAgB,MAAZvpB,GAAwC,IAApBA,EAASriC,QAIjCqiC,EAAS/8B,SAAQ,SAACs4E,GACTA,EAAc/vD,SAAiC,MAAtB+vD,EAAc17E,OAIrB,MAAnBm7E,IACAA,EAAkB,IAAI,EAAA4zB,6BAGc,MAApCrzB,EAAc17E,KAAKsuC,eAChBotC,EAAc17E,KAAKsuC,cAAgB6sC,EAAgB7sC,gBACtD6sC,EAAgB7sC,cAAgBotC,EAAc17E,KAAKsuC,eAGnB,MAAhCotC,EAAc17E,KAAKs7D,WAChBogB,EAAc17E,KAAKs7D,UAAY6f,EAAgB7f,YAClD6f,EAAgB7f,UAAYogB,EAAc17E,KAAKs7D,WAG/CogB,EAAc17E,KAAK28D,eACnBwe,EAAgBxe,cAAe,GAG/B+e,EAAc17E,KAAK68D,eACnBse,EAAgBte,cAAe,GAG/B6e,EAAc17E,KAAK+8D,iBACnBoe,EAAgBpe,gBAAiB,GAGjC2e,EAAc17E,KAAKi9D,iBACnBke,EAAgBle,gBAAiB,OAnC9B,CAAP,EAAOke,WA0Cf,YAAAlsC,uBAAA,SAAuB5E,EAA0B2kE,EAC7C3gE,GACA,OAA6B,MAAzBA,KAIAA,EAAsBC,cAAgB,GAAKD,EAAsBC,cAAgBjE,OAIjFgE,EAAsBitB,UAAY,GAAKjtB,EAAsBitB,UAAY0zC,EAAYlxG,YAIrFuwC,EAAsBsuB,cAAgBqyC,EAAYC,sBAAwBD,OAI1E3gE,EAAsBwuB,cAAgBmyC,EAAYE,sBAAwBF,OAI1E3gE,EAAsB0uB,iBAAoB,QAAQ33D,KAAK4pG,OAIvD3gE,EAAsB4uB,iBAAoB,eAAe73D,KAAK4pG,SAM1E,EA7HA,GAAa,EAAAj3F,iB,8ZCfb,IAEA,yE,OACI,EAAAu2B,cAAwB,EACxB,EAAAgtB,UAAoB,EACpB,EAAAqB,cAAwB,EACxB,EAAAE,cAAwB,EACxB,EAAAE,gBAA0B,EAC1B,EAAAE,gBAA0B,E,EAC9B,OAPiD,OAOjD,EAPA,CAFA,OAEiD,SAApC,EAAA8xC,+B,g7CCFb,cAQA,QACA,SACA,SACA,SAEA,aAKI,WAAoB50E,EAA8Br6B,GAA9B,KAAAq6B,gBAJZ,KAAAg1E,UAAW,EACX,KAAA11D,MAAoB,KACpB,KAAA21D,gBAAiB,EAGrB1vG,KAAK0vG,eAAyC,MAAxBtvG,GAClBA,EAAqB0/D,cAAgB,EAAA1sC,WAAWO,cA+N5D,OA5NI,YAAAu7B,WAAA,WACIlvD,KAAK+5C,MAAQ,MAGjB,YAAA+L,aAAA,SAAa5+C,GAGT,QAF+B,MAATA,GAAgC,MAAdlH,KAAK+5C,OAAiB7yC,EAAM9I,OAAS,GAC1D,MAAd4B,KAAK+5C,OAAiB7yC,EAAM9I,OAAS,GAA4B,IAAvB8I,EAAMzC,QAAQ,OAI3D,YAAAskE,aAAN,W,uGACI,OAAI/oE,KAAKyvG,SACL,KAGJ7rG,QAAQ+jG,KAAK,mBACb3nG,KAAKyvG,UAAW,EAChBzvG,KAAK+5C,MAAQ,MACP41D,EAAU,IAAIC,EAAKC,SACjBvvE,IAAI,MACZqvE,EAAQlnG,MAAM,UAAW,CAAEqnG,MAAO,IAAKC,UAAW,SAAChiG,GAAkB,OAAAA,EAAEnO,GAAGqG,OAAO,EAAG,MACpF0pG,EAAQlnG,MAAM,OAAQ,CAAEqnG,MAAO,KAC/BH,EAAQlnG,MAAM,WAAY,CACtBqnG,MAAO,EACPC,UAAW,SAAChiG,GACR,OAAkB,MAAdA,EAAEmR,UAAoBnR,EAAE9F,OAAS,EAAAC,WAAW2P,KACrC9J,EAAEmR,SAASja,QAAQ,MAAO,IAE9B8I,EAAEmR,YAGjBywF,EAAQlnG,MAAM,SACdknG,EAAQlnG,MAAM,iBAAkB,CAC5BsnG,UAAW,SAAChiG,GAAkB,OAAAA,EAAE9F,OAAS,EAAAC,WAAWC,OAAoB,MAAX4F,EAAEhG,MAAgBgG,EAAEhG,MAAMoB,SAAW,QAEtGwmG,EAAQlnG,MAAM,aAAc,CAAEqnG,MAAO,EAAGC,UAAW,SAAChiG,GAAkB,SAAKiiG,aAAajiG,MACxF4hG,EAAQlnG,MAAM,SAAU,CAAEsnG,UAAW,SAAChiG,GAAkB,SAAKkiG,eAAeliG,GAAG,MAC/E4hG,EAAQlnG,MAAM,gBAAiB,CAAEsnG,UAAW,SAAChiG,GAAkB,SAAKkiG,eAAeliG,GAAG,MACtF4hG,EAAQlnG,MAAM,cAAe,CAAEsnG,UAAW,SAAChiG,GAAkB,SAAKmiG,oBAAoBniG,GAAG,MACzF4hG,EAAQlnG,MAAM,qBACV,CAAEsnG,UAAW,SAAChiG,GAAkB,SAAKmiG,oBAAoBniG,GAAG,MAChE4hG,EAAQlnG,MAAM,iBAAkB,CAAEsnG,UAAW,SAAChiG,GAAkB,OAAAA,EAAEuQ,kBAClD,GAAMte,KAAKy6B,cAAcuP,oB,cAAzB,SACRtmC,SAAQ,SAACqK,GAAM,OAAA4hG,EAAQ7iE,IAAI/+B,MACnC/N,KAAK+5C,MAAQ41D,EAAQhsB,QACrB3jF,KAAKyvG,UAAW,EAEhB7rG,QAAQusG,QAAQ,mB,YAGd,YAAA5kB,cAAN,SAAoBrkF,EAChBM,EACAyB,G,YADA,IAAAzB,MAAA,WACA,IAAAyB,MAAA,M,wGAEM0/B,EAAwB,GACjB,MAATzhC,IACAA,EAAQA,EAAM9D,OAAOsH,eAEX,KAAVxD,IACAA,EAAQ,MAGG,MAAX+B,EAAA,MACU,GAAMjJ,KAAKy6B,cAAcuP,mB,OAAnC/gC,EAAU,S,iBASd,OANc,MAAVzB,GAAkBH,MAAM+oG,QAAQ5oG,IAAWA,EAAOpJ,OAAS,EAC3D6K,EAAUA,EAAQzB,QAAO,SAACuG,GAAM,OAAAvG,EAAO6oG,OAAM,SAACzpG,GAAM,OAAK,MAALA,GAAaA,EAAEmH,SAClD,MAAVvG,IACPyB,EAAUA,EAAQzB,OAAOA,IAGxBxH,KAAK8lD,aAAa5+C,GAInBlH,KAAKyvG,SACL,GAAM,IAAIt6F,SAAQ,SAAC5O,GAAM,OAAAmV,WAAWnV,EAAG,SADvC,MAHO,CAAP,EAAO0C,G,cAIP,SACIjJ,KAAKyvG,SACL,GAAM,IAAIt6F,SAAQ,SAAC5O,GAAM,OAAAmV,WAAWnV,EAAG,SADvC,M,OACA,S,iBAKR,GAAa,OADPwzC,EAAQ/5C,KAAKswG,qBAGf,MAAO,CAAP,EAAOtwG,KAAKsiD,mBAAmBr5C,EAAS/B,IAQ5C,GALMqpG,EAAa,IAAIvhG,IACvB/F,EAAQvF,SAAQ,SAACqK,GAAM,OAAAwiG,EAAWrhG,IAAInB,EAAEnO,GAAImO,MAExCyiG,EAAqC,KACV,MAATtpG,GAAiBA,EAAM9I,OAAS,GAA4B,IAAvB8I,EAAMzC,QAAQ,KAErE,IACI+rG,EAAgBz2D,EAAMvxC,OAAOtB,EAAMjB,OAAO,GAAG7C,QAC/C,eAGI,EAASwsG,EAAKa,MAAMC,SAASC,QAAUf,EAAKa,MAAMC,SAASE,SACjEJ,EAAgBz2D,EAAM7yC,OAAM,SAAC2pG,GACzBjB,EAAKkB,UAAU5pG,GAAOxD,SAAQ,SAACia,GAC3B,IAAM1d,EAAI0d,EAAM/Q,WAChBikG,EAAEE,KAAK9wG,EAAG,CAAE6H,OAAQ,CAAC,QAAS4oG,SAAU,IACxCG,EAAEE,KAAK9wG,EAAG,CAAE6H,OAAQ,CAAC,YAAa4oG,SAAU,IAC5CG,EAAEE,KAAK9wG,EAAG,CAAE6H,OAAQ,CAAC,cAAe4oG,SAAU,IAC9CG,EAAEE,KAAK9wG,EAAG,UAYtB,OAPqB,MAAjBuwG,GACAA,EAAc9sG,SAAQ,SAAC6C,GACfgqG,EAAWt5E,IAAI1wB,EAAE+5B,MACjBqI,EAAQloC,KAAK8vG,EAAW9xG,IAAI8H,EAAE+5B,SAInC,CAAP,EAAOqI,WAGX,YAAA2Z,mBAAA,SAAmBr5C,EAAuB/B,EAAeirC,GAAzD,WAEI,YAFqD,IAAAA,OAAA,GACrDjrC,EAAQA,EAAM9D,OAAOsH,cACdzB,EAAQzB,QAAO,SAACuG,GACnB,OAAIokC,IAAYpkC,EAAE+tB,YAGJ,MAAV/tB,EAAEhH,MAAgBgH,EAAEhH,KAAK2D,cAAcjG,QAAQyC,IAAU,IAGzD,EAAKwoG,oBAGLxoG,EAAM9I,QAAU,GAAK2P,EAAEnO,GAAGoF,WAAWkC,MAGvB,MAAd6G,EAAEmR,UAAoBnR,EAAEmR,SAASxU,cAAcjG,QAAQyC,IAAU,MAGjE6G,EAAEhG,OAAwB,MAAfgG,EAAEhG,MAAM5D,KAAe4J,EAAEhG,MAAM5D,IAAIuG,cAAcjG,QAAQyC,IAAU,UAO1F,YAAAopG,kBAAA,WACI,OAAOtwG,KAAK+5C,OAGR,YAAAk2D,eAAR,SAAuBliG,EAAeijG,GAClC,IAAKjjG,EAAEo7D,UACH,OAAO,KAEX,IAAIrhE,EAAmB,GAUvB,OATAiG,EAAEjG,OAAOpE,SAAQ,SAACkD,GACA,MAAVA,EAAEG,MACFe,EAAOrH,KAAKmG,EAAEG,MAEdH,EAAEqB,OAAS,EAAAK,UAAUC,MAAmB,MAAX3B,EAAEjI,OAC/BmJ,EAAOrH,KAAKmG,EAAEjI,UAIA,KADtBmJ,EAASA,EAAON,QAAO,SAACZ,GAAM,MAAa,KAAbA,EAAExD,WACrBhF,OACA,KAEJ4yG,EAASlpG,EAAO3E,KAAK,KAAO2E,GAG/B,YAAAooG,oBAAR,SAA4BniG,EAAeijG,GACvC,IAAKjjG,EAAEoR,eACH,OAAO,KAEX,IAAIN,EAAwB,GAW5B,OAVA9Q,EAAE8Q,YAAYnb,SAAQ,SAAC2L,GACV,MAALA,GAA2B,MAAdA,EAAEiY,WACX0pF,GAAU3hG,EAAEiY,SAAS7iB,QAAQ,MAAQ,EACrCoa,EAAYpe,KAAK4O,EAAEiY,SAASrhB,OAAO,EAAGoJ,EAAEiY,SAASirE,YAAY,OAE7D1zE,EAAYpe,KAAK4O,EAAEiY,cAKJ,KAD3BzI,EAAcA,EAAYrX,QAAO,SAACZ,GAAM,MAAa,KAAbA,EAAExD,WAC1BhF,OACL,KAEJ4yG,EAASnyF,EAAY1b,KAAK,KAAO0b,GAGpC,YAAAmxF,aAAR,SAAqBjiG,GACjB,GAAIA,EAAE9F,OAAS,EAAAC,WAAWC,OAAoB,MAAX4F,EAAEhG,QAAkBgG,EAAEhG,MAAMkc,QAC3D,OAAO,KAEX,IAAM5a,EAAiB,GAsBvB,OArBA0E,EAAEhG,MAAMsB,KAAK3F,SAAQ,SAACc,GAClB,GAAa,MAATA,EAAEL,KAAyB,KAAVK,EAAEL,IAGvB,GAAkB,MAAdK,EAAEK,SAAN,CAIA,IAAIV,EAAMK,EAAEL,IACZ,GAAIK,EAAED,QAAU,EAAAqnB,aAAaC,kBAAmB,CAC5C,IAAMolF,EAAgB9sG,EAAIM,QAAQ,OAC9BwsG,GAAiB,IACjB9sG,EAAMA,EAAI8B,OAAOgrG,EAAgB,IAErC,IAAMC,EAAa/sG,EAAIqE,OAAO,UAC1B0oG,GAAc,IACd/sG,EAAMA,EAAIO,UAAU,EAAGwsG,IAG/B7nG,EAAK5I,KAAK0D,QAdNkF,EAAK5I,KAAK+D,EAAEK,aAgBbwE,EAAKjL,OAAS,EAAIiL,EAAO,MAExC,EAtOA,GAAa,EAAAyK,iB,i7CCbb,cAKA,QAEA,UAGA,aAOI,WAAoBnE,EAAqBvP,GAArB,KAAAuP,MAAqB,KAAAvP,uBACrCJ,KAAKmxG,YAA+B,IAAfxhG,EAAIwhG,OAAyBxhG,EAAIwhG,OAAS,KAC/DnxG,KAAKoxG,OAAYpxG,KAAKmxG,aAAuC,IAAtBxhG,EAAIwhG,OAAOC,OAA0BzhG,EAAIwhG,OAAOC,OAAS,KAChGpxG,KAAKooF,OAAShoF,EAAqBgoF,SACnCpoF,KAAKqoF,KAAOjoF,EAAqBioF,OACjC,IAAMgpB,EAAK1hG,EAAIE,UAAUC,UACzB9P,KAAKsxG,YAAclxG,EAAqBi0F,aACnCgd,EAAG5sG,QAAQ,iBAAmB,GAAK4sG,EAAG5sG,QAAQ,gBAAkB,GAoQ7E,OAjQU,YAAAouE,OAAN,SAAazpE,EAAgCwpE,EAA4B2+B,EACrEC,G,gHACA,OAAIxxG,KAAKooF,QAAUpoF,KAAKqoF,MAAQroF,KAAKsxG,aAC3BG,EAAyB,WAAdF,EAAyB,GAAK,GACzCG,EAAgB1xG,KAAK2xG,aAAavoG,GAClCwoG,EAAY5xG,KAAK2xG,aAAa/+B,GAC9Bi/B,EAAmBC,EAAcj/B,OAAO6+B,EAAeE,EAAWJ,EAAYC,EAAUF,GACvF,CAAP,EAAO,EAAAzsG,MAAM2H,sBAAsBolG,GAAiBllG,UAGlDolG,EAAsB,WAAdR,EAAyB,IAAM,IACvCS,EAAchyG,KAAKiyG,MAAM7oG,GACzB8oG,EAAUlyG,KAAKiyG,MAAMr/B,GAErBu/B,EAA6B,CAC/BprG,KAAM,SACN6rE,KAAMs/B,EACNV,WAAYA,EACZ/uF,KAAM,CAAE1b,KAAM/G,KAAKoyG,qBAAqBb,KAG7B,GAAMvxG,KAAKoxG,OAAOiB,UAAU,MAAOL,EAAa,CAAEjrG,KAAM,WACnE,EAAO,CAAC,iB,OACL,OAFDurG,EAAS,SAER,GAAMtyG,KAAKoxG,OAAOmB,WAAWJ,EAAcG,EAAQP,I,OAA1D,MAAO,CAAP,EAAO,kBAGL,YAAAtvF,KAAN,SAAW9jB,EAA6B4yG,G,oGACpC,OAAMvxG,KAAKooF,QAAUpoF,KAAKqoF,OAAuB,SAAdkpB,GAAuC,QAAdA,GAClDiB,EAAmB,QAAdjB,EAAsBO,EAAMU,GAAGC,IAAIz2F,SAAW81F,EAAMU,GAAGE,KAAK12F,SACjE22F,EAAa3yG,KAAK2xG,aAAahzG,GACrC6zG,EAAGI,OAAOD,EAAY,OACf,CAAP,EAAO,EAAA7tG,MAAM2H,sBAAsB+lG,EAAGK,SAASvyG,MAAMqM,UAGnDmmG,EAAW9yG,KAAKiyG,MAAMtzG,GACrB,GAAMqB,KAAKoxG,OAAOyB,OAAO,CAAE9rG,KAAM/G,KAAKoyG,qBAAqBb,IAAcuB,K,OAAhF,MAAO,CAAP,EAAO,kBAGL,YAAAv9B,KAAN,SAAW52E,EAAoBC,EAAkB2yG,G,wGAC7C,OAAIvxG,KAAKqoF,MAAsB,WAAdkpB,GACPh8B,EAAQu8B,EAAcv8B,KAAKv5D,SAC3B8lE,EAAW9hF,KAAK2xG,aAAa/yG,GAC7B+zG,EAAa3yG,KAAK2xG,aAAahzG,GACrC42E,EAAK/lD,MAAM+hF,EAAWzvB,GACtBvM,EAAKq9B,OAAOD,EAAY,OACjB,CAAP,EAAO,EAAA7tG,MAAM2H,sBAAsB8oE,EAAKs9B,SAASvyG,MAAMqM,UAGrDomG,EAAmB,CACrBhsG,KAAM,OACN0b,KAAM,CAAE1b,KAAM/G,KAAKoyG,qBAAqBb,KAG7B,GAAMvxG,KAAKoxG,OAAOiB,UAAU,MAAOzzG,EAAKm0G,GAAkB,EAAO,CAAC,W,OAC1E,OADDT,EAAS,SACR,GAAMtyG,KAAKoxG,OAAOpvB,KAAK+wB,EAAkBT,EAAQ3zG,I,OAAxD,MAAO,CAAP,EAAO,kBAML,YAAA6Q,QAAN,SAAcH,EAAgBC,G,8GACX,SAAMtP,KAAKozE,YAAY,K,OAKvB,OALT5a,EAAS,SACTu6C,EAAmB,CACrBhsG,KAAM,OACN0b,KAAM,CAAE1b,KAAM,YAEH,GAAM/G,KAAKoxG,OAAOiB,UAAU,MAAO75C,EAAQu6C,GAAkB,EAAO,CAAC,U,OACvE,OADPT,EAAS,SACF,GAAMtyG,KAAKoxG,OAAOpvB,KAAK+wB,EAAkBT,EAAQjjG,I,OACjD,OADP2jG,EAAO,SACA,GAAMhzG,KAAKoxG,OAAOpvB,KAAK+wB,EAAkBT,EAAQhjG,I,OAE9D,GAFM2jG,EAAO,SAETD,EAAKlmG,aAAemmG,EAAKnmG,WACzB,MAAO,CAAP,GAAO,GAKX,IAFMomG,EAAO,IAAItnG,WAAWonG,GACtBG,EAAO,IAAIvnG,WAAWqnG,GACnB/0G,EAAI,EAAGA,EAAIi1G,EAAK/0G,OAAQF,IAC7B,GAAIg1G,EAAKh1G,KAAOi1G,EAAKj1G,GACjB,MAAO,CAAP,GAAO,GAIf,MAAO,CAAP,GAAO,WAGX,YAAA03E,SAAA,SAASj3E,EAAeC,EAAa2yG,GACjC,IAAMh8B,EAAQu8B,EAAcv8B,KAAKv5D,SACjCu5D,EAAK/lD,MAAM+hF,EAAW3yG,GACtB22E,EAAKq9B,OAAOj0G,GACZ,IAAMqN,EAAQupE,EAAKs9B,SAASO,WAC5B,OAAOj+F,QAAQC,QAAQpJ,IAGrB,YAAA8pE,YAAN,SAAkBzmE,EAAWC,G,8GACZ,SAAMtP,KAAKozE,YAAY,K,OAGpC,IAHMigC,EAAO,SACPrnG,EAAQ,IAAIsnG,YAAYD,GACxB1mG,EAASmlG,EAAMyB,KAAKC,eACjBt1G,EAAI,EAAGA,EAAI8N,EAAM5N,OAAQF,IAC9ByO,EAAO8mG,SAASznG,EAAM9N,IAc1B,OAZMs6D,EAAS7rD,EAAOymG,YAEhB79B,EAAQu8B,EAAcv8B,KAAKv5D,UAC5BwT,MAAM,SAAUgpC,GACrB+c,EAAKq9B,OAAOvjG,GACN2jG,EAAOz9B,EAAKs9B,SAASO,WAE3B79B,EAAK/lD,MAAM,KAAM,MACjB+lD,EAAKq9B,OAAOtjG,GACN2jG,EAAO19B,EAAKs9B,SAASO,WAGpB,CAAP,EADeJ,IAASC,WAItB,YAAAp/B,WAAN,SAAiBvzE,EAAmBwoB,EAAiBlqB,G,gGAClC,SAAMoB,KAAKoxG,OAAOiB,UAAU,MAAOzzG,EAAK,CAAEmI,KAAM,YAAoB,EAAO,CAAC,a,OACpF,OADDurG,EAAS,SACR,GAAMtyG,KAAKoxG,OAAO5rE,QAAQ,CAAEz+B,KAAM,UAAW+hB,GAAIA,GAAMwpF,EAAQhyG,I,OAAtE,MAAO,CAAP,EAAO,kBAGX,YAAAq1E,yBAAA,SAAyBr1E,EAAcwoB,EAAYC,EAAanqB,GAE5D,IAAMsW,EAAI,IAAI,EAAAw+F,kBA8Bd,OA7BgB,MAAZ90G,EAAI+0G,OACJz+F,EAAEs7C,OAAS5xD,EAAI+0G,KAAKC,iBACpB1+F,EAAEsjD,OAAS55D,EAAI+0G,KAAKE,kBAGR,MAAZ3+F,EAAEs7C,SACFt7C,EAAEs7C,OAASshD,EAAMyB,KAAKO,SAASl1G,EAAI85D,YAEvCxjD,EAAE5U,KAAOwxG,EAAMyB,KAAKO,SAASxzG,GAC7B4U,EAAE4T,GAAKgpF,EAAMyB,KAAKO,SAAShrF,GAC3B5T,EAAEogE,QAAUpgE,EAAE4T,GAAK5T,EAAE5U,KACL,MAAZ4U,EAAEsjD,QAAmC,MAAjB55D,EAAI+5D,YACxBzjD,EAAEsjD,OAASs5C,EAAMyB,KAAKO,SAASl1G,EAAI+5D,YAE5B,MAAP5vC,IACA7T,EAAE6T,IAAM+oF,EAAMyB,KAAKO,SAAS/qF,IAIhB,MAAZnqB,EAAI+0G,OACJ/0G,EAAI+0G,KAAO,IAEkB,MAA7B/0G,EAAI+0G,KAAKC,mBACTh1G,EAAI+0G,KAAKC,iBAAmB1+F,EAAEs7C,QAElB,MAAZt7C,EAAEsjD,QAA+C,MAA7B55D,EAAI+0G,KAAKE,mBAC7Bj1G,EAAI+0G,KAAKE,iBAAmB3+F,EAAEsjD,QAG3BtjD,GAGX,YAAA6gE,eAAA,SAAeg+B,GACX,IAAMC,EAAclC,EAAcyB,KAAKC,aAAaO,EAAWzzG,MACzD8zE,EAAY09B,EAAclsG,OAAOquG,eAAe,UAAWF,EAAWvjD,QAC5E4jB,EAAS5kD,MAAM,CAAE1G,GAAIirF,EAAWjrF,KAChCsrD,EAASw+B,OAAOoB,GAChB5/B,EAAS8/B,SACT,IAAM3+F,EAAM6+D,EAASxmE,OAAOhB,SAAS,QACrC,OAAOuI,QAAQC,QAAQG,IAGrB,YAAAygE,WAAN,SAAiB11E,EAAmBwoB,EAAiBlqB,G,gGAClC,SAAMoB,KAAKoxG,OAAOiB,UAAU,MAAOzzG,EAAK,CAAEmI,KAAM,YAAoB,EAAO,CAAC,a,OACpF,OADDurG,EAAS,SACR,GAAMtyG,KAAKoxG,OAAO97F,QAAQ,CAAEvO,KAAM,UAAW+hB,GAAIA,GAAMwpF,EAAQhyG,I,OAAtE,MAAO,CAAP,EAAO,kBAGL,YAAAqpD,WAAN,SAAiBrpD,EAAmBkpD,EAAwB+nD,G,kGAOzC,OAJT4C,EAAY,CACdptG,KAAM,WACN0b,KAAM,CAAE1b,KAAM/G,KAAKoyG,qBAAqBb,KAE7B,GAAMvxG,KAAKoxG,OAAOiB,UAAU,OAAQ7oD,EAAW2qD,GAAW,EAAO,CAAC,a,OAC1E,OADD7B,EAAS,SACR,GAAMtyG,KAAKoxG,OAAO5rE,QAAQ2uE,EAAW7B,EAAQhyG,I,OAApD,MAAO,CAAP,EAAO,kBAGL,YAAA2xE,WAAN,SAAiB3xE,EAAmBo5B,EAAyB63E,G,kGAO1C,OAJT4C,EAAY,CACdptG,KAAM,WACN0b,KAAM,CAAE1b,KAAM/G,KAAKoyG,qBAAqBb,KAE7B,GAAMvxG,KAAKoxG,OAAOiB,UAAU,QAAS34E,EAAYy6E,GAAW,EAAO,CAAC,a,OAC5E,OADD7B,EAAS,SACR,GAAMtyG,KAAKoxG,OAAO97F,QAAQ6+F,EAAW7B,EAAQhyG,I,OAApD,MAAO,CAAP,EAAO,kBAGL,YAAAoxE,oBAAN,SAA0Bh4C,G,wGAMA,OALhBy6E,EAAY,CACdptG,KAAM,WAEN0b,KAAM,CAAE1b,KAAM/G,KAAKoyG,qBAAqB,UAEtB,GAAMpyG,KAAKoxG,OAAOiB,UAAU,QAAS34E,EAAYy6E,GAAW,EAAM,CAAC,a,OACnE,OADhBC,EAAgB,SACA,GAAMp0G,KAAKoxG,OAAOiD,UAAU,MAAOD,I,OAQpC,OARfE,EAAgB,SAChBC,EAAqB,CACvBC,IAAK,MACL9yG,EAAG4yG,EAAc5yG,EACjBqS,EAAGugG,EAAcvgG,EACjBoiE,IAAK,WACLs+B,KAAK,GAEY,GAAMz0G,KAAKoxG,OAAOiB,UAAU,MAAOkC,EAAoBJ,GAAW,EAAM,CAAC,a,OACvF,OADDO,EAAe,SACd,GAAM10G,KAAKoxG,OAAOiD,UAAU,OAAQK,I,OAA3C,MAAO,CAAP,EAAO,kBAGL,YAAArhC,mBAAN,SAAyBj1E,G,sGAQL,OAPV+1G,EAAY,CACdptG,KAAM,WACN4tG,cAAev2G,EACfw2G,eAAgB,IAAIhpG,WAAW,CAAC,EAAM,EAAM,IAE5C6W,KAAM,CAAE1b,KAAM/G,KAAKoyG,qBAAqB,UAE5B,GAAMpyG,KAAKoxG,OAAOyD,YAAYV,GAAW,EAAM,CAAC,UAAW,a,OACzD,OADZv6E,EAAU,SACE,GAAM55B,KAAKoxG,OAAOiD,UAAU,OAAQz6E,EAAQ4vB,Y,OAC3C,OADbA,EAAY,SACC,GAAMxpD,KAAKoxG,OAAOiD,UAAU,QAASz6E,EAAQF,a,OAChE,OADMA,EAAa,SACZ,CAAC,EAAD,CAAC8vB,EAAW9vB,YAGvB,YAAA05C,YAAA,SAAYh1E,GACR,IAAMoO,EAAM,IAAIZ,WAAWxN,GAE3B,OADA4B,KAAKmxG,OAAO2D,gBAAgBtoG,GACrB2I,QAAQC,QAAQ5I,EAAIG,SAGvB,YAAAslG,MAAR,SAActzG,GAOV,MALuB,iBAAZ,EACD,EAAAmG,MAAMsH,gBAAgBzN,GAAOgO,OAE7BhO,GAKN,YAAAgzG,aAAR,SAAqBhzG,GAOjB,MALuB,iBAAZ,EACCmzG,EAAMyB,KAAKwB,WAAWp2G,GAEtB,EAAAmG,MAAMyI,uBAAuB5O,IAKrC,YAAAyzG,qBAAR,SAA6Bb,GACzB,GAAkB,QAAdA,EACA,MAAM,IAAIjnG,MAAM,sCAEpB,MAAqB,SAAdinG,EAAuB,QAAwB,WAAdA,EAAyB,UAAY,WAErF,EAlRA,GAAa,EAAA3hB,4B,wFCVb,mBAAa,EAAA8jB,qB,+ECCb,SAKA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SAIA,SACA,SAGA,SACA,SAGA,SAGA,SACA,SAGA,SAIA,SAEA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,UAEA,UAEA,UACA,UACA,UAEA,UAEA,U,GAYsB,CAAEvrF,QAAS,iBAAiB,GAK5B,CAAEA,QAAS,gBAAgB,GAO3B,CAAEA,QAAS,oBAAoB,GAO/B,CAAEA,QAAS,yBAAyB,GAMpC,CAAEA,QAAS,iBAAiB,GAM5B,CAAEA,QAAS,iBAAiB,GASY,CAAEA,QAAS,WAAW,GAMV,CAAEA,QAAS,aAAa,GACxB,CAAEA,QAAS,WAAW,GACb,CAAEA,QAAS,eAAe,GACzB,CAAEA,QAAS,gBAAgB,GACrC,CAAEA,QAAS,aAAa,GACpB,CAAEA,QAAS,WAAW,GAItE,CAAEA,QAAS,qBAAqB,GAEwB,CAAEA,QAAS,iBAAiB,GAIpF,CAAEA,QAAS,mBAAmB,GAUY,CAAEA,QAAS,cAAc,GACzB,CAAEA,QAAS,eAAe,GAIpE,CAAEA,QAAS,qBAAqB,GAEuB,CAAEA,QAAS,oBAAoB,GAItF,CAAEA,QAAS,yBAAyB,GAKpC,CAAEA,QAAS,2BAA2B,GAKtC,CAAEA,QAAS,uBAAuB,GAKlC,CAAEA,QAAS,0BAA0B,GAKrC,CAAEA,QAAS,qBAAqB,GAYG,CAAEA,QAAS,SAAS,GAK/D,CAAEk8D,aAAc,CAAC,GAAA3uD,qBAAqBg+D,MAAO,GAAAh+D,qBAAqBk+D,QAAQ,GAGrB,CAAEzrE,QAAS,cAAc,GACzB,CAAEA,QAAS,eAAe,GAIvE,CAAEA,QAAS,0BAA0B,GAKrC,CAAEA,QAAS,qBAAqB,GAKhC,CAAEA,QAAS,yBAAyB,GAKpC,CAAEA,QAAS,2BAA2B,GAKtC,CAAEA,QAAS,uBAAuB,GAQ1C,CACFk8D,aAAc,CACV,GAAA3uD,qBAAqBg+D,MACrB,GAAAh+D,qBAAqBk+D,MACrB,GAAAl+D,qBAAqBi+D,UAE5B,GAG0E,CAAExrE,QAAS,eAAe,GAC1C,CAAEA,QAAS,aAAa,GACxB,CAAEA,QAAS,UAAU,GACrB,CAAEA,QAAS,UAAU,GACjB,CAAEA,QAAS,YAAY,GAOhF,CAAEk8D,aAAc,CAAC,GAAA3uD,qBAAqBg+D,QAAQ,GAGS,CAAEvrE,QAAS,kBAAkB,GACnB,CAAEA,QAAS,gBAAgB,GAIpF,CAAEA,QAAS,WAAW,GAKtB,CAAEA,QAAS,gB,2YAnMtB,EAAA6kB,wBAEmC,EAAAY,eAA8B,GAAA22C,mBAC9C,EAAAp2C,mBAAkC,GAAAo2C,mBAE3B,EAAA90C,kBACf,GAAA80C,mBAIW,EAAA50C,cACX,GAAA40C,mBAGS,EAAAt0C,cACQ,EAAAI,0BAGpB,EAAAO,4BAMA,EAAAG,0BACG,GAAAwzC,mBAKH,EAAArzC,uBACG,GAAAqzC,mBAKH,EAAAlzC,6BACG,GAAAkzC,mBAOX,EAAA7yC,oBACG,GAAAwyC,iBAEkB,GAAAjtC,eAGb,EAAAQ,kBAGuB,EAAAU,iBACA,EAAAkB,iBACK,EAAAgB,qBACF,EAAA3Z,wBACH,EAAA2a,iBACA,EAAA/Y,qBAGf,EAAAmd,0BAGqB,EAAAr0B,uBAGrB,EAAAu0B,4BAOR,EAAAC,eACG,GAAAskC,iBAGmB,EAAA36C,gBACA,EAAAG,gBAGd,EAAAyW,2BAGqB,EAAAG,sBAGrB,EAAArW,+BAKA,GAAAE,iCAKA,GAAAW,6BAKA,EAAAK,gCAKA,EAAAc,iCAShB,EAAAoV,4BACG,GAAA6iC,iBAAkB,GAAAE,yBAGA,iBAGb,iBACG,GAAAE,6BAImB,kBACA,kBAGd,kCAKA,mCAKA,iCAKA,mCAKA,+BAOR,kBACG,GAAAA,6BAUwB,uBACL,kBACA,kBACA,kBACE,oBAKxB,oBACG,GAAAA,6BAIoB,mBACG,0BAGlB,EAAA54B,6BAKA,EAAAgB,kCArMnC,IA+MA,gBAOa,EAAAsoD","file":"app/main.ec1191668ddd60d16e05.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([729,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 { 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 { 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 { 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 { 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 { PolicyResponse } from '../models/response/policyResponse';\nimport { PreloginResponse } from '../models/response/preloginResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { SelectionReadOnlyResponse } from '../models/response/selectionReadOnlyResponse';\nimport { SubscriptionResponse } from '../models/response/subscriptionResponse';\nimport { SyncResponse } from '../models/response/syncResponse';\nimport { TaxInfoResponse } from '../models/response/taxInfoResponse';\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\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 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 postAccountRecoverDelete: (request: DeleteRecoverRequest) => Promise;\n postAccountRecoverDeleteToken: (request: VerifyDeleteRecoverRequest) => Promise;\n postAccountKdf: (request: KdfRequest) => Promise;\n getEnterprisePortalSignInToken: () => 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 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 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 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 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\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 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","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: (text: string, title?: string, confirmText?: string, cancelText?: string,\n type?: string) => 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}\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","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 { 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","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","export abstract class MessagingService {\n send: (subscriber: string, arg?: any) => void;\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 hashPassword: (password: string, key: SymmetricCryptoKey) => Promise;\n makeEncKey: (key: SymmetricCryptoKey) => Promise<[SymmetricCryptoKey, CipherString]>;\n remakeEncKey: (key: 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 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';\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 { AttachmentView } from '../models/view/attachmentView';\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[]) => Promise;\n getAllFromApiForOrganization: (organizationId: string) => Promise;\n getLastUsedForUrl: (url: string) => Promise;\n updateLastUsedDate: (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: (id: string | string[]) => Promise;\n restoreWithServer: (id: string) => Promise;\n restoreManyWithServer: (ids: string[]) => Promise;\n}\n","import * as papa from 'papaparse';\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\nexport abstract class BaseImporter {\n organization = 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 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): any[] {\n data = this.splitNewLine(data).join('\\n').trim();\n const result = papa.parse(data, {\n header: header,\n encoding: 'UTF-8',\n skipEmptyLines: false,\n });\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 console.warn('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: Array<[number, number]> = [];\n collections: CollectionView[] = [];\n collectionRelationships: Array<[number, number]> = [];\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\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","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 abstract class BaseResponse {\n protected 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","export enum CipherType {\n Login = 1,\n SecureNote = 2,\n Card = 3,\n Identity = 4,\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 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 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 fromUrlB64ToUtf8(b64Str: string): string {\n let output = b64Str.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 Utils.fromB64ToUtf8(output);\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 const domain = tldjs != null && tldjs.getDomain != null ? tldjs.getDomain(uriString) : null;\n if (domain != null) {\n return domain;\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 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 {\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","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","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","export abstract class StorageService {\n get: (key: string) => Promise;\n save: (key: string, obj: any) => Promise;\n remove: (key: string) => Promise;\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 SyncCipherNotification,\n SyncFolderNotification,\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}\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","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 { 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","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 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\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 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}\n","export class PasswordVerificationRequest {\n masterPasswordHash: string;\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 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 { 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 { CipherView } from '../models/view/cipherView';\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) | (Array<(cipher: CipherView) => boolean>),\n ciphers?: CipherView[]) => Promise;\n searchCiphersBasic: (ciphers: CipherView[], query: string, deleted?: boolean) => CipherView[];\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","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","import { CipherString } from './cipherString';\n\nimport { View } from '../view/view';\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): 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);\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 { 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 twoFactorProvidersData: Map;\n selectedTwoFactorProviderType: TwoFactorProviderType;\n\n logIn: (email: string, masterPassword: 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 logOut: (callback: Function) => void;\n getSupportedTwoFactorProviders: (win: Window) => any[];\n getDefaultTwoFactorProvider: (u2fSupported: boolean) => TwoFactorProviderType;\n makePreloginKey: (masterPassword: string, email: string) => Promise;\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 {\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","export enum SecureNoteType {\n Generic = 0,\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 { 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","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","
\n \"\"\n \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 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 { BreachAccountResponse } from '../models/response/breachAccountResponse';\n\nexport abstract class AuditService {\n passwordLeaked: (password: string) => Promise;\n breachedAccounts: (username: string) => 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","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 { CipherString } from '../models/domain/cipherString';\n\nexport abstract class VaultTimeoutService {\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 clear: () => Promise;\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","export enum FieldType {\n Text = 0,\n Hidden = 1,\n Boolean = 2,\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';\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 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 this.loading = false;\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","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 { LoginUriView } from './loginUriView';\nimport { View } from './view';\n\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 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","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","","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 { 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 { 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","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","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\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\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 { 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\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","
\n
\n

{{'twoStepLoginAuthDesc' | i18n}}

\n \n \n
\n
\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","import { EncryptionType } from '../../enums/encryptionType';\n\nimport { CryptoService } from '../../abstractions/crypto.service';\n\nimport { Utils } from '../../misc/utils';\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): 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 const orgKey = await cryptoService.getOrgKey(orgId);\n this.decryptedValue = await cryptoService.decryptToUtf8(this, orgKey);\n } catch (e) {\n this.decryptedValue = '[error: cannot decrypt]';\n }\n return this.decryptedValue;\n }\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\n Organization_Updated = 1600,\n Organization_PurgedVault = 1601,\n // Organization_ClientExportedVault = 1602,\n\n Policy_Created = 1700,\n Policy_Updated = 1701,\n Policy_Deleted = 1702,\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.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 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","export abstract class TotpService {\n getCode: (key: string) => Promise;\n getTimeInterval: (key: string) => number;\n isAutoCopyEnabled: () => Promise;\n}\n","export enum OrganizationUserStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\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 '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 _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 hostnameOrUri(): string {\n return this.hostname != null ? this.hostname : 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","export enum PolicyType {\n TwoFactorAuthentication = 0,\n MasterPassword = 1,\n PasswordGenerator = 2,\n}\n","import {\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\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","
\n
\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 {{'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 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 { 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, organization?: boolean) => Importer;\n}\n","export abstract class ExportService {\n getExport: (format?: 'csv' | 'json') => Promise;\n getOrganizationExport: (organizationId: string, format?: 'csv' | 'json') => Promise;\n getFileName: (prefix?: string, extension?: string) => string;\n}\n","import {\n ComponentFactoryResolver,\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\nexport class CipherReportComponent {\n @ViewChild('cipherAddEdit', { read: ViewContainerRef }) 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 { 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';\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(): Promise {\n const model = new CipherView(this);\n\n await this.decryptObj(model, {\n name: null,\n notes: null,\n }, this.organizationId);\n\n switch (this.type) {\n case CipherType.Login:\n model.login = await this.login.decrypt(this.organizationId);\n break;\n case CipherType.SecureNote:\n model.secureNote = await this.secureNote.decrypt(this.organizationId);\n break;\n case CipherType.Card:\n model.card = await this.card.decrypt(this.organizationId);\n break;\n case CipherType.Identity:\n model.identity = await this.identity.decrypt(this.organizationId);\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);\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);\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);\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 { 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 // 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 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 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 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 enum OrganizationUserType {\n Owner = 0,\n Admin = 1,\n User = 2,\n Manager = 3,\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 { ErrorResponse } from '../models/response/errorResponse';\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 { MessagingService } from '../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService } from '../abstractions/user.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 twoFactorProvidersData: Map;\n selectedTwoFactorProviderType: TwoFactorProviderType = null;\n\n private key: SymmetricCryptoKey;\n private kdf: KdfType;\n private kdfIterations: number;\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 setCryptoKeys = true) { }\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, key);\n }\n\n async logInTwoFactor(twoFactorProvider: TwoFactorProviderType, twoFactorToken: string,\n remember?: boolean): Promise {\n return await this.logInHelper(this.email, this.masterPasswordHash, 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, key, 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 this.kdf = null;\n this.kdfIterations = null;\n try {\n const preloginResponse = await this.apiService.postPrelogin(new PreloginRequest(email));\n if (preloginResponse != null) {\n this.kdf = preloginResponse.kdf;\n this.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, this.kdf, this.kdfIterations);\n }\n\n private async logInHelper(email: string, hashedPassword: 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 request: TokenRequest;\n if (twoFactorToken != null && twoFactorProvider != null) {\n request = new TokenRequest(email, hashedPassword, twoFactorProvider, twoFactorToken, remember,\n deviceRequest);\n } else if (storedTwoFactorToken != null) {\n request = new TokenRequest(email, hashedPassword, TwoFactorProviderType.Remember,\n storedTwoFactorToken, false, deviceRequest);\n } else {\n request = new TokenRequest(email, hashedPassword, null, 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.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 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 this.kdf, this.kdfIterations);\n if (this.setCryptoKeys) {\n await this.cryptoService.setKey(key);\n await this.cryptoService.setKeyHash(hashedPassword);\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 console.error(e);\n }\n }\n\n await this.cryptoService.setEncPrivateKey(tokenResponse.privateKey);\n }\n\n this.messagingService.send('loggedIn');\n return result;\n }\n\n private clearState(): void {\n this.email = null;\n this.masterPasswordHash = null;\n this.twoFactorProvidersData = null;\n this.selectedTwoFactorProviderType = null;\n }\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","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';\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\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) {\n super(searchService);\n this.pageSize = 200;\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n checkCipher(c: CipherView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n launch(uri: string) {\n this.platformUtilsService.eventTrack('Launched Login URI');\n this.platformUtilsService.launchUri(uri);\n }\n\n selectAll(select: boolean) {\n if (select) {\n this.selectAll(false);\n }\n const selectCount = select && this.ciphers.length > MaxCheckedCount ? MaxCheckedCount : this.ciphers.length;\n for (let i = 0; i < selectCount; i++) {\n this.checkCipher(this.ciphers[i], select);\n }\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 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 copy(cipher: CipherView, value: string, typeI18nKey: string, aType: string) {\n if (value == null) {\n return;\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') {\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 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","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 { 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\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 super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, messagingService, eventService);\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 && this.ownershipOptions.length > 1;\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","export enum UriMatchType {\n Domain = 0,\n Host = 1,\n StartsWith = 2,\n Exact = 3,\n RegularExpression = 4,\n Never = 5,\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 }) recoveryModalRef: ViewContainerRef;\n @ViewChild('authenticatorTemplate', { read: ViewContainerRef }) authenticatorModalRef: ViewContainerRef;\n @ViewChild('yubikeyTemplate', { read: ViewContainerRef }) yubikeyModalRef: ViewContainerRef;\n @ViewChild('u2fTemplate', { read: ViewContainerRef }) u2fModalRef: ViewContainerRef;\n @ViewChild('duoTemplate', { read: ViewContainerRef }) duoModalRef: ViewContainerRef;\n @ViewChild('emailTemplate', { read: ViewContainerRef }) 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
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\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 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","import {\n Component,\n EventEmitter,\n Input,\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 { SyncService } from 'jslib/abstractions/sync.service';\n\nimport { PaymentComponent } from './payment.component';\nimport { TaxInfoComponent } from './tax-info.component';\n\nimport { PlanType } from 'jslib/enums/planType';\nimport { OrganizationCreateRequest } from 'jslib/models/request/organizationCreateRequest';\nimport { OrganizationUpgradeRequest } from 'jslib/models/request/organizationUpgradeRequest';\n\n@Component({\n selector: 'app-organization-plans',\n templateUrl: 'organization-plans.component.html',\n})\nexport class OrganizationPlansComponent {\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() plan = 'free';\n @Output() onSuccess = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n selfHosted = false;\n ownedBusiness = false;\n premiumAccessAddon = false;\n storageGbPriceMonthly = 0.33;\n additionalStorage = 0;\n additionalSeats = 0;\n interval = 'year';\n name: string;\n billingEmail: string;\n businessName: string;\n\n storageGb: any = {\n price: 0.33,\n monthlyPrice: 0.50,\n yearlyPrice: 4,\n };\n\n plans: any = {\n free: {\n basePrice: 0,\n noAdditionalSeats: true,\n noPayment: true,\n },\n families: {\n basePrice: 1,\n annualBasePrice: 12,\n baseSeats: 5,\n noAdditionalSeats: true,\n annualPlanType: PlanType.FamiliesAnnually,\n canBuyPremiumAccessAddon: true,\n },\n teams: {\n basePrice: 5,\n annualBasePrice: 60,\n monthlyBasePrice: 8,\n baseSeats: 5,\n seatPrice: 2,\n annualSeatPrice: 24,\n monthlySeatPrice: 2.5,\n monthPlanType: PlanType.TeamsMonthly,\n annualPlanType: PlanType.TeamsAnnually,\n },\n enterprise: {\n seatPrice: 3,\n annualSeatPrice: 36,\n monthlySeatPrice: 4,\n monthPlanType: PlanType.EnterpriseMonthly,\n annualPlanType: PlanType.EnterpriseAnnually,\n },\n };\n\n formPromise: Promise;\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 this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async submit() {\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 !== '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.plan === '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.plans[this.plan].canBuyPremiumAccessAddon &&\n this.premiumAccessAddon;\n if (this.interval === 'month') {\n request.planType = this.plans[this.plan].monthPlanType;\n } else {\n request.planType = this.plans[this.plan].annualPlanType;\n }\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.plans[this.plan].canBuyPremiumAccessAddon &&\n this.premiumAccessAddon;\n if (this.interval === 'month') {\n request.planType = this.plans[this.plan].monthPlanType;\n } else {\n request.planType = this.plans[this.plan].annualPlanType;\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 cancel() {\n this.onCanceled.emit();\n }\n\n changedPlan() {\n if (!this.plans[this.plan].canBuyPremiumAccessAddon) {\n this.premiumAccessAddon = false;\n }\n\n if (this.plans[this.plan].monthPlanType == null) {\n this.interval = 'year';\n }\n\n if (this.plans[this.plan].noAdditionalSeats) {\n this.additionalSeats = 0;\n } else if (!this.additionalSeats && !this.plans[this.plan].baseSeats &&\n !this.plans[this.plan].noAdditionalSeats) {\n this.additionalSeats = 1;\n }\n }\n\n changedOwnedBusiness() {\n if (!this.ownedBusiness || this.plan === 'teams' || this.plan === 'enterprise') {\n return;\n }\n this.plan = 'teams';\n }\n\n additionalStorageTotal(annual: boolean): number {\n if (annual) {\n return Math.abs(this.additionalStorage || 0) * this.storageGb.yearlyPrice;\n } else {\n return Math.abs(this.additionalStorage || 0) * this.storageGb.monthlyPrice;\n }\n }\n\n seatTotal(annual: boolean): number {\n if (this.plans[this.plan].noAdditionalSeats) {\n return 0;\n }\n\n if (annual) {\n return this.plans[this.plan].annualSeatPrice * Math.abs(this.additionalSeats || 0);\n } else {\n return this.plans[this.plan].monthlySeatPrice * Math.abs(this.additionalSeats || 0);\n }\n }\n\n baseTotal(annual: boolean): number {\n if (annual) {\n return Math.abs(this.plans[this.plan].annualBasePrice || 0);\n } else {\n return Math.abs(this.plans[this.plan].monthlyBasePrice || 0);\n }\n }\n\n premiumAccessTotal(annual: boolean): number {\n if (this.plans[this.plan].canBuyPremiumAccessAddon && this.premiumAccessAddon) {\n if (annual) {\n return 40;\n }\n }\n return 0;\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 get total(): number {\n const annual = this.interval === 'year';\n return this.baseTotal(annual) + this.seatTotal(annual) + this.additionalStorageTotal(annual) +\n this.premiumAccessTotal(annual);\n }\n\n get createOrganization() {\n return this.organizationId == null;\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';\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\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) { }\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 const importer = this.importService.getImporter(this.format, this.organizationId != null);\n if (importer === null) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFormat'));\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 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 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 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\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 error(error: Error) {\n this.analytics.eventTrack.next({\n action: 'Import Data Failed',\n properties: { label: this.format },\n });\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'), error.message);\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","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 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","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 === '') {\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","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) {\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","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 === '') {\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 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","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: Array> = [];\n allCiphers.forEach((c) => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '') {\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","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: Array> = [];\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 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://twofactorauth.org/api/v1/data.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.tfa && service.software && 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","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","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","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 { 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","export abstract class SettingsService {\n clearCache: () => void;\n getEquivalentDomains: () => Promise;\n setEquivalentDomains: (equivalentDomains: string[][]) => Promise;\n clear: (userId: string) => Promise;\n}\n","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","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} 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';\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) {\n super(authService, router, platformUtilsService, i18nService, storageService, stateService);\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 invite = await this.stateService.get('orgInvitation');\n if (invite != null) {\n this.router.navigate(['accept-organization'], { queryParams: invite });\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","import {\n Component,\n ComponentFactoryResolver,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { Router } 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 }) 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) {\n super(authService, router, i18nService, apiService, platformUtilsService, window, environmentService,\n stateService, storageService);\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 invite = await this.stateService.get('orgInvitation');\n if (invite != null) {\n this.router.navigate(['accept-organization'], { queryParams: invite });\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","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","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';\n\n@Component({\n selector: 'app-register',\n templateUrl: 'register.component.html',\n})\nexport class RegisterComponent extends BaseRegisterComponent {\n showCreateOrgMessage = false;\n showTerms = true;\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 this.showTerms = !platformUtilsService.isSelfHost();\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 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.stateService.save('loginRedirect',\n { route: '/settings/create-organization', qParams: { plan: qParams.org } });\n }\n if (qParams.layout != null) {\n this.layout = qParams.layout;\n }\n if (qParams.reference != null) {\n this.referenceId = qParams.reference;\n } else {\n this.referenceId = ('; ' + document.cookie).split('; reference=').pop().split(';').shift();\n }\n if (this.referenceId === '') {\n this.referenceId = 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","export enum KdfType {\n PBKDF2_SHA256 = 0,\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","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","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\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) {\n super(router, i18nService, platformUtilsService, messagingService, userService, cryptoService,\n storageService, vaultTimeoutService, environmentService, stateService);\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","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","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","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","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","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","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","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","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","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 { ToasterService } from 'angular2-toaster';\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 { 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';\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) groupingsComponent: GroupingsComponent;\n @ViewChild(CiphersComponent) ciphersComponent: CiphersComponent;\n @ViewChild(OrganizationsComponent) organizationsComponent: OrganizationsComponent;\n @ViewChild('attachments', { read: ViewContainerRef }) attachmentsModalRef: ViewContainerRef;\n @ViewChild('folderAddEdit', { read: ViewContainerRef }) folderAddEditModalRef: ViewContainerRef;\n @ViewChild('cipherAddEdit', { read: ViewContainerRef }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('share', { read: ViewContainerRef }) shareModalRef: ViewContainerRef;\n @ViewChild('collections', { read: ViewContainerRef }) collectionsModalRef: ViewContainerRef;\n @ViewChild('bulkDeleteTemplate', { read: ViewContainerRef }) bulkDeleteModalRef: ViewContainerRef;\n @ViewChild('bulkRestoreTemplate', { read: ViewContainerRef }) bulkRestoreModalRef: ViewContainerRef;\n @ViewChild('bulkMoveTemplate', { read: ViewContainerRef }) bulkMoveModalRef: ViewContainerRef;\n @ViewChild('bulkShareTemplate', { read: ViewContainerRef }) bulkShareModalRef: ViewContainerRef;\n @ViewChild('updateKeyTemplate', { read: ViewContainerRef }) 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 private 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 toasterService: ToasterService,\n private broadcasterService: BroadcasterService, 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 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.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 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","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 { 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 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","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","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","import {\n Component,\n ComponentFactoryResolver,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ModalComponent } from '../modal.component';\nimport { DeauthorizeSessionsComponent } from './deauthorize-sessions.component';\nimport { DeleteAccountComponent } from './delete-account.component';\nimport { PurgeVaultComponent } from './purge-vault.component';\n\n@Component({\n selector: 'app-account',\n templateUrl: 'account.component.html',\n})\nexport class AccountComponent {\n @ViewChild('deauthorizeSessionsTemplate', { read: ViewContainerRef }) deauthModalRef: ViewContainerRef;\n @ViewChild('purgeVaultTemplate', { read: ViewContainerRef }) purgeModalRef: ViewContainerRef;\n @ViewChild('deleteAccountTemplate', { read: ViewContainerRef }) deleteModalRef: ViewContainerRef;\n\n private modal: ModalComponent = null;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver) { }\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","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","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","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","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","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 total(): number {\n return this.additionalStorageTotal + this.premiumPrice;\n }\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 }) 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","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) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent) 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","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","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) 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","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","import {\n Component,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\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) 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' || qParams.plan === 'teams' || qParams.plan === 'enterprise') {\n this.orgPlansComponent.plan = qParams.plan;\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\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","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 }) 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","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","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 { 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) {\n super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, totpService, passwordGenerationService, messagingService,\n eventService);\n }\n\n protected allowOwnershipAssignment() {\n if (this.ownershipOptions != null && this.ownershipOptions.length > 1) {\n if (this.organization != null) {\n return this.cloneMode && this.organization.isAdmin;\n } else {\n return !this.editMode || this.cloneMode;\n }\n }\n return false;\n }\n\n protected loadCollections() {\n if (!this.organization.isAdmin) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected async loadCipher() {\n if (!this.organization.isAdmin) {\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.isAdmin) {\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.isAdmin || 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.isAdmin) {\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 { 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 NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\n\nimport { EnvironmentService } from 'jslib/abstractions/environment.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\n private organizationId: string;\n private enterpriseUrl: string;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private broadcasterService: BroadcasterService, private environmentService: EnvironmentService,\n private ngZone: NgZone) { }\n\n ngOnInit() {\n this.enterpriseUrl = 'https://enterprise.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 + '/enterprise';\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\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","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.isAdmin) {\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 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';\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) {\n super(searchService, analytics, toasterService, i18nService, platformUtilsService,\n cipherService, eventService);\n }\n\n async load(filter: (cipher: CipherView) => boolean = null) {\n if (!this.organization.isAdmin) {\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.isAdmin) {\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.isAdmin) {\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 checkCipher(c: CipherView) {\n // do nothing\n }\n\n events(c: CipherView) {\n this.onEventsClicked.emit(c);\n }\n\n protected deleteCipher(id: string) {\n if (!this.organization.isAdmin) {\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.isAdmin && c.hasOldAttachments;\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) groupingsComponent: GroupingsComponent;\n @ViewChild(CiphersComponent) ciphersComponent: CiphersComponent;\n @ViewChild('attachments', { read: ViewContainerRef }) attachmentsModalRef: ViewContainerRef;\n @ViewChild('cipherAddEdit', { read: ViewContainerRef }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('collections', { read: ViewContainerRef }) collectionsModalRef: ViewContainerRef;\n @ViewChild('eventsTemplate', { read: ViewContainerRef }) eventsModalRef: ViewContainerRef;\n\n organization: Organization;\n collectionId: string = null;\n type: CipherType = null;\n deleted: boolean = false;\n\n private 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.isAdmin) {\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.isAdmin) {\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.isAdmin) {\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.isAdmin) {\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","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","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\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 });\n }\n\n upgradeOrganization() {\n this.messagingService.send('upgradeOrganization', { organizationId: this.organization.id });\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';\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 constructor(i18nService: I18nService, analytics: Angulartics2,\n toasterService: ToasterService, importService: ImportService,\n router: Router, private route: ActivatedRoute) {\n super(i18nService, analytics, toasterService, importService, router);\n }\n\n 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 }\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 organizationId: string;\n\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 { 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 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 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 {\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 { 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 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 {\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 { 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 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 await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\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","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 }) addEditModalRef: ViewContainerRef;\n @ViewChild('usersTemplate', { read: ViewContainerRef }) 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.isAdmin) {\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.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.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","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","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","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 }) addEditModalRef: ViewContainerRef;\n @ViewChild('usersTemplate', { read: ViewContainerRef }) 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.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.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","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 }) addEditModalRef: ViewContainerRef;\n @ViewChild('groupsTemplate', { read: ViewContainerRef }) groupsModalRef: ViewContainerRef;\n @ViewChild('eventsTemplate', { read: ViewContainerRef }) eventsModalRef: ViewContainerRef;\n @ViewChild('confirmTemplate', { read: ViewContainerRef }) 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.isAdmin) {\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.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.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","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 { 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 }) editModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n policies: any[];\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) {\n this.policies = [\n {\n name: i18nService.t('twoStepLogin'),\n description: i18nService.t('twoStepLoginPolicyDesc'),\n type: PolicyType.TwoFactorAuthentication,\n enabled: false,\n },\n {\n name: i18nService.t('masterPass'),\n description: i18nService.t('masterPassPolicyDesc'),\n type: PolicyType.MasterPassword,\n enabled: false,\n },\n {\n name: i18nService.t('passwordGenerator'),\n description: i18nService.t('passwordGeneratorPolicyDesc'),\n type: PolicyType.PasswordGenerator,\n enabled: false,\n },\n ];\n }\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 await this.load();\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.onSavedPolicy.subscribe(() => {\n this.modal.close();\n this.load();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\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","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 { 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 { PurgeVaultComponent } from '../../settings/purge-vault.component';\nimport { TaxInfoComponent } from '../../settings/tax-info.component';\nimport { ApiKeyComponent } from './api-key.component';\nimport { DeleteOrganizationComponent } from './delete-organization.component';\nimport { RotateApiKeyComponent } from './rotate-api-key.component';\n\n@Component({\n selector: 'app-org-account',\n templateUrl: 'account.component.html',\n})\nexport class AccountComponent {\n @ViewChild('deleteOrganizationTemplate', { read: ViewContainerRef }) deleteModalRef: ViewContainerRef;\n @ViewChild('purgeOrganizationTemplate', { read: ViewContainerRef }) purgeModalRef: ViewContainerRef;\n @ViewChild('apiKeyTemplate', { read: ViewContainerRef }) apiKeyModalRef: ViewContainerRef;\n @ViewChild('rotateApiKeyTemplate', { read: ViewContainerRef }) rotateApiKeyModalRef: ViewContainerRef;\n @ViewChild(TaxInfoComponent) taxInfo: TaxInfoComponent;\n\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\n async ngOnInit() {\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 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.organizationId = this.organizationId;\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(RotateApiKeyComponent, this.rotateApiKeyModalRef);\n childComponent.organizationId = this.organizationId;\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\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 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","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';\nimport { TokenService } from 'jslib/abstractions/token.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 tokenService: TokenService, private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private messagingService: MessagingService, 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://bitwarden.com/contact');\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.planType === PlanType.EnterpriseMonthly ||\n this.sub.planType === PlanType.TeamsMonthly;\n return monthly ? 'month' : 'year';\n }\n\n get storageGbPrice() {\n return this.billingInterval === 'month' ? 0.5 : 4;\n }\n\n get seatPrice() {\n switch (this.sub.planType) {\n case PlanType.EnterpriseMonthly:\n return 4;\n case PlanType.EnterpriseAnnually:\n return 36;\n case PlanType.TeamsMonthly:\n return 2.5;\n case PlanType.TeamsAnnually:\n return 24;\n default:\n return 0;\n }\n }\n\n get canAdjustSeats() {\n return this.sub.planType === PlanType.EnterpriseMonthly ||\n this.sub.planType === PlanType.EnterpriseAnnually ||\n this.sub.planType === PlanType.TeamsMonthly || this.sub.planType === PlanType.TeamsAnnually;\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","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","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 = 555;","import * as jq from 'jquery';\nimport Swal from 'sweetalert2/src/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\" && (message.text.indexOf(\"this.subtle\") != -1 || message.text.indexOf(\"importKey\") != -1)) {\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 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","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","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","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","
\n
\n \n {{text}}\n \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","\n","
\n
\n
\n © {{year}}, Bitwarden Inc.\n
\n
\n
\n {{'versionNumber' | i18n : version}}\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';\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 \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 { 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","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 { 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 { 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 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-delete',\n templateUrl: 'bulk-delete.component.html',\n})\nexport class BulkDeleteComponent {\n @Input() cipherIds: string[] = [];\n @Input() permanent: boolean = false;\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\n async submit() {\n this.formPromise = this.permanent ? this.cipherService.deleteManyWithServer(this.cipherIds) :\n this.cipherService.softDeleteManyWithServer(this.cipherIds);\n await this.formPromise;\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","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","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","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","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","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","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","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","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class EmailTokenRequest extends PasswordVerificationRequest {\n newEmail: string;\n masterPasswordHash: 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 { 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 { CipherString } from 'jslib/models/domain/cipherString';\nimport { MasterPasswordPolicyOptions } from 'jslib/models/domain/masterPasswordPolicyOptions';\nimport { SymmetricCryptoKey } from 'jslib/models/domain/symmetricCryptoKey';\n\nimport { CipherWithIdRequest } from 'jslib/models/request/cipherWithIdRequest';\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 implements OnInit {\n currentMasterPassword: string;\n newMasterPassword: string;\n confirmNewMasterPassword: string;\n formPromise: Promise;\n masterPasswordScore: number;\n rotateEncKey = false;\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n\n private masterPasswordStrengthTimeout: any;\n private email: string;\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, private passwordGenerationService: PasswordGenerationService,\n private platformUtilsService: PlatformUtilsService, private folderService: FolderService,\n private cipherService: CipherService, private syncService: SyncService,\n private 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 const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.toasterService.popAsync('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n if (this.currentMasterPassword == null || this.currentMasterPassword === '' ||\n this.newMasterPassword == null || this.newMasterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n if (this.newMasterPassword.length < 8) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassLength'));\n return;\n }\n if (this.newMasterPassword !== this.confirmNewMasterPassword) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassDoesntMatch'));\n return;\n }\n\n const strengthResult = this.passwordGenerationService.passwordStrength(this.newMasterPassword,\n this.getPasswordStrengthUserInput());\n\n if (this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(\n strengthResult.score,\n this.newMasterPassword,\n this.enforcedPolicyOptions)) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPasswordPolicyRequirementsNotMet'));\n return;\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;\n }\n }\n\n if (this.rotateEncKey) {\n await this.syncService.fullSync(true);\n }\n\n const request = new PasswordRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.currentMasterPassword, null);\n const email = await this.userService.getEmail();\n const kdf = await this.userService.getKdf();\n const kdfIterations = await this.userService.getKdfIterations();\n const newKey = await this.cryptoService.makeKey(this.newMasterPassword, email.trim().toLowerCase(),\n kdf, kdfIterations);\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(this.newMasterPassword, newKey);\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\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 await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Changed Password' });\n this.toasterService.popAsync('success', this.i18nService.t('masterPasswordChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch { }\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.newMasterPassword,\n this.getPasswordStrengthUserInput());\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\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('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 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 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}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class PasswordRequest extends PasswordVerificationRequest {\n newMasterPasswordHash: 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","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","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","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","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","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.print();\n w.close();\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","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","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","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 { 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","
\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","
\n
\n \n

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

\n \n \n \n \n
\n
\n","
\n
\n \n \n {{'licenseFileDesc' | i18n : (!organizationId ? 'bitwarden_premium_license.json' : 'bitwarden_organization_license.json')}}\n
\n \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","\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 \n
\n
\n \n \n
\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 : plans[plan].baseSeats : (plans[plan].seatPrice | currency:'$')}}\n
\n
\n
\n
\n \n \n {{'additionalStorageIntervalDesc' | i18n : '1 GB' : (storageGb.price | 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 \n \n
\n
\n
\n {{'total' | i18n}}: {{total | currency:'USD $'}} /{{interval | i18n}}\n
\n \n {{'paymentChargedWithTrial' | i18n : (interval | i18n) }}\n

{{'paymentInformation' | i18n}}

\n \n \n
\n \n \n \n \n {{'paymentCharged' | i18n : (interval | i18n) }}\n
\n
\n \n \n
\n
\n","export enum PlanType {\n Free = 0,\n FamiliesAnnually = 1,\n TeamsMonthly = 2,\n TeamsAnnually = 3,\n EnterpriseMonthly = 4,\n EnterpriseAnnually = 5,\n Custom = 6,\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 {\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 { 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","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 { 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 { 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): Promise {\n const view = await this.decryptObj(new AttachmentView(this), {\n fileName: null,\n }, orgId);\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);\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 { 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 { 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';\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): 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);\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';\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): Promise {\n return this.decryptObj(new FieldView(this), {\n name: null,\n value: null,\n }, orgId);\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';\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): 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);\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';\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): Promise {\n const view = await this.decryptObj(new LoginView(this), {\n username: null,\n password: null,\n totp: null,\n }, orgId);\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);\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';\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): Promise {\n return this.decryptObj(new LoginUriView(this), {\n uri: null,\n }, orgId);\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","import { PasswordHistoryData } from '../data/passwordHistoryData';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\n\nimport { PasswordHistoryView } from '../view/passwordHistoryView';\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): Promise {\n return this.decryptObj(new PasswordHistoryView(this), {\n password: null,\n }, orgId);\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 { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteData } from '../data/secureNoteData';\n\nimport Domain from './domainBase';\n\nimport { SecureNoteView } from '../view/secureNoteView';\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): 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 { 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 { 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 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.isAdmin && this.showFixOldAttachments(attachment)) {\n await super.reuploadCipherAttachment(attachment, true);\n }\n }\n\n protected async loadCipher() {\n if (!this.organization.isAdmin) {\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.isAdmin);\n }\n\n protected deleteCipherAttachment(attachmentId: string) {\n if (!this.organization.isAdmin) {\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.isAdmin;\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.isAdmin) {\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.isAdmin) {\n return super.loadCipherCollections();\n }\n return this.collectionIds;\n }\n\n protected loadCollections() {\n if (!this.organization.isAdmin) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected saveCollections() {\n if (this.organization.isAdmin) {\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 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","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 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","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';\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 access: 'all' | 'selected' = 'selected';\n collections: CollectionView[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n organizationUserType = OrganizationUserType;\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.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 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 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.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","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","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","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 @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 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","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\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 organizationId: string;\n\n masterPassword: string;\n formPromise: Promise;\n clientId: string;\n clientSecret: string;\n scope: string;\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.postOrganizationApiKey(this.organizationId, request);\n const response = await this.formPromise;\n this.clientSecret = response.apiKey;\n this.clientId = 'organization.' + this.organizationId;\n this.scope = 'api.organization';\n this.analytics.eventTrack.next({ action: 'Viewed Organization API Key' });\n } catch { }\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 { 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","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\nimport { ApiKeyResponse } from 'jslib/models/response/apiKeyResponse';\n\n@Component({\n selector: 'app-rotate-api-key',\n templateUrl: 'rotate-api-key.component.html',\n})\nexport class RotateApiKeyComponent {\n organizationId: string;\n\n masterPassword: string;\n formPromise: Promise;\n clientId: string;\n clientSecret: string;\n scope: string;\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.postOrganizationRotateApiKey(this.organizationId, request);\n const response = await this.formPromise;\n this.clientSecret = response.apiKey;\n this.clientId = 'organization.' + this.organizationId;\n this.scope = 'api.organization';\n this.analytics.eventTrack.next({ action: 'Rotated Organization API Key' });\n } catch { }\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-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\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","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","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) 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","import {\n Directive,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n Renderer2,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NgControl,\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 { 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 { 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 { 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 { 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 { PolicyResponse } from '../models/response/policyResponse';\nimport { PreloginResponse } from '../models/response/preloginResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { SelectionReadOnlyResponse } from '../models/response/selectionReadOnlyResponse';\nimport { SubscriptionResponse } from '../models/response/subscriptionResponse';\nimport { SyncResponse } from '../models/response/syncResponse';\nimport { TaxInfoResponse } from '../models/response/taxInfoResponse';\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\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(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 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 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 // 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 // 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 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 putRestoreCipher(id: string): Promise {\n return this.send('PUT', '/ciphers/' + id + '/restore', null, true, false);\n }\n\n putRestoreCipherAdmin(id: string): Promise {\n return this.send('PUT', '/ciphers/' + id + '/restore-admin', null, true, false);\n }\n\n putRestoreManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send('PUT', '/ciphers/restore', request, true, false);\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 // 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 async postImportDirectory(organizationId: string, request: ImportDirectoryRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/import', request, true, false);\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 // 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 // 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 private async send(method: 'GET' | 'POST' | 'PUT' | 'DELETE', path: string, body: any,\n authed: boolean, hasResponse: boolean): Promise {\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(this.apiBaseUrl + 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);\n return Promise.reject(error);\n }\n }\n\n private async handleError(response: Response, tokenError: boolean): Promise {\n if ((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 }\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);\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.device !== DeviceType.SafariExtension && (!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","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 { 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';\n\nimport { PlanType } from '../../enums/planType';\n\nexport class OrganizationResponse extends BaseResponse {\n id: 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: string;\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.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 this.plan = this.getResponseProperty('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 { 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 { 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 { 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 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 }\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\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: Array> = [];\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[]): 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 let defaultMatch = await this.storageService.get(ConstantsService.defaultUriMatch);\n if (defaultMatch == null) {\n defaultMatch = UriMatchType.Domain;\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 const ciphers = await this.getAllDecryptedForUrl(url);\n if (ciphers.length === 0) {\n return null;\n }\n\n const sortedCiphers = ciphers.sort(this.sortCiphersByLastUsed);\n return sortedCiphers[0];\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 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: Array> = [];\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: Array> = [];\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(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 clearDeletedDate = (cipherId: string) => {\n if (ciphers[cipherId] == null) {\n return;\n }\n ciphers[cipherId].deletedDate = null;\n };\n\n if (typeof id === 'string') {\n clearDeletedDate(id);\n } else {\n (id as string[]).forEach(clearDeletedDate);\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async restoreWithServer(id: string): Promise {\n await this.apiService.putRestoreCipher(id);\n await this.restore(id);\n }\n\n async restoreManyWithServer(ids: string[]): Promise {\n await this.apiService.putRestoreManyCiphers(new CipherBulkRestoreRequest(ids));\n await this.restore(ids);\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","/**\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: Array> = [];\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: Array> = [];\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: Array>, 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: Array>, 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 { 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) { }\n\n async setKey(key: SymmetricCryptoKey): Promise {\n this.key = key;\n\n const option = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n if (option != null) {\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.hkdfExpand(keyFingerprint, Utils.fromUtf8ToArray(userId), 32);\n return this.hashPhrase(userFingerprint.buffer);\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 if (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 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): Promise<[SymmetricCryptoKey, CipherString]> {\n const encKey = await this.getEncKey();\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 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 // tslint:disable-next-line\n console.error('mac required.');\n return null;\n }\n\n if (theKey.encType !== encType) {\n // tslint:disable-next-line\n console.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 // tslint:disable-next-line\n console.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 // tslint:disable-next-line\n console.error('mac failed.');\n return null;\n }\n }\n\n return await this.cryptoFunctionService.aesDecrypt(data, iv, theKey.encKey);\n }\n\n private 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 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 newKey.set(await this.hkdfExpand(key.key, Utils.fromUtf8ToArray('enc'), 32));\n newKey.set(await this.hkdfExpand(key.key, Utils.fromUtf8ToArray('mac'), 32), 32);\n return new SymmetricCryptoKey(newKey.buffer);\n }\n\n // ref: https://tools.ietf.org/html/rfc5869\n private async hkdfExpand(prk: ArrayBuffer, info: Uint8Array, size: number) {\n const hashLen = 32; // sha256\n const okm = new Uint8Array(size);\n let previousT = new Uint8Array(0);\n const n = Math.ceil(size / hashLen);\n for (let i = 0; i < n; i++) {\n const t = new Uint8Array(previousT.length + info.length + 1);\n t.set(previousT);\n t.set(info, previousT.length);\n t.set([i + 1], t.length - 1);\n previousT = new Uint8Array(await this.cryptoFunctionService.hmac(t.buffer, prk, 'sha256'));\n okm.set(previousT, i * hashLen);\n }\n return okm;\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: Array> = [];\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: Array> = [];\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 { 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 { 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 ['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 ['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 ['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[] = 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 { 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';\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} from '../models/response/notificationResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\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 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 const needsSyncResult = await this.needsSyncing(forceSync);\n const needsSync = needsSyncResult[0];\n const skipped = needsSyncResult[1];\n\n if (skipped) {\n return this.syncCompleted(false);\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.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 // 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, false];\n }\n\n const lastSync = await this.getLastSync();\n if (lastSync == null || lastSync.getTime() === 0) {\n return [true, false];\n }\n\n try {\n const response = await this.apiService.getAccountRevisionDate();\n if (new Date(response) <= lastSync) {\n return [false, false];\n }\n return [true, false];\n } catch (e) {\n return [false, true];\n }\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 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 { 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 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\n private inited = false;\n\n constructor(private cipherService: CipherService, private folderService: FolderService,\n private collectionService: CollectionService, private cryptoService: CryptoService,\n private 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.checkVaultTimeout();\n setInterval(() => this.checkVaultTimeout(), 10 * 1000); // check every 10 seconds\n }\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 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 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 clear(): Promise {\n this.pinProtectedKey = null;\n return this.storageService.remove(ConstantsService.protectedPin);\n }\n}\n","import { Cipher } from './cipher';\n\nimport { CipherView } from '../view/cipherView';\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) {\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\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) {\n this.id = o.id;\n super.build(o);\n }\n}\n","import { Folder } from './folder';\n\nimport { FolderView } from '../view/folderView';\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) {\n this.id = o.id;\n super.build(o);\n }\n}\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","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']);\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 { 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 { OrganizationUserType } from 'jslib/enums/organizationUserType';\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.parent.params.organizationId);\n const allowedTypes = route.data == null ? null : route.data.allowedTypes as OrganizationUserType[];\n if (allowedTypes == null || allowedTypes.indexOf(org.type) === -1) {\n this.router.navigate(['/organizations', org.id]);\n return false;\n }\n\n return true;\n }\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 { 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 { 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 { 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 { ApiKeyComponent as OrgApiKeyComponent } from './organizations/settings/api-key.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 { RotateApiKeyComponent as OrgRotateApiKeyComponent } from './organizations/settings/rotate-api-key.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 { 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 { 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 { 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 { 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 { 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 { registerLocaleData } 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 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(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([Angulartics2GoogleAnalytics], {\n pageTracking: {\n clearQueryParams: true,\n },\n }),\n ToasterModule.forRoot(),\n InfiniteScrollModule,\n DragDropModule,\n ],\n declarations: [\n A11yTitleDirective,\n AcceptOrganizationComponent,\n AccountComponent,\n AddCreditComponent,\n AddEditComponent,\n AdjustPaymentComponent,\n AdjustSeatsComponent,\n AdjustStorageComponent,\n ApiActionDirective,\n AppComponent,\n AttachmentsComponent,\n AutofocusDirective,\n AvatarComponent,\n BlurClickDirective,\n BoxRowDirective,\n BreachReportComponent,\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 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 LockComponent,\n LoginComponent,\n ModalComponent,\n NavbarComponent,\n OptionsComponent,\n OrgAccountComponent,\n OrgAddEditComponent,\n OrgApiKeyComponent,\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 OrgRotateApiKeyComponent,\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 SettingsComponent,\n ShareComponent,\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 AttachmentsComponent,\n BulkDeleteComponent,\n BulkMoveComponent,\n BulkRestoreComponent,\n BulkShareComponent,\n CollectionsComponent,\n DeauthorizeSessionsComponent,\n DeleteAccountComponent,\n DeleteOrganizationComponent,\n FolderAddEditComponent,\n ModalComponent,\n OrgAddEditComponent,\n OrgApiKeyComponent,\n OrgAttachmentsComponent,\n OrgCollectionAddEditComponent,\n OrgCollectionsComponent,\n OrgEntityEventsComponent,\n OrgEntityUsersComponent,\n OrgGroupAddEditComponent,\n OrgPolicyEditComponent,\n OrgRotateApiKeyComponent,\n OrgUserAddEditComponent,\n OrgUserConfirmComponent,\n OrgUserGroupsComponent,\n PasswordGeneratorHistoryComponent,\n PurgeVaultComponent,\n ShareComponent,\n TwoFactorAuthenticatorComponent,\n TwoFactorDuoComponent,\n TwoFactorEmailComponent,\n TwoFactorOptionsComponent,\n TwoFactorRecoveryComponent,\n TwoFactorU2fComponent,\n TwoFactorYubiKeyComponent,\n UpdateKeyComponent,\n ],\n providers: [],\n bootstrap: [AppComponent],\n})\nexport class AppModule { }\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","\n
\n © {{year}}, Bitwarden Inc.\n
{{'versionNumber' | i18n : version}}\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","import {\n Input,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { AuthResult } from '../../models/domain/authResult';\n\nimport { AuthService } from '../../abstractions/auth.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 { ConstantsService } from '../../services/constants.service';\n\nimport { Utils } from '../../misc/utils';\n\nconst Keys = {\n rememberedEmail: 'rememberedEmail',\n rememberEmail: 'rememberEmail',\n};\n\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 private storageService: StorageService, protected stateService: 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","export function getDomain(host: string): string | null {\n return null;\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 {\n EventEmitter,\n Input,\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\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 }) 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';\nimport { Router } from '@angular/router';\n\nimport { DeviceType } from '../../enums/deviceType';\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nimport { TwoFactorEmailRequest } from '../../models/request/twoFactorEmailRequest';\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 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) {\n this.u2fSupported = this.platformUtilsService.supportsU2f(win);\n }\n\n async ngOnInit() {\n if (this.authService.email == null || this.authService.masterPasswordHash == null ||\n this.authService.twoFactorProvidersData == null) {\n this.router.navigate([this.loginRoute]);\n return;\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 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 (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute]);\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","import { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class AuthResult {\n twoFactor: boolean = false;\n twoFactorProviders: Map = null;\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 token: string;\n provider: TwoFactorProviderType;\n remember: boolean;\n device?: DeviceRequest;\n\n constructor(email: string, masterPasswordHash: string, provider: TwoFactorProviderType,\n token: string, remember: boolean, device?: DeviceRequest) {\n this.email = email;\n this.masterPasswordHash = masterPasswordHash;\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 grant_type: 'password',\n username: this.email,\n password: this.masterPasswordHash,\n scope: 'api offline_access',\n client_id: clientId,\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","
\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 it for a\n 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 {{'cancel' | i18n}}\n \n
\n \n {{'submitAgreePolicies' | i18n}}\n {{'termsOfService' | i18n}},\n {{'privacyPolicy' | i18n}}\n \n
\n
\n
\n
\n
\n
\n
\n
\n","import { Router } from '@angular/router';\n\nimport { KeysRequest } from '../../models/request/keysRequest';\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 referenceId: string;\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\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 (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 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.isEdge() || 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.referenceId);\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';\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 referenceId: string;\n\n constructor(email: string, name: string, masterPasswordHash: string, masterPasswordHint: string, key: string,\n kdf: KdfType, kdfIterations: number, referenceId: string) {\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.referenceId = referenceId;\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 { 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","
\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 { OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\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 { 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\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\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.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 const storedKeyHash = await this.cryptoService.getKeyHash();\n\n if (storedKeyHash != null && keyHash != null && storedKeyHash === keyHash) {\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 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 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","
\n
\n \"Bitwarden\"\n

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

\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","
\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","export class OrganizationUserAcceptRequest {\n token: string;\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 { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class TwoFactorRecoveryRequest extends PasswordVerificationRequest {\n recoveryCode: string;\n email: string;\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","export class DeleteRecoverRequest {\n email: string;\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","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","\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 {{'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\n\n\n\n","
\n
\n {{'verifyEmail' | i18n}}\n
\n
\n

{{'verifyEmailDesc' | i18n}}

\n \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 {\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\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: Array>;\n collections: CollectionView[];\n nestedCollections: Array>;\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","\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 {\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 {\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\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","export class AttachmentRequest {\n fileName: string;\n key: string;\n}\n","import {\n CdkDragDrop,\n moveItemInArray,\n} from '@angular/cdk/drag-drop';\nimport {\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 { 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 { 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\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\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 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 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 }\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 }\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.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 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\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 {\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\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 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\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 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\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","\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

{{'dangerZone' | i18n}}

\n
\n
\n
\n

{{'dangerZoneDesc' | i18n}}

\n \n \n \n
\n
\n\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","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","
\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 { EmailTokenRequest } from './emailTokenRequest';\n\nexport class EmailRequest extends EmailTokenRequest {\n newMasterPasswordHash: string;\n token: string;\n key: string;\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","{{'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 { PasswordRequest } from './passwordRequest';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class KdfRequest extends PasswordRequest {\n kdf: KdfType;\n kdfIterations: number;\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","
\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","export class UpdateDomainsRequest {\n equivalentDomains: string[][];\n excludedGlobalEquivalentDomains: number[];\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 { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorAuthenticatorRequest extends PasswordVerificationRequest {\n token: string;\n key: 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 UpdateTwoFactorDuoRequest extends PasswordVerificationRequest {\n integrationKey: string;\n secretKey: string;\n host: 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","
\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 {{'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
\n {{'total' | i18n}}: {{total | currency:'USD $'}} /{{'year' | i18n}}\n
\n {{'paymentChargedAnnually' | i18n}}\n

{{'paymentInformation' | i18n}}

\n \n \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","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","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","
\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","export class StorageRequest {\n storageGbAdjustment: number;\n}\n","
\n

{{'newOrganization' | i18n}}

\n
\n

{{'newOrganizationDesc' | i18n}}

\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}\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 Use the\n \n FF Password Exporter application to export your passwords to a CSV file.\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
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n
\n","
\n
\n

{{'exportVault' | i18n}}

\n
\n

{{'exportMasterPassword' | i18n}}

\n {{'exportWarningDesc' | i18n}}\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n
\n","import {\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\nexport class ExportComponent {\n @Output() onSaved = new EventEmitter();\n\n formPromise: Promise;\n masterPassword: string;\n format: '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 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 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 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 return this.exportService.getFileName(prefix, this.format);\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","
\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 {\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\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","
\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","
\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 {{c.name}}\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","
\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","
\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 {{c.name}}\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","
\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 {{c.name}}\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","
\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","\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 \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

{{'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","
\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","
\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 { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nexport class GroupRequest {\n name: string;\n accessAll: boolean;\n externalId: string;\n collections: SelectionReadOnlyRequest[] = [];\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 \n \n
\n
\n\n\n\n\n\n","import { OrganizationUserType } from '../../enums/organizationUserType';\n\nimport { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nexport class OrganizationUserInviteRequest {\n emails: string[] = [];\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n}\n","import { OrganizationUserType } from '../../enums/organizationUserType';\n\nimport { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nexport class OrganizationUserUpdateRequest {\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n}\n","export class OrganizationUserUpdateGroupsRequest {\n groupIds: string[] = [];\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","import { PolicyType } from '../../enums/policyType';\n\nexport class PolicyRequest {\n type: PolicyType;\n enabled: boolean;\n data: any;\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

{{'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","export class OrganizationUpdateRequest {\n name: string;\n businessName: string;\n billingEmail: string;\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}}
\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}}
\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","
\n
\n \n

{{'changeBillingPlan' | i18n}}

\n

{{'changeBillingPlanUpgrade' | i18n}}

\n \n \n
\n
\n","
\n
\n \n

{{'downloadLicense' | i18n}}

\n
\n
\n
\n \n \n \n \n
\n \n
\n
\n \n \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","export class SeatRequest {\n seatAdjustment: number;\n}\n","
\n
\n
\n
\n

{{title}}

\n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n \n
\n \n
\n
\n
\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","
\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

{{'newAttachment' | i18n}}

\n \n \n {{'maxFileSize' | i18n}}\n
\n
\n \n \n
\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","
\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","
\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","
\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","
\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","
\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","
\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","
\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","
\n
\n
\n
\n

{{title}}

\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
\n

{{'apiKeyDesc' | 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 client_credentials\n

\n
\n
\n
\n \n \n
\n
\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","
\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","
\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 \n \n \n \n
\n
\n
\n
\n \n \n
\n
\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","
\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
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\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","
\n
\n
\n
\n

{{'rotateApiKey' | i18n}}

\n \n
\n
\n

{{'apiKeyRotateDesc' | 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 client_credentials\n

\n
\n
\n
\n \n \n
\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 {{'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","
\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","
\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","
\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","
\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","
\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","
\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","
\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","
\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","
\n
\n
\n
\n

{{'twoStepOptions' | i18n}}

\n \n
\n \n
\n \n
\n
\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","
\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","
\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","
\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","\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 { 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 { 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 { 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 cryptoService = new CryptoService(storageService,\n platformUtilsService.isDev() ? storageService : secureStorageService, cryptoFunctionService);\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, platformUtilsService);\nconst policyService = new PolicyService(userService, storageService);\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 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);\nconst exportService = new ExportService(folderService, cipherService, apiService);\nconst importService = new ImportService(cipherService, folderService, apiService, i18nService, collectionService);\nconst notificationsService = new NotificationsService(userService, syncService, appIdService,\n apiService, vaultTimeoutService, async () => messagingService.send('logout', { expired: true }));\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.notificationsUrl = environmentService.baseUrl + '/notifications';\n environmentService.enterpriseUrl = environmentService.baseUrl + '/enterprise';\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 {\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]);\n private localStorageStartsWithKeys = ['twoFactorToken_', ConstantsService.collapsedGroupingsKey + '_'];\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 {\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 {\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 {\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","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 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 { 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\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 { 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 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.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\nexport class IdentityTokenResponse extends BaseResponse {\n accessToken: string;\n expiresIn: number;\n refreshToken: string;\n tokenType: string;\n\n privateKey: string;\n key: string;\n twoFactorToken: string;\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.privateKey = this.getResponseProperty('PrivateKey');\n this.key = this.getResponseProperty('Key');\n this.twoFactorToken = this.getResponseProperty('TwoFactorToken');\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 { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\n\nimport { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nexport class OrganizationUserResponse extends BaseResponse {\n id: string;\n userId: string;\n type: OrganizationUserType;\n status: OrganizationUserStatusType;\n accessAll: boolean;\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.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';\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 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\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.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 }\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';\nimport { CipherResponse } from './cipherResponse';\nimport { CollectionDetailsResponse } from './collectionResponse';\nimport { DomainsResponse } from './domainsResponse';\nimport { FolderResponse } from './folderResponse';\nimport { PolicyResponse } from './policyResponse';\nimport { ProfileResponse } from './profileResponse';\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\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}\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 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 CipherBulkDeleteRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\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","export class TreeNode {\n parent: T;\n node: T;\n children: Array> = [];\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 { 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","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","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 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';\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 selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\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.selfHost = response.selfHost;\n this.usersGetPremium = response.usersGetPremium;\n this.seats = response.seats;\n this.maxCollections = response.maxCollections;\n this.maxStorageGb = response.maxStorageGb;\n }\n}\n","import { OrganizationData } from '../data/organizationData';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\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 selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\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.selfHost = obj.selfHost;\n this.usersGetPremium = obj.usersGetPremium;\n this.seats = obj.seats;\n this.maxCollections = obj.maxCollections;\n this.maxStorageGb = obj.maxStorageGb;\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","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', 'nb', 'nl', 'pl',\n '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/src/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(' Edge/') !== -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 a.target = '_blank';\n a.rel = 'noreferrer noopener';\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 = win.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.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(text: string, title?: string, confirmText?: string, cancelText?: string, type?: string) {\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: text,\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","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","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';\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' = '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;\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 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 async getOrganizationExport(organizationId: string, format: 'csv' | '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.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 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 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 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 { 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 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) {\n this.organizationId = o.organizationId;\n this.folderId = o.folderId;\n this.type = o.type;\n this.name = o.name;\n this.notes = o.notes;\n this.favorite = o.favorite;\n\n if (o.fields != null) {\n this.fields = o.fields.map((f) => new Field(f));\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\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 cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(o?: CardView) {\n if (o == null) {\n return;\n }\n\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 }\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { FieldView } from '../view/fieldView';\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 name: string;\n value: string;\n type: FieldType;\n\n constructor(o?: FieldView) {\n if (o == null) {\n return;\n }\n\n this.name = o.name;\n this.value = o.value;\n this.type = o.type;\n }\n}\n","import { IdentityView } from '../view/identityView';\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 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) {\n if (o == null) {\n return;\n }\n\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 }\n}\n","import { LoginUri } from './loginUri';\n\nimport { LoginView } from '../view/loginView';\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 uris: LoginUri[];\n username: string;\n password: string;\n totp: string;\n\n constructor(o?: LoginView) {\n if (o == null) {\n return;\n }\n\n if (o.uris != null) {\n this.uris = o.uris.map((u) => new LoginUri(u));\n }\n\n this.username = o.username;\n this.password = o.password;\n this.totp = o.totp;\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriView } from '../view/loginUriView';\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 uri: string;\n match: UriMatchType = null;\n\n constructor(o?: LoginUriView) {\n if (o == null) {\n return;\n }\n\n this.uri = o.uri;\n this.match = o.match;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteView } from '../view/secureNoteView';\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 type: SecureNoteType;\n\n constructor(o?: SecureNoteView) {\n if (o == null) {\n return;\n }\n\n this.type = o.type;\n }\n}\n","import { CollectionView } from '../view/collectionView';\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 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) {\n this.organizationId = o.organizationId;\n this.name = o.name;\n this.externalId = o.externalId;\n }\n}\n","import { FolderView } from '../view/folderView';\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 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) {\n this.name = o.name;\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';\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 { 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/onepassword1PifImporter';\nimport { OnePasswordWinCsvImporter } from '../importers/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 { 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: '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 ];\n\n constructor(private cipherService: CipherService, private folderService: FolderService,\n private apiService: ApiService, private i18nService: I18nService,\n private collectionService: CollectionService) { }\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 await this.postImport(importResult, organizationId);\n return null;\n } else {\n return new Error(this.i18nService.t('importFormatError'));\n }\n }\n\n getImporter(format: string, organization = false): Importer {\n const importer = this.getImporterInstance(format);\n if (importer == null) {\n return null;\n }\n importer.organization = organization;\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 '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 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","import { CipherRequest } from './cipherRequest';\nimport { FolderRequest } from './folderRequest';\nimport { KvpRequest } from './kvpRequest';\n\nexport class ImportCiphersRequest {\n ciphers: CipherRequest[] = [];\n folders: FolderRequest[] = [];\n folderRelationships: Array> = [];\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: Array> = [];\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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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 parse(data: string): ImportResult {\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 result;\n }\n\n const groupingsMap = new Map();\n if (this.organization && results.collections != null) {\n 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, result.collections.length);\n result.collections.push(collection);\n }\n });\n } else if (!this.organization && results.folders != null) {\n results.folders.forEach((f: FolderWithId) => {\n const folder = FolderWithId.toView(f);\n if (folder != null) {\n folder.id = null;\n groupingsMap.set(f.id, result.folders.length);\n result.folders.push(folder);\n }\n });\n }\n\n 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 result.folderRelationships.push([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 result.collectionRelationships.push([result.ciphers.length, groupingsMap.get(cId)]);\n }\n });\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return 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 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\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 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\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 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.nameFromUrl(value.hostname), '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.hostname);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return 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): ImportResult {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.data == null) {\n result.success = false;\n return 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 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): ImportResult {\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 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 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): ImportResult {\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 result;\n }\n\n private parseDataCategory(data: string): Array> {\n if (this.isNullOrWhitespace(data) || data.indexOf(Delimiter) === -1) {\n return [];\n }\n const items: Array> = [];\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): ImportResult {\n const doc = this.parseXml(data);\n if (doc == null) {\n this.result.success = false;\n return 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 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 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 === '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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\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 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 { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { CardView } from '../models/view';\n\nconst IgnoredProperties = ['ainfo', 'autosubmit', 'notesplain', 'ps', 'scope', 'tags', 'title', 'uuid'];\n\nexport class OnePasswordWinCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 cipher.notes = this.getValueOrDefault(this.getProp(value, 'notesPlain'), '') + '\\n';\n\n if (!this.isNullOrWhitespace(this.getProp(value, 'number')) &&\n !this.isNullOrWhitespace(this.getProp(value, 'expiry date'))) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n }\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 lowerProp = property.toLowerCase();\n if (cipher.type === CipherType.Login) {\n if (this.isNullOrWhitespace(cipher.login.password) && lowerProp === 'password') {\n cipher.login.password = value[property];\n continue;\n } else if (this.isNullOrWhitespace(cipher.login.username) && lowerProp === 'username') {\n cipher.login.username = value[property];\n continue;\n } else if ((cipher.login.uris == null || cipher.login.uri.length === 0) && lowerProp === 'urls') {\n const urls = value[property].split(this.newLineRegex);\n cipher.login.uris = this.makeUriArray(urls);\n continue;\n }\n } else if (cipher.type === CipherType.Card) {\n if (this.isNullOrWhitespace(cipher.card.number) && lowerProp === 'number') {\n cipher.card.number = value[property];\n cipher.card.brand = this.getCardBrand(this.getProp(value, 'number'));\n continue;\n } else if (this.isNullOrWhitespace(cipher.card.code) && lowerProp === 'verification number') {\n cipher.card.code = value[property];\n continue;\n } else if (this.isNullOrWhitespace(cipher.card.cardholderName) && lowerProp === 'cardholder name') {\n cipher.card.cardholderName = value[property];\n continue;\n } else if (this.isNullOrWhitespace(cipher.card.expiration) && lowerProp === 'expiry date' &&\n value[property].length === 6) {\n cipher.card.expMonth = (value[property] 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 = (value[property] as string).substr(0, 4);\n continue;\n } else if (lowerProp === 'type') {\n // Skip since brand was determined from number above\n continue;\n }\n }\n\n if (IgnoredProperties.indexOf(lowerProp) === -1 && !lowerProp.startsWith('section:') &&\n !lowerProp.startsWith('section ')) {\n if (altUsername == null && lowerProp === 'email') {\n altUsername = value[property];\n }\n this.processKvp(cipher, property, value[property]);\n }\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 result;\n }\n\n private getProp(obj: any, name: string): any {\n return obj[name] || obj[name.toUpperCase()];\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 class View {\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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.length === 0) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return 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 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return 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 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return 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 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): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return 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 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 { 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} 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, private logoutCallback: () => Promise) { }\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 // tslint:disable-next-line\n console.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 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 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","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 { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { SearchService as SearchServiceAbstraction } from '../abstractions/search.service';\n\nimport { CipherType } from '../enums/cipherType';\nimport { DeviceType } from '../enums/deviceType';\nimport { FieldType } from '../enums/fieldType';\nimport { UriMatchType } from '../enums/uriMatchType';\n\nexport class SearchService implements SearchServiceAbstraction {\n private indexing = false;\n private index: lunr.Index = null;\n private onlySearchName = false;\n\n constructor(private cipherService: CipherService, platformUtilsService: PlatformUtilsService) {\n this.onlySearchName = platformUtilsService == null ||\n platformUtilsService.getDevice() === DeviceType.EdgeExtension;\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 // tslint:disable-next-line\n console.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 // tslint:disable-next-line\n console.timeEnd('search indexing');\n }\n\n async searchCiphers(query: string,\n filter: (((cipher: CipherView) => boolean) | (Array<(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 (this.onlySearchName) {\n return false;\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 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 * 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 isEdge: boolean;\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.isEdge = platformUtilsService.isEdge();\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.isEdge || 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 hash(value: string | ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5'): Promise {\n if (((this.isEdge || 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 { 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 { 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 { 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 { 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 { OrganizationUserType } from 'jslib/enums/organizationUserType';\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: '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 { 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 },\n {\n path: '',\n component: UserLayoutComponent,\n canActivate: [AuthGuardService],\n children: [\n { path: 'vault', component: VaultComponent, data: { titleId: 'myVault' } },\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 },\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: { allowedTypes: [OrganizationUserType.Owner, OrganizationUserType.Admin] },\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'import' },\n { path: 'import', component: OrgImportComponent, data: { titleId: 'importData' } },\n { path: 'export', component: OrgExportComponent, data: { titleId: 'exportVault' } },\n {\n path: 'exposed-passwords-report',\n component: OrgExposedPasswordsReportComponent,\n data: { titleId: 'exposedPasswordsReport' },\n },\n {\n path: 'inactive-two-factor-report',\n component: OrgInactiveTwoFactorReportComponent,\n data: { titleId: 'inactive2faReport' },\n },\n {\n path: 'reused-passwords-report',\n component: OrgReusedPasswordsReportComponent,\n data: { titleId: 'reusedPasswordsReport' },\n },\n {\n path: 'unsecured-websites-report',\n component: OrgUnsecuredWebsitesReportComponent,\n data: { titleId: 'unsecuredWebsitesReport' },\n },\n {\n path: 'weak-passwords-report',\n component: OrgWeakPasswordsReportComponent,\n data: { titleId: 'weakPasswordsReport' },\n },\n ],\n },\n {\n path: 'manage',\n component: OrgManageComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n allowedTypes: [\n OrganizationUserType.Owner,\n OrganizationUserType.Admin,\n OrganizationUserType.Manager,\n ],\n },\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'people' },\n { path: 'collections', component: OrgManageCollectionsComponent, data: { titleId: 'collections' } },\n { path: 'events', component: OrgEventsComponent, data: { titleId: 'eventLogs' } },\n { path: 'groups', component: OrgGroupsComponent, data: { titleId: 'groups' } },\n { path: 'people', component: OrgPeopleComponent, data: { titleId: 'people' } },\n { path: 'policies', component: OrgPoliciesComponent, data: { titleId: 'policies' } },\n ],\n },\n {\n path: 'settings',\n component: OrgSettingsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: { allowedTypes: [OrganizationUserType.Owner] },\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 /*enableTracing: true,*/\n })],\n exports: [RouterModule],\n})\nexport class AppRoutingModule { }\n"],"sourceRoot":""}