@stytch/react 20.0.0-next.3 → 20.0.0-next.5
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/CHANGELOG.md +12 -0
- package/dist/cjs/b2b/index.cjs +15 -8
- package/dist/cjs/b2b/index.cjs.map +1 -1
- package/dist/cjs/index.cjs +45 -56
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/{shadcn-Z4AvHriT.js → shadcn-aVU6Lm9q.js} +9 -3
- package/dist/cjs/shadcn-aVU6Lm9q.js.map +1 -0
- package/dist/cjs-dev/b2b/index.cjs +15 -8
- package/dist/cjs-dev/b2b/index.cjs.map +1 -1
- package/dist/cjs-dev/index.cjs +45 -56
- package/dist/cjs-dev/index.cjs.map +1 -1
- package/dist/cjs-dev/{shadcn-DnNfms7-.js → shadcn-DMk6ZSoD.js} +9 -3
- package/dist/cjs-dev/shadcn-DMk6ZSoD.js.map +1 -0
- package/dist/esm/_virtual/index3.mjs +5 -3
- package/dist/esm/_virtual/index3.mjs.map +1 -1
- package/dist/esm/_virtual/index4.mjs +3 -5
- package/dist/esm/_virtual/index4.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/utils/theme.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2b/components/OAuthB2BButton.mjs +6 -3
- package/dist/esm/packages/web/src/ui/b2b/components/OAuthB2BButton.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/components/SSOButton.mjs +5 -3
- package/dist/esm/packages/web/src/ui/b2b/components/SSOButton.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/screens/SsoAndOAuthButtons.mjs +6 -3
- package/dist/esm/packages/web/src/ui/b2b/screens/SsoAndOAuthButtons.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/types/authMethodKeys.mjs +2 -2
- package/dist/esm/packages/web/src/ui/b2b/types/authMethodKeys.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/components/OAuthButton.mjs +6 -3
- package/dist/esm/packages/web/src/ui/b2c/components/OAuthButton.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Crypto/SetupNewWallet.mjs +20 -40
- package/dist/esm/packages/web/src/ui/b2c/screens/Crypto/SetupNewWallet.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Crypto/WalletButtons.mjs +7 -5
- package/dist/esm/packages/web/src/ui/b2c/screens/Crypto/WalletButtons.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/PresentationConfig.mjs +6 -1
- package/dist/esm/packages/web/src/ui/components/PresentationConfig.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/Button.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/EmailInput.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/EmailInput.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/Input.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/Input.mjs.map +1 -1
- package/dist/esm/packages/web/src/utils/crypto.mjs +12 -8
- package/dist/esm/packages/web/src/utils/crypto.mjs.map +1 -1
- package/dist/esm-dev/_virtual/index3.mjs +3 -5
- package/dist/esm-dev/_virtual/index3.mjs.map +1 -1
- package/dist/esm-dev/_virtual/index4.mjs +5 -3
- package/dist/esm-dev/_virtual/index4.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/theme.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/components/OAuthB2BButton.mjs +6 -3
- package/dist/esm-dev/packages/web/src/ui/b2b/components/OAuthB2BButton.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/components/SSOButton.mjs +5 -3
- package/dist/esm-dev/packages/web/src/ui/b2b/components/SSOButton.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/SsoAndOAuthButtons.mjs +6 -3
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/SsoAndOAuthButtons.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/types/authMethodKeys.mjs +2 -2
- package/dist/esm-dev/packages/web/src/ui/b2b/types/authMethodKeys.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/components/OAuthButton.mjs +6 -3
- package/dist/esm-dev/packages/web/src/ui/b2c/components/OAuthButton.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Crypto/SetupNewWallet.mjs +20 -40
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Crypto/SetupNewWallet.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Crypto/WalletButtons.mjs +7 -5
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Crypto/WalletButtons.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/PresentationConfig.mjs +6 -1
- package/dist/esm-dev/packages/web/src/ui/components/PresentationConfig.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/Button.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/EmailInput.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/EmailInput.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/Input.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/Input.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/utils/crypto.mjs +12 -8
- package/dist/esm-dev/packages/web/src/utils/crypto.mjs.map +1 -1
- package/dist/types/{PresentationConfig-CcNEXkjS.d.ts → PresentationConfig-B2jX85oV.d.ts} +8 -1
- package/dist/types/b2b/index.d.ts +3 -3
- package/dist/types/compat.d.ts +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/{shadcn-B04UXoBD.d.ts → shadcn-CGdmyIUF.d.ts} +1 -1
- package/package.json +1 -1
- package/dist/cjs/shadcn-Z4AvHriT.js.map +0 -1
- package/dist/cjs-dev/shadcn-DnNfms7-.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../web/src/assets/sso.tsx","../../../../web/src/assets/logo-color/Hubspot.tsx","../../../../web/src/assets/logo-color/Okta.tsx","../../../../web/src/messages/b2b/en.ts","../../../../../node_modules/swr/mutation/dist/index.mjs","../../../../web/src/ui/b2b/utils.ts","../../../../web/src/ui/b2b/generateProductComponentsOrdering.ts","../../../../web/src/utils/oauthProviderType.ts","../../../../web/src/ui/b2b/hooks/useEffectiveAuthConfig.ts","../../../../web/src/ui/b2b/screens/Main.tsx","../../../../web/src/ui/b2b/screens/Confirmation.tsx","../../../../web/src/ui/b2b/components/OrganizationRow.tsx","../../../../web/src/ui/b2b/screens/Discovery.tsx","../../../../web/src/ui/b2b/screens/MFAEnrollmentSelectionScreen.tsx","../../../../web/src/ui/b2b/screens/SMSOTPEnrollScreen.tsx","../../../../web/src/ui/b2b/screens/SMSOTPEntryScreen.tsx","../../../../web/src/ui/b2b/screens/RecoveryCodeEntryScreen.tsx","../../../../web/src/ui/components/atoms/CodeContainer.tsx","../../../../web/src/ui/b2b/screens/RecoveryCodeSaveScreen.tsx","../../../../web/src/ui/b2b/screens/TOTPEnrollQRScreen.tsx","../../../../web/src/ui/b2b/screens/TOTPEnrollManualScreen.tsx","../../../../web/src/ui/b2b/screens/TOTPEntryScreen.tsx","../../../../web/src/ui/b2b/hooks/useIsOnlyFloatingOneTap.ts","../../../../web/src/ui/b2b/components/OAuthB2BButton.tsx","../../../../web/src/ui/b2b/hooks/useLastUsedAuthMethod.ts","../../../../web/src/ui/b2b/components/B2BOneTap.tsx","../../../../web/src/ui/b2b/Container.tsx","../../../../web/src/ui/b2b/InternalAppContainer.tsx","../../../../web/src/ui/b2b/screens/useEmailDomain.ts","../../../../web/src/ui/b2b/hooks/useEmlLoginOrSignup.ts","../../../../web/src/ui/b2b/hooks/useEmlDiscoverySend.ts","../../../../web/src/ui/b2b/screens/EmailConfirmation.tsx","../../../../web/src/ui/b2b/getOtpCodeExpiration.ts","../../../../web/src/ui/b2b/hooks/useEmailOtpDiscoverySend.ts","../../../../web/src/ui/b2b/hooks/useEmailOtpLoginOrSignup.ts","../../../../web/src/ui/b2b/screens/EmailMethodSelectionScreen.tsx","../../../../web/src/ui/b2b/screens/EmailOTPEntryScreen.tsx","../../../../web/src/ui/b2b/hooks/useSsoDiscoveryConnection.ts","../../../../web/src/ui/b2b/screens/SSODiscoveryEmail.tsx","../../../../web/src/ui/b2b/components/SSOButton.tsx","../../../../web/src/ui/b2b/types/authMethodKeys.ts","../../../../web/src/ui/b2b/screens/SSODiscoveryMenu.tsx","../../../../web/src/ui/b2b/screens/SSODiscoveryFallback.tsx","../../../../web/src/ui/b2b/usePasswordInput.ts","../../../../web/src/ui/b2b/screens/PasswordEmailForm.tsx","../../../../web/src/ui/b2b/screens/PasswordAuthenticate.tsx","../../../../web/src/ui/b2b/screens/PasswordForgotForm.tsx","../../../../web/src/ui/b2b/screens/PasswordSetNew.tsx","../../../../web/src/ui/b2b/screens/PasswordResetForm.tsx","../../../../web/src/ui/b2b/screens/PasswordResetConfirmation.tsx","../../../../web/src/ui/b2b/components/UsePasswordButton.tsx","../../../../web/src/ui/b2b/screens/EmailForm.tsx","../../../../web/src/utils/assertUnreachable.ts","../../../../web/src/ui/b2b/screens/SsoAndOAuthButtons.tsx","../../../../web/src/ui/b2b/components/Icons.ts","../../../../web/src/ui/b2b/B2BProducts.tsx","../../../../web/src/ui/b2b/hooks/useStytchMember.ts","../../../../web/src/ui/b2b/screens/IDPConsent.tsx","../../../../web/src/ui/b2b/App.tsx","../../../../web/src/ui/react/bindings/createB2BComponent.tsx","../../../../web/src/ui/react/b2b/Stytch.tsx","../../../../web/src/ui/react/b2b/B2BIdentityProvider.tsx","../../../src/b2b/StytchB2BContext.tsx","../../../src/b2b/index.ts"],"sourcesContent":["import React from 'react';\nimport { DEFAULT_ICON_SIZE, IconProps } from './types';\n\nexport const SSOIcon = ({ size = DEFAULT_ICON_SIZE, ...props }: IconProps) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g clipPath=\"url(#clip0_221_1596)\">\n <path\n d=\"M17.5125 10.53C17.0025 7.9425 14.73 6 12 6C9.8325 6 7.95 7.23 7.0125 9.03C4.755 9.27 3 11.1825 3 13.5C3 15.9825 5.0175 18 7.5 18H17.25C19.32 18 21 16.32 21 14.25C21 12.27 19.4625 10.665 17.5125 10.53Z\"\n fill=\"currentColor\"\n />\n </g>\n <g clipPath=\"url(#clip1_221_1596)\">\n <path\n d=\"M15.9684 13.1139L14.9987 14.0933L14.5152 13.6098L14.2501 13.3446L13.9849 13.6098L13.5001 14.0946L13.0152 13.6098L12.9054 13.4999H12.7501H12.6188H12.3532L12.2651 13.7504C12.0087 14.4788 11.3147 14.9999 10.5001 14.9999C9.46592 14.9999 8.62506 14.1591 8.62506 13.1249C8.62506 12.0908 9.46592 11.2499 10.5001 11.2499C11.3147 11.2499 12.0087 11.7711 12.2651 12.4994L12.3532 12.7499H12.6188H15.5969L15.9684 13.1139ZM9.00006 13.1249C9.00006 13.9508 9.6742 14.6249 10.5001 14.6249C11.3259 14.6249 12.0001 13.9508 12.0001 13.1249C12.0001 12.2991 11.3259 11.6249 10.5001 11.6249C9.6742 11.6249 9.00006 12.2991 9.00006 13.1249Z\"\n fill=\"var(--st-background)\"\n stroke=\"var(--st-background)\"\n strokeWidth=\"0.75\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_221_1596\">\n <rect width=\"18\" height=\"18\" transform=\"translate(3 3)\" />\n </clipPath>\n <clipPath id=\"clip1_221_1596\">\n <rect width=\"8.25\" height=\"6\" transform=\"translate(8.25006 10.1251)\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const HubspotIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#FF7A59\"\n fillRule=\"evenodd\"\n d=\"M13.93 13.97a2.4 2.4 0 0 1-2.43-2.4c0-1.34 1.09-2.42 2.43-2.42a2.4 2.4 0 0 1 2.43 2.41c0 1.33-1.08 2.41-2.43 2.41m.73-7.05V4.78c.56-.26.96-.83.96-1.49v-.05c0-.9-.75-1.64-1.66-1.64h-.05c-.92 0-1.67.74-1.67 1.64v.05c0 .66.4 1.23.96 1.5v2.13q-1.27.21-2.24.98L5 3.32q.07-.21.07-.46C5.08 1.83 4.24 1 3.2 1s-1.88.83-1.88 1.86a1.87 1.87 0 0 0 2.8 1.6l5.85 4.51a4.6 4.6 0 0 0 .07 5.29l-1.77 1.76a1.54 1.54 0 0 0-1.98 1.46 1.54 1.54 0 0 0 3.09 0q-.02-.23-.08-.44l1.76-1.74a4.75 4.75 0 0 0 7.62-3.74 4.7 4.7 0 0 0-4.02-4.64\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const OktaIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#191919\"\n fillRule=\"evenodd\"\n d=\"m10.9 1.13-.37 4.56a5 5 0 0 0-1.19.01l-.2-2.2q0-.12.11-.13h.38l-.18-2.24q.01-.12.11-.13h1.23q.11.01.11.13m-3.09.22q-.04-.1-.15-.08l-1.15.42q-.11.06-.07.16l.94 2.04-.36.13q-.1.06-.06.16l.95 2a4 4 0 0 1 1.12-.42zM5 2.62l2.65 3.73q-.51.33-.9.78l-1.6-1.56a.12.12 0 0 1 .01-.18l.3-.23-1.58-1.6a.12.12 0 0 1 0-.18l.94-.78a.12.12 0 0 1 .17.02M2.77 4.78q-.1-.05-.17.04l-.61 1.06a.12.12 0 0 0 .05.17L4.07 7l-.2.32a.12.12 0 0 0 .06.17l2.02.92q.22-.56.59-1.04zm-1.5 2.88q.03-.11.15-.1l4.42 1.16q-.17.57-.19 1.18l-2.21-.18a.12.12 0 0 1-.1-.14l.06-.37L1.16 9q-.11-.02-.1-.14zm-.16 2.99q-.12.02-.1.14l.2 1.2q.05.12.15.1l2.17-.56.07.37c0 .06.08.1.14.09l2.14-.59q-.19-.56-.22-1.17zm.7 3.17a.12.12 0 0 1 .06-.17L6 11.7q.24.55.62 1.02L4.8 14.01a.12.12 0 0 1-.17-.04l-.19-.33-1.84 1.28q-.1.05-.17-.04zm5.02-.86L3.6 16.21a.12.12 0 0 0 0 .18l.95.79q.1.06.17-.02l1.3-1.84.29.25q.1.07.18-.03l1.26-1.82a5 5 0 0 1-.93-.76m-.64 5.22a.12.12 0 0 1-.07-.16l1.91-4.15q.53.27 1.13.39L8.6 16.4a.12.12 0 0 1-.16.07l-.35-.12-.6 2.16q-.04.1-.15.08zm3.28-3.87-.37 4.56q0 .12.12.13h1.22q.12-.01.12-.13l-.18-2.23h.37q.12-.02.12-.14l-.2-2.2a4 4 0 0 1-1.2.01M13.9 1.97a.12.12 0 0 0-.07-.17l-1.15-.41q-.12-.03-.16.08l-.6 2.16-.35-.13q-.1-.02-.15.08l-.56 2.15q.6.12 1.12.39zm2.5 1.81-3.21 3.26a4 4 0 0 0-.93-.76l1.26-1.83a.12.12 0 0 1 .18-.03l.29.25 1.3-1.83a.12.12 0 0 1 .17-.02l.94.79q.09.08.01.17m1.75 2.56q.1-.05.05-.17l-.62-1.05a.12.12 0 0 0-.17-.04l-1.84 1.27-.2-.32q-.06-.1-.16-.04l-1.82 1.29q.38.46.62 1.02zM18.79 8l.2 1.2a.12.12 0 0 1-.1.15l-4.55.42a4 4 0 0 0-.23-1.17l2.14-.59q.12-.02.15.1l.06.37 2.17-.57q.12-.03.15.1zm-.2 4.43q.1.01.14-.1l.2-1.2a.12.12 0 0 0-.1-.15l-2.23-.2.06-.37a.12.12 0 0 0-.1-.14l-2.22-.18q-.01.6-.19 1.18l4.43 1.15m-1.19 2.75a.12.12 0 0 1-.17.04l-3.77-2.6q.36-.48.59-1.04l2.02.92q.1.06.05.16l-.19.33 2.03.96q.1.05.05.17zm-5.04-1.54 2.65 3.73q.08.08.17.02l.94-.79a.12.12 0 0 0 0-.17l-1.57-1.6.3-.23q.08-.09 0-.18l-1.59-1.56q-.4.46-.9.78m-.02 5.08q-.12.03-.16-.08l-1.2-4.41q.59-.14 1.1-.43l.96 2.01c.03.06 0 .14-.06.16l-.36.13.94 2.04q.04.1-.07.16z\"\n clipRule=\"evenodd\"\n className={_styles.darkInvert}\n />\n </svg>\n);\n","import { Messages } from '@lingui/core';\nimport { messages as _messages } from '../../../messages/b2b/en.json';\n\nexport const messages = _messages as unknown as Messages;\n","import { useRef, useCallback } from 'react';\nimport useSWR, { useSWRConfig } from 'swr';\nimport { withMiddleware, useStateWithDeps, UNDEFINED, serialize, mergeObjects, getTimestamp, useIsomorphicLayoutEffect } from 'swr/_internal';\n\nconst mutation = ()=>{\n return (key, fetcher, config = {})=>{\n const { mutate } = useSWRConfig();\n const keyRef = useRef(key);\n const fetcherRef = useRef(fetcher);\n const configRef = useRef(config);\n // Ditch all mutation results that happened earlier than this timestamp.\n const ditchMutationsUntilRef = useRef(0);\n const [stateRef, stateDependencies, setState] = useStateWithDeps({\n data: UNDEFINED,\n error: UNDEFINED,\n isMutating: false\n });\n const currentState = stateRef.current;\n const trigger = useCallback(async (arg, opts)=>{\n const [serializedKey, resolvedKey] = serialize(keyRef.current);\n if (!fetcherRef.current) {\n throw new Error('Can’t trigger the mutation: missing fetcher.');\n }\n if (!serializedKey) {\n throw new Error('Can’t trigger the mutation: missing key.');\n }\n // Disable cache population by default.\n const options = mergeObjects(mergeObjects({\n populateCache: false,\n throwOnError: true\n }, configRef.current), opts);\n // Trigger a mutation, and also track the timestamp. Any mutation that happened\n // earlier this timestamp should be ignored.\n const mutationStartedAt = getTimestamp();\n ditchMutationsUntilRef.current = mutationStartedAt;\n setState({\n isMutating: true\n });\n try {\n const data = await mutate(serializedKey, fetcherRef.current(resolvedKey, {\n arg\n }), // We must throw the error here so we can catch and update the states.\n mergeObjects(options, {\n throwOnError: true\n }));\n // If it's reset after the mutation, we don't broadcast any state change.\n if (ditchMutationsUntilRef.current <= mutationStartedAt) {\n setState({\n data,\n isMutating: false,\n error: undefined\n });\n options.onSuccess == null ? void 0 : options.onSuccess(data, serializedKey, options);\n }\n return data;\n } catch (error) {\n // If it's reset after the mutation, we don't broadcast any state change\n // or throw because it's discarded.\n if (ditchMutationsUntilRef.current <= mutationStartedAt) {\n setState({\n error: error,\n isMutating: false\n });\n options.onError == null ? void 0 : options.onError(error, serializedKey, options);\n if (options.throwOnError) {\n throw error;\n }\n }\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n const reset = useCallback(()=>{\n ditchMutationsUntilRef.current = getTimestamp();\n setState({\n data: UNDEFINED,\n error: UNDEFINED,\n isMutating: false\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n useIsomorphicLayoutEffect(()=>{\n keyRef.current = key;\n fetcherRef.current = fetcher;\n configRef.current = config;\n });\n // We don't return `mutate` here as it can be pretty confusing (e.g. people\n // calling `mutate` but they actually mean `trigger`).\n // And also, `mutate` relies on the useSWR hook to exist too.\n return {\n trigger,\n reset,\n get data () {\n stateDependencies.data = true;\n return currentState.data;\n },\n get error () {\n stateDependencies.error = true;\n return currentState.error;\n },\n get isMutating () {\n stateDependencies.isMutating = true;\n return currentState.isMutating;\n }\n };\n };\n};\n/**\n * A hook to define and manually trigger remote mutations like POST, PUT, DELETE and PATCH use cases.\n *\n * @link https://swr.vercel.app/docs/mutation\n * @example\n * ```jsx\n * import useSWRMutation from 'swr/mutation'\n *\n * const {\n * data,\n * error,\n * trigger,\n * reset,\n * isMutating\n * } = useSWRMutation(key, fetcher, options?)\n * ```\n */ var index = withMiddleware(useSWR, mutation);\n\nexport { index as default };\n","import { useEffect, useMemo, useState } from 'react';\nimport useSWRMutation, { MutationFetcher, SWRMutationConfiguration } from 'swr/mutation';\nimport { useConfig, useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from './GlobalContextProvider';\nimport { ErrorType } from './types/ErrorType';\nimport { AppScreens } from './types/AppScreens';\nimport {\n AuthFlowType,\n B2BAuthenticateResponseWithMFA,\n B2BDiscoveryAuthenticateResponse,\n B2BMagicLinksDiscoveryAuthenticateResponse,\n StytchError,\n StytchEvent,\n StytchEventType,\n StytchAPIError,\n StytchProjectConfigurationInput,\n} from '@stytch/core/public';\nimport { StytchB2BExtendedLoginConfig } from '../../types';\nimport { readB2BInternals } from '../../utils/internal';\nimport { B2BOrganizationsGetBySlugResponse } from '@stytch/core/public';\nimport { StytchB2BClient } from '../../b2b/StytchB2BClient';\nimport { Action } from './reducer';\nimport type { ProductId, StytchB2BProduct } from './StytchB2BProduct';\n\ntype RecursiveDotNotation<T> = T extends object\n ? {\n [K in keyof T]: K extends string\n ? T[K] extends (...args: never[]) => unknown\n ? K\n : T[K] extends object\n ? `${K}.${RecursiveDotNotation<T[K]>}`\n : K\n : never;\n }[keyof T]\n : never;\n\ntype ValidStytchMutationKey = `stytch.${RecursiveDotNotation<StytchB2BClient>}`;\n\nconst KeyToStytchEventMap = {\n 'stytch.magicLinks.authenticate': StytchEventType.B2BMagicLinkAuthenticate,\n 'stytch.sso.authenticate': StytchEventType.B2BSSOAuthenticate,\n 'stytch.sso.discoverConnections': StytchEventType.B2BSSODiscoverConnections,\n 'stytch.magicLinks.discovery.authenticate': StytchEventType.B2BMagicLinkDiscoveryAuthenticate,\n 'stytch.discovery.organizations.create': StytchEventType.B2BDiscoveryOrganizationsCreate,\n 'stytch.discovery.intermediateSessions.exchange': StytchEventType.B2BDiscoveryIntermediateSessionExchange,\n 'stytch.magicLinks.email.loginOrSignup': StytchEventType.B2BMagicLinkEmailLoginOrSignup,\n 'stytch.magicLinks.email.discovery.send': StytchEventType.B2BMagicLinkEmailDiscoverySend,\n 'stytch.oauth.authenticate': StytchEventType.B2BOAuthAuthenticate,\n 'stytch.oauth.discovery.authenticate': StytchEventType.B2BOAuthDiscoveryAuthenticate,\n 'stytch.otps.sms.send': StytchEventType.B2BSMSOTPSend,\n 'stytch.otps.sms.authenticate': StytchEventType.B2BSMSOTPAuthenticate,\n 'stytch.totp.create': StytchEventType.B2BTOTPCreate,\n 'stytch.totp.authenticate': StytchEventType.B2BTOTPAuthenticate,\n 'stytch.recoveryCodes.recover': StytchEventType.B2BRecoveryCodesRecover,\n 'stytch.impersonation.authenticate': StytchEventType.B2BImpersonationAuthenticate,\n 'stytch.otps.email.authenticate': StytchEventType.B2BOTPsEmailAuthenticate,\n 'stytch.otps.email.discovery.authenticate': StytchEventType.B2BOTPsEmailDiscoveryAuthenticate,\n 'stytch.otps.email.discovery.send': StytchEventType.B2BOTPsEmailDiscoverySend,\n 'stytch.otps.email.loginOrSignup': StytchEventType.B2BOTPsEmailLoginOrSignup,\n 'stytch.organization.getBySlug': StytchEventType.B2BOrganizationsGetBySlug,\n} satisfies Partial<Record<ValidStytchMutationKey, StytchEventType>>;\n\ntype StytchExternalMutationKey = keyof typeof KeyToStytchEventMap;\n\ntype StytchInternalMutationKey = `internal.${string}`;\n\nexport type StytchMutationKey = StytchExternalMutationKey | StytchInternalMutationKey;\n\nexport function getStytchEventByKey(key: StytchMutationKey): StytchEventType | undefined {\n return KeyToStytchEventMap[key as StytchExternalMutationKey];\n}\n\nexport const useMutate = <TData, TError, TKey extends StytchMutationKey, TExtraArg = never>(\n key: TKey,\n fetcher: MutationFetcher<TData, TExtraArg, TKey>,\n options: SWRMutationConfiguration<TData, TError, TExtraArg, TKey> = {},\n) => {\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const result = useSWRMutation<TData, TError, TKey, TExtraArg>(key, fetcher, {\n throwOnError: false,\n ...options,\n onSuccess: (data, key, config) => {\n const eventType = getStytchEventByKey(key as StytchMutationKey);\n if (eventType) {\n onEvent({ type: eventType, data } as StytchEvent<StytchProjectConfigurationInput>);\n }\n\n options.onSuccess?.(data, key, config);\n },\n onError: (error, key, config) => {\n onError(error as StytchError);\n\n options.onError?.(error, key, config);\n },\n });\n\n // Hide the error while mutating. This helps avoid the errors continuing to show after the user has clicked submit\n // and also ensures repeating errors causes <ErrorText> to re-render which is important for screenreaders to\n // re-announce them\n return result.isMutating ? { ...result, error: undefined } : result;\n};\n\n/**\n *\n * This hook triggers a request to retrieve the organization from the slug.\n * The hook only triggers the request if the SDK is being used in an organization flow,\n * and a slug pattern is present. The hook returns an isSearching boolean that can be used\n * to display a loading state while the search is in progress.\n */\nexport const useExtractSlug = () => {\n const [state, dispatch] = useGlobalReducer();\n const [pattern, setPattern] = useState<string | null | undefined>();\n const config = useConfig();\n\n const stytchClient = useStytch();\n const slug = config.organizationSlug ?? extractFromPattern(pattern || null, window.location.href);\n\n const { trigger, isMutating: isSearching } = useMutate<\n B2BOrganizationsGetBySlugResponse,\n StytchAPIError,\n StytchExternalMutationKey,\n { slug: string }\n >(\n 'stytch.organization.getBySlug',\n (_: string, { arg: { slug } }: { arg: { slug: string } }) =>\n stytchClient.organization.getBySlug({ organization_slug: slug }),\n {\n onSuccess: ({ organization }) => {\n if (organization === null) {\n dispatch({\n type: 'set_error_message_and_transition',\n errorType: ErrorType.Organization,\n canGoBack: false,\n });\n } else {\n dispatch({\n type: 'set_organization',\n organization: {\n ...organization,\n },\n });\n }\n },\n },\n );\n\n useEffect(() => {\n readB2BInternals(stytchClient)\n .bootstrap.getAsync()\n .then(({ slugPattern }) => {\n setPattern(slugPattern);\n });\n }, [stytchClient]);\n\n useEffect(() => {\n if (\n slug !== null &&\n state.flowState.organization === null &&\n state.screen === AppScreens.Main &&\n state.flowState.type == AuthFlowType.Organization\n ) {\n trigger({ slug });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, [slug, state.flowState, state.screen]);\n\n // The org is pending identification if the slug pattern has not yet been\n // determined (i.e., `undefined`) or the organization request is in progress\n const resultPending = pattern === undefined || isSearching;\n\n return { slug, resultPending };\n};\n\nexport const useBootstrap = () => {\n const stytchClient = useStytch();\n const [bootstrap, setBootstrap] = useState(readB2BInternals(stytchClient).bootstrap.getSync());\n\n useEffect(() => {\n readB2BInternals(stytchClient)\n .bootstrap.getAsync()\n .then((data) => {\n setBootstrap(data);\n });\n }, [stytchClient]);\n\n return bootstrap;\n};\n\nexport const onAuthenticateSuccess = (\n data: B2BAuthenticateResponseWithMFA<StytchProjectConfigurationInput>,\n dispatch: React.Dispatch<Action>,\n config: StytchB2BExtendedLoginConfig,\n) => {\n dispatch({\n type: 'primary_authenticate_success',\n response: data,\n includedMfaMethods: config.mfaProductInclude,\n });\n};\n\nexport const onDiscoveryAuthenticateSuccess = (\n data: B2BDiscoveryAuthenticateResponse | B2BMagicLinksDiscoveryAuthenticateResponse,\n dispatch: React.Dispatch<Action>,\n) => {\n dispatch({\n type: 'set_discovery_state',\n email: data.email_address,\n discoveredOrganizations: data.discovered_organizations,\n });\n};\n\nexport const extractFromPattern = (pattern: string | null, href: string): string | null => {\n if (pattern === null) return null;\n\n const url = new URL(href);\n url.search = '';\n\n const currentUrl = url.toString().trim();\n const regexPattern = pattern.replace(/\\./g, '\\\\.').replace(/\\*/g, '(?:[^.]+)').replace('{{slug}}', '(.+)');\n\n const regex = new RegExp(regexPattern);\n const match = currentUrl.match(regex);\n\n if (match && match[1]) {\n return match?.[1];\n }\n\n return null;\n};\n\nexport function hasProduct(products: StytchB2BProduct[], product: ProductId) {\n return products.some((p) => p.id === product);\n}\n\nexport function useProductComponents<Type extends 'screens' | 'mainScreen' | 'ssoAndOAuthButtons'>(\n { products, organizationProducts }: { products: StytchB2BProduct[]; organizationProducts: StytchB2BProduct[] },\n screenType: Type,\n) {\n return useMemo(() => {\n const map = {} as Required<StytchB2BProduct[Type]>;\n for (const product of [...products, ...organizationProducts]) {\n if (product[screenType]) Object.assign(map, product[screenType]);\n }\n return map;\n }, [products, organizationProducts, screenType]);\n}\n","import { AuthFlowType } from '@stytch/core/public';\nimport { FlowState } from './types/AppState';\nimport { ButtonComponent, MainScreenComponent } from './types/AppScreens';\nimport { StytchB2BProduct } from './StytchB2BProduct';\n\nexport const isButtonsComponent = (component: MainScreenComponent): component is ButtonComponent =>\n component === MainScreenComponent.OAuthButtons || component === MainScreenComponent.SSOButtons;\n\n/*\n Here we are generating the ordering and which components will be displayed.\n We use the MainScreenComponent enum this because there is some complex logic here, and\n we want to be able to unit test.\n\n Rules we want to follow when generating the components:\n 1. If we're displaying both an email-based method (email magic links and/or email OTPs) and passwords,\n we need to display them together as a single wrapped component. The index of this wrapped component is\n equivalent to the first index of either email-based method or passwords in the config products list.\n 2. If we have both buttons and input, we want to display a divider between the last 2 elements.\n 3. Some components have both a discovery and a non-discovery version. We want to display the correct version\n based on the flow type (found in state).\n 4. We want to display the components in the order that they are listed in the config.\n\n This function should be considered the source of truth for which components to render\n and what order to render them in as of 6/21/23.\n*/\nexport const generateProductComponentsOrdering = (\n products: StytchB2BProduct[],\n flowState: FlowState,\n): MainScreenComponent[][] => {\n const flowStateType = flowState.type;\n const productsSet = new Set(products.map((p) => p.id));\n const displayEmailAndPasswordsTogether =\n (productsSet.has('emailMagicLinks') || productsSet.has('emailOtp')) && productsSet.has('passwords');\n const emailPasswordCombinedComponent =\n flowStateType === AuthFlowType.Organization\n ? MainScreenComponent.PasswordEmailCombined\n : MainScreenComponent.PasswordEmailCombinedDiscovery;\n\n const productComponentsSet = products.reduce((components, product) => {\n switch (product.id) {\n case 'emailMagicLinks':\n case 'emailOtp':\n if (displayEmailAndPasswordsTogether) {\n components.add(emailPasswordCombinedComponent);\n } else {\n components.add(\n flowStateType === AuthFlowType.Organization\n ? MainScreenComponent.EmailForm\n : MainScreenComponent.EmailDiscoveryForm,\n );\n }\n break;\n case 'oauth':\n components.add(MainScreenComponent.OAuthButtons);\n break;\n case 'sso': {\n const isSsoValid =\n flowStateType === AuthFlowType.Discovery ||\n (flowStateType === AuthFlowType.Organization &&\n (flowState.organization?.sso_active_connections?.length ?? 0) > 0);\n if (isSsoValid) {\n components.add(MainScreenComponent.SSOButtons);\n }\n break;\n }\n case 'passwords':\n components.add(\n displayEmailAndPasswordsTogether ? emailPasswordCombinedComponent : MainScreenComponent.PasswordsEmailForm,\n );\n break;\n }\n return components;\n }, new Set<MainScreenComponent>());\n\n return Array.from(productComponentsSet).reduce<MainScreenComponent[][]>((groups, component, i, arr) => {\n const prevComponent = i > 0 ? arr[i - 1] : undefined;\n\n // Group consecutive components with buttons\n const shouldJoinPreviousGroup = prevComponent && isButtonsComponent(component) && isButtonsComponent(prevComponent);\n\n if (shouldJoinPreviousGroup) {\n groups[groups.length - 1].push(component);\n } else {\n // If the previous group was a different type than this group, prepend a divider\n const prevGroup = groups.length > 0 ? groups[groups.length - 1] : undefined;\n if (prevGroup && isButtonsComponent(prevGroup[0]) !== isButtonsComponent(component)) {\n groups.push([MainScreenComponent.Divider]);\n }\n\n groups.push([component]);\n }\n return groups;\n }, []);\n};\n","import { B2BOAuthProviderConfig, B2BOAuthProviders } from '@stytch/core/public';\n\nexport const getParamsFromB2BOAuthProviderConfig = (provider: B2BOAuthProviderConfig) => {\n let providerType: B2BOAuthProviders;\n let oneTap = false;\n let customScopes: string[] = [];\n let providerParams: Record<string, string> = {};\n let cancelOnTapOutside: boolean | undefined = undefined;\n if (typeof provider === 'string') {\n providerType = provider;\n } else {\n providerType = provider.type;\n if (provider.type === B2BOAuthProviders.Google && provider.one_tap) {\n oneTap = provider.one_tap;\n cancelOnTapOutside = provider.cancel_on_tap_outside;\n }\n customScopes = provider.customScopes || [];\n providerParams = provider.providerParams || {};\n }\n return {\n type: providerType,\n one_tap: oneTap,\n customScopes,\n providerParams,\n cancel_on_tap_outside: cancelOnTapOutside,\n };\n};\n","import { B2BOAuthProviderConfig, B2BOAuthProviders } from '@stytch/core/public';\nimport { useMemo } from 'react';\nimport { isTruthy } from '../../../utils/isTruthy';\nimport { getParamsFromB2BOAuthProviderConfig } from '../../../utils/oauthProviderType';\nimport { useConfig, useGlobalReducer } from '../GlobalContextProvider';\nimport { ProductId, StytchB2BProduct } from '../StytchB2BProduct';\n\nexport type OauthProviderParams = {\n type: B2BOAuthProviders;\n one_tap: boolean;\n customScopes: string[];\n providerParams: Record<string, string>;\n cancel_on_tap_outside: boolean | undefined;\n};\n\n// Note that the order of products here is used when displaying fallback auth\n// methods below\nconst productsToAuthMethods: Record<ProductId, string | undefined> = {\n oauth: undefined, // OAuth methods are defined per-provider\n sso: 'sso',\n emailMagicLinks: 'magic_link',\n emailOtp: 'email_otp',\n passwords: 'password',\n};\n\nconst oauthProvidersToAuthMethods: Record<B2BOAuthProviders, string> = {\n [B2BOAuthProviders.Google]: 'google_oauth',\n [B2BOAuthProviders.Microsoft]: 'microsoft_oauth',\n [B2BOAuthProviders.HubSpot]: 'hubspot_oauth',\n [B2BOAuthProviders.Slack]: 'slack_oauth',\n [B2BOAuthProviders.GitHub]: 'github_oauth',\n};\n\nconst authMethodsToProducts: Record<string, ProductId> = Object.fromEntries(\n Object.entries(productsToAuthMethods).map(([product, authMethod]) => [authMethod, product]),\n);\n\nconst oauthMethodsToOauthProviders: Record<string, B2BOAuthProviders> = Object.fromEntries(\n Object.entries(oauthProvidersToAuthMethods).map(([provider, method]) => [\n method,\n provider as keyof typeof oauthProvidersToAuthMethods,\n ]),\n);\n\nconst authMethodToProduct = (authMethod: string): ProductId | undefined => {\n if (authMethod in oauthMethodsToOauthProviders) {\n return 'oauth';\n }\n return authMethodsToProducts[authMethod];\n};\n\nconst allOauthProviders = Object.values(B2BOAuthProviders);\n\nconst flattenConfigToAuthMethods = (products: StytchB2BProduct[], oauthProviders: B2BOAuthProviderConfig[]) =>\n products\n .flatMap((product) => {\n if (product.id === 'oauth') {\n return oauthProviders.map((provider) => {\n const authMethod = oauthProvidersToAuthMethods[typeof provider === 'string' ? provider : provider.type];\n if (authMethod) {\n return authMethod;\n }\n });\n } else {\n const authMethod = productsToAuthMethods[product.id];\n if (authMethod) {\n return authMethod;\n }\n }\n })\n .filter(isTruthy);\n\nconst useOAuthProviderConfigs = () => {\n const config = useConfig();\n return useMemo(() => {\n if (!config.oauthOptions?.providers) {\n return [];\n }\n\n return config.oauthOptions.providers.map(getParamsFromB2BOAuthProviderConfig);\n }, [config.oauthOptions?.providers]);\n};\n\nconst useRestrictedAuthMethods = () => {\n const [state] = useGlobalReducer();\n\n const { primaryAuthMethods } = state.primary;\n const hasPrimaryAuthMethods = !!primaryAuthMethods;\n\n const restrictedAuthMethods = useMemo(() => {\n if (state.primary.primaryAuthMethods) {\n return new Set(state.primary.primaryAuthMethods);\n }\n\n if (state.flowState.organization?.auth_methods === 'RESTRICTED') {\n return new Set(state.flowState.organization?.allowed_auth_methods ?? []);\n }\n }, [\n state.flowState.organization?.allowed_auth_methods,\n state.flowState.organization?.auth_methods,\n state.primary.primaryAuthMethods,\n ]);\n\n return { restrictedAuthMethods, hasPrimaryAuthMethods };\n};\n\nexport const useEffectiveAuthConfig = () => {\n const [state] = useGlobalReducer();\n const config = useConfig();\n\n const { restrictedAuthMethods, hasPrimaryAuthMethods } = useRestrictedAuthMethods();\n\n const oauthProviderConfigs = useOAuthProviderConfigs();\n\n const flattenedConfiguredAuthMethods = useMemo(\n () => flattenConfigToAuthMethods(config.products, oauthProviderConfigs),\n [config.products, oauthProviderConfigs],\n );\n\n const authMethodsToShow = useMemo(() => {\n // If there are no restrictions, use the auth methods from the UI config as-is\n if (!restrictedAuthMethods) {\n return flattenedConfiguredAuthMethods;\n }\n\n // If there are restrictions, filter the auth methods from the UI config\n const restrictedAuthMethodsInUiConfig = flattenedConfiguredAuthMethods.filter((authMethod) =>\n restrictedAuthMethods.has(authMethod),\n );\n\n // Use the filtered methods unless there are none _and_ the restrictions\n // come from `primary_required` (not just org-level restrictions)\n if (restrictedAuthMethodsInUiConfig.length > 0 || !hasPrimaryAuthMethods) {\n return restrictedAuthMethodsInUiConfig;\n }\n\n // If the org restricts allowed auth methods, show all of the methods\n // included in `primary_required`\n if (state.flowState.organization?.auth_methods === 'RESTRICTED') {\n return flattenConfigToAuthMethods(config.organizationProducts, allOauthProviders).filter((authMethod) =>\n restrictedAuthMethods.has(authMethod),\n );\n }\n\n // If the org doesn't have any auth method restrictions, default to email\n // magic links\n return ['magic_link'];\n }, [\n config.organizationProducts,\n flattenedConfiguredAuthMethods,\n hasPrimaryAuthMethods,\n restrictedAuthMethods,\n state.flowState.organization?.auth_methods,\n ]);\n\n const products = useMemo(() => {\n const productIds = [...new Set(authMethodsToShow.map(authMethodToProduct).filter(isTruthy))];\n return productIds.map((productId) => config.organizationProducts.find((p) => p.id === productId)).filter(isTruthy);\n }, [authMethodsToShow, config.organizationProducts]);\n\n const oauthProviderSettings = useMemo<OauthProviderParams[]>(\n () =>\n authMethodsToShow\n .map((authMethod) => {\n const provider = oauthMethodsToOauthProviders[authMethod];\n if (provider) {\n return (\n oauthProviderConfigs.find((oauthProvider) => oauthProvider.type === provider) ??\n getParamsFromB2BOAuthProviderConfig(provider)\n );\n }\n })\n .filter(isTruthy),\n [authMethodsToShow, oauthProviderConfigs],\n );\n\n return { products, oauthProviderSettings };\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { usePresentation } from '../../components/PresentationConfig';\nimport { useConfig, useGlobalReducer } from '../GlobalContextProvider';\nimport Divider from '../../components/molecules/Divider';\nimport { LoadingScreen } from '../../components/molecules/Loading';\nimport { AuthFlowType } from '@stytch/core/public';\nimport { generateProductComponentsOrdering, isButtonsComponent } from '../generateProductComponentsOrdering';\nimport { useEffectiveAuthConfig } from '../hooks/useEffectiveAuthConfig';\nimport { useProductComponents } from '../utils';\nimport Typography from '../../components/atoms/Typography';\nimport Column from '../../components/atoms/Column';\nimport { ButtonComponent, MainScreenComponent } from '../types/AppScreens';\n\nfunction isButtonGroup(group: MainScreenComponent[]): group is ButtonComponent[] {\n return group.every(isButtonsComponent);\n}\n\nexport const MainScreen = () => {\n const { options } = usePresentation();\n const [state] = useGlobalReducer();\n const { t } = useLingui();\n\n const { primaryAuthMethods, email, emailVerified } = state.primary;\n\n const config = useConfig();\n const { products } = useEffectiveAuthConfig();\n\n const isLoading = state.flowState.type === AuthFlowType.Organization && !state.flowState.organization;\n\n // Generate ordering and types of product components\n const productComponentsOrdering = generateProductComponentsOrdering(products, state.flowState);\n const mainScreenComponents = useProductComponents(config, 'mainScreen')!;\n const { SsoAndOAuthButtons } = useProductComponents(config, 'ssoAndOAuthButtons')!;\n\n const organizationName = state.flowState.organization?.organization_name;\n let title: string;\n switch (state.flowState.type) {\n case AuthFlowType.Discovery:\n title = t({ id: 'login.title', message: 'Sign up or log in' });\n break;\n case AuthFlowType.PasswordReset:\n title = '';\n break;\n default:\n title = organizationName\n ? t({\n id: 'organizationLogin.title',\n message: `Continue to ${organizationName}`,\n })\n : t({\n id: 'organizationLogin.titleUnknown',\n message: 'Continue to ...',\n comment: 'Used instead of organizationLogin.title when the organization name is not available',\n });\n break;\n }\n\n // Show a targeted message if the member has an unverified email address and\n // additional primary auth is required\n const showVerifyEmailCopy = email && emailVerified === false && primaryAuthMethods;\n\n if (isLoading) {\n return <LoadingScreen />;\n }\n\n return (\n <Column gap={6}>\n {!options.hideHeaderText &&\n (showVerifyEmailCopy ? (\n <>\n <Typography variant=\"header\">\n {t({ id: 'emailVerification.title', message: 'Verify your email' })}\n </Typography>\n\n <Typography>\n {t({\n id: 'emailVerification.content',\n message: 'Confirm your email address with one of the following:',\n })}\n </Typography>\n </>\n ) : (\n title && (\n <Typography variant=\"header\" align=\"center\">\n {title}\n </Typography>\n )\n ))}\n\n <Column gap={4}>\n {productComponentsOrdering.map((group) =>\n isButtonGroup(group) ? (\n <SsoAndOAuthButtons key=\"buttons\" buttons={group} />\n ) : (\n group.map((component, index) => {\n const Component = mainScreenComponents[component];\n if (Component) {\n return <Component key={component} />;\n }\n if (component === MainScreenComponent.Divider) {\n return <Divider key={'divider' + index} />;\n }\n return null;\n })\n ),\n )}\n </Column>\n </Column>\n );\n};\n","import { StytchEventType } from '@stytch/core/public';\nimport * as React from 'react';\nimport { Confirmation } from '../../components/molecules/Confirmation';\nimport { useMountEffect } from '../../hooks/useMountEffect';\nimport { useEventCallback } from '../GlobalContextProvider';\n\nexport const ConfirmationScreen = () => {\n const onEvent = useEventCallback();\n useMountEffect(() => {\n onEvent({ type: StytchEventType.AuthenticateFlowComplete, data: {} });\n });\n\n return <Confirmation />;\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { Organization } from '@stytch/core/public';\n\nimport { Badge } from '../../components/molecules/Badge';\nimport { buttonClassNames } from '../../components/atoms/Button';\nimport VerticalTransition, { hoverTriggerClass } from '../../components/atoms/VerticalTransition';\nimport styles from './OrganizationRow.module.css';\n\nexport type OrganizationRowProps = {\n organization: Organization;\n action?: string;\n onClick: () => void;\n};\n\nconst Arrow = () => (\n <svg\n className={styles.arrow}\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M14.707 10L10.3535 14.3545L9.64648 13.6475L12.793 10.5H6V9.5H12.793L9.64648 6.35352L10.3535 5.64648L14.707 10Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst OrganizationRow = ({ organization, action, onClick }: OrganizationRowProps) => {\n const { organization_name, organization_logo_url } = organization;\n\n const logo = organization_logo_url ? (\n <img className={styles.logo} src={organization_logo_url} alt=\"\" />\n ) : (\n <div className={styles.logo} role=\"presentation\">\n {\n // The Array.from() accounts for two byte Unicode characters\n Array.from(organization_name)[0]\n }\n </div>\n );\n\n return (\n <button\n className={classNames(\n styles.organizationRow,\n hoverTriggerClass,\n buttonClassNames({\n variant: 'outline',\n // Not a block even though it looks like it to avoid the inheriting the centering style\n }),\n )}\n onClick={onClick}\n >\n <div className={styles.left}>\n {logo}\n <div className={styles.nameText}>{organization_name}</div>\n </div>\n\n <VerticalTransition\n trigger=\"hover\"\n rootClassName={styles.right}\n className={styles.rightContent}\n primary={action && <Badge>{action}</Badge>}\n secondary={<Arrow />}\n />\n </button>\n );\n};\n\nexport default OrganizationRow;\n","import React, { useCallback, useEffect } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { useStytch, useGlobalReducer, useConfig } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { ErrorType } from '../types/ErrorType';\nimport { useBootstrap, useMutate, onAuthenticateSuccess, StytchMutationKey } from '../utils';\n\nimport {\n B2BDiscoveryIntermediateSessionsExchangeResponse,\n B2BDiscoveryOrganizationsCreateResponse,\n DirectLoginForSingleMembershipConfig,\n DiscoveredOrganization,\n StytchAPIError,\n StytchProjectConfigurationInput,\n} from '@stytch/core/public';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport { LoadingScreen, LoggingInScreen } from '../../components/molecules/Loading';\nimport Button from '../../components/atoms/Button';\nimport OrganizationRow from '../components/OrganizationRow';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\n\nconst isJoinViaJitType = (type: DiscoveredOrganization['membership']['type']) =>\n type === 'eligible_to_join_by_email_domain' || type === 'eligible_to_join_by_oauth_tenant';\n\nconst DiscoverNoOrganizations = () => {\n const [state, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const config = useConfig();\n const { createOrganizationEnabled } = useBootstrap();\n const { t } = useLingui();\n const goBack = () => dispatch({ type: 'transition', screen: AppScreens.Main });\n\n const { trigger: stytchCreateOrganization, isMutating: isCreateLoading } = useMutate<\n B2BDiscoveryOrganizationsCreateResponse<StytchProjectConfigurationInput>,\n StytchAPIError,\n StytchMutationKey\n >(\n 'stytch.discovery.organizations.create',\n () =>\n stytchClient.discovery.organizations.create({\n session_duration_minutes: config.sessionOptions.sessionDurationMinutes,\n }),\n {\n onSuccess: (data: B2BDiscoveryOrganizationsCreateResponse<StytchProjectConfigurationInput>) => {\n onAuthenticateSuccess(data, dispatch, config);\n },\n onError: (error) => {\n dispatch({\n type: 'set_error_message_and_transition',\n errorType:\n error.error_type === 'action_not_allowed_email_domain_is_claimed'\n ? ErrorType.OrganizationDiscoveryClaimedDomain\n : ErrorType.Default,\n canGoBack: true,\n });\n },\n },\n );\n\n const shouldAutomaticallyCreateOrganization =\n createOrganizationEnabled && config.directCreateOrganizationForNoMembership;\n\n useEffect(() => {\n if (shouldAutomaticallyCreateOrganization) {\n stytchCreateOrganization();\n }\n }, [shouldAutomaticallyCreateOrganization, stytchCreateOrganization]);\n\n if (shouldAutomaticallyCreateOrganization || isCreateLoading) {\n return <LoadingScreen />;\n }\n\n const email = state.formState.discoveryState.email;\n\n if (createOrganizationEnabled && !config.disableCreateOrganization) {\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'organizationDiscovery.noOrgs.create.title', message: 'Create an organization to get started' })}\n </Typography>\n\n <Typography variant=\"body\">\n {t({\n id: 'organizationDiscovery.noOrgs.create.content',\n message: `${email} does not have an account. Think this is a mistake? Try a different email address, or contact your admin.`,\n })}\n </Typography>\n\n <ButtonColumn>\n <Button variant=\"primary\" onClick={() => stytchCreateOrganization()}>\n {t({ id: 'button.createAnOrganization', message: 'Create an organization' })}\n </Button>\n <Button variant=\"ghost\" onClick={goBack}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n }\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({\n id: 'organizationDiscovery.noOrgs.title',\n message: `${email} does not belong to any organizations.`,\n })}\n </Typography>\n <Typography variant=\"body\">\n {t({\n id: 'organizationDiscovery.noOrgs.content',\n message: 'Make sure your email address is correct. Otherwise, you might need to be invited by your admin.',\n })}\n </Typography>\n <Button variant=\"outline\" onClick={goBack}>\n {t({ id: 'button.tryDifferentEmailAddress', message: 'Try a different email address' })}\n </Button>\n </Column>\n );\n};\n\nconst shouldAllowDirectLoginToOrganization = (\n organizations: DiscoveredOrganization[],\n config?: DirectLoginForSingleMembershipConfig,\n): DiscoveredOrganization | null => {\n // If direct login is not enabled, return false\n if (!config?.status) {\n return null;\n }\n\n // Count active memberships\n const activeOrganizations = organizations.filter((org) => org.membership.type === 'active_member');\n\n // Check for pending invites or JIT provisioning, depending on config\n const hasBlockingConditions = organizations.some(\n (org) =>\n ((org.membership.type === 'pending_member' || org.membership.type === 'invited_member') &&\n !config.ignoreInvites) ||\n (isJoinViaJitType(org.membership.type) && !config.ignoreJitProvisioning),\n );\n\n // Allow direct login if there is exactly one active membership and no blocking conditions\n return activeOrganizations.length === 1 && !hasBlockingConditions ? activeOrganizations[0] : null;\n};\n\nexport const Discovery = () => {\n const [state, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const config = useConfig();\n const { t } = useLingui();\n const shouldDirectLoginConfigEnabled = !!config.directLoginForSingleMembership?.status;\n const { createOrganizationEnabled } = useBootstrap();\n\n useEffect(() => {\n if (isExchangeInProgress) {\n // If there is already an exchange in progress, don't do anything\n return;\n }\n\n const directLoginOrganization = shouldAllowDirectLoginToOrganization(\n state.formState.discoveryState.discoveredOrganizations,\n config.directLoginForSingleMembership,\n );\n\n if (shouldDirectLoginConfigEnabled && directLoginOrganization !== null) {\n handleDiscoveryOrganizationStart(directLoginOrganization);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, [\n shouldDirectLoginConfigEnabled,\n state.formState.discoveryState.discoveredOrganizations,\n config.directLoginForSingleMembership,\n ]);\n\n const handleDiscoveryOrganizationStart = (discoveredOrganization: DiscoveredOrganization) => {\n const organization = discoveredOrganization.organization;\n\n if (discoveredOrganization.primary_required) {\n const allowedAuthMethods = discoveredOrganization.primary_required.allowed_auth_methods;\n if (\n allowedAuthMethods &&\n allowedAuthMethods.length === 1 &&\n allowedAuthMethods[0] === 'sso' &&\n organization.sso_default_connection_id\n ) {\n startSso(organization.sso_default_connection_id);\n } else {\n dispatch({\n type: 'select_discovered_organization',\n discoveredOrganization,\n });\n }\n } else {\n stytchDiscoveryExchange({ organizationId: organization.organization_id });\n }\n };\n\n const startSso = useCallback(\n (connectionId: string) => {\n stytchClient.sso.start({\n connection_id: connectionId,\n login_redirect_url: config.ssoOptions?.loginRedirectURL,\n signup_redirect_url: config.ssoOptions?.signupRedirectURL,\n });\n },\n [stytchClient, config.ssoOptions],\n );\n\n const { trigger: stytchDiscoveryExchange, isMutating: isExchangeInProgress } = useMutate<\n B2BDiscoveryIntermediateSessionsExchangeResponse<StytchProjectConfigurationInput>,\n StytchAPIError,\n StytchMutationKey,\n { organizationId: string }\n >(\n `stytch.discovery.intermediateSessions.exchange`,\n (_: string, { arg: { organizationId } }: { arg: { organizationId: string } }) =>\n stytchClient.discovery.intermediateSessions.exchange({\n organization_id: organizationId,\n session_duration_minutes: config.sessionOptions.sessionDurationMinutes,\n }),\n {\n onSuccess: (data: B2BDiscoveryIntermediateSessionsExchangeResponse<StytchProjectConfigurationInput>) => {\n onAuthenticateSuccess(data, dispatch, config);\n },\n onError: (error) => {\n dispatch({\n type: 'set_error_message_and_transition',\n errorType:\n error.error_type === 'action_not_allowed_email_domain_is_claimed'\n ? ErrorType.OrganizationDiscoveryClaimedDomain\n : ErrorType.Default,\n canGoBack: true,\n });\n },\n },\n );\n\n const { trigger: stytchCreateOrganization, isMutating: isCreateLoading } = useMutate<\n B2BDiscoveryOrganizationsCreateResponse<StytchProjectConfigurationInput>,\n StytchAPIError,\n StytchMutationKey\n >(\n 'stytch.discovery.organizations.create',\n () =>\n stytchClient.discovery.organizations.create({\n session_duration_minutes: config.sessionOptions.sessionDurationMinutes,\n }),\n {\n onSuccess: (data: B2BDiscoveryOrganizationsCreateResponse<StytchProjectConfigurationInput>) => {\n onAuthenticateSuccess(data, dispatch, config);\n },\n onError: (error) => {\n dispatch({\n type: 'set_error_message_and_transition',\n errorType:\n error.error_type === 'action_not_allowed_email_domain_is_claimed'\n ? ErrorType.OrganizationDiscoveryClaimedDomain\n : ErrorType.Default,\n canGoBack: true,\n });\n },\n },\n );\n\n if (isExchangeInProgress) {\n return <LoggingInScreen />;\n }\n\n if (isCreateLoading) {\n return <LoadingScreen />;\n }\n\n if (state.formState.discoveryState.discoveredOrganizations.length === 0) {\n return <DiscoverNoOrganizations />;\n }\n\n const organizationButtons = state.formState.discoveryState.discoveredOrganizations.map((discoveredOrganization) => {\n const { organization, membership } = discoveredOrganization;\n\n let action: string | undefined;\n if (isJoinViaJitType(membership.type) || membership.type === 'pending_member')\n action = t({ id: 'organizationDiscovery.join', message: 'Join' });\n else if (membership.type === 'invited_member')\n action = t({ id: 'organizationDiscovery.acceptInvite', message: 'Accept Invite' });\n\n return (\n <OrganizationRow\n organization={organization}\n action={action}\n onClick={() => handleDiscoveryOrganizationStart(discoveredOrganization)}\n ></OrganizationRow>\n );\n });\n\n const createOrganizationButton =\n createOrganizationEnabled && !config.disableCreateOrganization ? (\n <Button variant=\"outline\" onClick={() => stytchCreateOrganization()}>\n {t({ id: 'button.createAnOrganization', message: 'Create an organization' })}\n </Button>\n ) : null;\n\n const goBackButton = (\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n );\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'organizationDiscovery.title', message: 'Select an organization to continue' })}\n </Typography>\n\n {createOrganizationButton ? (\n // Display with divider if the Create Organization Button can be shown,\n // otherwise just show everything together\n <ButtonColumn\n top={organizationButtons}\n bottom={\n <>\n {createOrganizationButton}\n {goBackButton}\n </>\n }\n />\n ) : (\n <Column gap={4}>\n <ButtonColumn>{organizationButtons}</ButtonColumn>\n {goBackButton}\n </Column>\n )}\n </Column>\n );\n};\n","import { StringLiteralFromEnum } from '@stytch/core';\nimport { B2BMFAProducts } from '@stytch/core/public';\nimport React, { useMemo } from 'react';\nimport { MessageDescriptor } from '@lingui/core';\nimport { useLingui } from '@lingui/react/macro';\nimport { msg } from '@lingui/core/macro';\nimport Column from '../../components/atoms/Column';\nimport Button from '../../components/atoms/Button';\nimport Typography from '../../components/atoms/Typography';\nimport { useConfig, useGlobalReducer } from '../GlobalContextProvider';\nimport { getEnabledMethods } from '../getEnabledMethods';\nimport { B2B_MFA_METHODS } from '../reducer/mfa';\nimport { AppScreens } from '../types/AppScreens';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\n\nconst mfaOptions: Record<\n StringLiteralFromEnum<B2BMFAProducts>,\n {\n messageDescriptor: MessageDescriptor;\n screen: AppScreens;\n }\n> = {\n [B2BMFAProducts.totp]: {\n messageDescriptor: msg({ id: 'mfa.enrollment.option.totp', message: 'Use an authenticator app' }),\n screen: AppScreens.TOTPEnrollmentQRCode,\n },\n [B2BMFAProducts.smsOtp]: {\n messageDescriptor: msg({ id: 'mfa.enrollment.option.sms', message: 'Text me a code' }),\n screen: AppScreens.SMSOTPEnrollment,\n },\n};\n\nexport const MFAEnrollmentSelectionScreen = () => {\n const { t } = useLingui();\n const { mfaProductInclude, mfaProductOrder } = useConfig();\n\n const [state, dispatch] = useGlobalReducer();\n\n // This screen should only be shown if primary info is available\n const { organizationMfaOptionsSupported } = state.mfa.primaryInfo!;\n\n const handleNavigate = (screen: AppScreens) => {\n dispatch({\n type: 'transition',\n screen,\n history: 'push',\n });\n };\n\n const displayOptions = useMemo(() => {\n const optionsToDisplay = getEnabledMethods({\n allMethods: B2B_MFA_METHODS,\n orgSupportedMethods: organizationMfaOptionsSupported,\n uiIncludedMethods: mfaProductInclude,\n });\n\n const result: StringLiteralFromEnum<B2BMFAProducts>[] = [];\n for (const option of mfaProductOrder ?? B2B_MFA_METHODS) {\n if (optionsToDisplay.has(option)) {\n result.push(option);\n optionsToDisplay.delete(option);\n }\n }\n\n result.push(...optionsToDisplay);\n return result;\n }, [mfaProductInclude, mfaProductOrder, organizationMfaOptionsSupported]);\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'mfa.enrollment.title', message: 'Set up Multi-Factor Authentication' })}\n </Typography>\n\n <Typography variant=\"body\">\n {t({\n id: 'mfa.enrollment.content',\n message: 'Your organization requires an additional form of verification to make your account more secure.',\n })}\n </Typography>\n\n <ButtonColumn>\n {displayOptions.map((option) => {\n const { messageDescriptor, screen } = mfaOptions[option];\n return (\n <Button key={option} variant=\"outline\" onClick={() => handleNavigate(screen)}>\n {t(messageDescriptor)}\n </Button>\n );\n })}\n </ButtonColumn>\n </Column>\n );\n};\n","import { B2BSMSSendResponse, StytchAPIError, StytchSDKError } from '@stytch/core/public';\nimport React, { FormEvent } from 'react';\nimport { COUNTRIES_LIST, CountryCode } from '@stytch/core';\nimport { readB2BInternals } from '../../../utils/internal';\nimport Column from '../../components/atoms/Column';\nimport PhoneInput, { getPhoneNumberProps } from '../../components/molecules/PhoneInput';\nimport Button from '../../components/atoms/Button';\nimport Typography from '../../components/atoms/Typography';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { StytchMutationKey, useMutate } from '../utils';\nimport { formatNumberToIncludeCountryCode } from '../../../utils/handleParsePhoneNumber';\nimport { useLingui } from '@lingui/react/macro';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { canGoBack } from '../reducer/navigation';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\n\n// eslint-disable-next-line lingui/no-unlocalized-strings\nconst DEFAULT_COUNTRY_CODE = 'US' satisfies CountryCode;\n\n/**\n * Thrown when the user provides a phone number that cannot be parsed.\n */\nclass InvalidPhoneNumberError extends StytchSDKError {\n constructor() {\n // eslint-disable-next-line lingui/no-unlocalized-strings\n super('InvalidPhoneNumberError', 'Invalid phone number');\n }\n}\n\nexport const SMSOTPEnrollScreen = () => {\n const stytchClient = useStytch();\n const [state, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n const { smsOtpOptions } = useConfig();\n const {\n mfa: {\n smsOtp: { isSending, sendError, enrolledNumber },\n },\n } = state;\n\n // This screen should only be shown if primary info is available\n const { memberId, organizationId } = state.mfa.primaryInfo!;\n\n const [countryCode, setCountryCode] = React.useState<CountryCode>(\n enrolledNumber?.countryCode ?? DEFAULT_COUNTRY_CODE,\n );\n const [phoneNumber, setPhoneNumber] = React.useState(enrolledNumber?.phoneNumber ?? '');\n\n const errorMessage = React.useMemo(() => {\n if (!sendError) return undefined;\n\n if (sendError instanceof InvalidPhoneNumberError) {\n return t({\n id: 'error.invalidPhoneNumber',\n message: 'Phone number format is invalid. Ensure the phone number is in the E.164 format.',\n });\n }\n\n return getTranslatedError(sendError as StytchAPIError, t);\n }, [sendError, t]);\n\n const { parsePhoneNumber, getExampleNumber } = getPhoneNumberProps(readB2BInternals(stytchClient).clientsideServices);\n\n const { trigger: sendSms } = useMutate<\n B2BSMSSendResponse,\n unknown,\n StytchMutationKey,\n { parsedNumber: string; locale?: string }\n >(\n 'stytch.otps.sms.send',\n async (_: string, { arg: { parsedNumber, locale } }: { arg: { parsedNumber: string; locale?: string } }) => {\n return stytchClient.otps.sms.send({\n mfa_phone_number: parsedNumber,\n member_id: memberId,\n organization_id: organizationId,\n locale: locale,\n });\n },\n {\n onSuccess: (response) => {\n dispatch({\n type: 'sms_otp/send_success',\n response,\n countryCode,\n phoneNumber,\n formattedPhoneNumber: `+${COUNTRIES_LIST[countryCode]} ${phoneNumber}`,\n });\n },\n onError: (error) => {\n dispatch({\n type: 'sms_otp/send_error',\n error,\n });\n },\n },\n );\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault();\n\n dispatch({ type: 'sms_otp/send' });\n try {\n // We parse the phone number here (rather than inside `sendSms`) because we\n // don't want validation errors to be surfaced through the global error\n // callback\n\n const parsedNumber = await formatNumberToIncludeCountryCode({\n parsePhoneNumber,\n phoneNumber,\n country: countryCode,\n });\n\n if (!parsedNumber.isValid) {\n throw new InvalidPhoneNumberError();\n }\n\n await sendSms({ parsedNumber: parsedNumber.number, locale: smsOtpOptions?.locale });\n } catch (error) {\n dispatch({\n type: 'sms_otp/send_error',\n error,\n });\n }\n };\n\n return (\n <Column as=\"form\" gap={6} onSubmit={handleSubmit}>\n <Typography variant=\"header\">\n {t({\n id: 'mfa.smsEnrollment.title',\n message: 'Enter your phone number to set up Multi-Factor Authentication',\n })}\n </Typography>\n\n <Typography variant=\"body\">\n {t({\n id: 'mfa.smsEnrollment.content',\n message: 'Your organization requires an additional form of verification to make your account more secure.',\n })}\n </Typography>\n\n <PhoneInput\n country={countryCode}\n setCountry={setCountryCode}\n phone={phoneNumber}\n setPhone={setPhoneNumber}\n parsePhoneNumber={parsePhoneNumber}\n getExampleNumber={getExampleNumber}\n error={errorMessage}\n />\n\n <ButtonColumn>\n <Button variant=\"primary\" loading={isSending} type=\"submit\" disabled={!phoneNumber || isSending}>\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n {canGoBack(state) && (\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'navigate_back' })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n )}\n </ButtonColumn>\n </Column>\n );\n};\n","import React, { useEffect, useMemo } from 'react';\nimport {\n B2BMFAProducts,\n B2BSMSAuthenticateResponse,\n B2BSMSSendResponse,\n StytchAPIError,\n StytchProjectConfigurationInput,\n} from '@stytch/core/public';\nimport Button from '../../components/atoms/Button';\nimport { readB2BInternals } from '../../../utils/internal';\nimport Column from '../../components/atoms/Column';\nimport { LoadingScreen } from '../../components/molecules/Loading';\nimport { SentOTPEntry } from '../../components/organisms/SentOTPEntry';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { StytchMutationKey, useMutate } from '../utils';\nimport { formatNumber } from '../../../utils/handleParsePhoneNumber';\nimport { useLingui } from '@lingui/react/macro';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { AppScreens } from '../types/AppScreens';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport { errorToast } from '../../components/atoms/Toast';\nimport { useCountdown } from '../../components/atoms/Countdown';\nimport { ResendOTPButton } from '../../components/organisms/ResendOTPButton';\n\nexport const SMSOTPEntryScreen = () => {\n const stytchClient = useStytch();\n const {\n sessionOptions: { sessionDurationMinutes },\n smsOtpOptions,\n } = useConfig();\n const { t } = useLingui();\n\n const [state, dispatch] = useGlobalReducer();\n const {\n mfa: { isEnrolling, smsOtp, primaryInfo },\n } = state;\n\n const { codeExpiration, formattedDestination } = smsOtp;\n\n // This screen should only be shown if primary info is available\n const { enrolledMfaMethods, memberId, memberPhoneNumber, organizationId, organizationMfaOptionsSupported } =\n primaryInfo!;\n\n const resendCountdown = useCountdown();\n\n const {\n trigger: sendSms,\n isMutating: isSending,\n error: sendError,\n } = useMutate<\n B2BSMSSendResponse,\n unknown,\n StytchMutationKey,\n { memberId: string; organizationId: string; locale?: string }\n >(\n 'stytch.otps.sms.send',\n (\n _: string,\n {\n arg: { memberId, organizationId, locale },\n }: { arg: { memberId: string; organizationId: string; locale?: string } },\n ) => {\n dispatch({ type: 'sms_otp/send' });\n return stytchClient.otps.sms.send({ member_id: memberId, organization_id: organizationId, locale });\n },\n {\n onSuccess: (response) => {\n dispatch({ type: 'sms_otp/send_success', response });\n },\n onError: (error) => {\n const message = getTranslatedError(error as StytchAPIError, t);\n if (message) {\n errorToast({ message });\n }\n dispatch({ type: 'sms_otp/send_error', error: message });\n },\n // Throw on error to ensure promise is rejected\n throwOnError: true,\n },\n );\n\n const {\n trigger: authenticate,\n isMutating: isAuthenticating,\n error: authenticateError,\n } = useMutate<\n B2BSMSAuthenticateResponse<StytchProjectConfigurationInput>,\n unknown,\n StytchMutationKey,\n { otp: string; memberId: string; organizationId: string; sessionDurationMinutes: number }\n >(\n 'stytch.otps.sms.authenticate',\n (\n _: string,\n {\n arg: { otp, memberId, organizationId, sessionDurationMinutes },\n }: { arg: { otp: string; memberId: string; organizationId: string; sessionDurationMinutes: number } },\n ) =>\n stytchClient.otps.sms.authenticate({\n code: otp,\n member_id: memberId,\n organization_id: organizationId,\n session_duration_minutes: sessionDurationMinutes,\n }),\n {\n onSuccess: () => {\n dispatch({ type: 'sms_otp/authenticate_success' });\n },\n onError: () => {\n resendCountdown.clear();\n },\n },\n );\n\n const shouldCreate = codeExpiration === null && !isSending && !sendError;\n useEffect(() => {\n if (shouldCreate) {\n sendSms({ memberId, organizationId, locale: smsOtpOptions?.locale }).catch(() => {\n // error in the UI is handled through the error object so we just swallow it here when auto-sending\n });\n }\n }, [memberId, organizationId, sendSms, shouldCreate, smsOtpOptions?.locale]);\n\n useEffect(() => {\n if (!formattedDestination && memberPhoneNumber) {\n const handleFormatNumber = async () => {\n const parsePhoneNumber = (phoneNumber: string) =>\n readB2BInternals(stytchClient).clientsideServices.parsedPhoneNumber({\n phoneNumber,\n });\n\n const national = await formatNumber({\n parsePhoneNumber,\n phoneNumber: memberPhoneNumber,\n });\n\n dispatch({\n type: 'sms_otp/format_destination',\n formattedPhoneNumber: national,\n });\n };\n\n handleFormatNumber();\n }\n }, [dispatch, formattedDestination, stytchClient, memberPhoneNumber]);\n\n const isTotpAvailable = useMemo(\n () =>\n !isEnrolling &&\n enrolledMfaMethods.includes(B2BMFAProducts.totp) &&\n (organizationMfaOptionsSupported.length === 0 || organizationMfaOptionsSupported.includes(B2BMFAProducts.totp)),\n [enrolledMfaMethods, isEnrolling, organizationMfaOptionsSupported],\n );\n const errorMessage = authenticateError\n ? t({ id: 'error.passcodeInvalid', message: 'Invalid passcode, please try again.' })\n : undefined;\n\n // The user can go back to change their phone number if either:\n // - we are in an enrollment flow\n // - they are not enrolled in any MFA methods at all\n // - they are not enrolled in any of the limited MFA methods supported by the organization\n const canGoBack = useMemo(\n () =>\n isEnrolling ||\n enrolledMfaMethods.length === 0 ||\n (organizationMfaOptionsSupported.length > 0 &&\n !enrolledMfaMethods.some((enrolledMethod) => organizationMfaOptionsSupported.includes(enrolledMethod))),\n [enrolledMfaMethods, isEnrolling, organizationMfaOptionsSupported],\n );\n\n const handleSubmit = (otp: string) => {\n authenticate({ otp, memberId, organizationId, sessionDurationMinutes });\n };\n\n const handleSwitchToTotp = () => {\n dispatch({ type: 'transition', history: 'push', screen: AppScreens.TOTPEntry });\n };\n\n const handleResendOTP = async () => {\n await sendSms({ memberId, organizationId, locale: smsOtpOptions?.locale });\n };\n\n const handleBack = () => {\n dispatch({ type: 'navigate_back' });\n };\n\n const resendButton = (\n <ResendOTPButton countdown={resendCountdown} isSubmitting={isAuthenticating} resendOTP={handleResendOTP} />\n );\n const switchToTotpButton = isTotpAvailable && (\n <Button variant=\"ghost\" onClick={handleSwitchToTotp}>\n {t({ id: 'mfa.methods.authenticatorApp', message: 'Use an authenticator app' })}\n </Button>\n );\n const backButton = canGoBack && (\n <Button variant=\"ghost\" onClick={handleBack}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n );\n\n return (\n <Column gap={6}>\n {codeExpiration !== null ? (\n <SentOTPEntry\n isSubmitting={isAuthenticating}\n onSubmit={handleSubmit}\n errorMessage={errorMessage}\n expiration={codeExpiration.getTime()}\n formattedDestination={formattedDestination ?? memberPhoneNumber ?? ''}\n />\n ) : (\n <LoadingScreen />\n )}\n\n {switchToTotpButton && backButton ? (\n <ButtonColumn\n top={resendButton}\n bottom={\n <>\n {switchToTotpButton}\n {backButton}\n </>\n }\n />\n ) : (\n <ButtonColumn>\n {resendButton}\n {switchToTotpButton}\n {backButton}\n </ButtonColumn>\n )}\n </Column>\n );\n};\n","import React, { FormEvent, useState } from 'react';\nimport { RecoveryCodeRecoverResponse, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { StytchMutationKey, useMutate } from '../utils';\nimport Input from '../../components/molecules/Input';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport styles from './RecoveryCodeEntryScreen.module.css';\n\nexport const RecoveryCodeEntryScreen = () => {\n const stytchClient = useStytch();\n const {\n sessionOptions: { sessionDurationMinutes },\n } = useConfig();\n const { t } = useLingui();\n\n const [state, dispatch] = useGlobalReducer();\n\n // This screen should only be shown if primary info is available\n const { memberId, organizationId } = state.mfa.primaryInfo!;\n\n const {\n trigger: authenticate,\n isMutating: isSubmitting,\n error,\n } = useMutate<\n RecoveryCodeRecoverResponse<StytchProjectConfigurationInput>,\n unknown,\n StytchMutationKey,\n { recoveryCode: string; memberId: string; organizationId: string; sessionDurationMinutes: number }\n >(\n 'stytch.recoveryCodes.recover',\n (\n _: string,\n {\n arg: { recoveryCode, memberId, organizationId, sessionDurationMinutes },\n }: { arg: { recoveryCode: string; memberId: string; organizationId: string; sessionDurationMinutes: number } },\n ) =>\n stytchClient.recoveryCodes.recover({\n recovery_code: recoveryCode,\n member_id: memberId,\n organization_id: organizationId,\n session_duration_minutes: sessionDurationMinutes,\n }),\n {\n throwOnError: false,\n onSuccess: () => {\n dispatch({ type: 'recovery_code/authenticate_success' });\n },\n },\n );\n\n const [recoveryCode, setRecoveryCode] = useState('');\n const errorMessage = error\n ? t({ id: 'recoveryCodes.entry.error.invalidCode', message: 'Invalid backup code, please try again.' })\n : undefined;\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault();\n authenticate({ recoveryCode, memberId, organizationId, sessionDurationMinutes });\n };\n\n return (\n <Column as=\"form\" gap={6} onSubmit={handleSubmit}>\n <Typography variant=\"header\">{t({ id: 'recoveryCodes.entry.title', message: 'Enter backup code' })}</Typography>\n <Typography variant=\"body\">\n {t({\n id: 'recoveryCodes.entry.content',\n message: 'Enter one of the backup codes you saved when setting up your authenticator app.',\n })}\n </Typography>\n\n <Input\n id=\"recovery-code\"\n className={styles.input}\n value={recoveryCode}\n onChange={(e) => {\n setRecoveryCode(e.target.value);\n }}\n placeholder={t({ id: 'formField.backupCode.placeholder', message: 'Enter backup code' })}\n label={t({ id: 'formField.backupCode.ariaLabel', message: 'Backup code' })}\n hideLabel\n required\n autoComplete=\"off\"\n spellCheck={false}\n error={errorMessage}\n />\n\n <ButtonColumn>\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\" disabled={!recoveryCode || isSubmitting}>\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'navigate_back' })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import React, { HTMLAttributes } from 'react';\nimport styles from './CodeContainer.module.css';\nimport classNames from 'classnames';\n\nexport type CodeContainerProps = HTMLAttributes<HTMLDivElement>;\n\nconst CodeContainer: React.FC<CodeContainerProps> = ({ children, className, ...props }) => (\n <div className={classNames(className, styles.container)} {...props}>\n {children}\n </div>\n);\n\nexport default CodeContainer;\n","import React, { CSSProperties, useMemo } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Button, { ButtonAnchor } from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport TextColumn from '../../components/molecules/TextColumn';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport CodeContainer from '../../components/atoms/CodeContainer';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport VerticalTransition, { useTimedBoolean } from '../../components/atoms/VerticalTransition';\nimport { errorToast } from '../../components/atoms/Toast';\nimport styles from './RecoveryCodeSaveScreen.module.css';\n\nexport const RecoveryCodeSaveScreen = () => {\n const [state, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n\n // This screen should only be shown if TOTP enrollment is available\n const { recoveryCodes } = state.mfa.totp.enrollment!;\n\n const handleContinue = () => {\n dispatch({ type: 'recovery_code/save_acknowledge' });\n };\n\n const fileContent = useMemo(() => {\n const newline = navigator.platform === 'Win32' ? '\\r\\n' : '\\n';\n const blob = new Blob([recoveryCodes.join(newline)], { type: 'text/plain' });\n return URL.createObjectURL(blob);\n }, [recoveryCodes]);\n\n const organizationName = state.flowState.organization?.organization_name;\n const filename = organizationName\n ? t({ id: 'recoveryCodes.filename.withOrganizationName', message: `${organizationName}-backup-codes` })\n : t({\n id: 'recoveryCodes.filename.noOrganizationName',\n message: 'backup-codes',\n });\n\n const [copied, setCopied] = useTimedBoolean(3);\n const handleCodesCopy = async () => {\n try {\n await navigator.clipboard.writeText(recoveryCodes.join('\\n'));\n setCopied(true);\n } catch {\n errorToast({\n message: t({ id: 'recoveryCodes.save.toast.copyFailed', message: \"Couldn't copy codes to clipboard\" }),\n });\n }\n };\n\n const maxCodeLength = Math.max(...recoveryCodes.map((code) => code.length));\n\n return (\n <Column gap={6}>\n <TextColumn\n header={t({ id: 'recoveryCodes.save.title', message: 'Save your backup codes!' })}\n body={t({\n id: 'recoveryCodes.save.content',\n message: 'This is the only time you will be able to access and save your backup codes.',\n })}\n />\n\n <CodeContainer>\n <Typography font=\"mono\">\n <ul className={styles.codes} style={{ '--st-max-code-length': maxCodeLength + 'ch' } as CSSProperties}>\n {recoveryCodes.map((code, i) => (\n <li key={i}>{code}</li>\n ))}\n </ul>\n </Typography>\n </CodeContainer>\n\n <ButtonColumn>\n {/* eslint-disable-next-line lingui/no-unlocalized-strings */}\n <ButtonAnchor variant=\"primary\" href={fileContent} download={filename + '.txt'}>\n <VerticalTransition\n primary={t({ id: 'recoveryCodes.save.button.download', message: 'Download .txt file' })}\n secondary={t({ id: 'recoveryCodes.save.button.copied', message: 'Copied!' })}\n triggered={copied}\n />\n </ButtonAnchor>\n <Button variant=\"outline\" onClick={handleCodesCopy}>\n {t({ id: 'recoveryCodes.save.button.copyAll', message: 'Copy all to clipboard' })}\n </Button>\n <Button variant=\"ghost\" onClick={handleContinue}>\n {t({ id: 'recoveryCodes.save.button.done', message: 'Done' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import { B2BTOTPCreateResponse, StytchAPIError } from '@stytch/core/public';\nimport React, { useEffect } from 'react';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport { LoadingScreen } from '../../components/molecules/Loading';\nimport Typography from '../../components/atoms/Typography';\nimport { useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { StytchMutationKey, useMutate } from '../utils';\nimport { useLingui } from '@lingui/react/macro';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { AppScreens } from '../types/AppScreens';\nimport { errorToast } from '../../components/atoms/Toast';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\n\nimport styles from './TOTPEnrollQRScreen.module.css';\n\nexport const TOTPEnrollQRScreen = () => {\n const stytchClient = useStytch();\n const [state, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n const {\n mfa: {\n totp: { createError, enrollment, isCreating },\n },\n } = state;\n\n // This screen should only be shown if primary info and TOTP enrollment are\n // available\n const { memberId, organizationId } = state.mfa.primaryInfo!;\n\n const { trigger: createTotp } = useMutate<\n B2BTOTPCreateResponse,\n unknown,\n StytchMutationKey,\n { memberId: string; organizationId: string }\n >(\n 'stytch.totp.create',\n (_: string, { arg: { memberId, organizationId } }: { arg: { memberId: string; organizationId: string } }) => {\n dispatch({ type: 'totp/create' });\n return stytchClient.totp.create({ member_id: memberId, organization_id: organizationId });\n },\n {\n onSuccess: (response) => {\n dispatch({ type: 'totp/create_success', response, memberId, organizationId });\n },\n onError: (error) => {\n const message = getTranslatedError(error as StytchAPIError, t);\n if (message) {\n errorToast({ message });\n }\n dispatch({ type: 'totp/create_error', error });\n },\n },\n );\n\n const shouldCreate = !enrollment && !isCreating && !createError;\n useEffect(() => {\n if (shouldCreate) {\n createTotp({ memberId, organizationId });\n }\n }, [createTotp, memberId, organizationId, shouldCreate]);\n\n const handleShowManualCode = () => {\n dispatch({ type: 'totp/show_code', method: 'manual' });\n };\n\n const handleContinue = () => {\n dispatch({ type: 'transition', history: 'push', screen: AppScreens.TOTPEntry });\n };\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'totp.setupQr.title', message: 'Scan the QR code to link your authenticator app' })}\n </Typography>\n\n <Typography variant=\"body\">\n {t({\n id: 'totp.setupQr.content',\n message:\n 'Your organization requires an additional form of verification to make your account more secure. If you don’t have an authenticator app, you’ll need to install one first.',\n })}\n </Typography>\n\n {enrollment ? (\n <>\n <img\n alt={t({ id: 'mfaTotpEnrollment.qrAltText', message: 'QR code for TOTP enrollment' })}\n src={enrollment.qrCode}\n className={styles.qr}\n />\n\n <ButtonColumn>\n <Button variant=\"primary\" onClick={handleContinue}>\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n <Button variant=\"outline\" onClick={handleShowManualCode}>\n {t({ id: 'button.totpQrManual', message: 'Having trouble scanning?' })}\n </Button>\n </ButtonColumn>\n </>\n ) : (\n <LoadingScreen />\n )}\n </Column>\n );\n};\n","import React, { CSSProperties, useLayoutEffect, useRef, useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport TextColumn from '../../components/molecules/TextColumn';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport CodeContainer from '../../components/atoms/CodeContainer';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport VerticalTransition, { useTimedBoolean } from '../../components/atoms/VerticalTransition';\nimport styles from './TOTPEnrollManualScreen.module.css';\nimport { errorToast } from '../../components/atoms/Toast';\n\nconst CHUNK_SIZE = 4;\n\nexport const TOTPEnrollManualScreen = () => {\n const [state, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n\n const [copied, setCopied] = useTimedBoolean(3);\n\n // This screen should only be shown if TOTP enrollment is available\n const { secret } = state.mfa.totp.enrollment!;\n\n const displaySecret = secret.toLowerCase();\n const secretChunked = displaySecret.split(new RegExp(`(.{${CHUNK_SIZE}})`, 'g')).filter(Boolean);\n\n const { codeRef, columnCount } = useColumnCount(secretChunked.length);\n\n const handleBack = () => dispatch({ type: 'navigate_back' });\n\n const handleContinue = () => {\n dispatch({ type: 'transition', history: 'push', screen: AppScreens.TOTPEntry });\n };\n\n const handleCodeCopy = async () => {\n try {\n await navigator.clipboard.writeText(displaySecret);\n setCopied(true);\n } catch {\n errorToast({\n message: t({ id: 'mfa.totpEnrollment.toast.copyFailed', message: \"Couldn't copy code to clipboard\" }),\n });\n\n // Select all text instead as fallback\n const selection = window.getSelection();\n if (codeRef.current && selection) {\n selection.empty();\n const range = document.createRange();\n range.selectNodeContents(codeRef.current);\n selection.addRange(range);\n }\n }\n };\n\n return (\n <Column gap={6}>\n <TextColumn\n header={t({ id: 'mfa.totpEnrollment.title', message: 'Having trouble scanning the QR code?' })}\n body={t({\n id: 'mfa.totpEnrollment.content',\n message: 'Click to copy the code below. Enter into your authenticator app to link your account.',\n })}\n />\n\n {/* No additional keyboard support since there's a copy code button below */}\n <CodeContainer className={styles.codeContainer} onClick={handleCodeCopy}>\n {/* This Typography element is on the outside because we need the 1ch gap to also be in monospace */}\n <Typography\n ref={codeRef}\n className={styles.code}\n style={\n {\n '--st-column-count': columnCount,\n '--st-chunk-size': CHUNK_SIZE + 'ch',\n } as CSSProperties\n }\n font=\"mono\"\n >\n {secretChunked.map((part, i) => (\n <span key={i}>{part}</span>\n ))}\n </Typography>\n </CodeContainer>\n\n <ButtonColumn>\n <Button variant=\"primary\" onClick={handleCodeCopy}>\n <VerticalTransition\n primary={t({ id: 'mfa.totpEnrollment.copyCode.label', message: 'Copy to clipboard' })}\n secondary={t({ id: 'mfa.totpEnrollment.copyCode.codeCopied', message: 'Copied!' })}\n triggered={copied}\n />\n </Button>\n <Button variant=\"outline\" onClick={handleContinue}>\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n <Button variant=\"ghost\" onClick={handleBack}>\n {t({ id: 'button.totpQrRetry', message: 'Try to scan the QR code again' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n\n// Balance out the rows - this is fairly complex, but there's not any way to really do this in CSS only\n// so instead we read the width of the container and the chunks below it, then use that to calculate\n// first the number of rows, then how many chunks can evenly fit per row\nfunction useColumnCount(chunksCount: number) {\n const codeRef = useRef<HTMLDivElement>(null);\n const [columnCount, setColumnCount] = useState<number>();\n\n useLayoutEffect(() => {\n const updateRowCount = () => {\n if (!codeRef.current) return;\n\n // Get the width of the container and inner spans\n const containerWidth = codeRef.current.clientWidth;\n const spanWidth = Math.max(\n ...Array.from(codeRef.current.querySelectorAll('span')).map((elem) => elem.clientWidth),\n );\n\n // Find the number of columns to display. First compute the raw number\n // Note we don't check how many rows are currently rendered because this number is already affected by\n // the current row count.\n const fittedColumns = Math.floor(containerWidth / spanWidth);\n // Then account for gaps (1ch each, so 1/CHUNK_SIZE per gap)\n const fittedColumnsWithGaps = fittedColumns - Math.floor(fittedColumns / CHUNK_SIZE);\n // Number of rows is count / columns\n const rows = Math.ceil(chunksCount / fittedColumnsWithGaps);\n // And finally the closest even column count is count / rows\n const evenColumns = Math.ceil(chunksCount / rows);\n\n setColumnCount(evenColumns);\n };\n\n updateRowCount();\n\n if (!window.ResizeObserver || !codeRef.current) return;\n const observer = new ResizeObserver(updateRowCount);\n observer.observe(codeRef.current);\n return () => observer.disconnect();\n }, [chunksCount]);\n\n return {\n codeRef,\n columnCount,\n };\n}\n","import React, { useMemo } from 'react';\nimport { B2BMFAProducts, B2BTOTPAuthenticateResponse, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { StytchMutationKey, useMutate } from '../utils';\nimport { AppScreens } from '../types/AppScreens';\nimport OTPEntry from '../../components/molecules/OTPEntry';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\n\nexport const TOTPEntryScreen = () => {\n const stytchClient = useStytch();\n const {\n sessionOptions: { sessionDurationMinutes },\n } = useConfig();\n const { t } = useLingui();\n\n const [state, dispatch] = useGlobalReducer();\n const {\n mfa: { isEnrolling },\n } = state;\n\n // This screen should only be shown if primary info is available\n const { enrolledMfaMethods, memberId, organizationId, organizationMfaOptionsSupported } = state.mfa.primaryInfo!;\n\n const {\n trigger: authenticate,\n isMutating: isSubmitting,\n error: authenticateError,\n } = useMutate<\n B2BTOTPAuthenticateResponse<StytchProjectConfigurationInput>,\n unknown,\n StytchMutationKey,\n { memberId: string; organizationId: string; otp: string; sessionDurationMinutes: number }\n >(\n 'stytch.totp.authenticate',\n (\n _: string,\n {\n arg: { memberId, organizationId, otp, sessionDurationMinutes },\n }: { arg: { memberId: string; organizationId: string; otp: string; sessionDurationMinutes: number } },\n ) =>\n stytchClient.totp.authenticate({\n code: otp,\n member_id: memberId,\n organization_id: organizationId,\n session_duration_minutes: sessionDurationMinutes,\n }),\n {\n onSuccess: () => {\n dispatch({ type: 'totp/authenticate_success' });\n },\n },\n );\n\n const isSmsOtpAvailable = useMemo(\n () =>\n !isEnrolling &&\n enrolledMfaMethods.includes(B2BMFAProducts.smsOtp) &&\n (organizationMfaOptionsSupported.length === 0 || organizationMfaOptionsSupported.includes(B2BMFAProducts.smsOtp)),\n [enrolledMfaMethods, isEnrolling, organizationMfaOptionsSupported],\n );\n\n const errorMessage = authenticateError\n ? t({ id: 'error.passcodeInvalid', message: 'Invalid passcode, please try again.' })\n : undefined;\n const canGoBack = isEnrolling;\n\n const handleSubmit = (otp: string) => authenticate({ memberId, organizationId, otp, sessionDurationMinutes });\n\n const handleSwitchToRecoveryCode = () => {\n dispatch({ type: 'transition', history: 'push', screen: AppScreens.RecoveryCodeEntry });\n };\n\n const handleSwitchToSms = () => {\n dispatch({ type: 'transition', history: 'push', screen: AppScreens.SMSOTPEntry });\n };\n\n return (\n <Column gap={6}>\n <OTPEntry\n header={t({ id: 'totp.title', message: 'Enter verification code' })}\n instruction={t({ id: 'totp.content', message: 'Enter the 6-digit code from your authenticator app.' })}\n helperContent={\n isEnrolling\n ? t({\n id: 'mfa.totpEntry.getNewCode',\n message: 'If the verification code doesn’t work, go back to your authenticator app to get a new code.',\n })\n : null\n }\n isSubmitting={isSubmitting}\n onSubmit={handleSubmit}\n errorMessage={errorMessage}\n />\n\n <ButtonColumn\n top={null}\n bottom={\n <>\n {isSmsOtpAvailable && (\n <Button variant=\"outline\" onClick={handleSwitchToSms}>\n {t({ id: 'mfa.totpEntry.switchToSms', message: 'Text me a code instead' })}\n </Button>\n )}\n\n {!isEnrolling && (\n <Button variant=\"outline\" onClick={handleSwitchToRecoveryCode}>\n {t({ id: 'mfa.totpEntry.useBackupCode', message: 'Use a backup code' })}\n </Button>\n )}\n\n {canGoBack && (\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'navigate_back' })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n )}\n </>\n }\n />\n </Column>\n );\n};\n","import { useMemo } from 'react';\nimport { useConfig } from '../GlobalContextProvider';\nimport { B2BOAuthProviders } from '@stytch/core/public';\nimport { getParamsFromB2BOAuthProviderConfig } from '../../../utils/oauthProviderType';\nimport { hasProduct } from '../utils';\n\nexport const useIsOnlyFloatingOneTap = () => {\n const config = useConfig();\n const isOnlyFloatingOneTap = useMemo(() => {\n const oauthProvider = config.oauthOptions\n ? getParamsFromB2BOAuthProviderConfig(config.oauthOptions?.providers[0])\n : undefined;\n const isGoogleOneTap = oauthProvider?.type === B2BOAuthProviders.Google && oauthProvider?.one_tap === true;\n return (\n config.products.length === 1 &&\n hasProduct(config.products, 'oauth') &&\n config.oauthOptions?.providers.length === 1 &&\n isGoogleOneTap\n );\n }, [config]);\n\n return isOnlyFloatingOneTap;\n};\n","import React from 'react';\nimport { B2BOAuthProviders } from '@stytch/core/public';\nimport { msg } from '@lingui/core/macro';\nimport { useLingui } from '@lingui/react/macro';\nimport { MessageDescriptor } from '@lingui/core';\nimport { useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport Button from '../../components/atoms/Button';\nimport { usePresentation } from '../../components/PresentationConfig';\nimport { IconRegistry } from '../../components/IconRegistry';\nimport type { oauthIcons } from './Icons';\n\ntype OauthIconName = keyof typeof oauthIcons;\n\ninterface OAuthProviderInfo {\n messageDescriptor: MessageDescriptor;\n}\n\nconst providerInfo: Record<B2BOAuthProviders, OAuthProviderInfo> = {\n [B2BOAuthProviders.Google]: {\n messageDescriptor: msg({ id: 'oauth.continueWithGoogle', message: 'Continue with Google' }),\n },\n [B2BOAuthProviders.Microsoft]: {\n messageDescriptor: msg({ id: 'oauth.continueWithMicrosoft', message: 'Continue with Microsoft' }),\n },\n [B2BOAuthProviders.HubSpot]: {\n messageDescriptor: msg({ id: 'oauth.continueWithHubSpot', message: 'Continue with HubSpot' }),\n },\n [B2BOAuthProviders.Slack]: {\n messageDescriptor: msg({ id: 'oauth.continueWithSlack', message: 'Continue with Slack' }),\n },\n [B2BOAuthProviders.GitHub]: {\n messageDescriptor: msg({ id: 'oauth.continueWithGitHub', message: 'Continue with GitHub' }),\n },\n};\n\nexport type OauthB2BButtonProps = {\n providerType: B2BOAuthProviders;\n loginRedirectUrl?: string;\n signupRedirectUrl?: string;\n discoveryRedirectUrl?: string;\n customScopes?: string[];\n providerParams?: Record<string, string>;\n onSuccess?: () => void;\n};\n\nexport const OAuthB2BButton = ({\n providerType,\n loginRedirectUrl,\n signupRedirectUrl,\n discoveryRedirectUrl,\n customScopes,\n providerParams,\n onSuccess,\n}: OauthB2BButtonProps) => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const [state] = useGlobalReducer();\n const iconRegistry: IconRegistry<OauthIconName> = usePresentation().iconRegistry;\n\n const provider = providerInfo[providerType];\n let label: string = providerType;\n let icon = null;\n if (provider) {\n const { messageDescriptor } = provider;\n const Icon = iconRegistry[providerType];\n label = t(messageDescriptor);\n icon = <Icon />;\n }\n\n const onButtonClick = async () => {\n const providerClient = stytchClient.oauth[providerType];\n\n if (state.flowState.organization) {\n await providerClient.start({\n login_redirect_url: loginRedirectUrl,\n signup_redirect_url: signupRedirectUrl,\n custom_scopes: customScopes,\n organization_id: state.flowState.organization.organization_id,\n provider_params: providerParams,\n });\n } else {\n await providerClient.discovery.start({\n discovery_redirect_url: discoveryRedirectUrl,\n custom_scopes: customScopes,\n provider_params: providerParams,\n });\n }\n\n onSuccess?.();\n };\n\n return (\n <Button onClick={onButtonClick} variant=\"outline\" icon={icon}>\n {label}\n </Button>\n );\n};\n","import { useMemo } from 'react';\nimport { safeLocalStorage } from '../../../utils/storage';\nimport { readB2BInternals } from '../../../utils/internal';\nimport { useStytch } from '../GlobalContextProvider';\nimport { LastUsedMethod } from '../types/authMethodKeys';\n\n/**\n * Hook for managing the last used authentication method in B2B flows.\n * The returned value is not reactive and will not update when setLastUsedMethod is called.\n */\nexport function useLastUsedAuthMethod() {\n const stytch = useStytch();\n const { publicToken } = readB2BInternals(stytch);\n\n // Deliberately not using useLocalStorage because we _don't_ want the buttons\n // to reorder while the user is still seeing this page\n const lastUsedMethod = useMemo(() => safeLocalStorage.getItem(publicToken, 'b2b_last_used_method'), [publicToken]);\n const setLastUsedMethod = (method: LastUsedMethod) => {\n safeLocalStorage.setItem(publicToken, 'b2b_last_used_method', method);\n };\n\n return [lastUsedMethod, setLastUsedMethod] as const;\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { DEV, logger } from '@stytch/core';\nimport { B2BOAuthProviders, OneTapPositions } from '@stytch/core/public';\nimport type { CredentialResponse } from 'google-one-tap';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { useIsOnlyFloatingOneTap } from '../hooks/useIsOnlyFloatingOneTap';\nimport { useIsUnmounted } from '../../hooks/useIsMounted';\nimport { readB2BInternals } from '../../../utils/internal';\nimport { GoogleOneTapClient } from '../../../oneTap/GoogleOneTapClient';\nimport { OAuthB2BButton } from './OAuthB2BButton';\nimport { ErrorMessages, OneTapErrors } from '../../components/organisms/OneTapError';\nimport { useLastUsedAuthMethod } from '../hooks/useLastUsedAuthMethod';\nimport LastUsed from '../../components/molecules/LastUsed';\n\nexport type B2BOneTapProps = {\n customScopes?: string[];\n providerParams?: Record<string, string>;\n cancelOnTapOutside?: boolean;\n};\n\nexport const B2BGoogleOneTap = ({ customScopes, providerParams, cancelOnTapOutside }: B2BOneTapProps) => {\n const stytch = useStytch();\n const config = useConfig();\n const isOnlyFloatingOneTap = useIsOnlyFloatingOneTap();\n const [oneTapError, setOneTapError] = useState<OneTapErrors>();\n const isUnmounted = useIsUnmounted();\n const [state, dispatch] = useGlobalReducer();\n\n const [lastUsedMethod, setLastUsedMethod] = useLastUsedAuthMethod();\n\n /*\n * Begin One Tap Loading / Initialization Logic\n */\n //\n const attemptToLoadOneTap = useCallback(async () => {\n const { oneTap } = readB2BInternals(stytch);\n const clientResult = await oneTap.createOneTapClient();\n if (!clientResult.success) {\n if (clientResult.reason === 'oauth_config_not_found') {\n setOneTapError(OneTapErrors.NoConfiguredOAuthClient);\n } else if (clientResult.reason === 'default_provider_not_allowed') {\n setOneTapError(OneTapErrors.DefaultProviderNotAllowed);\n } else {\n logger.error('Unable to load One Tap settings for project', clientResult);\n }\n return;\n }\n const { client } = clientResult;\n\n /**\n * One tap is composed of two calls, an init() call and a prompt() call\n * the init() call takes in a parent_id where one tap should be shown\n * prompt() does the actual showing. if the element does not exist,\n * we show One Tap in the upper right corner\n * if the element does exist, One Tap's lifecycle is tied to the lifecycle of said element\n * here, we call init() then prompt() in the useeffect. If the component unmounts before\n * prompt() is called, One Tap falls back to the element-does-not-exist behavior.\n * Fix: add a check for whether the component is still rendered immediately before we\n * call prompt, preventing this race condition\n */\n if (isUnmounted.current) {\n return;\n }\n\n let oneTapCallback: (response: CredentialResponse) => void;\n if (state.flowState.organization) {\n oneTapCallback = oneTap.createOnSuccessHandler({\n organizationId: state.flowState.organization.organization_id,\n signupRedirectUrl: config.oauthOptions?.signupRedirectURL,\n loginRedirectUrl: config.oauthOptions?.loginRedirectURL,\n onSuccess: oneTap.redirectOnSuccess,\n onError: () => dispatch({ type: 'transition', screen: AppScreens.Error }),\n });\n } else {\n oneTapCallback = oneTap.createOnDiscoverySuccessHandler({\n discoveryRedirectUrl: config.oauthOptions?.discoveryRedirectURL,\n onSuccess: oneTap.redirectOnSuccess,\n onError: () => dispatch({ type: 'transition', screen: AppScreens.Error }),\n });\n }\n const renderResult = await client.render({\n callback: oneTapCallback,\n style: {\n position: OneTapPositions.floating,\n },\n cancelOnTapOutside,\n });\n\n // Check if the component has become unmounted during the async OT render process\n // Kill the rest of the logic if so\n if (isUnmounted.current) {\n client.cancel();\n return;\n }\n\n if (!renderResult.success) {\n if (renderResult.reason === 'unregistered_origin') {\n setOneTapError(OneTapErrors.OriginNotAllowedForClient);\n }\n if (renderResult.reason === 'invalid_client') {\n setOneTapError(OneTapErrors.InvalidOAuthClient);\n }\n logger.error('Unable to render One Tap prompt', renderResult);\n }\n return client;\n }, [\n stytch,\n isUnmounted,\n state.flowState.organization,\n config.oauthOptions?.signupRedirectURL,\n config.oauthOptions?.loginRedirectURL,\n config.oauthOptions?.discoveryRedirectURL,\n dispatch,\n cancelOnTapOutside,\n ]);\n\n useEffect(() => {\n let client: GoogleOneTapClient | undefined;\n attemptToLoadOneTap()\n .then(($client) => (client = $client))\n .catch((err) => {\n logger.error('Unable to render One Tap prompt', err);\n });\n return () => client?.cancel();\n }, [attemptToLoadOneTap]);\n /*\n * End One Tap Loading / Initialization Logic\n */\n\n if (isOnlyFloatingOneTap) {\n return null;\n }\n\n const fallbackButton = (\n <OAuthB2BButton\n providerType={B2BOAuthProviders.Google}\n loginRedirectUrl={config.oauthOptions?.loginRedirectURL}\n signupRedirectUrl={config.oauthOptions?.signupRedirectURL}\n discoveryRedirectUrl={config.oauthOptions?.discoveryRedirectURL}\n customScopes={customScopes}\n providerParams={providerParams}\n onSuccess={() => setLastUsedMethod(B2BOAuthProviders.Google)}\n />\n );\n\n const fallbackWithLastUsed =\n lastUsedMethod === B2BOAuthProviders.Google ? <LastUsed>{fallbackButton}</LastUsed> : fallbackButton;\n\n if (oneTapError) {\n return (\n <>\n {DEV(<ErrorMessages error={oneTapError} />)}\n {fallbackWithLastUsed}\n </>\n );\n }\n\n return fallbackWithLastUsed;\n};\n","import React, { ComponentType, Dispatch, ReactNode, useEffect, useState } from 'react';\nimport { usePresentation } from '../components/PresentationConfig';\nimport { useSWRConfig } from 'swr';\nimport { useGlobalReducer, useStytch, useConfig, useErrorCallback, useEventCallback } from './GlobalContextProvider';\nimport { ErrorType } from './types/ErrorType';\nimport { AppScreens } from './types/AppScreens';\nimport { LoggingInScreen } from '../components/molecules/Loading';\nimport {\n useExtractSlug,\n onAuthenticateSuccess,\n onDiscoveryAuthenticateSuccess,\n StytchMutationKey,\n getStytchEventByKey,\n useProductComponents,\n} from './utils';\nimport { AuthFlowType, StytchAPIError, StytchEvent, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { StytchB2BExtendedLoginConfig } from '../../types';\nimport { MainScreen } from './screens/Main';\nimport { ConfirmationScreen } from './screens/Confirmation';\nimport { ErrorScreen } from '../components/molecules/ErrorScreen';\nimport { Discovery } from './screens/Discovery';\nimport { MFAEnrollmentSelectionScreen } from './screens/MFAEnrollmentSelectionScreen';\nimport { SMSOTPEnrollScreen } from './screens/SMSOTPEnrollScreen';\nimport { SMSOTPEntryScreen } from './screens/SMSOTPEntryScreen';\nimport { RecoveryCodeEntryScreen } from './screens/RecoveryCodeEntryScreen';\nimport { RecoveryCodeSaveScreen } from './screens/RecoveryCodeSaveScreen';\nimport { TOTPEnrollQRScreen } from './screens/TOTPEnrollQRScreen';\nimport { TOTPEnrollManualScreen } from './screens/TOTPEnrollManualScreen';\nimport { TOTPEntryScreen } from './screens/TOTPEntryScreen';\nimport { useIsOnlyFloatingOneTap } from './hooks/useIsOnlyFloatingOneTap';\nimport { B2BGoogleOneTap } from './components/B2BOneTap';\nimport { extractErrorType } from '../../utils/extractErrorType';\nimport { HandledTokenType } from '../../b2b/StytchB2BClient';\nimport { Action } from './reducer';\nimport MainContainer from '../components/molecules/MainContainer';\nimport Logo from '../components/atoms/Logo';\n\n/**\n * Separately store additional things to do when authenticateByUrl completes or errors\n */\ntype AuthTokenConfig = {\n mutationKey: StytchMutationKey;\n // Typing this is too hard. Instead, manually verify the typings from the client matches that expected\n // by these success functions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSuccess: (data: any, dispatch: Dispatch<Action>, config: StytchB2BExtendedLoginConfig) => void;\n defaultError?: ErrorType;\n};\n\nconst authTokenConfig: Record<HandledTokenType, AuthTokenConfig> = {\n discovery: {\n mutationKey: 'stytch.magicLinks.discovery.authenticate',\n onSuccess: onDiscoveryAuthenticateSuccess,\n defaultError: ErrorType.EmailMagicLink,\n },\n discovery_oauth: {\n mutationKey: 'stytch.oauth.discovery.authenticate',\n onSuccess: onDiscoveryAuthenticateSuccess,\n },\n oauth: {\n mutationKey: 'stytch.oauth.authenticate',\n onSuccess: onAuthenticateSuccess,\n },\n sso: {\n mutationKey: 'stytch.sso.authenticate',\n onSuccess: onAuthenticateSuccess,\n },\n multi_tenant_magic_links: {\n mutationKey: 'stytch.magicLinks.authenticate',\n onSuccess: onAuthenticateSuccess,\n defaultError: ErrorType.EmailMagicLink,\n },\n multi_tenant_impersonation: {\n mutationKey: 'stytch.impersonation.authenticate',\n onSuccess: onAuthenticateSuccess,\n },\n};\n\nconst errorTypeMap: Record<string, ErrorType> = {\n ad_blocker_detected: ErrorType.AdBlockerDetected,\n};\n\nconst AppContainer: () => ReactNode = () => {\n const [state, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const triggerError = useErrorCallback();\n const triggerEvent = useEventCallback();\n const config = useConfig();\n const { displayWatermark, theme, options } = usePresentation();\n const isOnlyFloatingOneTap = useIsOnlyFloatingOneTap();\n\n const currentScreen = state.screen;\n\n const screenComponentMap = useProductComponents(config, 'screens')!;\n\n const handleStytchAPIError = (error: StytchAPIError, defaultErrorType = ErrorType.Default) => {\n const error_type = extractErrorType(error);\n const errorType: ErrorType = errorTypeMap[error_type!] ?? defaultErrorType;\n\n dispatch({\n type: 'set_error_message_and_transition',\n errorType,\n canGoBack: false,\n });\n };\n\n const [isTokenAuthLoading, setIsTokenAuthLoading] = useState(false);\n const { mutate } = useSWRConfig();\n\n const { slug, resultPending } = useExtractSlug();\n\n useEffect(() => {\n // If we're in One Tap only mode, we should not run any other effects\n if (isOnlyFloatingOneTap) {\n return;\n }\n\n // Password reset has special handling for exchanging a magic link token\n // for a session and then using it to reset a password\n if (state.flowState.type == AuthFlowType.PasswordReset) {\n return;\n }\n\n const parsed = stytchClient.parseAuthenticateUrl();\n if (!parsed?.handled) {\n return;\n }\n\n const { mutationKey, defaultError, onSuccess } = authTokenConfig[parsed.tokenType];\n setIsTokenAuthLoading(true);\n mutate(\n mutationKey,\n stytchClient.authenticateByUrl({ session_duration_minutes: config.sessionOptions.sessionDurationMinutes }),\n )\n .then(\n (result) => {\n if (!result?.handled) return; // Should not be possible\n const { data } = result;\n\n const event = getStytchEventByKey(mutationKey);\n if (event) {\n triggerEvent({ type: event, data } as StytchEvent<StytchProjectConfigurationInput>);\n }\n\n onSuccess(data, dispatch, config);\n },\n (error) => {\n triggerError(error);\n handleStytchAPIError(error, defaultError);\n },\n )\n .finally(() => setIsTokenAuthLoading(false));\n\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, []);\n\n useEffect(() => {\n // If we're in One Tap only mode, we should not run any other effects\n if (isOnlyFloatingOneTap) {\n return;\n }\n\n // Skip further action if token discovery is in progress\n if (isTokenAuthLoading) {\n return;\n }\n\n const parsed = stytchClient.parseAuthenticateUrl();\n if (parsed?.handled) {\n return;\n }\n\n if (\n !slug &&\n !resultPending &&\n state.flowState.organization === null &&\n state.screen === AppScreens.Main &&\n state.flowState.type == AuthFlowType.Organization\n ) {\n // No slug found (or no slug pattern)\n dispatch({\n type: 'set_error_message_and_transition',\n errorType: ErrorType.Organization,\n canGoBack: false,\n });\n }\n }, [\n dispatch,\n isOnlyFloatingOneTap,\n isTokenAuthLoading,\n resultPending,\n slug,\n state.flowState.organization,\n state.flowState.type,\n state.screen,\n stytchClient,\n triggerError,\n ]);\n\n if (isOnlyFloatingOneTap) {\n return <B2BGoogleOneTap />;\n }\n\n if (isTokenAuthLoading) {\n return (\n <MainContainer theme={theme} displayWatermark={false}>\n <LoggingInScreen />\n </MainContainer>\n );\n }\n\n let orgLogo;\n if (state.flowState.organization?.organization_logo_url) {\n const { organization_name, organization_logo_url } = state.flowState.organization;\n orgLogo = {\n url: organization_logo_url,\n alt: organization_name ?? '',\n };\n }\n\n const defaultScreenComponents: Partial<Record<AppScreens, ComponentType>> = {\n // Main is omitted from StytchB2BProduct since it's used by everything\n [AppScreens.Main]: MainScreen,\n [AppScreens.LoggedIn]: ConfirmationScreen,\n\n // Discovery can be opted into dynamically via stytch_redirect_type ResetPassword flow\n // so it cannot be statically shaken away\n [AppScreens.Discovery]: Discovery,\n [AppScreens.Error]: ErrorScreen,\n\n // MFA products are dynamically configured depending on organization and user choice,\n // and opted into by default\n [AppScreens.MFAEnrollmentSelection]: MFAEnrollmentSelectionScreen,\n [AppScreens.SMSOTPEnrollment]: SMSOTPEnrollScreen,\n [AppScreens.SMSOTPEntry]: SMSOTPEntryScreen,\n [AppScreens.RecoveryCodeEntry]: RecoveryCodeEntryScreen,\n [AppScreens.RecoveryCodeSave]: RecoveryCodeSaveScreen,\n [AppScreens.TOTPEnrollmentQRCode]: TOTPEnrollQRScreen,\n [AppScreens.TOTPEnrollmentManual]: TOTPEnrollManualScreen,\n [AppScreens.TOTPEntry]: TOTPEntryScreen,\n };\n\n const ScreenComponent = defaultScreenComponents[currentScreen] ?? screenComponentMap[currentScreen];\n\n return (\n <MainContainer theme={theme} displayWatermark={displayWatermark}>\n <Logo appLogo={options.logo} orgLogo={orgLogo} />\n <ScreenComponent />\n </MainContainer>\n );\n};\n\nexport default AppContainer;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { OverrideProperties } from 'type-fest';\nimport { messages } from '../../messages/b2b/en';\nimport { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper';\nimport { DEFAULT_STATE, GlobalContextProvider } from './GlobalContextProvider';\nimport { AppState } from './types/AppState';\nimport { AppScreens } from './types/AppScreens';\nimport { B2BSDKConfig, StytchB2BExtendedLoginConfig } from '../../types';\nimport { readB2BInternals } from '../../utils/internal';\nimport Container from './Container';\nimport { AuthFlowType, RedirectURLType, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { PresentationContext, usePresentationWithDefault } from '../components/PresentationConfig';\n\nexport type InternalSDKConfig<TProjectConfiguration extends StytchProjectConfigurationInput> = OverrideProperties<\n B2BSDKConfig<TProjectConfiguration>,\n { config: StytchB2BExtendedLoginConfig }\n>;\n\nexport const InternalAppContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n client,\n presentation,\n callbacks,\n config,\n strings,\n}: InternalSDKConfig<TProjectConfiguration>) => {\n /**\n * Read the watermark out of sync storage, then read it out of async storage\n */\n const [displayWatermark, setDisplayWatermark] = useState(() => {\n const { displayWatermark } = readB2BInternals(client).bootstrap.getSync();\n return displayWatermark;\n });\n\n useEffect(() => {\n readB2BInternals(client)\n .bootstrap.getAsync()\n .then((data) => {\n readB2BInternals(client).networkClient.logEvent({\n name: 'render_b2b_login_screen',\n details: { options: config, bootstrap: data },\n });\n setDisplayWatermark(data.displayWatermark);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, [client]);\n\n const getRedirectTypeFromUrl = () => {\n const url = new URL(window.location.href);\n const redirectType = url.searchParams.get('stytch_redirect_type');\n\n return redirectType;\n };\n\n const redirectType = getRedirectTypeFromUrl();\n const authFlowType =\n redirectType === RedirectURLType.ResetPassword ? AuthFlowType.PasswordReset : config.authFlowType;\n\n const initialState: AppState = {\n ...DEFAULT_STATE,\n screen: authFlowType === AuthFlowType.PasswordReset ? AppScreens.PasswordResetForm : AppScreens.Main,\n flowState: {\n ...DEFAULT_STATE.flowState,\n type: authFlowType,\n },\n };\n\n const configWithDefaults = useMemo(\n () => ({\n ...config,\n // While `sessionOptions` is required in the types, we still want to handle the error gracefully if it's not provided.\n // We set it to an empty object here so that future checks for `sessionOptions.sessionDurationMinutes` throw a `can't read property of undefined` error,\n // and instead throw an error regarding a missing `sessionDurationMinutes` error from the headless client.\n sessionOptions: config.sessionOptions ?? {},\n }),\n [config],\n );\n\n const presentationValue = usePresentationWithDefault(\n presentation,\n displayWatermark,\n configWithDefaults.products,\n 'B2BProduct',\n );\n\n return (\n <GlobalContextProvider\n client={client}\n callbacks={callbacks}\n config={configWithDefaults}\n initialState={initialState}\n >\n <PresentationContext.Provider value={presentationValue}>\n <I18nProviderWrapper messages={messages} overrides={strings}>\n <Container />\n </I18nProviderWrapper>\n </PresentationContext.Provider>\n </GlobalContextProvider>\n );\n};\n","import { useConfig, useStytch } from '../GlobalContextProvider';\nimport { useEffect, useState } from 'react';\nimport { readB2BInternals } from '../../../utils/internal';\n\n/**\n * Resolves the best email domain to use as a hint for login\n */\nexport const useEmailDomain = () => {\n const stytch = useStytch();\n const config = useConfig();\n /**\n * Read the emailDomains out of sync storage, then read out of async storage\n * TODO - Should all bootstrap data live in the config somewhere?\n */\n const [emailDomains, setEmailDomains] = useState(() => {\n const { emailDomains } = readB2BInternals(stytch).bootstrap.getSync();\n return emailDomains;\n });\n\n useEffect(() => {\n readB2BInternals(stytch)\n .bootstrap.getAsync()\n .then(({ emailDomains }) => {\n setEmailDomains(emailDomains);\n });\n }, [stytch]);\n\n // If a domain is explicitly passed in, use it!\n if (config.emailMagicLinksOptions?.domainHint) {\n return config.emailMagicLinksOptions?.domainHint;\n }\n // If there can only be one logical choice, use it!\n if (emailDomains.length === 1) {\n return emailDomains[0];\n }\n // If it isn't clear who sent the email\n // we simply won't provide a hint!\n return null;\n};\n","import { ResponseCommon, StytchAPIError } from '@stytch/core/public';\nimport { useStytch, useGlobalReducer, useConfig } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { StytchMutationKey, useMutate } from '../utils';\nimport { logger } from '@stytch/core';\n\nexport const useEmlLoginOrSignup = () => {\n const [, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const config = useConfig();\n\n return useMutate<ResponseCommon, StytchAPIError, StytchMutationKey, { email: string; organization_id: string }>(\n 'stytch.magicLinks.email.loginOrSignup',\n (_: string, { arg: { email, organization_id } }: { arg: { email: string; organization_id: string } }) =>\n stytchClient.magicLinks.email.loginOrSignup({\n email_address: email,\n organization_id,\n login_redirect_url: config.emailMagicLinksOptions?.loginRedirectURL,\n signup_redirect_url: config.emailMagicLinksOptions?.signupRedirectURL,\n login_template_id: config.emailMagicLinksOptions?.loginTemplateId,\n signup_template_id: config.emailMagicLinksOptions?.signupTemplateId,\n locale: config.emailMagicLinksOptions?.locale,\n }),\n {\n onSuccess: () => {\n dispatch({ type: 'transition', screen: AppScreens.EmailConfirmation });\n },\n onError: (e) => {\n logger.error(e);\n },\n },\n );\n};\n","import { ResponseCommon, StytchAPIError } from '@stytch/core/public';\nimport { useStytch, useGlobalReducer, useConfig } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { StytchMutationKey, useMutate } from '../utils';\n\nexport const useEmlDiscoverySend = () => {\n const [, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const config = useConfig();\n\n return useMutate<ResponseCommon, StytchAPIError, StytchMutationKey, { email: string }>(\n 'stytch.magicLinks.email.discovery.send',\n (_: string, { arg: { email } }: { arg: { email: string } }) =>\n stytchClient.magicLinks.email.discovery.send({\n email_address: email,\n discovery_redirect_url: config.emailMagicLinksOptions?.discoveryRedirectURL,\n login_template_id: config.emailMagicLinksOptions?.loginTemplateId,\n locale: config.emailMagicLinksOptions?.locale,\n }),\n {\n onSuccess: () => {\n dispatch({ type: 'transition', screen: AppScreens.EmailConfirmation });\n },\n },\n );\n};\n","import React from 'react';\nimport { AuthFlowType } from '@stytch/core/public';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { EmailConfirmationView } from '../../components/organisms/EmailConfirmationView';\nimport { useEmailDomain } from './useEmailDomain';\nimport { useCountdown } from '../../components/atoms/Countdown';\nimport { useEmlLoginOrSignup } from '../hooks/useEmlLoginOrSignup';\nimport { useEmlDiscoverySend } from '../hooks/useEmlDiscoverySend';\n\nexport const EmailConfirmation = () => {\n const [state, dispatch] = useGlobalReducer();\n const emailDomain = useEmailDomain();\n const countdown = useCountdown();\n\n const { trigger: sendLoginOrSignupEml, isMutating: isSendingLoginOrSignupEml } = useEmlLoginOrSignup();\n const { trigger: sendDiscoveryEml, isMutating: isSendingDiscoveryEml } = useEmlDiscoverySend();\n\n const email = state.formState.emailState.userSuppliedEmail;\n\n const goBack = () => {\n dispatch({ type: 'set_user_supplied_email', email: '' });\n dispatch({ type: 'transition', screen: AppScreens.Main });\n };\n\n const resend = async () => {\n if (state.flowState.type === AuthFlowType.Discovery) {\n await sendDiscoveryEml({ email });\n } else if (state.flowState.type === AuthFlowType.Organization && state.flowState.organization) {\n await sendLoginOrSignupEml({\n email,\n organization_id: state.flowState.organization.organization_id,\n });\n }\n };\n\n const isSubmitting = isSendingLoginOrSignupEml || isSendingDiscoveryEml;\n\n return (\n <EmailConfirmationView\n emailDomain={emailDomain}\n email={email}\n goBack={goBack}\n resend={resend}\n countdown={countdown}\n isSubmitting={isSubmitting}\n />\n );\n};\n","const DEFAULT_OTP_EXPIRATION_MS = 1000 * 60 * 10; // 10 minutes\n\nexport const getOtpCodeExpiration = () => new Date(Date.now() + DEFAULT_OTP_EXPIRATION_MS);\n","import { ResponseCommon, StytchAPIError } from '@stytch/core/public';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { getOtpCodeExpiration } from '../getOtpCodeExpiration';\nimport { StytchMutationKey, useMutate } from '../utils';\n\nexport const useEmailOtpDiscoverySend = ({ throwOnError }: { throwOnError?: boolean } = {}) => {\n const [, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const config = useConfig();\n\n return useMutate<ResponseCommon, StytchAPIError, StytchMutationKey, { email: string }>(\n 'stytch.otps.email.discovery.send',\n (_key: string, { arg: { email } }: { arg: { email: string } }) =>\n stytchClient.otps.email.discovery.send({\n email_address: email,\n login_template_id: config.emailOtpOptions?.loginTemplateId,\n locale: config.emailOtpOptions?.locale,\n }),\n {\n onSuccess: () => {\n dispatch({ type: 'send_email_otp', codeExpiration: getOtpCodeExpiration() });\n },\n throwOnError,\n },\n );\n};\n","import { B2BOTPsEmailLoginOrSignupResponse, StytchAPIError } from '@stytch/core/public';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { getOtpCodeExpiration } from '../getOtpCodeExpiration';\nimport { StytchMutationKey, useMutate } from '../utils';\n\nexport const useEmailOtpLoginOrSignup = ({ throwOnError }: { throwOnError?: boolean } = {}) => {\n const [, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const config = useConfig();\n\n return useMutate<\n B2BOTPsEmailLoginOrSignupResponse,\n StytchAPIError,\n StytchMutationKey,\n { email: string; organization_id: string }\n >(\n 'stytch.otps.email.loginOrSignup',\n (_key: string, { arg: { email, organization_id } }: { arg: { email: string; organization_id: string } }) =>\n stytchClient.otps.email.loginOrSignup({\n email_address: email,\n organization_id,\n login_template_id: config.emailOtpOptions?.loginTemplateId,\n signup_template_id: config.emailOtpOptions?.signupTemplateId,\n locale: config.emailOtpOptions?.locale,\n }),\n {\n onSuccess: () => {\n dispatch({ type: 'send_email_otp', codeExpiration: getOtpCodeExpiration() });\n },\n throwOnError,\n },\n );\n};\n","import React, { useMemo } from 'react';\nimport { AuthFlowType } from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\nimport { msg } from '@lingui/core/macro';\nimport { MessageDescriptor } from '@lingui/core';\nimport Button from '../../components/atoms/Button';\nimport ErrorText from '../../components/molecules/ErrorText';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { useEffectiveAuthConfig } from '../hooks/useEffectiveAuthConfig';\nimport { useEmailOtpDiscoverySend } from '../hooks/useEmailOtpDiscoverySend';\nimport { useEmailOtpLoginOrSignup } from '../hooks/useEmailOtpLoginOrSignup';\nimport { useEmlDiscoverySend } from '../hooks/useEmlDiscoverySend';\nimport { useEmlLoginOrSignup } from '../hooks/useEmlLoginOrSignup';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { ProductId } from '../StytchB2BProduct';\nimport { isTruthy } from '../../../utils/isTruthy';\n\nconst options: Partial<Record<ProductId, { messageDescriptor: MessageDescriptor }>> = {\n emailMagicLinks: {\n messageDescriptor: msg({ id: 'emailMethodSelection.link', message: 'Email me a login link' }),\n },\n emailOtp: {\n messageDescriptor: msg({ id: 'emailMethodSelection.code', message: 'Email me a login code' }),\n },\n};\n\nexport const EmailMethodSelectionScreen = () => {\n const { products } = useEffectiveAuthConfig();\n const { t } = useLingui();\n\n const [state, dispatch] = useGlobalReducer();\n\n const {\n trigger: sendDiscoveryEml,\n isMutating: isSendingDiscoveryEml,\n error: sendDiscoveryEmlError,\n reset: resetSendDiscoveryEml,\n } = useEmlDiscoverySend();\n\n const {\n trigger: sendDiscoveryOtp,\n isMutating: isSendingDiscoveryOtp,\n error: sendDiscoveryOtpError,\n reset: resetSendDiscoveryOtp,\n } = useEmailOtpDiscoverySend();\n\n const {\n trigger: sendLoginOrSignupEml,\n isMutating: isSendingLoginOrSignupEml,\n error: sendLoginOrSignupEmlError,\n reset: resetSendLoginOrSignupEml,\n } = useEmlLoginOrSignup();\n\n const {\n trigger: sendLoginOrSignupOtp,\n isMutating: isSendingLoginOrSignupOtp,\n error: sendLoginOrSignupOtpError,\n reset: resetSendLoginOrSignupOtp,\n } = useEmailOtpLoginOrSignup();\n\n const isSending =\n isSendingDiscoveryEml || isSendingDiscoveryOtp || isSendingLoginOrSignupEml || isSendingLoginOrSignupOtp;\n const error =\n sendDiscoveryEmlError || sendDiscoveryOtpError || sendLoginOrSignupEmlError || sendLoginOrSignupOtpError;\n\n const handleChooseMethod = (method: ProductId) => {\n resetSendDiscoveryEml();\n resetSendDiscoveryOtp();\n resetSendLoginOrSignupEml();\n resetSendLoginOrSignupOtp();\n\n switch (method) {\n case 'emailMagicLinks':\n if (state.flowState.type === AuthFlowType.Discovery) {\n sendDiscoveryEml({ email: state.formState.emailState.userSuppliedEmail });\n } else if (state.flowState.type === AuthFlowType.Organization && state.flowState.organization) {\n sendLoginOrSignupEml({\n email: state.formState.emailState.userSuppliedEmail,\n organization_id: state.flowState.organization.organization_id,\n });\n }\n break;\n case 'emailOtp':\n if (state.flowState.type === AuthFlowType.Discovery) {\n sendDiscoveryOtp({ email: state.formState.emailState.userSuppliedEmail });\n } else if (state.flowState.type === AuthFlowType.Organization && state.flowState.organization) {\n sendLoginOrSignupOtp({\n email: state.formState.emailState.userSuppliedEmail,\n organization_id: state.flowState.organization.organization_id,\n });\n }\n break;\n }\n };\n\n const displayOptions = useMemo(\n () =>\n products\n .map((product) => {\n const option = options[product.id];\n if (!option) return;\n\n return {\n option: product.id,\n messageDescriptor: option.messageDescriptor,\n };\n })\n .filter(isTruthy),\n [products],\n );\n\n const handleBack = () => {\n dispatch({ type: 'navigate_back' });\n };\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'emailMethodSelection.title', message: 'Select how you’d like to continue' })}\n </Typography>\n <ButtonColumn>\n {displayOptions.map(({ option, messageDescriptor }) => (\n <Button\n key={option}\n variant=\"outline\"\n disabled={isSending}\n onClick={() => {\n handleChooseMethod(option);\n }}\n >\n {t(messageDescriptor)}\n </Button>\n ))}\n\n {error && <ErrorText>{getTranslatedError(error, t)}</ErrorText>}\n\n <Button variant=\"ghost\" onClick={handleBack}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import React from 'react';\nimport {\n AuthFlowType,\n B2BDiscoveryOTPEmailAuthenticateResponse,\n B2BOTPsEmailAuthenticateResponse,\n StytchAPIError,\n} from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport { LoadingScreen } from '../../components/molecules/Loading';\nimport { SentOTPEntry } from '../../components/organisms/SentOTPEntry';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { useEmailOtpDiscoverySend } from '../hooks/useEmailOtpDiscoverySend';\nimport { useEmailOtpLoginOrSignup } from '../hooks/useEmailOtpLoginOrSignup';\nimport { StytchMutationKey, onAuthenticateSuccess, onDiscoveryAuthenticateSuccess, useMutate } from '../utils';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport { useCountdown } from '../../components/atoms/Countdown';\nimport { ResendOTPButton } from '../../components/organisms/ResendOTPButton';\n\nexport const EmailOTPEntryScreen = () => {\n const stytchClient = useStytch();\n const config = useConfig();\n const { t } = useLingui();\n\n const [state, dispatch] = useGlobalReducer();\n const { codeExpiration } = state.formState.otpState;\n const resendCountdown = useCountdown();\n const { userSuppliedEmail } = state.formState.emailState;\n\n const emailOtp = useEmailOtpLoginOrSignup({ throwOnError: true });\n const emailOtpDiscovery = useEmailOtpDiscoverySend({ throwOnError: true });\n\n const isSending = emailOtp.isMutating || emailOtpDiscovery.isMutating;\n const sendError = emailOtp.error || emailOtpDiscovery.error;\n\n const discoveryAuthenticate = useMutate<\n B2BDiscoveryOTPEmailAuthenticateResponse,\n unknown,\n StytchMutationKey,\n { otp: string; email: string }\n >(\n 'stytch.otps.email.discovery.authenticate',\n (_: string, { arg: { otp, email } }: { arg: { otp: string; email: string } }) =>\n stytchClient.otps.email.discovery.authenticate({\n code: otp,\n email_address: email,\n }),\n {\n onSuccess: (data) => {\n onDiscoveryAuthenticateSuccess(data, dispatch);\n },\n throwOnError: true,\n },\n );\n\n const authenticate = useMutate<\n B2BOTPsEmailAuthenticateResponse,\n unknown,\n StytchMutationKey,\n { otp: string; emailAddress: string; organizationId: string; sessionDurationMinutes: number }\n >(\n 'stytch.otps.email.authenticate',\n (\n _: string,\n {\n arg: { otp, emailAddress, organizationId, sessionDurationMinutes },\n }: { arg: { otp: string; emailAddress: string; organizationId: string; sessionDurationMinutes: number } },\n ) =>\n stytchClient.otps.email.authenticate({\n code: otp,\n email_address: emailAddress,\n organization_id: organizationId,\n session_duration_minutes: sessionDurationMinutes,\n }),\n {\n onSuccess: (data) => {\n onAuthenticateSuccess(data, dispatch, config);\n },\n throwOnError: true,\n },\n );\n\n const isAuthenticatingAny = discoveryAuthenticate.isMutating || authenticate.isMutating;\n const error = discoveryAuthenticate.error || authenticate.error || sendError;\n const errorMessage = error ? getTranslatedError(error as StytchAPIError, t) : undefined;\n\n const resetAll = () => {\n for (const resp of [emailOtp, emailOtpDiscovery, authenticate, discoveryAuthenticate]) {\n resp.reset();\n }\n };\n\n const handleSubmit = async (otp: string) => {\n resetAll();\n\n try {\n if (state.flowState.type === AuthFlowType.Discovery) {\n await discoveryAuthenticate.trigger({\n otp,\n email: userSuppliedEmail,\n });\n } else if (\n state.flowState.type === AuthFlowType.Organization &&\n state.flowState.organization &&\n state.formState.emailState.userSuppliedEmail\n ) {\n await authenticate.trigger({\n otp,\n emailAddress: state.formState.emailState.userSuppliedEmail,\n organizationId: state.flowState.organization.organization_id,\n sessionDurationMinutes: config.sessionOptions.sessionDurationMinutes,\n });\n }\n } catch {\n resendCountdown.clear();\n }\n };\n\n const handleResendOTP = async () => {\n resetAll();\n\n if (isSending) return;\n\n if (state.flowState.type === AuthFlowType.Discovery) {\n await emailOtpDiscovery.trigger({ email: userSuppliedEmail });\n } else if (state.flowState.type === AuthFlowType.Organization && state.flowState.organization) {\n await emailOtp.trigger({\n email: userSuppliedEmail,\n organization_id: state.flowState.organization.organization_id,\n });\n }\n };\n\n const handleBack = () => {\n dispatch({ type: 'navigate_back' });\n };\n\n return (\n <Column gap={6}>\n {codeExpiration !== null ? (\n <SentOTPEntry\n isSubmitting={isAuthenticatingAny}\n onSubmit={handleSubmit}\n errorMessage={errorMessage}\n expiration={codeExpiration.getTime()}\n formattedDestination={userSuppliedEmail}\n />\n ) : (\n <LoadingScreen />\n )}\n\n <ButtonColumn>\n <ResendOTPButton countdown={resendCountdown} resendOTP={handleResendOTP} isSubmitting={isAuthenticatingAny} />\n <Button variant=\"ghost\" onClick={handleBack}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import { useStytch } from '../GlobalContextProvider';\nimport { useMutate } from '../utils';\n\nexport const useSsoDiscoveryConnection = () => {\n const stytch = useStytch();\n\n return useMutate(\n 'stytch.sso.discoverConnections',\n async (_key, { arg: { emailAddress } }: { arg: { emailAddress: string } }) =>\n await stytch.sso.discoverConnections(emailAddress),\n { throwOnError: true },\n );\n};\n","import React, { useState } from 'react';\nimport Button from '../../components/atoms/Button';\nimport { extractErrorMessage } from '../../../utils/extractErrorMessage';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { useSsoDiscoveryConnection } from '../hooks/useSsoDiscoveryConnection';\nimport { useLingui } from '@lingui/react/macro';\n\nexport const SSODiscoveryEmail = () => {\n const [, dispatch] = useGlobalReducer();\n const [email, setEmail] = useState('');\n const { t } = useLingui();\n\n const [error, setError] = useState<string>();\n const [isLoading, setIsLoading] = useState(false);\n\n const { trigger } = useSsoDiscoveryConnection();\n\n const stytch = useStytch();\n const { ssoOptions } = useConfig();\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setError(undefined);\n\n const tryGetConnections = async () => {\n try {\n const response = await trigger({ emailAddress: email });\n\n if (!response) {\n return [];\n }\n\n return response.connections;\n } catch (e) {\n setError(\n extractErrorMessage(\n e,\n t({\n id: 'ssoDiscovery.email.error.unknown',\n message: 'Something went wrong. Try again later or contact your admin for help.',\n }),\n ),\n );\n }\n };\n\n try {\n setIsLoading(true);\n\n const connections = await tryGetConnections();\n\n if (connections?.length === 1) {\n const [connection] = connections;\n await stytch.sso.start({\n connection_id: connection.connection_id,\n login_redirect_url: ssoOptions?.loginRedirectURL,\n signup_redirect_url: ssoOptions?.signupRedirectURL,\n });\n\n // We intentionally leave `isLoading` set to `true` since we're expecting\n // the user to be redirected\n return;\n }\n\n setIsLoading(false);\n\n if (connections) {\n dispatch({ type: 'set_sso_discovery_state', connections });\n }\n } catch (e) {\n setIsLoading(false);\n throw e;\n }\n };\n\n const handleBack = () => {\n dispatch({ type: 'navigate_back' });\n };\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'ssoDiscovery.email.title', message: 'Enter your email to continue' })}\n </Typography>\n\n <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n <EmailInput email={email} setEmail={setEmail} hideLabel error={error} />\n\n <Button variant=\"primary\" loading={isLoading} type=\"submit\">\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n\n <Button variant=\"ghost\" onClick={handleBack}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n </Column>\n );\n};\n","import React from 'react';\nimport { SSOActiveConnection } from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\nimport { useConfig, useStytch } from '../GlobalContextProvider';\nimport { SsoKnownIdp } from '../../../utils/KnownIdp';\n\nimport { SSOIcon } from '../../../assets';\nimport Button from '../../components/atoms/Button';\nimport { usePresentation } from '../../components/PresentationConfig';\nimport type { ssoIcons } from './Icons';\n\ntype SsoIconNames = keyof typeof ssoIcons;\n\nconst iconMap: Record<string, SsoIconNames> = {\n 'google-workspace': 'google',\n 'microsoft-entra': 'microsoft',\n okta: 'okta',\n} satisfies Record<Exclude<SsoKnownIdp, 'generic'>, SsoIconNames>;\n\nexport interface SSOButtonProps {\n connection: SSOActiveConnection;\n onStart?: (connection: SSOActiveConnection) => void;\n}\n\nexport const SSOButton = ({ connection, onStart }: SSOButtonProps) => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const { ssoOptions } = useConfig();\n const { iconRegistry } = usePresentation();\n\n const { connection_id, display_name, identity_provider } = connection;\n\n const onButtonClick = () =>\n stytchClient.sso\n .start({\n connection_id,\n signup_redirect_url: ssoOptions?.signupRedirectURL,\n login_redirect_url: ssoOptions?.loginRedirectURL,\n })\n .then(() => {\n onStart?.(connection);\n });\n\n const iconName = iconMap[identity_provider];\n const Icon = iconRegistry[iconName] ?? SSOIcon;\n\n return (\n <Button variant=\"outline\" onClick={onButtonClick} icon={<Icon />}>\n {t({ id: 'provider.continueWith', message: `Continue with ${display_name}` })}\n </Button>\n );\n};\n","import { B2BOAuthProviders, SSOActiveConnection } from '@stytch/core/public';\nimport { OauthProviderParams } from '../hooks/useEffectiveAuthConfig';\n\n// This file contains a combined type to identify OAuth providers and SSO connections,\n// used to help with rendering these buttons and storing the last used method.\n// Extracting the logic for generating the key helps make it more consistent\n\nexport type LastUsedMethod = B2BOAuthProviders | `sso:${string}`;\n\n/* eslint-disable lingui/no-unlocalized-strings */\n\nexport function getSsoMethodKey(method: SSOActiveConnection): LastUsedMethod {\n return `sso:${method.connection_id}`;\n}\n\nexport function extractConnectionId(method: string | null): string | undefined {\n return method?.startsWith('sso:') ? method.slice(4) : undefined;\n}\n\nexport type AuthButton =\n | { type: 'oauth'; provider: OauthProviderParams }\n | { type: 'sso'; connection: SSOActiveConnection }\n | { type: 'sso-discovery' };\n\nexport function getButtonId(button: AuthButton) {\n if (button.type === 'oauth') {\n return button.provider.type;\n } else if (button.type === 'sso') {\n return getSsoMethodKey(button.connection);\n } else {\n return 'sso-discovery';\n }\n}\n","import * as React from 'react';\nimport { SSOActiveConnection } from '@stytch/core/public';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { useLingui } from '@lingui/react/macro';\nimport { arrayUtils } from '@stytch/core';\nimport { SSOButton } from '../components/SSOButton';\nimport Button from '../../components/atoms/Button';\nimport { getSsoMethodKey, extractConnectionId } from '../types/authMethodKeys';\nimport { useLastUsedAuthMethod } from '../hooks/useLastUsedAuthMethod';\nimport LastUsed from '../../components/molecules/LastUsed';\n\nconst SSOButtons = ({ availableConnections }: { availableConnections: SSOActiveConnection[] }) => {\n const [lastUsedMethod, setLastUsedMethod] = useLastUsedAuthMethod();\n const lastUsedSso = extractConnectionId(lastUsedMethod);\n\n const [connections, foundLastUsed] = arrayUtils.moveToFront(\n availableConnections,\n (connection) => connection.connection_id === lastUsedSso,\n );\n\n return (\n <Column gap={2}>\n {connections.map((provider, index) => {\n const button = (\n <SSOButton\n key={provider.display_name}\n connection={provider}\n onStart={(connection) => setLastUsedMethod(getSsoMethodKey(connection))}\n />\n );\n\n return foundLastUsed && index === 0 ? <LastUsed>{button}</LastUsed> : button;\n })}\n </Column>\n );\n};\n\nexport const SSODiscoveryMenu = () => {\n const [state, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n\n const handleBack = () => {\n dispatch({ type: 'navigate_back' });\n };\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'ssoDiscovery.title', message: 'Select a connection to continue' })}\n </Typography>\n\n <Column gap={4}>\n <SSOButtons availableConnections={state.formState.ssoDiscoveryState.connections} />\n\n <Button variant=\"ghost\" onClick={handleBack}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n </Column>\n );\n};\n","import React, { useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport Input from '../../components/molecules/Input';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { useMutate } from '../utils';\n\nexport const SSODiscoveryFallback = () => {\n const [, dispatch] = useGlobalReducer();\n const [slug, setSlug] = useState('');\n const [error, setError] = useState<string>();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const stytchClient = useStytch();\n const { ssoOptions } = useConfig();\n const { t } = useLingui();\n\n const { trigger: lookupOrganization } = useMutate(\n 'stytch.organization.getBySlug',\n async (_: string, { arg: { slug } }: { arg: { slug: string } }) =>\n stytchClient.organization.getBySlug({ organization_slug: slug }),\n {\n onError: () => {\n setError(t({ id: 'ssoDiscovery.fallback.error.unknown', message: 'An error occurred. Please try again.' }));\n setIsSubmitting(false);\n },\n },\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setError(undefined);\n setIsSubmitting(true);\n\n const result = await lookupOrganization({ slug });\n if (result) {\n const { organization } = result;\n if (organization === null) {\n setError(\n t({ id: 'ssoDiscovery.fallback.error.orgNotFound', message: 'Organization not found. Please try again.' }),\n );\n setIsSubmitting(false);\n } else if (organization.sso_active_connections.length === 1) {\n const [connection] = organization.sso_active_connections;\n await stytchClient.sso.start({\n connection_id: connection.connection_id,\n login_redirect_url: ssoOptions?.loginRedirectURL,\n signup_redirect_url: ssoOptions?.signupRedirectURL,\n });\n } else {\n dispatch({\n type: 'set_organization',\n organization,\n });\n dispatch({ type: 'transition', screen: AppScreens.Main });\n }\n }\n };\n\n const handleTryAnotherMethod = () => {\n dispatch({ type: 'transition', screen: AppScreens.Main });\n };\n\n const handleBack = () => {\n dispatch({ type: 'navigate_back' });\n };\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'ssoDiscovery.fallback.title', message: \"Sorry, we couldn't find any connections\" })}\n </Typography>\n <Typography>\n {t({\n id: 'ssoDiscovery.fallback.content',\n message:\n \"Please input the Organization's unique slug to continue. If you don't know the unique slug, log in through another method to view all of your available Organizations.\",\n })}\n </Typography>\n\n <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n <Input\n id=\"organization-slug\"\n hideLabel\n label={t({ id: 'formField.orgSlug.label', message: 'Organization slug' })}\n value={slug}\n onChange={(e) => setSlug(e.target.value)}\n placeholder={t({ id: 'formField.orgSlug.label', message: 'Organization slug' })}\n error={error}\n />\n\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\" disabled={!slug || isSubmitting}>\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n\n <Button variant=\"outline\" onClick={handleTryAnotherMethod}>\n {t({ id: 'ssoDiscovery.fallback.button.reset', message: 'Try another method' })}\n </Button>\n\n <Button variant=\"ghost\" onClick={handleBack}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n </Column>\n );\n};\n","import { useState } from 'react';\nimport { useConfig, useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from './GlobalContextProvider';\nimport { AppScreens } from './types/AppScreens';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport { readB2BInternals } from '../../utils/internal';\nimport { OrganizationBySlugMatch } from '@stytch/core/public';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { B2BSubscriptionDataLayer } from '../../SubscriptionService';\nimport { useLingui } from '@lingui/react/macro';\nimport { getTranslatedError } from '../../utils/getTranslatedError';\nimport { onAuthenticateSuccess } from './utils';\n\nexport const usePasswordInput = () => {\n const [state, dispatch] = useGlobalReducer();\n const config = useConfig();\n const stytch = useStytch();\n const { t } = useLingui();\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const [email, setEmail] = useState(state.formState.passwordState.email);\n const [password, setPassword] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [isSubmitting, setIsSubmitting] = useState(false);\n const organization = state.flowState.organization;\n\n const submitPassword = (organization_id: string) => {\n setErrorMessage('');\n setIsSubmitting(true);\n stytch.passwords\n .authenticate({\n email_address: email,\n organization_id: organization_id,\n password: password,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n locale: config.passwordOptions?.locale,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordAuthenticate, data });\n onAuthenticateSuccess(data, dispatch, config);\n })\n .catch((err: StytchAPIError) => {\n setIsSubmitting(false);\n onError(err);\n setErrorMessage(getTranslatedError(err, t));\n });\n };\n\n const submitDiscoveryPassword = () => {\n setErrorMessage('');\n setIsSubmitting(true);\n stytch.passwords.discovery\n .authenticate({\n email_address: email,\n password: password,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordDiscoveryAuthenticate, data });\n dispatch({ type: 'transition', screen: AppScreens.Discovery });\n dispatch({\n type: 'set_discovery_state',\n email: data.email_address,\n discoveredOrganizations: data.discovered_organizations,\n });\n })\n .catch((err: StytchAPIError) => {\n setIsSubmitting(false);\n onError(err);\n setErrorMessage(getTranslatedError(err, t));\n });\n };\n\n const emailEligibleForJITProvisioning = (\n { email_jit_provisioning, email_allowed_domains }: OrganizationBySlugMatch,\n email: string,\n ) => {\n switch (email_jit_provisioning) {\n case 'ALL_ALLOWED':\n return true;\n case 'NOT_ALLOWED':\n return false;\n case 'RESTRICTED': {\n const emailDomain = email.split('@').pop();\n return emailDomain != null && email_allowed_domains.includes(emailDomain);\n }\n }\n };\n\n const handleNonMemberReset = () => {\n if (!organization) {\n return;\n }\n\n if (!emailEligibleForJITProvisioning(organization, email)) {\n setIsSubmitting(false);\n const organizationName = organization.organization_name;\n setErrorMessage(\n t({\n id: 'error.emailNoAccessToOrg',\n message: `${email} does not have access to ${organizationName}. If you think this is a mistake, contact your admin.`,\n }),\n );\n return;\n }\n\n const dataLayer = readB2BInternals(stytch).dataLayer as B2BSubscriptionDataLayer;\n dataLayer.setItem('reset-email-value', email);\n stytch.magicLinks.email\n .loginOrSignup({\n email_address: email,\n organization_id: organization.organization_id,\n login_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n signup_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n login_template_id: config.emailMagicLinksOptions?.loginTemplateId,\n signup_template_id: config.emailMagicLinksOptions?.signupTemplateId,\n locale: config.emailMagicLinksOptions?.locale,\n })\n .then(() => {\n setIsSubmitting(false);\n dispatch({ type: 'set_password_state', email: email });\n dispatch({ type: 'transition', screen: AppScreens.PasswordResetVerifyConfirmation });\n })\n .catch((err: StytchAPIError) => {\n onError(err);\n setErrorMessage(getTranslatedError(err, t));\n setIsSubmitting(false);\n });\n };\n\n return {\n stytch,\n onError,\n email,\n setEmail,\n password,\n setPassword,\n organization,\n errorMessage,\n setErrorMessage,\n isSubmitting,\n setIsSubmitting,\n submitPassword,\n submitDiscoveryPassword,\n handleNonMemberReset,\n };\n};\n","import React, { useState } from 'react';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport Column from '../../components/atoms/Column';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport Button from '../../components/atoms/Button';\nimport { EMAIL_REGEX } from '../../../utils';\nimport { readB2BInternals } from '../../../utils/internal';\nimport { PasswordInput } from '../../components/molecules/PasswordInput';\nimport { usePasswordInput } from '../usePasswordInput';\nimport { useLingui } from '@lingui/react/macro';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { StytchAPIError } from '@stytch/core/public';\n\nexport const PasswordsEmailForm = () => {\n const [, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n\n const {\n stytch,\n email,\n setEmail,\n password,\n setPassword,\n organization,\n errorMessage,\n setErrorMessage,\n isSubmitting,\n setIsSubmitting,\n submitPassword,\n submitDiscoveryPassword,\n handleNonMemberReset,\n } = usePasswordInput();\n\n const [hideInput, setHideInput] = useState(!!organization && !email);\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n if (organization) {\n const organization_id = organization.organization_id;\n\n // If we have processed the email, submit the password field\n if (!hideInput) {\n submitPassword(organization_id);\n return;\n }\n\n // Validate we have a member with a password. Otherwise, check if we can jit\n // provision and kickoff verification and session reset\n if (!email.match(EMAIL_REGEX)) {\n setErrorMessage(t({ id: 'error.invalidEmailAddress', message: 'Invalid email address' }));\n return;\n }\n setErrorMessage('');\n setIsSubmitting(true);\n readB2BInternals(stytch)\n .searchManager.searchMember(email, organization.organization_id)\n .then(({ member }) => {\n if (member) {\n setHideInput(false);\n setIsSubmitting(false);\n dispatch({ type: 'set_password_state', email });\n return;\n }\n // No member password flow: verify email and use reset by session\n handleNonMemberReset();\n })\n .catch((err: StytchAPIError) => {\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(err, t));\n });\n } else {\n // Discovery flow\n submitDiscoveryPassword();\n }\n };\n\n const onGetHelp = () => {\n dispatch({ type: 'set_password_state', email: email });\n dispatch({ type: 'transition', screen: AppScreens.PasswordForgotForm });\n };\n\n return (\n <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n <EmailInput email={email} setEmail={setEmail} />\n\n {!hideInput && (\n <PasswordInput password={password} setPassword={setPassword} type=\"current\" error={errorMessage} />\n )}\n\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n\n {!hideInput && (\n <Button variant=\"outline\" onClick={onGetHelp}>\n {t({ id: 'link.signupResetPassword', message: 'Sign up or reset password' })}\n </Button>\n )}\n </Column>\n );\n};\n","import React from 'react';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport Column from '../../components/atoms/Column';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport Typography from '../../components/atoms/Typography';\nimport Button from '../../components/atoms/Button';\nimport { PasswordInput } from '../../components/molecules/PasswordInput';\nimport { EMAIL_REGEX } from '../../../utils';\nimport { usePasswordInput } from '../usePasswordInput';\nimport { useLingui } from '@lingui/react/macro';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\n\nexport const PasswordsAuthenticate = () => {\n const [, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n\n const {\n email,\n setEmail,\n password,\n setPassword,\n organization,\n errorMessage,\n setErrorMessage,\n isSubmitting,\n submitPassword,\n submitDiscoveryPassword,\n } = usePasswordInput();\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n if (!email.match(EMAIL_REGEX)) {\n setErrorMessage(t({ id: 'error.invalidEmailAddress', message: 'Invalid email address' }));\n } else {\n if (!organization) {\n submitDiscoveryPassword();\n } else {\n submitPassword(organization.organization_id);\n }\n }\n };\n\n const onGetHelp = () => {\n dispatch({ type: 'set_password_state', email: email });\n dispatch({ type: 'transition', screen: AppScreens.PasswordForgotForm });\n };\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'password.login.title', message: 'Log in with email and password' })}\n </Typography>\n\n <Column as=\"form\" onSubmit={handleSubmit} gap={4}>\n <EmailInput email={email} setEmail={setEmail} />\n\n <PasswordInput password={password} setPassword={setPassword} type=\"current\" error={errorMessage} />\n\n <ButtonColumn>\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n\n <Button variant=\"outline\" onClick={onGetHelp}>\n {t({ id: 'link.signupResetPassword', message: 'Sign up or reset password' })}\n </Button>\n\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n </Column>\n );\n};\n","import { useConfig, useEventCallback, useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport React from 'react';\nimport Column from '../../components/atoms/Column';\nimport Button from '../../components/atoms/Button';\nimport Typography from '../../components/atoms/Typography';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport { EMAIL_REGEX } from '../../../utils';\nimport { readB2BInternals } from '../../../utils/internal';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport { usePasswordInput } from '../usePasswordInput';\nimport { useLingui } from '@lingui/react/macro';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\n\nexport const PasswordsForgotForm = () => {\n const [, dispatch] = useGlobalReducer();\n const config = useConfig();\n const onEvent = useEventCallback();\n const { t } = useLingui();\n\n const {\n stytch,\n email,\n setEmail,\n organization,\n errorMessage,\n setErrorMessage,\n isSubmitting,\n setIsSubmitting,\n handleNonMemberReset,\n } = usePasswordInput();\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n if (!email.match(EMAIL_REGEX)) {\n setErrorMessage(t({ id: 'error.invalidEmailAddress', message: 'Invalid email address' }));\n return;\n }\n setErrorMessage('');\n setIsSubmitting(true);\n if (organization) {\n readB2BInternals(stytch)\n .searchManager.searchMember(email, organization.organization_id)\n .then(({ member }) => {\n if (!member) {\n handleNonMemberReset();\n return;\n }\n // Member password flow: call reset password start instead\n stytch.passwords\n .resetByEmailStart({\n email_address: email,\n organization_id: organization.organization_id,\n login_redirect_url: config.emailMagicLinksOptions?.loginRedirectURL,\n reset_password_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n reset_password_expiration_minutes: config.passwordOptions?.resetPasswordExpirationMinutes,\n reset_password_template_id: config.passwordOptions?.resetPasswordTemplateId,\n verify_email_template_id: config.passwordOptions?.verifyEmailTemplateId,\n locale: config.passwordOptions?.locale,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordResetByEmailStart, data });\n dispatch({ type: 'set_password_state', email: email });\n dispatch({ type: 'transition', screen: AppScreens.PasswordSetNewConfirmation });\n })\n .catch((err: StytchAPIError) => {\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(err, t));\n });\n })\n .catch((err: StytchAPIError) => {\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(err, t));\n });\n } else {\n // Discovery password flow: call discovery reset password start instead. This flow doesn't need a member object\n stytch.passwords.discovery\n .resetByEmailStart({\n email_address: email,\n discovery_redirect_url: config.passwordOptions?.discoveryRedirectURL,\n reset_password_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n reset_password_expiration_minutes: config.passwordOptions?.resetPasswordExpirationMinutes,\n reset_password_template_id: config.passwordOptions?.resetPasswordTemplateId,\n verify_email_template_id: config.passwordOptions?.verifyEmailTemplateId,\n locale: config.passwordOptions?.locale,\n })\n .then(() => {\n setIsSubmitting(false);\n dispatch({ type: 'set_password_state', email: email });\n dispatch({ type: 'transition', screen: AppScreens.PasswordSetNewConfirmation });\n })\n .catch((err: StytchAPIError) => {\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(err, t));\n });\n }\n };\n\n return (\n <Column as=\"form\" gap={6} onSubmit={handleSubmit}>\n <Typography variant=\"header\">\n {t({ id: 'password.forgot.title', message: 'Check your email for help signing in' })}\n </Typography>\n <Typography variant=\"body\">\n {!organization\n ? t({\n id: 'password.forgot.content.discovery',\n message:\n \"We'll email you a verification link to sign up for an account or reset your password if you have one.\",\n })\n : t({\n id: 'password.forgot.content.organization',\n message:\n \"We'll email you a login link to sign in to your account directly or reset your password if you have one.\",\n })}\n </Typography>\n\n <EmailInput email={email} setEmail={setEmail} error={errorMessage} />\n\n <ButtonColumn>\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { Trans } from '@lingui/react';\nimport { StytchEventType } from '@stytch/core/public';\nimport { usePasswordInput } from '../usePasswordInput';\nimport { useConfig, useEventCallback, useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport EmailActionLayout from '../../components/molecules/EmailActionLayout';\n\nexport const PasswordSetNew = () => {\n const [, dispatch] = useGlobalReducer();\n const onEvent = useEventCallback();\n const config = useConfig();\n const { t } = useLingui();\n\n const { stytch, onError, email, organization, setIsSubmitting } = usePasswordInput();\n\n const resendResetPassword = () => {\n if (!organization) {\n return stytch.passwords.discovery\n .resetByEmailStart({\n email_address: email,\n discovery_redirect_url: config.passwordOptions?.discoveryRedirectURL,\n reset_password_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n reset_password_expiration_minutes: config.passwordOptions?.resetPasswordExpirationMinutes,\n reset_password_template_id: config.passwordOptions?.resetPasswordTemplateId,\n verify_email_template_id: config.passwordOptions?.verifyEmailTemplateId,\n locale: config.passwordOptions?.locale,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordDiscoveryResetStart, data });\n });\n } else {\n return stytch.passwords\n .resetByEmailStart({\n email_address: email,\n organization_id: organization.organization_id,\n login_redirect_url: config.passwordOptions?.loginRedirectURL,\n reset_password_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n reset_password_expiration_minutes: config.passwordOptions?.resetPasswordExpirationMinutes,\n reset_password_template_id: config.passwordOptions?.resetPasswordTemplateId,\n verify_email_template_id: config.passwordOptions?.verifyEmailTemplateId,\n locale: config.passwordOptions?.locale,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordResetByEmailStart, data });\n })\n .catch((e: Error) => {\n onError(e);\n throw e;\n });\n }\n };\n\n return (\n <EmailActionLayout\n header={t({ id: 'password.reset.emailSent.title', message: 'Check your email' })}\n description={\n <Trans\n id=\"password.reset.emailSent.content\"\n message=\"A login link was sent to you at <bold>{email}</bold>.\"\n components={{ bold: <b /> }}\n values={{ email }}\n />\n }\n resend={resendResetPassword}\n goBack={() => dispatch({ type: 'transition', screen: AppScreens.Main })}\n />\n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport { useConfig, useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { debounce, noop } from '../../../utils';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport Button from '../../components/atoms/Button';\nimport { PasswordInput } from '../../components/molecules/PasswordInput';\nimport { readB2BInternals } from '../../../utils/internal';\nimport { B2BSubscriptionDataLayer } from '../../../SubscriptionService';\nimport { onAuthenticateSuccess, useBootstrap as useB2BBootstrap } from '../utils';\nimport { useLingui } from '@lingui/react/macro';\n\nimport { getNewPasswordProps, PasswordError, PasswordErrorProps } from '../../components/molecules/PasswordError';\nimport { clearStytchTokenParams } from '../../../utils/createAuthUrlHandler';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport EmailInput from '../../components/molecules/EmailInput';\n\nexport const PasswordResetForm = () => {\n const stytchClient = useStytch();\n const config = useConfig();\n const [, dispatch] = useGlobalReducer();\n const bootstrap = useB2BBootstrap();\n const { t } = useLingui();\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const [resetToken, resetTokenType] = useMemo(() => {\n const parsed = stytchClient.parseAuthenticateUrl();\n if (!parsed) return ['', ''];\n return [parsed.token, parsed.tokenType];\n }, [stytchClient]);\n\n const dataLayer = readB2BInternals(stytchClient).dataLayer as B2BSubscriptionDataLayer;\n const email = dataLayer.getItem('reset-email-value');\n const [password, setPassword] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [passwordError, setPasswordError] = useState<PasswordErrorProps>({ policy: 'notLoaded' });\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const updateStrengthCheck = useMemo(\n () =>\n debounce((password: string) => {\n setErrorMessage('');\n return stytchClient.passwords\n .strengthCheck({ password })\n .then(({ score, valid_password, zxcvbn_feedback, luds_feedback, strength_policy, breached_password }) => {\n const common = {\n passwordInvalid: !valid_password,\n isPasswordBreached: breached_password,\n };\n\n if (strength_policy === 'zxcvbn') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n passwordScore: score,\n passwordWarning: zxcvbn_feedback.warning,\n passwordSuggestions: zxcvbn_feedback.suggestions,\n });\n } else if (strength_policy === 'luds') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n missingCharacters: luds_feedback.missing_characters,\n missingComplexity: luds_feedback.missing_complexity,\n });\n }\n })\n .catch((e: StytchAPIError) => {\n setErrorMessage(getTranslatedError(e, t));\n });\n }),\n [stytchClient.passwords, t],\n );\n\n useEffect(() => {\n if (resetTokenType === 'multi_tenant_magic_links') {\n stytchClient.magicLinks\n .authenticate({\n magic_links_token: resetToken,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n locale: config.emailMagicLinksOptions?.locale,\n })\n .then((data) => {\n clearStytchTokenParams();\n dispatch({\n type: 'primary_authenticate_success',\n response: data,\n includedMfaMethods: config.mfaProductInclude,\n resetTokenType,\n });\n })\n .catch((e: StytchAPIError) => {\n setErrorMessage(getTranslatedError(e, t));\n onError(e);\n });\n return;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, [resetTokenType]);\n\n const onPasswordChange = (password: string) => {\n setPassword(password);\n updateStrengthCheck(password);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setErrorMessage('');\n setIsSubmitting(true);\n\n if (resetTokenType == 'multi_tenant_passwords') {\n stytchClient.passwords\n .resetByEmail({\n password_reset_token: resetToken,\n password,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n locale: config.passwordOptions?.locale,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordResetByEmail, data });\n onAuthenticateSuccess(data, dispatch, config);\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n setIsSubmitting(false);\n });\n } else if (resetTokenType == 'discovery') {\n stytchClient.passwords.discovery\n .resetByEmail({\n password_reset_token: resetToken,\n password,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BDiscoveryPasswordReset, data });\n dispatch({ type: 'transition', screen: AppScreens.Discovery });\n dispatch({\n type: 'set_discovery_state',\n email: data.email_address,\n discoveredOrganizations: data.discovered_organizations,\n });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n setIsSubmitting(false);\n });\n } else {\n stytchClient.passwords\n .resetBySession({ password })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordResetBySession, data });\n dispatch({ type: 'transition', screen: AppScreens.LoggedIn });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n setIsSubmitting(false);\n });\n }\n };\n\n const passwordInputProps = getNewPasswordProps(bootstrap, passwordError.policy);\n\n return (\n <Column gap={6} as=\"form\" onSubmit={handleSubmit}>\n <Typography variant=\"header\">{t({ id: 'password.setNew.title', message: 'Set a new password' })}</Typography>\n\n <Column gap={2}>\n {email ? <EmailInput email={email} setEmail={noop} disabled /> : null}\n\n <PasswordInput\n password={password}\n setPassword={onPasswordChange}\n error={errorMessage}\n {...passwordInputProps}\n />\n\n <PasswordError bootstrap={bootstrap} {...passwordError} />\n\n <Button\n variant=\"primary\"\n loading={isSubmitting}\n type=\"submit\"\n disabled={passwordError.policy === 'notLoaded' || passwordError.passwordInvalid}\n >\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n </Column>\n </Column>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { Trans } from '@lingui/react';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport EmailActionLayout from '../../components/molecules/EmailActionLayout';\nimport { emailProviderInfo, EmailProviderLink } from '../../components/molecules/EmailProviderLink';\nimport { useEmailDomain } from './useEmailDomain';\nimport Button from '../../components/atoms/Button';\n\nexport const PasswordResetConfirmation = () => {\n const { t } = useLingui();\n\n const [state, dispatch] = useGlobalReducer();\n const emailDomain = useEmailDomain();\n const email = state.formState.passwordState.email;\n\n const reset = () => {\n dispatch({ type: 'set_user_supplied_email', email: '' });\n dispatch({ type: 'transition', screen: AppScreens.Main });\n };\n\n return (\n <EmailActionLayout\n header={t({\n id: 'password.verification.title',\n message: 'Verify your email first.',\n })}\n description={\n <Trans\n id=\"password.verification.content\"\n message=\"A login link was sent to you at <bold>{email}</bold>.\"\n components={{ bold: <b /> }}\n values={{ email }}\n />\n }\n additionalActions={\n <>\n <EmailProviderLink emailDomain={emailDomain} providerInfo={emailProviderInfo.gmail} />\n <EmailProviderLink emailDomain={emailDomain} providerInfo={emailProviderInfo.outlook} />\n <Button variant=\"ghost\" onClick={reset}>\n {t({ id: 'button.retry', message: 'Try again' })}\n </Button>\n </>\n }\n />\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport Button from '../../components/atoms/Button';\n\nconst UsePasswordButton = ({ email }: { email: string }) => {\n const [, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n\n const handleUsePassword = () => {\n dispatch({ type: 'use_password_auth', email });\n };\n\n return (\n <Button variant=\"ghost\" onClick={handleUsePassword}>\n {t({ id: 'button.usePassword', message: 'Use a password instead' })}\n </Button>\n );\n};\n\nexport default UsePasswordButton;\n","import { StytchAPIError } from '@stytch/core/public';\nimport React, { useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { useEffectiveAuthConfig } from '../hooks/useEffectiveAuthConfig';\nimport { useEmailOtpDiscoverySend } from '../hooks/useEmailOtpDiscoverySend';\nimport { useEmailOtpLoginOrSignup } from '../hooks/useEmailOtpLoginOrSignup';\nimport { useEmlDiscoverySend } from '../hooks/useEmlDiscoverySend';\nimport { useEmlLoginOrSignup } from '../hooks/useEmlLoginOrSignup';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\n\nimport UsePasswordButton from '../components/UsePasswordButton';\nimport Column from '../../components/atoms/Column';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport Button from '../../components/atoms/Button';\nimport { hasProduct } from '../utils';\n\nconst JIT_PROVISIONING_ERRORS = ['email_jit_provisioning_not_allowed', 'invalid_email_for_jit_provisioning'];\n\nconst useParseErrorMessage = () => {\n const { t } = useLingui();\n return (error: StytchAPIError, { email, org: organizationName }: { email: string; org: string }) => {\n if (JIT_PROVISIONING_ERRORS.includes(error.error_type)) {\n return t({\n id: 'error.jitIneligible',\n message: `${email} does not have access to ${organizationName}. If you think this is a mistake, contact your admin`,\n });\n }\n return getTranslatedError(error, t);\n };\n};\n\nexport const EmailForm = ({ showPasswordButton }: { showPasswordButton: boolean }) => {\n const [state, dispatch] = useGlobalReducer();\n const [emailInput, setEmailInput] = useState(state.formState.passwordState.email);\n const parseErrorMessage = useParseErrorMessage();\n const { t } = useLingui();\n\n const { products } = useEffectiveAuthConfig();\n const enableEml = hasProduct(products, 'emailMagicLinks');\n const enableOtp = hasProduct(products, 'emailOtp');\n\n const providedEmail = state.primary.email;\n const email = providedEmail || emailInput;\n\n const { trigger: stytchEmlLoginOrSignup, error: emlError, isMutating: emlIsMutating } = useEmlLoginOrSignup();\n const { trigger: stytchOtpLoginOrSignup, error: otpError, isMutating: otpIsMutating } = useEmailOtpLoginOrSignup();\n\n const isMutating = emlIsMutating || otpIsMutating;\n const error = emlError || otpError;\n\n const organization = state.flowState.organization;\n if (!organization) return <></>;\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n dispatch({ type: 'set_user_supplied_email', email });\n\n if (enableEml && enableOtp) {\n dispatch({ type: 'transition', screen: AppScreens.EmailMethodSelection, history: 'push' });\n } else if (enableEml) {\n stytchEmlLoginOrSignup({ email, organization_id: organization.organization_id });\n } else if (enableOtp) {\n stytchOtpLoginOrSignup({ email, organization_id: organization.organization_id });\n }\n };\n\n if (providedEmail) {\n return (\n <Column gap={2}>\n {products\n .filter((product) => product.id === 'emailMagicLinks' || product.id === 'emailOtp')\n .map((product) => {\n switch (product.id) {\n case 'emailMagicLinks':\n return (\n <Button\n key={product.id}\n onClick={() => {\n dispatch({ type: 'set_user_supplied_email', email });\n stytchEmlLoginOrSignup({ email, organization_id: organization.organization_id });\n }}\n loading={emlIsMutating}\n disabled={isMutating}\n variant=\"outline\"\n >\n {t({ id: 'button.emailLink', message: 'Email me a link' })}\n </Button>\n );\n\n case 'emailOtp':\n return (\n <Button\n key={product.id}\n onClick={() => {\n dispatch({ type: 'set_user_supplied_email', email });\n stytchOtpLoginOrSignup({ email, organization_id: organization.organization_id });\n }}\n loading={otpIsMutating}\n disabled={isMutating}\n variant=\"outline\"\n >\n {t({ id: 'button.emailCode', message: 'Email me a code' })}\n </Button>\n );\n }\n })}\n\n {showPasswordButton && <UsePasswordButton email={email} />}\n </Column>\n );\n }\n\n return (\n <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n <EmailInput\n email={email}\n setEmail={setEmailInput}\n hideLabel\n error={error ? parseErrorMessage(error, { email, org: organization.organization_name }) : undefined}\n />\n\n <Button type=\"submit\" variant=\"primary\" loading={isMutating}>\n {t({ id: 'button.continueWithEmail', message: 'Continue with email' })}\n </Button>\n\n {showPasswordButton && <UsePasswordButton email={email} />}\n </Column>\n );\n};\n\nexport const EmailDiscoveryForm = ({ showPasswordButton }: { showPasswordButton: boolean }) => {\n const [state, dispatch] = useGlobalReducer();\n const [email, setEmail] = useState(state.formState.passwordState.email);\n const { t } = useLingui();\n\n const { products } = useEffectiveAuthConfig();\n const enableEml = products.some((p) => p.id === 'emailMagicLinks');\n const enableOtp = products.some((p) => p.id === 'emailOtp');\n\n const { trigger: stytchEmlDiscoverySend, error: emlError, isMutating: emlIsMutating } = useEmlDiscoverySend();\n const { trigger: stytchOtpDiscoverySend, error: otpError, isMutating: otpIsMutating } = useEmailOtpDiscoverySend();\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n dispatch({ type: 'set_user_supplied_email', email });\n\n if (enableEml && enableOtp) {\n dispatch({ type: 'transition', screen: AppScreens.EmailMethodSelection, history: 'push' });\n } else if (enableEml) {\n stytchEmlDiscoverySend({ email });\n } else if (enableOtp) {\n stytchOtpDiscoverySend({ email });\n }\n };\n\n const isMutating = emlIsMutating || otpIsMutating;\n const error = emlError || otpError;\n\n return (\n <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n <EmailInput\n email={email}\n setEmail={setEmail}\n hideLabel\n error={error ? getTranslatedError(error, t) : undefined}\n />\n\n <Button type=\"submit\" variant=\"primary\" loading={isMutating}>\n {t({ id: 'button.continueWithEmail', message: 'Continue with email' })}\n </Button>\n\n {showPasswordButton && <UsePasswordButton email={email} />}\n </Column>\n );\n};\n","export const assertUnreachable: (_: never) => never = () => {\n throw new Error('Assertion failure');\n};\n","import React from 'react';\nimport { B2BOAuthProviders, AuthFlowType } from '@stytch/core/public';\nimport { arrayUtils } from '@stytch/core';\nimport { useLingui } from '@lingui/react/macro';\n\nimport { useConfig, useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens, ButtonComponent, MainScreenComponent } from '../types/AppScreens';\nimport { OauthProviderParams, useEffectiveAuthConfig } from '../hooks/useEffectiveAuthConfig';\nimport { useProductComponents } from '../utils';\nimport { assertUnreachable } from '../../../utils/assertUnreachable';\nimport { AuthButton as AuthButtonType, getButtonId, getSsoMethodKey } from '../types/authMethodKeys';\nimport { useLastUsedAuthMethod } from '../hooks/useLastUsedAuthMethod';\nimport Button from '../../components/atoms/Button';\nimport LastUsed from '../../components/molecules/LastUsed';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\n\n// OAuth helper functions\nexport const getCustomScopesForProvider = (\n oauthProvider: {\n type: B2BOAuthProviders;\n one_tap: boolean;\n customScopes: string[];\n providerParams: Record<string, string>;\n cancel_on_tap_outside?: boolean;\n },\n oauthOptionsCustomScopes: string[] | undefined,\n) => {\n let currentCustomScopes = oauthProvider.customScopes;\n if (Object.keys(currentCustomScopes).length == 0) {\n currentCustomScopes = oauthOptionsCustomScopes as string[];\n }\n return currentCustomScopes;\n};\n\nexport const getProviderParamsForProvider = (\n oauthProvider: {\n type: B2BOAuthProviders;\n one_tap: boolean;\n customScopes: string[];\n providerParams: Record<string, string>;\n cancel_on_tap_outside?: boolean;\n },\n oauthOptionsProviderParams: Record<string, string> | undefined,\n email: string | undefined,\n) => {\n let currentProviderParams = oauthProvider.providerParams;\n if (Object.keys(currentProviderParams).length == 0) {\n currentProviderParams = oauthOptionsProviderParams ?? {};\n }\n\n if (\n email &&\n (oauthProvider.type === B2BOAuthProviders.Google || oauthProvider.type === B2BOAuthProviders.Microsoft) &&\n !('login_hint' in currentProviderParams)\n ) {\n currentProviderParams = {\n ...currentProviderParams,\n login_hint: email,\n };\n }\n\n return currentProviderParams;\n};\n\nexport const SsoAndOAuthButtons = ({ buttons }: { buttons: ButtonComponent[] }) => {\n const { t } = useLingui();\n const [state, dispatch] = useGlobalReducer();\n const { oauthProviderSettings = [] } = useEffectiveAuthConfig();\n\n const [lastUsedMethod, setLastUsedMethod] = useLastUsedAuthMethod();\n\n const config = useConfig();\n const { loginRedirectURL, signupRedirectURL, discoveryRedirectURL, customScopes, providerParams } =\n config.oauthOptions ?? {};\n\n const { B2BGoogleOneTap, OAuthB2BButton, SSOButton } = useProductComponents(config, 'ssoAndOAuthButtons')!;\n\n // Determine which buttons need to be displayed\n const isDiscoveryFlow = state.flowState.type === AuthFlowType.Discovery;\n const authButtons = buttons.flatMap<AuthButtonType>((button) => {\n if (button === MainScreenComponent.OAuthButtons) {\n return oauthProviderSettings.map((provider) => ({ type: 'oauth', provider }));\n } else if (button === MainScreenComponent.SSOButtons) {\n return isDiscoveryFlow\n ? { type: 'sso-discovery' }\n : (state.flowState.organization?.sso_active_connections?.map((connection) => ({ type: 'sso', connection })) ??\n []);\n } else {\n assertUnreachable(button);\n }\n });\n\n if (authButtons.length === 0) {\n return null;\n }\n\n // Reorder providers based on last used\n const [reorderedButtons, foundLastUsedOAuth] = arrayUtils.moveToFront(\n authButtons,\n (button) => getButtonId(button) === lastUsedMethod,\n );\n\n // Helper function to create OAuth button component\n const createOAuthButton = (oauthProvider: OauthProviderParams) => {\n const providerProps = {\n customScopes: getCustomScopesForProvider(oauthProvider, customScopes),\n providerParams: getProviderParamsForProvider(oauthProvider, providerParams, state.primary.email),\n };\n\n if (oauthProvider.one_tap) {\n return (\n <B2BGoogleOneTap\n key={oauthProvider.type}\n {...providerProps}\n cancelOnTapOutside={oauthProvider.cancel_on_tap_outside}\n />\n );\n }\n\n return (\n <OAuthB2BButton\n key={oauthProvider.type}\n providerType={oauthProvider.type}\n loginRedirectUrl={loginRedirectURL}\n signupRedirectUrl={signupRedirectURL}\n discoveryRedirectUrl={discoveryRedirectURL}\n onSuccess={() => setLastUsedMethod(oauthProvider.type)}\n {...providerProps}\n />\n );\n };\n\n return (\n <ButtonColumn>\n {reorderedButtons.map((button, index) => {\n const buttonComponent = (() => {\n switch (button.type) {\n case 'oauth':\n return createOAuthButton(button.provider);\n\n case 'sso':\n return (\n <SSOButton\n key={button.connection.display_name}\n connection={button.connection}\n onStart={() => setLastUsedMethod(getSsoMethodKey(button.connection))}\n />\n );\n\n case 'sso-discovery':\n return (\n <Button\n key=\"sso-discovery\"\n variant=\"outline\"\n onClick={() => {\n dispatch({ type: 'transition', screen: AppScreens.SSODiscoveryEmail, history: 'push' });\n }}\n >\n {t({ id: 'provider.continueWithSSO', message: 'Use single sign-on' })}\n </Button>\n );\n\n default:\n assertUnreachable(button);\n }\n })();\n\n return foundLastUsedOAuth && index === 0 ? (\n <LastUsed key={getButtonId(button)}>{buttonComponent}</LastUsed>\n ) : (\n buttonComponent\n );\n })}\n </ButtonColumn>\n );\n};\n","import {\n GithubIcon,\n HubspotIcon,\n SlackIcon,\n GmailIcon,\n GoogleIcon,\n MicrosoftIcon,\n OktaIcon,\n OutlookIcon,\n YahooIcon,\n} from '../../../assets/logo-color';\n\nexport const oauthIcons = {\n google: GoogleIcon,\n microsoft: MicrosoftIcon,\n hubspot: HubspotIcon,\n slack: SlackIcon,\n github: GithubIcon,\n};\n\nexport const ssoIcons = {\n google: GoogleIcon,\n microsoft: MicrosoftIcon,\n okta: OktaIcon,\n};\n\nexport const emailIcons = {\n gmail: GmailIcon,\n outlook: OutlookIcon,\n yahoo: YahooIcon,\n};\n\nexport type IconNames =\n | keyof typeof oauthIcons //\n | keyof typeof ssoIcons\n | keyof typeof emailIcons;\n","'use client';\n\nimport React from 'react';\nimport { StytchB2BProduct } from './StytchB2BProduct';\nimport { AppScreens } from './types/AppScreens';\nimport { MainScreenComponent } from './types/AppScreens';\nimport { EmailConfirmation } from './screens/EmailConfirmation';\nimport { EmailMethodSelectionScreen } from './screens/EmailMethodSelectionScreen';\nimport { EmailOTPEntryScreen } from './screens/EmailOTPEntryScreen';\nimport { SSODiscoveryEmail } from './screens/SSODiscoveryEmail';\nimport { SSODiscoveryMenu } from './screens/SSODiscoveryMenu';\nimport { SSODiscoveryFallback } from './screens/SSODiscoveryFallback';\nimport { PasswordsEmailForm } from './screens/PasswordEmailForm';\nimport { PasswordsAuthenticate } from './screens/PasswordAuthenticate';\nimport { PasswordsForgotForm } from './screens/PasswordForgotForm';\nimport { PasswordSetNew } from './screens/PasswordSetNew';\nimport { PasswordResetForm } from './screens/PasswordResetForm';\nimport { PasswordResetConfirmation } from './screens/PasswordResetConfirmation';\nimport { EmailForm, EmailDiscoveryForm } from './screens/EmailForm';\nimport { SsoAndOAuthButtons } from './screens/SsoAndOAuthButtons';\nimport { SSOButton } from './components/SSOButton';\nimport { OAuthB2BButton } from './components/OAuthB2BButton';\nimport { B2BGoogleOneTap } from './components/B2BOneTap';\nimport { emailIcons, oauthIcons, ssoIcons } from './components/Icons';\n\nconst EmailFormWithoutPassword = () => <EmailForm showPasswordButton={false} />;\nconst EmailFormWithPassword = () => <EmailForm showPasswordButton />;\nconst EmailDiscoveryFormWithoutPassword = () => <EmailDiscoveryForm showPasswordButton={false} />;\nconst EmailDiscoveryFormWithPassword = () => <EmailDiscoveryForm showPasswordButton />;\n\nexport const emailMagicLinks: StytchB2BProduct = {\n id: 'emailMagicLinks',\n screens: {\n [AppScreens.EmailConfirmation]: EmailConfirmation,\n [AppScreens.EmailMethodSelection]: EmailMethodSelectionScreen,\n },\n mainScreen: {\n [MainScreenComponent.EmailForm]: EmailFormWithoutPassword,\n [MainScreenComponent.EmailDiscoveryForm]: EmailDiscoveryFormWithoutPassword,\n [MainScreenComponent.PasswordEmailCombined]: EmailFormWithPassword,\n [MainScreenComponent.PasswordEmailCombinedDiscovery]: EmailDiscoveryFormWithPassword,\n },\n icons: emailIcons,\n};\n\nexport const emailOtp: StytchB2BProduct = {\n id: 'emailOtp',\n screens: {\n [AppScreens.EmailOTPEntry]: EmailOTPEntryScreen,\n [AppScreens.EmailMethodSelection]: EmailMethodSelectionScreen,\n [AppScreens.EmailConfirmation]: EmailConfirmation,\n },\n mainScreen: {\n [MainScreenComponent.EmailForm]: EmailFormWithoutPassword,\n [MainScreenComponent.EmailDiscoveryForm]: EmailDiscoveryFormWithoutPassword,\n [MainScreenComponent.PasswordEmailCombined]: EmailFormWithPassword,\n [MainScreenComponent.PasswordEmailCombinedDiscovery]: EmailDiscoveryFormWithPassword,\n },\n icons: emailIcons,\n};\n\nexport const sso: StytchB2BProduct = {\n id: 'sso',\n screens: {\n [AppScreens.SSODiscoveryEmail]: SSODiscoveryEmail,\n [AppScreens.SSODiscoveryMenu]: SSODiscoveryMenu,\n [AppScreens.SSODiscoveryFallback]: SSODiscoveryFallback,\n },\n ssoAndOAuthButtons: {\n SsoAndOAuthButtons,\n SSOButton,\n },\n icons: ssoIcons,\n};\n\nexport const passwords: StytchB2BProduct = {\n id: 'passwords',\n screens: {\n [AppScreens.PasswordEmailForm]: PasswordsEmailForm,\n [AppScreens.PasswordAuthenticate]: PasswordsAuthenticate,\n [AppScreens.PasswordForgotForm]: PasswordsForgotForm,\n [AppScreens.PasswordSetNewConfirmation]: PasswordSetNew,\n [AppScreens.PasswordResetForm]: PasswordResetForm,\n [AppScreens.PasswordResetVerifyConfirmation]: PasswordResetConfirmation,\n },\n mainScreen: {\n [MainScreenComponent.PasswordsEmailForm]: PasswordsEmailForm,\n [MainScreenComponent.PasswordEmailCombined]: EmailFormWithPassword,\n [MainScreenComponent.PasswordEmailCombinedDiscovery]: EmailDiscoveryFormWithPassword,\n },\n icons: emailIcons,\n};\n\nexport const oauth: StytchB2BProduct = {\n id: 'oauth',\n screens: {},\n ssoAndOAuthButtons: {\n SsoAndOAuthButtons,\n B2BGoogleOneTap,\n OAuthB2BButton,\n },\n icons: oauthIcons,\n};\n","import { useSyncExternalStore } from 'react';\nimport { useStytch } from '../GlobalContextProvider';\nimport { Member } from '@stytch/core/public';\n\n// useStytchMember is a very lightweight copy-pasta of the hook from stytch-react\n// If we end up calling this in several places, consider hoisting to global context\nexport const useStytchMember = (): Member | null => {\n const stytch = useStytch();\n return useSyncExternalStore(stytch.onStateChange, () => stytch.self.getSync());\n};\n","import React, { ReactNode, useEffect, useRef, useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { useStytchMember } from '../hooks/useStytchMember';\nimport { IDPConsent, useIDPState } from '../../components/organisms/IDPConsent';\nimport { useErrorCallback, useEventCallback, useStytch } from '../GlobalContextProvider';\nimport { useBootstrap } from '../utils';\nimport { ErrorDisplay } from '../../components/molecules/ErrorScreen';\nimport { NoCurrentSessionError } from '@stytch/core/public';\nimport { OAuthAuthorizeParams, OAuthLogoutParams, parseIDPParams } from '../../../utils/idpHelpers';\nimport { IDPLogout, useLogoutState } from '../../components/organisms/IDPLogout';\nimport { useTrustedAuthTokenParams } from '../../components/organisms/IDPContextProvider';\nimport { AuthTokenParams } from '../../../types';\nimport { LoadingScreen } from '../../components/molecules/Loading';\nimport MainContainer from '../../components/molecules/MainContainer';\nimport { usePresentation } from '../../components/PresentationConfig';\n\nconst IDPConsentScreenImpl = ({\n initialError,\n initialParams,\n}: {\n initialError: string | null;\n initialParams: OAuthAuthorizeParams;\n}) => {\n const stytchClient = useStytch();\n const onError = useErrorCallback();\n const onEvent = useEventCallback();\n const { oauthAuthorizeStart, oauthAuthorizeSubmit } = stytchClient.idp;\n\n // TODO: Consumer and B2B Bootstrap hooks should return same shape\n const bootstrap = useBootstrap();\n\n const idpConsentState = useIDPState({\n initialError,\n initialParams,\n oauthAuthorizeStart,\n oauthAuthorizeSubmit,\n onError,\n onEvent,\n });\n\n return <IDPConsent bootstrap={bootstrap} bootstrapNotLoaded={false} {...idpConsentState} />;\n};\n\nconst IDPLogoutScreenImpl = ({\n initialError,\n initialParams,\n navigate,\n}: {\n initialError: string | null;\n initialParams: OAuthLogoutParams;\n navigate?: (href: string) => void;\n}) => {\n const stytchClient = useStytch();\n const onError = useErrorCallback();\n const { oauthLogoutStart } = stytchClient.idp;\n const revokeSession = () => stytchClient.session.revoke({ forceClear: true });\n\n const bootstrap = useBootstrap();\n const idpLogoutState = useLogoutState({\n initialError,\n initialParams,\n oauthLogoutStart,\n revokeSession,\n onError,\n navigate,\n });\n\n return <IDPLogout {...idpLogoutState} bootstrap={bootstrap} bootstrapNotLoaded={false} />;\n};\n\nexport const IDPConsentScreen = ({\n searchParams = window.location.search,\n navigate,\n}: {\n searchParams?: string;\n navigate?: (href: string) => void;\n} = {}) => {\n // Preserve the URL Params seen on first render - even if they change later\n const [{ flow, error }] = useState(parseIDPParams(searchParams));\n const { theme, displayWatermark } = usePresentation();\n\n let content;\n if (flow.type === 'Authorize') {\n content = (\n <EnsureMemberIsLoggedIn>\n <IDPConsentScreenImpl initialError={error} initialParams={flow.params} />\n </EnsureMemberIsLoggedIn>\n );\n } else if (flow.type === 'Logout') {\n content = <IDPLogoutScreenImpl initialError={error} initialParams={flow.params} navigate={navigate} />;\n }\n\n return (\n <MainContainer theme={theme} displayWatermark={displayWatermark}>\n {content}\n </MainContainer>\n );\n};\n\nconst EnsureMemberIsLoggedIn = ({ children }: { children: ReactNode }) => {\n const { t } = useLingui();\n const member = useStytchMember();\n const onError = useErrorCallback();\n const onErrorRef = useRef(onError);\n useEffect(() => {\n onErrorRef.current = onError;\n }, [onError]);\n\n // if a trusted auth token is provided, attest it before rendering the consent screen\n const stytchClient = useStytch();\n const authParams = useTrustedAuthTokenParams();\n const [attesting, setAttesting] = useState(false);\n const [attested, setAttested] = useState(false);\n\n useEffect(() => {\n if (attesting || attested) return;\n\n const attestTrustedToken = async (authParams: AuthTokenParams | undefined): Promise<void> => {\n if (authParams?.trustedAuthToken && authParams?.tokenProfileID) {\n setAttesting(true);\n const token = authParams.trustedAuthToken;\n const profile_id = authParams.tokenProfileID;\n\n // revoke the current session before calling attest\n // store the member to refer to its organization_id later\n const member = stytchClient.self.getSync();\n if (member) {\n await stytchClient.session.revoke();\n }\n try {\n await stytchClient.session.attest({\n token,\n profile_id,\n organization_id: member?.organization_id,\n session_duration_minutes: 60,\n });\n } catch (error) {\n onErrorRef.current(error as Error);\n } finally {\n setAttesting(false);\n setAttested(true);\n }\n }\n // set this either way to short-circuit the useEffect below\n setAttested(true);\n };\n attestTrustedToken(authParams);\n }, [authParams, attesting, attested, stytchClient]);\n\n useEffect(() => {\n if (member) return;\n onErrorRef.current(new NoCurrentSessionError());\n }, [member]);\n\n if (attesting) {\n return <LoadingScreen />;\n } else if (member) {\n return children;\n } else {\n return (\n <ErrorDisplay\n text={t({\n id: 'idpConsent.noActiveSession',\n message: 'No active session detected. Please log in to continue.',\n })}\n />\n );\n }\n};\n","import React, { useEffect } from 'react';\nimport { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { B2BIDPSDKConfig, B2BSDKConfig, DeprecatedSDKConfig, StytchB2BExtendedLoginConfig } from '../../types';\nimport { InternalAppContainer } from './InternalAppContainer';\nimport * as B2BProducts from './B2BProducts';\nimport { PresentationContext, usePresentationWithDefault } from '../components/PresentationConfig';\nimport { readB2BInternals } from '../../utils/internal';\nimport { DEFAULT_STATE, GlobalContextProvider } from './GlobalContextProvider';\nimport { IDPContextProvider } from '../components/organisms/IDPContextProvider';\nimport { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper';\nimport { messages } from '../../messages/b2b/en';\nimport { IDPConsentScreen } from './screens/IDPConsent';\nimport { logger, RUN_IN_DEV } from '@stytch/core';\n\n/**\n * Wrapper to add default organizationProducts value. This is done to preserve the ability for a future\n * component that doesn't do this, allowing B2B products to be properly tree-shaken (which is also why this is currently\n * in a completely different file)\n */\nexport const AppContainer = ({\n config,\n styles,\n ...props\n}: B2BSDKConfig<StytchProjectConfigurationInput> & DeprecatedSDKConfig) => {\n RUN_IN_DEV(() => {\n if (styles) {\n logger.error(\n 'styles is deprecated and has no effect. Use the presentation prop instead.\\n' +\n 'See https://staging.stytch.com/docs/api-reference/b2b/frontend-sdks/react/upgrade-guide',\n );\n }\n });\n\n const internalConfig = {\n ...config,\n organizationProducts: Object.values(B2BProducts),\n };\n\n return <InternalAppContainer config={internalConfig} {...props}></InternalAppContainer>;\n};\n\nexport const B2BIDPContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n client,\n presentation,\n callbacks,\n strings,\n getIDPConsentManifest,\n trustedAuthTokenParams,\n styles,\n}: B2BIDPSDKConfig<TProjectConfiguration> & DeprecatedSDKConfig) => {\n const presentationValue = usePresentationWithDefault(presentation, false, []);\n\n useEffect(() => {\n readB2BInternals(client)\n .bootstrap.getAsync()\n .then((data) => {\n readB2BInternals(client).networkClient.logEvent({\n name: 'render_b2b_idp_screen',\n details: { bootstrap: data },\n });\n });\n }, [client]);\n\n RUN_IN_DEV(() => {\n if (styles) {\n logger.error(\n 'styles is deprecated and has no effect. Use the presentation prop instead.\\n' +\n 'See https://staging.stytch.com/docs/api-reference/b2b/frontend-sdks/react/upgrade-guide',\n );\n }\n });\n\n return (\n <GlobalContextProvider\n client={client}\n config={{} as StytchB2BExtendedLoginConfig}\n callbacks={callbacks}\n initialState={DEFAULT_STATE}\n >\n <IDPContextProvider consentManifestGenerator={getIDPConsentManifest} authTokenParams={trustedAuthTokenParams}>\n <PresentationContext.Provider value={presentationValue}>\n <I18nProviderWrapper messages={messages} overrides={strings}>\n <IDPConsentScreen />\n </I18nProviderWrapper>\n </PresentationContext.Provider>\n </IDPContextProvider>\n </GlobalContextProvider>\n );\n};\n","import React, { useLayoutEffect, useRef, useState } from 'react';\nimport { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { injectCssIntoNode, injectGlobalStyle } from '@stytch/internal-style-injector';\nimport { ComponentType } from 'react';\nimport { invariant } from '../utils/invariant';\nimport { useStytchB2BClient, useIsMounted__INTERNAL } from '../b2b/StytchB2BContext';\nimport { noProviderError, serverRenderError } from '../utils/errors';\nimport { StytchB2BClient } from '../../../b2b/StytchB2BClient';\nimport { StytchB2BUIConfig } from '../../../types';\nimport { createPortal } from 'react-dom';\n\n// Mirrors createB2CComponent and createWebComponent\nexport function createB2BComponent<\n Props extends {\n client: StytchB2BClient<TProjectConfiguration>;\n config?: StytchB2BUIConfig;\n },\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>(name: string, Component: ComponentType<Props>) {\n const Wrapped: ComponentType<Omit<Props, 'client'>> = (props) => {\n serverRenderError(name);\n invariant(useIsMounted__INTERNAL(), noProviderError(`<${name} />`));\n\n const client = useStytchB2BClient<TProjectConfiguration>();\n\n const shadow = props.config?.enableShadowDOM;\n const root = useRef<HTMLDivElement>(null);\n const [mountPoint, setMountPoint] = useState<HTMLDivElement>();\n\n useLayoutEffect(() => {\n if (shadow) {\n if (!root.current || root.current.shadowRoot) return;\n const shadowRoot = root.current.attachShadow({ mode: 'open' });\n const mountPoint = document.createElement('div');\n\n shadowRoot.appendChild(injectCssIntoNode());\n shadowRoot.appendChild(mountPoint);\n\n setMountPoint(mountPoint);\n } else {\n injectGlobalStyle();\n }\n }, [shadow]);\n\n const element = <Component {...(props as Props)} client={client} />;\n if (shadow) {\n return <div ref={root}>{mountPoint && createPortal(element, mountPoint)}</div>;\n } else {\n return element;\n }\n };\n\n Wrapped.displayName = name;\n return Wrapped;\n}\n","import { Callbacks, StringsOptions, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { PresentationConfig, StytchB2BUIConfig } from '../../../types';\nimport { AppContainer } from '../../b2b/App';\nimport { createB2BComponent } from '../bindings/createB2BComponent';\n\nexport interface StytchB2BProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> extends StringsOptions {\n /**\n * An optional {@link PresentationConfig} to customize the UI presentation.\n */\n presentation?: PresentationConfig;\n /**\n * An optional {@link Callbacks} object.\n *\n * @example\n * {\n * onError: ({message}) => {\n * console.error('Stytch error', message)\n * }\n * }\n *\n * @example\n * {\n * onEvent: ({type, data}) => {\n * if(type === StytchEventType.B2BMagicLinkAuthenticate) {\n * console.log('Logged in with', data);\n * }\n * }\n * }\n */\n callbacks?: Callbacks<TProjectConfiguration>;\n /**\n * A {@link StytchB2BUIConfig} object. Add products and product-specific config to this object to change the login methods shown.\n *\n *\n * @example\n * {\n * products: [B2BProducts.emailMagicLinks],\n * authFlowType: \"Discovery\",\n * emailMagicLinksOptions: {\n * discoveryRedirectURL: 'https://example.com/authenticate',\n * },\n * sessionOptions: {\n * sessionDurationMinutes: 60,\n * },\n * }\n *\n * @example\n * {\n * products: [B2BProducts.emailMagicLinks, B2BProducts.sso],\n * authFlowType: \"Organization\",\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * ssoOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * sessionOptions: {\n * sessionDurationMinutes: 60,\n * },\n * }\n */\n config: StytchB2BUIConfig;\n}\n\n/**\n * The Stytch B2B UI component.\n * This component can only be used with a Stytch B2B UI Client\n * passed into the StytchB2BProvider.\n *\n * See the {@link https://stytch.com/docs/b2b/sdks online reference}\n *\n * @example\n * <StytchB2B\n * config={{\n * authFlowType: \"Organization\",\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * ssoOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * sessionOptions: {\n * sessionDurationMinutes: 60,\n * }\n * }}\n * presentation={{\n * theme: { primary: '#0577CA' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchB2B = /* @__PURE__ */ createB2BComponent('StytchB2B', AppContainer);\n","import { StytchB2BProps } from './Stytch';\nimport { B2BIDPContainer } from '../../b2b/App';\nimport { createB2BComponent } from '../bindings/createB2BComponent';\nimport { AuthTokenParams, B2BIDPConsentManifestGenerator } from '../../../types';\n\nexport type B2BIdentityProviderProps = Omit<StytchB2BProps, 'config'> & {\n /**\n * Optional {@link B2BIDPConsentManifestGenerator} to customize the consent screen.\n */\n getIDPConsentManifest?: B2BIDPConsentManifestGenerator;\n /**\n * Optional trusted auth token parameters to attest before the OAuth flow.\n */\n trustedAuthTokenParams?: AuthTokenParams;\n};\n\n/**\n * The Stytch B2B IDP component.\n * Parses OAuth Authorization params (client_id, scope, nonce, etc.) out of the page URL.\n * Requires the user to be logged in.\n * This component can only be used with a Stytch B2B UI Client\n * passed into the StytchB2BProvider.\n *\n * See the {@link https://stytch.com/docs/b2b/sdks online reference}\n *\n * @example\n * <B2BIdentityProvider\n * presentation={{\n * theme: { primary: '#ff00f7' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const B2BIdentityProvider = /* @__PURE__ */ createB2BComponent('B2BIdentityProvider', B2BIDPContainer);\n","'use client';\n\nimport React, { ComponentType, ReactNode } from 'react';\n\nimport type { Member, MemberSession, Organization, StytchProjectConfigurationInput } from '@stytch/web/b2b';\nimport { StytchB2BClient } from '@stytch/web/b2b/headless';\n\nexport { useStytchB2BClient, withStytchB2BClient, withStytchPermissions } from '@stytch/web/react/b2b';\n\nimport {\n StytchB2BProvider as StytchB2BProviderShared,\n useStytchIsAuthorized as useStytchIsAuthorizedShared,\n useStytchMemberSession as useStytchMemberSessionShared,\n useStytchMember as useStytchMemberShared,\n useStytchOrganization as useStytchOrganizationShared,\n withStytchMemberSession as withStytchMemberSessionShared,\n withStytchMember as withStytchMemberShared,\n withStytchOrganization as withStytchOrganizationShared,\n} from '@stytch/web/react/b2b';\n\n/**\n * Returns the active Member.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the member data is from persistent storage.\n * @example\n * const {member, isInitialized, fromCache} = useStytchMember();\n * if (!isInitialized) {\n * return <p>Loading...</p>;\n * }\n * return (<h1>Welcome, {member.name}</h1>);\n */\nexport const useStytchMember = useStytchMemberShared as <TAssumeHydrated extends boolean = true>() => ReturnType<\n typeof useStytchMemberShared<TAssumeHydrated>\n>;\n\n/**\n * Returns the active member's Stytch member session.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the session data is from persistent storage.\n * @example\n * const {session, isInitialized, fromCache} = useStytchMemberSession();\n * useEffect(() => {\n * if (!isInitialized) {\n * return;\n * }\n * if (!session) {\n * router.replace('/login');\n * }\n * }, [session, isInitialized]);\n */\nexport const useStytchMemberSession = useStytchMemberSessionShared as <\n TAssumeHydrated extends boolean = true,\n>() => ReturnType<typeof useStytchMemberSessionShared<TAssumeHydrated>>;\n\n/**\n * Returns the active Stytch organization.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the organization data is from persistent storage.\n * @example\n * const {organization, isInitialized, fromCache} = useStytchOrganization();\n * if (!isInitialized) {\n * return <p>Loading...</p>;\n * }\n * return <p>Welcome to {organization.organization_name}</p>;\n */\nexport const useStytchOrganization = useStytchOrganizationShared as <\n TAssumeHydrated extends boolean = true,\n>() => ReturnType<typeof useStytchOrganizationShared<TAssumeHydrated>>;\n\n/**\n * Determines whether the logged-in member is allowed to perform the specified action on the specified resource.\n * Returns `true` if the member can perform the action, `false` otherwise.\n *\n * If the member is not logged in, this method will always return false.\n * If the resource or action provided are not valid for the configured RBAC policy, this method will return false.\n *\n * Remember - authorization checks for sensitive actions should always occur on the backend as well.\n * @example\n * const { isAuthorized } = useStytchIsAuthorized('documents', 'edit');\n * return <button disabled={!isAuthorized}>Edit</button>\n */\nexport const useStytchIsAuthorized = useStytchIsAuthorizedShared as <TAssumeHydrated extends boolean = false>(\n resourceId: string,\n action: string,\n) => ReturnType<typeof useStytchIsAuthorizedShared<TAssumeHydrated>>;\n\nexport const withStytchMember = withStytchMemberShared as <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & { stytchMember: Member | null; stytchMemberIsInitialized: boolean; stytchMemberIsFromCache: boolean }\n >,\n) => ReturnType<typeof withStytchMemberShared<T, TAssumeHydrated>>;\n\nexport const withStytchMemberSession = withStytchMemberSessionShared as <\n T extends object,\n TAssumeHydrated extends boolean = false,\n>(\n Component: ComponentType<\n T & {\n stytchMemberSession: MemberSession | null;\n stytchMemberSessionIsInitialized: boolean;\n stytchMemberSessionIsFromCache: boolean;\n }\n >,\n) => ReturnType<typeof withStytchMemberSessionShared<T, TAssumeHydrated>>;\n\nexport const withStytchOrganization = withStytchOrganizationShared as <\n T extends object,\n TAssumeHydrated extends boolean = false,\n>(\n Component: ComponentType<\n T & {\n stytchOrganization: Organization | null;\n stytchOrganizationIsInitialized: boolean;\n stytchOrganizationIsFromCache: boolean;\n }\n >,\n) => ReturnType<typeof withStytchOrganizationShared<T, TAssumeHydrated>>;\n\nexport interface StytchB2BProviderProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> {\n /**\n * A Stytch client instance, a {@link StytchB2BClient}\n */\n stytch: StytchB2BClient<TProjectConfiguration>;\n /**\n * When true, the provider will assume that the component will only be\n * rendered in a browser environment, either in a single-page application or\n * after completing hydration of a server-rendered application. This allows\n * cached values to be retrieved from the browser on the first render, meaning\n * that the `isInitialized` value returned from Stytch hooks will be `true`\n * starting from the first render.\n *\n * When `false`, the provider will defer initialization until after the first\n * render, and `isInitialized` will initially be `false`.\n *\n * If you encounter hydration errors relating to the use of this component,\n * set this to `false`.\n *\n * This value defaults to `true` in `@stytch/react`.\n */\n assumeHydrated?: boolean;\n children?: ReactNode;\n}\n\n/**\n * The Stytch Context Provider.\n * Wrap your application with this component in order to use Stytch everywhere in your app.\n * @example\n * const stytch = createStytchB2BClient('public-token-<find yours in the stytch dashboard>')\n *\n * ReactDOM.render(\n * <StytchB2BProvider stytch={stytch}>\n * <App />\n * </StytchProvider>,\n * document.getElementById('root'),\n * )\n */\nexport const StytchB2BProvider = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>({\n stytch,\n children,\n assumeHydrated = true,\n}: StytchB2BProviderProps<TProjectConfiguration>): JSX.Element => (\n <StytchB2BProviderShared stytch={stytch} assumeHydrated={assumeHydrated}>\n {children}\n </StytchB2BProviderShared>\n);\n","import { createStytchB2BClient } from '@stytch/web/b2b/headless';\n\n/**\n * @deprecated - use {@link createStytchB2BClient} instead\n */\nexport const createStytchB2BUIClient = createStytchB2BClient;\n\nexport {\n StytchB2BProvider,\n useStytchB2BClient,\n useStytchMemberSession,\n useStytchMember,\n useStytchIsAuthorized,\n useStytchOrganization,\n withStytchB2BClient,\n withStytchMemberSession,\n withStytchMember,\n withStytchOrganization,\n withStytchPermissions,\n} from './StytchB2BContext';\n\nexport * from '@stytch/web/b2b/headless';\nexport * from '@stytch/web/common';\nexport { StytchB2B, B2BIdentityProvider } from '@stytch/web/react/b2b';\nexport { B2BProducts } from '@stytch/web/b2b';\n\nexport type { StytchB2BProviderProps } from './StytchB2BContext';\nexport type { StytchB2BProps, B2BIdentityProviderProps } from '@stytch/web/react/b2b';\nexport type {\n B2BSDKConfig,\n B2BIDPSDKConfig,\n StytchB2BUIConfig,\n B2BIDPConsentManifestGenerator,\n Strings,\n} from '@stytch/web/b2b';\n"],"names":["SSOIcon","size","DEFAULT_ICON_SIZE","props","React","svg","width","height","viewBox","xmlns","g","clipPath","path","d","fill","stroke","strokeWidth","defs","id","rect","transform","HubspotIcon","fillRule","clipRule","OktaIcon","className","_styles","darkInvert","messages","_messages","useSWRConfig","useRef","useStateWithDeps","UNDEFINED","useCallback","serialize","mergeObjects","getTimestamp","useIsomorphicLayoutEffect","withMiddleware","useSWR","KeyToStytchEventMap","StytchEventType","B2BMagicLinkAuthenticate","B2BSSOAuthenticate","B2BSSODiscoverConnections","B2BMagicLinkDiscoveryAuthenticate","B2BDiscoveryOrganizationsCreate","B2BDiscoveryIntermediateSessionExchange","B2BMagicLinkEmailLoginOrSignup","B2BMagicLinkEmailDiscoverySend","B2BOAuthAuthenticate","B2BOAuthDiscoveryAuthenticate","B2BSMSOTPSend","B2BSMSOTPAuthenticate","B2BTOTPCreate","B2BTOTPAuthenticate","B2BRecoveryCodesRecover","B2BImpersonationAuthenticate","B2BOTPsEmailAuthenticate","B2BOTPsEmailDiscoveryAuthenticate","B2BOTPsEmailDiscoverySend","B2BOTPsEmailLoginOrSignup","B2BOrganizationsGetBySlug","getStytchEventByKey","key","useMutate","fetcher","options","onEvent","useEventCallback","onError","useErrorCallback","result","useSWRMutation","throwOnError","onSuccess","data","config","eventType","type","error","isMutating","undefined","useExtractSlug","state","dispatch","useGlobalReducer","pattern","setPattern","useState","useConfig","stytchClient","useStytch","slug","organizationSlug","extractFromPattern","window","location","href","trigger","isSearching","_","arg","organization","getBySlug","organization_slug","errorType","ErrorType","Organization","canGoBack","useEffect","readB2BInternals","bootstrap","getAsync","then","slugPattern","flowState","screen","AppScreens","Main","AuthFlowType","resultPending","useBootstrap","setBootstrap","getSync","onAuthenticateSuccess","response","includedMfaMethods","mfaProductInclude","onDiscoveryAuthenticateSuccess","email","email_address","discoveredOrganizations","discovered_organizations","url","URL","search","currentUrl","toString","trim","regexPattern","replace","regex","RegExp","match","hasProduct","products","product","some","p","useProductComponents","organizationProducts","screenType","useMemo","map","Object","assign","isButtonsComponent","component","MainScreenComponent","OAuthButtons","SSOButtons","generateProductComponentsOrdering","flowStateType","productsSet","Set","displayEmailAndPasswordsTogether","has","emailPasswordCombinedComponent","PasswordEmailCombined","PasswordEmailCombinedDiscovery","productComponentsSet","reduce","components","add","EmailForm","EmailDiscoveryForm","isSsoValid","Discovery","sso_active_connections","length","PasswordsEmailForm","Array","from","groups","i","arr","prevComponent","shouldJoinPreviousGroup","push","prevGroup","Divider","getParamsFromB2BOAuthProviderConfig","provider","providerType","oneTap","customScopes","providerParams","cancelOnTapOutside","B2BOAuthProviders","Google","one_tap","cancel_on_tap_outside","productsToAuthMethods","oauth","sso","emailMagicLinks","emailOtp","passwords","oauthProvidersToAuthMethods","Microsoft","HubSpot","Slack","GitHub","authMethodsToProducts","fromEntries","entries","authMethod","oauthMethodsToOauthProviders","method","authMethodToProduct","allOauthProviders","values","flattenConfigToAuthMethods","oauthProviders","flatMap","filter","isTruthy","useOAuthProviderConfigs","oauthOptions","providers","useRestrictedAuthMethods","primaryAuthMethods","primary","hasPrimaryAuthMethods","restrictedAuthMethods","auth_methods","allowed_auth_methods","useEffectiveAuthConfig","oauthProviderConfigs","flattenedConfiguredAuthMethods","authMethodsToShow","restrictedAuthMethodsInUiConfig","productIds","productId","find","oauthProviderSettings","oauthProvider","isButtonGroup","group","every","MainScreen","usePresentation","useLingui","emailVerified","isLoading","productComponentsOrdering","mainScreenComponents","SsoAndOAuthButtons","organizationName","organization_name","title","PasswordReset","showVerifyEmailCopy","LoadingScreen","Column","gap","hideHeaderText","Typography","variant","align","buttons","index","Component","ConfirmationScreen","useMountEffect","AuthenticateFlowComplete","Confirmation","Arrow","styles","arrow","OrganizationRow","action","onClick","organization_logo_url","logo","img","src","alt","div","role","button","classNames","organizationRow","hoverTriggerClass","buttonClassNames","left","nameText","VerticalTransition","rootClassName","right","rightContent","Badge","secondary","isJoinViaJitType","DiscoverNoOrganizations","createOrganizationEnabled","goBack","stytchCreateOrganization","isCreateLoading","discovery","organizations","create","session_duration_minutes","sessionOptions","sessionDurationMinutes","error_type","OrganizationDiscoveryClaimedDomain","Default","shouldAutomaticallyCreateOrganization","directCreateOrganizationForNoMembership","formState","discoveryState","disableCreateOrganization","ButtonColumn","Button","shouldAllowDirectLoginToOrganization","status","activeOrganizations","org","membership","hasBlockingConditions","ignoreInvites","ignoreJitProvisioning","shouldDirectLoginConfigEnabled","directLoginForSingleMembership","isExchangeInProgress","directLoginOrganization","handleDiscoveryOrganizationStart","discoveredOrganization","primary_required","allowedAuthMethods","sso_default_connection_id","startSso","stytchDiscoveryExchange","organizationId","organization_id","connectionId","start","connection_id","login_redirect_url","ssoOptions","loginRedirectURL","signup_redirect_url","signupRedirectURL","intermediateSessions","exchange","LoggingInScreen","organizationButtons","createOrganizationButton","goBackButton","top","bottom","mfaOptions","B2BMFAProducts","totp","messageDescriptor","TOTPEnrollmentQRCode","smsOtp","SMSOTPEnrollment","MFAEnrollmentSelectionScreen","mfaProductOrder","organizationMfaOptionsSupported","mfa","primaryInfo","handleNavigate","history","displayOptions","optionsToDisplay","getEnabledMethods","allMethods","B2B_MFA_METHODS","orgSupportedMethods","uiIncludedMethods","option","delete","DEFAULT_COUNTRY_CODE","InvalidPhoneNumberError","StytchSDKError","constructor","SMSOTPEnrollScreen","smsOtpOptions","isSending","sendError","enrolledNumber","memberId","countryCode","setCountryCode","phoneNumber","setPhoneNumber","errorMessage","getTranslatedError","parsePhoneNumber","getExampleNumber","getPhoneNumberProps","clientsideServices","sendSms","parsedNumber","locale","otps","sms","send","mfa_phone_number","member_id","formattedPhoneNumber","COUNTRIES_LIST","handleSubmit","e","preventDefault","formatNumberToIncludeCountryCode","country","isValid","number","as","onSubmit","PhoneInput","setCountry","phone","setPhone","loading","disabled","SMSOTPEntryScreen","isEnrolling","codeExpiration","formattedDestination","enrolledMfaMethods","memberPhoneNumber","resendCountdown","useCountdown","message","errorToast","authenticate","isAuthenticating","authenticateError","otp","code","clear","shouldCreate","catch","handleFormatNumber","parsedPhoneNumber","national","formatNumber","isTotpAvailable","includes","enrolledMethod","handleSwitchToTotp","TOTPEntry","handleResendOTP","handleBack","resendButton","ResendOTPButton","countdown","isSubmitting","resendOTP","switchToTotpButton","backButton","SentOTPEntry","expiration","getTime","RecoveryCodeEntryScreen","recoveryCode","recoveryCodes","recover","recovery_code","setRecoveryCode","Input","input","value","onChange","target","placeholder","label","hideLabel","required","autoComplete","spellCheck","CodeContainer","children","container","RecoveryCodeSaveScreen","enrollment","handleContinue","fileContent","newline","navigator","platform","blob","Blob","join","createObjectURL","filename","copied","setCopied","useTimedBoolean","handleCodesCopy","clipboard","writeText","maxCodeLength","Math","max","TextColumn","header","body","font","ul","codes","style","li","ButtonAnchor","download","triggered","TOTPEnrollQRScreen","createError","isCreating","createTotp","handleShowManualCode","qrCode","qr","CHUNK_SIZE","TOTPEnrollManualScreen","secret","displaySecret","toLowerCase","secretChunked","split","Boolean","codeRef","columnCount","useColumnCount","handleCodeCopy","selection","getSelection","current","empty","range","document","createRange","selectNodeContents","addRange","codeContainer","ref","part","span","chunksCount","setColumnCount","useLayoutEffect","updateRowCount","containerWidth","clientWidth","spanWidth","querySelectorAll","elem","fittedColumns","floor","fittedColumnsWithGaps","rows","ceil","evenColumns","ResizeObserver","observer","observe","disconnect","TOTPEntryScreen","isSmsOtpAvailable","handleSwitchToRecoveryCode","RecoveryCodeEntry","handleSwitchToSms","SMSOTPEntry","OTPEntry","instruction","helperContent","useIsOnlyFloatingOneTap","isOnlyFloatingOneTap","isGoogleOneTap","providerInfo","OAuthB2BButton","loginRedirectUrl","signupRedirectUrl","discoveryRedirectUrl","iconRegistry","icon","Icon","onButtonClick","providerClient","custom_scopes","provider_params","discovery_redirect_url","useLastUsedAuthMethod","stytch","publicToken","lastUsedMethod","safeLocalStorage","getItem","setLastUsedMethod","setItem","B2BGoogleOneTap","oneTapError","setOneTapError","isUnmounted","useIsUnmounted","attemptToLoadOneTap","clientResult","createOneTapClient","success","reason","OneTapErrors","NoConfiguredOAuthClient","DefaultProviderNotAllowed","logger","client","oneTapCallback","createOnSuccessHandler","redirectOnSuccess","Error","createOnDiscoverySuccessHandler","discoveryRedirectURL","renderResult","render","callback","position","OneTapPositions","floating","cancel","OriginNotAllowedForClient","InvalidOAuthClient","$client","err","fallbackButton","fallbackWithLastUsed","LastUsed","DEV","authTokenConfig","mutationKey","defaultError","EmailMagicLink","discovery_oauth","multi_tenant_magic_links","multi_tenant_impersonation","errorTypeMap","ad_blocker_detected","AdBlockerDetected","AppContainer","triggerError","triggerEvent","displayWatermark","theme","currentScreen","screenComponentMap","handleStytchAPIError","defaultErrorType","extractErrorType","isTokenAuthLoading","setIsTokenAuthLoading","mutate","parsed","parseAuthenticateUrl","handled","tokenType","authenticateByUrl","event","finally","MainContainer","orgLogo","defaultScreenComponents","LoggedIn","ErrorScreen","MFAEnrollmentSelection","RecoveryCodeSave","TOTPEnrollmentManual","ScreenComponent","Logo","appLogo","InternalAppContainer","presentation","callbacks","strings","setDisplayWatermark","networkClient","logEvent","name","details","getRedirectTypeFromUrl","redirectType","searchParams","get","authFlowType","RedirectURLType","ResetPassword","initialState","DEFAULT_STATE","PasswordResetForm","configWithDefaults","presentationValue","usePresentationWithDefault","GlobalContextProvider","PresentationContext","Provider","I18nProviderWrapper","overrides","Container","useEmailDomain","emailDomains","setEmailDomains","emailMagicLinksOptions","domainHint","useEmlLoginOrSignup","magicLinks","loginOrSignup","login_template_id","loginTemplateId","signup_template_id","signupTemplateId","EmailConfirmation","useEmlDiscoverySend","emailDomain","sendLoginOrSignupEml","isSendingLoginOrSignupEml","sendDiscoveryEml","isSendingDiscoveryEml","emailState","userSuppliedEmail","resend","EmailConfirmationView","DEFAULT_OTP_EXPIRATION_MS","getOtpCodeExpiration","Date","now","useEmailOtpDiscoverySend","_key","emailOtpOptions","useEmailOtpLoginOrSignup","EmailMethodSelectionScreen","sendDiscoveryEmlError","reset","resetSendDiscoveryEml","sendDiscoveryOtp","isSendingDiscoveryOtp","sendDiscoveryOtpError","resetSendDiscoveryOtp","sendLoginOrSignupEmlError","resetSendLoginOrSignupEml","sendLoginOrSignupOtp","isSendingLoginOrSignupOtp","sendLoginOrSignupOtpError","resetSendLoginOrSignupOtp","handleChooseMethod","ErrorText","EmailOTPEntryScreen","otpState","emailOtpDiscovery","discoveryAuthenticate","emailAddress","isAuthenticatingAny","resetAll","resp","useSsoDiscoveryConnection","discoverConnections","SSODiscoveryEmail","setEmail","setError","setIsLoading","tryGetConnections","connections","extractErrorMessage","connection","EmailInput","iconMap","okta","SSOButton","onStart","display_name","identity_provider","iconName","getSsoMethodKey","extractConnectionId","startsWith","slice","getButtonId","availableConnections","lastUsedSso","foundLastUsed","arrayUtils","moveToFront","SSODiscoveryMenu","ssoDiscoveryState","SSODiscoveryFallback","setSlug","setIsSubmitting","lookupOrganization","handleTryAnotherMethod","usePasswordInput","passwordState","password","setPassword","setErrorMessage","submitPassword","DEFAULT_SESSION_DURATION_MINUTES","passwordOptions","B2BPasswordAuthenticate","submitDiscoveryPassword","B2BPasswordDiscoveryAuthenticate","emailEligibleForJITProvisioning","email_jit_provisioning","email_allowed_domains","pop","handleNonMemberReset","dataLayer","resetPasswordRedirectURL","PasswordResetVerifyConfirmation","hideInput","setHideInput","EMAIL_REGEX","searchManager","searchMember","member","onGetHelp","PasswordForgotForm","PasswordInput","PasswordsAuthenticate","PasswordsForgotForm","resetByEmailStart","reset_password_redirect_url","reset_password_expiration_minutes","resetPasswordExpirationMinutes","reset_password_template_id","resetPasswordTemplateId","verify_email_template_id","verifyEmailTemplateId","B2BPasswordResetByEmailStart","PasswordSetNewConfirmation","PasswordSetNew","resendResetPassword","B2BPasswordDiscoveryResetStart","EmailActionLayout","description","Trans","bold","b","useB2BBootstrap","resetToken","resetTokenType","token","passwordError","setPasswordError","policy","updateStrengthCheck","debounce","strengthCheck","score","valid_password","zxcvbn_feedback","luds_feedback","strength_policy","breached_password","common","passwordInvalid","isPasswordBreached","passwordScore","passwordWarning","warning","passwordSuggestions","suggestions","missingCharacters","missing_characters","missingComplexity","missing_complexity","magic_links_token","clearStytchTokenParams","onPasswordChange","resetByEmail","password_reset_token","B2BPasswordResetByEmail","B2BDiscoveryPasswordReset","resetBySession","B2BPasswordResetBySession","passwordInputProps","getNewPasswordProps","noop","PasswordError","PasswordResetConfirmation","additionalActions","EmailProviderLink","emailProviderInfo","gmail","outlook","UsePasswordButton","handleUsePassword","JIT_PROVISIONING_ERRORS","useParseErrorMessage","showPasswordButton","emailInput","setEmailInput","parseErrorMessage","enableEml","enableOtp","providedEmail","stytchEmlLoginOrSignup","emlError","emlIsMutating","stytchOtpLoginOrSignup","otpError","otpIsMutating","EmailMethodSelection","stytchEmlDiscoverySend","stytchOtpDiscoverySend","assertUnreachable","getCustomScopesForProvider","oauthOptionsCustomScopes","currentCustomScopes","keys","getProviderParamsForProvider","oauthOptionsProviderParams","currentProviderParams","login_hint","isDiscoveryFlow","authButtons","reorderedButtons","foundLastUsedOAuth","createOAuthButton","providerProps","buttonComponent","oauthIcons","google","GoogleIcon","microsoft","MicrosoftIcon","hubspot","slack","SlackIcon","github","GithubIcon","ssoIcons","emailIcons","GmailIcon","OutlookIcon","yahoo","YahooIcon","EmailFormWithoutPassword","EmailFormWithPassword","EmailDiscoveryFormWithoutPassword","EmailDiscoveryFormWithPassword","screens","mainScreen","icons","EmailOTPEntry","ssoAndOAuthButtons","PasswordEmailForm","PasswordAuthenticate","useStytchMember","useSyncExternalStore","onStateChange","self","IDPConsentScreenImpl","initialError","initialParams","oauthAuthorizeStart","oauthAuthorizeSubmit","idp","idpConsentState","useIDPState","IDPConsent","bootstrapNotLoaded","IDPLogoutScreenImpl","navigate","oauthLogoutStart","revokeSession","session","revoke","forceClear","idpLogoutState","useLogoutState","IDPLogout","IDPConsentScreen","flow","parseIDPParams","content","EnsureMemberIsLoggedIn","params","onErrorRef","authParams","useTrustedAuthTokenParams","attesting","setAttesting","attested","setAttested","attestTrustedToken","trustedAuthToken","tokenProfileID","profile_id","attest","NoCurrentSessionError","ErrorDisplay","text","internalConfig","B2BProducts","B2BIDPContainer","getIDPConsentManifest","trustedAuthTokenParams","IDPContextProvider","consentManifestGenerator","authTokenParams","createB2BComponent","Wrapped","invariant","useIsMounted__INTERNAL","noProviderError","useStytchB2BClient","shadow","enableShadowDOM","root","mountPoint","setMountPoint","shadowRoot","attachShadow","mode","createElement","appendChild","injectCssIntoNode","injectGlobalStyle","element","createPortal","displayName","StytchB2B","B2BIdentityProvider","useStytchMemberShared","useStytchMemberSession","useStytchMemberSessionShared","useStytchOrganization","useStytchOrganizationShared","useStytchIsAuthorized","useStytchIsAuthorizedShared","withStytchMember","withStytchMemberShared","withStytchMemberSession","withStytchMemberSessionShared","withStytchOrganization","withStytchOrganizationShared","StytchB2BProvider","assumeHydrated","StytchB2BProviderShared","createStytchB2BUIClient","createStytchB2BClient"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAMA,OAAAA,GAAU,CAAC,EAAEC,IAAAA,GAAOC,wBAAiB,EAAE,GAAGC,KAAAA,EAAkB,iBACvEC,wBAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA;QAAIC,KAAAA,EAAOL,IAAAA;QAAMM,MAAAA,EAAQN,IAAAA;QAAMO,OAAAA,EAAQ,WAAA;QAAYC,KAAAA,EAAM,4BAAA;AAA8B,QAAA,GAAGN;qBACzFC,wBAAA,CAAA,aAAA,CAACM,GAAAA,EAAAA;QAAEC,QAAAA,EAAS;qBACVP,wBAAA,CAAA,aAAA,CAACQ,MAAAA,EAAAA;QACCC,CAAAA,EAAE,0MAAA;QACFC,IAAAA,EAAK;uBAGTV,wBAAA,CAAA,aAAA,CAACM,GAAAA,EAAAA;QAAEC,QAAAA,EAAS;qBACVP,wBAAA,CAAA,aAAA,CAACQ,MAAAA,EAAAA;QACCC,CAAAA,EAAE,0mBAAA;QACFC,IAAAA,EAAK,sBAAA;QACLC,MAAAA,EAAO,sBAAA;QACPC,WAAAA,EAAY;AAGhB,KAAA,CAAA,CAAA,gBAAAZ,wBAAA,CAAA,aAAA,CAACa,4BACCb,wBAAA,CAAA,aAAA,CAACO,UAAAA,EAAAA;QAASO,EAAAA,EAAG;qBACXd,wBAAA,CAAA,aAAA,CAACe,MAAAA,EAAAA;QAAKb,KAAAA,EAAM,IAAA;QAAKC,MAAAA,EAAO,IAAA;QAAKa,SAAAA,EAAU;uBAEzChB,wBAAA,CAAA,aAAA,CAACO,UAAAA,EAAAA;QAASO,EAAAA,EAAG;qBACXd,wBAAA,CAAA,aAAA,CAACe,MAAAA,EAAAA;QAAKb,KAAAA,EAAM,MAAA;QAAOC,MAAAA,EAAO,GAAA;QAAIa,SAAAA,EAAU;AAI9C,KAAA,CAAA,CAAA,CAAA,CAAA;;ACxBK,MAAMC,WAAAA,GAAc,CAAClB,KAAAA,iBAC1BC,gBAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA;QAAII,KAAAA,EAAM,4BAAA;QAA6BH,KAAAA,EAAO,EAAA;QAAIC,MAAAA,EAAQ,EAAA;QAAIO,IAAAA,EAAK,MAAA;AAAQ,QAAA,GAAGX;qBAC7EC,gBAAA,CAAA,aAAA,CAACQ,MAAAA,EAAAA;QACCE,IAAAA,EAAK,SAAA;QACLQ,QAAAA,EAAS,SAAA;QACTT,CAAAA,EAAE,mgBAAA;QACFU,QAAAA,EAAS;AAGb,KAAA,CAAA,CAAA;;ACTK,MAAMC,QAAAA,GAAW,CAACrB,KAAAA,iBACvBC,gBAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA;QAAII,KAAAA,EAAM,4BAAA;QAA6BH,KAAAA,EAAO,EAAA;QAAIC,MAAAA,EAAQ,EAAA;QAAIO,IAAAA,EAAK,MAAA;AAAQ,QAAA,GAAGX;qBAC7EC,gBAAA,CAAA,aAAA,CAACQ,MAAAA,EAAAA;QACCE,IAAAA,EAAK,SAAA;QACLQ,QAAAA,EAAS,SAAA;QACTT,CAAAA,EAAE,y/DAAA;QACFU,QAAAA,EAAS,SAAA;AACTE,QAAAA,SAAAA,EAAWC,wBAAQC;AAGvB,KAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXK,MAAMC,WAAWC,UAAAA;;ACCxB,MAAM,QAAQ,GAAG,IAAI;AACrB,IAAI,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,EAAE,GAAG;AACxC,QAAQ,MAAM,EAAE,MAAM,GAAG,GAAGC,oBAAY,EAAE;AAC1C,QAAQ,MAAM,MAAM,GAAGC,YAAM,CAAC,GAAG,CAAC;AAClC,QAAQ,MAAM,UAAU,GAAGA,YAAM,CAAC,OAAO,CAAC;AAC1C,QAAQ,MAAM,SAAS,GAAGA,YAAM,CAAC,MAAM,CAAC;AACxC;AACA,QAAQ,MAAM,sBAAsB,GAAGA,YAAM,CAAC,CAAC,CAAC;AAChD,QAAQ,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,CAAC,GAAGC,wBAAgB,CAAC;AACzE,YAAY,IAAI,EAAEC,iBAAS;AAC3B,YAAY,KAAK,EAAEA,iBAAS;AAC5B,YAAY,UAAU,EAAE;AACxB,SAAS,CAAC;AACV,QAAQ,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO;AAC7C,QAAQ,MAAM,OAAO,GAAGC,iBAAW,CAAC,OAAO,GAAG,EAAE,IAAI,GAAG;AACvD,YAAY,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,GAAGC,iBAAS,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1E,YAAY,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACrC,gBAAgB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;AAC/E,YAAY;AACZ,YAAY,IAAI,CAAC,aAAa,EAAE;AAChC,gBAAgB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;AAC3E,YAAY;AACZ;AACA,YAAY,MAAM,OAAO,GAAGC,oBAAY,CAACA,oBAAY,CAAC;AACtD,gBAAgB,aAAa,EAAE,KAAK;AACpC,gBAAgB,YAAY,EAAE;AAC9B,aAAa,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;AACxC;AACA;AACA,YAAY,MAAM,iBAAiB,GAAGC,oBAAY,EAAE;AACpD,YAAY,sBAAsB,CAAC,OAAO,GAAG,iBAAiB;AAC9D,YAAY,QAAQ,CAAC;AACrB,gBAAgB,UAAU,EAAE;AAC5B,aAAa,CAAC;AACd,YAAY,IAAI;AAChB,gBAAgB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE;AACzF,oBAAoB;AACpB,iBAAiB,CAAC;AAClB,gBAAgBD,oBAAY,CAAC,OAAO,EAAE;AACtC,oBAAoB,YAAY,EAAE;AAClC,iBAAiB,CAAC,CAAC;AACnB;AACA,gBAAgB,IAAI,sBAAsB,CAAC,OAAO,IAAI,iBAAiB,EAAE;AACzE,oBAAoB,QAAQ,CAAC;AAC7B,wBAAwB,IAAI;AAC5B,wBAAwB,UAAU,EAAE,KAAK;AACzC,wBAAwB,KAAK,EAAE;AAC/B,qBAAqB,CAAC;AACtB,oBAAoB,OAAO,CAAC,SAAS,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC;AACxG,gBAAgB;AAChB,gBAAgB,OAAO,IAAI;AAC3B,YAAY,CAAC,CAAC,OAAO,KAAK,EAAE;AAC5B;AACA;AACA,gBAAgB,IAAI,sBAAsB,CAAC,OAAO,IAAI,iBAAiB,EAAE;AACzE,oBAAoB,QAAQ,CAAC;AAC7B,wBAAwB,KAAK,EAAE,KAAK;AACpC,wBAAwB,UAAU,EAAE;AACpC,qBAAqB,CAAC;AACtB,oBAAoB,OAAO,CAAC,OAAO,IAAI,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC;AACrG,oBAAoB,IAAI,OAAO,CAAC,YAAY,EAAE;AAC9C,wBAAwB,MAAM,KAAK;AACnC,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC;AACX,QAAQ,MAAM,KAAK,GAAGF,iBAAW,CAAC,IAAI;AACtC,YAAY,sBAAsB,CAAC,OAAO,GAAGG,oBAAY,EAAE;AAC3D,YAAY,QAAQ,CAAC;AACrB,gBAAgB,IAAI,EAAEJ,iBAAS;AAC/B,gBAAgB,KAAK,EAAEA,iBAAS;AAChC,gBAAgB,UAAU,EAAE;AAC5B,aAAa,CAAC;AACd;AACA,QAAQ,CAAC,EAAE,EAAE,CAAC;AACd,QAAQK,iCAAyB,CAAC,IAAI;AACtC,YAAY,MAAM,CAAC,OAAO,GAAG,GAAG;AAChC,YAAY,UAAU,CAAC,OAAO,GAAG,OAAO;AACxC,YAAY,SAAS,CAAC,OAAO,GAAG,MAAM;AACtC,QAAQ,CAAC,CAAC;AACV;AACA;AACA;AACA,QAAQ,OAAO;AACf,YAAY,OAAO;AACnB,YAAY,KAAK;AACjB,YAAY,IAAI,IAAI,CAAC,GAAG;AACxB,gBAAgB,iBAAiB,CAAC,IAAI,GAAG,IAAI;AAC7C,gBAAgB,OAAO,YAAY,CAAC,IAAI;AACxC,YAAY,CAAC;AACb,YAAY,IAAI,KAAK,CAAC,GAAG;AACzB,gBAAgB,iBAAiB,CAAC,KAAK,GAAG,IAAI;AAC9C,gBAAgB,OAAO,YAAY,CAAC,KAAK;AACzC,YAAY,CAAC;AACb,YAAY,IAAI,UAAU,CAAC,GAAG;AAC9B,gBAAgB,iBAAiB,CAAC,UAAU,GAAG,IAAI;AACnD,gBAAgB,OAAO,YAAY,CAAC,UAAU;AAC9C,YAAY;AACZ,SAAS;AACT,IAAI,CAAC;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAGC,sBAAc,CAACC,cAAM,EAAE,QAAQ,CAAC;;ACrFhD,MAAMC,mBAAAA,GAAsB;AAC1B,IAAA,gCAAA,EAAkCC,+BAAgBC,wBAAwB;AAC1E,IAAA,yBAAA,EAA2BD,+BAAgBE,kBAAkB;AAC7D,IAAA,gCAAA,EAAkCF,+BAAgBG,yBAAyB;AAC3E,IAAA,0CAAA,EAA4CH,+BAAgBI,iCAAiC;AAC7F,IAAA,uCAAA,EAAyCJ,+BAAgBK,+BAA+B;AACxF,IAAA,gDAAA,EAAkDL,+BAAgBM,uCAAuC;AACzG,IAAA,uCAAA,EAAyCN,+BAAgBO,8BAA8B;AACvF,IAAA,wCAAA,EAA0CP,+BAAgBQ,8BAA8B;AACxF,IAAA,2BAAA,EAA6BR,+BAAgBS,oBAAoB;AACjE,IAAA,qCAAA,EAAuCT,+BAAgBU,6BAA6B;AACpF,IAAA,sBAAA,EAAwBV,+BAAgBW,aAAa;AACrD,IAAA,8BAAA,EAAgCX,+BAAgBY,qBAAqB;AACrE,IAAA,oBAAA,EAAsBZ,+BAAgBa,aAAa;AACnD,IAAA,0BAAA,EAA4Bb,+BAAgBc,mBAAmB;AAC/D,IAAA,8BAAA,EAAgCd,+BAAgBe,uBAAuB;AACvE,IAAA,mCAAA,EAAqCf,+BAAgBgB,4BAA4B;AACjF,IAAA,gCAAA,EAAkChB,+BAAgBiB,wBAAwB;AAC1E,IAAA,0CAAA,EAA4CjB,+BAAgBkB,iCAAiC;AAC7F,IAAA,kCAAA,EAAoClB,+BAAgBmB,yBAAyB;AAC7E,IAAA,iCAAA,EAAmCnB,+BAAgBoB,yBAAyB;AAC5E,IAAA,+BAAA,EAAiCpB,+BAAgBqB;AACnD,CAAA;AAQO,SAASC,oBAAoBC,GAAsB,EAAA;IACxD,OAAOxB,mBAAmB,CAACwB,GAAAA,CAAiC;AAC9D;AAEO,MAAMC,SAAAA,GAAY,CACvBD,KACAE,OAAAA,EACAC,OAAAA,GAAoE,EAAE,GAAA;AAEtE,IAAA,MAAMC,OAAAA,GAAUC,uBAAAA,EAAAA;AAChB,IAAA,MAAMC,OAAAA,GAAUC,uBAAAA,EAAAA;IAEhB,MAAMC,MAAAA,GAASC,KAAAA,CAA+CT,GAAAA,EAAKE,OAAAA,EAAS;QAC1EQ,YAAAA,EAAc,KAAA;AACd,QAAA,GAAGP,OAAO;QACVQ,SAAAA,EAAW,CAACC,MAAMZ,GAAAA,EAAKa,MAAAA,GAAAA;AACrB,YAAA,MAAMC,YAAYf,mBAAAA,CAAoBC,GAAAA,CAAAA;AACtC,YAAA,IAAIc,SAAAA,EAAW;gBACbV,OAAAA,CAAQ;oBAAEW,IAAAA,EAAMD,SAAAA;AAAWF,oBAAAA;AAAK,iBAAA,CAAA;AAClC,YAAA;YAEAT,OAAAA,CAAQQ,SAAS,GAAGC,IAAAA,EAAMZ,GAAAA,EAAKa,MAAAA,CAAAA;AACjC,QAAA,CAAA;QACAP,OAAAA,EAAS,CAACU,OAAOhB,GAAAA,EAAKa,MAAAA,GAAAA;YACpBP,OAAAA,CAAQU,KAAAA,CAAAA;YAERb,OAAAA,CAAQG,OAAO,GAAGU,KAAAA,EAAOhB,GAAAA,EAAKa,MAAAA,CAAAA;AAChC,QAAA;AACF,KAAA,CAAA;;;;IAKA,OAAOL,MAAAA,CAAOS,UAAU,GAAG;AAAE,QAAA,GAAGT,MAAM;QAAEQ,KAAAA,EAAOE;KAAU,GAAIV,MAAAA;AAC/D,CAAA;AAEA;;;;;;IAOO,MAAMW,cAAAA,GAAiB,IAAA;IAC5B,MAAM,CAACC,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;IAC1B,MAAM,CAACC,OAAAA,EAASC,UAAAA,CAAW,GAAGC,cAAAA,EAAAA;AAC9B,IAAA,MAAMZ,MAAAA,GAASa,gBAAAA,EAAAA;AAEf,IAAA,MAAMC,YAAAA,GAAeC,gBAAAA,EAAAA;IACrB,MAAMC,IAAAA,GAAOhB,MAAAA,CAAOiB,gBAAgB,IAAIC,kBAAAA,CAAmBR,WAAW,IAAA,EAAMS,MAAAA,CAAOC,QAAQ,CAACC,IAAI,CAAA;IAEhG,MAAM,EAAEC,OAAO,EAAElB,UAAAA,EAAYmB,WAAW,EAAE,GAAGnC,SAAAA,CAM3C,+BAAA,EACA,CAACoC,CAAAA,EAAW,EAAEC,GAAAA,EAAK,EAAET,IAAI,EAAE,EAA6B,GACtDF,YAAAA,CAAaY,YAAY,CAACC,SAAS,CAAC;YAAEC,iBAAAA,EAAmBZ;SAAK,CAAA,EAChE;QACElB,SAAAA,EAAW,CAAC,EAAE4B,YAAY,EAAE,GAAA;AAC1B,YAAA,IAAIA,iBAAiB,IAAA,EAAM;gBACzBlB,QAAAA,CAAS;oBACPN,IAAAA,EAAM,kCAAA;AACN2B,oBAAAA,SAAAA,EAAWC,iBAAUC,YAAY;oBACjCC,SAAAA,EAAW;AACb,iBAAA,CAAA;YACF,CAAA,MAAO;gBACLxB,QAAAA,CAAS;oBACPN,IAAAA,EAAM,kBAAA;oBACNwB,YAAAA,EAAc;AACZ,wBAAA,GAAGA;AACL;AACF,iBAAA,CAAA;AACF,YAAA;AACF,QAAA;AACF,KAAA,CAAA;IAGFO,eAAAA,CAAU,IAAA;QACRC,+BAAAA,CAAiBpB,YAAAA,CAAAA,CACdqB,SAAS,CAACC,QAAQ,EAAA,CAClBC,IAAI,CAAC,CAAC,EAAEC,WAAW,EAAE,GAAA;YACpB3B,UAAAA,CAAW2B,WAAAA,CAAAA;AACb,QAAA,CAAA,CAAA;IACJ,CAAA,EAAG;AAACxB,QAAAA;AAAa,KAAA,CAAA;IAEjBmB,eAAAA,CAAU,IAAA;QACR,IACEjB,IAAAA,KAAS,QACTT,KAAAA,CAAMgC,SAAS,CAACb,YAAY,KAAK,QACjCnB,KAAAA,CAAMiC,MAAM,KAAKC,iBAAAA,CAAWC,IAAI,IAChCnC,KAAAA,CAAMgC,SAAS,CAACrC,IAAI,IAAIyC,2BAAAA,CAAaZ,YAAY,EACjD;YACAT,OAAAA,CAAQ;AAAEN,gBAAAA;AAAK,aAAA,CAAA;AACjB,QAAA;;IAEF,CAAA,EAAG;AAACA,QAAAA,IAAAA;AAAMT,QAAAA,KAAAA,CAAMgC,SAAS;AAAEhC,QAAAA,KAAAA,CAAMiC;AAAO,KAAA,CAAA;;;IAIxC,MAAMI,aAAAA,GAAgBlC,YAAYL,SAAAA,IAAakB,WAAAA;IAE/C,OAAO;AAAEP,QAAAA,IAAAA;AAAM4B,QAAAA;AAAc,KAAA;AAC/B,CAAA;AAEO,MAAMC,YAAAA,GAAe,IAAA;AAC1B,IAAA,MAAM/B,YAAAA,GAAeC,gBAAAA,EAAAA;IACrB,MAAM,CAACoB,WAAWW,YAAAA,CAAa,GAAGlC,eAASsB,+BAAAA,CAAiBpB,YAAAA,CAAAA,CAAcqB,SAAS,CAACY,OAAO,EAAA,CAAA;IAE3Fd,eAAAA,CAAU,IAAA;AACRC,QAAAA,+BAAAA,CAAiBpB,cACdqB,SAAS,CAACC,QAAQ,EAAA,CAClBC,IAAI,CAAC,CAACtC,IAAAA,GAAAA;YACL+C,YAAAA,CAAa/C,IAAAA,CAAAA;AACf,QAAA,CAAA,CAAA;IACJ,CAAA,EAAG;AAACe,QAAAA;AAAa,KAAA,CAAA;IAEjB,OAAOqB,SAAAA;AACT,CAAA;AAEO,MAAMa,qBAAAA,GAAwB,CACnCjD,IAAAA,EACAS,QAAAA,EACAR,MAAAA,GAAAA;IAEAQ,QAAAA,CAAS;QACPN,IAAAA,EAAM,8BAAA;QACN+C,QAAAA,EAAUlD,IAAAA;AACVmD,QAAAA,kBAAAA,EAAoBlD,OAAOmD;AAC7B,KAAA,CAAA;AACF,CAAA;AAEO,MAAMC,8BAAAA,GAAiC,CAC5CrD,IAAAA,EACAS,QAAAA,GAAAA;IAEAA,QAAAA,CAAS;QACPN,IAAAA,EAAM,qBAAA;AACNmD,QAAAA,KAAAA,EAAOtD,KAAKuD,aAAa;AACzBC,QAAAA,uBAAAA,EAAyBxD,KAAKyD;AAChC,KAAA,CAAA;AACF,CAAA;AAEO,MAAMtC,kBAAAA,GAAqB,CAACR,OAAAA,EAAwBW,IAAAA,GAAAA;IACzD,IAAIX,OAAAA,KAAY,MAAM,OAAO,IAAA;IAE7B,MAAM+C,GAAAA,GAAM,IAAIC,GAAAA,CAAIrC,IAAAA,CAAAA;AACpBoC,IAAAA,GAAAA,CAAIE,MAAM,GAAG,EAAA;AAEb,IAAA,MAAMC,UAAAA,GAAaH,GAAAA,CAAII,QAAQ,EAAA,CAAGC,IAAI,EAAA;AACtC,IAAA,MAAMC,YAAAA,GAAerD,OAAAA,CAAQsD,OAAO,CAAC,KAAA,EAAO,KAAA,CAAA,CAAOA,OAAO,CAAC,KAAA,EAAO,WAAA,CAAA,CAAaA,OAAO,CAAC,UAAA,EAAY,MAAA,CAAA;IAEnG,MAAMC,KAAAA,GAAQ,IAAIC,MAAAA,CAAOH,YAAAA,CAAAA;IACzB,MAAMI,KAAAA,GAAQP,UAAAA,CAAWO,KAAK,CAACF,KAAAA,CAAAA;AAE/B,IAAA,IAAIE,KAAAA,IAASA,KAAK,CAAC,CAAA,CAAE,EAAE;QACrB,OAAOA,KAAAA,GAAQ,CAAA,CAAE;AACnB,IAAA;IAEA,OAAO,IAAA;AACT,CAAA;AAEO,SAASC,UAAAA,CAAWC,QAA4B,EAAEC,OAAkB,EAAA;AACzE,IAAA,OAAOD,SAASE,IAAI,CAAC,CAACC,CAAAA,GAAMA,CAAAA,CAAEpI,EAAE,KAAKkI,OAAAA,CAAAA;AACvC;AAEO,SAASG,qBACd,EAAEJ,QAAQ,EAAEK,oBAAoB,EAA8E,EAC9GC,UAAgB,EAAA;AAEhB,IAAA,OAAOC,aAAAA,CAAQ,IAAA;AACb,QAAA,MAAMC,MAAM,EAAC;AACb,QAAA,KAAK,MAAMP,OAAAA,IAAW;AAAID,YAAAA,GAAAA,QAAAA;AAAaK,YAAAA,GAAAA;SAAqB,CAAE;YAC5D,IAAIJ,OAAO,CAACK,UAAAA,CAAW,EAAEG,MAAAA,CAAOC,MAAM,CAACF,GAAAA,EAAKP,OAAO,CAACK,UAAAA,CAAW,CAAA;AACjE,QAAA;QACA,OAAOE,GAAAA;IACT,CAAA,EAAG;AAACR,QAAAA,QAAAA;AAAUK,QAAAA,oBAAAA;AAAsBC,QAAAA;AAAW,KAAA,CAAA;AACjD;;ACjPO,MAAMK,kBAAAA,GAAqB,CAACC,SAAAA,GACjCA,SAAAA,KAAcC,0BAAAA,CAAoBC,YAAY,IAAIF,SAAAA,KAAcC,0BAAAA,CAAoBE,UAAU;AAEhG;;;;;;;;;;;;;;;;AAgBA,GACO,MAAMC,iCAAAA,GAAoC,CAC/ChB,QAAAA,EACA9B,SAAAA,GAAAA;IAEA,MAAM+C,aAAAA,GAAgB/C,UAAUrC,IAAI;IACpC,MAAMqF,WAAAA,GAAc,IAAIC,GAAAA,CAAInB,QAAAA,CAASQ,GAAG,CAAC,CAACL,CAAAA,GAAMA,CAAAA,CAAEpI,EAAE,CAAA,CAAA;AACpD,IAAA,MAAMqJ,gCAAAA,GACHF,CAAAA,WAAAA,CAAYG,GAAG,CAAC,iBAAA,CAAA,IAAsBH,WAAAA,CAAYG,GAAG,CAAC,UAAA,CAAU,KAAMH,WAAAA,CAAYG,GAAG,CAAC,WAAA,CAAA;IACzF,MAAMC,8BAAAA,GACJL,kBAAkB3C,2BAAAA,CAAaZ,YAAY,GACvCmD,0BAAAA,CAAoBU,qBAAqB,GACzCV,0BAAAA,CAAoBW,8BAA8B;AAExD,IAAA,MAAMC,oBAAAA,GAAuBzB,QAAAA,CAAS0B,MAAM,CAAC,CAACC,UAAAA,EAAY1B,OAAAA,GAAAA;AACxD,QAAA,OAAQA,QAAQlI,EAAE;YAChB,KAAK,iBAAA;YACL,KAAK,UAAA;AACH,gBAAA,IAAIqJ,gCAAAA,EAAkC;AACpCO,oBAAAA,UAAAA,CAAWC,GAAG,CAACN,8BAAAA,CAAAA;gBACjB,CAAA,MAAO;oBACLK,UAAAA,CAAWC,GAAG,CACZX,aAAAA,KAAkB3C,2BAAAA,CAAaZ,YAAY,GACvCmD,0BAAAA,CAAoBgB,SAAS,GAC7BhB,0BAAAA,CAAoBiB,kBAAkB,CAAA;AAE9C,gBAAA;AACA,gBAAA;YACF,KAAK,OAAA;gBACHH,UAAAA,CAAWC,GAAG,CAACf,0BAAAA,CAAoBC,YAAY,CAAA;AAC/C,gBAAA;YACF,KAAK,KAAA;AAAO,gBAAA;AACV,oBAAA,MAAMiB,aACJd,aAAAA,KAAkB3C,2BAAAA,CAAa0D,SAAS,IACvCf,kBAAkB3C,2BAAAA,CAAaZ,YAAY,IACzCQ,CAAAA,SAAAA,CAAUb,YAAY,EAAE4E,sBAAAA,EAAwBC,MAAAA,IAAU,CAAA,IAAK,CAAA;AACpE,oBAAA,IAAIH,UAAAA,EAAY;wBACdJ,UAAAA,CAAWC,GAAG,CAACf,0BAAAA,CAAoBE,UAAU,CAAA;AAC/C,oBAAA;AACA,oBAAA;AACF,gBAAA;YACA,KAAK,WAAA;AACHY,gBAAAA,UAAAA,CAAWC,GAAG,CACZR,gCAAAA,GAAmCE,8BAAAA,GAAiCT,2BAAoBsB,kBAAkB,CAAA;AAE5G,gBAAA;AACJ;QACA,OAAOR,UAAAA;AACT,IAAA,CAAA,EAAG,IAAIR,GAAAA,EAAAA,CAAAA;IAEP,OAAOiB,KAAAA,CAAMC,IAAI,CAACZ,oBAAAA,CAAAA,CAAsBC,MAAM,CAA0B,CAACY,MAAAA,EAAQ1B,SAAAA,EAAW2B,CAAAA,EAAGC,GAAAA,GAAAA;AAC7F,QAAA,MAAMC,gBAAgBF,CAAAA,GAAI,CAAA,GAAIC,GAAG,CAACD,CAAAA,GAAI,EAAE,GAAGvG,SAAAA;;AAG3C,QAAA,MAAM0G,uBAAAA,GAA0BD,aAAAA,IAAiB9B,kBAAAA,CAAmBC,SAAAA,CAAAA,IAAcD,kBAAAA,CAAmB8B,aAAAA,CAAAA;AAErG,QAAA,IAAIC,uBAAAA,EAAyB;AAC3BJ,YAAAA,MAAM,CAACA,MAAAA,CAAOJ,MAAM,GAAG,CAAA,CAAE,CAACS,IAAI,CAAC/B,SAAAA,CAAAA;QACjC,CAAA,MAAO;;YAEL,MAAMgC,SAAAA,GAAYN,MAAAA,CAAOJ,MAAM,GAAG,CAAA,GAAII,MAAM,CAACA,MAAAA,CAAOJ,MAAM,GAAG,CAAA,CAAE,GAAGlG,SAAAA;AAClE,YAAA,IAAI4G,aAAajC,kBAAAA,CAAmBiC,SAAS,CAAC,CAAA,CAAE,CAAA,KAAMjC,mBAAmBC,SAAAA,CAAAA,EAAY;AACnF0B,gBAAAA,MAAAA,CAAOK,IAAI,CAAC;AAAC9B,oBAAAA,0BAAAA,CAAoBgC;AAAQ,iBAAA,CAAA;AAC3C,YAAA;AAEAP,YAAAA,MAAAA,CAAOK,IAAI,CAAC;AAAC/B,gBAAAA;AAAU,aAAA,CAAA;AACzB,QAAA;QACA,OAAO0B,MAAAA;AACT,IAAA,CAAA,EAAG,EAAE,CAAA;AACP,CAAA;;AC3FO,MAAMQ,sCAAsC,CAACC,QAAAA,GAAAA;IAClD,IAAIC,YAAAA;AACJ,IAAA,IAAIC,MAAAA,GAAS,KAAA;AACb,IAAA,IAAIC,eAAyB,EAAE;AAC/B,IAAA,IAAIC,iBAAyC,EAAC;AAC9C,IAAA,IAAIC,kBAAAA,GAA0CpH,SAAAA;IAC9C,IAAI,OAAO+G,aAAa,QAAA,EAAU;QAChCC,YAAAA,GAAeD,QAAAA;IACjB,CAAA,MAAO;AACLC,QAAAA,YAAAA,GAAeD,SAASlH,IAAI;QAC5B,IAAIkH,QAAAA,CAASlH,IAAI,KAAKwH,gCAAAA,CAAkBC,MAAM,IAAIP,QAAAA,CAASQ,OAAO,EAAE;AAClEN,YAAAA,MAAAA,GAASF,SAASQ,OAAO;AACzBH,YAAAA,kBAAAA,GAAqBL,SAASS,qBAAqB;AACrD,QAAA;QACAN,YAAAA,GAAeH,QAAAA,CAASG,YAAY,IAAI,EAAE;QAC1CC,cAAAA,GAAiBJ,QAAAA,CAASI,cAAc,IAAI,EAAC;AAC/C,IAAA;IACA,OAAO;QACLtH,IAAAA,EAAMmH,YAAAA;QACNO,OAAAA,EAASN,MAAAA;AACTC,QAAAA,YAAAA;AACAC,QAAAA,cAAAA;QACAK,qBAAAA,EAAuBJ;AACzB,KAAA;AACF,CAAA;;ACXA;AACA;AACA,MAAMK,qBAAAA,GAA+D;IACnEC,KAAAA,EAAO1H,SAAAA;IACP2H,GAAAA,EAAK,KAAA;IACLC,eAAAA,EAAiB,YAAA;IACjBC,QAAAA,EAAU,WAAA;IACVC,SAAAA,EAAW;AACb,CAAA;AAEA,MAAMC,2BAAAA,GAAiE;IACrE,CAACV,gCAAAA,CAAkBC,MAAM,GAAG,cAAA;IAC5B,CAACD,gCAAAA,CAAkBW,SAAS,GAAG,iBAAA;IAC/B,CAACX,gCAAAA,CAAkBY,OAAO,GAAG,eAAA;IAC7B,CAACZ,gCAAAA,CAAkBa,KAAK,GAAG,aAAA;IAC3B,CAACb,gCAAAA,CAAkBc,MAAM,GAAG;AAC9B,CAAA;AAEA,MAAMC,qBAAAA,GAAmD3D,MAAAA,CAAO4D,WAAW,CACzE5D,OAAO6D,OAAO,CAACb,qBAAAA,CAAAA,CAAuBjD,GAAG,CAAC,CAAC,CAACP,OAAAA,EAASsE,WAAW,GAAK;AAACA,QAAAA,UAAAA;AAAYtE,QAAAA;AAAQ,KAAA,CAAA,CAAA;AAG5F,MAAMuE,4BAAAA,GAAkE/D,MAAAA,CAAO4D,WAAW,CACxF5D,OAAO6D,OAAO,CAACP,2BAAAA,CAAAA,CAA6BvD,GAAG,CAAC,CAAC,CAACuC,QAAAA,EAAU0B,OAAO,GAAK;AACtEA,QAAAA,MAAAA;AACA1B,QAAAA;AACD,KAAA,CAAA,CAAA;AAGH,MAAM2B,sBAAsB,CAACH,UAAAA,GAAAA;AAC3B,IAAA,IAAIA,cAAcC,4BAAAA,EAA8B;QAC9C,OAAO,OAAA;AACT,IAAA;IACA,OAAOJ,qBAAqB,CAACG,UAAAA,CAAW;AAC1C,CAAA;AAEA,MAAMI,iBAAAA,GAAoBlE,MAAAA,CAAOmE,MAAM,CAACvB,gCAAAA,CAAAA;AAExC,MAAMwB,6BAA6B,CAAC7E,QAAAA,EAA8B8E,iBAChE9E,QAAAA,CACG+E,OAAO,CAAC,CAAC9E,OAAAA,GAAAA;QACR,IAAIA,OAAAA,CAAQlI,EAAE,KAAK,OAAA,EAAS;YAC1B,OAAO+M,cAAAA,CAAetE,GAAG,CAAC,CAACuC,QAAAA,GAAAA;gBACzB,MAAMwB,UAAAA,GAAaR,2BAA2B,CAAC,OAAOhB,aAAa,QAAA,GAAWA,QAAAA,GAAWA,QAAAA,CAASlH,IAAI,CAAC;AACvG,gBAAA,IAAI0I,UAAAA,EAAY;oBACd,OAAOA,UAAAA;AACT,gBAAA;AACF,YAAA,CAAA,CAAA;QACF,CAAA,MAAO;AACL,YAAA,MAAMA,UAAAA,GAAad,qBAAqB,CAACxD,OAAAA,CAAQlI,EAAE,CAAC;AACpD,YAAA,IAAIwM,UAAAA,EAAY;gBACd,OAAOA,UAAAA;AACT,YAAA;AACF,QAAA;AACF,IAAA,CAAA,CAAA,CACCS,MAAM,CAACC,4CAAAA,CAAAA;AAEZ,MAAMC,uBAAAA,GAA0B,IAAA;AAC9B,IAAA,MAAMvJ,MAAAA,GAASa,gBAAAA,EAAAA;AACf,IAAA,OAAO+D,aAAAA,CAAQ,IAAA;AACb,QAAA,IAAI,CAAC5E,MAAAA,CAAOwJ,YAAY,EAAEC,SAAAA,EAAW;AACnC,YAAA,OAAO,EAAE;AACX,QAAA;AAEA,QAAA,OAAOzJ,OAAOwJ,YAAY,CAACC,SAAS,CAAC5E,GAAG,CAACsC,mCAAAA,CAAAA;IAC3C,CAAA,EAAG;AAACnH,QAAAA,MAAAA,CAAOwJ,YAAY,EAAEC;AAAU,KAAA,CAAA;AACrC,CAAA;AAEA,MAAMC,wBAAAA,GAA2B,IAAA;IAC/B,MAAM,CAACnJ,MAAM,GAAGE,uBAAAA,EAAAA;AAEhB,IAAA,MAAM,EAAEkJ,kBAAkB,EAAE,GAAGpJ,MAAMqJ,OAAO;IAC5C,MAAMC,qBAAAA,GAAwB,CAAC,CAACF,kBAAAA;AAEhC,IAAA,MAAMG,wBAAwBlF,aAAAA,CAAQ,IAAA;AACpC,QAAA,IAAIrE,KAAAA,CAAMqJ,OAAO,CAACD,kBAAkB,EAAE;AACpC,YAAA,OAAO,IAAInE,GAAAA,CAAIjF,KAAAA,CAAMqJ,OAAO,CAACD,kBAAkB,CAAA;AACjD,QAAA;AAEA,QAAA,IAAIpJ,MAAMgC,SAAS,CAACb,YAAY,EAAEqI,iBAAiB,YAAA,EAAc;YAC/D,OAAO,IAAIvE,IAAIjF,KAAAA,CAAMgC,SAAS,CAACb,YAAY,EAAEsI,wBAAwB,EAAE,CAAA;AACzE,QAAA;IACF,CAAA,EAAG;QACDzJ,KAAAA,CAAMgC,SAAS,CAACb,YAAY,EAAEsI,oBAAAA;QAC9BzJ,KAAAA,CAAMgC,SAAS,CAACb,YAAY,EAAEqI,YAAAA;QAC9BxJ,KAAAA,CAAMqJ,OAAO,CAACD;AACf,KAAA,CAAA;IAED,OAAO;AAAEG,QAAAA,qBAAAA;AAAuBD,QAAAA;AAAsB,KAAA;AACxD,CAAA;AAEO,MAAMI,sBAAAA,GAAyB,IAAA;IACpC,MAAM,CAAC1J,MAAM,GAAGE,uBAAAA,EAAAA;AAChB,IAAA,MAAMT,MAAAA,GAASa,gBAAAA,EAAAA;AAEf,IAAA,MAAM,EAAEiJ,qBAAqB,EAAED,qBAAqB,EAAE,GAAGH,wBAAAA,EAAAA;AAEzD,IAAA,MAAMQ,oBAAAA,GAAuBX,uBAAAA,EAAAA;AAE7B,IAAA,MAAMY,iCAAiCvF,aAAAA,CACrC,IAAMsE,2BAA2BlJ,MAAAA,CAAOqE,QAAQ,EAAE6F,oBAAAA,CAAAA,EAClD;AAAClK,QAAAA,MAAAA,CAAOqE,QAAQ;AAAE6F,QAAAA;AAAqB,KAAA,CAAA;AAGzC,IAAA,MAAME,oBAAoBxF,aAAAA,CAAQ,IAAA;;AAEhC,QAAA,IAAI,CAACkF,qBAAAA,EAAuB;YAC1B,OAAOK,8BAAAA;AACT,QAAA;;QAGA,MAAME,+BAAAA,GAAkCF,+BAA+Bd,MAAM,CAAC,CAACT,UAAAA,GAC7EkB,qBAAAA,CAAsBpE,GAAG,CAACkD,UAAAA,CAAAA,CAAAA;;;AAK5B,QAAA,IAAIyB,+BAAAA,CAAgC9D,MAAM,GAAG,CAAA,IAAK,CAACsD,qBAAAA,EAAuB;YACxE,OAAOQ,+BAAAA;AACT,QAAA;;;AAIA,QAAA,IAAI9J,MAAMgC,SAAS,CAACb,YAAY,EAAEqI,iBAAiB,YAAA,EAAc;YAC/D,OAAOb,0BAAAA,CAA2BlJ,MAAAA,CAAO0E,oBAAoB,EAAEsE,iBAAAA,CAAAA,CAAmBK,MAAM,CAAC,CAACT,UAAAA,GACxFkB,qBAAAA,CAAsBpE,GAAG,CAACkD,UAAAA,CAAAA,CAAAA;AAE9B,QAAA;;;QAIA,OAAO;AAAC,YAAA;AAAa,SAAA;IACvB,CAAA,EAAG;AACD5I,QAAAA,MAAAA,CAAO0E,oBAAoB;AAC3ByF,QAAAA,8BAAAA;AACAN,QAAAA,qBAAAA;AACAC,QAAAA,qBAAAA;QACAvJ,KAAAA,CAAMgC,SAAS,CAACb,YAAY,EAAEqI;AAC/B,KAAA,CAAA;AAED,IAAA,MAAM1F,WAAWO,aAAAA,CAAQ,IAAA;AACvB,QAAA,MAAM0F,UAAAA,GAAa;AAAI,YAAA,GAAA,IAAI9E,IAAI4E,iBAAAA,CAAkBvF,GAAG,CAACkE,mBAAAA,CAAAA,CAAqBM,MAAM,CAACC,4CAAAA,CAAAA;AAAW,SAAA;AAC5F,QAAA,OAAOgB,WAAWzF,GAAG,CAAC,CAAC0F,SAAAA,GAAcvK,OAAO0E,oBAAoB,CAAC8F,IAAI,CAAC,CAAChG,CAAAA,GAAMA,CAAAA,CAAEpI,EAAE,KAAKmO,SAAAA,CAAAA,CAAAA,CAAYlB,MAAM,CAACC,4CAAAA,CAAAA;IAC3G,CAAA,EAAG;AAACc,QAAAA,iBAAAA;AAAmBpK,QAAAA,MAAAA,CAAO0E;AAAqB,KAAA,CAAA;AAEnD,IAAA,MAAM+F,wBAAwB7F,aAAAA,CAC5B,IACEwF,iBAAAA,CACGvF,GAAG,CAAC,CAAC+D,UAAAA,GAAAA;YACJ,MAAMxB,QAAAA,GAAWyB,4BAA4B,CAACD,UAAAA,CAAW;AACzD,YAAA,IAAIxB,QAAAA,EAAU;gBACZ,OACE8C,oBAAAA,CAAqBM,IAAI,CAAC,CAACE,gBAAkBA,aAAAA,CAAcxK,IAAI,KAAKkH,QAAAA,CAAAA,IACpED,mCAAAA,CAAoCC,QAAAA,CAAAA;AAExC,YAAA;QACF,CAAA,CAAA,CACCiC,MAAM,CAACC,4CAAAA,CAAAA,EACZ;AAACc,QAAAA,iBAAAA;AAAmBF,QAAAA;AAAqB,KAAA,CAAA;IAG3C,OAAO;AAAE7F,QAAAA,QAAAA;AAAUoG,QAAAA;AAAsB,KAAA;AAC3C,CAAA;;ACnKA,SAASE,cAAcC,KAA4B,EAAA;IACjD,OAAOA,KAAAA,CAAMC,KAAK,CAAC7F,kBAAAA,CAAAA;AACrB;AAEO,MAAM8F,UAAAA,GAAa,IAAA;IACxB,MAAM,EAAExL,OAAO,EAAE,GAAGyL,sBAAAA,EAAAA;IACpB,MAAM,CAACxK,MAAM,GAAGE,uBAAAA,EAAAA;AAChB,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQuK,6CAAAA,EAAAA;IAEd,MAAM,EAAErB,kBAAkB,EAAEtG,KAAK,EAAE4H,aAAa,EAAE,GAAG1K,KAAAA,CAAMqJ,OAAO;AAElE,IAAA,MAAM5J,MAAAA,GAASa,gBAAAA,EAAAA;IACf,MAAM,EAAEwD,QAAQ,EAAE,GAAG4F,sBAAAA,EAAAA;AAErB,IAAA,MAAMiB,SAAAA,GAAY3K,KAAAA,CAAMgC,SAAS,CAACrC,IAAI,KAAKyC,2BAAAA,CAAaZ,YAAY,IAAI,CAACxB,KAAAA,CAAMgC,SAAS,CAACb,YAAY;;AAGrG,IAAA,MAAMyJ,yBAAAA,GAA4B9F,iCAAAA,CAAkChB,QAAAA,EAAU9D,KAAAA,CAAMgC,SAAS,CAAA;IAC7F,MAAM6I,oBAAAA,GAAuB3G,qBAAqBzE,MAAAA,EAAQ,YAAA,CAAA;AAC1D,IAAA,MAAM,EAAEqL,kBAAkB,EAAE,GAAG5G,qBAAqBzE,MAAAA,EAAQ,oBAAA,CAAA;AAE5D,IAAA,MAAMsL,gBAAAA,GAAmB/K,KAAAA,CAAMgC,SAAS,CAACb,YAAY,EAAE6J,iBAAAA;IACvD,IAAIC,KAAAA;IACJ,OAAQjL,KAAAA,CAAMgC,SAAS,CAACrC,IAAI;AAC1B,QAAA,KAAKyC,4BAAa0D,SAAS;AACzBmF,YAAAA,KAAAA,GAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;;AACA,YAAA;AACF,QAAA,KAAK7I,4BAAa8I,aAAa;YAC7BD,KAAAA,GAAQ,EAAA;AACR,YAAA;AACF,QAAA;YACEA,KAAAA,GAAQF,gBAAAA,GAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;;AAGsBA,oBAAAA,gBAAAA,EAAAA;;;;;;AAO9B,YAAA;AACJ;;;IAIA,MAAMI,mBAAAA,GAAsBrI,KAAAA,IAAS4H,aAAAA,KAAkB,KAAA,IAAStB,kBAAAA;AAEhE,IAAA,IAAIuB,SAAAA,EAAW;AACb,QAAA,qBAAO5P,wBAAA,CAAA,aAAA,CAACqQ,oBAAAA,EAAAA,IAAAA,CAAAA;AACV,IAAA;AAEA,IAAA,qBACErQ,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;AACV,KAAA,EAAA,CAACvM,QAAQwM,cAAc,KACrBJ,mBAAAA,iBACCpQ,8FACEA,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;uBAIpB1Q,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;AAQHP,KAAAA,CAAAA,CAAAA,CAAAA,GAAAA,KAAAA,kBACElQ,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ,QAAA;QAASC,KAAAA,EAAM;AAChCT,KAAAA,EAAAA,KAAAA,CAGP,iBAEFlQ,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;AACVV,KAAAA,EAAAA,yBAAAA,CAA0BtG,GAAG,CAAC,CAAC+F,KAAAA,GAC9BD,aAAAA,CAAcC,uBACZtP,wBAAA,CAAA,aAAA,CAAC+P,kBAAAA,EAAAA;YAAmBlM,GAAAA,EAAI,SAAA;YAAU+M,OAAAA,EAAStB;aAE3CA,KAAAA,CAAM/F,GAAG,CAAC,CAACI,SAAAA,EAAWkH,KAAAA,GAAAA;YACpB,MAAMC,SAAAA,GAAYhB,oBAAoB,CAACnG,SAAAA,CAAU;AACjD,YAAA,IAAImH,SAAAA,EAAW;AACb,gBAAA,qBAAO9Q,wBAAA,CAAA,aAAA,CAAC8Q,SAAAA,EAAAA;oBAAUjN,GAAAA,EAAK8F;;AACzB,YAAA;YACA,IAAIA,SAAAA,KAAcC,0BAAAA,CAAoBgC,OAAO,EAAE;AAC7C,gBAAA,qBAAO5L,wBAAA,CAAA,aAAA,CAAC4L,cAAAA,EAAAA;AAAQ/H,oBAAAA,GAAAA,EAAK,SAAA,GAAYgN;;AACnC,YAAA;YACA,OAAO,IAAA;AACT,QAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAMZ,CAAA;;ACxGO,MAAME,kBAAAA,GAAqB,IAAA;AAChC,IAAA,MAAM9M,OAAAA,GAAUC,uBAAAA,EAAAA;IAChB8M,qBAAAA,CAAe,IAAA;QACb/M,OAAAA,CAAQ;AAAEW,YAAAA,IAAAA,EAAMtC,+BAAgB2O,wBAAwB;AAAExM,YAAAA,IAAAA,EAAM;AAAG,SAAA,CAAA;AACrE,IAAA,CAAA,CAAA;AAEA,IAAA,qBAAOzE,gBAAA,CAAA,aAAA,CAACkR,mBAAAA,EAAAA,IAAAA,CAAAA;AACV,CAAA;;;;;;ACEA,MAAMC,KAAAA,GAAQ,kBACZnR,wBAAA,CAAA,aAAA,CAACC,KAAAA,EAAAA;AACCoB,QAAAA,SAAAA,EAAW+P,iBAAOC,KAAK;QACvBnR,KAAAA,EAAM,IAAA;QACNC,MAAAA,EAAO,IAAA;QACPC,OAAAA,EAAQ,WAAA;QACRM,IAAAA,EAAK,MAAA;QACLL,KAAAA,EAAM;qBAENL,wBAAA,CAAA,aAAA,CAACQ,MAAAA,EAAAA;QACCC,CAAAA,EAAE,gHAAA;QACFC,IAAAA,EAAK;;AAKX,MAAM4Q,eAAAA,GAAkB,CAAC,EAAElL,YAAY,EAAEmL,MAAM,EAAEC,OAAO,EAAwB,GAAA;AAC9E,IAAA,MAAM,EAAEvB,iBAAiB,EAAEwB,qBAAqB,EAAE,GAAGrL,YAAAA;IAErD,MAAMsL,IAAAA,GAAOD,sCACXzR,wBAAA,CAAA,aAAA,CAAC2R,KAAAA,EAAAA;AAAItQ,QAAAA,SAAAA,EAAW+P,iBAAOM,IAAI;QAAEE,GAAAA,EAAKH,qBAAAA;QAAuBI,GAAAA,EAAI;uBAE7D7R,wBAAA,CAAA,aAAA,CAAC8R,KAAAA,EAAAA;AAAIzQ,QAAAA,SAAAA,EAAW+P,iBAAOM,IAAI;QAAEK,IAAAA,EAAK;;AAG9B5G,IAAAA,KAAAA,CAAMC,IAAI,CAAC6E,iBAAAA,CAAkB,CAAC,CAAA,CAAE,CAAA;AAKtC,IAAA,qBACEjQ,wBAAA,CAAA,aAAA,CAACgS,QAAAA,EAAAA;AACC3Q,QAAAA,SAAAA,EAAW4Q,iBAAAA,CACTb,gBAAAA,CAAOc,eAAe,EACtBC,0BACAC,uBAAAA,CAAiB;YACf1B,OAAAA,EAAS;AAEX,SAAA,CAAA,CAAA;QAEFc,OAAAA,EAASA;qBAETxR,wBAAA,CAAA,aAAA,CAAC8R,KAAAA,EAAAA;AAAIzQ,QAAAA,SAAAA,EAAW+P,iBAAOiB;AACpBX,KAAAA,EAAAA,IAAAA,gBACD1R,wBAAA,CAAA,aAAA,CAAC8R,KAAAA,EAAAA;AAAIzQ,QAAAA,SAAAA,EAAW+P,iBAAOkB;AAAWrC,KAAAA,EAAAA,iBAAAA,CAAAA,CAAAA,gBAGpCjQ,wBAAA,CAAA,aAAA,CAACuS,yBAAAA,EAAAA;QACCvM,OAAAA,EAAQ,OAAA;AACRwM,QAAAA,aAAAA,EAAepB,iBAAOqB,KAAK;AAC3BpR,QAAAA,SAAAA,EAAW+P,iBAAOsB,YAAY;QAC9BpE,OAAAA,EAASiD,MAAAA,kBAAUvR,uCAAC2S,YAAAA,EAAAA,IAAAA,EAAOpB,MAAAA,CAAAA;AAC3BqB,QAAAA,SAAAA,gBAAW5S,wBAAA,CAAA,aAAA,CAACmR,KAAAA,EAAAA,IAAAA;;AAIpB,CAAA;;ACjDA,MAAM0B,gBAAAA,GAAmB,CAACjO,IAAAA,GACxBA,IAAAA,KAAS,sCAAsCA,IAAAA,KAAS,kCAAA;AAE1D,MAAMkO,uBAAAA,GAA0B,IAAA;IAC9B,MAAM,CAAC7N,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;AAC1B,IAAA,MAAMK,YAAAA,GAAeC,gBAAAA,EAAAA;AACrB,IAAA,MAAMf,MAAAA,GAASa,gBAAAA,EAAAA;IACf,MAAM,EAAEwN,yBAAyB,EAAE,GAAGxL,YAAAA,EAAAA;AACtC,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQmI,6CAAAA,EAAAA;IACd,MAAMsD,MAAAA,GAAS,IAAM9N,QAAAA,CAAS;YAAEN,IAAAA,EAAM,YAAA;AAAcsC,YAAAA,MAAAA,EAAQC,kBAAWC;AAAK,SAAA,CAAA;AAE5E,IAAA,MAAM,EAAEpB,OAAAA,EAASiN,wBAAwB,EAAEnO,UAAAA,EAAYoO,eAAe,EAAE,GAAGpP,SAAAA,CAKzE,uCAAA,EACA,IACE0B,YAAAA,CAAa2N,SAAS,CAACC,aAAa,CAACC,MAAM,CAAC;YAC1CC,wBAAAA,EAA0B5O,MAAAA,CAAO6O,cAAc,CAACC;SAClD,CAAA,EACF;AACEhP,QAAAA,SAAAA,EAAW,CAACC,IAAAA,GAAAA;AACViD,YAAAA,qBAAAA,CAAsBjD,MAAMS,QAAAA,EAAUR,MAAAA,CAAAA;AACxC,QAAA,CAAA;AACAP,QAAAA,OAAAA,EAAS,CAACU,KAAAA,GAAAA;YACRK,QAAAA,CAAS;gBACPN,IAAAA,EAAM,kCAAA;gBACN2B,SAAAA,EACE1B,KAAAA,CAAM4O,UAAU,KAAK,4CAAA,GACjBjN,iBAAUkN,kCAAkC,GAC5ClN,iBAAUmN,OAAO;gBACvBjN,SAAAA,EAAW;AACb,aAAA,CAAA;AACF,QAAA;AACF,KAAA,CAAA;IAGF,MAAMkN,qCAAAA,GACJb,yBAAAA,IAA6BrO,MAAAA,CAAOmP,uCAAuC;IAE7ElN,eAAAA,CAAU,IAAA;AACR,QAAA,IAAIiN,qCAAAA,EAAuC;AACzCX,YAAAA,wBAAAA,EAAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACW,QAAAA,qCAAAA;AAAuCX,QAAAA;AAAyB,KAAA,CAAA;AAEpE,IAAA,IAAIW,yCAAyCV,eAAAA,EAAiB;AAC5D,QAAA,qBAAOlT,wBAAA,CAAA,aAAA,CAACqQ,oBAAAA,EAAAA,IAAAA,CAAAA;AACV,IAAA;AAEA,IAAA,MAAMtI,QAAQ9C,KAAAA,CAAM6O,SAAS,CAACC,cAAc,CAAChM,KAAK;AAElD,IAAA,IAAIgL,yBAAAA,IAA6B,CAACrO,MAAAA,CAAOsP,yBAAyB,EAAE;AAClE,QAAA,qBACEhU,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;YAAOC,GAAAA,EAAK;yBACXvQ,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;YAAWC,OAAAA,EAAQ;;;;2BAIpB1Q,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;YAAWC,OAAAA,EAAQ;;;;;AAGJ3I,gBAAAA,KAAAA,EAAAA;;AAIhB,SAAA,CAAA,CAAA,gBAAA/H,wBAAA,CAAA,aAAA,CAACiU,yCACCjU,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;YAAOxD,OAAAA,EAAQ,SAAA;AAAUc,YAAAA,OAAAA,EAAS,IAAMyB,wBAAAA;;;;2BAGzCjT,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;YAAOxD,OAAAA,EAAQ,OAAA;YAAQc,OAAAA,EAASwB;;;;;AAMzC,IAAA;AAEA,IAAA,qBACEhT,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXvQ,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;;AAGJ3I,YAAAA,KAAAA,EAAAA;;uBAGhB/H,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;uBAMpB1Q,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUc,OAAAA,EAASwB;;;;;AAKzC,CAAA;AAEA,MAAMmB,oCAAAA,GAAuC,CAC3Cf,aAAAA,EACA1O,MAAAA,GAAAA;;IAGA,IAAI,CAACA,QAAQ0P,MAAAA,EAAQ;QACnB,OAAO,IAAA;AACT,IAAA;;IAGA,MAAMC,mBAAAA,GAAsBjB,aAAAA,CAAcrF,MAAM,CAAC,CAACuG,MAAQA,GAAAA,CAAIC,UAAU,CAAC3P,IAAI,KAAK,eAAA,CAAA;;AAGlF,IAAA,MAAM4P,qBAAAA,GAAwBpB,aAAAA,CAAcnK,IAAI,CAC9C,CAACqL,GAAAA,GACGA,CAAAA,GAAAA,CAAIC,UAAU,CAAC3P,IAAI,KAAK,oBAAoB0P,GAAAA,CAAIC,UAAU,CAAC3P,IAAI,KAAK,gBAAe,KACnF,CAACF,OAAO+P,aAAa,IACtB5B,gBAAAA,CAAiByB,GAAAA,CAAIC,UAAU,CAAC3P,IAAI,CAAA,IAAK,CAACF,OAAOgQ,qBAAqB,CAAA;;IAI3E,OAAOL,mBAAAA,CAAoBpJ,MAAM,KAAK,CAAA,IAAK,CAACuJ,qBAAAA,GAAwBH,mBAAmB,CAAC,CAAA,CAAE,GAAG,IAAA;AAC/F,CAAA;AAEO,MAAMtJ,SAAAA,GAAY,IAAA;IACvB,MAAM,CAAC9F,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;AAC1B,IAAA,MAAMK,YAAAA,GAAeC,gBAAAA,EAAAA;AACrB,IAAA,MAAMf,MAAAA,GAASa,gBAAAA,EAAAA;AACf,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQmK,6CAAAA,EAAAA;AACd,IAAA,MAAMiF,8BAAAA,GAAiC,CAAC,CAACjQ,MAAAA,CAAOkQ,8BAA8B,EAAER,MAAAA;IAChF,MAAM,EAAErB,yBAAyB,EAAE,GAAGxL,YAAAA,EAAAA;IAEtCZ,eAAAA,CAAU,IAAA;AACR,QAAA,IAAIkO,oBAAAA,EAAsB;;AAExB,YAAA;AACF,QAAA;QAEA,MAAMC,uBAAAA,GAA0BX,oCAAAA,CAC9BlP,KAAAA,CAAM6O,SAAS,CAACC,cAAc,CAAC9L,uBAAuB,EACtDvD,MAAAA,CAAOkQ,8BAA8B,CAAA;QAGvC,IAAID,8BAAAA,IAAkCG,4BAA4B,IAAA,EAAM;YACtEC,gCAAAA,CAAiCD,uBAAAA,CAAAA;AACnC,QAAA;;IAEF,CAAA,EAAG;AACDH,QAAAA,8BAAAA;AACA1P,QAAAA,KAAAA,CAAM6O,SAAS,CAACC,cAAc,CAAC9L,uBAAuB;AACtDvD,QAAAA,MAAAA,CAAOkQ;AACR,KAAA,CAAA;AAED,IAAA,MAAMG,mCAAmC,CAACC,sBAAAA,GAAAA;QACxC,MAAM5O,YAAAA,GAAe4O,uBAAuB5O,YAAY;QAExD,IAAI4O,sBAAAA,CAAuBC,gBAAgB,EAAE;AAC3C,YAAA,MAAMC,kBAAAA,GAAqBF,sBAAAA,CAAuBC,gBAAgB,CAACvG,oBAAoB;AACvF,YAAA,IACEwG,kBAAAA,IACAA,kBAAAA,CAAmBjK,MAAM,KAAK,CAAA,IAC9BiK,kBAAkB,CAAC,CAAA,CAAE,KAAK,KAAA,IAC1B9O,YAAAA,CAAa+O,yBAAyB,EACtC;AACAC,gBAAAA,QAAAA,CAAShP,aAAa+O,yBAAyB,CAAA;YACjD,CAAA,MAAO;gBACLjQ,QAAAA,CAAS;oBACPN,IAAAA,EAAM,gCAAA;AACNoQ,oBAAAA;AACF,iBAAA,CAAA;AACF,YAAA;QACF,CAAA,MAAO;YACLK,uBAAAA,CAAwB;AAAEC,gBAAAA,cAAAA,EAAgBlP,aAAamP;AAAgB,aAAA,CAAA;AACzE,QAAA;AACF,IAAA,CAAA;IAEA,MAAMH,QAAAA,GAAWtT,kBACf,CAAC0T,YAAAA,GAAAA;QACChQ,YAAAA,CAAakH,GAAG,CAAC+I,KAAK,CAAC;YACrBC,aAAAA,EAAeF,YAAAA;YACfG,kBAAAA,EAAoBjR,MAAAA,CAAOkR,UAAU,EAAEC,gBAAAA;YACvCC,mBAAAA,EAAqBpR,MAAAA,CAAOkR,UAAU,EAAEG;AAC1C,SAAA,CAAA;IACF,CAAA,EACA;AAACvQ,QAAAA,YAAAA;AAAcd,QAAAA,MAAAA,CAAOkR;AAAW,KAAA,CAAA;AAGnC,IAAA,MAAM,EAAE5P,OAAAA,EAASqP,uBAAuB,EAAEvQ,UAAAA,EAAY+P,oBAAoB,EAAE,GAAG/Q,SAAAA,CAM7E,CAAC,8CAA8C,CAAC,EAChD,CAACoC,CAAAA,EAAW,EAAEC,GAAAA,EAAK,EAAEmP,cAAc,EAAE,EAAuC,GAC1E9P,YAAAA,CAAa2N,SAAS,CAAC6C,oBAAoB,CAACC,QAAQ,CAAC;YACnDV,eAAAA,EAAiBD,cAAAA;YACjBhC,wBAAAA,EAA0B5O,MAAAA,CAAO6O,cAAc,CAACC;SAClD,CAAA,EACF;AACEhP,QAAAA,SAAAA,EAAW,CAACC,IAAAA,GAAAA;AACViD,YAAAA,qBAAAA,CAAsBjD,MAAMS,QAAAA,EAAUR,MAAAA,CAAAA;AACxC,QAAA,CAAA;AACAP,QAAAA,OAAAA,EAAS,CAACU,KAAAA,GAAAA;YACRK,QAAAA,CAAS;gBACPN,IAAAA,EAAM,kCAAA;gBACN2B,SAAAA,EACE1B,KAAAA,CAAM4O,UAAU,KAAK,4CAAA,GACjBjN,iBAAUkN,kCAAkC,GAC5ClN,iBAAUmN,OAAO;gBACvBjN,SAAAA,EAAW;AACb,aAAA,CAAA;AACF,QAAA;AACF,KAAA,CAAA;AAGF,IAAA,MAAM,EAAEV,OAAAA,EAASiN,wBAAwB,EAAEnO,UAAAA,EAAYoO,eAAe,EAAE,GAAGpP,SAAAA,CAKzE,uCAAA,EACA,IACE0B,YAAAA,CAAa2N,SAAS,CAACC,aAAa,CAACC,MAAM,CAAC;YAC1CC,wBAAAA,EAA0B5O,MAAAA,CAAO6O,cAAc,CAACC;SAClD,CAAA,EACF;AACEhP,QAAAA,SAAAA,EAAW,CAACC,IAAAA,GAAAA;AACViD,YAAAA,qBAAAA,CAAsBjD,MAAMS,QAAAA,EAAUR,MAAAA,CAAAA;AACxC,QAAA,CAAA;AACAP,QAAAA,OAAAA,EAAS,CAACU,KAAAA,GAAAA;YACRK,QAAAA,CAAS;gBACPN,IAAAA,EAAM,kCAAA;gBACN2B,SAAAA,EACE1B,KAAAA,CAAM4O,UAAU,KAAK,4CAAA,GACjBjN,iBAAUkN,kCAAkC,GAC5ClN,iBAAUmN,OAAO;gBACvBjN,SAAAA,EAAW;AACb,aAAA,CAAA;AACF,QAAA;AACF,KAAA,CAAA;AAGF,IAAA,IAAImO,oBAAAA,EAAsB;AACxB,QAAA,qBAAO7U,wBAAA,CAAA,aAAA,CAACkW,sBAAAA,EAAAA,IAAAA,CAAAA;AACV,IAAA;AAEA,IAAA,IAAIhD,eAAAA,EAAiB;AACnB,QAAA,qBAAOlT,wBAAA,CAAA,aAAA,CAACqQ,oBAAAA,EAAAA,IAAAA,CAAAA;AACV,IAAA;IAEA,IAAIpL,KAAAA,CAAM6O,SAAS,CAACC,cAAc,CAAC9L,uBAAuB,CAACgD,MAAM,KAAK,CAAA,EAAG;AACvE,QAAA,qBAAOjL,wBAAA,CAAA,aAAA,CAAC8S,uBAAAA,EAAAA,IAAAA,CAAAA;AACV,IAAA;IAEA,MAAMqD,mBAAAA,GAAsBlR,KAAAA,CAAM6O,SAAS,CAACC,cAAc,CAAC9L,uBAAuB,CAACsB,GAAG,CAAC,CAACyL,sBAAAA,GAAAA;AACtF,QAAA,MAAM,EAAE5O,YAAY,EAAEmO,UAAU,EAAE,GAAGS,sBAAAA;QAErC,IAAIzD,MAAAA;AACJ,QAAA,IAAIsB,iBAAiB0B,UAAAA,CAAW3P,IAAI,KAAK2P,UAAAA,CAAW3P,IAAI,KAAK,gBAAA,EAC3D2M,MAAAA,GAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;;aACG,IAAIgD,UAAAA,CAAW3P,IAAI,KAAK,gBAAA,EAC3B2M,MAAAA,GAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;;AAEF,QAAA,qBACEvR,wBAAA,CAAA,aAAA,CAACsR,eAAAA,EAAAA;YACClL,YAAAA,EAAcA,YAAAA;YACdmL,MAAAA,EAAQA,MAAAA;AACRC,YAAAA,OAAAA,EAAS,IAAMuD,gCAAAA,CAAiCC,sBAAAA;;AAGtD,IAAA,CAAA,CAAA;AAEA,IAAA,MAAMoB,2BACJrD,yBAAAA,IAA6B,CAACrO,MAAAA,CAAOsP,yBAAyB,iBAC5DhU,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;AAAUc,QAAAA,OAAAA,EAAS,IAAMyB,wBAAAA;;;;AAGvC,KAAA,CAAA,CAAA,GAAA,IAAA;AAEN,IAAA,MAAMoD,6BACJrW,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,OAAA;AAAQc,QAAAA,OAAAA,EAAS,IAAMtM,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,YAAA;AAAcsC,gBAAAA,MAAAA,EAAQC,kBAAWC;AAAK,aAAA;;;;;AAKhG,IAAA,qBACEpH,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXvQ,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;AAInB0F,KAAAA,CAAAA,CAAAA,EAAAA,wBAAAA;;kBAGCpW,wBAAA,CAAA,aAAA,CAACiU,mBAAAA,EAAAA;QACCqC,GAAAA,EAAKH,mBAAAA;AACLI,QAAAA,MAAAA,gBACEvW,gFACGoW,wBAAAA,EACAC,YAAAA;uBAKPrW,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;AACX,KAAA,gBAAAvQ,wBAAA,CAAA,aAAA,CAACiU,2BAAckC,mBAAAA,CAAAA,EACdE,YAAAA,CAAAA,CAAAA;AAKX,CAAA;;AC/TA,MAAMG,UAAAA,GAMF;IACF,CAACC,6BAAAA,CAAeC,IAAI,GAAG;QACrBC,iBAAiB,EAAA;;;;AACjBzP,QAAAA,MAAAA,EAAQC,kBAAWyP;AACrB,KAAA;IACA,CAACH,6BAAAA,CAAeI,MAAM,GAAG;QACvBF,iBAAiB,EAAA;;;;AACjBzP,QAAAA,MAAAA,EAAQC,kBAAW2P;AACrB;AACF,CAAA;AAEO,MAAMC,4BAAAA,GAA+B,IAAA;AAC1C,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQrH,6CAAAA,EAAAA;AACd,IAAA,MAAM,EAAE7H,iBAAiB,EAAEmP,eAAe,EAAE,GAAGzR,gBAAAA,EAAAA;IAE/C,MAAM,CAACN,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;;AAG1B,IAAA,MAAM,EAAE8R,+BAA+B,EAAE,GAAGhS,KAAAA,CAAMiS,GAAG,CAACC,WAAW;AAEjE,IAAA,MAAMC,iBAAiB,CAAClQ,MAAAA,GAAAA;QACtBhC,QAAAA,CAAS;YACPN,IAAAA,EAAM,YAAA;AACNsC,YAAAA,MAAAA;YACAmQ,OAAAA,EAAS;AACX,SAAA,CAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMC,iBAAiBhO,aAAAA,CAAQ,IAAA;AAC7B,QAAA,MAAMiO,mBAAmBC,wBAAAA,CAAkB;YACzCC,UAAAA,EAAYC,sBAAAA;YACZC,mBAAAA,EAAqBV,+BAAAA;YACrBW,iBAAAA,EAAmB/P;AACrB,SAAA,CAAA;AAEA,QAAA,MAAMxD,SAAkD,EAAE;QAC1D,KAAK,MAAMwT,MAAAA,IAAUb,eAAAA,IAAmBU,sBAAAA,CAAiB;YACvD,IAAIH,gBAAAA,CAAiBnN,GAAG,CAACyN,MAAAA,CAAAA,EAAS;AAChCxT,gBAAAA,MAAAA,CAAOqH,IAAI,CAACmM,MAAAA,CAAAA;AACZN,gBAAAA,gBAAAA,CAAiBO,MAAM,CAACD,MAAAA,CAAAA;AAC1B,YAAA;AACF,QAAA;AAEAxT,QAAAA,MAAAA,CAAOqH,IAAI,CAAA,GAAI6L,gBAAAA,CAAAA;QACf,OAAOlT,MAAAA;IACT,CAAA,EAAG;AAACwD,QAAAA,iBAAAA;AAAmBmP,QAAAA,eAAAA;AAAiBC,QAAAA;AAAgC,KAAA,CAAA;AAExE,IAAA,qBACEjX,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXvQ,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;uBAIpB1Q,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;AAOpB,KAAA,CAAA,CAAA,gBAAA1Q,wBAAA,CAAA,aAAA,CAACiU,mBAAAA,EAAAA,IAAAA,EACEqD,cAAAA,CAAe/N,GAAG,CAAC,CAACsO,MAAAA,GAAAA;QACnB,MAAM,EAAElB,iBAAiB,EAAEzP,MAAM,EAAE,GAAGsP,UAAU,CAACqB,MAAAA,CAAO;AACxD,QAAA,qBACE7X,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;YAAOrQ,GAAAA,EAAKgU,MAAAA;YAAQnH,OAAAA,EAAQ,SAAA;AAAUc,YAAAA,OAAAA,EAAS,IAAM4F,cAAAA,CAAelQ,MAAAA;AAChEyP,SAAAA,EAAAA,OAAAA,CAAAA,CAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;AAGT,IAAA,CAAA,CAAA,CAAA,CAAA;AAIR,CAAA;;AC7EA;AACA,MAAMoB,oBAAAA,GAAuB,IAAA;AAE7B;;AAEC,IACD,MAAMC,uBAAAA,SAAgCC,6BAAAA,CAAAA;IACpCC,WAAAA,EAAc;;AAEZ,QAAA,KAAK,CAAC,yBAAA,EAA2B,sBAAA,CAAA;AACnC,IAAA;AACF;AAEO,MAAMC,kBAAAA,GAAqB,IAAA;AAChC,IAAA,MAAM3S,YAAAA,GAAeC,gBAAAA,EAAAA;IACrB,MAAM,CAACR,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQuK,6CAAAA,EAAAA;IACd,MAAM,EAAE0I,aAAa,EAAE,GAAG7S,gBAAAA,EAAAA;AAC1B,IAAA,MAAM,EACJ2R,GAAAA,EAAK,EACHL,MAAAA,EAAQ,EAAEwB,SAAS,EAAEC,SAAS,EAAEC,cAAc,EAAE,EACjD,EACF,GAAGtT,KAAAA;;IAGJ,MAAM,EAAEuT,QAAQ,EAAElD,cAAc,EAAE,GAAGrQ,KAAAA,CAAMiS,GAAG,CAACC,WAAW;IAE1D,MAAM,CAACsB,aAAaC,cAAAA,CAAe,GAAG1Y,yBAAMsF,QAAQ,CAClDiT,gBAAgBE,WAAAA,IAAeV,oBAAAA,CAAAA;IAEjC,MAAM,CAACY,aAAaC,cAAAA,CAAe,GAAG5Y,yBAAMsF,QAAQ,CAACiT,gBAAgBI,WAAAA,IAAe,EAAA,CAAA;IAEpF,MAAME,YAAAA,GAAe7Y,wBAAAA,CAAMsJ,OAAO,CAAC,IAAA;QACjC,IAAI,CAACgP,WAAW,OAAOvT,SAAAA;AAEvB,QAAA,IAAIuT,qBAAqBN,uBAAAA,EAAyB;AAChD,YAAA,OAAA,OAAA,CAAA,CAAA,CAAA;;;;AAIF,QAAA;AAEA,QAAA,OAAOc,yBAAAA,CAAmBR,SAAAA,EAAAA,GAAAA,CAAAA;IAC5B,CAAA,EAAG;AAACA,QAAAA,SAAAA;;AAAa,KAAA,CAAA;IAEjB,MAAM,EAAES,gBAAgB,EAAEC,gBAAgB,EAAE,GAAGC,0BAAAA,CAAoBrS,+BAAAA,CAAiBpB,YAAAA,CAAAA,CAAc0T,kBAAkB,CAAA;AAEpH,IAAA,MAAM,EAAElT,OAAAA,EAASmT,OAAO,EAAE,GAAGrV,UAM3B,sBAAA,EACA,OAAOoC,CAAAA,EAAW,EAAEC,KAAK,EAAEiT,YAAY,EAAEC,MAAM,EAAE,EAAsD,GAAA;AACrG,QAAA,OAAO7T,aAAa8T,IAAI,CAACC,GAAG,CAACC,IAAI,CAAC;YAChCC,gBAAAA,EAAkBL,YAAAA;YAClBM,SAAAA,EAAWlB,QAAAA;YACXjD,eAAAA,EAAiBD,cAAAA;YACjB+D,MAAAA,EAAQA;AACV,SAAA,CAAA;IACF,CAAA,EACA;AACE7U,QAAAA,SAAAA,EAAW,CAACmD,QAAAA,GAAAA;YACVzC,QAAAA,CAAS;gBACPN,IAAAA,EAAM,sBAAA;AACN+C,gBAAAA,QAAAA;AACA8Q,gBAAAA,WAAAA;AACAE,gBAAAA,WAAAA;gBACAgB,oBAAAA,EAAsB,CAAC,CAAC,EAAEC,qBAAc,CAACnB,WAAAA,CAAY,CAAC,CAAC,EAAEE,WAAAA,CAAAA;AAC3D,aAAA,CAAA;AACF,QAAA,CAAA;AACAxU,QAAAA,OAAAA,EAAS,CAACU,KAAAA,GAAAA;YACRK,QAAAA,CAAS;gBACPN,IAAAA,EAAM,oBAAA;AACNC,gBAAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,KAAA,CAAA;AAGF,IAAA,MAAMgV,eAAe,OAAOC,CAAAA,GAAAA;AAC1BA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;QAEhB7U,QAAAA,CAAS;YAAEN,IAAAA,EAAM;AAAe,SAAA,CAAA;QAChC,IAAI;;;;YAKF,MAAMwU,YAAAA,GAAe,MAAMY,uCAAAA,CAAiC;AAC1DjB,gBAAAA,gBAAAA;AACAJ,gBAAAA,WAAAA;gBACAsB,OAAAA,EAASxB;AACX,aAAA,CAAA;YAEA,IAAI,CAACW,YAAAA,CAAac,OAAO,EAAE;AACzB,gBAAA,MAAM,IAAIlC,uBAAAA,EAAAA;AACZ,YAAA;AAEA,YAAA,MAAMmB,OAAAA,CAAQ;AAAEC,gBAAAA,YAAAA,EAAcA,aAAae,MAAM;AAAEd,gBAAAA,MAAAA,EAAQjB,aAAAA,EAAeiB;AAAO,aAAA,CAAA;AACnF,QAAA,CAAA,CAAE,OAAOxU,KAAAA,EAAO;YACdK,QAAAA,CAAS;gBACPN,IAAAA,EAAM,oBAAA;AACNC,gBAAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,qBACE7E,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAO8J,EAAAA,EAAG,MAAA;QAAO7J,GAAAA,EAAK,CAAA;QAAG8J,QAAAA,EAAUR;qBAClC7Z,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;uBAOpB1Q,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;uBAOpB1Q,wBAAA,CAAA,aAAA,CAACsa,iBAAAA,EAAAA;QACCL,OAAAA,EAASxB,WAAAA;QACT8B,UAAAA,EAAY7B,cAAAA;QACZ8B,KAAAA,EAAO7B,WAAAA;QACP8B,QAAAA,EAAU7B,cAAAA;QACVG,gBAAAA,EAAkBA,gBAAAA;QAClBC,gBAAAA,EAAkBA,gBAAAA;QAClBnU,KAAAA,EAAOgU;AAGT,KAAA,CAAA,gBAAA7Y,wBAAA,CAAA,aAAA,CAACiU,yCACCjU,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUgK,OAAAA,EAASrC,SAAAA;QAAWzT,IAAAA,EAAK,QAAA;AAAS+V,QAAAA,QAAAA,EAAU,CAAChC,WAAAA,IAAeN;;;;AAGrF3R,KAAAA,CAAAA,CAAAA,EAAAA,gBAAAA,CAAUzB,wBACTjF,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,OAAA;AAAQc,QAAAA,OAAAA,EAAS,IAAMtM,QAAAA,CAAS;gBAAEN,IAAAA,EAAM;AAAgB,aAAA;;;;;AAOlF,CAAA;;AC3IO,MAAMgW,iBAAAA,GAAoB,IAAA;AAC/B,IAAA,MAAMpV,YAAAA,GAAeC,gBAAAA,EAAAA;IACrB,MAAM,EACJ8N,gBAAgB,EAAEC,sBAAsB,EAAE,EAC1C4E,aAAa,EACd,GAAG7S,gBAAAA,EAAAA;AACJ,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQmK,6CAAAA,EAAAA;IAEd,MAAM,CAACzK,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;IAC1B,MAAM,EACJ+R,GAAAA,EAAK,EAAE2D,WAAW,EAAEhE,MAAM,EAAEM,WAAW,EAAE,EAC1C,GAAGlS,KAAAA;AAEJ,IAAA,MAAM,EAAE6V,cAAc,EAAEC,oBAAoB,EAAE,GAAGlE,MAAAA;;IAGjD,MAAM,EAAEmE,kBAAkB,EAAExC,QAAQ,EAAEyC,iBAAiB,EAAE3F,cAAc,EAAE2B,+BAA+B,EAAE,GACxGE,WAAAA;AAEF,IAAA,MAAM+D,eAAAA,GAAkBC,mBAAAA,EAAAA;IAExB,MAAM,EACJnV,OAAAA,EAASmT,OAAO,EAChBrU,UAAAA,EAAYuT,SAAS,EACrBxT,KAAAA,EAAOyT,SAAS,EACjB,GAAGxU,SAAAA,CAMF,wBACA,CACEoC,CAAAA,EACA,EACEC,GAAAA,EAAK,EAAEqS,QAAQ,EAAElD,cAAc,EAAE+D,MAAM,EAAE,EAC8B,GAAA;QAEzEnU,QAAAA,CAAS;YAAEN,IAAAA,EAAM;AAAe,SAAA,CAAA;AAChC,QAAA,OAAOY,aAAa8T,IAAI,CAACC,GAAG,CAACC,IAAI,CAAC;YAAEE,SAAAA,EAAWlB,QAAAA;YAAUjD,eAAAA,EAAiBD,cAAAA;AAAgB+D,YAAAA;AAAO,SAAA,CAAA;IACnG,CAAA,EACA;AACE7U,QAAAA,SAAAA,EAAW,CAACmD,QAAAA,GAAAA;YACVzC,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,sBAAA;AAAwB+C,gBAAAA;AAAS,aAAA,CAAA;AACpD,QAAA,CAAA;AACAxD,QAAAA,OAAAA,EAAS,CAACU,KAAAA,GAAAA;AACR,YAAA,MAAMuW,UAAUtC,yBAAAA,CAAmBjU,KAAAA,EAAAA,GAAAA,CAAAA;AACnC,YAAA,IAAIuW,OAAAA,EAAS;gBACXC,iBAAAA,CAAW;AAAED,oBAAAA;AAAQ,iBAAA,CAAA;AACvB,YAAA;YACAlW,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,oBAAA;gBAAsBC,KAAAA,EAAOuW;AAAQ,aAAA,CAAA;AACxD,QAAA,CAAA;;QAEA7W,YAAAA,EAAc;AAChB,KAAA,CAAA;AAGF,IAAA,MAAM,EACJyB,OAAAA,EAASsV,YAAY,EACrBxW,YAAYyW,gBAAgB,EAC5B1W,KAAAA,EAAO2W,iBAAiB,EACzB,GAAG1X,SAAAA,CAMF,8BAAA,EACA,CACEoC,GACA,EACEC,GAAAA,EAAK,EAAEsV,GAAG,EAAEjD,QAAQ,EAAElD,cAAc,EAAE9B,sBAAsB,EAAE,EACqC,GAErGhO,aAAa8T,IAAI,CAACC,GAAG,CAAC+B,YAAY,CAAC;YACjCI,IAAAA,EAAMD,GAAAA;YACN/B,SAAAA,EAAWlB,QAAAA;YACXjD,eAAAA,EAAiBD,cAAAA;YACjBhC,wBAAAA,EAA0BE;SAC5B,CAAA,EACF;QACEhP,SAAAA,EAAW,IAAA;YACTU,QAAAA,CAAS;gBAAEN,IAAAA,EAAM;AAA+B,aAAA,CAAA;AAClD,QAAA,CAAA;QACAT,OAAAA,EAAS,IAAA;AACP+W,YAAAA,eAAAA,CAAgBS,KAAK,EAAA;AACvB,QAAA;AACF,KAAA,CAAA;AAGF,IAAA,MAAMC,YAAAA,GAAed,cAAAA,KAAmB,IAAA,IAAQ,CAACzC,aAAa,CAACC,SAAAA;IAC/D3R,eAAAA,CAAU,IAAA;AACR,QAAA,IAAIiV,YAAAA,EAAc;YAChBzC,OAAAA,CAAQ;AAAEX,gBAAAA,QAAAA;AAAUlD,gBAAAA,cAAAA;AAAgB+D,gBAAAA,MAAAA,EAAQjB,aAAAA,EAAeiB;AAAO,aAAA,CAAA,CAAGwC,KAAK,CAAC,IAAA;;AAE3E,YAAA,CAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACrD,QAAAA,QAAAA;AAAUlD,QAAAA,cAAAA;AAAgB6D,QAAAA,OAAAA;AAASyC,QAAAA,YAAAA;QAAcxD,aAAAA,EAAeiB;AAAO,KAAA,CAAA;IAE3E1S,eAAAA,CAAU,IAAA;QACR,IAAI,CAACoU,wBAAwBE,iBAAAA,EAAmB;AAC9C,YAAA,MAAMa,kBAAAA,GAAqB,UAAA;gBACzB,MAAM/C,gBAAAA,GAAmB,CAACJ,WAAAA,GACxB/R,+BAAAA,CAAiBpB,cAAc0T,kBAAkB,CAAC6C,iBAAiB,CAAC;AAClEpD,wBAAAA;AACF,qBAAA,CAAA;gBAEF,MAAMqD,QAAAA,GAAW,MAAMC,mBAAAA,CAAa;AAClClD,oBAAAA,gBAAAA;oBACAJ,WAAAA,EAAasC;AACf,iBAAA,CAAA;gBAEA/V,QAAAA,CAAS;oBACPN,IAAAA,EAAM,4BAAA;oBACN+U,oBAAAA,EAAsBqC;AACxB,iBAAA,CAAA;AACF,YAAA,CAAA;AAEAF,YAAAA,kBAAAA,EAAAA;AACF,QAAA;IACF,CAAA,EAAG;AAAC5W,QAAAA,QAAAA;AAAU6V,QAAAA,oBAAAA;AAAsBvV,QAAAA,YAAAA;AAAcyV,QAAAA;AAAkB,KAAA,CAAA;IAEpE,MAAMiB,eAAAA,GAAkB5S,cACtB,IACE,CAACuR,eACDG,kBAAAA,CAAmBmB,QAAQ,CAAC1F,6BAAAA,CAAeC,IAAI,CAAA,KAC9CO,+BAAAA,CAAgChM,MAAM,KAAK,CAAA,IAAKgM,+BAAAA,CAAgCkF,QAAQ,CAAC1F,6BAAAA,CAAeC,IAAI,CAAA,CAAA,EAC/G;AAACsE,QAAAA,kBAAAA;AAAoBH,QAAAA,WAAAA;AAAa5D,QAAAA;AAAgC,KAAA,CAAA;AAEpE,IAAA,MAAM4B,YAAAA,GAAe2C,iBAAAA,GAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;AAEjBzW,KAAAA,CAAAA,GAAAA,SAAAA;;;;;IAMJ,MAAM2B,SAAAA,GAAY4C,cAChB,IACEuR,WAAAA,IACAG,mBAAmB/P,MAAM,KAAK,KAC7BgM,+BAAAA,CAAgChM,MAAM,GAAG,CAAA,IACxC,CAAC+P,mBAAmB/R,IAAI,CAAC,CAACmT,cAAAA,GAAmBnF,+BAAAA,CAAgCkF,QAAQ,CAACC,cAAAA,CAAAA,CAAAA,EAC1F;AAACpB,QAAAA,kBAAAA;AAAoBH,QAAAA,WAAAA;AAAa5D,QAAAA;AAAgC,KAAA,CAAA;AAGpE,IAAA,MAAM4C,eAAe,CAAC4B,GAAAA,GAAAA;QACpBH,YAAAA,CAAa;AAAEG,YAAAA,GAAAA;AAAKjD,YAAAA,QAAAA;AAAUlD,YAAAA,cAAAA;AAAgB9B,YAAAA;AAAuB,SAAA,CAAA;AACvE,IAAA,CAAA;AAEA,IAAA,MAAM6I,kBAAAA,GAAqB,IAAA;QACzBnX,QAAAA,CAAS;YAAEN,IAAAA,EAAM,YAAA;YAAcyS,OAAAA,EAAS,MAAA;AAAQnQ,YAAAA,MAAAA,EAAQC,kBAAWmV;AAAU,SAAA,CAAA;AAC/E,IAAA,CAAA;AAEA,IAAA,MAAMC,eAAAA,GAAkB,UAAA;AACtB,QAAA,MAAMpD,OAAAA,CAAQ;AAAEX,YAAAA,QAAAA;AAAUlD,YAAAA,cAAAA;AAAgB+D,YAAAA,MAAAA,EAAQjB,aAAAA,EAAeiB;AAAO,SAAA,CAAA;AAC1E,IAAA,CAAA;AAEA,IAAA,MAAMmD,UAAAA,GAAa,IAAA;QACjBtX,QAAAA,CAAS;YAAEN,IAAAA,EAAM;AAAgB,SAAA,CAAA;AACnC,IAAA,CAAA;AAEA,IAAA,MAAM6X,6BACJzc,wBAAA,CAAA,aAAA,CAAC0c,sBAAAA,EAAAA;QAAgBC,SAAAA,EAAWzB,eAAAA;QAAiB0B,YAAAA,EAAcrB,gBAAAA;QAAkBsB,SAAAA,EAAWN;;IAE1F,MAAMO,kBAAAA,GAAqBZ,iCACzBlc,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,OAAA;QAAQc,OAAAA,EAAS6K;;;;;IAInC,MAAMU,UAAAA,GAAarW,2BACjB1G,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,OAAA;QAAQc,OAAAA,EAASgL;;;;;AAKnC,IAAA,qBACExc,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;AACVuK,KAAAA,EAAAA,cAAAA,KAAmB,qBAClB9a,wBAAA,CAAA,aAAA,CAACgd,mBAAAA,EAAAA;QACCJ,YAAAA,EAAcrB,gBAAAA;QACdlB,QAAAA,EAAUR,YAAAA;QACVhB,YAAAA,EAAcA,YAAAA;AACdoE,QAAAA,UAAAA,EAAYnC,eAAeoC,OAAO,EAAA;AAClCnC,QAAAA,oBAAAA,EAAsBA,wBAAwBE,iBAAAA,IAAqB;uBAGrEjb,wBAAA,CAAA,aAAA,CAACqQ,oBAAAA,EAAAA,IAAAA,CAAAA,EAGFyM,kBAAAA,IAAsBC,UAAAA,iBACrB/c,wBAAA,CAAA,aAAA,CAACiU,mBAAAA,EAAAA;QACCqC,GAAAA,EAAKmG,YAAAA;AACLlG,QAAAA,MAAAA,gBACEvW,gFACG8c,kBAAAA,EACAC,UAAAA;uBAKP/c,wBAAA,CAAA,aAAA,CAACiU,mBAAAA,EAAAA,IAAAA,EACEwI,cACAK,kBAAAA,EACAC,UAAAA,CAAAA,CAAAA;AAKX,CAAA;;;;;;AC7NO,MAAMI,uBAAAA,GAA0B,IAAA;AACrC,IAAA,MAAM3X,YAAAA,GAAeC,gBAAAA,EAAAA;AACrB,IAAA,MAAM,EACJ8N,cAAAA,EAAgB,EAAEC,sBAAsB,EAAE,EAC3C,GAAGjO,gBAAAA,EAAAA;AACJ,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQmK,6CAAAA,EAAAA;IAEd,MAAM,CAACzK,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;;IAG1B,MAAM,EAAEqT,QAAQ,EAAElD,cAAc,EAAE,GAAGrQ,KAAAA,CAAMiS,GAAG,CAACC,WAAW;AAE1D,IAAA,MAAM,EACJnR,OAAAA,EAASsV,YAAY,EACrBxW,UAAAA,EAAY8X,YAAY,EACxB/X,KAAK,EACN,GAAGf,SAAAA,CAMF,8BAAA,EACA,CACEoC,CAAAA,EACA,EACEC,GAAAA,EAAK,EAAEiX,YAAY,EAAE5E,QAAQ,EAAElD,cAAc,EAAE9B,sBAAsB,EAAE,EACqC,GAE9GhO,YAAAA,CAAa6X,aAAa,CAACC,OAAO,CAAC;YACjCC,aAAAA,EAAeH,YAAAA;YACf1D,SAAAA,EAAWlB,QAAAA;YACXjD,eAAAA,EAAiBD,cAAAA;YACjBhC,wBAAAA,EAA0BE;SAC5B,CAAA,EACF;QACEjP,YAAAA,EAAc,KAAA;QACdC,SAAAA,EAAW,IAAA;YACTU,QAAAA,CAAS;gBAAEN,IAAAA,EAAM;AAAqC,aAAA,CAAA;AACxD,QAAA;AACF,KAAA,CAAA;AAGF,IAAA,MAAM,CAACwY,YAAAA,EAAcI,eAAAA,CAAgB,GAAGlY,cAAAA,CAAS,EAAA,CAAA;AACjD,IAAA,MAAMuT,YAAAA,GAAehU,KAAAA,GAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;AAEjBE,KAAAA,CAAAA,GAAAA,SAAAA;AAEJ,IAAA,MAAM8U,eAAe,OAAOC,CAAAA,GAAAA;AAC1BA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;QAChBuB,YAAAA,CAAa;AAAE8B,YAAAA,YAAAA;AAAc5E,YAAAA,QAAAA;AAAUlD,YAAAA,cAAAA;AAAgB9B,YAAAA;AAAuB,SAAA,CAAA;AAChF,IAAA,CAAA;AAEA,IAAA,qBACExT,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAO8J,EAAAA,EAAG,MAAA;QAAO7J,GAAAA,EAAK,CAAA;QAAG8J,QAAAA,EAAUR;qBAClC7Z,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;uBACpB1Q,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;uBAOpB1Q,wBAAA,CAAA,aAAA,CAACyd,YAAAA,EAAAA;QACC3c,EAAAA,EAAG,eAAA;AACHO,QAAAA,SAAAA,EAAW+P,iBAAOsM,KAAK;QACvBC,KAAAA,EAAOP,YAAAA;AACPQ,QAAAA,QAAAA,EAAU,CAAC9D,CAAAA,GAAAA;YACT0D,eAAAA,CAAgB1D,CAAAA,CAAE+D,MAAM,CAACF,KAAK,CAAA;AAChC,QAAA,CAAA;QACAG,WAAW,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QACXC,KAAK,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QACLC,SAAAA,EAAAA,IAAAA;QACAC,QAAAA,EAAAA,IAAAA;QACAC,YAAAA,EAAa,KAAA;QACbC,UAAAA,EAAY,KAAA;QACZtZ,KAAAA,EAAOgU;AAGT,KAAA,CAAA,gBAAA7Y,wBAAA,CAAA,aAAA,CAACiU,yCACCjU,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUgK,OAAAA,EAASkC,YAAAA;QAAchY,IAAAA,EAAK,QAAA;AAAS+V,QAAAA,QAAAA,EAAU,CAACyC,YAAAA,IAAgBR;;;;uBAG1F5c,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,OAAA;AAAQc,QAAAA,OAAAA,EAAS,IAAMtM,QAAAA,CAAS;gBAAEN,IAAAA,EAAM;AAAgB,aAAA;;;;;AAMhF,CAAA;;;;;;AC/FA,MAAMwZ,aAAAA,GAA8C,CAAC,EAAEC,QAAQ,EAAEhd,SAAS,EAAE,GAAGtB,KAAAA,EAAO,iBACpFC,wBAAA,CAAA,aAAA,CAAC8R,KAAAA,EAAAA;QAAIzQ,SAAAA,EAAW4Q,iBAAAA,CAAW5Q,SAAAA,EAAW+P,gBAAAA,CAAOkN,SAAS,CAAA;AAAI,QAAA,GAAGve;AAC1Dse,KAAAA,EAAAA,QAAAA,CAAAA;;;;;;ACKE,MAAME,sBAAAA,GAAyB,IAAA;IACpC,MAAM,CAACtZ,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQuK,6CAAAA,EAAAA;;IAGd,MAAM,EAAE2N,aAAa,EAAE,GAAGpY,MAAMiS,GAAG,CAACR,IAAI,CAAC8H,UAAU;AAEnD,IAAA,MAAMC,cAAAA,GAAiB,IAAA;QACrBvZ,QAAAA,CAAS;YAAEN,IAAAA,EAAM;AAAiC,SAAA,CAAA;AACpD,IAAA,CAAA;AAEA,IAAA,MAAM8Z,cAAcpV,aAAAA,CAAQ,IAAA;AAC1B,QAAA,MAAMqV,OAAAA,GAAUC,SAAAA,CAAUC,QAAQ,KAAK,UAAU,MAAA,GAAS,IAAA;QAC1D,MAAMC,IAAAA,GAAO,IAAIC,IAAAA,CAAK;AAAC1B,YAAAA,aAAAA,CAAc2B,IAAI,CAACL,OAAAA;SAAS,EAAE;YAAE/Z,IAAAA,EAAM;AAAa,SAAA,CAAA;QAC1E,OAAOwD,GAAAA,CAAI6W,eAAe,CAACH,IAAAA,CAAAA;IAC7B,CAAA,EAAG;AAACzB,QAAAA;AAAc,KAAA,CAAA;AAElB,IAAA,MAAMrN,gBAAAA,GAAmB/K,KAAAA,CAAMgC,SAAS,CAACb,YAAY,EAAE6J,iBAAAA;AACvD,IAAA,MAAMiP,QAAAA,GAAWlP,gBAAAA,GAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;;AACsDA,YAAAA,gBAAAA,EAAAA;;;;;;AAMvE,IAAA,MAAM,CAACmP,MAAAA,EAAQC,SAAAA,CAAU,GAAGC,sBAAAA,CAAgB,CAAA,CAAA;AAC5C,IAAA,MAAMC,eAAAA,GAAkB,UAAA;QACtB,IAAI;AACF,YAAA,MAAMV,UAAUW,SAAS,CAACC,SAAS,CAACnC,aAAAA,CAAc2B,IAAI,CAAC,IAAA,CAAA,CAAA;YACvDI,SAAAA,CAAU,IAAA,CAAA;AACZ,QAAA,CAAA,CAAE,OAAM;YACN/D,iBAAAA,CAAW;gBACTD,OAAO,EAAA,OAAA,CAAA,CAAA,CAAA;;;;AACT,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,MAAMqE,aAAAA,GAAgBC,IAAAA,CAAKC,GAAG,CAAA,GAAItC,aAAAA,CAAc9T,GAAG,CAAC,CAACmS,IAAAA,GAASA,IAAAA,CAAKzQ,MAAM,CAAA,CAAA;AAEzE,IAAA,qBACEjL,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXvQ,wBAAA,CAAA,aAAA,CAAC4f,iBAAAA,EAAAA;QACCC,MAAM,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QACNC,IAAI,EAAA,OAAA,CAAA,CAAA,CAAA;;;;AAMN,KAAA,CAAA,gBAAA9f,wBAAA,CAAA,aAAA,CAACoe,mCACCpe,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWsP,IAAAA,EAAK;qBACf/f,wBAAA,CAAA,aAAA,CAACggB,IAAAA,EAAAA;AAAG3e,QAAAA,SAAAA,EAAW+P,iBAAO6O,KAAK;QAAEC,KAAAA,EAAO;AAAE,YAAA,sBAAA,EAAwBT,aAAAA,GAAgB;AAAK;AAChFpC,KAAAA,EAAAA,aAAAA,CAAc9T,GAAG,CAAC,CAACmS,IAAAA,EAAMpQ,kBACxBtL,wBAAA,CAAA,aAAA,CAACmgB,IAAAA,EAAAA;YAAGtc,GAAAA,EAAKyH;WAAIoQ,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAMrB1b,wBAAA,CAAA,aAAA,CAACiU,yCAECjU,wBAAA,CAAA,aAAA,CAACogB,mBAAAA,EAAAA;QAAa1P,OAAAA,EAAQ,SAAA;QAAU3K,IAAAA,EAAM2Y,WAAAA;AAAa2B,QAAAA,QAAAA,EAAUnB,QAAAA,GAAW;qBACtElf,wBAAA,CAAA,aAAA,CAACuS,yBAAAA,EAAAA;QACCjE,OAAO,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QACPsE,SAAS,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QACT0N,SAAAA,EAAWnB;uBAGfnf,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUc,OAAAA,EAAS8N;;;;uBAGnCtf,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,OAAA;QAAQc,OAAAA,EAASiN;;;;;AAMzC,CAAA;;;;;;AC1EO,MAAM8B,kBAAAA,GAAqB,IAAA;AAChC,IAAA,MAAM/a,YAAAA,GAAeC,gBAAAA,EAAAA;IACrB,MAAM,CAACR,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQuK,6CAAAA,EAAAA;AACd,IAAA,MAAM,EACJwH,GAAAA,EAAK,EACHR,IAAAA,EAAM,EAAE8J,WAAW,EAAEhC,UAAU,EAAEiC,UAAU,EAAE,EAC9C,EACF,GAAGxb,KAAAA;;;IAIJ,MAAM,EAAEuT,QAAQ,EAAElD,cAAc,EAAE,GAAGrQ,KAAAA,CAAMiS,GAAG,CAACC,WAAW;AAE1D,IAAA,MAAM,EAAEnR,OAAAA,EAAS0a,UAAU,EAAE,GAAG5c,UAM9B,oBAAA,EACA,CAACoC,CAAAA,EAAW,EAAEC,KAAK,EAAEqS,QAAQ,EAAElD,cAAc,EAAE,EAAyD,GAAA;QACtGpQ,QAAAA,CAAS;YAAEN,IAAAA,EAAM;AAAc,SAAA,CAAA;AAC/B,QAAA,OAAOY,YAAAA,CAAakR,IAAI,CAACrD,MAAM,CAAC;YAAEqG,SAAAA,EAAWlB,QAAAA;YAAUjD,eAAAA,EAAiBD;AAAe,SAAA,CAAA;IACzF,CAAA,EACA;AACE9Q,QAAAA,SAAAA,EAAW,CAACmD,QAAAA,GAAAA;YACVzC,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,qBAAA;AAAuB+C,gBAAAA,QAAAA;AAAU6Q,gBAAAA,QAAAA;AAAUlD,gBAAAA;AAAe,aAAA,CAAA;AAC7E,QAAA,CAAA;AACAnR,QAAAA,OAAAA,EAAS,CAACU,KAAAA,GAAAA;AACR,YAAA,MAAMuW,UAAUtC,yBAAAA,CAAmBjU,KAAAA,EAAAA,GAAAA,CAAAA;AACnC,YAAA,IAAIuW,OAAAA,EAAS;gBACXC,iBAAAA,CAAW;AAAED,oBAAAA;AAAQ,iBAAA,CAAA;AACvB,YAAA;YACAlW,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,mBAAA;AAAqBC,gBAAAA;AAAM,aAAA,CAAA;AAC9C,QAAA;AACF,KAAA,CAAA;AAGF,IAAA,MAAM+W,YAAAA,GAAe,CAAC4C,UAAAA,IAAc,CAACiC,cAAc,CAACD,WAAAA;IACpD7Z,eAAAA,CAAU,IAAA;AACR,QAAA,IAAIiV,YAAAA,EAAc;YAChB8E,UAAAA,CAAW;AAAElI,gBAAAA,QAAAA;AAAUlD,gBAAAA;AAAe,aAAA,CAAA;AACxC,QAAA;IACF,CAAA,EAAG;AAACoL,QAAAA,UAAAA;AAAYlI,QAAAA,QAAAA;AAAUlD,QAAAA,cAAAA;AAAgBsG,QAAAA;AAAa,KAAA,CAAA;AAEvD,IAAA,MAAM+E,oBAAAA,GAAuB,IAAA;QAC3Bzb,QAAAA,CAAS;YAAEN,IAAAA,EAAM,gBAAA;YAAkB4I,MAAAA,EAAQ;AAAS,SAAA,CAAA;AACtD,IAAA,CAAA;AAEA,IAAA,MAAMiR,cAAAA,GAAiB,IAAA;QACrBvZ,QAAAA,CAAS;YAAEN,IAAAA,EAAM,YAAA;YAAcyS,OAAAA,EAAS,MAAA;AAAQnQ,YAAAA,MAAAA,EAAQC,kBAAWmV;AAAU,SAAA,CAAA;AAC/E,IAAA,CAAA;AAEA,IAAA,qBACEtc,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXvQ,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;uBAIpB1Q,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;AAQnB8N,KAAAA,CAAAA,CAAAA,EAAAA,UAAAA,iBACCxe,8FACEA,wBAAA,CAAA,aAAA,CAAC2R,KAAAA,EAAAA;QACCE,GAAG,EAAA,OAAA,CAAA,CAAA,CAAA;;;;AACHD,QAAAA,GAAAA,EAAK4M,WAAWoC,MAAM;AACtBvf,QAAAA,SAAAA,EAAW+P,iBAAOyP;AAGpB,KAAA,CAAA,gBAAA7gB,wBAAA,CAAA,aAAA,CAACiU,yCACCjU,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUc,OAAAA,EAASiN;;;;uBAGnCze,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUc,OAAAA,EAASmP;;;;0BAMvC3gB,wBAAA,CAAA,aAAA,CAACqQ,oBAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAIT,CAAA;;;;;;AC5FA,MAAMyQ,UAAAA,GAAa,CAAA;AAEZ,MAAMC,sBAAAA,GAAyB,IAAA;IACpC,MAAM,CAAC9b,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQuK,6CAAAA,EAAAA;AAEd,IAAA,MAAM,CAACyP,MAAAA,EAAQC,SAAAA,CAAU,GAAGC,sBAAAA,CAAgB,CAAA,CAAA;;IAG5C,MAAM,EAAE2B,MAAM,EAAE,GAAG/b,MAAMiS,GAAG,CAACR,IAAI,CAAC8H,UAAU;IAE5C,MAAMyC,aAAAA,GAAgBD,OAAOE,WAAW,EAAA;AACxC,IAAA,MAAMC,aAAAA,GAAgBF,aAAAA,CAAcG,KAAK,CAAC,IAAIxY,MAAAA,CAAO,CAAC,GAAG,EAAEkY,WAAW,EAAE,CAAC,EAAE,GAAA,CAAA,CAAA,CAAM/S,MAAM,CAACsT,OAAAA,CAAAA;IAExF,MAAM,EAAEC,OAAO,EAAEC,WAAW,EAAE,GAAGC,cAAAA,CAAeL,cAAclW,MAAM,CAAA;IAEpE,MAAMuR,UAAAA,GAAa,IAAMtX,QAAAA,CAAS;YAAEN,IAAAA,EAAM;AAAgB,SAAA,CAAA;AAE1D,IAAA,MAAM6Z,cAAAA,GAAiB,IAAA;QACrBvZ,QAAAA,CAAS;YAAEN,IAAAA,EAAM,YAAA;YAAcyS,OAAAA,EAAS,MAAA;AAAQnQ,YAAAA,MAAAA,EAAQC,kBAAWmV;AAAU,SAAA,CAAA;AAC/E,IAAA,CAAA;AAEA,IAAA,MAAMmF,cAAAA,GAAiB,UAAA;QACrB,IAAI;AACF,YAAA,MAAM7C,SAAAA,CAAUW,SAAS,CAACC,SAAS,CAACyB,aAAAA,CAAAA;YACpC7B,SAAAA,CAAU,IAAA,CAAA;AACZ,QAAA,CAAA,CAAE,OAAM;YACN/D,iBAAAA,CAAW;gBACTD,OAAO,EAAA,OAAA,CAAA,CAAA,CAAA;;;;AACT,aAAA,CAAA;;YAGA,MAAMsG,SAAAA,GAAY7b,OAAO8b,YAAY,EAAA;YACrC,IAAIL,OAAAA,CAAQM,OAAO,IAAIF,SAAAA,EAAW;AAChCA,gBAAAA,SAAAA,CAAUG,KAAK,EAAA;gBACf,MAAMC,KAAAA,GAAQC,SAASC,WAAW,EAAA;gBAClCF,KAAAA,CAAMG,kBAAkB,CAACX,OAAAA,CAAQM,OAAO,CAAA;AACxCF,gBAAAA,SAAAA,CAAUQ,QAAQ,CAACJ,KAAAA,CAAAA;AACrB,YAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,qBACE9hB,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXvQ,wBAAA,CAAA,aAAA,CAAC4f,iBAAAA,EAAAA;QACCC,MAAM,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QACNC,IAAI,EAAA,OAAA,CAAA,CAAA,CAAA;;;;sBAON9f,wBAAA,CAAA,aAAA,CAACoe,aAAAA,EAAAA;AAAc/c,QAAAA,SAAAA,EAAW+P,iBAAO+Q,aAAa;QAAE3Q,OAAAA,EAASiQ;qBAEvDzhB,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QACC2R,GAAAA,EAAKd,OAAAA;AACLjgB,QAAAA,SAAAA,EAAW+P,iBAAOsK,IAAI;QACtBwE,KAAAA,EACE;YACE,mBAAA,EAAqBqB,WAAAA;AACrB,YAAA,iBAAA,EAAmBT,UAAAA,GAAa;AAClC,SAAA;QAEFf,IAAAA,EAAK;AAEJoB,KAAAA,EAAAA,aAAAA,CAAc5X,GAAG,CAAC,CAAC8Y,IAAAA,EAAM/W,kBACxBtL,wBAAA,CAAA,aAAA,CAACsiB,MAAAA,EAAAA;YAAKze,GAAAA,EAAKyH;WAAI+W,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAKrBriB,wBAAA,CAAA,aAAA,CAACiU,yCACCjU,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUc,OAAAA,EAASiQ;qBACjCzhB,wBAAA,CAAA,aAAA,CAACuS,yBAAAA,EAAAA;QACCjE,OAAO,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QACPsE,SAAS,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QACT0N,SAAAA,EAAWnB;uBAGfnf,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUc,OAAAA,EAASiN;;;;uBAGnCze,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,OAAA;QAAQc,OAAAA,EAASgL;;;;;AAMzC,CAAA;AAEA;AACA;AACA;AACA,SAASgF,eAAee,WAAmB,EAAA;AACzC,IAAA,MAAMjB,UAAU3f,YAAAA,CAAuB,IAAA,CAAA;IACvC,MAAM,CAAC4f,WAAAA,EAAaiB,cAAAA,CAAe,GAAGld,cAAAA,EAAAA;IAEtCmd,qBAAAA,CAAgB,IAAA;AACd,QAAA,MAAMC,cAAAA,GAAiB,IAAA;YACrB,IAAI,CAACpB,OAAAA,CAAQM,OAAO,EAAE;;AAGtB,YAAA,MAAMe,cAAAA,GAAiBrB,OAAAA,CAAQM,OAAO,CAACgB,WAAW;AAClD,YAAA,MAAMC,YAAYnD,IAAAA,CAAKC,GAAG,IACrBxU,KAAAA,CAAMC,IAAI,CAACkW,OAAAA,CAAQM,OAAO,CAACkB,gBAAgB,CAAC,MAAA,CAAA,CAAA,CAASvZ,GAAG,CAAC,CAACwZ,IAAAA,GAASA,KAAKH,WAAW,CAAA,CAAA;;;;AAMxF,YAAA,MAAMI,aAAAA,GAAgBtD,IAAAA,CAAKuD,KAAK,CAACN,cAAAA,GAAiBE,SAAAA,CAAAA;;AAElD,YAAA,MAAMK,qBAAAA,GAAwBF,aAAAA,GAAgBtD,IAAAA,CAAKuD,KAAK,CAACD,aAAAA,GAAgBlC,UAAAA,CAAAA;;AAEzE,YAAA,MAAMqC,IAAAA,GAAOzD,IAAAA,CAAK0D,IAAI,CAACb,WAAAA,GAAcW,qBAAAA,CAAAA;;AAErC,YAAA,MAAMG,WAAAA,GAAc3D,IAAAA,CAAK0D,IAAI,CAACb,WAAAA,GAAcY,IAAAA,CAAAA;YAE5CX,cAAAA,CAAea,WAAAA,CAAAA;AACjB,QAAA,CAAA;AAEAX,QAAAA,cAAAA,EAAAA;AAEA,QAAA,IAAI,CAAC7c,MAAAA,CAAOyd,cAAc,IAAI,CAAChC,OAAAA,CAAQM,OAAO,EAAE;QAChD,MAAM2B,QAAAA,GAAW,IAAID,cAAAA,CAAeZ,cAAAA,CAAAA;QACpCa,QAAAA,CAASC,OAAO,CAAClC,OAAAA,CAAQM,OAAO,CAAA;QAChC,OAAO,IAAM2B,SAASE,UAAU,EAAA;IAClC,CAAA,EAAG;AAAClB,QAAAA;AAAY,KAAA,CAAA;IAEhB,OAAO;AACLjB,QAAAA,OAAAA;AACAC,QAAAA;AACF,KAAA;AACF;;ACzIO,MAAMmC,eAAAA,GAAkB,IAAA;AAC7B,IAAA,MAAMle,YAAAA,GAAeC,gBAAAA,EAAAA;AACrB,IAAA,MAAM,EACJ8N,cAAAA,EAAgB,EAAEC,sBAAsB,EAAE,EAC3C,GAAGjO,gBAAAA,EAAAA;AACJ,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQmK,6CAAAA,EAAAA;IAEd,MAAM,CAACzK,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;AAC1B,IAAA,MAAM,EACJ+R,GAAAA,EAAK,EAAE2D,WAAW,EAAE,EACrB,GAAG5V,KAAAA;;AAGJ,IAAA,MAAM,EAAE+V,kBAAkB,EAAExC,QAAQ,EAAElD,cAAc,EAAE2B,+BAA+B,EAAE,GAAGhS,KAAAA,CAAMiS,GAAG,CAACC,WAAW;AAE/G,IAAA,MAAM,EACJnR,OAAAA,EAASsV,YAAY,EACrBxW,YAAY8X,YAAY,EACxB/X,KAAAA,EAAO2W,iBAAiB,EACzB,GAAG1X,SAAAA,CAMF,0BAAA,EACA,CACEoC,CAAAA,EACA,EACEC,GAAAA,EAAK,EAAEqS,QAAQ,EAAElD,cAAc,EAAEmG,GAAG,EAAEjI,sBAAsB,EAAE,EACqC,GAErGhO,YAAAA,CAAakR,IAAI,CAAC4E,YAAY,CAAC;YAC7BI,IAAAA,EAAMD,GAAAA;YACN/B,SAAAA,EAAWlB,QAAAA;YACXjD,eAAAA,EAAiBD,cAAAA;YACjBhC,wBAAAA,EAA0BE;SAC5B,CAAA,EACF;QACEhP,SAAAA,EAAW,IAAA;YACTU,QAAAA,CAAS;gBAAEN,IAAAA,EAAM;AAA4B,aAAA,CAAA;AAC/C,QAAA;AACF,KAAA,CAAA;IAGF,MAAM+e,iBAAAA,GAAoBra,cACxB,IACE,CAACuR,eACDG,kBAAAA,CAAmBmB,QAAQ,CAAC1F,6BAAAA,CAAeI,MAAM,CAAA,KAChDI,+BAAAA,CAAgChM,MAAM,KAAK,CAAA,IAAKgM,+BAAAA,CAAgCkF,QAAQ,CAAC1F,6BAAAA,CAAeI,MAAM,CAAA,CAAA,EACjH;AAACmE,QAAAA,kBAAAA;AAAoBH,QAAAA,WAAAA;AAAa5D,QAAAA;AAAgC,KAAA,CAAA;AAGpE,IAAA,MAAM4B,YAAAA,GAAe2C,iBAAAA,GAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;AAEjBzW,KAAAA,CAAAA,GAAAA,SAAAA;AACJ,IAAA,MAAM2B,SAAAA,GAAYmU,WAAAA;IAElB,MAAMhB,YAAAA,GAAe,CAAC4B,GAAAA,GAAgBH,YAAAA,CAAa;AAAE9C,YAAAA,QAAAA;AAAUlD,YAAAA,cAAAA;AAAgBmG,YAAAA,GAAAA;AAAKjI,YAAAA;AAAuB,SAAA,CAAA;AAE3G,IAAA,MAAMoQ,0BAAAA,GAA6B,IAAA;QACjC1e,QAAAA,CAAS;YAAEN,IAAAA,EAAM,YAAA;YAAcyS,OAAAA,EAAS,MAAA;AAAQnQ,YAAAA,MAAAA,EAAQC,kBAAW0c;AAAkB,SAAA,CAAA;AACvF,IAAA,CAAA;AAEA,IAAA,MAAMC,iBAAAA,GAAoB,IAAA;QACxB5e,QAAAA,CAAS;YAAEN,IAAAA,EAAM,YAAA;YAAcyS,OAAAA,EAAS,MAAA;AAAQnQ,YAAAA,MAAAA,EAAQC,kBAAW4c;AAAY,SAAA,CAAA;AACjF,IAAA,CAAA;AAEA,IAAA,qBACE/jB,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXvQ,wBAAA,CAAA,aAAA,CAACgkB,eAAAA,EAAAA;QACCnE,MAAM,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QACNoE,WAAW,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QACXC,aAAAA,EACErJ,WAAAA,GAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;AAKI,SAAA,CAAA,GAAA,IAAA;QAEN+B,YAAAA,EAAcA,YAAAA;QACdvC,QAAAA,EAAUR,YAAAA;QACVhB,YAAAA,EAAcA;sBAGhB7Y,wBAAA,CAAA,aAAA,CAACiU,mBAAAA,EAAAA;QACCqC,GAAAA,EAAK,IAAA;QACLC,MAAAA,gBACEvW,wBAAA,CAAA,aAAA,CAAAA,wBAAA,CAAA,QAAA,EAAA,IAAA,EACG2jB,mCACC3jB,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;YAAOxD,OAAAA,EAAQ,SAAA;YAAUc,OAAAA,EAASsS;;;;AAKpC,SAAA,CAAA,CAAA,EAAA,CAACjJ,6BACA7a,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;YAAOxD,OAAAA,EAAQ,SAAA;YAAUc,OAAAA,EAASoS;;;;AAKpCld,SAAAA,CAAAA,CAAAA,EAAAA,SAAAA,kBACC1G,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;YAAOxD,OAAAA,EAAQ,OAAA;AAAQc,YAAAA,OAAAA,EAAS,IAAMtM,QAAAA,CAAS;oBAAEN,IAAAA,EAAM;AAAgB,iBAAA;;;;;;AAStF,CAAA;;ACrHO,MAAMuf,uBAAAA,GAA0B,IAAA;AACrC,IAAA,MAAMzf,MAAAA,GAASa,gBAAAA,EAAAA;AACf,IAAA,MAAM6e,uBAAuB9a,aAAAA,CAAQ,IAAA;QACnC,MAAM8F,aAAAA,GAAgB1K,MAAAA,CAAOwJ,YAAY,GACrCrC,mCAAAA,CAAoCnH,MAAAA,CAAOwJ,YAAY,EAAEC,SAAS,CAAC,CAAA,CAAE,CAAA,GACrEpJ,SAAAA;AACJ,QAAA,MAAMsf,iBAAiBjV,aAAAA,EAAexK,IAAAA,KAASwH,iCAAkBC,MAAM,IAAI+C,eAAe9C,OAAAA,KAAY,IAAA;AACtG,QAAA,OACE5H,OAAOqE,QAAQ,CAACkC,MAAM,KAAK,KAC3BnC,UAAAA,CAAWpE,MAAAA,CAAOqE,QAAQ,EAAE,YAC5BrE,MAAAA,CAAOwJ,YAAY,EAAEC,SAAAA,CAAUlD,WAAW,CAAA,IAC1CoZ,cAAAA;IAEJ,CAAA,EAAG;AAAC3f,QAAAA;AAAO,KAAA,CAAA;IAEX,OAAO0f,oBAAAA;AACT,CAAA;;ACLA,MAAME,YAAAA,GAA6D;IACjE,CAAClY,gCAAAA,CAAkBC,MAAM,GAAG;QAC1BsK,iBAAiB,EAAA;;;;AACnB,KAAA;IACA,CAACvK,gCAAAA,CAAkBW,SAAS,GAAG;QAC7B4J,iBAAiB,EAAA;;;;AACnB,KAAA;IACA,CAACvK,gCAAAA,CAAkBY,OAAO,GAAG;QAC3B2J,iBAAiB,EAAA;;;;AACnB,KAAA;IACA,CAACvK,gCAAAA,CAAkBa,KAAK,GAAG;QACzB0J,iBAAiB,EAAA;;;;AACnB,KAAA;IACA,CAACvK,gCAAAA,CAAkBc,MAAM,GAAG;QAC1ByJ,iBAAiB,EAAA;;;;AACnB;AACF,CAAA;AAYO,MAAM4N,cAAAA,GAAiB,CAAC,EAC7BxY,YAAY,EACZyY,gBAAgB,EAChBC,iBAAiB,EACjBC,oBAAoB,EACpBzY,YAAY,EACZC,cAAc,EACd1H,SAAS,EACW,GAAA;AACpB,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQkL,6CAAAA,EAAAA;AACd,IAAA,MAAMlK,YAAAA,GAAeC,gBAAAA,EAAAA;IACrB,MAAM,CAACR,MAAM,GAAGE,uBAAAA,EAAAA;IAChB,MAAMwf,YAAAA,GAA4ClV,yBAAkBkV,YAAY;IAEhF,MAAM7Y,QAAAA,GAAWwY,YAAY,CAACvY,YAAAA,CAAa;AAC3C,IAAA,IAAIgS,KAAAA,GAAgBhS,YAAAA;AACpB,IAAA,IAAI6Y,IAAAA,GAAO,IAAA;AACX,IAAA,IAAI9Y,QAAAA,EAAU;QACZ,MAAM,EAAE6K,iBAAiB,EAAE,GAAG7K,QAAAA;QAC9B,MAAM+Y,IAAAA,GAAOF,YAAY,CAAC5Y,YAAAA,CAAa;QACvCgS,KAAAA,GAAAA,OAAAA,CAAAA,CAAAA,CAAUpH,iBAAAA,CAAAA;AACViO,QAAAA,IAAAA,iBAAO5kB,wBAAA,CAAA,aAAA,CAAC6kB,IAAAA,EAAAA,IAAAA,CAAAA;AACV,IAAA;AAEA,IAAA,MAAMC,aAAAA,GAAgB,UAAA;AACpB,QAAA,MAAMC,cAAAA,GAAiBvf,YAAAA,CAAaiH,KAAK,CAACV,YAAAA,CAAa;AAEvD,QAAA,IAAI9G,KAAAA,CAAMgC,SAAS,CAACb,YAAY,EAAE;YAChC,MAAM2e,cAAAA,CAAetP,KAAK,CAAC;gBACzBE,kBAAAA,EAAoB6O,gBAAAA;gBACpB1O,mBAAAA,EAAqB2O,iBAAAA;gBACrBO,aAAAA,EAAe/Y,YAAAA;AACfsJ,gBAAAA,eAAAA,EAAiBtQ,KAAAA,CAAMgC,SAAS,CAACb,YAAY,CAACmP,eAAe;gBAC7D0P,eAAAA,EAAiB/Y;AACnB,aAAA,CAAA;QACF,CAAA,MAAO;AACL,YAAA,MAAM6Y,cAAAA,CAAe5R,SAAS,CAACsC,KAAK,CAAC;gBACnCyP,sBAAAA,EAAwBR,oBAAAA;gBACxBM,aAAAA,EAAe/Y,YAAAA;gBACfgZ,eAAAA,EAAiB/Y;AACnB,aAAA,CAAA;AACF,QAAA;AAEA1H,QAAAA,SAAAA,IAAAA;AACF,IAAA,CAAA;AAEA,IAAA,qBACExE,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAO1C,OAAAA,EAASsT,aAAAA;QAAepU,OAAAA,EAAQ,SAAA;QAAUkU,IAAAA,EAAMA;AACrD7G,KAAAA,EAAAA,KAAAA,CAAAA;AAGP,CAAA;;AC1FA;;;AAGC,IACM,SAASoH,qBAAAA,GAAAA;AACd,IAAA,MAAMC,MAAAA,GAAS3f,gBAAAA,EAAAA;AACf,IAAA,MAAM,EAAE4f,WAAW,EAAE,GAAGze,+BAAAA,CAAiBwe,MAAAA,CAAAA;;;AAIzC,IAAA,MAAME,iBAAiBhc,aAAAA,CAAQ,IAAMic,gCAAiBC,OAAO,CAACH,aAAa,sBAAA,CAAA,EAAyB;AAACA,QAAAA;AAAY,KAAA,CAAA;AACjH,IAAA,MAAMI,oBAAoB,CAACjY,MAAAA,GAAAA;QACzB+X,+BAAAA,CAAiBG,OAAO,CAACL,WAAAA,EAAa,sBAAA,EAAwB7X,MAAAA,CAAAA;AAChE,IAAA,CAAA;IAEA,OAAO;AAAC8X,QAAAA,cAAAA;AAAgBG,QAAAA;AAAkB,KAAA;AAC5C;;ACDO,MAAME,kBAAkB,CAAC,EAAE1Z,YAAY,EAAEC,cAAc,EAAEC,kBAAkB,EAAkB,GAAA;AAClG,IAAA,MAAMiZ,MAAAA,GAAS3f,gBAAAA,EAAAA;AACf,IAAA,MAAMf,MAAAA,GAASa,gBAAAA,EAAAA;AACf,IAAA,MAAM6e,oBAAAA,GAAuBD,uBAAAA,EAAAA;IAC7B,MAAM,CAACyB,WAAAA,EAAaC,cAAAA,CAAe,GAAGvgB,cAAAA,EAAAA;AACtC,IAAA,MAAMwgB,WAAAA,GAAcC,qBAAAA,EAAAA;IACpB,MAAM,CAAC9gB,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;IAE1B,MAAM,CAACmgB,cAAAA,EAAgBG,iBAAAA,CAAkB,GAAGN,qBAAAA,EAAAA;AAE5C;;AAEC;AAED,IAAA,MAAMa,sBAAsBlkB,iBAAAA,CAAY,UAAA;AACtC,QAAA,MAAM,EAAEkK,MAAM,EAAE,GAAGpF,+BAAAA,CAAiBwe,MAAAA,CAAAA;QACpC,MAAMa,YAAAA,GAAe,MAAMja,MAAAA,CAAOka,kBAAkB,EAAA;QACpD,IAAI,CAACD,YAAAA,CAAaE,OAAO,EAAE;YACzB,IAAIF,YAAAA,CAAaG,MAAM,KAAK,wBAAA,EAA0B;AACpDP,gBAAAA,cAAAA,CAAeQ,oBAAaC,uBAAuB,CAAA;AACrD,YAAA,CAAA,MAAO,IAAIL,YAAAA,CAAaG,MAAM,KAAK,8BAAA,EAAgC;AACjEP,gBAAAA,cAAAA,CAAeQ,oBAAaE,yBAAyB,CAAA;aACvD,MAAO;gBACLC,iBAAAA,CAAO3hB,KAAK,CAAC,6CAAA,EAA+CohB,YAAAA,CAAAA;AAC9D,YAAA;AACA,YAAA;AACF,QAAA;QACA,MAAM,EAAEQ,MAAM,EAAE,GAAGR,YAAAA;AAEnB;;;;;;;;;;QAWA,IAAIH,WAAAA,CAAYlE,OAAO,EAAE;AACvB,YAAA;AACF,QAAA;QAEA,IAAI8E,cAAAA;AACJ,QAAA,IAAIzhB,KAAAA,CAAMgC,SAAS,CAACb,YAAY,EAAE;YAChCsgB,cAAAA,GAAiB1a,MAAAA,CAAO2a,sBAAsB,CAAC;AAC7CrR,gBAAAA,cAAAA,EAAgBrQ,KAAAA,CAAMgC,SAAS,CAACb,YAAY,CAACmP,eAAe;gBAC5DkP,iBAAAA,EAAmB/f,MAAAA,CAAOwJ,YAAY,EAAE6H,iBAAAA;gBACxCyO,gBAAAA,EAAkB9f,MAAAA,CAAOwJ,YAAY,EAAE2H,gBAAAA;AACvCrR,gBAAAA,SAAAA,EAAWwH,OAAO4a,iBAAiB;AACnCziB,gBAAAA,OAAAA,EAAS,IAAMe,QAAAA,CAAS;wBAAEN,IAAAA,EAAM,YAAA;AAAcsC,wBAAAA,MAAAA,EAAQC,kBAAW0f;AAAM,qBAAA;AACzE,aAAA,CAAA;SACF,MAAO;YACLH,cAAAA,GAAiB1a,MAAAA,CAAO8a,+BAA+B,CAAC;gBACtDpC,oBAAAA,EAAsBhgB,MAAAA,CAAOwJ,YAAY,EAAE6Y,oBAAAA;AAC3CviB,gBAAAA,SAAAA,EAAWwH,OAAO4a,iBAAiB;AACnCziB,gBAAAA,OAAAA,EAAS,IAAMe,QAAAA,CAAS;wBAAEN,IAAAA,EAAM,YAAA;AAAcsC,wBAAAA,MAAAA,EAAQC,kBAAW0f;AAAM,qBAAA;AACzE,aAAA,CAAA;AACF,QAAA;AACA,QAAA,MAAMG,YAAAA,GAAe,MAAMP,MAAAA,CAAOQ,MAAM,CAAC;YACvCC,QAAAA,EAAUR,cAAAA;YACVxG,KAAAA,EAAO;AACLiH,gBAAAA,QAAAA,EAAUC,+BAAgBC;AAC5B,aAAA;AACAlb,YAAAA;AACF,SAAA,CAAA;;;QAIA,IAAI2Z,WAAAA,CAAYlE,OAAO,EAAE;AACvB6E,YAAAA,MAAAA,CAAOa,MAAM,EAAA;AACb,YAAA;AACF,QAAA;QAEA,IAAI,CAACN,YAAAA,CAAab,OAAO,EAAE;YACzB,IAAIa,YAAAA,CAAaZ,MAAM,KAAK,qBAAA,EAAuB;AACjDP,gBAAAA,cAAAA,CAAeQ,oBAAakB,yBAAyB,CAAA;AACvD,YAAA;YACA,IAAIP,YAAAA,CAAaZ,MAAM,KAAK,gBAAA,EAAkB;AAC5CP,gBAAAA,cAAAA,CAAeQ,oBAAamB,kBAAkB,CAAA;AAChD,YAAA;YACAhB,iBAAAA,CAAO3hB,KAAK,CAAC,iCAAA,EAAmCmiB,YAAAA,CAAAA;AAClD,QAAA;QACA,OAAOP,MAAAA;KACT,EAAG;AACDrB,QAAAA,MAAAA;AACAU,QAAAA,WAAAA;QACA7gB,KAAAA,CAAMgC,SAAS,CAACb,YAAY;AAC5B1B,QAAAA,MAAAA,CAAOwJ,YAAY,EAAE6H,iBAAAA;AACrBrR,QAAAA,MAAAA,CAAOwJ,YAAY,EAAE2H,gBAAAA;AACrBnR,QAAAA,MAAAA,CAAOwJ,YAAY,EAAE6Y,oBAAAA;AACrB7hB,QAAAA,QAAAA;AACAiH,QAAAA;AACD,KAAA,CAAA;IAEDxF,eAAAA,CAAU,IAAA;QACR,IAAI8f,MAAAA;QACJT,mBAAAA,EAAAA,CACGjf,IAAI,CAAC,CAAC0gB,OAAAA,GAAahB,SAASgB,OAAAA,CAAAA,CAC5B5L,KAAK,CAAC,CAAC6L,GAAAA,GAAAA;YACNlB,iBAAAA,CAAO3hB,KAAK,CAAC,iCAAA,EAAmC6iB,GAAAA,CAAAA;AAClD,QAAA,CAAA,CAAA;AACF,QAAA,OAAO,IAAMjB,MAAAA,EAAQa,MAAAA,EAAAA;KACvB,EAAG;AAACtB,QAAAA;AAAoB,KAAA,CAAA;AACxB;;AAEC,MAED,IAAI5B,oBAAAA,EAAsB;QACxB,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,MAAMuD,+BACJ3nB,wBAAA,CAAA,aAAA,CAACukB,cAAAA,EAAAA;AACCxY,QAAAA,YAAAA,EAAcK,iCAAkBC,MAAM;QACtCmY,gBAAAA,EAAkB9f,MAAAA,CAAOwJ,YAAY,EAAE2H,gBAAAA;QACvC4O,iBAAAA,EAAmB/f,MAAAA,CAAOwJ,YAAY,EAAE6H,iBAAAA;QACxC2O,oBAAAA,EAAsBhgB,MAAAA,CAAOwJ,YAAY,EAAE6Y,oBAAAA;QAC3C9a,YAAAA,EAAcA,YAAAA;QACdC,cAAAA,EAAgBA,cAAAA;QAChB1H,SAAAA,EAAW,IAAMihB,iBAAAA,CAAkBrZ,gCAAAA,CAAkBC,MAAM;;AAI/D,IAAA,MAAMub,uBACJtC,cAAAA,KAAmBlZ,gCAAAA,CAAkBC,MAAM,iBAAGrM,wBAAA,CAAA,aAAA,CAAC6nB,uBAAUF,cAAAA,CAAAA,GAA6BA,cAAAA;AAExF,IAAA,IAAI/B,WAAAA,EAAa;QACf,qBACE5lB,wBAAA,CAAA,aAAA,CAAAA,wBAAA,CAAA,QAAA,EAAA,IAAA,GACG8nB,MAAAA,GACAF,oBAAAA,CAAAA;AAGP,IAAA;IAEA,OAAOA,oBAAAA;AACT,CAAA;;AC9GA,MAAMG,eAAAA,GAA6D;IACjE5U,SAAAA,EAAW;QACT6U,WAAAA,EAAa,0CAAA;QACbxjB,SAAAA,EAAWsD,8BAAAA;AACXmgB,QAAAA,YAAAA,EAAczhB,iBAAU0hB;AAC1B,KAAA;IACAC,eAAAA,EAAiB;QACfH,WAAAA,EAAa,qCAAA;QACbxjB,SAAAA,EAAWsD;AACb,KAAA;IACA2E,KAAAA,EAAO;QACLub,WAAAA,EAAa,2BAAA;QACbxjB,SAAAA,EAAWkD;AACb,KAAA;IACAgF,GAAAA,EAAK;QACHsb,WAAAA,EAAa,yBAAA;QACbxjB,SAAAA,EAAWkD;AACb,KAAA;IACA0gB,wBAAAA,EAA0B;QACxBJ,WAAAA,EAAa,gCAAA;QACbxjB,SAAAA,EAAWkD,qBAAAA;AACXugB,QAAAA,YAAAA,EAAczhB,iBAAU0hB;AAC1B,KAAA;IACAG,0BAAAA,EAA4B;QAC1BL,WAAAA,EAAa,mCAAA;QACbxjB,SAAAA,EAAWkD;AACb;AACF,CAAA;AAEA,MAAM4gB,YAAAA,GAA0C;AAC9CC,IAAAA,mBAAAA,EAAqB/hB,iBAAUgiB;AACjC,CAAA;AAEA,MAAMC,cAAAA,GAAgC,IAAA;IACpC,MAAM,CAACxjB,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;AAC1B,IAAA,MAAMK,YAAAA,GAAeC,gBAAAA,EAAAA;AACrB,IAAA,MAAMijB,YAAAA,GAAetkB,uBAAAA,EAAAA;AACrB,IAAA,MAAMukB,YAAAA,GAAezkB,uBAAAA,EAAAA;AACrB,IAAA,MAAMQ,MAAAA,GAASa,gBAAAA,EAAAA;AACf,IAAA,MAAM,EAAEqjB,gBAAgB,EAAEC,KAAK,EAAE7kB,OAAO,EAAE,GAAGyL,sBAAAA,EAAAA;AAC7C,IAAA,MAAM2U,oBAAAA,GAAuBD,uBAAAA,EAAAA;IAE7B,MAAM2E,aAAAA,GAAgB7jB,MAAMiC,MAAM;IAElC,MAAM6hB,kBAAAA,GAAqB5f,qBAAqBzE,MAAAA,EAAQ,SAAA,CAAA;AAExD,IAAA,MAAMskB,oBAAAA,GAAuB,CAACnkB,KAAAA,EAAuBokB,gBAAAA,GAAmBziB,iBAAUmN,OAAO,GAAA;AACvF,QAAA,MAAMF,aAAayV,uBAAAA,CAAiBrkB,KAAAA,CAAAA;AACpC,QAAA,MAAM0B,SAAAA,GAAuB+hB,YAAY,CAAC7U,UAAAA,CAAY,IAAIwV,gBAAAA;QAE1D/jB,QAAAA,CAAS;YACPN,IAAAA,EAAM,kCAAA;AACN2B,YAAAA,SAAAA;YACAG,SAAAA,EAAW;AACb,SAAA,CAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM,CAACyiB,kBAAAA,EAAoBC,qBAAAA,CAAsB,GAAG9jB,cAAAA,CAAS,KAAA,CAAA;IAC7D,MAAM,EAAE+jB,MAAM,EAAE,GAAG3nB,oBAAAA,EAAAA;AAEnB,IAAA,MAAM,EAAEgE,IAAI,EAAE4B,aAAa,EAAE,GAAGtC,cAAAA,EAAAA;IAEhC2B,eAAAA,CAAU,IAAA;;AAER,QAAA,IAAIyd,oBAAAA,EAAsB;AACxB,YAAA;AACF,QAAA;;;AAIA,QAAA,IAAInf,MAAMgC,SAAS,CAACrC,IAAI,IAAIyC,2BAAAA,CAAa8I,aAAa,EAAE;AACtD,YAAA;AACF,QAAA;QAEA,MAAMmZ,MAAAA,GAAS9jB,aAAa+jB,oBAAoB,EAAA;QAChD,IAAI,CAACD,QAAQE,OAAAA,EAAS;AACpB,YAAA;AACF,QAAA;AAEA,QAAA,MAAM,EAAExB,WAAW,EAAEC,YAAY,EAAEzjB,SAAS,EAAE,GAAGujB,eAAe,CAACuB,MAAAA,CAAOG,SAAS,CAAC;QAClFL,qBAAAA,CAAsB,IAAA,CAAA;QACtBC,MAAAA,CACErB,WAAAA,EACAxiB,YAAAA,CAAakkB,iBAAiB,CAAC;YAAEpW,wBAAAA,EAA0B5O,MAAAA,CAAO6O,cAAc,CAACC;SAAuB,CAAA,CAAA,CAEvGzM,IAAI,CACH,CAAC1C,MAAAA,GAAAA;AACC,YAAA,IAAI,CAACA,MAAAA,EAAQmlB,OAAAA,EAAS,OAAA;YACtB,MAAM,EAAE/kB,IAAI,EAAE,GAAGJ,MAAAA;AAEjB,YAAA,MAAMslB,QAAQ/lB,mBAAAA,CAAoBokB,WAAAA,CAAAA;AAClC,YAAA,IAAI2B,KAAAA,EAAO;gBACThB,YAAAA,CAAa;oBAAE/jB,IAAAA,EAAM+kB,KAAAA;AAAOllB,oBAAAA;AAAK,iBAAA,CAAA;AACnC,YAAA;AAEAD,YAAAA,SAAAA,CAAUC,MAAMS,QAAAA,EAAUR,MAAAA,CAAAA;AAC5B,QAAA,CAAA,EACA,CAACG,KAAAA,GAAAA;YACC6jB,YAAAA,CAAa7jB,KAAAA,CAAAA;AACbmkB,YAAAA,oBAAAA,CAAqBnkB,KAAAA,EAAOojB,YAAAA,CAAAA;QAC9B,CAAA,CAAA,CAED2B,OAAO,CAAC,IAAMR,qBAAAA,CAAsB,KAAA,CAAA,CAAA;;AAGzC,IAAA,CAAA,EAAG,EAAE,CAAA;IAELziB,eAAAA,CAAU,IAAA;;AAER,QAAA,IAAIyd,oBAAAA,EAAsB;AACxB,YAAA;AACF,QAAA;;AAGA,QAAA,IAAI+E,kBAAAA,EAAoB;AACtB,YAAA;AACF,QAAA;QAEA,MAAMG,MAAAA,GAAS9jB,aAAa+jB,oBAAoB,EAAA;AAChD,QAAA,IAAID,QAAQE,OAAAA,EAAS;AACnB,YAAA;AACF,QAAA;QAEA,IACE,CAAC9jB,QACD,CAAC4B,aAAAA,IACDrC,MAAMgC,SAAS,CAACb,YAAY,KAAK,IAAA,IACjCnB,KAAAA,CAAMiC,MAAM,KAAKC,iBAAAA,CAAWC,IAAI,IAChCnC,KAAAA,CAAMgC,SAAS,CAACrC,IAAI,IAAIyC,2BAAAA,CAAaZ,YAAY,EACjD;;YAEAvB,QAAAA,CAAS;gBACPN,IAAAA,EAAM,kCAAA;AACN2B,gBAAAA,SAAAA,EAAWC,iBAAUC,YAAY;gBACjCC,SAAAA,EAAW;AACb,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AACDxB,QAAAA,QAAAA;AACAkf,QAAAA,oBAAAA;AACA+E,QAAAA,kBAAAA;AACA7hB,QAAAA,aAAAA;AACA5B,QAAAA,IAAAA;QACAT,KAAAA,CAAMgC,SAAS,CAACb,YAAY;QAC5BnB,KAAAA,CAAMgC,SAAS,CAACrC,IAAI;AACpBK,QAAAA,KAAAA,CAAMiC,MAAM;AACZ1B,QAAAA,YAAAA;AACAkjB,QAAAA;AACD,KAAA,CAAA;AAED,IAAA,IAAItE,oBAAAA,EAAsB;AACxB,QAAA,qBAAOpkB,wBAAA,CAAA,aAAA,CAAC2lB,eAAAA,EAAAA,IAAAA,CAAAA;AACV,IAAA;AAEA,IAAA,IAAIwD,kBAAAA,EAAoB;AACtB,QAAA,qBACEnpB,wBAAA,CAAA,aAAA,CAAC6pB,oBAAAA,EAAAA;YAAchB,KAAAA,EAAOA,KAAAA;YAAOD,gBAAAA,EAAkB;yBAC7C5oB,wBAAA,CAAA,aAAA,CAACkW,sBAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAGP,IAAA;IAEA,IAAI4T,OAAAA;AACJ,IAAA,IAAI7kB,KAAAA,CAAMgC,SAAS,CAACb,YAAY,EAAEqL,qBAAAA,EAAuB;QACvD,MAAM,EAAExB,iBAAiB,EAAEwB,qBAAqB,EAAE,GAAGxM,KAAAA,CAAMgC,SAAS,CAACb,YAAY;QACjF0jB,OAAAA,GAAU;YACR3hB,GAAAA,EAAKsJ,qBAAAA;AACLI,YAAAA,GAAAA,EAAK5B,iBAAAA,IAAqB;AAC5B,SAAA;AACF,IAAA;AAEA,IAAA,MAAM8Z,uBAAAA,GAAsE;;QAE1E,CAAC5iB,iBAAAA,CAAWC,IAAI,GAAGoI,UAAAA;QACnB,CAACrI,iBAAAA,CAAW6iB,QAAQ,GAAGjZ,kBAAAA;;;QAIvB,CAAC5J,iBAAAA,CAAW4D,SAAS,GAAGA,SAAAA;QACxB,CAAC5D,iBAAAA,CAAW0f,KAAK,GAAGoD,kBAAAA;;;QAIpB,CAAC9iB,iBAAAA,CAAW+iB,sBAAsB,GAAGnT,4BAAAA;QACrC,CAAC5P,iBAAAA,CAAW2P,gBAAgB,GAAGqB,kBAAAA;QAC/B,CAAChR,iBAAAA,CAAW4c,WAAW,GAAGnJ,iBAAAA;QAC1B,CAACzT,iBAAAA,CAAW0c,iBAAiB,GAAG1G,uBAAAA;QAChC,CAAChW,iBAAAA,CAAWgjB,gBAAgB,GAAG5L,sBAAAA;QAC/B,CAACpX,iBAAAA,CAAWyP,oBAAoB,GAAG2J,kBAAAA;QACnC,CAACpZ,iBAAAA,CAAWijB,oBAAoB,GAAGrJ,sBAAAA;QACnC,CAAC5Z,iBAAAA,CAAWmV,SAAS,GAAGoH;AAC1B,KAAA;AAEA,IAAA,MAAM2G,kBAAkBN,uBAAuB,CAACjB,cAAc,IAAIC,kBAAkB,CAACD,aAAAA,CAAc;AAEnG,IAAA,qBACE9oB,wBAAA,CAAA,aAAA,CAAC6pB,oBAAAA,EAAAA;QAAchB,KAAAA,EAAOA,KAAAA;QAAOD,gBAAAA,EAAkBA;qBAC7C5oB,wBAAA,CAAA,aAAA,CAACsqB,WAAAA,EAAAA;AAAKC,QAAAA,OAAAA,EAASvmB,QAAQ0N,IAAI;QAAEoY,OAAAA,EAASA;sBACtC9pB,wBAAA,CAAA,aAAA,CAACqqB,eAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAGP,CAAA;;ACxOO,MAAMG,oBAAAA,GAAuB,CAAgE,EAClG/D,MAAM,EACNgE,YAAY,EACZC,SAAS,EACThmB,MAAM,EACNimB,OAAO,EACkC,GAAA;AACzC;;AAEC,MACD,MAAM,CAAC/B,gBAAAA,EAAkBgC,mBAAAA,CAAoB,GAAGtlB,cAAAA,CAAS,IAAA;QACvD,MAAM,EAAEsjB,gBAAgB,EAAE,GAAGhiB,gCAAiB6f,MAAAA,CAAAA,CAAQ5f,SAAS,CAACY,OAAO,EAAA;QACvE,OAAOmhB,gBAAAA;AACT,IAAA,CAAA,CAAA;IAEAjiB,eAAAA,CAAU,IAAA;AACRC,QAAAA,+BAAAA,CAAiB6f,QACd5f,SAAS,CAACC,QAAQ,EAAA,CAClBC,IAAI,CAAC,CAACtC,IAAAA,GAAAA;AACLmC,YAAAA,+BAAAA,CAAiB6f,MAAAA,CAAAA,CAAQoE,aAAa,CAACC,QAAQ,CAAC;gBAC9CC,IAAAA,EAAM,yBAAA;gBACNC,OAAAA,EAAS;oBAAEhnB,OAAAA,EAASU,MAAAA;oBAAQmC,SAAAA,EAAWpC;AAAK;AAC9C,aAAA,CAAA;AACAmmB,YAAAA,mBAAAA,CAAoBnmB,KAAKmkB,gBAAgB,CAAA;AAC3C,QAAA,CAAA,CAAA;;IAEJ,CAAA,EAAG;AAACnC,QAAAA;AAAO,KAAA,CAAA;AAEX,IAAA,MAAMwE,sBAAAA,GAAyB,IAAA;AAC7B,QAAA,MAAM9iB,MAAM,IAAIC,GAAAA,CAAIvC,MAAAA,CAAOC,QAAQ,CAACC,IAAI,CAAA;AACxC,QAAA,MAAMmlB,YAAAA,GAAe/iB,GAAAA,CAAIgjB,YAAY,CAACC,GAAG,CAAC,sBAAA,CAAA;QAE1C,OAAOF,YAAAA;AACT,IAAA,CAAA;AAEA,IAAA,MAAMA,YAAAA,GAAeD,sBAAAA,EAAAA;IACrB,MAAMI,YAAAA,GACJH,iBAAiBI,8BAAAA,CAAgBC,aAAa,GAAGlkB,2BAAAA,CAAa8I,aAAa,GAAGzL,MAAAA,CAAO2mB,YAAY;AAEnG,IAAA,MAAMG,YAAAA,GAAyB;AAC7B,QAAA,GAAGC,oBAAa;QAChBvkB,MAAAA,EAAQmkB,YAAAA,KAAiBhkB,4BAAa8I,aAAa,GAAGhJ,kBAAWukB,iBAAiB,GAAGvkB,kBAAWC,IAAI;QACpGH,SAAAA,EAAW;AACT,YAAA,GAAGwkB,qBAAcxkB,SAAS;YAC1BrC,IAAAA,EAAMymB;AACR;AACF,KAAA;IAEA,MAAMM,kBAAAA,GAAqBriB,aAAAA,CACzB,KAAO;AACL,YAAA,GAAG5E,MAAM;;;;YAIT6O,cAAAA,EAAgB7O,MAAAA,CAAO6O,cAAc,IAAI;AAC3C,SAAA,CAAA,EACA;AAAC7O,QAAAA;AAAO,KAAA,CAAA;AAGV,IAAA,MAAMknB,oBAAoBC,iCAAAA,CACxBpB,YAAAA,EACA7B,gBAAAA,EACA+C,kBAAAA,CAAmB5iB,QACnB,CAAA;AAGF,IAAA,qBACE/I,wBAAA,CAAA,aAAA,CAAC8rB,4BAAAA,EAAAA;QACCrF,MAAAA,EAAQA,MAAAA;QACRiE,SAAAA,EAAWA,SAAAA;QACXhmB,MAAAA,EAAQinB,kBAAAA;QACRH,YAAAA,EAAcA;AAEd,KAAA,gBAAAxrB,wBAAA,CAAA,aAAA,CAAC+rB,2BAAoBC,QAAQ,EAAA;QAACrO,KAAAA,EAAOiO;qBACnC5rB,wBAAA,CAAA,aAAA,CAACisB,uDAAAA,EAAAA;QAAoBzqB,QAAAA,EAAUA,QAAAA;QAAU0qB,SAAAA,EAAWvB;qBAClD3qB,wBAAA,CAAA,aAAA,CAACmsB,cAAAA,EAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAKX,CAAA;;AC9FA;;IAGO,MAAMC,cAAAA,GAAiB,IAAA;AAC5B,IAAA,MAAMhH,MAAAA,GAAS3f,gBAAAA,EAAAA;AACf,IAAA,MAAMf,MAAAA,GAASa,gBAAAA,EAAAA;AACf;;;AAGC,MACD,MAAM,CAAC8mB,YAAAA,EAAcC,eAAAA,CAAgB,GAAGhnB,cAAAA,CAAS,IAAA;QAC/C,MAAM,EAAE+mB,YAAY,EAAE,GAAGzlB,gCAAiBwe,MAAAA,CAAAA,CAAQve,SAAS,CAACY,OAAO,EAAA;QACnE,OAAO4kB,YAAAA;AACT,IAAA,CAAA,CAAA;IAEA1lB,eAAAA,CAAU,IAAA;QACRC,+BAAAA,CAAiBwe,MAAAA,CAAAA,CACdve,SAAS,CAACC,QAAQ,EAAA,CAClBC,IAAI,CAAC,CAAC,EAAEslB,YAAY,EAAE,GAAA;YACrBC,eAAAA,CAAgBD,YAAAA,CAAAA;AAClB,QAAA,CAAA,CAAA;IACJ,CAAA,EAAG;AAACjH,QAAAA;AAAO,KAAA,CAAA;;IAGX,IAAI1gB,MAAAA,CAAO6nB,sBAAsB,EAAEC,UAAAA,EAAY;QAC7C,OAAO9nB,MAAAA,CAAO6nB,sBAAsB,EAAEC,UAAAA;AACxC,IAAA;;IAEA,IAAIH,YAAAA,CAAaphB,MAAM,KAAK,CAAA,EAAG;QAC7B,OAAOohB,YAAY,CAAC,CAAA,CAAE;AACxB,IAAA;;;IAGA,OAAO,IAAA;AACT,CAAA;;AChCO,MAAMI,mBAAAA,GAAsB,IAAA;IACjC,MAAM,GAAGvnB,SAAS,GAAGC,uBAAAA,EAAAA;AACrB,IAAA,MAAMK,YAAAA,GAAeC,gBAAAA,EAAAA;AACrB,IAAA,MAAMf,MAAAA,GAASa,gBAAAA,EAAAA;AAEf,IAAA,OAAOzB,UACL,uCAAA,EACA,CAACoC,GAAW,EAAEC,GAAAA,EAAK,EAAE4B,KAAK,EAAEwN,eAAe,EAAE,EAAuD,GAClG/P,YAAAA,CAAaknB,UAAU,CAAC3kB,KAAK,CAAC4kB,aAAa,CAAC;YAC1C3kB,aAAAA,EAAeD,KAAAA;AACfwN,YAAAA,eAAAA;YACAI,kBAAAA,EAAoBjR,MAAAA,CAAO6nB,sBAAsB,EAAE1W,gBAAAA;YACnDC,mBAAAA,EAAqBpR,MAAAA,CAAO6nB,sBAAsB,EAAExW,iBAAAA;YACpD6W,iBAAAA,EAAmBloB,MAAAA,CAAO6nB,sBAAsB,EAAEM,eAAAA;YAClDC,kBAAAA,EAAoBpoB,MAAAA,CAAO6nB,sBAAsB,EAAEQ,gBAAAA;YACnD1T,MAAAA,EAAQ3U,MAAAA,CAAO6nB,sBAAsB,EAAElT;SACzC,CAAA,EACF;QACE7U,SAAAA,EAAW,IAAA;YACTU,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,YAAA;AAAcsC,gBAAAA,MAAAA,EAAQC,kBAAW6lB;AAAkB,aAAA,CAAA;AACtE,QAAA,CAAA;AACA7oB,QAAAA,OAAAA,EAAS,CAAC2V,CAAAA,GAAAA;AACR0M,YAAAA,iBAAAA,CAAO3hB,KAAK,CAACiV,CAAAA,CAAAA;AACf,QAAA;AACF,KAAA,CAAA;AAEJ,CAAA;;AC3BO,MAAMmT,mBAAAA,GAAsB,IAAA;IACjC,MAAM,GAAG/nB,SAAS,GAAGC,uBAAAA,EAAAA;AACrB,IAAA,MAAMK,YAAAA,GAAeC,gBAAAA,EAAAA;AACrB,IAAA,MAAMf,MAAAA,GAASa,gBAAAA,EAAAA;AAEf,IAAA,OAAOzB,UACL,wCAAA,EACA,CAACoC,GAAW,EAAEC,GAAAA,EAAK,EAAE4B,KAAK,EAAE,EAA8B,GACxDvC,YAAAA,CAAaknB,UAAU,CAAC3kB,KAAK,CAACoL,SAAS,CAACqG,IAAI,CAAC;YAC3CxR,aAAAA,EAAeD,KAAAA;YACfmd,sBAAAA,EAAwBxgB,MAAAA,CAAO6nB,sBAAsB,EAAExF,oBAAAA;YACvD6F,iBAAAA,EAAmBloB,MAAAA,CAAO6nB,sBAAsB,EAAEM,eAAAA;YAClDxT,MAAAA,EAAQ3U,MAAAA,CAAO6nB,sBAAsB,EAAElT;SACzC,CAAA,EACF;QACE7U,SAAAA,EAAW,IAAA;YACTU,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,YAAA;AAAcsC,gBAAAA,MAAAA,EAAQC,kBAAW6lB;AAAkB,aAAA,CAAA;AACtE,QAAA;AACF,KAAA,CAAA;AAEJ,CAAA;;ACfO,MAAMA,iBAAAA,GAAoB,IAAA;IAC/B,MAAM,CAAC/nB,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;AAC1B,IAAA,MAAM+nB,WAAAA,GAAcd,cAAAA,EAAAA;AACpB,IAAA,MAAMzP,SAAAA,GAAYxB,mBAAAA,EAAAA;AAElB,IAAA,MAAM,EAAEnV,OAAAA,EAASmnB,oBAAoB,EAAEroB,UAAAA,EAAYsoB,yBAAyB,EAAE,GAAGX,mBAAAA,EAAAA;AACjF,IAAA,MAAM,EAAEzmB,OAAAA,EAASqnB,gBAAgB,EAAEvoB,UAAAA,EAAYwoB,qBAAqB,EAAE,GAAGL,mBAAAA,EAAAA;AAEzE,IAAA,MAAMllB,QAAQ9C,KAAAA,CAAM6O,SAAS,CAACyZ,UAAU,CAACC,iBAAiB;AAE1D,IAAA,MAAMxa,MAAAA,GAAS,IAAA;QACb9N,QAAAA,CAAS;YAAEN,IAAAA,EAAM,yBAAA;YAA2BmD,KAAAA,EAAO;AAAG,SAAA,CAAA;QACtD7C,QAAAA,CAAS;YAAEN,IAAAA,EAAM,YAAA;AAAcsC,YAAAA,MAAAA,EAAQC,kBAAWC;AAAK,SAAA,CAAA;AACzD,IAAA,CAAA;AAEA,IAAA,MAAMqmB,MAAAA,GAAS,UAAA;AACb,QAAA,IAAIxoB,MAAMgC,SAAS,CAACrC,IAAI,KAAKyC,2BAAAA,CAAa0D,SAAS,EAAE;AACnD,YAAA,MAAMsiB,gBAAAA,CAAiB;AAAEtlB,gBAAAA;AAAM,aAAA,CAAA;AACjC,QAAA,CAAA,MAAO,IAAI9C,KAAAA,CAAMgC,SAAS,CAACrC,IAAI,KAAKyC,2BAAAA,CAAaZ,YAAY,IAAIxB,KAAAA,CAAMgC,SAAS,CAACb,YAAY,EAAE;AAC7F,YAAA,MAAM+mB,oBAAAA,CAAqB;AACzBplB,gBAAAA,KAAAA;AACAwN,gBAAAA,eAAAA,EAAiBtQ,KAAAA,CAAMgC,SAAS,CAACb,YAAY,CAACmP;AAChD,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMqH,eAAewQ,yBAAAA,IAA6BE,qBAAAA;AAElD,IAAA,qBACEttB,wBAAA,CAAA,aAAA,CAAC0tB,4BAAAA,EAAAA;QACCR,WAAAA,EAAaA,WAAAA;QACbnlB,KAAAA,EAAOA,KAAAA;QACPiL,MAAAA,EAAQA,MAAAA;QACRya,MAAAA,EAAQA,MAAAA;QACR9Q,SAAAA,EAAWA,SAAAA;QACXC,YAAAA,EAAcA;;AAGpB,CAAA;;AChDA,MAAM+Q,yBAAAA,GAA4B,IAAA,GAAO,EAAA,GAAK,EAAA,CAAA;AAEvC,MAAMC,uBAAuB,IAAM,IAAIC,KAAKA,IAAAA,CAAKC,GAAG,KAAKH,yBAAAA,CAAAA;;ACGzD,MAAMI,2BAA2B,CAAC,EAAExpB,YAAY,EAA8B,GAAG,EAAE,GAAA;IACxF,MAAM,GAAGW,SAAS,GAAGC,uBAAAA,EAAAA;AACrB,IAAA,MAAMK,YAAAA,GAAeC,gBAAAA,EAAAA;AACrB,IAAA,MAAMf,MAAAA,GAASa,gBAAAA,EAAAA;AAEf,IAAA,OAAOzB,UACL,kCAAA,EACA,CAACkqB,MAAc,EAAE7nB,GAAAA,EAAK,EAAE4B,KAAK,EAAE,EAA8B,GAC3DvC,YAAAA,CAAa8T,IAAI,CAACvR,KAAK,CAACoL,SAAS,CAACqG,IAAI,CAAC;YACrCxR,aAAAA,EAAeD,KAAAA;YACf6kB,iBAAAA,EAAmBloB,MAAAA,CAAOupB,eAAe,EAAEpB,eAAAA;YAC3CxT,MAAAA,EAAQ3U,MAAAA,CAAOupB,eAAe,EAAE5U;SAClC,CAAA,EACF;QACE7U,SAAAA,EAAW,IAAA;YACTU,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,gBAAA;gBAAkBkW,cAAAA,EAAgB8S,oBAAAA;AAAuB,aAAA,CAAA;AAC5E,QAAA,CAAA;AACArpB,QAAAA;AACF,KAAA,CAAA;AAEJ,CAAA;;ACpBO,MAAM2pB,2BAA2B,CAAC,EAAE3pB,YAAY,EAA8B,GAAG,EAAE,GAAA;IACxF,MAAM,GAAGW,SAAS,GAAGC,uBAAAA,EAAAA;AACrB,IAAA,MAAMK,YAAAA,GAAeC,gBAAAA,EAAAA;AACrB,IAAA,MAAMf,MAAAA,GAASa,gBAAAA,EAAAA;AAEf,IAAA,OAAOzB,UAML,iCAAA,EACA,CAACkqB,MAAc,EAAE7nB,GAAAA,EAAK,EAAE4B,KAAK,EAAEwN,eAAe,EAAE,EAAuD,GACrG/P,YAAAA,CAAa8T,IAAI,CAACvR,KAAK,CAAC4kB,aAAa,CAAC;YACpC3kB,aAAAA,EAAeD,KAAAA;AACfwN,YAAAA,eAAAA;YACAqX,iBAAAA,EAAmBloB,MAAAA,CAAOupB,eAAe,EAAEpB,eAAAA;YAC3CC,kBAAAA,EAAoBpoB,MAAAA,CAAOupB,eAAe,EAAElB,gBAAAA;YAC5C1T,MAAAA,EAAQ3U,MAAAA,CAAOupB,eAAe,EAAE5U;SAClC,CAAA,EACF;QACE7U,SAAAA,EAAW,IAAA;YACTU,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,gBAAA;gBAAkBkW,cAAAA,EAAgB8S,oBAAAA;AAAuB,aAAA,CAAA;AAC5E,QAAA,CAAA;AACArpB,QAAAA;AACF,KAAA,CAAA;AAEJ,CAAA;;ACZA,MAAMP,OAAAA,GAAgF;IACpF2I,eAAAA,EAAiB;QACfgK,iBAAiB,EAAA;;;;AACnB,KAAA;IACA/J,QAAAA,EAAU;QACR+J,iBAAiB,EAAA;;;;AACnB;AACF,CAAA;AAEO,MAAMwX,0BAAAA,GAA6B,IAAA;IACxC,MAAM,EAAEplB,QAAQ,EAAE,GAAG4F,sBAAAA,EAAAA;AACrB,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQe,6CAAAA,EAAAA;IAEd,MAAM,CAACzK,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;AAE1B,IAAA,MAAM,EACJa,OAAAA,EAASqnB,gBAAgB,EACzBvoB,UAAAA,EAAYwoB,qBAAqB,EACjCzoB,KAAAA,EAAOupB,qBAAqB,EAC5BC,KAAAA,EAAOC,qBAAqB,EAC7B,GAAGrB,mBAAAA,EAAAA;AAEJ,IAAA,MAAM,EACJjnB,OAAAA,EAASuoB,gBAAgB,EACzBzpB,UAAAA,EAAY0pB,qBAAqB,EACjC3pB,KAAAA,EAAO4pB,qBAAqB,EAC5BJ,KAAAA,EAAOK,qBAAqB,EAC7B,GAAGX,wBAAAA,EAAAA;AAEJ,IAAA,MAAM,EACJ/nB,OAAAA,EAASmnB,oBAAoB,EAC7BroB,UAAAA,EAAYsoB,yBAAyB,EACrCvoB,KAAAA,EAAO8pB,yBAAyB,EAChCN,KAAAA,EAAOO,yBAAyB,EACjC,GAAGnC,mBAAAA,EAAAA;AAEJ,IAAA,MAAM,EACJzmB,OAAAA,EAAS6oB,oBAAoB,EAC7B/pB,UAAAA,EAAYgqB,yBAAyB,EACrCjqB,KAAAA,EAAOkqB,yBAAyB,EAChCV,KAAAA,EAAOW,yBAAyB,EACjC,GAAGd,wBAAAA,EAAAA;IAEJ,MAAM7V,SAAAA,GACJiV,qBAAAA,IAAyBkB,qBAAAA,IAAyBpB,yBAAAA,IAA6B0B,yBAAAA;IACjF,MAAMjqB,KAAAA,GACJupB,qBAAAA,IAAyBK,qBAAAA,IAAyBE,yBAAAA,IAA6BI,yBAAAA;AAEjF,IAAA,MAAME,qBAAqB,CAACzhB,MAAAA,GAAAA;AAC1B8gB,QAAAA,qBAAAA,EAAAA;AACAI,QAAAA,qBAAAA,EAAAA;AACAE,QAAAA,yBAAAA,EAAAA;AACAI,QAAAA,yBAAAA,EAAAA;QAEA,OAAQxhB,MAAAA;YACN,KAAK,iBAAA;AACH,gBAAA,IAAIvI,MAAMgC,SAAS,CAACrC,IAAI,KAAKyC,2BAAAA,CAAa0D,SAAS,EAAE;oBACnDsiB,gBAAAA,CAAiB;AAAEtlB,wBAAAA,KAAAA,EAAO9C,KAAAA,CAAM6O,SAAS,CAACyZ,UAAU,CAACC;AAAkB,qBAAA,CAAA;AACzE,gBAAA,CAAA,MAAO,IAAIvoB,KAAAA,CAAMgC,SAAS,CAACrC,IAAI,KAAKyC,2BAAAA,CAAaZ,YAAY,IAAIxB,KAAAA,CAAMgC,SAAS,CAACb,YAAY,EAAE;oBAC7F+mB,oBAAAA,CAAqB;AACnBplB,wBAAAA,KAAAA,EAAO9C,KAAAA,CAAM6O,SAAS,CAACyZ,UAAU,CAACC,iBAAiB;AACnDjY,wBAAAA,eAAAA,EAAiBtQ,KAAAA,CAAMgC,SAAS,CAACb,YAAY,CAACmP;AAChD,qBAAA,CAAA;AACF,gBAAA;AACA,gBAAA;YACF,KAAK,UAAA;AACH,gBAAA,IAAItQ,MAAMgC,SAAS,CAACrC,IAAI,KAAKyC,2BAAAA,CAAa0D,SAAS,EAAE;oBACnDwjB,gBAAAA,CAAiB;AAAExmB,wBAAAA,KAAAA,EAAO9C,KAAAA,CAAM6O,SAAS,CAACyZ,UAAU,CAACC;AAAkB,qBAAA,CAAA;AACzE,gBAAA,CAAA,MAAO,IAAIvoB,KAAAA,CAAMgC,SAAS,CAACrC,IAAI,KAAKyC,2BAAAA,CAAaZ,YAAY,IAAIxB,KAAAA,CAAMgC,SAAS,CAACb,YAAY,EAAE;oBAC7FyoB,oBAAAA,CAAqB;AACnB9mB,wBAAAA,KAAAA,EAAO9C,KAAAA,CAAM6O,SAAS,CAACyZ,UAAU,CAACC,iBAAiB;AACnDjY,wBAAAA,eAAAA,EAAiBtQ,KAAAA,CAAMgC,SAAS,CAACb,YAAY,CAACmP;AAChD,qBAAA,CAAA;AACF,gBAAA;AACA,gBAAA;AACJ;AACF,IAAA,CAAA;AAEA,IAAA,MAAM+B,iBAAiBhO,aAAAA,CACrB,IACEP,QAAAA,CACGQ,GAAG,CAAC,CAACP,OAAAA,GAAAA;AACJ,YAAA,MAAM6O,MAAAA,GAAS7T,OAAO,CAACgF,OAAAA,CAAQlI,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC+W,MAAAA,EAAQ;YAEb,OAAO;AACLA,gBAAAA,MAAAA,EAAQ7O,QAAQlI,EAAE;AAClB6V,gBAAAA,iBAAAA,EAAmBkB,OAAOlB;AAC5B,aAAA;QACF,CAAA,CAAA,CACC5I,MAAM,CAACC,4CAAAA,CAAAA,EACZ;AAACjF,QAAAA;AAAS,KAAA,CAAA;AAGZ,IAAA,MAAMyT,UAAAA,GAAa,IAAA;QACjBtX,QAAAA,CAAS;YAAEN,IAAAA,EAAM;AAAgB,SAAA,CAAA;AACnC,IAAA,CAAA;AAEA,IAAA,qBACE5E,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXvQ,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;uBAGpB1Q,wBAAA,CAAA,aAAA,CAACiU,mBAAAA,EAAAA,IAAAA,EACEqD,cAAAA,CAAe/N,GAAG,CAAC,CAAC,EAAEsO,MAAM,EAAElB,iBAAiB,EAAE,iBAChD3W,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;YACCrQ,GAAAA,EAAKgU,MAAAA;YACLnH,OAAAA,EAAQ,SAAA;YACRiK,QAAAA,EAAUtC,SAAAA;YACV7G,OAAAA,EAAS,IAAA;gBACPyd,kBAAAA,CAAmBpX,MAAAA,CAAAA;AACrB,YAAA;AAEGlB,SAAAA,EAAAA,OAAAA,CAAAA,CAAAA,CAAAA,iBAAAA,CAAAA,CAAAA,CAAAA,EAIN9R,KAAAA,kBAAS7E,wBAAA,CAAA,aAAA,CAACkvB,gBAAAA,EAAAA,IAAAA,EAAWpW,yBAAAA,CAAmBjU,4BAEzC7E,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,OAAA;QAAQc,OAAAA,EAASgL;;;;;AAMzC,CAAA;;AC5HO,MAAM2S,mBAAAA,GAAsB,IAAA;AACjC,IAAA,MAAM3pB,YAAAA,GAAeC,gBAAAA,EAAAA;AACrB,IAAA,MAAMf,MAAAA,GAASa,gBAAAA,EAAAA;AACf,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQmK,6CAAAA,EAAAA;IAEd,MAAM,CAACzK,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAE2V,cAAc,EAAE,GAAG7V,KAAAA,CAAM6O,SAAS,CAACsb,QAAQ;AACnD,IAAA,MAAMlU,eAAAA,GAAkBC,mBAAAA,EAAAA;AACxB,IAAA,MAAM,EAAEqS,iBAAiB,EAAE,GAAGvoB,KAAAA,CAAM6O,SAAS,CAACyZ,UAAU;AAExD,IAAA,MAAM3gB,WAAWshB,wBAAAA,CAAyB;QAAE3pB,YAAAA,EAAc;AAAK,KAAA,CAAA;AAC/D,IAAA,MAAM8qB,oBAAoBtB,wBAAAA,CAAyB;QAAExpB,YAAAA,EAAc;AAAK,KAAA,CAAA;AAExE,IAAA,MAAM8T,SAAAA,GAAYzL,QAAAA,CAAS9H,UAAU,IAAIuqB,kBAAkBvqB,UAAU;AACrE,IAAA,MAAMwT,SAAAA,GAAY1L,QAAAA,CAAS/H,KAAK,IAAIwqB,kBAAkBxqB,KAAK;IAE3D,MAAMyqB,qBAAAA,GAAwBxrB,UAM5B,0CAAA,EACA,CAACoC,GAAW,EAAEC,GAAAA,EAAK,EAAEsV,GAAG,EAAE1T,KAAK,EAAE,EAA2C,GAC1EvC,aAAa8T,IAAI,CAACvR,KAAK,CAACoL,SAAS,CAACmI,YAAY,CAAC;YAC7CI,IAAAA,EAAMD,GAAAA;YACNzT,aAAAA,EAAeD;SACjB,CAAA,EACF;AACEvD,QAAAA,SAAAA,EAAW,CAACC,IAAAA,GAAAA;AACVqD,YAAAA,8BAAAA,CAA+BrD,IAAAA,EAAMS,QAAAA,CAAAA;AACvC,QAAA,CAAA;QACAX,YAAAA,EAAc;AAChB,KAAA,CAAA;IAGF,MAAM+W,YAAAA,GAAexX,SAAAA,CAMnB,gCAAA,EACA,CACEoC,CAAAA,EACA,EACEC,GAAAA,EAAK,EAAEsV,GAAG,EAAE8T,YAAY,EAAEja,cAAc,EAAE9B,sBAAsB,EAAE,EACqC,GAEzGhO,YAAAA,CAAa8T,IAAI,CAACvR,KAAK,CAACuT,YAAY,CAAC;YACnCI,IAAAA,EAAMD,GAAAA;YACNzT,aAAAA,EAAeunB,YAAAA;YACfha,eAAAA,EAAiBD,cAAAA;YACjBhC,wBAAAA,EAA0BE;SAC5B,CAAA,EACF;AACEhP,QAAAA,SAAAA,EAAW,CAACC,IAAAA,GAAAA;AACViD,YAAAA,qBAAAA,CAAsBjD,MAAMS,QAAAA,EAAUR,MAAAA,CAAAA;AACxC,QAAA,CAAA;QACAH,YAAAA,EAAc;AAChB,KAAA,CAAA;AAGF,IAAA,MAAMirB,mBAAAA,GAAsBF,qBAAAA,CAAsBxqB,UAAU,IAAIwW,aAAaxW,UAAU;AACvF,IAAA,MAAMD,QAAQyqB,qBAAAA,CAAsBzqB,KAAK,IAAIyW,YAAAA,CAAazW,KAAK,IAAIyT,SAAAA;IACnE,MAAMO,YAAAA,GAAehU,KAAAA,GAAQiU,yBAAAA,CAAmBjU,KAAAA,EAAAA,GAAAA,CAAAA,GAA8BE,SAAAA;AAE9E,IAAA,MAAM0qB,QAAAA,GAAW,IAAA;AACf,QAAA,KAAK,MAAMC,IAAAA,IAAQ;AAAC9iB,YAAAA,QAAAA;AAAUyiB,YAAAA,iBAAAA;AAAmB/T,YAAAA,YAAAA;AAAcgU,YAAAA;SAAsB,CAAE;AACrFI,YAAAA,IAAAA,CAAKrB,KAAK,EAAA;AACZ,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMxU,eAAe,OAAO4B,GAAAA,GAAAA;AAC1BgU,QAAAA,QAAAA,EAAAA;QAEA,IAAI;AACF,YAAA,IAAIxqB,MAAMgC,SAAS,CAACrC,IAAI,KAAKyC,2BAAAA,CAAa0D,SAAS,EAAE;gBACnD,MAAMukB,qBAAAA,CAAsBtpB,OAAO,CAAC;AAClCyV,oBAAAA,GAAAA;oBACA1T,KAAAA,EAAOylB;AACT,iBAAA,CAAA;YACF,CAAA,MAAO,IACLvoB,MAAMgC,SAAS,CAACrC,IAAI,KAAKyC,2BAAAA,CAAaZ,YAAY,IAClDxB,KAAAA,CAAMgC,SAAS,CAACb,YAAY,IAC5BnB,KAAAA,CAAM6O,SAAS,CAACyZ,UAAU,CAACC,iBAAiB,EAC5C;gBACA,MAAMlS,YAAAA,CAAatV,OAAO,CAAC;AACzByV,oBAAAA,GAAAA;AACA8T,oBAAAA,YAAAA,EAActqB,KAAAA,CAAM6O,SAAS,CAACyZ,UAAU,CAACC,iBAAiB;AAC1DlY,oBAAAA,cAAAA,EAAgBrQ,KAAAA,CAAMgC,SAAS,CAACb,YAAY,CAACmP,eAAe;oBAC5D/B,sBAAAA,EAAwB9O,MAAAA,CAAO6O,cAAc,CAACC;AAChD,iBAAA,CAAA;AACF,YAAA;AACF,QAAA,CAAA,CAAE,OAAM;AACN0H,YAAAA,eAAAA,CAAgBS,KAAK,EAAA;AACvB,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMY,eAAAA,GAAkB,UAAA;AACtBkT,QAAAA,QAAAA,EAAAA;AAEA,QAAA,IAAIpX,SAAAA,EAAW;AAEf,QAAA,IAAIpT,MAAMgC,SAAS,CAACrC,IAAI,KAAKyC,2BAAAA,CAAa0D,SAAS,EAAE;YACnD,MAAMskB,iBAAAA,CAAkBrpB,OAAO,CAAC;gBAAE+B,KAAAA,EAAOylB;AAAkB,aAAA,CAAA;AAC7D,QAAA,CAAA,MAAO,IAAIvoB,KAAAA,CAAMgC,SAAS,CAACrC,IAAI,KAAKyC,2BAAAA,CAAaZ,YAAY,IAAIxB,KAAAA,CAAMgC,SAAS,CAACb,YAAY,EAAE;YAC7F,MAAMwG,QAAAA,CAAS5G,OAAO,CAAC;gBACrB+B,KAAAA,EAAOylB,iBAAAA;AACPjY,gBAAAA,eAAAA,EAAiBtQ,KAAAA,CAAMgC,SAAS,CAACb,YAAY,CAACmP;AAChD,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMiH,UAAAA,GAAa,IAAA;QACjBtX,QAAAA,CAAS;YAAEN,IAAAA,EAAM;AAAgB,SAAA,CAAA;AACnC,IAAA,CAAA;AAEA,IAAA,qBACE5E,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;AACVuK,KAAAA,EAAAA,cAAAA,KAAmB,qBAClB9a,wBAAA,CAAA,aAAA,CAACgd,mBAAAA,EAAAA;QACCJ,YAAAA,EAAc4S,mBAAAA;QACdnV,QAAAA,EAAUR,YAAAA;QACVhB,YAAAA,EAAcA,YAAAA;AACdoE,QAAAA,UAAAA,EAAYnC,eAAeoC,OAAO,EAAA;QAClCnC,oBAAAA,EAAsByS;uBAGxBxtB,wBAAA,CAAA,aAAA,CAACqQ,oBAAAA,EAAAA,IAAAA,CAAAA,gBAGHrQ,wBAAA,CAAA,aAAA,CAACiU,mBAAAA,EAAAA,IAAAA,gBACCjU,wBAAA,CAAA,aAAA,CAAC0c,sBAAAA,EAAAA;QAAgBC,SAAAA,EAAWzB,eAAAA;QAAiB2B,SAAAA,EAAWN,eAAAA;QAAiBK,YAAAA,EAAc4S;sBACvFxvB,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,OAAA;QAAQc,OAAAA,EAASgL;;;;;AAMzC,CAAA;;AC9JO,MAAMmT,yBAAAA,GAA4B,IAAA;AACvC,IAAA,MAAMvK,MAAAA,GAAS3f,gBAAAA,EAAAA;AAEf,IAAA,OAAO3B,UACL,gCAAA,EACA,OAAOkqB,IAAAA,EAAM,EAAE7nB,KAAK,EAAEopB,YAAY,EAAE,EAAqC,GACvE,MAAMnK,MAAAA,CAAO1Y,GAAG,CAACkjB,mBAAmB,CAACL,YAAAA,CAAAA,EACvC;QAAEhrB,YAAAA,EAAc;AAAK,KAAA,CAAA;AAEzB,CAAA;;ACFO,MAAMsrB,iBAAAA,GAAoB,IAAA;IAC/B,MAAM,GAAG3qB,SAAS,GAAGC,uBAAAA,EAAAA;AACrB,IAAA,MAAM,CAAC4C,KAAAA,EAAO+nB,QAAAA,CAAS,GAAGxqB,cAAAA,CAAS,EAAA,CAAA;AACnC,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQoK,6CAAAA,EAAAA;IAEd,MAAM,CAAC7K,KAAAA,EAAOkrB,QAAAA,CAAS,GAAGzqB,cAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACsK,SAAAA,EAAWogB,YAAAA,CAAa,GAAG1qB,cAAAA,CAAS,KAAA,CAAA;IAE3C,MAAM,EAAEU,OAAO,EAAE,GAAG2pB,yBAAAA,EAAAA;AAEpB,IAAA,MAAMvK,MAAAA,GAAS3f,gBAAAA,EAAAA;IACf,MAAM,EAAEmQ,UAAU,EAAE,GAAGrQ,gBAAAA,EAAAA;AAEvB,IAAA,MAAMsU,eAAe,OAAOC,CAAAA,GAAAA;AAC1BA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;QAChBgW,QAAAA,CAAShrB,SAAAA,CAAAA;AAET,QAAA,MAAMkrB,iBAAAA,GAAoB,UAAA;YACxB,IAAI;gBACF,MAAMtoB,QAAAA,GAAW,MAAM3B,OAAAA,CAAQ;oBAAEupB,YAAAA,EAAcxnB;AAAM,iBAAA,CAAA;AAErD,gBAAA,IAAI,CAACJ,QAAAA,EAAU;AACb,oBAAA,OAAO,EAAE;AACX,gBAAA;AAEA,gBAAA,OAAOA,SAASuoB,WAAW;AAC7B,YAAA,CAAA,CAAE,OAAOpW,CAAAA,EAAG;AACViW,gBAAAA,QAAAA,CACEI,uDAAAA,CACErW,CAAAA,EAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;;AAON,YAAA;AACF,QAAA,CAAA;QAEA,IAAI;YACFkW,YAAAA,CAAa,IAAA,CAAA;AAEb,YAAA,MAAME,cAAc,MAAMD,iBAAAA,EAAAA;YAE1B,IAAIC,WAAAA,EAAajlB,WAAW,CAAA,EAAG;gBAC7B,MAAM,CAACmlB,WAAW,GAAGF,WAAAA;AACrB,gBAAA,MAAM9K,MAAAA,CAAO1Y,GAAG,CAAC+I,KAAK,CAAC;AACrBC,oBAAAA,aAAAA,EAAe0a,WAAW1a,aAAa;AACvCC,oBAAAA,kBAAAA,EAAoBC,UAAAA,EAAYC,gBAAAA;AAChCC,oBAAAA,mBAAAA,EAAqBF,UAAAA,EAAYG;AACnC,iBAAA,CAAA;;;AAIA,gBAAA;AACF,YAAA;YAEAia,YAAAA,CAAa,KAAA,CAAA;AAEb,YAAA,IAAIE,WAAAA,EAAa;gBACfhrB,QAAAA,CAAS;oBAAEN,IAAAA,EAAM,yBAAA;AAA2BsrB,oBAAAA;AAAY,iBAAA,CAAA;AAC1D,YAAA;AACF,QAAA,CAAA,CAAE,OAAOpW,CAAAA,EAAG;YACVkW,YAAAA,CAAa,KAAA,CAAA;YACb,MAAMlW,CAAAA;AACR,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM0C,UAAAA,GAAa,IAAA;QACjBtX,QAAAA,CAAS;YAAEN,IAAAA,EAAM;AAAgB,SAAA,CAAA;AACnC,IAAA,CAAA;AAEA,IAAA,qBACE5E,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXvQ,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;uBAIpB1Q,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAO8J,EAAAA,EAAG,MAAA;QAAOC,QAAAA,EAAUR,YAAAA;QAActJ,GAAAA,EAAK;qBAC7CvQ,wBAAA,CAAA,aAAA,CAACqwB,iBAAAA,EAAAA;QAAWtoB,KAAAA,EAAOA,KAAAA;QAAO+nB,QAAAA,EAAUA,QAAAA;QAAU9R,SAAAA,EAAAA,IAAAA;QAAUnZ,KAAAA,EAAOA;sBAE/D7E,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUgK,OAAAA,EAAS9K,SAAAA;QAAWhL,IAAAA,EAAK;;;;uBAInD5E,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,OAAA;QAAQc,OAAAA,EAASgL;;;;;AAMzC,CAAA;;ACxFA,MAAM8T,OAAAA,GAAwC;IAC5C,kBAAA,EAAoB,QAAA;IACpB,iBAAA,EAAmB,WAAA;IACnBC,IAAAA,EAAM;AACR,CAAA;AAOO,MAAMC,SAAAA,GAAY,CAAC,EAAEJ,UAAU,EAAEK,OAAO,EAAkB,GAAA;AAC/D,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQ/gB,6CAAAA,EAAAA;AACd,IAAA,MAAMlK,YAAAA,GAAeC,gBAAAA,EAAAA;IACrB,MAAM,EAAEmQ,UAAU,EAAE,GAAGrQ,gBAAAA,EAAAA;IACvB,MAAM,EAAEof,YAAY,EAAE,GAAGlV,sBAAAA,EAAAA;AAEzB,IAAA,MAAM,EAAEiG,aAAa,EAAEgb,YAAY,EAAEC,iBAAiB,EAAE,GAAGP,UAAAA;AAE3D,IAAA,MAAMtL,gBAAgB,IACpBtf,YAAAA,CAAakH,GAAG,CACb+I,KAAK,CAAC;AACLC,YAAAA,aAAAA;AACAI,YAAAA,mBAAAA,EAAqBF,UAAAA,EAAYG,iBAAAA;AACjCJ,YAAAA,kBAAAA,EAAoBC,UAAAA,EAAYC;AAClC,SAAA,CAAA,CACC9O,IAAI,CAAC,IAAA;YACJ0pB,OAAAA,GAAUL,UAAAA,CAAAA;AACZ,QAAA,CAAA,CAAA;IAEJ,MAAMQ,QAAAA,GAAWN,OAAO,CAACK,iBAAAA,CAAkB;AAC3C,IAAA,MAAM9L,IAAAA,GAAOF,YAAY,CAACiM,QAAAA,CAAS,IAAIhxB,OAAAA;AAEvC,IAAA,qBACEI,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUc,OAAAA,EAASsT,aAAAA;AAAeF,QAAAA,IAAAA,gBAAM5kB,wBAAA,CAAA,aAAA,CAAC6kB,IAAAA,EAAAA,IAAAA;;;;;AACK6L,YAAAA,YAAAA,EAAAA;;;AAGlE,CAAA;;AC1CA,mDAEO,SAASG,eAAAA,CAAgBrjB,MAA2B,EAAA;AACzD,IAAA,OAAO,CAAC,IAAI,EAAEA,MAAAA,CAAOkI,aAAa,CAAA,CAAE;AACtC;AAEO,SAASob,oBAAoBtjB,MAAqB,EAAA;AACvD,IAAA,OAAOA,QAAQujB,UAAAA,CAAW,MAAA,CAAA,GAAUvjB,MAAAA,CAAOwjB,KAAK,CAAC,CAAA,CAAA,GAAKjsB,SAAAA;AACxD;AAOO,SAASksB,YAAYjf,MAAkB,EAAA;IAC5C,IAAIA,MAAAA,CAAOpN,IAAI,KAAK,OAAA,EAAS;QAC3B,OAAOoN,MAAAA,CAAOlG,QAAQ,CAAClH,IAAI;AAC7B,IAAA,CAAA,MAAO,IAAIoN,MAAAA,CAAOpN,IAAI,KAAK,KAAA,EAAO;QAChC,OAAOisB,eAAAA,CAAgB7e,OAAOoe,UAAU,CAAA;IAC1C,CAAA,MAAO;QACL,OAAO,eAAA;AACT,IAAA;AACF;;ACnBA,MAAMtmB,UAAAA,GAAa,CAAC,EAAEonB,oBAAoB,EAAmD,GAAA;IAC3F,MAAM,CAAC5L,cAAAA,EAAgBG,iBAAAA,CAAkB,GAAGN,qBAAAA,EAAAA;AAC5C,IAAA,MAAMgM,cAAcL,mBAAAA,CAAoBxL,cAAAA,CAAAA;AAExC,IAAA,MAAM,CAAC4K,WAAAA,EAAakB,aAAAA,CAAc,GAAGC,iBAAAA,CAAWC,WAAW,CACzDJ,oBAAAA,EACA,CAACd,UAAAA,GAAeA,UAAAA,CAAW1a,aAAa,KAAKyb,WAAAA,CAAAA;AAG/C,IAAA,qBACEnxB,gBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;OACV2f,WAAAA,CAAY3mB,GAAG,CAAC,CAACuC,QAAAA,EAAU+E,KAAAA,GAAAA;AAC1B,QAAA,MAAMmB,uBACJhS,gBAAA,CAAA,aAAA,CAACwwB,SAAAA,EAAAA;AACC3sB,YAAAA,GAAAA,EAAKiI,SAAS4kB,YAAY;YAC1BN,UAAAA,EAAYtkB,QAAAA;YACZ2kB,OAAAA,EAAS,CAACL,UAAAA,GAAe3K,iBAAAA,CAAkBoL,eAAAA,CAAgBT,UAAAA,CAAAA;;AAI/D,QAAA,OAAOgB,aAAAA,IAAiBvgB,KAAAA,KAAU,CAAA,iBAAI7Q,gBAAA,CAAA,aAAA,CAAC6nB,uBAAU7V,MAAAA,CAAAA,GAAqBA,MAAAA;AACxE,IAAA,CAAA,CAAA,CAAA;AAGN,CAAA;AAEO,MAAMuf,gBAAAA,GAAmB,IAAA;IAC9B,MAAM,CAACtsB,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQuK,6CAAAA,EAAAA;AAEd,IAAA,MAAM8M,UAAAA,GAAa,IAAA;QACjBtX,QAAAA,CAAS;YAAEN,IAAAA,EAAM;AAAgB,SAAA,CAAA;AACnC,IAAA,CAAA;AAEA,IAAA,qBACE5E,gBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXvQ,gBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;uBAIpB1Q,gBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXvQ,gBAAA,CAAA,aAAA,CAAC8J,UAAAA,EAAAA;AAAWonB,QAAAA,oBAAAA,EAAsBjsB,KAAAA,CAAM6O,SAAS,CAAC0d,iBAAiB,CAACtB;sBAEpElwB,gBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,OAAA;QAAQc,OAAAA,EAASgL;;;;;AAMzC,CAAA;;ACpDO,MAAMiV,oBAAAA,GAAuB,IAAA;IAClC,MAAM,GAAGvsB,SAAS,GAAGC,uBAAAA,EAAAA;AACrB,IAAA,MAAM,CAACO,IAAAA,EAAMgsB,OAAAA,CAAQ,GAAGpsB,cAAAA,CAAS,EAAA,CAAA;IACjC,MAAM,CAACT,KAAAA,EAAOkrB,QAAAA,CAAS,GAAGzqB,cAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACsX,YAAAA,EAAc+U,eAAAA,CAAgB,GAAGrsB,cAAAA,CAAS,KAAA,CAAA;AACjD,IAAA,MAAME,YAAAA,GAAeC,gBAAAA,EAAAA;IACrB,MAAM,EAAEmQ,UAAU,EAAE,GAAGrQ,gBAAAA,EAAAA;AACvB,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQmK,6CAAAA,EAAAA;IAEd,MAAM,EAAE1J,SAAS4rB,kBAAkB,EAAE,GAAG9tB,SAAAA,CACtC,+BAAA,EACA,OAAOoC,CAAAA,EAAW,EAAEC,KAAK,EAAET,IAAI,EAAE,EAA6B,GAC5DF,aAAaY,YAAY,CAACC,SAAS,CAAC;YAAEC,iBAAAA,EAAmBZ;SAAK,CAAA,EAChE;QACEvB,OAAAA,EAAS,IAAA;AACP4rB,YAAAA,QAAAA,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;;YACA4B,eAAAA,CAAgB,KAAA,CAAA;AAClB,QAAA;AACF,KAAA,CAAA;AAGF,IAAA,MAAM9X,eAAe,OAAOC,CAAAA,GAAAA;AAC1BA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;QAChBgW,QAAAA,CAAShrB,SAAAA,CAAAA;QACT4sB,eAAAA,CAAgB,IAAA,CAAA;QAEhB,MAAMttB,MAAAA,GAAS,MAAMutB,kBAAAA,CAAmB;AAAElsB,YAAAA;AAAK,SAAA,CAAA;AAC/C,QAAA,IAAIrB,MAAAA,EAAQ;YACV,MAAM,EAAE+B,YAAY,EAAE,GAAG/B,MAAAA;AACzB,YAAA,IAAI+B,iBAAiB,IAAA,EAAM;AACzB2pB,gBAAAA,QAAAA,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;;gBAGA4B,eAAAA,CAAgB,KAAA,CAAA;AAClB,YAAA,CAAA,MAAO,IAAIvrB,YAAAA,CAAa4E,sBAAsB,CAACC,MAAM,KAAK,CAAA,EAAG;AAC3D,gBAAA,MAAM,CAACmlB,UAAAA,CAAW,GAAGhqB,YAAAA,CAAa4E,sBAAsB;AACxD,gBAAA,MAAMxF,YAAAA,CAAakH,GAAG,CAAC+I,KAAK,CAAC;AAC3BC,oBAAAA,aAAAA,EAAe0a,WAAW1a,aAAa;AACvCC,oBAAAA,kBAAAA,EAAoBC,UAAAA,EAAYC,gBAAAA;AAChCC,oBAAAA,mBAAAA,EAAqBF,UAAAA,EAAYG;AACnC,iBAAA,CAAA;YACF,CAAA,MAAO;gBACL7Q,QAAAA,CAAS;oBACPN,IAAAA,EAAM,kBAAA;AACNwB,oBAAAA;AACF,iBAAA,CAAA;gBACAlB,QAAAA,CAAS;oBAAEN,IAAAA,EAAM,YAAA;AAAcsC,oBAAAA,MAAAA,EAAQC,kBAAWC;AAAK,iBAAA,CAAA;AACzD,YAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMyqB,sBAAAA,GAAyB,IAAA;QAC7B3sB,QAAAA,CAAS;YAAEN,IAAAA,EAAM,YAAA;AAAcsC,YAAAA,MAAAA,EAAQC,kBAAWC;AAAK,SAAA,CAAA;AACzD,IAAA,CAAA;AAEA,IAAA,MAAMoV,UAAAA,GAAa,IAAA;QACjBtX,QAAAA,CAAS;YAAEN,IAAAA,EAAM;AAAgB,SAAA,CAAA;AACnC,IAAA,CAAA;AAEA,IAAA,qBACE5E,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXvQ,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;uBAGpB1Q,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;uBAQDzQ,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAO8J,EAAAA,EAAG,MAAA;QAAOC,QAAAA,EAAUR,YAAAA;QAActJ,GAAAA,EAAK;qBAC7CvQ,wBAAA,CAAA,aAAA,CAACyd,YAAAA,EAAAA;QACC3c,EAAAA,EAAG,mBAAA;QACHkd,SAAAA,EAAAA,IAAAA;QACAD,KAAK,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QACLJ,KAAAA,EAAOjY,IAAAA;AACPkY,QAAAA,QAAAA,EAAU,CAAC9D,CAAAA,GAAM4X,OAAAA,CAAQ5X,CAAAA,CAAE+D,MAAM,CAACF,KAAK,CAAA;QACvCG,WAAW,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QACXjZ,KAAAA,EAAOA;sBAGT7E,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUgK,OAAAA,EAASkC,YAAAA;QAAchY,IAAAA,EAAK,QAAA;AAAS+V,QAAAA,QAAAA,EAAU,CAACjV,IAAAA,IAAQkX;;;;uBAIlF5c,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUc,OAAAA,EAASqgB;;;;uBAInC7xB,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,OAAA;QAAQc,OAAAA,EAASgL;;;;;AAMzC,CAAA;;AC/FO,MAAMsV,gBAAAA,GAAmB,IAAA;IAC9B,MAAM,CAAC7sB,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;AAC1B,IAAA,MAAMT,MAAAA,GAASa,gBAAAA,EAAAA;AACf,IAAA,MAAM6f,MAAAA,GAAS3f,gBAAAA,EAAAA;AACf,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQiK,6CAAAA,EAAAA;AAEd,IAAA,MAAMzL,OAAAA,GAAUC,uBAAAA,EAAAA;AAChB,IAAA,MAAMC,OAAAA,GAAUC,uBAAAA,EAAAA;IAEhB,MAAM,CAAC2D,KAAAA,EAAO+nB,QAAAA,CAAS,GAAGxqB,cAAAA,CAASL,MAAM6O,SAAS,CAACie,aAAa,CAAChqB,KAAK,CAAA;AACtE,IAAA,MAAM,CAACiqB,QAAAA,EAAUC,WAAAA,CAAY,GAAG3sB,cAAAA,CAAS,EAAA,CAAA;AACzC,IAAA,MAAM,CAACuT,YAAAA,EAAcqZ,eAAAA,CAAgB,GAAG5sB,cAAAA,CAAS,EAAA,CAAA;AACjD,IAAA,MAAM,CAACsX,YAAAA,EAAc+U,eAAAA,CAAgB,GAAGrsB,cAAAA,CAAS,KAAA,CAAA;AACjD,IAAA,MAAMc,YAAAA,GAAenB,KAAAA,CAAMgC,SAAS,CAACb,YAAY;AAEjD,IAAA,MAAM+rB,iBAAiB,CAAC5c,eAAAA,GAAAA;QACtB2c,eAAAA,CAAgB,EAAA,CAAA;QAChBP,eAAAA,CAAgB,IAAA,CAAA;QAChBvM,MAAAA,CAAOvY,SAAS,CACbyO,YAAY,CAAC;YACZtT,aAAAA,EAAeD,KAAAA;YACfwN,eAAAA,EAAiBA,eAAAA;YACjByc,QAAAA,EAAUA,QAAAA;YACV1e,wBAAAA,EAA0B5O,MAAAA,CAAO6O,cAAc,EAAEC,sBAAAA,IAA0B4e,2CAAAA;YAC3E/Y,MAAAA,EAAQ3U,MAAAA,CAAO2tB,eAAe,EAAEhZ;SAClC,CAAA,CACCtS,IAAI,CAAC,CAACtC,IAAAA,GAAAA;YACLktB,eAAAA,CAAgB,KAAA,CAAA;YAChB1tB,OAAAA,CAAQ;AAAEW,gBAAAA,IAAAA,EAAMtC,+BAAgBgwB,uBAAuB;AAAE7tB,gBAAAA;AAAK,aAAA,CAAA;AAC9DiD,YAAAA,qBAAAA,CAAsBjD,MAAMS,QAAAA,EAAUR,MAAAA,CAAAA;QACxC,CAAA,CAAA,CACCmX,KAAK,CAAC,CAAC6L,GAAAA,GAAAA;YACNiK,eAAAA,CAAgB,KAAA,CAAA;YAChBxtB,OAAAA,CAAQujB,GAAAA,CAAAA;AACRwK,YAAAA,eAAAA,CAAgBpZ,yBAAAA,CAAmB4O,GAAAA,EAAAA,GAAAA,CAAAA,CAAAA;AACrC,QAAA,CAAA,CAAA;AACJ,IAAA,CAAA;AAEA,IAAA,MAAM6K,uBAAAA,GAA0B,IAAA;QAC9BL,eAAAA,CAAgB,EAAA,CAAA;QAChBP,eAAAA,CAAgB,IAAA,CAAA;AAChBvM,QAAAA,MAAAA,CAAOvY,SAAS,CAACsG,SAAS,CACvBmI,YAAY,CAAC;YACZtT,aAAAA,EAAeD,KAAAA;YACfiqB,QAAAA,EAAUA;SACZ,CAAA,CACCjrB,IAAI,CAAC,CAACtC,IAAAA,GAAAA;YACLktB,eAAAA,CAAgB,KAAA,CAAA;YAChB1tB,OAAAA,CAAQ;AAAEW,gBAAAA,IAAAA,EAAMtC,+BAAgBkwB,gCAAgC;AAAE/tB,gBAAAA;AAAK,aAAA,CAAA;YACvES,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,YAAA;AAAcsC,gBAAAA,MAAAA,EAAQC,kBAAW4D;AAAU,aAAA,CAAA;YAC5D7F,QAAAA,CAAS;gBACPN,IAAAA,EAAM,qBAAA;AACNmD,gBAAAA,KAAAA,EAAOtD,KAAKuD,aAAa;AACzBC,gBAAAA,uBAAAA,EAAyBxD,KAAKyD;AAChC,aAAA,CAAA;QACF,CAAA,CAAA,CACC2T,KAAK,CAAC,CAAC6L,GAAAA,GAAAA;YACNiK,eAAAA,CAAgB,KAAA,CAAA;YAChBxtB,OAAAA,CAAQujB,GAAAA,CAAAA;AACRwK,YAAAA,eAAAA,CAAgBpZ,yBAAAA,CAAmB4O,GAAAA,EAAAA,GAAAA,CAAAA,CAAAA;AACrC,QAAA,CAAA,CAAA;AACJ,IAAA,CAAA;AAEA,IAAA,MAAM+K,kCAAkC,CACtC,EAAEC,sBAAsB,EAAEC,qBAAqB,EAA2B,EAC1E5qB,KAAAA,GAAAA;QAEA,OAAQ2qB,sBAAAA;YACN,KAAK,aAAA;gBACH,OAAO,IAAA;YACT,KAAK,aAAA;gBACH,OAAO,KAAA;YACT,KAAK,YAAA;AAAc,gBAAA;AACjB,oBAAA,MAAMxF,WAAAA,GAAcnlB,KAAAA,CAAMqZ,KAAK,CAAC,KAAKwR,GAAG,EAAA;AACxC,oBAAA,OAAO1F,WAAAA,IAAe,IAAA,IAAQyF,qBAAAA,CAAsBxW,QAAQ,CAAC+Q,WAAAA,CAAAA;AAC/D,gBAAA;AACF;AACF,IAAA,CAAA;AAEA,IAAA,MAAM2F,oBAAAA,GAAuB,IAAA;AAC3B,QAAA,IAAI,CAACzsB,YAAAA,EAAc;AACjB,YAAA;AACF,QAAA;QAEA,IAAI,CAACqsB,+BAAAA,CAAgCrsB,YAAAA,EAAc2B,KAAAA,CAAAA,EAAQ;YACzD4pB,eAAAA,CAAgB,KAAA,CAAA;YAChB,MAAM3hB,gBAAAA,GAAmB5J,aAAa6J,iBAAiB;AACvDiiB,YAAAA,eAAAA,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;;AAGgBnqB,oBAAAA,KAAAA,EAAAA,KAAAA;AAAiCiI,oBAAAA,gBAAAA,EAAAA;;;AAGjD,YAAA;AACF,QAAA;QAEA,MAAM8iB,SAAAA,GAAYlsB,+BAAAA,CAAiBwe,MAAAA,CAAAA,CAAQ0N,SAAS;QACpDA,SAAAA,CAAUpN,OAAO,CAAC,mBAAA,EAAqB3d,KAAAA,CAAAA;AACvCqd,QAAAA,MAAAA,CAAOsH,UAAU,CAAC3kB,KAAK,CACpB4kB,aAAa,CAAC;YACb3kB,aAAAA,EAAeD,KAAAA;AACfwN,YAAAA,eAAAA,EAAiBnP,aAAamP,eAAe;YAC7CI,kBAAAA,EAAoBjR,MAAAA,CAAO2tB,eAAe,EAAEU,wBAAAA;YAC5Cjd,mBAAAA,EAAqBpR,MAAAA,CAAO2tB,eAAe,EAAEU,wBAAAA;YAC7CnG,iBAAAA,EAAmBloB,MAAAA,CAAO6nB,sBAAsB,EAAEM,eAAAA;YAClDC,kBAAAA,EAAoBpoB,MAAAA,CAAO6nB,sBAAsB,EAAEQ,gBAAAA;YACnD1T,MAAAA,EAAQ3U,MAAAA,CAAO6nB,sBAAsB,EAAElT;AACzC,SAAA,CAAA,CACCtS,IAAI,CAAC,IAAA;YACJ4qB,eAAAA,CAAgB,KAAA,CAAA;YAChBzsB,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,oBAAA;gBAAsBmD,KAAAA,EAAOA;AAAM,aAAA,CAAA;YACpD7C,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,YAAA;AAAcsC,gBAAAA,MAAAA,EAAQC,kBAAW6rB;AAAgC,aAAA,CAAA;QACpF,CAAA,CAAA,CACCnX,KAAK,CAAC,CAAC6L,GAAAA,GAAAA;YACNvjB,OAAAA,CAAQujB,GAAAA,CAAAA;AACRwK,YAAAA,eAAAA,CAAgBpZ,yBAAAA,CAAmB4O,GAAAA,EAAAA,GAAAA,CAAAA,CAAAA;YACnCiK,eAAAA,CAAgB,KAAA,CAAA;AAClB,QAAA,CAAA,CAAA;AACJ,IAAA,CAAA;IAEA,OAAO;AACLvM,QAAAA,MAAAA;AACAjhB,QAAAA,OAAAA;AACA4D,QAAAA,KAAAA;AACA+nB,QAAAA,QAAAA;AACAkC,QAAAA,QAAAA;AACAC,QAAAA,WAAAA;AACA7rB,QAAAA,YAAAA;AACAyS,QAAAA,YAAAA;AACAqZ,QAAAA,eAAAA;AACAtV,QAAAA,YAAAA;AACA+U,QAAAA,eAAAA;AACAQ,QAAAA,cAAAA;AACAI,QAAAA,uBAAAA;AACAM,QAAAA;AACF,KAAA;AACF,CAAA;;ACtIO,MAAM3nB,kBAAAA,GAAqB,IAAA;IAChC,MAAM,GAAGhG,SAAS,GAAGC,uBAAAA,EAAAA;AACrB,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQuK,6CAAAA,EAAAA;IAEd,MAAM,EACJ0V,MAAM,EACNrd,KAAK,EACL+nB,QAAQ,EACRkC,QAAQ,EACRC,WAAW,EACX7rB,YAAY,EACZyS,YAAY,EACZqZ,eAAe,EACftV,YAAY,EACZ+U,eAAe,EACfQ,cAAc,EACdI,uBAAuB,EACvBM,oBAAoB,EACrB,GAAGf,gBAAAA,EAAAA;IAEJ,MAAM,CAACmB,WAAWC,YAAAA,CAAa,GAAG5tB,eAAS,CAAC,CAACc,gBAAgB,CAAC2B,KAAAA,CAAAA;AAE9D,IAAA,MAAM8R,eAAe,OAAOC,CAAAA,GAAAA;AAC1BA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChB,QAAA,IAAI3T,YAAAA,EAAc;YAChB,MAAMmP,eAAAA,GAAkBnP,aAAamP,eAAe;;AAGpD,YAAA,IAAI,CAAC0d,SAAAA,EAAW;gBACdd,cAAAA,CAAe5c,eAAAA,CAAAA;AACf,gBAAA;AACF,YAAA;;;AAIA,YAAA,IAAI,CAACxN,KAAAA,CAAMc,KAAK,CAACsqB,0BAAAA,CAAAA,EAAc;AAC7BjB,gBAAAA,eAAAA,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;;AACA,gBAAA;AACF,YAAA;YACAA,eAAAA,CAAgB,EAAA,CAAA;YAChBP,eAAAA,CAAgB,IAAA,CAAA;AAChB/qB,YAAAA,+BAAAA,CAAiBwe,MAAAA,CAAAA,CACdgO,aAAa,CAACC,YAAY,CAACtrB,KAAAA,EAAO3B,YAAAA,CAAamP,eAAe,CAAA,CAC9DxO,IAAI,CAAC,CAAC,EAAEusB,MAAM,EAAE,GAAA;AACf,gBAAA,IAAIA,MAAAA,EAAQ;oBACVJ,YAAAA,CAAa,KAAA,CAAA;oBACbvB,eAAAA,CAAgB,KAAA,CAAA;oBAChBzsB,QAAAA,CAAS;wBAAEN,IAAAA,EAAM,oBAAA;AAAsBmD,wBAAAA;AAAM,qBAAA,CAAA;AAC7C,oBAAA;AACF,gBAAA;;AAEA8qB,gBAAAA,oBAAAA,EAAAA;YACF,CAAA,CAAA,CACChX,KAAK,CAAC,CAAC6L,GAAAA,GAAAA;gBACNiK,eAAAA,CAAgB,KAAA,CAAA;AAChBO,gBAAAA,eAAAA,CAAgBpZ,yBAAAA,CAAmB4O,GAAAA,EAAAA,GAAAA,CAAAA,CAAAA;AACrC,YAAA,CAAA,CAAA;QACJ,CAAA,MAAO;;AAEL6K,YAAAA,uBAAAA,EAAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMgB,SAAAA,GAAY,IAAA;QAChBruB,QAAAA,CAAS;YAAEN,IAAAA,EAAM,oBAAA;YAAsBmD,KAAAA,EAAOA;AAAM,SAAA,CAAA;QACpD7C,QAAAA,CAAS;YAAEN,IAAAA,EAAM,YAAA;AAAcsC,YAAAA,MAAAA,EAAQC,kBAAWqsB;AAAmB,SAAA,CAAA;AACvE,IAAA,CAAA;AAEA,IAAA,qBACExzB,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAO8J,EAAAA,EAAG,MAAA;QAAOC,QAAAA,EAAUR,YAAAA;QAActJ,GAAAA,EAAK;qBAC7CvQ,wBAAA,CAAA,aAAA,CAACqwB,iBAAAA,EAAAA;QAAWtoB,KAAAA,EAAOA,KAAAA;QAAO+nB,QAAAA,EAAUA;AAEnC,KAAA,CAAA,EAAA,CAACmD,2BACAjzB,wBAAA,CAAA,aAAA,CAACyzB,oBAAAA,EAAAA;QAAczB,QAAAA,EAAUA,QAAAA;QAAUC,WAAAA,EAAaA,WAAAA;QAAartB,IAAAA,EAAK,SAAA;QAAUC,KAAAA,EAAOgU;sBAGrF7Y,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUgK,OAAAA,EAASkC,YAAAA;QAAchY,IAAAA,EAAK;;;;AAIrD,KAAA,CAAA,CAAA,EAAA,CAACquB,2BACAjzB,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUc,OAAAA,EAAS+hB;;;;;AAM3C,CAAA;;ACxFO,MAAMG,qBAAAA,GAAwB,IAAA;IACnC,MAAM,GAAGxuB,SAAS,GAAGC,uBAAAA,EAAAA;AACrB,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQuK,6CAAAA,EAAAA;IAEd,MAAM,EACJ3H,KAAK,EACL+nB,QAAQ,EACRkC,QAAQ,EACRC,WAAW,EACX7rB,YAAY,EACZyS,YAAY,EACZqZ,eAAe,EACftV,YAAY,EACZuV,cAAc,EACdI,uBAAuB,EACxB,GAAGT,gBAAAA,EAAAA;AAEJ,IAAA,MAAMjY,eAAe,OAAOC,CAAAA,GAAAA;AAC1BA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChB,QAAA,IAAI,CAAChS,KAAAA,CAAMc,KAAK,CAACsqB,0BAAAA,CAAAA,EAAc;AAC7BjB,YAAAA,eAAAA,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;;QACF,CAAA,MAAO;AACL,YAAA,IAAI,CAAC9rB,YAAAA,EAAc;AACjBmsB,gBAAAA,uBAAAA,EAAAA;YACF,CAAA,MAAO;AACLJ,gBAAAA,cAAAA,CAAe/rB,aAAamP,eAAe,CAAA;AAC7C,YAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMge,SAAAA,GAAY,IAAA;QAChBruB,QAAAA,CAAS;YAAEN,IAAAA,EAAM,oBAAA;YAAsBmD,KAAAA,EAAOA;AAAM,SAAA,CAAA;QACpD7C,QAAAA,CAAS;YAAEN,IAAAA,EAAM,YAAA;AAAcsC,YAAAA,MAAAA,EAAQC,kBAAWqsB;AAAmB,SAAA,CAAA;AACvE,IAAA,CAAA;AAEA,IAAA,qBACExzB,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXvQ,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;uBAIpB1Q,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAO8J,EAAAA,EAAG,MAAA;QAAOC,QAAAA,EAAUR,YAAAA;QAActJ,GAAAA,EAAK;qBAC7CvQ,wBAAA,CAAA,aAAA,CAACqwB,iBAAAA,EAAAA;QAAWtoB,KAAAA,EAAOA,KAAAA;QAAO+nB,QAAAA,EAAUA;sBAEpC9vB,wBAAA,CAAA,aAAA,CAACyzB,oBAAAA,EAAAA;QAAczB,QAAAA,EAAUA,QAAAA;QAAUC,WAAAA,EAAaA,WAAAA;QAAartB,IAAAA,EAAK,SAAA;QAAUC,KAAAA,EAAOgU;AAEnF,KAAA,CAAA,gBAAA7Y,wBAAA,CAAA,aAAA,CAACiU,yCACCjU,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUgK,OAAAA,EAASkC,YAAAA;QAAchY,IAAAA,EAAK;;;;uBAItD5E,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUc,OAAAA,EAAS+hB;;;;uBAInCvzB,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,OAAA;AAAQc,QAAAA,OAAAA,EAAS,IAAMtM,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,YAAA;AAAcsC,gBAAAA,MAAAA,EAAQC,kBAAWC;AAAK,aAAA;;;;;AAOxG,CAAA;;AC5DO,MAAMusB,mBAAAA,GAAsB,IAAA;IACjC,MAAM,GAAGzuB,SAAS,GAAGC,uBAAAA,EAAAA;AACrB,IAAA,MAAMT,MAAAA,GAASa,gBAAAA,EAAAA;AACf,IAAA,MAAMtB,OAAAA,GAAUC,uBAAAA,EAAAA;AAChB,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQwL,6CAAAA,EAAAA;AAEd,IAAA,MAAM,EACJ0V,MAAM,EACNrd,KAAK,EACL+nB,QAAQ,EACR1pB,YAAY,EACZyS,YAAY,EACZqZ,eAAe,EACftV,YAAY,EACZ+U,eAAe,EACfkB,oBAAoB,EACrB,GAAGf,gBAAAA,EAAAA;AAEJ,IAAA,MAAMjY,eAAe,OAAOC,CAAAA,GAAAA;AAC1BA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChB,QAAA,IAAI,CAAChS,KAAAA,CAAMc,KAAK,CAACsqB,0BAAAA,CAAAA,EAAc;AAC7BjB,YAAAA,eAAAA,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;;AACA,YAAA;AACF,QAAA;QACAA,eAAAA,CAAgB,EAAA,CAAA;QAChBP,eAAAA,CAAgB,IAAA,CAAA;AAChB,QAAA,IAAIvrB,YAAAA,EAAc;AAChBQ,YAAAA,+BAAAA,CAAiBwe,MAAAA,CAAAA,CACdgO,aAAa,CAACC,YAAY,CAACtrB,KAAAA,EAAO3B,YAAAA,CAAamP,eAAe,CAAA,CAC9DxO,IAAI,CAAC,CAAC,EAAEusB,MAAM,EAAE,GAAA;AACf,gBAAA,IAAI,CAACA,MAAAA,EAAQ;AACXT,oBAAAA,oBAAAA,EAAAA;AACA,oBAAA;AACF,gBAAA;;gBAEAzN,MAAAA,CAAOvY,SAAS,CACb+mB,iBAAiB,CAAC;oBACjB5rB,aAAAA,EAAeD,KAAAA;AACfwN,oBAAAA,eAAAA,EAAiBnP,aAAamP,eAAe;oBAC7CI,kBAAAA,EAAoBjR,MAAAA,CAAO6nB,sBAAsB,EAAE1W,gBAAAA;oBACnDge,2BAAAA,EAA6BnvB,MAAAA,CAAO2tB,eAAe,EAAEU,wBAAAA;oBACrDe,iCAAAA,EAAmCpvB,MAAAA,CAAO2tB,eAAe,EAAE0B,8BAAAA;oBAC3DC,0BAAAA,EAA4BtvB,MAAAA,CAAO2tB,eAAe,EAAE4B,uBAAAA;oBACpDC,wBAAAA,EAA0BxvB,MAAAA,CAAO2tB,eAAe,EAAE8B,qBAAAA;oBAClD9a,MAAAA,EAAQ3U,MAAAA,CAAO2tB,eAAe,EAAEhZ;iBAClC,CAAA,CACCtS,IAAI,CAAC,CAACtC,IAAAA,GAAAA;oBACLktB,eAAAA,CAAgB,KAAA,CAAA;oBAChB1tB,OAAAA,CAAQ;AAAEW,wBAAAA,IAAAA,EAAMtC,+BAAgB8xB,4BAA4B;AAAE3vB,wBAAAA;AAAK,qBAAA,CAAA;oBACnES,QAAAA,CAAS;wBAAEN,IAAAA,EAAM,oBAAA;wBAAsBmD,KAAAA,EAAOA;AAAM,qBAAA,CAAA;oBACpD7C,QAAAA,CAAS;wBAAEN,IAAAA,EAAM,YAAA;AAAcsC,wBAAAA,MAAAA,EAAQC,kBAAWktB;AAA2B,qBAAA,CAAA;gBAC/E,CAAA,CAAA,CACCxY,KAAK,CAAC,CAAC6L,GAAAA,GAAAA;oBACNiK,eAAAA,CAAgB,KAAA,CAAA;AAChBO,oBAAAA,eAAAA,CAAgBpZ,yBAAAA,CAAmB4O,GAAAA,EAAAA,GAAAA,CAAAA,CAAAA;AACrC,gBAAA,CAAA,CAAA;YACJ,CAAA,CAAA,CACC7L,KAAK,CAAC,CAAC6L,GAAAA,GAAAA;gBACNiK,eAAAA,CAAgB,KAAA,CAAA;AAChBO,gBAAAA,eAAAA,CAAgBpZ,yBAAAA,CAAmB4O,GAAAA,EAAAA,GAAAA,CAAAA,CAAAA;AACrC,YAAA,CAAA,CAAA;QACJ,CAAA,MAAO;;AAELtC,YAAAA,MAAAA,CAAOvY,SAAS,CAACsG,SAAS,CACvBygB,iBAAiB,CAAC;gBACjB5rB,aAAAA,EAAeD,KAAAA;gBACfmd,sBAAAA,EAAwBxgB,MAAAA,CAAO2tB,eAAe,EAAEtL,oBAAAA;gBAChD8M,2BAAAA,EAA6BnvB,MAAAA,CAAO2tB,eAAe,EAAEU,wBAAAA;gBACrDe,iCAAAA,EAAmCpvB,MAAAA,CAAO2tB,eAAe,EAAE0B,8BAAAA;gBAC3DC,0BAAAA,EAA4BtvB,MAAAA,CAAO2tB,eAAe,EAAE4B,uBAAAA;gBACpDC,wBAAAA,EAA0BxvB,MAAAA,CAAO2tB,eAAe,EAAE8B,qBAAAA;gBAClD9a,MAAAA,EAAQ3U,MAAAA,CAAO2tB,eAAe,EAAEhZ;AAClC,aAAA,CAAA,CACCtS,IAAI,CAAC,IAAA;gBACJ4qB,eAAAA,CAAgB,KAAA,CAAA;gBAChBzsB,QAAAA,CAAS;oBAAEN,IAAAA,EAAM,oBAAA;oBAAsBmD,KAAAA,EAAOA;AAAM,iBAAA,CAAA;gBACpD7C,QAAAA,CAAS;oBAAEN,IAAAA,EAAM,YAAA;AAAcsC,oBAAAA,MAAAA,EAAQC,kBAAWktB;AAA2B,iBAAA,CAAA;YAC/E,CAAA,CAAA,CACCxY,KAAK,CAAC,CAAC6L,GAAAA,GAAAA;gBACNiK,eAAAA,CAAgB,KAAA,CAAA;AAChBO,gBAAAA,eAAAA,CAAgBpZ,yBAAAA,CAAmB4O,GAAAA,EAAAA,GAAAA,CAAAA,CAAAA;AACrC,YAAA,CAAA,CAAA;AACJ,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,qBACE1nB,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAO8J,EAAAA,EAAG,MAAA;QAAO7J,GAAAA,EAAK,CAAA;QAAG8J,QAAAA,EAAUR;qBAClC7Z,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;uBAGpB1Q,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;OACjB,CAACtK,YAAAA,GAAAA,OAAAA,CAAAA,CAAAA,CAAAA;;;;;;uBAaJpG,wBAAA,CAAA,aAAA,CAACqwB,iBAAAA,EAAAA;QAAWtoB,KAAAA,EAAOA,KAAAA;QAAO+nB,QAAAA,EAAUA,QAAAA;QAAUjrB,KAAAA,EAAOgU;AAErD,KAAA,CAAA,gBAAA7Y,wBAAA,CAAA,aAAA,CAACiU,yCACCjU,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,SAAA;QAAUgK,OAAAA,EAASkC,YAAAA;QAAchY,IAAAA,EAAK;;;;uBAGtD5E,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,OAAA;AAAQc,QAAAA,OAAAA,EAAS,IAAMtM,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,YAAA;AAAcsC,gBAAAA,MAAAA,EAAQC,kBAAWC;AAAK,aAAA;;;;;AAMtG,CAAA;;AC1HO,MAAMktB,cAAAA,GAAiB,IAAA;IAC5B,MAAM,GAAGpvB,SAAS,GAAGC,uBAAAA,EAAAA;AACrB,IAAA,MAAMlB,OAAAA,GAAUC,uBAAAA,EAAAA;AAChB,IAAA,MAAMQ,MAAAA,GAASa,gBAAAA,EAAAA;AACf,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQmK,6CAAAA,EAAAA;IAEd,MAAM,EAAE0V,MAAM,EAAEjhB,OAAO,EAAE4D,KAAK,EAAE3B,YAAY,EAAEurB,eAAe,EAAE,GAAGG,gBAAAA,EAAAA;AAElE,IAAA,MAAMyC,mBAAAA,GAAsB,IAAA;AAC1B,QAAA,IAAI,CAACnuB,YAAAA,EAAc;AACjB,YAAA,OAAOgf,OAAOvY,SAAS,CAACsG,SAAS,CAC9BygB,iBAAiB,CAAC;gBACjB5rB,aAAAA,EAAeD,KAAAA;gBACfmd,sBAAAA,EAAwBxgB,MAAAA,CAAO2tB,eAAe,EAAEtL,oBAAAA;gBAChD8M,2BAAAA,EAA6BnvB,MAAAA,CAAO2tB,eAAe,EAAEU,wBAAAA;gBACrDe,iCAAAA,EAAmCpvB,MAAAA,CAAO2tB,eAAe,EAAE0B,8BAAAA;gBAC3DC,0BAAAA,EAA4BtvB,MAAAA,CAAO2tB,eAAe,EAAE4B,uBAAAA;gBACpDC,wBAAAA,EAA0BxvB,MAAAA,CAAO2tB,eAAe,EAAE8B,qBAAAA;gBAClD9a,MAAAA,EAAQ3U,MAAAA,CAAO2tB,eAAe,EAAEhZ;aAClC,CAAA,CACCtS,IAAI,CAAC,CAACtC,IAAAA,GAAAA;gBACLktB,eAAAA,CAAgB,KAAA,CAAA;gBAChB1tB,OAAAA,CAAQ;AAAEW,oBAAAA,IAAAA,EAAMtC,+BAAgBkyB,8BAA8B;AAAE/vB,oBAAAA;AAAK,iBAAA,CAAA;AACvE,YAAA,CAAA,CAAA;QACJ,CAAA,MAAO;AACL,YAAA,OAAO2gB,MAAAA,CAAOvY,SAAS,CACpB+mB,iBAAiB,CAAC;gBACjB5rB,aAAAA,EAAeD,KAAAA;AACfwN,gBAAAA,eAAAA,EAAiBnP,aAAamP,eAAe;gBAC7CI,kBAAAA,EAAoBjR,MAAAA,CAAO2tB,eAAe,EAAExc,gBAAAA;gBAC5Cge,2BAAAA,EAA6BnvB,MAAAA,CAAO2tB,eAAe,EAAEU,wBAAAA;gBACrDe,iCAAAA,EAAmCpvB,MAAAA,CAAO2tB,eAAe,EAAE0B,8BAAAA;gBAC3DC,0BAAAA,EAA4BtvB,MAAAA,CAAO2tB,eAAe,EAAE4B,uBAAAA;gBACpDC,wBAAAA,EAA0BxvB,MAAAA,CAAO2tB,eAAe,EAAE8B,qBAAAA;gBAClD9a,MAAAA,EAAQ3U,MAAAA,CAAO2tB,eAAe,EAAEhZ;aAClC,CAAA,CACCtS,IAAI,CAAC,CAACtC,IAAAA,GAAAA;gBACLktB,eAAAA,CAAgB,KAAA,CAAA;gBAChB1tB,OAAAA,CAAQ;AAAEW,oBAAAA,IAAAA,EAAMtC,+BAAgB8xB,4BAA4B;AAAE3vB,oBAAAA;AAAK,iBAAA,CAAA;YACrE,CAAA,CAAA,CACCoX,KAAK,CAAC,CAAC/B,CAAAA,GAAAA;gBACN3V,OAAAA,CAAQ2V,CAAAA,CAAAA;gBACR,MAAMA,CAAAA;AACR,YAAA,CAAA,CAAA;AACJ,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,qBACE9Z,wBAAA,CAAA,aAAA,CAACy0B,wBAAAA,EAAAA;QACC5U,MAAM,EAAA,OAAA,CAAA,CAAA,CAAA;;;;AACN6U,QAAAA,WAAAA,gBACE10B,wBAAA,CAAA,aAAA,CAAC20B,yCAAAA,EAAAA;YACC7zB,EAAAA,EAAG,kCAAA;YACHsa,OAAAA,EAAQ,uDAAA;YACR1Q,UAAAA,EAAY;AAAEkqB,gBAAAA,IAAAA,gBAAM50B,wBAAA,CAAA,aAAA,CAAC60B,GAAAA,EAAAA,IAAAA;AAAK,aAAA;YAC1BlnB,MAAAA,EAAQ;AAAE5F,gBAAAA;AAAM;;QAGpB0lB,MAAAA,EAAQ8G,mBAAAA;AACRvhB,QAAAA,MAAAA,EAAQ,IAAM9N,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,YAAA;AAAcsC,gBAAAA,MAAAA,EAAQC,kBAAWC;AAAK,aAAA;;AAG3E,CAAA;;ACnDO,MAAMskB,iBAAAA,GAAoB,IAAA;AAC/B,IAAA,MAAMlmB,YAAAA,GAAeC,gBAAAA,EAAAA;AACrB,IAAA,MAAMf,MAAAA,GAASa,gBAAAA,EAAAA;IACf,MAAM,GAAGL,SAAS,GAAGC,uBAAAA,EAAAA;AACrB,IAAA,MAAM0B,SAAAA,GAAYiuB,YAAAA,EAAAA;AAClB,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQplB,6CAAAA,EAAAA;AAEd,IAAA,MAAMzL,OAAAA,GAAUC,uBAAAA,EAAAA;AAChB,IAAA,MAAMC,OAAAA,GAAUC,uBAAAA,EAAAA;AAEhB,IAAA,MAAM,CAAC2wB,UAAAA,EAAYC,cAAAA,CAAe,GAAG1rB,aAAAA,CAAQ,IAAA;QAC3C,MAAMggB,MAAAA,GAAS9jB,aAAa+jB,oBAAoB,EAAA;QAChD,IAAI,CAACD,QAAQ,OAAO;AAAC,YAAA,EAAA;AAAI,YAAA;AAAG,SAAA;QAC5B,OAAO;AAACA,YAAAA,MAAAA,CAAO2L,KAAK;AAAE3L,YAAAA,MAAAA,CAAOG;AAAU,SAAA;IACzC,CAAA,EAAG;AAACjkB,QAAAA;AAAa,KAAA,CAAA;IAEjB,MAAMstB,SAAAA,GAAYlsB,+BAAAA,CAAiBpB,YAAAA,CAAAA,CAAcstB,SAAS;IAC1D,MAAM/qB,KAAAA,GAAQ+qB,SAAAA,CAAUtN,OAAO,CAAC,mBAAA,CAAA;AAChC,IAAA,MAAM,CAACwM,QAAAA,EAAUC,WAAAA,CAAY,GAAG3sB,cAAAA,CAAS,EAAA,CAAA;AACzC,IAAA,MAAM,CAACuT,YAAAA,EAAcqZ,eAAAA,CAAgB,GAAG5sB,cAAAA,CAAS,EAAA,CAAA;AACjD,IAAA,MAAM,CAAC4vB,aAAAA,EAAeC,gBAAAA,CAAiB,GAAG7vB,cAAAA,CAA6B;QAAE8vB,MAAAA,EAAQ;AAAY,KAAA,CAAA;AAC7F,IAAA,MAAM,CAACxY,YAAAA,EAAc+U,eAAAA,CAAgB,GAAGrsB,cAAAA,CAAS,KAAA,CAAA;AAEjD,IAAA,MAAM+vB,mBAAAA,GAAsB/rB,aAAAA,CAC1B,IACEgsB,uBAAAA,CAAS,CAACtD,QAAAA,GAAAA;YACRE,eAAAA,CAAgB,EAAA,CAAA;AAChB,YAAA,OAAO1sB,YAAAA,CAAaqH,SAAS,CAC1B0oB,aAAa,CAAC;AAAEvD,gBAAAA;AAAS,aAAA,CAAA,CACzBjrB,IAAI,CAAC,CAAC,EAAEyuB,KAAK,EAAEC,cAAc,EAAEC,eAAe,EAAEC,aAAa,EAAEC,eAAe,EAAEC,iBAAiB,EAAE,GAAA;AAClG,gBAAA,MAAMC,MAAAA,GAAS;AACbC,oBAAAA,eAAAA,EAAiB,CAACN,cAAAA;oBAClBO,kBAAAA,EAAoBH;AACtB,iBAAA;AAEA,gBAAA,IAAID,oBAAoB,QAAA,EAAU;oBAChCT,gBAAAA,CAAiB;wBACfC,MAAAA,EAAQQ,eAAAA;AACR,wBAAA,GAAGE,MAAM;wBACTG,aAAAA,EAAeT,KAAAA;AACfU,wBAAAA,eAAAA,EAAiBR,gBAAgBS,OAAO;AACxCC,wBAAAA,mBAAAA,EAAqBV,gBAAgBW;AACvC,qBAAA,CAAA;gBACF,CAAA,MAAO,IAAIT,oBAAoB,MAAA,EAAQ;oBACrCT,gBAAAA,CAAiB;wBACfC,MAAAA,EAAQQ,eAAAA;AACR,wBAAA,GAAGE,MAAM;AACTQ,wBAAAA,iBAAAA,EAAmBX,cAAcY,kBAAkB;AACnDC,wBAAAA,iBAAAA,EAAmBb,cAAcc;AACnC,qBAAA,CAAA;AACF,gBAAA;YACF,CAAA,CAAA,CACC5a,KAAK,CAAC,CAAC/B,CAAAA,GAAAA;AACNoY,gBAAAA,eAAAA,CAAgBpZ,yBAAAA,CAAmBgB,CAAAA,EAAAA,GAAAA,CAAAA,CAAAA;AACrC,YAAA,CAAA,CAAA;QACJ,CAAA,CAAA,EACF;AAACtU,QAAAA,YAAAA,CAAaqH,SAAS;;AAAI,KAAA,CAAA;IAG7BlG,eAAAA,CAAU,IAAA;AACR,QAAA,IAAIquB,mBAAmB,0BAAA,EAA4B;YACjDxvB,YAAAA,CAAaknB,UAAU,CACpBpR,YAAY,CAAC;gBACZob,iBAAAA,EAAmB3B,UAAAA;gBACnBzhB,wBAAAA,EAA0B5O,MAAAA,CAAO6O,cAAc,EAAEC,sBAAAA,IAA0B4e,2CAAAA;gBAC3E/Y,MAAAA,EAAQ3U,MAAAA,CAAO6nB,sBAAsB,EAAElT;aACzC,CAAA,CACCtS,IAAI,CAAC,CAACtC,IAAAA,GAAAA;AACLkyB,gBAAAA,iCAAAA,EAAAA;gBACAzxB,QAAAA,CAAS;oBACPN,IAAAA,EAAM,8BAAA;oBACN+C,QAAAA,EAAUlD,IAAAA;AACVmD,oBAAAA,kBAAAA,EAAoBlD,OAAOmD,iBAAiB;AAC5CmtB,oBAAAA;AACF,iBAAA,CAAA;YACF,CAAA,CAAA,CACCnZ,KAAK,CAAC,CAAC/B,CAAAA,GAAAA;AACNoY,gBAAAA,eAAAA,CAAgBpZ,yBAAAA,CAAmBgB,CAAAA,EAAAA,GAAAA,CAAAA,CAAAA;gBACnC3V,OAAAA,CAAQ2V,CAAAA,CAAAA;AACV,YAAA,CAAA,CAAA;AACF,YAAA;AACF,QAAA;;IAEF,CAAA,EAAG;AAACkb,QAAAA;AAAe,KAAA,CAAA;AAEnB,IAAA,MAAM4B,mBAAmB,CAAC5E,QAAAA,GAAAA;QACxBC,WAAAA,CAAYD,QAAAA,CAAAA;QACZqD,mBAAAA,CAAoBrD,QAAAA,CAAAA;AACtB,IAAA,CAAA;AAEA,IAAA,MAAMnY,eAAe,CAACC,CAAAA,GAAAA;AACpBA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;QAChBmY,eAAAA,CAAgB,EAAA,CAAA;QAChBP,eAAAA,CAAgB,IAAA,CAAA;AAEhB,QAAA,IAAIqD,kBAAkB,wBAAA,EAA0B;YAC9CxvB,YAAAA,CAAaqH,SAAS,CACnBgqB,YAAY,CAAC;gBACZC,oBAAAA,EAAsB/B,UAAAA;AACtB/C,gBAAAA,QAAAA;gBACA1e,wBAAAA,EAA0B5O,MAAAA,CAAO6O,cAAc,EAAEC,sBAAAA,IAA0B4e,2CAAAA;gBAC3E/Y,MAAAA,EAAQ3U,MAAAA,CAAO2tB,eAAe,EAAEhZ;aAClC,CAAA,CACCtS,IAAI,CAAC,CAACtC,IAAAA,GAAAA;gBACLktB,eAAAA,CAAgB,KAAA,CAAA;gBAChB1tB,OAAAA,CAAQ;AAAEW,oBAAAA,IAAAA,EAAMtC,+BAAgBy0B,uBAAuB;AAAEtyB,oBAAAA;AAAK,iBAAA,CAAA;AAC9DiD,gBAAAA,qBAAAA,CAAsBjD,MAAMS,QAAAA,EAAUR,MAAAA,CAAAA;YACxC,CAAA,CAAA,CACCmX,KAAK,CAAC,CAAC/B,CAAAA,GAAAA;gBACN3V,OAAAA,CAAQ2V,CAAAA,CAAAA;AACRoY,gBAAAA,eAAAA,CAAgBpZ,yBAAAA,CAAmBgB,CAAAA,EAAAA,GAAAA,CAAAA,CAAAA;gBACnC6X,eAAAA,CAAgB,KAAA,CAAA;AAClB,YAAA,CAAA,CAAA;QACJ,CAAA,MAAO,IAAIqD,kBAAkB,WAAA,EAAa;AACxCxvB,YAAAA,YAAAA,CAAaqH,SAAS,CAACsG,SAAS,CAC7B0jB,YAAY,CAAC;gBACZC,oBAAAA,EAAsB/B,UAAAA;AACtB/C,gBAAAA;aACF,CAAA,CACCjrB,IAAI,CAAC,CAACtC,IAAAA,GAAAA;gBACLktB,eAAAA,CAAgB,KAAA,CAAA;gBAChB1tB,OAAAA,CAAQ;AAAEW,oBAAAA,IAAAA,EAAMtC,+BAAgB00B,yBAAyB;AAAEvyB,oBAAAA;AAAK,iBAAA,CAAA;gBAChES,QAAAA,CAAS;oBAAEN,IAAAA,EAAM,YAAA;AAAcsC,oBAAAA,MAAAA,EAAQC,kBAAW4D;AAAU,iBAAA,CAAA;gBAC5D7F,QAAAA,CAAS;oBACPN,IAAAA,EAAM,qBAAA;AACNmD,oBAAAA,KAAAA,EAAOtD,KAAKuD,aAAa;AACzBC,oBAAAA,uBAAAA,EAAyBxD,KAAKyD;AAChC,iBAAA,CAAA;YACF,CAAA,CAAA,CACC2T,KAAK,CAAC,CAAC/B,CAAAA,GAAAA;gBACN3V,OAAAA,CAAQ2V,CAAAA,CAAAA;AACRoY,gBAAAA,eAAAA,CAAgBpZ,yBAAAA,CAAmBgB,CAAAA,EAAAA,GAAAA,CAAAA,CAAAA;gBACnC6X,eAAAA,CAAgB,KAAA,CAAA;AAClB,YAAA,CAAA,CAAA;QACJ,CAAA,MAAO;YACLnsB,YAAAA,CAAaqH,SAAS,CACnBoqB,cAAc,CAAC;AAAEjF,gBAAAA;aAAS,CAAA,CAC1BjrB,IAAI,CAAC,CAACtC,IAAAA,GAAAA;gBACLktB,eAAAA,CAAgB,KAAA,CAAA;gBAChB1tB,OAAAA,CAAQ;AAAEW,oBAAAA,IAAAA,EAAMtC,+BAAgB40B,yBAAyB;AAAEzyB,oBAAAA;AAAK,iBAAA,CAAA;gBAChES,QAAAA,CAAS;oBAAEN,IAAAA,EAAM,YAAA;AAAcsC,oBAAAA,MAAAA,EAAQC,kBAAW6iB;AAAS,iBAAA,CAAA;YAC7D,CAAA,CAAA,CACCnO,KAAK,CAAC,CAAC/B,CAAAA,GAAAA;gBACN3V,OAAAA,CAAQ2V,CAAAA,CAAAA;AACRoY,gBAAAA,eAAAA,CAAgBpZ,yBAAAA,CAAmBgB,CAAAA,EAAAA,GAAAA,CAAAA,CAAAA;gBACnC6X,eAAAA,CAAgB,KAAA,CAAA;AAClB,YAAA,CAAA,CAAA;AACJ,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMwF,kBAAAA,GAAqBC,0BAAAA,CAAoBvwB,SAAAA,EAAWquB,aAAAA,CAAcE,MAAM,CAAA;AAE9E,IAAA,qBACEp1B,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK,CAAA;QAAG6J,EAAAA,EAAG,MAAA;QAAOC,QAAAA,EAAUR;qBAClC7Z,wBAAA,CAAA,aAAA,CAACyQ,iBAAAA,EAAAA;QAAWC,OAAAA,EAAQ;;;;uBAEpB1Q,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAOC,GAAAA,EAAK;AACVxI,KAAAA,EAAAA,KAAAA,iBAAQ/H,wBAAA,CAAA,aAAA,CAACqwB,iBAAAA,EAAAA;QAAWtoB,KAAAA,EAAOA,KAAAA;QAAO+nB,QAAAA,EAAUuH,mBAAAA;QAAM1c,QAAAA,EAAAA;AAAc,KAAA,CAAA,GAAA,IAAA,gBAEjE3a,wBAAA,CAAA,aAAA,CAACyzB,oBAAAA,EAAAA;QACCzB,QAAAA,EAAUA,QAAAA;QACVC,WAAAA,EAAa2E,gBAAAA;QACb/xB,KAAAA,EAAOgU,YAAAA;AACN,QAAA,GAAGse;sBAGNn3B,wBAAA,CAAA,aAAA,CAACs3B,oBAAAA,EAAAA;QAAczwB,SAAAA,EAAWA,SAAAA;AAAY,QAAA,GAAGquB;sBAEzCl1B,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QACCxD,OAAAA,EAAQ,SAAA;QACRgK,OAAAA,EAASkC,YAAAA;QACThY,IAAAA,EAAK,QAAA;AACL+V,QAAAA,QAAAA,EAAUua,aAAAA,CAAcE,MAAM,KAAK,WAAA,IAAeF,cAAca;;;;;AAO1E,CAAA;;AC7LO,MAAMwB,yBAAAA,GAA4B,IAAA;AACvC,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQ7nB,6CAAAA,EAAAA;IAEd,MAAM,CAACzK,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;AAC1B,IAAA,MAAM+nB,WAAAA,GAAcd,cAAAA,EAAAA;AACpB,IAAA,MAAMrkB,QAAQ9C,KAAAA,CAAM6O,SAAS,CAACie,aAAa,CAAChqB,KAAK;AAEjD,IAAA,MAAMsmB,KAAAA,GAAQ,IAAA;QACZnpB,QAAAA,CAAS;YAAEN,IAAAA,EAAM,yBAAA;YAA2BmD,KAAAA,EAAO;AAAG,SAAA,CAAA;QACtD7C,QAAAA,CAAS;YAAEN,IAAAA,EAAM,YAAA;AAAcsC,YAAAA,MAAAA,EAAQC,kBAAWC;AAAK,SAAA,CAAA;AACzD,IAAA,CAAA;AAEA,IAAA,qBACEpH,wBAAA,CAAA,aAAA,CAACy0B,wBAAAA,EAAAA;QACC5U,MAAM,EAAA,OAAA,CAAA,CAAA,CAAA;;;;AAIN6U,QAAAA,WAAAA,gBACE10B,wBAAA,CAAA,aAAA,CAAC20B,yCAAAA,EAAAA;YACC7zB,EAAAA,EAAG,+BAAA;YACHsa,OAAAA,EAAQ,uDAAA;YACR1Q,UAAAA,EAAY;AAAEkqB,gBAAAA,IAAAA,gBAAM50B,wBAAA,CAAA,aAAA,CAAC60B,GAAAA,EAAAA,IAAAA;AAAK,aAAA;YAC1BlnB,MAAAA,EAAQ;AAAE5F,gBAAAA;AAAM;;AAGpByvB,QAAAA,iBAAAA,gBACEx3B,8FACEA,wBAAA,CAAA,aAAA,CAACy3B,wBAAAA,EAAAA;YAAkBvK,WAAAA,EAAaA,WAAAA;AAAa5I,YAAAA,YAAAA,EAAcoT,yBAAkBC;0BAC7E33B,wBAAA,CAAA,aAAA,CAACy3B,wBAAAA,EAAAA;YAAkBvK,WAAAA,EAAaA,WAAAA;AAAa5I,YAAAA,YAAAA,EAAcoT,yBAAkBE;0BAC7E53B,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;YAAOxD,OAAAA,EAAQ,OAAA;YAAQc,OAAAA,EAAS6c;;;;;;AAO3C,CAAA;;AC1CA,MAAMwJ,iBAAAA,GAAoB,CAAC,EAAE9vB,KAAK,EAAqB,GAAA;IACrD,MAAM,GAAG7C,SAAS,GAAGC,uBAAAA,EAAAA;AACrB,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQuK,6CAAAA,EAAAA;AAEd,IAAA,MAAMooB,iBAAAA,GAAoB,IAAA;QACxB5yB,QAAAA,CAAS;YAAEN,IAAAA,EAAM,mBAAA;AAAqBmD,YAAAA;AAAM,SAAA,CAAA;AAC9C,IAAA,CAAA;AAEA,IAAA,qBACE/H,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOxD,OAAAA,EAAQ,OAAA;QAAQc,OAAAA,EAASsmB;;;;;AAIrC,CAAA;;ACAA,MAAMC,uBAAAA,GAA0B;AAAC,IAAA,oCAAA;AAAsC,IAAA;AAAqC,CAAA;AAE5G,MAAMC,oBAAAA,GAAuB,IAAA;AAC3B,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQtoB,6CAAAA,EAAAA;AACd,IAAA,OAAO,CAAC7K,KAAAA,EAAuB,EAAEkD,KAAK,EAAEuM,GAAAA,EAAKtE,gBAAgB,EAAkC,GAAA;AAC7F,QAAA,IAAI+nB,uBAAAA,CAAwB5b,QAAQ,CAACtX,KAAAA,CAAM4O,UAAU,CAAA,EAAG;AACtD,YAAA,OAAA,OAAA,CAAA,CAAA,CAAA;;;;AAEc1L,oBAAAA,KAAAA,EAAAA,KAAAA;AAAiCiI,oBAAAA,gBAAAA,EAAAA;;;AAEjD,QAAA;AACA,QAAA,OAAO8I,yBAAAA,CAAmBjU,KAAAA,EAAAA,GAAAA,CAAAA;AAC5B,IAAA,CAAA;AACF,CAAA;AAEO,MAAM+F,SAAAA,GAAY,CAAC,EAAEqtB,kBAAkB,EAAmC,GAAA;IAC/E,MAAM,CAAChzB,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;IAC1B,MAAM,CAAC+yB,UAAAA,EAAYC,aAAAA,CAAc,GAAG7yB,cAAAA,CAASL,MAAM6O,SAAS,CAACie,aAAa,CAAChqB,KAAK,CAAA;AAChF,IAAA,MAAMqwB,iBAAAA,GAAoBJ,oBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQtoB,6CAAAA,EAAAA;IAEd,MAAM,EAAE3G,QAAQ,EAAE,GAAG4F,sBAAAA,EAAAA;IACrB,MAAM0pB,SAAAA,GAAYvvB,WAAWC,QAAAA,EAAU,iBAAA,CAAA;IACvC,MAAMuvB,SAAAA,GAAYxvB,WAAWC,QAAAA,EAAU,UAAA,CAAA;AAEvC,IAAA,MAAMwvB,aAAAA,GAAgBtzB,KAAAA,CAAMqJ,OAAO,CAACvG,KAAK;AACzC,IAAA,MAAMA,QAAQwwB,aAAAA,IAAiBL,UAAAA;IAE/B,MAAM,EAAElyB,OAAAA,EAASwyB,sBAAsB,EAAE3zB,KAAAA,EAAO4zB,QAAQ,EAAE3zB,UAAAA,EAAY4zB,aAAa,EAAE,GAAGjM,mBAAAA,EAAAA;IACxF,MAAM,EAAEzmB,OAAAA,EAAS2yB,sBAAsB,EAAE9zB,KAAAA,EAAO+zB,QAAQ,EAAE9zB,UAAAA,EAAY+zB,aAAa,EAAE,GAAG3K,wBAAAA,EAAAA;AAExF,IAAA,MAAMppB,aAAa4zB,aAAAA,IAAiBG,aAAAA;AACpC,IAAA,MAAMh0B,QAAQ4zB,QAAAA,IAAYG,QAAAA;AAE1B,IAAA,MAAMxyB,YAAAA,GAAenB,KAAAA,CAAMgC,SAAS,CAACb,YAAY;IACjD,IAAI,CAACA,cAAc,qBAAOpG,wBAAA,CAAA,aAAA,CAAAA,wBAAA,CAAA,QAAA,EAAA,IAAA,CAAA;AAE1B,IAAA,MAAM6Z,eAAe,OAAOC,CAAAA,GAAAA;AAC1BA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;QAChB7U,QAAAA,CAAS;YAAEN,IAAAA,EAAM,yBAAA;AAA2BmD,YAAAA;AAAM,SAAA,CAAA;AAElD,QAAA,IAAIswB,aAAaC,SAAAA,EAAW;YAC1BpzB,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,YAAA;AAAcsC,gBAAAA,MAAAA,EAAQC,kBAAW2xB,oBAAoB;gBAAEzhB,OAAAA,EAAS;AAAO,aAAA,CAAA;AAC1F,QAAA,CAAA,MAAO,IAAIghB,SAAAA,EAAW;YACpBG,sBAAAA,CAAuB;AAAEzwB,gBAAAA,KAAAA;AAAOwN,gBAAAA,eAAAA,EAAiBnP,aAAamP;AAAgB,aAAA,CAAA;AAChF,QAAA,CAAA,MAAO,IAAI+iB,SAAAA,EAAW;YACpBK,sBAAAA,CAAuB;AAAE5wB,gBAAAA,KAAAA;AAAOwN,gBAAAA,eAAAA,EAAiBnP,aAAamP;AAAgB,aAAA,CAAA;AAChF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,IAAIgjB,aAAAA,EAAe;AACjB,QAAA,qBACEv4B,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;YAAOC,GAAAA,EAAK;AACVxH,SAAAA,EAAAA,QAAAA,CACEgF,MAAM,CAAC,CAAC/E,OAAAA,GAAYA,QAAQlI,EAAE,KAAK,iBAAA,IAAqBkI,OAAAA,CAAQlI,EAAE,KAAK,UAAA,CAAA,CACvEyI,GAAG,CAAC,CAACP,OAAAA,GAAAA;AACJ,YAAA,OAAQA,QAAQlI,EAAE;gBAChB,KAAK,iBAAA;AACH,oBAAA,qBACEd,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;AACCrQ,wBAAAA,GAAAA,EAAKmF,QAAQlI,EAAE;wBACf0Q,OAAAA,EAAS,IAAA;4BACPtM,QAAAA,CAAS;gCAAEN,IAAAA,EAAM,yBAAA;AAA2BmD,gCAAAA;AAAM,6BAAA,CAAA;4BAClDywB,sBAAAA,CAAuB;AAAEzwB,gCAAAA,KAAAA;AAAOwN,gCAAAA,eAAAA,EAAiBnP,aAAamP;AAAgB,6BAAA,CAAA;AAChF,wBAAA,CAAA;wBACAmF,OAAAA,EAASge,aAAAA;wBACT/d,QAAAA,EAAU7V,UAAAA;wBACV4L,OAAAA,EAAQ;;;;;gBAMd,KAAK,UAAA;AACH,oBAAA,qBACE1Q,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;AACCrQ,wBAAAA,GAAAA,EAAKmF,QAAQlI,EAAE;wBACf0Q,OAAAA,EAAS,IAAA;4BACPtM,QAAAA,CAAS;gCAAEN,IAAAA,EAAM,yBAAA;AAA2BmD,gCAAAA;AAAM,6BAAA,CAAA;4BAClD4wB,sBAAAA,CAAuB;AAAE5wB,gCAAAA,KAAAA;AAAOwN,gCAAAA,eAAAA,EAAiBnP,aAAamP;AAAgB,6BAAA,CAAA;AAChF,wBAAA,CAAA;wBACAmF,OAAAA,EAASme,aAAAA;wBACTle,QAAAA,EAAU7V,UAAAA;wBACV4L,OAAAA,EAAQ;;;;;AAKhB;AACF,QAAA,CAAA,CAAA,EAEDunB,oCAAsBj4B,wBAAA,CAAA,aAAA,CAAC63B,iBAAAA,EAAAA;YAAkB9vB,KAAAA,EAAOA;;AAGvD,IAAA;AAEA,IAAA,qBACE/H,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAO8J,EAAAA,EAAG,MAAA;QAAOC,QAAAA,EAAUR,YAAAA;QAActJ,GAAAA,EAAK;qBAC7CvQ,wBAAA,CAAA,aAAA,CAACqwB,iBAAAA,EAAAA;QACCtoB,KAAAA,EAAOA,KAAAA;QACP+nB,QAAAA,EAAUqI,aAAAA;QACVna,SAAAA,EAAAA,IAAAA;QACAnZ,KAAAA,EAAOA,KAAAA,GAAQuzB,kBAAkBvzB,KAAAA,EAAO;AAAEkD,YAAAA,KAAAA;AAAOuM,YAAAA,GAAAA,EAAKlO,aAAa6J;SAAkB,CAAA,GAAKlL;sBAG5F/E,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOtP,IAAAA,EAAK,QAAA;QAAS8L,OAAAA,EAAQ,SAAA;QAAUgK,OAAAA,EAAS5V;;;;AAIhDmzB,KAAAA,CAAAA,CAAAA,EAAAA,kBAAAA,kBAAsBj4B,wBAAA,CAAA,aAAA,CAAC63B,iBAAAA,EAAAA;QAAkB9vB,KAAAA,EAAOA;;AAGvD,CAAA;AAEO,MAAM8C,kBAAAA,GAAqB,CAAC,EAAEotB,kBAAkB,EAAmC,GAAA;IACxF,MAAM,CAAChzB,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;IAC1B,MAAM,CAAC4C,KAAAA,EAAO+nB,QAAAA,CAAS,GAAGxqB,cAAAA,CAASL,MAAM6O,SAAS,CAACie,aAAa,CAAChqB,KAAK,CAAA;AACtE,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQ2H,6CAAAA,EAAAA;IAEd,MAAM,EAAE3G,QAAQ,EAAE,GAAG4F,sBAAAA,EAAAA;IACrB,MAAM0pB,SAAAA,GAAYtvB,SAASE,IAAI,CAAC,CAACC,CAAAA,GAAMA,CAAAA,CAAEpI,EAAE,KAAK,iBAAA,CAAA;IAChD,MAAMw3B,SAAAA,GAAYvvB,SAASE,IAAI,CAAC,CAACC,CAAAA,GAAMA,CAAAA,CAAEpI,EAAE,KAAK,UAAA,CAAA;IAEhD,MAAM,EAAEkF,OAAAA,EAAS+yB,sBAAsB,EAAEl0B,KAAAA,EAAO4zB,QAAQ,EAAE3zB,UAAAA,EAAY4zB,aAAa,EAAE,GAAGzL,mBAAAA,EAAAA;IACxF,MAAM,EAAEjnB,OAAAA,EAASgzB,sBAAsB,EAAEn0B,KAAAA,EAAO+zB,QAAQ,EAAE9zB,UAAAA,EAAY+zB,aAAa,EAAE,GAAG9K,wBAAAA,EAAAA;AAExF,IAAA,MAAMlU,eAAe,OAAOC,CAAAA,GAAAA;AAC1BA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;QAChB7U,QAAAA,CAAS;YAAEN,IAAAA,EAAM,yBAAA;AAA2BmD,YAAAA;AAAM,SAAA,CAAA;AAElD,QAAA,IAAIswB,aAAaC,SAAAA,EAAW;YAC1BpzB,QAAAA,CAAS;gBAAEN,IAAAA,EAAM,YAAA;AAAcsC,gBAAAA,MAAAA,EAAQC,kBAAW2xB,oBAAoB;gBAAEzhB,OAAAA,EAAS;AAAO,aAAA,CAAA;AAC1F,QAAA,CAAA,MAAO,IAAIghB,SAAAA,EAAW;YACpBU,sBAAAA,CAAuB;AAAEhxB,gBAAAA;AAAM,aAAA,CAAA;AACjC,QAAA,CAAA,MAAO,IAAIuwB,SAAAA,EAAW;YACpBU,sBAAAA,CAAuB;AAAEjxB,gBAAAA;AAAM,aAAA,CAAA;AACjC,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMjD,aAAa4zB,aAAAA,IAAiBG,aAAAA;AACpC,IAAA,MAAMh0B,QAAQ4zB,QAAAA,IAAYG,QAAAA;AAE1B,IAAA,qBACE54B,wBAAA,CAAA,aAAA,CAACsQ,aAAAA,EAAAA;QAAO8J,EAAAA,EAAG,MAAA;QAAOC,QAAAA,EAAUR,YAAAA;QAActJ,GAAAA,EAAK;qBAC7CvQ,wBAAA,CAAA,aAAA,CAACqwB,iBAAAA,EAAAA;QACCtoB,KAAAA,EAAOA,KAAAA;QACP+nB,QAAAA,EAAUA,QAAAA;QACV9R,SAAAA,EAAAA,IAAAA;QACAnZ,KAAAA,EAAOA,KAAAA,GAAQiU,0BAAmBjU,KAAAA,EAAAA,GAAAA,CAAAA,GAAYE;sBAGhD/E,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;QAAOtP,IAAAA,EAAK,QAAA;QAAS8L,OAAAA,EAAQ,SAAA;QAAUgK,OAAAA,EAAS5V;;;;AAIhDmzB,KAAAA,CAAAA,CAAAA,EAAAA,kBAAAA,kBAAsBj4B,wBAAA,CAAA,aAAA,CAAC63B,iBAAAA,EAAAA;QAAkB9vB,KAAAA,EAAOA;;AAGvD,CAAA;;AChLO,MAAMkxB,iBAAAA,GAAyC,IAAA;AACpD,IAAA,MAAM,IAAIpS,KAAAA,CAAM,mBAAA,CAAA;AAClB,CAAA;;ACcA;AACO,MAAMqS,0BAAAA,GAA6B,CACxC9pB,aAAAA,EAOA+pB,wBAAAA,GAAAA;IAEA,IAAIC,mBAAAA,GAAsBhqB,cAAcnD,YAAY;AACpD,IAAA,IAAIzC,OAAO6vB,IAAI,CAACD,mBAAAA,CAAAA,CAAqBnuB,MAAM,IAAI,CAAA,EAAG;QAChDmuB,mBAAAA,GAAsBD,wBAAAA;AACxB,IAAA;IACA,OAAOC,mBAAAA;AACT,CAAA;AAEO,MAAME,4BAAAA,GAA+B,CAC1ClqB,aAAAA,EAOAmqB,0BAAAA,EACAxxB,KAAAA,GAAAA;IAEA,IAAIyxB,qBAAAA,GAAwBpqB,cAAclD,cAAc;AACxD,IAAA,IAAI1C,OAAO6vB,IAAI,CAACG,qBAAAA,CAAAA,CAAuBvuB,MAAM,IAAI,CAAA,EAAG;AAClDuuB,QAAAA,qBAAAA,GAAwBD,8BAA8B,EAAC;AACzD,IAAA;AAEA,IAAA,IACExxB,UACCqH,aAAAA,CAAcxK,IAAI,KAAKwH,gCAAAA,CAAkBC,MAAM,IAAI+C,aAAAA,CAAcxK,IAAI,KAAKwH,gCAAAA,CAAkBW,SAAS,CAAD,IACrG,EAAE,YAAA,IAAgBysB,qBAAoB,CAAA,EACtC;QACAA,qBAAAA,GAAwB;AACtB,YAAA,GAAGA,qBAAqB;YACxBC,UAAAA,EAAY1xB;AACd,SAAA;AACF,IAAA;IAEA,OAAOyxB,qBAAAA;AACT,CAAA;AAEO,MAAMzpB,kBAAAA,GAAqB,CAAC,EAAEa,OAAO,EAAkC,GAAA;AAC5E,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQlB,6CAAAA,EAAAA;IACd,MAAM,CAACzK,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,uBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEgK,qBAAAA,GAAwB,EAAE,EAAE,GAAGR,sBAAAA,EAAAA;IAEvC,MAAM,CAAC2W,cAAAA,EAAgBG,iBAAAA,CAAkB,GAAGN,qBAAAA,EAAAA;AAE5C,IAAA,MAAMzgB,MAAAA,GAASa,gBAAAA,EAAAA;AACf,IAAA,MAAM,EAAEsQ,gBAAgB,EAAEE,iBAAiB,EAAEgR,oBAAoB,EAAE9a,YAAY,EAAEC,cAAc,EAAE,GAC/FxH,MAAAA,CAAOwJ,YAAY,IAAI,EAAC;IAE1B,MAAM,EAAEyX,eAAe,EAAEpB,cAAc,EAAEiM,SAAS,EAAE,GAAGrnB,oBAAAA,CAAqBzE,MAAAA,EAAQ,oBAAA,CAAA;;AAGpF,IAAA,MAAMg1B,kBAAkBz0B,KAAAA,CAAMgC,SAAS,CAACrC,IAAI,KAAKyC,4BAAa0D,SAAS;AACvE,IAAA,MAAM4uB,WAAAA,GAAc/oB,OAAAA,CAAQ9C,OAAO,CAAiB,CAACkE,MAAAA,GAAAA;QACnD,IAAIA,MAAAA,KAAWpI,0BAAAA,CAAoBC,YAAY,EAAE;AAC/C,YAAA,OAAOsF,qBAAAA,CAAsB5F,GAAG,CAAC,CAACuC,YAAc;oBAAElH,IAAAA,EAAM,OAAA;AAASkH,oBAAAA;iBAAS,CAAA,CAAA;AAC5E,QAAA,CAAA,MAAO,IAAIkG,MAAAA,KAAWpI,0BAAAA,CAAoBE,UAAU,EAAE;AACpD,YAAA,OAAO4vB,eAAAA,GACH;gBAAE90B,IAAAA,EAAM;aAAgB,GACvBK,KAAAA,CAAMgC,SAAS,CAACb,YAAY,EAAE4E,sBAAAA,EAAwBzB,GAAAA,CAAI,CAAC6mB,UAAAA,IAAgB;oBAAExrB,IAAAA,EAAM,KAAA;AAAOwrB,oBAAAA;AAAW,iBAAA,MACpG,EAAE;QACV,CAAA,MAAO;YACL6I,iBAAAA,CAAkBjnB,CAAAA;AACpB,QAAA;AACF,IAAA,CAAA,CAAA;IAEA,IAAI2nB,WAAAA,CAAY1uB,MAAM,KAAK,CAAA,EAAG;QAC5B,OAAO,IAAA;AACT,IAAA;;IAGA,MAAM,CAAC2uB,gBAAAA,EAAkBC,kBAAAA,CAAmB,GAAGxI,iBAAAA,CAAWC,WAAW,CACnEqI,WAAAA,EACA,CAAC3nB,MAAAA,GAAWif,WAAAA,CAAYjf,MAAAA,CAAAA,KAAYsT,cAAAA,CAAAA;;AAItC,IAAA,MAAMwU,oBAAoB,CAAC1qB,aAAAA,GAAAA;AACzB,QAAA,MAAM2qB,aAAAA,GAAgB;AACpB9tB,YAAAA,YAAAA,EAAcitB,2BAA2B9pB,aAAAA,EAAenD,YAAAA,CAAAA;AACxDC,YAAAA,cAAAA,EAAgBotB,6BAA6BlqB,aAAAA,EAAelD,cAAAA,EAAgBjH,KAAAA,CAAMqJ,OAAO,CAACvG,KAAK;AACjG,SAAA;QAEA,IAAIqH,aAAAA,CAAc9C,OAAO,EAAE;AACzB,YAAA,qBACEtM,wBAAA,CAAA,aAAA,CAAC2lB,eAAAA,EAAAA;AACC9hB,gBAAAA,GAAAA,EAAKuL,cAAcxK,IAAI;AACtB,gBAAA,GAAGm1B,aAAa;AACjB5tB,gBAAAA,kBAAAA,EAAoBiD,cAAc7C;;AAGxC,QAAA;AAEA,QAAA,qBACEvM,wBAAA,CAAA,aAAA,CAACukB,cAAAA,EAAAA;AACC1gB,YAAAA,GAAAA,EAAKuL,cAAcxK,IAAI;AACvBmH,YAAAA,YAAAA,EAAcqD,cAAcxK,IAAI;YAChC4f,gBAAAA,EAAkB3O,gBAAAA;YAClB4O,iBAAAA,EAAmB1O,iBAAAA;YACnB2O,oBAAAA,EAAsBqC,oBAAAA;YACtBviB,SAAAA,EAAW,IAAMihB,iBAAAA,CAAkBrW,aAAAA,CAAcxK,IAAI,CAAA;AACpD,YAAA,GAAGm1B;;AAGV,IAAA,CAAA;AAEA,IAAA,qBACE/5B,uCAACiU,mBAAAA,EAAAA,IAAAA,EACE2lB,gBAAAA,CAAiBrwB,GAAG,CAAC,CAACyI,MAAAA,EAAQnB,KAAAA,GAAAA;QAC7B,MAAMmpB,eAAAA,GAAkB,CAAC,IAAA;AACvB,YAAA,OAAQhoB,OAAOpN,IAAI;gBACjB,KAAK,OAAA;oBACH,OAAOk1B,iBAAAA,CAAkB9nB,OAAOlG,QAAQ,CAAA;gBAE1C,KAAK,KAAA;AACH,oBAAA,qBACE9L,wBAAA,CAAA,aAAA,CAACwwB,SAAAA,EAAAA;wBACC3sB,GAAAA,EAAKmO,MAAAA,CAAOoe,UAAU,CAACM,YAAY;AACnCN,wBAAAA,UAAAA,EAAYpe,OAAOoe,UAAU;AAC7BK,wBAAAA,OAAAA,EAAS,IAAMhL,iBAAAA,CAAkBoL,eAAAA,CAAgB7e,MAAAA,CAAOoe,UAAU,CAAA;;gBAIxE,KAAK,eAAA;AACH,oBAAA,qBACEpwB,wBAAA,CAAA,aAAA,CAACkU,aAAAA,EAAAA;wBACCrQ,GAAAA,EAAI,eAAA;wBACJ6M,OAAAA,EAAQ,SAAA;wBACRc,OAAAA,EAAS,IAAA;4BACPtM,QAAAA,CAAS;gCAAEN,IAAAA,EAAM,YAAA;AAAcsC,gCAAAA,MAAAA,EAAQC,kBAAW0oB,iBAAiB;gCAAExY,OAAAA,EAAS;AAAO,6BAAA,CAAA;AACvF,wBAAA;;;;;AAMN,gBAAA;oBACE4hB,iBAAAA,CAAkBjnB,CAAAA;AACtB;QACF,CAAA,GAAA;QAEA,OAAO6nB,kBAAAA,IAAsBhpB,KAAAA,KAAU,CAAA,iBACrC7Q,wBAAA,CAAA,aAAA,CAAC6nB,eAAAA,EAAAA;AAAShkB,YAAAA,GAAAA,EAAKotB,WAAAA,CAAYjf,MAAAA;WAAUgoB,eAAAA,CAAAA,GAErCA,eAAAA;AAEJ,IAAA,CAAA,CAAA,CAAA;AAGN,CAAA;;ACnKO,MAAMC,UAAAA,GAAa;IACxBC,MAAAA,EAAQC,iBAAAA;IACRC,SAAAA,EAAWC,oBAAAA;IACXC,OAAAA,EAASr5B,WAAAA;IACTs5B,KAAAA,EAAOC,gBAAAA;IACPC,MAAAA,EAAQC;AACV,CAAA;AAEO,MAAMC,QAAAA,GAAW;IACtBT,MAAAA,EAAQC,iBAAAA;IACRC,SAAAA,EAAWC,oBAAAA;IACX9J,IAAAA,EAAMnvB;AACR,CAAA;AAEO,MAAMw5B,UAAAA,GAAa;IACxBjD,KAAAA,EAAOkD,gBAAAA;IACPjD,OAAAA,EAASkD,kBAAAA;IACTC,KAAAA,EAAOC;AACT,CAAA;;ACLA,MAAMC,wBAAAA,GAA2B,kBAAMj7B,wBAAA,CAAA,aAAA,CAAC4K,SAAAA,EAAAA;QAAUqtB,kBAAAA,EAAoB;;AACtE,MAAMiD,qBAAAA,GAAwB,kBAAMl7B,wBAAA,CAAA,aAAA,CAAC4K,SAAAA,EAAAA;QAAUqtB,kBAAAA,EAAAA;;AAC/C,MAAMkD,iCAAAA,GAAoC,kBAAMn7B,wBAAA,CAAA,aAAA,CAAC6K,kBAAAA,EAAAA;QAAmBotB,kBAAAA,EAAoB;;AACxF,MAAMmD,8BAAAA,GAAiC,kBAAMp7B,wBAAA,CAAA,aAAA,CAAC6K,kBAAAA,EAAAA;QAAmBotB,kBAAAA,EAAAA;;AAE1D,MAAMtrB,eAAAA,GAAoC;IAC/C7L,EAAAA,EAAI,iBAAA;IACJu6B,OAAAA,EAAS;QACP,CAACl0B,iBAAAA,CAAW6lB,iBAAiB,GAAGA,iBAAAA;QAChC,CAAC7lB,iBAAAA,CAAW2xB,oBAAoB,GAAG3K;AACrC,KAAA;IACAmN,UAAAA,EAAY;QACV,CAAC1xB,0BAAAA,CAAoBgB,SAAS,GAAGqwB,wBAAAA;QACjC,CAACrxB,0BAAAA,CAAoBiB,kBAAkB,GAAGswB,iCAAAA;QAC1C,CAACvxB,0BAAAA,CAAoBU,qBAAqB,GAAG4wB,qBAAAA;QAC7C,CAACtxB,0BAAAA,CAAoBW,8BAA8B,GAAG6wB;AACxD,KAAA;IACAG,KAAAA,EAAOX;AACT,CAAA;AAEO,MAAMhuB,QAAAA,GAA6B;IACxC9L,EAAAA,EAAI,UAAA;IACJu6B,OAAAA,EAAS;QACP,CAACl0B,iBAAAA,CAAWq0B,aAAa,GAAGrM,mBAAAA;QAC5B,CAAChoB,iBAAAA,CAAW2xB,oBAAoB,GAAG3K,0BAAAA;QACnC,CAAChnB,iBAAAA,CAAW6lB,iBAAiB,GAAGA;AAClC,KAAA;IACAsO,UAAAA,EAAY;QACV,CAAC1xB,0BAAAA,CAAoBgB,SAAS,GAAGqwB,wBAAAA;QACjC,CAACrxB,0BAAAA,CAAoBiB,kBAAkB,GAAGswB,iCAAAA;QAC1C,CAACvxB,0BAAAA,CAAoBU,qBAAqB,GAAG4wB,qBAAAA;QAC7C,CAACtxB,0BAAAA,CAAoBW,8BAA8B,GAAG6wB;AACxD,KAAA;IACAG,KAAAA,EAAOX;AACT,CAAA;AAEO,MAAMluB,GAAAA,GAAwB;IACnC5L,EAAAA,EAAI,KAAA;IACJu6B,OAAAA,EAAS;QACP,CAACl0B,iBAAAA,CAAW0oB,iBAAiB,GAAGA,iBAAAA;QAChC,CAAC1oB,iBAAAA,CAAWoqB,gBAAgB,GAAGA,gBAAAA;QAC/B,CAACpqB,iBAAAA,CAAWsqB,oBAAoB,GAAGA;AACrC,KAAA;IACAgK,kBAAAA,EAAoB;AAClB1rB,QAAAA,kBAAAA;AACAygB,QAAAA;AACF,KAAA;IACA+K,KAAAA,EAAOZ;AACT,CAAA;AAEO,MAAM9tB,SAAAA,GAA8B;IACzC/L,EAAAA,EAAI,WAAA;IACJu6B,OAAAA,EAAS;QACP,CAACl0B,iBAAAA,CAAWu0B,iBAAiB,GAAGxwB,kBAAAA;QAChC,CAAC/D,iBAAAA,CAAWw0B,oBAAoB,GAAGjI,qBAAAA;QACnC,CAACvsB,iBAAAA,CAAWqsB,kBAAkB,GAAGG,mBAAAA;QACjC,CAACxsB,iBAAAA,CAAWktB,0BAA0B,GAAGC,cAAAA;QACzC,CAACntB,iBAAAA,CAAWukB,iBAAiB,GAAGA,iBAAAA;QAChC,CAACvkB,iBAAAA,CAAW6rB,+BAA+B,GAAGuE;AAChD,KAAA;IACA+D,UAAAA,EAAY;QACV,CAAC1xB,0BAAAA,CAAoBsB,kBAAkB,GAAGA,kBAAAA;QAC1C,CAACtB,0BAAAA,CAAoBU,qBAAqB,GAAG4wB,qBAAAA;QAC7C,CAACtxB,0BAAAA,CAAoBW,8BAA8B,GAAG6wB;AACxD,KAAA;IACAG,KAAAA,EAAOX;AACT,CAAA;AAEO,MAAMnuB,KAAAA,GAA0B;IACrC3L,EAAAA,EAAI,OAAA;AACJu6B,IAAAA,OAAAA,EAAS,EAAC;IACVI,kBAAAA,EAAoB;AAClB1rB,QAAAA,kBAAAA;AACA4V,QAAAA,eAAAA;AACApB,QAAAA;AACF,KAAA;IACAgX,KAAAA,EAAOtB;AACT,CAAA;;;;;;;;;;;AClGA;AACA;AACO,MAAM2B,iBAAAA,GAAkB,IAAA;AAC7B,IAAA,MAAMxW,MAAAA,GAAS3f,gBAAAA,EAAAA;IACf,OAAOo2B,0BAAAA,CAAqBzW,OAAO0W,aAAa,EAAE,IAAM1W,MAAAA,CAAO2W,IAAI,CAACt0B,OAAO,EAAA,CAAA;AAC7E,CAAA;;ACOA,MAAMu0B,uBAAuB,CAAC,EAC5BC,YAAY,EACZC,aAAa,EAId,GAAA;AACC,IAAA,MAAM12B,YAAAA,GAAeC,gBAAAA,EAAAA;AACrB,IAAA,MAAMtB,OAAAA,GAAUC,uBAAAA,EAAAA;AAChB,IAAA,MAAMH,OAAAA,GAAUC,uBAAAA,EAAAA;AAChB,IAAA,MAAM,EAAEi4B,mBAAmB,EAAEC,oBAAoB,EAAE,GAAG52B,aAAa62B,GAAG;;AAGtE,IAAA,MAAMx1B,SAAAA,GAAYU,YAAAA,EAAAA;AAElB,IAAA,MAAM+0B,kBAAkBC,kBAAAA,CAAY;AAClCN,QAAAA,YAAAA;AACAC,QAAAA,aAAAA;AACAC,QAAAA,mBAAAA;AACAC,QAAAA,oBAAAA;AACAj4B,QAAAA,OAAAA;AACAF,QAAAA;AACF,KAAA,CAAA;AAEA,IAAA,qBAAOjE,wBAAA,CAAA,aAAA,CAACw8B,iBAAAA,EAAAA;QAAW31B,SAAAA,EAAWA,SAAAA;QAAW41B,kBAAAA,EAAoB,KAAA;AAAQ,QAAA,GAAGH;;AAC1E,CAAA;AAEA,MAAMI,mBAAAA,GAAsB,CAAC,EAC3BT,YAAY,EACZC,aAAa,EACbS,QAAQ,EAKT,GAAA;AACC,IAAA,MAAMn3B,YAAAA,GAAeC,gBAAAA,EAAAA;AACrB,IAAA,MAAMtB,OAAAA,GAAUC,uBAAAA,EAAAA;AAChB,IAAA,MAAM,EAAEw4B,gBAAgB,EAAE,GAAGp3B,aAAa62B,GAAG;AAC7C,IAAA,MAAMQ,gBAAgB,IAAMr3B,YAAAA,CAAas3B,OAAO,CAACC,MAAM,CAAC;YAAEC,UAAAA,EAAY;AAAK,SAAA,CAAA;AAE3E,IAAA,MAAMn2B,SAAAA,GAAYU,YAAAA,EAAAA;AAClB,IAAA,MAAM01B,iBAAiBC,qBAAAA,CAAe;AACpCjB,QAAAA,YAAAA;AACAC,QAAAA,aAAAA;AACAU,QAAAA,gBAAAA;AACAC,QAAAA,aAAAA;AACA14B,QAAAA,OAAAA;AACAw4B,QAAAA;AACF,KAAA,CAAA;AAEA,IAAA,qBAAO38B,wBAAA,CAAA,aAAA,CAACm9B,gBAAAA,EAAAA;AAAW,QAAA,GAAGF,cAAc;QAAEp2B,SAAAA,EAAWA,SAAAA;QAAW41B,kBAAAA,EAAoB;;AAClF,CAAA;AAEO,MAAMW,gBAAAA,GAAmB,CAAC,EAC/BjS,eAAetlB,MAAAA,CAAOC,QAAQ,CAACuC,MAAM,EACrCs0B,QAAQ,EAIT,GAAG,EAAE,GAAA;;IAEJ,MAAM,CAAC,EAAEU,IAAI,EAAEx4B,KAAK,EAAE,CAAC,GAAGS,cAAAA,CAASg4B,yBAAAA,CAAenS,YAAAA,CAAAA,CAAAA;AAClD,IAAA,MAAM,EAAEtC,KAAK,EAAED,gBAAgB,EAAE,GAAGnZ,sBAAAA,EAAAA;IAEpC,IAAI8tB,OAAAA;IACJ,IAAIF,IAAAA,CAAKz4B,IAAI,KAAK,WAAA,EAAa;QAC7B24B,OAAAA,iBACEv9B,wBAAA,CAAA,aAAA,CAACw9B,4CACCx9B,wBAAA,CAAA,aAAA,CAACg8B,oBAAAA,EAAAA;YAAqBC,YAAAA,EAAcp3B,KAAAA;AAAOq3B,YAAAA,aAAAA,EAAemB,KAAKI;;AAGrE,IAAA,CAAA,MAAO,IAAIJ,IAAAA,CAAKz4B,IAAI,KAAK,QAAA,EAAU;AACjC24B,QAAAA,OAAAA,iBAAUv9B,wBAAA,CAAA,aAAA,CAAC08B,mBAAAA,EAAAA;YAAoBT,YAAAA,EAAcp3B,KAAAA;AAAOq3B,YAAAA,aAAAA,EAAemB,KAAKI,MAAM;YAAEd,QAAAA,EAAUA;;AAC5F,IAAA;AAEA,IAAA,qBACE38B,wBAAA,CAAA,aAAA,CAAC6pB,oBAAAA,EAAAA;QAAchB,KAAAA,EAAOA,KAAAA;QAAOD,gBAAAA,EAAkBA;AAC5C2U,KAAAA,EAAAA,OAAAA,CAAAA;AAGP,CAAA;AAEA,MAAMC,sBAAAA,GAAyB,CAAC,EAAEnf,QAAQ,EAA2B,GAAA;AACnE,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQ3O,6CAAAA,EAAAA;AACd,IAAA,MAAM4jB,MAAAA,GAASsI,iBAAAA,EAAAA;AACf,IAAA,MAAMz3B,OAAAA,GAAUC,uBAAAA,EAAAA;AAChB,IAAA,MAAMs5B,aAAa/7B,YAAAA,CAAOwC,OAAAA,CAAAA;IAC1BwC,eAAAA,CAAU,IAAA;AACR+2B,QAAAA,UAAAA,CAAW9b,OAAO,GAAGzd,OAAAA;IACvB,CAAA,EAAG;AAACA,QAAAA;AAAQ,KAAA,CAAA;;AAGZ,IAAA,MAAMqB,YAAAA,GAAeC,gBAAAA,EAAAA;AACrB,IAAA,MAAMk4B,UAAAA,GAAaC,gCAAAA,EAAAA;AACnB,IAAA,MAAM,CAACC,SAAAA,EAAWC,YAAAA,CAAa,GAAGx4B,cAAAA,CAAS,KAAA,CAAA;AAC3C,IAAA,MAAM,CAACy4B,QAAAA,EAAUC,WAAAA,CAAY,GAAG14B,cAAAA,CAAS,KAAA,CAAA;IAEzCqB,eAAAA,CAAU,IAAA;AACR,QAAA,IAAIk3B,aAAaE,QAAAA,EAAU;AAE3B,QAAA,MAAME,qBAAqB,OAAON,UAAAA,GAAAA;YAChC,IAAIA,UAAAA,EAAYO,gBAAAA,IAAoBP,UAAAA,EAAYQ,cAAAA,EAAgB;gBAC9DL,YAAAA,CAAa,IAAA,CAAA;gBACb,MAAM7I,KAAAA,GAAQ0I,WAAWO,gBAAgB;gBACzC,MAAME,UAAAA,GAAaT,WAAWQ,cAAc;;;AAI5C,gBAAA,MAAM7K,MAAAA,GAAS9tB,YAAAA,CAAau2B,IAAI,CAACt0B,OAAO,EAAA;AACxC,gBAAA,IAAI6rB,MAAAA,EAAQ;oBACV,MAAM9tB,YAAAA,CAAas3B,OAAO,CAACC,MAAM,EAAA;AACnC,gBAAA;gBACA,IAAI;AACF,oBAAA,MAAMv3B,YAAAA,CAAas3B,OAAO,CAACuB,MAAM,CAAC;AAChCpJ,wBAAAA,KAAAA;AACAmJ,wBAAAA,UAAAA;AACA7oB,wBAAAA,eAAAA,EAAiB+d,MAAAA,EAAQ/d,eAAAA;wBACzBjC,wBAAAA,EAA0B;AAC5B,qBAAA,CAAA;AACF,gBAAA,CAAA,CAAE,OAAOzO,KAAAA,EAAO;AACd64B,oBAAAA,UAAAA,CAAW9b,OAAO,CAAC/c,KAAAA,CAAAA;gBACrB,CAAA,QAAU;oBACRi5B,YAAAA,CAAa,KAAA,CAAA;oBACbE,WAAAA,CAAY,IAAA,CAAA;AACd,gBAAA;AACF,YAAA;;YAEAA,WAAAA,CAAY,IAAA,CAAA;AACd,QAAA,CAAA;QACAC,kBAAAA,CAAmBN,UAAAA,CAAAA;IACrB,CAAA,EAAG;AAACA,QAAAA,UAAAA;AAAYE,QAAAA,SAAAA;AAAWE,QAAAA,QAAAA;AAAUv4B,QAAAA;AAAa,KAAA,CAAA;IAElDmB,eAAAA,CAAU,IAAA;AACR,QAAA,IAAI2sB,MAAAA,EAAQ;QACZoK,UAAAA,CAAW9b,OAAO,CAAC,IAAI0c,oCAAAA,EAAAA,CAAAA;IACzB,CAAA,EAAG;AAAChL,QAAAA;AAAO,KAAA,CAAA;AAEX,IAAA,IAAIuK,SAAAA,EAAW;AACb,QAAA,qBAAO79B,wBAAA,CAAA,aAAA,CAACqQ,oBAAAA,EAAAA,IAAAA,CAAAA;AACV,IAAA,CAAA,MAAO,IAAIijB,MAAAA,EAAQ;QACjB,OAAOjV,QAAAA;IACT,CAAA,MAAO;AACL,QAAA,qBACEre,wBAAA,CAAA,aAAA,CAACu+B,mBAAAA,EAAAA;YACCC,IAAI,EAAA,OAAA,CAAA,CAAA,CAAA;;;;;AAMV,IAAA;AACF,CAAA;;AC1JA;;;;IAKO,MAAM/V,YAAAA,GAAe,CAAC,EAC3B/jB,MAAM,EACN0M,MAAM,EACN,GAAGrR,KAAAA,EACiE,GAAA;AAUpE,IAAA,MAAM0+B,cAAAA,GAAiB;AACrB,QAAA,GAAG/5B,MAAM;QACT0E,oBAAAA,EAAsBI,MAAAA,CAAOmE,MAAM,CAAC+wB,WAAAA;AACtC,KAAA;AAEA,IAAA,qBAAO1+B,wBAAA,CAAA,aAAA,CAACwqB,oBAAAA,EAAAA;QAAqB9lB,MAAAA,EAAQ+5B,cAAAA;AAAiB,QAAA,GAAG1+B;;AAC3D,CAAA;AAEO,MAAM4+B,eAAAA,GAAkB,CAAgE,EAC7FlY,MAAM,EACNgE,YAAY,EACZC,SAAS,EACTC,OAAO,EACPiU,qBAAqB,EACrBC,sBAAsB,EACtBztB,MAAM,EACuD,GAAA;AAC7D,IAAA,MAAMwa,iBAAAA,GAAoBC,iCAAAA,CAA2BpB,YAAAA,EAAc,KAAA,EAAO,EAAE,CAAA;IAE5E9jB,eAAAA,CAAU,IAAA;AACRC,QAAAA,+BAAAA,CAAiB6f,QACd5f,SAAS,CAACC,QAAQ,EAAA,CAClBC,IAAI,CAAC,CAACtC,IAAAA,GAAAA;AACLmC,YAAAA,+BAAAA,CAAiB6f,MAAAA,CAAAA,CAAQoE,aAAa,CAACC,QAAQ,CAAC;gBAC9CC,IAAAA,EAAM,uBAAA;gBACNC,OAAAA,EAAS;oBAAEnkB,SAAAA,EAAWpC;AAAK;AAC7B,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;KACJ,EAAG;AAACgiB,QAAAA;AAAO,KAAA,CAAA;AAWX,IAAA,qBACEzmB,wBAAA,CAAA,aAAA,CAAC8rB,4BAAAA,EAAAA;QACCrF,MAAAA,EAAQA,MAAAA;AACR/hB,QAAAA,MAAAA,EAAQ,EAAC;QACTgmB,SAAAA,EAAWA,SAAAA;QACXc,YAAAA,EAAcC;qBAEdzrB,wBAAA,CAAA,aAAA,CAAC8+B,yBAAAA,EAAAA;QAAmBC,wBAAAA,EAA0BH,qBAAAA;QAAuBI,eAAAA,EAAiBH;AACpF,KAAA,gBAAA7+B,wBAAA,CAAA,aAAA,CAAC+rB,2BAAoBC,QAAQ,EAAA;QAACrO,KAAAA,EAAOiO;qBACnC5rB,wBAAA,CAAA,aAAA,CAACisB,uDAAAA,EAAAA;QAAoBzqB,QAAAA,EAAUA,QAAAA;QAAU0qB,SAAAA,EAAWvB;qBAClD3qB,wBAAA,CAAA,aAAA,CAACo9B,gBAAAA,EAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAMb,CAAA;;AC7EA;AACO,SAAS6B,kBAAAA,CAMdlU,IAAY,EAAEja,SAA+B,EAAA;AAC7C,IAAA,MAAMouB,UAAgD,CAACn/B,KAAAA,GAAAA;AAErDo/B,QAAAA,6CAAAA,CAAUC,kCAA0BC,8BAAAA,CAAgB,CAAC,CAAC,EAAEtU,IAAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAEjE,QAAA,MAAMtE,MAAAA,GAAS6Y,0BAAAA,EAAAA;QAEf,MAAMC,MAAAA,GAASx/B,KAAAA,CAAM2E,MAAM,EAAE86B,eAAAA;AAC7B,QAAA,MAAMC,OAAO99B,YAAAA,CAAuB,IAAA,CAAA;QACpC,MAAM,CAAC+9B,UAAAA,EAAYC,aAAAA,CAAc,GAAGr6B,cAAAA,EAAAA;QAEpCmd,qBAAAA,CAAgB,IAAA;AACd,YAAA,IAAI8c,MAAAA,EAAQ;gBACV,IAAI,CAACE,KAAK7d,OAAO,IAAI6d,KAAK7d,OAAO,CAACge,UAAU,EAAE;AAC9C,gBAAA,MAAMA,UAAAA,GAAaH,IAAAA,CAAK7d,OAAO,CAACie,YAAY,CAAC;oBAAEC,IAAAA,EAAM;AAAO,iBAAA,CAAA;gBAC5D,MAAMJ,UAAAA,GAAa3d,QAAAA,CAASge,aAAa,CAAC,KAAA,CAAA;AAE1CH,gBAAAA,UAAAA,CAAWI,WAAW,CAACC,wBAAAA,EAAAA,CAAAA;AACvBL,gBAAAA,UAAAA,CAAWI,WAAW,CAACN,UAAAA,CAAAA;gBAEvBC,aAAAA,CAAcD,UAAAA,CAAAA;YAChB,CAAA,MAAO;AACLQ,gBAAAA,wBAAAA,EAAAA;AACF,YAAA;QACF,CAAA,EAAG;AAACX,YAAAA;AAAO,SAAA,CAAA;AAEX,QAAA,MAAMY,wBAAUngC,wBAAA,CAAA,aAAA,CAAC8Q,SAAAA,EAAAA;AAAW,YAAA,GAAI/Q,KAAK;YAAY0mB,MAAAA,EAAQA;;AACzD,QAAA,IAAI8Y,MAAAA,EAAQ;AACV,YAAA,qBAAOv/B,wBAAA,CAAA,aAAA,CAAC8R,KAAAA,EAAAA;gBAAIsQ,GAAAA,EAAKqd;AAAOC,aAAAA,EAAAA,UAAAA,kBAAcU,sBAAaD,OAAAA,EAAST,UAAAA,CAAAA,CAAAA;QAC9D,CAAA,MAAO;YACL,OAAOS,OAAAA;AACT,QAAA;AACF,IAAA,CAAA;AAEAjB,IAAAA,OAAAA,CAAQmB,WAAW,GAAGtV,IAAAA;IACtB,OAAOmU,OAAAA;AACT;;ACcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BC,IACM,MAAMoB,SAAAA,mBAA4BrB,kBAAAA,CAAmB,aAAaxW,YAAAA;;ACpFzE;;;;;;;;;;;;;;;;;;;AAmBC,IACM,MAAM8X,mBAAAA,mBAAsCtB,kBAAAA,CAAmB,uBAAuBN,eAAAA;;AChB7F;;;;;;;;;;;IAYO,MAAM/C,eAAAA,GAAkB4E;AAI/B;;;;;;;;;;;;;;;IAgBO,MAAMC,sBAAAA,GAAyBC;AAItC;;;;;;;;;;;IAYO,MAAMC,qBAAAA,GAAwBC;AAIrC;;;;;;;;;;;IAYO,MAAMC,qBAAAA,GAAwBC;AAK9B,MAAMC,mBAAmBC;AAMzB,MAAMC,0BAA0BC;AAahC,MAAMC,yBAAyBC;AAwCtC;;;;;;;;;;;;AAYC,IACM,MAAMC,iBAAAA,GAAoB,CAE/B,EACAjc,MAAM,EACN/G,QAAQ,EACRijB,cAAAA,GAAiB,IAAI,EACyB,iBAC9CthC,wBAAA,CAAA,aAAA,CAACuhC,yBAAAA,EAAAA;QAAwBnc,MAAAA,EAAQA,MAAAA;QAAQkc,cAAAA,EAAgBA;OACtDjjB,QAAAA;;ACvKL;;IAGO,MAAMmjB,uBAAAA,GAA0BC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[4]}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../web/src/assets/sso.tsx","../../../../web/src/assets/logo-color/Hubspot.tsx","../../../../web/src/assets/logo-color/Okta.tsx","../../../../web/src/messages/b2b/en.ts","../../../../../node_modules/swr/mutation/dist/index.mjs","../../../../web/src/ui/b2b/utils.ts","../../../../web/src/ui/b2b/generateProductComponentsOrdering.ts","../../../../web/src/utils/oauthProviderType.ts","../../../../web/src/ui/b2b/hooks/useEffectiveAuthConfig.ts","../../../../web/src/ui/b2b/screens/Main.tsx","../../../../web/src/ui/b2b/screens/Confirmation.tsx","../../../../web/src/ui/b2b/components/OrganizationRow.tsx","../../../../web/src/ui/b2b/screens/Discovery.tsx","../../../../web/src/ui/b2b/screens/MFAEnrollmentSelectionScreen.tsx","../../../../web/src/ui/b2b/screens/SMSOTPEnrollScreen.tsx","../../../../web/src/ui/b2b/screens/SMSOTPEntryScreen.tsx","../../../../web/src/ui/b2b/screens/RecoveryCodeEntryScreen.tsx","../../../../web/src/ui/components/atoms/CodeContainer.tsx","../../../../web/src/ui/b2b/screens/RecoveryCodeSaveScreen.tsx","../../../../web/src/ui/b2b/screens/TOTPEnrollQRScreen.tsx","../../../../web/src/ui/b2b/screens/TOTPEnrollManualScreen.tsx","../../../../web/src/ui/b2b/screens/TOTPEntryScreen.tsx","../../../../web/src/ui/b2b/hooks/useIsOnlyFloatingOneTap.ts","../../../../web/src/ui/b2b/components/OAuthB2BButton.tsx","../../../../web/src/ui/b2b/hooks/useLastUsedAuthMethod.ts","../../../../web/src/ui/b2b/components/B2BOneTap.tsx","../../../../web/src/ui/b2b/Container.tsx","../../../../web/src/ui/b2b/InternalAppContainer.tsx","../../../../web/src/ui/b2b/screens/useEmailDomain.ts","../../../../web/src/ui/b2b/hooks/useEmlLoginOrSignup.ts","../../../../web/src/ui/b2b/hooks/useEmlDiscoverySend.ts","../../../../web/src/ui/b2b/screens/EmailConfirmation.tsx","../../../../web/src/ui/b2b/getOtpCodeExpiration.ts","../../../../web/src/ui/b2b/hooks/useEmailOtpDiscoverySend.ts","../../../../web/src/ui/b2b/hooks/useEmailOtpLoginOrSignup.ts","../../../../web/src/ui/b2b/screens/EmailMethodSelectionScreen.tsx","../../../../web/src/ui/b2b/screens/EmailOTPEntryScreen.tsx","../../../../web/src/ui/b2b/hooks/useSsoDiscoveryConnection.ts","../../../../web/src/ui/b2b/screens/SSODiscoveryEmail.tsx","../../../../web/src/ui/b2b/components/SSOButton.tsx","../../../../web/src/ui/b2b/types/authMethodKeys.ts","../../../../web/src/ui/b2b/screens/SSODiscoveryMenu.tsx","../../../../web/src/ui/b2b/screens/SSODiscoveryFallback.tsx","../../../../web/src/ui/b2b/usePasswordInput.ts","../../../../web/src/ui/b2b/screens/PasswordEmailForm.tsx","../../../../web/src/ui/b2b/screens/PasswordAuthenticate.tsx","../../../../web/src/ui/b2b/screens/PasswordForgotForm.tsx","../../../../web/src/ui/b2b/screens/PasswordSetNew.tsx","../../../../web/src/ui/b2b/screens/PasswordResetForm.tsx","../../../../web/src/ui/b2b/screens/PasswordResetConfirmation.tsx","../../../../web/src/ui/b2b/components/UsePasswordButton.tsx","../../../../web/src/ui/b2b/screens/EmailForm.tsx","../../../../web/src/utils/assertUnreachable.ts","../../../../web/src/ui/b2b/screens/SsoAndOAuthButtons.tsx","../../../../web/src/ui/b2b/components/Icons.ts","../../../../web/src/ui/b2b/B2BProducts.tsx","../../../../web/src/ui/b2b/hooks/useStytchMember.ts","../../../../web/src/ui/b2b/screens/IDPConsent.tsx","../../../../web/src/ui/b2b/App.tsx","../../../../web/src/ui/react/bindings/createB2BComponent.tsx","../../../../web/src/ui/react/b2b/Stytch.tsx","../../../../web/src/ui/react/b2b/B2BIdentityProvider.tsx","../../../src/b2b/StytchB2BContext.tsx","../../../src/b2b/index.ts"],"sourcesContent":["import React from 'react';\nimport { DEFAULT_ICON_SIZE, IconProps } from './types';\n\nexport const SSOIcon = ({ size = DEFAULT_ICON_SIZE, ...props }: IconProps) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g clipPath=\"url(#clip0_221_1596)\">\n <path\n d=\"M17.5125 10.53C17.0025 7.9425 14.73 6 12 6C9.8325 6 7.95 7.23 7.0125 9.03C4.755 9.27 3 11.1825 3 13.5C3 15.9825 5.0175 18 7.5 18H17.25C19.32 18 21 16.32 21 14.25C21 12.27 19.4625 10.665 17.5125 10.53Z\"\n fill=\"currentColor\"\n />\n </g>\n <g clipPath=\"url(#clip1_221_1596)\">\n <path\n d=\"M15.9684 13.1139L14.9987 14.0933L14.5152 13.6098L14.2501 13.3446L13.9849 13.6098L13.5001 14.0946L13.0152 13.6098L12.9054 13.4999H12.7501H12.6188H12.3532L12.2651 13.7504C12.0087 14.4788 11.3147 14.9999 10.5001 14.9999C9.46592 14.9999 8.62506 14.1591 8.62506 13.1249C8.62506 12.0908 9.46592 11.2499 10.5001 11.2499C11.3147 11.2499 12.0087 11.7711 12.2651 12.4994L12.3532 12.7499H12.6188H15.5969L15.9684 13.1139ZM9.00006 13.1249C9.00006 13.9508 9.6742 14.6249 10.5001 14.6249C11.3259 14.6249 12.0001 13.9508 12.0001 13.1249C12.0001 12.2991 11.3259 11.6249 10.5001 11.6249C9.6742 11.6249 9.00006 12.2991 9.00006 13.1249Z\"\n fill=\"var(--st-background)\"\n stroke=\"var(--st-background)\"\n strokeWidth=\"0.75\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_221_1596\">\n <rect width=\"18\" height=\"18\" transform=\"translate(3 3)\" />\n </clipPath>\n <clipPath id=\"clip1_221_1596\">\n <rect width=\"8.25\" height=\"6\" transform=\"translate(8.25006 10.1251)\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const HubspotIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#FF7A59\"\n fillRule=\"evenodd\"\n d=\"M13.93 13.97a2.4 2.4 0 0 1-2.43-2.4c0-1.34 1.09-2.42 2.43-2.42a2.4 2.4 0 0 1 2.43 2.41c0 1.33-1.08 2.41-2.43 2.41m.73-7.05V4.78c.56-.26.96-.83.96-1.49v-.05c0-.9-.75-1.64-1.66-1.64h-.05c-.92 0-1.67.74-1.67 1.64v.05c0 .66.4 1.23.96 1.5v2.13q-1.27.21-2.24.98L5 3.32q.07-.21.07-.46C5.08 1.83 4.24 1 3.2 1s-1.88.83-1.88 1.86a1.87 1.87 0 0 0 2.8 1.6l5.85 4.51a4.6 4.6 0 0 0 .07 5.29l-1.77 1.76a1.54 1.54 0 0 0-1.98 1.46 1.54 1.54 0 0 0 3.09 0q-.02-.23-.08-.44l1.76-1.74a4.75 4.75 0 0 0 7.62-3.74 4.7 4.7 0 0 0-4.02-4.64\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const OktaIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#191919\"\n fillRule=\"evenodd\"\n d=\"m10.9 1.13-.37 4.56a5 5 0 0 0-1.19.01l-.2-2.2q0-.12.11-.13h.38l-.18-2.24q.01-.12.11-.13h1.23q.11.01.11.13m-3.09.22q-.04-.1-.15-.08l-1.15.42q-.11.06-.07.16l.94 2.04-.36.13q-.1.06-.06.16l.95 2a4 4 0 0 1 1.12-.42zM5 2.62l2.65 3.73q-.51.33-.9.78l-1.6-1.56a.12.12 0 0 1 .01-.18l.3-.23-1.58-1.6a.12.12 0 0 1 0-.18l.94-.78a.12.12 0 0 1 .17.02M2.77 4.78q-.1-.05-.17.04l-.61 1.06a.12.12 0 0 0 .05.17L4.07 7l-.2.32a.12.12 0 0 0 .06.17l2.02.92q.22-.56.59-1.04zm-1.5 2.88q.03-.11.15-.1l4.42 1.16q-.17.57-.19 1.18l-2.21-.18a.12.12 0 0 1-.1-.14l.06-.37L1.16 9q-.11-.02-.1-.14zm-.16 2.99q-.12.02-.1.14l.2 1.2q.05.12.15.1l2.17-.56.07.37c0 .06.08.1.14.09l2.14-.59q-.19-.56-.22-1.17zm.7 3.17a.12.12 0 0 1 .06-.17L6 11.7q.24.55.62 1.02L4.8 14.01a.12.12 0 0 1-.17-.04l-.19-.33-1.84 1.28q-.1.05-.17-.04zm5.02-.86L3.6 16.21a.12.12 0 0 0 0 .18l.95.79q.1.06.17-.02l1.3-1.84.29.25q.1.07.18-.03l1.26-1.82a5 5 0 0 1-.93-.76m-.64 5.22a.12.12 0 0 1-.07-.16l1.91-4.15q.53.27 1.13.39L8.6 16.4a.12.12 0 0 1-.16.07l-.35-.12-.6 2.16q-.04.1-.15.08zm3.28-3.87-.37 4.56q0 .12.12.13h1.22q.12-.01.12-.13l-.18-2.23h.37q.12-.02.12-.14l-.2-2.2a4 4 0 0 1-1.2.01M13.9 1.97a.12.12 0 0 0-.07-.17l-1.15-.41q-.12-.03-.16.08l-.6 2.16-.35-.13q-.1-.02-.15.08l-.56 2.15q.6.12 1.12.39zm2.5 1.81-3.21 3.26a4 4 0 0 0-.93-.76l1.26-1.83a.12.12 0 0 1 .18-.03l.29.25 1.3-1.83a.12.12 0 0 1 .17-.02l.94.79q.09.08.01.17m1.75 2.56q.1-.05.05-.17l-.62-1.05a.12.12 0 0 0-.17-.04l-1.84 1.27-.2-.32q-.06-.1-.16-.04l-1.82 1.29q.38.46.62 1.02zM18.79 8l.2 1.2a.12.12 0 0 1-.1.15l-4.55.42a4 4 0 0 0-.23-1.17l2.14-.59q.12-.02.15.1l.06.37 2.17-.57q.12-.03.15.1zm-.2 4.43q.1.01.14-.1l.2-1.2a.12.12 0 0 0-.1-.15l-2.23-.2.06-.37a.12.12 0 0 0-.1-.14l-2.22-.18q-.01.6-.19 1.18l4.43 1.15m-1.19 2.75a.12.12 0 0 1-.17.04l-3.77-2.6q.36-.48.59-1.04l2.02.92q.1.06.05.16l-.19.33 2.03.96q.1.05.05.17zm-5.04-1.54 2.65 3.73q.08.08.17.02l.94-.79a.12.12 0 0 0 0-.17l-1.57-1.6.3-.23q.08-.09 0-.18l-1.59-1.56q-.4.46-.9.78m-.02 5.08q-.12.03-.16-.08l-1.2-4.41q.59-.14 1.1-.43l.96 2.01c.03.06 0 .14-.06.16l-.36.13.94 2.04q.04.1-.07.16z\"\n clipRule=\"evenodd\"\n className={_styles.darkInvert}\n />\n </svg>\n);\n","import { Messages } from '@lingui/core';\nimport { messages as _messages } from '../../../messages/b2b/en.json';\n\nexport const messages = _messages as unknown as Messages;\n","import { useRef, useCallback } from 'react';\nimport useSWR, { useSWRConfig } from 'swr';\nimport { withMiddleware, useStateWithDeps, UNDEFINED, serialize, mergeObjects, getTimestamp, useIsomorphicLayoutEffect } from 'swr/_internal';\n\nconst mutation = ()=>{\n return (key, fetcher, config = {})=>{\n const { mutate } = useSWRConfig();\n const keyRef = useRef(key);\n const fetcherRef = useRef(fetcher);\n const configRef = useRef(config);\n // Ditch all mutation results that happened earlier than this timestamp.\n const ditchMutationsUntilRef = useRef(0);\n const [stateRef, stateDependencies, setState] = useStateWithDeps({\n data: UNDEFINED,\n error: UNDEFINED,\n isMutating: false\n });\n const currentState = stateRef.current;\n const trigger = useCallback(async (arg, opts)=>{\n const [serializedKey, resolvedKey] = serialize(keyRef.current);\n if (!fetcherRef.current) {\n throw new Error('Can’t trigger the mutation: missing fetcher.');\n }\n if (!serializedKey) {\n throw new Error('Can’t trigger the mutation: missing key.');\n }\n // Disable cache population by default.\n const options = mergeObjects(mergeObjects({\n populateCache: false,\n throwOnError: true\n }, configRef.current), opts);\n // Trigger a mutation, and also track the timestamp. Any mutation that happened\n // earlier this timestamp should be ignored.\n const mutationStartedAt = getTimestamp();\n ditchMutationsUntilRef.current = mutationStartedAt;\n setState({\n isMutating: true\n });\n try {\n const data = await mutate(serializedKey, fetcherRef.current(resolvedKey, {\n arg\n }), // We must throw the error here so we can catch and update the states.\n mergeObjects(options, {\n throwOnError: true\n }));\n // If it's reset after the mutation, we don't broadcast any state change.\n if (ditchMutationsUntilRef.current <= mutationStartedAt) {\n setState({\n data,\n isMutating: false,\n error: undefined\n });\n options.onSuccess == null ? void 0 : options.onSuccess(data, serializedKey, options);\n }\n return data;\n } catch (error) {\n // If it's reset after the mutation, we don't broadcast any state change\n // or throw because it's discarded.\n if (ditchMutationsUntilRef.current <= mutationStartedAt) {\n setState({\n error: error,\n isMutating: false\n });\n options.onError == null ? void 0 : options.onError(error, serializedKey, options);\n if (options.throwOnError) {\n throw error;\n }\n }\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n const reset = useCallback(()=>{\n ditchMutationsUntilRef.current = getTimestamp();\n setState({\n data: UNDEFINED,\n error: UNDEFINED,\n isMutating: false\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n useIsomorphicLayoutEffect(()=>{\n keyRef.current = key;\n fetcherRef.current = fetcher;\n configRef.current = config;\n });\n // We don't return `mutate` here as it can be pretty confusing (e.g. people\n // calling `mutate` but they actually mean `trigger`).\n // And also, `mutate` relies on the useSWR hook to exist too.\n return {\n trigger,\n reset,\n get data () {\n stateDependencies.data = true;\n return currentState.data;\n },\n get error () {\n stateDependencies.error = true;\n return currentState.error;\n },\n get isMutating () {\n stateDependencies.isMutating = true;\n return currentState.isMutating;\n }\n };\n };\n};\n/**\n * A hook to define and manually trigger remote mutations like POST, PUT, DELETE and PATCH use cases.\n *\n * @link https://swr.vercel.app/docs/mutation\n * @example\n * ```jsx\n * import useSWRMutation from 'swr/mutation'\n *\n * const {\n * data,\n * error,\n * trigger,\n * reset,\n * isMutating\n * } = useSWRMutation(key, fetcher, options?)\n * ```\n */ var index = withMiddleware(useSWR, mutation);\n\nexport { index as default };\n","import { useEffect, useMemo, useState } from 'react';\nimport useSWRMutation, { MutationFetcher, SWRMutationConfiguration } from 'swr/mutation';\nimport { useConfig, useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from './GlobalContextProvider';\nimport { ErrorType } from './types/ErrorType';\nimport { AppScreens } from './types/AppScreens';\nimport {\n AuthFlowType,\n B2BAuthenticateResponseWithMFA,\n B2BDiscoveryAuthenticateResponse,\n B2BMagicLinksDiscoveryAuthenticateResponse,\n StytchError,\n StytchEvent,\n StytchEventType,\n StytchAPIError,\n StytchProjectConfigurationInput,\n} from '@stytch/core/public';\nimport { StytchB2BExtendedLoginConfig } from '../../types';\nimport { readB2BInternals } from '../../utils/internal';\nimport { B2BOrganizationsGetBySlugResponse } from '@stytch/core/public';\nimport { StytchB2BClient } from '../../b2b/StytchB2BClient';\nimport { Action } from './reducer';\nimport type { ProductId, StytchB2BProduct } from './StytchB2BProduct';\n\ntype RecursiveDotNotation<T> = T extends object\n ? {\n [K in keyof T]: K extends string\n ? T[K] extends (...args: never[]) => unknown\n ? K\n : T[K] extends object\n ? `${K}.${RecursiveDotNotation<T[K]>}`\n : K\n : never;\n }[keyof T]\n : never;\n\ntype ValidStytchMutationKey = `stytch.${RecursiveDotNotation<StytchB2BClient>}`;\n\nconst KeyToStytchEventMap = {\n 'stytch.magicLinks.authenticate': StytchEventType.B2BMagicLinkAuthenticate,\n 'stytch.sso.authenticate': StytchEventType.B2BSSOAuthenticate,\n 'stytch.sso.discoverConnections': StytchEventType.B2BSSODiscoverConnections,\n 'stytch.magicLinks.discovery.authenticate': StytchEventType.B2BMagicLinkDiscoveryAuthenticate,\n 'stytch.discovery.organizations.create': StytchEventType.B2BDiscoveryOrganizationsCreate,\n 'stytch.discovery.intermediateSessions.exchange': StytchEventType.B2BDiscoveryIntermediateSessionExchange,\n 'stytch.magicLinks.email.loginOrSignup': StytchEventType.B2BMagicLinkEmailLoginOrSignup,\n 'stytch.magicLinks.email.discovery.send': StytchEventType.B2BMagicLinkEmailDiscoverySend,\n 'stytch.oauth.authenticate': StytchEventType.B2BOAuthAuthenticate,\n 'stytch.oauth.discovery.authenticate': StytchEventType.B2BOAuthDiscoveryAuthenticate,\n 'stytch.otps.sms.send': StytchEventType.B2BSMSOTPSend,\n 'stytch.otps.sms.authenticate': StytchEventType.B2BSMSOTPAuthenticate,\n 'stytch.totp.create': StytchEventType.B2BTOTPCreate,\n 'stytch.totp.authenticate': StytchEventType.B2BTOTPAuthenticate,\n 'stytch.recoveryCodes.recover': StytchEventType.B2BRecoveryCodesRecover,\n 'stytch.impersonation.authenticate': StytchEventType.B2BImpersonationAuthenticate,\n 'stytch.otps.email.authenticate': StytchEventType.B2BOTPsEmailAuthenticate,\n 'stytch.otps.email.discovery.authenticate': StytchEventType.B2BOTPsEmailDiscoveryAuthenticate,\n 'stytch.otps.email.discovery.send': StytchEventType.B2BOTPsEmailDiscoverySend,\n 'stytch.otps.email.loginOrSignup': StytchEventType.B2BOTPsEmailLoginOrSignup,\n 'stytch.organization.getBySlug': StytchEventType.B2BOrganizationsGetBySlug,\n} satisfies Partial<Record<ValidStytchMutationKey, StytchEventType>>;\n\ntype StytchExternalMutationKey = keyof typeof KeyToStytchEventMap;\n\ntype StytchInternalMutationKey = `internal.${string}`;\n\nexport type StytchMutationKey = StytchExternalMutationKey | StytchInternalMutationKey;\n\nexport function getStytchEventByKey(key: StytchMutationKey): StytchEventType | undefined {\n return KeyToStytchEventMap[key as StytchExternalMutationKey];\n}\n\nexport const useMutate = <TData, TError, TKey extends StytchMutationKey, TExtraArg = never>(\n key: TKey,\n fetcher: MutationFetcher<TData, TExtraArg, TKey>,\n options: SWRMutationConfiguration<TData, TError, TExtraArg, TKey> = {},\n) => {\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const result = useSWRMutation<TData, TError, TKey, TExtraArg>(key, fetcher, {\n throwOnError: false,\n ...options,\n onSuccess: (data, key, config) => {\n const eventType = getStytchEventByKey(key as StytchMutationKey);\n if (eventType) {\n onEvent({ type: eventType, data } as StytchEvent<StytchProjectConfigurationInput>);\n }\n\n options.onSuccess?.(data, key, config);\n },\n onError: (error, key, config) => {\n onError(error as StytchError);\n\n options.onError?.(error, key, config);\n },\n });\n\n // Hide the error while mutating. This helps avoid the errors continuing to show after the user has clicked submit\n // and also ensures repeating errors causes <ErrorText> to re-render which is important for screenreaders to\n // re-announce them\n return result.isMutating ? { ...result, error: undefined } : result;\n};\n\n/**\n *\n * This hook triggers a request to retrieve the organization from the slug.\n * The hook only triggers the request if the SDK is being used in an organization flow,\n * and a slug pattern is present. The hook returns an isSearching boolean that can be used\n * to display a loading state while the search is in progress.\n */\nexport const useExtractSlug = () => {\n const [state, dispatch] = useGlobalReducer();\n const [pattern, setPattern] = useState<string | null | undefined>();\n const config = useConfig();\n\n const stytchClient = useStytch();\n const slug = config.organizationSlug ?? extractFromPattern(pattern || null, window.location.href);\n\n const { trigger, isMutating: isSearching } = useMutate<\n B2BOrganizationsGetBySlugResponse,\n StytchAPIError,\n StytchExternalMutationKey,\n { slug: string }\n >(\n 'stytch.organization.getBySlug',\n (_: string, { arg: { slug } }: { arg: { slug: string } }) =>\n stytchClient.organization.getBySlug({ organization_slug: slug }),\n {\n onSuccess: ({ organization }) => {\n if (organization === null) {\n dispatch({\n type: 'set_error_message_and_transition',\n errorType: ErrorType.Organization,\n canGoBack: false,\n });\n } else {\n dispatch({\n type: 'set_organization',\n organization: {\n ...organization,\n },\n });\n }\n },\n },\n );\n\n useEffect(() => {\n readB2BInternals(stytchClient)\n .bootstrap.getAsync()\n .then(({ slugPattern }) => {\n setPattern(slugPattern);\n });\n }, [stytchClient]);\n\n useEffect(() => {\n if (\n slug !== null &&\n state.flowState.organization === null &&\n state.screen === AppScreens.Main &&\n state.flowState.type == AuthFlowType.Organization\n ) {\n trigger({ slug });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, [slug, state.flowState, state.screen]);\n\n // The org is pending identification if the slug pattern has not yet been\n // determined (i.e., `undefined`) or the organization request is in progress\n const resultPending = pattern === undefined || isSearching;\n\n return { slug, resultPending };\n};\n\nexport const useBootstrap = () => {\n const stytchClient = useStytch();\n const [bootstrap, setBootstrap] = useState(readB2BInternals(stytchClient).bootstrap.getSync());\n\n useEffect(() => {\n readB2BInternals(stytchClient)\n .bootstrap.getAsync()\n .then((data) => {\n setBootstrap(data);\n });\n }, [stytchClient]);\n\n return bootstrap;\n};\n\nexport const onAuthenticateSuccess = (\n data: B2BAuthenticateResponseWithMFA<StytchProjectConfigurationInput>,\n dispatch: React.Dispatch<Action>,\n config: StytchB2BExtendedLoginConfig,\n) => {\n dispatch({\n type: 'primary_authenticate_success',\n response: data,\n includedMfaMethods: config.mfaProductInclude,\n });\n};\n\nexport const onDiscoveryAuthenticateSuccess = (\n data: B2BDiscoveryAuthenticateResponse | B2BMagicLinksDiscoveryAuthenticateResponse,\n dispatch: React.Dispatch<Action>,\n) => {\n dispatch({\n type: 'set_discovery_state',\n email: data.email_address,\n discoveredOrganizations: data.discovered_organizations,\n });\n};\n\nexport const extractFromPattern = (pattern: string | null, href: string): string | null => {\n if (pattern === null) return null;\n\n const url = new URL(href);\n url.search = '';\n\n const currentUrl = url.toString().trim();\n const regexPattern = pattern.replace(/\\./g, '\\\\.').replace(/\\*/g, '(?:[^.]+)').replace('{{slug}}', '(.+)');\n\n const regex = new RegExp(regexPattern);\n const match = currentUrl.match(regex);\n\n if (match && match[1]) {\n return match?.[1];\n }\n\n return null;\n};\n\nexport function hasProduct(products: StytchB2BProduct[], product: ProductId) {\n return products.some((p) => p.id === product);\n}\n\nexport function useProductComponents<Type extends 'screens' | 'mainScreen' | 'ssoAndOAuthButtons'>(\n { products, organizationProducts }: { products: StytchB2BProduct[]; organizationProducts: StytchB2BProduct[] },\n screenType: Type,\n) {\n return useMemo(() => {\n const map = {} as Required<StytchB2BProduct[Type]>;\n for (const product of [...products, ...organizationProducts]) {\n if (product[screenType]) Object.assign(map, product[screenType]);\n }\n return map;\n }, [products, organizationProducts, screenType]);\n}\n","import { AuthFlowType } from '@stytch/core/public';\nimport { FlowState } from './types/AppState';\nimport { ButtonComponent, MainScreenComponent } from './types/AppScreens';\nimport { StytchB2BProduct } from './StytchB2BProduct';\n\nexport const isButtonsComponent = (component: MainScreenComponent): component is ButtonComponent =>\n component === MainScreenComponent.OAuthButtons || component === MainScreenComponent.SSOButtons;\n\n/*\n Here we are generating the ordering and which components will be displayed.\n We use the MainScreenComponent enum this because there is some complex logic here, and\n we want to be able to unit test.\n\n Rules we want to follow when generating the components:\n 1. If we're displaying both an email-based method (email magic links and/or email OTPs) and passwords,\n we need to display them together as a single wrapped component. The index of this wrapped component is\n equivalent to the first index of either email-based method or passwords in the config products list.\n 2. If we have both buttons and input, we want to display a divider between the last 2 elements.\n 3. Some components have both a discovery and a non-discovery version. We want to display the correct version\n based on the flow type (found in state).\n 4. We want to display the components in the order that they are listed in the config.\n\n This function should be considered the source of truth for which components to render\n and what order to render them in as of 6/21/23.\n*/\nexport const generateProductComponentsOrdering = (\n products: StytchB2BProduct[],\n flowState: FlowState,\n): MainScreenComponent[][] => {\n const flowStateType = flowState.type;\n const productsSet = new Set(products.map((p) => p.id));\n const displayEmailAndPasswordsTogether =\n (productsSet.has('emailMagicLinks') || productsSet.has('emailOtp')) && productsSet.has('passwords');\n const emailPasswordCombinedComponent =\n flowStateType === AuthFlowType.Organization\n ? MainScreenComponent.PasswordEmailCombined\n : MainScreenComponent.PasswordEmailCombinedDiscovery;\n\n const productComponentsSet = products.reduce((components, product) => {\n switch (product.id) {\n case 'emailMagicLinks':\n case 'emailOtp':\n if (displayEmailAndPasswordsTogether) {\n components.add(emailPasswordCombinedComponent);\n } else {\n components.add(\n flowStateType === AuthFlowType.Organization\n ? MainScreenComponent.EmailForm\n : MainScreenComponent.EmailDiscoveryForm,\n );\n }\n break;\n case 'oauth':\n components.add(MainScreenComponent.OAuthButtons);\n break;\n case 'sso': {\n const isSsoValid =\n flowStateType === AuthFlowType.Discovery ||\n (flowStateType === AuthFlowType.Organization &&\n (flowState.organization?.sso_active_connections?.length ?? 0) > 0);\n if (isSsoValid) {\n components.add(MainScreenComponent.SSOButtons);\n }\n break;\n }\n case 'passwords':\n components.add(\n displayEmailAndPasswordsTogether ? emailPasswordCombinedComponent : MainScreenComponent.PasswordsEmailForm,\n );\n break;\n }\n return components;\n }, new Set<MainScreenComponent>());\n\n return Array.from(productComponentsSet).reduce<MainScreenComponent[][]>((groups, component, i, arr) => {\n const prevComponent = i > 0 ? arr[i - 1] : undefined;\n\n // Group consecutive components with buttons\n const shouldJoinPreviousGroup = prevComponent && isButtonsComponent(component) && isButtonsComponent(prevComponent);\n\n if (shouldJoinPreviousGroup) {\n groups[groups.length - 1].push(component);\n } else {\n // If the previous group was a different type than this group, prepend a divider\n const prevGroup = groups.length > 0 ? groups[groups.length - 1] : undefined;\n if (prevGroup && isButtonsComponent(prevGroup[0]) !== isButtonsComponent(component)) {\n groups.push([MainScreenComponent.Divider]);\n }\n\n groups.push([component]);\n }\n return groups;\n }, []);\n};\n","import { B2BOAuthProviderConfig, B2BOAuthProviders } from '@stytch/core/public';\n\nexport const getParamsFromB2BOAuthProviderConfig = (provider: B2BOAuthProviderConfig) => {\n let providerType: B2BOAuthProviders;\n let oneTap = false;\n let customScopes: string[] = [];\n let providerParams: Record<string, string> = {};\n let cancelOnTapOutside: boolean | undefined = undefined;\n if (typeof provider === 'string') {\n providerType = provider;\n } else {\n providerType = provider.type;\n if (provider.type === B2BOAuthProviders.Google && provider.one_tap) {\n oneTap = provider.one_tap;\n cancelOnTapOutside = provider.cancel_on_tap_outside;\n }\n customScopes = provider.customScopes || [];\n providerParams = provider.providerParams || {};\n }\n return {\n type: providerType,\n one_tap: oneTap,\n customScopes,\n providerParams,\n cancel_on_tap_outside: cancelOnTapOutside,\n };\n};\n","import { B2BOAuthProviderConfig, B2BOAuthProviders } from '@stytch/core/public';\nimport { useMemo } from 'react';\nimport { isTruthy } from '../../../utils/isTruthy';\nimport { getParamsFromB2BOAuthProviderConfig } from '../../../utils/oauthProviderType';\nimport { useConfig, useGlobalReducer } from '../GlobalContextProvider';\nimport { ProductId, StytchB2BProduct } from '../StytchB2BProduct';\n\nexport type OauthProviderParams = {\n type: B2BOAuthProviders;\n one_tap: boolean;\n customScopes: string[];\n providerParams: Record<string, string>;\n cancel_on_tap_outside: boolean | undefined;\n};\n\n// Note that the order of products here is used when displaying fallback auth\n// methods below\nconst productsToAuthMethods: Record<ProductId, string | undefined> = {\n oauth: undefined, // OAuth methods are defined per-provider\n sso: 'sso',\n emailMagicLinks: 'magic_link',\n emailOtp: 'email_otp',\n passwords: 'password',\n};\n\nconst oauthProvidersToAuthMethods: Record<B2BOAuthProviders, string> = {\n [B2BOAuthProviders.Google]: 'google_oauth',\n [B2BOAuthProviders.Microsoft]: 'microsoft_oauth',\n [B2BOAuthProviders.HubSpot]: 'hubspot_oauth',\n [B2BOAuthProviders.Slack]: 'slack_oauth',\n [B2BOAuthProviders.GitHub]: 'github_oauth',\n};\n\nconst authMethodsToProducts: Record<string, ProductId> = Object.fromEntries(\n Object.entries(productsToAuthMethods).map(([product, authMethod]) => [authMethod, product]),\n);\n\nconst oauthMethodsToOauthProviders: Record<string, B2BOAuthProviders> = Object.fromEntries(\n Object.entries(oauthProvidersToAuthMethods).map(([provider, method]) => [\n method,\n provider as keyof typeof oauthProvidersToAuthMethods,\n ]),\n);\n\nconst authMethodToProduct = (authMethod: string): ProductId | undefined => {\n if (authMethod in oauthMethodsToOauthProviders) {\n return 'oauth';\n }\n return authMethodsToProducts[authMethod];\n};\n\nconst allOauthProviders = Object.values(B2BOAuthProviders);\n\nconst flattenConfigToAuthMethods = (products: StytchB2BProduct[], oauthProviders: B2BOAuthProviderConfig[]) =>\n products\n .flatMap((product) => {\n if (product.id === 'oauth') {\n return oauthProviders.map((provider) => {\n const authMethod = oauthProvidersToAuthMethods[typeof provider === 'string' ? provider : provider.type];\n if (authMethod) {\n return authMethod;\n }\n });\n } else {\n const authMethod = productsToAuthMethods[product.id];\n if (authMethod) {\n return authMethod;\n }\n }\n })\n .filter(isTruthy);\n\nconst useOAuthProviderConfigs = () => {\n const config = useConfig();\n return useMemo(() => {\n if (!config.oauthOptions?.providers) {\n return [];\n }\n\n return config.oauthOptions.providers.map(getParamsFromB2BOAuthProviderConfig);\n }, [config.oauthOptions?.providers]);\n};\n\nconst useRestrictedAuthMethods = () => {\n const [state] = useGlobalReducer();\n\n const { primaryAuthMethods } = state.primary;\n const hasPrimaryAuthMethods = !!primaryAuthMethods;\n\n const restrictedAuthMethods = useMemo(() => {\n if (state.primary.primaryAuthMethods) {\n return new Set(state.primary.primaryAuthMethods);\n }\n\n if (state.flowState.organization?.auth_methods === 'RESTRICTED') {\n return new Set(state.flowState.organization?.allowed_auth_methods ?? []);\n }\n }, [\n state.flowState.organization?.allowed_auth_methods,\n state.flowState.organization?.auth_methods,\n state.primary.primaryAuthMethods,\n ]);\n\n return { restrictedAuthMethods, hasPrimaryAuthMethods };\n};\n\nexport const useEffectiveAuthConfig = () => {\n const [state] = useGlobalReducer();\n const config = useConfig();\n\n const { restrictedAuthMethods, hasPrimaryAuthMethods } = useRestrictedAuthMethods();\n\n const oauthProviderConfigs = useOAuthProviderConfigs();\n\n const flattenedConfiguredAuthMethods = useMemo(\n () => flattenConfigToAuthMethods(config.products, oauthProviderConfigs),\n [config.products, oauthProviderConfigs],\n );\n\n const authMethodsToShow = useMemo(() => {\n // If there are no restrictions, use the auth methods from the UI config as-is\n if (!restrictedAuthMethods) {\n return flattenedConfiguredAuthMethods;\n }\n\n // If there are restrictions, filter the auth methods from the UI config\n const restrictedAuthMethodsInUiConfig = flattenedConfiguredAuthMethods.filter((authMethod) =>\n restrictedAuthMethods.has(authMethod),\n );\n\n // Use the filtered methods unless there are none _and_ the restrictions\n // come from `primary_required` (not just org-level restrictions)\n if (restrictedAuthMethodsInUiConfig.length > 0 || !hasPrimaryAuthMethods) {\n return restrictedAuthMethodsInUiConfig;\n }\n\n // If the org restricts allowed auth methods, show all of the methods\n // included in `primary_required`\n if (state.flowState.organization?.auth_methods === 'RESTRICTED') {\n return flattenConfigToAuthMethods(config.organizationProducts, allOauthProviders).filter((authMethod) =>\n restrictedAuthMethods.has(authMethod),\n );\n }\n\n // If the org doesn't have any auth method restrictions, default to email\n // magic links\n return ['magic_link'];\n }, [\n config.organizationProducts,\n flattenedConfiguredAuthMethods,\n hasPrimaryAuthMethods,\n restrictedAuthMethods,\n state.flowState.organization?.auth_methods,\n ]);\n\n const products = useMemo(() => {\n const productIds = [...new Set(authMethodsToShow.map(authMethodToProduct).filter(isTruthy))];\n return productIds.map((productId) => config.organizationProducts.find((p) => p.id === productId)).filter(isTruthy);\n }, [authMethodsToShow, config.organizationProducts]);\n\n const oauthProviderSettings = useMemo<OauthProviderParams[]>(\n () =>\n authMethodsToShow\n .map((authMethod) => {\n const provider = oauthMethodsToOauthProviders[authMethod];\n if (provider) {\n return (\n oauthProviderConfigs.find((oauthProvider) => oauthProvider.type === provider) ??\n getParamsFromB2BOAuthProviderConfig(provider)\n );\n }\n })\n .filter(isTruthy),\n [authMethodsToShow, oauthProviderConfigs],\n );\n\n return { products, oauthProviderSettings };\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { usePresentation } from '../../components/PresentationConfig';\nimport { useConfig, useGlobalReducer } from '../GlobalContextProvider';\nimport Divider from '../../components/molecules/Divider';\nimport { LoadingScreen } from '../../components/molecules/Loading';\nimport { AuthFlowType } from '@stytch/core/public';\nimport { generateProductComponentsOrdering, isButtonsComponent } from '../generateProductComponentsOrdering';\nimport { useEffectiveAuthConfig } from '../hooks/useEffectiveAuthConfig';\nimport { useProductComponents } from '../utils';\nimport Typography from '../../components/atoms/Typography';\nimport Column from '../../components/atoms/Column';\nimport { ButtonComponent, MainScreenComponent } from '../types/AppScreens';\n\nfunction isButtonGroup(group: MainScreenComponent[]): group is ButtonComponent[] {\n return group.every(isButtonsComponent);\n}\n\nexport const MainScreen = () => {\n const { options } = usePresentation();\n const [state] = useGlobalReducer();\n const { t } = useLingui();\n\n const { primaryAuthMethods, email, emailVerified } = state.primary;\n\n const config = useConfig();\n const { products } = useEffectiveAuthConfig();\n\n const isLoading = state.flowState.type === AuthFlowType.Organization && !state.flowState.organization;\n\n // Generate ordering and types of product components\n const productComponentsOrdering = generateProductComponentsOrdering(products, state.flowState);\n const mainScreenComponents = useProductComponents(config, 'mainScreen')!;\n const { SsoAndOAuthButtons } = useProductComponents(config, 'ssoAndOAuthButtons')!;\n\n const organizationName = state.flowState.organization?.organization_name;\n let title: string;\n switch (state.flowState.type) {\n case AuthFlowType.Discovery:\n title = t({ id: 'login.title', message: 'Sign up or log in' });\n break;\n case AuthFlowType.PasswordReset:\n title = '';\n break;\n default:\n title = organizationName\n ? t({\n id: 'organizationLogin.title',\n message: `Continue to ${organizationName}`,\n })\n : t({\n id: 'organizationLogin.titleUnknown',\n message: 'Continue to ...',\n comment: 'Used instead of organizationLogin.title when the organization name is not available',\n });\n break;\n }\n\n // Show a targeted message if the member has an unverified email address and\n // additional primary auth is required\n const showVerifyEmailCopy = email && emailVerified === false && primaryAuthMethods;\n\n if (isLoading) {\n return <LoadingScreen />;\n }\n\n return (\n <Column gap={6}>\n {!options.hideHeaderText &&\n (showVerifyEmailCopy ? (\n <>\n <Typography variant=\"header\">\n {t({ id: 'emailVerification.title', message: 'Verify your email' })}\n </Typography>\n\n <Typography>\n {t({\n id: 'emailVerification.content',\n message: 'Confirm your email address with one of the following:',\n })}\n </Typography>\n </>\n ) : (\n title && (\n <Typography variant=\"header\" align=\"center\">\n {title}\n </Typography>\n )\n ))}\n\n <Column gap={4}>\n {productComponentsOrdering.map((group) =>\n isButtonGroup(group) ? (\n <SsoAndOAuthButtons key=\"buttons\" buttons={group} />\n ) : (\n group.map((component, index) => {\n const Component = mainScreenComponents[component];\n if (Component) {\n return <Component key={component} />;\n }\n if (component === MainScreenComponent.Divider) {\n return <Divider key={'divider' + index} />;\n }\n return null;\n })\n ),\n )}\n </Column>\n </Column>\n );\n};\n","import { StytchEventType } from '@stytch/core/public';\nimport * as React from 'react';\nimport { Confirmation } from '../../components/molecules/Confirmation';\nimport { useMountEffect } from '../../hooks/useMountEffect';\nimport { useEventCallback } from '../GlobalContextProvider';\n\nexport const ConfirmationScreen = () => {\n const onEvent = useEventCallback();\n useMountEffect(() => {\n onEvent({ type: StytchEventType.AuthenticateFlowComplete, data: {} });\n });\n\n return <Confirmation />;\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { Organization } from '@stytch/core/public';\n\nimport { Badge } from '../../components/molecules/Badge';\nimport { buttonClassNames } from '../../components/atoms/Button';\nimport VerticalTransition, { hoverTriggerClass } from '../../components/atoms/VerticalTransition';\nimport styles from './OrganizationRow.module.css';\n\nexport type OrganizationRowProps = {\n organization: Organization;\n action?: string;\n onClick: () => void;\n};\n\nconst Arrow = () => (\n <svg\n className={styles.arrow}\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M14.707 10L10.3535 14.3545L9.64648 13.6475L12.793 10.5H6V9.5H12.793L9.64648 6.35352L10.3535 5.64648L14.707 10Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst OrganizationRow = ({ organization, action, onClick }: OrganizationRowProps) => {\n const { organization_name, organization_logo_url } = organization;\n\n const logo = organization_logo_url ? (\n <img className={styles.logo} src={organization_logo_url} alt=\"\" />\n ) : (\n <div className={styles.logo} role=\"presentation\">\n {\n // The Array.from() accounts for two byte Unicode characters\n Array.from(organization_name)[0]\n }\n </div>\n );\n\n return (\n <button\n className={classNames(\n styles.organizationRow,\n hoverTriggerClass,\n buttonClassNames({\n variant: 'outline',\n // Not a block even though it looks like it to avoid the inheriting the centering style\n }),\n )}\n onClick={onClick}\n >\n <div className={styles.left}>\n {logo}\n <div className={styles.nameText}>{organization_name}</div>\n </div>\n\n <VerticalTransition\n trigger=\"hover\"\n rootClassName={styles.right}\n className={styles.rightContent}\n primary={action && <Badge>{action}</Badge>}\n secondary={<Arrow />}\n />\n </button>\n );\n};\n\nexport default OrganizationRow;\n","import React, { useCallback, useEffect } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { useStytch, useGlobalReducer, useConfig } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { ErrorType } from '../types/ErrorType';\nimport { useBootstrap, useMutate, onAuthenticateSuccess, StytchMutationKey } from '../utils';\n\nimport {\n B2BDiscoveryIntermediateSessionsExchangeResponse,\n B2BDiscoveryOrganizationsCreateResponse,\n DirectLoginForSingleMembershipConfig,\n DiscoveredOrganization,\n StytchAPIError,\n StytchProjectConfigurationInput,\n} from '@stytch/core/public';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport { LoadingScreen, LoggingInScreen } from '../../components/molecules/Loading';\nimport Button from '../../components/atoms/Button';\nimport OrganizationRow from '../components/OrganizationRow';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\n\nconst isJoinViaJitType = (type: DiscoveredOrganization['membership']['type']) =>\n type === 'eligible_to_join_by_email_domain' || type === 'eligible_to_join_by_oauth_tenant';\n\nconst DiscoverNoOrganizations = () => {\n const [state, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const config = useConfig();\n const { createOrganizationEnabled } = useBootstrap();\n const { t } = useLingui();\n const goBack = () => dispatch({ type: 'transition', screen: AppScreens.Main });\n\n const { trigger: stytchCreateOrganization, isMutating: isCreateLoading } = useMutate<\n B2BDiscoveryOrganizationsCreateResponse<StytchProjectConfigurationInput>,\n StytchAPIError,\n StytchMutationKey\n >(\n 'stytch.discovery.organizations.create',\n () =>\n stytchClient.discovery.organizations.create({\n session_duration_minutes: config.sessionOptions.sessionDurationMinutes,\n }),\n {\n onSuccess: (data: B2BDiscoveryOrganizationsCreateResponse<StytchProjectConfigurationInput>) => {\n onAuthenticateSuccess(data, dispatch, config);\n },\n onError: (error) => {\n dispatch({\n type: 'set_error_message_and_transition',\n errorType:\n error.error_type === 'action_not_allowed_email_domain_is_claimed'\n ? ErrorType.OrganizationDiscoveryClaimedDomain\n : ErrorType.Default,\n canGoBack: true,\n });\n },\n },\n );\n\n const shouldAutomaticallyCreateOrganization =\n createOrganizationEnabled && config.directCreateOrganizationForNoMembership;\n\n useEffect(() => {\n if (shouldAutomaticallyCreateOrganization) {\n stytchCreateOrganization();\n }\n }, [shouldAutomaticallyCreateOrganization, stytchCreateOrganization]);\n\n if (shouldAutomaticallyCreateOrganization || isCreateLoading) {\n return <LoadingScreen />;\n }\n\n const email = state.formState.discoveryState.email;\n\n if (createOrganizationEnabled && !config.disableCreateOrganization) {\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'organizationDiscovery.noOrgs.create.title', message: 'Create an organization to get started' })}\n </Typography>\n\n <Typography variant=\"body\">\n {t({\n id: 'organizationDiscovery.noOrgs.create.content',\n message: `${email} does not have an account. Think this is a mistake? Try a different email address, or contact your admin.`,\n })}\n </Typography>\n\n <ButtonColumn>\n <Button variant=\"primary\" onClick={() => stytchCreateOrganization()}>\n {t({ id: 'button.createAnOrganization', message: 'Create an organization' })}\n </Button>\n <Button variant=\"ghost\" onClick={goBack}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n }\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({\n id: 'organizationDiscovery.noOrgs.title',\n message: `${email} does not belong to any organizations.`,\n })}\n </Typography>\n <Typography variant=\"body\">\n {t({\n id: 'organizationDiscovery.noOrgs.content',\n message: 'Make sure your email address is correct. Otherwise, you might need to be invited by your admin.',\n })}\n </Typography>\n <Button variant=\"outline\" onClick={goBack}>\n {t({ id: 'button.tryDifferentEmailAddress', message: 'Try a different email address' })}\n </Button>\n </Column>\n );\n};\n\nconst shouldAllowDirectLoginToOrganization = (\n organizations: DiscoveredOrganization[],\n config?: DirectLoginForSingleMembershipConfig,\n): DiscoveredOrganization | null => {\n // If direct login is not enabled, return false\n if (!config?.status) {\n return null;\n }\n\n // Count active memberships\n const activeOrganizations = organizations.filter((org) => org.membership.type === 'active_member');\n\n // Check for pending invites or JIT provisioning, depending on config\n const hasBlockingConditions = organizations.some(\n (org) =>\n ((org.membership.type === 'pending_member' || org.membership.type === 'invited_member') &&\n !config.ignoreInvites) ||\n (isJoinViaJitType(org.membership.type) && !config.ignoreJitProvisioning),\n );\n\n // Allow direct login if there is exactly one active membership and no blocking conditions\n return activeOrganizations.length === 1 && !hasBlockingConditions ? activeOrganizations[0] : null;\n};\n\nexport const Discovery = () => {\n const [state, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const config = useConfig();\n const { t } = useLingui();\n const shouldDirectLoginConfigEnabled = !!config.directLoginForSingleMembership?.status;\n const { createOrganizationEnabled } = useBootstrap();\n\n useEffect(() => {\n if (isExchangeInProgress) {\n // If there is already an exchange in progress, don't do anything\n return;\n }\n\n const directLoginOrganization = shouldAllowDirectLoginToOrganization(\n state.formState.discoveryState.discoveredOrganizations,\n config.directLoginForSingleMembership,\n );\n\n if (shouldDirectLoginConfigEnabled && directLoginOrganization !== null) {\n handleDiscoveryOrganizationStart(directLoginOrganization);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, [\n shouldDirectLoginConfigEnabled,\n state.formState.discoveryState.discoveredOrganizations,\n config.directLoginForSingleMembership,\n ]);\n\n const handleDiscoveryOrganizationStart = (discoveredOrganization: DiscoveredOrganization) => {\n const organization = discoveredOrganization.organization;\n\n if (discoveredOrganization.primary_required) {\n const allowedAuthMethods = discoveredOrganization.primary_required.allowed_auth_methods;\n if (\n allowedAuthMethods &&\n allowedAuthMethods.length === 1 &&\n allowedAuthMethods[0] === 'sso' &&\n organization.sso_default_connection_id\n ) {\n startSso(organization.sso_default_connection_id);\n } else {\n dispatch({\n type: 'select_discovered_organization',\n discoveredOrganization,\n });\n }\n } else {\n stytchDiscoveryExchange({ organizationId: organization.organization_id });\n }\n };\n\n const startSso = useCallback(\n (connectionId: string) => {\n stytchClient.sso.start({\n connection_id: connectionId,\n login_redirect_url: config.ssoOptions?.loginRedirectURL,\n signup_redirect_url: config.ssoOptions?.signupRedirectURL,\n });\n },\n [stytchClient, config.ssoOptions],\n );\n\n const { trigger: stytchDiscoveryExchange, isMutating: isExchangeInProgress } = useMutate<\n B2BDiscoveryIntermediateSessionsExchangeResponse<StytchProjectConfigurationInput>,\n StytchAPIError,\n StytchMutationKey,\n { organizationId: string }\n >(\n `stytch.discovery.intermediateSessions.exchange`,\n (_: string, { arg: { organizationId } }: { arg: { organizationId: string } }) =>\n stytchClient.discovery.intermediateSessions.exchange({\n organization_id: organizationId,\n session_duration_minutes: config.sessionOptions.sessionDurationMinutes,\n }),\n {\n onSuccess: (data: B2BDiscoveryIntermediateSessionsExchangeResponse<StytchProjectConfigurationInput>) => {\n onAuthenticateSuccess(data, dispatch, config);\n },\n onError: (error) => {\n dispatch({\n type: 'set_error_message_and_transition',\n errorType:\n error.error_type === 'action_not_allowed_email_domain_is_claimed'\n ? ErrorType.OrganizationDiscoveryClaimedDomain\n : ErrorType.Default,\n canGoBack: true,\n });\n },\n },\n );\n\n const { trigger: stytchCreateOrganization, isMutating: isCreateLoading } = useMutate<\n B2BDiscoveryOrganizationsCreateResponse<StytchProjectConfigurationInput>,\n StytchAPIError,\n StytchMutationKey\n >(\n 'stytch.discovery.organizations.create',\n () =>\n stytchClient.discovery.organizations.create({\n session_duration_minutes: config.sessionOptions.sessionDurationMinutes,\n }),\n {\n onSuccess: (data: B2BDiscoveryOrganizationsCreateResponse<StytchProjectConfigurationInput>) => {\n onAuthenticateSuccess(data, dispatch, config);\n },\n onError: (error) => {\n dispatch({\n type: 'set_error_message_and_transition',\n errorType:\n error.error_type === 'action_not_allowed_email_domain_is_claimed'\n ? ErrorType.OrganizationDiscoveryClaimedDomain\n : ErrorType.Default,\n canGoBack: true,\n });\n },\n },\n );\n\n if (isExchangeInProgress) {\n return <LoggingInScreen />;\n }\n\n if (isCreateLoading) {\n return <LoadingScreen />;\n }\n\n if (state.formState.discoveryState.discoveredOrganizations.length === 0) {\n return <DiscoverNoOrganizations />;\n }\n\n const organizationButtons = state.formState.discoveryState.discoveredOrganizations.map((discoveredOrganization) => {\n const { organization, membership } = discoveredOrganization;\n\n let action: string | undefined;\n if (isJoinViaJitType(membership.type) || membership.type === 'pending_member')\n action = t({ id: 'organizationDiscovery.join', message: 'Join' });\n else if (membership.type === 'invited_member')\n action = t({ id: 'organizationDiscovery.acceptInvite', message: 'Accept Invite' });\n\n return (\n <OrganizationRow\n organization={organization}\n action={action}\n onClick={() => handleDiscoveryOrganizationStart(discoveredOrganization)}\n ></OrganizationRow>\n );\n });\n\n const createOrganizationButton =\n createOrganizationEnabled && !config.disableCreateOrganization ? (\n <Button variant=\"outline\" onClick={() => stytchCreateOrganization()}>\n {t({ id: 'button.createAnOrganization', message: 'Create an organization' })}\n </Button>\n ) : null;\n\n const goBackButton = (\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n );\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'organizationDiscovery.title', message: 'Select an organization to continue' })}\n </Typography>\n\n {createOrganizationButton ? (\n // Display with divider if the Create Organization Button can be shown,\n // otherwise just show everything together\n <ButtonColumn\n top={organizationButtons}\n bottom={\n <>\n {createOrganizationButton}\n {goBackButton}\n </>\n }\n />\n ) : (\n <Column gap={4}>\n <ButtonColumn>{organizationButtons}</ButtonColumn>\n {goBackButton}\n </Column>\n )}\n </Column>\n );\n};\n","import { StringLiteralFromEnum } from '@stytch/core';\nimport { B2BMFAProducts } from '@stytch/core/public';\nimport React, { useMemo } from 'react';\nimport { MessageDescriptor } from '@lingui/core';\nimport { useLingui } from '@lingui/react/macro';\nimport { msg } from '@lingui/core/macro';\nimport Column from '../../components/atoms/Column';\nimport Button from '../../components/atoms/Button';\nimport Typography from '../../components/atoms/Typography';\nimport { useConfig, useGlobalReducer } from '../GlobalContextProvider';\nimport { getEnabledMethods } from '../getEnabledMethods';\nimport { B2B_MFA_METHODS } from '../reducer/mfa';\nimport { AppScreens } from '../types/AppScreens';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\n\nconst mfaOptions: Record<\n StringLiteralFromEnum<B2BMFAProducts>,\n {\n messageDescriptor: MessageDescriptor;\n screen: AppScreens;\n }\n> = {\n [B2BMFAProducts.totp]: {\n messageDescriptor: msg({ id: 'mfa.enrollment.option.totp', message: 'Use an authenticator app' }),\n screen: AppScreens.TOTPEnrollmentQRCode,\n },\n [B2BMFAProducts.smsOtp]: {\n messageDescriptor: msg({ id: 'mfa.enrollment.option.sms', message: 'Text me a code' }),\n screen: AppScreens.SMSOTPEnrollment,\n },\n};\n\nexport const MFAEnrollmentSelectionScreen = () => {\n const { t } = useLingui();\n const { mfaProductInclude, mfaProductOrder } = useConfig();\n\n const [state, dispatch] = useGlobalReducer();\n\n // This screen should only be shown if primary info is available\n const { organizationMfaOptionsSupported } = state.mfa.primaryInfo!;\n\n const handleNavigate = (screen: AppScreens) => {\n dispatch({\n type: 'transition',\n screen,\n history: 'push',\n });\n };\n\n const displayOptions = useMemo(() => {\n const optionsToDisplay = getEnabledMethods({\n allMethods: B2B_MFA_METHODS,\n orgSupportedMethods: organizationMfaOptionsSupported,\n uiIncludedMethods: mfaProductInclude,\n });\n\n const result: StringLiteralFromEnum<B2BMFAProducts>[] = [];\n for (const option of mfaProductOrder ?? B2B_MFA_METHODS) {\n if (optionsToDisplay.has(option)) {\n result.push(option);\n optionsToDisplay.delete(option);\n }\n }\n\n result.push(...optionsToDisplay);\n return result;\n }, [mfaProductInclude, mfaProductOrder, organizationMfaOptionsSupported]);\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'mfa.enrollment.title', message: 'Set up Multi-Factor Authentication' })}\n </Typography>\n\n <Typography variant=\"body\">\n {t({\n id: 'mfa.enrollment.content',\n message: 'Your organization requires an additional form of verification to make your account more secure.',\n })}\n </Typography>\n\n <ButtonColumn>\n {displayOptions.map((option) => {\n const { messageDescriptor, screen } = mfaOptions[option];\n return (\n <Button key={option} variant=\"outline\" onClick={() => handleNavigate(screen)}>\n {t(messageDescriptor)}\n </Button>\n );\n })}\n </ButtonColumn>\n </Column>\n );\n};\n","import { B2BSMSSendResponse, StytchAPIError, StytchSDKError } from '@stytch/core/public';\nimport React, { FormEvent } from 'react';\nimport { COUNTRIES_LIST, CountryCode } from '@stytch/core';\nimport { readB2BInternals } from '../../../utils/internal';\nimport Column from '../../components/atoms/Column';\nimport PhoneInput, { getPhoneNumberProps } from '../../components/molecules/PhoneInput';\nimport Button from '../../components/atoms/Button';\nimport Typography from '../../components/atoms/Typography';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { StytchMutationKey, useMutate } from '../utils';\nimport { formatNumberToIncludeCountryCode } from '../../../utils/handleParsePhoneNumber';\nimport { useLingui } from '@lingui/react/macro';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { canGoBack } from '../reducer/navigation';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\n\n// eslint-disable-next-line lingui/no-unlocalized-strings\nconst DEFAULT_COUNTRY_CODE = 'US' satisfies CountryCode;\n\n/**\n * Thrown when the user provides a phone number that cannot be parsed.\n */\nclass InvalidPhoneNumberError extends StytchSDKError {\n constructor() {\n // eslint-disable-next-line lingui/no-unlocalized-strings\n super('InvalidPhoneNumberError', 'Invalid phone number');\n }\n}\n\nexport const SMSOTPEnrollScreen = () => {\n const stytchClient = useStytch();\n const [state, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n const { smsOtpOptions } = useConfig();\n const {\n mfa: {\n smsOtp: { isSending, sendError, enrolledNumber },\n },\n } = state;\n\n // This screen should only be shown if primary info is available\n const { memberId, organizationId } = state.mfa.primaryInfo!;\n\n const [countryCode, setCountryCode] = React.useState<CountryCode>(\n enrolledNumber?.countryCode ?? DEFAULT_COUNTRY_CODE,\n );\n const [phoneNumber, setPhoneNumber] = React.useState(enrolledNumber?.phoneNumber ?? '');\n\n const errorMessage = React.useMemo(() => {\n if (!sendError) return undefined;\n\n if (sendError instanceof InvalidPhoneNumberError) {\n return t({\n id: 'error.invalidPhoneNumber',\n message: 'Phone number format is invalid. Ensure the phone number is in the E.164 format.',\n });\n }\n\n return getTranslatedError(sendError as StytchAPIError, t);\n }, [sendError, t]);\n\n const { parsePhoneNumber, getExampleNumber } = getPhoneNumberProps(readB2BInternals(stytchClient).clientsideServices);\n\n const { trigger: sendSms } = useMutate<\n B2BSMSSendResponse,\n unknown,\n StytchMutationKey,\n { parsedNumber: string; locale?: string }\n >(\n 'stytch.otps.sms.send',\n async (_: string, { arg: { parsedNumber, locale } }: { arg: { parsedNumber: string; locale?: string } }) => {\n return stytchClient.otps.sms.send({\n mfa_phone_number: parsedNumber,\n member_id: memberId,\n organization_id: organizationId,\n locale: locale,\n });\n },\n {\n onSuccess: (response) => {\n dispatch({\n type: 'sms_otp/send_success',\n response,\n countryCode,\n phoneNumber,\n formattedPhoneNumber: `+${COUNTRIES_LIST[countryCode]} ${phoneNumber}`,\n });\n },\n onError: (error) => {\n dispatch({\n type: 'sms_otp/send_error',\n error,\n });\n },\n },\n );\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault();\n\n dispatch({ type: 'sms_otp/send' });\n try {\n // We parse the phone number here (rather than inside `sendSms`) because we\n // don't want validation errors to be surfaced through the global error\n // callback\n\n const parsedNumber = await formatNumberToIncludeCountryCode({\n parsePhoneNumber,\n phoneNumber,\n country: countryCode,\n });\n\n if (!parsedNumber.isValid) {\n throw new InvalidPhoneNumberError();\n }\n\n await sendSms({ parsedNumber: parsedNumber.number, locale: smsOtpOptions?.locale });\n } catch (error) {\n dispatch({\n type: 'sms_otp/send_error',\n error,\n });\n }\n };\n\n return (\n <Column as=\"form\" gap={6} onSubmit={handleSubmit}>\n <Typography variant=\"header\">\n {t({\n id: 'mfa.smsEnrollment.title',\n message: 'Enter your phone number to set up Multi-Factor Authentication',\n })}\n </Typography>\n\n <Typography variant=\"body\">\n {t({\n id: 'mfa.smsEnrollment.content',\n message: 'Your organization requires an additional form of verification to make your account more secure.',\n })}\n </Typography>\n\n <PhoneInput\n country={countryCode}\n setCountry={setCountryCode}\n phone={phoneNumber}\n setPhone={setPhoneNumber}\n parsePhoneNumber={parsePhoneNumber}\n getExampleNumber={getExampleNumber}\n error={errorMessage}\n />\n\n <ButtonColumn>\n <Button variant=\"primary\" loading={isSending} type=\"submit\" disabled={!phoneNumber || isSending}>\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n {canGoBack(state) && (\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'navigate_back' })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n )}\n </ButtonColumn>\n </Column>\n );\n};\n","import React, { useEffect, useMemo } from 'react';\nimport {\n B2BMFAProducts,\n B2BSMSAuthenticateResponse,\n B2BSMSSendResponse,\n StytchAPIError,\n StytchProjectConfigurationInput,\n} from '@stytch/core/public';\nimport Button from '../../components/atoms/Button';\nimport { readB2BInternals } from '../../../utils/internal';\nimport Column from '../../components/atoms/Column';\nimport { LoadingScreen } from '../../components/molecules/Loading';\nimport { SentOTPEntry } from '../../components/organisms/SentOTPEntry';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { StytchMutationKey, useMutate } from '../utils';\nimport { formatNumber } from '../../../utils/handleParsePhoneNumber';\nimport { useLingui } from '@lingui/react/macro';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { AppScreens } from '../types/AppScreens';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport { errorToast } from '../../components/atoms/Toast';\nimport { useCountdown } from '../../components/atoms/Countdown';\nimport { ResendOTPButton } from '../../components/organisms/ResendOTPButton';\n\nexport const SMSOTPEntryScreen = () => {\n const stytchClient = useStytch();\n const {\n sessionOptions: { sessionDurationMinutes },\n smsOtpOptions,\n } = useConfig();\n const { t } = useLingui();\n\n const [state, dispatch] = useGlobalReducer();\n const {\n mfa: { isEnrolling, smsOtp, primaryInfo },\n } = state;\n\n const { codeExpiration, formattedDestination } = smsOtp;\n\n // This screen should only be shown if primary info is available\n const { enrolledMfaMethods, memberId, memberPhoneNumber, organizationId, organizationMfaOptionsSupported } =\n primaryInfo!;\n\n const resendCountdown = useCountdown();\n\n const {\n trigger: sendSms,\n isMutating: isSending,\n error: sendError,\n } = useMutate<\n B2BSMSSendResponse,\n unknown,\n StytchMutationKey,\n { memberId: string; organizationId: string; locale?: string }\n >(\n 'stytch.otps.sms.send',\n (\n _: string,\n {\n arg: { memberId, organizationId, locale },\n }: { arg: { memberId: string; organizationId: string; locale?: string } },\n ) => {\n dispatch({ type: 'sms_otp/send' });\n return stytchClient.otps.sms.send({ member_id: memberId, organization_id: organizationId, locale });\n },\n {\n onSuccess: (response) => {\n dispatch({ type: 'sms_otp/send_success', response });\n },\n onError: (error) => {\n const message = getTranslatedError(error as StytchAPIError, t);\n if (message) {\n errorToast({ message });\n }\n dispatch({ type: 'sms_otp/send_error', error: message });\n },\n // Throw on error to ensure promise is rejected\n throwOnError: true,\n },\n );\n\n const {\n trigger: authenticate,\n isMutating: isAuthenticating,\n error: authenticateError,\n } = useMutate<\n B2BSMSAuthenticateResponse<StytchProjectConfigurationInput>,\n unknown,\n StytchMutationKey,\n { otp: string; memberId: string; organizationId: string; sessionDurationMinutes: number }\n >(\n 'stytch.otps.sms.authenticate',\n (\n _: string,\n {\n arg: { otp, memberId, organizationId, sessionDurationMinutes },\n }: { arg: { otp: string; memberId: string; organizationId: string; sessionDurationMinutes: number } },\n ) =>\n stytchClient.otps.sms.authenticate({\n code: otp,\n member_id: memberId,\n organization_id: organizationId,\n session_duration_minutes: sessionDurationMinutes,\n }),\n {\n onSuccess: () => {\n dispatch({ type: 'sms_otp/authenticate_success' });\n },\n onError: () => {\n resendCountdown.clear();\n },\n },\n );\n\n const shouldCreate = codeExpiration === null && !isSending && !sendError;\n useEffect(() => {\n if (shouldCreate) {\n sendSms({ memberId, organizationId, locale: smsOtpOptions?.locale }).catch(() => {\n // error in the UI is handled through the error object so we just swallow it here when auto-sending\n });\n }\n }, [memberId, organizationId, sendSms, shouldCreate, smsOtpOptions?.locale]);\n\n useEffect(() => {\n if (!formattedDestination && memberPhoneNumber) {\n const handleFormatNumber = async () => {\n const parsePhoneNumber = (phoneNumber: string) =>\n readB2BInternals(stytchClient).clientsideServices.parsedPhoneNumber({\n phoneNumber,\n });\n\n const national = await formatNumber({\n parsePhoneNumber,\n phoneNumber: memberPhoneNumber,\n });\n\n dispatch({\n type: 'sms_otp/format_destination',\n formattedPhoneNumber: national,\n });\n };\n\n handleFormatNumber();\n }\n }, [dispatch, formattedDestination, stytchClient, memberPhoneNumber]);\n\n const isTotpAvailable = useMemo(\n () =>\n !isEnrolling &&\n enrolledMfaMethods.includes(B2BMFAProducts.totp) &&\n (organizationMfaOptionsSupported.length === 0 || organizationMfaOptionsSupported.includes(B2BMFAProducts.totp)),\n [enrolledMfaMethods, isEnrolling, organizationMfaOptionsSupported],\n );\n const errorMessage = authenticateError\n ? t({ id: 'error.passcodeInvalid', message: 'Invalid passcode, please try again.' })\n : undefined;\n\n // The user can go back to change their phone number if either:\n // - we are in an enrollment flow\n // - they are not enrolled in any MFA methods at all\n // - they are not enrolled in any of the limited MFA methods supported by the organization\n const canGoBack = useMemo(\n () =>\n isEnrolling ||\n enrolledMfaMethods.length === 0 ||\n (organizationMfaOptionsSupported.length > 0 &&\n !enrolledMfaMethods.some((enrolledMethod) => organizationMfaOptionsSupported.includes(enrolledMethod))),\n [enrolledMfaMethods, isEnrolling, organizationMfaOptionsSupported],\n );\n\n const handleSubmit = (otp: string) => {\n authenticate({ otp, memberId, organizationId, sessionDurationMinutes });\n };\n\n const handleSwitchToTotp = () => {\n dispatch({ type: 'transition', history: 'push', screen: AppScreens.TOTPEntry });\n };\n\n const handleResendOTP = async () => {\n await sendSms({ memberId, organizationId, locale: smsOtpOptions?.locale });\n };\n\n const handleBack = () => {\n dispatch({ type: 'navigate_back' });\n };\n\n const resendButton = (\n <ResendOTPButton countdown={resendCountdown} isSubmitting={isAuthenticating} resendOTP={handleResendOTP} />\n );\n const switchToTotpButton = isTotpAvailable && (\n <Button variant=\"ghost\" onClick={handleSwitchToTotp}>\n {t({ id: 'mfa.methods.authenticatorApp', message: 'Use an authenticator app' })}\n </Button>\n );\n const backButton = canGoBack && (\n <Button variant=\"ghost\" onClick={handleBack}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n );\n\n return (\n <Column gap={6}>\n {codeExpiration !== null ? (\n <SentOTPEntry\n isSubmitting={isAuthenticating}\n onSubmit={handleSubmit}\n errorMessage={errorMessage}\n expiration={codeExpiration.getTime()}\n formattedDestination={formattedDestination ?? memberPhoneNumber ?? ''}\n />\n ) : (\n <LoadingScreen />\n )}\n\n {switchToTotpButton && backButton ? (\n <ButtonColumn\n top={resendButton}\n bottom={\n <>\n {switchToTotpButton}\n {backButton}\n </>\n }\n />\n ) : (\n <ButtonColumn>\n {resendButton}\n {switchToTotpButton}\n {backButton}\n </ButtonColumn>\n )}\n </Column>\n );\n};\n","import React, { FormEvent, useState } from 'react';\nimport { RecoveryCodeRecoverResponse, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { StytchMutationKey, useMutate } from '../utils';\nimport Input from '../../components/molecules/Input';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport styles from './RecoveryCodeEntryScreen.module.css';\n\nexport const RecoveryCodeEntryScreen = () => {\n const stytchClient = useStytch();\n const {\n sessionOptions: { sessionDurationMinutes },\n } = useConfig();\n const { t } = useLingui();\n\n const [state, dispatch] = useGlobalReducer();\n\n // This screen should only be shown if primary info is available\n const { memberId, organizationId } = state.mfa.primaryInfo!;\n\n const {\n trigger: authenticate,\n isMutating: isSubmitting,\n error,\n } = useMutate<\n RecoveryCodeRecoverResponse<StytchProjectConfigurationInput>,\n unknown,\n StytchMutationKey,\n { recoveryCode: string; memberId: string; organizationId: string; sessionDurationMinutes: number }\n >(\n 'stytch.recoveryCodes.recover',\n (\n _: string,\n {\n arg: { recoveryCode, memberId, organizationId, sessionDurationMinutes },\n }: { arg: { recoveryCode: string; memberId: string; organizationId: string; sessionDurationMinutes: number } },\n ) =>\n stytchClient.recoveryCodes.recover({\n recovery_code: recoveryCode,\n member_id: memberId,\n organization_id: organizationId,\n session_duration_minutes: sessionDurationMinutes,\n }),\n {\n throwOnError: false,\n onSuccess: () => {\n dispatch({ type: 'recovery_code/authenticate_success' });\n },\n },\n );\n\n const [recoveryCode, setRecoveryCode] = useState('');\n const errorMessage = error\n ? t({ id: 'recoveryCodes.entry.error.invalidCode', message: 'Invalid backup code, please try again.' })\n : undefined;\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault();\n authenticate({ recoveryCode, memberId, organizationId, sessionDurationMinutes });\n };\n\n return (\n <Column as=\"form\" gap={6} onSubmit={handleSubmit}>\n <Typography variant=\"header\">{t({ id: 'recoveryCodes.entry.title', message: 'Enter backup code' })}</Typography>\n <Typography variant=\"body\">\n {t({\n id: 'recoveryCodes.entry.content',\n message: 'Enter one of the backup codes you saved when setting up your authenticator app.',\n })}\n </Typography>\n\n <Input\n id=\"recovery-code\"\n className={styles.input}\n value={recoveryCode}\n onChange={(e) => {\n setRecoveryCode(e.target.value);\n }}\n placeholder={t({ id: 'formField.backupCode.placeholder', message: 'Enter backup code' })}\n label={t({ id: 'formField.backupCode.ariaLabel', message: 'Backup code' })}\n hideLabel\n required\n autoComplete=\"off\"\n spellCheck={false}\n error={errorMessage}\n />\n\n <ButtonColumn>\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\" disabled={!recoveryCode || isSubmitting}>\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'navigate_back' })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import React, { HTMLAttributes } from 'react';\nimport styles from './CodeContainer.module.css';\nimport classNames from 'classnames';\n\nexport type CodeContainerProps = HTMLAttributes<HTMLDivElement>;\n\nconst CodeContainer: React.FC<CodeContainerProps> = ({ children, className, ...props }) => (\n <div className={classNames(className, styles.container)} {...props}>\n {children}\n </div>\n);\n\nexport default CodeContainer;\n","import React, { CSSProperties, useMemo } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Button, { ButtonAnchor } from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport TextColumn from '../../components/molecules/TextColumn';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport CodeContainer from '../../components/atoms/CodeContainer';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport VerticalTransition, { useTimedBoolean } from '../../components/atoms/VerticalTransition';\nimport { errorToast } from '../../components/atoms/Toast';\nimport styles from './RecoveryCodeSaveScreen.module.css';\n\nexport const RecoveryCodeSaveScreen = () => {\n const [state, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n\n // This screen should only be shown if TOTP enrollment is available\n const { recoveryCodes } = state.mfa.totp.enrollment!;\n\n const handleContinue = () => {\n dispatch({ type: 'recovery_code/save_acknowledge' });\n };\n\n const fileContent = useMemo(() => {\n const newline = navigator.platform === 'Win32' ? '\\r\\n' : '\\n';\n const blob = new Blob([recoveryCodes.join(newline)], { type: 'text/plain' });\n return URL.createObjectURL(blob);\n }, [recoveryCodes]);\n\n const organizationName = state.flowState.organization?.organization_name;\n const filename = organizationName\n ? t({ id: 'recoveryCodes.filename.withOrganizationName', message: `${organizationName}-backup-codes` })\n : t({\n id: 'recoveryCodes.filename.noOrganizationName',\n message: 'backup-codes',\n });\n\n const [copied, setCopied] = useTimedBoolean(3);\n const handleCodesCopy = async () => {\n try {\n await navigator.clipboard.writeText(recoveryCodes.join('\\n'));\n setCopied(true);\n } catch {\n errorToast({\n message: t({ id: 'recoveryCodes.save.toast.copyFailed', message: \"Couldn't copy codes to clipboard\" }),\n });\n }\n };\n\n const maxCodeLength = Math.max(...recoveryCodes.map((code) => code.length));\n\n return (\n <Column gap={6}>\n <TextColumn\n header={t({ id: 'recoveryCodes.save.title', message: 'Save your backup codes!' })}\n body={t({\n id: 'recoveryCodes.save.content',\n message: 'This is the only time you will be able to access and save your backup codes.',\n })}\n />\n\n <CodeContainer>\n <Typography font=\"mono\">\n <ul className={styles.codes} style={{ '--st-max-code-length': maxCodeLength + 'ch' } as CSSProperties}>\n {recoveryCodes.map((code, i) => (\n <li key={i}>{code}</li>\n ))}\n </ul>\n </Typography>\n </CodeContainer>\n\n <ButtonColumn>\n {/* eslint-disable-next-line lingui/no-unlocalized-strings */}\n <ButtonAnchor variant=\"primary\" href={fileContent} download={filename + '.txt'}>\n <VerticalTransition\n primary={t({ id: 'recoveryCodes.save.button.download', message: 'Download .txt file' })}\n secondary={t({ id: 'recoveryCodes.save.button.copied', message: 'Copied!' })}\n triggered={copied}\n />\n </ButtonAnchor>\n <Button variant=\"outline\" onClick={handleCodesCopy}>\n {t({ id: 'recoveryCodes.save.button.copyAll', message: 'Copy all to clipboard' })}\n </Button>\n <Button variant=\"ghost\" onClick={handleContinue}>\n {t({ id: 'recoveryCodes.save.button.done', message: 'Done' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import { B2BTOTPCreateResponse, StytchAPIError } from '@stytch/core/public';\nimport React, { useEffect } from 'react';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport { LoadingScreen } from '../../components/molecules/Loading';\nimport Typography from '../../components/atoms/Typography';\nimport { useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { StytchMutationKey, useMutate } from '../utils';\nimport { useLingui } from '@lingui/react/macro';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { AppScreens } from '../types/AppScreens';\nimport { errorToast } from '../../components/atoms/Toast';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\n\nimport styles from './TOTPEnrollQRScreen.module.css';\n\nexport const TOTPEnrollQRScreen = () => {\n const stytchClient = useStytch();\n const [state, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n const {\n mfa: {\n totp: { createError, enrollment, isCreating },\n },\n } = state;\n\n // This screen should only be shown if primary info and TOTP enrollment are\n // available\n const { memberId, organizationId } = state.mfa.primaryInfo!;\n\n const { trigger: createTotp } = useMutate<\n B2BTOTPCreateResponse,\n unknown,\n StytchMutationKey,\n { memberId: string; organizationId: string }\n >(\n 'stytch.totp.create',\n (_: string, { arg: { memberId, organizationId } }: { arg: { memberId: string; organizationId: string } }) => {\n dispatch({ type: 'totp/create' });\n return stytchClient.totp.create({ member_id: memberId, organization_id: organizationId });\n },\n {\n onSuccess: (response) => {\n dispatch({ type: 'totp/create_success', response, memberId, organizationId });\n },\n onError: (error) => {\n const message = getTranslatedError(error as StytchAPIError, t);\n if (message) {\n errorToast({ message });\n }\n dispatch({ type: 'totp/create_error', error });\n },\n },\n );\n\n const shouldCreate = !enrollment && !isCreating && !createError;\n useEffect(() => {\n if (shouldCreate) {\n createTotp({ memberId, organizationId });\n }\n }, [createTotp, memberId, organizationId, shouldCreate]);\n\n const handleShowManualCode = () => {\n dispatch({ type: 'totp/show_code', method: 'manual' });\n };\n\n const handleContinue = () => {\n dispatch({ type: 'transition', history: 'push', screen: AppScreens.TOTPEntry });\n };\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'totp.setupQr.title', message: 'Scan the QR code to link your authenticator app' })}\n </Typography>\n\n <Typography variant=\"body\">\n {t({\n id: 'totp.setupQr.content',\n message:\n 'Your organization requires an additional form of verification to make your account more secure. If you don’t have an authenticator app, you’ll need to install one first.',\n })}\n </Typography>\n\n {enrollment ? (\n <>\n <img\n alt={t({ id: 'mfaTotpEnrollment.qrAltText', message: 'QR code for TOTP enrollment' })}\n src={enrollment.qrCode}\n className={styles.qr}\n />\n\n <ButtonColumn>\n <Button variant=\"primary\" onClick={handleContinue}>\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n <Button variant=\"outline\" onClick={handleShowManualCode}>\n {t({ id: 'button.totpQrManual', message: 'Having trouble scanning?' })}\n </Button>\n </ButtonColumn>\n </>\n ) : (\n <LoadingScreen />\n )}\n </Column>\n );\n};\n","import React, { CSSProperties, useLayoutEffect, useRef, useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport TextColumn from '../../components/molecules/TextColumn';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport CodeContainer from '../../components/atoms/CodeContainer';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport VerticalTransition, { useTimedBoolean } from '../../components/atoms/VerticalTransition';\nimport styles from './TOTPEnrollManualScreen.module.css';\nimport { errorToast } from '../../components/atoms/Toast';\n\nconst CHUNK_SIZE = 4;\n\nexport const TOTPEnrollManualScreen = () => {\n const [state, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n\n const [copied, setCopied] = useTimedBoolean(3);\n\n // This screen should only be shown if TOTP enrollment is available\n const { secret } = state.mfa.totp.enrollment!;\n\n const displaySecret = secret.toLowerCase();\n const secretChunked = displaySecret.split(new RegExp(`(.{${CHUNK_SIZE}})`, 'g')).filter(Boolean);\n\n const { codeRef, columnCount } = useColumnCount(secretChunked.length);\n\n const handleBack = () => dispatch({ type: 'navigate_back' });\n\n const handleContinue = () => {\n dispatch({ type: 'transition', history: 'push', screen: AppScreens.TOTPEntry });\n };\n\n const handleCodeCopy = async () => {\n try {\n await navigator.clipboard.writeText(displaySecret);\n setCopied(true);\n } catch {\n errorToast({\n message: t({ id: 'mfa.totpEnrollment.toast.copyFailed', message: \"Couldn't copy code to clipboard\" }),\n });\n\n // Select all text instead as fallback\n const selection = window.getSelection();\n if (codeRef.current && selection) {\n selection.empty();\n const range = document.createRange();\n range.selectNodeContents(codeRef.current);\n selection.addRange(range);\n }\n }\n };\n\n return (\n <Column gap={6}>\n <TextColumn\n header={t({ id: 'mfa.totpEnrollment.title', message: 'Having trouble scanning the QR code?' })}\n body={t({\n id: 'mfa.totpEnrollment.content',\n message: 'Click to copy the code below. Enter into your authenticator app to link your account.',\n })}\n />\n\n {/* No additional keyboard support since there's a copy code button below */}\n <CodeContainer className={styles.codeContainer} onClick={handleCodeCopy}>\n {/* This Typography element is on the outside because we need the 1ch gap to also be in monospace */}\n <Typography\n ref={codeRef}\n className={styles.code}\n style={\n {\n '--st-column-count': columnCount,\n '--st-chunk-size': CHUNK_SIZE + 'ch',\n } as CSSProperties\n }\n font=\"mono\"\n >\n {secretChunked.map((part, i) => (\n <span key={i}>{part}</span>\n ))}\n </Typography>\n </CodeContainer>\n\n <ButtonColumn>\n <Button variant=\"primary\" onClick={handleCodeCopy}>\n <VerticalTransition\n primary={t({ id: 'mfa.totpEnrollment.copyCode.label', message: 'Copy to clipboard' })}\n secondary={t({ id: 'mfa.totpEnrollment.copyCode.codeCopied', message: 'Copied!' })}\n triggered={copied}\n />\n </Button>\n <Button variant=\"outline\" onClick={handleContinue}>\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n <Button variant=\"ghost\" onClick={handleBack}>\n {t({ id: 'button.totpQrRetry', message: 'Try to scan the QR code again' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n\n// Balance out the rows - this is fairly complex, but there's not any way to really do this in CSS only\n// so instead we read the width of the container and the chunks below it, then use that to calculate\n// first the number of rows, then how many chunks can evenly fit per row\nfunction useColumnCount(chunksCount: number) {\n const codeRef = useRef<HTMLDivElement>(null);\n const [columnCount, setColumnCount] = useState<number>();\n\n useLayoutEffect(() => {\n const updateRowCount = () => {\n if (!codeRef.current) return;\n\n // Get the width of the container and inner spans\n const containerWidth = codeRef.current.clientWidth;\n const spanWidth = Math.max(\n ...Array.from(codeRef.current.querySelectorAll('span')).map((elem) => elem.clientWidth),\n );\n\n // Find the number of columns to display. First compute the raw number\n // Note we don't check how many rows are currently rendered because this number is already affected by\n // the current row count.\n const fittedColumns = Math.floor(containerWidth / spanWidth);\n // Then account for gaps (1ch each, so 1/CHUNK_SIZE per gap)\n const fittedColumnsWithGaps = fittedColumns - Math.floor(fittedColumns / CHUNK_SIZE);\n // Number of rows is count / columns\n const rows = Math.ceil(chunksCount / fittedColumnsWithGaps);\n // And finally the closest even column count is count / rows\n const evenColumns = Math.ceil(chunksCount / rows);\n\n setColumnCount(evenColumns);\n };\n\n updateRowCount();\n\n if (!window.ResizeObserver || !codeRef.current) return;\n const observer = new ResizeObserver(updateRowCount);\n observer.observe(codeRef.current);\n return () => observer.disconnect();\n }, [chunksCount]);\n\n return {\n codeRef,\n columnCount,\n };\n}\n","import React, { useMemo } from 'react';\nimport { B2BMFAProducts, B2BTOTPAuthenticateResponse, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { StytchMutationKey, useMutate } from '../utils';\nimport { AppScreens } from '../types/AppScreens';\nimport OTPEntry from '../../components/molecules/OTPEntry';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\n\nexport const TOTPEntryScreen = () => {\n const stytchClient = useStytch();\n const {\n sessionOptions: { sessionDurationMinutes },\n } = useConfig();\n const { t } = useLingui();\n\n const [state, dispatch] = useGlobalReducer();\n const {\n mfa: { isEnrolling },\n } = state;\n\n // This screen should only be shown if primary info is available\n const { enrolledMfaMethods, memberId, organizationId, organizationMfaOptionsSupported } = state.mfa.primaryInfo!;\n\n const {\n trigger: authenticate,\n isMutating: isSubmitting,\n error: authenticateError,\n } = useMutate<\n B2BTOTPAuthenticateResponse<StytchProjectConfigurationInput>,\n unknown,\n StytchMutationKey,\n { memberId: string; organizationId: string; otp: string; sessionDurationMinutes: number }\n >(\n 'stytch.totp.authenticate',\n (\n _: string,\n {\n arg: { memberId, organizationId, otp, sessionDurationMinutes },\n }: { arg: { memberId: string; organizationId: string; otp: string; sessionDurationMinutes: number } },\n ) =>\n stytchClient.totp.authenticate({\n code: otp,\n member_id: memberId,\n organization_id: organizationId,\n session_duration_minutes: sessionDurationMinutes,\n }),\n {\n onSuccess: () => {\n dispatch({ type: 'totp/authenticate_success' });\n },\n },\n );\n\n const isSmsOtpAvailable = useMemo(\n () =>\n !isEnrolling &&\n enrolledMfaMethods.includes(B2BMFAProducts.smsOtp) &&\n (organizationMfaOptionsSupported.length === 0 || organizationMfaOptionsSupported.includes(B2BMFAProducts.smsOtp)),\n [enrolledMfaMethods, isEnrolling, organizationMfaOptionsSupported],\n );\n\n const errorMessage = authenticateError\n ? t({ id: 'error.passcodeInvalid', message: 'Invalid passcode, please try again.' })\n : undefined;\n const canGoBack = isEnrolling;\n\n const handleSubmit = (otp: string) => authenticate({ memberId, organizationId, otp, sessionDurationMinutes });\n\n const handleSwitchToRecoveryCode = () => {\n dispatch({ type: 'transition', history: 'push', screen: AppScreens.RecoveryCodeEntry });\n };\n\n const handleSwitchToSms = () => {\n dispatch({ type: 'transition', history: 'push', screen: AppScreens.SMSOTPEntry });\n };\n\n return (\n <Column gap={6}>\n <OTPEntry\n header={t({ id: 'totp.title', message: 'Enter verification code' })}\n instruction={t({ id: 'totp.content', message: 'Enter the 6-digit code from your authenticator app.' })}\n helperContent={\n isEnrolling\n ? t({\n id: 'mfa.totpEntry.getNewCode',\n message: 'If the verification code doesn’t work, go back to your authenticator app to get a new code.',\n })\n : null\n }\n isSubmitting={isSubmitting}\n onSubmit={handleSubmit}\n errorMessage={errorMessage}\n />\n\n <ButtonColumn\n top={null}\n bottom={\n <>\n {isSmsOtpAvailable && (\n <Button variant=\"outline\" onClick={handleSwitchToSms}>\n {t({ id: 'mfa.totpEntry.switchToSms', message: 'Text me a code instead' })}\n </Button>\n )}\n\n {!isEnrolling && (\n <Button variant=\"outline\" onClick={handleSwitchToRecoveryCode}>\n {t({ id: 'mfa.totpEntry.useBackupCode', message: 'Use a backup code' })}\n </Button>\n )}\n\n {canGoBack && (\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'navigate_back' })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n )}\n </>\n }\n />\n </Column>\n );\n};\n","import { useMemo } from 'react';\nimport { useConfig } from '../GlobalContextProvider';\nimport { B2BOAuthProviders } from '@stytch/core/public';\nimport { getParamsFromB2BOAuthProviderConfig } from '../../../utils/oauthProviderType';\nimport { hasProduct } from '../utils';\n\nexport const useIsOnlyFloatingOneTap = () => {\n const config = useConfig();\n const isOnlyFloatingOneTap = useMemo(() => {\n const oauthProvider = config.oauthOptions\n ? getParamsFromB2BOAuthProviderConfig(config.oauthOptions?.providers[0])\n : undefined;\n const isGoogleOneTap = oauthProvider?.type === B2BOAuthProviders.Google && oauthProvider?.one_tap === true;\n return (\n config.products.length === 1 &&\n hasProduct(config.products, 'oauth') &&\n config.oauthOptions?.providers.length === 1 &&\n isGoogleOneTap\n );\n }, [config]);\n\n return isOnlyFloatingOneTap;\n};\n","import React from 'react';\nimport { B2BOAuthProviders } from '@stytch/core/public';\nimport { msg } from '@lingui/core/macro';\nimport { useLingui } from '@lingui/react/macro';\nimport { MessageDescriptor } from '@lingui/core';\nimport { useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport Button from '../../components/atoms/Button';\nimport { getButtonId, usePresentation } from '../../components/PresentationConfig';\nimport { IconRegistry } from '../../components/IconRegistry';\nimport type { oauthIcons } from './Icons';\n\ntype OauthIconName = keyof typeof oauthIcons;\n\ninterface OAuthProviderInfo {\n messageDescriptor: MessageDescriptor;\n}\n\nconst providerInfo: Record<B2BOAuthProviders, OAuthProviderInfo> = {\n [B2BOAuthProviders.Google]: {\n messageDescriptor: msg({ id: 'oauth.continueWithGoogle', message: 'Continue with Google' }),\n },\n [B2BOAuthProviders.Microsoft]: {\n messageDescriptor: msg({ id: 'oauth.continueWithMicrosoft', message: 'Continue with Microsoft' }),\n },\n [B2BOAuthProviders.HubSpot]: {\n messageDescriptor: msg({ id: 'oauth.continueWithHubSpot', message: 'Continue with HubSpot' }),\n },\n [B2BOAuthProviders.Slack]: {\n messageDescriptor: msg({ id: 'oauth.continueWithSlack', message: 'Continue with Slack' }),\n },\n [B2BOAuthProviders.GitHub]: {\n messageDescriptor: msg({ id: 'oauth.continueWithGitHub', message: 'Continue with GitHub' }),\n },\n};\n\nexport type OauthB2BButtonProps = {\n providerType: B2BOAuthProviders;\n loginRedirectUrl?: string;\n signupRedirectUrl?: string;\n discoveryRedirectUrl?: string;\n customScopes?: string[];\n providerParams?: Record<string, string>;\n onSuccess?: () => void;\n};\n\nexport const OAuthB2BButton = ({\n providerType,\n loginRedirectUrl,\n signupRedirectUrl,\n discoveryRedirectUrl,\n customScopes,\n providerParams,\n onSuccess,\n}: OauthB2BButtonProps) => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const [state] = useGlobalReducer();\n\n const presentation = usePresentation();\n const iconRegistry: IconRegistry<OauthIconName> = presentation.iconRegistry;\n const id = getButtonId(`oauth-${providerType}`, presentation.options);\n\n const provider = providerInfo[providerType];\n let label: string = providerType;\n let icon = null;\n if (provider) {\n const { messageDescriptor } = provider;\n const Icon = iconRegistry[providerType];\n label = t(messageDescriptor);\n icon = <Icon />;\n }\n\n const onButtonClick = async () => {\n const providerClient = stytchClient.oauth[providerType];\n\n if (state.flowState.organization) {\n await providerClient.start({\n login_redirect_url: loginRedirectUrl,\n signup_redirect_url: signupRedirectUrl,\n custom_scopes: customScopes,\n organization_id: state.flowState.organization.organization_id,\n provider_params: providerParams,\n });\n } else {\n await providerClient.discovery.start({\n discovery_redirect_url: discoveryRedirectUrl,\n custom_scopes: customScopes,\n provider_params: providerParams,\n });\n }\n\n onSuccess?.();\n };\n\n return (\n <Button onClick={onButtonClick} variant=\"outline\" icon={icon} id={id}>\n {label}\n </Button>\n );\n};\n","import { useMemo } from 'react';\nimport { safeLocalStorage } from '../../../utils/storage';\nimport { readB2BInternals } from '../../../utils/internal';\nimport { useStytch } from '../GlobalContextProvider';\nimport { LastUsedMethod } from '../types/authMethodKeys';\n\n/**\n * Hook for managing the last used authentication method in B2B flows.\n * The returned value is not reactive and will not update when setLastUsedMethod is called.\n */\nexport function useLastUsedAuthMethod() {\n const stytch = useStytch();\n const { publicToken } = readB2BInternals(stytch);\n\n // Deliberately not using useLocalStorage because we _don't_ want the buttons\n // to reorder while the user is still seeing this page\n const lastUsedMethod = useMemo(() => safeLocalStorage.getItem(publicToken, 'b2b_last_used_method'), [publicToken]);\n const setLastUsedMethod = (method: LastUsedMethod) => {\n safeLocalStorage.setItem(publicToken, 'b2b_last_used_method', method);\n };\n\n return [lastUsedMethod, setLastUsedMethod] as const;\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { DEV, logger } from '@stytch/core';\nimport { B2BOAuthProviders, OneTapPositions } from '@stytch/core/public';\nimport type { CredentialResponse } from 'google-one-tap';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { useIsOnlyFloatingOneTap } from '../hooks/useIsOnlyFloatingOneTap';\nimport { useIsUnmounted } from '../../hooks/useIsMounted';\nimport { readB2BInternals } from '../../../utils/internal';\nimport { GoogleOneTapClient } from '../../../oneTap/GoogleOneTapClient';\nimport { OAuthB2BButton } from './OAuthB2BButton';\nimport { ErrorMessages, OneTapErrors } from '../../components/organisms/OneTapError';\nimport { useLastUsedAuthMethod } from '../hooks/useLastUsedAuthMethod';\nimport LastUsed from '../../components/molecules/LastUsed';\n\nexport type B2BOneTapProps = {\n customScopes?: string[];\n providerParams?: Record<string, string>;\n cancelOnTapOutside?: boolean;\n};\n\nexport const B2BGoogleOneTap = ({ customScopes, providerParams, cancelOnTapOutside }: B2BOneTapProps) => {\n const stytch = useStytch();\n const config = useConfig();\n const isOnlyFloatingOneTap = useIsOnlyFloatingOneTap();\n const [oneTapError, setOneTapError] = useState<OneTapErrors>();\n const isUnmounted = useIsUnmounted();\n const [state, dispatch] = useGlobalReducer();\n\n const [lastUsedMethod, setLastUsedMethod] = useLastUsedAuthMethod();\n\n /*\n * Begin One Tap Loading / Initialization Logic\n */\n //\n const attemptToLoadOneTap = useCallback(async () => {\n const { oneTap } = readB2BInternals(stytch);\n const clientResult = await oneTap.createOneTapClient();\n if (!clientResult.success) {\n if (clientResult.reason === 'oauth_config_not_found') {\n setOneTapError(OneTapErrors.NoConfiguredOAuthClient);\n } else if (clientResult.reason === 'default_provider_not_allowed') {\n setOneTapError(OneTapErrors.DefaultProviderNotAllowed);\n } else {\n logger.error('Unable to load One Tap settings for project', clientResult);\n }\n return;\n }\n const { client } = clientResult;\n\n /**\n * One tap is composed of two calls, an init() call and a prompt() call\n * the init() call takes in a parent_id where one tap should be shown\n * prompt() does the actual showing. if the element does not exist,\n * we show One Tap in the upper right corner\n * if the element does exist, One Tap's lifecycle is tied to the lifecycle of said element\n * here, we call init() then prompt() in the useeffect. If the component unmounts before\n * prompt() is called, One Tap falls back to the element-does-not-exist behavior.\n * Fix: add a check for whether the component is still rendered immediately before we\n * call prompt, preventing this race condition\n */\n if (isUnmounted.current) {\n return;\n }\n\n let oneTapCallback: (response: CredentialResponse) => void;\n if (state.flowState.organization) {\n oneTapCallback = oneTap.createOnSuccessHandler({\n organizationId: state.flowState.organization.organization_id,\n signupRedirectUrl: config.oauthOptions?.signupRedirectURL,\n loginRedirectUrl: config.oauthOptions?.loginRedirectURL,\n onSuccess: oneTap.redirectOnSuccess,\n onError: () => dispatch({ type: 'transition', screen: AppScreens.Error }),\n });\n } else {\n oneTapCallback = oneTap.createOnDiscoverySuccessHandler({\n discoveryRedirectUrl: config.oauthOptions?.discoveryRedirectURL,\n onSuccess: oneTap.redirectOnSuccess,\n onError: () => dispatch({ type: 'transition', screen: AppScreens.Error }),\n });\n }\n const renderResult = await client.render({\n callback: oneTapCallback,\n style: {\n position: OneTapPositions.floating,\n },\n cancelOnTapOutside,\n });\n\n // Check if the component has become unmounted during the async OT render process\n // Kill the rest of the logic if so\n if (isUnmounted.current) {\n client.cancel();\n return;\n }\n\n if (!renderResult.success) {\n if (renderResult.reason === 'unregistered_origin') {\n setOneTapError(OneTapErrors.OriginNotAllowedForClient);\n }\n if (renderResult.reason === 'invalid_client') {\n setOneTapError(OneTapErrors.InvalidOAuthClient);\n }\n logger.error('Unable to render One Tap prompt', renderResult);\n }\n return client;\n }, [\n stytch,\n isUnmounted,\n state.flowState.organization,\n config.oauthOptions?.signupRedirectURL,\n config.oauthOptions?.loginRedirectURL,\n config.oauthOptions?.discoveryRedirectURL,\n dispatch,\n cancelOnTapOutside,\n ]);\n\n useEffect(() => {\n let client: GoogleOneTapClient | undefined;\n attemptToLoadOneTap()\n .then(($client) => (client = $client))\n .catch((err) => {\n logger.error('Unable to render One Tap prompt', err);\n });\n return () => client?.cancel();\n }, [attemptToLoadOneTap]);\n /*\n * End One Tap Loading / Initialization Logic\n */\n\n if (isOnlyFloatingOneTap) {\n return null;\n }\n\n const fallbackButton = (\n <OAuthB2BButton\n providerType={B2BOAuthProviders.Google}\n loginRedirectUrl={config.oauthOptions?.loginRedirectURL}\n signupRedirectUrl={config.oauthOptions?.signupRedirectURL}\n discoveryRedirectUrl={config.oauthOptions?.discoveryRedirectURL}\n customScopes={customScopes}\n providerParams={providerParams}\n onSuccess={() => setLastUsedMethod(B2BOAuthProviders.Google)}\n />\n );\n\n const fallbackWithLastUsed =\n lastUsedMethod === B2BOAuthProviders.Google ? <LastUsed>{fallbackButton}</LastUsed> : fallbackButton;\n\n if (oneTapError) {\n return (\n <>\n {DEV(<ErrorMessages error={oneTapError} />)}\n {fallbackWithLastUsed}\n </>\n );\n }\n\n return fallbackWithLastUsed;\n};\n","import React, { ComponentType, Dispatch, ReactNode, useEffect, useState } from 'react';\nimport { usePresentation } from '../components/PresentationConfig';\nimport { useSWRConfig } from 'swr';\nimport { useGlobalReducer, useStytch, useConfig, useErrorCallback, useEventCallback } from './GlobalContextProvider';\nimport { ErrorType } from './types/ErrorType';\nimport { AppScreens } from './types/AppScreens';\nimport { LoggingInScreen } from '../components/molecules/Loading';\nimport {\n useExtractSlug,\n onAuthenticateSuccess,\n onDiscoveryAuthenticateSuccess,\n StytchMutationKey,\n getStytchEventByKey,\n useProductComponents,\n} from './utils';\nimport { AuthFlowType, StytchAPIError, StytchEvent, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { StytchB2BExtendedLoginConfig } from '../../types';\nimport { MainScreen } from './screens/Main';\nimport { ConfirmationScreen } from './screens/Confirmation';\nimport { ErrorScreen } from '../components/molecules/ErrorScreen';\nimport { Discovery } from './screens/Discovery';\nimport { MFAEnrollmentSelectionScreen } from './screens/MFAEnrollmentSelectionScreen';\nimport { SMSOTPEnrollScreen } from './screens/SMSOTPEnrollScreen';\nimport { SMSOTPEntryScreen } from './screens/SMSOTPEntryScreen';\nimport { RecoveryCodeEntryScreen } from './screens/RecoveryCodeEntryScreen';\nimport { RecoveryCodeSaveScreen } from './screens/RecoveryCodeSaveScreen';\nimport { TOTPEnrollQRScreen } from './screens/TOTPEnrollQRScreen';\nimport { TOTPEnrollManualScreen } from './screens/TOTPEnrollManualScreen';\nimport { TOTPEntryScreen } from './screens/TOTPEntryScreen';\nimport { useIsOnlyFloatingOneTap } from './hooks/useIsOnlyFloatingOneTap';\nimport { B2BGoogleOneTap } from './components/B2BOneTap';\nimport { extractErrorType } from '../../utils/extractErrorType';\nimport { HandledTokenType } from '../../b2b/StytchB2BClient';\nimport { Action } from './reducer';\nimport MainContainer from '../components/molecules/MainContainer';\nimport Logo from '../components/atoms/Logo';\n\n/**\n * Separately store additional things to do when authenticateByUrl completes or errors\n */\ntype AuthTokenConfig = {\n mutationKey: StytchMutationKey;\n // Typing this is too hard. Instead, manually verify the typings from the client matches that expected\n // by these success functions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSuccess: (data: any, dispatch: Dispatch<Action>, config: StytchB2BExtendedLoginConfig) => void;\n defaultError?: ErrorType;\n};\n\nconst authTokenConfig: Record<HandledTokenType, AuthTokenConfig> = {\n discovery: {\n mutationKey: 'stytch.magicLinks.discovery.authenticate',\n onSuccess: onDiscoveryAuthenticateSuccess,\n defaultError: ErrorType.EmailMagicLink,\n },\n discovery_oauth: {\n mutationKey: 'stytch.oauth.discovery.authenticate',\n onSuccess: onDiscoveryAuthenticateSuccess,\n },\n oauth: {\n mutationKey: 'stytch.oauth.authenticate',\n onSuccess: onAuthenticateSuccess,\n },\n sso: {\n mutationKey: 'stytch.sso.authenticate',\n onSuccess: onAuthenticateSuccess,\n },\n multi_tenant_magic_links: {\n mutationKey: 'stytch.magicLinks.authenticate',\n onSuccess: onAuthenticateSuccess,\n defaultError: ErrorType.EmailMagicLink,\n },\n multi_tenant_impersonation: {\n mutationKey: 'stytch.impersonation.authenticate',\n onSuccess: onAuthenticateSuccess,\n },\n};\n\nconst errorTypeMap: Record<string, ErrorType> = {\n ad_blocker_detected: ErrorType.AdBlockerDetected,\n};\n\nconst AppContainer: () => ReactNode = () => {\n const [state, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const triggerError = useErrorCallback();\n const triggerEvent = useEventCallback();\n const config = useConfig();\n const { displayWatermark, theme, options } = usePresentation();\n const isOnlyFloatingOneTap = useIsOnlyFloatingOneTap();\n\n const currentScreen = state.screen;\n\n const screenComponentMap = useProductComponents(config, 'screens')!;\n\n const handleStytchAPIError = (error: StytchAPIError, defaultErrorType = ErrorType.Default) => {\n const error_type = extractErrorType(error);\n const errorType: ErrorType = errorTypeMap[error_type!] ?? defaultErrorType;\n\n dispatch({\n type: 'set_error_message_and_transition',\n errorType,\n canGoBack: false,\n });\n };\n\n const [isTokenAuthLoading, setIsTokenAuthLoading] = useState(false);\n const { mutate } = useSWRConfig();\n\n const { slug, resultPending } = useExtractSlug();\n\n useEffect(() => {\n // If we're in One Tap only mode, we should not run any other effects\n if (isOnlyFloatingOneTap) {\n return;\n }\n\n // Password reset has special handling for exchanging a magic link token\n // for a session and then using it to reset a password\n if (state.flowState.type == AuthFlowType.PasswordReset) {\n return;\n }\n\n const parsed = stytchClient.parseAuthenticateUrl();\n if (!parsed?.handled) {\n return;\n }\n\n const { mutationKey, defaultError, onSuccess } = authTokenConfig[parsed.tokenType];\n setIsTokenAuthLoading(true);\n mutate(\n mutationKey,\n stytchClient.authenticateByUrl({ session_duration_minutes: config.sessionOptions.sessionDurationMinutes }),\n )\n .then(\n (result) => {\n if (!result?.handled) return; // Should not be possible\n const { data } = result;\n\n const event = getStytchEventByKey(mutationKey);\n if (event) {\n triggerEvent({ type: event, data } as StytchEvent<StytchProjectConfigurationInput>);\n }\n\n onSuccess(data, dispatch, config);\n },\n (error) => {\n triggerError(error);\n handleStytchAPIError(error, defaultError);\n },\n )\n .finally(() => setIsTokenAuthLoading(false));\n\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, []);\n\n useEffect(() => {\n // If we're in One Tap only mode, we should not run any other effects\n if (isOnlyFloatingOneTap) {\n return;\n }\n\n // Skip further action if token discovery is in progress\n if (isTokenAuthLoading) {\n return;\n }\n\n const parsed = stytchClient.parseAuthenticateUrl();\n if (parsed?.handled) {\n return;\n }\n\n if (\n !slug &&\n !resultPending &&\n state.flowState.organization === null &&\n state.screen === AppScreens.Main &&\n state.flowState.type == AuthFlowType.Organization\n ) {\n // No slug found (or no slug pattern)\n dispatch({\n type: 'set_error_message_and_transition',\n errorType: ErrorType.Organization,\n canGoBack: false,\n });\n }\n }, [\n dispatch,\n isOnlyFloatingOneTap,\n isTokenAuthLoading,\n resultPending,\n slug,\n state.flowState.organization,\n state.flowState.type,\n state.screen,\n stytchClient,\n triggerError,\n ]);\n\n if (isOnlyFloatingOneTap) {\n return <B2BGoogleOneTap />;\n }\n\n if (isTokenAuthLoading) {\n return (\n <MainContainer theme={theme} displayWatermark={false}>\n <LoggingInScreen />\n </MainContainer>\n );\n }\n\n let orgLogo;\n if (state.flowState.organization?.organization_logo_url) {\n const { organization_name, organization_logo_url } = state.flowState.organization;\n orgLogo = {\n url: organization_logo_url,\n alt: organization_name ?? '',\n };\n }\n\n const defaultScreenComponents: Partial<Record<AppScreens, ComponentType>> = {\n // Main is omitted from StytchB2BProduct since it's used by everything\n [AppScreens.Main]: MainScreen,\n [AppScreens.LoggedIn]: ConfirmationScreen,\n\n // Discovery can be opted into dynamically via stytch_redirect_type ResetPassword flow\n // so it cannot be statically shaken away\n [AppScreens.Discovery]: Discovery,\n [AppScreens.Error]: ErrorScreen,\n\n // MFA products are dynamically configured depending on organization and user choice,\n // and opted into by default\n [AppScreens.MFAEnrollmentSelection]: MFAEnrollmentSelectionScreen,\n [AppScreens.SMSOTPEnrollment]: SMSOTPEnrollScreen,\n [AppScreens.SMSOTPEntry]: SMSOTPEntryScreen,\n [AppScreens.RecoveryCodeEntry]: RecoveryCodeEntryScreen,\n [AppScreens.RecoveryCodeSave]: RecoveryCodeSaveScreen,\n [AppScreens.TOTPEnrollmentQRCode]: TOTPEnrollQRScreen,\n [AppScreens.TOTPEnrollmentManual]: TOTPEnrollManualScreen,\n [AppScreens.TOTPEntry]: TOTPEntryScreen,\n };\n\n const ScreenComponent = defaultScreenComponents[currentScreen] ?? screenComponentMap[currentScreen];\n\n return (\n <MainContainer theme={theme} displayWatermark={displayWatermark}>\n <Logo appLogo={options.logo} orgLogo={orgLogo} />\n <ScreenComponent />\n </MainContainer>\n );\n};\n\nexport default AppContainer;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { OverrideProperties } from 'type-fest';\nimport { messages } from '../../messages/b2b/en';\nimport { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper';\nimport { DEFAULT_STATE, GlobalContextProvider } from './GlobalContextProvider';\nimport { AppState } from './types/AppState';\nimport { AppScreens } from './types/AppScreens';\nimport { B2BSDKConfig, StytchB2BExtendedLoginConfig } from '../../types';\nimport { readB2BInternals } from '../../utils/internal';\nimport Container from './Container';\nimport { AuthFlowType, RedirectURLType, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { PresentationContext, usePresentationWithDefault } from '../components/PresentationConfig';\n\nexport type InternalSDKConfig<TProjectConfiguration extends StytchProjectConfigurationInput> = OverrideProperties<\n B2BSDKConfig<TProjectConfiguration>,\n { config: StytchB2BExtendedLoginConfig }\n>;\n\nexport const InternalAppContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n client,\n presentation,\n callbacks,\n config,\n strings,\n}: InternalSDKConfig<TProjectConfiguration>) => {\n /**\n * Read the watermark out of sync storage, then read it out of async storage\n */\n const [displayWatermark, setDisplayWatermark] = useState(() => {\n const { displayWatermark } = readB2BInternals(client).bootstrap.getSync();\n return displayWatermark;\n });\n\n useEffect(() => {\n readB2BInternals(client)\n .bootstrap.getAsync()\n .then((data) => {\n readB2BInternals(client).networkClient.logEvent({\n name: 'render_b2b_login_screen',\n details: { options: config, bootstrap: data },\n });\n setDisplayWatermark(data.displayWatermark);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, [client]);\n\n const getRedirectTypeFromUrl = () => {\n const url = new URL(window.location.href);\n const redirectType = url.searchParams.get('stytch_redirect_type');\n\n return redirectType;\n };\n\n const redirectType = getRedirectTypeFromUrl();\n const authFlowType =\n redirectType === RedirectURLType.ResetPassword ? AuthFlowType.PasswordReset : config.authFlowType;\n\n const initialState: AppState = {\n ...DEFAULT_STATE,\n screen: authFlowType === AuthFlowType.PasswordReset ? AppScreens.PasswordResetForm : AppScreens.Main,\n flowState: {\n ...DEFAULT_STATE.flowState,\n type: authFlowType,\n },\n };\n\n const configWithDefaults = useMemo(\n () => ({\n ...config,\n // While `sessionOptions` is required in the types, we still want to handle the error gracefully if it's not provided.\n // We set it to an empty object here so that future checks for `sessionOptions.sessionDurationMinutes` throw a `can't read property of undefined` error,\n // and instead throw an error regarding a missing `sessionDurationMinutes` error from the headless client.\n sessionOptions: config.sessionOptions ?? {},\n }),\n [config],\n );\n\n const presentationValue = usePresentationWithDefault(\n presentation,\n displayWatermark,\n configWithDefaults.products,\n 'B2BProduct',\n );\n\n return (\n <GlobalContextProvider\n client={client}\n callbacks={callbacks}\n config={configWithDefaults}\n initialState={initialState}\n >\n <PresentationContext.Provider value={presentationValue}>\n <I18nProviderWrapper messages={messages} overrides={strings}>\n <Container />\n </I18nProviderWrapper>\n </PresentationContext.Provider>\n </GlobalContextProvider>\n );\n};\n","import { useConfig, useStytch } from '../GlobalContextProvider';\nimport { useEffect, useState } from 'react';\nimport { readB2BInternals } from '../../../utils/internal';\n\n/**\n * Resolves the best email domain to use as a hint for login\n */\nexport const useEmailDomain = () => {\n const stytch = useStytch();\n const config = useConfig();\n /**\n * Read the emailDomains out of sync storage, then read out of async storage\n * TODO - Should all bootstrap data live in the config somewhere?\n */\n const [emailDomains, setEmailDomains] = useState(() => {\n const { emailDomains } = readB2BInternals(stytch).bootstrap.getSync();\n return emailDomains;\n });\n\n useEffect(() => {\n readB2BInternals(stytch)\n .bootstrap.getAsync()\n .then(({ emailDomains }) => {\n setEmailDomains(emailDomains);\n });\n }, [stytch]);\n\n // If a domain is explicitly passed in, use it!\n if (config.emailMagicLinksOptions?.domainHint) {\n return config.emailMagicLinksOptions?.domainHint;\n }\n // If there can only be one logical choice, use it!\n if (emailDomains.length === 1) {\n return emailDomains[0];\n }\n // If it isn't clear who sent the email\n // we simply won't provide a hint!\n return null;\n};\n","import { ResponseCommon, StytchAPIError } from '@stytch/core/public';\nimport { useStytch, useGlobalReducer, useConfig } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { StytchMutationKey, useMutate } from '../utils';\nimport { logger } from '@stytch/core';\n\nexport const useEmlLoginOrSignup = () => {\n const [, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const config = useConfig();\n\n return useMutate<ResponseCommon, StytchAPIError, StytchMutationKey, { email: string; organization_id: string }>(\n 'stytch.magicLinks.email.loginOrSignup',\n (_: string, { arg: { email, organization_id } }: { arg: { email: string; organization_id: string } }) =>\n stytchClient.magicLinks.email.loginOrSignup({\n email_address: email,\n organization_id,\n login_redirect_url: config.emailMagicLinksOptions?.loginRedirectURL,\n signup_redirect_url: config.emailMagicLinksOptions?.signupRedirectURL,\n login_template_id: config.emailMagicLinksOptions?.loginTemplateId,\n signup_template_id: config.emailMagicLinksOptions?.signupTemplateId,\n locale: config.emailMagicLinksOptions?.locale,\n }),\n {\n onSuccess: () => {\n dispatch({ type: 'transition', screen: AppScreens.EmailConfirmation });\n },\n onError: (e) => {\n logger.error(e);\n },\n },\n );\n};\n","import { ResponseCommon, StytchAPIError } from '@stytch/core/public';\nimport { useStytch, useGlobalReducer, useConfig } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { StytchMutationKey, useMutate } from '../utils';\n\nexport const useEmlDiscoverySend = () => {\n const [, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const config = useConfig();\n\n return useMutate<ResponseCommon, StytchAPIError, StytchMutationKey, { email: string }>(\n 'stytch.magicLinks.email.discovery.send',\n (_: string, { arg: { email } }: { arg: { email: string } }) =>\n stytchClient.magicLinks.email.discovery.send({\n email_address: email,\n discovery_redirect_url: config.emailMagicLinksOptions?.discoveryRedirectURL,\n login_template_id: config.emailMagicLinksOptions?.loginTemplateId,\n locale: config.emailMagicLinksOptions?.locale,\n }),\n {\n onSuccess: () => {\n dispatch({ type: 'transition', screen: AppScreens.EmailConfirmation });\n },\n },\n );\n};\n","import React from 'react';\nimport { AuthFlowType } from '@stytch/core/public';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { EmailConfirmationView } from '../../components/organisms/EmailConfirmationView';\nimport { useEmailDomain } from './useEmailDomain';\nimport { useCountdown } from '../../components/atoms/Countdown';\nimport { useEmlLoginOrSignup } from '../hooks/useEmlLoginOrSignup';\nimport { useEmlDiscoverySend } from '../hooks/useEmlDiscoverySend';\n\nexport const EmailConfirmation = () => {\n const [state, dispatch] = useGlobalReducer();\n const emailDomain = useEmailDomain();\n const countdown = useCountdown();\n\n const { trigger: sendLoginOrSignupEml, isMutating: isSendingLoginOrSignupEml } = useEmlLoginOrSignup();\n const { trigger: sendDiscoveryEml, isMutating: isSendingDiscoveryEml } = useEmlDiscoverySend();\n\n const email = state.formState.emailState.userSuppliedEmail;\n\n const goBack = () => {\n dispatch({ type: 'set_user_supplied_email', email: '' });\n dispatch({ type: 'transition', screen: AppScreens.Main });\n };\n\n const resend = async () => {\n if (state.flowState.type === AuthFlowType.Discovery) {\n await sendDiscoveryEml({ email });\n } else if (state.flowState.type === AuthFlowType.Organization && state.flowState.organization) {\n await sendLoginOrSignupEml({\n email,\n organization_id: state.flowState.organization.organization_id,\n });\n }\n };\n\n const isSubmitting = isSendingLoginOrSignupEml || isSendingDiscoveryEml;\n\n return (\n <EmailConfirmationView\n emailDomain={emailDomain}\n email={email}\n goBack={goBack}\n resend={resend}\n countdown={countdown}\n isSubmitting={isSubmitting}\n />\n );\n};\n","const DEFAULT_OTP_EXPIRATION_MS = 1000 * 60 * 10; // 10 minutes\n\nexport const getOtpCodeExpiration = () => new Date(Date.now() + DEFAULT_OTP_EXPIRATION_MS);\n","import { ResponseCommon, StytchAPIError } from '@stytch/core/public';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { getOtpCodeExpiration } from '../getOtpCodeExpiration';\nimport { StytchMutationKey, useMutate } from '../utils';\n\nexport const useEmailOtpDiscoverySend = ({ throwOnError }: { throwOnError?: boolean } = {}) => {\n const [, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const config = useConfig();\n\n return useMutate<ResponseCommon, StytchAPIError, StytchMutationKey, { email: string }>(\n 'stytch.otps.email.discovery.send',\n (_key: string, { arg: { email } }: { arg: { email: string } }) =>\n stytchClient.otps.email.discovery.send({\n email_address: email,\n login_template_id: config.emailOtpOptions?.loginTemplateId,\n locale: config.emailOtpOptions?.locale,\n }),\n {\n onSuccess: () => {\n dispatch({ type: 'send_email_otp', codeExpiration: getOtpCodeExpiration() });\n },\n throwOnError,\n },\n );\n};\n","import { B2BOTPsEmailLoginOrSignupResponse, StytchAPIError } from '@stytch/core/public';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { getOtpCodeExpiration } from '../getOtpCodeExpiration';\nimport { StytchMutationKey, useMutate } from '../utils';\n\nexport const useEmailOtpLoginOrSignup = ({ throwOnError }: { throwOnError?: boolean } = {}) => {\n const [, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const config = useConfig();\n\n return useMutate<\n B2BOTPsEmailLoginOrSignupResponse,\n StytchAPIError,\n StytchMutationKey,\n { email: string; organization_id: string }\n >(\n 'stytch.otps.email.loginOrSignup',\n (_key: string, { arg: { email, organization_id } }: { arg: { email: string; organization_id: string } }) =>\n stytchClient.otps.email.loginOrSignup({\n email_address: email,\n organization_id,\n login_template_id: config.emailOtpOptions?.loginTemplateId,\n signup_template_id: config.emailOtpOptions?.signupTemplateId,\n locale: config.emailOtpOptions?.locale,\n }),\n {\n onSuccess: () => {\n dispatch({ type: 'send_email_otp', codeExpiration: getOtpCodeExpiration() });\n },\n throwOnError,\n },\n );\n};\n","import React, { useMemo } from 'react';\nimport { AuthFlowType } from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\nimport { msg } from '@lingui/core/macro';\nimport { MessageDescriptor } from '@lingui/core';\nimport Button from '../../components/atoms/Button';\nimport ErrorText from '../../components/molecules/ErrorText';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { useEffectiveAuthConfig } from '../hooks/useEffectiveAuthConfig';\nimport { useEmailOtpDiscoverySend } from '../hooks/useEmailOtpDiscoverySend';\nimport { useEmailOtpLoginOrSignup } from '../hooks/useEmailOtpLoginOrSignup';\nimport { useEmlDiscoverySend } from '../hooks/useEmlDiscoverySend';\nimport { useEmlLoginOrSignup } from '../hooks/useEmlLoginOrSignup';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { ProductId } from '../StytchB2BProduct';\nimport { isTruthy } from '../../../utils/isTruthy';\n\nconst options: Partial<Record<ProductId, { messageDescriptor: MessageDescriptor }>> = {\n emailMagicLinks: {\n messageDescriptor: msg({ id: 'emailMethodSelection.link', message: 'Email me a login link' }),\n },\n emailOtp: {\n messageDescriptor: msg({ id: 'emailMethodSelection.code', message: 'Email me a login code' }),\n },\n};\n\nexport const EmailMethodSelectionScreen = () => {\n const { products } = useEffectiveAuthConfig();\n const { t } = useLingui();\n\n const [state, dispatch] = useGlobalReducer();\n\n const {\n trigger: sendDiscoveryEml,\n isMutating: isSendingDiscoveryEml,\n error: sendDiscoveryEmlError,\n reset: resetSendDiscoveryEml,\n } = useEmlDiscoverySend();\n\n const {\n trigger: sendDiscoveryOtp,\n isMutating: isSendingDiscoveryOtp,\n error: sendDiscoveryOtpError,\n reset: resetSendDiscoveryOtp,\n } = useEmailOtpDiscoverySend();\n\n const {\n trigger: sendLoginOrSignupEml,\n isMutating: isSendingLoginOrSignupEml,\n error: sendLoginOrSignupEmlError,\n reset: resetSendLoginOrSignupEml,\n } = useEmlLoginOrSignup();\n\n const {\n trigger: sendLoginOrSignupOtp,\n isMutating: isSendingLoginOrSignupOtp,\n error: sendLoginOrSignupOtpError,\n reset: resetSendLoginOrSignupOtp,\n } = useEmailOtpLoginOrSignup();\n\n const isSending =\n isSendingDiscoveryEml || isSendingDiscoveryOtp || isSendingLoginOrSignupEml || isSendingLoginOrSignupOtp;\n const error =\n sendDiscoveryEmlError || sendDiscoveryOtpError || sendLoginOrSignupEmlError || sendLoginOrSignupOtpError;\n\n const handleChooseMethod = (method: ProductId) => {\n resetSendDiscoveryEml();\n resetSendDiscoveryOtp();\n resetSendLoginOrSignupEml();\n resetSendLoginOrSignupOtp();\n\n switch (method) {\n case 'emailMagicLinks':\n if (state.flowState.type === AuthFlowType.Discovery) {\n sendDiscoveryEml({ email: state.formState.emailState.userSuppliedEmail });\n } else if (state.flowState.type === AuthFlowType.Organization && state.flowState.organization) {\n sendLoginOrSignupEml({\n email: state.formState.emailState.userSuppliedEmail,\n organization_id: state.flowState.organization.organization_id,\n });\n }\n break;\n case 'emailOtp':\n if (state.flowState.type === AuthFlowType.Discovery) {\n sendDiscoveryOtp({ email: state.formState.emailState.userSuppliedEmail });\n } else if (state.flowState.type === AuthFlowType.Organization && state.flowState.organization) {\n sendLoginOrSignupOtp({\n email: state.formState.emailState.userSuppliedEmail,\n organization_id: state.flowState.organization.organization_id,\n });\n }\n break;\n }\n };\n\n const displayOptions = useMemo(\n () =>\n products\n .map((product) => {\n const option = options[product.id];\n if (!option) return;\n\n return {\n option: product.id,\n messageDescriptor: option.messageDescriptor,\n };\n })\n .filter(isTruthy),\n [products],\n );\n\n const handleBack = () => {\n dispatch({ type: 'navigate_back' });\n };\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'emailMethodSelection.title', message: 'Select how you’d like to continue' })}\n </Typography>\n <ButtonColumn>\n {displayOptions.map(({ option, messageDescriptor }) => (\n <Button\n key={option}\n variant=\"outline\"\n disabled={isSending}\n onClick={() => {\n handleChooseMethod(option);\n }}\n >\n {t(messageDescriptor)}\n </Button>\n ))}\n\n {error && <ErrorText>{getTranslatedError(error, t)}</ErrorText>}\n\n <Button variant=\"ghost\" onClick={handleBack}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import React from 'react';\nimport {\n AuthFlowType,\n B2BDiscoveryOTPEmailAuthenticateResponse,\n B2BOTPsEmailAuthenticateResponse,\n StytchAPIError,\n} from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport { LoadingScreen } from '../../components/molecules/Loading';\nimport { SentOTPEntry } from '../../components/organisms/SentOTPEntry';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { useEmailOtpDiscoverySend } from '../hooks/useEmailOtpDiscoverySend';\nimport { useEmailOtpLoginOrSignup } from '../hooks/useEmailOtpLoginOrSignup';\nimport { StytchMutationKey, onAuthenticateSuccess, onDiscoveryAuthenticateSuccess, useMutate } from '../utils';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport { useCountdown } from '../../components/atoms/Countdown';\nimport { ResendOTPButton } from '../../components/organisms/ResendOTPButton';\n\nexport const EmailOTPEntryScreen = () => {\n const stytchClient = useStytch();\n const config = useConfig();\n const { t } = useLingui();\n\n const [state, dispatch] = useGlobalReducer();\n const { codeExpiration } = state.formState.otpState;\n const resendCountdown = useCountdown();\n const { userSuppliedEmail } = state.formState.emailState;\n\n const emailOtp = useEmailOtpLoginOrSignup({ throwOnError: true });\n const emailOtpDiscovery = useEmailOtpDiscoverySend({ throwOnError: true });\n\n const isSending = emailOtp.isMutating || emailOtpDiscovery.isMutating;\n const sendError = emailOtp.error || emailOtpDiscovery.error;\n\n const discoveryAuthenticate = useMutate<\n B2BDiscoveryOTPEmailAuthenticateResponse,\n unknown,\n StytchMutationKey,\n { otp: string; email: string }\n >(\n 'stytch.otps.email.discovery.authenticate',\n (_: string, { arg: { otp, email } }: { arg: { otp: string; email: string } }) =>\n stytchClient.otps.email.discovery.authenticate({\n code: otp,\n email_address: email,\n }),\n {\n onSuccess: (data) => {\n onDiscoveryAuthenticateSuccess(data, dispatch);\n },\n throwOnError: true,\n },\n );\n\n const authenticate = useMutate<\n B2BOTPsEmailAuthenticateResponse,\n unknown,\n StytchMutationKey,\n { otp: string; emailAddress: string; organizationId: string; sessionDurationMinutes: number }\n >(\n 'stytch.otps.email.authenticate',\n (\n _: string,\n {\n arg: { otp, emailAddress, organizationId, sessionDurationMinutes },\n }: { arg: { otp: string; emailAddress: string; organizationId: string; sessionDurationMinutes: number } },\n ) =>\n stytchClient.otps.email.authenticate({\n code: otp,\n email_address: emailAddress,\n organization_id: organizationId,\n session_duration_minutes: sessionDurationMinutes,\n }),\n {\n onSuccess: (data) => {\n onAuthenticateSuccess(data, dispatch, config);\n },\n throwOnError: true,\n },\n );\n\n const isAuthenticatingAny = discoveryAuthenticate.isMutating || authenticate.isMutating;\n const error = discoveryAuthenticate.error || authenticate.error || sendError;\n const errorMessage = error ? getTranslatedError(error as StytchAPIError, t) : undefined;\n\n const resetAll = () => {\n for (const resp of [emailOtp, emailOtpDiscovery, authenticate, discoveryAuthenticate]) {\n resp.reset();\n }\n };\n\n const handleSubmit = async (otp: string) => {\n resetAll();\n\n try {\n if (state.flowState.type === AuthFlowType.Discovery) {\n await discoveryAuthenticate.trigger({\n otp,\n email: userSuppliedEmail,\n });\n } else if (\n state.flowState.type === AuthFlowType.Organization &&\n state.flowState.organization &&\n state.formState.emailState.userSuppliedEmail\n ) {\n await authenticate.trigger({\n otp,\n emailAddress: state.formState.emailState.userSuppliedEmail,\n organizationId: state.flowState.organization.organization_id,\n sessionDurationMinutes: config.sessionOptions.sessionDurationMinutes,\n });\n }\n } catch {\n resendCountdown.clear();\n }\n };\n\n const handleResendOTP = async () => {\n resetAll();\n\n if (isSending) return;\n\n if (state.flowState.type === AuthFlowType.Discovery) {\n await emailOtpDiscovery.trigger({ email: userSuppliedEmail });\n } else if (state.flowState.type === AuthFlowType.Organization && state.flowState.organization) {\n await emailOtp.trigger({\n email: userSuppliedEmail,\n organization_id: state.flowState.organization.organization_id,\n });\n }\n };\n\n const handleBack = () => {\n dispatch({ type: 'navigate_back' });\n };\n\n return (\n <Column gap={6}>\n {codeExpiration !== null ? (\n <SentOTPEntry\n isSubmitting={isAuthenticatingAny}\n onSubmit={handleSubmit}\n errorMessage={errorMessage}\n expiration={codeExpiration.getTime()}\n formattedDestination={userSuppliedEmail}\n />\n ) : (\n <LoadingScreen />\n )}\n\n <ButtonColumn>\n <ResendOTPButton countdown={resendCountdown} resendOTP={handleResendOTP} isSubmitting={isAuthenticatingAny} />\n <Button variant=\"ghost\" onClick={handleBack}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import { useStytch } from '../GlobalContextProvider';\nimport { useMutate } from '../utils';\n\nexport const useSsoDiscoveryConnection = () => {\n const stytch = useStytch();\n\n return useMutate(\n 'stytch.sso.discoverConnections',\n async (_key, { arg: { emailAddress } }: { arg: { emailAddress: string } }) =>\n await stytch.sso.discoverConnections(emailAddress),\n { throwOnError: true },\n );\n};\n","import React, { useState } from 'react';\nimport Button from '../../components/atoms/Button';\nimport { extractErrorMessage } from '../../../utils/extractErrorMessage';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { useSsoDiscoveryConnection } from '../hooks/useSsoDiscoveryConnection';\nimport { useLingui } from '@lingui/react/macro';\n\nexport const SSODiscoveryEmail = () => {\n const [, dispatch] = useGlobalReducer();\n const [email, setEmail] = useState('');\n const { t } = useLingui();\n\n const [error, setError] = useState<string>();\n const [isLoading, setIsLoading] = useState(false);\n\n const { trigger } = useSsoDiscoveryConnection();\n\n const stytch = useStytch();\n const { ssoOptions } = useConfig();\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setError(undefined);\n\n const tryGetConnections = async () => {\n try {\n const response = await trigger({ emailAddress: email });\n\n if (!response) {\n return [];\n }\n\n return response.connections;\n } catch (e) {\n setError(\n extractErrorMessage(\n e,\n t({\n id: 'ssoDiscovery.email.error.unknown',\n message: 'Something went wrong. Try again later or contact your admin for help.',\n }),\n ),\n );\n }\n };\n\n try {\n setIsLoading(true);\n\n const connections = await tryGetConnections();\n\n if (connections?.length === 1) {\n const [connection] = connections;\n await stytch.sso.start({\n connection_id: connection.connection_id,\n login_redirect_url: ssoOptions?.loginRedirectURL,\n signup_redirect_url: ssoOptions?.signupRedirectURL,\n });\n\n // We intentionally leave `isLoading` set to `true` since we're expecting\n // the user to be redirected\n return;\n }\n\n setIsLoading(false);\n\n if (connections) {\n dispatch({ type: 'set_sso_discovery_state', connections });\n }\n } catch (e) {\n setIsLoading(false);\n throw e;\n }\n };\n\n const handleBack = () => {\n dispatch({ type: 'navigate_back' });\n };\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'ssoDiscovery.email.title', message: 'Enter your email to continue' })}\n </Typography>\n\n <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n <EmailInput email={email} setEmail={setEmail} hideLabel error={error} />\n\n <Button variant=\"primary\" loading={isLoading} type=\"submit\">\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n\n <Button variant=\"ghost\" onClick={handleBack}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n </Column>\n );\n};\n","import React from 'react';\nimport { SSOActiveConnection } from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\nimport { useConfig, useStytch } from '../GlobalContextProvider';\nimport { SsoKnownIdp } from '../../../utils/KnownIdp';\n\nimport { SSOIcon } from '../../../assets';\nimport Button from '../../components/atoms/Button';\nimport { getButtonId, usePresentation } from '../../components/PresentationConfig';\nimport type { ssoIcons } from './Icons';\n\ntype SsoIconNames = keyof typeof ssoIcons;\n\nconst iconMap: Record<string, SsoIconNames> = {\n 'google-workspace': 'google',\n 'microsoft-entra': 'microsoft',\n okta: 'okta',\n} satisfies Record<Exclude<SsoKnownIdp, 'generic'>, SsoIconNames>;\n\nexport interface SSOButtonProps {\n connection: SSOActiveConnection;\n onStart?: (connection: SSOActiveConnection) => void;\n}\n\nexport const SSOButton = ({ connection, onStart }: SSOButtonProps) => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const { ssoOptions } = useConfig();\n const { iconRegistry, options } = usePresentation();\n\n const { connection_id, display_name, identity_provider } = connection;\n\n const id = getButtonId(`sso-${display_name}`, options);\n\n const onButtonClick = () =>\n stytchClient.sso\n .start({\n connection_id,\n signup_redirect_url: ssoOptions?.signupRedirectURL,\n login_redirect_url: ssoOptions?.loginRedirectURL,\n })\n .then(() => {\n onStart?.(connection);\n });\n\n const iconName = iconMap[identity_provider];\n const Icon = iconRegistry[iconName] ?? SSOIcon;\n\n return (\n <Button variant=\"outline\" onClick={onButtonClick} icon={<Icon />} id={id}>\n {t({ id: 'provider.continueWith', message: `Continue with ${display_name}` })}\n </Button>\n );\n};\n","import { B2BOAuthProviders, SSOActiveConnection } from '@stytch/core/public';\nimport { OauthProviderParams } from '../hooks/useEffectiveAuthConfig';\n\n// This file contains a combined type to identify OAuth providers and SSO connections,\n// used to help with rendering these buttons and storing the last used method.\n// Extracting the logic for generating the key helps make it more consistent\n\nexport type LastUsedMethod = B2BOAuthProviders | `sso:${string}`;\n\n/* eslint-disable lingui/no-unlocalized-strings */\n\nexport function getSsoMethodKey(method: SSOActiveConnection): LastUsedMethod {\n return `sso:${method.connection_id}`;\n}\n\nexport function extractConnectionId(method: string | null): string | undefined {\n return method?.startsWith('sso:') ? method.slice(4) : undefined;\n}\n\nexport type AuthButton =\n | { type: 'oauth'; provider: OauthProviderParams }\n | { type: 'sso'; connection: SSOActiveConnection }\n | { type: 'sso-discovery' };\n\nexport function getButtonKey(button: AuthButton) {\n if (button.type === 'oauth') {\n return button.provider.type;\n } else if (button.type === 'sso') {\n return getSsoMethodKey(button.connection);\n } else {\n return 'sso-discovery';\n }\n}\n","import * as React from 'react';\nimport { SSOActiveConnection } from '@stytch/core/public';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { useLingui } from '@lingui/react/macro';\nimport { arrayUtils } from '@stytch/core';\nimport { SSOButton } from '../components/SSOButton';\nimport Button from '../../components/atoms/Button';\nimport { getSsoMethodKey, extractConnectionId } from '../types/authMethodKeys';\nimport { useLastUsedAuthMethod } from '../hooks/useLastUsedAuthMethod';\nimport LastUsed from '../../components/molecules/LastUsed';\n\nconst SSOButtons = ({ availableConnections }: { availableConnections: SSOActiveConnection[] }) => {\n const [lastUsedMethod, setLastUsedMethod] = useLastUsedAuthMethod();\n const lastUsedSso = extractConnectionId(lastUsedMethod);\n\n const [connections, foundLastUsed] = arrayUtils.moveToFront(\n availableConnections,\n (connection) => connection.connection_id === lastUsedSso,\n );\n\n return (\n <Column gap={2}>\n {connections.map((provider, index) => {\n const button = (\n <SSOButton\n key={provider.display_name}\n connection={provider}\n onStart={(connection) => setLastUsedMethod(getSsoMethodKey(connection))}\n />\n );\n\n return foundLastUsed && index === 0 ? <LastUsed>{button}</LastUsed> : button;\n })}\n </Column>\n );\n};\n\nexport const SSODiscoveryMenu = () => {\n const [state, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n\n const handleBack = () => {\n dispatch({ type: 'navigate_back' });\n };\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'ssoDiscovery.title', message: 'Select a connection to continue' })}\n </Typography>\n\n <Column gap={4}>\n <SSOButtons availableConnections={state.formState.ssoDiscoveryState.connections} />\n\n <Button variant=\"ghost\" onClick={handleBack}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n </Column>\n );\n};\n","import React, { useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport Input from '../../components/molecules/Input';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { useMutate } from '../utils';\n\nexport const SSODiscoveryFallback = () => {\n const [, dispatch] = useGlobalReducer();\n const [slug, setSlug] = useState('');\n const [error, setError] = useState<string>();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const stytchClient = useStytch();\n const { ssoOptions } = useConfig();\n const { t } = useLingui();\n\n const { trigger: lookupOrganization } = useMutate(\n 'stytch.organization.getBySlug',\n async (_: string, { arg: { slug } }: { arg: { slug: string } }) =>\n stytchClient.organization.getBySlug({ organization_slug: slug }),\n {\n onError: () => {\n setError(t({ id: 'ssoDiscovery.fallback.error.unknown', message: 'An error occurred. Please try again.' }));\n setIsSubmitting(false);\n },\n },\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setError(undefined);\n setIsSubmitting(true);\n\n const result = await lookupOrganization({ slug });\n if (result) {\n const { organization } = result;\n if (organization === null) {\n setError(\n t({ id: 'ssoDiscovery.fallback.error.orgNotFound', message: 'Organization not found. Please try again.' }),\n );\n setIsSubmitting(false);\n } else if (organization.sso_active_connections.length === 1) {\n const [connection] = organization.sso_active_connections;\n await stytchClient.sso.start({\n connection_id: connection.connection_id,\n login_redirect_url: ssoOptions?.loginRedirectURL,\n signup_redirect_url: ssoOptions?.signupRedirectURL,\n });\n } else {\n dispatch({\n type: 'set_organization',\n organization,\n });\n dispatch({ type: 'transition', screen: AppScreens.Main });\n }\n }\n };\n\n const handleTryAnotherMethod = () => {\n dispatch({ type: 'transition', screen: AppScreens.Main });\n };\n\n const handleBack = () => {\n dispatch({ type: 'navigate_back' });\n };\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'ssoDiscovery.fallback.title', message: \"Sorry, we couldn't find any connections\" })}\n </Typography>\n <Typography>\n {t({\n id: 'ssoDiscovery.fallback.content',\n message:\n \"Please input the Organization's unique slug to continue. If you don't know the unique slug, log in through another method to view all of your available Organizations.\",\n })}\n </Typography>\n\n <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n <Input\n id=\"organization-slug\"\n hideLabel\n label={t({ id: 'formField.orgSlug.label', message: 'Organization slug' })}\n value={slug}\n onChange={(e) => setSlug(e.target.value)}\n placeholder={t({ id: 'formField.orgSlug.label', message: 'Organization slug' })}\n error={error}\n />\n\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\" disabled={!slug || isSubmitting}>\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n\n <Button variant=\"outline\" onClick={handleTryAnotherMethod}>\n {t({ id: 'ssoDiscovery.fallback.button.reset', message: 'Try another method' })}\n </Button>\n\n <Button variant=\"ghost\" onClick={handleBack}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n </Column>\n );\n};\n","import { useState } from 'react';\nimport { useConfig, useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from './GlobalContextProvider';\nimport { AppScreens } from './types/AppScreens';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport { readB2BInternals } from '../../utils/internal';\nimport { OrganizationBySlugMatch } from '@stytch/core/public';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { B2BSubscriptionDataLayer } from '../../SubscriptionService';\nimport { useLingui } from '@lingui/react/macro';\nimport { getTranslatedError } from '../../utils/getTranslatedError';\nimport { onAuthenticateSuccess } from './utils';\n\nexport const usePasswordInput = () => {\n const [state, dispatch] = useGlobalReducer();\n const config = useConfig();\n const stytch = useStytch();\n const { t } = useLingui();\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const [email, setEmail] = useState(state.formState.passwordState.email);\n const [password, setPassword] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [isSubmitting, setIsSubmitting] = useState(false);\n const organization = state.flowState.organization;\n\n const submitPassword = (organization_id: string) => {\n setErrorMessage('');\n setIsSubmitting(true);\n stytch.passwords\n .authenticate({\n email_address: email,\n organization_id: organization_id,\n password: password,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n locale: config.passwordOptions?.locale,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordAuthenticate, data });\n onAuthenticateSuccess(data, dispatch, config);\n })\n .catch((err: StytchAPIError) => {\n setIsSubmitting(false);\n onError(err);\n setErrorMessage(getTranslatedError(err, t));\n });\n };\n\n const submitDiscoveryPassword = () => {\n setErrorMessage('');\n setIsSubmitting(true);\n stytch.passwords.discovery\n .authenticate({\n email_address: email,\n password: password,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordDiscoveryAuthenticate, data });\n dispatch({ type: 'transition', screen: AppScreens.Discovery });\n dispatch({\n type: 'set_discovery_state',\n email: data.email_address,\n discoveredOrganizations: data.discovered_organizations,\n });\n })\n .catch((err: StytchAPIError) => {\n setIsSubmitting(false);\n onError(err);\n setErrorMessage(getTranslatedError(err, t));\n });\n };\n\n const emailEligibleForJITProvisioning = (\n { email_jit_provisioning, email_allowed_domains }: OrganizationBySlugMatch,\n email: string,\n ) => {\n switch (email_jit_provisioning) {\n case 'ALL_ALLOWED':\n return true;\n case 'NOT_ALLOWED':\n return false;\n case 'RESTRICTED': {\n const emailDomain = email.split('@').pop();\n return emailDomain != null && email_allowed_domains.includes(emailDomain);\n }\n }\n };\n\n const handleNonMemberReset = () => {\n if (!organization) {\n return;\n }\n\n if (!emailEligibleForJITProvisioning(organization, email)) {\n setIsSubmitting(false);\n const organizationName = organization.organization_name;\n setErrorMessage(\n t({\n id: 'error.emailNoAccessToOrg',\n message: `${email} does not have access to ${organizationName}. If you think this is a mistake, contact your admin.`,\n }),\n );\n return;\n }\n\n const dataLayer = readB2BInternals(stytch).dataLayer as B2BSubscriptionDataLayer;\n dataLayer.setItem('reset-email-value', email);\n stytch.magicLinks.email\n .loginOrSignup({\n email_address: email,\n organization_id: organization.organization_id,\n login_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n signup_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n login_template_id: config.emailMagicLinksOptions?.loginTemplateId,\n signup_template_id: config.emailMagicLinksOptions?.signupTemplateId,\n locale: config.emailMagicLinksOptions?.locale,\n })\n .then(() => {\n setIsSubmitting(false);\n dispatch({ type: 'set_password_state', email: email });\n dispatch({ type: 'transition', screen: AppScreens.PasswordResetVerifyConfirmation });\n })\n .catch((err: StytchAPIError) => {\n onError(err);\n setErrorMessage(getTranslatedError(err, t));\n setIsSubmitting(false);\n });\n };\n\n return {\n stytch,\n onError,\n email,\n setEmail,\n password,\n setPassword,\n organization,\n errorMessage,\n setErrorMessage,\n isSubmitting,\n setIsSubmitting,\n submitPassword,\n submitDiscoveryPassword,\n handleNonMemberReset,\n };\n};\n","import React, { useState } from 'react';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport Column from '../../components/atoms/Column';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport Button from '../../components/atoms/Button';\nimport { EMAIL_REGEX } from '../../../utils';\nimport { readB2BInternals } from '../../../utils/internal';\nimport { PasswordInput } from '../../components/molecules/PasswordInput';\nimport { usePasswordInput } from '../usePasswordInput';\nimport { useLingui } from '@lingui/react/macro';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { StytchAPIError } from '@stytch/core/public';\n\nexport const PasswordsEmailForm = () => {\n const [, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n\n const {\n stytch,\n email,\n setEmail,\n password,\n setPassword,\n organization,\n errorMessage,\n setErrorMessage,\n isSubmitting,\n setIsSubmitting,\n submitPassword,\n submitDiscoveryPassword,\n handleNonMemberReset,\n } = usePasswordInput();\n\n const [hideInput, setHideInput] = useState(!!organization && !email);\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n if (organization) {\n const organization_id = organization.organization_id;\n\n // If we have processed the email, submit the password field\n if (!hideInput) {\n submitPassword(organization_id);\n return;\n }\n\n // Validate we have a member with a password. Otherwise, check if we can jit\n // provision and kickoff verification and session reset\n if (!email.match(EMAIL_REGEX)) {\n setErrorMessage(t({ id: 'error.invalidEmailAddress', message: 'Invalid email address' }));\n return;\n }\n setErrorMessage('');\n setIsSubmitting(true);\n readB2BInternals(stytch)\n .searchManager.searchMember(email, organization.organization_id)\n .then(({ member }) => {\n if (member) {\n setHideInput(false);\n setIsSubmitting(false);\n dispatch({ type: 'set_password_state', email });\n return;\n }\n // No member password flow: verify email and use reset by session\n handleNonMemberReset();\n })\n .catch((err: StytchAPIError) => {\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(err, t));\n });\n } else {\n // Discovery flow\n submitDiscoveryPassword();\n }\n };\n\n const onGetHelp = () => {\n dispatch({ type: 'set_password_state', email: email });\n dispatch({ type: 'transition', screen: AppScreens.PasswordForgotForm });\n };\n\n return (\n <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n <EmailInput email={email} setEmail={setEmail} />\n\n {!hideInput && (\n <PasswordInput password={password} setPassword={setPassword} type=\"current\" error={errorMessage} />\n )}\n\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n\n {!hideInput && (\n <Button variant=\"outline\" onClick={onGetHelp}>\n {t({ id: 'link.signupResetPassword', message: 'Sign up or reset password' })}\n </Button>\n )}\n </Column>\n );\n};\n","import React from 'react';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport Column from '../../components/atoms/Column';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport Typography from '../../components/atoms/Typography';\nimport Button from '../../components/atoms/Button';\nimport { PasswordInput } from '../../components/molecules/PasswordInput';\nimport { EMAIL_REGEX } from '../../../utils';\nimport { usePasswordInput } from '../usePasswordInput';\nimport { useLingui } from '@lingui/react/macro';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\n\nexport const PasswordsAuthenticate = () => {\n const [, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n\n const {\n email,\n setEmail,\n password,\n setPassword,\n organization,\n errorMessage,\n setErrorMessage,\n isSubmitting,\n submitPassword,\n submitDiscoveryPassword,\n } = usePasswordInput();\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n if (!email.match(EMAIL_REGEX)) {\n setErrorMessage(t({ id: 'error.invalidEmailAddress', message: 'Invalid email address' }));\n } else {\n if (!organization) {\n submitDiscoveryPassword();\n } else {\n submitPassword(organization.organization_id);\n }\n }\n };\n\n const onGetHelp = () => {\n dispatch({ type: 'set_password_state', email: email });\n dispatch({ type: 'transition', screen: AppScreens.PasswordForgotForm });\n };\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'password.login.title', message: 'Log in with email and password' })}\n </Typography>\n\n <Column as=\"form\" onSubmit={handleSubmit} gap={4}>\n <EmailInput email={email} setEmail={setEmail} />\n\n <PasswordInput password={password} setPassword={setPassword} type=\"current\" error={errorMessage} />\n\n <ButtonColumn>\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n\n <Button variant=\"outline\" onClick={onGetHelp}>\n {t({ id: 'link.signupResetPassword', message: 'Sign up or reset password' })}\n </Button>\n\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n </Column>\n );\n};\n","import { useConfig, useEventCallback, useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport React from 'react';\nimport Column from '../../components/atoms/Column';\nimport Button from '../../components/atoms/Button';\nimport Typography from '../../components/atoms/Typography';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport { EMAIL_REGEX } from '../../../utils';\nimport { readB2BInternals } from '../../../utils/internal';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport { usePasswordInput } from '../usePasswordInput';\nimport { useLingui } from '@lingui/react/macro';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\n\nexport const PasswordsForgotForm = () => {\n const [, dispatch] = useGlobalReducer();\n const config = useConfig();\n const onEvent = useEventCallback();\n const { t } = useLingui();\n\n const {\n stytch,\n email,\n setEmail,\n organization,\n errorMessage,\n setErrorMessage,\n isSubmitting,\n setIsSubmitting,\n handleNonMemberReset,\n } = usePasswordInput();\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n if (!email.match(EMAIL_REGEX)) {\n setErrorMessage(t({ id: 'error.invalidEmailAddress', message: 'Invalid email address' }));\n return;\n }\n setErrorMessage('');\n setIsSubmitting(true);\n if (organization) {\n readB2BInternals(stytch)\n .searchManager.searchMember(email, organization.organization_id)\n .then(({ member }) => {\n if (!member) {\n handleNonMemberReset();\n return;\n }\n // Member password flow: call reset password start instead\n stytch.passwords\n .resetByEmailStart({\n email_address: email,\n organization_id: organization.organization_id,\n login_redirect_url: config.emailMagicLinksOptions?.loginRedirectURL,\n reset_password_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n reset_password_expiration_minutes: config.passwordOptions?.resetPasswordExpirationMinutes,\n reset_password_template_id: config.passwordOptions?.resetPasswordTemplateId,\n verify_email_template_id: config.passwordOptions?.verifyEmailTemplateId,\n locale: config.passwordOptions?.locale,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordResetByEmailStart, data });\n dispatch({ type: 'set_password_state', email: email });\n dispatch({ type: 'transition', screen: AppScreens.PasswordSetNewConfirmation });\n })\n .catch((err: StytchAPIError) => {\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(err, t));\n });\n })\n .catch((err: StytchAPIError) => {\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(err, t));\n });\n } else {\n // Discovery password flow: call discovery reset password start instead. This flow doesn't need a member object\n stytch.passwords.discovery\n .resetByEmailStart({\n email_address: email,\n discovery_redirect_url: config.passwordOptions?.discoveryRedirectURL,\n reset_password_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n reset_password_expiration_minutes: config.passwordOptions?.resetPasswordExpirationMinutes,\n reset_password_template_id: config.passwordOptions?.resetPasswordTemplateId,\n verify_email_template_id: config.passwordOptions?.verifyEmailTemplateId,\n locale: config.passwordOptions?.locale,\n })\n .then(() => {\n setIsSubmitting(false);\n dispatch({ type: 'set_password_state', email: email });\n dispatch({ type: 'transition', screen: AppScreens.PasswordSetNewConfirmation });\n })\n .catch((err: StytchAPIError) => {\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(err, t));\n });\n }\n };\n\n return (\n <Column as=\"form\" gap={6} onSubmit={handleSubmit}>\n <Typography variant=\"header\">\n {t({ id: 'password.forgot.title', message: 'Check your email for help signing in' })}\n </Typography>\n <Typography variant=\"body\">\n {!organization\n ? t({\n id: 'password.forgot.content.discovery',\n message:\n \"We'll email you a verification link to sign up for an account or reset your password if you have one.\",\n })\n : t({\n id: 'password.forgot.content.organization',\n message:\n \"We'll email you a login link to sign in to your account directly or reset your password if you have one.\",\n })}\n </Typography>\n\n <EmailInput email={email} setEmail={setEmail} error={errorMessage} />\n\n <ButtonColumn>\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { Trans } from '@lingui/react';\nimport { StytchEventType } from '@stytch/core/public';\nimport { usePasswordInput } from '../usePasswordInput';\nimport { useConfig, useEventCallback, useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport EmailActionLayout from '../../components/molecules/EmailActionLayout';\n\nexport const PasswordSetNew = () => {\n const [, dispatch] = useGlobalReducer();\n const onEvent = useEventCallback();\n const config = useConfig();\n const { t } = useLingui();\n\n const { stytch, onError, email, organization, setIsSubmitting } = usePasswordInput();\n\n const resendResetPassword = () => {\n if (!organization) {\n return stytch.passwords.discovery\n .resetByEmailStart({\n email_address: email,\n discovery_redirect_url: config.passwordOptions?.discoveryRedirectURL,\n reset_password_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n reset_password_expiration_minutes: config.passwordOptions?.resetPasswordExpirationMinutes,\n reset_password_template_id: config.passwordOptions?.resetPasswordTemplateId,\n verify_email_template_id: config.passwordOptions?.verifyEmailTemplateId,\n locale: config.passwordOptions?.locale,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordDiscoveryResetStart, data });\n });\n } else {\n return stytch.passwords\n .resetByEmailStart({\n email_address: email,\n organization_id: organization.organization_id,\n login_redirect_url: config.passwordOptions?.loginRedirectURL,\n reset_password_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n reset_password_expiration_minutes: config.passwordOptions?.resetPasswordExpirationMinutes,\n reset_password_template_id: config.passwordOptions?.resetPasswordTemplateId,\n verify_email_template_id: config.passwordOptions?.verifyEmailTemplateId,\n locale: config.passwordOptions?.locale,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordResetByEmailStart, data });\n })\n .catch((e: Error) => {\n onError(e);\n throw e;\n });\n }\n };\n\n return (\n <EmailActionLayout\n header={t({ id: 'password.reset.emailSent.title', message: 'Check your email' })}\n description={\n <Trans\n id=\"password.reset.emailSent.content\"\n message=\"A login link was sent to you at <bold>{email}</bold>.\"\n components={{ bold: <b /> }}\n values={{ email }}\n />\n }\n resend={resendResetPassword}\n goBack={() => dispatch({ type: 'transition', screen: AppScreens.Main })}\n />\n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport { useConfig, useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { debounce, noop } from '../../../utils';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport Button from '../../components/atoms/Button';\nimport { PasswordInput } from '../../components/molecules/PasswordInput';\nimport { readB2BInternals } from '../../../utils/internal';\nimport { B2BSubscriptionDataLayer } from '../../../SubscriptionService';\nimport { onAuthenticateSuccess, useBootstrap as useB2BBootstrap } from '../utils';\nimport { useLingui } from '@lingui/react/macro';\n\nimport { getNewPasswordProps, PasswordError, PasswordErrorProps } from '../../components/molecules/PasswordError';\nimport { clearStytchTokenParams } from '../../../utils/createAuthUrlHandler';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport EmailInput from '../../components/molecules/EmailInput';\n\nexport const PasswordResetForm = () => {\n const stytchClient = useStytch();\n const config = useConfig();\n const [, dispatch] = useGlobalReducer();\n const bootstrap = useB2BBootstrap();\n const { t } = useLingui();\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const [resetToken, resetTokenType] = useMemo(() => {\n const parsed = stytchClient.parseAuthenticateUrl();\n if (!parsed) return ['', ''];\n return [parsed.token, parsed.tokenType];\n }, [stytchClient]);\n\n const dataLayer = readB2BInternals(stytchClient).dataLayer as B2BSubscriptionDataLayer;\n const email = dataLayer.getItem('reset-email-value');\n const [password, setPassword] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [passwordError, setPasswordError] = useState<PasswordErrorProps>({ policy: 'notLoaded' });\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const updateStrengthCheck = useMemo(\n () =>\n debounce((password: string) => {\n setErrorMessage('');\n return stytchClient.passwords\n .strengthCheck({ password })\n .then(({ score, valid_password, zxcvbn_feedback, luds_feedback, strength_policy, breached_password }) => {\n const common = {\n passwordInvalid: !valid_password,\n isPasswordBreached: breached_password,\n };\n\n if (strength_policy === 'zxcvbn') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n passwordScore: score,\n passwordWarning: zxcvbn_feedback.warning,\n passwordSuggestions: zxcvbn_feedback.suggestions,\n });\n } else if (strength_policy === 'luds') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n missingCharacters: luds_feedback.missing_characters,\n missingComplexity: luds_feedback.missing_complexity,\n });\n }\n })\n .catch((e: StytchAPIError) => {\n setErrorMessage(getTranslatedError(e, t));\n });\n }),\n [stytchClient.passwords, t],\n );\n\n useEffect(() => {\n if (resetTokenType === 'multi_tenant_magic_links') {\n stytchClient.magicLinks\n .authenticate({\n magic_links_token: resetToken,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n locale: config.emailMagicLinksOptions?.locale,\n })\n .then((data) => {\n clearStytchTokenParams();\n dispatch({\n type: 'primary_authenticate_success',\n response: data,\n includedMfaMethods: config.mfaProductInclude,\n resetTokenType,\n });\n })\n .catch((e: StytchAPIError) => {\n setErrorMessage(getTranslatedError(e, t));\n onError(e);\n });\n return;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, [resetTokenType]);\n\n const onPasswordChange = (password: string) => {\n setPassword(password);\n updateStrengthCheck(password);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setErrorMessage('');\n setIsSubmitting(true);\n\n if (resetTokenType == 'multi_tenant_passwords') {\n stytchClient.passwords\n .resetByEmail({\n password_reset_token: resetToken,\n password,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n locale: config.passwordOptions?.locale,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordResetByEmail, data });\n onAuthenticateSuccess(data, dispatch, config);\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n setIsSubmitting(false);\n });\n } else if (resetTokenType == 'discovery') {\n stytchClient.passwords.discovery\n .resetByEmail({\n password_reset_token: resetToken,\n password,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BDiscoveryPasswordReset, data });\n dispatch({ type: 'transition', screen: AppScreens.Discovery });\n dispatch({\n type: 'set_discovery_state',\n email: data.email_address,\n discoveredOrganizations: data.discovered_organizations,\n });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n setIsSubmitting(false);\n });\n } else {\n stytchClient.passwords\n .resetBySession({ password })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordResetBySession, data });\n dispatch({ type: 'transition', screen: AppScreens.LoggedIn });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n setIsSubmitting(false);\n });\n }\n };\n\n const passwordInputProps = getNewPasswordProps(bootstrap, passwordError.policy);\n\n return (\n <Column gap={6} as=\"form\" onSubmit={handleSubmit}>\n <Typography variant=\"header\">{t({ id: 'password.setNew.title', message: 'Set a new password' })}</Typography>\n\n <Column gap={2}>\n {email ? <EmailInput email={email} setEmail={noop} disabled /> : null}\n\n <PasswordInput\n password={password}\n setPassword={onPasswordChange}\n error={errorMessage}\n {...passwordInputProps}\n />\n\n <PasswordError bootstrap={bootstrap} {...passwordError} />\n\n <Button\n variant=\"primary\"\n loading={isSubmitting}\n type=\"submit\"\n disabled={passwordError.policy === 'notLoaded' || passwordError.passwordInvalid}\n >\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n </Column>\n </Column>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { Trans } from '@lingui/react';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport EmailActionLayout from '../../components/molecules/EmailActionLayout';\nimport { emailProviderInfo, EmailProviderLink } from '../../components/molecules/EmailProviderLink';\nimport { useEmailDomain } from './useEmailDomain';\nimport Button from '../../components/atoms/Button';\n\nexport const PasswordResetConfirmation = () => {\n const { t } = useLingui();\n\n const [state, dispatch] = useGlobalReducer();\n const emailDomain = useEmailDomain();\n const email = state.formState.passwordState.email;\n\n const reset = () => {\n dispatch({ type: 'set_user_supplied_email', email: '' });\n dispatch({ type: 'transition', screen: AppScreens.Main });\n };\n\n return (\n <EmailActionLayout\n header={t({\n id: 'password.verification.title',\n message: 'Verify your email first.',\n })}\n description={\n <Trans\n id=\"password.verification.content\"\n message=\"A login link was sent to you at <bold>{email}</bold>.\"\n components={{ bold: <b /> }}\n values={{ email }}\n />\n }\n additionalActions={\n <>\n <EmailProviderLink emailDomain={emailDomain} providerInfo={emailProviderInfo.gmail} />\n <EmailProviderLink emailDomain={emailDomain} providerInfo={emailProviderInfo.outlook} />\n <Button variant=\"ghost\" onClick={reset}>\n {t({ id: 'button.retry', message: 'Try again' })}\n </Button>\n </>\n }\n />\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport Button from '../../components/atoms/Button';\n\nconst UsePasswordButton = ({ email }: { email: string }) => {\n const [, dispatch] = useGlobalReducer();\n const { t } = useLingui();\n\n const handleUsePassword = () => {\n dispatch({ type: 'use_password_auth', email });\n };\n\n return (\n <Button variant=\"ghost\" onClick={handleUsePassword}>\n {t({ id: 'button.usePassword', message: 'Use a password instead' })}\n </Button>\n );\n};\n\nexport default UsePasswordButton;\n","import { StytchAPIError } from '@stytch/core/public';\nimport React, { useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { useEffectiveAuthConfig } from '../hooks/useEffectiveAuthConfig';\nimport { useEmailOtpDiscoverySend } from '../hooks/useEmailOtpDiscoverySend';\nimport { useEmailOtpLoginOrSignup } from '../hooks/useEmailOtpLoginOrSignup';\nimport { useEmlDiscoverySend } from '../hooks/useEmlDiscoverySend';\nimport { useEmlLoginOrSignup } from '../hooks/useEmlLoginOrSignup';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\n\nimport UsePasswordButton from '../components/UsePasswordButton';\nimport Column from '../../components/atoms/Column';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport Button from '../../components/atoms/Button';\nimport { hasProduct } from '../utils';\n\nconst JIT_PROVISIONING_ERRORS = ['email_jit_provisioning_not_allowed', 'invalid_email_for_jit_provisioning'];\n\nconst useParseErrorMessage = () => {\n const { t } = useLingui();\n return (error: StytchAPIError, { email, org: organizationName }: { email: string; org: string }) => {\n if (JIT_PROVISIONING_ERRORS.includes(error.error_type)) {\n return t({\n id: 'error.jitIneligible',\n message: `${email} does not have access to ${organizationName}. If you think this is a mistake, contact your admin`,\n });\n }\n return getTranslatedError(error, t);\n };\n};\n\nexport const EmailForm = ({ showPasswordButton }: { showPasswordButton: boolean }) => {\n const [state, dispatch] = useGlobalReducer();\n const [emailInput, setEmailInput] = useState(state.formState.passwordState.email);\n const parseErrorMessage = useParseErrorMessage();\n const { t } = useLingui();\n\n const { products } = useEffectiveAuthConfig();\n const enableEml = hasProduct(products, 'emailMagicLinks');\n const enableOtp = hasProduct(products, 'emailOtp');\n\n const providedEmail = state.primary.email;\n const email = providedEmail || emailInput;\n\n const { trigger: stytchEmlLoginOrSignup, error: emlError, isMutating: emlIsMutating } = useEmlLoginOrSignup();\n const { trigger: stytchOtpLoginOrSignup, error: otpError, isMutating: otpIsMutating } = useEmailOtpLoginOrSignup();\n\n const isMutating = emlIsMutating || otpIsMutating;\n const error = emlError || otpError;\n\n const organization = state.flowState.organization;\n if (!organization) return <></>;\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n dispatch({ type: 'set_user_supplied_email', email });\n\n if (enableEml && enableOtp) {\n dispatch({ type: 'transition', screen: AppScreens.EmailMethodSelection, history: 'push' });\n } else if (enableEml) {\n stytchEmlLoginOrSignup({ email, organization_id: organization.organization_id });\n } else if (enableOtp) {\n stytchOtpLoginOrSignup({ email, organization_id: organization.organization_id });\n }\n };\n\n if (providedEmail) {\n return (\n <Column gap={2}>\n {products\n .filter((product) => product.id === 'emailMagicLinks' || product.id === 'emailOtp')\n .map((product) => {\n switch (product.id) {\n case 'emailMagicLinks':\n return (\n <Button\n key={product.id}\n onClick={() => {\n dispatch({ type: 'set_user_supplied_email', email });\n stytchEmlLoginOrSignup({ email, organization_id: organization.organization_id });\n }}\n loading={emlIsMutating}\n disabled={isMutating}\n variant=\"outline\"\n >\n {t({ id: 'button.emailLink', message: 'Email me a link' })}\n </Button>\n );\n\n case 'emailOtp':\n return (\n <Button\n key={product.id}\n onClick={() => {\n dispatch({ type: 'set_user_supplied_email', email });\n stytchOtpLoginOrSignup({ email, organization_id: organization.organization_id });\n }}\n loading={otpIsMutating}\n disabled={isMutating}\n variant=\"outline\"\n >\n {t({ id: 'button.emailCode', message: 'Email me a code' })}\n </Button>\n );\n }\n })}\n\n {showPasswordButton && <UsePasswordButton email={email} />}\n </Column>\n );\n }\n\n return (\n <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n <EmailInput\n email={email}\n setEmail={setEmailInput}\n hideLabel\n error={error ? parseErrorMessage(error, { email, org: organization.organization_name }) : undefined}\n />\n\n <Button type=\"submit\" variant=\"primary\" loading={isMutating}>\n {t({ id: 'button.continueWithEmail', message: 'Continue with email' })}\n </Button>\n\n {showPasswordButton && <UsePasswordButton email={email} />}\n </Column>\n );\n};\n\nexport const EmailDiscoveryForm = ({ showPasswordButton }: { showPasswordButton: boolean }) => {\n const [state, dispatch] = useGlobalReducer();\n const [email, setEmail] = useState(state.formState.passwordState.email);\n const { t } = useLingui();\n\n const { products } = useEffectiveAuthConfig();\n const enableEml = products.some((p) => p.id === 'emailMagicLinks');\n const enableOtp = products.some((p) => p.id === 'emailOtp');\n\n const { trigger: stytchEmlDiscoverySend, error: emlError, isMutating: emlIsMutating } = useEmlDiscoverySend();\n const { trigger: stytchOtpDiscoverySend, error: otpError, isMutating: otpIsMutating } = useEmailOtpDiscoverySend();\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n dispatch({ type: 'set_user_supplied_email', email });\n\n if (enableEml && enableOtp) {\n dispatch({ type: 'transition', screen: AppScreens.EmailMethodSelection, history: 'push' });\n } else if (enableEml) {\n stytchEmlDiscoverySend({ email });\n } else if (enableOtp) {\n stytchOtpDiscoverySend({ email });\n }\n };\n\n const isMutating = emlIsMutating || otpIsMutating;\n const error = emlError || otpError;\n\n return (\n <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n <EmailInput\n email={email}\n setEmail={setEmail}\n hideLabel\n error={error ? getTranslatedError(error, t) : undefined}\n />\n\n <Button type=\"submit\" variant=\"primary\" loading={isMutating}>\n {t({ id: 'button.continueWithEmail', message: 'Continue with email' })}\n </Button>\n\n {showPasswordButton && <UsePasswordButton email={email} />}\n </Column>\n );\n};\n","export const assertUnreachable: (_: never) => never = () => {\n throw new Error('Assertion failure');\n};\n","import React from 'react';\nimport { B2BOAuthProviders, AuthFlowType } from '@stytch/core/public';\nimport { arrayUtils } from '@stytch/core';\nimport { useLingui } from '@lingui/react/macro';\n\nimport { useConfig, useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens, ButtonComponent, MainScreenComponent } from '../types/AppScreens';\nimport { OauthProviderParams, useEffectiveAuthConfig } from '../hooks/useEffectiveAuthConfig';\nimport { useProductComponents } from '../utils';\nimport { assertUnreachable } from '../../../utils/assertUnreachable';\nimport { AuthButton as AuthButtonType, getButtonKey, getSsoMethodKey } from '../types/authMethodKeys';\nimport { useLastUsedAuthMethod } from '../hooks/useLastUsedAuthMethod';\nimport Button from '../../components/atoms/Button';\nimport LastUsed from '../../components/molecules/LastUsed';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport { getButtonId, usePresentation } from '../../components/PresentationConfig';\n\n// OAuth helper functions\nexport const getCustomScopesForProvider = (\n oauthProvider: {\n type: B2BOAuthProviders;\n one_tap: boolean;\n customScopes: string[];\n providerParams: Record<string, string>;\n cancel_on_tap_outside?: boolean;\n },\n oauthOptionsCustomScopes: string[] | undefined,\n) => {\n let currentCustomScopes = oauthProvider.customScopes;\n if (Object.keys(currentCustomScopes).length == 0) {\n currentCustomScopes = oauthOptionsCustomScopes as string[];\n }\n return currentCustomScopes;\n};\n\nexport const getProviderParamsForProvider = (\n oauthProvider: {\n type: B2BOAuthProviders;\n one_tap: boolean;\n customScopes: string[];\n providerParams: Record<string, string>;\n cancel_on_tap_outside?: boolean;\n },\n oauthOptionsProviderParams: Record<string, string> | undefined,\n email: string | undefined,\n) => {\n let currentProviderParams = oauthProvider.providerParams;\n if (Object.keys(currentProviderParams).length == 0) {\n currentProviderParams = oauthOptionsProviderParams ?? {};\n }\n\n if (\n email &&\n (oauthProvider.type === B2BOAuthProviders.Google || oauthProvider.type === B2BOAuthProviders.Microsoft) &&\n !('login_hint' in currentProviderParams)\n ) {\n currentProviderParams = {\n ...currentProviderParams,\n login_hint: email,\n };\n }\n\n return currentProviderParams;\n};\n\nexport const SsoAndOAuthButtons = ({ buttons }: { buttons: ButtonComponent[] }) => {\n const { t } = useLingui();\n const [state, dispatch] = useGlobalReducer();\n const { oauthProviderSettings = [] } = useEffectiveAuthConfig();\n const presentation = usePresentation();\n\n const [lastUsedMethod, setLastUsedMethod] = useLastUsedAuthMethod();\n\n const config = useConfig();\n const { loginRedirectURL, signupRedirectURL, discoveryRedirectURL, customScopes, providerParams } =\n config.oauthOptions ?? {};\n\n const { B2BGoogleOneTap, OAuthB2BButton, SSOButton } = useProductComponents(config, 'ssoAndOAuthButtons')!;\n\n // Determine which buttons need to be displayed\n const isDiscoveryFlow = state.flowState.type === AuthFlowType.Discovery;\n const authButtons = buttons.flatMap<AuthButtonType>((button) => {\n if (button === MainScreenComponent.OAuthButtons) {\n return oauthProviderSettings.map((provider) => ({ type: 'oauth', provider }));\n } else if (button === MainScreenComponent.SSOButtons) {\n return isDiscoveryFlow\n ? { type: 'sso-discovery' }\n : (state.flowState.organization?.sso_active_connections?.map((connection) => ({ type: 'sso', connection })) ??\n []);\n } else {\n assertUnreachable(button);\n }\n });\n\n if (authButtons.length === 0) {\n return null;\n }\n\n // Reorder providers based on last used\n const [reorderedButtons, foundLastUsedOAuth] = arrayUtils.moveToFront(\n authButtons,\n (button) => getButtonKey(button) === lastUsedMethod,\n );\n\n // Helper function to create OAuth button component\n const createOAuthButton = (oauthProvider: OauthProviderParams) => {\n const providerProps = {\n customScopes: getCustomScopesForProvider(oauthProvider, customScopes),\n providerParams: getProviderParamsForProvider(oauthProvider, providerParams, state.primary.email),\n };\n\n if (oauthProvider.one_tap) {\n return (\n <B2BGoogleOneTap\n key={oauthProvider.type}\n {...providerProps}\n cancelOnTapOutside={oauthProvider.cancel_on_tap_outside}\n />\n );\n }\n\n return (\n <OAuthB2BButton\n key={oauthProvider.type}\n providerType={oauthProvider.type}\n loginRedirectUrl={loginRedirectURL}\n signupRedirectUrl={signupRedirectURL}\n discoveryRedirectUrl={discoveryRedirectURL}\n onSuccess={() => setLastUsedMethod(oauthProvider.type)}\n {...providerProps}\n />\n );\n };\n\n return (\n <ButtonColumn>\n {reorderedButtons.map((button, index) => {\n const buttonComponent = (() => {\n switch (button.type) {\n case 'oauth':\n return createOAuthButton(button.provider);\n\n case 'sso':\n return (\n <SSOButton\n key={button.connection.display_name}\n connection={button.connection}\n onStart={() => setLastUsedMethod(getSsoMethodKey(button.connection))}\n />\n );\n\n case 'sso-discovery':\n return (\n <Button\n key=\"sso-discovery\"\n variant=\"outline\"\n id={getButtonId('sso-discovery', presentation.options)}\n onClick={() => {\n dispatch({ type: 'transition', screen: AppScreens.SSODiscoveryEmail, history: 'push' });\n }}\n >\n {t({ id: 'provider.continueWithSSO', message: 'Use single sign-on' })}\n </Button>\n );\n\n default:\n assertUnreachable(button);\n }\n })();\n\n return foundLastUsedOAuth && index === 0 ? (\n <LastUsed key={getButtonKey(button)}>{buttonComponent}</LastUsed>\n ) : (\n buttonComponent\n );\n })}\n </ButtonColumn>\n );\n};\n","import {\n GithubIcon,\n HubspotIcon,\n SlackIcon,\n GmailIcon,\n GoogleIcon,\n MicrosoftIcon,\n OktaIcon,\n OutlookIcon,\n YahooIcon,\n} from '../../../assets/logo-color';\n\nexport const oauthIcons = {\n google: GoogleIcon,\n microsoft: MicrosoftIcon,\n hubspot: HubspotIcon,\n slack: SlackIcon,\n github: GithubIcon,\n};\n\nexport const ssoIcons = {\n google: GoogleIcon,\n microsoft: MicrosoftIcon,\n okta: OktaIcon,\n};\n\nexport const emailIcons = {\n gmail: GmailIcon,\n outlook: OutlookIcon,\n yahoo: YahooIcon,\n};\n\nexport type IconNames =\n | keyof typeof oauthIcons //\n | keyof typeof ssoIcons\n | keyof typeof emailIcons;\n","'use client';\n\nimport React from 'react';\nimport { StytchB2BProduct } from './StytchB2BProduct';\nimport { AppScreens } from './types/AppScreens';\nimport { MainScreenComponent } from './types/AppScreens';\nimport { EmailConfirmation } from './screens/EmailConfirmation';\nimport { EmailMethodSelectionScreen } from './screens/EmailMethodSelectionScreen';\nimport { EmailOTPEntryScreen } from './screens/EmailOTPEntryScreen';\nimport { SSODiscoveryEmail } from './screens/SSODiscoveryEmail';\nimport { SSODiscoveryMenu } from './screens/SSODiscoveryMenu';\nimport { SSODiscoveryFallback } from './screens/SSODiscoveryFallback';\nimport { PasswordsEmailForm } from './screens/PasswordEmailForm';\nimport { PasswordsAuthenticate } from './screens/PasswordAuthenticate';\nimport { PasswordsForgotForm } from './screens/PasswordForgotForm';\nimport { PasswordSetNew } from './screens/PasswordSetNew';\nimport { PasswordResetForm } from './screens/PasswordResetForm';\nimport { PasswordResetConfirmation } from './screens/PasswordResetConfirmation';\nimport { EmailForm, EmailDiscoveryForm } from './screens/EmailForm';\nimport { SsoAndOAuthButtons } from './screens/SsoAndOAuthButtons';\nimport { SSOButton } from './components/SSOButton';\nimport { OAuthB2BButton } from './components/OAuthB2BButton';\nimport { B2BGoogleOneTap } from './components/B2BOneTap';\nimport { emailIcons, oauthIcons, ssoIcons } from './components/Icons';\n\nconst EmailFormWithoutPassword = () => <EmailForm showPasswordButton={false} />;\nconst EmailFormWithPassword = () => <EmailForm showPasswordButton />;\nconst EmailDiscoveryFormWithoutPassword = () => <EmailDiscoveryForm showPasswordButton={false} />;\nconst EmailDiscoveryFormWithPassword = () => <EmailDiscoveryForm showPasswordButton />;\n\nexport const emailMagicLinks: StytchB2BProduct = {\n id: 'emailMagicLinks',\n screens: {\n [AppScreens.EmailConfirmation]: EmailConfirmation,\n [AppScreens.EmailMethodSelection]: EmailMethodSelectionScreen,\n },\n mainScreen: {\n [MainScreenComponent.EmailForm]: EmailFormWithoutPassword,\n [MainScreenComponent.EmailDiscoveryForm]: EmailDiscoveryFormWithoutPassword,\n [MainScreenComponent.PasswordEmailCombined]: EmailFormWithPassword,\n [MainScreenComponent.PasswordEmailCombinedDiscovery]: EmailDiscoveryFormWithPassword,\n },\n icons: emailIcons,\n};\n\nexport const emailOtp: StytchB2BProduct = {\n id: 'emailOtp',\n screens: {\n [AppScreens.EmailOTPEntry]: EmailOTPEntryScreen,\n [AppScreens.EmailMethodSelection]: EmailMethodSelectionScreen,\n [AppScreens.EmailConfirmation]: EmailConfirmation,\n },\n mainScreen: {\n [MainScreenComponent.EmailForm]: EmailFormWithoutPassword,\n [MainScreenComponent.EmailDiscoveryForm]: EmailDiscoveryFormWithoutPassword,\n [MainScreenComponent.PasswordEmailCombined]: EmailFormWithPassword,\n [MainScreenComponent.PasswordEmailCombinedDiscovery]: EmailDiscoveryFormWithPassword,\n },\n icons: emailIcons,\n};\n\nexport const sso: StytchB2BProduct = {\n id: 'sso',\n screens: {\n [AppScreens.SSODiscoveryEmail]: SSODiscoveryEmail,\n [AppScreens.SSODiscoveryMenu]: SSODiscoveryMenu,\n [AppScreens.SSODiscoveryFallback]: SSODiscoveryFallback,\n },\n ssoAndOAuthButtons: {\n SsoAndOAuthButtons,\n SSOButton,\n },\n icons: ssoIcons,\n};\n\nexport const passwords: StytchB2BProduct = {\n id: 'passwords',\n screens: {\n [AppScreens.PasswordEmailForm]: PasswordsEmailForm,\n [AppScreens.PasswordAuthenticate]: PasswordsAuthenticate,\n [AppScreens.PasswordForgotForm]: PasswordsForgotForm,\n [AppScreens.PasswordSetNewConfirmation]: PasswordSetNew,\n [AppScreens.PasswordResetForm]: PasswordResetForm,\n [AppScreens.PasswordResetVerifyConfirmation]: PasswordResetConfirmation,\n },\n mainScreen: {\n [MainScreenComponent.PasswordsEmailForm]: PasswordsEmailForm,\n [MainScreenComponent.PasswordEmailCombined]: EmailFormWithPassword,\n [MainScreenComponent.PasswordEmailCombinedDiscovery]: EmailDiscoveryFormWithPassword,\n },\n icons: emailIcons,\n};\n\nexport const oauth: StytchB2BProduct = {\n id: 'oauth',\n screens: {},\n ssoAndOAuthButtons: {\n SsoAndOAuthButtons,\n B2BGoogleOneTap,\n OAuthB2BButton,\n },\n icons: oauthIcons,\n};\n","import { useSyncExternalStore } from 'react';\nimport { useStytch } from '../GlobalContextProvider';\nimport { Member } from '@stytch/core/public';\n\n// useStytchMember is a very lightweight copy-pasta of the hook from stytch-react\n// If we end up calling this in several places, consider hoisting to global context\nexport const useStytchMember = (): Member | null => {\n const stytch = useStytch();\n return useSyncExternalStore(stytch.onStateChange, () => stytch.self.getSync());\n};\n","import React, { ReactNode, useEffect, useRef, useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { useStytchMember } from '../hooks/useStytchMember';\nimport { IDPConsent, useIDPState } from '../../components/organisms/IDPConsent';\nimport { useErrorCallback, useEventCallback, useStytch } from '../GlobalContextProvider';\nimport { useBootstrap } from '../utils';\nimport { ErrorDisplay } from '../../components/molecules/ErrorScreen';\nimport { NoCurrentSessionError } from '@stytch/core/public';\nimport { OAuthAuthorizeParams, OAuthLogoutParams, parseIDPParams } from '../../../utils/idpHelpers';\nimport { IDPLogout, useLogoutState } from '../../components/organisms/IDPLogout';\nimport { useTrustedAuthTokenParams } from '../../components/organisms/IDPContextProvider';\nimport { AuthTokenParams } from '../../../types';\nimport { LoadingScreen } from '../../components/molecules/Loading';\nimport MainContainer from '../../components/molecules/MainContainer';\nimport { usePresentation } from '../../components/PresentationConfig';\n\nconst IDPConsentScreenImpl = ({\n initialError,\n initialParams,\n}: {\n initialError: string | null;\n initialParams: OAuthAuthorizeParams;\n}) => {\n const stytchClient = useStytch();\n const onError = useErrorCallback();\n const onEvent = useEventCallback();\n const { oauthAuthorizeStart, oauthAuthorizeSubmit } = stytchClient.idp;\n\n // TODO: Consumer and B2B Bootstrap hooks should return same shape\n const bootstrap = useBootstrap();\n\n const idpConsentState = useIDPState({\n initialError,\n initialParams,\n oauthAuthorizeStart,\n oauthAuthorizeSubmit,\n onError,\n onEvent,\n });\n\n return <IDPConsent bootstrap={bootstrap} bootstrapNotLoaded={false} {...idpConsentState} />;\n};\n\nconst IDPLogoutScreenImpl = ({\n initialError,\n initialParams,\n navigate,\n}: {\n initialError: string | null;\n initialParams: OAuthLogoutParams;\n navigate?: (href: string) => void;\n}) => {\n const stytchClient = useStytch();\n const onError = useErrorCallback();\n const { oauthLogoutStart } = stytchClient.idp;\n const revokeSession = () => stytchClient.session.revoke({ forceClear: true });\n\n const bootstrap = useBootstrap();\n const idpLogoutState = useLogoutState({\n initialError,\n initialParams,\n oauthLogoutStart,\n revokeSession,\n onError,\n navigate,\n });\n\n return <IDPLogout {...idpLogoutState} bootstrap={bootstrap} bootstrapNotLoaded={false} />;\n};\n\nexport const IDPConsentScreen = ({\n searchParams = window.location.search,\n navigate,\n}: {\n searchParams?: string;\n navigate?: (href: string) => void;\n} = {}) => {\n // Preserve the URL Params seen on first render - even if they change later\n const [{ flow, error }] = useState(parseIDPParams(searchParams));\n const { theme, displayWatermark } = usePresentation();\n\n let content;\n if (flow.type === 'Authorize') {\n content = (\n <EnsureMemberIsLoggedIn>\n <IDPConsentScreenImpl initialError={error} initialParams={flow.params} />\n </EnsureMemberIsLoggedIn>\n );\n } else if (flow.type === 'Logout') {\n content = <IDPLogoutScreenImpl initialError={error} initialParams={flow.params} navigate={navigate} />;\n }\n\n return (\n <MainContainer theme={theme} displayWatermark={displayWatermark}>\n {content}\n </MainContainer>\n );\n};\n\nconst EnsureMemberIsLoggedIn = ({ children }: { children: ReactNode }) => {\n const { t } = useLingui();\n const member = useStytchMember();\n const onError = useErrorCallback();\n const onErrorRef = useRef(onError);\n useEffect(() => {\n onErrorRef.current = onError;\n }, [onError]);\n\n // if a trusted auth token is provided, attest it before rendering the consent screen\n const stytchClient = useStytch();\n const authParams = useTrustedAuthTokenParams();\n const [attesting, setAttesting] = useState(false);\n const [attested, setAttested] = useState(false);\n\n useEffect(() => {\n if (attesting || attested) return;\n\n const attestTrustedToken = async (authParams: AuthTokenParams | undefined): Promise<void> => {\n if (authParams?.trustedAuthToken && authParams?.tokenProfileID) {\n setAttesting(true);\n const token = authParams.trustedAuthToken;\n const profile_id = authParams.tokenProfileID;\n\n // revoke the current session before calling attest\n // store the member to refer to its organization_id later\n const member = stytchClient.self.getSync();\n if (member) {\n await stytchClient.session.revoke();\n }\n try {\n await stytchClient.session.attest({\n token,\n profile_id,\n organization_id: member?.organization_id,\n session_duration_minutes: 60,\n });\n } catch (error) {\n onErrorRef.current(error as Error);\n } finally {\n setAttesting(false);\n setAttested(true);\n }\n }\n // set this either way to short-circuit the useEffect below\n setAttested(true);\n };\n attestTrustedToken(authParams);\n }, [authParams, attesting, attested, stytchClient]);\n\n useEffect(() => {\n if (member) return;\n onErrorRef.current(new NoCurrentSessionError());\n }, [member]);\n\n if (attesting) {\n return <LoadingScreen />;\n } else if (member) {\n return children;\n } else {\n return (\n <ErrorDisplay\n text={t({\n id: 'idpConsent.noActiveSession',\n message: 'No active session detected. Please log in to continue.',\n })}\n />\n );\n }\n};\n","import React, { useEffect } from 'react';\nimport { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { B2BIDPSDKConfig, B2BSDKConfig, DeprecatedSDKConfig, StytchB2BExtendedLoginConfig } from '../../types';\nimport { InternalAppContainer } from './InternalAppContainer';\nimport * as B2BProducts from './B2BProducts';\nimport { PresentationContext, usePresentationWithDefault } from '../components/PresentationConfig';\nimport { readB2BInternals } from '../../utils/internal';\nimport { DEFAULT_STATE, GlobalContextProvider } from './GlobalContextProvider';\nimport { IDPContextProvider } from '../components/organisms/IDPContextProvider';\nimport { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper';\nimport { messages } from '../../messages/b2b/en';\nimport { IDPConsentScreen } from './screens/IDPConsent';\nimport { logger, RUN_IN_DEV } from '@stytch/core';\n\n/**\n * Wrapper to add default organizationProducts value. This is done to preserve the ability for a future\n * component that doesn't do this, allowing B2B products to be properly tree-shaken (which is also why this is currently\n * in a completely different file)\n */\nexport const AppContainer = ({\n config,\n styles,\n ...props\n}: B2BSDKConfig<StytchProjectConfigurationInput> & DeprecatedSDKConfig) => {\n RUN_IN_DEV(() => {\n if (styles) {\n logger.error(\n 'styles is deprecated and has no effect. Use the presentation prop instead.\\n' +\n 'See https://staging.stytch.com/docs/api-reference/b2b/frontend-sdks/react/upgrade-guide',\n );\n }\n });\n\n const internalConfig = {\n ...config,\n organizationProducts: Object.values(B2BProducts),\n };\n\n return <InternalAppContainer config={internalConfig} {...props}></InternalAppContainer>;\n};\n\nexport const B2BIDPContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n client,\n presentation,\n callbacks,\n strings,\n getIDPConsentManifest,\n trustedAuthTokenParams,\n styles,\n}: B2BIDPSDKConfig<TProjectConfiguration> & DeprecatedSDKConfig) => {\n const presentationValue = usePresentationWithDefault(presentation, false, []);\n\n useEffect(() => {\n readB2BInternals(client)\n .bootstrap.getAsync()\n .then((data) => {\n readB2BInternals(client).networkClient.logEvent({\n name: 'render_b2b_idp_screen',\n details: { bootstrap: data },\n });\n });\n }, [client]);\n\n RUN_IN_DEV(() => {\n if (styles) {\n logger.error(\n 'styles is deprecated and has no effect. Use the presentation prop instead.\\n' +\n 'See https://staging.stytch.com/docs/api-reference/b2b/frontend-sdks/react/upgrade-guide',\n );\n }\n });\n\n return (\n <GlobalContextProvider\n client={client}\n config={{} as StytchB2BExtendedLoginConfig}\n callbacks={callbacks}\n initialState={DEFAULT_STATE}\n >\n <IDPContextProvider consentManifestGenerator={getIDPConsentManifest} authTokenParams={trustedAuthTokenParams}>\n <PresentationContext.Provider value={presentationValue}>\n <I18nProviderWrapper messages={messages} overrides={strings}>\n <IDPConsentScreen />\n </I18nProviderWrapper>\n </PresentationContext.Provider>\n </IDPContextProvider>\n </GlobalContextProvider>\n );\n};\n","import React, { useLayoutEffect, useRef, useState } from 'react';\nimport { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { injectCssIntoNode, injectGlobalStyle } from '@stytch/internal-style-injector';\nimport { ComponentType } from 'react';\nimport { invariant } from '../utils/invariant';\nimport { useStytchB2BClient, useIsMounted__INTERNAL } from '../b2b/StytchB2BContext';\nimport { noProviderError, serverRenderError } from '../utils/errors';\nimport { StytchB2BClient } from '../../../b2b/StytchB2BClient';\nimport { StytchB2BUIConfig } from '../../../types';\nimport { createPortal } from 'react-dom';\n\n// Mirrors createB2CComponent and createWebComponent\nexport function createB2BComponent<\n Props extends {\n client: StytchB2BClient<TProjectConfiguration>;\n config?: StytchB2BUIConfig;\n },\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>(name: string, Component: ComponentType<Props>) {\n const Wrapped: ComponentType<Omit<Props, 'client'>> = (props) => {\n serverRenderError(name);\n invariant(useIsMounted__INTERNAL(), noProviderError(`<${name} />`));\n\n const client = useStytchB2BClient<TProjectConfiguration>();\n\n const shadow = props.config?.enableShadowDOM;\n const root = useRef<HTMLDivElement>(null);\n const [mountPoint, setMountPoint] = useState<HTMLDivElement>();\n\n useLayoutEffect(() => {\n if (shadow) {\n if (!root.current || root.current.shadowRoot) return;\n const shadowRoot = root.current.attachShadow({ mode: 'open' });\n const mountPoint = document.createElement('div');\n\n shadowRoot.appendChild(injectCssIntoNode());\n shadowRoot.appendChild(mountPoint);\n\n setMountPoint(mountPoint);\n } else {\n injectGlobalStyle();\n }\n }, [shadow]);\n\n const element = <Component {...(props as Props)} client={client} />;\n if (shadow) {\n return <div ref={root}>{mountPoint && createPortal(element, mountPoint)}</div>;\n } else {\n return element;\n }\n };\n\n Wrapped.displayName = name;\n return Wrapped;\n}\n","import { Callbacks, StringsOptions, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { PresentationConfig, StytchB2BUIConfig } from '../../../types';\nimport { AppContainer } from '../../b2b/App';\nimport { createB2BComponent } from '../bindings/createB2BComponent';\n\nexport interface StytchB2BProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> extends StringsOptions {\n /**\n * An optional {@link PresentationConfig} to customize the UI presentation.\n */\n presentation?: PresentationConfig;\n /**\n * An optional {@link Callbacks} object.\n *\n * @example\n * {\n * onError: ({message}) => {\n * console.error('Stytch error', message)\n * }\n * }\n *\n * @example\n * {\n * onEvent: ({type, data}) => {\n * if(type === StytchEventType.B2BMagicLinkAuthenticate) {\n * console.log('Logged in with', data);\n * }\n * }\n * }\n */\n callbacks?: Callbacks<TProjectConfiguration>;\n /**\n * A {@link StytchB2BUIConfig} object. Add products and product-specific config to this object to change the login methods shown.\n *\n *\n * @example\n * {\n * products: [B2BProducts.emailMagicLinks],\n * authFlowType: \"Discovery\",\n * emailMagicLinksOptions: {\n * discoveryRedirectURL: 'https://example.com/authenticate',\n * },\n * sessionOptions: {\n * sessionDurationMinutes: 60,\n * },\n * }\n *\n * @example\n * {\n * products: [B2BProducts.emailMagicLinks, B2BProducts.sso],\n * authFlowType: \"Organization\",\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * ssoOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * sessionOptions: {\n * sessionDurationMinutes: 60,\n * },\n * }\n */\n config: StytchB2BUIConfig;\n}\n\n/**\n * The Stytch B2B UI component.\n * This component can only be used with a Stytch B2B UI Client\n * passed into the StytchB2BProvider.\n *\n * See the {@link https://stytch.com/docs/b2b/sdks online reference}\n *\n * @example\n * <StytchB2B\n * config={{\n * authFlowType: \"Organization\",\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * ssoOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * sessionOptions: {\n * sessionDurationMinutes: 60,\n * }\n * }}\n * presentation={{\n * theme: { primary: '#0577CA' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchB2B = /* @__PURE__ */ createB2BComponent('StytchB2B', AppContainer);\n","import { StytchB2BProps } from './Stytch';\nimport { B2BIDPContainer } from '../../b2b/App';\nimport { createB2BComponent } from '../bindings/createB2BComponent';\nimport { AuthTokenParams, B2BIDPConsentManifestGenerator } from '../../../types';\n\nexport type B2BIdentityProviderProps = Omit<StytchB2BProps, 'config'> & {\n /**\n * Optional {@link B2BIDPConsentManifestGenerator} to customize the consent screen.\n */\n getIDPConsentManifest?: B2BIDPConsentManifestGenerator;\n /**\n * Optional trusted auth token parameters to attest before the OAuth flow.\n */\n trustedAuthTokenParams?: AuthTokenParams;\n};\n\n/**\n * The Stytch B2B IDP component.\n * Parses OAuth Authorization params (client_id, scope, nonce, etc.) out of the page URL.\n * Requires the user to be logged in.\n * This component can only be used with a Stytch B2B UI Client\n * passed into the StytchB2BProvider.\n *\n * See the {@link https://stytch.com/docs/b2b/sdks online reference}\n *\n * @example\n * <B2BIdentityProvider\n * presentation={{\n * theme: { primary: '#ff00f7' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const B2BIdentityProvider = /* @__PURE__ */ createB2BComponent('B2BIdentityProvider', B2BIDPContainer);\n","'use client';\n\nimport React, { ComponentType, ReactNode } from 'react';\n\nimport type { Member, MemberSession, Organization, StytchProjectConfigurationInput } from '@stytch/web/b2b';\nimport { StytchB2BClient } from '@stytch/web/b2b/headless';\n\nexport { useStytchB2BClient, withStytchB2BClient, withStytchPermissions } from '@stytch/web/react/b2b';\n\nimport {\n StytchB2BProvider as StytchB2BProviderShared,\n useStytchIsAuthorized as useStytchIsAuthorizedShared,\n useStytchMemberSession as useStytchMemberSessionShared,\n useStytchMember as useStytchMemberShared,\n useStytchOrganization as useStytchOrganizationShared,\n withStytchMemberSession as withStytchMemberSessionShared,\n withStytchMember as withStytchMemberShared,\n withStytchOrganization as withStytchOrganizationShared,\n} from '@stytch/web/react/b2b';\n\n/**\n * Returns the active Member.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the member data is from persistent storage.\n * @example\n * const {member, isInitialized, fromCache} = useStytchMember();\n * if (!isInitialized) {\n * return <p>Loading...</p>;\n * }\n * return (<h1>Welcome, {member.name}</h1>);\n */\nexport const useStytchMember = useStytchMemberShared as <TAssumeHydrated extends boolean = true>() => ReturnType<\n typeof useStytchMemberShared<TAssumeHydrated>\n>;\n\n/**\n * Returns the active member's Stytch member session.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the session data is from persistent storage.\n * @example\n * const {session, isInitialized, fromCache} = useStytchMemberSession();\n * useEffect(() => {\n * if (!isInitialized) {\n * return;\n * }\n * if (!session) {\n * router.replace('/login');\n * }\n * }, [session, isInitialized]);\n */\nexport const useStytchMemberSession = useStytchMemberSessionShared as <\n TAssumeHydrated extends boolean = true,\n>() => ReturnType<typeof useStytchMemberSessionShared<TAssumeHydrated>>;\n\n/**\n * Returns the active Stytch organization.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the organization data is from persistent storage.\n * @example\n * const {organization, isInitialized, fromCache} = useStytchOrganization();\n * if (!isInitialized) {\n * return <p>Loading...</p>;\n * }\n * return <p>Welcome to {organization.organization_name}</p>;\n */\nexport const useStytchOrganization = useStytchOrganizationShared as <\n TAssumeHydrated extends boolean = true,\n>() => ReturnType<typeof useStytchOrganizationShared<TAssumeHydrated>>;\n\n/**\n * Determines whether the logged-in member is allowed to perform the specified action on the specified resource.\n * Returns `true` if the member can perform the action, `false` otherwise.\n *\n * If the member is not logged in, this method will always return false.\n * If the resource or action provided are not valid for the configured RBAC policy, this method will return false.\n *\n * Remember - authorization checks for sensitive actions should always occur on the backend as well.\n * @example\n * const { isAuthorized } = useStytchIsAuthorized('documents', 'edit');\n * return <button disabled={!isAuthorized}>Edit</button>\n */\nexport const useStytchIsAuthorized = useStytchIsAuthorizedShared as <TAssumeHydrated extends boolean = false>(\n resourceId: string,\n action: string,\n) => ReturnType<typeof useStytchIsAuthorizedShared<TAssumeHydrated>>;\n\nexport const withStytchMember = withStytchMemberShared as <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & { stytchMember: Member | null; stytchMemberIsInitialized: boolean; stytchMemberIsFromCache: boolean }\n >,\n) => ReturnType<typeof withStytchMemberShared<T, TAssumeHydrated>>;\n\nexport const withStytchMemberSession = withStytchMemberSessionShared as <\n T extends object,\n TAssumeHydrated extends boolean = false,\n>(\n Component: ComponentType<\n T & {\n stytchMemberSession: MemberSession | null;\n stytchMemberSessionIsInitialized: boolean;\n stytchMemberSessionIsFromCache: boolean;\n }\n >,\n) => ReturnType<typeof withStytchMemberSessionShared<T, TAssumeHydrated>>;\n\nexport const withStytchOrganization = withStytchOrganizationShared as <\n T extends object,\n TAssumeHydrated extends boolean = false,\n>(\n Component: ComponentType<\n T & {\n stytchOrganization: Organization | null;\n stytchOrganizationIsInitialized: boolean;\n stytchOrganizationIsFromCache: boolean;\n }\n >,\n) => ReturnType<typeof withStytchOrganizationShared<T, TAssumeHydrated>>;\n\nexport interface StytchB2BProviderProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> {\n /**\n * A Stytch client instance, a {@link StytchB2BClient}\n */\n stytch: StytchB2BClient<TProjectConfiguration>;\n /**\n * When true, the provider will assume that the component will only be\n * rendered in a browser environment, either in a single-page application or\n * after completing hydration of a server-rendered application. This allows\n * cached values to be retrieved from the browser on the first render, meaning\n * that the `isInitialized` value returned from Stytch hooks will be `true`\n * starting from the first render.\n *\n * When `false`, the provider will defer initialization until after the first\n * render, and `isInitialized` will initially be `false`.\n *\n * If you encounter hydration errors relating to the use of this component,\n * set this to `false`.\n *\n * This value defaults to `true` in `@stytch/react`.\n */\n assumeHydrated?: boolean;\n children?: ReactNode;\n}\n\n/**\n * The Stytch Context Provider.\n * Wrap your application with this component in order to use Stytch everywhere in your app.\n * @example\n * const stytch = createStytchB2BClient('public-token-<find yours in the stytch dashboard>')\n *\n * ReactDOM.render(\n * <StytchB2BProvider stytch={stytch}>\n * <App />\n * </StytchProvider>,\n * document.getElementById('root'),\n * )\n */\nexport const StytchB2BProvider = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>({\n stytch,\n children,\n assumeHydrated = true,\n}: StytchB2BProviderProps<TProjectConfiguration>): JSX.Element => (\n <StytchB2BProviderShared stytch={stytch} assumeHydrated={assumeHydrated}>\n {children}\n </StytchB2BProviderShared>\n);\n","import { createStytchB2BClient } from '@stytch/web/b2b/headless';\n\n/**\n * @deprecated - use {@link createStytchB2BClient} instead\n */\nexport const createStytchB2BUIClient = createStytchB2BClient;\n\nexport {\n StytchB2BProvider,\n useStytchB2BClient,\n useStytchMemberSession,\n useStytchMember,\n useStytchIsAuthorized,\n useStytchOrganization,\n withStytchB2BClient,\n withStytchMemberSession,\n withStytchMember,\n withStytchOrganization,\n withStytchPermissions,\n} from './StytchB2BContext';\n\nexport * from '@stytch/web/b2b/headless';\nexport * from '@stytch/web/common';\nexport { StytchB2B, B2BIdentityProvider } from '@stytch/web/react/b2b';\nexport { B2BProducts } from '@stytch/web/b2b';\n\nexport type { StytchB2BProviderProps } from './StytchB2BContext';\nexport type { StytchB2BProps, B2BIdentityProviderProps } from '@stytch/web/react/b2b';\nexport type {\n B2BSDKConfig,\n B2BIDPSDKConfig,\n StytchB2BUIConfig,\n B2BIDPConsentManifestGenerator,\n Strings,\n} from '@stytch/web/b2b';\n"],"names":["SSOIcon","size","DEFAULT_ICON_SIZE","props","React","svg","width","height","viewBox","xmlns","g","clipPath","path","d","fill","stroke","strokeWidth","defs","id","rect","transform","HubspotIcon","fillRule","clipRule","OktaIcon","className","_styles","darkInvert","messages","_messages","useSWRConfig","useRef","useStateWithDeps","UNDEFINED","useCallback","serialize","mergeObjects","getTimestamp","useIsomorphicLayoutEffect","withMiddleware","useSWR","KeyToStytchEventMap","StytchEventType","B2BMagicLinkAuthenticate","B2BSSOAuthenticate","B2BSSODiscoverConnections","B2BMagicLinkDiscoveryAuthenticate","B2BDiscoveryOrganizationsCreate","B2BDiscoveryIntermediateSessionExchange","B2BMagicLinkEmailLoginOrSignup","B2BMagicLinkEmailDiscoverySend","B2BOAuthAuthenticate","B2BOAuthDiscoveryAuthenticate","B2BSMSOTPSend","B2BSMSOTPAuthenticate","B2BTOTPCreate","B2BTOTPAuthenticate","B2BRecoveryCodesRecover","B2BImpersonationAuthenticate","B2BOTPsEmailAuthenticate","B2BOTPsEmailDiscoveryAuthenticate","B2BOTPsEmailDiscoverySend","B2BOTPsEmailLoginOrSignup","B2BOrganizationsGetBySlug","getStytchEventByKey","key","useMutate","fetcher","options","onEvent","useEventCallback","onError","useErrorCallback","result","useSWRMutation","throwOnError","onSuccess","data","config","eventType","type","error","isMutating","undefined","useExtractSlug","state","dispatch","useGlobalReducer","pattern","setPattern","useState","useConfig","stytchClient","useStytch","slug","organizationSlug","extractFromPattern","window","location","href","trigger","isSearching","_","arg","organization","getBySlug","organization_slug","errorType","ErrorType","Organization","canGoBack","useEffect","readB2BInternals","bootstrap","getAsync","then","slugPattern","flowState","screen","AppScreens","Main","AuthFlowType","resultPending","useBootstrap","setBootstrap","getSync","onAuthenticateSuccess","response","includedMfaMethods","mfaProductInclude","onDiscoveryAuthenticateSuccess","email","email_address","discoveredOrganizations","discovered_organizations","url","URL","search","currentUrl","toString","trim","regexPattern","replace","regex","RegExp","match","hasProduct","products","product","some","p","useProductComponents","organizationProducts","screenType","useMemo","map","Object","assign","isButtonsComponent","component","MainScreenComponent","OAuthButtons","SSOButtons","generateProductComponentsOrdering","flowStateType","productsSet","Set","displayEmailAndPasswordsTogether","has","emailPasswordCombinedComponent","PasswordEmailCombined","PasswordEmailCombinedDiscovery","productComponentsSet","reduce","components","add","EmailForm","EmailDiscoveryForm","isSsoValid","Discovery","sso_active_connections","length","PasswordsEmailForm","Array","from","groups","i","arr","prevComponent","shouldJoinPreviousGroup","push","prevGroup","Divider","getParamsFromB2BOAuthProviderConfig","provider","providerType","oneTap","customScopes","providerParams","cancelOnTapOutside","B2BOAuthProviders","Google","one_tap","cancel_on_tap_outside","productsToAuthMethods","oauth","sso","emailMagicLinks","emailOtp","passwords","oauthProvidersToAuthMethods","Microsoft","HubSpot","Slack","GitHub","authMethodsToProducts","fromEntries","entries","authMethod","oauthMethodsToOauthProviders","method","authMethodToProduct","allOauthProviders","values","flattenConfigToAuthMethods","oauthProviders","flatMap","filter","isTruthy","useOAuthProviderConfigs","oauthOptions","providers","useRestrictedAuthMethods","primaryAuthMethods","primary","hasPrimaryAuthMethods","restrictedAuthMethods","auth_methods","allowed_auth_methods","useEffectiveAuthConfig","oauthProviderConfigs","flattenedConfiguredAuthMethods","authMethodsToShow","restrictedAuthMethodsInUiConfig","productIds","productId","find","oauthProviderSettings","oauthProvider","isButtonGroup","group","every","MainScreen","usePresentation","useLingui","emailVerified","isLoading","productComponentsOrdering","mainScreenComponents","SsoAndOAuthButtons","organizationName","organization_name","title","PasswordReset","showVerifyEmailCopy","LoadingScreen","Column","gap","hideHeaderText","Typography","variant","align","buttons","index","Component","ConfirmationScreen","useMountEffect","AuthenticateFlowComplete","Confirmation","Arrow","styles","arrow","OrganizationRow","action","onClick","organization_logo_url","logo","img","src","alt","div","role","button","classNames","organizationRow","hoverTriggerClass","buttonClassNames","left","nameText","VerticalTransition","rootClassName","right","rightContent","Badge","secondary","isJoinViaJitType","DiscoverNoOrganizations","createOrganizationEnabled","goBack","stytchCreateOrganization","isCreateLoading","discovery","organizations","create","session_duration_minutes","sessionOptions","sessionDurationMinutes","error_type","OrganizationDiscoveryClaimedDomain","Default","shouldAutomaticallyCreateOrganization","directCreateOrganizationForNoMembership","formState","discoveryState","disableCreateOrganization","ButtonColumn","Button","shouldAllowDirectLoginToOrganization","status","activeOrganizations","org","membership","hasBlockingConditions","ignoreInvites","ignoreJitProvisioning","shouldDirectLoginConfigEnabled","directLoginForSingleMembership","isExchangeInProgress","directLoginOrganization","handleDiscoveryOrganizationStart","discoveredOrganization","primary_required","allowedAuthMethods","sso_default_connection_id","startSso","stytchDiscoveryExchange","organizationId","organization_id","connectionId","start","connection_id","login_redirect_url","ssoOptions","loginRedirectURL","signup_redirect_url","signupRedirectURL","intermediateSessions","exchange","LoggingInScreen","organizationButtons","createOrganizationButton","goBackButton","top","bottom","mfaOptions","B2BMFAProducts","totp","messageDescriptor","TOTPEnrollmentQRCode","smsOtp","SMSOTPEnrollment","MFAEnrollmentSelectionScreen","mfaProductOrder","organizationMfaOptionsSupported","mfa","primaryInfo","handleNavigate","history","displayOptions","optionsToDisplay","getEnabledMethods","allMethods","B2B_MFA_METHODS","orgSupportedMethods","uiIncludedMethods","option","delete","DEFAULT_COUNTRY_CODE","InvalidPhoneNumberError","StytchSDKError","constructor","SMSOTPEnrollScreen","smsOtpOptions","isSending","sendError","enrolledNumber","memberId","countryCode","setCountryCode","phoneNumber","setPhoneNumber","errorMessage","getTranslatedError","parsePhoneNumber","getExampleNumber","getPhoneNumberProps","clientsideServices","sendSms","parsedNumber","locale","otps","sms","send","mfa_phone_number","member_id","formattedPhoneNumber","COUNTRIES_LIST","handleSubmit","e","preventDefault","formatNumberToIncludeCountryCode","country","isValid","number","as","onSubmit","PhoneInput","setCountry","phone","setPhone","loading","disabled","SMSOTPEntryScreen","isEnrolling","codeExpiration","formattedDestination","enrolledMfaMethods","memberPhoneNumber","resendCountdown","useCountdown","message","errorToast","authenticate","isAuthenticating","authenticateError","otp","code","clear","shouldCreate","catch","handleFormatNumber","parsedPhoneNumber","national","formatNumber","isTotpAvailable","includes","enrolledMethod","handleSwitchToTotp","TOTPEntry","handleResendOTP","handleBack","resendButton","ResendOTPButton","countdown","isSubmitting","resendOTP","switchToTotpButton","backButton","SentOTPEntry","expiration","getTime","RecoveryCodeEntryScreen","recoveryCode","recoveryCodes","recover","recovery_code","setRecoveryCode","Input","input","value","onChange","target","placeholder","label","hideLabel","required","autoComplete","spellCheck","CodeContainer","children","container","RecoveryCodeSaveScreen","enrollment","handleContinue","fileContent","newline","navigator","platform","blob","Blob","join","createObjectURL","filename","copied","setCopied","useTimedBoolean","handleCodesCopy","clipboard","writeText","maxCodeLength","Math","max","TextColumn","header","body","font","ul","codes","style","li","ButtonAnchor","download","triggered","TOTPEnrollQRScreen","createError","isCreating","createTotp","handleShowManualCode","qrCode","qr","CHUNK_SIZE","TOTPEnrollManualScreen","secret","displaySecret","toLowerCase","secretChunked","split","Boolean","codeRef","columnCount","useColumnCount","handleCodeCopy","selection","getSelection","current","empty","range","document","createRange","selectNodeContents","addRange","codeContainer","ref","part","span","chunksCount","setColumnCount","useLayoutEffect","updateRowCount","containerWidth","clientWidth","spanWidth","querySelectorAll","elem","fittedColumns","floor","fittedColumnsWithGaps","rows","ceil","evenColumns","ResizeObserver","observer","observe","disconnect","TOTPEntryScreen","isSmsOtpAvailable","handleSwitchToRecoveryCode","RecoveryCodeEntry","handleSwitchToSms","SMSOTPEntry","OTPEntry","instruction","helperContent","useIsOnlyFloatingOneTap","isOnlyFloatingOneTap","isGoogleOneTap","providerInfo","OAuthB2BButton","loginRedirectUrl","signupRedirectUrl","discoveryRedirectUrl","presentation","iconRegistry","getButtonId","icon","Icon","onButtonClick","providerClient","custom_scopes","provider_params","discovery_redirect_url","useLastUsedAuthMethod","stytch","publicToken","lastUsedMethod","safeLocalStorage","getItem","setLastUsedMethod","setItem","B2BGoogleOneTap","oneTapError","setOneTapError","isUnmounted","useIsUnmounted","attemptToLoadOneTap","clientResult","createOneTapClient","success","reason","OneTapErrors","NoConfiguredOAuthClient","DefaultProviderNotAllowed","logger","client","oneTapCallback","createOnSuccessHandler","redirectOnSuccess","Error","createOnDiscoverySuccessHandler","discoveryRedirectURL","renderResult","render","callback","position","OneTapPositions","floating","cancel","OriginNotAllowedForClient","InvalidOAuthClient","$client","err","fallbackButton","fallbackWithLastUsed","LastUsed","DEV","authTokenConfig","mutationKey","defaultError","EmailMagicLink","discovery_oauth","multi_tenant_magic_links","multi_tenant_impersonation","errorTypeMap","ad_blocker_detected","AdBlockerDetected","AppContainer","triggerError","triggerEvent","displayWatermark","theme","currentScreen","screenComponentMap","handleStytchAPIError","defaultErrorType","extractErrorType","isTokenAuthLoading","setIsTokenAuthLoading","mutate","parsed","parseAuthenticateUrl","handled","tokenType","authenticateByUrl","event","finally","MainContainer","orgLogo","defaultScreenComponents","LoggedIn","ErrorScreen","MFAEnrollmentSelection","RecoveryCodeSave","TOTPEnrollmentManual","ScreenComponent","Logo","appLogo","InternalAppContainer","callbacks","strings","setDisplayWatermark","networkClient","logEvent","name","details","getRedirectTypeFromUrl","redirectType","searchParams","get","authFlowType","RedirectURLType","ResetPassword","initialState","DEFAULT_STATE","PasswordResetForm","configWithDefaults","presentationValue","usePresentationWithDefault","GlobalContextProvider","PresentationContext","Provider","I18nProviderWrapper","overrides","Container","useEmailDomain","emailDomains","setEmailDomains","emailMagicLinksOptions","domainHint","useEmlLoginOrSignup","magicLinks","loginOrSignup","login_template_id","loginTemplateId","signup_template_id","signupTemplateId","EmailConfirmation","useEmlDiscoverySend","emailDomain","sendLoginOrSignupEml","isSendingLoginOrSignupEml","sendDiscoveryEml","isSendingDiscoveryEml","emailState","userSuppliedEmail","resend","EmailConfirmationView","DEFAULT_OTP_EXPIRATION_MS","getOtpCodeExpiration","Date","now","useEmailOtpDiscoverySend","_key","emailOtpOptions","useEmailOtpLoginOrSignup","EmailMethodSelectionScreen","sendDiscoveryEmlError","reset","resetSendDiscoveryEml","sendDiscoveryOtp","isSendingDiscoveryOtp","sendDiscoveryOtpError","resetSendDiscoveryOtp","sendLoginOrSignupEmlError","resetSendLoginOrSignupEml","sendLoginOrSignupOtp","isSendingLoginOrSignupOtp","sendLoginOrSignupOtpError","resetSendLoginOrSignupOtp","handleChooseMethod","ErrorText","EmailOTPEntryScreen","otpState","emailOtpDiscovery","discoveryAuthenticate","emailAddress","isAuthenticatingAny","resetAll","resp","useSsoDiscoveryConnection","discoverConnections","SSODiscoveryEmail","setEmail","setError","setIsLoading","tryGetConnections","connections","extractErrorMessage","connection","EmailInput","iconMap","okta","SSOButton","onStart","display_name","identity_provider","iconName","getSsoMethodKey","extractConnectionId","startsWith","slice","getButtonKey","availableConnections","lastUsedSso","foundLastUsed","arrayUtils","moveToFront","SSODiscoveryMenu","ssoDiscoveryState","SSODiscoveryFallback","setSlug","setIsSubmitting","lookupOrganization","handleTryAnotherMethod","usePasswordInput","passwordState","password","setPassword","setErrorMessage","submitPassword","DEFAULT_SESSION_DURATION_MINUTES","passwordOptions","B2BPasswordAuthenticate","submitDiscoveryPassword","B2BPasswordDiscoveryAuthenticate","emailEligibleForJITProvisioning","email_jit_provisioning","email_allowed_domains","pop","handleNonMemberReset","dataLayer","resetPasswordRedirectURL","PasswordResetVerifyConfirmation","hideInput","setHideInput","EMAIL_REGEX","searchManager","searchMember","member","onGetHelp","PasswordForgotForm","PasswordInput","PasswordsAuthenticate","PasswordsForgotForm","resetByEmailStart","reset_password_redirect_url","reset_password_expiration_minutes","resetPasswordExpirationMinutes","reset_password_template_id","resetPasswordTemplateId","verify_email_template_id","verifyEmailTemplateId","B2BPasswordResetByEmailStart","PasswordSetNewConfirmation","PasswordSetNew","resendResetPassword","B2BPasswordDiscoveryResetStart","EmailActionLayout","description","Trans","bold","b","useB2BBootstrap","resetToken","resetTokenType","token","passwordError","setPasswordError","policy","updateStrengthCheck","debounce","strengthCheck","score","valid_password","zxcvbn_feedback","luds_feedback","strength_policy","breached_password","common","passwordInvalid","isPasswordBreached","passwordScore","passwordWarning","warning","passwordSuggestions","suggestions","missingCharacters","missing_characters","missingComplexity","missing_complexity","magic_links_token","clearStytchTokenParams","onPasswordChange","resetByEmail","password_reset_token","B2BPasswordResetByEmail","B2BDiscoveryPasswordReset","resetBySession","B2BPasswordResetBySession","passwordInputProps","getNewPasswordProps","noop","PasswordError","PasswordResetConfirmation","additionalActions","EmailProviderLink","emailProviderInfo","gmail","outlook","UsePasswordButton","handleUsePassword","JIT_PROVISIONING_ERRORS","useParseErrorMessage","showPasswordButton","emailInput","setEmailInput","parseErrorMessage","enableEml","enableOtp","providedEmail","stytchEmlLoginOrSignup","emlError","emlIsMutating","stytchOtpLoginOrSignup","otpError","otpIsMutating","EmailMethodSelection","stytchEmlDiscoverySend","stytchOtpDiscoverySend","assertUnreachable","getCustomScopesForProvider","oauthOptionsCustomScopes","currentCustomScopes","keys","getProviderParamsForProvider","oauthOptionsProviderParams","currentProviderParams","login_hint","isDiscoveryFlow","authButtons","reorderedButtons","foundLastUsedOAuth","createOAuthButton","providerProps","buttonComponent","oauthIcons","google","GoogleIcon","microsoft","MicrosoftIcon","hubspot","slack","SlackIcon","github","GithubIcon","ssoIcons","emailIcons","GmailIcon","OutlookIcon","yahoo","YahooIcon","EmailFormWithoutPassword","EmailFormWithPassword","EmailDiscoveryFormWithoutPassword","EmailDiscoveryFormWithPassword","screens","mainScreen","icons","EmailOTPEntry","ssoAndOAuthButtons","PasswordEmailForm","PasswordAuthenticate","useStytchMember","useSyncExternalStore","onStateChange","self","IDPConsentScreenImpl","initialError","initialParams","oauthAuthorizeStart","oauthAuthorizeSubmit","idp","idpConsentState","useIDPState","IDPConsent","bootstrapNotLoaded","IDPLogoutScreenImpl","navigate","oauthLogoutStart","revokeSession","session","revoke","forceClear","idpLogoutState","useLogoutState","IDPLogout","IDPConsentScreen","flow","parseIDPParams","content","EnsureMemberIsLoggedIn","params","onErrorRef","authParams","useTrustedAuthTokenParams","attesting","setAttesting","attested","setAttested","attestTrustedToken","trustedAuthToken","tokenProfileID","profile_id","attest","NoCurrentSessionError","ErrorDisplay","text","internalConfig","B2BProducts","B2BIDPContainer","getIDPConsentManifest","trustedAuthTokenParams","IDPContextProvider","consentManifestGenerator","authTokenParams","createB2BComponent","Wrapped","invariant","useIsMounted__INTERNAL","noProviderError","useStytchB2BClient","shadow","enableShadowDOM","root","mountPoint","setMountPoint","shadowRoot","attachShadow","mode","createElement","appendChild","injectCssIntoNode","injectGlobalStyle","element","createPortal","displayName","StytchB2B","B2BIdentityProvider","useStytchMemberShared","useStytchMemberSession","useStytchMemberSessionShared","useStytchOrganization","useStytchOrganizationShared","useStytchIsAuthorized","useStytchIsAuthorizedShared","withStytchMember","withStytchMemberShared","withStytchMemberSession","withStytchMemberSessionShared","withStytchOrganization","withStytchOrganizationShared","StytchB2BProvider","assumeHydrated","StytchB2BProviderShared","createStytchB2BUIClient","createStytchB2BClient"],"mappings":"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","x_google_ignoreList":[4]}
|