@seamless-auth/react 0.9.0 → 0.10.0
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 +71 -0
- package/README.md +86 -0
- package/dist/client/createSeamlessAuthClient.d.ts +25 -2
- package/dist/client/errors.d.ts +23 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/components/DeviceNameModal.d.ts +0 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,76 @@
|
|
|
1
1
|
# @seamless-auth/react
|
|
2
2
|
|
|
3
|
+
## 0.10.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 17a657d: Let a caller choose where a magic link lands.
|
|
8
|
+
|
|
9
|
+
`requestMagicLink` takes an optional `redirectUri`. A deployment serving both a web
|
|
10
|
+
app and a mobile app previously had one destination for every magic link, so a link
|
|
11
|
+
had to arrive in one or the other.
|
|
12
|
+
|
|
13
|
+
The value goes in the request body the client already sends. The deployment validates
|
|
14
|
+
it against its configured origins and refuses anything else, so this cannot be used to
|
|
15
|
+
point a link on the tenant's domain somewhere it should not go, and a refusal comes
|
|
16
|
+
back as an ordinary error result.
|
|
17
|
+
|
|
18
|
+
Omit it and nothing changes: the same empty body is sent, so the destination stays the
|
|
19
|
+
deployment's own and no caller has to do anything.
|
|
20
|
+
|
|
21
|
+
Needs a `@seamless-auth/server` adapter that forwards the field and an auth API that
|
|
22
|
+
understands it. Against older versions the value is dropped and the link keeps the
|
|
23
|
+
deployment's destination, which is the behaviour today.
|
|
24
|
+
|
|
25
|
+
- 4199d52: Add `getPasskeyPolicyErrorCode()`, which reads the code a refused passkey
|
|
26
|
+
registration carries (`attachment_not_allowed`, `synced_passkey_not_allowed`,
|
|
27
|
+
`authenticator_not_allowed`, or `prf_required`) so an app can explain the
|
|
28
|
+
refusal instead of rendering the raw code from `error.message`. Unrecognized
|
|
29
|
+
codes return `undefined`, so a refusal from a newer API keeps your generic
|
|
30
|
+
messaging.
|
|
31
|
+
|
|
32
|
+
The `PasskeyPolicyErrorCode` union is derived from `WebAuthnErrorCode` in
|
|
33
|
+
`@seamless-auth/types`, so the codes this recognizes cannot drift from the ones
|
|
34
|
+
the API sends.
|
|
35
|
+
|
|
36
|
+
This matters on a default deployment: the API's
|
|
37
|
+
`authenticator_policy.syncedPasskeys` defaults to `block`, and passkeys created
|
|
38
|
+
by iCloud Keychain or Google Password Manager are backup eligible, so the most
|
|
39
|
+
common consumer passkey is refused at registration.
|
|
40
|
+
|
|
41
|
+
- 8690cb0: Drop the naming step from the bundled passkey enrolment view.
|
|
42
|
+
|
|
43
|
+
Choosing "Register Passkey" (or "Use a security key instead") opened a modal asking for a
|
|
44
|
+
friendly name, and the browser's own passkey prompt only appeared once that form was
|
|
45
|
+
submitted. A user who came to the screen to press one button was handed a text field
|
|
46
|
+
first, at the point in the flow where they had the least idea what to type.
|
|
47
|
+
|
|
48
|
+
Registration now starts on the click. The credential still carries a `friendlyName`, and
|
|
49
|
+
the view fills it with the device the passkey was enrolled on (`mac • chrome`), which is
|
|
50
|
+
what the naming prompt suggested people write anyway. Renaming stays available through
|
|
51
|
+
`updateCredential`.
|
|
52
|
+
|
|
53
|
+
Nothing in the public API moves: `PasskeyMetadata.friendlyName` is unchanged and callers
|
|
54
|
+
building their own enrolment screen keep setting it themselves. Only the bundled
|
|
55
|
+
`/register-passkey` view changes, so an adopter relying on that screen to collect a name
|
|
56
|
+
needs their own screen for it.
|
|
57
|
+
|
|
58
|
+
- fa27861: `registerPasskey()` accepts an `attachment`, so a caller can ask for a roaming
|
|
59
|
+
authenticator (`cross-platform`, a USB or NFC security key) or the one built
|
|
60
|
+
into the device (`platform`) instead of leaving the choice to the browser's
|
|
61
|
+
picker. The bundled enrolment view offers a "Use a security key instead" control
|
|
62
|
+
that takes this path, and explains a policy refusal rather than showing a
|
|
63
|
+
generic failure.
|
|
64
|
+
|
|
65
|
+
Omitting the option sends no query parameter, so the deployment's
|
|
66
|
+
`authenticator_policy.attachment` stays in charge and current behaviour is
|
|
67
|
+
unchanged. It is a request rather than an override: a deployment that pins the
|
|
68
|
+
other kind refuses the registration with `attachment_not_allowed`, which
|
|
69
|
+
`getPasskeyPolicyErrorCode()` reads.
|
|
70
|
+
|
|
71
|
+
`PasskeyAttachment` is exported, and is derived from the deployment policy type
|
|
72
|
+
in `@seamless-auth/types` rather than restating its members.
|
|
73
|
+
|
|
3
74
|
## 0.9.0
|
|
4
75
|
|
|
5
76
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
- `SeamlessAuthError`, the error type carried on a failed result
|
|
21
21
|
- `getOAuthErrorCode()`, which reads the known OAuth callback failure codes off that error
|
|
22
22
|
- `getWebAuthnErrorDetail()`, which reads the underlying failure of a passkey or step-up ceremony
|
|
23
|
+
- `getPasskeyPolicyErrorCode()`, which reads the code the API refused a passkey registration with
|
|
23
24
|
- types including `AuthContextType`, `Credential`, `User`, `OAuthProvider`, `StepUpStatus`, the `SeamlessAuthResult` wrapper, and the headless client input/result types
|
|
24
25
|
|
|
25
26
|
## Installation
|
|
@@ -553,6 +554,86 @@ switch (detail?.name) {
|
|
|
553
554
|
`getWebAuthnErrorDetail()` returns `undefined` for any error that did not come from a ceremony, so an
|
|
554
555
|
HTTP failure keeps flowing through `error.message` and `error.body` as usual.
|
|
555
556
|
|
|
557
|
+
### Choosing the authenticator
|
|
558
|
+
|
|
559
|
+
By default the browser offers every kind of authenticator the deployment enrols, which is what
|
|
560
|
+
`authenticator_policy.attachment: 'any'` means on the API. Pass `attachment` to narrow the picker to
|
|
561
|
+
one kind, for example to send someone straight to an issued security key rather than leaving them to
|
|
562
|
+
find it in a browser dialog:
|
|
563
|
+
|
|
564
|
+
```ts
|
|
565
|
+
import { getPasskeyPolicyErrorCode } from '@seamless-auth/react';
|
|
566
|
+
|
|
567
|
+
const { error } = await authClient.registerPasskey({
|
|
568
|
+
metadata,
|
|
569
|
+
attachment: 'cross-platform',
|
|
570
|
+
});
|
|
571
|
+
|
|
572
|
+
if (getPasskeyPolicyErrorCode(error) === 'attachment_not_allowed') {
|
|
573
|
+
// This deployment pins the other kind. Fall back to the default path.
|
|
574
|
+
}
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
`'cross-platform'` is a roaming authenticator such as a USB or NFC security key. `'platform'` is the
|
|
578
|
+
one built into the device, such as Touch ID or Windows Hello. Omit the option to leave the choice to
|
|
579
|
+
the deployment.
|
|
580
|
+
|
|
581
|
+
This is a request, not an override. A deployment that has pinned
|
|
582
|
+
`authenticator_policy.attachment` to the other kind refuses the registration with
|
|
583
|
+
`attachment_not_allowed`, covered below. The bundled enrolment view offers a "Use a security key
|
|
584
|
+
instead" control that takes this path.
|
|
585
|
+
|
|
586
|
+
### Passkey policy refusals
|
|
587
|
+
|
|
588
|
+
A registration can also be refused by the policy the API is configured with. `registerPasskey()`
|
|
589
|
+
then fails with a body whose `error` is a stable code rather than a sentence, so rendering
|
|
590
|
+
`error.message` would put that code in front of a user. Use `getPasskeyPolicyErrorCode()` to branch
|
|
591
|
+
on it:
|
|
592
|
+
|
|
593
|
+
```ts
|
|
594
|
+
import { getPasskeyPolicyErrorCode } from '@seamless-auth/react';
|
|
595
|
+
|
|
596
|
+
const { error } = await authClient.registerPasskey({ token, metadata });
|
|
597
|
+
|
|
598
|
+
switch (getPasskeyPolicyErrorCode(error)) {
|
|
599
|
+
case 'attachment_not_allowed':
|
|
600
|
+
// The requested `attachment` is not the kind this deployment enrols.
|
|
601
|
+
break;
|
|
602
|
+
case 'synced_passkey_not_allowed':
|
|
603
|
+
// This passkey syncs to iCloud Keychain or Google Password Manager, and
|
|
604
|
+
// this deployment requires a device-bound one such as a security key.
|
|
605
|
+
break;
|
|
606
|
+
case 'authenticator_not_allowed':
|
|
607
|
+
// This authenticator model is not permitted here.
|
|
608
|
+
break;
|
|
609
|
+
case 'prf_required':
|
|
610
|
+
// Registration asked for PRF and the authenticator does not support it.
|
|
611
|
+
break;
|
|
612
|
+
default:
|
|
613
|
+
// No error, or one without a recognized code. Fall back to error?.message.
|
|
614
|
+
break;
|
|
615
|
+
}
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
| Code | Stage | Status | When the API sends it |
|
|
619
|
+
| ---------------------------- | --------------- | ------ | -------------------------------------------------------------------------------------------- |
|
|
620
|
+
| `attachment_not_allowed` | register/start | 400 | the requested `attachment` is not the kind `authenticator_policy.attachment` pins |
|
|
621
|
+
| `synced_passkey_not_allowed` | register/finish | 403 | `authenticator_policy.syncedPasskeys` is `block` and the credential is backup eligible |
|
|
622
|
+
| `authenticator_not_allowed` | register/finish | 403 | the credential's AAGUID is on `aaguidDenyList`, or absent from a non-empty `aaguidAllowList` |
|
|
623
|
+
| `prf_required` | register/finish | 403 | registration required PRF and the credential did not report support for it |
|
|
624
|
+
|
|
625
|
+
`attachment_not_allowed` is refused before any ceremony runs, so the browser never prompts. The rest
|
|
626
|
+
are refused after a credential exists and can be inspected.
|
|
627
|
+
|
|
628
|
+
`syncedPasskeys` defaults to `block` on the Seamless Auth API. Passkeys created by iCloud Keychain
|
|
629
|
+
and Google Password Manager are backup eligible, so on a default deployment the most common consumer
|
|
630
|
+
passkey is refused at registration. If that is not what you want, set
|
|
631
|
+
`authenticator_policy.syncedPasskeys` to `allow` in the API's system config; the SDK cannot relax it
|
|
632
|
+
from the client.
|
|
633
|
+
|
|
634
|
+
Like `getOAuthErrorCode()`, this returns `undefined` for anything it does not recognize, including
|
|
635
|
+
codes added by a newer API, so an unexpected refusal keeps your generic messaging.
|
|
636
|
+
|
|
556
637
|
The single exception is `isPasskeySupported`-style capability checks:
|
|
557
638
|
`isPasskeyPrfSupported(): Promise<boolean>` is a local check rather than a request, so it returns a
|
|
558
639
|
plain boolean.
|
|
@@ -967,6 +1048,11 @@ The state-changing OTP and magic-link request routes are `POST` (marked above).
|
|
|
967
1048
|
email sends to a signed-in user. Using `@seamless-auth/react` with an older adapter that only serves the
|
|
968
1049
|
`GET` forms returns a 404 for those requests. See the changelog for the minimum adapter version.
|
|
969
1050
|
|
|
1051
|
+
`/webAuthn/register/finish` can refuse a verified credential on policy grounds with a `403` whose
|
|
1052
|
+
body is a stable code. `syncedPasskeys` defaults to `block`, which refuses every backup-eligible
|
|
1053
|
+
passkey, so this is reachable on a default deployment. See
|
|
1054
|
+
[Passkey policy refusals](#passkey-policy-refusals).
|
|
1055
|
+
|
|
970
1056
|
## Notes
|
|
971
1057
|
|
|
972
1058
|
- This package does not create its own `<BrowserRouter>`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AddOrganizationMemberRequest, CreateOrganizationRequest, CredentialUpdateResponse, LoginMethod as LoginMethodShape, LoginSuccessResponse, LogoutScope as LogoutScopeShape, MeResponse, MessageResponse, OAuthProvidersResponse, OrganizationEnvelopeResponse, OrganizationListResponse, OrganizationMembersResponse, OrganizationMembershipEnvelopeResponse, OrganizationSwitchResponse, PublicOAuthProvider, PublicSystemConfigResponse, RegistrationRequest, StartOAuthLoginResponse, StepUpMethod as StepUpMethodShape, StepUpStatus as StepUpStatusShape, TotpEnrollmentStartResponse, TotpStatus as TotpStatusShape, UpdateOrganizationMemberRequest, UpdateOrganizationRequest } from '@seamless-auth/types';
|
|
1
|
+
import type { AddOrganizationMemberRequest, AuthenticatorAttachmentPolicy, CreateOrganizationRequest, CredentialUpdateResponse, LoginMethod as LoginMethodShape, LoginSuccessResponse, LogoutScope as LogoutScopeShape, MeResponse, MessageResponse, OAuthProvidersResponse, OrganizationEnvelopeResponse, OrganizationListResponse, OrganizationMembersResponse, OrganizationMembershipEnvelopeResponse, OrganizationSwitchResponse, PublicOAuthProvider, PublicSystemConfigResponse, RegistrationRequest, StartOAuthLoginResponse, StepUpMethod as StepUpMethodShape, StepUpStatus as StepUpStatusShape, TotpEnrollmentStartResponse, TotpStatus as TotpStatusShape, UpdateOrganizationMemberRequest, UpdateOrganizationRequest } from '@seamless-auth/types';
|
|
2
2
|
import { type SeamlessAuthResult } from './result';
|
|
3
3
|
import { PasskeyPrfInput, PasskeyPrfResult } from './webauthnPrf';
|
|
4
4
|
export interface SeamlessAuthClientOptions {
|
|
@@ -69,10 +69,27 @@ export interface PasskeyRegistrationData {
|
|
|
69
69
|
}
|
|
70
70
|
/** Response body returned when credential metadata is updated. */
|
|
71
71
|
export type CredentialUpdateResult = CredentialUpdateResponse;
|
|
72
|
+
/**
|
|
73
|
+
* Which kind of authenticator to offer at registration. Omitting it leaves the
|
|
74
|
+
* choice to the deployment's `authenticator_policy.attachment`, which offers
|
|
75
|
+
* both kinds by default.
|
|
76
|
+
*
|
|
77
|
+
* Derived from the deployment policy type rather than restating its members:
|
|
78
|
+
* `any` is a standing default a deployment sets, not something a single request
|
|
79
|
+
* can ask for, so the request type is that policy minus that one member.
|
|
80
|
+
*/
|
|
81
|
+
export type PasskeyAttachment = Exclude<AuthenticatorAttachmentPolicy, 'any'>;
|
|
72
82
|
export interface RegisterPasskeyOptions {
|
|
73
83
|
metadata: PasskeyMetadata;
|
|
74
84
|
requestPrf?: boolean;
|
|
75
85
|
requirePrf?: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Narrows the browser picker to one kind of authenticator, for example
|
|
88
|
+
* `cross-platform` to send a user straight to an issued security key. A
|
|
89
|
+
* deployment that has pinned a different kind refuses this, so it is a
|
|
90
|
+
* request rather than an override.
|
|
91
|
+
*/
|
|
92
|
+
attachment?: PasskeyAttachment;
|
|
76
93
|
}
|
|
77
94
|
export type StepUpMethod = StepUpMethodShape;
|
|
78
95
|
export type TotpStatus = TotpStatusShape;
|
|
@@ -114,7 +131,13 @@ export interface SeamlessAuthClient {
|
|
|
114
131
|
verifyEmailOtp: (verificationToken: string) => Promise<SeamlessAuthResult<MessageResult>>;
|
|
115
132
|
requestLoginEmailOtp: () => Promise<SeamlessAuthResult<MessageResult>>;
|
|
116
133
|
verifyLoginEmailOtp: (verificationToken: string) => Promise<SeamlessAuthResult<MessageResult>>;
|
|
117
|
-
|
|
134
|
+
/**
|
|
135
|
+
* @param redirectUri Where the emailed link should land. The deployment validates
|
|
136
|
+
* it against its configured origins and refuses anything else, so a tenant serving
|
|
137
|
+
* a web app and a mobile app can send each to its own destination. Omit it to keep
|
|
138
|
+
* the deployment's single destination.
|
|
139
|
+
*/
|
|
140
|
+
requestMagicLink: (redirectUri?: string) => Promise<SeamlessAuthResult<MessageResult>>;
|
|
118
141
|
checkMagicLink: () => Promise<SeamlessAuthResult<MessageResult>>;
|
|
119
142
|
verifyMagicLink: (token: string) => Promise<SeamlessAuthResult<MessageResult>>;
|
|
120
143
|
listOAuthProviders: () => Promise<SeamlessAuthResult<OAuthProvidersResult>>;
|
package/dist/client/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { OAuthErrorCode as OAuthErrorCodeShape } from '@seamless-auth/types';
|
|
1
|
+
import type { OAuthErrorCode as OAuthErrorCodeShape, WebAuthnErrorCode as WebAuthnErrorCodeShape } from '@seamless-auth/types';
|
|
2
2
|
/**
|
|
3
3
|
* Error carrying the auth server's response detail, so callers can map known
|
|
4
4
|
* failures to their own messaging instead of only seeing a generic string.
|
|
@@ -29,6 +29,28 @@ export type OAuthErrorCode = OAuthErrorCodeShape;
|
|
|
29
29
|
* downgrade OAuth messaging to a generic failure.
|
|
30
30
|
*/
|
|
31
31
|
export declare function getOAuthErrorCode(error: unknown): OAuthErrorCode | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Machine-readable codes registration is refused with when a deployment will not
|
|
34
|
+
* enrol the authenticator on policy grounds.
|
|
35
|
+
*
|
|
36
|
+
* `attachment_not_allowed` comes from register/start with a `400`, before any
|
|
37
|
+
* ceremony runs. The rest come from register/finish with a `403`, once the
|
|
38
|
+
* credential exists and can be inspected.
|
|
39
|
+
*/
|
|
40
|
+
export type PasskeyPolicyErrorCode = Extract<WebAuthnErrorCodeShape, 'attachment_not_allowed' | 'synced_passkey_not_allowed' | 'authenticator_not_allowed' | 'prf_required'>;
|
|
41
|
+
/**
|
|
42
|
+
* Read the passkey policy refusal off a registration error, from either stage of
|
|
43
|
+
* the ceremony. Returns `undefined` for anything unrecognized, including codes
|
|
44
|
+
* added by a newer API, so callers keep their generic messaging instead of
|
|
45
|
+
* showing a raw code.
|
|
46
|
+
*
|
|
47
|
+
* The auth API sends the code as the whole of `error`, which is also what
|
|
48
|
+
* becomes `error.message`. A proxy in front of it may instead derive a
|
|
49
|
+
* human-readable `error` and keep the upstream body under `details`, so an
|
|
50
|
+
* unrecognized top-level value falls through to the nested one rather than
|
|
51
|
+
* ending the lookup.
|
|
52
|
+
*/
|
|
53
|
+
export declare function getPasskeyPolicyErrorCode(error: unknown): PasskeyPolicyErrorCode | undefined;
|
|
32
54
|
/**
|
|
33
55
|
* Detail recovered from a failed WebAuthn ceremony.
|
|
34
56
|
*
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AuthContextType, AuthProvider, useAuth } from './AuthProvider';
|
|
2
2
|
import { AuthRoutes } from './AuthRoutes';
|
|
3
|
-
import { createSeamlessAuthClient, CredentialUpdateResult, CreateOrganizationInput, CurrentUserResult, FinishOAuthLoginInput, LoginInput, LoginMethod, LoginStartResult, MessageResult, OAuthProvider, OAuthProvidersResult, PublicSystemConfigResult, OrganizationMemberInput, OrganizationMemberUpdateInput, OrganizationMembersResult, OrganizationMembershipResult, OrganizationResult, OrganizationSwitchResult, OrganizationsResult, PasskeyLoginData, PasskeyMetadata, PasskeyRegistrationData, RegisterInput, RegisterPasskeyOptions, SeamlessAuthClient, SeamlessAuthClientOptions, StartOAuthLoginInput, StartOAuthLoginResult, StepUpMethod, StepUpStatus, StepUpPrfData, TotpEnrollmentStartResult, TotpStatus, UpdateOrganizationInput } from './client/createSeamlessAuthClient';
|
|
4
|
-
import { getOAuthErrorCode, getWebAuthnErrorDetail, OAuthErrorCode, SeamlessAuthError, WebAuthnErrorDetail } from './client/errors';
|
|
3
|
+
import { createSeamlessAuthClient, CredentialUpdateResult, CreateOrganizationInput, CurrentUserResult, FinishOAuthLoginInput, LoginInput, LoginMethod, LoginStartResult, MessageResult, OAuthProvider, OAuthProvidersResult, PublicSystemConfigResult, OrganizationMemberInput, OrganizationMemberUpdateInput, OrganizationMembersResult, OrganizationMembershipResult, OrganizationResult, OrganizationSwitchResult, OrganizationsResult, PasskeyLoginData, PasskeyAttachment, PasskeyMetadata, PasskeyRegistrationData, RegisterInput, RegisterPasskeyOptions, SeamlessAuthClient, SeamlessAuthClientOptions, StartOAuthLoginInput, StartOAuthLoginResult, StepUpMethod, StepUpStatus, StepUpPrfData, TotpEnrollmentStartResult, TotpStatus, UpdateOrganizationInput } from './client/createSeamlessAuthClient';
|
|
4
|
+
import { getOAuthErrorCode, getPasskeyPolicyErrorCode, getWebAuthnErrorDetail, OAuthErrorCode, PasskeyPolicyErrorCode, SeamlessAuthError, WebAuthnErrorDetail } from './client/errors';
|
|
5
5
|
import type { SeamlessAuthResult } from './client/result';
|
|
6
6
|
import { encodePrfSalt, extractPasskeyPrfResult, isPasskeyPrfSupported, PasskeyPrfInput, PasskeyPrfResult } from './client/webauthnPrf';
|
|
7
7
|
import { useAuthClient } from './hooks/useAuthClient';
|
|
@@ -9,5 +9,5 @@ import { hasNonPasskeyLoginMethod, useLoginMethods } from './hooks/useLoginMetho
|
|
|
9
9
|
import { usePasskeySupport } from './hooks/usePasskeySupport';
|
|
10
10
|
import { hasScopedRole, roleGrantsAccess } from './scopedRoles';
|
|
11
11
|
import { Credential, Organization, OrganizationMembership, User } from './types';
|
|
12
|
-
export { AuthProvider, AuthRoutes, createSeamlessAuthClient, encodePrfSalt, extractPasskeyPrfResult, getOAuthErrorCode, getWebAuthnErrorDetail, hasNonPasskeyLoginMethod, hasScopedRole, isPasskeyPrfSupported, roleGrantsAccess, SeamlessAuthError, useAuth, useAuthClient, useLoginMethods, usePasskeySupport, };
|
|
13
|
-
export type { CredentialUpdateResult, AuthContextType, Credential, CreateOrganizationInput, CurrentUserResult, FinishOAuthLoginInput, LoginInput, LoginMethod, LoginStartResult, MessageResult, OAuthErrorCode, OAuthProvider, OAuthProvidersResult, Organization, OrganizationMemberInput, OrganizationMembership, OrganizationMemberUpdateInput, OrganizationMembersResult, OrganizationMembershipResult, OrganizationResult, OrganizationSwitchResult, OrganizationsResult, PasskeyLoginData, PasskeyMetadata, PasskeyPrfInput, PasskeyPrfResult, PasskeyRegistrationData, PublicSystemConfigResult, RegisterInput, RegisterPasskeyOptions, SeamlessAuthClient, SeamlessAuthClientOptions, SeamlessAuthResult, StartOAuthLoginInput, StartOAuthLoginResult, StepUpMethod, StepUpStatus, StepUpPrfData, TotpEnrollmentStartResult, TotpStatus, UpdateOrganizationInput, User, WebAuthnErrorDetail, };
|
|
12
|
+
export { AuthProvider, AuthRoutes, createSeamlessAuthClient, encodePrfSalt, extractPasskeyPrfResult, getOAuthErrorCode, getPasskeyPolicyErrorCode, getWebAuthnErrorDetail, hasNonPasskeyLoginMethod, hasScopedRole, isPasskeyPrfSupported, roleGrantsAccess, SeamlessAuthError, useAuth, useAuthClient, useLoginMethods, usePasskeySupport, };
|
|
13
|
+
export type { CredentialUpdateResult, AuthContextType, Credential, CreateOrganizationInput, CurrentUserResult, FinishOAuthLoginInput, LoginInput, LoginMethod, LoginStartResult, MessageResult, OAuthErrorCode, OAuthProvider, OAuthProvidersResult, Organization, OrganizationMemberInput, OrganizationMembership, OrganizationMemberUpdateInput, OrganizationMembersResult, OrganizationMembershipResult, OrganizationResult, OrganizationSwitchResult, OrganizationsResult, PasskeyLoginData, PasskeyAttachment, PasskeyMetadata, PasskeyPolicyErrorCode, PasskeyPrfInput, PasskeyPrfResult, PasskeyRegistrationData, PublicSystemConfigResult, RegisterInput, RegisterPasskeyOptions, SeamlessAuthClient, SeamlessAuthClientOptions, SeamlessAuthResult, StartOAuthLoginInput, StartOAuthLoginResult, StepUpMethod, StepUpStatus, StepUpPrfData, TotpEnrollmentStartResult, TotpStatus, UpdateOrganizationInput, User, WebAuthnErrorDetail, };
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{browserSupportsWebAuthn as a,bufferToBase64URLString as o,base64URLStringToBuffer as n,startAuthentication as i,startRegistration as s,WebAuthnError as l}from"@simplewebauthn/browser";import{createContext as d,useMemo as c,useSyncExternalStore as u,useEffect as m,useContext as _,useState as g,useRef as p,useCallback as f}from"react";import{useHref as h,useNavigate as y,useLocation as v,useSearchParams as b,Routes as k,Route as x,Navigate as w}from"react-router-dom";import P from"libphonenumber-js";class S extends Error{constructor(e,t,r,a){super(e),this.name="SeamlessAuthError",this.status=t,this.body=r,this.cause=a}}const N={oauth_missing_email:!0,oauth_email_not_verified:!0,oauth_missing_subject:!0};function O(e){if("object"==typeof e&&null!==e)return e.code}function T(e){if(!(e instanceof S))return;if("object"!=typeof e.body||null===e.body)return;const t=O(e.body)??O(e.body.details);return"string"==typeof t&&Object.prototype.hasOwnProperty.call(N,t)?t:void 0}function C(e){if(!(e instanceof S)||("object"!=typeof(t=e.cause)||null===t||"string"!=typeof t.name))return;var t;const{name:r,code:a,message:o}=e.cause;return{name:r,code:"string"==typeof a?a:void 0,message:"string"==typeof o?o:""}}async function M(e,t){let r;try{r=await e.json()}catch{r=void 0}return new S(function(e){if("object"!=typeof e||null===e)return;const{error:t,message:r}=e;return"string"==typeof t&&t?t:"string"==typeof r&&r?r:void 0}(r)??t,e.status,r)}async function I(e){try{return await e.json()}catch{return}}async function A(e,t){let r;try{r=await e}catch{return{data:null,error:new S(t,0)}}return r.ok?{data:await I(r),error:null}:{data:null,error:await M(r,t)}}function z(e){return{data:e,error:null}}function E(e,t=0,r,a){return{data:null,error:new S(e,t,r,a)}}function F(e){if(e instanceof ArrayBuffer)return e;const t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=new Uint8Array(t.byteLength);return r.set(t),r.buffer}function U(e){return"string"==typeof e?e:o(F(e))}function L(e){return"string"==typeof e?n(e):e}function R(e){return{...e.credentialId?{credentialId:e.credentialId}:{},prf:{salt:U(e.salt),...e.secondSalt?{secondSalt:U(e.secondSalt)}:{}}}}async function B(){return!!a()&&("undefined"==typeof window||!1!==window.isSecureContext)&&void 0!==globalThis.PublicKeyCredential&&"undefined"!=typeof navigator&&"function"==typeof navigator.credentials?.get}function q(e){const t=e,r=t.extensions?.prf?.eval;return r?{...t,extensions:{...t.extensions,prf:{...t.extensions?.prf,eval:{...r,...r.first?{first:L(r.first)}:{},...r.second?{second:L(r.second)}:{}}}}}:e}function j(e){const t=e.clientExtensionResults,r=t?.prf?.results?.first;if(!r)return null;const a=(n=r)instanceof ArrayBuffer?new Uint8Array(n):new Uint8Array(n.buffer,n.byteOffset,n.byteLength);var n;return{credentialId:e.id,output:a,outputBase64url:o(F(a))}}function J(e){const t=e.clientExtensionResults;return t?.prf?.results?{...e,clientExtensionResults:{...e.clientExtensionResults,prf:{...t.prf,results:void 0}}}:e}function G(e,t){const r=e.method===t?e.method:null;return"Success"===e.message&&!0===e.fresh&&null!==r?z({fresh:!0,method:r,verifiedAt:e.verifiedAt??null,expiresAt:e.expiresAt??null,maxAgeSeconds:e.maxAgeSeconds??0}):E(e.message??"Step-up authentication failed.")}function D(e){return e?{method:"POST",body:JSON.stringify(R(e))}:{method:"POST"}}function W(e,t,r){const a=E(t,0,void 0,r),o=C(a.error);return console.error(e,o?.name??"Unknown error."),a}const $=e=>{const t=(e=>{const{authHost:t}=e;return async function(e,r){const a=`${t?.replace(/\/+$/,"")??""}/auth${e.startsWith("/")?e:`/${e}`}`,o=null!=r?.body,n={...r,credentials:"include",headers:{...o?{"Content-Type":"application/json"}:{},...r?.headers}};return fetch(a,n)}})({authHost:e.apiHost});return{getCurrentUser:()=>A(t("users/me",{method:"GET"}),"Failed to load the current user."),login:e=>A(t("/login",{method:"POST",body:JSON.stringify(e)}),"Failed to start sign-in."),loginWithPasskey:async e=>{const r=await A(t("/webAuthn/login/start",{...D(e?.prf)}),"Failed to start passkey login.");if(r.error)return r;let a,o;try{const e=await i({optionsJSON:q(r.data)});a=j(e),o=J(e)}catch(e){return W("Passkey login error.","Passkey login failed.",e)}const n=await A(t("/webAuthn/login/finish",{method:"POST",body:JSON.stringify({assertionResponse:o})}),"Failed to verify passkey.");return n.error?n:"Success"!==n.data?.message?E(n.data?.message??"Passkey login failed."):z(a?{prf:a}:{})},logout:(e={})=>A(t("all_sessions"===e.scope?"/logout/all":"/logout",{method:"DELETE"}),"Failed to sign out."),logoutAllSessions:()=>A(t("/logout/all",{method:"DELETE"}),"Failed to sign out of all sessions."),deleteUser:()=>A(t("/users/delete",{method:"DELETE"}),"Failed to delete the account."),register:e=>A(t("/registration/register",{method:"POST",body:JSON.stringify({email:e.email,...e.phone?{phone:e.phone}:{}})}),"Failed to register."),requestPhoneOtp:()=>A(t("/otp/generate-phone-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the SMS code."),verifyPhoneOtp:e=>A(t("/otp/verify-phone-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the SMS code."),requestLoginPhoneOtp:()=>A(t("/otp/generate-login-phone-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the SMS code."),verifyLoginPhoneOtp:e=>A(t("/otp/verify-login-phone-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the SMS code."),requestEmailOtp:()=>A(t("/otp/generate-email-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the email code."),verifyEmailOtp:e=>A(t("/otp/verify-email-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the email code."),requestLoginEmailOtp:()=>A(t("/otp/generate-login-email-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the email code."),verifyLoginEmailOtp:e=>A(t("/otp/verify-login-email-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the email code."),requestMagicLink:()=>A(t("/magic-link",{method:"POST",body:JSON.stringify({})}),"Failed to send the magic link."),checkMagicLink:()=>A(t("/magic-link/check",{method:"GET"}),"Failed to check the magic link."),verifyMagicLink:e=>A(t(`/magic-link/verify/${encodeURIComponent(e)}`,{method:"GET"}),"Failed to verify the magic link."),listOAuthProviders:()=>A(t("/oauth/providers",{method:"GET"}),"Failed to list OAuth providers."),getPublicSystemConfig:()=>A(t("/system-config/public",{method:"GET"}),"Failed to read the public system configuration."),startOAuthLogin:e=>A(t(`/oauth/${encodeURIComponent(e.providerId)}/start`,{method:"POST",body:JSON.stringify({...e.redirectUri?{redirectUri:e.redirectUri}:{},...e.returnTo?{returnTo:e.returnTo}:{}})}),"Failed to start OAuth login."),finishOAuthLogin:e=>A(t(`/oauth/${encodeURIComponent(e.providerId)}/callback`,{method:"POST",body:JSON.stringify({code:e.code,state:e.state})}),"Failed to finish OAuth login."),registerPasskey:async e=>{const r=function(e){return"metadata"in e?e:{metadata:e}}(e),a=await A(t(function(e){const t=new URLSearchParams;e.requirePrf?t.set("requirePrf","true"):e.requestPrf&&t.set("requestPrf","true");const r=t.toString();return"/webAuthn/register/start"+(r?`?${r}`:"")}(r),{method:"GET"}),"Failed to fetch passkey registration challenge.");if(a.error)return a;let o;try{o=await s({optionsJSON:a.data})}catch(e){return e instanceof l?E(e.name,0,void 0,e):W("Passkey registration error.","Passkey registration failed.",e)}const n=function(e){const t=e.clientExtensionResults;return!0===t?.prf?.enabled}(o),i=await A(t("/webAuthn/register/finish",{method:"POST",body:JSON.stringify({attestationResponse:o,metadata:{...r.metadata,prfCapable:n}})}),"Verification failed.");return i.error?i:z({credentialId:o.id,prfCapable:n})},isPasskeyPrfSupported:B,getStepUpStatus:()=>A(t("/step-up/status",{method:"GET"}),"Failed to load step-up status."),verifyStepUpWithPasskey:async()=>{const e=await A(t("/step-up/webauthn/start",{method:"POST"}),"Failed to start step-up authentication.");if(e.error)return e;let r;try{r=J(await i({optionsJSON:q(e.data)}))}catch(e){return W("Step-up authentication error.","Step-up authentication failed.",e)}const a=await A(t("/step-up/webauthn/finish",{method:"POST",body:JSON.stringify({assertionResponse:r})}),"Failed to verify step-up authentication.");return a.error?a:G(a.data??{},"webauthn")},verifyStepUpWithPasskeyPrf:async e=>{const r=await A(t("/step-up/webauthn/start",{...D(e)}),"Failed to start step-up authentication.");if(r.error)return r;let a,o;try{const e=await i({optionsJSON:q(r.data)});a=j(e),o=J(e)}catch(e){return W("Step-up authentication error.","Step-up authentication failed.",e)}if(!a)return E("Passkey did not return PRF output.");const n=await A(t("/step-up/webauthn/finish",{method:"POST",body:JSON.stringify({assertionResponse:o})}),"Failed to verify step-up authentication.");if(n.error)return n;const s=G(n.data??{},"webauthn");return s.error?s:z({...s.data,credentialId:a.credentialId,prf:a})},getTotpStatus:()=>A(t("/totp/status",{method:"GET"}),"Failed to load authenticator status."),startTotpEnrollment:()=>A(t("/totp/enroll/start",{method:"POST"}),"Failed to start authenticator enrollment."),verifyTotpEnrollment:e=>A(t("/totp/enroll/verify",{method:"POST",body:JSON.stringify({code:e})}),"Failed to verify the authenticator code."),disableTotp:e=>A(t("/totp/disable",{method:"POST",body:JSON.stringify({code:e})}),"Failed to disable the authenticator."),verifyStepUpWithTotp:async e=>{const r=await A(t("/totp/verify-mfa",{method:"POST",body:JSON.stringify({code:e})}),"Failed to verify step-up authentication.");return r.error?r:G(r.data??{},"totp")},updateCredential:e=>A(t("users/credentials",{method:"POST",body:JSON.stringify(e)}),"Failed to update credential."),deleteCredential:e=>A(t("users/credentials",{method:"DELETE",body:JSON.stringify({id:e})}),"Failed to delete credential."),listOrganizations:()=>A(t("/organizations",{method:"GET"}),"Failed to list organizations."),createOrganization:e=>A(t("/organizations",{method:"POST",body:JSON.stringify(e)}),"Failed to create organization."),getOrganization:e=>A(t(`/organizations/${encodeURIComponent(e)}`,{method:"GET"}),"Failed to load organization."),updateOrganization:(e,r)=>A(t(`/organizations/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(r)}),"Failed to update organization."),switchOrganization:e=>A(t(`/organizations/${encodeURIComponent(e)}/switch`,{method:"POST"}),"Failed to switch organization."),listOrganizationMembers:e=>A(t(`/organizations/${encodeURIComponent(e)}/members`,{method:"GET"}),"Failed to list organization members."),addOrganizationMember:(e,r)=>A(t(`/organizations/${encodeURIComponent(e)}/members`,{method:"POST",body:JSON.stringify(r)}),"Failed to add organization member."),updateOrganizationMember:(e,r,a)=>A(t(`/organizations/${encodeURIComponent(e)}/members/${encodeURIComponent(r)}`,{method:"PATCH",body:JSON.stringify(a)}),"Failed to update organization member."),removeOrganizationMember:(e,r)=>A(t(`/organizations/${encodeURIComponent(e)}/members/${encodeURIComponent(r)}`,{method:"DELETE"}),"Failed to remove organization member.")}};function V(e,t){const r=e.trim(),a=t.trim();if(!r||!a)return!1;if(r===a)return!0;if(r.endsWith(":*")){const e=r.slice(0,-2);return a===e||a.startsWith(`${e}:`)}if(!a.includes(":"))return!1;if(!r.includes(":"))return a.startsWith(`${r}:`);const o=r.split(":"),n=a.split(":"),i=o[o.length-1],s=n[n.length-1],l=o.slice(0,-1),d=n.slice(0,-1);return"write"===i&&"read"===s&&l.length===d.length&&l.every((e,t)=>e===d[t])}function K(e,t){if(!Array.isArray(e))return!1;const r=e.filter(e=>"string"==typeof e);return(Array.isArray(t)?t:[t]).some(e=>r.some(t=>V(t,e)))}function H(){return"undefined"==typeof localStorage?function(){const e=new Map;return{get:t=>e.get(t)??null,set:(t,r)=>{e.set(t,r)}}}():{get:e=>{try{return localStorage.getItem(e)}catch{return null}},set:(e,t)=>{try{localStorage.setItem(e,t)}catch{}}}}const Y="seamlessauth_seen",Q={user:null,credentials:[],organizations:[],activeOrganization:null,stepUpStatus:null,isAuthenticated:!1};const Z=d(void 0),X=()=>{const e=_(Z);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e},ee=({children:t,apiHost:r,autoDetectPreviousSignin:a=!0})=>{const o=c(()=>function(e){const{apiHost:t,detectPreviousSignIn:r=!0}=e,a=$({apiHost:t}),o=e.storage??H(),n=new Set;let i=!1,s=0,l={...Q,loading:!0,hasSignedInBefore:r&&"true"===o.get(Y)};function d(e){const t={...l,...e};Object.keys(e).some(e=>l[e]!==t[e])&&(l=t,n.forEach(e=>e()))}function c(){o.set(Y,"true"),r&&d({hasSignedInBefore:!0})}function u(){d(Q)}async function m(){const e=++s;d({loading:!0});const t=await a.getCurrentUser();return i||e!==s?t:t.error?(u(),d({loading:!1}),t):(d({user:t.data.user,credentials:t.data.credentials??[],organizations:t.data.organizations??[],activeOrganization:t.data.activeOrganization??null,isAuthenticated:!0,loading:!1}),l.hasSignedInBefore||c(),t)}async function _(e){const t=await e();return t.error||await m(),t}return{getState:()=>l,subscribe:e=>(n.add(e),()=>{n.delete(e)}),actions:{login:(e,t)=>a.login({identifier:e,passkeyAvailable:t}),handlePasskeyLogin:()=>_(()=>a.loginWithPasskey()),refreshSession:m,logout:async function(){try{return await a.logout()}finally{u()}},logoutAllSessions:async function(){try{return await a.logoutAllSessions()}finally{u()}},deleteUser:async()=>{const e=await a.deleteUser();return e.error||u(),e},updateCredential:async e=>{const{data:t,error:r}=await a.updateCredential({friendlyName:e.friendlyName??null,id:e.id});if(r)return{data:null,error:r};const o=t.credential;return d({credentials:l.credentials.map(e=>e.id===o.id?{...e,...o}:e)}),{data:o,error:null}},deleteCredential:async e=>{const t=await a.deleteCredential(e);return t.error||d({credentials:l.credentials.filter(t=>t.id!==e)}),t},switchOrganization:e=>_(()=>a.switchOrganization(e)),listOAuthProviders:()=>a.listOAuthProviders(),startOAuthLogin:e=>a.startOAuthLogin(e),finishOAuthLogin:e=>_(()=>a.finishOAuthLogin(e)),refreshStepUpStatus:async()=>{const e=await a.getStepUpStatus();return d({stepUpStatus:e.error?null:e.data}),e},verifyStepUpWithPasskey:async()=>{const e=await a.verifyStepUpWithPasskey();return e.error||d({stepUpStatus:e.data}),e},verifyStepUpWithPasskeyPrf:async e=>{const t=await a.verifyStepUpWithPasskeyPrf(e);return t.error||d({stepUpStatus:{fresh:t.data.fresh,method:t.data.method,verifiedAt:t.data.verifiedAt,expiresAt:t.data.expiresAt,maxAgeSeconds:t.data.maxAgeSeconds}}),t},verifyStepUpWithTotp:async e=>{const t=await a.verifyStepUpWithTotp(e);return t.error||d({stepUpStatus:t.data}),t},hasRole:e=>l.user?.roles?.includes(e),hasScopedRole:e=>l.user?K(l.user.roles,e):void 0,markSignedIn:c},destroy:()=>{i=!0,n.clear()}}}({apiHost:r,detectPreviousSignIn:a}),[r,a]),n=u(o.subscribe,o.getState,o.getState);m(()=>{o.actions.refreshSession()},[o]);const i=c(()=>({...n,...o.actions,apiHost:r}),[n,o,r]);return e(Z.Provider,{value:i,children:t})},te=()=>{const{apiHost:e}=X();return c(()=>$({apiHost:e}),[e])},re=["passkey","magic_link"],ae=()=>{const e=te(),[t,r]=g(null),[a,o]=g(!0);return m(()=>{let t=!0;return(async()=>{try{const{data:a,error:o}=await e.getPublicSystemConfig();t&&!o&&a?.loginMethods?.length&&r(a.loginMethods)}catch{}finally{t&&o(!1)}})(),()=>{t=!1}},[e]),{loginMethods:t,loading:a}},oe=e=>Boolean(e?.some(e=>"passkey"!==e)),ne=e=>{if("string"!=typeof e)return!1;const t=e.trim();if(t.length<3||t.length>320)return!1;const r=t.split("@");if(2!==r.length)return!1;const[a,o]=r;return!(!/^[A-Za-z0-9._%+-]+$/.test(a)||a.startsWith(".")||a.endsWith(".")||a.includes(".."))&&!(!/^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/.test(o)||o.startsWith("-")||o.endsWith("-")||o.startsWith(".")||o.endsWith(".")||o.includes(".."))},ie=e=>{const t=P(e);return t?.isValid()||!1};async function se(){return async function(){if("undefined"==typeof window)return!1;if(window.PublicKeyCredential&&"function"==typeof window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable)try{return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch{return console.error("Error checking passkey support."),!1}return!1}()}const le=()=>{const[e,t]=g(!1),[r,a]=g(!0);return m(()=>{let e=!0;return(async()=>{try{const r=await se();e&&t(r)}catch{e&&t(!1)}finally{e&&a(!1)}})(),()=>{e=!1}},[]),{passkeySupported:e,loading:r}},de="/login",ce="/passkey-login",ue="/verify-phone-otp",me="/verify-email-otp",_e="/verify-magiclink",ge="/oauth/callback",pe="/register-passkey",fe="/magic-link-sent";function he(e,t){void 0===t&&(t={});var r=t.insertAt;if(e&&"undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===r&&a.firstChild?a.insertBefore(o,a.firstChild):a.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var ye="login-module__container___YggDx",ve="login-module__card___Ub-Py",be="login-module__heading___neEqb",ke="login-module__inputGroup___P6qgS",xe="login-module__label___mx5vu",we="login-module__input___U07lW",Pe="login-module__helperText___kDQ4-",Se="login-module__error___40zxh",Ne="login-module__button___0kFBs",Oe="login-module__toggle___1JiG1",Te="login-module__fallbackCard___HdIk-",Ce="login-module__fallbackHeader___-il2v",Me="login-module__fallbackDescription___ea5EB",Ie="login-module__fallbackActions___AD3ni",Ae="login-module__fallbackActionButton___lFgWf",ze="login-module__actionTitle___ycrMp",Ee="login-module__actionSubtext___opaIV",Fe="login-module__linkButton___5lsoe";he(".login-module__container___YggDx{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center}.login-module__card___Ub-Py{background-color:var(--seamless-surface,#1f2937);border-radius:.5rem;box-shadow:0 4px 6px var(--seamless-shadow,rgba(0,0,0,.1));max-width:28rem;padding:2rem;width:100%}.login-module__heading___neEqb{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:700;margin-bottom:1.5rem;text-align:center}.login-module__message___qSejT{color:var(--seamless-success,#68d391);text-align:center}.login-module__inputGroup___P6qgS{margin-bottom:1rem}.login-module__label___mx5vu{color:var(--seamless-text-muted,#d1d5db);display:block}.login-module__input___U07lW{background-color:var(--seamless-surface-raised,#4b5563);border:1px solid var(--seamless-border,#d1d5db);border-radius:.375rem;margin-top:.25rem;padding:.5rem;width:100%}.login-module__input___U07lW:focus{box-shadow:0 0 0 2px var(--seamless-accent,#3b82f6);outline:none}.login-module__helperText___kDQ4-{color:var(--seamless-text-muted,#9ca3af);font-size:.75rem;margin-top:.5rem}.login-module__error___40zxh{color:var(--seamless-danger,#f87171);font-size:.875rem}.login-module__button___0kFBs{background-color:var(--seamless-accent,#2563eb);border-radius:.375rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;margin-top:1rem;padding:.5rem;transition:background-color .3s;width:100%}.login-module__button___0kFBs:hover{background-color:var(--seamless-accent-hover,#1d4ed8)}.login-module__button___0kFBs:disabled{background-color:var(--seamless-disabled,#9ca3af);cursor:not-allowed}.login-module__toggle___1JiG1{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.875rem;margin-top:1.5rem;text-align:center;width:100%}.login-module__underline___gs-RS{text-decoration:underline}.login-module__phoneRow___oeNtq{display:grid;gap:.5rem;grid-template-columns:1fr 3fr;margin-top:.25rem}.login-module__phoneInput___2MPQC,.login-module__select___rRV1O{background-color:var(--seamless-surface-raised,#4b5563);border:1px solid var(--seamless-border,#d1d5db);border-radius:.375rem;padding:.5rem;width:100%}@media (max-width:500px){.login-module__phoneRow___oeNtq{grid-template-columns:1fr}}.login-module__fallbackCard___HdIk-{background:var(--seamless-surface-raised,hsla(0,0%,100%,.04));border:1px solid var(--seamless-border,hsla(0,0%,100%,.08));border-radius:12px;display:flex;flex-direction:column;gap:14px;margin-top:18px;padding:18px}.login-module__fallbackHeader___-il2v{color:var(--seamless-text,#f3f4f6);font-size:.95rem;font-weight:600}.login-module__fallbackDescription___ea5EB{color:var(--seamless-text-muted,#9ca3af);font-size:.85rem;line-height:1.4}.login-module__fallbackActions___AD3ni{display:flex;flex-direction:column;gap:10px}.login-module__fallbackActionButton___lFgWf{background:var(--seamless-surface,rgba(0,0,0,.25));border:1px solid var(--seamless-border,hsla(0,0%,100%,.08));border-radius:8px;cursor:pointer;display:flex;flex-direction:column;padding:12px 14px;text-align:left;transition:all .15s ease}.login-module__fallbackActionButton___lFgWf:hover{background:var(--seamless-surface-hover,hsla(0,0%,100%,.06));border-color:var(--seamless-border,hsla(0,0%,100%,.15))}.login-module__actionTitle___ycrMp{color:var(--seamless-text,#f9fafb);font-size:.9rem;font-weight:500}.login-module__actionSubtext___opaIV{color:var(--seamless-text-muted,#9ca3af);font-size:.75rem;margin-top:2px}.login-module__linkButton___5lsoe{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.8rem;margin-top:6px}.login-module__linkButton___5lsoe:hover{text-decoration:underline}");const Ue=({identifier:r,onMagicLink:a,onEmailOtp:o,onPhoneOtp:n,onPasskeyRetry:i,loginMethods:s})=>{const l=new Set(s??["passkey","magic_link","phone_otp"]),d=l.has("magic_link")&&ne(r),c=l.has("email_otp")&&Boolean(o)&&ne(r),u=l.has("phone_otp")&&ie(r),m=l.has("passkey")&&Boolean(i);return d||c||u||m?t("div",{className:Te,children:[e("div",{className:Ce,children:"Choose a sign-in method"}),e("p",{className:Me,children:"Choose another secure sign-in method."}),t("div",{className:Ie,children:[d&&t("button",{type:"button",className:Ae,onClick:a,children:[e("span",{className:ze,children:"Email Magic Link"}),e("span",{className:Ee,children:"Send a secure sign-in link to your email"})]}),c&&t("button",{type:"button",className:Ae,onClick:o,children:[e("span",{className:ze,children:"Email Code"}),e("span",{className:Ee,children:"Receive a one-time code by email"})]}),u&&t("button",{type:"button",className:Ae,onClick:n,children:[e("span",{className:ze,children:"Text Message Code"}),e("span",{className:Ee,children:"Receive a one-time code via SMS"})]})]}),m&&e("button",{type:"button",className:Fe,onClick:i,children:"Try passkey anyway"})]}):null},Le="seamless:oauth:provider",Re=()=>{const{listOAuthProviders:r,startOAuthLogin:a}=X(),o=h("/oauth/callback"),[n,i]=g([]),[s,l]=g("");if(m(()=>{let e=!0;return r().then(({data:t})=>{e&&i(t?.providers??[])}),()=>{e=!1}},[r]),0===n.length)return null;return t("div",{className:Ie,children:[n.map(r=>e("button",{type:"button",className:Ae,onClick:()=>(async e=>{l(""),sessionStorage.setItem(Le,e);const{data:t,error:r}=await a({providerId:e,redirectUri:new URL(o,window.location.origin).toString()});r?l("Could not start sign-in with this provider."):window.location.assign(t.authorizationUrl)})(r.id),children:t("span",{className:ze,children:["Continue with ",r.name]})},r.id)),s&&e("p",{className:Se,children:s})]})},Be=()=>{const a=y(),{hasSignedInBefore:o,login:n,handlePasskeyLogin:i}=X(),s=te(),{passkeySupported:l}=le(),{loginMethods:d}=ae(),[c,u]=g(""),[_,p]=g(""),[f,h]=g("register"),[v,b]=g(""),[k,x]=g(""),[w,P]=g(""),[S,N]=g(!1),[O,T]=g(null);m(()=>{o&&h("login")},[o]);return e("div",{className:ye,children:t("div",{className:ve,children:[e("h2",{className:be,children:"login"===f?"Sign In":"Create Account"}),t(r,{children:[t("form",{onSubmit:async e=>{e.preventDefault(),b(""),N(!1);try{if("login"===f){const{data:e,error:t}=await n(c,l);if(t)return void b("Failed to start sign-in. Please try again.");const r=e?.loginMethods?.length?e.loginMethods:d??re;if(T(r),l&&r.includes("passkey")){const{error:e}=await i();return e?(N(!0),void b("Passkey sign-in could not be completed. Choose another sign-in method.")):void a("/")}return void N(!0)}"register"===f&&await(async()=>{b("");const{data:e,error:t}=await s.register({email:_});t?b("Failed to register. Please try again."):"Success"===e.message?a(me):b("An unexpected error occurred. Try again. If the problem persists, contact support.")})()}catch{console.error("Failed to continue sign-in."),b("Failed to continue sign-in. Please try again.")}},children:["login"===f&&t("div",{className:ke,children:[e("label",{htmlFor:"identifier",className:xe,children:"Email Address / Phone Number"}),e("input",{id:"identifier",type:"text",value:c,onChange:e=>{const t=e.target.value;u(t)},autoComplete:"off",placeholder:"Email or Phone Number",className:we,onBlur:()=>{if(c){const e=ne(c)||ie(c);P(e?"":"Please enter a valid email or phone number")}},required:!0}),e("p",{className:Pe,children:"Phone numbers must include a country code e.g. +1"}),S&&e(Ue,{identifier:c,onMagicLink:async()=>{const{error:e}=await s.requestMagicLink();e?b("Failed to send magic link."):a(fe,{state:{identifier:c}})},onEmailOtp:async()=>{const{error:e}=await s.requestLoginEmailOtp();e?b("Failed to send email code."):a(me,{state:{flow:"login"}})},onPhoneOtp:async()=>{const{error:e}=await s.requestLoginPhoneOtp();e?b("Failed to send OTP."):a(ue,{state:{flow:"login"}})},onPasskeyRetry:l?i:void 0,loginMethods:O}),w&&e("p",{className:Se,children:w})]}),"register"===f&&t("div",{className:ke,children:[e("label",{htmlFor:"email",className:xe,children:"Email Address"}),e("input",{id:"email",type:"email",value:_,onChange:e=>{const t=e.target.value;p(t)},autoComplete:"off",className:we,onBlur:()=>{if(_){const e=ne(_);x(e?"":"Please enter a valid email")}},required:!0}),k&&e("p",{className:Se,children:k})]}),e("button",{type:"submit",className:Ne,disabled:!("login"===f&&c?ne(c)||ie(c):ne(_)),children:"login"===f?"Login":"Register"}),v&&e("p",{className:Se,children:v}),e("button",{type:"button",onClick:()=>h("login"===f?"register":"login"),className:Oe,children:"login"===f?"Don't have an account? Create one":"Already have an account? Sign in"})]}),e(Re,{})]})]})})};var qe={container:"passKeyLogin-module__container___IUKxF",card:"passKeyLogin-module__card___2sKM1",title:"passKeyLogin-module__title___HZxvc",button:"passKeyLogin-module__button___FvR4I"};he(".passKeyLogin-module__container___IUKxF{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.passKeyLogin-module__card___2sKM1{background-color:var(--seamless-surface,#1f2937);border-radius:1rem;box-shadow:0 4px 20px var(--seamless-shadow,rgba(0,0,0,.4));display:flex;flex-direction:column;gap:1.5rem;max-width:400px;padding:2rem;width:100%}.passKeyLogin-module__title___HZxvc{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:600;text-align:center}.passKeyLogin-module__button___FvR4I{background-color:var(--seamless-accent,#2563eb);border:1px solid var(--seamless-accent,#3b82f6);border-radius:.5rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;font-weight:500;padding:.75rem 1rem;text-align:center;transition:background-color .2s ease;width:100%}.passKeyLogin-module__button___FvR4I:hover{background-color:var(--seamless-accent-hover,#1d4ed8)}@media (max-width:480px){.passKeyLogin-module__card___2sKM1{padding:1.25rem}.passKeyLogin-module__button___FvR4I{font-size:1rem}}");const je=()=>{const r=y(),{handlePasskeyLogin:a}=X(),[o,n]=g("");return e("div",{className:qe.container,children:t("div",{className:qe.card,children:[e("h2",{className:qe.title,children:"Login with Passkey"}),e("button",{onClick:async()=>{n("");const{error:e}=await a();e?n("Passkey sign-in could not be completed. Try another sign-in method."):r("/")},className:qe.button,children:"Use Passkey"}),o&&e("p",{className:qe.error,children:o})]})})};var Je="registerPasskey-module__container___jqEh8",Ge="registerPasskey-module__card___MJAyC",De="registerPasskey-module__loading___Q4i1x",We="registerPasskey-module__spinner___V1nhd",$e="registerPasskey-module__supported___ihTih",Ve="registerPasskey-module__title___vn2Qu",Ke="registerPasskey-module__description___AWmO-",He="registerPasskey-module__button___D3b4B",Ye="registerPasskey-module__message___RiOw-",Qe="registerPasskey-module__success___HP5aX",Ze="registerPasskey-module__error___hGiqE",Xe="registerPasskey-module__skip___1hDyU";he(".registerPasskey-module__container___jqEh8{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.registerPasskey-module__card___MJAyC{background-color:var(--seamless-surface,#1f2937);border-radius:1rem;box-shadow:0 4px 20px var(--seamless-shadow,rgba(0,0,0,.4));max-width:400px;padding:1.5rem;width:100%}.registerPasskey-module__loading___Q4i1x{align-items:center;background-color:var(--seamless-surface,#f9fafb);border-radius:.75rem;box-shadow:0 2px 8px var(--seamless-shadow,rgba(0,0,0,.1));color:var(--seamless-text,#374151);display:flex;font-weight:500;gap:.75rem;justify-content:center;padding:1.5rem}.registerPasskey-module__spinner___V1nhd{animation:registerPasskey-module__spin___oYcsC 1s linear infinite;border-bottom:2px solid var(--seamless-accent,#3b82f6);border-left:2px solid transparent;border-radius:9999px;border-right:2px solid transparent;border-top:2px solid var(--seamless-accent,#3b82f6);height:1.5rem;width:1.5rem}@keyframes registerPasskey-module__spin___oYcsC{to{transform:rotate(1turn)}}.registerPasskey-module__supported___ihTih{background-color:var(--seamless-surface,#ecfdf5);border-radius:.75rem;box-shadow:0 2px 12px var(--seamless-shadow,rgba(0,0,0,.1));color:var(--seamless-text,#065f46);padding:1.25rem}.registerPasskey-module__title___vn2Qu{font-size:1.125rem;font-weight:600;margin-bottom:.5rem}.registerPasskey-module__description___AWmO-{margin-bottom:1rem}.registerPasskey-module__button___D3b4B{background-color:var(--seamless-accent,#059669);border:none;border-radius:.5rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;font-weight:500;padding:.75rem 1rem;transition:background-color .2s ease;width:100%}.registerPasskey-module__button___D3b4B:hover{background-color:var(--seamless-accent-hover,#047857)}.registerPasskey-module__message___RiOw-{font-size:.875rem;margin-top:1rem}.registerPasskey-module__success___HP5aX{color:var(--seamless-success,#6ee7b7)}.registerPasskey-module__error___hGiqE{color:var(--seamless-danger,#f87171)}.registerPasskey-module__skip___1hDyU{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.875rem;margin-top:1.5rem;text-align:center;width:100%}.registerPasskey-module__skip___1hDyU:disabled{cursor:default;opacity:.6}");var et="deviceNameModal-module__overlay___fmdPd",tt="deviceNameModal-module__modal___uoEda",rt="deviceNameModal-module__description___-HMTA",at="deviceNameModal-module__input___4vQMI",ot="deviceNameModal-module__actions___KXw7b",nt="deviceNameModal-module__primary___9Ozlk",it="deviceNameModal-module__secondary___HILhc";he(".deviceNameModal-module__overlay___fmdPd{align-items:center;background:var(--seamless-overlay,rgba(0,0,0,.45));display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.deviceNameModal-module__modal___uoEda{background:var(--seamless-surface,#1f2937);border-radius:12px;box-shadow:0 20px 40px var(--seamless-shadow,rgba(0,0,0,.15));color:var(--seamless-text,#fff);max-width:420px;padding:24px;width:100%}.deviceNameModal-module__description___-HMTA{color:var(--seamless-text,#fff);font-size:14px;margin-bottom:16px}.deviceNameModal-module__input___4vQMI{border:1px solid var(--seamless-border,#ddd);border-radius:8px;font-size:14px;margin-bottom:20px;padding:10px 12px;width:100%}.deviceNameModal-module__actions___KXw7b{display:flex;gap:10px;justify-content:flex-end}.deviceNameModal-module__primary___9Ozlk{background:var(--seamless-accent,#2563eb);border:none;border-radius:8px;color:var(--seamless-accent-contrast,#fff);cursor:pointer;padding:8px 14px}.deviceNameModal-module__secondary___HILhc{background:transparent;border:1px solid var(--seamless-border,#ccc);border-radius:8px;cursor:pointer;padding:8px 14px}");const st=({isOpen:r,onCancel:a,onConfirm:o})=>{const[n,i]=g("");return r?e("div",{className:et,children:t("div",{className:tt,children:[e("h3",{children:"Name This Device"}),e("p",{className:rt,children:"Give this passkey a friendly name so you can recognize it later."}),e("input",{type:"text",placeholder:"e.g., MacBook Pro, iPhone, YubiKey",value:n,onChange:e=>i(e.target.value),className:at,autoFocus:!0}),t("div",{className:ot,children:[e("button",{onClick:a,className:it,children:"Cancel"}),e("button",{onClick:()=>o(n.trim()),disabled:!n.trim(),className:nt,children:"Continue"})]})]})}):null},lt=()=>{const{refreshSession:a}=X(),o=te(),{passkeySupported:n,loading:i}=le(),{loginMethods:s,loading:l}=ae(),d=y(),[c,u]=g("idle"),[m,_]=g(""),[p,f]=g(!1),[h,v]=g(null),b=oe(s),k=async()=>{await a(),d("/")};return t(r,{children:[e("div",{className:Je,children:e("div",{className:Ge,children:t("div",i||l?{className:De,children:[e("div",{className:We}),e("span",{children:"Checking for Passkey Support..."})]}:n?{className:$e,children:[e("h2",{className:Ve,children:"Secure Your Account with a Passkey"}),e("p",{className:Ke,children:"Your device supports passkeys! Register one to skip passwords forever."}),e("button",{onClick:()=>{const{platform:e,browser:t,deviceInfo:r}=function(){const e=navigator.userAgent.toLowerCase();let t="unknown",r="unknown";return/iphone|ipad|ipod/.test(e)?t="ios":/android/.test(e)?t="android":/mac os/.test(e)?t="mac":/windows/.test(e)?t="windows":/linux/.test(e)&&(t="linux"),navigator.brave?r="brave":/edg\/|edgios/.test(e)?r="edge":/opr\/|opt\/|opera/.test(e)?r="opera":/vivaldi/.test(e)?r="vivaldi":/samsungbrowser/.test(e)?r="samsung":/firefox|fxios/.test(e)?r="firefox":/chrome|crios/.test(e)?r="chrome":/safari/.test(e)&&(r="safari"),{platform:t,browser:r,deviceInfo:`${t} • ${r}`}}();v({platform:e,browser:t,deviceInfo:r}),f(!0)},disabled:"loading"===c,className:He,children:"loading"===c?"Registering...":"Register Passkey"}),m&&e("p",{className:`${Ye} ${"success"===c?Qe:Ze}`,children:m}),b&&e("button",{type:"button",onClick:k,disabled:"loading"===c,className:Xe,children:"Skip for now"})]}:{className:$e,children:[e("h2",{className:Ve,children:"Passkeys are not available here"}),e("p",{className:Ke,children:b?"This device does not support passkeys. You can continue without one and add a passkey later from a device that does.":"This device does not support passkeys, and this application requires one to sign in. Try again from a device or browser that supports them."}),b&&e("button",{type:"button",onClick:k,className:He,children:"Continue"})]})})}),e(st,{isOpen:p,onCancel:()=>{f(!1),v(null)},onConfirm:async e=>{if(!h)return;const t={friendlyName:e,...h};u("loading");try{const{error:e}=await o.registerPasskey(t);if(e)throw e;await a(),u("success"),_("Passkey registered successfully."),d("/")}catch{console.error("Passkey registration failed."),u("error"),_("Error registering passkey.")}finally{f(!1),v(null)}}})]})};var dt="verifyOTP-module__container___wgoDE",ct="verifyOTP-module__card___3cs2p",ut="verifyOTP-module__title___fZ-1d",mt="verifyOTP-module__subtitle___dGSu3",_t="verifyOTP-module__error___GEtlG",gt="verifyOTP-module__success___46TjG",pt="verifyOTP-module__form___jiGG-",ft="verifyOTP-module__label___Zq5Mi",ht="verifyOTP-module__timer___smq-a",yt="verifyOTP-module__resend___PlmkG",vt="verifyOTP-module__button___8pIuO",bt="verifyOTP-module__toggle___wbzVa";he(".verifyOTP-module__container___wgoDE{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.verifyOTP-module__card___3cs2p{background-color:var(--seamless-surface,#1f2937);border-radius:.5rem;box-shadow:0 0 10px var(--seamless-shadow,rgba(0,0,0,.3));max-width:28rem;padding:1.5rem;width:100%}.verifyOTP-module__title___fZ-1d{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:700;margin-bottom:1rem;text-align:center}.verifyOTP-module__subtitle___dGSu3{color:var(--seamless-text-muted,#9ca3af);font-size:.875rem;margin-bottom:1.5rem;text-align:center}.verifyOTP-module__error___GEtlG{color:var(--seamless-danger,#f87171);margin-bottom:1rem;text-align:center}.verifyOTP-module__success___46TjG{color:var(--seamless-success,#34d399);margin-bottom:.75rem;text-align:center}.verifyOTP-module__form___jiGG-{display:flex;flex-direction:column;gap:1rem}.verifyOTP-module__label___Zq5Mi{color:var(--seamless-text-muted,#d1d5db);display:block;font-size:.875rem;margin-bottom:.25rem}.verifyOTP-module__timer___smq-a{color:var(--seamless-warning,#facc15);font-size:.875rem}.verifyOTP-module__input___yqIXM{background-color:var(--seamless-surface-raised,#374151);border:1px solid var(--seamless-border,#4b5563);border-radius:.375rem;color:var(--seamless-text,#fff);outline:none;padding:.5rem;width:100%}.verifyOTP-module__input___yqIXM:focus{box-shadow:0 0 0 2px var(--seamless-accent,#3b82f6)}.verifyOTP-module__resend___PlmkG{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.75rem;margin-top:.25rem;text-decoration:underline}.verifyOTP-module__resend___PlmkG:hover{color:var(--seamless-accent,#3b82f6)}.verifyOTP-module__button___8pIuO{background-color:var(--seamless-accent,#2563eb);border:none;border-radius:.375rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;padding:.5rem;transition:background-color .2s;width:100%}.verifyOTP-module__button___8pIuO:hover{background-color:var(--seamless-accent-hover,#1d4ed8)}.verifyOTP-module__toggle___wbzVa{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.875rem;margin-top:1.5rem;text-align:center;width:100%}");var kt="otpInput-module__otpContainer___MUjby",xt="otpInput-module__otpInput___3YMVm";he(".otpInput-module__otpContainer___MUjby{display:flex;gap:8px;justify-content:center;margin-top:8px}.otpInput-module__otpInput___3YMVm{background:var(--seamless-surface-raised,#374151);border:1px solid var(--seamless-border,#4b5563);border-radius:8px;color:var(--seamless-text,#fff);font-size:1.2rem;height:48px;text-align:center;transition:border-color .15s ease,box-shadow .15s ease;width:42px}.otpInput-module__otpInput___3YMVm:focus{border-color:var(--seamless-accent,#60a5fa);box-shadow:0 0 0 2px var(--seamless-accent,rgba(96,165,250,.25));outline:none}");const wt=({length:t=6,value:r,inputMode:a="numeric",onChange:o,name:n="otp"})=>{const i=p([]),s=r.split("").concat(Array(t).fill("")).slice(0,t),l=(e,t)=>{var r;if(t.length>1)d(e,t);else if(!t||(r=t,"numeric"===a?/^\d$/.test(r):/^[a-zA-Z]$/.test(r))){const r=[...s];r[e]=t;const a=r.join("");o(a),t&&i.current[e+1]&&i.current[e+1]?.focus()}},d=(e,r)=>{let n=r;n="numeric"===a?r.replace(/\D/g,""):r.replace(/[^a-zA-Z]/g,"");const l=n.slice(0,t).split(""),d=[...s];l.forEach((r,a)=>{e+a<t&&(d[e+a]=r)}),o(d.join("")),i.current[Math.min(e+l.length,t-1)]?.focus()};return e("div",{className:kt,role:"group","aria-label":"One-time password input",onPaste:e=>{e.preventDefault(),d(0,e.clipboardData.getData("text"))},children:s.map((r,d)=>e("input",{ref:e=>i.current[d]=e,type:"text",inputMode:"numeric"===a?"numeric":"text",autoComplete:"one-time-code",name:`${n}-${d}`,maxLength:1,value:r,className:xt,onChange:e=>l(d,e.target.value),onKeyDown:e=>((e,r)=>{if("Backspace"===r.key){r.preventDefault();const t=[...s];s[e]?(t[e]="",o(t.join(""))):e>0&&(t[e-1]="",o(t.join("")),i.current[e-1]?.focus())}"ArrowLeft"===r.key&&e>0&&i.current[e-1]?.focus(),"ArrowRight"===r.key&&e<t-1&&i.current[e+1]?.focus()})(d,e),"aria-label":`Digit ${d+1}`},d))})},Pt=()=>{const r=y(),a=v(),{refreshSession:o}=X(),n="login"===a.state?.flow,[i,s]=g(""),[l,d]=g(null),[c,u]=g(""),[_,p]=g(!1),[f,h]=g(""),[b,k]=g(300),x=te(),w=async()=>{if(p(!0),!l){const{error:e}=n?await x.verifyLoginPhoneOtp(i):await x.verifyPhoneOtp(i);if(e)u("Verification failed.");else{if(n)return await o(),void r("/");d(!0)}}p(!1)},P=async()=>{h(""),await(async()=>{u("");const{error:e}=n?await x.requestLoginPhoneOtp():await x.requestPhoneOtp();e?u("Failed to send SMS code. If this persists, refresh the page and try again."):h("Verification SMS has been resent.")})(),h("Verification SMS has been resent.")};return m(()=>{const e=setInterval(()=>{k(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),m(()=>{l&&!n&&(async()=>{const{error:e}=await x.requestEmailOtp();e?u("Failed to send Email code. If this persists, refresh the page and try registering again."):r(me)})()},[l,n,r,x]),e("div",{className:dt,children:t("div",{className:ct,children:[e("h2",{className:ut,children:"Verify Your Phone Number"}),e("p",{className:mt,children:"Enter the code sent to your phone number."}),c&&e("p",{className:_t,children:c}),f&&e("p",{className:gt,children:f}),t("form",{onSubmit:async e=>{if(e.preventDefault(),u(""),6===i.length){p(!0);try{await w()}catch{u("Unexpected error occurred.")}finally{p(!1)}}else u("Please enter a valid code.")},className:pt,children:[t("div",{children:[t("label",{htmlFor:"phoneCode",className:ft,children:["Phone Verification Code ",(N=l,!0===N?e("span",{className:"text-green-400 ml-2",children:"✅"}):!1===N?e("span",{className:"text-red-400 ml-2",children:"❌"}):null)," -"," ",t("span",{className:ht,children:["Code expires in: ",(S=b,`${Math.floor(S/60).toString().padStart(2,"0")}:${(S%60).toString().padStart(2,"0")}`)]})]}),e(wt,{length:6,value:i,onChange:s}),e("button",{type:"button",onClick:()=>P(),className:yt,children:"Resend code to phone"})]}),e("button",{type:"submit",className:vt,children:_?"Verifying...":"Verify & Continue"}),e("button",{type:"button",onClick:()=>r("/login"),className:bt,children:"Back to login"})]})]})});var S,N},St=()=>{const r=y(),a=v(),{refreshSession:o}=X(),n=te(),{passkeySupported:i}=le(),s="login"===a.state?.flow,[l,d]=g(!1),[c,u]=g(""),[_,p]=g(300),[f,h]=g(""),[b,k]=g("");return m(()=>{const e=setInterval(()=>{p(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),e("div",{className:dt,children:t("div",{className:ct,children:[e("h2",{className:ut,children:"Verify Your Email"}),e("p",{className:mt,children:"We sent you a verification email. Enter the code below."}),f&&e("p",{className:_t,children:f}),b&&e("p",{className:gt,children:b}),t("form",{onSubmit:async e=>{if(e.preventDefault(),h(""),6===c.length){d(!0);try{const{error:e}=s?await n.verifyLoginEmailOtp(c):await n.verifyEmailOtp(c);if(e)return void h("Verification failed.");if(s)return await o(),void r("/");i?r(pe):(await o(),r("/"))}catch{console.error("Email OTP verification failed."),h("Verification failed.")}finally{d(!1)}}else h("Please enter a valid code.")},className:pt,children:[t("div",{children:[t("label",{htmlFor:"emailCode",className:ft,children:["Email Verification Code",t("span",{className:ht,children:[" ","— Code expires in ",(x=_,`${Math.floor(x/60).toString().padStart(2,"0")}:${(x%60).toString().padStart(2,"0")}`)]})]}),e(wt,{length:6,value:c,onChange:u,inputMode:"text"}),e("button",{type:"button",onClick:async()=>{h(""),k("");const{error:e}=s?await n.requestLoginEmailOtp():await n.requestEmailOtp();e?h("Failed to send Email code. If this persists, refresh the page and try again."):k("Verification email has been resent.")},className:yt,children:"Resend code to email"})]}),e("button",{type:"submit",className:vt,disabled:l,children:l?"Verifying...":"Verify & Continue"}),e("button",{type:"button",onClick:()=>r("/login"),className:bt,children:"Back to login"})]})]})});var x};var Nt={container:"verifyMagiclink-module__container___qrSXf",card:"verifyMagiclink-module__card___niKgr",title:"verifyMagiclink-module__title___SumxD",verificationContent:"verifyMagiclink-module__verificationContent___NdsS0",spinner:"verifyMagiclink-module__spinner___lnW1k",successIcon:"verifyMagiclink-module__successIcon___XjFEM",checkIcon:"verifyMagiclink-module__checkIcon___I0JOP",successText:"verifyMagiclink-module__successText___lO5Qq"};he(".verifyMagiclink-module__container___qrSXf{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.verifyMagiclink-module__card___niKgr{background-color:var(--seamless-surface,#1f2937);border-radius:.5rem;box-shadow:0 0 10px var(--seamless-shadow,rgba(0,0,0,.3));max-width:28rem;padding:1.5rem;width:100%}.verifyMagiclink-module__title___SumxD{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:700;margin-bottom:1rem;text-align:center}.verifyMagiclink-module__verificationContent___NdsS0{align-items:center;display:flex;flex-direction:column;gap:14px;margin:20px 0}.verifyMagiclink-module__spinner___lnW1k{animation:verifyMagiclink-module__spin___2lGzj .9s linear infinite;border:3px solid var(--seamless-border,hsla(0,0%,100%,.15));border-radius:50%;border-top-color:var(--seamless-accent,#60a5fa);height:28px;width:28px}.verifyMagiclink-module__successIcon___XjFEM{align-items:center;background:rgba(16,185,129,.15);border-radius:50%;display:flex;height:36px;justify-content:center;width:36px}.verifyMagiclink-module__checkIcon___I0JOP{animation:verifyMagiclink-module__checkPop___-3qJu .25s ease-out;color:var(--seamless-success,#34d399);height:22px;width:22px}.verifyMagiclink-module__successText___lO5Qq{color:var(--seamless-success,#34d399);font-size:.9rem}@keyframes verifyMagiclink-module__checkPop___-3qJu{0%{opacity:0;transform:scale(.6)}80%{transform:scale(1.15)}to{opacity:1;transform:scale(1)}}@keyframes verifyMagiclink-module__spin___2lGzj{to{transform:rotate(1turn)}}");const Ot=()=>{const[r]=b(),a=y(),o=r.get("token"),[n,i]=g(""),[s,l]=g(""),d=te(),{refreshSession:c}=X();return m(()=>{let e=!0,t=null,r=null;return(async()=>{if(!o)return e&&i("Missing token for verification."),void console.error("No magic-link token found.");const{error:n}=await d.verifyMagicLink(o);if(n)return console.error("Failed to verify token"),void(e&&i("Failed to verify token"));await c(),e&&(t=new BroadcastChannel("seamless-auth"),t.postMessage({type:"MAGIC_LINK_AUTH_SUCCESS"}),l("You have been verified on the device and browser that initiated this request"),r=setTimeout(()=>{e&&a("/")},900))})(),()=>{e=!1,t?.close(),r&&clearTimeout(r)}},[o,d,a,c]),e("div",{className:Nt.container,children:t("div",{className:Nt.card,children:[e("h1",{className:Nt.title,children:"Verifying your login"}),t("div",{className:Nt.verificationContent,children:[!s&&!n&&e("div",{className:Nt.spinner}),s&&e("div",{className:Nt.successIcon,children:e("svg",{viewBox:"0 0 24 24",className:Nt.checkIcon,fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M5 13l4 4L19 7"})})}),!s&&!n&&e("p",{className:Nt.helperText,children:"Please wait while we securely verify your sign-in link."}),s&&e("p",{className:Nt.successText,children:"Login verified. Redirecting…"}),n&&e("p",{className:Nt.error,children:n})]})]})})},Tt={oauth_missing_email:"Your provider account did not share an email address. Add an email to that account and make it visible, then try again.",oauth_email_not_verified:"The email address on your provider account is not verified. Verify it with your provider, then try again.",oauth_missing_subject:"Your provider did not return a usable account identifier. Try again, or sign in with a different method."},Ct=()=>{const{finishOAuthLogin:a}=X(),o=y(),[n]=b(),[i,s]=g(""),l=p(!1);return m(()=>{if(l.current)return;l.current=!0;const e=n.get("code"),t=n.get("state"),r=sessionStorage.getItem(Le);e&&t&&r?a({providerId:r,code:e,state:t}).then(({error:e})=>{if(e){const t=T(e);return void s(t?Tt[t]:"We could not complete sign-in. Please try again.")}sessionStorage.removeItem(Le),o("/")}):s("This sign-in link is missing required information.")},[a,o,n]),t("div",{className:Nt.container,children:[e("h2",{className:Nt.title,children:i?"Sign-in failed":"Completing sign-in..."}),i&&t(r,{children:[e("p",{children:i}),e("button",{type:"button",onClick:()=>o("/login"),children:"Back to login"})]})]})};var Mt="magiclink-module__container___45zcA",It="magiclink-module__card___Au9oN",At="magiclink-module__iconWrapper___k5ndr",zt="magiclink-module__mailIcon___Pwb7q",Et="magiclink-module__iconRing___bdLvf",Ft="magiclink-module__heading___b9cre",Ut="magiclink-module__message___kiVFj",Lt="magiclink-module__identifier___JtcFM",Rt="magiclink-module__helperText___7Mlfh",Bt="magiclink-module__actions___64I-3",qt="magiclink-module__secondaryButton___BntAI",jt="magiclink-module__cooldown___Ib4rm",Jt="magiclink-module__linkButton___maJiv";he(".magiclink-module__container___45zcA{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center}.magiclink-module__card___Au9oN{background-color:var(--seamless-surface,#1f2937);border-radius:.75rem;box-shadow:0 10px 25px var(--seamless-shadow,rgba(0,0,0,.25));max-width:420px;padding:2.5rem 2rem;text-align:center;width:100%}.magiclink-module__iconWrapper___k5ndr{display:flex;justify-content:center;margin-bottom:1.25rem;position:relative}.magiclink-module__mailIcon___Pwb7q{color:var(--seamless-accent-soft,#a5b4fc);height:38px;width:38px;z-index:2}.magiclink-module__iconRing___bdLvf{animation:magiclink-module__pulse___YGm-I 2s infinite;background:rgba(99,102,241,.15);border-radius:50%;height:72px;position:absolute;width:72px}@keyframes magiclink-module__pulse___YGm-I{0%{opacity:.8;transform:scale(.6)}70%{opacity:0;transform:scale(1.4)}to{opacity:0}}.magiclink-module__heading___b9cre{font-size:1.55rem;font-weight:600;margin-bottom:.75rem}.magiclink-module__message___kiVFj{color:var(--seamless-text-muted,#d1d5db);font-size:.95rem;line-height:1.4;margin-bottom:1rem}.magiclink-module__identifier___JtcFM{background:var(--seamless-surface-raised,hsla(0,0%,100%,.05));border-radius:6px;display:inline-block;font-size:1rem;font-weight:600;margin-bottom:1rem;padding:.45rem .6rem}.magiclink-module__helperText___7Mlfh{color:var(--seamless-text-muted,#9ca3af);font-size:.85rem;line-height:1.4;margin-bottom:.6rem}.magiclink-module__actions___64I-3{display:flex;flex-direction:column;gap:.6rem;margin-top:1.6rem}.magiclink-module__secondaryButton___BntAI{background:var(--seamless-surface,#111827);border:1px solid var(--seamless-border,#374151);border-radius:8px;color:var(--seamless-text,#fff);cursor:pointer;font-weight:500;padding:.65rem}.magiclink-module__secondaryButton___BntAI:hover:not(:disabled){background:var(--seamless-surface-hover,#1f2937)}.magiclink-module__secondaryButton___BntAI:disabled{cursor:not-allowed;opacity:.5}.magiclink-module__cooldown___Ib4rm{color:var(--seamless-text-muted,#9ca3af);font-size:.8rem}.magiclink-module__linkButton___maJiv{background:none;border:none;color:var(--seamless-accent-soft,#a5b4fc);cursor:pointer;font-size:.85rem;margin-top:.4rem}.magiclink-module__linkButton___maJiv:hover{text-decoration:underline}");const Gt=()=>{const{refreshSession:r}=X(),a=y(),o=v(),n=te(),i=o.state?.identifier,[s,l]=g(30);m(()=>{const e=setInterval(()=>{l(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]);const d=f(async()=>{const{data:e,error:t}=await n.checkMagicLink();return!t&&"Success"===e?.message},[n]);return m(()=>{const e=new BroadcastChannel("seamless-auth");return e.onmessage=async e=>{"MAGIC_LINK_AUTH_SUCCESS"===e.data?.type&&await d()&&(await r(),a("/"))},()=>{e.close()}},[d,a,r]),m(()=>{const e=setInterval(async()=>{try{await d()&&(await r(),a("/"))}catch{}},5e3);return()=>clearInterval(e)},[d,r,a]),e("div",{className:Mt,children:t("div",{className:It,children:[t("div",{className:At,children:[e("div",{className:Et}),t("svg",{className:zt,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[e("path",{d:"M4 6h16v12H4z"}),e("path",{d:"m4 6 8 6 8-6"})]})]}),e("h2",{className:Ft,children:"Check your email"}),e("p",{className:Ut,children:"If an account exists for this address, we sent a secure sign-in link."}),i&&e("div",{className:Lt,children:i}),e("p",{className:Rt,children:"Open the email and click the link to finish signing in."}),e("p",{className:Rt,children:"Didn’t receive anything? Check your spam folder or try creating a new account."}),t("div",{className:Bt,children:[e("button",{className:qt,disabled:s>0,onClick:async()=>{s>0||(await n.requestMagicLink(),l(30))},children:"Resend link"}),s>0&&t("div",{className:jt,children:["Available in ",s,"s"]}),e("button",{className:Jt,onClick:()=>a("/login"),children:"Change email or phone"})]})]})})},Dt=()=>t(k,{children:[e(x,{path:de,element:e(Be,{})}),e(x,{path:ce,element:e(je,{})}),e(x,{path:ue,element:e(Pt,{})}),e(x,{path:me,element:e(St,{})}),e(x,{path:_e,element:e(Ot,{})}),e(x,{path:ge,element:e(Ct,{})}),e(x,{path:pe,element:e(lt,{})}),e(x,{path:fe,element:e(Gt,{})}),e(x,{path:"*",element:e(w,{to:de,replace:!0})})]});export{ee as AuthProvider,Dt as AuthRoutes,S as SeamlessAuthError,$ as createSeamlessAuthClient,U as encodePrfSalt,j as extractPasskeyPrfResult,T as getOAuthErrorCode,C as getWebAuthnErrorDetail,oe as hasNonPasskeyLoginMethod,K as hasScopedRole,B as isPasskeyPrfSupported,V as roleGrantsAccess,X as useAuth,te as useAuthClient,ae as useLoginMethods,le as usePasskeySupport};
|
|
1
|
+
import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{browserSupportsWebAuthn as o,bufferToBase64URLString as n,base64URLStringToBuffer as a,startAuthentication as i,startRegistration as s,WebAuthnError as l}from"@simplewebauthn/browser";import{createContext as c,useMemo as d,useSyncExternalStore as u,useEffect as m,useContext as _,useState as g,useRef as f,useCallback as p}from"react";import{useHref as h,useNavigate as y,useLocation as b,useSearchParams as v,Routes as k,Route as w,Navigate as x}from"react-router-dom";import P from"libphonenumber-js";class S extends Error{constructor(e,t,r,o){super(e),this.name="SeamlessAuthError",this.status=t,this.body=r,this.cause=o}}const O={oauth_missing_email:!0,oauth_email_not_verified:!0,oauth_missing_subject:!0};function N(e){if("object"==typeof e&&null!==e)return e.code}function T(e){if(!(e instanceof S))return;if("object"!=typeof e.body||null===e.body)return;const t=N(e.body)??N(e.body.details);return"string"==typeof t&&Object.prototype.hasOwnProperty.call(O,t)?t:void 0}const C={attachment_not_allowed:!0,synced_passkey_not_allowed:!0,authenticator_not_allowed:!0,prf_required:!0};function I(e){if("object"!=typeof e||null===e)return;const t=e.error;return"string"==typeof t&&Object.prototype.hasOwnProperty.call(C,t)?t:void 0}function A(e){if(e instanceof S&&"object"==typeof e.body&&null!==e.body)return I(e.body)??I(e.body.details)}function M(e){if(!(e instanceof S)||("object"!=typeof(t=e.cause)||null===t||"string"!=typeof t.name))return;var t;const{name:r,code:o,message:n}=e.cause;return{name:r,code:"string"==typeof o?o:void 0,message:"string"==typeof n?n:""}}async function E(e,t){let r;try{r=await e.json()}catch{r=void 0}return new S(function(e){if("object"!=typeof e||null===e)return;const{error:t,message:r}=e;return"string"==typeof t&&t?t:"string"==typeof r&&r?r:void 0}(r)??t,e.status,r)}async function F(e){try{return await e.json()}catch{return}}async function z(e,t){let r;try{r=await e}catch{return{data:null,error:new S(t,0)}}return r.ok?{data:await F(r),error:null}:{data:null,error:await E(r,t)}}function U(e){return{data:e,error:null}}function L(e,t=0,r,o){return{data:null,error:new S(e,t,r,o)}}function q(e){if(e instanceof ArrayBuffer)return e;const t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=new Uint8Array(t.byteLength);return r.set(t),r.buffer}function B(e){return"string"==typeof e?e:n(q(e))}function R(e){return"string"==typeof e?a(e):e}function j(e){return{...e.credentialId?{credentialId:e.credentialId}:{},prf:{salt:B(e.salt),...e.secondSalt?{secondSalt:B(e.secondSalt)}:{}}}}async function J(){return!!o()&&("undefined"==typeof window||!1!==window.isSecureContext)&&void 0!==globalThis.PublicKeyCredential&&"undefined"!=typeof navigator&&"function"==typeof navigator.credentials?.get}function G(e){const t=e,r=t.extensions?.prf?.eval;return r?{...t,extensions:{...t.extensions,prf:{...t.extensions?.prf,eval:{...r,...r.first?{first:R(r.first)}:{},...r.second?{second:R(r.second)}:{}}}}}:e}function W(e){const t=e.clientExtensionResults,r=t?.prf?.results?.first;if(!r)return null;const o=(a=r)instanceof ArrayBuffer?new Uint8Array(a):new Uint8Array(a.buffer,a.byteOffset,a.byteLength);var a;return{credentialId:e.id,output:o,outputBase64url:n(q(o))}}function D(e){const t=e.clientExtensionResults;return t?.prf?.results?{...e,clientExtensionResults:{...e.clientExtensionResults,prf:{...t.prf,results:void 0}}}:e}function $(e,t){const r=e.method===t?e.method:null;return"Success"===e.message&&!0===e.fresh&&null!==r?U({fresh:!0,method:r,verifiedAt:e.verifiedAt??null,expiresAt:e.expiresAt??null,maxAgeSeconds:e.maxAgeSeconds??0}):L(e.message??"Step-up authentication failed.")}function V(e){return e?{method:"POST",body:JSON.stringify(j(e))}:{method:"POST"}}function K(e,t,r){const o=L(t,0,void 0,r),n=M(o.error);return console.error(e,n?.name??"Unknown error."),o}const H=e=>{const t=(e=>{const{authHost:t}=e;return async function(e,r){const o=`${t?.replace(/\/+$/,"")??""}/auth${e.startsWith("/")?e:`/${e}`}`,n=null!=r?.body,a={...r,credentials:"include",headers:{...n?{"Content-Type":"application/json"}:{},...r?.headers}};return fetch(o,a)}})({authHost:e.apiHost});return{getCurrentUser:()=>z(t("users/me",{method:"GET"}),"Failed to load the current user."),login:e=>z(t("/login",{method:"POST",body:JSON.stringify(e)}),"Failed to start sign-in."),loginWithPasskey:async e=>{const r=await z(t("/webAuthn/login/start",{...V(e?.prf)}),"Failed to start passkey login.");if(r.error)return r;let o,n;try{const e=await i({optionsJSON:G(r.data)});o=W(e),n=D(e)}catch(e){return K("Passkey login error.","Passkey login failed.",e)}const a=await z(t("/webAuthn/login/finish",{method:"POST",body:JSON.stringify({assertionResponse:n})}),"Failed to verify passkey.");return a.error?a:"Success"!==a.data?.message?L(a.data?.message??"Passkey login failed."):U(o?{prf:o}:{})},logout:(e={})=>z(t("all_sessions"===e.scope?"/logout/all":"/logout",{method:"DELETE"}),"Failed to sign out."),logoutAllSessions:()=>z(t("/logout/all",{method:"DELETE"}),"Failed to sign out of all sessions."),deleteUser:()=>z(t("/users/delete",{method:"DELETE"}),"Failed to delete the account."),register:e=>z(t("/registration/register",{method:"POST",body:JSON.stringify({email:e.email,...e.phone?{phone:e.phone}:{}})}),"Failed to register."),requestPhoneOtp:()=>z(t("/otp/generate-phone-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the SMS code."),verifyPhoneOtp:e=>z(t("/otp/verify-phone-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the SMS code."),requestLoginPhoneOtp:()=>z(t("/otp/generate-login-phone-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the SMS code."),verifyLoginPhoneOtp:e=>z(t("/otp/verify-login-phone-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the SMS code."),requestEmailOtp:()=>z(t("/otp/generate-email-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the email code."),verifyEmailOtp:e=>z(t("/otp/verify-email-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the email code."),requestLoginEmailOtp:()=>z(t("/otp/generate-login-email-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the email code."),verifyLoginEmailOtp:e=>z(t("/otp/verify-login-email-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the email code."),requestMagicLink:e=>z(t("/magic-link",{method:"POST",body:JSON.stringify(e?{redirectUri:e}:{})}),"Failed to send the magic link."),checkMagicLink:()=>z(t("/magic-link/check",{method:"GET"}),"Failed to check the magic link."),verifyMagicLink:e=>z(t(`/magic-link/verify/${encodeURIComponent(e)}`,{method:"GET"}),"Failed to verify the magic link."),listOAuthProviders:()=>z(t("/oauth/providers",{method:"GET"}),"Failed to list OAuth providers."),getPublicSystemConfig:()=>z(t("/system-config/public",{method:"GET"}),"Failed to read the public system configuration."),startOAuthLogin:e=>z(t(`/oauth/${encodeURIComponent(e.providerId)}/start`,{method:"POST",body:JSON.stringify({...e.redirectUri?{redirectUri:e.redirectUri}:{},...e.returnTo?{returnTo:e.returnTo}:{}})}),"Failed to start OAuth login."),finishOAuthLogin:e=>z(t(`/oauth/${encodeURIComponent(e.providerId)}/callback`,{method:"POST",body:JSON.stringify({code:e.code,state:e.state})}),"Failed to finish OAuth login."),registerPasskey:async e=>{const r=function(e){return"metadata"in e?e:{metadata:e}}(e),o=await z(t(function(e){const t=new URLSearchParams;e.requirePrf?t.set("requirePrf","true"):e.requestPrf&&t.set("requestPrf","true"),e.attachment&&t.set("attachment",e.attachment);const r=t.toString();return"/webAuthn/register/start"+(r?`?${r}`:"")}(r),{method:"GET"}),"Failed to fetch passkey registration challenge.");if(o.error)return o;let n;try{n=await s({optionsJSON:o.data})}catch(e){return e instanceof l?L(e.name,0,void 0,e):K("Passkey registration error.","Passkey registration failed.",e)}const a=function(e){const t=e.clientExtensionResults;return!0===t?.prf?.enabled}(n),i=await z(t("/webAuthn/register/finish",{method:"POST",body:JSON.stringify({attestationResponse:n,metadata:{...r.metadata,prfCapable:a}})}),"Verification failed.");return i.error?i:U({credentialId:n.id,prfCapable:a})},isPasskeyPrfSupported:J,getStepUpStatus:()=>z(t("/step-up/status",{method:"GET"}),"Failed to load step-up status."),verifyStepUpWithPasskey:async()=>{const e=await z(t("/step-up/webauthn/start",{method:"POST"}),"Failed to start step-up authentication.");if(e.error)return e;let r;try{r=D(await i({optionsJSON:G(e.data)}))}catch(e){return K("Step-up authentication error.","Step-up authentication failed.",e)}const o=await z(t("/step-up/webauthn/finish",{method:"POST",body:JSON.stringify({assertionResponse:r})}),"Failed to verify step-up authentication.");return o.error?o:$(o.data??{},"webauthn")},verifyStepUpWithPasskeyPrf:async e=>{const r=await z(t("/step-up/webauthn/start",{...V(e)}),"Failed to start step-up authentication.");if(r.error)return r;let o,n;try{const e=await i({optionsJSON:G(r.data)});o=W(e),n=D(e)}catch(e){return K("Step-up authentication error.","Step-up authentication failed.",e)}if(!o)return L("Passkey did not return PRF output.");const a=await z(t("/step-up/webauthn/finish",{method:"POST",body:JSON.stringify({assertionResponse:n})}),"Failed to verify step-up authentication.");if(a.error)return a;const s=$(a.data??{},"webauthn");return s.error?s:U({...s.data,credentialId:o.credentialId,prf:o})},getTotpStatus:()=>z(t("/totp/status",{method:"GET"}),"Failed to load authenticator status."),startTotpEnrollment:()=>z(t("/totp/enroll/start",{method:"POST"}),"Failed to start authenticator enrollment."),verifyTotpEnrollment:e=>z(t("/totp/enroll/verify",{method:"POST",body:JSON.stringify({code:e})}),"Failed to verify the authenticator code."),disableTotp:e=>z(t("/totp/disable",{method:"POST",body:JSON.stringify({code:e})}),"Failed to disable the authenticator."),verifyStepUpWithTotp:async e=>{const r=await z(t("/totp/verify-mfa",{method:"POST",body:JSON.stringify({code:e})}),"Failed to verify step-up authentication.");return r.error?r:$(r.data??{},"totp")},updateCredential:e=>z(t("users/credentials",{method:"POST",body:JSON.stringify(e)}),"Failed to update credential."),deleteCredential:e=>z(t("users/credentials",{method:"DELETE",body:JSON.stringify({id:e})}),"Failed to delete credential."),listOrganizations:()=>z(t("/organizations",{method:"GET"}),"Failed to list organizations."),createOrganization:e=>z(t("/organizations",{method:"POST",body:JSON.stringify(e)}),"Failed to create organization."),getOrganization:e=>z(t(`/organizations/${encodeURIComponent(e)}`,{method:"GET"}),"Failed to load organization."),updateOrganization:(e,r)=>z(t(`/organizations/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(r)}),"Failed to update organization."),switchOrganization:e=>z(t(`/organizations/${encodeURIComponent(e)}/switch`,{method:"POST"}),"Failed to switch organization."),listOrganizationMembers:e=>z(t(`/organizations/${encodeURIComponent(e)}/members`,{method:"GET"}),"Failed to list organization members."),addOrganizationMember:(e,r)=>z(t(`/organizations/${encodeURIComponent(e)}/members`,{method:"POST",body:JSON.stringify(r)}),"Failed to add organization member."),updateOrganizationMember:(e,r,o)=>z(t(`/organizations/${encodeURIComponent(e)}/members/${encodeURIComponent(r)}`,{method:"PATCH",body:JSON.stringify(o)}),"Failed to update organization member."),removeOrganizationMember:(e,r)=>z(t(`/organizations/${encodeURIComponent(e)}/members/${encodeURIComponent(r)}`,{method:"DELETE"}),"Failed to remove organization member.")}};function Y(e,t){const r=e.trim(),o=t.trim();if(!r||!o)return!1;if(r===o)return!0;if(r.endsWith(":*")){const e=r.slice(0,-2);return o===e||o.startsWith(`${e}:`)}if(!o.includes(":"))return!1;if(!r.includes(":"))return o.startsWith(`${r}:`);const n=r.split(":"),a=o.split(":"),i=n[n.length-1],s=a[a.length-1],l=n.slice(0,-1),c=a.slice(0,-1);return"write"===i&&"read"===s&&l.length===c.length&&l.every((e,t)=>e===c[t])}function Z(e,t){if(!Array.isArray(e))return!1;const r=e.filter(e=>"string"==typeof e);return(Array.isArray(t)?t:[t]).some(e=>r.some(t=>Y(t,e)))}function Q(){return"undefined"==typeof localStorage?function(){const e=new Map;return{get:t=>e.get(t)??null,set:(t,r)=>{e.set(t,r)}}}():{get:e=>{try{return localStorage.getItem(e)}catch{return null}},set:(e,t)=>{try{localStorage.setItem(e,t)}catch{}}}}const X="seamlessauth_seen",ee={user:null,credentials:[],organizations:[],activeOrganization:null,stepUpStatus:null,isAuthenticated:!1};const te=c(void 0),re=()=>{const e=_(te);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e},oe=({children:t,apiHost:r,autoDetectPreviousSignin:o=!0})=>{const n=d(()=>function(e){const{apiHost:t,detectPreviousSignIn:r=!0}=e,o=H({apiHost:t}),n=e.storage??Q(),a=new Set;let i=!1,s=0,l={...ee,loading:!0,hasSignedInBefore:r&&"true"===n.get(X)};function c(e){const t={...l,...e};Object.keys(e).some(e=>l[e]!==t[e])&&(l=t,a.forEach(e=>e()))}function d(){n.set(X,"true"),r&&c({hasSignedInBefore:!0})}function u(){c(ee)}async function m(){const e=++s;c({loading:!0});const t=await o.getCurrentUser();return i||e!==s?t:t.error?(u(),c({loading:!1}),t):(c({user:t.data.user,credentials:t.data.credentials??[],organizations:t.data.organizations??[],activeOrganization:t.data.activeOrganization??null,isAuthenticated:!0,loading:!1}),l.hasSignedInBefore||d(),t)}async function _(e){const t=await e();return t.error||await m(),t}return{getState:()=>l,subscribe:e=>(a.add(e),()=>{a.delete(e)}),actions:{login:(e,t)=>o.login({identifier:e,passkeyAvailable:t}),handlePasskeyLogin:()=>_(()=>o.loginWithPasskey()),refreshSession:m,logout:async function(){try{return await o.logout()}finally{u()}},logoutAllSessions:async function(){try{return await o.logoutAllSessions()}finally{u()}},deleteUser:async()=>{const e=await o.deleteUser();return e.error||u(),e},updateCredential:async e=>{const{data:t,error:r}=await o.updateCredential({friendlyName:e.friendlyName??null,id:e.id});if(r)return{data:null,error:r};const n=t.credential;return c({credentials:l.credentials.map(e=>e.id===n.id?{...e,...n}:e)}),{data:n,error:null}},deleteCredential:async e=>{const t=await o.deleteCredential(e);return t.error||c({credentials:l.credentials.filter(t=>t.id!==e)}),t},switchOrganization:e=>_(()=>o.switchOrganization(e)),listOAuthProviders:()=>o.listOAuthProviders(),startOAuthLogin:e=>o.startOAuthLogin(e),finishOAuthLogin:e=>_(()=>o.finishOAuthLogin(e)),refreshStepUpStatus:async()=>{const e=await o.getStepUpStatus();return c({stepUpStatus:e.error?null:e.data}),e},verifyStepUpWithPasskey:async()=>{const e=await o.verifyStepUpWithPasskey();return e.error||c({stepUpStatus:e.data}),e},verifyStepUpWithPasskeyPrf:async e=>{const t=await o.verifyStepUpWithPasskeyPrf(e);return t.error||c({stepUpStatus:{fresh:t.data.fresh,method:t.data.method,verifiedAt:t.data.verifiedAt,expiresAt:t.data.expiresAt,maxAgeSeconds:t.data.maxAgeSeconds}}),t},verifyStepUpWithTotp:async e=>{const t=await o.verifyStepUpWithTotp(e);return t.error||c({stepUpStatus:t.data}),t},hasRole:e=>l.user?.roles?.includes(e),hasScopedRole:e=>l.user?Z(l.user.roles,e):void 0,markSignedIn:d},destroy:()=>{i=!0,a.clear()}}}({apiHost:r,detectPreviousSignIn:o}),[r,o]),a=u(n.subscribe,n.getState,n.getState);m(()=>{n.actions.refreshSession()},[n]);const i=d(()=>({...a,...n.actions,apiHost:r}),[a,n,r]);return e(te.Provider,{value:i,children:t})},ne=()=>{const{apiHost:e}=re();return d(()=>H({apiHost:e}),[e])},ae=["passkey","magic_link"],ie=()=>{const e=ne(),[t,r]=g(null),[o,n]=g(!0);return m(()=>{let t=!0;return(async()=>{try{const{data:o,error:n}=await e.getPublicSystemConfig();t&&!n&&o?.loginMethods?.length&&r(o.loginMethods)}catch{}finally{t&&n(!1)}})(),()=>{t=!1}},[e]),{loginMethods:t,loading:o}},se=e=>Boolean(e?.some(e=>"passkey"!==e)),le=e=>{if("string"!=typeof e)return!1;const t=e.trim();if(t.length<3||t.length>320)return!1;const r=t.split("@");if(2!==r.length)return!1;const[o,n]=r;return!(!/^[A-Za-z0-9._%+-]+$/.test(o)||o.startsWith(".")||o.endsWith(".")||o.includes(".."))&&!(!/^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/.test(n)||n.startsWith("-")||n.endsWith("-")||n.startsWith(".")||n.endsWith(".")||n.includes(".."))},ce=e=>{const t=P(e);return t?.isValid()||!1};async function de(){return async function(){if("undefined"==typeof window)return!1;if(window.PublicKeyCredential&&"function"==typeof window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable)try{return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch{return console.error("Error checking passkey support."),!1}return!1}()}const ue=()=>{const[e,t]=g(!1),[r,o]=g(!0);return m(()=>{let e=!0;return(async()=>{try{const r=await de();e&&t(r)}catch{e&&t(!1)}finally{e&&o(!1)}})(),()=>{e=!1}},[]),{passkeySupported:e,loading:r}},me="/login",_e="/passkey-login",ge="/verify-phone-otp",fe="/verify-email-otp",pe="/verify-magiclink",he="/oauth/callback",ye="/register-passkey",be="/magic-link-sent";function ve(e,t){void 0===t&&(t={});var r=t.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===r&&o.firstChild?o.insertBefore(n,o.firstChild):o.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}var ke="login-module__container___YggDx",we="login-module__card___Ub-Py",xe="login-module__heading___neEqb",Pe="login-module__inputGroup___P6qgS",Se="login-module__label___mx5vu",Oe="login-module__input___U07lW",Ne="login-module__helperText___kDQ4-",Te="login-module__error___40zxh",Ce="login-module__button___0kFBs",Ie="login-module__toggle___1JiG1",Ae="login-module__fallbackCard___HdIk-",Me="login-module__fallbackHeader___-il2v",Ee="login-module__fallbackDescription___ea5EB",Fe="login-module__fallbackActions___AD3ni",ze="login-module__fallbackActionButton___lFgWf",Ue="login-module__actionTitle___ycrMp",Le="login-module__actionSubtext___opaIV",qe="login-module__linkButton___5lsoe";ve(".login-module__container___YggDx{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center}.login-module__card___Ub-Py{background-color:var(--seamless-surface,#1f2937);border-radius:.5rem;box-shadow:0 4px 6px var(--seamless-shadow,rgba(0,0,0,.1));max-width:28rem;padding:2rem;width:100%}.login-module__heading___neEqb{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:700;margin-bottom:1.5rem;text-align:center}.login-module__message___qSejT{color:var(--seamless-success,#68d391);text-align:center}.login-module__inputGroup___P6qgS{margin-bottom:1rem}.login-module__label___mx5vu{color:var(--seamless-text-muted,#d1d5db);display:block}.login-module__input___U07lW{background-color:var(--seamless-surface-raised,#4b5563);border:1px solid var(--seamless-border,#d1d5db);border-radius:.375rem;margin-top:.25rem;padding:.5rem;width:100%}.login-module__input___U07lW:focus{box-shadow:0 0 0 2px var(--seamless-accent,#3b82f6);outline:none}.login-module__helperText___kDQ4-{color:var(--seamless-text-muted,#9ca3af);font-size:.75rem;margin-top:.5rem}.login-module__error___40zxh{color:var(--seamless-danger,#f87171);font-size:.875rem}.login-module__button___0kFBs{background-color:var(--seamless-accent,#2563eb);border-radius:.375rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;margin-top:1rem;padding:.5rem;transition:background-color .3s;width:100%}.login-module__button___0kFBs:hover{background-color:var(--seamless-accent-hover,#1d4ed8)}.login-module__button___0kFBs:disabled{background-color:var(--seamless-disabled,#9ca3af);cursor:not-allowed}.login-module__toggle___1JiG1{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.875rem;margin-top:1.5rem;text-align:center;width:100%}.login-module__underline___gs-RS{text-decoration:underline}.login-module__phoneRow___oeNtq{display:grid;gap:.5rem;grid-template-columns:1fr 3fr;margin-top:.25rem}.login-module__phoneInput___2MPQC,.login-module__select___rRV1O{background-color:var(--seamless-surface-raised,#4b5563);border:1px solid var(--seamless-border,#d1d5db);border-radius:.375rem;padding:.5rem;width:100%}@media (max-width:500px){.login-module__phoneRow___oeNtq{grid-template-columns:1fr}}.login-module__fallbackCard___HdIk-{background:var(--seamless-surface-raised,hsla(0,0%,100%,.04));border:1px solid var(--seamless-border,hsla(0,0%,100%,.08));border-radius:12px;display:flex;flex-direction:column;gap:14px;margin-top:18px;padding:18px}.login-module__fallbackHeader___-il2v{color:var(--seamless-text,#f3f4f6);font-size:.95rem;font-weight:600}.login-module__fallbackDescription___ea5EB{color:var(--seamless-text-muted,#9ca3af);font-size:.85rem;line-height:1.4}.login-module__fallbackActions___AD3ni{display:flex;flex-direction:column;gap:10px}.login-module__fallbackActionButton___lFgWf{background:var(--seamless-surface,rgba(0,0,0,.25));border:1px solid var(--seamless-border,hsla(0,0%,100%,.08));border-radius:8px;cursor:pointer;display:flex;flex-direction:column;padding:12px 14px;text-align:left;transition:all .15s ease}.login-module__fallbackActionButton___lFgWf:hover{background:var(--seamless-surface-hover,hsla(0,0%,100%,.06));border-color:var(--seamless-border,hsla(0,0%,100%,.15))}.login-module__actionTitle___ycrMp{color:var(--seamless-text,#f9fafb);font-size:.9rem;font-weight:500}.login-module__actionSubtext___opaIV{color:var(--seamless-text-muted,#9ca3af);font-size:.75rem;margin-top:2px}.login-module__linkButton___5lsoe{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.8rem;margin-top:6px}.login-module__linkButton___5lsoe:hover{text-decoration:underline}");const Be=({identifier:r,onMagicLink:o,onEmailOtp:n,onPhoneOtp:a,onPasskeyRetry:i,loginMethods:s})=>{const l=new Set(s??["passkey","magic_link","phone_otp"]),c=l.has("magic_link")&&le(r),d=l.has("email_otp")&&Boolean(n)&&le(r),u=l.has("phone_otp")&&ce(r),m=l.has("passkey")&&Boolean(i);return c||d||u||m?t("div",{className:Ae,children:[e("div",{className:Me,children:"Choose a sign-in method"}),e("p",{className:Ee,children:"Choose another secure sign-in method."}),t("div",{className:Fe,children:[c&&t("button",{type:"button",className:ze,onClick:o,children:[e("span",{className:Ue,children:"Email Magic Link"}),e("span",{className:Le,children:"Send a secure sign-in link to your email"})]}),d&&t("button",{type:"button",className:ze,onClick:n,children:[e("span",{className:Ue,children:"Email Code"}),e("span",{className:Le,children:"Receive a one-time code by email"})]}),u&&t("button",{type:"button",className:ze,onClick:a,children:[e("span",{className:Ue,children:"Text Message Code"}),e("span",{className:Le,children:"Receive a one-time code via SMS"})]})]}),m&&e("button",{type:"button",className:qe,onClick:i,children:"Try passkey anyway"})]}):null},Re="seamless:oauth:provider",je=()=>{const{listOAuthProviders:r,startOAuthLogin:o}=re(),n=h("/oauth/callback"),[a,i]=g([]),[s,l]=g("");if(m(()=>{let e=!0;return r().then(({data:t})=>{e&&i(t?.providers??[])}),()=>{e=!1}},[r]),0===a.length)return null;return t("div",{className:Fe,children:[a.map(r=>e("button",{type:"button",className:ze,onClick:()=>(async e=>{l(""),sessionStorage.setItem(Re,e);const{data:t,error:r}=await o({providerId:e,redirectUri:new URL(n,window.location.origin).toString()});r?l("Could not start sign-in with this provider."):window.location.assign(t.authorizationUrl)})(r.id),children:t("span",{className:Ue,children:["Continue with ",r.name]})},r.id)),s&&e("p",{className:Te,children:s})]})},Je=()=>{const o=y(),{hasSignedInBefore:n,login:a,handlePasskeyLogin:i}=re(),s=ne(),{passkeySupported:l}=ue(),{loginMethods:c}=ie(),[d,u]=g(""),[_,f]=g(""),[p,h]=g("register"),[b,v]=g(""),[k,w]=g(""),[x,P]=g(""),[S,O]=g(!1),[N,T]=g(null);m(()=>{n&&h("login")},[n]);return e("div",{className:ke,children:t("div",{className:we,children:[e("h2",{className:xe,children:"login"===p?"Sign In":"Create Account"}),t(r,{children:[t("form",{onSubmit:async e=>{e.preventDefault(),v(""),O(!1);try{if("login"===p){const{data:e,error:t}=await a(d,l);if(t)return void v("Failed to start sign-in. Please try again.");const r=e?.loginMethods?.length?e.loginMethods:c??ae;if(T(r),l&&r.includes("passkey")){const{error:e}=await i();return e?(O(!0),void v("Passkey sign-in could not be completed. Choose another sign-in method.")):void o("/")}return void O(!0)}"register"===p&&await(async()=>{v("");const{data:e,error:t}=await s.register({email:_});t?v("Failed to register. Please try again."):"Success"===e.message?o(fe):v("An unexpected error occurred. Try again. If the problem persists, contact support.")})()}catch{console.error("Failed to continue sign-in."),v("Failed to continue sign-in. Please try again.")}},children:["login"===p&&t("div",{className:Pe,children:[e("label",{htmlFor:"identifier",className:Se,children:"Email Address / Phone Number"}),e("input",{id:"identifier",type:"text",value:d,onChange:e=>{const t=e.target.value;u(t)},autoComplete:"off",placeholder:"Email or Phone Number",className:Oe,onBlur:()=>{if(d){const e=le(d)||ce(d);P(e?"":"Please enter a valid email or phone number")}},required:!0}),e("p",{className:Ne,children:"Phone numbers must include a country code e.g. +1"}),S&&e(Be,{identifier:d,onMagicLink:async()=>{const{error:e}=await s.requestMagicLink();e?v("Failed to send magic link."):o(be,{state:{identifier:d}})},onEmailOtp:async()=>{const{error:e}=await s.requestLoginEmailOtp();e?v("Failed to send email code."):o(fe,{state:{flow:"login"}})},onPhoneOtp:async()=>{const{error:e}=await s.requestLoginPhoneOtp();e?v("Failed to send OTP."):o(ge,{state:{flow:"login"}})},onPasskeyRetry:l?i:void 0,loginMethods:N}),x&&e("p",{className:Te,children:x})]}),"register"===p&&t("div",{className:Pe,children:[e("label",{htmlFor:"email",className:Se,children:"Email Address"}),e("input",{id:"email",type:"email",value:_,onChange:e=>{const t=e.target.value;f(t)},autoComplete:"off",className:Oe,onBlur:()=>{if(_){const e=le(_);w(e?"":"Please enter a valid email")}},required:!0}),k&&e("p",{className:Te,children:k})]}),e("button",{type:"submit",className:Ce,disabled:!("login"===p&&d?le(d)||ce(d):le(_)),children:"login"===p?"Login":"Register"}),b&&e("p",{className:Te,children:b}),e("button",{type:"button",onClick:()=>h("login"===p?"register":"login"),className:Ie,children:"login"===p?"Don't have an account? Create one":"Already have an account? Sign in"})]}),e(je,{})]})]})})};var Ge={container:"passKeyLogin-module__container___IUKxF",card:"passKeyLogin-module__card___2sKM1",title:"passKeyLogin-module__title___HZxvc",button:"passKeyLogin-module__button___FvR4I"};ve(".passKeyLogin-module__container___IUKxF{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.passKeyLogin-module__card___2sKM1{background-color:var(--seamless-surface,#1f2937);border-radius:1rem;box-shadow:0 4px 20px var(--seamless-shadow,rgba(0,0,0,.4));display:flex;flex-direction:column;gap:1.5rem;max-width:400px;padding:2rem;width:100%}.passKeyLogin-module__title___HZxvc{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:600;text-align:center}.passKeyLogin-module__button___FvR4I{background-color:var(--seamless-accent,#2563eb);border:1px solid var(--seamless-accent,#3b82f6);border-radius:.5rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;font-weight:500;padding:.75rem 1rem;text-align:center;transition:background-color .2s ease;width:100%}.passKeyLogin-module__button___FvR4I:hover{background-color:var(--seamless-accent-hover,#1d4ed8)}@media (max-width:480px){.passKeyLogin-module__card___2sKM1{padding:1.25rem}.passKeyLogin-module__button___FvR4I{font-size:1rem}}");const We=()=>{const r=y(),{handlePasskeyLogin:o}=re(),[n,a]=g("");return e("div",{className:Ge.container,children:t("div",{className:Ge.card,children:[e("h2",{className:Ge.title,children:"Login with Passkey"}),e("button",{onClick:async()=>{a("");const{error:e}=await o();e?a("Passkey sign-in could not be completed. Try another sign-in method."):r("/")},className:Ge.button,children:"Use Passkey"}),n&&e("p",{className:Ge.error,children:n})]})})};var De="registerPasskey-module__container___jqEh8",$e="registerPasskey-module__card___MJAyC",Ve="registerPasskey-module__loading___Q4i1x",Ke="registerPasskey-module__spinner___V1nhd",He="registerPasskey-module__supported___ihTih",Ye="registerPasskey-module__title___vn2Qu",Ze="registerPasskey-module__description___AWmO-",Qe="registerPasskey-module__button___D3b4B",Xe="registerPasskey-module__message___RiOw-",et="registerPasskey-module__success___HP5aX",tt="registerPasskey-module__error___hGiqE",rt="registerPasskey-module__skip___1hDyU",ot="registerPasskey-module__secondary___bnOB4";ve(".registerPasskey-module__container___jqEh8{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.registerPasskey-module__card___MJAyC{background-color:var(--seamless-surface,#1f2937);border-radius:1rem;box-shadow:0 4px 20px var(--seamless-shadow,rgba(0,0,0,.4));max-width:400px;padding:1.5rem;width:100%}.registerPasskey-module__loading___Q4i1x{align-items:center;background-color:var(--seamless-surface,#f9fafb);border-radius:.75rem;box-shadow:0 2px 8px var(--seamless-shadow,rgba(0,0,0,.1));color:var(--seamless-text,#374151);display:flex;font-weight:500;gap:.75rem;justify-content:center;padding:1.5rem}.registerPasskey-module__spinner___V1nhd{animation:registerPasskey-module__spin___oYcsC 1s linear infinite;border-bottom:2px solid var(--seamless-accent,#3b82f6);border-left:2px solid transparent;border-radius:9999px;border-right:2px solid transparent;border-top:2px solid var(--seamless-accent,#3b82f6);height:1.5rem;width:1.5rem}@keyframes registerPasskey-module__spin___oYcsC{to{transform:rotate(1turn)}}.registerPasskey-module__supported___ihTih{background-color:var(--seamless-surface,#ecfdf5);border-radius:.75rem;box-shadow:0 2px 12px var(--seamless-shadow,rgba(0,0,0,.1));color:var(--seamless-text,#065f46);padding:1.25rem}.registerPasskey-module__title___vn2Qu{font-size:1.125rem;font-weight:600;margin-bottom:.5rem}.registerPasskey-module__description___AWmO-{margin-bottom:1rem}.registerPasskey-module__button___D3b4B{background-color:var(--seamless-accent,#059669);border:none;border-radius:.5rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;font-weight:500;padding:.75rem 1rem;transition:background-color .2s ease;width:100%}.registerPasskey-module__button___D3b4B:hover{background-color:var(--seamless-accent-hover,#047857)}.registerPasskey-module__message___RiOw-{font-size:.875rem;margin-top:1rem}.registerPasskey-module__success___HP5aX{color:var(--seamless-success,#6ee7b7)}.registerPasskey-module__error___hGiqE{color:var(--seamless-danger,#f87171)}.registerPasskey-module__skip___1hDyU{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.875rem;margin-top:1.5rem;text-align:center;width:100%}.registerPasskey-module__skip___1hDyU:disabled{cursor:default;opacity:.6}.registerPasskey-module__secondary___bnOB4{background:none;border:1px solid var(--seamless-accent,#059669);border-radius:.5rem;color:var(--seamless-accent,#059669);cursor:pointer;font-weight:500;margin-top:.75rem;padding:.75rem 1rem;transition:background-color .2s ease;width:100%}.registerPasskey-module__secondary___bnOB4:hover:not(:disabled){background-color:var(--seamless-accent-muted,rgba(5,150,105,.1))}.registerPasskey-module__secondary___bnOB4:disabled{cursor:default;opacity:.6}");const nt={attachment_not_allowed:"This application does not accept that kind of authenticator. Try the other option.",synced_passkey_not_allowed:"This passkey syncs to a password manager, and this application requires one that stays on a single device, such as a security key.",authenticator_not_allowed:"This application does not accept this authenticator.",prf_required:"This authenticator does not support a feature this application requires."};const at=()=>{const{refreshSession:r}=re(),o=ne(),{passkeySupported:n,loading:a}=ue(),{loginMethods:i,loading:s}=ie(),l=y(),[c,d]=g("idle"),[u,m]=g(""),_=se(i),f=async()=>{await r(),l("/")},p=async e=>{const{platform:t,browser:n,deviceInfo:a}=function(){const e=navigator.userAgent.toLowerCase();let t="unknown",r="unknown";return/iphone|ipad|ipod/.test(e)?t="ios":/android/.test(e)?t="android":/mac os/.test(e)?t="mac":/windows/.test(e)?t="windows":/linux/.test(e)&&(t="linux"),navigator.brave?r="brave":/edg\/|edgios/.test(e)?r="edge":/opr\/|opt\/|opera/.test(e)?r="opera":/vivaldi/.test(e)?r="vivaldi":/samsungbrowser/.test(e)?r="samsung":/firefox|fxios/.test(e)?r="firefox":/chrome|crios/.test(e)?r="chrome":/safari/.test(e)&&(r="safari"),{platform:t,browser:r,deviceInfo:`${t} • ${r}`}}(),i={friendlyName:a,platform:t,browser:n,deviceInfo:a};d("loading");try{const{error:t}=await o.registerPasskey({metadata:i,attachment:e});if(t)throw t;await r(),d("success"),m("Passkey registered successfully."),l("/")}catch(e){console.error("Passkey registration failed."),d("error"),m(function(e){const t=A(e);return t?nt[t]:void 0}(e)??"Error registering passkey.")}};return e("div",{className:De,children:e("div",{className:$e,children:t("div",a||s?{className:Ve,children:[e("div",{className:Ke}),e("span",{children:"Checking for Passkey Support..."})]}:n?{className:He,children:[e("h2",{className:Ye,children:"Secure Your Account with a Passkey"}),e("p",{className:Ze,children:"Your device supports passkeys! Register one to skip passwords forever."}),e("button",{onClick:()=>p(),disabled:"loading"===c,className:Qe,children:"loading"===c?"Registering...":"Register Passkey"}),e("button",{type:"button",onClick:()=>p("cross-platform"),disabled:"loading"===c,className:ot,children:"Use a security key instead"}),u&&e("p",{className:`${Xe} ${"success"===c?et:tt}`,children:u}),_&&e("button",{type:"button",onClick:f,disabled:"loading"===c,className:rt,children:"Skip for now"})]}:{className:He,children:[e("h2",{className:Ye,children:"Passkeys are not available here"}),e("p",{className:Ze,children:_?"This device does not support passkeys. You can continue without one and add a passkey later from a device that does.":"This device does not support passkeys, and this application requires one to sign in. Try again from a device or browser that supports them."}),_&&e("button",{type:"button",onClick:f,className:Qe,children:"Continue"})]})})})};var it="verifyOTP-module__container___wgoDE",st="verifyOTP-module__card___3cs2p",lt="verifyOTP-module__title___fZ-1d",ct="verifyOTP-module__subtitle___dGSu3",dt="verifyOTP-module__error___GEtlG",ut="verifyOTP-module__success___46TjG",mt="verifyOTP-module__form___jiGG-",_t="verifyOTP-module__label___Zq5Mi",gt="verifyOTP-module__timer___smq-a",ft="verifyOTP-module__resend___PlmkG",pt="verifyOTP-module__button___8pIuO",ht="verifyOTP-module__toggle___wbzVa";ve(".verifyOTP-module__container___wgoDE{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.verifyOTP-module__card___3cs2p{background-color:var(--seamless-surface,#1f2937);border-radius:.5rem;box-shadow:0 0 10px var(--seamless-shadow,rgba(0,0,0,.3));max-width:28rem;padding:1.5rem;width:100%}.verifyOTP-module__title___fZ-1d{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:700;margin-bottom:1rem;text-align:center}.verifyOTP-module__subtitle___dGSu3{color:var(--seamless-text-muted,#9ca3af);font-size:.875rem;margin-bottom:1.5rem;text-align:center}.verifyOTP-module__error___GEtlG{color:var(--seamless-danger,#f87171);margin-bottom:1rem;text-align:center}.verifyOTP-module__success___46TjG{color:var(--seamless-success,#34d399);margin-bottom:.75rem;text-align:center}.verifyOTP-module__form___jiGG-{display:flex;flex-direction:column;gap:1rem}.verifyOTP-module__label___Zq5Mi{color:var(--seamless-text-muted,#d1d5db);display:block;font-size:.875rem;margin-bottom:.25rem}.verifyOTP-module__timer___smq-a{color:var(--seamless-warning,#facc15);font-size:.875rem}.verifyOTP-module__input___yqIXM{background-color:var(--seamless-surface-raised,#374151);border:1px solid var(--seamless-border,#4b5563);border-radius:.375rem;color:var(--seamless-text,#fff);outline:none;padding:.5rem;width:100%}.verifyOTP-module__input___yqIXM:focus{box-shadow:0 0 0 2px var(--seamless-accent,#3b82f6)}.verifyOTP-module__resend___PlmkG{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.75rem;margin-top:.25rem;text-decoration:underline}.verifyOTP-module__resend___PlmkG:hover{color:var(--seamless-accent,#3b82f6)}.verifyOTP-module__button___8pIuO{background-color:var(--seamless-accent,#2563eb);border:none;border-radius:.375rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;padding:.5rem;transition:background-color .2s;width:100%}.verifyOTP-module__button___8pIuO:hover{background-color:var(--seamless-accent-hover,#1d4ed8)}.verifyOTP-module__toggle___wbzVa{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.875rem;margin-top:1.5rem;text-align:center;width:100%}");var yt="otpInput-module__otpContainer___MUjby",bt="otpInput-module__otpInput___3YMVm";ve(".otpInput-module__otpContainer___MUjby{display:flex;gap:8px;justify-content:center;margin-top:8px}.otpInput-module__otpInput___3YMVm{background:var(--seamless-surface-raised,#374151);border:1px solid var(--seamless-border,#4b5563);border-radius:8px;color:var(--seamless-text,#fff);font-size:1.2rem;height:48px;text-align:center;transition:border-color .15s ease,box-shadow .15s ease;width:42px}.otpInput-module__otpInput___3YMVm:focus{border-color:var(--seamless-accent,#60a5fa);box-shadow:0 0 0 2px var(--seamless-accent,rgba(96,165,250,.25));outline:none}");const vt=({length:t=6,value:r,inputMode:o="numeric",onChange:n,name:a="otp"})=>{const i=f([]),s=r.split("").concat(Array(t).fill("")).slice(0,t),l=(e,t)=>{var r;if(t.length>1)c(e,t);else if(!t||(r=t,"numeric"===o?/^\d$/.test(r):/^[a-zA-Z]$/.test(r))){const r=[...s];r[e]=t;const o=r.join("");n(o),t&&i.current[e+1]&&i.current[e+1]?.focus()}},c=(e,r)=>{let a=r;a="numeric"===o?r.replace(/\D/g,""):r.replace(/[^a-zA-Z]/g,"");const l=a.slice(0,t).split(""),c=[...s];l.forEach((r,o)=>{e+o<t&&(c[e+o]=r)}),n(c.join("")),i.current[Math.min(e+l.length,t-1)]?.focus()};return e("div",{className:yt,role:"group","aria-label":"One-time password input",onPaste:e=>{e.preventDefault(),c(0,e.clipboardData.getData("text"))},children:s.map((r,c)=>e("input",{ref:e=>i.current[c]=e,type:"text",inputMode:"numeric"===o?"numeric":"text",autoComplete:"one-time-code",name:`${a}-${c}`,maxLength:1,value:r,className:bt,onChange:e=>l(c,e.target.value),onKeyDown:e=>((e,r)=>{if("Backspace"===r.key){r.preventDefault();const t=[...s];s[e]?(t[e]="",n(t.join(""))):e>0&&(t[e-1]="",n(t.join("")),i.current[e-1]?.focus())}"ArrowLeft"===r.key&&e>0&&i.current[e-1]?.focus(),"ArrowRight"===r.key&&e<t-1&&i.current[e+1]?.focus()})(c,e),"aria-label":`Digit ${c+1}`},c))})},kt=()=>{const r=y(),o=b(),{refreshSession:n}=re(),a="login"===o.state?.flow,[i,s]=g(""),[l,c]=g(null),[d,u]=g(""),[_,f]=g(!1),[p,h]=g(""),[v,k]=g(300),w=ne(),x=async()=>{if(f(!0),!l){const{error:e}=a?await w.verifyLoginPhoneOtp(i):await w.verifyPhoneOtp(i);if(e)u("Verification failed.");else{if(a)return await n(),void r("/");c(!0)}}f(!1)},P=async()=>{h(""),await(async()=>{u("");const{error:e}=a?await w.requestLoginPhoneOtp():await w.requestPhoneOtp();e?u("Failed to send SMS code. If this persists, refresh the page and try again."):h("Verification SMS has been resent.")})(),h("Verification SMS has been resent.")};return m(()=>{const e=setInterval(()=>{k(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),m(()=>{l&&!a&&(async()=>{const{error:e}=await w.requestEmailOtp();e?u("Failed to send Email code. If this persists, refresh the page and try registering again."):r(fe)})()},[l,a,r,w]),e("div",{className:it,children:t("div",{className:st,children:[e("h2",{className:lt,children:"Verify Your Phone Number"}),e("p",{className:ct,children:"Enter the code sent to your phone number."}),d&&e("p",{className:dt,children:d}),p&&e("p",{className:ut,children:p}),t("form",{onSubmit:async e=>{if(e.preventDefault(),u(""),6===i.length){f(!0);try{await x()}catch{u("Unexpected error occurred.")}finally{f(!1)}}else u("Please enter a valid code.")},className:mt,children:[t("div",{children:[t("label",{htmlFor:"phoneCode",className:_t,children:["Phone Verification Code ",(O=l,!0===O?e("span",{className:"text-green-400 ml-2",children:"✅"}):!1===O?e("span",{className:"text-red-400 ml-2",children:"❌"}):null)," -"," ",t("span",{className:gt,children:["Code expires in: ",(S=v,`${Math.floor(S/60).toString().padStart(2,"0")}:${(S%60).toString().padStart(2,"0")}`)]})]}),e(vt,{length:6,value:i,onChange:s}),e("button",{type:"button",onClick:()=>P(),className:ft,children:"Resend code to phone"})]}),e("button",{type:"submit",className:pt,children:_?"Verifying...":"Verify & Continue"}),e("button",{type:"button",onClick:()=>r("/login"),className:ht,children:"Back to login"})]})]})});var S,O},wt=()=>{const r=y(),o=b(),{refreshSession:n}=re(),a=ne(),{passkeySupported:i}=ue(),s="login"===o.state?.flow,[l,c]=g(!1),[d,u]=g(""),[_,f]=g(300),[p,h]=g(""),[v,k]=g("");return m(()=>{const e=setInterval(()=>{f(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),e("div",{className:it,children:t("div",{className:st,children:[e("h2",{className:lt,children:"Verify Your Email"}),e("p",{className:ct,children:"We sent you a verification email. Enter the code below."}),p&&e("p",{className:dt,children:p}),v&&e("p",{className:ut,children:v}),t("form",{onSubmit:async e=>{if(e.preventDefault(),h(""),6===d.length){c(!0);try{const{error:e}=s?await a.verifyLoginEmailOtp(d):await a.verifyEmailOtp(d);if(e)return void h("Verification failed.");if(s)return await n(),void r("/");i?r(ye):(await n(),r("/"))}catch{console.error("Email OTP verification failed."),h("Verification failed.")}finally{c(!1)}}else h("Please enter a valid code.")},className:mt,children:[t("div",{children:[t("label",{htmlFor:"emailCode",className:_t,children:["Email Verification Code",t("span",{className:gt,children:[" ","— Code expires in ",(w=_,`${Math.floor(w/60).toString().padStart(2,"0")}:${(w%60).toString().padStart(2,"0")}`)]})]}),e(vt,{length:6,value:d,onChange:u,inputMode:"text"}),e("button",{type:"button",onClick:async()=>{h(""),k("");const{error:e}=s?await a.requestLoginEmailOtp():await a.requestEmailOtp();e?h("Failed to send Email code. If this persists, refresh the page and try again."):k("Verification email has been resent.")},className:ft,children:"Resend code to email"})]}),e("button",{type:"submit",className:pt,disabled:l,children:l?"Verifying...":"Verify & Continue"}),e("button",{type:"button",onClick:()=>r("/login"),className:ht,children:"Back to login"})]})]})});var w};var xt={container:"verifyMagiclink-module__container___qrSXf",card:"verifyMagiclink-module__card___niKgr",title:"verifyMagiclink-module__title___SumxD",verificationContent:"verifyMagiclink-module__verificationContent___NdsS0",spinner:"verifyMagiclink-module__spinner___lnW1k",successIcon:"verifyMagiclink-module__successIcon___XjFEM",checkIcon:"verifyMagiclink-module__checkIcon___I0JOP",successText:"verifyMagiclink-module__successText___lO5Qq"};ve(".verifyMagiclink-module__container___qrSXf{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.verifyMagiclink-module__card___niKgr{background-color:var(--seamless-surface,#1f2937);border-radius:.5rem;box-shadow:0 0 10px var(--seamless-shadow,rgba(0,0,0,.3));max-width:28rem;padding:1.5rem;width:100%}.verifyMagiclink-module__title___SumxD{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:700;margin-bottom:1rem;text-align:center}.verifyMagiclink-module__verificationContent___NdsS0{align-items:center;display:flex;flex-direction:column;gap:14px;margin:20px 0}.verifyMagiclink-module__spinner___lnW1k{animation:verifyMagiclink-module__spin___2lGzj .9s linear infinite;border:3px solid var(--seamless-border,hsla(0,0%,100%,.15));border-radius:50%;border-top-color:var(--seamless-accent,#60a5fa);height:28px;width:28px}.verifyMagiclink-module__successIcon___XjFEM{align-items:center;background:rgba(16,185,129,.15);border-radius:50%;display:flex;height:36px;justify-content:center;width:36px}.verifyMagiclink-module__checkIcon___I0JOP{animation:verifyMagiclink-module__checkPop___-3qJu .25s ease-out;color:var(--seamless-success,#34d399);height:22px;width:22px}.verifyMagiclink-module__successText___lO5Qq{color:var(--seamless-success,#34d399);font-size:.9rem}@keyframes verifyMagiclink-module__checkPop___-3qJu{0%{opacity:0;transform:scale(.6)}80%{transform:scale(1.15)}to{opacity:1;transform:scale(1)}}@keyframes verifyMagiclink-module__spin___2lGzj{to{transform:rotate(1turn)}}");const Pt=()=>{const[r]=v(),o=y(),n=r.get("token"),[a,i]=g(""),[s,l]=g(""),c=ne(),{refreshSession:d}=re();return m(()=>{let e=!0,t=null,r=null;return(async()=>{if(!n)return e&&i("Missing token for verification."),void console.error("No magic-link token found.");const{error:a}=await c.verifyMagicLink(n);if(a)return console.error("Failed to verify token"),void(e&&i("Failed to verify token"));await d(),e&&(t=new BroadcastChannel("seamless-auth"),t.postMessage({type:"MAGIC_LINK_AUTH_SUCCESS"}),l("You have been verified on the device and browser that initiated this request"),r=setTimeout(()=>{e&&o("/")},900))})(),()=>{e=!1,t?.close(),r&&clearTimeout(r)}},[n,c,o,d]),e("div",{className:xt.container,children:t("div",{className:xt.card,children:[e("h1",{className:xt.title,children:"Verifying your login"}),t("div",{className:xt.verificationContent,children:[!s&&!a&&e("div",{className:xt.spinner}),s&&e("div",{className:xt.successIcon,children:e("svg",{viewBox:"0 0 24 24",className:xt.checkIcon,fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M5 13l4 4L19 7"})})}),!s&&!a&&e("p",{className:xt.helperText,children:"Please wait while we securely verify your sign-in link."}),s&&e("p",{className:xt.successText,children:"Login verified. Redirecting…"}),a&&e("p",{className:xt.error,children:a})]})]})})},St={oauth_missing_email:"Your provider account did not share an email address. Add an email to that account and make it visible, then try again.",oauth_email_not_verified:"The email address on your provider account is not verified. Verify it with your provider, then try again.",oauth_missing_subject:"Your provider did not return a usable account identifier. Try again, or sign in with a different method."},Ot=()=>{const{finishOAuthLogin:o}=re(),n=y(),[a]=v(),[i,s]=g(""),l=f(!1);return m(()=>{if(l.current)return;l.current=!0;const e=a.get("code"),t=a.get("state"),r=sessionStorage.getItem(Re);e&&t&&r?o({providerId:r,code:e,state:t}).then(({error:e})=>{if(e){const t=T(e);return void s(t?St[t]:"We could not complete sign-in. Please try again.")}sessionStorage.removeItem(Re),n("/")}):s("This sign-in link is missing required information.")},[o,n,a]),t("div",{className:xt.container,children:[e("h2",{className:xt.title,children:i?"Sign-in failed":"Completing sign-in..."}),i&&t(r,{children:[e("p",{children:i}),e("button",{type:"button",onClick:()=>n("/login"),children:"Back to login"})]})]})};var Nt="magiclink-module__container___45zcA",Tt="magiclink-module__card___Au9oN",Ct="magiclink-module__iconWrapper___k5ndr",It="magiclink-module__mailIcon___Pwb7q",At="magiclink-module__iconRing___bdLvf",Mt="magiclink-module__heading___b9cre",Et="magiclink-module__message___kiVFj",Ft="magiclink-module__identifier___JtcFM",zt="magiclink-module__helperText___7Mlfh",Ut="magiclink-module__actions___64I-3",Lt="magiclink-module__secondaryButton___BntAI",qt="magiclink-module__cooldown___Ib4rm",Bt="magiclink-module__linkButton___maJiv";ve(".magiclink-module__container___45zcA{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center}.magiclink-module__card___Au9oN{background-color:var(--seamless-surface,#1f2937);border-radius:.75rem;box-shadow:0 10px 25px var(--seamless-shadow,rgba(0,0,0,.25));max-width:420px;padding:2.5rem 2rem;text-align:center;width:100%}.magiclink-module__iconWrapper___k5ndr{display:flex;justify-content:center;margin-bottom:1.25rem;position:relative}.magiclink-module__mailIcon___Pwb7q{color:var(--seamless-accent-soft,#a5b4fc);height:38px;width:38px;z-index:2}.magiclink-module__iconRing___bdLvf{animation:magiclink-module__pulse___YGm-I 2s infinite;background:rgba(99,102,241,.15);border-radius:50%;height:72px;position:absolute;width:72px}@keyframes magiclink-module__pulse___YGm-I{0%{opacity:.8;transform:scale(.6)}70%{opacity:0;transform:scale(1.4)}to{opacity:0}}.magiclink-module__heading___b9cre{font-size:1.55rem;font-weight:600;margin-bottom:.75rem}.magiclink-module__message___kiVFj{color:var(--seamless-text-muted,#d1d5db);font-size:.95rem;line-height:1.4;margin-bottom:1rem}.magiclink-module__identifier___JtcFM{background:var(--seamless-surface-raised,hsla(0,0%,100%,.05));border-radius:6px;display:inline-block;font-size:1rem;font-weight:600;margin-bottom:1rem;padding:.45rem .6rem}.magiclink-module__helperText___7Mlfh{color:var(--seamless-text-muted,#9ca3af);font-size:.85rem;line-height:1.4;margin-bottom:.6rem}.magiclink-module__actions___64I-3{display:flex;flex-direction:column;gap:.6rem;margin-top:1.6rem}.magiclink-module__secondaryButton___BntAI{background:var(--seamless-surface,#111827);border:1px solid var(--seamless-border,#374151);border-radius:8px;color:var(--seamless-text,#fff);cursor:pointer;font-weight:500;padding:.65rem}.magiclink-module__secondaryButton___BntAI:hover:not(:disabled){background:var(--seamless-surface-hover,#1f2937)}.magiclink-module__secondaryButton___BntAI:disabled{cursor:not-allowed;opacity:.5}.magiclink-module__cooldown___Ib4rm{color:var(--seamless-text-muted,#9ca3af);font-size:.8rem}.magiclink-module__linkButton___maJiv{background:none;border:none;color:var(--seamless-accent-soft,#a5b4fc);cursor:pointer;font-size:.85rem;margin-top:.4rem}.magiclink-module__linkButton___maJiv:hover{text-decoration:underline}");const Rt=()=>{const{refreshSession:r}=re(),o=y(),n=b(),a=ne(),i=n.state?.identifier,[s,l]=g(30);m(()=>{const e=setInterval(()=>{l(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]);const c=p(async()=>{const{data:e,error:t}=await a.checkMagicLink();return!t&&"Success"===e?.message},[a]);return m(()=>{const e=new BroadcastChannel("seamless-auth");return e.onmessage=async e=>{"MAGIC_LINK_AUTH_SUCCESS"===e.data?.type&&await c()&&(await r(),o("/"))},()=>{e.close()}},[c,o,r]),m(()=>{const e=setInterval(async()=>{try{await c()&&(await r(),o("/"))}catch{}},5e3);return()=>clearInterval(e)},[c,r,o]),e("div",{className:Nt,children:t("div",{className:Tt,children:[t("div",{className:Ct,children:[e("div",{className:At}),t("svg",{className:It,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[e("path",{d:"M4 6h16v12H4z"}),e("path",{d:"m4 6 8 6 8-6"})]})]}),e("h2",{className:Mt,children:"Check your email"}),e("p",{className:Et,children:"If an account exists for this address, we sent a secure sign-in link."}),i&&e("div",{className:Ft,children:i}),e("p",{className:zt,children:"Open the email and click the link to finish signing in."}),e("p",{className:zt,children:"Didn’t receive anything? Check your spam folder or try creating a new account."}),t("div",{className:Ut,children:[e("button",{className:Lt,disabled:s>0,onClick:async()=>{s>0||(await a.requestMagicLink(),l(30))},children:"Resend link"}),s>0&&t("div",{className:qt,children:["Available in ",s,"s"]}),e("button",{className:Bt,onClick:()=>o("/login"),children:"Change email or phone"})]})]})})},jt=()=>t(k,{children:[e(w,{path:me,element:e(Je,{})}),e(w,{path:_e,element:e(We,{})}),e(w,{path:ge,element:e(kt,{})}),e(w,{path:fe,element:e(wt,{})}),e(w,{path:pe,element:e(Pt,{})}),e(w,{path:he,element:e(Ot,{})}),e(w,{path:ye,element:e(at,{})}),e(w,{path:be,element:e(Rt,{})}),e(w,{path:"*",element:e(x,{to:me,replace:!0})})]});export{oe as AuthProvider,jt as AuthRoutes,S as SeamlessAuthError,H as createSeamlessAuthClient,B as encodePrfSalt,W as extractPasskeyPrfResult,T as getOAuthErrorCode,A as getPasskeyPolicyErrorCode,M as getWebAuthnErrorDetail,se as hasNonPasskeyLoginMethod,Z as hasScopedRole,J as isPasskeyPrfSupported,Y as roleGrantsAccess,re as useAuth,ne as useAuthClient,ie as useLoginMethods,ue as usePasskeySupport};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/client/errors.ts","../src/client/result.ts","../src/client/webauthnPrf.ts","../src/client/webauthnSupport.ts","../src/client/createSeamlessAuthClient.ts","../src/fetchWithAuth.ts","../src/scopedRoles.ts","../src/session/storage.ts","../src/session/createAuthSession.ts","../src/AuthProvider.tsx","../src/hooks/useAuthClient.ts","../src/hooks/useLoginMethods.ts","../src/utils.ts","../src/hooks/usePasskeySupport.ts","../src/routes.ts","../node_modules/style-inject/dist/style-inject.es.js","../src/components/AuthFallbackOptions.tsx","../src/components/OAuthProviderButtons.tsx","../src/views/Login.tsx","../src/views/PassKeyLogin.tsx","../src/components/DeviceNameModal.tsx","../src/views/PassKeyRegistration.tsx","../src/components/OtpInput.tsx","../src/views/PhoneRegistration.tsx","../src/views/EmailRegistration.tsx","../src/views/VerifyMagicLink.tsx","../src/views/OAuthCallback.tsx","../src/components/MagicLinkSent.tsx","../src/AuthRoutes.tsx"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n",null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["SeamlessAuthError","Error","constructor","message","status","body","cause","super","this","name","OAUTH_ERROR_CODES","oauth_missing_email","oauth_email_not_verified","oauth_missing_subject","readCode","code","getOAuthErrorCode","error","details","Object","prototype","hasOwnProperty","call","undefined","getWebAuthnErrorDetail","value","async","toSeamlessAuthError","response","fallbackMessage","json","extractMessage","readBody","requestResult","request","data","ok","resultOf","resultError","toArrayBuffer","ArrayBuffer","source","Uint8Array","buffer","byteOffset","byteLength","copy","set","encodePrfSalt","salt","bufferToBase64URLString","saltToBufferSource","base64URLStringToBuffer","createPrfRequestBody","input","credentialId","prf","secondSalt","isPasskeyPrfSupported","browserSupportsWebAuthn","window","isSecureContext","globalThis","PublicKeyCredential","navigator","credentials","get","preparePrfRequestOptions","optionsJSON","options","prfEval","extensions","eval","first","second","extractPasskeyPrfResult","credential","extensionResults","clientExtensionResults","results","output","id","outputBase64url","stripPrfResultsFromAssertion","toStepUpStatus","payload","expectedMethod","method","fresh","verifiedAt","expiresAt","maxAgeSeconds","buildAssertionStartInit","JSON","stringify","webAuthnFailure","logContext","thrown","failure","detail","console","createSeamlessAuthClient","opts","fetchWithAuth","authHost","init","url","replace","startsWith","hasBody","requestInit","headers","fetch","createFetchWithAuth","apiHost","getCurrentUser","login","loginWithPasskey","optionsInput","started","assertionResponse","startAuthentication","verified","logout","scope","logoutAllSessions","deleteUser","register","email","phone","requestPhoneOtp","verifyPhoneOtp","verificationToken","requestLoginPhoneOtp","verifyLoginPhoneOtp","requestEmailOtp","verifyEmailOtp","requestLoginEmailOtp","verifyLoginEmailOtp","requestMagicLink","checkMagicLink","verifyMagicLink","token","encodeURIComponent","listOAuthProviders","getPublicSystemConfig","startOAuthLogin","providerId","redirectUri","returnTo","finishOAuthLogin","state","registerPasskey","registerInput","metadata","normalizeRegisterPasskeyInput","challenge","query","URLSearchParams","requirePrf","requestPrf","queryString","toString","buildRegisterStartPath","attestationResponse","startRegistration","WebAuthnError","prfCapable","enabled","getRegistrationPrfCapable","getStepUpStatus","verifyStepUpWithPasskey","verifyStepUpWithPasskeyPrf","getTotpStatus","startTotpEnrollment","verifyTotpEnrollment","disableTotp","verifyStepUpWithTotp","updateCredential","deleteCredential","listOrganizations","createOrganization","getOrganization","organizationId","updateOrganization","switchOrganization","listOrganizationMembers","addOrganizationMember","updateOrganizationMember","userId","removeOrganizationMember","roleGrantsAccess","grantedRole","requiredRole","granted","trim","required","endsWith","prefix","slice","includes","grantedParts","split","requiredParts","grantedAction","length","requiredAction","grantedPrefix","requiredPrefix","every","part","index","hasScopedRole","grantedRoles","requiredRoles","Array","isArray","filter","role","some","createDefaultStorage","localStorage","values","Map","key","createMemoryStorage","getItem","setItem","PREVIOUS_SIGN_IN_KEY","SIGNED_OUT","user","organizations","activeOrganization","stepUpStatus","isAuthenticated","AuthContext","createContext","useAuth","context","useContext","AuthProvider","children","autoDetectPreviousSignin","session","useMemo","detectPreviousSignIn","client","storage","listeners","Set","destroyed","refreshGeneration","loading","hasSignedInBefore","setState","patch","next","keys","forEach","listener","markSignedIn","clearSession","refreshSession","generation","result","refreshAfter","run","getState","subscribe","add","delete","actions","identifier","passkeyAvailable","handlePasskeyLogin","friendlyName","updated","map","current","refreshStepUpStatus","hasRole","roles","rolesGrantScopedAccess","destroy","clear","createAuthSession","useSyncExternalStore","useEffect","_jsx","Provider","useAuthClient","FALLBACK_LOGIN_METHODS","useLoginMethods","authClient","loginMethods","setLoginMethods","useState","setLoading","active","read","hasNonPasskeyLoginMethod","Boolean","isValidEmail","normalized","parts","localPart","domainPart","test","isValidPhoneNumber","phoneNumber","parsePhoneNumberFromString","isValid","isPasskeySupported","isUserVerifyingPlatformAuthenticatorAvailable","isPlatformAuthenticatorAvailable","usePasskeySupport","passkeySupported","setPasskeySupported","supported","checkSupport","authRoutePaths","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","AuthFallbackOptions","onMagicLink","onEmailOtp","onPhoneOtp","onPasskeyRetry","allowedMethods","showMagicLink","has","showEmailOtp","showPhoneOtp","showPasskeyRetry","_jsxs","className","styles","onClick","OAUTH_PROVIDER_STORAGE_KEY","OAuthProviderButtons","callbackHref","useHref","providers","setProviders","setError","then","provider","sessionStorage","URL","location","origin","assign","authorizationUrl","handleSelect","Login","navigate","useNavigate","configuredMethods","setIdentifier","setEmail","mode","setMode","formErrors","setFormErrors","emailError","setEmailError","identifierError","setIdentifierError","showFallbackOptions","setShowFallbackOptions","_Fragment","onSubmit","e","preventDefault","loginStart","availableMethods","passkeyError","htmlFor","onChange","target","autoComplete","placeholder","onBlur","flow","disabled","PassKeyLogin","runPasskeyLogin","container","card","title","button","DeviceNameModal","isOpen","onCancel","onConfirm","setValue","autoFocus","PasskeyRegistration","passkeySupportLoading","loginMethodsLoading","setStatus","setMessage","showDeviceModal","setShowDeviceModal","pendingMetadata","setPendingMetadata","canSkip","finishWithoutPasskey","platform","browser","deviceInfo","ua","userAgent","toLowerCase","brave","parseUserAgent","OtpInput","inputMode","inputs","useRef","concat","fill","handleChange","char","handleBulkInput","newValueArr","newValue","join","focus","cleaned","chars","i","Math","min","onPaste","clipboardData","getData","el","maxLength","onKeyDown","handleKeyDown","PhoneRegistration","useLocation","isLoginFlow","phoneOtp","setPhoneOtp","phoneVerified","setPhoneVerified","resendMsg","setResendMsg","phoneTimeLeft","setPhoneTimeLeft","verifyPhoneOTP","handleResend","onResendPhone","interval","setInterval","prev","clearInterval","nextStep","seconds","floor","padStart","EmailRegistration","emailOtp","setEmailOtp","emailTimeLeft","setEmailTimeLeft","VerifyMagicLink","searchParams","useSearchParams","successMsg","setSuccessMsg","mounted","channel","redirectTimeout","BroadcastChannel","postMessage","setTimeout","verify","close","clearTimeout","verificationContent","spinner","successIcon","viewBox","checkIcon","stroke","strokeWidth","d","helperText","successText","CODE_ERRORS","OAuthCallback","startedRef","finishError","removeItem","MagicLinkSent","cooldown","setCooldown","timer","c","magicLinkCompleted","useCallback","onmessage","event","AuthRoutes","Routes","Route","path","element","Navigate","to"],"mappings":"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","x_google_ignoreList":[15]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/client/errors.ts","../src/client/result.ts","../src/client/webauthnPrf.ts","../src/client/webauthnSupport.ts","../src/client/createSeamlessAuthClient.ts","../src/fetchWithAuth.ts","../src/scopedRoles.ts","../src/session/storage.ts","../src/session/createAuthSession.ts","../src/AuthProvider.tsx","../src/hooks/useAuthClient.ts","../src/hooks/useLoginMethods.ts","../src/utils.ts","../src/hooks/usePasskeySupport.ts","../src/routes.ts","../node_modules/style-inject/dist/style-inject.es.js","../src/components/AuthFallbackOptions.tsx","../src/components/OAuthProviderButtons.tsx","../src/views/Login.tsx","../src/views/PassKeyLogin.tsx","../src/views/PassKeyRegistration.tsx","../src/components/OtpInput.tsx","../src/views/PhoneRegistration.tsx","../src/views/EmailRegistration.tsx","../src/views/VerifyMagicLink.tsx","../src/views/OAuthCallback.tsx","../src/components/MagicLinkSent.tsx","../src/AuthRoutes.tsx"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n",null,null,null,null,null,null,null,null,null,null,null,null],"names":["SeamlessAuthError","Error","constructor","message","status","body","cause","super","this","name","OAUTH_ERROR_CODES","oauth_missing_email","oauth_email_not_verified","oauth_missing_subject","readCode","code","getOAuthErrorCode","error","details","Object","prototype","hasOwnProperty","call","undefined","PASSKEY_POLICY_ERROR_CODES","attachment_not_allowed","synced_passkey_not_allowed","authenticator_not_allowed","prf_required","readPolicyCode","getPasskeyPolicyErrorCode","getWebAuthnErrorDetail","value","async","toSeamlessAuthError","response","fallbackMessage","json","extractMessage","readBody","requestResult","request","data","ok","resultOf","resultError","toArrayBuffer","ArrayBuffer","source","Uint8Array","buffer","byteOffset","byteLength","copy","set","encodePrfSalt","salt","bufferToBase64URLString","saltToBufferSource","base64URLStringToBuffer","createPrfRequestBody","input","credentialId","prf","secondSalt","isPasskeyPrfSupported","browserSupportsWebAuthn","window","isSecureContext","globalThis","PublicKeyCredential","navigator","credentials","get","preparePrfRequestOptions","optionsJSON","options","prfEval","extensions","eval","first","second","extractPasskeyPrfResult","credential","extensionResults","clientExtensionResults","results","output","id","outputBase64url","stripPrfResultsFromAssertion","toStepUpStatus","payload","expectedMethod","method","fresh","verifiedAt","expiresAt","maxAgeSeconds","buildAssertionStartInit","JSON","stringify","webAuthnFailure","logContext","thrown","failure","detail","console","createSeamlessAuthClient","opts","fetchWithAuth","authHost","init","url","replace","startsWith","hasBody","requestInit","headers","fetch","createFetchWithAuth","apiHost","getCurrentUser","login","loginWithPasskey","optionsInput","started","assertionResponse","startAuthentication","verified","logout","scope","logoutAllSessions","deleteUser","register","email","phone","requestPhoneOtp","verifyPhoneOtp","verificationToken","requestLoginPhoneOtp","verifyLoginPhoneOtp","requestEmailOtp","verifyEmailOtp","requestLoginEmailOtp","verifyLoginEmailOtp","requestMagicLink","redirectUri","checkMagicLink","verifyMagicLink","token","encodeURIComponent","listOAuthProviders","getPublicSystemConfig","startOAuthLogin","providerId","returnTo","finishOAuthLogin","state","registerPasskey","registerInput","metadata","normalizeRegisterPasskeyInput","challenge","query","URLSearchParams","requirePrf","requestPrf","attachment","queryString","toString","buildRegisterStartPath","attestationResponse","startRegistration","WebAuthnError","prfCapable","enabled","getRegistrationPrfCapable","getStepUpStatus","verifyStepUpWithPasskey","verifyStepUpWithPasskeyPrf","getTotpStatus","startTotpEnrollment","verifyTotpEnrollment","disableTotp","verifyStepUpWithTotp","updateCredential","deleteCredential","listOrganizations","createOrganization","getOrganization","organizationId","updateOrganization","switchOrganization","listOrganizationMembers","addOrganizationMember","updateOrganizationMember","userId","removeOrganizationMember","roleGrantsAccess","grantedRole","requiredRole","granted","trim","required","endsWith","prefix","slice","includes","grantedParts","split","requiredParts","grantedAction","length","requiredAction","grantedPrefix","requiredPrefix","every","part","index","hasScopedRole","grantedRoles","requiredRoles","Array","isArray","filter","role","some","createDefaultStorage","localStorage","values","Map","key","createMemoryStorage","getItem","setItem","PREVIOUS_SIGN_IN_KEY","SIGNED_OUT","user","organizations","activeOrganization","stepUpStatus","isAuthenticated","AuthContext","createContext","useAuth","context","useContext","AuthProvider","children","autoDetectPreviousSignin","session","useMemo","detectPreviousSignIn","client","storage","listeners","Set","destroyed","refreshGeneration","loading","hasSignedInBefore","setState","patch","next","keys","forEach","listener","markSignedIn","clearSession","refreshSession","generation","result","refreshAfter","run","getState","subscribe","add","delete","actions","identifier","passkeyAvailable","handlePasskeyLogin","friendlyName","updated","map","current","refreshStepUpStatus","hasRole","roles","rolesGrantScopedAccess","destroy","clear","createAuthSession","useSyncExternalStore","useEffect","_jsx","Provider","useAuthClient","FALLBACK_LOGIN_METHODS","useLoginMethods","authClient","loginMethods","setLoginMethods","useState","setLoading","active","read","hasNonPasskeyLoginMethod","Boolean","isValidEmail","normalized","parts","localPart","domainPart","test","isValidPhoneNumber","phoneNumber","parsePhoneNumberFromString","isValid","isPasskeySupported","isUserVerifyingPlatformAuthenticatorAvailable","isPlatformAuthenticatorAvailable","usePasskeySupport","passkeySupported","setPasskeySupported","supported","checkSupport","authRoutePaths","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","AuthFallbackOptions","onMagicLink","onEmailOtp","onPhoneOtp","onPasskeyRetry","allowedMethods","showMagicLink","has","showEmailOtp","showPhoneOtp","showPasskeyRetry","_jsxs","className","styles","onClick","OAUTH_PROVIDER_STORAGE_KEY","OAuthProviderButtons","callbackHref","useHref","providers","setProviders","setError","then","provider","sessionStorage","URL","location","origin","assign","authorizationUrl","handleSelect","Login","navigate","useNavigate","configuredMethods","setIdentifier","setEmail","mode","setMode","formErrors","setFormErrors","emailError","setEmailError","identifierError","setIdentifierError","showFallbackOptions","setShowFallbackOptions","_Fragment","onSubmit","e","preventDefault","loginStart","availableMethods","passkeyError","htmlFor","onChange","target","autoComplete","placeholder","onBlur","flow","disabled","PassKeyLogin","runPasskeyLogin","container","card","title","button","POLICY_REFUSAL_MESSAGES","PasskeyRegistration","passkeySupportLoading","loginMethodsLoading","setStatus","setMessage","canSkip","finishWithoutPasskey","platform","browser","deviceInfo","ua","userAgent","toLowerCase","brave","parseUserAgent","policyRefusalMessage","OtpInput","inputMode","inputs","useRef","concat","fill","handleChange","char","handleBulkInput","newValueArr","newValue","join","focus","cleaned","chars","i","Math","min","onPaste","clipboardData","getData","el","maxLength","onKeyDown","handleKeyDown","PhoneRegistration","useLocation","isLoginFlow","phoneOtp","setPhoneOtp","phoneVerified","setPhoneVerified","resendMsg","setResendMsg","phoneTimeLeft","setPhoneTimeLeft","verifyPhoneOTP","handleResend","onResendPhone","interval","setInterval","prev","clearInterval","nextStep","seconds","floor","padStart","EmailRegistration","emailOtp","setEmailOtp","emailTimeLeft","setEmailTimeLeft","VerifyMagicLink","searchParams","useSearchParams","successMsg","setSuccessMsg","mounted","channel","redirectTimeout","BroadcastChannel","postMessage","setTimeout","verify","close","clearTimeout","verificationContent","spinner","successIcon","viewBox","checkIcon","stroke","strokeWidth","d","helperText","successText","CODE_ERRORS","OAuthCallback","startedRef","finishError","removeItem","MagicLinkSent","cooldown","setCooldown","timer","c","magicLinkCompleted","useCallback","onmessage","event","AuthRoutes","Routes","Route","path","element","Navigate","to"],"mappings":"8jBAeM,MAAOA,UAA0BC,MASrC,WAAAC,CAAYC,EAAiBC,EAAgBC,EAAgBC,GAC3DC,MAAMJ,GACNK,KAAKC,KAAO,oBACZD,KAAKJ,OAASA,EACdI,KAAKH,KAAOA,EACZG,KAAKF,MAAQA,CACf,EAeF,MAAMI,EAAkD,CACtDC,qBAAqB,EACrBC,0BAA0B,EAC1BC,uBAAuB,GAGzB,SAASC,EAAST,GAChB,GAAoB,iBAATA,GAA8B,OAATA,EAIhC,OAAQA,EAA4BU,IACtC,CAYM,SAAUC,EAAkBC,GAChC,KAAMA,aAAiBjB,GACrB,OAGF,GAA0B,iBAAfiB,EAAMZ,MAAoC,OAAfY,EAAMZ,KAC1C,OAGF,MAAMU,EACJD,EAASG,EAAMZ,OAASS,EAAUG,EAAMZ,KAA+Ba,SAEzE,MAAuB,iBAATH,GACZI,OAAOC,UAAUC,eAAeC,KAAKZ,EAAmBK,GACrDA,OACDQ,CACN,CA+BA,MAAMC,EAAmE,CACvEC,wBAAwB,EACxBC,4BAA4B,EAC5BC,2BAA2B,EAC3BC,cAAc,GAGhB,SAASC,EAAexB,GACtB,GAAoB,iBAATA,GAA8B,OAATA,EAC9B,OAGF,MAAMU,EAAQV,EAA6BY,MAE3C,MAAuB,iBAATF,GACZI,OAAOC,UAAUC,eAAeC,KAAKE,EAA4BT,GAC9DA,OACDQ,CACN,CAcM,SAAUO,EACdb,GAEA,GAAMA,aAAiBjB,GAIG,iBAAfiB,EAAMZ,MAAoC,OAAfY,EAAMZ,KAI5C,OACEwB,EAAeZ,EAAMZ,OACrBwB,EAAgBZ,EAAMZ,KAA+Ba,QAEzD,CAiCM,SAAUa,EAAuBd,GACrC,KAAMA,aAAiBjB,KAZJ,iBAHnBgC,EAe0Df,EAAMX,QAXpD,OAAV0B,GAC8C,iBAAtCA,EAA6BvB,MAWrC,OAjBJ,IACEuB,EAmBA,MAAMvB,KAAEA,EAAIM,KAAEA,EAAIZ,QAAEA,GAAYc,EAAMX,MAEtC,MAAO,CACLG,OACAM,KAAsB,iBAATA,EAAoBA,OAAOQ,EACxCpB,QAA4B,iBAAZA,EAAuBA,EAAU,GAErD,CAuBO8B,eAAeC,EACpBC,EACAC,GAEA,IAAI/B,EAEJ,IACEA,QAAa8B,EAASE,MACxB,CAAE,MACAhC,OAAOkB,CACT,CAEA,OAAO,IAAIvB,EAjCb,SAAwBK,GACtB,GAAoB,iBAATA,GAA8B,OAATA,EAC9B,OAKF,MAAMY,MAAEA,EAAKd,QAAEA,GAAYE,EAE3B,MAAqB,iBAAVY,GAAsBA,EACxBA,EAGiB,iBAAZd,GAAwBA,EAAUA,OAAUoB,CAC5D,CAoBIe,CAAejC,IAAS+B,EACxBD,EAAS/B,OACTC,EAEJ,CCxNA4B,eAAeM,EAASJ,GACtB,IACE,aAAaA,EAASE,MACxB,CAAE,MAEA,MACF,CACF,CAMOJ,eAAeO,EACpBC,EACAL,GAEA,IAAID,EAEJ,IACEA,QAAiBM,CACnB,CAAE,MACA,MAAO,CACLC,KAAM,KACNzB,MAAO,IAAIjB,EAAkBoC,EA1BC,GA4BlC,CAEA,OAAKD,EAASQ,GAIP,CAAED,WAAaH,EAASJ,GAAiBlB,MAAO,MAH9C,CAAEyB,KAAM,KAAMzB,YAAaiB,EAAoBC,EAAUC,GAIpE,CAGM,SAAUQ,EAAYF,GAC1B,MAAO,CAAEA,OAAMzB,MAAO,KACxB,CAGM,SAAU4B,EACd1C,EACAC,EA7CkC,EA8ClCC,EACAC,GAEA,MAAO,CAAEoC,KAAM,KAAMzB,MAAO,IAAIjB,EAAkBG,EAASC,EAAQC,EAAMC,GAC3E,CC5BA,SAASwC,EAAcd,GACrB,GAAIA,aAAiBe,YACnB,OAAOf,EAGT,MAAMgB,EAAS,IAAIC,WAAWjB,EAAMkB,OAAQlB,EAAMmB,WAAYnB,EAAMoB,YAC9DC,EAAO,IAAIJ,WAAWD,EAAOI,YAGnC,OAFAC,EAAKC,IAAIN,GAEFK,EAAKH,MACd,CAUM,SAAUK,EAAcC,GAC5B,MAAoB,iBAATA,EACFA,EAGFC,EAAwBX,EAAcU,GAC/C,CAEA,SAASE,EAAmBF,GAC1B,MAAoB,iBAATA,EACFG,EAAwBH,GAG1BA,CACT,CAEM,SAAUI,EAAqBC,GACnC,MAAO,IACDA,EAAMC,aAAe,CAAEA,aAAcD,EAAMC,cAAiB,GAChEC,IAAK,CACHP,KAAMD,EAAcM,EAAML,SACtBK,EAAMG,WAAa,CAAEA,WAAYT,EAAcM,EAAMG,aAAgB,IAG/E,CAEO/B,eAAegC,IACpB,QCtFKC,MAIiB,oBAAXC,SAAqD,IAA3BA,OAAOC,uBAKA,IAAnCC,WAAWC,qBACG,oBAAdC,WAC+B,mBAA/BA,UAAUC,aAAaC,GD4ElC,CAEM,SAAUC,EACdC,GAEA,MAAMC,EAAUD,EACVE,EAAUD,EAAQE,YAAYf,KAAKgB,KAEzC,OAAKF,EAIE,IACFD,EACHE,WAAY,IACPF,EAAQE,WACXf,IAAK,IACAa,EAAQE,YAAYf,IACvBgB,KAAM,IACDF,KACCA,EAAQG,MAAQ,CAAEA,MAAOtB,EAAmBmB,EAAQG,QAAW,MAC/DH,EAAQI,OAAS,CAAEA,OAAQvB,EAAmBmB,EAAQI,SAAY,OAZrEN,CAiBX,CAEM,SAAUO,EACdC,GAEA,MAAMC,EACJD,EAAWE,uBACPL,EAAQI,GAAkBrB,KAAKuB,SAASN,MAE9C,IAAKA,EACH,OAAO,KAGT,MAAMO,GA3EcvD,EA2EQgD,aA1EPjC,YACZ,IAAIE,WAAWjB,GAGjB,IAAIiB,WAAWjB,EAAMkB,OAAQlB,EAAMmB,WAAYnB,EAAMoB,YAL9D,IAAsBpB,EA6EpB,MAAO,CACL8B,aAAcqB,EAAWK,GACzBD,SACAE,gBAAiBhC,EAAwBX,EAAcyC,IAE3D,CAEM,SAAUG,EACdP,GAEA,MAAMC,EACJD,EAAWE,uBAEb,OAAKD,GAAkBrB,KAAKuB,QAIrB,IACFH,EACHE,uBAAwB,IACnBF,EAAWE,uBACdtB,IAAK,IACAqB,EAAiBrB,IACpBuB,aAAS/D,KATN4D,CAaX,CEwJA,SAASQ,EACPC,EACAC,GAEA,MAAMC,EAASF,EAAQE,SAAWD,EAAiBD,EAAQE,OAAS,KAIpE,MAFsB,YAApBF,EAAQzF,UAA2C,IAAlByF,EAAQG,OAA6B,OAAXD,EAMtDlD,EAAS,CACdmD,OAAO,EACPD,SACAE,WAAYJ,EAAQI,YAAc,KAClCC,UAAWL,EAAQK,WAAa,KAChCC,cAAeN,EAAQM,eAAiB,IARjCrD,EAAY+C,EAAQzF,SAAW,iCAU1C,CA8BA,SAASgG,EAAwBtC,GAC/B,OAAKA,EAIE,CACLiC,OAAQ,OACRzF,KAAM+F,KAAKC,UAAUzC,EAAqBC,KALnC,CAAEiC,OAAQ,OAOrB,CAQA,SAASQ,EACPC,EACApG,EACAqG,GAEA,MAAMC,EAAU5D,EAAe1C,EHzWG,OGyW4BoB,EAAWiF,GACnEE,EAAS3E,EAAuB0E,EAAQxF,OAI9C,OAFA0F,QAAQ1F,MAAMsF,EAAYG,GAAQjG,MAAQ,kBAEnCgG,CACT,CAEO,MAAMG,EACXC,IAEA,MAAMC,ECxY2B,CAACD,IAClC,MAAME,SAAEA,GAAaF,EAErB,OAAO5E,eACL4B,EACAmD,GAEA,MAGMC,EAAM,GAHCF,GAAUG,QAAQ,OAAQ,KAAO,UACjCrD,EAAMsD,WAAW,KAAOtD,EAAQ,IAAIA,MAM3CuD,EAAwB,MAAdJ,GAAM3G,KAEhBgH,EAA2B,IAC5BL,EACHxC,YAAa,UACb8C,QAAS,IACHF,EAAU,CAAE,eAAgB,oBAAuB,CAAA,KACpDJ,GAAMM,UAIb,OAAOC,MAAMN,EAAKI,EACpB,GD8WsBG,CAAoB,CACxCT,SAAUF,EAAKY,UAGjB,MAAO,CACLC,eAAgB,IACdlF,EACEsE,EAAc,WAAY,CAAEhB,OAAQ,QACpC,oCAGJ6B,MAAO9D,GACLrB,EACEsE,EAAc,SAAU,CACtBhB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAUxC,KAEvB,4BAGJ+D,iBAAkB3F,MAAM4F,IACtB,MAAMC,QAAgBtF,EACpBsE,EAAc,wBAAyB,IAClCX,EAAwB0B,GAAc9D,OAE3C,kCAGF,GAAI+D,EAAQ7G,MACV,OAAO6G,EAGT,IAAI/D,EACAgE,EAEJ,IACE,MAAM5C,QAAoB6C,EAAoB,CAC5CrD,YAAaD,EAAyBoD,EAAQpF,QAEhDqB,EAAMmB,EAAwBC,GAC9B4C,EAAoBrC,EAA6BP,EACnD,CAAE,MAAOlE,GAEP,OAAOqF,EAAgB,uBAAwB,wBAAyBrF,EAC1E,CAEA,MAAMgH,QAAiBzF,EACrBsE,EAAc,yBAA0B,CACtChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,CAAE0B,wBAEzB,6BAGF,OAAIE,EAAShH,MACJgH,EAGsB,YAA3BA,EAASvF,MAAMvC,QACV0C,EAAYoF,EAASvF,MAAMvC,SAAW,yBAGxCyC,EAASmB,EAAM,CAAEA,OAAQ,CAAA,IAGlCmE,OAAQ,CAACtD,EAAU,KACjBpC,EACEsE,EAAgC,iBAAlBlC,EAAQuD,MAA2B,cAAgB,UAAW,CAC1ErC,OAAQ,WAEV,uBAGJsC,kBAAmB,IACjB5F,EACEsE,EAAc,cAAe,CAAEhB,OAAQ,WACvC,uCAGJuC,WAAY,IACV7F,EACEsE,EAAc,gBAAiB,CAAEhB,OAAQ,WACzC,iCAGJwC,SAAUzE,GACRrB,EACEsE,EAAc,yBAA0B,CACtChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,CACnBkC,MAAO1E,EAAM0E,SACT1E,EAAM2E,MAAQ,CAAEA,MAAO3E,EAAM2E,OAAU,OAG/C,uBAGJC,gBAAiB,IACfjG,EAIEsE,EAAc,0BAA2B,CACvChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,MAEvB,gCAGJqC,eAAgBC,GACdnG,EACEsE,EAAc,wBAAyB,CACrChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,CAAEsC,wBAEzB,kCAGJC,qBAAsB,IACpBpG,EAIEsE,EAAc,gCAAiC,CAC7ChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,MAEvB,gCAGJwC,oBAAqBF,GACnBnG,EACEsE,EAAc,8BAA+B,CAC3ChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,CAAEsC,wBAEzB,kCAGJG,gBAAiB,IACftG,EAIEsE,EAAc,0BAA2B,CACvChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,MAEvB,kCAGJ0C,eAAgBJ,GACdnG,EACEsE,EAAc,wBAAyB,CACrChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,CAAEsC,wBAEzB,oCAGJK,qBAAsB,IACpBxG,EAIEsE,EAAc,gCAAiC,CAC7ChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,MAEvB,kCAGJ4C,oBAAqBN,GACnBnG,EACEsE,EAAc,8BAA+B,CAC3ChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,CAAEsC,wBAEzB,oCAMJO,iBAAkBC,GAChB3G,EACEsE,EAAc,cAAe,CAC3BhB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU8C,EAAc,CAAEA,eAAgB,MAEvD,kCAGJC,eAAgB,IACd5G,EACEsE,EAAc,oBAAqB,CAAEhB,OAAQ,QAC7C,mCAGJuD,gBAAiBC,GACf9G,EAIEsE,EAAc,sBAAsByC,mBAAmBD,KAAU,CAC/DxD,OAAQ,QAEV,oCAGJ0D,mBAAoB,IAClBhH,EACEsE,EAAc,mBAAoB,CAAEhB,OAAQ,QAC5C,mCAGJ2D,sBAAuB,IACrBjH,EACEsE,EAAc,wBAAyB,CAAEhB,OAAQ,QACjD,mDAGJ4D,gBAAiB7F,GACfrB,EACEsE,EAAc,UAAUyC,mBAAmB1F,EAAM8F,oBAAqB,CACpE7D,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,IACfxC,EAAMsF,YAAc,CAAEA,YAAatF,EAAMsF,aAAgB,MACzDtF,EAAM+F,SAAW,CAAEA,SAAU/F,EAAM+F,UAAa,OAGxD,gCAGJC,iBAAkBhG,GAChBrB,EACEsE,EAAc,UAAUyC,mBAAmB1F,EAAM8F,uBAAwB,CACvE7D,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,CACnBtF,KAAM8C,EAAM9C,KACZ+I,MAAOjG,EAAMiG,UAGjB,iCAGJC,gBAAiB9H,MAAM4B,IACrB,MAAMmG,EApTZ,SACEnG,GAEA,MAAI,aAAcA,EACTA,EAGF,CAAEoG,SAAUpG,EACrB,CA4S4BqG,CAA8BrG,GAC9CsG,QAAkB3H,EACtBsE,EA5SR,SAAgCjD,GAC9B,MAAMuG,EAAQ,IAAIC,gBAEdxG,EAAMyG,WACRF,EAAM9G,IAAI,aAAc,QACfO,EAAM0G,YACfH,EAAM9G,IAAI,aAAc,QAGtBO,EAAM2G,YACRJ,EAAM9G,IAAI,aAAcO,EAAM2G,YAGhC,MAAMC,EAAcL,EAAMM,WAE1B,MAAO,4BAA2BD,EAAc,IAAIA,IAAgB,GACtE,CA4RsBE,CAAuBX,GAAgB,CAAElE,OAAQ,QAC/D,mDAGF,GAAIqE,EAAUlJ,MACZ,OAAOkJ,EAGT,IAAIS,EAEJ,IACEA,QAA4BC,EAAkB,CAAElG,YAAawF,EAAUzH,MACzE,CAAE,MAAOzB,GACP,OAAIA,aAAiB6J,EAGZjI,EAAY5B,EAAMR,KH7nBC,OG6nB2Bc,EAAWN,GAG3DqF,EACL,8BACA,+BACArF,EAEJ,CAEA,MAAM8J,EF3fN,SAAoCH,GAGxC,MAAMxF,EAAmBwF,EAAoBvF,uBAI7C,OAA0C,IAAnCD,GAAkBrB,KAAKiH,OAChC,CEmfyBC,CAA0BL,GAEvC3C,QAAiBzF,EACrBsE,EAAc,4BAA6B,CACzChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,CACnBuE,sBACAX,SAAU,IAAKD,EAAcC,SAAUc,kBAG3C,wBAGF,OAAI9C,EAAShH,MACJgH,EAGFrF,EAAS,CAAEkB,aAAc8G,EAAoBpF,GAAIuF,gBAG1D9G,wBAEAiH,gBAAiB,IACf1I,EACEsE,EAAc,kBAAmB,CAAEhB,OAAQ,QAC3C,kCAGJqF,wBAAyBlJ,UACvB,MAAM6F,QAAgBtF,EACpBsE,EAAc,0BAA2B,CAAEhB,OAAQ,SACnD,2CAGF,GAAIgC,EAAQ7G,MACV,OAAO6G,EAGT,IAAIC,EAEJ,IAIEA,EAAoBrC,QAHMsC,EAAoB,CAC5CrD,YAAaD,EAAyBoD,EAAQpF,QAGlD,CAAE,MAAOzB,GACP,OAAOqF,EACL,gCACA,iCACArF,EAEJ,CAEA,MAAMgH,QAAiBzF,EACrBsE,EAAc,2BAA4B,CACxChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,CAAE0B,wBAEzB,4CAGF,OAAIE,EAAShH,MACJgH,EAGFtC,EAAesC,EAASvF,MAAQ,CAAA,EAAI,aAG7C0I,2BAA4BnJ,MAAM4B,IAChC,MAAMiE,QAAgBtF,EACpBsE,EAAc,0BAA2B,IACpCX,EAAwBtC,KAE7B,2CAGF,GAAIiE,EAAQ7G,MACV,OAAO6G,EAGT,IAAI/D,EACAgE,EAEJ,IACE,MAAM5C,QAAoB6C,EAAoB,CAC5CrD,YAAaD,EAAyBoD,EAAQpF,QAEhDqB,EAAMmB,EAAwBC,GAC9B4C,EAAoBrC,EAA6BP,EACnD,CAAE,MAAOlE,GACP,OAAOqF,EACL,gCACA,iCACArF,EAEJ,CAEA,IAAK8C,EACH,OAAOlB,EAAY,sCAGrB,MAAMoF,QAAiBzF,EACrBsE,EAAc,2BAA4B,CACxChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,CAAE0B,wBAEzB,4CAGF,GAAIE,EAAShH,MACX,OAAOgH,EAGT,MAAM7H,EAASuF,EAAesC,EAASvF,MAAQ,CAAA,EAAI,YAEnD,OAAItC,EAAOa,MACFb,EAGFwC,EAAS,IAAKxC,EAAOsC,KAAMoB,aAAcC,EAAID,aAAcC,SAGpEsH,cAAe,IACb7I,EACEsE,EAAc,eAAgB,CAAEhB,OAAQ,QACxC,wCAGJwF,oBAAqB,IACnB9I,EACEsE,EAAc,qBAAsB,CAAEhB,OAAQ,SAC9C,6CAGJyF,qBAAsBxK,GACpByB,EACEsE,EAAc,sBAAuB,CACnChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,CAAEtF,WAEzB,4CAGJyK,YAAazK,GACXyB,EACEsE,EAAc,gBAAiB,CAC7BhB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,CAAEtF,WAEzB,wCAGJ0K,qBAAsBxJ,MAAMlB,IAC1B,MAAMkH,QAAiBzF,EACrBsE,EAAc,mBAAoB,CAChChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAU,CAAEtF,WAEzB,4CAGF,OAAIkH,EAAShH,MACJgH,EAGFtC,EAAesC,EAASvF,MAAQ,CAAA,EAAI,SAG7CgJ,iBAAkB7H,GAChBrB,EACEsE,EAAc,oBAAqB,CACjChB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAUxC,KAEvB,gCAGJ8H,iBAAkBnG,GAChBhD,EACEsE,EAAc,oBAAqB,CACjChB,OAAQ,SACRzF,KAAM+F,KAAKC,UAAU,CAAEb,SAEzB,gCAGJoG,kBAAmB,IACjBpJ,EACEsE,EAAc,iBAAkB,CAAEhB,OAAQ,QAC1C,iCAGJ+F,mBAAoBhI,GAClBrB,EACEsE,EAAc,iBAAkB,CAC9BhB,OAAQ,OACRzF,KAAM+F,KAAKC,UAAUxC,KAEvB,kCAGJiI,gBAAiBC,GACfvJ,EACEsE,EAAc,kBAAkByC,mBAAmBwC,KAAmB,CACpEjG,OAAQ,QAEV,gCAGJkG,mBAAoB,CAACD,EAAgBlI,IACnCrB,EACEsE,EAAc,kBAAkByC,mBAAmBwC,KAAmB,CACpEjG,OAAQ,QACRzF,KAAM+F,KAAKC,UAAUxC,KAEvB,kCAGJoI,mBAAoBF,GAClBvJ,EACEsE,EAAc,kBAAkByC,mBAAmBwC,YAA0B,CAC3EjG,OAAQ,SAEV,kCAGJoG,wBAAyBH,GACvBvJ,EACEsE,EAAc,kBAAkByC,mBAAmBwC,aAA2B,CAC5EjG,OAAQ,QAEV,wCAGJqG,sBAAuB,CAACJ,EAAgBlI,IACtCrB,EACEsE,EAAc,kBAAkByC,mBAAmBwC,aAA2B,CAC5EjG,OAAQ,OACRzF,KAAM+F,KAAKC,UAAUxC,KAEvB,sCAGJuI,yBAA0B,CAACL,EAAgBM,EAAQxI,IACjDrB,EACEsE,EACE,kBAAkByC,mBAAmBwC,cAA2BxC,mBAAmB8C,KACnF,CACEvG,OAAQ,QACRzF,KAAM+F,KAAKC,UAAUxC,KAGzB,yCAGJyI,yBAA0B,CAACP,EAAgBM,IACzC7J,EACEsE,EACE,kBAAkByC,mBAAmBwC,cAA2BxC,mBAAmB8C,KACnF,CACEvG,OAAQ,WAGZ,2CEt6BF,SAAUyG,EAAiBC,EAAqBC,GACpD,MAAMC,EAAUF,EAAYG,OACtBC,EAAWH,EAAaE,OAE9B,IAAKD,IAAYE,EACf,OAAO,EAGT,GAAIF,IAAYE,EACd,OAAO,EAGT,GAAIF,EAAQG,SAAS,MAAO,CAC1B,MAAMC,EAASJ,EAAQK,MAAM,GAAG,GAChC,OAAOH,IAAaE,GAAUF,EAASzF,WAAW,GAAG2F,KACvD,CAEA,IAAKF,EAASI,SAAS,KACrB,OAAO,EAGT,IAAKN,EAAQM,SAAS,KACpB,OAAOJ,EAASzF,WAAW,GAAGuF,MAGhC,MAAMO,EAAeP,EAAQQ,MAAM,KAC7BC,EAAgBP,EAASM,MAAM,KAC/BE,EAAgBH,EAAaA,EAAaI,OAAS,GACnDC,EAAiBH,EAAcA,EAAcE,OAAS,GACtDE,EAAgBN,EAAaF,MAAM,GAAG,GACtCS,EAAiBL,EAAcJ,MAAM,GAAG,GAE9C,MACoB,UAAlBK,GACmB,SAAnBE,GACAC,EAAcF,SAAWG,EAAeH,QACxCE,EAAcE,MAAM,CAACC,EAAMC,IAAUD,IAASF,EAAeG,GAEjE,CAEM,SAAUC,EACdC,EACAC,GAEA,IAAKC,MAAMC,QAAQH,GACjB,OAAO,EAGT,MAAMnB,EAAUmB,EAAaI,OAAQC,GAAyC,iBAATA,GAGrE,OAFiBH,MAAMC,QAAQF,GAAiBA,EAAgB,CAACA,IAEjDK,KAAK1B,GACnBC,EAAQyB,KAAK3B,GAAeD,EAAiBC,EAAaC,IAE9D,UCTgB2B,IACd,MAA+B,oBAAjBC,wBAlCd,MAAMC,EAAS,IAAIC,IAEnB,MAAO,CACL9J,IAAK+J,GAAOF,EAAO7J,IAAI+J,IAAQ,KAC/BlL,IAAK,CAACkL,EAAKxM,KACTsM,EAAOhL,IAAIkL,EAAKxM,IAGtB,CA2BMyM,GAxBG,CACLhK,IAAK+J,IACH,IACE,OAAOH,aAAaK,QAAQF,EAC9B,CAAE,MACA,OAAO,IACT,GAEFlL,IAAK,CAACkL,EAAKxM,KACT,IACEqM,aAAaM,QAAQH,EAAKxM,EAC5B,CAAE,MAEF,GAaN,CC7BA,MAAM4M,EAAuB,oBAuEvBC,GAAa,CACjBC,KAAM,KACNtK,YAAa,GACbuK,cAAe,GACfC,mBAAoB,KACpBC,aAAc,KACdC,iBAAiB,GC7BnB,MAAMC,GAAcC,OAA2C7N,GAMlD8N,GAAU,KACrB,MAAMC,EAAUC,EAAWJ,IAC3B,IAAKG,EACH,MAAM,IAAIrP,MAAM,+CAElB,OAAOqP,GASIE,GAA4C,EACvDC,WACAhI,UACAiI,4BAA2B,MAE3B,MAAMC,EAAUC,EACd,IDME,SAA4BhL,GAChC,MAAM6C,QAAEA,EAAOoI,qBAAEA,GAAuB,GAASjL,EAC3CkL,EAASlJ,EAAyB,CAAEa,YACpCsI,EAAUnL,EAAQmL,SAAW3B,IAC7B4B,EAAY,IAAIC,IAEtB,IAAIC,GAAY,EAGZC,EAAoB,EAEpBrG,EAA0B,IACzB+E,GACHuB,SAAS,EACTC,kBACER,GAA8D,SAAtCE,EAAQtL,IAAImK,IAOxC,SAAS0B,EAASC,GAChB,MAAMC,EAAO,IAAK1G,KAAUyG,GACXpP,OAAOsP,KAAKF,GAAsCpC,KACjEK,GAAO1E,EAAM0E,KAASgC,EAAKhC,MAO7B1E,EAAQ0G,EACRR,EAAUU,QAAQC,GAAYA,KAChC,CAEA,SAASC,IACPb,EAAQzM,IAAIsL,EAAsB,QAE9BiB,GACFS,EAAS,CAAED,mBAAmB,GAElC,CAGA,SAASQ,IACPP,EAASzB,GACX,CAsBA5M,eAAe6O,IACb,MAAMC,IAAeZ,EAErBG,EAAS,CAAEF,SAAS,IAEpB,MAAMY,QAAelB,EAAOpI,iBAE5B,OAAIwI,GAAaa,IAAeZ,EACvBa,EAGLA,EAAO/P,OAIT4P,IACAP,EAAS,CAAEF,SAAS,IAEbY,IAGTV,EAAS,CACPxB,KAAMkC,EAAOtO,KAAKoM,KAClBtK,YAAawM,EAAOtO,KAAK8B,aAAe,GACxCuK,cAAeiC,EAAOtO,KAAKqM,eAAiB,GAC5CC,mBAAoBgC,EAAOtO,KAAKsM,oBAAsB,KACtDE,iBAAiB,EACjBkB,SAAS,IAGNtG,EAAMuG,mBACTO,IAGKI,EACT,CAEA/O,eAAegP,EACbC,GAEA,MAAMF,QAAeE,IAMrB,OAJKF,EAAO/P,aACJ6P,IAGDE,CACT,CAyHA,MAAO,CACLG,SAAU,IAAMrH,EAChBsH,UAAWT,IACTX,EAAUqB,IAAIV,GAEP,KACLX,EAAUsB,OAAOX,KAGrBY,QAhIkC,CAClC5J,MAAO,CAAC6J,EAAYC,IAClB3B,EAAOnI,MAAM,CAAE6J,aAAYC,qBAE7BC,mBAAoB,IAAMT,EAAa,IAAMnB,EAAOlI,oBAEpDkJ,iBACA5I,OA5EFjG,iBAKE,IACE,aAAa6N,EAAO5H,QACtB,SACE2I,GACF,CACF,EAmEEzI,kBAjEFnG,iBACE,IACE,aAAa6N,EAAO1H,mBACtB,SACEyI,GACF,CACF,EA6DExI,WAAYpG,UACV,MAAM+O,QAAelB,EAAOzH,aAM5B,OAJK2I,EAAO/P,OACV4P,IAGKG,GAGTtF,iBAAkBzJ,MAAMkD,IACtB,MAAMzC,KAAEA,EAAIzB,MAAEA,SAAgB6O,EAAOpE,iBAAiB,CAGpDiG,aAAcxM,EAAWwM,cAAgB,KACzCnM,GAAIL,EAAWK,KAGjB,GAAIvE,EACF,MAAO,CAAEyB,KAAM,KAAMzB,SAGvB,MAAM2Q,EAAUlP,EAAKyC,WASrB,OAPAmL,EAAS,CACP9L,YAAasF,EAAMtF,YAAYqN,IAAIC,GACjCA,EAAQtM,KAAOoM,EAAQpM,GAAK,IAAKsM,KAAYF,GAAYE,KAKtD,CAAEpP,KAAMkP,EAAS3Q,MAAO,OAGjC0K,iBAAkB1J,MAAM6B,IACtB,MAAMkN,QAAelB,EAAOnE,iBAAiB7H,GAU7C,OARKkN,EAAO/P,OACVqP,EAAS,CACP9L,YAAasF,EAAMtF,YAAYyJ,OAC7B9I,GAAcA,EAAWK,KAAO1B,KAK/BkN,GAGT/E,mBAAoBF,GAClBkF,EAAa,IAAMnB,EAAO7D,mBAAmBF,IAE/CvC,mBAAoB,IAAMsG,EAAOtG,qBACjCE,gBAAiB7F,GAASiM,EAAOpG,gBAAgB7F,GACjDgG,iBAAkBhG,GAASoN,EAAa,IAAMnB,EAAOjG,iBAAiBhG,IAEtEkO,oBAAqB9P,UACnB,MAAM+O,QAAelB,EAAO5E,kBAK5B,OAFAoF,EAAS,CAAErB,aAAc+B,EAAO/P,MAAQ,KAAO+P,EAAOtO,OAE/CsO,GAGT7F,wBAAyBlJ,UACvB,MAAM+O,QAAelB,EAAO3E,0BAM5B,OAJK6F,EAAO/P,OACVqP,EAAS,CAAErB,aAAc+B,EAAOtO,OAG3BsO,GAGT5F,2BAA4BnJ,MAAM4B,IAChC,MAAMmN,QAAelB,EAAO1E,2BAA2BvH,GAcvD,OAZKmN,EAAO/P,OACVqP,EAAS,CACPrB,aAAc,CACZlJ,MAAOiL,EAAOtO,KAAKqD,MACnBD,OAAQkL,EAAOtO,KAAKoD,OACpBE,WAAYgL,EAAOtO,KAAKsD,WACxBC,UAAW+K,EAAOtO,KAAKuD,UACvBC,cAAe8K,EAAOtO,KAAKwD,iBAK1B8K,GAGTvF,qBAAsBxJ,MAAMlB,IAC1B,MAAMiQ,QAAelB,EAAOrE,qBAAqB1K,GAMjD,OAJKiQ,EAAO/P,OACVqP,EAAS,CAAErB,aAAc+B,EAAOtO,OAG3BsO,GAGTgB,QAAS9D,GAAQpE,EAAMgF,MAAMmD,OAAOjF,SAASkB,GAC7CN,cAAeM,GACbpE,EAAMgF,KAAOoD,EAAuBpI,EAAMgF,KAAKmD,MAAO/D,QAAQ3M,EAEhEqP,gBAaAuB,QAAS,KACPjC,GAAY,EACZF,EAAUoC,SAGhB,CCjQMC,CAAkB,CAChB5K,UACAoI,qBAAsBH,IAE1B,CAACjI,EAASiI,IAMN5F,EAAQwI,EACZ3C,EAAQyB,UACRzB,EAAQwB,SACRxB,EAAQwB,UAcVoB,EAAU,KACH5C,EAAQ4B,QAAQT,kBACpB,CAACnB,IAEJ,MAAM3N,EAAQ4N,EACZ,KAAA,IAAY9F,KAAU6F,EAAQ4B,QAAS9J,YACvC,CAACqC,EAAO6F,EAASlI,IAGnB,OAAO+K,EAACrD,GAAYsD,SAAQ,CAACzQ,MAAOA,EAAKyN,SAAGA,KC9HjCiD,GAAgB,KAC3B,MAAMjL,QAAEA,GAAY4H,KAEpB,OAAOO,EACL,IACEhJ,EAAyB,CACvBa,YAEJ,CAACA,KCDQkL,GAAwC,CAAC,UAAW,cAWpDC,GAAkB,KAC7B,MAAMC,EAAaH,MACZI,EAAcC,GAAmBC,EAA+B,OAChE5C,EAAS6C,GAAcD,GAAS,GA8BvC,OA5BAT,EAAU,KACR,IAAIW,GAAS,EAsBb,MApBajR,WACX,IACE,MAAMS,KAAEA,EAAIzB,MAAEA,SAAgB4R,EAAWpJ,wBAErCyJ,IAAWjS,GAASyB,GAAMoQ,cAAczF,QAC1C0F,EAAgBrQ,EAAKoQ,aAEzB,CAAE,MAIF,SACMI,GACFD,GAAW,EAEf,GAGGE,GAEE,KACLD,GAAS,IAEV,CAACL,IAEG,CAAEC,eAAc1C,YAUZgD,GAA4BN,GACvCO,QAAQP,GAAc3E,KAAKrI,GAAqB,YAAXA,ICxD1BwN,GAAgB/K,IAC3B,GAAqB,iBAAVA,EAAoB,OAAO,EAGtC,MAAMgL,EAAahL,EAAMoE,OAGzB,GAAI4G,EAAWlG,OAAS,GAAKkG,EAAWlG,OAAS,IAAK,OAAO,EAG7D,MAAMmG,EAAQD,EAAWrG,MAAM,KAC/B,GAAqB,IAAjBsG,EAAMnG,OAAc,OAAO,EAE/B,MAAOoG,EAAWC,GAAcF,EAGhC,SACG,sBAAsBG,KAAKF,IAC5BA,EAAUtM,WAAW,MACrBsM,EAAU5G,SAAS,MACnB4G,EAAUzG,SAAS,WAOlB,iCAAiC2G,KAAKD,IACvCA,EAAWvM,WAAW,MACtBuM,EAAW7G,SAAS,MACpB6G,EAAWvM,WAAW,MACtBuM,EAAW7G,SAAS,MACpB6G,EAAW1G,SAAS,QAeX4G,GAAsBpL,IACjC,MAAMqL,EAAcC,EAA2BtL,GAC/C,OAAOqL,GAAaE,YAAa,GAO5B9R,eAAe+R,KACpB,OT1CK/R,iBACL,GAAsB,oBAAXkC,OACT,OAAO,EAGT,GACEA,OAAOG,qBAEL,mBADKH,OAAOG,oBAAoB2P,8CAGlC,IACE,aAAa3P,oBAAoB2P,+CACnC,CAAE,MAEA,OADAtN,QAAQ1F,MAAM,oCACP,CACT,CAGF,OAAO,CACT,CSuBSiT,EACT,CCjEO,MAAMC,GAAoB,KAC/B,MAAOC,EAAkBC,GAAuBrB,GAAS,IAClD5C,EAAS6C,GAAcD,GAAS,GA6BvC,OA3BAT,EAAU,KACR,IAAIW,GAAS,EAqBb,MAnBqBjR,WACnB,IACE,MAAMqS,QAAkBN,KACpBd,GACFmB,EAAoBC,EAExB,CAAE,MACIpB,GACFmB,GAAoB,EAExB,SACMnB,GACFD,GAAW,EAEf,GAGGsB,GAEE,KACLrB,GAAS,IAEV,IAEI,CAAEkB,mBAAkBhE,YCxBhBoE,GACJ,SADIA,GAEG,iBAFHA,GAGK,oBAHLA,GAIK,oBAJLA,GAKM,oBALNA,GAMI,kBANJA,GAOM,oBAPNA,GAQI,mBCzBjB,SAASC,GAAYC,EAAKC,YACnBA,IAAiBA,EAAM,CAAA,GAC5B,IAAIC,EAAWD,EAAIC,SAEnB,GAAKF,GAA2B,oBAAbG,SAAnB,CAEA,IAAIC,EAAOD,SAASC,MAAQD,SAASE,qBAAqB,QAAQ,GAC9DC,EAAQH,SAASI,cAAc,SACnCD,EAAME,KAAO,WAEI,QAAbN,GACEE,EAAKK,WACPL,EAAKM,aAAaJ,EAAOF,EAAKK,YAKhCL,EAAKO,YAAYL,GAGfA,EAAMM,WACRN,EAAMM,WAAWC,QAAUb,EAE3BM,EAAMK,YAAYR,SAASW,eAAed,GAnBW,CAqBzD,8wICJA,MAAMe,GAA0D,EAC9DjE,aACAkE,cACAC,aACAC,aACAC,iBACA/C,mBAKA,MAAMgD,EAAiB,IAAI7F,IACzB6C,GAAgB,CAAC,UAAW,aAAc,cAEtCiD,EAAgBD,EAAeE,IAAI,eAAiB1C,GAAa9B,GACjEyE,EACJH,EAAeE,IAAI,cAAgB3C,QAAQsC,IAAerC,GAAa9B,GACnE0E,EAAeJ,EAAeE,IAAI,cAAgBpC,GAAmBpC,GACrE2E,EAAmBL,EAAeE,IAAI,YAAc3C,QAAQwC,GAElE,OAAKE,GAAkBE,GAAiBC,GAAiBC,EAKvDC,EAAA,MAAA,CAAKC,UAAWC,GAAmB7G,SAAA,CACjC+C,EAAA,MAAA,CAAK6D,UAAWC,GAAqB7G,SAAA,4BAErC+C,EAAA,IAAA,CAAG6D,UAAWC,GAA0B7G,SAAA,0CAExC2G,EAAA,MAAA,CAAKC,UAAWC,aACbP,GACCK,EAAA,SAAA,CACElB,KAAK,SACLmB,UAAWC,GACXC,QAASb,EAAWjG,SAAA,CAEpB+C,EAAA,OAAA,CAAM6D,UAAWC,GAAkB7G,SAAA,qBACnC+C,EAAA,OAAA,CAAM6D,UAAWC,GAAoB7G,SAAA,gDAMxCwG,GACCG,EAAA,SAAA,CACElB,KAAK,SACLmB,UAAWC,GACXC,QAASZ,EAAUlG,SAAA,CAEnB+C,EAAA,OAAA,CAAM6D,UAAWC,GAAkB7G,SAAA,eACnC+C,EAAA,OAAA,CAAM6D,UAAWC,GAAoB7G,SAAA,wCAIxCyG,GACCE,EAAA,SAAA,CACElB,KAAK,SACLmB,UAAWC,GACXC,QAASX,EAAUnG,SAAA,CAEnB+C,EAAA,OAAA,CAAM6D,UAAWC,GAAkB7G,SAAA,sBACnC+C,EAAA,OAAA,CAAM6D,UAAWC,GAAoB7G,SAAA,0CAK1C0G,GACC3D,EAAA,SAAA,CAAQ0C,KAAK,SAASmB,UAAWC,GAAmBC,QAASV,qCA/C1D,MC7BEW,GAA6B,0BAEpCC,GAAiC,KACrC,MAAMjN,mBAAEA,EAAkBE,gBAAEA,GAAoB2F,KAG1CqH,EAAeC,EAAQ,oBACtBC,EAAWC,GAAgB7D,EAA0B,KACrD/R,EAAO6V,GAAY9D,EAAS,IAcnC,GAZAT,EAAU,KACR,IAAIW,GAAS,EAMb,OAJK1J,IAAqBuN,KAAK,EAAGrU,WAC5BwQ,GAAQ2D,EAAanU,GAAMkU,WAAa,MAGvC,KACL1D,GAAS,IAEV,CAAC1J,IAEqB,IAArBoN,EAAUvJ,OACZ,OAAO,KAsBT,OACE+I,EAAA,MAAA,CAAKC,UAAWC,GAAsB7G,SAAA,CACnCmH,EAAU/E,IAAImF,GACbxE,EAAA,SAAA,CAEE0C,KAAK,SACLmB,UAAWC,GACXC,QAAS,IA1BItU,OAAO0H,IAC1BmN,EAAS,IAGTG,eAAetI,QAAQ6H,GAA4B7M,GAEnD,MAAMjH,KAAEA,EAAIzB,MAAEA,SAAgByI,EAAgB,CAC5CC,aACAR,YAAa,IAAI+N,IAAIR,EAAcvS,OAAOgT,SAASC,QAAQ1M,aAGzDzJ,EACF6V,EAAS,+CAIX3S,OAAOgT,SAASE,OAAO3U,EAAK4U,mBAUPC,CAAaP,EAASxR,IAAGiK,SAExC2G,EAAA,OAAA,CAAMC,UAAWC,GAAkB7G,SAAA,CAAA,iBAAiBuH,EAASvW,SALxDuW,EAASxR,KASjBvE,GAASuR,OAAG6D,UAAWC,GAAY7G,SAAGxO,QCpDvCuW,GAAkB,KACtB,MAAMC,EAAWC,KACXrH,kBAAEA,EAAiB1I,MAAEA,EAAK+J,mBAAEA,GAAuBrC,KACnDwD,EAAaH,MACb0B,iBAAEA,GAAqBD,MACrBrB,aAAc6E,GAAsB/E,MACrCpB,EAAYoG,GAAiB5E,EAAiB,KAC9CzK,EAAOsP,GAAY7E,EAAiB,KACpC8E,EAAMC,GAAW/E,EAA+B,aAChDgF,EAAYC,GAAiBjF,EAAiB,KAC9CkF,EAAYC,GAAiBnF,EAAiB,KAC9CoF,EAAiBC,GAAsBrF,EAAiB,KACxDsF,EAAqBC,GAA0BvF,GAAS,IACxDF,EAAcC,GAAmBC,EAA+B,MAEvET,EAAU,KACJlC,GACF0H,EAAQ,UAET,CAAC1H,IAgIJ,OACEmC,SAAK6D,UAAWC,YACdF,EAAA,MAAA,CAAKC,UAAWC,GAAW7G,SAAA,CACzB+C,EAAA,KAAA,CAAI6D,UAAWC,GAAc7G,SACjB,UAATqI,EAAmB,UAAY,mBAGlC1B,EAAAoC,EAAA,CAAA/I,SAAA,CACE2G,UAAMqC,SA5DOxW,MAAOyW,IAC1BA,EAAEC,iBACFV,EAAc,IACdM,GAAuB,GAEvB,IACE,GAAa,UAATT,EAAkB,CACpB,MAAQpV,KAAMkW,EAAU3X,MAAEA,SAAgB0G,EAAM6J,EAAY4C,GAE5D,GAAInT,EAEF,YADAgX,EAAc,8CAOhB,MAAMY,EAAmBD,GAAY9F,cAAczF,OAC/CuL,EAAW9F,aACV6E,GAAqBhF,GAG1B,GAFAI,EAAgB8F,GAEZzE,GAAoByE,EAAiB7L,SAAS,WAAY,CAC5D,MAAQ/L,MAAO6X,SAAuBpH,IAEtC,OAAKoH,GAKLP,GAAuB,QACvBN,EACE,gFANAR,EAAS,IASb,CAGA,YADAc,GAAuB,EAEzB,CAEa,aAATT,QAhGS7V,WACfgW,EAAc,IAEd,MAAMvV,KAAEA,EAAIzB,MAAEA,SAAgB4R,EAAWvK,SAAS,CAChDC,UAGEtH,EACFgX,EAAc,yCAIK,YAAjBvV,EAAKvC,QAOTsX,EAASjD,IANPyD,EACE,uFAmFM3P,EAEV,CAAE,MAGA3B,QAAQ1F,MAAM,+BACdgX,EAAc,gDAChB,GAWkCxI,SAAA,CAChB,UAATqI,GACC1B,EAAA,MAAA,CAAKC,UAAWC,aACd9D,EAAA,QAAA,CAAOuG,QAAQ,aAAa1C,UAAWC,GAAY7G,SAAA,iCAGnD+C,WACEhN,GAAG,aACH0P,KAAK,OACLlT,MAAOwP,EACPwH,SA3IgBN,IAC9B,MAAM1W,EAAQ0W,EAAEO,OAAOjX,MACvB4V,EAAc5V,IA0IAkX,aAAa,MACbC,YAAY,wBACZ9C,UAAWC,GACX8C,OAAQ,KACN,GAAI5H,EAAY,CACd,MAAMuC,EACJT,GAAa9B,IAAeoC,GAAmBpC,GACjD6G,EACEtE,EAAU,GAAK,6CAEnB,GAEFnH,UAAQ,IAEV4F,EAAA,IAAA,CAAG6D,UAAWC,GAAiB7G,SAAA,sDAG9B6I,GACC9F,EAACiD,GAAmB,CAClBjE,WAAYA,EACZkE,YA5HIzT,UACpB,MAAMhB,MAAEA,SAAgB4R,EAAW3J,mBAE/BjI,EACFgX,EAAc,8BAIhBR,EAASjD,GAA8B,CAAE1K,MAAO,CAAE0H,iBAqHlCmE,WAvGG1T,UACnB,MAAMhB,MAAEA,SAAgB4R,EAAW7J,uBAE/B/H,EACFgX,EAAc,8BAIhBR,EAASjD,GAA+B,CAAE1K,MAAO,CAAEuP,KAAM,YAgGzCzD,WAnHG3T,UACnB,MAAMhB,MAAEA,SAAgB4R,EAAWjK,uBAE/B3H,EACFgX,EAAc,uBAIhBR,EAASjD,GAA+B,CAAE1K,MAAO,CAAEuP,KAAM,YA4GzCxD,eAAgBzB,EAAmB1C,OAAqBnQ,EACxDuR,aAAcA,IAIjBsF,GAAmB5F,EAAA,IAAA,CAAG6D,UAAWC,YAAe8B,OAG3C,aAATN,GACC1B,EAAA,MAAA,CAAKC,UAAWC,GAAiB7G,SAAA,CAC/B+C,EAAA,QAAA,CAAOuG,QAAQ,QAAQ1C,UAAWC,GAAY7G,SAAA,kBAG9C+C,EAAA,QAAA,CACEhN,GAAG,QACH0P,KAAK,QACLlT,MAAOuG,EACPyQ,SAzLWN,IACzB,MAAMnQ,EAAQmQ,EAAEO,OAAOjX,MACvB6V,EAAStP,IAwLK2Q,aAAa,MACb7C,UAAWC,GACX8C,OAAQ,KACN,GAAI7Q,EAAO,CACT,MAAMwL,EAAUT,GAAa/K,GAC7B4P,EAAcpE,EAAU,GAAK,6BAC/B,GAEFnH,UAAQ,IAETsL,GAAc1F,EAAA,IAAA,CAAG6D,UAAWC,GAAY7G,SAAGyI,OAGhD1F,EAAA,SAAA,CAAQ0C,KAAK,SAASmB,UAAWC,GAAegD,WA5L3C,UAATxB,GAAoBtG,EACf8B,GAAa9B,IAAeoC,GAAmBpC,GAIjD8B,GAAa/K,aAwLA,UAATuP,EAAmB,QAAU,aAE/BE,GAAcxF,EAAA,IAAA,CAAG6D,UAAWC,GAAY7G,SAAGuI,IAC5CxF,EAAA,SAAA,CACE0C,KAAK,SACLqB,QAAS,IAAMwB,EAAiB,UAATD,EAAmB,WAAa,SACvDzB,UAAWC,GAAa7G,SAEd,UAATqI,EACG,oCACA,wCAIRtF,EAACiE,GAAoB,CAAA,uuCClP/B,MAAM8C,GAAyB,KAC7B,MAAM9B,EAAWC,KACThG,mBAAoB8H,GAAoBnK,MACzCpO,EAAO6V,GAAY9D,EAAS,IAenC,OACER,SAAK6D,UAAWC,GAAOmD,UAAShK,SAC9B2G,EAAA,MAAA,CAAKC,UAAWC,GAAOoD,eACrBlH,EAAA,KAAA,CAAI6D,UAAWC,GAAOqD,MAAKlK,SAAA,uBAC3B+C,EAAA,SAAA,CAAQ+D,QAjBkBtU,UAC9B6U,EAAS,IAET,MAAQ7V,MAAO6X,SAAuBU,IAEjCV,EAKLhC,EAAS,uEAJPW,EAAS,MAWmCpB,UAAWC,GAAOsD,OAAMnK,SAAA,gBAGjExO,GAASuR,OAAG6D,UAAWC,GAAOrV,MAAKwO,SAAGxO,4zGCnB/C,MAAM4Y,GAAkE,CACtEpY,uBACE,qFACFC,2BACE,qIACFC,0BAA2B,uDAC3BC,aACE,4EASJ,MAAMkY,GAAgC,KACpC,MAAMhJ,eAAEA,GAAmBzB,KACrBwD,EAAaH,MACb0B,iBAAEA,EAAkBhE,QAAS2J,GAA0B5F,MACvDrB,aAAEA,EAAc1C,QAAS4J,GAAwBpH,KACjD6E,EAAWC,KAEVtX,EAAQ6Z,GAAajH,EAAmD,SACxE7S,EAAS+Z,GAAclH,EAAS,IASjCmH,EAAU/G,GAAyBN,GAEnCsH,EAAuBnY,gBACrB6O,IACN2G,EAAS,MAGL1N,EAAkB9H,MAAOuI,IAC7B,MAAM6P,SAAEA,EAAQC,QAAEA,EAAOC,WAAEA,cRqB7B,MAAMC,EAAKjW,UAAUkW,UAAUC,cAE/B,IAAIL,EAAW,UACXC,EAAU,UAuBd,MArBI,mBAAmB3G,KAAK6G,GAAKH,EAAW,MACnC,UAAU1G,KAAK6G,GAAKH,EAAW,UAC/B,SAAS1G,KAAK6G,GAAKH,EAAW,MAC9B,UAAU1G,KAAK6G,GAAKH,EAAW,UAC/B,QAAQ1G,KAAK6G,KAAKH,EAAW,SAMjC9V,UAAiCoW,MAAOL,EAAU,QAC9C,eAAe3G,KAAK6G,GAAKF,EAAU,OACnC,oBAAoB3G,KAAK6G,GAAKF,EAAU,QACxC,UAAU3G,KAAK6G,GAAKF,EAAU,UAC9B,iBAAiB3G,KAAK6G,GAAKF,EAAU,UACrC,gBAAgB3G,KAAK6G,GAAKF,EAAU,UACpC,eAAe3G,KAAK6G,GAAKF,EAAU,SACnC,SAAS3G,KAAK6G,KAAKF,EAAU,UAI/B,CAAED,WAAUC,UAASC,WAFT,GAAGF,OAAcC,IAGtC,CQhD8CM,GAEpC3Q,EAA4B,CAIhC0H,aAAc4I,EACdF,WACAC,UACAC,cAGFN,EAAU,WAEV,IACE,MAAMhZ,MAAEA,SAAgB4R,EAAW9I,gBAAgB,CAAEE,WAAUO,eAE/D,GAAIvJ,EACF,MAAMA,QAGF6P,IACNmJ,EAAU,WACVC,EAAW,oCACXzC,EAAS,IACX,CAAE,MAAOxW,GACP0F,QAAQ1F,MAAM,gCACdgZ,EAAU,SAGVC,EA7DN,SAA8BjZ,GAC5B,MAAMF,EAAOe,EAA0Bb,GAEvC,OAAOF,EAAO8Y,GAAwB9Y,QAAQQ,CAChD,CAyDiBsZ,CAAqB5Z,IAAU,6BAC5C,GAGF,OACEuR,SAAK6D,UAAWC,YACd9D,EAAA,MAAA,CAAK6D,UAAWC,GAAW7G,SAEvB2G,EAAA,MADD2D,GAAyBC,EACxB,CAAK3D,UAAWC,GAAc7G,SAAA,CAC5B+C,SAAK6D,UAAWC,KAChB9D,EAAA,OAAA,CAAA/C,SAAA,sCAEC2E,EAuBH,CAAKiC,UAAWC,GAAgB7G,SAAA,CAC9B+C,EAAA,KAAA,CAAI6D,UAAWC,GAAY7G,SAAA,uCAC3B+C,EAAA,IAAA,CAAG6D,UAAWC,GAAkB7G,SAAA,2EAIhC+C,EAAA,SAAA,CACE+D,QAAS,IAAMxM,IACfuP,SAAqB,YAAXlZ,EACViW,UAAWC,GAAa7G,SAEZ,YAAXrP,EAAuB,iBAAmB,qBAS7CoS,EAAA,SAAA,CACE0C,KAAK,SACLqB,QAAS,IAAMxM,EAAgB,kBAC/BuP,SAAqB,YAAXlZ,EACViW,UAAWC,2CAKZnW,GACCqS,EAAA,IAAA,CACE6D,UAAW,GAAGC,MACD,YAAXlW,EAAuBkW,GAAiBA,cAGzCnW,IAIJga,GACC3H,YACE0C,KAAK,SACLqB,QAAS6D,EACTd,SAAqB,YAAXlZ,EACViW,UAAWC,+BA/DjB,CAAKD,UAAWC,GAAgB7G,SAAA,CAC9B+C,EAAA,KAAA,CAAI6D,UAAWC,GAAY7G,SAAA,oCAC3B+C,EAAA,IAAA,CAAG6D,UAAWC,GAAkB7G,SAC7B0K,EACG,uHACA,gJAGLA,GACC3H,EAAA,SAAA,CACE0C,KAAK,SACLqB,QAAS6D,EACT/D,UAAWC,GAAa7G,SAAA,4wGCpGxC,MAAMqL,GAA4B,EAChCzN,SAAS,EACTrL,QACA+Y,YAAY,UACZ/B,WACAvY,OAAO,UAEP,MAAMua,EAASC,EAAuC,IAEhD3M,EAAStM,EAAMkL,MAAM,IAAIgO,OAAOnN,MAAMV,GAAQ8N,KAAK,KAAKpO,MAAM,EAAGM,GAOjE+N,EAAe,CAACzN,EAAe9J,KALjB,IAACwX,EAMnB,GAAIxX,EAAMwJ,OAAS,EACjBiO,EAAgB3N,EAAO9J,QAIzB,IAAKA,IAXcwX,EAWOxX,EAVR,YAAdkX,EAAgC,OAAOpH,KAAK0H,GACzC,aAAa1H,KAAK0H,IASS,CAChC,MAAME,EAAc,IAAIjN,GACxBiN,EAAY5N,GAAS9J,EAErB,MAAM2X,EAAWD,EAAYE,KAAK,IAClCzC,EAASwC,GAEL3X,GAASmX,EAAOlJ,QAAQnE,EAAQ,IAClCqN,EAAOlJ,QAAQnE,EAAQ,IAAI+N,OAE/B,GAGIJ,EAAkB,CAAC3N,EAAe9J,KACtC,IAAI8X,EAAU9X,EAGZ8X,EADgB,YAAdZ,EACQlX,EAAMqD,QAAQ,MAAO,IAErBrD,EAAMqD,QAAQ,aAAc,IAGxC,MAAM0U,EAAQD,EAAQ5O,MAAM,EAAGM,GAAQH,MAAM,IAEvCqO,EAAc,IAAIjN,GAExBsN,EAAMlL,QAAQ,CAAC2K,EAAMQ,KACflO,EAAQkO,EAAIxO,IACdkO,EAAY5N,EAAQkO,GAAKR,KAI7BrC,EAASuC,EAAYE,KAAK,KAC1BT,EAAOlJ,QAAQgK,KAAKC,IAAIpO,EAAQiO,EAAMvO,OAAQA,EAAS,KAAKqO,SAiC9D,OACElJ,EAAA,MAAA,CACE6D,UAAWC,GACXpI,KAAK,QAAO,aACD,0BACX8N,QAViBtD,IACnBA,EAAEC,iBACF2C,EAAgB,EAAG5C,EAAEuD,cAAcC,QAAQ,UAQrBzM,SAEnBnB,EAAOuD,IAAI,CAACwJ,EAAMQ,IACjBrJ,EAAA,QAAA,CAEEmC,IAAKwH,GAAOnB,EAAOlJ,QAAQ+J,GAAKM,EAChCjH,KAAK,OACL6F,UAAyB,YAAdA,EAA0B,UAAY,OACjD7B,aAAa,gBACbzY,KAAM,GAAGA,KAAQob,IACjBO,UAAW,EACXpa,MAAOqZ,EACPhF,UAAWC,GACX0C,SAAUN,GAAK0C,EAAaS,EAAGnD,EAAEO,OAAOjX,OACxCqa,UAAW3D,GAjDG,EAAC/K,EAAe+K,KACpC,GAAc,cAAVA,EAAElK,IAAqB,CACzBkK,EAAEC,iBAEF,MAAM4C,EAAc,IAAIjN,GAEpBA,EAAOX,IACT4N,EAAY5N,GAAS,GACrBqL,EAASuC,EAAYE,KAAK,MACjB9N,EAAQ,IACjB4N,EAAY5N,EAAQ,GAAK,GACzBqL,EAASuC,EAAYE,KAAK,KAC1BT,EAAOlJ,QAAQnE,EAAQ,IAAI+N,QAE/B,CAEc,cAAVhD,EAAElK,KAAuBb,EAAQ,GACnCqN,EAAOlJ,QAAQnE,EAAQ,IAAI+N,QAGf,eAAVhD,EAAElK,KAAwBb,EAAQN,EAAS,GAC7C2N,EAAOlJ,QAAQnE,EAAQ,IAAI+N,SA4BPY,CAAcT,EAAGnD,GAAE,aACvB,SAASmD,EAAI,KAXpBA,OCnGTU,GAA8B,KAClC,MAAM9E,EAAWC,IACXP,EAAWqF,KACX1L,eAAEA,GAAmBzB,KACrBoN,EAAqE,UAAtDtF,EAASrN,OAAoCuP,MAE3DqD,EAAUC,GAAe3J,EAAS,KAClC4J,EAAeC,GAAoB7J,EAAyB,OAC5D/R,EAAO6V,GAAY9D,EAAS,KAC5B5C,EAAS6C,GAAcD,GAAS,IAChC8J,EAAWC,GAAgB/J,EAAS,KACpCgK,EAAeC,GAAoBjK,EAAS,KAE7CH,EAAaH,KAuBbwK,EAAiBjb,UAGrB,GAFAgR,GAAW,IAEN2J,EAAe,CAClB,MAAM3b,MAAEA,GAAUwb,QACR5J,EAAWhK,oBAAoB6T,SAC/B7J,EAAWnK,eAAegU,GAEpC,GAAIzb,EACF6V,EAAS,4BACJ,CACL,GAAI2F,EAGF,aAFM3L,SACN2G,EAAS,KAIXoF,GAAiB,EACnB,CACF,CAEA5J,GAAW,IAmBPkK,EAAelb,UACnB8a,EAAa,SAjBO9a,WACpB6U,EAAS,IACT,MAAM7V,MAAEA,GAAUwb,QACR5J,EAAWjK,6BACXiK,EAAWpK,kBAEjBxH,EACF6V,EACE,8EAIFiG,EAAa,sCAMTK,GACNL,EAAa,sCA2Cf,OA1BAxK,EAAU,KACR,MAAM8K,EAAWC,YAAY,KAC3BL,EAAiBM,GAASA,EAAO,EAAIA,EAAO,EAAI,IAC/C,KAEH,MAAO,IAAMC,cAAcH,IAC1B,IAEH9K,EAAU,KAaJqK,IAAkBH,GAZLxa,WACf,MAAMhB,MAAEA,SAAgB4R,EAAW/J,kBAE/B7H,EACF6V,EACE,4FAIFW,EAASjD,KAIXiJ,IAED,CAACb,EAAeH,EAAahF,EAAU5E,IAGxCL,EAAA,MAAA,CAAK6D,UAAWC,GAAgB7G,SAC9B2G,EAAA,MAAA,CAAKC,UAAWC,GAAW7G,SAAA,CACzB+C,QAAI6D,UAAWC,GAAY7G,SAAA,6BAC3B+C,OAAG6D,UAAWC,0DAEbrV,GAASuR,EAAA,IAAA,CAAG6D,UAAWC,GAAY7G,SAAGxO,IACtC6b,GAAatK,EAAA,IAAA,CAAG6D,UAAWC,GAAc7G,SAAGqN,IAE7C1G,UAAMqC,SApHSxW,MAAOyW,IAI1B,GAHAA,EAAEC,iBACF7B,EAAS,IAEe,IAApB4F,EAASrP,OAAb,CAKA4F,GAAW,GACX,UACQiK,GACR,CAAE,MAGApG,EAAS,6BACX,SACE7D,GAAW,EACb,CAXA,MAFE6D,EAAS,+BA+GuBT,UAAWC,GAAW7G,SAAA,CAClD2G,EAAA,MAAA,CAAA3G,SAAA,CACE2G,WAAO2C,QAAQ,YAAY1C,UAAWC,GAAY7G,SAAA,CAAA,4BAnDrCxH,EAoD4B2U,GAnDhC,IAAb3U,EAA0BuK,EAAA,OAAA,CAAM6D,UAAU,sCAC7B,IAAbpO,EAA2BuK,EAAA,OAAA,CAAM6D,UAAU,mCACxC,WAiD4D,IACzDD,UAAMC,UAAWC,GAAY7G,SAAA,CAAA,qBA/CrBiO,EAgDuBV,EA3ClC,GAJGlB,KAAK6B,MAAMD,EAAU,IAC5BhT,WACAkT,SAAS,EAAG,SACJF,EAAU,IAAIhT,WAAWkT,SAAS,EAAG,cA+CxCpL,EAACsI,GAAQ,CAACzN,OAAQ,EAAGrL,MAAO0a,EAAU1D,SAAU2D,IAChDnK,EAAA,SAAA,CACE0C,KAAK,SACLqB,QAAS,IAAM4G,IACf9G,UAAWC,GAAa7G,SAAA,4BAM5B+C,EAAA,SAAA,CAAQ0C,KAAK,SAASmB,UAAWC,YAC9BlG,EAAU,eAAiB,sBAG9BoC,YACE0C,KAAK,SACLqB,QAAS,IAAMkB,EAAS,UACxBpB,UAAWC,GAAa7G,SAAA,0BApEf,IAACiO,EANGzV,GCjFnB4V,GAA8B,KAClC,MAAMpG,EAAWC,IACXP,EAAWqF,KACX1L,eAAEA,GAAmBzB,KACrBwD,EAAaH,MACb0B,iBAAEA,GAAqBD,KACvBsI,EAAqE,UAAtDtF,EAASrN,OAAoCuP,MAE3DjJ,EAAS6C,GAAcD,GAAS,IAChC8K,EAAUC,GAAe/K,EAAS,KAClCgL,EAAeC,GAAoBjL,EAAS,MAC5C/R,EAAO6V,GAAY9D,EAAS,KAC5B8J,EAAWC,GAAgB/J,EAAS,IA8E3C,OAPAT,EAAU,KACR,MAAM8K,EAAWC,YAAY,KAC3BW,EAAiBV,GAASA,EAAO,EAAIA,EAAO,EAAI,IAC/C,KAEH,MAAO,IAAMC,cAAcH,IAC1B,IAED7K,EAAA,MAAA,CAAK6D,UAAWC,GAAgB7G,SAC9B2G,EAAA,MAAA,CAAKC,UAAWC,GAAW7G,SAAA,CACzB+C,QAAI6D,UAAWC,GAAY7G,SAAA,sBAE3B+C,OAAG6D,UAAWC,wEAIbrV,GAASuR,EAAA,IAAA,CAAG6D,UAAWC,GAAY7G,SAAGxO,IACtC6b,GAAatK,EAAA,IAAA,CAAG6D,UAAWC,GAAc7G,SAAGqN,IAE7C1G,UAAMqC,SAtESxW,MAAOyW,IAI1B,GAHAA,EAAEC,iBACF7B,EAAS,IAEe,IAApBgH,EAASzQ,OAAb,CAKA4F,GAAW,GAEX,IACE,MAAMhS,MAAEA,GAAUwb,QACR5J,EAAW5J,oBAAoB6U,SAC/BjL,EAAW9J,eAAe+U,GAEpC,GAAI7c,EAEF,YADA6V,EAAS,wBAIX,GAAI2F,EAGF,aAFM3L,SACN2G,EAAS,KAIPrD,EACFqD,EAASjD,WAEH1D,IACN2G,EAAS,KAEb,CAAE,MAGA9Q,QAAQ1F,MAAM,kCACd6V,EAAS,uBACX,SACE7D,GAAW,EACb,CAjCA,MAFE6D,EAAS,+BAiEuBT,UAAWC,GAAW7G,SAAA,CAClD2G,EAAA,MAAA,CAAA3G,SAAA,CACE2G,WAAO2C,QAAQ,YAAY1C,UAAWC,GAAY7G,SAAA,CAAA,0BAEhD2G,EAAA,OAAA,CAAMC,UAAWC,GAAY7G,SAAA,CAC1B,IAAG,sBAhCEiO,EAiCwBM,EA5BnC,GAJGlC,KAAK6B,MAAMD,EAAU,IAC5BhT,WACAkT,SAAS,EAAG,SACJF,EAAU,IAAIhT,WAAWkT,SAAS,EAAG,cAgCxCpL,EAACsI,IACCzN,OAAQ,EACRrL,MAAO8b,EACP9E,SAAU+E,EACVhD,UAAU,SAGZvI,EAAA,SAAA,CAAQ0C,KAAK,SAASqB,QAxGVtU,UACpB6U,EAAS,IACTiG,EAAa,IAEb,MAAM9b,MAAEA,GAAUwb,QACR5J,EAAW7J,6BACX6J,EAAW/J,kBAEjB7H,EACF6V,EACE,gFAKJiG,EAAa,wCAyFyC1G,UAAWC,wCAK3D9D,YAAQ0C,KAAK,SAASmB,UAAWC,GAAegD,SAAUlJ,WACvDA,EAAU,eAAiB,sBAG9BoC,YACE0C,KAAK,SACLqB,QAAS,IAAMkB,EAAS,UACxBpB,UAAWC,GAAa7G,SAAA,0BAvDf,IAACiO,48DC9EtB,MAAMQ,GAA4B,KAChC,MAAOC,GAAgBC,IACjB3G,EAAWC,IACXpO,EAAQ6U,EAAa1Z,IAAI,UAExBxD,EAAO6V,GAAY9D,EAAS,KAC5BqL,EAAYC,GAAiBtL,EAAS,IAEvCH,EAAaH,MACb5B,eAAEA,GAAmBzB,KAiE3B,OA/DAkD,EAAU,KACR,IAAIgM,GAAU,EACVC,EAAmC,KACnCC,EAAwD,KAkD5D,MAhDexc,WACb,IAAKqH,EAKH,OAJIiV,GACFzH,EAAS,wCAEXnQ,QAAQ1F,MAAM,8BAIhB,MAAMA,MAAEA,SAAgB4R,EAAWxJ,gBAAgBC,GAEnD,GAAIrI,EAKF,OAJA0F,QAAQ1F,MAAM,+BACVsd,GACFzH,EAAS,iCAQPhG,IAEDyN,IAILC,EAAU,IAAIE,iBAAiB,iBAE/BF,EAAQG,YAAY,CAClBzJ,KAAM,4BAGRoJ,EACE,gFAGFG,EAAkBG,WAAW,KACtBL,GAIL9G,EAAS,MACR,OAELoH,GAEO,KACLN,GAAU,EACVC,GAASM,QAELL,GACFM,aAAaN,KAGhB,CAACnV,EAAOuJ,EAAY4E,EAAU3G,IAG/B0B,EAAA,MAAA,CAAK6D,UAAWC,GAAOmD,UAAShK,SAC9B2G,EAAA,MAAA,CAAKC,UAAWC,GAAOoD,KAAIjK,SAAA,CACzB+C,EAAA,KAAA,CAAI6D,UAAWC,GAAOqD,MAAKlK,SAAA,yBAE3B2G,EAAA,MAAA,CAAKC,UAAWC,GAAO0I,oBAAmBvP,SAAA,EACtC4O,IAAepd,GAASuR,EAAA,MAAA,CAAK6D,UAAWC,GAAO2I,UAEhDZ,GACC7L,EAAA,MAAA,CAAK6D,UAAWC,GAAO4I,YAAWzP,SAChC+C,EAAA,MAAA,CACE2M,QAAQ,YACR9I,UAAWC,GAAO8I,UAClBjE,KAAK,OACLkE,OAAO,eACPC,YAAY,IAAG7P,SAEf+C,EAAA,OAAA,CAAM+M,EAAE,wBAKZlB,IAAepd,GACfuR,EAAA,IAAA,CAAG6D,UAAWC,GAAOkJ,WAAU/P,SAAA,4DAKhC4O,GACC7L,EAAA,IAAA,CAAG6D,UAAWC,GAAOmJ,sDAGtBxe,GAASuR,EAAA,IAAA,CAAG6D,UAAWC,GAAOrV,MAAKwO,SAAGxO,aCvG3Cye,GAA8C,CAClD/e,oBACE,0HACFC,yBACE,4GACFC,sBACE,4GAGE8e,GAA0B,KAC9B,MAAM9V,iBAAEA,GAAqBwF,KACvBoI,EAAWC,KACVyG,GAAgBC,KAChBnd,EAAO6V,GAAY9D,EAAS,IAC7B4M,EAAa3E,GAAO,GA2B1B,OAzBA1I,EAAU,KACR,GAAIqN,EAAW9N,QAAS,OACxB8N,EAAW9N,SAAU,EAErB,MAAM/Q,EAAOod,EAAa1Z,IAAI,QACxBqF,EAAQqU,EAAa1Z,IAAI,SACzBkF,EAAasN,eAAevI,QAAQ8H,IAErCzV,GAAS+I,GAAUH,EAKnBE,EAAiB,CAAEF,aAAY5I,OAAM+I,UAASiN,KAAK,EAAG9V,MAAO4e,MAChE,GAAIA,EAAa,CACf,MAAM9e,EAAOC,EAAkB6e,GAE/B,YADA/I,EAAS/V,EAAO2e,GAAY3e,GAlCd,mDAoChB,CAEAkW,eAAe6I,WAAWtJ,IAC1BiB,EAAS,OAZTX,EAAS,uDAcV,CAACjN,EAAkB4N,EAAU0G,IAG9B/H,EAAA,MAAA,CAAKC,UAAWC,GAAOmD,UAAShK,SAAA,CAC9B+C,EAAA,KAAA,CAAI6D,UAAWC,GAAOqD,MAAKlK,SACxBxO,EAAQ,iBAAmB,0BAE7BA,GACCmV,EAAAoC,EAAA,CAAA/I,SAAA,CACE+C,EAAA,IAAA,CAAA/C,SAAIxO,IACJuR,EAAA,SAAA,CAAQ0C,KAAK,SAASqB,QAAS,IAAMkB,EAAS,UAAShI,SAAA,uyFCpDjE,MAAMsQ,GAA0B,KAC9B,MAAMjP,eAAEA,GAAmBzB,KACrBoI,EAAWC,IACXP,EAAWqF,IACX3J,EAAaH,KAEblB,EAAa2F,EAASrN,OAAO0H,YAE5BwO,EAAUC,GAAejN,EAAS,IAEzCT,EAAU,KACR,MAAM2N,EAAQ5C,YAAY,KACxB2C,EAAYE,GAAMA,EAAI,EAAIA,EAAI,EAAI,IACjC,KAEH,MAAO,IAAM3C,cAAc0C,IAC1B,IAEH,MAWME,EAAqBC,EAAYpe,UACrC,MAAMS,KAAEA,EAAIzB,MAAEA,SAAgB4R,EAAWzJ,iBAEzC,OAAQnI,GAA2B,YAAlByB,GAAMvC,SACtB,CAAC0S,IAmCJ,OAjCAN,EAAU,KACR,MAAMiM,EAAU,IAAIE,iBAAiB,iBAWrC,OATAF,EAAQ8B,UAAYre,MAAMse,IACC,4BAArBA,EAAM7d,MAAMwS,YACJkL,YACFtP,IACN2G,EAAS,OAKR,KACL+G,EAAQM,UAET,CAACsB,EAAoB3I,EAAU3G,IAElCyB,EAAU,KACR,MAAM8K,EAAWC,YAAYrb,UAC3B,UACYme,YACFtP,IACN2G,EAAS,KAEb,CAAE,MAGF,GACC,KAEH,MAAO,IAAM+F,cAAcH,IAC1B,CAAC+C,EAAoBtP,EAAgB2G,IAGtCjF,EAAA,MAAA,CAAK6D,UAAWC,GAAgB7G,SAC9B2G,EAAA,MAAA,CAAKC,UAAWC,aACdF,EAAA,MAAA,CAAKC,UAAWC,GAAkB7G,SAAA,CAChC+C,SAAK6D,UAAWC,KAEhBF,EAAA,MAAA,CACEC,UAAWC,GACX6I,QAAQ,YACRhE,KAAK,OACLkE,OAAO,eACPC,YAAY,MAAK7P,SAAA,CAEjB+C,EAAA,OAAA,CAAM+M,EAAE,kBACR/M,EAAA,OAAA,CAAM+M,EAAE,uBAIZ/M,EAAA,KAAA,CAAI6D,UAAWC,GAAc7G,SAAA,qBAE7B+C,EAAA,IAAA,CAAG6D,UAAWC,GAAc7G,SAAA,0EAI3B+B,GAAcgB,EAAA,MAAA,CAAK6D,UAAWC,YAAoB9E,IAEnDgB,EAAA,IAAA,CAAG6D,UAAWC,GAAiB7G,SAAA,4DAI/B+C,EAAA,IAAA,CAAG6D,UAAWC,GAAiB7G,SAAA,mFAI/B2G,EAAA,MAAA,CAAKC,UAAWC,GAAc7G,SAAA,CAC5B+C,EAAA,SAAA,CACE6D,UAAWC,GACXgD,SAAU0G,EAAW,EACrBzJ,QAxFKtU,UACT+d,EAAW,UAETnN,EAAW3J,mBAEjB+W,EAAY,MAmFWxQ,SAAA,gBAKhBuQ,EAAW,GACV5J,EAAA,MAAA,CAAKC,UAAWC,GAAe7G,SAAA,CAAA,gBAAgBuQ,SAGjDxN,EAAA,SAAA,CAAQ6D,UAAWC,GAAmBC,QAAS,IAAMkB,EAAS,UAAShI,SAAA,mCC9GpE+Q,GAAa,IACxBpK,EAACqK,aACCjO,EAACkO,EAAK,CAACC,KAAMnM,GAAsBoM,QAASpO,EAACgF,GAAK,CAAA,KAClDhF,EAACkO,EAAK,CAACC,KAAMnM,GAA6BoM,QAASpO,EAAC+G,GAAY,CAAA,KAChE/G,EAACkO,EAAK,CAACC,KAAMnM,GAA+BoM,QAASpO,EAAC+J,GAAiB,CAAA,KACvE/J,EAACkO,EAAK,CAACC,KAAMnM,GAA+BoM,QAASpO,EAACqL,SACtDrL,EAACkO,EAAK,CAACC,KAAMnM,GAAgCoM,QAASpO,EAAC0L,SACvD1L,EAACkO,GAAMC,KAAMnM,GAA8BoM,QAASpO,EAACmN,GAAa,CAAA,KAClEnN,EAACkO,EAAK,CAACC,KAAMnM,GAAgCoM,QAASpO,EAACsH,GAAmB,CAAA,KAC1EtH,EAACkO,EAAK,CAACC,KAAMnM,GAA8BoM,QAASpO,EAACuN,GAAa,CAAA,KAClEvN,EAACkO,EAAK,CAACC,KAAK,IAAIC,QAASpO,EAACqO,GAASC,GAAItM,GAAsBtN","x_google_ignoreList":[15]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seamless-auth/react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "A drop-in authentication solution for modern React applications.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"typescript-eslint": "^8.46.1"
|
|
103
103
|
},
|
|
104
104
|
"dependencies": {
|
|
105
|
-
"@seamless-auth/types": "^0.
|
|
105
|
+
"@seamless-auth/types": "^0.16.0",
|
|
106
106
|
"@simplewebauthn/browser": "^13.1.0",
|
|
107
107
|
"eslint-plugin-license-header": "^0.9.0",
|
|
108
108
|
"libphonenumber-js": "^1.12.7",
|