@oxyhq/services 5.27.0 → 6.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +113 -484
- package/lib/commonjs/index.js +82 -607
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ui/client.js +0 -7
- package/lib/commonjs/ui/client.js.map +1 -1
- package/lib/commonjs/ui/components/SignInModal.js +2 -2
- package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +13 -16
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +6 -7
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useDeviceManagement.js +2 -2
- package/lib/commonjs/ui/context/hooks/useDeviceManagement.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useLanguageManagement.js +7 -7
- package/lib/commonjs/ui/context/hooks/useLanguageManagement.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useSessionManagement.js +3 -3
- package/lib/commonjs/ui/context/hooks/useSessionManagement.js.map +1 -1
- package/lib/commonjs/ui/hooks/useDeviceManagement.js +2 -2
- package/lib/commonjs/ui/hooks/useDeviceManagement.js.map +1 -1
- package/lib/commonjs/ui/hooks/useI18n.js +2 -2
- package/lib/commonjs/ui/hooks/useI18n.js.map +1 -1
- package/lib/commonjs/ui/hooks/useLanguageManagement.js +7 -7
- package/lib/commonjs/ui/hooks/useLanguageManagement.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSessionManagement.js +3 -3
- package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSessionSocket.js +9 -10
- package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
- package/lib/commonjs/ui/index.js +1 -11
- package/lib/commonjs/ui/index.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountCenterScreen.js +3 -3
- package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AppInfoScreen.js +13 -13
- package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +2 -2
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FeedbackScreen.js +2 -2
- package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +3 -3
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/OxyAuthScreen.js +2 -2
- package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js +3 -3
- package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/UserListScreen.js +2 -2
- package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
- package/lib/commonjs/ui/server.js +1 -11
- package/lib/commonjs/ui/server.js.map +1 -1
- package/lib/commonjs/ui/stores/authStore.js +2 -2
- package/lib/commonjs/ui/stores/authStore.js.map +1 -1
- package/lib/commonjs/ui/utils/colorUtils.js +8 -8
- package/lib/commonjs/ui/utils/colorUtils.js.map +1 -1
- package/lib/commonjs/ui/utils/themeUtils.js +6 -6
- package/lib/commonjs/ui/utils/themeUtils.js.map +1 -1
- package/lib/module/index.js +30 -75
- package/lib/module/index.js.map +1 -1
- package/lib/module/ui/client.js +0 -2
- package/lib/module/ui/client.js.map +1 -1
- package/lib/module/ui/components/SignInModal.js +1 -1
- package/lib/module/ui/components/SignInModal.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +4 -4
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +2 -2
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/context/hooks/useDeviceManagement.js +1 -1
- package/lib/module/ui/context/hooks/useDeviceManagement.js.map +1 -1
- package/lib/module/ui/context/hooks/useLanguageManagement.js +1 -1
- package/lib/module/ui/context/hooks/useLanguageManagement.js.map +1 -1
- package/lib/module/ui/context/hooks/useSessionManagement.js +1 -1
- package/lib/module/ui/context/hooks/useSessionManagement.js.map +1 -1
- package/lib/module/ui/hooks/useDeviceManagement.js +1 -1
- package/lib/module/ui/hooks/useDeviceManagement.js.map +1 -1
- package/lib/module/ui/hooks/useI18n.js +1 -1
- package/lib/module/ui/hooks/useI18n.js.map +1 -1
- package/lib/module/ui/hooks/useLanguageManagement.js +1 -1
- package/lib/module/ui/hooks/useLanguageManagement.js.map +1 -1
- package/lib/module/ui/hooks/useSessionManagement.js +1 -1
- package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
- package/lib/module/ui/hooks/useSessionSocket.js +2 -2
- package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
- package/lib/module/ui/index.js +0 -2
- package/lib/module/ui/index.js.map +1 -1
- package/lib/module/ui/screens/AccountCenterScreen.js +1 -1
- package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/AppInfoScreen.js +1 -1
- package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/module/ui/screens/EditProfileFieldScreen.js +1 -1
- package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
- package/lib/module/ui/screens/FeedbackScreen.js +1 -1
- package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/module/ui/screens/OxyAuthScreen.js +1 -1
- package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/module/ui/screens/ProfileScreen.js +1 -1
- package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/module/ui/screens/UserListScreen.js +1 -1
- package/lib/module/ui/screens/UserListScreen.js.map +1 -1
- package/lib/module/ui/server.js +0 -2
- package/lib/module/ui/server.js.map +1 -1
- package/lib/module/ui/stores/authStore.js +1 -1
- package/lib/module/ui/stores/authStore.js.map +1 -1
- package/lib/module/ui/utils/colorUtils.js +1 -1
- package/lib/module/ui/utils/colorUtils.js.map +1 -1
- package/lib/module/ui/utils/themeUtils.js +1 -1
- package/lib/module/ui/utils/themeUtils.js.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +18 -35
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/client.d.ts +0 -2
- package/lib/typescript/commonjs/ui/client.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/photogrid/JustifiedPhotoGrid.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +3 -3
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts +3 -3
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useDeviceManagement.d.ts +2 -2
- package/lib/typescript/commonjs/ui/context/hooks/useDeviceManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useLanguageManagement.d.ts +2 -2
- package/lib/typescript/commonjs/ui/context/hooks/useLanguageManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useSessionManagement.d.ts +3 -3
- package/lib/typescript/commonjs/ui/context/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/mutationFactory.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/mutationFactory.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useSecurityQueries.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useSecurityQueries.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts +2 -2
- package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useDeviceManagement.d.ts +2 -2
- package/lib/typescript/commonjs/ui/hooks/useDeviceManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useFileDownloadUrl.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/useFileDownloadUrl.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useFileFiltering.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/useFileFiltering.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useLanguageManagement.d.ts +2 -2
- package/lib/typescript/commonjs/ui/hooks/useLanguageManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts +3 -3
- package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useStorage.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/useStorage.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useWebSSO.d.ts +2 -2
- package/lib/typescript/commonjs/ui/hooks/useWebSSO.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/index.d.ts +0 -2
- package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/server.d.ts +0 -2
- package/lib/typescript/commonjs/ui/server.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/stores/accountStore.d.ts +1 -1
- package/lib/typescript/commonjs/ui/stores/accountStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/stores/assetStore.d.ts +1 -1
- package/lib/typescript/commonjs/ui/stores/assetStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/stores/authStore.d.ts +1 -1
- package/lib/typescript/commonjs/ui/stores/authStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/stores/fileStore.d.ts +1 -1
- package/lib/typescript/commonjs/ui/stores/fileStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/stores/followStore.d.ts +1 -1
- package/lib/typescript/commonjs/ui/stores/followStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/types/fileManagement.d.ts +1 -1
- package/lib/typescript/commonjs/ui/types/fileManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/authHelpers.d.ts +1 -1
- package/lib/typescript/commonjs/ui/utils/authHelpers.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/avatarUtils.d.ts +2 -2
- package/lib/typescript/commonjs/ui/utils/avatarUtils.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/colorUtils.d.ts +1 -1
- package/lib/typescript/commonjs/ui/utils/colorUtils.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/errorHandlers.d.ts +1 -1
- package/lib/typescript/commonjs/ui/utils/errorHandlers.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts +1 -1
- package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/sessionHelpers.d.ts +1 -1
- package/lib/typescript/commonjs/ui/utils/sessionHelpers.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/themeUtils.d.ts +2 -2
- package/lib/typescript/commonjs/ui/utils/themeUtils.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +18 -35
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/client.d.ts +0 -2
- package/lib/typescript/module/ui/client.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts +1 -1
- package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts +1 -1
- package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/photogrid/JustifiedPhotoGrid.d.ts +1 -1
- package/lib/typescript/module/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts +3 -3
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts +3 -3
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useDeviceManagement.d.ts +2 -2
- package/lib/typescript/module/ui/context/hooks/useDeviceManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useLanguageManagement.d.ts +2 -2
- package/lib/typescript/module/ui/context/hooks/useLanguageManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useSessionManagement.d.ts +3 -3
- package/lib/typescript/module/ui/context/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/mutationFactory.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/mutations/mutationFactory.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/useSecurityQueries.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/queries/useSecurityQueries.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAssets.d.ts +2 -2
- package/lib/typescript/module/ui/hooks/useAssets.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAuth.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useDeviceManagement.d.ts +2 -2
- package/lib/typescript/module/ui/hooks/useDeviceManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useFileDownloadUrl.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/useFileDownloadUrl.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useFileFiltering.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/useFileFiltering.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useLanguageManagement.d.ts +2 -2
- package/lib/typescript/module/ui/hooks/useLanguageManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts +3 -3
- package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useStorage.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/useStorage.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useWebSSO.d.ts +2 -2
- package/lib/typescript/module/ui/hooks/useWebSSO.d.ts.map +1 -1
- package/lib/typescript/module/ui/index.d.ts +0 -2
- package/lib/typescript/module/ui/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/server.d.ts +0 -2
- package/lib/typescript/module/ui/server.d.ts.map +1 -1
- package/lib/typescript/module/ui/stores/accountStore.d.ts +1 -1
- package/lib/typescript/module/ui/stores/accountStore.d.ts.map +1 -1
- package/lib/typescript/module/ui/stores/assetStore.d.ts +1 -1
- package/lib/typescript/module/ui/stores/assetStore.d.ts.map +1 -1
- package/lib/typescript/module/ui/stores/authStore.d.ts +1 -1
- package/lib/typescript/module/ui/stores/authStore.d.ts.map +1 -1
- package/lib/typescript/module/ui/stores/fileStore.d.ts +1 -1
- package/lib/typescript/module/ui/stores/fileStore.d.ts.map +1 -1
- package/lib/typescript/module/ui/stores/followStore.d.ts +1 -1
- package/lib/typescript/module/ui/stores/followStore.d.ts.map +1 -1
- package/lib/typescript/module/ui/types/fileManagement.d.ts +1 -1
- package/lib/typescript/module/ui/types/fileManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/authHelpers.d.ts +1 -1
- package/lib/typescript/module/ui/utils/authHelpers.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/avatarUtils.d.ts +2 -2
- package/lib/typescript/module/ui/utils/avatarUtils.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/colorUtils.d.ts +1 -1
- package/lib/typescript/module/ui/utils/colorUtils.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/errorHandlers.d.ts +1 -1
- package/lib/typescript/module/ui/utils/errorHandlers.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/fileManagement.d.ts +1 -1
- package/lib/typescript/module/ui/utils/fileManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/sessionHelpers.d.ts +1 -1
- package/lib/typescript/module/ui/utils/sessionHelpers.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/themeUtils.d.ts +2 -2
- package/lib/typescript/module/ui/utils/themeUtils.d.ts.map +1 -1
- package/package.json +38 -152
- package/src/index.ts +56 -254
- package/src/ui/client.ts +0 -4
- package/src/ui/components/SignInModal.tsx +1 -1
- package/src/ui/components/fileManagement/FileDetailsModal.tsx +1 -1
- package/src/ui/components/fileManagement/FileViewer.tsx +1 -1
- package/src/ui/components/photogrid/JustifiedPhotoGrid.tsx +1 -1
- package/src/ui/context/OxyContext.tsx +6 -6
- package/src/ui/context/hooks/useAuthOperations.ts +5 -5
- package/src/ui/context/hooks/useDeviceManagement.ts +3 -3
- package/src/ui/context/hooks/useLanguageManagement.ts +2 -2
- package/src/ui/context/hooks/useSessionManagement.ts +4 -4
- package/src/ui/hooks/mutations/mutationFactory.ts +1 -1
- package/src/ui/hooks/mutations/useAccountMutations.ts +1 -1
- package/src/ui/hooks/mutations/useServicesMutations.ts +1 -1
- package/src/ui/hooks/queries/useAccountQueries.ts +1 -1
- package/src/ui/hooks/queries/useSecurityQueries.ts +1 -1
- package/src/ui/hooks/queries/useServicesQueries.ts +1 -1
- package/src/ui/hooks/useAssets.ts +7 -7
- package/src/ui/hooks/useAuth.ts +1 -1
- package/src/ui/hooks/useDeviceManagement.ts +3 -3
- package/src/ui/hooks/useFileDownloadUrl.ts +1 -1
- package/src/ui/hooks/useFileFiltering.ts +1 -1
- package/src/ui/hooks/useI18n.ts +1 -1
- package/src/ui/hooks/useLanguageManagement.ts +2 -2
- package/src/ui/hooks/useSessionManagement.ts +4 -4
- package/src/ui/hooks/useSessionSocket.ts +2 -2
- package/src/ui/hooks/useStorage.ts +1 -1
- package/src/ui/hooks/useWebSSO.ts +2 -2
- package/src/ui/index.ts +0 -3
- package/src/ui/screens/AccountCenterScreen.tsx +1 -1
- package/src/ui/screens/AccountSwitcherScreen.tsx +2 -2
- package/src/ui/screens/AppInfoScreen.tsx +1 -1
- package/src/ui/screens/EditProfileFieldScreen.tsx +1 -1
- package/src/ui/screens/FeedbackScreen.tsx +1 -1
- package/src/ui/screens/FileManagementScreen.tsx +1 -1
- package/src/ui/screens/LanguageSelectorScreen.tsx +1 -1
- package/src/ui/screens/OxyAuthScreen.tsx +1 -1
- package/src/ui/screens/PrivacySettingsScreen.tsx +1 -1
- package/src/ui/screens/ProfileScreen.tsx +2 -2
- package/src/ui/screens/SearchSettingsScreen.tsx +1 -1
- package/src/ui/screens/SessionManagementScreen.tsx +1 -1
- package/src/ui/screens/UserListScreen.tsx +2 -2
- package/src/ui/server.ts +0 -4
- package/src/ui/stores/accountStore.ts +1 -1
- package/src/ui/stores/assetStore.ts +1 -1
- package/src/ui/stores/authStore.ts +2 -2
- package/src/ui/stores/fileStore.ts +1 -1
- package/src/ui/stores/followStore.ts +1 -1
- package/src/ui/types/fileManagement.ts +1 -1
- package/src/ui/types/navigation.ts +2 -2
- package/src/ui/utils/authHelpers.ts +1 -1
- package/src/ui/utils/avatarUtils.ts +2 -2
- package/src/ui/utils/colorUtils.ts +1 -1
- package/src/ui/utils/errorHandlers.ts +1 -1
- package/src/ui/utils/fileManagement.ts +1 -1
- package/src/ui/utils/sessionHelpers.ts +1 -1
- package/src/ui/utils/themeUtils.ts +2 -2
- package/dist/web/oxy-services.esm.js +0 -2
- package/dist/web/oxy-services.esm.js.map +0 -1
- package/dist/web/types/assets/icons/OxyServices.d.ts +0 -28
- package/dist/web/types/assets/illustrations/HighFive.d.ts +0 -8
- package/dist/web/types/constants/version.d.ts +0 -13
- package/dist/web/types/core/AuthManager.d.ts +0 -143
- package/dist/web/types/core/CrossDomainAuth.d.ts +0 -160
- package/dist/web/types/core/HttpService.d.ts +0 -163
- package/dist/web/types/core/OxyServices.base.d.ts +0 -126
- package/dist/web/types/core/OxyServices.d.ts +0 -81
- package/dist/web/types/core/OxyServices.errors.d.ts +0 -11
- package/dist/web/types/core/index.d.ts +0 -20
- package/dist/web/types/core/mixins/OxyServices.analytics.d.ts +0 -66
- package/dist/web/types/core/mixins/OxyServices.assets.d.ts +0 -135
- package/dist/web/types/core/mixins/OxyServices.auth.d.ts +0 -186
- package/dist/web/types/core/mixins/OxyServices.developer.d.ts +0 -99
- package/dist/web/types/core/mixins/OxyServices.devices.d.ts +0 -96
- package/dist/web/types/core/mixins/OxyServices.features.d.ts +0 -228
- package/dist/web/types/core/mixins/OxyServices.fedcm.d.ts +0 -200
- package/dist/web/types/core/mixins/OxyServices.karma.d.ts +0 -85
- package/dist/web/types/core/mixins/OxyServices.language.d.ts +0 -81
- package/dist/web/types/core/mixins/OxyServices.location.d.ts +0 -64
- package/dist/web/types/core/mixins/OxyServices.payment.d.ts +0 -111
- package/dist/web/types/core/mixins/OxyServices.popup.d.ts +0 -205
- package/dist/web/types/core/mixins/OxyServices.privacy.d.ts +0 -122
- package/dist/web/types/core/mixins/OxyServices.redirect.d.ts +0 -245
- package/dist/web/types/core/mixins/OxyServices.security.d.ts +0 -78
- package/dist/web/types/core/mixins/OxyServices.user.d.ts +0 -184
- package/dist/web/types/core/mixins/OxyServices.utility.d.ts +0 -93
- package/dist/web/types/core/mixins/index.d.ts +0 -30
- package/dist/web/types/core/mixins/mixinHelpers.d.ts +0 -31
- package/dist/web/types/crypto/index.d.ts +0 -11
- package/dist/web/types/crypto/keyManager.d.ts +0 -189
- package/dist/web/types/crypto/polyfill.d.ts +0 -12
- package/dist/web/types/crypto/recoveryPhrase.d.ts +0 -58
- package/dist/web/types/crypto/signatureService.d.ts +0 -86
- package/dist/web/types/i18n/index.d.ts +0 -3
- package/dist/web/types/index.d.ts +0 -62
- package/dist/web/types/lib/sonner-safe.d.ts +0 -8
- package/dist/web/types/lib/sonner.d.ts +0 -11
- package/dist/web/types/lib/sonner.web.d.ts +0 -14
- package/dist/web/types/models/interfaces.d.ts +0 -415
- package/dist/web/types/models/session.d.ts +0 -27
- package/dist/web/types/node/index.d.ts +0 -9
- package/dist/web/types/shared/index.d.ts +0 -28
- package/dist/web/types/shared/utils/colorUtils.d.ts +0 -104
- package/dist/web/types/shared/utils/debugUtils.d.ts +0 -48
- package/dist/web/types/shared/utils/errorUtils.d.ts +0 -97
- package/dist/web/types/shared/utils/index.d.ts +0 -13
- package/dist/web/types/shared/utils/networkUtils.d.ts +0 -139
- package/dist/web/types/shared/utils/themeUtils.d.ts +0 -90
- package/dist/web/types/ui/client.d.ts +0 -33
- package/dist/web/types/ui/components/ActivityIndicator.d.ts +0 -44
- package/dist/web/types/ui/components/AnimationExample.d.ts +0 -3
- package/dist/web/types/ui/components/AutoHeightScrollView.d.ts +0 -22
- package/dist/web/types/ui/components/Avatar.d.ts +0 -60
- package/dist/web/types/ui/components/BottomSheet.d.ts +0 -28
- package/dist/web/types/ui/components/BottomSheetRouter.d.ts +0 -8
- package/dist/web/types/ui/components/CrossFadeIcon.d.ts +0 -26
- package/dist/web/types/ui/components/EmptyState.d.ts +0 -7
- package/dist/web/types/ui/components/ErrorBoundary.d.ts +0 -30
- package/dist/web/types/ui/components/FollowButton.d.ts +0 -17
- package/dist/web/types/ui/components/FontLoader.d.ts +0 -14
- package/dist/web/types/ui/components/GroupedItem.d.ts +0 -23
- package/dist/web/types/ui/components/GroupedSection.d.ts +0 -24
- package/dist/web/types/ui/components/Header.d.ts +0 -37
- package/dist/web/types/ui/components/HelperText.d.ts +0 -46
- package/dist/web/types/ui/components/Icon.d.ts +0 -59
- package/dist/web/types/ui/components/IconButton/IconButton.d.ts +0 -98
- package/dist/web/types/ui/components/IconButton/utils.d.ts +0 -18
- package/dist/web/types/ui/components/LoadingState.d.ts +0 -8
- package/dist/web/types/ui/components/OxyLogo.d.ts +0 -28
- package/dist/web/types/ui/components/OxyPayButton.d.ts +0 -28
- package/dist/web/types/ui/components/OxyProvider.d.ts +0 -33
- package/dist/web/types/ui/components/OxySignInButton.d.ts +0 -64
- package/dist/web/types/ui/components/ProfileCard.d.ts +0 -17
- package/dist/web/types/ui/components/QuickActions.d.ts +0 -14
- package/dist/web/types/ui/components/Section.d.ts +0 -11
- package/dist/web/types/ui/components/SectionTitle.d.ts +0 -9
- package/dist/web/types/ui/components/SettingRow.d.ts +0 -19
- package/dist/web/types/ui/components/SignInModal.d.ts +0 -17
- package/dist/web/types/ui/components/StepBasedScreen.d.ts +0 -25
- package/dist/web/types/ui/components/Surface.d.ts +0 -75
- package/dist/web/types/ui/components/TextField/Addons/Outline.d.ts +0 -15
- package/dist/web/types/ui/components/TextField/Addons/Underline.d.ts +0 -18
- package/dist/web/types/ui/components/TextField/Adornment/TextFieldAdornment.d.ts +0 -44
- package/dist/web/types/ui/components/TextField/Adornment/TextFieldAffix.d.ts +0 -72
- package/dist/web/types/ui/components/TextField/Adornment/TextFieldIcon.d.ts +0 -77
- package/dist/web/types/ui/components/TextField/Adornment/enums.d.ts +0 -12
- package/dist/web/types/ui/components/TextField/Adornment/types.d.ts +0 -11
- package/dist/web/types/ui/components/TextField/Adornment/utils.d.ts +0 -11
- package/dist/web/types/ui/components/TextField/Label/InputLabel.d.ts +0 -4
- package/dist/web/types/ui/components/TextField/Label/LabelBackground.d.ts +0 -3
- package/dist/web/types/ui/components/TextField/TextFieldFlat.d.ts +0 -3
- package/dist/web/types/ui/components/TextField/TextFieldOutlined.d.ts +0 -3
- package/dist/web/types/ui/components/TextField/constants.d.ts +0 -31
- package/dist/web/types/ui/components/TextField/helpers.d.ts +0 -96
- package/dist/web/types/ui/components/TextField/types.d.ts +0 -155
- package/dist/web/types/ui/components/TextField.d.ts +0 -191
- package/dist/web/types/ui/components/TouchableRipple/Pressable.d.ts +0 -12
- package/dist/web/types/ui/components/TouchableRipple/TouchableRipple.d.ts +0 -61
- package/dist/web/types/ui/components/TouchableRipple/utils.d.ts +0 -10
- package/dist/web/types/ui/components/Typography/AnimatedText.d.ts +0 -34
- package/dist/web/types/ui/components/Typography/types.d.ts +0 -18
- package/dist/web/types/ui/components/WebOxyProvider.d.ts +0 -51
- package/dist/web/types/ui/components/feedback/FormInput.d.ts +0 -19
- package/dist/web/types/ui/components/feedback/ProgressIndicator.d.ts +0 -10
- package/dist/web/types/ui/components/feedback/constants.d.ts +0 -4
- package/dist/web/types/ui/components/feedback/feedbackStyles.d.ts +0 -279
- package/dist/web/types/ui/components/feedback/index.d.ts +0 -6
- package/dist/web/types/ui/components/feedback/types.d.ts +0 -45
- package/dist/web/types/ui/components/feedback/useFeedbackForm.d.ts +0 -8
- package/dist/web/types/ui/components/fileManagement/AnimatedButton.d.ts +0 -15
- package/dist/web/types/ui/components/fileManagement/FileDetailsModal.d.ts +0 -14
- package/dist/web/types/ui/components/fileManagement/FileViewer.d.ts +0 -17
- package/dist/web/types/ui/components/fileManagement/UploadPreview.d.ts +0 -20
- package/dist/web/types/ui/components/fileManagement/styles.d.ts +0 -859
- package/dist/web/types/ui/components/icon/FAIRWalletIcon.d.ts +0 -8
- package/dist/web/types/ui/components/icon/OxyIcon.d.ts +0 -9
- package/dist/web/types/ui/components/icon/index.d.ts +0 -3
- package/dist/web/types/ui/components/index.d.ts +0 -16
- package/dist/web/types/ui/components/internal/GroupedPillButtons.d.ts +0 -17
- package/dist/web/types/ui/components/internal/PinInput.d.ts +0 -22
- package/dist/web/types/ui/components/modals/DeleteAccountModal.d.ts +0 -18
- package/dist/web/types/ui/components/modals/index.d.ts +0 -1
- package/dist/web/types/ui/components/payment/PaymentDetailsStep.d.ts +0 -20
- package/dist/web/types/ui/components/payment/PaymentMethodStep.d.ts +0 -13
- package/dist/web/types/ui/components/payment/PaymentReviewStep.d.ts +0 -15
- package/dist/web/types/ui/components/payment/PaymentSuccessStep.d.ts +0 -9
- package/dist/web/types/ui/components/payment/PaymentSummaryStep.d.ts +0 -14
- package/dist/web/types/ui/components/payment/constants.d.ts +0 -6
- package/dist/web/types/ui/components/payment/index.d.ts +0 -8
- package/dist/web/types/ui/components/payment/paymentStyles.d.ts +0 -395
- package/dist/web/types/ui/components/payment/types.d.ts +0 -39
- package/dist/web/types/ui/components/photogrid/JustifiedPhotoGrid.d.ts +0 -26
- package/dist/web/types/ui/components/styles/overlay.d.ts +0 -3
- package/dist/web/types/ui/components/styles/shadow.d.ts +0 -2
- package/dist/web/types/ui/components/theming.d.ts +0 -7
- package/dist/web/types/ui/components/types.d.ts +0 -79
- package/dist/web/types/ui/components/utils/forwardRef.d.ts +0 -11
- package/dist/web/types/ui/components/utils/hasTouchHandler.d.ts +0 -5
- package/dist/web/types/ui/components/utils/roundLayoutSize.d.ts +0 -1
- package/dist/web/types/ui/components/utils/splitStyles.d.ts +0 -19
- package/dist/web/types/ui/constants/iconColors.d.ts +0 -129
- package/dist/web/types/ui/constants/spacing.d.ts +0 -32
- package/dist/web/types/ui/constants/theme.d.ts +0 -96
- package/dist/web/types/ui/context/OxyContext.d.ts +0 -74
- package/dist/web/types/ui/context/ThemeContext.d.ts +0 -18
- package/dist/web/types/ui/context/hooks/useAuthOperations.d.ts +0 -39
- package/dist/web/types/ui/context/hooks/useDeviceManagement.d.ts +0 -26
- package/dist/web/types/ui/context/hooks/useLanguageManagement.d.ts +0 -24
- package/dist/web/types/ui/context/hooks/useSessionManagement.d.ts +0 -40
- package/dist/web/types/ui/hooks/index.d.ts +0 -6
- package/dist/web/types/ui/hooks/mutations/index.d.ts +0 -8
- package/dist/web/types/ui/hooks/mutations/mutationFactory.d.ts +0 -75
- package/dist/web/types/ui/hooks/mutations/useAccountMutations.d.ts +0 -68
- package/dist/web/types/ui/hooks/mutations/useServicesMutations.d.ts +0 -22
- package/dist/web/types/ui/hooks/queries/index.d.ts +0 -10
- package/dist/web/types/ui/hooks/queries/queryKeys.d.ts +0 -64
- package/dist/web/types/ui/hooks/queries/useAccountQueries.d.ts +0 -42
- package/dist/web/types/ui/hooks/queries/useSecurityQueries.d.ts +0 -14
- package/dist/web/types/ui/hooks/queries/useServicesQueries.d.ts +0 -31
- package/dist/web/types/ui/hooks/queryClient.d.ts +0 -18
- package/dist/web/types/ui/hooks/useAssets.d.ts +0 -34
- package/dist/web/types/ui/hooks/useAsyncAction.d.ts +0 -50
- package/dist/web/types/ui/hooks/useAuth.d.ts +0 -73
- package/dist/web/types/ui/hooks/useColorScheme.d.ts +0 -7
- package/dist/web/types/ui/hooks/useDeviceManagement.d.ts +0 -26
- package/dist/web/types/ui/hooks/useFileDownloadUrl.d.ts +0 -18
- package/dist/web/types/ui/hooks/useFileFiltering.d.ts +0 -28
- package/dist/web/types/ui/hooks/useFollow.d.ts +0 -61
- package/dist/web/types/ui/hooks/useFollow.types.d.ts +0 -32
- package/dist/web/types/ui/hooks/useI18n.d.ts +0 -4
- package/dist/web/types/ui/hooks/useLanguageManagement.d.ts +0 -24
- package/dist/web/types/ui/hooks/useProfileEditing.d.ts +0 -35
- package/dist/web/types/ui/hooks/useQueryClient.d.ts +0 -6
- package/dist/web/types/ui/hooks/useSessionManagement.d.ts +0 -40
- package/dist/web/types/ui/hooks/useSessionSocket.d.ts +0 -13
- package/dist/web/types/ui/hooks/useSettingToggle.d.ts +0 -56
- package/dist/web/types/ui/hooks/useStorage.d.ts +0 -15
- package/dist/web/types/ui/hooks/useThemeColors.d.ts +0 -93
- package/dist/web/types/ui/hooks/useThemeStyles.d.ts +0 -44
- package/dist/web/types/ui/hooks/useWebSSO.d.ts +0 -57
- package/dist/web/types/ui/index.d.ts +0 -7
- package/dist/web/types/ui/isFrontend.d.ts +0 -2
- package/dist/web/types/ui/navigation/bottomSheetManager.d.ts +0 -26
- package/dist/web/types/ui/navigation/routes.d.ts +0 -5
- package/dist/web/types/ui/screens/AccountCenterScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/AccountOverviewScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/AccountSettingsScreen.d.ts +0 -7
- package/dist/web/types/ui/screens/AccountSwitcherScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/AccountVerificationScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/AppInfoScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/EditProfileFieldScreen.d.ts +0 -12
- package/dist/web/types/ui/screens/FAQScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/FeedbackScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/FileManagementScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/FollowersListScreen.d.ts +0 -8
- package/dist/web/types/ui/screens/FollowingListScreen.d.ts +0 -8
- package/dist/web/types/ui/screens/HelpSupportScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/HistoryViewScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/LanguageSelectorScreen.d.ts +0 -6
- package/dist/web/types/ui/screens/LearnMoreUsernamesScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/LegalDocumentsScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/OxyAuthScreen.d.ts +0 -16
- package/dist/web/types/ui/screens/PaymentGatewayScreen.d.ts +0 -14
- package/dist/web/types/ui/screens/PremiumSubscriptionScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/PrivacySettingsScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/ProfileScreen.d.ts +0 -8
- package/dist/web/types/ui/screens/SavesCollectionsScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/SearchSettingsScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/SessionManagementScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/UserLinksScreen.d.ts +0 -14
- package/dist/web/types/ui/screens/UserListScreen.d.ts +0 -10
- package/dist/web/types/ui/screens/WelcomeNewUserScreen.d.ts +0 -12
- package/dist/web/types/ui/screens/karma/KarmaAboutScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/karma/KarmaCenterScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/karma/KarmaFAQScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/karma/KarmaLeaderboardScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/karma/KarmaRewardsScreen.d.ts +0 -4
- package/dist/web/types/ui/screens/karma/KarmaRulesScreen.d.ts +0 -4
- package/dist/web/types/ui/server.d.ts +0 -42
- package/dist/web/types/ui/stores/accountStore.d.ts +0 -33
- package/dist/web/types/ui/stores/assetStore.d.ts +0 -53
- package/dist/web/types/ui/stores/authStore.d.ts +0 -16
- package/dist/web/types/ui/stores/fileStore.d.ts +0 -30
- package/dist/web/types/ui/stores/followStore.d.ts +0 -24
- package/dist/web/types/ui/styles/authStyles.d.ts +0 -331
- package/dist/web/types/ui/styles/fonts.d.ts +0 -20
- package/dist/web/types/ui/styles/index.d.ts +0 -4
- package/dist/web/types/ui/styles/spacing.d.ts +0 -48
- package/dist/web/types/ui/styles/theme.d.ts +0 -67
- package/dist/web/types/ui/types/fileManagement.d.ts +0 -40
- package/dist/web/types/ui/types/navigation.d.ts +0 -36
- package/dist/web/types/ui/utils/authHelpers.d.ts +0 -98
- package/dist/web/types/ui/utils/avatarUtils.d.ts +0 -33
- package/dist/web/types/ui/utils/colorUtils.d.ts +0 -9
- package/dist/web/types/ui/utils/confirmAction.d.ts +0 -6
- package/dist/web/types/ui/utils/errorHandlers.d.ts +0 -34
- package/dist/web/types/ui/utils/fileManagement.d.ts +0 -86
- package/dist/web/types/ui/utils/iconNames.d.ts +0 -111
- package/dist/web/types/ui/utils/sessionHelpers.d.ts +0 -63
- package/dist/web/types/ui/utils/storageHelpers.d.ts +0 -27
- package/dist/web/types/ui/utils/themeUtils.d.ts +0 -10
- package/dist/web/types/ui/utils/userUtils.d.ts +0 -28
- package/dist/web/types/utils/apiUtils.d.ts +0 -53
- package/dist/web/types/utils/asyncUtils.d.ts +0 -58
- package/dist/web/types/utils/cache.d.ts +0 -127
- package/dist/web/types/utils/deviceManager.d.ts +0 -65
- package/dist/web/types/utils/errorUtils.d.ts +0 -46
- package/dist/web/types/utils/hookUtils.d.ts +0 -101
- package/dist/web/types/utils/index.d.ts +0 -6
- package/dist/web/types/utils/languageUtils.d.ts +0 -37
- package/dist/web/types/utils/loggerUtils.d.ts +0 -48
- package/dist/web/types/utils/platform.d.ts +0 -40
- package/dist/web/types/utils/platformInit.d.ts +0 -8
- package/dist/web/types/utils/requestUtils.d.ts +0 -123
- package/dist/web/types/utils/sessionUtils.d.ts +0 -54
- package/dist/web/types/utils/validationUtils.d.ts +0 -85
- package/dist/web/types/web/WebOxyContext.d.ts +0 -151
- package/dist/web/types/web/index.d.ts +0 -52
- package/dist/web/types/web.d.ts +0 -53
- package/lib/commonjs/constants/version.js +0 -28
- package/lib/commonjs/constants/version.js.map +0 -1
- package/lib/commonjs/core/AuthManager.js +0 -405
- package/lib/commonjs/core/AuthManager.js.map +0 -1
- package/lib/commonjs/core/CrossDomainAuth.js +0 -277
- package/lib/commonjs/core/CrossDomainAuth.js.map +0 -1
- package/lib/commonjs/core/HttpService.js +0 -697
- package/lib/commonjs/core/HttpService.js.map +0 -1
- package/lib/commonjs/core/OxyServices.base.js +0 -291
- package/lib/commonjs/core/OxyServices.base.js.map +0 -1
- package/lib/commonjs/core/OxyServices.errors.js +0 -26
- package/lib/commonjs/core/OxyServices.errors.js.map +0 -1
- package/lib/commonjs/core/OxyServices.js +0 -149
- package/lib/commonjs/core/OxyServices.js.map +0 -1
- package/lib/commonjs/core/index.js +0 -158
- package/lib/commonjs/core/index.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.analytics.js +0 -60
- package/lib/commonjs/core/mixins/OxyServices.analytics.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.assets.js +0 -390
- package/lib/commonjs/core/mixins/OxyServices.assets.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.auth.js +0 -296
- package/lib/commonjs/core/mixins/OxyServices.auth.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.developer.js +0 -115
- package/lib/commonjs/core/mixins/OxyServices.developer.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.devices.js +0 -133
- package/lib/commonjs/core/mixins/OxyServices.devices.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.features.js +0 -372
- package/lib/commonjs/core/mixins/OxyServices.features.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.fedcm.js +0 -464
- package/lib/commonjs/core/mixins/OxyServices.fedcm.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.karma.js +0 -117
- package/lib/commonjs/core/mixins/OxyServices.karma.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.language.js +0 -124
- package/lib/commonjs/core/mixins/OxyServices.language.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.location.js +0 -55
- package/lib/commonjs/core/mixins/OxyServices.location.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.payment.js +0 -168
- package/lib/commonjs/core/mixins/OxyServices.payment.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.popup.js +0 -393
- package/lib/commonjs/core/mixins/OxyServices.popup.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.privacy.js +0 -174
- package/lib/commonjs/core/mixins/OxyServices.privacy.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.redirect.js +0 -378
- package/lib/commonjs/core/mixins/OxyServices.redirect.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.security.js +0 -96
- package/lib/commonjs/core/mixins/OxyServices.security.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.user.js +0 -393
- package/lib/commonjs/core/mixins/OxyServices.user.js.map +0 -1
- package/lib/commonjs/core/mixins/OxyServices.utility.js +0 -165
- package/lib/commonjs/core/mixins/OxyServices.utility.js.map +0 -1
- package/lib/commonjs/core/mixins/index.js +0 -75
- package/lib/commonjs/core/mixins/index.js.map +0 -1
- package/lib/commonjs/core/mixins/mixinHelpers.js +0 -62
- package/lib/commonjs/core/mixins/mixinHelpers.js.map +0 -1
- package/lib/commonjs/crypto/index.js +0 -34
- package/lib/commonjs/crypto/index.js.map +0 -1
- package/lib/commonjs/crypto/keyManager.js +0 -942
- package/lib/commonjs/crypto/keyManager.js.map +0 -1
- package/lib/commonjs/crypto/polyfill.js +0 -86
- package/lib/commonjs/crypto/polyfill.js.map +0 -1
- package/lib/commonjs/crypto/recoveryPhrase.js +0 -152
- package/lib/commonjs/crypto/recoveryPhrase.js.map +0 -1
- package/lib/commonjs/crypto/signatureService.js +0 -289
- package/lib/commonjs/crypto/signatureService.js.map +0 -1
- package/lib/commonjs/i18n/index.js +0 -76
- package/lib/commonjs/i18n/index.js.map +0 -1
- package/lib/commonjs/i18n/locales/ar-SA.json +0 -120
- package/lib/commonjs/i18n/locales/ca-ES.json +0 -120
- package/lib/commonjs/i18n/locales/de-DE.json +0 -120
- package/lib/commonjs/i18n/locales/en-US.json +0 -956
- package/lib/commonjs/i18n/locales/es-ES.json +0 -944
- package/lib/commonjs/i18n/locales/fr-FR.json +0 -120
- package/lib/commonjs/i18n/locales/it-IT.json +0 -120
- package/lib/commonjs/i18n/locales/ja-JP.json +0 -119
- package/lib/commonjs/i18n/locales/ko-KR.json +0 -120
- package/lib/commonjs/i18n/locales/pt-PT.json +0 -120
- package/lib/commonjs/i18n/locales/zh-CN.json +0 -120
- package/lib/commonjs/models/interfaces.js +0 -61
- package/lib/commonjs/models/interfaces.js.map +0 -1
- package/lib/commonjs/models/session.js +0 -2
- package/lib/commonjs/models/session.js.map +0 -1
- package/lib/commonjs/node/index.js +0 -59
- package/lib/commonjs/node/index.js.map +0 -1
- package/lib/commonjs/shared/index.js +0 -227
- package/lib/commonjs/shared/index.js.map +0 -1
- package/lib/commonjs/shared/utils/colorUtils.js +0 -161
- package/lib/commonjs/shared/utils/colorUtils.js.map +0 -1
- package/lib/commonjs/shared/utils/debugUtils.js +0 -84
- package/lib/commonjs/shared/utils/debugUtils.js.map +0 -1
- package/lib/commonjs/shared/utils/errorUtils.js +0 -190
- package/lib/commonjs/shared/utils/errorUtils.js.map +0 -1
- package/lib/commonjs/shared/utils/index.js +0 -196
- package/lib/commonjs/shared/utils/index.js.map +0 -1
- package/lib/commonjs/shared/utils/networkUtils.js +0 -213
- package/lib/commonjs/shared/utils/networkUtils.js.map +0 -1
- package/lib/commonjs/shared/utils/themeUtils.js +0 -118
- package/lib/commonjs/shared/utils/themeUtils.js.map +0 -1
- package/lib/commonjs/utils/apiUtils.js +0 -79
- package/lib/commonjs/utils/apiUtils.js.map +0 -1
- package/lib/commonjs/utils/asyncUtils.js +0 -207
- package/lib/commonjs/utils/asyncUtils.js.map +0 -1
- package/lib/commonjs/utils/cache.js +0 -259
- package/lib/commonjs/utils/cache.js.map +0 -1
- package/lib/commonjs/utils/deviceManager.js +0 -177
- package/lib/commonjs/utils/deviceManager.js.map +0 -1
- package/lib/commonjs/utils/errorUtils.js +0 -168
- package/lib/commonjs/utils/errorUtils.js.map +0 -1
- package/lib/commonjs/utils/index.js +0 -106
- package/lib/commonjs/utils/index.js.map +0 -1
- package/lib/commonjs/utils/languageUtils.js +0 -159
- package/lib/commonjs/utils/languageUtils.js.map +0 -1
- package/lib/commonjs/utils/loggerUtils.js +0 -160
- package/lib/commonjs/utils/loggerUtils.js.map +0 -1
- package/lib/commonjs/utils/platform.js +0 -129
- package/lib/commonjs/utils/platform.js.map +0 -1
- package/lib/commonjs/utils/platformInit.js +0 -13
- package/lib/commonjs/utils/platformInit.js.map +0 -1
- package/lib/commonjs/utils/platformInit.native.js +0 -16
- package/lib/commonjs/utils/platformInit.native.js.map +0 -1
- package/lib/commonjs/utils/requestUtils.js +0 -218
- package/lib/commonjs/utils/requestUtils.js.map +0 -1
- package/lib/commonjs/utils/sessionUtils.js +0 -191
- package/lib/commonjs/utils/sessionUtils.js.map +0 -1
- package/lib/commonjs/utils/validationUtils.js +0 -191
- package/lib/commonjs/utils/validationUtils.js.map +0 -1
- package/lib/commonjs/web/WebOxyContext.js +0 -384
- package/lib/commonjs/web/WebOxyContext.js.map +0 -1
- package/lib/commonjs/web/index.js +0 -319
- package/lib/commonjs/web/index.js.map +0 -1
- package/lib/commonjs/web.js +0 -659
- package/lib/commonjs/web.js.map +0 -1
- package/lib/module/constants/version.js +0 -21
- package/lib/module/constants/version.js.map +0 -1
- package/lib/module/core/AuthManager.js +0 -399
- package/lib/module/core/AuthManager.js.map +0 -1
- package/lib/module/core/CrossDomainAuth.js +0 -271
- package/lib/module/core/CrossDomainAuth.js.map +0 -1
- package/lib/module/core/HttpService.js +0 -692
- package/lib/module/core/HttpService.js.map +0 -1
- package/lib/module/core/OxyServices.base.js +0 -285
- package/lib/module/core/OxyServices.base.js.map +0 -1
- package/lib/module/core/OxyServices.errors.js +0 -20
- package/lib/module/core/OxyServices.errors.js.map +0 -1
- package/lib/module/core/OxyServices.js +0 -134
- package/lib/module/core/OxyServices.js.map +0 -1
- package/lib/module/core/index.js +0 -31
- package/lib/module/core/index.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.analytics.js +0 -56
- package/lib/module/core/mixins/OxyServices.analytics.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.assets.js +0 -386
- package/lib/module/core/mixins/OxyServices.assets.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.auth.js +0 -292
- package/lib/module/core/mixins/OxyServices.auth.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.developer.js +0 -111
- package/lib/module/core/mixins/OxyServices.developer.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.devices.js +0 -129
- package/lib/module/core/mixins/OxyServices.devices.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.features.js +0 -369
- package/lib/module/core/mixins/OxyServices.features.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.fedcm.js +0 -461
- package/lib/module/core/mixins/OxyServices.fedcm.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.karma.js +0 -113
- package/lib/module/core/mixins/OxyServices.karma.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.language.js +0 -120
- package/lib/module/core/mixins/OxyServices.language.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.location.js +0 -51
- package/lib/module/core/mixins/OxyServices.location.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.payment.js +0 -164
- package/lib/module/core/mixins/OxyServices.payment.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.popup.js +0 -390
- package/lib/module/core/mixins/OxyServices.popup.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.privacy.js +0 -170
- package/lib/module/core/mixins/OxyServices.privacy.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.redirect.js +0 -375
- package/lib/module/core/mixins/OxyServices.redirect.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.security.js +0 -92
- package/lib/module/core/mixins/OxyServices.security.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.user.js +0 -389
- package/lib/module/core/mixins/OxyServices.user.js.map +0 -1
- package/lib/module/core/mixins/OxyServices.utility.js +0 -160
- package/lib/module/core/mixins/OxyServices.utility.js.map +0 -1
- package/lib/module/core/mixins/index.js +0 -72
- package/lib/module/core/mixins/index.js.map +0 -1
- package/lib/module/core/mixins/mixinHelpers.js +0 -56
- package/lib/module/core/mixins/mixinHelpers.js.map +0 -1
- package/lib/module/crypto/index.js +0 -18
- package/lib/module/crypto/index.js.map +0 -1
- package/lib/module/crypto/keyManager.js +0 -939
- package/lib/module/crypto/keyManager.js.map +0 -1
- package/lib/module/crypto/polyfill.js +0 -78
- package/lib/module/crypto/polyfill.js.map +0 -1
- package/lib/module/crypto/recoveryPhrase.js +0 -147
- package/lib/module/crypto/recoveryPhrase.js.map +0 -1
- package/lib/module/crypto/signatureService.js +0 -286
- package/lib/module/crypto/signatureService.js.map +0 -1
- package/lib/module/i18n/index.js +0 -71
- package/lib/module/i18n/index.js.map +0 -1
- package/lib/module/i18n/locales/ar-SA.json +0 -120
- package/lib/module/i18n/locales/ca-ES.json +0 -120
- package/lib/module/i18n/locales/de-DE.json +0 -120
- package/lib/module/i18n/locales/en-US.json +0 -956
- package/lib/module/i18n/locales/es-ES.json +0 -944
- package/lib/module/i18n/locales/fr-FR.json +0 -120
- package/lib/module/i18n/locales/it-IT.json +0 -120
- package/lib/module/i18n/locales/ja-JP.json +0 -119
- package/lib/module/i18n/locales/ko-KR.json +0 -120
- package/lib/module/i18n/locales/pt-PT.json +0 -120
- package/lib/module/i18n/locales/zh-CN.json +0 -120
- package/lib/module/models/interfaces.js +0 -57
- package/lib/module/models/interfaces.js.map +0 -1
- package/lib/module/models/session.js +0 -2
- package/lib/module/models/session.js.map +0 -1
- package/lib/module/node/index.js +0 -20
- package/lib/module/node/index.js.map +0 -1
- package/lib/module/shared/index.js +0 -37
- package/lib/module/shared/index.js.map +0 -1
- package/lib/module/shared/utils/colorUtils.js +0 -150
- package/lib/module/shared/utils/colorUtils.js.map +0 -1
- package/lib/module/shared/utils/debugUtils.js +0 -75
- package/lib/module/shared/utils/debugUtils.js.map +0 -1
- package/lib/module/shared/utils/errorUtils.js +0 -176
- package/lib/module/shared/utils/errorUtils.js.map +0 -1
- package/lib/module/shared/utils/index.js +0 -21
- package/lib/module/shared/utils/index.js.map +0 -1
- package/lib/module/shared/utils/networkUtils.js +0 -202
- package/lib/module/shared/utils/networkUtils.js.map +0 -1
- package/lib/module/shared/utils/themeUtils.js +0 -109
- package/lib/module/shared/utils/themeUtils.js.map +0 -1
- package/lib/module/utils/apiUtils.js +0 -72
- package/lib/module/utils/apiUtils.js.map +0 -1
- package/lib/module/utils/asyncUtils.js +0 -192
- package/lib/module/utils/asyncUtils.js.map +0 -1
- package/lib/module/utils/cache.js +0 -250
- package/lib/module/utils/cache.js.map +0 -1
- package/lib/module/utils/deviceManager.js +0 -171
- package/lib/module/utils/deviceManager.js.map +0 -1
- package/lib/module/utils/errorUtils.js +0 -160
- package/lib/module/utils/errorUtils.js.map +0 -1
- package/lib/module/utils/index.js +0 -11
- package/lib/module/utils/index.js.map +0 -1
- package/lib/module/utils/languageUtils.js +0 -151
- package/lib/module/utils/languageUtils.js.map +0 -1
- package/lib/module/utils/loggerUtils.js +0 -149
- package/lib/module/utils/loggerUtils.js.map +0 -1
- package/lib/module/utils/platform.js +0 -118
- package/lib/module/utils/platform.js.map +0 -1
- package/lib/module/utils/platformInit.js +0 -13
- package/lib/module/utils/platformInit.js.map +0 -1
- package/lib/module/utils/platformInit.native.js +0 -16
- package/lib/module/utils/platformInit.native.js.map +0 -1
- package/lib/module/utils/requestUtils.js +0 -212
- package/lib/module/utils/requestUtils.js.map +0 -1
- package/lib/module/utils/sessionUtils.js +0 -180
- package/lib/module/utils/sessionUtils.js.map +0 -1
- package/lib/module/utils/validationUtils.js +0 -170
- package/lib/module/utils/validationUtils.js.map +0 -1
- package/lib/module/web/WebOxyContext.js +0 -377
- package/lib/module/web/WebOxyContext.js.map +0 -1
- package/lib/module/web/index.js +0 -72
- package/lib/module/web/index.js.map +0 -1
- package/lib/module/web.js +0 -76
- package/lib/module/web.js.map +0 -1
- package/lib/typescript/commonjs/constants/version.d.ts +0 -14
- package/lib/typescript/commonjs/constants/version.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/AuthManager.d.ts +0 -144
- package/lib/typescript/commonjs/core/AuthManager.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/CrossDomainAuth.d.ts +0 -161
- package/lib/typescript/commonjs/core/CrossDomainAuth.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/HttpService.d.ts +0 -164
- package/lib/typescript/commonjs/core/HttpService.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/OxyServices.base.d.ts +0 -127
- package/lib/typescript/commonjs/core/OxyServices.base.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/OxyServices.d.ts +0 -82
- package/lib/typescript/commonjs/core/OxyServices.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/OxyServices.errors.d.ts +0 -12
- package/lib/typescript/commonjs/core/OxyServices.errors.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/index.d.ts +0 -21
- package/lib/typescript/commonjs/core/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.analytics.d.ts +0 -67
- package/lib/typescript/commonjs/core/mixins/OxyServices.analytics.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.assets.d.ts +0 -136
- package/lib/typescript/commonjs/core/mixins/OxyServices.assets.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.auth.d.ts +0 -187
- package/lib/typescript/commonjs/core/mixins/OxyServices.auth.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.developer.d.ts +0 -100
- package/lib/typescript/commonjs/core/mixins/OxyServices.developer.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.devices.d.ts +0 -97
- package/lib/typescript/commonjs/core/mixins/OxyServices.devices.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.features.d.ts +0 -229
- package/lib/typescript/commonjs/core/mixins/OxyServices.features.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.fedcm.d.ts +0 -201
- package/lib/typescript/commonjs/core/mixins/OxyServices.fedcm.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.karma.d.ts +0 -86
- package/lib/typescript/commonjs/core/mixins/OxyServices.karma.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.language.d.ts +0 -82
- package/lib/typescript/commonjs/core/mixins/OxyServices.language.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.location.d.ts +0 -65
- package/lib/typescript/commonjs/core/mixins/OxyServices.location.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.payment.d.ts +0 -112
- package/lib/typescript/commonjs/core/mixins/OxyServices.payment.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.popup.d.ts +0 -206
- package/lib/typescript/commonjs/core/mixins/OxyServices.popup.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.privacy.d.ts +0 -123
- package/lib/typescript/commonjs/core/mixins/OxyServices.privacy.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.redirect.d.ts +0 -246
- package/lib/typescript/commonjs/core/mixins/OxyServices.redirect.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.security.d.ts +0 -79
- package/lib/typescript/commonjs/core/mixins/OxyServices.security.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.user.d.ts +0 -185
- package/lib/typescript/commonjs/core/mixins/OxyServices.user.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.utility.d.ts +0 -94
- package/lib/typescript/commonjs/core/mixins/OxyServices.utility.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/index.d.ts +0 -31
- package/lib/typescript/commonjs/core/mixins/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/core/mixins/mixinHelpers.d.ts +0 -32
- package/lib/typescript/commonjs/core/mixins/mixinHelpers.d.ts.map +0 -1
- package/lib/typescript/commonjs/crypto/index.d.ts +0 -12
- package/lib/typescript/commonjs/crypto/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/crypto/keyManager.d.ts +0 -190
- package/lib/typescript/commonjs/crypto/keyManager.d.ts.map +0 -1
- package/lib/typescript/commonjs/crypto/polyfill.d.ts +0 -13
- package/lib/typescript/commonjs/crypto/polyfill.d.ts.map +0 -1
- package/lib/typescript/commonjs/crypto/recoveryPhrase.d.ts +0 -59
- package/lib/typescript/commonjs/crypto/recoveryPhrase.d.ts.map +0 -1
- package/lib/typescript/commonjs/crypto/signatureService.d.ts +0 -87
- package/lib/typescript/commonjs/crypto/signatureService.d.ts.map +0 -1
- package/lib/typescript/commonjs/i18n/index.d.ts +0 -4
- package/lib/typescript/commonjs/i18n/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/models/interfaces.d.ts +0 -416
- package/lib/typescript/commonjs/models/interfaces.d.ts.map +0 -1
- package/lib/typescript/commonjs/models/session.d.ts +0 -28
- package/lib/typescript/commonjs/models/session.d.ts.map +0 -1
- package/lib/typescript/commonjs/node/index.d.ts +0 -10
- package/lib/typescript/commonjs/node/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/shared/index.d.ts +0 -29
- package/lib/typescript/commonjs/shared/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/shared/utils/colorUtils.d.ts +0 -105
- package/lib/typescript/commonjs/shared/utils/colorUtils.d.ts.map +0 -1
- package/lib/typescript/commonjs/shared/utils/debugUtils.d.ts +0 -49
- package/lib/typescript/commonjs/shared/utils/debugUtils.d.ts.map +0 -1
- package/lib/typescript/commonjs/shared/utils/errorUtils.d.ts +0 -98
- package/lib/typescript/commonjs/shared/utils/errorUtils.d.ts.map +0 -1
- package/lib/typescript/commonjs/shared/utils/index.d.ts +0 -14
- package/lib/typescript/commonjs/shared/utils/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/shared/utils/networkUtils.d.ts +0 -140
- package/lib/typescript/commonjs/shared/utils/networkUtils.d.ts.map +0 -1
- package/lib/typescript/commonjs/shared/utils/themeUtils.d.ts +0 -91
- package/lib/typescript/commonjs/shared/utils/themeUtils.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/apiUtils.d.ts +0 -54
- package/lib/typescript/commonjs/utils/apiUtils.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/asyncUtils.d.ts +0 -59
- package/lib/typescript/commonjs/utils/asyncUtils.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/cache.d.ts +0 -128
- package/lib/typescript/commonjs/utils/cache.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/deviceManager.d.ts +0 -66
- package/lib/typescript/commonjs/utils/deviceManager.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/errorUtils.d.ts +0 -47
- package/lib/typescript/commonjs/utils/errorUtils.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/index.d.ts +0 -7
- package/lib/typescript/commonjs/utils/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/languageUtils.d.ts +0 -38
- package/lib/typescript/commonjs/utils/languageUtils.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/loggerUtils.d.ts +0 -49
- package/lib/typescript/commonjs/utils/loggerUtils.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/platform.d.ts +0 -41
- package/lib/typescript/commonjs/utils/platform.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/platformInit.d.ts +0 -10
- package/lib/typescript/commonjs/utils/platformInit.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/platformInit.native.d.ts +0 -2
- package/lib/typescript/commonjs/utils/platformInit.native.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/requestUtils.d.ts +0 -124
- package/lib/typescript/commonjs/utils/requestUtils.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/sessionUtils.d.ts +0 -55
- package/lib/typescript/commonjs/utils/sessionUtils.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/validationUtils.d.ts +0 -86
- package/lib/typescript/commonjs/utils/validationUtils.d.ts.map +0 -1
- package/lib/typescript/commonjs/web/WebOxyContext.d.ts +0 -152
- package/lib/typescript/commonjs/web/WebOxyContext.d.ts.map +0 -1
- package/lib/typescript/commonjs/web/index.d.ts +0 -53
- package/lib/typescript/commonjs/web/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/web.d.ts +0 -54
- package/lib/typescript/commonjs/web.d.ts.map +0 -1
- package/lib/typescript/module/constants/version.d.ts +0 -14
- package/lib/typescript/module/constants/version.d.ts.map +0 -1
- package/lib/typescript/module/core/AuthManager.d.ts +0 -144
- package/lib/typescript/module/core/AuthManager.d.ts.map +0 -1
- package/lib/typescript/module/core/CrossDomainAuth.d.ts +0 -161
- package/lib/typescript/module/core/CrossDomainAuth.d.ts.map +0 -1
- package/lib/typescript/module/core/HttpService.d.ts +0 -164
- package/lib/typescript/module/core/HttpService.d.ts.map +0 -1
- package/lib/typescript/module/core/OxyServices.base.d.ts +0 -127
- package/lib/typescript/module/core/OxyServices.base.d.ts.map +0 -1
- package/lib/typescript/module/core/OxyServices.d.ts +0 -82
- package/lib/typescript/module/core/OxyServices.d.ts.map +0 -1
- package/lib/typescript/module/core/OxyServices.errors.d.ts +0 -12
- package/lib/typescript/module/core/OxyServices.errors.d.ts.map +0 -1
- package/lib/typescript/module/core/index.d.ts +0 -21
- package/lib/typescript/module/core/index.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.analytics.d.ts +0 -67
- package/lib/typescript/module/core/mixins/OxyServices.analytics.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.assets.d.ts +0 -136
- package/lib/typescript/module/core/mixins/OxyServices.assets.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.auth.d.ts +0 -187
- package/lib/typescript/module/core/mixins/OxyServices.auth.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.developer.d.ts +0 -100
- package/lib/typescript/module/core/mixins/OxyServices.developer.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.devices.d.ts +0 -97
- package/lib/typescript/module/core/mixins/OxyServices.devices.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.features.d.ts +0 -229
- package/lib/typescript/module/core/mixins/OxyServices.features.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.fedcm.d.ts +0 -201
- package/lib/typescript/module/core/mixins/OxyServices.fedcm.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.karma.d.ts +0 -86
- package/lib/typescript/module/core/mixins/OxyServices.karma.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.language.d.ts +0 -82
- package/lib/typescript/module/core/mixins/OxyServices.language.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.location.d.ts +0 -65
- package/lib/typescript/module/core/mixins/OxyServices.location.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.payment.d.ts +0 -112
- package/lib/typescript/module/core/mixins/OxyServices.payment.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.popup.d.ts +0 -206
- package/lib/typescript/module/core/mixins/OxyServices.popup.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.privacy.d.ts +0 -123
- package/lib/typescript/module/core/mixins/OxyServices.privacy.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.redirect.d.ts +0 -246
- package/lib/typescript/module/core/mixins/OxyServices.redirect.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.security.d.ts +0 -79
- package/lib/typescript/module/core/mixins/OxyServices.security.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.user.d.ts +0 -185
- package/lib/typescript/module/core/mixins/OxyServices.user.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/OxyServices.utility.d.ts +0 -94
- package/lib/typescript/module/core/mixins/OxyServices.utility.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/index.d.ts +0 -31
- package/lib/typescript/module/core/mixins/index.d.ts.map +0 -1
- package/lib/typescript/module/core/mixins/mixinHelpers.d.ts +0 -32
- package/lib/typescript/module/core/mixins/mixinHelpers.d.ts.map +0 -1
- package/lib/typescript/module/crypto/index.d.ts +0 -12
- package/lib/typescript/module/crypto/index.d.ts.map +0 -1
- package/lib/typescript/module/crypto/keyManager.d.ts +0 -190
- package/lib/typescript/module/crypto/keyManager.d.ts.map +0 -1
- package/lib/typescript/module/crypto/polyfill.d.ts +0 -13
- package/lib/typescript/module/crypto/polyfill.d.ts.map +0 -1
- package/lib/typescript/module/crypto/recoveryPhrase.d.ts +0 -59
- package/lib/typescript/module/crypto/recoveryPhrase.d.ts.map +0 -1
- package/lib/typescript/module/crypto/signatureService.d.ts +0 -87
- package/lib/typescript/module/crypto/signatureService.d.ts.map +0 -1
- package/lib/typescript/module/i18n/index.d.ts +0 -4
- package/lib/typescript/module/i18n/index.d.ts.map +0 -1
- package/lib/typescript/module/models/interfaces.d.ts +0 -416
- package/lib/typescript/module/models/interfaces.d.ts.map +0 -1
- package/lib/typescript/module/models/session.d.ts +0 -28
- package/lib/typescript/module/models/session.d.ts.map +0 -1
- package/lib/typescript/module/node/index.d.ts +0 -10
- package/lib/typescript/module/node/index.d.ts.map +0 -1
- package/lib/typescript/module/shared/index.d.ts +0 -29
- package/lib/typescript/module/shared/index.d.ts.map +0 -1
- package/lib/typescript/module/shared/utils/colorUtils.d.ts +0 -105
- package/lib/typescript/module/shared/utils/colorUtils.d.ts.map +0 -1
- package/lib/typescript/module/shared/utils/debugUtils.d.ts +0 -49
- package/lib/typescript/module/shared/utils/debugUtils.d.ts.map +0 -1
- package/lib/typescript/module/shared/utils/errorUtils.d.ts +0 -98
- package/lib/typescript/module/shared/utils/errorUtils.d.ts.map +0 -1
- package/lib/typescript/module/shared/utils/index.d.ts +0 -14
- package/lib/typescript/module/shared/utils/index.d.ts.map +0 -1
- package/lib/typescript/module/shared/utils/networkUtils.d.ts +0 -140
- package/lib/typescript/module/shared/utils/networkUtils.d.ts.map +0 -1
- package/lib/typescript/module/shared/utils/themeUtils.d.ts +0 -91
- package/lib/typescript/module/shared/utils/themeUtils.d.ts.map +0 -1
- package/lib/typescript/module/utils/apiUtils.d.ts +0 -54
- package/lib/typescript/module/utils/apiUtils.d.ts.map +0 -1
- package/lib/typescript/module/utils/asyncUtils.d.ts +0 -59
- package/lib/typescript/module/utils/asyncUtils.d.ts.map +0 -1
- package/lib/typescript/module/utils/cache.d.ts +0 -128
- package/lib/typescript/module/utils/cache.d.ts.map +0 -1
- package/lib/typescript/module/utils/deviceManager.d.ts +0 -66
- package/lib/typescript/module/utils/deviceManager.d.ts.map +0 -1
- package/lib/typescript/module/utils/errorUtils.d.ts +0 -47
- package/lib/typescript/module/utils/errorUtils.d.ts.map +0 -1
- package/lib/typescript/module/utils/index.d.ts +0 -7
- package/lib/typescript/module/utils/index.d.ts.map +0 -1
- package/lib/typescript/module/utils/languageUtils.d.ts +0 -38
- package/lib/typescript/module/utils/languageUtils.d.ts.map +0 -1
- package/lib/typescript/module/utils/loggerUtils.d.ts +0 -49
- package/lib/typescript/module/utils/loggerUtils.d.ts.map +0 -1
- package/lib/typescript/module/utils/platform.d.ts +0 -41
- package/lib/typescript/module/utils/platform.d.ts.map +0 -1
- package/lib/typescript/module/utils/platformInit.d.ts +0 -10
- package/lib/typescript/module/utils/platformInit.d.ts.map +0 -1
- package/lib/typescript/module/utils/platformInit.native.d.ts +0 -2
- package/lib/typescript/module/utils/platformInit.native.d.ts.map +0 -1
- package/lib/typescript/module/utils/requestUtils.d.ts +0 -124
- package/lib/typescript/module/utils/requestUtils.d.ts.map +0 -1
- package/lib/typescript/module/utils/sessionUtils.d.ts +0 -55
- package/lib/typescript/module/utils/sessionUtils.d.ts.map +0 -1
- package/lib/typescript/module/utils/validationUtils.d.ts +0 -86
- package/lib/typescript/module/utils/validationUtils.d.ts.map +0 -1
- package/lib/typescript/module/web/WebOxyContext.d.ts +0 -152
- package/lib/typescript/module/web/WebOxyContext.d.ts.map +0 -1
- package/lib/typescript/module/web/index.d.ts +0 -53
- package/lib/typescript/module/web/index.d.ts.map +0 -1
- package/lib/typescript/module/web.d.ts +0 -54
- package/lib/typescript/module/web.d.ts.map +0 -1
- package/lib/typescript/types/bip39.d.ts +0 -32
- package/lib/typescript/types/buffer.d.ts +0 -97
- package/lib/typescript/types/color.d.ts +0 -20
- package/lib/typescript/types/elliptic.d.ts +0 -62
- package/src/constants/version.ts +0 -15
- package/src/core/AuthManager.ts +0 -436
- package/src/core/CrossDomainAuth.ts +0 -307
- package/src/core/HttpService.ts +0 -752
- package/src/core/OxyServices.base.ts +0 -334
- package/src/core/OxyServices.errors.ts +0 -26
- package/src/core/OxyServices.ts +0 -129
- package/src/core/index.ts +0 -42
- package/src/core/mixins/OxyServices.analytics.ts +0 -53
- package/src/core/mixins/OxyServices.assets.ts +0 -412
- package/src/core/mixins/OxyServices.auth.ts +0 -358
- package/src/core/mixins/OxyServices.developer.ts +0 -114
- package/src/core/mixins/OxyServices.devices.ts +0 -119
- package/src/core/mixins/OxyServices.features.ts +0 -428
- package/src/core/mixins/OxyServices.fedcm.ts +0 -494
- package/src/core/mixins/OxyServices.karma.ts +0 -111
- package/src/core/mixins/OxyServices.language.ts +0 -127
- package/src/core/mixins/OxyServices.location.ts +0 -46
- package/src/core/mixins/OxyServices.payment.ts +0 -163
- package/src/core/mixins/OxyServices.popup.ts +0 -443
- package/src/core/mixins/OxyServices.privacy.ts +0 -182
- package/src/core/mixins/OxyServices.redirect.ts +0 -397
- package/src/core/mixins/OxyServices.security.ts +0 -103
- package/src/core/mixins/OxyServices.user.ts +0 -392
- package/src/core/mixins/OxyServices.utility.ts +0 -191
- package/src/core/mixins/index.ts +0 -91
- package/src/core/mixins/mixinHelpers.ts +0 -69
- package/src/crypto/index.ts +0 -25
- package/src/crypto/keyManager.ts +0 -962
- package/src/crypto/polyfill.ts +0 -81
- package/src/crypto/recoveryPhrase.ts +0 -166
- package/src/crypto/signatureService.ts +0 -323
- package/src/i18n/index.ts +0 -75
- package/src/i18n/locales/ar-SA.json +0 -120
- package/src/i18n/locales/ca-ES.json +0 -120
- package/src/i18n/locales/de-DE.json +0 -120
- package/src/i18n/locales/en-US.json +0 -956
- package/src/i18n/locales/es-ES.json +0 -944
- package/src/i18n/locales/fr-FR.json +0 -120
- package/src/i18n/locales/it-IT.json +0 -120
- package/src/i18n/locales/ja-JP.json +0 -119
- package/src/i18n/locales/ko-KR.json +0 -120
- package/src/i18n/locales/pt-PT.json +0 -120
- package/src/i18n/locales/zh-CN.json +0 -120
- package/src/models/interfaces.ts +0 -511
- package/src/models/session.ts +0 -30
- package/src/node/index.ts +0 -17
- package/src/shared/index.ts +0 -82
- package/src/shared/utils/colorUtils.ts +0 -155
- package/src/shared/utils/debugUtils.ts +0 -73
- package/src/shared/utils/errorUtils.ts +0 -181
- package/src/shared/utils/index.ts +0 -59
- package/src/shared/utils/networkUtils.ts +0 -248
- package/src/shared/utils/themeUtils.ts +0 -115
- package/src/types/bip39.d.ts +0 -32
- package/src/types/buffer.d.ts +0 -97
- package/src/types/color.d.ts +0 -20
- package/src/types/elliptic.d.ts +0 -62
- package/src/utils/__tests__/validationUtils.test.ts +0 -236
- package/src/utils/apiUtils.ts +0 -88
- package/src/utils/asyncUtils.ts +0 -252
- package/src/utils/cache.ts +0 -264
- package/src/utils/deviceManager.ts +0 -198
- package/src/utils/errorUtils.ts +0 -216
- package/src/utils/index.ts +0 -21
- package/src/utils/languageUtils.ts +0 -174
- package/src/utils/loggerUtils.ts +0 -153
- package/src/utils/platform.ts +0 -117
- package/src/utils/platformInit.native.ts +0 -13
- package/src/utils/platformInit.ts +0 -11
- package/src/utils/requestUtils.ts +0 -237
- package/src/utils/sessionUtils.ts +0 -206
- package/src/utils/validationUtils.ts +0 -174
- package/src/web/WebOxyContext.tsx +0 -470
- package/src/web/index.ts +0 -157
- package/src/web.ts +0 -230
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{useRef as t,useEffect as r,useState as a,useCallback as i,useMemo as o,createContext as n,useContext as s}from"react";import*as c from"sonner";import{create as u}from"zustand";import{useShallow as l}from"zustand/react/shallow";import{QueryClient as d,useQueryClient as h,QueryClientProvider as f,useQuery as p,useQueries as m,useMutation as b}from"@tanstack/react-query";function g(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if("function"==typeof t){var r=function e(){var r=!1;try{r=this instanceof e}catch{}return r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}),r}var y,v={},w={};var k,S,_={};function E(){return k||(k=1,_.read=function(e,t,r,a,i){var o,n,s=8*i-a-1,c=(1<<s)-1,u=c>>1,l=-7,d=r?i-1:0,h=r?-1:1,f=e[t+d];for(d+=h,o=f&(1<<-l)-1,f>>=-l,l+=s;l>0;o=256*o+e[t+d],d+=h,l-=8);for(n=o&(1<<-l)-1,o>>=-l,l+=a;l>0;n=256*n+e[t+d],d+=h,l-=8);if(0===o)o=1-u;else{if(o===c)return n?NaN:1/0*(f?-1:1);n+=Math.pow(2,a),o-=u}return(f?-1:1)*n*Math.pow(2,o-a)},_.write=function(e,t,r,a,i,o){var n,s,c,u=8*o-i-1,l=(1<<u)-1,d=l>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=a?0:o-1,p=a?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,n=l):(n=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-n))<1&&(n--,c*=2),(t+=n+d>=1?h/c:h*Math.pow(2,1-d))*c>=2&&(n++,c/=2),n+d>=l?(s=0,n=l):n+d>=1?(s=(t*c-1)*Math.pow(2,i),n+=d):(s=t*Math.pow(2,d-1)*Math.pow(2,i),n=0));i>=8;e[r+f]=255&s,f+=p,s/=256,i-=8);for(n=n<<i|s,u+=i;u>0;e[r+f]=255&n,f+=p,n/=256,u-=8);e[r+f-p]|=128*m}),_}var A=(S||(S=1,function(e){const t=function(){if(y)return w;y=1,w.byteLength=function(e){var t=o(e),r=t[0],a=t[1];return 3*(r+a)/4-a},w.toByteArray=function(e){var a,i,n=o(e),s=n[0],c=n[1],u=new r(function(e,t,r){return 3*(t+r)/4-r}(0,s,c)),l=0,d=c>0?s-4:s;for(i=0;i<d;i+=4)a=t[e.charCodeAt(i)]<<18|t[e.charCodeAt(i+1)]<<12|t[e.charCodeAt(i+2)]<<6|t[e.charCodeAt(i+3)],u[l++]=a>>16&255,u[l++]=a>>8&255,u[l++]=255&a;return 2===c&&(a=t[e.charCodeAt(i)]<<2|t[e.charCodeAt(i+1)]>>4,u[l++]=255&a),1===c&&(a=t[e.charCodeAt(i)]<<10|t[e.charCodeAt(i+1)]<<4|t[e.charCodeAt(i+2)]>>2,u[l++]=a>>8&255,u[l++]=255&a),u},w.fromByteArray=function(t){for(var r,a=t.length,i=a%3,o=[],n=16383,c=0,u=a-i;c<u;c+=n)o.push(s(t,c,c+n>u?u:c+n));return 1===i?(r=t[a-1],o.push(e[r>>2]+e[r<<4&63]+"==")):2===i&&(r=(t[a-2]<<8)+t[a-1],o.push(e[r>>10]+e[r>>4&63]+e[r<<2&63]+"=")),o.join("")};for(var e=[],t=[],r="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0;i<64;++i)e[i]=a[i],t[a.charCodeAt(i)]=i;function o(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function n(t){return e[t>>18&63]+e[t>>12&63]+e[t>>6&63]+e[63&t]}function s(e,t,r){for(var a,i=[],o=t;o<r;o+=3)a=(e[o]<<16&16711680)+(e[o+1]<<8&65280)+(255&e[o+2]),i.push(n(a));return i.join("")}return t["-".charCodeAt(0)]=62,t["_".charCodeAt(0)]=63,w}(),r=E(),a="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=n,e.SlowBuffer=function(e){return+e!=e&&(e=0),n.alloc(+e)},e.INSPECT_MAX_BYTES=50;const i=2147483647;function o(e){if(e>i)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,n.prototype),t}function n(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return u(e)}return s(e,t,r)}function s(e,t,r){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!n.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const r=0|f(e,t);let a=o(r);const i=a.write(e,t);return i!==r&&(a=a.slice(0,i)),a}(e,t);if(ArrayBuffer.isView(e))return function(e){if(Y(e,Uint8Array)){const t=new Uint8Array(e);return d(t.buffer,t.byteOffset,t.byteLength)}return l(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(Y(e,ArrayBuffer)||e&&Y(e.buffer,ArrayBuffer))return d(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&(Y(e,SharedArrayBuffer)||e&&Y(e.buffer,SharedArrayBuffer)))return d(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const a=e.valueOf&&e.valueOf();if(null!=a&&a!==e)return n.from(a,t,r);const i=function(e){if(n.isBuffer(e)){const t=0|h(e.length),r=o(t);return 0===r.length||e.copy(r,0,0,t),r}return void 0!==e.length?"number"!=typeof e.length||J(e.length)?o(0):l(e):"Buffer"===e.type&&Array.isArray(e.data)?l(e.data):void 0}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return n.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function c(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function u(e){return c(e),o(e<0?0:0|h(e))}function l(e){const t=e.length<0?0:0|h(e.length),r=o(t);for(let a=0;a<t;a+=1)r[a]=255&e[a];return r}function d(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');let a;return a=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r),Object.setPrototypeOf(a,n.prototype),a}function h(e){if(e>=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function f(e,t){if(n.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||Y(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,a=arguments.length>2&&!0===arguments[2];if(!a&&0===r)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return G(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return W(e).length;default:if(i)return a?-1:G(e).length;t=(""+t).toLowerCase(),i=!0}}function p(e,t,r){let a=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return R(this,t,r);case"utf8":case"utf-8":return x(this,t,r);case"ascii":return M(this,t,r);case"latin1":case"binary":return T(this,t,r);case"base64":return I(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return q(this,t,r);default:if(a)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),a=!0}}function m(e,t,r){const a=e[t];e[t]=e[r],e[r]=a}function b(e,t,r,a,i){if(0===e.length)return-1;if("string"==typeof r?(a=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),J(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=n.from(t,a)),n.isBuffer(t))return 0===t.length?-1:g(e,t,r,a,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):g(e,[t],r,a,i);throw new TypeError("val must be string, number or Buffer")}function g(e,t,r,a,i){let o,n=1,s=e.length,c=t.length;if(void 0!==a&&("ucs2"===(a=String(a).toLowerCase())||"ucs-2"===a||"utf16le"===a||"utf-16le"===a)){if(e.length<2||t.length<2)return-1;n=2,s/=2,c/=2,r/=2}function u(e,t){return 1===n?e[t]:e.readUInt16BE(t*n)}if(i){let a=-1;for(o=r;o<s;o++)if(u(e,o)===u(t,-1===a?0:o-a)){if(-1===a&&(a=o),o-a+1===c)return a*n}else-1!==a&&(o-=o-a),a=-1}else for(r+c>s&&(r=s-c),o=r;o>=0;o--){let r=!0;for(let a=0;a<c;a++)if(u(e,o+a)!==u(t,a)){r=!1;break}if(r)return o}return-1}function v(e,t,r,a){r=Number(r)||0;const i=e.length-r;a?(a=Number(a))>i&&(a=i):a=i;const o=t.length;let n;for(a>o/2&&(a=o/2),n=0;n<a;++n){const a=parseInt(t.substr(2*n,2),16);if(J(a))return n;e[r+n]=a}return n}function k(e,t,r,a){return Q(G(t,e.length-r),e,r,a)}function S(e,t,r,a){return Q(function(e){const t=[];for(let r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,a)}function _(e,t,r,a){return Q(W(t),e,r,a)}function A(e,t,r,a){return Q(function(e,t){let r,a,i;const o=[];for(let n=0;n<e.length&&!((t-=2)<0);++n)r=e.charCodeAt(n),a=r>>8,i=r%256,o.push(i),o.push(a);return o}(t,e.length-r),e,r,a)}function I(e,r,a){return 0===r&&a===e.length?t.fromByteArray(e):t.fromByteArray(e.slice(r,a))}function x(e,t,r){r=Math.min(e.length,r);const a=[];let i=t;for(;i<r;){const t=e[i];let o=null,n=t>239?4:t>223?3:t>191?2:1;if(i+n<=r){let r,a,s,c;switch(n){case 1:t<128&&(o=t);break;case 2:r=e[i+1],128==(192&r)&&(c=(31&t)<<6|63&r,c>127&&(o=c));break;case 3:r=e[i+1],a=e[i+2],128==(192&r)&&128==(192&a)&&(c=(15&t)<<12|(63&r)<<6|63&a,c>2047&&(c<55296||c>57343)&&(o=c));break;case 4:r=e[i+1],a=e[i+2],s=e[i+3],128==(192&r)&&128==(192&a)&&128==(192&s)&&(c=(15&t)<<18|(63&r)<<12|(63&a)<<6|63&s,c>65535&&c<1114112&&(o=c))}}null===o?(o=65533,n=1):o>65535&&(o-=65536,a.push(o>>>10&1023|55296),o=56320|1023&o),a.push(o),i+=n}return function(e){const t=e.length;if(t<=z)return String.fromCharCode.apply(String,e);let r="",a=0;for(;a<t;)r+=String.fromCharCode.apply(String,e.slice(a,a+=z));return r}(a)}e.kMaxLength=i,n.TYPED_ARRAY_SUPPORT=function(){try{const e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),n.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(n.prototype,"parent",{enumerable:!0,get:function(){if(n.isBuffer(this))return this.buffer}}),Object.defineProperty(n.prototype,"offset",{enumerable:!0,get:function(){if(n.isBuffer(this))return this.byteOffset}}),n.poolSize=8192,n.from=function(e,t,r){return s(e,t,r)},Object.setPrototypeOf(n.prototype,Uint8Array.prototype),Object.setPrototypeOf(n,Uint8Array),n.alloc=function(e,t,r){return function(e,t,r){return c(e),e<=0?o(e):void 0!==t?"string"==typeof r?o(e).fill(t,r):o(e).fill(t):o(e)}(e,t,r)},n.allocUnsafe=function(e){return u(e)},n.allocUnsafeSlow=function(e){return u(e)},n.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==n.prototype},n.compare=function(e,t){if(Y(e,Uint8Array)&&(e=n.from(e,e.offset,e.byteLength)),Y(t,Uint8Array)&&(t=n.from(t,t.offset,t.byteLength)),!n.isBuffer(e)||!n.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;let r=e.length,a=t.length;for(let i=0,o=Math.min(r,a);i<o;++i)if(e[i]!==t[i]){r=e[i],a=t[i];break}return r<a?-1:a<r?1:0},n.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},n.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return n.alloc(0);let r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;const a=n.allocUnsafe(t);let i=0;for(r=0;r<e.length;++r){let t=e[r];if(Y(t,Uint8Array))i+t.length>a.length?(n.isBuffer(t)||(t=n.from(t)),t.copy(a,i)):Uint8Array.prototype.set.call(a,t,i);else{if(!n.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(a,i)}i+=t.length}return a},n.byteLength=f,n.prototype._isBuffer=!0,n.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;t<e;t+=2)m(this,t,t+1);return this},n.prototype.swap32=function(){const e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let t=0;t<e;t+=4)m(this,t,t+3),m(this,t+1,t+2);return this},n.prototype.swap64=function(){const e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let t=0;t<e;t+=8)m(this,t,t+7),m(this,t+1,t+6),m(this,t+2,t+5),m(this,t+3,t+4);return this},n.prototype.toString=function(){const e=this.length;return 0===e?"":0===arguments.length?x(this,0,e):p.apply(this,arguments)},n.prototype.toLocaleString=n.prototype.toString,n.prototype.equals=function(e){if(!n.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===n.compare(this,e)},n.prototype.inspect=function(){let t="";const r=e.INSPECT_MAX_BYTES;return t=this.toString("hex",0,r).replace(/(.{2})/g,"$1 ").trim(),this.length>r&&(t+=" ... "),"<Buffer "+t+">"},a&&(n.prototype[a]=n.prototype.inspect),n.prototype.compare=function(e,t,r,a,i){if(Y(e,Uint8Array)&&(e=n.from(e,e.offset,e.byteLength)),!n.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===a&&(a=0),void 0===i&&(i=this.length),t<0||r>e.length||a<0||i>this.length)throw new RangeError("out of range index");if(a>=i&&t>=r)return 0;if(a>=i)return-1;if(t>=r)return 1;if(this===e)return 0;let o=(i>>>=0)-(a>>>=0),s=(r>>>=0)-(t>>>=0);const c=Math.min(o,s),u=this.slice(a,i),l=e.slice(t,r);for(let e=0;e<c;++e)if(u[e]!==l[e]){o=u[e],s=l[e];break}return o<s?-1:s<o?1:0},n.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},n.prototype.indexOf=function(e,t,r){return b(this,e,t,r,!0)},n.prototype.lastIndexOf=function(e,t,r){return b(this,e,t,r,!1)},n.prototype.write=function(e,t,r,a){if(void 0===t)a="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)a=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===a&&(a="utf8")):(a=r,r=void 0)}const i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");a||(a="utf8");let o=!1;for(;;)switch(a){case"hex":return v(this,e,t,r);case"utf8":case"utf-8":return k(this,e,t,r);case"ascii":case"latin1":case"binary":return S(this,e,t,r);case"base64":return _(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),o=!0}},n.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const z=4096;function M(e,t,r){let a="";r=Math.min(e.length,r);for(let i=t;i<r;++i)a+=String.fromCharCode(127&e[i]);return a}function T(e,t,r){let a="";r=Math.min(e.length,r);for(let i=t;i<r;++i)a+=String.fromCharCode(e[i]);return a}function R(e,t,r){const a=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>a)&&(r=a);let i="";for(let a=t;a<r;++a)i+=X[e[a]];return i}function q(e,t,r){const a=e.slice(t,r);let i="";for(let e=0;e<a.length-1;e+=2)i+=String.fromCharCode(a[e]+256*a[e+1]);return i}function O(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function L(e,t,r,a,i,o){if(!n.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<o)throw new RangeError('"value" argument is out of bounds');if(r+a>e.length)throw new RangeError("Index out of range")}function j(e,t,r,a,i){H(t,a,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o;let n=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=n,n>>=8,e[r++]=n,n>>=8,e[r++]=n,n>>=8,e[r++]=n,r}function U(e,t,r,a,i){H(t,a,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r+7]=o,o>>=8,e[r+6]=o,o>>=8,e[r+5]=o,o>>=8,e[r+4]=o;let n=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=n,n>>=8,e[r+2]=n,n>>=8,e[r+1]=n,n>>=8,e[r]=n,r+8}function D(e,t,r,a,i,o){if(r+a>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function C(e,t,a,i,o){return t=+t,a>>>=0,o||D(e,0,a,4),r.write(e,t,a,i,23,4),a+4}function P(e,t,a,i,o){return t=+t,a>>>=0,o||D(e,0,a,8),r.write(e,t,a,i,52,8),a+8}n.prototype.slice=function(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);const a=this.subarray(e,t);return Object.setPrototypeOf(a,n.prototype),a},n.prototype.readUintLE=n.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let a=this[e],i=1,o=0;for(;++o<t&&(i*=256);)a+=this[e+o]*i;return a},n.prototype.readUintBE=n.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let a=this[e+--t],i=1;for(;t>0&&(i*=256);)a+=this[e+--t]*i;return a},n.prototype.readUint8=n.prototype.readUInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),this[e]},n.prototype.readUint16LE=n.prototype.readUInt16LE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]|this[e+1]<<8},n.prototype.readUint16BE=n.prototype.readUInt16BE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]<<8|this[e+1]},n.prototype.readUint32LE=n.prototype.readUInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},n.prototype.readUint32BE=n.prototype.readUInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},n.prototype.readBigUInt64LE=Z(function(e){K(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||V(e,this.length-8);const a=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,i=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(a)+(BigInt(i)<<BigInt(32))}),n.prototype.readBigUInt64BE=Z(function(e){K(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||V(e,this.length-8);const a=t*2**24+65536*this[++e]+256*this[++e]+this[++e],i=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(a)<<BigInt(32))+BigInt(i)}),n.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let a=this[e],i=1,o=0;for(;++o<t&&(i*=256);)a+=this[e+o]*i;return i*=128,a>=i&&(a-=Math.pow(2,8*t)),a},n.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let a=t,i=1,o=this[e+--a];for(;a>0&&(i*=256);)o+=this[e+--a]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},n.prototype.readInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},n.prototype.readInt16LE=function(e,t){e>>>=0,t||O(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},n.prototype.readInt16BE=function(e,t){e>>>=0,t||O(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},n.prototype.readInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},n.prototype.readInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},n.prototype.readBigInt64LE=Z(function(e){K(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||V(e,this.length-8);const a=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(a)<<BigInt(32))+BigInt(t+256*this[++e]+65536*this[++e]+this[++e]*2**24)}),n.prototype.readBigInt64BE=Z(function(e){K(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||V(e,this.length-8);const a=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(a)<<BigInt(32))+BigInt(this[++e]*2**24+65536*this[++e]+256*this[++e]+r)}),n.prototype.readFloatLE=function(e,t){return e>>>=0,t||O(e,4,this.length),r.read(this,e,!0,23,4)},n.prototype.readFloatBE=function(e,t){return e>>>=0,t||O(e,4,this.length),r.read(this,e,!1,23,4)},n.prototype.readDoubleLE=function(e,t){return e>>>=0,t||O(e,8,this.length),r.read(this,e,!0,52,8)},n.prototype.readDoubleBE=function(e,t){return e>>>=0,t||O(e,8,this.length),r.read(this,e,!1,52,8)},n.prototype.writeUintLE=n.prototype.writeUIntLE=function(e,t,r,a){e=+e,t>>>=0,r>>>=0,a||L(this,e,t,r,Math.pow(2,8*r)-1,0);let i=1,o=0;for(this[t]=255&e;++o<r&&(i*=256);)this[t+o]=e/i&255;return t+r},n.prototype.writeUintBE=n.prototype.writeUIntBE=function(e,t,r,a){e=+e,t>>>=0,r>>>=0,a||L(this,e,t,r,Math.pow(2,8*r)-1,0);let i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},n.prototype.writeUint8=n.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,1,255,0),this[t]=255&e,t+1},n.prototype.writeUint16LE=n.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},n.prototype.writeUint16BE=n.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},n.prototype.writeUint32LE=n.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},n.prototype.writeUint32BE=n.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},n.prototype.writeBigUInt64LE=Z(function(e,t=0){return j(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))}),n.prototype.writeBigUInt64BE=Z(function(e,t=0){return U(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))}),n.prototype.writeIntLE=function(e,t,r,a){if(e=+e,t>>>=0,!a){const a=Math.pow(2,8*r-1);L(this,e,t,r,a-1,-a)}let i=0,o=1,n=0;for(this[t]=255&e;++i<r&&(o*=256);)e<0&&0===n&&0!==this[t+i-1]&&(n=1),this[t+i]=(e/o|0)-n&255;return t+r},n.prototype.writeIntBE=function(e,t,r,a){if(e=+e,t>>>=0,!a){const a=Math.pow(2,8*r-1);L(this,e,t,r,a-1,-a)}let i=r-1,o=1,n=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===n&&0!==this[t+i+1]&&(n=1),this[t+i]=(e/o|0)-n&255;return t+r},n.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},n.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},n.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},n.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},n.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||L(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},n.prototype.writeBigInt64LE=Z(function(e,t=0){return j(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),n.prototype.writeBigInt64BE=Z(function(e,t=0){return U(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),n.prototype.writeFloatLE=function(e,t,r){return C(this,e,t,!0,r)},n.prototype.writeFloatBE=function(e,t,r){return C(this,e,t,!1,r)},n.prototype.writeDoubleLE=function(e,t,r){return P(this,e,t,!0,r)},n.prototype.writeDoubleBE=function(e,t,r){return P(this,e,t,!1,r)},n.prototype.copy=function(e,t,r,a){if(!n.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),a||0===a||(a=this.length),t>=e.length&&(t=e.length),t||(t=0),a>0&&a<r&&(a=r),a===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("sourceEnd out of bounds");a>this.length&&(a=this.length),e.length-t<a-r&&(a=e.length-t+r);const i=a-r;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,r,a):Uint8Array.prototype.set.call(e,this.subarray(r,a),t),i},n.prototype.fill=function(e,t,r,a){if("string"==typeof e){if("string"==typeof t?(a=t,t=0,r=this.length):"string"==typeof r&&(a=r,r=this.length),void 0!==a&&"string"!=typeof a)throw new TypeError("encoding must be a string");if("string"==typeof a&&!n.isEncoding(a))throw new TypeError("Unknown encoding: "+a);if(1===e.length){const t=e.charCodeAt(0);("utf8"===a&&t<128||"latin1"===a)&&(e=t)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;let i;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i<r;++i)this[i]=e;else{const o=n.isBuffer(e)?e:n.from(e,a),s=o.length;if(0===s)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(i=0;i<r-t;++i)this[i+t]=o[i%s]}return this};const N={};function F(e,t,r){N[e]=class extends r{constructor(){super(),Object.defineProperty(this,"message",{value:t.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${e}]`,this.stack,delete this.name}get code(){return e}set code(e){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:e,writable:!0})}toString(){return`${this.name} [${e}]: ${this.message}`}}}function B(e){let t="",r=e.length;const a="-"===e[0]?1:0;for(;r>=a+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function H(e,t,r,a,i,o){if(e>r||e<t){const r="bigint"==typeof t?"n":"";let a;throw a=0===t||t===BigInt(0)?`>= 0${r} and < 2${r} ** ${8*(o+1)}${r}`:`>= -(2${r} ** ${8*(o+1)-1}${r}) and < 2 ** ${8*(o+1)-1}${r}`,new N.ERR_OUT_OF_RANGE("value",a,e)}!function(e,t,r){K(t,"offset"),void 0!==e[t]&&void 0!==e[t+r]||V(t,e.length-(r+1))}(a,i,o)}function K(e,t){if("number"!=typeof e)throw new N.ERR_INVALID_ARG_TYPE(t,"number",e)}function V(e,t,r){if(Math.floor(e)!==e)throw K(e,r),new N.ERR_OUT_OF_RANGE("offset","an integer",e);if(t<0)throw new N.ERR_BUFFER_OUT_OF_BOUNDS;throw new N.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${t}`,e)}F("ERR_BUFFER_OUT_OF_BOUNDS",function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),F("ERR_INVALID_ARG_TYPE",function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`},TypeError),F("ERR_OUT_OF_RANGE",function(e,t,r){let a=`The value of "${e}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=B(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=B(i)),i+="n"),a+=` It must be ${t}. Received ${i}`,a},RangeError);const $=/[^+/0-9A-Za-z-_]/g;function G(e,t){let r;t=t||1/0;const a=e.length;let i=null;const o=[];for(let n=0;n<a;++n){if(r=e.charCodeAt(n),r>55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(n+1===a){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function W(e){return t.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace($,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function Q(e,t,r,a){let i;for(i=0;i<a&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function Y(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function J(e){return e!=e}const X=function(){const e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){const a=16*r;for(let i=0;i<16;++i)t[a+i]=e[r]+e[i]}return t}();function Z(e){return"undefined"==typeof BigInt?ee:e}function ee(){throw new Error("BigInt not supported")}}(v)),v);const I="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{};I.Buffer||(I.Buffer=A.Buffer);let x=null;const z={getRandomValues(e){const t=function(e){if(!x)try{x=require("expo-crypto")}catch{throw new Error("expo-crypto is required for crypto.getRandomValues polyfill")}const t=x;if(!t)throw new Error("Failed to load expo-crypto module");return t.getRandomBytes(e)}(e.byteLength);return new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(t),e}};void 0===I.crypto?I.crypto=z:"function"!=typeof I.crypto.getRandomValues&&(I.crypto.getRandomValues=z.getRandomValues);class M extends Error{constructor(e,t="AUTH_ERROR",r=401){super(e),this.name="OxyAuthenticationError",this.code=t,this.status=r}}class T extends M{constructor(e,t){super(`Authentication timeout (${t}ms): ${e} requires user authentication. Please ensure the user is logged in before calling this method.`,"AUTH_TIMEOUT",408),this.name="OxyAuthenticationTimeoutError"}}class R extends Error{}function q(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw new Error("base64 string is not of the correct length")}try{return function(e){return decodeURIComponent(atob(e).replace(/(.)/g,(e,t)=>{let r=t.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r}))}(t)}catch(e){return atob(t)}}function O(e,t){if("string"!=typeof e)throw new R("Invalid token specified: must be a string");t||(t={});const r=!0===t.header?0:1,a=e.split(".")[r];if("string"!=typeof a)throw new R(`Invalid token specified: missing part #${r+1}`);let i;try{i=q(a)}catch(e){throw new R(`Invalid token specified: invalid base64 for part #${r+1} (${e.message})`)}try{return JSON.parse(i)}catch(e){throw new R(`Invalid token specified: invalid json for part #${r+1} (${e.message})`)}}var L;R.prototype.name="InvalidTokenError",function(e){e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e[e.NONE=4]="NONE"}(L||(L={}));const j=new class{constructor(){this.level=L.INFO,this.isDevelopment=!1}setLevel(e){this.level=e}shouldLog(e){return e>=this.level}formatMessage(e,t,r){return`[${(new Date).toISOString()}] ${e}${r?` [${Object.entries(r).map(([e,t])=>`${e}:${t}`).join(", ")}]`:""}: ${t}`}debug(e,t,...r){if(this.shouldLog(L.DEBUG)){const a=this.formatMessage("DEBUG",e,t);this.isDevelopment&&console.log(a,...r)}}info(e,t,...r){if(this.shouldLog(L.INFO)){const a=this.formatMessage("INFO",e,t);console.log(a,...r)}}warn(e,t,...r){if(this.shouldLog(L.WARN)){const a=this.formatMessage("WARN",e,t);console.warn(a,...r)}}error(e,t,r,...a){if(this.shouldLog(L.ERROR)){const i=this.formatMessage("ERROR",e,r);t?console.error(i,t,...a):console.error(i,...a)}}auth(e,t,...r){this.info(`🔐 ${e}`,{...t,category:"auth"},...r)}api(e,t,...r){this.info(`🌐 ${e}`,{...t,category:"api"},...r)}session(e,t,...r){this.info(`📱 ${e}`,{...t,category:"session"},...r)}user(e,t,...r){this.info(`👤 ${e}`,{...t,category:"user"},...r)}device(e,t,...r){this.info(`📱 ${e}`,{...t,category:"device"},...r)}payment(e,t,...r){this.info(`💳 ${e}`,{...t,category:"payment"},...r)}performance(e,t,r){const a=`⏱️ ${e} completed in ${t}ms`;(t>1e3?L.WARN:L.INFO)===L.WARN?this.warn(a,{...r,category:"performance",duration:t}):this.info(a,{...r,category:"performance",duration:t})}errorWithStack(e,t,r){this.error(e,t,{...r,stack:t.stack})}group(e,t){this.isDevelopment&&this.shouldLog(L.DEBUG)?(console.group(e),t(),console.groupEnd()):t()}},U=(e,t,...r)=>j.auth(e,t,...r),D=(e,t,...r)=>j.api(e,t,...r),C=(e,t,...r)=>j.session(e,t,...r),P=(e,t,...r)=>j.user(e,t,...r),N=(e,t,...r)=>j.device(e,t,...r),F=(e,t,...r)=>j.payment(e,t,...r),B=(e,t,r)=>j.performance(e,t,r),H={UNAUTHORIZED:"UNAUTHORIZED",FORBIDDEN:"FORBIDDEN",INVALID_TOKEN:"INVALID_TOKEN",MISSING_TOKEN:"MISSING_TOKEN",VALIDATION_ERROR:"VALIDATION_ERROR",BAD_REQUEST:"BAD_REQUEST",MISSING_PARAMETER:"MISSING_PARAMETER",INVALID_FORMAT:"INVALID_FORMAT",NOT_FOUND:"NOT_FOUND",ALREADY_EXISTS:"ALREADY_EXISTS",CONFLICT:"CONFLICT",INTERNAL_ERROR:"INTERNAL_ERROR",SERVICE_UNAVAILABLE:"SERVICE_UNAVAILABLE",TIMEOUT:"TIMEOUT",NETWORK_ERROR:"NETWORK_ERROR",CONNECTION_FAILED:"CONNECTION_FAILED"};function K(e,t=H.INTERNAL_ERROR,r=500,a){return{message:e,code:t,status:r,details:a}}function V(e){if(e&&"object"==typeof e&&"code"in e&&"status"in e){const t=e;return t.message&&t.message.trim()?t:{...t,message:t.message||"An error occurred"}}if(e instanceof Error&&"AbortError"===e.name)return K("Request timeout or cancelled",H.TIMEOUT,0);if(e instanceof TypeError)return e.message.includes("fetch")||e.message.includes("network")||e.message.includes("Failed to fetch")?K("Network error - failed to connect to server",H.NETWORK_ERROR,0):K(e.message||"Network error occurred",H.NETWORK_ERROR,0);if(e&&"object"==typeof e&&"response"in e){const t=e,r=t.response?.status||t.status;if(r)return K(t.message||`HTTP ${r} error`,function(e){switch(e){case 400:return H.BAD_REQUEST;case 401:return H.UNAUTHORIZED;case 403:return H.FORBIDDEN;case 404:return H.NOT_FOUND;case 409:return H.CONFLICT;case 422:return H.VALIDATION_ERROR;case 500:default:return H.INTERNAL_ERROR;case 503:return H.SERVICE_UNAVAILABLE}}(r),r)}if(e instanceof Error)return e.message.includes("timeout")||e.message.includes("aborted")?K("Request timeout",H.TIMEOUT,0):e.message.includes("network")||e.message.includes("fetch")?K(e.message||"Network error occurred",H.NETWORK_ERROR,0):K(e.message||"Unknown error occurred",H.INTERNAL_ERROR,500);return K((e?String(e):"").trim()||"Unknown error occurred",H.INTERNAL_ERROR,500)}function $(e,t){const r=t.filter(t=>!e[t]);if(r.length>0)throw K(`Missing required fields: ${r.join(", ")}`,H.MISSING_PARAMETER,400)}class G{constructor(e=3e5){this.cache=new Map,this.hits=0,this.misses=0,this.defaultTTL=e}get(e){const t=this.cache.get(e);if(!t)return this.misses++,null;return Date.now()>t.expiresAt?(this.cache.delete(e),this.misses++,null):(this.hits++,t.data)}set(e,t,r){const a=Date.now(),i=a+(r||this.defaultTTL);this.cache.set(e,{data:t,timestamp:a,expiresAt:i})}delete(e){return this.cache.delete(e)}clear(){this.cache.clear(),this.hits=0,this.misses=0}has(e){const t=this.cache.get(e);return!!t&&(!(Date.now()>t.expiresAt)||(this.cache.delete(e),!1))}keys(){const e=Date.now(),t=[];for(const[r,a]of this.cache.entries())e<=a.expiresAt?t.push(r):this.cache.delete(r);return t}cleanup(){const e=Date.now();let t=0;for(const[r,a]of this.cache.entries())e>a.expiresAt&&(this.cache.delete(r),t++);return t}size(){return this.cache.size}getStats(){const e=this.hits+this.misses;return{size:this.cache.size,hits:this.hits,misses:this.misses,hitRate:e>0?this.hits/e:0}}resetStats(){this.hits=0,this.misses=0}}let W=null;const Q=new Set;class Y{constructor(){this.pendingRequests=new Map}async deduplicate(e,t){const r=this.pendingRequests.get(e);if(r)return r;const a=t().finally(()=>{this.pendingRequests.delete(e)});return this.pendingRequests.set(e,a),a}clear(){this.pendingRequests.clear()}size(){return this.pendingRequests.size}}class J{constructor(e=10,t=100){this.queue=[],this.running=0,this.maxConcurrent=e,this.maxQueueSize=t}async enqueue(e){if(this.queue.length>=this.maxQueueSize)throw new Error("Request queue is full");return new Promise((t,r)=>{this.queue.push(async()=>{try{const r=await e();t(r)}catch(e){r(e)}}),this.process()})}async process(){if(this.running>=this.maxConcurrent||0===this.queue.length)return;this.running++;const e=this.queue.shift();if(e)try{await e()}finally{this.running--,this.process()}else this.running--}clear(){this.queue=[]}size(){return this.queue.length}runningCount(){return this.running}}class X{constructor(e=!1,t="error",r=""){this.enabled=e,this.level=t,this.prefix=r}shouldLog(e){if(!this.enabled||"none"===this.level)return!1;const t=["none","error","warn","info","debug"];return t.indexOf(e)<=t.indexOf(this.level)}formatMessage(...e){return this.prefix?[`[${this.prefix}]`,...e]:e}error(...e){this.shouldLog("error")&&console.error(...this.formatMessage(...e))}warn(...e){this.shouldLog("warn")&&console.warn(...this.formatMessage(...e))}info(...e){this.shouldLog("info")&&console.info(...this.formatMessage(...e))}debug(...e){this.shouldLog("debug")&&console.log(...this.formatMessage(...e))}}async function Z(e,t,r){try{return await e()}catch(e){return t?t(e):j.error(`Error in ${r||"operation"}`,e instanceof Error?e:new Error(String(e)),{component:"asyncUtils",method:"withErrorHandling"}),null}}async function ee(e,t){return(await Promise.allSettled(e.map((e,r)=>Z(e,e=>t?.(e,r))))).map(e=>"fulfilled"===e.status?e.value:null)}async function te(e,t=3,r=1e3,a){let i;const o=a||(e=>!(e?.response?.status>=400&&e?.response?.status<500));for(let a=0;a<=t;a++)try{return await e()}catch(e){if(i=e,a===t)break;if(!o(e))break;const n=r*Math.pow(2,a)+1e3*Math.random();await new Promise(e=>setTimeout(e,n))}throw i}function re(e,t){let r;return(...a)=>new Promise((i,o)=>{clearTimeout(r),r=setTimeout(async()=>{try{const t=await e(...a);i(t)}catch(e){o(e)}},t)})}function ae(e,t,r){let a=!1,i=null;return(...t)=>(a||(a=!0,i=e(...t),setTimeout(()=>{a=!1},r)),i)}async function ie(e,t){const r=[];for(let a=0;a<e.length;a++){const i=await e[a]();r.push(i),t?.(a+1,e.length)}return r}async function oe(e,t,r){for(let a=0;a<e.length;a+=t){const i=e.slice(a,a+t);await r(i)}}function ne(e){let t=null;return{execute:async()=>(t=new AbortController,await e(t.signal)),cancel:()=>{t?.abort()}}}async function se(e,t,r){const a=new Promise((e,a)=>{setTimeout(()=>{a(new Error(r||`Operation timed out after ${t}ms`))},t)});return Promise.race([e,a])}async function ce(e,t){t(!0);try{return await e()}finally{t(!1)}}const ue=e=>new Promise(t=>setTimeout(t,e));async function le(e,t,r=3){return te(e,r,1e3,e=>{const r=e?.code||e?.status||e?.message;return t.includes(r)})}let de=null;function he(){return null===de&&(de=globalThis.__REACT_NATIVE_PLATFORM__||("undefined"!=typeof navigator&&"ReactNative"===navigator.product?"unknown":"undefined"!=typeof process&&process.versions?.node||"undefined"!=typeof window&&"undefined"!=typeof document?"web":"unknown")),de}function fe(){return"ios"===he()}function pe(){return"android"===he()}const me=function(){const e=he();return"ios"===e||"android"===e}();class be{constructor(){this.accessToken=null,this.refreshToken=null,this.csrfToken=null,this.csrfTokenFetchPromise=null}static getInstance(){return be.instance||(be.instance=new be),be.instance}setTokens(e,t=""){this.accessToken=e,this.refreshToken=t}getAccessToken(){return this.accessToken}getRefreshToken(){return this.refreshToken}clearTokens(){this.accessToken=null,this.refreshToken=null}hasAccessToken(){return!!this.accessToken}setCsrfToken(e){this.csrfToken=e}getCsrfToken(){return this.csrfToken}setCsrfTokenFetchPromise(e){this.csrfTokenFetchPromise=e}getCsrfTokenFetchPromise(){return this.csrfTokenFetchPromise}clearCsrfToken(){this.csrfToken=null,this.csrfTokenFetchPromise=null}}class ge{constructor(e){this.requestMetrics={totalRequests:0,successfulRequests:0,failedRequests:0,cacheHits:0,cacheMisses:0,averageResponseTime:0},this.config=e,this.baseURL=e.baseURL,this.tokenStore=be.getInstance(),this.logger=new X(e.enableLogging||!1,e.logLevel||"error","HttpService"),this.cache=new G(e.cacheTTL||3e5),function(e){Q.add(e),W||(W=setInterval(()=>{for(const e of Q)e.cleanup()},6e4))}(this.cache),this.deduplicator=new Y,this.requestQueue=new J(e.maxConcurrentRequests||10,e.requestQueueSize||100)}isFormData(e){if(!e)return!1;if(e instanceof FormData)return!0;if("object"==typeof e&&null!==e){const t=e.constructor?.name;if("FormData"===t||"FormDataImpl"===t)return!0;if("function"==typeof e.append&&"function"==typeof e.get&&"function"==typeof e.has)return!0}return!1}async request(e){const{method:t,url:r,data:a,params:i,timeout:o=this.config.requestTimeout||5e3,signal:n,cache:s="GET"===t,cacheTTL:c,deduplicate:u=!0,retry:l=!1!==this.config.enableRetry,maxRetries:d=this.config.maxRetries||3}=e,h=s?this.generateCacheKey(t,r,a||i):null;if(s&&h){const e=this.cache.get(h);if(null!==e)return this.requestMetrics.cacheHits++,this.logger.debug("Cache hit:",r),e;this.requestMetrics.cacheMisses++}const f=async()=>{const s=Date.now();try{const c=this.buildURL(r,i),u=await this.getAuthHeader(),l=["POST","PUT","PATCH","DELETE"].includes(t),d=l?await this.fetchCsrfToken():null,h=this.isFormData(a),f=new AbortController,p=o?setTimeout(()=>f.abort(),o):null;n&&n.addEventListener("abort",()=>f.abort());const m={Accept:"application/json"};h||(m["Content-Type"]="application/json"),u&&(m.Authorization=u),d&&(m["X-CSRF-Token"]=d),me&&l&&(m["X-Native-App"]="true"),l&&__DEV__&&console.log("[HttpService] CSRF Debug:",{url:r,method:t,isNativeApp:me,platformOS:he(),hasCsrfToken:!!d,csrfTokenLength:d?.length,hasNativeAppHeader:"true"===m["X-Native-App"]}),e.headers&&Object.entries(e.headers).forEach(([e,t])=>{h&&"content-type"===e.toLowerCase()?this.logger.debug("Ignoring Content-Type header for FormData - will be set automatically"):m[e]=t});const b="GET"!==t&&a?h?a:JSON.stringify(a):void 0,g=await fetch(c,{method:t,headers:m,body:b,signal:f.signal,credentials:"include"});if(p&&clearTimeout(p),!g.ok){401===g.status&&this.tokenStore.clearTokens();let e=`HTTP ${g.status}: ${g.statusText}`;const t=g.headers.get("content-type");if(t&&t.includes("application/json"))try{const t=await g.json();t?.message?e=t.message:t?.error&&(e=t.error)}catch(e){this.logger.warn("Failed to parse error response JSON:",e)}const r=new Error(e);throw r.status=g.status,r.response={status:g.status,statusText:g.statusText},r}const y=g.headers.get("content-type");let v;if(y&&y.includes("application/json"))try{v=await g.json(),v=null==v?null:this.unwrapResponse(v)}catch(e){if(!(e instanceof SyntaxError))throw this.logger.warn("Failed to read response:",e),new Error("Failed to read response from server");this.logger.warn("Failed to parse JSON response (malformed or empty):",e),v=null}else if(y&&(y.includes("application/octet-stream")||y.includes("image/")||y.includes("video/")||y.includes("audio/")))v=await g.blob();else{v=await g.text()||null}const w=Date.now()-s;return this.updateMetrics(!0,w),this.config.onRequestEnd?.(r,t,w,!0),v}catch(e){const a=Date.now()-s;if(this.updateMetrics(!1,a),this.config.onRequestEnd?.(r,t,a,!1),this.config.onRequestError?.(r,t,e instanceof Error?e:new Error(String(e))),e instanceof Error&&"AbortError"===e.name)throw V(e);throw V(e)}},p=l?()=>te(f,d,this.config.retryDelay||1e3):f,m=u?this.generateCacheKey(t,r,a||i):null,b=m?()=>this.deduplicator.deduplicate(m,p):p,g=await this.requestQueue.enqueue(b);return s&&h&&g&&this.cache.set(h,g,c),g}generateCacheKey(e,t,r){if(!r||"object"==typeof r&&0===Object.keys(r).length)return`${e}:${t}`;const a=JSON.stringify(r);if(a.length<1e3)return`${e}:${t}:${a}`;return`${e}:${t}:${"object"==typeof r&&null!==r?Object.keys(r).sort().join(",")+":"+a.length:String(r).substring(0,100)}`}buildURL(e,t){const r=e.startsWith("http")?e:`${this.baseURL}${e}`;if(!t||0===Object.keys(t).length)return r;const a=new URLSearchParams;Object.entries(t).forEach(([e,t])=>{null!=t&&a.append(e,String(t))});const i=a.toString();return i?`${r}${r.includes("?")?"&":"?"}${i}`:r}async fetchCsrfToken(){const e=this.tokenStore.getCsrfToken();if(e)return __DEV__&&console.log("[HttpService] Using cached CSRF token"),e;const t=this.tokenStore.getCsrfTokenFetchPromise();if(t)return __DEV__&&console.log("[HttpService] Waiting for existing CSRF fetch"),t;const r=(async()=>{try{__DEV__&&console.log("[HttpService] Fetching CSRF token from:",`${this.baseURL}/api/csrf-token`);const e=new AbortController,t=setTimeout(()=>e.abort(),5e3),r=await fetch(`${this.baseURL}/api/csrf-token`,{method:"GET",headers:{Accept:"application/json"},credentials:"include",signal:e.signal});if(clearTimeout(t),__DEV__&&console.log("[HttpService] CSRF fetch response:",r.status,r.ok),r.ok){const e=await r.json();__DEV__&&console.log("[HttpService] CSRF response data:",e);const t=e.csrfToken||null;return this.tokenStore.setCsrfToken(t),this.logger.debug("CSRF token fetched"),t}const a=r.headers.get("X-CSRF-Token");return a?(this.tokenStore.setCsrfToken(a),this.logger.debug("CSRF token from header"),a):(__DEV__&&console.log("[HttpService] CSRF fetch failed with status:",r.status),this.logger.warn("Failed to fetch CSRF token:",r.status),null)}catch(e){return __DEV__&&console.log("[HttpService] CSRF fetch error:",e),this.logger.warn("CSRF token fetch error:",e),null}finally{this.tokenStore.setCsrfTokenFetchPromise(null)}})();return this.tokenStore.setCsrfTokenFetchPromise(r),r}async getAuthHeader(){const e=this.tokenStore.getAccessToken();if(!e)return null;try{const t=O(e),r=Math.floor(Date.now()/1e3);if(t.exp&&t.exp-r<60&&t.sessionId)try{const e=`${this.baseURL}/api/session/token/${t.sessionId}`,r=await fetch(e,{method:"GET",headers:{Accept:"application/json"},signal:AbortSignal.timeout(5e3),credentials:"include"});if(r.ok){const{accessToken:e}=await r.json();return this.tokenStore.setTokens(e),this.logger.debug("Token refreshed"),`Bearer ${e}`}}catch(e){this.logger.warn("Token refresh failed, using current token")}return`Bearer ${e}`}catch(t){return this.logger.error("Error processing token:",t),`Bearer ${e}`}}unwrapResponse(e){return e&&"object"==typeof e&&"data"in e&&"pagination"in e?e:e&&"object"==typeof e&&"data"in e&&!Array.isArray(e)?e.data:e}updateMetrics(e,t){this.requestMetrics.totalRequests++,e?this.requestMetrics.successfulRequests++:this.requestMetrics.failedRequests++;this.requestMetrics.averageResponseTime=.9*this.requestMetrics.averageResponseTime+.1*t}async get(e,t){return{data:await this.request({method:"GET",url:e,...t})}}async post(e,t,r){return{data:await this.request({method:"POST",url:e,data:t,...r})}}async put(e,t,r){return{data:await this.request({method:"PUT",url:e,data:t,...r})}}async patch(e,t,r){return{data:await this.request({method:"PATCH",url:e,data:t,...r})}}async delete(e,t){return{data:await this.request({method:"DELETE",url:e,...t})}}setTokens(e,t=""){this.tokenStore.setTokens(e,t)}clearTokens(){this.tokenStore.clearTokens(),this.tokenStore.clearCsrfToken()}getAccessToken(){return this.tokenStore.getAccessToken()}hasAccessToken(){return this.tokenStore.hasAccessToken()}getBaseURL(){return this.baseURL}clearCache(){this.cache.clear()}clearCacheEntry(e){this.cache.delete(e)}getCacheStats(){const e=this.cache.getStats(),t=this.requestMetrics.cacheHits+this.requestMetrics.cacheMisses;return{size:e.size,hits:this.requestMetrics.cacheHits,misses:this.requestMetrics.cacheMisses,hitRate:t>0?this.requestMetrics.cacheHits/t:0}}getMetrics(){return{...this.requestMetrics}}static __resetTokensForTests(){try{be.getInstance().clearTokens()}catch(e){}}}class ye{constructor(...e){const t=e[0];if(!t||"object"!=typeof t)throw new Error("OxyConfig is required");this.config=t,this.cloudURL=t.cloudURL||"https://cloud.oxy.so",this.httpService=new ge(t)}static __resetTokensForTests(){ge.__resetTokensForTests()}async makeRequest(e,t,r,a={}){return this.httpService.request({method:e,url:t,data:"GET"!==e?r:void 0,params:"GET"===e?r:void 0,...a})}getBaseURL(){return this.httpService.getBaseURL()}getClient(){return this.httpService}getMetrics(){return this.httpService.getMetrics()}clearCache(){this.httpService.clearCache()}clearCacheEntry(e){this.httpService.clearCacheEntry(e)}getCacheStats(){return this.httpService.getCacheStats()}getCloudURL(){return this.cloudURL}setTokens(e,t=""){this.httpService.setTokens(e,t)}clearTokens(){this.httpService.clearTokens()}getCurrentUserId(){const e=this.httpService.getAccessToken();if(!e)return null;try{const t=O(e);return t.userId||t.id||null}catch(e){return null}}hasValidToken(){return this.httpService.hasAccessToken()}getAccessToken(){return this.httpService.getAccessToken()}async waitForAuth(e=5e3){if(this.httpService.hasAccessToken())return!0;const t=performance.now()+e;let r=50;for(;performance.now()<t;){if(await new Promise(e=>setTimeout(e,r)),this.httpService.hasAccessToken())return!0;r<200&&(r=Math.min(1.5*r,200))}return!1}async withAuthRetry(e,t,r={}){const{maxRetries:a=2,retryDelay:i=1e3,authTimeoutMs:o=5e3}=r;for(let r=0;r<=a;r++)try{if(!this.httpService.hasAccessToken()){if(0!==r)throw new M(`Authentication required: ${t} requires a valid access token.`,"AUTH_REQUIRED");if(!await this.waitForAuth(o))throw new T(t,o)}return await e()}catch(e){const t=r===a,o=e&&"object"==typeof e?e:null;if((401===o?.response?.status||"MISSING_TOKEN"===o?.code||o?.message?.includes("Authentication")||e instanceof M)&&!t&&!(e instanceof T)){await new Promise(e=>setTimeout(e,i));continue}if(e instanceof M)throw e;throw this.handleError(e)}throw new M(`${t} failed after ${a+1} attempts`)}async validate(){if(!this.hasValidToken())return!1;try{return!0===(await this.makeRequest("GET","/api/auth/validate",void 0,{cache:!1,retry:!1})).valid}catch(e){return!1}}handleError(e){const t=V(e),r=t.message?.trim()||"An unexpected error occurred",a=new Error(r);return a.code=t.code,a.status=t.status,a.details=t.details,a}async healthCheck(){try{return await this.makeRequest("GET","/health",void 0,{cache:!1,retry:!1,timeout:5e3})}catch(e){throw this.handleError(e)}}}const ve=()=>"undefined"!=typeof __DEV__&&__DEV__,we=e=>{const t=`[${e}]`;return{log:(...e)=>((e,...t)=>{ve()&&console.log(e,...t)})(t,...e),warn:(...e)=>((e,...t)=>{ve()&&console.warn(e,...t)})(t,...e),error:(...e)=>((e,...t)=>{ve()&&console.error(e,...t)})(t,...e)}},ke=we("FedCM");let Se=!1,_e=null,Ee=null;const Ae=we("PopupAuth");function Ie(e){const t=new URLSearchParams;for(const[r,a]of Object.entries(e))null!=a&&t.append(r,a.toString());return t}function xe(e,t){if(!t)return e;const r=Ie(t).toString();return r?`${e}?${r}`:e}function ze(e){return Ie(e)}function Me(e,t){if("string"==typeof e)try{return JSON.parse(e)}catch{return t}return e}const Te=[{id:"en-US",name:"English",nativeName:"English",flag:"🇺🇸",icon:"translate",color:"#007AFF"},{id:"es-ES",name:"Spanish",nativeName:"Español",flag:"🇪🇸",icon:"translate",color:"#FF3B30"},{id:"ca-ES",name:"Catalan",nativeName:"Català",flag:"🇪🇸",icon:"translate",color:"#0CA678"},{id:"fr-FR",name:"French",nativeName:"Français",flag:"🇫🇷",icon:"translate",color:"#5856D6"},{id:"de-DE",name:"German",nativeName:"Deutsch",flag:"🇩🇪",icon:"translate",color:"#FF9500"},{id:"it-IT",name:"Italian",nativeName:"Italiano",flag:"🇮🇹",icon:"translate",color:"#34C759"},{id:"pt-PT",name:"Portuguese",nativeName:"Português",flag:"🇵🇹",icon:"translate",color:"#AF52DE"},{id:"ja-JP",name:"Japanese",nativeName:"日本語",flag:"🇯🇵",icon:"translate",color:"#FF2D92"},{id:"ko-KR",name:"Korean",nativeName:"한국어",flag:"🇰🇷",icon:"translate",color:"#32D74B"},{id:"zh-CN",name:"Chinese",nativeName:"中文",flag:"🇨🇳",icon:"translate",color:"#FF9F0A"},{id:"ar-SA",name:"Arabic",nativeName:"العربية",flag:"🇸🇦",icon:"translate",color:"#30B0C7"}],Re="en-US";function qe(e){if(!e)return null;const t=Te.find(t=>t.id===e);if(t)return t;const r=e.split("-")[0],a=Te.find(e=>e.id.startsWith(r+"-"));return a||null}function Oe(e){const t=qe(e);return t?.name||e||Re}function Le(e){const t=qe(e);return t?.nativeName||e||Re}function je(e){if(!e)return Re;if(e.includes("-"))return e;return{en:"en-US",es:"es-ES",ca:"ca-ES",fr:"fr-FR",de:"de-DE",it:"it-IT",pt:"pt-PT",ja:"ja-JP",ko:"ko-KR",zh:"zh-CN",ar:"ar-SA"}[e]||e}const Ue={SHORT:6e4,MEDIUM:12e4,LONG:3e5,VERY_LONG:6e5,EXTRA_LONG:18e5};const De=[function(e){return class extends e{constructor(...e){super(...e)}async register(e,t,r){try{const a=await this.makeRequest("POST","/api/auth/register",{publicKey:e,signature:t,timestamp:r},{cache:!1});if(!a||"object"==typeof a&&0===Object.keys(a).length)throw new M("Registration failed","REGISTER_FAILED",400);return a}catch(e){throw this.handleError(e)}}async requestChallenge(e){try{return await this.makeRequest("POST","/api/auth/challenge",{publicKey:e},{cache:!1})}catch(e){throw this.handleError(e)}}async verifyChallenge(e,t,r,a,i,o){try{return await this.makeRequest("POST","/api/auth/verify",{publicKey:e,challenge:t,signature:r,timestamp:a,deviceName:i,deviceFingerprint:o},{cache:!1})}catch(e){throw this.handleError(e)}}async checkPublicKeyRegistered(e){try{return await this.makeRequest("GET",`/api/auth/check-publickey/${encodeURIComponent(e)}`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async getUserByPublicKey(e){try{return await this.makeRequest("GET",`/api/auth/user/${encodeURIComponent(e)}`,void 0,{cache:!0,cacheTTL:12e4})}catch(e){throw this.handleError(e)}}async getUserBySession(e){try{return await this.makeRequest("GET",`/api/session/user/${e}`,void 0,{cache:!0,cacheTTL:12e4})}catch(e){throw this.handleError(e)}}async getUsersBySessions(e){try{if(!Array.isArray(e)||0===e.length)return[];const t=Array.from(new Set(e)).sort();return await this.makeRequest("POST","/api/session/users/batch",{sessionIds:t},{cache:!0,cacheTTL:12e4,deduplicate:!0})}catch(e){throw this.handleError(e)}}async getTokenBySession(e){try{const t=await this.makeRequest("GET",`/api/session/token/${e}`,void 0,{cache:!1,retry:!1});return this.setTokens(t.accessToken),t}catch(e){throw this.handleError(e)}}async getSessionsBySessionId(e){try{return await this.makeRequest("GET",`/api/session/sessions/${e}`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async logoutSession(e,t){try{const r=t?`/api/session/logout/${e}/${t}`:`/api/session/logout/${e}`;await this.makeRequest("POST",r,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async logoutAllSessions(e){try{await this.makeRequest("POST",`/api/session/logout-all/${e}`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async validateSession(e,t={}){try{const r={};return t.deviceFingerprint&&(r.deviceFingerprint=t.deviceFingerprint),t.useHeaderValidation&&(r.useHeaderValidation="true"),await this.makeRequest("GET",`/api/session/validate/${e}`,r,{cache:!1})}catch(e){throw this.handleError(e)}}async checkUsernameAvailability(e){try{return await this.makeRequest("GET",`/api/auth/check-username/${e}`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async checkEmailAvailability(e){try{return await this.makeRequest("GET",`/api/auth/check-email/${e}`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async signUp(e,t,r,a,i){try{return await this.makeRequest("POST","/api/auth/signup",{username:e,email:t,password:r,deviceName:a,deviceFingerprint:i},{cache:!1})}catch(e){throw this.handleError(e)}}async signIn(e,t,r,a){try{return await this.makeRequest("POST","/api/auth/login",{identifier:e,password:t,deviceName:r,deviceFingerprint:a},{cache:!1})}catch(e){throw this.handleError(e)}}async signInWithEmail(e,t,r,a){return this.signIn(e,t,r,a)}}},function(e){var t;return(t=class extends e{constructor(...e){super(...e)}static isFedCMSupported(){return"undefined"!=typeof window&&("IdentityCredential"in window&&"navigator"in window&&"credentials"in navigator)}isFedCMSupported(){return this.constructor.isFedCMSupported()}async signInWithFedCM(e={}){if(!this.isFedCMSupported())throw new M("FedCM not supported in this browser. Please update your browser or use an alternative sign-in method.");try{const t=e.nonce||this.generateNonce(),r=this.getClientId();ke.log("Interactive sign-in: Requesting credential for",r);const a=await this.requestIdentityCredential({configURL:this.constructor.DEFAULT_CONFIG_URL,clientId:r,nonce:t,context:e.context});if(!a||!a.token)throw new M("No credential received from browser");ke.log("Interactive sign-in: Got credential, exchanging for session");const i=await this.exchangeIdTokenForSession(a.token);return i&&i.accessToken&&this.httpService.setTokens(i.accessToken),ke.log("Interactive sign-in: Success!",{userId:i?.user?.id}),i}catch(e){if(ke.log("Interactive sign-in failed:",e),"AbortError"===e.name)throw new M("Sign-in was cancelled by user");if("NetworkError"===e.name)throw new M("Network error during sign-in. Please check your connection.");throw e}}async silentSignInWithFedCM(){if(!this.isFedCMSupported())return ke.log("Silent SSO: FedCM not supported in this browser"),null;const e=this.getClientId();ke.log("Silent SSO: Starting for",e);let t,r=null;try{const t=this.generateNonce();ke.log("Silent SSO: Attempting silent mediation..."),r=await this.requestIdentityCredential({configURL:this.constructor.DEFAULT_CONFIG_URL,clientId:e,nonce:t,mediation:"silent"}),ke.log("Silent SSO: Silent mediation result:",{hasCredential:!!r,hasToken:!!r?.token})}catch(e){const t=e instanceof Error?e.name:"Unknown",r=e instanceof Error?e.message:String(e);ke.log("Silent SSO: Silent mediation error (will try optional):",{name:t,message:r})}if(!r||!r.token)try{const t=this.generateNonce();ke.log("Silent SSO: Trying optional mediation (may show browser UI)..."),r=await this.requestIdentityCredential({configURL:this.constructor.DEFAULT_CONFIG_URL,clientId:e,nonce:t,mediation:"optional"}),ke.log("Silent SSO: Optional mediation result:",{hasCredential:!!r,hasToken:!!r?.token})}catch(e){const t=e instanceof Error?e.name:"Unknown",r=e instanceof Error?e.message:String(e);return ke.log("Silent SSO: Optional mediation also failed:",{name:t,message:r}),null}if(!r||!r.token)return ke.log("Silent SSO: No credential returned (user may have dismissed prompt or is not logged in at IdP)"),null;ke.log("Silent SSO: Got credential, exchanging for session...");try{t=await this.exchangeIdTokenForSession(r.token)}catch(e){return ke.error("Silent SSO: Token exchange failed:",e),null}return t?t.sessionId?t.user?(t.accessToken?(this.httpService.setTokens(t.accessToken),ke.log("Silent SSO: Access token set")):ke.warn("Silent SSO: No accessToken in session response"),ke.log("Silent SSO: Success!",{sessionId:t.sessionId?.substring(0,8)+"...",userId:t.user?.id}),t):(ke.error("Silent SSO: Exchange returned session without user:",t),null):(ke.error("Silent SSO: Exchange returned session without sessionId:",t),null):(ke.error("Silent SSO: Exchange returned null session"),null)}async requestIdentityCredential(e){const t=e.mediation||"optional",r="silent"!==t;if(ke.log("requestIdentityCredential called:",{mediation:t,clientId:e.clientId,inProgress:Se}),Se&&_e)if(ke.log("Request already in progress, waiting..."),"silent"===Ee&&r)try{await _e}catch{}else try{return await _e}catch{return null}Se=!0,Ee=t;const a=new AbortController,i="silent"===t?this.constructor.FEDCM_SILENT_TIMEOUT:this.constructor.FEDCM_TIMEOUT,o=setTimeout(()=>{ke.log("Request timed out after",i,"ms (mediation:",t+")"),a.abort()},i);return _e=(async()=>{try{ke.log("Calling navigator.credentials.get with mediation:",t);const r=await navigator.credentials.get({identity:{providers:[{configURL:e.configURL,clientId:e.clientId,nonce:e.nonce,params:{nonce:e.nonce},...e.context&&{loginHint:e.context}}]},mediation:t,signal:a.signal});return ke.log("navigator.credentials.get returned:",{hasCredential:!!r,type:r?.type,hasToken:!!r?.token}),r&&"identity"===r.type?(ke.log("Got valid identity credential with token"),{token:r.token}):(ke.log("No valid identity credential returned"),null)}catch(e){const t=e instanceof Error?e.name:"Unknown",r=e instanceof Error?e.message:String(e);throw ke.log("navigator.credentials.get error:",{name:t,message:r}),e}finally{clearTimeout(o),Se=!1,_e=null,Ee=null}})(),_e}async exchangeIdTokenForSession(e){ke.log("exchangeIdTokenForSession: Starting exchange..."),ke.log("exchangeIdTokenForSession: Token length:",e?.length),ke.log("exchangeIdTokenForSession: Token preview:",e?.substring(0,50)+"...");try{const t=await this.makeRequest("POST","/api/fedcm/exchange",{id_token:e},{cache:!1});return ke.log("exchangeIdTokenForSession: Response received:",{hasResponse:!!t,hasSessionId:!!t?.sessionId,hasUser:!!t?.user,hasAccessToken:!!t?.accessToken,userId:t?.user?.id,username:t?.user?.username,responseKeys:t?Object.keys(t):[]}),t}catch(e){throw ke.error("exchangeIdTokenForSession: Error:",{name:e instanceof Error?e.name:"Unknown",message:e instanceof Error?e.message:String(e),stack:e instanceof Error?e.stack:void 0}),e}}async revokeFedCMCredential(){if(this.isFedCMSupported())try{if("IdentityCredential"in window&&"logout"in window.IdentityCredential){const e=this.getClientId();await window.IdentityCredential.logout({configURL:this.constructor.DEFAULT_CONFIG_URL,clientId:e})}}catch(e){}}getFedCMConfig(){return{enabled:this.isFedCMSupported(),configURL:this.constructor.DEFAULT_CONFIG_URL,clientId:this.getClientId()}}generateNonce(){return"undefined"!=typeof window&&window.crypto&&window.crypto.randomUUID?window.crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).substring(2,15)}`}getClientId(){return"undefined"==typeof window?"unknown":window.location.origin}}).DEFAULT_CONFIG_URL="https://auth.oxy.so/fedcm.json",t.FEDCM_TIMEOUT=6e4,t.FEDCM_SILENT_TIMEOUT=1e4,t},function(e){var t;return t=class extends e{constructor(...e){super(...e)}async signInWithPopup(e={}){if("undefined"==typeof window)throw new M("Popup authentication requires browser environment");const t=this.generateState(),r=this.generateNonce();this.storeAuthState(t,r);const a=e.width||this.constructor.POPUP_WIDTH,i=e.height||this.constructor.POPUP_HEIGHT,o=e.timeout||this.constructor.POPUP_TIMEOUT,n=e.mode||"login",s=this.buildAuthUrl({mode:n,state:t,nonce:r,clientId:window.location.origin,redirectUri:`${this.constructor.AUTH_URL}/auth/callback`}),c=this.openCenteredPopup(s,"Oxy Sign In",a,i);if(!c)throw new M("Popup blocked. Please allow popups for this site and try again.");try{const e=await this.waitForPopupAuth(c,t,o);if(e&&e.accessToken&&this.httpService.setTokens(e.accessToken),e&&e.sessionId&&!e.user)try{const t=await this.makeRequest("GET",`/api/session/user/${e.sessionId}`,void 0,{cache:!1});t&&(e.user=t)}catch(e){Ae.warn("Failed to fetch user data:",e)}return e}catch(e){throw e}finally{this.clearAuthState(t)}}async signUpWithPopup(e={}){return this.signInWithPopup({...e,mode:"signup"})}async silentSignIn(e={}){if("undefined"==typeof window)return null;const t=e.timeout||this.constructor.SILENT_TIMEOUT,r=this.generateNonce(),a=window.location.origin,i=document.createElement("iframe");i.style.display="none",i.style.position="absolute",i.style.width="0",i.style.height="0",i.style.border="none";const o=`${this.constructor.AUTH_URL}/auth/silent?client_id=${encodeURIComponent(a)}&nonce=${r}`;i.src=o,document.body.appendChild(i);try{const e=await this.waitForIframeAuth(i,t,a);return e&&e.accessToken&&this.httpService.setTokens(e.accessToken),e}catch(e){return null}finally{document.body.removeChild(i)}}openCenteredPopup(e,t,r,a){const i=[`width=${r}`,`height=${a}`,`left=${window.screenX+(window.outerWidth-r)/2}`,`top=${window.screenY+(window.outerHeight-a)/2}`,"toolbar=no","menubar=no","scrollbars=yes","resizable=yes","status=no","location=no"].join(",");return window.open(e,t,i)}async waitForPopupAuth(e,t,r){return new Promise((a,i)=>{const o=setTimeout(()=>{c(),i(new M("Authentication timeout"))},r),n=e=>{const r=this.constructor.AUTH_URL;if(e.data&&"object"==typeof e.data&&e.data.type&&Ae.log("Message received:",{origin:e.origin,expectedOrigin:r,type:e.data.type,hasSession:!!e.data.session,hasError:!!e.data.error}),e.origin!==r)return;const{type:o,state:n,session:s,error:u}=e.data;if("oxy_auth_response"===o){if(Ae.log("Valid auth response:",{state:n,expectedState:t,hasSession:!!s,error:u}),n!==t)return c(),Ae.error("State mismatch"),void i(new M("Invalid state parameter. Possible CSRF attack."));c(),u?(Ae.error("Auth error:",u),i(new M(u))):s?(Ae.log("Session received successfully"),a(s)):(Ae.error("No session in response"),i(new M("No session received from authentication server")))}},s=setInterval(()=>{e.closed&&(c(),i(new M("Authentication cancelled by user")))},500),c=()=>{clearTimeout(o),clearInterval(s),window.removeEventListener("message",n),e.closed||e.close()};window.addEventListener("message",n)})}async waitForIframeAuth(e,t,r){return new Promise(e=>{const r=setTimeout(()=>{i(),e(null)},t),a=t=>{if(t.origin!==this.constructor.AUTH_URL)return;const{type:r,session:a}=t.data;"oxy_silent_auth"===r&&(i(),e(a||null))},i=()=>{clearTimeout(r),window.removeEventListener("message",a)};window.addEventListener("message",a)})}buildAuthUrl(e){const t=new URL(`${this.constructor.AUTH_URL}/${e.mode}`);return t.searchParams.set("response_type","token"),t.searchParams.set("client_id",e.clientId),t.searchParams.set("redirect_uri",e.redirectUri),t.searchParams.set("state",e.state),t.searchParams.set("nonce",e.nonce),t.toString()}generateState(){return"undefined"!=typeof window&&window.crypto&&window.crypto.randomUUID?window.crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).substring(2,15)}`}generateNonce(){return"undefined"!=typeof window&&window.crypto&&window.crypto.randomUUID?window.crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).substring(2,15)}`}storeAuthState(e,t){"undefined"!=typeof window&&window.sessionStorage&&sessionStorage.setItem(`oxy_auth_state_${e}`,JSON.stringify({nonce:t,timestamp:Date.now()}))}clearAuthState(e){"undefined"!=typeof window&&window.sessionStorage&&sessionStorage.removeItem(`oxy_auth_state_${e}`)}},t.AUTH_URL="https://auth.oxy.so",t.POPUP_WIDTH=500,t.POPUP_HEIGHT=700,t.POPUP_TIMEOUT=6e4,t.SILENT_TIMEOUT=5e3,t},function(e){var t;return t=class extends e{constructor(...e){super(...e)}signInWithRedirect(e={}){if("undefined"==typeof window)throw new M("Redirect authentication requires browser environment");const t=e.redirectUri||window.location.href,r=e.mode||"login",a=this.generateState(),i=this.generateNonce();this.storeAuthState(a,i),!1!==e.preserveUrl&&this.savePreAuthUrl(window.location.href);const o=this.buildAuthUrl({mode:r,redirectUri:t,state:a,nonce:i,clientId:window.location.origin});window.location.href=o}signUpWithRedirect(e={}){this.signInWithRedirect({...e,mode:"signup"})}handleAuthCallback(){if("undefined"==typeof window)return null;const e=new URL(window.location.href),t=e.searchParams.get("access_token"),r=e.searchParams.get("session_id"),a=e.searchParams.get("expires_at"),i=e.searchParams.get("state"),o=e.searchParams.get("error"),n=e.searchParams.get("error_description");if(o)throw this.clearAuthState(),new M(n||o);if(!t||!r)return null;const s=this.getStoredState();if(!s||i!==s)throw this.clearAuthState(),new M("Invalid state parameter. Possible CSRF attack.");this.storeTokens(t,r),this.httpService.setTokens(t);const c={sessionId:r,deviceId:"",expiresAt:a||new Date(Date.now()+864e5).toISOString(),user:{}};return this.cleanAuthCallbackUrl(e),this.clearAuthState(),c}restoreSession(){if("undefined"==typeof window)return!1;const e=localStorage.getItem(this.constructor.TOKEN_STORAGE_KEY),t=localStorage.getItem(this.constructor.SESSION_STORAGE_KEY);return!(!e||!t)&&(this.httpService.setTokens(e),!0)}clearStoredSession(){"undefined"!=typeof window&&(localStorage.removeItem(this.constructor.TOKEN_STORAGE_KEY),localStorage.removeItem(this.constructor.SESSION_STORAGE_KEY),this.httpService.clearTokens())}getStoredSessionId(){return"undefined"==typeof window?null:localStorage.getItem(this.constructor.SESSION_STORAGE_KEY)}buildAuthUrl(e){const t=new URL(`${this.constructor.AUTH_URL}/${e.mode}`);return t.searchParams.set("redirect_uri",e.redirectUri),t.searchParams.set("state",e.state),t.searchParams.set("nonce",e.nonce),t.searchParams.set("client_id",e.clientId),t.searchParams.set("response_type","token"),t.toString()}storeTokens(e,t){"undefined"!=typeof window&&(localStorage.setItem(this.constructor.TOKEN_STORAGE_KEY,e),localStorage.setItem(this.constructor.SESSION_STORAGE_KEY,t))}generateState(){return"undefined"!=typeof window&&window.crypto&&window.crypto.randomUUID?window.crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).substring(2,15)}`}generateNonce(){return"undefined"!=typeof window&&window.crypto&&window.crypto.randomUUID?window.crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).substring(2,15)}`}storeAuthState(e,t){"undefined"!=typeof window&&(sessionStorage.setItem(this.constructor.STATE_STORAGE_KEY,e),sessionStorage.setItem(this.constructor.NONCE_STORAGE_KEY,t))}getStoredState(){return"undefined"==typeof window?null:sessionStorage.getItem(this.constructor.STATE_STORAGE_KEY)}clearAuthState(){"undefined"!=typeof window&&(sessionStorage.removeItem(this.constructor.STATE_STORAGE_KEY),sessionStorage.removeItem(this.constructor.NONCE_STORAGE_KEY),sessionStorage.removeItem(this.constructor.PRE_AUTH_URL_KEY))}savePreAuthUrl(e){"undefined"!=typeof window&&sessionStorage.setItem(this.constructor.PRE_AUTH_URL_KEY,e)}cleanAuthCallbackUrl(e){e.searchParams.delete("access_token"),e.searchParams.delete("session_id"),e.searchParams.delete("expires_at"),e.searchParams.delete("state"),e.searchParams.delete("nonce"),e.searchParams.delete("error"),e.searchParams.delete("error_description"),window.history.replaceState({},"",e.toString())}},t.AUTH_URL="https://auth.oxy.so",t.TOKEN_STORAGE_KEY="oxy_access_token",t.SESSION_STORAGE_KEY="oxy_session_id",t.STATE_STORAGE_KEY="oxy_auth_state",t.PRE_AUTH_URL_KEY="oxy_pre_auth_url",t.NONCE_STORAGE_KEY="oxy_auth_nonce",t},function(e){return class extends e{constructor(...e){super(...e)}async getProfileByUsername(e){try{return await this.makeRequest("GET",`/api/profiles/username/${e}`,void 0,{cache:!0,cacheTTL:3e5})}catch(e){throw this.handleError(e)}}async searchProfiles(e,t){try{const r=Ie({query:e,...t}),a=Object.fromEntries(r.entries()),i=await this.makeRequest("GET","/api/profiles/search",a,{cache:!0,cacheTTL:12e4});if((e=>"object"==typeof e&&null!==e&&Array.isArray(e.data))(i)){const e=i,r=e.pagination??{total:e.data.length,limit:t?.limit??e.data.length,offset:t?.offset??0,hasMore:e.data.length===(t?.limit??e.data.length)&&(t?.limit??e.data.length)>0};return{data:e.data,pagination:r}}if(Array.isArray(i)){const e=t?.limit??i.length;return{data:i,pagination:{total:i.length,limit:e,offset:t?.offset??0,hasMore:e>0&&i.length===e}}}throw new Error("Unexpected search response format")}catch(e){throw this.handleError(e)}}async getProfileRecommendations(){return this.withAuthRetry(async()=>await this.makeRequest("GET","/api/profiles/recommendations",void 0,{cache:!0}),"getProfileRecommendations")}async getUserById(e){try{return await this.makeRequest("GET",`/api/users/${e}`,void 0,{cache:!0,cacheTTL:3e5})}catch(e){throw this.handleError(e)}}async getCurrentUser(){return this.withAuthRetry(async()=>await this.makeRequest("GET","/api/users/me",void 0,{cache:!0,cacheTTL:6e4}),"getCurrentUser")}async updateProfile(e){try{return await this.makeRequest("PUT","/api/users/me",e,{cache:!1})}catch(e){const t=e,r=e instanceof Error?e.message:String(e);if((401===(t?.status||t?.response?.status)||r.includes("Authentication required")||r.includes("Invalid or missing authorization header"))&&!this.hasValidToken())throw new Error("AUTH_REQUIRED_OFFLINE_SESSION: Session needs to be synced to get a token");throw this.handleError(e)}}async getPrivacySettings(e){try{const t=e||(await this.getCurrentUser()).id;return await this.makeRequest("GET",`/api/privacy/${t}/privacy`,void 0,{cache:!0,cacheTTL:12e4})}catch(e){throw this.handleError(e)}}async updatePrivacySettings(e,t){try{const r=t||(await this.getCurrentUser()).id;return await this.makeRequest("PATCH",`/api/privacy/${r}/privacy`,e,{cache:!1})}catch(e){throw this.handleError(e)}}async requestAccountVerification(e,t){try{return await this.makeRequest("POST","/api/users/verify/request",{reason:e,evidence:t},{cache:!1})}catch(e){throw this.handleError(e)}}async downloadAccountData(e="json"){try{return await this.getClient().request({method:"GET",url:"/api/users/me/data",params:{format:e},cache:!1})}catch(e){throw this.handleError(e)}}async deleteAccount(e,t){try{return await this.makeRequest("DELETE","/api/users/me",{password:e,confirmText:t},{cache:!1})}catch(e){throw this.handleError(e)}}async followUser(e){try{return await this.makeRequest("POST",`/api/users/${e}/follow`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async unfollowUser(e){try{return await this.makeRequest("DELETE",`/api/users/${e}/follow`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async getFollowStatus(e){try{return await this.makeRequest("GET",`/api/users/${e}/follow-status`,void 0,{cache:!0,cacheTTL:6e4})}catch(e){throw this.handleError(e)}}async getUserFollowers(e,t){try{const r=ze(t||{}),a=await this.makeRequest("GET",`/api/users/${e}/followers`,r,{cache:!0,cacheTTL:12e4});return{followers:a.data||[],total:a.pagination.total,hasMore:a.pagination.hasMore}}catch(e){throw this.handleError(e)}}async getUserFollowing(e,t){try{const r=ze(t||{}),a=await this.makeRequest("GET",`/api/users/${e}/following`,r,{cache:!0,cacheTTL:12e4});return{following:a.data||[],total:a.pagination.total,hasMore:a.pagination.hasMore}}catch(e){throw this.handleError(e)}}async getNotifications(){return this.withAuthRetry(async()=>await this.makeRequest("GET","/api/notifications",void 0,{cache:!1}),"getNotifications")}async getUnreadCount(){try{return(await this.makeRequest("GET","/api/notifications/unread-count",void 0,{cache:!1})).count}catch(e){throw this.handleError(e)}}async createNotification(e){try{return await this.makeRequest("POST","/api/notifications",e,{cache:!1})}catch(e){throw this.handleError(e)}}async markNotificationAsRead(e){try{await this.makeRequest("PUT",`/api/notifications/${e}/read`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async markAllNotificationsAsRead(){try{await this.makeRequest("PUT","/api/notifications/read-all",void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async deleteNotification(e){try{await this.makeRequest("DELETE",`/api/notifications/${e}`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}}},function(e){return class extends e{constructor(...e){super(...e)}extractUserId(e){return"string"==typeof e?e:e._id}async isUserInList(e,t,r){try{if(!e)return!1;return(await t()).some(t=>this.extractUserId(r(t))===e)}catch(e){return __DEV__&&console.warn("Error checking user list:",e),!1}}async getBlockedUsers(){try{return await this.makeRequest("GET","/api/privacy/blocked",void 0,{cache:!0,cacheTTL:6e4})}catch(e){throw this.handleError(e)}}async blockUser(e){try{if(!e)throw new Error("User ID is required");return await this.makeRequest("POST",`/api/privacy/blocked/${e}`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async unblockUser(e){try{if(!e)throw new Error("User ID is required");return await this.makeRequest("DELETE",`/api/privacy/blocked/${e}`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async isUserBlocked(e){return this.isUserInList(e,()=>this.getBlockedUsers(),e=>e.blockedId)}async getRestrictedUsers(){try{return await this.makeRequest("GET","/api/privacy/restricted",void 0,{cache:!0,cacheTTL:6e4})}catch(e){throw this.handleError(e)}}async restrictUser(e){try{if(!e)throw new Error("User ID is required");return await this.makeRequest("POST",`/api/privacy/restricted/${e}`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async unrestrictUser(e){try{if(!e)throw new Error("User ID is required");return await this.makeRequest("DELETE",`/api/privacy/restricted/${e}`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async isUserRestricted(e){return this.isUserInList(e,()=>this.getRestrictedUsers(),e=>e.restrictedId)}}},function(e){return class extends e{constructor(...e){super(...e)}async getStorage(){if(!("undefined"!=typeof navigator&&"ReactNative"===navigator.product))return{getItem:async e=>"undefined"!=typeof window&&window.localStorage?localStorage.getItem(e):null,setItem:async(e,t)=>{"undefined"!=typeof window&&window.localStorage&&localStorage.setItem(e,t)},removeItem:async e=>{"undefined"!=typeof window&&window.localStorage&&localStorage.removeItem(e)}};try{const e=(await import("@react-native-async-storage/async-storage")).default;return{getItem:e.getItem.bind(e),setItem:e.setItem.bind(e),removeItem:e.removeItem.bind(e)}}catch(e){throw console.error("AsyncStorage not available in React Native:",e),new Error("AsyncStorage is required in React Native environment")}}async getCurrentLanguage(e="oxy_session"){try{try{const e=await this.getCurrentUser(),t=e?.language;if(t)return je(t)||t}catch(e){}const t=await this.getStorage(),r=`${e}_language`,a=await t.getItem(r);return a?je(a)||a:null}catch(e){return __DEV__&&console.warn("Failed to get current language:",e),null}}async getCurrentLanguageMetadata(e="oxy_session"){return qe(await this.getCurrentLanguage(e))}async getCurrentLanguageName(e="oxy_session"){const t=await this.getCurrentLanguage(e);return t?Oe(t):null}async getCurrentNativeLanguageName(e="oxy_session"){const t=await this.getCurrentLanguage(e);return t?Le(t):null}}},function(e){return class extends e{constructor(...e){super(...e)}async createPayment(e){try{return await this.makeRequest("POST","/api/payments",e,{cache:!1})}catch(e){throw this.handleError(e)}}async getPayment(e){try{return await this.makeRequest("GET",`/api/payments/${e}`,void 0,{cache:!0,cacheTTL:Ue.LONG})}catch(e){throw this.handleError(e)}}async getUserPayments(){try{return await this.makeRequest("GET","/api/payments/user",void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async getSubscription(e){try{return await this.makeRequest("GET",`/api/subscription/${e}`,void 0,{cache:!0,cacheTTL:Ue.MEDIUM})}catch(e){throw this.handleError(e)}}async getCurrentUserSubscription(){try{const e=this.getCurrentUserId();if(!e)throw new Error("User not authenticated");return await this.getSubscription(e)}catch(e){throw this.handleError(e)}}async getWallet(e){try{return await this.makeRequest("GET",`/api/wallet/${e}`,void 0,{cache:!0,cacheTTL:Ue.SHORT})}catch(e){throw this.handleError(e)}}async getCurrentUserWallet(){try{const e=this.getCurrentUserId();if(!e)throw new Error("User not authenticated");return await this.getWallet(e)}catch(e){throw this.handleError(e)}}async getWalletTransactions(e,t){try{const r=new URLSearchParams;t?.limit&&r.append("limit",t.limit.toString()),t?.offset&&r.append("offset",t.offset.toString());const a=r.toString(),i=`/api/wallet/transactions/${e}${a?`?${a}`:""}`;return await this.makeRequest("GET",i,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async getCurrentUserWalletTransactions(e){try{const t=this.getCurrentUserId();if(!t)throw new Error("User not authenticated");return await this.getWalletTransactions(t,e)}catch(e){throw this.handleError(e)}}}},function(e){return class extends e{constructor(...e){super(...e)}async getUserKarma(e){try{return await this.makeRequest("GET",`/api/karma/${e}`,void 0,{cache:!0,cacheTTL:12e4})}catch(e){throw this.handleError(e)}}async giveKarma(e,t,r){try{return await this.makeRequest("POST",`/api/karma/${e}/give`,{amount:t,reason:r},{cache:!1})}catch(e){throw this.handleError(e)}}async getUserKarmaTotal(e){try{return await this.makeRequest("GET",`/api/karma/${e}/total`,void 0,{cache:!0,cacheTTL:Ue.MEDIUM})}catch(e){throw this.handleError(e)}}async getUserKarmaHistory(e,t,r){try{const a={};return t&&(a.limit=t),r&&(a.offset=r),await this.makeRequest("GET",`/api/karma/${e}/history`,a,{cache:!0,cacheTTL:Ue.MEDIUM})}catch(e){throw this.handleError(e)}}async getKarmaLeaderboard(){try{return await this.makeRequest("GET","/api/karma/leaderboard",void 0,{cache:!0,cacheTTL:Ue.LONG})}catch(e){throw this.handleError(e)}}async getKarmaRules(){try{return await this.makeRequest("GET","/api/karma/rules",void 0,{cache:!0,cacheTTL:Ue.EXTRA_LONG})}catch(e){throw this.handleError(e)}}}},function(e){return class extends e{constructor(...e){super(...e)}async deleteFile(e){try{return await this.makeRequest("DELETE",`/api/assets/${encodeURIComponent(e)}`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}getFileDownloadUrl(e,t,r){const a=this.getBaseURL(),i=new URLSearchParams;t&&i.set("variant",t),r&&i.set("expiresIn",String(r)),i.set("fallback","placeholderVisible");const o=this.getClient().getAccessToken();o&&i.set("token",o);const n=i.toString();return`${a}/api/assets/${encodeURIComponent(e)}/stream${n?`?${n}`:""}`}async getFileDownloadUrlAsync(e,t,r){try{return await this.fetchAssetDownloadUrl(e,t,this.getAssetUrlCacheTTL(r),r)||this.getFileDownloadUrl(e,t,r)}catch(a){return this.getFileDownloadUrl(e,t,r)}}async listUserFiles(e,t){try{const r={};return e&&(r.limit=e),t&&(r.offset=t),await this.makeRequest("GET","/api/assets",r,{cache:!1})}catch(e){throw this.handleError(e)}}async getAccountStorageUsage(){try{return await this.makeRequest("GET","/api/storage/usage",void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async getFileContentAsText(e,t){try{const r=await this.fetchAssetDownloadUrl(e,t,this.getAssetUrlCacheTTL());if(!r)throw new Error("No download URL returned for asset");return await this.fetchAssetContent(r,"text")}catch(e){throw this.handleError(e)}}async getFileContentAsBlob(e,t){try{const r=await this.fetchAssetDownloadUrl(e,t,this.getAssetUrlCacheTTL());if(!r)throw new Error("No download URL returned for asset");return await this.fetchAssetContent(r,"blob")}catch(e){throw this.handleError(e)}}async getBatchFileAccess(e,t){try{return await this.makeRequest("POST","/api/assets/batch-access",{fileIds:e,context:t})}catch(e){throw this.handleError(e)}}async getFileDownloadUrls(e,t){const r={},a=(await this.getBatchFileAccess(e,t)).results||{};for(const[e,t]of Object.entries(a))t.allowed&&t.url&&(r[e]=t.url);return r}async uploadRawFile(e,t,r){return this.assetUpload(e,t,r)}async assetUpload(e,t,r,a){const i=e.name||"unknown",o=e.size;try{const o=new FormData;let n;n=e instanceof Blob?e:"function"==typeof e.blob?await e.blob():new Blob([e],{type:e.type||"application/octet-stream"}),o.append("file",n,i),t&&o.append("visibility",t),r&&o.append("metadata",JSON.stringify(r));const s=await this.getClient().request({method:"POST",url:"/api/assets/upload",data:o,cache:!1});return a&&s&&a(100),s}catch(e){console.error("File upload error:",e);let t="File upload failed";e instanceof Error?t=e.message||t:e&&"object"==typeof e?"message"in e?t=String(e.message)||t:"error"in e&&"string"==typeof e.error?t=e.error:"data"in e&&e.data?.message&&(t=String(e.data.message)):e&&(t=String(e)||t);const r=e;if(r.fileContext||(r.fileContext={fileName:i,fileSize:o}),e instanceof Error&&e.message){const e=this.handleError(r);throw e.message&&"An unexpected error occurred"!==e.message.trim()||(e.message=t),e}const a=new Error(t);throw a.fileContext=r.fileContext,this.handleError(a)}}async assetLink(e,t,r,a,i,o){try{const n={app:t,entityType:r,entityId:a};return i&&(n.visibility=i),o&&(n.webhookUrl=o),await this.makeRequest("POST",`/api/assets/${e}/links`,n,{cache:!1})}catch(e){throw this.handleError(e)}}async assetUnlink(e,t,r,a){try{return await this.makeRequest("DELETE",`/api/assets/${e}/links`,{app:t,entityType:r,entityId:a},{cache:!1})}catch(e){throw this.handleError(e)}}async assetGet(e){try{return await this.makeRequest("GET",`/api/assets/${e}`,void 0,{cache:!0,cacheTTL:3e5})}catch(e){throw this.handleError(e)}}async assetGetUrl(e,t,r){try{const a={};return t&&(a.variant=t),r&&(a.expiresIn=r),await this.makeRequest("GET",`/api/assets/${e}/url`,a,{cache:!0,cacheTTL:6e5})}catch(e){throw this.handleError(e)}}async assetRestore(e){try{return await this.makeRequest("POST",`/api/assets/${e}/restore`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async assetDelete(e,t=!1){try{const r=t?{force:"true"}:void 0;return await this.makeRequest("DELETE",`/api/assets/${e}`,r,{cache:!1})}catch(e){throw this.handleError(e)}}async assetGetVariants(e){try{const t=await this.assetGet(e);return t.file?.variants||[]}catch(e){throw this.handleError(e)}}async assetUpdateVisibility(e,t){try{return await this.makeRequest("PATCH",`/api/assets/${e}/visibility`,{visibility:t},{cache:!1})}catch(e){throw this.handleError(e)}}async uploadAvatar(e,t,r="profiles"){try{const a=await this.assetUpload(e,"public");return await this.assetLink(a.file.id,r,"avatar",t,"public"),a}catch(e){throw this.handleError(e)}}async uploadProfileBanner(e,t,r="profiles"){try{const a=await this.assetUpload(e,"public");return await this.assetLink(a.file.id,r,"profile-banner",t,"public"),a}catch(e){throw this.handleError(e)}}getAssetUrlCacheTTL(e){const t=1e3*(e??3600);return Math.min(t,6e5)}async fetchAssetDownloadUrl(e,t,r,a){const i={};t&&(i.variant=t),a&&(i.expiresIn=a);const o=await this.makeRequest("GET",`/api/assets/${encodeURIComponent(e)}/url`,Object.keys(i).length?i:void 0,{cache:!0,cacheTTL:r??6e5});return o?.url||null}async fetchAssetContent(e,t){const r=await fetch(e,{credentials:"include"});if(!r?.ok)throw new Error(`Failed to fetch asset content (status ${r?.status})`);return"text"===t?r.text():r.blob()}}},function(e){return class extends e{constructor(...e){super(...e)}async getDeveloperApps(){try{return(await this.makeRequest("GET","/api/developer/apps",void 0,{cache:!0,cacheTTL:Ue.MEDIUM})).apps||[]}catch(e){throw this.handleError(e)}}async createDeveloperApp(e){try{return(await this.makeRequest("POST","/api/developer/apps",e,{cache:!1})).app}catch(e){throw this.handleError(e)}}async getDeveloperApp(e){try{return(await this.makeRequest("GET",`/api/developer/apps/${e}`,void 0,{cache:!0,cacheTTL:Ue.LONG})).app}catch(e){throw this.handleError(e)}}async updateDeveloperApp(e,t){try{return(await this.makeRequest("PATCH",`/api/developer/apps/${e}`,t,{cache:!1})).app}catch(e){throw this.handleError(e)}}async regenerateDeveloperAppSecret(e){try{return await this.makeRequest("POST",`/api/developer/apps/${e}/regenerate-secret`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async deleteDeveloperApp(e){try{return await this.makeRequest("DELETE",`/api/developer/apps/${e}`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}}},function(e){return class extends e{constructor(...e){super(...e)}async updateLocation(e,t){try{return await this.makeRequest("POST","/api/location",{latitude:e,longitude:t},{cache:!1})}catch(e){throw this.handleError(e)}}async getNearbyUsers(e){try{const t=e?{radius:e}:void 0;return await this.makeRequest("GET","/api/location/nearby",t,{cache:!1})}catch(e){throw this.handleError(e)}}}},function(e){return class extends e{constructor(...e){super(...e)}async trackEvent(e,t){try{await this.makeRequest("POST","/api/analytics/events",{event:e,properties:t},{cache:!1,retry:!1})}catch(e){throw this.handleError(e)}}async getAnalytics(e,t){try{const r={};return e&&(r.startDate=e),t&&(r.endDate=t),await this.makeRequest("GET","/api/analytics",r,{cache:!0,cacheTTL:Ue.LONG})}catch(e){throw this.handleError(e)}}}},function(e){return class extends e{constructor(...e){super(...e)}async registerDevice(e){try{return await this.makeRequest("POST","/api/devices",e,{cache:!1})}catch(e){throw this.handleError(e)}}async getUserDevices(){try{return await this.makeRequest("GET","/api/devices",void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async removeDevice(e){try{await this.makeRequest("DELETE",`/api/devices/${e}`,void 0,{cache:!1})}catch(e){throw this.handleError(e)}}async getDeviceSessions(e){try{return await this.makeRequest("GET",`/api/session/device/sessions/${e}`,void 0,{cache:!1,deduplicate:!0})}catch(e){throw this.handleError(e)}}async logoutAllDeviceSessions(e,t,r){try{const a={};return t&&(a.deviceId=t),r&&(a.excludeCurrent="true"),await this.makeRequest("POST",`/api/session/device/logout-all/${e}`,a,{cache:!1})}catch(e){throw this.handleError(e)}}async updateDeviceName(e,t){try{return await this.makeRequest("PUT",`/api/session/device/name/${e}`,{deviceName:t},{cache:!1})}catch(e){throw this.handleError(e)}}async getSecurityInfo(){try{return await this.makeRequest("GET","/api/devices/security",void 0,{cache:!1})}catch(e){throw this.handleError(e)}}}},function(e){return class extends e{constructor(...e){super(...e)}async getSecurityActivity(e,t,r){try{const a={};void 0!==e&&(a.limit=e),void 0!==t&&(a.offset=t),r&&(a.eventType=r);return await this.makeRequest("GET","/api/security/activity",a,{cache:!1})}catch(e){throw this.handleError(e)}}async getRecentSecurityActivity(e=10){try{return(await this.getSecurityActivity(e,0)).data||[]}catch(e){throw this.handleError(e)}}async logPrivateKeyExported(e){try{await this.makeRequest("POST","/api/security/activity/private-key-exported",{deviceId:e},{cache:!1})}catch(e){__DEV__&&console.warn("[OxyServices] Failed to log private key exported event:",e)}}async logBackupCreated(e){try{await this.makeRequest("POST","/api/security/activity/backup-created",{deviceId:e},{cache:!1})}catch(e){__DEV__&&console.warn("[OxyServices] Failed to log backup created event:",e)}}}},function(e){return class extends e{constructor(...e){super(...e)}async submitFeedback(e){try{return await this.makeRequest("POST","/api/feedback",e,{cache:!1})}catch(e){throw this.handleError(e)}}async getSubscriptionPlans(){try{return await this.makeRequest("GET","/api/subscriptions/plans",void 0,{cache:!0,cacheTTL:Ue.LONG})}catch(e){throw this.handleError(e)}}async getIndividualFeatures(){try{return await this.makeRequest("GET","/api/subscriptions/features",void 0,{cache:!0,cacheTTL:Ue.LONG})}catch(e){throw this.handleError(e)}}async subscribe(e,t){return this.withAuthRetry(async()=>await this.makeRequest("POST","/api/subscriptions/subscribe",{planId:e,paymentMethodId:t},{cache:!1}),"subscribe")}async subscribeToFeature(e,t){return this.withAuthRetry(async()=>await this.makeRequest("POST","/api/subscriptions/features/subscribe",{featureId:e,paymentMethodId:t},{cache:!1}),"subscribeToFeature")}async cancelSubscription(e){return this.withAuthRetry(async()=>{await this.makeRequest("POST",`/api/subscriptions/${e}/cancel`,void 0,{cache:!1})},"cancelSubscription")}async reactivateSubscription(e){return this.withAuthRetry(async()=>{await this.makeRequest("POST",`/api/subscriptions/${e}/reactivate`,void 0,{cache:!1})},"reactivateSubscription")}async getCurrentSubscription(){return this.withAuthRetry(async()=>{try{return await this.makeRequest("GET","/api/subscriptions/current",void 0,{cache:!0,cacheTTL:Ue.SHORT})}catch(e){if(404===e.status)return null;throw e}},"getCurrentSubscription")}async getSavedItems(e){return this.withAuthRetry(async()=>{const t=e?`/api/users/${e}/saves`:"/api/saves";return await this.makeRequest("GET",t,void 0,{cache:!0,cacheTTL:Ue.SHORT})},"getSavedItems")}async getCollections(e){return this.withAuthRetry(async()=>{const t=e?`/api/users/${e}/collections`:"/api/collections";return await this.makeRequest("GET",t,void 0,{cache:!0,cacheTTL:Ue.SHORT})},"getCollections")}async saveItem(e,t,r){return this.withAuthRetry(async()=>await this.makeRequest("POST","/api/saves",{itemId:e,itemType:t,collectionId:r},{cache:!1}),"saveItem")}async removeSavedItem(e){return this.withAuthRetry(async()=>{await this.makeRequest("DELETE",`/api/saves/${e}`,void 0,{cache:!1})},"removeSavedItem")}async createCollection(e,t){return this.withAuthRetry(async()=>await this.makeRequest("POST","/api/collections",{name:e,description:t},{cache:!1}),"createCollection")}async deleteCollection(e){return this.withAuthRetry(async()=>{await this.makeRequest("DELETE",`/api/collections/${e}`,void 0,{cache:!1})},"deleteCollection")}async getUserStats(e){try{return await this.makeRequest("GET",`/api/users/${e}/stats`,void 0,{cache:!0,cacheTTL:Ue.MEDIUM})}catch(e){throw this.handleError(e)}}async getUserHistory(e,t,r){return this.withAuthRetry(async()=>{const a={};t&&(a.limit=t),r&&(a.offset=r);const i=e?`/api/users/${e}/history`:"/api/history";return await this.makeRequest("GET",i,a,{cache:!0,cacheTTL:Ue.SHORT})},"getUserHistory")}async clearUserHistory(){return this.withAuthRetry(async()=>{await this.makeRequest("DELETE","/api/history",void 0,{cache:!1})},"clearUserHistory")}async deleteHistoryItem(e){return this.withAuthRetry(async()=>{await this.makeRequest("DELETE",`/api/history/${e}`,void 0,{cache:!1})},"deleteHistoryItem")}async getFAQs(e){try{const t=e?{category:e}:void 0;return await this.makeRequest("GET","/api/faqs",t,{cache:!0,cacheTTL:Ue.LONG})}catch(e){throw this.handleError(e)}}async searchFAQs(e){try{return await this.makeRequest("GET","/api/faqs/search",{query:e},{cache:!0,cacheTTL:Ue.MEDIUM})}catch(e){throw this.handleError(e)}}async getUserAchievements(e){return this.withAuthRetry(async()=>{const t=e?`/api/users/${e}/achievements`:"/api/achievements";return await this.makeRequest("GET",t,void 0,{cache:!0,cacheTTL:Ue.MEDIUM})},"getUserAchievements")}async getAllAchievements(){try{return await this.makeRequest("GET","/api/achievements/all",void 0,{cache:!0,cacheTTL:Ue.LONG})}catch(e){throw this.handleError(e)}}async deleteAccount(e){return this.withAuthRetry(async()=>{await this.makeRequest("DELETE","/api/account",{password:e},{cache:!1})},"deleteAccount")}}},function(e){return class extends e{constructor(...e){super(...e)}async fetchLinkMetadata(e){try{return await this.makeRequest("GET","/api/link-metadata",{url:e},{cache:!0,cacheTTL:Ue.EXTRA_LONG})}catch(e){throw this.handleError(e)}}auth(e={}){const{debug:t=!1,onError:r,loadUser:a=!1,session:i=!1}=e;return(e,a,i)=>{try{const o=e.headers.authorization,n=o?.startsWith("Bearer ")?o.substring(7):null;if(t&&(console.log(`🔐 Auth: Processing ${e.method} ${e.path}`),console.log(`🔐 Auth: Token present: ${!!n}`)),!n){const e={message:"Access token required",code:"MISSING_TOKEN",status:401};return t&&console.log("❌ Auth: Missing token"),r?r(e):a.status(401).json(e)}let s;try{s=O(n),t&&console.log(`🔐 Auth: Token decoded, User ID: ${s.userId||s.id}`)}catch(e){const i={message:"Invalid token format",code:"INVALID_TOKEN_FORMAT",status:403};return t&&console.log("❌ Auth: Token decode failed"),r?r(i):a.status(403).json(i)}const c=s.userId||s.id;if(!c){const e={message:"Token missing user ID",code:"INVALID_TOKEN_PAYLOAD",status:403};return t&&console.log("❌ Auth: Token missing user ID"),r?r(e):a.status(403).json(e)}if(s.exp&&s.exp<Math.floor(Date.now()/1e3)){const e={message:"Token expired",code:"TOKEN_EXPIRED",status:403};return t&&console.log("❌ Auth: Token expired"),r?r(e):a.status(403).json(e)}e.userId=c,e.accessToken=n,e.user={id:c},this.setTokens(n),t&&console.log(`✅ Auth: Authentication successful for user ${c}`),i()}catch(e){const i=this.handleError(e);return t&&console.log("❌ Auth: Unexpected error:",i),r?r(i):a.status(i&&i.status||500).json(i)}}}}}];const Ce=De.reduce((e,t)=>t(e),ye);class Pe extends Ce{constructor(e){super(e)}}const Ne="https://cloud.oxy.so",Fe="undefined"!=typeof process&&process.env&&process.env.OXY_API_URL||"https://api.oxy.so",Be=new Pe({baseURL:Fe,cloudURL:Ne});class He{constructor(e){this.oxyServices=e}async signIn(e={}){const t=e.method||"auto";return"fedcm"===t?this.signInWithFedCM(e):"popup"===t?this.signInWithPopup(e):"redirect"===t?(this.signInWithRedirect(e),null):this.autoSignIn(e)}async autoSignIn(e){if(this.isFedCMSupported())try{return e.onMethodSelected?.("fedcm"),await this.signInWithFedCM(e)}catch(e){console.warn("[CrossDomainAuth] FedCM failed, trying popup...",e)}try{return e.onMethodSelected?.("popup"),await this.signInWithPopup(e)}catch(e){console.warn("[CrossDomainAuth] Popup failed, falling back to redirect...",e)}return e.onMethodSelected?.("redirect"),this.signInWithRedirect(e),null}async signInWithFedCM(e={}){return this.oxyServices.signInWithFedCM({context:e.isSignup?"signup":"signin"})}async signInWithPopup(e={}){return this.oxyServices.signInWithPopup({mode:e.isSignup?"signup":"login",width:e.popupDimensions?.width,height:e.popupDimensions?.height})}signInWithRedirect(e={}){this.oxyServices.signInWithRedirect({redirectUri:e.redirectUri,mode:e.isSignup?"signup":"login"})}handleRedirectCallback(){return this.oxyServices.handleAuthCallback()}async silentSignIn(){if(this.isFedCMSupported())try{const e=await this.oxyServices.silentSignInWithFedCM();if(e)return e}catch(e){console.warn("[CrossDomainAuth] FedCM silent sign-in failed:",e)}try{return await this.oxyServices.silentSignIn()}catch(e){return console.warn("[CrossDomainAuth] Silent sign-in failed:",e),null}}restoreSession(){return this.oxyServices.restoreSession?.()||!1}isFedCMSupported(){return this.oxyServices.constructor.isFedCMSupported?.()||!1}getRecommendedMethod(){return this.isFedCMSupported()?{method:"fedcm",reason:"FedCM is supported - provides best UX with browser-native auth"}:"undefined"!=typeof window?{method:"popup",reason:"Browser environment - popup preserves app state"}:{method:"redirect",reason:"Fallback method - works in all environments"}}async initialize(){const e=this.handleRedirectCallback();if(e)return e;if(this.restoreSession())try{const e=await this.oxyServices.getCurrentUser();if(e)return{sessionId:this.oxyServices.getStoredSessionId?.()||"",deviceId:"",expiresAt:new Date(Date.now()+864e5).toISOString(),user:e}}catch(e){console.warn("[CrossDomainAuth] Stored session invalid:",e)}return await this.silentSignIn()}}function Ke(e){return new He(e)}const Ve={sign_in:"low",sign_out:"low",profile_updated:"low",email_changed:"medium",device_added:"medium",device_removed:"medium",security_settings_changed:"medium",account_recovery:"high",private_key_exported:"high",backup_created:"high",suspicious_activity:"critical"};class $e{static isReactNative(){return"undefined"!=typeof navigator&&"ReactNative"===navigator.product}static async getStorage(){if(!this.isReactNative())return{getItem:async e=>localStorage.getItem(e),setItem:async(e,t)=>localStorage.setItem(e,t),removeItem:async e=>localStorage.removeItem(e)};try{const e=(await import("@react-native-async-storage/async-storage")).default;return{getItem:e.getItem.bind(e),setItem:e.setItem.bind(e),removeItem:e.removeItem.bind(e)}}catch(e){throw console.error("AsyncStorage not available in React Native:",e),new Error("AsyncStorage is required in React Native environment")}}static getDeviceFingerprint(){const e={userAgent:"undefined"!=typeof navigator?navigator.userAgent:"unknown",platform:"undefined"!=typeof navigator?navigator.platform:"unknown",language:"undefined"!=typeof navigator?navigator.language:void 0,timezone:"undefined"!=typeof Intl?Intl.DateTimeFormat().resolvedOptions().timeZone:void 0};return"undefined"!=typeof screen&&(e.screen={width:screen.width,height:screen.height,colorDepth:screen.colorDepth}),e}static async getDeviceInfo(){try{const e=await this.getStorage(),t=await e.getItem(this.DEVICE_KEY);if(t){const e=JSON.parse(t);return e.lastUsed=(new Date).toISOString(),await this.saveDeviceInfo(e),e}return await this.createNewDeviceInfo()}catch(e){return console.error("Error getting device info:",e),await this.createNewDeviceInfo()}}static async createNewDeviceInfo(){const e={deviceId:this.generateDeviceId(),fingerprint:JSON.stringify(this.getDeviceFingerprint()),createdAt:(new Date).toISOString(),lastUsed:(new Date).toISOString()};return await this.saveDeviceInfo(e),e}static async saveDeviceInfo(e){try{const t=await this.getStorage();await t.setItem(this.DEVICE_KEY,JSON.stringify(e))}catch(e){console.error("Error saving device info:",e)}}static async updateDeviceName(e){try{const t=await this.getDeviceInfo();t.deviceName=e,await this.saveDeviceInfo(t)}catch(e){console.error("Error updating device name:",e)}}static async clearDeviceInfo(){try{const e=await this.getStorage();await e.removeItem(this.DEVICE_KEY)}catch(e){console.error("Error clearing device info:",e)}}static generateDeviceId(){if("undefined"!=typeof crypto&&crypto.getRandomValues){const e=new Uint8Array(32);return crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,"0")).join("")}return"device_"+Date.now().toString(36)+Math.random().toString(36).substr(2)}static getDefaultDeviceName(){const e=(this.getDeviceFingerprint().platform||"").toLowerCase();return e.includes("win")?"Windows Computer":e.includes("mac")?"Mac Computer":e.includes("linux")?"Linux Computer":e.includes("iphone")?"iPhone":e.includes("ipad")?"iPad":e.includes("android")?"Android Device":"Unknown Device"}}$e.DEVICE_KEY="oxy_device_info";var Ge,We,Qe,Ye={},Je="6.6.1",Xe={},Ze={exports:{}},et=g(Object.freeze({__proto__:null,default:{}})),tt=Ze.exports;function rt(){return Ge||(Ge=1,function(e,t){function r(e,t){if(!e)throw new Error(t||"Assertion failed")}function a(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function i(e,t,r){if(i.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(r=t,t=10),this._init(e||0,t||10,r||"be"))}var o;"object"==typeof e?e.exports=i:t.BN=i,i.BN=i,i.wordSize=26;try{o="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:et.Buffer}catch(e){}function n(e,t){var r=e.charCodeAt(t);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function s(e,t,r){var a=n(e,r);return r-1>=t&&(a|=n(e,r-1)<<4),a}function c(e,t,r,a){for(var i=0,o=Math.min(e.length,r),n=t;n<o;n++){var s=e.charCodeAt(n)-48;i*=a,i+=s>=49?s-49+10:s>=17?s-17+10:s}return i}i.isBN=function(e){return e instanceof i||null!==e&&"object"==typeof e&&e.constructor.wordSize===i.wordSize&&Array.isArray(e.words)},i.max=function(e,t){return e.cmp(t)>0?e:t},i.min=function(e,t){return e.cmp(t)<0?e:t},i.prototype._init=function(e,t,a){if("number"==typeof e)return this._initNumber(e,t,a);if("object"==typeof e)return this._initArray(e,t,a);"hex"===t&&(t=16),r(t===(0|t)&&t>=2&&t<=36);var i=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i<e.length&&(16===t?this._parseHex(e,i,a):(this._parseBase(e,t,i),"le"===a&&this._initArray(this.toArray(),t,a)))},i.prototype._initNumber=function(e,t,a){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(r(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),"le"===a&&this._initArray(this.toArray(),t,a)},i.prototype._initArray=function(e,t,a){if(r("number"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var o,n,s=0;if("be"===a)for(i=e.length-1,o=0;i>=0;i-=3)n=e[i]|e[i-1]<<8|e[i-2]<<16,this.words[o]|=n<<s&67108863,this.words[o+1]=n>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);else if("le"===a)for(i=0,o=0;i<e.length;i+=3)n=e[i]|e[i+1]<<8|e[i+2]<<16,this.words[o]|=n<<s&67108863,this.words[o+1]=n>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);return this.strip()},i.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var a=0;a<this.length;a++)this.words[a]=0;var i,o=0,n=0;if("be"===r)for(a=e.length-1;a>=t;a-=2)i=s(e,t,a)<<o,this.words[n]|=67108863&i,o>=18?(o-=18,n+=1,this.words[n]|=i>>>26):o+=8;else for(a=(e.length-t)%2==0?t+1:t;a<e.length;a+=2)i=s(e,t,a)<<o,this.words[n]|=67108863&i,o>=18?(o-=18,n+=1,this.words[n]|=i>>>26):o+=8;this.strip()},i.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var a=0,i=1;i<=67108863;i*=t)a++;a--,i=i/t|0;for(var o=e.length-r,n=o%a,s=Math.min(o,o-n)+r,u=0,l=r;l<s;l+=a)u=c(e,l,l+a,t),this.imuln(i),this.words[0]+u<67108864?this.words[0]+=u:this._iaddn(u);if(0!==n){var d=1;for(u=c(e,l,e.length,t),l=0;l<n;l++)d*=t;this.imuln(d),this.words[0]+u<67108864?this.words[0]+=u:this._iaddn(u)}this.strip()},i.prototype.copy=function(e){e.words=new Array(this.length);for(var t=0;t<this.length;t++)e.words[t]=this.words[t];e.length=this.length,e.negative=this.negative,e.red=this.red},i.prototype.clone=function(){var e=new i(null);return this.copy(e),e},i.prototype._expand=function(e){for(;this.length<e;)this.words[this.length++]=0;return this},i.prototype.strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var u=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function h(e,t,r){r.negative=t.negative^e.negative;var a=e.length+t.length|0;r.length=a,a=a-1|0;var i=0|e.words[0],o=0|t.words[0],n=i*o,s=67108863&n,c=n/67108864|0;r.words[0]=s;for(var u=1;u<a;u++){for(var l=c>>>26,d=67108863&c,h=Math.min(u,t.length-1),f=Math.max(0,u-e.length+1);f<=h;f++){var p=u-f|0;l+=(n=(i=0|e.words[p])*(o=0|t.words[f])+d)/67108864|0,d=67108863&n}r.words[u]=0|d,c=0|l}return 0!==c?r.words[u]=0|c:r.length--,r.strip()}i.prototype.toString=function(e,t){var a;if(t=0|t||1,16===(e=e||10)||"hex"===e){a="";for(var i=0,o=0,n=0;n<this.length;n++){var s=this.words[n],c=(16777215&(s<<i|o)).toString(16);o=s>>>24-i&16777215,(i+=2)>=26&&(i-=26,n--),a=0!==o||n!==this.length-1?u[6-c.length]+c+a:c+a}for(0!==o&&(a=o.toString(16)+a);a.length%t!==0;)a="0"+a;return 0!==this.negative&&(a="-"+a),a}if(e===(0|e)&&e>=2&&e<=36){var h=l[e],f=d[e];a="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(f).toString(e);a=(p=p.idivn(f)).isZero()?m+a:u[h-m.length]+m+a}for(this.isZero()&&(a="0"+a);a.length%t!==0;)a="0"+a;return 0!==this.negative&&(a="-"+a),a}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(e,t){return r(void 0!==o),this.toArrayLike(o,e,t)},i.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},i.prototype.toArrayLike=function(e,t,a){var i=this.byteLength(),o=a||Math.max(1,i);r(i<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0"),this.strip();var n,s,c="le"===t,u=new e(o),l=this.clone();if(c){for(s=0;!l.isZero();s++)n=l.andln(255),l.iushrn(8),u[s]=n;for(;s<o;s++)u[s]=0}else{for(s=0;s<o-i;s++)u[s]=0;for(s=0;!l.isZero();s++)n=l.andln(255),l.iushrn(8),u[o-s-1]=n}return u},Math.clz32?i.prototype._countBits=function(e){return 32-Math.clz32(e)}:i.prototype._countBits=function(e){var t=e,r=0;return t>=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},i.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 8191&t||(r+=13,t>>>=13),127&t||(r+=7,t>>>=7),15&t||(r+=4,t>>>=4),3&t||(r+=2,t>>>=2),1&t||r++,r},i.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;t<this.length;t++){var r=this._zeroBits(this.words[t]);if(e+=r,26!==r)break}return e},i.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},i.prototype.toTwos=function(e){return 0!==this.negative?this.abs().inotn(e).iaddn(1):this.clone()},i.prototype.fromTwos=function(e){return this.testn(e-1)?this.notn(e).iaddn(1).ineg():this.clone()},i.prototype.isNeg=function(){return 0!==this.negative},i.prototype.neg=function(){return this.clone().ineg()},i.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},i.prototype.iuor=function(e){for(;this.length<e.length;)this.words[this.length++]=0;for(var t=0;t<e.length;t++)this.words[t]=this.words[t]|e.words[t];return this.strip()},i.prototype.ior=function(e){return r(0===(this.negative|e.negative)),this.iuor(e)},i.prototype.or=function(e){return this.length>e.length?this.clone().ior(e):e.clone().ior(this)},i.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},i.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;r<t.length;r++)this.words[r]=this.words[r]&e.words[r];return this.length=t.length,this.strip()},i.prototype.iand=function(e){return r(0===(this.negative|e.negative)),this.iuand(e)},i.prototype.and=function(e){return this.length>e.length?this.clone().iand(e):e.clone().iand(this)},i.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},i.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var a=0;a<r.length;a++)this.words[a]=t.words[a]^r.words[a];if(this!==t)for(;a<t.length;a++)this.words[a]=t.words[a];return this.length=t.length,this.strip()},i.prototype.ixor=function(e){return r(0===(this.negative|e.negative)),this.iuxor(e)},i.prototype.xor=function(e){return this.length>e.length?this.clone().ixor(e):e.clone().ixor(this)},i.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},i.prototype.inotn=function(e){r("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),a=e%26;this._expand(t),a>0&&t--;for(var i=0;i<t;i++)this.words[i]=67108863&~this.words[i];return a>0&&(this.words[i]=~this.words[i]&67108863>>26-a),this.strip()},i.prototype.notn=function(e){return this.clone().inotn(e)},i.prototype.setn=function(e,t){r("number"==typeof e&&e>=0);var a=e/26|0,i=e%26;return this._expand(a+1),this.words[a]=t?this.words[a]|1<<i:this.words[a]&~(1<<i),this.strip()},i.prototype.iadd=function(e){var t,r,a;if(0!==this.negative&&0===e.negative)return this.negative=0,t=this.isub(e),this.negative^=1,this._normSign();if(0===this.negative&&0!==e.negative)return e.negative=0,t=this.isub(e),e.negative=1,t._normSign();this.length>e.length?(r=this,a=e):(r=e,a=this);for(var i=0,o=0;o<a.length;o++)t=(0|r.words[o])+(0|a.words[o])+i,this.words[o]=67108863&t,i=t>>>26;for(;0!==i&&o<r.length;o++)t=(0|r.words[o])+i,this.words[o]=67108863&t,i=t>>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;o<r.length;o++)this.words[o]=r.words[o];return this},i.prototype.add=function(e){var t;return 0!==e.negative&&0===this.negative?(e.negative=0,t=this.sub(e),e.negative^=1,t):0===e.negative&&0!==this.negative?(this.negative=0,t=e.sub(this),this.negative=1,t):this.length>e.length?this.clone().iadd(e):e.clone().iadd(this)},i.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,a,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,a=e):(r=e,a=this);for(var o=0,n=0;n<a.length;n++)o=(t=(0|r.words[n])-(0|a.words[n])+o)>>26,this.words[n]=67108863&t;for(;0!==o&&n<r.length;n++)o=(t=(0|r.words[n])+o)>>26,this.words[n]=67108863&t;if(0===o&&n<r.length&&r!==this)for(;n<r.length;n++)this.words[n]=r.words[n];return this.length=Math.max(this.length,n),r!==this&&(this.negative=1),this.strip()},i.prototype.sub=function(e){return this.clone().isub(e)};var f=function(e,t,r){var a,i,o,n=e.words,s=t.words,c=r.words,u=0,l=0|n[0],d=8191&l,h=l>>>13,f=0|n[1],p=8191&f,m=f>>>13,b=0|n[2],g=8191&b,y=b>>>13,v=0|n[3],w=8191&v,k=v>>>13,S=0|n[4],_=8191&S,E=S>>>13,A=0|n[5],I=8191&A,x=A>>>13,z=0|n[6],M=8191&z,T=z>>>13,R=0|n[7],q=8191&R,O=R>>>13,L=0|n[8],j=8191&L,U=L>>>13,D=0|n[9],C=8191&D,P=D>>>13,N=0|s[0],F=8191&N,B=N>>>13,H=0|s[1],K=8191&H,V=H>>>13,$=0|s[2],G=8191&$,W=$>>>13,Q=0|s[3],Y=8191&Q,J=Q>>>13,X=0|s[4],Z=8191&X,ee=X>>>13,te=0|s[5],re=8191&te,ae=te>>>13,ie=0|s[6],oe=8191&ie,ne=ie>>>13,se=0|s[7],ce=8191&se,ue=se>>>13,le=0|s[8],de=8191&le,he=le>>>13,fe=0|s[9],pe=8191&fe,me=fe>>>13;r.negative=e.negative^t.negative,r.length=19;var be=(u+(a=Math.imul(d,F))|0)+((8191&(i=(i=Math.imul(d,B))+Math.imul(h,F)|0))<<13)|0;u=((o=Math.imul(h,B))+(i>>>13)|0)+(be>>>26)|0,be&=67108863,a=Math.imul(p,F),i=(i=Math.imul(p,B))+Math.imul(m,F)|0,o=Math.imul(m,B);var ge=(u+(a=a+Math.imul(d,K)|0)|0)+((8191&(i=(i=i+Math.imul(d,V)|0)+Math.imul(h,K)|0))<<13)|0;u=((o=o+Math.imul(h,V)|0)+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,a=Math.imul(g,F),i=(i=Math.imul(g,B))+Math.imul(y,F)|0,o=Math.imul(y,B),a=a+Math.imul(p,K)|0,i=(i=i+Math.imul(p,V)|0)+Math.imul(m,K)|0,o=o+Math.imul(m,V)|0;var ye=(u+(a=a+Math.imul(d,G)|0)|0)+((8191&(i=(i=i+Math.imul(d,W)|0)+Math.imul(h,G)|0))<<13)|0;u=((o=o+Math.imul(h,W)|0)+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,a=Math.imul(w,F),i=(i=Math.imul(w,B))+Math.imul(k,F)|0,o=Math.imul(k,B),a=a+Math.imul(g,K)|0,i=(i=i+Math.imul(g,V)|0)+Math.imul(y,K)|0,o=o+Math.imul(y,V)|0,a=a+Math.imul(p,G)|0,i=(i=i+Math.imul(p,W)|0)+Math.imul(m,G)|0,o=o+Math.imul(m,W)|0;var ve=(u+(a=a+Math.imul(d,Y)|0)|0)+((8191&(i=(i=i+Math.imul(d,J)|0)+Math.imul(h,Y)|0))<<13)|0;u=((o=o+Math.imul(h,J)|0)+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,a=Math.imul(_,F),i=(i=Math.imul(_,B))+Math.imul(E,F)|0,o=Math.imul(E,B),a=a+Math.imul(w,K)|0,i=(i=i+Math.imul(w,V)|0)+Math.imul(k,K)|0,o=o+Math.imul(k,V)|0,a=a+Math.imul(g,G)|0,i=(i=i+Math.imul(g,W)|0)+Math.imul(y,G)|0,o=o+Math.imul(y,W)|0,a=a+Math.imul(p,Y)|0,i=(i=i+Math.imul(p,J)|0)+Math.imul(m,Y)|0,o=o+Math.imul(m,J)|0;var we=(u+(a=a+Math.imul(d,Z)|0)|0)+((8191&(i=(i=i+Math.imul(d,ee)|0)+Math.imul(h,Z)|0))<<13)|0;u=((o=o+Math.imul(h,ee)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,a=Math.imul(I,F),i=(i=Math.imul(I,B))+Math.imul(x,F)|0,o=Math.imul(x,B),a=a+Math.imul(_,K)|0,i=(i=i+Math.imul(_,V)|0)+Math.imul(E,K)|0,o=o+Math.imul(E,V)|0,a=a+Math.imul(w,G)|0,i=(i=i+Math.imul(w,W)|0)+Math.imul(k,G)|0,o=o+Math.imul(k,W)|0,a=a+Math.imul(g,Y)|0,i=(i=i+Math.imul(g,J)|0)+Math.imul(y,Y)|0,o=o+Math.imul(y,J)|0,a=a+Math.imul(p,Z)|0,i=(i=i+Math.imul(p,ee)|0)+Math.imul(m,Z)|0,o=o+Math.imul(m,ee)|0;var ke=(u+(a=a+Math.imul(d,re)|0)|0)+((8191&(i=(i=i+Math.imul(d,ae)|0)+Math.imul(h,re)|0))<<13)|0;u=((o=o+Math.imul(h,ae)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,a=Math.imul(M,F),i=(i=Math.imul(M,B))+Math.imul(T,F)|0,o=Math.imul(T,B),a=a+Math.imul(I,K)|0,i=(i=i+Math.imul(I,V)|0)+Math.imul(x,K)|0,o=o+Math.imul(x,V)|0,a=a+Math.imul(_,G)|0,i=(i=i+Math.imul(_,W)|0)+Math.imul(E,G)|0,o=o+Math.imul(E,W)|0,a=a+Math.imul(w,Y)|0,i=(i=i+Math.imul(w,J)|0)+Math.imul(k,Y)|0,o=o+Math.imul(k,J)|0,a=a+Math.imul(g,Z)|0,i=(i=i+Math.imul(g,ee)|0)+Math.imul(y,Z)|0,o=o+Math.imul(y,ee)|0,a=a+Math.imul(p,re)|0,i=(i=i+Math.imul(p,ae)|0)+Math.imul(m,re)|0,o=o+Math.imul(m,ae)|0;var Se=(u+(a=a+Math.imul(d,oe)|0)|0)+((8191&(i=(i=i+Math.imul(d,ne)|0)+Math.imul(h,oe)|0))<<13)|0;u=((o=o+Math.imul(h,ne)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,a=Math.imul(q,F),i=(i=Math.imul(q,B))+Math.imul(O,F)|0,o=Math.imul(O,B),a=a+Math.imul(M,K)|0,i=(i=i+Math.imul(M,V)|0)+Math.imul(T,K)|0,o=o+Math.imul(T,V)|0,a=a+Math.imul(I,G)|0,i=(i=i+Math.imul(I,W)|0)+Math.imul(x,G)|0,o=o+Math.imul(x,W)|0,a=a+Math.imul(_,Y)|0,i=(i=i+Math.imul(_,J)|0)+Math.imul(E,Y)|0,o=o+Math.imul(E,J)|0,a=a+Math.imul(w,Z)|0,i=(i=i+Math.imul(w,ee)|0)+Math.imul(k,Z)|0,o=o+Math.imul(k,ee)|0,a=a+Math.imul(g,re)|0,i=(i=i+Math.imul(g,ae)|0)+Math.imul(y,re)|0,o=o+Math.imul(y,ae)|0,a=a+Math.imul(p,oe)|0,i=(i=i+Math.imul(p,ne)|0)+Math.imul(m,oe)|0,o=o+Math.imul(m,ne)|0;var _e=(u+(a=a+Math.imul(d,ce)|0)|0)+((8191&(i=(i=i+Math.imul(d,ue)|0)+Math.imul(h,ce)|0))<<13)|0;u=((o=o+Math.imul(h,ue)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,a=Math.imul(j,F),i=(i=Math.imul(j,B))+Math.imul(U,F)|0,o=Math.imul(U,B),a=a+Math.imul(q,K)|0,i=(i=i+Math.imul(q,V)|0)+Math.imul(O,K)|0,o=o+Math.imul(O,V)|0,a=a+Math.imul(M,G)|0,i=(i=i+Math.imul(M,W)|0)+Math.imul(T,G)|0,o=o+Math.imul(T,W)|0,a=a+Math.imul(I,Y)|0,i=(i=i+Math.imul(I,J)|0)+Math.imul(x,Y)|0,o=o+Math.imul(x,J)|0,a=a+Math.imul(_,Z)|0,i=(i=i+Math.imul(_,ee)|0)+Math.imul(E,Z)|0,o=o+Math.imul(E,ee)|0,a=a+Math.imul(w,re)|0,i=(i=i+Math.imul(w,ae)|0)+Math.imul(k,re)|0,o=o+Math.imul(k,ae)|0,a=a+Math.imul(g,oe)|0,i=(i=i+Math.imul(g,ne)|0)+Math.imul(y,oe)|0,o=o+Math.imul(y,ne)|0,a=a+Math.imul(p,ce)|0,i=(i=i+Math.imul(p,ue)|0)+Math.imul(m,ce)|0,o=o+Math.imul(m,ue)|0;var Ee=(u+(a=a+Math.imul(d,de)|0)|0)+((8191&(i=(i=i+Math.imul(d,he)|0)+Math.imul(h,de)|0))<<13)|0;u=((o=o+Math.imul(h,he)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,a=Math.imul(C,F),i=(i=Math.imul(C,B))+Math.imul(P,F)|0,o=Math.imul(P,B),a=a+Math.imul(j,K)|0,i=(i=i+Math.imul(j,V)|0)+Math.imul(U,K)|0,o=o+Math.imul(U,V)|0,a=a+Math.imul(q,G)|0,i=(i=i+Math.imul(q,W)|0)+Math.imul(O,G)|0,o=o+Math.imul(O,W)|0,a=a+Math.imul(M,Y)|0,i=(i=i+Math.imul(M,J)|0)+Math.imul(T,Y)|0,o=o+Math.imul(T,J)|0,a=a+Math.imul(I,Z)|0,i=(i=i+Math.imul(I,ee)|0)+Math.imul(x,Z)|0,o=o+Math.imul(x,ee)|0,a=a+Math.imul(_,re)|0,i=(i=i+Math.imul(_,ae)|0)+Math.imul(E,re)|0,o=o+Math.imul(E,ae)|0,a=a+Math.imul(w,oe)|0,i=(i=i+Math.imul(w,ne)|0)+Math.imul(k,oe)|0,o=o+Math.imul(k,ne)|0,a=a+Math.imul(g,ce)|0,i=(i=i+Math.imul(g,ue)|0)+Math.imul(y,ce)|0,o=o+Math.imul(y,ue)|0,a=a+Math.imul(p,de)|0,i=(i=i+Math.imul(p,he)|0)+Math.imul(m,de)|0,o=o+Math.imul(m,he)|0;var Ae=(u+(a=a+Math.imul(d,pe)|0)|0)+((8191&(i=(i=i+Math.imul(d,me)|0)+Math.imul(h,pe)|0))<<13)|0;u=((o=o+Math.imul(h,me)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,a=Math.imul(C,K),i=(i=Math.imul(C,V))+Math.imul(P,K)|0,o=Math.imul(P,V),a=a+Math.imul(j,G)|0,i=(i=i+Math.imul(j,W)|0)+Math.imul(U,G)|0,o=o+Math.imul(U,W)|0,a=a+Math.imul(q,Y)|0,i=(i=i+Math.imul(q,J)|0)+Math.imul(O,Y)|0,o=o+Math.imul(O,J)|0,a=a+Math.imul(M,Z)|0,i=(i=i+Math.imul(M,ee)|0)+Math.imul(T,Z)|0,o=o+Math.imul(T,ee)|0,a=a+Math.imul(I,re)|0,i=(i=i+Math.imul(I,ae)|0)+Math.imul(x,re)|0,o=o+Math.imul(x,ae)|0,a=a+Math.imul(_,oe)|0,i=(i=i+Math.imul(_,ne)|0)+Math.imul(E,oe)|0,o=o+Math.imul(E,ne)|0,a=a+Math.imul(w,ce)|0,i=(i=i+Math.imul(w,ue)|0)+Math.imul(k,ce)|0,o=o+Math.imul(k,ue)|0,a=a+Math.imul(g,de)|0,i=(i=i+Math.imul(g,he)|0)+Math.imul(y,de)|0,o=o+Math.imul(y,he)|0;var Ie=(u+(a=a+Math.imul(p,pe)|0)|0)+((8191&(i=(i=i+Math.imul(p,me)|0)+Math.imul(m,pe)|0))<<13)|0;u=((o=o+Math.imul(m,me)|0)+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,a=Math.imul(C,G),i=(i=Math.imul(C,W))+Math.imul(P,G)|0,o=Math.imul(P,W),a=a+Math.imul(j,Y)|0,i=(i=i+Math.imul(j,J)|0)+Math.imul(U,Y)|0,o=o+Math.imul(U,J)|0,a=a+Math.imul(q,Z)|0,i=(i=i+Math.imul(q,ee)|0)+Math.imul(O,Z)|0,o=o+Math.imul(O,ee)|0,a=a+Math.imul(M,re)|0,i=(i=i+Math.imul(M,ae)|0)+Math.imul(T,re)|0,o=o+Math.imul(T,ae)|0,a=a+Math.imul(I,oe)|0,i=(i=i+Math.imul(I,ne)|0)+Math.imul(x,oe)|0,o=o+Math.imul(x,ne)|0,a=a+Math.imul(_,ce)|0,i=(i=i+Math.imul(_,ue)|0)+Math.imul(E,ce)|0,o=o+Math.imul(E,ue)|0,a=a+Math.imul(w,de)|0,i=(i=i+Math.imul(w,he)|0)+Math.imul(k,de)|0,o=o+Math.imul(k,he)|0;var xe=(u+(a=a+Math.imul(g,pe)|0)|0)+((8191&(i=(i=i+Math.imul(g,me)|0)+Math.imul(y,pe)|0))<<13)|0;u=((o=o+Math.imul(y,me)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,a=Math.imul(C,Y),i=(i=Math.imul(C,J))+Math.imul(P,Y)|0,o=Math.imul(P,J),a=a+Math.imul(j,Z)|0,i=(i=i+Math.imul(j,ee)|0)+Math.imul(U,Z)|0,o=o+Math.imul(U,ee)|0,a=a+Math.imul(q,re)|0,i=(i=i+Math.imul(q,ae)|0)+Math.imul(O,re)|0,o=o+Math.imul(O,ae)|0,a=a+Math.imul(M,oe)|0,i=(i=i+Math.imul(M,ne)|0)+Math.imul(T,oe)|0,o=o+Math.imul(T,ne)|0,a=a+Math.imul(I,ce)|0,i=(i=i+Math.imul(I,ue)|0)+Math.imul(x,ce)|0,o=o+Math.imul(x,ue)|0,a=a+Math.imul(_,de)|0,i=(i=i+Math.imul(_,he)|0)+Math.imul(E,de)|0,o=o+Math.imul(E,he)|0;var ze=(u+(a=a+Math.imul(w,pe)|0)|0)+((8191&(i=(i=i+Math.imul(w,me)|0)+Math.imul(k,pe)|0))<<13)|0;u=((o=o+Math.imul(k,me)|0)+(i>>>13)|0)+(ze>>>26)|0,ze&=67108863,a=Math.imul(C,Z),i=(i=Math.imul(C,ee))+Math.imul(P,Z)|0,o=Math.imul(P,ee),a=a+Math.imul(j,re)|0,i=(i=i+Math.imul(j,ae)|0)+Math.imul(U,re)|0,o=o+Math.imul(U,ae)|0,a=a+Math.imul(q,oe)|0,i=(i=i+Math.imul(q,ne)|0)+Math.imul(O,oe)|0,o=o+Math.imul(O,ne)|0,a=a+Math.imul(M,ce)|0,i=(i=i+Math.imul(M,ue)|0)+Math.imul(T,ce)|0,o=o+Math.imul(T,ue)|0,a=a+Math.imul(I,de)|0,i=(i=i+Math.imul(I,he)|0)+Math.imul(x,de)|0,o=o+Math.imul(x,he)|0;var Me=(u+(a=a+Math.imul(_,pe)|0)|0)+((8191&(i=(i=i+Math.imul(_,me)|0)+Math.imul(E,pe)|0))<<13)|0;u=((o=o+Math.imul(E,me)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,a=Math.imul(C,re),i=(i=Math.imul(C,ae))+Math.imul(P,re)|0,o=Math.imul(P,ae),a=a+Math.imul(j,oe)|0,i=(i=i+Math.imul(j,ne)|0)+Math.imul(U,oe)|0,o=o+Math.imul(U,ne)|0,a=a+Math.imul(q,ce)|0,i=(i=i+Math.imul(q,ue)|0)+Math.imul(O,ce)|0,o=o+Math.imul(O,ue)|0,a=a+Math.imul(M,de)|0,i=(i=i+Math.imul(M,he)|0)+Math.imul(T,de)|0,o=o+Math.imul(T,he)|0;var Te=(u+(a=a+Math.imul(I,pe)|0)|0)+((8191&(i=(i=i+Math.imul(I,me)|0)+Math.imul(x,pe)|0))<<13)|0;u=((o=o+Math.imul(x,me)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,a=Math.imul(C,oe),i=(i=Math.imul(C,ne))+Math.imul(P,oe)|0,o=Math.imul(P,ne),a=a+Math.imul(j,ce)|0,i=(i=i+Math.imul(j,ue)|0)+Math.imul(U,ce)|0,o=o+Math.imul(U,ue)|0,a=a+Math.imul(q,de)|0,i=(i=i+Math.imul(q,he)|0)+Math.imul(O,de)|0,o=o+Math.imul(O,he)|0;var Re=(u+(a=a+Math.imul(M,pe)|0)|0)+((8191&(i=(i=i+Math.imul(M,me)|0)+Math.imul(T,pe)|0))<<13)|0;u=((o=o+Math.imul(T,me)|0)+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,a=Math.imul(C,ce),i=(i=Math.imul(C,ue))+Math.imul(P,ce)|0,o=Math.imul(P,ue),a=a+Math.imul(j,de)|0,i=(i=i+Math.imul(j,he)|0)+Math.imul(U,de)|0,o=o+Math.imul(U,he)|0;var qe=(u+(a=a+Math.imul(q,pe)|0)|0)+((8191&(i=(i=i+Math.imul(q,me)|0)+Math.imul(O,pe)|0))<<13)|0;u=((o=o+Math.imul(O,me)|0)+(i>>>13)|0)+(qe>>>26)|0,qe&=67108863,a=Math.imul(C,de),i=(i=Math.imul(C,he))+Math.imul(P,de)|0,o=Math.imul(P,he);var Oe=(u+(a=a+Math.imul(j,pe)|0)|0)+((8191&(i=(i=i+Math.imul(j,me)|0)+Math.imul(U,pe)|0))<<13)|0;u=((o=o+Math.imul(U,me)|0)+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863;var Le=(u+(a=Math.imul(C,pe))|0)+((8191&(i=(i=Math.imul(C,me))+Math.imul(P,pe)|0))<<13)|0;return u=((o=Math.imul(P,me))+(i>>>13)|0)+(Le>>>26)|0,Le&=67108863,c[0]=be,c[1]=ge,c[2]=ye,c[3]=ve,c[4]=we,c[5]=ke,c[6]=Se,c[7]=_e,c[8]=Ee,c[9]=Ae,c[10]=Ie,c[11]=xe,c[12]=ze,c[13]=Me,c[14]=Te,c[15]=Re,c[16]=qe,c[17]=Oe,c[18]=Le,0!==u&&(c[19]=u,r.length++),r};function p(e,t,r){return(new m).mulp(e,t,r)}function m(e,t){this.x=e,this.y=t}Math.imul||(f=h),i.prototype.mulTo=function(e,t){var r,a=this.length+e.length;return r=10===this.length&&10===e.length?f(this,e,t):a<63?h(this,e,t):a<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var a=0,i=0,o=0;o<r.length-1;o++){var n=i;i=0;for(var s=67108863&a,c=Math.min(o,t.length-1),u=Math.max(0,o-e.length+1);u<=c;u++){var l=o-u,d=(0|e.words[l])*(0|t.words[u]),h=67108863&d;s=67108863&(h=h+s|0),i+=(n=(n=n+(d/67108864|0)|0)+(h>>>26)|0)>>>26,n&=67108863}r.words[o]=s,a=n,n=i}return 0!==a?r.words[o]=a:r.length--,r.strip()}(this,e,t):p(this,e,t),r},m.prototype.makeRBT=function(e){for(var t=new Array(e),r=i.prototype._countBits(e)-1,a=0;a<e;a++)t[a]=this.revBin(a,r,e);return t},m.prototype.revBin=function(e,t,r){if(0===e||e===r-1)return e;for(var a=0,i=0;i<t;i++)a|=(1&e)<<t-i-1,e>>=1;return a},m.prototype.permute=function(e,t,r,a,i,o){for(var n=0;n<o;n++)a[n]=t[e[n]],i[n]=r[e[n]]},m.prototype.transform=function(e,t,r,a,i,o){this.permute(o,e,t,r,a,i);for(var n=1;n<i;n<<=1)for(var s=n<<1,c=Math.cos(2*Math.PI/s),u=Math.sin(2*Math.PI/s),l=0;l<i;l+=s)for(var d=c,h=u,f=0;f<n;f++){var p=r[l+f],m=a[l+f],b=r[l+f+n],g=a[l+f+n],y=d*b-h*g;g=d*g+h*b,b=y,r[l+f]=p+b,a[l+f]=m+g,r[l+f+n]=p-b,a[l+f+n]=m-g,f!==s&&(y=c*d-u*h,h=c*h+u*d,d=y)}},m.prototype.guessLen13b=function(e,t){var r=1|Math.max(t,e),a=1&r,i=0;for(r=r/2|0;r;r>>>=1)i++;return 1<<i+1+a},m.prototype.conjugate=function(e,t,r){if(!(r<=1))for(var a=0;a<r/2;a++){var i=e[a];e[a]=e[r-a-1],e[r-a-1]=i,i=t[a],t[a]=-t[r-a-1],t[r-a-1]=-i}},m.prototype.normalize13b=function(e,t){for(var r=0,a=0;a<t/2;a++){var i=8192*Math.round(e[2*a+1]/t)+Math.round(e[2*a]/t)+r;e[a]=67108863&i,r=i<67108864?0:i/67108864|0}return e},m.prototype.convert13b=function(e,t,a,i){for(var o=0,n=0;n<t;n++)o+=0|e[n],a[2*n]=8191&o,o>>>=13,a[2*n+1]=8191&o,o>>>=13;for(n=2*t;n<i;++n)a[n]=0;r(0===o),r(!(-8192&o))},m.prototype.stub=function(e){for(var t=new Array(e),r=0;r<e;r++)t[r]=0;return t},m.prototype.mulp=function(e,t,r){var a=2*this.guessLen13b(e.length,t.length),i=this.makeRBT(a),o=this.stub(a),n=new Array(a),s=new Array(a),c=new Array(a),u=new Array(a),l=new Array(a),d=new Array(a),h=r.words;h.length=a,this.convert13b(e.words,e.length,n,a),this.convert13b(t.words,t.length,u,a),this.transform(n,o,s,c,a,i),this.transform(u,o,l,d,a,i);for(var f=0;f<a;f++){var p=s[f]*l[f]-c[f]*d[f];c[f]=s[f]*d[f]+c[f]*l[f],s[f]=p}return this.conjugate(s,c,a),this.transform(s,c,h,o,a,i),this.conjugate(h,o,a),this.normalize13b(h,a),r.negative=e.negative^t.negative,r.length=e.length+t.length,r.strip()},i.prototype.mul=function(e){var t=new i(null);return t.words=new Array(this.length+e.length),this.mulTo(e,t)},i.prototype.mulf=function(e){var t=new i(null);return t.words=new Array(this.length+e.length),p(this,e,t)},i.prototype.imul=function(e){return this.clone().mulTo(e,this)},i.prototype.imuln=function(e){r("number"==typeof e),r(e<67108864);for(var t=0,a=0;a<this.length;a++){var i=(0|this.words[a])*e,o=(67108863&i)+(67108863&t);t>>=26,t+=i/67108864|0,t+=o>>>26,this.words[a]=67108863&o}return 0!==t&&(this.words[a]=t,this.length++),this.length=0===e?1:this.length,this},i.prototype.muln=function(e){return this.clone().imuln(e)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r<t.length;r++){var a=r/26|0,i=r%26;t[r]=(e.words[a]&1<<i)>>>i}return t}(e);if(0===t.length)return new i(1);for(var r=this,a=0;a<t.length&&0===t[a];a++,r=r.sqr());if(++a<t.length)for(var o=r.sqr();a<t.length;a++,o=o.sqr())0!==t[a]&&(r=r.mul(o));return r},i.prototype.iushln=function(e){r("number"==typeof e&&e>=0);var t,a=e%26,i=(e-a)/26,o=67108863>>>26-a<<26-a;if(0!==a){var n=0;for(t=0;t<this.length;t++){var s=this.words[t]&o,c=(0|this.words[t])-s<<a;this.words[t]=c|n,n=s>>>26-a}n&&(this.words[t]=n,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t<i;t++)this.words[t]=0;this.length+=i}return this.strip()},i.prototype.ishln=function(e){return r(0===this.negative),this.iushln(e)},i.prototype.iushrn=function(e,t,a){var i;r("number"==typeof e&&e>=0),i=t?(t-t%26)/26:0;var o=e%26,n=Math.min((e-o)/26,this.length),s=67108863^67108863>>>o<<o,c=a;if(i-=n,i=Math.max(0,i),c){for(var u=0;u<n;u++)c.words[u]=this.words[u];c.length=n}if(0===n);else if(this.length>n)for(this.length-=n,u=0;u<this.length;u++)this.words[u]=this.words[u+n];else this.words[0]=0,this.length=1;var l=0;for(u=this.length-1;u>=0&&(0!==l||u>=i);u--){var d=0|this.words[u];this.words[u]=l<<26-o|d>>>o,l=d&s}return c&&0!==l&&(c.words[c.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(e,t,a){return r(0===this.negative),this.iushrn(e,t,a)},i.prototype.shln=function(e){return this.clone().ishln(e)},i.prototype.ushln=function(e){return this.clone().iushln(e)},i.prototype.shrn=function(e){return this.clone().ishrn(e)},i.prototype.ushrn=function(e){return this.clone().iushrn(e)},i.prototype.testn=function(e){r("number"==typeof e&&e>=0);var t=e%26,a=(e-t)/26,i=1<<t;return!(this.length<=a||!(this.words[a]&i))},i.prototype.imaskn=function(e){r("number"==typeof e&&e>=0);var t=e%26,a=(e-t)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=a)return this;if(0!==t&&a++,this.length=Math.min(a,this.length),0!==t){var i=67108863^67108863>>>t<<t;this.words[this.length-1]&=i}return this.strip()},i.prototype.maskn=function(e){return this.clone().imaskn(e)},i.prototype.iaddn=function(e){return r("number"==typeof e),r(e<67108864),e<0?this.isubn(-e):0!==this.negative?1===this.length&&(0|this.words[0])<e?(this.words[0]=e-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(e),this.negative=1,this):this._iaddn(e)},i.prototype._iaddn=function(e){this.words[0]+=e;for(var t=0;t<this.length&&this.words[t]>=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},i.prototype.isubn=function(e){if(r("number"==typeof e),r(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t<this.length&&this.words[t]<0;t++)this.words[t]+=67108864,this.words[t+1]-=1;return this.strip()},i.prototype.addn=function(e){return this.clone().iaddn(e)},i.prototype.subn=function(e){return this.clone().isubn(e)},i.prototype.iabs=function(){return this.negative=0,this},i.prototype.abs=function(){return this.clone().iabs()},i.prototype._ishlnsubmul=function(e,t,a){var i,o,n=e.length+a;this._expand(n);var s=0;for(i=0;i<e.length;i++){o=(0|this.words[i+a])+s;var c=(0|e.words[i])*t;s=((o-=67108863&c)>>26)-(c/67108864|0),this.words[i+a]=67108863&o}for(;i<this.length-a;i++)s=(o=(0|this.words[i+a])+s)>>26,this.words[i+a]=67108863&o;if(0===s)return this.strip();for(r(-1===s),s=0,i=0;i<this.length;i++)s=(o=-(0|this.words[i])+s)>>26,this.words[i]=67108863&o;return this.negative=1,this.strip()},i.prototype._wordDiv=function(e,t){var r=(this.length,e.length),a=this.clone(),o=e,n=0|o.words[o.length-1];0!=(r=26-this._countBits(n))&&(o=o.ushln(r),a.iushln(r),n=0|o.words[o.length-1]);var s,c=a.length-o.length;if("mod"!==t){(s=new i(null)).length=c+1,s.words=new Array(s.length);for(var u=0;u<s.length;u++)s.words[u]=0}var l=a.clone()._ishlnsubmul(o,1,c);0===l.negative&&(a=l,s&&(s.words[c]=1));for(var d=c-1;d>=0;d--){var h=67108864*(0|a.words[o.length+d])+(0|a.words[o.length+d-1]);for(h=Math.min(h/n|0,67108863),a._ishlnsubmul(o,h,d);0!==a.negative;)h--,a.negative=0,a._ishlnsubmul(o,1,d),a.isZero()||(a.negative^=1);s&&(s.words[d]=h)}return s&&s.strip(),a.strip(),"div"!==t&&0!==r&&a.iushrn(r),{div:s||null,mod:a}},i.prototype.divmod=function(e,t,a){return r(!e.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(o=s.div.neg()),"div"!==t&&(n=s.mod.neg(),a&&0!==n.negative&&n.iadd(e)),{div:o,mod:n}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(o=s.div.neg()),{div:o,mod:s.mod}):0!==(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(n=s.mod.neg(),a&&0!==n.negative&&n.isub(e)),{div:s.div,mod:n}):e.length>this.length||this.cmp(e)<0?{div:new i(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new i(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new i(this.modn(e.words[0]))}:this._wordDiv(e,t);var o,n,s},i.prototype.div=function(e){return this.divmod(e,"div",!1).div},i.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},i.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},i.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,a=e.ushrn(1),i=e.andln(1),o=r.cmp(a);return o<0||1===i&&0===o?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},i.prototype.modn=function(e){r(e<=67108863);for(var t=(1<<26)%e,a=0,i=this.length-1;i>=0;i--)a=(t*a+(0|this.words[i]))%e;return a},i.prototype.idivn=function(e){r(e<=67108863);for(var t=0,a=this.length-1;a>=0;a--){var i=(0|this.words[a])+67108864*t;this.words[a]=i/e|0,t=i%e}return this.strip()},i.prototype.divn=function(e){return this.clone().idivn(e)},i.prototype.egcd=function(e){r(0===e.negative),r(!e.isZero());var t=this,a=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var o=new i(1),n=new i(0),s=new i(0),c=new i(1),u=0;t.isEven()&&a.isEven();)t.iushrn(1),a.iushrn(1),++u;for(var l=a.clone(),d=t.clone();!t.isZero();){for(var h=0,f=1;0===(t.words[0]&f)&&h<26;++h,f<<=1);if(h>0)for(t.iushrn(h);h-- >0;)(o.isOdd()||n.isOdd())&&(o.iadd(l),n.isub(d)),o.iushrn(1),n.iushrn(1);for(var p=0,m=1;0===(a.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(a.iushrn(p);p-- >0;)(s.isOdd()||c.isOdd())&&(s.iadd(l),c.isub(d)),s.iushrn(1),c.iushrn(1);t.cmp(a)>=0?(t.isub(a),o.isub(s),n.isub(c)):(a.isub(t),s.isub(o),c.isub(n))}return{a:s,b:c,gcd:a.iushln(u)}},i.prototype._invmp=function(e){r(0===e.negative),r(!e.isZero());var t=this,a=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var o,n=new i(1),s=new i(0),c=a.clone();t.cmpn(1)>0&&a.cmpn(1)>0;){for(var u=0,l=1;0===(t.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(t.iushrn(u);u-- >0;)n.isOdd()&&n.iadd(c),n.iushrn(1);for(var d=0,h=1;0===(a.words[0]&h)&&d<26;++d,h<<=1);if(d>0)for(a.iushrn(d);d-- >0;)s.isOdd()&&s.iadd(c),s.iushrn(1);t.cmp(a)>=0?(t.isub(a),n.isub(s)):(a.isub(t),s.isub(n))}return(o=0===t.cmpn(1)?n:s).cmpn(0)<0&&o.iadd(e),o},i.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var a=0;t.isEven()&&r.isEven();a++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=t.cmp(r);if(i<0){var o=t;t=r,r=o}else if(0===i||0===r.cmpn(1))break;t.isub(r)}return r.iushln(a)},i.prototype.invm=function(e){return this.egcd(e).a.umod(e)},i.prototype.isEven=function(){return!(1&this.words[0])},i.prototype.isOdd=function(){return!(1&~this.words[0])},i.prototype.andln=function(e){return this.words[0]&e},i.prototype.bincn=function(e){r("number"==typeof e);var t=e%26,a=(e-t)/26,i=1<<t;if(this.length<=a)return this._expand(a+1),this.words[a]|=i,this;for(var o=i,n=a;0!==o&&n<this.length;n++){var s=0|this.words[n];o=(s+=o)>>>26,s&=67108863,this.words[n]=s}return 0!==o&&(this.words[n]=o,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(e){var t,a=e<0;if(0!==this.negative&&!a)return-1;if(0===this.negative&&a)return 1;if(this.strip(),this.length>1)t=1;else{a&&(e=-e),r(e<=67108863,"Number is too big");var i=0|this.words[0];t=i===e?0:i<e?-1:1}return 0!==this.negative?0|-t:t},i.prototype.cmp=function(e){if(0!==this.negative&&0===e.negative)return-1;if(0===this.negative&&0!==e.negative)return 1;var t=this.ucmp(e);return 0!==this.negative?0|-t:t},i.prototype.ucmp=function(e){if(this.length>e.length)return 1;if(this.length<e.length)return-1;for(var t=0,r=this.length-1;r>=0;r--){var a=0|this.words[r],i=0|e.words[r];if(a!==i){a<i?t=-1:a>i&&(t=1);break}}return t},i.prototype.gtn=function(e){return 1===this.cmpn(e)},i.prototype.gt=function(e){return 1===this.cmp(e)},i.prototype.gten=function(e){return this.cmpn(e)>=0},i.prototype.gte=function(e){return this.cmp(e)>=0},i.prototype.ltn=function(e){return-1===this.cmpn(e)},i.prototype.lt=function(e){return-1===this.cmp(e)},i.prototype.lten=function(e){return this.cmpn(e)<=0},i.prototype.lte=function(e){return this.cmp(e)<=0},i.prototype.eqn=function(e){return 0===this.cmpn(e)},i.prototype.eq=function(e){return 0===this.cmp(e)},i.red=function(e){return new S(e)},i.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(e){return this.red=e,this},i.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},i.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},i.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},i.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},i.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},i.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},i.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},i.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var b={k256:null,p224:null,p192:null,p25519:null};function g(e,t){this.name=e,this.p=new i(t,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function y(){g.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function v(){g.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){g.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function k(){g.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function S(e){if("string"==typeof e){var t=i._prime(e);this.m=t.p,this.prime=t}else r(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function _(e){S.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}g.prototype._tmp=function(){var e=new i(null);return e.words=new Array(Math.ceil(this.n/13)),e},g.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var a=t<this.n?-1:r.ucmp(this.p);return 0===a?(r.words[0]=0,r.length=1):a>0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},g.prototype.split=function(e,t){e.iushrn(this.n,0,t)},g.prototype.imulK=function(e){return e.imul(this.k)},a(y,g),y.prototype.split=function(e,t){for(var r=4194303,a=Math.min(e.length,9),i=0;i<a;i++)t.words[i]=e.words[i];if(t.length=a,e.length<=9)return e.words[0]=0,void(e.length=1);var o=e.words[9];for(t.words[t.length++]=o&r,i=10;i<e.length;i++){var n=0|e.words[i];e.words[i-10]=(n&r)<<4|o>>>22,o=n}o>>>=22,e.words[i-10]=o,0===o&&e.length>10?e.length-=10:e.length-=9},y.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r<e.length;r++){var a=0|e.words[r];t+=977*a,e.words[r]=67108863&t,t=64*a+(t/67108864|0)}return 0===e.words[e.length-1]&&(e.length--,0===e.words[e.length-1]&&e.length--),e},a(v,g),a(w,g),a(k,g),k.prototype.imulK=function(e){for(var t=0,r=0;r<e.length;r++){var a=19*(0|e.words[r])+t,i=67108863&a;a>>>=26,e.words[r]=i,t=a}return 0!==t&&(e.words[e.length++]=t),e},i._prime=function(e){if(b[e])return b[e];var t;if("k256"===e)t=new y;else if("p224"===e)t=new v;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new k}return b[e]=t,t},S.prototype._verify1=function(e){r(0===e.negative,"red works only with positives"),r(e.red,"red works only with red numbers")},S.prototype._verify2=function(e,t){r(0===(e.negative|t.negative),"red works only with positives"),r(e.red&&e.red===t.red,"red works only with red numbers")},S.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},S.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},S.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},S.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},S.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},S.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},S.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},S.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},S.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},S.prototype.isqr=function(e){return this.imul(e,e.clone())},S.prototype.sqr=function(e){return this.mul(e,e)},S.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(r(t%2==1),3===t){var a=this.m.add(new i(1)).iushrn(2);return this.pow(e,a)}for(var o=this.m.subn(1),n=0;!o.isZero()&&0===o.andln(1);)n++,o.iushrn(1);r(!o.isZero());var s=new i(1).toRed(this),c=s.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new i(2*l*l).toRed(this);0!==this.pow(l,u).cmp(c);)l.redIAdd(c);for(var d=this.pow(l,o),h=this.pow(e,o.addn(1).iushrn(1)),f=this.pow(e,o),p=n;0!==f.cmp(s);){for(var m=f,b=0;0!==m.cmp(s);b++)m=m.redSqr();r(b<p);var g=this.pow(d,new i(1).iushln(p-b-1));h=h.redMul(g),d=g.redSqr(),f=f.redMul(d),p=b}return h},S.prototype.invm=function(e){var t=e._invmp(this.m);return 0!==t.negative?(t.negative=0,this.imod(t).redNeg()):this.imod(t)},S.prototype.pow=function(e,t){if(t.isZero())return new i(1).toRed(this);if(0===t.cmpn(1))return e.clone();var r=new Array(16);r[0]=new i(1).toRed(this),r[1]=e;for(var a=2;a<r.length;a++)r[a]=this.mul(r[a-1],e);var o=r[0],n=0,s=0,c=t.bitLength()%26;for(0===c&&(c=26),a=t.length-1;a>=0;a--){for(var u=t.words[a],l=c-1;l>=0;l--){var d=u>>l&1;o!==r[0]&&(o=this.sqr(o)),0!==d||0!==n?(n<<=1,n|=d,(4===++s||0===a&&0===l)&&(o=this.mul(o,r[n]),s=0,n=0)):s=0}c=26}return o},S.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},S.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},i.mont=function(e){return new _(e)},a(_,S),_.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},_.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},_.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),a=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(a).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},_.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new i(0)._forceRed(this);var r=e.mul(t),a=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),o=r.isub(a).iushrn(this.shift),n=o;return o.cmp(this.m)>=0?n=o.isub(this.m):o.cmpn(0)<0&&(n=o.iadd(this.m)),n._forceRed(this)},_.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(Ze,tt)),Ze.exports}function at(){if(Qe)return We;function e(e,t){if(!e)throw new Error(t||"Assertion failed")}return Qe=1,We=e,e.equal=function(e,t,r){if(e!=t)throw new Error(r||"Assertion failed: "+e+" != "+t)},We}var it,ot,nt={};function st(){return it||(it=1,function(){var e=nt;function t(e){return 1===e.length?"0"+e:e}function r(e){for(var r="",a=0;a<e.length;a++)r+=t(e[a].toString(16));return r}e.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if("string"!=typeof e){for(var a=0;a<e.length;a++)r[a]=0|e[a];return r}if("hex"===t){(e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e);for(a=0;a<e.length;a+=2)r.push(parseInt(e[a]+e[a+1],16))}else for(a=0;a<e.length;a++){var i=e.charCodeAt(a),o=i>>8,n=255&i;o?r.push(o,n):r.push(n)}return r},e.zero2=t,e.toHex=r,e.encode=function(e,t){return"hex"===t?r(e):e}}()),nt}function ct(){return ot||(ot=1,function(){var e=Xe,t=rt(),r=at(),a=st();e.assert=r,e.toArray=a.toArray,e.zero2=a.zero2,e.toHex=a.toHex,e.encode=a.encode,e.getNAF=function(e,t,r){var a,i=new Array(Math.max(e.bitLength(),r)+1);for(a=0;a<i.length;a+=1)i[a]=0;var o=1<<t+1,n=e.clone();for(a=0;a<i.length;a++){var s,c=n.andln(o-1);n.isOdd()?(s=c>(o>>1)-1?(o>>1)-c:c,n.isubn(s)):s=0,i[a]=s,n.iushrn(1)}return i},e.getJSF=function(e,t){var r=[[],[]];e=e.clone(),t=t.clone();for(var a,i=0,o=0;e.cmpn(-i)>0||t.cmpn(-o)>0;){var n,s,c=e.andln(3)+i&3,u=t.andln(3)+o&3;3===c&&(c=-1),3===u&&(u=-1),n=1&c?3!==(a=e.andln(7)+i&7)&&5!==a||2!==u?c:-c:0,r[0].push(n),s=1&u?3!==(a=t.andln(7)+o&7)&&5!==a||2!==c?u:-u:0,r[1].push(s),2*i===n+1&&(i=1-i),2*o===s+1&&(o=1-o),e.iushrn(1),t.iushrn(1)}return r},e.cachedProperty=function(e,t,r){var a="_"+t;e.prototype[t]=function(){return void 0!==this[a]?this[a]:this[a]=r.call(this)}},e.parseBytes=function(t){return"string"==typeof t?e.toArray(t,"hex"):t},e.intFromLE=function(e){return new t(e,"hex","le")}}()),Xe}var ut,lt={exports:{}};function dt(){if(ut)return lt.exports;var e;function t(e){this.rand=e}if(ut=1,lt.exports=function(r){return e||(e=new t(null)),e.generate(r)},lt.exports.Rand=t,t.prototype.generate=function(e){return this._rand(e)},t.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var t=new Uint8Array(e),r=0;r<t.length;r++)t[r]=this.rand.getByte();return t},"object"==typeof self)self.crypto&&self.crypto.getRandomValues?t.prototype._rand=function(e){var t=new Uint8Array(e);return self.crypto.getRandomValues(t),t}:self.msCrypto&&self.msCrypto.getRandomValues?t.prototype._rand=function(e){var t=new Uint8Array(e);return self.msCrypto.getRandomValues(t),t}:"object"==typeof window&&(t.prototype._rand=function(){throw new Error("Not implemented yet")});else try{var r=et;if("function"!=typeof r.randomBytes)throw new Error("Not supported");t.prototype._rand=function(e){return r.randomBytes(e)}}catch(e){}return lt.exports}var ht,ft,pt={};function mt(){if(ft)return ht;ft=1;var e=rt(),t=ct(),r=t.getNAF,a=t.getJSF,i=t.assert;function o(t,r){this.type=t,this.p=new e(r.p,16),this.red=r.prime?e.red(r.prime):e.mont(this.p),this.zero=new e(0).toRed(this.red),this.one=new e(1).toRed(this.red),this.two=new e(2).toRed(this.red),this.n=r.n&&new e(r.n,16),this.g=r.g&&this.pointFromJSON(r.g,r.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var a=this.n&&this.p.div(this.n);!a||a.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function n(e,t){this.curve=e,this.type=t,this.precomputed=null}return ht=o,o.prototype.point=function(){throw new Error("Not implemented")},o.prototype.validate=function(){throw new Error("Not implemented")},o.prototype._fixedNafMul=function(e,t){i(e.precomputed);var a=e._getDoubles(),o=r(t,1,this._bitLength),n=(1<<a.step+1)-(a.step%2==0?2:1);n/=3;var s,c,u=[];for(s=0;s<o.length;s+=a.step){c=0;for(var l=s+a.step-1;l>=s;l--)c=(c<<1)+o[l];u.push(c)}for(var d=this.jpoint(null,null,null),h=this.jpoint(null,null,null),f=n;f>0;f--){for(s=0;s<u.length;s++)(c=u[s])===f?h=h.mixedAdd(a.points[s]):c===-f&&(h=h.mixedAdd(a.points[s].neg()));d=d.add(h)}return d.toP()},o.prototype._wnafMul=function(e,t){var a=4,o=e._getNAFPoints(a);a=o.wnd;for(var n=o.points,s=r(t,a,this._bitLength),c=this.jpoint(null,null,null),u=s.length-1;u>=0;u--){for(var l=0;u>=0&&0===s[u];u--)l++;if(u>=0&&l++,c=c.dblp(l),u<0)break;var d=s[u];i(0!==d),c="affine"===e.type?d>0?c.mixedAdd(n[d-1>>1]):c.mixedAdd(n[-d-1>>1].neg()):d>0?c.add(n[d-1>>1]):c.add(n[-d-1>>1].neg())}return"affine"===e.type?c.toP():c},o.prototype._wnafMulAdd=function(e,t,i,o,n){var s,c,u,l=this._wnafT1,d=this._wnafT2,h=this._wnafT3,f=0;for(s=0;s<o;s++){var p=(u=t[s])._getNAFPoints(e);l[s]=p.wnd,d[s]=p.points}for(s=o-1;s>=1;s-=2){var m=s-1,b=s;if(1===l[m]&&1===l[b]){var g=[t[m],null,null,t[b]];0===t[m].y.cmp(t[b].y)?(g[1]=t[m].add(t[b]),g[2]=t[m].toJ().mixedAdd(t[b].neg())):0===t[m].y.cmp(t[b].y.redNeg())?(g[1]=t[m].toJ().mixedAdd(t[b]),g[2]=t[m].add(t[b].neg())):(g[1]=t[m].toJ().mixedAdd(t[b]),g[2]=t[m].toJ().mixedAdd(t[b].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],v=a(i[m],i[b]);for(f=Math.max(v[0].length,f),h[m]=new Array(f),h[b]=new Array(f),c=0;c<f;c++){var w=0|v[0][c],k=0|v[1][c];h[m][c]=y[3*(w+1)+(k+1)],h[b][c]=0,d[m]=g}}else h[m]=r(i[m],l[m],this._bitLength),h[b]=r(i[b],l[b],this._bitLength),f=Math.max(h[m].length,f),f=Math.max(h[b].length,f)}var S=this.jpoint(null,null,null),_=this._wnafT4;for(s=f;s>=0;s--){for(var E=0;s>=0;){var A=!0;for(c=0;c<o;c++)_[c]=0|h[c][s],0!==_[c]&&(A=!1);if(!A)break;E++,s--}if(s>=0&&E++,S=S.dblp(E),s<0)break;for(c=0;c<o;c++){var I=_[c];0!==I&&(I>0?u=d[c][I-1>>1]:I<0&&(u=d[c][-I-1>>1].neg()),S="affine"===u.type?S.mixedAdd(u):S.add(u))}}for(s=0;s<o;s++)d[s]=null;return n?S:S.toP()},o.BasePoint=n,n.prototype.eq=function(){throw new Error("Not implemented")},n.prototype.validate=function(){return this.curve.validate(this)},o.prototype.decodePoint=function(e,r){e=t.toArray(e,r);var a=this.p.byteLength();if((4===e[0]||6===e[0]||7===e[0])&&e.length-1==2*a)return 6===e[0]?i(e[e.length-1]%2==0):7===e[0]&&i(e[e.length-1]%2==1),this.point(e.slice(1,1+a),e.slice(1+a,1+2*a));if((2===e[0]||3===e[0])&&e.length-1===a)return this.pointFromX(e.slice(1,1+a),3===e[0]);throw new Error("Unknown point format")},n.prototype.encodeCompressed=function(e){return this.encode(e,!0)},n.prototype._encode=function(e){var t=this.curve.p.byteLength(),r=this.getX().toArray("be",t);return e?[this.getY().isEven()?2:3].concat(r):[4].concat(r,this.getY().toArray("be",t))},n.prototype.encode=function(e,r){return t.encode(this._encode(r),e)},n.prototype.precompute=function(e){if(this.precomputed)return this;var t={doubles:null,naf:null,beta:null};return t.naf=this._getNAFPoints(8),t.doubles=this._getDoubles(4,e),t.beta=this._getBeta(),this.precomputed=t,this},n.prototype._hasDoubles=function(e){if(!this.precomputed)return!1;var t=this.precomputed.doubles;return!!t&&t.points.length>=Math.ceil((e.bitLength()+1)/t.step)},n.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],a=this,i=0;i<t;i+=e){for(var o=0;o<e;o++)a=a.dbl();r.push(a)}return{step:e,points:r}},n.prototype._getNAFPoints=function(e){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var t=[this],r=(1<<e)-1,a=1===r?null:this.dbl(),i=1;i<r;i++)t[i]=t[i-1].add(a);return{wnd:e,points:t}},n.prototype._getBeta=function(){return null},n.prototype.dblp=function(e){for(var t=this,r=0;r<e;r++)t=t.dbl();return t},ht}var bt,gt,yt,vt,wt,kt,St,_t,Et={exports:{}};function At(){return bt||(bt=1,"function"==typeof Object.create?Et.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Et.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}),Et.exports}function It(){return _t||(_t=1,function(e){var t=e;t.base=mt(),t.short=function(){if(yt)return gt;yt=1;var e=ct(),t=rt(),r=At(),a=mt(),i=e.assert;function o(e){a.call(this,"short",e),this.a=new t(e.a,16).toRed(this.red),this.b=new t(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function n(e,r,i,o){a.BasePoint.call(this,e,"affine"),null===r&&null===i?(this.x=null,this.y=null,this.inf=!0):(this.x=new t(r,16),this.y=new t(i,16),o&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function s(e,r,i,o){a.BasePoint.call(this,e,"jacobian"),null===r&&null===i&&null===o?(this.x=this.curve.one,this.y=this.curve.one,this.z=new t(0)):(this.x=new t(r,16),this.y=new t(i,16),this.z=new t(o,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}return r(o,a),gt=o,o.prototype._getEndomorphism=function(e){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var r,a;if(e.beta)r=new t(e.beta,16).toRed(this.red);else{var o=this._getEndoRoots(this.p);r=(r=o[0].cmp(o[1])<0?o[0]:o[1]).toRed(this.red)}if(e.lambda)a=new t(e.lambda,16);else{var n=this._getEndoRoots(this.n);0===this.g.mul(n[0]).x.cmp(this.g.x.redMul(r))?a=n[0]:(a=n[1],i(0===this.g.mul(a).x.cmp(this.g.x.redMul(r))))}return{beta:r,lambda:a,basis:e.basis?e.basis.map(function(e){return{a:new t(e.a,16),b:new t(e.b,16)}}):this._getEndoBasis(a)}}},o.prototype._getEndoRoots=function(e){var r=e===this.p?this.red:t.mont(e),a=new t(2).toRed(r).redInvm(),i=a.redNeg(),o=new t(3).toRed(r).redNeg().redSqrt().redMul(a);return[i.redAdd(o).fromRed(),i.redSub(o).fromRed()]},o.prototype._getEndoBasis=function(e){for(var r,a,i,o,n,s,c,u,l,d=this.n.ushrn(Math.floor(this.n.bitLength()/2)),h=e,f=this.n.clone(),p=new t(1),m=new t(0),b=new t(0),g=new t(1),y=0;0!==h.cmpn(0);){var v=f.div(h);u=f.sub(v.mul(h)),l=b.sub(v.mul(p));var w=g.sub(v.mul(m));if(!i&&u.cmp(d)<0)r=c.neg(),a=p,i=u.neg(),o=l;else if(i&&2===++y)break;c=u,f=h,h=u,b=p,p=l,g=m,m=w}n=u.neg(),s=l;var k=i.sqr().add(o.sqr());return n.sqr().add(s.sqr()).cmp(k)>=0&&(n=r,s=a),i.negative&&(i=i.neg(),o=o.neg()),n.negative&&(n=n.neg(),s=s.neg()),[{a:i,b:o},{a:n,b:s}]},o.prototype._endoSplit=function(e){var t=this.endo.basis,r=t[0],a=t[1],i=a.b.mul(e).divRound(this.n),o=r.b.neg().mul(e).divRound(this.n),n=i.mul(r.a),s=o.mul(a.a),c=i.mul(r.b),u=o.mul(a.b);return{k1:e.sub(n).sub(s),k2:c.add(u).neg()}},o.prototype.pointFromX=function(e,r){(e=new t(e,16)).red||(e=e.toRed(this.red));var a=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=a.redSqrt();if(0!==i.redSqr().redSub(a).cmp(this.zero))throw new Error("invalid point");var o=i.fromRed().isOdd();return(r&&!o||!r&&o)&&(i=i.redNeg()),this.point(e,i)},o.prototype.validate=function(e){if(e.inf)return!0;var t=e.x,r=e.y,a=this.a.redMul(t),i=t.redSqr().redMul(t).redIAdd(a).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},o.prototype._endoWnafMulAdd=function(e,t,r){for(var a=this._endoWnafT1,i=this._endoWnafT2,o=0;o<e.length;o++){var n=this._endoSplit(t[o]),s=e[o],c=s._getBeta();n.k1.negative&&(n.k1.ineg(),s=s.neg(!0)),n.k2.negative&&(n.k2.ineg(),c=c.neg(!0)),a[2*o]=s,a[2*o+1]=c,i[2*o]=n.k1,i[2*o+1]=n.k2}for(var u=this._wnafMulAdd(1,a,i,2*o,r),l=0;l<2*o;l++)a[l]=null,i[l]=null;return u},r(n,a.BasePoint),o.prototype.point=function(e,t,r){return new n(this,e,t,r)},o.prototype.pointFromJSON=function(e,t){return n.fromJSON(this,e,t)},n.prototype._getBeta=function(){if(this.curve.endo){var e=this.precomputed;if(e&&e.beta)return e.beta;var t=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(e){var r=this.curve,a=function(e){return r.point(e.x.redMul(r.endo.beta),e.y)};e.beta=t,t.precomputed={beta:null,naf:e.naf&&{wnd:e.naf.wnd,points:e.naf.points.map(a)},doubles:e.doubles&&{step:e.doubles.step,points:e.doubles.points.map(a)}}}return t}},n.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},n.fromJSON=function(e,t,r){"string"==typeof t&&(t=JSON.parse(t));var a=e.point(t[0],t[1],r);if(!t[2])return a;function i(t){return e.point(t[0],t[1],r)}var o=t[2];return a.precomputed={beta:null,doubles:o.doubles&&{step:o.doubles.step,points:[a].concat(o.doubles.points.map(i))},naf:o.naf&&{wnd:o.naf.wnd,points:[a].concat(o.naf.points.map(i))}},a},n.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},n.prototype.isInfinity=function(){return this.inf},n.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var t=this.y.redSub(e.y);0!==t.cmpn(0)&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var r=t.redSqr().redISub(this.x).redISub(e.x),a=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,a)},n.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var t=this.curve.a,r=this.x.redSqr(),a=e.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(t).redMul(a),o=i.redSqr().redISub(this.x.redAdd(this.x)),n=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,n)},n.prototype.getX=function(){return this.x.fromRed()},n.prototype.getY=function(){return this.y.fromRed()},n.prototype.mul=function(e){return e=new t(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},n.prototype.mulAdd=function(e,t,r){var a=[this,t],i=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(a,i):this.curve._wnafMulAdd(1,a,i,2)},n.prototype.jmulAdd=function(e,t,r){var a=[this,t],i=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(a,i,!0):this.curve._wnafMulAdd(1,a,i,2,!0)},n.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},n.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,a=function(e){return e.neg()};t.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(a)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(a)}}}return t},n.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},r(s,a.BasePoint),o.prototype.jpoint=function(e,t,r){return new s(this,e,t,r)},s.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),r=this.x.redMul(t),a=this.y.redMul(t).redMul(e);return this.curve.point(r,a)},s.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},s.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),r=this.z.redSqr(),a=this.x.redMul(t),i=e.x.redMul(r),o=this.y.redMul(t.redMul(e.z)),n=e.y.redMul(r.redMul(this.z)),s=a.redSub(i),c=o.redSub(n);if(0===s.cmpn(0))return 0!==c.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=s.redSqr(),l=u.redMul(s),d=a.redMul(u),h=c.redSqr().redIAdd(l).redISub(d).redISub(d),f=c.redMul(d.redISub(h)).redISub(o.redMul(l)),p=this.z.redMul(e.z).redMul(s);return this.curve.jpoint(h,f,p)},s.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),r=this.x,a=e.x.redMul(t),i=this.y,o=e.y.redMul(t).redMul(this.z),n=r.redSub(a),s=i.redSub(o);if(0===n.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=n.redSqr(),u=c.redMul(n),l=r.redMul(c),d=s.redSqr().redIAdd(u).redISub(l).redISub(l),h=s.redMul(l.redISub(d)).redISub(i.redMul(u)),f=this.z.redMul(n);return this.curve.jpoint(d,h,f)},s.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var t;if(this.curve.zeroA||this.curve.threeA){var r=this;for(t=0;t<e;t++)r=r.dbl();return r}var a=this.curve.a,i=this.curve.tinv,o=this.x,n=this.y,s=this.z,c=s.redSqr().redSqr(),u=n.redAdd(n);for(t=0;t<e;t++){var l=o.redSqr(),d=u.redSqr(),h=d.redSqr(),f=l.redAdd(l).redIAdd(l).redIAdd(a.redMul(c)),p=o.redMul(d),m=f.redSqr().redISub(p.redAdd(p)),b=p.redISub(m),g=f.redMul(b);g=g.redIAdd(g).redISub(h);var y=u.redMul(s);t+1<e&&(c=c.redMul(h)),o=m,s=y,u=g}return this.curve.jpoint(o,u.redMul(i),s)},s.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},s.prototype._zeroDbl=function(){var e,t,r;if(this.zOne){var a=this.x.redSqr(),i=this.y.redSqr(),o=i.redSqr(),n=this.x.redAdd(i).redSqr().redISub(a).redISub(o);n=n.redIAdd(n);var s=a.redAdd(a).redIAdd(a),c=s.redSqr().redISub(n).redISub(n),u=o.redIAdd(o);u=(u=u.redIAdd(u)).redIAdd(u),e=c,t=s.redMul(n.redISub(c)).redISub(u),r=this.y.redAdd(this.y)}else{var l=this.x.redSqr(),d=this.y.redSqr(),h=d.redSqr(),f=this.x.redAdd(d).redSqr().redISub(l).redISub(h);f=f.redIAdd(f);var p=l.redAdd(l).redIAdd(l),m=p.redSqr(),b=h.redIAdd(h);b=(b=b.redIAdd(b)).redIAdd(b),e=m.redISub(f).redISub(f),t=p.redMul(f.redISub(e)).redISub(b),r=(r=this.y.redMul(this.z)).redIAdd(r)}return this.curve.jpoint(e,t,r)},s.prototype._threeDbl=function(){var e,t,r;if(this.zOne){var a=this.x.redSqr(),i=this.y.redSqr(),o=i.redSqr(),n=this.x.redAdd(i).redSqr().redISub(a).redISub(o);n=n.redIAdd(n);var s=a.redAdd(a).redIAdd(a).redIAdd(this.curve.a),c=s.redSqr().redISub(n).redISub(n);e=c;var u=o.redIAdd(o);u=(u=u.redIAdd(u)).redIAdd(u),t=s.redMul(n.redISub(c)).redISub(u),r=this.y.redAdd(this.y)}else{var l=this.z.redSqr(),d=this.y.redSqr(),h=this.x.redMul(d),f=this.x.redSub(l).redMul(this.x.redAdd(l));f=f.redAdd(f).redIAdd(f);var p=h.redIAdd(h),m=(p=p.redIAdd(p)).redAdd(p);e=f.redSqr().redISub(m),r=this.y.redAdd(this.z).redSqr().redISub(d).redISub(l);var b=d.redSqr();b=(b=(b=b.redIAdd(b)).redIAdd(b)).redIAdd(b),t=f.redMul(p.redISub(e)).redISub(b)}return this.curve.jpoint(e,t,r)},s.prototype._dbl=function(){var e=this.curve.a,t=this.x,r=this.y,a=this.z,i=a.redSqr().redSqr(),o=t.redSqr(),n=r.redSqr(),s=o.redAdd(o).redIAdd(o).redIAdd(e.redMul(i)),c=t.redAdd(t),u=(c=c.redIAdd(c)).redMul(n),l=s.redSqr().redISub(u.redAdd(u)),d=u.redISub(l),h=n.redSqr();h=(h=(h=h.redIAdd(h)).redIAdd(h)).redIAdd(h);var f=s.redMul(d).redISub(h),p=r.redAdd(r).redMul(a);return this.curve.jpoint(l,f,p)},s.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var e=this.x.redSqr(),t=this.y.redSqr(),r=this.z.redSqr(),a=t.redSqr(),i=e.redAdd(e).redIAdd(e),o=i.redSqr(),n=this.x.redAdd(t).redSqr().redISub(e).redISub(a),s=(n=(n=(n=n.redIAdd(n)).redAdd(n).redIAdd(n)).redISub(o)).redSqr(),c=a.redIAdd(a);c=(c=(c=c.redIAdd(c)).redIAdd(c)).redIAdd(c);var u=i.redIAdd(n).redSqr().redISub(o).redISub(s).redISub(c),l=t.redMul(u);l=(l=l.redIAdd(l)).redIAdd(l);var d=this.x.redMul(s).redISub(l);d=(d=d.redIAdd(d)).redIAdd(d);var h=this.y.redMul(u.redMul(c.redISub(u)).redISub(n.redMul(s)));h=(h=(h=h.redIAdd(h)).redIAdd(h)).redIAdd(h);var f=this.z.redAdd(n).redSqr().redISub(r).redISub(s);return this.curve.jpoint(d,h,f)},s.prototype.mul=function(e,r){return e=new t(e,r),this.curve._wnafMul(this,e)},s.prototype.eq=function(e){if("affine"===e.type)return this.eq(e.toJ());if(this===e)return!0;var t=this.z.redSqr(),r=e.z.redSqr();if(0!==this.x.redMul(r).redISub(e.x.redMul(t)).cmpn(0))return!1;var a=t.redMul(this.z),i=r.redMul(e.z);return 0===this.y.redMul(i).redISub(e.y.redMul(a)).cmpn(0)},s.prototype.eqXToP=function(e){var t=this.z.redSqr(),r=e.toRed(this.curve.red).redMul(t);if(0===this.x.cmp(r))return!0;for(var a=e.clone(),i=this.curve.redN.redMul(t);;){if(a.iadd(this.curve.n),a.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}},s.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},s.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},gt}(),t.mont=function(){if(wt)return vt;wt=1;var e=rt(),t=At(),r=mt(),a=ct();function i(t){r.call(this,"mont",t),this.a=new e(t.a,16).toRed(this.red),this.b=new e(t.b,16).toRed(this.red),this.i4=new e(4).toRed(this.red).redInvm(),this.two=new e(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function o(t,a,i){r.BasePoint.call(this,t,"projective"),null===a&&null===i?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new e(a,16),this.z=new e(i,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}return t(i,r),vt=i,i.prototype.validate=function(e){var t=e.normalize().x,r=t.redSqr(),a=r.redMul(t).redAdd(r.redMul(this.a)).redAdd(t);return 0===a.redSqrt().redSqr().cmp(a)},t(o,r.BasePoint),i.prototype.decodePoint=function(e,t){return this.point(a.toArray(e,t),1)},i.prototype.point=function(e,t){return new o(this,e,t)},i.prototype.pointFromJSON=function(e){return o.fromJSON(this,e)},o.prototype.precompute=function(){},o.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},o.fromJSON=function(e,t){return new o(e,t[0],t[1]||e.one)},o.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},o.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},o.prototype.dbl=function(){var e=this.x.redAdd(this.z).redSqr(),t=this.x.redSub(this.z).redSqr(),r=e.redSub(t),a=e.redMul(t),i=r.redMul(t.redAdd(this.curve.a24.redMul(r)));return this.curve.point(a,i)},o.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},o.prototype.diffAdd=function(e,t){var r=this.x.redAdd(this.z),a=this.x.redSub(this.z),i=e.x.redAdd(e.z),o=e.x.redSub(e.z).redMul(r),n=i.redMul(a),s=t.z.redMul(o.redAdd(n).redSqr()),c=t.x.redMul(o.redISub(n).redSqr());return this.curve.point(s,c)},o.prototype.mul=function(e){for(var t=e.clone(),r=this,a=this.curve.point(null,null),i=[];0!==t.cmpn(0);t.iushrn(1))i.push(t.andln(1));for(var o=i.length-1;o>=0;o--)0===i[o]?(r=r.diffAdd(a,this),a=a.dbl()):(a=r.diffAdd(a,this),r=r.dbl());return a},o.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},o.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},o.prototype.eq=function(e){return 0===this.getX().cmp(e.getX())},o.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},o.prototype.getX=function(){return this.normalize(),this.x.fromRed()},vt}(),t.edwards=function(){if(St)return kt;St=1;var e=ct(),t=rt(),r=At(),a=mt(),i=e.assert;function o(e){this.twisted=1!=(0|e.a),this.mOneA=this.twisted&&-1==(0|e.a),this.extended=this.mOneA,a.call(this,"edwards",e),this.a=new t(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new t(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new t(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),i(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|e.c)}function n(e,r,i,o,n){a.BasePoint.call(this,e,"projective"),null===r&&null===i&&null===o?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new t(r,16),this.y=new t(i,16),this.z=o?new t(o,16):this.curve.one,this.t=n&&new t(n,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}return r(o,a),kt=o,o.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},o.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},o.prototype.jpoint=function(e,t,r,a){return this.point(e,t,r,a)},o.prototype.pointFromX=function(e,r){(e=new t(e,16)).red||(e=e.toRed(this.red));var a=e.redSqr(),i=this.c2.redSub(this.a.redMul(a)),o=this.one.redSub(this.c2.redMul(this.d).redMul(a)),n=i.redMul(o.redInvm()),s=n.redSqrt();if(0!==s.redSqr().redSub(n).cmp(this.zero))throw new Error("invalid point");var c=s.fromRed().isOdd();return(r&&!c||!r&&c)&&(s=s.redNeg()),this.point(e,s)},o.prototype.pointFromY=function(e,r){(e=new t(e,16)).red||(e=e.toRed(this.red));var a=e.redSqr(),i=a.redSub(this.c2),o=a.redMul(this.d).redMul(this.c2).redSub(this.a),n=i.redMul(o.redInvm());if(0===n.cmp(this.zero)){if(r)throw new Error("invalid point");return this.point(this.zero,e)}var s=n.redSqrt();if(0!==s.redSqr().redSub(n).cmp(this.zero))throw new Error("invalid point");return s.fromRed().isOdd()!==r&&(s=s.redNeg()),this.point(s,e)},o.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var t=e.x.redSqr(),r=e.y.redSqr(),a=t.redMul(this.a).redAdd(r),i=this.c2.redMul(this.one.redAdd(this.d.redMul(t).redMul(r)));return 0===a.cmp(i)},r(n,a.BasePoint),o.prototype.pointFromJSON=function(e){return n.fromJSON(this,e)},o.prototype.point=function(e,t,r,a){return new n(this,e,t,r,a)},n.fromJSON=function(e,t){return new n(e,t[0],t[1],t[2])},n.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},n.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},n.prototype._extDbl=function(){var e=this.x.redSqr(),t=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var a=this.curve._mulA(e),i=this.x.redAdd(this.y).redSqr().redISub(e).redISub(t),o=a.redAdd(t),n=o.redSub(r),s=a.redSub(t),c=i.redMul(n),u=o.redMul(s),l=i.redMul(s),d=n.redMul(o);return this.curve.point(c,u,d,l)},n.prototype._projDbl=function(){var e,t,r,a,i,o,n=this.x.redAdd(this.y).redSqr(),s=this.x.redSqr(),c=this.y.redSqr();if(this.curve.twisted){var u=(a=this.curve._mulA(s)).redAdd(c);this.zOne?(e=n.redSub(s).redSub(c).redMul(u.redSub(this.curve.two)),t=u.redMul(a.redSub(c)),r=u.redSqr().redSub(u).redSub(u)):(i=this.z.redSqr(),o=u.redSub(i).redISub(i),e=n.redSub(s).redISub(c).redMul(o),t=u.redMul(a.redSub(c)),r=u.redMul(o))}else a=s.redAdd(c),i=this.curve._mulC(this.z).redSqr(),o=a.redSub(i).redSub(i),e=this.curve._mulC(n.redISub(a)).redMul(o),t=this.curve._mulC(a).redMul(s.redISub(c)),r=a.redMul(o);return this.curve.point(e,t,r)},n.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},n.prototype._extAdd=function(e){var t=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),a=this.t.redMul(this.curve.dd).redMul(e.t),i=this.z.redMul(e.z.redAdd(e.z)),o=r.redSub(t),n=i.redSub(a),s=i.redAdd(a),c=r.redAdd(t),u=o.redMul(n),l=s.redMul(c),d=o.redMul(c),h=n.redMul(s);return this.curve.point(u,l,h,d)},n.prototype._projAdd=function(e){var t,r,a=this.z.redMul(e.z),i=a.redSqr(),o=this.x.redMul(e.x),n=this.y.redMul(e.y),s=this.curve.d.redMul(o).redMul(n),c=i.redSub(s),u=i.redAdd(s),l=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(o).redISub(n),d=a.redMul(c).redMul(l);return this.curve.twisted?(t=a.redMul(u).redMul(n.redSub(this.curve._mulA(o))),r=c.redMul(u)):(t=a.redMul(u).redMul(n.redSub(o)),r=this.curve._mulC(c).redMul(u)),this.curve.point(d,t,r)},n.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},n.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},n.prototype.mulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!1)},n.prototype.jmulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!0)},n.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},n.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},n.prototype.getX=function(){return this.normalize(),this.x.fromRed()},n.prototype.getY=function(){return this.normalize(),this.y.fromRed()},n.prototype.eq=function(e){return this===e||0===this.getX().cmp(e.getX())&&0===this.getY().cmp(e.getY())},n.prototype.eqXToP=function(e){var t=e.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(t))return!0;for(var r=e.clone(),a=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(t.redIAdd(a),0===this.x.cmp(t))return!0}},n.prototype.toP=n.prototype.normalize,n.prototype.mixedAdd=n.prototype.add,kt}()}(pt)),pt}var xt,zt={},Mt={},Tt={};function Rt(){if(xt)return Tt;xt=1;var e=at(),t=At();function r(e,t){return 55296==(64512&e.charCodeAt(t))&&(!(t<0||t+1>=e.length)&&56320==(64512&e.charCodeAt(t+1)))}function a(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function i(e){return 1===e.length?"0"+e:e}function o(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}return Tt.inherits=t,Tt.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var a=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),o=0;o<e.length;o+=2)a.push(parseInt(e[o]+e[o+1],16))}else for(var i=0,o=0;o<e.length;o++){var n=e.charCodeAt(o);n<128?a[i++]=n:n<2048?(a[i++]=n>>6|192,a[i++]=63&n|128):r(e,o)?(n=65536+((1023&n)<<10)+(1023&e.charCodeAt(++o)),a[i++]=n>>18|240,a[i++]=n>>12&63|128,a[i++]=n>>6&63|128,a[i++]=63&n|128):(a[i++]=n>>12|224,a[i++]=n>>6&63|128,a[i++]=63&n|128)}else for(o=0;o<e.length;o++)a[o]=0|e[o];return a},Tt.toHex=function(e){for(var t="",r=0;r<e.length;r++)t+=i(e[r].toString(16));return t},Tt.htonl=a,Tt.toHex32=function(e,t){for(var r="",i=0;i<e.length;i++){var n=e[i];"little"===t&&(n=a(n)),r+=o(n.toString(16))}return r},Tt.zero2=i,Tt.zero8=o,Tt.join32=function(t,r,a,i){var o=a-r;e(o%4==0);for(var n=new Array(o/4),s=0,c=r;s<n.length;s++,c+=4){var u;u="big"===i?t[c]<<24|t[c+1]<<16|t[c+2]<<8|t[c+3]:t[c+3]<<24|t[c+2]<<16|t[c+1]<<8|t[c],n[s]=u>>>0}return n},Tt.split32=function(e,t){for(var r=new Array(4*e.length),a=0,i=0;a<e.length;a++,i+=4){var o=e[a];"big"===t?(r[i]=o>>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r},Tt.rotr32=function(e,t){return e>>>t|e<<32-t},Tt.rotl32=function(e,t){return e<<t|e>>>32-t},Tt.sum32=function(e,t){return e+t>>>0},Tt.sum32_3=function(e,t,r){return e+t+r>>>0},Tt.sum32_4=function(e,t,r,a){return e+t+r+a>>>0},Tt.sum32_5=function(e,t,r,a,i){return e+t+r+a+i>>>0},Tt.sum64=function(e,t,r,a){var i=e[t],o=a+e[t+1]>>>0,n=(o<a?1:0)+r+i;e[t]=n>>>0,e[t+1]=o},Tt.sum64_hi=function(e,t,r,a){return(t+a>>>0<t?1:0)+e+r>>>0},Tt.sum64_lo=function(e,t,r,a){return t+a>>>0},Tt.sum64_4_hi=function(e,t,r,a,i,o,n,s){var c=0,u=t;return c+=(u=u+a>>>0)<t?1:0,c+=(u=u+o>>>0)<o?1:0,e+r+i+n+(c+=(u=u+s>>>0)<s?1:0)>>>0},Tt.sum64_4_lo=function(e,t,r,a,i,o,n,s){return t+a+o+s>>>0},Tt.sum64_5_hi=function(e,t,r,a,i,o,n,s,c,u){var l=0,d=t;return l+=(d=d+a>>>0)<t?1:0,l+=(d=d+o>>>0)<o?1:0,l+=(d=d+s>>>0)<s?1:0,e+r+i+n+c+(l+=(d=d+u>>>0)<u?1:0)>>>0},Tt.sum64_5_lo=function(e,t,r,a,i,o,n,s,c,u){return t+a+o+s+u>>>0},Tt.rotr64_hi=function(e,t,r){return(t<<32-r|e>>>r)>>>0},Tt.rotr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0},Tt.shr64_hi=function(e,t,r){return e>>>r},Tt.shr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0},Tt}var qt,Ot={};function Lt(){if(qt)return Ot;qt=1;var e=Rt(),t=at();function r(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}return Ot.BlockHash=r,r.prototype.update=function(t,r){if(t=e.toArray(t,r),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){var a=(t=this.pending).length%this._delta8;this.pending=t.slice(t.length-a,t.length),0===this.pending.length&&(this.pending=null),t=e.join32(t,0,t.length-a,this.endian);for(var i=0;i<t.length;i+=this._delta32)this._update(t,i,i+this._delta32)}return this},r.prototype.digest=function(e){return this.update(this._pad()),t(null===this.pending),this._digest(e)},r.prototype._pad=function(){var e=this.pendingTotal,t=this._delta8,r=t-(e+this.padLength)%t,a=new Array(r+this.padLength);a[0]=128;for(var i=1;i<r;i++)a[i]=0;if(e<<=3,"big"===this.endian){for(var o=8;o<this.padLength;o++)a[i++]=0;a[i++]=0,a[i++]=0,a[i++]=0,a[i++]=0,a[i++]=e>>>24&255,a[i++]=e>>>16&255,a[i++]=e>>>8&255,a[i++]=255&e}else for(a[i++]=255&e,a[i++]=e>>>8&255,a[i++]=e>>>16&255,a[i++]=e>>>24&255,a[i++]=0,a[i++]=0,a[i++]=0,a[i++]=0,o=8;o<this.padLength;o++)a[i++]=0;return a},Ot}var jt,Ut,Dt,Ct,Pt,Nt,Ft,Bt,Ht,Kt,Vt,$t,Gt={},Wt={};function Qt(){if(jt)return Wt;jt=1;var e=Rt().rotr32;function t(e,t,r){return e&t^~e&r}function r(e,t,r){return e&t^e&r^t&r}function a(e,t,r){return e^t^r}return Wt.ft_1=function(e,i,o,n){return 0===e?t(i,o,n):1===e||3===e?a(i,o,n):2===e?r(i,o,n):void 0},Wt.ch32=t,Wt.maj32=r,Wt.p32=a,Wt.s0_256=function(t){return e(t,2)^e(t,13)^e(t,22)},Wt.s1_256=function(t){return e(t,6)^e(t,11)^e(t,25)},Wt.g0_256=function(t){return e(t,7)^e(t,18)^t>>>3},Wt.g1_256=function(t){return e(t,17)^e(t,19)^t>>>10},Wt}function Yt(){if(Pt)return Ct;Pt=1;var e=Rt(),t=Lt(),r=Qt(),a=at(),i=e.sum32,o=e.sum32_4,n=e.sum32_5,s=r.ch32,c=r.maj32,u=r.s0_256,l=r.s1_256,d=r.g0_256,h=r.g1_256,f=t.BlockHash,p=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function m(){if(!(this instanceof m))return new m;f.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=p,this.W=new Array(64)}return e.inherits(m,f),Ct=m,m.blockSize=512,m.outSize=256,m.hmacStrength=192,m.padLength=64,m.prototype._update=function(e,t){for(var r=this.W,f=0;f<16;f++)r[f]=e[t+f];for(;f<r.length;f++)r[f]=o(h(r[f-2]),r[f-7],d(r[f-15]),r[f-16]);var p=this.h[0],m=this.h[1],b=this.h[2],g=this.h[3],y=this.h[4],v=this.h[5],w=this.h[6],k=this.h[7];for(a(this.k.length===r.length),f=0;f<r.length;f++){var S=n(k,l(y),s(y,v,w),this.k[f],r[f]),_=i(u(p),c(p,m,b));k=w,w=v,v=y,y=i(g,S),g=b,b=m,m=p,p=i(S,_)}this.h[0]=i(this.h[0],p),this.h[1]=i(this.h[1],m),this.h[2]=i(this.h[2],b),this.h[3]=i(this.h[3],g),this.h[4]=i(this.h[4],y),this.h[5]=i(this.h[5],v),this.h[6]=i(this.h[6],w),this.h[7]=i(this.h[7],k)},m.prototype._digest=function(t){return"hex"===t?e.toHex32(this.h,"big"):e.split32(this.h,"big")},Ct}function Jt(){if(Ht)return Bt;Ht=1;var e=Rt(),t=Lt(),r=at(),a=e.rotr64_hi,i=e.rotr64_lo,o=e.shr64_hi,n=e.shr64_lo,s=e.sum64,c=e.sum64_hi,u=e.sum64_lo,l=e.sum64_4_hi,d=e.sum64_4_lo,h=e.sum64_5_hi,f=e.sum64_5_lo,p=t.BlockHash,m=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function b(){if(!(this instanceof b))return new b;p.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=m,this.W=new Array(160)}function g(e,t,r,a,i){var o=e&r^~e&i;return o<0&&(o+=4294967296),o}function y(e,t,r,a,i,o){var n=t&a^~t&o;return n<0&&(n+=4294967296),n}function v(e,t,r,a,i){var o=e&r^e&i^r&i;return o<0&&(o+=4294967296),o}function w(e,t,r,a,i,o){var n=t&a^t&o^a&o;return n<0&&(n+=4294967296),n}function k(e,t){var r=a(e,t,28)^a(t,e,2)^a(t,e,7);return r<0&&(r+=4294967296),r}function S(e,t){var r=i(e,t,28)^i(t,e,2)^i(t,e,7);return r<0&&(r+=4294967296),r}function _(e,t){var r=a(e,t,14)^a(e,t,18)^a(t,e,9);return r<0&&(r+=4294967296),r}function E(e,t){var r=i(e,t,14)^i(e,t,18)^i(t,e,9);return r<0&&(r+=4294967296),r}function A(e,t){var r=a(e,t,1)^a(e,t,8)^o(e,t,7);return r<0&&(r+=4294967296),r}function I(e,t){var r=i(e,t,1)^i(e,t,8)^n(e,t,7);return r<0&&(r+=4294967296),r}function x(e,t){var r=a(e,t,19)^a(t,e,29)^o(e,t,6);return r<0&&(r+=4294967296),r}function z(e,t){var r=i(e,t,19)^i(t,e,29)^n(e,t,6);return r<0&&(r+=4294967296),r}return e.inherits(b,p),Bt=b,b.blockSize=1024,b.outSize=512,b.hmacStrength=192,b.padLength=128,b.prototype._prepareBlock=function(e,t){for(var r=this.W,a=0;a<32;a++)r[a]=e[t+a];for(;a<r.length;a+=2){var i=x(r[a-4],r[a-3]),o=z(r[a-4],r[a-3]),n=r[a-14],s=r[a-13],c=A(r[a-30],r[a-29]),u=I(r[a-30],r[a-29]),h=r[a-32],f=r[a-31];r[a]=l(i,o,n,s,c,u,h,f),r[a+1]=d(i,o,n,s,c,u,h,f)}},b.prototype._update=function(e,t){this._prepareBlock(e,t);var a=this.W,i=this.h[0],o=this.h[1],n=this.h[2],l=this.h[3],d=this.h[4],p=this.h[5],m=this.h[6],b=this.h[7],A=this.h[8],I=this.h[9],x=this.h[10],z=this.h[11],M=this.h[12],T=this.h[13],R=this.h[14],q=this.h[15];r(this.k.length===a.length);for(var O=0;O<a.length;O+=2){var L=R,j=q,U=_(A,I),D=E(A,I),C=g(A,I,x,z,M),P=y(A,I,x,z,M,T),N=this.k[O],F=this.k[O+1],B=a[O],H=a[O+1],K=h(L,j,U,D,C,P,N,F,B,H),V=f(L,j,U,D,C,P,N,F,B,H);L=k(i,o),j=S(i,o),U=v(i,o,n,l,d),D=w(i,o,n,l,d,p);var $=c(L,j,U,D),G=u(L,j,U,D);R=M,q=T,M=x,T=z,x=A,z=I,A=c(m,b,K,V),I=u(b,b,K,V),m=d,b=p,d=n,p=l,n=i,l=o,i=c(K,V,$,G),o=u(K,V,$,G)}s(this.h,0,i,o),s(this.h,2,n,l),s(this.h,4,d,p),s(this.h,6,m,b),s(this.h,8,A,I),s(this.h,10,x,z),s(this.h,12,M,T),s(this.h,14,R,q)},b.prototype._digest=function(t){return"hex"===t?e.toHex32(this.h,"big"):e.split32(this.h,"big")},Bt}function Xt(){return $t||($t=1,Gt.sha1=function(){if(Dt)return Ut;Dt=1;var e=Rt(),t=Lt(),r=Qt(),a=e.rotl32,i=e.sum32,o=e.sum32_5,n=r.ft_1,s=t.BlockHash,c=[1518500249,1859775393,2400959708,3395469782];function u(){if(!(this instanceof u))return new u;s.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}return e.inherits(u,s),Ut=u,u.blockSize=512,u.outSize=160,u.hmacStrength=80,u.padLength=64,u.prototype._update=function(e,t){for(var r=this.W,s=0;s<16;s++)r[s]=e[t+s];for(;s<r.length;s++)r[s]=a(r[s-3]^r[s-8]^r[s-14]^r[s-16],1);var u=this.h[0],l=this.h[1],d=this.h[2],h=this.h[3],f=this.h[4];for(s=0;s<r.length;s++){var p=~~(s/20),m=o(a(u,5),n(p,l,d,h),f,r[s],c[p]);f=h,h=d,d=a(l,30),l=u,u=m}this.h[0]=i(this.h[0],u),this.h[1]=i(this.h[1],l),this.h[2]=i(this.h[2],d),this.h[3]=i(this.h[3],h),this.h[4]=i(this.h[4],f)},u.prototype._digest=function(t){return"hex"===t?e.toHex32(this.h,"big"):e.split32(this.h,"big")},Ut}(),Gt.sha224=function(){if(Ft)return Nt;Ft=1;var e=Rt(),t=Yt();function r(){if(!(this instanceof r))return new r;t.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}return e.inherits(r,t),Nt=r,r.blockSize=512,r.outSize=224,r.hmacStrength=192,r.padLength=64,r.prototype._digest=function(t){return"hex"===t?e.toHex32(this.h.slice(0,7),"big"):e.split32(this.h.slice(0,7),"big")},Nt}(),Gt.sha256=Yt(),Gt.sha384=function(){if(Vt)return Kt;Vt=1;var e=Rt(),t=Jt();function r(){if(!(this instanceof r))return new r;t.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}return e.inherits(r,t),Kt=r,r.blockSize=1024,r.outSize=384,r.hmacStrength=192,r.padLength=128,r.prototype._digest=function(t){return"hex"===t?e.toHex32(this.h.slice(0,12),"big"):e.split32(this.h.slice(0,12),"big")},Kt}(),Gt.sha512=Jt()),Gt}var Zt,er,tr,rr,ar,ir,or,nr,sr,cr,ur,lr,dr,hr,fr,pr,mr,br,gr,yr,vr,wr,kr={};function Sr(){return rr||(rr=1,function(e){var t=e;t.utils=Rt(),t.common=Lt(),t.sha=Xt(),t.ripemd=function(){if(Zt)return kr;Zt=1;var e=Rt(),t=Lt(),r=e.rotl32,a=e.sum32,i=e.sum32_3,o=e.sum32_4,n=t.BlockHash;function s(){if(!(this instanceof s))return new s;n.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function c(e,t,r,a){return e<=15?t^r^a:e<=31?t&r|~t&a:e<=47?(t|~r)^a:e<=63?t&a|r&~a:t^(r|~a)}function u(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function l(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}e.inherits(s,n),kr.ripemd160=s,s.blockSize=512,s.outSize=160,s.hmacStrength=192,s.padLength=64,s.prototype._update=function(e,t){for(var n=this.h[0],s=this.h[1],m=this.h[2],b=this.h[3],g=this.h[4],y=n,v=s,w=m,k=b,S=g,_=0;_<80;_++){var E=a(r(o(n,c(_,s,m,b),e[d[_]+t],u(_)),f[_]),g);n=g,g=b,b=r(m,10),m=s,s=E,E=a(r(o(y,c(79-_,v,w,k),e[h[_]+t],l(_)),p[_]),S),y=S,S=k,k=r(w,10),w=v,v=E}E=i(this.h[1],m,k),this.h[1]=i(this.h[2],b,S),this.h[2]=i(this.h[3],g,y),this.h[3]=i(this.h[4],n,v),this.h[4]=i(this.h[0],s,w),this.h[0]=E},s.prototype._digest=function(t){return"hex"===t?e.toHex32(this.h,"little"):e.split32(this.h,"little")};var d=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],h=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],f=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],p=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];return kr}(),t.hmac=function(){if(tr)return er;tr=1;var e=Rt(),t=at();function r(t,a,i){if(!(this instanceof r))return new r(t,a,i);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(e.toArray(a,i))}return er=r,r.prototype._init=function(e){e.length>this.blockSize&&(e=(new this.Hash).update(e).digest()),t(e.length<=this.blockSize);for(var r=e.length;r<this.blockSize;r++)e.push(0);for(r=0;r<e.length;r++)e[r]^=54;for(this.inner=(new this.Hash).update(e),r=0;r<e.length;r++)e[r]^=106;this.outer=(new this.Hash).update(e)},r.prototype.update=function(e,t){return this.inner.update(e,t),this},r.prototype.digest=function(e){return this.outer.update(this.inner.digest()),this.outer.digest(e)},er}(),t.sha1=t.sha.sha1,t.sha256=t.sha.sha256,t.sha224=t.sha.sha224,t.sha384=t.sha.sha384,t.sha512=t.sha.sha512,t.ripemd160=t.ripemd.ripemd160}(Mt)),Mt}function _r(){return or||(or=1,function(e){var t,r=e,a=Sr(),i=It(),o=ct().assert;function n(e){"short"===e.type?this.curve=new i.short(e):"edwards"===e.type?this.curve=new i.edwards(e):this.curve=new i.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,o(this.g.validate(),"Invalid curve"),o(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function s(e,t){Object.defineProperty(r,e,{configurable:!0,enumerable:!0,get:function(){var a=new n(t);return Object.defineProperty(r,e,{configurable:!0,enumerable:!0,value:a}),a}})}r.PresetCurve=n,s("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:a.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),s("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:a.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),s("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:a.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),s("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:a.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),s("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:a.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),s("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["9"]}),s("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{t=ir?ar:(ir=1,ar={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}})}catch(e){t=void 0}s("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:a.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",t]})}(zt)),zt}function Er(){if(fr)return hr;fr=1;var e=rt(),t=function(){if(sr)return nr;sr=1;var e=Sr(),t=st(),r=at();function a(e){if(!(this instanceof a))return new a(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var i=t.toArray(e.entropy,e.entropyEnc||"hex"),o=t.toArray(e.nonce,e.nonceEnc||"hex"),n=t.toArray(e.pers,e.persEnc||"hex");r(i.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(i,o,n)}return nr=a,a.prototype._init=function(e,t,r){var a=e.concat(t).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i<this.V.length;i++)this.K[i]=0,this.V[i]=1;this._update(a),this._reseed=1,this.reseedInterval=281474976710656},a.prototype._hmac=function(){return new e.hmac(this.hash,this.K)},a.prototype._update=function(e){var t=this._hmac().update(this.V).update([0]);e&&(t=t.update(e)),this.K=t.digest(),this.V=this._hmac().update(this.V).digest(),e&&(this.K=this._hmac().update(this.V).update([1]).update(e).digest(),this.V=this._hmac().update(this.V).digest())},a.prototype.reseed=function(e,a,i,o){"string"!=typeof a&&(o=i,i=a,a=null),e=t.toArray(e,a),i=t.toArray(i,o),r(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(i||[])),this._reseed=1},a.prototype.generate=function(e,r,a,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof r&&(i=a,a=r,r=null),a&&(a=t.toArray(a,i||"hex"),this._update(a));for(var o=[];o.length<e;)this.V=this._hmac().update(this.V).digest(),o=o.concat(this.V);var n=o.slice(0,e);return this._update(a),this._reseed++,t.encode(n,r)},nr}(),r=ct(),a=_r(),i=dt(),o=r.assert,n=function(){if(ur)return cr;ur=1;var e=rt(),t=ct().assert;function r(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}return cr=r,r.fromPublic=function(e,t,a){return t instanceof r?t:new r(e,{pub:t,pubEnc:a})},r.fromPrivate=function(e,t,a){return t instanceof r?t:new r(e,{priv:t,privEnc:a})},r.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},r.prototype.getPublic=function(e,t){return"string"==typeof e&&(t=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),t?this.pub.encode(t,e):this.pub},r.prototype.getPrivate=function(e){return"hex"===e?this.priv.toString(16,2):this.priv},r.prototype._importPrivate=function(t,r){this.priv=new e(t,r||16),this.priv=this.priv.umod(this.ec.curve.n)},r.prototype._importPublic=function(e,r){if(e.x||e.y)return"mont"===this.ec.curve.type?t(e.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||t(e.x&&e.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(e.x,e.y));this.pub=this.ec.curve.decodePoint(e,r)},r.prototype.derive=function(e){return e.validate()||t(e.validate(),"public point not validated"),e.mul(this.priv).getX()},r.prototype.sign=function(e,t,r){return this.ec.sign(e,this,t,r)},r.prototype.verify=function(e,t,r){return this.ec.verify(e,t,this,void 0,r)},r.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"},cr}(),s=function(){if(dr)return lr;dr=1;var e=rt(),t=ct(),r=t.assert;function a(t,i){if(t instanceof a)return t;this._importDER(t,i)||(r(t.r&&t.s,"Signature without r or s"),this.r=new e(t.r,16),this.s=new e(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}function i(){this.place=0}function o(e,t){var r=e[t.place++];if(!(128&r))return r;var a=15&r;if(0===a||a>4)return!1;if(0===e[t.place])return!1;for(var i=0,o=0,n=t.place;o<a;o++,n++)i<<=8,i|=e[n],i>>>=0;return!(i<=127)&&(t.place=n,i)}function n(e){for(var t=0,r=e.length-1;!e[t]&&!(128&e[t+1])&&t<r;)t++;return 0===t?e:e.slice(t)}function s(e,t){if(t<128)e.push(t);else{var r=1+(Math.log(t)/Math.LN2>>>3);for(e.push(128|r);--r;)e.push(t>>>(r<<3)&255);e.push(t)}}return lr=a,a.prototype._importDER=function(r,a){r=t.toArray(r,a);var n=new i;if(48!==r[n.place++])return!1;var s=o(r,n);if(!1===s)return!1;if(s+n.place!==r.length)return!1;if(2!==r[n.place++])return!1;var c=o(r,n);if(!1===c)return!1;if(128&r[n.place])return!1;var u=r.slice(n.place,c+n.place);if(n.place+=c,2!==r[n.place++])return!1;var l=o(r,n);if(!1===l)return!1;if(r.length!==l+n.place)return!1;if(128&r[n.place])return!1;var d=r.slice(n.place,l+n.place);if(0===u[0]){if(!(128&u[1]))return!1;u=u.slice(1)}if(0===d[0]){if(!(128&d[1]))return!1;d=d.slice(1)}return this.r=new e(u),this.s=new e(d),this.recoveryParam=null,!0},a.prototype.toDER=function(e){var r=this.r.toArray(),a=this.s.toArray();for(128&r[0]&&(r=[0].concat(r)),128&a[0]&&(a=[0].concat(a)),r=n(r),a=n(a);!(a[0]||128&a[1]);)a=a.slice(1);var i=[2];s(i,r.length),(i=i.concat(r)).push(2),s(i,a.length);var o=i.concat(a),c=[48];return s(c,o.length),c=c.concat(o),t.encode(c,e)},lr}();function c(e){if(!(this instanceof c))return new c(e);"string"==typeof e&&(o(Object.prototype.hasOwnProperty.call(a,e),"Unknown curve "+e),e=a[e]),e instanceof a.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}return hr=c,c.prototype.keyPair=function(e){return new n(this,e)},c.prototype.keyFromPrivate=function(e,t){return n.fromPrivate(this,e,t)},c.prototype.keyFromPublic=function(e,t){return n.fromPublic(this,e,t)},c.prototype.genKeyPair=function(r){r||(r={});for(var a=new t({hash:this.hash,pers:r.pers,persEnc:r.persEnc||"utf8",entropy:r.entropy||i(this.hash.hmacStrength),entropyEnc:r.entropy&&r.entropyEnc||"utf8",nonce:this.n.toArray()}),o=this.n.byteLength(),n=this.n.sub(new e(2));;){var s=new e(a.generate(o));if(!(s.cmp(n)>0))return s.iaddn(1),this.keyFromPrivate(s)}},c.prototype._truncateToN=function(t,r,a){var i;if(e.isBN(t)||"number"==typeof t)i=(t=new e(t,16)).byteLength();else if("object"==typeof t)i=t.length,t=new e(t,16);else{var o=t.toString();i=o.length+1>>>1,t=new e(o,16)}"number"!=typeof a&&(a=8*i);var n=a-this.n.bitLength();return n>0&&(t=t.ushrn(n)),!r&&t.cmp(this.n)>=0?t.sub(this.n):t},c.prototype.sign=function(r,a,i,n){if("object"==typeof i&&(n=i,i=null),n||(n={}),"string"!=typeof r&&"number"!=typeof r&&!e.isBN(r)){o("object"==typeof r&&r&&"number"==typeof r.length,"Expected message to be an array-like, a hex string, or a BN instance"),o(r.length>>>0===r.length);for(var c=0;c<r.length;c++)o((255&r[c])===r[c])}a=this.keyFromPrivate(a,i),r=this._truncateToN(r,!1,n.msgBitLength),o(!r.isNeg(),"Can not sign a negative message");var u=this.n.byteLength(),l=a.getPrivate().toArray("be",u),d=r.toArray("be",u);o(new e(d).eq(r),"Can not sign message");for(var h=new t({hash:this.hash,entropy:l,nonce:d,pers:n.pers,persEnc:n.persEnc||"utf8"}),f=this.n.sub(new e(1)),p=0;;p++){var m=n.k?n.k(p):new e(h.generate(this.n.byteLength()));if(!((m=this._truncateToN(m,!0)).cmpn(1)<=0||m.cmp(f)>=0)){var b=this.g.mul(m);if(!b.isInfinity()){var g=b.getX(),y=g.umod(this.n);if(0!==y.cmpn(0)){var v=m.invm(this.n).mul(y.mul(a.getPrivate()).iadd(r));if(0!==(v=v.umod(this.n)).cmpn(0)){var w=(b.getY().isOdd()?1:0)|(0!==g.cmp(y)?2:0);return n.canonical&&v.cmp(this.nh)>0&&(v=this.n.sub(v),w^=1),new s({r:y,s:v,recoveryParam:w})}}}}}},c.prototype.verify=function(e,t,r,a,i){i||(i={}),e=this._truncateToN(e,!1,i.msgBitLength),r=this.keyFromPublic(r,a);var o=(t=new s(t,"hex")).r,n=t.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(n.cmpn(1)<0||n.cmp(this.n)>=0)return!1;var c,u=n.invm(this.n),l=u.mul(e).umod(this.n),d=u.mul(o).umod(this.n);return this.curve._maxwellTrick?!(c=this.g.jmulAdd(l,r.getPublic(),d)).isInfinity()&&c.eqXToP(o):!(c=this.g.mulAdd(l,r.getPublic(),d)).isInfinity()&&0===c.getX().umod(this.n).cmp(o)},c.prototype.recoverPubKey=function(t,r,a,i){o((3&a)===a,"The recovery param is more than two bits"),r=new s(r,i);var n=this.n,c=new e(t),u=r.r,l=r.s,d=1&a,h=a>>1;if(u.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");u=h?this.curve.pointFromX(u.add(this.curve.n),d):this.curve.pointFromX(u,d);var f=r.r.invm(n),p=n.sub(c).mul(f).umod(n),m=l.mul(f).umod(n);return this.g.mulAdd(p,u,m)},c.prototype.getKeyRecoveryParam=function(e,t,r,a){if(null!==(t=new s(t,a)).recoveryParam)return t.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(e,t,i)}catch(e){continue}if(o.eq(r))return i}throw new Error("Unable to find valid recovery factor")},hr}function Ar(){if(vr)return yr;vr=1;var e=Sr(),t=_r(),r=ct(),a=r.assert,i=r.parseBytes,o=function(){if(mr)return pr;mr=1;var e=ct(),t=e.assert,r=e.parseBytes,a=e.cachedProperty;function i(e,t){this.eddsa=e,this._secret=r(t.secret),e.isPoint(t.pub)?this._pub=t.pub:this._pubBytes=r(t.pub)}return i.fromPublic=function(e,t){return t instanceof i?t:new i(e,{pub:t})},i.fromSecret=function(e,t){return t instanceof i?t:new i(e,{secret:t})},i.prototype.secret=function(){return this._secret},a(i,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())}),a(i,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())}),a(i,"privBytes",function(){var e=this.eddsa,t=this.hash(),r=e.encodingLength-1,a=t.slice(0,e.encodingLength);return a[0]&=248,a[r]&=127,a[r]|=64,a}),a(i,"priv",function(){return this.eddsa.decodeInt(this.privBytes())}),a(i,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()}),a(i,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)}),i.prototype.sign=function(e){return t(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)},i.prototype.verify=function(e,t){return this.eddsa.verify(e,t,this)},i.prototype.getSecret=function(r){return t(this._secret,"KeyPair is public only"),e.encode(this.secret(),r)},i.prototype.getPublic=function(t){return e.encode(this.pubBytes(),t)},pr=i}(),n=function(){if(gr)return br;gr=1;var e=rt(),t=ct(),r=t.assert,a=t.cachedProperty,i=t.parseBytes;function o(t,a){this.eddsa=t,"object"!=typeof a&&(a=i(a)),Array.isArray(a)&&(r(a.length===2*t.encodingLength,"Signature has invalid size"),a={R:a.slice(0,t.encodingLength),S:a.slice(t.encodingLength)}),r(a.R&&a.S,"Signature without R or S"),t.isPoint(a.R)&&(this._R=a.R),a.S instanceof e&&(this._S=a.S),this._Rencoded=Array.isArray(a.R)?a.R:a.Rencoded,this._Sencoded=Array.isArray(a.S)?a.S:a.Sencoded}return a(o,"S",function(){return this.eddsa.decodeInt(this.Sencoded())}),a(o,"R",function(){return this.eddsa.decodePoint(this.Rencoded())}),a(o,"Rencoded",function(){return this.eddsa.encodePoint(this.R())}),a(o,"Sencoded",function(){return this.eddsa.encodeInt(this.S())}),o.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},o.prototype.toHex=function(){return t.encode(this.toBytes(),"hex").toUpperCase()},br=o}();function s(r){if(a("ed25519"===r,"only tested with ed25519 so far"),!(this instanceof s))return new s(r);r=t[r].curve,this.curve=r,this.g=r.g,this.g.precompute(r.n.bitLength()+1),this.pointClass=r.point().constructor,this.encodingLength=Math.ceil(r.n.bitLength()/8),this.hash=e.sha512}return yr=s,s.prototype.sign=function(e,t){e=i(e);var r=this.keyFromSecret(t),a=this.hashInt(r.messagePrefix(),e),o=this.g.mul(a),n=this.encodePoint(o),s=this.hashInt(n,r.pubBytes(),e).mul(r.priv()),c=a.add(s).umod(this.curve.n);return this.makeSignature({R:o,S:c,Rencoded:n})},s.prototype.verify=function(e,t,r){if(e=i(e),(t=this.makeSignature(t)).S().gte(t.eddsa.curve.n)||t.S().isNeg())return!1;var a=this.keyFromPublic(r),o=this.hashInt(t.Rencoded(),a.pubBytes(),e),n=this.g.mul(t.S());return t.R().add(a.pub().mul(o)).eq(n)},s.prototype.hashInt=function(){for(var e=this.hash(),t=0;t<arguments.length;t++)e.update(arguments[t]);return r.intFromLE(e.digest()).umod(this.curve.n)},s.prototype.keyFromPublic=function(e){return o.fromPublic(this,e)},s.prototype.keyFromSecret=function(e){return o.fromSecret(this,e)},s.prototype.makeSignature=function(e){return e instanceof n?e:new n(this,e)},s.prototype.encodePoint=function(e){var t=e.getY().toArray("le",this.encodingLength);return t[this.encodingLength-1]|=e.getX().isOdd()?128:0,t},s.prototype.decodePoint=function(e){var t=(e=r.parseBytes(e)).length-1,a=e.slice(0,t).concat(-129&e[t]),i=!!(128&e[t]),o=r.intFromLE(a);return this.curve.pointFromY(o,i)},s.prototype.encodeInt=function(e){return e.toArray("le",this.encodingLength)},s.prototype.decodeInt=function(e){return r.intFromLE(e)},s.prototype.isPoint=function(e){return e instanceof this.pointClass},yr}var Ir=(wr||(wr=1,function(e){var t=e;t.version=Je,t.utils=ct(),t.rand=dt(),t.curve=It(),t.curves=_r(),t.ec=Er(),t.eddsa=Ar()}(Ye)),Ye);let xr=null,zr=null;const Mr=new Ir.ec("secp256k1"),Tr="oxy_identity_private_key",Rr="oxy_identity_public_key",qr="oxy_identity_backup_private_key",Or="oxy_identity_backup_public_key",Lr="oxy_identity_backup_timestamp",jr="oxy_shared_identity_private_key",Ur="oxy_shared_identity_public_key",Dr="oxy_shared_session_token",Cr="oxy_shared_session_id",Pr="group.com.oxy.shared";async function Nr(){if(!xr)try{xr=await import("expo-secure-store")}catch(e){const t=e instanceof Error?e.message:String(e);throw new Error(`Failed to load expo-secure-store: ${t}. Make sure expo-secure-store is installed and properly configured.`)}if(!xr)throw new Error("expo-secure-store module is not available");return xr}function Fr(){return"web"===he()}async function Br(){return zr||(zr=await import("expo-crypto")),zr}async function Hr(e){if("undefined"!=typeof navigator&&"ReactNative"===navigator.product||"undefined"==typeof process||null==process.versions||null==process.versions.node){return(await Br()).getRandomBytes(e)}try{const t=new Function('return require("crypto")')();return new Uint8Array(t.randomBytes(e))}catch(t){return(await Br()).getRandomBytes(e)}}class Kr{static invalidateCache(){Kr.cachedPublicKey=null,Kr.cachedHasIdentity=null}static invalidateSharedCache(){Kr.cachedSharedPublicKey=null,Kr.cachedHasSharedIdentity=null}static generateKeyPairSync(){const e=Mr.genKeyPair();return{privateKey:e.getPrivate("hex"),publicKey:e.getPublic("hex")}}static async generateKeyPair(){const e=await Hr(32),t=(r=e,Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join(""));var r;const a=Mr.keyFromPrivate(t);return{privateKey:a.getPrivate("hex"),publicKey:a.getPublic("hex")}}static async createSharedIdentity(){if(Fr())throw new Error("Shared identity is only available on native platforms (iOS/Android).");const e=await Nr(),{privateKey:t,publicKey:r}=await Kr.generateKeyPair();if(fe())try{await e.setItemAsync(jr,t,{keychainAccessible:e.WHEN_UNLOCKED_THIS_DEVICE_ONLY,keychainAccessGroup:Pr}),await e.setItemAsync(Ur,r,{keychainAccessGroup:Pr})}catch(e){throw new Error(`Failed to create shared identity on iOS. Ensure your app has the Keychain Sharing capability enabled with access group "${Pr}". Error: ${e}`)}else pe()&&(await e.setItemAsync(jr,t,{keychainAccessible:e.WHEN_UNLOCKED_THIS_DEVICE_ONLY}),await e.setItemAsync(Ur,r));return Kr.cachedSharedPublicKey=r,Kr.cachedHasSharedIdentity=!0,__DEV__&&j.debug("Shared identity created successfully",{component:"KeyManager"}),r}static async getSharedPublicKey(){if(Fr())return null;if(null!==Kr.cachedSharedPublicKey)return Kr.cachedSharedPublicKey;try{const e=await Nr();let t=null;return fe()?t=await e.getItemAsync(Ur,{keychainAccessGroup:Pr}):pe()&&(t=await e.getItemAsync(Ur)),Kr.cachedSharedPublicKey=t,t}catch(e){return __DEV__&&j.warn("Failed to get shared public key",{component:"KeyManager"},e),Kr.cachedSharedPublicKey=null,null}}static async getSharedPrivateKey(){if(Fr())return null;try{const e=await Nr();let t=null;return fe()?t=await e.getItemAsync(jr,{keychainAccessGroup:Pr}):pe()&&(t=await e.getItemAsync(jr)),t}catch(e){return __DEV__&&j.warn("Failed to get shared private key",{component:"KeyManager"},e),null}}static async hasSharedIdentity(){if(Fr())return!1;if(null!==Kr.cachedHasSharedIdentity)return Kr.cachedHasSharedIdentity;try{const e=null!==await Kr.getSharedPrivateKey();return Kr.cachedHasSharedIdentity=e,e}catch(e){return __DEV__&&j.warn("Failed to check shared identity",{component:"KeyManager"},e),Kr.cachedHasSharedIdentity=!1,!1}}static async importSharedIdentity(e){if(Fr())throw new Error("Shared identity import is only available on native platforms.");const t=await Nr(),r=Mr.keyFromPrivate(e).getPublic("hex");return fe()?(await t.setItemAsync(jr,e,{keychainAccessible:t.WHEN_UNLOCKED_THIS_DEVICE_ONLY,keychainAccessGroup:Pr}),await t.setItemAsync(Ur,r,{keychainAccessGroup:Pr})):pe()&&(await t.setItemAsync(jr,e,{keychainAccessible:t.WHEN_UNLOCKED_THIS_DEVICE_ONLY}),await t.setItemAsync(Ur,r)),Kr.cachedSharedPublicKey=r,Kr.cachedHasSharedIdentity=!0,__DEV__&&j.debug("Shared identity imported successfully",{component:"KeyManager"}),r}static async storeSharedSession(e,t){if(!Fr())try{const r=await Nr();fe()?(await r.setItemAsync(Cr,e,{keychainAccessGroup:Pr}),await r.setItemAsync(Dr,t,{keychainAccessible:r.WHEN_UNLOCKED,keychainAccessGroup:Pr})):pe()&&(await r.setItemAsync(Cr,e),await r.setItemAsync(Dr,t)),__DEV__&&j.debug("Shared session stored successfully",{component:"KeyManager"})}catch(e){throw __DEV__&&j.error("Failed to store shared session",e,{component:"KeyManager"}),e}}static async getSharedSession(){if(Fr())return null;try{const e=await Nr();let t=null,r=null;return fe()?(t=await e.getItemAsync(Cr,{keychainAccessGroup:Pr}),r=await e.getItemAsync(Dr,{keychainAccessGroup:Pr})):pe()&&(t=await e.getItemAsync(Cr),r=await e.getItemAsync(Dr)),t&&r?{sessionId:t,accessToken:r}:null}catch(e){return __DEV__&&j.warn("Failed to get shared session",{component:"KeyManager"},e),null}}static async clearSharedSession(){if(!Fr())try{const e=await Nr();fe()?(await e.deleteItemAsync(Cr,{keychainAccessGroup:Pr}),await e.deleteItemAsync(Dr,{keychainAccessGroup:Pr})):pe()&&(await e.deleteItemAsync(Cr),await e.deleteItemAsync(Dr)),__DEV__&&j.debug("Shared session cleared successfully",{component:"KeyManager"})}catch(e){__DEV__&&j.error("Failed to clear shared session",e,{component:"KeyManager"})}}static async migrateToSharedIdentity(){if(Fr())return!1;try{if(await Kr.hasSharedIdentity())return __DEV__&&j.debug("Shared identity already exists, skipping migration",{component:"KeyManager"}),!0;const e=await Kr.getPrivateKey();return e?(await Kr.importSharedIdentity(e),__DEV__&&j.debug("Successfully migrated local identity to shared identity",{component:"KeyManager"}),!0):(__DEV__&&j.debug("No local identity to migrate",{component:"KeyManager"}),!1)}catch(e){return __DEV__&&j.error("Failed to migrate to shared identity",e,{component:"KeyManager"}),!1}}static async createIdentity(){if(Fr())throw new Error("Identity creation is only available on native platforms (iOS/Android). Please use the native app to create your identity.");const e=await Nr(),{privateKey:t,publicKey:r}=await Kr.generateKeyPair();return await e.setItemAsync(Tr,t,{keychainAccessible:e.WHEN_UNLOCKED_THIS_DEVICE_ONLY}),await e.setItemAsync(Rr,r),Kr.cachedPublicKey=r,Kr.cachedHasIdentity=!0,r}static async importKeyPair(e){if(Fr())throw new Error("Identity import is only available on native platforms (iOS/Android). Please use the native app to import your identity.");const t=await Nr(),r=Mr.keyFromPrivate(e).getPublic("hex");return await t.setItemAsync(Tr,e,{keychainAccessible:t.WHEN_UNLOCKED_THIS_DEVICE_ONLY}),await t.setItemAsync(Rr,r),Kr.cachedPublicKey=r,Kr.cachedHasIdentity=!0,r}static async getPrivateKey(){if(Fr())return null;try{const e=await Nr();return await e.getItemAsync(Tr)}catch(e){return __DEV__&&j.warn("Failed to access secure store",{component:"KeyManager"},e),null}}static async getPublicKey(){if(Fr())return null;if(null!==Kr.cachedPublicKey)return Kr.cachedPublicKey;try{const e=await Nr(),t=await e.getItemAsync(Rr);return Kr.cachedPublicKey=t,t}catch(e){return Kr.cachedPublicKey=null,__DEV__&&j.warn("Failed to access secure store",{component:"KeyManager"},e),null}}static async hasIdentity(){if(Fr())return!1;if(null!==Kr.cachedHasIdentity)return Kr.cachedHasIdentity;try{const e=null!==await Kr.getPrivateKey();return Kr.cachedHasIdentity=e,e}catch(e){return Kr.cachedHasIdentity=!1,__DEV__&&j.warn("Failed to check identity",{component:"KeyManager"},e),!1}}static async deleteIdentity(e=!1,t=!1,r=!1){if(Fr())return;if(!t&&!r)throw new Error("Identity deletion requires explicit user confirmation. This is a safety measure to prevent accidental data loss.");if(!t){if(!await Kr.hasIdentity())return}const a=await Nr();if(!e)try{!await Kr.backupIdentity()&&"undefined"!=typeof __DEV__&&__DEV__&&j.warn("Failed to backup identity before deletion - proceeding anyway",{component:"KeyManager"})}catch(e){"undefined"!=typeof __DEV__&&__DEV__&&j.warn("Failed to backup identity before deletion",{component:"KeyManager"},e)}if(await a.deleteItemAsync(Tr),await a.deleteItemAsync(Rr),Kr.invalidateCache(),t)try{await a.deleteItemAsync(qr),await a.deleteItemAsync(Or),await a.deleteItemAsync(Lr)}catch(e){}}static async backupIdentity(){if(Fr())return!1;try{const e=await Nr(),t=await Kr.getPrivateKey(),r=await Kr.getPublicKey();return!(!t||!r)&&(await e.setItemAsync(qr,t,{keychainAccessible:e.WHEN_UNLOCKED_THIS_DEVICE_ONLY}),await e.setItemAsync(Or,r),await e.setItemAsync(Lr,Date.now().toString()),!0)}catch(e){return"undefined"!=typeof __DEV__&&__DEV__&&j.error("Failed to backup identity",e,{component:"KeyManager"}),!1}}static async verifyIdentityIntegrity(){if(Fr())return!1;try{const e=await Kr.getPrivateKey(),t=await Kr.getPublicKey();if(!e||!t)return!1;if(!Kr.isValidPrivateKey(e))return!1;if(!Kr.isValidPublicKey(t))return!1;if(Kr.derivePublicKey(e)!==t)return!1;return!!await Kr.getKeyPairObject()}catch(e){return"undefined"!=typeof __DEV__&&__DEV__&&j.error("Identity integrity check failed",e,{component:"KeyManager"}),!1}}static async restoreIdentityFromBackup(){if(Fr())return!1;try{const e=await Nr(),t=await e.getItemAsync(qr),r=await e.getItemAsync(Or);if(!t||!r)return!1;if(!Kr.isValidPrivateKey(t))return!1;if(!Kr.isValidPublicKey(r))return!1;if(Kr.derivePublicKey(t)!==r)return!1;await e.setItemAsync(Tr,t,{keychainAccessible:e.WHEN_UNLOCKED_THIS_DEVICE_ONLY}),await e.setItemAsync(Rr,r);return!!await Kr.verifyIdentityIntegrity()&&(Kr.cachedPublicKey=r,Kr.cachedHasIdentity=!0,await e.setItemAsync(Lr,Date.now().toString()),!0)}catch(e){return"undefined"!=typeof __DEV__&&__DEV__&&j.error("Failed to restore identity from backup",e,{component:"KeyManager"}),!1}}static async getKeyPairObject(){if(Fr())return null;const e=await Kr.getPrivateKey();return e?Mr.keyFromPrivate(e):null}static derivePublicKey(e){return Mr.keyFromPrivate(e).getPublic("hex")}static isValidPublicKey(e){try{return Mr.keyFromPublic(e,"hex"),!0}catch{return!1}}static isValidPrivateKey(e){try{return Mr.keyFromPrivate(e).getPublic("hex"),!0}catch{return!1}}static shortenPublicKey(e){return e.length<=20?e:`${e.slice(0,8)}...${e.slice(-8)}`}}Kr.cachedPublicKey=null,Kr.cachedHasIdentity=null,Kr.cachedSharedPublicKey=null,Kr.cachedHasSharedIdentity=null;let Vr=null;const $r=new Ir.ec("secp256k1");function Gr(){return"undefined"!=typeof navigator&&"ReactNative"===navigator.product}function Wr(){return"undefined"!=typeof process&&null!=process.versions&&null!=process.versions.node}async function Qr(){return Vr||(Vr=await import("expo-crypto")),Vr}async function Yr(e){if(Gr()||!Wr()){const t=await Qr();return t.digestStringAsync(t.CryptoDigestAlgorithm.SHA256,e)}try{const t=new Function('return require("crypto")');return t().createHash("sha256").update(e).digest("hex")}catch(t){const r=await Qr();return r.digestStringAsync(r.CryptoDigestAlgorithm.SHA256,e)}}class Jr{static async generateChallenge(){if(Gr()||!Wr()){const e=await Qr(),t=await e.getRandomBytesAsync(32);return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}try{const e=new Function('return require("crypto")');return e().randomBytes(32).toString("hex")}catch(e){const t=await Qr(),r=await t.getRandomBytesAsync(32);return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}}static async hashMessage(e){return Yr(e)}static async sign(e){const t=await Kr.getKeyPairObject();if(!t)throw new Error("No identity found. Please create or import an identity first.");const r=await Yr(e);return t.sign(r).toDER("hex")}static async signWithKey(e,t){const r=$r.keyFromPrivate(t),a=await Yr(e);return r.sign(a).toDER("hex")}static async verify(e,t,r){try{const a=$r.keyFromPublic(r,"hex"),i=await Yr(e);return a.verify(i,t)}catch{return!1}}static verifySync(e,t,r){try{if(!Wr())throw new Error("verifySync should only be used in Node.js. Use verify() in React Native.");const a=new Function('return require("crypto")')(),i=$r.keyFromPublic(r,"hex"),o=a.createHash("sha256").update(e).digest("hex");return i.verify(o,t)}catch{return!1}}static async createSignedMessage(e){const t=await Kr.getPublicKey();if(!t)throw new Error("No identity found. Please create or import an identity first.");const r=Date.now(),a=`${e}:${r}`;return{message:e,signature:await Jr.sign(a),publicKey:t,timestamp:r}}static async verifySignedMessage(e,t=3e5){const{message:r,signature:a,publicKey:i,timestamp:o}=e;if(Date.now()-o>t)return!1;const n=`${r}:${o}`;return Jr.verify(n,a,i)}static async signChallenge(e){const t=await Kr.getPublicKey();if(!t)throw new Error("No identity found. Please create or import an identity first.");const r=Date.now(),a=`auth:${t}:${e}:${r}`;return{challenge:await Jr.sign(a),publicKey:t,timestamp:r}}static async verifyChallengeResponse(e,t,r=3e5){const{challenge:a,publicKey:i,timestamp:o}=t;if(Date.now()-o>r)return!1;const n=`auth:${i}:${e}:${o}`;return Jr.verify(n,a,i)}static async createRegistrationSignature(){const e=await Kr.getPublicKey();if(!e)throw new Error("No identity found. Please create or import an identity first.");const t=Date.now(),r=`oxy:register:${e}:${t}`;return{signature:await Jr.sign(r),publicKey:e,timestamp:t}}static async signRequestData(e){const t=await Kr.getPublicKey();if(!t)throw new Error("No identity found. Please create or import an identity first.");const r=Date.now(),a=Object.keys(e).sort().map(t=>`${t}:${JSON.stringify(e[t])}`),i=`request:${t}:${r}:${a.join("|")}`;return{signature:await Jr.sign(i),publicKey:t,timestamp:r}}}var Xr,Zr,ea,ta={},ra={},aa={},ia={},oa={},na={};function sa(){return Zr||(Zr=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.wrapXOFConstructorWithOpts=e.wrapConstructorWithOpts=e.wrapConstructor=e.Hash=e.nextTick=e.swap32IfBE=e.byteSwapIfBE=e.swap8IfBE=e.isLE=void 0,e.isBytes=r,e.anumber=a,e.abytes=i,e.ahash=function(e){if("function"!=typeof e||"function"!=typeof e.create)throw new Error("Hash should be wrapped by utils.createHasher");a(e.outputLen),a(e.blockLen)},e.aexists=function(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")},e.aoutput=function(e,t){i(e);const r=t.outputLen;if(e.length<r)throw new Error("digestInto() expects output buffer of length at least "+r)},e.u8=function(e){return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)},e.u32=function(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))},e.clean=function(...e){for(let t=0;t<e.length;t++)e[t].fill(0)},e.createView=function(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)},e.rotr=function(e,t){return e<<32-t|e>>>t},e.rotl=function(e,t){return e<<t|e>>>32-t>>>0},e.byteSwap=o,e.byteSwap32=n,e.bytesToHex=function(e){if(i(e),s)return e.toHex();let t="";for(let r=0;r<e.length;r++)t+=c[e[r]];return t},e.hexToBytes=function(e){if("string"!=typeof e)throw new Error("hex string expected, got "+typeof e);if(s)return Uint8Array.fromHex(e);const t=e.length,r=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);const a=new Uint8Array(r);for(let t=0,i=0;t<r;t++,i+=2){const r=l(e.charCodeAt(i)),o=l(e.charCodeAt(i+1));if(void 0===r||void 0===o){const t=e[i]+e[i+1];throw new Error('hex string expected, got non-hex character "'+t+'" at index '+i)}a[t]=16*r+o}return a},e.asyncLoop=async function(t,r,a){let i=Date.now();for(let o=0;o<t;o++){a(o);const t=Date.now()-i;t>=0&&t<r||(await(0,e.nextTick)(),i+=t)}},e.utf8ToBytes=d,e.bytesToUtf8=function(e){return(new TextDecoder).decode(e)},e.toBytes=h,e.kdfInputToBytes=function(e){"string"==typeof e&&(e=d(e));return i(e),e},e.concatBytes=function(...e){let t=0;for(let r=0;r<e.length;r++){const a=e[r];i(a),t+=a.length}const r=new Uint8Array(t);for(let t=0,a=0;t<e.length;t++){const i=e[t];r.set(i,a),a+=i.length}return r},e.checkOpts=function(e,t){if(void 0!==t&&"[object Object]"!=={}.toString.call(t))throw new Error("options should be object or undefined");return Object.assign(e,t)},e.createHasher=f,e.createOptHasher=p,e.createXOFer=m,e.randomBytes=function(e=32){if(t.crypto&&"function"==typeof t.crypto.getRandomValues)return t.crypto.getRandomValues(new Uint8Array(e));if(t.crypto&&"function"==typeof t.crypto.randomBytes)return Uint8Array.from(t.crypto.randomBytes(e));throw new Error("crypto.getRandomValues must be defined")};const t=(Xr||(Xr=1,Object.defineProperty(na,"__esModule",{value:!0}),na.crypto=void 0,na.crypto="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0),na);function r(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&"Uint8Array"===e.constructor.name}function a(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("positive integer expected, got "+e)}function i(e,...t){if(!r(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error("Uint8Array expected of length "+t+", got length="+e.length)}function o(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function n(e){for(let t=0;t<e.length;t++)e[t]=o(e[t]);return e}e.isLE=68===new Uint8Array(new Uint32Array([287454020]).buffer)[0],e.swap8IfBE=e.isLE?e=>e:e=>o(e),e.byteSwapIfBE=e.swap8IfBE,e.swap32IfBE=e.isLE?e=>e:n;const s=(()=>"function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex)(),c=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));const u={_0:48,_9:57,A:65,F:70,a:97,f:102};function l(e){return e>=u._0&&e<=u._9?e-u._0:e>=u.A&&e<=u.F?e-(u.A-10):e>=u.a&&e<=u.f?e-(u.a-10):void 0}function d(e){if("string"!=typeof e)throw new Error("string expected");return new Uint8Array((new TextEncoder).encode(e))}function h(e){return"string"==typeof e&&(e=d(e)),i(e),e}e.nextTick=async()=>{};function f(e){const t=t=>e().update(h(t)).digest(),r=e();return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=()=>e(),t}function p(e){const t=(t,r)=>e(r).update(h(t)).digest(),r=e({});return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=t=>e(t),t}function m(e){const t=(t,r)=>e(r).update(h(t)).digest(),r=e({});return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=t=>e(t),t}e.Hash=class{},e.wrapConstructor=f,e.wrapConstructorWithOpts=p,e.wrapXOFConstructorWithOpts=m}(oa)),oa}function ca(){if(ea)return ia;ea=1,Object.defineProperty(ia,"__esModule",{value:!0}),ia.SHA512_IV=ia.SHA384_IV=ia.SHA224_IV=ia.SHA256_IV=ia.HashMD=void 0,ia.setBigUint64=t,ia.Chi=function(e,t,r){return e&t^~e&r},ia.Maj=function(e,t,r){return e&t^e&r^t&r};const e=sa();function t(e,t,r,a){if("function"==typeof e.setBigUint64)return e.setBigUint64(t,r,a);const i=BigInt(32),o=BigInt(4294967295),n=Number(r>>i&o),s=Number(r&o),c=a?4:0,u=a?0:4;e.setUint32(t+c,n,a),e.setUint32(t+u,s,a)}class r extends e.Hash{constructor(t,r,a,i){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=t,this.outputLen=r,this.padOffset=a,this.isLE=i,this.buffer=new Uint8Array(t),this.view=(0,e.createView)(this.buffer)}update(t){(0,e.aexists)(this),t=(0,e.toBytes)(t),(0,e.abytes)(t);const{view:r,buffer:a,blockLen:i}=this,o=t.length;for(let n=0;n<o;){const s=Math.min(i-this.pos,o-n);if(s===i){const r=(0,e.createView)(t);for(;i<=o-n;n+=i)this.process(r,n);continue}a.set(t.subarray(n,n+s),this.pos),this.pos+=s,n+=s,this.pos===i&&(this.process(r,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(r){(0,e.aexists)(this),(0,e.aoutput)(r,this),this.finished=!0;const{buffer:a,view:i,blockLen:o,isLE:n}=this;let{pos:s}=this;a[s++]=128,(0,e.clean)(this.buffer.subarray(s)),this.padOffset>o-s&&(this.process(i,0),s=0);for(let e=s;e<o;e++)a[e]=0;t(i,o-8,BigInt(8*this.length),n),this.process(i,0);const c=(0,e.createView)(r),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const l=u/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let e=0;e<l;e++)c.setUint32(4*e,d[e],n)}digest(){const{buffer:e,outputLen:t}=this;this.digestInto(e);const r=e.slice(0,t);return this.destroy(),r}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:t,buffer:r,length:a,finished:i,destroyed:o,pos:n}=this;return e.destroyed=o,e.finished=i,e.length=a,e.pos=n,a%t&&e.buffer.set(r),e}clone(){return this._cloneInto()}}return ia.HashMD=r,ia.SHA256_IV=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ia.SHA224_IV=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]),ia.SHA384_IV=Uint32Array.from([3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]),ia.SHA512_IV=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),ia}var ua,la,da,ha={};function fa(){if(ua)return ha;ua=1,Object.defineProperty(ha,"__esModule",{value:!0}),ha.toBig=ha.shrSL=ha.shrSH=ha.rotrSL=ha.rotrSH=ha.rotrBL=ha.rotrBH=ha.rotr32L=ha.rotr32H=ha.rotlSL=ha.rotlSH=ha.rotlBL=ha.rotlBH=ha.add5L=ha.add5H=ha.add4L=ha.add4H=ha.add3L=ha.add3H=void 0,ha.add=g,ha.fromBig=r,ha.split=a;const e=BigInt(2**32-1),t=BigInt(32);function r(r,a=!1){return a?{h:Number(r&e),l:Number(r>>t&e)}:{h:0|Number(r>>t&e),l:0|Number(r&e)}}function a(e,t=!1){const a=e.length;let i=new Uint32Array(a),o=new Uint32Array(a);for(let n=0;n<a;n++){const{h:a,l:s}=r(e[n],t);[i[n],o[n]]=[a,s]}return[i,o]}const i=(e,r)=>BigInt(e>>>0)<<t|BigInt(r>>>0);ha.toBig=i;const o=(e,t,r)=>e>>>r;ha.shrSH=o;const n=(e,t,r)=>e<<32-r|t>>>r;ha.shrSL=n;const s=(e,t,r)=>e>>>r|t<<32-r;ha.rotrSH=s;const c=(e,t,r)=>e<<32-r|t>>>r;ha.rotrSL=c;const u=(e,t,r)=>e<<64-r|t>>>r-32;ha.rotrBH=u;const l=(e,t,r)=>e>>>r-32|t<<64-r;ha.rotrBL=l;const d=(e,t)=>t;ha.rotr32H=d;const h=(e,t)=>e;ha.rotr32L=h;const f=(e,t,r)=>e<<r|t>>>32-r;ha.rotlSH=f;const p=(e,t,r)=>t<<r|e>>>32-r;ha.rotlSL=p;const m=(e,t,r)=>t<<r-32|e>>>64-r;ha.rotlBH=m;const b=(e,t,r)=>e<<r-32|t>>>64-r;function g(e,t,r,a){const i=(t>>>0)+(a>>>0);return{h:e+r+(i/2**32|0)|0,l:0|i}}ha.rotlBL=b;const y=(e,t,r)=>(e>>>0)+(t>>>0)+(r>>>0);ha.add3L=y;const v=(e,t,r,a)=>t+r+a+(e/2**32|0)|0;ha.add3H=v;const w=(e,t,r,a)=>(e>>>0)+(t>>>0)+(r>>>0)+(a>>>0);ha.add4L=w;const k=(e,t,r,a,i)=>t+r+a+i+(e/2**32|0)|0;ha.add4H=k;const S=(e,t,r,a,i)=>(e>>>0)+(t>>>0)+(r>>>0)+(a>>>0)+(i>>>0);ha.add5L=S;const _=(e,t,r,a,i,o)=>t+r+a+i+o+(e/2**32|0)|0;ha.add5H=_;const E={fromBig:r,split:a,toBig:i,shrSH:o,shrSL:n,rotrSH:s,rotrSL:c,rotrBH:u,rotrBL:l,rotr32H:d,rotr32L:h,rotlSH:f,rotlSL:p,rotlBH:m,rotlBL:b,add:g,add3L:y,add3H:v,add4L:w,add4H:k,add5H:_,add5L:S};return ha.default=E,ha}function pa(){if(la)return aa;la=1,Object.defineProperty(aa,"__esModule",{value:!0}),aa.sha512_224=aa.sha512_256=aa.sha384=aa.sha512=aa.sha224=aa.sha256=aa.SHA512_256=aa.SHA512_224=aa.SHA384=aa.SHA512=aa.SHA224=aa.SHA256=void 0;const e=ca(),t=fa(),r=sa(),a=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),i=new Uint32Array(64);class o extends e.HashMD{constructor(t=32){super(64,t,8,!1),this.A=0|e.SHA256_IV[0],this.B=0|e.SHA256_IV[1],this.C=0|e.SHA256_IV[2],this.D=0|e.SHA256_IV[3],this.E=0|e.SHA256_IV[4],this.F=0|e.SHA256_IV[5],this.G=0|e.SHA256_IV[6],this.H=0|e.SHA256_IV[7]}get(){const{A:e,B:t,C:r,D:a,E:i,F:o,G:n,H:s}=this;return[e,t,r,a,i,o,n,s]}set(e,t,r,a,i,o,n,s){this.A=0|e,this.B=0|t,this.C=0|r,this.D=0|a,this.E=0|i,this.F=0|o,this.G=0|n,this.H=0|s}process(t,o){for(let e=0;e<16;e++,o+=4)i[e]=t.getUint32(o,!1);for(let e=16;e<64;e++){const t=i[e-15],a=i[e-2],o=(0,r.rotr)(t,7)^(0,r.rotr)(t,18)^t>>>3,n=(0,r.rotr)(a,17)^(0,r.rotr)(a,19)^a>>>10;i[e]=n+i[e-7]+o+i[e-16]|0}let{A:n,B:s,C:c,D:u,E:l,F:d,G:h,H:f}=this;for(let t=0;t<64;t++){const o=f+((0,r.rotr)(l,6)^(0,r.rotr)(l,11)^(0,r.rotr)(l,25))+(0,e.Chi)(l,d,h)+a[t]+i[t]|0,p=((0,r.rotr)(n,2)^(0,r.rotr)(n,13)^(0,r.rotr)(n,22))+(0,e.Maj)(n,s,c)|0;f=h,h=d,d=l,l=u+o|0,u=c,c=s,s=n,n=o+p|0}n=n+this.A|0,s=s+this.B|0,c=c+this.C|0,u=u+this.D|0,l=l+this.E|0,d=d+this.F|0,h=h+this.G|0,f=f+this.H|0,this.set(n,s,c,u,l,d,h,f)}roundClean(){(0,r.clean)(i)}destroy(){this.set(0,0,0,0,0,0,0,0),(0,r.clean)(this.buffer)}}aa.SHA256=o;class n extends o{constructor(){super(28),this.A=0|e.SHA224_IV[0],this.B=0|e.SHA224_IV[1],this.C=0|e.SHA224_IV[2],this.D=0|e.SHA224_IV[3],this.E=0|e.SHA224_IV[4],this.F=0|e.SHA224_IV[5],this.G=0|e.SHA224_IV[6],this.H=0|e.SHA224_IV[7]}}aa.SHA224=n;const s=(()=>t.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(e=>BigInt(e))))(),c=(()=>s[0])(),u=(()=>s[1])(),l=new Uint32Array(80),d=new Uint32Array(80);class h extends e.HashMD{constructor(t=64){super(128,t,16,!1),this.Ah=0|e.SHA512_IV[0],this.Al=0|e.SHA512_IV[1],this.Bh=0|e.SHA512_IV[2],this.Bl=0|e.SHA512_IV[3],this.Ch=0|e.SHA512_IV[4],this.Cl=0|e.SHA512_IV[5],this.Dh=0|e.SHA512_IV[6],this.Dl=0|e.SHA512_IV[7],this.Eh=0|e.SHA512_IV[8],this.El=0|e.SHA512_IV[9],this.Fh=0|e.SHA512_IV[10],this.Fl=0|e.SHA512_IV[11],this.Gh=0|e.SHA512_IV[12],this.Gl=0|e.SHA512_IV[13],this.Hh=0|e.SHA512_IV[14],this.Hl=0|e.SHA512_IV[15]}get(){const{Ah:e,Al:t,Bh:r,Bl:a,Ch:i,Cl:o,Dh:n,Dl:s,Eh:c,El:u,Fh:l,Fl:d,Gh:h,Gl:f,Hh:p,Hl:m}=this;return[e,t,r,a,i,o,n,s,c,u,l,d,h,f,p,m]}set(e,t,r,a,i,o,n,s,c,u,l,d,h,f,p,m){this.Ah=0|e,this.Al=0|t,this.Bh=0|r,this.Bl=0|a,this.Ch=0|i,this.Cl=0|o,this.Dh=0|n,this.Dl=0|s,this.Eh=0|c,this.El=0|u,this.Fh=0|l,this.Fl=0|d,this.Gh=0|h,this.Gl=0|f,this.Hh=0|p,this.Hl=0|m}process(e,r){for(let t=0;t<16;t++,r+=4)l[t]=e.getUint32(r),d[t]=e.getUint32(r+=4);for(let e=16;e<80;e++){const r=0|l[e-15],a=0|d[e-15],i=t.rotrSH(r,a,1)^t.rotrSH(r,a,8)^t.shrSH(r,a,7),o=t.rotrSL(r,a,1)^t.rotrSL(r,a,8)^t.shrSL(r,a,7),n=0|l[e-2],s=0|d[e-2],c=t.rotrSH(n,s,19)^t.rotrBH(n,s,61)^t.shrSH(n,s,6),u=t.rotrSL(n,s,19)^t.rotrBL(n,s,61)^t.shrSL(n,s,6),h=t.add4L(o,u,d[e-7],d[e-16]),f=t.add4H(h,i,c,l[e-7],l[e-16]);l[e]=0|f,d[e]=0|h}let{Ah:a,Al:i,Bh:o,Bl:n,Ch:s,Cl:h,Dh:f,Dl:p,Eh:m,El:b,Fh:g,Fl:y,Gh:v,Gl:w,Hh:k,Hl:S}=this;for(let e=0;e<80;e++){const r=t.rotrSH(m,b,14)^t.rotrSH(m,b,18)^t.rotrBH(m,b,41),_=t.rotrSL(m,b,14)^t.rotrSL(m,b,18)^t.rotrBL(m,b,41),E=m&g^~m&v,A=b&y^~b&w,I=t.add5L(S,_,A,u[e],d[e]),x=t.add5H(I,k,r,E,c[e],l[e]),z=0|I,M=t.rotrSH(a,i,28)^t.rotrBH(a,i,34)^t.rotrBH(a,i,39),T=t.rotrSL(a,i,28)^t.rotrBL(a,i,34)^t.rotrBL(a,i,39),R=a&o^a&s^o&s,q=i&n^i&h^n&h;k=0|v,S=0|w,v=0|g,w=0|y,g=0|m,y=0|b,({h:m,l:b}=t.add(0|f,0|p,0|x,0|z)),f=0|s,p=0|h,s=0|o,h=0|n,o=0|a,n=0|i;const O=t.add3L(z,T,q);a=t.add3H(O,x,M,R),i=0|O}({h:a,l:i}=t.add(0|this.Ah,0|this.Al,0|a,0|i)),({h:o,l:n}=t.add(0|this.Bh,0|this.Bl,0|o,0|n)),({h:s,l:h}=t.add(0|this.Ch,0|this.Cl,0|s,0|h)),({h:f,l:p}=t.add(0|this.Dh,0|this.Dl,0|f,0|p)),({h:m,l:b}=t.add(0|this.Eh,0|this.El,0|m,0|b)),({h:g,l:y}=t.add(0|this.Fh,0|this.Fl,0|g,0|y)),({h:v,l:w}=t.add(0|this.Gh,0|this.Gl,0|v,0|w)),({h:k,l:S}=t.add(0|this.Hh,0|this.Hl,0|k,0|S)),this.set(a,i,o,n,s,h,f,p,m,b,g,y,v,w,k,S)}roundClean(){(0,r.clean)(l,d)}destroy(){(0,r.clean)(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}aa.SHA512=h;class f extends h{constructor(){super(48),this.Ah=0|e.SHA384_IV[0],this.Al=0|e.SHA384_IV[1],this.Bh=0|e.SHA384_IV[2],this.Bl=0|e.SHA384_IV[3],this.Ch=0|e.SHA384_IV[4],this.Cl=0|e.SHA384_IV[5],this.Dh=0|e.SHA384_IV[6],this.Dl=0|e.SHA384_IV[7],this.Eh=0|e.SHA384_IV[8],this.El=0|e.SHA384_IV[9],this.Fh=0|e.SHA384_IV[10],this.Fl=0|e.SHA384_IV[11],this.Gh=0|e.SHA384_IV[12],this.Gl=0|e.SHA384_IV[13],this.Hh=0|e.SHA384_IV[14],this.Hl=0|e.SHA384_IV[15]}}aa.SHA384=f;const p=Uint32Array.from([2352822216,424955298,1944164710,2312950998,502970286,855612546,1738396948,1479516111,258812777,2077511080,2011393907,79989058,1067287976,1780299464,286451373,2446758561]),m=Uint32Array.from([573645204,4230739756,2673172387,3360449730,596883563,1867755857,2520282905,1497426621,2519219938,2827943907,3193839141,1401305490,721525244,746961066,246885852,2177182882]);class b extends h{constructor(){super(28),this.Ah=0|p[0],this.Al=0|p[1],this.Bh=0|p[2],this.Bl=0|p[3],this.Ch=0|p[4],this.Cl=0|p[5],this.Dh=0|p[6],this.Dl=0|p[7],this.Eh=0|p[8],this.El=0|p[9],this.Fh=0|p[10],this.Fl=0|p[11],this.Gh=0|p[12],this.Gl=0|p[13],this.Hh=0|p[14],this.Hl=0|p[15]}}aa.SHA512_224=b;class g extends h{constructor(){super(32),this.Ah=0|m[0],this.Al=0|m[1],this.Bh=0|m[2],this.Bl=0|m[3],this.Ch=0|m[4],this.Cl=0|m[5],this.Dh=0|m[6],this.Dl=0|m[7],this.Eh=0|m[8],this.El=0|m[9],this.Fh=0|m[10],this.Fl=0|m[11],this.Gh=0|m[12],this.Gl=0|m[13],this.Hh=0|m[14],this.Hl=0|m[15]}}return aa.SHA512_256=g,aa.sha256=(0,r.createHasher)(()=>new o),aa.sha224=(0,r.createHasher)(()=>new n),aa.sha512=(0,r.createHasher)(()=>new h),aa.sha384=(0,r.createHasher)(()=>new f),aa.sha512_256=(0,r.createHasher)(()=>new g),aa.sha512_224=(0,r.createHasher)(()=>new b),aa}function ma(){if(da)return ra;da=1,Object.defineProperty(ra,"__esModule",{value:!0}),ra.sha224=ra.SHA224=ra.sha256=ra.SHA256=void 0;const e=pa();return ra.SHA256=e.SHA256,ra.sha256=e.sha256,ra.SHA224=e.SHA224,ra.sha224=e.sha224,ra}var ba,ga={};function ya(){if(ba)return ga;ba=1,Object.defineProperty(ga,"__esModule",{value:!0}),ga.sha512_256=ga.SHA512_256=ga.sha512_224=ga.SHA512_224=ga.sha384=ga.SHA384=ga.sha512=ga.SHA512=void 0;const e=pa();return ga.SHA512=e.SHA512,ga.sha512=e.sha512,ga.SHA384=e.SHA384,ga.sha384=e.sha384,ga.SHA512_224=e.SHA512_224,ga.sha512_224=e.sha512_224,ga.SHA512_256=e.SHA512_256,ga.sha512_256=e.sha512_256,ga}var va,wa,ka={},Sa={};function _a(){return va||(va=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.hmac=e.HMAC=void 0;const t=sa();class r extends t.Hash{constructor(e,r){super(),this.finished=!1,this.destroyed=!1,(0,t.ahash)(e);const a=(0,t.toBytes)(r);if(this.iHash=e.create(),"function"!=typeof this.iHash.update)throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const i=this.blockLen,o=new Uint8Array(i);o.set(a.length>i?e.create().update(a).digest():a);for(let e=0;e<o.length;e++)o[e]^=54;this.iHash.update(o),this.oHash=e.create();for(let e=0;e<o.length;e++)o[e]^=106;this.oHash.update(o),(0,t.clean)(o)}update(e){return(0,t.aexists)(this),this.iHash.update(e),this}digestInto(e){(0,t.aexists)(this),(0,t.abytes)(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));const{oHash:t,iHash:r,finished:a,destroyed:i,blockLen:o,outputLen:n}=this;return e.finished=a,e.destroyed=i,e.blockLen=o,e.outputLen=n,e.oHash=t._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}e.HMAC=r;e.hmac=(e,t,a)=>new r(e,t).update(a).digest(),e.hmac.create=(e,t)=>new r(e,t)}(Sa)),Sa}function Ea(){if(wa)return ka;wa=1,Object.defineProperty(ka,"__esModule",{value:!0}),ka.pbkdf2=function(e,i,o,n){const{c:s,dkLen:c,DK:u,PRF:l,PRFSalt:d}=r(e,i,o,n);let h;const f=new Uint8Array(4),p=(0,t.createView)(f),m=new Uint8Array(l.outputLen);for(let e=1,t=0;t<c;e++,t+=l.outputLen){const r=u.subarray(t,t+l.outputLen);p.setInt32(0,e,!1),(h=d._cloneInto(h)).update(f).digestInto(m),r.set(m.subarray(0,r.length));for(let e=1;e<s;e++){l._cloneInto(h).update(m).digestInto(m);for(let e=0;e<r.length;e++)r[e]^=m[e]}}return a(l,d,u,h,m)},ka.pbkdf2Async=async function(e,i,o,n){const{c:s,dkLen:c,asyncTick:u,DK:l,PRF:d,PRFSalt:h}=r(e,i,o,n);let f;const p=new Uint8Array(4),m=(0,t.createView)(p),b=new Uint8Array(d.outputLen);for(let e=1,r=0;r<c;e++,r+=d.outputLen){const a=l.subarray(r,r+d.outputLen);m.setInt32(0,e,!1),(f=h._cloneInto(f)).update(p).digestInto(b),a.set(b.subarray(0,a.length)),await(0,t.asyncLoop)(s-1,u,()=>{d._cloneInto(f).update(b).digestInto(b);for(let e=0;e<a.length;e++)a[e]^=b[e]})}return a(d,h,l,f,b)};const e=_a(),t=sa();function r(r,a,i,o){(0,t.ahash)(r);const n=(0,t.checkOpts)({dkLen:32,asyncTick:10},o),{c:s,dkLen:c,asyncTick:u}=n;if((0,t.anumber)(s),(0,t.anumber)(c),(0,t.anumber)(u),s<1)throw new Error("iterations (c) should be >= 1");const l=(0,t.kdfInputToBytes)(a),d=(0,t.kdfInputToBytes)(i),h=new Uint8Array(c),f=e.hmac.create(r,l),p=f._cloneInto().update(d);return{c:s,dkLen:c,asyncTick:u,DK:h,PRF:f,PRFSalt:p}}function a(e,r,a,i,o){return e.destroy(),r.destroy(),i&&i.destroy(),(0,t.clean)(o),a}return ka}var Aa,Ia,xa={},za=["abdikace","abeceda","adresa","agrese","akce","aktovka","alej","alkohol","amputace","ananas","andulka","anekdota","anketa","antika","anulovat","archa","arogance","asfalt","asistent","aspirace","astma","astronom","atlas","atletika","atol","autobus","azyl","babka","bachor","bacil","baculka","badatel","bageta","bagr","bahno","bakterie","balada","baletka","balkon","balonek","balvan","balza","bambus","bankomat","barbar","baret","barman","baroko","barva","baterka","batoh","bavlna","bazalka","bazilika","bazuka","bedna","beran","beseda","bestie","beton","bezinka","bezmoc","beztak","bicykl","bidlo","biftek","bikiny","bilance","biograf","biolog","bitva","bizon","blahobyt","blatouch","blecha","bledule","blesk","blikat","blizna","blokovat","bloudit","blud","bobek","bobr","bodlina","bodnout","bohatost","bojkot","bojovat","bokorys","bolest","borec","borovice","bota","boubel","bouchat","bouda","boule","bourat","boxer","bradavka","brambora","branka","bratr","brepta","briketa","brko","brloh","bronz","broskev","brunetka","brusinka","brzda","brzy","bublina","bubnovat","buchta","buditel","budka","budova","bufet","bujarost","bukvice","buldok","bulva","bunda","bunkr","burza","butik","buvol","buzola","bydlet","bylina","bytovka","bzukot","capart","carevna","cedr","cedule","cejch","cejn","cela","celer","celkem","celnice","cenina","cennost","cenovka","centrum","cenzor","cestopis","cetka","chalupa","chapadlo","charita","chata","chechtat","chemie","chichot","chirurg","chlad","chleba","chlubit","chmel","chmura","chobot","chochol","chodba","cholera","chomout","chopit","choroba","chov","chrapot","chrlit","chrt","chrup","chtivost","chudina","chutnat","chvat","chvilka","chvost","chyba","chystat","chytit","cibule","cigareta","cihelna","cihla","cinkot","cirkus","cisterna","citace","citrus","cizinec","cizost","clona","cokoliv","couvat","ctitel","ctnost","cudnost","cuketa","cukr","cupot","cvaknout","cval","cvik","cvrkot","cyklista","daleko","dareba","datel","datum","dcera","debata","dechovka","decibel","deficit","deflace","dekl","dekret","demokrat","deprese","derby","deska","detektiv","dikobraz","diktovat","dioda","diplom","disk","displej","divadlo","divoch","dlaha","dlouho","dluhopis","dnes","dobro","dobytek","docent","dochutit","dodnes","dohled","dohoda","dohra","dojem","dojnice","doklad","dokola","doktor","dokument","dolar","doleva","dolina","doma","dominant","domluvit","domov","donutit","dopad","dopis","doplnit","doposud","doprovod","dopustit","dorazit","dorost","dort","dosah","doslov","dostatek","dosud","dosyta","dotaz","dotek","dotknout","doufat","doutnat","dovozce","dozadu","doznat","dozorce","drahota","drak","dramatik","dravec","draze","drdol","drobnost","drogerie","drozd","drsnost","drtit","drzost","duben","duchovno","dudek","duha","duhovka","dusit","dusno","dutost","dvojice","dvorec","dynamit","ekolog","ekonomie","elektron","elipsa","email","emise","emoce","empatie","epizoda","epocha","epopej","epos","esej","esence","eskorta","eskymo","etiketa","euforie","evoluce","exekuce","exkurze","expedice","exploze","export","extrakt","facka","fajfka","fakulta","fanatik","fantazie","farmacie","favorit","fazole","federace","fejeton","fenka","fialka","figurant","filozof","filtr","finance","finta","fixace","fjord","flanel","flirt","flotila","fond","fosfor","fotbal","fotka","foton","frakce","freska","fronta","fukar","funkce","fyzika","galeje","garant","genetika","geolog","gilotina","glazura","glejt","golem","golfista","gotika","graf","gramofon","granule","grep","gril","grog","groteska","guma","hadice","hadr","hala","halenka","hanba","hanopis","harfa","harpuna","havran","hebkost","hejkal","hejno","hejtman","hektar","helma","hematom","herec","herna","heslo","hezky","historik","hladovka","hlasivky","hlava","hledat","hlen","hlodavec","hloh","hloupost","hltat","hlubina","hluchota","hmat","hmota","hmyz","hnis","hnojivo","hnout","hoblina","hoboj","hoch","hodiny","hodlat","hodnota","hodovat","hojnost","hokej","holinka","holka","holub","homole","honitba","honorace","horal","horda","horizont","horko","horlivec","hormon","hornina","horoskop","horstvo","hospoda","hostina","hotovost","houba","houf","houpat","houska","hovor","hradba","hranice","hravost","hrazda","hrbolek","hrdina","hrdlo","hrdost","hrnek","hrobka","hromada","hrot","hrouda","hrozen","hrstka","hrubost","hryzat","hubenost","hubnout","hudba","hukot","humr","husita","hustota","hvozd","hybnost","hydrant","hygiena","hymna","hysterik","idylka","ihned","ikona","iluze","imunita","infekce","inflace","inkaso","inovace","inspekce","internet","invalida","investor","inzerce","ironie","jablko","jachta","jahoda","jakmile","jakost","jalovec","jantar","jarmark","jaro","jasan","jasno","jatka","javor","jazyk","jedinec","jedle","jednatel","jehlan","jekot","jelen","jelito","jemnost","jenom","jepice","jeseter","jevit","jezdec","jezero","jinak","jindy","jinoch","jiskra","jistota","jitrnice","jizva","jmenovat","jogurt","jurta","kabaret","kabel","kabinet","kachna","kadet","kadidlo","kahan","kajak","kajuta","kakao","kaktus","kalamita","kalhoty","kalibr","kalnost","kamera","kamkoliv","kamna","kanibal","kanoe","kantor","kapalina","kapela","kapitola","kapka","kaple","kapota","kapr","kapusta","kapybara","karamel","karotka","karton","kasa","katalog","katedra","kauce","kauza","kavalec","kazajka","kazeta","kazivost","kdekoliv","kdesi","kedluben","kemp","keramika","kino","klacek","kladivo","klam","klapot","klasika","klaun","klec","klenba","klepat","klesnout","klid","klima","klisna","klobouk","klokan","klopa","kloub","klubovna","klusat","kluzkost","kmen","kmitat","kmotr","kniha","knot","koalice","koberec","kobka","kobliha","kobyla","kocour","kohout","kojenec","kokos","koktejl","kolaps","koleda","kolize","kolo","komando","kometa","komik","komnata","komora","kompas","komunita","konat","koncept","kondice","konec","konfese","kongres","konina","konkurs","kontakt","konzerva","kopanec","kopie","kopnout","koprovka","korbel","korektor","kormidlo","koroptev","korpus","koruna","koryto","korzet","kosatec","kostka","kotel","kotleta","kotoul","koukat","koupelna","kousek","kouzlo","kovboj","koza","kozoroh","krabice","krach","krajina","kralovat","krasopis","kravata","kredit","krejcar","kresba","kreveta","kriket","kritik","krize","krkavec","krmelec","krmivo","krocan","krok","kronika","kropit","kroupa","krovka","krtek","kruhadlo","krupice","krutost","krvinka","krychle","krypta","krystal","kryt","kudlanka","kufr","kujnost","kukla","kulajda","kulich","kulka","kulomet","kultura","kuna","kupodivu","kurt","kurzor","kutil","kvalita","kvasinka","kvestor","kynolog","kyselina","kytara","kytice","kytka","kytovec","kyvadlo","labrador","lachtan","ladnost","laik","lakomec","lamela","lampa","lanovka","lasice","laso","lastura","latinka","lavina","lebka","leckdy","leden","lednice","ledovka","ledvina","legenda","legie","legrace","lehce","lehkost","lehnout","lektvar","lenochod","lentilka","lepenka","lepidlo","letadlo","letec","letmo","letokruh","levhart","levitace","levobok","libra","lichotka","lidojed","lidskost","lihovina","lijavec","lilek","limetka","linie","linka","linoleum","listopad","litina","litovat","lobista","lodivod","logika","logoped","lokalita","loket","lomcovat","lopata","lopuch","lord","losos","lotr","loudal","louh","louka","louskat","lovec","lstivost","lucerna","lucifer","lump","lusk","lustrace","lvice","lyra","lyrika","lysina","madam","madlo","magistr","mahagon","majetek","majitel","majorita","makak","makovice","makrela","malba","malina","malovat","malvice","maminka","mandle","manko","marnost","masakr","maskot","masopust","matice","matrika","maturita","mazanec","mazivo","mazlit","mazurka","mdloba","mechanik","meditace","medovina","melasa","meloun","mentolka","metla","metoda","metr","mezera","migrace","mihnout","mihule","mikina","mikrofon","milenec","milimetr","milost","mimika","mincovna","minibar","minomet","minulost","miska","mistr","mixovat","mladost","mlha","mlhovina","mlok","mlsat","mluvit","mnich","mnohem","mobil","mocnost","modelka","modlitba","mohyla","mokro","molekula","momentka","monarcha","monokl","monstrum","montovat","monzun","mosaz","moskyt","most","motivace","motorka","motyka","moucha","moudrost","mozaika","mozek","mozol","mramor","mravenec","mrkev","mrtvola","mrzet","mrzutost","mstitel","mudrc","muflon","mulat","mumie","munice","muset","mutace","muzeum","muzikant","myslivec","mzda","nabourat","nachytat","nadace","nadbytek","nadhoz","nadobro","nadpis","nahlas","nahnat","nahodile","nahradit","naivita","najednou","najisto","najmout","naklonit","nakonec","nakrmit","nalevo","namazat","namluvit","nanometr","naoko","naopak","naostro","napadat","napevno","naplnit","napnout","naposled","naprosto","narodit","naruby","narychlo","nasadit","nasekat","naslepo","nastat","natolik","navenek","navrch","navzdory","nazvat","nebe","nechat","necky","nedaleko","nedbat","neduh","negace","nehet","nehoda","nejen","nejprve","neklid","nelibost","nemilost","nemoc","neochota","neonka","nepokoj","nerost","nerv","nesmysl","nesoulad","netvor","neuron","nevina","nezvykle","nicota","nijak","nikam","nikdy","nikl","nikterak","nitro","nocleh","nohavice","nominace","nora","norek","nositel","nosnost","nouze","noviny","novota","nozdra","nuda","nudle","nuget","nutit","nutnost","nutrie","nymfa","obal","obarvit","obava","obdiv","obec","obehnat","obejmout","obezita","obhajoba","obilnice","objasnit","objekt","obklopit","oblast","oblek","obliba","obloha","obluda","obnos","obohatit","obojek","obout","obrazec","obrna","obruba","obrys","obsah","obsluha","obstarat","obuv","obvaz","obvinit","obvod","obvykle","obyvatel","obzor","ocas","ocel","ocenit","ochladit","ochota","ochrana","ocitnout","odboj","odbyt","odchod","odcizit","odebrat","odeslat","odevzdat","odezva","odhadce","odhodit","odjet","odjinud","odkaz","odkoupit","odliv","odluka","odmlka","odolnost","odpad","odpis","odplout","odpor","odpustit","odpykat","odrazka","odsoudit","odstup","odsun","odtok","odtud","odvaha","odveta","odvolat","odvracet","odznak","ofina","ofsajd","ohlas","ohnisko","ohrada","ohrozit","ohryzek","okap","okenice","oklika","okno","okouzlit","okovy","okrasa","okres","okrsek","okruh","okupant","okurka","okusit","olejnina","olizovat","omak","omeleta","omezit","omladina","omlouvat","omluva","omyl","onehdy","opakovat","opasek","operace","opice","opilost","opisovat","opora","opozice","opravdu","oproti","orbital","orchestr","orgie","orlice","orloj","ortel","osada","oschnout","osika","osivo","oslava","oslepit","oslnit","oslovit","osnova","osoba","osolit","ospalec","osten","ostraha","ostuda","ostych","osvojit","oteplit","otisk","otop","otrhat","otrlost","otrok","otruby","otvor","ovanout","ovar","oves","ovlivnit","ovoce","oxid","ozdoba","pachatel","pacient","padouch","pahorek","pakt","palanda","palec","palivo","paluba","pamflet","pamlsek","panenka","panika","panna","panovat","panstvo","pantofle","paprika","parketa","parodie","parta","paruka","paryba","paseka","pasivita","pastelka","patent","patrona","pavouk","pazneht","pazourek","pecka","pedagog","pejsek","peklo","peloton","penalta","pendrek","penze","periskop","pero","pestrost","petarda","petice","petrolej","pevnina","pexeso","pianista","piha","pijavice","pikle","piknik","pilina","pilnost","pilulka","pinzeta","pipeta","pisatel","pistole","pitevna","pivnice","pivovar","placenta","plakat","plamen","planeta","plastika","platit","plavidlo","plaz","plech","plemeno","plenta","ples","pletivo","plevel","plivat","plnit","plno","plocha","plodina","plomba","plout","pluk","plyn","pobavit","pobyt","pochod","pocit","poctivec","podat","podcenit","podepsat","podhled","podivit","podklad","podmanit","podnik","podoba","podpora","podraz","podstata","podvod","podzim","poezie","pohanka","pohnutka","pohovor","pohroma","pohyb","pointa","pojistka","pojmout","pokazit","pokles","pokoj","pokrok","pokuta","pokyn","poledne","polibek","polknout","poloha","polynom","pomalu","pominout","pomlka","pomoc","pomsta","pomyslet","ponechat","ponorka","ponurost","popadat","popel","popisek","poplach","poprosit","popsat","popud","poradce","porce","porod","porucha","poryv","posadit","posed","posila","poskok","poslanec","posoudit","pospolu","postava","posudek","posyp","potah","potkan","potlesk","potomek","potrava","potupa","potvora","poukaz","pouto","pouzdro","povaha","povidla","povlak","povoz","povrch","povstat","povyk","povzdech","pozdrav","pozemek","poznatek","pozor","pozvat","pracovat","prahory","praktika","prales","praotec","praporek","prase","pravda","princip","prkno","probudit","procento","prodej","profese","prohra","projekt","prolomit","promile","pronikat","propad","prorok","prosba","proton","proutek","provaz","prskavka","prsten","prudkost","prut","prvek","prvohory","psanec","psovod","pstruh","ptactvo","puberta","puch","pudl","pukavec","puklina","pukrle","pult","pumpa","punc","pupen","pusa","pusinka","pustina","putovat","putyka","pyramida","pysk","pytel","racek","rachot","radiace","radnice","radon","raft","ragby","raketa","rakovina","rameno","rampouch","rande","rarach","rarita","rasovna","rastr","ratolest","razance","razidlo","reagovat","reakce","recept","redaktor","referent","reflex","rejnok","reklama","rekord","rekrut","rektor","reputace","revize","revma","revolver","rezerva","riskovat","riziko","robotika","rodokmen","rohovka","rokle","rokoko","romaneto","ropovod","ropucha","rorejs","rosol","rostlina","rotmistr","rotoped","rotunda","roubenka","roucho","roup","roura","rovina","rovnice","rozbor","rozchod","rozdat","rozeznat","rozhodce","rozinka","rozjezd","rozkaz","rozloha","rozmar","rozpad","rozruch","rozsah","roztok","rozum","rozvod","rubrika","ruchadlo","rukavice","rukopis","ryba","rybolov","rychlost","rydlo","rypadlo","rytina","ryzost","sadista","sahat","sako","samec","samizdat","samota","sanitka","sardinka","sasanka","satelit","sazba","sazenice","sbor","schovat","sebranka","secese","sedadlo","sediment","sedlo","sehnat","sejmout","sekera","sekta","sekunda","sekvoje","semeno","seno","servis","sesadit","seshora","seskok","seslat","sestra","sesuv","sesypat","setba","setina","setkat","setnout","setrvat","sever","seznam","shoda","shrnout","sifon","silnice","sirka","sirotek","sirup","situace","skafandr","skalisko","skanzen","skaut","skeptik","skica","skladba","sklenice","sklo","skluz","skoba","skokan","skoro","skripta","skrz","skupina","skvost","skvrna","slabika","sladidlo","slanina","slast","slavnost","sledovat","slepec","sleva","slezina","slib","slina","sliznice","slon","sloupek","slovo","sluch","sluha","slunce","slupka","slza","smaragd","smetana","smilstvo","smlouva","smog","smrad","smrk","smrtka","smutek","smysl","snad","snaha","snob","sobota","socha","sodovka","sokol","sopka","sotva","souboj","soucit","soudce","souhlas","soulad","soumrak","souprava","soused","soutok","souviset","spalovna","spasitel","spis","splav","spodek","spojenec","spolu","sponzor","spornost","spousta","sprcha","spustit","sranda","sraz","srdce","srna","srnec","srovnat","srpen","srst","srub","stanice","starosta","statika","stavba","stehno","stezka","stodola","stolek","stopa","storno","stoupat","strach","stres","strhnout","strom","struna","studna","stupnice","stvol","styk","subjekt","subtropy","suchar","sudost","sukno","sundat","sunout","surikata","surovina","svah","svalstvo","svetr","svatba","svazek","svisle","svitek","svoboda","svodidlo","svorka","svrab","sykavka","sykot","synek","synovec","sypat","sypkost","syrovost","sysel","sytost","tabletka","tabule","tahoun","tajemno","tajfun","tajga","tajit","tajnost","taktika","tamhle","tampon","tancovat","tanec","tanker","tapeta","tavenina","tazatel","technika","tehdy","tekutina","telefon","temnota","tendence","tenista","tenor","teplota","tepna","teprve","terapie","termoska","textil","ticho","tiskopis","titulek","tkadlec","tkanina","tlapka","tleskat","tlukot","tlupa","tmel","toaleta","topinka","topol","torzo","touha","toulec","tradice","traktor","tramp","trasa","traverza","trefit","trest","trezor","trhavina","trhlina","trochu","trojice","troska","trouba","trpce","trpitel","trpkost","trubec","truchlit","truhlice","trus","trvat","tudy","tuhnout","tuhost","tundra","turista","turnaj","tuzemsko","tvaroh","tvorba","tvrdost","tvrz","tygr","tykev","ubohost","uboze","ubrat","ubrousek","ubrus","ubytovna","ucho","uctivost","udivit","uhradit","ujednat","ujistit","ujmout","ukazatel","uklidnit","uklonit","ukotvit","ukrojit","ulice","ulita","ulovit","umyvadlo","unavit","uniforma","uniknout","upadnout","uplatnit","uplynout","upoutat","upravit","uran","urazit","usednout","usilovat","usmrtit","usnadnit","usnout","usoudit","ustlat","ustrnout","utahovat","utkat","utlumit","utonout","utopenec","utrousit","uvalit","uvolnit","uvozovka","uzdravit","uzel","uzenina","uzlina","uznat","vagon","valcha","valoun","vana","vandal","vanilka","varan","varhany","varovat","vcelku","vchod","vdova","vedro","vegetace","vejce","velbloud","veletrh","velitel","velmoc","velryba","venkov","veranda","verze","veselka","veskrze","vesnice","vespodu","vesta","veterina","veverka","vibrace","vichr","videohra","vidina","vidle","vila","vinice","viset","vitalita","vize","vizitka","vjezd","vklad","vkus","vlajka","vlak","vlasec","vlevo","vlhkost","vliv","vlnovka","vloupat","vnucovat","vnuk","voda","vodivost","vodoznak","vodstvo","vojensky","vojna","vojsko","volant","volba","volit","volno","voskovka","vozidlo","vozovna","vpravo","vrabec","vracet","vrah","vrata","vrba","vrcholek","vrhat","vrstva","vrtule","vsadit","vstoupit","vstup","vtip","vybavit","vybrat","vychovat","vydat","vydra","vyfotit","vyhledat","vyhnout","vyhodit","vyhradit","vyhubit","vyjasnit","vyjet","vyjmout","vyklopit","vykonat","vylekat","vymazat","vymezit","vymizet","vymyslet","vynechat","vynikat","vynutit","vypadat","vyplatit","vypravit","vypustit","vyrazit","vyrovnat","vyrvat","vyslovit","vysoko","vystavit","vysunout","vysypat","vytasit","vytesat","vytratit","vyvinout","vyvolat","vyvrhel","vyzdobit","vyznat","vzadu","vzbudit","vzchopit","vzdor","vzduch","vzdychat","vzestup","vzhledem","vzkaz","vzlykat","vznik","vzorek","vzpoura","vztah","vztek","xylofon","zabrat","zabydlet","zachovat","zadarmo","zadusit","zafoukat","zahltit","zahodit","zahrada","zahynout","zajatec","zajet","zajistit","zaklepat","zakoupit","zalepit","zamezit","zamotat","zamyslet","zanechat","zanikat","zaplatit","zapojit","zapsat","zarazit","zastavit","zasunout","zatajit","zatemnit","zatknout","zaujmout","zavalit","zavelet","zavinit","zavolat","zavrtat","zazvonit","zbavit","zbrusu","zbudovat","zbytek","zdaleka","zdarma","zdatnost","zdivo","zdobit","zdroj","zdvih","zdymadlo","zelenina","zeman","zemina","zeptat","zezadu","zezdola","zhatit","zhltnout","zhluboka","zhotovit","zhruba","zima","zimnice","zjemnit","zklamat","zkoumat","zkratka","zkumavka","zlato","zlehka","zloba","zlom","zlost","zlozvyk","zmapovat","zmar","zmatek","zmije","zmizet","zmocnit","zmodrat","zmrzlina","zmutovat","znak","znalost","znamenat","znovu","zobrazit","zotavit","zoubek","zoufale","zplodit","zpomalit","zprava","zprostit","zprudka","zprvu","zrada","zranit","zrcadlo","zrnitost","zrno","zrovna","zrychlit","zrzavost","zticha","ztratit","zubovina","zubr","zvednout","zvenku","zvesela","zvon","zvrat","zvukovod","zvyk"],Ma=["的","一","是","在","不","了","有","和","人","这","中","大","为","上","个","国","我","以","要","他","时","来","用","们","生","到","作","地","于","出","就","分","对","成","会","可","主","发","年","动","同","工","也","能","下","过","子","说","产","种","面","而","方","后","多","定","行","学","法","所","民","得","经","十","三","之","进","着","等","部","度","家","电","力","里","如","水","化","高","自","二","理","起","小","物","现","实","加","量","都","两","体","制","机","当","使","点","从","业","本","去","把","性","好","应","开","它","合","还","因","由","其","些","然","前","外","天","政","四","日","那","社","义","事","平","形","相","全","表","间","样","与","关","各","重","新","线","内","数","正","心","反","你","明","看","原","又","么","利","比","或","但","质","气","第","向","道","命","此","变","条","只","没","结","解","问","意","建","月","公","无","系","军","很","情","者","最","立","代","想","已","通","并","提","直","题","党","程","展","五","果","料","象","员","革","位","入","常","文","总","次","品","式","活","设","及","管","特","件","长","求","老","头","基","资","边","流","路","级","少","图","山","统","接","知","较","将","组","见","计","别","她","手","角","期","根","论","运","农","指","几","九","区","强","放","决","西","被","干","做","必","战","先","回","则","任","取","据","处","队","南","给","色","光","门","即","保","治","北","造","百","规","热","领","七","海","口","东","导","器","压","志","世","金","增","争","济","阶","油","思","术","极","交","受","联","什","认","六","共","权","收","证","改","清","美","再","采","转","更","单","风","切","打","白","教","速","花","带","安","场","身","车","例","真","务","具","万","每","目","至","达","走","积","示","议","声","报","斗","完","类","八","离","华","名","确","才","科","张","信","马","节","话","米","整","空","元","况","今","集","温","传","土","许","步","群","广","石","记","需","段","研","界","拉","林","律","叫","且","究","观","越","织","装","影","算","低","持","音","众","书","布","复","容","儿","须","际","商","非","验","连","断","深","难","近","矿","千","周","委","素","技","备","半","办","青","省","列","习","响","约","支","般","史","感","劳","便","团","往","酸","历","市","克","何","除","消","构","府","称","太","准","精","值","号","率","族","维","划","选","标","写","存","候","毛","亲","快","效","斯","院","查","江","型","眼","王","按","格","养","易","置","派","层","片","始","却","专","状","育","厂","京","识","适","属","圆","包","火","住","调","满","县","局","照","参","红","细","引","听","该","铁","价","严","首","底","液","官","德","随","病","苏","失","尔","死","讲","配","女","黄","推","显","谈","罪","神","艺","呢","席","含","企","望","密","批","营","项","防","举","球","英","氧","势","告","李","台","落","木","帮","轮","破","亚","师","围","注","远","字","材","排","供","河","态","封","另","施","减","树","溶","怎","止","案","言","士","均","武","固","叶","鱼","波","视","仅","费","紧","爱","左","章","早","朝","害","续","轻","服","试","食","充","兵","源","判","护","司","足","某","练","差","致","板","田","降","黑","犯","负","击","范","继","兴","似","余","坚","曲","输","修","故","城","夫","够","送","笔","船","占","右","财","吃","富","春","职","觉","汉","画","功","巴","跟","虽","杂","飞","检","吸","助","升","阳","互","初","创","抗","考","投","坏","策","古","径","换","未","跑","留","钢","曾","端","责","站","简","述","钱","副","尽","帝","射","草","冲","承","独","令","限","阿","宣","环","双","请","超","微","让","控","州","良","轴","找","否","纪","益","依","优","顶","础","载","倒","房","突","坐","粉","敌","略","客","袁","冷","胜","绝","析","块","剂","测","丝","协","诉","念","陈","仍","罗","盐","友","洋","错","苦","夜","刑","移","频","逐","靠","混","母","短","皮","终","聚","汽","村","云","哪","既","距","卫","停","烈","央","察","烧","迅","境","若","印","洲","刻","括","激","孔","搞","甚","室","待","核","校","散","侵","吧","甲","游","久","菜","味","旧","模","湖","货","损","预","阻","毫","普","稳","乙","妈","植","息","扩","银","语","挥","酒","守","拿","序","纸","医","缺","雨","吗","针","刘","啊","急","唱","误","训","愿","审","附","获","茶","鲜","粮","斤","孩","脱","硫","肥","善","龙","演","父","渐","血","欢","械","掌","歌","沙","刚","攻","谓","盾","讨","晚","粒","乱","燃","矛","乎","杀","药","宁","鲁","贵","钟","煤","读","班","伯","香","介","迫","句","丰","培","握","兰","担","弦","蛋","沉","假","穿","执","答","乐","谁","顺","烟","缩","征","脸","喜","松","脚","困","异","免","背","星","福","买","染","井","概","慢","怕","磁","倍","祖","皇","促","静","补","评","翻","肉","践","尼","衣","宽","扬","棉","希","伤","操","垂","秋","宜","氢","套","督","振","架","亮","末","宪","庆","编","牛","触","映","雷","销","诗","座","居","抓","裂","胞","呼","娘","景","威","绿","晶","厚","盟","衡","鸡","孙","延","危","胶","屋","乡","临","陆","顾","掉","呀","灯","岁","措","束","耐","剧","玉","赵","跳","哥","季","课","凯","胡","额","款","绍","卷","齐","伟","蒸","殖","永","宗","苗","川","炉","岩","弱","零","杨","奏","沿","露","杆","探","滑","镇","饭","浓","航","怀","赶","库","夺","伊","灵","税","途","灭","赛","归","召","鼓","播","盘","裁","险","康","唯","录","菌","纯","借","糖","盖","横","符","私","努","堂","域","枪","润","幅","哈","竟","熟","虫","泽","脑","壤","碳","欧","遍","侧","寨","敢","彻","虑","斜","薄","庭","纳","弹","饲","伸","折","麦","湿","暗","荷","瓦","塞","床","筑","恶","户","访","塔","奇","透","梁","刀","旋","迹","卡","氯","遇","份","毒","泥","退","洗","摆","灰","彩","卖","耗","夏","择","忙","铜","献","硬","予","繁","圈","雪","函","亦","抽","篇","阵","阴","丁","尺","追","堆","雄","迎","泛","爸","楼","避","谋","吨","野","猪","旗","累","偏","典","馆","索","秦","脂","潮","爷","豆","忽","托","惊","塑","遗","愈","朱","替","纤","粗","倾","尚","痛","楚","谢","奋","购","磨","君","池","旁","碎","骨","监","捕","弟","暴","割","贯","殊","释","词","亡","壁","顿","宝","午","尘","闻","揭","炮","残","冬","桥","妇","警","综","招","吴","付","浮","遭","徐","您","摇","谷","赞","箱","隔","订","男","吹","园","纷","唐","败","宋","玻","巨","耕","坦","荣","闭","湾","键","凡","驻","锅","救","恩","剥","凝","碱","齿","截","炼","麻","纺","禁","废","盛","版","缓","净","睛","昌","婚","涉","筒","嘴","插","岸","朗","庄","街","藏","姑","贸","腐","奴","啦","惯","乘","伙","恢","匀","纱","扎","辩","耳","彪","臣","亿","璃","抵","脉","秀","萨","俄","网","舞","店","喷","纵","寸","汗","挂","洪","贺","闪","柬","爆","烯","津","稻","墙","软","勇","像","滚","厘","蒙","芳","肯","坡","柱","荡","腿","仪","旅","尾","轧","冰","贡","登","黎","削","钻","勒","逃","障","氨","郭","峰","币","港","伏","轨","亩","毕","擦","莫","刺","浪","秘","援","株","健","售","股","岛","甘","泡","睡","童","铸","汤","阀","休","汇","舍","牧","绕","炸","哲","磷","绩","朋","淡","尖","启","陷","柴","呈","徒","颜","泪","稍","忘","泵","蓝","拖","洞","授","镜","辛","壮","锋","贫","虚","弯","摩","泰","幼","廷","尊","窗","纲","弄","隶","疑","氏","宫","姐","震","瑞","怪","尤","琴","循","描","膜","违","夹","腰","缘","珠","穷","森","枝","竹","沟","催","绳","忆","邦","剩","幸","浆","栏","拥","牙","贮","礼","滤","钠","纹","罢","拍","咱","喊","袖","埃","勤","罚","焦","潜","伍","墨","欲","缝","姓","刊","饱","仿","奖","铝","鬼","丽","跨","默","挖","链","扫","喝","袋","炭","污","幕","诸","弧","励","梅","奶","洁","灾","舟","鉴","苯","讼","抱","毁","懂","寒","智","埔","寄","届","跃","渡","挑","丹","艰","贝","碰","拔","爹","戴","码","梦","芽","熔","赤","渔","哭","敬","颗","奔","铅","仲","虎","稀","妹","乏","珍","申","桌","遵","允","隆","螺","仓","魏","锐","晓","氮","兼","隐","碍","赫","拨","忠","肃","缸","牵","抢","博","巧","壳","兄","杜","讯","诚","碧","祥","柯","页","巡","矩","悲","灌","龄","伦","票","寻","桂","铺","圣","恐","恰","郑","趣","抬","荒","腾","贴","柔","滴","猛","阔","辆","妻","填","撤","储","签","闹","扰","紫","砂","递","戏","吊","陶","伐","喂","疗","瓶","婆","抚","臂","摸","忍","虾","蜡","邻","胸","巩","挤","偶","弃","槽","劲","乳","邓","吉","仁","烂","砖","租","乌","舰","伴","瓜","浅","丙","暂","燥","橡","柳","迷","暖","牌","秧","胆","详","簧","踏","瓷","谱","呆","宾","糊","洛","辉","愤","竞","隙","怒","粘","乃","绪","肩","籍","敏","涂","熙","皆","侦","悬","掘","享","纠","醒","狂","锁","淀","恨","牲","霸","爬","赏","逆","玩","陵","祝","秒","浙","貌","役","彼","悉","鸭","趋","凤","晨","畜","辈","秩","卵","署","梯","炎","滩","棋","驱","筛","峡","冒","啥","寿","译","浸","泉","帽","迟","硅","疆","贷","漏","稿","冠","嫩","胁","芯","牢","叛","蚀","奥","鸣","岭","羊","凭","串","塘","绘","酵","融","盆","锡","庙","筹","冻","辅","摄","袭","筋","拒","僚","旱","钾","鸟","漆","沈","眉","疏","添","棒","穗","硝","韩","逼","扭","侨","凉","挺","碗","栽","炒","杯","患","馏","劝","豪","辽","勃","鸿","旦","吏","拜","狗","埋","辊","掩","饮","搬","骂","辞","勾","扣","估","蒋","绒","雾","丈","朵","姆","拟","宇","辑","陕","雕","偿","蓄","崇","剪","倡","厅","咬","驶","薯","刷","斥","番","赋","奉","佛","浇","漫","曼","扇","钙","桃","扶","仔","返","俗","亏","腔","鞋","棱","覆","框","悄","叔","撞","骗","勘","旺","沸","孤","吐","孟","渠","屈","疾","妙","惜","仰","狠","胀","谐","抛","霉","桑","岗","嘛","衰","盗","渗","脏","赖","涌","甜","曹","阅","肌","哩","厉","烃","纬","毅","昨","伪","症","煮","叹","钉","搭","茎","笼","酷","偷","弓","锥","恒","杰","坑","鼻","翼","纶","叙","狱","逮","罐","络","棚","抑","膨","蔬","寺","骤","穆","冶","枯","册","尸","凸","绅","坯","牺","焰","轰","欣","晋","瘦","御","锭","锦","丧","旬","锻","垄","搜","扑","邀","亭","酯","迈","舒","脆","酶","闲","忧","酚","顽","羽","涨","卸","仗","陪","辟","惩","杭","姚","肚","捉","飘","漂","昆","欺","吾","郎","烷","汁","呵","饰","萧","雅","邮","迁","燕","撒","姻","赴","宴","烦","债","帐","斑","铃","旨","醇","董","饼","雏","姿","拌","傅","腹","妥","揉","贤","拆","歪","葡","胺","丢","浩","徽","昂","垫","挡","览","贪","慰","缴","汪","慌","冯","诺","姜","谊","凶","劣","诬","耀","昏","躺","盈","骑","乔","溪","丛","卢","抹","闷","咨","刮","驾","缆","悟","摘","铒","掷","颇","幻","柄","惠","惨","佳","仇","腊","窝","涤","剑","瞧","堡","泼","葱","罩","霍","捞","胎","苍","滨","俩","捅","湘","砍","霞","邵","萄","疯","淮","遂","熊","粪","烘","宿","档","戈","驳","嫂","裕","徙","箭","捐","肠","撑","晒","辨","殿","莲","摊","搅","酱","屏","疫","哀","蔡","堵","沫","皱","畅","叠","阁","莱","敲","辖","钩","痕","坝","巷","饿","祸","丘","玄","溜","曰","逻","彭","尝","卿","妨","艇","吞","韦","怨","矮","歇"],Ta=["的","一","是","在","不","了","有","和","人","這","中","大","為","上","個","國","我","以","要","他","時","來","用","們","生","到","作","地","於","出","就","分","對","成","會","可","主","發","年","動","同","工","也","能","下","過","子","說","產","種","面","而","方","後","多","定","行","學","法","所","民","得","經","十","三","之","進","著","等","部","度","家","電","力","裡","如","水","化","高","自","二","理","起","小","物","現","實","加","量","都","兩","體","制","機","當","使","點","從","業","本","去","把","性","好","應","開","它","合","還","因","由","其","些","然","前","外","天","政","四","日","那","社","義","事","平","形","相","全","表","間","樣","與","關","各","重","新","線","內","數","正","心","反","你","明","看","原","又","麼","利","比","或","但","質","氣","第","向","道","命","此","變","條","只","沒","結","解","問","意","建","月","公","無","系","軍","很","情","者","最","立","代","想","已","通","並","提","直","題","黨","程","展","五","果","料","象","員","革","位","入","常","文","總","次","品","式","活","設","及","管","特","件","長","求","老","頭","基","資","邊","流","路","級","少","圖","山","統","接","知","較","將","組","見","計","別","她","手","角","期","根","論","運","農","指","幾","九","區","強","放","決","西","被","幹","做","必","戰","先","回","則","任","取","據","處","隊","南","給","色","光","門","即","保","治","北","造","百","規","熱","領","七","海","口","東","導","器","壓","志","世","金","增","爭","濟","階","油","思","術","極","交","受","聯","什","認","六","共","權","收","證","改","清","美","再","採","轉","更","單","風","切","打","白","教","速","花","帶","安","場","身","車","例","真","務","具","萬","每","目","至","達","走","積","示","議","聲","報","鬥","完","類","八","離","華","名","確","才","科","張","信","馬","節","話","米","整","空","元","況","今","集","溫","傳","土","許","步","群","廣","石","記","需","段","研","界","拉","林","律","叫","且","究","觀","越","織","裝","影","算","低","持","音","眾","書","布","复","容","兒","須","際","商","非","驗","連","斷","深","難","近","礦","千","週","委","素","技","備","半","辦","青","省","列","習","響","約","支","般","史","感","勞","便","團","往","酸","歷","市","克","何","除","消","構","府","稱","太","準","精","值","號","率","族","維","劃","選","標","寫","存","候","毛","親","快","效","斯","院","查","江","型","眼","王","按","格","養","易","置","派","層","片","始","卻","專","狀","育","廠","京","識","適","屬","圓","包","火","住","調","滿","縣","局","照","參","紅","細","引","聽","該","鐵","價","嚴","首","底","液","官","德","隨","病","蘇","失","爾","死","講","配","女","黃","推","顯","談","罪","神","藝","呢","席","含","企","望","密","批","營","項","防","舉","球","英","氧","勢","告","李","台","落","木","幫","輪","破","亞","師","圍","注","遠","字","材","排","供","河","態","封","另","施","減","樹","溶","怎","止","案","言","士","均","武","固","葉","魚","波","視","僅","費","緊","愛","左","章","早","朝","害","續","輕","服","試","食","充","兵","源","判","護","司","足","某","練","差","致","板","田","降","黑","犯","負","擊","范","繼","興","似","餘","堅","曲","輸","修","故","城","夫","夠","送","筆","船","佔","右","財","吃","富","春","職","覺","漢","畫","功","巴","跟","雖","雜","飛","檢","吸","助","昇","陽","互","初","創","抗","考","投","壞","策","古","徑","換","未","跑","留","鋼","曾","端","責","站","簡","述","錢","副","盡","帝","射","草","衝","承","獨","令","限","阿","宣","環","雙","請","超","微","讓","控","州","良","軸","找","否","紀","益","依","優","頂","礎","載","倒","房","突","坐","粉","敵","略","客","袁","冷","勝","絕","析","塊","劑","測","絲","協","訴","念","陳","仍","羅","鹽","友","洋","錯","苦","夜","刑","移","頻","逐","靠","混","母","短","皮","終","聚","汽","村","雲","哪","既","距","衛","停","烈","央","察","燒","迅","境","若","印","洲","刻","括","激","孔","搞","甚","室","待","核","校","散","侵","吧","甲","遊","久","菜","味","舊","模","湖","貨","損","預","阻","毫","普","穩","乙","媽","植","息","擴","銀","語","揮","酒","守","拿","序","紙","醫","缺","雨","嗎","針","劉","啊","急","唱","誤","訓","願","審","附","獲","茶","鮮","糧","斤","孩","脫","硫","肥","善","龍","演","父","漸","血","歡","械","掌","歌","沙","剛","攻","謂","盾","討","晚","粒","亂","燃","矛","乎","殺","藥","寧","魯","貴","鐘","煤","讀","班","伯","香","介","迫","句","豐","培","握","蘭","擔","弦","蛋","沉","假","穿","執","答","樂","誰","順","煙","縮","徵","臉","喜","松","腳","困","異","免","背","星","福","買","染","井","概","慢","怕","磁","倍","祖","皇","促","靜","補","評","翻","肉","踐","尼","衣","寬","揚","棉","希","傷","操","垂","秋","宜","氫","套","督","振","架","亮","末","憲","慶","編","牛","觸","映","雷","銷","詩","座","居","抓","裂","胞","呼","娘","景","威","綠","晶","厚","盟","衡","雞","孫","延","危","膠","屋","鄉","臨","陸","顧","掉","呀","燈","歲","措","束","耐","劇","玉","趙","跳","哥","季","課","凱","胡","額","款","紹","卷","齊","偉","蒸","殖","永","宗","苗","川","爐","岩","弱","零","楊","奏","沿","露","桿","探","滑","鎮","飯","濃","航","懷","趕","庫","奪","伊","靈","稅","途","滅","賽","歸","召","鼓","播","盤","裁","險","康","唯","錄","菌","純","借","糖","蓋","橫","符","私","努","堂","域","槍","潤","幅","哈","竟","熟","蟲","澤","腦","壤","碳","歐","遍","側","寨","敢","徹","慮","斜","薄","庭","納","彈","飼","伸","折","麥","濕","暗","荷","瓦","塞","床","築","惡","戶","訪","塔","奇","透","梁","刀","旋","跡","卡","氯","遇","份","毒","泥","退","洗","擺","灰","彩","賣","耗","夏","擇","忙","銅","獻","硬","予","繁","圈","雪","函","亦","抽","篇","陣","陰","丁","尺","追","堆","雄","迎","泛","爸","樓","避","謀","噸","野","豬","旗","累","偏","典","館","索","秦","脂","潮","爺","豆","忽","托","驚","塑","遺","愈","朱","替","纖","粗","傾","尚","痛","楚","謝","奮","購","磨","君","池","旁","碎","骨","監","捕","弟","暴","割","貫","殊","釋","詞","亡","壁","頓","寶","午","塵","聞","揭","炮","殘","冬","橋","婦","警","綜","招","吳","付","浮","遭","徐","您","搖","谷","贊","箱","隔","訂","男","吹","園","紛","唐","敗","宋","玻","巨","耕","坦","榮","閉","灣","鍵","凡","駐","鍋","救","恩","剝","凝","鹼","齒","截","煉","麻","紡","禁","廢","盛","版","緩","淨","睛","昌","婚","涉","筒","嘴","插","岸","朗","莊","街","藏","姑","貿","腐","奴","啦","慣","乘","夥","恢","勻","紗","扎","辯","耳","彪","臣","億","璃","抵","脈","秀","薩","俄","網","舞","店","噴","縱","寸","汗","掛","洪","賀","閃","柬","爆","烯","津","稻","牆","軟","勇","像","滾","厘","蒙","芳","肯","坡","柱","盪","腿","儀","旅","尾","軋","冰","貢","登","黎","削","鑽","勒","逃","障","氨","郭","峰","幣","港","伏","軌","畝","畢","擦","莫","刺","浪","秘","援","株","健","售","股","島","甘","泡","睡","童","鑄","湯","閥","休","匯","舍","牧","繞","炸","哲","磷","績","朋","淡","尖","啟","陷","柴","呈","徒","顏","淚","稍","忘","泵","藍","拖","洞","授","鏡","辛","壯","鋒","貧","虛","彎","摩","泰","幼","廷","尊","窗","綱","弄","隸","疑","氏","宮","姐","震","瑞","怪","尤","琴","循","描","膜","違","夾","腰","緣","珠","窮","森","枝","竹","溝","催","繩","憶","邦","剩","幸","漿","欄","擁","牙","貯","禮","濾","鈉","紋","罷","拍","咱","喊","袖","埃","勤","罰","焦","潛","伍","墨","欲","縫","姓","刊","飽","仿","獎","鋁","鬼","麗","跨","默","挖","鏈","掃","喝","袋","炭","污","幕","諸","弧","勵","梅","奶","潔","災","舟","鑑","苯","訟","抱","毀","懂","寒","智","埔","寄","屆","躍","渡","挑","丹","艱","貝","碰","拔","爹","戴","碼","夢","芽","熔","赤","漁","哭","敬","顆","奔","鉛","仲","虎","稀","妹","乏","珍","申","桌","遵","允","隆","螺","倉","魏","銳","曉","氮","兼","隱","礙","赫","撥","忠","肅","缸","牽","搶","博","巧","殼","兄","杜","訊","誠","碧","祥","柯","頁","巡","矩","悲","灌","齡","倫","票","尋","桂","鋪","聖","恐","恰","鄭","趣","抬","荒","騰","貼","柔","滴","猛","闊","輛","妻","填","撤","儲","簽","鬧","擾","紫","砂","遞","戲","吊","陶","伐","餵","療","瓶","婆","撫","臂","摸","忍","蝦","蠟","鄰","胸","鞏","擠","偶","棄","槽","勁","乳","鄧","吉","仁","爛","磚","租","烏","艦","伴","瓜","淺","丙","暫","燥","橡","柳","迷","暖","牌","秧","膽","詳","簧","踏","瓷","譜","呆","賓","糊","洛","輝","憤","競","隙","怒","粘","乃","緒","肩","籍","敏","塗","熙","皆","偵","懸","掘","享","糾","醒","狂","鎖","淀","恨","牲","霸","爬","賞","逆","玩","陵","祝","秒","浙","貌","役","彼","悉","鴨","趨","鳳","晨","畜","輩","秩","卵","署","梯","炎","灘","棋","驅","篩","峽","冒","啥","壽","譯","浸","泉","帽","遲","矽","疆","貸","漏","稿","冠","嫩","脅","芯","牢","叛","蝕","奧","鳴","嶺","羊","憑","串","塘","繪","酵","融","盆","錫","廟","籌","凍","輔","攝","襲","筋","拒","僚","旱","鉀","鳥","漆","沈","眉","疏","添","棒","穗","硝","韓","逼","扭","僑","涼","挺","碗","栽","炒","杯","患","餾","勸","豪","遼","勃","鴻","旦","吏","拜","狗","埋","輥","掩","飲","搬","罵","辭","勾","扣","估","蔣","絨","霧","丈","朵","姆","擬","宇","輯","陝","雕","償","蓄","崇","剪","倡","廳","咬","駛","薯","刷","斥","番","賦","奉","佛","澆","漫","曼","扇","鈣","桃","扶","仔","返","俗","虧","腔","鞋","棱","覆","框","悄","叔","撞","騙","勘","旺","沸","孤","吐","孟","渠","屈","疾","妙","惜","仰","狠","脹","諧","拋","黴","桑","崗","嘛","衰","盜","滲","臟","賴","湧","甜","曹","閱","肌","哩","厲","烴","緯","毅","昨","偽","症","煮","嘆","釘","搭","莖","籠","酷","偷","弓","錐","恆","傑","坑","鼻","翼","綸","敘","獄","逮","罐","絡","棚","抑","膨","蔬","寺","驟","穆","冶","枯","冊","屍","凸","紳","坯","犧","焰","轟","欣","晉","瘦","禦","錠","錦","喪","旬","鍛","壟","搜","撲","邀","亭","酯","邁","舒","脆","酶","閒","憂","酚","頑","羽","漲","卸","仗","陪","闢","懲","杭","姚","肚","捉","飄","漂","昆","欺","吾","郎","烷","汁","呵","飾","蕭","雅","郵","遷","燕","撒","姻","赴","宴","煩","債","帳","斑","鈴","旨","醇","董","餅","雛","姿","拌","傅","腹","妥","揉","賢","拆","歪","葡","胺","丟","浩","徽","昂","墊","擋","覽","貪","慰","繳","汪","慌","馮","諾","姜","誼","兇","劣","誣","耀","昏","躺","盈","騎","喬","溪","叢","盧","抹","悶","諮","刮","駕","纜","悟","摘","鉺","擲","頗","幻","柄","惠","慘","佳","仇","臘","窩","滌","劍","瞧","堡","潑","蔥","罩","霍","撈","胎","蒼","濱","倆","捅","湘","砍","霞","邵","萄","瘋","淮","遂","熊","糞","烘","宿","檔","戈","駁","嫂","裕","徙","箭","捐","腸","撐","曬","辨","殿","蓮","攤","攪","醬","屏","疫","哀","蔡","堵","沫","皺","暢","疊","閣","萊","敲","轄","鉤","痕","壩","巷","餓","禍","丘","玄","溜","曰","邏","彭","嘗","卿","妨","艇","吞","韋","怨","矮","歇"],Ra=["가격","가끔","가난","가능","가득","가르침","가뭄","가방","가상","가슴","가운데","가을","가이드","가입","가장","가정","가족","가죽","각오","각자","간격","간부","간섭","간장","간접","간판","갈등","갈비","갈색","갈증","감각","감기","감소","감수성","감자","감정","갑자기","강남","강당","강도","강력히","강변","강북","강사","강수량","강아지","강원도","강의","강제","강조","같이","개구리","개나리","개방","개별","개선","개성","개인","객관적","거실","거액","거울","거짓","거품","걱정","건강","건물","건설","건조","건축","걸음","검사","검토","게시판","게임","겨울","견해","결과","결국","결론","결석","결승","결심","결정","결혼","경계","경고","경기","경력","경복궁","경비","경상도","경영","경우","경쟁","경제","경주","경찰","경치","경향","경험","계곡","계단","계란","계산","계속","계약","계절","계층","계획","고객","고구려","고궁","고급","고등학생","고무신","고민","고양이","고장","고전","고집","고춧가루","고통","고향","곡식","골목","골짜기","골프","공간","공개","공격","공군","공급","공기","공동","공무원","공부","공사","공식","공업","공연","공원","공장","공짜","공책","공통","공포","공항","공휴일","과목","과일","과장","과정","과학","관객","관계","관광","관념","관람","관련","관리","관습","관심","관점","관찰","광경","광고","광장","광주","괴로움","굉장히","교과서","교문","교복","교실","교양","교육","교장","교직","교통","교환","교훈","구경","구름","구멍","구별","구분","구석","구성","구속","구역","구입","구청","구체적","국가","국기","국내","국립","국물","국민","국수","국어","국왕","국적","국제","국회","군대","군사","군인","궁극적","권리","권위","권투","귀국","귀신","규정","규칙","균형","그날","그냥","그늘","그러나","그룹","그릇","그림","그제서야","그토록","극복","극히","근거","근교","근래","근로","근무","근본","근원","근육","근처","글씨","글자","금강산","금고","금년","금메달","금액","금연","금요일","금지","긍정적","기간","기관","기념","기능","기독교","기둥","기록","기름","기법","기본","기분","기쁨","기숙사","기술","기억","기업","기온","기운","기원","기적","기준","기침","기혼","기획","긴급","긴장","길이","김밥","김치","김포공항","깍두기","깜빡","깨달음","깨소금","껍질","꼭대기","꽃잎","나들이","나란히","나머지","나물","나침반","나흘","낙엽","난방","날개","날씨","날짜","남녀","남대문","남매","남산","남자","남편","남학생","낭비","낱말","내년","내용","내일","냄비","냄새","냇물","냉동","냉면","냉방","냉장고","넥타이","넷째","노동","노란색","노력","노인","녹음","녹차","녹화","논리","논문","논쟁","놀이","농구","농담","농민","농부","농업","농장","농촌","높이","눈동자","눈물","눈썹","뉴욕","느낌","늑대","능동적","능력","다방","다양성","다음","다이어트","다행","단계","단골","단독","단맛","단순","단어","단위","단점","단체","단추","단편","단풍","달걀","달러","달력","달리","닭고기","담당","담배","담요","담임","답변","답장","당근","당분간","당연히","당장","대규모","대낮","대단히","대답","대도시","대략","대량","대륙","대문","대부분","대신","대응","대장","대전","대접","대중","대책","대출","대충","대통령","대학","대한민국","대합실","대형","덩어리","데이트","도대체","도덕","도둑","도망","도서관","도심","도움","도입","도자기","도저히","도전","도중","도착","독감","독립","독서","독일","독창적","동화책","뒷모습","뒷산","딸아이","마누라","마늘","마당","마라톤","마련","마무리","마사지","마약","마요네즈","마을","마음","마이크","마중","마지막","마찬가지","마찰","마흔","막걸리","막내","막상","만남","만두","만세","만약","만일","만점","만족","만화","많이","말기","말씀","말투","맘대로","망원경","매년","매달","매력","매번","매스컴","매일","매장","맥주","먹이","먼저","먼지","멀리","메일","며느리","며칠","면담","멸치","명단","명령","명예","명의","명절","명칭","명함","모금","모니터","모델","모든","모범","모습","모양","모임","모조리","모집","모퉁이","목걸이","목록","목사","목소리","목숨","목적","목표","몰래","몸매","몸무게","몸살","몸속","몸짓","몸통","몹시","무관심","무궁화","무더위","무덤","무릎","무슨","무엇","무역","무용","무조건","무지개","무척","문구","문득","문법","문서","문제","문학","문화","물가","물건","물결","물고기","물론","물리학","물음","물질","물체","미국","미디어","미사일","미술","미역","미용실","미움","미인","미팅","미혼","민간","민족","민주","믿음","밀가루","밀리미터","밑바닥","바가지","바구니","바나나","바늘","바닥","바닷가","바람","바이러스","바탕","박물관","박사","박수","반대","반드시","반말","반발","반성","반응","반장","반죽","반지","반찬","받침","발가락","발걸음","발견","발달","발레","발목","발바닥","발생","발음","발자국","발전","발톱","발표","밤하늘","밥그릇","밥맛","밥상","밥솥","방금","방면","방문","방바닥","방법","방송","방식","방안","방울","방지","방학","방해","방향","배경","배꼽","배달","배드민턴","백두산","백색","백성","백인","백제","백화점","버릇","버섯","버튼","번개","번역","번지","번호","벌금","벌레","벌써","범위","범인","범죄","법률","법원","법적","법칙","베이징","벨트","변경","변동","변명","변신","변호사","변화","별도","별명","별일","병실","병아리","병원","보관","보너스","보라색","보람","보름","보상","보안","보자기","보장","보전","보존","보통","보편적","보험","복도","복사","복숭아","복습","볶음","본격적","본래","본부","본사","본성","본인","본질","볼펜","봉사","봉지","봉투","부근","부끄러움","부담","부동산","부문","부분","부산","부상","부엌","부인","부작용","부장","부정","부족","부지런히","부친","부탁","부품","부회장","북부","북한","분노","분량","분리","분명","분석","분야","분위기","분필","분홍색","불고기","불과","불교","불꽃","불만","불법","불빛","불안","불이익","불행","브랜드","비극","비난","비닐","비둘기","비디오","비로소","비만","비명","비밀","비바람","비빔밥","비상","비용","비율","비중","비타민","비판","빌딩","빗물","빗방울","빗줄기","빛깔","빨간색","빨래","빨리","사건","사계절","사나이","사냥","사람","사랑","사립","사모님","사물","사방","사상","사생활","사설","사슴","사실","사업","사용","사월","사장","사전","사진","사촌","사춘기","사탕","사투리","사흘","산길","산부인과","산업","산책","살림","살인","살짝","삼계탕","삼국","삼십","삼월","삼촌","상관","상금","상대","상류","상반기","상상","상식","상업","상인","상자","상점","상처","상추","상태","상표","상품","상황","새벽","색깔","색연필","생각","생명","생물","생방송","생산","생선","생신","생일","생활","서랍","서른","서명","서민","서비스","서양","서울","서적","서점","서쪽","서클","석사","석유","선거","선물","선배","선생","선수","선원","선장","선전","선택","선풍기","설거지","설날","설렁탕","설명","설문","설사","설악산","설치","설탕","섭씨","성공","성당","성명","성별","성인","성장","성적","성질","성함","세금","세미나","세상","세월","세종대왕","세탁","센터","센티미터","셋째","소규모","소극적","소금","소나기","소년","소득","소망","소문","소설","소속","소아과","소용","소원","소음","소중히","소지품","소질","소풍","소형","속담","속도","속옷","손가락","손길","손녀","손님","손등","손목","손뼉","손실","손질","손톱","손해","솔직히","솜씨","송아지","송이","송편","쇠고기","쇼핑","수건","수년","수단","수돗물","수동적","수면","수명","수박","수상","수석","수술","수시로","수업","수염","수영","수입","수준","수집","수출","수컷","수필","수학","수험생","수화기","숙녀","숙소","숙제","순간","순서","순수","순식간","순위","숟가락","술병","술집","숫자","스님","스물","스스로","스승","스웨터","스위치","스케이트","스튜디오","스트레스","스포츠","슬쩍","슬픔","습관","습기","승객","승리","승부","승용차","승진","시각","시간","시골","시금치","시나리오","시댁","시리즈","시멘트","시민","시부모","시선","시설","시스템","시아버지","시어머니","시월","시인","시일","시작","시장","시절","시점","시중","시즌","시집","시청","시합","시험","식구","식기","식당","식량","식료품","식물","식빵","식사","식생활","식초","식탁","식품","신고","신규","신념","신문","신발","신비","신사","신세","신용","신제품","신청","신체","신화","실감","실내","실력","실례","실망","실수","실습","실시","실장","실정","실질적","실천","실체","실컷","실태","실패","실험","실현","심리","심부름","심사","심장","심정","심판","쌍둥이","씨름","씨앗","아가씨","아나운서","아드님","아들","아쉬움","아스팔트","아시아","아울러","아저씨","아줌마","아직","아침","아파트","아프리카","아픔","아홉","아흔","악기","악몽","악수","안개","안경","안과","안내","안녕","안동","안방","안부","안주","알루미늄","알코올","암시","암컷","압력","앞날","앞문","애인","애정","액수","앨범","야간","야단","야옹","약간","약국","약속","약수","약점","약품","약혼녀","양념","양력","양말","양배추","양주","양파","어둠","어려움","어른","어젯밤","어쨌든","어쩌다가","어쩐지","언니","언덕","언론","언어","얼굴","얼른","얼음","얼핏","엄마","업무","업종","업체","엉덩이","엉망","엉터리","엊그제","에너지","에어컨","엔진","여건","여고생","여관","여군","여권","여대생","여덟","여동생","여든","여론","여름","여섯","여성","여왕","여인","여전히","여직원","여학생","여행","역사","역시","역할","연결","연구","연극","연기","연락","연설","연세","연속","연습","연애","연예인","연인","연장","연주","연출","연필","연합","연휴","열기","열매","열쇠","열심히","열정","열차","열흘","염려","엽서","영국","영남","영상","영양","영역","영웅","영원히","영하","영향","영혼","영화","옆구리","옆방","옆집","예감","예금","예방","예산","예상","예선","예술","예습","예식장","예약","예전","예절","예정","예컨대","옛날","오늘","오락","오랫동안","오렌지","오로지","오른발","오븐","오십","오염","오월","오전","오직","오징어","오페라","오피스텔","오히려","옥상","옥수수","온갖","온라인","온몸","온종일","온통","올가을","올림픽","올해","옷차림","와이셔츠","와인","완성","완전","왕비","왕자","왜냐하면","왠지","외갓집","외국","외로움","외삼촌","외출","외침","외할머니","왼발","왼손","왼쪽","요금","요일","요즘","요청","용기","용서","용어","우산","우선","우승","우연히","우정","우체국","우편","운동","운명","운반","운전","운행","울산","울음","움직임","웃어른","웃음","워낙","원고","원래","원서","원숭이","원인","원장","원피스","월급","월드컵","월세","월요일","웨이터","위반","위법","위성","위원","위험","위협","윗사람","유난히","유럽","유명","유물","유산","유적","유치원","유학","유행","유형","육군","육상","육십","육체","은행","음력","음료","음반","음성","음식","음악","음주","의견","의논","의문","의복","의식","의심","의외로","의욕","의원","의학","이것","이곳","이념","이놈","이달","이대로","이동","이렇게","이력서","이론적","이름","이민","이발소","이별","이불","이빨","이상","이성","이슬","이야기","이용","이웃","이월","이윽고","이익","이전","이중","이튿날","이틀","이혼","인간","인격","인공","인구","인근","인기","인도","인류","인물","인생","인쇄","인연","인원","인재","인종","인천","인체","인터넷","인하","인형","일곱","일기","일단","일대","일등","일반","일본","일부","일상","일생","일손","일요일","일월","일정","일종","일주일","일찍","일체","일치","일행","일회용","임금","임무","입대","입력","입맛","입사","입술","입시","입원","입장","입학","자가용","자격","자극","자동","자랑","자부심","자식","자신","자연","자원","자율","자전거","자정","자존심","자판","작가","작년","작성","작업","작용","작은딸","작품","잔디","잔뜩","잔치","잘못","잠깐","잠수함","잠시","잠옷","잠자리","잡지","장관","장군","장기간","장래","장례","장르","장마","장면","장모","장미","장비","장사","장소","장식","장애인","장인","장점","장차","장학금","재능","재빨리","재산","재생","재작년","재정","재채기","재판","재학","재활용","저것","저고리","저곳","저녁","저런","저렇게","저번","저울","저절로","저축","적극","적당히","적성","적용","적응","전개","전공","전기","전달","전라도","전망","전문","전반","전부","전세","전시","전용","전자","전쟁","전주","전철","전체","전통","전혀","전후","절대","절망","절반","절약","절차","점검","점수","점심","점원","점점","점차","접근","접시","접촉","젓가락","정거장","정도","정류장","정리","정말","정면","정문","정반대","정보","정부","정비","정상","정성","정오","정원","정장","정지","정치","정확히","제공","제과점","제대로","제목","제발","제법","제삿날","제안","제일","제작","제주도","제출","제품","제한","조각","조건","조금","조깅","조명","조미료","조상","조선","조용히","조절","조정","조직","존댓말","존재","졸업","졸음","종교","종로","종류","종소리","종업원","종종","종합","좌석","죄인","주관적","주름","주말","주머니","주먹","주문","주민","주방","주변","주식","주인","주일","주장","주전자","주택","준비","줄거리","줄기","줄무늬","중간","중계방송","중국","중년","중단","중독","중반","중부","중세","중소기업","중순","중앙","중요","중학교","즉석","즉시","즐거움","증가","증거","증권","증상","증세","지각","지갑","지경","지극히","지금","지급","지능","지름길","지리산","지방","지붕","지식","지역","지우개","지원","지적","지점","지진","지출","직선","직업","직원","직장","진급","진동","진로","진료","진리","진짜","진찰","진출","진통","진행","질문","질병","질서","짐작","집단","집안","집중","짜증","찌꺼기","차남","차라리","차량","차림","차별","차선","차츰","착각","찬물","찬성","참가","참기름","참새","참석","참여","참외","참조","찻잔","창가","창고","창구","창문","창밖","창작","창조","채널","채점","책가방","책방","책상","책임","챔피언","처벌","처음","천국","천둥","천장","천재","천천히","철도","철저히","철학","첫날","첫째","청년","청바지","청소","청춘","체계","체력","체온","체육","체중","체험","초등학생","초반","초밥","초상화","초순","초여름","초원","초저녁","초점","초청","초콜릿","촛불","총각","총리","총장","촬영","최근","최상","최선","최신","최악","최종","추석","추억","추진","추천","추측","축구","축소","축제","축하","출근","출발","출산","출신","출연","출입","출장","출판","충격","충고","충돌","충분히","충청도","취업","취직","취향","치약","친구","친척","칠십","칠월","칠판","침대","침묵","침실","칫솔","칭찬","카메라","카운터","칼국수","캐릭터","캠퍼스","캠페인","커튼","컨디션","컬러","컴퓨터","코끼리","코미디","콘서트","콜라","콤플렉스","콩나물","쾌감","쿠데타","크림","큰길","큰딸","큰소리","큰아들","큰어머니","큰일","큰절","클래식","클럽","킬로","타입","타자기","탁구","탁자","탄생","태권도","태양","태풍","택시","탤런트","터널","터미널","테니스","테스트","테이블","텔레비전","토론","토마토","토요일","통계","통과","통로","통신","통역","통일","통장","통제","통증","통합","통화","퇴근","퇴원","퇴직금","튀김","트럭","특급","특별","특성","특수","특징","특히","튼튼히","티셔츠","파란색","파일","파출소","판결","판단","판매","판사","팔십","팔월","팝송","패션","팩스","팩시밀리","팬티","퍼센트","페인트","편견","편의","편지","편히","평가","평균","평생","평소","평양","평일","평화","포스터","포인트","포장","포함","표면","표정","표준","표현","품목","품질","풍경","풍속","풍습","프랑스","프린터","플라스틱","피곤","피망","피아노","필름","필수","필요","필자","필통","핑계","하느님","하늘","하드웨어","하룻밤","하반기","하숙집","하순","하여튼","하지만","하천","하품","하필","학과","학교","학급","학기","학년","학력","학번","학부모","학비","학생","학술","학습","학용품","학원","학위","학자","학점","한계","한글","한꺼번에","한낮","한눈","한동안","한때","한라산","한마디","한문","한번","한복","한식","한여름","한쪽","할머니","할아버지","할인","함께","함부로","합격","합리적","항공","항구","항상","항의","해결","해군","해답","해당","해물","해석","해설","해수욕장","해안","핵심","핸드백","햄버거","햇볕","햇살","행동","행복","행사","행운","행위","향기","향상","향수","허락","허용","헬기","현관","현금","현대","현상","현실","현장","현재","현지","혈액","협력","형부","형사","형수","형식","형제","형태","형편","혜택","호기심","호남","호랑이","호박","호텔","호흡","혹시","홀로","홈페이지","홍보","홍수","홍차","화면","화분","화살","화요일","화장","화학","확보","확인","확장","확정","환갑","환경","환영","환율","환자","활기","활동","활발히","활용","활짝","회견","회관","회복","회색","회원","회장","회전","횟수","횡단보도","효율적","후반","후춧가루","훈련","훨씬","휴식","휴일","흉내","흐름","흑백","흑인","흔적","흔히","흥미","흥분","희곡","희망","희생","흰색","힘껏"],qa=["abaisser","abandon","abdiquer","abeille","abolir","aborder","aboutir","aboyer","abrasif","abreuver","abriter","abroger","abrupt","absence","absolu","absurde","abusif","abyssal","académie","acajou","acarien","accabler","accepter","acclamer","accolade","accroche","accuser","acerbe","achat","acheter","aciduler","acier","acompte","acquérir","acronyme","acteur","actif","actuel","adepte","adéquat","adhésif","adjectif","adjuger","admettre","admirer","adopter","adorer","adoucir","adresse","adroit","adulte","adverbe","aérer","aéronef","affaire","affecter","affiche","affreux","affubler","agacer","agencer","agile","agiter","agrafer","agréable","agrume","aider","aiguille","ailier","aimable","aisance","ajouter","ajuster","alarmer","alchimie","alerte","algèbre","algue","aliéner","aliment","alléger","alliage","allouer","allumer","alourdir","alpaga","altesse","alvéole","amateur","ambigu","ambre","aménager","amertume","amidon","amiral","amorcer","amour","amovible","amphibie","ampleur","amusant","analyse","anaphore","anarchie","anatomie","ancien","anéantir","angle","angoisse","anguleux","animal","annexer","annonce","annuel","anodin","anomalie","anonyme","anormal","antenne","antidote","anxieux","apaiser","apéritif","aplanir","apologie","appareil","appeler","apporter","appuyer","aquarium","aqueduc","arbitre","arbuste","ardeur","ardoise","argent","arlequin","armature","armement","armoire","armure","arpenter","arracher","arriver","arroser","arsenic","artériel","article","aspect","asphalte","aspirer","assaut","asservir","assiette","associer","assurer","asticot","astre","astuce","atelier","atome","atrium","atroce","attaque","attentif","attirer","attraper","aubaine","auberge","audace","audible","augurer","aurore","automne","autruche","avaler","avancer","avarice","avenir","averse","aveugle","aviateur","avide","avion","aviser","avoine","avouer","avril","axial","axiome","badge","bafouer","bagage","baguette","baignade","balancer","balcon","baleine","balisage","bambin","bancaire","bandage","banlieue","bannière","banquier","barbier","baril","baron","barque","barrage","bassin","bastion","bataille","bateau","batterie","baudrier","bavarder","belette","bélier","belote","bénéfice","berceau","berger","berline","bermuda","besace","besogne","bétail","beurre","biberon","bicycle","bidule","bijou","bilan","bilingue","billard","binaire","biologie","biopsie","biotype","biscuit","bison","bistouri","bitume","bizarre","blafard","blague","blanchir","blessant","blinder","blond","bloquer","blouson","bobard","bobine","boire","boiser","bolide","bonbon","bondir","bonheur","bonifier","bonus","bordure","borne","botte","boucle","boueux","bougie","boulon","bouquin","bourse","boussole","boutique","boxeur","branche","brasier","brave","brebis","brèche","breuvage","bricoler","brigade","brillant","brioche","brique","brochure","broder","bronzer","brousse","broyeur","brume","brusque","brutal","bruyant","buffle","buisson","bulletin","bureau","burin","bustier","butiner","butoir","buvable","buvette","cabanon","cabine","cachette","cadeau","cadre","caféine","caillou","caisson","calculer","calepin","calibre","calmer","calomnie","calvaire","camarade","caméra","camion","campagne","canal","caneton","canon","cantine","canular","capable","caporal","caprice","capsule","capter","capuche","carabine","carbone","caresser","caribou","carnage","carotte","carreau","carton","cascade","casier","casque","cassure","causer","caution","cavalier","caverne","caviar","cédille","ceinture","céleste","cellule","cendrier","censurer","central","cercle","cérébral","cerise","cerner","cerveau","cesser","chagrin","chaise","chaleur","chambre","chance","chapitre","charbon","chasseur","chaton","chausson","chavirer","chemise","chenille","chéquier","chercher","cheval","chien","chiffre","chignon","chimère","chiot","chlorure","chocolat","choisir","chose","chouette","chrome","chute","cigare","cigogne","cimenter","cinéma","cintrer","circuler","cirer","cirque","citerne","citoyen","citron","civil","clairon","clameur","claquer","classe","clavier","client","cligner","climat","clivage","cloche","clonage","cloporte","cobalt","cobra","cocasse","cocotier","coder","codifier","coffre","cogner","cohésion","coiffer","coincer","colère","colibri","colline","colmater","colonel","combat","comédie","commande","compact","concert","conduire","confier","congeler","connoter","consonne","contact","convexe","copain","copie","corail","corbeau","cordage","corniche","corpus","correct","cortège","cosmique","costume","coton","coude","coupure","courage","couteau","couvrir","coyote","crabe","crainte","cravate","crayon","créature","créditer","crémeux","creuser","crevette","cribler","crier","cristal","critère","croire","croquer","crotale","crucial","cruel","crypter","cubique","cueillir","cuillère","cuisine","cuivre","culminer","cultiver","cumuler","cupide","curatif","curseur","cyanure","cycle","cylindre","cynique","daigner","damier","danger","danseur","dauphin","débattre","débiter","déborder","débrider","débutant","décaler","décembre","déchirer","décider","déclarer","décorer","décrire","décupler","dédale","déductif","déesse","défensif","défiler","défrayer","dégager","dégivrer","déglutir","dégrafer","déjeuner","délice","déloger","demander","demeurer","démolir","dénicher","dénouer","dentelle","dénuder","départ","dépenser","déphaser","déplacer","déposer","déranger","dérober","désastre","descente","désert","désigner","désobéir","dessiner","destrier","détacher","détester","détourer","détresse","devancer","devenir","deviner","devoir","diable","dialogue","diamant","dicter","différer","digérer","digital","digne","diluer","dimanche","diminuer","dioxyde","directif","diriger","discuter","disposer","dissiper","distance","divertir","diviser","docile","docteur","dogme","doigt","domaine","domicile","dompter","donateur","donjon","donner","dopamine","dortoir","dorure","dosage","doseur","dossier","dotation","douanier","double","douceur","douter","doyen","dragon","draper","dresser","dribbler","droiture","duperie","duplexe","durable","durcir","dynastie","éblouir","écarter","écharpe","échelle","éclairer","éclipse","éclore","écluse","école","économie","écorce","écouter","écraser","écrémer","écrivain","écrou","écume","écureuil","édifier","éduquer","effacer","effectif","effigie","effort","effrayer","effusion","égaliser","égarer","éjecter","élaborer","élargir","électron","élégant","éléphant","élève","éligible","élitisme","éloge","élucider","éluder","emballer","embellir","embryon","émeraude","émission","emmener","émotion","émouvoir","empereur","employer","emporter","emprise","émulsion","encadrer","enchère","enclave","encoche","endiguer","endosser","endroit","enduire","énergie","enfance","enfermer","enfouir","engager","engin","englober","énigme","enjamber","enjeu","enlever","ennemi","ennuyeux","enrichir","enrobage","enseigne","entasser","entendre","entier","entourer","entraver","énumérer","envahir","enviable","envoyer","enzyme","éolien","épaissir","épargne","épatant","épaule","épicerie","épidémie","épier","épilogue","épine","épisode","épitaphe","époque","épreuve","éprouver","épuisant","équerre","équipe","ériger","érosion","erreur","éruption","escalier","espadon","espèce","espiègle","espoir","esprit","esquiver","essayer","essence","essieu","essorer","estime","estomac","estrade","étagère","étaler","étanche","étatique","éteindre","étendoir","éternel","éthanol","éthique","ethnie","étirer","étoffer","étoile","étonnant","étourdir","étrange","étroit","étude","euphorie","évaluer","évasion","éventail","évidence","éviter","évolutif","évoquer","exact","exagérer","exaucer","exceller","excitant","exclusif","excuse","exécuter","exemple","exercer","exhaler","exhorter","exigence","exiler","exister","exotique","expédier","explorer","exposer","exprimer","exquis","extensif","extraire","exulter","fable","fabuleux","facette","facile","facture","faiblir","falaise","fameux","famille","farceur","farfelu","farine","farouche","fasciner","fatal","fatigue","faucon","fautif","faveur","favori","fébrile","féconder","fédérer","félin","femme","fémur","fendoir","féodal","fermer","féroce","ferveur","festival","feuille","feutre","février","fiasco","ficeler","fictif","fidèle","figure","filature","filetage","filière","filleul","filmer","filou","filtrer","financer","finir","fiole","firme","fissure","fixer","flairer","flamme","flasque","flatteur","fléau","flèche","fleur","flexion","flocon","flore","fluctuer","fluide","fluvial","folie","fonderie","fongible","fontaine","forcer","forgeron","formuler","fortune","fossile","foudre","fougère","fouiller","foulure","fourmi","fragile","fraise","franchir","frapper","frayeur","frégate","freiner","frelon","frémir","frénésie","frère","friable","friction","frisson","frivole","froid","fromage","frontal","frotter","fruit","fugitif","fuite","fureur","furieux","furtif","fusion","futur","gagner","galaxie","galerie","gambader","garantir","gardien","garnir","garrigue","gazelle","gazon","géant","gélatine","gélule","gendarme","général","génie","genou","gentil","géologie","géomètre","géranium","germe","gestuel","geyser","gibier","gicler","girafe","givre","glace","glaive","glisser","globe","gloire","glorieux","golfeur","gomme","gonfler","gorge","gorille","goudron","gouffre","goulot","goupille","gourmand","goutte","graduel","graffiti","graine","grand","grappin","gratuit","gravir","grenat","griffure","griller","grimper","grogner","gronder","grotte","groupe","gruger","grutier","gruyère","guépard","guerrier","guide","guimauve","guitare","gustatif","gymnaste","gyrostat","habitude","hachoir","halte","hameau","hangar","hanneton","haricot","harmonie","harpon","hasard","hélium","hématome","herbe","hérisson","hermine","héron","hésiter","heureux","hiberner","hibou","hilarant","histoire","hiver","homard","hommage","homogène","honneur","honorer","honteux","horde","horizon","horloge","hormone","horrible","houleux","housse","hublot","huileux","humain","humble","humide","humour","hurler","hydromel","hygiène","hymne","hypnose","idylle","ignorer","iguane","illicite","illusion","image","imbiber","imiter","immense","immobile","immuable","impact","impérial","implorer","imposer","imprimer","imputer","incarner","incendie","incident","incliner","incolore","indexer","indice","inductif","inédit","ineptie","inexact","infini","infliger","informer","infusion","ingérer","inhaler","inhiber","injecter","injure","innocent","inoculer","inonder","inscrire","insecte","insigne","insolite","inspirer","instinct","insulter","intact","intense","intime","intrigue","intuitif","inutile","invasion","inventer","inviter","invoquer","ironique","irradier","irréel","irriter","isoler","ivoire","ivresse","jaguar","jaillir","jambe","janvier","jardin","jauger","jaune","javelot","jetable","jeton","jeudi","jeunesse","joindre","joncher","jongler","joueur","jouissif","journal","jovial","joyau","joyeux","jubiler","jugement","junior","jupon","juriste","justice","juteux","juvénile","kayak","kimono","kiosque","label","labial","labourer","lacérer","lactose","lagune","laine","laisser","laitier","lambeau","lamelle","lampe","lanceur","langage","lanterne","lapin","largeur","larme","laurier","lavabo","lavoir","lecture","légal","léger","légume","lessive","lettre","levier","lexique","lézard","liasse","libérer","libre","licence","licorne","liège","lièvre","ligature","ligoter","ligue","limer","limite","limonade","limpide","linéaire","lingot","lionceau","liquide","lisière","lister","lithium","litige","littoral","livreur","logique","lointain","loisir","lombric","loterie","louer","lourd","loutre","louve","loyal","lubie","lucide","lucratif","lueur","lugubre","luisant","lumière","lunaire","lundi","luron","lutter","luxueux","machine","magasin","magenta","magique","maigre","maillon","maintien","mairie","maison","majorer","malaxer","maléfice","malheur","malice","mallette","mammouth","mandater","maniable","manquant","manteau","manuel","marathon","marbre","marchand","mardi","maritime","marqueur","marron","marteler","mascotte","massif","matériel","matière","matraque","maudire","maussade","mauve","maximal","méchant","méconnu","médaille","médecin","méditer","méduse","meilleur","mélange","mélodie","membre","mémoire","menacer","mener","menhir","mensonge","mentor","mercredi","mérite","merle","messager","mesure","métal","météore","méthode","métier","meuble","miauler","microbe","miette","mignon","migrer","milieu","million","mimique","mince","minéral","minimal","minorer","minute","miracle","miroiter","missile","mixte","mobile","moderne","moelleux","mondial","moniteur","monnaie","monotone","monstre","montagne","monument","moqueur","morceau","morsure","mortier","moteur","motif","mouche","moufle","moulin","mousson","mouton","mouvant","multiple","munition","muraille","murène","murmure","muscle","muséum","musicien","mutation","muter","mutuel","myriade","myrtille","mystère","mythique","nageur","nappe","narquois","narrer","natation","nation","nature","naufrage","nautique","navire","nébuleux","nectar","néfaste","négation","négliger","négocier","neige","nerveux","nettoyer","neurone","neutron","neveu","niche","nickel","nitrate","niveau","noble","nocif","nocturne","noirceur","noisette","nomade","nombreux","nommer","normatif","notable","notifier","notoire","nourrir","nouveau","novateur","novembre","novice","nuage","nuancer","nuire","nuisible","numéro","nuptial","nuque","nutritif","obéir","objectif","obliger","obscur","observer","obstacle","obtenir","obturer","occasion","occuper","océan","octobre","octroyer","octupler","oculaire","odeur","odorant","offenser","officier","offrir","ogive","oiseau","oisillon","olfactif","olivier","ombrage","omettre","onctueux","onduler","onéreux","onirique","opale","opaque","opérer","opinion","opportun","opprimer","opter","optique","orageux","orange","orbite","ordonner","oreille","organe","orgueil","orifice","ornement","orque","ortie","osciller","osmose","ossature","otarie","ouragan","ourson","outil","outrager","ouvrage","ovation","oxyde","oxygène","ozone","paisible","palace","palmarès","palourde","palper","panache","panda","pangolin","paniquer","panneau","panorama","pantalon","papaye","papier","papoter","papyrus","paradoxe","parcelle","paresse","parfumer","parler","parole","parrain","parsemer","partager","parure","parvenir","passion","pastèque","paternel","patience","patron","pavillon","pavoiser","payer","paysage","peigne","peintre","pelage","pélican","pelle","pelouse","peluche","pendule","pénétrer","pénible","pensif","pénurie","pépite","péplum","perdrix","perforer","période","permuter","perplexe","persil","perte","peser","pétale","petit","pétrir","peuple","pharaon","phobie","phoque","photon","phrase","physique","piano","pictural","pièce","pierre","pieuvre","pilote","pinceau","pipette","piquer","pirogue","piscine","piston","pivoter","pixel","pizza","placard","plafond","plaisir","planer","plaque","plastron","plateau","pleurer","plexus","pliage","plomb","plonger","pluie","plumage","pochette","poésie","poète","pointe","poirier","poisson","poivre","polaire","policier","pollen","polygone","pommade","pompier","ponctuel","pondérer","poney","portique","position","posséder","posture","potager","poteau","potion","pouce","poulain","poumon","pourpre","poussin","pouvoir","prairie","pratique","précieux","prédire","préfixe","prélude","prénom","présence","prétexte","prévoir","primitif","prince","prison","priver","problème","procéder","prodige","profond","progrès","proie","projeter","prologue","promener","propre","prospère","protéger","prouesse","proverbe","prudence","pruneau","psychose","public","puceron","puiser","pulpe","pulsar","punaise","punitif","pupitre","purifier","puzzle","pyramide","quasar","querelle","question","quiétude","quitter","quotient","racine","raconter","radieux","ragondin","raideur","raisin","ralentir","rallonge","ramasser","rapide","rasage","ratisser","ravager","ravin","rayonner","réactif","réagir","réaliser","réanimer","recevoir","réciter","réclamer","récolter","recruter","reculer","recycler","rédiger","redouter","refaire","réflexe","réformer","refrain","refuge","régalien","région","réglage","régulier","réitérer","rejeter","rejouer","relatif","relever","relief","remarque","remède","remise","remonter","remplir","remuer","renard","renfort","renifler","renoncer","rentrer","renvoi","replier","reporter","reprise","reptile","requin","réserve","résineux","résoudre","respect","rester","résultat","rétablir","retenir","réticule","retomber","retracer","réunion","réussir","revanche","revivre","révolte","révulsif","richesse","rideau","rieur","rigide","rigoler","rincer","riposter","risible","risque","rituel","rival","rivière","rocheux","romance","rompre","ronce","rondin","roseau","rosier","rotatif","rotor","rotule","rouge","rouille","rouleau","routine","royaume","ruban","rubis","ruche","ruelle","rugueux","ruiner","ruisseau","ruser","rustique","rythme","sabler","saboter","sabre","sacoche","safari","sagesse","saisir","salade","salive","salon","saluer","samedi","sanction","sanglier","sarcasme","sardine","saturer","saugrenu","saumon","sauter","sauvage","savant","savonner","scalpel","scandale","scélérat","scénario","sceptre","schéma","science","scinder","score","scrutin","sculpter","séance","sécable","sécher","secouer","sécréter","sédatif","séduire","seigneur","séjour","sélectif","semaine","sembler","semence","séminal","sénateur","sensible","sentence","séparer","séquence","serein","sergent","sérieux","serrure","sérum","service","sésame","sévir","sevrage","sextuple","sidéral","siècle","siéger","siffler","sigle","signal","silence","silicium","simple","sincère","sinistre","siphon","sirop","sismique","situer","skier","social","socle","sodium","soigneux","soldat","soleil","solitude","soluble","sombre","sommeil","somnoler","sonde","songeur","sonnette","sonore","sorcier","sortir","sosie","sottise","soucieux","soudure","souffle","soulever","soupape","source","soutirer","souvenir","spacieux","spatial","spécial","sphère","spiral","stable","station","sternum","stimulus","stipuler","strict","studieux","stupeur","styliste","sublime","substrat","subtil","subvenir","succès","sucre","suffixe","suggérer","suiveur","sulfate","superbe","supplier","surface","suricate","surmener","surprise","sursaut","survie","suspect","syllabe","symbole","symétrie","synapse","syntaxe","système","tabac","tablier","tactile","tailler","talent","talisman","talonner","tambour","tamiser","tangible","tapis","taquiner","tarder","tarif","tartine","tasse","tatami","tatouage","taupe","taureau","taxer","témoin","temporel","tenaille","tendre","teneur","tenir","tension","terminer","terne","terrible","tétine","texte","thème","théorie","thérapie","thorax","tibia","tiède","timide","tirelire","tiroir","tissu","titane","titre","tituber","toboggan","tolérant","tomate","tonique","tonneau","toponyme","torche","tordre","tornade","torpille","torrent","torse","tortue","totem","toucher","tournage","tousser","toxine","traction","trafic","tragique","trahir","train","trancher","travail","trèfle","tremper","trésor","treuil","triage","tribunal","tricoter","trilogie","triomphe","tripler","triturer","trivial","trombone","tronc","tropical","troupeau","tuile","tulipe","tumulte","tunnel","turbine","tuteur","tutoyer","tuyau","tympan","typhon","typique","tyran","ubuesque","ultime","ultrason","unanime","unifier","union","unique","unitaire","univers","uranium","urbain","urticant","usage","usine","usuel","usure","utile","utopie","vacarme","vaccin","vagabond","vague","vaillant","vaincre","vaisseau","valable","valise","vallon","valve","vampire","vanille","vapeur","varier","vaseux","vassal","vaste","vecteur","vedette","végétal","véhicule","veinard","véloce","vendredi","vénérer","venger","venimeux","ventouse","verdure","vérin","vernir","verrou","verser","vertu","veston","vétéran","vétuste","vexant","vexer","viaduc","viande","victoire","vidange","vidéo","vignette","vigueur","vilain","village","vinaigre","violon","vipère","virement","virtuose","virus","visage","viseur","vision","visqueux","visuel","vital","vitesse","viticole","vitrine","vivace","vivipare","vocation","voguer","voile","voisin","voiture","volaille","volcan","voltiger","volume","vorace","vortex","voter","vouloir","voyage","voyelle","wagon","xénon","yacht","zèbre","zénith","zeste","zoologie"],Oa=["abaco","abbaglio","abbinato","abete","abisso","abolire","abrasivo","abrogato","accadere","accenno","accusato","acetone","achille","acido","acqua","acre","acrilico","acrobata","acuto","adagio","addebito","addome","adeguato","aderire","adipe","adottare","adulare","affabile","affetto","affisso","affranto","aforisma","afoso","africano","agave","agente","agevole","aggancio","agire","agitare","agonismo","agricolo","agrumeto","aguzzo","alabarda","alato","albatro","alberato","albo","albume","alce","alcolico","alettone","alfa","algebra","aliante","alibi","alimento","allagato","allegro","allievo","allodola","allusivo","almeno","alogeno","alpaca","alpestre","altalena","alterno","alticcio","altrove","alunno","alveolo","alzare","amalgama","amanita","amarena","ambito","ambrato","ameba","america","ametista","amico","ammasso","ammenda","ammirare","ammonito","amore","ampio","ampliare","amuleto","anacardo","anagrafe","analista","anarchia","anatra","anca","ancella","ancora","andare","andrea","anello","angelo","angolare","angusto","anima","annegare","annidato","anno","annuncio","anonimo","anticipo","anzi","apatico","apertura","apode","apparire","appetito","appoggio","approdo","appunto","aprile","arabica","arachide","aragosta","araldica","arancio","aratura","arazzo","arbitro","archivio","ardito","arenile","argento","argine","arguto","aria","armonia","arnese","arredato","arringa","arrosto","arsenico","arso","artefice","arzillo","asciutto","ascolto","asepsi","asettico","asfalto","asino","asola","aspirato","aspro","assaggio","asse","assoluto","assurdo","asta","astenuto","astice","astratto","atavico","ateismo","atomico","atono","attesa","attivare","attorno","attrito","attuale","ausilio","austria","autista","autonomo","autunno","avanzato","avere","avvenire","avviso","avvolgere","azione","azoto","azzimo","azzurro","babele","baccano","bacino","baco","badessa","badilata","bagnato","baita","balcone","baldo","balena","ballata","balzano","bambino","bandire","baraonda","barbaro","barca","baritono","barlume","barocco","basilico","basso","batosta","battuto","baule","bava","bavosa","becco","beffa","belgio","belva","benda","benevole","benigno","benzina","bere","berlina","beta","bibita","bici","bidone","bifido","biga","bilancia","bimbo","binocolo","biologo","bipede","bipolare","birbante","birra","biscotto","bisesto","bisnonno","bisonte","bisturi","bizzarro","blando","blatta","bollito","bonifico","bordo","bosco","botanico","bottino","bozzolo","braccio","bradipo","brama","branca","bravura","bretella","brevetto","brezza","briglia","brillante","brindare","broccolo","brodo","bronzina","brullo","bruno","bubbone","buca","budino","buffone","buio","bulbo","buono","burlone","burrasca","bussola","busta","cadetto","caduco","calamaro","calcolo","calesse","calibro","calmo","caloria","cambusa","camerata","camicia","cammino","camola","campale","canapa","candela","cane","canino","canotto","cantina","capace","capello","capitolo","capogiro","cappero","capra","capsula","carapace","carcassa","cardo","carisma","carovana","carretto","cartolina","casaccio","cascata","caserma","caso","cassone","castello","casuale","catasta","catena","catrame","cauto","cavillo","cedibile","cedrata","cefalo","celebre","cellulare","cena","cenone","centesimo","ceramica","cercare","certo","cerume","cervello","cesoia","cespo","ceto","chela","chiaro","chicca","chiedere","chimera","china","chirurgo","chitarra","ciao","ciclismo","cifrare","cigno","cilindro","ciottolo","circa","cirrosi","citrico","cittadino","ciuffo","civetta","civile","classico","clinica","cloro","cocco","codardo","codice","coerente","cognome","collare","colmato","colore","colposo","coltivato","colza","coma","cometa","commando","comodo","computer","comune","conciso","condurre","conferma","congelare","coniuge","connesso","conoscere","consumo","continuo","convegno","coperto","copione","coppia","copricapo","corazza","cordata","coricato","cornice","corolla","corpo","corredo","corsia","cortese","cosmico","costante","cottura","covato","cratere","cravatta","creato","credere","cremoso","crescita","creta","criceto","crinale","crisi","critico","croce","cronaca","crostata","cruciale","crusca","cucire","cuculo","cugino","cullato","cupola","curatore","cursore","curvo","cuscino","custode","dado","daino","dalmata","damerino","daniela","dannoso","danzare","datato","davanti","davvero","debutto","decennio","deciso","declino","decollo","decreto","dedicato","definito","deforme","degno","delegare","delfino","delirio","delta","demenza","denotato","dentro","deposito","derapata","derivare","deroga","descritto","deserto","desiderio","desumere","detersivo","devoto","diametro","dicembre","diedro","difeso","diffuso","digerire","digitale","diluvio","dinamico","dinnanzi","dipinto","diploma","dipolo","diradare","dire","dirotto","dirupo","disagio","discreto","disfare","disgelo","disposto","distanza","disumano","dito","divano","divelto","dividere","divorato","doblone","docente","doganale","dogma","dolce","domato","domenica","dominare","dondolo","dono","dormire","dote","dottore","dovuto","dozzina","drago","druido","dubbio","dubitare","ducale","duna","duomo","duplice","duraturo","ebano","eccesso","ecco","eclissi","economia","edera","edicola","edile","editoria","educare","egemonia","egli","egoismo","egregio","elaborato","elargire","elegante","elencato","eletto","elevare","elfico","elica","elmo","elsa","eluso","emanato","emblema","emesso","emiro","emotivo","emozione","empirico","emulo","endemico","enduro","energia","enfasi","enoteca","entrare","enzima","epatite","epilogo","episodio","epocale","eppure","equatore","erario","erba","erboso","erede","eremita","erigere","ermetico","eroe","erosivo","errante","esagono","esame","esanime","esaudire","esca","esempio","esercito","esibito","esigente","esistere","esito","esofago","esortato","esoso","espanso","espresso","essenza","esso","esteso","estimare","estonia","estroso","esultare","etilico","etnico","etrusco","etto","euclideo","europa","evaso","evidenza","evitato","evoluto","evviva","fabbrica","faccenda","fachiro","falco","famiglia","fanale","fanfara","fango","fantasma","fare","farfalla","farinoso","farmaco","fascia","fastoso","fasullo","faticare","fato","favoloso","febbre","fecola","fede","fegato","felpa","feltro","femmina","fendere","fenomeno","fermento","ferro","fertile","fessura","festivo","fetta","feudo","fiaba","fiducia","fifa","figurato","filo","finanza","finestra","finire","fiore","fiscale","fisico","fiume","flacone","flamenco","flebo","flemma","florido","fluente","fluoro","fobico","focaccia","focoso","foderato","foglio","folata","folclore","folgore","fondente","fonetico","fonia","fontana","forbito","forchetta","foresta","formica","fornaio","foro","fortezza","forzare","fosfato","fosso","fracasso","frana","frassino","fratello","freccetta","frenata","fresco","frigo","frollino","fronde","frugale","frutta","fucilata","fucsia","fuggente","fulmine","fulvo","fumante","fumetto","fumoso","fune","funzione","fuoco","furbo","furgone","furore","fuso","futile","gabbiano","gaffe","galateo","gallina","galoppo","gambero","gamma","garanzia","garbo","garofano","garzone","gasdotto","gasolio","gastrico","gatto","gaudio","gazebo","gazzella","geco","gelatina","gelso","gemello","gemmato","gene","genitore","gennaio","genotipo","gergo","ghepardo","ghiaccio","ghisa","giallo","gilda","ginepro","giocare","gioiello","giorno","giove","girato","girone","gittata","giudizio","giurato","giusto","globulo","glutine","gnomo","gobba","golf","gomito","gommone","gonfio","gonna","governo","gracile","grado","grafico","grammo","grande","grattare","gravoso","grazia","greca","gregge","grifone","grigio","grinza","grotta","gruppo","guadagno","guaio","guanto","guardare","gufo","guidare","ibernato","icona","identico","idillio","idolo","idra","idrico","idrogeno","igiene","ignaro","ignorato","ilare","illeso","illogico","illudere","imballo","imbevuto","imbocco","imbuto","immane","immerso","immolato","impacco","impeto","impiego","importo","impronta","inalare","inarcare","inattivo","incanto","incendio","inchino","incisivo","incluso","incontro","incrocio","incubo","indagine","india","indole","inedito","infatti","infilare","inflitto","ingaggio","ingegno","inglese","ingordo","ingrosso","innesco","inodore","inoltrare","inondato","insano","insetto","insieme","insonnia","insulina","intasato","intero","intonaco","intuito","inumidire","invalido","invece","invito","iperbole","ipnotico","ipotesi","ippica","iride","irlanda","ironico","irrigato","irrorare","isolato","isotopo","isterico","istituto","istrice","italia","iterare","labbro","labirinto","lacca","lacerato","lacrima","lacuna","laddove","lago","lampo","lancetta","lanterna","lardoso","larga","laringe","lastra","latenza","latino","lattuga","lavagna","lavoro","legale","leggero","lembo","lentezza","lenza","leone","lepre","lesivo","lessato","lesto","letterale","leva","levigato","libero","lido","lievito","lilla","limatura","limitare","limpido","lineare","lingua","liquido","lira","lirica","lisca","lite","litigio","livrea","locanda","lode","logica","lombare","londra","longevo","loquace","lorenzo","loto","lotteria","luce","lucidato","lumaca","luminoso","lungo","lupo","luppolo","lusinga","lusso","lutto","macabro","macchina","macero","macinato","madama","magico","maglia","magnete","magro","maiolica","malafede","malgrado","malinteso","malsano","malto","malumore","mana","mancia","mandorla","mangiare","manifesto","mannaro","manovra","mansarda","mantide","manubrio","mappa","maratona","marcire","maretta","marmo","marsupio","maschera","massaia","mastino","materasso","matricola","mattone","maturo","mazurca","meandro","meccanico","mecenate","medesimo","meditare","mega","melassa","melis","melodia","meninge","meno","mensola","mercurio","merenda","merlo","meschino","mese","messere","mestolo","metallo","metodo","mettere","miagolare","mica","micelio","michele","microbo","midollo","miele","migliore","milano","milite","mimosa","minerale","mini","minore","mirino","mirtillo","miscela","missiva","misto","misurare","mitezza","mitigare","mitra","mittente","mnemonico","modello","modifica","modulo","mogano","mogio","mole","molosso","monastero","monco","mondina","monetario","monile","monotono","monsone","montato","monviso","mora","mordere","morsicato","mostro","motivato","motosega","motto","movenza","movimento","mozzo","mucca","mucosa","muffa","mughetto","mugnaio","mulatto","mulinello","multiplo","mummia","munto","muovere","murale","musa","muscolo","musica","mutevole","muto","nababbo","nafta","nanometro","narciso","narice","narrato","nascere","nastrare","naturale","nautica","naviglio","nebulosa","necrosi","negativo","negozio","nemmeno","neofita","neretto","nervo","nessuno","nettuno","neutrale","neve","nevrotico","nicchia","ninfa","nitido","nobile","nocivo","nodo","nome","nomina","nordico","normale","norvegese","nostrano","notare","notizia","notturno","novella","nucleo","nulla","numero","nuovo","nutrire","nuvola","nuziale","oasi","obbedire","obbligo","obelisco","oblio","obolo","obsoleto","occasione","occhio","occidente","occorrere","occultare","ocra","oculato","odierno","odorare","offerta","offrire","offuscato","oggetto","oggi","ognuno","olandese","olfatto","oliato","oliva","ologramma","oltre","omaggio","ombelico","ombra","omega","omissione","ondoso","onere","onice","onnivoro","onorevole","onta","operato","opinione","opposto","oracolo","orafo","ordine","orecchino","orefice","orfano","organico","origine","orizzonte","orma","ormeggio","ornativo","orologio","orrendo","orribile","ortensia","ortica","orzata","orzo","osare","oscurare","osmosi","ospedale","ospite","ossa","ossidare","ostacolo","oste","otite","otre","ottagono","ottimo","ottobre","ovale","ovest","ovino","oviparo","ovocito","ovunque","ovviare","ozio","pacchetto","pace","pacifico","padella","padrone","paese","paga","pagina","palazzina","palesare","pallido","palo","palude","pandoro","pannello","paolo","paonazzo","paprica","parabola","parcella","parere","pargolo","pari","parlato","parola","partire","parvenza","parziale","passivo","pasticca","patacca","patologia","pattume","pavone","peccato","pedalare","pedonale","peggio","peloso","penare","pendice","penisola","pennuto","penombra","pensare","pentola","pepe","pepita","perbene","percorso","perdonato","perforare","pergamena","periodo","permesso","perno","perplesso","persuaso","pertugio","pervaso","pesatore","pesista","peso","pestifero","petalo","pettine","petulante","pezzo","piacere","pianta","piattino","piccino","picozza","piega","pietra","piffero","pigiama","pigolio","pigro","pila","pilifero","pillola","pilota","pimpante","pineta","pinna","pinolo","pioggia","piombo","piramide","piretico","pirite","pirolisi","pitone","pizzico","placebo","planare","plasma","platano","plenario","pochezza","poderoso","podismo","poesia","poggiare","polenta","poligono","pollice","polmonite","polpetta","polso","poltrona","polvere","pomice","pomodoro","ponte","popoloso","porfido","poroso","porpora","porre","portata","posa","positivo","possesso","postulato","potassio","potere","pranzo","prassi","pratica","precluso","predica","prefisso","pregiato","prelievo","premere","prenotare","preparato","presenza","pretesto","prevalso","prima","principe","privato","problema","procura","produrre","profumo","progetto","prolunga","promessa","pronome","proposta","proroga","proteso","prova","prudente","prugna","prurito","psiche","pubblico","pudica","pugilato","pugno","pulce","pulito","pulsante","puntare","pupazzo","pupilla","puro","quadro","qualcosa","quasi","querela","quota","raccolto","raddoppio","radicale","radunato","raffica","ragazzo","ragione","ragno","ramarro","ramingo","ramo","randagio","rantolare","rapato","rapina","rappreso","rasatura","raschiato","rasente","rassegna","rastrello","rata","ravveduto","reale","recepire","recinto","recluta","recondito","recupero","reddito","redimere","regalato","registro","regola","regresso","relazione","remare","remoto","renna","replica","reprimere","reputare","resa","residente","responso","restauro","rete","retina","retorica","rettifica","revocato","riassunto","ribadire","ribelle","ribrezzo","ricarica","ricco","ricevere","riciclato","ricordo","ricreduto","ridicolo","ridurre","rifasare","riflesso","riforma","rifugio","rigare","rigettato","righello","rilassato","rilevato","rimanere","rimbalzo","rimedio","rimorchio","rinascita","rincaro","rinforzo","rinnovo","rinomato","rinsavito","rintocco","rinuncia","rinvenire","riparato","ripetuto","ripieno","riportare","ripresa","ripulire","risata","rischio","riserva","risibile","riso","rispetto","ristoro","risultato","risvolto","ritardo","ritegno","ritmico","ritrovo","riunione","riva","riverso","rivincita","rivolto","rizoma","roba","robotico","robusto","roccia","roco","rodaggio","rodere","roditore","rogito","rollio","romantico","rompere","ronzio","rosolare","rospo","rotante","rotondo","rotula","rovescio","rubizzo","rubrica","ruga","rullino","rumine","rumoroso","ruolo","rupe","russare","rustico","sabato","sabbiare","sabotato","sagoma","salasso","saldatura","salgemma","salivare","salmone","salone","saltare","saluto","salvo","sapere","sapido","saporito","saraceno","sarcasmo","sarto","sassoso","satellite","satira","satollo","saturno","savana","savio","saziato","sbadiglio","sbalzo","sbancato","sbarra","sbattere","sbavare","sbendare","sbirciare","sbloccato","sbocciato","sbrinare","sbruffone","sbuffare","scabroso","scadenza","scala","scambiare","scandalo","scapola","scarso","scatenare","scavato","scelto","scenico","scettro","scheda","schiena","sciarpa","scienza","scindere","scippo","sciroppo","scivolo","sclerare","scodella","scolpito","scomparto","sconforto","scoprire","scorta","scossone","scozzese","scriba","scrollare","scrutinio","scuderia","scultore","scuola","scuro","scusare","sdebitare","sdoganare","seccatura","secondo","sedano","seggiola","segnalato","segregato","seguito","selciato","selettivo","sella","selvaggio","semaforo","sembrare","seme","seminato","sempre","senso","sentire","sepolto","sequenza","serata","serbato","sereno","serio","serpente","serraglio","servire","sestina","setola","settimana","sfacelo","sfaldare","sfamato","sfarzoso","sfaticato","sfera","sfida","sfilato","sfinge","sfocato","sfoderare","sfogo","sfoltire","sforzato","sfratto","sfruttato","sfuggito","sfumare","sfuso","sgabello","sgarbato","sgonfiare","sgorbio","sgrassato","sguardo","sibilo","siccome","sierra","sigla","signore","silenzio","sillaba","simbolo","simpatico","simulato","sinfonia","singolo","sinistro","sino","sintesi","sinusoide","sipario","sisma","sistole","situato","slitta","slogatura","sloveno","smarrito","smemorato","smentito","smeraldo","smilzo","smontare","smottato","smussato","snellire","snervato","snodo","sobbalzo","sobrio","soccorso","sociale","sodale","soffitto","sogno","soldato","solenne","solido","sollazzo","solo","solubile","solvente","somatico","somma","sonda","sonetto","sonnifero","sopire","soppeso","sopra","sorgere","sorpasso","sorriso","sorso","sorteggio","sorvolato","sospiro","sosta","sottile","spada","spalla","spargere","spatola","spavento","spazzola","specie","spedire","spegnere","spelatura","speranza","spessore","spettrale","spezzato","spia","spigoloso","spillato","spinoso","spirale","splendido","sportivo","sposo","spranga","sprecare","spronato","spruzzo","spuntino","squillo","sradicare","srotolato","stabile","stacco","staffa","stagnare","stampato","stantio","starnuto","stasera","statuto","stelo","steppa","sterzo","stiletto","stima","stirpe","stivale","stizzoso","stonato","storico","strappo","stregato","stridulo","strozzare","strutto","stuccare","stufo","stupendo","subentro","succoso","sudore","suggerito","sugo","sultano","suonare","superbo","supporto","surgelato","surrogato","sussurro","sutura","svagare","svedese","sveglio","svelare","svenuto","svezia","sviluppo","svista","svizzera","svolta","svuotare","tabacco","tabulato","tacciare","taciturno","tale","talismano","tampone","tannino","tara","tardivo","targato","tariffa","tarpare","tartaruga","tasto","tattico","taverna","tavolata","tazza","teca","tecnico","telefono","temerario","tempo","temuto","tendone","tenero","tensione","tentacolo","teorema","terme","terrazzo","terzetto","tesi","tesserato","testato","tetro","tettoia","tifare","tigella","timbro","tinto","tipico","tipografo","tiraggio","tiro","titanio","titolo","titubante","tizio","tizzone","toccare","tollerare","tolto","tombola","tomo","tonfo","tonsilla","topazio","topologia","toppa","torba","tornare","torrone","tortora","toscano","tossire","tostatura","totano","trabocco","trachea","trafila","tragedia","tralcio","tramonto","transito","trapano","trarre","trasloco","trattato","trave","treccia","tremolio","trespolo","tributo","tricheco","trifoglio","trillo","trincea","trio","tristezza","triturato","trivella","tromba","trono","troppo","trottola","trovare","truccato","tubatura","tuffato","tulipano","tumulto","tunisia","turbare","turchino","tuta","tutela","ubicato","uccello","uccisore","udire","uditivo","uffa","ufficio","uguale","ulisse","ultimato","umano","umile","umorismo","uncinetto","ungere","ungherese","unicorno","unificato","unisono","unitario","unte","uovo","upupa","uragano","urgenza","urlo","usanza","usato","uscito","usignolo","usuraio","utensile","utilizzo","utopia","vacante","vaccinato","vagabondo","vagliato","valanga","valgo","valico","valletta","valoroso","valutare","valvola","vampata","vangare","vanitoso","vano","vantaggio","vanvera","vapore","varano","varcato","variante","vasca","vedetta","vedova","veduto","vegetale","veicolo","velcro","velina","velluto","veloce","venato","vendemmia","vento","verace","verbale","vergogna","verifica","vero","verruca","verticale","vescica","vessillo","vestale","veterano","vetrina","vetusto","viandante","vibrante","vicenda","vichingo","vicinanza","vidimare","vigilia","vigneto","vigore","vile","villano","vimini","vincitore","viola","vipera","virgola","virologo","virulento","viscoso","visione","vispo","vissuto","visura","vita","vitello","vittima","vivanda","vivido","viziare","voce","voga","volatile","volere","volpe","voragine","vulcano","zampogna","zanna","zappato","zattera","zavorra","zefiro","zelante","zelo","zenzero","zerbino","zibetto","zinco","zircone","zitto","zolla","zotico","zucchero","zufolo","zulu","zuppa"],La=["ábaco","abdomen","abeja","abierto","abogado","abono","aborto","abrazo","abrir","abuelo","abuso","acabar","academia","acceso","acción","aceite","acelga","acento","aceptar","ácido","aclarar","acné","acoger","acoso","activo","acto","actriz","actuar","acudir","acuerdo","acusar","adicto","admitir","adoptar","adorno","aduana","adulto","aéreo","afectar","afición","afinar","afirmar","ágil","agitar","agonía","agosto","agotar","agregar","agrio","agua","agudo","águila","aguja","ahogo","ahorro","aire","aislar","ajedrez","ajeno","ajuste","alacrán","alambre","alarma","alba","álbum","alcalde","aldea","alegre","alejar","alerta","aleta","alfiler","alga","algodón","aliado","aliento","alivio","alma","almeja","almíbar","altar","alteza","altivo","alto","altura","alumno","alzar","amable","amante","amapola","amargo","amasar","ámbar","ámbito","ameno","amigo","amistad","amor","amparo","amplio","ancho","anciano","ancla","andar","andén","anemia","ángulo","anillo","ánimo","anís","anotar","antena","antiguo","antojo","anual","anular","anuncio","añadir","añejo","año","apagar","aparato","apetito","apio","aplicar","apodo","aporte","apoyo","aprender","aprobar","apuesta","apuro","arado","araña","arar","árbitro","árbol","arbusto","archivo","arco","arder","ardilla","arduo","área","árido","aries","armonía","arnés","aroma","arpa","arpón","arreglo","arroz","arruga","arte","artista","asa","asado","asalto","ascenso","asegurar","aseo","asesor","asiento","asilo","asistir","asno","asombro","áspero","astilla","astro","astuto","asumir","asunto","atajo","ataque","atar","atento","ateo","ático","atleta","átomo","atraer","atroz","atún","audaz","audio","auge","aula","aumento","ausente","autor","aval","avance","avaro","ave","avellana","avena","avestruz","avión","aviso","ayer","ayuda","ayuno","azafrán","azar","azote","azúcar","azufre","azul","baba","babor","bache","bahía","baile","bajar","balanza","balcón","balde","bambú","banco","banda","baño","barba","barco","barniz","barro","báscula","bastón","basura","batalla","batería","batir","batuta","baúl","bazar","bebé","bebida","bello","besar","beso","bestia","bicho","bien","bingo","blanco","bloque","blusa","boa","bobina","bobo","boca","bocina","boda","bodega","boina","bola","bolero","bolsa","bomba","bondad","bonito","bono","bonsái","borde","borrar","bosque","bote","botín","bóveda","bozal","bravo","brazo","brecha","breve","brillo","brinco","brisa","broca","broma","bronce","brote","bruja","brusco","bruto","buceo","bucle","bueno","buey","bufanda","bufón","búho","buitre","bulto","burbuja","burla","burro","buscar","butaca","buzón","caballo","cabeza","cabina","cabra","cacao","cadáver","cadena","caer","café","caída","caimán","caja","cajón","cal","calamar","calcio","caldo","calidad","calle","calma","calor","calvo","cama","cambio","camello","camino","campo","cáncer","candil","canela","canguro","canica","canto","caña","cañón","caoba","caos","capaz","capitán","capote","captar","capucha","cara","carbón","cárcel","careta","carga","cariño","carne","carpeta","carro","carta","casa","casco","casero","caspa","castor","catorce","catre","caudal","causa","cazo","cebolla","ceder","cedro","celda","célebre","celoso","célula","cemento","ceniza","centro","cerca","cerdo","cereza","cero","cerrar","certeza","césped","cetro","chacal","chaleco","champú","chancla","chapa","charla","chico","chiste","chivo","choque","choza","chuleta","chupar","ciclón","ciego","cielo","cien","cierto","cifra","cigarro","cima","cinco","cine","cinta","ciprés","circo","ciruela","cisne","cita","ciudad","clamor","clan","claro","clase","clave","cliente","clima","clínica","cobre","cocción","cochino","cocina","coco","código","codo","cofre","coger","cohete","cojín","cojo","cola","colcha","colegio","colgar","colina","collar","colmo","columna","combate","comer","comida","cómodo","compra","conde","conejo","conga","conocer","consejo","contar","copa","copia","corazón","corbata","corcho","cordón","corona","correr","coser","cosmos","costa","cráneo","cráter","crear","crecer","creído","crema","cría","crimen","cripta","crisis","cromo","crónica","croqueta","crudo","cruz","cuadro","cuarto","cuatro","cubo","cubrir","cuchara","cuello","cuento","cuerda","cuesta","cueva","cuidar","culebra","culpa","culto","cumbre","cumplir","cuna","cuneta","cuota","cupón","cúpula","curar","curioso","curso","curva","cutis","dama","danza","dar","dardo","dátil","deber","débil","década","decir","dedo","defensa","definir","dejar","delfín","delgado","delito","demora","denso","dental","deporte","derecho","derrota","desayuno","deseo","desfile","desnudo","destino","desvío","detalle","detener","deuda","día","diablo","diadema","diamante","diana","diario","dibujo","dictar","diente","dieta","diez","difícil","digno","dilema","diluir","dinero","directo","dirigir","disco","diseño","disfraz","diva","divino","doble","doce","dolor","domingo","don","donar","dorado","dormir","dorso","dos","dosis","dragón","droga","ducha","duda","duelo","dueño","dulce","dúo","duque","durar","dureza","duro","ébano","ebrio","echar","eco","ecuador","edad","edición","edificio","editor","educar","efecto","eficaz","eje","ejemplo","elefante","elegir","elemento","elevar","elipse","élite","elixir","elogio","eludir","embudo","emitir","emoción","empate","empeño","empleo","empresa","enano","encargo","enchufe","encía","enemigo","enero","enfado","enfermo","engaño","enigma","enlace","enorme","enredo","ensayo","enseñar","entero","entrar","envase","envío","época","equipo","erizo","escala","escena","escolar","escribir","escudo","esencia","esfera","esfuerzo","espada","espejo","espía","esposa","espuma","esquí","estar","este","estilo","estufa","etapa","eterno","ética","etnia","evadir","evaluar","evento","evitar","exacto","examen","exceso","excusa","exento","exigir","exilio","existir","éxito","experto","explicar","exponer","extremo","fábrica","fábula","fachada","fácil","factor","faena","faja","falda","fallo","falso","faltar","fama","familia","famoso","faraón","farmacia","farol","farsa","fase","fatiga","fauna","favor","fax","febrero","fecha","feliz","feo","feria","feroz","fértil","fervor","festín","fiable","fianza","fiar","fibra","ficción","ficha","fideo","fiebre","fiel","fiera","fiesta","figura","fijar","fijo","fila","filete","filial","filtro","fin","finca","fingir","finito","firma","flaco","flauta","flecha","flor","flota","fluir","flujo","flúor","fobia","foca","fogata","fogón","folio","folleto","fondo","forma","forro","fortuna","forzar","fosa","foto","fracaso","frágil","franja","frase","fraude","freír","freno","fresa","frío","frito","fruta","fuego","fuente","fuerza","fuga","fumar","función","funda","furgón","furia","fusil","fútbol","futuro","gacela","gafas","gaita","gajo","gala","galería","gallo","gamba","ganar","gancho","ganga","ganso","garaje","garza","gasolina","gastar","gato","gavilán","gemelo","gemir","gen","género","genio","gente","geranio","gerente","germen","gesto","gigante","gimnasio","girar","giro","glaciar","globo","gloria","gol","golfo","goloso","golpe","goma","gordo","gorila","gorra","gota","goteo","gozar","grada","gráfico","grano","grasa","gratis","grave","grieta","grillo","gripe","gris","grito","grosor","grúa","grueso","grumo","grupo","guante","guapo","guardia","guerra","guía","guiño","guion","guiso","guitarra","gusano","gustar","haber","hábil","hablar","hacer","hacha","hada","hallar","hamaca","harina","haz","hazaña","hebilla","hebra","hecho","helado","helio","hembra","herir","hermano","héroe","hervir","hielo","hierro","hígado","higiene","hijo","himno","historia","hocico","hogar","hoguera","hoja","hombre","hongo","honor","honra","hora","hormiga","horno","hostil","hoyo","hueco","huelga","huerta","hueso","huevo","huida","huir","humano","húmedo","humilde","humo","hundir","huracán","hurto","icono","ideal","idioma","ídolo","iglesia","iglú","igual","ilegal","ilusión","imagen","imán","imitar","impar","imperio","imponer","impulso","incapaz","índice","inerte","infiel","informe","ingenio","inicio","inmenso","inmune","innato","insecto","instante","interés","íntimo","intuir","inútil","invierno","ira","iris","ironía","isla","islote","jabalí","jabón","jamón","jarabe","jardín","jarra","jaula","jazmín","jefe","jeringa","jinete","jornada","joroba","joven","joya","juerga","jueves","juez","jugador","jugo","juguete","juicio","junco","jungla","junio","juntar","júpiter","jurar","justo","juvenil","juzgar","kilo","koala","labio","lacio","lacra","lado","ladrón","lagarto","lágrima","laguna","laico","lamer","lámina","lámpara","lana","lancha","langosta","lanza","lápiz","largo","larva","lástima","lata","látex","latir","laurel","lavar","lazo","leal","lección","leche","lector","leer","legión","legumbre","lejano","lengua","lento","leña","león","leopardo","lesión","letal","letra","leve","leyenda","libertad","libro","licor","líder","lidiar","lienzo","liga","ligero","lima","límite","limón","limpio","lince","lindo","línea","lingote","lino","linterna","líquido","liso","lista","litera","litio","litro","llaga","llama","llanto","llave","llegar","llenar","llevar","llorar","llover","lluvia","lobo","loción","loco","locura","lógica","logro","lombriz","lomo","lonja","lote","lucha","lucir","lugar","lujo","luna","lunes","lupa","lustro","luto","luz","maceta","macho","madera","madre","maduro","maestro","mafia","magia","mago","maíz","maldad","maleta","malla","malo","mamá","mambo","mamut","manco","mando","manejar","manga","maniquí","manjar","mano","manso","manta","mañana","mapa","máquina","mar","marco","marea","marfil","margen","marido","mármol","marrón","martes","marzo","masa","máscara","masivo","matar","materia","matiz","matriz","máximo","mayor","mazorca","mecha","medalla","medio","médula","mejilla","mejor","melena","melón","memoria","menor","mensaje","mente","menú","mercado","merengue","mérito","mes","mesón","meta","meter","método","metro","mezcla","miedo","miel","miembro","miga","mil","milagro","militar","millón","mimo","mina","minero","mínimo","minuto","miope","mirar","misa","miseria","misil","mismo","mitad","mito","mochila","moción","moda","modelo","moho","mojar","molde","moler","molino","momento","momia","monarca","moneda","monja","monto","moño","morada","morder","moreno","morir","morro","morsa","mortal","mosca","mostrar","motivo","mover","móvil","mozo","mucho","mudar","mueble","muela","muerte","muestra","mugre","mujer","mula","muleta","multa","mundo","muñeca","mural","muro","músculo","museo","musgo","música","muslo","nácar","nación","nadar","naipe","naranja","nariz","narrar","nasal","natal","nativo","natural","náusea","naval","nave","navidad","necio","néctar","negar","negocio","negro","neón","nervio","neto","neutro","nevar","nevera","nicho","nido","niebla","nieto","niñez","niño","nítido","nivel","nobleza","noche","nómina","noria","norma","norte","nota","noticia","novato","novela","novio","nube","nuca","núcleo","nudillo","nudo","nuera","nueve","nuez","nulo","número","nutria","oasis","obeso","obispo","objeto","obra","obrero","observar","obtener","obvio","oca","ocaso","océano","ochenta","ocho","ocio","ocre","octavo","octubre","oculto","ocupar","ocurrir","odiar","odio","odisea","oeste","ofensa","oferta","oficio","ofrecer","ogro","oído","oír","ojo","ola","oleada","olfato","olivo","olla","olmo","olor","olvido","ombligo","onda","onza","opaco","opción","ópera","opinar","oponer","optar","óptica","opuesto","oración","orador","oral","órbita","orca","orden","oreja","órgano","orgía","orgullo","oriente","origen","orilla","oro","orquesta","oruga","osadía","oscuro","osezno","oso","ostra","otoño","otro","oveja","óvulo","óxido","oxígeno","oyente","ozono","pacto","padre","paella","página","pago","país","pájaro","palabra","palco","paleta","pálido","palma","paloma","palpar","pan","panal","pánico","pantera","pañuelo","papá","papel","papilla","paquete","parar","parcela","pared","parir","paro","párpado","parque","párrafo","parte","pasar","paseo","pasión","paso","pasta","pata","patio","patria","pausa","pauta","pavo","payaso","peatón","pecado","pecera","pecho","pedal","pedir","pegar","peine","pelar","peldaño","pelea","peligro","pellejo","pelo","peluca","pena","pensar","peñón","peón","peor","pepino","pequeño","pera","percha","perder","pereza","perfil","perico","perla","permiso","perro","persona","pesa","pesca","pésimo","pestaña","pétalo","petróleo","pez","pezuña","picar","pichón","pie","piedra","pierna","pieza","pijama","pilar","piloto","pimienta","pino","pintor","pinza","piña","piojo","pipa","pirata","pisar","piscina","piso","pista","pitón","pizca","placa","plan","plata","playa","plaza","pleito","pleno","plomo","pluma","plural","pobre","poco","poder","podio","poema","poesía","poeta","polen","policía","pollo","polvo","pomada","pomelo","pomo","pompa","poner","porción","portal","posada","poseer","posible","poste","potencia","potro","pozo","prado","precoz","pregunta","premio","prensa","preso","previo","primo","príncipe","prisión","privar","proa","probar","proceso","producto","proeza","profesor","programa","prole","promesa","pronto","propio","próximo","prueba","público","puchero","pudor","pueblo","puerta","puesto","pulga","pulir","pulmón","pulpo","pulso","puma","punto","puñal","puño","pupa","pupila","puré","quedar","queja","quemar","querer","queso","quieto","química","quince","quitar","rábano","rabia","rabo","ración","radical","raíz","rama","rampa","rancho","rango","rapaz","rápido","rapto","rasgo","raspa","rato","rayo","raza","razón","reacción","realidad","rebaño","rebote","recaer","receta","rechazo","recoger","recreo","recto","recurso","red","redondo","reducir","reflejo","reforma","refrán","refugio","regalo","regir","regla","regreso","rehén","reino","reír","reja","relato","relevo","relieve","relleno","reloj","remar","remedio","remo","rencor","rendir","renta","reparto","repetir","reposo","reptil","res","rescate","resina","respeto","resto","resumen","retiro","retorno","retrato","reunir","revés","revista","rey","rezar","rico","riego","rienda","riesgo","rifa","rígido","rigor","rincón","riñón","río","riqueza","risa","ritmo","rito","rizo","roble","roce","rociar","rodar","rodeo","rodilla","roer","rojizo","rojo","romero","romper","ron","ronco","ronda","ropa","ropero","rosa","rosca","rostro","rotar","rubí","rubor","rudo","rueda","rugir","ruido","ruina","ruleta","rulo","rumbo","rumor","ruptura","ruta","rutina","sábado","saber","sabio","sable","sacar","sagaz","sagrado","sala","saldo","salero","salir","salmón","salón","salsa","salto","salud","salvar","samba","sanción","sandía","sanear","sangre","sanidad","sano","santo","sapo","saque","sardina","sartén","sastre","satán","sauna","saxofón","sección","seco","secreto","secta","sed","seguir","seis","sello","selva","semana","semilla","senda","sensor","señal","señor","separar","sepia","sequía","ser","serie","sermón","servir","sesenta","sesión","seta","setenta","severo","sexo","sexto","sidra","siesta","siete","siglo","signo","sílaba","silbar","silencio","silla","símbolo","simio","sirena","sistema","sitio","situar","sobre","socio","sodio","sol","solapa","soldado","soledad","sólido","soltar","solución","sombra","sondeo","sonido","sonoro","sonrisa","sopa","soplar","soporte","sordo","sorpresa","sorteo","sostén","sótano","suave","subir","suceso","sudor","suegra","suelo","sueño","suerte","sufrir","sujeto","sultán","sumar","superar","suplir","suponer","supremo","sur","surco","sureño","surgir","susto","sutil","tabaco","tabique","tabla","tabú","taco","tacto","tajo","talar","talco","talento","talla","talón","tamaño","tambor","tango","tanque","tapa","tapete","tapia","tapón","taquilla","tarde","tarea","tarifa","tarjeta","tarot","tarro","tarta","tatuaje","tauro","taza","tazón","teatro","techo","tecla","técnica","tejado","tejer","tejido","tela","teléfono","tema","temor","templo","tenaz","tender","tener","tenis","tenso","teoría","terapia","terco","término","ternura","terror","tesis","tesoro","testigo","tetera","texto","tez","tibio","tiburón","tiempo","tienda","tierra","tieso","tigre","tijera","tilde","timbre","tímido","timo","tinta","tío","típico","tipo","tira","tirón","titán","títere","título","tiza","toalla","tobillo","tocar","tocino","todo","toga","toldo","tomar","tono","tonto","topar","tope","toque","tórax","torero","tormenta","torneo","toro","torpedo","torre","torso","tortuga","tos","tosco","toser","tóxico","trabajo","tractor","traer","tráfico","trago","traje","tramo","trance","trato","trauma","trazar","trébol","tregua","treinta","tren","trepar","tres","tribu","trigo","tripa","triste","triunfo","trofeo","trompa","tronco","tropa","trote","trozo","truco","trueno","trufa","tubería","tubo","tuerto","tumba","tumor","túnel","túnica","turbina","turismo","turno","tutor","ubicar","úlcera","umbral","unidad","unir","universo","uno","untar","uña","urbano","urbe","urgente","urna","usar","usuario","útil","utopía","uva","vaca","vacío","vacuna","vagar","vago","vaina","vajilla","vale","válido","valle","valor","válvula","vampiro","vara","variar","varón","vaso","vecino","vector","vehículo","veinte","vejez","vela","velero","veloz","vena","vencer","venda","veneno","vengar","venir","venta","venus","ver","verano","verbo","verde","vereda","verja","verso","verter","vía","viaje","vibrar","vicio","víctima","vida","vídeo","vidrio","viejo","viernes","vigor","vil","villa","vinagre","vino","viñedo","violín","viral","virgo","virtud","visor","víspera","vista","vitamina","viudo","vivaz","vivero","vivir","vivo","volcán","volumen","volver","voraz","votar","voto","voz","vuelo","vulgar","yacer","yate","yegua","yema","yerno","yeso","yodo","yoga","yogur","zafiro","zanja","zapato","zarza","zona","zorro","zumo","zurdo"],ja=["あいこくしん","あいさつ","あいだ","あおぞら","あかちゃん","あきる","あけがた","あける","あこがれる","あさい","あさひ","あしあと","あじわう","あずかる","あずき","あそぶ","あたえる","あたためる","あたりまえ","あたる","あつい","あつかう","あっしゅく","あつまり","あつめる","あてな","あてはまる","あひる","あぶら","あぶる","あふれる","あまい","あまど","あまやかす","あまり","あみもの","あめりか","あやまる","あゆむ","あらいぐま","あらし","あらすじ","あらためる","あらゆる","あらわす","ありがとう","あわせる","あわてる","あんい","あんがい","あんこ","あんぜん","あんてい","あんない","あんまり","いいだす","いおん","いがい","いがく","いきおい","いきなり","いきもの","いきる","いくじ","いくぶん","いけばな","いけん","いこう","いこく","いこつ","いさましい","いさん","いしき","いじゅう","いじょう","いじわる","いずみ","いずれ","いせい","いせえび","いせかい","いせき","いぜん","いそうろう","いそがしい","いだい","いだく","いたずら","いたみ","いたりあ","いちおう","いちじ","いちど","いちば","いちぶ","いちりゅう","いつか","いっしゅん","いっせい","いっそう","いったん","いっち","いってい","いっぽう","いてざ","いてん","いどう","いとこ","いない","いなか","いねむり","いのち","いのる","いはつ","いばる","いはん","いびき","いひん","いふく","いへん","いほう","いみん","いもうと","いもたれ","いもり","いやがる","いやす","いよかん","いよく","いらい","いらすと","いりぐち","いりょう","いれい","いれもの","いれる","いろえんぴつ","いわい","いわう","いわかん","いわば","いわゆる","いんげんまめ","いんさつ","いんしょう","いんよう","うえき","うえる","うおざ","うがい","うかぶ","うかべる","うきわ","うくらいな","うくれれ","うけたまわる","うけつけ","うけとる","うけもつ","うける","うごかす","うごく","うこん","うさぎ","うしなう","うしろがみ","うすい","うすぎ","うすぐらい","うすめる","うせつ","うちあわせ","うちがわ","うちき","うちゅう","うっかり","うつくしい","うったえる","うつる","うどん","うなぎ","うなじ","うなずく","うなる","うねる","うのう","うぶげ","うぶごえ","うまれる","うめる","うもう","うやまう","うよく","うらがえす","うらぐち","うらない","うりあげ","うりきれ","うるさい","うれしい","うれゆき","うれる","うろこ","うわき","うわさ","うんこう","うんちん","うんてん","うんどう","えいえん","えいが","えいきょう","えいご","えいせい","えいぶん","えいよう","えいわ","えおり","えがお","えがく","えきたい","えくせる","えしゃく","えすて","えつらん","えのぐ","えほうまき","えほん","えまき","えもじ","えもの","えらい","えらぶ","えりあ","えんえん","えんかい","えんぎ","えんげき","えんしゅう","えんぜつ","えんそく","えんちょう","えんとつ","おいかける","おいこす","おいしい","おいつく","おうえん","おうさま","おうじ","おうせつ","おうたい","おうふく","おうべい","おうよう","おえる","おおい","おおう","おおどおり","おおや","おおよそ","おかえり","おかず","おがむ","おかわり","おぎなう","おきる","おくさま","おくじょう","おくりがな","おくる","おくれる","おこす","おこなう","おこる","おさえる","おさない","おさめる","おしいれ","おしえる","おじぎ","おじさん","おしゃれ","おそらく","おそわる","おたがい","おたく","おだやか","おちつく","おっと","おつり","おでかけ","おとしもの","おとなしい","おどり","おどろかす","おばさん","おまいり","おめでとう","おもいで","おもう","おもたい","おもちゃ","おやつ","おやゆび","およぼす","おらんだ","おろす","おんがく","おんけい","おんしゃ","おんせん","おんだん","おんちゅう","おんどけい","かあつ","かいが","がいき","がいけん","がいこう","かいさつ","かいしゃ","かいすいよく","かいぜん","かいぞうど","かいつう","かいてん","かいとう","かいふく","がいへき","かいほう","かいよう","がいらい","かいわ","かえる","かおり","かかえる","かがく","かがし","かがみ","かくご","かくとく","かざる","がぞう","かたい","かたち","がちょう","がっきゅう","がっこう","がっさん","がっしょう","かなざわし","かのう","がはく","かぶか","かほう","かほご","かまう","かまぼこ","かめれおん","かゆい","かようび","からい","かるい","かろう","かわく","かわら","がんか","かんけい","かんこう","かんしゃ","かんそう","かんたん","かんち","がんばる","きあい","きあつ","きいろ","ぎいん","きうい","きうん","きえる","きおう","きおく","きおち","きおん","きかい","きかく","きかんしゃ","ききて","きくばり","きくらげ","きけんせい","きこう","きこえる","きこく","きさい","きさく","きさま","きさらぎ","ぎじかがく","ぎしき","ぎじたいけん","ぎじにってい","ぎじゅつしゃ","きすう","きせい","きせき","きせつ","きそう","きぞく","きぞん","きたえる","きちょう","きつえん","ぎっちり","きつつき","きつね","きてい","きどう","きどく","きない","きなが","きなこ","きぬごし","きねん","きのう","きのした","きはく","きびしい","きひん","きふく","きぶん","きぼう","きほん","きまる","きみつ","きむずかしい","きめる","きもだめし","きもち","きもの","きゃく","きやく","ぎゅうにく","きよう","きょうりゅう","きらい","きらく","きりん","きれい","きれつ","きろく","ぎろん","きわめる","ぎんいろ","きんかくじ","きんじょ","きんようび","ぐあい","くいず","くうかん","くうき","くうぐん","くうこう","ぐうせい","くうそう","ぐうたら","くうふく","くうぼ","くかん","くきょう","くげん","ぐこう","くさい","くさき","くさばな","くさる","くしゃみ","くしょう","くすのき","くすりゆび","くせげ","くせん","ぐたいてき","くださる","くたびれる","くちこみ","くちさき","くつした","ぐっすり","くつろぐ","くとうてん","くどく","くなん","くねくね","くのう","くふう","くみあわせ","くみたてる","くめる","くやくしょ","くらす","くらべる","くるま","くれる","くろう","くわしい","ぐんかん","ぐんしょく","ぐんたい","ぐんて","けあな","けいかく","けいけん","けいこ","けいさつ","げいじゅつ","けいたい","げいのうじん","けいれき","けいろ","けおとす","けおりもの","げきか","げきげん","げきだん","げきちん","げきとつ","げきは","げきやく","げこう","げこくじょう","げざい","けさき","げざん","けしき","けしごむ","けしょう","げすと","けたば","けちゃっぷ","けちらす","けつあつ","けつい","けつえき","けっこん","けつじょ","けっせき","けってい","けつまつ","げつようび","げつれい","けつろん","げどく","けとばす","けとる","けなげ","けなす","けなみ","けぬき","げねつ","けねん","けはい","げひん","けぶかい","げぼく","けまり","けみかる","けむし","けむり","けもの","けらい","けろけろ","けわしい","けんい","けんえつ","けんお","けんか","げんき","けんげん","けんこう","けんさく","けんしゅう","けんすう","げんそう","けんちく","けんてい","けんとう","けんない","けんにん","げんぶつ","けんま","けんみん","けんめい","けんらん","けんり","こあくま","こいぬ","こいびと","ごうい","こうえん","こうおん","こうかん","ごうきゅう","ごうけい","こうこう","こうさい","こうじ","こうすい","ごうせい","こうそく","こうたい","こうちゃ","こうつう","こうてい","こうどう","こうない","こうはい","ごうほう","ごうまん","こうもく","こうりつ","こえる","こおり","ごかい","ごがつ","ごかん","こくご","こくさい","こくとう","こくない","こくはく","こぐま","こけい","こける","ここのか","こころ","こさめ","こしつ","こすう","こせい","こせき","こぜん","こそだて","こたい","こたえる","こたつ","こちょう","こっか","こつこつ","こつばん","こつぶ","こてい","こてん","ことがら","ことし","ことば","ことり","こなごな","こねこね","このまま","このみ","このよ","ごはん","こひつじ","こふう","こふん","こぼれる","ごまあぶら","こまかい","ごますり","こまつな","こまる","こむぎこ","こもじ","こもち","こもの","こもん","こやく","こやま","こゆう","こゆび","こよい","こよう","こりる","これくしょん","ころっけ","こわもて","こわれる","こんいん","こんかい","こんき","こんしゅう","こんすい","こんだて","こんとん","こんなん","こんびに","こんぽん","こんまけ","こんや","こんれい","こんわく","ざいえき","さいかい","さいきん","ざいげん","ざいこ","さいしょ","さいせい","ざいたく","ざいちゅう","さいてき","ざいりょう","さうな","さかいし","さがす","さかな","さかみち","さがる","さぎょう","さくし","さくひん","さくら","さこく","さこつ","さずかる","ざせき","さたん","さつえい","ざつおん","ざっか","ざつがく","さっきょく","ざっし","さつじん","ざっそう","さつたば","さつまいも","さてい","さといも","さとう","さとおや","さとし","さとる","さのう","さばく","さびしい","さべつ","さほう","さほど","さます","さみしい","さみだれ","さむけ","さめる","さやえんどう","さゆう","さよう","さよく","さらだ","ざるそば","さわやか","さわる","さんいん","さんか","さんきゃく","さんこう","さんさい","ざんしょ","さんすう","さんせい","さんそ","さんち","さんま","さんみ","さんらん","しあい","しあげ","しあさって","しあわせ","しいく","しいん","しうち","しえい","しおけ","しかい","しかく","じかん","しごと","しすう","じだい","したうけ","したぎ","したて","したみ","しちょう","しちりん","しっかり","しつじ","しつもん","してい","してき","してつ","じてん","じどう","しなぎれ","しなもの","しなん","しねま","しねん","しのぐ","しのぶ","しはい","しばかり","しはつ","しはらい","しはん","しひょう","しふく","じぶん","しへい","しほう","しほん","しまう","しまる","しみん","しむける","じむしょ","しめい","しめる","しもん","しゃいん","しゃうん","しゃおん","じゃがいも","しやくしょ","しゃくほう","しゃけん","しゃこ","しゃざい","しゃしん","しゃせん","しゃそう","しゃたい","しゃちょう","しゃっきん","じゃま","しゃりん","しゃれい","じゆう","じゅうしょ","しゅくはく","じゅしん","しゅっせき","しゅみ","しゅらば","じゅんばん","しょうかい","しょくたく","しょっけん","しょどう","しょもつ","しらせる","しらべる","しんか","しんこう","じんじゃ","しんせいじ","しんちく","しんりん","すあげ","すあし","すあな","ずあん","すいえい","すいか","すいとう","ずいぶん","すいようび","すうがく","すうじつ","すうせん","すおどり","すきま","すくう","すくない","すける","すごい","すこし","ずさん","すずしい","すすむ","すすめる","すっかり","ずっしり","ずっと","すてき","すてる","すねる","すのこ","すはだ","すばらしい","ずひょう","ずぶぬれ","すぶり","すふれ","すべて","すべる","ずほう","すぼん","すまい","すめし","すもう","すやき","すらすら","するめ","すれちがう","すろっと","すわる","すんぜん","すんぽう","せあぶら","せいかつ","せいげん","せいじ","せいよう","せおう","せかいかん","せきにん","せきむ","せきゆ","せきらんうん","せけん","せこう","せすじ","せたい","せたけ","せっかく","せっきゃく","ぜっく","せっけん","せっこつ","せっさたくま","せつぞく","せつだん","せつでん","せっぱん","せつび","せつぶん","せつめい","せつりつ","せなか","せのび","せはば","せびろ","せぼね","せまい","せまる","せめる","せもたれ","せりふ","ぜんあく","せんい","せんえい","せんか","せんきょ","せんく","せんげん","ぜんご","せんさい","せんしゅ","せんすい","せんせい","せんぞ","せんたく","せんちょう","せんてい","せんとう","せんぬき","せんねん","せんぱい","ぜんぶ","ぜんぽう","せんむ","せんめんじょ","せんもん","せんやく","せんゆう","せんよう","ぜんら","ぜんりゃく","せんれい","せんろ","そあく","そいとげる","そいね","そうがんきょう","そうき","そうご","そうしん","そうだん","そうなん","そうび","そうめん","そうり","そえもの","そえん","そがい","そげき","そこう","そこそこ","そざい","そしな","そせい","そせん","そそぐ","そだてる","そつう","そつえん","そっかん","そつぎょう","そっけつ","そっこう","そっせん","そっと","そとがわ","そとづら","そなえる","そなた","そふぼ","そぼく","そぼろ","そまつ","そまる","そむく","そむりえ","そめる","そもそも","そよかぜ","そらまめ","そろう","そんかい","そんけい","そんざい","そんしつ","そんぞく","そんちょう","ぞんび","ぞんぶん","そんみん","たあい","たいいん","たいうん","たいえき","たいおう","だいがく","たいき","たいぐう","たいけん","たいこ","たいざい","だいじょうぶ","だいすき","たいせつ","たいそう","だいたい","たいちょう","たいてい","だいどころ","たいない","たいねつ","たいのう","たいはん","だいひょう","たいふう","たいへん","たいほ","たいまつばな","たいみんぐ","たいむ","たいめん","たいやき","たいよう","たいら","たいりょく","たいる","たいわん","たうえ","たえる","たおす","たおる","たおれる","たかい","たかね","たきび","たくさん","たこく","たこやき","たさい","たしざん","だじゃれ","たすける","たずさわる","たそがれ","たたかう","たたく","ただしい","たたみ","たちばな","だっかい","だっきゃく","だっこ","だっしゅつ","だったい","たてる","たとえる","たなばた","たにん","たぬき","たのしみ","たはつ","たぶん","たべる","たぼう","たまご","たまる","だむる","ためいき","ためす","ためる","たもつ","たやすい","たよる","たらす","たりきほんがん","たりょう","たりる","たると","たれる","たれんと","たろっと","たわむれる","だんあつ","たんい","たんおん","たんか","たんき","たんけん","たんご","たんさん","たんじょうび","だんせい","たんそく","たんたい","だんち","たんてい","たんとう","だんな","たんにん","だんねつ","たんのう","たんぴん","だんぼう","たんまつ","たんめい","だんれつ","だんろ","だんわ","ちあい","ちあん","ちいき","ちいさい","ちえん","ちかい","ちから","ちきゅう","ちきん","ちけいず","ちけん","ちこく","ちさい","ちしき","ちしりょう","ちせい","ちそう","ちたい","ちたん","ちちおや","ちつじょ","ちてき","ちてん","ちぬき","ちぬり","ちのう","ちひょう","ちへいせん","ちほう","ちまた","ちみつ","ちみどろ","ちめいど","ちゃんこなべ","ちゅうい","ちゆりょく","ちょうし","ちょさくけん","ちらし","ちらみ","ちりがみ","ちりょう","ちるど","ちわわ","ちんたい","ちんもく","ついか","ついたち","つうか","つうじょう","つうはん","つうわ","つかう","つかれる","つくね","つくる","つけね","つける","つごう","つたえる","つづく","つつじ","つつむ","つとめる","つながる","つなみ","つねづね","つのる","つぶす","つまらない","つまる","つみき","つめたい","つもり","つもる","つよい","つるぼ","つるみく","つわもの","つわり","てあし","てあて","てあみ","ていおん","ていか","ていき","ていけい","ていこく","ていさつ","ていし","ていせい","ていたい","ていど","ていねい","ていひょう","ていへん","ていぼう","てうち","ておくれ","てきとう","てくび","でこぼこ","てさぎょう","てさげ","てすり","てそう","てちがい","てちょう","てつがく","てつづき","でっぱ","てつぼう","てつや","でぬかえ","てぬき","てぬぐい","てのひら","てはい","てぶくろ","てふだ","てほどき","てほん","てまえ","てまきずし","てみじか","てみやげ","てらす","てれび","てわけ","てわたし","でんあつ","てんいん","てんかい","てんき","てんぐ","てんけん","てんごく","てんさい","てんし","てんすう","でんち","てんてき","てんとう","てんない","てんぷら","てんぼうだい","てんめつ","てんらんかい","でんりょく","でんわ","どあい","といれ","どうかん","とうきゅう","どうぐ","とうし","とうむぎ","とおい","とおか","とおく","とおす","とおる","とかい","とかす","ときおり","ときどき","とくい","とくしゅう","とくてん","とくに","とくべつ","とけい","とける","とこや","とさか","としょかん","とそう","とたん","とちゅう","とっきゅう","とっくん","とつぜん","とつにゅう","とどける","ととのえる","とない","となえる","となり","とのさま","とばす","どぶがわ","とほう","とまる","とめる","ともだち","ともる","どようび","とらえる","とんかつ","どんぶり","ないかく","ないこう","ないしょ","ないす","ないせん","ないそう","なおす","ながい","なくす","なげる","なこうど","なさけ","なたでここ","なっとう","なつやすみ","ななおし","なにごと","なにもの","なにわ","なのか","なふだ","なまいき","なまえ","なまみ","なみだ","なめらか","なめる","なやむ","ならう","ならび","ならぶ","なれる","なわとび","なわばり","にあう","にいがた","にうけ","におい","にかい","にがて","にきび","にくしみ","にくまん","にげる","にさんかたんそ","にしき","にせもの","にちじょう","にちようび","にっか","にっき","にっけい","にっこう","にっさん","にっしょく","にっすう","にっせき","にってい","になう","にほん","にまめ","にもつ","にやり","にゅういん","にりんしゃ","にわとり","にんい","にんか","にんき","にんげん","にんしき","にんずう","にんそう","にんたい","にんち","にんてい","にんにく","にんぷ","にんまり","にんむ","にんめい","にんよう","ぬいくぎ","ぬかす","ぬぐいとる","ぬぐう","ぬくもり","ぬすむ","ぬまえび","ぬめり","ぬらす","ぬんちゃく","ねあげ","ねいき","ねいる","ねいろ","ねぐせ","ねくたい","ねくら","ねこぜ","ねこむ","ねさげ","ねすごす","ねそべる","ねだん","ねつい","ねっしん","ねつぞう","ねったいぎょ","ねぶそく","ねふだ","ねぼう","ねほりはほり","ねまき","ねまわし","ねみみ","ねむい","ねむたい","ねもと","ねらう","ねわざ","ねんいり","ねんおし","ねんかん","ねんきん","ねんぐ","ねんざ","ねんし","ねんちゃく","ねんど","ねんぴ","ねんぶつ","ねんまつ","ねんりょう","ねんれい","のいず","のおづま","のがす","のきなみ","のこぎり","のこす","のこる","のせる","のぞく","のぞむ","のたまう","のちほど","のっく","のばす","のはら","のべる","のぼる","のみもの","のやま","のらいぬ","のらねこ","のりもの","のりゆき","のれん","のんき","ばあい","はあく","ばあさん","ばいか","ばいく","はいけん","はいご","はいしん","はいすい","はいせん","はいそう","はいち","ばいばい","はいれつ","はえる","はおる","はかい","ばかり","はかる","はくしゅ","はけん","はこぶ","はさみ","はさん","はしご","ばしょ","はしる","はせる","ぱそこん","はそん","はたん","はちみつ","はつおん","はっかく","はづき","はっきり","はっくつ","はっけん","はっこう","はっさん","はっしん","はったつ","はっちゅう","はってん","はっぴょう","はっぽう","はなす","はなび","はにかむ","はぶらし","はみがき","はむかう","はめつ","はやい","はやし","はらう","はろうぃん","はわい","はんい","はんえい","はんおん","はんかく","はんきょう","ばんぐみ","はんこ","はんしゃ","はんすう","はんだん","ぱんち","ぱんつ","はんてい","はんとし","はんのう","はんぱ","はんぶん","はんぺん","はんぼうき","はんめい","はんらん","はんろん","ひいき","ひうん","ひえる","ひかく","ひかり","ひかる","ひかん","ひくい","ひけつ","ひこうき","ひこく","ひさい","ひさしぶり","ひさん","びじゅつかん","ひしょ","ひそか","ひそむ","ひたむき","ひだり","ひたる","ひつぎ","ひっこし","ひっし","ひつじゅひん","ひっす","ひつぜん","ぴったり","ぴっちり","ひつよう","ひてい","ひとごみ","ひなまつり","ひなん","ひねる","ひはん","ひびく","ひひょう","ひほう","ひまわり","ひまん","ひみつ","ひめい","ひめじし","ひやけ","ひやす","ひよう","びょうき","ひらがな","ひらく","ひりつ","ひりょう","ひるま","ひるやすみ","ひれい","ひろい","ひろう","ひろき","ひろゆき","ひんかく","ひんけつ","ひんこん","ひんしゅ","ひんそう","ぴんち","ひんぱん","びんぼう","ふあん","ふいうち","ふうけい","ふうせん","ぷうたろう","ふうとう","ふうふ","ふえる","ふおん","ふかい","ふきん","ふくざつ","ふくぶくろ","ふこう","ふさい","ふしぎ","ふじみ","ふすま","ふせい","ふせぐ","ふそく","ぶたにく","ふたん","ふちょう","ふつう","ふつか","ふっかつ","ふっき","ふっこく","ぶどう","ふとる","ふとん","ふのう","ふはい","ふひょう","ふへん","ふまん","ふみん","ふめつ","ふめん","ふよう","ふりこ","ふりる","ふるい","ふんいき","ぶんがく","ぶんぐ","ふんしつ","ぶんせき","ふんそう","ぶんぽう","へいあん","へいおん","へいがい","へいき","へいげん","へいこう","へいさ","へいしゃ","へいせつ","へいそ","へいたく","へいてん","へいねつ","へいわ","へきが","へこむ","べにいろ","べにしょうが","へらす","へんかん","べんきょう","べんごし","へんさい","へんたい","べんり","ほあん","ほいく","ぼうぎょ","ほうこく","ほうそう","ほうほう","ほうもん","ほうりつ","ほえる","ほおん","ほかん","ほきょう","ぼきん","ほくろ","ほけつ","ほけん","ほこう","ほこる","ほしい","ほしつ","ほしゅ","ほしょう","ほせい","ほそい","ほそく","ほたて","ほたる","ぽちぶくろ","ほっきょく","ほっさ","ほったん","ほとんど","ほめる","ほんい","ほんき","ほんけ","ほんしつ","ほんやく","まいにち","まかい","まかせる","まがる","まける","まこと","まさつ","まじめ","ますく","まぜる","まつり","まとめ","まなぶ","まぬけ","まねく","まほう","まもる","まゆげ","まよう","まろやか","まわす","まわり","まわる","まんが","まんきつ","まんぞく","まんなか","みいら","みうち","みえる","みがく","みかた","みかん","みけん","みこん","みじかい","みすい","みすえる","みせる","みっか","みつかる","みつける","みてい","みとめる","みなと","みなみかさい","みねらる","みのう","みのがす","みほん","みもと","みやげ","みらい","みりょく","みわく","みんか","みんぞく","むいか","むえき","むえん","むかい","むかう","むかえ","むかし","むぎちゃ","むける","むげん","むさぼる","むしあつい","むしば","むじゅん","むしろ","むすう","むすこ","むすぶ","むすめ","むせる","むせん","むちゅう","むなしい","むのう","むやみ","むよう","むらさき","むりょう","むろん","めいあん","めいうん","めいえん","めいかく","めいきょく","めいさい","めいし","めいそう","めいぶつ","めいれい","めいわく","めぐまれる","めざす","めした","めずらしい","めだつ","めまい","めやす","めんきょ","めんせき","めんどう","もうしあげる","もうどうけん","もえる","もくし","もくてき","もくようび","もちろん","もどる","もらう","もんく","もんだい","やおや","やける","やさい","やさしい","やすい","やすたろう","やすみ","やせる","やそう","やたい","やちん","やっと","やっぱり","やぶる","やめる","ややこしい","やよい","やわらかい","ゆうき","ゆうびんきょく","ゆうべ","ゆうめい","ゆけつ","ゆしゅつ","ゆせん","ゆそう","ゆたか","ゆちゃく","ゆでる","ゆにゅう","ゆびわ","ゆらい","ゆれる","ようい","ようか","ようきゅう","ようじ","ようす","ようちえん","よかぜ","よかん","よきん","よくせい","よくぼう","よけい","よごれる","よさん","よしゅう","よそう","よそく","よっか","よてい","よどがわく","よねつ","よやく","よゆう","よろこぶ","よろしい","らいう","らくがき","らくご","らくさつ","らくだ","らしんばん","らせん","らぞく","らたい","らっか","られつ","りえき","りかい","りきさく","りきせつ","りくぐん","りくつ","りけん","りこう","りせい","りそう","りそく","りてん","りねん","りゆう","りゅうがく","りよう","りょうり","りょかん","りょくちゃ","りょこう","りりく","りれき","りろん","りんご","るいけい","るいさい","るいじ","るいせき","るすばん","るりがわら","れいかん","れいぎ","れいせい","れいぞうこ","れいとう","れいぼう","れきし","れきだい","れんあい","れんけい","れんこん","れんさい","れんしゅう","れんぞく","れんらく","ろうか","ろうご","ろうじん","ろうそく","ろくが","ろこつ","ろじうら","ろしゅつ","ろせん","ろてん","ろめん","ろれつ","ろんぎ","ろんぱ","ろんぶん","ろんり","わかす","わかめ","わかやま","わかれる","わしつ","わじまし","わすれもの","わらう","われる"],Ua=["abacate","abaixo","abalar","abater","abduzir","abelha","aberto","abismo","abotoar","abranger","abreviar","abrigar","abrupto","absinto","absoluto","absurdo","abutre","acabado","acalmar","acampar","acanhar","acaso","aceitar","acelerar","acenar","acervo","acessar","acetona","achatar","acidez","acima","acionado","acirrar","aclamar","aclive","acolhida","acomodar","acoplar","acordar","acumular","acusador","adaptar","adega","adentro","adepto","adequar","aderente","adesivo","adeus","adiante","aditivo","adjetivo","adjunto","admirar","adorar","adquirir","adubo","adverso","advogado","aeronave","afastar","aferir","afetivo","afinador","afivelar","aflito","afluente","afrontar","agachar","agarrar","agasalho","agenciar","agilizar","agiota","agitado","agora","agradar","agreste","agrupar","aguardar","agulha","ajoelhar","ajudar","ajustar","alameda","alarme","alastrar","alavanca","albergue","albino","alcatra","aldeia","alecrim","alegria","alertar","alface","alfinete","algum","alheio","aliar","alicate","alienar","alinhar","aliviar","almofada","alocar","alpiste","alterar","altitude","alucinar","alugar","aluno","alusivo","alvo","amaciar","amador","amarelo","amassar","ambas","ambiente","ameixa","amenizar","amido","amistoso","amizade","amolador","amontoar","amoroso","amostra","amparar","ampliar","ampola","anagrama","analisar","anarquia","anatomia","andaime","anel","anexo","angular","animar","anjo","anomalia","anotado","ansioso","anterior","anuidade","anunciar","anzol","apagador","apalpar","apanhado","apego","apelido","apertada","apesar","apetite","apito","aplauso","aplicada","apoio","apontar","aposta","aprendiz","aprovar","aquecer","arame","aranha","arara","arcada","ardente","areia","arejar","arenito","aresta","argiloso","argola","arma","arquivo","arraial","arrebate","arriscar","arroba","arrumar","arsenal","arterial","artigo","arvoredo","asfaltar","asilado","aspirar","assador","assinar","assoalho","assunto","astral","atacado","atadura","atalho","atarefar","atear","atender","aterro","ateu","atingir","atirador","ativo","atoleiro","atracar","atrevido","atriz","atual","atum","auditor","aumentar","aura","aurora","autismo","autoria","autuar","avaliar","avante","avaria","avental","avesso","aviador","avisar","avulso","axila","azarar","azedo","azeite","azulejo","babar","babosa","bacalhau","bacharel","bacia","bagagem","baiano","bailar","baioneta","bairro","baixista","bajular","baleia","baliza","balsa","banal","bandeira","banho","banir","banquete","barato","barbado","baronesa","barraca","barulho","baseado","bastante","batata","batedor","batida","batom","batucar","baunilha","beber","beijo","beirada","beisebol","beldade","beleza","belga","beliscar","bendito","bengala","benzer","berimbau","berlinda","berro","besouro","bexiga","bezerro","bico","bicudo","bienal","bifocal","bifurcar","bigorna","bilhete","bimestre","bimotor","biologia","biombo","biosfera","bipolar","birrento","biscoito","bisneto","bispo","bissexto","bitola","bizarro","blindado","bloco","bloquear","boato","bobagem","bocado","bocejo","bochecha","boicotar","bolada","boletim","bolha","bolo","bombeiro","bonde","boneco","bonita","borbulha","borda","boreal","borracha","bovino","boxeador","branco","brasa","braveza","breu","briga","brilho","brincar","broa","brochura","bronzear","broto","bruxo","bucha","budismo","bufar","bule","buraco","busca","busto","buzina","cabana","cabelo","cabide","cabo","cabrito","cacau","cacetada","cachorro","cacique","cadastro","cadeado","cafezal","caiaque","caipira","caixote","cajado","caju","calafrio","calcular","caldeira","calibrar","calmante","calota","camada","cambista","camisa","camomila","campanha","camuflar","canavial","cancelar","caneta","canguru","canhoto","canivete","canoa","cansado","cantar","canudo","capacho","capela","capinar","capotar","capricho","captador","capuz","caracol","carbono","cardeal","careca","carimbar","carneiro","carpete","carreira","cartaz","carvalho","casaco","casca","casebre","castelo","casulo","catarata","cativar","caule","causador","cautelar","cavalo","caverna","cebola","cedilha","cegonha","celebrar","celular","cenoura","censo","centeio","cercar","cerrado","certeiro","cerveja","cetim","cevada","chacota","chaleira","chamado","chapada","charme","chatice","chave","chefe","chegada","cheiro","cheque","chicote","chifre","chinelo","chocalho","chover","chumbo","chutar","chuva","cicatriz","ciclone","cidade","cidreira","ciente","cigana","cimento","cinto","cinza","ciranda","circuito","cirurgia","citar","clareza","clero","clicar","clone","clube","coado","coagir","cobaia","cobertor","cobrar","cocada","coelho","coentro","coeso","cogumelo","coibir","coifa","coiote","colar","coleira","colher","colidir","colmeia","colono","coluna","comando","combinar","comentar","comitiva","comover","complexo","comum","concha","condor","conectar","confuso","congelar","conhecer","conjugar","consumir","contrato","convite","cooperar","copeiro","copiador","copo","coquetel","coragem","cordial","corneta","coronha","corporal","correio","cortejo","coruja","corvo","cosseno","costela","cotonete","couro","couve","covil","cozinha","cratera","cravo","creche","credor","creme","crer","crespo","criada","criminal","crioulo","crise","criticar","crosta","crua","cruzeiro","cubano","cueca","cuidado","cujo","culatra","culminar","culpar","cultura","cumprir","cunhado","cupido","curativo","curral","cursar","curto","cuspir","custear","cutelo","damasco","datar","debater","debitar","deboche","debulhar","decalque","decimal","declive","decote","decretar","dedal","dedicado","deduzir","defesa","defumar","degelo","degrau","degustar","deitado","deixar","delator","delegado","delinear","delonga","demanda","demitir","demolido","dentista","depenado","depilar","depois","depressa","depurar","deriva","derramar","desafio","desbotar","descanso","desenho","desfiado","desgaste","desigual","deslize","desmamar","desova","despesa","destaque","desviar","detalhar","detentor","detonar","detrito","deusa","dever","devido","devotado","dezena","diagrama","dialeto","didata","difuso","digitar","dilatado","diluente","diminuir","dinastia","dinheiro","diocese","direto","discreta","disfarce","disparo","disquete","dissipar","distante","ditador","diurno","diverso","divisor","divulgar","dizer","dobrador","dolorido","domador","dominado","donativo","donzela","dormente","dorsal","dosagem","dourado","doutor","drenagem","drible","drogaria","duelar","duende","dueto","duplo","duquesa","durante","duvidoso","eclodir","ecoar","ecologia","edificar","edital","educado","efeito","efetivar","ejetar","elaborar","eleger","eleitor","elenco","elevador","eliminar","elogiar","embargo","embolado","embrulho","embutido","emenda","emergir","emissor","empatia","empenho","empinado","empolgar","emprego","empurrar","emulador","encaixe","encenado","enchente","encontro","endeusar","endossar","enfaixar","enfeite","enfim","engajado","engenho","englobar","engomado","engraxar","enguia","enjoar","enlatar","enquanto","enraizar","enrolado","enrugar","ensaio","enseada","ensino","ensopado","entanto","enteado","entidade","entortar","entrada","entulho","envergar","enviado","envolver","enxame","enxerto","enxofre","enxuto","epiderme","equipar","ereto","erguido","errata","erva","ervilha","esbanjar","esbelto","escama","escola","escrita","escuta","esfinge","esfolar","esfregar","esfumado","esgrima","esmalte","espanto","espelho","espiga","esponja","espreita","espumar","esquerda","estaca","esteira","esticar","estofado","estrela","estudo","esvaziar","etanol","etiqueta","euforia","europeu","evacuar","evaporar","evasivo","eventual","evidente","evoluir","exagero","exalar","examinar","exato","exausto","excesso","excitar","exclamar","executar","exemplo","exibir","exigente","exonerar","expandir","expelir","expirar","explanar","exposto","expresso","expulsar","externo","extinto","extrato","fabricar","fabuloso","faceta","facial","fada","fadiga","faixa","falar","falta","familiar","fandango","fanfarra","fantoche","fardado","farelo","farinha","farofa","farpa","fartura","fatia","fator","favorita","faxina","fazenda","fechado","feijoada","feirante","felino","feminino","fenda","feno","fera","feriado","ferrugem","ferver","festejar","fetal","feudal","fiapo","fibrose","ficar","ficheiro","figurado","fileira","filho","filme","filtrar","firmeza","fisgada","fissura","fita","fivela","fixador","fixo","flacidez","flamingo","flanela","flechada","flora","flutuar","fluxo","focal","focinho","fofocar","fogo","foguete","foice","folgado","folheto","forjar","formiga","forno","forte","fosco","fossa","fragata","fralda","frango","frasco","fraterno","freira","frente","fretar","frieza","friso","fritura","fronha","frustrar","fruteira","fugir","fulano","fuligem","fundar","fungo","funil","furador","furioso","futebol","gabarito","gabinete","gado","gaiato","gaiola","gaivota","galega","galho","galinha","galocha","ganhar","garagem","garfo","gargalo","garimpo","garoupa","garrafa","gasoduto","gasto","gata","gatilho","gaveta","gazela","gelado","geleia","gelo","gemada","gemer","gemido","generoso","gengiva","genial","genoma","genro","geologia","gerador","germinar","gesso","gestor","ginasta","gincana","gingado","girafa","girino","glacial","glicose","global","glorioso","goela","goiaba","golfe","golpear","gordura","gorjeta","gorro","gostoso","goteira","governar","gracejo","gradual","grafite","gralha","grampo","granada","gratuito","graveto","graxa","grego","grelhar","greve","grilo","grisalho","gritaria","grosso","grotesco","grudado","grunhido","gruta","guache","guarani","guaxinim","guerrear","guiar","guincho","guisado","gula","guloso","guru","habitar","harmonia","haste","haver","hectare","herdar","heresia","hesitar","hiato","hibernar","hidratar","hiena","hino","hipismo","hipnose","hipoteca","hoje","holofote","homem","honesto","honrado","hormonal","hospedar","humorado","iate","ideia","idoso","ignorado","igreja","iguana","ileso","ilha","iludido","iluminar","ilustrar","imagem","imediato","imenso","imersivo","iminente","imitador","imortal","impacto","impedir","implante","impor","imprensa","impune","imunizar","inalador","inapto","inativo","incenso","inchar","incidir","incluir","incolor","indeciso","indireto","indutor","ineficaz","inerente","infantil","infestar","infinito","inflamar","informal","infrator","ingerir","inibido","inicial","inimigo","injetar","inocente","inodoro","inovador","inox","inquieto","inscrito","inseto","insistir","inspetor","instalar","insulto","intacto","integral","intimar","intocado","intriga","invasor","inverno","invicto","invocar","iogurte","iraniano","ironizar","irreal","irritado","isca","isento","isolado","isqueiro","italiano","janeiro","jangada","janta","jararaca","jardim","jarro","jasmim","jato","javali","jazida","jejum","joaninha","joelhada","jogador","joia","jornal","jorrar","jovem","juba","judeu","judoca","juiz","julgador","julho","jurado","jurista","juro","justa","labareda","laboral","lacre","lactante","ladrilho","lagarta","lagoa","laje","lamber","lamentar","laminar","lampejo","lanche","lapidar","lapso","laranja","lareira","largura","lasanha","lastro","lateral","latido","lavanda","lavoura","lavrador","laxante","lazer","lealdade","lebre","legado","legendar","legista","leigo","leiloar","leitura","lembrete","leme","lenhador","lentilha","leoa","lesma","leste","letivo","letreiro","levar","leveza","levitar","liberal","libido","liderar","ligar","ligeiro","limitar","limoeiro","limpador","linda","linear","linhagem","liquidez","listagem","lisura","litoral","livro","lixa","lixeira","locador","locutor","lojista","lombo","lona","longe","lontra","lorde","lotado","loteria","loucura","lousa","louvar","luar","lucidez","lucro","luneta","lustre","lutador","luva","macaco","macete","machado","macio","madeira","madrinha","magnata","magreza","maior","mais","malandro","malha","malote","maluco","mamilo","mamoeiro","mamute","manada","mancha","mandato","manequim","manhoso","manivela","manobrar","mansa","manter","manusear","mapeado","maquinar","marcador","maresia","marfim","margem","marinho","marmita","maroto","marquise","marreco","martelo","marujo","mascote","masmorra","massagem","mastigar","matagal","materno","matinal","matutar","maxilar","medalha","medida","medusa","megafone","meiga","melancia","melhor","membro","memorial","menino","menos","mensagem","mental","merecer","mergulho","mesada","mesclar","mesmo","mesquita","mestre","metade","meteoro","metragem","mexer","mexicano","micro","migalha","migrar","milagre","milenar","milhar","mimado","minerar","minhoca","ministro","minoria","miolo","mirante","mirtilo","misturar","mocidade","moderno","modular","moeda","moer","moinho","moita","moldura","moleza","molho","molinete","molusco","montanha","moqueca","morango","morcego","mordomo","morena","mosaico","mosquete","mostarda","motel","motim","moto","motriz","muda","muito","mulata","mulher","multar","mundial","munido","muralha","murcho","muscular","museu","musical","nacional","nadador","naja","namoro","narina","narrado","nascer","nativa","natureza","navalha","navegar","navio","neblina","nebuloso","negativa","negociar","negrito","nervoso","neta","neural","nevasca","nevoeiro","ninar","ninho","nitidez","nivelar","nobreza","noite","noiva","nomear","nominal","nordeste","nortear","notar","noticiar","noturno","novelo","novilho","novo","nublado","nudez","numeral","nupcial","nutrir","nuvem","obcecado","obedecer","objetivo","obrigado","obscuro","obstetra","obter","obturar","ocidente","ocioso","ocorrer","oculista","ocupado","ofegante","ofensiva","oferenda","oficina","ofuscado","ogiva","olaria","oleoso","olhar","oliveira","ombro","omelete","omisso","omitir","ondulado","oneroso","ontem","opcional","operador","oponente","oportuno","oposto","orar","orbitar","ordem","ordinal","orfanato","orgasmo","orgulho","oriental","origem","oriundo","orla","ortodoxo","orvalho","oscilar","ossada","osso","ostentar","otimismo","ousadia","outono","outubro","ouvido","ovelha","ovular","oxidar","oxigenar","pacato","paciente","pacote","pactuar","padaria","padrinho","pagar","pagode","painel","pairar","paisagem","palavra","palestra","palheta","palito","palmada","palpitar","pancada","panela","panfleto","panqueca","pantanal","papagaio","papelada","papiro","parafina","parcial","pardal","parede","partida","pasmo","passado","pastel","patamar","patente","patinar","patrono","paulada","pausar","peculiar","pedalar","pedestre","pediatra","pedra","pegada","peitoral","peixe","pele","pelicano","penca","pendurar","peneira","penhasco","pensador","pente","perceber","perfeito","pergunta","perito","permitir","perna","perplexo","persiana","pertence","peruca","pescado","pesquisa","pessoa","petiscar","piada","picado","piedade","pigmento","pilastra","pilhado","pilotar","pimenta","pincel","pinguim","pinha","pinote","pintar","pioneiro","pipoca","piquete","piranha","pires","pirueta","piscar","pistola","pitanga","pivete","planta","plaqueta","platina","plebeu","plumagem","pluvial","pneu","poda","poeira","poetisa","polegada","policiar","poluente","polvilho","pomar","pomba","ponderar","pontaria","populoso","porta","possuir","postal","pote","poupar","pouso","povoar","praia","prancha","prato","praxe","prece","predador","prefeito","premiar","prensar","preparar","presilha","pretexto","prevenir","prezar","primata","princesa","prisma","privado","processo","produto","profeta","proibido","projeto","prometer","propagar","prosa","protetor","provador","publicar","pudim","pular","pulmonar","pulseira","punhal","punir","pupilo","pureza","puxador","quadra","quantia","quarto","quase","quebrar","queda","queijo","quente","querido","quimono","quina","quiosque","rabanada","rabisco","rachar","racionar","radial","raiar","rainha","raio","raiva","rajada","ralado","ramal","ranger","ranhura","rapadura","rapel","rapidez","raposa","raquete","raridade","rasante","rascunho","rasgar","raspador","rasteira","rasurar","ratazana","ratoeira","realeza","reanimar","reaver","rebaixar","rebelde","rebolar","recado","recente","recheio","recibo","recordar","recrutar","recuar","rede","redimir","redonda","reduzida","reenvio","refinar","refletir","refogar","refresco","refugiar","regalia","regime","regra","reinado","reitor","rejeitar","relativo","remador","remendo","remorso","renovado","reparo","repelir","repleto","repolho","represa","repudiar","requerer","resenha","resfriar","resgatar","residir","resolver","respeito","ressaca","restante","resumir","retalho","reter","retirar","retomada","retratar","revelar","revisor","revolta","riacho","rica","rigidez","rigoroso","rimar","ringue","risada","risco","risonho","robalo","rochedo","rodada","rodeio","rodovia","roedor","roleta","romano","roncar","rosado","roseira","rosto","rota","roteiro","rotina","rotular","rouco","roupa","roxo","rubro","rugido","rugoso","ruivo","rumo","rupestre","russo","sabor","saciar","sacola","sacudir","sadio","safira","saga","sagrada","saibro","salada","saleiro","salgado","saliva","salpicar","salsicha","saltar","salvador","sambar","samurai","sanar","sanfona","sangue","sanidade","sapato","sarda","sargento","sarjeta","saturar","saudade","saxofone","sazonal","secar","secular","seda","sedento","sediado","sedoso","sedutor","segmento","segredo","segundo","seiva","seleto","selvagem","semanal","semente","senador","senhor","sensual","sentado","separado","sereia","seringa","serra","servo","setembro","setor","sigilo","silhueta","silicone","simetria","simpatia","simular","sinal","sincero","singular","sinopse","sintonia","sirene","siri","situado","soberano","sobra","socorro","sogro","soja","solda","soletrar","solteiro","sombrio","sonata","sondar","sonegar","sonhador","sono","soprano","soquete","sorrir","sorteio","sossego","sotaque","soterrar","sovado","sozinho","suavizar","subida","submerso","subsolo","subtrair","sucata","sucesso","suco","sudeste","sufixo","sugador","sugerir","sujeito","sulfato","sumir","suor","superior","suplicar","suposto","suprimir","surdina","surfista","surpresa","surreal","surtir","suspiro","sustento","tabela","tablete","tabuada","tacho","tagarela","talher","talo","talvez","tamanho","tamborim","tampa","tangente","tanto","tapar","tapioca","tardio","tarefa","tarja","tarraxa","tatuagem","taurino","taxativo","taxista","teatral","tecer","tecido","teclado","tedioso","teia","teimar","telefone","telhado","tempero","tenente","tensor","tentar","termal","terno","terreno","tese","tesoura","testado","teto","textura","texugo","tiara","tigela","tijolo","timbrar","timidez","tingido","tinteiro","tiragem","titular","toalha","tocha","tolerar","tolice","tomada","tomilho","tonel","tontura","topete","tora","torcido","torneio","torque","torrada","torto","tostar","touca","toupeira","toxina","trabalho","tracejar","tradutor","trafegar","trajeto","trama","trancar","trapo","traseiro","tratador","travar","treino","tremer","trepidar","trevo","triagem","tribo","triciclo","tridente","trilogia","trindade","triplo","triturar","triunfal","trocar","trombeta","trova","trunfo","truque","tubular","tucano","tudo","tulipa","tupi","turbo","turma","turquesa","tutelar","tutorial","uivar","umbigo","unha","unidade","uniforme","urologia","urso","urtiga","urubu","usado","usina","usufruir","vacina","vadiar","vagaroso","vaidoso","vala","valente","validade","valores","vantagem","vaqueiro","varanda","vareta","varrer","vascular","vasilha","vassoura","vazar","vazio","veado","vedar","vegetar","veicular","veleiro","velhice","veludo","vencedor","vendaval","venerar","ventre","verbal","verdade","vereador","vergonha","vermelho","verniz","versar","vertente","vespa","vestido","vetorial","viaduto","viagem","viajar","viatura","vibrador","videira","vidraria","viela","viga","vigente","vigiar","vigorar","vilarejo","vinco","vinheta","vinil","violeta","virada","virtude","visitar","visto","vitral","viveiro","vizinho","voador","voar","vogal","volante","voleibol","voltagem","volumoso","vontade","vulto","vuvuzela","xadrez","xarope","xeque","xeretar","xerife","xingar","zangado","zarpar","zebu","zelador","zombar","zoologia","zumbido"],Da=["abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse","access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act","action","actor","actress","actual","adapt","add","addict","address","adjust","admit","adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent","agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert","alien","all","alley","allow","almost","alone","alpha","already","also","alter","always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger","angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique","anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic","area","arena","argue","arm","armed","armor","army","around","arrange","arrest","arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset","assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction","audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake","aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge","bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain","barrel","base","basic","basket","battle","beach","bean","beauty","because","become","beef","before","begin","behave","behind","believe","below","belt","bench","benefit","best","betray","better","between","beyond","bicycle","bid","bike","bind","biology","bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless","blind","blood","blossom","blouse","blue","blur","blush","board","boat","body","boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss","bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread","breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze","broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb","bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy","butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call","calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas","canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry","cart","case","cash","casino","castle","casual","cat","catalog","catch","category","cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century","cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase","chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child","chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle","citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk","clever","click","client","cliff","climb","clinic","clip","clock","clog","close","cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut","code","coffee","coil","coin","collect","color","column","combine","come","comfort","comic","common","company","concert","conduct","confirm","congress","connect","consider","control","convince","cook","cool","copper","copy","coral","core","corn","correct","cost","cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle","craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek","crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial","cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup","cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad","damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal","debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense","define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny","depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk","despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond","diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur","direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance","divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain","donate","donkey","donor","door","dose","double","dove","draft","dragon","drama","drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop","drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf","dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo","ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow","elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody","embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless","endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough","enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip","era","erase","erode","erosion","error","erupt","escape","essay","essence","estate","eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange","excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit","exotic","expand","expect","expire","explain","expose","express","extend","extra","eye","eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame","family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father","fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female","fence","festival","fetch","fever","few","fiber","fiction","field","figure","file","film","filter","final","find","fine","finger","finish","fire","firm","first","fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor","flee","flight","flip","float","flock","floor","flower","fluid","flush","fly","foam","focus","fog","foil","fold","follow","food","foot","force","forest","forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile","frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen","fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy","gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp","gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture","ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance","glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue","goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown","grab","grace","grain","grant","grape","grass","gravity","great","green","grid","grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt","guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy","harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health","heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden","high","hill","hint","hip","hire","history","hobby","hockey","hold","hole","holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital","host","hotel","hour","hover","hub","huge","human","humble","humor","hundred","hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea","identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune","impact","impose","improve","impulse","inch","include","income","increase","index","indicate","indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury","inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install","intact","interest","into","invest","invite","involve","iron","island","isolate","issue","item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel","job","join","joke","journey","joy","judge","juice","jump","jungle","junior","junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney","kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife","knock","know","lab","label","labor","ladder","lady","lake","lamp","language","laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit","layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal","legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level","liar","liberty","library","license","life","lift","light","like","limb","limit","link","lion","liquid","list","little","live","lizard","load","loan","lobster","local","lock","logic","lonely","long","loop","lottery","loud","lounge","love","loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad","magic","magnet","maid","mail","main","major","make","mammal","man","manage","mandate","mango","mansion","manual","maple","marble","march","margin","marine","market","marriage","mask","mass","master","match","material","math","matrix","matter","maximum","maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt","member","memory","mention","menu","mercy","merge","merit","merry","mesh","message","metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor","minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile","model","modify","mom","moment","monitor","monkey","monster","month","moon","moral","more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie","much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual","myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature","near","neck","need","negative","neglect","neither","nephew","nerve","nest","net","network","neutral","never","news","next","nice","night","noble","noise","nominee","noodle","normal","north","nose","notable","note","nothing","notice","novel","now","nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe","obtain","obvious","occur","ocean","october","odor","off","offer","office","often","oil","okay","old","olive","olympic","omit","once","one","onion","online","only","open","opera","opinion","oppose","option","orange","orbit","orchard","order","ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output","outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact","paddle","page","pair","palace","palm","panda","panel","panic","panther","paper","parade","parent","park","parrot","party","pass","patch","path","patient","patrol","pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen","penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo","phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot","pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate","play","please","pledge","pluck","plug","plunge","poem","poet","point","polar","pole","police","pond","pony","pool","popular","portion","position","possible","post","potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare","present","pretty","prevent","price","pride","primary","print","priority","prison","private","prize","problem","process","produce","profit","program","project","promote","proof","property","prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin","punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle","pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit","raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp","ranch","random","range","rapid","rare","rate","rather","raven","raw","razor","ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle","reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release","relief","rely","remain","remember","remind","remove","render","renew","rent","reopen","repair","repeat","replace","report","require","rescue","resemble","resist","resource","response","result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib","ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot","ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket","romance","roof","rookie","room","rose","rotate","rough","round","route","royal","rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness","safe","sail","salad","salmon","salon","salt","salute","same","sample","sand","satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter","scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script","scrub","sea","search","season","seat","second","secret","section","security","seed","seek","segment","select","sell","seminar","senior","sense","sentence","series","service","session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell","sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop","short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side","siege","sight","sign","silent","silk","silly","silver","similar","simple","since","sing","siren","sister","situate","six","size","skate","sketch","ski","skill","skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight","slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth","snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda","soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry","sort","soul","sound","soup","source","south","space","spare","spatial","spawn","speak","special","speed","spell","spend","sphere","spice","spider","spike","spin","spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring","spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp","stand","start","state","stay","steak","steel","stem","step","stereo","stick","still","sting","stock","stomach","stone","stool","story","stove","strategy","street","strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway","success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny","sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey","suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim","swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag","tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi","teach","team","tell","ten","tenant","tennis","tent","term","test","text","thank","that","theme","then","theory","there","they","thing","this","thought","three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber","time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler","toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool","tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist","toward","tower","town","toy","track","trade","traffic","tragic","train","transfer","trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick","trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust","truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle","twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella","unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform","unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade","uphold","upon","upper","upset","urban","urge","usage","use","used","useful","useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van","vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue","verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory","video","view","village","vintage","violin","virtual","virus","visa","visit","visual","vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage","wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash","wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather","web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat","wheel","when","where","whip","whisper","wide","width","wife","wild","will","win","window","wine","wing","wink","winner","winter","wire","wisdom","wise","wish","witness","wolf","woman","wonder","wood","wool","word","work","world","worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year","yellow","you","young","youth","zebra","zero","zone","zoo"];function Ca(){if(Aa)return xa;Aa=1,Object.defineProperty(xa,"__esModule",{value:!0});const e={};let t;xa.wordlists=e,xa._default=t;try{xa._default=t=za,e.czech=t}catch(e){}try{xa._default=t=Ma,e.chinese_simplified=t}catch(e){}try{xa._default=t=Ta,e.chinese_traditional=t}catch(e){}try{xa._default=t=Ra,e.korean=t}catch(e){}try{xa._default=t=qa,e.french=t}catch(e){}try{xa._default=t=Oa,e.italian=t}catch(e){}try{xa._default=t=La,e.spanish=t}catch(e){}try{xa._default=t=ja,e.japanese=t,e.JA=t}catch(e){}try{xa._default=t=Ua,e.portuguese=t}catch(e){}try{xa._default=t=Da,e.english=t,e.EN=t}catch(e){}return xa}var Pa=function(){if(Ia)return ta;Ia=1,Object.defineProperty(ta,"__esModule",{value:!0});const e=ma(),t=ya(),r=Ea(),a=sa(),i=Ca();let o=i._default;const n="Invalid mnemonic",s="Invalid entropy",c="A wordlist is required but a default could not be found.\nPlease pass a 2048 word array explicitly.";function u(e){return(e||"").normalize("NFKD")}function l(e,t,r){for(;e.length<r;)e=t+e;return e}function d(e){return parseInt(e,2)}function h(e){return e.map(e=>l(e.toString(2),"0",8)).join("")}function f(t){const r=8*t.length/32,a=e.sha256(Uint8Array.from(t));return h(Array.from(a)).slice(0,r)}function p(e){return"mnemonic"+(e||"")}function m(e,t){if(!(t=t||o))throw new Error(c);const r=u(e).split(" ");if(r.length%3!=0)throw new Error(n);const a=r.map(e=>{const r=t.indexOf(e);if(-1===r)throw new Error(n);return l(r.toString(2),"0",11)}).join(""),i=32*Math.floor(a.length/33),h=a.slice(0,i),p=a.slice(i),m=h.match(/(.{1,8})/g).map(d);if(m.length<16)throw new Error(s);if(m.length>32)throw new Error(s);if(m.length%4!=0)throw new Error(s);const b=Buffer.from(m);if(f(b)!==p)throw new Error("Invalid mnemonic checksum");return b.toString("hex")}function b(e,t){if(Buffer.isBuffer(e)||(e=Buffer.from(e,"hex")),!(t=t||o))throw new Error(c);if(e.length<16)throw new TypeError(s);if(e.length>32)throw new TypeError(s);if(e.length%4!=0)throw new TypeError(s);const r=(h(Array.from(e))+f(e)).match(/(.{1,11})/g).map(e=>{const r=d(e);return t[r]});return"あいこくしん"===t[0]?r.join(" "):r.join(" ")}ta.mnemonicToSeedSync=function(e,a){const i=Uint8Array.from(Buffer.from(u(e),"utf8")),o=Uint8Array.from(Buffer.from(p(u(a)),"utf8")),n=r.pbkdf2(t.sha512,i,o,{c:2048,dkLen:64});return Buffer.from(n)},ta.mnemonicToSeed=function(e,a){const i=Uint8Array.from(Buffer.from(u(e),"utf8")),o=Uint8Array.from(Buffer.from(p(u(a)),"utf8"));return r.pbkdf2Async(t.sha512,i,o,{c:2048,dkLen:64}).then(e=>Buffer.from(e))},ta.mnemonicToEntropy=m,ta.entropyToMnemonic=b,ta.generateMnemonic=function(e,t,r){if((e=e||128)%32!=0)throw new TypeError(s);return b((t=t||(e=>Buffer.from(a.randomBytes(e))))(e/8),r)},ta.validateMnemonic=function(e,t){try{m(e,t)}catch(e){return!1}return!0},ta.setDefaultWordlist=function(e){const t=i.wordlists[e];if(!t)throw new Error('Could not find wordlist for language "'+e+'"');o=t},ta.getDefaultWordlist=function(){if(!o)throw new Error("No Default Wordlist set");return Object.keys(i.wordlists).filter(e=>"JA"!==e&&"EN"!==e&&i.wordlists[e].every((e,t)=>e===o[t]))[0]};var g=Ca();return ta.wordlists=g.wordlists,ta}();function Na(e){const t=e instanceof Uint8Array?e:new Uint8Array(e);return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}class Fa{static async generateIdentityWithRecovery(){const e=Pa.generateMnemonic(128),t=await Pa.mnemonicToSeed(e),r=Na(t.subarray?t.subarray(0,32):t.slice(0,32)),a=await Kr.importKeyPair(r);return{phrase:e,words:e.split(" "),publicKey:a}}static async generateIdentityWithRecovery24(){const e=Pa.generateMnemonic(256),t=await Pa.mnemonicToSeed(e),r=Na(t.subarray?t.subarray(0,32):t.slice(0,32)),a=await Kr.importKeyPair(r);return{phrase:e,words:e.split(" "),publicKey:a}}static async restoreFromPhrase(e){const t=e.trim().toLowerCase();if(!Pa.validateMnemonic(t))throw new Error("Invalid recovery phrase. Please check the words and try again.");const r=await Pa.mnemonicToSeed(t),a=Na(r.subarray?r.subarray(0,32):r.slice(0,32));return await Kr.importKeyPair(a)}static validatePhrase(e){const t=e.trim().toLowerCase();return Pa.validateMnemonic(t)}static getWordList(){return Pa.wordlists.english}static isValidWord(e){return Pa.wordlists.english.includes(e.toLowerCase())}static getSuggestions(e,t=5){const r=e.toLowerCase();return Pa.wordlists.english.filter(e=>e.startsWith(r)).slice(0,t)}static async derivePublicKeyFromPhrase(e){const t=e.trim().toLowerCase();if(!Pa.validateMnemonic(t))throw new Error("Invalid recovery phrase");const r=await Pa.mnemonicToSeed(t),a=Na(r.subarray?r.subarray(0,32):r.slice(0,32));return Kr.derivePublicKey(a)}static phraseToWords(e){return e.trim().toLowerCase().split(/\s+/)}static wordsToPhrase(e){return e.map(e=>e.toLowerCase().trim()).join(" ")}}const{toast:Ba}=c,Ha=Ba,Ka=we("AuthStore"),Va=u((e,t)=>({user:null,isAuthenticated:!1,isLoading:!1,error:null,lastUserFetch:null,loginSuccess:t=>e({isLoading:!1,isAuthenticated:!0,user:t,lastUserFetch:Date.now()}),loginFailure:t=>e({isLoading:!1,error:t}),logout:()=>e({user:null,isAuthenticated:!1,lastUserFetch:null}),setUser:t=>e({user:t,lastUserFetch:Date.now()}),fetchUser:async(r,a=!1)=>{const i=t(),o=Date.now(),n=i.lastUserFetch?o-i.lastUserFetch:Number.POSITIVE_INFINITY,s=n<3e5;if(!a&&i.user&&s)Ka.log("Using cached user data (age:",n,"ms)");else{e({isLoading:!0,error:null});try{const t=await r.getCurrentUser();e({user:t,isLoading:!1,isAuthenticated:!0,lastUserFetch:o})}catch(t){const r=t instanceof Error?t.message:"Failed to fetch user";Ka.error("Error fetching user:",t),e({error:r,isLoading:!1})}}}})),$a=Object.create(null);$a.open="0",$a.close="1",$a.ping="2",$a.pong="3",$a.message="4",$a.upgrade="5",$a.noop="6";const Ga=Object.create(null);Object.keys($a).forEach(e=>{Ga[$a[e]]=e});const Wa={type:"error",data:"parser error"},Qa="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Ya="function"==typeof ArrayBuffer,Ja=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Xa=({type:e,data:t},r,a)=>Qa&&t instanceof Blob?r?a(t):Za(t,a):Ya&&(t instanceof ArrayBuffer||Ja(t))?r?a(t):Za(new Blob([t]),a):a($a[e]+(t||"")),Za=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function ei(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let ti;const ri="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ai="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)ai[ri.charCodeAt(e)]=e;const ii="function"==typeof ArrayBuffer,oi=(e,t)=>{if("string"!=typeof e)return{type:"message",data:si(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:ni(e.substring(1),t)};return Ga[r]?e.length>1?{type:Ga[r],data:e.substring(1)}:{type:Ga[r]}:Wa},ni=(e,t)=>{if(ii){const r=(e=>{let t,r,a,i,o,n=.75*e.length,s=e.length,c=0;"="===e[e.length-1]&&(n--,"="===e[e.length-2]&&n--);const u=new ArrayBuffer(n),l=new Uint8Array(u);for(t=0;t<s;t+=4)r=ai[e.charCodeAt(t)],a=ai[e.charCodeAt(t+1)],i=ai[e.charCodeAt(t+2)],o=ai[e.charCodeAt(t+3)],l[c++]=r<<2|a>>4,l[c++]=(15&a)<<4|i>>2,l[c++]=(3&i)<<6|63&o;return u})(e);return si(r,t)}return{base64:!0,data:e}},si=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,ci=String.fromCharCode(30);function ui(){return new TransformStream({transform(e,t){!function(e,t){Qa&&e.data instanceof Blob?e.data.arrayBuffer().then(ei).then(t):Ya&&(e.data instanceof ArrayBuffer||Ja(e.data))?t(ei(e.data)):Xa(e,!1,e=>{ti||(ti=new TextEncoder),t(ti.encode(e))})}(e,r=>{const a=r.length;let i;if(a<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,a);else if(a<65536){i=new Uint8Array(3);const e=new DataView(i.buffer);e.setUint8(0,126),e.setUint16(1,a)}else{i=new Uint8Array(9);const e=new DataView(i.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(a))}e.data&&"string"!=typeof e.data&&(i[0]|=128),t.enqueue(i),t.enqueue(r)})}})}let li;function di(e){return e.reduce((e,t)=>e+t.length,0)}function hi(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let a=0;for(let i=0;i<t;i++)r[i]=e[0][a++],a===e[0].length&&(e.shift(),a=0);return e.length&&a<e[0].length&&(e[0]=e[0].slice(a)),r}function fi(e){if(e)return function(e){for(var t in fi.prototype)e[t]=fi.prototype[t];return e}(e)}fi.prototype.on=fi.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},fi.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},fi.prototype.off=fi.prototype.removeListener=fi.prototype.removeAllListeners=fi.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,a=this._callbacks["$"+e];if(!a)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var i=0;i<a.length;i++)if((r=a[i])===t||r.fn===t){a.splice(i,1);break}return 0===a.length&&delete this._callbacks["$"+e],this},fi.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],a=1;a<arguments.length;a++)t[a-1]=arguments[a];if(r){a=0;for(var i=(r=r.slice(0)).length;a<i;++a)r[a].apply(this,t)}return this},fi.prototype.emitReserved=fi.prototype.emit,fi.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},fi.prototype.hasListeners=function(e){return!!this.listeners(e).length};const pi="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),mi="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function bi(e,...t){return t.reduce((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t),{})}const gi=mi.setTimeout,yi=mi.clearTimeout;function vi(e,t){t.useNativeTimers?(e.setTimeoutFn=gi.bind(mi),e.clearTimeoutFn=yi.bind(mi)):(e.setTimeoutFn=mi.setTimeout.bind(mi),e.clearTimeoutFn=mi.clearTimeout.bind(mi))}function wi(e){return"string"==typeof e?function(e){let t=0,r=0;for(let a=0,i=e.length;a<i;a++)t=e.charCodeAt(a),t<128?r+=1:t<2048?r+=2:t<55296||t>=57344?r+=3:(a++,r+=4);return r}(e):Math.ceil(1.33*(e.byteLength||e.size))}function ki(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}class Si extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class _i extends fi{constructor(e){super(),this.writable=!1,vi(this,e),this.opts=e,this.query=e.query,this.socket=e.socket,this.supportsBinary=!e.forceBase64}onError(e,t,r){return super.emitReserved("error",new Si(e,t,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=oi(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&443!==Number(this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}(e);return t.length?"?"+t:""}}class Ei extends _i{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this._polling||!this.writable){let e=0;this._polling&&(e++,this.once("pollComplete",function(){--e||t()})),this.writable||(e++,this.once("drain",function(){--e||t()}))}else t()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const r=e.split(ci),a=[];for(let e=0;e<r.length;e++){const i=oi(r[e],t);if(a.push(i),"error"===i.type)break}return a})(e,this.socket.binaryType).forEach(e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)}),"closed"!==this.readyState&&(this._polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this._poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,a=new Array(r);let i=0;e.forEach((e,o)=>{Xa(e,!1,e=>{a[o]=e,++i===r&&t(a.join(ci))})})})(e,e=>{this.doWrite(e,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=ki()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}}let Ai=!1;try{Ai="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){}const Ii=Ai;function xi(){}class zi extends Ei{constructor(e){if(super(e),"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port}}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",(e,t)=>{this.onError("xhr post error",e,t)})}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(e,t)=>{this.onError("xhr poll error",e,t)}),this.pollXhr=e}}class Mi extends fi{constructor(e,t,r){super(),this.createRequest=e,vi(this,r),this._opts=r,this._method=r.method||"GET",this._uri=t,this._data=void 0!==r.data?r.data:null,this._create()}_create(){var e;const t=bi(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this._opts.xd;const r=this._xhr=this.createRequest(t);try{r.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let e in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(e)&&r.setRequestHeader(e,this._opts.extraHeaders[e])}}catch(e){}if("POST"===this._method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{r.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this._opts.cookieJar)||void 0===e||e.addCookies(r),"withCredentials"in r&&(r.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(r.timeout=this._opts.requestTimeout),r.onreadystatechange=()=>{var e;3===r.readyState&&(null===(e=this._opts.cookieJar)||void 0===e||e.parseCookies(r.getResponseHeader("set-cookie"))),4===r.readyState&&(200===r.status||1223===r.status?this._onLoad():this.setTimeoutFn(()=>{this._onError("number"==typeof r.status?r.status:0)},0))},r.send(this._data)}catch(e){return void this.setTimeoutFn(()=>{this._onError(e)},0)}"undefined"!=typeof document&&(this._index=Mi.requestsCount++,Mi.requests[this._index]=this)}_onError(e){this.emitReserved("error",e,this._xhr),this._cleanup(!0)}_cleanup(e){if(void 0!==this._xhr&&null!==this._xhr){if(this._xhr.onreadystatechange=xi,e)try{this._xhr.abort()}catch(e){}"undefined"!=typeof document&&delete Mi.requests[this._index],this._xhr=null}}_onLoad(){const e=this._xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}if(Mi.requestsCount=0,Mi.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",Ti);else if("function"==typeof addEventListener){addEventListener("onpagehide"in mi?"pagehide":"unload",Ti,!1)}function Ti(){for(let e in Mi.requests)Mi.requests.hasOwnProperty(e)&&Mi.requests[e].abort()}const Ri=function(){const e=qi({xdomain:!1});return e&&null!==e.responseType}();function qi(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||Ii))return new XMLHttpRequest}catch(e){}if(!t)try{return new(mi[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}const Oi="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class Li extends _i{get name(){return"websocket"}doOpen(){const e=this.uri(),t=this.opts.protocols,r=Oi?{}:bi(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(e,t,r)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],a=t===e.length-1;Xa(r,this.supportsBinary,e=>{try{this.doWrite(r,e)}catch(e){}a&&pi(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){void 0!==this.ws&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=ki()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}}const ji=mi.WebSocket||mi.MozWebSocket;const Ui={websocket:class extends Li{createSocket(e,t,r){return Oi?new ji(e,t,r):t?new ji(e,t):new ji(e)}doWrite(e,t){this.ws.send(t)}},webtransport:class extends _i{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(e){return this.emitReserved("error",e)}this._transport.closed.then(()=>{this.onClose()}).catch(e=>{this.onError("webtransport error",e)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(e=>{const t=function(e,t){li||(li=new TextDecoder);const r=[];let a=0,i=-1,o=!1;return new TransformStream({transform(n,s){for(r.push(n);;){if(0===a){if(di(r)<1)break;const e=hi(r,1);o=!(128&~e[0]),i=127&e[0],a=i<126?3:126===i?1:2}else if(1===a){if(di(r)<2)break;const e=hi(r,2);i=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),a=3}else if(2===a){if(di(r)<8)break;const e=hi(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),o=t.getUint32(0);if(o>Math.pow(2,21)-1){s.enqueue(Wa);break}i=o*Math.pow(2,32)+t.getUint32(4),a=3}else{if(di(r)<i)break;const e=hi(r,i);s.enqueue(oi(o?e:li.decode(e),t)),a=0}if(0===i||i>e){s.enqueue(Wa);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),a=ui();a.readable.pipeTo(e.writable),this._writer=a.writable.getWriter();const i=()=>{r.read().then(({done:e,value:t})=>{e||(this.onPacket(t),i())}).catch(e=>{})};i();const o={type:"open"};this.query.sid&&(o.data=`{"sid":"${this.query.sid}"}`),this._writer.write(o).then(()=>this.onOpen())})})}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],a=t===e.length-1;this._writer.write(r).then(()=>{a&&pi(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var e;null===(e=this._transport)||void 0===e||e.close()}},polling:class extends zi{constructor(e){super(e);const t=e&&e.forceBase64;this.supportsBinary=Ri&&!t}request(e={}){return Object.assign(e,{xd:this.xd},this.opts),new Mi(qi,this.uri(),e)}}},Di=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Ci=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function Pi(e){if(e.length>8e3)throw"URI too long";const t=e,r=e.indexOf("["),a=e.indexOf("]");-1!=r&&-1!=a&&(e=e.substring(0,r)+e.substring(r,a).replace(/:/g,";")+e.substring(a,e.length));let i=Di.exec(e||""),o={},n=14;for(;n--;)o[Ci[n]]=i[n]||"";return-1!=r&&-1!=a&&(o.source=t,o.host=o.host.substring(1,o.host.length-1).replace(/;/g,":"),o.authority=o.authority.replace("[","").replace("]","").replace(/;/g,":"),o.ipv6uri=!0),o.pathNames=function(e,t){const r=/\/{2,9}/g,a=t.replace(r,"/").split("/");"/"!=t.slice(0,1)&&0!==t.length||a.splice(0,1);"/"==t.slice(-1)&&a.splice(a.length-1,1);return a}(0,o.path),o.queryKey=function(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(e,t,a){t&&(r[t]=a)}),r}(0,o.query),o}const Ni="function"==typeof addEventListener&&"function"==typeof removeEventListener,Fi=[];Ni&&addEventListener("offline",()=>{Fi.forEach(e=>e())},!1);class Bi extends fi{constructor(e,t){if(super(),this.binaryType="arraybuffer",this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,e&&"object"==typeof e&&(t=e,e=null),e){const r=Pi(e);t.hostname=r.host,t.secure="https"===r.protocol||"wss"===r.protocol,t.port=r.port,r.query&&(t.query=r.query)}else t.host&&(t.hostname=Pi(t.host).host);vi(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},t.transports.forEach(e=>{const t=e.prototype.name;this.transports.push(t),this._transportsByName[t]=e}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},r=e.split("&");for(let e=0,a=r.length;e<a;e++){let a=r[e].split("=");t[decodeURIComponent(a[0])]=decodeURIComponent(a[1])}return t}(this.opts.query)),Ni&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Fi.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new this._transportsByName[e](r)}_open(){if(0===this.transports.length)return void this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);const e=this.opts.rememberUpgrade&&Bi.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket")?"websocket":this.transports[0];this.readyState="opening";const t=this.createTransport(e);t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",e=>this._onClose("transport close",e))}onOpen(){this.readyState="open",Bi.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush()}_onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const t=new Error("server error");t.code=e.data,this._onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this._pingInterval=e.pingInterval,this._pingTimeout=e.pingTimeout,this._maxPayload=e.maxPayload,this.onOpen(),"closed"!==this.readyState&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const e=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+e,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},e),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this._getWritablePackets();this.transport.send(e),this._prevBufferLen=e.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let t=0;t<this.writeBuffer.length;t++){const r=this.writeBuffer[t].data;if(r&&(e+=wi(r)),t>0&&e>this._maxPayload)return this.writeBuffer.slice(0,t);e+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const e=Date.now()>this._pingTimeoutTime;return e&&(this._pingTimeoutTime=0,pi(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),e}write(e,t,r){return this._sendPacket("message",e,t,r),this}send(e,t,r){return this._sendPacket("message",e,t,r),this}_sendPacket(e,t,r,a){if("function"==typeof t&&(a=t,t=void 0),"function"==typeof r&&(a=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const i={type:e,data:t,options:r};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),a&&this.once("flush",a),this.flush()}close(){const e=()=>{this._onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?r():e()}):this.upgrading?r():e()),this}_onError(e){if(Bi.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&"opening"===this.readyState)return this.transports.shift(),this._open();this.emitReserved("error",e),this._onClose("transport error",e)}_onClose(e,t){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),Ni&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const e=Fi.indexOf(this._offlineEventListener);-1!==e&&Fi.splice(e,1)}this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this._prevBufferLen=0}}}Bi.protocol=4;class Hi extends Bi{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),"open"===this.readyState&&this.opts.upgrade)for(let e=0;e<this._upgrades.length;e++)this._probe(this._upgrades[e])}_probe(e){let t=this.createTransport(e),r=!1;Bi.priorWebsocketSuccess=!1;const a=()=>{r||(t.send([{type:"ping",data:"probe"}]),t.once("packet",e=>{if(!r)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;Bi.priorWebsocketSuccess="websocket"===t.name,this.transport.pause(()=>{r||"closed"!==this.readyState&&(u(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())})}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}}))};function i(){r||(r=!0,u(),t.close(),t=null)}const o=e=>{const r=new Error("probe error: "+e);r.transport=t.name,i(),this.emitReserved("upgradeError",r)};function n(){o("transport closed")}function s(){o("socket closed")}function c(e){t&&e.name!==t.name&&i()}const u=()=>{t.removeListener("open",a),t.removeListener("error",o),t.removeListener("close",n),this.off("close",s),this.off("upgrading",c)};t.once("open",a),t.once("error",o),t.once("close",n),this.once("close",s),this.once("upgrading",c),-1!==this._upgrades.indexOf("webtransport")&&"webtransport"!==e?this.setTimeoutFn(()=>{r||t.open()},200):t.open()}onHandshake(e){this._upgrades=this._filterUpgrades(e.upgrades),super.onHandshake(e)}_filterUpgrades(e){const t=[];for(let r=0;r<e.length;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}}let Ki=class extends Hi{constructor(e,t={}){const r="object"==typeof e?e:t;(!r.transports||r.transports&&"string"==typeof r.transports[0])&&(r.transports=(r.transports||["polling","websocket","webtransport"]).map(e=>Ui[e]).filter(e=>!!e)),super(e,r)}};const Vi="function"==typeof ArrayBuffer,$i=Object.prototype.toString,Gi="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===$i.call(Blob),Wi="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===$i.call(File);function Qi(e){return Vi&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||Gi&&e instanceof Blob||Wi&&e instanceof File}function Yi(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Yi(e[t]))return!0;return!1}if(Qi(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Yi(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Yi(e[t]))return!0;return!1}function Ji(e){const t=[],r=e.data,a=e;return a.data=Xi(r,t),a.attachments=t.length,{packet:a,buffers:t}}function Xi(e,t){if(!e)return e;if(Qi(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let a=0;a<e.length;a++)r[a]=Xi(e[a],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const a in e)Object.prototype.hasOwnProperty.call(e,a)&&(r[a]=Xi(e[a],t));return r}return e}function Zi(e,t){return e.data=eo(e.data,t),delete e.attachments,e}function eo(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=eo(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=eo(e[r],t));return e}const to=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var ro;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(ro||(ro={}));class ao extends fi{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const r=t.type===ro.BINARY_EVENT;r||t.type===ro.BINARY_ACK?(t.type=r?ro.EVENT:ro.ACK,this.reconstructor=new io(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!Qi(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===ro[r.type])throw new Error("unknown packet type "+r.type);if(r.type===ro.BINARY_EVENT||r.type===ro.BINARY_ACK){const a=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const i=e.substring(a,t);if(i!=Number(i)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(i)}if("/"===e.charAt(t+1)){const a=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(a,t)}else r.nsp="/";const a=e.charAt(t+1);if(""!==a&&Number(a)==a){const a=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(a,t+1))}if(e.charAt(++t)){const a=this.tryParse(e.substr(t));if(!ao.isPayloadValid(r.type,a))throw new Error("invalid payload");r.data=a}return r}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case ro.CONNECT:return oo(t);case ro.DISCONNECT:return void 0===t;case ro.CONNECT_ERROR:return"string"==typeof t||oo(t);case ro.EVENT:case ro.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===to.indexOf(t[0]));case ro.ACK:case ro.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class io{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=Zi(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}function oo(e){return"[object Object]"===Object.prototype.toString.call(e)}var no=Object.freeze({__proto__:null,Decoder:ao,Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==ro.EVENT&&e.type!==ro.ACK||!Yi(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===ro.EVENT?ro.BINARY_EVENT:ro.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==ro.BINARY_EVENT&&e.type!==ro.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=Ji(e),r=this.encodeAsString(t.packet),a=t.buffers;return a.unshift(r),a}},get PacketType(){return ro}});function so(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const co=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class uo extends fi{constructor(e,t,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[so(e,"open",this.onopen.bind(this)),so(e,"packet",this.onpacket.bind(this)),so(e,"error",this.onerror.bind(this)),so(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){var r,a,i;if(co.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const o={type:ro.EVENT,data:t,options:{}};if(o.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,r=t.pop();this._registerAckCallback(e,r),o.id=e}const n=null===(a=null===(r=this.io.engine)||void 0===r?void 0:r.transport)||void 0===a?void 0:a.writable,s=this.connected&&!(null===(i=this.io.engine)||void 0===i?void 0:i._hasPingExpired());return this.flags.volatile&&!n||(s?(this.notifyOutgoingListeners(o),this.packet(o)):this.sendBuffer.push(o)),this.flags={},this}_registerAckCallback(e,t){var r;const a=null!==(r=this.flags.timeout)&&void 0!==r?r:this._opts.ackTimeout;if(void 0===a)return void(this.acks[e]=t);const i=this.io.setTimeoutFn(()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))},a),o=(...e)=>{this.io.clearTimeoutFn(i),t.apply(this,e)};o.withError=!0,this.acks[e]=o}emitWithAck(e,...t){return new Promise((r,a)=>{const i=(e,t)=>e?a(e):r(t);i.withError=!0,t.push(i),this.emit(e,...t)})}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push((e,...a)=>{this._queue[0];return null!==e?r.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...a)),r.pending=!1,this._drainQueue()}),this._queue.push(r),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth(e=>{this._sendConnectPacket(e)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:ro.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(e=>{if(!this.sendBuffer.some(t=>String(t.id)===e)){const t=this.acks[e];delete this.acks[e],t.withError&&t.call(this,new Error("socket has been disconnected"))}})}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case ro.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case ro.EVENT:case ro.BINARY_EVENT:this.onevent(e);break;case ro.ACK:case ro.BINARY_ACK:this.onack(e);break;case ro.DISCONNECT:this.ondisconnect();break;case ro.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let r=!1;return function(...a){r||(r=!0,t.packet({type:ro.ACK,id:e,data:a}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(delete this.acks[e.id],t.withError&&e.data.unshift(null),t.apply(this,e.data))}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(e=>this.emitEvent(e)),this.receiveBuffer=[],this.sendBuffer.forEach(e=>{this.notifyOutgoingListeners(e),this.packet(e)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(e=>e()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:ro.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const r of t)r.apply(this,e.data)}}}function lo(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}lo.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=1&Math.floor(10*t)?e+r:e-r}return 0|Math.min(e,this.max)},lo.prototype.reset=function(){this.attempts=0},lo.prototype.setMin=function(e){this.ms=e},lo.prototype.setMax=function(e){this.max=e},lo.prototype.setJitter=function(e){this.jitter=e};class ho extends fi{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,vi(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new lo({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const a=t.parser||no;this.encoder=new a.Encoder,this.decoder=new a.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,e||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new Ki(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const a=so(t,"open",function(){r.onopen(),e&&e()}),i=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},o=so(t,"error",i);if(!1!==this._timeout){const e=this._timeout,r=this.setTimeoutFn(()=>{a(),i(new Error("timeout")),t.close()},e);this.opts.autoUnref&&r.unref(),this.subs.push(()=>{this.clearTimeoutFn(r)})}return this.subs.push(a),this.subs.push(o),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(so(e,"ping",this.onping.bind(this)),so(e,"data",this.ondata.bind(this)),so(e,"error",this.onerror.bind(this)),so(e,"close",this.onclose.bind(this)),so(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){pi(()=>{this.emitReserved("packet",e)},this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r?this._autoConnect&&!r.active&&r.connect():(r=new uo(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach(e=>e()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(e,t){var r;this.cleanup(),null===(r=this.engine)||void 0===r||r.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn(()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open(t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()}))},t);this.opts.autoUnref&&r.unref(),this.subs.push(()=>{this.clearTimeoutFn(r)})}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const fo={};function po(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let a=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),a=Pi(e)),a.port||(/^(http|ws)$/.test(a.protocol)?a.port="80":/^(http|ws)s$/.test(a.protocol)&&(a.port="443")),a.path=a.path||"/";const i=-1!==a.host.indexOf(":")?"["+a.host+"]":a.host;return a.id=a.protocol+"://"+i+":"+a.port+t,a.href=a.protocol+"://"+i+(r&&r.port===a.port?"":":"+a.port),a}(e,(t=t||{}).path||"/socket.io"),a=r.source,i=r.id,o=r.path,n=fo[i]&&o in fo[i].nsps;let s;return t.forceNew||t["force new connection"]||!1===t.multiplex||n?s=new ho(a,t):(fo[i]||(fo[i]=new ho(a,t)),s=fo[i]),r.query&&!t.query&&(t.query=r.queryKey),s.socket(r.path,t)}Object.assign(po,{Manager:ho,Socket:uo,io:po,connect:po});const mo=we("SessionSocket");function bo({userId:e,activeSessionId:a,currentDeviceId:i,refreshSessions:o,logout:n,clearSessionState:s,baseURL:c,onRemoteSignOut:u,onSessionRemoved:l}){const d=t(null),h=t(null),f=t(o),p=t(n),m=t(s),b=t(u),g=t(l),y=t(a),v=t(i);r(()=>{f.current=o,p.current=n,m.current=s,b.current=u,g.current=l,y.current=a,v.current=i},[o,n,s,u,l,a,i]),r(()=>{if(!e||!c)return void(d.current&&h.current&&(d.current.emit("leave",{userId:h.current}),h.current=null));const t=`user:${e}`;d.current||(d.current=po(c,{transports:["websocket"]}));const r=d.current;h.current!==t&&(h.current&&r.emit("leave",{userId:h.current}),r.emit("join",{userId:t}),h.current=t,mo.log("Emitting join for room:",t));const a=()=>{mo.log("Socket connected:",r.id)},i=async e=>{mo.log("Received session_update:",e);const t=y.current,r=v.current;if("session_removed"===e.type)if(e.sessionId&&g.current&&g.current(e.sessionId),e.sessionId===t){b.current?b.current():Ha.info("You have been signed out remotely.");try{await m.current()}catch(e){__DEV__&&j.error("Failed to clear session state after session_removed",e instanceof Error?e:new Error(String(e)),{component:"useSessionSocket"})}}else f.current().catch(e=>{__DEV__&&j.debug("Failed to refresh sessions after session_removed",{component:"useSessionSocket"},e)});else if("device_removed"===e.type){if(e.sessionIds&&g.current)for(const t of e.sessionIds)g.current(t);if(e.deviceId&&e.deviceId===r){b.current?b.current():Ha.info("This device has been removed. You have been signed out.");try{await m.current()}catch(e){__DEV__&&j.error("Failed to clear session state after device_removed",e instanceof Error?e:new Error(String(e)),{component:"useSessionSocket"})}}else f.current().catch(e=>{__DEV__&&j.debug("Failed to refresh sessions after device_removed",{component:"useSessionSocket"},e)})}else if("sessions_removed"===e.type){if(e.sessionIds&&g.current)for(const t of e.sessionIds)g.current(t);if(e.sessionIds&&t&&e.sessionIds.includes(t)){b.current?b.current():Ha.info("You have been signed out remotely.");try{await m.current()}catch(e){__DEV__&&j.error("Failed to clear session state after sessions_removed",e instanceof Error?e:new Error(String(e)),{component:"useSessionSocket"})}}else f.current().catch(e=>{__DEV__&&j.debug("Failed to refresh sessions after sessions_removed",{component:"useSessionSocket"},e)})}else if(f.current().catch(e=>{__DEV__&&j.debug("Failed to refresh sessions after session_update",{component:"useSessionSocket"},e)}),e.sessionId===t){b.current?b.current():Ha.info("You have been signed out remotely.");try{await m.current()}catch(e){mo.error("Failed to clear session state after session_update:",e)}}};return r.on("connect",a),r.on("session_update",i),()=>{r.off("connect",a),r.off("session_update",i),h.current===t&&(r.emit("leave",{userId:t}),h.current=null)}},[e,c])}const go=["Invalid or expired session","Session is invalid","Session not found","Session expired"],yo=e=>"object"==typeof e&&null!==e,vo=e=>{if(!yo(e))return;const t=e.response;return t?.status},wo=e=>{if(401===vo(e))return!0;if(!yo(e))return!1;if(401===e.status)return!0;const t=So(e)?.toLowerCase();return!!t&&(!(!t.includes("http 401")&&!t.includes("401"))||go.some(e=>t.includes(e.toLowerCase())))},ko=e=>{if(!(yo(e)||e instanceof Error))return!1;const t=So(e,"").toLowerCase(),r=e.code;if(t.includes("timeout")||t.includes("cancelled")||t.includes("econnaborted")||t.includes("aborted")||t.includes("request timeout or cancelled"))return!0;if("TIMEOUT"===r||"NETWORK_ERROR"===r||"ECONNABORTED"===r)return!0;if(e instanceof Error&&"AbortError"===e.name)return!0;if(e instanceof TypeError){const t=e.message.toLowerCase();if(t.includes("fetch")||t.includes("network")||t.includes("failed to fetch"))return!0}return!1},So=(e,t="Unexpected error")=>{if("string"==typeof e&&e.trim().length>0)return e;if(!yo(e))return t;const r=e;if(r.message&&r.message.trim().length>0)return r.message;const a=e,i=a.response?.data?.message??a.response?.data?.error;return"string"==typeof i&&i.trim().length>0?i:t},_o=(e,{defaultMessage:t,code:r,status:a,onError:i,setAuthError:o,logger:n})=>{const s=a??vo(e)??(wo(e)?401:500),c=So(e,t);return n&&n(c,e),o?.(c),i?.({message:c,code:r,status:s}),c};function Eo(e){const t=(new Date).toISOString();return{sessionId:e.sessionId,deviceId:e.deviceId||"",expiresAt:e.expiresAt||t,lastActive:e.lastActive||t,userId:e.userId||""}}function Ao(e){return[...e].sort((e,t)=>{const r=new Date(e.lastActive).getTime(),a=new Date(t.lastActive).getTime();return r!==a?a-r:e.sessionId.localeCompare(t.sessionId)})}function Io(e,t){if(!e.length)return[];const r=new Map;for(const a of e){if(!a.userId)continue;const e=r.get(a.userId);if(e){const i=t&&a.sessionId===t,o=t&&e.sessionId===t;if(i&&!o)r.set(a.userId,a);else{if(!i&&o)continue;{const t=new Date(e.lastActive).getTime();new Date(a.lastActive).getTime()>t&&r.set(a.userId,a)}}}else r.set(a.userId,a)}return Array.from(r.values())}function xo(e,t,r=!0){if(!e.length)return[];const a=function(e){const t=new Map;for(const r of e){const e=t.get(r.sessionId);if(e){const a=new Date(e.lastActive).getTime();new Date(r.lastActive).getTime()>a&&t.set(r.sessionId,r)}else t.set(r.sessionId,r)}return Array.from(t.values())}(e.map(Eo));return Ao(r?Io(a,t):a)}const zo=(e,t,r)=>{const a=new Date;return e.map(e=>({sessionId:e.sessionId,deviceId:e.deviceId||t||"",expiresAt:e.expiresAt||new Date(a.getTime()+6048e5).toISOString(),lastActive:e.lastActive||a.toISOString(),userId:e.user?.id||e.userId||(e.user?._id?e.user._id.toString():void 0)||r||"",isCurrent:Boolean(e.isCurrent)}))},Mo=async(e,t,{fallbackDeviceId:r,fallbackUserId:a,logger:i}={})=>{try{const i=await e.getDeviceSessions(t);return zo(i,r,a)}catch(o){__DEV__&&i&&i("Failed to get device sessions, falling back to user sessions",o);const n=await e.getSessionsBySessionId(t);return zo(n,r,a)}},To=()=>"undefined"==typeof window||void 0===window.localStorage?(()=>{const e=new Map;return{getItem:async t=>e.has(t)?e.get(t):null,async setItem(t,r){e.set(t,r)},async removeItem(t){e.delete(t)},async clear(){e.clear()}}})():{async getItem(e){try{return window.localStorage.getItem(e)}catch{return null}},async setItem(e,t){try{window.localStorage.setItem(e,t)}catch{}},async removeItem(e){try{window.localStorage.removeItem(e)}catch{}},async clear(){try{window.localStorage.clear()}catch{}}};let Ro=null;const qo=async()=>"undefined"!=typeof navigator&&"ReactNative"===navigator.product?(async()=>{if(Ro)return Ro;try{const e=await import("@react-native-async-storage/async-storage");return Ro=e.default,Ro}catch(e){throw __DEV__&&console.error("Failed to import AsyncStorage:",e),new Error("AsyncStorage is required in React Native environment")}})():To(),Oo=(e="oxy_session")=>({activeSessionId:`${e}_active_session_id`,sessionIds:`${e}_session_ids`,language:`${e}_language`}),Lo="oxy_query_cache",jo=e=>new d({defaultOptions:{queries:{staleTime:3e5,gcTime:18e5,retry:3,retryDelay:e=>Math.min(1e3*2**e,3e4),refetchOnReconnect:!0,refetchOnWindowFocus:!1,networkMode:"offlineFirst"},mutations:{retry:1,networkMode:"offlineFirst"}}}),Uo=async e=>{const t=(e=>({persistClient:async t=>{try{const r=JSON.stringify({clientState:t,timestamp:Date.now(),version:"1"});await e.setItem(Lo,r)}catch(e){__DEV__&&console.warn("[QueryClient] Failed to persist cache:",e)}},restoreClient:async()=>{try{const t=await e.getItem(Lo);if(!t)return;const r=JSON.parse(t);if("1"!==r.version)return void await e.removeItem(Lo);const a=2592e6;return r.timestamp&&Date.now()-r.timestamp>a?void await e.removeItem(Lo):r.clientState}catch(e){return void(__DEV__&&console.warn("[QueryClient] Failed to restore cache:",e))}},removeClient:async()=>{try{await e.removeItem(Lo)}catch(e){__DEV__&&console.warn("[QueryClient] Failed to remove cache:",e)}}}))(e);await t.removeClient()},Do="Failed to save session data",Co=({oxyServices:e,storage:r,storageKeyPrefix:n,loginSuccess:s,logoutStore:c,applyLanguagePreference:u,onAuthStateChange:l,onError:d,setAuthError:h,logger:f,setTokenReady:p,queryClient:m})=>{const[b,g]=a([]),[y,v]=a(null),w=t(null),k=t(new Set),S=t(0),_=o(()=>Oo(n),[n]),E=i(async e=>{if(r)try{const t=Array.from(new Set(e));await r.setItem(_.sessionIds,JSON.stringify(t))}catch(e){f?f(Do,e):__DEV__&&console.warn("Failed to save session IDs:",e)}},[f,r,_.sessionIds]),A=i((e,t={})=>{g(a=>{const i=t.merge?function(e,t,r,a=!0){if(!e.length&&!t.length)return[];if(!e.length)return xo(t,r,a);if(!t.length)return xo(e,r,a);const i=e.map(Eo),o=t.map(Eo),n=new Map;for(const e of i)n.set(e.sessionId,e);for(const e of o)n.set(e.sessionId,e);const s=Array.from(n.values());return Ao(a?Io(s,r):s)}(a,e,y,!1):xo(e,y,!1);return r&&E(i.map(e=>e.sessionId)),function(e,t){if(e.length!==t.length)return!1;const r=Ao(e),a=Ao(t);return r.every((e,t)=>function(e,t){return e.sessionId===t.sessionId}(e,a[t]))}(a,i)?a:i})},[y,E,r]),I=i(async e=>{if(r)try{await r.setItem(_.activeSessionId,e)}catch(e){_o(e,{defaultMessage:Do,code:"SESSION_PERSISTENCE_ERROR",onError:d,setAuthError:h,logger:f})}},[f,d,h,r,_.activeSessionId]);i(async()=>{if(r)try{await r.removeItem(_.activeSessionId)}catch(e){_o(e,{defaultMessage:Do,code:"SESSION_PERSISTENCE_ERROR",onError:d,setAuthError:h,logger:f})}},[f,d,h,r,_.activeSessionId]);const x=i(async()=>{if(r)try{await r.removeItem(_.activeSessionId),await r.removeItem(_.sessionIds)}catch(e){_o(e,{defaultMessage:"Failed to clear storage",code:"STORAGE_ERROR",onError:d,setAuthError:h,logger:f})}},[f,d,h,r,_.activeSessionId,_.sessionIds]),z=i(async()=>{if(g([]),v(null),c(),m&&m.clear(),r)try{await Uo(r)}catch(e){f&&f("Failed to clear persisted query cache",e)}await x(),l?.(null)},[x,c,l,m,r,f]),M=i(async(t,r)=>{await e.getTokenBySession(t),p?.(!0),v(t),s(r),await I(t),await u(r),l?.(r)},[u,s,l,e,I,p]),T=i(e=>{k.current.add(e),setTimeout(()=>{k.current.delete(e)},5e3)},[]),R=i(async t=>{if(!t.length)return null;const r=await(async(e,t,{useHeaderValidation:r=!0,maxConcurrency:a=5}={})=>{if(!t.length)return[];const i=Array.from(new Set(t)),o=Math.max(1,Math.min(a,i.length)),n=[];let s=0;return await Promise.all(Array.from({length:o},async()=>{for(;s<i.length;){const t=s;s+=1;const a=i[t];try{const t=await e.validateSession(a,{useHeaderValidation:r}),i=Boolean(t?.valid);n.push({sessionId:a,valid:i,user:t?.user,raw:t})}catch(e){n.push({sessionId:a,valid:!1,error:e})}}})),n})(e,t,{maxConcurrency:3}),a=r.find(e=>e.valid);if(!a)return null;const i=await e.validateSession(a.sessionId,{useHeaderValidation:!0});if(!i?.valid||!i.user)return null;const o=i.user;return await M(a.sessionId,o),o},[M,e]),q=i(async t=>{try{const r=await e.validateSession(t,{useHeaderValidation:!0});if(!r?.valid)throw new Error("Session is invalid or expired");if(!r.user)throw new Error("User data not available from session validation");const a=r.user;await M(t,a);try{const r=await Mo(e,t,{fallbackUserId:a.id,logger:f});A(r,{merge:!0})}catch(e){__DEV__&&console.warn("Failed to synchronize sessions after switch:",e)}return a}catch(e){const r=wo(e);if(r&&(A(b.filter(e=>e.sessionId!==t),{merge:!1}),t===y)){const e=b.filter(e=>e.sessionId!==t&&!k.current.has(e.sessionId)).map(e=>e.sessionId),r=await R(e);if(r)return r}throw _o(e,{defaultMessage:"Failed to switch session",code:r?"INVALID_SESSION":"SESSION_SWITCH_ERROR",onError:d,setAuthError:h,logger:f}),e instanceof Error?e:new Error("Failed to switch session")}},[M,y,R,f,s,d,e,b,h,A]),O=i(async t=>{if(!y)return;if(w.current)return void await w.current;const r=Date.now();if(r-S.current<500)return;S.current=r;const a=(async()=>{try{const r=await Mo(e,y,{fallbackUserId:t,logger:f});A(r,{merge:!0})}catch(e){if(wo(e)){const e=b.filter(e=>e.sessionId!==y&&!k.current.has(e.sessionId)).map(e=>e.sessionId);return void(await R(e)||await z())}_o(e,{defaultMessage:"Failed to refresh sessions",code:"SESSION_REFRESH_ERROR",onError:d,setAuthError:h,logger:f})}finally{w.current=null,S.current=Date.now()}})();w.current=a,await a},[y,z,R,f,d,e,b,h,A]),L=Boolean(w.current);return{sessions:b,activeSessionId:y,setActiveSessionId:v,updateSessions:A,switchSession:q,refreshSessions:O,clearSessionState:z,saveActiveSessionId:I,trackRemovedSession:T,storageKeys:_,isRefreshInFlight:L}},Po="LOGOUT_ALL_ERROR",No={OxyAuth:()=>require("../screens/OxyAuthScreen").default,AccountOverview:()=>require("../screens/AccountOverviewScreen").default,AccountSettings:()=>require("../screens/AccountSettingsScreen").default,AccountCenter:()=>require("../screens/AccountCenterScreen").default,AccountSwitcher:()=>require("../screens/AccountSwitcherScreen").default,AccountVerification:()=>require("../screens/AccountVerificationScreen").default,SessionManagement:()=>require("../screens/SessionManagementScreen").default,PaymentGateway:()=>require("../screens/PaymentGatewayScreen").default,Profile:()=>require("../screens/ProfileScreen").default,LanguageSelector:()=>require("../screens/LanguageSelectorScreen").default,PrivacySettings:()=>require("../screens/PrivacySettingsScreen").default,SearchSettings:()=>require("../screens/SearchSettingsScreen").default,FileManagement:()=>require("../screens/FileManagementScreen").default,HelpSupport:()=>require("../screens/HelpSupportScreen").default,FAQ:()=>require("../screens/FAQScreen").default,Feedback:()=>require("../screens/FeedbackScreen").default,LegalDocuments:()=>require("../screens/LegalDocumentsScreen").default,AppInfo:()=>require("../screens/AppInfoScreen").default,PremiumSubscription:()=>require("../screens/PremiumSubscriptionScreen").default,WelcomeNewUser:()=>require("../screens/WelcomeNewUserScreen").default,UserLinks:()=>require("../screens/UserLinksScreen").default,HistoryView:()=>require("../screens/HistoryViewScreen").default,SavesCollections:()=>require("../screens/SavesCollectionsScreen").default,EditProfileField:()=>require("../screens/EditProfileFieldScreen").default,LearnMoreUsernames:()=>require("../screens/LearnMoreUsernamesScreen").default,KarmaCenter:()=>require("../screens/karma/KarmaCenterScreen").default,KarmaLeaderboard:()=>require("../screens/karma/KarmaLeaderboardScreen").default,KarmaRewards:()=>require("../screens/karma/KarmaRewardsScreen").default,KarmaRules:()=>require("../screens/karma/KarmaRulesScreen").default,AboutKarma:()=>require("../screens/karma/KarmaAboutScreen").default,KarmaFAQ:()=>require("../screens/karma/KarmaFAQScreen").default,FollowersList:()=>require("../screens/FollowersListScreen").default,FollowingList:()=>require("../screens/FollowingListScreen").default},Fo=e=>{let t;const r=new Set,a=(e,a)=>{const i="function"==typeof e?e(t):e;if(!Object.is(i,t)){const e=t;t=(null!=a?a:"object"!=typeof i||null===i)?i:Object.assign({},t,i),r.forEach(r=>r(t,e))}},i=()=>t,o={setState:a,getState:i,getInitialState:()=>n,subscribe:e=>(r.add(e),()=>r.delete(e))},n=t=e(a,i,o);return o},Bo={currentScreen:null,screenProps:{},currentStep:void 0,history:[],isOpen:!1,fullScreen:!1},Ho=(Ko=()=>Bo)?Fo(Ko):Fo;var Ko;const Vo=e=>{const t="string"==typeof e?e:e.screen,r="string"==typeof e?{}:e.props||{},a="string"!=typeof e&&(e.fullScreen??!1);if(!(t in No))return void(__DEV__&&console.warn(`[BottomSheet] Invalid route: ${t}`));const i=Ho.getState();i.currentScreen&&i.currentScreen!==t&&Ho.setState({history:[...i.history,{screen:i.currentScreen,props:i.screenProps,step:i.currentStep}]}),Ho.setState({currentScreen:t,screenProps:r,currentStep:"number"==typeof r.initialStep?r.initialStep:void 0,isOpen:!0,fullScreen:a})},$o=require("./locales/en-US.json"),Go=require("./locales/es-ES.json"),Wo=require("./locales/ca-ES.json"),Qo=require("./locales/fr-FR.json"),Yo=require("./locales/de-DE.json"),Jo=require("./locales/it-IT.json"),Xo=require("./locales/pt-PT.json"),Zo=require("./locales/ja-JP.json"),en=require("./locales/ko-KR.json"),tn=require("./locales/zh-CN.json"),rn=require("./locales/ar-SA.json"),an={en:$o,"en-US":$o,es:Go,"es-ES":Go,ca:Wo,"ca-ES":Wo,fr:Qo,"fr-FR":Qo,de:Yo,"de-DE":Yo,it:Jo,"it-IT":Jo,pt:Xo,"pt-PT":Xo,ja:Zo,"ja-JP":Zo,ko:en,"ko-KR":en,zh:tn,"zh-CN":tn,ar:rn,"ar-SA":rn},on="en-US";function nn(e,t,r){let a=(i=an[e&&an[e]?e:on]||an[on],t.split(".").reduce((e,t)=>e&&null!=e[t]?e[t]:void 0,i));var i;return"string"!=typeof a?t:a}const sn={accounts:{},accountOrder:[],accountsArray:[],loading:!1,loadingSessionIds:new Set,error:null},cn=(e,t)=>{const r=[];for(const a of t){const t=e[a];t&&r.push(t)}return r},un=(e,t,r,a)=>{const i=t.name?.full||t.name?.first||t.username||"Account",o=t.id||t._id?.toString();let n;return r&&r.avatar===t.avatar&&r.avatarUrl?n=r.avatarUrl:t.avatar&&a&&(n=a.getFileDownloadUrl(t.avatar,"thumb")),{sessionId:e,userId:o,username:t.username||"",displayName:i,avatar:t.avatar,avatarUrl:n}},ln=u((e,t)=>({...sn,setAccounts:t=>e(e=>{const r={},a=[],i=new Set;for(const e of t)i.has(e.sessionId)||(i.add(e.sessionId),r[e.sessionId]=e,a.push(e.sessionId));const o=cn(r,a);return a.length===e.accountOrder.length&&a.every((t,r)=>t===e.accountOrder[r])&&a.every(t=>{const a=e.accounts[t],i=r[t];return a&&a.sessionId===i.sessionId&&a.userId===i.userId&&a.avatar===i.avatar&&a.avatarUrl===i.avatarUrl})?{}:{accounts:r,accountOrder:a,accountsArray:o}}),addAccount:t=>e(e=>{if(e.accounts[t.sessionId]){const r=e.accounts[t.sessionId];if(r.avatar===t.avatar&&r.avatarUrl===t.avatarUrl)return{};const a={...e.accounts,[t.sessionId]:t};return{accounts:a,accountsArray:cn(a,e.accountOrder)}}const r={...e.accounts,[t.sessionId]:t},a=[t.sessionId,...e.accountOrder];return{accounts:r,accountOrder:a,accountsArray:cn(r,a)}}),updateAccount:(t,r)=>e(e=>{const a=e.accounts[t];if(!a)return{};const i={...a,...r};if(a.avatar===i.avatar&&a.avatarUrl===i.avatarUrl)return{};const o={...e.accounts,[t]:i};return{accounts:o,accountsArray:cn(o,e.accountOrder)}}),removeAccount:t=>e(e=>{if(!e.accounts[t])return{};const{[t]:r,...a}=e.accounts,i=e.accountOrder.filter(e=>e!==t);return{accounts:a,accountOrder:i,accountsArray:cn(a,i)}}),moveAccountToTop:t=>e(e=>{if(!e.accounts[t])return{};const r=e.accountOrder.filter(e=>e!==t),a=[t,...r];return{accountOrder:a,accountsArray:cn(e.accounts,a)}}),setLoading:t=>e({loading:t}),setLoadingSession:(t,r)=>e(e=>{const a=new Set(e.loadingSessionIds);return r?a.add(t):a.delete(t),{loadingSessionIds:a}}),setError:t=>e({error:t}),loadAccounts:async(r,a,i=[],o=!0)=>{const n=t(),s=Array.from(new Set(r));if(0!==s.length)try{const r=new Map(i.map(e=>[e.sessionId,e]));for(const e of Object.values(n.accounts))r.set(e.sessionId,e);const c=s.filter(e=>!r.has(e));if(0===c.length){const e=s.map(e=>r.get(e)).filter(e=>void 0!==e);return void t().setAccounts(e)}if(n.loading)return;e({loading:!0,error:null});try{const e=await a.getUsersBySessions(c),i=new Map;for(const{sessionId:t,user:o}of e)if(o&&!i.has(t)){const e=r.get(t);i.set(t,un(t,o,e,a))}for(const[e,t]of i)r.set(e,t);const u=o?s:[...s,...n.accountOrder],l=new Set,d=[];for(const e of u){if(l.has(e))continue;l.add(e);const t=r.get(e);t&&d.push(t)}t().setAccounts(d)}catch(t){const r=t instanceof Error?t.message:"Failed to load accounts";__DEV__&&console.error("AccountStore: Failed to load accounts:",t),e({error:r})}finally{e({loading:!1})}}catch(t){const r=t instanceof Error?t.message:"Failed to load accounts";__DEV__&&console.error("AccountStore: Failed to load accounts:",t),e({error:r,loading:!1})}else t().setAccounts([])},reset:()=>e(sn)})),dn={accounts:{all:["accounts"],lists:()=>[...dn.accounts.all,"list"],list:e=>[...dn.accounts.lists(),e],details:()=>[...dn.accounts.all,"detail"],detail:e=>[...dn.accounts.details(),e],current:()=>[...dn.accounts.all,"current"],settings:()=>[...dn.accounts.all,"settings"]},users:{all:["users"],lists:()=>[...dn.users.all,"list"],list:e=>[...dn.users.lists(),e],details:()=>[...dn.users.all,"detail"],detail:e=>[...dn.users.details(),e],profile:e=>[...dn.users.details(),e,"profile"]},sessions:{all:["sessions"],lists:()=>[...dn.sessions.all,"list"],list:e=>[...dn.sessions.lists(),e],details:()=>[...dn.sessions.all,"detail"],detail:e=>[...dn.sessions.details(),e],active:()=>[...dn.sessions.all,"active"],device:e=>[...dn.sessions.all,"device",e]},devices:{all:["devices"],lists:()=>[...dn.devices.all,"list"],list:e=>[...dn.devices.lists(),e],details:()=>[...dn.devices.all,"detail"],detail:e=>[...dn.devices.details(),e]},privacy:{all:["privacy"],settings:e=>[...dn.privacy.all,"settings",e||"current"]},security:{all:["security"],activity:(e,t,r)=>[...dn.security.all,"activity",e,t,r],recent:e=>[...dn.security.all,"recent",e]}},hn=e=>{e.invalidateQueries({queryKey:dn.accounts.all})},fn=e=>{e.invalidateQueries({queryKey:dn.users.all})},pn=e=>{e.invalidateQueries({queryKey:dn.sessions.all})};class mn extends Error{constructor(e="Session needs to be synced. Please try again."){super(e),this.name="SessionSyncRequiredError"}}class bn extends Error{constructor(e="Authentication failed. Please sign in again."){super(e),this.name="AuthenticationFailedError"}}async function gn(e,t){if(!e.hasValidToken()&&t)try{await e.getTokenBySession(t)}catch(e){const t=e instanceof Error?e.message:String(e);if(t.includes("AUTH_REQUIRED_OFFLINE_SESSION")||t.includes("offline"))throw new mn;throw e}}function yn(e){if(!e||"object"!=typeof e)return!1;const t=e,r=t.message||"";return 401===(t.status||t.response?.status)||r.includes("Authentication required")||r.includes("Invalid or missing authorization header")}async function vn(e,t){try{return await e()}catch(r){if(!yn(r))throw r;if(t?.syncSession&&t?.activeSessionId&&t?.oxyServices)try{return await t.syncSession(),await t.oxyServices.getTokenBySession(t.activeSessionId),await e()}catch{throw new bn}throw new bn}}async function wn(e,t,r,a){return await gn(e,t),vn(r,{syncSession:a,activeSessionId:t,oxyServices:e})}function kn(e,t,r){const{updateAccount:a}=ln.getState();a(e,{avatar:t,avatarUrl:r.getFileDownloadUrl(t,"thumb")+`?t=${Date.now()}`})}function Sn(){return"undefined"!=typeof window&&"undefined"!=typeof document&&void 0!==document.documentElement}function _n(){if(!Sn())return!1;return"auth.oxy.so"===window.location.hostname}const En=n(null);let An=null;const In=({children:n,oxyServices:s,baseURL:c,authWebUrl:u,authRedirectUri:d,storageKeyPrefix:f="oxy_session",onAuthStateChange:p,onError:m})=>{const b=t(null);if(!b.current)if(s)b.current=s;else{if(!c)throw new Error("Either oxyServices or baseURL must be provided to OxyContextProvider");b.current=new Pe({baseURL:c,authWebUrl:u,authRedirectUri:d})}const g=b.current,{user:y,isAuthenticated:v,isLoading:w,error:k,loginSuccess:S,loginFailure:_,logoutStore:E}=Va(l(e=>({user:e.user,isAuthenticated:e.isAuthenticated,isLoading:e.isLoading,error:e.error,loginSuccess:e.loginSuccess,loginFailure:e.loginFailure,logoutStore:e.logout}))),[A,I]=a(!0),[x,z]=a(!1),M=Va.setState,T=i((e,t)=>{__DEV__&&console.warn(`[OxyContext] ${e}`,t)},[]),R=o(()=>Oo(f),[f]),q=t(null),[O,L]=a(null);r(()=>{let e=!0;return qo().then(t=>{e&&(q.current=t,L(t))}).catch(t=>{e&&(T("Failed to initialize storage",t),m?.({message:"Failed to initialize storage",code:"STORAGE_INIT_ERROR",status:500}))}),()=>{e=!1}},[T,m]);const{currentLanguage:U,metadata:D,languageName:C,nativeLanguageName:P,setLanguage:N,applyLanguagePreference:F}=(({storage:e,languageKey:t,onError:n,logger:s})=>{const[c,u]=a("en-US"),l=i(async()=>{if(e)try{const r=await e.getItem(t),a=je(r)||r;a&&u(a)}catch(e){const t=So(e,"Failed to load language preference");n?.({message:t,code:"LANGUAGE_LOAD_ERROR",status:500}),s?s(t,e):__DEV__&&console.warn("Failed to load language preference:",e)}},[t,s,n,e]);r(()=>{l().catch(e=>{s&&s("Unexpected error loading language",e)})},[l,s]);const d=i(async r=>{if(!e)throw new Error("Storage not initialized");const a=je(r)||r;try{await e.setItem(t,a),u(a)}catch(e){const t=So(e,"Failed to save language preference");throw n?.({message:t,code:"LANGUAGE_SAVE_ERROR",status:500}),s?s(t,e):__DEV__&&console.warn("Failed to save language preference:",e),e instanceof Error?e:new Error(t)}},[t,s,n,e]),h=i(async r=>{if(!e||!r)return;const a=r?.language;if(a)try{const r=je(a)||a;await e.setItem(t,r),u(r)}catch(e){s?s("Failed to apply server language preference",e):__DEV__&&console.warn("Failed to apply server language preference",e)}},[t,s,e]),f=o(()=>qe(c),[c]),p=o(()=>Oe(c),[c]),m=o(()=>Le(c),[c]);return{currentLanguage:c,metadata:f,languageName:p,nativeLanguageName:m,setLanguage:d,applyLanguagePreference:h,hydrateLanguage:l}})({storage:O,languageKey:R.language,onError:m,logger:T}),B=h(),{sessions:H,activeSessionId:K,setActiveSessionId:V,updateSessions:$,switchSession:G,refreshSessions:W,clearSessionState:Q,saveActiveSessionId:Y,trackRemovedSession:J}=Co({oxyServices:g,storage:O,storageKeyPrefix:f,loginSuccess:S,logoutStore:E,applyLanguagePreference:F,onAuthStateChange:p,onError:m,setAuthError:e=>M({error:e}),logger:T,setTokenReady:I,queryClient:B}),{signIn:X,logout:Z,logoutAll:ee}=(({oxyServices:e,storage:t,sessions:r,activeSessionId:a,setActiveSessionId:o,updateSessions:n,saveActiveSessionId:s,clearSessionState:c,switchSession:u,applyLanguagePreference:l,onAuthStateChange:d,onError:h,loginSuccess:f,loginFailure:p,logoutStore:m,setAuthState:b,logger:g})=>{const y=i(async r=>{const a=$e.getDeviceFingerprint(),i=JSON.stringify(a),c=(await $e.getDeviceInfo()).deviceName||$e.getDefaultDeviceName();let h,p=!1;try{h=(await e.requestChallenge(r)).challenge}catch(e){const t=e instanceof Error?e.message:String(e);if(!(t.includes("Network")||t.includes("network")||t.includes("Failed to fetch")||t.includes("fetch failed")||"NETWORK_ERROR"===e?.code||0===e?.status))throw e;__DEV__&&g&&g("Network unavailable, performing offline sign-in"),h=await Jr.generateChallenge(),p=!0}const{challenge:m,timestamp:b}=await Jr.signChallenge(h);let y,v;if(p){__DEV__&&g&&g("Creating offline session");const e=`offline_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,a=`device_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,i=new Date(Date.now()+6048e5).toISOString();y={id:r,publicKey:r,username:"",privacySettings:{}},v={sessionId:e,deviceId:a,expiresAt:i,user:{id:r,username:""}};const c={sessionId:e,deviceId:a,expiresAt:i,lastActive:(new Date).toISOString(),userId:r,isCurrent:!0};o(e),await s(e),n([c],{merge:!0}),t&&await t.setItem(`oxy_session_${e}_offline`,"true"),__DEV__&&g&&g("Offline sign-in successful")}else{v=await e.verifyChallenge(r,h,m,b,c,i);try{await e.getTokenBySession(v.sessionId)}catch(e){const t=e instanceof Error?e.message:String(e),r=e?.status;if(404===r||t.includes("404"))throw new Error(`Session was created but token could not be retrieved. Session ID: ${v.sessionId.substring(0,8)}...`);throw e}y=await e.getUserBySession(v.sessionId);let t=[];try{t=await Mo(e,v.sessionId,{fallbackDeviceId:v.deviceId,fallbackUserId:y.id,logger:g})}catch(e){__DEV__&&g&&g("Failed to fetch device sessions after login",e)}const a=t.find(e=>e.userId?.toString()===y.id?.toString()&&e.sessionId!==v.sessionId);if(a){try{await e.logoutSession(v.sessionId,v.sessionId)}catch(e){__DEV__&&g&&g("Failed to logout duplicate session, continuing with switch",e)}return await u(a.sessionId),n(t.filter(e=>e.sessionId!==v.sessionId),{merge:!1}),d?.(y),y}o(v.sessionId),await s(v.sessionId),n(t,{merge:!0})}return await l(y),f(y),d?.(y),y},[l,g,f,d,e,s,o,u,n,t]);return{signIn:i(async(e,t)=>{b({isLoading:!0,error:null});try{return await y(e)}catch(e){const t=_o(e,{defaultMessage:"Sign in failed",code:"LOGIN_ERROR",onError:h,setAuthError:e=>b({error:e}),logger:g});throw p(t),e}finally{b({isLoading:!1})}},[b,y,p,h,g]),logout:i(async t=>{if(a)try{const i=t||a;await e.logoutSession(a,i);const o=r.filter(e=>e.sessionId!==i);if(n(o,{merge:!1}),i===a){if(!(o.length>0))return void await c();await u(o[0].sessionId)}}catch(e){const r=wo(e);if(r&&t===a)return void await c();_o(e,{defaultMessage:"Logout failed",code:"LOGOUT_ERROR",onError:h,setAuthError:e=>b({error:e}),logger:g,status:r?401:void 0})}},[a,c,g,h,e,r,b,u,n]),logoutAll:i(async()=>{if(!a){const e=new Error("No active session found");throw b({error:e.message}),h?.({message:e.message,code:Po,status:404}),e}try{await e.logoutAllSessions(a),await c()}catch(e){throw _o(e,{defaultMessage:"Logout all failed",code:Po,onError:h,setAuthError:e=>b({error:e}),logger:g}),e instanceof Error?e:new Error("Logout all failed")}},[a,c,g,h,e,b])}})({oxyServices:g,storage:O,sessions:H,activeSessionId:K,setActiveSessionId:V,updateSessions:$,saveActiveSessionId:Y,clearSessionState:Q,switchSession:G,applyLanguagePreference:F,onAuthStateChange:p,onError:m,loginSuccess:S,loginFailure:_,logoutStore:E,setAuthState:M,logger:T}),te=i(async()=>{if(B.clear(),O)try{await Uo(O)}catch(e){T("Failed to clear persisted query cache",e)}await Q(),ln.getState().reset(),g.clearCache()},[B,O,Q,T,g]),{getDeviceSessions:re,logoutAllDeviceSessions:ae,updateDeviceName:ie}=(({oxyServices:e,activeSessionId:t,onError:r,clearSessionState:a,logger:o})=>({getDeviceSessions:i(async()=>{if(!t)throw new Error("No active session");try{return await e.getDeviceSessions(t)}catch(e){throw _o(e,{defaultMessage:"Failed to get device sessions",code:"GET_DEVICE_SESSIONS_ERROR",onError:r,logger:o}),e instanceof Error?e:new Error("Failed to get device sessions")}},[t,o,r,e]),logoutAllDeviceSessions:i(async()=>{if(!t)throw new Error("No active session");try{await e.logoutAllDeviceSessions(t),await a()}catch(e){throw _o(e,{defaultMessage:"Failed to logout all device sessions",code:"LOGOUT_ALL_DEVICES_ERROR",onError:r,logger:o}),e instanceof Error?e:new Error("Failed to logout all device sessions")}},[t,a,o,r,e]),updateDeviceName:i(async a=>{if(!t)throw new Error("No active session");try{await e.updateDeviceName(t,a),await $e.updateDeviceName(a)}catch(e){throw _o(e,{defaultMessage:"Failed to update device name",code:"UPDATE_DEVICE_NAME_ERROR",onError:r,logger:o}),e instanceof Error?e:new Error("Failed to update device name")}},[t,o,r,e])}))({oxyServices:g,activeSessionId:K,onError:m,clearSessionState:Q,logger:T}),oe=(()=>{if(An)return An;try{const{useFollow:e}=require("../hooks/useFollow");return An=e,An}catch(e){return __DEV__&&j.warn("useFollow hook is not available. Please import useFollow from @oxyhq/services directly.",{component:"OxyContext",method:"loadUseFollowHook"},e),An=()=>{throw new Error("useFollow hook is only available in the UI bundle. Import it from @oxyhq/services.")},An}})(),ne=i(async()=>{if(O){I(!1);try{const e=await O.getItem(R.sessionIds),t=e?JSON.parse(e):[],r=await O.getItem(R.activeSessionId),a=[];if(t.length>0){for(const e of t)try{const t=await g.validateSession(e,{useHeaderValidation:!0});if(t?.valid&&t.user){const i=new Date;a.push({sessionId:e,deviceId:"",expiresAt:new Date(i.getTime()+6048e5).toISOString(),lastActive:i.toISOString(),userId:t.user.id?.toString()??"",isCurrent:e===r})}}catch(e){wo(e)||ko(e)?__DEV__&&ko(e)&&j.debug("Session validation timeout (expected when offline)",{component:"OxyContext",method:"restoreSessionsFromStorage"},e):T("Session validation failed during init",e)}a.length>0&&$(a,{merge:!1})}if(r)try{await G(r)}catch(e){wo(e)?(await O.removeItem(R.activeSessionId),$(a.filter(e=>e.sessionId!==r),{merge:!1})):ko(e)?__DEV__&&j.debug("Active session validation timeout (expected when offline)",{component:"OxyContext",method:"restoreSessionsFromStorage"},e):T("Active session validation error",e)}}catch(e){__DEV__&&j.error("Auth init error",e instanceof Error?e:new Error(String(e)),{component:"OxyContext",method:"restoreSessionsFromStorage"}),await Q()}finally{I(!0)}}},[Q,T,g,O,R.activeSessionId,R.sessionIds,G,$]);r(()=>{O&&!x&&(z(!0),ne())},[ne,O,x]);const se=i(async e=>{if(!e?.user||!e?.sessionId)return void(__DEV__&&j.warn("handleWebSSOSession: Invalid session",{component:"OxyContext"}));const t={sessionId:e.sessionId,deviceId:e.deviceId||"",expiresAt:e.expiresAt||new Date(Date.now()+6048e5).toISOString(),lastActive:(new Date).toISOString(),userId:e.user.id?.toString()??"",isCurrent:!0};if($([t],{merge:!0}),V(e.sessionId),S(e.user),p?.(e.user),O){await O.setItem(R.activeSessionId,e.sessionId);const t=await O.getItem(R.sessionIds),r=t?JSON.parse(t):[];r.includes(e.sessionId)||(r.push(e.sessionId),await O.setItem(R.sessionIds,JSON.stringify(r)))}},[$,V,S,p,O,R]),ce=Sn()&&A&&!y&&x;!function({oxyServices:e,onSessionFound:a,onSSOUnavailable:o,onError:n,enabled:s=!0}){const c=t(!1),u=t(!1),l=Sn()&&e.isFedCMSupported?.(),d=i(async()=>{if(!Sn()||c.current)return null;if(_n())return o?.(),null;if(!l)return o?.(),null;c.current=!0;try{const t=await(e.silentSignInWithFedCM?.());return t?(await a(t),t):(o?.(),null)}catch(e){return o?.(),n?.(e instanceof Error?e:new Error(String(e))),null}finally{c.current=!1}},[e,a,o,n,l]),h=i(async()=>{if(!Sn()||c.current)return null;if(!l)return n?.(new Error("FedCM is not supported in this browser")),null;c.current=!0;try{const t=await(e.signInWithFedCM?.());return t?(await a(t),t):null}catch(e){return n?.(e instanceof Error?e:new Error(String(e))),null}finally{c.current=!1}},[e,a,n,l]);r(()=>{s&&Sn()&&!u.current&&!_n()?(u.current=!0,l?d():o?.()):_n()&&o?.()},[s,d,l,o]),c.current}({oxyServices:g,onSessionFound:se,onError:e=>{__DEV__&&j.debug("Web SSO check failed (non-critical)",{component:"OxyContext"},e)},enabled:ce});const ue=t(0);r(()=>{if(!Sn()||!y||!x)return;const e=()=>{"visible"===document.visibilityState&&(()=>{const e=Date.now();if(e-ue.current<3e4)return;ue.current=e;const t=document.createElement("iframe");t.style.cssText="display:none;width:0;height:0;border:0",t.src="https://auth.oxy.so/api/auth/session-check";let r=!1;const a=()=>{r||(r=!0,window.removeEventListener("message",i),t.remove())},i=async e=>{"https://auth.oxy.so"===e.origin&&"oxy-session-check"===e.data?.type&&(a(),e.data.hasSession||(Ha.info("Your session has ended. Please sign in again."),await Q()))};window.addEventListener("message",i),document.body.appendChild(t),setTimeout(a,5e3)})()};return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[y,x,Q]);const le=K?H.find(e=>e.sessionId===K):void 0,de=le?.deviceId??null,he=y?.id,fe=i(()=>W(he),[W,he]),pe=i(e=>{J(e)},[J]),me=i(()=>{Ha.info("You have been signed out remotely."),Z().catch(e=>T("Failed to process remote sign out",e))},[T,Z]);bo({userId:he,activeSessionId:K,currentDeviceId:de,refreshSessions:fe,logout:Z,clearSessionState:Q,baseURL:g.getBaseURL(),onRemoteSignOut:me,onSessionRemoved:pe});const be=i(async e=>{await G(e)},[G]),ge=i(async()=>Kr.hasIdentity(),[]),ye=i(async()=>Kr.getPublicKey(),[]),ve=i(e=>{Vo(e)},[]),we=i(()=>{ve({screen:"FileManagement",props:{selectMode:!0,multiSelect:!1,disabledMimeTypes:["video/","audio/","application/pdf"],afterSelect:"none",onSelect:async e=>{if(e.contentType.startsWith("image/"))try{await async function(e,t){if(e&&!e.startsWith("temp-"))try{await t.assetUpdateVisibility(e,"public")}catch(e){}}(e.id,g,"OxyContext"),await async function(e,t,r,a,i){const o=await wn(t,r,()=>t.updateProfile(e),i);return a.setQueryData(dn.accounts.current(),o),r&&a.setQueryData(dn.users.profile(r),o),Va.getState().setUser(o),e.avatar&&r&&kn(r,e.avatar,t),fn(a),hn(a),o}({avatar:e.id},g,K,B),Ha.success(nn(U,"editProfile.toasts.avatarUpdated")||"Avatar updated")}catch(e){Ha.error(e.message||nn(U,"editProfile.toasts.updateAvatarFailed")||"Failed to update avatar")}else Ha.error(nn(U,"editProfile.toasts.selectImage")||"Please select an image file")}}})},[g,U,ve,K,B]),ke=o(()=>({user:y,sessions:H,activeSessionId:K,isAuthenticated:v,isLoading:w,isTokenReady:A,isStorageReady:null!==O,error:k,currentLanguage:U,currentLanguageMetadata:D,currentLanguageName:C,currentNativeLanguageName:P,hasIdentity:ge,getPublicKey:ye,signIn:X,handlePopupSession:se,logout:Z,logoutAll:ee,switchSession:be,removeSession:Z,refreshSessions:fe,setLanguage:N,getDeviceSessions:re,logoutAllDeviceSessions:ae,updateDeviceName:ie,clearSessionState:Q,clearAllAccountData:te,oxyServices:g,useFollow:oe,showBottomSheet:ve,openAvatarPicker:we}),[K,X,se,U,D,C,P,k,re,ye,ge,v,w,Z,ee,ae,g,fe,H,N,O,be,A,ie,te,oe,y,ve,we]);return e(En.Provider,{value:ke,children:n})},xn=()=>{const e=s(En);if(!e)throw new Error("useOxy must be used within an OxyContextProvider");return e};function zn(){const{user:e,isAuthenticated:t,isLoading:r,isTokenReady:a,error:o,signIn:n,handlePopupSession:s,logout:c,logoutAll:u,refreshSessions:l,oxyServices:d,hasIdentity:h,getPublicKey:f,showBottomSheet:p}=xn(),m=i(async e=>{const t=Sn()&&"auth.oxy.so"===window.location.hostname;if(Sn()&&!e&&!t)try{const e=await(d.signInWithPopup?.());if(e?.user)return await s(e),e.user;throw new Error("Sign-in failed. Please try again.")}catch(e){if(e instanceof Error&&e.message.includes("blocked"))throw new Error("Popup blocked. Please allow popups for this site.");throw e}if(e)return n(e);if(await h()){const e=await f();if(e)return n(e)}if(p)return p("OxyAuth"),new Promise((e,t)=>{t(new Error("Please complete sign-in in the auth sheet"))});if(Sn()){const e=window.location.hostname.includes("oxy.so")?"/login":"https://accounts.oxy.so/login";return window.location.href=e,new Promise(()=>{})}throw new Error("No authentication method available")},[n,h,f,p,d,s]);return{user:e,isAuthenticated:t,isLoading:r,isReady:a,error:o,signIn:m,signOut:i(async()=>{await c()},[c]),signOutAll:i(async()=>{await u()},[u]),refresh:i(async()=>{await l()},[l]),oxyServices:d}}const Mn=({children:i,baseURL:o,authWebUrl:n,onAuthStateChange:s,storageKeyPrefix:c,queryClient:u})=>{const l=t(null),d=t(null),[h,p]=a(null);return r(()=>{if(u)return d.current=u,void p(u);let e=!0;return qo().then(t=>{if(e&&!d.current){l.current=t;const e=jo();d.current=e,p(e)}}).catch(()=>{if(e&&!d.current){const e=jo();d.current=e,p(e)}}),()=>{e=!1}},[u]),h?e(f,{client:h,children:e(In,{baseURL:o,authWebUrl:n,storageKeyPrefix:c,onAuthStateChange:s,children:i})}):null},Tn={assets:{},uploadProgress:{},loading:{uploading:!1,linking:!1,deleting:!1},errors:{}},Rn=u((e,t)=>({...Tn,setAsset:t=>{e(e=>({assets:{...e.assets,[t.id]:t}}))},setAssets:t=>{e(e=>{const r=t.reduce((e,t)=>(e[t.id]=t,e),{});return{assets:{...e.assets,...r}}})},removeAsset:t=>{e(e=>{const{[t]:r,...a}=e.assets;return{assets:a}})},setUploadProgress:(t,r)=>{e(e=>({uploadProgress:{...e.uploadProgress,[t]:r}}))},removeUploadProgress:t=>{e(e=>{const{[t]:r,...a}=e.uploadProgress;return{uploadProgress:a}})},addLink:(t,r)=>{e(e=>{const a=e.assets[t];if(!a)return e;if(a.links.find(e=>e.app===r.app&&e.entityType===r.entityType&&e.entityId===r.entityId))return e;const i={...a,links:[...a.links,r],usageCount:a.links.length+1};return{assets:{...e.assets,[t]:i}}})},removeLink:(t,r,a,i)=>{e(e=>{const o=e.assets[t];if(!o)return e;const n=o.links.filter(e=>!(e.app===r&&e.entityType===a&&e.entityId===i)),s={...o,links:n,usageCount:n.length,status:0===n.length?"trash":o.status};return{assets:{...e.assets,[t]:s}}})},setUploading:t=>{e(e=>({loading:{...e.loading,uploading:t}}))},setLinking:t=>{e(e=>({loading:{...e.loading,linking:t}}))},setDeleting:t=>{e(e=>({loading:{...e.loading,deleting:t}}))},setUploadError:t=>{e(e=>({errors:{...e.errors,upload:t}}))},setLinkError:t=>{e(e=>({errors:{...e.errors,link:t}}))},setDeleteError:t=>{e(e=>({errors:{...e.errors,delete:t}}))},clearErrors:()=>{e({errors:{}})},getAssetsByApp:e=>{const{assets:r}=t();return Object.values(r).filter(t=>t.links.some(t=>t.app===e))},getAssetsByEntity:(e,r,a)=>{const{assets:i}=t();return Object.values(i).filter(t=>t.links.some(t=>t.app===e&&t.entityType===r&&t.entityId===a))},getAssetUsageCount:e=>{const{assets:r}=t(),a=r[e];return a?a.usageCount:0},isAssetLinked:(e,r,a,i)=>{const{assets:o}=t(),n=o[e];return!!n&&n.links.some(e=>e.app===r&&e.entityType===a&&e.entityId===i)},reset:()=>{e(Tn)}})),qn=()=>Rn(e=>Object.values(e.assets)),On=e=>Rn(t=>t.assets[e]),Ln=()=>Rn(e=>e.uploadProgress),jn=()=>Rn(e=>e.loading),Un=()=>Rn(e=>e.errors),Dn=e=>Rn(t=>t.getAssetsByApp(e)),Cn=(e,t,r)=>Rn(a=>a.getAssetsByEntity(e,t,r)),Pn=e=>Rn(t=>t.getAssetUsageCount(e)),Nn=(e,t,r,a)=>Rn(i=>i.isAssetLinked(e,t,r,a));let Fn=null;const Bn=e=>{Fn=e},Hn=()=>{const{assets:e,uploadProgress:t,loading:r,errors:a,setAsset:o,setAssets:n,removeAsset:s,setUploadProgress:c,removeUploadProgress:u,addLink:l,removeLink:d,setUploading:h,setLinking:f,setDeleting:p,setUploadError:m,setLinkError:b,setDeleteError:g,clearErrors:y,getAssetsByApp:v,getAssetsByEntity:w,getAssetUsageCount:k,isAssetLinked:S,reset:_}=Rn(),E=i(async(e,t)=>{if(!Fn)throw new Error("OxyServices instance not configured. Call setOxyAssetInstance first.");try{y(),h(!0);const r=await Fn.assetUpload(e,void 0,t);if(r?.file){const t=r.file.id;c(t,{fileId:t,uploaded:e.size,total:e.size,percentage:100,status:"complete"}),setTimeout(()=>{u(t)},2e3)}return r.file?(o(r.file),r.file):null}catch(e){throw m(e.message||"Upload failed"),e}finally{h(!1)}},[y,h,c,u,o,m]),A=i(async(e,t,r,a)=>{if(!Fn)throw new Error("OxyServices instance not configured. Call setOxyAssetInstance first.");try{y(),f(!0);const i="avatar"===r||"profile-banner"===r?"public":void 0,n=await Fn.assetLink(e,t,r,a,i);n.file?o(n.file):l(e,{app:t,entityType:r,entityId:a,createdBy:"",createdAt:(new Date).toISOString()})}catch(e){throw b(e.message||"Link failed"),e}finally{f(!1)}},[y,f,o,l,b]),I=i(async(e,t,r,a)=>{if(!Fn)throw new Error("OxyServices instance not configured. Call setOxyAssetInstance first.");try{y(),f(!0);const i=await Fn.assetUnlink(e,t,r,a);i.file?o(i.file):d(e,t,r,a)}catch(e){throw b(e.message||"Unlink failed"),e}finally{f(!1)}},[y,f,o,d,b]),x=i(async(e,t,r)=>{if(!Fn)throw new Error("OxyServices instance not configured. Call setOxyAssetInstance first.");try{return(await Fn.assetGetUrl(e,t,r)).url}catch(e){throw e}},[]),z=i(async e=>{if(!Fn)throw new Error("OxyServices instance not configured. Call setOxyAssetInstance first.");try{const t=await Fn.assetGet(e);if(t.file)return o(t.file),t.file;throw new Error("Asset not found")}catch(e){throw e}},[o]),M=i(async(e,t=!1)=>{if(!Fn)throw new Error("OxyServices instance not configured. Call setOxyAssetInstance first.");try{y(),p(!0),await Fn.assetDelete(e,t),s(e)}catch(e){throw g(e.message||"Delete failed"),e}finally{p(!1)}},[y,p,s,g]),T=i(async e=>{if(!Fn)throw new Error("OxyServices instance not configured. Call setOxyAssetInstance first.");try{const t=await Fn.assetRestore(e);t.file&&o(t.file)}catch(e){throw e}},[o]),R=i(async e=>{if(!Fn)throw new Error("OxyServices instance not configured. Call setOxyAssetInstance first.");try{return await Fn.assetGetVariants(e)}catch(e){throw e}},[]);return{assets:Object.values(e),uploadProgress:t,loading:r,errors:a,upload:E,link:A,unlink:I,getUrl:x,getAsset:z,deleteAsset:M,restore:T,getVariants:R,getAssetsByApp:v,getAssetsByEntity:w,getAssetUsageCount:k,isAssetLinked:S,clearErrors:y,reset:_}};let Kn=null;const Vn=e=>{Kn=e},$n=(e,t)=>{const[i,o]=a(null),[n,s]=a(!1),[c,u]=a(null);return r(()=>{if(!e)return o(null),s(!1),void u(null);if(!Kn)return o(null),s(!1),void u(new Error("OxyServices instance not configured for useFileDownloadUrl"));let r=!1;return(async()=>{s(!0),u(null);const a=Kn;if(!a)return s(!1),void u(new Error("OxyServices instance not configured for useFileDownloadUrl"));try{const{variant:i,expiresIn:n}=t||{};let s=null;"function"==typeof a.getFileDownloadUrlAsync&&(s=await a.getFileDownloadUrlAsync(e,i,n)),s||"function"!=typeof a.getFileDownloadUrl||(s=a.getFileDownloadUrl(e,i,n)),r||o(s||null)}catch(i){try{if("function"==typeof a.getFileDownloadUrl){const{variant:n,expiresIn:s}=t||{},c=a.getFileDownloadUrl(e,n,s);return void(r||(o(c||null),u(i instanceof Error?i:new Error(String(i)))))}}catch{}r||u(i instanceof Error?i:new Error(String(i)))}finally{r||s(!1)}})(),()=>{r=!0}},[e,t?.variant,t?.expiresIn]),{url:i,loading:n,error:c}},Gn=(e,t)=>{const{oxyServices:r}=xn();return p({queryKey:dn.users.profile(e||""),queryFn:async()=>{if(!e)throw new Error("Session ID is required");return await r.getUserBySession(e)},enabled:!1!==t?.enabled&&!!e,staleTime:3e5,gcTime:18e5})},Wn=(e,t)=>{const{oxyServices:r}=xn();return m({queries:e.map(e=>({queryKey:dn.users.profile(e),queryFn:async()=>{const t=await r.getUsersBySessions([e]);return t[0]?.user||null},enabled:!1!==t?.enabled&&!!e,staleTime:3e5,gcTime:18e5}))})},Qn=e=>{const{oxyServices:t,activeSessionId:r,isAuthenticated:a}=xn();return p({queryKey:dn.accounts.current(),queryFn:async()=>{if(!r)throw new Error("No active session");return await t.getUserBySession(r)},enabled:!1!==e?.enabled&&a&&!!r,staleTime:6e4,gcTime:18e5})},Yn=(e,t)=>{const{oxyServices:r}=xn();return p({queryKey:dn.users.detail(e||""),queryFn:async()=>{if(!e)throw new Error("User ID is required");return await r.getUserById(e)},enabled:!1!==t?.enabled&&!!e,staleTime:3e5,gcTime:18e5})},Jn=(e,t)=>{const{oxyServices:r}=xn();return p({queryKey:[...dn.users.details(),"username",e||""],queryFn:async()=>{if(!e)throw new Error("Username is required");return await r.getProfileByUsername(e)},enabled:!1!==t?.enabled&&!!e,staleTime:3e5,gcTime:18e5})},Xn=(e,t)=>{const{oxyServices:r}=xn();return p({queryKey:dn.accounts.list(e),queryFn:async()=>0===e.length?[]:await r.getUsersBySessions(e),enabled:!1!==t?.enabled&&e.length>0,staleTime:3e5,gcTime:18e5})},Zn=(e,t)=>{const{oxyServices:r,activeSessionId:a,user:i}=xn(),o=e||i?.id;return p({queryKey:dn.privacy.settings(o),queryFn:async()=>{if(!o)throw new Error("User ID is required");return wn(r,a,()=>r.getPrivacySettings(o))},enabled:!1!==t?.enabled&&!!o,staleTime:12e4,gcTime:6e5})},es=(e,t)=>{const{oxyServices:r,activeSessionId:a}=xn();return p({queryKey:dn.sessions.list(e),queryFn:async()=>{if(!a)throw new Error("No active session");const t=await Mo(r,a,{fallbackDeviceId:void 0,fallbackUserId:e});return zo(t,a)},enabled:!1!==t?.enabled&&!!a,staleTime:12e4,gcTime:6e5})},ts=(e,t)=>{const{oxyServices:r}=xn();return p({queryKey:dn.sessions.detail(e||""),queryFn:async()=>{if(!e)throw new Error("Session ID is required");const t=await r.validateSession(e,{useHeaderValidation:!0});if(!t?.valid||!t.user)throw new Error("Session not found or invalid");const a=new Date;return{sessionId:e,deviceId:"",expiresAt:t.expiresAt||new Date(a.getTime()+6048e5).toISOString(),lastActive:t.lastActivity||a.toISOString(),userId:t.user.id?.toString()??"",isCurrent:!1}},enabled:!1!==t?.enabled&&!!e,staleTime:12e4,gcTime:6e5})},rs=e=>{const{oxyServices:t,activeSessionId:r}=xn();return p({queryKey:dn.sessions.active(),queryFn:async()=>{if(!r)throw new Error("No active session");return await t.getDeviceSessions(r)},enabled:!1!==e?.enabled&&!!r,staleTime:12e4,gcTime:6e5})},as=e=>{const{oxyServices:t,isAuthenticated:r,activeSessionId:a}=xn();return p({queryKey:dn.devices.list(),queryFn:async()=>wn(t,a,()=>t.getUserDevices()),enabled:!1!==e?.enabled&&r,staleTime:3e5,gcTime:18e5})},is=e=>{const{oxyServices:t,isAuthenticated:r}=xn();return p({queryKey:[...dn.devices.all,"security"],queryFn:async()=>await t.getSecurityInfo(),enabled:!1!==e?.enabled&&r,staleTime:3e5,gcTime:18e5})},os=e=>{const{oxyServices:t,activeSessionId:r}=xn();return p({queryKey:dn.security.activity(e?.limit,e?.offset,e?.eventType),queryFn:async()=>{if(!r)throw new Error("No active session");return await t.getSecurityActivity(e?.limit,e?.offset,e?.eventType)},enabled:!1!==e?.enabled&&!!r,staleTime:3e5,gcTime:6e5})},ns=(e=10)=>{const{oxyServices:t,activeSessionId:r}=xn();return p({queryKey:dn.security.recent(e),queryFn:async()=>{if(!r)throw new Error("No active session");return await t.getRecentSecurityActivity(e)},enabled:!!r,staleTime:3e5,gcTime:6e5})},ss=()=>{const{oxyServices:e,activeSessionId:t,user:r}=xn(),a=h();return b({mutationFn:async r=>wn(e,t,()=>e.updateProfile(r)),onMutate:async e=>{await a.cancelQueries({queryKey:dn.accounts.current()});const r=a.getQueryData(dn.accounts.current());return r&&(a.setQueryData(dn.accounts.current(),{...r,...e}),t&&a.setQueryData(dn.users.profile(t),{...r,...e})),{previousUser:r}},onError:(e,r,i)=>{i?.previousUser&&(a.setQueryData(dn.accounts.current(),i.previousUser),t&&a.setQueryData(dn.users.profile(t),i.previousUser)),Ha.error(e instanceof Error?e.message:"Failed to update profile")},onSuccess:(r,i)=>{a.setQueryData(dn.accounts.current(),r),t&&a.setQueryData(dn.users.profile(t),r),Va.getState().setUser(r),i.avatar&&t&&e&&kn(t,i.avatar,e),fn(a),hn(a)}})},cs=()=>{const{oxyServices:e,activeSessionId:t}=xn(),r=h();return b({mutationFn:async r=>wn(e,t,async()=>{const t=await e.assetUpload(r,"public"),a=t?.file?.id||t?.id||t;if(!a||"string"!=typeof a)throw new Error("Failed to get file ID from upload result");return await e.updateProfile({avatar:a})}),onMutate:async e=>{await r.cancelQueries({queryKey:dn.accounts.current()});const a=r.getQueryData(dn.accounts.current());if(a){const i={...a,avatar:e.uri};r.setQueryData(dn.accounts.current(),i),t&&r.setQueryData(dn.users.profile(t),i)}return{previousUser:a}},onError:(e,a,i)=>{i?.previousUser&&(r.setQueryData(dn.accounts.current(),i.previousUser),t&&r.setQueryData(dn.users.profile(t),i.previousUser)),Ha.error(e instanceof Error?e.message:"Failed to upload avatar")},onSuccess:a=>{r.setQueryData(dn.accounts.current(),a),t&&r.setQueryData(dn.users.profile(t),a),Va.getState().setUser(a),a?.avatar&&t&&e&&kn(t,a.avatar,e),fn(r),hn(r),Ha.success("Avatar updated successfully")}})},us=()=>{const{oxyServices:e,activeSessionId:t}=xn(),r=h();return b({mutationFn:async t=>await e.updateProfile({privacySettings:t}),onMutate:async e=>{await r.cancelQueries({queryKey:dn.accounts.settings()});const t=r.getQueryData(dn.accounts.current());return t&&r.setQueryData(dn.accounts.current(),{...t,privacySettings:{...t.privacySettings,...e}}),{previousUser:t}},onError:(e,t,a)=>{a?.previousUser&&r.setQueryData(dn.accounts.current(),a.previousUser),Ha.error(e instanceof Error?e.message:"Failed to update settings")},onSuccess:e=>{r.setQueryData(dn.accounts.current(),e),Va.getState().setUser(e),hn(r),Ha.success("Settings updated successfully")},onSettled:()=>{r.invalidateQueries({queryKey:dn.accounts.settings()})}})},ls=()=>{const{oxyServices:e,activeSessionId:t,user:r}=xn(),a=h();return b({mutationFn:async({settings:a,userId:i})=>{const o=i||r?.id;if(!o)throw new Error("User ID is required");return wn(e,t,()=>e.updatePrivacySettings(a,o))},onMutate:async({settings:e,userId:t})=>{const i=t||r?.id;if(!i)return;await a.cancelQueries({queryKey:dn.privacy.settings(i)}),await a.cancelQueries({queryKey:dn.accounts.current()});const o=a.getQueryData(dn.privacy.settings(i)),n=a.getQueryData(dn.accounts.current());return o&&a.setQueryData(dn.privacy.settings(i),{...o,...e}),n&&a.setQueryData(dn.accounts.current(),{...n,privacySettings:{...n.privacySettings,...e}}),{previousPrivacySettings:o,previousUser:n}},onError:(e,{userId:t},i)=>{const o=t||r?.id;i?.previousPrivacySettings&&o&&a.setQueryData(dn.privacy.settings(o),i.previousPrivacySettings),i?.previousUser&&a.setQueryData(dn.accounts.current(),i.previousUser),Ha.error(e instanceof Error?e.message:"Failed to update privacy settings")},onSuccess:(e,{userId:t})=>{const i=t||r?.id;i&&a.setQueryData(dn.privacy.settings(i),e);const o=a.getQueryData(dn.accounts.current());if(o){const t={...o,privacySettings:e};a.setQueryData(dn.accounts.current(),t),Va.getState().setUser(t)}hn(a)},onSettled:(e,t,{userId:i})=>{const o=i||r?.id;o&&a.invalidateQueries({queryKey:dn.privacy.settings(o)}),a.invalidateQueries({queryKey:dn.accounts.current()})}})},ds=()=>{const{oxyServices:e,activeSessionId:t}=xn();return b({mutationFn:async({file:r,visibility:a,metadata:i,onProgress:o})=>wn(e,t,()=>e.assetUpload(r,a,i,o))})},hs=()=>{const{switchSession:e,activeSessionId:t}=xn(),r=h();return b({mutationFn:async t=>await e(t),onSuccess:e=>{pn(r),r.setQueryData(dn.accounts.current(),e),r.invalidateQueries({queryKey:dn.accounts.all})},onError:e=>{Ha.error(e instanceof Error?e.message:"Failed to switch session")}})},fs=()=>{const{oxyServices:e,activeSessionId:t,sessions:r}=xn(),a=h();return b({mutationFn:async r=>{if(!t)throw new Error("No active session");const a=r||t;return await e.logoutSession(t,a),a},onMutate:async e=>{await a.cancelQueries({queryKey:dn.sessions.all});const r=a.getQueryData(dn.sessions.list());if(r){const i=e||t,o=r.filter(e=>e.sessionId!==i);a.setQueryData(dn.sessions.list(),o)}return{previousSessions:r}},onError:(e,t,r)=>{r?.previousSessions&&a.setQueryData(dn.sessions.list(),r.previousSessions),Ha.error(e instanceof Error?e.message:"Failed to logout")},onSuccess:()=>{pn(a)},onSettled:()=>{a.invalidateQueries({queryKey:dn.sessions.all})}})},ps=()=>{const{oxyServices:e,activeSessionId:t,clearSessionState:r}=xn(),a=h();return b({mutationFn:async()=>{if(!t)throw new Error("No active session");await e.logoutAllSessions(t),await r()},onSuccess:()=>{a.clear(),Ha.success("Logged out from all sessions")},onError:e=>{Ha.error(e instanceof Error?e.message:"Failed to logout from all sessions")}})},ms=()=>{const{oxyServices:e,activeSessionId:t}=xn(),r=h();return b({mutationFn:async r=>{if(!t)throw new Error("No active session");return await e.updateDeviceName(t,r)},onSuccess:()=>{r.invalidateQueries({queryKey:dn.devices.all}),r.invalidateQueries({queryKey:dn.sessions.all}),Ha.success("Device name updated")},onError:e=>{Ha.error(e instanceof Error?e.message:"Failed to update device name")}})},bs=()=>{const{oxyServices:e}=xn(),t=h();return b({mutationFn:async t=>(await e.removeDevice(t),t),onSuccess:()=>{t.invalidateQueries({queryKey:dn.devices.all}),t.invalidateQueries({queryKey:dn.sessions.all}),Ha.success("Device removed")},onError:e=>{Ha.error(e instanceof Error?e.message:"Failed to remove device")}})};function gs(e,t,r){const{mutationFn:a,cancelQueryKeys:i=[],optimisticUpdate:o,errorMessage:n="Operation failed",successMessage:s,updateAuthStore:c=!0,invalidateUserQueries:u=!0,invalidateAccountQueries:l=!0,onSuccess:d}=e;return{mutationFn:a,onMutate:async e=>{await t.cancelQueries({queryKey:dn.accounts.current()});for(const e of i)await t.cancelQueries({queryKey:e});const a=t.getQueryData(dn.accounts.current());if(a&&o){const i=o(a,e),n={...a,...i};t.setQueryData(dn.accounts.current(),n),r&&t.setQueryData(dn.users.profile(r),n)}return{previousUser:a}},onError:(e,a,i)=>{i?.previousUser&&(t.setQueryData(dn.accounts.current(),i.previousUser),r&&t.setQueryData(dn.users.profile(r),i.previousUser));const o="function"==typeof n?n(e):e instanceof Error?e.message:n;Ha.error(o)},onSuccess:(e,a)=>{t.setQueryData(dn.accounts.current(),e),r&&t.setQueryData(dn.users.profile(r),e),c&&Va.getState().setUser(e),u&&fn(t),l&&hn(t),s&&Ha.success(s),d&&d(e,a,t)}}}function ys(e,t){const{mutationFn:r,queryKey:a,optimisticData:i,errorMessage:o="Operation failed",successMessage:n,invalidateQueries:s=[]}=e;return{mutationFn:r,onMutate:async e=>{await t.cancelQueries({queryKey:a});const r=t.getQueryData(a);return i&&t.setQueryData(a,i(r,e)),{previous:r}},onError:(e,r,i)=>{void 0!==i?.previous&&t.setQueryData(a,i.previous),Ha.error(e instanceof Error?e.message:o)},onSuccess:e=>{t.setQueryData(a,e);for(const e of s)t.invalidateQueries({queryKey:e});n&&Ha.success(n)}}}function vs({files:e,initialViewMode:t="all",initialSortBy:r="date",initialSortOrder:n="desc"}){const[s,c]=a(t),[u,l]=a(""),[d,h]=a(r),[f,p]=a(n),m=i(()=>{p(e=>"asc"===e?"desc":"asc")},[]);return{filteredFiles:o(()=>{let t=e;"photos"===s?t=e.filter(e=>e.contentType.startsWith("image/")):"videos"===s?t=e.filter(e=>e.contentType.startsWith("video/")):"documents"===s?t=e.filter(e=>e.contentType.includes("pdf")||e.contentType.includes("document")||e.contentType.includes("text")||e.contentType.includes("msword")||e.contentType.includes("excel")||e.contentType.includes("spreadsheet")||e.contentType.includes("presentation")||e.contentType.includes("powerpoint")):"audio"===s&&(t=e.filter(e=>e.contentType.startsWith("audio/")));let r=t;if(u.trim()){const e=u.toLowerCase();r=t.filter(t=>t.filename.toLowerCase().includes(e)||t.contentType.toLowerCase().includes(e)||t.metadata?.description&&t.metadata.description.toLowerCase().includes(e))}return[...r].sort((e,t)=>{let r=0;if("date"===d){r=new Date(e.uploadDate||0).getTime()-new Date(t.uploadDate||0).getTime()}else"size"===d?r=(e.length||0)-(t.length||0):"name"===d?r=(e.filename||"").localeCompare(t.filename||""):"type"===d&&(r=(e.contentType||"").localeCompare(t.contentType||""));return"asc"===f?r:-r})},[e,u,s,d,f]),viewMode:s,setViewMode:c,searchQuery:u,setSearchQuery:l,sortBy:d,setSortBy:h,sortOrder:f,setSortOrder:p,toggleSortOrder:m}}const ws=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,ks=/^[a-zA-Z0-9_-]{3,30}$/,Ss=/^.{8,}$/;function _s(e){return ws.test(e)}function Es(e){return ks.test(e)}function As(e){return Ss.test(e)}function Is(e){return"string"==typeof e&&e.trim().length>0}function xs(e){return"number"==typeof e&&!Number.isNaN(e)}function zs(e){return"boolean"==typeof e}function Ms(e){return Array.isArray(e)}function Ts(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function Rs(e){return/^[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(e)}function qs(e){try{return new URL(e),!0}catch{return!1}}function Os(e){const t=new Date(e);return!Number.isNaN(t.getTime())}function Ls(e,t){return e>0&&e<=t}function js(e,t){const r=e.split(".").pop()?.toLowerCase();return!!r&&t.includes(r)}function Us(e){return e.trim().replace(/<[^>]*>/g,"")}function Ds(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Cs(e){if("string"!=typeof e)return!1;return/^[0-9a-fA-F]{24}$/.test(e)}function Ps(e,t){if("string"!=typeof e)return null;const r=Us(e);switch(t){case"email":return _s(r)?r:null;case"username":return Es(r)?r:null;case"string":return Is(r)?r:null;default:return null}}const Ns="undefined"!=typeof window,Fs=Ns&&void 0!==window.localStorage,Bs=Ns&&void 0!==window.sessionStorage,Hs="undefined"!=typeof navigator;function Ks(e,t=[]){const[r,o]=a(null),[n,s]=a(!1),[c,u]=a(null),l=i(async()=>{s(!0),u(null);try{const t=await e();return o(t),t}catch(e){const t=e instanceof Error?e:new Error(String(e));throw u(t),t}finally{s(!1)}},t);return{data:r,loading:n,error:c,execute:l}}function Vs(e,t=[]){const[i,o]=a(null),[n,s]=a(!0),[c,u]=a(null);return r(()=>{let t=!0;return(async()=>{try{const r=await e();t&&(o(r),s(!1))}catch(e){if(t){const t=e instanceof Error?e:new Error(String(e));u(t),s(!1)}}})(),()=>{t=!1}},t),{data:i,loading:n,error:c}}function $s(e,t){const[i,o]=a(e);return r(()=>{const r=setTimeout(()=>{o(e)},t);return()=>{clearTimeout(r)}},[e,t]),i}function Gs(e,i){const[o,n]=a(e),s=t(Date.now());return r(()=>{const t=setTimeout(()=>{Date.now()-s.current>=i&&(n(e),s.current=Date.now())},i-(Date.now()-s.current));return()=>{clearTimeout(t)}},[e,i]),o}function Ws(e){const a=t(void 0);return r(()=>{a.current=e}),a.current}function Qs(e=!1){const[t,r]=a(e);return{value:t,toggle:i(()=>r(e=>!e),[]),setTrue:i(()=>r(!0),[]),setFalse:i(()=>r(!1),[]),setValue:r}}function Ys(e=0){const[t,r]=a(e),o=i(()=>r(e=>e+1),[]),n=i(()=>r(e=>e-1),[]),s=i(()=>r(e),[e]),c=i(e=>r(e),[]);return{count:t,increment:o,decrement:n,reset:s,setValue:c}}function Js(e,t){const[r,o]=a(()=>{if(!Fs)return t;try{const r=window.localStorage.getItem(e);return r?JSON.parse(r):t}catch{return t}}),n=i(t=>{try{const a=t instanceof Function?t(r):t;o(a),Fs&&window.localStorage.setItem(e,JSON.stringify(a))}catch{}},[e,r]);return[r,n]}function Xs(e,t){const[r,o]=a(()=>{if(!Bs)return t;try{const r=window.sessionStorage.getItem(e);return r?JSON.parse(r):t}catch{return t}}),n=i(t=>{try{const a=t instanceof Function?t(r):t;o(a),Bs&&window.sessionStorage.setItem(e,JSON.stringify(a))}catch{}},[e,r]);return[r,n]}function Zs(){const[e,t]=a({width:Ns?window.innerWidth:0,height:Ns?window.innerHeight:0});return r(()=>{if(!Ns)return;const e=()=>{t({width:window.innerWidth,height:window.innerHeight})};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),e}function ec(){const[e,t]=a(0);return r(()=>{if(!Ns)return;const e=()=>{t(window.pageYOffset)};return window.addEventListener("scroll",e),()=>window.removeEventListener("scroll",e)},[]),e}function tc(){const[e,t]=a(!Hs||navigator.onLine);return r(()=>{if(!Ns)return;const e=()=>t(!0),r=()=>t(!1);return window.addEventListener("online",e),window.addEventListener("offline",r),()=>{window.removeEventListener("online",e),window.removeEventListener("offline",r)}},[]),e}function rc(e){const[t,i]=a(!1);return r(()=>{if(!Ns)return;const r=window.matchMedia(e);r.matches!==t&&i(r.matches);const a=()=>i(r.matches);return r.addEventListener("change",a),()=>r.removeEventListener("change",a)},[t,e]),t}function ac(e){const[t,i]=a(!1);return r(()=>{if(!Ns)return;const t=({key:t})=>{t===e&&i(!0)},r=({key:t})=>{t===e&&i(!1)};return window.addEventListener("keydown",t),window.addEventListener("keyup",r),()=>{window.removeEventListener("keydown",t),window.removeEventListener("keyup",r)}},[e]),t}function ic(e,t){r(()=>{if(!Ns)return;const r=r=>{e.current&&!e.current.contains(r.target)&&t()};return document.addEventListener("mousedown",r),document.addEventListener("touchstart",r),()=>{document.removeEventListener("mousedown",r),document.removeEventListener("touchstart",r)}},[e,t])}function oc(e,t){const[r,n]=a(e),[s,c]=a({}),[u,l]=a({}),d=i(e=>t(e),[t]),h=i((e,t)=>{if(n(r=>({...r,[e]:t})),u[e]){const a=d({...r,[e]:t});c(t=>({...t,[e]:a[e]}))}},[r,u,d]),f=i(e=>{l(t=>({...t,[e]:!0}));const t=d(r);c(r=>({...r,[e]:t[e]}))},[r,d]),p=o(()=>{const e=d(r);return 0===Object.keys(e).length},[r,d]);return{values:r,errors:s,touched:u,isValid:p,setValue:h,setTouchedField:f,setValues:n,setErrors:c,setTouched:l}}export{bn as AuthenticationFailedError,He as CrossDomainAuth,$e as DeviceManager,ws as EMAIL_REGEX,H as ErrorCodes,Kr as KeyManager,L as LogLevel,Ne as OXY_CLOUD_URL,M as OxyAuthenticationError,T as OxyAuthenticationTimeoutError,Pe as OxyServices,Ss as PASSWORD_REGEX,Fa as RecoveryPhraseService,Ve as SECURITY_EVENT_SEVERITY_MAP,Te as SUPPORTED_LANGUAGES,mn as SessionSyncRequiredError,Jr as SignatureService,ks as USERNAME_REGEX,Mn as WebOxyProvider,wn as authenticatedApiCall,oe as batchAsync,ze as buildPaginationParams,Ie as buildSearchParams,xe as buildUrl,K as createApiError,ne as createCancellableAsync,Ke as createCrossDomainAuth,ys as createGenericMutation,gs as createProfileMutation,re as debounceAsync,ue as delay,gn as ensureValidToken,qe as getLanguageMetadata,Oe as getLanguageName,Le as getNativeLanguageName,V as handleHttpError,yn as isAuthenticationError,zs as isRequiredBoolean,xs as isRequiredNumber,Is as isRequiredString,Ms as isValidArray,Os as isValidDate,_s as isValidEmail,Ls as isValidFileSize,js as isValidFileType,Ts as isValidObject,Cs as isValidObjectId,As as isValidPassword,qs as isValidURL,Rs as isValidUUID,Es as isValidUsername,D as logApi,U as logAuth,N as logDevice,F as logPayment,B as logPerformance,C as logSession,P as logUser,j as logger,je as normalizeLanguageCode,Be as oxyClient,ee as parallelWithErrorHandling,te as retryAsync,le as retryOnError,Me as safeJsonParse,Ds as sanitizeHTML,Us as sanitizeString,ie as sequentialWithProgress,Bn as setOxyAssetInstance,Vn as setOxyFileUrlInstance,ae as throttleAsync,On as useAsset,Un as useAssetErrors,jn as useAssetLoading,Rn as useAssetStore,Pn as useAssetUsageCount,Hn as useAssets,Dn as useAssetsByApp,Cn as useAssetsByEntity,qn as useAssetsStore,Ks as useAsync,Vs as useAsyncEffect,zn as useAuth,Va as useAuthStore,ic as useClickOutside,Ys as useCounter,Qn as useCurrentUser,$s as useDebounce,rs as useDeviceSessions,$n as useFileDownloadUrl,vs as useFileFiltering,oc as useFormValidation,Nn as useIsAssetLinked,ac as useKeyPress,Js as useLocalStorage,ps as useLogoutAll,fs as useLogoutSession,rc as useMediaQuery,tc as useOnlineStatus,xn as useOxy,Ws as usePrevious,Zn as usePrivacySettings,ns as useRecentSecurityActivity,bs as useRemoveDevice,ec as useScrollPosition,os as useSecurityActivity,is as useSecurityInfo,ts as useSession,bo as useSessionSocket,Xs as useSessionStorage,es as useSessions,hs as useSwitchSession,Gs as useThrottle,Qs as useToggle,us as useUpdateAccountSettings,ms as useUpdateDeviceName,ls as useUpdatePrivacySettings,ss as useUpdateProfile,cs as useUploadAvatar,ds as useUploadFile,Ln as useUploadProgress,Yn as useUserById,Jn as useUserByUsername,as as useUserDevices,Gn as useUserProfile,Wn as useUserProfiles,Xn as useUsersBySessions,Zs as useWindowSize,Ps as validateAndSanitizeUserInput,$ as validateRequiredFields,vn as withAuthErrorHandling,Z as withErrorHandling,ce as withLoadingState,se as withTimeout};
|
|
2
|
-
//# sourceMappingURL=oxy-services.esm.js.map
|