authhero 9.22.0 → 9.22.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/authhero.cjs
CHANGED
|
@@ -498,7 +498,7 @@ ${a?`
|
|
|
498
498
|
padding-bottom: calc(54px + max(6px, env(safe-area-inset-bottom, 6px)));
|
|
499
499
|
}
|
|
500
500
|
}`}
|
|
501
|
-
`}function R(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function zre(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`).replace(/'/g,`\\'`).replace(/\(/g,`\\(`).replace(/\)/g,`\\)`).replace(/\n/g,``).replace(/\r/g,``).replace(/\t/g,``)}function bf(e){if(!e)return``;try{let t=new URL(e);return[`http:`,`https:`,`data:`].includes(t.protocol)?R(e):``}catch{return e.startsWith(`/`)?R(e):``}}function Bre(e){if(e){if(e.startsWith(`/`))return/^\/[/\\]/.test(e)?void 0:e;try{let t=new URL(e);return t.protocol===`https:`||t.protocol===`http:`?e:void 0}catch{return}}}function xf(e){return e&&/^(#[0-9a-fA-F]{3,8}|rgba?\([^)]+\)|hsla?\([^)]+\)|[a-zA-Z]+)$/.test(e.trim())?e.trim():``}function Vre(e){if(!e)return`#f5f5f5`;if(typeof e==`string`)return xf(e)||`#f5f5f5`;let{type:t,start:n,end:r,angle_deg:i}=e;if(t===`linear-gradient`&&n&&r){let e=xf(n),t=xf(r);if(e&&t)return`linear-gradient(${typeof i==`number`?i:180}deg, ${e}, ${t})`}if(n){let e=xf(n);if(e)return e}return`#f5f5f5`}function Sf(e,t){if(e?.background_image_url){let t=bf(e.background_image_url);if(t)return`${xf(e.background_color)||`#f5f5f5`} url("${zre(t)}") center / cover no-repeat`}if(e?.background_color){let t=xf(e.background_color);if(t)return t}return Vre(t)}var Hre=(e,t)=>{try{return t(e)}catch{return e.replace(/(?:%[0-9A-Fa-f]{2})+/g,e=>{try{return t(e)}catch{return e}})}},Ure=decodeURIComponent,Cf=/^[\w!#$%&'*.^`|~+-]+$/,Wre=/^[ !#-:<-[\]-~]*$/,wf=e=>{let t=0,n=e.length;for(;t<n;){let n=e.charCodeAt(t);if(n!==32&&n!==9)break;t++}for(;n>t;){let t=e.charCodeAt(n-1);if(t!==32&&t!==9)break;n--}return t===0&&n===e.length?e:e.slice(t,n)},Tf=(e,t)=>{if(t&&e.indexOf(t)===-1)return{};let n=e.split(`;`),r=Object.create(null);for(let e of n){let n=e.indexOf(`=`);if(n===-1)continue;let i=wf(e.substring(0,n));if(t&&t!==i||!Cf.test(i)||i in r)continue;let a=wf(e.substring(n+1));if(a.startsWith(`"`)&&a.endsWith(`"`)&&(a=a.slice(1,-1)),Wre.test(a)&&(r[i]=a.indexOf(`%`)===-1?a:Hre(a,Ure),t))break}return r},Gre=(e,t,n={})=>{if(!Cf.test(e))throw Error(`Invalid cookie name`);let r=`${e}=${t}`;if(e.startsWith(`__Secure-`)&&!n.secure)throw Error(`__Secure- Cookie must have Secure attributes`);if(e.startsWith(`__Host-`)){if(!n.secure)throw Error(`__Host- Cookie must have Secure attributes`);if(n.path!==`/`)throw Error(`__Host- Cookie must have Path attributes with "/"`);if(n.domain)throw Error(`__Host- Cookie must not have Domain attributes`)}for(let e of[`domain`,`path`,`sameSite`,`priority`])if(n[e]&&/[;\r\n]/.test(n[e]))throw Error(`${e} must not contain ";", "\\r", or "\\n"`);if(n&&typeof n.maxAge==`number`&&n.maxAge>=0){if(n.maxAge>3456e4)throw Error(`Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration.`);r+=`; Max-Age=${n.maxAge|0}`}if(n.domain&&n.prefix!==`host`&&(r+=`; Domain=${n.domain}`),n.path&&(r+=`; Path=${n.path}`),n.expires){if(n.expires.getTime()-Date.now()>3456e7)throw Error(`Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future.`);r+=`; Expires=${n.expires.toUTCString()}`}if(n.httpOnly&&(r+=`; HttpOnly`),n.secure&&(r+=`; Secure`),n.sameSite&&(r+=`; SameSite=${n.sameSite.charAt(0).toUpperCase()+n.sameSite.slice(1)}`),n.priority&&(r+=`; Priority=${n.priority.charAt(0).toUpperCase()+n.priority.slice(1)}`),n.partitioned){if(!n.secure)throw Error(`Partitioned Cookie must have Secure attributes`);r+=`; Partitioned`}return r},Ef=(e,t,n)=>(t=encodeURIComponent(t),Gre(e,t,n)),Kre=(e,t,n)=>{let r=e.req.raw.headers.get(`Cookie`);if(typeof t==`string`){if(!r)return;let e=t;return n===`secure`?e=`__Secure-`+t:n===`host`&&(e=`__Host-`+t),Tf(r,e)[e]}return r?Tf(r):{}},qre=(e,t,n)=>{let r;return r=n?.prefix===`secure`?Ef(`__Secure-`+e,t,{path:`/`,...n,secure:!0}):n?.prefix===`host`?Ef(`__Host-`+e,t,{...n,path:`/`,secure:!0,domain:void 0}):Ef(e,t,{path:`/`,...n}),r},Df=(e,t,n,r)=>{let i=qre(t,n,r);e.header(`Set-Cookie`,i,{append:!0})},Of=`mv14afuz`,Jre=c({common:()=>kf,consent:()=>Af,default:()=>Yre,invitation:()=>jf,login:()=>Mf,mfa:()=>Nf,organizations:()=>Ff,passkeys:()=>Pf,signup:()=>If,status:()=>Lf}),kf={common:{alertListTitle:`Upozornění`,backText:`Vrátit se zpět`,backToLoginText:`Zpět na přihlášení`,cancelText:`Zrušit`,closeText:`Zavřít`,contactSupportText:`Potřebujete pomoc?`,continueText:`Pokračovat`,copyrightText:"© ${currentYear} ${companyName}",errorText:`Něco se pokazilo. Zkuste to prosím znovu.`,hidePasswordText:`Skrýt heslo`,loadingText:`Načítání...`,orText:`nebo`,privacyPolicyText:`Zásady ochrany osobních údajů`,showPasswordText:`Zobrazit heslo`,termsOfServiceText:`Podmínky služby`,termsShortText:`Podmínky`,tryAgainText:`Zkusit znovu`},account:{title:`Nastavení účtu`,description:`Spravujte svůj účet`,editProfileLabel:`Upravit profil`,editProfileDetail:`Jméno, e-mail, telefonní číslo a fotografie`,securityLabel:`Nastavení zabezpečení`,securityDetail:`Vícefaktorové ověření`,securityMethodsCountOne:"${count} nastavená metoda",securityMethodsCount:"Nastavené metody: ${count}",passkeysLabel:`Passkeys`,passkeysDetail:`Přihlášení bez hesla`,passkeysCountOne:"${count} registrovaný passkey",passkeysCount:"Registrované passkeys: ${count}",linkedAccountsLabel:`Propojené účty`,linkedAccountsDetail:`Propojit účty sociálních sítí`,linkedAccountsCountOne:"${count} propojený účet",linkedAccountsCount:"Propojené účty: ${count}",deleteAccountLabel:`Smazat účet`,deleteAccountDetail:`Trvale smazat váš účet a data`,logoutText:`Odhlásit se`},"account-profile":{title:`Upravit profil`,description:`Aktualizujte své osobní údaje`,givenNameLabel:`Jméno`,familyNameLabel:`Příjmení`,nicknameLabel:`Přezdívka`,phoneNumberLabel:`Telefonní číslo`,pictureLabel:`URL profilové fotografie`,buttonText:`Uložit změny`,backToAccountText:`Zpět na účet`,updateFailed:`Profil se nepodařilo aktualizovat`},"account-delete":{title:`Smazat účet`,description:`Trvale smazat váš účet`,warningTitle:`Upozornění: Tato akce je nevratná`,warningText:`Všechna vaše data budou trvale smazána, včetně profilu, propojených účtů a metod ověření. Tuto akci nelze vrátit zpět.`,confirmationLabel:'Pro potvrzení napište "${confirmationWord}"',buttonText:`Smazat můj účet`,cancelText:`Zrušit`,confirmationError:'Pro potvrzení napište "${confirmationWord}"',deleteSuccess:`Váš účet byl smazán`,deleteFailed:`Účet se nepodařilo smazat`},"account-linked":{title:`Propojené účty`,description:`Spravujte své propojené účty`,noLinkedAccounts:`Žádné propojené účty.`,unlinkButtonText:`Odpojit`,backToAccountText:`Zpět na účet`,unlinkSuccess:`Účet byl odpojen`,unlinkFailed:`Účet se nepodařilo odpojit`},"account-security":{title:`Nastavení zabezpečení`,description:`Spravujte své metody dvoufázového ověření`,noEnrollments:`Nemáte nastavené žádné metody dvoufázového ověření.`,addedOn:"Přidáno ${date}",removeButtonText:`Odebrat`,addTotpLabel:`Přidat ověřovací aplikaci`,addTotpDetail:`Použijte aplikaci, jako je Google Authenticator nebo Authy`,addSmsLabel:`Přidat telefon (SMS)`,addSmsDetail:`Dostávejte ověřovací kódy pomocí SMS`,typeTotp:`Ověřovací aplikace`,typePhone:`Telefon (SMS)`,typeEmail:`E-mail`,typePush:`Push oznámení`,typeWebauthn:`Bezpečnostní klíč`,backToAccountText:`Zpět na účet`,enrollmentNotFound:`Metoda nebyla nalezena`,removeSuccess:`Metoda ověření byla odebrána`,removeFailed:`Metodu ověření se nepodařilo odebrat`},"account-passkeys":{title:`Passkeys`,description:`Spravujte své passkeys pro přihlášení bez hesla`,noPasskeysText:`Nemáte zaregistrované žádné passkeys.`,defaultPasskeyName:`Passkey`,syncedBadgeText:`Synchronizováno`,addedOnText:"Přidáno ${date}",renameButtonText:`Přejmenovat`,removeButtonText:`Odebrat`,renamePromptText:`Zadejte nový název tohoto passkey:`,addPasskeyButtonText:`Přidat passkey`,backToAccountText:`Zpět na účet`,logoutText:`Odhlásit se`,passkeyNotFoundText:`Passkey nebyl nalezen`,passkeyRemovedText:`Passkey byl odebrán`,removeFailedText:`Passkey se nepodařilo odebrat`,invalidNameText:`Název musí mít 1 až 64 znaků`,passkeyRenamedText:`Passkey byl přejmenován`,renameFailedText:`Passkey se nepodařilo přejmenovat`,startRegistrationFailedText:`Registraci passkey se nepodařilo zahájit`,missingCredentialText:`Chybí data passkey`,challengeExpiredText:`Platnost požadavku vypršela. Zkuste to znovu.`,invalidCredentialText:`Neplatná data passkey`,verificationFailedText:`Ověření passkey se nezdařilo`,passkeyAddedText:`Passkey byl úspěšně přidán`,registrationFailedText:`Registrace passkey se nezdařila. Zkuste to znovu.`},"account-mfa-phone-enrollment":{title:`Nastavit telefon (SMS)`,description:`Zadejte své telefonní číslo, abyste dostávali ověřovací kódy přes SMS.`,phoneLabel:`Telefonní číslo`,sendCodeButtonText:`Odeslat ověřovací kód`,backToSecurityText:`Zpět na nastavení zabezpečení`,verifyTitle:`Ověřit telefonní číslo`,verifyDescription:`Zadejte ověřovací kód zaslaný na váš telefon.`,codeSentText:"Ověřovací kód byl odeslán na ${phoneNumber}",codeSentToYourPhoneText:`Ověřovací kód byl odeslán na váš telefon`,codeLabel:`Ověřovací kód`,codePlaceholder:`Zadejte ověřovací kód`,verifyButtonText:`Ověřit a zapnout`,noPhoneText:`Zadejte své telefonní číslo`,invalidPhoneText:`Zadejte platné telefonní číslo`,sendCodeFailedText:`Ověřovací kód se nepodařilo odeslat. Zkuste to znovu.`,noCodeText:`Zadejte ověřovací kód`,invalidCodeText:`Neplatný kód. Zkuste to znovu.`,sessionInvalidText:`Něco se pokazilo. Začněte registraci znovu.`},"account-mfa-totp-enrollment":{title:`Nastavit ověřovací aplikaci`,description:`Naskenujte QR kód ověřovací aplikací a poté níže zadejte ověřovací kód.`,qrCodeAltText:`QR kód`,manualKeyText:`Nebo zadejte tento klíč ručně:`,codeLabel:`Ověřovací kód`,codePlaceholder:`Zadejte šestimístný kód`,verifyButtonText:`Ověřit a zapnout`,backToSecurityText:`Zpět na nastavení zabezpečení`,noCodeText:`Zadejte ověřovací kód`,invalidCodeText:`Neplatný kód. Zkuste to znovu.`,verificationFailedText:`Ověření se nezdařilo. Zkuste to znovu.`}},Af={consent:{buttonText:`Přijmout`,cancelButtonText:`Zamítnout`,description:"${clientName} žádá o přístup k vašemu účtu",pageTitle:"Autorizace | ${clientName}",scopesTitle:"Tímto povolíte ${clientName}:",title:"Autorizovat ${clientName}",accessAccountText:"požaduje přístup k vašemu účtu ${tenantName} jako ${userName}.",notAuthenticated:`Pro pokračování se musíte přihlásit.`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,consentStorageNotConfigured:`Váš souhlas se nepodařilo uložit. Kontaktujte provozovatele aplikace.`},"connect-consent":{title:`Připojit aplikaci`,description:"Povolit ${domain} jednat vaším jménem?",connectAccountText:"se chce připojit k vašemu účtu ${tenantName} jako ${userName}.",workspaceLabel:`Pracovní prostor:`,apiLabel:`Pro API:`,permissionsLabel:`Požadovaná oprávnění:`,localDevBadge:`Lokální vývoj`,localDevTooltip:`Tento web je lokální vývojové prostředí, nikoli produkční. Připojení nebude fungovat mimo tento počítač nebo síť.`,buttonText:`Připojit`,cancelText:`Zrušit`,notAuthenticated:`Pro pokračování se musíte přihlásit.`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,workspaceSelectionRequired:`Nejprve vyberte pracovní prostor.`,noWorkspaceAccess:`K tomuto pracovnímu prostoru nemáte přístup`,workspaceNotFound:`Pracovní prostor nebyl nalezen`},"connect-tenant-select":{title:`Vyberte pracovní prostor`,description:"Vyberte, ke kterému pracovnímu prostoru ${tenantName} se má ${domain} připojit.",noWorkspacesDescription:`Žádné dostupné pracovní prostory`,noWorkspacesText:"Nemáte přístup k žádnému pracovnímu prostoru ${tenantName}. Požádejte správce o pozvánku.",cancelText:`Zrušit`,notAuthenticated:`Pro pokračování se musíte přihlásit.`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,noWorkspaceSelected:`Vyberte pracovní prostor.`,noWorkspaceAccess:`K tomuto pracovnímu prostoru nemáte přístup`}},jf={invitation:{acceptButtonText:`Přijmout pozvánku`,description:"${inviterName} vás pozval(a), abyste se připojili k ${organizationName} na ${clientName}",pageTitle:"Pozvánka | ${clientName}",title:`Byli jste pozváni`,defaultOrganizationName:`organizaci`,acceptFailed:`Nastavení účtu se nepodařilo dokončit. Zkuste to znovu.`}},Mf={login:{alertListTitle:`Upozornění`,buttonText:`Pokračovat`,description:"Přihlaste se k ${clientName}.",editEmailText:`Upravit`,emailPlaceholder:`E-mailová adresa`,enterACodeBtn:`Přihlásit se kódem`,enterACodeShortBtn:`Kód`,federatedConnectionButtonText:"Pokračovat s ${connectionName}",lastUsedText:`Naposledy použité`,footerLinkText:`Zaregistrujte se`,footerText:`Nemáte účet?`,forgotPasswordText:`Zapomněli jste heslo?`,hidePasswordText:`Skrýt heslo`,invalidEmail:`Neplatný e-mail`,invalidIdentifier:`Neplatný e-mail nebo uživatelské jméno`,invitationDescription:"Přihlaste se pro přijetí pozvánky od ${inviterName} k připojení k ${companyName} na ${clientName}.",invitationTitle:`Byli jste pozváni!`,logoAltText:"${companyName}","no-email":`Zadejte prosím e-mailovou adresu`,"no-password":`Heslo je povinné`,pageTitle:"Přihlášení | ${clientName}",passwordLoginNotAvailable:`Přihlášení heslem není k dispozici`,passwordPlaceholder:`Heslo`,phonePlaceholder:`Telefonní číslo`,separatorText:`nebo`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,showPasswordText:`Zobrazit heslo`,signupActionLinkText:"${footerLinkText}",signupActionText:"${footerText}",title:`Vítejte`,tooManyFailedLogins:`Příliš mnoho neúspěšných pokusů o přihlášení. Zkuste to prosím později.`,unverifiedEmail:`Před přihlášením prosím ověřte svou e-mailovou adresu`,userAccountDoesNotExist:`Uživatelský účet neexistuje`,usernamePlaceholder:`Uživatelské jméno nebo e-mailová adresa`,usernameTooLong:"Uživatelské jméno musí mít nejvýše ${max} znaků",usernameTooShort:"Uživatelské jméno musí mít alespoň ${min} znaků",wrongCredentials:`Nesprávné uživatelské jméno nebo heslo`,passkeyButtonText:`Přihlásit se pomocí passkey`,userBlocked:`Váš účet byl zablokován po několika po sobě jdoucích neúspěšných pokusech o přihlášení.`,tooManyRequests:`Příliš mnoho pokusů. Chvíli počkejte a zkuste to znovu.`,unexpectedError:`Něco se pokazilo. Zkuste to znovu.`}},Nf={mfa:{backupCodeText:`Použít záložní kód`,description:`Zvolte metodu ověření`,pageTitle:"Vícefaktorové ověření | ${clientName}",title:`Ověřte svou identitu`}},Pf={"passkey-enrollment-nudge":{title:`Zabezpečte svůj účet pomocí passkey`,description:`Passkey používají biometrii nebo PIN vašeho zařízení k rychlejšímu a bezpečnějšímu přihlášení.`,enrollButtonText:`Nastavit passkey`,snoozeButtonText:`Možná později`,optOutLinkText:`Nezobrazovat znovu`,pageTitle:"Nastavení Passkey | ${clientName}"},"passkey-enrollment":{title:`Vytvořte svůj passkey`,description:`Postupujte podle pokynů prohlížeče a vytvořte passkey pro tento účet.`,errorMessage:`Vytvoření passkey se nezdařilo. Zkuste to prosím znovu.`,cancelLinkText:`Prozatím přeskočit`,retryButtonText:`Zkusit znovu`,enrollmentComplete:`Váš passkey byl úspěšně nastaven. Tuto stránku můžete zavřít.`,pageTitle:"Vytvoření Passkey | ${clientName}",sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,enrollmentRequired:`Pro pokračování musíte nastavit passkey.`,challengeExpired:`Platnost požadavku vypršela. Zkuste to znovu.`},"passkey-challenge":{title:`Přihlásit se pomocí passkey`,description:`Postupujte podle pokynů prohlížeče k ověření vaší identity.`,errorMessage:`Ověření pomocí passkey selhalo. Zkuste to prosím znovu.`,cancelLinkText:`Zpět na přihlášení`,retryButtonText:`Zkusit znovu`,pageTitle:"Přihlášení pomocí passkey | ${clientName}",sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`}},Ff={organizations:{description:`Vyberte, ke které organizaci se chcete přihlásit`,pageTitle:"Výběr organizace | ${clientName}",searchPlaceholder:`Hledat organizace`,title:`Vyberte svou organizaci`}},If={signup:{buttonText:`Pokračovat`,confirmPasswordPlaceholder:`Potvrzení hesla`,description:`Zaregistrujte se a pokračujte`,"email-already-exists":`Tento e-mail je již zaregistrován`,emailPlaceholder:`E-mailová adresa`,federatedConnectionButtonText:"Pokračovat s ${connectionName}",hidePasswordText:`Skrýt heslo`,"invalid-email-format":`Neplatný e-mail`,loginActionLinkText:`Přihlásit se`,loginActionText:`Už máte účet?`,"no-email":`Zadejte prosím e-mailovou adresu`,"no-password":`Heslo je povinné`,"no-username":`Uživatelské jméno je povinné`,pageTitle:"Registrace | ${clientName}",passwordPlaceholder:`Heslo`,passwordsDidntMatch:`Hesla se neshodují`,phonePlaceholder:`Telefonní číslo`,privacyPolicyLinkText:`Zásady ochrany osobních údajů`,separatorText:`nebo`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,showPasswordText:`Zobrazit heslo`,termsOfServiceLinkText:`Podmínky služby`,termsText:`Registrací souhlasíte s našimi`,title:`Vytvořte svůj účet`,"username-already-exists":`Toto uživatelské jméno je již obsazeno`,usernamePlaceholder:`Uživatelské jméno`,verifyEmailText:`Zkontrolujte prosím svůj e-mail pro ověření účtu`,confirmPasswordRequired:`Potvrďte prosím své heslo`,createUserFailed:`Účet se nepodařilo vytvořit. Zkuste to znovu.`}},Lf={status:{continueButtonText:`Pokračovat`,errorTitle:`Chyba`,pageTitle:"Stav | ${clientName}",successTitle:`Hotovo`,title:`Stav`}},Yre={common:kf,consent:Af,"device-flow":{"device-flow":{buttonText:`Pokračovat`,codePlaceholder:`Zadejte kód`,description:`Zadejte kód zobrazený na vašem zařízení`,"expired-code":`Platnost kódu vypršela`,"invalid-code":`Zadaný kód je neplatný`,pageTitle:"Aktivace zařízení | ${clientName}",title:`Aktivujte své zařízení`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Přihlásit se`,codeLabel:`Ověřovací kód`,codePlaceholder:`Zadejte kód`,defaultDescription:`Zadejte ověřovací kód zaslaný na váš e-mail`,description:"Odeslali jsme kód na ${email}","invalid-code":`Neplatný kód`,noCode:`Zadejte prosím ověřovací kód`,pageTitle:"Zadejte kód | ${clientName}",resendText:`Opětovné odeslání kódu`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,title:`Zkontrolujte svůj e-mail`,unexpectedError:`Došlo k neočekávané chybě`,usePasswordText:`Přihlásit se heslem`,tooManyRequests:`Příliš mnoho pokusů. Chvíli počkejte a zkuste to znovu.`}},"email-verification":{"email-verification":{description:"Odeslali jsme e-mail na ${email}",linkAlreadyUsed:`Tento ověřovací odkaz už byl použit. Vyžádejte si nový.`,linkInvalid:`Tento ověřovací odkaz je neplatný.`,linkInvalidOrExpired:`Tento ověřovací odkaz je neplatný nebo vypršel. Vyžádejte si nový.`,linkInvalidTitle:`Ověřovací odkaz není platný`,linkWrongType:`Tento odkaz nelze použít k ověření e-mailové adresy.`,pageTitle:"Ověření e-mailu | ${clientName}",resendText:`Opětovné odeslání kódu`,successDescription:`Váš e-mail byl úspěšně ověřen.`,successTitle:`E-mail ověřen`,title:`Ověření e-mailu`},"email-verification-code":{buttonText:`Pokračovat`,codeLabel:`Ověřovací kód`,codePlaceholder:`Zadejte 6místný kód`,defaultDescription:`Zadejte kód, který jsme vám poslali e-mailem, abyste ověřili svou adresu a mohli pokračovat.`,description:"Poslali jsme kód na ${email}. Zadejte jej pro ověření své e-mailové adresy a pokračujte.",invalidCode:`Zadaný kód je neplatný nebo vypršel`,noCode:`Zadejte ověřovací kód`,pageTitle:"Ověření e-mailu | ${clientName}",resendFailed:`Kód se nepodařilo znovu odeslat. Zkuste to prosím znovu.`,resendSuccess:`Na váš e-mail byl odeslán nový kód`,resendText:`Znovu odeslat kód`,sessionExpired:`Vaše relace vypršela. Zkuste to prosím znovu.`,title:`Ověřte svůj e-mail`,tooManyAttempts:`Příliš mnoho pokusů. Zkuste to prosím později.`},"email-verification-link-sent":{defaultDescription:`Poslali jsme vám e-mailem ověřovací odkaz. Kliknutím na odkaz ověřte svou adresu a poté se znovu přihlaste.`,description:"Poslali jsme ověřovací odkaz na ${email}. Kliknutím na odkaz ověřte svou adresu a poté se znovu přihlaste.",pageTitle:"Ověření e-mailu | ${clientName}",resendFailed:`E-mail se nepodařilo znovu odeslat. Zkuste to prosím znovu.`,resendSuccess:`Byl odeslán nový ověřovací e-mail`,resendText:`Znovu odeslat e-mail`,title:`Zkontrolujte svůj e-mail`}},invitation:jf,login:Mf,"login-id":{"login-id":{alertListTitle:`Upozornění`,"auth0-users-validation":`Něco se pokazilo, zkuste to prosím později`,"authentication-failure":`Omlouváme se, při pokusu o přihlášení se něco pokazilo`,buttonText:`Pokračovat`,"captcha-client-failure":`Nepodařilo se načíst bezpečnostní výzvu. Zkuste to prosím znovu. (Kód chyby: #{errorCode})`,"captcha-validation-failure":`Omlouváme se, při ověřování captcha došlo k chybě. Zkuste to prosím znovu.`,captchaCodePlaceholder:`Zadejte kód zobrazený výše`,"custom-script-error-code":`Něco se pokazilo, zkuste to prosím později.`,description:"Přihlaste se k ${clientName}.",editEmailText:`Upravit`,emailPlaceholder:`E-mailová adresa`,federatedConnectionButtonText:"Pokračovat s ${connectionName}",lastUsedText:`Naposledy použité`,footerLinkText:`Zaregistrujte se`,footerText:`Nemáte účet?`,forgotPasswordText:`Zapomněli jste heslo?`,hidePasswordText:`Skrýt heslo`,"invalid-captcha":`Vyřešte úlohu, abyste ověřili, že nejste robot.`,"invalid-code":`Neplatný kód`,"invalid-connection":`Neplatné připojení`,"invalid-email-format":`Neplatný e-mail`,"invalid-email-phone":`Zadejte platnou e-mailovou adresu nebo telefonní číslo. Telefonní čísla musí obsahovat předvolbu země.`,"invalid-email-phone-username":`Zadejte platnou e-mailovou adresu, telefonní číslo nebo uživatelské jméno. Telefonní čísla musí obsahovat předvolbu země.`,"invalid-email-username":`Zadejte platnou e-mailovou adresu nebo uživatelské jméno`,"invalid-expired-code":`Neplatný nebo vypršelý uživatelský kód`,"invalid-login-id":`Zadáno neplatné přihlašovací ID`,"invalid-phone-username":`Zadejte platné telefonní číslo nebo uživatelské jméno. Telefonní čísla musí obsahovat předvolbu země.`,"invalid-recaptcha":`Zaškrtněte políčko, abyste ověřili, že nejste robot.`,"invalid-username":"Uživatelské jméno může obsahovat pouze alfanumerické znaky nebo: '${characters}'. Uživatelské jméno musí mít ${min} až ${max} znaků.",invitationDescription:"Přihlaste se pro přijetí pozvánky od ${inviterName} k připojení k ${companyName} na ${clientName}.",invitationTitle:`Byli jste pozváni!`,"ip-blocked":`Zjistili jsme podezřelé přihlašovací chování a další pokusy budou blokovány. Kontaktujte prosím administrátora.`,logoAltText:"${companyName}","no-db-connection":`Neplatné připojení`,"no-email":`Zadejte prosím e-mailovou adresu`,"no-email-phone":`Je vyžadována e-mailová adresa nebo telefonní číslo`,"no-email-phone-username":`Je vyžadováno telefonní číslo, uživatelské jméno nebo e-mailová adresa`,"no-email-username":`Je vyžadována e-mailová adresa nebo uživatelské jméno`,"no-password":`Heslo je povinné`,"no-phone":`Zadejte prosím telefonní číslo`,"no-phone-username":`Je vyžadováno telefonní číslo nebo uživatelské jméno`,"no-username":`Uživatelské jméno je povinné`,pageTitle:"Přihlášení | ${clientName}","password-breached":`Zjistili jsme potenciální bezpečnostní problém s tímto účtem. Pro ochranu vašeho účtu jsme toto přihlášení zablokovali. Pro pokračování prosím resetujte své heslo.`,passwordPlaceholder:`Heslo`,phoneOrEmailPlaceholder:`E-mail nebo telefonní číslo`,phoneOrUsernameOrEmailPlaceholder:`Telefon, uživatelské jméno nebo e-mail`,phoneOrUsernamePlaceholder:`Telefonní číslo nebo uživatelské jméno`,phonePlaceholder:`Telefonní číslo`,"same-user-login":`Příliš mnoho pokusů o přihlášení pro tohoto uživatele. Počkejte prosím a zkuste to znovu později.`,selectCountryCode:"Vyberte předvolbu země, aktuálně nastaveno na ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`nebo`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,showPasswordText:`Zobrazit heslo`,signupActionLinkText:"${footerLinkText}",signupActionText:"${footerText}",termsAndConditionsTemplate:'Pokračováním souhlasíte s našimi <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">Podmínkami a pravidly</a>.',title:`Vítejte`,"user-blocked":`Váš účet byl zablokován po několika po sobě jdoucích neúspěšných pokusech o přihlášení.`,userAccountDoesNotExist:`Uživatelský účet neexistuje`,usernameOnlyPlaceholder:`Uživatelské jméno`,usernameOrEmailPlaceholder:`Uživatelské jméno nebo e-mailová adresa`,usernamePlaceholder:`Uživatelské jméno nebo e-mailová adresa`,usernameTooLong:"Uživatelské jméno musí mít nejvýše ${max} znaků",usernameTooShort:"Uživatelské jméno musí mít alespoň ${min} znaků","wrong-credentials":`Nesprávné uživatelské jméno nebo heslo`,"wrong-email-credentials":`Nesprávný e-mail nebo heslo`,"wrong-email-phone-credentials":`Nesprávná e-mailová adresa, telefonní číslo nebo heslo. Telefonní čísla musí obsahovat předvolbu země.`,"wrong-email-phone-username-credentials":`Nesprávná e-mailová adresa, telefonní číslo, uživatelské jméno nebo heslo. Telefonní čísla musí obsahovat předvolbu země.`,"wrong-email-username-credentials":`Nesprávná e-mailová adresa, uživatelské jméno nebo heslo`,"wrong-phone-credentials":`Nesprávné telefonní číslo nebo heslo`,"wrong-phone-username-credentials":`Nesprávné telefonní číslo, uživatelské jméno nebo heslo. Telefonní čísla musí obsahovat předvolbu země.`,"wrong-username-credentials":`Nesprávné uživatelské jméno nebo heslo`,passkeyButtonText:`Přihlásit se pomocí passkey`}},"login-password":{"login-password":{buttonText:`Přihlásit se`,description:"Přihlaste se k ${clientName}",forgotPasswordText:`Zapomněli jste heslo?`,hidePasswordText:`Skrýt heslo`,"no-password":`Heslo je povinné`,pageTitle:"Přihlášení | ${clientName}","password-breached":`Zjistili jsme potenciální bezpečnostní problém s tímto účtem. Pro ochranu vašeho účtu jsme toto přihlášení zablokovali. Pro pokračování prosím resetujte své heslo.`,passwordPlaceholder:`Heslo`,showPasswordText:`Zobrazit heslo`,signingInAs:"Přihlášení jako ${email}",title:`Zadejte heslo`,unverifiedEmail:`Před přihlášením prosím ověřte svou e-mailovou adresu`,"user-blocked":`Váš účet byl zablokován po několika po sobě jdoucích neúspěšných pokusech o přihlášení.`,"wrong-credentials":`Nesprávné heslo`,sendCodeText:`Přihlásit se kódem`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,tooManyRequests:`Příliš mnoho pokusů. Chvíli počkejte a zkuste to znovu.`,unexpectedError:`Něco se pokazilo. Zkuste to znovu.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`e-mailová adresa`,authMethodEmailOrPhone:`e-mail nebo telefonní číslo`,authMethodPhone:`telefonní číslo`,description:"Přihlaste se pomocí ${authMethod}",emailOrPhonePlaceholder:`E-mailová adresa nebo telefonní číslo`,emailPlaceholder:`E-mailová adresa`,invalidEmail:`Zadejte prosím platnou e-mailovou adresu`,invalidIdentifier:`Zadejte prosím platnou e-mailovou adresu nebo telefonní číslo`,invalidPhone:`Zadejte prosím platné telefonní číslo s předvolbou země`,noEmail:`Zadejte prosím svou e-mailovou adresu`,noPhone:`Zadejte prosím své telefonní číslo`,phonePlaceholder:`Telefonní číslo`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,title:`Přihlásit se kódem`,userAccountDoesNotExist:`Uživatelský účet neexistuje`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Klikněte na odkaz ve svém e-mailu pro přihlášení`,description:"Odeslali jsme odkaz na ${username}. Kliknutím na něj se přihlásíte.",resendText:`Odeslat odkaz znovu`,spamText:`Nedostali jste e-mail? Zkontrolujte složku nevyžádané pošty.`,title:`Zkontrolujte svůj e-mail`}},mfa:Nf,"mfa-email":{"mfa-email":{buttonText:`Pokračovat`,codePlaceholder:`Zadejte kód`,description:"Odeslali jsme kód na ${email}","invalid-code":`Zadaný kód je neplatný`,pageTitle:"Ověření e-mailem | ${clientName}",resendText:`Opětovné odeslání kódu`,title:`Zkontrolujte svůj e-mail`}},"mfa-otp":{"mfa-otp":{buttonText:`Pokračovat`,codePlaceholder:`Zadejte kód`,description:`Zadejte šestimístný kód z vaší ověřovací aplikace`,"invalid-code":`Zadaný kód je neplatný`,pageTitle:"Zadejte kód | ${clientName}",title:`Zadejte svůj kód`},"mfa-totp-enrollment":{title:`Nastavit ověřovací aplikaci`,description:`Naskenujte QR kód níže pomocí ověřovací aplikace a poté zadejte šestimístný kód pro ověření`,secretLabel:`Nebo zadejte tento kód ručně:`,codePlaceholder:`Zadejte kód`,continueButtonText:`Ověřit a aktivovat`,"invalid-code":`Zadaný kód je neplatný. Zkuste to prosím znovu.`,"transaction-not-found":`Platnost vaší registrace vypršela, budete muset začít znovu.`,pageTitle:"Nastavení ověřovací aplikace | ${clientName}",unexpectedError:`Něco se pokazilo. Zkuste to prosím znovu.`,enrollmentComplete:`Registrace MFA je dokončena. Tuto stránku můžete zavřít.`,pickAuthenticatorText:`Zkusit jinou metodu`,qrCodeAltText:`QR kód`},"mfa-totp-challenge":{title:`Ověřte svou identitu`,description:`Zadejte šestimístný kód z vaší ověřovací aplikace`,codePlaceholder:`Zadejte kód`,continueButtonText:`Pokračovat`,"invalid-code":`Zadaný kód je neplatný`,"transaction-not-found":`Platnost vaší registrace vypršela, budete muset začít znovu.`,unexpectedError:`Něco se pokazilo. Zkuste to prosím znovu.`,pageTitle:"Ověření identity | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Použijte své telefonní číslo pro přihlášení | ${clientName}",title:`Ověřte svou identitu`,description:"Odeslali jsme kód na ${phoneNumber}",continueButtonText:`Pokračovat`,changePhoneText:`Zvolte jiné telefonní číslo.`,smsButtonText:`Textová zpráva`,voiceButtonText:`Hlasový hovor`,chooseMessageTypeText:`Jak chcete kód přijmout?`,pickAuthenticatorText:`Zkusit jinou metodu`,logoAltText:"${companyName}",codePlaceholder:`Zadejte kód`,"send-sms-failed":`Při odesílání SMS došlo k problému`,"send-voice-failed":`Při uskutečnění hlasového hovoru došlo k problému`,"invalid-phone-format":`Telefonní číslo může obsahovat pouze číslice.`,"invalid-phone":`Zdá se, že vaše telefonní číslo není platné. Zkontrolujte a zkuste to znovu.`,"too-many-sms":`Překročili jste maximální počet telefonních zpráv za hodinu. Počkejte pár minut a zkuste to znovu.`,"too-many-voice":`Překročili jste maximální počet hlasových hovorů za hodinu. Počkejte pár minut a zkuste to znovu.`,"transaction-not-found":`Vaše registrační transakce vypršela, budete muset začít znovu.`,"no-phone":`Zadejte telefonní číslo`,noCode:`Zadejte ověřovací kód`,invalidCode:`Zadaný kód je neplatný. Zkuste to znovu.`,unexpectedError:`Něco se pokazilo. Zkuste to znovu.`,resendSuccess:`Odeslali jsme nový kód na váš telefon`,enrollmentComplete:`Registrace MFA je dokončena. Tuto stránku můžete zavřít.`},"mfa-phone-enrollment":{pageTitle:"Zadejte své telefonní číslo pro přihlášení pomocí telefonního kódu | ${clientName}",title:`Zabezpečte svůj účet`,description:`Zadejte kód země a telefonní číslo, na které můžeme odeslat 6místný kód:`,continueButtonText:`Pokračovat`,smsButtonText:`Textová zpráva`,voiceButtonText:`Hlasový hovor`,chooseMessageTypeText:`Jak chcete kód přijmout?`,pickAuthenticatorText:`Zkusit jinou metodu`,placeholder:`Zadejte své telefonní číslo`,logoAltText:"${companyName}",selectCountryCode:"Vyberte kód země, aktuálně nastaveno na ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`Při odesílání SMS došlo k problému`,"send-voice-failed":`Při uskutečnění hlasového hovoru došlo k problému`,"sms-authenticator-error":`Nepodařilo se odeslat SMS. Zkuste to prosím později.`,"invalid-phone-format":`Telefonní číslo může obsahovat pouze číslice.`,"invalid-phone":`Zdá se, že vaše telefonní číslo není platné. Zkontrolujte a zkuste to znovu.`,"too-many-sms":`Překročili jste maximální počet telefonních zpráv za hodinu. Počkejte pár minut a zkuste to znovu.`,"too-many-voice":`Překročili jste maximální počet hlasových hovorů za hodinu. Počkejte pár minut a zkuste to znovu.`,"transaction-not-found":`Vaše registrační transakce vypršela, budete muset začít znovu.`,"no-phone":`Zadejte telefonní číslo`,"phone-is-too-short":`Telefonní číslo je příliš krátké`,"phone-is-too-long":`Telefonní číslo je příliš dlouhé`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Vyberte metodu ověření | ${clientName}",title:`Vyberte způsob ověření`,description:`Zvolte, jak chcete ověřit svou identitu`,authenticatorAppLabel:`Autentizační aplikace`,authenticatorAppDescription:`Použijte autentizační aplikaci k získání ověřovacího kódu`,smsLabel:`Textová zpráva`,smsDescription:`Nechte si zaslat ověřovací kód na telefon`,passkeyLabel:`Passkey`,passkeyDescription:`Použijte biometrii zařízení nebo bezpečnostní klíč`}},"mfa-push":{"mfa-push":{description:`Odeslali jsme oznámení na vaše zařízení`,pageTitle:"Push oznámení | ${clientName}",resendText:`Odeslat oznámení znovu`,title:`Schvalte požadavek`,useCodeText:`Zadat kód ručně`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Pokračovat`,codePlaceholder:`Záložní kód`,description:`Zadejte jeden z vašich záložních kódů`,"invalid-code":`Zadaný záložní kód je neplatný`,pageTitle:"Záložní kód | ${clientName}",title:`Zadejte záložní kód`}},"mfa-voice":{"mfa-voice":{buttonText:`Zavolat mi`,codePlaceholder:`Zadejte kód`,description:"Zavoláme na ${phoneNumber} s vaším kódem","invalid-code":`Zadaný kód je neplatný`,pageTitle:"Hlasový hovor | ${clientName}",title:`Přijmout telefonní hovor`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Zkusit znovu`,description:`Vložte svůj bezpečnostní klíč a postupujte podle pokynů`,pageTitle:"Bezpečnostní klíč | ${clientName}",title:`Použijte svůj bezpečnostní klíč`}},passkeys:Pf,organizations:Ff,"reset-password":{"reset-password":{backToLoginText:`Zpět na přihlášení`,buttonText:`Pokračovat`,codeExpired:`Platnost kódu pro obnovení hesla vypršela. Požádejte prosím o nový.`,confirmPasswordLabel:`Potvrzení hesla`,confirmPasswordPlaceholder:`Potvrzení hesla`,description:`Zadejte svůj e-mail pro obnovení hesla`,emailPlaceholder:`E-mailová adresa`,failed:`Obnovení hesla se nezdařilo. Zkuste to prosím znovu.`,"invalid-email-format":`Neplatný e-mail`,"no-email":`Zadejte prosím e-mailovou adresu`,pageTitle:"Obnovení hesla | ${clientName}",passwordLabel:`Nové heslo`,passwordPlaceholder:`Nové heslo`,passwordTooWeak:`Heslo je příliš slabé`,passwordsDidntMatch:`Hesla se neshodují`,successDescription:`Odkaz na obnovení hesla jsme odeslali na vaši e-mailovou adresu.`,successTitle:`Zkontrolujte svůj e-mail`,title:`Zapomněli jste heslo?`,"user-not-found":`Uživatel nenalezen`,noPassword:`Heslo je povinné`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`},"reset-password-code":{backToLoginText:`Zpět na přihlášení`,buttonText:`Obnovit heslo`,codeLabel:`Kód pro obnovení`,codePlaceholder:`Zadejte 6místný kód`,confirmPasswordLabel:`Potvrzení hesla`,confirmPasswordPlaceholder:`Potvrzení hesla`,defaultDescription:`Zadejte kód zaslaný na váš e-mail a zvolte nové heslo`,description:"Odeslali jsme kód na ${email}",failed:`Obnovení hesla se nezdařilo. Zkuste to prosím znovu.`,invalidCode:`Zadaný kód je neplatný nebo vypršel`,noCode:`Zadejte prosím kód pro obnovení`,pageTitle:"Zadejte kód pro obnovení | ${clientName}",passwordLabel:`Nové heslo`,passwordPlaceholder:`Nové heslo`,passwordTooWeak:`Heslo je příliš slabé`,passwordsDidntMatch:`Hesla se neshodují`,resendFailed:`Nepodařilo se znovu odeslat kód. Zkuste to prosím znovu.`,resendSuccess:`Nový kód byl odeslán na váš e-mail`,resendText:`Odeslat kód znovu`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,title:`Zadejte kód pro obnovení`,noPassword:`Heslo je povinné`}},signup:If,"signup-id":{"signup-id":{buttonText:`Pokračovat`,description:`Zaregistrujte se a pokračujte`,"email-already-exists":`Tento e-mail je již zaregistrován`,emailPlaceholder:`E-mailová adresa`,federatedConnectionButtonText:"Pokračovat s ${connectionName}","invalid-email-format":`Neplatný e-mail`,loginActionLinkText:`Přihlásit se`,loginActionText:`Už máte účet?`,"no-email":`Zadejte prosím e-mailovou adresu`,pageTitle:"Registrace | ${clientName}",phonePlaceholder:`Telefonní číslo`,separatorText:`nebo`,title:`Vytvořte svůj účet`,usernamePlaceholder:`Uživatelské jméno`}},"signup-password":{"signup-password":{buttonText:`Pokračovat`,description:`Zaregistrujte se a pokračujte`,hidePasswordText:`Skrýt heslo`,"no-password":`Heslo je povinné`,pageTitle:"Registrace | ${clientName}","password-policy-not-met":`Heslo nesplňuje požadavky`,"password-too-weak":`Heslo je příliš slabé`,passwordPlaceholder:`Heslo`,showPasswordText:`Zobrazit heslo`,title:`Vytvořte své heslo`,passwordTooShort:"Heslo musí mít alespoň ${minLength} znaků",passwordMissingLowercase:`Heslo musí obsahovat alespoň jedno malé písmeno`,passwordMissingUppercase:`Heslo musí obsahovat alespoň jedno velké písmeno`,passwordMissingNumber:`Heslo musí obsahovat alespoň jednu číslici`,passwordMissingSpecial:`Heslo musí obsahovat alespoň jeden speciální znak`,passwordReused:`Heslo bylo nedávno použito a nelze jej znovu použít`,passwordContainsPersonalInfo:`Heslo nesmí obsahovat osobní údaje jako jméno nebo e-mail`,passwordContainsForbiddenWord:`Heslo obsahuje zakázané slovo`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Pokračovat`,codeLabel:`Ověřovací kód`,codePlaceholder:`Zadejte kód`,defaultDescription:`Zadejte ověřovací kód zaslaný na váš telefon`,description:"Odeslali jsme kód na ${username}","invalid-code":`Neplatný kód`,noCode:`Zadejte prosím ověřovací kód`,pageTitle:"Zadejte kód | ${clientName}",resendText:`Opětovné odeslání kódu`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,title:`Zkontrolujte svůj telefon`,unexpectedError:`Došlo k neočekávané chybě`,tooManyRequests:`Příliš mnoho pokusů. Chvíli počkejte a zkuste to znovu.`}},status:Lf},Xre=c({common:()=>Rf,consent:()=>zf,default:()=>Zre,invitation:()=>Bf,login:()=>Vf,mfa:()=>Hf,organizations:()=>Wf,passkeys:()=>Uf,signup:()=>Gf,status:()=>Kf}),Rf={common:{alertListTitle:`Advarsler`,backText:`Gå tilbage`,backToLoginText:`Tilbage til login`,cancelText:`Gå tilbage`,closeText:`Luk`,contactSupportText:`Har du brug for hjælp?`,continueText:`Fortsæt`,copyrightText:"© ${currentYear} ${companyName}",errorText:`Noget gik galt. Prøv venligst igen.`,hidePasswordText:`Skjul adgangskode`,loadingText:`Indlæser...`,orText:`eller`,privacyPolicyText:`Privatlivspolitik`,showPasswordText:`Vis adgangskode`,termsOfServiceText:`Servicevilkår`,termsShortText:`Vilkår`,tryAgainText:`Prøv igen`},account:{title:`Kontoindstillinger`,description:`Administrer din konto`,editProfileLabel:`Rediger profil`,editProfileDetail:`Navn, e-mail, telefonnummer og billede`,securityLabel:`Sikkerhedsindstillinger`,securityDetail:`Multifaktorgodkendelse`,securityMethodsCountOne:"${count} metode konfigureret",securityMethodsCount:"${count} metoder konfigureret",passkeysLabel:`Adgangsnøgler`,passkeysDetail:`Log ind uden adgangskode`,passkeysCountOne:"${count} adgangsnøgle registreret",passkeysCount:"${count} adgangsnøgler registreret",linkedAccountsLabel:`Tilknyttede konti`,linkedAccountsDetail:`Tilknyt sociale konti`,linkedAccountsCountOne:"${count} tilknyttet konto",linkedAccountsCount:"${count} tilknyttede konti",deleteAccountLabel:`Slet konto`,deleteAccountDetail:`Slet din konto og dine data permanent`,logoutText:`Log ud`},"account-profile":{title:`Rediger profil`,description:`Opdater dine personlige oplysninger`,givenNameLabel:`Fornavn`,familyNameLabel:`Efternavn`,nicknameLabel:`Kaldenavn`,phoneNumberLabel:`Telefonnummer`,pictureLabel:`URL til profilbillede`,buttonText:`Gem ændringer`,backToAccountText:`Tilbage til kontoen`,updateFailed:`Profilen kunne ikke opdateres`},"account-delete":{title:`Slet konto`,description:`Slet din konto permanent`,warningTitle:`Advarsel: Denne handling er permanent`,warningText:`Alle dine data slettes permanent. Det omfatter din profil, tilknyttede konti og godkendelsesmetoder. Handlingen kan ikke fortrydes.`,confirmationLabel:'Skriv "${confirmationWord}" for at bekræfte',buttonText:`Slet min konto`,cancelText:`Annuller`,confirmationError:'Skriv "${confirmationWord}" for at bekræfte',deleteSuccess:`Din konto er blevet slettet`,deleteFailed:`Kontoen kunne ikke slettes`},"account-linked":{title:`Tilknyttede konti`,description:`Administrer dine tilknyttede konti`,noLinkedAccounts:`Ingen tilknyttede konti.`,unlinkButtonText:`Fjern tilknytning`,backToAccountText:`Tilbage til kontoen`,unlinkSuccess:`Kontoens tilknytning er fjernet`,unlinkFailed:`Tilknytningen kunne ikke fjernes`},"account-security":{title:`Sikkerhedsindstillinger`,description:`Administrer dine metoder til totrinsgodkendelse`,noEnrollments:`Du har ingen metoder til totrinsgodkendelse konfigureret.`,addedOn:"Tilføjet ${date}",removeButtonText:`Fjern`,addTotpLabel:`Tilføj godkendelsesapp`,addTotpDetail:`Brug en app som Google Authenticator eller Authy`,addSmsLabel:`Tilføj telefon (SMS)`,addSmsDetail:`Modtag bekræftelseskoder via sms`,typeTotp:`Godkendelsesapp`,typePhone:`Telefon (SMS)`,typeEmail:`E-mail`,typePush:`Push-notifikation`,typeWebauthn:`Sikkerhedsnøgle`,backToAccountText:`Tilbage til kontoen`,enrollmentNotFound:`Metoden blev ikke fundet`,removeSuccess:`Godkendelsesmetoden er fjernet`,removeFailed:`Godkendelsesmetoden kunne ikke fjernes`},"account-passkeys":{title:`Adgangsnøgler`,description:`Administrer dine adgangsnøgler til login uden adgangskode`,noPasskeysText:`Du har ingen registrerede adgangsnøgler.`,defaultPasskeyName:`Adgangsnøgle`,syncedBadgeText:`Synkroniseret`,addedOnText:"Tilføjet ${date}",renameButtonText:`Omdøb`,removeButtonText:`Fjern`,renamePromptText:`Indtast et nyt navn til denne adgangsnøgle:`,addPasskeyButtonText:`Tilføj adgangsnøgle`,backToAccountText:`Tilbage til kontoen`,logoutText:`Log ud`,passkeyNotFoundText:`Adgangsnøglen blev ikke fundet`,passkeyRemovedText:`Adgangsnøglen er fjernet`,removeFailedText:`Adgangsnøglen kunne ikke fjernes`,invalidNameText:`Navnet skal være mellem 1 og 64 tegn`,passkeyRenamedText:`Adgangsnøglen er omdøbt`,renameFailedText:`Adgangsnøglen kunne ikke omdøbes`,startRegistrationFailedText:`Registrering af adgangsnøgle kunne ikke startes`,missingCredentialText:`Data for adgangsnøglen mangler`,challengeExpiredText:`Anmodningen er udløbet. Prøv igen.`,invalidCredentialText:`Ugyldige data for adgangsnøglen`,verificationFailedText:`Bekræftelse af adgangsnøglen mislykkedes`,passkeyAddedText:`Adgangsnøglen er tilføjet`,registrationFailedText:`Registrering af adgangsnøgle mislykkedes. Prøv igen.`},"account-mfa-phone-enrollment":{title:`Opsæt telefon (SMS)`,description:`Indtast dit telefonnummer for at modtage bekræftelseskoder via SMS.`,phoneLabel:`Telefonnummer`,sendCodeButtonText:`Send bekræftelseskode`,backToSecurityText:`Tilbage til sikkerhedsindstillinger`,verifyTitle:`Bekræft telefonnummer`,verifyDescription:`Indtast bekræftelseskoden, der blev sendt til din telefon.`,codeSentText:"En bekræftelseskode er sendt til ${phoneNumber}",codeSentToYourPhoneText:`En bekræftelseskode er sendt til din telefon`,codeLabel:`Bekræftelseskode`,codePlaceholder:`Indtast bekræftelseskode`,verifyButtonText:`Bekræft og aktiver`,noPhoneText:`Indtast dit telefonnummer`,invalidPhoneText:`Indtast et gyldigt telefonnummer`,sendCodeFailedText:`Bekræftelseskoden kunne ikke sendes. Prøv igen.`,noCodeText:`Indtast bekræftelseskoden`,invalidCodeText:`Ugyldig kode. Prøv igen.`,sessionInvalidText:`Noget gik galt. Start tilmeldingen igen.`},"account-mfa-totp-enrollment":{title:`Opsæt autentificeringsapp`,description:`Scan QR-koden med din autentificeringsapp, og indtast derefter bekræftelseskoden nedenfor.`,qrCodeAltText:`QR-kode`,manualKeyText:`Eller indtast denne nøgle manuelt:`,codeLabel:`Bekræftelseskode`,codePlaceholder:`Indtast 6-cifret kode`,verifyButtonText:`Bekræft og aktiver`,backToSecurityText:`Tilbage til sikkerhedsindstillinger`,noCodeText:`Indtast bekræftelseskoden`,invalidCodeText:`Ugyldig kode. Prøv igen.`,verificationFailedText:`Bekræftelsen mislykkedes. Prøv igen.`}},zf={consent:{buttonText:`Acceptér`,cancelButtonText:`Afvis`,description:"${clientName} anmoder om adgang til din konto",pageTitle:"Godkend | ${clientName}",scopesTitle:"Dette vil give ${clientName} tilladelse til at:",title:"Godkend ${clientName}",accessAccountText:"ønsker adgang til din ${tenantName}-konto som ${userName}.",notAuthenticated:`Du skal logge ind for at fortsætte.`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,consentStorageNotConfigured:`Dit samtykke kunne ikke gemmes. Kontakt ejeren af applikationen.`},"connect-consent":{title:`Forbind applikation`,description:"Vil du tillade ${domain} at handle på dine vegne?",connectAccountText:"ønsker at forbinde til din ${tenantName}-konto som ${userName}.",workspaceLabel:`Arbejdsområde:`,apiLabel:`Til API:`,permissionsLabel:`Anmodede tilladelser:`,localDevBadge:`Lokal udvikling`,localDevTooltip:`Dette websted er et lokalt udviklingsmiljø, ikke produktion. Forbindelsen vil ikke virke uden for denne maskine eller dette netværk.`,buttonText:`Forbind`,cancelText:`Annuller`,notAuthenticated:`Du skal logge ind for at fortsætte.`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,workspaceSelectionRequired:`Vælg et arbejdsområde først.`,noWorkspaceAccess:`Du har ikke adgang til det arbejdsområde`,workspaceNotFound:`Arbejdsområdet blev ikke fundet`},"connect-tenant-select":{title:`Vælg et arbejdsområde`,description:"Vælg hvilket ${tenantName}-arbejdsområde ${domain} skal forbinde til.",noWorkspacesDescription:`Ingen tilgængelige arbejdsområder`,noWorkspacesText:"Du har ikke adgang til nogen ${tenantName}-arbejdsområder. Bed en administrator om at invitere dig.",cancelText:`Annuller`,notAuthenticated:`Du skal logge ind for at fortsætte.`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,noWorkspaceSelected:`Vælg et arbejdsområde.`,noWorkspaceAccess:`Du har ikke adgang til det arbejdsområde`}},Bf={invitation:{acceptButtonText:`Acceptér invitation`,description:"${inviterName} har inviteret dig til at deltage i ${organizationName} på ${clientName}",pageTitle:"Invitation | ${clientName}",title:`Du er blevet inviteret`,defaultOrganizationName:`organisationen`,acceptFailed:`Vi kunne ikke færdiggøre opsætningen af din konto. Prøv igen.`}},Vf={login:{alertListTitle:`Advarsler`,buttonText:`Fortsæt`,description:"Log ind på ${clientName}.",editEmailText:`Rediger`,emailPlaceholder:`E-mail-adresse`,enterACodeBtn:`Log ind med en kode`,enterACodeShortBtn:`Kode`,federatedConnectionButtonText:"Fortsæt med ${connectionName}",lastUsedText:`Senest brugt`,footerLinkText:`Tilmeld dig`,footerText:`Har du ikke en konto?`,forgotPasswordText:`Har du glemt din adgangskode?`,hidePasswordText:`Skjul adgangskode`,invalidEmail:`Ugyldig e-mail`,invalidIdentifier:`Ugyldig e-mail eller brugernavn`,invitationDescription:"Log ind for at acceptere ${inviterName}s invitation til at deltage i ${companyName} på ${clientName}.",invitationTitle:`Du er blevet inviteret!`,logoAltText:"${companyName}","no-email":`Indtast venligst en e-mailadresse`,"no-password":`Adgangskode er påkrævet`,pageTitle:"Log ind | ${clientName}",passwordLoginNotAvailable:`Adgangskodegodkendelse er ikke tilgængelig`,passwordPlaceholder:`Adgangskode`,phonePlaceholder:`Telefonnummer`,separatorText:`eller`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,showPasswordText:`Vis adgangskode`,signupActionLinkText:`Tilmeld dig`,signupActionText:`Har du ikke en konto?`,title:`Velkommen`,tooManyFailedLogins:`For mange mislykkede loginforsøg. Prøv venligst igen senere.`,unverifiedEmail:`Bekræft venligst din e-mailadresse, før du logger ind`,userAccountDoesNotExist:`Brugerkontoen findes ikke`,usernamePlaceholder:`Brugernavn eller e-mailadresse`,usernameTooLong:"Brugernavnet må højst være ${max} tegn",usernameTooShort:"Brugernavnet skal være mindst ${min} tegn",wrongCredentials:`Forkert brugernavn eller adgangskode`,passkeyButtonText:`Log ind med passkey`,userBlocked:`Din konto er blevet blokeret efter flere på hinanden følgende loginforsøg.`,tooManyRequests:`For mange forsøg. Vent et øjeblik, og prøv igen.`,unexpectedError:`Noget gik galt. Prøv igen.`}},Hf={mfa:{backupCodeText:`Brug backupkode`,description:`Vælg en bekræftelsesmetode`,pageTitle:"Multifaktorgodkendelse | ${clientName}",title:`Bekræft din identitet`}},Uf={"passkey-enrollment-nudge":{title:`Sikr din konto med en adgangsnøgle`,description:`Adgangsnøgler bruger din enheds biometri eller PIN til at logge dig ind hurtigere og mere sikkert.`,enrollButtonText:`Konfigurer adgangsnøgle`,snoozeButtonText:`Måske senere`,optOutLinkText:`Vis ikke dette igen`,pageTitle:"Konfigurer Adgangsnøgle | ${clientName}"},"passkey-enrollment":{title:`Opret din adgangsnøgle`,description:`Følg anvisningerne fra din browser for at oprette en adgangsnøgle til denne konto.`,errorMessage:`Oprettelse af adgangsnøgle mislykkedes. Prøv venligst igen.`,cancelLinkText:`Spring over for nu`,retryButtonText:`Prøv igen`,enrollmentComplete:`Din adgangsnøgle er konfigureret. Du kan lukke denne side.`,pageTitle:"Opret Adgangsnøgle | ${clientName}",sessionExpired:`Din session er udløbet. Prøv venligst igen.`,enrollmentRequired:`Du skal oprette en adgangsnøgle for at fortsætte.`,challengeExpired:`Anmodningen er udløbet. Prøv igen.`},"passkey-challenge":{title:`Log ind med passkey`,description:`Følg anvisningerne fra din browser for at bekræfte din identitet.`,errorMessage:`Godkendelse med passkey mislykkedes. Prøv venligst igen.`,cancelLinkText:`Tilbage til login`,retryButtonText:`Prøv igen`,pageTitle:"Log ind med passkey | ${clientName}",sessionExpired:`Din session er udløbet. Prøv venligst igen.`}},Wf={organizations:{description:`Vælg hvilken organisation du vil logge ind på`,pageTitle:"Vælg organisation | ${clientName}",searchPlaceholder:`Søg organisationer`,title:`Vælg din organisation`}},Gf={signup:{buttonText:`Tilmelding`,confirmPasswordPlaceholder:`Bekræft adgangskode`,description:`Vælg en adgangskode med en blanding af store og små bogstaver, tal og symboler.`,"email-already-exists":`E-mailen er allerede optaget`,emailPlaceholder:`E-mail-adresse`,federatedConnectionButtonText:"Fortsæt med ${connectionName}",hidePasswordText:`Skjul adgangskode`,"invalid-email-format":`Ugyldig e-mail`,loginActionLinkText:`Log ind`,loginActionText:`Har du allerede en konto?`,"no-email":`Indtast venligst en e-mailadresse`,"no-password":`Adgangskode er påkrævet`,"no-username":`Brugernavn er påkrævet`,pageTitle:"Tilmeld dig | ${clientName}",passwordPlaceholder:`Adgangskode`,passwordsDidntMatch:`Adgangskoderne matcher ikke`,phonePlaceholder:`Telefonnummer`,privacyPolicyLinkText:`Privatlivspolitik`,separatorText:`eller`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,showPasswordText:`Vis adgangskode`,termsOfServiceLinkText:`Servicevilkår`,termsText:`Ved at tilmelde dig accepterer du vores`,title:`Vælg adgangskode`,"username-already-exists":`Dette brugernavn er allerede taget`,usernamePlaceholder:`Brugernavn`,verifyEmailText:`Tjek venligst din e-mail for at bekræfte din konto`,confirmPasswordRequired:`Bekræft din adgangskode`,createUserFailed:`Vi kunne ikke oprette din konto. Prøv igen.`}},Kf={status:{continueButtonText:`Fortsæt`,errorTitle:`Fejl`,pageTitle:"Status | ${clientName}",successTitle:`Succes`,title:`Status`}},Zre={common:Rf,consent:zf,"device-flow":{"device-flow":{buttonText:`Fortsæt`,codePlaceholder:`Indtast kode`,description:`Indtast koden, der vises på din enhed`,"expired-code":`Koden er udløbet`,"invalid-code":`Den indtastede kode er ugyldig`,pageTitle:"Enhedsaktivering | ${clientName}",title:`Aktivér din enhed`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Log ind`,codeLabel:`Bekræftelseskode`,codePlaceholder:`Indtast kode`,defaultDescription:`Indtast bekræftelseskoden, der blev sendt til din e-mail`,description:"Vi sendte en kode til ${email}","invalid-code":`Ugyldig kode`,noCode:`Indtast venligst bekræftelseskoden`,pageTitle:"Indtast kode | ${clientName}",resendText:`Send koden igen`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,title:`Tjek din e-mail`,unexpectedError:`Der opstod en uventet fejl`,usePasswordText:`Log ind med adgangskode`,tooManyRequests:`For mange forsøg. Vent et øjeblik, og prøv igen.`}},"email-verification":{"email-verification":{description:"Vi sendte en e-mail til ${email}",linkAlreadyUsed:`Bekræftelseslinket er allerede brugt. Anmod om et nyt.`,linkInvalid:`Bekræftelseslinket er ugyldigt.`,linkInvalidOrExpired:`Bekræftelseslinket er ugyldigt eller udløbet. Anmod om et nyt.`,linkInvalidTitle:`Bekræftelseslinket er ikke gyldigt`,linkWrongType:`Dette link kan ikke bruges til at bekræfte en e-mailadresse.`,pageTitle:"Bekræft e-mail | ${clientName}",resendText:`Send koden igen`,successDescription:`Din e-mail er blevet bekræftet.`,successTitle:`E-mail bekræftet`,title:`Bekræft din e-mail`},"email-verification-code":{buttonText:`Fortsæt`,codeLabel:`Bekræftelseskode`,codePlaceholder:`Indtast 6-cifret kode`,defaultDescription:`Indtast koden, vi sendte til din e-mail, for at bekræfte din adresse og fortsætte.`,description:"Vi har sendt en kode til ${email}. Indtast den for at bekræfte din e-mailadresse og fortsætte.",invalidCode:`Koden er ugyldig eller udløbet`,noCode:`Indtast bekræftelseskoden`,pageTitle:"Bekræft e-mail | ${clientName}",resendFailed:`Koden kunne ikke sendes igen. Prøv igen.`,resendSuccess:`En ny kode er sendt til din e-mail`,resendText:`Send koden igen`,sessionExpired:`Din session er udløbet. Prøv igen.`,title:`Bekræft din e-mailadresse`,tooManyAttempts:`For mange forsøg. Prøv igen senere.`},"email-verification-link-sent":{defaultDescription:`Vi har sendt et bekræftelseslink til din e-mail. Klik på linket for at bekræfte din adresse, og log derefter ind igen.`,description:"Vi har sendt et bekræftelseslink til ${email}. Klik på linket for at bekræfte din adresse, og log derefter ind igen.",pageTitle:"Bekræft e-mail | ${clientName}",resendFailed:`E-mailen kunne ikke sendes igen. Prøv igen.`,resendSuccess:`En ny bekræftelsesmail er sendt`,resendText:`Send e-mailen igen`,title:`Tjek din e-mail`}},invitation:Bf,login:Vf,"login-id":{"login-id":{alertListTitle:`Advarsler`,"auth0-users-validation":`Noget gik galt, prøv venligst igen senere`,"authentication-failure":`Vi beklager, noget gik galt under loginforsøget`,buttonText:`Fortsæt`,"captcha-client-failure":`Vi kunne ikke indlæse sikkerhedsudfordringen. Prøv venligst igen. (Fejlkode: #{errorCode})`,"captcha-validation-failure":`Vi beklager, noget gik galt under validering af captcha-svaret. Prøv venligst igen.`,captchaCodePlaceholder:`Indtast koden vist ovenfor`,"custom-script-error-code":`Noget gik galt, prøv venligst igen senere.`,description:"Log ind på ${clientName}.",editEmailText:`Rediger`,emailPlaceholder:`E-mail-adresse`,federatedConnectionButtonText:"Fortsæt med ${connectionName}",lastUsedText:`Senest brugt`,footerLinkText:`Tilmeld dig`,footerText:`Har du ikke en konto?`,forgotPasswordText:`Har du glemt din adgangskode?`,hidePasswordText:`Skjul adgangskode`,"invalid-captcha":`Løs sikkerhedsspørgsmålet for at bekræfte, at du ikke er en robot.`,"invalid-code":`Ugyldig kode`,"invalid-connection":`Ugyldig forbindelse`,"invalid-email-format":`Ugyldig e-mail`,"invalid-email-phone":`Indtast en gyldig e-mailadresse eller telefonnummer. Telefonnumre skal inkludere landekoden.`,"invalid-email-phone-username":`Indtast en gyldig e-mailadresse, telefonnummer eller brugernavn. Telefonnumre skal inkludere landekoden.`,"invalid-email-username":`Indtast en gyldig e-mailadresse eller brugernavn`,"invalid-expired-code":`Ugyldig eller udløbet brugerkode`,"invalid-login-id":`Ugyldigt login-ID indtastet`,"invalid-phone-username":`Indtast et gyldigt telefonnummer eller brugernavn. Telefonnumre skal inkludere landekoden.`,"invalid-recaptcha":`Markér afkrydsningsfeltet for at bekræfte, at du ikke er en robot.`,"invalid-username":"Brugernavnet kan kun indeholde alfanumeriske tegn eller: '${characters}'. Brugernavnet skal være mellem ${min} og ${max} tegn.",invitationDescription:"Log ind for at acceptere ${inviterName}s invitation til at deltage i ${companyName} på ${clientName}.",invitationTitle:`Du er blevet inviteret!`,"ip-blocked":`Vi har registreret mistænkelig loginadfærd, og yderligere forsøg vil blive blokeret. Kontakt venligst administratoren.`,logoAltText:"${companyName}","no-db-connection":`Ugyldig forbindelse`,"no-email":`Indtast venligst en e-mailadresse`,"no-email-phone":`E-mailadresse eller telefonnummer er påkrævet`,"no-email-phone-username":`Telefonnummer, brugernavn eller e-mailadresse er påkrævet`,"no-email-username":`E-mailadresse eller brugernavn er påkrævet`,"no-password":`Adgangskode er påkrævet`,"no-phone":`Indtast venligst et telefonnummer`,"no-phone-username":`Telefonnummer eller brugernavn er påkrævet`,"no-username":`Brugernavn er påkrævet`,pageTitle:"Log ind | ${clientName}","password-breached":`Vi har registreret et potentielt sikkerhedsproblem med denne konto. For at beskytte din konto har vi forhindret dette login. Nulstil venligst din adgangskode for at fortsætte.`,passwordPlaceholder:`Adgangskode`,phoneOrEmailPlaceholder:`E-mail eller telefonnummer`,phoneOrUsernameOrEmailPlaceholder:`Telefon, brugernavn eller e-mail`,phoneOrUsernamePlaceholder:`Telefonnummer eller brugernavn`,phonePlaceholder:`Telefonnummer`,"same-user-login":`For mange loginforsøg for denne bruger. Vent venligst, og prøv igen senere.`,selectCountryCode:"Vælg landekode, i øjeblikket sat til ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`eller`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,showPasswordText:`Vis adgangskode`,signupActionLinkText:`Tilmeld dig`,signupActionText:`Har du ikke en konto?`,termsAndConditionsTemplate:'Ved at fortsætte accepterer du vores <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">Vilkår og betingelser</a>.',title:`Velkommen`,"user-blocked":`Din konto er blevet blokeret efter flere på hinanden følgende loginforsøg.`,userAccountDoesNotExist:`Brugerkontoen findes ikke`,usernameOnlyPlaceholder:`Brugernavn`,usernameOrEmailPlaceholder:`Brugernavn eller e-mailadresse`,usernamePlaceholder:`Brugernavn`,usernameTooLong:"Brugernavnet må højst være ${max} tegn",usernameTooShort:"Brugernavnet skal være mindst ${min} tegn","wrong-credentials":`Forkert brugernavn eller adgangskode`,"wrong-email-credentials":`Forkert e-mail eller adgangskode`,"wrong-email-phone-credentials":`Forkert e-mailadresse, telefonnummer eller adgangskode. Telefonnumre skal inkludere landekoden.`,"wrong-email-phone-username-credentials":`Forkert e-mailadresse, telefonnummer, brugernavn eller adgangskode. Telefonnumre skal inkludere landekoden.`,"wrong-email-username-credentials":`Forkert e-mailadresse, brugernavn eller adgangskode`,"wrong-phone-credentials":`Forkert telefonnummer eller adgangskode`,"wrong-phone-username-credentials":`Forkert telefonnummer, brugernavn eller adgangskode. Telefonnumre skal inkludere landekoden.`,"wrong-username-credentials":`Forkert brugernavn eller adgangskode`,passkeyButtonText:`Log ind med passkey`}},"login-password":{"login-password":{buttonText:`Log ind`,description:`Indtast din e-mailadresse og adgangskode for at logge ind.`,forgotPasswordText:`Har du glemt din adgangskode?`,hidePasswordText:`Skjul adgangskode`,"no-password":`Adgangskode er påkrævet`,pageTitle:"Log ind | ${clientName}","password-breached":`Vi har registreret et potentielt sikkerhedsproblem med denne konto. For at beskytte din konto har vi forhindret dette login. Nulstil venligst din adgangskode for at fortsætte.`,passwordPlaceholder:`Adgangskode`,showPasswordText:`Vis adgangskode`,signingInAs:"Logger ind som ${email}",title:`Indtast adgangskode`,unverifiedEmail:`Bekræft venligst din e-mailadresse, før du logger ind`,"user-blocked":`Din konto er blevet blokeret efter flere på hinanden følgende loginforsøg.`,"wrong-credentials":`Forkert adgangskode`,sendCodeText:`Log ind med kode`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,tooManyRequests:`For mange forsøg. Vent et øjeblik, og prøv igen.`,unexpectedError:`Noget gik galt. Prøv igen.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`e-mail`,authMethodEmailOrPhone:`e-mail eller telefonnummer`,authMethodPhone:`telefonnummer`,description:"Log ind med din ${authMethod}",emailOrPhonePlaceholder:`E-mailadresse eller telefonnummer`,emailPlaceholder:`E-mail-adresse`,invalidEmail:`Indtast venligst en gyldig e-mailadresse`,invalidIdentifier:`Indtast venligst en gyldig e-mailadresse eller telefonnummer`,invalidPhone:`Indtast venligst et gyldigt telefonnummer med landekode`,noEmail:`Indtast venligst din e-mailadresse`,noPhone:`Indtast venligst dit telefonnummer`,phonePlaceholder:`Telefonnummer`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,title:`Log ind med en kode`,userAccountDoesNotExist:`Brugerkontoen findes ikke`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Klik på linket i din e-mail for at logge ind`,description:"Vi sendte et link til ${username}. Klik på det for at logge ind.",resendText:`Send link igen`,spamText:`Har du ikke modtaget e-mailen? Tjek din spam-mappe.`,title:`Tjek din e-mail`}},mfa:Hf,"mfa-email":{"mfa-email":{buttonText:`Fortsæt`,codePlaceholder:`Indtast kode`,description:"Vi sendte en kode til ${email}","invalid-code":`Den indtastede kode er ugyldig`,pageTitle:"E-mailbekræftelse | ${clientName}",resendText:`Send kode igen`,title:`Tjek din e-mail`}},"mfa-otp":{"mfa-otp":{buttonText:`Fortsæt`,codePlaceholder:`Indtast kode`,description:`Indtast den 6-cifrede kode fra din autentificeringsapp`,"invalid-code":`Den indtastede kode er ugyldig`,pageTitle:"Indtast kode | ${clientName}",title:`Indtast din kode`},"mfa-totp-enrollment":{title:`Opsæt autentificeringsapp`,description:`Scan QR-koden nedenfor med din autentificeringsapp, og indtast derefter den 6-cifrede kode for at bekræfte`,secretLabel:`Eller indtast denne kode manuelt:`,codePlaceholder:`Indtast kode`,continueButtonText:`Bekræft og aktiver`,"invalid-code":`Den indtastede kode er ugyldig. Prøv venligst igen.`,"transaction-not-found":`Din tilmeldingssession er udløbet. Du skal starte forfra.`,pageTitle:"Opsæt autentificeringsapp | ${clientName}",unexpectedError:`Noget gik galt. Prøv venligst igen.`,enrollmentComplete:`MFA-tilmeldingen er fuldført. Du kan lukke denne side.`,pickAuthenticatorText:`Prøv en anden metode`,qrCodeAltText:`QR-kode`},"mfa-totp-challenge":{title:`Bekræft din identitet`,description:`Indtast den 6-cifrede kode fra din autentificeringsapp`,codePlaceholder:`Indtast kode`,continueButtonText:`Fortsæt`,"invalid-code":`Den indtastede kode er ugyldig`,"transaction-not-found":`Din session er udløbet. Du skal starte forfra.`,unexpectedError:`Noget gik galt. Prøv venligst igen.`,pageTitle:"Bekræft identitet | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Brug dit telefonnummer til at logge ind | ${clientName}",title:`Bekræft din identitet`,description:"Vi sendte en kode til ${phoneNumber}",continueButtonText:`Fortsæt`,changePhoneText:`Vælg et andet telefonnummer.`,smsButtonText:`SMS`,voiceButtonText:`Taleopkald`,chooseMessageTypeText:`Hvordan vil du modtage koden?`,pickAuthenticatorText:`Prøv en anden metode`,logoAltText:"${companyName}",codePlaceholder:`Indtast kode`,"send-sms-failed":`Der opstod et problem med at sende SMS'en`,"send-voice-failed":`Der opstod et problem med at foretage taleopkaldet`,"invalid-phone-format":`Telefonnummeret kan kun indeholde cifre.`,"invalid-phone":`Det ser ud til, at dit telefonnummer ikke er gyldigt. Kontrollér og prøv igen.`,"too-many-sms":`Du har overskredet det maksimale antal telefonbeskeder pr. time. Vent et par minutter og prøv igen.`,"too-many-voice":`Du har overskredet det maksimale antal telefonopkald pr. time. Vent et par minutter og prøv igen.`,"transaction-not-found":`Din registreringstransaktion er udløbet, du skal starte forfra.`,"no-phone":`Indtast et telefonnummer`,noCode:`Indtast bekræftelseskoden`,invalidCode:`Den indtastede kode er ugyldig. Prøv igen.`,unexpectedError:`Noget gik galt. Prøv igen.`,resendSuccess:`Vi sendte en ny kode til din telefon`,enrollmentComplete:`MFA-tilmeldingen er fuldført. Du kan lukke denne side.`},"mfa-phone-enrollment":{pageTitle:"Indtast dit telefonnummer for at logge ind med en telefonkode | ${clientName}",title:`Sikre din konto`,description:`Indtast din landekode og telefonnummer, som vi kan sende en 6-cifret kode til:`,continueButtonText:`Fortsæt`,smsButtonText:`SMS`,voiceButtonText:`Taleopkald`,chooseMessageTypeText:`Hvordan vil du modtage koden?`,pickAuthenticatorText:`Prøv en anden metode`,placeholder:`Indtast dit telefonnummer`,logoAltText:"${companyName}",selectCountryCode:"Vælg landekode, i øjeblikket sat til ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`Der opstod et problem med at sende SMS'en`,"send-voice-failed":`Der opstod et problem med at foretage taleopkaldet`,"sms-authenticator-error":`Vi kunne ikke sende SMS'en. Prøv igen senere.`,"invalid-phone-format":`Telefonnummeret kan kun indeholde cifre.`,"invalid-phone":`Det ser ud til, at dit telefonnummer ikke er gyldigt. Kontrollér og prøv igen.`,"too-many-sms":`Du har overskredet det maksimale antal telefonbeskeder pr. time. Vent et par minutter og prøv igen.`,"too-many-voice":`Du har overskredet det maksimale antal telefonopkald pr. time. Vent et par minutter og prøv igen.`,"transaction-not-found":`Din registreringstransaktion er udløbet, du skal starte forfra.`,"no-phone":`Indtast et telefonnummer`,"phone-is-too-short":`Telefonnummeret er for kort`,"phone-is-too-long":`Telefonnummeret er for langt`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Vælg bekræftelsesmetode | ${clientName}",title:`Vælg din bekræftelsesmetode`,description:`Vælg hvordan du vil bekræfte din identitet`,authenticatorAppLabel:`Godkendelsesapp`,authenticatorAppDescription:`Brug din godkendelsesapp til at få en bekræftelseskode`,smsLabel:`Sms-besked`,smsDescription:`Få en bekræftelseskode sendt til din telefon`,passkeyLabel:`Adgangsnøgle`,passkeyDescription:`Brug din enheds biometri eller sikkerhedsnøgle`}},"mfa-push":{"mfa-push":{description:`Vi sendte en notifikation til din enhed`,pageTitle:"Push-notifikation | ${clientName}",resendText:`Send notifikation igen`,title:`Godkend anmodningen`,useCodeText:`Indtast kode manuelt`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Fortsæt`,codePlaceholder:`Gendannelseskode`,description:`Indtast en af dine gendannelseskoder`,"invalid-code":`Den indtastede gendannelseskode er ugyldig`,pageTitle:"Gendannelseskode | ${clientName}",title:`Indtast gendannelseskode`}},"mfa-voice":{"mfa-voice":{buttonText:`Ring til mig`,codePlaceholder:`Indtast kode`,description:"Vi ringer til ${phoneNumber} med din kode","invalid-code":`Den indtastede kode er ugyldig`,pageTitle:"Taleopkald | ${clientName}",title:`Modtag et telefonopkald`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Prøv igen`,description:`Indsæt din sikkerhedsnøgle og følg instruktionerne`,pageTitle:"Sikkerhedsnøgle | ${clientName}",title:`Brug din sikkerhedsnøgle`}},passkeys:Uf,organizations:Wf,"reset-password":{"reset-password":{backToLoginText:`Tilbage til login`,buttonText:`Send e-mail til nulstilling af adgangskode`,codeExpired:`Din kode til nulstilling af adgangskode er udløbet. Anmod venligst om en ny.`,confirmPasswordLabel:`Bekræft adgangskode`,confirmPasswordPlaceholder:`Bekræft adgangskode`,description:`Klik på knappen nedenfor, så sender vi instruktioner om, hvordan du nulstiller din adgangskode.`,emailPlaceholder:`E-mail-adresse`,failed:`Nulstilling af adgangskode mislykkedes. Prøv venligst igen.`,"invalid-email-format":`Ugyldig e-mail`,"no-email":`Indtast venligst en e-mailadresse`,pageTitle:"Nulstil adgangskode | ${clientName}",passwordLabel:`Ny adgangskode`,passwordPlaceholder:`Ny adgangskode`,passwordTooWeak:`Adgangskoden er for svag`,passwordsDidntMatch:`Adgangskoderne matcher ikke`,successDescription:`Vi har sendt et link til nulstilling af adgangskode til din e-mailadresse.`,successTitle:`E-mail til nulstilling af adgangskode sendt`,title:`Har du glemt din adgangskode?`,"user-not-found":`Bruger ikke fundet`,noPassword:`Adgangskode er påkrævet`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`},"reset-password-code":{backToLoginText:`Tilbage til login`,buttonText:`Nulstil adgangskode`,codeLabel:`Nulstillingskode`,codePlaceholder:`Indtast 6-cifret kode`,confirmPasswordLabel:`Bekræft adgangskode`,confirmPasswordPlaceholder:`Bekræft adgangskode`,defaultDescription:`Indtast koden sendt til din e-mail og vælg en ny adgangskode`,description:"Vi sendte en kode til ${email}",failed:`Nulstilling af adgangskode mislykkedes. Prøv venligst igen.`,invalidCode:`Den indtastede kode er ugyldig eller udløbet`,noCode:`Indtast venligst nulstillingskoden`,pageTitle:"Indtast nulstillingskode | ${clientName}",passwordLabel:`Ny adgangskode`,passwordPlaceholder:`Ny adgangskode`,passwordTooWeak:`Adgangskoden er for svag`,passwordsDidntMatch:`Adgangskoderne matcher ikke`,resendFailed:`Kunne ikke sende koden igen. Prøv igen.`,resendSuccess:`En ny kode er blevet sendt til din e-mail`,resendText:`Send kode igen`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,title:`Indtast nulstillingskode`,noPassword:`Adgangskode er påkrævet`}},signup:Gf,"signup-id":{"signup-id":{buttonText:`Fortsæt`,description:`Vælg en adgangskode med en blanding af store og små bogstaver, tal og symboler.`,"email-already-exists":`E-mailen er allerede optaget`,emailPlaceholder:`E-mail-adresse`,federatedConnectionButtonText:"Fortsæt med ${connectionName}","invalid-email-format":`Ugyldig e-mail`,loginActionLinkText:`Log ind`,loginActionText:`Har du allerede en konto?`,"no-email":`Indtast venligst en e-mailadresse`,pageTitle:"Tilmeld dig | ${clientName}",phonePlaceholder:`Telefonnummer`,separatorText:`eller`,title:`Vælg adgangskode`,usernamePlaceholder:`Brugernavn`}},"signup-password":{"signup-password":{buttonText:`Fortsæt`,description:`Vælg en adgangskode med en blanding af store og små bogstaver, tal og symboler.`,hidePasswordText:`Skjul adgangskode`,"no-password":`Adgangskode er påkrævet`,pageTitle:"Tilmeld dig | ${clientName}","password-policy-not-met":`Adgangskoden opfylder ikke kravene`,"password-too-weak":`Adgangskoden er for svag`,passwordPlaceholder:`Adgangskode`,showPasswordText:`Vis adgangskode`,title:`Vælg adgangskode`,passwordTooShort:"Adgangskoden skal være mindst ${minLength} tegn",passwordMissingLowercase:`Adgangskoden skal indeholde mindst ét lille bogstav`,passwordMissingUppercase:`Adgangskoden skal indeholde mindst ét stort bogstav`,passwordMissingNumber:`Adgangskoden skal indeholde mindst ét tal`,passwordMissingSpecial:`Adgangskoden skal indeholde mindst ét specialtegn`,passwordReused:`Adgangskoden er blevet brugt for nylig og kan ikke genbruges`,passwordContainsPersonalInfo:`Adgangskoden må ikke indeholde personlige oplysninger som dit navn eller e-mail`,passwordContainsForbiddenWord:`Adgangskoden indeholder et forbudt ord`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Log ind`,codeLabel:`Bekræftelseskode`,codePlaceholder:`Indtast kode`,defaultDescription:`Indtast bekræftelseskoden, der blev sendt til din telefon`,description:"Vi sendte en kode til ${username}","invalid-code":`Ugyldig kode`,noCode:`Indtast venligst bekræftelseskoden`,pageTitle:"Indtast kode | ${clientName}",resendText:`Send koden igen`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,title:`Tjek din telefon`,unexpectedError:`Der opstod en uventet fejl`,tooManyRequests:`For mange forsøg. Vent et øjeblik, og prøv igen.`}},status:Kf},Qre=c({common:()=>qf,consent:()=>Jf,default:()=>$re,invitation:()=>Yf,login:()=>Xf,mfa:()=>Zf,organizations:()=>$f,passkeys:()=>Qf,signup:()=>ep,status:()=>tp}),qf={common:{alertListTitle:`Alerts`,backText:`Back`,backToLoginText:`Back to login`,cancelText:`Cancel`,closeText:`Close`,contactSupportText:`Contact Support`,continueText:`Continue`,copyrightText:"© ${currentYear} ${companyName}",errorText:`An error occurred`,hidePasswordText:`Hide password`,loadingText:`Loading...`,orText:`or`,privacyPolicyText:`Privacy Policy`,showPasswordText:`Show password`,termsOfServiceText:`Terms of Service`,termsShortText:`Terms`,tryAgainText:`Try again`},account:{title:`Account Settings`,description:`Manage your account`,editProfileLabel:`Edit Profile`,editProfileDetail:`Name, email, phone number, and picture`,securityLabel:`Security Settings`,securityDetail:`Multi-factor authentication`,securityMethodsCountOne:"${count} method configured",securityMethodsCount:"${count} methods configured",passkeysLabel:`Passkeys`,passkeysDetail:`Sign in without a password`,passkeysCountOne:"${count} passkey registered",passkeysCount:"${count} passkeys registered",linkedAccountsLabel:`Linked Accounts`,linkedAccountsDetail:`Connect social accounts`,linkedAccountsCountOne:"${count} linked account",linkedAccountsCount:"${count} linked accounts",deleteAccountLabel:`Delete Account`,deleteAccountDetail:`Permanently delete your account and data`,logoutText:`Log Out`},"account-profile":{title:`Edit Profile`,description:`Update your personal information`,givenNameLabel:`First Name`,familyNameLabel:`Last Name`,nicknameLabel:`Nickname`,phoneNumberLabel:`Phone Number`,pictureLabel:`Profile Picture URL`,buttonText:`Save Changes`,backToAccountText:`Back to Account`,updateFailed:`Failed to update profile`},"account-delete":{title:`Delete Account`,description:`Permanently delete your account`,warningTitle:`Warning: This action is permanent`,warningText:`All your data will be permanently deleted. This includes your profile, linked accounts, and authentication methods. This action cannot be undone.`,confirmationLabel:'Type "${confirmationWord}" to confirm',buttonText:`Delete My Account`,cancelText:`Cancel`,confirmationError:'Please type "${confirmationWord}" to confirm',deleteSuccess:`Your account has been deleted`,deleteFailed:`Failed to delete account`},"account-linked":{title:`Linked Accounts`,description:`Manage your linked accounts`,noLinkedAccounts:`No linked accounts.`,unlinkButtonText:`Unlink`,backToAccountText:`Back to Account`,unlinkSuccess:`Account unlinked successfully`,unlinkFailed:`Failed to unlink account`},"account-security":{title:`Security Settings`,description:`Manage your two-factor authentication methods`,noEnrollments:`You have no two-factor authentication methods configured.`,addedOn:"Added ${date}",removeButtonText:`Remove`,addTotpLabel:`Add Authenticator App`,addTotpDetail:`Use an app like Google Authenticator or Authy`,addSmsLabel:`Add Phone (SMS)`,addSmsDetail:`Receive verification codes via text message`,typeTotp:`Authenticator App`,typePhone:`Phone (SMS)`,typeEmail:`Email`,typePush:`Push Notification`,typeWebauthn:`Security Key`,backToAccountText:`Back to Account`,enrollmentNotFound:`Enrollment not found`,removeSuccess:`Authentication method removed`,removeFailed:`Failed to remove authentication method`},"account-passkeys":{title:`Passkeys`,description:`Manage your passkeys for passwordless sign-in`,noPasskeysText:`You have no passkeys registered.`,defaultPasskeyName:`Passkey`,syncedBadgeText:`Synced`,addedOnText:"Added ${date}",renameButtonText:`Rename`,removeButtonText:`Remove`,renamePromptText:`Enter a new name for this passkey:`,addPasskeyButtonText:`Add Passkey`,backToAccountText:`Back to Account`,logoutText:`Log Out`,passkeyNotFoundText:`Passkey not found`,passkeyRemovedText:`Passkey removed`,removeFailedText:`Failed to remove passkey`,invalidNameText:`Name must be between 1 and 64 characters`,passkeyRenamedText:`Passkey renamed`,renameFailedText:`Failed to rename passkey`,startRegistrationFailedText:`Failed to start passkey registration`,missingCredentialText:`Missing credential data`,challengeExpiredText:`Challenge expired. Please try again.`,invalidCredentialText:`Invalid credential data`,verificationFailedText:`Passkey verification failed`,passkeyAddedText:`Passkey added successfully`,registrationFailedText:`Passkey registration failed. Please try again.`},"account-mfa-phone-enrollment":{title:`Set Up Phone (SMS)`,description:`Enter your phone number to receive verification codes via SMS.`,phoneLabel:`Phone number`,sendCodeButtonText:`Send Verification Code`,backToSecurityText:`Back to Security Settings`,verifyTitle:`Verify Phone Number`,verifyDescription:`Enter the verification code sent to your phone.`,codeSentText:"A verification code has been sent to ${phoneNumber}",codeSentToYourPhoneText:`A verification code has been sent to your phone`,codeLabel:`Verification code`,codePlaceholder:`Enter verification code`,verifyButtonText:`Verify & Enable`,noPhoneText:`Please enter your phone number`,invalidPhoneText:`Please enter a valid phone number`,sendCodeFailedText:`Failed to send verification code. Please try again.`,noCodeText:`Please enter the verification code`,invalidCodeText:`Invalid code. Please try again.`,sessionInvalidText:`Something went wrong. Please start the enrollment again.`},"account-mfa-totp-enrollment":{title:`Set Up Authenticator App`,description:`Scan the QR code with your authenticator app, then enter the verification code below.`,qrCodeAltText:`QR Code`,manualKeyText:`Or enter this key manually:`,codeLabel:`Verification code`,codePlaceholder:`Enter 6-digit code`,verifyButtonText:`Verify & Enable`,backToSecurityText:`Back to Security Settings`,noCodeText:`Please enter the verification code`,invalidCodeText:`Invalid code. Please try again.`,verificationFailedText:`Verification failed. Please try again.`}},Jf={consent:{buttonText:`Accept`,cancelButtonText:`Deny`,description:"${clientName} is requesting access to your account",pageTitle:"Authorize | ${clientName}",scopesTitle:"This will allow ${clientName} to:",title:"Authorize ${clientName}",accessAccountText:"wants to access your ${tenantName} account as ${userName}.",notAuthenticated:`You need to sign in to continue.`,sessionExpired:`Your session has expired. Please try again.`,consentStorageNotConfigured:`Your consent could not be saved. Please contact the application owner.`},"connect-consent":{title:`Connect application`,description:"Allow ${domain} to act on your behalf?",connectAccountText:"wants to connect to your ${tenantName} account as ${userName}.",workspaceLabel:`Workspace:`,apiLabel:`For API:`,permissionsLabel:`Requested permissions:`,localDevBadge:`Local development`,localDevTooltip:`This site is a non-production local development origin. The connection will not work outside this machine or network.`,buttonText:`Connect`,cancelText:`Cancel`,notAuthenticated:`You need to sign in to continue.`,sessionExpired:`Your session has expired. Please try again.`,workspaceSelectionRequired:`Please choose a workspace first.`,noWorkspaceAccess:`You don't have access to that workspace`,workspaceNotFound:`Workspace not found`},"connect-tenant-select":{title:`Choose a workspace`,description:"Select which ${tenantName} workspace ${domain} should connect to.",noWorkspacesDescription:`No workspaces available`,noWorkspacesText:"You don't have access to any ${tenantName} workspaces. Ask an administrator to invite you.",cancelText:`Cancel`,notAuthenticated:`You need to sign in to continue.`,sessionExpired:`Your session has expired. Please try again.`,noWorkspaceSelected:`Please choose a workspace.`,noWorkspaceAccess:`You don't have access to that workspace`}},Yf={invitation:{acceptButtonText:`Accept invitation`,description:"${inviterName} has invited you to join ${organizationName} on ${clientName}",pageTitle:"Invitation | ${clientName}",title:`You've been invited`,defaultOrganizationName:`the organization`,acceptFailed:`We couldn't finish setting up your account. Please try again.`}},Xf={login:{alertListTitle:`Alerts`,buttonText:`Continue`,description:"Log in to ${clientName}.",editEmailText:`Edit`,emailPlaceholder:`Email address`,enterACodeBtn:`Sign in with a code`,enterACodeShortBtn:`Code`,federatedConnectionButtonText:"Continue with ${connectionName}",lastUsedText:`Last used`,footerLinkText:`Sign up`,footerText:`Don't have an account?`,forgotPasswordText:`Forgot password?`,hidePasswordText:`Hide password`,invalidEmail:`Invalid email`,invalidIdentifier:`Invalid email or username`,invitationDescription:"Log in to accept ${inviterName}'s invitation to join ${companyName} on ${clientName}.",invitationTitle:`You've Been Invited!`,logoAltText:"${companyName}","no-email":`Please enter an email address`,"no-password":`Password is required`,pageTitle:"Log in | ${clientName}",passwordLoginNotAvailable:`Password authentication is not available`,passwordPlaceholder:`Password`,phonePlaceholder:`Phone number`,separatorText:`Or`,sessionExpired:`Your session has expired. Please try again.`,showPasswordText:`Show password`,signupActionLinkText:`Sign up`,signupActionText:`Don't have an account?`,title:`Welcome`,tooManyFailedLogins:`Too many failed login attempts. Please try again later.`,unverifiedEmail:`Please verify your email address before logging in`,userAccountDoesNotExist:`User account does not exist`,usernamePlaceholder:`Username or email address`,usernameTooLong:"Username must be ${max} characters or less",usernameTooShort:"Username must be at least ${min} characters",passkeyButtonText:`Sign in with a passkey`,wrongCredentials:`Wrong username or password`,userBlocked:`Your account has been blocked after multiple consecutive login attempts.`,tooManyRequests:`Too many attempts. Please wait a moment and try again.`,unexpectedError:`Something went wrong. Please try again.`}},Zf={mfa:{backupCodeText:`Use backup code`,description:`Choose a verification method`,pageTitle:"Multi-Factor Authentication | ${clientName}",title:`Verify your identity`}},Qf={"passkey-enrollment-nudge":{title:`Secure your account with a passkey`,description:`Passkeys use your device's biometrics or PIN to sign you in faster and more securely.`,enrollButtonText:`Set up passkey`,snoozeButtonText:`Maybe later`,optOutLinkText:`Don't show this again`,pageTitle:"Set Up Passkey | ${clientName}"},"passkey-enrollment":{title:`Create your passkey`,description:`Follow the prompts from your browser to create a passkey for this account.`,errorMessage:`Failed to create passkey. Please try again.`,cancelLinkText:`Skip for now`,retryButtonText:`Try again`,enrollmentComplete:`Your passkey has been set up successfully. You can close this page.`,pageTitle:"Create Passkey | ${clientName}",sessionExpired:`Your session has expired. Please try again.`,enrollmentRequired:`You need to set up a passkey to continue.`,challengeExpired:`The request has expired. Please try again.`},"passkey-challenge":{title:`Sign in with a passkey`,description:`Follow the prompts from your browser to verify your identity.`,errorMessage:`Passkey authentication failed. Please try again.`,cancelLinkText:`Back to login`,retryButtonText:`Try again`,pageTitle:"Sign In with Passkey | ${clientName}",sessionExpired:`Your session has expired. Please try again.`}},$f={organizations:{description:`Choose which organization to log in to`,pageTitle:"Select Organization | ${clientName}",searchPlaceholder:`Search organizations`,title:`Select your organization`}},ep={signup:{buttonText:`Continue`,confirmPasswordPlaceholder:`Confirm password`,description:`Sign up to continue`,"email-already-exists":`This email is already registered`,emailPlaceholder:`Email address`,federatedConnectionButtonText:"Continue with ${connectionName}",hidePasswordText:`Hide password`,"invalid-email-format":`Email is not valid.`,loginActionLinkText:`Log in`,loginActionText:`Already have an account?`,"no-email":`Please enter an email address`,"no-password":`Password is required`,"no-username":`Username is required`,pageTitle:"Sign up | ${clientName}",passwordPlaceholder:`Password`,passwordsDidntMatch:`Passwords don't match`,phonePlaceholder:`Phone number`,privacyPolicyLinkText:`Privacy Policy`,separatorText:`Or`,sessionExpired:`Your session has expired. Please try again.`,showPasswordText:`Show password`,termsOfServiceLinkText:`Terms of Service`,termsText:`By signing up, you agree to our`,title:`Create your account`,"username-already-exists":`This username is already taken`,usernamePlaceholder:`Username`,verifyEmailText:`Please check your email to verify your account`,confirmPasswordRequired:`Please confirm your password`,createUserFailed:`We couldn't create your account. Please try again.`}},tp={status:{continueButtonText:`Continue`,errorTitle:`Error`,pageTitle:"Status | ${clientName}",successTitle:`Success`,title:`Status`}},$re={common:qf,consent:Jf,"device-flow":{"device-flow":{buttonText:`Continue`,codePlaceholder:`Enter code`,description:`Enter the code shown on your device`,"expired-code":`The code has expired`,"invalid-code":`The code you entered is invalid`,pageTitle:"Device Activation | ${clientName}",title:`Activate your device`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Continue`,codeLabel:`Verification Code`,codePlaceholder:`Enter code`,defaultDescription:`Enter the verification code sent to your email`,description:"We sent a code to ${email}","invalid-code":`The code you entered is invalid`,noCode:`Please enter the verification code`,pageTitle:"Enter Code | ${clientName}",resendText:`Resend code`,sessionExpired:`Your session has expired. Please try again.`,title:`Check your email`,unexpectedError:`An unexpected error occurred`,usePasswordText:`Log in with password`,tooManyRequests:`Too many attempts. Please wait a moment and try again.`}},"email-verification":{"email-verification":{description:"We sent an email to ${email}",linkAlreadyUsed:`This verification link has already been used. Please request a new one.`,linkInvalid:`This verification link is invalid.`,linkInvalidOrExpired:`This verification link is invalid or has expired. Please request a new one.`,linkInvalidTitle:`Verification link not valid`,linkWrongType:`This link can't be used to verify an email.`,pageTitle:"Verify Email | ${clientName}",resendText:`Resend email`,successDescription:`Your email has been verified successfully.`,successTitle:`Email verified`,title:`Verify your email`},"email-verification-code":{buttonText:`Continue`,codeLabel:`Verification code`,codePlaceholder:`Enter 6-digit code`,defaultDescription:`Enter the code we sent to your email to verify your address and continue.`,description:"We sent a code to ${email}. Enter it to verify your email address and continue.",invalidCode:`The code you entered is invalid or has expired`,noCode:`Please enter the verification code`,pageTitle:"Verify Email | ${clientName}",resendFailed:`Failed to resend the code. Please try again.`,resendSuccess:`A new code has been sent to your email`,resendText:`Resend code`,sessionExpired:`Your session has expired. Please try again.`,title:`Verify your email`,tooManyAttempts:`Too many attempts. Please try again later.`},"email-verification-link-sent":{defaultDescription:`We sent a verification link to your email. Click the link to verify your address, then log in again.`,description:"We sent a verification link to ${email}. Click the link to verify your address, then log in again.",pageTitle:"Verify Email | ${clientName}",resendFailed:`Failed to resend the email. Please try again.`,resendSuccess:`A new verification email has been sent`,resendText:`Resend email`,title:`Check your email`}},invitation:Yf,login:Xf,"login-id":{"login-id":{alertListTitle:`Alerts`,"auth0-users-validation":`Something went wrong, please try again later`,"authentication-failure":`We are sorry, something went wrong when attempting to log in`,buttonText:`Continue`,"captcha-client-failure":`We couldn't load the security challenge. Please try again. (Error code: #{errorCode})`,"captcha-validation-failure":`We are sorry, something went wrong while validating the captcha response. Please try again.`,captchaCodePlaceholder:`Enter the code shown above`,"custom-script-error-code":`Something went wrong, please try again later.`,description:"Log in to ${clientName}.",editEmailText:`Edit`,emailPlaceholder:`Email address`,federatedConnectionButtonText:"Continue with ${connectionName}",lastUsedText:`Last used`,footerLinkText:`Sign up`,footerText:`Don't have an account?`,forgotPasswordText:`Forgot password?`,hidePasswordText:`Hide password`,"invalid-captcha":`Solve the challenge question to verify you are not a robot.`,"invalid-code":`The code you entered is invalid`,"invalid-connection":`Invalid connection`,"invalid-email-format":`Email is not valid.`,"invalid-email-phone":`Enter a valid email address or phone number. Phone numbers must include the country code.`,"invalid-email-phone-username":`Enter a valid email address, phone number or username. Phone numbers must include the country code.`,"invalid-email-username":`Enter a valid email address or username`,"invalid-expired-code":`Invalid or expired user code`,"invalid-login-id":`Invalid Login ID entered`,"invalid-phone-username":`Enter a valid phone number or username. Phone numbers must include the country code.`,"invalid-recaptcha":`Select the checkbox to verify you are not a robot.`,"invalid-username":"Username can only contain alphanumeric characters or: '${characters}'. Username should have between ${min} and ${max} characters.",invitationDescription:"Log in to accept ${inviterName}'s invitation to join ${companyName} on ${clientName}.",invitationTitle:`You've Been Invited!`,"ip-blocked":`We have detected suspicious login behavior and further attempts will be blocked. Please contact the administrator.`,logoAltText:"${companyName}","no-db-connection":`Invalid connection`,"no-email":`Please enter an email address`,"no-email-phone":`Email address or phone number is required`,"no-email-phone-username":`Phone number, username, or email address is required`,"no-email-username":`Email address or username is required`,"no-password":`Password is required`,"no-phone":`Please enter a phone number`,"no-phone-username":`Phone number or username is required`,"no-username":`Username is required`,pageTitle:"Log in | ${clientName}","password-breached":`We have detected a potential security issue with this account. To protect your account, we have prevented this login. Please reset your password to proceed.`,passwordPlaceholder:`Password`,phoneOrEmailPlaceholder:`Phone number or Email address`,phoneOrUsernameOrEmailPlaceholder:`Phone or Username or Email`,phoneOrUsernamePlaceholder:`Phone Number or Username`,phonePlaceholder:`Phone number`,"same-user-login":`Too many login attempts for this user. Please wait, and try again later.`,selectCountryCode:"Select country code, currently set to ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`Or`,sessionExpired:`Your session has expired. Please try again.`,showPasswordText:`Show password`,signupActionLinkText:`Sign up`,signupActionText:`Don't have an account?`,termsAndConditionsTemplate:'By continuing, you agree to our <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">Terms and Conditions</a>.',title:`Welcome`,"user-blocked":`Your account has been blocked after multiple consecutive login attempts.`,userAccountDoesNotExist:`User account does not exist`,usernameOnlyPlaceholder:`Username`,usernameOrEmailPlaceholder:`Username or Email address`,usernamePlaceholder:`Username or email address`,usernameTooLong:"Username must be ${max} characters or less",usernameTooShort:"Username must be at least ${min} characters","wrong-credentials":`Wrong username or password`,"wrong-email-credentials":`Wrong email or password`,"wrong-email-phone-credentials":`Incorrect email address, phone number, or password. Phone numbers must include the country code.`,"wrong-email-phone-username-credentials":`Incorrect email address, phone number, username, or password. Phone numbers must include the country code.`,"wrong-email-username-credentials":`Incorrect email address, username, or password`,"wrong-phone-credentials":`Incorrect phone number or password`,"wrong-phone-username-credentials":`Incorrect phone number, username or password. Phone numbers must include the country code.`,passkeyButtonText:`Sign in with a passkey`,"wrong-username-credentials":`Incorrect username or password`}},"login-password":{"login-password":{buttonText:`Continue`,description:"Log in to ${clientName}",forgotPasswordText:`Forgot password?`,hidePasswordText:`Hide password`,"no-password":`Password is required`,pageTitle:"Log in | ${clientName}","password-breached":`We have detected a potential security issue with this account. To protect your account, we have prevented this login. Please reset your password to proceed.`,passwordPlaceholder:`Password`,showPasswordText:`Show password`,signingInAs:"Signing in as ${email}",title:`Enter your password`,unverifiedEmail:`Please verify your email address before logging in`,"user-blocked":`Your account has been blocked after multiple consecutive login attempts.`,"wrong-credentials":`Wrong password`,sendCodeText:`Log in with a code`,sessionExpired:`Your session has expired. Please try again.`,tooManyRequests:`Too many attempts. Please wait a moment and try again.`,unexpectedError:`Something went wrong. Please try again.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`email`,authMethodEmailOrPhone:`email or phone number`,authMethodPhone:`phone number`,description:"Sign in using your ${authMethod}",emailOrPhonePlaceholder:`Email address or phone number`,emailPlaceholder:`Email address`,invalidEmail:`Please enter a valid email address`,invalidIdentifier:`Please enter a valid email address or phone number`,invalidPhone:`Please enter a valid phone number with country code`,noEmail:`Please enter your email address`,noPhone:`Please enter your phone number`,phonePlaceholder:`Phone number`,sessionExpired:`Your session has expired. Please try again.`,title:`Sign in with a code`,userAccountDoesNotExist:`User account does not exist`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Click the link in your email to sign in`,description:"We sent a link to ${username}. Click it to sign in.",resendText:`Resend link`,spamText:`Didn't receive the email? Check your spam folder.`,title:`Check your email`}},mfa:Zf,"mfa-email":{"mfa-email":{buttonText:`Continue`,codePlaceholder:`Enter code`,description:"We sent a code to ${email}","invalid-code":`The code you entered is invalid`,pageTitle:"Email Verification | ${clientName}",resendText:`Resend code`,title:`Check your email`}},"mfa-otp":{"mfa-otp":{buttonText:`Continue`,codePlaceholder:`Enter code`,description:`Enter the 6-digit code from your authenticator app`,"invalid-code":`The code you entered is invalid`,pageTitle:"Enter Code | ${clientName}",title:`Enter your code`},"mfa-totp-enrollment":{title:`Set up authenticator`,description:`Scan the QR code below with your authenticator app, then enter the 6-digit code to verify`,secretLabel:`Or enter this code manually:`,codePlaceholder:`Enter code`,continueButtonText:`Verify & Activate`,"invalid-code":`The code you entered is invalid. Please try again.`,"transaction-not-found":`Your enrollment transaction expired, you will need to start again.`,unexpectedError:`Something went wrong. Please try again.`,pageTitle:"Set up Authenticator | ${clientName}",enrollmentComplete:`MFA enrollment is complete. You can close this page.`,pickAuthenticatorText:`Try another method`,qrCodeAltText:`QR code`},"mfa-totp-challenge":{title:`Verify your identity`,description:`Enter the 6-digit code from your authenticator app`,codePlaceholder:`Enter code`,continueButtonText:`Continue`,"invalid-code":`The code you entered is invalid`,"transaction-not-found":`Your enrollment transaction expired, you will need to start again.`,unexpectedError:`Something went wrong. Please try again.`,pageTitle:"Verify Identity | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Use your phone number to log in | ${clientName}",title:`Verify Your Identity`,description:"We sent a code to ${phoneNumber}",continueButtonText:`Continue`,changePhoneText:`Choose another phone number.`,smsButtonText:`Text message`,voiceButtonText:`Voice call`,chooseMessageTypeText:`How do you want to receive the code?`,pickAuthenticatorText:`Try another method`,logoAltText:"${companyName}",codePlaceholder:`Enter code`,"send-sms-failed":`There was a problem sending the SMS`,"send-voice-failed":`There was a problem making the voice call`,"invalid-phone-format":`Phone number can only include digits.`,"invalid-phone":`It seems that your phone number is not valid. Please check and retry.`,"too-many-sms":`You have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again.`,"too-many-voice":`You have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again.`,"transaction-not-found":`Your enrollment transaction expired, you will need to start again.`,"no-phone":`Please enter a phone number`,noCode:`Please enter the verification code`,invalidCode:`The code you entered is invalid. Please try again.`,unexpectedError:`Something went wrong. Please try again.`,resendSuccess:`We sent a new code to your phone`,enrollmentComplete:`MFA enrollment is complete. You can close this page.`},"mfa-phone-enrollment":{pageTitle:"Enter your phone number to log in using a phone code | ${clientName}",title:`Secure Your Account`,description:`Enter your country code and phone number to which we can send a 6-digit code:`,continueButtonText:`Continue`,smsButtonText:`Text message`,voiceButtonText:`Voice call`,chooseMessageTypeText:`How do you want to receive the code?`,pickAuthenticatorText:`Try another method`,placeholder:`Enter your phone number`,logoAltText:"${companyName}",selectCountryCode:"Select country code, currently set to ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`There was a problem sending the SMS`,"send-voice-failed":`There was a problem making the voice call`,"sms-authenticator-error":`We couldn't send the SMS. Please try again later.`,"invalid-phone-format":`Phone number can only include digits.`,"invalid-phone":`It seems that your phone number is not valid. Please check and retry.`,"too-many-sms":`You have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again.`,"too-many-voice":`You have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again.`,"transaction-not-found":`Your enrollment transaction expired, you will need to start again.`,"no-phone":`Please enter a phone number`,"phone-is-too-short":`Phone number is too short`,"phone-is-too-long":`Phone number is too long`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Choose Verification Method | ${clientName}",title:`Choose your verification method`,description:`Select how you'd like to verify your identity`,authenticatorAppLabel:`Authenticator App`,authenticatorAppDescription:`Use your authenticator app to get a verification code`,smsLabel:`Text Message`,smsDescription:`Get a verification code sent to your phone`,passkeyLabel:`Passkey`,passkeyDescription:`Use your device's biometrics or security key`}},"mfa-push":{"mfa-push":{description:`We sent a notification to your device`,pageTitle:"Push Notification | ${clientName}",resendText:`Resend notification`,title:`Approve the request`,useCodeText:`Enter code manually`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Continue`,codePlaceholder:`Recovery code`,description:`Enter one of your recovery codes`,"invalid-code":`The recovery code you entered is invalid`,pageTitle:"Recovery Code | ${clientName}",title:`Enter recovery code`}},"mfa-voice":{"mfa-voice":{buttonText:`Call me`,codePlaceholder:`Enter code`,description:"We will call ${phoneNumber} with your code","invalid-code":`The code you entered is invalid`,pageTitle:"Voice Call | ${clientName}",title:`Receive a phone call`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Try again`,description:`Insert your security key and follow the instructions`,pageTitle:"Security Key | ${clientName}",title:`Use your security key`}},passkeys:Qf,organizations:$f,"reset-password":{"reset-password":{backToLoginText:`Back to login`,buttonText:`Continue`,codeExpired:`Your password reset code has expired. Please request a new one.`,confirmPasswordLabel:`Confirm Password`,confirmPasswordPlaceholder:`Confirm password`,description:`Enter your email to reset your password`,emailPlaceholder:`Email address`,failed:`Password reset failed. Please try again.`,"invalid-email-format":`Email is not valid.`,"no-email":`Please enter an email address`,pageTitle:"Reset Password | ${clientName}",passwordLabel:`New Password`,passwordPlaceholder:`New password`,passwordTooWeak:`Password is too weak`,passwordsDidntMatch:`Passwords don't match`,successDescription:`We have sent a password reset link to your email address.`,successTitle:`Check your email`,title:`Forgot your password?`,"user-not-found":`User not found`,noPassword:`Password is required`,sessionExpired:`Your session has expired. Please try again.`},"reset-password-code":{backToLoginText:`Back to login`,buttonText:`Reset Password`,codeLabel:`Reset Code`,codePlaceholder:`Enter 6-digit code`,confirmPasswordLabel:`Confirm Password`,confirmPasswordPlaceholder:`Confirm password`,defaultDescription:`Enter the code sent to your email and choose a new password`,description:"We sent a code to ${email}",failed:`Password reset failed. Please try again.`,invalidCode:`The code you entered is invalid or has expired`,noCode:`Please enter the reset code`,pageTitle:"Enter Reset Code | ${clientName}",passwordLabel:`New Password`,passwordPlaceholder:`New password`,passwordTooWeak:`Password is too weak`,passwordsDidntMatch:`Passwords don't match`,resendFailed:`Failed to resend the code. Please try again.`,resendSuccess:`A new code has been sent to your email`,resendText:`Resend code`,sessionExpired:`Your session has expired. Please try again.`,title:`Enter reset code`,noPassword:`Password is required`}},signup:ep,"signup-id":{"signup-id":{buttonText:`Continue`,description:`Sign up to continue`,"email-already-exists":`This email is already registered`,emailPlaceholder:`Email address`,federatedConnectionButtonText:"Continue with ${connectionName}","invalid-email-format":`Email is not valid.`,loginActionLinkText:`Log in`,loginActionText:`Already have an account?`,"no-email":`Please enter an email address`,pageTitle:"Sign up | ${clientName}",phonePlaceholder:`Phone number`,separatorText:`Or`,title:`Create your account`,usernamePlaceholder:`Username`}},"signup-password":{"signup-password":{buttonText:`Continue`,description:`Sign up to continue`,hidePasswordText:`Hide password`,"no-password":`Password is required`,pageTitle:"Sign up | ${clientName}","password-policy-not-met":`Password does not meet the requirements`,"password-too-weak":`Password is too weak`,passwordPlaceholder:`Password`,showPasswordText:`Show password`,title:`Create your password`,passwordTooShort:"Password must be at least ${minLength} characters",passwordMissingLowercase:`Password must contain at least one lowercase letter`,passwordMissingUppercase:`Password must contain at least one uppercase letter`,passwordMissingNumber:`Password must contain at least one number`,passwordMissingSpecial:`Password must contain at least one special character`,passwordReused:`Password was used recently and cannot be reused`,passwordContainsPersonalInfo:`Password cannot contain personal information like your name or email`,passwordContainsForbiddenWord:`Password contains a forbidden word`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Continue`,codeLabel:`Verification Code`,codePlaceholder:`Enter code`,defaultDescription:`Enter the verification code sent to your phone`,description:"We sent a code to ${username}","invalid-code":`The code you entered is invalid`,noCode:`Please enter the verification code`,pageTitle:"Enter Code | ${clientName}",resendText:`Resend code`,sessionExpired:`Your session has expired. Please try again.`,title:`Check your phone`,unexpectedError:`An unexpected error occurred`,tooManyRequests:`Too many attempts. Please wait a moment and try again.`}},status:tp},eie=c({common:()=>np,consent:()=>rp,default:()=>tie,invitation:()=>ip,login:()=>ap,mfa:()=>op,organizations:()=>cp,passkeys:()=>sp,signup:()=>lp,status:()=>up}),np={common:{alertListTitle:`Ilmoitukset`,backText:`Palaa takaisin`,backToLoginText:`Takaisin kirjautumiseen`,cancelText:`Palaa takaisin`,closeText:`Sulje`,contactSupportText:`Tarvitsetko apua?`,continueText:`Jatka`,copyrightText:"© ${currentYear} ${companyName}",errorText:`Jokin meni pieleen. Yritä uudelleen.`,hidePasswordText:`Piilota salasana`,loadingText:`Ladataan...`,orText:`tai`,privacyPolicyText:`Tietosuojakäytäntö`,showPasswordText:`Näytä salasana`,termsOfServiceText:`Käyttöehdot`,termsShortText:`Ehdot`,tryAgainText:`Yritä uudelleen`},account:{title:`Tilin asetukset`,description:`Hallitse tiliäsi`,editProfileLabel:`Muokkaa profiilia`,editProfileDetail:`Nimi, sähköposti, puhelinnumero ja kuva`,securityLabel:`Suojausasetukset`,securityDetail:`Monivaiheinen tunnistautuminen`,securityMethodsCountOne:"${count} menetelmä määritetty",securityMethodsCount:"${count} menetelmää määritetty",passkeysLabel:`Tunnistautumisavaimet`,passkeysDetail:`Kirjaudu ilman salasanaa`,passkeysCountOne:"${count} tunnistautumisavain rekisteröity",passkeysCount:"${count} tunnistautumisavainta rekisteröity",linkedAccountsLabel:`Linkitetyt tilit`,linkedAccountsDetail:`Yhdistä sosiaalisen median tilejä`,linkedAccountsCountOne:"${count} linkitetty tili",linkedAccountsCount:"${count} linkitettyä tiliä",deleteAccountLabel:`Poista tili`,deleteAccountDetail:`Poista tilisi ja tietosi pysyvästi`,logoutText:`Kirjaudu ulos`},"account-profile":{title:`Muokkaa profiilia`,description:`Päivitä henkilötietosi`,givenNameLabel:`Etunimi`,familyNameLabel:`Sukunimi`,nicknameLabel:`Lempinimi`,phoneNumberLabel:`Puhelinnumero`,pictureLabel:`Profiilikuvan URL-osoite`,buttonText:`Tallenna muutokset`,backToAccountText:`Takaisin tiliin`,updateFailed:`Profiilin päivittäminen epäonnistui`},"account-delete":{title:`Poista tili`,description:`Poista tilisi pysyvästi`,warningTitle:`Varoitus: Tämä toiminto on pysyvä`,warningText:`Kaikki tietosi poistetaan pysyvästi. Tämä koskee profiiliasi, linkitettyjä tilejä ja tunnistautumismenetelmiä. Toimintoa ei voi peruuttaa.`,confirmationLabel:'Vahvista kirjoittamalla "${confirmationWord}"',buttonText:`Poista tilini`,cancelText:`Peruuta`,confirmationError:'Vahvista kirjoittamalla "${confirmationWord}"',deleteSuccess:`Tilisi on poistettu`,deleteFailed:`Tilin poistaminen epäonnistui`},"account-linked":{title:`Linkitetyt tilit`,description:`Hallitse linkitettyjä tilejäsi`,noLinkedAccounts:`Ei linkitettyjä tilejä.`,unlinkButtonText:`Poista linkitys`,backToAccountText:`Takaisin tiliin`,unlinkSuccess:`Tilin linkitys poistettu`,unlinkFailed:`Linkityksen poistaminen epäonnistui`},"account-security":{title:`Suojausasetukset`,description:`Hallitse kaksivaiheisen tunnistautumisen menetelmiäsi`,noEnrollments:`Sinulla ei ole määritettyjä kaksivaiheisen tunnistautumisen menetelmiä.`,addedOn:"Lisätty ${date}",removeButtonText:`Poista`,addTotpLabel:`Lisää todennussovellus`,addTotpDetail:`Käytä esimerkiksi Google Authenticator- tai Authy-sovellusta`,addSmsLabel:`Lisää puhelin (tekstiviesti)`,addSmsDetail:`Vastaanota vahvistuskoodit tekstiviestinä`,typeTotp:`Todennussovellus`,typePhone:`Puhelin (tekstiviesti)`,typeEmail:`Sähköposti`,typePush:`Push-ilmoitus`,typeWebauthn:`Suojausavain`,backToAccountText:`Takaisin tiliin`,enrollmentNotFound:`Menetelmää ei löytynyt`,removeSuccess:`Tunnistautumismenetelmä poistettu`,removeFailed:`Tunnistautumismenetelmän poistaminen epäonnistui`},"account-passkeys":{title:`Tunnistautumisavaimet`,description:`Hallitse tunnistautumisavaimiasi salasanatonta kirjautumista varten`,noPasskeysText:`Sinulla ei ole rekisteröityjä tunnistautumisavaimia.`,defaultPasskeyName:`Tunnistautumisavain`,syncedBadgeText:`Synkronoitu`,addedOnText:"Lisätty ${date}",renameButtonText:`Nimeä uudelleen`,removeButtonText:`Poista`,renamePromptText:`Anna tälle tunnistautumisavaimelle uusi nimi:`,addPasskeyButtonText:`Lisää tunnistautumisavain`,backToAccountText:`Takaisin tiliin`,logoutText:`Kirjaudu ulos`,passkeyNotFoundText:`Tunnistautumisavainta ei löytynyt`,passkeyRemovedText:`Tunnistautumisavain poistettu`,removeFailedText:`Tunnistautumisavaimen poistaminen epäonnistui`,invalidNameText:`Nimen on oltava 1–64 merkkiä pitkä`,passkeyRenamedText:`Tunnistautumisavain nimetty uudelleen`,renameFailedText:`Tunnistautumisavaimen nimeäminen uudelleen epäonnistui`,startRegistrationFailedText:`Tunnistautumisavaimen rekisteröinnin aloittaminen epäonnistui`,missingCredentialText:`Tunnistautumisavaimen tiedot puuttuvat`,challengeExpiredText:`Pyyntö on vanhentunut. Yritä uudelleen.`,invalidCredentialText:`Tunnistautumisavaimen tiedot ovat virheelliset`,verificationFailedText:`Tunnistautumisavaimen vahvistus epäonnistui`,passkeyAddedText:`Tunnistautumisavain lisätty`,registrationFailedText:`Tunnistautumisavaimen rekisteröinti epäonnistui. Yritä uudelleen.`},"account-mfa-phone-enrollment":{title:`Ota puhelin käyttöön (tekstiviesti)`,description:`Syötä puhelinnumerosi saadaksesi vahvistuskoodit tekstiviestillä.`,phoneLabel:`Puhelinnumero`,sendCodeButtonText:`Lähetä vahvistuskoodi`,backToSecurityText:`Takaisin suojausasetuksiin`,verifyTitle:`Vahvista puhelinnumero`,verifyDescription:`Syötä puhelimeesi lähetetty vahvistuskoodi.`,codeSentText:"Vahvistuskoodi on lähetetty numeroon ${phoneNumber}",codeSentToYourPhoneText:`Vahvistuskoodi on lähetetty puhelimeesi`,codeLabel:`Vahvistuskoodi`,codePlaceholder:`Syötä vahvistuskoodi`,verifyButtonText:`Vahvista ja ota käyttöön`,noPhoneText:`Syötä puhelinnumerosi`,invalidPhoneText:`Syötä kelvollinen puhelinnumero`,sendCodeFailedText:`Vahvistuskoodin lähettäminen epäonnistui. Yritä uudelleen.`,noCodeText:`Syötä vahvistuskoodi`,invalidCodeText:`Virheellinen koodi. Yritä uudelleen.`,sessionInvalidText:`Jokin meni pieleen. Aloita rekisteröinti uudelleen.`},"account-mfa-totp-enrollment":{title:`Ota todentajasovellus käyttöön`,description:`Skannaa QR-koodi todentajasovelluksellasi ja syötä sitten vahvistuskoodi alle.`,qrCodeAltText:`QR-koodi`,manualKeyText:`Tai syötä tämä avain manuaalisesti:`,codeLabel:`Vahvistuskoodi`,codePlaceholder:`Syötä 6-numeroinen koodi`,verifyButtonText:`Vahvista ja ota käyttöön`,backToSecurityText:`Takaisin suojausasetuksiin`,noCodeText:`Syötä vahvistuskoodi`,invalidCodeText:`Virheellinen koodi. Yritä uudelleen.`,verificationFailedText:`Vahvistus epäonnistui. Yritä uudelleen.`}},rp={consent:{buttonText:`Hyväksy`,cancelButtonText:`Hylkää`,description:"${clientName} pyytää pääsyä tilillesi",pageTitle:"Valtuuta | ${clientName}",scopesTitle:"Tämä sallii sovelluksen ${clientName}:",title:"Valtuuta ${clientName}",accessAccountText:"haluaa käyttää ${tenantName}-tiliäsi käyttäjänä ${userName}.",notAuthenticated:`Kirjaudu sisään jatkaaksesi.`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,consentStorageNotConfigured:`Suostumustasi ei voitu tallentaa. Ota yhteyttä sovelluksen omistajaan.`},"connect-consent":{title:`Yhdistä sovellus`,description:"Sallitaanko ${domain} toimia puolestasi?",connectAccountText:"haluaa yhdistää ${tenantName}-tiliisi käyttäjänä ${userName}.",workspaceLabel:`Työtila:`,apiLabel:`Rajapinta:`,permissionsLabel:`Pyydetyt oikeudet:`,localDevBadge:`Paikallinen kehitys`,localDevTooltip:`Tämä sivusto on paikallinen kehitysympäristö, ei tuotanto. Yhteys ei toimi tämän laitteen tai verkon ulkopuolella.`,buttonText:`Yhdistä`,cancelText:`Peruuta`,notAuthenticated:`Kirjaudu sisään jatkaaksesi.`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,workspaceSelectionRequired:`Valitse ensin työtila.`,noWorkspaceAccess:`Sinulla ei ole pääsyä tähän työtilaan`,workspaceNotFound:`Työtilaa ei löytynyt`},"connect-tenant-select":{title:`Valitse työtila`,description:"Valitse, mihin ${tenantName}-työtilaan ${domain} yhdistetään.",noWorkspacesDescription:`Ei käytettävissä olevia työtiloja`,noWorkspacesText:"Sinulla ei ole pääsyä yhteenkään ${tenantName}-työtilaan. Pyydä ylläpitäjää kutsumaan sinut.",cancelText:`Peruuta`,notAuthenticated:`Kirjaudu sisään jatkaaksesi.`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,noWorkspaceSelected:`Valitse työtila.`,noWorkspaceAccess:`Sinulla ei ole pääsyä tähän työtilaan`}},ip={invitation:{acceptButtonText:`Hyväksy kutsu`,description:"${inviterName} on kutsunut sinut liittymään organisaatioon ${organizationName} palvelussa ${clientName}",pageTitle:"Kutsu | ${clientName}",title:`Sinut on kutsuttu`,defaultOrganizationName:`(tuntematon)`,acceptFailed:`Tilin käyttöönottoa ei voitu viimeistellä. Yritä uudelleen.`}},ap={login:{alertListTitle:`Ilmoitukset`,buttonText:`Jatka`,description:"Kirjaudu sisään ${clientName}.",editEmailText:`Muokkaa`,emailPlaceholder:`Sähköpostiosoite`,enterACodeBtn:`Kirjaudu koodilla`,enterACodeShortBtn:`Koodi`,federatedConnectionButtonText:"Jatka palvelulla ${connectionName}",lastUsedText:`Viimeksi käytetty`,footerLinkText:`Rekisteröidy`,footerText:`Eikö sinulla ole tiliä?`,forgotPasswordText:`Unohditko salasanan?`,hidePasswordText:`Piilota salasana`,invalidEmail:`Virheellinen sähköpostiosoite`,invalidIdentifier:`Virheellinen sähköpostiosoite tai käyttäjänimi`,invitationDescription:"Kirjaudu sisään hyväksyäksesi käyttäjän ${inviterName} kutsun liittyä palveluun ${companyName} sovelluksessa ${clientName}.",invitationTitle:`Sinut on kutsuttu!`,logoAltText:"${companyName}","no-email":`Sähköpostiosoite vaaditaan`,"no-password":`Salasana vaaditaan`,pageTitle:"Kirjaudu sisään | ${clientName}",passwordLoginNotAvailable:`Salasanakirjautuminen ei ole käytettävissä`,passwordPlaceholder:`Salasana`,phonePlaceholder:`Puhelinnumero`,separatorText:`tai`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,showPasswordText:`Näytä salasana`,signupActionLinkText:`Rekisteröidy`,signupActionText:`Eikö sinulla ole tiliä?`,title:`Tervetuloa`,tooManyFailedLogins:`Liian monta epäonnistunutta kirjautumisyritystä. Yritä myöhemmin uudelleen.`,unverifiedEmail:`Vahvista sähköpostiosoitteesi ennen kirjautumista`,userAccountDoesNotExist:`Käyttäjätiliä ei ole olemassa`,usernamePlaceholder:`Käyttäjänimi tai sähköpostiosoite`,usernameTooLong:"Käyttäjänimen on oltava enintään ${max} merkkiä",usernameTooShort:"Käyttäjänimen on oltava vähintään ${min} merkkiä",wrongCredentials:`Väärä käyttäjänimi tai salasana`,passkeyButtonText:`Kirjaudu sisään passkey:llä`,userBlocked:`Tilisi on estetty useiden peräkkäisten kirjautumisyritysten jälkeen.`,tooManyRequests:`Liian monta yritystä. Odota hetki ja yritä uudelleen.`,unexpectedError:`Jokin meni pieleen. Yritä uudelleen.`}},op={mfa:{backupCodeText:`Käytä varakoodia`,description:`Valitse vahvistusmenetelmä`,pageTitle:"Monivaiheinen tunnistautuminen | ${clientName}",title:`Vahvista henkilöllisyytesi`}},sp={"passkey-enrollment-nudge":{title:`Suojaa tilisi tunnistautumisavaimella`,description:`Tunnistautumisavaimet käyttävät laitteesi biometriikkaa tai PIN-koodia kirjautuaksesi nopeammin ja turvallisemmin.`,enrollButtonText:`Määritä tunnistautumisavain`,snoozeButtonText:`Ehkä myöhemmin`,optOutLinkText:`Älä näytä tätä uudelleen`,pageTitle:"Määritä Tunnistautumisavain | ${clientName}"},"passkey-enrollment":{title:`Luo tunnistautumisavain`,description:`Seuraa selaimesi ohjeita luodaksesi tunnistautumisavaimen tälle tilille.`,errorMessage:`Tunnistautumisavaimen luominen epäonnistui. Yritä uudelleen.`,cancelLinkText:`Ohita toistaiseksi`,retryButtonText:`Yritä uudelleen`,enrollmentComplete:`Tunnistautumisavaimesi on määritetty onnistuneesti. Voit sulkea tämän sivun.`,pageTitle:"Luo Tunnistautumisavain | ${clientName}",sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,enrollmentRequired:`Sinun on luotava tunnistautumisavain jatkaaksesi.`,challengeExpired:`Pyyntö on vanhentunut. Yritä uudelleen.`},"passkey-challenge":{title:`Kirjaudu sisään passkey:llä`,description:`Noudata selaimesi ohjeita henkilöllisyytesi vahvistamiseksi.`,errorMessage:`Passkey-todennus epäonnistui. Yritä uudelleen.`,cancelLinkText:`Takaisin kirjautumiseen`,retryButtonText:`Yritä uudelleen`,pageTitle:"Kirjaudu sisään passkey:llä | ${clientName}",sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`}},cp={organizations:{description:`Valitse organisaatio, johon haluat kirjautua`,pageTitle:"Valitse organisaatio | ${clientName}",searchPlaceholder:`Hae organisaatioita`,title:`Valitse organisaatiosi`}},lp={signup:{buttonText:`Rekisteröityminen`,confirmPasswordPlaceholder:`Vahvista salasana`,description:`Valitse salasana, jossa on isoja ja pieniä kirjaimia, numeroita ja symboleja.`,"email-already-exists":`Sähköposti on jo varattu`,emailPlaceholder:`Sähköpostiosoite`,federatedConnectionButtonText:"Jatka palvelulla ${connectionName}",hidePasswordText:`Piilota salasana`,"invalid-email-format":`Virheellinen sähköpostiosoite`,loginActionLinkText:`Kirjaudu sisään`,loginActionText:`Onko sinulla jo tili?`,"no-email":`Sähköpostiosoite vaaditaan`,"no-password":`Salasana vaaditaan`,"no-username":`Käyttäjänimi vaaditaan`,pageTitle:"Rekisteröidy | ${clientName}",passwordPlaceholder:`Salasana`,passwordsDidntMatch:`Salasanat eivät täsmää`,phonePlaceholder:`Puhelinnumero`,privacyPolicyLinkText:`Tietosuojakäytäntö`,separatorText:`tai`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,showPasswordText:`Näytä salasana`,termsOfServiceLinkText:`Käyttöehdot`,termsText:`Rekisteröitymällä hyväksyt`,title:`Valitse salasana`,"username-already-exists":`Tämä käyttäjänimi on jo varattu`,usernamePlaceholder:`Käyttäjänimi`,verifyEmailText:`Tarkista sähköpostisi vahvistaaksesi tilisi`,confirmPasswordRequired:`Vahvista salasanasi`,createUserFailed:`Tilin luominen epäonnistui. Yritä uudelleen.`}},up={status:{continueButtonText:`Jatka`,errorTitle:`Virhe`,pageTitle:"Tila | ${clientName}",successTitle:`Onnistui`,title:`Tila`}},tie={common:np,consent:rp,"device-flow":{"device-flow":{buttonText:`Jatka`,codePlaceholder:`Syötä koodi`,description:`Syötä laitteessasi näkyvä koodi`,"expired-code":`Koodi on vanhentunut`,"invalid-code":`Syöttämäsi koodi on virheellinen`,pageTitle:"Laitteen aktivointi | ${clientName}",title:`Aktivoi laitteesi`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Kirjaudu sisään`,codeLabel:`Vahvistuskoodi`,codePlaceholder:`Syötä koodi`,defaultDescription:`Syötä sähköpostiisi lähetetty vahvistuskoodi`,description:"Lähetimme koodin osoitteeseen ${email}","invalid-code":`Virheellinen koodi`,noCode:`Syötä vahvistuskoodi`,pageTitle:"Syötä koodi | ${clientName}",resendText:`Lähetä koodi uudelleen`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,title:`Tarkista sähköpostisi`,unexpectedError:`Odottamaton virhe tapahtui`,usePasswordText:`Kirjaudu salasanalla`,tooManyRequests:`Liian monta yritystä. Odota hetki ja yritä uudelleen.`}},"email-verification":{"email-verification":{description:"Lähetimme sähköpostin osoitteeseen ${email}",linkAlreadyUsed:`Vahvistuslinkki on jo käytetty. Pyydä uusi linkki.`,linkInvalid:`Vahvistuslinkki on virheellinen.`,linkInvalidOrExpired:`Vahvistuslinkki on virheellinen tai vanhentunut. Pyydä uusi linkki.`,linkInvalidTitle:`Vahvistuslinkki ei kelpaa`,linkWrongType:`Tällä linkillä ei voi vahvistaa sähköpostiosoitetta.`,pageTitle:"Vahvista sähköposti | ${clientName}",resendText:`Lähetä koodi uudelleen`,successDescription:`Sähköpostiosoitteesi on vahvistettu onnistuneesti.`,successTitle:`Sähköposti vahvistettu`,title:`Vahvista sähköpostiosoitteesi`},"email-verification-code":{buttonText:`Jatka`,codeLabel:`Vahvistuskoodi`,codePlaceholder:`Syötä 6-numeroinen koodi`,defaultDescription:`Syötä sähköpostiisi lähettämämme koodi vahvistaaksesi osoitteesi ja jatkaaksesi.`,description:"Lähetimme koodin osoitteeseen ${email}. Syötä se vahvistaaksesi sähköpostiosoitteesi ja jatkaaksesi.",invalidCode:`Koodi on virheellinen tai vanhentunut`,noCode:`Syötä vahvistuskoodi`,pageTitle:"Vahvista sähköposti | ${clientName}",resendFailed:`Koodin uudelleenlähetys epäonnistui. Yritä uudelleen.`,resendSuccess:`Uusi koodi on lähetetty sähköpostiisi`,resendText:`Lähetä koodi uudelleen`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,title:`Vahvista sähköpostiosoitteesi`,tooManyAttempts:`Liian monta yritystä. Yritä myöhemmin uudelleen.`},"email-verification-link-sent":{defaultDescription:`Lähetimme vahvistuslinkin sähköpostiisi. Vahvista osoitteesi napsauttamalla linkkiä ja kirjaudu sitten uudelleen sisään.`,description:"Lähetimme vahvistuslinkin osoitteeseen ${email}. Vahvista osoitteesi napsauttamalla linkkiä ja kirjaudu sitten uudelleen sisään.",pageTitle:"Vahvista sähköposti | ${clientName}",resendFailed:`Sähköpostin uudelleenlähetys epäonnistui. Yritä uudelleen.`,resendSuccess:`Uusi vahvistusviesti on lähetetty`,resendText:`Lähetä sähköposti uudelleen`,title:`Tarkista sähköpostisi`}},invitation:ip,login:ap,"login-id":{"login-id":{alertListTitle:`Ilmoitukset`,"auth0-users-validation":`Jokin meni pieleen, yritä myöhemmin uudelleen`,"authentication-failure":`Valitettavasti jokin meni pieleen kirjautumisyrityksen aikana`,buttonText:`Jatka`,"captcha-client-failure":`Turvatarkistuksen lataaminen epäonnistui. Yritä uudelleen. (Virhekoodi: #{errorCode})`,"captcha-validation-failure":`Valitettavasti jokin meni pieleen captcha-vastauksen tarkistuksessa. Yritä uudelleen.`,captchaCodePlaceholder:`Syötä yllä näkyvä koodi`,"custom-script-error-code":`Jokin meni pieleen, yritä myöhemmin uudelleen.`,description:"Kirjaudu sisään ${clientName}.",editEmailText:`Muokkaa`,emailPlaceholder:`Sähköpostiosoite`,federatedConnectionButtonText:"Jatka palvelulla ${connectionName}",lastUsedText:`Viimeksi käytetty`,footerLinkText:`Rekisteröidy`,footerText:`Eikö sinulla ole tiliä?`,forgotPasswordText:`Unohditko salasanan?`,hidePasswordText:`Piilota salasana`,"invalid-captcha":`Ratkaise haaste varmistaaksesi, ettet ole robotti.`,"invalid-code":`Virheellinen koodi`,"invalid-connection":`Virheellinen yhteys`,"invalid-email-format":`Virheellinen sähköpostiosoite`,"invalid-email-phone":`Syötä kelvollinen sähköpostiosoite tai puhelinnumero. Puhelinnumeron tulee sisältää maatunnus.`,"invalid-email-phone-username":`Syötä kelvollinen sähköpostiosoite, puhelinnumero tai käyttäjänimi. Puhelinnumeron tulee sisältää maatunnus.`,"invalid-email-username":`Syötä kelvollinen sähköpostiosoite tai käyttäjänimi`,"invalid-expired-code":`Virheellinen tai vanhentunut käyttäjäkoodi`,"invalid-login-id":`Virheellinen kirjautumistunnus`,"invalid-phone-username":`Syötä kelvollinen puhelinnumero tai käyttäjänimi. Puhelinnumeron tulee sisältää maatunnus.`,"invalid-recaptcha":`Valitse valintaruutu varmistaaksesi, ettet ole robotti.`,"invalid-username":"Käyttäjänimi voi sisältää vain aakkosnumeerisia merkkejä tai: '${characters}'. Käyttäjänimen tulee olla ${min}–${max} merkkiä.",invitationDescription:"Kirjaudu sisään hyväksyäksesi käyttäjän ${inviterName} kutsun liittyä palveluun ${companyName} sovelluksessa ${clientName}.",invitationTitle:`Sinut on kutsuttu!`,"ip-blocked":`Olemme havainneet epäilyttävää kirjautumiskäyttäytymistä ja lisäyritykset estetään. Ota yhteyttä ylläpitäjään.`,logoAltText:"${companyName}","no-db-connection":`Virheellinen yhteys`,"no-email":`Sähköpostiosoite vaaditaan`,"no-email-phone":`Sähköpostiosoite tai puhelinnumero vaaditaan`,"no-email-phone-username":`Puhelinnumero, käyttäjänimi tai sähköpostiosoite vaaditaan`,"no-email-username":`Sähköpostiosoite tai käyttäjänimi vaaditaan`,"no-password":`Salasana vaaditaan`,"no-phone":`Syötä puhelinnumero`,"no-phone-username":`Puhelinnumero tai käyttäjänimi vaaditaan`,"no-username":`Käyttäjänimi vaaditaan`,pageTitle:"Kirjaudu sisään | ${clientName}","password-breached":`Olemme havainneet mahdollisen tietoturvaongelman tässä tilissä. Tilisi suojaamiseksi olemme estäneet tämän kirjautumisen. Vaihda salasanasi jatkaaksesi.`,passwordPlaceholder:`Salasana`,phoneOrEmailPlaceholder:`Sähköposti tai puhelinnumero`,phoneOrUsernameOrEmailPlaceholder:`Puhelin, käyttäjänimi tai sähköposti`,phoneOrUsernamePlaceholder:`Puhelinnumero tai käyttäjänimi`,phonePlaceholder:`Puhelinnumero`,"same-user-login":`Liian monta kirjautumisyritystä tälle käyttäjälle. Odota hetki ja yritä myöhemmin uudelleen.`,selectCountryCode:"Valitse maakoodi, tällä hetkellä ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`tai`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,showPasswordText:`Näytä salasana`,signupActionLinkText:`Rekisteröidy`,signupActionText:`Eikö sinulla ole tiliä?`,termsAndConditionsTemplate:'Jatkamalla hyväksyt <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">Käyttöehdot</a>.',title:`Tervetuloa`,"user-blocked":`Tilisi on estetty useiden peräkkäisten kirjautumisyritysten jälkeen.`,userAccountDoesNotExist:`Käyttäjätiliä ei ole olemassa`,usernameOnlyPlaceholder:`Käyttäjänimi`,usernameOrEmailPlaceholder:`Käyttäjänimi tai sähköpostiosoite`,usernamePlaceholder:`Käyttäjänimi`,usernameTooLong:"Käyttäjänimen on oltava enintään ${max} merkkiä",usernameTooShort:"Käyttäjänimen on oltava vähintään ${min} merkkiä","wrong-credentials":`Väärä käyttäjänimi tai salasana`,"wrong-email-credentials":`Väärä sähköpostiosoite tai salasana`,"wrong-email-phone-credentials":`Virheellinen sähköpostiosoite, puhelinnumero tai salasana. Puhelinnumeron tulee sisältää maatunnus.`,"wrong-email-phone-username-credentials":`Virheellinen sähköpostiosoite, puhelinnumero, käyttäjänimi tai salasana. Puhelinnumeron tulee sisältää maatunnus.`,"wrong-email-username-credentials":`Virheellinen sähköpostiosoite, käyttäjänimi tai salasana`,"wrong-phone-credentials":`Virheellinen puhelinnumero tai salasana`,"wrong-phone-username-credentials":`Virheellinen puhelinnumero, käyttäjänimi tai salasana. Puhelinnumeron tulee sisältää maatunnus.`,"wrong-username-credentials":`Virheellinen käyttäjänimi tai salasana`,passkeyButtonText:`Kirjaudu sisään passkey:llä`}},"login-password":{"login-password":{buttonText:`Kirjaudu sisään`,description:`Anna sähköpostiosoitteesi ja salasanasi kirjautuaksesi sisään.`,forgotPasswordText:`Unohditko salasanan?`,hidePasswordText:`Piilota salasana`,"no-password":`Salasana vaaditaan`,pageTitle:"Kirjaudu sisään | ${clientName}","password-breached":`Olemme havainneet mahdollisen tietoturvaongelman tässä tilissä. Tilisi suojaamiseksi olemme estäneet tämän kirjautumisen. Vaihda salasanasi jatkaaksesi.`,passwordPlaceholder:`Salasana`,showPasswordText:`Näytä salasana`,signingInAs:"Kirjaudutaan käyttäjänä ${email}",title:`Anna salasana`,unverifiedEmail:`Vahvista sähköpostiosoitteesi ennen kirjautumista`,"user-blocked":`Tilisi on estetty useiden peräkkäisten kirjautumisyritysten jälkeen.`,"wrong-credentials":`Väärä salasana`,sendCodeText:`Kirjaudu koodilla`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,tooManyRequests:`Liian monta yritystä. Odota hetki ja yritä uudelleen.`,unexpectedError:`Jokin meni pieleen. Yritä uudelleen.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`sähköposti`,authMethodEmailOrPhone:`sähköposti tai puhelinnumero`,authMethodPhone:`puhelinnumero`,description:"Kirjaudu sisään käyttämällä ${authMethod}",emailOrPhonePlaceholder:`Sähköpostiosoite tai puhelinnumero`,emailPlaceholder:`Sähköpostiosoite`,invalidEmail:`Syötä kelvollinen sähköpostiosoite`,invalidIdentifier:`Syötä kelvollinen sähköpostiosoite tai puhelinnumero`,invalidPhone:`Syötä kelvollinen puhelinnumero maatunnuksella`,noEmail:`Syötä sähköpostiosoitteesi`,noPhone:`Syötä puhelinnumerosi`,phonePlaceholder:`Puhelinnumero`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,title:`Kirjaudu koodilla`,userAccountDoesNotExist:`Käyttäjätiliä ei ole olemassa`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Napsauta sähköpostissasi olevaa linkkiä kirjautuaksesi sisään`,description:"Lähetimme linkin osoitteeseen ${username}. Napsauta sitä kirjautuaksesi.",resendText:`Lähetä linkki uudelleen`,spamText:`Etkö saanut sähköpostia? Tarkista roskapostikansiosi.`,title:`Tarkista sähköpostisi`}},mfa:op,"mfa-email":{"mfa-email":{buttonText:`Jatka`,codePlaceholder:`Syötä koodi`,description:"Lähetimme koodin osoitteeseen ${email}","invalid-code":`Syöttämäsi koodi on virheellinen`,pageTitle:"Sähköpostivahvistus | ${clientName}",resendText:`Lähetä koodi uudelleen`,title:`Tarkista sähköpostisi`}},"mfa-otp":{"mfa-otp":{buttonText:`Jatka`,codePlaceholder:`Syötä koodi`,description:`Syötä 6-numeroinen koodi todentajasovelluksestasi`,"invalid-code":`Syöttämäsi koodi on virheellinen`,pageTitle:"Syötä koodi | ${clientName}",title:`Syötä koodisi`},"mfa-totp-enrollment":{title:`Ota todentajasovellus käyttöön`,description:`Skannaa alla oleva QR-koodi todentajasovelluksellasi ja syötä sitten 6-numeroinen koodi vahvistaaksesi`,secretLabel:`Tai syötä tämä koodi manuaalisesti:`,codePlaceholder:`Syötä koodi`,continueButtonText:`Vahvista ja aktivoi`,"invalid-code":`Syöttämäsi koodi on virheellinen. Yritä uudelleen.`,"transaction-not-found":`Rekisteröintitapahtumasi on vanhentunut, sinun täytyy aloittaa alusta.`,pageTitle:"Ota todentaja käyttöön | ${clientName}",unexpectedError:`Jokin meni pieleen. Yritä uudelleen.`,enrollmentComplete:`MFA-rekisteröinti on valmis. Voit sulkea tämän sivun.`,pickAuthenticatorText:`Kokeile toista menetelmää`,qrCodeAltText:`QR-koodi`},"mfa-totp-challenge":{title:`Vahvista henkilöllisyytesi`,description:`Syötä 6-numeroinen koodi todentajasovelluksestasi`,codePlaceholder:`Syötä koodi`,continueButtonText:`Jatka`,"invalid-code":`Syöttämäsi koodi on virheellinen`,"transaction-not-found":`Rekisteröintitapahtumasi on vanhentunut, sinun täytyy aloittaa alusta.`,unexpectedError:`Jokin meni pieleen. Yritä uudelleen.`,pageTitle:"Vahvista henkilöllisyys | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Käytä puhelinnumeroasi kirjautumiseen | ${clientName}",title:`Vahvista henkilöllisyytesi`,description:"Lähetimme koodin numeroon ${phoneNumber}",continueButtonText:`Jatka`,changePhoneText:`Valitse toinen puhelinnumero.`,smsButtonText:`Tekstiviesti`,voiceButtonText:`Äänipuhelu`,chooseMessageTypeText:`Miten haluat vastaanottaa koodin?`,pickAuthenticatorText:`Kokeile toista menetelmää`,logoAltText:"${companyName}",codePlaceholder:`Syötä koodi`,"send-sms-failed":`Tekstiviestin lähettämisessä oli ongelma`,"send-voice-failed":`Äänipuhelun soittamisessa oli ongelma`,"invalid-phone-format":`Puhelinnumero voi sisältää vain numeroita.`,"invalid-phone":`Puhelinnumerosi ei vaikuta olevan kelvollinen. Tarkista ja yritä uudelleen.`,"too-many-sms":`Olet ylittänyt tunnin enimmäismäärän puhelinviestejä. Odota muutama minuutti ja yritä uudelleen.`,"too-many-voice":`Olet ylittänyt tunnin enimmäismäärän puhelinviestejä. Odota muutama minuutti ja yritä uudelleen.`,"transaction-not-found":`Rekisteröintitapahtumasi on vanhentunut, sinun täytyy aloittaa alusta.`,"no-phone":`Syötä puhelinnumero`,noCode:`Syötä vahvistuskoodi`,invalidCode:`Antamasi koodi on virheellinen. Yritä uudelleen.`,unexpectedError:`Jokin meni pieleen. Yritä uudelleen.`,resendSuccess:`Lähetimme uuden koodin puhelimeesi`,enrollmentComplete:`MFA-rekisteröinti on valmis. Voit sulkea tämän sivun.`},"mfa-phone-enrollment":{pageTitle:"Syötä puhelinnumerosi kirjautuaksesi puhelinkoodilla | ${clientName}",title:`Suojaa tilisi`,description:`Syötä maakoodisi ja puhelinnumero, johon voimme lähettää 6-numeroisen koodin:`,continueButtonText:`Jatka`,smsButtonText:`Tekstiviesti`,voiceButtonText:`Äänipuhelu`,chooseMessageTypeText:`Miten haluat vastaanottaa koodin?`,pickAuthenticatorText:`Kokeile toista menetelmää`,placeholder:`Syötä puhelinnumerosi`,logoAltText:"${companyName}",selectCountryCode:"Valitse maakoodi, tällä hetkellä asetettu ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`Tekstiviestin lähettämisessä oli ongelma`,"send-voice-failed":`Äänipuhelun soittamisessa oli ongelma`,"sms-authenticator-error":`Emme pystyneet lähettämään tekstiviestiä. Yritä myöhemmin uudelleen.`,"invalid-phone-format":`Puhelinnumero voi sisältää vain numeroita.`,"invalid-phone":`Puhelinnumerosi ei vaikuta olevan kelvollinen. Tarkista ja yritä uudelleen.`,"too-many-sms":`Olet ylittänyt tunnin enimmäismäärän puhelinviestejä. Odota muutama minuutti ja yritä uudelleen.`,"too-many-voice":`Olet ylittänyt tunnin enimmäismäärän puhelinviestejä. Odota muutama minuutti ja yritä uudelleen.`,"transaction-not-found":`Rekisteröintitapahtumasi on vanhentunut, sinun täytyy aloittaa alusta.`,"no-phone":`Syötä puhelinnumero`,"phone-is-too-short":`Puhelinnumero on liian lyhyt`,"phone-is-too-long":`Puhelinnumero on liian pitkä`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Valitse vahvistusmenetelmä | ${clientName}",title:`Valitse vahvistusmenetelmä`,description:`Valitse, miten haluat vahvistaa henkilöllisyytesi`,authenticatorAppLabel:`Todennussovellus`,authenticatorAppDescription:`Käytä todennussovellusta vahvistuskoodin saamiseksi`,smsLabel:`Tekstiviesti`,smsDescription:`Saat vahvistuskoodin puhelimeesi tekstiviestillä`,passkeyLabel:`Tunnistautumisavain`,passkeyDescription:`Käytä laitteesi biometriikkaa tai suojausavainta`}},"mfa-push":{"mfa-push":{description:`Lähetimme ilmoituksen laitteellesi`,pageTitle:"Push-ilmoitus | ${clientName}",resendText:`Lähetä ilmoitus uudelleen`,title:`Hyväksy pyyntö`,useCodeText:`Syötä koodi manuaalisesti`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Jatka`,codePlaceholder:`Palautuskoodi`,description:`Syötä yksi palautuskoodeistasi`,"invalid-code":`Syöttämäsi palautuskoodi on virheellinen`,pageTitle:"Palautuskoodi | ${clientName}",title:`Syötä palautuskoodi`}},"mfa-voice":{"mfa-voice":{buttonText:`Soita minulle`,codePlaceholder:`Syötä koodi`,description:"Soitamme numeroon ${phoneNumber} ja kerromme koodisi","invalid-code":`Syöttämäsi koodi on virheellinen`,pageTitle:"Äänipuhelu | ${clientName}",title:`Vastaanota puhelu`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Yritä uudelleen`,description:`Aseta turva-avaimesi ja seuraa ohjeita`,pageTitle:"Turva-avain | ${clientName}",title:`Käytä turva-avaintasi`}},passkeys:sp,organizations:cp,"reset-password":{"reset-password":{backToLoginText:`Takaisin kirjautumiseen`,buttonText:`Lähetä salasanan palautussähköposti`,codeExpired:`Salasanan palautuskoodisi on vanhentunut. Pyydä uusi koodi.`,confirmPasswordLabel:`Vahvista salasana`,confirmPasswordPlaceholder:`Vahvista salasana`,description:`Napsauta alla olevaa painiketta, niin lähetämme ohjeet salasanasi palauttamiseen.`,emailPlaceholder:`Sähköpostiosoite`,failed:`Salasanan vaihto epäonnistui. Yritä uudelleen.`,"invalid-email-format":`Virheellinen sähköpostiosoite`,"no-email":`Sähköpostiosoite vaaditaan`,pageTitle:"Vaihda salasana | ${clientName}",passwordLabel:`Uusi salasana`,passwordPlaceholder:`Uusi salasana`,passwordTooWeak:`Salasana on liian heikko`,passwordsDidntMatch:`Salasanat eivät täsmää`,successDescription:`Olemme lähettäneet salasanan palautuslinkin sähköpostiosoitteeseesi.`,successTitle:`Salasanan palautussähköposti lähetetty`,title:`Unohditko salasanan?`,"user-not-found":`Käyttäjää ei löytynyt`,noPassword:`Salasana vaaditaan`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`},"reset-password-code":{backToLoginText:`Takaisin kirjautumiseen`,buttonText:`Vaihda salasana`,codeLabel:`Palautuskoodi`,codePlaceholder:`Syötä 6-numeroinen koodi`,confirmPasswordLabel:`Vahvista salasana`,confirmPasswordPlaceholder:`Vahvista salasana`,defaultDescription:`Syötä sähköpostiisi lähetetty koodi ja valitse uusi salasana`,description:"Lähetimme koodin osoitteeseen ${email}",failed:`Salasanan vaihto epäonnistui. Yritä uudelleen.`,invalidCode:`Syöttämäsi koodi on virheellinen tai vanhentunut`,noCode:`Syötä palautuskoodi`,pageTitle:"Syötä palautuskoodi | ${clientName}",passwordLabel:`Uusi salasana`,passwordPlaceholder:`Uusi salasana`,passwordTooWeak:`Salasana on liian heikko`,passwordsDidntMatch:`Salasanat eivät täsmää`,resendFailed:`Koodin uudelleenlähetys epäonnistui. Yritä uudelleen.`,resendSuccess:`Uusi koodi on lähetetty sähköpostiisi`,resendText:`Lähetä koodi uudelleen`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,title:`Syötä palautuskoodi`,noPassword:`Salasana vaaditaan`}},signup:lp,"signup-id":{"signup-id":{buttonText:`Jatka`,description:`Valitse salasana, jossa on isoja ja pieniä kirjaimia, numeroita ja symboleja.`,"email-already-exists":`Sähköposti on jo varattu`,emailPlaceholder:`Sähköpostiosoite`,federatedConnectionButtonText:"Jatka palvelulla ${connectionName}","invalid-email-format":`Virheellinen sähköpostiosoite`,loginActionLinkText:`Kirjaudu sisään`,loginActionText:`Onko sinulla jo tili?`,"no-email":`Sähköpostiosoite vaaditaan`,pageTitle:"Rekisteröidy | ${clientName}",phonePlaceholder:`Puhelinnumero`,separatorText:`tai`,title:`Valitse salasana`,usernamePlaceholder:`Käyttäjänimi`}},"signup-password":{"signup-password":{buttonText:`Jatka`,description:`Valitse salasana, jossa on isoja ja pieniä kirjaimia, numeroita ja symboleja.`,hidePasswordText:`Piilota salasana`,"no-password":`Salasana vaaditaan`,pageTitle:"Rekisteröidy | ${clientName}","password-policy-not-met":`Salasana ei täytä vaatimuksia`,"password-too-weak":`Salasana on liian heikko`,passwordPlaceholder:`Salasana`,showPasswordText:`Näytä salasana`,title:`Valitse salasana`,passwordTooShort:"Salasanan on oltava vähintään ${minLength} merkkiä",passwordMissingLowercase:`Salasanan on sisällettävä vähintään yksi pieni kirjain`,passwordMissingUppercase:`Salasanan on sisällettävä vähintään yksi iso kirjain`,passwordMissingNumber:`Salasanan on sisällettävä vähintään yksi numero`,passwordMissingSpecial:`Salasanan on sisällettävä vähintään yksi erikoismerkki`,passwordReused:`Salasanaa on käytetty äskettäin, eikä sitä voi käyttää uudelleen`,passwordContainsPersonalInfo:`Salasana ei saa sisältää henkilötietoja, kuten nimeäsi tai sähköpostiosoitettasi`,passwordContainsForbiddenWord:`Salasana sisältää kielletyn sanan`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Jatka`,codeLabel:`Vahvistuskoodi`,codePlaceholder:`Syötä koodi`,defaultDescription:`Syötä puhelimeesi lähetetty vahvistuskoodi`,description:"Lähetimme koodin käyttäjälle ${username}","invalid-code":`Virheellinen koodi`,noCode:`Syötä vahvistuskoodi`,pageTitle:"Syötä koodi | ${clientName}",resendText:`Lähetä koodi uudelleen`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,title:`Tarkista puhelimesi`,unexpectedError:`Odottamaton virhe tapahtui`,tooManyRequests:`Liian monta yritystä. Odota hetki ja yritä uudelleen.`}},status:up},nie=c({common:()=>dp,consent:()=>fp,default:()=>rie,invitation:()=>pp,login:()=>mp,mfa:()=>hp,organizations:()=>_p,passkeys:()=>gp,signup:()=>vp,status:()=>yp}),dp={common:{alertListTitle:`Avvisi`,backText:`Torna indietro`,backToLoginText:`Torna al login`,cancelText:`Annulla`,closeText:`Chiudi`,contactSupportText:`Contatta l'assistenza`,continueText:`Continua`,copyrightText:"© ${currentYear} ${companyName}",errorText:`Si è verificato un errore`,hidePasswordText:`Nascondi password`,loadingText:`Caricamento...`,orText:`o`,privacyPolicyText:`Informativa sulla privacy`,showPasswordText:`Mostra password`,termsOfServiceText:`Termini di servizio`,termsShortText:`Termini`,tryAgainText:`Riprova`},account:{title:`Impostazioni account`,description:`Gestisci il tuo account`,editProfileLabel:`Modifica profilo`,editProfileDetail:`Nome, email, numero di telefono e immagine`,securityLabel:`Impostazioni di sicurezza`,securityDetail:`Autenticazione a più fattori`,securityMethodsCountOne:"${count} metodo configurato",securityMethodsCount:"${count} metodi configurati",passkeysLabel:`Passkey`,passkeysDetail:`Accedi senza password`,passkeysCountOne:"${count} passkey registrata",passkeysCount:"${count} passkey registrate",linkedAccountsLabel:`Account collegati`,linkedAccountsDetail:`Collega account social`,linkedAccountsCountOne:"${count} account collegato",linkedAccountsCount:"${count} account collegati",deleteAccountLabel:`Elimina account`,deleteAccountDetail:`Elimina definitivamente il tuo account e i tuoi dati`,logoutText:`Esci`},"account-profile":{title:`Modifica profilo`,description:`Aggiorna i tuoi dati personali`,givenNameLabel:`Nome`,familyNameLabel:`Cognome`,nicknameLabel:`Soprannome`,phoneNumberLabel:`Numero di telefono`,pictureLabel:`URL dell'immagine del profilo`,buttonText:`Salva modifiche`,backToAccountText:`Torna all'account`,updateFailed:`Impossibile aggiornare il profilo`},"account-delete":{title:`Elimina account`,description:`Elimina definitivamente il tuo account`,warningTitle:`Attenzione: questa azione è definitiva`,warningText:`Tutti i tuoi dati verranno eliminati definitivamente, inclusi profilo, account collegati e metodi di autenticazione. Questa azione non può essere annullata.`,confirmationLabel:'Digita "${confirmationWord}" per confermare',buttonText:`Elimina il mio account`,cancelText:`Annulla`,confirmationError:'Digita "${confirmationWord}" per confermare',deleteSuccess:`Il tuo account è stato eliminato`,deleteFailed:`Impossibile eliminare l'account`},"account-linked":{title:`Account collegati`,description:`Gestisci i tuoi account collegati`,noLinkedAccounts:`Nessun account collegato.`,unlinkButtonText:`Scollega`,backToAccountText:`Torna all'account`,unlinkSuccess:`Account scollegato`,unlinkFailed:`Impossibile scollegare l'account`},"account-security":{title:`Impostazioni di sicurezza`,description:`Gestisci i metodi di autenticazione a due fattori`,noEnrollments:`Non hai configurato alcun metodo di autenticazione a due fattori.`,addedOn:"Aggiunto il ${date}",removeButtonText:`Rimuovi`,addTotpLabel:`Aggiungi app di autenticazione`,addTotpDetail:`Usa un'app come Google Authenticator o Authy`,addSmsLabel:`Aggiungi telefono (SMS)`,addSmsDetail:`Ricevi i codici di verifica tramite SMS`,typeTotp:`App di autenticazione`,typePhone:`Telefono (SMS)`,typeEmail:`Email`,typePush:`Notifica push`,typeWebauthn:`Chiave di sicurezza`,backToAccountText:`Torna all'account`,enrollmentNotFound:`Metodo non trovato`,removeSuccess:`Metodo di autenticazione rimosso`,removeFailed:`Impossibile rimuovere il metodo di autenticazione`},"account-passkeys":{title:`Passkey`,description:`Gestisci le tue passkey per l'accesso senza password`,noPasskeysText:`Non hai passkey registrate.`,defaultPasskeyName:`Passkey`,syncedBadgeText:`Sincronizzata`,addedOnText:"Aggiunta il ${date}",renameButtonText:`Rinomina`,removeButtonText:`Rimuovi`,renamePromptText:`Inserisci un nuovo nome per questa passkey:`,addPasskeyButtonText:`Aggiungi passkey`,backToAccountText:`Torna all'account`,logoutText:`Esci`,passkeyNotFoundText:`Passkey non trovata`,passkeyRemovedText:`Passkey rimossa`,removeFailedText:`Impossibile rimuovere la passkey`,invalidNameText:`Il nome deve contenere da 1 a 64 caratteri`,passkeyRenamedText:`Passkey rinominata`,renameFailedText:`Impossibile rinominare la passkey`,startRegistrationFailedText:`Impossibile avviare la registrazione della passkey`,missingCredentialText:`Dati della passkey mancanti`,challengeExpiredText:`La richiesta è scaduta. Riprova.`,invalidCredentialText:`Dati della passkey non validi`,verificationFailedText:`Verifica della passkey non riuscita`,passkeyAddedText:`Passkey aggiunta correttamente`,registrationFailedText:`Registrazione della passkey non riuscita. Riprova.`},"account-mfa-phone-enrollment":{title:`Configura telefono (SMS)`,description:`Inserisci il tuo numero di telefono per ricevere i codici di verifica via SMS.`,phoneLabel:`Numero di telefono`,sendCodeButtonText:`Invia codice di verifica`,backToSecurityText:`Torna alle impostazioni di sicurezza`,verifyTitle:`Verifica numero di telefono`,verifyDescription:`Inserisci il codice di verifica inviato al tuo telefono.`,codeSentText:"È stato inviato un codice di verifica a ${phoneNumber}",codeSentToYourPhoneText:`È stato inviato un codice di verifica al tuo telefono`,codeLabel:`Codice di verifica`,codePlaceholder:`Inserisci il codice di verifica`,verifyButtonText:`Verifica e attiva`,noPhoneText:`Inserisci il tuo numero di telefono`,invalidPhoneText:`Inserisci un numero di telefono valido`,sendCodeFailedText:`Invio del codice di verifica non riuscito. Riprova.`,noCodeText:`Inserisci il codice di verifica`,invalidCodeText:`Codice non valido. Riprova.`,sessionInvalidText:`Qualcosa è andato storto. Ricomincia la registrazione.`},"account-mfa-totp-enrollment":{title:`Configura l'app di autenticazione`,description:`Scansiona il codice QR con la tua app di autenticazione, poi inserisci il codice di verifica qui sotto.`,qrCodeAltText:`Codice QR`,manualKeyText:`Oppure inserisci questa chiave manualmente:`,codeLabel:`Codice di verifica`,codePlaceholder:`Inserisci il codice a 6 cifre`,verifyButtonText:`Verifica e attiva`,backToSecurityText:`Torna alle impostazioni di sicurezza`,noCodeText:`Inserisci il codice di verifica`,invalidCodeText:`Codice non valido. Riprova.`,verificationFailedText:`Verifica non riuscita. Riprova.`}},fp={consent:{buttonText:`Accetta`,cancelButtonText:`Rifiuta`,description:"${clientName} richiede l'accesso al tuo account",pageTitle:"Autorizza | ${clientName}",scopesTitle:"Questo permetterà a ${clientName} di:",title:"Autorizza ${clientName}",accessAccountText:"vuole accedere al tuo account ${tenantName} come ${userName}.",notAuthenticated:`Devi accedere per continuare.`,sessionExpired:`La sessione è scaduta. Riprova.`,consentStorageNotConfigured:`Impossibile salvare il tuo consenso. Contatta il proprietario dell'applicazione.`},"connect-consent":{title:`Collega applicazione`,description:"Consentire a ${domain} di agire per tuo conto?",connectAccountText:"vuole connettersi al tuo account ${tenantName} come ${userName}.",workspaceLabel:`Spazio di lavoro:`,apiLabel:`Per l'API:`,permissionsLabel:`Autorizzazioni richieste:`,localDevBadge:`Sviluppo locale`,localDevTooltip:`Questo sito è un ambiente di sviluppo locale, non di produzione. La connessione non funzionerà al di fuori di questo computer o di questa rete.`,buttonText:`Collega`,cancelText:`Annulla`,notAuthenticated:`Devi accedere per continuare.`,sessionExpired:`La sessione è scaduta. Riprova.`,workspaceSelectionRequired:`Scegli prima uno spazio di lavoro.`,noWorkspaceAccess:`Non hai accesso a questo spazio di lavoro`,workspaceNotFound:`Spazio di lavoro non trovato`},"connect-tenant-select":{title:`Scegli uno spazio di lavoro`,description:"Seleziona lo spazio di lavoro ${tenantName} a cui ${domain} deve connettersi.",noWorkspacesDescription:`Nessuno spazio di lavoro disponibile`,noWorkspacesText:"Non hai accesso a nessuno spazio di lavoro ${tenantName}. Chiedi a un amministratore di invitarti.",cancelText:`Annulla`,notAuthenticated:`Devi accedere per continuare.`,sessionExpired:`La sessione è scaduta. Riprova.`,noWorkspaceSelected:`Scegli uno spazio di lavoro.`,noWorkspaceAccess:`Non hai accesso a questo spazio di lavoro`}},pp={invitation:{acceptButtonText:`Accetta invito`,description:"${inviterName} ti ha invitato a unirti a ${organizationName} su ${clientName}",pageTitle:"Invito | ${clientName}",title:`Sei stato invitato`,defaultOrganizationName:`un'organizzazione`,acceptFailed:`Non è stato possibile completare la configurazione del tuo account. Riprova.`}},mp={login:{alertListTitle:`Avvisi`,buttonText:`Continua`,description:"Accedi a ${clientName}.",editEmailText:`Modifica`,emailPlaceholder:`Indirizzo e-mail`,enterACodeBtn:`Accedi con un codice`,enterACodeShortBtn:`Codice`,federatedConnectionButtonText:"Continua con ${connectionName}",lastUsedText:`Ultimo utilizzato`,footerLinkText:`Iscriviti`,footerText:`Non hai un account?`,forgotPasswordText:`Hai dimenticato la password?`,hidePasswordText:`Nascondi password`,invalidEmail:`Email non valida`,invalidIdentifier:`Email o nome utente non valido`,invitationDescription:"Accedi per accettare l'invito di ${inviterName} a unirti a ${companyName} su ${clientName}.",invitationTitle:`Sei stato invitato!`,logoAltText:"${companyName}","no-email":`Inserisci un indirizzo email`,"no-password":`La password è obbligatoria`,pageTitle:"Accedi | ${clientName}",passwordLoginNotAvailable:`L'autenticazione con password non è disponibile`,passwordPlaceholder:`Password`,phonePlaceholder:`Numero di telefono`,separatorText:`o`,sessionExpired:`La sessione è scaduta. Riprova.`,showPasswordText:`Mostra password`,signupActionLinkText:`Iscriviti`,signupActionText:`Non hai un account?`,title:`Benvenuto`,tooManyFailedLogins:`Troppi tentativi di accesso falliti. Riprova più tardi.`,unverifiedEmail:`Verifica il tuo indirizzo email prima di accedere`,userAccountDoesNotExist:`L'account utente non esiste`,usernamePlaceholder:`Nome utente o indirizzo email`,usernameTooLong:"Il nome utente deve avere al massimo ${max} caratteri",usernameTooShort:"Il nome utente deve avere almeno ${min} caratteri",wrongCredentials:`Nome utente o password errati`,passkeyButtonText:`Accedi con una passkey`,userBlocked:`Il tuo account è stato bloccato dopo diversi tentativi di accesso consecutivi.`,tooManyRequests:`Troppi tentativi. Attendi qualche istante e riprova.`,unexpectedError:`Qualcosa è andato storto. Riprova.`}},hp={mfa:{backupCodeText:`Usa codice di backup`,description:`Scegli un metodo di verifica`,pageTitle:"Autenticazione a più fattori | ${clientName}",title:`Verifica la tua identità`}},gp={"passkey-enrollment-nudge":{title:`Proteggi il tuo account con una passkey`,description:`Le passkey utilizzano la biometria o il PIN del tuo dispositivo per accedere più velocemente e in modo più sicuro.`,enrollButtonText:`Configura passkey`,snoozeButtonText:`Forse più tardi`,optOutLinkText:`Non mostrare più`,pageTitle:"Configura Passkey | ${clientName}"},"passkey-enrollment":{title:`Crea la tua passkey`,description:`Segui le istruzioni del browser per creare una passkey per questo account.`,errorMessage:`Creazione della passkey non riuscita. Riprova.`,cancelLinkText:`Salta per ora`,retryButtonText:`Riprova`,enrollmentComplete:`La tua passkey è stata configurata con successo. Puoi chiudere questa pagina.`,pageTitle:"Crea Passkey | ${clientName}",sessionExpired:`La sessione è scaduta. Riprova.`,enrollmentRequired:`Devi configurare una passkey per continuare.`,challengeExpired:`La richiesta è scaduta. Riprova.`},"passkey-challenge":{title:`Accedi con passkey`,description:`Segui le istruzioni del browser per verificare la tua identità.`,errorMessage:`Autenticazione con passkey non riuscita. Riprova.`,cancelLinkText:`Torna al login`,retryButtonText:`Riprova`,pageTitle:"Accedi con passkey | ${clientName}",sessionExpired:`La sessione è scaduta. Riprova.`}},_p={organizations:{description:`Scegli a quale organizzazione accedere`,pageTitle:"Seleziona organizzazione | ${clientName}",searchPlaceholder:`Cerca organizzazioni`,title:`Seleziona la tua organizzazione`}},vp={signup:{buttonText:`Iscriviti`,confirmPasswordPlaceholder:`Conferma password`,description:`Registrati per continuare`,"email-already-exists":`Questa email è già registrata`,emailPlaceholder:`Indirizzo e-mail`,federatedConnectionButtonText:"Continua con ${connectionName}",hidePasswordText:`Nascondi password`,"invalid-email-format":`Email non valida`,loginActionLinkText:`Accedi`,loginActionText:`Hai già un account?`,"no-email":`Inserisci un indirizzo email`,"no-password":`La password è obbligatoria`,"no-username":`Il nome utente è obbligatorio`,pageTitle:"Registrati | ${clientName}",passwordPlaceholder:`Password`,passwordsDidntMatch:`Le password non corrispondono`,phonePlaceholder:`Numero di telefono`,privacyPolicyLinkText:`Informativa sulla privacy`,separatorText:`o`,sessionExpired:`La sessione è scaduta. Riprova.`,showPasswordText:`Mostra password`,termsOfServiceLinkText:`Termini di servizio`,termsText:`Registrandoti, accetti i nostri`,title:`Crea il tuo account`,"username-already-exists":`Questo nome utente è già in uso`,usernamePlaceholder:`Nome utente`,verifyEmailText:`Controlla la tua email per verificare il tuo account`,confirmPasswordRequired:`Conferma la password`,createUserFailed:`Non è stato possibile creare il tuo account. Riprova.`}},yp={status:{continueButtonText:`Continua`,errorTitle:`Errore`,pageTitle:"Stato | ${clientName}",successTitle:`Operazione riuscita`,title:`Stato`}},rie={common:dp,consent:fp,"device-flow":{"device-flow":{buttonText:`Continua`,codePlaceholder:`Inserisci il codice`,description:`Inserisci il codice mostrato sul tuo dispositivo`,"expired-code":`Il codice è scaduto`,"invalid-code":`Il codice inserito non è valido`,pageTitle:"Attivazione dispositivo | ${clientName}",title:`Attiva il tuo dispositivo`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Continua`,codeLabel:`Codice di verifica`,codePlaceholder:`Inserisci il codice`,defaultDescription:`Inserisci il codice di verifica inviato alla tua email`,description:"Abbiamo inviato un codice a ${email}","invalid-code":`Codice non valido`,noCode:`Inserisci il codice di verifica`,pageTitle:"Inserisci il codice | ${clientName}",resendText:`Reinvio del codice`,sessionExpired:`La sessione è scaduta. Riprova.`,title:`Controlla la tua email`,unexpectedError:`Si è verificato un errore imprevisto`,usePasswordText:`Accedi con la password`,tooManyRequests:`Troppi tentativi. Attendi qualche istante e riprova.`}},"email-verification":{"email-verification":{description:"Abbiamo inviato un'email a ${email}",linkAlreadyUsed:`Questo link di verifica è già stato usato. Richiedine uno nuovo.`,linkInvalid:`Questo link di verifica non è valido.`,linkInvalidOrExpired:`Questo link di verifica non è valido o è scaduto. Richiedine uno nuovo.`,linkInvalidTitle:`Link di verifica non valido`,linkWrongType:`Questo link non può essere usato per verificare un indirizzo email.`,pageTitle:"Verifica email | ${clientName}",resendText:`Reinvia email`,successDescription:`La tua email è stata verificata con successo.`,successTitle:`Email verificata`,title:`Verificare l'e-mail`},"email-verification-code":{buttonText:`Continua`,codeLabel:`Codice di verifica`,codePlaceholder:`Inserisci il codice a 6 cifre`,defaultDescription:`Inserisci il codice che ti abbiamo inviato via e-mail per verificare il tuo indirizzo e continuare.`,description:"Abbiamo inviato un codice a ${email}. Inseriscilo per verificare il tuo indirizzo e-mail e continuare.",invalidCode:`Il codice inserito non è valido o è scaduto`,noCode:`Inserisci il codice di verifica`,pageTitle:"Verifica e-mail | ${clientName}",resendFailed:`Impossibile inviare nuovamente il codice. Riprova.`,resendSuccess:`Un nuovo codice è stato inviato alla tua e-mail`,resendText:`Invia di nuovo il codice`,sessionExpired:`La sessione è scaduta. Riprova.`,title:`Verifica la tua e-mail`,tooManyAttempts:`Troppi tentativi. Riprova più tardi.`},"email-verification-link-sent":{defaultDescription:`Ti abbiamo inviato un link di verifica via e-mail. Fai clic sul link per verificare il tuo indirizzo, quindi accedi di nuovo.`,description:"Abbiamo inviato un link di verifica a ${email}. Fai clic sul link per verificare il tuo indirizzo, quindi accedi di nuovo.",pageTitle:"Verifica e-mail | ${clientName}",resendFailed:`Impossibile inviare nuovamente l'e-mail. Riprova.`,resendSuccess:`È stata inviata una nuova e-mail di verifica`,resendText:`Invia di nuovo l'e-mail`,title:`Controlla la tua e-mail`}},invitation:pp,login:mp,"login-id":{"login-id":{alertListTitle:`Avvisi`,"auth0-users-validation":`Qualcosa è andato storto, riprova più tardi`,"authentication-failure":`Siamo spiacenti, si è verificato un errore durante il tentativo di accesso`,buttonText:`Continua`,"captcha-client-failure":`Non è stato possibile caricare la verifica di sicurezza. Riprova. (Codice errore: #{errorCode})`,"captcha-validation-failure":`Siamo spiacenti, si è verificato un errore durante la convalida della risposta captcha. Riprova.`,captchaCodePlaceholder:`Inserisci il codice mostrato sopra`,"custom-script-error-code":`Qualcosa è andato storto, riprova più tardi.`,description:"Accedi a ${clientName}.",editEmailText:`Modifica`,emailPlaceholder:`Indirizzo e-mail`,federatedConnectionButtonText:"Continua con ${connectionName}",lastUsedText:`Ultimo utilizzato`,footerLinkText:`Iscriviti`,footerText:`Non hai un account?`,forgotPasswordText:`Hai dimenticato la password?`,hidePasswordText:`Nascondi password`,"invalid-captcha":`Risolvi la domanda di verifica per confermare che non sei un robot.`,"invalid-code":`Codice non valido`,"invalid-connection":`Connessione non valida`,"invalid-email-format":`Email non valida`,"invalid-email-phone":`Inserisci un indirizzo email o un numero di telefono valido. I numeri di telefono devono includere il prefisso internazionale.`,"invalid-email-phone-username":`Inserisci un indirizzo email, un numero di telefono o un nome utente valido. I numeri di telefono devono includere il prefisso internazionale.`,"invalid-email-username":`Inserisci un indirizzo email o un nome utente valido`,"invalid-expired-code":`Codice utente non valido o scaduto`,"invalid-login-id":`ID di accesso non valido`,"invalid-phone-username":`Inserisci un numero di telefono o un nome utente valido. I numeri di telefono devono includere il prefisso internazionale.`,"invalid-recaptcha":`Seleziona la casella per confermare che non sei un robot.`,"invalid-username":"Il nome utente può contenere solo caratteri alfanumerici o: '${characters}'. Il nome utente deve avere tra ${min} e ${max} caratteri.",invitationDescription:"Accedi per accettare l'invito di ${inviterName} a unirti a ${companyName} su ${clientName}.",invitationTitle:`Sei stato invitato!`,"ip-blocked":`Abbiamo rilevato un comportamento di accesso sospetto e ulteriori tentativi saranno bloccati. Contatta l'amministratore.`,logoAltText:"${companyName}","no-db-connection":`Connessione non valida`,"no-email":`Inserisci un indirizzo email`,"no-email-phone":`È richiesto un indirizzo email o un numero di telefono`,"no-email-phone-username":`È richiesto un numero di telefono, un nome utente o un indirizzo email`,"no-email-username":`È richiesto un indirizzo email o un nome utente`,"no-password":`La password è obbligatoria`,"no-phone":`Inserisci un numero di telefono`,"no-phone-username":`È richiesto un numero di telefono o un nome utente`,"no-username":`Il nome utente è obbligatorio`,pageTitle:"Accedi | ${clientName}","password-breached":`Abbiamo rilevato un potenziale problema di sicurezza con questo account. Per proteggere il tuo account, abbiamo impedito questo accesso. Reimposta la password per procedere.`,passwordPlaceholder:`Password`,phoneOrEmailPlaceholder:`Indirizzo e-mail o numero di telefono`,phoneOrUsernameOrEmailPlaceholder:`Telefono, nome utente o email`,phoneOrUsernamePlaceholder:`Numero di telefono o nome utente`,phonePlaceholder:`Numero di telefono`,"same-user-login":`Troppi tentativi di accesso per questo utente. Attendi e riprova più tardi.`,selectCountryCode:"Seleziona prefisso paese, attualmente impostato su ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`o`,sessionExpired:`La sessione è scaduta. Riprova.`,showPasswordText:`Mostra password`,signupActionLinkText:`Iscriviti`,signupActionText:`Non hai un account?`,termsAndConditionsTemplate:'Continuando, accetti i nostri <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">Termini e condizioni</a>.',title:`Benvenuto`,"user-blocked":`Il tuo account è stato bloccato dopo diversi tentativi di accesso consecutivi.`,userAccountDoesNotExist:`L'account utente non esiste`,usernameOnlyPlaceholder:`Nome utente`,usernameOrEmailPlaceholder:`Nome utente o indirizzo email`,usernamePlaceholder:`Nome utente`,usernameTooLong:"Il nome utente deve avere al massimo ${max} caratteri",usernameTooShort:"Il nome utente deve avere almeno ${min} caratteri","wrong-credentials":`Nome utente o password errati`,"wrong-email-credentials":`Email o password errati`,"wrong-email-phone-credentials":`Indirizzo email, numero di telefono o password errati. I numeri di telefono devono includere il prefisso internazionale.`,"wrong-email-phone-username-credentials":`Indirizzo email, numero di telefono, nome utente o password errati. I numeri di telefono devono includere il prefisso internazionale.`,"wrong-email-username-credentials":`Indirizzo email, nome utente o password errati`,"wrong-phone-credentials":`Numero di telefono o password errati`,"wrong-phone-username-credentials":`Numero di telefono, nome utente o password errati. I numeri di telefono devono includere il prefisso internazionale.`,"wrong-username-credentials":`Nome utente o password errati`,passkeyButtonText:`Accedi con una passkey`}},"login-password":{"login-password":{buttonText:`Accedi`,description:"Accedi a ${clientName}",forgotPasswordText:`Hai dimenticato la password?`,hidePasswordText:`Nascondi password`,"no-password":`La password è obbligatoria`,pageTitle:"Accedi | ${clientName}","password-breached":`Abbiamo rilevato un potenziale problema di sicurezza con questo account. Per proteggere il tuo account, abbiamo impedito questo accesso. Reimposta la password per procedere.`,passwordPlaceholder:`Password`,showPasswordText:`Mostra password`,signingInAs:"Accesso come ${email}",title:`Inserire la password`,unverifiedEmail:`Verifica il tuo indirizzo email prima di accedere`,"user-blocked":`Il tuo account è stato bloccato dopo diversi tentativi di accesso consecutivi.`,"wrong-credentials":`Password errata`,sendCodeText:`Accedi con un codice`,sessionExpired:`La sessione è scaduta. Riprova.`,tooManyRequests:`Troppi tentativi. Attendi qualche istante e riprova.`,unexpectedError:`Qualcosa è andato storto. Riprova.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`email`,authMethodEmailOrPhone:`email o numero di telefono`,authMethodPhone:`numero di telefono`,description:"Accedi usando il tuo ${authMethod}",emailOrPhonePlaceholder:`Indirizzo email o numero di telefono`,emailPlaceholder:`Indirizzo e-mail`,invalidEmail:`Inserisci un indirizzo email valido`,invalidIdentifier:`Inserisci un indirizzo email o un numero di telefono valido`,invalidPhone:`Inserisci un numero di telefono valido con il prefisso internazionale`,noEmail:`Inserisci il tuo indirizzo email`,noPhone:`Inserisci il tuo numero di telefono`,phonePlaceholder:`Numero di telefono`,sessionExpired:`La sessione è scaduta. Riprova.`,title:`Accedi con un codice`,userAccountDoesNotExist:`L'account utente non esiste`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Clicca il link nella tua email per accedere`,description:"Abbiamo inviato un link a ${username}. Cliccalo per accedere.",resendText:`Reinvia link`,spamText:`Non hai ricevuto l'email? Controlla la cartella spam.`,title:`Controlla la tua email`}},mfa:hp,"mfa-email":{"mfa-email":{buttonText:`Continua`,codePlaceholder:`Inserisci il codice`,description:"Abbiamo inviato un codice a ${email}","invalid-code":`Il codice inserito non è valido`,pageTitle:"Verifica email | ${clientName}",resendText:`Reinvia codice`,title:`Controlla la tua email`}},"mfa-otp":{"mfa-otp":{buttonText:`Continua`,codePlaceholder:`Inserisci il codice`,description:`Inserisci il codice a 6 cifre dalla tua app di autenticazione`,"invalid-code":`Il codice inserito non è valido`,pageTitle:"Inserisci il codice | ${clientName}",title:`Inserisci il tuo codice`},"mfa-totp-enrollment":{title:`Configura l'autenticatore`,description:`Scansiona il codice QR qui sotto con la tua app di autenticazione, poi inserisci il codice a 6 cifre per verificare`,secretLabel:`Oppure inserisci questo codice manualmente:`,codePlaceholder:`Inserisci il codice`,continueButtonText:`Verifica e attiva`,"invalid-code":`Il codice inserito non è valido. Riprova.`,"transaction-not-found":`La tua transazione di registrazione è scaduta, dovrai ricominciare.`,pageTitle:"Configura autenticatore | ${clientName}",unexpectedError:`Qualcosa è andato storto. Riprova.`,enrollmentComplete:`La registrazione MFA è completata. Puoi chiudere questa pagina.`,pickAuthenticatorText:`Prova un altro metodo`,qrCodeAltText:`Codice QR`},"mfa-totp-challenge":{title:`Verifica la tua identità`,description:`Inserisci il codice a 6 cifre dalla tua app di autenticazione`,codePlaceholder:`Inserisci il codice`,continueButtonText:`Continua`,"invalid-code":`Il codice inserito non è valido`,"transaction-not-found":`La tua transazione di registrazione è scaduta, dovrai ricominciare.`,unexpectedError:`Qualcosa è andato storto. Riprova.`,pageTitle:"Verifica identità | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Usa il tuo numero di telefono per accedere | ${clientName}",title:`Verifica la tua identità`,description:"Abbiamo inviato un codice a ${phoneNumber}",continueButtonText:`Continua`,changePhoneText:`Scegli un altro numero di telefono.`,smsButtonText:`Messaggio di testo`,voiceButtonText:`Chiamata vocale`,chooseMessageTypeText:`Come vuoi ricevere il codice?`,pickAuthenticatorText:`Prova un altro metodo`,logoAltText:"${companyName}",codePlaceholder:`Inserisci il codice`,"send-sms-failed":`Si è verificato un problema nell'invio dell'SMS`,"send-voice-failed":`Si è verificato un problema nell'effettuare la chiamata vocale`,"invalid-phone-format":`Il numero di telefono può contenere solo cifre.`,"invalid-phone":`Sembra che il tuo numero di telefono non sia valido. Controlla e riprova.`,"too-many-sms":`Hai superato il numero massimo di messaggi telefonici all'ora. Attendi qualche minuto e riprova.`,"too-many-voice":`Hai superato il numero massimo di messaggi telefonici all'ora. Attendi qualche minuto e riprova.`,"transaction-not-found":`La tua transazione di registrazione è scaduta, dovrai ricominciare.`,"no-phone":`Inserisci un numero di telefono`,noCode:`Inserisci il codice di verifica`,invalidCode:`Il codice inserito non è valido. Riprova.`,unexpectedError:`Qualcosa è andato storto. Riprova.`,resendSuccess:`Abbiamo inviato un nuovo codice al tuo telefono`,enrollmentComplete:`La registrazione MFA è completata. Puoi chiudere questa pagina.`},"mfa-phone-enrollment":{pageTitle:"Inserisci il tuo numero di telefono per accedere con un codice telefonico | ${clientName}",title:`Proteggi il tuo account`,description:`Inserisci il prefisso del paese e il numero di telefono a cui possiamo inviare un codice a 6 cifre:`,continueButtonText:`Continua`,smsButtonText:`Messaggio di testo`,voiceButtonText:`Chiamata vocale`,chooseMessageTypeText:`Come vuoi ricevere il codice?`,pickAuthenticatorText:`Prova un altro metodo`,placeholder:`Inserisci il tuo numero di telefono`,logoAltText:"${companyName}",selectCountryCode:"Seleziona prefisso paese, attualmente impostato su ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`Si è verificato un problema nell'invio dell'SMS`,"send-voice-failed":`Si è verificato un problema nell'effettuare la chiamata vocale`,"sms-authenticator-error":`Non siamo riusciti a inviare l'SMS. Riprova più tardi.`,"invalid-phone-format":`Il numero di telefono può contenere solo cifre.`,"invalid-phone":`Sembra che il tuo numero di telefono non sia valido. Controlla e riprova.`,"too-many-sms":`Hai superato il numero massimo di messaggi telefonici all'ora. Attendi qualche minuto e riprova.`,"too-many-voice":`Hai superato il numero massimo di messaggi telefonici all'ora. Attendi qualche minuto e riprova.`,"transaction-not-found":`La tua transazione di registrazione è scaduta, dovrai ricominciare.`,"no-phone":`Inserisci un numero di telefono`,"phone-is-too-short":`Il numero di telefono è troppo corto`,"phone-is-too-long":`Il numero di telefono è troppo lungo`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Scegli il metodo di verifica | ${clientName}",title:`Scegli il metodo di verifica`,description:`Seleziona come vuoi verificare la tua identità`,authenticatorAppLabel:`App di autenticazione`,authenticatorAppDescription:`Usa la tua app di autenticazione per ottenere un codice di verifica`,smsLabel:`Messaggio di testo`,smsDescription:`Ricevi un codice di verifica inviato al tuo telefono`,passkeyLabel:`Passkey`,passkeyDescription:`Usa la biometria del tuo dispositivo o una chiave di sicurezza`}},"mfa-push":{"mfa-push":{description:`Abbiamo inviato una notifica al tuo dispositivo`,pageTitle:"Notifica push | ${clientName}",resendText:`Reinvia notifica`,title:`Approva la richiesta`,useCodeText:`Inserisci il codice manualmente`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Continua`,codePlaceholder:`Codice di recupero`,description:`Inserisci uno dei tuoi codici di recupero`,"invalid-code":`Il codice di recupero inserito non è valido`,pageTitle:"Codice di recupero | ${clientName}",title:`Inserisci il codice di recupero`}},"mfa-voice":{"mfa-voice":{buttonText:`Chiamami`,codePlaceholder:`Inserisci il codice`,description:"Chiameremo ${phoneNumber} con il tuo codice","invalid-code":`Il codice inserito non è valido`,pageTitle:"Chiamata vocale | ${clientName}",title:`Ricevi una telefonata`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Riprova`,description:`Inserisci la tua chiave di sicurezza e segui le istruzioni`,pageTitle:"Chiave di sicurezza | ${clientName}",title:`Usa la tua chiave di sicurezza`}},passkeys:gp,organizations:_p,"reset-password":{"reset-password":{backToLoginText:`Torna al login`,buttonText:`Continua`,codeExpired:`Il codice di reimpostazione della password è scaduto. Richiedine uno nuovo.`,confirmPasswordLabel:`Conferma password`,confirmPasswordPlaceholder:`Conferma password`,description:`Inserisci la tua email per reimpostare la password`,emailPlaceholder:`Indirizzo e-mail`,failed:`Reimpostazione della password non riuscita. Riprova.`,"invalid-email-format":`Email non valida`,"no-email":`Inserisci un indirizzo email`,pageTitle:"Reimposta password | ${clientName}",passwordLabel:`Nuova password`,passwordPlaceholder:`Nuova password`,passwordTooWeak:`La password è troppo debole`,passwordsDidntMatch:`Le password non corrispondono`,successDescription:`Abbiamo inviato un link per reimpostare la password al tuo indirizzo email.`,successTitle:`Controlla la tua email`,title:`Hai dimenticato la password?`,"user-not-found":`Utente non trovato`,noPassword:`La password è obbligatoria`,sessionExpired:`La sessione è scaduta. Riprova.`},"reset-password-code":{backToLoginText:`Torna al login`,buttonText:`Reimposta password`,codeLabel:`Codice di reimpostazione`,codePlaceholder:`Inserisci il codice a 6 cifre`,confirmPasswordLabel:`Conferma password`,confirmPasswordPlaceholder:`Conferma password`,defaultDescription:`Inserisci il codice inviato alla tua email e scegli una nuova password`,description:"Abbiamo inviato un codice a ${email}",failed:`Reimpostazione della password non riuscita. Riprova.`,invalidCode:`Il codice inserito non è valido o è scaduto`,noCode:`Inserisci il codice di reimpostazione`,pageTitle:"Inserisci il codice di reimpostazione | ${clientName}",passwordLabel:`Nuova password`,passwordPlaceholder:`Nuova password`,passwordTooWeak:`La password è troppo debole`,passwordsDidntMatch:`Le password non corrispondono`,resendFailed:`Impossibile reinviare il codice. Riprova.`,resendSuccess:`Un nuovo codice è stato inviato alla tua email`,resendText:`Reinvia codice`,sessionExpired:`La sessione è scaduta. Riprova.`,title:`Inserisci il codice di reimpostazione`,noPassword:`La password è obbligatoria`}},signup:vp,"signup-id":{"signup-id":{buttonText:`Continua`,description:`Registrati per continuare`,"email-already-exists":`Questa email è già registrata`,emailPlaceholder:`Indirizzo e-mail`,federatedConnectionButtonText:"Continua con ${connectionName}","invalid-email-format":`Email non valida`,loginActionLinkText:`Accedi`,loginActionText:`Hai già un account?`,"no-email":`Inserisci un indirizzo email`,pageTitle:"Registrati | ${clientName}",phonePlaceholder:`Numero di telefono`,separatorText:`o`,title:`Crea il tuo account`,usernamePlaceholder:`Nome utente`}},"signup-password":{"signup-password":{buttonText:`Continua`,description:`Registrati per continuare`,hidePasswordText:`Nascondi password`,"no-password":`La password è obbligatoria`,pageTitle:"Registrati | ${clientName}","password-policy-not-met":`La password non soddisfa i requisiti`,"password-too-weak":`La password è troppo debole`,passwordPlaceholder:`Password`,showPasswordText:`Mostra password`,title:`Crea la tua password`,passwordTooShort:"La password deve contenere almeno ${minLength} caratteri",passwordMissingLowercase:`La password deve contenere almeno una lettera minuscola`,passwordMissingUppercase:`La password deve contenere almeno una lettera maiuscola`,passwordMissingNumber:`La password deve contenere almeno un numero`,passwordMissingSpecial:`La password deve contenere almeno un carattere speciale`,passwordReused:`La password è stata utilizzata di recente e non può essere riutilizzata`,passwordContainsPersonalInfo:`La password non può contenere informazioni personali come il nome o l'email`,passwordContainsForbiddenWord:`La password contiene una parola vietata`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Continua`,codeLabel:`Codice di verifica`,codePlaceholder:`Inserisci il codice`,defaultDescription:`Inserisci il codice di verifica inviato al tuo telefono`,description:"Abbiamo inviato un codice a ${username}","invalid-code":`Codice non valido`,noCode:`Inserisci il codice di verifica`,pageTitle:"Inserisci il codice | ${clientName}",resendText:`Reinvia codice`,sessionExpired:`La sessione è scaduta. Riprova.`,title:`Controlla il tuo telefono`,unexpectedError:`Si è verificato un errore imprevisto`,tooManyRequests:`Troppi tentativi. Attendi qualche istante e riprova.`}},status:yp},iie=c({common:()=>bp,consent:()=>xp,default:()=>aie,invitation:()=>Sp,login:()=>Cp,mfa:()=>wp,organizations:()=>Ep,passkeys:()=>Tp,signup:()=>Dp,status:()=>Op}),bp={common:{alertListTitle:`Varsler`,backText:`Gå tilbake`,backToLoginText:`Tilbake til innlogging`,cancelText:`Avbryt`,closeText:`Lukk`,contactSupportText:`Kontakt kundestøtte`,continueText:`Fortsett`,copyrightText:"© ${currentYear} ${companyName}",errorText:`Det oppstod en feil`,hidePasswordText:`Skjul passord`,loadingText:`Laster...`,orText:`eller`,privacyPolicyText:`Personvernerklæring`,showPasswordText:`Vis passord`,termsOfServiceText:`Vilkår for bruk`,termsShortText:`Vilkår`,tryAgainText:`Prøv igjen`},account:{title:`Kontoinnstillinger`,description:`Administrer kontoen din`,editProfileLabel:`Rediger profil`,editProfileDetail:`Navn, e-post, telefonnummer og bilde`,securityLabel:`Sikkerhetsinnstillinger`,securityDetail:`Flerfaktorautentisering`,securityMethodsCountOne:"${count} metode konfigurert",securityMethodsCount:"${count} metoder konfigurert",passkeysLabel:`Passnøkler`,passkeysDetail:`Logg inn uten passord`,passkeysCountOne:"${count} passnøkkel registrert",passkeysCount:"${count} passnøkler registrert",linkedAccountsLabel:`Koblede kontoer`,linkedAccountsDetail:`Koble til sosiale kontoer`,linkedAccountsCountOne:"${count} koblet konto",linkedAccountsCount:"${count} koblede kontoer",deleteAccountLabel:`Slett konto`,deleteAccountDetail:`Slett kontoen og dataene dine permanent`,logoutText:`Logg ut`},"account-profile":{title:`Rediger profil`,description:`Oppdater personopplysningene dine`,givenNameLabel:`Fornavn`,familyNameLabel:`Etternavn`,nicknameLabel:`Kallenavn`,phoneNumberLabel:`Telefonnummer`,pictureLabel:`URL til profilbilde`,buttonText:`Lagre endringer`,backToAccountText:`Tilbake til kontoen`,updateFailed:`Kunne ikke oppdatere profilen`},"account-delete":{title:`Slett konto`,description:`Slett kontoen din permanent`,warningTitle:`Advarsel: Denne handlingen er permanent`,warningText:`Alle dataene dine blir slettet permanent. Dette omfatter profilen din, koblede kontoer og autentiseringsmetoder. Handlingen kan ikke angres.`,confirmationLabel:'Skriv "${confirmationWord}" for å bekrefte',buttonText:`Slett kontoen min`,cancelText:`Avbryt`,confirmationError:'Skriv "${confirmationWord}" for å bekrefte',deleteSuccess:`Kontoen din er slettet`,deleteFailed:`Kunne ikke slette kontoen`},"account-linked":{title:`Koblede kontoer`,description:`Administrer de koblede kontoene dine`,noLinkedAccounts:`Ingen koblede kontoer.`,unlinkButtonText:`Koble fra`,backToAccountText:`Tilbake til kontoen`,unlinkSuccess:`Kontoen er koblet fra`,unlinkFailed:`Kunne ikke koble fra kontoen`},"account-security":{title:`Sikkerhetsinnstillinger`,description:`Administrer metodene dine for tofaktorautentisering`,noEnrollments:`Du har ingen metoder for tofaktorautentisering konfigurert.`,addedOn:"Lagt til ${date}",removeButtonText:`Fjern`,addTotpLabel:`Legg til autentiseringsapp`,addTotpDetail:`Bruk en app som Google Authenticator eller Authy`,addSmsLabel:`Legg til telefon (SMS)`,addSmsDetail:`Motta bekreftelseskoder på SMS`,typeTotp:`Autentiseringsapp`,typePhone:`Telefon (SMS)`,typeEmail:`E-post`,typePush:`Push-varsel`,typeWebauthn:`Sikkerhetsnøkkel`,backToAccountText:`Tilbake til kontoen`,enrollmentNotFound:`Metoden ble ikke funnet`,removeSuccess:`Autentiseringsmetoden er fjernet`,removeFailed:`Kunne ikke fjerne autentiseringsmetoden`},"account-passkeys":{title:`Passnøkler`,description:`Administrer passnøklene dine for innlogging uten passord`,noPasskeysText:`Du har ingen registrerte passnøkler.`,defaultPasskeyName:`Passnøkkel`,syncedBadgeText:`Synkronisert`,addedOnText:"Lagt til ${date}",renameButtonText:`Gi nytt navn`,removeButtonText:`Fjern`,renamePromptText:`Skriv inn et nytt navn for denne passnøkkelen:`,addPasskeyButtonText:`Legg til passnøkkel`,backToAccountText:`Tilbake til kontoen`,logoutText:`Logg ut`,passkeyNotFoundText:`Fant ikke passnøkkelen`,passkeyRemovedText:`Passnøkkelen er fjernet`,removeFailedText:`Kunne ikke fjerne passnøkkelen`,invalidNameText:`Navnet må være mellom 1 og 64 tegn`,passkeyRenamedText:`Passnøkkelen har fått nytt navn`,renameFailedText:`Kunne ikke gi passnøkkelen nytt navn`,startRegistrationFailedText:`Kunne ikke starte registrering av passnøkkel`,missingCredentialText:`Mangler data for passnøkkelen`,challengeExpiredText:`Forespørselen har utløpt. Prøv igjen.`,invalidCredentialText:`Ugyldige data for passnøkkelen`,verificationFailedText:`Bekreftelse av passnøkkelen mislyktes`,passkeyAddedText:`Passnøkkelen er lagt til`,registrationFailedText:`Registrering av passnøkkel mislyktes. Prøv igjen.`},"account-mfa-phone-enrollment":{title:`Sett opp telefon (SMS)`,description:`Skriv inn telefonnummeret ditt for å motta bekreftelseskoder på SMS.`,phoneLabel:`Telefonnummer`,sendCodeButtonText:`Send bekreftelseskode`,backToSecurityText:`Tilbake til sikkerhetsinnstillinger`,verifyTitle:`Bekreft telefonnummer`,verifyDescription:`Skriv inn bekreftelseskoden som ble sendt til telefonen din.`,codeSentText:"En bekreftelseskode er sendt til ${phoneNumber}",codeSentToYourPhoneText:`En bekreftelseskode er sendt til telefonen din`,codeLabel:`Bekreftelseskode`,codePlaceholder:`Skriv inn bekreftelseskode`,verifyButtonText:`Bekreft og aktiver`,noPhoneText:`Skriv inn telefonnummeret ditt`,invalidPhoneText:`Skriv inn et gyldig telefonnummer`,sendCodeFailedText:`Kunne ikke sende bekreftelseskoden. Prøv igjen.`,noCodeText:`Skriv inn bekreftelseskoden`,invalidCodeText:`Ugyldig kode. Prøv igjen.`,sessionInvalidText:`Noe gikk galt. Start registreringen på nytt.`},"account-mfa-totp-enrollment":{title:`Sett opp autentiseringsapp`,description:`Skann QR-koden med autentiseringsappen din, og skriv deretter inn bekreftelseskoden nedenfor.`,qrCodeAltText:`QR-kode`,manualKeyText:`Eller skriv inn denne nøkkelen manuelt:`,codeLabel:`Bekreftelseskode`,codePlaceholder:`Skriv inn 6-sifret kode`,verifyButtonText:`Bekreft og aktiver`,backToSecurityText:`Tilbake til sikkerhetsinnstillinger`,noCodeText:`Skriv inn bekreftelseskoden`,invalidCodeText:`Ugyldig kode. Prøv igjen.`,verificationFailedText:`Bekreftelsen mislyktes. Prøv igjen.`}},xp={consent:{buttonText:`Godta`,cancelButtonText:`Avslå`,description:"${clientName} ber om tilgang til kontoen din",pageTitle:"Godkjenn | ${clientName}",scopesTitle:"Dette vil gi ${clientName} tillatelse til å:",title:"Godkjenn ${clientName}",accessAccountText:"ønsker tilgang til ${tenantName}-kontoen din som ${userName}.",notAuthenticated:`Du må logge inn for å fortsette.`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,consentStorageNotConfigured:`Samtykket ditt kunne ikke lagres. Kontakt eieren av applikasjonen.`},"connect-consent":{title:`Koble til applikasjon`,description:"Vil du tillate ${domain} å handle på dine vegne?",connectAccountText:"ønsker å koble til ${tenantName}-kontoen din som ${userName}.",workspaceLabel:`Arbeidsområde:`,apiLabel:`Til API:`,permissionsLabel:`Forespurte tillatelser:`,localDevBadge:`Lokal utvikling`,localDevTooltip:`Dette nettstedet er et lokalt utviklingsmiljø, ikke produksjon. Tilkoblingen vil ikke fungere utenfor denne maskinen eller dette nettverket.`,buttonText:`Koble til`,cancelText:`Avbryt`,notAuthenticated:`Du må logge inn for å fortsette.`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,workspaceSelectionRequired:`Velg et arbeidsområde først.`,noWorkspaceAccess:`Du har ikke tilgang til det arbeidsområdet`,workspaceNotFound:`Fant ikke arbeidsområdet`},"connect-tenant-select":{title:`Velg et arbeidsområde`,description:"Velg hvilket ${tenantName}-arbeidsområde ${domain} skal koble til.",noWorkspacesDescription:`Ingen tilgjengelige arbeidsområder`,noWorkspacesText:"Du har ikke tilgang til noen ${tenantName}-arbeidsområder. Be en administrator om å invitere deg.",cancelText:`Avbryt`,notAuthenticated:`Du må logge inn for å fortsette.`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,noWorkspaceSelected:`Velg et arbeidsområde.`,noWorkspaceAccess:`Du har ikke tilgang til det arbeidsområdet`}},Sp={invitation:{acceptButtonText:`Godta invitasjon`,description:"${inviterName} har invitert deg til å bli med i ${organizationName} på ${clientName}",pageTitle:"Invitasjon | ${clientName}",title:`Du har blitt invitert`,defaultOrganizationName:`organisasjonen`,acceptFailed:`Vi kunne ikke fullføre oppsettet av kontoen din. Prøv igjen.`}},Cp={login:{alertListTitle:`Varsler`,buttonText:`Fortsett`,description:"Logg inn på ${clientName}.",editEmailText:`Rediger`,emailPlaceholder:`E-postadresse`,enterACodeBtn:`Logg inn med en kode`,enterACodeShortBtn:`Kode`,federatedConnectionButtonText:"Fortsett med ${connectionName}",lastUsedText:`Sist brukt`,footerLinkText:`Registrer deg`,footerText:`Har du ikke en konto?`,forgotPasswordText:`Har du glemt passordet?`,hidePasswordText:`Skjul passord`,invalidEmail:`Ugyldig e-postadresse`,invalidIdentifier:`Ugyldig e-postadresse eller brukernavn`,invitationDescription:"Logg inn for å godta ${inviterName} sin invitasjon til å bli med i ${companyName} på ${clientName}.",invitationTitle:`Du har blitt invitert!`,logoAltText:"${companyName}","no-email":`Vennligst oppgi en e-postadresse`,"no-password":`Passord er påkrevd`,pageTitle:"Logg inn | ${clientName}",passwordLoginNotAvailable:`Passordautentisering er ikke tilgjengelig`,passwordPlaceholder:`Passord`,phonePlaceholder:`Telefonnummer`,separatorText:`eller`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,showPasswordText:`Vis passord`,signupActionLinkText:`Registrer deg`,signupActionText:`Har du ikke en konto?`,title:`Velkommen`,tooManyFailedLogins:`For mange mislykkede innloggingsforsøk. Vennligst prøv igjen senere.`,unverifiedEmail:`Vennligst bekreft e-postadressen din før du logger inn`,userAccountDoesNotExist:`Brukerkontoen finnes ikke`,usernamePlaceholder:`Brukernavn eller e-postadresse`,usernameTooLong:"Brukernavnet må være ${max} tegn eller færre",usernameTooShort:"Brukernavnet må være minst ${min} tegn",wrongCredentials:`Feil brukernavn eller passord`,passkeyButtonText:`Logg inn med passkey`,userBlocked:`Kontoen din har blitt blokkert etter flere påfølgende innloggingsforsøk.`,tooManyRequests:`For mange forsøk. Vent litt og prøv igjen.`,unexpectedError:`Noe gikk galt. Prøv igjen.`}},wp={mfa:{backupCodeText:`Bruk reservekode`,description:`Velg en bekreftelsesmetode`,pageTitle:"Flerfaktorautentisering | ${clientName}",title:`Bekreft identiteten din`}},Tp={"passkey-enrollment-nudge":{title:`Sikre kontoen din med en passnøkkel`,description:`Passnøkler bruker enhetens biometri eller PIN-kode for å logge deg inn raskere og sikrere.`,enrollButtonText:`Sett opp passnøkkel`,snoozeButtonText:`Kanskje senere`,optOutLinkText:`Ikke vis dette igjen`,pageTitle:"Sett Opp Passnøkkel | ${clientName}"},"passkey-enrollment":{title:`Opprett passnøkkelen din`,description:`Følg instruksjonene fra nettleseren for å opprette en passnøkkel for denne kontoen.`,errorMessage:`Kunne ikke opprette passnøkkel. Vennligst prøv igjen.`,cancelLinkText:`Hopp over for nå`,retryButtonText:`Prøv igjen`,enrollmentComplete:`Passnøkkelen din er konfigurert. Du kan lukke denne siden.`,pageTitle:"Opprett Passnøkkel | ${clientName}",sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,enrollmentRequired:`Du må opprette en passnøkkel for å fortsette.`,challengeExpired:`Forespørselen har utløpt. Prøv igjen.`},"passkey-challenge":{title:`Logg inn med passkey`,description:`Følg instruksjonene fra nettleseren for å bekrefte identiteten din.`,errorMessage:`Autentisering med passkey mislyktes. Vennligst prøv igjen.`,cancelLinkText:`Tilbake til innlogging`,retryButtonText:`Prøv igjen`,pageTitle:"Logg inn med passkey | ${clientName}",sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`}},Ep={organizations:{description:`Velg hvilken organisasjon du vil logge inn på`,pageTitle:"Velg organisasjon | ${clientName}",searchPlaceholder:`Søk etter organisasjoner`,title:`Velg din organisasjon`}},Dp={signup:{buttonText:`Registrer deg`,confirmPasswordPlaceholder:`Bekreft passord`,description:`Registrer deg for å fortsette`,"email-already-exists":`E-postadressen er allerede registrert`,emailPlaceholder:`E-postadresse`,federatedConnectionButtonText:"Fortsett med ${connectionName}",hidePasswordText:`Skjul passord`,"invalid-email-format":`Ugyldig e-postadresse`,loginActionLinkText:`Logg inn`,loginActionText:`Har du allerede en konto?`,"no-email":`Vennligst oppgi en e-postadresse`,"no-password":`Passord er påkrevd`,"no-username":`Brukernavn er påkrevd`,pageTitle:"Registrer deg | ${clientName}",passwordPlaceholder:`Passord`,passwordsDidntMatch:`Passordene samsvarer ikke`,phonePlaceholder:`Telefonnummer`,privacyPolicyLinkText:`Personvernerklæring`,separatorText:`eller`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,showPasswordText:`Vis passord`,termsOfServiceLinkText:`Vilkår for bruk`,termsText:`Ved å registrere deg godtar du våre`,title:`Opprett kontoen din`,"username-already-exists":`Dette brukernavnet er allerede tatt`,usernamePlaceholder:`Brukernavn`,verifyEmailText:`Sjekk e-posten din for å bekrefte kontoen`,confirmPasswordRequired:`Bekreft passordet ditt`,createUserFailed:`Vi kunne ikke opprette kontoen din. Prøv igjen.`}},Op={status:{continueButtonText:`Fortsett`,errorTitle:`Feil`,pageTitle:"Status | ${clientName}",successTitle:`Vellykket`,title:`Status`}},aie={common:bp,consent:xp,"device-flow":{"device-flow":{buttonText:`Fortsett`,codePlaceholder:`Skriv inn kode`,description:`Skriv inn koden som vises på enheten din`,"expired-code":`Koden har utløpt`,"invalid-code":`Koden du skrev inn er ugyldig`,pageTitle:"Enhetsaktivering | ${clientName}",title:`Aktiver enheten din`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Fortsett`,codeLabel:`Bekreftelseskode`,codePlaceholder:`Skriv inn kode`,defaultDescription:`Skriv inn bekreftelseskoden som ble sendt til e-posten din`,description:"Vi sendte en kode til ${email}","invalid-code":`Ugyldig kode`,noCode:`Vennligst skriv inn bekreftelseskoden`,pageTitle:"Skriv inn kode | ${clientName}",resendText:`Send kode på nytt`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,title:`Sjekk e-posten din`,unexpectedError:`En uventet feil oppstod`,usePasswordText:`Logg inn med passord`,tooManyRequests:`For mange forsøk. Vent litt og prøv igjen.`}},"email-verification":{"email-verification":{description:"Vi sendte en e-post til ${email}",linkAlreadyUsed:`Bekreftelseslenken er allerede brukt. Be om en ny.`,linkInvalid:`Bekreftelseslenken er ugyldig.`,linkInvalidOrExpired:`Bekreftelseslenken er ugyldig eller har utløpt. Be om en ny.`,linkInvalidTitle:`Bekreftelseslenken er ikke gyldig`,linkWrongType:`Denne lenken kan ikke brukes til å bekrefte en e-postadresse.`,pageTitle:"Bekreft e-post | ${clientName}",resendText:`Send e-post på nytt`,successDescription:`E-postadressen din er bekreftet.`,successTitle:`E-post bekreftet`,title:`Bekreft e-posten din`},"email-verification-code":{buttonText:`Fortsett`,codeLabel:`Bekreftelseskode`,codePlaceholder:`Skriv inn 6-sifret kode`,defaultDescription:`Skriv inn koden vi sendte til e-posten din for å bekrefte adressen og fortsette.`,description:"Vi sendte en kode til ${email}. Skriv den inn for å bekrefte e-postadressen din og fortsette.",invalidCode:`Koden er ugyldig eller utløpt`,noCode:`Skriv inn bekreftelseskoden`,pageTitle:"Bekreft e-post | ${clientName}",resendFailed:`Kunne ikke sende koden på nytt. Prøv igjen.`,resendSuccess:`En ny kode er sendt til e-posten din`,resendText:`Send koden på nytt`,sessionExpired:`Økten din har utløpt. Prøv igjen.`,title:`Bekreft e-postadressen din`,tooManyAttempts:`For mange forsøk. Prøv igjen senere.`},"email-verification-link-sent":{defaultDescription:`Vi sendte en bekreftelseslenke til e-posten din. Klikk på lenken for å bekrefte adressen, og logg deretter inn på nytt.`,description:"Vi sendte en bekreftelseslenke til ${email}. Klikk på lenken for å bekrefte adressen, og logg deretter inn på nytt.",pageTitle:"Bekreft e-post | ${clientName}",resendFailed:`Kunne ikke sende e-posten på nytt. Prøv igjen.`,resendSuccess:`En ny bekreftelses-e-post er sendt`,resendText:`Send e-posten på nytt`,title:`Sjekk e-posten din`}},invitation:Sp,login:Cp,"login-id":{"login-id":{alertListTitle:`Varsler`,"auth0-users-validation":`Noe gikk galt, vennligst prøv igjen senere`,"authentication-failure":`Beklager, noe gikk galt under innloggingsforsøket`,buttonText:`Fortsett`,"captcha-client-failure":`Vi kunne ikke laste sikkerhetsutfordringen. Vennligst prøv igjen. (Feilkode: #{errorCode})`,"captcha-validation-failure":`Beklager, noe gikk galt under validering av captcha-svaret. Vennligst prøv igjen.`,captchaCodePlaceholder:`Skriv inn koden som vises ovenfor`,"custom-script-error-code":`Noe gikk galt, vennligst prøv igjen senere.`,description:"Logg inn på ${clientName}.",editEmailText:`Rediger`,emailPlaceholder:`E-postadresse`,federatedConnectionButtonText:"Fortsett med ${connectionName}",lastUsedText:`Sist brukt`,footerLinkText:`Registrer deg`,footerText:`Har du ikke en konto?`,forgotPasswordText:`Har du glemt passordet?`,hidePasswordText:`Skjul passord`,"invalid-captcha":`Løs utfordringen for å bekrefte at du ikke er en robot.`,"invalid-code":`Ugyldig kode`,"invalid-connection":`Ugyldig tilkobling`,"invalid-email-format":`Ugyldig e-postadresse`,"invalid-email-phone":`Skriv inn en gyldig e-postadresse eller telefonnummer. Telefonnumre må inkludere landskode.`,"invalid-email-phone-username":`Skriv inn en gyldig e-postadresse, telefonnummer eller brukernavn. Telefonnumre må inkludere landskode.`,"invalid-email-username":`Skriv inn en gyldig e-postadresse eller brukernavn`,"invalid-expired-code":`Ugyldig eller utløpt brukerkode`,"invalid-login-id":`Ugyldig innloggings-ID`,"invalid-phone-username":`Skriv inn et gyldig telefonnummer eller brukernavn. Telefonnumre må inkludere landskode.`,"invalid-recaptcha":`Kryss av i boksen for å bekrefte at du ikke er en robot.`,"invalid-username":"Brukernavnet kan bare inneholde alfanumeriske tegn eller: '${characters}'. Brukernavnet må ha mellom ${min} og ${max} tegn.",invitationDescription:"Logg inn for å godta ${inviterName} sin invitasjon til å bli med i ${companyName} på ${clientName}.",invitationTitle:`Du har blitt invitert!`,"ip-blocked":`Vi har oppdaget mistenkelig innloggingsaktivitet, og videre forsøk vil bli blokkert. Vennligst kontakt administratoren.`,logoAltText:"${companyName}","no-db-connection":`Ugyldig tilkobling`,"no-email":`Vennligst oppgi en e-postadresse`,"no-email-phone":`E-postadresse eller telefonnummer er påkrevd`,"no-email-phone-username":`Telefonnummer, brukernavn eller e-postadresse er påkrevd`,"no-email-username":`E-postadresse eller brukernavn er påkrevd`,"no-password":`Passord er påkrevd`,"no-phone":`Vennligst oppgi et telefonnummer`,"no-phone-username":`Telefonnummer eller brukernavn er påkrevd`,"no-username":`Brukernavn er påkrevd`,pageTitle:"Logg inn | ${clientName}","password-breached":`Vi har oppdaget et potensielt sikkerhetsproblem med denne kontoen. For å beskytte kontoen din har vi forhindret denne innloggingen. Vennligst tilbakestill passordet ditt for å fortsette.`,passwordPlaceholder:`Passord`,phoneOrEmailPlaceholder:`E-post eller telefonnummer`,phoneOrUsernameOrEmailPlaceholder:`Telefon, brukernavn eller e-post`,phoneOrUsernamePlaceholder:`Telefonnummer eller brukernavn`,phonePlaceholder:`Telefonnummer`,"same-user-login":`For mange innloggingsforsøk for denne brukeren. Vennligst vent og prøv igjen senere.`,selectCountryCode:"Velg landskode, for øyeblikket satt til ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`eller`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,showPasswordText:`Vis passord`,signupActionLinkText:`Registrer deg`,signupActionText:`Har du ikke en konto?`,termsAndConditionsTemplate:'Ved å fortsette godtar du våre <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">vilkår</a>.',title:`Velkommen`,"user-blocked":`Kontoen din har blitt blokkert etter flere påfølgende innloggingsforsøk.`,userAccountDoesNotExist:`Brukerkontoen finnes ikke`,usernameOnlyPlaceholder:`Brukernavn`,usernameOrEmailPlaceholder:`Brukernavn eller e-postadresse`,usernamePlaceholder:`Brukernavn eller e-postadresse`,usernameTooLong:"Brukernavnet må være ${max} tegn eller færre",usernameTooShort:"Brukernavnet må være minst ${min} tegn","wrong-credentials":`Feil brukernavn eller passord`,"wrong-email-credentials":`Feil e-postadresse eller passord`,"wrong-email-phone-credentials":`Feil e-postadresse, telefonnummer eller passord. Telefonnumre må inkludere landskode.`,"wrong-email-phone-username-credentials":`Feil e-postadresse, telefonnummer, brukernavn eller passord. Telefonnumre må inkludere landskode.`,"wrong-email-username-credentials":`Feil e-postadresse, brukernavn eller passord`,"wrong-phone-credentials":`Feil telefonnummer eller passord`,"wrong-phone-username-credentials":`Feil telefonnummer, brukernavn eller passord. Telefonnumre må inkludere landskode.`,"wrong-username-credentials":`Feil brukernavn eller passord`,passkeyButtonText:`Logg inn med passkey`}},"login-password":{"login-password":{buttonText:`Logg inn`,description:"Logg inn på ${clientName}",forgotPasswordText:`Har du glemt passordet?`,hidePasswordText:`Skjul passord`,"no-password":`Passord er påkrevd`,pageTitle:"Logg inn | ${clientName}","password-breached":`Vi har oppdaget et potensielt sikkerhetsproblem med denne kontoen. For å beskytte kontoen din har vi forhindret denne innloggingen. Vennligst tilbakestill passordet ditt for å fortsette.`,passwordPlaceholder:`Passord`,showPasswordText:`Vis passord`,signingInAs:"Logger inn som ${email}",title:`Oppgi passord`,unverifiedEmail:`Vennligst bekreft e-postadressen din før du logger inn`,"user-blocked":`Kontoen din har blitt blokkert etter flere påfølgende innloggingsforsøk.`,"wrong-credentials":`Feil passord`,sendCodeText:`Logg inn med kode`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,tooManyRequests:`For mange forsøk. Vent litt og prøv igjen.`,unexpectedError:`Noe gikk galt. Prøv igjen.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`e-post`,authMethodEmailOrPhone:`e-post eller telefonnummer`,authMethodPhone:`telefonnummer`,description:"Logg inn med din ${authMethod}",emailOrPhonePlaceholder:`E-postadresse eller telefonnummer`,emailPlaceholder:`E-postadresse`,invalidEmail:`Vennligst oppgi en gyldig e-postadresse`,invalidIdentifier:`Vennligst oppgi en gyldig e-postadresse eller telefonnummer`,invalidPhone:`Vennligst oppgi et gyldig telefonnummer med landskode`,noEmail:`Vennligst oppgi e-postadressen din`,noPhone:`Vennligst oppgi telefonnummeret ditt`,phonePlaceholder:`Telefonnummer`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,title:`Logg inn med en kode`,userAccountDoesNotExist:`Brukerkontoen finnes ikke`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Klikk på lenken i e-posten for å logge inn`,description:"Vi sendte en lenke til ${username}. Klikk på den for å logge inn.",resendText:`Send lenke på nytt`,spamText:`Fikk du ikke e-posten? Sjekk søppelpostmappen.`,title:`Sjekk e-posten din`}},mfa:wp,"mfa-email":{"mfa-email":{buttonText:`Fortsett`,codePlaceholder:`Skriv inn kode`,description:"Vi sendte en kode til ${email}","invalid-code":`Koden du skrev inn er ugyldig`,pageTitle:"E-postbekreftelse | ${clientName}",resendText:`Send kode på nytt`,title:`Sjekk e-posten din`}},"mfa-otp":{"mfa-otp":{buttonText:`Fortsett`,codePlaceholder:`Skriv inn kode`,description:`Skriv inn den 6-sifrede koden fra autentiseringsappen din`,"invalid-code":`Koden du skrev inn er ugyldig`,pageTitle:"Skriv inn kode | ${clientName}",title:`Skriv inn koden din`},"mfa-totp-enrollment":{title:`Sett opp autentisering`,description:`Skann QR-koden nedenfor med autentiseringsappen din, og skriv deretter inn den 6-sifrede koden for å verifisere`,secretLabel:`Eller skriv inn denne koden manuelt:`,codePlaceholder:`Skriv inn kode`,continueButtonText:`Bekreft og aktiver`,"invalid-code":`Koden du skrev inn er ugyldig. Vennligst prøv igjen.`,"transaction-not-found":`Registreringsøkten din har utløpt, du må starte på nytt.`,pageTitle:"Sett opp autentisering | ${clientName}",unexpectedError:`Noe gikk galt. Vennligst prøv igjen.`,enrollmentComplete:`MFA-registreringen er fullført. Du kan lukke denne siden.`,pickAuthenticatorText:`Prøv en annen metode`,qrCodeAltText:`QR-kode`},"mfa-totp-challenge":{title:`Bekreft identiteten din`,description:`Skriv inn den 6-sifrede koden fra autentiseringsappen din`,codePlaceholder:`Skriv inn kode`,continueButtonText:`Fortsett`,"invalid-code":`Koden du skrev inn er ugyldig`,"transaction-not-found":`Registreringsøkten din har utløpt, du må starte på nytt.`,unexpectedError:`Noe gikk galt. Vennligst prøv igjen.`,pageTitle:"Bekreft identitet | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Bruk telefonnummeret ditt for å logge inn | ${clientName}",title:`Bekreft identiteten din`,description:"Vi sendte en kode til ${phoneNumber}",continueButtonText:`Fortsett`,changePhoneText:`Velg et annet telefonnummer.`,smsButtonText:`Tekstmelding`,voiceButtonText:`Taleanrop`,chooseMessageTypeText:`Hvordan vil du motta koden?`,pickAuthenticatorText:`Prøv en annen metode`,logoAltText:"${companyName}",codePlaceholder:`Skriv inn kode`,"send-sms-failed":`Det oppstod et problem med å sende SMS-en`,"send-voice-failed":`Det oppstod et problem med å ringe taleanropet`,"invalid-phone-format":`Telefonnummeret kan bare inneholde sifre.`,"invalid-phone":`Det ser ut som telefonnummeret ditt ikke er gyldig. Sjekk og prøv igjen.`,"too-many-sms":`Du har overskredet maksimalt antall telefonmeldinger per time. Vent noen minutter og prøv igjen.`,"too-many-voice":`Du har overskredet maksimalt antall telefonmeldinger per time. Vent noen minutter og prøv igjen.`,"transaction-not-found":`Registreringstransaksjonen din har utløpt, du må starte på nytt.`,"no-phone":`Skriv inn et telefonnummer`,noCode:`Vennligst skriv inn bekreftelseskoden`,invalidCode:`Koden du skrev inn er ugyldig. Prøv igjen.`,unexpectedError:`Noe gikk galt. Prøv igjen.`,resendSuccess:`Vi sendte en ny kode til telefonen din`,enrollmentComplete:`MFA-registreringen er fullført. Du kan lukke denne siden.`},"mfa-phone-enrollment":{pageTitle:"Skriv inn telefonnummeret ditt for å logge inn med en telefonkode | ${clientName}",title:`Sikre kontoen din`,description:`Skriv inn landskoden og telefonnummeret vi kan sende en 6-sifret kode til:`,continueButtonText:`Fortsett`,smsButtonText:`Tekstmelding`,voiceButtonText:`Taleanrop`,chooseMessageTypeText:`Hvordan vil du motta koden?`,pickAuthenticatorText:`Prøv en annen metode`,placeholder:`Skriv inn telefonnummeret ditt`,logoAltText:"${companyName}",selectCountryCode:"Velg landskode, for øyeblikket satt til ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`Det oppstod et problem med å sende SMS-en`,"send-voice-failed":`Det oppstod et problem med å ringe taleanropet`,"sms-authenticator-error":`Vi kunne ikke sende SMS-en. Prøv igjen senere.`,"invalid-phone-format":`Telefonnummeret kan bare inneholde sifre.`,"invalid-phone":`Det ser ut som telefonnummeret ditt ikke er gyldig. Sjekk og prøv igjen.`,"too-many-sms":`Du har overskredet maksimalt antall telefonmeldinger per time. Vent noen minutter og prøv igjen.`,"too-many-voice":`Du har overskredet maksimalt antall telefonmeldinger per time. Vent noen minutter og prøv igjen.`,"transaction-not-found":`Registreringstransaksjonen din har utløpt, du må starte på nytt.`,"no-phone":`Skriv inn et telefonnummer`,"phone-is-too-short":`Telefonnummeret er for kort`,"phone-is-too-long":`Telefonnummeret er for langt`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Velg bekreftelsesmetode | ${clientName}",title:`Velg bekreftelsesmetode`,description:`Velg hvordan du vil bekrefte identiteten din`,authenticatorAppLabel:`Autentiseringsapp`,authenticatorAppDescription:`Bruk autentiseringsappen din for å få en bekreftelseskode`,smsLabel:`Tekstmelding`,smsDescription:`Få en bekreftelseskode sendt til telefonen din`,passkeyLabel:`Passnøkkel`,passkeyDescription:`Bruk enhetens biometri eller sikkerhetsnøkkel`}},"mfa-push":{"mfa-push":{description:`Vi sendte en varsling til enheten din`,pageTitle:"Push-varsling | ${clientName}",resendText:`Send varsling på nytt`,title:`Godkjenn forespørselen`,useCodeText:`Skriv inn kode manuelt`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Fortsett`,codePlaceholder:`Gjenopprettingskode`,description:`Skriv inn en av gjenopprettingskodene dine`,"invalid-code":`Gjenopprettingskoden du skrev inn er ugyldig`,pageTitle:"Gjenopprettingskode | ${clientName}",title:`Skriv inn gjenopprettingskode`}},"mfa-voice":{"mfa-voice":{buttonText:`Ring meg`,codePlaceholder:`Skriv inn kode`,description:"Vi ringer ${phoneNumber} med koden din","invalid-code":`Koden du skrev inn er ugyldig`,pageTitle:"Taleanrop | ${clientName}",title:`Motta en telefonsamtale`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Prøv igjen`,description:`Sett inn sikkerhetsnøkkelen din og følg instruksjonene`,pageTitle:"Sikkerhetsnøkkel | ${clientName}",title:`Bruk sikkerhetsnøkkelen din`}},passkeys:Tp,organizations:Ep,"reset-password":{"reset-password":{backToLoginText:`Tilbake til innlogging`,buttonText:`Fortsett`,codeExpired:`Koden for tilbakestilling av passord har utløpt. Vennligst be om en ny.`,confirmPasswordLabel:`Bekreft passord`,confirmPasswordPlaceholder:`Bekreft passord`,description:`Oppgi e-postadressen din for å tilbakestille passordet`,emailPlaceholder:`E-postadresse`,failed:`Tilbakestilling av passord mislyktes. Vennligst prøv igjen.`,"invalid-email-format":`Ugyldig e-postadresse`,"no-email":`Vennligst oppgi en e-postadresse`,pageTitle:"Tilbakestill passord | ${clientName}",passwordLabel:`Nytt passord`,passwordPlaceholder:`Nytt passord`,passwordTooWeak:`Passordet er for svakt`,passwordsDidntMatch:`Passordene samsvarer ikke`,successDescription:`Vi har sendt en lenke for tilbakestilling av passord til e-postadressen din.`,successTitle:`Sjekk e-posten din`,title:`Har du glemt passordet?`,"user-not-found":`Brukeren ble ikke funnet`,noPassword:`Passord er påkrevd`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`},"reset-password-code":{backToLoginText:`Tilbake til innlogging`,buttonText:`Tilbakestill passord`,codeLabel:`Tilbakestillingskode`,codePlaceholder:`Skriv inn 6-sifret kode`,confirmPasswordLabel:`Bekreft passord`,confirmPasswordPlaceholder:`Bekreft passord`,defaultDescription:`Skriv inn koden som ble sendt til e-posten din og velg et nytt passord`,description:"Vi sendte en kode til ${email}",failed:`Tilbakestilling av passord mislyktes. Vennligst prøv igjen.`,invalidCode:`Koden du skrev inn er ugyldig eller har utløpt`,noCode:`Vennligst skriv inn tilbakestillingskoden`,pageTitle:"Skriv inn tilbakestillingskode | ${clientName}",passwordLabel:`Nytt passord`,passwordPlaceholder:`Nytt passord`,passwordTooWeak:`Passordet er for svakt`,passwordsDidntMatch:`Passordene samsvarer ikke`,resendFailed:`Kunne ikke sende koden på nytt. Vennligst prøv igjen.`,resendSuccess:`En ny kode har blitt sendt til e-posten din`,resendText:`Send kode på nytt`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,title:`Skriv inn tilbakestillingskode`,noPassword:`Passord er påkrevd`}},signup:Dp,"signup-id":{"signup-id":{buttonText:`Fortsett`,description:`Registrer deg for å fortsette`,"email-already-exists":`E-postadressen er allerede registrert`,emailPlaceholder:`E-postadresse`,federatedConnectionButtonText:"Fortsett med ${connectionName}","invalid-email-format":`Ugyldig e-postadresse`,loginActionLinkText:`Logg inn`,loginActionText:`Har du allerede en konto?`,"no-email":`Vennligst oppgi en e-postadresse`,pageTitle:"Registrer deg | ${clientName}",phonePlaceholder:`Telefonnummer`,separatorText:`eller`,title:`Opprett kontoen din`,usernamePlaceholder:`Brukernavn`}},"signup-password":{"signup-password":{buttonText:`Fortsett`,description:`Opprett et passord for å fortsette`,hidePasswordText:`Skjul passord`,"no-password":`Passord er påkrevd`,pageTitle:"Registrer deg | ${clientName}","password-policy-not-met":`Passordet oppfyller ikke kravene`,"password-too-weak":`Passordet er for svakt`,passwordPlaceholder:`Passord`,showPasswordText:`Vis passord`,title:`Opprett passordet ditt`,passwordTooShort:"Passordet må være minst ${minLength} tegn",passwordMissingLowercase:`Passordet må inneholde minst én liten bokstav`,passwordMissingUppercase:`Passordet må inneholde minst én stor bokstav`,passwordMissingNumber:`Passordet må inneholde minst ett tall`,passwordMissingSpecial:`Passordet må inneholde minst ett spesialtegn`,passwordReused:`Passordet har blitt brukt nylig og kan ikke gjenbrukes`,passwordContainsPersonalInfo:`Passordet kan ikke inneholde personlig informasjon som navn eller e-post`,passwordContainsForbiddenWord:`Passordet inneholder et forbudt ord`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Fortsett`,codeLabel:`Bekreftelseskode`,codePlaceholder:`Skriv inn kode`,defaultDescription:`Skriv inn bekreftelseskoden som ble sendt til telefonen din`,description:"Vi sendte en kode til ${username}","invalid-code":`Ugyldig kode`,noCode:`Vennligst skriv inn bekreftelseskoden`,pageTitle:"Skriv inn kode | ${clientName}",resendText:`Send kode på nytt`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,title:`Sjekk telefonen din`,unexpectedError:`En uventet feil oppstod`,tooManyRequests:`For mange forsøk. Vent litt og prøv igjen.`}},status:Op},oie=c({common:()=>kp,consent:()=>Ap,default:()=>sie,invitation:()=>jp,login:()=>Mp,mfa:()=>Np,organizations:()=>Fp,passkeys:()=>Pp,signup:()=>Ip,status:()=>Lp}),kp={common:{alertListTitle:`Powiadomienia`,backText:`Wróć`,backToLoginText:`Wróć do logowania`,cancelText:`Anuluj`,closeText:`Zamknij`,contactSupportText:`Potrzebujesz pomocy?`,continueText:`Kontynuuj`,copyrightText:"© ${currentYear} ${companyName}",errorText:`Coś poszło nie tak. Spróbuj ponownie.`,hidePasswordText:`Ukryj hasło`,loadingText:`Ładowanie...`,orText:`lub`,privacyPolicyText:`Polityka prywatności`,showPasswordText:`Pokaż hasło`,termsOfServiceText:`Regulamin`,termsShortText:`Zasady`,tryAgainText:`Spróbuj ponownie`},account:{title:`Ustawienia konta`,description:`Zarządzaj swoim kontem`,editProfileLabel:`Edytuj profil`,editProfileDetail:`Imię i nazwisko, e-mail, numer telefonu i zdjęcie`,securityLabel:`Ustawienia bezpieczeństwa`,securityDetail:`Uwierzytelnianie wieloskładnikowe`,securityMethodsCountOne:"${count} skonfigurowana metoda",securityMethodsCount:"Skonfigurowane metody: ${count}",passkeysLabel:`Klucze dostępu`,passkeysDetail:`Logowanie bez hasła`,passkeysCountOne:"${count} zarejestrowany klucz dostępu",passkeysCount:"Zarejestrowane klucze dostępu: ${count}",linkedAccountsLabel:`Połączone konta`,linkedAccountsDetail:`Połącz konta społecznościowe`,linkedAccountsCountOne:"${count} połączone konto",linkedAccountsCount:"Połączone konta: ${count}",deleteAccountLabel:`Usuń konto`,deleteAccountDetail:`Trwale usuń swoje konto i dane`,logoutText:`Wyloguj się`},"account-profile":{title:`Edytuj profil`,description:`Zaktualizuj swoje dane osobowe`,givenNameLabel:`Imię`,familyNameLabel:`Nazwisko`,nicknameLabel:`Pseudonim`,phoneNumberLabel:`Numer telefonu`,pictureLabel:`Adres URL zdjęcia profilowego`,buttonText:`Zapisz zmiany`,backToAccountText:`Wróć do konta`,updateFailed:`Nie udało się zaktualizować profilu`},"account-delete":{title:`Usuń konto`,description:`Trwale usuń swoje konto`,warningTitle:`Uwaga: tej operacji nie można cofnąć`,warningText:`Wszystkie Twoje dane zostaną trwale usunięte, w tym profil, połączone konta i metody uwierzytelniania. Tej operacji nie można cofnąć.`,confirmationLabel:'Wpisz "${confirmationWord}", aby potwierdzić',buttonText:`Usuń moje konto`,cancelText:`Anuluj`,confirmationError:'Wpisz "${confirmationWord}", aby potwierdzić',deleteSuccess:`Twoje konto zostało usunięte`,deleteFailed:`Nie udało się usunąć konta`},"account-linked":{title:`Połączone konta`,description:`Zarządzaj połączonymi kontami`,noLinkedAccounts:`Brak połączonych kont.`,unlinkButtonText:`Odłącz`,backToAccountText:`Wróć do konta`,unlinkSuccess:`Konto zostało odłączone`,unlinkFailed:`Nie udało się odłączyć konta`},"account-security":{title:`Ustawienia bezpieczeństwa`,description:`Zarządzaj metodami uwierzytelniania dwuskładnikowego`,noEnrollments:`Nie masz skonfigurowanych metod uwierzytelniania dwuskładnikowego.`,addedOn:"Dodano ${date}",removeButtonText:`Usuń`,addTotpLabel:`Dodaj aplikację uwierzytelniającą`,addTotpDetail:`Użyj aplikacji, takiej jak Google Authenticator lub Authy`,addSmsLabel:`Dodaj telefon (SMS)`,addSmsDetail:`Otrzymuj kody weryfikacyjne SMS-em`,typeTotp:`Aplikacja uwierzytelniająca`,typePhone:`Telefon (SMS)`,typeEmail:`E-mail`,typePush:`Powiadomienie push`,typeWebauthn:`Klucz bezpieczeństwa`,backToAccountText:`Wróć do konta`,enrollmentNotFound:`Nie znaleziono metody`,removeSuccess:`Metoda uwierzytelniania została usunięta`,removeFailed:`Nie udało się usunąć metody uwierzytelniania`},"account-passkeys":{title:`Klucze dostępu`,description:`Zarządzaj kluczami dostępu do logowania bez hasła`,noPasskeysText:`Nie masz zarejestrowanych kluczy dostępu.`,defaultPasskeyName:`Klucz dostępu`,syncedBadgeText:`Zsynchronizowany`,addedOnText:"Dodano ${date}",renameButtonText:`Zmień nazwę`,removeButtonText:`Usuń`,renamePromptText:`Wpisz nową nazwę tego klucza dostępu:`,addPasskeyButtonText:`Dodaj klucz dostępu`,backToAccountText:`Wróć do konta`,logoutText:`Wyloguj się`,passkeyNotFoundText:`Nie znaleziono klucza dostępu`,passkeyRemovedText:`Klucz dostępu został usunięty`,removeFailedText:`Nie udało się usunąć klucza dostępu`,invalidNameText:`Nazwa musi mieć od 1 do 64 znaków`,passkeyRenamedText:`Nazwa klucza dostępu została zmieniona`,renameFailedText:`Nie udało się zmienić nazwy klucza dostępu`,startRegistrationFailedText:`Nie udało się rozpocząć rejestracji klucza dostępu`,missingCredentialText:`Brak danych klucza dostępu`,challengeExpiredText:`Żądanie wygasło. Spróbuj ponownie.`,invalidCredentialText:`Nieprawidłowe dane klucza dostępu`,verificationFailedText:`Weryfikacja klucza dostępu nie powiodła się`,passkeyAddedText:`Klucz dostępu został dodany`,registrationFailedText:`Rejestracja klucza dostępu nie powiodła się. Spróbuj ponownie.`},"account-mfa-phone-enrollment":{title:`Skonfiguruj telefon (SMS)`,description:`Wpisz numer telefonu, aby otrzymywać kody weryfikacyjne SMS-em.`,phoneLabel:`Numer telefonu`,sendCodeButtonText:`Wyślij kod weryfikacyjny`,backToSecurityText:`Wróć do ustawień zabezpieczeń`,verifyTitle:`Zweryfikuj numer telefonu`,verifyDescription:`Wpisz kod weryfikacyjny wysłany na Twój telefon.`,codeSentText:"Kod weryfikacyjny został wysłany na numer ${phoneNumber}",codeSentToYourPhoneText:`Kod weryfikacyjny został wysłany na Twój telefon`,codeLabel:`Kod weryfikacyjny`,codePlaceholder:`Wpisz kod weryfikacyjny`,verifyButtonText:`Zweryfikuj i włącz`,noPhoneText:`Wpisz swój numer telefonu`,invalidPhoneText:`Wpisz prawidłowy numer telefonu`,sendCodeFailedText:`Nie udało się wysłać kodu weryfikacyjnego. Spróbuj ponownie.`,noCodeText:`Wpisz kod weryfikacyjny`,invalidCodeText:`Nieprawidłowy kod. Spróbuj ponownie.`,sessionInvalidText:`Coś poszło nie tak. Rozpocznij rejestrację od nowa.`},"account-mfa-totp-enrollment":{title:`Skonfiguruj aplikację uwierzytelniającą`,description:`Zeskanuj kod QR aplikacją uwierzytelniającą, a następnie wpisz poniżej kod weryfikacyjny.`,qrCodeAltText:`Kod QR`,manualKeyText:`Lub wpisz ten klucz ręcznie:`,codeLabel:`Kod weryfikacyjny`,codePlaceholder:`Wpisz 6-cyfrowy kod`,verifyButtonText:`Zweryfikuj i włącz`,backToSecurityText:`Wróć do ustawień zabezpieczeń`,noCodeText:`Wpisz kod weryfikacyjny`,invalidCodeText:`Nieprawidłowy kod. Spróbuj ponownie.`,verificationFailedText:`Weryfikacja nie powiodła się. Spróbuj ponownie.`}},Ap={consent:{buttonText:`Zaakceptuj`,cancelButtonText:`Odmów`,description:"${clientName} prosi o dostęp do Twojego konta",pageTitle:"Autoryzacja | ${clientName}",scopesTitle:"Umożliwi to ${clientName}:",title:"Autoryzuj ${clientName}",accessAccountText:"chce uzyskać dostęp do Twojego konta ${tenantName} jako ${userName}.",notAuthenticated:`Musisz się zalogować, aby kontynuować.`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,consentStorageNotConfigured:`Nie udało się zapisać Twojej zgody. Skontaktuj się z właścicielem aplikacji.`},"connect-consent":{title:`Połącz aplikację`,description:"Zezwolić ${domain} na działanie w Twoim imieniu?",connectAccountText:"chce połączyć się z Twoim kontem ${tenantName} jako ${userName}.",workspaceLabel:`Obszar roboczy:`,apiLabel:`Dla API:`,permissionsLabel:`Żądane uprawnienia:`,localDevBadge:`Środowisko lokalne`,localDevTooltip:`Ta witryna to lokalne środowisko deweloperskie, a nie produkcyjne. Połączenie nie będzie działać poza tym komputerem lub siecią.`,buttonText:`Połącz`,cancelText:`Anuluj`,notAuthenticated:`Musisz się zalogować, aby kontynuować.`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,workspaceSelectionRequired:`Najpierw wybierz obszar roboczy.`,noWorkspaceAccess:`Nie masz dostępu do tego obszaru roboczego`,workspaceNotFound:`Nie znaleziono obszaru roboczego`},"connect-tenant-select":{title:`Wybierz obszar roboczy`,description:"Wybierz obszar roboczy ${tenantName}, z którym ma się połączyć ${domain}.",noWorkspacesDescription:`Brak dostępnych obszarów roboczych`,noWorkspacesText:"Nie masz dostępu do żadnego obszaru roboczego ${tenantName}. Poproś administratora o zaproszenie.",cancelText:`Anuluj`,notAuthenticated:`Musisz się zalogować, aby kontynuować.`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,noWorkspaceSelected:`Wybierz obszar roboczy.`,noWorkspaceAccess:`Nie masz dostępu do tego obszaru roboczego`}},jp={invitation:{acceptButtonText:`Przyjmij zaproszenie`,description:"${inviterName} zaprosił Cię do dołączenia do ${organizationName} w ${clientName}",pageTitle:"Zaproszenie | ${clientName}",title:`Otrzymałeś zaproszenie`,defaultOrganizationName:`organizacji`,acceptFailed:`Nie udało się dokończyć konfiguracji konta. Spróbuj ponownie.`}},Mp={login:{alertListTitle:`Powiadomienia`,buttonText:`Kontynuuj`,description:"Zaloguj się do ${clientName}.",editEmailText:`Edytuj`,emailPlaceholder:`Adres e-mail`,enterACodeBtn:`Zaloguj się kodem`,enterACodeShortBtn:`Kod`,federatedConnectionButtonText:"Kontynuuj z ${connectionName}",lastUsedText:`Ostatnio używane`,footerLinkText:`Zarejestruj się`,footerText:`Nie masz konta?`,forgotPasswordText:`Zapomniałeś hasła?`,hidePasswordText:`Ukryj hasło`,invalidEmail:`Nieprawidłowy adres e-mail`,invalidIdentifier:`Nieprawidłowy adres e-mail lub nazwa użytkownika`,invitationDescription:"Zaloguj się, aby przyjąć zaproszenie od ${inviterName} do dołączenia do ${companyName} w ${clientName}.",invitationTitle:`Otrzymałeś zaproszenie!`,logoAltText:"${companyName}","no-email":`Wprowadź adres e-mail`,"no-password":`Hasło jest wymagane`,pageTitle:"Logowanie | ${clientName}",passwordLoginNotAvailable:`Logowanie hasłem jest niedostępne`,passwordPlaceholder:`Hasło`,phonePlaceholder:`Numer telefonu`,separatorText:`lub`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,showPasswordText:`Pokaż hasło`,signupActionLinkText:`Zarejestruj się`,signupActionText:`Nie masz konta?`,title:`Witamy`,tooManyFailedLogins:`Zbyt wiele nieudanych prób logowania. Spróbuj ponownie później.`,unverifiedEmail:`Zweryfikuj swój adres e-mail przed zalogowaniem`,userAccountDoesNotExist:`Konto użytkownika nie istnieje`,usernamePlaceholder:`Nazwa użytkownika lub adres e-mail`,usernameTooLong:"Nazwa użytkownika musi mieć maksymalnie ${max} znaków",usernameTooShort:"Nazwa użytkownika musi mieć co najmniej ${min} znaków",wrongCredentials:`Nieprawidłowa nazwa użytkownika lub hasło`,passkeyButtonText:`Zaloguj się za pomocą passkey`,userBlocked:`Twoje konto zostało zablokowane po wielu kolejnych nieudanych próbach logowania.`,tooManyRequests:`Zbyt wiele prób. Poczekaj chwilę i spróbuj ponownie.`,unexpectedError:`Coś poszło nie tak. Spróbuj ponownie.`}},Np={mfa:{backupCodeText:`Użyj kodu zapasowego`,description:`Wybierz metodę weryfikacji`,pageTitle:"Uwierzytelnianie wieloskładnikowe | ${clientName}",title:`Zweryfikuj swoją tożsamość`}},Pp={"passkey-enrollment-nudge":{title:`Zabezpiecz swoje konto kluczem dostępu`,description:`Klucze dostępu wykorzystują biometrię lub PIN urządzenia, aby logować się szybciej i bezpieczniej.`,enrollButtonText:`Skonfiguruj klucz dostępu`,snoozeButtonText:`Może później`,optOutLinkText:`Nie pokazuj ponownie`,pageTitle:"Konfiguracja Klucza Dostępu | ${clientName}"},"passkey-enrollment":{title:`Utwórz klucz dostępu`,description:`Postępuj zgodnie z instrukcjami przeglądarki, aby utworzyć klucz dostępu dla tego konta.`,errorMessage:`Nie udało się utworzyć klucza dostępu. Spróbuj ponownie.`,cancelLinkText:`Pomiń na razie`,retryButtonText:`Spróbuj ponownie`,enrollmentComplete:`Twój klucz dostępu został pomyślnie skonfigurowany. Możesz zamknąć tę stronę.`,pageTitle:"Tworzenie Klucza Dostępu | ${clientName}",sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,enrollmentRequired:`Aby kontynuować, musisz skonfigurować klucz dostępu.`,challengeExpired:`Żądanie wygasło. Spróbuj ponownie.`},"passkey-challenge":{title:`Zaloguj się za pomocą passkey`,description:`Postępuj zgodnie z instrukcjami przeglądarki, aby zweryfikować swoją tożsamość.`,errorMessage:`Uwierzytelnianie za pomocą passkey nie powiodło się. Spróbuj ponownie.`,cancelLinkText:`Powrót do logowania`,retryButtonText:`Spróbuj ponownie`,pageTitle:"Logowanie za pomocą passkey | ${clientName}",sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`}},Fp={organizations:{description:`Wybierz organizację, do której chcesz się zalogować`,pageTitle:"Wybierz organizację | ${clientName}",searchPlaceholder:`Szukaj organizacji`,title:`Wybierz swoją organizację`}},Ip={signup:{buttonText:`Zarejestruj się`,confirmPasswordPlaceholder:`Potwierdź hasło`,description:`Zarejestruj się, aby kontynuować`,"email-already-exists":`Ten adres e-mail jest już zarejestrowany`,emailPlaceholder:`Adres e-mail`,federatedConnectionButtonText:"Kontynuuj z ${connectionName}",hidePasswordText:`Ukryj hasło`,"invalid-email-format":`Nieprawidłowy adres e-mail`,loginActionLinkText:`Zaloguj się`,loginActionText:`Masz już konto?`,"no-email":`Wprowadź adres e-mail`,"no-password":`Hasło jest wymagane`,"no-username":`Nazwa użytkownika jest wymagana`,pageTitle:"Rejestracja | ${clientName}",passwordPlaceholder:`Hasło`,passwordsDidntMatch:`Hasła nie są zgodne`,phonePlaceholder:`Numer telefonu`,privacyPolicyLinkText:`Polityka prywatności`,separatorText:`lub`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,showPasswordText:`Pokaż hasło`,termsOfServiceLinkText:`Regulamin`,termsText:`Rejestrując się, akceptujesz nasz`,title:`Utwórz konto`,"username-already-exists":`Ta nazwa użytkownika jest już zajęta`,usernamePlaceholder:`Nazwa użytkownika`,verifyEmailText:`Sprawdź swoją pocztę, aby zweryfikować konto`,confirmPasswordRequired:`Potwierdź hasło`,createUserFailed:`Nie udało się utworzyć konta. Spróbuj ponownie.`}},Lp={status:{continueButtonText:`Kontynuuj`,errorTitle:`Błąd`,pageTitle:"Status | ${clientName}",successTitle:`Sukces`,title:`Status`}},sie={common:kp,consent:Ap,"device-flow":{"device-flow":{buttonText:`Kontynuuj`,codePlaceholder:`Wprowadź kod`,description:`Wprowadź kod wyświetlony na Twoim urządzeniu`,"expired-code":`Kod wygasł`,"invalid-code":`Wprowadzony kod jest nieprawidłowy`,pageTitle:"Aktywacja urządzenia | ${clientName}",title:`Aktywuj swoje urządzenie`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Kontynuuj`,codeLabel:`Kod weryfikacyjny`,codePlaceholder:`Wprowadź kod`,defaultDescription:`Wprowadź kod weryfikacyjny wysłany na Twój adres e-mail`,description:"Wysłaliśmy kod na ${email}","invalid-code":`Nieprawidłowy kod`,noCode:`Wprowadź kod weryfikacyjny`,pageTitle:"Wprowadź kod | ${clientName}",resendText:`Wyślij ponownie kod`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,title:`Sprawdź swoją pocztę`,unexpectedError:`Wystąpił nieoczekiwany błąd`,usePasswordText:`Zaloguj się hasłem`,tooManyRequests:`Zbyt wiele prób. Poczekaj chwilę i spróbuj ponownie.`}},"email-verification":{"email-verification":{description:"Wysłaliśmy wiadomość na ${email}",linkAlreadyUsed:`Ten link weryfikacyjny został już użyty. Poproś o nowy.`,linkInvalid:`Ten link weryfikacyjny jest nieprawidłowy.`,linkInvalidOrExpired:`Ten link weryfikacyjny jest nieprawidłowy lub wygasł. Poproś o nowy.`,linkInvalidTitle:`Link weryfikacyjny jest nieprawidłowy`,linkWrongType:`Tego linku nie można użyć do weryfikacji adresu e-mail.`,pageTitle:"Weryfikacja e-mail | ${clientName}",resendText:`Wyślij ponownie e-mail`,successDescription:`Twój adres e-mail został pomyślnie zweryfikowany.`,successTitle:`E-mail zweryfikowany`,title:`Zweryfikuj swój adres e-mail`},"email-verification-code":{buttonText:`Kontynuuj`,codeLabel:`Kod weryfikacyjny`,codePlaceholder:`Wpisz 6-cyfrowy kod`,defaultDescription:`Wpisz kod, który wysłaliśmy na Twój adres e-mail, aby potwierdzić adres i kontynuować.`,description:"Wysłaliśmy kod na adres ${email}. Wpisz go, aby potwierdzić swój adres e-mail i kontynuować.",invalidCode:`Wprowadzony kod jest nieprawidłowy lub wygasł`,noCode:`Wpisz kod weryfikacyjny`,pageTitle:"Weryfikacja e-mail | ${clientName}",resendFailed:`Nie udało się ponownie wysłać kodu. Spróbuj ponownie.`,resendSuccess:`Nowy kod został wysłany na Twój adres e-mail`,resendText:`Wyślij kod ponownie`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,title:`Potwierdź swój adres e-mail`,tooManyAttempts:`Zbyt wiele prób. Spróbuj ponownie później.`},"email-verification-link-sent":{defaultDescription:`Wysłaliśmy link weryfikacyjny na Twój adres e-mail. Kliknij link, aby potwierdzić adres, a następnie zaloguj się ponownie.`,description:"Wysłaliśmy link weryfikacyjny na adres ${email}. Kliknij link, aby potwierdzić adres, a następnie zaloguj się ponownie.",pageTitle:"Weryfikacja e-mail | ${clientName}",resendFailed:`Nie udało się ponownie wysłać wiadomości. Spróbuj ponownie.`,resendSuccess:`Wysłano nową wiadomość weryfikacyjną`,resendText:`Wyślij wiadomość ponownie`,title:`Sprawdź swoją skrzynkę`}},invitation:jp,login:Mp,"login-id":{"login-id":{alertListTitle:`Powiadomienia`,"auth0-users-validation":`Coś poszło nie tak, spróbuj ponownie później`,"authentication-failure":`Przepraszamy, wystąpił błąd podczas logowania`,buttonText:`Kontynuuj`,"captcha-client-failure":`Nie udało się załadować weryfikacji bezpieczeństwa. Spróbuj ponownie. (Kod błędu: #{errorCode})`,"captcha-validation-failure":`Przepraszamy, wystąpił błąd podczas weryfikacji captcha. Spróbuj ponownie.`,captchaCodePlaceholder:`Wprowadź kod widoczny powyżej`,"custom-script-error-code":`Coś poszło nie tak, spróbuj ponownie później.`,description:"Zaloguj się do ${clientName}.",editEmailText:`Edytuj`,emailPlaceholder:`Adres e-mail`,federatedConnectionButtonText:"Kontynuuj z ${connectionName}",lastUsedText:`Ostatnio używane`,footerLinkText:`Zarejestruj się`,footerText:`Nie masz konta?`,forgotPasswordText:`Zapomniałeś hasła?`,hidePasswordText:`Ukryj hasło`,"invalid-captcha":`Rozwiąż zadanie, aby potwierdzić, że nie jesteś robotem.`,"invalid-code":`Nieprawidłowy kod`,"invalid-connection":`Nieprawidłowe połączenie`,"invalid-email-format":`Nieprawidłowy adres e-mail`,"invalid-email-phone":`Wprowadź prawidłowy adres e-mail lub numer telefonu. Numery telefonów muszą zawierać kod kraju.`,"invalid-email-phone-username":`Wprowadź prawidłowy adres e-mail, numer telefonu lub nazwę użytkownika. Numery telefonów muszą zawierać kod kraju.`,"invalid-email-username":`Wprowadź prawidłowy adres e-mail lub nazwę użytkownika`,"invalid-expired-code":`Nieprawidłowy lub wygasły kod użytkownika`,"invalid-login-id":`Wprowadzono nieprawidłowy identyfikator logowania`,"invalid-phone-username":`Wprowadź prawidłowy numer telefonu lub nazwę użytkownika. Numery telefonów muszą zawierać kod kraju.`,"invalid-recaptcha":`Zaznacz pole wyboru, aby potwierdzić, że nie jesteś robotem.`,"invalid-username":"Nazwa użytkownika może zawierać tylko znaki alfanumeryczne lub: '${characters}'. Nazwa użytkownika powinna mieć od ${min} do ${max} znaków.",invitationDescription:"Zaloguj się, aby przyjąć zaproszenie od ${inviterName} do dołączenia do ${companyName} w ${clientName}.",invitationTitle:`Otrzymałeś zaproszenie!`,"ip-blocked":`Wykryliśmy podejrzaną aktywność logowania i dalsze próby zostaną zablokowane. Skontaktuj się z administratorem.`,logoAltText:"${companyName}","no-db-connection":`Nieprawidłowe połączenie`,"no-email":`Wprowadź adres e-mail`,"no-email-phone":`Adres e-mail lub numer telefonu jest wymagany`,"no-email-phone-username":`Numer telefonu, nazwa użytkownika lub adres e-mail jest wymagany`,"no-email-username":`Adres e-mail lub nazwa użytkownika jest wymagany`,"no-password":`Hasło jest wymagane`,"no-phone":`Wprowadź numer telefonu`,"no-phone-username":`Numer telefonu lub nazwa użytkownika jest wymagany`,"no-username":`Nazwa użytkownika jest wymagana`,pageTitle:"Logowanie | ${clientName}","password-breached":`Wykryliśmy potencjalny problem z bezpieczeństwem tego konta. Aby chronić Twoje konto, zablokowano to logowanie. Zresetuj hasło, aby kontynuować.`,passwordPlaceholder:`Hasło`,phoneOrEmailPlaceholder:`E-mail lub numer telefonu`,phoneOrUsernameOrEmailPlaceholder:`Telefon, nazwa użytkownika lub e-mail`,phoneOrUsernamePlaceholder:`Numer telefonu lub nazwa użytkownika`,phonePlaceholder:`Numer telefonu`,"same-user-login":`Zbyt wiele prób logowania dla tego użytkownika. Poczekaj chwilę i spróbuj ponownie.`,selectCountryCode:"Wybierz kod kraju, aktualnie ustawiony na ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`lub`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,showPasswordText:`Pokaż hasło`,signupActionLinkText:`Zarejestruj się`,signupActionText:`Nie masz konta?`,termsAndConditionsTemplate:'Kontynuując, akceptujesz nasze <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">Zasady i warunki</a>.',title:`Witamy`,"user-blocked":`Twoje konto zostało zablokowane po wielu kolejnych nieudanych próbach logowania.`,userAccountDoesNotExist:`Konto użytkownika nie istnieje`,usernameOnlyPlaceholder:`Nazwa użytkownika`,usernameOrEmailPlaceholder:`Nazwa użytkownika lub adres e-mail`,usernamePlaceholder:`Nazwa użytkownika`,usernameTooLong:"Nazwa użytkownika musi mieć maksymalnie ${max} znaków",usernameTooShort:"Nazwa użytkownika musi mieć co najmniej ${min} znaków","wrong-credentials":`Nieprawidłowa nazwa użytkownika lub hasło`,"wrong-email-credentials":`Nieprawidłowy adres e-mail lub hasło`,"wrong-email-phone-credentials":`Nieprawidłowy adres e-mail, numer telefonu lub hasło. Numery telefonów muszą zawierać kod kraju.`,"wrong-email-phone-username-credentials":`Nieprawidłowy adres e-mail, numer telefonu, nazwa użytkownika lub hasło. Numery telefonów muszą zawierać kod kraju.`,"wrong-email-username-credentials":`Nieprawidłowy adres e-mail, nazwa użytkownika lub hasło`,"wrong-phone-credentials":`Nieprawidłowy numer telefonu lub hasło`,"wrong-phone-username-credentials":`Nieprawidłowy numer telefonu, nazwa użytkownika lub hasło. Numery telefonów muszą zawierać kod kraju.`,"wrong-username-credentials":`Nieprawidłowa nazwa użytkownika lub hasło`,passkeyButtonText:`Zaloguj się za pomocą passkey`}},"login-password":{"login-password":{buttonText:`Zaloguj się`,description:"Zaloguj się do ${clientName}",forgotPasswordText:`Zapomniałeś hasła?`,hidePasswordText:`Ukryj hasło`,"no-password":`Hasło jest wymagane`,pageTitle:"Logowanie | ${clientName}","password-breached":`Wykryliśmy potencjalny problem z bezpieczeństwem tego konta. Aby chronić Twoje konto, zablokowano to logowanie. Zresetuj hasło, aby kontynuować.`,passwordPlaceholder:`Hasło`,showPasswordText:`Pokaż hasło`,signingInAs:"Logujesz się jako ${email}",title:`Wprowadź hasło`,unverifiedEmail:`Zweryfikuj swój adres e-mail przed zalogowaniem`,"user-blocked":`Twoje konto zostało zablokowane po wielu kolejnych nieudanych próbach logowania.`,"wrong-credentials":`Nieprawidłowe hasło`,sendCodeText:`Zaloguj się kodem`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,tooManyRequests:`Zbyt wiele prób. Poczekaj chwilę i spróbuj ponownie.`,unexpectedError:`Coś poszło nie tak. Spróbuj ponownie.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`e-mail`,authMethodEmailOrPhone:`e-mail lub numer telefonu`,authMethodPhone:`numer telefonu`,description:"Zaloguj się za pomocą swojego ${authMethod}",emailOrPhonePlaceholder:`Adres e-mail lub numer telefonu`,emailPlaceholder:`Adres e-mail`,invalidEmail:`Wprowadź prawidłowy adres e-mail`,invalidIdentifier:`Wprowadź prawidłowy adres e-mail lub numer telefonu`,invalidPhone:`Wprowadź prawidłowy numer telefonu z kodem kraju`,noEmail:`Wprowadź swój adres e-mail`,noPhone:`Wprowadź swój numer telefonu`,phonePlaceholder:`Numer telefonu`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,title:`Zaloguj się kodem`,userAccountDoesNotExist:`Konto użytkownika nie istnieje`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Kliknij link w wiadomości e-mail, aby się zalogować`,description:"Wysłaliśmy link na ${username}. Kliknij go, aby się zalogować.",resendText:`Wyślij ponownie link`,spamText:`Nie otrzymałeś wiadomości? Sprawdź folder spam.`,title:`Sprawdź swoją pocztę`}},mfa:Np,"mfa-email":{"mfa-email":{buttonText:`Kontynuuj`,codePlaceholder:`Wprowadź kod`,description:"Wysłaliśmy kod na ${email}","invalid-code":`Wprowadzony kod jest nieprawidłowy`,pageTitle:"Weryfikacja e-mail | ${clientName}",resendText:`Wyślij ponownie kod`,title:`Sprawdź swoją pocztę`}},"mfa-otp":{"mfa-otp":{buttonText:`Kontynuuj`,codePlaceholder:`Wprowadź kod`,description:`Wprowadź 6-cyfrowy kod z aplikacji uwierzytelniającej`,"invalid-code":`Wprowadzony kod jest nieprawidłowy`,pageTitle:"Wprowadź kod | ${clientName}",title:`Wprowadź swój kod`},"mfa-totp-enrollment":{title:`Skonfiguruj aplikację uwierzytelniającą`,description:`Zeskanuj poniższy kod QR za pomocą aplikacji uwierzytelniającej, a następnie wprowadź 6-cyfrowy kod w celu weryfikacji`,secretLabel:`Lub wprowadź ten kod ręcznie:`,codePlaceholder:`Wprowadź kod`,continueButtonText:`Zweryfikuj i aktywuj`,"invalid-code":`Wprowadzony kod jest nieprawidłowy. Spróbuj ponownie.`,"transaction-not-found":`Twoja transakcja rejestracji wygasła, musisz zacząć od nowa.`,pageTitle:"Konfiguracja uwierzytelniania | ${clientName}",unexpectedError:`Coś poszło nie tak. Spróbuj ponownie.`,enrollmentComplete:`Rejestracja MFA została zakończona. Możesz zamknąć tę stronę.`,pickAuthenticatorText:`Wypróbuj inną metodę`,qrCodeAltText:`Kod QR`},"mfa-totp-challenge":{title:`Zweryfikuj swoją tożsamość`,description:`Wprowadź 6-cyfrowy kod z aplikacji uwierzytelniającej`,codePlaceholder:`Wprowadź kod`,continueButtonText:`Kontynuuj`,"invalid-code":`Wprowadzony kod jest nieprawidłowy`,"transaction-not-found":`Twoja transakcja rejestracji wygasła, musisz zacząć od nowa.`,unexpectedError:`Coś poszło nie tak. Spróbuj ponownie.`,pageTitle:"Weryfikacja tożsamości | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Użyj swojego numeru telefonu, aby się zalogować | ${clientName}",title:`Zweryfikuj swoją tożsamość`,description:"Wysłaliśmy kod na ${phoneNumber}",continueButtonText:`Kontynuuj`,changePhoneText:`Wybierz inny numer telefonu.`,smsButtonText:`Wiadomość tekstowa`,voiceButtonText:`Połączenie głosowe`,chooseMessageTypeText:`Jak chcesz otrzymać kod?`,pickAuthenticatorText:`Wypróbuj inną metodę`,logoAltText:"${companyName}",codePlaceholder:`Wpisz kod`,"send-sms-failed":`Wystąpił problem z wysłaniem SMS-a`,"send-voice-failed":`Wystąpił problem z wykonaniem połączenia głosowego`,"invalid-phone-format":`Numer telefonu może zawierać tylko cyfry.`,"invalid-phone":`Wygląda na to, że Twój numer telefonu jest nieprawidłowy. Sprawdź i spróbuj ponownie.`,"too-many-sms":`Przekroczono maksymalną liczbę wiadomości telefonicznych na godzinę. Poczekaj kilka minut i spróbuj ponownie.`,"too-many-voice":`Przekroczono maksymalną liczbę połączeń telefonicznych na godzinę. Poczekaj kilka minut i spróbuj ponownie.`,"transaction-not-found":`Twoja transakcja rejestracji wygasła, musisz zacząć od nowa.`,"no-phone":`Wpisz numer telefonu`,noCode:`Wprowadź kod weryfikacyjny`,invalidCode:`Wprowadzony kod jest nieprawidłowy. Spróbuj ponownie.`,unexpectedError:`Coś poszło nie tak. Spróbuj ponownie.`,resendSuccess:`Wysłaliśmy nowy kod na Twój telefon`,enrollmentComplete:`Rejestracja MFA została zakończona. Możesz zamknąć tę stronę.`},"mfa-phone-enrollment":{pageTitle:"Wpisz swój numer telefonu, aby zalogować się kodem telefonicznym | ${clientName}",title:`Zabezpiecz swoje konto`,description:`Wpisz kod kraju i numer telefonu, na który możemy wysłać 6-cyfrowy kod:`,continueButtonText:`Kontynuuj`,smsButtonText:`Wiadomość tekstowa`,voiceButtonText:`Połączenie głosowe`,chooseMessageTypeText:`Jak chcesz otrzymać kod?`,pickAuthenticatorText:`Wypróbuj inną metodę`,placeholder:`Wpisz swój numer telefonu`,logoAltText:"${companyName}",selectCountryCode:"Wybierz kod kraju, aktualnie ustawiony na ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`Wystąpił problem z wysłaniem SMS-a`,"send-voice-failed":`Wystąpił problem z wykonaniem połączenia głosowego`,"sms-authenticator-error":`Nie udało się wysłać SMS-a. Spróbuj ponownie później.`,"invalid-phone-format":`Numer telefonu może zawierać tylko cyfry.`,"invalid-phone":`Wygląda na to, że Twój numer telefonu jest nieprawidłowy. Sprawdź i spróbuj ponownie.`,"too-many-sms":`Przekroczono maksymalną liczbę wiadomości telefonicznych na godzinę. Poczekaj kilka minut i spróbuj ponownie.`,"too-many-voice":`Przekroczono maksymalną liczbę połączeń telefonicznych na godzinę. Poczekaj kilka minut i spróbuj ponownie.`,"transaction-not-found":`Twoja transakcja rejestracji wygasła, musisz zacząć od nowa.`,"no-phone":`Wpisz numer telefonu`,"phone-is-too-short":`Numer telefonu jest za krótki`,"phone-is-too-long":`Numer telefonu jest za długi`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Wybierz metodę weryfikacji | ${clientName}",title:`Wybierz metodę weryfikacji`,description:`Wybierz, w jaki sposób chcesz zweryfikować swoją tożsamość`,authenticatorAppLabel:`Aplikacja uwierzytelniająca`,authenticatorAppDescription:`Użyj aplikacji uwierzytelniającej, aby uzyskać kod weryfikacyjny`,smsLabel:`Wiadomość tekstowa`,smsDescription:`Otrzymaj kod weryfikacyjny wysłany na swój telefon`,passkeyLabel:`Klucz dostępu`,passkeyDescription:`Użyj biometrii urządzenia lub klucza bezpieczeństwa`}},"mfa-push":{"mfa-push":{description:`Wysłaliśmy powiadomienie na Twoje urządzenie`,pageTitle:"Powiadomienie push | ${clientName}",resendText:`Wyślij ponownie powiadomienie`,title:`Zatwierdź żądanie`,useCodeText:`Wprowadź kod ręcznie`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Kontynuuj`,codePlaceholder:`Kod odzyskiwania`,description:`Wprowadź jeden z kodów odzyskiwania`,"invalid-code":`Wprowadzony kod odzyskiwania jest nieprawidłowy`,pageTitle:"Kod odzyskiwania | ${clientName}",title:`Wprowadź kod odzyskiwania`}},"mfa-voice":{"mfa-voice":{buttonText:`Zadzwoń do mnie`,codePlaceholder:`Wprowadź kod`,description:"Zadzwonimy na ${phoneNumber} z Twoim kodem","invalid-code":`Wprowadzony kod jest nieprawidłowy`,pageTitle:"Połączenie głosowe | ${clientName}",title:`Odbierz połączenie telefoniczne`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Spróbuj ponownie`,description:`Włóż klucz bezpieczeństwa i postępuj zgodnie z instrukcjami`,pageTitle:"Klucz bezpieczeństwa | ${clientName}",title:`Użyj klucza bezpieczeństwa`}},passkeys:Pp,organizations:Fp,"reset-password":{"reset-password":{backToLoginText:`Wróć do logowania`,buttonText:`Kontynuuj`,codeExpired:`Kod resetu hasła wygasł. Poproś o nowy.`,confirmPasswordLabel:`Potwierdź hasło`,confirmPasswordPlaceholder:`Potwierdź hasło`,description:`Wprowadź swój adres e-mail, aby zresetować hasło`,emailPlaceholder:`Adres e-mail`,failed:`Reset hasła nie powiódł się. Spróbuj ponownie.`,"invalid-email-format":`Nieprawidłowy adres e-mail`,"no-email":`Wprowadź adres e-mail`,pageTitle:"Resetowanie hasła | ${clientName}",passwordLabel:`Nowe hasło`,passwordPlaceholder:`Nowe hasło`,passwordTooWeak:`Hasło jest zbyt słabe`,passwordsDidntMatch:`Hasła nie są zgodne`,successDescription:`Wysłaliśmy link do resetowania hasła na Twój adres e-mail.`,successTitle:`Sprawdź swoją pocztę`,title:`Zapomniałeś hasła?`,"user-not-found":`Nie znaleziono użytkownika`,noPassword:`Hasło jest wymagane`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`},"reset-password-code":{backToLoginText:`Wróć do logowania`,buttonText:`Zresetuj hasło`,codeLabel:`Kod resetowania`,codePlaceholder:`Wprowadź 6-cyfrowy kod`,confirmPasswordLabel:`Potwierdź hasło`,confirmPasswordPlaceholder:`Potwierdź hasło`,defaultDescription:`Wprowadź kod wysłany na Twój e-mail i wybierz nowe hasło`,description:"Wysłaliśmy kod na ${email}",failed:`Reset hasła nie powiódł się. Spróbuj ponownie.`,invalidCode:`Wprowadzony kod jest nieprawidłowy lub wygasł`,noCode:`Wprowadź kod resetowania`,pageTitle:"Wprowadź kod resetowania | ${clientName}",passwordLabel:`Nowe hasło`,passwordPlaceholder:`Nowe hasło`,passwordTooWeak:`Hasło jest zbyt słabe`,passwordsDidntMatch:`Hasła nie są zgodne`,resendFailed:`Nie udało się ponownie wysłać kodu. Spróbuj ponownie.`,resendSuccess:`Nowy kod został wysłany na Twój e-mail`,resendText:`Wyślij kod ponownie`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,title:`Wprowadź kod resetowania`,noPassword:`Hasło jest wymagane`}},signup:Ip,"signup-id":{"signup-id":{buttonText:`Kontynuuj`,description:`Zarejestruj się, aby kontynuować`,"email-already-exists":`Ten adres e-mail jest już zarejestrowany`,emailPlaceholder:`Adres e-mail`,federatedConnectionButtonText:"Kontynuuj z ${connectionName}","invalid-email-format":`Nieprawidłowy adres e-mail`,loginActionLinkText:`Zaloguj się`,loginActionText:`Masz już konto?`,"no-email":`Wprowadź adres e-mail`,pageTitle:"Rejestracja | ${clientName}",phonePlaceholder:`Numer telefonu`,separatorText:`lub`,title:`Utwórz konto`,usernamePlaceholder:`Nazwa użytkownika`}},"signup-password":{"signup-password":{buttonText:`Kontynuuj`,description:`Utwórz swoje hasło`,hidePasswordText:`Ukryj hasło`,"no-password":`Hasło jest wymagane`,pageTitle:"Rejestracja | ${clientName}","password-policy-not-met":`Hasło nie spełnia wymagań`,"password-too-weak":`Hasło jest zbyt słabe`,passwordPlaceholder:`Hasło`,showPasswordText:`Pokaż hasło`,title:`Utwórz hasło`,passwordTooShort:"Hasło musi mieć co najmniej ${minLength} znaków",passwordMissingLowercase:`Hasło musi zawierać co najmniej jedną małą literę`,passwordMissingUppercase:`Hasło musi zawierać co najmniej jedną wielką literę`,passwordMissingNumber:`Hasło musi zawierać co najmniej jedną cyfrę`,passwordMissingSpecial:`Hasło musi zawierać co najmniej jeden znak specjalny`,passwordReused:`Hasło było niedawno używane i nie może być ponownie użyte`,passwordContainsPersonalInfo:`Hasło nie może zawierać danych osobowych, takich jak imię lub adres e-mail`,passwordContainsForbiddenWord:`Hasło zawiera zakazane słowo`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Kontynuuj`,codeLabel:`Kod weryfikacyjny`,codePlaceholder:`Wprowadź kod`,defaultDescription:`Wprowadź kod weryfikacyjny wysłany na Twój telefon`,description:"Wysłaliśmy kod na ${username}","invalid-code":`Nieprawidłowy kod`,noCode:`Wprowadź kod weryfikacyjny`,pageTitle:"Wprowadź kod | ${clientName}",resendText:`Wyślij ponownie kod`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,title:`Sprawdź swój telefon`,unexpectedError:`Wystąpił nieoczekiwany błąd`,tooManyRequests:`Zbyt wiele prób. Poczekaj chwilę i spróbuj ponownie.`}},status:Lp},cie=c({common:()=>Rp,consent:()=>zp,default:()=>lie,invitation:()=>Bp,login:()=>Vp,mfa:()=>Hp,organizations:()=>Wp,passkeys:()=>Up,signup:()=>Gp,status:()=>Kp}),Rp={common:{alertListTitle:`Meddelanden`,backText:`Gå tillbaka`,backToLoginText:`Tillbaka till inloggning`,cancelText:`Gå tillbaka`,closeText:`Stäng`,contactSupportText:`Behöver du hjälp?`,continueText:`Fortsätt`,copyrightText:"© ${currentYear} ${companyName}",errorText:`Något gick fel. Vänligen försök igen.`,hidePasswordText:`Dölj lösenord`,loadingText:`Laddar...`,orText:`eller`,privacyPolicyText:`Integritetspolicy`,showPasswordText:`Visa lösenord`,termsOfServiceText:`Användarvillkor`,termsShortText:`Villkor`,tryAgainText:`Försök igen`},account:{title:`Kontoinställningar`,description:`Hantera ditt konto`,editProfileLabel:`Redigera profil`,editProfileDetail:`Namn, e-post, telefonnummer och bild`,securityLabel:`Säkerhetsinställningar`,securityDetail:`Multifaktorautentisering`,securityMethodsCountOne:"${count} metod konfigurerad",securityMethodsCount:"${count} metoder konfigurerade",passkeysLabel:`Passkeys`,passkeysDetail:`Logga in utan lösenord`,passkeysCountOne:"${count} passkey registrerad",passkeysCount:"${count} passkeys registrerade",linkedAccountsLabel:`Länkade konton`,linkedAccountsDetail:`Koppla sociala konton`,linkedAccountsCountOne:"${count} länkat konto",linkedAccountsCount:"${count} länkade konton",deleteAccountLabel:`Radera konto`,deleteAccountDetail:`Radera ditt konto och dina data permanent`,logoutText:`Logga ut`},"account-profile":{title:`Redigera profil`,description:`Uppdatera dina personuppgifter`,givenNameLabel:`Förnamn`,familyNameLabel:`Efternamn`,nicknameLabel:`Smeknamn`,phoneNumberLabel:`Telefonnummer`,pictureLabel:`URL till profilbild`,buttonText:`Spara ändringar`,backToAccountText:`Tillbaka till kontot`,updateFailed:`Det gick inte att uppdatera profilen`},"account-delete":{title:`Radera konto`,description:`Radera ditt konto permanent`,warningTitle:`Varning: Den här åtgärden är permanent`,warningText:`Alla dina data raderas permanent. Det omfattar din profil, länkade konton och autentiseringsmetoder. Åtgärden kan inte ångras.`,confirmationLabel:'Skriv "${confirmationWord}" för att bekräfta',buttonText:`Radera mitt konto`,cancelText:`Avbryt`,confirmationError:'Skriv "${confirmationWord}" för att bekräfta',deleteSuccess:`Ditt konto har raderats`,deleteFailed:`Det gick inte att radera kontot`},"account-linked":{title:`Länkade konton`,description:`Hantera dina länkade konton`,noLinkedAccounts:`Inga länkade konton.`,unlinkButtonText:`Koppla bort`,backToAccountText:`Tillbaka till kontot`,unlinkSuccess:`Kontot har kopplats bort`,unlinkFailed:`Det gick inte att koppla bort kontot`},"account-security":{title:`Säkerhetsinställningar`,description:`Hantera dina metoder för tvåfaktorsautentisering`,noEnrollments:`Du har inga metoder för tvåfaktorsautentisering konfigurerade.`,addedOn:"Tillagd ${date}",removeButtonText:`Ta bort`,addTotpLabel:`Lägg till autentiseringsapp`,addTotpDetail:`Använd en app som Google Authenticator eller Authy`,addSmsLabel:`Lägg till telefon (SMS)`,addSmsDetail:`Få verifieringskoder via sms`,typeTotp:`Autentiseringsapp`,typePhone:`Telefon (SMS)`,typeEmail:`E-post`,typePush:`Push-notis`,typeWebauthn:`Säkerhetsnyckel`,backToAccountText:`Tillbaka till kontot`,enrollmentNotFound:`Metoden hittades inte`,removeSuccess:`Autentiseringsmetoden har tagits bort`,removeFailed:`Det gick inte att ta bort autentiseringsmetoden`},"account-passkeys":{title:`Passkeys`,description:`Hantera dina passkeys för inloggning utan lösenord`,noPasskeysText:`Du har inga registrerade passkeys.`,defaultPasskeyName:`Passkey`,syncedBadgeText:`Synkad`,addedOnText:"Tillagd ${date}",renameButtonText:`Byt namn`,removeButtonText:`Ta bort`,renamePromptText:`Ange ett nytt namn för denna passkey:`,addPasskeyButtonText:`Lägg till passkey`,backToAccountText:`Tillbaka till kontot`,logoutText:`Logga ut`,passkeyNotFoundText:`Passkey hittades inte`,passkeyRemovedText:`Passkey borttagen`,removeFailedText:`Det gick inte att ta bort passkey`,invalidNameText:`Namnet måste vara mellan 1 och 64 tecken`,passkeyRenamedText:`Passkey har bytt namn`,renameFailedText:`Det gick inte att byta namn på passkey`,startRegistrationFailedText:`Det gick inte att starta registreringen av passkey`,missingCredentialText:`Uppgifter för passkey saknas`,challengeExpiredText:`Begäran har gått ut. Försök igen.`,invalidCredentialText:`Ogiltiga uppgifter för passkey`,verificationFailedText:`Verifieringen av passkey misslyckades`,passkeyAddedText:`Passkey har lagts till`,registrationFailedText:`Registreringen av passkey misslyckades. Försök igen.`},"account-mfa-phone-enrollment":{title:`Konfigurera telefon (SMS)`,description:`Ange ditt telefonnummer för att få verifieringskoder via SMS.`,phoneLabel:`Telefonnummer`,sendCodeButtonText:`Skicka verifieringskod`,backToSecurityText:`Tillbaka till säkerhetsinställningar`,verifyTitle:`Verifiera telefonnummer`,verifyDescription:`Ange verifieringskoden som skickades till din telefon.`,codeSentText:"En verifieringskod har skickats till ${phoneNumber}",codeSentToYourPhoneText:`En verifieringskod har skickats till din telefon`,codeLabel:`Verifieringskod`,codePlaceholder:`Ange verifieringskod`,verifyButtonText:`Verifiera och aktivera`,noPhoneText:`Ange ditt telefonnummer`,invalidPhoneText:`Ange ett giltigt telefonnummer`,sendCodeFailedText:`Det gick inte att skicka verifieringskoden. Försök igen.`,noCodeText:`Ange verifieringskoden`,invalidCodeText:`Ogiltig kod. Försök igen.`,sessionInvalidText:`Något gick fel. Starta registreringen igen.`},"account-mfa-totp-enrollment":{title:`Konfigurera autentiseringsapp`,description:`Skanna QR-koden med din autentiseringsapp och ange sedan verifieringskoden nedan.`,qrCodeAltText:`QR-kod`,manualKeyText:`Eller ange denna nyckel manuellt:`,codeLabel:`Verifieringskod`,codePlaceholder:`Ange 6-siffrig kod`,verifyButtonText:`Verifiera och aktivera`,backToSecurityText:`Tillbaka till säkerhetsinställningar`,noCodeText:`Ange verifieringskoden`,invalidCodeText:`Ogiltig kod. Försök igen.`,verificationFailedText:`Verifieringen misslyckades. Försök igen.`}},zp={consent:{buttonText:`Godkänn`,cancelButtonText:`Neka`,description:"${clientName} begär åtkomst till ditt konto",pageTitle:"Auktorisera | ${clientName}",scopesTitle:"Detta ger ${clientName} tillåtelse att:",title:"Auktorisera ${clientName}",accessAccountText:"vill få åtkomst till ditt ${tenantName}-konto som ${userName}.",notAuthenticated:`Du måste logga in för att fortsätta.`,sessionExpired:`Din session har gått ut. Försök igen.`,consentStorageNotConfigured:`Ditt samtycke kunde inte sparas. Kontakta applikationens ägare.`},"connect-consent":{title:`Anslut applikation`,description:"Vill du tillåta ${domain} att agera för din räkning?",connectAccountText:"vill ansluta till ditt ${tenantName}-konto som ${userName}.",workspaceLabel:`Arbetsyta:`,apiLabel:`För API:`,permissionsLabel:`Begärda behörigheter:`,localDevBadge:`Lokal utveckling`,localDevTooltip:`Den här webbplatsen är en lokal utvecklingsmiljö, inte produktion. Anslutningen fungerar inte utanför den här datorn eller det här nätverket.`,buttonText:`Anslut`,cancelText:`Avbryt`,notAuthenticated:`Du måste logga in för att fortsätta.`,sessionExpired:`Din session har gått ut. Försök igen.`,workspaceSelectionRequired:`Välj en arbetsyta först.`,noWorkspaceAccess:`Du har inte åtkomst till den arbetsytan`,workspaceNotFound:`Arbetsytan hittades inte`},"connect-tenant-select":{title:`Välj en arbetsyta`,description:"Välj vilken ${tenantName}-arbetsyta ${domain} ska ansluta till.",noWorkspacesDescription:`Inga arbetsytor tillgängliga`,noWorkspacesText:"Du har inte åtkomst till några ${tenantName}-arbetsytor. Be en administratör att bjuda in dig.",cancelText:`Avbryt`,notAuthenticated:`Du måste logga in för att fortsätta.`,sessionExpired:`Din session har gått ut. Försök igen.`,noWorkspaceSelected:`Välj en arbetsyta.`,noWorkspaceAccess:`Du har inte åtkomst till den arbetsytan`}},Bp={invitation:{acceptButtonText:`Acceptera inbjudan`,description:"${inviterName} har bjudit in dig att gå med i ${organizationName} på ${clientName}",pageTitle:"Inbjudan | ${clientName}",title:`Du har blivit inbjuden`,defaultOrganizationName:`organisationen`,acceptFailed:`Det gick inte att slutföra registreringen av ditt konto. Försök igen.`}},Vp={login:{alertListTitle:`Meddelanden`,buttonText:`Fortsätt`,description:"Logga in på ${clientName}.",editEmailText:`Redigera`,emailPlaceholder:`E-postadress`,enterACodeBtn:`Logga in med en kod`,enterACodeShortBtn:`Kod`,federatedConnectionButtonText:"Fortsätt med ${connectionName}",lastUsedText:`Senast använd`,footerLinkText:`Registrera dig`,footerText:`Har du inget konto?`,forgotPasswordText:`Har du glömt lösenordet?`,hidePasswordText:`Dölj lösenord`,invalidEmail:`Ogiltig e-postadress`,invalidIdentifier:`Ogiltig e-postadress eller användarnamn`,invitationDescription:"Logga in för att acceptera ${inviterName}s inbjudan att gå med i ${companyName} på ${clientName}.",invitationTitle:`Du har blivit inbjuden!`,logoAltText:"${companyName}","no-email":`Vänligen ange en e-postadress`,"no-password":`Lösenord krävs`,pageTitle:"Logga in | ${clientName}",passwordLoginNotAvailable:`Lösenordsinloggning är inte tillgänglig`,passwordPlaceholder:`Lösenord`,phonePlaceholder:`Telefonnummer`,separatorText:`eller`,sessionExpired:`Din session har gått ut. Försök igen.`,showPasswordText:`Visa lösenord`,signupActionLinkText:`Registrera dig`,signupActionText:`Har du inget konto?`,title:`Välkommen`,tooManyFailedLogins:`För många misslyckade inloggningsförsök. Försök igen senare.`,unverifiedEmail:`Verifiera din e-postadress innan du loggar in`,userAccountDoesNotExist:`Användarkontot finns inte`,usernamePlaceholder:`Användarnamn eller e-postadress`,usernameTooLong:"Användarnamnet får vara högst ${max} tecken",usernameTooShort:"Användarnamnet måste vara minst ${min} tecken",wrongCredentials:`Fel användarnamn eller lösenord`,passkeyButtonText:`Logga in med passkey`,userBlocked:`Ditt konto har blockerats efter flera misslyckade inloggningsförsök i rad.`,tooManyRequests:`För många försök. Vänta en stund och försök igen.`,unexpectedError:`Något gick fel. Försök igen.`}},Hp={mfa:{backupCodeText:`Använd reservkod`,description:`Välj en verifieringsmetod`,pageTitle:"Multifaktorautentisering | ${clientName}",title:`Verifiera din identitet`}},Up={"passkey-enrollment-nudge":{title:`Skydda ditt konto med en nyckel`,description:`Nycklar använder enhetens biometri eller PIN-kod för att logga in snabbare och säkrare.`,enrollButtonText:`Konfigurera nyckel`,snoozeButtonText:`Kanske senare`,optOutLinkText:`Visa inte detta igen`,pageTitle:"Konfigurera Nyckel | ${clientName}"},"passkey-enrollment":{title:`Skapa din nyckel`,description:`Följ anvisningarna från din webbläsare för att skapa en nyckel för detta konto.`,errorMessage:`Det gick inte att skapa nyckeln. Försök igen.`,cancelLinkText:`Hoppa över för nu`,retryButtonText:`Försök igen`,enrollmentComplete:`Din nyckel har konfigurerats. Du kan stänga denna sida.`,pageTitle:"Skapa Nyckel | ${clientName}",sessionExpired:`Din session har gått ut. Försök igen.`,enrollmentRequired:`Du måste skapa en nyckel för att fortsätta.`,challengeExpired:`Begäran har gått ut. Försök igen.`},"passkey-challenge":{title:`Logga in med passkey`,description:`Följ instruktionerna från din webbläsare för att verifiera din identitet.`,errorMessage:`Autentisering med passkey misslyckades. Försök igen.`,cancelLinkText:`Tillbaka till inloggning`,retryButtonText:`Försök igen`,pageTitle:"Logga in med passkey | ${clientName}",sessionExpired:`Din session har gått ut. Försök igen.`}},Wp={organizations:{description:`Välj vilken organisation du vill logga in på`,pageTitle:"Välj organisation | ${clientName}",searchPlaceholder:`Sök organisationer`,title:`Välj din organisation`}},Gp={signup:{buttonText:`Registrera dig`,confirmPasswordPlaceholder:`Bekräfta lösenord`,description:`Välj ett lösenord med en blandning av stora och små bokstäver, siffror och symboler.`,"email-already-exists":`E-postadressen är redan upptagen`,emailPlaceholder:`E-postadress`,federatedConnectionButtonText:"Fortsätt med ${connectionName}",hidePasswordText:`Dölj lösenord`,"invalid-email-format":`Ogiltig e-postadress`,loginActionLinkText:`Logga in`,loginActionText:`Har du redan ett konto?`,"no-email":`Vänligen ange en e-postadress`,"no-password":`Lösenord krävs`,"no-username":`Användarnamn krävs`,pageTitle:"Registrera dig | ${clientName}",passwordPlaceholder:`Lösenord`,passwordsDidntMatch:`Lösenorden matchar inte`,phonePlaceholder:`Telefonnummer`,privacyPolicyLinkText:`Integritetspolicy`,separatorText:`eller`,sessionExpired:`Din session har gått ut. Försök igen.`,showPasswordText:`Visa lösenord`,termsOfServiceLinkText:`Användarvillkor`,termsText:`Genom att registrera dig godkänner du våra`,title:`Välj lösenord`,"username-already-exists":`Användarnamnet är redan taget`,usernamePlaceholder:`Användarnamn`,verifyEmailText:`Kontrollera din e-post för att verifiera ditt konto`,confirmPasswordRequired:`Bekräfta ditt lösenord`,createUserFailed:`Det gick inte att skapa ditt konto. Försök igen.`}},Kp={status:{continueButtonText:`Fortsätt`,errorTitle:`Fel`,pageTitle:"Status | ${clientName}",successTitle:`Klart`,title:`Status`}},lie={common:Rp,consent:zp,"device-flow":{"device-flow":{buttonText:`Fortsätt`,codePlaceholder:`Ange kod`,description:`Ange koden som visas på din enhet`,"expired-code":`Koden har gått ut`,"invalid-code":`Koden du angav är ogiltig`,pageTitle:"Enhetsaktivering | ${clientName}",title:`Aktivera din enhet`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Logga in`,codeLabel:`Verifieringskod`,codePlaceholder:`Ange kod`,defaultDescription:`Ange verifieringskoden som skickades till din e-post`,description:"Vi skickade en kod till ${email}","invalid-code":`Ogiltig kod`,noCode:`Ange verifieringskoden`,pageTitle:"Ange kod | ${clientName}",resendText:`Skicka koden igen`,sessionExpired:`Din session har gått ut. Försök igen.`,title:`Kolla din e-post`,unexpectedError:`Ett oväntat fel uppstod`,usePasswordText:`Logga in med lösenord`,tooManyRequests:`För många försök. Vänta en stund och försök igen.`}},"email-verification":{"email-verification":{description:"Vi skickade ett e-postmeddelande till ${email}",linkAlreadyUsed:`Verifieringslänken har redan använts. Begär en ny.`,linkInvalid:`Verifieringslänken är ogiltig.`,linkInvalidOrExpired:`Verifieringslänken är ogiltig eller har gått ut. Begär en ny.`,linkInvalidTitle:`Verifieringslänken är inte giltig`,linkWrongType:`Den här länken kan inte användas för att verifiera en e-postadress.`,pageTitle:"Verifiera e-post | ${clientName}",resendText:`Skicka koden igen`,successDescription:`Din e-postadress har verifierats.`,successTitle:`E-post verifierad`,title:`Ange engångskod`},"email-verification-code":{buttonText:`Fortsätt`,codeLabel:`Verifieringskod`,codePlaceholder:`Ange 6-siffrig kod`,defaultDescription:`Ange koden vi skickade till din e-post för att bekräfta din adress och fortsätta.`,description:"Vi skickade en kod till ${email}. Ange den för att bekräfta din e-postadress och fortsätta.",invalidCode:`Koden är ogiltig eller har gått ut`,noCode:`Ange verifieringskoden`,pageTitle:"Verifiera e-post | ${clientName}",resendFailed:`Det gick inte att skicka koden igen. Försök igen.`,resendSuccess:`En ny kod har skickats till din e-post`,resendText:`Skicka koden igen`,sessionExpired:`Din session har gått ut. Försök igen.`,title:`Bekräfta din e-postadress`,tooManyAttempts:`För många försök. Försök igen senare.`},"email-verification-link-sent":{defaultDescription:`Vi skickade en verifieringslänk till din e-post. Klicka på länken för att bekräfta din adress och logga sedan in igen.`,description:"Vi skickade en verifieringslänk till ${email}. Klicka på länken för att bekräfta din adress och logga sedan in igen.",pageTitle:"Verifiera e-post | ${clientName}",resendFailed:`Det gick inte att skicka e-postmeddelandet igen. Försök igen.`,resendSuccess:`Ett nytt verifieringsmejl har skickats`,resendText:`Skicka e-postmeddelandet igen`,title:`Kolla din e-post`}},invitation:Bp,login:Vp,"login-id":{"login-id":{alertListTitle:`Meddelanden`,"auth0-users-validation":`Något gick fel, försök igen senare`,"authentication-failure":`Vi beklagar, något gick fel vid inloggningsförsöket`,buttonText:`Fortsätt`,"captcha-client-failure":`Vi kunde inte ladda säkerhetsutmaningen. Försök igen. (Felkod: #{errorCode})`,"captcha-validation-failure":`Vi beklagar, något gick fel vid validering av captcha-svaret. Försök igen.`,captchaCodePlaceholder:`Ange koden som visas ovan`,"custom-script-error-code":`Något gick fel, försök igen senare.`,description:"Logga in på ${clientName}.",editEmailText:`Redigera`,emailPlaceholder:`E-postadress`,federatedConnectionButtonText:"Fortsätt med ${connectionName}",lastUsedText:`Senast använd`,footerLinkText:`Registrera dig`,footerText:`Har du inget konto?`,forgotPasswordText:`Har du glömt lösenordet?`,hidePasswordText:`Dölj lösenord`,"invalid-captcha":`Lös utmaningen för att verifiera att du inte är en robot.`,"invalid-code":`Ogiltig kod`,"invalid-connection":`Ogiltig anslutning`,"invalid-email-format":`Ogiltig e-postadress`,"invalid-email-phone":`Ange en giltig e-postadress eller telefonnummer. Telefonnummer måste innehålla landskod.`,"invalid-email-phone-username":`Ange en giltig e-postadress, telefonnummer eller användarnamn. Telefonnummer måste innehålla landskod.`,"invalid-email-username":`Ange en giltig e-postadress eller användarnamn`,"invalid-expired-code":`Ogiltig eller utgången användarkod`,"invalid-login-id":`Ogiltigt inloggnings-ID angivet`,"invalid-phone-username":`Ange ett giltigt telefonnummer eller användarnamn. Telefonnummer måste innehålla landskod.`,"invalid-recaptcha":`Markera kryssrutan för att verifiera att du inte är en robot.`,"invalid-username":"Användarnamn kan bara innehålla alfanumeriska tecken eller: '${characters}'. Användarnamn ska vara mellan ${min} och ${max} tecken.",invitationDescription:"Logga in för att acceptera ${inviterName}s inbjudan att gå med i ${companyName} på ${clientName}.",invitationTitle:`Du har blivit inbjuden!`,"ip-blocked":`Vi har upptäckt misstänkt inloggningsaktivitet och ytterligare försök kommer att blockeras. Kontakta administratören.`,logoAltText:"${companyName}","no-db-connection":`Ogiltig anslutning`,"no-email":`Vänligen ange en e-postadress`,"no-email-phone":`E-postadress eller telefonnummer krävs`,"no-email-phone-username":`Telefonnummer, användarnamn eller e-postadress krävs`,"no-email-username":`E-postadress eller användarnamn krävs`,"no-password":`Lösenord krävs`,"no-phone":`Ange ett telefonnummer`,"no-phone-username":`Telefonnummer eller användarnamn krävs`,"no-username":`Användarnamn krävs`,pageTitle:"Logga in | ${clientName}","password-breached":`Vi har upptäckt ett potentiellt säkerhetsproblem med detta konto. För att skydda ditt konto har vi förhindrat denna inloggning. Återställ ditt lösenord för att fortsätta.`,passwordPlaceholder:`Lösenord`,phoneOrEmailPlaceholder:`E-post eller telefonnummer`,phoneOrUsernameOrEmailPlaceholder:`Telefon, användarnamn eller e-post`,phoneOrUsernamePlaceholder:`Telefonnummer eller användarnamn`,phonePlaceholder:`Telefonnummer`,"same-user-login":`För många inloggningsförsök för denna användare. Vänta en stund och försök igen.`,selectCountryCode:"Välj landskod, för närvarande inställd på ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`eller`,sessionExpired:`Din session har gått ut. Försök igen.`,showPasswordText:`Visa lösenord`,signupActionLinkText:`Registrera dig`,signupActionText:`Har du inget konto?`,termsAndConditionsTemplate:'Genom att fortsätta godkänner du våra <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">Villkor</a>.',title:`Välkommen`,"user-blocked":`Ditt konto har blockerats efter flera misslyckade inloggningsförsök i rad.`,userAccountDoesNotExist:`Användarkontot finns inte`,usernameOnlyPlaceholder:`Användarnamn`,usernameOrEmailPlaceholder:`Användarnamn eller e-postadress`,usernamePlaceholder:`Användarnamn`,usernameTooLong:"Användarnamnet får vara högst ${max} tecken",usernameTooShort:"Användarnamnet måste vara minst ${min} tecken","wrong-credentials":`Fel användarnamn eller lösenord`,"wrong-email-credentials":`Fel e-postadress eller lösenord`,"wrong-email-phone-credentials":`Fel e-postadress, telefonnummer eller lösenord. Telefonnummer måste innehålla landskod.`,"wrong-email-phone-username-credentials":`Fel e-postadress, telefonnummer, användarnamn eller lösenord. Telefonnummer måste innehålla landskod.`,"wrong-email-username-credentials":`Fel e-postadress, användarnamn eller lösenord`,"wrong-phone-credentials":`Fel telefonnummer eller lösenord`,"wrong-phone-username-credentials":`Fel telefonnummer, användarnamn eller lösenord. Telefonnummer måste innehålla landskod.`,"wrong-username-credentials":`Fel användarnamn eller lösenord`,passkeyButtonText:`Logga in med passkey`}},"login-password":{"login-password":{buttonText:`Logga in`,description:`Ange din e-postadress och ditt lösenord för att logga in.`,forgotPasswordText:`Har du glömt lösenordet?`,hidePasswordText:`Dölj lösenord`,"no-password":`Lösenord krävs`,pageTitle:"Logga in | ${clientName}","password-breached":`Vi har upptäckt ett potentiellt säkerhetsproblem med detta konto. För att skydda ditt konto har vi förhindrat denna inloggning. Återställ ditt lösenord för att fortsätta.`,passwordPlaceholder:`Lösenord`,showPasswordText:`Visa lösenord`,signingInAs:"Loggar in som ${email}",title:`Ange lösenord`,unverifiedEmail:`Verifiera din e-postadress innan du loggar in`,"user-blocked":`Ditt konto har blockerats efter flera misslyckade inloggningsförsök i rad.`,"wrong-credentials":`Fel lösenord`,sendCodeText:`Logga in med kod`,sessionExpired:`Din session har gått ut. Försök igen.`,tooManyRequests:`För många försök. Vänta en stund och försök igen.`,unexpectedError:`Något gick fel. Försök igen.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`e-post`,authMethodEmailOrPhone:`e-post eller telefonnummer`,authMethodPhone:`telefonnummer`,description:"Logga in med din ${authMethod}",emailOrPhonePlaceholder:`E-postadress eller telefonnummer`,emailPlaceholder:`E-postadress`,invalidEmail:`Ange en giltig e-postadress`,invalidIdentifier:`Ange en giltig e-postadress eller telefonnummer`,invalidPhone:`Ange ett giltigt telefonnummer med landskod`,noEmail:`Ange din e-postadress`,noPhone:`Ange ditt telefonnummer`,phonePlaceholder:`Telefonnummer`,sessionExpired:`Din session har gått ut. Försök igen.`,title:`Logga in med en kod`,userAccountDoesNotExist:`Användarkontot finns inte`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Klicka på länken i ditt e-postmeddelande för att logga in`,description:"Vi skickade en länk till ${username}. Klicka på den för att logga in.",resendText:`Skicka länken igen`,spamText:`Fick du inte e-postmeddelandet? Kolla din skräppost.`,title:`Kolla din e-post`}},mfa:Hp,"mfa-email":{"mfa-email":{buttonText:`Fortsätt`,codePlaceholder:`Ange kod`,description:"Vi skickade en kod till ${email}","invalid-code":`Koden du angav är ogiltig`,pageTitle:"E-postverifiering | ${clientName}",resendText:`Skicka koden igen`,title:`Kolla din e-post`}},"mfa-otp":{"mfa-otp":{buttonText:`Fortsätt`,codePlaceholder:`Ange kod`,description:`Ange den 6-siffriga koden från din autentiseringsapp`,"invalid-code":`Koden du angav är ogiltig`,pageTitle:"Ange kod | ${clientName}",title:`Ange din kod`},"mfa-totp-enrollment":{title:`Konfigurera autentiseringsapp`,description:`Skanna QR-koden nedan med din autentiseringsapp och ange sedan den 6-siffriga koden för att verifiera`,secretLabel:`Eller ange denna kod manuellt:`,codePlaceholder:`Ange kod`,continueButtonText:`Verifiera och aktivera`,"invalid-code":`Koden du angav är ogiltig. Försök igen.`,"transaction-not-found":`Din registreringstransaktion har gått ut, du behöver börja om.`,pageTitle:"Konfigurera autentiseringsapp | ${clientName}",unexpectedError:`Något gick fel. Försök igen.`,enrollmentComplete:`MFA-registreringen är klar. Du kan stänga denna sida.`,pickAuthenticatorText:`Prova en annan metod`,qrCodeAltText:`QR-kod`},"mfa-totp-challenge":{title:`Verifiera din identitet`,description:`Ange den 6-siffriga koden från din autentiseringsapp`,codePlaceholder:`Ange kod`,continueButtonText:`Fortsätt`,"invalid-code":`Koden du angav är ogiltig`,"transaction-not-found":`Din registreringstransaktion har gått ut, du behöver börja om.`,unexpectedError:`Något gick fel. Försök igen.`,pageTitle:"Verifiera identitet | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Använd ditt telefonnummer för att logga in | ${clientName}",title:`Verifiera din identitet`,description:"Vi skickade en kod till ${phoneNumber}",continueButtonText:`Fortsätt`,changePhoneText:`Välj ett annat telefonnummer.`,smsButtonText:`SMS`,voiceButtonText:`Röstsamtal`,chooseMessageTypeText:`Hur vill du ta emot koden?`,pickAuthenticatorText:`Prova en annan metod`,logoAltText:"${companyName}",codePlaceholder:`Ange kod`,"send-sms-failed":`Det gick inte att skicka SMS:et`,"send-voice-failed":`Det gick inte att ringa röstsamtalet`,"invalid-phone-format":`Telefonnumret kan bara innehålla siffror.`,"invalid-phone":`Det verkar som att ditt telefonnummer inte är giltigt. Kontrollera och försök igen.`,"too-many-sms":`Du har överskridit det maximala antalet telefonmeddelanden per timme. Vänta några minuter och försök igen.`,"too-many-voice":`Du har överskridit det maximala antalet telefonmeddelanden per timme. Vänta några minuter och försök igen.`,"transaction-not-found":`Din registreringstransaktion har gått ut, du behöver börja om.`,"no-phone":`Ange ett telefonnummer`,noCode:`Ange verifieringskoden`,invalidCode:`Koden du angav är ogiltig. Försök igen.`,unexpectedError:`Något gick fel. Försök igen.`,resendSuccess:`Vi skickade en ny kod till din telefon`,enrollmentComplete:`MFA-registreringen är klar. Du kan stänga denna sida.`},"mfa-phone-enrollment":{pageTitle:"Ange ditt telefonnummer för att logga in med en telefonkod | ${clientName}",title:`Säkra ditt konto`,description:`Ange din landskod och telefonnummer som vi kan skicka en 6-siffrig kod till:`,continueButtonText:`Fortsätt`,smsButtonText:`SMS`,voiceButtonText:`Röstsamtal`,chooseMessageTypeText:`Hur vill du ta emot koden?`,pickAuthenticatorText:`Prova en annan metod`,placeholder:`Ange ditt telefonnummer`,logoAltText:"${companyName}",selectCountryCode:"Välj landskod, för närvarande inställd på ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`Det gick inte att skicka SMS:et`,"send-voice-failed":`Det gick inte att ringa röstsamtalet`,"sms-authenticator-error":`Vi kunde inte skicka SMS:et. Försök igen senare.`,"invalid-phone-format":`Telefonnumret kan bara innehålla siffror.`,"invalid-phone":`Det verkar som att ditt telefonnummer inte är giltigt. Kontrollera och försök igen.`,"too-many-sms":`Du har överskridit det maximala antalet telefonmeddelanden per timme. Vänta några minuter och försök igen.`,"too-many-voice":`Du har överskridit det maximala antalet telefonmeddelanden per timme. Vänta några minuter och försök igen.`,"transaction-not-found":`Din registreringstransaktion har gått ut, du behöver börja om.`,"no-phone":`Ange ett telefonnummer`,"phone-is-too-short":`Telefonnumret är för kort`,"phone-is-too-long":`Telefonnumret är för långt`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Välj verifieringsmetod | ${clientName}",title:`Välj din verifieringsmetod`,description:`Välj hur du vill verifiera din identitet`,authenticatorAppLabel:`Autentiseringsapp`,authenticatorAppDescription:`Använd din autentiseringsapp för att få en verifieringskod`,smsLabel:`Sms`,smsDescription:`Få en verifieringskod skickad till din telefon`,passkeyLabel:`Lösenordsnyckel`,passkeyDescription:`Använd din enhets biometri eller säkerhetsnyckel`}},"mfa-push":{"mfa-push":{description:`Vi skickade en notis till din enhet`,pageTitle:"Push-notis | ${clientName}",resendText:`Skicka notisen igen`,title:`Godkänn förfrågan`,useCodeText:`Ange kod manuellt`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Fortsätt`,codePlaceholder:`Återställningskod`,description:`Ange en av dina återställningskoder`,"invalid-code":`Återställningskoden du angav är ogiltig`,pageTitle:"Återställningskod | ${clientName}",title:`Ange återställningskod`}},"mfa-voice":{"mfa-voice":{buttonText:`Ring mig`,codePlaceholder:`Ange kod`,description:"Vi ringer ${phoneNumber} med din kod","invalid-code":`Koden du angav är ogiltig`,pageTitle:"Röstsamtal | ${clientName}",title:`Ta emot ett telefonsamtal`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Försök igen`,description:`Sätt in din säkerhetsnyckel och följ instruktionerna`,pageTitle:"Säkerhetsnyckel | ${clientName}",title:`Använd din säkerhetsnyckel`}},passkeys:Up,organizations:Wp,"reset-password":{"reset-password":{backToLoginText:`Tillbaka till inloggning`,buttonText:`Skicka`,codeExpired:`Din kod för lösenordsåterställning har gått ut. Begär en ny.`,confirmPasswordLabel:`Bekräfta lösenord`,confirmPasswordPlaceholder:`Bekräfta lösenord`,description:`Klicka på knappen nedan så skickar vi instruktioner om hur du återställer ditt lösenord.`,emailPlaceholder:`E-postadress`,failed:`Lösenordsåterställningen misslyckades. Försök igen.`,"invalid-email-format":`Ogiltig e-postadress`,"no-email":`Vänligen ange en e-postadress`,pageTitle:"Återställ lösenord | ${clientName}",passwordLabel:`Nytt lösenord`,passwordPlaceholder:`Nytt lösenord`,passwordTooWeak:`Lösenordet är för svagt`,passwordsDidntMatch:`Lösenorden matchar inte`,successDescription:`Vi har skickat en länk för lösenordsåterställning till din e-postadress.`,successTitle:`Vi har skickat ett e-postmeddelande med instruktioner om hur du återställer ditt lösenord till den e-postadress du angav.`,title:`Har du glömt lösenordet?`,"user-not-found":`Användaren hittades inte`,noPassword:`Lösenord krävs`,sessionExpired:`Din session har gått ut. Försök igen.`},"reset-password-code":{backToLoginText:`Tillbaka till inloggning`,buttonText:`Återställ lösenord`,codeLabel:`Återställningskod`,codePlaceholder:`Ange 6-siffrig kod`,confirmPasswordLabel:`Bekräfta lösenord`,confirmPasswordPlaceholder:`Bekräfta lösenord`,defaultDescription:`Ange koden som skickades till din e-post och välj ett nytt lösenord`,description:"Vi skickade en kod till ${email}",failed:`Lösenordsåterställningen misslyckades. Försök igen.`,invalidCode:`Koden du angav är ogiltig eller har gått ut`,noCode:`Vänligen ange återställningskoden`,pageTitle:"Ange återställningskod | ${clientName}",passwordLabel:`Nytt lösenord`,passwordPlaceholder:`Nytt lösenord`,passwordTooWeak:`Lösenordet är för svagt`,passwordsDidntMatch:`Lösenorden matchar inte`,resendFailed:`Kunde inte skicka koden igen. Försök igen.`,resendSuccess:`En ny kod har skickats till din e-post`,resendText:`Skicka koden igen`,sessionExpired:`Din session har gått ut. Försök igen.`,title:`Ange återställningskod`,noPassword:`Lösenord krävs`}},signup:Gp,"signup-id":{"signup-id":{buttonText:`Fortsätt`,description:`Välj ett lösenord med en blandning av stora och små bokstäver, siffror och symboler.`,"email-already-exists":`E-postadressen är redan upptagen`,emailPlaceholder:`E-postadress`,federatedConnectionButtonText:"Fortsätt med ${connectionName}","invalid-email-format":`Ogiltig e-postadress`,loginActionLinkText:`Logga in`,loginActionText:`Har du redan ett konto?`,"no-email":`Vänligen ange en e-postadress`,pageTitle:"Registrera dig | ${clientName}",phonePlaceholder:`Telefonnummer`,separatorText:`eller`,title:`Välj lösenord`,usernamePlaceholder:`Användarnamn`}},"signup-password":{"signup-password":{buttonText:`Fortsätt`,description:`Välj ett lösenord med en blandning av stora och små bokstäver, siffror och symboler.`,hidePasswordText:`Dölj lösenord`,"no-password":`Lösenord krävs`,pageTitle:"Registrera dig | ${clientName}","password-policy-not-met":`Lösenordet uppfyller inte kraven`,"password-too-weak":`Lösenordet är för svagt`,passwordPlaceholder:`Lösenord`,showPasswordText:`Visa lösenord`,title:`Välj lösenord`,passwordTooShort:"Lösenordet måste vara minst ${minLength} tecken",passwordMissingLowercase:`Lösenordet måste innehålla minst en liten bokstav`,passwordMissingUppercase:`Lösenordet måste innehålla minst en stor bokstav`,passwordMissingNumber:`Lösenordet måste innehålla minst en siffra`,passwordMissingSpecial:`Lösenordet måste innehålla minst ett specialtecken`,passwordReused:`Lösenordet har använts nyligen och kan inte återanvändas`,passwordContainsPersonalInfo:`Lösenordet får inte innehålla personlig information som ditt namn eller e-post`,passwordContainsForbiddenWord:`Lösenordet innehåller ett förbjudet ord`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Fortsätt`,codeLabel:`Verifieringskod`,codePlaceholder:`Ange kod`,defaultDescription:`Ange verifieringskoden som skickades till din telefon`,description:"Vi skickade en kod till ${username}","invalid-code":`Ogiltig kod`,noCode:`Ange verifieringskoden`,pageTitle:"Ange kod | ${clientName}",resendText:`Skicka koden igen`,sessionExpired:`Din session har gått ut. Försök igen.`,title:`Kolla din telefon`,unexpectedError:`Ett oväntat fel uppstod`,tooManyRequests:`För många försök. Vänta en stund och försök igen.`}},status:Kp},qp=[`cs`,`da`,`en`,`fi`,`it`,`nb`,`pl`,`sv`],uie={cs:`Čeština`,da:`Dansk`,en:`English`,fi:`Suomi`,it:`Italiano`,nb:`Norsk`,pl:`Polski`,sv:`Svenska`};function die(e){return uie[e]??e}function Jp(e){if(!e?.length)return[...qp];let t=e.map(e=>e.split(`-`)[0]?.toLowerCase()??e),n=qp.filter(e=>t.includes(e));return n.length?n:[...qp]}var fie=Object.assign({"../../locales/cs.json":Jre,"../../locales/da.json":Xre,"../../locales/en.json":Qre,"../../locales/fi.json":eie,"../../locales/it.json":nie,"../../locales/nb.json":iie,"../../locales/pl.json":oie,"../../locales/sv.json":cie}),Yp={};for(let[e,t]of Object.entries(fie)){let n=e.match(/\/(\w+)\.json$/)?.[1];n&&(Yp[n]=t.default||t)}var Xp={},Zp=Yp.en;if(Zp)for(let[e,t]of Object.entries(Zp))for(let[n,r]of Object.entries(t)){let t={};for(let e of Object.keys(r))t[e]=f.z.string();Xp[`${e}.${n}`]=f.z.object(t)}function pie(e,t){if(!t)return e;let n=e;for(let[e,r]of Object.entries(t))if(r!==void 0){let t=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);n=n.replace(RegExp(`\\$\\{${t}\\}`,`g`),String(r)).replace(RegExp(`#\\{${t}\\}`,`g`),String(r)).replace(RegExp(`\\{${t}\\}`,`g`),String(r))}return n}function mie(e){let t=e.split(`-`)[0]?.toLowerCase()||`en`;return qp.includes(t)?t:`en`}function z(e,t,n,r){let i=mie(n),a=Yp.en?.[e]?.[t]??{},o=Yp[i]?.[e]?.[t]??{},s={...a,...o},c=r?.[t]??{},l={...s,...c},u=Xp[`${e}.${t}`];if(u){let n=u.safeParse(l);n.success||console.warn(`[i18n] Missing translations for ${e}.${t} (${i}):`,n.error.issues.map(e=>e.path.join(`.`)).join(`, `))}let d={};for(let[e,t]of Object.entries(l))d[e]=e=>pie(t,e);return{m:new Proxy(d,{get:(e,t)=>e[t]??(()=>t)}),locale:i}}function hie(e){let t=e?.language?.split(`-`)[0]?.toLowerCase(),n=[];for(let[r,i]of Object.entries(Yp))if(!(t&&r!==t))for(let[t,a]of Object.entries(i))e?.prompt&&t!==e.prompt||n.push({prompt:t,language:r,custom_text:a});return n}var gie=/^[a-z]{2,3}(-[a-z]{4})?(-([a-z]{2}|\d{3}))?$/i,Qp=`en`;function $p(e){return e.split(`-`)[0].toLowerCase()}function _ie(e){for(let t of e){let e=/^\s*q\s*=\s*([\d.]+)\s*$/i.exec(t);if(e){let t=Number(e[1]);return Number.isFinite(t)?t:1}}return 1}function em(e){if(!e)return[];let t=[];for(let n of e.split(`,`)){let[e,...r]=n.split(`;`),i=_ie(r);if(!(i<=0))for(let n of(e??``).trim().split(/\s+/))!n||!gie.test(n)||t.push({tag:n,q:i})}return t.sort((e,t)=>t.q-e.q).map(e=>e.tag)}function tm(e,t){let n=$p(e);return t.some(e=>$p(e)===n)}function nm(e,t,n){let r=[...em(e),...em(t)];return n?.length?r.find(e=>tm(e,n))??n[0]??Qp:r[0]??Qp}function rm(e,t,n){return $p(nm(e,t,n))}function im(e,t){return t?.length?e&&tm(e,t)?$p(e):$p(t[0]):e?$p(e):Qp}function am(e,t,n){return nm(t,e.req.header(`Accept-Language`),n)}function om(e){if(e)try{let t=new URL(e.includes(`://`)?e:`https://${e}`);return t.protocol!==`http:`&&t.protocol!==`https:`?void 0:t.origin}catch{return}}function vie(e,t){if(e.authParams.response_mode!==`web_message`)return;let n=om(e.authParams.redirect_uri);if(n)return{targetOrigin:n,frameAncestors:Array.from(new Set((t.web_origins??[]).map(e=>om(e)).filter(e=>!!e)))}}function sm(e){return e&&e.frameAncestors.length>0?{"Content-Security-Policy":`frame-ancestors ${e.frameAncestors.join(` `)}`}:{"Content-Security-Policy":`frame-ancestors 'none'`,"X-Frame-Options":`DENY`}}function yie(e){return`(function(){
|
|
501
|
+
`}function R(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function zre(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`).replace(/'/g,`\\'`).replace(/\(/g,`\\(`).replace(/\)/g,`\\)`).replace(/\n/g,``).replace(/\r/g,``).replace(/\t/g,``)}function bf(e){if(!e)return``;try{let t=new URL(e);return[`http:`,`https:`,`data:`].includes(t.protocol)?R(e):``}catch{return e.startsWith(`/`)?R(e):``}}function Bre(e){if(e){if(e.startsWith(`/`))return/^\/[/\\]/.test(e)?void 0:e;try{let t=new URL(e);return t.protocol===`https:`||t.protocol===`http:`?e:void 0}catch{return}}}function xf(e){return e&&/^(#[0-9a-fA-F]{3,8}|rgba?\([^)]+\)|hsla?\([^)]+\)|[a-zA-Z]+)$/.test(e.trim())?e.trim():``}function Vre(e){if(!e)return`#f5f5f5`;if(typeof e==`string`)return xf(e)||`#f5f5f5`;let{type:t,start:n,end:r,angle_deg:i}=e;if(t===`linear-gradient`&&n&&r){let e=xf(n),t=xf(r);if(e&&t)return`linear-gradient(${typeof i==`number`?i:180}deg, ${e}, ${t})`}if(n){let e=xf(n);if(e)return e}return`#f5f5f5`}function Sf(e,t){if(e?.background_image_url){let t=bf(e.background_image_url);if(t)return`${xf(e.background_color)||`#f5f5f5`} url("${zre(t)}") center / cover no-repeat`}if(e?.background_color){let t=xf(e.background_color);if(t)return t}return Vre(t)}var Hre=(e,t)=>{try{return t(e)}catch{return e.replace(/(?:%[0-9A-Fa-f]{2})+/g,e=>{try{return t(e)}catch{return e}})}},Ure=decodeURIComponent,Cf=/^[\w!#$%&'*.^`|~+-]+$/,Wre=/^[ !#-:<-[\]-~]*$/,wf=e=>{let t=0,n=e.length;for(;t<n;){let n=e.charCodeAt(t);if(n!==32&&n!==9)break;t++}for(;n>t;){let t=e.charCodeAt(n-1);if(t!==32&&t!==9)break;n--}return t===0&&n===e.length?e:e.slice(t,n)},Tf=(e,t)=>{if(t&&e.indexOf(t)===-1)return{};let n=e.split(`;`),r=Object.create(null);for(let e of n){let n=e.indexOf(`=`);if(n===-1)continue;let i=wf(e.substring(0,n));if(t&&t!==i||!Cf.test(i)||i in r)continue;let a=wf(e.substring(n+1));if(a.startsWith(`"`)&&a.endsWith(`"`)&&(a=a.slice(1,-1)),Wre.test(a)&&(r[i]=a.indexOf(`%`)===-1?a:Hre(a,Ure),t))break}return r},Gre=(e,t,n={})=>{if(!Cf.test(e))throw Error(`Invalid cookie name`);let r=`${e}=${t}`;if(e.startsWith(`__Secure-`)&&!n.secure)throw Error(`__Secure- Cookie must have Secure attributes`);if(e.startsWith(`__Host-`)){if(!n.secure)throw Error(`__Host- Cookie must have Secure attributes`);if(n.path!==`/`)throw Error(`__Host- Cookie must have Path attributes with "/"`);if(n.domain)throw Error(`__Host- Cookie must not have Domain attributes`)}for(let e of[`domain`,`path`,`sameSite`,`priority`])if(n[e]&&/[;\r\n]/.test(n[e]))throw Error(`${e} must not contain ";", "\\r", or "\\n"`);if(n&&typeof n.maxAge==`number`&&n.maxAge>=0){if(n.maxAge>3456e4)throw Error(`Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration.`);r+=`; Max-Age=${n.maxAge|0}`}if(n.domain&&n.prefix!==`host`&&(r+=`; Domain=${n.domain}`),n.path&&(r+=`; Path=${n.path}`),n.expires){if(n.expires.getTime()-Date.now()>3456e7)throw Error(`Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future.`);r+=`; Expires=${n.expires.toUTCString()}`}if(n.httpOnly&&(r+=`; HttpOnly`),n.secure&&(r+=`; Secure`),n.sameSite&&(r+=`; SameSite=${n.sameSite.charAt(0).toUpperCase()+n.sameSite.slice(1)}`),n.priority&&(r+=`; Priority=${n.priority.charAt(0).toUpperCase()+n.priority.slice(1)}`),n.partitioned){if(!n.secure)throw Error(`Partitioned Cookie must have Secure attributes`);r+=`; Partitioned`}return r},Ef=(e,t,n)=>(t=encodeURIComponent(t),Gre(e,t,n)),Kre=(e,t,n)=>{let r=e.req.raw.headers.get(`Cookie`);if(typeof t==`string`){if(!r)return;let e=t;return n===`secure`?e=`__Secure-`+t:n===`host`&&(e=`__Host-`+t),Tf(r,e)[e]}return r?Tf(r):{}},qre=(e,t,n)=>{let r;return r=n?.prefix===`secure`?Ef(`__Secure-`+e,t,{path:`/`,...n,secure:!0}):n?.prefix===`host`?Ef(`__Host-`+e,t,{...n,path:`/`,secure:!0,domain:void 0}):Ef(e,t,{path:`/`,...n}),r},Df=(e,t,n,r)=>{let i=qre(t,n,r);e.header(`Set-Cookie`,i,{append:!0})},Of=`mv54mlnj`,Jre=c({common:()=>kf,consent:()=>Af,default:()=>Yre,invitation:()=>jf,login:()=>Mf,mfa:()=>Nf,organizations:()=>Ff,passkeys:()=>Pf,signup:()=>If,status:()=>Lf}),kf={common:{alertListTitle:`Upozornění`,backText:`Vrátit se zpět`,backToLoginText:`Zpět na přihlášení`,cancelText:`Zrušit`,closeText:`Zavřít`,contactSupportText:`Potřebujete pomoc?`,continueText:`Pokračovat`,copyrightText:"© ${currentYear} ${companyName}",errorText:`Něco se pokazilo. Zkuste to prosím znovu.`,hidePasswordText:`Skrýt heslo`,loadingText:`Načítání...`,orText:`nebo`,privacyPolicyText:`Zásady ochrany osobních údajů`,showPasswordText:`Zobrazit heslo`,termsOfServiceText:`Podmínky služby`,termsShortText:`Podmínky`,tryAgainText:`Zkusit znovu`},account:{title:`Nastavení účtu`,description:`Spravujte svůj účet`,editProfileLabel:`Upravit profil`,editProfileDetail:`Jméno, e-mail, telefonní číslo a fotografie`,securityLabel:`Nastavení zabezpečení`,securityDetail:`Vícefaktorové ověření`,securityMethodsCountOne:"${count} nastavená metoda",securityMethodsCount:"Nastavené metody: ${count}",passkeysLabel:`Passkeys`,passkeysDetail:`Přihlášení bez hesla`,passkeysCountOne:"${count} registrovaný passkey",passkeysCount:"Registrované passkeys: ${count}",linkedAccountsLabel:`Propojené účty`,linkedAccountsDetail:`Propojit účty sociálních sítí`,linkedAccountsCountOne:"${count} propojený účet",linkedAccountsCount:"Propojené účty: ${count}",deleteAccountLabel:`Smazat účet`,deleteAccountDetail:`Trvale smazat váš účet a data`,logoutText:`Odhlásit se`},"account-profile":{title:`Upravit profil`,description:`Aktualizujte své osobní údaje`,givenNameLabel:`Jméno`,familyNameLabel:`Příjmení`,nicknameLabel:`Přezdívka`,phoneNumberLabel:`Telefonní číslo`,pictureLabel:`URL profilové fotografie`,buttonText:`Uložit změny`,backToAccountText:`Zpět na účet`,updateFailed:`Profil se nepodařilo aktualizovat`},"account-delete":{title:`Smazat účet`,description:`Trvale smazat váš účet`,warningTitle:`Upozornění: Tato akce je nevratná`,warningText:`Všechna vaše data budou trvale smazána, včetně profilu, propojených účtů a metod ověření. Tuto akci nelze vrátit zpět.`,confirmationLabel:'Pro potvrzení napište "${confirmationWord}"',buttonText:`Smazat můj účet`,cancelText:`Zrušit`,confirmationError:'Pro potvrzení napište "${confirmationWord}"',deleteSuccess:`Váš účet byl smazán`,deleteFailed:`Účet se nepodařilo smazat`},"account-linked":{title:`Propojené účty`,description:`Spravujte své propojené účty`,noLinkedAccounts:`Žádné propojené účty.`,unlinkButtonText:`Odpojit`,backToAccountText:`Zpět na účet`,unlinkSuccess:`Účet byl odpojen`,unlinkFailed:`Účet se nepodařilo odpojit`},"account-security":{title:`Nastavení zabezpečení`,description:`Spravujte své metody dvoufázového ověření`,noEnrollments:`Nemáte nastavené žádné metody dvoufázového ověření.`,addedOn:"Přidáno ${date}",removeButtonText:`Odebrat`,addTotpLabel:`Přidat ověřovací aplikaci`,addTotpDetail:`Použijte aplikaci, jako je Google Authenticator nebo Authy`,addSmsLabel:`Přidat telefon (SMS)`,addSmsDetail:`Dostávejte ověřovací kódy pomocí SMS`,typeTotp:`Ověřovací aplikace`,typePhone:`Telefon (SMS)`,typeEmail:`E-mail`,typePush:`Push oznámení`,typeWebauthn:`Bezpečnostní klíč`,backToAccountText:`Zpět na účet`,enrollmentNotFound:`Metoda nebyla nalezena`,removeSuccess:`Metoda ověření byla odebrána`,removeFailed:`Metodu ověření se nepodařilo odebrat`},"account-passkeys":{title:`Passkeys`,description:`Spravujte své passkeys pro přihlášení bez hesla`,noPasskeysText:`Nemáte zaregistrované žádné passkeys.`,defaultPasskeyName:`Passkey`,syncedBadgeText:`Synchronizováno`,addedOnText:"Přidáno ${date}",renameButtonText:`Přejmenovat`,removeButtonText:`Odebrat`,renamePromptText:`Zadejte nový název tohoto passkey:`,addPasskeyButtonText:`Přidat passkey`,backToAccountText:`Zpět na účet`,logoutText:`Odhlásit se`,passkeyNotFoundText:`Passkey nebyl nalezen`,passkeyRemovedText:`Passkey byl odebrán`,removeFailedText:`Passkey se nepodařilo odebrat`,invalidNameText:`Název musí mít 1 až 64 znaků`,passkeyRenamedText:`Passkey byl přejmenován`,renameFailedText:`Passkey se nepodařilo přejmenovat`,startRegistrationFailedText:`Registraci passkey se nepodařilo zahájit`,missingCredentialText:`Chybí data passkey`,challengeExpiredText:`Platnost požadavku vypršela. Zkuste to znovu.`,invalidCredentialText:`Neplatná data passkey`,verificationFailedText:`Ověření passkey se nezdařilo`,passkeyAddedText:`Passkey byl úspěšně přidán`,registrationFailedText:`Registrace passkey se nezdařila. Zkuste to znovu.`},"account-mfa-phone-enrollment":{title:`Nastavit telefon (SMS)`,description:`Zadejte své telefonní číslo, abyste dostávali ověřovací kódy přes SMS.`,phoneLabel:`Telefonní číslo`,sendCodeButtonText:`Odeslat ověřovací kód`,backToSecurityText:`Zpět na nastavení zabezpečení`,verifyTitle:`Ověřit telefonní číslo`,verifyDescription:`Zadejte ověřovací kód zaslaný na váš telefon.`,codeSentText:"Ověřovací kód byl odeslán na ${phoneNumber}",codeSentToYourPhoneText:`Ověřovací kód byl odeslán na váš telefon`,codeLabel:`Ověřovací kód`,codePlaceholder:`Zadejte ověřovací kód`,verifyButtonText:`Ověřit a zapnout`,noPhoneText:`Zadejte své telefonní číslo`,invalidPhoneText:`Zadejte platné telefonní číslo`,sendCodeFailedText:`Ověřovací kód se nepodařilo odeslat. Zkuste to znovu.`,noCodeText:`Zadejte ověřovací kód`,invalidCodeText:`Neplatný kód. Zkuste to znovu.`,sessionInvalidText:`Něco se pokazilo. Začněte registraci znovu.`},"account-mfa-totp-enrollment":{title:`Nastavit ověřovací aplikaci`,description:`Naskenujte QR kód ověřovací aplikací a poté níže zadejte ověřovací kód.`,qrCodeAltText:`QR kód`,manualKeyText:`Nebo zadejte tento klíč ručně:`,codeLabel:`Ověřovací kód`,codePlaceholder:`Zadejte šestimístný kód`,verifyButtonText:`Ověřit a zapnout`,backToSecurityText:`Zpět na nastavení zabezpečení`,noCodeText:`Zadejte ověřovací kód`,invalidCodeText:`Neplatný kód. Zkuste to znovu.`,verificationFailedText:`Ověření se nezdařilo. Zkuste to znovu.`}},Af={consent:{buttonText:`Přijmout`,cancelButtonText:`Zamítnout`,description:"${clientName} žádá o přístup k vašemu účtu",pageTitle:"Autorizace | ${clientName}",scopesTitle:"Tímto povolíte ${clientName}:",title:"Autorizovat ${clientName}",accessAccountText:"požaduje přístup k vašemu účtu ${tenantName} jako ${userName}.",notAuthenticated:`Pro pokračování se musíte přihlásit.`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,consentStorageNotConfigured:`Váš souhlas se nepodařilo uložit. Kontaktujte provozovatele aplikace.`},"connect-consent":{title:`Připojit aplikaci`,description:"Povolit ${domain} jednat vaším jménem?",connectAccountText:"se chce připojit k vašemu účtu ${tenantName} jako ${userName}.",workspaceLabel:`Pracovní prostor:`,apiLabel:`Pro API:`,permissionsLabel:`Požadovaná oprávnění:`,localDevBadge:`Lokální vývoj`,localDevTooltip:`Tento web je lokální vývojové prostředí, nikoli produkční. Připojení nebude fungovat mimo tento počítač nebo síť.`,buttonText:`Připojit`,cancelText:`Zrušit`,notAuthenticated:`Pro pokračování se musíte přihlásit.`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,workspaceSelectionRequired:`Nejprve vyberte pracovní prostor.`,noWorkspaceAccess:`K tomuto pracovnímu prostoru nemáte přístup`,workspaceNotFound:`Pracovní prostor nebyl nalezen`},"connect-tenant-select":{title:`Vyberte pracovní prostor`,description:"Vyberte, ke kterému pracovnímu prostoru ${tenantName} se má ${domain} připojit.",noWorkspacesDescription:`Žádné dostupné pracovní prostory`,noWorkspacesText:"Nemáte přístup k žádnému pracovnímu prostoru ${tenantName}. Požádejte správce o pozvánku.",cancelText:`Zrušit`,notAuthenticated:`Pro pokračování se musíte přihlásit.`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,noWorkspaceSelected:`Vyberte pracovní prostor.`,noWorkspaceAccess:`K tomuto pracovnímu prostoru nemáte přístup`}},jf={invitation:{acceptButtonText:`Přijmout pozvánku`,description:"${inviterName} vás pozval(a), abyste se připojili k ${organizationName} na ${clientName}",pageTitle:"Pozvánka | ${clientName}",title:`Byli jste pozváni`,defaultOrganizationName:`organizaci`,acceptFailed:`Nastavení účtu se nepodařilo dokončit. Zkuste to znovu.`}},Mf={login:{alertListTitle:`Upozornění`,buttonText:`Pokračovat`,description:"Přihlaste se k ${clientName}.",editEmailText:`Upravit`,emailPlaceholder:`E-mailová adresa`,enterACodeBtn:`Přihlásit se kódem`,enterACodeShortBtn:`Kód`,federatedConnectionButtonText:"Pokračovat s ${connectionName}",lastUsedText:`Naposledy použité`,footerLinkText:`Zaregistrujte se`,footerText:`Nemáte účet?`,forgotPasswordText:`Zapomněli jste heslo?`,hidePasswordText:`Skrýt heslo`,invalidEmail:`Neplatný e-mail`,invalidIdentifier:`Neplatný e-mail nebo uživatelské jméno`,invitationDescription:"Přihlaste se pro přijetí pozvánky od ${inviterName} k připojení k ${companyName} na ${clientName}.",invitationTitle:`Byli jste pozváni!`,logoAltText:"${companyName}","no-email":`Zadejte prosím e-mailovou adresu`,"no-password":`Heslo je povinné`,pageTitle:"Přihlášení | ${clientName}",passwordLoginNotAvailable:`Přihlášení heslem není k dispozici`,passwordPlaceholder:`Heslo`,phonePlaceholder:`Telefonní číslo`,separatorText:`nebo`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,showPasswordText:`Zobrazit heslo`,signupActionLinkText:"${footerLinkText}",signupActionText:"${footerText}",title:`Vítejte`,tooManyFailedLogins:`Příliš mnoho neúspěšných pokusů o přihlášení. Zkuste to prosím později.`,unverifiedEmail:`Před přihlášením prosím ověřte svou e-mailovou adresu`,userAccountDoesNotExist:`Uživatelský účet neexistuje`,usernamePlaceholder:`Uživatelské jméno nebo e-mailová adresa`,usernameTooLong:"Uživatelské jméno musí mít nejvýše ${max} znaků",usernameTooShort:"Uživatelské jméno musí mít alespoň ${min} znaků",wrongCredentials:`Nesprávné uživatelské jméno nebo heslo`,passkeyButtonText:`Přihlásit se pomocí passkey`,userBlocked:`Váš účet byl zablokován po několika po sobě jdoucích neúspěšných pokusech o přihlášení.`,tooManyRequests:`Příliš mnoho pokusů. Chvíli počkejte a zkuste to znovu.`,unexpectedError:`Něco se pokazilo. Zkuste to znovu.`}},Nf={mfa:{backupCodeText:`Použít záložní kód`,description:`Zvolte metodu ověření`,pageTitle:"Vícefaktorové ověření | ${clientName}",title:`Ověřte svou identitu`}},Pf={"passkey-enrollment-nudge":{title:`Zabezpečte svůj účet pomocí passkey`,description:`Passkey používají biometrii nebo PIN vašeho zařízení k rychlejšímu a bezpečnějšímu přihlášení.`,enrollButtonText:`Nastavit passkey`,snoozeButtonText:`Možná později`,optOutLinkText:`Nezobrazovat znovu`,pageTitle:"Nastavení Passkey | ${clientName}"},"passkey-enrollment":{title:`Vytvořte svůj passkey`,description:`Postupujte podle pokynů prohlížeče a vytvořte passkey pro tento účet.`,errorMessage:`Vytvoření passkey se nezdařilo. Zkuste to prosím znovu.`,cancelLinkText:`Prozatím přeskočit`,retryButtonText:`Zkusit znovu`,enrollmentComplete:`Váš passkey byl úspěšně nastaven. Tuto stránku můžete zavřít.`,pageTitle:"Vytvoření Passkey | ${clientName}",sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,enrollmentRequired:`Pro pokračování musíte nastavit passkey.`,challengeExpired:`Platnost požadavku vypršela. Zkuste to znovu.`},"passkey-challenge":{title:`Přihlásit se pomocí passkey`,description:`Postupujte podle pokynů prohlížeče k ověření vaší identity.`,errorMessage:`Ověření pomocí passkey selhalo. Zkuste to prosím znovu.`,cancelLinkText:`Zpět na přihlášení`,retryButtonText:`Zkusit znovu`,pageTitle:"Přihlášení pomocí passkey | ${clientName}",sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`}},Ff={organizations:{description:`Vyberte, ke které organizaci se chcete přihlásit`,pageTitle:"Výběr organizace | ${clientName}",searchPlaceholder:`Hledat organizace`,title:`Vyberte svou organizaci`}},If={signup:{buttonText:`Pokračovat`,confirmPasswordPlaceholder:`Potvrzení hesla`,description:`Zaregistrujte se a pokračujte`,"email-already-exists":`Tento e-mail je již zaregistrován`,emailPlaceholder:`E-mailová adresa`,federatedConnectionButtonText:"Pokračovat s ${connectionName}",hidePasswordText:`Skrýt heslo`,"invalid-email-format":`Neplatný e-mail`,loginActionLinkText:`Přihlásit se`,loginActionText:`Už máte účet?`,"no-email":`Zadejte prosím e-mailovou adresu`,"no-password":`Heslo je povinné`,"no-username":`Uživatelské jméno je povinné`,pageTitle:"Registrace | ${clientName}",passwordPlaceholder:`Heslo`,passwordsDidntMatch:`Hesla se neshodují`,phonePlaceholder:`Telefonní číslo`,privacyPolicyLinkText:`Zásady ochrany osobních údajů`,separatorText:`nebo`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,showPasswordText:`Zobrazit heslo`,termsOfServiceLinkText:`Podmínky služby`,termsText:`Registrací souhlasíte s našimi`,title:`Vytvořte svůj účet`,"username-already-exists":`Toto uživatelské jméno je již obsazeno`,usernamePlaceholder:`Uživatelské jméno`,verifyEmailText:`Zkontrolujte prosím svůj e-mail pro ověření účtu`,confirmPasswordRequired:`Potvrďte prosím své heslo`,createUserFailed:`Účet se nepodařilo vytvořit. Zkuste to znovu.`}},Lf={status:{continueButtonText:`Pokračovat`,errorTitle:`Chyba`,pageTitle:"Stav | ${clientName}",successTitle:`Hotovo`,title:`Stav`}},Yre={common:kf,consent:Af,"device-flow":{"device-flow":{buttonText:`Pokračovat`,codePlaceholder:`Zadejte kód`,description:`Zadejte kód zobrazený na vašem zařízení`,"expired-code":`Platnost kódu vypršela`,"invalid-code":`Zadaný kód je neplatný`,pageTitle:"Aktivace zařízení | ${clientName}",title:`Aktivujte své zařízení`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Přihlásit se`,codeLabel:`Ověřovací kód`,codePlaceholder:`Zadejte kód`,defaultDescription:`Zadejte ověřovací kód zaslaný na váš e-mail`,description:"Odeslali jsme kód na ${email}","invalid-code":`Neplatný kód`,noCode:`Zadejte prosím ověřovací kód`,pageTitle:"Zadejte kód | ${clientName}",resendText:`Opětovné odeslání kódu`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,title:`Zkontrolujte svůj e-mail`,unexpectedError:`Došlo k neočekávané chybě`,usePasswordText:`Přihlásit se heslem`,tooManyRequests:`Příliš mnoho pokusů. Chvíli počkejte a zkuste to znovu.`}},"email-verification":{"email-verification":{description:"Odeslali jsme e-mail na ${email}",linkAlreadyUsed:`Tento ověřovací odkaz už byl použit. Vyžádejte si nový.`,linkInvalid:`Tento ověřovací odkaz je neplatný.`,linkInvalidOrExpired:`Tento ověřovací odkaz je neplatný nebo vypršel. Vyžádejte si nový.`,linkInvalidTitle:`Ověřovací odkaz není platný`,linkWrongType:`Tento odkaz nelze použít k ověření e-mailové adresy.`,pageTitle:"Ověření e-mailu | ${clientName}",resendText:`Opětovné odeslání kódu`,successDescription:`Váš e-mail byl úspěšně ověřen.`,successTitle:`E-mail ověřen`,title:`Ověření e-mailu`},"email-verification-code":{buttonText:`Pokračovat`,codeLabel:`Ověřovací kód`,codePlaceholder:`Zadejte 6místný kód`,defaultDescription:`Zadejte kód, který jsme vám poslali e-mailem, abyste ověřili svou adresu a mohli pokračovat.`,description:"Poslali jsme kód na ${email}. Zadejte jej pro ověření své e-mailové adresy a pokračujte.",invalidCode:`Zadaný kód je neplatný nebo vypršel`,noCode:`Zadejte ověřovací kód`,pageTitle:"Ověření e-mailu | ${clientName}",resendFailed:`Kód se nepodařilo znovu odeslat. Zkuste to prosím znovu.`,resendSuccess:`Na váš e-mail byl odeslán nový kód`,resendText:`Znovu odeslat kód`,sessionExpired:`Vaše relace vypršela. Zkuste to prosím znovu.`,title:`Ověřte svůj e-mail`,tooManyAttempts:`Příliš mnoho pokusů. Zkuste to prosím později.`},"email-verification-link-sent":{defaultDescription:`Poslali jsme vám e-mailem ověřovací odkaz. Kliknutím na odkaz ověřte svou adresu a poté se znovu přihlaste.`,description:"Poslali jsme ověřovací odkaz na ${email}. Kliknutím na odkaz ověřte svou adresu a poté se znovu přihlaste.",pageTitle:"Ověření e-mailu | ${clientName}",resendFailed:`E-mail se nepodařilo znovu odeslat. Zkuste to prosím znovu.`,resendSuccess:`Byl odeslán nový ověřovací e-mail`,resendText:`Znovu odeslat e-mail`,title:`Zkontrolujte svůj e-mail`}},invitation:jf,login:Mf,"login-id":{"login-id":{alertListTitle:`Upozornění`,"auth0-users-validation":`Něco se pokazilo, zkuste to prosím později`,"authentication-failure":`Omlouváme se, při pokusu o přihlášení se něco pokazilo`,buttonText:`Pokračovat`,"captcha-client-failure":`Nepodařilo se načíst bezpečnostní výzvu. Zkuste to prosím znovu. (Kód chyby: #{errorCode})`,"captcha-validation-failure":`Omlouváme se, při ověřování captcha došlo k chybě. Zkuste to prosím znovu.`,captchaCodePlaceholder:`Zadejte kód zobrazený výše`,"custom-script-error-code":`Něco se pokazilo, zkuste to prosím později.`,description:"Přihlaste se k ${clientName}.",editEmailText:`Upravit`,emailPlaceholder:`E-mailová adresa`,federatedConnectionButtonText:"Pokračovat s ${connectionName}",lastUsedText:`Naposledy použité`,footerLinkText:`Zaregistrujte se`,footerText:`Nemáte účet?`,forgotPasswordText:`Zapomněli jste heslo?`,hidePasswordText:`Skrýt heslo`,"invalid-captcha":`Vyřešte úlohu, abyste ověřili, že nejste robot.`,"invalid-code":`Neplatný kód`,"invalid-connection":`Neplatné připojení`,"invalid-email-format":`Neplatný e-mail`,"invalid-email-phone":`Zadejte platnou e-mailovou adresu nebo telefonní číslo. Telefonní čísla musí obsahovat předvolbu země.`,"invalid-email-phone-username":`Zadejte platnou e-mailovou adresu, telefonní číslo nebo uživatelské jméno. Telefonní čísla musí obsahovat předvolbu země.`,"invalid-email-username":`Zadejte platnou e-mailovou adresu nebo uživatelské jméno`,"invalid-expired-code":`Neplatný nebo vypršelý uživatelský kód`,"invalid-login-id":`Zadáno neplatné přihlašovací ID`,"invalid-phone-username":`Zadejte platné telefonní číslo nebo uživatelské jméno. Telefonní čísla musí obsahovat předvolbu země.`,"invalid-recaptcha":`Zaškrtněte políčko, abyste ověřili, že nejste robot.`,"invalid-username":"Uživatelské jméno může obsahovat pouze alfanumerické znaky nebo: '${characters}'. Uživatelské jméno musí mít ${min} až ${max} znaků.",invitationDescription:"Přihlaste se pro přijetí pozvánky od ${inviterName} k připojení k ${companyName} na ${clientName}.",invitationTitle:`Byli jste pozváni!`,"ip-blocked":`Zjistili jsme podezřelé přihlašovací chování a další pokusy budou blokovány. Kontaktujte prosím administrátora.`,logoAltText:"${companyName}","no-db-connection":`Neplatné připojení`,"no-email":`Zadejte prosím e-mailovou adresu`,"no-email-phone":`Je vyžadována e-mailová adresa nebo telefonní číslo`,"no-email-phone-username":`Je vyžadováno telefonní číslo, uživatelské jméno nebo e-mailová adresa`,"no-email-username":`Je vyžadována e-mailová adresa nebo uživatelské jméno`,"no-password":`Heslo je povinné`,"no-phone":`Zadejte prosím telefonní číslo`,"no-phone-username":`Je vyžadováno telefonní číslo nebo uživatelské jméno`,"no-username":`Uživatelské jméno je povinné`,pageTitle:"Přihlášení | ${clientName}","password-breached":`Zjistili jsme potenciální bezpečnostní problém s tímto účtem. Pro ochranu vašeho účtu jsme toto přihlášení zablokovali. Pro pokračování prosím resetujte své heslo.`,passwordPlaceholder:`Heslo`,phoneOrEmailPlaceholder:`E-mail nebo telefonní číslo`,phoneOrUsernameOrEmailPlaceholder:`Telefon, uživatelské jméno nebo e-mail`,phoneOrUsernamePlaceholder:`Telefonní číslo nebo uživatelské jméno`,phonePlaceholder:`Telefonní číslo`,"same-user-login":`Příliš mnoho pokusů o přihlášení pro tohoto uživatele. Počkejte prosím a zkuste to znovu později.`,selectCountryCode:"Vyberte předvolbu země, aktuálně nastaveno na ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`nebo`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,showPasswordText:`Zobrazit heslo`,signupActionLinkText:"${footerLinkText}",signupActionText:"${footerText}",termsAndConditionsTemplate:'Pokračováním souhlasíte s našimi <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">Podmínkami a pravidly</a>.',title:`Vítejte`,"user-blocked":`Váš účet byl zablokován po několika po sobě jdoucích neúspěšných pokusech o přihlášení.`,userAccountDoesNotExist:`Uživatelský účet neexistuje`,usernameOnlyPlaceholder:`Uživatelské jméno`,usernameOrEmailPlaceholder:`Uživatelské jméno nebo e-mailová adresa`,usernamePlaceholder:`Uživatelské jméno nebo e-mailová adresa`,usernameTooLong:"Uživatelské jméno musí mít nejvýše ${max} znaků",usernameTooShort:"Uživatelské jméno musí mít alespoň ${min} znaků","wrong-credentials":`Nesprávné uživatelské jméno nebo heslo`,"wrong-email-credentials":`Nesprávný e-mail nebo heslo`,"wrong-email-phone-credentials":`Nesprávná e-mailová adresa, telefonní číslo nebo heslo. Telefonní čísla musí obsahovat předvolbu země.`,"wrong-email-phone-username-credentials":`Nesprávná e-mailová adresa, telefonní číslo, uživatelské jméno nebo heslo. Telefonní čísla musí obsahovat předvolbu země.`,"wrong-email-username-credentials":`Nesprávná e-mailová adresa, uživatelské jméno nebo heslo`,"wrong-phone-credentials":`Nesprávné telefonní číslo nebo heslo`,"wrong-phone-username-credentials":`Nesprávné telefonní číslo, uživatelské jméno nebo heslo. Telefonní čísla musí obsahovat předvolbu země.`,"wrong-username-credentials":`Nesprávné uživatelské jméno nebo heslo`,passkeyButtonText:`Přihlásit se pomocí passkey`}},"login-password":{"login-password":{buttonText:`Přihlásit se`,description:"Přihlaste se k ${clientName}",forgotPasswordText:`Zapomněli jste heslo?`,hidePasswordText:`Skrýt heslo`,"no-password":`Heslo je povinné`,pageTitle:"Přihlášení | ${clientName}","password-breached":`Zjistili jsme potenciální bezpečnostní problém s tímto účtem. Pro ochranu vašeho účtu jsme toto přihlášení zablokovali. Pro pokračování prosím resetujte své heslo.`,passwordPlaceholder:`Heslo`,showPasswordText:`Zobrazit heslo`,signingInAs:"Přihlášení jako ${email}",title:`Zadejte heslo`,unverifiedEmail:`Před přihlášením prosím ověřte svou e-mailovou adresu`,"user-blocked":`Váš účet byl zablokován po několika po sobě jdoucích neúspěšných pokusech o přihlášení.`,"wrong-credentials":`Nesprávné heslo`,sendCodeText:`Přihlásit se kódem`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,tooManyRequests:`Příliš mnoho pokusů. Chvíli počkejte a zkuste to znovu.`,unexpectedError:`Něco se pokazilo. Zkuste to znovu.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`e-mailová adresa`,authMethodEmailOrPhone:`e-mail nebo telefonní číslo`,authMethodPhone:`telefonní číslo`,description:"Přihlaste se pomocí ${authMethod}",emailOrPhonePlaceholder:`E-mailová adresa nebo telefonní číslo`,emailPlaceholder:`E-mailová adresa`,invalidEmail:`Zadejte prosím platnou e-mailovou adresu`,invalidIdentifier:`Zadejte prosím platnou e-mailovou adresu nebo telefonní číslo`,invalidPhone:`Zadejte prosím platné telefonní číslo s předvolbou země`,noEmail:`Zadejte prosím svou e-mailovou adresu`,noPhone:`Zadejte prosím své telefonní číslo`,phonePlaceholder:`Telefonní číslo`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,title:`Přihlásit se kódem`,userAccountDoesNotExist:`Uživatelský účet neexistuje`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Klikněte na odkaz ve svém e-mailu pro přihlášení`,description:"Odeslali jsme odkaz na ${username}. Kliknutím na něj se přihlásíte.",resendText:`Odeslat odkaz znovu`,spamText:`Nedostali jste e-mail? Zkontrolujte složku nevyžádané pošty.`,title:`Zkontrolujte svůj e-mail`}},mfa:Nf,"mfa-email":{"mfa-email":{buttonText:`Pokračovat`,codePlaceholder:`Zadejte kód`,description:"Odeslali jsme kód na ${email}","invalid-code":`Zadaný kód je neplatný`,pageTitle:"Ověření e-mailem | ${clientName}",resendText:`Opětovné odeslání kódu`,title:`Zkontrolujte svůj e-mail`}},"mfa-otp":{"mfa-otp":{buttonText:`Pokračovat`,codePlaceholder:`Zadejte kód`,description:`Zadejte šestimístný kód z vaší ověřovací aplikace`,"invalid-code":`Zadaný kód je neplatný`,pageTitle:"Zadejte kód | ${clientName}",title:`Zadejte svůj kód`},"mfa-totp-enrollment":{title:`Nastavit ověřovací aplikaci`,description:`Naskenujte QR kód níže pomocí ověřovací aplikace a poté zadejte šestimístný kód pro ověření`,secretLabel:`Nebo zadejte tento kód ručně:`,codePlaceholder:`Zadejte kód`,continueButtonText:`Ověřit a aktivovat`,"invalid-code":`Zadaný kód je neplatný. Zkuste to prosím znovu.`,"transaction-not-found":`Platnost vaší registrace vypršela, budete muset začít znovu.`,pageTitle:"Nastavení ověřovací aplikace | ${clientName}",unexpectedError:`Něco se pokazilo. Zkuste to prosím znovu.`,enrollmentComplete:`Registrace MFA je dokončena. Tuto stránku můžete zavřít.`,pickAuthenticatorText:`Zkusit jinou metodu`,qrCodeAltText:`QR kód`},"mfa-totp-challenge":{title:`Ověřte svou identitu`,description:`Zadejte šestimístný kód z vaší ověřovací aplikace`,codePlaceholder:`Zadejte kód`,continueButtonText:`Pokračovat`,"invalid-code":`Zadaný kód je neplatný`,"transaction-not-found":`Platnost vaší registrace vypršela, budete muset začít znovu.`,unexpectedError:`Něco se pokazilo. Zkuste to prosím znovu.`,pageTitle:"Ověření identity | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Použijte své telefonní číslo pro přihlášení | ${clientName}",title:`Ověřte svou identitu`,description:"Odeslali jsme kód na ${phoneNumber}",continueButtonText:`Pokračovat`,changePhoneText:`Zvolte jiné telefonní číslo.`,smsButtonText:`Textová zpráva`,voiceButtonText:`Hlasový hovor`,chooseMessageTypeText:`Jak chcete kód přijmout?`,pickAuthenticatorText:`Zkusit jinou metodu`,logoAltText:"${companyName}",codePlaceholder:`Zadejte kód`,"send-sms-failed":`Při odesílání SMS došlo k problému`,"send-voice-failed":`Při uskutečnění hlasového hovoru došlo k problému`,"invalid-phone-format":`Telefonní číslo může obsahovat pouze číslice.`,"invalid-phone":`Zdá se, že vaše telefonní číslo není platné. Zkontrolujte a zkuste to znovu.`,"too-many-sms":`Překročili jste maximální počet telefonních zpráv za hodinu. Počkejte pár minut a zkuste to znovu.`,"too-many-voice":`Překročili jste maximální počet hlasových hovorů za hodinu. Počkejte pár minut a zkuste to znovu.`,"transaction-not-found":`Vaše registrační transakce vypršela, budete muset začít znovu.`,"no-phone":`Zadejte telefonní číslo`,noCode:`Zadejte ověřovací kód`,invalidCode:`Zadaný kód je neplatný. Zkuste to znovu.`,unexpectedError:`Něco se pokazilo. Zkuste to znovu.`,resendSuccess:`Odeslali jsme nový kód na váš telefon`,enrollmentComplete:`Registrace MFA je dokončena. Tuto stránku můžete zavřít.`},"mfa-phone-enrollment":{pageTitle:"Zadejte své telefonní číslo pro přihlášení pomocí telefonního kódu | ${clientName}",title:`Zabezpečte svůj účet`,description:`Zadejte kód země a telefonní číslo, na které můžeme odeslat 6místný kód:`,continueButtonText:`Pokračovat`,smsButtonText:`Textová zpráva`,voiceButtonText:`Hlasový hovor`,chooseMessageTypeText:`Jak chcete kód přijmout?`,pickAuthenticatorText:`Zkusit jinou metodu`,placeholder:`Zadejte své telefonní číslo`,logoAltText:"${companyName}",selectCountryCode:"Vyberte kód země, aktuálně nastaveno na ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`Při odesílání SMS došlo k problému`,"send-voice-failed":`Při uskutečnění hlasového hovoru došlo k problému`,"sms-authenticator-error":`Nepodařilo se odeslat SMS. Zkuste to prosím později.`,"invalid-phone-format":`Telefonní číslo může obsahovat pouze číslice.`,"invalid-phone":`Zdá se, že vaše telefonní číslo není platné. Zkontrolujte a zkuste to znovu.`,"too-many-sms":`Překročili jste maximální počet telefonních zpráv za hodinu. Počkejte pár minut a zkuste to znovu.`,"too-many-voice":`Překročili jste maximální počet hlasových hovorů za hodinu. Počkejte pár minut a zkuste to znovu.`,"transaction-not-found":`Vaše registrační transakce vypršela, budete muset začít znovu.`,"no-phone":`Zadejte telefonní číslo`,"phone-is-too-short":`Telefonní číslo je příliš krátké`,"phone-is-too-long":`Telefonní číslo je příliš dlouhé`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Vyberte metodu ověření | ${clientName}",title:`Vyberte způsob ověření`,description:`Zvolte, jak chcete ověřit svou identitu`,authenticatorAppLabel:`Autentizační aplikace`,authenticatorAppDescription:`Použijte autentizační aplikaci k získání ověřovacího kódu`,smsLabel:`Textová zpráva`,smsDescription:`Nechte si zaslat ověřovací kód na telefon`,passkeyLabel:`Passkey`,passkeyDescription:`Použijte biometrii zařízení nebo bezpečnostní klíč`}},"mfa-push":{"mfa-push":{description:`Odeslali jsme oznámení na vaše zařízení`,pageTitle:"Push oznámení | ${clientName}",resendText:`Odeslat oznámení znovu`,title:`Schvalte požadavek`,useCodeText:`Zadat kód ručně`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Pokračovat`,codePlaceholder:`Záložní kód`,description:`Zadejte jeden z vašich záložních kódů`,"invalid-code":`Zadaný záložní kód je neplatný`,pageTitle:"Záložní kód | ${clientName}",title:`Zadejte záložní kód`}},"mfa-voice":{"mfa-voice":{buttonText:`Zavolat mi`,codePlaceholder:`Zadejte kód`,description:"Zavoláme na ${phoneNumber} s vaším kódem","invalid-code":`Zadaný kód je neplatný`,pageTitle:"Hlasový hovor | ${clientName}",title:`Přijmout telefonní hovor`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Zkusit znovu`,description:`Vložte svůj bezpečnostní klíč a postupujte podle pokynů`,pageTitle:"Bezpečnostní klíč | ${clientName}",title:`Použijte svůj bezpečnostní klíč`}},passkeys:Pf,organizations:Ff,"reset-password":{"reset-password":{backToLoginText:`Zpět na přihlášení`,buttonText:`Pokračovat`,codeExpired:`Platnost kódu pro obnovení hesla vypršela. Požádejte prosím o nový.`,confirmPasswordLabel:`Potvrzení hesla`,confirmPasswordPlaceholder:`Potvrzení hesla`,description:`Zadejte svůj e-mail pro obnovení hesla`,emailPlaceholder:`E-mailová adresa`,failed:`Obnovení hesla se nezdařilo. Zkuste to prosím znovu.`,"invalid-email-format":`Neplatný e-mail`,"no-email":`Zadejte prosím e-mailovou adresu`,pageTitle:"Obnovení hesla | ${clientName}",passwordLabel:`Nové heslo`,passwordPlaceholder:`Nové heslo`,passwordTooWeak:`Heslo je příliš slabé`,passwordsDidntMatch:`Hesla se neshodují`,successDescription:`Odkaz na obnovení hesla jsme odeslali na vaši e-mailovou adresu.`,successTitle:`Zkontrolujte svůj e-mail`,title:`Zapomněli jste heslo?`,"user-not-found":`Uživatel nenalezen`,noPassword:`Heslo je povinné`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`},"reset-password-code":{backToLoginText:`Zpět na přihlášení`,buttonText:`Obnovit heslo`,codeLabel:`Kód pro obnovení`,codePlaceholder:`Zadejte 6místný kód`,confirmPasswordLabel:`Potvrzení hesla`,confirmPasswordPlaceholder:`Potvrzení hesla`,defaultDescription:`Zadejte kód zaslaný na váš e-mail a zvolte nové heslo`,description:"Odeslali jsme kód na ${email}",failed:`Obnovení hesla se nezdařilo. Zkuste to prosím znovu.`,invalidCode:`Zadaný kód je neplatný nebo vypršel`,noCode:`Zadejte prosím kód pro obnovení`,pageTitle:"Zadejte kód pro obnovení | ${clientName}",passwordLabel:`Nové heslo`,passwordPlaceholder:`Nové heslo`,passwordTooWeak:`Heslo je příliš slabé`,passwordsDidntMatch:`Hesla se neshodují`,resendFailed:`Nepodařilo se znovu odeslat kód. Zkuste to prosím znovu.`,resendSuccess:`Nový kód byl odeslán na váš e-mail`,resendText:`Odeslat kód znovu`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,title:`Zadejte kód pro obnovení`,noPassword:`Heslo je povinné`}},signup:If,"signup-id":{"signup-id":{buttonText:`Pokračovat`,description:`Zaregistrujte se a pokračujte`,"email-already-exists":`Tento e-mail je již zaregistrován`,emailPlaceholder:`E-mailová adresa`,federatedConnectionButtonText:"Pokračovat s ${connectionName}","invalid-email-format":`Neplatný e-mail`,loginActionLinkText:`Přihlásit se`,loginActionText:`Už máte účet?`,"no-email":`Zadejte prosím e-mailovou adresu`,pageTitle:"Registrace | ${clientName}",phonePlaceholder:`Telefonní číslo`,separatorText:`nebo`,title:`Vytvořte svůj účet`,usernamePlaceholder:`Uživatelské jméno`}},"signup-password":{"signup-password":{buttonText:`Pokračovat`,description:`Zaregistrujte se a pokračujte`,hidePasswordText:`Skrýt heslo`,"no-password":`Heslo je povinné`,pageTitle:"Registrace | ${clientName}","password-policy-not-met":`Heslo nesplňuje požadavky`,"password-too-weak":`Heslo je příliš slabé`,passwordPlaceholder:`Heslo`,showPasswordText:`Zobrazit heslo`,title:`Vytvořte své heslo`,passwordTooShort:"Heslo musí mít alespoň ${minLength} znaků",passwordMissingLowercase:`Heslo musí obsahovat alespoň jedno malé písmeno`,passwordMissingUppercase:`Heslo musí obsahovat alespoň jedno velké písmeno`,passwordMissingNumber:`Heslo musí obsahovat alespoň jednu číslici`,passwordMissingSpecial:`Heslo musí obsahovat alespoň jeden speciální znak`,passwordReused:`Heslo bylo nedávno použito a nelze jej znovu použít`,passwordContainsPersonalInfo:`Heslo nesmí obsahovat osobní údaje jako jméno nebo e-mail`,passwordContainsForbiddenWord:`Heslo obsahuje zakázané slovo`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Pokračovat`,codeLabel:`Ověřovací kód`,codePlaceholder:`Zadejte kód`,defaultDescription:`Zadejte ověřovací kód zaslaný na váš telefon`,description:"Odeslali jsme kód na ${username}","invalid-code":`Neplatný kód`,noCode:`Zadejte prosím ověřovací kód`,pageTitle:"Zadejte kód | ${clientName}",resendText:`Opětovné odeslání kódu`,sessionExpired:`Platnost vaší relace vypršela. Zkuste to prosím znovu.`,title:`Zkontrolujte svůj telefon`,unexpectedError:`Došlo k neočekávané chybě`,tooManyRequests:`Příliš mnoho pokusů. Chvíli počkejte a zkuste to znovu.`}},status:Lf},Xre=c({common:()=>Rf,consent:()=>zf,default:()=>Zre,invitation:()=>Bf,login:()=>Vf,mfa:()=>Hf,organizations:()=>Wf,passkeys:()=>Uf,signup:()=>Gf,status:()=>Kf}),Rf={common:{alertListTitle:`Advarsler`,backText:`Gå tilbage`,backToLoginText:`Tilbage til login`,cancelText:`Gå tilbage`,closeText:`Luk`,contactSupportText:`Har du brug for hjælp?`,continueText:`Fortsæt`,copyrightText:"© ${currentYear} ${companyName}",errorText:`Noget gik galt. Prøv venligst igen.`,hidePasswordText:`Skjul adgangskode`,loadingText:`Indlæser...`,orText:`eller`,privacyPolicyText:`Privatlivspolitik`,showPasswordText:`Vis adgangskode`,termsOfServiceText:`Servicevilkår`,termsShortText:`Vilkår`,tryAgainText:`Prøv igen`},account:{title:`Kontoindstillinger`,description:`Administrer din konto`,editProfileLabel:`Rediger profil`,editProfileDetail:`Navn, e-mail, telefonnummer og billede`,securityLabel:`Sikkerhedsindstillinger`,securityDetail:`Multifaktorgodkendelse`,securityMethodsCountOne:"${count} metode konfigureret",securityMethodsCount:"${count} metoder konfigureret",passkeysLabel:`Adgangsnøgler`,passkeysDetail:`Log ind uden adgangskode`,passkeysCountOne:"${count} adgangsnøgle registreret",passkeysCount:"${count} adgangsnøgler registreret",linkedAccountsLabel:`Tilknyttede konti`,linkedAccountsDetail:`Tilknyt sociale konti`,linkedAccountsCountOne:"${count} tilknyttet konto",linkedAccountsCount:"${count} tilknyttede konti",deleteAccountLabel:`Slet konto`,deleteAccountDetail:`Slet din konto og dine data permanent`,logoutText:`Log ud`},"account-profile":{title:`Rediger profil`,description:`Opdater dine personlige oplysninger`,givenNameLabel:`Fornavn`,familyNameLabel:`Efternavn`,nicknameLabel:`Kaldenavn`,phoneNumberLabel:`Telefonnummer`,pictureLabel:`URL til profilbillede`,buttonText:`Gem ændringer`,backToAccountText:`Tilbage til kontoen`,updateFailed:`Profilen kunne ikke opdateres`},"account-delete":{title:`Slet konto`,description:`Slet din konto permanent`,warningTitle:`Advarsel: Denne handling er permanent`,warningText:`Alle dine data slettes permanent. Det omfatter din profil, tilknyttede konti og godkendelsesmetoder. Handlingen kan ikke fortrydes.`,confirmationLabel:'Skriv "${confirmationWord}" for at bekræfte',buttonText:`Slet min konto`,cancelText:`Annuller`,confirmationError:'Skriv "${confirmationWord}" for at bekræfte',deleteSuccess:`Din konto er blevet slettet`,deleteFailed:`Kontoen kunne ikke slettes`},"account-linked":{title:`Tilknyttede konti`,description:`Administrer dine tilknyttede konti`,noLinkedAccounts:`Ingen tilknyttede konti.`,unlinkButtonText:`Fjern tilknytning`,backToAccountText:`Tilbage til kontoen`,unlinkSuccess:`Kontoens tilknytning er fjernet`,unlinkFailed:`Tilknytningen kunne ikke fjernes`},"account-security":{title:`Sikkerhedsindstillinger`,description:`Administrer dine metoder til totrinsgodkendelse`,noEnrollments:`Du har ingen metoder til totrinsgodkendelse konfigureret.`,addedOn:"Tilføjet ${date}",removeButtonText:`Fjern`,addTotpLabel:`Tilføj godkendelsesapp`,addTotpDetail:`Brug en app som Google Authenticator eller Authy`,addSmsLabel:`Tilføj telefon (SMS)`,addSmsDetail:`Modtag bekræftelseskoder via sms`,typeTotp:`Godkendelsesapp`,typePhone:`Telefon (SMS)`,typeEmail:`E-mail`,typePush:`Push-notifikation`,typeWebauthn:`Sikkerhedsnøgle`,backToAccountText:`Tilbage til kontoen`,enrollmentNotFound:`Metoden blev ikke fundet`,removeSuccess:`Godkendelsesmetoden er fjernet`,removeFailed:`Godkendelsesmetoden kunne ikke fjernes`},"account-passkeys":{title:`Adgangsnøgler`,description:`Administrer dine adgangsnøgler til login uden adgangskode`,noPasskeysText:`Du har ingen registrerede adgangsnøgler.`,defaultPasskeyName:`Adgangsnøgle`,syncedBadgeText:`Synkroniseret`,addedOnText:"Tilføjet ${date}",renameButtonText:`Omdøb`,removeButtonText:`Fjern`,renamePromptText:`Indtast et nyt navn til denne adgangsnøgle:`,addPasskeyButtonText:`Tilføj adgangsnøgle`,backToAccountText:`Tilbage til kontoen`,logoutText:`Log ud`,passkeyNotFoundText:`Adgangsnøglen blev ikke fundet`,passkeyRemovedText:`Adgangsnøglen er fjernet`,removeFailedText:`Adgangsnøglen kunne ikke fjernes`,invalidNameText:`Navnet skal være mellem 1 og 64 tegn`,passkeyRenamedText:`Adgangsnøglen er omdøbt`,renameFailedText:`Adgangsnøglen kunne ikke omdøbes`,startRegistrationFailedText:`Registrering af adgangsnøgle kunne ikke startes`,missingCredentialText:`Data for adgangsnøglen mangler`,challengeExpiredText:`Anmodningen er udløbet. Prøv igen.`,invalidCredentialText:`Ugyldige data for adgangsnøglen`,verificationFailedText:`Bekræftelse af adgangsnøglen mislykkedes`,passkeyAddedText:`Adgangsnøglen er tilføjet`,registrationFailedText:`Registrering af adgangsnøgle mislykkedes. Prøv igen.`},"account-mfa-phone-enrollment":{title:`Opsæt telefon (SMS)`,description:`Indtast dit telefonnummer for at modtage bekræftelseskoder via SMS.`,phoneLabel:`Telefonnummer`,sendCodeButtonText:`Send bekræftelseskode`,backToSecurityText:`Tilbage til sikkerhedsindstillinger`,verifyTitle:`Bekræft telefonnummer`,verifyDescription:`Indtast bekræftelseskoden, der blev sendt til din telefon.`,codeSentText:"En bekræftelseskode er sendt til ${phoneNumber}",codeSentToYourPhoneText:`En bekræftelseskode er sendt til din telefon`,codeLabel:`Bekræftelseskode`,codePlaceholder:`Indtast bekræftelseskode`,verifyButtonText:`Bekræft og aktiver`,noPhoneText:`Indtast dit telefonnummer`,invalidPhoneText:`Indtast et gyldigt telefonnummer`,sendCodeFailedText:`Bekræftelseskoden kunne ikke sendes. Prøv igen.`,noCodeText:`Indtast bekræftelseskoden`,invalidCodeText:`Ugyldig kode. Prøv igen.`,sessionInvalidText:`Noget gik galt. Start tilmeldingen igen.`},"account-mfa-totp-enrollment":{title:`Opsæt autentificeringsapp`,description:`Scan QR-koden med din autentificeringsapp, og indtast derefter bekræftelseskoden nedenfor.`,qrCodeAltText:`QR-kode`,manualKeyText:`Eller indtast denne nøgle manuelt:`,codeLabel:`Bekræftelseskode`,codePlaceholder:`Indtast 6-cifret kode`,verifyButtonText:`Bekræft og aktiver`,backToSecurityText:`Tilbage til sikkerhedsindstillinger`,noCodeText:`Indtast bekræftelseskoden`,invalidCodeText:`Ugyldig kode. Prøv igen.`,verificationFailedText:`Bekræftelsen mislykkedes. Prøv igen.`}},zf={consent:{buttonText:`Acceptér`,cancelButtonText:`Afvis`,description:"${clientName} anmoder om adgang til din konto",pageTitle:"Godkend | ${clientName}",scopesTitle:"Dette vil give ${clientName} tilladelse til at:",title:"Godkend ${clientName}",accessAccountText:"ønsker adgang til din ${tenantName}-konto som ${userName}.",notAuthenticated:`Du skal logge ind for at fortsætte.`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,consentStorageNotConfigured:`Dit samtykke kunne ikke gemmes. Kontakt ejeren af applikationen.`},"connect-consent":{title:`Forbind applikation`,description:"Vil du tillade ${domain} at handle på dine vegne?",connectAccountText:"ønsker at forbinde til din ${tenantName}-konto som ${userName}.",workspaceLabel:`Arbejdsområde:`,apiLabel:`Til API:`,permissionsLabel:`Anmodede tilladelser:`,localDevBadge:`Lokal udvikling`,localDevTooltip:`Dette websted er et lokalt udviklingsmiljø, ikke produktion. Forbindelsen vil ikke virke uden for denne maskine eller dette netværk.`,buttonText:`Forbind`,cancelText:`Annuller`,notAuthenticated:`Du skal logge ind for at fortsætte.`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,workspaceSelectionRequired:`Vælg et arbejdsområde først.`,noWorkspaceAccess:`Du har ikke adgang til det arbejdsområde`,workspaceNotFound:`Arbejdsområdet blev ikke fundet`},"connect-tenant-select":{title:`Vælg et arbejdsområde`,description:"Vælg hvilket ${tenantName}-arbejdsområde ${domain} skal forbinde til.",noWorkspacesDescription:`Ingen tilgængelige arbejdsområder`,noWorkspacesText:"Du har ikke adgang til nogen ${tenantName}-arbejdsområder. Bed en administrator om at invitere dig.",cancelText:`Annuller`,notAuthenticated:`Du skal logge ind for at fortsætte.`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,noWorkspaceSelected:`Vælg et arbejdsområde.`,noWorkspaceAccess:`Du har ikke adgang til det arbejdsområde`}},Bf={invitation:{acceptButtonText:`Acceptér invitation`,description:"${inviterName} har inviteret dig til at deltage i ${organizationName} på ${clientName}",pageTitle:"Invitation | ${clientName}",title:`Du er blevet inviteret`,defaultOrganizationName:`organisationen`,acceptFailed:`Vi kunne ikke færdiggøre opsætningen af din konto. Prøv igen.`}},Vf={login:{alertListTitle:`Advarsler`,buttonText:`Fortsæt`,description:"Log ind på ${clientName}.",editEmailText:`Rediger`,emailPlaceholder:`E-mail-adresse`,enterACodeBtn:`Log ind med en kode`,enterACodeShortBtn:`Kode`,federatedConnectionButtonText:"Fortsæt med ${connectionName}",lastUsedText:`Senest brugt`,footerLinkText:`Tilmeld dig`,footerText:`Har du ikke en konto?`,forgotPasswordText:`Har du glemt din adgangskode?`,hidePasswordText:`Skjul adgangskode`,invalidEmail:`Ugyldig e-mail`,invalidIdentifier:`Ugyldig e-mail eller brugernavn`,invitationDescription:"Log ind for at acceptere ${inviterName}s invitation til at deltage i ${companyName} på ${clientName}.",invitationTitle:`Du er blevet inviteret!`,logoAltText:"${companyName}","no-email":`Indtast venligst en e-mailadresse`,"no-password":`Adgangskode er påkrævet`,pageTitle:"Log ind | ${clientName}",passwordLoginNotAvailable:`Adgangskodegodkendelse er ikke tilgængelig`,passwordPlaceholder:`Adgangskode`,phonePlaceholder:`Telefonnummer`,separatorText:`eller`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,showPasswordText:`Vis adgangskode`,signupActionLinkText:`Tilmeld dig`,signupActionText:`Har du ikke en konto?`,title:`Velkommen`,tooManyFailedLogins:`For mange mislykkede loginforsøg. Prøv venligst igen senere.`,unverifiedEmail:`Bekræft venligst din e-mailadresse, før du logger ind`,userAccountDoesNotExist:`Brugerkontoen findes ikke`,usernamePlaceholder:`Brugernavn eller e-mailadresse`,usernameTooLong:"Brugernavnet må højst være ${max} tegn",usernameTooShort:"Brugernavnet skal være mindst ${min} tegn",wrongCredentials:`Forkert brugernavn eller adgangskode`,passkeyButtonText:`Log ind med passkey`,userBlocked:`Din konto er blevet blokeret efter flere på hinanden følgende loginforsøg.`,tooManyRequests:`For mange forsøg. Vent et øjeblik, og prøv igen.`,unexpectedError:`Noget gik galt. Prøv igen.`}},Hf={mfa:{backupCodeText:`Brug backupkode`,description:`Vælg en bekræftelsesmetode`,pageTitle:"Multifaktorgodkendelse | ${clientName}",title:`Bekræft din identitet`}},Uf={"passkey-enrollment-nudge":{title:`Sikr din konto med en adgangsnøgle`,description:`Adgangsnøgler bruger din enheds biometri eller PIN til at logge dig ind hurtigere og mere sikkert.`,enrollButtonText:`Konfigurer adgangsnøgle`,snoozeButtonText:`Måske senere`,optOutLinkText:`Vis ikke dette igen`,pageTitle:"Konfigurer Adgangsnøgle | ${clientName}"},"passkey-enrollment":{title:`Opret din adgangsnøgle`,description:`Følg anvisningerne fra din browser for at oprette en adgangsnøgle til denne konto.`,errorMessage:`Oprettelse af adgangsnøgle mislykkedes. Prøv venligst igen.`,cancelLinkText:`Spring over for nu`,retryButtonText:`Prøv igen`,enrollmentComplete:`Din adgangsnøgle er konfigureret. Du kan lukke denne side.`,pageTitle:"Opret Adgangsnøgle | ${clientName}",sessionExpired:`Din session er udløbet. Prøv venligst igen.`,enrollmentRequired:`Du skal oprette en adgangsnøgle for at fortsætte.`,challengeExpired:`Anmodningen er udløbet. Prøv igen.`},"passkey-challenge":{title:`Log ind med passkey`,description:`Følg anvisningerne fra din browser for at bekræfte din identitet.`,errorMessage:`Godkendelse med passkey mislykkedes. Prøv venligst igen.`,cancelLinkText:`Tilbage til login`,retryButtonText:`Prøv igen`,pageTitle:"Log ind med passkey | ${clientName}",sessionExpired:`Din session er udløbet. Prøv venligst igen.`}},Wf={organizations:{description:`Vælg hvilken organisation du vil logge ind på`,pageTitle:"Vælg organisation | ${clientName}",searchPlaceholder:`Søg organisationer`,title:`Vælg din organisation`}},Gf={signup:{buttonText:`Tilmelding`,confirmPasswordPlaceholder:`Bekræft adgangskode`,description:`Vælg en adgangskode med en blanding af store og små bogstaver, tal og symboler.`,"email-already-exists":`E-mailen er allerede optaget`,emailPlaceholder:`E-mail-adresse`,federatedConnectionButtonText:"Fortsæt med ${connectionName}",hidePasswordText:`Skjul adgangskode`,"invalid-email-format":`Ugyldig e-mail`,loginActionLinkText:`Log ind`,loginActionText:`Har du allerede en konto?`,"no-email":`Indtast venligst en e-mailadresse`,"no-password":`Adgangskode er påkrævet`,"no-username":`Brugernavn er påkrævet`,pageTitle:"Tilmeld dig | ${clientName}",passwordPlaceholder:`Adgangskode`,passwordsDidntMatch:`Adgangskoderne matcher ikke`,phonePlaceholder:`Telefonnummer`,privacyPolicyLinkText:`Privatlivspolitik`,separatorText:`eller`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,showPasswordText:`Vis adgangskode`,termsOfServiceLinkText:`Servicevilkår`,termsText:`Ved at tilmelde dig accepterer du vores`,title:`Vælg adgangskode`,"username-already-exists":`Dette brugernavn er allerede taget`,usernamePlaceholder:`Brugernavn`,verifyEmailText:`Tjek venligst din e-mail for at bekræfte din konto`,confirmPasswordRequired:`Bekræft din adgangskode`,createUserFailed:`Vi kunne ikke oprette din konto. Prøv igen.`}},Kf={status:{continueButtonText:`Fortsæt`,errorTitle:`Fejl`,pageTitle:"Status | ${clientName}",successTitle:`Succes`,title:`Status`}},Zre={common:Rf,consent:zf,"device-flow":{"device-flow":{buttonText:`Fortsæt`,codePlaceholder:`Indtast kode`,description:`Indtast koden, der vises på din enhed`,"expired-code":`Koden er udløbet`,"invalid-code":`Den indtastede kode er ugyldig`,pageTitle:"Enhedsaktivering | ${clientName}",title:`Aktivér din enhed`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Log ind`,codeLabel:`Bekræftelseskode`,codePlaceholder:`Indtast kode`,defaultDescription:`Indtast bekræftelseskoden, der blev sendt til din e-mail`,description:"Vi sendte en kode til ${email}","invalid-code":`Ugyldig kode`,noCode:`Indtast venligst bekræftelseskoden`,pageTitle:"Indtast kode | ${clientName}",resendText:`Send koden igen`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,title:`Tjek din e-mail`,unexpectedError:`Der opstod en uventet fejl`,usePasswordText:`Log ind med adgangskode`,tooManyRequests:`For mange forsøg. Vent et øjeblik, og prøv igen.`}},"email-verification":{"email-verification":{description:"Vi sendte en e-mail til ${email}",linkAlreadyUsed:`Bekræftelseslinket er allerede brugt. Anmod om et nyt.`,linkInvalid:`Bekræftelseslinket er ugyldigt.`,linkInvalidOrExpired:`Bekræftelseslinket er ugyldigt eller udløbet. Anmod om et nyt.`,linkInvalidTitle:`Bekræftelseslinket er ikke gyldigt`,linkWrongType:`Dette link kan ikke bruges til at bekræfte en e-mailadresse.`,pageTitle:"Bekræft e-mail | ${clientName}",resendText:`Send koden igen`,successDescription:`Din e-mail er blevet bekræftet.`,successTitle:`E-mail bekræftet`,title:`Bekræft din e-mail`},"email-verification-code":{buttonText:`Fortsæt`,codeLabel:`Bekræftelseskode`,codePlaceholder:`Indtast 6-cifret kode`,defaultDescription:`Indtast koden, vi sendte til din e-mail, for at bekræfte din adresse og fortsætte.`,description:"Vi har sendt en kode til ${email}. Indtast den for at bekræfte din e-mailadresse og fortsætte.",invalidCode:`Koden er ugyldig eller udløbet`,noCode:`Indtast bekræftelseskoden`,pageTitle:"Bekræft e-mail | ${clientName}",resendFailed:`Koden kunne ikke sendes igen. Prøv igen.`,resendSuccess:`En ny kode er sendt til din e-mail`,resendText:`Send koden igen`,sessionExpired:`Din session er udløbet. Prøv igen.`,title:`Bekræft din e-mailadresse`,tooManyAttempts:`For mange forsøg. Prøv igen senere.`},"email-verification-link-sent":{defaultDescription:`Vi har sendt et bekræftelseslink til din e-mail. Klik på linket for at bekræfte din adresse, og log derefter ind igen.`,description:"Vi har sendt et bekræftelseslink til ${email}. Klik på linket for at bekræfte din adresse, og log derefter ind igen.",pageTitle:"Bekræft e-mail | ${clientName}",resendFailed:`E-mailen kunne ikke sendes igen. Prøv igen.`,resendSuccess:`En ny bekræftelsesmail er sendt`,resendText:`Send e-mailen igen`,title:`Tjek din e-mail`}},invitation:Bf,login:Vf,"login-id":{"login-id":{alertListTitle:`Advarsler`,"auth0-users-validation":`Noget gik galt, prøv venligst igen senere`,"authentication-failure":`Vi beklager, noget gik galt under loginforsøget`,buttonText:`Fortsæt`,"captcha-client-failure":`Vi kunne ikke indlæse sikkerhedsudfordringen. Prøv venligst igen. (Fejlkode: #{errorCode})`,"captcha-validation-failure":`Vi beklager, noget gik galt under validering af captcha-svaret. Prøv venligst igen.`,captchaCodePlaceholder:`Indtast koden vist ovenfor`,"custom-script-error-code":`Noget gik galt, prøv venligst igen senere.`,description:"Log ind på ${clientName}.",editEmailText:`Rediger`,emailPlaceholder:`E-mail-adresse`,federatedConnectionButtonText:"Fortsæt med ${connectionName}",lastUsedText:`Senest brugt`,footerLinkText:`Tilmeld dig`,footerText:`Har du ikke en konto?`,forgotPasswordText:`Har du glemt din adgangskode?`,hidePasswordText:`Skjul adgangskode`,"invalid-captcha":`Løs sikkerhedsspørgsmålet for at bekræfte, at du ikke er en robot.`,"invalid-code":`Ugyldig kode`,"invalid-connection":`Ugyldig forbindelse`,"invalid-email-format":`Ugyldig e-mail`,"invalid-email-phone":`Indtast en gyldig e-mailadresse eller telefonnummer. Telefonnumre skal inkludere landekoden.`,"invalid-email-phone-username":`Indtast en gyldig e-mailadresse, telefonnummer eller brugernavn. Telefonnumre skal inkludere landekoden.`,"invalid-email-username":`Indtast en gyldig e-mailadresse eller brugernavn`,"invalid-expired-code":`Ugyldig eller udløbet brugerkode`,"invalid-login-id":`Ugyldigt login-ID indtastet`,"invalid-phone-username":`Indtast et gyldigt telefonnummer eller brugernavn. Telefonnumre skal inkludere landekoden.`,"invalid-recaptcha":`Markér afkrydsningsfeltet for at bekræfte, at du ikke er en robot.`,"invalid-username":"Brugernavnet kan kun indeholde alfanumeriske tegn eller: '${characters}'. Brugernavnet skal være mellem ${min} og ${max} tegn.",invitationDescription:"Log ind for at acceptere ${inviterName}s invitation til at deltage i ${companyName} på ${clientName}.",invitationTitle:`Du er blevet inviteret!`,"ip-blocked":`Vi har registreret mistænkelig loginadfærd, og yderligere forsøg vil blive blokeret. Kontakt venligst administratoren.`,logoAltText:"${companyName}","no-db-connection":`Ugyldig forbindelse`,"no-email":`Indtast venligst en e-mailadresse`,"no-email-phone":`E-mailadresse eller telefonnummer er påkrævet`,"no-email-phone-username":`Telefonnummer, brugernavn eller e-mailadresse er påkrævet`,"no-email-username":`E-mailadresse eller brugernavn er påkrævet`,"no-password":`Adgangskode er påkrævet`,"no-phone":`Indtast venligst et telefonnummer`,"no-phone-username":`Telefonnummer eller brugernavn er påkrævet`,"no-username":`Brugernavn er påkrævet`,pageTitle:"Log ind | ${clientName}","password-breached":`Vi har registreret et potentielt sikkerhedsproblem med denne konto. For at beskytte din konto har vi forhindret dette login. Nulstil venligst din adgangskode for at fortsætte.`,passwordPlaceholder:`Adgangskode`,phoneOrEmailPlaceholder:`E-mail eller telefonnummer`,phoneOrUsernameOrEmailPlaceholder:`Telefon, brugernavn eller e-mail`,phoneOrUsernamePlaceholder:`Telefonnummer eller brugernavn`,phonePlaceholder:`Telefonnummer`,"same-user-login":`For mange loginforsøg for denne bruger. Vent venligst, og prøv igen senere.`,selectCountryCode:"Vælg landekode, i øjeblikket sat til ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`eller`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,showPasswordText:`Vis adgangskode`,signupActionLinkText:`Tilmeld dig`,signupActionText:`Har du ikke en konto?`,termsAndConditionsTemplate:'Ved at fortsætte accepterer du vores <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">Vilkår og betingelser</a>.',title:`Velkommen`,"user-blocked":`Din konto er blevet blokeret efter flere på hinanden følgende loginforsøg.`,userAccountDoesNotExist:`Brugerkontoen findes ikke`,usernameOnlyPlaceholder:`Brugernavn`,usernameOrEmailPlaceholder:`Brugernavn eller e-mailadresse`,usernamePlaceholder:`Brugernavn`,usernameTooLong:"Brugernavnet må højst være ${max} tegn",usernameTooShort:"Brugernavnet skal være mindst ${min} tegn","wrong-credentials":`Forkert brugernavn eller adgangskode`,"wrong-email-credentials":`Forkert e-mail eller adgangskode`,"wrong-email-phone-credentials":`Forkert e-mailadresse, telefonnummer eller adgangskode. Telefonnumre skal inkludere landekoden.`,"wrong-email-phone-username-credentials":`Forkert e-mailadresse, telefonnummer, brugernavn eller adgangskode. Telefonnumre skal inkludere landekoden.`,"wrong-email-username-credentials":`Forkert e-mailadresse, brugernavn eller adgangskode`,"wrong-phone-credentials":`Forkert telefonnummer eller adgangskode`,"wrong-phone-username-credentials":`Forkert telefonnummer, brugernavn eller adgangskode. Telefonnumre skal inkludere landekoden.`,"wrong-username-credentials":`Forkert brugernavn eller adgangskode`,passkeyButtonText:`Log ind med passkey`}},"login-password":{"login-password":{buttonText:`Log ind`,description:`Indtast din e-mailadresse og adgangskode for at logge ind.`,forgotPasswordText:`Har du glemt din adgangskode?`,hidePasswordText:`Skjul adgangskode`,"no-password":`Adgangskode er påkrævet`,pageTitle:"Log ind | ${clientName}","password-breached":`Vi har registreret et potentielt sikkerhedsproblem med denne konto. For at beskytte din konto har vi forhindret dette login. Nulstil venligst din adgangskode for at fortsætte.`,passwordPlaceholder:`Adgangskode`,showPasswordText:`Vis adgangskode`,signingInAs:"Logger ind som ${email}",title:`Indtast adgangskode`,unverifiedEmail:`Bekræft venligst din e-mailadresse, før du logger ind`,"user-blocked":`Din konto er blevet blokeret efter flere på hinanden følgende loginforsøg.`,"wrong-credentials":`Forkert adgangskode`,sendCodeText:`Log ind med kode`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,tooManyRequests:`For mange forsøg. Vent et øjeblik, og prøv igen.`,unexpectedError:`Noget gik galt. Prøv igen.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`e-mail`,authMethodEmailOrPhone:`e-mail eller telefonnummer`,authMethodPhone:`telefonnummer`,description:"Log ind med din ${authMethod}",emailOrPhonePlaceholder:`E-mailadresse eller telefonnummer`,emailPlaceholder:`E-mail-adresse`,invalidEmail:`Indtast venligst en gyldig e-mailadresse`,invalidIdentifier:`Indtast venligst en gyldig e-mailadresse eller telefonnummer`,invalidPhone:`Indtast venligst et gyldigt telefonnummer med landekode`,noEmail:`Indtast venligst din e-mailadresse`,noPhone:`Indtast venligst dit telefonnummer`,phonePlaceholder:`Telefonnummer`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,title:`Log ind med en kode`,userAccountDoesNotExist:`Brugerkontoen findes ikke`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Klik på linket i din e-mail for at logge ind`,description:"Vi sendte et link til ${username}. Klik på det for at logge ind.",resendText:`Send link igen`,spamText:`Har du ikke modtaget e-mailen? Tjek din spam-mappe.`,title:`Tjek din e-mail`}},mfa:Hf,"mfa-email":{"mfa-email":{buttonText:`Fortsæt`,codePlaceholder:`Indtast kode`,description:"Vi sendte en kode til ${email}","invalid-code":`Den indtastede kode er ugyldig`,pageTitle:"E-mailbekræftelse | ${clientName}",resendText:`Send kode igen`,title:`Tjek din e-mail`}},"mfa-otp":{"mfa-otp":{buttonText:`Fortsæt`,codePlaceholder:`Indtast kode`,description:`Indtast den 6-cifrede kode fra din autentificeringsapp`,"invalid-code":`Den indtastede kode er ugyldig`,pageTitle:"Indtast kode | ${clientName}",title:`Indtast din kode`},"mfa-totp-enrollment":{title:`Opsæt autentificeringsapp`,description:`Scan QR-koden nedenfor med din autentificeringsapp, og indtast derefter den 6-cifrede kode for at bekræfte`,secretLabel:`Eller indtast denne kode manuelt:`,codePlaceholder:`Indtast kode`,continueButtonText:`Bekræft og aktiver`,"invalid-code":`Den indtastede kode er ugyldig. Prøv venligst igen.`,"transaction-not-found":`Din tilmeldingssession er udløbet. Du skal starte forfra.`,pageTitle:"Opsæt autentificeringsapp | ${clientName}",unexpectedError:`Noget gik galt. Prøv venligst igen.`,enrollmentComplete:`MFA-tilmeldingen er fuldført. Du kan lukke denne side.`,pickAuthenticatorText:`Prøv en anden metode`,qrCodeAltText:`QR-kode`},"mfa-totp-challenge":{title:`Bekræft din identitet`,description:`Indtast den 6-cifrede kode fra din autentificeringsapp`,codePlaceholder:`Indtast kode`,continueButtonText:`Fortsæt`,"invalid-code":`Den indtastede kode er ugyldig`,"transaction-not-found":`Din session er udløbet. Du skal starte forfra.`,unexpectedError:`Noget gik galt. Prøv venligst igen.`,pageTitle:"Bekræft identitet | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Brug dit telefonnummer til at logge ind | ${clientName}",title:`Bekræft din identitet`,description:"Vi sendte en kode til ${phoneNumber}",continueButtonText:`Fortsæt`,changePhoneText:`Vælg et andet telefonnummer.`,smsButtonText:`SMS`,voiceButtonText:`Taleopkald`,chooseMessageTypeText:`Hvordan vil du modtage koden?`,pickAuthenticatorText:`Prøv en anden metode`,logoAltText:"${companyName}",codePlaceholder:`Indtast kode`,"send-sms-failed":`Der opstod et problem med at sende SMS'en`,"send-voice-failed":`Der opstod et problem med at foretage taleopkaldet`,"invalid-phone-format":`Telefonnummeret kan kun indeholde cifre.`,"invalid-phone":`Det ser ud til, at dit telefonnummer ikke er gyldigt. Kontrollér og prøv igen.`,"too-many-sms":`Du har overskredet det maksimale antal telefonbeskeder pr. time. Vent et par minutter og prøv igen.`,"too-many-voice":`Du har overskredet det maksimale antal telefonopkald pr. time. Vent et par minutter og prøv igen.`,"transaction-not-found":`Din registreringstransaktion er udløbet, du skal starte forfra.`,"no-phone":`Indtast et telefonnummer`,noCode:`Indtast bekræftelseskoden`,invalidCode:`Den indtastede kode er ugyldig. Prøv igen.`,unexpectedError:`Noget gik galt. Prøv igen.`,resendSuccess:`Vi sendte en ny kode til din telefon`,enrollmentComplete:`MFA-tilmeldingen er fuldført. Du kan lukke denne side.`},"mfa-phone-enrollment":{pageTitle:"Indtast dit telefonnummer for at logge ind med en telefonkode | ${clientName}",title:`Sikre din konto`,description:`Indtast din landekode og telefonnummer, som vi kan sende en 6-cifret kode til:`,continueButtonText:`Fortsæt`,smsButtonText:`SMS`,voiceButtonText:`Taleopkald`,chooseMessageTypeText:`Hvordan vil du modtage koden?`,pickAuthenticatorText:`Prøv en anden metode`,placeholder:`Indtast dit telefonnummer`,logoAltText:"${companyName}",selectCountryCode:"Vælg landekode, i øjeblikket sat til ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`Der opstod et problem med at sende SMS'en`,"send-voice-failed":`Der opstod et problem med at foretage taleopkaldet`,"sms-authenticator-error":`Vi kunne ikke sende SMS'en. Prøv igen senere.`,"invalid-phone-format":`Telefonnummeret kan kun indeholde cifre.`,"invalid-phone":`Det ser ud til, at dit telefonnummer ikke er gyldigt. Kontrollér og prøv igen.`,"too-many-sms":`Du har overskredet det maksimale antal telefonbeskeder pr. time. Vent et par minutter og prøv igen.`,"too-many-voice":`Du har overskredet det maksimale antal telefonopkald pr. time. Vent et par minutter og prøv igen.`,"transaction-not-found":`Din registreringstransaktion er udløbet, du skal starte forfra.`,"no-phone":`Indtast et telefonnummer`,"phone-is-too-short":`Telefonnummeret er for kort`,"phone-is-too-long":`Telefonnummeret er for langt`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Vælg bekræftelsesmetode | ${clientName}",title:`Vælg din bekræftelsesmetode`,description:`Vælg hvordan du vil bekræfte din identitet`,authenticatorAppLabel:`Godkendelsesapp`,authenticatorAppDescription:`Brug din godkendelsesapp til at få en bekræftelseskode`,smsLabel:`Sms-besked`,smsDescription:`Få en bekræftelseskode sendt til din telefon`,passkeyLabel:`Adgangsnøgle`,passkeyDescription:`Brug din enheds biometri eller sikkerhedsnøgle`}},"mfa-push":{"mfa-push":{description:`Vi sendte en notifikation til din enhed`,pageTitle:"Push-notifikation | ${clientName}",resendText:`Send notifikation igen`,title:`Godkend anmodningen`,useCodeText:`Indtast kode manuelt`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Fortsæt`,codePlaceholder:`Gendannelseskode`,description:`Indtast en af dine gendannelseskoder`,"invalid-code":`Den indtastede gendannelseskode er ugyldig`,pageTitle:"Gendannelseskode | ${clientName}",title:`Indtast gendannelseskode`}},"mfa-voice":{"mfa-voice":{buttonText:`Ring til mig`,codePlaceholder:`Indtast kode`,description:"Vi ringer til ${phoneNumber} med din kode","invalid-code":`Den indtastede kode er ugyldig`,pageTitle:"Taleopkald | ${clientName}",title:`Modtag et telefonopkald`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Prøv igen`,description:`Indsæt din sikkerhedsnøgle og følg instruktionerne`,pageTitle:"Sikkerhedsnøgle | ${clientName}",title:`Brug din sikkerhedsnøgle`}},passkeys:Uf,organizations:Wf,"reset-password":{"reset-password":{backToLoginText:`Tilbage til login`,buttonText:`Send e-mail til nulstilling af adgangskode`,codeExpired:`Din kode til nulstilling af adgangskode er udløbet. Anmod venligst om en ny.`,confirmPasswordLabel:`Bekræft adgangskode`,confirmPasswordPlaceholder:`Bekræft adgangskode`,description:`Klik på knappen nedenfor, så sender vi instruktioner om, hvordan du nulstiller din adgangskode.`,emailPlaceholder:`E-mail-adresse`,failed:`Nulstilling af adgangskode mislykkedes. Prøv venligst igen.`,"invalid-email-format":`Ugyldig e-mail`,"no-email":`Indtast venligst en e-mailadresse`,pageTitle:"Nulstil adgangskode | ${clientName}",passwordLabel:`Ny adgangskode`,passwordPlaceholder:`Ny adgangskode`,passwordTooWeak:`Adgangskoden er for svag`,passwordsDidntMatch:`Adgangskoderne matcher ikke`,successDescription:`Vi har sendt et link til nulstilling af adgangskode til din e-mailadresse.`,successTitle:`E-mail til nulstilling af adgangskode sendt`,title:`Har du glemt din adgangskode?`,"user-not-found":`Bruger ikke fundet`,noPassword:`Adgangskode er påkrævet`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`},"reset-password-code":{backToLoginText:`Tilbage til login`,buttonText:`Nulstil adgangskode`,codeLabel:`Nulstillingskode`,codePlaceholder:`Indtast 6-cifret kode`,confirmPasswordLabel:`Bekræft adgangskode`,confirmPasswordPlaceholder:`Bekræft adgangskode`,defaultDescription:`Indtast koden sendt til din e-mail og vælg en ny adgangskode`,description:"Vi sendte en kode til ${email}",failed:`Nulstilling af adgangskode mislykkedes. Prøv venligst igen.`,invalidCode:`Den indtastede kode er ugyldig eller udløbet`,noCode:`Indtast venligst nulstillingskoden`,pageTitle:"Indtast nulstillingskode | ${clientName}",passwordLabel:`Ny adgangskode`,passwordPlaceholder:`Ny adgangskode`,passwordTooWeak:`Adgangskoden er for svag`,passwordsDidntMatch:`Adgangskoderne matcher ikke`,resendFailed:`Kunne ikke sende koden igen. Prøv igen.`,resendSuccess:`En ny kode er blevet sendt til din e-mail`,resendText:`Send kode igen`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,title:`Indtast nulstillingskode`,noPassword:`Adgangskode er påkrævet`}},signup:Gf,"signup-id":{"signup-id":{buttonText:`Fortsæt`,description:`Vælg en adgangskode med en blanding af store og små bogstaver, tal og symboler.`,"email-already-exists":`E-mailen er allerede optaget`,emailPlaceholder:`E-mail-adresse`,federatedConnectionButtonText:"Fortsæt med ${connectionName}","invalid-email-format":`Ugyldig e-mail`,loginActionLinkText:`Log ind`,loginActionText:`Har du allerede en konto?`,"no-email":`Indtast venligst en e-mailadresse`,pageTitle:"Tilmeld dig | ${clientName}",phonePlaceholder:`Telefonnummer`,separatorText:`eller`,title:`Vælg adgangskode`,usernamePlaceholder:`Brugernavn`}},"signup-password":{"signup-password":{buttonText:`Fortsæt`,description:`Vælg en adgangskode med en blanding af store og små bogstaver, tal og symboler.`,hidePasswordText:`Skjul adgangskode`,"no-password":`Adgangskode er påkrævet`,pageTitle:"Tilmeld dig | ${clientName}","password-policy-not-met":`Adgangskoden opfylder ikke kravene`,"password-too-weak":`Adgangskoden er for svag`,passwordPlaceholder:`Adgangskode`,showPasswordText:`Vis adgangskode`,title:`Vælg adgangskode`,passwordTooShort:"Adgangskoden skal være mindst ${minLength} tegn",passwordMissingLowercase:`Adgangskoden skal indeholde mindst ét lille bogstav`,passwordMissingUppercase:`Adgangskoden skal indeholde mindst ét stort bogstav`,passwordMissingNumber:`Adgangskoden skal indeholde mindst ét tal`,passwordMissingSpecial:`Adgangskoden skal indeholde mindst ét specialtegn`,passwordReused:`Adgangskoden er blevet brugt for nylig og kan ikke genbruges`,passwordContainsPersonalInfo:`Adgangskoden må ikke indeholde personlige oplysninger som dit navn eller e-mail`,passwordContainsForbiddenWord:`Adgangskoden indeholder et forbudt ord`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Log ind`,codeLabel:`Bekræftelseskode`,codePlaceholder:`Indtast kode`,defaultDescription:`Indtast bekræftelseskoden, der blev sendt til din telefon`,description:"Vi sendte en kode til ${username}","invalid-code":`Ugyldig kode`,noCode:`Indtast venligst bekræftelseskoden`,pageTitle:"Indtast kode | ${clientName}",resendText:`Send koden igen`,sessionExpired:`Din session er udløbet. Prøv venligst igen.`,title:`Tjek din telefon`,unexpectedError:`Der opstod en uventet fejl`,tooManyRequests:`For mange forsøg. Vent et øjeblik, og prøv igen.`}},status:Kf},Qre=c({common:()=>qf,consent:()=>Jf,default:()=>$re,invitation:()=>Yf,login:()=>Xf,mfa:()=>Zf,organizations:()=>$f,passkeys:()=>Qf,signup:()=>ep,status:()=>tp}),qf={common:{alertListTitle:`Alerts`,backText:`Back`,backToLoginText:`Back to login`,cancelText:`Cancel`,closeText:`Close`,contactSupportText:`Contact Support`,continueText:`Continue`,copyrightText:"© ${currentYear} ${companyName}",errorText:`An error occurred`,hidePasswordText:`Hide password`,loadingText:`Loading...`,orText:`or`,privacyPolicyText:`Privacy Policy`,showPasswordText:`Show password`,termsOfServiceText:`Terms of Service`,termsShortText:`Terms`,tryAgainText:`Try again`},account:{title:`Account Settings`,description:`Manage your account`,editProfileLabel:`Edit Profile`,editProfileDetail:`Name, email, phone number, and picture`,securityLabel:`Security Settings`,securityDetail:`Multi-factor authentication`,securityMethodsCountOne:"${count} method configured",securityMethodsCount:"${count} methods configured",passkeysLabel:`Passkeys`,passkeysDetail:`Sign in without a password`,passkeysCountOne:"${count} passkey registered",passkeysCount:"${count} passkeys registered",linkedAccountsLabel:`Linked Accounts`,linkedAccountsDetail:`Connect social accounts`,linkedAccountsCountOne:"${count} linked account",linkedAccountsCount:"${count} linked accounts",deleteAccountLabel:`Delete Account`,deleteAccountDetail:`Permanently delete your account and data`,logoutText:`Log Out`},"account-profile":{title:`Edit Profile`,description:`Update your personal information`,givenNameLabel:`First Name`,familyNameLabel:`Last Name`,nicknameLabel:`Nickname`,phoneNumberLabel:`Phone Number`,pictureLabel:`Profile Picture URL`,buttonText:`Save Changes`,backToAccountText:`Back to Account`,updateFailed:`Failed to update profile`},"account-delete":{title:`Delete Account`,description:`Permanently delete your account`,warningTitle:`Warning: This action is permanent`,warningText:`All your data will be permanently deleted. This includes your profile, linked accounts, and authentication methods. This action cannot be undone.`,confirmationLabel:'Type "${confirmationWord}" to confirm',buttonText:`Delete My Account`,cancelText:`Cancel`,confirmationError:'Please type "${confirmationWord}" to confirm',deleteSuccess:`Your account has been deleted`,deleteFailed:`Failed to delete account`},"account-linked":{title:`Linked Accounts`,description:`Manage your linked accounts`,noLinkedAccounts:`No linked accounts.`,unlinkButtonText:`Unlink`,backToAccountText:`Back to Account`,unlinkSuccess:`Account unlinked successfully`,unlinkFailed:`Failed to unlink account`},"account-security":{title:`Security Settings`,description:`Manage your two-factor authentication methods`,noEnrollments:`You have no two-factor authentication methods configured.`,addedOn:"Added ${date}",removeButtonText:`Remove`,addTotpLabel:`Add Authenticator App`,addTotpDetail:`Use an app like Google Authenticator or Authy`,addSmsLabel:`Add Phone (SMS)`,addSmsDetail:`Receive verification codes via text message`,typeTotp:`Authenticator App`,typePhone:`Phone (SMS)`,typeEmail:`Email`,typePush:`Push Notification`,typeWebauthn:`Security Key`,backToAccountText:`Back to Account`,enrollmentNotFound:`Enrollment not found`,removeSuccess:`Authentication method removed`,removeFailed:`Failed to remove authentication method`},"account-passkeys":{title:`Passkeys`,description:`Manage your passkeys for passwordless sign-in`,noPasskeysText:`You have no passkeys registered.`,defaultPasskeyName:`Passkey`,syncedBadgeText:`Synced`,addedOnText:"Added ${date}",renameButtonText:`Rename`,removeButtonText:`Remove`,renamePromptText:`Enter a new name for this passkey:`,addPasskeyButtonText:`Add Passkey`,backToAccountText:`Back to Account`,logoutText:`Log Out`,passkeyNotFoundText:`Passkey not found`,passkeyRemovedText:`Passkey removed`,removeFailedText:`Failed to remove passkey`,invalidNameText:`Name must be between 1 and 64 characters`,passkeyRenamedText:`Passkey renamed`,renameFailedText:`Failed to rename passkey`,startRegistrationFailedText:`Failed to start passkey registration`,missingCredentialText:`Missing credential data`,challengeExpiredText:`Challenge expired. Please try again.`,invalidCredentialText:`Invalid credential data`,verificationFailedText:`Passkey verification failed`,passkeyAddedText:`Passkey added successfully`,registrationFailedText:`Passkey registration failed. Please try again.`},"account-mfa-phone-enrollment":{title:`Set Up Phone (SMS)`,description:`Enter your phone number to receive verification codes via SMS.`,phoneLabel:`Phone number`,sendCodeButtonText:`Send Verification Code`,backToSecurityText:`Back to Security Settings`,verifyTitle:`Verify Phone Number`,verifyDescription:`Enter the verification code sent to your phone.`,codeSentText:"A verification code has been sent to ${phoneNumber}",codeSentToYourPhoneText:`A verification code has been sent to your phone`,codeLabel:`Verification code`,codePlaceholder:`Enter verification code`,verifyButtonText:`Verify & Enable`,noPhoneText:`Please enter your phone number`,invalidPhoneText:`Please enter a valid phone number`,sendCodeFailedText:`Failed to send verification code. Please try again.`,noCodeText:`Please enter the verification code`,invalidCodeText:`Invalid code. Please try again.`,sessionInvalidText:`Something went wrong. Please start the enrollment again.`},"account-mfa-totp-enrollment":{title:`Set Up Authenticator App`,description:`Scan the QR code with your authenticator app, then enter the verification code below.`,qrCodeAltText:`QR Code`,manualKeyText:`Or enter this key manually:`,codeLabel:`Verification code`,codePlaceholder:`Enter 6-digit code`,verifyButtonText:`Verify & Enable`,backToSecurityText:`Back to Security Settings`,noCodeText:`Please enter the verification code`,invalidCodeText:`Invalid code. Please try again.`,verificationFailedText:`Verification failed. Please try again.`}},Jf={consent:{buttonText:`Accept`,cancelButtonText:`Deny`,description:"${clientName} is requesting access to your account",pageTitle:"Authorize | ${clientName}",scopesTitle:"This will allow ${clientName} to:",title:"Authorize ${clientName}",accessAccountText:"wants to access your ${tenantName} account as ${userName}.",notAuthenticated:`You need to sign in to continue.`,sessionExpired:`Your session has expired. Please try again.`,consentStorageNotConfigured:`Your consent could not be saved. Please contact the application owner.`},"connect-consent":{title:`Connect application`,description:"Allow ${domain} to act on your behalf?",connectAccountText:"wants to connect to your ${tenantName} account as ${userName}.",workspaceLabel:`Workspace:`,apiLabel:`For API:`,permissionsLabel:`Requested permissions:`,localDevBadge:`Local development`,localDevTooltip:`This site is a non-production local development origin. The connection will not work outside this machine or network.`,buttonText:`Connect`,cancelText:`Cancel`,notAuthenticated:`You need to sign in to continue.`,sessionExpired:`Your session has expired. Please try again.`,workspaceSelectionRequired:`Please choose a workspace first.`,noWorkspaceAccess:`You don't have access to that workspace`,workspaceNotFound:`Workspace not found`},"connect-tenant-select":{title:`Choose a workspace`,description:"Select which ${tenantName} workspace ${domain} should connect to.",noWorkspacesDescription:`No workspaces available`,noWorkspacesText:"You don't have access to any ${tenantName} workspaces. Ask an administrator to invite you.",cancelText:`Cancel`,notAuthenticated:`You need to sign in to continue.`,sessionExpired:`Your session has expired. Please try again.`,noWorkspaceSelected:`Please choose a workspace.`,noWorkspaceAccess:`You don't have access to that workspace`}},Yf={invitation:{acceptButtonText:`Accept invitation`,description:"${inviterName} has invited you to join ${organizationName} on ${clientName}",pageTitle:"Invitation | ${clientName}",title:`You've been invited`,defaultOrganizationName:`the organization`,acceptFailed:`We couldn't finish setting up your account. Please try again.`}},Xf={login:{alertListTitle:`Alerts`,buttonText:`Continue`,description:"Log in to ${clientName}.",editEmailText:`Edit`,emailPlaceholder:`Email address`,enterACodeBtn:`Sign in with a code`,enterACodeShortBtn:`Code`,federatedConnectionButtonText:"Continue with ${connectionName}",lastUsedText:`Last used`,footerLinkText:`Sign up`,footerText:`Don't have an account?`,forgotPasswordText:`Forgot password?`,hidePasswordText:`Hide password`,invalidEmail:`Invalid email`,invalidIdentifier:`Invalid email or username`,invitationDescription:"Log in to accept ${inviterName}'s invitation to join ${companyName} on ${clientName}.",invitationTitle:`You've Been Invited!`,logoAltText:"${companyName}","no-email":`Please enter an email address`,"no-password":`Password is required`,pageTitle:"Log in | ${clientName}",passwordLoginNotAvailable:`Password authentication is not available`,passwordPlaceholder:`Password`,phonePlaceholder:`Phone number`,separatorText:`Or`,sessionExpired:`Your session has expired. Please try again.`,showPasswordText:`Show password`,signupActionLinkText:`Sign up`,signupActionText:`Don't have an account?`,title:`Welcome`,tooManyFailedLogins:`Too many failed login attempts. Please try again later.`,unverifiedEmail:`Please verify your email address before logging in`,userAccountDoesNotExist:`User account does not exist`,usernamePlaceholder:`Username or email address`,usernameTooLong:"Username must be ${max} characters or less",usernameTooShort:"Username must be at least ${min} characters",passkeyButtonText:`Sign in with a passkey`,wrongCredentials:`Wrong username or password`,userBlocked:`Your account has been blocked after multiple consecutive login attempts.`,tooManyRequests:`Too many attempts. Please wait a moment and try again.`,unexpectedError:`Something went wrong. Please try again.`}},Zf={mfa:{backupCodeText:`Use backup code`,description:`Choose a verification method`,pageTitle:"Multi-Factor Authentication | ${clientName}",title:`Verify your identity`}},Qf={"passkey-enrollment-nudge":{title:`Secure your account with a passkey`,description:`Passkeys use your device's biometrics or PIN to sign you in faster and more securely.`,enrollButtonText:`Set up passkey`,snoozeButtonText:`Maybe later`,optOutLinkText:`Don't show this again`,pageTitle:"Set Up Passkey | ${clientName}"},"passkey-enrollment":{title:`Create your passkey`,description:`Follow the prompts from your browser to create a passkey for this account.`,errorMessage:`Failed to create passkey. Please try again.`,cancelLinkText:`Skip for now`,retryButtonText:`Try again`,enrollmentComplete:`Your passkey has been set up successfully. You can close this page.`,pageTitle:"Create Passkey | ${clientName}",sessionExpired:`Your session has expired. Please try again.`,enrollmentRequired:`You need to set up a passkey to continue.`,challengeExpired:`The request has expired. Please try again.`},"passkey-challenge":{title:`Sign in with a passkey`,description:`Follow the prompts from your browser to verify your identity.`,errorMessage:`Passkey authentication failed. Please try again.`,cancelLinkText:`Back to login`,retryButtonText:`Try again`,pageTitle:"Sign In with Passkey | ${clientName}",sessionExpired:`Your session has expired. Please try again.`}},$f={organizations:{description:`Choose which organization to log in to`,pageTitle:"Select Organization | ${clientName}",searchPlaceholder:`Search organizations`,title:`Select your organization`}},ep={signup:{buttonText:`Continue`,confirmPasswordPlaceholder:`Confirm password`,description:`Sign up to continue`,"email-already-exists":`This email is already registered`,emailPlaceholder:`Email address`,federatedConnectionButtonText:"Continue with ${connectionName}",hidePasswordText:`Hide password`,"invalid-email-format":`Email is not valid.`,loginActionLinkText:`Log in`,loginActionText:`Already have an account?`,"no-email":`Please enter an email address`,"no-password":`Password is required`,"no-username":`Username is required`,pageTitle:"Sign up | ${clientName}",passwordPlaceholder:`Password`,passwordsDidntMatch:`Passwords don't match`,phonePlaceholder:`Phone number`,privacyPolicyLinkText:`Privacy Policy`,separatorText:`Or`,sessionExpired:`Your session has expired. Please try again.`,showPasswordText:`Show password`,termsOfServiceLinkText:`Terms of Service`,termsText:`By signing up, you agree to our`,title:`Create your account`,"username-already-exists":`This username is already taken`,usernamePlaceholder:`Username`,verifyEmailText:`Please check your email to verify your account`,confirmPasswordRequired:`Please confirm your password`,createUserFailed:`We couldn't create your account. Please try again.`}},tp={status:{continueButtonText:`Continue`,errorTitle:`Error`,pageTitle:"Status | ${clientName}",successTitle:`Success`,title:`Status`}},$re={common:qf,consent:Jf,"device-flow":{"device-flow":{buttonText:`Continue`,codePlaceholder:`Enter code`,description:`Enter the code shown on your device`,"expired-code":`The code has expired`,"invalid-code":`The code you entered is invalid`,pageTitle:"Device Activation | ${clientName}",title:`Activate your device`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Continue`,codeLabel:`Verification Code`,codePlaceholder:`Enter code`,defaultDescription:`Enter the verification code sent to your email`,description:"We sent a code to ${email}","invalid-code":`The code you entered is invalid`,noCode:`Please enter the verification code`,pageTitle:"Enter Code | ${clientName}",resendText:`Resend code`,sessionExpired:`Your session has expired. Please try again.`,title:`Check your email`,unexpectedError:`An unexpected error occurred`,usePasswordText:`Log in with password`,tooManyRequests:`Too many attempts. Please wait a moment and try again.`}},"email-verification":{"email-verification":{description:"We sent an email to ${email}",linkAlreadyUsed:`This verification link has already been used. Please request a new one.`,linkInvalid:`This verification link is invalid.`,linkInvalidOrExpired:`This verification link is invalid or has expired. Please request a new one.`,linkInvalidTitle:`Verification link not valid`,linkWrongType:`This link can't be used to verify an email.`,pageTitle:"Verify Email | ${clientName}",resendText:`Resend email`,successDescription:`Your email has been verified successfully.`,successTitle:`Email verified`,title:`Verify your email`},"email-verification-code":{buttonText:`Continue`,codeLabel:`Verification code`,codePlaceholder:`Enter 6-digit code`,defaultDescription:`Enter the code we sent to your email to verify your address and continue.`,description:"We sent a code to ${email}. Enter it to verify your email address and continue.",invalidCode:`The code you entered is invalid or has expired`,noCode:`Please enter the verification code`,pageTitle:"Verify Email | ${clientName}",resendFailed:`Failed to resend the code. Please try again.`,resendSuccess:`A new code has been sent to your email`,resendText:`Resend code`,sessionExpired:`Your session has expired. Please try again.`,title:`Verify your email`,tooManyAttempts:`Too many attempts. Please try again later.`},"email-verification-link-sent":{defaultDescription:`We sent a verification link to your email. Click the link to verify your address, then log in again.`,description:"We sent a verification link to ${email}. Click the link to verify your address, then log in again.",pageTitle:"Verify Email | ${clientName}",resendFailed:`Failed to resend the email. Please try again.`,resendSuccess:`A new verification email has been sent`,resendText:`Resend email`,title:`Check your email`}},invitation:Yf,login:Xf,"login-id":{"login-id":{alertListTitle:`Alerts`,"auth0-users-validation":`Something went wrong, please try again later`,"authentication-failure":`We are sorry, something went wrong when attempting to log in`,buttonText:`Continue`,"captcha-client-failure":`We couldn't load the security challenge. Please try again. (Error code: #{errorCode})`,"captcha-validation-failure":`We are sorry, something went wrong while validating the captcha response. Please try again.`,captchaCodePlaceholder:`Enter the code shown above`,"custom-script-error-code":`Something went wrong, please try again later.`,description:"Log in to ${clientName}.",editEmailText:`Edit`,emailPlaceholder:`Email address`,federatedConnectionButtonText:"Continue with ${connectionName}",lastUsedText:`Last used`,footerLinkText:`Sign up`,footerText:`Don't have an account?`,forgotPasswordText:`Forgot password?`,hidePasswordText:`Hide password`,"invalid-captcha":`Solve the challenge question to verify you are not a robot.`,"invalid-code":`The code you entered is invalid`,"invalid-connection":`Invalid connection`,"invalid-email-format":`Email is not valid.`,"invalid-email-phone":`Enter a valid email address or phone number. Phone numbers must include the country code.`,"invalid-email-phone-username":`Enter a valid email address, phone number or username. Phone numbers must include the country code.`,"invalid-email-username":`Enter a valid email address or username`,"invalid-expired-code":`Invalid or expired user code`,"invalid-login-id":`Invalid Login ID entered`,"invalid-phone-username":`Enter a valid phone number or username. Phone numbers must include the country code.`,"invalid-recaptcha":`Select the checkbox to verify you are not a robot.`,"invalid-username":"Username can only contain alphanumeric characters or: '${characters}'. Username should have between ${min} and ${max} characters.",invitationDescription:"Log in to accept ${inviterName}'s invitation to join ${companyName} on ${clientName}.",invitationTitle:`You've Been Invited!`,"ip-blocked":`We have detected suspicious login behavior and further attempts will be blocked. Please contact the administrator.`,logoAltText:"${companyName}","no-db-connection":`Invalid connection`,"no-email":`Please enter an email address`,"no-email-phone":`Email address or phone number is required`,"no-email-phone-username":`Phone number, username, or email address is required`,"no-email-username":`Email address or username is required`,"no-password":`Password is required`,"no-phone":`Please enter a phone number`,"no-phone-username":`Phone number or username is required`,"no-username":`Username is required`,pageTitle:"Log in | ${clientName}","password-breached":`We have detected a potential security issue with this account. To protect your account, we have prevented this login. Please reset your password to proceed.`,passwordPlaceholder:`Password`,phoneOrEmailPlaceholder:`Phone number or Email address`,phoneOrUsernameOrEmailPlaceholder:`Phone or Username or Email`,phoneOrUsernamePlaceholder:`Phone Number or Username`,phonePlaceholder:`Phone number`,"same-user-login":`Too many login attempts for this user. Please wait, and try again later.`,selectCountryCode:"Select country code, currently set to ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`Or`,sessionExpired:`Your session has expired. Please try again.`,showPasswordText:`Show password`,signupActionLinkText:`Sign up`,signupActionText:`Don't have an account?`,termsAndConditionsTemplate:'By continuing, you agree to our <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">Terms and Conditions</a>.',title:`Welcome`,"user-blocked":`Your account has been blocked after multiple consecutive login attempts.`,userAccountDoesNotExist:`User account does not exist`,usernameOnlyPlaceholder:`Username`,usernameOrEmailPlaceholder:`Username or Email address`,usernamePlaceholder:`Username or email address`,usernameTooLong:"Username must be ${max} characters or less",usernameTooShort:"Username must be at least ${min} characters","wrong-credentials":`Wrong username or password`,"wrong-email-credentials":`Wrong email or password`,"wrong-email-phone-credentials":`Incorrect email address, phone number, or password. Phone numbers must include the country code.`,"wrong-email-phone-username-credentials":`Incorrect email address, phone number, username, or password. Phone numbers must include the country code.`,"wrong-email-username-credentials":`Incorrect email address, username, or password`,"wrong-phone-credentials":`Incorrect phone number or password`,"wrong-phone-username-credentials":`Incorrect phone number, username or password. Phone numbers must include the country code.`,passkeyButtonText:`Sign in with a passkey`,"wrong-username-credentials":`Incorrect username or password`}},"login-password":{"login-password":{buttonText:`Continue`,description:"Log in to ${clientName}",forgotPasswordText:`Forgot password?`,hidePasswordText:`Hide password`,"no-password":`Password is required`,pageTitle:"Log in | ${clientName}","password-breached":`We have detected a potential security issue with this account. To protect your account, we have prevented this login. Please reset your password to proceed.`,passwordPlaceholder:`Password`,showPasswordText:`Show password`,signingInAs:"Signing in as ${email}",title:`Enter your password`,unverifiedEmail:`Please verify your email address before logging in`,"user-blocked":`Your account has been blocked after multiple consecutive login attempts.`,"wrong-credentials":`Wrong password`,sendCodeText:`Log in with a code`,sessionExpired:`Your session has expired. Please try again.`,tooManyRequests:`Too many attempts. Please wait a moment and try again.`,unexpectedError:`Something went wrong. Please try again.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`email`,authMethodEmailOrPhone:`email or phone number`,authMethodPhone:`phone number`,description:"Sign in using your ${authMethod}",emailOrPhonePlaceholder:`Email address or phone number`,emailPlaceholder:`Email address`,invalidEmail:`Please enter a valid email address`,invalidIdentifier:`Please enter a valid email address or phone number`,invalidPhone:`Please enter a valid phone number with country code`,noEmail:`Please enter your email address`,noPhone:`Please enter your phone number`,phonePlaceholder:`Phone number`,sessionExpired:`Your session has expired. Please try again.`,title:`Sign in with a code`,userAccountDoesNotExist:`User account does not exist`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Click the link in your email to sign in`,description:"We sent a link to ${username}. Click it to sign in.",resendText:`Resend link`,spamText:`Didn't receive the email? Check your spam folder.`,title:`Check your email`}},mfa:Zf,"mfa-email":{"mfa-email":{buttonText:`Continue`,codePlaceholder:`Enter code`,description:"We sent a code to ${email}","invalid-code":`The code you entered is invalid`,pageTitle:"Email Verification | ${clientName}",resendText:`Resend code`,title:`Check your email`}},"mfa-otp":{"mfa-otp":{buttonText:`Continue`,codePlaceholder:`Enter code`,description:`Enter the 6-digit code from your authenticator app`,"invalid-code":`The code you entered is invalid`,pageTitle:"Enter Code | ${clientName}",title:`Enter your code`},"mfa-totp-enrollment":{title:`Set up authenticator`,description:`Scan the QR code below with your authenticator app, then enter the 6-digit code to verify`,secretLabel:`Or enter this code manually:`,codePlaceholder:`Enter code`,continueButtonText:`Verify & Activate`,"invalid-code":`The code you entered is invalid. Please try again.`,"transaction-not-found":`Your enrollment transaction expired, you will need to start again.`,unexpectedError:`Something went wrong. Please try again.`,pageTitle:"Set up Authenticator | ${clientName}",enrollmentComplete:`MFA enrollment is complete. You can close this page.`,pickAuthenticatorText:`Try another method`,qrCodeAltText:`QR code`},"mfa-totp-challenge":{title:`Verify your identity`,description:`Enter the 6-digit code from your authenticator app`,codePlaceholder:`Enter code`,continueButtonText:`Continue`,"invalid-code":`The code you entered is invalid`,"transaction-not-found":`Your enrollment transaction expired, you will need to start again.`,unexpectedError:`Something went wrong. Please try again.`,pageTitle:"Verify Identity | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Use your phone number to log in | ${clientName}",title:`Verify Your Identity`,description:"We sent a code to ${phoneNumber}",continueButtonText:`Continue`,changePhoneText:`Choose another phone number.`,smsButtonText:`Text message`,voiceButtonText:`Voice call`,chooseMessageTypeText:`How do you want to receive the code?`,pickAuthenticatorText:`Try another method`,logoAltText:"${companyName}",codePlaceholder:`Enter code`,"send-sms-failed":`There was a problem sending the SMS`,"send-voice-failed":`There was a problem making the voice call`,"invalid-phone-format":`Phone number can only include digits.`,"invalid-phone":`It seems that your phone number is not valid. Please check and retry.`,"too-many-sms":`You have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again.`,"too-many-voice":`You have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again.`,"transaction-not-found":`Your enrollment transaction expired, you will need to start again.`,"no-phone":`Please enter a phone number`,noCode:`Please enter the verification code`,invalidCode:`The code you entered is invalid. Please try again.`,unexpectedError:`Something went wrong. Please try again.`,resendSuccess:`We sent a new code to your phone`,enrollmentComplete:`MFA enrollment is complete. You can close this page.`},"mfa-phone-enrollment":{pageTitle:"Enter your phone number to log in using a phone code | ${clientName}",title:`Secure Your Account`,description:`Enter your country code and phone number to which we can send a 6-digit code:`,continueButtonText:`Continue`,smsButtonText:`Text message`,voiceButtonText:`Voice call`,chooseMessageTypeText:`How do you want to receive the code?`,pickAuthenticatorText:`Try another method`,placeholder:`Enter your phone number`,logoAltText:"${companyName}",selectCountryCode:"Select country code, currently set to ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`There was a problem sending the SMS`,"send-voice-failed":`There was a problem making the voice call`,"sms-authenticator-error":`We couldn't send the SMS. Please try again later.`,"invalid-phone-format":`Phone number can only include digits.`,"invalid-phone":`It seems that your phone number is not valid. Please check and retry.`,"too-many-sms":`You have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again.`,"too-many-voice":`You have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again.`,"transaction-not-found":`Your enrollment transaction expired, you will need to start again.`,"no-phone":`Please enter a phone number`,"phone-is-too-short":`Phone number is too short`,"phone-is-too-long":`Phone number is too long`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Choose Verification Method | ${clientName}",title:`Choose your verification method`,description:`Select how you'd like to verify your identity`,authenticatorAppLabel:`Authenticator App`,authenticatorAppDescription:`Use your authenticator app to get a verification code`,smsLabel:`Text Message`,smsDescription:`Get a verification code sent to your phone`,passkeyLabel:`Passkey`,passkeyDescription:`Use your device's biometrics or security key`}},"mfa-push":{"mfa-push":{description:`We sent a notification to your device`,pageTitle:"Push Notification | ${clientName}",resendText:`Resend notification`,title:`Approve the request`,useCodeText:`Enter code manually`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Continue`,codePlaceholder:`Recovery code`,description:`Enter one of your recovery codes`,"invalid-code":`The recovery code you entered is invalid`,pageTitle:"Recovery Code | ${clientName}",title:`Enter recovery code`}},"mfa-voice":{"mfa-voice":{buttonText:`Call me`,codePlaceholder:`Enter code`,description:"We will call ${phoneNumber} with your code","invalid-code":`The code you entered is invalid`,pageTitle:"Voice Call | ${clientName}",title:`Receive a phone call`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Try again`,description:`Insert your security key and follow the instructions`,pageTitle:"Security Key | ${clientName}",title:`Use your security key`}},passkeys:Qf,organizations:$f,"reset-password":{"reset-password":{backToLoginText:`Back to login`,buttonText:`Continue`,codeExpired:`Your password reset code has expired. Please request a new one.`,confirmPasswordLabel:`Confirm Password`,confirmPasswordPlaceholder:`Confirm password`,description:`Enter your email to reset your password`,emailPlaceholder:`Email address`,failed:`Password reset failed. Please try again.`,"invalid-email-format":`Email is not valid.`,"no-email":`Please enter an email address`,pageTitle:"Reset Password | ${clientName}",passwordLabel:`New Password`,passwordPlaceholder:`New password`,passwordTooWeak:`Password is too weak`,passwordsDidntMatch:`Passwords don't match`,successDescription:`We have sent a password reset link to your email address.`,successTitle:`Check your email`,title:`Forgot your password?`,"user-not-found":`User not found`,noPassword:`Password is required`,sessionExpired:`Your session has expired. Please try again.`},"reset-password-code":{backToLoginText:`Back to login`,buttonText:`Reset Password`,codeLabel:`Reset Code`,codePlaceholder:`Enter 6-digit code`,confirmPasswordLabel:`Confirm Password`,confirmPasswordPlaceholder:`Confirm password`,defaultDescription:`Enter the code sent to your email and choose a new password`,description:"We sent a code to ${email}",failed:`Password reset failed. Please try again.`,invalidCode:`The code you entered is invalid or has expired`,noCode:`Please enter the reset code`,pageTitle:"Enter Reset Code | ${clientName}",passwordLabel:`New Password`,passwordPlaceholder:`New password`,passwordTooWeak:`Password is too weak`,passwordsDidntMatch:`Passwords don't match`,resendFailed:`Failed to resend the code. Please try again.`,resendSuccess:`A new code has been sent to your email`,resendText:`Resend code`,sessionExpired:`Your session has expired. Please try again.`,title:`Enter reset code`,noPassword:`Password is required`}},signup:ep,"signup-id":{"signup-id":{buttonText:`Continue`,description:`Sign up to continue`,"email-already-exists":`This email is already registered`,emailPlaceholder:`Email address`,federatedConnectionButtonText:"Continue with ${connectionName}","invalid-email-format":`Email is not valid.`,loginActionLinkText:`Log in`,loginActionText:`Already have an account?`,"no-email":`Please enter an email address`,pageTitle:"Sign up | ${clientName}",phonePlaceholder:`Phone number`,separatorText:`Or`,title:`Create your account`,usernamePlaceholder:`Username`}},"signup-password":{"signup-password":{buttonText:`Continue`,description:`Sign up to continue`,hidePasswordText:`Hide password`,"no-password":`Password is required`,pageTitle:"Sign up | ${clientName}","password-policy-not-met":`Password does not meet the requirements`,"password-too-weak":`Password is too weak`,passwordPlaceholder:`Password`,showPasswordText:`Show password`,title:`Create your password`,passwordTooShort:"Password must be at least ${minLength} characters",passwordMissingLowercase:`Password must contain at least one lowercase letter`,passwordMissingUppercase:`Password must contain at least one uppercase letter`,passwordMissingNumber:`Password must contain at least one number`,passwordMissingSpecial:`Password must contain at least one special character`,passwordReused:`Password was used recently and cannot be reused`,passwordContainsPersonalInfo:`Password cannot contain personal information like your name or email`,passwordContainsForbiddenWord:`Password contains a forbidden word`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Continue`,codeLabel:`Verification Code`,codePlaceholder:`Enter code`,defaultDescription:`Enter the verification code sent to your phone`,description:"We sent a code to ${username}","invalid-code":`The code you entered is invalid`,noCode:`Please enter the verification code`,pageTitle:"Enter Code | ${clientName}",resendText:`Resend code`,sessionExpired:`Your session has expired. Please try again.`,title:`Check your phone`,unexpectedError:`An unexpected error occurred`,tooManyRequests:`Too many attempts. Please wait a moment and try again.`}},status:tp},eie=c({common:()=>np,consent:()=>rp,default:()=>tie,invitation:()=>ip,login:()=>ap,mfa:()=>op,organizations:()=>cp,passkeys:()=>sp,signup:()=>lp,status:()=>up}),np={common:{alertListTitle:`Ilmoitukset`,backText:`Palaa takaisin`,backToLoginText:`Takaisin kirjautumiseen`,cancelText:`Palaa takaisin`,closeText:`Sulje`,contactSupportText:`Tarvitsetko apua?`,continueText:`Jatka`,copyrightText:"© ${currentYear} ${companyName}",errorText:`Jokin meni pieleen. Yritä uudelleen.`,hidePasswordText:`Piilota salasana`,loadingText:`Ladataan...`,orText:`tai`,privacyPolicyText:`Tietosuojakäytäntö`,showPasswordText:`Näytä salasana`,termsOfServiceText:`Käyttöehdot`,termsShortText:`Ehdot`,tryAgainText:`Yritä uudelleen`},account:{title:`Tilin asetukset`,description:`Hallitse tiliäsi`,editProfileLabel:`Muokkaa profiilia`,editProfileDetail:`Nimi, sähköposti, puhelinnumero ja kuva`,securityLabel:`Suojausasetukset`,securityDetail:`Monivaiheinen tunnistautuminen`,securityMethodsCountOne:"${count} menetelmä määritetty",securityMethodsCount:"${count} menetelmää määritetty",passkeysLabel:`Tunnistautumisavaimet`,passkeysDetail:`Kirjaudu ilman salasanaa`,passkeysCountOne:"${count} tunnistautumisavain rekisteröity",passkeysCount:"${count} tunnistautumisavainta rekisteröity",linkedAccountsLabel:`Linkitetyt tilit`,linkedAccountsDetail:`Yhdistä sosiaalisen median tilejä`,linkedAccountsCountOne:"${count} linkitetty tili",linkedAccountsCount:"${count} linkitettyä tiliä",deleteAccountLabel:`Poista tili`,deleteAccountDetail:`Poista tilisi ja tietosi pysyvästi`,logoutText:`Kirjaudu ulos`},"account-profile":{title:`Muokkaa profiilia`,description:`Päivitä henkilötietosi`,givenNameLabel:`Etunimi`,familyNameLabel:`Sukunimi`,nicknameLabel:`Lempinimi`,phoneNumberLabel:`Puhelinnumero`,pictureLabel:`Profiilikuvan URL-osoite`,buttonText:`Tallenna muutokset`,backToAccountText:`Takaisin tiliin`,updateFailed:`Profiilin päivittäminen epäonnistui`},"account-delete":{title:`Poista tili`,description:`Poista tilisi pysyvästi`,warningTitle:`Varoitus: Tämä toiminto on pysyvä`,warningText:`Kaikki tietosi poistetaan pysyvästi. Tämä koskee profiiliasi, linkitettyjä tilejä ja tunnistautumismenetelmiä. Toimintoa ei voi peruuttaa.`,confirmationLabel:'Vahvista kirjoittamalla "${confirmationWord}"',buttonText:`Poista tilini`,cancelText:`Peruuta`,confirmationError:'Vahvista kirjoittamalla "${confirmationWord}"',deleteSuccess:`Tilisi on poistettu`,deleteFailed:`Tilin poistaminen epäonnistui`},"account-linked":{title:`Linkitetyt tilit`,description:`Hallitse linkitettyjä tilejäsi`,noLinkedAccounts:`Ei linkitettyjä tilejä.`,unlinkButtonText:`Poista linkitys`,backToAccountText:`Takaisin tiliin`,unlinkSuccess:`Tilin linkitys poistettu`,unlinkFailed:`Linkityksen poistaminen epäonnistui`},"account-security":{title:`Suojausasetukset`,description:`Hallitse kaksivaiheisen tunnistautumisen menetelmiäsi`,noEnrollments:`Sinulla ei ole määritettyjä kaksivaiheisen tunnistautumisen menetelmiä.`,addedOn:"Lisätty ${date}",removeButtonText:`Poista`,addTotpLabel:`Lisää todennussovellus`,addTotpDetail:`Käytä esimerkiksi Google Authenticator- tai Authy-sovellusta`,addSmsLabel:`Lisää puhelin (tekstiviesti)`,addSmsDetail:`Vastaanota vahvistuskoodit tekstiviestinä`,typeTotp:`Todennussovellus`,typePhone:`Puhelin (tekstiviesti)`,typeEmail:`Sähköposti`,typePush:`Push-ilmoitus`,typeWebauthn:`Suojausavain`,backToAccountText:`Takaisin tiliin`,enrollmentNotFound:`Menetelmää ei löytynyt`,removeSuccess:`Tunnistautumismenetelmä poistettu`,removeFailed:`Tunnistautumismenetelmän poistaminen epäonnistui`},"account-passkeys":{title:`Tunnistautumisavaimet`,description:`Hallitse tunnistautumisavaimiasi salasanatonta kirjautumista varten`,noPasskeysText:`Sinulla ei ole rekisteröityjä tunnistautumisavaimia.`,defaultPasskeyName:`Tunnistautumisavain`,syncedBadgeText:`Synkronoitu`,addedOnText:"Lisätty ${date}",renameButtonText:`Nimeä uudelleen`,removeButtonText:`Poista`,renamePromptText:`Anna tälle tunnistautumisavaimelle uusi nimi:`,addPasskeyButtonText:`Lisää tunnistautumisavain`,backToAccountText:`Takaisin tiliin`,logoutText:`Kirjaudu ulos`,passkeyNotFoundText:`Tunnistautumisavainta ei löytynyt`,passkeyRemovedText:`Tunnistautumisavain poistettu`,removeFailedText:`Tunnistautumisavaimen poistaminen epäonnistui`,invalidNameText:`Nimen on oltava 1–64 merkkiä pitkä`,passkeyRenamedText:`Tunnistautumisavain nimetty uudelleen`,renameFailedText:`Tunnistautumisavaimen nimeäminen uudelleen epäonnistui`,startRegistrationFailedText:`Tunnistautumisavaimen rekisteröinnin aloittaminen epäonnistui`,missingCredentialText:`Tunnistautumisavaimen tiedot puuttuvat`,challengeExpiredText:`Pyyntö on vanhentunut. Yritä uudelleen.`,invalidCredentialText:`Tunnistautumisavaimen tiedot ovat virheelliset`,verificationFailedText:`Tunnistautumisavaimen vahvistus epäonnistui`,passkeyAddedText:`Tunnistautumisavain lisätty`,registrationFailedText:`Tunnistautumisavaimen rekisteröinti epäonnistui. Yritä uudelleen.`},"account-mfa-phone-enrollment":{title:`Ota puhelin käyttöön (tekstiviesti)`,description:`Syötä puhelinnumerosi saadaksesi vahvistuskoodit tekstiviestillä.`,phoneLabel:`Puhelinnumero`,sendCodeButtonText:`Lähetä vahvistuskoodi`,backToSecurityText:`Takaisin suojausasetuksiin`,verifyTitle:`Vahvista puhelinnumero`,verifyDescription:`Syötä puhelimeesi lähetetty vahvistuskoodi.`,codeSentText:"Vahvistuskoodi on lähetetty numeroon ${phoneNumber}",codeSentToYourPhoneText:`Vahvistuskoodi on lähetetty puhelimeesi`,codeLabel:`Vahvistuskoodi`,codePlaceholder:`Syötä vahvistuskoodi`,verifyButtonText:`Vahvista ja ota käyttöön`,noPhoneText:`Syötä puhelinnumerosi`,invalidPhoneText:`Syötä kelvollinen puhelinnumero`,sendCodeFailedText:`Vahvistuskoodin lähettäminen epäonnistui. Yritä uudelleen.`,noCodeText:`Syötä vahvistuskoodi`,invalidCodeText:`Virheellinen koodi. Yritä uudelleen.`,sessionInvalidText:`Jokin meni pieleen. Aloita rekisteröinti uudelleen.`},"account-mfa-totp-enrollment":{title:`Ota todentajasovellus käyttöön`,description:`Skannaa QR-koodi todentajasovelluksellasi ja syötä sitten vahvistuskoodi alle.`,qrCodeAltText:`QR-koodi`,manualKeyText:`Tai syötä tämä avain manuaalisesti:`,codeLabel:`Vahvistuskoodi`,codePlaceholder:`Syötä 6-numeroinen koodi`,verifyButtonText:`Vahvista ja ota käyttöön`,backToSecurityText:`Takaisin suojausasetuksiin`,noCodeText:`Syötä vahvistuskoodi`,invalidCodeText:`Virheellinen koodi. Yritä uudelleen.`,verificationFailedText:`Vahvistus epäonnistui. Yritä uudelleen.`}},rp={consent:{buttonText:`Hyväksy`,cancelButtonText:`Hylkää`,description:"${clientName} pyytää pääsyä tilillesi",pageTitle:"Valtuuta | ${clientName}",scopesTitle:"Tämä sallii sovelluksen ${clientName}:",title:"Valtuuta ${clientName}",accessAccountText:"haluaa käyttää ${tenantName}-tiliäsi käyttäjänä ${userName}.",notAuthenticated:`Kirjaudu sisään jatkaaksesi.`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,consentStorageNotConfigured:`Suostumustasi ei voitu tallentaa. Ota yhteyttä sovelluksen omistajaan.`},"connect-consent":{title:`Yhdistä sovellus`,description:"Sallitaanko ${domain} toimia puolestasi?",connectAccountText:"haluaa yhdistää ${tenantName}-tiliisi käyttäjänä ${userName}.",workspaceLabel:`Työtila:`,apiLabel:`Rajapinta:`,permissionsLabel:`Pyydetyt oikeudet:`,localDevBadge:`Paikallinen kehitys`,localDevTooltip:`Tämä sivusto on paikallinen kehitysympäristö, ei tuotanto. Yhteys ei toimi tämän laitteen tai verkon ulkopuolella.`,buttonText:`Yhdistä`,cancelText:`Peruuta`,notAuthenticated:`Kirjaudu sisään jatkaaksesi.`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,workspaceSelectionRequired:`Valitse ensin työtila.`,noWorkspaceAccess:`Sinulla ei ole pääsyä tähän työtilaan`,workspaceNotFound:`Työtilaa ei löytynyt`},"connect-tenant-select":{title:`Valitse työtila`,description:"Valitse, mihin ${tenantName}-työtilaan ${domain} yhdistetään.",noWorkspacesDescription:`Ei käytettävissä olevia työtiloja`,noWorkspacesText:"Sinulla ei ole pääsyä yhteenkään ${tenantName}-työtilaan. Pyydä ylläpitäjää kutsumaan sinut.",cancelText:`Peruuta`,notAuthenticated:`Kirjaudu sisään jatkaaksesi.`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,noWorkspaceSelected:`Valitse työtila.`,noWorkspaceAccess:`Sinulla ei ole pääsyä tähän työtilaan`}},ip={invitation:{acceptButtonText:`Hyväksy kutsu`,description:"${inviterName} on kutsunut sinut liittymään organisaatioon ${organizationName} palvelussa ${clientName}",pageTitle:"Kutsu | ${clientName}",title:`Sinut on kutsuttu`,defaultOrganizationName:`(tuntematon)`,acceptFailed:`Tilin käyttöönottoa ei voitu viimeistellä. Yritä uudelleen.`}},ap={login:{alertListTitle:`Ilmoitukset`,buttonText:`Jatka`,description:"Kirjaudu sisään ${clientName}.",editEmailText:`Muokkaa`,emailPlaceholder:`Sähköpostiosoite`,enterACodeBtn:`Kirjaudu koodilla`,enterACodeShortBtn:`Koodi`,federatedConnectionButtonText:"Jatka palvelulla ${connectionName}",lastUsedText:`Viimeksi käytetty`,footerLinkText:`Rekisteröidy`,footerText:`Eikö sinulla ole tiliä?`,forgotPasswordText:`Unohditko salasanan?`,hidePasswordText:`Piilota salasana`,invalidEmail:`Virheellinen sähköpostiosoite`,invalidIdentifier:`Virheellinen sähköpostiosoite tai käyttäjänimi`,invitationDescription:"Kirjaudu sisään hyväksyäksesi käyttäjän ${inviterName} kutsun liittyä palveluun ${companyName} sovelluksessa ${clientName}.",invitationTitle:`Sinut on kutsuttu!`,logoAltText:"${companyName}","no-email":`Sähköpostiosoite vaaditaan`,"no-password":`Salasana vaaditaan`,pageTitle:"Kirjaudu sisään | ${clientName}",passwordLoginNotAvailable:`Salasanakirjautuminen ei ole käytettävissä`,passwordPlaceholder:`Salasana`,phonePlaceholder:`Puhelinnumero`,separatorText:`tai`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,showPasswordText:`Näytä salasana`,signupActionLinkText:`Rekisteröidy`,signupActionText:`Eikö sinulla ole tiliä?`,title:`Tervetuloa`,tooManyFailedLogins:`Liian monta epäonnistunutta kirjautumisyritystä. Yritä myöhemmin uudelleen.`,unverifiedEmail:`Vahvista sähköpostiosoitteesi ennen kirjautumista`,userAccountDoesNotExist:`Käyttäjätiliä ei ole olemassa`,usernamePlaceholder:`Käyttäjänimi tai sähköpostiosoite`,usernameTooLong:"Käyttäjänimen on oltava enintään ${max} merkkiä",usernameTooShort:"Käyttäjänimen on oltava vähintään ${min} merkkiä",wrongCredentials:`Väärä käyttäjänimi tai salasana`,passkeyButtonText:`Kirjaudu sisään passkey:llä`,userBlocked:`Tilisi on estetty useiden peräkkäisten kirjautumisyritysten jälkeen.`,tooManyRequests:`Liian monta yritystä. Odota hetki ja yritä uudelleen.`,unexpectedError:`Jokin meni pieleen. Yritä uudelleen.`}},op={mfa:{backupCodeText:`Käytä varakoodia`,description:`Valitse vahvistusmenetelmä`,pageTitle:"Monivaiheinen tunnistautuminen | ${clientName}",title:`Vahvista henkilöllisyytesi`}},sp={"passkey-enrollment-nudge":{title:`Suojaa tilisi tunnistautumisavaimella`,description:`Tunnistautumisavaimet käyttävät laitteesi biometriikkaa tai PIN-koodia kirjautuaksesi nopeammin ja turvallisemmin.`,enrollButtonText:`Määritä tunnistautumisavain`,snoozeButtonText:`Ehkä myöhemmin`,optOutLinkText:`Älä näytä tätä uudelleen`,pageTitle:"Määritä Tunnistautumisavain | ${clientName}"},"passkey-enrollment":{title:`Luo tunnistautumisavain`,description:`Seuraa selaimesi ohjeita luodaksesi tunnistautumisavaimen tälle tilille.`,errorMessage:`Tunnistautumisavaimen luominen epäonnistui. Yritä uudelleen.`,cancelLinkText:`Ohita toistaiseksi`,retryButtonText:`Yritä uudelleen`,enrollmentComplete:`Tunnistautumisavaimesi on määritetty onnistuneesti. Voit sulkea tämän sivun.`,pageTitle:"Luo Tunnistautumisavain | ${clientName}",sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,enrollmentRequired:`Sinun on luotava tunnistautumisavain jatkaaksesi.`,challengeExpired:`Pyyntö on vanhentunut. Yritä uudelleen.`},"passkey-challenge":{title:`Kirjaudu sisään passkey:llä`,description:`Noudata selaimesi ohjeita henkilöllisyytesi vahvistamiseksi.`,errorMessage:`Passkey-todennus epäonnistui. Yritä uudelleen.`,cancelLinkText:`Takaisin kirjautumiseen`,retryButtonText:`Yritä uudelleen`,pageTitle:"Kirjaudu sisään passkey:llä | ${clientName}",sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`}},cp={organizations:{description:`Valitse organisaatio, johon haluat kirjautua`,pageTitle:"Valitse organisaatio | ${clientName}",searchPlaceholder:`Hae organisaatioita`,title:`Valitse organisaatiosi`}},lp={signup:{buttonText:`Rekisteröityminen`,confirmPasswordPlaceholder:`Vahvista salasana`,description:`Valitse salasana, jossa on isoja ja pieniä kirjaimia, numeroita ja symboleja.`,"email-already-exists":`Sähköposti on jo varattu`,emailPlaceholder:`Sähköpostiosoite`,federatedConnectionButtonText:"Jatka palvelulla ${connectionName}",hidePasswordText:`Piilota salasana`,"invalid-email-format":`Virheellinen sähköpostiosoite`,loginActionLinkText:`Kirjaudu sisään`,loginActionText:`Onko sinulla jo tili?`,"no-email":`Sähköpostiosoite vaaditaan`,"no-password":`Salasana vaaditaan`,"no-username":`Käyttäjänimi vaaditaan`,pageTitle:"Rekisteröidy | ${clientName}",passwordPlaceholder:`Salasana`,passwordsDidntMatch:`Salasanat eivät täsmää`,phonePlaceholder:`Puhelinnumero`,privacyPolicyLinkText:`Tietosuojakäytäntö`,separatorText:`tai`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,showPasswordText:`Näytä salasana`,termsOfServiceLinkText:`Käyttöehdot`,termsText:`Rekisteröitymällä hyväksyt`,title:`Valitse salasana`,"username-already-exists":`Tämä käyttäjänimi on jo varattu`,usernamePlaceholder:`Käyttäjänimi`,verifyEmailText:`Tarkista sähköpostisi vahvistaaksesi tilisi`,confirmPasswordRequired:`Vahvista salasanasi`,createUserFailed:`Tilin luominen epäonnistui. Yritä uudelleen.`}},up={status:{continueButtonText:`Jatka`,errorTitle:`Virhe`,pageTitle:"Tila | ${clientName}",successTitle:`Onnistui`,title:`Tila`}},tie={common:np,consent:rp,"device-flow":{"device-flow":{buttonText:`Jatka`,codePlaceholder:`Syötä koodi`,description:`Syötä laitteessasi näkyvä koodi`,"expired-code":`Koodi on vanhentunut`,"invalid-code":`Syöttämäsi koodi on virheellinen`,pageTitle:"Laitteen aktivointi | ${clientName}",title:`Aktivoi laitteesi`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Kirjaudu sisään`,codeLabel:`Vahvistuskoodi`,codePlaceholder:`Syötä koodi`,defaultDescription:`Syötä sähköpostiisi lähetetty vahvistuskoodi`,description:"Lähetimme koodin osoitteeseen ${email}","invalid-code":`Virheellinen koodi`,noCode:`Syötä vahvistuskoodi`,pageTitle:"Syötä koodi | ${clientName}",resendText:`Lähetä koodi uudelleen`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,title:`Tarkista sähköpostisi`,unexpectedError:`Odottamaton virhe tapahtui`,usePasswordText:`Kirjaudu salasanalla`,tooManyRequests:`Liian monta yritystä. Odota hetki ja yritä uudelleen.`}},"email-verification":{"email-verification":{description:"Lähetimme sähköpostin osoitteeseen ${email}",linkAlreadyUsed:`Vahvistuslinkki on jo käytetty. Pyydä uusi linkki.`,linkInvalid:`Vahvistuslinkki on virheellinen.`,linkInvalidOrExpired:`Vahvistuslinkki on virheellinen tai vanhentunut. Pyydä uusi linkki.`,linkInvalidTitle:`Vahvistuslinkki ei kelpaa`,linkWrongType:`Tällä linkillä ei voi vahvistaa sähköpostiosoitetta.`,pageTitle:"Vahvista sähköposti | ${clientName}",resendText:`Lähetä koodi uudelleen`,successDescription:`Sähköpostiosoitteesi on vahvistettu onnistuneesti.`,successTitle:`Sähköposti vahvistettu`,title:`Vahvista sähköpostiosoitteesi`},"email-verification-code":{buttonText:`Jatka`,codeLabel:`Vahvistuskoodi`,codePlaceholder:`Syötä 6-numeroinen koodi`,defaultDescription:`Syötä sähköpostiisi lähettämämme koodi vahvistaaksesi osoitteesi ja jatkaaksesi.`,description:"Lähetimme koodin osoitteeseen ${email}. Syötä se vahvistaaksesi sähköpostiosoitteesi ja jatkaaksesi.",invalidCode:`Koodi on virheellinen tai vanhentunut`,noCode:`Syötä vahvistuskoodi`,pageTitle:"Vahvista sähköposti | ${clientName}",resendFailed:`Koodin uudelleenlähetys epäonnistui. Yritä uudelleen.`,resendSuccess:`Uusi koodi on lähetetty sähköpostiisi`,resendText:`Lähetä koodi uudelleen`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,title:`Vahvista sähköpostiosoitteesi`,tooManyAttempts:`Liian monta yritystä. Yritä myöhemmin uudelleen.`},"email-verification-link-sent":{defaultDescription:`Lähetimme vahvistuslinkin sähköpostiisi. Vahvista osoitteesi napsauttamalla linkkiä ja kirjaudu sitten uudelleen sisään.`,description:"Lähetimme vahvistuslinkin osoitteeseen ${email}. Vahvista osoitteesi napsauttamalla linkkiä ja kirjaudu sitten uudelleen sisään.",pageTitle:"Vahvista sähköposti | ${clientName}",resendFailed:`Sähköpostin uudelleenlähetys epäonnistui. Yritä uudelleen.`,resendSuccess:`Uusi vahvistusviesti on lähetetty`,resendText:`Lähetä sähköposti uudelleen`,title:`Tarkista sähköpostisi`}},invitation:ip,login:ap,"login-id":{"login-id":{alertListTitle:`Ilmoitukset`,"auth0-users-validation":`Jokin meni pieleen, yritä myöhemmin uudelleen`,"authentication-failure":`Valitettavasti jokin meni pieleen kirjautumisyrityksen aikana`,buttonText:`Jatka`,"captcha-client-failure":`Turvatarkistuksen lataaminen epäonnistui. Yritä uudelleen. (Virhekoodi: #{errorCode})`,"captcha-validation-failure":`Valitettavasti jokin meni pieleen captcha-vastauksen tarkistuksessa. Yritä uudelleen.`,captchaCodePlaceholder:`Syötä yllä näkyvä koodi`,"custom-script-error-code":`Jokin meni pieleen, yritä myöhemmin uudelleen.`,description:"Kirjaudu sisään ${clientName}.",editEmailText:`Muokkaa`,emailPlaceholder:`Sähköpostiosoite`,federatedConnectionButtonText:"Jatka palvelulla ${connectionName}",lastUsedText:`Viimeksi käytetty`,footerLinkText:`Rekisteröidy`,footerText:`Eikö sinulla ole tiliä?`,forgotPasswordText:`Unohditko salasanan?`,hidePasswordText:`Piilota salasana`,"invalid-captcha":`Ratkaise haaste varmistaaksesi, ettet ole robotti.`,"invalid-code":`Virheellinen koodi`,"invalid-connection":`Virheellinen yhteys`,"invalid-email-format":`Virheellinen sähköpostiosoite`,"invalid-email-phone":`Syötä kelvollinen sähköpostiosoite tai puhelinnumero. Puhelinnumeron tulee sisältää maatunnus.`,"invalid-email-phone-username":`Syötä kelvollinen sähköpostiosoite, puhelinnumero tai käyttäjänimi. Puhelinnumeron tulee sisältää maatunnus.`,"invalid-email-username":`Syötä kelvollinen sähköpostiosoite tai käyttäjänimi`,"invalid-expired-code":`Virheellinen tai vanhentunut käyttäjäkoodi`,"invalid-login-id":`Virheellinen kirjautumistunnus`,"invalid-phone-username":`Syötä kelvollinen puhelinnumero tai käyttäjänimi. Puhelinnumeron tulee sisältää maatunnus.`,"invalid-recaptcha":`Valitse valintaruutu varmistaaksesi, ettet ole robotti.`,"invalid-username":"Käyttäjänimi voi sisältää vain aakkosnumeerisia merkkejä tai: '${characters}'. Käyttäjänimen tulee olla ${min}–${max} merkkiä.",invitationDescription:"Kirjaudu sisään hyväksyäksesi käyttäjän ${inviterName} kutsun liittyä palveluun ${companyName} sovelluksessa ${clientName}.",invitationTitle:`Sinut on kutsuttu!`,"ip-blocked":`Olemme havainneet epäilyttävää kirjautumiskäyttäytymistä ja lisäyritykset estetään. Ota yhteyttä ylläpitäjään.`,logoAltText:"${companyName}","no-db-connection":`Virheellinen yhteys`,"no-email":`Sähköpostiosoite vaaditaan`,"no-email-phone":`Sähköpostiosoite tai puhelinnumero vaaditaan`,"no-email-phone-username":`Puhelinnumero, käyttäjänimi tai sähköpostiosoite vaaditaan`,"no-email-username":`Sähköpostiosoite tai käyttäjänimi vaaditaan`,"no-password":`Salasana vaaditaan`,"no-phone":`Syötä puhelinnumero`,"no-phone-username":`Puhelinnumero tai käyttäjänimi vaaditaan`,"no-username":`Käyttäjänimi vaaditaan`,pageTitle:"Kirjaudu sisään | ${clientName}","password-breached":`Olemme havainneet mahdollisen tietoturvaongelman tässä tilissä. Tilisi suojaamiseksi olemme estäneet tämän kirjautumisen. Vaihda salasanasi jatkaaksesi.`,passwordPlaceholder:`Salasana`,phoneOrEmailPlaceholder:`Sähköposti tai puhelinnumero`,phoneOrUsernameOrEmailPlaceholder:`Puhelin, käyttäjänimi tai sähköposti`,phoneOrUsernamePlaceholder:`Puhelinnumero tai käyttäjänimi`,phonePlaceholder:`Puhelinnumero`,"same-user-login":`Liian monta kirjautumisyritystä tälle käyttäjälle. Odota hetki ja yritä myöhemmin uudelleen.`,selectCountryCode:"Valitse maakoodi, tällä hetkellä ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`tai`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,showPasswordText:`Näytä salasana`,signupActionLinkText:`Rekisteröidy`,signupActionText:`Eikö sinulla ole tiliä?`,termsAndConditionsTemplate:'Jatkamalla hyväksyt <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">Käyttöehdot</a>.',title:`Tervetuloa`,"user-blocked":`Tilisi on estetty useiden peräkkäisten kirjautumisyritysten jälkeen.`,userAccountDoesNotExist:`Käyttäjätiliä ei ole olemassa`,usernameOnlyPlaceholder:`Käyttäjänimi`,usernameOrEmailPlaceholder:`Käyttäjänimi tai sähköpostiosoite`,usernamePlaceholder:`Käyttäjänimi`,usernameTooLong:"Käyttäjänimen on oltava enintään ${max} merkkiä",usernameTooShort:"Käyttäjänimen on oltava vähintään ${min} merkkiä","wrong-credentials":`Väärä käyttäjänimi tai salasana`,"wrong-email-credentials":`Väärä sähköpostiosoite tai salasana`,"wrong-email-phone-credentials":`Virheellinen sähköpostiosoite, puhelinnumero tai salasana. Puhelinnumeron tulee sisältää maatunnus.`,"wrong-email-phone-username-credentials":`Virheellinen sähköpostiosoite, puhelinnumero, käyttäjänimi tai salasana. Puhelinnumeron tulee sisältää maatunnus.`,"wrong-email-username-credentials":`Virheellinen sähköpostiosoite, käyttäjänimi tai salasana`,"wrong-phone-credentials":`Virheellinen puhelinnumero tai salasana`,"wrong-phone-username-credentials":`Virheellinen puhelinnumero, käyttäjänimi tai salasana. Puhelinnumeron tulee sisältää maatunnus.`,"wrong-username-credentials":`Virheellinen käyttäjänimi tai salasana`,passkeyButtonText:`Kirjaudu sisään passkey:llä`}},"login-password":{"login-password":{buttonText:`Kirjaudu sisään`,description:`Anna sähköpostiosoitteesi ja salasanasi kirjautuaksesi sisään.`,forgotPasswordText:`Unohditko salasanan?`,hidePasswordText:`Piilota salasana`,"no-password":`Salasana vaaditaan`,pageTitle:"Kirjaudu sisään | ${clientName}","password-breached":`Olemme havainneet mahdollisen tietoturvaongelman tässä tilissä. Tilisi suojaamiseksi olemme estäneet tämän kirjautumisen. Vaihda salasanasi jatkaaksesi.`,passwordPlaceholder:`Salasana`,showPasswordText:`Näytä salasana`,signingInAs:"Kirjaudutaan käyttäjänä ${email}",title:`Anna salasana`,unverifiedEmail:`Vahvista sähköpostiosoitteesi ennen kirjautumista`,"user-blocked":`Tilisi on estetty useiden peräkkäisten kirjautumisyritysten jälkeen.`,"wrong-credentials":`Väärä salasana`,sendCodeText:`Kirjaudu koodilla`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,tooManyRequests:`Liian monta yritystä. Odota hetki ja yritä uudelleen.`,unexpectedError:`Jokin meni pieleen. Yritä uudelleen.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`sähköposti`,authMethodEmailOrPhone:`sähköposti tai puhelinnumero`,authMethodPhone:`puhelinnumero`,description:"Kirjaudu sisään käyttämällä ${authMethod}",emailOrPhonePlaceholder:`Sähköpostiosoite tai puhelinnumero`,emailPlaceholder:`Sähköpostiosoite`,invalidEmail:`Syötä kelvollinen sähköpostiosoite`,invalidIdentifier:`Syötä kelvollinen sähköpostiosoite tai puhelinnumero`,invalidPhone:`Syötä kelvollinen puhelinnumero maatunnuksella`,noEmail:`Syötä sähköpostiosoitteesi`,noPhone:`Syötä puhelinnumerosi`,phonePlaceholder:`Puhelinnumero`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,title:`Kirjaudu koodilla`,userAccountDoesNotExist:`Käyttäjätiliä ei ole olemassa`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Napsauta sähköpostissasi olevaa linkkiä kirjautuaksesi sisään`,description:"Lähetimme linkin osoitteeseen ${username}. Napsauta sitä kirjautuaksesi.",resendText:`Lähetä linkki uudelleen`,spamText:`Etkö saanut sähköpostia? Tarkista roskapostikansiosi.`,title:`Tarkista sähköpostisi`}},mfa:op,"mfa-email":{"mfa-email":{buttonText:`Jatka`,codePlaceholder:`Syötä koodi`,description:"Lähetimme koodin osoitteeseen ${email}","invalid-code":`Syöttämäsi koodi on virheellinen`,pageTitle:"Sähköpostivahvistus | ${clientName}",resendText:`Lähetä koodi uudelleen`,title:`Tarkista sähköpostisi`}},"mfa-otp":{"mfa-otp":{buttonText:`Jatka`,codePlaceholder:`Syötä koodi`,description:`Syötä 6-numeroinen koodi todentajasovelluksestasi`,"invalid-code":`Syöttämäsi koodi on virheellinen`,pageTitle:"Syötä koodi | ${clientName}",title:`Syötä koodisi`},"mfa-totp-enrollment":{title:`Ota todentajasovellus käyttöön`,description:`Skannaa alla oleva QR-koodi todentajasovelluksellasi ja syötä sitten 6-numeroinen koodi vahvistaaksesi`,secretLabel:`Tai syötä tämä koodi manuaalisesti:`,codePlaceholder:`Syötä koodi`,continueButtonText:`Vahvista ja aktivoi`,"invalid-code":`Syöttämäsi koodi on virheellinen. Yritä uudelleen.`,"transaction-not-found":`Rekisteröintitapahtumasi on vanhentunut, sinun täytyy aloittaa alusta.`,pageTitle:"Ota todentaja käyttöön | ${clientName}",unexpectedError:`Jokin meni pieleen. Yritä uudelleen.`,enrollmentComplete:`MFA-rekisteröinti on valmis. Voit sulkea tämän sivun.`,pickAuthenticatorText:`Kokeile toista menetelmää`,qrCodeAltText:`QR-koodi`},"mfa-totp-challenge":{title:`Vahvista henkilöllisyytesi`,description:`Syötä 6-numeroinen koodi todentajasovelluksestasi`,codePlaceholder:`Syötä koodi`,continueButtonText:`Jatka`,"invalid-code":`Syöttämäsi koodi on virheellinen`,"transaction-not-found":`Rekisteröintitapahtumasi on vanhentunut, sinun täytyy aloittaa alusta.`,unexpectedError:`Jokin meni pieleen. Yritä uudelleen.`,pageTitle:"Vahvista henkilöllisyys | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Käytä puhelinnumeroasi kirjautumiseen | ${clientName}",title:`Vahvista henkilöllisyytesi`,description:"Lähetimme koodin numeroon ${phoneNumber}",continueButtonText:`Jatka`,changePhoneText:`Valitse toinen puhelinnumero.`,smsButtonText:`Tekstiviesti`,voiceButtonText:`Äänipuhelu`,chooseMessageTypeText:`Miten haluat vastaanottaa koodin?`,pickAuthenticatorText:`Kokeile toista menetelmää`,logoAltText:"${companyName}",codePlaceholder:`Syötä koodi`,"send-sms-failed":`Tekstiviestin lähettämisessä oli ongelma`,"send-voice-failed":`Äänipuhelun soittamisessa oli ongelma`,"invalid-phone-format":`Puhelinnumero voi sisältää vain numeroita.`,"invalid-phone":`Puhelinnumerosi ei vaikuta olevan kelvollinen. Tarkista ja yritä uudelleen.`,"too-many-sms":`Olet ylittänyt tunnin enimmäismäärän puhelinviestejä. Odota muutama minuutti ja yritä uudelleen.`,"too-many-voice":`Olet ylittänyt tunnin enimmäismäärän puhelinviestejä. Odota muutama minuutti ja yritä uudelleen.`,"transaction-not-found":`Rekisteröintitapahtumasi on vanhentunut, sinun täytyy aloittaa alusta.`,"no-phone":`Syötä puhelinnumero`,noCode:`Syötä vahvistuskoodi`,invalidCode:`Antamasi koodi on virheellinen. Yritä uudelleen.`,unexpectedError:`Jokin meni pieleen. Yritä uudelleen.`,resendSuccess:`Lähetimme uuden koodin puhelimeesi`,enrollmentComplete:`MFA-rekisteröinti on valmis. Voit sulkea tämän sivun.`},"mfa-phone-enrollment":{pageTitle:"Syötä puhelinnumerosi kirjautuaksesi puhelinkoodilla | ${clientName}",title:`Suojaa tilisi`,description:`Syötä maakoodisi ja puhelinnumero, johon voimme lähettää 6-numeroisen koodin:`,continueButtonText:`Jatka`,smsButtonText:`Tekstiviesti`,voiceButtonText:`Äänipuhelu`,chooseMessageTypeText:`Miten haluat vastaanottaa koodin?`,pickAuthenticatorText:`Kokeile toista menetelmää`,placeholder:`Syötä puhelinnumerosi`,logoAltText:"${companyName}",selectCountryCode:"Valitse maakoodi, tällä hetkellä asetettu ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`Tekstiviestin lähettämisessä oli ongelma`,"send-voice-failed":`Äänipuhelun soittamisessa oli ongelma`,"sms-authenticator-error":`Emme pystyneet lähettämään tekstiviestiä. Yritä myöhemmin uudelleen.`,"invalid-phone-format":`Puhelinnumero voi sisältää vain numeroita.`,"invalid-phone":`Puhelinnumerosi ei vaikuta olevan kelvollinen. Tarkista ja yritä uudelleen.`,"too-many-sms":`Olet ylittänyt tunnin enimmäismäärän puhelinviestejä. Odota muutama minuutti ja yritä uudelleen.`,"too-many-voice":`Olet ylittänyt tunnin enimmäismäärän puhelinviestejä. Odota muutama minuutti ja yritä uudelleen.`,"transaction-not-found":`Rekisteröintitapahtumasi on vanhentunut, sinun täytyy aloittaa alusta.`,"no-phone":`Syötä puhelinnumero`,"phone-is-too-short":`Puhelinnumero on liian lyhyt`,"phone-is-too-long":`Puhelinnumero on liian pitkä`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Valitse vahvistusmenetelmä | ${clientName}",title:`Valitse vahvistusmenetelmä`,description:`Valitse, miten haluat vahvistaa henkilöllisyytesi`,authenticatorAppLabel:`Todennussovellus`,authenticatorAppDescription:`Käytä todennussovellusta vahvistuskoodin saamiseksi`,smsLabel:`Tekstiviesti`,smsDescription:`Saat vahvistuskoodin puhelimeesi tekstiviestillä`,passkeyLabel:`Tunnistautumisavain`,passkeyDescription:`Käytä laitteesi biometriikkaa tai suojausavainta`}},"mfa-push":{"mfa-push":{description:`Lähetimme ilmoituksen laitteellesi`,pageTitle:"Push-ilmoitus | ${clientName}",resendText:`Lähetä ilmoitus uudelleen`,title:`Hyväksy pyyntö`,useCodeText:`Syötä koodi manuaalisesti`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Jatka`,codePlaceholder:`Palautuskoodi`,description:`Syötä yksi palautuskoodeistasi`,"invalid-code":`Syöttämäsi palautuskoodi on virheellinen`,pageTitle:"Palautuskoodi | ${clientName}",title:`Syötä palautuskoodi`}},"mfa-voice":{"mfa-voice":{buttonText:`Soita minulle`,codePlaceholder:`Syötä koodi`,description:"Soitamme numeroon ${phoneNumber} ja kerromme koodisi","invalid-code":`Syöttämäsi koodi on virheellinen`,pageTitle:"Äänipuhelu | ${clientName}",title:`Vastaanota puhelu`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Yritä uudelleen`,description:`Aseta turva-avaimesi ja seuraa ohjeita`,pageTitle:"Turva-avain | ${clientName}",title:`Käytä turva-avaintasi`}},passkeys:sp,organizations:cp,"reset-password":{"reset-password":{backToLoginText:`Takaisin kirjautumiseen`,buttonText:`Lähetä salasanan palautussähköposti`,codeExpired:`Salasanan palautuskoodisi on vanhentunut. Pyydä uusi koodi.`,confirmPasswordLabel:`Vahvista salasana`,confirmPasswordPlaceholder:`Vahvista salasana`,description:`Napsauta alla olevaa painiketta, niin lähetämme ohjeet salasanasi palauttamiseen.`,emailPlaceholder:`Sähköpostiosoite`,failed:`Salasanan vaihto epäonnistui. Yritä uudelleen.`,"invalid-email-format":`Virheellinen sähköpostiosoite`,"no-email":`Sähköpostiosoite vaaditaan`,pageTitle:"Vaihda salasana | ${clientName}",passwordLabel:`Uusi salasana`,passwordPlaceholder:`Uusi salasana`,passwordTooWeak:`Salasana on liian heikko`,passwordsDidntMatch:`Salasanat eivät täsmää`,successDescription:`Olemme lähettäneet salasanan palautuslinkin sähköpostiosoitteeseesi.`,successTitle:`Salasanan palautussähköposti lähetetty`,title:`Unohditko salasanan?`,"user-not-found":`Käyttäjää ei löytynyt`,noPassword:`Salasana vaaditaan`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`},"reset-password-code":{backToLoginText:`Takaisin kirjautumiseen`,buttonText:`Vaihda salasana`,codeLabel:`Palautuskoodi`,codePlaceholder:`Syötä 6-numeroinen koodi`,confirmPasswordLabel:`Vahvista salasana`,confirmPasswordPlaceholder:`Vahvista salasana`,defaultDescription:`Syötä sähköpostiisi lähetetty koodi ja valitse uusi salasana`,description:"Lähetimme koodin osoitteeseen ${email}",failed:`Salasanan vaihto epäonnistui. Yritä uudelleen.`,invalidCode:`Syöttämäsi koodi on virheellinen tai vanhentunut`,noCode:`Syötä palautuskoodi`,pageTitle:"Syötä palautuskoodi | ${clientName}",passwordLabel:`Uusi salasana`,passwordPlaceholder:`Uusi salasana`,passwordTooWeak:`Salasana on liian heikko`,passwordsDidntMatch:`Salasanat eivät täsmää`,resendFailed:`Koodin uudelleenlähetys epäonnistui. Yritä uudelleen.`,resendSuccess:`Uusi koodi on lähetetty sähköpostiisi`,resendText:`Lähetä koodi uudelleen`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,title:`Syötä palautuskoodi`,noPassword:`Salasana vaaditaan`}},signup:lp,"signup-id":{"signup-id":{buttonText:`Jatka`,description:`Valitse salasana, jossa on isoja ja pieniä kirjaimia, numeroita ja symboleja.`,"email-already-exists":`Sähköposti on jo varattu`,emailPlaceholder:`Sähköpostiosoite`,federatedConnectionButtonText:"Jatka palvelulla ${connectionName}","invalid-email-format":`Virheellinen sähköpostiosoite`,loginActionLinkText:`Kirjaudu sisään`,loginActionText:`Onko sinulla jo tili?`,"no-email":`Sähköpostiosoite vaaditaan`,pageTitle:"Rekisteröidy | ${clientName}",phonePlaceholder:`Puhelinnumero`,separatorText:`tai`,title:`Valitse salasana`,usernamePlaceholder:`Käyttäjänimi`}},"signup-password":{"signup-password":{buttonText:`Jatka`,description:`Valitse salasana, jossa on isoja ja pieniä kirjaimia, numeroita ja symboleja.`,hidePasswordText:`Piilota salasana`,"no-password":`Salasana vaaditaan`,pageTitle:"Rekisteröidy | ${clientName}","password-policy-not-met":`Salasana ei täytä vaatimuksia`,"password-too-weak":`Salasana on liian heikko`,passwordPlaceholder:`Salasana`,showPasswordText:`Näytä salasana`,title:`Valitse salasana`,passwordTooShort:"Salasanan on oltava vähintään ${minLength} merkkiä",passwordMissingLowercase:`Salasanan on sisällettävä vähintään yksi pieni kirjain`,passwordMissingUppercase:`Salasanan on sisällettävä vähintään yksi iso kirjain`,passwordMissingNumber:`Salasanan on sisällettävä vähintään yksi numero`,passwordMissingSpecial:`Salasanan on sisällettävä vähintään yksi erikoismerkki`,passwordReused:`Salasanaa on käytetty äskettäin, eikä sitä voi käyttää uudelleen`,passwordContainsPersonalInfo:`Salasana ei saa sisältää henkilötietoja, kuten nimeäsi tai sähköpostiosoitettasi`,passwordContainsForbiddenWord:`Salasana sisältää kielletyn sanan`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Jatka`,codeLabel:`Vahvistuskoodi`,codePlaceholder:`Syötä koodi`,defaultDescription:`Syötä puhelimeesi lähetetty vahvistuskoodi`,description:"Lähetimme koodin käyttäjälle ${username}","invalid-code":`Virheellinen koodi`,noCode:`Syötä vahvistuskoodi`,pageTitle:"Syötä koodi | ${clientName}",resendText:`Lähetä koodi uudelleen`,sessionExpired:`Istuntosi on vanhentunut. Yritä uudelleen.`,title:`Tarkista puhelimesi`,unexpectedError:`Odottamaton virhe tapahtui`,tooManyRequests:`Liian monta yritystä. Odota hetki ja yritä uudelleen.`}},status:up},nie=c({common:()=>dp,consent:()=>fp,default:()=>rie,invitation:()=>pp,login:()=>mp,mfa:()=>hp,organizations:()=>_p,passkeys:()=>gp,signup:()=>vp,status:()=>yp}),dp={common:{alertListTitle:`Avvisi`,backText:`Torna indietro`,backToLoginText:`Torna al login`,cancelText:`Annulla`,closeText:`Chiudi`,contactSupportText:`Contatta l'assistenza`,continueText:`Continua`,copyrightText:"© ${currentYear} ${companyName}",errorText:`Si è verificato un errore`,hidePasswordText:`Nascondi password`,loadingText:`Caricamento...`,orText:`o`,privacyPolicyText:`Informativa sulla privacy`,showPasswordText:`Mostra password`,termsOfServiceText:`Termini di servizio`,termsShortText:`Termini`,tryAgainText:`Riprova`},account:{title:`Impostazioni account`,description:`Gestisci il tuo account`,editProfileLabel:`Modifica profilo`,editProfileDetail:`Nome, email, numero di telefono e immagine`,securityLabel:`Impostazioni di sicurezza`,securityDetail:`Autenticazione a più fattori`,securityMethodsCountOne:"${count} metodo configurato",securityMethodsCount:"${count} metodi configurati",passkeysLabel:`Passkey`,passkeysDetail:`Accedi senza password`,passkeysCountOne:"${count} passkey registrata",passkeysCount:"${count} passkey registrate",linkedAccountsLabel:`Account collegati`,linkedAccountsDetail:`Collega account social`,linkedAccountsCountOne:"${count} account collegato",linkedAccountsCount:"${count} account collegati",deleteAccountLabel:`Elimina account`,deleteAccountDetail:`Elimina definitivamente il tuo account e i tuoi dati`,logoutText:`Esci`},"account-profile":{title:`Modifica profilo`,description:`Aggiorna i tuoi dati personali`,givenNameLabel:`Nome`,familyNameLabel:`Cognome`,nicknameLabel:`Soprannome`,phoneNumberLabel:`Numero di telefono`,pictureLabel:`URL dell'immagine del profilo`,buttonText:`Salva modifiche`,backToAccountText:`Torna all'account`,updateFailed:`Impossibile aggiornare il profilo`},"account-delete":{title:`Elimina account`,description:`Elimina definitivamente il tuo account`,warningTitle:`Attenzione: questa azione è definitiva`,warningText:`Tutti i tuoi dati verranno eliminati definitivamente, inclusi profilo, account collegati e metodi di autenticazione. Questa azione non può essere annullata.`,confirmationLabel:'Digita "${confirmationWord}" per confermare',buttonText:`Elimina il mio account`,cancelText:`Annulla`,confirmationError:'Digita "${confirmationWord}" per confermare',deleteSuccess:`Il tuo account è stato eliminato`,deleteFailed:`Impossibile eliminare l'account`},"account-linked":{title:`Account collegati`,description:`Gestisci i tuoi account collegati`,noLinkedAccounts:`Nessun account collegato.`,unlinkButtonText:`Scollega`,backToAccountText:`Torna all'account`,unlinkSuccess:`Account scollegato`,unlinkFailed:`Impossibile scollegare l'account`},"account-security":{title:`Impostazioni di sicurezza`,description:`Gestisci i metodi di autenticazione a due fattori`,noEnrollments:`Non hai configurato alcun metodo di autenticazione a due fattori.`,addedOn:"Aggiunto il ${date}",removeButtonText:`Rimuovi`,addTotpLabel:`Aggiungi app di autenticazione`,addTotpDetail:`Usa un'app come Google Authenticator o Authy`,addSmsLabel:`Aggiungi telefono (SMS)`,addSmsDetail:`Ricevi i codici di verifica tramite SMS`,typeTotp:`App di autenticazione`,typePhone:`Telefono (SMS)`,typeEmail:`Email`,typePush:`Notifica push`,typeWebauthn:`Chiave di sicurezza`,backToAccountText:`Torna all'account`,enrollmentNotFound:`Metodo non trovato`,removeSuccess:`Metodo di autenticazione rimosso`,removeFailed:`Impossibile rimuovere il metodo di autenticazione`},"account-passkeys":{title:`Passkey`,description:`Gestisci le tue passkey per l'accesso senza password`,noPasskeysText:`Non hai passkey registrate.`,defaultPasskeyName:`Passkey`,syncedBadgeText:`Sincronizzata`,addedOnText:"Aggiunta il ${date}",renameButtonText:`Rinomina`,removeButtonText:`Rimuovi`,renamePromptText:`Inserisci un nuovo nome per questa passkey:`,addPasskeyButtonText:`Aggiungi passkey`,backToAccountText:`Torna all'account`,logoutText:`Esci`,passkeyNotFoundText:`Passkey non trovata`,passkeyRemovedText:`Passkey rimossa`,removeFailedText:`Impossibile rimuovere la passkey`,invalidNameText:`Il nome deve contenere da 1 a 64 caratteri`,passkeyRenamedText:`Passkey rinominata`,renameFailedText:`Impossibile rinominare la passkey`,startRegistrationFailedText:`Impossibile avviare la registrazione della passkey`,missingCredentialText:`Dati della passkey mancanti`,challengeExpiredText:`La richiesta è scaduta. Riprova.`,invalidCredentialText:`Dati della passkey non validi`,verificationFailedText:`Verifica della passkey non riuscita`,passkeyAddedText:`Passkey aggiunta correttamente`,registrationFailedText:`Registrazione della passkey non riuscita. Riprova.`},"account-mfa-phone-enrollment":{title:`Configura telefono (SMS)`,description:`Inserisci il tuo numero di telefono per ricevere i codici di verifica via SMS.`,phoneLabel:`Numero di telefono`,sendCodeButtonText:`Invia codice di verifica`,backToSecurityText:`Torna alle impostazioni di sicurezza`,verifyTitle:`Verifica numero di telefono`,verifyDescription:`Inserisci il codice di verifica inviato al tuo telefono.`,codeSentText:"È stato inviato un codice di verifica a ${phoneNumber}",codeSentToYourPhoneText:`È stato inviato un codice di verifica al tuo telefono`,codeLabel:`Codice di verifica`,codePlaceholder:`Inserisci il codice di verifica`,verifyButtonText:`Verifica e attiva`,noPhoneText:`Inserisci il tuo numero di telefono`,invalidPhoneText:`Inserisci un numero di telefono valido`,sendCodeFailedText:`Invio del codice di verifica non riuscito. Riprova.`,noCodeText:`Inserisci il codice di verifica`,invalidCodeText:`Codice non valido. Riprova.`,sessionInvalidText:`Qualcosa è andato storto. Ricomincia la registrazione.`},"account-mfa-totp-enrollment":{title:`Configura l'app di autenticazione`,description:`Scansiona il codice QR con la tua app di autenticazione, poi inserisci il codice di verifica qui sotto.`,qrCodeAltText:`Codice QR`,manualKeyText:`Oppure inserisci questa chiave manualmente:`,codeLabel:`Codice di verifica`,codePlaceholder:`Inserisci il codice a 6 cifre`,verifyButtonText:`Verifica e attiva`,backToSecurityText:`Torna alle impostazioni di sicurezza`,noCodeText:`Inserisci il codice di verifica`,invalidCodeText:`Codice non valido. Riprova.`,verificationFailedText:`Verifica non riuscita. Riprova.`}},fp={consent:{buttonText:`Accetta`,cancelButtonText:`Rifiuta`,description:"${clientName} richiede l'accesso al tuo account",pageTitle:"Autorizza | ${clientName}",scopesTitle:"Questo permetterà a ${clientName} di:",title:"Autorizza ${clientName}",accessAccountText:"vuole accedere al tuo account ${tenantName} come ${userName}.",notAuthenticated:`Devi accedere per continuare.`,sessionExpired:`La sessione è scaduta. Riprova.`,consentStorageNotConfigured:`Impossibile salvare il tuo consenso. Contatta il proprietario dell'applicazione.`},"connect-consent":{title:`Collega applicazione`,description:"Consentire a ${domain} di agire per tuo conto?",connectAccountText:"vuole connettersi al tuo account ${tenantName} come ${userName}.",workspaceLabel:`Spazio di lavoro:`,apiLabel:`Per l'API:`,permissionsLabel:`Autorizzazioni richieste:`,localDevBadge:`Sviluppo locale`,localDevTooltip:`Questo sito è un ambiente di sviluppo locale, non di produzione. La connessione non funzionerà al di fuori di questo computer o di questa rete.`,buttonText:`Collega`,cancelText:`Annulla`,notAuthenticated:`Devi accedere per continuare.`,sessionExpired:`La sessione è scaduta. Riprova.`,workspaceSelectionRequired:`Scegli prima uno spazio di lavoro.`,noWorkspaceAccess:`Non hai accesso a questo spazio di lavoro`,workspaceNotFound:`Spazio di lavoro non trovato`},"connect-tenant-select":{title:`Scegli uno spazio di lavoro`,description:"Seleziona lo spazio di lavoro ${tenantName} a cui ${domain} deve connettersi.",noWorkspacesDescription:`Nessuno spazio di lavoro disponibile`,noWorkspacesText:"Non hai accesso a nessuno spazio di lavoro ${tenantName}. Chiedi a un amministratore di invitarti.",cancelText:`Annulla`,notAuthenticated:`Devi accedere per continuare.`,sessionExpired:`La sessione è scaduta. Riprova.`,noWorkspaceSelected:`Scegli uno spazio di lavoro.`,noWorkspaceAccess:`Non hai accesso a questo spazio di lavoro`}},pp={invitation:{acceptButtonText:`Accetta invito`,description:"${inviterName} ti ha invitato a unirti a ${organizationName} su ${clientName}",pageTitle:"Invito | ${clientName}",title:`Sei stato invitato`,defaultOrganizationName:`un'organizzazione`,acceptFailed:`Non è stato possibile completare la configurazione del tuo account. Riprova.`}},mp={login:{alertListTitle:`Avvisi`,buttonText:`Continua`,description:"Accedi a ${clientName}.",editEmailText:`Modifica`,emailPlaceholder:`Indirizzo e-mail`,enterACodeBtn:`Accedi con un codice`,enterACodeShortBtn:`Codice`,federatedConnectionButtonText:"Continua con ${connectionName}",lastUsedText:`Ultimo utilizzato`,footerLinkText:`Iscriviti`,footerText:`Non hai un account?`,forgotPasswordText:`Hai dimenticato la password?`,hidePasswordText:`Nascondi password`,invalidEmail:`Email non valida`,invalidIdentifier:`Email o nome utente non valido`,invitationDescription:"Accedi per accettare l'invito di ${inviterName} a unirti a ${companyName} su ${clientName}.",invitationTitle:`Sei stato invitato!`,logoAltText:"${companyName}","no-email":`Inserisci un indirizzo email`,"no-password":`La password è obbligatoria`,pageTitle:"Accedi | ${clientName}",passwordLoginNotAvailable:`L'autenticazione con password non è disponibile`,passwordPlaceholder:`Password`,phonePlaceholder:`Numero di telefono`,separatorText:`o`,sessionExpired:`La sessione è scaduta. Riprova.`,showPasswordText:`Mostra password`,signupActionLinkText:`Iscriviti`,signupActionText:`Non hai un account?`,title:`Benvenuto`,tooManyFailedLogins:`Troppi tentativi di accesso falliti. Riprova più tardi.`,unverifiedEmail:`Verifica il tuo indirizzo email prima di accedere`,userAccountDoesNotExist:`L'account utente non esiste`,usernamePlaceholder:`Nome utente o indirizzo email`,usernameTooLong:"Il nome utente deve avere al massimo ${max} caratteri",usernameTooShort:"Il nome utente deve avere almeno ${min} caratteri",wrongCredentials:`Nome utente o password errati`,passkeyButtonText:`Accedi con una passkey`,userBlocked:`Il tuo account è stato bloccato dopo diversi tentativi di accesso consecutivi.`,tooManyRequests:`Troppi tentativi. Attendi qualche istante e riprova.`,unexpectedError:`Qualcosa è andato storto. Riprova.`}},hp={mfa:{backupCodeText:`Usa codice di backup`,description:`Scegli un metodo di verifica`,pageTitle:"Autenticazione a più fattori | ${clientName}",title:`Verifica la tua identità`}},gp={"passkey-enrollment-nudge":{title:`Proteggi il tuo account con una passkey`,description:`Le passkey utilizzano la biometria o il PIN del tuo dispositivo per accedere più velocemente e in modo più sicuro.`,enrollButtonText:`Configura passkey`,snoozeButtonText:`Forse più tardi`,optOutLinkText:`Non mostrare più`,pageTitle:"Configura Passkey | ${clientName}"},"passkey-enrollment":{title:`Crea la tua passkey`,description:`Segui le istruzioni del browser per creare una passkey per questo account.`,errorMessage:`Creazione della passkey non riuscita. Riprova.`,cancelLinkText:`Salta per ora`,retryButtonText:`Riprova`,enrollmentComplete:`La tua passkey è stata configurata con successo. Puoi chiudere questa pagina.`,pageTitle:"Crea Passkey | ${clientName}",sessionExpired:`La sessione è scaduta. Riprova.`,enrollmentRequired:`Devi configurare una passkey per continuare.`,challengeExpired:`La richiesta è scaduta. Riprova.`},"passkey-challenge":{title:`Accedi con passkey`,description:`Segui le istruzioni del browser per verificare la tua identità.`,errorMessage:`Autenticazione con passkey non riuscita. Riprova.`,cancelLinkText:`Torna al login`,retryButtonText:`Riprova`,pageTitle:"Accedi con passkey | ${clientName}",sessionExpired:`La sessione è scaduta. Riprova.`}},_p={organizations:{description:`Scegli a quale organizzazione accedere`,pageTitle:"Seleziona organizzazione | ${clientName}",searchPlaceholder:`Cerca organizzazioni`,title:`Seleziona la tua organizzazione`}},vp={signup:{buttonText:`Iscriviti`,confirmPasswordPlaceholder:`Conferma password`,description:`Registrati per continuare`,"email-already-exists":`Questa email è già registrata`,emailPlaceholder:`Indirizzo e-mail`,federatedConnectionButtonText:"Continua con ${connectionName}",hidePasswordText:`Nascondi password`,"invalid-email-format":`Email non valida`,loginActionLinkText:`Accedi`,loginActionText:`Hai già un account?`,"no-email":`Inserisci un indirizzo email`,"no-password":`La password è obbligatoria`,"no-username":`Il nome utente è obbligatorio`,pageTitle:"Registrati | ${clientName}",passwordPlaceholder:`Password`,passwordsDidntMatch:`Le password non corrispondono`,phonePlaceholder:`Numero di telefono`,privacyPolicyLinkText:`Informativa sulla privacy`,separatorText:`o`,sessionExpired:`La sessione è scaduta. Riprova.`,showPasswordText:`Mostra password`,termsOfServiceLinkText:`Termini di servizio`,termsText:`Registrandoti, accetti i nostri`,title:`Crea il tuo account`,"username-already-exists":`Questo nome utente è già in uso`,usernamePlaceholder:`Nome utente`,verifyEmailText:`Controlla la tua email per verificare il tuo account`,confirmPasswordRequired:`Conferma la password`,createUserFailed:`Non è stato possibile creare il tuo account. Riprova.`}},yp={status:{continueButtonText:`Continua`,errorTitle:`Errore`,pageTitle:"Stato | ${clientName}",successTitle:`Operazione riuscita`,title:`Stato`}},rie={common:dp,consent:fp,"device-flow":{"device-flow":{buttonText:`Continua`,codePlaceholder:`Inserisci il codice`,description:`Inserisci il codice mostrato sul tuo dispositivo`,"expired-code":`Il codice è scaduto`,"invalid-code":`Il codice inserito non è valido`,pageTitle:"Attivazione dispositivo | ${clientName}",title:`Attiva il tuo dispositivo`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Continua`,codeLabel:`Codice di verifica`,codePlaceholder:`Inserisci il codice`,defaultDescription:`Inserisci il codice di verifica inviato alla tua email`,description:"Abbiamo inviato un codice a ${email}","invalid-code":`Codice non valido`,noCode:`Inserisci il codice di verifica`,pageTitle:"Inserisci il codice | ${clientName}",resendText:`Reinvio del codice`,sessionExpired:`La sessione è scaduta. Riprova.`,title:`Controlla la tua email`,unexpectedError:`Si è verificato un errore imprevisto`,usePasswordText:`Accedi con la password`,tooManyRequests:`Troppi tentativi. Attendi qualche istante e riprova.`}},"email-verification":{"email-verification":{description:"Abbiamo inviato un'email a ${email}",linkAlreadyUsed:`Questo link di verifica è già stato usato. Richiedine uno nuovo.`,linkInvalid:`Questo link di verifica non è valido.`,linkInvalidOrExpired:`Questo link di verifica non è valido o è scaduto. Richiedine uno nuovo.`,linkInvalidTitle:`Link di verifica non valido`,linkWrongType:`Questo link non può essere usato per verificare un indirizzo email.`,pageTitle:"Verifica email | ${clientName}",resendText:`Reinvia email`,successDescription:`La tua email è stata verificata con successo.`,successTitle:`Email verificata`,title:`Verificare l'e-mail`},"email-verification-code":{buttonText:`Continua`,codeLabel:`Codice di verifica`,codePlaceholder:`Inserisci il codice a 6 cifre`,defaultDescription:`Inserisci il codice che ti abbiamo inviato via e-mail per verificare il tuo indirizzo e continuare.`,description:"Abbiamo inviato un codice a ${email}. Inseriscilo per verificare il tuo indirizzo e-mail e continuare.",invalidCode:`Il codice inserito non è valido o è scaduto`,noCode:`Inserisci il codice di verifica`,pageTitle:"Verifica e-mail | ${clientName}",resendFailed:`Impossibile inviare nuovamente il codice. Riprova.`,resendSuccess:`Un nuovo codice è stato inviato alla tua e-mail`,resendText:`Invia di nuovo il codice`,sessionExpired:`La sessione è scaduta. Riprova.`,title:`Verifica la tua e-mail`,tooManyAttempts:`Troppi tentativi. Riprova più tardi.`},"email-verification-link-sent":{defaultDescription:`Ti abbiamo inviato un link di verifica via e-mail. Fai clic sul link per verificare il tuo indirizzo, quindi accedi di nuovo.`,description:"Abbiamo inviato un link di verifica a ${email}. Fai clic sul link per verificare il tuo indirizzo, quindi accedi di nuovo.",pageTitle:"Verifica e-mail | ${clientName}",resendFailed:`Impossibile inviare nuovamente l'e-mail. Riprova.`,resendSuccess:`È stata inviata una nuova e-mail di verifica`,resendText:`Invia di nuovo l'e-mail`,title:`Controlla la tua e-mail`}},invitation:pp,login:mp,"login-id":{"login-id":{alertListTitle:`Avvisi`,"auth0-users-validation":`Qualcosa è andato storto, riprova più tardi`,"authentication-failure":`Siamo spiacenti, si è verificato un errore durante il tentativo di accesso`,buttonText:`Continua`,"captcha-client-failure":`Non è stato possibile caricare la verifica di sicurezza. Riprova. (Codice errore: #{errorCode})`,"captcha-validation-failure":`Siamo spiacenti, si è verificato un errore durante la convalida della risposta captcha. Riprova.`,captchaCodePlaceholder:`Inserisci il codice mostrato sopra`,"custom-script-error-code":`Qualcosa è andato storto, riprova più tardi.`,description:"Accedi a ${clientName}.",editEmailText:`Modifica`,emailPlaceholder:`Indirizzo e-mail`,federatedConnectionButtonText:"Continua con ${connectionName}",lastUsedText:`Ultimo utilizzato`,footerLinkText:`Iscriviti`,footerText:`Non hai un account?`,forgotPasswordText:`Hai dimenticato la password?`,hidePasswordText:`Nascondi password`,"invalid-captcha":`Risolvi la domanda di verifica per confermare che non sei un robot.`,"invalid-code":`Codice non valido`,"invalid-connection":`Connessione non valida`,"invalid-email-format":`Email non valida`,"invalid-email-phone":`Inserisci un indirizzo email o un numero di telefono valido. I numeri di telefono devono includere il prefisso internazionale.`,"invalid-email-phone-username":`Inserisci un indirizzo email, un numero di telefono o un nome utente valido. I numeri di telefono devono includere il prefisso internazionale.`,"invalid-email-username":`Inserisci un indirizzo email o un nome utente valido`,"invalid-expired-code":`Codice utente non valido o scaduto`,"invalid-login-id":`ID di accesso non valido`,"invalid-phone-username":`Inserisci un numero di telefono o un nome utente valido. I numeri di telefono devono includere il prefisso internazionale.`,"invalid-recaptcha":`Seleziona la casella per confermare che non sei un robot.`,"invalid-username":"Il nome utente può contenere solo caratteri alfanumerici o: '${characters}'. Il nome utente deve avere tra ${min} e ${max} caratteri.",invitationDescription:"Accedi per accettare l'invito di ${inviterName} a unirti a ${companyName} su ${clientName}.",invitationTitle:`Sei stato invitato!`,"ip-blocked":`Abbiamo rilevato un comportamento di accesso sospetto e ulteriori tentativi saranno bloccati. Contatta l'amministratore.`,logoAltText:"${companyName}","no-db-connection":`Connessione non valida`,"no-email":`Inserisci un indirizzo email`,"no-email-phone":`È richiesto un indirizzo email o un numero di telefono`,"no-email-phone-username":`È richiesto un numero di telefono, un nome utente o un indirizzo email`,"no-email-username":`È richiesto un indirizzo email o un nome utente`,"no-password":`La password è obbligatoria`,"no-phone":`Inserisci un numero di telefono`,"no-phone-username":`È richiesto un numero di telefono o un nome utente`,"no-username":`Il nome utente è obbligatorio`,pageTitle:"Accedi | ${clientName}","password-breached":`Abbiamo rilevato un potenziale problema di sicurezza con questo account. Per proteggere il tuo account, abbiamo impedito questo accesso. Reimposta la password per procedere.`,passwordPlaceholder:`Password`,phoneOrEmailPlaceholder:`Indirizzo e-mail o numero di telefono`,phoneOrUsernameOrEmailPlaceholder:`Telefono, nome utente o email`,phoneOrUsernamePlaceholder:`Numero di telefono o nome utente`,phonePlaceholder:`Numero di telefono`,"same-user-login":`Troppi tentativi di accesso per questo utente. Attendi e riprova più tardi.`,selectCountryCode:"Seleziona prefisso paese, attualmente impostato su ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`o`,sessionExpired:`La sessione è scaduta. Riprova.`,showPasswordText:`Mostra password`,signupActionLinkText:`Iscriviti`,signupActionText:`Non hai un account?`,termsAndConditionsTemplate:'Continuando, accetti i nostri <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">Termini e condizioni</a>.',title:`Benvenuto`,"user-blocked":`Il tuo account è stato bloccato dopo diversi tentativi di accesso consecutivi.`,userAccountDoesNotExist:`L'account utente non esiste`,usernameOnlyPlaceholder:`Nome utente`,usernameOrEmailPlaceholder:`Nome utente o indirizzo email`,usernamePlaceholder:`Nome utente`,usernameTooLong:"Il nome utente deve avere al massimo ${max} caratteri",usernameTooShort:"Il nome utente deve avere almeno ${min} caratteri","wrong-credentials":`Nome utente o password errati`,"wrong-email-credentials":`Email o password errati`,"wrong-email-phone-credentials":`Indirizzo email, numero di telefono o password errati. I numeri di telefono devono includere il prefisso internazionale.`,"wrong-email-phone-username-credentials":`Indirizzo email, numero di telefono, nome utente o password errati. I numeri di telefono devono includere il prefisso internazionale.`,"wrong-email-username-credentials":`Indirizzo email, nome utente o password errati`,"wrong-phone-credentials":`Numero di telefono o password errati`,"wrong-phone-username-credentials":`Numero di telefono, nome utente o password errati. I numeri di telefono devono includere il prefisso internazionale.`,"wrong-username-credentials":`Nome utente o password errati`,passkeyButtonText:`Accedi con una passkey`}},"login-password":{"login-password":{buttonText:`Accedi`,description:"Accedi a ${clientName}",forgotPasswordText:`Hai dimenticato la password?`,hidePasswordText:`Nascondi password`,"no-password":`La password è obbligatoria`,pageTitle:"Accedi | ${clientName}","password-breached":`Abbiamo rilevato un potenziale problema di sicurezza con questo account. Per proteggere il tuo account, abbiamo impedito questo accesso. Reimposta la password per procedere.`,passwordPlaceholder:`Password`,showPasswordText:`Mostra password`,signingInAs:"Accesso come ${email}",title:`Inserire la password`,unverifiedEmail:`Verifica il tuo indirizzo email prima di accedere`,"user-blocked":`Il tuo account è stato bloccato dopo diversi tentativi di accesso consecutivi.`,"wrong-credentials":`Password errata`,sendCodeText:`Accedi con un codice`,sessionExpired:`La sessione è scaduta. Riprova.`,tooManyRequests:`Troppi tentativi. Attendi qualche istante e riprova.`,unexpectedError:`Qualcosa è andato storto. Riprova.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`email`,authMethodEmailOrPhone:`email o numero di telefono`,authMethodPhone:`numero di telefono`,description:"Accedi usando il tuo ${authMethod}",emailOrPhonePlaceholder:`Indirizzo email o numero di telefono`,emailPlaceholder:`Indirizzo e-mail`,invalidEmail:`Inserisci un indirizzo email valido`,invalidIdentifier:`Inserisci un indirizzo email o un numero di telefono valido`,invalidPhone:`Inserisci un numero di telefono valido con il prefisso internazionale`,noEmail:`Inserisci il tuo indirizzo email`,noPhone:`Inserisci il tuo numero di telefono`,phonePlaceholder:`Numero di telefono`,sessionExpired:`La sessione è scaduta. Riprova.`,title:`Accedi con un codice`,userAccountDoesNotExist:`L'account utente non esiste`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Clicca il link nella tua email per accedere`,description:"Abbiamo inviato un link a ${username}. Cliccalo per accedere.",resendText:`Reinvia link`,spamText:`Non hai ricevuto l'email? Controlla la cartella spam.`,title:`Controlla la tua email`}},mfa:hp,"mfa-email":{"mfa-email":{buttonText:`Continua`,codePlaceholder:`Inserisci il codice`,description:"Abbiamo inviato un codice a ${email}","invalid-code":`Il codice inserito non è valido`,pageTitle:"Verifica email | ${clientName}",resendText:`Reinvia codice`,title:`Controlla la tua email`}},"mfa-otp":{"mfa-otp":{buttonText:`Continua`,codePlaceholder:`Inserisci il codice`,description:`Inserisci il codice a 6 cifre dalla tua app di autenticazione`,"invalid-code":`Il codice inserito non è valido`,pageTitle:"Inserisci il codice | ${clientName}",title:`Inserisci il tuo codice`},"mfa-totp-enrollment":{title:`Configura l'autenticatore`,description:`Scansiona il codice QR qui sotto con la tua app di autenticazione, poi inserisci il codice a 6 cifre per verificare`,secretLabel:`Oppure inserisci questo codice manualmente:`,codePlaceholder:`Inserisci il codice`,continueButtonText:`Verifica e attiva`,"invalid-code":`Il codice inserito non è valido. Riprova.`,"transaction-not-found":`La tua transazione di registrazione è scaduta, dovrai ricominciare.`,pageTitle:"Configura autenticatore | ${clientName}",unexpectedError:`Qualcosa è andato storto. Riprova.`,enrollmentComplete:`La registrazione MFA è completata. Puoi chiudere questa pagina.`,pickAuthenticatorText:`Prova un altro metodo`,qrCodeAltText:`Codice QR`},"mfa-totp-challenge":{title:`Verifica la tua identità`,description:`Inserisci il codice a 6 cifre dalla tua app di autenticazione`,codePlaceholder:`Inserisci il codice`,continueButtonText:`Continua`,"invalid-code":`Il codice inserito non è valido`,"transaction-not-found":`La tua transazione di registrazione è scaduta, dovrai ricominciare.`,unexpectedError:`Qualcosa è andato storto. Riprova.`,pageTitle:"Verifica identità | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Usa il tuo numero di telefono per accedere | ${clientName}",title:`Verifica la tua identità`,description:"Abbiamo inviato un codice a ${phoneNumber}",continueButtonText:`Continua`,changePhoneText:`Scegli un altro numero di telefono.`,smsButtonText:`Messaggio di testo`,voiceButtonText:`Chiamata vocale`,chooseMessageTypeText:`Come vuoi ricevere il codice?`,pickAuthenticatorText:`Prova un altro metodo`,logoAltText:"${companyName}",codePlaceholder:`Inserisci il codice`,"send-sms-failed":`Si è verificato un problema nell'invio dell'SMS`,"send-voice-failed":`Si è verificato un problema nell'effettuare la chiamata vocale`,"invalid-phone-format":`Il numero di telefono può contenere solo cifre.`,"invalid-phone":`Sembra che il tuo numero di telefono non sia valido. Controlla e riprova.`,"too-many-sms":`Hai superato il numero massimo di messaggi telefonici all'ora. Attendi qualche minuto e riprova.`,"too-many-voice":`Hai superato il numero massimo di messaggi telefonici all'ora. Attendi qualche minuto e riprova.`,"transaction-not-found":`La tua transazione di registrazione è scaduta, dovrai ricominciare.`,"no-phone":`Inserisci un numero di telefono`,noCode:`Inserisci il codice di verifica`,invalidCode:`Il codice inserito non è valido. Riprova.`,unexpectedError:`Qualcosa è andato storto. Riprova.`,resendSuccess:`Abbiamo inviato un nuovo codice al tuo telefono`,enrollmentComplete:`La registrazione MFA è completata. Puoi chiudere questa pagina.`},"mfa-phone-enrollment":{pageTitle:"Inserisci il tuo numero di telefono per accedere con un codice telefonico | ${clientName}",title:`Proteggi il tuo account`,description:`Inserisci il prefisso del paese e il numero di telefono a cui possiamo inviare un codice a 6 cifre:`,continueButtonText:`Continua`,smsButtonText:`Messaggio di testo`,voiceButtonText:`Chiamata vocale`,chooseMessageTypeText:`Come vuoi ricevere il codice?`,pickAuthenticatorText:`Prova un altro metodo`,placeholder:`Inserisci il tuo numero di telefono`,logoAltText:"${companyName}",selectCountryCode:"Seleziona prefisso paese, attualmente impostato su ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`Si è verificato un problema nell'invio dell'SMS`,"send-voice-failed":`Si è verificato un problema nell'effettuare la chiamata vocale`,"sms-authenticator-error":`Non siamo riusciti a inviare l'SMS. Riprova più tardi.`,"invalid-phone-format":`Il numero di telefono può contenere solo cifre.`,"invalid-phone":`Sembra che il tuo numero di telefono non sia valido. Controlla e riprova.`,"too-many-sms":`Hai superato il numero massimo di messaggi telefonici all'ora. Attendi qualche minuto e riprova.`,"too-many-voice":`Hai superato il numero massimo di messaggi telefonici all'ora. Attendi qualche minuto e riprova.`,"transaction-not-found":`La tua transazione di registrazione è scaduta, dovrai ricominciare.`,"no-phone":`Inserisci un numero di telefono`,"phone-is-too-short":`Il numero di telefono è troppo corto`,"phone-is-too-long":`Il numero di telefono è troppo lungo`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Scegli il metodo di verifica | ${clientName}",title:`Scegli il metodo di verifica`,description:`Seleziona come vuoi verificare la tua identità`,authenticatorAppLabel:`App di autenticazione`,authenticatorAppDescription:`Usa la tua app di autenticazione per ottenere un codice di verifica`,smsLabel:`Messaggio di testo`,smsDescription:`Ricevi un codice di verifica inviato al tuo telefono`,passkeyLabel:`Passkey`,passkeyDescription:`Usa la biometria del tuo dispositivo o una chiave di sicurezza`}},"mfa-push":{"mfa-push":{description:`Abbiamo inviato una notifica al tuo dispositivo`,pageTitle:"Notifica push | ${clientName}",resendText:`Reinvia notifica`,title:`Approva la richiesta`,useCodeText:`Inserisci il codice manualmente`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Continua`,codePlaceholder:`Codice di recupero`,description:`Inserisci uno dei tuoi codici di recupero`,"invalid-code":`Il codice di recupero inserito non è valido`,pageTitle:"Codice di recupero | ${clientName}",title:`Inserisci il codice di recupero`}},"mfa-voice":{"mfa-voice":{buttonText:`Chiamami`,codePlaceholder:`Inserisci il codice`,description:"Chiameremo ${phoneNumber} con il tuo codice","invalid-code":`Il codice inserito non è valido`,pageTitle:"Chiamata vocale | ${clientName}",title:`Ricevi una telefonata`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Riprova`,description:`Inserisci la tua chiave di sicurezza e segui le istruzioni`,pageTitle:"Chiave di sicurezza | ${clientName}",title:`Usa la tua chiave di sicurezza`}},passkeys:gp,organizations:_p,"reset-password":{"reset-password":{backToLoginText:`Torna al login`,buttonText:`Continua`,codeExpired:`Il codice di reimpostazione della password è scaduto. Richiedine uno nuovo.`,confirmPasswordLabel:`Conferma password`,confirmPasswordPlaceholder:`Conferma password`,description:`Inserisci la tua email per reimpostare la password`,emailPlaceholder:`Indirizzo e-mail`,failed:`Reimpostazione della password non riuscita. Riprova.`,"invalid-email-format":`Email non valida`,"no-email":`Inserisci un indirizzo email`,pageTitle:"Reimposta password | ${clientName}",passwordLabel:`Nuova password`,passwordPlaceholder:`Nuova password`,passwordTooWeak:`La password è troppo debole`,passwordsDidntMatch:`Le password non corrispondono`,successDescription:`Abbiamo inviato un link per reimpostare la password al tuo indirizzo email.`,successTitle:`Controlla la tua email`,title:`Hai dimenticato la password?`,"user-not-found":`Utente non trovato`,noPassword:`La password è obbligatoria`,sessionExpired:`La sessione è scaduta. Riprova.`},"reset-password-code":{backToLoginText:`Torna al login`,buttonText:`Reimposta password`,codeLabel:`Codice di reimpostazione`,codePlaceholder:`Inserisci il codice a 6 cifre`,confirmPasswordLabel:`Conferma password`,confirmPasswordPlaceholder:`Conferma password`,defaultDescription:`Inserisci il codice inviato alla tua email e scegli una nuova password`,description:"Abbiamo inviato un codice a ${email}",failed:`Reimpostazione della password non riuscita. Riprova.`,invalidCode:`Il codice inserito non è valido o è scaduto`,noCode:`Inserisci il codice di reimpostazione`,pageTitle:"Inserisci il codice di reimpostazione | ${clientName}",passwordLabel:`Nuova password`,passwordPlaceholder:`Nuova password`,passwordTooWeak:`La password è troppo debole`,passwordsDidntMatch:`Le password non corrispondono`,resendFailed:`Impossibile reinviare il codice. Riprova.`,resendSuccess:`Un nuovo codice è stato inviato alla tua email`,resendText:`Reinvia codice`,sessionExpired:`La sessione è scaduta. Riprova.`,title:`Inserisci il codice di reimpostazione`,noPassword:`La password è obbligatoria`}},signup:vp,"signup-id":{"signup-id":{buttonText:`Continua`,description:`Registrati per continuare`,"email-already-exists":`Questa email è già registrata`,emailPlaceholder:`Indirizzo e-mail`,federatedConnectionButtonText:"Continua con ${connectionName}","invalid-email-format":`Email non valida`,loginActionLinkText:`Accedi`,loginActionText:`Hai già un account?`,"no-email":`Inserisci un indirizzo email`,pageTitle:"Registrati | ${clientName}",phonePlaceholder:`Numero di telefono`,separatorText:`o`,title:`Crea il tuo account`,usernamePlaceholder:`Nome utente`}},"signup-password":{"signup-password":{buttonText:`Continua`,description:`Registrati per continuare`,hidePasswordText:`Nascondi password`,"no-password":`La password è obbligatoria`,pageTitle:"Registrati | ${clientName}","password-policy-not-met":`La password non soddisfa i requisiti`,"password-too-weak":`La password è troppo debole`,passwordPlaceholder:`Password`,showPasswordText:`Mostra password`,title:`Crea la tua password`,passwordTooShort:"La password deve contenere almeno ${minLength} caratteri",passwordMissingLowercase:`La password deve contenere almeno una lettera minuscola`,passwordMissingUppercase:`La password deve contenere almeno una lettera maiuscola`,passwordMissingNumber:`La password deve contenere almeno un numero`,passwordMissingSpecial:`La password deve contenere almeno un carattere speciale`,passwordReused:`La password è stata utilizzata di recente e non può essere riutilizzata`,passwordContainsPersonalInfo:`La password non può contenere informazioni personali come il nome o l'email`,passwordContainsForbiddenWord:`La password contiene una parola vietata`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Continua`,codeLabel:`Codice di verifica`,codePlaceholder:`Inserisci il codice`,defaultDescription:`Inserisci il codice di verifica inviato al tuo telefono`,description:"Abbiamo inviato un codice a ${username}","invalid-code":`Codice non valido`,noCode:`Inserisci il codice di verifica`,pageTitle:"Inserisci il codice | ${clientName}",resendText:`Reinvia codice`,sessionExpired:`La sessione è scaduta. Riprova.`,title:`Controlla il tuo telefono`,unexpectedError:`Si è verificato un errore imprevisto`,tooManyRequests:`Troppi tentativi. Attendi qualche istante e riprova.`}},status:yp},iie=c({common:()=>bp,consent:()=>xp,default:()=>aie,invitation:()=>Sp,login:()=>Cp,mfa:()=>wp,organizations:()=>Ep,passkeys:()=>Tp,signup:()=>Dp,status:()=>Op}),bp={common:{alertListTitle:`Varsler`,backText:`Gå tilbake`,backToLoginText:`Tilbake til innlogging`,cancelText:`Avbryt`,closeText:`Lukk`,contactSupportText:`Kontakt kundestøtte`,continueText:`Fortsett`,copyrightText:"© ${currentYear} ${companyName}",errorText:`Det oppstod en feil`,hidePasswordText:`Skjul passord`,loadingText:`Laster...`,orText:`eller`,privacyPolicyText:`Personvernerklæring`,showPasswordText:`Vis passord`,termsOfServiceText:`Vilkår for bruk`,termsShortText:`Vilkår`,tryAgainText:`Prøv igjen`},account:{title:`Kontoinnstillinger`,description:`Administrer kontoen din`,editProfileLabel:`Rediger profil`,editProfileDetail:`Navn, e-post, telefonnummer og bilde`,securityLabel:`Sikkerhetsinnstillinger`,securityDetail:`Flerfaktorautentisering`,securityMethodsCountOne:"${count} metode konfigurert",securityMethodsCount:"${count} metoder konfigurert",passkeysLabel:`Passnøkler`,passkeysDetail:`Logg inn uten passord`,passkeysCountOne:"${count} passnøkkel registrert",passkeysCount:"${count} passnøkler registrert",linkedAccountsLabel:`Koblede kontoer`,linkedAccountsDetail:`Koble til sosiale kontoer`,linkedAccountsCountOne:"${count} koblet konto",linkedAccountsCount:"${count} koblede kontoer",deleteAccountLabel:`Slett konto`,deleteAccountDetail:`Slett kontoen og dataene dine permanent`,logoutText:`Logg ut`},"account-profile":{title:`Rediger profil`,description:`Oppdater personopplysningene dine`,givenNameLabel:`Fornavn`,familyNameLabel:`Etternavn`,nicknameLabel:`Kallenavn`,phoneNumberLabel:`Telefonnummer`,pictureLabel:`URL til profilbilde`,buttonText:`Lagre endringer`,backToAccountText:`Tilbake til kontoen`,updateFailed:`Kunne ikke oppdatere profilen`},"account-delete":{title:`Slett konto`,description:`Slett kontoen din permanent`,warningTitle:`Advarsel: Denne handlingen er permanent`,warningText:`Alle dataene dine blir slettet permanent. Dette omfatter profilen din, koblede kontoer og autentiseringsmetoder. Handlingen kan ikke angres.`,confirmationLabel:'Skriv "${confirmationWord}" for å bekrefte',buttonText:`Slett kontoen min`,cancelText:`Avbryt`,confirmationError:'Skriv "${confirmationWord}" for å bekrefte',deleteSuccess:`Kontoen din er slettet`,deleteFailed:`Kunne ikke slette kontoen`},"account-linked":{title:`Koblede kontoer`,description:`Administrer de koblede kontoene dine`,noLinkedAccounts:`Ingen koblede kontoer.`,unlinkButtonText:`Koble fra`,backToAccountText:`Tilbake til kontoen`,unlinkSuccess:`Kontoen er koblet fra`,unlinkFailed:`Kunne ikke koble fra kontoen`},"account-security":{title:`Sikkerhetsinnstillinger`,description:`Administrer metodene dine for tofaktorautentisering`,noEnrollments:`Du har ingen metoder for tofaktorautentisering konfigurert.`,addedOn:"Lagt til ${date}",removeButtonText:`Fjern`,addTotpLabel:`Legg til autentiseringsapp`,addTotpDetail:`Bruk en app som Google Authenticator eller Authy`,addSmsLabel:`Legg til telefon (SMS)`,addSmsDetail:`Motta bekreftelseskoder på SMS`,typeTotp:`Autentiseringsapp`,typePhone:`Telefon (SMS)`,typeEmail:`E-post`,typePush:`Push-varsel`,typeWebauthn:`Sikkerhetsnøkkel`,backToAccountText:`Tilbake til kontoen`,enrollmentNotFound:`Metoden ble ikke funnet`,removeSuccess:`Autentiseringsmetoden er fjernet`,removeFailed:`Kunne ikke fjerne autentiseringsmetoden`},"account-passkeys":{title:`Passnøkler`,description:`Administrer passnøklene dine for innlogging uten passord`,noPasskeysText:`Du har ingen registrerte passnøkler.`,defaultPasskeyName:`Passnøkkel`,syncedBadgeText:`Synkronisert`,addedOnText:"Lagt til ${date}",renameButtonText:`Gi nytt navn`,removeButtonText:`Fjern`,renamePromptText:`Skriv inn et nytt navn for denne passnøkkelen:`,addPasskeyButtonText:`Legg til passnøkkel`,backToAccountText:`Tilbake til kontoen`,logoutText:`Logg ut`,passkeyNotFoundText:`Fant ikke passnøkkelen`,passkeyRemovedText:`Passnøkkelen er fjernet`,removeFailedText:`Kunne ikke fjerne passnøkkelen`,invalidNameText:`Navnet må være mellom 1 og 64 tegn`,passkeyRenamedText:`Passnøkkelen har fått nytt navn`,renameFailedText:`Kunne ikke gi passnøkkelen nytt navn`,startRegistrationFailedText:`Kunne ikke starte registrering av passnøkkel`,missingCredentialText:`Mangler data for passnøkkelen`,challengeExpiredText:`Forespørselen har utløpt. Prøv igjen.`,invalidCredentialText:`Ugyldige data for passnøkkelen`,verificationFailedText:`Bekreftelse av passnøkkelen mislyktes`,passkeyAddedText:`Passnøkkelen er lagt til`,registrationFailedText:`Registrering av passnøkkel mislyktes. Prøv igjen.`},"account-mfa-phone-enrollment":{title:`Sett opp telefon (SMS)`,description:`Skriv inn telefonnummeret ditt for å motta bekreftelseskoder på SMS.`,phoneLabel:`Telefonnummer`,sendCodeButtonText:`Send bekreftelseskode`,backToSecurityText:`Tilbake til sikkerhetsinnstillinger`,verifyTitle:`Bekreft telefonnummer`,verifyDescription:`Skriv inn bekreftelseskoden som ble sendt til telefonen din.`,codeSentText:"En bekreftelseskode er sendt til ${phoneNumber}",codeSentToYourPhoneText:`En bekreftelseskode er sendt til telefonen din`,codeLabel:`Bekreftelseskode`,codePlaceholder:`Skriv inn bekreftelseskode`,verifyButtonText:`Bekreft og aktiver`,noPhoneText:`Skriv inn telefonnummeret ditt`,invalidPhoneText:`Skriv inn et gyldig telefonnummer`,sendCodeFailedText:`Kunne ikke sende bekreftelseskoden. Prøv igjen.`,noCodeText:`Skriv inn bekreftelseskoden`,invalidCodeText:`Ugyldig kode. Prøv igjen.`,sessionInvalidText:`Noe gikk galt. Start registreringen på nytt.`},"account-mfa-totp-enrollment":{title:`Sett opp autentiseringsapp`,description:`Skann QR-koden med autentiseringsappen din, og skriv deretter inn bekreftelseskoden nedenfor.`,qrCodeAltText:`QR-kode`,manualKeyText:`Eller skriv inn denne nøkkelen manuelt:`,codeLabel:`Bekreftelseskode`,codePlaceholder:`Skriv inn 6-sifret kode`,verifyButtonText:`Bekreft og aktiver`,backToSecurityText:`Tilbake til sikkerhetsinnstillinger`,noCodeText:`Skriv inn bekreftelseskoden`,invalidCodeText:`Ugyldig kode. Prøv igjen.`,verificationFailedText:`Bekreftelsen mislyktes. Prøv igjen.`}},xp={consent:{buttonText:`Godta`,cancelButtonText:`Avslå`,description:"${clientName} ber om tilgang til kontoen din",pageTitle:"Godkjenn | ${clientName}",scopesTitle:"Dette vil gi ${clientName} tillatelse til å:",title:"Godkjenn ${clientName}",accessAccountText:"ønsker tilgang til ${tenantName}-kontoen din som ${userName}.",notAuthenticated:`Du må logge inn for å fortsette.`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,consentStorageNotConfigured:`Samtykket ditt kunne ikke lagres. Kontakt eieren av applikasjonen.`},"connect-consent":{title:`Koble til applikasjon`,description:"Vil du tillate ${domain} å handle på dine vegne?",connectAccountText:"ønsker å koble til ${tenantName}-kontoen din som ${userName}.",workspaceLabel:`Arbeidsområde:`,apiLabel:`Til API:`,permissionsLabel:`Forespurte tillatelser:`,localDevBadge:`Lokal utvikling`,localDevTooltip:`Dette nettstedet er et lokalt utviklingsmiljø, ikke produksjon. Tilkoblingen vil ikke fungere utenfor denne maskinen eller dette nettverket.`,buttonText:`Koble til`,cancelText:`Avbryt`,notAuthenticated:`Du må logge inn for å fortsette.`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,workspaceSelectionRequired:`Velg et arbeidsområde først.`,noWorkspaceAccess:`Du har ikke tilgang til det arbeidsområdet`,workspaceNotFound:`Fant ikke arbeidsområdet`},"connect-tenant-select":{title:`Velg et arbeidsområde`,description:"Velg hvilket ${tenantName}-arbeidsområde ${domain} skal koble til.",noWorkspacesDescription:`Ingen tilgjengelige arbeidsområder`,noWorkspacesText:"Du har ikke tilgang til noen ${tenantName}-arbeidsområder. Be en administrator om å invitere deg.",cancelText:`Avbryt`,notAuthenticated:`Du må logge inn for å fortsette.`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,noWorkspaceSelected:`Velg et arbeidsområde.`,noWorkspaceAccess:`Du har ikke tilgang til det arbeidsområdet`}},Sp={invitation:{acceptButtonText:`Godta invitasjon`,description:"${inviterName} har invitert deg til å bli med i ${organizationName} på ${clientName}",pageTitle:"Invitasjon | ${clientName}",title:`Du har blitt invitert`,defaultOrganizationName:`organisasjonen`,acceptFailed:`Vi kunne ikke fullføre oppsettet av kontoen din. Prøv igjen.`}},Cp={login:{alertListTitle:`Varsler`,buttonText:`Fortsett`,description:"Logg inn på ${clientName}.",editEmailText:`Rediger`,emailPlaceholder:`E-postadresse`,enterACodeBtn:`Logg inn med en kode`,enterACodeShortBtn:`Kode`,federatedConnectionButtonText:"Fortsett med ${connectionName}",lastUsedText:`Sist brukt`,footerLinkText:`Registrer deg`,footerText:`Har du ikke en konto?`,forgotPasswordText:`Har du glemt passordet?`,hidePasswordText:`Skjul passord`,invalidEmail:`Ugyldig e-postadresse`,invalidIdentifier:`Ugyldig e-postadresse eller brukernavn`,invitationDescription:"Logg inn for å godta ${inviterName} sin invitasjon til å bli med i ${companyName} på ${clientName}.",invitationTitle:`Du har blitt invitert!`,logoAltText:"${companyName}","no-email":`Vennligst oppgi en e-postadresse`,"no-password":`Passord er påkrevd`,pageTitle:"Logg inn | ${clientName}",passwordLoginNotAvailable:`Passordautentisering er ikke tilgjengelig`,passwordPlaceholder:`Passord`,phonePlaceholder:`Telefonnummer`,separatorText:`eller`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,showPasswordText:`Vis passord`,signupActionLinkText:`Registrer deg`,signupActionText:`Har du ikke en konto?`,title:`Velkommen`,tooManyFailedLogins:`For mange mislykkede innloggingsforsøk. Vennligst prøv igjen senere.`,unverifiedEmail:`Vennligst bekreft e-postadressen din før du logger inn`,userAccountDoesNotExist:`Brukerkontoen finnes ikke`,usernamePlaceholder:`Brukernavn eller e-postadresse`,usernameTooLong:"Brukernavnet må være ${max} tegn eller færre",usernameTooShort:"Brukernavnet må være minst ${min} tegn",wrongCredentials:`Feil brukernavn eller passord`,passkeyButtonText:`Logg inn med passkey`,userBlocked:`Kontoen din har blitt blokkert etter flere påfølgende innloggingsforsøk.`,tooManyRequests:`For mange forsøk. Vent litt og prøv igjen.`,unexpectedError:`Noe gikk galt. Prøv igjen.`}},wp={mfa:{backupCodeText:`Bruk reservekode`,description:`Velg en bekreftelsesmetode`,pageTitle:"Flerfaktorautentisering | ${clientName}",title:`Bekreft identiteten din`}},Tp={"passkey-enrollment-nudge":{title:`Sikre kontoen din med en passnøkkel`,description:`Passnøkler bruker enhetens biometri eller PIN-kode for å logge deg inn raskere og sikrere.`,enrollButtonText:`Sett opp passnøkkel`,snoozeButtonText:`Kanskje senere`,optOutLinkText:`Ikke vis dette igjen`,pageTitle:"Sett Opp Passnøkkel | ${clientName}"},"passkey-enrollment":{title:`Opprett passnøkkelen din`,description:`Følg instruksjonene fra nettleseren for å opprette en passnøkkel for denne kontoen.`,errorMessage:`Kunne ikke opprette passnøkkel. Vennligst prøv igjen.`,cancelLinkText:`Hopp over for nå`,retryButtonText:`Prøv igjen`,enrollmentComplete:`Passnøkkelen din er konfigurert. Du kan lukke denne siden.`,pageTitle:"Opprett Passnøkkel | ${clientName}",sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,enrollmentRequired:`Du må opprette en passnøkkel for å fortsette.`,challengeExpired:`Forespørselen har utløpt. Prøv igjen.`},"passkey-challenge":{title:`Logg inn med passkey`,description:`Følg instruksjonene fra nettleseren for å bekrefte identiteten din.`,errorMessage:`Autentisering med passkey mislyktes. Vennligst prøv igjen.`,cancelLinkText:`Tilbake til innlogging`,retryButtonText:`Prøv igjen`,pageTitle:"Logg inn med passkey | ${clientName}",sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`}},Ep={organizations:{description:`Velg hvilken organisasjon du vil logge inn på`,pageTitle:"Velg organisasjon | ${clientName}",searchPlaceholder:`Søk etter organisasjoner`,title:`Velg din organisasjon`}},Dp={signup:{buttonText:`Registrer deg`,confirmPasswordPlaceholder:`Bekreft passord`,description:`Registrer deg for å fortsette`,"email-already-exists":`E-postadressen er allerede registrert`,emailPlaceholder:`E-postadresse`,federatedConnectionButtonText:"Fortsett med ${connectionName}",hidePasswordText:`Skjul passord`,"invalid-email-format":`Ugyldig e-postadresse`,loginActionLinkText:`Logg inn`,loginActionText:`Har du allerede en konto?`,"no-email":`Vennligst oppgi en e-postadresse`,"no-password":`Passord er påkrevd`,"no-username":`Brukernavn er påkrevd`,pageTitle:"Registrer deg | ${clientName}",passwordPlaceholder:`Passord`,passwordsDidntMatch:`Passordene samsvarer ikke`,phonePlaceholder:`Telefonnummer`,privacyPolicyLinkText:`Personvernerklæring`,separatorText:`eller`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,showPasswordText:`Vis passord`,termsOfServiceLinkText:`Vilkår for bruk`,termsText:`Ved å registrere deg godtar du våre`,title:`Opprett kontoen din`,"username-already-exists":`Dette brukernavnet er allerede tatt`,usernamePlaceholder:`Brukernavn`,verifyEmailText:`Sjekk e-posten din for å bekrefte kontoen`,confirmPasswordRequired:`Bekreft passordet ditt`,createUserFailed:`Vi kunne ikke opprette kontoen din. Prøv igjen.`}},Op={status:{continueButtonText:`Fortsett`,errorTitle:`Feil`,pageTitle:"Status | ${clientName}",successTitle:`Vellykket`,title:`Status`}},aie={common:bp,consent:xp,"device-flow":{"device-flow":{buttonText:`Fortsett`,codePlaceholder:`Skriv inn kode`,description:`Skriv inn koden som vises på enheten din`,"expired-code":`Koden har utløpt`,"invalid-code":`Koden du skrev inn er ugyldig`,pageTitle:"Enhetsaktivering | ${clientName}",title:`Aktiver enheten din`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Fortsett`,codeLabel:`Bekreftelseskode`,codePlaceholder:`Skriv inn kode`,defaultDescription:`Skriv inn bekreftelseskoden som ble sendt til e-posten din`,description:"Vi sendte en kode til ${email}","invalid-code":`Ugyldig kode`,noCode:`Vennligst skriv inn bekreftelseskoden`,pageTitle:"Skriv inn kode | ${clientName}",resendText:`Send kode på nytt`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,title:`Sjekk e-posten din`,unexpectedError:`En uventet feil oppstod`,usePasswordText:`Logg inn med passord`,tooManyRequests:`For mange forsøk. Vent litt og prøv igjen.`}},"email-verification":{"email-verification":{description:"Vi sendte en e-post til ${email}",linkAlreadyUsed:`Bekreftelseslenken er allerede brukt. Be om en ny.`,linkInvalid:`Bekreftelseslenken er ugyldig.`,linkInvalidOrExpired:`Bekreftelseslenken er ugyldig eller har utløpt. Be om en ny.`,linkInvalidTitle:`Bekreftelseslenken er ikke gyldig`,linkWrongType:`Denne lenken kan ikke brukes til å bekrefte en e-postadresse.`,pageTitle:"Bekreft e-post | ${clientName}",resendText:`Send e-post på nytt`,successDescription:`E-postadressen din er bekreftet.`,successTitle:`E-post bekreftet`,title:`Bekreft e-posten din`},"email-verification-code":{buttonText:`Fortsett`,codeLabel:`Bekreftelseskode`,codePlaceholder:`Skriv inn 6-sifret kode`,defaultDescription:`Skriv inn koden vi sendte til e-posten din for å bekrefte adressen og fortsette.`,description:"Vi sendte en kode til ${email}. Skriv den inn for å bekrefte e-postadressen din og fortsette.",invalidCode:`Koden er ugyldig eller utløpt`,noCode:`Skriv inn bekreftelseskoden`,pageTitle:"Bekreft e-post | ${clientName}",resendFailed:`Kunne ikke sende koden på nytt. Prøv igjen.`,resendSuccess:`En ny kode er sendt til e-posten din`,resendText:`Send koden på nytt`,sessionExpired:`Økten din har utløpt. Prøv igjen.`,title:`Bekreft e-postadressen din`,tooManyAttempts:`For mange forsøk. Prøv igjen senere.`},"email-verification-link-sent":{defaultDescription:`Vi sendte en bekreftelseslenke til e-posten din. Klikk på lenken for å bekrefte adressen, og logg deretter inn på nytt.`,description:"Vi sendte en bekreftelseslenke til ${email}. Klikk på lenken for å bekrefte adressen, og logg deretter inn på nytt.",pageTitle:"Bekreft e-post | ${clientName}",resendFailed:`Kunne ikke sende e-posten på nytt. Prøv igjen.`,resendSuccess:`En ny bekreftelses-e-post er sendt`,resendText:`Send e-posten på nytt`,title:`Sjekk e-posten din`}},invitation:Sp,login:Cp,"login-id":{"login-id":{alertListTitle:`Varsler`,"auth0-users-validation":`Noe gikk galt, vennligst prøv igjen senere`,"authentication-failure":`Beklager, noe gikk galt under innloggingsforsøket`,buttonText:`Fortsett`,"captcha-client-failure":`Vi kunne ikke laste sikkerhetsutfordringen. Vennligst prøv igjen. (Feilkode: #{errorCode})`,"captcha-validation-failure":`Beklager, noe gikk galt under validering av captcha-svaret. Vennligst prøv igjen.`,captchaCodePlaceholder:`Skriv inn koden som vises ovenfor`,"custom-script-error-code":`Noe gikk galt, vennligst prøv igjen senere.`,description:"Logg inn på ${clientName}.",editEmailText:`Rediger`,emailPlaceholder:`E-postadresse`,federatedConnectionButtonText:"Fortsett med ${connectionName}",lastUsedText:`Sist brukt`,footerLinkText:`Registrer deg`,footerText:`Har du ikke en konto?`,forgotPasswordText:`Har du glemt passordet?`,hidePasswordText:`Skjul passord`,"invalid-captcha":`Løs utfordringen for å bekrefte at du ikke er en robot.`,"invalid-code":`Ugyldig kode`,"invalid-connection":`Ugyldig tilkobling`,"invalid-email-format":`Ugyldig e-postadresse`,"invalid-email-phone":`Skriv inn en gyldig e-postadresse eller telefonnummer. Telefonnumre må inkludere landskode.`,"invalid-email-phone-username":`Skriv inn en gyldig e-postadresse, telefonnummer eller brukernavn. Telefonnumre må inkludere landskode.`,"invalid-email-username":`Skriv inn en gyldig e-postadresse eller brukernavn`,"invalid-expired-code":`Ugyldig eller utløpt brukerkode`,"invalid-login-id":`Ugyldig innloggings-ID`,"invalid-phone-username":`Skriv inn et gyldig telefonnummer eller brukernavn. Telefonnumre må inkludere landskode.`,"invalid-recaptcha":`Kryss av i boksen for å bekrefte at du ikke er en robot.`,"invalid-username":"Brukernavnet kan bare inneholde alfanumeriske tegn eller: '${characters}'. Brukernavnet må ha mellom ${min} og ${max} tegn.",invitationDescription:"Logg inn for å godta ${inviterName} sin invitasjon til å bli med i ${companyName} på ${clientName}.",invitationTitle:`Du har blitt invitert!`,"ip-blocked":`Vi har oppdaget mistenkelig innloggingsaktivitet, og videre forsøk vil bli blokkert. Vennligst kontakt administratoren.`,logoAltText:"${companyName}","no-db-connection":`Ugyldig tilkobling`,"no-email":`Vennligst oppgi en e-postadresse`,"no-email-phone":`E-postadresse eller telefonnummer er påkrevd`,"no-email-phone-username":`Telefonnummer, brukernavn eller e-postadresse er påkrevd`,"no-email-username":`E-postadresse eller brukernavn er påkrevd`,"no-password":`Passord er påkrevd`,"no-phone":`Vennligst oppgi et telefonnummer`,"no-phone-username":`Telefonnummer eller brukernavn er påkrevd`,"no-username":`Brukernavn er påkrevd`,pageTitle:"Logg inn | ${clientName}","password-breached":`Vi har oppdaget et potensielt sikkerhetsproblem med denne kontoen. For å beskytte kontoen din har vi forhindret denne innloggingen. Vennligst tilbakestill passordet ditt for å fortsette.`,passwordPlaceholder:`Passord`,phoneOrEmailPlaceholder:`E-post eller telefonnummer`,phoneOrUsernameOrEmailPlaceholder:`Telefon, brukernavn eller e-post`,phoneOrUsernamePlaceholder:`Telefonnummer eller brukernavn`,phonePlaceholder:`Telefonnummer`,"same-user-login":`For mange innloggingsforsøk for denne brukeren. Vennligst vent og prøv igjen senere.`,selectCountryCode:"Velg landskode, for øyeblikket satt til ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`eller`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,showPasswordText:`Vis passord`,signupActionLinkText:`Registrer deg`,signupActionText:`Har du ikke en konto?`,termsAndConditionsTemplate:'Ved å fortsette godtar du våre <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">vilkår</a>.',title:`Velkommen`,"user-blocked":`Kontoen din har blitt blokkert etter flere påfølgende innloggingsforsøk.`,userAccountDoesNotExist:`Brukerkontoen finnes ikke`,usernameOnlyPlaceholder:`Brukernavn`,usernameOrEmailPlaceholder:`Brukernavn eller e-postadresse`,usernamePlaceholder:`Brukernavn eller e-postadresse`,usernameTooLong:"Brukernavnet må være ${max} tegn eller færre",usernameTooShort:"Brukernavnet må være minst ${min} tegn","wrong-credentials":`Feil brukernavn eller passord`,"wrong-email-credentials":`Feil e-postadresse eller passord`,"wrong-email-phone-credentials":`Feil e-postadresse, telefonnummer eller passord. Telefonnumre må inkludere landskode.`,"wrong-email-phone-username-credentials":`Feil e-postadresse, telefonnummer, brukernavn eller passord. Telefonnumre må inkludere landskode.`,"wrong-email-username-credentials":`Feil e-postadresse, brukernavn eller passord`,"wrong-phone-credentials":`Feil telefonnummer eller passord`,"wrong-phone-username-credentials":`Feil telefonnummer, brukernavn eller passord. Telefonnumre må inkludere landskode.`,"wrong-username-credentials":`Feil brukernavn eller passord`,passkeyButtonText:`Logg inn med passkey`}},"login-password":{"login-password":{buttonText:`Logg inn`,description:"Logg inn på ${clientName}",forgotPasswordText:`Har du glemt passordet?`,hidePasswordText:`Skjul passord`,"no-password":`Passord er påkrevd`,pageTitle:"Logg inn | ${clientName}","password-breached":`Vi har oppdaget et potensielt sikkerhetsproblem med denne kontoen. For å beskytte kontoen din har vi forhindret denne innloggingen. Vennligst tilbakestill passordet ditt for å fortsette.`,passwordPlaceholder:`Passord`,showPasswordText:`Vis passord`,signingInAs:"Logger inn som ${email}",title:`Oppgi passord`,unverifiedEmail:`Vennligst bekreft e-postadressen din før du logger inn`,"user-blocked":`Kontoen din har blitt blokkert etter flere påfølgende innloggingsforsøk.`,"wrong-credentials":`Feil passord`,sendCodeText:`Logg inn med kode`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,tooManyRequests:`For mange forsøk. Vent litt og prøv igjen.`,unexpectedError:`Noe gikk galt. Prøv igjen.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`e-post`,authMethodEmailOrPhone:`e-post eller telefonnummer`,authMethodPhone:`telefonnummer`,description:"Logg inn med din ${authMethod}",emailOrPhonePlaceholder:`E-postadresse eller telefonnummer`,emailPlaceholder:`E-postadresse`,invalidEmail:`Vennligst oppgi en gyldig e-postadresse`,invalidIdentifier:`Vennligst oppgi en gyldig e-postadresse eller telefonnummer`,invalidPhone:`Vennligst oppgi et gyldig telefonnummer med landskode`,noEmail:`Vennligst oppgi e-postadressen din`,noPhone:`Vennligst oppgi telefonnummeret ditt`,phonePlaceholder:`Telefonnummer`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,title:`Logg inn med en kode`,userAccountDoesNotExist:`Brukerkontoen finnes ikke`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Klikk på lenken i e-posten for å logge inn`,description:"Vi sendte en lenke til ${username}. Klikk på den for å logge inn.",resendText:`Send lenke på nytt`,spamText:`Fikk du ikke e-posten? Sjekk søppelpostmappen.`,title:`Sjekk e-posten din`}},mfa:wp,"mfa-email":{"mfa-email":{buttonText:`Fortsett`,codePlaceholder:`Skriv inn kode`,description:"Vi sendte en kode til ${email}","invalid-code":`Koden du skrev inn er ugyldig`,pageTitle:"E-postbekreftelse | ${clientName}",resendText:`Send kode på nytt`,title:`Sjekk e-posten din`}},"mfa-otp":{"mfa-otp":{buttonText:`Fortsett`,codePlaceholder:`Skriv inn kode`,description:`Skriv inn den 6-sifrede koden fra autentiseringsappen din`,"invalid-code":`Koden du skrev inn er ugyldig`,pageTitle:"Skriv inn kode | ${clientName}",title:`Skriv inn koden din`},"mfa-totp-enrollment":{title:`Sett opp autentisering`,description:`Skann QR-koden nedenfor med autentiseringsappen din, og skriv deretter inn den 6-sifrede koden for å verifisere`,secretLabel:`Eller skriv inn denne koden manuelt:`,codePlaceholder:`Skriv inn kode`,continueButtonText:`Bekreft og aktiver`,"invalid-code":`Koden du skrev inn er ugyldig. Vennligst prøv igjen.`,"transaction-not-found":`Registreringsøkten din har utløpt, du må starte på nytt.`,pageTitle:"Sett opp autentisering | ${clientName}",unexpectedError:`Noe gikk galt. Vennligst prøv igjen.`,enrollmentComplete:`MFA-registreringen er fullført. Du kan lukke denne siden.`,pickAuthenticatorText:`Prøv en annen metode`,qrCodeAltText:`QR-kode`},"mfa-totp-challenge":{title:`Bekreft identiteten din`,description:`Skriv inn den 6-sifrede koden fra autentiseringsappen din`,codePlaceholder:`Skriv inn kode`,continueButtonText:`Fortsett`,"invalid-code":`Koden du skrev inn er ugyldig`,"transaction-not-found":`Registreringsøkten din har utløpt, du må starte på nytt.`,unexpectedError:`Noe gikk galt. Vennligst prøv igjen.`,pageTitle:"Bekreft identitet | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Bruk telefonnummeret ditt for å logge inn | ${clientName}",title:`Bekreft identiteten din`,description:"Vi sendte en kode til ${phoneNumber}",continueButtonText:`Fortsett`,changePhoneText:`Velg et annet telefonnummer.`,smsButtonText:`Tekstmelding`,voiceButtonText:`Taleanrop`,chooseMessageTypeText:`Hvordan vil du motta koden?`,pickAuthenticatorText:`Prøv en annen metode`,logoAltText:"${companyName}",codePlaceholder:`Skriv inn kode`,"send-sms-failed":`Det oppstod et problem med å sende SMS-en`,"send-voice-failed":`Det oppstod et problem med å ringe taleanropet`,"invalid-phone-format":`Telefonnummeret kan bare inneholde sifre.`,"invalid-phone":`Det ser ut som telefonnummeret ditt ikke er gyldig. Sjekk og prøv igjen.`,"too-many-sms":`Du har overskredet maksimalt antall telefonmeldinger per time. Vent noen minutter og prøv igjen.`,"too-many-voice":`Du har overskredet maksimalt antall telefonmeldinger per time. Vent noen minutter og prøv igjen.`,"transaction-not-found":`Registreringstransaksjonen din har utløpt, du må starte på nytt.`,"no-phone":`Skriv inn et telefonnummer`,noCode:`Vennligst skriv inn bekreftelseskoden`,invalidCode:`Koden du skrev inn er ugyldig. Prøv igjen.`,unexpectedError:`Noe gikk galt. Prøv igjen.`,resendSuccess:`Vi sendte en ny kode til telefonen din`,enrollmentComplete:`MFA-registreringen er fullført. Du kan lukke denne siden.`},"mfa-phone-enrollment":{pageTitle:"Skriv inn telefonnummeret ditt for å logge inn med en telefonkode | ${clientName}",title:`Sikre kontoen din`,description:`Skriv inn landskoden og telefonnummeret vi kan sende en 6-sifret kode til:`,continueButtonText:`Fortsett`,smsButtonText:`Tekstmelding`,voiceButtonText:`Taleanrop`,chooseMessageTypeText:`Hvordan vil du motta koden?`,pickAuthenticatorText:`Prøv en annen metode`,placeholder:`Skriv inn telefonnummeret ditt`,logoAltText:"${companyName}",selectCountryCode:"Velg landskode, for øyeblikket satt til ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`Det oppstod et problem med å sende SMS-en`,"send-voice-failed":`Det oppstod et problem med å ringe taleanropet`,"sms-authenticator-error":`Vi kunne ikke sende SMS-en. Prøv igjen senere.`,"invalid-phone-format":`Telefonnummeret kan bare inneholde sifre.`,"invalid-phone":`Det ser ut som telefonnummeret ditt ikke er gyldig. Sjekk og prøv igjen.`,"too-many-sms":`Du har overskredet maksimalt antall telefonmeldinger per time. Vent noen minutter og prøv igjen.`,"too-many-voice":`Du har overskredet maksimalt antall telefonmeldinger per time. Vent noen minutter og prøv igjen.`,"transaction-not-found":`Registreringstransaksjonen din har utløpt, du må starte på nytt.`,"no-phone":`Skriv inn et telefonnummer`,"phone-is-too-short":`Telefonnummeret er for kort`,"phone-is-too-long":`Telefonnummeret er for langt`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Velg bekreftelsesmetode | ${clientName}",title:`Velg bekreftelsesmetode`,description:`Velg hvordan du vil bekrefte identiteten din`,authenticatorAppLabel:`Autentiseringsapp`,authenticatorAppDescription:`Bruk autentiseringsappen din for å få en bekreftelseskode`,smsLabel:`Tekstmelding`,smsDescription:`Få en bekreftelseskode sendt til telefonen din`,passkeyLabel:`Passnøkkel`,passkeyDescription:`Bruk enhetens biometri eller sikkerhetsnøkkel`}},"mfa-push":{"mfa-push":{description:`Vi sendte en varsling til enheten din`,pageTitle:"Push-varsling | ${clientName}",resendText:`Send varsling på nytt`,title:`Godkjenn forespørselen`,useCodeText:`Skriv inn kode manuelt`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Fortsett`,codePlaceholder:`Gjenopprettingskode`,description:`Skriv inn en av gjenopprettingskodene dine`,"invalid-code":`Gjenopprettingskoden du skrev inn er ugyldig`,pageTitle:"Gjenopprettingskode | ${clientName}",title:`Skriv inn gjenopprettingskode`}},"mfa-voice":{"mfa-voice":{buttonText:`Ring meg`,codePlaceholder:`Skriv inn kode`,description:"Vi ringer ${phoneNumber} med koden din","invalid-code":`Koden du skrev inn er ugyldig`,pageTitle:"Taleanrop | ${clientName}",title:`Motta en telefonsamtale`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Prøv igjen`,description:`Sett inn sikkerhetsnøkkelen din og følg instruksjonene`,pageTitle:"Sikkerhetsnøkkel | ${clientName}",title:`Bruk sikkerhetsnøkkelen din`}},passkeys:Tp,organizations:Ep,"reset-password":{"reset-password":{backToLoginText:`Tilbake til innlogging`,buttonText:`Fortsett`,codeExpired:`Koden for tilbakestilling av passord har utløpt. Vennligst be om en ny.`,confirmPasswordLabel:`Bekreft passord`,confirmPasswordPlaceholder:`Bekreft passord`,description:`Oppgi e-postadressen din for å tilbakestille passordet`,emailPlaceholder:`E-postadresse`,failed:`Tilbakestilling av passord mislyktes. Vennligst prøv igjen.`,"invalid-email-format":`Ugyldig e-postadresse`,"no-email":`Vennligst oppgi en e-postadresse`,pageTitle:"Tilbakestill passord | ${clientName}",passwordLabel:`Nytt passord`,passwordPlaceholder:`Nytt passord`,passwordTooWeak:`Passordet er for svakt`,passwordsDidntMatch:`Passordene samsvarer ikke`,successDescription:`Vi har sendt en lenke for tilbakestilling av passord til e-postadressen din.`,successTitle:`Sjekk e-posten din`,title:`Har du glemt passordet?`,"user-not-found":`Brukeren ble ikke funnet`,noPassword:`Passord er påkrevd`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`},"reset-password-code":{backToLoginText:`Tilbake til innlogging`,buttonText:`Tilbakestill passord`,codeLabel:`Tilbakestillingskode`,codePlaceholder:`Skriv inn 6-sifret kode`,confirmPasswordLabel:`Bekreft passord`,confirmPasswordPlaceholder:`Bekreft passord`,defaultDescription:`Skriv inn koden som ble sendt til e-posten din og velg et nytt passord`,description:"Vi sendte en kode til ${email}",failed:`Tilbakestilling av passord mislyktes. Vennligst prøv igjen.`,invalidCode:`Koden du skrev inn er ugyldig eller har utløpt`,noCode:`Vennligst skriv inn tilbakestillingskoden`,pageTitle:"Skriv inn tilbakestillingskode | ${clientName}",passwordLabel:`Nytt passord`,passwordPlaceholder:`Nytt passord`,passwordTooWeak:`Passordet er for svakt`,passwordsDidntMatch:`Passordene samsvarer ikke`,resendFailed:`Kunne ikke sende koden på nytt. Vennligst prøv igjen.`,resendSuccess:`En ny kode har blitt sendt til e-posten din`,resendText:`Send kode på nytt`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,title:`Skriv inn tilbakestillingskode`,noPassword:`Passord er påkrevd`}},signup:Dp,"signup-id":{"signup-id":{buttonText:`Fortsett`,description:`Registrer deg for å fortsette`,"email-already-exists":`E-postadressen er allerede registrert`,emailPlaceholder:`E-postadresse`,federatedConnectionButtonText:"Fortsett med ${connectionName}","invalid-email-format":`Ugyldig e-postadresse`,loginActionLinkText:`Logg inn`,loginActionText:`Har du allerede en konto?`,"no-email":`Vennligst oppgi en e-postadresse`,pageTitle:"Registrer deg | ${clientName}",phonePlaceholder:`Telefonnummer`,separatorText:`eller`,title:`Opprett kontoen din`,usernamePlaceholder:`Brukernavn`}},"signup-password":{"signup-password":{buttonText:`Fortsett`,description:`Opprett et passord for å fortsette`,hidePasswordText:`Skjul passord`,"no-password":`Passord er påkrevd`,pageTitle:"Registrer deg | ${clientName}","password-policy-not-met":`Passordet oppfyller ikke kravene`,"password-too-weak":`Passordet er for svakt`,passwordPlaceholder:`Passord`,showPasswordText:`Vis passord`,title:`Opprett passordet ditt`,passwordTooShort:"Passordet må være minst ${minLength} tegn",passwordMissingLowercase:`Passordet må inneholde minst én liten bokstav`,passwordMissingUppercase:`Passordet må inneholde minst én stor bokstav`,passwordMissingNumber:`Passordet må inneholde minst ett tall`,passwordMissingSpecial:`Passordet må inneholde minst ett spesialtegn`,passwordReused:`Passordet har blitt brukt nylig og kan ikke gjenbrukes`,passwordContainsPersonalInfo:`Passordet kan ikke inneholde personlig informasjon som navn eller e-post`,passwordContainsForbiddenWord:`Passordet inneholder et forbudt ord`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Fortsett`,codeLabel:`Bekreftelseskode`,codePlaceholder:`Skriv inn kode`,defaultDescription:`Skriv inn bekreftelseskoden som ble sendt til telefonen din`,description:"Vi sendte en kode til ${username}","invalid-code":`Ugyldig kode`,noCode:`Vennligst skriv inn bekreftelseskoden`,pageTitle:"Skriv inn kode | ${clientName}",resendText:`Send kode på nytt`,sessionExpired:`Økten din har utløpt. Vennligst prøv igjen.`,title:`Sjekk telefonen din`,unexpectedError:`En uventet feil oppstod`,tooManyRequests:`For mange forsøk. Vent litt og prøv igjen.`}},status:Op},oie=c({common:()=>kp,consent:()=>Ap,default:()=>sie,invitation:()=>jp,login:()=>Mp,mfa:()=>Np,organizations:()=>Fp,passkeys:()=>Pp,signup:()=>Ip,status:()=>Lp}),kp={common:{alertListTitle:`Powiadomienia`,backText:`Wróć`,backToLoginText:`Wróć do logowania`,cancelText:`Anuluj`,closeText:`Zamknij`,contactSupportText:`Potrzebujesz pomocy?`,continueText:`Kontynuuj`,copyrightText:"© ${currentYear} ${companyName}",errorText:`Coś poszło nie tak. Spróbuj ponownie.`,hidePasswordText:`Ukryj hasło`,loadingText:`Ładowanie...`,orText:`lub`,privacyPolicyText:`Polityka prywatności`,showPasswordText:`Pokaż hasło`,termsOfServiceText:`Regulamin`,termsShortText:`Zasady`,tryAgainText:`Spróbuj ponownie`},account:{title:`Ustawienia konta`,description:`Zarządzaj swoim kontem`,editProfileLabel:`Edytuj profil`,editProfileDetail:`Imię i nazwisko, e-mail, numer telefonu i zdjęcie`,securityLabel:`Ustawienia bezpieczeństwa`,securityDetail:`Uwierzytelnianie wieloskładnikowe`,securityMethodsCountOne:"${count} skonfigurowana metoda",securityMethodsCount:"Skonfigurowane metody: ${count}",passkeysLabel:`Klucze dostępu`,passkeysDetail:`Logowanie bez hasła`,passkeysCountOne:"${count} zarejestrowany klucz dostępu",passkeysCount:"Zarejestrowane klucze dostępu: ${count}",linkedAccountsLabel:`Połączone konta`,linkedAccountsDetail:`Połącz konta społecznościowe`,linkedAccountsCountOne:"${count} połączone konto",linkedAccountsCount:"Połączone konta: ${count}",deleteAccountLabel:`Usuń konto`,deleteAccountDetail:`Trwale usuń swoje konto i dane`,logoutText:`Wyloguj się`},"account-profile":{title:`Edytuj profil`,description:`Zaktualizuj swoje dane osobowe`,givenNameLabel:`Imię`,familyNameLabel:`Nazwisko`,nicknameLabel:`Pseudonim`,phoneNumberLabel:`Numer telefonu`,pictureLabel:`Adres URL zdjęcia profilowego`,buttonText:`Zapisz zmiany`,backToAccountText:`Wróć do konta`,updateFailed:`Nie udało się zaktualizować profilu`},"account-delete":{title:`Usuń konto`,description:`Trwale usuń swoje konto`,warningTitle:`Uwaga: tej operacji nie można cofnąć`,warningText:`Wszystkie Twoje dane zostaną trwale usunięte, w tym profil, połączone konta i metody uwierzytelniania. Tej operacji nie można cofnąć.`,confirmationLabel:'Wpisz "${confirmationWord}", aby potwierdzić',buttonText:`Usuń moje konto`,cancelText:`Anuluj`,confirmationError:'Wpisz "${confirmationWord}", aby potwierdzić',deleteSuccess:`Twoje konto zostało usunięte`,deleteFailed:`Nie udało się usunąć konta`},"account-linked":{title:`Połączone konta`,description:`Zarządzaj połączonymi kontami`,noLinkedAccounts:`Brak połączonych kont.`,unlinkButtonText:`Odłącz`,backToAccountText:`Wróć do konta`,unlinkSuccess:`Konto zostało odłączone`,unlinkFailed:`Nie udało się odłączyć konta`},"account-security":{title:`Ustawienia bezpieczeństwa`,description:`Zarządzaj metodami uwierzytelniania dwuskładnikowego`,noEnrollments:`Nie masz skonfigurowanych metod uwierzytelniania dwuskładnikowego.`,addedOn:"Dodano ${date}",removeButtonText:`Usuń`,addTotpLabel:`Dodaj aplikację uwierzytelniającą`,addTotpDetail:`Użyj aplikacji, takiej jak Google Authenticator lub Authy`,addSmsLabel:`Dodaj telefon (SMS)`,addSmsDetail:`Otrzymuj kody weryfikacyjne SMS-em`,typeTotp:`Aplikacja uwierzytelniająca`,typePhone:`Telefon (SMS)`,typeEmail:`E-mail`,typePush:`Powiadomienie push`,typeWebauthn:`Klucz bezpieczeństwa`,backToAccountText:`Wróć do konta`,enrollmentNotFound:`Nie znaleziono metody`,removeSuccess:`Metoda uwierzytelniania została usunięta`,removeFailed:`Nie udało się usunąć metody uwierzytelniania`},"account-passkeys":{title:`Klucze dostępu`,description:`Zarządzaj kluczami dostępu do logowania bez hasła`,noPasskeysText:`Nie masz zarejestrowanych kluczy dostępu.`,defaultPasskeyName:`Klucz dostępu`,syncedBadgeText:`Zsynchronizowany`,addedOnText:"Dodano ${date}",renameButtonText:`Zmień nazwę`,removeButtonText:`Usuń`,renamePromptText:`Wpisz nową nazwę tego klucza dostępu:`,addPasskeyButtonText:`Dodaj klucz dostępu`,backToAccountText:`Wróć do konta`,logoutText:`Wyloguj się`,passkeyNotFoundText:`Nie znaleziono klucza dostępu`,passkeyRemovedText:`Klucz dostępu został usunięty`,removeFailedText:`Nie udało się usunąć klucza dostępu`,invalidNameText:`Nazwa musi mieć od 1 do 64 znaków`,passkeyRenamedText:`Nazwa klucza dostępu została zmieniona`,renameFailedText:`Nie udało się zmienić nazwy klucza dostępu`,startRegistrationFailedText:`Nie udało się rozpocząć rejestracji klucza dostępu`,missingCredentialText:`Brak danych klucza dostępu`,challengeExpiredText:`Żądanie wygasło. Spróbuj ponownie.`,invalidCredentialText:`Nieprawidłowe dane klucza dostępu`,verificationFailedText:`Weryfikacja klucza dostępu nie powiodła się`,passkeyAddedText:`Klucz dostępu został dodany`,registrationFailedText:`Rejestracja klucza dostępu nie powiodła się. Spróbuj ponownie.`},"account-mfa-phone-enrollment":{title:`Skonfiguruj telefon (SMS)`,description:`Wpisz numer telefonu, aby otrzymywać kody weryfikacyjne SMS-em.`,phoneLabel:`Numer telefonu`,sendCodeButtonText:`Wyślij kod weryfikacyjny`,backToSecurityText:`Wróć do ustawień zabezpieczeń`,verifyTitle:`Zweryfikuj numer telefonu`,verifyDescription:`Wpisz kod weryfikacyjny wysłany na Twój telefon.`,codeSentText:"Kod weryfikacyjny został wysłany na numer ${phoneNumber}",codeSentToYourPhoneText:`Kod weryfikacyjny został wysłany na Twój telefon`,codeLabel:`Kod weryfikacyjny`,codePlaceholder:`Wpisz kod weryfikacyjny`,verifyButtonText:`Zweryfikuj i włącz`,noPhoneText:`Wpisz swój numer telefonu`,invalidPhoneText:`Wpisz prawidłowy numer telefonu`,sendCodeFailedText:`Nie udało się wysłać kodu weryfikacyjnego. Spróbuj ponownie.`,noCodeText:`Wpisz kod weryfikacyjny`,invalidCodeText:`Nieprawidłowy kod. Spróbuj ponownie.`,sessionInvalidText:`Coś poszło nie tak. Rozpocznij rejestrację od nowa.`},"account-mfa-totp-enrollment":{title:`Skonfiguruj aplikację uwierzytelniającą`,description:`Zeskanuj kod QR aplikacją uwierzytelniającą, a następnie wpisz poniżej kod weryfikacyjny.`,qrCodeAltText:`Kod QR`,manualKeyText:`Lub wpisz ten klucz ręcznie:`,codeLabel:`Kod weryfikacyjny`,codePlaceholder:`Wpisz 6-cyfrowy kod`,verifyButtonText:`Zweryfikuj i włącz`,backToSecurityText:`Wróć do ustawień zabezpieczeń`,noCodeText:`Wpisz kod weryfikacyjny`,invalidCodeText:`Nieprawidłowy kod. Spróbuj ponownie.`,verificationFailedText:`Weryfikacja nie powiodła się. Spróbuj ponownie.`}},Ap={consent:{buttonText:`Zaakceptuj`,cancelButtonText:`Odmów`,description:"${clientName} prosi o dostęp do Twojego konta",pageTitle:"Autoryzacja | ${clientName}",scopesTitle:"Umożliwi to ${clientName}:",title:"Autoryzuj ${clientName}",accessAccountText:"chce uzyskać dostęp do Twojego konta ${tenantName} jako ${userName}.",notAuthenticated:`Musisz się zalogować, aby kontynuować.`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,consentStorageNotConfigured:`Nie udało się zapisać Twojej zgody. Skontaktuj się z właścicielem aplikacji.`},"connect-consent":{title:`Połącz aplikację`,description:"Zezwolić ${domain} na działanie w Twoim imieniu?",connectAccountText:"chce połączyć się z Twoim kontem ${tenantName} jako ${userName}.",workspaceLabel:`Obszar roboczy:`,apiLabel:`Dla API:`,permissionsLabel:`Żądane uprawnienia:`,localDevBadge:`Środowisko lokalne`,localDevTooltip:`Ta witryna to lokalne środowisko deweloperskie, a nie produkcyjne. Połączenie nie będzie działać poza tym komputerem lub siecią.`,buttonText:`Połącz`,cancelText:`Anuluj`,notAuthenticated:`Musisz się zalogować, aby kontynuować.`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,workspaceSelectionRequired:`Najpierw wybierz obszar roboczy.`,noWorkspaceAccess:`Nie masz dostępu do tego obszaru roboczego`,workspaceNotFound:`Nie znaleziono obszaru roboczego`},"connect-tenant-select":{title:`Wybierz obszar roboczy`,description:"Wybierz obszar roboczy ${tenantName}, z którym ma się połączyć ${domain}.",noWorkspacesDescription:`Brak dostępnych obszarów roboczych`,noWorkspacesText:"Nie masz dostępu do żadnego obszaru roboczego ${tenantName}. Poproś administratora o zaproszenie.",cancelText:`Anuluj`,notAuthenticated:`Musisz się zalogować, aby kontynuować.`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,noWorkspaceSelected:`Wybierz obszar roboczy.`,noWorkspaceAccess:`Nie masz dostępu do tego obszaru roboczego`}},jp={invitation:{acceptButtonText:`Przyjmij zaproszenie`,description:"${inviterName} zaprosił Cię do dołączenia do ${organizationName} w ${clientName}",pageTitle:"Zaproszenie | ${clientName}",title:`Otrzymałeś zaproszenie`,defaultOrganizationName:`organizacji`,acceptFailed:`Nie udało się dokończyć konfiguracji konta. Spróbuj ponownie.`}},Mp={login:{alertListTitle:`Powiadomienia`,buttonText:`Kontynuuj`,description:"Zaloguj się do ${clientName}.",editEmailText:`Edytuj`,emailPlaceholder:`Adres e-mail`,enterACodeBtn:`Zaloguj się kodem`,enterACodeShortBtn:`Kod`,federatedConnectionButtonText:"Kontynuuj z ${connectionName}",lastUsedText:`Ostatnio używane`,footerLinkText:`Zarejestruj się`,footerText:`Nie masz konta?`,forgotPasswordText:`Zapomniałeś hasła?`,hidePasswordText:`Ukryj hasło`,invalidEmail:`Nieprawidłowy adres e-mail`,invalidIdentifier:`Nieprawidłowy adres e-mail lub nazwa użytkownika`,invitationDescription:"Zaloguj się, aby przyjąć zaproszenie od ${inviterName} do dołączenia do ${companyName} w ${clientName}.",invitationTitle:`Otrzymałeś zaproszenie!`,logoAltText:"${companyName}","no-email":`Wprowadź adres e-mail`,"no-password":`Hasło jest wymagane`,pageTitle:"Logowanie | ${clientName}",passwordLoginNotAvailable:`Logowanie hasłem jest niedostępne`,passwordPlaceholder:`Hasło`,phonePlaceholder:`Numer telefonu`,separatorText:`lub`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,showPasswordText:`Pokaż hasło`,signupActionLinkText:`Zarejestruj się`,signupActionText:`Nie masz konta?`,title:`Witamy`,tooManyFailedLogins:`Zbyt wiele nieudanych prób logowania. Spróbuj ponownie później.`,unverifiedEmail:`Zweryfikuj swój adres e-mail przed zalogowaniem`,userAccountDoesNotExist:`Konto użytkownika nie istnieje`,usernamePlaceholder:`Nazwa użytkownika lub adres e-mail`,usernameTooLong:"Nazwa użytkownika musi mieć maksymalnie ${max} znaków",usernameTooShort:"Nazwa użytkownika musi mieć co najmniej ${min} znaków",wrongCredentials:`Nieprawidłowa nazwa użytkownika lub hasło`,passkeyButtonText:`Zaloguj się za pomocą passkey`,userBlocked:`Twoje konto zostało zablokowane po wielu kolejnych nieudanych próbach logowania.`,tooManyRequests:`Zbyt wiele prób. Poczekaj chwilę i spróbuj ponownie.`,unexpectedError:`Coś poszło nie tak. Spróbuj ponownie.`}},Np={mfa:{backupCodeText:`Użyj kodu zapasowego`,description:`Wybierz metodę weryfikacji`,pageTitle:"Uwierzytelnianie wieloskładnikowe | ${clientName}",title:`Zweryfikuj swoją tożsamość`}},Pp={"passkey-enrollment-nudge":{title:`Zabezpiecz swoje konto kluczem dostępu`,description:`Klucze dostępu wykorzystują biometrię lub PIN urządzenia, aby logować się szybciej i bezpieczniej.`,enrollButtonText:`Skonfiguruj klucz dostępu`,snoozeButtonText:`Może później`,optOutLinkText:`Nie pokazuj ponownie`,pageTitle:"Konfiguracja Klucza Dostępu | ${clientName}"},"passkey-enrollment":{title:`Utwórz klucz dostępu`,description:`Postępuj zgodnie z instrukcjami przeglądarki, aby utworzyć klucz dostępu dla tego konta.`,errorMessage:`Nie udało się utworzyć klucza dostępu. Spróbuj ponownie.`,cancelLinkText:`Pomiń na razie`,retryButtonText:`Spróbuj ponownie`,enrollmentComplete:`Twój klucz dostępu został pomyślnie skonfigurowany. Możesz zamknąć tę stronę.`,pageTitle:"Tworzenie Klucza Dostępu | ${clientName}",sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,enrollmentRequired:`Aby kontynuować, musisz skonfigurować klucz dostępu.`,challengeExpired:`Żądanie wygasło. Spróbuj ponownie.`},"passkey-challenge":{title:`Zaloguj się za pomocą passkey`,description:`Postępuj zgodnie z instrukcjami przeglądarki, aby zweryfikować swoją tożsamość.`,errorMessage:`Uwierzytelnianie za pomocą passkey nie powiodło się. Spróbuj ponownie.`,cancelLinkText:`Powrót do logowania`,retryButtonText:`Spróbuj ponownie`,pageTitle:"Logowanie za pomocą passkey | ${clientName}",sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`}},Fp={organizations:{description:`Wybierz organizację, do której chcesz się zalogować`,pageTitle:"Wybierz organizację | ${clientName}",searchPlaceholder:`Szukaj organizacji`,title:`Wybierz swoją organizację`}},Ip={signup:{buttonText:`Zarejestruj się`,confirmPasswordPlaceholder:`Potwierdź hasło`,description:`Zarejestruj się, aby kontynuować`,"email-already-exists":`Ten adres e-mail jest już zarejestrowany`,emailPlaceholder:`Adres e-mail`,federatedConnectionButtonText:"Kontynuuj z ${connectionName}",hidePasswordText:`Ukryj hasło`,"invalid-email-format":`Nieprawidłowy adres e-mail`,loginActionLinkText:`Zaloguj się`,loginActionText:`Masz już konto?`,"no-email":`Wprowadź adres e-mail`,"no-password":`Hasło jest wymagane`,"no-username":`Nazwa użytkownika jest wymagana`,pageTitle:"Rejestracja | ${clientName}",passwordPlaceholder:`Hasło`,passwordsDidntMatch:`Hasła nie są zgodne`,phonePlaceholder:`Numer telefonu`,privacyPolicyLinkText:`Polityka prywatności`,separatorText:`lub`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,showPasswordText:`Pokaż hasło`,termsOfServiceLinkText:`Regulamin`,termsText:`Rejestrując się, akceptujesz nasz`,title:`Utwórz konto`,"username-already-exists":`Ta nazwa użytkownika jest już zajęta`,usernamePlaceholder:`Nazwa użytkownika`,verifyEmailText:`Sprawdź swoją pocztę, aby zweryfikować konto`,confirmPasswordRequired:`Potwierdź hasło`,createUserFailed:`Nie udało się utworzyć konta. Spróbuj ponownie.`}},Lp={status:{continueButtonText:`Kontynuuj`,errorTitle:`Błąd`,pageTitle:"Status | ${clientName}",successTitle:`Sukces`,title:`Status`}},sie={common:kp,consent:Ap,"device-flow":{"device-flow":{buttonText:`Kontynuuj`,codePlaceholder:`Wprowadź kod`,description:`Wprowadź kod wyświetlony na Twoim urządzeniu`,"expired-code":`Kod wygasł`,"invalid-code":`Wprowadzony kod jest nieprawidłowy`,pageTitle:"Aktywacja urządzenia | ${clientName}",title:`Aktywuj swoje urządzenie`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Kontynuuj`,codeLabel:`Kod weryfikacyjny`,codePlaceholder:`Wprowadź kod`,defaultDescription:`Wprowadź kod weryfikacyjny wysłany na Twój adres e-mail`,description:"Wysłaliśmy kod na ${email}","invalid-code":`Nieprawidłowy kod`,noCode:`Wprowadź kod weryfikacyjny`,pageTitle:"Wprowadź kod | ${clientName}",resendText:`Wyślij ponownie kod`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,title:`Sprawdź swoją pocztę`,unexpectedError:`Wystąpił nieoczekiwany błąd`,usePasswordText:`Zaloguj się hasłem`,tooManyRequests:`Zbyt wiele prób. Poczekaj chwilę i spróbuj ponownie.`}},"email-verification":{"email-verification":{description:"Wysłaliśmy wiadomość na ${email}",linkAlreadyUsed:`Ten link weryfikacyjny został już użyty. Poproś o nowy.`,linkInvalid:`Ten link weryfikacyjny jest nieprawidłowy.`,linkInvalidOrExpired:`Ten link weryfikacyjny jest nieprawidłowy lub wygasł. Poproś o nowy.`,linkInvalidTitle:`Link weryfikacyjny jest nieprawidłowy`,linkWrongType:`Tego linku nie można użyć do weryfikacji adresu e-mail.`,pageTitle:"Weryfikacja e-mail | ${clientName}",resendText:`Wyślij ponownie e-mail`,successDescription:`Twój adres e-mail został pomyślnie zweryfikowany.`,successTitle:`E-mail zweryfikowany`,title:`Zweryfikuj swój adres e-mail`},"email-verification-code":{buttonText:`Kontynuuj`,codeLabel:`Kod weryfikacyjny`,codePlaceholder:`Wpisz 6-cyfrowy kod`,defaultDescription:`Wpisz kod, który wysłaliśmy na Twój adres e-mail, aby potwierdzić adres i kontynuować.`,description:"Wysłaliśmy kod na adres ${email}. Wpisz go, aby potwierdzić swój adres e-mail i kontynuować.",invalidCode:`Wprowadzony kod jest nieprawidłowy lub wygasł`,noCode:`Wpisz kod weryfikacyjny`,pageTitle:"Weryfikacja e-mail | ${clientName}",resendFailed:`Nie udało się ponownie wysłać kodu. Spróbuj ponownie.`,resendSuccess:`Nowy kod został wysłany na Twój adres e-mail`,resendText:`Wyślij kod ponownie`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,title:`Potwierdź swój adres e-mail`,tooManyAttempts:`Zbyt wiele prób. Spróbuj ponownie później.`},"email-verification-link-sent":{defaultDescription:`Wysłaliśmy link weryfikacyjny na Twój adres e-mail. Kliknij link, aby potwierdzić adres, a następnie zaloguj się ponownie.`,description:"Wysłaliśmy link weryfikacyjny na adres ${email}. Kliknij link, aby potwierdzić adres, a następnie zaloguj się ponownie.",pageTitle:"Weryfikacja e-mail | ${clientName}",resendFailed:`Nie udało się ponownie wysłać wiadomości. Spróbuj ponownie.`,resendSuccess:`Wysłano nową wiadomość weryfikacyjną`,resendText:`Wyślij wiadomość ponownie`,title:`Sprawdź swoją skrzynkę`}},invitation:jp,login:Mp,"login-id":{"login-id":{alertListTitle:`Powiadomienia`,"auth0-users-validation":`Coś poszło nie tak, spróbuj ponownie później`,"authentication-failure":`Przepraszamy, wystąpił błąd podczas logowania`,buttonText:`Kontynuuj`,"captcha-client-failure":`Nie udało się załadować weryfikacji bezpieczeństwa. Spróbuj ponownie. (Kod błędu: #{errorCode})`,"captcha-validation-failure":`Przepraszamy, wystąpił błąd podczas weryfikacji captcha. Spróbuj ponownie.`,captchaCodePlaceholder:`Wprowadź kod widoczny powyżej`,"custom-script-error-code":`Coś poszło nie tak, spróbuj ponownie później.`,description:"Zaloguj się do ${clientName}.",editEmailText:`Edytuj`,emailPlaceholder:`Adres e-mail`,federatedConnectionButtonText:"Kontynuuj z ${connectionName}",lastUsedText:`Ostatnio używane`,footerLinkText:`Zarejestruj się`,footerText:`Nie masz konta?`,forgotPasswordText:`Zapomniałeś hasła?`,hidePasswordText:`Ukryj hasło`,"invalid-captcha":`Rozwiąż zadanie, aby potwierdzić, że nie jesteś robotem.`,"invalid-code":`Nieprawidłowy kod`,"invalid-connection":`Nieprawidłowe połączenie`,"invalid-email-format":`Nieprawidłowy adres e-mail`,"invalid-email-phone":`Wprowadź prawidłowy adres e-mail lub numer telefonu. Numery telefonów muszą zawierać kod kraju.`,"invalid-email-phone-username":`Wprowadź prawidłowy adres e-mail, numer telefonu lub nazwę użytkownika. Numery telefonów muszą zawierać kod kraju.`,"invalid-email-username":`Wprowadź prawidłowy adres e-mail lub nazwę użytkownika`,"invalid-expired-code":`Nieprawidłowy lub wygasły kod użytkownika`,"invalid-login-id":`Wprowadzono nieprawidłowy identyfikator logowania`,"invalid-phone-username":`Wprowadź prawidłowy numer telefonu lub nazwę użytkownika. Numery telefonów muszą zawierać kod kraju.`,"invalid-recaptcha":`Zaznacz pole wyboru, aby potwierdzić, że nie jesteś robotem.`,"invalid-username":"Nazwa użytkownika może zawierać tylko znaki alfanumeryczne lub: '${characters}'. Nazwa użytkownika powinna mieć od ${min} do ${max} znaków.",invitationDescription:"Zaloguj się, aby przyjąć zaproszenie od ${inviterName} do dołączenia do ${companyName} w ${clientName}.",invitationTitle:`Otrzymałeś zaproszenie!`,"ip-blocked":`Wykryliśmy podejrzaną aktywność logowania i dalsze próby zostaną zablokowane. Skontaktuj się z administratorem.`,logoAltText:"${companyName}","no-db-connection":`Nieprawidłowe połączenie`,"no-email":`Wprowadź adres e-mail`,"no-email-phone":`Adres e-mail lub numer telefonu jest wymagany`,"no-email-phone-username":`Numer telefonu, nazwa użytkownika lub adres e-mail jest wymagany`,"no-email-username":`Adres e-mail lub nazwa użytkownika jest wymagany`,"no-password":`Hasło jest wymagane`,"no-phone":`Wprowadź numer telefonu`,"no-phone-username":`Numer telefonu lub nazwa użytkownika jest wymagany`,"no-username":`Nazwa użytkownika jest wymagana`,pageTitle:"Logowanie | ${clientName}","password-breached":`Wykryliśmy potencjalny problem z bezpieczeństwem tego konta. Aby chronić Twoje konto, zablokowano to logowanie. Zresetuj hasło, aby kontynuować.`,passwordPlaceholder:`Hasło`,phoneOrEmailPlaceholder:`E-mail lub numer telefonu`,phoneOrUsernameOrEmailPlaceholder:`Telefon, nazwa użytkownika lub e-mail`,phoneOrUsernamePlaceholder:`Numer telefonu lub nazwa użytkownika`,phonePlaceholder:`Numer telefonu`,"same-user-login":`Zbyt wiele prób logowania dla tego użytkownika. Poczekaj chwilę i spróbuj ponownie.`,selectCountryCode:"Wybierz kod kraju, aktualnie ustawiony na ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`lub`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,showPasswordText:`Pokaż hasło`,signupActionLinkText:`Zarejestruj się`,signupActionText:`Nie masz konta?`,termsAndConditionsTemplate:'Kontynuując, akceptujesz nasze <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">Zasady i warunki</a>.',title:`Witamy`,"user-blocked":`Twoje konto zostało zablokowane po wielu kolejnych nieudanych próbach logowania.`,userAccountDoesNotExist:`Konto użytkownika nie istnieje`,usernameOnlyPlaceholder:`Nazwa użytkownika`,usernameOrEmailPlaceholder:`Nazwa użytkownika lub adres e-mail`,usernamePlaceholder:`Nazwa użytkownika`,usernameTooLong:"Nazwa użytkownika musi mieć maksymalnie ${max} znaków",usernameTooShort:"Nazwa użytkownika musi mieć co najmniej ${min} znaków","wrong-credentials":`Nieprawidłowa nazwa użytkownika lub hasło`,"wrong-email-credentials":`Nieprawidłowy adres e-mail lub hasło`,"wrong-email-phone-credentials":`Nieprawidłowy adres e-mail, numer telefonu lub hasło. Numery telefonów muszą zawierać kod kraju.`,"wrong-email-phone-username-credentials":`Nieprawidłowy adres e-mail, numer telefonu, nazwa użytkownika lub hasło. Numery telefonów muszą zawierać kod kraju.`,"wrong-email-username-credentials":`Nieprawidłowy adres e-mail, nazwa użytkownika lub hasło`,"wrong-phone-credentials":`Nieprawidłowy numer telefonu lub hasło`,"wrong-phone-username-credentials":`Nieprawidłowy numer telefonu, nazwa użytkownika lub hasło. Numery telefonów muszą zawierać kod kraju.`,"wrong-username-credentials":`Nieprawidłowa nazwa użytkownika lub hasło`,passkeyButtonText:`Zaloguj się za pomocą passkey`}},"login-password":{"login-password":{buttonText:`Zaloguj się`,description:"Zaloguj się do ${clientName}",forgotPasswordText:`Zapomniałeś hasła?`,hidePasswordText:`Ukryj hasło`,"no-password":`Hasło jest wymagane`,pageTitle:"Logowanie | ${clientName}","password-breached":`Wykryliśmy potencjalny problem z bezpieczeństwem tego konta. Aby chronić Twoje konto, zablokowano to logowanie. Zresetuj hasło, aby kontynuować.`,passwordPlaceholder:`Hasło`,showPasswordText:`Pokaż hasło`,signingInAs:"Logujesz się jako ${email}",title:`Wprowadź hasło`,unverifiedEmail:`Zweryfikuj swój adres e-mail przed zalogowaniem`,"user-blocked":`Twoje konto zostało zablokowane po wielu kolejnych nieudanych próbach logowania.`,"wrong-credentials":`Nieprawidłowe hasło`,sendCodeText:`Zaloguj się kodem`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,tooManyRequests:`Zbyt wiele prób. Poczekaj chwilę i spróbuj ponownie.`,unexpectedError:`Coś poszło nie tak. Spróbuj ponownie.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`e-mail`,authMethodEmailOrPhone:`e-mail lub numer telefonu`,authMethodPhone:`numer telefonu`,description:"Zaloguj się za pomocą swojego ${authMethod}",emailOrPhonePlaceholder:`Adres e-mail lub numer telefonu`,emailPlaceholder:`Adres e-mail`,invalidEmail:`Wprowadź prawidłowy adres e-mail`,invalidIdentifier:`Wprowadź prawidłowy adres e-mail lub numer telefonu`,invalidPhone:`Wprowadź prawidłowy numer telefonu z kodem kraju`,noEmail:`Wprowadź swój adres e-mail`,noPhone:`Wprowadź swój numer telefonu`,phonePlaceholder:`Numer telefonu`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,title:`Zaloguj się kodem`,userAccountDoesNotExist:`Konto użytkownika nie istnieje`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Kliknij link w wiadomości e-mail, aby się zalogować`,description:"Wysłaliśmy link na ${username}. Kliknij go, aby się zalogować.",resendText:`Wyślij ponownie link`,spamText:`Nie otrzymałeś wiadomości? Sprawdź folder spam.`,title:`Sprawdź swoją pocztę`}},mfa:Np,"mfa-email":{"mfa-email":{buttonText:`Kontynuuj`,codePlaceholder:`Wprowadź kod`,description:"Wysłaliśmy kod na ${email}","invalid-code":`Wprowadzony kod jest nieprawidłowy`,pageTitle:"Weryfikacja e-mail | ${clientName}",resendText:`Wyślij ponownie kod`,title:`Sprawdź swoją pocztę`}},"mfa-otp":{"mfa-otp":{buttonText:`Kontynuuj`,codePlaceholder:`Wprowadź kod`,description:`Wprowadź 6-cyfrowy kod z aplikacji uwierzytelniającej`,"invalid-code":`Wprowadzony kod jest nieprawidłowy`,pageTitle:"Wprowadź kod | ${clientName}",title:`Wprowadź swój kod`},"mfa-totp-enrollment":{title:`Skonfiguruj aplikację uwierzytelniającą`,description:`Zeskanuj poniższy kod QR za pomocą aplikacji uwierzytelniającej, a następnie wprowadź 6-cyfrowy kod w celu weryfikacji`,secretLabel:`Lub wprowadź ten kod ręcznie:`,codePlaceholder:`Wprowadź kod`,continueButtonText:`Zweryfikuj i aktywuj`,"invalid-code":`Wprowadzony kod jest nieprawidłowy. Spróbuj ponownie.`,"transaction-not-found":`Twoja transakcja rejestracji wygasła, musisz zacząć od nowa.`,pageTitle:"Konfiguracja uwierzytelniania | ${clientName}",unexpectedError:`Coś poszło nie tak. Spróbuj ponownie.`,enrollmentComplete:`Rejestracja MFA została zakończona. Możesz zamknąć tę stronę.`,pickAuthenticatorText:`Wypróbuj inną metodę`,qrCodeAltText:`Kod QR`},"mfa-totp-challenge":{title:`Zweryfikuj swoją tożsamość`,description:`Wprowadź 6-cyfrowy kod z aplikacji uwierzytelniającej`,codePlaceholder:`Wprowadź kod`,continueButtonText:`Kontynuuj`,"invalid-code":`Wprowadzony kod jest nieprawidłowy`,"transaction-not-found":`Twoja transakcja rejestracji wygasła, musisz zacząć od nowa.`,unexpectedError:`Coś poszło nie tak. Spróbuj ponownie.`,pageTitle:"Weryfikacja tożsamości | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Użyj swojego numeru telefonu, aby się zalogować | ${clientName}",title:`Zweryfikuj swoją tożsamość`,description:"Wysłaliśmy kod na ${phoneNumber}",continueButtonText:`Kontynuuj`,changePhoneText:`Wybierz inny numer telefonu.`,smsButtonText:`Wiadomość tekstowa`,voiceButtonText:`Połączenie głosowe`,chooseMessageTypeText:`Jak chcesz otrzymać kod?`,pickAuthenticatorText:`Wypróbuj inną metodę`,logoAltText:"${companyName}",codePlaceholder:`Wpisz kod`,"send-sms-failed":`Wystąpił problem z wysłaniem SMS-a`,"send-voice-failed":`Wystąpił problem z wykonaniem połączenia głosowego`,"invalid-phone-format":`Numer telefonu może zawierać tylko cyfry.`,"invalid-phone":`Wygląda na to, że Twój numer telefonu jest nieprawidłowy. Sprawdź i spróbuj ponownie.`,"too-many-sms":`Przekroczono maksymalną liczbę wiadomości telefonicznych na godzinę. Poczekaj kilka minut i spróbuj ponownie.`,"too-many-voice":`Przekroczono maksymalną liczbę połączeń telefonicznych na godzinę. Poczekaj kilka minut i spróbuj ponownie.`,"transaction-not-found":`Twoja transakcja rejestracji wygasła, musisz zacząć od nowa.`,"no-phone":`Wpisz numer telefonu`,noCode:`Wprowadź kod weryfikacyjny`,invalidCode:`Wprowadzony kod jest nieprawidłowy. Spróbuj ponownie.`,unexpectedError:`Coś poszło nie tak. Spróbuj ponownie.`,resendSuccess:`Wysłaliśmy nowy kod na Twój telefon`,enrollmentComplete:`Rejestracja MFA została zakończona. Możesz zamknąć tę stronę.`},"mfa-phone-enrollment":{pageTitle:"Wpisz swój numer telefonu, aby zalogować się kodem telefonicznym | ${clientName}",title:`Zabezpiecz swoje konto`,description:`Wpisz kod kraju i numer telefonu, na który możemy wysłać 6-cyfrowy kod:`,continueButtonText:`Kontynuuj`,smsButtonText:`Wiadomość tekstowa`,voiceButtonText:`Połączenie głosowe`,chooseMessageTypeText:`Jak chcesz otrzymać kod?`,pickAuthenticatorText:`Wypróbuj inną metodę`,placeholder:`Wpisz swój numer telefonu`,logoAltText:"${companyName}",selectCountryCode:"Wybierz kod kraju, aktualnie ustawiony na ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`Wystąpił problem z wysłaniem SMS-a`,"send-voice-failed":`Wystąpił problem z wykonaniem połączenia głosowego`,"sms-authenticator-error":`Nie udało się wysłać SMS-a. Spróbuj ponownie później.`,"invalid-phone-format":`Numer telefonu może zawierać tylko cyfry.`,"invalid-phone":`Wygląda na to, że Twój numer telefonu jest nieprawidłowy. Sprawdź i spróbuj ponownie.`,"too-many-sms":`Przekroczono maksymalną liczbę wiadomości telefonicznych na godzinę. Poczekaj kilka minut i spróbuj ponownie.`,"too-many-voice":`Przekroczono maksymalną liczbę połączeń telefonicznych na godzinę. Poczekaj kilka minut i spróbuj ponownie.`,"transaction-not-found":`Twoja transakcja rejestracji wygasła, musisz zacząć od nowa.`,"no-phone":`Wpisz numer telefonu`,"phone-is-too-short":`Numer telefonu jest za krótki`,"phone-is-too-long":`Numer telefonu jest za długi`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Wybierz metodę weryfikacji | ${clientName}",title:`Wybierz metodę weryfikacji`,description:`Wybierz, w jaki sposób chcesz zweryfikować swoją tożsamość`,authenticatorAppLabel:`Aplikacja uwierzytelniająca`,authenticatorAppDescription:`Użyj aplikacji uwierzytelniającej, aby uzyskać kod weryfikacyjny`,smsLabel:`Wiadomość tekstowa`,smsDescription:`Otrzymaj kod weryfikacyjny wysłany na swój telefon`,passkeyLabel:`Klucz dostępu`,passkeyDescription:`Użyj biometrii urządzenia lub klucza bezpieczeństwa`}},"mfa-push":{"mfa-push":{description:`Wysłaliśmy powiadomienie na Twoje urządzenie`,pageTitle:"Powiadomienie push | ${clientName}",resendText:`Wyślij ponownie powiadomienie`,title:`Zatwierdź żądanie`,useCodeText:`Wprowadź kod ręcznie`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Kontynuuj`,codePlaceholder:`Kod odzyskiwania`,description:`Wprowadź jeden z kodów odzyskiwania`,"invalid-code":`Wprowadzony kod odzyskiwania jest nieprawidłowy`,pageTitle:"Kod odzyskiwania | ${clientName}",title:`Wprowadź kod odzyskiwania`}},"mfa-voice":{"mfa-voice":{buttonText:`Zadzwoń do mnie`,codePlaceholder:`Wprowadź kod`,description:"Zadzwonimy na ${phoneNumber} z Twoim kodem","invalid-code":`Wprowadzony kod jest nieprawidłowy`,pageTitle:"Połączenie głosowe | ${clientName}",title:`Odbierz połączenie telefoniczne`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Spróbuj ponownie`,description:`Włóż klucz bezpieczeństwa i postępuj zgodnie z instrukcjami`,pageTitle:"Klucz bezpieczeństwa | ${clientName}",title:`Użyj klucza bezpieczeństwa`}},passkeys:Pp,organizations:Fp,"reset-password":{"reset-password":{backToLoginText:`Wróć do logowania`,buttonText:`Kontynuuj`,codeExpired:`Kod resetu hasła wygasł. Poproś o nowy.`,confirmPasswordLabel:`Potwierdź hasło`,confirmPasswordPlaceholder:`Potwierdź hasło`,description:`Wprowadź swój adres e-mail, aby zresetować hasło`,emailPlaceholder:`Adres e-mail`,failed:`Reset hasła nie powiódł się. Spróbuj ponownie.`,"invalid-email-format":`Nieprawidłowy adres e-mail`,"no-email":`Wprowadź adres e-mail`,pageTitle:"Resetowanie hasła | ${clientName}",passwordLabel:`Nowe hasło`,passwordPlaceholder:`Nowe hasło`,passwordTooWeak:`Hasło jest zbyt słabe`,passwordsDidntMatch:`Hasła nie są zgodne`,successDescription:`Wysłaliśmy link do resetowania hasła na Twój adres e-mail.`,successTitle:`Sprawdź swoją pocztę`,title:`Zapomniałeś hasła?`,"user-not-found":`Nie znaleziono użytkownika`,noPassword:`Hasło jest wymagane`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`},"reset-password-code":{backToLoginText:`Wróć do logowania`,buttonText:`Zresetuj hasło`,codeLabel:`Kod resetowania`,codePlaceholder:`Wprowadź 6-cyfrowy kod`,confirmPasswordLabel:`Potwierdź hasło`,confirmPasswordPlaceholder:`Potwierdź hasło`,defaultDescription:`Wprowadź kod wysłany na Twój e-mail i wybierz nowe hasło`,description:"Wysłaliśmy kod na ${email}",failed:`Reset hasła nie powiódł się. Spróbuj ponownie.`,invalidCode:`Wprowadzony kod jest nieprawidłowy lub wygasł`,noCode:`Wprowadź kod resetowania`,pageTitle:"Wprowadź kod resetowania | ${clientName}",passwordLabel:`Nowe hasło`,passwordPlaceholder:`Nowe hasło`,passwordTooWeak:`Hasło jest zbyt słabe`,passwordsDidntMatch:`Hasła nie są zgodne`,resendFailed:`Nie udało się ponownie wysłać kodu. Spróbuj ponownie.`,resendSuccess:`Nowy kod został wysłany na Twój e-mail`,resendText:`Wyślij kod ponownie`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,title:`Wprowadź kod resetowania`,noPassword:`Hasło jest wymagane`}},signup:Ip,"signup-id":{"signup-id":{buttonText:`Kontynuuj`,description:`Zarejestruj się, aby kontynuować`,"email-already-exists":`Ten adres e-mail jest już zarejestrowany`,emailPlaceholder:`Adres e-mail`,federatedConnectionButtonText:"Kontynuuj z ${connectionName}","invalid-email-format":`Nieprawidłowy adres e-mail`,loginActionLinkText:`Zaloguj się`,loginActionText:`Masz już konto?`,"no-email":`Wprowadź adres e-mail`,pageTitle:"Rejestracja | ${clientName}",phonePlaceholder:`Numer telefonu`,separatorText:`lub`,title:`Utwórz konto`,usernamePlaceholder:`Nazwa użytkownika`}},"signup-password":{"signup-password":{buttonText:`Kontynuuj`,description:`Utwórz swoje hasło`,hidePasswordText:`Ukryj hasło`,"no-password":`Hasło jest wymagane`,pageTitle:"Rejestracja | ${clientName}","password-policy-not-met":`Hasło nie spełnia wymagań`,"password-too-weak":`Hasło jest zbyt słabe`,passwordPlaceholder:`Hasło`,showPasswordText:`Pokaż hasło`,title:`Utwórz hasło`,passwordTooShort:"Hasło musi mieć co najmniej ${minLength} znaków",passwordMissingLowercase:`Hasło musi zawierać co najmniej jedną małą literę`,passwordMissingUppercase:`Hasło musi zawierać co najmniej jedną wielką literę`,passwordMissingNumber:`Hasło musi zawierać co najmniej jedną cyfrę`,passwordMissingSpecial:`Hasło musi zawierać co najmniej jeden znak specjalny`,passwordReused:`Hasło było niedawno używane i nie może być ponownie użyte`,passwordContainsPersonalInfo:`Hasło nie może zawierać danych osobowych, takich jak imię lub adres e-mail`,passwordContainsForbiddenWord:`Hasło zawiera zakazane słowo`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Kontynuuj`,codeLabel:`Kod weryfikacyjny`,codePlaceholder:`Wprowadź kod`,defaultDescription:`Wprowadź kod weryfikacyjny wysłany na Twój telefon`,description:"Wysłaliśmy kod na ${username}","invalid-code":`Nieprawidłowy kod`,noCode:`Wprowadź kod weryfikacyjny`,pageTitle:"Wprowadź kod | ${clientName}",resendText:`Wyślij ponownie kod`,sessionExpired:`Twoja sesja wygasła. Spróbuj ponownie.`,title:`Sprawdź swój telefon`,unexpectedError:`Wystąpił nieoczekiwany błąd`,tooManyRequests:`Zbyt wiele prób. Poczekaj chwilę i spróbuj ponownie.`}},status:Lp},cie=c({common:()=>Rp,consent:()=>zp,default:()=>lie,invitation:()=>Bp,login:()=>Vp,mfa:()=>Hp,organizations:()=>Wp,passkeys:()=>Up,signup:()=>Gp,status:()=>Kp}),Rp={common:{alertListTitle:`Meddelanden`,backText:`Gå tillbaka`,backToLoginText:`Tillbaka till inloggning`,cancelText:`Gå tillbaka`,closeText:`Stäng`,contactSupportText:`Behöver du hjälp?`,continueText:`Fortsätt`,copyrightText:"© ${currentYear} ${companyName}",errorText:`Något gick fel. Vänligen försök igen.`,hidePasswordText:`Dölj lösenord`,loadingText:`Laddar...`,orText:`eller`,privacyPolicyText:`Integritetspolicy`,showPasswordText:`Visa lösenord`,termsOfServiceText:`Användarvillkor`,termsShortText:`Villkor`,tryAgainText:`Försök igen`},account:{title:`Kontoinställningar`,description:`Hantera ditt konto`,editProfileLabel:`Redigera profil`,editProfileDetail:`Namn, e-post, telefonnummer och bild`,securityLabel:`Säkerhetsinställningar`,securityDetail:`Multifaktorautentisering`,securityMethodsCountOne:"${count} metod konfigurerad",securityMethodsCount:"${count} metoder konfigurerade",passkeysLabel:`Passkeys`,passkeysDetail:`Logga in utan lösenord`,passkeysCountOne:"${count} passkey registrerad",passkeysCount:"${count} passkeys registrerade",linkedAccountsLabel:`Länkade konton`,linkedAccountsDetail:`Koppla sociala konton`,linkedAccountsCountOne:"${count} länkat konto",linkedAccountsCount:"${count} länkade konton",deleteAccountLabel:`Radera konto`,deleteAccountDetail:`Radera ditt konto och dina data permanent`,logoutText:`Logga ut`},"account-profile":{title:`Redigera profil`,description:`Uppdatera dina personuppgifter`,givenNameLabel:`Förnamn`,familyNameLabel:`Efternamn`,nicknameLabel:`Smeknamn`,phoneNumberLabel:`Telefonnummer`,pictureLabel:`URL till profilbild`,buttonText:`Spara ändringar`,backToAccountText:`Tillbaka till kontot`,updateFailed:`Det gick inte att uppdatera profilen`},"account-delete":{title:`Radera konto`,description:`Radera ditt konto permanent`,warningTitle:`Varning: Den här åtgärden är permanent`,warningText:`Alla dina data raderas permanent. Det omfattar din profil, länkade konton och autentiseringsmetoder. Åtgärden kan inte ångras.`,confirmationLabel:'Skriv "${confirmationWord}" för att bekräfta',buttonText:`Radera mitt konto`,cancelText:`Avbryt`,confirmationError:'Skriv "${confirmationWord}" för att bekräfta',deleteSuccess:`Ditt konto har raderats`,deleteFailed:`Det gick inte att radera kontot`},"account-linked":{title:`Länkade konton`,description:`Hantera dina länkade konton`,noLinkedAccounts:`Inga länkade konton.`,unlinkButtonText:`Koppla bort`,backToAccountText:`Tillbaka till kontot`,unlinkSuccess:`Kontot har kopplats bort`,unlinkFailed:`Det gick inte att koppla bort kontot`},"account-security":{title:`Säkerhetsinställningar`,description:`Hantera dina metoder för tvåfaktorsautentisering`,noEnrollments:`Du har inga metoder för tvåfaktorsautentisering konfigurerade.`,addedOn:"Tillagd ${date}",removeButtonText:`Ta bort`,addTotpLabel:`Lägg till autentiseringsapp`,addTotpDetail:`Använd en app som Google Authenticator eller Authy`,addSmsLabel:`Lägg till telefon (SMS)`,addSmsDetail:`Få verifieringskoder via sms`,typeTotp:`Autentiseringsapp`,typePhone:`Telefon (SMS)`,typeEmail:`E-post`,typePush:`Push-notis`,typeWebauthn:`Säkerhetsnyckel`,backToAccountText:`Tillbaka till kontot`,enrollmentNotFound:`Metoden hittades inte`,removeSuccess:`Autentiseringsmetoden har tagits bort`,removeFailed:`Det gick inte att ta bort autentiseringsmetoden`},"account-passkeys":{title:`Passkeys`,description:`Hantera dina passkeys för inloggning utan lösenord`,noPasskeysText:`Du har inga registrerade passkeys.`,defaultPasskeyName:`Passkey`,syncedBadgeText:`Synkad`,addedOnText:"Tillagd ${date}",renameButtonText:`Byt namn`,removeButtonText:`Ta bort`,renamePromptText:`Ange ett nytt namn för denna passkey:`,addPasskeyButtonText:`Lägg till passkey`,backToAccountText:`Tillbaka till kontot`,logoutText:`Logga ut`,passkeyNotFoundText:`Passkey hittades inte`,passkeyRemovedText:`Passkey borttagen`,removeFailedText:`Det gick inte att ta bort passkey`,invalidNameText:`Namnet måste vara mellan 1 och 64 tecken`,passkeyRenamedText:`Passkey har bytt namn`,renameFailedText:`Det gick inte att byta namn på passkey`,startRegistrationFailedText:`Det gick inte att starta registreringen av passkey`,missingCredentialText:`Uppgifter för passkey saknas`,challengeExpiredText:`Begäran har gått ut. Försök igen.`,invalidCredentialText:`Ogiltiga uppgifter för passkey`,verificationFailedText:`Verifieringen av passkey misslyckades`,passkeyAddedText:`Passkey har lagts till`,registrationFailedText:`Registreringen av passkey misslyckades. Försök igen.`},"account-mfa-phone-enrollment":{title:`Konfigurera telefon (SMS)`,description:`Ange ditt telefonnummer för att få verifieringskoder via SMS.`,phoneLabel:`Telefonnummer`,sendCodeButtonText:`Skicka verifieringskod`,backToSecurityText:`Tillbaka till säkerhetsinställningar`,verifyTitle:`Verifiera telefonnummer`,verifyDescription:`Ange verifieringskoden som skickades till din telefon.`,codeSentText:"En verifieringskod har skickats till ${phoneNumber}",codeSentToYourPhoneText:`En verifieringskod har skickats till din telefon`,codeLabel:`Verifieringskod`,codePlaceholder:`Ange verifieringskod`,verifyButtonText:`Verifiera och aktivera`,noPhoneText:`Ange ditt telefonnummer`,invalidPhoneText:`Ange ett giltigt telefonnummer`,sendCodeFailedText:`Det gick inte att skicka verifieringskoden. Försök igen.`,noCodeText:`Ange verifieringskoden`,invalidCodeText:`Ogiltig kod. Försök igen.`,sessionInvalidText:`Något gick fel. Starta registreringen igen.`},"account-mfa-totp-enrollment":{title:`Konfigurera autentiseringsapp`,description:`Skanna QR-koden med din autentiseringsapp och ange sedan verifieringskoden nedan.`,qrCodeAltText:`QR-kod`,manualKeyText:`Eller ange denna nyckel manuellt:`,codeLabel:`Verifieringskod`,codePlaceholder:`Ange 6-siffrig kod`,verifyButtonText:`Verifiera och aktivera`,backToSecurityText:`Tillbaka till säkerhetsinställningar`,noCodeText:`Ange verifieringskoden`,invalidCodeText:`Ogiltig kod. Försök igen.`,verificationFailedText:`Verifieringen misslyckades. Försök igen.`}},zp={consent:{buttonText:`Godkänn`,cancelButtonText:`Neka`,description:"${clientName} begär åtkomst till ditt konto",pageTitle:"Auktorisera | ${clientName}",scopesTitle:"Detta ger ${clientName} tillåtelse att:",title:"Auktorisera ${clientName}",accessAccountText:"vill få åtkomst till ditt ${tenantName}-konto som ${userName}.",notAuthenticated:`Du måste logga in för att fortsätta.`,sessionExpired:`Din session har gått ut. Försök igen.`,consentStorageNotConfigured:`Ditt samtycke kunde inte sparas. Kontakta applikationens ägare.`},"connect-consent":{title:`Anslut applikation`,description:"Vill du tillåta ${domain} att agera för din räkning?",connectAccountText:"vill ansluta till ditt ${tenantName}-konto som ${userName}.",workspaceLabel:`Arbetsyta:`,apiLabel:`För API:`,permissionsLabel:`Begärda behörigheter:`,localDevBadge:`Lokal utveckling`,localDevTooltip:`Den här webbplatsen är en lokal utvecklingsmiljö, inte produktion. Anslutningen fungerar inte utanför den här datorn eller det här nätverket.`,buttonText:`Anslut`,cancelText:`Avbryt`,notAuthenticated:`Du måste logga in för att fortsätta.`,sessionExpired:`Din session har gått ut. Försök igen.`,workspaceSelectionRequired:`Välj en arbetsyta först.`,noWorkspaceAccess:`Du har inte åtkomst till den arbetsytan`,workspaceNotFound:`Arbetsytan hittades inte`},"connect-tenant-select":{title:`Välj en arbetsyta`,description:"Välj vilken ${tenantName}-arbetsyta ${domain} ska ansluta till.",noWorkspacesDescription:`Inga arbetsytor tillgängliga`,noWorkspacesText:"Du har inte åtkomst till några ${tenantName}-arbetsytor. Be en administratör att bjuda in dig.",cancelText:`Avbryt`,notAuthenticated:`Du måste logga in för att fortsätta.`,sessionExpired:`Din session har gått ut. Försök igen.`,noWorkspaceSelected:`Välj en arbetsyta.`,noWorkspaceAccess:`Du har inte åtkomst till den arbetsytan`}},Bp={invitation:{acceptButtonText:`Acceptera inbjudan`,description:"${inviterName} har bjudit in dig att gå med i ${organizationName} på ${clientName}",pageTitle:"Inbjudan | ${clientName}",title:`Du har blivit inbjuden`,defaultOrganizationName:`organisationen`,acceptFailed:`Det gick inte att slutföra registreringen av ditt konto. Försök igen.`}},Vp={login:{alertListTitle:`Meddelanden`,buttonText:`Fortsätt`,description:"Logga in på ${clientName}.",editEmailText:`Redigera`,emailPlaceholder:`E-postadress`,enterACodeBtn:`Logga in med en kod`,enterACodeShortBtn:`Kod`,federatedConnectionButtonText:"Fortsätt med ${connectionName}",lastUsedText:`Senast använd`,footerLinkText:`Registrera dig`,footerText:`Har du inget konto?`,forgotPasswordText:`Har du glömt lösenordet?`,hidePasswordText:`Dölj lösenord`,invalidEmail:`Ogiltig e-postadress`,invalidIdentifier:`Ogiltig e-postadress eller användarnamn`,invitationDescription:"Logga in för att acceptera ${inviterName}s inbjudan att gå med i ${companyName} på ${clientName}.",invitationTitle:`Du har blivit inbjuden!`,logoAltText:"${companyName}","no-email":`Vänligen ange en e-postadress`,"no-password":`Lösenord krävs`,pageTitle:"Logga in | ${clientName}",passwordLoginNotAvailable:`Lösenordsinloggning är inte tillgänglig`,passwordPlaceholder:`Lösenord`,phonePlaceholder:`Telefonnummer`,separatorText:`eller`,sessionExpired:`Din session har gått ut. Försök igen.`,showPasswordText:`Visa lösenord`,signupActionLinkText:`Registrera dig`,signupActionText:`Har du inget konto?`,title:`Välkommen`,tooManyFailedLogins:`För många misslyckade inloggningsförsök. Försök igen senare.`,unverifiedEmail:`Verifiera din e-postadress innan du loggar in`,userAccountDoesNotExist:`Användarkontot finns inte`,usernamePlaceholder:`Användarnamn eller e-postadress`,usernameTooLong:"Användarnamnet får vara högst ${max} tecken",usernameTooShort:"Användarnamnet måste vara minst ${min} tecken",wrongCredentials:`Fel användarnamn eller lösenord`,passkeyButtonText:`Logga in med passkey`,userBlocked:`Ditt konto har blockerats efter flera misslyckade inloggningsförsök i rad.`,tooManyRequests:`För många försök. Vänta en stund och försök igen.`,unexpectedError:`Något gick fel. Försök igen.`}},Hp={mfa:{backupCodeText:`Använd reservkod`,description:`Välj en verifieringsmetod`,pageTitle:"Multifaktorautentisering | ${clientName}",title:`Verifiera din identitet`}},Up={"passkey-enrollment-nudge":{title:`Skydda ditt konto med en nyckel`,description:`Nycklar använder enhetens biometri eller PIN-kod för att logga in snabbare och säkrare.`,enrollButtonText:`Konfigurera nyckel`,snoozeButtonText:`Kanske senare`,optOutLinkText:`Visa inte detta igen`,pageTitle:"Konfigurera Nyckel | ${clientName}"},"passkey-enrollment":{title:`Skapa din nyckel`,description:`Följ anvisningarna från din webbläsare för att skapa en nyckel för detta konto.`,errorMessage:`Det gick inte att skapa nyckeln. Försök igen.`,cancelLinkText:`Hoppa över för nu`,retryButtonText:`Försök igen`,enrollmentComplete:`Din nyckel har konfigurerats. Du kan stänga denna sida.`,pageTitle:"Skapa Nyckel | ${clientName}",sessionExpired:`Din session har gått ut. Försök igen.`,enrollmentRequired:`Du måste skapa en nyckel för att fortsätta.`,challengeExpired:`Begäran har gått ut. Försök igen.`},"passkey-challenge":{title:`Logga in med passkey`,description:`Följ instruktionerna från din webbläsare för att verifiera din identitet.`,errorMessage:`Autentisering med passkey misslyckades. Försök igen.`,cancelLinkText:`Tillbaka till inloggning`,retryButtonText:`Försök igen`,pageTitle:"Logga in med passkey | ${clientName}",sessionExpired:`Din session har gått ut. Försök igen.`}},Wp={organizations:{description:`Välj vilken organisation du vill logga in på`,pageTitle:"Välj organisation | ${clientName}",searchPlaceholder:`Sök organisationer`,title:`Välj din organisation`}},Gp={signup:{buttonText:`Registrera dig`,confirmPasswordPlaceholder:`Bekräfta lösenord`,description:`Välj ett lösenord med en blandning av stora och små bokstäver, siffror och symboler.`,"email-already-exists":`E-postadressen är redan upptagen`,emailPlaceholder:`E-postadress`,federatedConnectionButtonText:"Fortsätt med ${connectionName}",hidePasswordText:`Dölj lösenord`,"invalid-email-format":`Ogiltig e-postadress`,loginActionLinkText:`Logga in`,loginActionText:`Har du redan ett konto?`,"no-email":`Vänligen ange en e-postadress`,"no-password":`Lösenord krävs`,"no-username":`Användarnamn krävs`,pageTitle:"Registrera dig | ${clientName}",passwordPlaceholder:`Lösenord`,passwordsDidntMatch:`Lösenorden matchar inte`,phonePlaceholder:`Telefonnummer`,privacyPolicyLinkText:`Integritetspolicy`,separatorText:`eller`,sessionExpired:`Din session har gått ut. Försök igen.`,showPasswordText:`Visa lösenord`,termsOfServiceLinkText:`Användarvillkor`,termsText:`Genom att registrera dig godkänner du våra`,title:`Välj lösenord`,"username-already-exists":`Användarnamnet är redan taget`,usernamePlaceholder:`Användarnamn`,verifyEmailText:`Kontrollera din e-post för att verifiera ditt konto`,confirmPasswordRequired:`Bekräfta ditt lösenord`,createUserFailed:`Det gick inte att skapa ditt konto. Försök igen.`}},Kp={status:{continueButtonText:`Fortsätt`,errorTitle:`Fel`,pageTitle:"Status | ${clientName}",successTitle:`Klart`,title:`Status`}},lie={common:Rp,consent:zp,"device-flow":{"device-flow":{buttonText:`Fortsätt`,codePlaceholder:`Ange kod`,description:`Ange koden som visas på din enhet`,"expired-code":`Koden har gått ut`,"invalid-code":`Koden du angav är ogiltig`,pageTitle:"Enhetsaktivering | ${clientName}",title:`Aktivera din enhet`}},"email-otp-challenge":{"email-otp-challenge":{buttonText:`Logga in`,codeLabel:`Verifieringskod`,codePlaceholder:`Ange kod`,defaultDescription:`Ange verifieringskoden som skickades till din e-post`,description:"Vi skickade en kod till ${email}","invalid-code":`Ogiltig kod`,noCode:`Ange verifieringskoden`,pageTitle:"Ange kod | ${clientName}",resendText:`Skicka koden igen`,sessionExpired:`Din session har gått ut. Försök igen.`,title:`Kolla din e-post`,unexpectedError:`Ett oväntat fel uppstod`,usePasswordText:`Logga in med lösenord`,tooManyRequests:`För många försök. Vänta en stund och försök igen.`}},"email-verification":{"email-verification":{description:"Vi skickade ett e-postmeddelande till ${email}",linkAlreadyUsed:`Verifieringslänken har redan använts. Begär en ny.`,linkInvalid:`Verifieringslänken är ogiltig.`,linkInvalidOrExpired:`Verifieringslänken är ogiltig eller har gått ut. Begär en ny.`,linkInvalidTitle:`Verifieringslänken är inte giltig`,linkWrongType:`Den här länken kan inte användas för att verifiera en e-postadress.`,pageTitle:"Verifiera e-post | ${clientName}",resendText:`Skicka koden igen`,successDescription:`Din e-postadress har verifierats.`,successTitle:`E-post verifierad`,title:`Ange engångskod`},"email-verification-code":{buttonText:`Fortsätt`,codeLabel:`Verifieringskod`,codePlaceholder:`Ange 6-siffrig kod`,defaultDescription:`Ange koden vi skickade till din e-post för att bekräfta din adress och fortsätta.`,description:"Vi skickade en kod till ${email}. Ange den för att bekräfta din e-postadress och fortsätta.",invalidCode:`Koden är ogiltig eller har gått ut`,noCode:`Ange verifieringskoden`,pageTitle:"Verifiera e-post | ${clientName}",resendFailed:`Det gick inte att skicka koden igen. Försök igen.`,resendSuccess:`En ny kod har skickats till din e-post`,resendText:`Skicka koden igen`,sessionExpired:`Din session har gått ut. Försök igen.`,title:`Bekräfta din e-postadress`,tooManyAttempts:`För många försök. Försök igen senare.`},"email-verification-link-sent":{defaultDescription:`Vi skickade en verifieringslänk till din e-post. Klicka på länken för att bekräfta din adress och logga sedan in igen.`,description:"Vi skickade en verifieringslänk till ${email}. Klicka på länken för att bekräfta din adress och logga sedan in igen.",pageTitle:"Verifiera e-post | ${clientName}",resendFailed:`Det gick inte att skicka e-postmeddelandet igen. Försök igen.`,resendSuccess:`Ett nytt verifieringsmejl har skickats`,resendText:`Skicka e-postmeddelandet igen`,title:`Kolla din e-post`}},invitation:Bp,login:Vp,"login-id":{"login-id":{alertListTitle:`Meddelanden`,"auth0-users-validation":`Något gick fel, försök igen senare`,"authentication-failure":`Vi beklagar, något gick fel vid inloggningsförsöket`,buttonText:`Fortsätt`,"captcha-client-failure":`Vi kunde inte ladda säkerhetsutmaningen. Försök igen. (Felkod: #{errorCode})`,"captcha-validation-failure":`Vi beklagar, något gick fel vid validering av captcha-svaret. Försök igen.`,captchaCodePlaceholder:`Ange koden som visas ovan`,"custom-script-error-code":`Något gick fel, försök igen senare.`,description:"Logga in på ${clientName}.",editEmailText:`Redigera`,emailPlaceholder:`E-postadress`,federatedConnectionButtonText:"Fortsätt med ${connectionName}",lastUsedText:`Senast använd`,footerLinkText:`Registrera dig`,footerText:`Har du inget konto?`,forgotPasswordText:`Har du glömt lösenordet?`,hidePasswordText:`Dölj lösenord`,"invalid-captcha":`Lös utmaningen för att verifiera att du inte är en robot.`,"invalid-code":`Ogiltig kod`,"invalid-connection":`Ogiltig anslutning`,"invalid-email-format":`Ogiltig e-postadress`,"invalid-email-phone":`Ange en giltig e-postadress eller telefonnummer. Telefonnummer måste innehålla landskod.`,"invalid-email-phone-username":`Ange en giltig e-postadress, telefonnummer eller användarnamn. Telefonnummer måste innehålla landskod.`,"invalid-email-username":`Ange en giltig e-postadress eller användarnamn`,"invalid-expired-code":`Ogiltig eller utgången användarkod`,"invalid-login-id":`Ogiltigt inloggnings-ID angivet`,"invalid-phone-username":`Ange ett giltigt telefonnummer eller användarnamn. Telefonnummer måste innehålla landskod.`,"invalid-recaptcha":`Markera kryssrutan för att verifiera att du inte är en robot.`,"invalid-username":"Användarnamn kan bara innehålla alfanumeriska tecken eller: '${characters}'. Användarnamn ska vara mellan ${min} och ${max} tecken.",invitationDescription:"Logga in för att acceptera ${inviterName}s inbjudan att gå med i ${companyName} på ${clientName}.",invitationTitle:`Du har blivit inbjuden!`,"ip-blocked":`Vi har upptäckt misstänkt inloggningsaktivitet och ytterligare försök kommer att blockeras. Kontakta administratören.`,logoAltText:"${companyName}","no-db-connection":`Ogiltig anslutning`,"no-email":`Vänligen ange en e-postadress`,"no-email-phone":`E-postadress eller telefonnummer krävs`,"no-email-phone-username":`Telefonnummer, användarnamn eller e-postadress krävs`,"no-email-username":`E-postadress eller användarnamn krävs`,"no-password":`Lösenord krävs`,"no-phone":`Ange ett telefonnummer`,"no-phone-username":`Telefonnummer eller användarnamn krävs`,"no-username":`Användarnamn krävs`,pageTitle:"Logga in | ${clientName}","password-breached":`Vi har upptäckt ett potentiellt säkerhetsproblem med detta konto. För att skydda ditt konto har vi förhindrat denna inloggning. Återställ ditt lösenord för att fortsätta.`,passwordPlaceholder:`Lösenord`,phoneOrEmailPlaceholder:`E-post eller telefonnummer`,phoneOrUsernameOrEmailPlaceholder:`Telefon, användarnamn eller e-post`,phoneOrUsernamePlaceholder:`Telefonnummer eller användarnamn`,phonePlaceholder:`Telefonnummer`,"same-user-login":`För många inloggningsförsök för denna användare. Vänta en stund och försök igen.`,selectCountryCode:"Välj landskod, för närvarande inställd på ${countryName}, ${countryCode}, +${countryPrefix}",separatorText:`eller`,sessionExpired:`Din session har gått ut. Försök igen.`,showPasswordText:`Visa lösenord`,signupActionLinkText:`Registrera dig`,signupActionText:`Har du inget konto?`,termsAndConditionsTemplate:'Genom att fortsätta godkänner du våra <a href="${termsAndConditionsUrl}" target="_blank" rel="noopener noreferrer">Villkor</a>.',title:`Välkommen`,"user-blocked":`Ditt konto har blockerats efter flera misslyckade inloggningsförsök i rad.`,userAccountDoesNotExist:`Användarkontot finns inte`,usernameOnlyPlaceholder:`Användarnamn`,usernameOrEmailPlaceholder:`Användarnamn eller e-postadress`,usernamePlaceholder:`Användarnamn`,usernameTooLong:"Användarnamnet får vara högst ${max} tecken",usernameTooShort:"Användarnamnet måste vara minst ${min} tecken","wrong-credentials":`Fel användarnamn eller lösenord`,"wrong-email-credentials":`Fel e-postadress eller lösenord`,"wrong-email-phone-credentials":`Fel e-postadress, telefonnummer eller lösenord. Telefonnummer måste innehålla landskod.`,"wrong-email-phone-username-credentials":`Fel e-postadress, telefonnummer, användarnamn eller lösenord. Telefonnummer måste innehålla landskod.`,"wrong-email-username-credentials":`Fel e-postadress, användarnamn eller lösenord`,"wrong-phone-credentials":`Fel telefonnummer eller lösenord`,"wrong-phone-username-credentials":`Fel telefonnummer, användarnamn eller lösenord. Telefonnummer måste innehålla landskod.`,"wrong-username-credentials":`Fel användarnamn eller lösenord`,passkeyButtonText:`Logga in med passkey`}},"login-password":{"login-password":{buttonText:`Logga in`,description:`Ange din e-postadress och ditt lösenord för att logga in.`,forgotPasswordText:`Har du glömt lösenordet?`,hidePasswordText:`Dölj lösenord`,"no-password":`Lösenord krävs`,pageTitle:"Logga in | ${clientName}","password-breached":`Vi har upptäckt ett potentiellt säkerhetsproblem med detta konto. För att skydda ditt konto har vi förhindrat denna inloggning. Återställ ditt lösenord för att fortsätta.`,passwordPlaceholder:`Lösenord`,showPasswordText:`Visa lösenord`,signingInAs:"Loggar in som ${email}",title:`Ange lösenord`,unverifiedEmail:`Verifiera din e-postadress innan du loggar in`,"user-blocked":`Ditt konto har blockerats efter flera misslyckade inloggningsförsök i rad.`,"wrong-credentials":`Fel lösenord`,sendCodeText:`Logga in med kod`,sessionExpired:`Din session har gått ut. Försök igen.`,tooManyRequests:`För många försök. Vänta en stund och försök igen.`,unexpectedError:`Något gick fel. Försök igen.`}},"login-passwordless":{"login-passwordless":{authMethodEmail:`e-post`,authMethodEmailOrPhone:`e-post eller telefonnummer`,authMethodPhone:`telefonnummer`,description:"Logga in med din ${authMethod}",emailOrPhonePlaceholder:`E-postadress eller telefonnummer`,emailPlaceholder:`E-postadress`,invalidEmail:`Ange en giltig e-postadress`,invalidIdentifier:`Ange en giltig e-postadress eller telefonnummer`,invalidPhone:`Ange ett giltigt telefonnummer med landskod`,noEmail:`Ange din e-postadress`,noPhone:`Ange ditt telefonnummer`,phonePlaceholder:`Telefonnummer`,sessionExpired:`Din session har gått ut. Försök igen.`,title:`Logga in med en kod`,userAccountDoesNotExist:`Användarkontot finns inte`}},"magic-link-sent":{"magic-link-sent":{defaultDescription:`Klicka på länken i ditt e-postmeddelande för att logga in`,description:"Vi skickade en länk till ${username}. Klicka på den för att logga in.",resendText:`Skicka länken igen`,spamText:`Fick du inte e-postmeddelandet? Kolla din skräppost.`,title:`Kolla din e-post`}},mfa:Hp,"mfa-email":{"mfa-email":{buttonText:`Fortsätt`,codePlaceholder:`Ange kod`,description:"Vi skickade en kod till ${email}","invalid-code":`Koden du angav är ogiltig`,pageTitle:"E-postverifiering | ${clientName}",resendText:`Skicka koden igen`,title:`Kolla din e-post`}},"mfa-otp":{"mfa-otp":{buttonText:`Fortsätt`,codePlaceholder:`Ange kod`,description:`Ange den 6-siffriga koden från din autentiseringsapp`,"invalid-code":`Koden du angav är ogiltig`,pageTitle:"Ange kod | ${clientName}",title:`Ange din kod`},"mfa-totp-enrollment":{title:`Konfigurera autentiseringsapp`,description:`Skanna QR-koden nedan med din autentiseringsapp och ange sedan den 6-siffriga koden för att verifiera`,secretLabel:`Eller ange denna kod manuellt:`,codePlaceholder:`Ange kod`,continueButtonText:`Verifiera och aktivera`,"invalid-code":`Koden du angav är ogiltig. Försök igen.`,"transaction-not-found":`Din registreringstransaktion har gått ut, du behöver börja om.`,pageTitle:"Konfigurera autentiseringsapp | ${clientName}",unexpectedError:`Något gick fel. Försök igen.`,enrollmentComplete:`MFA-registreringen är klar. Du kan stänga denna sida.`,pickAuthenticatorText:`Prova en annan metod`,qrCodeAltText:`QR-kod`},"mfa-totp-challenge":{title:`Verifiera din identitet`,description:`Ange den 6-siffriga koden från din autentiseringsapp`,codePlaceholder:`Ange kod`,continueButtonText:`Fortsätt`,"invalid-code":`Koden du angav är ogiltig`,"transaction-not-found":`Din registreringstransaktion har gått ut, du behöver börja om.`,unexpectedError:`Något gick fel. Försök igen.`,pageTitle:"Verifiera identitet | ${clientName}"}},"mfa-phone":{"mfa-phone-challenge":{pageTitle:"Använd ditt telefonnummer för att logga in | ${clientName}",title:`Verifiera din identitet`,description:"Vi skickade en kod till ${phoneNumber}",continueButtonText:`Fortsätt`,changePhoneText:`Välj ett annat telefonnummer.`,smsButtonText:`SMS`,voiceButtonText:`Röstsamtal`,chooseMessageTypeText:`Hur vill du ta emot koden?`,pickAuthenticatorText:`Prova en annan metod`,logoAltText:"${companyName}",codePlaceholder:`Ange kod`,"send-sms-failed":`Det gick inte att skicka SMS:et`,"send-voice-failed":`Det gick inte att ringa röstsamtalet`,"invalid-phone-format":`Telefonnumret kan bara innehålla siffror.`,"invalid-phone":`Det verkar som att ditt telefonnummer inte är giltigt. Kontrollera och försök igen.`,"too-many-sms":`Du har överskridit det maximala antalet telefonmeddelanden per timme. Vänta några minuter och försök igen.`,"too-many-voice":`Du har överskridit det maximala antalet telefonmeddelanden per timme. Vänta några minuter och försök igen.`,"transaction-not-found":`Din registreringstransaktion har gått ut, du behöver börja om.`,"no-phone":`Ange ett telefonnummer`,noCode:`Ange verifieringskoden`,invalidCode:`Koden du angav är ogiltig. Försök igen.`,unexpectedError:`Något gick fel. Försök igen.`,resendSuccess:`Vi skickade en ny kod till din telefon`,enrollmentComplete:`MFA-registreringen är klar. Du kan stänga denna sida.`},"mfa-phone-enrollment":{pageTitle:"Ange ditt telefonnummer för att logga in med en telefonkod | ${clientName}",title:`Säkra ditt konto`,description:`Ange din landskod och telefonnummer som vi kan skicka en 6-siffrig kod till:`,continueButtonText:`Fortsätt`,smsButtonText:`SMS`,voiceButtonText:`Röstsamtal`,chooseMessageTypeText:`Hur vill du ta emot koden?`,pickAuthenticatorText:`Prova en annan metod`,placeholder:`Ange ditt telefonnummer`,logoAltText:"${companyName}",selectCountryCode:"Välj landskod, för närvarande inställd på ${countryName}, ${countryCode}, +${countryPrefix}","send-sms-failed":`Det gick inte att skicka SMS:et`,"send-voice-failed":`Det gick inte att ringa röstsamtalet`,"sms-authenticator-error":`Vi kunde inte skicka SMS:et. Försök igen senare.`,"invalid-phone-format":`Telefonnumret kan bara innehålla siffror.`,"invalid-phone":`Det verkar som att ditt telefonnummer inte är giltigt. Kontrollera och försök igen.`,"too-many-sms":`Du har överskridit det maximala antalet telefonmeddelanden per timme. Vänta några minuter och försök igen.`,"too-many-voice":`Du har överskridit det maximala antalet telefonmeddelanden per timme. Vänta några minuter och försök igen.`,"transaction-not-found":`Din registreringstransaktion har gått ut, du behöver börja om.`,"no-phone":`Ange ett telefonnummer`,"phone-is-too-short":`Telefonnumret är för kort`,"phone-is-too-long":`Telefonnumret är för långt`}},"mfa-login-options":{"mfa-login-options":{pageTitle:"Välj verifieringsmetod | ${clientName}",title:`Välj din verifieringsmetod`,description:`Välj hur du vill verifiera din identitet`,authenticatorAppLabel:`Autentiseringsapp`,authenticatorAppDescription:`Använd din autentiseringsapp för att få en verifieringskod`,smsLabel:`Sms`,smsDescription:`Få en verifieringskod skickad till din telefon`,passkeyLabel:`Lösenordsnyckel`,passkeyDescription:`Använd din enhets biometri eller säkerhetsnyckel`}},"mfa-push":{"mfa-push":{description:`Vi skickade en notis till din enhet`,pageTitle:"Push-notis | ${clientName}",resendText:`Skicka notisen igen`,title:`Godkänn förfrågan`,useCodeText:`Ange kod manuellt`}},"mfa-recovery-code":{"mfa-recovery-code":{buttonText:`Fortsätt`,codePlaceholder:`Återställningskod`,description:`Ange en av dina återställningskoder`,"invalid-code":`Återställningskoden du angav är ogiltig`,pageTitle:"Återställningskod | ${clientName}",title:`Ange återställningskod`}},"mfa-voice":{"mfa-voice":{buttonText:`Ring mig`,codePlaceholder:`Ange kod`,description:"Vi ringer ${phoneNumber} med din kod","invalid-code":`Koden du angav är ogiltig`,pageTitle:"Röstsamtal | ${clientName}",title:`Ta emot ett telefonsamtal`}},"mfa-webauthn":{"mfa-webauthn":{buttonText:`Försök igen`,description:`Sätt in din säkerhetsnyckel och följ instruktionerna`,pageTitle:"Säkerhetsnyckel | ${clientName}",title:`Använd din säkerhetsnyckel`}},passkeys:Up,organizations:Wp,"reset-password":{"reset-password":{backToLoginText:`Tillbaka till inloggning`,buttonText:`Skicka`,codeExpired:`Din kod för lösenordsåterställning har gått ut. Begär en ny.`,confirmPasswordLabel:`Bekräfta lösenord`,confirmPasswordPlaceholder:`Bekräfta lösenord`,description:`Klicka på knappen nedan så skickar vi instruktioner om hur du återställer ditt lösenord.`,emailPlaceholder:`E-postadress`,failed:`Lösenordsåterställningen misslyckades. Försök igen.`,"invalid-email-format":`Ogiltig e-postadress`,"no-email":`Vänligen ange en e-postadress`,pageTitle:"Återställ lösenord | ${clientName}",passwordLabel:`Nytt lösenord`,passwordPlaceholder:`Nytt lösenord`,passwordTooWeak:`Lösenordet är för svagt`,passwordsDidntMatch:`Lösenorden matchar inte`,successDescription:`Vi har skickat en länk för lösenordsåterställning till din e-postadress.`,successTitle:`Vi har skickat ett e-postmeddelande med instruktioner om hur du återställer ditt lösenord till den e-postadress du angav.`,title:`Har du glömt lösenordet?`,"user-not-found":`Användaren hittades inte`,noPassword:`Lösenord krävs`,sessionExpired:`Din session har gått ut. Försök igen.`},"reset-password-code":{backToLoginText:`Tillbaka till inloggning`,buttonText:`Återställ lösenord`,codeLabel:`Återställningskod`,codePlaceholder:`Ange 6-siffrig kod`,confirmPasswordLabel:`Bekräfta lösenord`,confirmPasswordPlaceholder:`Bekräfta lösenord`,defaultDescription:`Ange koden som skickades till din e-post och välj ett nytt lösenord`,description:"Vi skickade en kod till ${email}",failed:`Lösenordsåterställningen misslyckades. Försök igen.`,invalidCode:`Koden du angav är ogiltig eller har gått ut`,noCode:`Vänligen ange återställningskoden`,pageTitle:"Ange återställningskod | ${clientName}",passwordLabel:`Nytt lösenord`,passwordPlaceholder:`Nytt lösenord`,passwordTooWeak:`Lösenordet är för svagt`,passwordsDidntMatch:`Lösenorden matchar inte`,resendFailed:`Kunde inte skicka koden igen. Försök igen.`,resendSuccess:`En ny kod har skickats till din e-post`,resendText:`Skicka koden igen`,sessionExpired:`Din session har gått ut. Försök igen.`,title:`Ange återställningskod`,noPassword:`Lösenord krävs`}},signup:Gp,"signup-id":{"signup-id":{buttonText:`Fortsätt`,description:`Välj ett lösenord med en blandning av stora och små bokstäver, siffror och symboler.`,"email-already-exists":`E-postadressen är redan upptagen`,emailPlaceholder:`E-postadress`,federatedConnectionButtonText:"Fortsätt med ${connectionName}","invalid-email-format":`Ogiltig e-postadress`,loginActionLinkText:`Logga in`,loginActionText:`Har du redan ett konto?`,"no-email":`Vänligen ange en e-postadress`,pageTitle:"Registrera dig | ${clientName}",phonePlaceholder:`Telefonnummer`,separatorText:`eller`,title:`Välj lösenord`,usernamePlaceholder:`Användarnamn`}},"signup-password":{"signup-password":{buttonText:`Fortsätt`,description:`Välj ett lösenord med en blandning av stora och små bokstäver, siffror och symboler.`,hidePasswordText:`Dölj lösenord`,"no-password":`Lösenord krävs`,pageTitle:"Registrera dig | ${clientName}","password-policy-not-met":`Lösenordet uppfyller inte kraven`,"password-too-weak":`Lösenordet är för svagt`,passwordPlaceholder:`Lösenord`,showPasswordText:`Visa lösenord`,title:`Välj lösenord`,passwordTooShort:"Lösenordet måste vara minst ${minLength} tecken",passwordMissingLowercase:`Lösenordet måste innehålla minst en liten bokstav`,passwordMissingUppercase:`Lösenordet måste innehålla minst en stor bokstav`,passwordMissingNumber:`Lösenordet måste innehålla minst en siffra`,passwordMissingSpecial:`Lösenordet måste innehålla minst ett specialtecken`,passwordReused:`Lösenordet har använts nyligen och kan inte återanvändas`,passwordContainsPersonalInfo:`Lösenordet får inte innehålla personlig information som ditt namn eller e-post`,passwordContainsForbiddenWord:`Lösenordet innehåller ett förbjudet ord`}},"sms-otp-challenge":{"sms-otp-challenge":{buttonText:`Fortsätt`,codeLabel:`Verifieringskod`,codePlaceholder:`Ange kod`,defaultDescription:`Ange verifieringskoden som skickades till din telefon`,description:"Vi skickade en kod till ${username}","invalid-code":`Ogiltig kod`,noCode:`Ange verifieringskoden`,pageTitle:"Ange kod | ${clientName}",resendText:`Skicka koden igen`,sessionExpired:`Din session har gått ut. Försök igen.`,title:`Kolla din telefon`,unexpectedError:`Ett oväntat fel uppstod`,tooManyRequests:`För många försök. Vänta en stund och försök igen.`}},status:Kp},qp=[`cs`,`da`,`en`,`fi`,`it`,`nb`,`pl`,`sv`],uie={cs:`Čeština`,da:`Dansk`,en:`English`,fi:`Suomi`,it:`Italiano`,nb:`Norsk`,pl:`Polski`,sv:`Svenska`};function die(e){return uie[e]??e}function Jp(e){if(!e?.length)return[...qp];let t=e.map(e=>e.split(`-`)[0]?.toLowerCase()??e),n=qp.filter(e=>t.includes(e));return n.length?n:[...qp]}var fie=Object.assign({"../../locales/cs.json":Jre,"../../locales/da.json":Xre,"../../locales/en.json":Qre,"../../locales/fi.json":eie,"../../locales/it.json":nie,"../../locales/nb.json":iie,"../../locales/pl.json":oie,"../../locales/sv.json":cie}),Yp={};for(let[e,t]of Object.entries(fie)){let n=e.match(/\/(\w+)\.json$/)?.[1];n&&(Yp[n]=t.default||t)}var Xp={},Zp=Yp.en;if(Zp)for(let[e,t]of Object.entries(Zp))for(let[n,r]of Object.entries(t)){let t={};for(let e of Object.keys(r))t[e]=f.z.string();Xp[`${e}.${n}`]=f.z.object(t)}function pie(e,t){if(!t)return e;let n=e;for(let[e,r]of Object.entries(t))if(r!==void 0){let t=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);n=n.replace(RegExp(`\\$\\{${t}\\}`,`g`),String(r)).replace(RegExp(`#\\{${t}\\}`,`g`),String(r)).replace(RegExp(`\\{${t}\\}`,`g`),String(r))}return n}function mie(e){let t=e.split(`-`)[0]?.toLowerCase()||`en`;return qp.includes(t)?t:`en`}function z(e,t,n,r){let i=mie(n),a=Yp.en?.[e]?.[t]??{},o=Yp[i]?.[e]?.[t]??{},s={...a,...o},c=r?.[t]??{},l={...s,...c},u=Xp[`${e}.${t}`];if(u){let n=u.safeParse(l);n.success||console.warn(`[i18n] Missing translations for ${e}.${t} (${i}):`,n.error.issues.map(e=>e.path.join(`.`)).join(`, `))}let d={};for(let[e,t]of Object.entries(l))d[e]=e=>pie(t,e);return{m:new Proxy(d,{get:(e,t)=>e[t]??(()=>t)}),locale:i}}function hie(e){let t=e?.language?.split(`-`)[0]?.toLowerCase(),n=[];for(let[r,i]of Object.entries(Yp))if(!(t&&r!==t))for(let[t,a]of Object.entries(i))e?.prompt&&t!==e.prompt||n.push({prompt:t,language:r,custom_text:a});return n}var gie=/^[a-z]{2,3}(-[a-z]{4})?(-([a-z]{2}|\d{3}))?$/i,Qp=`en`;function $p(e){return e.split(`-`)[0].toLowerCase()}function _ie(e){for(let t of e){let e=/^\s*q\s*=\s*([\d.]+)\s*$/i.exec(t);if(e){let t=Number(e[1]);return Number.isFinite(t)?t:1}}return 1}function em(e){if(!e)return[];let t=[];for(let n of e.split(`,`)){let[e,...r]=n.split(`;`),i=_ie(r);if(!(i<=0))for(let n of(e??``).trim().split(/\s+/))!n||!gie.test(n)||t.push({tag:n,q:i})}return t.sort((e,t)=>t.q-e.q).map(e=>e.tag)}function tm(e,t){let n=$p(e);return t.some(e=>$p(e)===n)}function nm(e,t,n){let r=[...em(e),...em(t)];return n?.length?r.find(e=>tm(e,n))??n[0]??Qp:r[0]??Qp}function rm(e,t,n){return $p(nm(e,t,n))}function im(e,t){return t?.length?e&&tm(e,t)?$p(e):$p(t[0]):e?$p(e):Qp}function am(e,t,n){return nm(t,e.req.header(`Accept-Language`),n)}function om(e){if(e)try{let t=new URL(e.includes(`://`)?e:`https://${e}`);return t.protocol!==`http:`&&t.protocol!==`https:`?void 0:t.origin}catch{return}}function vie(e,t){if(e.authParams.response_mode!==`web_message`)return;let n=om(e.authParams.redirect_uri);if(n)return{targetOrigin:n,frameAncestors:Array.from(new Set((t.web_origins??[]).map(e=>om(e)).filter(e=>!!e)))}}function sm(e){return e&&e.frameAncestors.length>0?{"Content-Security-Policy":`frame-ancestors ${e.frameAncestors.join(` `)}`}:{"Content-Security-Policy":`frame-ancestors 'none'`,"X-Frame-Options":`DENY`}}function yie(e){return`(function(){
|
|
502
502
|
var target=${JSON.stringify(e.targetOrigin)};
|
|
503
503
|
var top=window.parent;
|
|
504
504
|
if(!top||top===window)return;
|
|
@@ -3345,7 +3345,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
3345
3345
|
</html>`;return n.set(`content-type`,`text/html; charset=utf-8`),n.set(`cache-control`,`no-store`),n.set(`pragma`,`no-cache`),new Response(i,{status:200,headers:n})}var PH=[`openid`,`profile`,`email`,`address`,`phone`,`offline_access`];async function FH(e,t,n,r){let i=[];if(!(await e.env.data.tenants.get(t))?.flags?.inherit_global_permissions_in_organizations)return[];let a=await e.env.data.userRoles.list(t,n,void 0,``),o=await Promise.all(a.map(n=>e.env.data.rolePermissions.list(t,n.id,{per_page:1e3})));for(let e of o)e.forEach(e=>{e.resource_server_identifier===r&&i.push(e.permission_name)});return[...new Set(i)]}var IH=`admin:organizations`,LH=`access:all_organizations`;async function RH(e,t,n,r){let i=new Set,a=e=>{for(let t of e)t.resource_server_identifier===`urn:authhero:management`&&r.includes(t.permission_name)&&i.add(t.permission_name)};if(a(await e.env.data.userPermissions.list(t,n,void 0,``)),i.size===r.length)return i;let o=await e.env.data.userRoles.list(t,n,void 0,``);for(let n of o)if(a(await e.env.data.rolePermissions.list(t,n.id,{per_page:1e3})),i.size===r.length)break;return i}async function zH(e,t,n,r){return(await RH(e,t,n,[r])).has(r)}async function BH(e,t,n,r){let i=(r===void 0?await e.env.data.tenants.get(t):r)?.flags?.inherit_global_permissions_in_organizations===!0,a=await RH(e,t,n,i?[LH,IH]:[LH]);return a.has(`access:all_organizations`)||i&&a.has(`admin:organizations`)}async function VH(e,t,n,r,i){return await BH(e,t,n,i)?!0:(await e.env.data.userOrganizations.list(t,{q:`user_id:${Ha(n)}`,per_page:1e3})).userOrganizations.some(e=>e.organization_id===r)}function HH(e){let t=e.granted.filter(t=>!e.definedScopes.includes(t));if(t.length===0)return;let n=e.userId?`, user_id=${e.userId}`:``;console.warn(`[scopes-permissions] Dropped scope(s) not defined on the resource server: ${t.join(`, `)} (source=${e.source}, tenant_id=${e.tenantId}, client_id=${e.clientId}, audience=${e.audience}${n})`)}async function UH(e,t){let{tenantId:n,audience:r,scopes:i}=t;if(i.length===0)return[];let{resource_servers:a}=await e.env.data.resourceServers.list(n),o=a.find(e=>e.identifier===r);if(!o)return[];let s=(o.scopes||[]).map(e=>e.value);return i.filter(e=>!s.includes(e))}async function WH(e,t){let{tenantId:n,clientId:r,audience:i,requestedScopes:a}=t,o=a.filter(e=>PH.includes(e)),s=a.filter(e=>!PH.includes(e)),c=(await e.env.data.resourceServers.list(n)).resource_servers.filter(e=>e.identifier===i);if(c.length===0)return{scopes:o,permissions:[],token_lifetime:86400,token_lifetime_for_web:7200};let l=c[0];if(!l)return{scopes:o,permissions:[],token_lifetime:86400,token_lifetime_for_web:7200};let u=l.options?.enforce_policies===!0,d=l.options?.token_dialect||`access_token`,f=(await e.env.data.clientGrants.list(n,{q:`client_id:${Ha(r)}`})).client_grants.find(e=>e.audience===i);if(!f)return{scopes:o,permissions:[],token_lifetime:l.token_lifetime,token_lifetime_for_web:l.token_lifetime_for_web};let p=f.scope||[],m=(l.scopes||[]).map(e=>e.value);if(s.length>0){let e=s.filter(e=>!p.includes(e));if(e.length>0)throw new V(403,{error:`access_denied`,error_description:`Client is not authorized for scope(s): ${e.join(`, `)}`})}let h=p.filter(e=>m.includes(e));HH({source:`client_grant`,tenantId:n,clientId:r,audience:i,granted:p,definedScopes:m});let g=a.length===0?h:s.filter(e=>h.includes(e)),_={token_lifetime:l.token_lifetime,token_lifetime_for_web:l.token_lifetime_for_web};if(!u)return{scopes:[...new Set([...o,...g])],permissions:[],..._};let v=g;return d===`access_token_authz`?{scopes:[...new Set([...o,...g])],permissions:v,..._}:{scopes:[...new Set([...o,...g])],permissions:[],..._}}async function GH(e,t){if(t.grantType===Xr.ClientCredential)return await WH(e,{tenantId:t.tenantId,clientId:t.clientId,audience:t.audience,requestedScopes:t.requestedScopes});let{tenantId:n,clientId:r,userId:i,audience:a,requestedScopes:o,organizationId:s}=t,c=await e.env.data.tenants.get(n),l=c?.flags?.restrict_undefined_scopes===!0;if(s&&!await VH(e,n,i,s,c))throw new V(403,{error:`access_denied`,error_description:`User is not a member of the specified organization`});let u=o.filter(e=>PH.includes(e)),d=(await e.env.data.resourceServers.list(n)).resource_servers.filter(e=>e.identifier===a)[0];if(!d){if(o.filter(e=>e&&!PH.includes(e)).length>0)throw new V(403,{error:`access_denied`,error_description:`Service not found: ${a}`});return{scopes:u,permissions:[],token_lifetime:86400,token_lifetime_for_web:7200}}let f=(d.scopes||[]).map(e=>e.value),p=d.options?.enforce_policies===!0,m=d.options?.token_dialect||`access_token`,h={token_lifetime:d.token_lifetime,token_lifetime_for_web:d.token_lifetime_for_web};if(!p){let e=l?o.filter(e=>f.includes(e)||PH.includes(e)):o;return{scopes:[...new Set(e)],permissions:[],...h}}let[g,_,v]=await Promise.all([e.env.data.userPermissions.list(n,i,void 0,s),e.env.data.userRoles.list(n,i,void 0,``),s?e.env.data.userRoles.list(n,i,void 0,s):Promise.resolve([])]),y=[..._,...v],b=s?await FH(e,n,i,a):[],x=await Promise.all(y.map(t=>e.env.data.rolePermissions.list(n,t.id,{per_page:1e3}))),S=[];for(let e of x)e.forEach(e=>{e.resource_server_identifier===a&&S.push(e.permission_name)});let ee=new Set;g.forEach(e=>{e.resource_server_identifier===a&&ee.add(e.permission_name)}),S.forEach(e=>{ee.add(e)}),b.forEach(e=>{ee.add(e)});let C=Array.from(ee),w=C.filter(e=>f.includes(e));HH({source:`user_permissions`,tenantId:n,clientId:r,audience:a,granted:C,definedScopes:f,userId:i});let te=l?[]:o.filter(e=>!f.includes(e)&&!PH.includes(e));if(m===`access_token_authz`)return{scopes:[...new Set([...u,...te])],permissions:w,...h};let T=o.filter(e=>f.includes(e)&&C.includes(e));return{scopes:[...new Set([...u,...T,...te])],permissions:[],...h}}var KH=new Set([`openid`,`profile`,`email`]);function qH(e,t){let n=new Set(t),r=[];for(let t of e)t&&(KH.has(t)||n.has(t)||r.push(t));return Array.from(new Set(r))}async function JH(e,t){if(!e.env.data.grants)return qH(t.requestedScopes,[]);let n=await e.env.data.grants.get(t.tenantId,t.userId,t.clientId);return qH(t.requestedScopes,n?.scope??[])}function YH(e){if(!e)return!1;try{return!!JSON.parse(e)?.connect}catch{return!1}}function XH(e,t){switch(t){case`email`:return e.email||void 0;case`email_verified`:return e.email_verified===void 0?void 0:e.email_verified;case`name`:return e.name||void 0;case`family_name`:return e.family_name||void 0;case`given_name`:return e.given_name||void 0;case`middle_name`:return e.middle_name||void 0;case`nickname`:return e.nickname||void 0;case`preferred_username`:return e.preferred_username||e.username||void 0;case`profile`:return e.profile||void 0;case`picture`:return e.picture||void 0;case`website`:return e.website||void 0;case`gender`:return e.gender||void 0;case`birthdate`:return e.birthdate||void 0;case`zoneinfo`:return e.zoneinfo||void 0;case`locale`:return e.locale||void 0;case`updated_at`:{if(!e.updated_at)return;let t=new Date(e.updated_at).getTime();return Number.isFinite(t)?Math.floor(t/1e3):void 0}case`address`:return e.address||void 0;case`phone_number`:return e.phone_number||void 0;case`phone_number_verified`:return e.phone_verified===void 0?void 0:e.phone_verified;default:return}}var ZH={email:[`email`,`email_verified`],profile:[`name`,`family_name`,`given_name`,`middle_name`,`nickname`,`preferred_username`,`profile`,`picture`,`website`,`gender`,`birthdate`,`zoneinfo`,`locale`,`updated_at`],address:[`address`],phone:[`phone_number`,`phone_number_verified`]};function QH(e,t){let n={};for(let r of t){let t=ZH[r];if(t)for(let r of t){let t=XH(e,r);t!==void 0&&(n[r]=t)}}return n}function $H(e,t){let n={};for(let r of t){let t=XH(e,r);t!==void 0&&(n[r]=t)}return n}var eU=3600*1e3;function tU(e,t=Date.now()){let n=e.used_at??e.created_at,r=n?new Date(n).getTime():NaN;return Number.isFinite(r)?t-r>=eU:!0}function nU(e,t,n,r){let i=Date.now(),a=()=>e.env.data.sessions.update(t,n,{used_at:new Date(i).toISOString()});if(r){if(!tU(r,i))return;oo(e,a().catch(()=>{}));return}oo(e,(async()=>{let r=await e.env.data.sessions.get(t,n);!r||r.revoked_at||tU(r,i)&&await a()})().catch(()=>{}))}function rU(){if(typeof globalThis<`u`)return globalThis;if(typeof self<`u`)return self;if(typeof window<`u`)return window;if(typeof global<`u`)return global}function iU(){let e=rU();if(e.__xstate__)return e.__xstate__}var aU=e=>{if(typeof window>`u`)return;let t=iU();t&&t.register(e)},oU=class{constructor(e){this._process=e,this._active=!1,this._current=null,this._last=null}start(){this._active=!0,this.flush()}clear(){this._current&&(this._current.next=null,this._last=this._current)}enqueue(e){let t={value:e,next:null};if(this._current){this._last.next=t,this._last=t;return}this._current=t,this._last=t,this._active&&this.flush()}flush(){for(;this._current;){let e=this._current;this._process(e.value),this._current=e.next}this._last=null}},sU=``,cU=`#`,lU=`*`,uU=`xstate.init`,dU=`xstate.stop`;function fU(e,t){return{type:`xstate.after.${e}.${t}`}}function pU(e,t){return{type:`xstate.done.state.${e}`,output:t}}function mU(e,t){return{type:`xstate.done.actor.${e}`,output:t,actorId:e}}function hU(e,t){return{type:`xstate.error.actor.${e}`,error:t,actorId:e}}function gU(e){return{type:uU,input:e}}function _U(e){setTimeout(()=>{throw e})}var vU=typeof Symbol==`function`&&Symbol.observable||`@@observable`;function yU(e,t){let n=xU(e),r=xU(t);return typeof r==`string`?typeof n==`string`?r===n:!1:typeof n==`string`?n in r:Object.keys(n).every(e=>e in r?yU(n[e],r[e]):!1)}function bU(e){if(DU(e))return e;let t=[],n=``;for(let r=0;r<e.length;r++){switch(e.charCodeAt(r)){case 92:n+=e[r+1],r++;continue;case 46:t.push(n),n=``;continue}n+=e[r]}return t.push(n),t}function xU(e){return tG(e)?e.value:typeof e==`string`?SU(bU(e)):e}function SU(e){if(e.length===1)return e[0];let t={},n=t;for(let t=0;t<e.length-1;t++)if(t===e.length-2)n[e[t]]=e[t+1];else{let r=n;n={},r[e[t]]=n}return t}function CU(e,t){let n={},r=Object.keys(e);for(let i=0;i<r.length;i++){let a=r[i];n[a]=t(e[a],a,e,i)}return n}function wU(e){return DU(e)?e:[e]}function TU(e){return e===void 0?[]:wU(e)}function EU(e,t,n,r){return typeof e==`function`?e({context:t,event:n,self:r}):e}function DU(e){return Array.isArray(e)}function OU(e){return e.type.startsWith(`xstate.error.actor`)}function kU(e){return wU(e).map(e=>e===void 0||typeof e==`string`?{target:e}:e)}function AU(e){if(!(e===void 0||e===sU))return TU(e)}function jU(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}function MU(e,t){return`${t}.${e}`}function NU(e,t){let n=t.match(/^xstate\.invoke\.(\d+)\.(.*)/);if(!n)return e.implementations.actors[t];let[,r,i]=n,a=e.getStateNodeById(i).config.invoke;return(Array.isArray(a)?a[r]:a).src}function PU(e,t){if(t===e||t===lU)return!0;if(!t.endsWith(`.*`))return!1;let n=t.split(`.`),r=e.split(`.`);for(let e=0;e<n.length;e++){let t=n[e],i=r[e];if(t===`*`)return e===n.length-1;if(t!==i)return!1}return!0}function FU(e,t){return`${e.sessionId}.${t}`}var IU=0;function LU(e,t){let n=new Map,r=new Map,i=new WeakMap,a=new Set,o={},{clock:s,logger:c}=t,l={schedule:(e,t,n,r,i=Math.random().toString(36).slice(2))=>{let a={source:e,target:t,event:n,delay:r,id:i,startedAt:Date.now()},c=FU(e,i);u._snapshot._scheduledEvents[c]=a,o[c]=s.setTimeout(()=>{delete o[c],delete u._snapshot._scheduledEvents[c],u._relay(e,t,n)},r)},cancel:(e,t)=>{let n=FU(e,t),r=o[n];delete o[n],delete u._snapshot._scheduledEvents[n],r!==void 0&&s.clearTimeout(r)},cancelAll:e=>{for(let t in u._snapshot._scheduledEvents){let n=u._snapshot._scheduledEvents[t];n.source===e&&l.cancel(e,n.id)}}},u={_snapshot:{_scheduledEvents:(t?.snapshot&&t.snapshot.scheduler)??{}},_bookId:()=>`x:${IU++}`,_register:(e,t)=>(n.set(e,t),e),_unregister:e=>{n.delete(e.sessionId);let t=i.get(e);t!==void 0&&(r.delete(t),i.delete(e))},get:e=>r.get(e),getAll:()=>Object.fromEntries(r.entries()),_set:(e,t)=>{let n=r.get(e);if(n&&n!==t)throw Error(`Actor with system ID '${e}' already exists.`);r.set(e,t),i.set(t,e)},inspect:e=>{let t=jU(e);return a.add(t),{unsubscribe(){a.delete(t)}}},_sendInspectionEvent:t=>{if(!a.size)return;let n={...t,rootId:e.sessionId};a.forEach(e=>e.next?.(n))},_relay:(e,t,n)=>{u._sendInspectionEvent({type:`@xstate.event`,sourceRef:e,actorRef:t,event:n}),t._send(n)},scheduler:l,getSnapshot:()=>({_scheduledEvents:{...u._snapshot._scheduledEvents}}),start:()=>{let e=u._snapshot._scheduledEvents;u._snapshot._scheduledEvents={};for(let t in e){let{source:n,target:r,event:i,delay:a,id:o}=e[t];l.schedule(n,r,i,a,o)}},_clock:s,_logger:c};return u}var RU=!1,zU=function(e){return e[e.NotStarted=0]=`NotStarted`,e[e.Running=1]=`Running`,e[e.Stopped=2]=`Stopped`,e}({}),BU={clock:{setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e)},logger:console.log.bind(console),devTools:!1},VU=class{constructor(e,t){this.logic=e,this._snapshot=void 0,this.clock=void 0,this.options=void 0,this.id=void 0,this.mailbox=new oU(this._process.bind(this)),this.observers=new Set,this.eventListeners=new Map,this.logger=void 0,this._processingStatus=zU.NotStarted,this._parent=void 0,this._syncSnapshot=void 0,this.ref=void 0,this._actorScope=void 0,this.systemId=void 0,this.sessionId=void 0,this.system=void 0,this._doneEvent=void 0,this.src=void 0,this._deferred=[];let n={...BU,...t},{clock:r,logger:i,parent:a,syncSnapshot:o,id:s,systemId:c,inspect:l}=n;this.system=a?a.system:LU(this,{clock:r,logger:i}),l&&!a&&this.system.inspect(jU(l)),this.sessionId=this.system._bookId(),this.id=s??this.sessionId,this.logger=t?.logger??this.system._logger,this.clock=t?.clock??this.system._clock,this._parent=a,this._syncSnapshot=o,this.options=n,this.src=n.src??e,this.ref=this,this._actorScope={self:this,id:this.id,sessionId:this.sessionId,logger:this.logger,defer:e=>{this._deferred.push(e)},system:this.system,stopChild:e=>{if(e._parent!==this)throw Error(`Cannot stop child actor ${e.id} of ${this.id} because it is not a child`);e._stop()},emit:e=>{let t=this.eventListeners.get(e.type),n=this.eventListeners.get(`*`);if(!t&&!n)return;let r=[...t?t.values():[],...n?n.values():[]];for(let t of r)try{t(e)}catch(e){_U(e)}},actionExecutor:e=>{let t=()=>{if(this._actorScope.system._sendInspectionEvent({type:`@xstate.action`,actorRef:this,action:{type:e.type,params:e.params}}),!e.exec)return;let t=RU;try{RU=!0,e.exec(e.info,e.params)}finally{RU=t}};this._processingStatus===zU.Running?t():this._deferred.push(t)}},this.send=this.send.bind(this),this.system._sendInspectionEvent({type:`@xstate.actor`,actorRef:this}),c&&(this.systemId=c,this.system._set(c,this)),this._initState(t?.snapshot??t?.state),c&&this._snapshot.status!==`active`&&this.system._unregister(this)}_initState(e){try{this._snapshot=e?this.logic.restoreSnapshot?this.logic.restoreSnapshot(e,this._actorScope):e:this.logic.getInitialSnapshot(this._actorScope,this.options?.input)}catch(e){this._snapshot={status:`error`,output:void 0,error:e}}}update(e,t){this._snapshot=e;let n;for(;n=this._deferred.shift();)try{n()}catch(t){this._deferred.length=0,this._snapshot={...e,status:`error`,error:t}}switch(this._snapshot.status){case`active`:for(let t of this.observers)try{t.next?.(e)}catch(e){_U(e)}break;case`done`:for(let t of this.observers)try{t.next?.(e)}catch(e){_U(e)}this._stopProcedure(),this._complete(),this._doneEvent=mU(this.id,this._snapshot.output),this._parent&&this.system._relay(this,this._parent,this._doneEvent);break;case`error`:this._error(this._snapshot.error);break}this.system._sendInspectionEvent({type:`@xstate.snapshot`,actorRef:this,event:t,snapshot:e})}subscribe(e,t,n){let r=jU(e,t,n);if(this._processingStatus!==zU.Stopped)this.observers.add(r);else switch(this._snapshot.status){case`done`:try{r.complete?.()}catch(e){_U(e)}break;case`error`:{let e=this._snapshot.error;if(!r.error)_U(e);else try{r.error(e)}catch(e){_U(e)}break}}return{unsubscribe:()=>{this.observers.delete(r)}}}on(e,t){let n=this.eventListeners.get(e);n||(n=new Set,this.eventListeners.set(e,n));let r=t.bind(void 0);return n.add(r),{unsubscribe:()=>{n.delete(r)}}}select(e,t=Object.is){return{subscribe:n=>{let r=jU(n),i=e(this.getSnapshot());return this.subscribe(n=>{let a=e(n);t(i,a)||(i=a,r.next?.(a))})},get:()=>e(this.getSnapshot())}}start(){if(this._processingStatus===zU.Running)return this;this._syncSnapshot&&this.subscribe({next:e=>{e.status===`active`&&this.system._relay(this,this._parent,{type:`xstate.snapshot.${this.id}`,snapshot:e})},error:()=>{}}),this.system._register(this.sessionId,this),this.systemId&&this.system._set(this.systemId,this),this._processingStatus=zU.Running;let e=gU(this.options.input);switch(this.system._sendInspectionEvent({type:`@xstate.event`,sourceRef:this._parent,actorRef:this,event:e}),this._snapshot.status){case`done`:return this.update(this._snapshot,e),this;case`error`:return this._error(this._snapshot.error),this}if(this._parent||this.system.start(),this.logic.start)try{this.logic.start(this._snapshot,this._actorScope)}catch(e){return this._snapshot={...this._snapshot,status:`error`,error:e},this._error(e),this}return this.update(this._snapshot,e),this.options.devTools&&this.attachDevTools(),this.mailbox.start(),this}_process(e){let t,n;try{t=this.logic.transition(this._snapshot,e,this._actorScope)}catch(e){n={err:e}}if(n){let{err:e}=n;this._snapshot={...this._snapshot,status:`error`,error:e},this._error(e);return}this.update(t,e),e.type===`xstate.stop`&&(this._stopProcedure(),this._complete())}_stop(){return this._processingStatus===zU.Stopped?this:(this.mailbox.clear(),this._processingStatus===zU.NotStarted?(this._processingStatus=zU.Stopped,this):(this.mailbox.enqueue({type:dU}),this))}stop(){if(this._parent)throw Error(`A non-root actor cannot be stopped directly.`);return this._stop()}_complete(){for(let e of this.observers)try{e.complete?.()}catch(e){_U(e)}this.observers.clear(),this.eventListeners.clear()}_reportError(e){if(!this.observers.size){this._parent||_U(e),this.eventListeners.clear();return}let t=!1;for(let n of this.observers){let r=n.error;t||=!r;try{r?.(e)}catch(e){_U(e)}}this.observers.clear(),this.eventListeners.clear(),t&&_U(e)}_error(e){this._stopProcedure(),this._reportError(e),this._parent&&this.system._relay(this,this._parent,hU(this.id,e))}_stopProcedure(){return this._processingStatus===zU.Running?(this.system.scheduler.cancelAll(this),this.mailbox.clear(),this.mailbox=new oU(this._process.bind(this)),this._processingStatus=zU.Stopped,this.system._unregister(this),this):this}_send(e){this._processingStatus!==zU.Stopped&&this.mailbox.enqueue(e)}send(e){this.system._relay(void 0,this,e)}attachDevTools(){let{devTools:e}=this.options;e&&(typeof e==`function`?e:aU)(this)}toJSON(){return{xstate$$type:1,id:this.id}}getPersistedSnapshot(e){return this.logic.getPersistedSnapshot(this._snapshot,e)}[vU](){return this}getSnapshot(){return this._snapshot}};function HU(e,...[t]){return new VU(e,t)}function UU(e,t,n,r,{sendId:i}){return[t,{sendId:typeof i==`function`?i(n,r):i},void 0]}function WU(e,t){e.defer(()=>{e.system.scheduler.cancel(e.self,t.sendId)})}function GU(e){function t(e,t){}return t.type=`xstate.cancel`,t.sendId=e,t.resolve=UU,t.execute=WU,t}function KU(e,t,n,r,{id:i,systemId:a,src:o,input:s,syncSnapshot:c}){let l=typeof o==`string`?NU(t.machine,o):o,u=typeof i==`function`?i(n):i,d,f;return l&&(f=typeof s==`function`?s({context:t.context,event:n.event,self:e.self}):s,d=HU(l,{id:u,src:o,parent:e.self,syncSnapshot:c,systemId:a,input:f})),[cG(t,{children:{...t.children,[u]:d}}),{id:i,systemId:a,actorRef:d,src:o,input:f},void 0]}function qU(e,{actorRef:t}){t&&e.defer(()=>{t._processingStatus!==zU.Stopped&&t.start()})}function JU(...[e,{id:t,systemId:n,input:r,syncSnapshot:i=!1}={}]){function a(e,t){}return a.type=`xstate.spawnChild`,a.id=t,a.systemId=n,a.src=e,a.input=r,a.syncSnapshot=i,a.resolve=KU,a.execute=qU,a}function YU(e,t,n,r,{actorRef:i}){let a=typeof i==`function`?i(n,r):i,o=typeof a==`string`?t.children[a]:a,s=t.children;return o&&(s={...s},delete s[o.id]),[cG(t,{children:s}),o,void 0]}function XU(e,t){let n=t.getSnapshot();if(n&&`children`in n)for(let t of Object.values(n.children))XU(e,t);e.system._unregister(t)}function ZU(e,t){if(t){if(XU(e,t),t._processingStatus!==zU.Running){e.stopChild(t);return}e.defer(()=>{e.stopChild(t)})}}function QU(e){function t(e,t){}return t.type=`xstate.stopChild`,t.actorRef=e,t.resolve=YU,t.execute=ZU,t}function $U(e,{context:t,event:n},{guards:r}){return r.every(r=>tW(r,t,n,e))}function eW(e){function t(e,t){return!1}return t.check=$U,t.guards=e,t}function tW(e,t,n,r){let{machine:i}=r,a=typeof e==`function`,o=a?e:i.implementations.guards[typeof e==`string`?e:e.type];if(!a&&!o)throw Error(`Guard '${typeof e==`string`?e:e.type}' is not implemented.'.`);if(typeof o!=`function`)return tW(o,t,n,r);let s={context:t,event:n},c=a||typeof e==`string`?void 0:`params`in e?typeof e.params==`function`?e.params({context:t,event:n}):e.params:void 0;return`check`in o?o.check(r,s,o):o(s,c)}function nW(e){return e.type===`atomic`||e.type===`final`}function rW(e){return Object.values(e.states).filter(e=>e.type!==`history`)}function iW(e,t){let n=[];if(t===e)return n;let r=e.parent;for(;r&&r!==t;)n.push(r),r=r.parent;return n}function aW(e){let t=new Set(e),n=sW(t);for(let e of t)if(e.type===`compound`&&(!n.get(e)||!n.get(e).length))bW(e).forEach(e=>t.add(e));else if(e.type===`parallel`){for(let n of rW(e))if(n.type!==`history`&&!t.has(n)){let e=bW(n);for(let n of e)t.add(n)}}for(let e of t){let n=e.parent;for(;n;)t.add(n),n=n.parent}return t}function oW(e,t){let n=t.get(e);if(!n)return{};if(e.type===`compound`){let e=n[0];if(e){if(nW(e))return e.key}else return{}}let r={};for(let e of n)r[e.key]=oW(e,t);return r}function sW(e){let t=new Map;for(let n of e)t.has(n)||t.set(n,[]),n.parent&&(t.has(n.parent)||t.set(n.parent,[]),t.get(n.parent).push(n));return t}function cW(e,t){return oW(e,sW(aW(t)))}function lW(e,t){return t.type===`compound`?rW(t).some(t=>t.type===`final`&&e.has(t)):t.type===`parallel`?rW(t).every(t=>lW(e,t)):t.type===`final`}var uW=e=>e[0]===cU;function dW(e,t){return e.transitions.get(t)||[...e.transitions.keys()].filter(e=>PU(t,e)).sort((e,t)=>t.length-e.length).flatMap(t=>e.transitions.get(t))}function fW(e){let t=e.config.after;if(!t)return[];let n=t=>{let n=fU(t,e.id),r=n.type;return e.entry.push(mG(n,{id:r,delay:t})),e.exit.push(GU(r)),r};return Object.keys(t).flatMap(e=>{let r=t[e],i=typeof r==`string`?{target:r}:r,a=Number.isNaN(+e)?e:+e,o=n(a);return TU(i).map(e=>({...e,event:o,delay:a}))}).map(t=>{let{delay:n}=t;return{...pW(e,t.event,t),delay:n}})}function pW(e,t,n){let r=AU(n.target),i=n.reenter??!1,a=_W(e,r),o={...n,actions:TU(n.actions),guard:n.guard,target:a,source:e,reenter:i,eventType:t,toJSON:()=>({...o,source:`#${e.id}`,target:a?a.map(e=>`#${e.id}`):void 0})};return o}function mW(e){let t=new Map;if(e.config.on)for(let n of Object.keys(e.config.on)){if(n===``)throw Error('Null events ("") cannot be specified as a transition key. Use `always: { ... }` instead.');let r=e.config.on[n];t.set(n,kU(r).map(t=>pW(e,n,t)))}if(e.config.onDone){let n=`xstate.done.state.${e.id}`;t.set(n,kU(e.config.onDone).map(t=>pW(e,n,t)))}for(let n of e.invoke){if(n.onDone){let r=`xstate.done.actor.${n.id}`;t.set(r,kU(n.onDone).map(t=>pW(e,r,t)))}if(n.onError){let r=`xstate.error.actor.${n.id}`;t.set(r,kU(n.onError).map(t=>pW(e,r,t)))}if(n.onSnapshot){let r=`xstate.snapshot.${n.id}`;t.set(r,kU(n.onSnapshot).map(t=>pW(e,r,t)))}}for(let n of e.after){let e=t.get(n.eventType);e||(e=[],t.set(n.eventType,e)),e.push(n)}return t}function hW(e){let t=[],n=r=>{Object.values(r).forEach(r=>{if(r.config.route&&r.config.id){let n=r.config.id,i=r.config.route.guard,a=({event:e})=>e.to===`#${n}`,o={...r.config.route,guard:i?eW([a,i]):a,target:`#${n}`};t.push(pW(e,`xstate.route`,o))}r.states&&n(r.states)})};n(e.states),t.length>0&&e.transitions.set(`xstate.route`,t)}function gW(e,t){let n=typeof t==`string`?e.states[t]:t?e.states[t.target]:void 0;if(!n&&t)throw Error(`Initial state node "${t}" not found on parent state node #${e.id}`);let r={source:e,actions:!t||typeof t==`string`?[]:TU(t.actions),eventType:null,reenter:!1,target:n?[n]:[],toJSON:()=>({...r,source:`#${e.id}`,target:n?[`#${n.id}`]:[]})};return r}function _W(e,t){if(t!==void 0)return t.map(t=>{if(typeof t!=`string`)return t;if(uW(t))return e.machine.getStateNodeById(t);let n=t[0]===`.`;if(n&&!e.parent)return CW(e,t.slice(1));let r=n?e.key+t:t;if(e.parent)try{return CW(e.parent,r)}catch(t){throw Error(`Invalid transition definition for state node '${e.id}':\n${t.message}`)}else throw Error(`Invalid target: "${t}" is not a valid target from the root node. Did you mean ".${t}"?`)})}function vW(e){let t=AU(e.config.target);return t?{target:t.map(t=>typeof t==`string`?CW(e.parent,t):t)}:e.parent.initial}function yW(e){return e.type===`history`}function bW(e){let t=xW(e);for(let n of t)for(let r of iW(n,e))t.add(r);return t}function xW(e){let t=new Set;function n(e){if(!t.has(e)){if(t.add(e),e.type===`compound`)n(e.initial.target[0]);else if(e.type===`parallel`)for(let t of rW(e))n(t)}}return n(e),t}function SW(e,t){if(uW(t))return e.machine.getStateNodeById(t);if(!e.states)throw Error(`Unable to retrieve child state '${t}' from '${e.id}'; no child states exist.`);let n=e.states[t];if(!n)throw Error(`Child state '${t}' does not exist on '${e.id}'`);return n}function CW(e,t){if(typeof t==`string`&&uW(t))try{return e.machine.getStateNodeById(t)}catch{}let n=bU(t).slice(),r=e;for(;n.length;){let e=n.shift();if(!e.length)break;r=SW(r,e)}return r}function wW(e,t){if(typeof t==`string`){let n=e.states[t];if(!n)throw Error(`State '${t}' does not exist on '${e.id}'`);return[e,n]}let n=Object.keys(t),r=n.map(t=>SW(e,t)).filter(Boolean);return[e.machine.root,e].concat(r,n.reduce((n,r)=>{let i=SW(e,r);if(!i)return n;let a=wW(i,t[r]);return n.concat(a)},[]))}function TW(e,t,n,r){let i=SW(e,t).next(n,r);return!i||!i.length?e.next(n,r):i}function EW(e,t,n,r){let i=Object.keys(t),a=OW(SW(e,i[0]),t[i[0]],n,r);return!a||!a.length?e.next(n,r):a}function DW(e,t,n,r){let i=[];for(let a of Object.keys(t)){let o=t[a];if(!o)continue;let s=OW(SW(e,a),o,n,r);s&&i.push(...s)}return i.length?i:e.next(n,r)}function OW(e,t,n,r){return typeof t==`string`?TW(e,t,n,r):Object.keys(t).length===1?EW(e,t,n,r):DW(e,t,n,r)}function kW(e){return Object.keys(e.states).map(t=>e.states[t]).filter(e=>e.type===`history`)}function AW(e,t){let n=e;for(;n.parent&&n.parent!==t;)n=n.parent;return n.parent===t}function jW(e,t){let n=new Set(e),r=new Set(t);for(let e of n)if(r.has(e))return!0;for(let e of r)if(n.has(e))return!0;return!1}function MW(e,t,n){let r=new Set;for(let i of e){let e=!1,a=new Set;for(let o of r)if(jW(IW([i],t,n),IW([o],t,n)))if(AW(i.source,o.source))a.add(o);else{e=!0;break}if(!e){for(let e of a)r.delete(e);r.add(i)}}return Array.from(r)}function NW(e){let[t,...n]=e;for(let e of iW(t,void 0))if(n.every(t=>AW(t,e)))return e}function PW(e,t){if(!e.target)return[];let n=new Set;for(let r of e.target)if(yW(r))if(t[r.id])for(let e of t[r.id])n.add(e);else for(let e of PW(vW(r),t))n.add(e);else n.add(r);return[...n]}function FW(e,t){let n=PW(e,t);if(!n)return;if(!e.reenter&&n.every(t=>t===e.source||AW(t,e.source)))return e.source;let r=NW(n.concat(e.source));if(r)return r;if(!e.reenter)return e.source.machine.root}function IW(e,t,n){let r=new Set;for(let i of e)if(i.target?.length){let e=FW(i,n);i.reenter&&i.source===e&&r.add(e);for(let n of t)AW(n,e)&&r.add(n)}return[...r]}function LW(e,t){if(e.length!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function RW(e,t,n,r,i){return zW([{target:[...xW(e)],source:e,reenter:!0,actions:[],eventType:null,toJSON:null}],t,n,r,!0,i)}function zW(e,t,n,r,i,a){let o=[];if(!e.length)return[t,o];let s=n.actionExecutor;n.actionExecutor=e=>{o.push(e),s(e)};try{let s=new Set(t._nodes),c=t.historyValue,l=MW(e,s,c),u=t;i||([u,c]=KW(u,r,n,l,s,c,a,n.actionExecutor)),u=YW(u,r,n,l.flatMap(e=>e.actions),a,void 0),u=VW(u,r,n,l,s,a,c,i);let d=[...s];u.status===`done`&&(u=YW(u,r,n,d.sort((e,t)=>t.order-e.order).flatMap(e=>e.exit),a,void 0));try{return c===t.historyValue&&LW(t._nodes,s)?[u,o]:[cG(u,{_nodes:d,historyValue:c}),o]}catch(e){throw e}}finally{n.actionExecutor=s}}function BW(e,t,n,r,i){if(r.output===void 0)return;let a=pU(i.id,i.output!==void 0&&i.parent?EU(i.output,e.context,t,n.self):void 0);return EU(r.output,e.context,a,n.self)}function VW(e,t,n,r,i,a,o,s){let c=e,l=new Set,u=new Set;HW(r,o,u,l),s&&u.add(e.machine.root);let d=new Set;for(let e of[...l].sort((e,t)=>e.order-t.order)){i.add(e);let r=[];r.push(...e.entry);for(let t of e.invoke)r.push(JU(t.src,{...t,syncSnapshot:!!t.onSnapshot}));if(u.has(e)){let t=e.initial.actions;r.push(...t)}if(c=YW(c,t,n,r,a,e.invoke.map(e=>e.id)),e.type===`final`){let r=e.parent,o=r?.type===`parallel`?r:r?.parent,s=o||e;for(r?.type===`compound`&&a.push(pU(r.id,e.output===void 0?void 0:EU(e.output,c.context,t,n.self)));o?.type===`parallel`&&!d.has(o)&&lW(i,o);)d.add(o),a.push(pU(o.id)),s=o,o=o.parent;if(o)continue;c=cG(c,{status:`done`,output:BW(c,t,n,c.machine.root,s)})}}return c}function HW(e,t,n,r){for(let i of e){let e=FW(i,t);for(let a of i.target||[])!yW(a)&&(i.source!==a||i.source!==e||i.reenter)&&(r.add(a),n.add(a)),UW(a,t,n,r);let a=PW(i,t);for(let o of a){let a=iW(o,e);e?.type===`parallel`&&a.push(e),WW(r,t,n,a,!i.source.parent&&i.reenter?void 0:e)}}}function UW(e,t,n,r){if(yW(e))if(t[e.id]){let i=t[e.id];for(let e of i)r.add(e),UW(e,t,n,r);for(let a of i)GW(a,e.parent,r,t,n)}else{let i=vW(e);for(let a of i.target)r.add(a),i===e.parent?.initial&&n.add(e.parent),UW(a,t,n,r);for(let a of i.target)GW(a,e.parent,r,t,n)}else if(e.type===`compound`){let[i]=e.initial.target;yW(i)||(r.add(i),n.add(i)),UW(i,t,n,r),GW(i,e,r,t,n)}else if(e.type===`parallel`)for(let i of rW(e).filter(e=>!yW(e)))[...r].some(e=>AW(e,i))||(yW(i)||(r.add(i),n.add(i)),UW(i,t,n,r))}function WW(e,t,n,r,i){for(let a of r)if((!i||AW(a,i))&&e.add(a),a.type===`parallel`)for(let r of rW(a).filter(e=>!yW(e)))[...e].some(e=>AW(e,r))||(e.add(r),UW(r,t,n,e))}function GW(e,t,n,r,i){WW(n,r,i,iW(e,t))}function KW(e,t,n,r,i,a,o,s){let c=e,l=IW(r,i,a);l.sort((e,t)=>t.order-e.order);let u;for(let e of l)for(let t of kW(e)){let n;n=t.history===`deep`?t=>nW(t)&&AW(t,e):t=>t.parent===e,u??={...a},u[t.id]=Array.from(i).filter(n)}for(let e of l)c=YW(c,t,n,[...e.exit,...e.invoke.map(e=>QU(e.id))],o,void 0),i.delete(e);return[c,u||a]}function qW(e,t){return e.implementations.actions[t]}function JW(e,t,n,r,i,a){let{machine:o}=e,s=e;for(let e of r){let r=typeof e==`function`,c=r?e:qW(o,typeof e==`string`?e:e.type),l={context:s.context,event:t,self:n.self,system:n.system},u=r||typeof e==`string`?void 0:`params`in e?typeof e.params==`function`?e.params({context:s.context,event:t}):e.params:void 0;if(!c||!(`resolve`in c)){n.actionExecutor({type:typeof e==`string`?e:typeof e==`object`?e.type:e.name||`(anonymous)`,info:l,params:u,exec:c});continue}let d=c,[f,p,m]=d.resolve(n,s,l,u,c,i);s=f,`retryResolve`in d&&a?.push([d,p]),`execute`in d&&n.actionExecutor({type:d.type,info:l,params:p,exec:d.execute.bind(null,n,p)}),m&&(s=JW(s,t,n,m,i,a))}return s}function YW(e,t,n,r,i,a){let o=a?[]:void 0,s=JW(e,t,n,r,{internalQueue:i,deferredActorIds:a},o);return o?.forEach(([e,t])=>{e.retryResolve(n,s,t)}),s}function XW(e,t,n,r){let i=e,a=[];function o(e,t,r){n.system._sendInspectionEvent({type:`@xstate.microstep`,actorRef:n.self,event:t,snapshot:e[0],_transitions:r}),a.push(e)}if(t.type===`xstate.stop`)return i=cG(ZW(i,t,n),{status:`stopped`}),o([i,[]],t,[]),{snapshot:i,microsteps:a};let s=t;if(s.type!==uU){let t=s,c=OU(t),l=QW(t,i);if(c&&!l.length)return i=cG(e,{status:`error`,error:t.error}),o([i,[]],t,[]),{snapshot:i,microsteps:a};let u=zW(l,e,n,s,!1,r);i=u[0],o(u,t,l)}let c=!0,l=e.machine.options?.maxIterations??1/0,u=0;for(;i.status===`active`;){if(u++,u>l)throw Error(`Infinite loop detected: the machine has processed more than ${l} microsteps without reaching a stable state. This usually happens when there's a cycle of transitions (e.g., eventless transitions or raised events causing state A -> B -> C -> A).`);let e=c?$W(i,s):[],t=e.length?i:void 0;if(!e.length){if(!r.length)break;s=r.shift(),e=QW(s,i)}let a=zW(e,i,n,s,!1,r);i=a[0],c=i!==t,o(a,s,e)}return i.status!==`active`&&ZW(i,s,n),{snapshot:i,microsteps:a}}function ZW(e,t,n){return YW(e,t,n,Object.values(e.children).map(e=>QU(e)),[],void 0)}function QW(e,t){return t.machine.getTransitionData(t,e)}function $W(e,t){let n=new Set,r=e._nodes.filter(nW);for(let i of r)loop:for(let r of[i].concat(iW(i,void 0)))if(r.always){for(let i of r.always)if(i.guard===void 0||tW(i.guard,e.context,t,e)){n.add(i);break loop}}return MW(Array.from(n),new Set(e._nodes),e.historyValue)}function eG(e,t){return cW(e,[...aW(wW(e,t))])}function tG(e){return!!e&&typeof e==`object`&&`machine`in e&&`value`in e}var nG=function(e){return yU(e,this.value)},rG=function(e){return this.tags.has(e)},iG=function(e){let t=this.machine.getTransitionData(this,e);return!!t?.length&&t.some(e=>e.target!==void 0||e.actions.length)},aG=function(){let{_nodes:e,tags:t,machine:n,getMeta:r,toJSON:i,can:a,hasTag:o,matches:s,...c}=this;return{...c,tags:Array.from(t)}},oG=function(){return this._nodes.reduce((e,t)=>(t.meta!==void 0&&(e[t.id]=t.meta),e),{})};function sG(e,t){return{status:e.status,output:e.output,error:e.error,machine:t,context:e.context,_nodes:e._nodes,value:cW(t.root,e._nodes),tags:new Set(e._nodes.flatMap(e=>e.tags)),children:e.children,historyValue:e.historyValue||{},matches:nG,hasTag:rG,can:iG,getMeta:oG,toJSON:aG}}function cG(e,t={}){return sG({...e,...t},e.machine)}function lG(e){if(typeof e!=`object`||!e)return{};let t={};for(let n in e){let r=e[n];Array.isArray(r)&&(t[n]=r.map(e=>({id:e.id})))}return t}function uG(e,t){let{_nodes:n,tags:r,machine:i,children:a,context:o,can:s,hasTag:c,matches:l,getMeta:u,toJSON:d,...f}=e,p={};for(let e in a){let n=a[e];p[e]={snapshot:n.getPersistedSnapshot(t),src:n.src,systemId:n.systemId,syncSnapshot:n._syncSnapshot}}return{...f,context:dG(o),children:p,historyValue:lG(f.historyValue)}}function dG(e){let t;for(let n in e){let r=e[n];if(r&&typeof r==`object`)if(`sessionId`in r&&`send`in r&&`ref`in r)t??=Array.isArray(e)?e.slice():{...e},t[n]={xstate$$type:1,id:r.id};else{let i=dG(r);i!==r&&(t??=Array.isArray(e)?e.slice():{...e},t[n]=i)}}return t??e}function fG(e,t,n,r,{event:i,id:a,delay:o},{internalQueue:s}){let c=t.machine.implementations.delays;if(typeof i==`string`)throw Error(`Only event objects may be used with raise; use raise({ type: "${i}" }) instead`);let l=typeof i==`function`?i(n,r):i,u;if(typeof o==`string`){let e=c&&c[o];u=typeof e==`function`?e(n,r):e}else u=typeof o==`function`?o(n,r):o;return typeof u!=`number`&&s.push(l),[t,{event:l,id:a,delay:u},void 0]}function pG(e,t){let{event:n,delay:r,id:i}=t;if(typeof r==`number`){e.defer(()=>{let t=e.self;e.system.scheduler.schedule(t,t,n,r,i)});return}}function mG(e,t){function n(e,t){}return n.type=`xstate.raise`,n.event=e,n.id=t?.id,n.delay=t?.delay,n.resolve=fG,n.execute=pG,n}function hG(e,{machine:t,context:n},r,i){let a=(a,o)=>{if(typeof a==`string`){let s=NU(t,a);if(!s)throw Error(`Actor logic '${a}' not implemented in machine '${t.id}'`);let c=HU(s,{id:o?.id,parent:e.self,syncSnapshot:o?.syncSnapshot,input:typeof o?.input==`function`?o.input({context:n,event:r,self:e.self}):o?.input,src:a,systemId:o?.systemId});return i[c.id]=c,c}else return HU(a,{id:o?.id,parent:e.self,syncSnapshot:o?.syncSnapshot,input:o?.input,src:a,systemId:o?.systemId})};return(t,n)=>{let r=a(t,n);return i[r.id]=r,e.defer(()=>{r._processingStatus!==zU.Stopped&&r.start()}),r}}function gG(e,t,n,r,{assignment:i}){if(!t.context)throw Error("Cannot assign to undefined `context`. Ensure that `context` is defined in the machine config.");let a={},o={context:t.context,event:n.event,spawn:hG(e,t,n.event,a),self:e.self,system:e.system},s={};if(typeof i==`function`)s=i(o,r);else for(let e of Object.keys(i)){let t=i[e];s[e]=typeof t==`function`?t(o,r):t}return[cG(t,{context:Object.assign({},t.context,s),children:Object.keys(a).length?{...t.children,...a}:t.children}),void 0,void 0]}function _G(e){function t(e,t){}return t.type=`xstate.assign`,t.assignment=e,t.resolve=gG,t}var vG=new WeakMap;function yG(e,t,n){let r=vG.get(e);return r?t in r||(r[t]=n()):(r={[t]:n()},vG.set(e,r)),r[t]}var bG={},xG=e=>typeof e==`string`?{type:e}:typeof e==`function`?`resolve`in e?{type:e.type}:{type:e.name}:e,SG=class e{constructor(t,n){if(this.config=t,this.key=void 0,this.id=void 0,this.type=void 0,this.path=void 0,this.states=void 0,this.history=void 0,this.entry=void 0,this.exit=void 0,this.parent=void 0,this.machine=void 0,this.meta=void 0,this.output=void 0,this.order=-1,this.description=void 0,this.tags=[],this.transitions=void 0,this.always=void 0,this.parent=n._parent,this.key=n._key,this.machine=n._machine,this.path=this.parent?this.parent.path.concat(this.key):[],this.id=this.config.id||[this.machine.id,...this.path].join(`.`),this.type=this.config.type||(this.config.states&&Object.keys(this.config.states).length?`compound`:this.config.history?`history`:`atomic`),this.description=this.config.description,this.order=this.machine.idMap.size,this.machine.idMap.set(this.id,this),this.states=this.config.states?CU(this.config.states,(t,n)=>new e(t,{_parent:this,_key:n,_machine:this.machine})):bG,this.type===`compound`&&!this.config.initial)throw Error(`No initial state specified for compound state node "#${this.id}". Try adding { initial: "${Object.keys(this.states)[0]}" } to the state config.`);this.history=this.config.history===!0?`shallow`:this.config.history||!1,this.entry=TU(this.config.entry).slice(),this.exit=TU(this.config.exit).slice(),this.meta=this.config.meta,this.output=this.type===`final`||!this.parent?this.config.output:void 0,this.tags=TU(t.tags).slice()}_initialize(){this.transitions=mW(this),this.config.always&&(this.always=kU(this.config.always).map(e=>pW(this,``,e))),Object.keys(this.states).forEach(e=>{this.states[e]._initialize()})}get definition(){return{id:this.id,key:this.key,version:this.machine.version,type:this.type,initial:this.initial?{target:this.initial.target,source:this,actions:this.initial.actions.map(xG),eventType:null,reenter:!1,toJSON:()=>({target:this.initial.target.map(e=>`#${e.id}`),source:`#${this.id}`,actions:this.initial.actions.map(xG),eventType:null})}:void 0,history:this.history,states:CU(this.states,e=>e.definition),on:this.on,transitions:[...this.transitions.values()].flat().map(e=>({...e,actions:e.actions.map(xG)})),entry:this.entry.map(xG),exit:this.exit.map(xG),meta:this.meta,order:this.order||-1,output:this.output,invoke:this.invoke,description:this.description,tags:this.tags}}toJSON(){return this.definition}get invoke(){return yG(this,`invoke`,()=>TU(this.config.invoke).map((e,t)=>{let{src:n,systemId:r}=e,i=e.id??MU(this.id,t),a=typeof n==`string`?n:`xstate.invoke.${MU(this.id,t)}`;return{...e,src:a,id:i,systemId:r,toJSON(){let{onDone:t,onError:n,...r}=e;return{...r,type:`xstate.invoke`,src:a,id:i}}}}))}get on(){return yG(this,`on`,()=>[...this.transitions].flatMap(([e,t])=>t.map(t=>[e,t])).reduce((e,[t,n])=>(e[t]=e[t]||[],e[t].push(n),e),{}))}get after(){return yG(this,`delayedTransitions`,()=>fW(this))}get initial(){return yG(this,`initial`,()=>gW(this,this.config.initial))}next(e,t){let n=t.type,r=[],i,a=yG(this,`candidates-${n}`,()=>dW(this,n));for(let o of a){let{guard:a}=o,s=e.context,c=!1;try{c=!a||tW(a,s,t,e)}catch(e){let t=typeof a==`string`?a:typeof a==`object`?a.type:void 0;throw Error(`Unable to evaluate guard ${t?`'${t}' `:``}in transition for event '${n}' in state node '${this.id}':\n${e.message}`)}if(c){r.push(...o.actions),i=o;break}}return i?[i]:void 0}get events(){return yG(this,`events`,()=>{let{states:e}=this,t=new Set(this.ownEvents);if(e)for(let n of Object.keys(e)){let r=e[n];if(r.states)for(let e of r.events)t.add(`${e}`)}return Array.from(t)})}get ownEvents(){let e=Object.keys(Object.fromEntries(this.transitions)),t=new Set(e.filter(e=>this.transitions.get(e).some(e=>!(!e.target&&!e.actions.length&&!e.reenter))));return Array.from(t)}},CG=class e{constructor(e,t){this.config=e,this.version=void 0,this.schemas=void 0,this.implementations=void 0,this.options=void 0,this.__xstatenode=!0,this.idMap=new Map,this.root=void 0,this.id=void 0,this.states=void 0,this.events=void 0,this.id=e.id||`(machine)`,this.implementations={actors:t?.actors??{},actions:t?.actions??{},delays:t?.delays??{},guards:t?.guards??{}},this.version=this.config.version,this.schemas=this.config.schemas,this.options={maxIterations:1/0,...this.config.options},this.transition=this.transition.bind(this),this.getInitialSnapshot=this.getInitialSnapshot.bind(this),this.getPersistedSnapshot=this.getPersistedSnapshot.bind(this),this.restoreSnapshot=this.restoreSnapshot.bind(this),this.start=this.start.bind(this),this.root=new SG(e,{_key:this.id,_machine:this}),this.root._initialize(),hW(this.root),this.states=this.root.states,this.events=this.root.events}provide(t){let{actions:n,guards:r,actors:i,delays:a}=this.implementations;return new e(this.config,{actions:{...n,...t.actions},guards:{...r,...t.guards},actors:{...i,...t.actors},delays:{...a,...t.delays}})}resolveState(e){let t=eG(this.root,e.value),n=aW(wW(this.root,t));return sG({_nodes:[...n],context:e.context||{},children:{},status:lW(n,this.root)?`done`:e.status||`active`,output:e.output,error:e.error,historyValue:e.historyValue},this)}transition(e,t,n){return XW(e,t,n,[]).snapshot}microstep(e,t,n){return XW(e,t,n,[]).microsteps.map(([e])=>e)}getTransitionData(e,t){return OW(this.root,e.value,e,t)||[]}_getPreInitialState(e,t,n){let{context:r}=this.config,i=sG({context:typeof r!=`function`&&r?r:{},_nodes:[this.root],children:{},status:`active`},this);return typeof r==`function`?YW(i,t,e,[_G(({spawn:e,event:t,self:n})=>r({spawn:e,input:t.input,self:n}))],n,void 0):i}getInitialSnapshot(e,t){let n=gU(t),r=[],i=this._getPreInitialState(e,n,r),[a]=RW(this.root,i,e,n,r),{snapshot:o}=XW(a,n,e,r);return o}start(e){Object.values(e.children).forEach(e=>{e.getSnapshot().status===`active`&&e.start()})}getStateNodeById(e){let t=bU(e),n=t.slice(1),r=uW(t[0])?t[0].slice(1):t[0],i=this.idMap.get(r);if(!i)throw Error(`Child state node '#${r}' does not exist on machine '${this.id}'`);return CW(i,n)}get definition(){return this.root.definition}toJSON(){return this.definition}getPersistedSnapshot(e,t){return uG(e,t)}restoreSnapshot(e,t){let n={},r=e.children;Object.keys(r).forEach(e=>{let i=r[e],a=i.snapshot,o=i.src,s=typeof o==`string`?NU(this,o):o;s&&(n[e]=HU(s,{id:e,parent:t.self,syncSnapshot:i.syncSnapshot,snapshot:a,src:o,systemId:i.systemId}))});function i(e,t){if(t instanceof SG)return t;try{return e.machine.getStateNodeById(t.id)}catch{}}function a(e,t){if(!t||typeof t!=`object`)return{};let n={};for(let r in t){let a=t[r];for(let t of a){let a=i(e,t);a&&(n[r]??=[],n[r].push(a))}}return n}let o=a(this.root,e.historyValue),s=sG({...e,children:n,_nodes:Array.from(aW(wW(this.root,e.value))),historyValue:o},this),c=new Set;function l(e,t){if(!c.has(e)){c.add(e);for(let n in e){let r=e[n];if(r&&typeof r==`object`){if(`xstate$$type`in r&&r.xstate$$type===1){e[n]=t[r.id];continue}l(r,t)}}}}return l(s.context,n),s}};function wG(e,t,n,r,{event:i}){return[t,{event:typeof i==`function`?i(n,r):i},void 0]}function TG(e,{event:t}){e.defer(()=>e.emit(t))}function EG(e){function t(e,t){}return t.type=`xstate.emit`,t.event=e,t.resolve=wG,t.execute=TG,t}var DG=function(e){return e.Parent=`#_parent`,e.Internal=`#_internal`,e}({});function OG(e,t,n,r,{to:i,event:a,id:o,delay:s},c){let l=t.machine.implementations.delays;if(typeof a==`string`)throw Error(`Only event objects may be used with sendTo; use sendTo({ type: "${a}" }) instead`);let u=typeof a==`function`?a(n,r):a,d;if(typeof s==`string`){let e=l&&l[s];d=typeof e==`function`?e(n,r):e}else d=typeof s==`function`?s(n,r):s;let f=typeof i==`function`?i(n,r):i,p;if(typeof f==`string`){if(p=f===DG.Parent?e.self._parent:f===DG.Internal?e.self:f.startsWith(`#_`)?t.children[f.slice(2)]:c.deferredActorIds?.includes(f)?f:t.children[f],!p)throw Error(`Unable to send event to actor '${f}' from machine '${t.machine.id}'.`)}else p=f||e.self;return[t,{to:p,targetId:typeof f==`string`?f:void 0,event:u,id:o,delay:d},void 0]}function kG(e,t,n){typeof n.to==`string`&&(n.to=t.children[n.to])}function AG(e,t){e.defer(()=>{let{to:n,event:r,delay:i,id:a}=t;if(typeof i==`number`){e.system.scheduler.schedule(e.self,n,r,i,a);return}e.system._relay(e.self,n,r.type===`xstate.error`?hU(e.self.id,r.data):r)})}function jG(e,t,n){function r(e,t){}return r.type=`xstate.sendTo`,r.to=e,r.event=t,r.id=n?.id,r.delay=n?.delay,r.resolve=OG,r.retryResolve=kG,r.execute=AG,r}function MG(e,t){return jG(DG.Parent,e,t)}function NG(e,t,n,r,{collect:i}){let a=[],o=function(e){a.push(e)};return o.assign=(...e)=>{a.push(_G(...e))},o.cancel=(...e)=>{a.push(GU(...e))},o.raise=(...e)=>{a.push(mG(...e))},o.sendTo=(...e)=>{a.push(jG(...e))},o.sendParent=(...e)=>{a.push(MG(...e))},o.spawnChild=(...e)=>{a.push(JU(...e))},o.stopChild=(...e)=>{a.push(QU(...e))},o.emit=(...e)=>{a.push(EG(...e))},i({context:n.context,event:n.event,enqueue:o,check:e=>tW(e,t.context,n.event,t),self:e.self,system:e.system},r),[t,void 0,a]}function PG(e){function t(e,t){}return t.type=`xstate.enqueueActions`,t.collect=e,t.resolve=NG,t}function FG(e,t,n,r,{value:i,label:a}){return[t,{value:typeof i==`function`?i(n,r):i,label:a},void 0]}function IG({logger:e},{value:t,label:n}){n?e(n,t):e(t)}function LG(e=({context:e,event:t})=>({context:e,event:t}),t){function n(e,t){}return n.type=`xstate.log`,n.value=e,n.label=t,n.resolve=FG,n.execute=IG,n}function RG(e,t){return new CG(e,t)}function zG(e){let t=HU(e);return{self:t,defer:()=>{},id:``,logger:()=>{},sessionId:``,stopChild:()=>{},system:t.system,emit:()=>{},actionExecutor:()=>{}}}function BG({schemas:e,actors:t,actions:n,guards:r,delays:i}){return{assign:_G,sendTo:jG,raise:mG,log:LG,cancel:GU,stopChild:QU,enqueueActions:PG,emit:EG,spawnChild:JU,createStateConfig:e=>e,createAction:e=>e,createMachine:a=>RG({...a,schemas:e},{actors:t,actions:n,guards:r,delays:i}),extend:a=>BG({schemas:e,actors:t,actions:{...n,...a.actions},guards:{...r,...a.guards},delays:{...i,...a.delays}})}}function VG(e,t,n){let r=[],i=zG(e);return i.actionExecutor=e=>{r.push(e)},[e.transition(t,n,i),r]}var HG=function(e){return e.AUTHENTICATE=`AUTHENTICATE`,e.REQUIRE_EMAIL_VERIFICATION=`REQUIRE_EMAIL_VERIFICATION`,e.REQUIRE_MFA=`REQUIRE_MFA`,e.COMPLETE_MFA=`COMPLETE_MFA`,e.REQUIRE_CONSENT=`REQUIRE_CONSENT`,e.COMPLETE_CONSENT=`COMPLETE_CONSENT`,e.START_HOOK=`START_HOOK`,e.COMPLETE_HOOK=`COMPLETE_HOOK`,e.START_CONTINUATION=`START_CONTINUATION`,e.COMPLETE_CONTINUATION=`COMPLETE_CONTINUATION`,e.COMPLETE=`COMPLETE`,e.FAIL=`FAIL`,e.EXPIRE=`EXPIRE`,e}({}),UG=BG({types:{context:{},events:{}},actions:{setUserId:_G(({event:e})=>e.type===`AUTHENTICATE`?{userId:e.userId}:{}),setHookId:_G(({event:e})=>e.type===`START_HOOK`?{hookId:e.hookId}:{}),clearHookId:_G({hookId:void 0}),setContinuationScope:_G(({event:e})=>e.type===`START_CONTINUATION`?{continuationScope:e.scope}:{}),clearContinuationScope:_G({continuationScope:void 0}),setFailureReason:_G(({event:e})=>e.type===`FAIL`?{failureReason:e.reason}:{})}}).createMachine({id:`loginSession`,initial:`pending`,context:{},states:{pending:{on:{AUTHENTICATE:{target:`authenticated`,actions:`setUserId`},FAIL:{target:`failed`,actions:`setFailureReason`},EXPIRE:{target:`expired`}}},authenticated:{on:{REQUIRE_EMAIL_VERIFICATION:{target:`awaiting_email_verification`},REQUIRE_MFA:{target:`awaiting_mfa`},REQUIRE_CONSENT:{target:`awaiting_consent`},START_HOOK:{target:`awaiting_hook`,actions:`setHookId`},START_CONTINUATION:{target:`awaiting_continuation`,actions:`setContinuationScope`},COMPLETE:{target:`completed`},FAIL:{target:`failed`,actions:`setFailureReason`},EXPIRE:{target:`expired`}}},awaiting_email_verification:{on:{COMPLETE:{target:`authenticated`},FAIL:{target:`failed`,actions:`setFailureReason`},EXPIRE:{target:`expired`}}},awaiting_mfa:{on:{COMPLETE_MFA:{target:`authenticated`},FAIL:{target:`failed`,actions:`setFailureReason`},EXPIRE:{target:`expired`}}},awaiting_consent:{on:{COMPLETE_CONSENT:{target:`authenticated`},FAIL:{target:`failed`,actions:`setFailureReason`},EXPIRE:{target:`expired`}}},awaiting_hook:{on:{COMPLETE_HOOK:{target:`authenticated`,actions:`clearHookId`},START_CONTINUATION:{target:`awaiting_continuation`,actions:`setContinuationScope`},FAIL:{target:`failed`,actions:`setFailureReason`},EXPIRE:{target:`expired`}}},awaiting_continuation:{on:{COMPLETE_CONTINUATION:{target:`authenticated`,actions:`clearContinuationScope`},FAIL:{target:`failed`,actions:`setFailureReason`},EXPIRE:{target:`expired`}}},completed:{type:`final`},failed:{type:`final`},expired:{type:`final`}}});function WG(e,t={}){return UG.resolveState({value:e,context:t})}function GG(e,t,n={}){let[r]=VG(UG,WG(e,n),t),i={},a=r.context,o=n;return a.userId!==o.userId&&(i.userId=a.userId),a.hookId!==o.hookId&&(i.hookId=a.hookId),a.continuationScope!==o.continuationScope&&(i.continuationScope=a.continuationScope),a.failureReason!==o.failureReason&&(i.failureReason=a.failureReason),{state:r.value,context:i}}function KG(e,t){Object.keys(t).forEach(n=>{let r=t[n];r!=null&&r.length&&e.searchParams.set(n,r)})}function qG(e){try{let t=typeof e==`string`?new URL(e):e,n=`${t.protocol}//${t.host}${t.pathname}`;if(t.search){let e=Array.from(t.searchParams.keys()).map(e=>`${e}=[REDACTED]`).join(`&`);n+=`?${e}`}return t.hash&&(n+=`#[REDACTED]`),n}catch{let t=(typeof e==`string`?e:e.toString()).match(/^([^?#]*)(\?[^#]*)?(#.*)?$/);if(!t)return`[invalid-url]`;let[,n=``,r,i]=t,a=n;if(r){let e=r.substring(1).split(`&`).map(e=>{let[t]=e.split(`=`);return`${t}=[REDACTED]`}).join(`&`);a+=`?${e}`}return i&&(a+=`#[REDACTED]`),a}}var JG=3600;function YG(e){return!e||e<=0?{kind:`unset`}:{kind:`seconds`,seconds:e*JG}}function XG(e){if(!(e===void 0||e<=0))return{kind:`seconds`,seconds:e}}function ZG(e){let t=e.refresh_token;return t?.expiration_type===`non-expiring`||t?.infinite_token_lifetime?{kind:`infinite`}:XG(t?.token_lifetime)??YG(e.tenant.session_lifetime)}function QG(e){let t=e.refresh_token;return t?.expiration_type===`non-expiring`||t?.infinite_idle_token_lifetime?{kind:`infinite`}:XG(t?.idle_token_lifetime)??YG(e.tenant.idle_session_lifetime)}function $G(e,t=Date.now()){if(e.kind===`seconds`)return new Date(t+e.seconds*1e3).toISOString()}function eK(e,t=Date.now()){return{expires_at:$G(ZG(e),t),idle_expires_at:$G(QG(e),t)}}function tK(e,t,n=Date.now()){let r=QG(e);if(r.kind!==`infinite`)return r.kind===`unset`||!t?t:$G(r,n)}function nK(e,t,n=Date.now()){let r={};if(t.expires_at&&ZG(e).kind===`infinite`&&(r.expires_at=null),t.idle_expires_at){let t=QG(e);t.kind===`infinite`?r.idle_expires_at=null:t.kind===`seconds`&&(r.idle_expires_at=$G(t,n))}return r}function rK(e){switch(e){case Xr.AuthorizationCode:return M.FAILED_EXCHANGE_AUTHORIZATION_CODE_FOR_ACCESS_TOKEN;case Xr.ClientCredential:return M.FAILED_EXCHANGE_ACCESS_TOKEN_FOR_CLIENT_CREDENTIALS;case Xr.RefreshToken:return M.FAILED_EXCHANGE_REFRESH_TOKEN_FOR_ACCESS_TOKEN;case Xr.OTP:return M.FAILED_EXCHANGE_PASSWORD_OTP_FOR_ACCESS_TOKEN;case Xr.Password:return M.FAILED_EXCHANGE_PASSWORD_FOR_ACCESS_TOKEN;case Xr.Passwordless:return M.FAILED_EXCHANGE_PASSWORDLESS_OTP_FOR_ACCESS_TOKEN;case Xr.TokenExchange:return M.FAILED_EXCHANGE_SUBJECT_TOKEN_FOR_ACCESS_TOKEN;default:return M.FAILED_EXCHANGE_CUSTOM_TOKEN}}function iK(e,t,n,r,i=`onExecuteCredentialsExchange`){return{accessToken:{setCustomClaim:(n,r)=>{RM(t,n,r,{kind:`access_token`,source:i,ctx:e})}},idToken:{setCustomClaim:(t,r)=>{n&&RM(n,t,r,{kind:`id_token`,source:i,ctx:e})}},access:{deny:(t,n)=>{let i=n?`${t} - ${n}`:t;throw P(e,e.var.tenant_id||``,{type:rK(r),description:`Access denied by credentials-exchange hook: ${i}`}),new V(400,{message:`Access denied: ${i}`})}},token:{createServiceToken:async t=>(await UM(e,e.var.tenant_id,t.scope,t.expiresInSeconds,t.customClaims)).access_token}}}async function aK(e,t){let{authParams:n,user:r,client:i,session_id:a,organization:o,permissions:s,impersonatingUser:c,actClient:l,grantType:u}=t;if(r?.blocked)throw new V(403,{error:`access_denied`,error_description:`User is blocked`});let d=(()=>{if(c&&l)return{sub:c.user_id,client_id:l.client_id};if(c)return{sub:c.user_id};if(l)return{sub:l.client_id,client_id:l.client_id}})(),f=t.auth_time,p=n.prompt?.split(` `)??[],h=n.max_age!==void 0||p.includes(`login`)||n.claims?.id_token?.auth_time?.essential===!0;if(f===void 0&&h){if(t.loginSession?.authenticated_at)f=Math.floor(new Date(t.loginSession.authenticated_at).getTime()/1e3);else if(a&&e.var.tenant_id){let t=await e.env.data.sessions.get(e.var.tenant_id,a);t?.authenticated_at&&(f=Math.floor(new Date(t.authenticated_at).getTime()/1e3))}}let g=e.var.tenant_id,_=(await nj(e.env.data.keys,g??``,g?e.env.signingKeyMode:`control-plane`,{purpose:`sign`}))[0];if(!_?.pkcs7||!_.cert)throw new V(500,{message:`No signing key configured for ${g?`tenant "${g}"`:`the control-plane scope`}: found ${(await nj(e.env.data.keys,g??``,g?e.env.signingKeyMode:`control-plane`,{purpose:`publish`})).length} verify key(s) but none with private material to sign tokens.`});let v=I_(_.pkcs7),y=await NA(_.cert),b=to(e.env,e.var.custom_domain),x=n.audience??i.tenant.default_audience??`${b}userinfo`,S=n.claims?.userinfo?Object.keys(n.claims.userinfo):void 0,ee=zM(t.customClaims,{kind:`access_token`,source:`createAuthTokens(customClaims)`,ctx:e}),C={aud:x,scope:n.scope||``,sub:r?.user_id||n.client_id,iss:b,tenant_id:i.tenant.id,sid:a,act:d,org_id:o?o.id:void 0,requested_userinfo_claims:S,org_name:o&&i.tenant.allow_organization_name_in_authentication_api?o.name.toLowerCase():void 0,permissions:s,...ee},w=n.scope?.split(` `)||[],te=w.includes(`openid`),T=(n.response_type??``).trim()===tn.ID_TOKEN,ne=i.auth0_conformant!==!1||T,re={aud:n.client_id,sub:r?.user_id,iss:b,sid:a,nonce:n.nonce,...f===void 0?{}:{auth_time:f},...n.acr_values?{acr:n.acr_values.split(` `)[0]}:{}},E={act:d,org_id:o?.id,org_name:o?.name.toLowerCase()},ie=r&&te?{...re,...ne?QH(Ij(r,b),w):{},...n.claims?.id_token?$H(Ij(r,b),Object.keys(n.claims.id_token)):{},...T&&n.claims?.userinfo?$H(Ij(r,b),Object.keys(n.claims.userinfo)):{},...E}:void 0,ae=so({loginSession:t.loginSession,authConnection:t.authConnection,ctxConnection:e.var.connection,user:r}),oe=await co(e,e.var.tenant_id,ae,r);e.env.hooks?.onExecuteCredentialsExchange&&await e.env.hooks.onExecuteCredentialsExchange({ctx:e,client:i,user:r,request:{ip:e.var.ip||``,user_agent:e.var.useragent||``,method:e.req.method,url:e.req.url},scope:n.scope||``,grant_type:u??``,organization:o,connection:oe||(ae?{id:ae,name:ae,strategy:r?.provider||`auth0`}:void 0)},iK(e,C,ie,u));{let{hooks:t}=await e.env.data.hooks.list(e.var.tenant_id),a=t.filter(e=>e.trigger_id===`credentials-exchange`&&e.enabled&&ZV(e));if(r){for(let t of a)if(ZV(t))try{await tH(e,t.template_id,r,iK(e,C,ie,u,`template-hook:${t.template_id}`))}catch(e){if(e instanceof m)throw e;console.warn(`[credentials-exchange] Failed to execute template hook: ${t.template_id}`,e)}}let s=iK(e,C,ie,u,`credentials-exchange-code-hook`),c=await FV(e,t,{ctx:e,client:i,user:r,request:{ip:e.var.ip||``,user_agent:e.var.useragent||``,method:e.req?.method||``,url:e.req?.url||``},scope:n.scope||``,grant_type:u??``,organization:o,connection:oe||(ae?{id:ae,name:ae,strategy:r?.provider||`auth0`}:void 0)},s);c&&e.set(`action_execution_id`,c)}let se=c?3600:t.token_lifetime??86400,ce={includeIssuedTimestamp:!0,expiresInSeconds:se,headers:{kid:_.kid}},le=await lj(y,v,C,ce);if(ie){let e=(n.response_type??``).split(` `);t.code&&e.includes(`code`)&&(ie.c_hash=await eF(t.code,y)),e.includes(`id_token`)&&e.includes(`token`)&&(ie.at_hash=await eF(le,y))}let D=ie?await lj(y,v,ie,ce):void 0;return{access_token:le,refresh_token:t.refresh_token,id_token:D,token_type:`Bearer`,expires_in:se}}async function oK(e,t){return{code:(await e.env.data.codes.create(t.client.tenant.id,{code_id:ts(32),user_id:t.user.user_id,code_type:`authorization_code`,login_id:t.login_id,expires_at:new Date(Date.now()+300*1e3).toISOString(),code_challenge:t.authParams.code_challenge,code_challenge_method:t.authParams.code_challenge_method,redirect_uri:t.authParams.redirect_uri,state:t.authParams.state,nonce:t.authParams.nonce})).code_id,state:t.authParams.state}}function sK(e){if(e)return new Date(Date.now()+e*60*60*1e3).toISOString()}async function cK(e,t){let{client:n,scope:r,login_id:i}=t,a=to(e.env,e.var.custom_domain),o=t.audience??n.tenant.default_audience??`${a}userinfo`,{expires_at:s,idle_expires_at:c}=eK(n),l=$P(),{lookup:u,secret:d}=GP(),f=await KP(d),p=n.refresh_token?.rotation_type===`rotating`;return{row:await e.env.data.refreshTokens.create(n.tenant.id,{id:l,login_id:i,session_id:t.session_id,organization:t.organization,auth_connection:t.auth_connection,auth_strategy:t.auth_strategy,client_id:n.client_id,idle_expires_at:c,expires_at:s,user_id:t.user.user_id,device:{last_ip:e.var.ip,initial_ip:e.var.ip,last_user_agent:e.var.useragent||``,initial_user_agent:e.var.useragent||``,initial_asn:``,last_asn:``},resource_servers:[{audience:o,scopes:r}],rotating:p,token_lookup:u,token_hash:f,family_id:l}),wireToken:qP(u,d)}}async function lK(e,{user:t,client:n,loginSession:r}){let i=sK(n.tenant.idle_session_lifetime),a=sK(n.tenant.session_lifetime);return await e.env.data.sessions.create(n.tenant.id,{id:$P(),user_id:t.user_id,login_session_id:r.id,idle_expires_at:i,expires_at:a,device:{last_ip:e.var.ip||``,initial_ip:e.var.ip||``,last_user_agent:e.var.useragent||``,initial_user_agent:e.var.useragent||``,initial_asn:``,last_asn:``},clients:[n.client_id]})}async function uK(e,{user:t,client:n,loginSession:r,existingSessionId:i,authConnection:a,authStrategy:o}){let s=await e.env.data.loginSessions.get(n.tenant.id,r.id);if(!s)throw new m(400,{message:`Login session ${r.id} not found`});let c=s.state||j.PENDING;if(c===j.FAILED)throw new V(400,{error:`access_denied`,error_description:s.failure_reason||`Cannot authenticate login session in failed state`});if(c===j.COMPLETED)throw new V(400,{error:`access_denied`,error_description:`Login session has already been completed`});if(c===j.AUTHENTICATED){if(s.session_id)return s.session_id;throw new m(500,{message:`Login session is authenticated but has no session_id`})}let l,u;if(i){let a=await e.env.data.sessions.get(n.tenant.id,i);if(!a||a.revoked_at){let i=await lK(e,{user:t,client:n,loginSession:r});l=i.id,u=i.authenticated_at}else l=i,u=a.authenticated_at,a.clients.includes(n.client_id)?nU(e,n.tenant.id,i,a):await e.env.data.sessions.update(n.tenant.id,i,{clients:[...a.clients,n.client_id],...tU(a)&&{used_at:new Date().toISOString()}})}else{let i=await lK(e,{user:t,client:n,loginSession:r});l=i.id,u=i.authenticated_at}let{state:d}=GG(c===j.EXPIRED?j.PENDING:c,{type:HG.AUTHENTICATE,userId:t.user_id}),f=so({authConnection:a,ctxConnection:e.var.connection});return await e.env.data.loginSessions.update(n.tenant.id,r.id,{session_id:l,state:d,user_id:t.user_id,authenticated_at:u,...f?{auth_connection:f}:{},...o?{auth_strategy:o}:{},...c===j.EXPIRED?{expires_at:new Date(Date.now()+qj*1e3).toISOString()}:{}}),l}async function dK(e,t){let{user:n,client:r,loginSession:i,authStrategy:a,authConnection:o}=t;await uK(e,{user:n,client:r,loginSession:i,existingSessionId:t.existingSessionId,authConnection:o,authStrategy:a});let s=`/authorize/resume?state=${encodeURIComponent(i.id)}`,c=s,l=!1;if(i.authorization_url)try{let t=new URL(i.authorization_url),n=e.var.host||``;t.host&&t.host!==n&&(c=`${t.origin}${s}`,l=!0)}catch{}let u=new Headers({location:c});return l&&u.set(Da,`1`),new Response(null,{status:302,headers:u})}async function fK(e,t,n,r){let i=await e.env.data.loginSessions.get(t,n.id);if(!i){console.warn(`Login session ${n.id} not found when trying to mark as failed`);return}let a=i.state||j.PENDING,{state:o,context:s}=GG(a,{type:HG.FAIL,reason:r});o!==a&&await e.env.data.loginSessions.update(t,n.id,{state:o,failure_reason:s.failureReason})}async function pK(e,t,n,r){let i=await e.env.data.loginSessions.get(t,n.id);if(!i){console.warn(`Login session ${n.id} not found when trying to start hook`);return}let a=i.state||j.PENDING,{state:o,context:s}=GG(a,{type:HG.START_HOOK,hookId:r});o!==a&&await e.env.data.loginSessions.update(t,n.id,{state:o,state_data:s.hookId?JSON.stringify({hookId:s.hookId}):void 0})}async function mK(e,t,n){let r=await e.env.data.loginSessions.get(t,n.id);if(!r){console.warn(`Login session ${n.id} not found when trying to complete hook`);return}let i=r.state||j.PENDING,{state:a}=GG(i,{type:HG.COMPLETE_HOOK});a!==i&&await e.env.data.loginSessions.update(t,n.id,{state:a,state_data:``})}async function hK(e,t,n,r,i){let a=i??await e.env.data.loginSessions.get(t,n.id);if(!a){console.warn(`Login session ${n.id} not found when trying to mark as completed`);return}let o=a.state||j.PENDING,{state:s}=GG(o,{type:HG.COMPLETE});s!==o&&await e.env.data.loginSessions.update(t,n.id,{state:s,...r?{auth_connection:r}:{}})}async function gK(e,t,n,r,i){let a=await e.env.data.loginSessions.get(t,n.id);if(!a){console.warn(`Login session ${n.id} not found when trying to start continuation`);return}let o=a.state||j.PENDING,{state:s}=GG(o,{type:HG.START_CONTINUATION,scope:r});if(s!==o){let o={};if(a.state_data)try{o=JSON.parse(a.state_data)}catch{}await e.env.data.loginSessions.update(t,n.id,{state:s,state_data:JSON.stringify({...o,continuationScope:r,continuationReturnUrl:i})})}else console.warn(`Failed to start continuation for login session ${n.id}: cannot transition from ${o} to AWAITING_CONTINUATION. Scope: ${JSON.stringify(r)}, Return URL: ${qG(i)}`)}async function _K(e,t,n){let r=await e.env.data.loginSessions.get(t,n.id);if(!r){console.warn(`Login session ${n.id} not found when trying to complete continuation`);return}let i,a={};if(r.state_data)try{let e=JSON.parse(r.state_data);i=e.continuationReturnUrl;let{continuationScope:t,continuationReturnUrl:n,...o}=e;a=o}catch{}let o=r.state||j.PENDING,{state:s}=GG(o,{type:HG.COMPLETE_CONTINUATION});return s===o?console.warn(`completeLoginSessionContinuation: State transition from ${o} with COMPLETE_CONTINUATION was invalid or no-op`):await e.env.data.loginSessions.update(t,n.id,{state:s,state_data:Object.keys(a).length>0?JSON.stringify(a):void 0}),i}function vK(e){if(!e.state_data)return null;try{return JSON.parse(e.state_data).continuationScope||null}catch{return null}}function yK(e,t){if(e.state!==j.AWAITING_CONTINUATION)return!1;let n=vK(e);return n?n.includes(t):!1}async function bK(e,t){let{authParams:n,client:r,ticketAuth:i}=t,{user:a}=t,o=n.response_type||tn.CODE,s=n.response_mode||nn.QUERY;if(i){if(!t.loginSession)throw new V(500,{message:`Login session not found for ticket auth.`});a&&!t.skipHooks&&(t.authStrategy&&a.app_metadata?.strategy!==t.authStrategy.strategy&&(a.app_metadata={...a.app_metadata,strategy:t.authStrategy.strategy},await e.env.data.users.update(r.tenant.id,a.user_id,{app_metadata:{...a.app_metadata||{},strategy:t.authStrategy.strategy}})),await kH(e,e.env.data,r.tenant.id,a,t.loginSession,{client:r,authParams:n,authStrategy:t.authStrategy,authConnection:t.authConnection}));let i=L_(),o=ts(12),s=await e.env.data.codes.create(r.tenant.id,{code_id:ts(32),code_type:`ticket`,login_id:t.loginSession.id,expires_at:new Date(Date.now()+Lse).toISOString(),code_verifier:[o,i].join(`|`),redirect_uri:n.redirect_uri,state:n.state,nonce:n.nonce});return e.json({login_ticket:s.code_id,co_verifier:i,co_id:o})}let c=t.refreshToken,l;if(!t.loginSession)throw new V(500,{message:`loginSession must be provided for front-channel auth responses.`});let u=await e.env.data.loginSessions.get(r.tenant.id,t.loginSession.id);if(!u)throw new V(500,{message:`Login session not found.`});let d=u.state||j.PENDING;if(d===j.COMPLETED)throw new V(400,{error:`invalid_request`,error_description:`Login session has already been completed`});if(d===j.FAILED)throw new V(400,{error:`access_denied`,error_description:`Login session failed: ${u.failure_reason||`unknown reason`}`});if(d===j.PENDING||d===j.EXPIRED){l=await uK(e,{user:a,client:r,loginSession:t.loginSession,existingSessionId:t.existingSessionIdToLink,authConnection:t.authConnection,authStrategy:t.authStrategy});let n=await e.env.data.loginSessions.get(r.tenant.id,t.loginSession.id);n&&(u=n)}else if(l=u.session_id,!l)throw new V(500,{message:`Login session in ${d} state but has no session_id`});if(t.loginSession&&a){let n=u.state||j.PENDING,i={};if(u.state_data)try{i=JSON.parse(u.state_data)}catch{console.error(`Failed to parse state_data for login session`,u.id)}if(n===j.AWAITING_MFA){let n=`/u2/mfa/login-options`;if(i.authenticationMethodId){let t=(await e.env.data.authenticationMethods.list(r.tenant.id,a.user_id)).find(e=>e.id===i.authenticationMethodId);t?.confirmed&&t.type===`phone`?n=`/u2/mfa/phone-challenge`:t?.confirmed&&t.type===`totp`?n=`/u2/mfa/totp-challenge`:t?.confirmed&&(t.type===`passkey`||t.type===`webauthn-roaming`||t.type===`webauthn-platform`)?n=`/u2/passkey/challenge`:t?.type===`totp`?n=`/u2/mfa/totp-enrollment`:t?.type===`phone`&&(n=`/u2/mfa/phone-enrollment`)}return new Response(null,{status:302,headers:{location:`${n}?state=${encodeURIComponent(t.loginSession.id)}`}})}if(n===j.AUTHENTICATED&&!i.mfa_verified){let{checkMfaRequired:n,sendMfaOtp:o}=await Promise.resolve().then(()=>t5),s=await n(e,r.tenant.id,a.user_id);if(s.required){let{state:n}=GG(j.AUTHENTICATED,{type:HG.REQUIRE_MFA});if(s.enrolled){if(s.allEnrollments.length>1)return await e.env.data.loginSessions.update(r.tenant.id,t.loginSession.id,{state:n}),new Response(null,{status:302,headers:{location:`/u2/mfa/login-options?state=${encodeURIComponent(t.loginSession.id)}`}});if(await e.env.data.loginSessions.update(r.tenant.id,t.loginSession.id,{state:n,state_data:JSON.stringify({...i,authenticationMethodId:s.enrollment.id})}),s.enrollment.type===`totp`)return new Response(null,{status:302,headers:{location:`/u2/mfa/totp-challenge?state=${encodeURIComponent(t.loginSession.id)}`}});if(s.enrollment.type===`passkey`||s.enrollment.type===`webauthn-roaming`||s.enrollment.type===`webauthn-platform`)return new Response(null,{status:302,headers:{location:`/u2/passkey/challenge?state=${encodeURIComponent(t.loginSession.id)}`}});if(!s.enrollment.phone_number)throw Error(`MFA enrollment is missing phone_number`);return await o(e,r,t.loginSession,s.enrollment.phone_number),new Response(null,{status:302,headers:{location:`/u2/mfa/phone-challenge?state=${encodeURIComponent(t.loginSession.id)}`}})}else{let i=r.tenant,a=i.mfa?.factors?.otp===!0,o=i.mfa?.factors?.sms===!0,s=i.mfa?.factors?.webauthn_roaming===!0||i.mfa?.factors?.webauthn_platform===!0;return await e.env.data.loginSessions.update(r.tenant.id,t.loginSession.id,{state:n}),+!!a+ +!!o+ +!!s>1?new Response(null,{status:302,headers:{location:`/u2/mfa/login-options?state=${encodeURIComponent(t.loginSession.id)}`}}):a?new Response(null,{status:302,headers:{location:`/u2/mfa/totp-enrollment?state=${encodeURIComponent(t.loginSession.id)}`}}):s?new Response(null,{status:302,headers:{location:`/u2/passkey/enrollment?state=${encodeURIComponent(t.loginSession.id)}`}}):new Response(null,{status:302,headers:{location:`/u2/mfa/phone-enrollment?state=${encodeURIComponent(t.loginSession.id)}`}})}}}if(l&&YH(u.state_data)){let n=new Headers;return cF(r.tenant.id,l,e.var.host||``).forEach(e=>n.append(`set-cookie`,e)),n.set(`location`,`/u2/connect/start?state=${encodeURIComponent(t.loginSession.id)}`),new Response(null,{status:302,headers:n})}}if(t.loginSession&&a&&!r.is_first_party&&s!==nn.WEB_MESSAGE){let n=u.state||j.PENDING;if(n===j.AWAITING_CONSENT)return new Response(null,{status:302,headers:{location:`/u2/consent?state=${encodeURIComponent(t.loginSession.id)}`}});if(n===j.AUTHENTICATED){let n=u.authParams.scope?.split(` `).filter(Boolean)??[];if((await JH(e,{tenantId:r.tenant.id,userId:a.user_id,clientId:r.client_id,requestedScopes:n})).length>0){let{state:n}=GG(j.AUTHENTICATED,{type:HG.REQUIRE_CONSENT});return await e.env.data.loginSessions.update(r.tenant.id,t.loginSession.id,{state:n}),new Response(null,{status:302,headers:{location:`/u2/consent?state=${encodeURIComponent(t.loginSession.id)}`}})}}}if(t.loginSession&&a&&s!==nn.WEB_MESSAGE){let n=u.state||j.PENDING,i={};if(u.state_data)try{i=JSON.parse(u.state_data)}catch{}if(n===j.AUTHENTICATED&&!i.passkey_nudge_completed){let{checkPasskeyNudgeRequired:n}=await Promise.resolve().then(()=>require("./passkey-enrollment-CB7HjMH_.js"));if((await n(e,r.tenant.id,a.user_id,u.auth_connection)).show)return await gK(e,r.tenant.id,u,[`passkey-enrollment`],`/u/continue?state=${encodeURIComponent(t.loginSession.id)}`),new Response(null,{status:302,headers:{location:`/u2/passkey/enrollment-nudge?state=${encodeURIComponent(t.loginSession.id)}`}})}}let f=o.split(` `).includes(`code`);if(!c&&n.scope?.split(` `).includes(`offline_access`)&&o!==tn.TOKEN&&!f&&!t.impersonatingUser&&(c=(await cK(e,{user:a,client:r,login_id:t.loginSession?.id||``,session_id:l,organization:n.organization,auth_connection:u.auth_connection,auth_strategy:u.auth_strategy,scope:n.scope,audience:n.audience})).wireToken),s===nn.SAML_POST){if(!l)throw new m(500,{message:`Session ID not available for SAML response`});return hV(e,t.client,t.authParams,a,l)}let p=await xK(e,{authParams:n,user:a,client:r,session_id:l,refresh_token:c,authStrategy:t.authStrategy,authConnection:t.authConnection,loginSession:u,loginSessionIsCurrent:!0,responseType:o,skipHooks:t.skipHooks,organization:t.organization,impersonatingUser:t.impersonatingUser,sessionReused:!!t.existingSessionIdToLink});if(p instanceof Response)return p;if(!n.redirect_uri)throw new V(400,{message:s===nn.WEB_MESSAGE?`Redirect URI not allowed for WEB_MESSAGE response mode.`:`Redirect uri not found for this response mode.`});let h=new Headers;l?(cF(r.tenant.id,l,e.var.host||``).forEach(e=>{h.append(`set-cookie`,e)}),u.auth_connection&&(await e.env.data.promptSettings.get(r.tenant.id))?.show_last_used_connection===!0&&h.append(`set-cookie`,Vde(r.tenant.id,u.auth_connection,e.var.host||``))):s===nn.WEB_MESSAGE&&console.warn(`Session ID not available for WEB_MESSAGE, cookie will not be set.`);let g=o.split(` `),_=g.includes(`code`),v=g.includes(`id_token`),y=g.includes(`token`),b={},x=`code`in p&&typeof p.code==`string`,S=`access_token`in p&&typeof p.access_token==`string`;if(x&&_&&(b.code=p.code),S&&(y&&(b.access_token=p.access_token,b.token_type=p.token_type,b.expires_in=p.expires_in.toString()),v&&p.id_token&&(b.id_token=p.id_token)),!x&&!S)throw new V(500,{message:`Invalid token response for front-channel flow.`});let ee=(`state`in p&&typeof p.state==`string`?p.state:void 0)??n.state;if(ee&&(b.state=ee),(y||v)&&n.scope&&(b.scope=n.scope),s===nn.WEB_MESSAGE){let t=new URL(n.redirect_uri);return AH(e,`${t.protocol}//${t.host}`,JSON.stringify(b),h)}if(s===nn.FORM_POST)return NH(n.redirect_uri,b,h);let C=v||y,w=new URL(n.redirect_uri);if(C)w.hash=new URLSearchParams(b).toString();else for(let[e,t]of Object.entries(b))w.searchParams.set(e,t);return h.set(`location`,w.toString()),new Response(`Redirecting`,{status:302,headers:h})}async function xK(e,t){let{user:n}=t,r=t.responseType||tn.TOKEN;if(n&&t.organization&&!await VH(e,t.client.tenant.id,n.user_id,t.organization.id))throw new V(403,{error:`access_denied`,error_description:`User is not a member of the specified organization`});let i=t.authParams.scope||``,a=[],o,s=to(e.env,e.var.custom_domain),c=t.authParams.audience??t.client.tenant.default_audience??`${s}userinfo`;if(c)try{let r;if(t.grantType===Xr.ClientCredential||!n&&!t.user)r=await GH(e,{grantType:Xr.ClientCredential,tenantId:t.client.tenant.id,clientId:t.client.client_id,audience:c,requestedScopes:t.authParams.scope?.split(` `)||[],organizationId:t.organization?.id});else{let i=n?.user_id||t.user?.user_id;if(!i)throw new V(400,{error:`invalid_request`,error_description:`User ID is required for user-based grants`});r=await GH(e,{grantType:t.grantType,tenantId:t.client.tenant.id,userId:i,clientId:t.client.client_id,audience:c,requestedScopes:t.authParams.scope?.split(` `)||[],organizationId:t.organization?.id})}i=r.scopes.join(` `),a=r.permissions,o=t.client.app_type===`spa`&&r.token_lifetime_for_web?r.token_lifetime_for_web:r.token_lifetime}catch(e){if(e instanceof m)throw e}let l={...t.authParams,scope:i};if(t.loginSession&&n&&!t.skipHooks){t.authStrategy&&n.app_metadata?.strategy!==t.authStrategy.strategy&&(n.app_metadata={...n.app_metadata,strategy:t.authStrategy.strategy},await e.env.data.users.update(t.client.tenant.id,n.user_id,{app_metadata:{...n.app_metadata||{},strategy:t.authStrategy.strategy}}));let r=await kH(e,e.env.data,t.client.tenant.id,n,t.loginSession,{client:t.client,authParams:l,authStrategy:t.authStrategy,authConnection:t.authConnection,sessionReused:t.sessionReused});if(r instanceof Response)return r;n=r}let u=so({loginSession:t.loginSession,authConnection:t.authConnection,ctxConnection:e.var.connection}),d=r.split(` `),f=d.includes(`code`),p=d.includes(`id_token`)||d.includes(`token`),h=f&&p;if(r===tn.CODE){if(!n||!t.loginSession)throw new V(500,{message:`User and loginSession is required for code flow`});let r=await oK(e,{user:n,client:t.client,authParams:l,login_id:t.loginSession.id});return await hK(e,t.client.tenant.id,t.loginSession,u,t.loginSessionIsCurrent?t.loginSession:void 0),r}else if(h){if(!n||!t.loginSession)throw new V(500,{message:`User and loginSession is required for hybrid flow`});let r=await oK(e,{user:n,client:t.client,authParams:l,login_id:t.loginSession.id}),i=await aK(e,{...t,user:n,authParams:l,permissions:a,token_lifetime:o,code:r.code});return await hK(e,t.client.tenant.id,t.loginSession,u,t.loginSessionIsCurrent?t.loginSession:void 0),{...i,code:r.code,state:r.state}}else{let r=await aK(e,{...t,user:n,authParams:l,permissions:a,token_lifetime:o});return t.loginSession&&await hK(e,t.client.tenant.id,t.loginSession,u,t.loginSessionIsCurrent?t.loginSession:void 0),r}}function SK(){let e=new Uint8Array(6);crypto.getRandomValues(e);let t=``;for(let n=0;n<6;n+=1)t+=(e[n]%10).toString();return t}async function CK(e,t){let n=[];for(let r=0;;r++){let{connections:i}=await e.env.data.connections.list(t,{page:r,per_page:100,include_totals:!1});if(n.push(...i),i.length<100)break}return n}async function wK(e,t,n){return(await CK(e,t)).find(e=>e.name===n)??null}var TK=`http://auth0.com/oauth/grant-type/password-realm`,EK=`openid profile email`,DK=1e4,OK=class extends Error{status;code;description;constructor(e,t,n){super(n??t),this.name=`Auth0UpstreamError`,this.status=e,this.code=t,this.description=n}};function kK(e){return typeof e==`object`&&!!e}function AK(e){return typeof e==`string`?e:void 0}async function jK(e){let t=await e.text();if(!t)return null;try{return JSON.parse(t)}catch{throw new OK(e.status,`malformed_response`,`Upstream returned non-JSON body`)}}function MK(e){if(!kK(e))throw new OK(502,`malformed_response`,`Upstream token response was not an object`);let t=AK(e.access_token);if(!t)throw new OK(502,`malformed_response`,`Upstream token response missing access_token`);return{access_token:t,id_token:AK(e.id_token),refresh_token:AK(e.refresh_token),expires_in:typeof e.expires_in==`number`?e.expires_in:void 0,token_type:AK(e.token_type),scope:AK(e.scope)}}function NK(e,t){let n=kK(t)?AK(t.error):void 0,r=kK(t)?AK(t.error_description):void 0;return new OK(e,n??`invalid_grant`,r??`Upstream returned HTTP ${e}`)}async function PK(e){let t=new URLSearchParams;t.set(`grant_type`,TK),t.set(`client_id`,e.clientId),t.set(`client_secret`,e.clientSecret),t.set(`realm`,e.realm),t.set(`username`,e.username),t.set(`password`,e.password),t.set(`scope`,e.scope??EK),e.audience&&t.set(`audience`,e.audience);let n;try{n=await fetch(e.tokenEndpoint,{method:`POST`,headers:{"content-type":`application/x-www-form-urlencoded`,accept:`application/json`},body:t.toString()})}catch(e){throw new OK(0,`network_error`,e instanceof Error?e.message:`fetch failed`)}let r=await jK(n);if(!n.ok)throw NK(n.status,r);return MK(r)}async function FK(e){let t=new URLSearchParams;t.set(`grant_type`,`refresh_token`),t.set(`client_id`,e.clientId),t.set(`client_secret`,e.clientSecret),t.set(`refresh_token`,e.refreshToken),e.scope&&t.set(`scope`,e.scope),e.audience&&t.set(`audience`,e.audience);let n=new AbortController,r=setTimeout(()=>n.abort(),DK),i;try{i=await fetch(e.tokenEndpoint,{method:`POST`,headers:{"content-type":`application/x-www-form-urlencoded`,accept:`application/json`},body:t.toString(),signal:n.signal})}catch(e){throw n.signal.aborted?new OK(0,`network_error`,`request_timed_out`):new OK(0,`network_error`,e instanceof Error?e.message:`fetch failed`)}finally{clearTimeout(r)}let a=await jK(i);if(!i.ok)throw NK(i.status,a);return MK(a)}async function IK(e,t){let n;try{n=await fetch(e,{method:`GET`,headers:{authorization:`Bearer ${t}`,accept:`application/json`}})}catch(e){throw new OK(0,`network_error`,e instanceof Error?e.message:`fetch failed`)}let r=await jK(n);if(!n.ok)throw NK(n.status,r);if(!kK(r))throw new OK(502,`malformed_response`,`Upstream userinfo response was not an object`);let i=AK(r.sub);if(!i)throw new OK(502,`malformed_response`,`Upstream userinfo response missing sub`);return{...r,sub:i}}function LK(e){return typeof e==`string`?e:void 0}function RK(e){let t=e.options&&typeof e.options==`object`?e.options.configuration:void 0;if(!t||typeof t!=`object`)return null;let n=t,r=LK(n.token_endpoint),i=LK(n.userinfo_endpoint),a=LK(n.client_id),o=LK(n.client_secret),s=LK(n.realm);return!r||!i||!a||!o?null:{tokenEndpoint:r,userinfoEndpoint:i,clientId:a,clientSecret:o,realm:s}}async function zK(e){let{ctx:t,client:n,username:r,password:i,dbConnection:a,existingUser:o}=e;if(a.options?.import_mode!==!0)return null;let s=RK(a);if(!s)return null;let c;try{c=await PK({tokenEndpoint:s.tokenEndpoint,clientId:s.clientId,clientSecret:s.clientSecret,realm:s.realm??a.name,username:r,password:i})}catch(e){if(e instanceof OK)return console.warn(`Auth0 upstream ROPG failed for tenant=${n.tenant.id} realm=${a.name}: ${e.code} ${e.description??``}`),P(t,n.tenant.id,{type:M.FAILED_LOGIN,description:`Upstream password validation failed (${a.name}): ${e.code}${e.description?` - ${e.description}`:``}`,username:r,connection:a.name}),null;throw e}let l=t.env.data,u=o;if(!u){let e;try{e=await IK(s.userinfoEndpoint,c.access_token)}catch(e){if(e instanceof OK)return console.warn(`Auth0 upstream userinfo failed for tenant=${n.tenant.id}: ${e.code} ${e.description??``}`),P(t,n.tenant.id,{type:M.FAILED_LOGIN,description:`Upstream userinfo fetch failed (${a.name}): ${e.code}${e.description?` - ${e.description}`:``}`,username:r,connection:a.name}),null;throw e}let i=r.includes(`@`),o=typeof e.email==`string`?e.email:void 0,d=await lg(t.env,n.tenant.id),f=`${d}|${rg()}`;t.set(`is_lazy_migration`,!0);try{u=await l.users.create(n.tenant.id,{user_id:f,email:o??(i?r:void 0),username:i?void 0:r,name:typeof e.name==`string`?e.name:r,given_name:typeof e.given_name==`string`?e.given_name:void 0,family_name:typeof e.family_name==`string`?e.family_name:void 0,nickname:typeof e.nickname==`string`?e.nickname:void 0,picture:typeof e.picture==`string`?e.picture:void 0,email_verified:e.email_verified===!0,provider:d,connection:a.name,is_social:!1,last_ip:t.var.ip??``,last_login:new Date().toISOString(),profileData:JSON.stringify(e)})}finally{t.set(`is_lazy_migration`,!1)}}let{hash:d,algorithm:f}=await F_(i),p=await l.passwords.get(n.tenant.id,u.user_id);return p&&await l.passwords.update(n.tenant.id,{id:p.id,user_id:u.user_id,password:p.password,algorithm:p.algorithm,is_current:!1}),await l.passwords.create(n.tenant.id,{user_id:u.user_id,password:d,algorithm:f,is_current:!0}),P(t,n.tenant.id,{type:M.SUCCESS_PASSWORD_MIGRATION,description:`Imported password from upstream for ${u.user_id}`,userId:u.user_id,connection:a.name}),u}var BK=`login_email_verification`,VK=`pending_email_verification`;function HK(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function UK(e){if(!e)return{};try{let t=JSON.parse(e);return HK(t)?t:{}}catch{return{}}}function WK(e){if((e.state||j.PENDING)!==j.PENDING)return;let t=UK(e.state_data)[VK];if(!(!HK(t)||typeof t.user_id!=`string`||!t.user_id||typeof t.connection!=`string`))return{user_id:t.user_id,connection:t.connection}}async function GK(e,t,n,r){let i=await e.env.data.loginSessions.get(t,n);if(!i)return;let a=UK(i.state_data);delete a[VK],r&&(a[VK]=r),await e.env.data.loginSessions.update(t,n,{state_data:JSON.stringify(a)})}function KK(e){return typeof e==`object`&&!!e&&`allowed`in e&&typeof e.allowed==`boolean`}function qK(e){return e.connections.find(e=>ya(e.strategy))?.options?.attributes?.email?.verification_method??`code`}async function JK(e,t){let{client:n,user:r,loginSession:i,connection:a,language:o}=t,{data:s}=e.env,c=SK();for(;await s.codes.get(n.tenant.id,c,`email_verification`);)c=SK();await s.codes.create(n.tenant.id,{code_id:c,code_type:`email_verification`,login_id:i.id,user_id:r.user_id,expires_at:new Date(Date.now()+Jj).toISOString(),state:JSON.stringify({purpose:BK,connection:a})}),await jde(e,r,c,o)}async function YK(e,t,n,r){let{data:i}=e.env,a=t.tenant.id,o=WK(n);if(!o)return P(e,a,{type:M.FAILED_VERIFICATION_EMAIL,description:`No pending email verification for login session`}),{ok:!1,reason:`invalid`};if(i.rateLimit){let t={allowed:!0};try{let e=await i.rateLimit.consume(`brute-force`,`email-verification:${a}:${n.id}`);KK(e)&&(t=e)}catch(e){console.error(`Email verification rate limit consume failed:`,e)}if(!t.allowed)return P(e,a,{type:M.FAILED_VERIFICATION_EMAIL,description:`Rate limit exceeded for email verification code`}),{ok:!1,reason:`rate_limited`}}let s=(t,n)=>(P(e,a,{type:M.FAILED_VERIFICATION_EMAIL,description:t,userId:n}),{ok:!1,reason:`invalid`}),c=await i.codes.get(a,r,`email_verification`);if(!c||c.login_id!==n.id||c.user_id!==o.user_id)return s(`Code invalid`,o.user_id);let l={};try{l=c.state?JSON.parse(c.state):{}}catch{}if(l.purpose!==BK)return s(`Code invalid`,c.user_id);if(c.expires_at<new Date().toISOString())return s(`Code expired`,c.user_id);if(!await i.codes.consume(a,r))return s(`Code already used`,c.user_id);let u=await i.users.get(a,c.user_id);if(!u)return s(`User not found`,c.user_id);await i.users.update(a,u.user_id,{email_verified:!0}),P(e,a,{type:M.SUCCESS_VERIFICATION_EMAIL,description:`Successful email verification`,userId:u.user_id,connection:o.connection,strategy:N.USERNAME_PASSWORD,strategy_type:_a.DATABASE});let d=await Og(i.users,a,{...u,email_verified:!0});return d.blocked?s(`User is blocked`,d.user_id):d.linked_to?s(`User not found`,d.user_id):(await GK(e,a,n.id,void 0),{ok:!0,user:d,connection:o.connection})}var XK=1e3*60*5,ZK=3;function QK(){return new dN(403,{message:`Wrong email or password.`,code:`INVALID_CREDENTIALS`})}var $K;async function eq(e){$K??=F_(ts()).then(({hash:e})=>e);try{await A_.compare(e,await $K)}catch(e){$K=void 0,console.error(`Dummy password compare failed:`,e)}}function tq(e,t){return(e??[]).filter(e=>t-Date.parse(e)<XK)}function nq(e,t){let n=e.app_metadata?.failed_logins;return Array.isArray(n)?n.filter(e=>typeof e==`number`&&t-e<XK):[]}async function rq(e,t,n){let r=Date.now();if(e.userActivity)try{return tq((await e.userActivity.get(t,n.user_id))?.failed_logins,r).length}catch(e){console.error(`Failed to read failed_logins from user_activity:`,e)}return nq(n,r).length}async function iq(e,t,n){try{let r=Date.now();if(e.userActivity){let i=[...tq((await e.userActivity.get(t,n.user_id))?.failed_logins,r),new Date(r).toISOString()];await e.userActivity.upsert(t,n.user_id,{failed_logins:i});return}let i=n.app_metadata||{};i.failed_logins=[...nq(n,r),r],await e.users.update(t,n.user_id,{app_metadata:i})}catch(e){console.error(`Failed to record failed login:`,e)}}async function aq(e,t,n){try{let r=await Og(e.users,t,n);if(e.userActivity){let n=await e.userActivity.get(t,r.user_id);n?.failed_logins&&n.failed_logins.length>0&&await e.userActivity.upsert(t,r.user_id,{failed_logins:[]})}let i=r.app_metadata||{};Array.isArray(i.failed_logins)&&i.failed_logins.length>0&&(delete i.failed_logins,await e.users.update(t,r.user_id,{app_metadata:i}))}catch(e){console.error(`Failed to clear failed_logins:`,e)}}async function oq(e,t,n){if(await aq(e,t,n),e.userActivity)try{let r=await Og(e.users,t,n);await e.userActivity.upsert(t,r.user_id,{last_password_reset:new Date().toISOString()})}catch(e){console.error(`Failed to record last_password_reset:`,e)}}function sq(e){return typeof e==`object`&&!!e&&`allowed`in e&&typeof e.allowed==`boolean`}async function cq(e,t,n,r,i=N.USERNAME_PASSWORD,a){let{data:o}=e.env,{username:s}=n;if(e.set(`username`,s),!s)throw new V(400,{message:`Username is required`});let c=t.tenant.attack_protection?.suspicious_ip_throttling,l=e.var.ip,u=l?c?.allowlist?.includes(l):!1;if(o.rateLimit&&c?.enabled&&l&&!u){let n={allowed:!0};try{let e=await o.rateLimit.consume(`pre-login`,`${t.tenant.id}:${l}`);sq(e)&&(n=e)}catch(e){console.error(`Pre-login rate limit consume failed:`,e)}if(!n.allowed)throw P(e,t.tenant.id,{type:M.FAILED_LOGIN,description:`Rate limit exceeded for pre-login`}),new dN(429,{message:`Too many requests`,code:`TOO_MANY_REQUESTS`})}let d=await dg({env:e.env,tenant_id:t.tenant.id,username:s});if(!d){let r=await wK(e,t.tenant.id,i);if(!r&&i===N.USERNAME_PASSWORD){let e=t.connections.filter(e=>ya(e.strategy));if(e.length>1)throw new V(400,{message:`Multiple username-password connections configured for this client; specify an explicit realm.`});r=e[0]??null}if(r?.options?.import_mode===!0){let i=await zK({ctx:e,client:t,username:s,password:n.password,dbConnection:r,existingUser:null});i&&(d=i)}if(!d)throw P(e,t.tenant.id,{type:M.FAILED_LOGIN_INVALID_EMAIL_USERNAME,description:`Invalid user`}),await eq(n.password),QK()}let f=await Og(o.users,t.tenant.id,d);if(f.linked_to)throw await eq(n.password),QK();let p=t.connections.find(e=>e.name===i);if(!p&&i===N.USERNAME_PASSWORD){let e=t.connections.filter(e=>ya(e.strategy));e.length===1&&(p=e[0])}e.set(`connection`,p?.name??i),e.set(`user_id`,f.user_id);let m=await rq(o,t.tenant.id,f)>=ZK,h=await o.passwords.get(t.tenant.id,d.user_id),g=!1;if(h?g=await A_.compare(n.password,h.password):await eq(n.password),m)throw P(e,t.tenant.id,{type:M.FAILED_LOGIN,description:`Too many failed login attempts`}),g?new dN(403,{message:`Too many failed login attempts`,code:`TOO_MANY_FAILED_LOGINS`}):QK();if(!g&&!h){let r=await wK(e,t.tenant.id,d.connection);r?.options?.import_mode===!0&&await zK({ctx:e,client:t,username:s,password:n.password,dbConnection:r,existingUser:f})&&(g=!0)}if(!g)throw P(e,t.tenant.id,{type:M.FAILED_LOGIN_INCORRECT_PASSWORD,description:`Invalid password`}),await iq(o,t.tenant.id,f),QK();if(f.blocked)throw P(e,t.tenant.id,{type:M.FAILED_LOGIN,description:`User is blocked`}),r&&await fK(e,t.tenant.id,r,`User is blocked`),new dN(403,{message:`User is blocked`,code:`USER_BLOCKED`});if(!d.email_verified&&t.client_metadata?.email_validation===`enforced`){let o=r?.authParams?.ui_locales?.split(` `)?.map(e=>e.split(`-`)[0])[0];throw a&&r&&await GK(e,t.tenant.id,r.id,{user_id:d.user_id,connection:p?.name??i}),a?.method===`code`&&r?await JK(e,{client:t,user:d,loginSession:r,connection:p?.name??i,language:o}):await VP(e,d,o,{resultUrl:a?.resultUrl,client_id:t.client_id,redirect_uri:n.redirect_uri}),r&&a||P(e,t.tenant.id,{type:M.FAILED_LOGIN,description:`Email not verified`}),r&&!a&&await fK(e,t.tenant.id,r,`Email not verified`),new dN(403,{message:`Email not verified`,code:`EMAIL_NOT_VERIFIED`})}return await aq(o,t.tenant.id,f),{client:t,authParams:n,user:f,loginSession:r}}async function lq(e,t,n,r,i,a=N.USERNAME_PASSWORD,o){return bK(e,{...await cq(e,t,n,r,a,o),ticketAuth:i,authConnection:e.get(`connection`)||N.USERNAME_PASSWORD,authStrategy:{strategy:N.USERNAME_PASSWORD,strategy_type:_a.DATABASE}})}async function uq(e,t,n,r,i,a){let o=gg(n);if(!await dg({env:e.env,tenant_id:t.tenant.id,username:o})){let n=t.connections.find(e=>ya(e.strategy));if(!(await uN(e,t,e.env.data,o,n?.name??N.USERNAME_PASSWORD)).allowed)return;await pg(e,{client:t,username:o,connection:N.USERNAME_PASSWORD,ip:e.var.ip})}let s=SK(),c=await e.env.data.codes.get(t.tenant.id,s,`password_reset`);for(;c;)s=SK(),c=await e.env.data.codes.get(t.tenant.id,s,`password_reset`);let l=r;if(!await e.env.data.loginSessions.get(t.tenant.id,r)){let n=e.get(`ip`),r=e.get(`useragent`),i=UP(e.get(`auth0_client`));l=(await e.env.data.loginSessions.create(t.tenant.id,{expires_at:new Date(Date.now()+Xj).toISOString(),authParams:{client_id:t.client_id,username:o},csrf_token:ts(),ip:n,useragent:r,auth0Client:i})).id}let u=await e.env.data.codes.create(t.tenant.id,{code_id:s,code_type:`password_reset`,login_id:l,expires_at:new Date(Date.now()+Rse).toISOString()});i===`code`?await Ade(e,o,u.code_id):await RP(e,o,u.code_id,l,void 0,a)}var dq=Eo({connections:f.z.array(mn)}),fq=f.z.object({connections:f.z.array(mn),next:f.z.string().optional().openapi({description:`Opaque cursor for the next page; absent on the last page.`})}),pq=[{secret:`client_secret`,hint:`client_secret_hint`},{secret:`app_secret`,hint:`app_secret_hint`},{secret:`twilio_token`,hint:`twilio_token_hint`}],mq=`••••••••`,hq=16,gq=4;function _q(e){if(!(typeof e!=`string`||e.length===0))return e.length>=hq?`${e.slice(0,gq)}${mq}`:mq}function vq(e){let t={...e};for(let{secret:e,hint:n}of pq){let r=_q(t[e]);delete t[e],r?t[n]=r:delete t[n]}if(t.configuration){let e={...t.configuration},n=_q(e.client_secret);delete e.client_secret,n?e.client_secret_hint=n:delete e.client_secret_hint,t.configuration=e}return t}function yq(e){let t={...e};for(let{secret:e,hint:n}of pq)delete t[n],bq(t[e])&&delete t[e];if(t.configuration){let e={...t.configuration};delete e.client_secret_hint,bq(e.client_secret)&&delete e.client_secret,t.configuration=e}return t}function bq(e){return typeof e==`string`&&e.trim()===``}function xq(e){return e.options?{...e,options:vq(e.options)}:e}var Sq=f.z.object({enabled_clients:f.z.array(f.z.object({client_id:f.z.string(),name:f.z.string()}))}),Cq=f.z.array(f.z.object({client_id:f.z.string(),status:f.z.boolean()})),wq=F({route:(0,f.createRoute)({tags:[`connections`],method:`get`,path:`/`,request:{query:wo,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:connections`]}],responses:{200:{content:{"application/json":{schema:f.z.union([f.z.array(mn),dq,fq])}},description:`List of connections`}}}),handler:async e=>{let t=I(e),{page:n,per_page:r,include_totals:i=!1,sort:a,q:o,from:s,take:c}=e.req.valid(`query`),l=await e.env.data.connections.list(t,{page:n,per_page:r,include_totals:i,sort:To(a),q:o,from:s,take:c}),u=l.connections.map(xq);return s!==void 0||c!==void 0?e.json({connections:u,next:l.next}):e.json(Do(i,{...l,connections:u},`connections`))}}),Tq=F({route:(0,f.createRoute)({tags:[`connections`],method:`get`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:connections`]}],responses:{200:{content:{"application/json":{schema:mn}},description:`A connection`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await e.env.data.connections.get(t,n);if(!r)throw new m(404);return e.json(xq(r))}}),Eq=F({route:(0,f.createRoute)({tags:[`connections`],method:`delete`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`delete:connections`]}],responses:{200:{description:`Status`}}}),handler:async e=>{let{id:t}=e.req.valid(`param`),n=I(e);if(!await e.env.data.connections.remove(n,t))throw new m(404,{message:`Connection not found`});return await P(e,n,{type:M.SUCCESS_API_OPERATION,description:`Delete a Connection`,targetType:`connection`,targetId:t}),e.text(`OK`)}}),Dq=F({route:(0,f.createRoute)({tags:[`connections`],method:`patch`,path:`/{id}`,request:{body:{content:{"application/json":{schema:f.z.object(pn.shape).partial()}}},params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:connections`]}],responses:{200:{content:{"application/json":{schema:mn}},description:`The updated connection`}}}),handler:async e=>{let{id:t}=e.req.valid(`param`),n=e.req.valid(`json`),r=I(e),i=await e.env.data.connections.get(r,t),a=n;if(n.options){let e=yq(n.options);if(i?.options){for(let{secret:t}of pq)e[t]===void 0&&i.options[t]!==void 0&&(e[t]=i.options[t]);let t=i.options.configuration?.client_secret;e.configuration&&e.configuration.client_secret===void 0&&t!==void 0&&(e.configuration={...e.configuration,client_secret:t})}a={...n,options:e}}if(!await e.env.data.connections.update(r,t,a))throw new m(404,{message:`Connection not found`});let o=await e.env.data.connections.get(r,t);if(!o)throw new m(404,{message:`Connection not found`});return await P(e,r,{type:M.SUCCESS_API_OPERATION,description:`Update a Connection`,beforeState:i?xq(i):void 0,afterState:xq(o),targetType:`connection`,targetId:t,body:n.options?{...n,options:vq(n.options)}:n}),e.json(xq(o))}}),Oq=F({route:(0,f.createRoute)({tags:[`connections`],method:`post`,path:`/`,request:{body:{content:{"application/json":{schema:f.z.object(pn.shape)}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`create:connections`]}],responses:{201:{content:{"application/json":{schema:mn}},description:`A connection`}}}),handler:async e=>{let t=e.req.valid(`json`),n=I(e),r=t.id||zte(),i=await e.env.data.connections.create(n,{...t,id:r,options:t.options?yq(t.options):t.options});return await P(e,n,{type:M.SUCCESS_API_OPERATION,description:`Create a Connection`,afterState:xq(i),targetType:`connection`,targetId:i.id}),e.json(xq(i),{status:201})}}),kq=F({route:(0,f.createRoute)({tags:[`connections`],method:`get`,path:`/{id}/clients`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:connections`]}],responses:{200:{content:{"application/json":{schema:Sq}},description:`List of clients enabled for this connection`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`);if(!await e.env.data.connections.get(t,n))throw new m(404,{message:`Connection not found`});let r=[],i=1e3;for(let a=0;;a++){let{clients:o}=await e.env.data.clients.list(t,{page:a,per_page:i});if(r.push(...o.filter(e=>e.connections?.includes(n)).map(e=>({client_id:e.client_id,name:e.name}))),o.length<i)break}return e.json({enabled_clients:r})}}),Aq=F({route:(0,f.createRoute)({tags:[`connections`],method:`patch`,path:`/{id}/clients`,request:{body:{content:{"application/json":{schema:Cq}}},params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:connections`]}],responses:{204:{description:`Clients updated successfully (No Content)`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=e.req.valid(`json`);if(!await e.env.data.connections.get(t,n))throw new m(404,{message:`Connection not found`});for(let i of r){let r=await e.env.data.clients.get(t,i.client_id);if(!r)continue;let a=r.connections||[];i.status?a.includes(n)||await e.env.data.clients.update(t,i.client_id,{connections:[...a,n]}):a.includes(n)&&await e.env.data.clients.update(t,i.client_id,{connections:a.filter(e=>e!==n)})}return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Update Connection Clients`,targetType:`connection_client`,targetId:n}),e.body(null,204)}}),jq=F({route:(0,f.createRoute)({tags:[`connections`],method:`post`,path:`/{id}/try`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:f.z.object({username:f.z.string().optional(),password:f.z.string().optional()}).optional()}}}},security:[{Bearer:[`update:connections`]}],responses:{200:{content:{"application/json":{schema:f.z.union([f.z.object({mode:f.z.literal(`redirect`),authorize_url:f.z.string(),state:f.z.string(),result_url:f.z.string(),client_id:f.z.string(),connection:f.z.object({id:f.z.string(),name:f.z.string(),strategy:f.z.string()})}),f.z.object({mode:f.z.literal(`inline`),status:f.z.enum([`success`,`error`]),connection_id:f.z.string(),connection_name:f.z.string(),strategy:f.z.string(),userinfo:f.z.record(f.z.string(),f.z.unknown()).optional(),raw:f.z.record(f.z.string(),f.z.unknown()).nullable().optional(),error:f.z.string().optional(),error_description:f.z.string().optional()})])}},description:`Test outcome (inline) or how to drive the test (redirect)`}}}),handler:async e=>{let{id:t}=e.req.valid(`param`),n=I(e),r=await e.env.data.connections.get(n,t);if(!r)throw new m(404,{message:`Connection not found`});let i=r.id??t,a=await ple(e.env,n);if(await P(e,n,{type:M.SUCCESS_API_OPERATION,description:`Try Connection initiated`,targetType:`connection`,targetId:t}),ya(r.strategy)){let t=e.req.valid(`json`)??{};if(!t.username||!t.password)throw new m(400,{message:`username and password are required for database connections`});let o=await cN(e.env,a,n);try{let{user:n}=await cq(e,o,{username:t.username,password:t.password,client_id:a},void 0,r.name);return e.json({mode:`inline`,status:`success`,connection_id:i,connection_name:r.name,strategy:r.strategy,userinfo:n,raw:n})}catch(t){let n=t instanceof Error?t.message:`Password login failed`,a=t&&typeof t==`object`&&`code`in t?String(t.code):`error`;return e.json({mode:`inline`,status:`error`,connection_id:i,connection_name:r.name,strategy:r.strategy,error:a,error_description:n})}}let o=await gle(e.env,n),s=ts(),c=new URL(aN(e.env,o)),l=e.req.header(`origin`);if(l)try{new URL(l).origin===l&&c.searchParams.set(`opener_origin`,l)}catch{}let u=c.toString(),d=io(e.env,o),f=new URL(`${d}authorize`);return f.searchParams.set(`client_id`,a),f.searchParams.set(`response_type`,`code`),f.searchParams.set(`scope`,`openid profile email`),f.searchParams.set(`connection`,r.name),f.searchParams.set(`redirect_uri`,u),f.searchParams.set(`state`,s),e.json({mode:`redirect`,authorize_url:f.toString(),state:s,result_url:u,client_id:a,connection:{id:i,name:r.name,strategy:r.strategy}})}}),Mq=new f.OpenAPIHono().openapiRoutes([wq,Tq,Eq,Dq,Oq,kq,Aq,jq]),Nq=F({route:(0,f.createRoute)({tags:[`prompts`],method:`get`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:prompts`]}],responses:{200:{content:{"application/json":{schema:oi}},description:`Branding settings`}}}),handler:async e=>{let t=I(e),n=await e.env.data.promptSettings.get(t);return n?e.json(n):e.json(oi.parse({}))}}),Pq=F({route:(0,f.createRoute)({tags:[`prompts`],method:`patch`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:f.z.object(oi.shape).partial()}}}},security:[{Bearer:[`update:prompts`]}],responses:{200:{description:`Prompts settings`}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`),r=await e.env.data.promptSettings.get(t);await e.env.data.promptSettings.set(t,{...r,...n});let i=await e.env.data.promptSettings.get(t);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Update Prompt Settings`,targetType:`prompt_settings`,targetId:t,...r?{beforeState:{...r}}:{},...i?{afterState:{...i}}:{}}),e.json(i)}}),Fq=F({route:(0,f.createRoute)({tags:[`prompts`],method:`get`,path:`/custom-text`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:prompts`]}],responses:{200:{content:{"application/json":{schema:f.z.array(f.z.object({prompt:ma,language:f.z.string()}))}},description:`List of custom text entries`}}}),handler:async e=>{let t=I(e),n=await e.env.data.customText.list(t);return e.json(n)}}),Iq=F({route:(0,f.createRoute)({tags:[`prompts`],method:`get`,path:`/custom-text/defaults`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),query:f.z.object({language:f.z.string().optional(),prompt:f.z.string().optional()})},security:[{Bearer:[`read:prompts`]}],responses:{200:{content:{"application/json":{schema:f.z.array(f.z.object({prompt:f.z.string(),language:f.z.string(),custom_text:ha}))}},description:`Bundled default text for every prompt/language shipped with authhero. authhero extension; not available in Auth0.`}}}),handler:async e=>{let{language:t,prompt:n}=e.req.valid(`query`);return e.json(hie({language:t,prompt:n}))}}),Lq=F({route:(0,f.createRoute)({tags:[`prompts`],method:`get`,path:`/{prompt}/custom-text/{language}`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),params:f.z.object({prompt:ma,language:f.z.string()})},security:[{Bearer:[`read:prompts`]}],responses:{200:{content:{"application/json":{schema:ha}},description:`Custom text for the prompt and language`}}}),handler:async e=>{let t=I(e),{prompt:n,language:r}=e.req.valid(`param`),i=await e.env.data.customText.get(t,n,r);return e.json(i??{})}}),Rq=F({route:(0,f.createRoute)({tags:[`prompts`],method:`put`,path:`/{prompt}/custom-text/{language}`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),params:f.z.object({prompt:ma,language:f.z.string()}),body:{content:{"application/json":{schema:ha}}}},security:[{Bearer:[`update:prompts`]}],responses:{200:{content:{"application/json":{schema:ha}},description:`Updated custom text`}}}),handler:async e=>{let t=I(e),{prompt:n,language:r}=e.req.valid(`param`),i=await e.req.json(),a=ha.parse(i),o=await e.env.data.customText.get(t,n,r);return await e.env.data.customText.set(t,n,r,a),await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Set Custom Text`,targetType:`custom_text`,targetId:t,...o?{beforeState:{...o}}:{},afterState:{...a}}),e.json(a)}}),zq=F({route:(0,f.createRoute)({tags:[`prompts`],method:`delete`,path:`/{prompt}/custom-text/{language}`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),params:f.z.object({prompt:ma,language:f.z.string()})},security:[{Bearer:[`delete:prompts`]}],responses:{204:{description:`Custom text deleted`}}}),handler:async e=>{let t=I(e),{prompt:n,language:r}=e.req.valid(`param`),i=await e.env.data.customText.get(t,n,r);return await e.env.data.customText.delete(t,n,r),await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete Custom Text`,targetType:`custom_text`,targetId:t,...i?{beforeState:{...i}}:{}}),e.body(null,204)}}),Bq=new f.OpenAPIHono().openapiRoutes([Nq,Pq,Fq,Iq,Lq,Rq,zq]),Vq=!1;function Hq(e){e.use(async(t,n)=>(Vq||=(e.openAPIRegistry.registerComponent(`securitySchemes`,`Bearer`,{type:`oauth2`,scheme:`bearer`,flows:{implicit:{authorizationUrl:`${t.env.AUTH_URL}/authorize`,scopes:{openid:`Basic user information`,email:`User email`,profile:`User profile information`}}}}),!0),await n()))}var Uq=F({route:(0,f.createRoute)({tags:[`emails`],method:`get`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:email_provider`]}],responses:{200:{content:{"application/json":{schema:f.z.object(Ti.shape).partial()}},description:`Email provider`}}}),handler:async e=>{let t=I(e),n=await e.env.data.emailProviders.get(t);return e.json(n??{})}}),Wq=F({route:(0,f.createRoute)({tags:[`emails`],method:`post`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:f.z.object(Ti.shape)}}}},security:[{Bearer:[`create:email_provider`]}],responses:{201:{content:{"application/json":{schema:Ti}},description:`Email provider`},409:{description:`Email provider already configured`}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`);if(await e.env.data.emailProviders.get(t))throw new m(409,{message:`Email provider already configured`});await e.env.data.emailProviders.create(t,n),await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Create Email Provider`,targetType:`email_provider`,targetId:t});let r=await e.env.data.emailProviders.get(t);return e.json(r??n,{status:201})}}),Gq=F({route:(0,f.createRoute)({tags:[`emails`],method:`patch`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:f.z.object(Ti.shape).partial()}}}},security:[{Bearer:[`update:email_provider`]}],responses:{200:{content:{"application/json":{schema:Ti}},description:`Email provider`}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`);await e.env.data.emailProviders.update(t,n);let r=await e.env.data.emailProviders.get(t);if(!r)throw new m(404,{message:`Email provider not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Update Email Provider`,targetType:`email_provider`,targetId:t}),e.json(r)}}),Kq=F({route:(0,f.createRoute)({tags:[`emails`],method:`delete`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`delete:email_provider`]}],responses:{204:{description:`Email provider deleted`},404:{description:`Email provider not found`}}}),handler:async e=>{let t=I(e);if(!await e.env.data.emailProviders.get(t))throw new m(404,{message:`Email provider not found`});return await e.env.data.emailProviders.remove(t),await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete Email Provider`,targetType:`email_provider`,targetId:t}),e.body(null,204)}}),qq=new f.OpenAPIHono().openapiRoutes([Uq,Wq,Gq,Kq]),Jq=f.z.object({"tenant-id":f.z.string().optional()}),Yq=f.z.object({templateName:Ei}),Xq=Di.partial(),Zq=Di.extend({from:Di.shape.from.optional()}),Qq=F({route:(0,f.createRoute)({tags:[`email-templates`],method:`post`,path:`/`,request:{headers:Jq,body:{content:{"application/json":{schema:Di}}}},security:[{Bearer:[`create:email_templates`]}],responses:{201:{content:{"application/json":{schema:Di}},description:`Email template`},409:{description:`Template already exists`}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`);if(await e.env.data.emailTemplates.get(t,n.template))throw new m(409,{message:`Email template already configured`});let r=await e.env.data.emailTemplates.create(t,n);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Create Email Template`,targetType:`email_template`,targetId:n.template,afterState:r}),e.json(r,{status:201})}}),$q=f.z.object({name:Ei,body:f.z.string(),subject:f.z.string()}),eJ=F({route:(0,f.createRoute)({tags:[`email-templates`],method:`get`,path:`/defaults`,request:{headers:Jq},security:[{Bearer:[`read:email_templates`]}],responses:{200:{content:{"application/json":{schema:f.z.array($q)}},description:`Bundled default email templates shipped with authhero. authhero extension; not available in Auth0.`}}}),handler:async e=>{let t=[];for(let e of Ei.options){let n=CP(e);n&&t.push({name:e,body:n.body,subject:n.subject})}return e.json(t)}}),tJ=F({route:(0,f.createRoute)({tags:[`email-templates`],method:`get`,path:`/{templateName}`,request:{headers:Jq,params:Yq},security:[{Bearer:[`read:email_templates`]}],responses:{200:{content:{"application/json":{schema:Di}},description:`Email template`},404:{description:`Template not found`}}}),handler:async e=>{let t=I(e),{templateName:n}=e.req.valid(`param`),r=await e.env.data.emailTemplates.get(t,n);if(!r)throw new m(404,{message:`Email template not found`});return e.json(r)}}),nJ=F({route:(0,f.createRoute)({tags:[`email-templates`],method:`put`,path:`/{templateName}`,request:{headers:Jq,params:Yq,body:{content:{"application/json":{schema:Zq}}}},security:[{Bearer:[`update:email_templates`]}],responses:{200:{content:{"application/json":{schema:Di}},description:`Email template upserted`}}}),handler:async e=>{let t=I(e),{templateName:n}=e.req.valid(`param`),r=e.req.valid(`json`);if(r.template!==n)throw new m(400,{message:`Body template must match URL templateName`});let i=r.from?.trim()??``,a={...r,from:i},o=await e.env.data.emailTemplates.get(t,n);o?await e.env.data.emailTemplates.update(t,n,a):await e.env.data.emailTemplates.create(t,a);let s=await e.env.data.emailTemplates.get(t,n);if(!s)throw new m(500,{message:`Email template not found after upsert (tenant_id=${t}, template=${n})`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Update Email Template`,targetType:`email_template`,targetId:n,...o?{beforeState:{...o}}:{},afterState:s}),e.json(s)}}),rJ=F({route:(0,f.createRoute)({tags:[`email-templates`],method:`patch`,path:`/{templateName}`,request:{headers:Jq,params:Yq,body:{content:{"application/json":{schema:Xq}}}},security:[{Bearer:[`update:email_templates`]}],responses:{200:{content:{"application/json":{schema:Di}},description:`Email template`},404:{description:`Template not found`}}}),handler:async e=>{let t=I(e),{templateName:n}=e.req.valid(`param`),r=e.req.valid(`json`),i=await e.env.data.emailTemplates.get(t,n);if(!await e.env.data.emailTemplates.update(t,n,r))throw new m(404,{message:`Email template not found`});let a=await e.env.data.emailTemplates.get(t,n);if(!a)throw new m(404,{message:`Email template not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Patch Email Template`,targetType:`email_template`,targetId:n,...i?{beforeState:{...i}}:{},afterState:a}),e.json(a)}}),iJ=F({route:(0,f.createRoute)({tags:[`email-templates`],method:`delete`,path:`/{templateName}`,request:{headers:Jq,params:Yq},security:[{Bearer:[`update:email_templates`]}],responses:{204:{description:`Tenant override removed; subsequent sends use the bundled default. authhero extension; not available in Auth0.`},404:{description:`Template override not found`}}}),handler:async e=>{let t=I(e),{templateName:n}=e.req.valid(`param`),r=await e.env.data.emailTemplates.get(t,n);if(!await e.env.data.emailTemplates.remove(t,n))throw new m(404,{message:`Email template not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete Email Template`,targetType:`email_template`,targetId:n,...r?{beforeState:{...r}}:{}}),e.body(null,204)}}),aJ=F({route:(0,f.createRoute)({tags:[`email-templates`],method:`post`,path:`/{templateName}/try`,request:{headers:Jq,params:Yq,body:{content:{"application/json":{schema:f.z.object({to:f.z.string().email(),body:f.z.string().optional(),subject:f.z.string().optional(),from:f.z.string().optional(),language:f.z.string().optional()})}}}},security:[{Bearer:[`update:email_templates`]}],responses:{200:{content:{"application/json":{schema:f.z.object({sent:f.z.boolean()})}},description:`Sends a test email rendered with sample data. authhero extension; not available in Auth0.`}}}),handler:async e=>{let t=I(e),{templateName:n}=e.req.valid(`param`),r=e.req.valid(`json`),i=r.from?.trim();return await Nde(e,{to:r.to,templateName:n,body:r.body,subject:r.subject,from:i===``?void 0:i,language:r.language}),await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Test Email Sent (${n})`,targetType:`email_template`,targetId:n}),e.json({sent:!0})}}),oJ=new f.OpenAPIHono().openapiRoutes([Qq,eJ,tJ,nJ,rJ,iJ,aJ]),sJ=120,cJ=5e3,lJ=`http://schemas.openid.net/event/backchannel-logout`;function uJ(e,t,n){oo(e,dJ(e,t,n).catch(e=>{console.warn(`backchannel logout delivery failed for session ${n.id}:`,e)}))}async function dJ(e,t,n){let r=[...new Set(n.clients??[])];if(r.length===0)return;let i=[];for(let n of r){let r=await e.env.data.clients.get(t,n).catch(()=>null);for(let e of r?.oidc_logout?.backchannel_logout_urls??[])i.push({client_id:n,url:e})}if(i.length===0)return;let a=(await nj(e.env.data.keys,t,e.env.signingKeyMode,{purpose:`sign`}))[0];if(!a?.pkcs7||!a.cert){console.warn(`backchannel logout skipped: no signing key available for tenant`,t);return}let o=I_(a.pkcs7),s=await NA(a.cert),c=to(e.env,e.var.custom_domain),l=wM(e.env);await Promise.all(i.map(async({client_id:e,url:t})=>{try{let r=await lj(s,o,{iss:c,aud:e,sub:n.user_id,sid:n.id,jti:ts(),events:{[lJ]:{}}},{includeIssuedTimestamp:!0,expiresInSeconds:sJ,headers:{kid:a.kid,typ:`logout+jwt`}}),i=EM(t,l),u=new AbortController,d=setTimeout(()=>u.abort(),cJ);try{let n=await fetch(i,{method:`POST`,redirect:`manual`,signal:u.signal,headers:{"content-type":`application/x-www-form-urlencoded`,"cache-control":`no-store`},body:new URLSearchParams({logout_token:r}).toString()});n.ok||console.warn(`backchannel logout: ${t} responded ${n.status} for client ${e}`),await n.body?.cancel()}finally{clearTimeout(d)}}catch(n){console.warn(`backchannel logout: delivery to ${t} failed for client ${e}:`,n)}}))}var fJ=F({route:(0,f.createRoute)({tags:[`sessions`],method:`get`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:sessions`]}],responses:{200:{content:{"application/json":{schema:Mr}},description:`A session`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await e.env.data.sessions.get(t,n);if(!r)throw new m(404);return e.json(r)}}),pJ=F({route:(0,f.createRoute)({tags:[`sessions`],method:`delete`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`delete:sessions`]}],responses:{200:{description:`Status`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await e.env.data.sessions.get(t,n),i=r?await Wg(e.env.data,t,r,new Date().toISOString()):0;if(!await e.env.data.sessions.remove(t,n))throw new m(404,{message:`Session not found`});return r&&uJ(e,t,r),await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete a Session (revoked ${i} refresh token(s))`,targetType:`session`,targetId:n}),e.text(`OK`)}}),mJ=F({route:(0,f.createRoute)({tags:[`sessions`],method:`post`,path:`/{id}/revoke`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:sessions`]}],responses:{202:{description:`Session deletion status`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await e.env.data.sessions.get(t,n),i=new Date().toISOString();if(!await e.env.data.sessions.update(t,n,{revoked_at:i}))throw new m(404,{message:`Session not found`});let a=r?await Wg(e.env.data,t,r,i):0;return r&&uJ(e,t,r),await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Revoke a Session (revoked ${a} refresh token(s))`,targetType:`session`,targetId:n}),e.text(`Session deletion request accepted.`,{status:202})}}),hJ=new f.OpenAPIHono().openapiRoutes([fJ,pJ,mJ]),gJ=F({route:(0,f.createRoute)({tags:[`refresh_tokens`],method:`get`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:refresh_tokens`]}],responses:{200:{content:{"application/json":{schema:Oi}},description:`A session`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await e.env.data.refreshTokens.get(t,n);if(!r)throw new m(404);return e.json(r)}}),_J=F({route:(0,f.createRoute)({tags:[`refresh_tokens`],method:`delete`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`delete:refresh_tokens`]}],responses:{200:{description:`Status`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await e.env.data.refreshTokens.get(t,n),i=r?.family_id??r?.id;if(i&&await e.env.data.refreshTokens.revokeFamily(t,i,new Date().toISOString()),!await e.env.data.refreshTokens.remove(t,n))throw new m(404,{message:`Session not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete a Refresh Token`,targetType:`refresh_token`,targetId:n}),e.text(`OK`)}}),vJ=new f.OpenAPIHono().openapiRoutes([gJ,_J]),yJ=F({route:(0,f.createRoute)({tags:[`custom-domains`],method:`get`,path:`/`,request:{query:wo,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:custom_domains`]}],responses:{200:{content:{"application/json":{schema:f.z.array(_n)}},description:`List of custom domains`}}}),handler:async e=>{let t=I(e),n=await e.env.data.customDomains.list(t);return e.json(n)}}),bJ=F({route:(0,f.createRoute)({tags:[`custom-domains`],method:`get`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:custom_domains`]}],responses:{200:{content:{"application/json":{schema:_n}},description:`A customDomain`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await e.env.data.customDomains.get(t,n);if(!r)throw new m(404);return e.json(r)}}),xJ=F({route:(0,f.createRoute)({tags:[`custom-domains`],method:`delete`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`delete:custom_domains`]}],responses:{200:{description:`Status`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await e.env.data.customDomains.get(t,n);if(!await e.env.data.customDomains.remove(t,n))throw new m(404,{message:`Custom domain not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete a Custom Domain`,targetType:`custom_domain`,targetId:n,...r?{beforeState:{...r}}:{}}),e.text(`OK`)}}),SJ=F({route:(0,f.createRoute)({tags:[`custom-domains`],method:`patch`,path:`/{id}`,request:{body:{content:{"application/json":{schema:vn}}},params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:custom_domains`]}],responses:{200:{content:{"application/json":{schema:_n}},description:`The updated custom domain`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=e.req.valid(`json`),i=await e.env.data.customDomains.get(t,n);if(!await e.env.data.customDomains.update(t,n,r))throw new m(404);let a=await e.env.data.customDomains.get(t,n);if(!a)throw new m(404);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Update a Custom Domain`,targetType:`custom_domain`,targetId:n,...i?{beforeState:{...i}}:{},afterState:a}),e.json(a)}}),CJ=F({route:(0,f.createRoute)({tags:[`custom-domains`],method:`post`,path:`/`,request:{body:{content:{"application/json":{schema:f.z.object(hn.shape)}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`create:custom_domains`]}],responses:{201:{content:{"application/json":{schema:_n}},description:`The created custom domain`}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`),r=await e.env.data.customDomains.create(t,n);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Create a Custom Domain`,targetType:`custom_domain`,targetId:r.custom_domain_id,afterState:r}),e.json(r,{status:201})}}),wJ=F({route:(0,f.createRoute)({tags:[`custom-domains`],method:`put`,path:`/{id}/certificate`,request:{body:{content:{"application/json":{schema:bn}}},params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:custom_domains`]}],responses:{200:{content:{"application/json":{schema:_n}},description:`The custom domain with the uploaded certificate installed at the edge`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=e.req.valid(`json`),{uploadCertificate:i}=e.env.data.customDomains;if(!i)throw new m(501,{message:`The configured custom-domain adapter does not support certificate upload`});let a=await i(t,n,r);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Upload a Custom Domain Certificate`,targetType:`custom_domain`,targetId:n}),e.json(a)}}),TJ=F({route:(0,f.createRoute)({tags:[`custom-domains`],method:`post`,path:`/{id}/verify`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:custom_domains`]}],responses:{200:{content:{"application/json":{schema:_n}},description:`The custom domain`}}}),handler:async()=>{throw new m(501,{message:`Not implemented`})}}),EJ=new f.OpenAPIHono().openapiRoutes([yJ,bJ,xJ,SJ,CJ,wJ,TJ]);function DJ(e){let t=e.env.data.logStreams;if(!t)throw new m(501,{message:`Log streams are not supported by this adapter`});return t}var OJ=F({route:(0,f.createRoute)({tags:[`log-streams`],method:`get`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:log_streams`]}],responses:{200:{content:{"application/json":{schema:f.z.array(yr)}},description:`List of log streams`}}}),handler:async e=>{let t=I(e),n=await DJ(e).list(t);return e.json(n)}}),kJ=F({route:(0,f.createRoute)({tags:[`log-streams`],method:`get`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:log_streams`]}],responses:{200:{content:{"application/json":{schema:yr}},description:`A log stream`}}}),handler:async e=>{let t=I(e),n=DJ(e),{id:r}=e.req.valid(`param`),i=await n.get(t,r);if(!i)throw new m(404);return e.json(i)}}),AJ=F({route:(0,f.createRoute)({tags:[`log-streams`],method:`post`,path:`/`,request:{body:{content:{"application/json":{schema:f.z.object(vr.shape)}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`create:log_streams`]}],responses:{201:{content:{"application/json":{schema:yr}},description:`The created log stream`}}}),handler:async e=>{let t=I(e),n=DJ(e),r=e.req.valid(`json`),i=await n.create(t,r);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Create a Log Stream`,targetType:`log_stream`,targetId:i.id,afterState:i}),e.json(i,{status:201})}}),jJ=F({route:(0,f.createRoute)({tags:[`log-streams`],method:`patch`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),body:{content:{"application/json":{schema:f.z.object(yr.shape).partial()}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:log_streams`]}],responses:{200:{content:{"application/json":{schema:yr}},description:`The updated log stream`}}}),handler:async e=>{let t=I(e),n=DJ(e),{id:r}=e.req.valid(`param`),i=e.req.valid(`json`),a=await n.get(t,r);if(!await n.update(t,r,i))throw new m(404);let o=await n.get(t,r);if(!o)throw new m(404);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Update a Log Stream`,targetType:`log_stream`,targetId:r,...a?{beforeState:{...a}}:{},afterState:o}),e.json(o)}}),MJ=F({route:(0,f.createRoute)({tags:[`log-streams`],method:`delete`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`delete:log_streams`]}],responses:{204:{description:`Log stream deleted`}}}),handler:async e=>{let t=I(e),n=DJ(e),{id:r}=e.req.valid(`param`),i=await n.get(t,r);if(!await n.remove(t,r))throw new m(404);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete a Log Stream`,targetType:`log_stream`,targetId:r,...i?{beforeState:{...i}}:{}}),e.body(null,204)}}),NJ=new f.OpenAPIHono().openapiRoutes([OJ,kJ,AJ,jJ,MJ]),PJ=`***`,FJ=Cr.extend({credentials:Cr.shape.credentials.extend({client_secret:f.z.string()})});function IJ(e){return{...e,credentials:{...e.credentials,client_secret:PJ}}}function LJ(e){let t=e.env.data.migrationSources;if(!t)throw new m(501,{message:`Migration sources are not supported by this adapter`});return t}var RJ=F({route:(0,f.createRoute)({tags:[`migration-sources`],method:`get`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:migration_sources`]}],responses:{200:{content:{"application/json":{schema:f.z.array(FJ)}},description:`List of migration sources`}}}),handler:async e=>{let t=I(e),n=await LJ(e).list(t);return e.json(n.map(IJ))}}),zJ=F({route:(0,f.createRoute)({tags:[`migration-sources`],method:`get`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:migration_sources`]}],responses:{200:{content:{"application/json":{schema:FJ}},description:`A migration source`}}}),handler:async e=>{let t=I(e),n=LJ(e),{id:r}=e.req.valid(`param`),i=await n.get(t,r);if(!i)throw new m(404);return e.json(IJ(i))}}),BJ=F({route:(0,f.createRoute)({tags:[`migration-sources`],method:`post`,path:`/`,request:{body:{content:{"application/json":{schema:f.z.object(Sr.shape)}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`create:migration_sources`]}],responses:{201:{content:{"application/json":{schema:FJ}},description:`The created migration source`}}}),handler:async e=>{let t=I(e),n=LJ(e),r=e.req.valid(`json`),i=await n.create(t,r);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Create a Migration Source`,targetType:`migration_source`,targetId:i.id,afterState:IJ(i)}),e.json(IJ(i),{status:201})}}),VJ=F({route:(0,f.createRoute)({tags:[`migration-sources`],method:`patch`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),body:{content:{"application/json":{schema:f.z.object(Sr.shape).partial()}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:migration_sources`]}],responses:{200:{content:{"application/json":{schema:FJ}},description:`The updated migration source`}}}),handler:async e=>{let t=I(e),n=LJ(e),{id:r}=e.req.valid(`param`),i=e.req.valid(`json`),a=await n.get(t,r);if(!await n.update(t,r,i))throw new m(404);let o=await n.get(t,r);if(!o)throw new m(404);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Update a Migration Source`,targetType:`migration_source`,targetId:r,...a?{beforeState:IJ(a)}:{},afterState:IJ(o)}),e.json(IJ(o))}}),HJ=F({route:(0,f.createRoute)({tags:[`migration-sources`],method:`delete`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`delete:migration_sources`]}],responses:{204:{description:`Migration source deleted`}}}),handler:async e=>{let t=I(e),n=LJ(e),{id:r}=e.req.valid(`param`),i=await n.get(t,r);if(!await n.remove(t,r))throw new m(404);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete a Migration Source`,targetType:`migration_source`,targetId:r,...i?{beforeState:IJ(i)}:{}}),e.body(null,204)}}),UJ=new f.OpenAPIHono().openapiRoutes([RJ,zJ,BJ,VJ,HJ]);function WJ(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function GJ(e,t){if(!WJ(t))return e;let n=WJ(e)?{...e}:{};for(let[e,r]of Object.entries(t))n[e]=WJ(r)?GJ(n[e],r):r;return n}async function KJ(e,t){let n=I(e),r=await e.env.data.tenants.get(n);if(!r)throw new m(404,{message:`Tenant not found`});return r.attack_protection?.[t]??{}}async function qJ(e,t,n){let r=I(e),i=await e.env.data.tenants.get(r);if(!i)throw new m(404,{message:`Tenant not found`});let a=i.attack_protection??{},o=GJ(a[t]??{},n??{}),s={...a,[t]:o};return await e.env.data.tenants.update(r,{attack_protection:s}),await P(e,r,{type:M.SUCCESS_API_OPERATION,description:`Update Attack Protection (${t})`,targetType:`attack_protection`,targetId:r}),s[t]}var JJ=F({route:(0,f.createRoute)({tags:[`attack-protection`],method:`get`,path:`/breached-password-detection`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:attack_protection`]}],responses:{200:{content:{"application/json":{schema:wr}},description:`Breached password detection settings`}}}),handler:async e=>e.json(await KJ(e,`breached_password_detection`))}),YJ=F({route:(0,f.createRoute)({tags:[`attack-protection`],method:`patch`,path:`/breached-password-detection`,request:{body:{content:{"application/json":{schema:wr}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:attack_protection`]}],responses:{200:{content:{"application/json":{schema:wr}},description:`Updated settings`}}}),handler:async e=>{let t=wr.parse(await e.req.json());return e.json(await qJ(e,`breached_password_detection`,t))}}),XJ=F({route:(0,f.createRoute)({tags:[`attack-protection`],method:`get`,path:`/brute-force-protection`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:attack_protection`]}],responses:{200:{content:{"application/json":{schema:Tr}},description:`Brute force protection settings`}}}),handler:async e=>e.json(await KJ(e,`brute_force_protection`))}),ZJ=F({route:(0,f.createRoute)({tags:[`attack-protection`],method:`patch`,path:`/brute-force-protection`,request:{body:{content:{"application/json":{schema:Tr}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:attack_protection`]}],responses:{200:{content:{"application/json":{schema:Tr}},description:`Updated settings`}}}),handler:async e=>{let t=Tr.parse(await e.req.json());return e.json(await qJ(e,`brute_force_protection`,t))}}),QJ=F({route:(0,f.createRoute)({tags:[`attack-protection`],method:`get`,path:`/suspicious-ip-throttling`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:attack_protection`]}],responses:{200:{content:{"application/json":{schema:Er}},description:`Suspicious IP throttling settings`}}}),handler:async e=>e.json(await KJ(e,`suspicious_ip_throttling`))}),$J=F({route:(0,f.createRoute)({tags:[`attack-protection`],method:`patch`,path:`/suspicious-ip-throttling`,request:{body:{content:{"application/json":{schema:Er}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:attack_protection`]}],responses:{200:{content:{"application/json":{schema:Er}},description:`Updated settings`}}}),handler:async e=>{let t=Er.parse(await e.req.json());return e.json(await qJ(e,`suspicious_ip_throttling`,t))}}),eY=new f.OpenAPIHono().openapiRoutes([JJ,YJ,XJ,ZJ,QJ,$J]);function tY(e){return async(t,n)=>(t.env={...t.env??{}},!t.env.data&&e.dataAdapter&&(t.env.data=e.dataAdapter),t.set(`data`,t.env.data),e.hooks&&(t.env.hooks={...e.hooks,...t.env.hooks||{}}),e.samlSigner&&(t.env.samlSigner=e.samlSigner),e.poweredByLogo&&(t.env.poweredByLogo=e.poweredByLogo),t.env.codeExecutor==null&&e.codeExecutor&&(t.env.codeExecutor=e.codeExecutor),e.webhookInvoker&&(t.env.webhookInvoker=e.webhookInvoker),e.tenantUpgrade&&(t.env.tenantUpgrade=e.tenantUpgrade),e.usersImportMaxBytes!==void 0&&(t.env.usersImportMaxBytes=e.usersImportMaxBytes),e.usersImportMaxConcurrentJobs!==void 0&&(t.env.usersImportMaxConcurrentJobs=e.usersImportMaxConcurrentJobs),e.unsafeAllowAzpCustomClaim!==void 0&&(t.env.unsafeAllowAzpCustomClaim=e.unsafeAllowAzpCustomClaim),e.tenantOperationExecutor&&(t.env.tenantOperationExecutor=e.tenantOperationExecutor),e.outbox&&(t.env.outbox=e.outbox),e.userLinkingMode&&(t.env.userLinkingMode=e.userLinkingMode),e.usernamePasswordProvider&&(t.env.usernamePasswordProvider=e.usernamePasswordProvider),e.signingKeyMode&&(t.env.signingKeyMode=e.signingKeyMode),e.signingCertificateAuthority&&(t.env.signingCertificateAuthority=e.signingCertificateAuthority),e.rejectUnknownHosts&&(t.env.rejectUnknownHosts=e.rejectUnknownHosts),e.actionExecutionLogs&&(t.env.actionExecutionLogs=e.actionExecutionLogs),e.mcp&&(t.env.mcp=e.mcp),n())}function nY(e,t){e.set(`data`,t),e.env.data=t}function rY(e,t){return e.var.baseData??t}var iY=new Set([`/callback`,`/login/callback`,`/authorize/resume`]);function aY(e){if(iY.has(e.req.path))return!0;if(e.req.path===`/authorize`){let t=e.req.query(`client_id`);if(t&&!AM(t))return!0}return!1}async function oY(e,t){let n=e.req.header(`x-forwarded-host`),r=e.req.header(`host`),i=n||r||new URL(to(e.env)).host;e.set(`host`,i);let a=e.var.user;if(a?.tenant_id)return e.set(`tenant_id`,a.tenant_id),await t();let o=e.req.header(`tenant-id`);if(o)return e.set(`tenant_id`,o),await t();let s=new URL(to(e.env)).host.toLowerCase(),c=e=>e===s||e.endsWith(`.${s}`),l=i.toLowerCase();if(l.endsWith(`.${s}`)){let n=l.slice(0,-(s.length+1));if(n&&!n.includes(`.`)){if(!await e.env.data.tenants.get(n))throw new V(404,{message:`Tenant not found`});return e.set(`tenant_id`,n),e.set(`custom_domain`,i),await t()}}for(let i of[n,r]){if(!i)continue;let n=i.toLowerCase();if(c(n))continue;let r=await e.env.data.customDomains.getByDomain(n);if(r)return e.set(`tenant_id`,r.tenant_id),e.set(`custom_domain`,i),await t()}let u=e.req.query(`tenant_id`);if(u)return e.set(`tenant_id`,u),await t();if(!aY(e)){let{tenants:t}=await e.env.data.tenants.list({per_page:2});t.length===1&&t[0]&&e.set(`tenant_id`,t[0].id)}return await t()}var sY=f.z.object({created_at:f.z.string(),updated_at:f.z.string()}),cY=f.z.object({id:f.z.string(),version:f.z.string().optional()}),lY=f.z.object({name:f.z.string(),version:f.z.string()}),uY=f.z.object({name:f.z.string(),value:f.z.string().optional()}),dY=f.z.object({name:f.z.string().max(255),code:f.z.string().max(1e5),supported_triggers:f.z.array(cY).optional(),runtime:f.z.string().max(50).optional(),dependencies:f.z.array(lY).optional(),secrets:f.z.array(uY).optional(),is_system:f.z.boolean().optional(),inherit:f.z.boolean().optional()});dY.partial().extend({status:f.z.enum([`draft`,`built`]).optional(),deployed_at:f.z.string().optional()});var fY=dY.extend({id:f.z.string(),tenant_id:f.z.string(),status:f.z.enum([`draft`,`built`]).default(`built`),deployed_at:f.z.string().optional(),secrets:f.z.array(f.z.object({name:f.z.string(),value:f.z.string().optional()})).optional()}).extend(sY.shape),pY=f.z.object({name:f.z.string()});fY.extend({secrets:f.z.array(pY).optional()});var mY=f.z.string(),hY=f.z.enum([`unspecified`,`pending`,`final`,`partial`,`canceled`,`suspended`]),gY=f.z.object({id:f.z.string(),msg:f.z.string(),url:f.z.string().optional()}),_Y=f.z.object({action_name:f.z.string(),error:gY.nullable(),started_at:f.z.string(),ended_at:f.z.string()}),vY=f.z.object({level:f.z.enum([`log`,`info`,`warn`,`error`,`debug`]),message:f.z.string()}),yY=f.z.array(f.z.object({action_name:f.z.string(),lines:f.z.array(vY)}));f.z.object({id:f.z.string(),tenant_id:f.z.string(),trigger_id:mY,status:hY,results:f.z.array(_Y),logs:yY.optional(),created_at:f.z.string(),updated_at:f.z.string()}).omit({tenant_id:!0,created_at:!0,updated_at:!0}),f.z.object({action_id:f.z.string(),code:f.z.string().max(1e5),runtime:f.z.string().max(50).optional(),dependencies:f.z.array(lY).optional(),secrets:f.z.array(uY).optional(),supported_triggers:f.z.array(cY).optional(),deployed:f.z.boolean().default(!0)}).extend({id:f.z.string(),tenant_id:f.z.string(),number:f.z.number().int()}).extend(sY.shape);var bY=f.z.enum([`user_action`,`admin_action`,`system`,`api`]),xY=f.z.object({type:f.z.enum([`user`,`admin`,`system`,`api_key`,`client_credentials`]),id:f.z.string().optional(),email:f.z.string().optional(),org_id:f.z.string().optional(),org_name:f.z.string().optional(),scopes:f.z.array(f.z.string()).optional(),client_id:f.z.string().optional()}),SY=f.z.object({type:f.z.string(),id:f.z.string(),before:f.z.record(f.z.string(),f.z.unknown()).optional(),after:f.z.record(f.z.string(),f.z.unknown()).optional(),diff:f.z.record(f.z.string(),f.z.object({old:f.z.unknown(),new:f.z.unknown()})).optional()}),CY=f.z.object({method:f.z.string(),path:f.z.string(),query:f.z.record(f.z.string(),f.z.string()).optional(),body:f.z.unknown().optional(),ip:f.z.string(),user_agent:f.z.string().optional(),correlation_id:f.z.string().optional(),redirect_uri:f.z.string().optional(),authorization_url:f.z.string().optional()}),wY=f.z.object({status_code:f.z.number(),body:f.z.unknown().optional()}),TY=f.z.object({country_code:f.z.string(),city_name:f.z.string(),latitude:f.z.string(),longitude:f.z.string(),time_zone:f.z.string(),continent_code:f.z.string()}),EY=f.z.object({name:f.z.string(),version:f.z.string(),env:f.z.record(f.z.string(),f.z.string()).optional()});f.z.object({tenant_id:f.z.string(),event_type:f.z.string(),log_type:f.z.string(),description:f.z.string().optional(),category:bY,actor:xY,target:SY,request:CY,response:wY.optional(),connection:f.z.string().optional(),connection_id:f.z.string().optional(),client_name:f.z.string().optional(),strategy:f.z.string().optional(),strategy_type:f.z.string().optional(),audience:f.z.string().optional(),scope:f.z.string().optional(),location:TY.optional(),auth0_client:EY.optional(),hostname:f.z.string(),is_mobile:f.z.boolean().optional(),execution_id:f.z.string().optional(),timestamp:f.z.string()}).extend({id:f.z.string()}),f.z.enum([`AUTH0`,`EMAIL`,`REDIRECT`]),f.z.enum([`CREATE_USER`,`GET_USER`,`UPDATE_USER`,`SEND_REQUEST`,`SEND_EMAIL`]),f.z.enum([`VERIFY_EMAIL`]);var DY=f.z.object({require_mx_record:f.z.boolean().optional(),block_aliases:f.z.boolean().optional(),block_free_emails:f.z.boolean().optional(),block_disposable_emails:f.z.boolean().optional(),blocklist:f.z.array(f.z.string()).optional(),allowlist:f.z.array(f.z.string()).optional()}),OY=f.z.object({id:f.z.string(),alias:f.z.string().max(100).optional(),type:f.z.literal(`AUTH0`),action:f.z.literal(`UPDATE_USER`),allow_failure:f.z.boolean().optional(),mask_output:f.z.boolean().optional(),params:f.z.object({connection_id:f.z.string().optional(),user_id:f.z.string(),changes:f.z.record(f.z.string(),f.z.any())})}),kY=f.z.object({id:f.z.string(),alias:f.z.string().max(100).optional(),type:f.z.literal(`EMAIL`),action:f.z.literal(`VERIFY_EMAIL`),allow_failure:f.z.boolean().optional(),mask_output:f.z.boolean().optional(),params:f.z.object({email:f.z.string(),rules:DY.optional()})}),AY=f.z.enum([`change-email`,`account`,`custom`]),jY=f.z.object({id:f.z.string(),alias:f.z.string().max(100).optional(),type:f.z.literal(`REDIRECT`),action:f.z.literal(`REDIRECT_USER`),allow_failure:f.z.boolean().optional(),mask_output:f.z.boolean().optional(),params:f.z.object({target:AY.openapi({description:`The predefined target to redirect to, or 'custom' for a custom URL`}),custom_url:f.z.string().optional().openapi({description:`Custom URL to redirect to when target is 'custom'`})})}),MY=f.z.union([OY,kY,jY]);f.z.object({name:f.z.string().min(1).max(150).openapi({description:`The name of the flow`}),actions:f.z.array(MY).optional().default([]).openapi({description:`The list of actions to execute in sequence`})}).extend(sY.shape).extend({id:f.z.string().openapi({description:`Unique identifier for the flow`,example:`af_12tMpdJ3iek7svMyZkSh5M`})}),f.z.object({page:f.z.string().min(0).optional().default(`0`).transform(e=>parseInt(e,10)).openapi({description:`The page number where 0 is the first page`}),per_page:f.z.string().min(1).optional().default(`50`).transform(e=>parseInt(e,10)).openapi({description:`The number of items per page. Defaults to 50.`}),include_totals:f.z.string().optional().default(`false`).transform(e=>e===`true`).openapi({description:`If the total number of items should be included in the response`}),sort:f.z.string().regex(/^.+:(-1|1)$/).optional().openapi({description:`A property that should have the format 'string:-1' or 'string:1'`}),q:f.z.string().optional().openapi({description:`A lucene query string used to filter the results`})}),f.z.object({start:f.z.number(),limit:f.z.number(),length:f.z.number(),total:f.z.number().optional(),next:f.z.string().optional()});var NY=f.z.object({email:f.z.string().optional(),email_verified:f.z.boolean().optional(),name:f.z.string().optional(),username:f.z.string().optional(),given_name:f.z.string().optional(),phone_number:f.z.string().optional(),phone_verified:f.z.boolean().optional(),family_name:f.z.string().optional()}).catchall(f.z.any()),PY=f.z.object({connection:f.z.string(),user_id:f.z.string(),provider:f.z.string(),isSocial:f.z.boolean(),email:f.z.string().optional(),email_verified:f.z.boolean().optional(),phone_number:f.z.string().optional(),phone_verified:f.z.boolean().optional(),username:f.z.string().optional(),access_token:f.z.string().optional(),access_token_secret:f.z.string().optional(),refresh_token:f.z.string().optional(),profileData:NY.optional()}),FY=f.z.object({formatted:f.z.string().optional(),street_address:f.z.string().optional(),locality:f.z.string().optional(),region:f.z.string().optional(),postal_code:f.z.string().optional(),country:f.z.string().optional()}).optional(),IY=f.z.object({email:f.z.string().transform(e=>e.toLowerCase()).optional(),username:f.z.string().refine(e=>!e.includes(`@`),{message:`Usernames must not contain "@". Use the email field for email addresses.`}).optional(),phone_number:f.z.string().optional(),phone_verified:f.z.boolean().optional(),given_name:f.z.string().optional(),family_name:f.z.string().optional(),nickname:f.z.string().optional(),name:f.z.string().optional(),picture:f.z.string().optional(),locale:f.z.string().optional(),linked_to:f.z.string().optional(),profileData:f.z.string().optional(),user_id:f.z.string().optional(),app_metadata:f.z.any().default({}).optional(),user_metadata:f.z.any().default({}).optional(),middle_name:f.z.string().optional(),preferred_username:f.z.string().optional(),profile:f.z.string().optional(),website:f.z.string().optional(),gender:f.z.string().optional(),birthdate:f.z.string().optional(),zoneinfo:f.z.string().optional(),address:FY});IY.extend({email_verified:f.z.boolean().default(!1),verify_email:f.z.boolean().optional(),last_ip:f.z.string().optional(),last_login:f.z.string().optional(),user_id:f.z.string().optional(),provider:f.z.string().optional(),connection:f.z.string(),is_social:f.z.boolean().optional(),blocked:f.z.boolean().optional(),registration_completed_at:f.z.string().optional(),password:f.z.object({hash:f.z.string(),algorithm:f.z.string()}).optional()}).omit({password:!0}).extend(sY.shape).extend({user_id:f.z.string(),provider:f.z.string(),is_social:f.z.boolean(),email:f.z.string().optional(),login_count:f.z.number().default(0),identities:f.z.array(PY).optional()}).omit({registration_completed_at:!0}),IY.extend({login_count:f.z.number(),multifactor:f.z.array(f.z.string()).optional(),last_ip:f.z.string().optional(),last_login:f.z.string().optional(),user_id:f.z.string()}).catchall(f.z.any());var LY=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`,RY=(e=21)=>{let t=``,n=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+=LY[n[e]&63];return t},zY=f.z.object({client_id:f.z.string().optional().openapi({description:`ID of this client. Generated server-side if omitted (Auth0 behavior).`}),name:f.z.string().min(1).openapi({description:`Name of this client (min length: 1 character, does not allow < or >).`}),description:f.z.string().max(140).optional().openapi({description:`Free text description of this client (max length: 140 characters).`}),global:f.z.boolean().default(!1).openapi({description:`Whether this is your global 'All Applications' client representing legacy tenant settings (true) or a regular client (false).`}),client_secret:f.z.string().default(()=>RY()).optional().openapi({description:`Client secret (which you must not make public).`}),app_type:f.z.enum([`native`,`spa`,`regular_web`,`non_interactive`,`resource_server`,`express_configuration`,`rms`,`box`,`cloudbees`,`concur`,`dropbox`,`mscrm`,`echosign`,`egnyte`,`newrelic`,`office365`,`salesforce`,`sentry`,`sharepoint`,`slack`,`springcm`,`zendesk`,`zoom`,`sso_integration`,`oag`]).default(`regular_web`).optional().openapi({description:`The type of application this client represents`}),logo_uri:f.z.string().url().optional().openapi({description:`URL of the logo to display for this client. Recommended size is 150x150 pixels.`}),is_first_party:f.z.boolean().default(!0).openapi({description:`Whether this client is a first party client (true) or not (false). First-party clients skip the consent screen; third-party clients require explicit user consent for non-basic scopes.`}),oidc_conformant:f.z.boolean().default(!0).openapi({description:`Whether this client conforms to strict OIDC specifications (true) or uses legacy features (false).`}),auth0_conformant:f.z.boolean().default(!0).openapi({description:`Whether this client follows Auth0-compatible behavior (true) or strict OIDC behavior (false). When true, profile/email claims are included in the ID token when scopes are requested. When false, these claims are only available from the userinfo endpoint (strict OIDC 5.4 compliance).`}),callbacks:f.z.array(f.z.string()).default([]).optional().openapi({description:`Comma-separated list of URLs whitelisted for Auth0 to use as a callback to the client after authentication.`}),allowed_origins:f.z.array(f.z.string()).default([]).optional().openapi({description:`Comma-separated list of URLs allowed to make requests from JavaScript to Auth0 API (typically used with CORS). By default, all your callback URLs will be allowed. This field allows you to enter other origins if necessary. You can also use wildcards at the subdomain level (e.g., https://*.contoso.com). Query strings and hash information are not taken into account when validating these URLs.`}),web_origins:f.z.array(f.z.string()).default([]).optional().openapi({description:`Comma-separated list of allowed origins for use with Cross-Origin Authentication, Device Flow, and web message response mode.`}),client_aliases:f.z.array(f.z.string()).default([]).optional().openapi({description:`List of audiences/realms for SAML protocol. Used by the wsfed addon.`}),allowed_clients:f.z.array(f.z.string()).default([]).optional().openapi({description:`List of allow clients and API ids that are allowed to make delegation requests. Empty means all all your clients are allowed.`}),connections:f.z.array(f.z.string()).default([]).optional().openapi({description:`List of connection IDs enabled for this client. The order determines the display order on the login page.`}),allowed_logout_urls:f.z.array(f.z.string()).default([]).optional().openapi({description:`Comma-separated list of URLs that are valid to redirect to after logout from Auth0. Wildcards are allowed for subdomains.`}),session_transfer:f.z.record(f.z.string(),f.z.any()).default({}).optional().openapi({description:`Native to Web SSO Configuration`}),oidc_logout:f.z.object({backchannel_logout_urls:f.z.array(f.z.string()).optional().openapi({description:`URLs that receive a signed OIDC Back-Channel Logout 1.0 logout token when a session this client participated in ends.`}),backchannel_logout_initiators:f.z.object({mode:f.z.enum([`all`,`custom`]).optional().openapi({description:`Whether all session-end events initiate a backchannel logout (all) or only the selected_initiators (custom).`}),selected_initiators:f.z.array(f.z.string()).optional().openapi({description:`Logout initiators that trigger a backchannel logout when mode is custom (e.g. rp-logout, idp-logout, password-changed).`})}).passthrough().optional().openapi({description:`Controls which session-end events initiate backchannel logout notifications. Stored for Auth0 compatibility; not yet enforced — all initiators currently notify.`})}).passthrough().default({}).optional().openapi({description:`Configuration for OIDC backchannel logout`}),grant_types:f.z.array(f.z.string()).default([]).optional().openapi({description:`List of grant types supported for this application. Can include authorization_code, implicit, refresh_token, client_credentials, password, http://auth0.com/oauth/grant-type/password-realm, http://auth0.com/oauth/grant-type/mfa-oob, http://auth0.com/oauth/grant-type/mfa-otp, http://auth0.com/oauth/grant-type/mfa-recovery-code, urn:openid:params:grant-type:ciba, and urn:ietf:params:oauth:grant-type:device_code.`}),jwt_configuration:f.z.record(f.z.string(),f.z.any()).default({}).optional().openapi({description:`Configuration related to JWTs for the client.`}),signing_keys:f.z.array(f.z.record(f.z.string(),f.z.any())).default([]).optional().openapi({description:`Signing certificates associated with this client.`}),encryption_key:f.z.record(f.z.string(),f.z.any()).default({}).optional().openapi({description:`Encryption used for WsFed responses with this client.`}),sso:f.z.boolean().default(!1).openapi({description:`Applies only to SSO clients and determines whether Auth0 will handle Single Sign On (true) or whether the Identity Provider will (false).`}),sso_disabled:f.z.boolean().default(!1).openapi({description:`Whether Single Sign On is disabled for this client. When true, existing SSO sessions will not be reused and users must authenticate every time.`}),cross_origin_authentication:f.z.boolean().default(!1).openapi({description:`Whether this client can be used to make cross-origin authentication requests (true) or it is not allowed to make such requests (false).`}),cross_origin_loc:f.z.string().url().optional().openapi({description:`URL of the location in your site where the cross origin verification takes place for the cross-origin auth flow when performing Auth in your own domain instead of Auth0 hosted login page.`}),custom_login_page_on:f.z.boolean().default(!1).openapi({description:`Whether a custom login page is to be used (true) or the default provided login page (false).`}),custom_login_page:f.z.string().optional().openapi({description:`The content (HTML, CSS, JS) of the custom login page.`}),custom_login_page_preview:f.z.string().optional().openapi({description:`The content (HTML, CSS, JS) of the custom login page. (Used on Previews)`}),form_template:f.z.string().optional().openapi({description:`HTML form template to be used for WS-Federation.`}),addons:f.z.record(f.z.string(),f.z.any()).default({}).optional().openapi({description:`Addons enabled for this client and their associated configurations.`}),token_endpoint_auth_method:f.z.enum([`none`,`client_secret_post`,`client_secret_basic`,`client_secret_jwt`,`private_key_jwt`]).default(`client_secret_basic`).optional().openapi({description:"Defines the requested authentication method for the token endpoint. `none` (public client), `client_secret_post` / `client_secret_basic` (HTTP POST / Basic), `client_secret_jwt` (RFC 7523 HMAC assertion using client_secret), or `private_key_jwt` (RFC 7523 asymmetric assertion verified against the client's `jwks` / `jwks_uri`)."}),client_metadata:f.z.record(f.z.string(),f.z.string().max(255)).default({}).optional().openapi({description:`Metadata associated with the client, in the form of an object with string values (max 255 chars). Maximum of 10 metadata properties allowed. Field names (max 255 chars) are alphanumeric and may only include the following special characters: :,-+=_*?"/()<>@ [Tab][Space]`}),hide_sign_up_disabled_error:f.z.boolean().default(!1).optional().openapi({description:"Enumeration-safe variant of the connection-level `disable_signup` flag. When a signup is blocked by the password connection and this is true, the identifier screen does not reveal that an email is unknown — it advances to the OTP/password challenge as if the account existed and fails at credential check. Mitigates email enumeration at the cost of UX: users without an account see a generic credential failure instead of an explicit signup-disabled message."}),mobile:f.z.record(f.z.string(),f.z.any()).default({}).optional().openapi({description:`Additional configuration for native mobile apps.`}),initiate_login_uri:f.z.string().url().optional().openapi({description:`Initiate login uri, must be https`}),native_social_login:f.z.record(f.z.string(),f.z.any()).default({}).optional(),refresh_token:f.z.object({rotation_type:f.z.enum([`rotating`,`non-rotating`]).optional().openapi({description:`Whether refresh tokens for this client are rotated on every exchange (Auth0 'rotating' behavior) or kept stable (legacy non-rotating). Defaults to 'non-rotating' when unset.`}),leeway:f.z.number().int().min(0).max(600).optional().openapi({description:`Seconds after a parent token's first rotation during which presenting it again still mints a fresh sibling child instead of triggering reuse-detection. Defaults to 30s when unset.`}),expiration_type:f.z.enum([`expiring`,`non-expiring`]).optional().openapi({description:`Whether refresh tokens for this client expire at all. 'non-expiring' overrides both the absolute and the idle lifetime.`}),token_lifetime:f.z.number().int().min(0).optional().openapi({description:"Refresh-token absolute lifetime in seconds. Falls back to the tenant's `session_lifetime` when unset."}),infinite_token_lifetime:f.z.boolean().optional().openapi({description:"When true, refresh tokens have no absolute expiry (overrides `token_lifetime`)."}),idle_token_lifetime:f.z.number().int().min(0).optional().openapi({description:"Refresh-token idle (sliding) lifetime in seconds, refreshed on every exchange. Falls back to the tenant's `idle_session_lifetime` when unset."}),infinite_idle_token_lifetime:f.z.boolean().optional().openapi({description:"When true, refresh tokens have no idle expiry (overrides `idle_token_lifetime`)."})}).default({}).optional().openapi({description:`Refresh token configuration`}),default_organization:f.z.record(f.z.string(),f.z.any()).default({}).optional().openapi({description:`Defines the default Organization ID and flows`}),organization_usage:f.z.enum([`deny`,`allow`,`require`]).default(`deny`).optional().openapi({description:`Defines how to proceed during an authentication transaction with regards an organization. Can be deny (default), allow or require.`}),organization_require_behavior:f.z.enum([`no_prompt`,`pre_login_prompt`,`post_login_prompt`]).default(`no_prompt`).optional().openapi({description:`Defines how to proceed during an authentication transaction when client.organization_usage: 'require'. Can be no_prompt (default), pre_login_prompt or post_login_prompt. post_login_prompt requires oidc_conformant: true.`}),client_authentication_methods:f.z.record(f.z.string(),f.z.any()).default({}).optional().openapi({description:`Defines client authentication methods.`}),require_pushed_authorization_requests:f.z.boolean().default(!1).openapi({description:`Makes the use of Pushed Authorization Requests mandatory for this client`}),require_proof_of_possession:f.z.boolean().default(!1).openapi({description:`Makes the use of Proof-of-Possession mandatory for this client`}),signed_request_object:f.z.record(f.z.string(),f.z.any()).default({}).optional().openapi({description:`JWT-secured Authorization Requests (JAR) settings.`}),compliance_level:f.z.enum([`none`,`fapi1_adv_pkj_par`,`fapi1_adv_mtls_par`,`fapi2_sp_pkj_mtls`,`fapi2_sp_mtls_mtls`]).optional().openapi({description:`Defines the compliance level for this client, which may restrict it's capabilities`}),par_request_expiry:f.z.number().optional().openapi({description:`Specifies how long, in seconds, a Pushed Authorization Request URI remains valid`}),token_quota:f.z.record(f.z.string(),f.z.any()).default({}).optional(),owner_user_id:f.z.string().optional().openapi({description:`User ID of the consenting user when this client was created via IAT-gated Dynamic Client Registration. NULL for clients created via the Management API or open DCR.`}),registration_type:f.z.enum([`manual`,`open_dcr`,`iat_dcr`]).optional().openapi({description:"Provenance of this client. `manual` = Management API; `open_dcr` = RFC 7591 without IAT; `iat_dcr` = RFC 7591 with an Initial Access Token."}),registration_metadata:f.z.record(f.z.string(),f.z.any()).default({}).optional().openapi({description:"Arbitrary metadata captured at Dynamic Client Registration time that isn't a first-class client field (e.g. integration_type, domain). Also stores `iat_constraints` for clients created via IAT so RFC 7592 PUT can enforce field immutability."}),token_exchange:f.z.object({allow_any_profile_of_type:f.z.array(f.z.literal(`custom_authentication`)).optional()}).optional().openapi({description:'Custom Token Exchange settings. Set `allow_any_profile_of_type` to `["custom_authentication"]` to let this client exchange subject tokens through the tenant\'s token exchange profiles.'}),user_linking_mode:f.z.enum([`builtin`,`off`]).optional().openapi({description:"Per-client override for the built-in email-based user-linking path. `builtin` runs the legacy in-process linking at user creation/email update. `off` disables the legacy path; linking only happens if the tenant has enabled the `account-linking` template hook. When unset, the service-level `userLinkingMode` default applies."})});f.z.object({created_at:f.z.string(),updated_at:f.z.string()}).extend(zY.shape).extend({client_id:f.z.string()});var BY=f.z.object({client_id:f.z.string().min(1).openapi({description:`ID of the client.`}),audience:f.z.string().min(1).openapi({description:`The audience (API identifier) of this client grant.`}),scope:f.z.array(f.z.string()).optional().openapi({description:`Scopes allowed for this client grant.`}),organization_usage:f.z.enum([`deny`,`allow`,`require`]).optional().openapi({description:`Defines whether organizations can be used with client credentials exchanges for this grant.`}),allow_any_organization:f.z.boolean().optional().openapi({description:`If enabled, any organization can be used with this grant. If disabled (default), the grant must be explicitly assigned to the desired organizations.`}),is_system:f.z.boolean().optional().openapi({description:`If enabled, this grant is a special grant created by Auth0. It cannot be modified or deleted directly.`}),subject_type:f.z.enum([`client`,`user`]).optional().openapi({description:`The type of application access the client grant allows. Use of this field is subject to the applicable Free Trial terms in Okta's Master Subscription Agreement.`}),authorization_details_types:f.z.array(f.z.string()).optional().openapi({description:`Types of authorization_details allowed for this client grant. Use of this field is subject to the applicable Free Trial terms in Okta's Master Subscription Agreement.`})}),VY=f.z.object({id:f.z.string().openapi({description:`ID of the client grant.`})}).extend(BY.shape).extend({created_at:f.z.string().optional(),updated_at:f.z.string().optional()});f.z.array(VY);var HY=f.z.enum([`iat`,`rat`]),UY=f.z.object({id:f.z.string(),token_hash:f.z.string(),type:HY,client_id:f.z.string().optional(),sub:f.z.string().optional(),constraints:f.z.record(f.z.string(),f.z.unknown()).optional(),single_use:f.z.boolean().default(!1),expires_at:f.z.string().optional()});f.z.object({created_at:f.z.string(),used_at:f.z.string().optional(),revoked_at:f.z.string().optional()}).extend(UY.shape);var WY=f.z.object({x:f.z.number(),y:f.z.number()}),GY=function(e){return e.RICH_TEXT=`RICH_TEXT`,e.NEXT_BUTTON=`NEXT_BUTTON`,e.BACK_BUTTON=`BACK_BUTTON`,e.SUBMIT_BUTTON=`SUBMIT_BUTTON`,e.DIVIDER=`DIVIDER`,e.TEXT=`TEXT`,e.EMAIL=`EMAIL`,e.PASSWORD=`PASSWORD`,e.NUMBER=`NUMBER`,e.PHONE=`PHONE`,e.DATE=`DATE`,e.CHECKBOX=`CHECKBOX`,e.RADIO=`RADIO`,e.SELECT=`SELECT`,e.HIDDEN=`HIDDEN`,e.LEGAL=`LEGAL`,e}({}),KY=function(e){return e.BLOCK=`BLOCK`,e.FIELD=`FIELD`,e}({}),qY=f.z.object({id:f.z.string(),category:f.z.nativeEnum(KY),type:f.z.nativeEnum(GY)}),JY=qY.extend({category:f.z.literal(`BLOCK`),type:f.z.literal(`RICH_TEXT`),config:f.z.object({content:f.z.string()}).passthrough()}),YY=qY.extend({category:f.z.literal(`BLOCK`),type:f.z.union([f.z.literal(`NEXT_BUTTON`),f.z.literal(`BACK_BUTTON`),f.z.literal(`SUBMIT_BUTTON`)]),config:f.z.object({text:f.z.string()}).passthrough()}),XY=qY.extend({category:f.z.literal(`FIELD`),type:f.z.literal(`LEGAL`),required:f.z.boolean().optional(),sensitive:f.z.boolean().optional(),config:f.z.object({text:f.z.string()}).passthrough()}),ZY=qY.extend({category:f.z.literal(`FIELD`),type:f.z.union([f.z.literal(`TEXT`),f.z.literal(`EMAIL`),f.z.literal(`PASSWORD`),f.z.literal(`NUMBER`),f.z.literal(`PHONE`),f.z.literal(`DATE`),f.z.literal(`CHECKBOX`),f.z.literal(`RADIO`),f.z.literal(`SELECT`),f.z.literal(`HIDDEN`)]),required:f.z.boolean().optional(),sensitive:f.z.boolean().optional(),config:f.z.object({label:f.z.string().optional(),placeholder:f.z.string().optional()}).passthrough()}),QY=f.z.object({id:f.z.string(),category:f.z.string(),type:f.z.string()}).passthrough(),$Y=f.z.union([JY,YY,XY,ZY,QY]),eX=f.z.object({id:f.z.string(),type:f.z.literal(`STEP`),coordinates:WY,alias:f.z.string().optional(),config:f.z.object({components:f.z.array($Y),next_node:f.z.string()}).passthrough()}),tX=f.z.object({id:f.z.string(),type:f.z.literal(`FLOW`),coordinates:WY,alias:f.z.string().optional(),config:f.z.object({flow_id:f.z.string(),next_node:f.z.string()})}),nX=f.z.object({id:f.z.string(),type:f.z.literal(`ACTION`),coordinates:WY,alias:f.z.string().optional(),config:f.z.object({action_type:f.z.enum([`REDIRECT`]).openapi({description:`The type of action to perform`}),target:f.z.enum([`change-email`,`account`,`custom`]).openapi({description:`The predefined target to redirect to`}),custom_url:f.z.string().optional().openapi({description:`Custom URL when target is 'custom'`}),next_node:f.z.string().openapi({description:`The next node to navigate to after action (for non-redirect actions)`})}).passthrough()}),rX=f.z.object({id:f.z.string(),type:f.z.string(),coordinates:WY}).passthrough(),iX=f.z.union([eX,tX,nX,rX]),aX=f.z.object({next_node:f.z.string(),coordinates:WY}).passthrough(),oX=f.z.object({resume_flow:f.z.boolean().optional(),coordinates:WY}).passthrough();f.z.object({id:f.z.string(),name:f.z.string(),languages:f.z.object({primary:f.z.string()}).passthrough(),nodes:f.z.array(iX),start:aX,ending:oX,created_at:f.z.string(),updated_at:f.z.string(),links:f.z.object({sdkSrc:f.z.string().optional(),sdk_src:f.z.string().optional()}).passthrough()}).passthrough().omit({id:!0,created_at:!0,updated_at:!0});var sX=function(e){return e.TOKEN=`token`,e.ID_TOKEN=`id_token`,e.TOKEN_ID_TOKEN=`id_token token`,e.CODE=`code`,e.CODE_ID_TOKEN=`code id_token`,e.CODE_TOKEN=`code token`,e.CODE_ID_TOKEN_TOKEN=`code id_token token`,e}({}),cX=function(e){return e.QUERY=`query`,e.FRAGMENT=`fragment`,e.FORM_POST=`form_post`,e.WEB_MESSAGE=`web_message`,e.SAML_POST=`saml_post`,e}({}),lX=function(e){return e.S256=`S256`,e.Plain=`plain`,e}({}),uX=f.z.union([f.z.null(),f.z.object({essential:f.z.boolean().optional(),value:f.z.unknown().optional(),values:f.z.array(f.z.unknown()).optional()})]).nullable(),dX=f.z.object({userinfo:f.z.record(f.z.string(),uX).optional(),id_token:f.z.record(f.z.string(),uX).optional()}),fX=f.z.object({client_id:f.z.string(),act_as:f.z.string().optional(),response_type:f.z.nativeEnum(sX).optional(),response_mode:f.z.nativeEnum(cX).optional(),redirect_uri:f.z.string().optional(),audience:f.z.string().optional(),organization:f.z.string().optional(),state:f.z.string().optional(),nonce:f.z.string().optional(),scope:f.z.string().optional(),prompt:f.z.string().optional(),code_challenge_method:f.z.nativeEnum(lX).optional(),code_challenge:f.z.string().optional(),username:f.z.string().optional(),ui_locales:f.z.string().optional(),max_age:f.z.number().optional(),acr_values:f.z.string().optional(),claims:dX.optional(),vendor_id:f.z.string().optional()});f.z.object({colors:f.z.object({primary:f.z.string(),page_background:f.z.union([f.z.string(),f.z.object({type:f.z.string().optional(),start:f.z.string().optional(),end:f.z.string().optional(),angle_deg:f.z.number().optional()})]).optional()}).optional(),logo_url:f.z.string().optional(),favicon_url:f.z.string().optional(),powered_by_logo_url:f.z.string().optional(),font:f.z.object({url:f.z.string()}).optional(),dark_mode:f.z.enum([`dark`,`light`,`auto`]).optional()});var pX=f.z.enum([`password_reset`,`email_verification`,`otp`,`mfa_otp`,`authorization_code`,`oauth2_state`,`ticket`,`client_assertion_jti`,`subject_token_jti`]);f.z.object({code_id:f.z.string().openapi({description:`The code that will be used in for instance an email verification flow`}),login_id:f.z.string().optional().openapi({description:`The id of the login session that the code is connected to`}),connection_id:f.z.string().optional().openapi({description:`The connection that the code is connected to`}),code_type:pX,code_verifier:f.z.string().optional().openapi({description:`The code verifier used in PKCE in outbound flows`}),code_challenge:f.z.string().optional().openapi({description:`The code challenge used in PKCE in outbound flows`}),code_challenge_method:f.z.enum([`plain`,`S256`]).optional().openapi({description:`The code challenge method used in PKCE in outbound flows`}),redirect_uri:f.z.string().optional().openapi({description:`The redirect URI associated with the code`}),otp:f.z.string().optional().openapi({description:`The one-time password value for OTP-based flows`}),nonce:f.z.string().optional().openapi({description:`The nonce value used for security in OIDC flows`}),state:f.z.string().optional().openapi({description:`The state parameter used for CSRF protection in OAuth flows`}),expires_at:f.z.string(),used_at:f.z.string().optional(),user_id:f.z.string().optional()}).extend({created_at:f.z.string()});var mX=f.z.object({kid:f.z.string().optional(),team_id:f.z.string().optional(),realms:f.z.string().optional(),authentication_method:f.z.string().optional(),client_id:f.z.string().optional(),client_secret:f.z.string().optional(),app_secret:f.z.string().optional(),scope:f.z.string().optional(),client_secret_hint:f.z.string().optional(),app_secret_hint:f.z.string().optional(),twilio_token_hint:f.z.string().optional(),authorization_endpoint:f.z.string().optional(),token_endpoint:f.z.string().optional(),userinfo_endpoint:f.z.string().optional(),jwks_uri:f.z.string().optional(),discovery_url:f.z.string().optional(),issuer:f.z.string().optional(),token_endpoint_auth_method:f.z.enum([`client_secret_basic`,`client_secret_post`]).optional(),provider:f.z.string().optional(),from:f.z.string().optional(),twilio_sid:f.z.string().optional(),twilio_token:f.z.string().optional(),icon_url:f.z.string().optional(),domain_aliases:f.z.array(f.z.string()).optional(),callback_url:f.z.string().url().optional(),passwordPolicy:f.z.enum([`none`,`low`,`fair`,`good`,`excellent`]).optional(),password_complexity_options:f.z.object({min_length:f.z.number().optional()}).optional(),password_history:f.z.object({enable:f.z.boolean().optional(),size:f.z.number().optional()}).optional(),password_no_personal_info:f.z.object({enable:f.z.boolean().optional()}).optional(),password_dictionary:f.z.object({enable:f.z.boolean().optional(),dictionary:f.z.array(f.z.string()).optional()}).optional(),disable_signup:f.z.boolean().optional(),brute_force_protection:f.z.boolean().optional(),import_mode:f.z.boolean().optional(),configuration:f.z.object({token_endpoint:f.z.string().optional(),userinfo_endpoint:f.z.string().optional(),client_id:f.z.string().optional(),client_secret:f.z.string().optional(),client_secret_hint:f.z.string().optional(),realm:f.z.string().optional()}).optional(),attributes:f.z.object({email:f.z.object({identifier:f.z.object({active:f.z.boolean().optional()}).optional(),signup:f.z.object({status:f.z.enum([`required`,`optional`,`disabled`]).optional(),verification:f.z.object({active:f.z.boolean().optional()}).optional()}).optional(),validation:f.z.object({allowed:f.z.boolean().optional()}).optional(),unique:f.z.boolean().optional(),profile_required:f.z.boolean().optional(),verification_method:f.z.enum([`link`,`code`]).optional()}).optional(),username:f.z.object({identifier:f.z.object({active:f.z.boolean().optional()}).optional(),signup:f.z.object({status:f.z.enum([`required`,`optional`,`disabled`]).optional()}).optional(),validation:f.z.object({max_length:f.z.number().optional(),min_length:f.z.number().optional(),allowed_types:f.z.object({email:f.z.boolean().optional(),phone_number:f.z.boolean().optional()}).optional()}).optional(),profile_required:f.z.boolean().optional()}).optional(),phone_number:f.z.object({identifier:f.z.object({active:f.z.boolean().optional()}).optional(),signup:f.z.object({status:f.z.enum([`required`,`optional`,`disabled`]).optional()}).optional()}).optional()}).optional(),authentication_methods:f.z.object({password:f.z.object({enabled:f.z.boolean().optional()}).optional(),passkey:f.z.object({enabled:f.z.boolean().optional()}).optional()}).optional(),passkey_options:f.z.object({challenge_ui:f.z.enum([`both`,`autofill`,`button`]).optional(),local_enrollment_enabled:f.z.boolean().optional(),progressive_enrollment_enabled:f.z.boolean().optional()}).optional(),requires_username:f.z.boolean().optional(),validation:f.z.object({username:f.z.object({min:f.z.number().optional(),max:f.z.number().optional()}).optional()}).optional(),set_user_root_attributes:f.z.enum([`on_each_login`,`on_first_login`,`never_on_login`]).optional()});function hX(e){if(e!==null){if(Array.isArray(e))return e.filter(e=>e!==null).map(hX);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))r!==null&&(t[n]=hX(r));return t}return e}}var gX=f.z.object({id:f.z.string().optional(),name:f.z.string(),display_name:f.z.string().optional(),strategy:f.z.string(),options:f.z.preprocess(e=>e===null?{}:hX(e),mX).default({}),enabled_clients:f.z.array(f.z.string()).default([]).optional(),response_type:f.z.nativeEnum(sX).optional(),response_mode:f.z.nativeEnum(cX).optional(),is_domain_connection:f.z.boolean().optional(),show_as_button:f.z.boolean().optional(),metadata:f.z.record(f.z.string(),f.z.any()).optional(),is_system:f.z.boolean().optional()});f.z.object({id:f.z.string(),created_at:f.z.string().transform(e=>e===null?``:e),updated_at:f.z.string().transform(e=>e===null?``:e)}).extend(gX.shape);var _X=f.z.object({domain:f.z.string(),custom_domain_id:f.z.string().optional(),type:f.z.enum([`auth0_managed_certs`,`self_managed_certs`]),verification_method:f.z.enum([`txt`]).optional(),tls_policy:f.z.enum([`recommended`]).optional(),custom_client_ip_header:f.z.enum([`true-client-ip`,`cf-connecting-ip`,`x-forwarded-for`,`x-azure-clientip`,`null`]).optional(),domain_metadata:f.z.record(f.z.string(),f.z.string().max(255)).optional()}),vX=f.z.discriminatedUnion(`name`,[f.z.object({name:f.z.literal(`txt`),record:f.z.string(),domain:f.z.string()}),f.z.object({name:f.z.literal(`http`),http_body:f.z.string(),http_url:f.z.string()})]),yX=_X.extend({custom_domain_id:f.z.string(),primary:f.z.boolean(),status:f.z.enum([`disabled`,`pending`,`pending_verification`,`ready`]),origin_domain_name:f.z.string().optional(),verification:f.z.object({methods:f.z.array(vX)}).optional(),tls_policy:f.z.string().optional()});_X.pick({tls_policy:!0,custom_client_ip_header:!0,domain_metadata:!0}).strict(),yX.extend({tenant_id:f.z.string()}),f.z.object({certificate:f.z.string().regex(/^-----BEGIN CERTIFICATE-----[\s\S]+-----END CERTIFICATE-----\s*$/,`must be PEM-encoded; include the full certificate chain in leaf-first order`),private_key:f.z.string().regex(/-----BEGIN (RSA |EC |ENCRYPTED )?PRIVATE KEY-----[\s\S]+-----END \1PRIVATE KEY-----\s*$/,`must be a PEM-encoded private key`)});var bX=f.z.object({id:f.z.string(),order:f.z.number().optional(),visible:f.z.boolean().optional().default(!0)}),xX=bX.extend({category:f.z.literal(`BLOCK`).optional()}),SX=xX.extend({type:f.z.literal(`DIVIDER`),config:f.z.object({text:f.z.string().optional()}).optional()}),CX=xX.extend({type:f.z.literal(`HTML`),config:f.z.object({content:f.z.string().optional()}).optional()}),wX=xX.extend({type:f.z.literal(`IMAGE`),config:f.z.object({src:f.z.string().optional(),alt:f.z.string().optional(),width:f.z.number().optional(),height:f.z.number().optional()}).optional()}),TX=xX.extend({type:f.z.literal(`JUMP_BUTTON`),config:f.z.object({text:f.z.string().optional(),target_step:f.z.string().optional()})}),EX=xX.extend({type:f.z.literal(`RESEND_BUTTON`),config:f.z.object({text:f.z.string().optional(),resend_action:f.z.string().optional()})}),DX=xX.extend({type:f.z.literal(`NEXT_BUTTON`),config:f.z.object({text:f.z.string().optional(),variant:f.z.enum([`primary`,`secondary`]).optional(),skip_validation:f.z.boolean().optional()})}),OX=xX.extend({type:f.z.literal(`PREVIOUS_BUTTON`),config:f.z.object({text:f.z.string().optional()})}),kX=xX.extend({type:f.z.literal(`RICH_TEXT`),config:f.z.object({content:f.z.string().optional()}).optional()}),AX=bX.extend({category:f.z.literal(`WIDGET`).optional(),label:f.z.string().min(1).optional(),hint:f.z.string().min(1).max(500).optional(),required:f.z.boolean().optional(),sensitive:f.z.boolean().optional()}),jX=AX.extend({type:f.z.literal(`AUTH0_VERIFIABLE_CREDENTIALS`),config:f.z.object({credential_type:f.z.string().optional()})}),MX=AX.extend({type:f.z.literal(`GMAPS_ADDRESS`),config:f.z.object({api_key:f.z.string().optional()})}),NX=AX.extend({type:f.z.literal(`RECAPTCHA`),config:f.z.object({site_key:f.z.string().optional()})}),PX=bX.extend({category:f.z.literal(`FIELD`).optional(),label:f.z.string().min(1).optional(),hint:f.z.string().min(1).max(500).optional(),messages:f.z.array(f.z.object({id:f.z.number().optional(),text:f.z.string(),type:f.z.enum([`info`,`error`,`success`,`warning`])})).optional(),required:f.z.boolean().optional(),sensitive:f.z.boolean().optional()}),FX=PX.extend({type:f.z.literal(`BOOLEAN`),config:f.z.object({default_value:f.z.boolean().optional()}).optional()}),IX=PX.extend({type:f.z.literal(`CARDS`),config:f.z.object({options:f.z.array(f.z.object({value:f.z.string(),label:f.z.string(),description:f.z.string().optional(),image:f.z.string().optional()})).optional(),multi_select:f.z.boolean().optional()}).optional()}),LX=PX.extend({type:f.z.literal(`CHOICE`),config:f.z.object({options:f.z.array(f.z.object({value:f.z.string(),label:f.z.string()})).optional(),display:f.z.enum([`radio`,`checkbox`]).optional(),multiple:f.z.boolean().optional(),default_value:f.z.union([f.z.string(),f.z.array(f.z.string())]).optional()}).optional()}),RX=PX.extend({type:f.z.literal(`CODE`),config:f.z.object({length:f.z.number().int().positive().max(100).optional(),mode:f.z.enum([`numeric`,`alphanumeric`]).optional(),auto_submit:f.z.boolean().optional(),group_size:f.z.number().int().min(0).max(100).optional(),separator:f.z.string().optional(),placeholder:f.z.string().optional(),default_value:f.z.string().optional()}).refine(e=>e.group_size===void 0||e.length===void 0||e.group_size<=e.length,{message:`group_size cannot exceed length`,path:[`group_size`]}).refine(e=>e.default_value===void 0||e.length===void 0||e.default_value.length<=e.length,{message:`default_value is longer than the configured length`,path:[`default_value`]}).optional()}),zX=PX.extend({type:f.z.literal(`CUSTOM`),config:f.z.object({component:f.z.string().optional(),props:f.z.record(f.z.string(),f.z.any()).optional(),schema:f.z.record(f.z.string(),f.z.any()).optional(),code:f.z.string().optional()})}),BX=PX.extend({type:f.z.literal(`DATE`),config:f.z.object({format:f.z.string().optional(),min:f.z.string().optional(),max:f.z.string().optional(),default_value:f.z.string().optional()}).optional()}),VX=PX.extend({type:f.z.literal(`DROPDOWN`),config:f.z.object({options:f.z.array(f.z.object({value:f.z.string(),label:f.z.string()})).optional(),placeholder:f.z.string().optional(),searchable:f.z.boolean().optional(),multiple:f.z.boolean().optional(),default_value:f.z.union([f.z.string(),f.z.array(f.z.string())]).optional()}).optional()}),HX=PX.extend({type:f.z.literal(`EMAIL`),config:f.z.object({placeholder:f.z.string().optional(),default_value:f.z.string().optional(),last_used:f.z.boolean().optional(),last_used_label:f.z.string().optional()}).optional()}),UX=PX.extend({type:f.z.literal(`FILE`),config:f.z.object({accept:f.z.string().optional(),max_size:f.z.number().optional(),multiple:f.z.boolean().optional()}).optional()}),WX=PX.extend({type:f.z.literal(`LEGAL`),config:f.z.object({text:f.z.string(),html:f.z.boolean().optional()}).optional()}),GX=PX.extend({type:f.z.literal(`NUMBER`),config:f.z.object({placeholder:f.z.string().optional(),min:f.z.number().optional(),max:f.z.number().optional(),step:f.z.number().optional(),default_value:f.z.string().optional()}).optional()}),KX=PX.extend({type:f.z.literal(`PASSWORD`),config:f.z.object({placeholder:f.z.string().optional(),min_length:f.z.number().optional(),show_toggle:f.z.boolean().optional(),forgot_password_link:f.z.string().optional(),default_value:f.z.string().optional()}).optional()}),qX=PX.extend({type:f.z.literal(`PAYMENT`),config:f.z.object({provider:f.z.string().optional(),currency:f.z.string().optional()}).optional()}),JX=PX.extend({type:f.z.literal(`SOCIAL`),config:f.z.object({providers:f.z.array(f.z.string()).optional(),provider_details:f.z.array(f.z.object({name:f.z.string(),strategy:f.z.string().optional(),display_name:f.z.string().optional(),short_name:f.z.string().optional(),icon_url:f.z.string().optional(),href:f.z.string().optional(),last_used:f.z.boolean().optional(),last_used_label:f.z.string().optional()})).optional()}).optional()}),YX=PX.extend({type:f.z.literal(`TEL`),config:f.z.object({placeholder:f.z.string().optional(),default_country:f.z.string().optional(),default_value:f.z.string().optional(),allow_email:f.z.boolean().optional()}).optional()}),XX=PX.extend({type:f.z.literal(`TEXT`),config:f.z.object({placeholder:f.z.string().optional(),multiline:f.z.boolean().optional(),max_length:f.z.number().optional(),default_value:f.z.string().optional(),last_used:f.z.boolean().optional(),last_used_label:f.z.string().optional()}).optional()}),ZX=PX.extend({type:f.z.literal(`COUNTRY`),config:f.z.object({placeholder:f.z.string().optional(),default_value:f.z.string().optional()}).optional()}),QX=PX.extend({type:f.z.literal(`URL`),config:f.z.object({placeholder:f.z.string().optional(),default_value:f.z.string().optional()}).optional()}),$X=f.z.discriminatedUnion(`type`,[SX,CX,wX,TX,EX,DX,OX,kX]),eZ=f.z.discriminatedUnion(`type`,[jX,MX,NX]),tZ=f.z.discriminatedUnion(`type`,[FX,IX,LX,RX,ZX,zX,BX,VX,HX,UX,WX,GX,KX,qX,JX,YX,XX,QX]),nZ=f.z.union([$X,eZ,tZ]);new Set([`BOOLEAN`,`CARDS`,`CHOICE`,`CODE`,`COUNTRY`,`DATE`,`DROPDOWN`,`EMAIL`,`LEGAL`,`NUMBER`,`PASSWORD`,`TEL`,`TEXT`,`URL`]),f.z.object({id:f.z.string(),type:f.z.literal(`submit`),label:f.z.string(),className:f.z.string().optional(),disabled:f.z.boolean().optional().default(!1),order:f.z.number().optional(),visible:f.z.boolean().optional().default(!0),customizations:f.z.record(f.z.string(),f.z.any()).optional()});var rZ=f.z.object({x:f.z.number(),y:f.z.number()}),iZ=f.z.object({id:f.z.string(),type:f.z.literal(`FLOW`),coordinates:rZ,alias:f.z.string().min(1).max(150).optional(),config:f.z.object({flow_id:f.z.string().max(30),next_node:f.z.string().optional()})}),aZ=f.z.object({id:f.z.string(),type:f.z.literal(`ROUTER`),coordinates:rZ,alias:f.z.string().min(1).max(150),config:f.z.object({rules:f.z.array(f.z.object({id:f.z.string(),alias:f.z.string().min(1).max(150).optional(),condition:f.z.any(),next_node:f.z.string()})),fallback:f.z.string()})}),oZ=f.z.object({id:f.z.string(),type:f.z.literal(`STEP`),coordinates:rZ,alias:f.z.string().min(1).max(150).optional(),config:f.z.object({components:f.z.array(nZ),next_node:f.z.string().optional()})}),sZ=f.z.discriminatedUnion(`type`,[iZ,aZ,oZ]),cZ=f.z.object({name:f.z.string().openapi({description:`The name of the form`}),messages:f.z.object({errors:f.z.record(f.z.string(),f.z.any()).optional(),custom:f.z.record(f.z.string(),f.z.any()).optional()}).optional(),languages:f.z.object({primary:f.z.string().optional(),default:f.z.string().optional()}).optional(),translations:f.z.record(f.z.string(),f.z.any()).optional(),nodes:f.z.array(sZ).optional(),start:f.z.object({hidden_fields:f.z.array(f.z.object({key:f.z.string(),value:f.z.string()})).optional(),next_node:f.z.string().optional(),coordinates:rZ.optional()}).optional(),ending:f.z.object({redirection:f.z.object({delay:f.z.number().optional(),target:f.z.string().optional()}).optional(),after_submit:f.z.object({flow_id:f.z.string().optional()}).optional(),coordinates:rZ.optional(),resume_flow:f.z.boolean().optional()}).optional(),style:f.z.object({css:f.z.string().optional()}).optional(),links:f.z.object({sdkSrc:f.z.string().optional(),sdk_src:f.z.string().optional()}).optional()}).openapi({description:`Schema for flow-based forms (matches Auth0 Forms structure)`});sY.extend(cZ.shape).extend({id:f.z.string()});var lZ=f.z.object({id:f.z.number().optional(),text:f.z.string(),type:f.z.enum([`info`,`error`,`success`,`warning`])}),uZ=f.z.object({id:f.z.string().optional(),text:f.z.string(),href:f.z.string(),linkText:f.z.string().optional()});f.z.object({name:f.z.string().optional(),action:f.z.string(),method:f.z.enum([`POST`,`GET`]),title:f.z.string().optional(),description:f.z.string().optional(),components:f.z.array(nZ),messages:f.z.array(lZ).optional(),links:f.z.array(uZ).optional(),footer:f.z.string().optional()});var dZ=f.z.enum([`pre-user-registration`,`post-user-registration`,`post-user-login`,`post-user-update`,`validate-registration-username`,`pre-user-deletion`,`post-user-deletion`]),fZ=f.z.enum([`post-user-login`]),pZ=f.z.enum([`post-user-login`,`post-user-registration`,`post-user-update`,`credentials-exchange`]),mZ=f.z.enum([`post-user-login`,`credentials-exchange`,`pre-user-registration`,`post-user-registration`]),hZ=f.z.enum([`post-user-login`]);dZ.options,fZ.options,pZ.options,mZ.options,hZ.options;var gZ=f.z.enum([`impersonate`]),_Z=f.z.enum([`ensure-username`,`set-preferred-username`,`account-linking`]),vZ={enabled:f.z.boolean().default(!1),synchronous:f.z.boolean().default(!1),priority:f.z.number().optional(),hook_id:f.z.string().optional(),metadata:f.z.record(f.z.string(),f.z.unknown()).optional()},Wfe=f.z.object({...vZ,trigger_id:dZ,url:f.z.string()}),Gfe=f.z.object({...vZ,trigger_id:fZ,form_id:f.z.string()}),Kfe=f.z.object({...vZ,trigger_id:pZ,template_id:_Z}),qfe=f.z.object({...vZ,trigger_id:mZ,code_id:f.z.string()}),Jfe=f.z.object({...vZ,trigger_id:hZ,page_id:gZ,permission_required:f.z.string().optional()});f.z.union([Wfe,Gfe,Kfe,qfe,Jfe]);var Yfe=f.z.object({...vZ,trigger_id:dZ}).extend(sY.shape).extend({hook_id:f.z.string(),url:f.z.string()}),Xfe=f.z.object({...vZ,trigger_id:fZ}).extend(sY.shape).extend({hook_id:f.z.string(),form_id:f.z.string()}),Zfe=f.z.object({...vZ,trigger_id:pZ}).extend(sY.shape).extend({hook_id:f.z.string(),template_id:_Z}),Qfe=f.z.object({...vZ,trigger_id:mZ}).extend(sY.shape).extend({hook_id:f.z.string(),code_id:f.z.string()}),$fe=f.z.object({...vZ,trigger_id:hZ}).extend(sY.shape).extend({hook_id:f.z.string(),page_id:gZ,permission_required:f.z.string().optional()});f.z.union([Yfe,Xfe,Zfe,Qfe,$fe]),f.z.object({code:f.z.string().max(1e5),secrets:f.z.record(f.z.string(),f.z.string()).optional()}).extend({id:f.z.string(),tenant_id:f.z.string()}).extend(sY.shape);var epe=f.z.object({name:f.z.string().optional()}),tpe=f.z.object({email:f.z.string().optional()}),npe=f.z.object({id:f.z.string().optional(),organization_id:f.z.string().max(50),inviter:epe,invitee:tpe,invitation_url:f.z.string().url(),client_id:f.z.string(),connection_id:f.z.string().optional(),app_metadata:f.z.record(f.z.string(),f.z.any()).default({}).optional(),user_metadata:f.z.record(f.z.string(),f.z.any()).default({}).optional(),ttl_sec:f.z.number().int().max(2592e3).default(604800).optional(),roles:f.z.array(f.z.string()).default([]).optional(),send_invitation_email:f.z.boolean().default(!0).optional()});f.z.object({id:f.z.string(),organization_id:f.z.string().max(50),created_at:f.z.string().datetime(),expires_at:f.z.string().datetime(),ticket_id:f.z.string().optional()}).extend(npe.omit({id:!0}).shape);var rpe=f.z.object({alg:f.z.enum([`RS256`,`RS384`,`RS512`,`ES256`,`ES384`,`ES512`,`HS256`,`HS384`,`HS512`]).optional(),kid:f.z.string().optional(),kty:f.z.enum([`RSA`,`EC`,`oct`]),use:f.z.enum([`sig`,`enc`]).optional(),n:f.z.string().optional(),e:f.z.string().optional(),crv:f.z.string().optional(),x:f.z.string().optional(),y:f.z.string().optional(),x5t:f.z.string().optional(),"x5t#S256":f.z.string().optional(),x5c:f.z.array(f.z.string()).optional()}).superRefine((e,t)=>{if(e.kty===`RSA`)for(let n of[`n`,`e`])e[n]||t.addIssue({code:f.z.ZodIssueCode.custom,path:[n],message:`RSA JWK is missing required member '${n}'`});else if(e.kty===`EC`)for(let n of[`crv`,`x`,`y`])e[n]||t.addIssue({code:f.z.ZodIssueCode.custom,path:[n],message:`EC JWK is missing required member '${n}'`})}),ipe=f.z.object({keys:f.z.array(rpe)});f.z.object({issuer:f.z.string(),authorization_endpoint:f.z.string(),token_endpoint:f.z.string(),userinfo_endpoint:f.z.string(),jwks_uri:f.z.string(),registration_endpoint:f.z.string().optional(),revocation_endpoint:f.z.string(),end_session_endpoint:f.z.string().optional(),scopes_supported:f.z.array(f.z.string()),response_types_supported:f.z.array(f.z.string()),grant_types_supported:f.z.array(f.z.string()).optional(),code_challenge_methods_supported:f.z.array(f.z.string()),response_modes_supported:f.z.array(f.z.string()),subject_types_supported:f.z.array(f.z.string()),id_token_signing_alg_values_supported:f.z.array(f.z.string()),token_endpoint_auth_methods_supported:f.z.array(f.z.string()),claims_supported:f.z.array(f.z.string()),request_uri_parameter_supported:f.z.boolean(),request_parameter_supported:f.z.boolean(),claims_parameter_supported:f.z.boolean().optional(),request_object_signing_alg_values_supported:f.z.array(f.z.string()).optional(),token_endpoint_auth_signing_alg_values_supported:f.z.array(f.z.string()),client_id_metadata_document_supported:f.z.boolean().optional(),backchannel_logout_supported:f.z.boolean().optional(),backchannel_logout_session_supported:f.z.boolean().optional()});var ape=function(e){return e.PENDING=`pending`,e.AUTHENTICATED=`authenticated`,e.AWAITING_EMAIL_VERIFICATION=`awaiting_email_verification`,e.AWAITING_MFA=`awaiting_mfa`,e.AWAITING_HOOK=`awaiting_hook`,e.AWAITING_CONTINUATION=`awaiting_continuation`,e.AWAITING_CONSENT=`awaiting_consent`,e.COMPLETED=`completed`,e.FAILED=`failed`,e.EXPIRED=`expired`,e}({}),ope=f.z.nativeEnum(ape),yZ=f.z.object({strategy:f.z.string(),strategy_type:f.z.string()});f.z.object({csrf_token:f.z.string(),auth0Client:f.z.string().optional(),authParams:fX,expires_at:f.z.string(),deleted_at:f.z.string().optional(),ip:f.z.string().optional(),useragent:f.z.string().optional(),session_id:f.z.string().optional(),authorization_url:f.z.string().optional(),state:ope.optional().default(`pending`),state_data:f.z.string().optional(),failure_reason:f.z.string().optional(),user_id:f.z.string().optional(),auth_connection:f.z.string().optional(),auth_strategy:yZ.optional(),authenticated_at:f.z.string().optional()}).openapi({description:`This represents a login sesion`}).extend({id:f.z.string().openapi({description:`This is is used as the state in the universal login`}),created_at:f.z.string(),updated_at:f.z.string()});var $={ACLS_SUMMARY:`acls_summary`,ACTIONS_EXECUTION_FAILED:`actions_execution_failed`,API_LIMIT:`api_limit`,API_LIMIT_WARNING:`api_limit_warning`,APPI:`appi`,CIBA_EXCHANGE_FAILED:`ciba_exchange_failed`,CIBA_EXCHANGE_SUCCEEDED:`ciba_exchange_succeeded`,CIBA_START_FAILED:`ciba_start_failed`,CIBA_START_SUCCEEDED:`ciba_start_succeeded`,CODE_LINK_SENT:`cls`,CODE_SENT:`cs`,DEPRECATION_NOTICE:`depnote`,FAILED_LOGIN:`f`,FAILED_BY_CONNECTOR:`fc`,FAILED_CHANGE_EMAIL:`fce`,FAILED_BY_CORS:`fco`,FAILED_CROSS_ORIGIN_AUTHENTICATION:`fcoa`,FAILED_CHANGE_PASSWORD:`fcp`,FAILED_POST_CHANGE_PASSWORD_HOOK:`fcph`,FAILED_CHANGE_PHONE_NUMBER:`fcpn`,FAILED_CHANGE_PASSWORD_REQUEST:`fcpr`,FAILED_CONNECTOR_PROVISIONING:`fcpro`,FAILED_CHANGE_USERNAME:`fcu`,FAILED_DELEGATION:`fd`,FAILED_DEVICE_ACTIVATION:`fdeac`,FAILED_DEVICE_AUTHORIZATION_REQUEST:`fdeaz`,USER_CANCELED_DEVICE_CONFIRMATION:`fdecc`,FAILED_USER_DELETION:`fdu`,FAILED_EXCHANGE_AUTHORIZATION_CODE_FOR_ACCESS_TOKEN:`feacft`,FAILED_EXCHANGE_ACCESS_TOKEN_FOR_CLIENT_CREDENTIALS:`feccft`,FAILED_EXCHANGE_CUSTOM_TOKEN:`fecte`,FAILED_EXCHANGE_DEVICE_CODE_FOR_ACCESS_TOKEN:`fede`,FAILED_FEDERATED_LOGOUT:`federated_logout_failed`,FAILED_EXCHANGE_NATIVE_SOCIAL_LOGIN:`fens`,FAILED_EXCHANGE_PASSWORD_OOB_FOR_ACCESS_TOKEN:`feoobft`,FAILED_EXCHANGE_PASSWORD_OTP_FOR_ACCESS_TOKEN:`feotpft`,FAILED_EXCHANGE_PASSWORD_FOR_ACCESS_TOKEN:`fepft`,FAILED_EXCHANGE_PASSWORDLESS_OTP_FOR_ACCESS_TOKEN:`fepotpft`,FAILED_EXCHANGE_PASSWORD_MFA_RECOVERY_FOR_ACCESS_TOKEN:`fercft`,FAILED_EXCHANGE_ROTATING_REFRESH_TOKEN:`ferrt`,FAILED_EXCHANGE_REFRESH_TOKEN_FOR_ACCESS_TOKEN:`fertft`,FAILED_EXCHANGE_SUBJECT_TOKEN_FOR_ACCESS_TOKEN:`festft`,FAILED_HOOK:`fh`,FAILED_IMPERSONATION:`fimp`,FAILED_INVITE_ACCEPT:`fi`,FAILED_LOGOUT:`flo`,FLOWS_EXECUTION_COMPLETED:`flows_execution_completed`,FLOWS_EXECUTION_FAILED:`flows_execution_failed`,FAILED_SENDING_NOTIFICATION:`fn`,FORMS_SUBMISSION_FAILED:`forms_submission_failed`,FORMS_SUBMISSION_SUCCEEDED:`forms_submission_succeeded`,FAILED_LOGIN_INCORRECT_PASSWORD:`fp`,FAILED_PUSHED_AUTHORIZATION_REQUEST:`fpar`,FAILED_POST_USER_REGISTRATION_HOOK:`fpurh`,FAILED_SIGNUP:`fs`,FAILED_SILENT_AUTH:`fsa`,FAILED_LOGIN_INVALID_EMAIL_USERNAME:`fu`,FAILED_USERS_IMPORT:`fui`,FAILED_VERIFICATION_EMAIL:`fv`,FAILED_VERIFICATION_EMAIL_REQUEST:`fvr`,EMAIL_VERIFICATION_CONFIRMED:`gd_auth_email_verification`,EMAIL_VERIFICATION_FAILED:`gd_auth_fail_email_verification`,MFA_AUTH_FAILED:`gd_auth_failed`,MFA_AUTH_REJECTED:`gd_auth_rejected`,MFA_AUTH_SUCCESS:`gd_auth_succeed`,MFA_ENROLLMENT_COMPLETE:`gd_enrollment_complete`,TOO_MANY_MFA_FAILURES:`gd_otp_rate_limit_exceed`,MFA_RECOVERY_FAILED:`gd_recovery_failed`,MFA_RECOVERY_RATE_LIMIT_EXCEED:`gd_recovery_rate_limit_exceed`,MFA_RECOVERY_SUCCESS:`gd_recovery_succeed`,MFA_EMAIL_SENT:`gd_send_email`,EMAIL_VERIFICATION_SENT:`gd_send_email_verification`,EMAIL_VERIFICATION_SEND_FAILURE:`gd_send_email_verification_failure`,PUSH_NOTIFICATION_SENT:`gd_send_pn`,ERROR_SENDING_MFA_PUSH_NOTIFICATION:`gd_send_pn_failure`,MFA_SMS_SENT:`gd_send_sms`,ERROR_SENDING_MFA_SMS:`gd_send_sms_failure`,MFA_VOICE_CALL_SUCCESS:`gd_send_voice`,MFA_VOICE_CALL_FAILED:`gd_send_voice_failure`,SECOND_FACTOR_STARTED:`gd_start_auth`,MFA_ENROLL_STARTED:`gd_start_enroll`,MFA_ENROLLMENT_FAILED:`gd_start_enroll_failed`,GUARDIAN_TENANT_UPDATE:`gd_tenant_update`,UNENROLL_DEVICE_ACCOUNT:`gd_unenroll`,UPDATE_DEVICE_ACCOUNT:`gd_update_device_account`,WEBAUTHN_CHALLENGE_FAILED:`gd_webauthn_challenge_failed`,WEBAUTHN_ENROLLMENT_FAILED:`gd_webauthn_enrollment_failed`,FAILED_KMS_API_OPERATION:`kms_key_management_failure`,SUCCESS_KMS_API_OPERATION:`kms_key_management_success`,KMS_KEY_STATE_CHANGED:`kms_key_state_changed`,TOO_MANY_CALLS_TO_DELEGATION:`limit_delegation`,BLOCKED_IP_ADDRESS:`limit_mu`,BLOCKED_ACCOUNT_IP:`limit_sul`,BLOCKED_ACCOUNT_EMAIL:`limit_wc`,INFORMATION:`i`,MFA_REQUIRED:`mfar`,MANAGEMENT_API_READ_OPERATION:`mgmt_api_read`,FAILED_AUTHENTICATION_METHOD_OPERATION_MY_ACCOUNT:`my_account_authentication_method_failed`,SUCCESSFUL_AUTHENTICATION_METHOD_OPERATION_MY_ACCOUNT:`my_account_authentication_method_succeeded`,FAILED_OIDC_BACKCHANNEL_LOGOUT:`oidc_backchannel_logout_failed`,SUCCESSFUL_OIDC_BACKCHANNEL_LOGOUT:`oidc_backchannel_logout_succeeded`,ORGANIZATION_MEMBER_ADDED:`organization_member_added`,PASSKEY_CHALLENGE_FAILED:`passkey_challenge_failed`,PASSKEY_CHALLENGE_STARTED:`passkey_challenge_started`,PRE_LOGIN_ASSESSMENT:`pla`,BREACHED_PASSWORD:`pwd_leak`,BREACHED_PASSWORD_ON_RESET:`reset_pwd_leak`,SUCCESS_RESOURCE_CLEANUP:`resource_cleanup`,RICH_CONSENTS_ACCESS_ERROR:`rich_consents_access_error`,SUCCESS_LOGIN:`s`,SUCCESS_API_OPERATION:`sapi`,FAILED_API_OPERATION:`fapi`,SUCCESS_CHANGE_EMAIL:`sce`,SUCCESS_CROSS_ORIGIN_AUTHENTICATION:`scoa`,SUCCESS_CHANGE_PASSWORD:`scp`,SUCCESS_CHANGE_PHONE_NUMBER:`scpn`,SUCCESS_CHANGE_PASSWORD_REQUEST:`scpr`,SUCCESS_CHANGE_USERNAME:`scu`,SUCCESS_CREDENTIAL_VALIDATION:`scv`,SUCCESS_DELEGATION:`sd`,SUCCESS_USER_DELETION:`sdu`,SUCCESS_EXCHANGE_AUTHORIZATION_CODE_FOR_ACCESS_TOKEN:`seacft`,SUCCESS_EXCHANGE_ACCESS_TOKEN_FOR_CLIENT_CREDENTIALS:`seccft`,SUCCESS_EXCHANGE_CUSTOM_TOKEN:`secte`,SUCCESS_EXCHANGE_DEVICE_CODE_FOR_ACCESS_TOKEN:`sede`,SUCCESS_EXCHANGE_NATIVE_SOCIAL_LOGIN:`sens`,SUCCESS_EXCHANGE_PASSWORD_OOB_FOR_ACCESS_TOKEN:`seoobft`,SUCCESS_EXCHANGE_PASSWORD_OTP_FOR_ACCESS_TOKEN:`seotpft`,SUCCESS_EXCHANGE_PASSWORDLESS_OTP_FOR_ACCESS_TOKEN:`sepotpft`,SUCCESS_EXCHANGE_PASSWORD_FOR_ACCESS_TOKEN:`sepft`,SUCCESS_EXCHANGE_PASSKEY_OOB_FOR_ACCESS_TOKEN:`sepkoobft`,SUCCESS_EXCHANGE_PASSKEY_OTP_FOR_ACCESS_TOKEN:`sepkotpft`,SUCCESS_EXCHANGE_PASSKEY_MFA_RECOVERY_FOR_ACCESS_TOKEN:`sepkrcft`,SUCCESS_EXCHANGE_PASSWORD_MFA_RECOVERY_FOR_ACCESS_TOKEN:`sercft`,SUCCESS_EXCHANGE_REFRESH_TOKEN_FOR_ACCESS_TOKEN:`sertft`,SUCCESS_EXCHANGE_SUBJECT_TOKEN_FOR_ACCESS_TOKEN:`sestft`,SUCCESS_IMPERSONATION:`simp`,SUCCESSFULLY_ACCEPTED_USER_INVITE:`si`,BREACHED_PASSWORD_ON_SIGNUP:`signup_pwd_leak`,SUCCESS_LOGOUT:`slo`,SUCCESS_HOOK:`sh`,SUCCESS_PASSWORD_MIGRATION:`spm`,SUCCESS_REVOCATION:`srrt`,SUCCESS_SIGNUP:`ss`,FAILED_SS_SSO_OPERATION:`ss_sso_failure`,INFORMATION_FROM_SS_SSO_OPERATION:`ss_sso_info`,SUCCESS_SS_SSO_OPERATION:`ss_sso_success`,SUCCESS_SILENT_AUTH:`ssa`,SUCCESSFUL_SCIM_OPERATION:`sscim`,SUCCESSFULLY_IMPORTED_USERS:`sui`,SUCCESS_VERIFICATION_EMAIL:`sv`,SUCCESS_VERIFICATION_EMAIL_REQUEST:`svr`,MAX_AMOUNT_OF_AUTHENTICATORS:`too_many_records`,USER_LOGIN_BLOCK_RELEASED:`ublkdu`,FAILED_UNIVERSAL_LOGOUT:`universal_logout_failed`,SUCCESSFUL_UNIVERSAL_LOGOUT:`universal_logout_succeeded`,WARNING_DURING_LOGIN:`w`,WARNING_SENDING_NOTIFICATION:`wn`,WARNING_USER_MANAGEMENT:`wum`},spe=f.z.string().refine(e=>Object.values($).includes(e),{message:`Invalid log type`});$.ACLS_SUMMARY,$.ACTIONS_EXECUTION_FAILED,$.API_LIMIT,$.API_LIMIT_WARNING,$.APPI,$.CIBA_EXCHANGE_FAILED,$.CIBA_EXCHANGE_SUCCEEDED,$.CIBA_START_FAILED,$.CIBA_START_SUCCEEDED,$.CODE_LINK_SENT,$.CODE_SENT,$.DEPRECATION_NOTICE,$.FAILED_LOGIN,$.FAILED_BY_CONNECTOR,$.FAILED_CHANGE_EMAIL,$.FAILED_BY_CORS,$.FAILED_CROSS_ORIGIN_AUTHENTICATION,$.FAILED_CHANGE_PASSWORD,$.FAILED_POST_CHANGE_PASSWORD_HOOK,$.FAILED_CHANGE_PHONE_NUMBER,$.FAILED_CHANGE_PASSWORD_REQUEST,$.FAILED_CONNECTOR_PROVISIONING,$.FAILED_CHANGE_USERNAME,$.FAILED_DELEGATION,$.FAILED_DEVICE_ACTIVATION,$.FAILED_DEVICE_AUTHORIZATION_REQUEST,$.USER_CANCELED_DEVICE_CONFIRMATION,$.FAILED_USER_DELETION,$.FAILED_EXCHANGE_AUTHORIZATION_CODE_FOR_ACCESS_TOKEN,$.FAILED_EXCHANGE_ACCESS_TOKEN_FOR_CLIENT_CREDENTIALS,$.FAILED_EXCHANGE_CUSTOM_TOKEN,$.FAILED_EXCHANGE_DEVICE_CODE_FOR_ACCESS_TOKEN,$.FAILED_FEDERATED_LOGOUT,$.FAILED_EXCHANGE_NATIVE_SOCIAL_LOGIN,$.FAILED_EXCHANGE_PASSWORD_OOB_FOR_ACCESS_TOKEN,$.FAILED_EXCHANGE_PASSWORD_OTP_FOR_ACCESS_TOKEN,$.FAILED_EXCHANGE_PASSWORD_FOR_ACCESS_TOKEN,$.FAILED_EXCHANGE_PASSWORDLESS_OTP_FOR_ACCESS_TOKEN,$.FAILED_EXCHANGE_PASSWORD_MFA_RECOVERY_FOR_ACCESS_TOKEN,$.FAILED_EXCHANGE_ROTATING_REFRESH_TOKEN,$.FAILED_EXCHANGE_REFRESH_TOKEN_FOR_ACCESS_TOKEN,$.FAILED_EXCHANGE_SUBJECT_TOKEN_FOR_ACCESS_TOKEN,$.FAILED_HOOK,$.FAILED_IMPERSONATION,$.FAILED_INVITE_ACCEPT,$.FAILED_LOGOUT,$.FLOWS_EXECUTION_COMPLETED,$.FLOWS_EXECUTION_FAILED,$.FAILED_SENDING_NOTIFICATION,$.FORMS_SUBMISSION_FAILED,$.FORMS_SUBMISSION_SUCCEEDED,$.FAILED_LOGIN_INCORRECT_PASSWORD,$.FAILED_PUSHED_AUTHORIZATION_REQUEST,$.FAILED_POST_USER_REGISTRATION_HOOK,$.FAILED_SIGNUP,$.FAILED_SILENT_AUTH,$.FAILED_LOGIN_INVALID_EMAIL_USERNAME,$.FAILED_USERS_IMPORT,$.FAILED_VERIFICATION_EMAIL,$.FAILED_VERIFICATION_EMAIL_REQUEST,$.EMAIL_VERIFICATION_CONFIRMED,$.EMAIL_VERIFICATION_FAILED,$.MFA_AUTH_FAILED,$.MFA_AUTH_REJECTED,$.MFA_AUTH_SUCCESS,$.MFA_ENROLLMENT_COMPLETE,$.TOO_MANY_MFA_FAILURES,$.MFA_RECOVERY_FAILED,$.MFA_RECOVERY_RATE_LIMIT_EXCEED,$.MFA_RECOVERY_SUCCESS,$.MFA_EMAIL_SENT,$.EMAIL_VERIFICATION_SENT,$.EMAIL_VERIFICATION_SEND_FAILURE,$.PUSH_NOTIFICATION_SENT,$.ERROR_SENDING_MFA_PUSH_NOTIFICATION,$.MFA_SMS_SENT,$.ERROR_SENDING_MFA_SMS,$.MFA_VOICE_CALL_SUCCESS,$.MFA_VOICE_CALL_FAILED,$.SECOND_FACTOR_STARTED,$.MFA_ENROLL_STARTED,$.MFA_ENROLLMENT_FAILED,$.GUARDIAN_TENANT_UPDATE,$.UNENROLL_DEVICE_ACCOUNT,$.UPDATE_DEVICE_ACCOUNT,$.WEBAUTHN_CHALLENGE_FAILED,$.WEBAUTHN_ENROLLMENT_FAILED,$.FAILED_KMS_API_OPERATION,$.SUCCESS_KMS_API_OPERATION,$.KMS_KEY_STATE_CHANGED,$.TOO_MANY_CALLS_TO_DELEGATION,$.BLOCKED_IP_ADDRESS,$.BLOCKED_ACCOUNT_IP,$.BLOCKED_ACCOUNT_EMAIL,$.INFORMATION,$.MFA_REQUIRED,$.MANAGEMENT_API_READ_OPERATION,$.FAILED_AUTHENTICATION_METHOD_OPERATION_MY_ACCOUNT,$.SUCCESSFUL_AUTHENTICATION_METHOD_OPERATION_MY_ACCOUNT,$.FAILED_OIDC_BACKCHANNEL_LOGOUT,$.SUCCESSFUL_OIDC_BACKCHANNEL_LOGOUT,$.ORGANIZATION_MEMBER_ADDED,$.PASSKEY_CHALLENGE_FAILED,$.PASSKEY_CHALLENGE_STARTED,$.PRE_LOGIN_ASSESSMENT,$.BREACHED_PASSWORD,$.BREACHED_PASSWORD_ON_RESET,$.SUCCESS_RESOURCE_CLEANUP,$.RICH_CONSENTS_ACCESS_ERROR,$.SUCCESS_LOGIN,$.SUCCESS_API_OPERATION,$.FAILED_API_OPERATION,$.SUCCESS_CHANGE_EMAIL,$.SUCCESS_CROSS_ORIGIN_AUTHENTICATION,$.SUCCESS_CHANGE_PASSWORD,$.SUCCESS_CHANGE_PHONE_NUMBER,$.SUCCESS_CHANGE_PASSWORD_REQUEST,$.SUCCESS_CHANGE_USERNAME,$.SUCCESS_CREDENTIAL_VALIDATION,$.SUCCESS_DELEGATION,$.SUCCESS_USER_DELETION,$.SUCCESS_EXCHANGE_AUTHORIZATION_CODE_FOR_ACCESS_TOKEN,$.SUCCESS_EXCHANGE_ACCESS_TOKEN_FOR_CLIENT_CREDENTIALS,$.SUCCESS_EXCHANGE_CUSTOM_TOKEN,$.SUCCESS_EXCHANGE_DEVICE_CODE_FOR_ACCESS_TOKEN,$.SUCCESS_EXCHANGE_NATIVE_SOCIAL_LOGIN,$.SUCCESS_EXCHANGE_PASSWORD_OOB_FOR_ACCESS_TOKEN,$.SUCCESS_EXCHANGE_PASSWORD_OTP_FOR_ACCESS_TOKEN,$.SUCCESS_EXCHANGE_PASSWORDLESS_OTP_FOR_ACCESS_TOKEN,$.SUCCESS_EXCHANGE_PASSWORD_FOR_ACCESS_TOKEN,$.SUCCESS_EXCHANGE_PASSKEY_OOB_FOR_ACCESS_TOKEN,$.SUCCESS_EXCHANGE_PASSKEY_OTP_FOR_ACCESS_TOKEN,$.SUCCESS_EXCHANGE_PASSKEY_MFA_RECOVERY_FOR_ACCESS_TOKEN,$.SUCCESS_EXCHANGE_PASSWORD_MFA_RECOVERY_FOR_ACCESS_TOKEN,$.SUCCESS_EXCHANGE_REFRESH_TOKEN_FOR_ACCESS_TOKEN,$.SUCCESS_EXCHANGE_SUBJECT_TOKEN_FOR_ACCESS_TOKEN,$.SUCCESS_IMPERSONATION,$.SUCCESSFULLY_ACCEPTED_USER_INVITE,$.BREACHED_PASSWORD_ON_SIGNUP,$.SUCCESS_LOGOUT,$.SUCCESS_HOOK,$.SUCCESS_PASSWORD_MIGRATION,$.SUCCESS_REVOCATION,$.SUCCESS_SIGNUP,$.FAILED_SS_SSO_OPERATION,$.INFORMATION_FROM_SS_SSO_OPERATION,$.SUCCESS_SS_SSO_OPERATION,$.SUCCESS_SILENT_AUTH,$.SUCCESSFUL_SCIM_OPERATION,$.SUCCESSFULLY_IMPORTED_USERS,$.SUCCESS_VERIFICATION_EMAIL,$.SUCCESS_VERIFICATION_EMAIL_REQUEST,$.MAX_AMOUNT_OF_AUTHENTICATORS,$.USER_LOGIN_BLOCK_RELEASED,$.FAILED_UNIVERSAL_LOGOUT,$.SUCCESSFUL_UNIVERSAL_LOGOUT,$.WARNING_DURING_LOGIN,$.WARNING_SENDING_NOTIFICATION,$.WARNING_USER_MANAGEMENT,(()=>{let e={};for(let[t,n]of Object.entries($))t.startsWith(`SUCCESS_`)||t.startsWith(`SUCCESSFUL_`)||t.startsWith(`SUCCESSFULLY_`)||t.endsWith(`_SUCCEEDED`)||t.endsWith(`_COMPLETED`)?e[n]=`success`:t.startsWith(`FAILED_`)||t.startsWith(`ERROR_`)||t.startsWith(`BREACHED_`)||t.startsWith(`BLOCKED_`)||t===`MFA_AUTH_FAILED`||t===`MFA_AUTH_REJECTED`||t===`MFA_RECOVERY_FAILED`||t===`MFA_ENROLLMENT_FAILED`||t===`EMAIL_VERIFICATION_FAILED`||t===`WEBAUTHN_CHALLENGE_FAILED`||t===`WEBAUTHN_ENROLLMENT_FAILED`||t===`PASSKEY_CHALLENGE_FAILED`||t===`FLOWS_EXECUTION_FAILED`||t===`FORMS_SUBMISSION_FAILED`||t===`CIBA_EXCHANGE_FAILED`||t===`CIBA_START_FAILED`||t===`ACTIONS_EXECUTION_FAILED`||t===`RICH_CONSENTS_ACCESS_ERROR`||t===`USER_CANCELED_DEVICE_CONFIRMATION`||t===`TOO_MANY_MFA_FAILURES`||t===`MFA_RECOVERY_RATE_LIMIT_EXCEED`||t===`API_LIMIT`||t===`MAX_AMOUNT_OF_AUTHENTICATORS`?e[n]=`failure`:t.startsWith(`WARNING_`)||t===`API_LIMIT_WARNING`||t===`DEPRECATION_NOTICE`||t===`PRE_LOGIN_ASSESSMENT`?e[n]=`warning`:t===`CODE_SENT`||t===`CODE_LINK_SENT`||t===`MFA_EMAIL_SENT`||t===`MFA_SMS_SENT`||t===`EMAIL_VERIFICATION_SENT`||t===`PUSH_NOTIFICATION_SENT`?e[n]=`code_sent`:t===`INFORMATION`||t===`INFORMATION_FROM_SS_SSO_OPERATION`||t===`MANAGEMENT_API_READ_OPERATION`||t===`APPI`||t===`ACLS_SUMMARY`||t===`ORGANIZATION_MEMBER_ADDED`?e[n]=`info`:e[n]=`other`;return e})();var cpe=f.z.object({name:f.z.string(),version:f.z.string(),env:f.z.object({node:f.z.string().optional()}).optional()}),lpe=f.z.object({country_code:f.z.string().length(2),city_name:f.z.string(),latitude:f.z.string(),longitude:f.z.string(),time_zone:f.z.string(),continent_code:f.z.string()});f.z.object({type:spe,date:f.z.string(),description:f.z.string().optional(),ip:f.z.string().optional(),user_agent:f.z.string().optional(),details:f.z.any().optional(),isMobile:f.z.boolean(),user_id:f.z.string().optional(),user_name:f.z.string().optional(),connection:f.z.string().optional(),connection_id:f.z.string().optional(),client_id:f.z.string().optional(),client_name:f.z.string().optional(),audience:f.z.string().optional(),scope:f.z.string().optional(),strategy:f.z.string().optional(),strategy_type:f.z.string().optional(),hostname:f.z.string().optional(),auth0_client:cpe.optional(),log_id:f.z.string().optional(),location_info:lpe.optional()}).extend({log_id:f.z.string()});var upe=f.z.enum([`http`,`eventbridge`,`eventgrid`,`splunk`,`datadog`,`sumo`]),bZ=f.z.enum([`active`,`paused`,`suspended`]),dpe=f.z.object({type:f.z.string(),name:f.z.string()});f.z.object({name:f.z.string(),type:upe,status:bZ.optional(),sink:f.z.record(f.z.string(),f.z.unknown()),filters:f.z.array(dpe).optional(),isPriority:f.z.boolean().optional()}).extend({id:f.z.string(),status:bZ,created_at:f.z.string().optional(),updated_at:f.z.string().optional()});var fpe=f.z.enum([`auth0`,`cognito`,`okta`,`oidc`]),ppe=f.z.object({domain:f.z.string(),client_id:f.z.string(),client_secret:f.z.string(),audience:f.z.string().optional(),scope:f.z.string().optional()}),mpe=f.z.object({id:f.z.string().optional(),name:f.z.string(),provider:fpe,connection:f.z.string(),enabled:f.z.boolean().default(!0),credentials:ppe});f.z.object({id:f.z.string(),created_at:f.z.string(),updated_at:f.z.string()}).extend(mpe.shape);var hpe=f.z.object({enabled:f.z.boolean().optional(),shields:f.z.array(f.z.string()).optional(),admin_notification_frequency:f.z.array(f.z.string()).optional(),method:f.z.string().optional(),stage:f.z.object({"pre-user-registration":f.z.object({shields:f.z.array(f.z.string()).optional()}).optional(),"pre-change-password":f.z.object({shields:f.z.array(f.z.string()).optional()}).optional()}).optional()}),gpe=f.z.object({enabled:f.z.boolean().optional(),shields:f.z.array(f.z.string()).optional(),allowlist:f.z.array(f.z.string()).optional(),mode:f.z.string().optional(),max_attempts:f.z.number().optional()}),_pe=f.z.object({enabled:f.z.boolean().optional(),shields:f.z.array(f.z.string()).optional(),allowlist:f.z.array(f.z.string()).optional(),stage:f.z.object({"pre-login":f.z.object({max_attempts:f.z.number().optional(),rate:f.z.number().optional()}).optional(),"pre-user-registration":f.z.object({max_attempts:f.z.number().optional(),rate:f.z.number().optional()}).optional()}).optional()}),vpe=f.z.object({breached_password_detection:hpe.optional(),brute_force_protection:gpe.optional(),suspicious_ip_throttling:_pe.optional()});f.z.object({id:f.z.string().optional(),user_id:f.z.string(),password:f.z.string(),algorithm:f.z.enum([`bcrypt`,`argon2id`]).default(`argon2id`),is_current:f.z.boolean().default(!0)}).extend({id:f.z.string(),created_at:f.z.string(),updated_at:f.z.string()});var xZ=f.z.object({initial_user_agent:f.z.string().describe(`First user agent of the device from which this user logged in`),initial_ip:f.z.string().describe(`First IP address associated with this session`),initial_asn:f.z.string().describe(`First autonomous system number associated with this session`),last_user_agent:f.z.string().describe(`Last user agent of the device from which this user logged in`),last_ip:f.z.string().describe(`Last IP address from which this user logged in`),last_asn:f.z.string().describe(`Last autonomous system number from which this user logged in`)}),ype=f.z.object({id:f.z.string(),revoked_at:f.z.string().optional(),used_at:f.z.string().optional(),user_id:f.z.string().describe(`The user ID associated with the session`),expires_at:f.z.string().optional(),login_session_id:f.z.string(),idle_expires_at:f.z.string().optional(),device:xZ.describe(`Metadata related to the device used in the session`),clients:f.z.array(f.z.string()).describe(`List of client details for the session`)});f.z.object({created_at:f.z.string(),updated_at:f.z.string(),authenticated_at:f.z.string(),last_interaction_at:f.z.string()}).extend(ype.shape),f.z.object({kid:f.z.string().openapi({description:`The key id of the signing key`}),tenant_id:f.z.string().optional().openapi({description:`The tenant the key belongs to. Omitted means the key is shared / control-plane scoped.`}),cert:f.z.string().openapi({description:`The public certificate of the signing key`}),fingerprint:f.z.string().openapi({description:`The cert fingerprint`}),thumbprint:f.z.string().openapi({description:`The cert thumbprint`}),pkcs7:f.z.string().optional().openapi({description:`The private key in pkcs7 format`}),current:f.z.boolean().optional().openapi({description:`True if the key is the current key`}),next:f.z.boolean().optional().openapi({description:`True if the key is the next key`}),previous:f.z.boolean().optional().openapi({description:`True if the key is the previous key`}),current_since:f.z.string().optional().openapi({description:`The date and time when the key became the current key`}),current_until:f.z.string().optional().openapi({description:`The date and time when the current key was rotated`}),revoked:f.z.boolean().optional().openapi({description:`True if the key is revoked`}),revoked_at:f.z.string().optional().openapi({description:`The date and time when the key was revoked`}),connection:f.z.string().optional().openapi({description:`The connection identifier associated with the key`}),type:f.z.enum([`jwt_signing`,`saml_encryption`]).openapi({description:`The type of the signing key`})});var bpe=f.z.object({id:f.z.string().optional(),audience:f.z.string().optional(),friendly_name:f.z.string(),picture_url:f.z.string().optional(),support_email:f.z.string().optional(),support_url:f.z.string().optional(),sender_email:f.z.string().email().optional(),sender_name:f.z.string().optional(),session_lifetime:f.z.number().optional(),idle_session_lifetime:f.z.number().optional(),ephemeral_session_lifetime:f.z.number().optional(),idle_ephemeral_session_lifetime:f.z.number().optional(),session_cookie:f.z.object({mode:f.z.enum([`persistent`,`non-persistent`]).optional()}).optional(),allowed_logout_urls:f.z.array(f.z.string()).optional(),default_redirection_uri:f.z.string().optional(),default_client_id:f.z.string().optional(),enabled_locales:f.z.array(f.z.string()).optional(),default_directory:f.z.string().optional(),error_page:f.z.object({html:f.z.string().optional(),show_log_link:f.z.boolean().optional(),url:f.z.string().optional()}).nullish(),flags:f.z.object({allow_changing_enable_sso:f.z.boolean().optional(),allow_legacy_delegation_grant_types:f.z.boolean().optional(),allow_legacy_ro_grant_types:f.z.boolean().optional(),allow_legacy_tokeninfo_endpoint:f.z.boolean().optional(),change_pwd_flow_v1:f.z.boolean().optional(),client_id_metadata_document_registration:f.z.boolean().optional(),custom_domains_provisioning:f.z.boolean().optional(),dashboard_insights_view:f.z.boolean().optional(),dashboard_log_streams_next:f.z.boolean().optional(),disable_clickjack_protection_headers:f.z.boolean().optional(),disable_fields_map_fix:f.z.boolean().optional(),disable_impersonation:f.z.boolean().optional(),disable_management_api_sms_obfuscation:f.z.boolean().optional(),enable_adfs_waad_email_verification:f.z.boolean().optional(),enable_apis_section:f.z.boolean().optional(),enable_client_connections:f.z.boolean().optional(),enable_custom_domain_in_emails:f.z.boolean().optional(),enable_dynamic_client_registration:f.z.boolean().optional(),dcr_require_initial_access_token:f.z.boolean().optional(),dcr_allowed_grant_types:f.z.array(f.z.string()).optional(),allow_http_return_to:f.z.array(f.z.string().refine(e=>{try{let t=new URL(e);return t.protocol===`http:`&&(t.pathname===``||t.pathname===`/`)&&!t.search&&!t.hash&&e===t.origin}catch{return!1}},{message:`must be a fully-qualified http origin (scheme + host + port, no path)`})).optional(),enable_idtoken_api2:f.z.boolean().optional(),enable_legacy_logs_search_v2:f.z.boolean().optional(),enable_legacy_profile:f.z.boolean().optional(),enable_pipeline2:f.z.boolean().optional(),enable_public_signup_user_exists_error:f.z.boolean().optional(),enable_sso:f.z.boolean().optional(),enforce_client_authentication_on_passwordless_start:f.z.boolean().optional(),genai_trial:f.z.boolean().optional(),improved_signup_bot_detection_in_classic:f.z.boolean().optional(),mfa_show_factor_list_on_enrollment:f.z.boolean().optional(),no_disclose_enterprise_connections:f.z.boolean().optional(),remove_alg_from_jwks:f.z.boolean().optional(),revoke_refresh_token_grant:f.z.boolean().optional(),trust_azure_adfs_email_verified_connection_property:f.z.boolean().optional(),use_scope_descriptions_for_consent:f.z.boolean().optional(),inherit_global_permissions_in_organizations:f.z.boolean().optional(),restrict_undefined_scopes:f.z.boolean().optional()}).optional(),sandbox_version:f.z.string().optional(),legacy_sandbox_version:f.z.string().optional(),sandbox_versions_available:f.z.array(f.z.string()).optional(),change_password:f.z.object({enabled:f.z.boolean().optional(),html:f.z.string().optional()}).optional(),guardian_mfa_page:f.z.object({enabled:f.z.boolean().optional(),html:f.z.string().optional()}).optional(),device_flow:f.z.object({charset:f.z.enum([`base20`,`digits`]).optional(),mask:f.z.string().max(20).optional()}).optional(),default_token_quota:f.z.object({clients:f.z.object({client_credentials:f.z.record(f.z.string(),f.z.any()).optional()}).optional(),organizations:f.z.object({client_credentials:f.z.record(f.z.string(),f.z.any()).optional()}).optional()}).nullish(),default_audience:f.z.string().optional(),default_organization:f.z.string().optional(),sessions:f.z.object({oidc_logout_prompt_enabled:f.z.boolean().optional()}).optional(),oidc_logout:f.z.object({rp_logout_end_session_endpoint_discovery:f.z.boolean().optional()}).optional(),allow_organization_name_in_authentication_api:f.z.boolean().optional(),customize_mfa_in_postlogin_action:f.z.boolean().optional(),acr_values_supported:f.z.array(f.z.string()).optional(),mtls:f.z.object({enable_endpoint_aliases:f.z.boolean().optional()}).nullish(),pushed_authorization_requests_supported:f.z.boolean().optional(),authorization_response_iss_parameter_supported:f.z.boolean().optional(),deployment_type:f.z.enum([`shared`,`wfp`]).default(`shared`).optional(),provisioning_state:f.z.enum([`pending`,`ready`,`failed`]).default(`ready`).optional(),provisioning_error:f.z.string().max(2048).optional(),provisioning_state_changed_at:f.z.string().optional(),bundle_configuration:f.z.string().max(64).optional(),worker_version:f.z.string().max(64).optional(),database_version:f.z.string().max(64).optional(),worker_script_name:f.z.string().max(255).optional(),storage_kind:f.z.enum([`own_d1`,`existing_d1`,`shared_planetscale`]).optional(),d1_database_id:f.z.string().max(64).optional(),attack_protection:vpe.optional(),mfa:f.z.object({policy:f.z.enum([`never`,`always`]).default(`never`).optional(),factors:f.z.object({sms:f.z.boolean().default(!1),otp:f.z.boolean().default(!1),email:f.z.boolean().default(!1),push_notification:f.z.boolean().default(!1),webauthn_roaming:f.z.boolean().default(!1),webauthn_platform:f.z.boolean().default(!1),recovery_code:f.z.boolean().default(!1),duo:f.z.boolean().default(!1)}).optional(),sms_provider:f.z.object({provider:f.z.enum([`twilio`,`vonage`,`aws_sns`,`phone_message_hook`]).optional()}).optional(),twilio:f.z.object({sid:f.z.string().optional(),auth_token:f.z.string().optional(),from:f.z.string().optional(),messaging_service_sid:f.z.string().optional()}).optional(),phone_message:f.z.object({message:f.z.string().optional()}).optional()}).optional()});f.z.object({created_at:f.z.string().nullable().transform(e=>e??``),updated_at:f.z.string().nullable().transform(e=>e??``)}).extend(bpe.shape).extend({id:f.z.string(),is_control_plane:f.z.boolean().optional()});var xpe=f.z.enum([`provision`,`seed`,`upgrade`,`backup`,`deprovision`,`users_import`]),Spe=f.z.enum([`pending`,`running`,`succeeded`,`failed`,`cancelled`]),Cpe=f.z.string().max(64);f.z.object({tenant_id:f.z.string().max(255).nullable().default(null),rollout_id:f.z.string().max(255).nullable().optional(),kind:xpe,engine:Cpe,engine_instance_id:f.z.string().max(100).nullable().optional(),target_worker_version:f.z.string().max(255).nullable().optional(),target_database_version:f.z.string().max(255).nullable().optional(),initiated_by:f.z.string().max(255).nullable().optional(),input:f.z.record(f.z.string(),f.z.unknown()).nullable().optional()}).extend({id:f.z.string(),status:Spe,current_step:f.z.string().max(255).nullable().optional(),error:f.z.string().nullable().optional(),result:f.z.record(f.z.string(),f.z.unknown()).nullable().optional(),claimed_by:f.z.string().max(255).nullable().optional(),claim_expires_at:f.z.string().nullable().optional(),created_at:f.z.string(),updated_at:f.z.string(),finished_at:f.z.string().nullable().optional()}).pick({status:!0,current_step:!0,engine_instance_id:!0,target_worker_version:!0,target_database_version:!0,error:!0,result:!0,claimed_by:!0,claim_expires_at:!0,finished_at:!0}).partial();var wpe=f.z.enum([`started`,`succeeded`,`failed`,`retried`,`skipped`,`reconciled`]);f.z.object({operation_id:f.z.string().max(255),step:f.z.string().max(255),outcome:wpe,detail:f.z.record(f.z.string(),f.z.unknown()).nullable().optional(),attempt:f.z.number().int().min(1).default(1)}).extend({id:f.z.string(),created_at:f.z.string()});var SZ=f.z.enum([`pending`,`inserted`,`updated`,`failed`,`skipped`]);f.z.object({operation_id:f.z.string().max(255),seq:f.z.number().int().min(0),payload:f.z.record(f.z.string(),f.z.unknown()),status:SZ.default(`pending`),error_code:f.z.string().max(64).nullable().optional(),error_message:f.z.string().nullable().optional(),error_path:f.z.string().max(255).nullable().optional(),entity_id:f.z.string().max(255).nullable().optional()}).extend({status:SZ,created_at:f.z.string(),updated_at:f.z.string()}),f.z.object({seq:f.z.number().int().min(0),status:SZ,error_code:f.z.string().max(64).nullable().optional(),error_message:f.z.string().nullable().optional(),error_path:f.z.string().max(255).nullable().optional(),entity_id:f.z.string().max(255).nullable().optional()});var Tpe=f.z.enum([`upgrade`,`reseed`,`backup`]),Epe=f.z.enum([`pending`,`canary`,`rolling`,`paused`,`done`,`failed`]);f.z.object({kind:Tpe,target_worker_version:f.z.string().max(255).nullable().optional(),target_database_version:f.z.string().max(255).nullable().optional(),wave_size:f.z.number().int().min(1).default(10),canary_tenant_ids:f.z.array(f.z.string()).nullable().optional(),filter:f.z.record(f.z.string(),f.z.unknown()).nullable().optional(),initiated_by:f.z.string().max(255).nullable().optional()}).extend({id:f.z.string(),status:Epe,created_at:f.z.string(),updated_at:f.z.string(),finished_at:f.z.string().nullable().optional()}).pick({status:!0,wave_size:!0,canary_tenant_ids:!0,filter:!0,finished_at:!0}).partial(),f.z.object({access_token:f.z.string(),id_token:f.z.string().optional(),scope:f.z.string().optional(),state:f.z.string().optional(),refresh_token:f.z.string().optional(),token_type:f.z.string(),expires_in:f.z.number()}),f.z.object({code:f.z.string(),state:f.z.string().optional()});var Dpe=f.z.object({button_border_radius:f.z.number(),button_border_weight:f.z.number(),buttons_style:f.z.enum([`pill`,`rounded`,`sharp`]),input_border_radius:f.z.number(),input_border_weight:f.z.number(),inputs_style:f.z.enum([`pill`,`rounded`,`sharp`]),show_widget_shadow:f.z.boolean(),widget_border_weight:f.z.number(),widget_corner_radius:f.z.number()}),Ope=f.z.object({base_focus_color:f.z.string(),base_hover_color:f.z.string(),body_text:f.z.string(),captcha_widget_theme:f.z.enum([`auto`,`dark`,`light`]),error:f.z.string(),header:f.z.string(),icons:f.z.string(),input_background:f.z.string(),input_border:f.z.string(),input_filled_text:f.z.string(),input_labels_placeholders:f.z.string(),links_focused_components:f.z.string(),primary_button:f.z.string(),primary_button_label:f.z.string(),secondary_button_border:f.z.string(),secondary_button_label:f.z.string(),success:f.z.string(),widget_background:f.z.string(),widget_border:f.z.string()}),CZ=f.z.object({bold:f.z.boolean(),size:f.z.number()}),kpe=f.z.object({body_text:CZ,buttons_text:CZ,font_url:f.z.string(),input_labels:CZ,links:CZ,links_style:f.z.enum([`normal`,`underlined`]),reference_text_size:f.z.number(),subtitle:CZ,title:CZ}),Ape=f.z.object({background_color:f.z.string(),background_image_url:f.z.string(),page_layout:f.z.enum([`center`,`left`,`right`]),logo_placement:f.z.enum([`widget`,`chip`,`none`]).optional()}),jpe=f.z.object({header_text_alignment:f.z.enum([`center`,`left`,`right`]),logo_height:f.z.number(),logo_position:f.z.enum([`center`,`left`,`none`,`right`]),logo_url:f.z.string(),social_buttons_layout:f.z.enum([`bottom`,`top`])});f.z.object({borders:Dpe,colors:Ope,displayName:f.z.string(),fonts:kpe,page_background:Ape,widget:jpe}).extend({themeId:f.z.string()}),f.z.object({universal_login_experience:f.z.enum([`new`,`classic`]).default(`new`),identifier_first:f.z.boolean().default(!0),password_first:f.z.boolean().default(!1),show_last_used_connection:f.z.boolean().default(!1),webauthn_platform_first_factor:f.z.boolean()});var Mpe=f.z.object({hosts:f.z.array(f.z.string()).optional(),methods:f.z.array(f.z.string()).optional(),path:f.z.string().default(`/*`),headers:f.z.record(f.z.string(),f.z.string()).optional(),query:f.z.record(f.z.string(),f.z.string()).optional()}),Npe=f.z.object({type:f.z.string(),options:f.z.record(f.z.string(),f.z.unknown()).default({})}),wZ=f.z.object({id:f.z.string().optional(),custom_domain_id:f.z.string(),priority:f.z.number().int().default(100),match:Mpe,handlers:f.z.array(Npe).min(1)});wZ.extend({id:f.z.string(),tenant_id:f.z.string(),created_at:f.z.string(),updated_at:f.z.string()}),wZ.partial().omit({id:!0,custom_domain_id:!0});var Ppe=`custom_authentication`,Fpe=[`urn:ietf:params:oauth:`,`urn:auth0`,`urn:okta`,`http://auth0.com`,`https://auth0.com`,`http://okta.com`,`https://okta.com`],TZ=f.z.string().min(1).max(200).refine(e=>e.startsWith(`https://`)||e.startsWith(`urn:`),{message:`subject_token_type must be a URI starting with https:// or urn:`}).refine(e=>!Fpe.some(t=>e.toLowerCase().startsWith(t)),{message:`subject_token_type uses a reserved namespace`}),Ipe=f.z.enum([`RS256`,`RS384`,`RS512`,`ES256`,`ES384`,`ES512`]),Lpe=f.z.discriminatedUnion(`type`,[f.z.object({type:f.z.literal(`connection`),connection:f.z.string().min(1),create_if_not_exists:f.z.boolean().default(!0),trust_email_verified:f.z.boolean().default(!1)}),f.z.object({type:f.z.literal(`user_id`)})]),EZ=f.z.object({issuer:f.z.string().min(1).max(2048),jwks:ipe.optional(),jwks_uri:f.z.string().url().optional(),audience:f.z.array(f.z.string().min(1)).min(1).optional(),algorithms:f.z.array(Ipe).min(1).optional(),max_lifetime_seconds:f.z.number().int().min(1).max(3600).default(300),require_jti:f.z.boolean().default(!0),user_mapping:Lpe});f.z.object({name:f.z.string().min(1).max(255),subject_token_type:TZ,action_id:f.z.string().min(1).optional(),type:f.z.literal(Ppe),jwt_verification:EZ.optional()}).extend({id:f.z.string(),created_at:f.z.string(),updated_at:f.z.string()}),f.z.object({name:f.z.string().min(1).max(255).optional(),subject_token_type:TZ.optional(),jwt_verification:EZ.optional()});var Rpe=f.z.object({scim:f.z.string(),auth0:f.z.string()}),zpe=f.z.object({connection_id:f.z.string(),user_id_attribute:f.z.string().default(`externalId`),mapping:f.z.array(Rpe).default([])});f.z.object({created_at:f.z.string(),updated_at:f.z.string()}).extend(zpe.shape);var Bpe=f.z.object({token_id:f.z.string(),connection_id:f.z.string(),token_hash:f.z.string(),scopes:f.z.array(f.z.string()).default([]),valid_until:f.z.string().optional()});f.z.object({created_at:f.z.string(),last_used_at:f.z.string().optional()}).extend(Bpe.shape);var Vpe=f.z.object({connection_id:f.z.string(),external_id:f.z.string(),user_id:f.z.string()});f.z.object({created_at:f.z.string()}).extend(Vpe.shape),f.z.object({name:f.z.string(),enabled:f.z.boolean().optional().default(!0),default_from_address:f.z.string().optional(),credentials:f.z.record(f.z.string(),f.z.unknown()),settings:f.z.object({}).optional()});var Hpe=f.z.enum([`verify_email`,`verify_email_by_code`,`reset_email`,`reset_email_by_code`,`welcome_email`,`blocked_account`,`stolen_credentials`,`enrollment_email`,`mfa_oob_code`,`change_password`,`password_reset`,`user_invitation`]);f.z.object({template:Hpe,body:f.z.string(),from:f.z.string(),subject:f.z.string(),syntax:f.z.literal(`liquid`).default(`liquid`),resultUrl:f.z.string().optional(),urlLifetimeInSeconds:f.z.number().int().nonnegative().optional(),includeEmailInRedirect:f.z.boolean().default(!1),enabled:f.z.boolean().default(!0)}),f.z.object({id:f.z.string(),login_id:f.z.string(),session_id:f.z.string().optional(),organization:f.z.string().optional(),auth_connection:f.z.string().optional(),auth_strategy:yZ.optional(),user_id:f.z.string(),client_id:f.z.string(),expires_at:f.z.string().optional(),idle_expires_at:f.z.string().optional(),last_exchanged_at:f.z.string().optional(),device:xZ,resource_servers:f.z.array(f.z.object({audience:f.z.string(),scopes:f.z.string()})),rotating:f.z.boolean(),token_lookup:f.z.string().optional(),token_hash:f.z.string().optional(),family_id:f.z.string().optional(),rotated_to:f.z.string().optional(),rotated_at:f.z.string().optional()}).extend({created_at:f.z.string(),revoked_at:f.z.string().optional()}),f.z.object({to:f.z.string(),message:f.z.string()}),f.z.object({name:f.z.string(),options:f.z.object({})});var Upe=f.z.object({value:f.z.string(),description:f.z.string().optional()}),Wpe=f.z.object({token_dialect:f.z.enum([`access_token`,`access_token_authz`]).optional(),enforce_policies:f.z.boolean().optional(),allow_skipping_userinfo:f.z.boolean().optional(),skip_userinfo:f.z.boolean().optional(),persist_client_authorization:f.z.boolean().optional(),enable_introspection_endpoint:f.z.boolean().optional(),mtls:f.z.object({bound_access_tokens:f.z.boolean().optional()}).optional()}),Gpe=f.z.object({id:f.z.string().optional(),name:f.z.string(),identifier:f.z.string(),scopes:f.z.array(Upe).optional(),signing_alg:f.z.string().optional(),signing_secret:f.z.string().optional(),token_lifetime:f.z.number().default(86400),token_lifetime_for_web:f.z.number().default(7200),skip_consent_for_verifiable_first_party_clients:f.z.boolean().optional(),allow_offline_access:f.z.boolean().optional(),verificationKey:f.z.string().optional(),options:Wpe.optional(),is_system:f.z.boolean().optional(),metadata:f.z.record(f.z.string(),f.z.any()).optional()}).extend({created_at:f.z.string().optional(),updated_at:f.z.string().optional()});f.z.array(Gpe);var Kpe=f.z.object({role_id:f.z.string(),resource_server_identifier:f.z.string(),permission_name:f.z.string()}).extend({created_at:f.z.string()});f.z.array(Kpe),f.z.object({user_id:f.z.string().openapi({description:`The id of the user that granted the consent`}),clientID:f.z.string().openapi({description:`The id of the client the grant was issued to`}),audience:f.z.string().optional().openapi({description:`The audience the grant applies to`}),scope:f.z.array(f.z.string()).default([]).openapi({description:`The list of OAuth scopes the user has consented to`})}).extend({id:f.z.string()}),f.z.object({user_id:f.z.string(),last_login:f.z.string().optional(),last_ip:f.z.string().optional(),login_count:f.z.number().default(0),failed_logins:f.z.array(f.z.string()).optional(),last_password_reset:f.z.string().optional()});var qpe=f.z.object({user_id:f.z.string(),resource_server_identifier:f.z.string(),permission_name:f.z.string(),organization_id:f.z.string().optional()}).extend({tenant_id:f.z.string(),created_at:f.z.string().optional()});f.z.array(qpe);var Jpe=f.z.object({user_id:f.z.string(),resource_server_identifier:f.z.string(),resource_server_name:f.z.string(),permission_name:f.z.string(),description:f.z.string().nullable().optional(),created_at:f.z.string().optional(),organization_id:f.z.string().optional()});f.z.array(Jpe);var Ype=f.z.object({user_id:f.z.string(),role_id:f.z.string(),organization_id:f.z.string().optional()}).extend({tenant_id:f.z.string(),created_at:f.z.string().optional()});f.z.array(Ype);var Xpe=f.z.object({id:f.z.string().optional().openapi({description:`The unique identifier of the role. If not provided, one will be generated.`}),name:f.z.string().min(1).max(50).openapi({description:`The name of the role. Cannot include '<' or '>'`}),description:f.z.string().max(255).optional().openapi({description:`The description of the role`}),is_system:f.z.boolean().optional(),metadata:f.z.record(f.z.string(),f.z.any()).optional().openapi({description:`Metadata associated with the role. Can be used to control sync behavior in multi-tenancy scenarios.`})}).extend({id:f.z.string().openapi({description:`The unique identifier of the role`}),created_at:f.z.string().optional(),updated_at:f.z.string().optional()});f.z.array(Xpe);var Zpe=f.z.object({logo_url:f.z.string().optional().openapi({description:`URL of the organization's logo`}),colors:f.z.object({primary:f.z.string().optional().openapi({description:`Primary color in hex format (e.g., #FF0000)`}),page_background:f.z.string().optional().openapi({description:`Page background color in hex format (e.g., #FFFFFF)`})}).optional()}).optional(),Qpe=f.z.object({connection_id:f.z.string().openapi({description:`ID of the connection`}),assign_membership_on_login:f.z.boolean().default(!1).openapi({description:`Whether to assign membership to the organization on login`}),show_as_button:f.z.boolean().default(!0).openapi({description:`Whether to show this connection as a button in the login screen`}),is_signup_enabled:f.z.boolean().default(!0).openapi({description:`Whether signup is enabled for this connection`})}),$pe=f.z.object({client_credentials:f.z.object({enforce:f.z.boolean().default(!1).openapi({description:`Whether to enforce token quota limits`}),per_day:f.z.number().min(0).default(0).openapi({description:`Maximum tokens per day (0 = unlimited)`}),per_hour:f.z.number().min(0).default(0).openapi({description:`Maximum tokens per hour (0 = unlimited)`})}).optional()}).optional();f.z.object({id:f.z.string().optional(),name:f.z.string().min(1).regex(/^[a-z0-9_-]+$/,{message:`Organization name must be lowercase and can only contain letters, numbers, hyphens, and underscores`}).openapi({description:`The name of the organization. Must be lowercase and can only contain letters, numbers, hyphens, and underscores.`}),display_name:f.z.string().optional().openapi({description:`The display name of the organization`}),branding:Zpe,metadata:f.z.record(f.z.string(),f.z.any()).default({}).optional().openapi({description:`Custom metadata for the organization`}),enabled_connections:f.z.array(Qpe).default([]).optional().openapi({description:`List of enabled connections for the organization`}),token_quota:$pe}).extend(sY.shape).extend({id:f.z.string(),name:f.z.string().min(1).openapi({description:`The name of the organization`})});var eme=f.z.object({connection_id:f.z.string().openapi({description:`ID of the tenant-level connection to enable for the org.`}),assign_membership_on_login:f.z.boolean().optional().default(!1),show_as_button:f.z.boolean().optional().default(!0),is_signup_enabled:f.z.boolean().optional().default(!0)}).extend({connection:f.z.object({name:f.z.string().optional(),strategy:f.z.string().optional()}).optional(),created_at:f.z.string().optional(),updated_at:f.z.string().optional()});f.z.array(eme),f.z.object({user_id:f.z.string().openapi({description:`ID of the user`}),organization_id:f.z.string().openapi({description:`ID of the organization`})}).extend(sY.shape).extend({id:f.z.string()}),f.z.object({idle_session_lifetime:f.z.number().default(72),session_lifetime:f.z.number().default(168),session_cookie:f.z.object({mode:f.z.enum([`persistent`,`non-persistent`]).optional()}).optional(),enable_client_connections:f.z.boolean().optional(),default_redirection_uri:f.z.string().optional(),enabled_locales:f.z.array(f.z.string()).optional(),default_directory:f.z.string().optional(),error_page:f.z.object({html:f.z.string().optional(),show_log_link:f.z.boolean().optional(),url:f.z.string().optional()}).optional(),flags:f.z.object({allow_legacy_delegation_grant_types:f.z.boolean().optional(),allow_legacy_ro_grant_types:f.z.boolean().optional(),allow_legacy_tokeninfo_endpoint:f.z.boolean().optional(),disable_clickjack_protection_headers:f.z.boolean().optional(),enable_apis_section:f.z.boolean().optional(),enable_client_connections:f.z.boolean().optional(),enable_custom_domain_in_emails:f.z.boolean().optional(),enable_dynamic_client_registration:f.z.boolean().optional(),enable_idtoken_api2:f.z.boolean().optional(),enable_legacy_logs_search_v2:f.z.boolean().optional(),enable_legacy_profile:f.z.boolean().optional(),enable_pipeline2:f.z.boolean().optional(),enable_public_signup_user_exists_error:f.z.boolean().optional(),use_scope_descriptions_for_consent:f.z.boolean().optional(),disable_management_api_sms_obfuscation:f.z.boolean().optional(),enable_adfs_waad_email_verification:f.z.boolean().optional(),revoke_refresh_token_grant:f.z.boolean().optional(),dashboard_log_streams_next:f.z.boolean().optional(),dashboard_insights_view:f.z.boolean().optional(),disable_fields_map_fix:f.z.boolean().optional(),mfa_show_factor_list_on_enrollment:f.z.boolean().optional()}).optional(),friendly_name:f.z.string().optional(),picture_url:f.z.string().optional(),support_email:f.z.string().optional(),support_url:f.z.string().optional(),sandbox_version:f.z.string().optional(),sandbox_versions_available:f.z.array(f.z.string()).optional(),change_password:f.z.object({enabled:f.z.boolean(),html:f.z.string()}).optional(),guardian_mfa_page:f.z.object({enabled:f.z.boolean(),html:f.z.string()}).optional(),default_audience:f.z.string().optional(),default_organization:f.z.string().optional(),sessions:f.z.object({oidc_logout_prompt_enabled:f.z.boolean().optional()}).optional(),mfa:f.z.object({policy:f.z.enum([`never`,`always`]).default(`never`).optional(),factors:f.z.object({sms:f.z.boolean().default(!1),otp:f.z.boolean().default(!1),email:f.z.boolean().default(!1),push_notification:f.z.boolean().default(!1),webauthn_roaming:f.z.boolean().default(!1),webauthn_platform:f.z.boolean().default(!1),recovery_code:f.z.boolean().default(!1),duo:f.z.boolean().default(!1)}).optional(),sms_provider:f.z.object({provider:f.z.enum([`twilio`,`vonage`,`aws_sns`,`phone_message_hook`]).optional()}).optional(),twilio:f.z.object({sid:f.z.string().optional(),auth_token:f.z.string().optional(),from:f.z.string().optional(),messaging_service_sid:f.z.string().optional()}).optional(),phone_message:f.z.object({message:f.z.string().optional()}).optional()}).optional()}),f.z.object({date:f.z.string().openapi({description:`Date these events occurred in ISO 8601 format`,example:`2025-12-19`}),logins:f.z.number().openapi({description:`Number of logins on this date`,example:150}),signups:f.z.number().openapi({description:`Number of signups on this date`,example:25}),leaked_passwords:f.z.number().openapi({description:`Number of breached-password detections on this date (subscription required)`,example:0}),updated_at:f.z.string().openapi({description:`Date and time this stats entry was last updated in ISO 8601 format`,example:`2025-12-19T10:30:00.000Z`}),created_at:f.z.string().openapi({description:`Approximate date and time the first event occurred in ISO 8601 format`,example:`2025-12-19T00:00:00.000Z`})}),f.z.number().openapi({description:`Number of active users in the last 30 days`,example:1234}),f.z.enum([`active-users`,`logins`,`signups`,`refresh-tokens`,`sessions`,`logouts`,`password-changes`,`password-migrations`,`mfa`,`email-verifications`,`codes-sent`]),f.z.enum([`hour`,`day`,`week`,`month`]),f.z.enum([`time`,`connection`,`client_id`,`user_type`,`event`]),f.z.enum([`password`,`social`,`passwordless`,`enterprise`]);var tme=f.z.object({cohort:f.z.string(),sessions:f.z.number(),active:f.z.array(f.z.number())});f.z.object({interval:f.z.literal(`week`),from:f.z.string(),to:f.z.string(),cohorts:f.z.array(tme)});var nme=f.z.object({cohort:f.z.string(),tokens:f.z.number(),active:f.z.array(f.z.number())});f.z.object({interval:f.z.literal(`week`),from:f.z.string(),to:f.z.string(),cohorts:f.z.array(nme)});var rme=f.z.object({name:f.z.string(),type:f.z.string()}),ime=f.z.object({elapsed:f.z.number(),rows_read:f.z.number().optional(),bytes_read:f.z.number().optional()});f.z.object({meta:f.z.array(rme),data:f.z.array(f.z.record(f.z.string(),f.z.any())),rows:f.z.number(),rows_before_limit_at_least:f.z.number().optional(),statistics:ime.optional()});var ame=f.z.enum(`login.login-id.login-password.signup.signup-id.signup-password.reset-password.consent.mfa.mfa-push.mfa-otp.mfa-voice.mfa-phone.mfa-webauthn.mfa-email.mfa-recovery-code.status.device-flow.email-verification.email-otp-challenge.organizations.invitation.common.passkeys.captcha.custom-form.login-passwordless.mfa-login-options`.split(`.`)),ome=f.z.record(f.z.string(),f.z.record(f.z.string(),f.z.string())).openapi({type:`object`,additionalProperties:{type:`object`,additionalProperties:{type:`string`}}});f.z.object({prompt:ame,language:f.z.string(),custom_text:ome});var sme=f.z.enum([`phone`,`totp`,`email`,`push`,`webauthn-roaming`,`webauthn-platform`,`passkey`]),DZ=f.z.object({user_id:f.z.string(),type:sme,phone_number:f.z.string().optional(),totp_secret:f.z.string().optional(),credential_id:f.z.string().optional(),public_key:f.z.string().optional(),sign_count:f.z.number().int().nonnegative().optional(),credential_backed_up:f.z.boolean().optional(),transports:f.z.array(f.z.string()).optional(),friendly_name:f.z.string().optional(),confirmed:f.z.boolean().default(!1)});function OZ(e,t){e.type===`phone`&&!e.phone_number&&t.addIssue({code:f.z.ZodIssueCode.custom,message:`phone_number is required when type is 'phone'`,path:[`phone_number`]}),e.type===`totp`&&!e.totp_secret&&t.addIssue({code:f.z.ZodIssueCode.custom,message:`totp_secret is required when type is 'totp'`,path:[`totp_secret`]}),[`webauthn-roaming`,`webauthn-platform`,`passkey`].includes(e.type)&&(e.credential_id||t.addIssue({code:f.z.ZodIssueCode.custom,message:`credential_id is required when type is '${e.type}'`,path:[`credential_id`]}),e.public_key||t.addIssue({code:f.z.ZodIssueCode.custom,message:`public_key is required when type is '${e.type}'`,path:[`public_key`]}))}DZ.superRefine(OZ),DZ.extend({id:f.z.string(),created_at:f.z.string(),updated_at:f.z.string()}).superRefine(OZ),f.z.object({id:f.z.string().optional(),created_at:f.z.string().datetime({offset:!0}).optional(),updated_at:f.z.string().datetime({offset:!0}).optional()}),f.z.object({origins:f.z.array(f.z.string()).optional(),allow_credentials:f.z.boolean().optional(),allow_headers:f.z.array(f.z.string()).optional(),allow_methods:f.z.array(f.z.string()).optional(),expose_headers:f.z.array(f.z.string()).optional(),max_age:f.z.number().int().optional()}).refine(e=>!(e.allow_credentials&&e.origins?.includes(`*`)),{message:`Cannot use wildcard origin (*) with allow_credentials`}),f.z.object({username:f.z.string(),password:f.z.string(),realm:f.z.string().optional()}),f.z.object({request:f.z.record(f.z.string(),f.z.string()).optional(),response:f.z.record(f.z.string(),f.z.string()).optional(),remove_request:f.z.array(f.z.string()).optional(),remove_response:f.z.array(f.z.string()).optional()}),f.z.object({ttl_seconds:f.z.number().int().positive()});var cme=[`173.245.48.0/20`,`103.21.244.0/22`,`103.22.200.0/22`,`103.31.4.0/22`,`141.101.64.0/18`,`108.162.192.0/18`,`190.93.240.0/20`,`188.114.96.0/20`,`197.234.240.0/22`,`198.41.128.0/17`,`162.158.0.0/15`,`104.16.0.0/13`,`104.24.0.0/14`,`172.64.0.0/13`,`131.0.72.0/22`,`2400:cb00::/32`,`2606:4700::/32`,`2803:f800::/32`,`2405:b500::/32`,`2405:8100::/32`,`2a06:98c0::/29`,`2c0f:f248::/32`];function kZ(e){let t=e.split(`.`);if(t.length!==4)return null;let n=[];for(let e of t){if(!/^\d{1,3}$/.test(e))return null;let t=Number(e);if(t>255)return null;n.push(t)}return n}function AZ(e){if(e===``)return[];let t=e.split(`:`),n=[];for(let e=0;e<t.length;e++){let r=t[e];if(r.includes(`.`)){if(e!==t.length-1)return null;let i=kZ(r);if(!i)return null;n.push(i[0]<<8|i[1],i[2]<<8|i[3]);continue}if(!/^[0-9a-f]{1,4}$/i.test(r))return null;n.push(parseInt(r,16))}return n}function lme(e){let t=e.split(`::`);if(t.length>2)return null;let n=AZ(t[0]??``);if(!n)return null;let r;if(t.length===2){let e=AZ(t[1]??``);if(!e)return null;let i=8-n.length-e.length;if(i<1)return null;r=[...n,...Array(i).fill(0),...e]}else r=n;if(r.length!==8)return null;let i=[];for(let e of r)i.push(e>>8&255,e&255);return i}function jZ(e){let t=e.trim();t.startsWith(`[`)&&t.endsWith(`]`)&&(t=t.slice(1,-1));let n=t.indexOf(`%`);if(n!==-1&&(t=t.slice(0,n)),t===``)return null;if(!t.includes(`:`))return kZ(t);let r=lme(t);return r?r.slice(0,10).every(e=>e===0)&&r[10]===255&&r[11]===255?r.slice(12):r:null}function ume(e){let[t,n]=e.split(`/`),r=jZ(t??``),i=Number(n);if(!r||!Number.isInteger(i))throw Error(`Invalid Cloudflare CIDR: ${e}`);return{bytes:r,prefixBits:i}}var dme=cme.map(ume);function fme(e,t){if(e.length!==t.bytes.length)return!1;let n=t.prefixBits>>3;for(let r=0;r<n;r++)if(e[r]!==t.bytes[r])return!1;let r=t.prefixBits&7;if(r===0)return!0;let i=255<<8-r&255;return(e[n]&i)===(t.bytes[n]&i)}function pme(e){let t=jZ(e);return t?dme.some(e=>fme(t,e)):!1}f.z.object({client_ip_header:f.z.string().default(`cf-connecting-ip`),set_x_real_ip:f.z.boolean().default(!0),set_x_original_url:f.z.boolean().default(!0),skip_cloudflare_client_ip:f.z.boolean().default(!0)}),f.z.object({upstream_host:f.z.string().optional()}),f.z.object({upstream_origin:f.z.string().optional()}),new Set([`connection`,`keep-alive`,`proxy-authenticate`,`proxy-authorization`,`te`,`trailers`,`transfer-encoding`,`upgrade`]),f.z.object({upstream_url:f.z.string(),preserve_host:f.z.boolean().default(!1),timeout_ms:f.z.number().int().positive().optional()}),f.z.object({binding:f.z.string(),upstream_url:f.z.string().optional(),preserve_host:f.z.boolean().default(!0),timeout_ms:f.z.number().int().positive().optional()}),f.z.object({binding:f.z.string(),script_name:f.z.string(),cpu_ms:f.z.number().int().positive().optional(),subrequests:f.z.number().int().positive().optional(),timeout_ms:f.z.number().int().positive().optional()}),f.z.object({upstream_url:f.z.string().refine(e=>{try{let t=new URL(e);return(t.protocol===`http:`||t.protocol===`https:`)&&!!t.hostname}catch{return!1}},{message:`upstream_url must be a valid http(s) URL with a hostname`}),status:f.z.union([f.z.literal(301),f.z.literal(302),f.z.literal(307),f.z.literal(308)]).default(302),preserve_path:f.z.boolean().default(!0),preserve_query:f.z.boolean().default(!0)}),f.z.object({status:f.z.number().int().default(200),headers:f.z.record(f.z.string(),f.z.string()).optional(),body:f.z.string().optional(),json:f.z.unknown().optional()});var MZ=`proxy:resolve_host`;function mme(e){return(t,n)=>{let r=t instanceof Request&&n===void 0?t:new Request(t,n);return e.fetch(r)}}var NZ=`authhero-proxy-host:`;function PZ(e,t){return`${e}${t.toLowerCase()}`}var hme=f.z.object({name:f.z.string(),version:f.z.string(),env:f.z.object({node:f.z.string().optional()}).optional()});function gme(e){if(e)try{let t=e;try{t=atob(e)}catch{}try{let e=JSON.parse(t);return hme.parse(e)}catch{}}catch{return}}function _me(e){let t=e.req.header(`cf-connecting-ip`)?.trim();if(t&&!pme(t))return t;let n=e.req.header(`x-real-ip`)?.trim();if(n)return n;let r=(e.req.header(`x-forwarded-for`)??``).split(`,`).map(e=>e.trim()).filter(Boolean);return r[r.length-1]}var FZ=async(e,t)=>{let n=e.req.query(`auth0Client`)?.slice(0,255),r=_me(e)?.slice(0,45),i=e.req.header(`user-agent`)?.slice(0,512),a=e.req.header(`cf-ipcountry`)?.slice(0,2),o=n?gme(n):void 0;o&&e.set(`auth0_client`,o),r&&e.set(`ip`,r),i&&e.set(`useragent`,i),a&&e.set(`countryCode`,a),await t()},vme=new Set([`include-linked`]);function yme(e){let t=new Set;if(!e)return t;for(let n of e.split(`,`)){let e=n.split(`;`)[0]?.split(`=`)[0]?.trim().toLowerCase();e&&vme.has(e)&&t.add(e)}return t}var bme=async(e,t)=>{let n=yme(e.req.header(`prefer`)),r=new Set;e.set(`prefer`,{has:e=>n.has(e),applied:e=>{r.add(e)},appliedTokens:()=>Array.from(r)}),await t(),r.size>0&&(XM(e),e.res.headers.set(`Preference-Applied`,Array.from(r).join(`, `)))};function IZ(e,t,n,r){try{let i=`${e}:${t}:${JSON.stringify(n)}`;return r?`${r}:${i}`:i}catch{let n=`${e}:${t}:${Date.now()}-${Math.random()}`;return r?`${r}:${n}`:n}}function LZ(e,t){let{cache:n,defaultTtl:r,customTtls:i={},excludeMethods:a=[],cacheEntities:o=[],keyPrefix:s}=t,c=new Set(a),l=o.length===0,u=new Set(o),d={};for(let[t,a]of Object.entries(e)){if(a==null)continue;if(typeof a==`function`){d[t]=a;continue}let e=l||u.has(t),o={};for(let l of qM(a)){let u=a[l];if(typeof u==`function`){if(!e){o[l]=u;continue}let d=`${t}:${l}`;if(c.has(d)){o[l]=u;continue}let f=i[d]??r,p=[`create`,`update`,`remove`,`delete`,`set`,`used`,`add`].some(e=>l.startsWith(e));o[l]=async(...e)=>{if(p){let r=await u.apply(a,e);try{if(e.length>=2&&[`update`,`remove`,`delete`].includes(l)){let r=IZ(t,`get`,[e[0],e[1]],s);await n.delete(r);let i=IZ(t,`list`,[e[0],{}],s);await n.delete(i)}let r=s?`${s}:${t}:`:`${t}:`;await n.deleteByPrefix(r)}catch{}return r}let r=IZ(t,l,e,s),i=await n.get(r);if(i!==null)if(i&&typeof i==`object`&&`isCachedNull`in i){let e=i;return e.isCachedNull?null:e.value}else return i;let o=await u.apply(a,e);return f>=0&&(o===null?await n.set(r,{value:null,isCachedNull:!0},f):await n.set(r,o,f)),o}}else o[l]=u}d[t]=o}return d}var RZ={freshSeconds:300,staleSeconds:600,keyPrefix:`client-bundle`};function zZ(e,t,n=RZ.keyPrefix){return`${n}:${e}:${t}`}var xme=[`tenants`,`clients`,`connections`,`clientConnections`,`branding`,`resourceServers`,`promptSettings`,`hooks`,`themes`];async function Sme(e,t,n){let[r,i,a,o,s,c,l,u,d]=await Promise.all([e.tenants.get(t),e.clients.get(t,n),e.connections.list(t),e.clientConnections.listByClient(t,n),e.branding.get(t),e.resourceServers.list(t),e.promptSettings.get(t).catch(()=>null),e.hooks.list(t),e.themes.get(t,`default`)]);return{tenant:r,client:i,connections:a,clientConnections:o,branding:s,resourceServers:c,promptSettings:l,hooks:u,defaultTheme:d}}async function Cme(e,t,n,r,i={}){let a={...RZ,...i.config??{}},o=i.now??Date.now,s=zZ(n,r,a.keyPrefix),c=await t.get(s),l=o();return c&&l<c.freshUntil?c.value:c&&l<c.staleUntil&&i.scheduleRefresh?(i.scheduleRefresh(BZ(e,t,n,r,a,o).catch(()=>void 0)),c.value):BZ(e,t,n,r,a,o)}async function BZ(e,t,n,r,i,a){let o=await Sme(e,n,r),s=a(),c={value:o,freshUntil:s+i.freshSeconds*1e3,staleUntil:s+(i.freshSeconds+i.staleSeconds)*1e3};return await t.set(wme(n,r,i.keyPrefix),c,i.freshSeconds+i.staleSeconds),o}function wme(e,t,n){return zZ(e,t,n)}function VZ(e,t,n){let r=(e,r)=>t.delete(zZ(e,r,n)).catch(()=>{}),i=e=>{let r=`${n??`client-bundle`}:${e}:`;return t.deleteByPrefix(r).catch(()=>0)};return{...e,tenants:{...e.tenants,update:async(t,n)=>{let r=await e.tenants.update(t,n);return await i(t),r},remove:async t=>{let n=await e.tenants.remove(t);return await i(t),n}},clients:{...e.clients,update:async(t,n,i)=>{let a=await e.clients.update(t,n,i);return await r(t,n),a},remove:async(t,n)=>{let i=await e.clients.remove(t,n);return await r(t,n),i}},clientConnections:{...e.clientConnections,updateByClient:async(t,n,i)=>{let a=await e.clientConnections.updateByClient(t,n,i);return await r(t,n),a},addClientToConnection:async(t,n,i)=>{let a=await e.clientConnections.addClientToConnection(t,n,i);return await r(t,i),a},removeClientFromConnection:async(t,n,i)=>{let a=await e.clientConnections.removeClientFromConnection(t,n,i);return await r(t,i),a}},connections:{...e.connections,update:async(t,n,r)=>{let a=await e.connections.update(t,n,r);return await i(t),a},remove:async(t,n)=>{let r=await e.connections.remove(t,n);return await i(t),r}},branding:{...e.branding,set:async(t,n)=>{let r=await e.branding.set(t,n);return await i(t),r}},themes:{...e.themes,create:async(t,n,r)=>{let a=await e.themes.create(t,n,r);return await i(t),a},update:async(t,n,r)=>{let a=await e.themes.update(t,n,r);return await i(t),a},remove:async(t,n)=>{let r=await e.themes.remove(t,n);return await i(t),r}},resourceServers:{...e.resourceServers,update:async(t,n,r)=>{let a=await e.resourceServers.update(t,n,r);return await i(t),a},remove:async(t,n)=>{let r=await e.resourceServers.remove(t,n);return await i(t),r}},promptSettings:{...e.promptSettings,set:async(t,n)=>{let r=await e.promptSettings.set(t,n);return await i(t),r}},hooks:{...e.hooks,update:async(t,n,r)=>{let a=await e.hooks.update(t,n,r);return await i(t),a},remove:async(t,n)=>{let r=await e.hooks.remove(t,n);return await i(t),r}}}}function HZ(e){if(!e)return;let t=e.filter(e=>e!==void 0);if(t.length!==0)return t.length===1?t[0]:{beforeCreate:UZ(t.map(e=>e.beforeCreate),(e,t)=>[e,t],(e,t)=>[e[0],t]),afterCreate:WZ(t.map(e=>e.afterCreate)),beforeUpdate:UZ(t.map(e=>e.beforeUpdate),(e,t,n)=>[e,t,n],(e,t)=>[e[0],e[1],t]),afterUpdate:WZ(t.map(e=>e.afterUpdate)),beforeDelete:WZ(t.map(e=>e.beforeDelete)),afterDelete:WZ(t.map(e=>e.afterDelete))}}function UZ(e,t,n){let r=e.filter(e=>e!==void 0);if(r.length!==0)return r.length===1?r[0]:async(...e)=>{let i=t(...e),a=i[i.length-1];for(let e of r)a=await e(...i),i=n(i,a);return a}}function WZ(e){let t=e.filter(e=>e!==void 0);if(t.length!==0)return t.length===1?t[0]:async(...e)=>{for(let n of t)await n(...e)}}function Tme(e){if(!e)return;let t=e.filter(e=>e!==void 0);if(t.length!==0)return t.length===1?t[0]:{beforeAssign:UZ(t.map(e=>e.beforeAssign),(e,t,n)=>[e,t,n],(e,t)=>[e[0],e[1],t]),afterAssign:WZ(t.map(e=>e.afterAssign)),beforeRemove:UZ(t.map(e=>e.beforeRemove),(e,t,n)=>[e,t,n],(e,t)=>[e[0],e[1],t]),afterRemove:WZ(t.map(e=>e.afterRemove))}}function GZ(e,t,n){return t?{...e,create:async(r,i)=>{let a=i;t.beforeCreate&&(a=await t.beforeCreate(n,i));let o=await e.create(r,a);return t.afterCreate&&await t.afterCreate(n,o),o},update:async(r,i,a)=>{let o=a;t.beforeUpdate&&(o=await t.beforeUpdate(n,i,a));let s=await e.update(r,i,o);if(t.afterUpdate){let a;a=typeof s==`boolean`?await e.get(r,i):s,a&&await t.afterUpdate(n,i,a)}return s},remove:async(r,i)=>{t.beforeDelete&&await t.beforeDelete(n,i);let a=await e.remove(r,i);return t.afterDelete&&a&&await t.afterDelete(n,i),a}}:e}function Eme(e,t,n){return t?{...e,assign:async(r,i,a)=>{let o=a;t.beforeAssign&&(o=await t.beforeAssign(n,i,a));let s=await e.assign(r,i,o);return t.afterAssign&&s&&await t.afterAssign(n,i,o),s},remove:async(r,i,a)=>{let o=a;t.beforeRemove&&(o=await t.beforeRemove(n,i,a));let s=await e.remove(r,i,o);return t.afterRemove&&s&&await t.afterRemove(n,i,o),s}}:e}function Dme(e,t,n){return t?{...e,create:async r=>{let i=r;t.beforeCreate&&(i=await t.beforeCreate(n,r));let a=await e.create(i);return t.afterCreate&&await t.afterCreate(n,a),a},update:async(r,i)=>{let a=i;if(t.beforeUpdate&&(a=await t.beforeUpdate(n,r,i)),await e.update(r,a),t.afterUpdate){let i=await e.get(r);i&&await t.afterUpdate(n,r,i)}},remove:async r=>{t.beforeDelete&&await t.beforeDelete(n,r);let i=await e.remove(r);return t.afterDelete&&i&&await t.afterDelete(n,r),i}}:e}function KZ(e,t){let{tenantId:n,entityHooks:r}=t;if(!r)return e;let i={connections:HZ(r.connections),roles:HZ(r.roles),resourceServers:HZ(r.resourceServers),rolePermissions:Tme(r.rolePermissions),tenants:HZ(r.tenants)},a={tenantId:n,adapters:e};return{...e,connections:GZ(e.connections,i.connections,a),roles:GZ(e.roles,i.roles,a),resourceServers:GZ(e.resourceServers,i.resourceServers,a),rolePermissions:Eme(e.rolePermissions,i.rolePermissions,a),tenants:Dme(e.tenants,i.tenants,a)}}var Ome=class{config;cache=new Map;accessOrder=new Map;accessCounter=0;cleanupTimer;constructor(e={}){this.config=e;let t=e.cleanupIntervalMs;t&&t>0&&(this.cleanupTimer=setInterval(()=>{this.cleanupExpired()},t))}async get(e){let t=this.cache.get(e);return t?t.expiresAt&&t.expiresAt<new Date?(this.cache.delete(e),this.accessOrder.delete(e),null):(this.accessOrder.set(e,++this.accessCounter),t.value):null}async set(e,t,n){let r,i=n??this.config.defaultTtlSeconds,a=i!==void 0,o=a?Math.max(0,i):0;a&&(r=new Date(Date.now()+(o>0?o*1e3:-1))),this.config.maxEntries&&this.cache.size>=this.config.maxEntries&&!this.cache.has(e)&&this.evictLeastRecentlyUsed();let s={value:t,expiresAt:r};this.cache.set(e,s),this.accessOrder.set(e,++this.accessCounter)}async delete(e){let t=this.cache.has(e);return this.cache.delete(e),this.accessOrder.delete(e),t}async deleteByPrefix(e){let t=0;for(let n of this.cache.keys())n.startsWith(e)&&(this.cache.delete(n),this.accessOrder.delete(n),t++);return t}async clear(){this.cache.clear(),this.accessOrder.clear(),this.accessCounter=0}getStats(){return{size:this.cache.size,maxEntries:this.config.maxEntries,defaultTtlSeconds:this.config.defaultTtlSeconds}}cleanupExpired(){let e=new Date,t=[];for(let[n,r]of this.cache.entries())r.expiresAt&&r.expiresAt<e&&t.push(n);for(let e of t)this.cache.delete(e),this.accessOrder.delete(e)}evictLeastRecentlyUsed(){let e=null,t=1/0;for(let[n,r]of this.accessOrder.entries())r<t&&(t=r,e=n);e&&(this.cache.delete(e),this.accessOrder.delete(e))}destroy(){this.cleanupTimer&&=(clearInterval(this.cleanupTimer),void 0)}};function qZ(e={}){return new Ome(e)}var kme=Eo({forms:f.z.array(Ln)}),Ame=F({route:(0,f.createRoute)({tags:[`forms`],method:`get`,path:`/`,request:{query:wo,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:forms`]}],responses:{200:{content:{"application/json":{schema:f.z.union([f.z.array(Ln),kme])}},description:`List of forms`}}}),handler:async e=>{let t=I(e),{page:n,per_page:r,include_totals:i=!1,sort:a,q:o}=e.req.valid(`query`),s=await e.env.data.forms.list(t,{page:n,per_page:r,include_totals:i,sort:To(a),q:o});return e.json(Do(i,s,`forms`))}}),jme=F({route:(0,f.createRoute)({tags:[`forms`],method:`get`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:forms`]}],responses:{200:{content:{"application/json":{schema:Ln}},description:`A form`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await e.env.data.forms.get(t,n);if(!r)throw new m(404);return e.json(r)}}),Mme=F({route:(0,f.createRoute)({tags:[`forms`],method:`delete`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`delete:forms`]}],responses:{200:{description:`Status`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await e.env.data.forms.get(t,n);if(!await e.env.data.forms.remove(t,n))throw new m(404,{message:`Form not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete a Form`,targetType:`form`,targetId:n,...r?{beforeState:{...r}}:{}}),e.text(`OK`)}}),Nme=F({route:(0,f.createRoute)({tags:[`forms`],method:`patch`,path:`/{id}`,request:{body:{content:{"application/json":{schema:In.partial()}}},params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:forms`]}],responses:{200:{content:{"application/json":{schema:Ln}},description:`The updated form`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=e.req.valid(`json`),i=await e.env.data.forms.get(t,n);if(!await e.env.data.forms.update(t,n,r))throw new m(404,{message:`Form not found`});let a=await e.env.data.forms.get(t,n);if(!a)throw new m(404,{message:`Form not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Update a Form`,targetType:`form`,targetId:n,...i?{beforeState:{...i}}:{},afterState:a}),e.json(a)}}),Pme=F({route:(0,f.createRoute)({tags:[`forms`],method:`post`,path:`/`,request:{body:{content:{"application/json":{schema:In}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`create:forms`]}],responses:{201:{content:{"application/json":{schema:Ln}},description:`A form`}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`),r=await e.env.data.forms.create(t,n);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Create a Form`,targetType:`form`,targetId:r.id,afterState:r}),e.json(r,{status:201})}}),Fme=new f.OpenAPIHono().openapiRoutes([Ame,jme,Mme,Nme,Pme]),Ime=Eo({flows:f.z.array(vt)}),Lme=F({route:(0,f.createRoute)({tags:[`flows`],method:`get`,path:`/`,request:{query:wo,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:flows`]}],responses:{200:{content:{"application/json":{schema:f.z.union([f.z.array(vt),Ime])}},description:`List of flows`}}}),handler:async e=>{let t=I(e),{page:n,per_page:r,include_totals:i=!1,sort:a,q:o}=e.req.valid(`query`),s=await e.env.data.flows.list(t,{page:n,per_page:r,include_totals:i,sort:To(a),q:o});return e.json(Do(i,s,`flows`))}}),Rme=F({route:(0,f.createRoute)({tags:[`flows`],method:`get`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:flows`]}],responses:{200:{content:{"application/json":{schema:vt}},description:`A flow`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await e.env.data.flows.get(t,n);if(!r)throw new m(404);return e.json(r)}}),zme=F({route:(0,f.createRoute)({tags:[`flows`],method:`delete`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`delete:flows`]}],responses:{200:{description:`Status`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await e.env.data.flows.get(t,n);if(!await e.env.data.flows.remove(t,n))throw new m(404,{message:`Flow not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete a Flow`,targetType:`flow`,targetId:n,...r?{beforeState:{...r}}:{}}),e.text(`OK`)}}),Bme=F({route:(0,f.createRoute)({tags:[`flows`],method:`patch`,path:`/{id}`,request:{body:{content:{"application/json":{schema:f.z.object(_t.shape).partial()}}},params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:flows`]}],responses:{200:{content:{"application/json":{schema:vt}},description:`The updated flow`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=e.req.valid(`json`),i=await e.env.data.flows.get(t,n),a=await e.env.data.flows.update(t,n,r);if(!a)throw new m(404,{message:`Flow not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Update a Flow`,targetType:`flow`,targetId:n,...i?{beforeState:{...i}}:{},afterState:a}),e.json(a)}}),Vme=F({route:(0,f.createRoute)({tags:[`flows`],method:`post`,path:`/`,request:{body:{content:{"application/json":{schema:f.z.object(_t.shape)}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`create:flows`]}],responses:{201:{content:{"application/json":{schema:vt}},description:`The created flow`}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`),r=await e.env.data.flows.create(t,n);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Create a Flow`,targetType:`flow`,targetId:r.id,afterState:r}),e.json(r,{status:201})}}),Hme=new f.OpenAPIHono().openapiRoutes([Lme,Rme,zme,Bme,Vme]),Ume=Eo({roles:f.z.array(Xi)}),Wme=f.z.object({roles:f.z.array(Xi),next:f.z.string().optional().openapi({description:`Opaque cursor for the next page; absent on the last page.`})}),Gme=Eo({permissions:f.z.array(Ii)}),Kme=f.z.object({permissions:f.z.array(Ii),next:f.z.string().optional().openapi({description:`Opaque cursor for the next page; absent on the last page.`})}),JZ=f.z.object({user_id:f.z.string(),email:f.z.string().optional(),name:f.z.string().optional(),picture:f.z.string().optional()}),qme=Eo({users:f.z.array(JZ)}),Jme=f.z.object({next:f.z.string().optional().openapi({description:`Checkpoint cursor to be used to retrieve the next set of results`}),users:f.z.array(JZ)}),YZ=f.z.string().optional().refine(e=>!e||/^\d+$/.test(e),{message:`take must be a positive integer`}).transform(e=>e?Number(e):void 0).openapi({description:`Number of results per page. Defaults to 50.`}),Yme=wo.pick({page:!0,per_page:!0,include_totals:!0,from:!0,take:!0}).extend({per_page:wo.shape.per_page.pipe(f.z.number().int().min(0).max(100)),take:YZ.pipe(f.z.number().int().min(1).max(100).optional())}),XZ=wo.extend({take:YZ.pipe(f.z.number().int().min(1).optional())}),Xme=F({route:(0,f.createRoute)({tags:[`roles`],method:`get`,path:`/`,request:{query:XZ,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:roles`]}],responses:{200:{content:{"application/json":{schema:f.z.union([f.z.array(Xi),Ume,Wme])}},description:`List of roles`}}}),handler:async e=>{let{page:t,per_page:n,include_totals:r,sort:i,q:a,from:o,take:s}=e.req.valid(`query`);if((o!==void 0||s!==void 0)&&i!==void 0)throw new m(400,{message:`Sorting is not supported with checkpoint pagination for roles`});let c=I(e),l=await e.env.data.roles.list(c,{page:t,per_page:n,include_totals:r,sort:To(i),q:a,from:o,take:s});return o!==void 0||s!==void 0?e.json({roles:l.roles,next:l.next}):e.json(Do(r,l,`roles`))}}),Zme=F({route:(0,f.createRoute)({tags:[`roles`],method:`get`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:roles`]}],responses:{200:{content:{"application/json":{schema:Xi}},description:`A role`}}}),handler:async e=>{let{id:t}=e.req.valid(`param`),n=I(e),r=await e.env.data.roles.get(n,t);if(!r)throw new m(404);return e.json(r)}}),Qme=F({route:(0,f.createRoute)({tags:[`roles`],method:`post`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:Yi}}}},security:[{Bearer:[`create:roles`]}],responses:{201:{content:{"application/json":{schema:Xi}},description:`Role created`}}}),handler:async e=>{let t=e.req.valid(`json`),n=I(e),r=await e.env.data.roles.create(n,t);return await P(e,n,{type:M.SUCCESS_API_OPERATION,description:`Create a Role`,targetType:`role`,targetId:r.id,afterState:r}),e.json(r,{status:201})}}),$me=F({route:(0,f.createRoute)({tags:[`roles`],method:`patch`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:Yi.partial()}}}},security:[{Bearer:[`update:roles`]}],responses:{200:{content:{"application/json":{schema:Xi}},description:`Updated role`}}}),handler:async e=>{let{id:t}=e.req.valid(`param`),n=e.req.valid(`json`),r=I(e),i=await e.env.data.roles.get(r,t);if(!await e.env.data.roles.update(r,t,n))throw new m(404);let a=await e.env.data.roles.get(r,t);return await P(e,r,{type:M.SUCCESS_API_OPERATION,description:`Update a Role`,targetType:`role`,targetId:t,...i?{beforeState:{...i}}:{},afterState:a}),e.json(a)}}),ehe=F({route:(0,f.createRoute)({tags:[`roles`],method:`delete`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`delete:roles`]}],responses:{200:{description:`Status`}}}),handler:async e=>{let{id:t}=e.req.valid(`param`),n=I(e),r=await e.env.data.roles.get(n,t);if(!await e.env.data.roles.remove(n,t))throw new m(404);return await P(e,n,{type:M.SUCCESS_API_OPERATION,description:`Delete a Role`,targetType:`role`,targetId:t,...r?{beforeState:{...r}}:{}}),e.text(`OK`)}}),the=F({route:(0,f.createRoute)({tags:[`roles`],method:`get`,path:`/{id}/permissions`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),query:XZ},security:[{Bearer:[`read:roles`]}],responses:{200:{content:{"application/json":{schema:f.z.union([Li,Gme,Kme])}},description:`Role permissions`}}}),handler:async e=>{let{id:t}=e.req.valid(`param`),{page:n,per_page:r,include_totals:i,sort:a,q:o,from:s,take:c}=e.req.valid(`query`),l=s!==void 0||c!==void 0;if(l&&(a!==void 0||o!==void 0))throw new m(400,{message:`Sorting and filtering are not supported with checkpoint pagination for role permissions`});let u=I(e);if(!await e.env.data.roles.get(u,t))throw new m(404,{message:`Role not found`});if(l){let n=e.env.data.rolePermissions;if(!n.listCheckpoint)throw new m(501,{message:`Checkpoint pagination is not supported for role permissions by this data adapter`});let r=await n.listCheckpoint(u,t,{from:s,take:c});return e.json({permissions:r.permissions,next:r.next})}if(i){let i=await e.env.data.rolePermissions.list(u,t,{per_page:1e4,sort:To(a),q:o}),s=r??50,c=(n??0)*s,l=i.slice(c,c+s);return e.json({permissions:l,total:i.length,start:c,limit:s,length:l.length})}let d=await e.env.data.rolePermissions.list(u,t,{page:n,per_page:r,include_totals:!1,sort:To(a),q:o});return e.json(d)}}),nhe=F({route:(0,f.createRoute)({tags:[`roles`],method:`get`,path:`/{id}/users`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),query:Yme},security:[{Bearer:[`read:roles`]}],responses:{200:{content:{"application/json":{schema:f.z.union([f.z.array(JZ),qme,Jme])}},description:`Users assigned to the role`}}}),handler:async e=>{let{id:t}=e.req.valid(`param`),{page:n,per_page:r,include_totals:i,from:a,take:o}=e.req.valid(`query`),s=I(e);if(!await e.env.data.roles.get(s,t))throw new m(404,{message:`Role not found`});let c=await e.env.data.userRoles.listUsers(s,t,{page:n,per_page:r,include_totals:i,from:a,take:o}),l=await Promise.all(c.userIds.map(async t=>{let n=await e.env.data.users.get(s,t);return n?{user_id:n.user_id,email:n.email||void 0,name:n.name||void 0,picture:n.picture||Fj(to(e.env,e.var.custom_domain),n)}:null})).then(e=>e.filter(e=>e!==null));return a!==void 0||o!==void 0?e.json({users:l,next:c.next}):i?e.json({users:l,start:c.start,limit:c.limit,length:l.length,total:c.length}):e.json(l)}}),rhe=F({route:(0,f.createRoute)({tags:[`roles`],method:`post`,path:`/{id}/permissions`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:f.z.object({permissions:f.z.array(f.z.object({permission_name:f.z.string(),resource_server_identifier:f.z.string()}))})}}}},security:[{Bearer:[`update:roles`]}],responses:{204:{description:`Permissions assigned to role`}}}),handler:async e=>{let{id:t}=e.req.valid(`param`),{permissions:n}=e.req.valid(`json`),r=I(e);if(!await e.env.data.roles.get(r,t))throw new m(404,{message:`Role not found`});let i=n.map(e=>({role_id:t,resource_server_identifier:e.resource_server_identifier,permission_name:e.permission_name}));if(!await e.env.data.rolePermissions.assign(r,t,i))throw new m(500,{message:`Failed to assign permissions to role`});return await P(e,r,{type:M.SUCCESS_API_OPERATION,description:`Assign Permissions to a Role`,targetType:`role_permission`,targetId:t}),e.body(null,204)}}),ihe=F({route:(0,f.createRoute)({tags:[`roles`],method:`delete`,path:`/{id}/permissions`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:f.z.object({permissions:f.z.array(f.z.object({permission_name:f.z.string(),resource_server_identifier:f.z.string()}))})}}}},security:[{Bearer:[`update:roles`]}],responses:{200:{description:`Permissions removed from role`}}}),handler:async e=>{let{id:t}=e.req.valid(`param`),{permissions:n}=e.req.valid(`json`),r=I(e);if(!await e.env.data.roles.get(r,t))throw new m(404,{message:`Role not found`});if(!await e.env.data.rolePermissions.remove(r,t,n))throw new m(500,{message:`Failed to remove permissions from role`});return await P(e,r,{type:M.SUCCESS_API_OPERATION,description:`Remove Permissions from a Role`,targetType:`role_permission`,targetId:t}),e.json({message:`Permissions removed successfully`})}}),ahe=new f.OpenAPIHono().openapiRoutes([Xme,Zme,Qme,$me,ehe,the,nhe,rhe,ihe]),ohe=Eo({resource_servers:f.z.array(Ni)}),she=f.z.object({resource_servers:f.z.array(Ni),next:f.z.string().optional().openapi({description:`Opaque cursor for the next page; absent on the last page.`})});async function ZZ(e,t,n){return await e.env.data.resourceServers.get(t,n)||((await e.env.data.resourceServers.list(t,{})).resource_servers.find(e=>e.identifier===n)??null)}var che=F({route:(0,f.createRoute)({tags:[`resource-servers`],method:`get`,path:`/`,request:{query:wo,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:resource_servers`]}],responses:{200:{content:{"application/json":{schema:f.z.union([f.z.array(Ni),ohe,she])}},description:`List of resource servers`}}}),handler:async e=>{let t=I(e),{page:n,per_page:r,include_totals:i=!1,sort:a,q:o,from:s,take:c}=e.req.valid(`query`),l=await e.env.data.resourceServers.list(t,{page:n,per_page:r,include_totals:i,sort:To(a),q:o,from:s,take:c});return s!==void 0||c!==void 0?e.json({resource_servers:l.resource_servers,next:l.next}):e.json(Do(i,l,`resource_servers`))}}),lhe=F({route:(0,f.createRoute)({tags:[`resource-servers`],method:`get`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:resource_servers`]}],responses:{200:{content:{"application/json":{schema:Ni}},description:`A resource server`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await ZZ(e,t,n);if(!r)throw new m(404);return e.json(r)}}),uhe=F({route:(0,f.createRoute)({tags:[`resource-servers`],method:`delete`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`delete:resource_servers`]}],responses:{200:{description:`Status`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await ZZ(e,t,n);if(!r)throw new m(404,{message:`Resource server not found`});if(r.is_system)throw new m(403,{message:`System entities cannot be deleted`});if((await e.env.data.tenants.get(t))?.default_audience===r.identifier)throw new m(409,{message:`Resource server is set as the tenant's default_audience; clear it before deleting`});return await e.env.data.resourceServers.remove(t,r.id),await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete a Resource Server`,targetType:`resource_server`,targetId:r.id,beforeState:r}),e.text(`OK`)}}),dhe=F({route:(0,f.createRoute)({tags:[`resource-servers`],method:`patch`,path:`/{id}`,request:{body:{content:{"application/json":{schema:f.z.object(Mi.shape).partial()}}},params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:resource_servers`]}],responses:{200:{content:{"application/json":{schema:Ni}},description:`The updated resource server`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=e.req.valid(`json`),i=await ZZ(e,t,n);if(!i)throw new m(404,{message:`Resource server not found`});if(i.is_system)throw new m(403,{message:`System entities cannot be modified`});let a=i.id;await e.env.data.resourceServers.update(t,a,r);let o=await e.env.data.resourceServers.get(t,a);if(!o)throw new m(404,{message:`Resource server not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Update a Resource Server`,targetType:`resource_server`,targetId:o.id,beforeState:i,afterState:o}),e.json(o)}}),fhe=F({route:(0,f.createRoute)({tags:[`resource-servers`],method:`post`,path:`/`,request:{body:{content:{"application/json":{schema:f.z.object(Mi.shape)}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`create:resource_servers`]}],responses:{201:{content:{"application/json":{schema:Ni}},description:`A resource server`}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`),r=await e.env.data.resourceServers.create(t,n);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Create a Resource Server`,targetType:`resource_server`,targetId:r.id,afterState:r}),e.json(r,{status:201})}}),phe=new f.OpenAPIHono().openapiRoutes([che,lhe,uhe,dhe,fhe]),mhe=f.z.object({per_page:f.z.string().min(1).optional().default(`50`).transform(e=>parseInt(e,10)).openapi({description:`Number of results per page. Defaults to 50.`}),page:f.z.string().min(0).optional().default(`0`).transform(e=>parseInt(e,10)).openapi({description:`Page index of the results to return. First page is 0.`}),include_totals:f.z.string().optional().default(`false`).transform(e=>e===`true`).openapi({description:`Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).`}),from:f.z.string().optional().openapi({description:`Optional Id from which to start selection.`}),take:f.z.string().min(1).optional().transform(e=>e?parseInt(e,10):void 0).openapi({description:`Number of results per page. Defaults to 50.`}),audience:f.z.string().optional().openapi({description:`Optional filter on audience.`}),client_id:f.z.string().optional().openapi({description:`Optional filter on client_id.`}),allow_any_organization:f.z.string().optional().transform(e=>e===`true`?!0:e===`false`?!1:void 0).openapi({description:`Optional filter on allow_any_organization.`}),subject_type:f.z.enum([`client`,`user`]).optional().openapi({description:`EA The type of application access the client grant allows. Use of this field is subject to the applicable Free Trial terms in Okta's Master Subscription Agreement.`})}),hhe=Eo({client_grants:f.z.array(jt)}),ghe=f.z.object({client_grants:f.z.array(jt),next:f.z.string().optional().openapi({description:`Opaque cursor for the next page; absent on the last page.`})});async function QZ(e,t,n){let{audience:r,scope:i}=n;if(!r||!i?.length)return;let a=await UH(e,{tenantId:t,audience:r,scopes:i});if(a.length!==0){if((await e.env.data.tenants.get(t))?.flags?.restrict_undefined_scopes===!0)throw new m(400,{message:`Scope(s) not defined on the resource server for audience ${r}: ${a.join(`, `)}`});console.warn(`[client-grants] Client grant references scope(s) not defined on the resource server, they will be dropped from issued tokens: ${a.join(`, `)} (tenant_id=${t}, client_id=${n.client_id}, audience=${r})`)}}var _he=F({route:(0,f.createRoute)({tags:[`client-grants`],method:`get`,path:`/`,request:{query:mhe,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:client_grants`]}],responses:{200:{content:{"application/json":{schema:f.z.union([f.z.array(jt),hhe,ghe])}},description:`List of client grants`}}}),handler:async e=>{let t=I(e),{page:n,per_page:r,include_totals:i=!1,from:a,take:o,audience:s,client_id:c,allow_any_organization:l,subject_type:u}=e.req.valid(`query`),d=[];c&&d.push(`client_id:"${c}"`),s&&d.push(`audience:"${s}"`),l!==void 0&&d.push(`allow_any_organization:${l}`),u&&d.push(`subject_type:"${u}"`);let f=d.length>0?d.join(` AND `):void 0,p=await e.env.data.clientGrants.list(t,{page:n,per_page:r,include_totals:i,q:f,from:a,take:o});return a!==void 0||o!==void 0?e.json({client_grants:p.client_grants,next:p.next}):e.json(Do(i,p,`client_grants`))}}),vhe=F({route:(0,f.createRoute)({tags:[`client-grants`],method:`get`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:client_grants`]}],responses:{200:{content:{"application/json":{schema:jt}},description:`A client grant`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await e.env.data.clientGrants.get(t,n);if(!r)throw new m(404,{message:`Client grant not found`});return e.json(r)}}),yhe=F({route:(0,f.createRoute)({tags:[`client-grants`],method:`delete`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`delete:client_grants`]}],responses:{200:{description:`Status`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`);if(!await e.env.data.clientGrants.remove(t,n))throw new m(404,{message:`Client grant not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete a Client Grant`,targetType:`client_grant`,targetId:n}),e.text(`OK`)}}),bhe=F({route:(0,f.createRoute)({tags:[`client-grants`],method:`patch`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),body:{content:{"application/json":{schema:f.z.object(At.shape).partial()}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:client_grants`]}],responses:{200:{content:{"application/json":{schema:jt}},description:`The updated client grant`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=e.req.valid(`json`),i=await e.env.data.clientGrants.get(t,n);if(!i)throw new m(404,{message:`Client grant not found`});if(await QZ(e,t,{client_id:r.client_id??i.client_id,audience:r.audience??i.audience,scope:r.scope??i.scope}),!await e.env.data.clientGrants.update(t,n,r))throw new m(500,{message:`Failed to update client grant`});let a=await e.env.data.clientGrants.get(t,n);if(!a)throw new m(404,{message:`Client grant not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Update a Client Grant`,targetType:`client_grant`,targetId:n,beforeState:i,afterState:a}),e.json(a)}}),xhe=F({route:(0,f.createRoute)({tags:[`client-grants`],method:`post`,path:`/`,request:{body:{content:{"application/json":{schema:f.z.object(At.shape)}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`create:client_grants`]}],responses:{201:{content:{"application/json":{schema:jt}},description:`A client grant`}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`);await QZ(e,t,n);let r=await e.env.data.clientGrants.create(t,n);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Create a Client Grant`,targetType:`client_grant`,targetId:r.id,afterState:r}),e.json(r,{status:201})}}),She=new f.OpenAPIHono().openapiRoutes([_he,vhe,yhe,bhe,xhe]),Che=f.z.object({per_page:f.z.string().optional().default(`50`).transform(e=>parseInt(e,10)).openapi({description:`Number of results per page. Defaults to 50.`}),page:f.z.string().optional().default(`0`).transform(e=>parseInt(e,10)).openapi({description:`Page index of the results to return. First page is 0.`}),include_totals:f.z.string().optional().default(`false`).transform(e=>e===`true`).openapi({description:`Return totals envelope (true) or a plain array (false, default).`}),user_id:f.z.string().optional().openapi({description:`Filter grants by user_id.`}),client_id:f.z.string().optional().openapi({description:`Filter grants by clientID.`}),audience:f.z.string().optional().openapi({description:`Filter grants by audience.`})}),whe=Eo({grants:f.z.array(zi)}),The=F({route:(0,f.createRoute)({tags:[`grants`],method:`get`,path:`/`,request:{query:Che,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:grants`,`auth:read`]}],responses:{200:{content:{"application/json":{schema:f.z.union([f.z.array(zi),whe])}},description:`List of OAuth grants`}}}),handler:async e=>{let t=I(e),{page:n,per_page:r,include_totals:i,user_id:a,client_id:o,audience:s}=e.req.valid(`query`);if(!e.env.data.grants)return i?e.json({grants:[],start:0,limit:0,length:0}):e.json([]);let c=[];a&&c.push(`user_id:"${a}"`),o&&c.push(`client_id:"${o}"`),s&&c.push(`audience:"${s}"`);let l=c.length>0?c.join(` AND `):void 0,u=await e.env.data.grants.list(t,{page:n,per_page:r,include_totals:i,q:l});return e.json(Do(i,u,`grants`))}}),Ehe=F({route:(0,f.createRoute)({tags:[`grants`],method:`delete`,path:`/{id}`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),params:f.z.object({id:f.z.string()})},security:[{Bearer:[`delete:grants`]}],responses:{204:{description:`Grant removed`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`);if(!e.env.data.grants||!await e.env.data.grants.remove(t,n))throw new m(404);return e.body(null,204)}}),Dhe=F({route:(0,f.createRoute)({tags:[`grants`],method:`delete`,path:`/`,request:{query:f.z.object({user_id:f.z.string().openapi({description:`Delete all grants for the given user_id.`})}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`delete:grants`]}],responses:{204:{description:`Grants removed`}}}),handler:async e=>{let t=I(e),{user_id:n}=e.req.valid(`query`);return e.env.data.grants&&await e.env.data.grants.removeByUser(t,n),e.body(null,204)}}),Ohe=new f.OpenAPIHono().openapiRoutes([The,Ehe,Dhe]);function khe(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}async function $Z(e){let t=new TextEncoder().encode(e);return za(await crypto.subtle.digest(`SHA-256`,t))}async function eQ(){let e=Aa(khe(32)),t=await $Z(e);return{id:ts(),token:e,token_hash:t}}var Ahe=300;async function tQ(e,t,n={}){let r=await eQ(),i=n.expires_in_seconds??Ahe,a=new Date(Date.now()+i*1e3).toISOString(),o=await e.create(t,{id:r.id,token_hash:r.token_hash,type:`iat`,sub:n.sub,constraints:n.constraints,single_use:n.single_use??!0,expires_at:a});return{id:r.id,token:r.token,expires_at:a,record:o}}async function nQ(e,t,n,r){let i=await $Z(n),a=await e.getByHash(t,i);return a?a.type===r?a.revoked_at?{ok:!1,failure:`revoked`}:a.expires_at&&new Date(a.expires_at).getTime()<=Date.now()?{ok:!1,failure:`expired`}:a.single_use&&a.used_at?{ok:!1,failure:`already_used`}:{ok:!0,token:a}:{ok:!1,failure:`wrong_type`}:{ok:!1,failure:`not_found`}}function rQ(e,t){return`${io(e.env,e.var.custom_domain)}oidc/register/${t}`}async function iQ(e){let t=await e.env.data.tenants.get(e.var.tenant_id);if(!t)throw new V(404,{error:`invalid_request`,error_description:`Tenant not found`});return t}function aQ(e){if(!e.flags?.enable_dynamic_client_registration)throw new V(404,{error:`invalid_request`,error_description:`Dynamic Client Registration is not enabled`})}function oQ(e){if(!e.clientRegistrationTokens)throw new V(500,{error:`server_error`,error_description:`Dynamic Client Registration requires a clientRegistrationTokens adapter`});return e.clientRegistrationTokens}async function jhe(e,t){let n=$j(e.req.header(`authorization`));if(n){let t=await nQ(oQ(e.env.data),e.var.tenant_id,n,`iat`);if(!t.ok||!t.token)throw new V(401,{error:`invalid_token`,error_description:`Initial access token ${t.failure??`invalid`}`});return t.token}if(t.flags?.dcr_require_initial_access_token===!0)throw new V(401,{error:`invalid_token`,error_description:`Initial access token required`})}async function sQ(e,t){let n=$j(e.req.header(`authorization`));if(!n)throw new V(401,{error:`invalid_token`,error_description:`Registration access token required`});let r=await nQ(oQ(e.env.data),e.var.tenant_id,n,`rat`);if(!r.ok||!r.token)throw new V(401,{error:`invalid_token`,error_description:`Registration access token ${r.failure??`invalid`}`});if(r.token.client_id!==t)throw new V(401,{error:`invalid_token`,error_description:`Registration access token is not bound to this client`});return r.token}function cQ(e){return e.client_metadata?.status===`deleted`}function Mhe(){return ts(24)}function Nhe(){return ts(43)}var Phe=f.z.object({sub:f.z.string().optional().openapi({description:`User ID to bind the IAT to (optional)`}),constraints:f.z.record(f.z.string(),f.z.unknown()).optional().openapi({description:`Pre-bound metadata that the registration request must match exactly (or omit, in which case the value is filled in from this map)`}),expires_in_seconds:f.z.number().int().min(30).max(3600*24).optional().openapi({description:`Token TTL in seconds. Default 300 (5 minutes).`}),single_use:f.z.boolean().optional().openapi({description:`Whether the IAT is invalidated after first use. Default true.`})}),Fhe=f.z.object({id:f.z.string(),token:f.z.string(),expires_at:f.z.string(),sub:f.z.string().optional(),constraints:f.z.record(f.z.string(),f.z.unknown()).optional(),single_use:f.z.boolean()}),Ihe=F({route:(0,f.createRoute)({tags:[`client-registration-tokens`],method:`post`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:Phe}}}},security:[{Bearer:[`create:client_registration_tokens`]}],responses:{201:{content:{"application/json":{schema:Fhe}},description:"Initial Access Token issued. The `token` field is shown once and not retrievable later."}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`),r=await tQ(oQ(e.env.data),t,{sub:n.sub,constraints:n.constraints,expires_in_seconds:n.expires_in_seconds,single_use:n.single_use});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`DCR Initial Access Token issued via Management API`,targetType:`client_registration_token`,targetId:r.id,userId:n.sub}),e.json({id:r.id,token:r.token,expires_at:r.expires_at,sub:r.record.sub,constraints:r.record.constraints,single_use:r.record.single_use},201)}}),Lhe=new f.OpenAPIHono().openapiRoutes([Ihe]);function Rhe(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}async function lQ(e){let t=new TextEncoder().encode(e);return za(await crypto.subtle.digest(`SHA-256`,t))}async function zhe(){let e=Aa(Rhe(32)),t=await lQ(e);return{token_id:`scimtok_${ts()}`,token:e,token_hash:t}}var uQ=[{scim:`userName`,auth0:`email`},{scim:`emails[primary eq true].value`,auth0:`email`},{scim:`name.givenName`,auth0:`given_name`},{scim:`name.familyName`,auth0:`family_name`},{scim:`displayName`,auth0:`name`},{scim:`active`,auth0:`blocked`}],Bhe=`externalId`,dQ=f.z.object({connection_id:f.z.string(),connection_name:f.z.string(),strategy:f.z.string(),user_id_attribute:f.z.string(),mapping:f.z.array(xi),created_at:f.z.string(),updated_at:f.z.string()}),fQ=f.z.object({user_id_attribute:f.z.string().optional().openapi({description:"Which SCIM attribute is used as the stable external identifier. Defaults to `externalId`."}),mapping:f.z.array(xi).optional().openapi({description:`Attribute mapping between SCIM resource fields and AuthHero user fields. Defaults to the standard mapping when omitted.`})}),pQ=f.z.object({token_id:f.z.string(),scopes:f.z.array(f.z.string()),valid_until:f.z.string().optional(),created_at:f.z.string(),last_used_at:f.z.string().optional()}),Vhe=f.z.object({scopes:f.z.array(f.z.string()).optional(),valid_until:f.z.string().datetime().optional().openapi({description:`ISO timestamp after which the token is rejected.`})}),Hhe=pQ.extend({token:f.z.string().openapi({description:`The bearer token. Shown once and not retrievable later.`})}),mQ=f.z.object({"tenant-id":f.z.string().optional()});function hQ(e){if(!e.scimConfigurations||!e.scimTokens)throw new m(501,{message:`SCIM is not supported by this deployment`});return{scimConfigurations:e.scimConfigurations,scimTokens:e.scimTokens}}async function gQ(e,t,n){let r=await e.env.data.connections.get(t,n);if(!r)throw new m(404,{message:`Connection not found`});return r}function _Q(e,t){return{connection_id:e.connection_id,connection_name:t.name,strategy:t.strategy,user_id_attribute:e.user_id_attribute,mapping:e.mapping,created_at:e.created_at,updated_at:e.updated_at}}var Uhe=F({route:(0,f.createRoute)({tags:[`scim`],method:`get`,path:`/`,request:{headers:mQ},security:[{Bearer:[`read:scim_config`]}],responses:{200:{content:{"application/json":{schema:dQ}},description:`The SCIM configuration for the connection`}}}),handler:async e=>{let t=I(e),n=e.req.param(`id`),{scimConfigurations:r}=hQ(e.env.data),i=await gQ(e,t,n),a=await r.get(t,n);if(!a)throw new m(404,{message:`SCIM configuration not found`});return e.json(_Q(a,i),200)}}),Whe=F({route:(0,f.createRoute)({tags:[`scim`],method:`post`,path:`/`,request:{headers:mQ,body:{content:{"application/json":{schema:fQ}}}},security:[{Bearer:[`create:scim_config`]}],responses:{201:{content:{"application/json":{schema:dQ}},description:`The created SCIM configuration`}}}),handler:async e=>{let t=I(e),n=e.req.param(`id`),r=e.req.valid(`json`),{scimConfigurations:i}=hQ(e.env.data),a=await gQ(e,t,n);if(await i.get(t,n))throw new m(409,{message:`SCIM configuration already exists for this connection`});let o=await i.create(t,{connection_id:n,user_id_attribute:r.user_id_attribute??`externalId`,mapping:r.mapping??[...uQ]});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`SCIM configuration created`,targetType:`scim_configuration`,targetId:n}),e.json(_Q(o,a),201)}}),Ghe=F({route:(0,f.createRoute)({tags:[`scim`],method:`patch`,path:`/`,request:{headers:mQ,body:{content:{"application/json":{schema:fQ}}}},security:[{Bearer:[`update:scim_config`]}],responses:{200:{content:{"application/json":{schema:dQ}},description:`The updated SCIM configuration`}}}),handler:async e=>{let t=I(e),n=e.req.param(`id`),r=e.req.valid(`json`),{scimConfigurations:i}=hQ(e.env.data),a=await gQ(e,t,n);if(!await i.update(t,n,{user_id_attribute:r.user_id_attribute,mapping:r.mapping}))throw new m(404,{message:`SCIM configuration not found`});let o=await i.get(t,n);if(!o)throw new m(404,{message:`SCIM configuration not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`SCIM configuration updated`,targetType:`scim_configuration`,targetId:n}),e.json(_Q(o,a),200)}}),Khe=F({route:(0,f.createRoute)({tags:[`scim`],method:`delete`,path:`/`,request:{headers:mQ},security:[{Bearer:[`delete:scim_config`]}],responses:{204:{description:`The SCIM configuration was deleted`}}}),handler:async e=>{let t=I(e),n=e.req.param(`id`),{scimConfigurations:r,scimTokens:i}=hQ(e.env.data);if(!await r.remove(t,n))throw new m(404,{message:`SCIM configuration not found`});let a=await i.listByConnection(t,n);for(let e of a)await i.remove(t,e.token_id);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`SCIM configuration deleted`,targetType:`scim_configuration`,targetId:n}),e.body(null,204)}}),qhe=F({route:(0,f.createRoute)({tags:[`scim`],method:`get`,path:`/default-mapping`,request:{headers:mQ},security:[{Bearer:[`read:scim_config`]}],responses:{200:{content:{"application/json":{schema:f.z.object({user_id_attribute:f.z.string(),mapping:f.z.array(xi)})}},description:`The default SCIM attribute mapping`}}}),handler:async e=>e.json({user_id_attribute:Bhe,mapping:uQ},200)}),Jhe=F({route:(0,f.createRoute)({tags:[`scim`],method:`get`,path:`/tokens`,request:{headers:mQ},security:[{Bearer:[`read:scim_token`]}],responses:{200:{content:{"application/json":{schema:f.z.array(pQ)}},description:`SCIM token metadata (never the raw secrets)`}}}),handler:async e=>{let t=I(e),n=e.req.param(`id`),{scimTokens:r}=hQ(e.env.data);await gQ(e,t,n);let i=await r.listByConnection(t,n);return e.json(i.map(e=>({token_id:e.token_id,scopes:e.scopes,valid_until:e.valid_until,created_at:e.created_at,last_used_at:e.last_used_at})),200)}}),Yhe=F({route:(0,f.createRoute)({tags:[`scim`],method:`post`,path:`/tokens`,request:{headers:mQ,body:{content:{"application/json":{schema:Vhe}}}},security:[{Bearer:[`create:scim_token`]}],responses:{201:{content:{"application/json":{schema:Hhe}},description:"The created SCIM token. The `token` field is shown once and not retrievable later."}}}),handler:async e=>{let t=I(e),n=e.req.param(`id`),r=e.req.valid(`json`),{scimConfigurations:i,scimTokens:a}=hQ(e.env.data);if(await gQ(e,t,n),!await i.get(t,n))throw new m(404,{message:`SCIM configuration not found`});let o=await zhe(),s=await a.create(t,{token_id:o.token_id,connection_id:n,token_hash:o.token_hash,scopes:r.scopes??[],valid_until:r.valid_until});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`SCIM token created`,targetType:`scim_token`,targetId:s.token_id}),e.json({token_id:s.token_id,token:o.token,scopes:s.scopes,valid_until:s.valid_until,created_at:s.created_at,last_used_at:s.last_used_at},201)}}),Xhe=F({route:(0,f.createRoute)({tags:[`scim`],method:`delete`,path:`/tokens/{tokenId}`,request:{headers:mQ},security:[{Bearer:[`delete:scim_token`]}],responses:{204:{description:`The SCIM token was deleted`}}}),handler:async e=>{let t=I(e),n=e.req.param(`id`),r=e.req.param(`tokenId`),{scimTokens:i}=hQ(e.env.data);await gQ(e,t,n);let a=await i.get(t,r);if(!a||a.connection_id!==n||!await i.remove(t,r))throw new m(404,{message:`SCIM token not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`SCIM token deleted`,targetType:`scim_token`,targetId:r}),e.body(null,204)}}),Zhe=new f.OpenAPIHono().openapiRoutes([Uhe,Whe,Ghe,Khe,qhe,Jhe,Yhe,Xhe]),Qhe=f.z.object({page:f.z.string().optional().default(`0`).transform(e=>parseInt(e,10)).openapi({description:`Page index of the results to return. First page is 0.`}),per_page:f.z.string().optional().default(`50`).transform(e=>parseInt(e,10)).openapi({description:`Number of results per page. Defaults to 50.`}),include_totals:f.z.string().optional().default(`false`).transform(e=>e===`true`).openapi({description:`When true, return results inside an object that also contains the start and limit. When false (default), a direct array of results is returned.`}),fields:f.z.string().optional().openapi({description:`Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.`}),include_fields:f.z.string().optional().default(`true`).transform(e=>e===`true`).openapi({description:`Whether specified fields are to be included (true) or excluded (false). Defaults to true.`}),sort:f.z.string().optional().default(`created_at:-1`).openapi({description:`Field to sort by. Use field:order where order is 1 for ascending and -1 for descending. Defaults to created_at:-1.`})}),$he=f.z.object({invitations:f.z.array(nr),start:f.z.number(),limit:f.z.number(),length:f.z.number()}),ege=tr.omit({organization_id:!0,invitation_url:!0}),tge=Eo({organizations:f.z.array(na)}),nge=f.z.object({organizations:f.z.array(na),next:f.z.string().optional().openapi({description:`Opaque cursor for the next page; absent on the last page.`})}),vQ=f.z.object({user_id:f.z.string().openapi({description:`ID of this user`}),email:f.z.string().email().optional().openapi({description:`Email address of this user`,format:`email`}),name:f.z.string().optional().openapi({description:`Name of this user`}),picture:f.z.string().optional().openapi({description:`Picture URL for this user`}),roles:f.z.array(Xi).default([]).openapi({description:`Array of roles assigned to this user in the organization`})}),rge=f.z.object({start:f.z.number().openapi({description:`Start index of the current page`}),limit:f.z.number().openapi({description:`Number of items per page`}),total:f.z.number().openapi({description:`Total number of members`}),members:f.z.array(vQ).openapi({description:`Array of organization members`})}),ige=f.z.object({next:f.z.string().optional().openapi({description:`Checkpoint ID to be used to retrieve the next set of results`}),members:f.z.array(vQ).openapi({description:`Array of organization members`})}),age=f.z.object({members:f.z.array(f.z.string()).openapi({description:`Array of user IDs to add to the organization`})}),oge=f.z.object({members:f.z.array(f.z.string()).openapi({description:`Array of user IDs to remove from the organization`})}),sge=f.z.object({scope:f.z.union([f.z.string(),f.z.array(f.z.string())]).optional(),permissions:f.z.array(f.z.string()).optional()}).passthrough(),cge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`get`,path:`/`,request:{query:wo,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:organizations`,LH]}],responses:{200:{content:{"application/json":{schema:f.z.union([tge,nge,f.z.array(na)])}},description:`List of organizations`}}}),handler:async e=>{let t=I(e),{page:n,per_page:r,include_totals:i,sort:a,q:o,from:s,take:c}=e.req.valid(`query`);if(e.var.organization_id){let t=sge.safeParse(e.var.user),n=t.success?[...t.data.permissions??[],...typeof t.data.scope==`string`?t.data.scope.split(` `).filter(Boolean):t.data.scope??[]]:[];if(!nM(`read:organizations`).some(e=>n.includes(e)))throw new V(403,{message:`Unauthorized`})}let l=await e.env.data.organizations.list(t,{page:n,per_page:r,include_totals:i,sort:To(a),q:o,from:s,take:c});return s!==void 0||c!==void 0?e.json({organizations:l.organizations,next:l.next}):e.json(Do(i,l,`organizations`))}}),lge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`get`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:organizations`]}],responses:{200:{content:{"application/json":{schema:na}},description:`An organization`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await e.env.data.organizations.get(t,n);if(!r)throw new m(404,{message:`Organization not found`});return e.json(r)}}),uge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`delete`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`delete:organizations`]}],responses:{200:{description:`Organization deleted successfully`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`);if(!await e.env.data.organizations.remove(t,n))throw new m(404,{message:`Organization not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete an Organization`,targetType:`organization`,targetId:n}),e.text(`OK`)}}),dge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`patch`,path:`/{id}`,request:{body:{content:{"application/json":{schema:ta.partial()}}},params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:organizations`]}],responses:{200:{content:{"application/json":{schema:na}},description:`The updated organization`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=e.req.valid(`json`),i=await e.env.data.organizations.get(t,n);if(!i||!await e.env.data.organizations.update(t,n,r))throw new m(404,{message:`Organization not found`});let a=await e.env.data.organizations.get(t,n);if(!a)throw new m(404,{message:`Organization not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Update an Organization`,targetType:`organization`,targetId:n,beforeState:i,afterState:a}),e.json(a)}}),fge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`post`,path:`/`,request:{body:{content:{"application/json":{schema:ta}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`create:organizations`]}],responses:{201:{content:{"application/json":{schema:na}},description:`The created organization`}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`),r={...n,id:n.id||as()},i=await e.env.data.organizations.create(t,r);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Create an Organization`,targetType:`organization`,targetId:i.id,afterState:i}),e.json(i,{status:201})}}),pge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`get`,path:`/{id}/members`,request:{params:f.z.object({id:f.z.string()}),query:wo,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:organizations`]}],responses:{200:{content:{"application/json":{schema:f.z.union([f.z.array(vQ),rge,ige])}},description:`List of organization members`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),{page:r,per_page:i,include_totals:a,sort:o,from:s,take:c}=e.req.valid(`query`),l=await e.env.data.organizations.get(t,n);if(!l)throw new m(404,{message:`Organization not found`});let u=await e.env.data.userOrganizations.list(t,{page:r,per_page:i,include_totals:a,sort:To(o),q:`organization_id:${Ha(l.id)}`,from:s,take:c}),d=await Promise.all(u.userOrganizations.map(async n=>{let r=await e.env.data.users.get(t,n.user_id);if(!r)return null;let i=await e.env.data.userRoles.list(t,r.user_id,void 0,l.id);return{user_id:r.user_id,email:r.email||void 0,name:r.name||void 0,picture:r.picture||Fj(to(e.env,e.var.custom_domain),r),roles:i}})).then(e=>e.filter(e=>e!==null));return s!==void 0||c!==void 0?e.json({members:d,next:u.next}):a?e.json({start:u.start,limit:u.limit,total:u.length,members:d}):e.json(d)}}),mge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`post`,path:`/{id}/members`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:age}}}},security:[{Bearer:[`update:organizations`]}],responses:{204:{description:`Members added successfully`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),{members:r}=e.req.valid(`json`),i=await e.env.data.organizations.get(t,n);if(!i)throw new m(404,{message:`Organization not found`});let a=[...new Set(r)],o=[];for(let n=0;n<a.length;n+=25){let r=a.slice(n,n+25);o.push(...await Promise.all(r.map(n=>e.env.data.users.get(t,n))))}if(o.some(e=>!e))throw new m(400,{message:`Some users do not exist`});for(let n of a){let r=!1;for(let a=0;!r;a++){let o=await e.env.data.userOrganizations.listUserOrganizations(t,n,{page:a,per_page:100});if(r=o.organizations.some(e=>e.id===i.id),o.organizations.length===0||a>=99)break}r||await e.env.data.userOrganizations.create(t,{user_id:n,organization_id:i.id})}return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Add Members to an Organization`,targetType:`organization_member`,targetId:i.id}),new Response(null,{status:204})}}),hge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`delete`,path:`/{id}/members`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:oge}}}},security:[{Bearer:[`update:organizations`]}],responses:{200:{description:`Members removed successfully`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),{members:r}=e.req.valid(`json`),i=await e.env.data.organizations.get(t,n);if(!i)throw new m(404,{message:`Organization not found`});for(let n of r){let r=(await e.env.data.userOrganizations.list(t,{q:`user_id:${Ha(n)}`,per_page:100})).userOrganizations.find(e=>e.organization_id===i.id);r&&await e.env.data.userOrganizations.remove(t,r.id)}return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Remove Members from an Organization`,targetType:`organization_member`,targetId:i.id}),e.json({message:`Members removed successfully`})}}),gge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`get`,path:`/{id}/members/{user_id}/roles`,request:{params:f.z.object({id:f.z.string(),user_id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),query:wo},security:[{Bearer:[`read:organization_member_roles`]}],responses:{200:{content:{"application/json":{schema:Zi}},description:`User roles in organization`}}}),handler:async e=>{let t=I(e),{id:n,user_id:r}=e.req.valid(`param`),i=await e.env.data.organizations.get(t,n);if(!i)throw new m(404,{message:`Organization not found`});if(!await e.env.data.users.get(t,r))throw new m(404,{message:`User not found`});let a=await e.env.data.userRoles.list(t,r,void 0,i.id);return e.json(a)}}),_ge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`post`,path:`/{id}/members/{user_id}/roles`,request:{params:f.z.object({id:f.z.string(),user_id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:f.z.object({roles:f.z.array(f.z.string()).openapi({description:`List of role IDs to associate with the user`})})}}}},security:[{Bearer:[`create:organization_member_roles`]}],responses:{204:{description:`Roles assigned successfully`}}}),handler:async e=>{let t=I(e),{id:n,user_id:r}=e.req.valid(`param`),{roles:i}=e.req.valid(`json`),a=await e.env.data.organizations.get(t,n);if(!a)throw new m(404,{message:`Organization not found`});if(!await e.env.data.users.get(t,r))throw new m(404,{message:`User not found`});let o=await e.env.data.userRoles.list(t,r,void 0,a.id),s=new Set(o.map(e=>e.id));for(let n of i)if(!s.has(n)){if(!await e.env.data.roles.get(t,n))throw new m(400,{message:`Role ${n} not found`});if(!await e.env.data.userRoles.create(t,r,n,a.id))throw new m(500,{message:`Failed to assign role ${n} to user`})}return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Assign Roles to an Organization Member`,targetType:`organization_member_role`,targetId:r}),e.body(null,204)}}),vge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`delete`,path:`/{id}/members/{user_id}/roles`,request:{params:f.z.object({id:f.z.string(),user_id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:f.z.object({roles:f.z.array(f.z.string()).openapi({description:`List of role IDs to remove from the user`})})}}}},security:[{Bearer:[`delete:organization_member_roles`]}],responses:{200:{description:`Roles removed successfully`}}}),handler:async e=>{let t=I(e),{id:n,user_id:r}=e.req.valid(`param`),{roles:i}=e.req.valid(`json`),a=await e.env.data.organizations.get(t,n);if(!a)throw new m(404,{message:`Organization not found`});if(!await e.env.data.users.get(t,r))throw new m(404,{message:`User not found`});for(let n of i)if(!await e.env.data.userRoles.remove(t,r,n,a.id))throw new m(500,{message:`Failed to remove role ${n} from user`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Remove Roles from an Organization Member`,targetType:`organization_member_role`,targetId:r}),e.json({message:`Roles removed successfully`})}}),yge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`get`,path:`/{id}/roles`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),query:wo},security:[{Bearer:[`read:organizations`]}],responses:{200:{content:{"application/json":{schema:Zi}},description:`List of roles available in organization`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),{page:r,per_page:i,sort:a,q:o}=e.req.valid(`query`);if(!await e.env.data.organizations.get(t,n))throw new m(404,{message:`Organization not found`});let s=await e.env.data.roles.list(t,{page:r,per_page:i,sort:To(a),q:o});return e.json(s.roles)}}),bge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`get`,path:`/{id}/invitations`,request:{params:f.z.object({id:f.z.string().openapi({description:`Organization ID`,param:{name:`id`,in:`path`}})}),query:Qhe,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:organizations`]}],responses:{200:{content:{"application/json":{schema:f.z.union([f.z.array(nr),$he])}},description:`List of organization invitations`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),{page:r,per_page:i,include_totals:a,fields:o,include_fields:s,sort:c}=e.req.valid(`query`),l=await e.env.data.organizations.get(t,n);if(!l)throw new m(404,{message:`Organization not found`});let u=(await e.env.data.invites.list(t,{page:r,per_page:i})).invites.filter(e=>e.organization_id===l.id);if(c){let e=To(c);if(e){let{sort_by:t,sort_order:n}=e;u.sort((e,r)=>{let i=e[t],a=r[t];if(i===void 0||a===void 0||i===a)return 0;let o=i<a?-1:1;return n===`asc`?o:-o})}}if(o){let e=o.split(`,`).map(e=>e.trim());u=u.map(t=>{let n={};for(let r of Object.keys(t))(s?e.includes(r):!e.includes(r))&&(n[r]=t[r]);return n})}return a?e.json({invitations:u,start:r*i,limit:i,length:u.length}):e.json(u)}}),xge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`get`,path:`/{id}/invitations/{invitation_id}`,request:{params:f.z.object({id:f.z.string().openapi({description:`Organization ID`,param:{name:`id`,in:`path`}}),invitation_id:f.z.string().openapi({description:`Invitation ID`,param:{name:`invitation_id`,in:`path`}})}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:organizations`]}],responses:{200:{content:{"application/json":{schema:nr}},description:`An invitation`},404:{description:`Invitation not found`}}}),handler:async e=>{let t=I(e),{id:n,invitation_id:r}=e.req.valid(`param`),i=await e.env.data.organizations.get(t,n);if(!i)throw new m(404,{message:`Organization not found`});let a=await e.env.data.invites.get(t,r);if(!a||a.organization_id!==i.id)throw new m(404,{message:`Invitation not found`});return e.json(a)}}),Sge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`post`,path:`/{id}/invitations`,request:{params:f.z.object({id:f.z.string().openapi({description:`Organization ID`,param:{name:`id`,in:`path`}})}),body:{content:{"application/json":{schema:ege}}},headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:organizations`]}],responses:{201:{content:{"application/json":{schema:nr}},description:`The created invitation`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=e.req.valid(`json`),i=await e.env.data.organizations.get(t,n);if(!i)throw new m(404,{message:`Organization not found`});let a=ss(),o=to(e.env,e.var.custom_domain),s=new URL(`u2/accept-invitation`,o);s.searchParams.set(`invitation`,a),s.searchParams.set(`organization`,i.id);let c=s.toString(),l={...r,id:a,organization_id:i.id,invitation_url:c},u=await e.env.data.invites.create(t,l);if(await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Create an Organization Invitation`,targetType:`invitation`,targetId:u.id,afterState:u}),r.send_invitation_email!==!1&&r.invitee?.email)try{await HP(e,{to:r.invitee.email,invitationUrl:c,inviterName:r.inviter?.name,organizationName:i.display_name||i.name||i.id,ttlSec:r.ttl_sec??604800})}catch(e){console.error(`[invitations] failed to send invitation email for ${u.id}:`,e)}return e.json(u,{status:201})}}),Cge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`delete`,path:`/{id}/invitations/{invitation_id}`,request:{params:f.z.object({id:f.z.string().openapi({description:`Organization ID`,param:{name:`id`,in:`path`}}),invitation_id:f.z.string().openapi({description:`Invitation ID`,param:{name:`invitation_id`,in:`path`}})}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:organizations`]}],responses:{204:{description:`Invitation deleted successfully`},404:{description:`Invitation not found`}}}),handler:async e=>{let t=I(e),{id:n,invitation_id:r}=e.req.valid(`param`),i=await e.env.data.organizations.get(t,n);if(!i)throw new m(404,{message:`Organization not found`});let a=await e.env.data.invites.get(t,r);if(!a||a.organization_id!==i.id||!await e.env.data.invites.remove(t,r))throw new m(404,{message:`Invitation not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete an Organization Invitation`,targetType:`invitation`,targetId:r}),e.body(null,{status:204})}}),wge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`get`,path:`/{id}/enabled_connections`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),query:f.z.object({include_totals:f.z.string().optional().transform(e=>e===`true`).openapi({deprecated:!0,description:`Ignored for compatibility; the connections/total/start/limit/length wrapper is always returned.`}),page:f.z.string().optional().transform(e=>e?parseInt(e,10):0),per_page:f.z.string().optional().transform(e=>e?parseInt(e,10):50)})},security:[{Bearer:[`read:organization_connections`]}],responses:{200:{content:{"application/json":{schema:Eo({connections:f.z.array(ia)})}},description:`Connections enabled for the organization`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),{include_totals:r,page:i,per_page:a}=e.req.valid(`query`),o=await e.env.data.organizations.get(t,n);if(!o)throw new m(404,{message:`Organization not found`});let s=await e.env.data.organizationConnections.list(t,o.id),c=i*a,l=s.slice(c,c+a);return e.json({connections:l,total:s.length,start:c,limit:a,length:l.length})}}),Tge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`post`,path:`/{id}/enabled_connections`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:ra}}}},security:[{Bearer:[`create:organization_connections`]}],responses:{201:{content:{"application/json":{schema:ia}},description:`Connection enabled for the organization`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=e.req.valid(`json`),i=await e.env.data.organizations.get(t,n);if(!i)throw new m(404,{message:`Organization not found`});if(!await e.env.data.connections.get(t,r.connection_id))throw new m(400,{message:`Connection ${r.connection_id} not found`});if(await e.env.data.organizationConnections.get(t,i.id,r.connection_id))throw new m(409,{message:`Connection already enabled for this organization`});let a=await e.env.data.organizationConnections.create(t,i.id,r);return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Enable an Organization Connection`,targetType:`organization_connection`,targetId:`${i.id}:${r.connection_id}`}),e.json(a,{status:201})}}),Ege=F({route:(0,f.createRoute)({tags:[`organizations`],method:`get`,path:`/{id}/enabled_connections/{connection_id}`,request:{params:f.z.object({id:f.z.string(),connection_id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:organization_connections`]}],responses:{200:{content:{"application/json":{schema:ia}},description:`An enabled organization connection`}}}),handler:async e=>{let t=I(e),{id:n,connection_id:r}=e.req.valid(`param`),i=await e.env.data.organizations.get(t,n);if(!i)throw new m(404,{message:`Organization not found`});let a=await e.env.data.organizationConnections.get(t,i.id,r);if(!a)throw new m(404,{message:`Organization connection not found`});return e.json(a)}}),Dge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`patch`,path:`/{id}/enabled_connections/{connection_id}`,request:{params:f.z.object({id:f.z.string(),connection_id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:ra.omit({connection_id:!0}).partial()}}}},security:[{Bearer:[`update:organization_connections`]}],responses:{200:{content:{"application/json":{schema:ia}},description:`Updated organization connection`}}}),handler:async e=>{let t=I(e),{id:n,connection_id:r}=e.req.valid(`param`),i=e.req.valid(`json`),a=await e.env.data.organizations.get(t,n);if(!a)throw new m(404,{message:`Organization not found`});let o=await e.env.data.organizationConnections.update(t,a.id,r,i);if(!o)throw new m(404,{message:`Organization connection not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Update an Organization Connection`,targetType:`organization_connection`,targetId:`${a.id}:${r}`}),e.json(o)}}),Oge=F({route:(0,f.createRoute)({tags:[`organizations`],method:`delete`,path:`/{id}/enabled_connections/{connection_id}`,request:{params:f.z.object({id:f.z.string(),connection_id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`delete:organization_connections`]}],responses:{204:{description:`Connection disabled`}}}),handler:async e=>{let t=I(e),{id:n,connection_id:r}=e.req.valid(`param`),i=await e.env.data.organizations.get(t,n);if(!i)throw new m(404,{message:`Organization not found`});if(!await e.env.data.organizationConnections.remove(t,i.id,r))throw new m(404,{message:`Organization connection not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Disable an Organization Connection`,targetType:`organization_connection`,targetId:`${i.id}:${r}`}),e.body(null,{status:204})}}),kge=new f.OpenAPIHono().openapiRoutes([cge,lge,uge,dge,fge,pge,mge,hge,gge,_ge,vge,yge,bge,xge,Sge,Cge,wge,Tge,Ege,Dge,Oge]);function yQ(e){return`${e.slice(0,4)}-${e.slice(4,6)}-${e.slice(6,8)}`}function bQ(e){return e.toISOString().split(`T`)[0]}function Age(e,t,n){let r=new Map(e.map(e=>[e.date,e])),i=[],a=new Date(`${t}T00:00:00.000Z`),o=new Date(`${n}T00:00:00.000Z`);for(let e=a;e<=o;e.setUTCDate(e.getUTCDate()+1)){let t=bQ(e),n=r.get(t);if(n)i.push(n);else{let e=`${t}T00:00:00.000Z`;i.push({date:t,logins:0,signups:0,leaked_passwords:0,created_at:e,updated_at:e})}}return i}var jge=F({route:(0,f.createRoute)({tags:[`stats`],method:`get`,path:`/daily`,request:{query:f.z.object({from:f.z.string().optional().openapi({description:`Optional first day of the date range (inclusive) in YYYYMMDD format`,example:`20251120`}),to:f.z.string().optional().openapi({description:`Optional last day of the date range (inclusive) in YYYYMMDD format`,example:`20251219`})}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:stats`]}],responses:{200:{content:{"application/json":{schema:f.z.array(oa)}},description:`Daily statistics including logins, signups, and leaked passwords`}}}),handler:async e=>{let t=I(e),{from:n,to:r}=e.req.valid(`query`);if(!e.env.data.stats)throw new m(501,{message:`Stats adapter not configured`});let i=new Date,a=new Date(i);a.setUTCDate(a.getUTCDate()-30);let o=n?yQ(n):bQ(a),s=r?yQ(r):bQ(i),c=await e.env.data.stats.getDaily(t,{from:o,to:s});return e.json(Age(c,o,s))}}),Mge=F({route:(0,f.createRoute)({tags:[`stats`],method:`get`,path:`/active-users`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:stats`]}],responses:{200:{content:{"application/json":{schema:f.z.number().openapi({description:`Number of active users in the last 30 days`,example:1234})}},description:`Number of active users in the last 30 days`}}}),handler:async e=>{let t=I(e);if(!e.env.data.stats)throw new m(501,{message:`Stats adapter not configured`});let n=await e.env.data.stats.getActiveUsers(t);return e.json(n)}}),Nge=new f.OpenAPIHono().openapiRoutes([jge,Mge]),Pge={"active-users":[`time`,`connection`,`client_id`,`user_type`],logins:[`time`,`connection`,`client_id`,`user_type`,`event`],signups:[`time`,`connection`,`client_id`,`user_type`,`event`],"refresh-tokens":[`time`,`client_id`,`event`],sessions:[`time`,`client_id`],logouts:[`time`,`connection`,`client_id`,`user_type`,`event`],"password-changes":[`time`,`connection`,`client_id`,`user_type`,`event`],"password-migrations":[`time`,`connection`,`client_id`,`user_type`],mfa:[`time`,`connection`,`client_id`,`user_type`,`event`],"email-verifications":[`time`,`connection`,`client_id`,`user_type`,`event`],"codes-sent":[`time`,`connection`,`client_id`,`user_type`,`event`]},xQ=[`hour`,`day`,`week`,`month`],SQ=[`password`,`social`,`passwordless`,`enterprise`],Fge={"active-users":`active_users`,logins:`logins`,signups:`signups`,"refresh-tokens":`refresh_tokens`,sessions:`sessions`,logouts:`logouts`,"password-changes":`password_changes`,"password-migrations":`password_migrations`,mfa:`mfa`,"email-verifications":`email_verifications`,"codes-sent":`codes_sent`},Ige=1e4,Lge=1e3,CQ=5e4,Rge=720*60*60*1e3,wQ=class extends Error{param;detail;constructor(e,t){super(t),this.param=e,this.detail=t}};function TQ(e,t){let n=new Date(e);if(Number.isNaN(n.getTime()))throw new wQ(t,`'${t}' must be an ISO 8601 datetime`);return n.toISOString()}function EQ(e,t,n,{min:r,max:i}){if(e===void 0)return n;let a=Number.parseInt(e,10);if(!Number.isFinite(a)||String(a)!==e)throw new wQ(t,`'${t}' must be an integer`);if(a<r||a>i)throw new wQ(t,`'${t}' must be between ${r} and ${i}`);return a}function zge(e,t,n){let r=new Date,i=new Date(r.getTime()-720*60*60*1e3),a=t(`from`),o=t(`to`),s=a?TQ(a,`from`):i.toISOString(),c=o?TQ(o,`to`):r.toISOString(),l=new Date(s).getTime(),u=new Date(c).getTime();if(u<=l)throw new wQ(`to`,`'to' must be after 'from'`);let d=t(`interval`),f=`day`;if(d){if(!xQ.includes(d))throw new wQ(`interval`,`'interval' must be one of: ${xQ.join(`, `)}`);f=d}if(f===`hour`&&u-l>Rge)throw new wQ(`interval`,`interval=hour is only allowed for ranges of 30 days or less`);let p=t(`tz`)||`UTC`,m=(t(`group_by`)||``).split(`,`).map(e=>e.trim()).filter(Boolean),h=new Set(Pge[e]);for(let t of m)if(!h.has(t))throw new wQ(`group_by`,`group_by value '${t}' is not valid for /analytics/${e}. Allowed: ${[...h].join(`, `)}`);let g=n(`user_type`);for(let e of g)if(!SQ.includes(e))throw new wQ(`user_type`,`user_type value '${e}' is not valid. Allowed: ${SQ.join(`, `)}`);let _={connection:n(`connection`),client_id:n(`client_id`),user_type:g,user_id:n(`user_id`)},v=EQ(t(`limit`),`limit`,Lge,{min:1,max:Ige}),y=EQ(t(`offset`),`offset`,0,{min:0,max:1e6});if(m.length===0&&v>CQ)throw new wQ(`limit`,`ungrouped queries may not request more than ${CQ} rows; add group_by or lower limit`);let b=t(`order_by`),x;if(b){let t=b.startsWith(`-`)?b.slice(1):b,n=new Set([...m,Fge[e]]);if(!n.has(t))throw new wQ(`order_by`,`'order_by' column '${t}' is not selectable. Allowed: ${[...n].join(`, `)}`);x=b}return{from:s,to:c,interval:f,tz:p,filters:_,group_by:m,limit:v,offset:y,order_by:x}}function Bge(e,t=Date.now()){let n=new Date(e).getTime(),r=t-3600*1e3,i=new Date(t);i.setUTCHours(0,0,0,0),i.setUTCDate(i.getUTCDate()-1);let a=t-1440*60*1e3;return n>=r?60:n>=a?300:n<i.getTime()?1440*60:3600}function Vge(e,t,n){let r={from:n.from,to:n.to,interval:n.interval,tz:n.tz,group_by:[...n.group_by].sort(),filters:{connection:[...n.filters.connection||[]].sort(),client_id:[...n.filters.client_id||[]].sort(),user_type:[...n.filters.user_type||[]].sort(),user_id:[...n.filters.user_id||[]].sort()},limit:n.limit,offset:n.offset,order_by:n.order_by||``};return`analytics:${e}:${t}:${JSON.stringify(r)}`}var Hge=f.z.object({from:f.z.string().datetime().optional().openapi({description:`Inclusive lower bound, ISO 8601 datetime`}),to:f.z.string().datetime().optional().openapi({description:`Exclusive upper bound, ISO 8601 datetime`}),interval:f.z.enum([`hour`,`day`,`week`,`month`]).optional().openapi({description:`Time bucket size for time-grouped queries`}),tz:f.z.string().optional().openapi({description:`IANA timezone, e.g. Europe/Madrid`}),group_by:f.z.string().optional().openapi({description:`Comma-separated dimensions, e.g. 'time,connection'`}),connection:f.z.union([f.z.string(),f.z.array(f.z.string())]).optional().openapi({description:`Repeatable. Filter to one or more connection names.`}),client_id:f.z.union([f.z.string(),f.z.array(f.z.string())]).optional().openapi({description:`Repeatable. Filter to one or more client IDs.`}),user_type:f.z.union([f.z.enum([`password`,`social`,`passwordless`,`enterprise`]),f.z.array(f.z.enum([`password`,`social`,`passwordless`,`enterprise`]))]).optional().openapi({description:`Repeatable.`}),user_id:f.z.union([f.z.string(),f.z.array(f.z.string())]).optional().openapi({description:`Repeatable.`}),limit:f.z.string().optional().openapi({description:`Max 10000`}),offset:f.z.string().optional(),order_by:f.z.string().optional().openapi({description:`Column name, prefix with '-' for descending`})});function Uge(e={}){let t=e.cache,n=new f.OpenAPIHono;function r(e){return(0,f.createRoute)({tags:[`analytics`],method:`get`,path:`/${e}`,request:{query:Hge,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:stats`]}],responses:{200:{content:{"application/json":{schema:pa}},description:`${e} analytics`},400:{content:{"application/json":{schema:f.z.any()}},description:`Invalid request`}}})}let i=e=>async n=>{if(!n.env.data.analytics)throw new m(501,{message:`Analytics adapter not configured`});let r;try{r=zge(e,e=>n.req.query(e)??void 0,e=>n.req.queries(e)??[])}catch(e){if(e instanceof wQ)return n.json({type:`https://authhero.net/errors/invalid-parameter`,title:`Invalid parameter`,status:400,detail:e.detail,param:e.param},400);throw e}let i=I(n),a=t?Vge(i,e,r):null;if(t&&a){let e=await t.get(a);if(e!==null)return n.header(`X-Cache`,`HIT`),n.json(e)}let o=await n.env.data.analytics.query(i,e,r);if(t&&a){let e=Bge(r.to);t.set(a,o,e).catch(()=>{}),n.header(`X-Cache`,`MISS`),n.header(`Cache-Control`,`public, max-age=${e}`)}return n.json(o)};for(let e of[`active-users`,`logins`,`signups`,`refresh-tokens`,`sessions`,`logouts`,`password-changes`,`password-migrations`,`mfa`,`email-verifications`,`codes-sent`])n.openapi(r(e),i(e));let a=(0,f.createRoute)({tags:[`analytics`],method:`get`,path:`/session-retention`,request:{query:f.z.object({weeks:f.z.string().optional().openapi({description:`Number of weekly cohorts to include, 1-26. Default 12.`})}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:stats`]}],responses:{200:{content:{"application/json":{schema:ca}},description:`Weekly session cohort retention`},400:{content:{"application/json":{schema:f.z.any()}},description:`Invalid request`}}});n.openapi(a,async e=>{let n=e.env.data.analytics;if(!n?.sessionRetention)throw new m(501,{message:`Session retention is not supported by the configured analytics adapter`});let r;try{r=EQ(e.req.query(`weeks`),`weeks`,12,{min:1,max:26})}catch(t){if(t instanceof wQ)return e.json({type:`https://authhero.net/errors/invalid-parameter`,title:`Invalid parameter`,status:400,detail:t.detail,param:t.param},400);throw t}let i=I(e),a=t?`analytics:${i}:session-retention:${r}`:null;if(t&&a){let n=await t.get(a);if(n!==null)return e.header(`X-Cache`,`HIT`),e.header(`Cache-Control`,`no-store`),e.json(n)}let o=await n.sessionRetention(i,{weeks:r});return t&&a&&(t.set(a,o,900).catch(()=>{}),e.header(`X-Cache`,`MISS`),e.header(`Cache-Control`,`no-store`)),e.json(o)});let o=(0,f.createRoute)({tags:[`analytics`],method:`get`,path:`/refresh-token-retention`,request:{query:f.z.object({weeks:f.z.string().optional().openapi({description:`Number of weekly cohorts to include, 1-26. Default 12.`}),client_id:f.z.union([f.z.string(),f.z.array(f.z.string())]).optional().openapi({description:`Repeatable. Filter to one or more client IDs.`})}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:stats`]}],responses:{200:{content:{"application/json":{schema:ua}},description:`Weekly refresh-token cohort retention`},400:{content:{"application/json":{schema:f.z.any()}},description:`Invalid request`}}});return n.openapi(o,async e=>{let n=e.env.data.analytics;if(!n?.refreshTokenRetention)throw new m(501,{message:`Refresh token retention is not supported by the configured analytics adapter`});let r;try{r=EQ(e.req.query(`weeks`),`weeks`,12,{min:1,max:26})}catch(t){if(t instanceof wQ)return e.json({type:`https://authhero.net/errors/invalid-parameter`,title:`Invalid parameter`,status:400,detail:t.detail,param:t.param},400);throw t}let i=(e.req.queries(`client_id`)??[]).filter(Boolean),a=I(e),o=t?`analytics:${a}:refresh-token-retention:${r}:${[...i].sort().join(`,`)}`:null;if(t&&o){let n=await t.get(o);if(n!==null)return e.header(`X-Cache`,`HIT`),e.header(`Cache-Control`,`no-store`),e.json(n)}let s=await n.refreshTokenRetention(a,{weeks:r,client_id:i.length>0?i:void 0});return t&&o&&(t.set(o,s,900).catch(()=>{}),e.header(`X-Cache`,`MISS`),e.header(`Cache-Control`,`no-store`)),e.json(s)}),n}var DQ=[`sms`,`otp`,`email`,`push-notification`,`webauthn-roaming`,`webauthn-platform`,`recovery-code`,`duo`];function OQ(e){return e.replace(/-/g,`_`)}var kQ=f.z.object({name:f.z.enum(DQ),enabled:f.z.boolean(),trial_expired:f.z.boolean().optional()}),Wge=f.z.array(kQ),Gge=f.z.object({enabled:f.z.boolean()}),AQ=f.z.object({provider:f.z.enum([`twilio`,`vonage`,`aws_sns`,`phone_message_hook`])}),jQ=f.z.object({sid:f.z.string().optional(),auth_token:f.z.string().optional(),from:f.z.string().optional(),messaging_service_sid:f.z.string().optional()}),Kge=f.z.object({message_type:f.z.enum([`sms`,`voice`])}),qge=F({route:(0,f.createRoute)({tags:[`guardian`],method:`get`,path:`/factors`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:guardian_factors`]}],responses:{200:{content:{"application/json":{schema:Wge}},description:`List of MFA factors`}}}),handler:async e=>{let t=I(e),n=(await e.env.data.tenants.get(t))?.mfa?.factors,r=DQ.map(e=>{let t=OQ(e);return{name:e,enabled:!!n?.[t],trial_expired:!1}});return e.json(r)}}),Jge=F({route:(0,f.createRoute)({tags:[`guardian`],method:`get`,path:`/factors/sms/selected-provider`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:guardian_factors`]}],responses:{200:{content:{"application/json":{schema:AQ}},description:`Selected SMS provider`}}}),handler:async e=>{let t=I(e),n=(await e.env.data.tenants.get(t))?.mfa?.sms_provider?.provider||`twilio`;return e.json({provider:n})}}),Yge=F({route:(0,f.createRoute)({tags:[`guardian`],method:`put`,path:`/factors/sms/selected-provider`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:AQ}}}},security:[{Bearer:[`update:guardian_factors`]}],responses:{200:{content:{"application/json":{schema:AQ}},description:`Updated SMS provider selection`}}}),handler:async e=>{let t=I(e),{provider:n}=e.req.valid(`json`),r=await e.env.data.tenants.get(t);if(!r)throw new m(404,{message:`Tenant not found`});return await e.env.data.tenants.update(t,{mfa:{...r.mfa,sms_provider:{provider:n}}}),await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Set SMS Provider`,targetType:`guardian`,targetId:t}),e.json({provider:n})}}),Xge=F({route:(0,f.createRoute)({tags:[`guardian`],method:`get`,path:`/factors/sms/providers/twilio`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:guardian_factors`]}],responses:{200:{content:{"application/json":{schema:jQ}},description:`Twilio provider configuration`}}}),handler:async e=>{let t=I(e),n=(await e.env.data.tenants.get(t))?.mfa?.twilio||{};return e.json({sid:n.sid,auth_token:n.auth_token?`********`:void 0,from:n.from,messaging_service_sid:n.messaging_service_sid})}}),Zge=F({route:(0,f.createRoute)({tags:[`guardian`],method:`put`,path:`/factors/sms/providers/twilio`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:jQ}}}},security:[{Bearer:[`update:guardian_factors`]}],responses:{200:{content:{"application/json":{schema:jQ}},description:`Updated Twilio configuration`}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`),r=await e.env.data.tenants.get(t);if(!r)throw new m(404,{message:`Tenant not found`});let i=r.mfa?.twilio||{},a={...i,...n,auth_token:n.auth_token&&n.auth_token!==`********`?n.auth_token:i.auth_token};return await e.env.data.tenants.update(t,{mfa:{...r.mfa,twilio:a}}),await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Configure Twilio Provider`,targetType:`guardian`,targetId:t}),e.json({sid:a.sid,auth_token:a.auth_token?`********`:void 0,from:a.from,messaging_service_sid:a.messaging_service_sid})}}),Qge=F({route:(0,f.createRoute)({tags:[`guardian`],method:`get`,path:`/factors/phone/message-types`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:guardian_factors`]}],responses:{200:{content:{"application/json":{schema:f.z.array(Kge)}},description:`Available message types`}}}),handler:async e=>e.json([{message_type:`sms`}])}),$ge=F({route:(0,f.createRoute)({tags:[`guardian`],method:`get`,path:`/policies`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:guardian_factors`]}],responses:{200:{content:{"application/json":{schema:f.z.array(f.z.string())}},description:`Current MFA policies`}}}),handler:async e=>{let t=I(e);return(await e.env.data.tenants.get(t))?.mfa?.policy===`always`?e.json([`all-applications`]):e.json([])}}),e_e=F({route:(0,f.createRoute)({tags:[`guardian`],method:`put`,path:`/policies`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:f.z.array(f.z.string())}}}},security:[{Bearer:[`update:guardian_factors`]}],responses:{200:{content:{"application/json":{schema:f.z.array(f.z.string())}},description:`Updated MFA policies`}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`),r=await e.env.data.tenants.get(t);if(!r)throw new m(404,{message:`Tenant not found`});let i=n.includes(`all-applications`)?`always`:`never`;return await e.env.data.tenants.update(t,{mfa:{...r.mfa,policy:i}}),await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Set Guardian Policies`,targetType:`guardian`,targetId:t}),e.json(i===`always`?[`all-applications`]:[])}}),t_e=F({route:(0,f.createRoute)({tags:[`guardian`],method:`post`,path:`/enrollments/ticket`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:f.z.object({user_id:f.z.string(),send_mail:f.z.boolean().optional(),email:f.z.string().email().optional()})}}}},security:[{Bearer:[`create:guardian_enrollment_tickets`]}],responses:{201:{content:{"application/json":{schema:f.z.object({ticket_id:f.z.string(),ticket_url:f.z.string()})}},description:`Enrollment ticket created`}}}),handler:async e=>{let{user_id:t,email:n}=e.req.valid(`json`),r=I(e),i=await e.env.data.tenants.get(r);if(!i)throw new m(404,{message:`Tenant not found`});if(!(i.mfa?.factors?.sms===!0||i.mfa?.factors?.otp===!0||i.mfa?.factors?.webauthn_roaming===!0||i.mfa?.factors?.webauthn_platform===!0))throw new m(400,{message:`At least one MFA factor (SMS, OTP, or WebAuthn) must be enabled before creating enrollment tickets.`});let a=await e.env.data.users.get(r,t);if(!a)throw new m(404,{message:`User not found`});let{clients:o}=await e.env.data.clients.list(r);if(!o.length)throw new m(400,{message:`No clients configured for this tenant`});let s=o[0].client_id,c=new Date(Date.now()+7200*60*1e3).toISOString(),l=await e.env.data.loginSessions.create(r,{expires_at:c,authParams:{client_id:s,username:n||a.email},csrf_token:ts(),user_id:t,state:j.AWAITING_MFA,state_data:JSON.stringify({guardian_enrollment:!0})}),u=ts();await e.env.data.codes.create(r,{code_id:u,code_type:`ticket`,login_id:l.id,user_id:t,expires_at:c});let d=to(e.env,e.var.custom_domain),f=new URL(`u2/guardian/enroll`,d);f.searchParams.append(`ticket`,u),e.var.custom_domain||f.searchParams.append(`tenant_id`,r);let p=f.toString();return await P(e,r,{type:M.SUCCESS_API_OPERATION,description:`Create Enrollment Ticket`,targetType:`guardian`,targetId:r}),e.json({ticket_id:u,ticket_url:p},201)}}),n_e=F({route:(0,f.createRoute)({tags:[`guardian`],method:`get`,path:`/factors/{factor_name}`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),params:f.z.object({factor_name:f.z.enum(DQ)})},security:[{Bearer:[`read:guardian_factors`]}],responses:{200:{content:{"application/json":{schema:kQ}},description:`MFA factor details`}}}),handler:async e=>{let t=I(e),{factor_name:n}=e.req.valid(`param`),r=(await e.env.data.tenants.get(t))?.mfa?.factors,i=OQ(n);return e.json({name:n,enabled:!!r?.[i],trial_expired:!1})}}),r_e=F({route:(0,f.createRoute)({tags:[`guardian`],method:`put`,path:`/factors/{factor_name}`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),params:f.z.object({factor_name:f.z.enum(DQ)}),body:{content:{"application/json":{schema:Gge}}}},security:[{Bearer:[`update:guardian_factors`]}],responses:{200:{content:{"application/json":{schema:kQ}},description:`Updated MFA factor`}}}),handler:async e=>{let t=I(e),{factor_name:n}=e.req.valid(`param`),{enabled:r}=e.req.valid(`json`),i=OQ(n),a=await e.env.data.tenants.get(t);if(!a)throw new m(404,{message:`Tenant not found`});let o=a.mfa?.factors;return await e.env.data.tenants.update(t,{mfa:{...a.mfa,factors:{sms:o?.sms??!1,otp:o?.otp??!1,email:o?.email??!1,push_notification:o?.push_notification??!1,webauthn_roaming:o?.webauthn_roaming??!1,webauthn_platform:o?.webauthn_platform??!1,recovery_code:o?.recovery_code??!1,duo:o?.duo??!1,[i]:r}}}),await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Update Guardian Factor`,targetType:`guardian`,targetId:t}),e.json({name:n,enabled:r,trial_expired:!1})}}),i_e=new f.OpenAPIHono().openapiRoutes([qge,Jge,Yge,Xge,Zge,Qge,$ge,e_e,t_e,n_e,r_e]),MQ=f.z.object({id:f.z.string(),type:f.z.string(),confirmed:f.z.boolean(),phone_number:f.z.string().optional(),credential_id:f.z.string().optional(),public_key:f.z.string().optional(),sign_count:f.z.number().optional(),credential_backed_up:f.z.boolean().optional(),transports:f.z.array(f.z.string()).optional(),friendly_name:f.z.string().optional(),created_at:f.z.string()}),a_e=f.z.array(MQ),o_e=f.z.object({type:f.z.enum([`phone`,`totp`,`email`,`push`,`webauthn-roaming`,`webauthn-platform`,`passkey`]),phone_number:f.z.string().optional(),totp_secret:f.z.string().optional(),credential_id:f.z.string().optional(),public_key:f.z.string().optional(),sign_count:f.z.number().int().nonnegative().optional(),credential_backed_up:f.z.boolean().optional(),transports:f.z.array(f.z.string()).optional(),friendly_name:f.z.string().optional(),confirmed:f.z.boolean().optional().default(!0)}).superRefine((e,t)=>{e.type===`phone`&&!e.phone_number&&t.addIssue({code:f.z.ZodIssueCode.custom,message:`phone_number is required when type is 'phone'`,path:[`phone_number`]}),e.type===`totp`&&!e.totp_secret&&t.addIssue({code:f.z.ZodIssueCode.custom,message:`totp_secret is required when type is 'totp'`,path:[`totp_secret`]}),[`webauthn-roaming`,`webauthn-platform`,`passkey`].includes(e.type)&&(e.credential_id||t.addIssue({code:f.z.ZodIssueCode.custom,message:`credential_id is required when type is '${e.type}'`,path:[`credential_id`]}),e.public_key||t.addIssue({code:f.z.ZodIssueCode.custom,message:`public_key is required when type is '${e.type}'`,path:[`public_key`]}))}),s_e=F({route:(0,f.createRoute)({tags:[`users`],method:`get`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:users`]}],responses:{200:{content:{"application/json":{schema:a_e}},description:`List of authentication methods for the user`}}}),handler:async e=>{let t=I(e),n=e.req.param(`user_id`);if(!n)throw new m(400,{message:`user_id is required`});let r=(await e.env.data.authenticationMethods.list(t,n)).map(e=>({id:e.id,type:e.type,confirmed:e.confirmed,phone_number:e.phone_number,credential_id:e.credential_id,public_key:e.public_key,sign_count:e.sign_count,credential_backed_up:e.credential_backed_up,transports:e.transports,friendly_name:e.friendly_name,created_at:e.created_at}));return e.json(r)}}),c_e=F({route:(0,f.createRoute)({tags:[`users`],method:`post`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:o_e}}}},security:[{Bearer:[`update:users`]}],responses:{201:{content:{"application/json":{schema:MQ}},description:`Created authentication method`}}}),handler:async e=>{let t=I(e),n=e.req.param(`user_id`);if(!n)throw new m(400,{message:`user_id is required`});let r=e.req.valid(`json`),i=await e.env.data.authenticationMethods.create(t,{user_id:n,type:r.type,phone_number:r.phone_number,totp_secret:r.totp_secret,credential_id:r.credential_id,public_key:r.public_key,sign_count:r.sign_count,credential_backed_up:r.credential_backed_up,transports:r.transports,friendly_name:r.friendly_name,confirmed:r.confirmed??!0});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Create Authentication Method`,targetType:`authentication_method`,targetId:i.id}),e.json({id:i.id,type:i.type,confirmed:i.confirmed,phone_number:i.phone_number,credential_id:i.credential_id,public_key:i.public_key,sign_count:i.sign_count,credential_backed_up:i.credential_backed_up,transports:i.transports,friendly_name:i.friendly_name,created_at:i.created_at},201)}}),l_e=F({route:(0,f.createRoute)({tags:[`users`],method:`get`,path:`/{method_id}`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),params:f.z.object({method_id:f.z.string()})},security:[{Bearer:[`read:users`]}],responses:{200:{content:{"application/json":{schema:MQ}},description:`Authentication method details`}}}),handler:async e=>{let t=I(e),{method_id:n}=e.req.valid(`param`),r=e.req.param(`user_id`),i=await e.env.data.authenticationMethods.get(t,n);if(!i||i.user_id!==r)throw new m(404,{message:`Authentication method not found`});return e.json({id:i.id,type:i.type,confirmed:i.confirmed,phone_number:i.phone_number,credential_id:i.credential_id,public_key:i.public_key,sign_count:i.sign_count,credential_backed_up:i.credential_backed_up,transports:i.transports,friendly_name:i.friendly_name,created_at:i.created_at})}}),u_e=F({route:(0,f.createRoute)({tags:[`users`],method:`delete`,path:`/{method_id}`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),params:f.z.object({method_id:f.z.string()})},security:[{Bearer:[`update:users`]}],responses:{204:{description:`Authentication method deleted`}}}),handler:async e=>{let t=I(e),{method_id:n}=e.req.valid(`param`),r=e.req.param(`user_id`),i=await e.env.data.authenticationMethods.get(t,n);if(!i||i.user_id!==r||!await e.env.data.authenticationMethods.remove(t,n))throw new m(404,{message:`Authentication method not found`});return await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete Authentication Method`,targetType:`authentication_method`,targetId:n}),e.body(null,204)}}),d_e=new f.OpenAPIHono().openapiRoutes([s_e,c_e,l_e,u_e]),NQ=432e3,f_e=f.z.object({user_id:f.z.string(),result_url:f.z.string().url().optional(),ttl_sec:f.z.number().int().positive().max(2592e3).optional(),client_id:f.z.string().optional(),organization_id:f.z.string().optional(),identity:f.z.object({user_id:f.z.string().optional(),provider:f.z.string().optional()}).optional(),includeEmailInRedirect:f.z.boolean().optional()}),p_e=f.z.object({user_id:f.z.string().optional(),email:f.z.string().email().optional(),connection_id:f.z.string().optional(),result_url:f.z.string().url().optional(),ttl_sec:f.z.number().int().positive().max(2592e3).optional(),client_id:f.z.string().optional(),organization_id:f.z.string().optional(),mark_email_as_verified:f.z.boolean().optional(),includeEmailInRedirect:f.z.boolean().optional(),new_password:f.z.string().optional()}),PQ=f.z.object({ticket:f.z.string().openapi({description:`A URL representing the ticket. Single-use, time-limited.`})}),m_e=F({route:(0,f.createRoute)({tags:[`tickets`],method:`post`,path:`/email-verification`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:f_e}}}},security:[{Bearer:[`create:user_tickets`]}],responses:{201:{description:`Email verification ticket created`,content:{"application/json":{schema:PQ}}}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`),r=await e.env.data.users.get(t,n.user_id);if(!r)throw new m(404,{message:`User not found`});let i=ts(),a=n.ttl_sec??NQ,o=new Date(Date.now()+a*1e3).toISOString();await e.env.data.codes.create(t,{code_id:i,code_type:`ticket`,login_id:i,user_id:r.user_id,expires_at:o,redirect_uri:n.result_url,state:JSON.stringify({purpose:`email_verification`,client_id:n.client_id,organization_id:n.organization_id,result_url:n.result_url,includeEmailInRedirect:n.includeEmailInRedirect})});let s=to(e.env,e.var.custom_domain),c=new URL(`u2/tickets/email-verification`,s);return c.searchParams.set(`ticket`,i),e.var.custom_domain||c.searchParams.set(`tenant_id`,t),await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Create Email Verification Ticket`,targetType:`ticket`,targetId:i,userId:r.user_id}),e.json({ticket:c.toString()},{status:201})}}),h_e=F({route:(0,f.createRoute)({tags:[`tickets`],method:`post`,path:`/password-change`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:p_e}}}},security:[{Bearer:[`create:user_tickets`]}],responses:{201:{description:`Password change ticket created`,content:{"application/json":{schema:PQ}}}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`),r=n.user_id;if(!r){if(!n.email)throw new m(400,{message:`user_id or email is required`});let i;if(n.connection_id){let r=await e.env.data.connections.get(t,n.connection_id);if(!r)throw new m(404,{message:`Connection not found (connection_id=${n.connection_id})`});i=r.name}let a=gg(n.email),o=i?`email:${a} connection:${i}`:`email:${a}`,{users:s}=await e.env.data.users.list(t,{q:o,per_page:1}),c=s[0];if(!c)throw new m(404,{message:`User not found`});r=c.user_id}let i=ts(),a=n.ttl_sec??NQ,o=new Date(Date.now()+a*1e3).toISOString();await e.env.data.codes.create(t,{code_id:i,code_type:`ticket`,login_id:i,user_id:r,expires_at:o,redirect_uri:n.result_url,state:JSON.stringify({purpose:`password_change`,client_id:n.client_id,organization_id:n.organization_id,connection_id:n.connection_id,result_url:n.result_url,mark_email_as_verified:n.mark_email_as_verified})});let s=to(e.env,e.var.custom_domain),c=new URL(`u2/tickets/password-change`,s);return c.searchParams.set(`ticket`,i),e.var.custom_domain||c.searchParams.set(`tenant_id`,t),await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Create Password Change Ticket`,targetType:`ticket`,targetId:i,userId:r}),e.json({ticket:c.toString()},{status:201})}}),g_e=new f.OpenAPIHono().openapiRoutes([m_e,h_e]),FQ=`controlplane.sync.`;function IQ(e,t){if(!e.env.outbox?.enabled||!e.env.data.outbox)return;let n={tenant_id:t.tenantId,event_type:`${FQ}${t.entity}.${t.op}`,log_type:M.SUCCESS_API_OPERATION,description:`Replicate ${t.entity} ${t.op} to control plane`,category:`system`,actor:{type:e.var.user_id?`admin`:e.var.client_id?`client_credentials`:`system`,id:e.var.user_id||void 0,client_id:e.var.client_id||void 0},target:{type:t.entity,id:t.aggregateId,after:t.payload},request:{method:e.req.method,path:e.req.path,ip:e.var.ip||``,user_agent:e.var.useragent||void 0},hostname:e.var.host||``,auth0_client:e.var.auth0_client,timestamp:new Date().toISOString()},r=e.env.data.outbox.create(t.tenantId,n),i=e.var.outboxEventPromises||[];i.push(r),e.set(`outboxEventPromises`,i)}var __e=f.z.object({proxy_routes:f.z.array(ui),start:f.z.number(),limit:f.z.number(),length:f.z.number()}),v_e=f.z.object({page:f.z.coerce.number().int().min(0).optional(),per_page:f.z.coerce.number().int().min(1).max(200).optional(),custom_domain_id:f.z.string().optional()}),LQ=f.z.object({id:f.z.string()}),RQ=f.z.object({"tenant-id":f.z.string().optional()});function zQ(e){let t=e.env.data.proxyRoutes;if(!t)throw new m(501,{message:`Proxy routes adapter not configured`});return t}var y_e=F({route:(0,f.createRoute)({tags:[`proxy-routes`],method:`get`,path:`/`,request:{query:v_e,headers:RQ},security:[{Bearer:[`read:proxy_routes`]}],responses:{200:{content:{"application/json":{schema:__e}},description:`List of proxy routes`}}}),handler:async e=>{let t=I(e),n=zQ(e),r=e.req.valid(`query`),i=await n.list(t,{page:r.page,per_page:r.per_page,custom_domain_id:r.custom_domain_id});return e.json(i)}}),b_e=F({route:(0,f.createRoute)({tags:[`proxy-routes`],method:`get`,path:`/{id}`,request:{params:LQ,headers:RQ},security:[{Bearer:[`read:proxy_routes`]}],responses:{200:{content:{"application/json":{schema:ui}},description:`A proxy route`}}}),handler:async e=>{let t=I(e),n=zQ(e),{id:r}=e.req.valid(`param`),i=await n.get(t,r);if(!i)throw new m(404);return e.json(i)}}),x_e=F({route:(0,f.createRoute)({tags:[`proxy-routes`],method:`post`,path:`/`,request:{body:{content:{"application/json":{schema:f.z.object(li.shape)}}},headers:RQ},security:[{Bearer:[`create:proxy_routes`]}],responses:{201:{content:{"application/json":{schema:ui}},description:`Created proxy route`}}}),handler:async e=>{let t=I(e),n=zQ(e),r=e.req.valid(`json`),i=await n.create(t,r);return IQ(e,{tenantId:t,entity:`proxy_route`,op:`created`,aggregateId:i.id,payload:i}),e.json(i,{status:201})}}),S_e=F({route:(0,f.createRoute)({tags:[`proxy-routes`],method:`patch`,path:`/{id}`,request:{params:LQ,body:{content:{"application/json":{schema:f.z.object(di.shape).partial()}}},headers:RQ},security:[{Bearer:[`update:proxy_routes`]}],responses:{200:{content:{"application/json":{schema:ui}},description:`Updated proxy route`}}}),handler:async e=>{let t=I(e),n=zQ(e),{id:r}=e.req.valid(`param`),i=e.req.valid(`json`);if(!await n.update(t,r,i))throw new m(404);let a=await n.get(t,r);if(!a)throw new m(404);return IQ(e,{tenantId:t,entity:`proxy_route`,op:`updated`,aggregateId:r,payload:a}),e.json(a)}}),C_e=F({route:(0,f.createRoute)({tags:[`proxy-routes`],method:`delete`,path:`/{id}`,request:{params:LQ,headers:RQ},security:[{Bearer:[`delete:proxy_routes`]}],responses:{204:{description:`Deleted`}}}),handler:async e=>{let t=I(e),n=zQ(e),{id:r}=e.req.valid(`param`),i=await n.get(t,r);if(!await n.remove(t,r))throw new m(404);return i&&IQ(e,{tenantId:t,entity:`proxy_route`,op:`deleted`,aggregateId:r,payload:i}),e.body(null,204)}}),w_e=new f.OpenAPIHono().openapiRoutes([y_e,b_e,x_e,S_e,C_e]),BQ=`custom-token-exchange`,T_e=50,E_e=f.z.object({token_exchange_profiles:f.z.array(yi),next:f.z.string().optional()}),D_e=f.z.object({from:f.z.string().optional(),take:f.z.coerce.number().int().min(1).max(100).optional()}),VQ=f.z.object({id:f.z.string()}),HQ=f.z.object({"tenant-id":f.z.string().optional()});function UQ(e){let t=e.env.data.tokenExchangeProfiles;if(!t)throw new m(501,{message:`Token exchange profiles adapter not configured`});return t}function WQ(e){throw new V(400,{statusCode:400,error:`Bad Request`,message:e})}async function GQ(e,t,n,r){if((await UQ(e).list(t)).some(e=>e.subject_token_type===n&&e.id!==r))throw new V(409,{statusCode:409,error:`Conflict`,message:`A token exchange profile for subject_token_type '${n}' already exists`})}async function O_e(e,t,n){let r=await e.env.data.actions.get(t,n);r||WQ(`Action '${n}' does not exist`),r.supported_triggers?.some(e=>e.id===BQ)||WQ(`Action '${n}' does not support the ${BQ} trigger`)}async function KQ(e,t,n){if(n.jwks!==void 0==(n.jwks_uri!==void 0)&&WQ(`jwt_verification needs exactly one of jwks and jwks_uri`),n.jwks&&n.jwks.keys.length===0&&WQ(`jwt_verification.jwks must contain at least one key`),n.jwks?.keys.some(e=>e.kty===`oct`||e.alg?.startsWith(`HS`))&&WQ(`jwt_verification.jwks must only contain public keys`),n.jwks_uri&&!n.jwks_uri.startsWith(`https://`)&&WQ(`jwt_verification.jwks_uri must use https`),n.user_mapping.type===`connection`){let r=n.user_mapping.connection,{connections:i}=await e.env.data.connections.list(t);i.some(e=>e.name===r)||WQ(`Connection '${r}' does not exist`)}}function qQ(e,t,n,r){return P(e,t,{type:M.SUCCESS_API_OPERATION,description:n,targetType:`token_exchange_profile`,targetId:r.id,afterState:r})}var k_e=F({route:(0,f.createRoute)({tags:[`token-exchange-profiles`],method:`get`,path:`/`,request:{query:D_e,headers:HQ},security:[{Bearer:[`read:token_exchange_profiles`]}],responses:{200:{content:{"application/json":{schema:E_e}},description:`Token exchange profiles`}}}),handler:async e=>{let t=I(e),{from:n,take:r=T_e}=e.req.valid(`query`),i=await UQ(e).list(t),a=0;if(n&&(a=i.findIndex(e=>e.id===n),a===-1))return e.json({token_exchange_profiles:[]});let o=i.slice(a,a+r),s=i[a+r]?.id;return e.json({token_exchange_profiles:o,...s?{next:s}:{}})}}),A_e=F({route:(0,f.createRoute)({tags:[`token-exchange-profiles`],method:`get`,path:`/{id}`,request:{params:VQ,headers:HQ},security:[{Bearer:[`read:token_exchange_profiles`]}],responses:{200:{content:{"application/json":{schema:yi}},description:`A token exchange profile`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=await UQ(e).get(t,n);if(!r)throw new m(404);return e.json(r)}}),j_e=F({route:(0,f.createRoute)({tags:[`token-exchange-profiles`],method:`post`,path:`/`,request:{body:{content:{"application/json":{schema:vi}}},headers:HQ},security:[{Bearer:[`create:token_exchange_profiles`]}],responses:{201:{content:{"application/json":{schema:yi}},description:`Created token exchange profile`}}}),handler:async e=>{let t=I(e),n=e.req.valid(`json`);n.action_id===void 0==(n.jwt_verification===void 0)&&WQ(`Provide exactly one of action_id and jwt_verification`),n.action_id&&await O_e(e,t,n.action_id),n.jwt_verification&&await KQ(e,t,n.jwt_verification),await GQ(e,t,n.subject_token_type);let r=await UQ(e).create(t,n);return await qQ(e,t,`Create token exchange profile`,r),e.json(r,{status:201})}}),M_e=F({route:(0,f.createRoute)({tags:[`token-exchange-profiles`],method:`patch`,path:`/{id}`,request:{params:VQ,body:{content:{"application/json":{schema:bi}}},headers:HQ},security:[{Bearer:[`update:token_exchange_profiles`]}],responses:{200:{content:{"application/json":{schema:yi}},description:`Updated token exchange profile`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=e.req.valid(`json`),i=UQ(e),a=await i.get(t,n);if(!a)throw new m(404);r.jwt_verification&&(a.action_id&&WQ(`jwt_verification cannot be set on a profile that runs an action`),await KQ(e,t,r.jwt_verification)),r.subject_token_type&&await GQ(e,t,r.subject_token_type,n),await i.update(t,n,r);let o=await i.get(t,n);if(!o)throw new m(404);return await qQ(e,t,`Update token exchange profile`,o),e.json(o)}}),N_e=F({route:(0,f.createRoute)({tags:[`token-exchange-profiles`],method:`delete`,path:`/{id}`,request:{params:VQ,headers:HQ},security:[{Bearer:[`delete:token_exchange_profiles`]}],responses:{204:{description:`Deleted`}}}),handler:async e=>{let t=I(e),{id:n}=e.req.valid(`param`),r=UQ(e);if(!await r.get(t,n))throw new m(404);return await r.remove(t,n),await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Delete token exchange profile`,targetType:`token_exchange_profile`,targetId:n}),e.body(null,204)}}),P_e=new f.OpenAPIHono().openapiRoutes([k_e,A_e,j_e,M_e,N_e]),F_e=f.z.object({page:f.z.coerce.number().int().min(0).default(0),per_page:f.z.coerce.number().int().min(1).max(100).default(50),kind:Ir.optional(),status:Lr.optional()}),I_e=F({route:(0,f.createRoute)({tags:[`tenant-operations`],method:`get`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:tenant_operations`]}],responses:{200:{content:{"application/json":{schema:Br.extend({events:f.z.array(Ur)})}},description:`The operation with its step events`}}}),handler:async e=>{let{tenantOperations:t,tenantOperationEvents:n}=e.env.data;if(!t||!n)throw new m(501,{message:`Tenant operations are not configured for this deployment`});let{id:r}=e.req.valid(`param`),i=await t.get(r);if(!i||!lM(e,e.var.tenant_id)&&i.tenant_id!==e.var.tenant_id)throw new m(404,{message:`Operation not found`});let{events:a}=await n.listByOperation(r);return e.json({...i,events:a})}}),L_e=new f.OpenAPIHono().openapiRoutes([I_e]),R_e=F({route:(0,f.createRoute)({tags:[`tenant-operations`],method:`get`,path:`/`,request:{query:F_e,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:tenant_operations`]}],responses:{200:{content:{"application/json":{schema:f.z.object({operations:f.z.array(Br),start:f.z.number(),limit:f.z.number(),length:f.z.number()})}},description:`Operations for the tenant, newest first`}}}),handler:async e=>{let{tenantOperations:t}=e.env.data;if(!t)throw new m(501,{message:`Tenant operations are not configured for this deployment`});let n=e.req.param(`id`);if(!n)throw new m(400,{message:`Missing tenant id`});if(!lM(e,e.var.tenant_id)&&n!==e.var.tenant_id)throw new m(403,{message:`Operations for other tenants can only be read from the control plane`});let{page:r,per_page:i,kind:a,status:o}=e.req.valid(`query`),s=await t.list({tenant_id:n,page:r,per_page:i,kind:a,status:o});return e.json(s)}}),z_e=F({route:(0,f.createRoute)({tags:[`tenant-operations`],method:`post`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:f.z.object({kind:Ir})}}}},security:[{Bearer:[`create:tenant_operations`]}],responses:{201:{content:{"application/json":{schema:Br}},description:`The enqueued operation. Poll GET /operations/{id} for progress; the inline engine returns it already terminal.`}}}),handler:async e=>{if(!lM(e,e.var.tenant_id))throw new m(403,{message:`Tenant operations can only be triggered from the control plane`});let{kind:t}=e.req.valid(`json`),n=e.req.param(`id`);if(!n)throw new m(400,{message:`Missing tenant id`});if(!await e.env.data.tenants.get(n))throw new m(404,{message:`Tenant not found`});if(t===`provision`||t===`deprovision`)throw new m(400,{message:`Operations of kind "${t}" are managed by the tenant lifecycle (create/delete) and cannot be enqueued directly`});if(t===`seed`||t===`backup`)throw new m(501,{message:`Operations of kind "${t}" are not supported yet`});let r=e.env.tenantOperationExecutor;if(!r)throw new m(501,{message:`Tenant operations are not configured for this deployment (no executor)`});let i=await r.enqueue({kind:t,tenant_id:n,initiated_by:e.var.user?.sub});return await P(e,n,{type:M.SUCCESS_API_OPERATION,description:`Enqueue tenant operation (${t})`,targetType:`tenant`,targetId:n}),e.json(i,{status:201})}}),B_e=new f.OpenAPIHono().openapiRoutes([R_e,z_e]);function JQ(e){if(typeof e==`object`&&e&&!Array.isArray(e)){let t={};for(let[n,r]of Object.entries(e))t[n]=r;return t}}function YQ(e,t){let n=JQ(e)?.[t];return typeof n==`string`?n:void 0}function XQ(e){let t=JQ(e);if(!t)return{};let n={};for(let[e,r]of Object.entries(t))r!=null&&(n[e]=r);return n}var ZQ=100;async function*QQ(e,t,n){let r=0,i=1e4;for(;;){let a=JQ(await t(n,{page:r,per_page:ZQ,include_totals:!1}))?.[e];if(!Array.isArray(a))throw Error(`Invalid list response for "${e}" during export`);if(a.length===0)break;for(let e of a)yield e;if(a.length<ZQ)break;if(r+=1,r>=i)throw Error(`Export exceeded pagination safety cap (${i} pages) for "${e}"`)}}function $Q(e,t){return{entity:e,data:t}}async function*V_e(e,t,n){let r=await e.tenants.get(t);r&&(yield $Q(`tenants`,r));let i=[];for await(let n of QQ(`clients`,(t,n)=>e.clients.list(t,n),t)){yield $Q(`clients`,n);let e=YQ(n,`client_id`);e&&i.push(e)}for await(let n of QQ(`connections`,(t,n)=>e.connections.list(t,n),t))yield $Q(`connections`,n);for await(let n of QQ(`resource_servers`,(t,n)=>e.resourceServers.list(t,n),t))yield $Q(`resource_servers`,n);let a=[];for await(let n of QQ(`roles`,(t,n)=>e.roles.list(t,n),t)){yield $Q(`roles`,n);let e=YQ(n,`id`);e&&a.push(e)}let o=[];for await(let n of QQ(`organizations`,(t,n)=>e.organizations.list(t,n),t)){yield $Q(`organizations`,n);let e=YQ(n,`id`);e&&o.push(e)}let s=[];for await(let n of QQ(`users`,(t,n)=>e.users.list(t,n),t)){yield $Q(`users`,n);let e=YQ(n,`user_id`);e&&s.push(e)}if(n.includePasswordHashes)for(let n of s){let r=await e.passwords.list(t,n);for(let e of r)yield $Q(`passwords`,e)}for(let n of s){let r=await e.authenticationMethods.list(t,n);for(let e of r)yield $Q(`authentication_methods`,e)}for(let n of s){let r=await e.userRoles.list(t,n);for(let e of r){let t=YQ(e,`id`);t&&(yield $Q(`user_roles`,{user_id:n,role_id:t}))}}for(let n of s){let r=await e.userPermissions.list(t,n);for(let e of r)yield $Q(`user_permissions`,{user_id:n,permission:e})}for(let n of a){let r=await e.rolePermissions.list(t,n);for(let e of r)yield $Q(`role_permissions`,{role_id:n,permission:e})}for(let n of o){let r=await e.organizationConnections.list(t,n);for(let e of r)yield $Q(`organization_connections`,{...e,organization_id:n})}for await(let n of QQ(`userOrganizations`,(t,n)=>e.userOrganizations.list(t,n),t))yield $Q(`user_organizations`,n);for await(let n of QQ(`client_grants`,(t,n)=>e.clientGrants.list(t,n),t))yield $Q(`client_grants`,n);for await(let n of QQ(`invites`,(t,n)=>e.invites.list(t,n),t))yield $Q(`invites`,n);let c=[];for await(let n of QQ(`actions`,(t,n)=>e.actions.list(t,n),t)){yield $Q(`actions`,n);let e=YQ(n,`id`);e&&c.push(e)}for(let n of c){let r=0;for(;;){let i=(await e.actionVersions.list(t,n,{page:r,per_page:ZQ,include_totals:!1})).versions;if(i.length===0)break;for(let e of i)yield $Q(`action_versions`,e);if(i.length<ZQ)break;if(r+=1,r>=1e4)throw Error(`Export exceeded pagination safety cap for action_versions of action "${n}"`)}}let l=new Set,u=[];for await(let n of QQ(`hooks`,(t,n)=>e.hooks.list(t,n),t)){u.push(n);let e=YQ(n,`code_id`);e&&l.add(e)}for(let n of l){let r=await e.hookCode.get(t,n);r&&(yield $Q(`hook_code`,r))}for(let e of u)yield $Q(`hooks`,e);for await(let n of QQ(`flows`,(t,n)=>e.flows.list(t,n),t))yield $Q(`flows`,n);for await(let n of QQ(`forms`,(t,n)=>e.forms.list(t,n),t))yield $Q(`forms`,n);let d=await e.themes.get(t,`default`);d&&(yield $Q(`themes`,d));let f=await e.branding.get(t);f&&(yield $Q(`branding`,f));let p=await e.promptSettings.get(t);p&&(yield $Q(`prompt_settings`,p));let m=await e.universalLoginTemplates.get(t);m&&(yield $Q(`universal_login_templates`,m));let h=await e.customText.list(t);for(let n of h){let r=await e.customText.get(t,n.prompt,n.language);r&&(yield $Q(`custom_text`,{prompt:n.prompt,language:n.language,custom_text:r}))}let g=await e.emailProviders.get(t);g&&(yield $Q(`email_providers`,g));let _=await e.emailTemplates.list(t);for(let e of _)yield $Q(`email_templates`,e);let v=await e.customDomains.list(t);for(let e of v)yield $Q(`custom_domains`,e);if(e.logStreams){let n=await e.logStreams.list(t);for(let e of n)yield $Q(`log_streams`,e)}if(e.migrationSources){let n=await e.migrationSources.list(t);for(let e of n)yield $Q(`migration_sources`,e)}if(e.proxyRoutes){let n=0;for(;;){let r=(await e.proxyRoutes.list(t,{page:n,per_page:ZQ})).proxy_routes;if(r.length===0)break;for(let e of r)yield $Q(`proxy_routes`,e);if(r.length<ZQ)break;if(n+=1,n>=1e4)throw Error(`Export exceeded pagination safety cap for proxy_routes`)}}}function H_e(e){let t={};if(e.id!==void 0&&(t.id=e.id),e.created_at!==void 0&&(t.created_at=e.created_at),e.updated_at!==void 0&&(t.updated_at=e.updated_at),Object.keys(t).length!==0)return{importMetadata:wa.parse(t)}}var e$=new Map(`tenants.clients.connections.resource_servers.roles.organizations.users.passwords.authentication_methods.user_roles.user_permissions.role_permissions.organization_connections.user_organizations.client_grants.invites.actions.action_versions.hook_code.hooks.flows.forms.themes.branding.prompt_settings.universal_login_templates.custom_text.email_providers.email_templates.custom_domains.log_streams.migration_sources.proxy_routes`.split(`.`).map((e,t)=>[e,t]));function t$(e,t){return H_e({id:t?YQ(e,t):void 0,created_at:YQ(e,`created_at`),updated_at:YQ(e,`updated_at`)})}function n$(e,t){if(e===void 0)throw Error(`Missing required field "${t}"`);return e}async function U_e(e,t,n,r){let i={},a=[],o=e=>{i[e]=(i[e]??0)+1},s=[...n].sort((e,t)=>(e$.get(e.entity)??2**53-1)-(e$.get(t.entity)??2**53-1));for(let{entity:n,data:i}of s)try{let s=XQ(i);switch(n){case`tenants`:{let n=Pr.parse(s);if(await e.tenants.get(t))continue;let r={...n,id:t};await e.tenants.create(r,t$(i));break}case`clients`:await e.clients.create(t,Ot.parse(s),t$(i,`client_id`));break;case`connections`:await e.connections.create(t,pn.parse(s),t$(i,`id`));break;case`resource_servers`:await e.resourceServers.create(t,Mi.parse(s),t$(i,`id`));break;case`roles`:await e.roles.create(t,Yi.parse(s),t$(i,`id`));break;case`organizations`:await e.organizations.create(t,ta.parse(s),t$(i,`id`));break;case`users`:await e.users.create(t,Tt.parse(s),t$(i,`user_id`));break;case`passwords`:if(!r.includePasswordHashes)continue;await e.passwords.create(t,Or.parse(s),t$(i,`id`));break;case`authentication_methods`:await e.authenticationMethods.create(t,Ca.parse(s),t$(i,`id`));break;case`user_roles`:{let n=n$(YQ(i,`user_id`),`user_id`),r=n$(YQ(i,`role_id`),`role_id`);await e.userRoles.create(t,n,r,void 0,t$(i));break}case`user_permissions`:{let n=JQ(i),r=n$(YQ(i,`user_id`),`user_id`),a=Vi.parse(XQ(n?.permission));await e.userPermissions.create(t,r,a,void 0,t$(i));break}case`role_permissions`:{let n=JQ(i),r=n$(YQ(i,`role_id`),`role_id`),a=Fi.parse(XQ(n?.permission));await e.rolePermissions.assign(t,r,[a],t$(i));break}case`organization_connections`:{let n=n$(YQ(i,`organization_id`),`organization_id`);await e.organizationConnections.create(t,n,ra.parse(s),t$(i));break}case`user_organizations`:await e.userOrganizations.create(t,aa.parse(s),t$(i,`id`));break;case`client_grants`:await e.clientGrants.create(t,At.parse(s),t$(i,`id`));break;case`invites`:await e.invites.create(t,tr.parse(s),t$(i,`id`));break;case`actions`:await e.actions.create(t,Be.parse(s),t$(i,`id`));break;case`action_versions`:await e.actionVersions.create(t,Ze.parse(s),t$(i,`id`));break;case`hooks`:await e.hooks.create(t,Yn.parse(s),t$(i,`hook_id`));break;case`hook_code`:await e.hookCode.create(t,Zn.parse(s),t$(i,`id`));break;case`flows`:await e.flows.create(t,_t.parse(s),t$(i,`id`));break;case`forms`:await e.forms.create(t,In.parse(s),t$(i,`id`));break;case`themes`:{let n=YQ(i,`themeId`);await e.themes.create(t,ii.parse(s),n,t$(i,`themeId`));break}case`branding`:await e.branding.set(t,cn.parse(s));break;case`prompt_settings`:await e.promptSettings.set(t,oi.parse(s));break;case`universal_login_templates`:{let n=n$(YQ(i,`body`),`body`);await e.universalLoginTemplates.set(t,{body:n},t$(i));break}case`custom_text`:{let n=JQ(i),r=ga.parse({prompt:YQ(i,`prompt`),language:YQ(i,`language`)}),a=ha.parse(XQ(n?.custom_text));await e.customText.set(t,r.prompt,r.language,a,t$(i));break}case`email_providers`:await e.emailProviders.create(t,Ti.parse(s),t$(i));break;case`email_templates`:await e.emailTemplates.create(t,Di.parse(s),t$(i));break;case`custom_domains`:await e.customDomains.create(t,hn.parse(s),t$(i,`custom_domain_id`));break;case`log_streams`:if(!e.logStreams){a.push({entity:n,error:`logStreams adapter is not configured`});continue}await e.logStreams.create(t,vr.parse(s),t$(i,`id`));break;case`migration_sources`:if(!e.migrationSources){a.push({entity:n,error:`migrationSources adapter is not configured`});continue}await e.migrationSources.create(t,Sr.parse(s),t$(i,`id`));break;case`proxy_routes`:if(!e.proxyRoutes){a.push({entity:n,error:`proxyRoutes adapter is not configured`});continue}await e.proxyRoutes.create(t,li.parse(s),t$(i,`id`));break;default:a.push({entity:n,error:`Unknown entity "${n}"`});continue}o(n)}catch(e){a.push({entity:n,error:e instanceof Error?e.message:String(e)})}return{counts:i,errors:a}}var r$=`read:user_password_hashes`,i$=`create:user_password_hashes`;function W_e(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function G_e(e){let t=e.var.user;if(!t)return[];let n=typeof t.scope==`string`?t.scope.split(` `).filter(Boolean):[],r=`permissions`in t?W_e(t.permissions):[];return[...n,...r]}function a$(e,t){if(!G_e(e).includes(t))throw new m(403,{message:`Including password hashes requires the "${t}" scope`})}var K_e=f.z.object({entity:f.z.string(),data:f.z.unknown()}),o$=25*1024*1024,s$=250*1024*1024;async function q_e(e){let t=e.req.raw.body;if(!t)return``;let n=t.getReader(),r,i=0;for(;!r;){let{value:e,done:t}=await n.read();if(t)break;e&&e.byteLength&&(r=e,i=e.byteLength)}if(!r)return``;if(i>o$)throw await n.cancel(),new m(413,{message:`Import payload exceeds the ${o$}-byte limit`});let a=r[0]===31&&r[1]===139,o=e=>new Uint8Array(e),s=new TextDecoder,c=``,l=0;if(!a){let e=r;for(;;){if(!e){let{value:t,done:r}=await n.read();if(r)break;if(!t)continue;if(e=t,i+=e.byteLength,i>o$)throw await n.cancel(),new m(413,{message:`Import payload exceeds the ${o$}-byte limit`})}c+=s.decode(o(e),{stream:!0}),e=void 0}return c+=s.decode(),c}let u=new DecompressionStream(`gzip`),d=u.writable.getWriter(),f=u.readable.getReader(),p=(async()=>{let e=r;try{for(;;){if(!e){let{value:t,done:r}=await n.read();if(r)break;if(!t)continue;if(e=t,i+=e.byteLength,i>o$)throw new m(413,{message:`Import payload exceeds the ${o$}-byte limit`})}await d.write(o(e)),e=void 0}await d.close()}catch(e){throw await n.cancel().catch(()=>{}),await d.abort(e).catch(()=>{}),e}})(),h=(async()=>{for(;;){let{value:e,done:t}=await f.read();if(t)break;if(e){if(l+=e.byteLength,l>s$)throw await f.cancel(),new m(413,{message:`Decoded import payload exceeds the ${s$}-byte limit`});c+=s.decode(e,{stream:!0})}}c+=s.decode()})();return await Promise.all([p,h]),c}function J_e(e){let t=[];for(let n of e.split(`
|
|
3346
3346
|
`)){let e=n.trim();e&&t.push(K_e.parse(JSON.parse(e)))}return t}var Y_e=f.z.object({counts:f.z.record(f.z.string(),f.z.number()),errors:f.z.array(f.z.object({entity:f.z.string(),error:f.z.string()}))}),X_e=F({route:(0,f.createRoute)({tags:[`tenant-export-import`],method:`get`,path:`/export`,request:{query:f.z.object({include_password_hashes:f.z.enum([`true`,`false`]).optional().openapi({description:`Include password hashes in the export. Requires the "${r$}" scope.`}),gzip:f.z.enum([`true`,`false`]).optional().openapi({description:"Whether to gzip the response (default true). Pass false to receive uncompressed `application/x-ndjson`."})}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:users`]}],responses:{200:{content:{"application/gzip":{schema:f.z.string().openapi({type:`string`,format:`binary`})},"application/x-ndjson":{schema:f.z.string()}},description:"JSON-lines export of the tenant's durable data, one `{ entity, data }` record per line (gzipped by default)."},500:{content:{"application/json":{schema:f.z.object({message:f.z.string()})}},description:`Export failed before the response body could be streamed.`}}}),handler:async e=>{let t=I(e),n=e.req.query(`include_password_hashes`)===`true`;n&&a$(e,r$);let r=e.req.query(`gzip`)!==`false`,i=new TextEncoder,a=V_e(e.env.data,t,{includePasswordHashes:n})[Symbol.asyncIterator](),o=0,s=!1,c=[],l=0,u=!1;try{for(;c.length<1e3&&l<1048576;){let{value:e,done:t}=await a.next();if(t){u=!0;break}let n=i.encode(JSON.stringify(e)+`
|
|
3347
3347
|
`);c.push(n),l+=n.byteLength,o+=1}}catch(r){throw await P(e,t,{type:M.FAILED_API_OPERATION,description:`Tenant export failed after ${o} rows (password_hashes=${n}) by ${e.var.user?.sub??`unknown`}: ${r instanceof Error?r.message:String(r)}`,targetType:`tenant`,targetId:t}).catch(()=>{}),new m(500,{message:`Tenant export failed`})}let d=new ReadableStream({async pull(r){let l=c.shift();if(l){r.enqueue(l);return}try{let c=u?void 0:await a.next();if(!c||c.done){s||(s=!0,await P(e,t,{type:M.SUCCESS_API_OPERATION,description:`Tenant export (${o} rows, password_hashes=${n}) by ${e.var.user?.sub??`unknown`}`,targetType:`tenant`,targetId:t,waitForCompletion:!0}).catch(()=>{})),r.close();return}o+=1,r.enqueue(i.encode(JSON.stringify(c.value)+`
|
|
3348
|
-
`))}catch(i){s||(s=!0,await P(e,t,{type:M.FAILED_API_OPERATION,description:`Tenant export failed after ${o} rows (password_hashes=${n}) by ${e.var.user?.sub??`unknown`}: ${i instanceof Error?i.message:String(i)}`,targetType:`tenant`,targetId:t,waitForCompletion:!0}).catch(()=>{})),r.error(i)}},async cancel(){await a.return?.(void 0)}});if(!r)return new Response(d,{status:200,headers:{"content-type":`application/x-ndjson`,"content-disposition":`attachment; filename="${t}-export.jsonl"`}});let f=d.pipeThrough(new CompressionStream(`gzip`));return new Response(f,{status:200,headers:{"content-type":`application/gzip`,"content-disposition":`attachment; filename="${t}-export.jsonl.gz"`}})}}),Z_e=F({route:(0,f.createRoute)({tags:[`tenant-export-import`],method:`post`,path:`/import`,request:{query:f.z.object({include_password_hashes:f.z.enum([`true`,`false`]).optional().openapi({description:`Import password-hash records from the stream. Requires the "${i$}" scope.`})}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`create:users`]}],responses:{200:{content:{"application/json":{schema:Y_e}},description:`Per-entity counts and any non-fatal per-row errors.`}}}),handler:async e=>{let t=I(e),n=e.req.query(`include_password_hashes`)===`true`;n&&a$(e,i$);let r;try{r=J_e(await q_e(e))}catch(e){throw e instanceof m?e:new m(400,{message:`Request body is not valid gzipped/plain JSON-lines`})}let i=await U_e(e.env.data,t,r,{includePasswordHashes:n}),a=Object.values(i.counts).reduce((e,t)=>e+t,0);return await P(e,t,{type:M.SUCCESSFULLY_IMPORTED_USERS,description:`Tenant import (${a} rows, ${i.errors.length} errors, password_hashes=${n}) by ${e.var.user?.sub??`unknown`}`,targetType:`tenant`,targetId:t}),e.json(i)}}),Q_e=new f.OpenAPIHono().openapiRoutes([X_e,Z_e]),$_e=[`$2a$`,`$2b$`,`$2y$`];function c$(e){return $_e.some(t=>e.startsWith(t))}var eve=f.z.enum([`argon2`,`bcrypt`,`hmac`,`ldap`,`md4`,`md5`,`pbkdf2`,`scrypt`,`sha1`,`sha256`,`sha512`]),l$=f.z.enum([`base64`,`hex`,`utf8`]),tve=f.z.object({algorithm:eve,hash:f.z.object({value:f.z.string(),encoding:l$.optional(),digest:f.z.string().optional(),key:f.z.object({value:f.z.string(),encoding:l$.optional()}).optional()}),salt:f.z.object({value:f.z.string(),encoding:l$.optional(),position:f.z.enum([`prefix`,`suffix`]).optional()}).optional(),password:f.z.object({encoding:f.z.enum([`ascii`,`utf8`,`utf16le`,`ucs2`,`latin1`,`binary`]).optional()}).optional(),keylen:f.z.number().int().positive().optional(),cost:f.z.number().int().positive().optional(),blockSize:f.z.number().int().positive().optional(),parallelization:f.z.number().int().positive().optional()}),nve=f.z.union([f.z.object({totp:f.z.object({secret:f.z.string()})}),f.z.object({phone:f.z.object({value:f.z.string()})}),f.z.object({email:f.z.object({value:f.z.string()})})]),u$=f.z.object({user_id:f.z.string().optional(),email:f.z.string().email(),email_verified:f.z.boolean().optional(),username:f.z.string().optional(),blocked:f.z.boolean().optional(),phone_number:f.z.string().optional(),phone_verified:f.z.boolean().optional(),name:f.z.string().optional(),given_name:f.z.string().optional(),family_name:f.z.string().optional(),nickname:f.z.string().optional(),picture:f.z.string().optional(),app_metadata:f.z.record(f.z.string(),f.z.unknown()).optional(),user_metadata:f.z.record(f.z.string(),f.z.unknown()).optional(),mfa_factors:f.z.array(nve).min(1).max(10).optional(),password_hash:f.z.string().optional(),custom_password_hash:tve.optional()}).passthrough().refine(e=>!(e.password_hash&&e.custom_password_hash),{message:`password_hash and custom_password_hash are mutually exclusive`,path:[`custom_password_hash`]});f.z.array(u$);var rve=f.z.enum([`pending`,`completed`,`failed`]),ive=f.z.object({failed:f.z.number().int().default(0),updated:f.z.number().int().default(0),inserted:f.z.number().int().default(0),total:f.z.number().int().default(0)}),d$=f.z.object({id:f.z.string(),type:f.z.string(),status:rve,created_at:f.z.string().optional(),connection_id:f.z.string().optional(),external_id:f.z.string().optional(),percentage_done:f.z.number().int().optional(),time_left_seconds:f.z.number().int().optional(),status_details:f.z.string().optional(),summary:ive.optional()}),ave=f.z.object({user:f.z.record(f.z.string(),f.z.unknown()),errors:f.z.array(f.z.object({code:f.z.string(),message:f.z.string(),path:f.z.string().optional()}))}),ove=f.z.array(ave),f$={VALIDATION_ERROR:`VALIDATION_ERROR`,UNSUPPORTED_HASH_ALGORITHM:`UNSUPPORTED_HASH_ALGORITHM`,UNSUPPORTED_HASH_FORMAT:`UNSUPPORTED_HASH_FORMAT`,DUPLICATE_ENTRY:`DUPLICATE_ENTRY`,USER_ALREADY_EXISTS:`USER_ALREADY_EXISTS`,INTERNAL_ERROR:`INTERNAL_ERROR`},sve=new Set([`blocked`,`email`,`email_verified`,`identities`,`user_id`,`created_at`,`updated_at`,`multifactor`,`multifactor_last_modified`,`last_ip`,`last_login`,`last_password_reset`,`phone_number`,`phone_verified`,`username`,`clientID`,`globalClientID`,`global_client_id`]);function cve(e){if(!e)return;let t=Object.entries(e).filter(([e])=>!sve.has(e));return Object.fromEntries(t)}function lve(e){if(e.password_hash!==void 0)return c$(e.password_hash)?{ok:!0,value:{password:e.password_hash,algorithm:`bcrypt`}}:{ok:!1,error:{code:f$.UNSUPPORTED_HASH_FORMAT,message:`password_hash must be a bcrypt hash beginning with $2a$, $2b$ or $2y$`,path:`password_hash`}};let t=e.custom_password_hash;return t===void 0?{ok:!0,value:void 0}:t.algorithm===`bcrypt`?t.hash.encoding!==void 0&&t.hash.encoding!==`utf8`?{ok:!1,error:{code:f$.UNSUPPORTED_HASH_FORMAT,message:`bcrypt hashes must use utf8 encoding`,path:`custom_password_hash.hash.encoding`}}:c$(t.hash.value)?{ok:!0,value:{password:t.hash.value,algorithm:`bcrypt`}}:{ok:!1,error:{code:f$.UNSUPPORTED_HASH_FORMAT,message:`bcrypt hash must begin with $2a$, $2b$ or $2y$ ($2$ and $2x$ are not supported)`,path:`custom_password_hash.hash.value`}}:{ok:!1,error:{code:f$.UNSUPPORTED_HASH_ALGORITHM,message:`AuthHero can only import bcrypt password hashes; received "${t.algorithm}". Users with other algorithms must reset their password on first login.`,path:`custom_password_hash.algorithm`}}}function p$(e,t,n){return`${t}|${e?ag(e,t):n??rg()}`}async function uve(e,t){let n=new TextEncoder().encode(`${e}:${t}`),r=await crypto.subtle.digest(`SHA-256`,n);return Array.from(new Uint8Array(r)).slice(0,12).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function dve({entry:e,connection:t,provider:n,fallbackUserId:r}){let i=lve(e);if(!i.ok)return{ok:!1,error:i.error};let a={email:e.email,email_verified:e.email_verified??!1,connection:t,provider:n,is_social:!1};a.user_id=p$(e.user_id,n,r),e.username!==void 0&&(a.username=e.username),e.phone_number!==void 0&&(a.phone_number=e.phone_number),e.phone_verified!==void 0&&(a.phone_verified=e.phone_verified),a.name=e.name??e.email,e.given_name!==void 0&&(a.given_name=e.given_name),e.family_name!==void 0&&(a.family_name=e.family_name),e.nickname!==void 0&&(a.nickname=e.nickname),e.picture!==void 0&&(a.picture=e.picture);let o=cve(e.app_metadata);return o!==void 0&&(a.app_metadata=o),e.user_metadata!==void 0&&(a.user_metadata=e.user_metadata),{ok:!0,value:{user:a,password:i.value}}}function fve(e){if(typeof e!=`object`||!e||Array.isArray(e))return{value:e};let t={...e};if(`password_hash`in t&&(t.password_hash=`[redacted]`),`custom_password_hash`in t&&typeof t.custom_password_hash==`object`&&t.custom_password_hash!==null){let e={...t.custom_password_hash};`hash`in e&&(e.hash=`[redacted]`),`salt`in e&&(e.salt=`[redacted]`),t.custom_password_hash=e}return t}function pve(e){return typeof e!=`object`||!e||Array.isArray(e)?{value:e}:{...e}}function m$(e,t){return e===`email`||e===`username`?t.toLowerCase():t}function mve(e){let t=[`email:${m$(`email`,e.email)}`];return e.user_id!==void 0&&t.push(`user_id:${e.user_id}`),e.username!==void 0&&t.push(`username:${m$(`username`,e.username)}`),e.phone_number!==void 0&&t.push(`phone:${e.phone_number}`),t}function hve(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function h$(e){return typeof e==`string`?e:void 0}function gve(e){let t=e.input;if(!hve(t))return null;let n=h$(t.connection_id),r=h$(t.connection),i=h$(t.provider);return!n||!r||!i?null:{connection_id:n,connection:r,provider:i,upsert:t.upsert===!0,external_id:h$(t.external_id),send_completion_email:t.send_completion_email===!0}}function g$(e,t){return{seq:e,status:`failed`,error_code:t.code,error_message:t.message,error_path:t.path??null}}async function _$(e,t,n,r){return(await e.users.list(t,{q:`${n}:${Ha(r)}`,page:0,per_page:1,include_totals:!1})).users[0]?.user_id??null}async function v$(e,t,n,r){if(n.user_id!==void 0){let i=await e.users.get(t,p$(n.user_id,r));if(i)return i.user_id}let i=await _$(e,t,`email`,n.email);if(i)return i;if(n.username!==void 0){let r=await _$(e,t,`username`,n.username);if(r)return r}if(n.phone_number!==void 0){let r=await _$(e,t,`phone_number`,n.phone_number);if(r)return r}return null}var y$=100,b$=200,_ve=10;async function x$(e,t,n,r){let i=new Map,a=[...new Set(r)];for(let r=0;r<a.length;r+=y$){let o=a.slice(r,r+y$),s=new Set(o.map(e=>m$(n,e))),c=o.map(e=>`${n}:${Ha(e)}`).join(` OR `);for(let r=0;r<_ve;r+=1){let a=await e.users.list(t,{q:c,page:r,per_page:b$,include_totals:!1});for(let e of a.users){let t=e[n];if(typeof t==`string`){let r=m$(n,t);i.has(r)||i.set(r,e.user_id),s.delete(r)}}if(s.size===0||a.users.length<b$)break}}return i}function S$(e){return _g({...e.user,...e.password?{password:{hash:e.password.password,algorithm:e.password.algorithm}}:{}})}async function vve(e,t,n,r){let i=await Promise.all(n.map(async e=>{let t=u$.safeParse(e.payload);if(!t.success){let n=t.error.issues[0];return{row:e,outcome:g$(e.seq,{code:f$.VALIDATION_ERROR,message:n?.message??`Invalid user entry`,path:n?.path.join(`.`)})}}let n=t.data,i=dve({entry:n,connection:r.connection,provider:r.provider,fallbackUserId:await uve(e.operation_id,e.seq)});return i.ok?{row:e,entry:n,mapped:i.value,probeId:n.user_id===void 0?void 0:p$(n.user_id,r.provider)}:{row:e,outcome:g$(e.seq,i.error)}})),a=i.filter(e=>!e.outcome&&e.entry&&e.mapped),o=new Map;for(let e of i)e.outcome&&o.set(e.row.seq,e.outcome);let s=()=>n.map(e=>o.get(e.seq)??{seq:e.seq,status:`failed`,error_code:f$.INTERNAL_ERROR,error_message:`Row produced no outcome`});if(r.upsert){for(let n of a)o.set(n.row.seq,await C$(e,t,n.row,r,n.entry,n.mapped,await v$(e,t,n.entry,r.provider)));return s()}let c=a.flatMap(e=>[e.probeId,e.mapped.user.user_id].filter(e=>!!e)),l=a.map(e=>e.entry.email).filter(Boolean),u=a.map(e=>e.entry.username).filter(e=>e!==void 0),d=a.map(e=>e.entry.phone_number).filter(e=>e!==void 0),[f,p,m,h]=await Promise.all([c.length?x$(e,t,`user_id`,c):new Map,l.length?x$(e,t,`email`,l):new Map,u.length?x$(e,t,`username`,u):new Map,d.length?x$(e,t,`phone_number`,d):new Map]),g=new Map;for(let e of a){let t=e.entry,n=[`email:${m$(`email`,t.email)}`,...t.username===void 0?[]:[`username:${m$(`username`,t.username)}`],...t.phone_number===void 0?[]:[`phone_number:${m$(`phone_number`,t.phone_number)}`]];if(e.existingId=(e.probeId?f.get(m$(`user_id`,e.probeId)):void 0)??f.get(m$(`user_id`,e.mapped.user.user_id))??p.get(m$(`email`,t.email))??(t.username===void 0?void 0:m.get(m$(`username`,t.username)))??(t.phone_number===void 0?void 0:h.get(m$(`phone_number`,t.phone_number)))??n.map(e=>g.get(e)).find(e=>e!==void 0)??null,e.existingId===null)for(let t of n)g.set(t,e.mapped.user.user_id)}let _=a.filter(e=>e.existingId===null),v=a.filter(e=>e.existingId!==null);if(_.length){let n=_.map(e=>S$(e.mapped)),i=!1;if(e.users.createMany)try{await e.users.createMany(t,n),i=!0}catch{i=!1}if(i)for(let e of _)o.set(e.row.seq,{seq:e.row.seq,status:`inserted`,entity_id:e.mapped.user.user_id});else for(let n of _)o.set(n.row.seq,await C$(e,t,n.row,r,n.entry,n.mapped,await v$(e,t,n.entry,r.provider)))}for(let n of v)o.set(n.row.seq,await C$(e,t,n.row,r,n.entry,n.mapped,n.existingId));return s()}async function C$(e,t,n,r,i,a,o){let s={value:a};try{let a=o===s.value.user.user_id;if(o&&!r.upsert&&!a)return g$(n.seq,{code:f$.USER_ALREADY_EXISTS,message:`A user matching ${i.email} already exists; enable upsert to update it`,path:`email`});if(o&&a)return s.value.password&&(await e.passwords.get(t,o)||await e.passwords.create(t,{user_id:o,is_current:!0,...s.value.password})),{seq:n.seq,status:`inserted`,entity_id:o};if(o){let{connection:r,...i}=s.value.user;return await e.users.update(t,o,i),s.value.password&&(await e.passwords.get(t,o)||await e.passwords.create(t,{user_id:o,is_current:!0,...s.value.password})),{seq:n.seq,status:`updated`,entity_id:o}}let c=await e.users.rawCreate(t,S$(s.value));return{seq:n.seq,status:`inserted`,entity_id:c.user_id}}catch(e){return g$(n.seq,{code:f$.INTERNAL_ERROR,message:e instanceof Error?e.message:String(e)})}}async function w$(e,t,n={}){let r=e.tenantOperationRows,i=e.tenantOperations;if(!r||!i)throw Error(`Bulk user import requires the tenantOperations and tenantOperationRows adapters`);let a=n.chunkSize??50,o=n.leaseMs??6e4,s=n.workerId??`import-${Math.random().toString(36).slice(2,10)}-${Date.now()}`,c=await i.get(t);if(!c)throw Error(`Tenant operation ${t} not found`);if(c.status===`succeeded`||c.status===`failed`)return{done:!0,processed:0,remaining:(await r.countByStatus(t)).pending,claimed:!1};if(!await i.claim(t,s,o))return{done:!1,processed:0,remaining:(await r.countByStatus(t)).pending,claimed:!1};let l=gve(c);if(!l)return await i.update(t,{status:`failed`,error:`Operation input is missing or malformed`,finished_at:new Date().toISOString()}),await i.release(t,s),{done:!0,processed:0,remaining:0,claimed:!0};let u=c.tenant_id;if(!u)return await i.update(t,{status:`failed`,error:`users_import operations require a tenant_id`,finished_at:new Date().toISOString()}),await i.release(t,s),{done:!0,processed:0,remaining:0,claimed:!0};c.status===`pending`&&await i.update(t,{status:`running`});let d=0,f=n.maxRows??1/0,p=(await r.countByStatus(t)).pending;try{for(;!(d>=f||n.deadline!==void 0&&Date.now()>=n.deadline);){let n=Math.min(a,f-d),o=await r.claimPending(t,n);if(o.length===0)break;let s=await vve(e,u,o,l);d+=await r.recordOutcomes(t,s);let c=await r.countByStatus(t);if(await i.update(t,{current_step:`${c.total-c.pending}/${c.total} rows`,result:T$(c)}),c.pending>=p){console.warn(`users_import ${t} made no progress on a chunk of ${s.length} rows (${c.pending} still pending); stopping this pass`);break}p=c.pending}let o=await r.countByStatus(t),s=o.pending===0;return s&&await i.update(t,{status:`succeeded`,current_step:`${o.total}/${o.total} rows`,result:T$(o),finished_at:new Date().toISOString()}),{done:s,processed:d,remaining:o.pending,claimed:!0}}finally{await i.release(t,s)}}function T$(e){return{total:e.total,inserted:e.inserted,updated:e.updated,failed:e.failed}}async function yve(e,t={}){let n=e.tenantOperations;if(!n||!e.tenantOperationRows)return{scanned:0,advanced:0,completed:0,errors:0};let r=await n.listResumable({kind:`users_import`,limit:t.maxOperations??10}),i={scanned:r.length,advanced:0,completed:0,errors:0};for(let n of r)try{let r=await w$(e,n.id,t);r.processed>0&&(i.advanced+=1),r.done&&(i.completed+=1)}catch(e){i.errors+=1,console.warn(`Failed to resume users_import ${n.id}:`,e instanceof Error?e.message:e)}return i}var bve=50,xve=`users_import`;function E$(e){return`job_${e}`}function Sve(e){return e.startsWith(`job_`)?e.slice(4):e}function Cve(e){switch(e.status){case`succeeded`:return`completed`;case`failed`:case`cancelled`:return`failed`;default:return`pending`}}function D$(e,t){return typeof e==`number`&&Number.isFinite(e)?e:t}function O$(e,t){return typeof e==`string`?e:t}function k$(e){let t=typeof e.input==`object`&&e.input!==null?e.input:{},n=typeof e.result==`object`&&e.result!==null?e.result:{},r=D$(n.total,0),i=D$(n.inserted,0),a=D$(n.updated,0),o=D$(n.failed,0),s=i+a+o,c=r>0?Math.floor(s/r*100):r===0?100:0,l=0;if(s>0&&s<r){let t=(Date.now()-new Date(e.created_at).getTime())/s;l=Math.max(0,Math.round(t*(r-s)/1e3))}let u=Cve(e);return{id:E$(e.id),type:xve,status:u,created_at:e.created_at,connection_id:O$(t.connection_id),external_id:O$(t.external_id),percentage_done:c,time_left_seconds:l,...e.error?{status_details:e.error}:{},summary:{total:r,inserted:i,updated:a,failed:o}}}function A$(e){let{tenantOperations:t,tenantOperationRows:n}=e.env.data;if(!t||!n)throw new m(501,{message:`Bulk user import is not available: this deployment has no tenantOperations/tenantOperationRows adapters`});return{tenantOperations:t,tenantOperationRows:n}}async function j$(e,t){let{tenantOperations:n}=A$(e),r=await n.get(Sve(t));if(!r||r.kind!==`users_import`||r.tenant_id!==e.var.tenant_id)throw new m(404,{message:`Job not found`});return r}var wve=F({route:(0,f.createRoute)({tags:[`jobs`],method:`post`,path:`/users-imports`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"multipart/form-data":{schema:f.z.object({users:f.z.any().openapi({type:`string`,format:`binary`,description:`JSON file containing an array of users to import.`}),connection_id:f.z.string().openapi({description:`Id of the database connection to import into.`}),upsert:f.z.union([f.z.string(),f.z.boolean()]).optional().openapi({description:`When true, update users that already match on user_id, email, username or phone. Defaults to false.`}),external_id:f.z.string().optional().openapi({description:`Caller-supplied correlation id, echoed back.`}),send_completion_email:f.z.union([f.z.string(),f.z.boolean()]).optional()})}}}},security:[{Bearer:[`create:users`]}],responses:{202:{content:{"application/json":{schema:d$}},description:`The import job was accepted and is now running.`}}}),handler:async e=>{let t=e.var.tenant_id;if(!t)throw new m(400,{message:`A tenant is required`});let{tenantOperations:n,tenantOperationRows:r}=A$(e),i=await e.req.parseBody(),a=i.users,o=i.connection_id;if(typeof o!=`string`||o.length===0)throw new m(400,{message:`connection_id is required`});if(!(a instanceof File))throw new m(400,{message:`A users file is required`});let s=e.env.usersImportMaxBytes??512e3;if(a.size>s)throw new m(400,{message:`The users file exceeds the ${s}-byte limit`});let c=await e.env.data.connections.get(t,o);if(!c)throw new m(400,{message:`Connection ${o} not found`});let l=e.env.usersImportMaxConcurrentJobs??2;if((await n.list({tenant_id:t,kind:`users_import`,status:[`pending`,`running`],page:0,per_page:l+1})).operations.length>=l)throw new m(429,{message:`This tenant already has ${l} import jobs in progress`});let u;try{u=JSON.parse(await a.text())}catch{throw new m(400,{message:`The users file is not valid JSON`})}if(!Array.isArray(u))throw new m(400,{message:`The users file must contain a JSON array of users`});if(u.length===0)throw new m(400,{message:`The users file contains no users`});let d=await lg(e.env,t),f=await n.create({tenant_id:t,kind:`users_import`,engine:`inline`,initiated_by:e.var.user?.sub??`system`,input:{connection_id:o,connection:c.name,provider:d,upsert:i.upsert===`true`,...typeof i.external_id==`string`?{external_id:i.external_id}:{},send_completion_email:i.send_completion_email===`true`}}),p=new Set,h=u.map((e,t)=>{let n={operation_id:f.id,seq:t,payload:pve(e),status:`pending`},r=u$.safeParse(e);if(!r.success)return n;let i=mve(r.data),a=i.find(e=>p.has(e));return a?{...n,status:`failed`,error_code:f$.DUPLICATE_ENTRY,error_message:`Duplicate entry: ${a.split(`:`)[0]} appears earlier in this file`,error_path:a.split(`:`)[0]}:(i.forEach(e=>p.add(e)),n)});await r.createMany(h),await n.update(f.id,{result:{total:h.length,inserted:0,updated:0,failed:h.filter(e=>e.status===`failed`).length}}),await P(e,t,{type:M.SUCCESSFULLY_IMPORTED_USERS,description:`Bulk user import ${E$(f.id)} accepted (${h.length} users) by ${e.var.user?.sub??`unknown`}`,targetType:`tenant`,targetId:t}),oo(e,w$(e.env.data,f.id,{maxRows:bve}).catch(e=>{console.warn(`Initial pass for users_import ${f.id} failed:`,e instanceof Error?e.message:e)}));let g=await n.get(f.id)??f;return e.json(k$(g),202)}}),Tve=F({route:(0,f.createRoute)({tags:[`jobs`],method:`get`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`create:users`,`read:users`]}],responses:{200:{content:{"application/json":{schema:d$}},description:`The job.`}}}),handler:async e=>{let t=await j$(e,e.req.valid(`param`).id);return e.json(k$(t))}}),Eve=F({route:(0,f.createRoute)({tags:[`jobs`],method:`get`,path:`/{id}/errors`,request:{params:f.z.object({id:f.z.string()}),query:f.z.object({page:f.z.coerce.number().int().min(0).optional(),per_page:f.z.coerce.number().int().min(1).max(100).optional()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`create:users`,`read:users`]}],responses:{200:{content:{"application/json":{schema:ove}},description:`Per-user errors from the import.`},204:{description:`The job was retrieved, but no errors were found.`}}}),handler:async e=>{let t=await j$(e,e.req.valid(`param`).id),{tenantOperationRows:n}=A$(e),{page:r,per_page:i}=e.req.valid(`query`),a=await n.list(t.id,{status:`failed`,page:r??0,per_page:i??50});return a.rows.length===0?e.body(null,204):e.json(a.rows.map(e=>({user:fve(e.payload),errors:[{code:e.error_code??f$.INTERNAL_ERROR,message:e.error_message??`Import failed`,...e.error_path?{path:e.error_path}:{}}]})))}}),Dve=new f.OpenAPIHono().openapiRoutes([wve,Tve,Eve]),Ove=f.z.object({user_id:f.z.string(),email:f.z.string().optional(),name:f.z.string().optional(),picture:f.z.string().optional(),roles:f.z.array(Xi).default([])}),M$=f.z.object({members:f.z.array(Ove),start:f.z.number(),limit:f.z.number(),total:f.z.number()}),N$=f.z.object({invitee:f.z.object({email:f.z.string().email()}),inviter:f.z.object({name:f.z.string().optional()}).default({}),roles:f.z.array(f.z.string()).default([]).optional(),send_invitation_email:f.z.boolean().default(!0).optional(),ttl_sec:f.z.number().int().max(2592e3).optional()}),P$=class extends Error{},F$=class extends P${constructor(e){super(`No organization found for tenant "${e}"`),this.name=`TenantOrganizationNotFoundError`}},I$=class extends P${constructor(e){super(`Invitation "${e}" not found`),this.name=`TenantInvitationNotFoundError`}};function L$(e){let t=I(e),n=e.var.org_name;if(!n||n.toLowerCase()!==t.toLowerCase())throw new m(403,{message:`Managing this tenant's team requires an organization token whose org_name matches the tenant.`});return t}async function R$(e){try{return await e()}catch(e){throw e instanceof P$?new m(404,{message:`Not found`}):e}}var z$=f.z.object({page:f.z.coerce.number().int().min(0).optional(),per_page:f.z.coerce.number().int().min(1).max(100).optional(),q:f.z.string().optional()}),B$=f.z.object({user_ids:f.z.array(f.z.string()).min(1)}),V$=f.z.object({roles:f.z.array(f.z.string()).min(1)});function H$(e){let t=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`get`,path:`/`,request:{query:z$,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:organizations`]}],responses:{200:{content:{"application/json":{schema:M$}},description:`The tenant's team members`}}}),handler:async t=>{let n=L$(t),{page:r,per_page:i,q:a}=t.req.valid(`query`),o=await e(t),s=await R$(()=>o.listMembers(n,{page:r,per_page:i,q:a}));return t.json(s)}}),n=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`post`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:B$}}}},security:[{Bearer:[`update:organizations`]}],responses:{204:{description:`Members added`}}}),handler:async t=>{let n=L$(t),{user_ids:r}=t.req.valid(`json`),i=await e(t);return await R$(()=>i.addMembers(n,r)),t.body(null,204)}}),r=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`delete`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:B$}}}},security:[{Bearer:[`update:organizations`]}],responses:{204:{description:`Members removed`}}}),handler:async t=>{let n=L$(t),{user_ids:r}=t.req.valid(`json`),i=await e(t);return await R$(()=>i.removeMembers(n,r)),t.body(null,204)}}),i=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`get`,path:`/{user_id}/roles`,request:{params:f.z.object({user_id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:organization_member_roles`]}],responses:{200:{content:{"application/json":{schema:f.z.array(Xi)}},description:`The member's roles in the tenant`}}}),handler:async t=>{let n=L$(t),{user_id:r}=t.req.valid(`param`),i=await e(t),a=await R$(()=>i.listMemberRoles(n,r));return t.json(a)}}),a=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`post`,path:`/{user_id}/roles`,request:{params:f.z.object({user_id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:V$}}}},security:[{Bearer:[`create:organization_member_roles`]}],responses:{204:{description:`Roles assigned`}}}),handler:async t=>{let n=L$(t),{user_id:r}=t.req.valid(`param`),{roles:i}=t.req.valid(`json`),a=await e(t);return await R$(()=>a.assignMemberRoles(n,r,i)),t.body(null,204)}}),o=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`delete`,path:`/{user_id}/roles`,request:{params:f.z.object({user_id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:V$}}}},security:[{Bearer:[`delete:organization_member_roles`]}],responses:{204:{description:`Roles removed`}}}),handler:async t=>{let n=L$(t),{user_id:r}=t.req.valid(`param`),{roles:i}=t.req.valid(`json`),a=await e(t);return await R$(()=>a.removeMemberRoles(n,r,i)),t.body(null,204)}}),s=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`get`,path:`/roles`,request:{query:z$,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:roles`]}],responses:{200:{content:{"application/json":{schema:f.z.array(Xi)}},description:`Roles that can be granted to a team member`}}}),handler:async t=>{let n=L$(t),{page:r,per_page:i,q:a}=t.req.valid(`query`),o=await e(t),s=await R$(()=>o.listRoles(n,{page:r,per_page:i,q:a}));return t.json(s)}}),c=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`get`,path:`/invitations`,request:{query:z$,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:organizations`]}],responses:{200:{content:{"application/json":{schema:f.z.array(nr)}},description:`Pending team invitations`}}}),handler:async t=>{let n=L$(t),{page:r,per_page:i}=t.req.valid(`query`),a=await e(t),o=await R$(()=>a.listInvitations(n,{page:r,per_page:i}));return t.json(o)}}),l=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`post`,path:`/invitations`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:N$}}}},security:[{Bearer:[`update:organizations`]}],responses:{201:{content:{"application/json":{schema:nr}},description:`The created invitation`}}}),handler:async t=>{let n=L$(t),r=t.req.valid(`json`),i=await e(t),a=await R$(()=>i.createInvitation(n,r));return t.json(a,201)}}),u=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`delete`,path:`/invitations/{invitation_id}`,request:{params:f.z.object({invitation_id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:organizations`]}],responses:{204:{description:`Invitation revoked`}}}),handler:async t=>{let n=L$(t),{invitation_id:r}=t.req.valid(`param`),i=await e(t);return await R$(()=>i.revokeInvitation(n,r)),t.body(null,204)}});return new f.OpenAPIHono().openapiRoutes([s,c,l,u,t,n,r,i,a,o])}var kve=50,Ave=1e3,jve=3e5,U$=5,Mve=7,W$=3e4;function Nve(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}function G$(e,t){if(e)try{let n=e(t);Nve(n)&&n.then(void 0,e=>console.error(`Outbox metrics sink rejected`,e))}catch(e){console.error(`Outbox metrics sink threw`,e)}}async function K$(e,t,n,r,i){console.warn(`Outbox event ${t.id} dead-lettering: ${n}`);try{await e.deadLetter(t.id,n)}catch{return}G$(r,{name:`outbox_events_dead_lettered_total`,value:1,tenantId:t.tenant_id,eventType:t.event_type,source:i,error:n,...t.retry_count!==void 0&&{retryCount:t.retry_count}})}function q$(e){return Math.min(Ave*2**e,jve)}function J$(e){return new Date(Date.now()+q$(e)).toISOString()}async function Pve(e,t,n,r){if(t.length===0)return;let i=r?.maxRetries??U$,a=r?.metrics,o=crypto.randomUUID(),s=await e.claimEvents(t,o,W$);if(s.length===0)return;let c=await e.getByIds(s);if(c.length===0)return;let l=[];for(let t of c){if(t.retry_count>=i){await K$(e,t,t.error||`Exceeded max retries (${i})`,a,`request`);continue}let r=!0,o=!1;for(let i of n)if(!(i.accepts&&!i.accepts(t))){o=!0;try{let e=i.transform(t);await i.deliver([e])}catch(n){r=!1;let o=n instanceof Error?n.message:String(n);G$(a,{name:`outbox_retry_delay_seconds`,value:q$(t.retry_count)/1e3,tenantId:t.tenant_id,eventType:t.event_type,source:`request`,destination:i.name,error:o,retryCount:t.retry_count});try{await e.markRetry(t.id,`${i.name}: ${o}`,J$(t.retry_count))}catch{}break}}if(!o){await K$(e,t,`No destination accepts event_type=${t.event_type}`,a,`request`);continue}r&&(l.push(t.id),G$(a,{name:`outbox_events_processed_total`,value:1,tenantId:t.tenant_id,eventType:t.event_type,source:`request`,retryCount:t.retry_count}))}if(l.length>0)try{await e.markProcessed(l)}catch{}}async function Y$(e,t,n){let r=n?.batchSize??kve,i=n?.maxRetries??U$,a=n?.retentionDays??Mve,o=n?.metrics,s=await e.getUnprocessed(r);if(s.length===0)return;let c=crypto.randomUUID(),l=s.map(e=>e.id),u=new Set(await e.claimEvents(l,c,W$)),d=s.filter(e=>u.has(e.id));if(d.length===0)return;let f=[],p=[];for(let n of d){if(n.retry_count>=i){await K$(e,n,n.error||`Exceeded max retries (${i})`,o,`cron`);continue}let r=!0,a=!1;for(let i of t)if(!(i.accepts&&!i.accepts(n))){a=!0;try{let e=i.transform(n);await i.deliver([e])}catch(t){r=!1;let a=t instanceof Error?t.message:String(t);G$(o,{name:`outbox_retry_delay_seconds`,value:q$(n.retry_count)/1e3,tenantId:n.tenant_id,eventType:n.event_type,source:`cron`,destination:i.name,error:a,retryCount:n.retry_count});try{await e.markRetry(n.id,`${i.name}: ${a}`,J$(n.retry_count))}catch{}break}}if(!a){await K$(e,n,`No destination accepts event_type=${n.event_type}`,o,`cron`);continue}r?(f.push(n.id),G$(o,{name:`outbox_events_processed_total`,value:1,tenantId:n.tenant_id,eventType:n.event_type,source:`cron`,retryCount:n.retry_count})):p.push(n.id)}if(f.length>0)try{await e.markProcessed(f)}catch{}try{let t=new Date(Date.now()-a*24*60*60*1e3).toISOString();await e.cleanup(t)}catch{}}function X$(e){return async(t,n)=>{t.set(`outboxEventPromises`,[]),t.set(`backgroundPromises`,[]);let r;try{await n()}catch(e){r=e}finally{let n=t.var.outboxEventPromises??[],r=[];if(n.length>0){let e=await Promise.allSettled(n);for(let t of e)t.status===`fulfilled`?r.push(t.value):console.error(`Outbox event creation failed`,t.reason)}if(r.length>0){let n=e.getOutbox(t);n&&oo(t,Pve(n,r,e.getDestinations(t),{maxRetries:t.env.outbox?.maxRetries,metrics:t.env.outbox?.metrics}))}typeof process<`u`&&process.env.NODE_ENV===`test`&&await Lte(t)}if(r)throw r}}function Fve(e){let t=lo.has(e.target?.type)&&e.target?.id||e.actor.id||``;return{log_id:e.id,type:e.log_type,date:e.timestamp,description:e.description||``,ip:e.request.ip,user_agent:e.request.user_agent||``,user_id:t,user_name:e.actor.email||``,client_id:e.actor.client_id,client_name:e.client_name||``,connection:e.connection,connection_id:e.connection_id||``,strategy:e.strategy,strategy_type:e.strategy_type,audience:e.audience||``,scope:e.scope||e.actor.scopes?.join(` `),hostname:e.hostname,auth0_client:e.auth0_client,isMobile:e.is_mobile||!1,location_info:e.location,details:{request:{method:e.request.method,path:e.request.path,qs:e.request.query,body:e.request.body,...e.request.redirect_uri?{redirect_uri:e.request.redirect_uri}:{}},...e.response&&{response:{statusCode:e.response.status_code,body:e.response.body}},...e.execution_id?{execution_id:e.execution_id}:{}}}}var Z$=class{name=`logs`;logs;constructor(e){this.logs=e}accepts(e){return!e.event_type.startsWith(`hook.`)&&!e.event_type.startsWith(`controlplane.sync.`)}transform(e){return{tenantId:e.tenant_id,log:Fve(e)}}async deliver(e){for(let{tenantId:t,log:n}of e)try{await this.logs.create(t,n)}catch(e){let t=e instanceof Error?e.message:String(e);if(t.includes(`UNIQUE constraint failed`)||t.includes(`Duplicate entry`))continue;throw e}}},Ive=1e4;function Lve(e){return{log_id:e.id,description:e.description,data:{date:e.timestamp,type:e.log_type,description:e.description,tenant_name:e.tenant_id,ip:e.request.ip,user_agent:e.request.user_agent,user_id:e.actor.id,user_name:e.actor.email,client_id:e.actor.client_id,connection:e.connection,strategy:e.strategy,strategy_type:e.strategy_type,audience:e.audience,scope:e.scope||e.actor.scopes?.join(` `),hostname:e.hostname,auth0_client:e.auth0_client,location_info:e.location,details:{request:{method:e.request.method,path:e.request.path,qs:e.request.query,body:e.request.body,...e.request.redirect_uri?{redirect_uri:e.request.redirect_uri}:{},...e.request.authorization_url?{authorization_url:e.request.authorization_url}:{}},...e.response&&{response:{statusCode:e.response.status_code,body:e.response.body}},...e.execution_id?{execution_id:e.execution_id}:{}}}}}function Rve(e,t){return!e.filters||e.filters.length===0?!0:e.filters.some(e=>e.name===t)}function zve(e,t){switch(e){case`JSONOBJECT`:return JSON.stringify(t);case`JSONLINES`:return JSON.stringify(t)+`
|
|
3348
|
+
`))}catch(i){s||(s=!0,await P(e,t,{type:M.FAILED_API_OPERATION,description:`Tenant export failed after ${o} rows (password_hashes=${n}) by ${e.var.user?.sub??`unknown`}: ${i instanceof Error?i.message:String(i)}`,targetType:`tenant`,targetId:t,waitForCompletion:!0}).catch(()=>{})),r.error(i)}},async cancel(){await a.return?.(void 0)}});if(!r)return new Response(d,{status:200,headers:{"content-type":`application/x-ndjson`,"content-disposition":`attachment; filename="${t}-export.jsonl"`}});let f=d.pipeThrough(new CompressionStream(`gzip`));return new Response(f,{status:200,headers:{"content-type":`application/gzip`,"content-disposition":`attachment; filename="${t}-export.jsonl.gz"`}})}}),Z_e=F({route:(0,f.createRoute)({tags:[`tenant-export-import`],method:`post`,path:`/import`,request:{query:f.z.object({include_password_hashes:f.z.enum([`true`,`false`]).optional().openapi({description:`Import password-hash records from the stream. Requires the "${i$}" scope.`})}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`create:users`]}],responses:{200:{content:{"application/json":{schema:Y_e}},description:`Per-entity counts and any non-fatal per-row errors.`}}}),handler:async e=>{let t=I(e),n=e.req.query(`include_password_hashes`)===`true`;n&&a$(e,i$);let r;try{r=J_e(await q_e(e))}catch(e){throw e instanceof m?e:new m(400,{message:`Request body is not valid gzipped/plain JSON-lines`})}let i=await U_e(e.env.data,t,r,{includePasswordHashes:n}),a=Object.values(i.counts).reduce((e,t)=>e+t,0);return await P(e,t,{type:M.SUCCESSFULLY_IMPORTED_USERS,description:`Tenant import (${a} rows, ${i.errors.length} errors, password_hashes=${n}) by ${e.var.user?.sub??`unknown`}`,targetType:`tenant`,targetId:t}),e.json(i)}}),Q_e=new f.OpenAPIHono().openapiRoutes([X_e,Z_e]),$_e=[`$2a$`,`$2b$`,`$2y$`];function c$(e){return $_e.some(t=>e.startsWith(t))}var eve=f.z.enum([`argon2`,`bcrypt`,`hmac`,`ldap`,`md4`,`md5`,`pbkdf2`,`scrypt`,`sha1`,`sha256`,`sha512`]),l$=f.z.enum([`base64`,`hex`,`utf8`]),tve=f.z.object({algorithm:eve,hash:f.z.object({value:f.z.string(),encoding:l$.optional(),digest:f.z.string().optional(),key:f.z.object({value:f.z.string(),encoding:l$.optional()}).optional()}),salt:f.z.object({value:f.z.string(),encoding:l$.optional(),position:f.z.enum([`prefix`,`suffix`]).optional()}).optional(),password:f.z.object({encoding:f.z.enum([`ascii`,`utf8`,`utf16le`,`ucs2`,`latin1`,`binary`]).optional()}).optional(),keylen:f.z.number().int().positive().optional(),cost:f.z.number().int().positive().optional(),blockSize:f.z.number().int().positive().optional(),parallelization:f.z.number().int().positive().optional()}),nve=f.z.union([f.z.object({totp:f.z.object({secret:f.z.string()})}),f.z.object({phone:f.z.object({value:f.z.string()})}),f.z.object({email:f.z.object({value:f.z.string()})})]),u$=f.z.object({user_id:f.z.string().optional(),email:f.z.string().email(),email_verified:f.z.boolean().optional(),username:f.z.string().optional(),blocked:f.z.boolean().optional(),phone_number:f.z.string().optional(),phone_verified:f.z.boolean().optional(),name:f.z.string().optional(),given_name:f.z.string().optional(),family_name:f.z.string().optional(),nickname:f.z.string().optional(),picture:f.z.string().optional(),app_metadata:f.z.record(f.z.string(),f.z.unknown()).optional(),user_metadata:f.z.record(f.z.string(),f.z.unknown()).optional(),mfa_factors:f.z.array(nve).min(1).max(10).optional(),password_hash:f.z.string().optional(),custom_password_hash:tve.optional()}).passthrough().refine(e=>!(e.password_hash&&e.custom_password_hash),{message:`password_hash and custom_password_hash are mutually exclusive`,path:[`custom_password_hash`]});f.z.array(u$);var rve=f.z.enum([`pending`,`completed`,`failed`]),ive=f.z.object({failed:f.z.number().int().default(0),updated:f.z.number().int().default(0),inserted:f.z.number().int().default(0),total:f.z.number().int().default(0)}),d$=f.z.object({id:f.z.string(),type:f.z.string(),status:rve,created_at:f.z.string().optional(),connection_id:f.z.string().optional(),external_id:f.z.string().optional(),percentage_done:f.z.number().int().optional(),time_left_seconds:f.z.number().int().optional(),status_details:f.z.string().optional(),summary:ive.optional()}),ave=f.z.object({user:f.z.record(f.z.string(),f.z.unknown()),errors:f.z.array(f.z.object({code:f.z.string(),message:f.z.string(),path:f.z.string().optional()}))}),ove=f.z.array(ave),f$={VALIDATION_ERROR:`VALIDATION_ERROR`,UNSUPPORTED_HASH_ALGORITHM:`UNSUPPORTED_HASH_ALGORITHM`,UNSUPPORTED_HASH_FORMAT:`UNSUPPORTED_HASH_FORMAT`,DUPLICATE_ENTRY:`DUPLICATE_ENTRY`,USER_ALREADY_EXISTS:`USER_ALREADY_EXISTS`,INTERNAL_ERROR:`INTERNAL_ERROR`},sve=new Set([`blocked`,`email`,`email_verified`,`identities`,`user_id`,`created_at`,`updated_at`,`multifactor`,`multifactor_last_modified`,`last_ip`,`last_login`,`last_password_reset`,`phone_number`,`phone_verified`,`username`,`clientID`,`globalClientID`,`global_client_id`]);function cve(e){if(!e)return;let t=Object.entries(e).filter(([e])=>!sve.has(e));return Object.fromEntries(t)}function lve(e){if(e.password_hash!==void 0)return c$(e.password_hash)?{ok:!0,value:{password:e.password_hash,algorithm:`bcrypt`}}:{ok:!1,error:{code:f$.UNSUPPORTED_HASH_FORMAT,message:`password_hash must be a bcrypt hash beginning with $2a$, $2b$ or $2y$`,path:`password_hash`}};let t=e.custom_password_hash;return t===void 0?{ok:!0,value:void 0}:t.algorithm===`bcrypt`?t.hash.encoding!==void 0&&t.hash.encoding!==`utf8`?{ok:!1,error:{code:f$.UNSUPPORTED_HASH_FORMAT,message:`bcrypt hashes must use utf8 encoding`,path:`custom_password_hash.hash.encoding`}}:c$(t.hash.value)?{ok:!0,value:{password:t.hash.value,algorithm:`bcrypt`}}:{ok:!1,error:{code:f$.UNSUPPORTED_HASH_FORMAT,message:`bcrypt hash must begin with $2a$, $2b$ or $2y$ ($2$ and $2x$ are not supported)`,path:`custom_password_hash.hash.value`}}:{ok:!1,error:{code:f$.UNSUPPORTED_HASH_ALGORITHM,message:`AuthHero can only import bcrypt password hashes; received "${t.algorithm}". Users with other algorithms must reset their password on first login.`,path:`custom_password_hash.algorithm`}}}function p$(e,t,n){return`${t}|${e?ag(e,t):n??rg()}`}async function uve(e,t){let n=new TextEncoder().encode(`${e}:${t}`),r=await crypto.subtle.digest(`SHA-256`,n);return Array.from(new Uint8Array(r)).slice(0,12).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function dve({entry:e,connection:t,provider:n,fallbackUserId:r}){let i=lve(e);if(!i.ok)return{ok:!1,error:i.error};let a={email:e.email,email_verified:e.email_verified??!1,connection:t,provider:n,is_social:!1};a.user_id=p$(e.user_id,n,r),e.username!==void 0&&(a.username=e.username),e.phone_number!==void 0&&(a.phone_number=e.phone_number),e.phone_verified!==void 0&&(a.phone_verified=e.phone_verified),a.name=e.name??e.email,e.given_name!==void 0&&(a.given_name=e.given_name),e.family_name!==void 0&&(a.family_name=e.family_name),e.nickname!==void 0&&(a.nickname=e.nickname),e.picture!==void 0&&(a.picture=e.picture);let o=cve(e.app_metadata);return o!==void 0&&(a.app_metadata=o),e.user_metadata!==void 0&&(a.user_metadata=e.user_metadata),{ok:!0,value:{user:a,password:i.value}}}function fve(e){if(typeof e!=`object`||!e||Array.isArray(e))return{value:e};let t={...e};if(`password_hash`in t&&(t.password_hash=`[redacted]`),`custom_password_hash`in t&&typeof t.custom_password_hash==`object`&&t.custom_password_hash!==null){let e={...t.custom_password_hash};`hash`in e&&(e.hash=`[redacted]`),`salt`in e&&(e.salt=`[redacted]`),t.custom_password_hash=e}return t}function pve(e){return typeof e!=`object`||!e||Array.isArray(e)?{value:e}:{...e}}function m$(e,t){return e===`email`||e===`username`?t.toLowerCase():t}function mve(e){let t=[`email:${m$(`email`,e.email)}`];return e.user_id!==void 0&&t.push(`user_id:${e.user_id}`),e.username!==void 0&&t.push(`username:${m$(`username`,e.username)}`),e.phone_number!==void 0&&t.push(`phone:${e.phone_number}`),t}function hve(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function h$(e){return typeof e==`string`?e:void 0}function gve(e){let t=e.input;if(!hve(t))return null;let n=h$(t.connection_id),r=h$(t.connection),i=h$(t.provider);return!n||!r||!i?null:{connection_id:n,connection:r,provider:i,upsert:t.upsert===!0,external_id:h$(t.external_id),send_completion_email:t.send_completion_email===!0}}function g$(e,t){return{seq:e,status:`failed`,error_code:t.code,error_message:t.message,error_path:t.path??null}}async function _$(e,t,n,r){return(await e.users.list(t,{q:`${n}:${Ha(r)}`,page:0,per_page:1,include_totals:!1})).users[0]?.user_id??null}async function v$(e,t,n,r){if(n.user_id!==void 0){let i=await e.users.get(t,p$(n.user_id,r));if(i)return i.user_id}let i=await _$(e,t,`email`,n.email);if(i)return i;if(n.username!==void 0){let r=await _$(e,t,`username`,n.username);if(r)return r}if(n.phone_number!==void 0){let r=await _$(e,t,`phone_number`,n.phone_number);if(r)return r}return null}var y$=100,b$=200,_ve=10;async function x$(e,t,n,r){let i=new Map,a=[...new Set(r)];for(let r=0;r<a.length;r+=y$){let o=a.slice(r,r+y$),s=new Set(o.map(e=>m$(n,e))),c=o.map(e=>`${n}:${Ha(e)}`).join(` OR `);for(let r=0;r<_ve;r+=1){let a=await e.users.list(t,{q:c,page:r,per_page:b$,include_totals:!1});for(let e of a.users){let t=e[n];if(typeof t==`string`){let r=m$(n,t);i.has(r)||i.set(r,e.user_id),s.delete(r)}}if(s.size===0||a.users.length<b$)break}}return i}function S$(e){return _g({...e.user,...e.password?{password:{hash:e.password.password,algorithm:e.password.algorithm}}:{}})}async function vve(e,t,n,r){let i=await Promise.all(n.map(async e=>{let t=u$.safeParse(e.payload);if(!t.success){let n=t.error.issues[0];return{row:e,outcome:g$(e.seq,{code:f$.VALIDATION_ERROR,message:n?.message??`Invalid user entry`,path:n?.path.join(`.`)})}}let n=t.data,i=dve({entry:n,connection:r.connection,provider:r.provider,fallbackUserId:await uve(e.operation_id,e.seq)});return i.ok?{row:e,entry:n,mapped:i.value,probeId:n.user_id===void 0?void 0:p$(n.user_id,r.provider)}:{row:e,outcome:g$(e.seq,i.error)}})),a=i.filter(e=>!e.outcome&&e.entry&&e.mapped),o=new Map;for(let e of i)e.outcome&&o.set(e.row.seq,e.outcome);let s=()=>n.map(e=>o.get(e.seq)??{seq:e.seq,status:`failed`,error_code:f$.INTERNAL_ERROR,error_message:`Row produced no outcome`});if(r.upsert){for(let n of a)o.set(n.row.seq,await C$(e,t,n.row,r,n.entry,n.mapped,await v$(e,t,n.entry,r.provider)));return s()}let c=a.flatMap(e=>[e.probeId,e.mapped.user.user_id].filter(e=>!!e)),l=a.map(e=>e.entry.email).filter(Boolean),u=a.map(e=>e.entry.username).filter(e=>e!==void 0),d=a.map(e=>e.entry.phone_number).filter(e=>e!==void 0),[f,p,m,h]=await Promise.all([c.length?x$(e,t,`user_id`,c):new Map,l.length?x$(e,t,`email`,l):new Map,u.length?x$(e,t,`username`,u):new Map,d.length?x$(e,t,`phone_number`,d):new Map]),g=new Map;for(let e of a){let t=e.entry,n=[`email:${m$(`email`,t.email)}`,...t.username===void 0?[]:[`username:${m$(`username`,t.username)}`],...t.phone_number===void 0?[]:[`phone_number:${m$(`phone_number`,t.phone_number)}`]];if(e.existingId=(e.probeId?f.get(m$(`user_id`,e.probeId)):void 0)??f.get(m$(`user_id`,e.mapped.user.user_id))??p.get(m$(`email`,t.email))??(t.username===void 0?void 0:m.get(m$(`username`,t.username)))??(t.phone_number===void 0?void 0:h.get(m$(`phone_number`,t.phone_number)))??n.map(e=>g.get(e)).find(e=>e!==void 0)??null,e.existingId===null)for(let t of n)g.set(t,e.mapped.user.user_id)}let _=a.filter(e=>e.existingId===null),v=a.filter(e=>e.existingId!==null);if(_.length){let n=_.map(e=>S$(e.mapped)),i=!1;if(e.users.createMany)try{await e.users.createMany(t,n),i=!0}catch{i=!1}if(i)for(let e of _)o.set(e.row.seq,{seq:e.row.seq,status:`inserted`,entity_id:e.mapped.user.user_id});else for(let n of _)o.set(n.row.seq,await C$(e,t,n.row,r,n.entry,n.mapped,await v$(e,t,n.entry,r.provider)))}for(let n of v)o.set(n.row.seq,await C$(e,t,n.row,r,n.entry,n.mapped,n.existingId));return s()}async function C$(e,t,n,r,i,a,o){let s={value:a};try{let a=o===s.value.user.user_id&&i.user_id===void 0;if(o&&!r.upsert&&!a)return g$(n.seq,{code:f$.USER_ALREADY_EXISTS,message:`A user matching ${i.email} already exists; enable upsert to update it`,path:`email`});if(o&&a)return s.value.password&&(await e.passwords.get(t,o)||await e.passwords.create(t,{user_id:o,is_current:!0,...s.value.password})),{seq:n.seq,status:`inserted`,entity_id:o};if(o){let{connection:r,...i}=s.value.user;return await e.users.update(t,o,i),s.value.password&&(await e.passwords.get(t,o)||await e.passwords.create(t,{user_id:o,is_current:!0,...s.value.password})),{seq:n.seq,status:`updated`,entity_id:o}}let c=await e.users.rawCreate(t,S$(s.value));return{seq:n.seq,status:`inserted`,entity_id:c.user_id}}catch(e){return g$(n.seq,{code:f$.INTERNAL_ERROR,message:e instanceof Error?e.message:String(e)})}}async function w$(e,t,n={}){let r=e.tenantOperationRows,i=e.tenantOperations;if(!r||!i)throw Error(`Bulk user import requires the tenantOperations and tenantOperationRows adapters`);let a=n.chunkSize??50,o=n.leaseMs??6e4,s=n.workerId??`import-${Math.random().toString(36).slice(2,10)}-${Date.now()}`,c=await i.get(t);if(!c)throw Error(`Tenant operation ${t} not found`);if(c.status===`succeeded`||c.status===`failed`)return{done:!0,processed:0,remaining:(await r.countByStatus(t)).pending,claimed:!1};if(!await i.claim(t,s,o))return{done:!1,processed:0,remaining:(await r.countByStatus(t)).pending,claimed:!1};let l=gve(c);if(!l)return await i.update(t,{status:`failed`,error:`Operation input is missing or malformed`,finished_at:new Date().toISOString()}),await i.release(t,s),{done:!0,processed:0,remaining:0,claimed:!0};let u=c.tenant_id;if(!u)return await i.update(t,{status:`failed`,error:`users_import operations require a tenant_id`,finished_at:new Date().toISOString()}),await i.release(t,s),{done:!0,processed:0,remaining:0,claimed:!0};c.status===`pending`&&await i.update(t,{status:`running`});let d=0,f=n.maxRows??1/0,p=(await r.countByStatus(t)).pending;try{for(;!(d>=f||n.deadline!==void 0&&Date.now()>=n.deadline);){let n=Math.min(a,f-d),o=await r.claimPending(t,n);if(o.length===0)break;let s=await vve(e,u,o,l);d+=await r.recordOutcomes(t,s);let c=await r.countByStatus(t);if(await i.update(t,{current_step:`${c.total-c.pending}/${c.total} rows`,result:T$(c)}),c.pending>=p){console.warn(`users_import ${t} made no progress on a chunk of ${s.length} rows (${c.pending} still pending); stopping this pass`);break}p=c.pending}let o=await r.countByStatus(t),s=o.pending===0;return s&&await i.update(t,{status:`succeeded`,current_step:`${o.total}/${o.total} rows`,result:T$(o),finished_at:new Date().toISOString()}),{done:s,processed:d,remaining:o.pending,claimed:!0}}finally{await i.release(t,s)}}function T$(e){return{total:e.total,inserted:e.inserted,updated:e.updated,failed:e.failed}}async function yve(e,t={}){let n=e.tenantOperations;if(!n||!e.tenantOperationRows)return{scanned:0,advanced:0,completed:0,errors:0};let r=await n.listResumable({kind:`users_import`,limit:t.maxOperations??10}),i={scanned:r.length,advanced:0,completed:0,errors:0};for(let n of r)try{let r=await w$(e,n.id,t);r.processed>0&&(i.advanced+=1),r.done&&(i.completed+=1)}catch(e){i.errors+=1,console.warn(`Failed to resume users_import ${n.id}:`,e instanceof Error?e.message:e)}return i}var bve=50,xve=`users_import`;function E$(e){return`job_${e}`}function Sve(e){return e.startsWith(`job_`)?e.slice(4):e}function Cve(e){switch(e.status){case`succeeded`:return`completed`;case`failed`:case`cancelled`:return`failed`;default:return`pending`}}function D$(e,t){return typeof e==`number`&&Number.isFinite(e)?e:t}function O$(e,t){return typeof e==`string`?e:t}function k$(e){let t=typeof e.input==`object`&&e.input!==null?e.input:{},n=typeof e.result==`object`&&e.result!==null?e.result:{},r=D$(n.total,0),i=D$(n.inserted,0),a=D$(n.updated,0),o=D$(n.failed,0),s=i+a+o,c=r>0?Math.floor(s/r*100):r===0?100:0,l=0;if(s>0&&s<r){let t=(Date.now()-new Date(e.created_at).getTime())/s;l=Math.max(0,Math.round(t*(r-s)/1e3))}let u=Cve(e);return{id:E$(e.id),type:xve,status:u,created_at:e.created_at,connection_id:O$(t.connection_id),external_id:O$(t.external_id),percentage_done:c,time_left_seconds:l,...e.error?{status_details:e.error}:{},summary:{total:r,inserted:i,updated:a,failed:o}}}function A$(e){let{tenantOperations:t,tenantOperationRows:n}=e.env.data;if(!t||!n)throw new m(501,{message:`Bulk user import is not available: this deployment has no tenantOperations/tenantOperationRows adapters`});return{tenantOperations:t,tenantOperationRows:n}}async function j$(e,t){let{tenantOperations:n}=A$(e),r=await n.get(Sve(t));if(!r||r.kind!==`users_import`||r.tenant_id!==e.var.tenant_id)throw new m(404,{message:`Job not found`});return r}var wve=F({route:(0,f.createRoute)({tags:[`jobs`],method:`post`,path:`/users-imports`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"multipart/form-data":{schema:f.z.object({users:f.z.any().openapi({type:`string`,format:`binary`,description:`JSON file containing an array of users to import.`}),connection_id:f.z.string().openapi({description:`Id of the database connection to import into.`}),upsert:f.z.union([f.z.string(),f.z.boolean()]).optional().openapi({description:`When true, update users that already match on user_id, email, username or phone. Defaults to false.`}),external_id:f.z.string().optional().openapi({description:`Caller-supplied correlation id, echoed back.`}),send_completion_email:f.z.union([f.z.string(),f.z.boolean()]).optional()})}}}},security:[{Bearer:[`create:users`]}],responses:{202:{content:{"application/json":{schema:d$}},description:`The import job was accepted and is now running.`}}}),handler:async e=>{let t=e.var.tenant_id;if(!t)throw new m(400,{message:`A tenant is required`});let{tenantOperations:n,tenantOperationRows:r}=A$(e),i=await e.req.parseBody(),a=i.users,o=i.connection_id;if(typeof o!=`string`||o.length===0)throw new m(400,{message:`connection_id is required`});if(!(a instanceof File))throw new m(400,{message:`A users file is required`});let s=e.env.usersImportMaxBytes??512e3;if(a.size>s)throw new m(400,{message:`The users file exceeds the ${s}-byte limit`});let c=await e.env.data.connections.get(t,o);if(!c)throw new m(400,{message:`Connection ${o} not found`});let l=e.env.usersImportMaxConcurrentJobs??2;if((await n.list({tenant_id:t,kind:`users_import`,status:[`pending`,`running`],page:0,per_page:l+1})).operations.length>=l)throw new m(429,{message:`This tenant already has ${l} import jobs in progress`});let u;try{u=JSON.parse(await a.text())}catch{throw new m(400,{message:`The users file is not valid JSON`})}if(!Array.isArray(u))throw new m(400,{message:`The users file must contain a JSON array of users`});if(u.length===0)throw new m(400,{message:`The users file contains no users`});let d=await lg(e.env,t),f=await n.create({tenant_id:t,kind:`users_import`,engine:`inline`,initiated_by:e.var.user?.sub??`system`,input:{connection_id:o,connection:c.name,provider:d,upsert:i.upsert===`true`,...typeof i.external_id==`string`?{external_id:i.external_id}:{},send_completion_email:i.send_completion_email===`true`}}),p=new Set,h=u.map((e,t)=>{let n={operation_id:f.id,seq:t,payload:pve(e),status:`pending`},r=u$.safeParse(e);if(!r.success)return n;let i=mve(r.data),a=i.find(e=>p.has(e));return a?{...n,status:`failed`,error_code:f$.DUPLICATE_ENTRY,error_message:`Duplicate entry: ${a.split(`:`)[0]} appears earlier in this file`,error_path:a.split(`:`)[0]}:(i.forEach(e=>p.add(e)),n)});await r.createMany(h),await n.update(f.id,{result:{total:h.length,inserted:0,updated:0,failed:h.filter(e=>e.status===`failed`).length}}),await P(e,t,{type:M.SUCCESSFULLY_IMPORTED_USERS,description:`Bulk user import ${E$(f.id)} accepted (${h.length} users) by ${e.var.user?.sub??`unknown`}`,targetType:`tenant`,targetId:t}),oo(e,w$(e.env.data,f.id,{maxRows:bve}).catch(e=>{console.warn(`Initial pass for users_import ${f.id} failed:`,e instanceof Error?e.message:e)}));let g=await n.get(f.id)??f;return e.json(k$(g),202)}}),Tve=F({route:(0,f.createRoute)({tags:[`jobs`],method:`get`,path:`/{id}`,request:{params:f.z.object({id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`create:users`,`read:users`]}],responses:{200:{content:{"application/json":{schema:d$}},description:`The job.`}}}),handler:async e=>{let t=await j$(e,e.req.valid(`param`).id);return e.json(k$(t))}}),Eve=F({route:(0,f.createRoute)({tags:[`jobs`],method:`get`,path:`/{id}/errors`,request:{params:f.z.object({id:f.z.string()}),query:f.z.object({page:f.z.coerce.number().int().min(0).optional(),per_page:f.z.coerce.number().int().min(1).max(100).optional()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`create:users`,`read:users`]}],responses:{200:{content:{"application/json":{schema:ove}},description:`Per-user errors from the import.`},204:{description:`The job was retrieved, but no errors were found.`}}}),handler:async e=>{let t=await j$(e,e.req.valid(`param`).id),{tenantOperationRows:n}=A$(e),{page:r,per_page:i}=e.req.valid(`query`),a=await n.list(t.id,{status:`failed`,page:r??0,per_page:i??50});return a.rows.length===0?e.body(null,204):e.json(a.rows.map(e=>({user:fve(e.payload),errors:[{code:e.error_code??f$.INTERNAL_ERROR,message:e.error_message??`Import failed`,...e.error_path?{path:e.error_path}:{}}]})))}}),Dve=new f.OpenAPIHono().openapiRoutes([wve,Tve,Eve]),Ove=f.z.object({user_id:f.z.string(),email:f.z.string().optional(),name:f.z.string().optional(),picture:f.z.string().optional(),roles:f.z.array(Xi).default([])}),M$=f.z.object({members:f.z.array(Ove),start:f.z.number(),limit:f.z.number(),total:f.z.number()}),N$=f.z.object({invitee:f.z.object({email:f.z.string().email()}),inviter:f.z.object({name:f.z.string().optional()}).default({}),roles:f.z.array(f.z.string()).default([]).optional(),send_invitation_email:f.z.boolean().default(!0).optional(),ttl_sec:f.z.number().int().max(2592e3).optional()}),P$=class extends Error{},F$=class extends P${constructor(e){super(`No organization found for tenant "${e}"`),this.name=`TenantOrganizationNotFoundError`}},I$=class extends P${constructor(e){super(`Invitation "${e}" not found`),this.name=`TenantInvitationNotFoundError`}};function L$(e){let t=I(e),n=e.var.org_name;if(!n||n.toLowerCase()!==t.toLowerCase())throw new m(403,{message:`Managing this tenant's team requires an organization token whose org_name matches the tenant.`});return t}async function R$(e){try{return await e()}catch(e){throw e instanceof P$?new m(404,{message:`Not found`}):e}}var z$=f.z.object({page:f.z.coerce.number().int().min(0).optional(),per_page:f.z.coerce.number().int().min(1).max(100).optional(),q:f.z.string().optional()}),B$=f.z.object({user_ids:f.z.array(f.z.string()).min(1)}),V$=f.z.object({roles:f.z.array(f.z.string()).min(1)});function H$(e){let t=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`get`,path:`/`,request:{query:z$,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:organizations`]}],responses:{200:{content:{"application/json":{schema:M$}},description:`The tenant's team members`}}}),handler:async t=>{let n=L$(t),{page:r,per_page:i,q:a}=t.req.valid(`query`),o=await e(t),s=await R$(()=>o.listMembers(n,{page:r,per_page:i,q:a}));return t.json(s)}}),n=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`post`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:B$}}}},security:[{Bearer:[`update:organizations`]}],responses:{204:{description:`Members added`}}}),handler:async t=>{let n=L$(t),{user_ids:r}=t.req.valid(`json`),i=await e(t);return await R$(()=>i.addMembers(n,r)),t.body(null,204)}}),r=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`delete`,path:`/`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:B$}}}},security:[{Bearer:[`update:organizations`]}],responses:{204:{description:`Members removed`}}}),handler:async t=>{let n=L$(t),{user_ids:r}=t.req.valid(`json`),i=await e(t);return await R$(()=>i.removeMembers(n,r)),t.body(null,204)}}),i=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`get`,path:`/{user_id}/roles`,request:{params:f.z.object({user_id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:organization_member_roles`]}],responses:{200:{content:{"application/json":{schema:f.z.array(Xi)}},description:`The member's roles in the tenant`}}}),handler:async t=>{let n=L$(t),{user_id:r}=t.req.valid(`param`),i=await e(t),a=await R$(()=>i.listMemberRoles(n,r));return t.json(a)}}),a=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`post`,path:`/{user_id}/roles`,request:{params:f.z.object({user_id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:V$}}}},security:[{Bearer:[`create:organization_member_roles`]}],responses:{204:{description:`Roles assigned`}}}),handler:async t=>{let n=L$(t),{user_id:r}=t.req.valid(`param`),{roles:i}=t.req.valid(`json`),a=await e(t);return await R$(()=>a.assignMemberRoles(n,r,i)),t.body(null,204)}}),o=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`delete`,path:`/{user_id}/roles`,request:{params:f.z.object({user_id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:V$}}}},security:[{Bearer:[`delete:organization_member_roles`]}],responses:{204:{description:`Roles removed`}}}),handler:async t=>{let n=L$(t),{user_id:r}=t.req.valid(`param`),{roles:i}=t.req.valid(`json`),a=await e(t);return await R$(()=>a.removeMemberRoles(n,r,i)),t.body(null,204)}}),s=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`get`,path:`/roles`,request:{query:z$,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:roles`]}],responses:{200:{content:{"application/json":{schema:f.z.array(Xi)}},description:`Roles that can be granted to a team member`}}}),handler:async t=>{let n=L$(t),{page:r,per_page:i,q:a}=t.req.valid(`query`),o=await e(t),s=await R$(()=>o.listRoles(n,{page:r,per_page:i,q:a}));return t.json(s)}}),c=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`get`,path:`/invitations`,request:{query:z$,headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`read:organizations`]}],responses:{200:{content:{"application/json":{schema:f.z.array(nr)}},description:`Pending team invitations`}}}),handler:async t=>{let n=L$(t),{page:r,per_page:i}=t.req.valid(`query`),a=await e(t),o=await R$(()=>a.listInvitations(n,{page:r,per_page:i}));return t.json(o)}}),l=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`post`,path:`/invitations`,request:{headers:f.z.object({"tenant-id":f.z.string().optional()}),body:{content:{"application/json":{schema:N$}}}},security:[{Bearer:[`update:organizations`]}],responses:{201:{content:{"application/json":{schema:nr}},description:`The created invitation`}}}),handler:async t=>{let n=L$(t),r=t.req.valid(`json`),i=await e(t),a=await R$(()=>i.createInvitation(n,r));return t.json(a,201)}}),u=F({route:(0,f.createRoute)({tags:[`tenant-members`],method:`delete`,path:`/invitations/{invitation_id}`,request:{params:f.z.object({invitation_id:f.z.string()}),headers:f.z.object({"tenant-id":f.z.string().optional()})},security:[{Bearer:[`update:organizations`]}],responses:{204:{description:`Invitation revoked`}}}),handler:async t=>{let n=L$(t),{invitation_id:r}=t.req.valid(`param`),i=await e(t);return await R$(()=>i.revokeInvitation(n,r)),t.body(null,204)}});return new f.OpenAPIHono().openapiRoutes([s,c,l,u,t,n,r,i,a,o])}var kve=50,Ave=1e3,jve=3e5,U$=5,Mve=7,W$=3e4;function Nve(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}function G$(e,t){if(e)try{let n=e(t);Nve(n)&&n.then(void 0,e=>console.error(`Outbox metrics sink rejected`,e))}catch(e){console.error(`Outbox metrics sink threw`,e)}}async function K$(e,t,n,r,i){console.warn(`Outbox event ${t.id} dead-lettering: ${n}`);try{await e.deadLetter(t.id,n)}catch{return}G$(r,{name:`outbox_events_dead_lettered_total`,value:1,tenantId:t.tenant_id,eventType:t.event_type,source:i,error:n,...t.retry_count!==void 0&&{retryCount:t.retry_count}})}function q$(e){return Math.min(Ave*2**e,jve)}function J$(e){return new Date(Date.now()+q$(e)).toISOString()}async function Pve(e,t,n,r){if(t.length===0)return;let i=r?.maxRetries??U$,a=r?.metrics,o=crypto.randomUUID(),s=await e.claimEvents(t,o,W$);if(s.length===0)return;let c=await e.getByIds(s);if(c.length===0)return;let l=[];for(let t of c){if(t.retry_count>=i){await K$(e,t,t.error||`Exceeded max retries (${i})`,a,`request`);continue}let r=!0,o=!1;for(let i of n)if(!(i.accepts&&!i.accepts(t))){o=!0;try{let e=i.transform(t);await i.deliver([e])}catch(n){r=!1;let o=n instanceof Error?n.message:String(n);G$(a,{name:`outbox_retry_delay_seconds`,value:q$(t.retry_count)/1e3,tenantId:t.tenant_id,eventType:t.event_type,source:`request`,destination:i.name,error:o,retryCount:t.retry_count});try{await e.markRetry(t.id,`${i.name}: ${o}`,J$(t.retry_count))}catch{}break}}if(!o){await K$(e,t,`No destination accepts event_type=${t.event_type}`,a,`request`);continue}r&&(l.push(t.id),G$(a,{name:`outbox_events_processed_total`,value:1,tenantId:t.tenant_id,eventType:t.event_type,source:`request`,retryCount:t.retry_count}))}if(l.length>0)try{await e.markProcessed(l)}catch{}}async function Y$(e,t,n){let r=n?.batchSize??kve,i=n?.maxRetries??U$,a=n?.retentionDays??Mve,o=n?.metrics,s=await e.getUnprocessed(r);if(s.length===0)return;let c=crypto.randomUUID(),l=s.map(e=>e.id),u=new Set(await e.claimEvents(l,c,W$)),d=s.filter(e=>u.has(e.id));if(d.length===0)return;let f=[],p=[];for(let n of d){if(n.retry_count>=i){await K$(e,n,n.error||`Exceeded max retries (${i})`,o,`cron`);continue}let r=!0,a=!1;for(let i of t)if(!(i.accepts&&!i.accepts(n))){a=!0;try{let e=i.transform(n);await i.deliver([e])}catch(t){r=!1;let a=t instanceof Error?t.message:String(t);G$(o,{name:`outbox_retry_delay_seconds`,value:q$(n.retry_count)/1e3,tenantId:n.tenant_id,eventType:n.event_type,source:`cron`,destination:i.name,error:a,retryCount:n.retry_count});try{await e.markRetry(n.id,`${i.name}: ${a}`,J$(n.retry_count))}catch{}break}}if(!a){await K$(e,n,`No destination accepts event_type=${n.event_type}`,o,`cron`);continue}r?(f.push(n.id),G$(o,{name:`outbox_events_processed_total`,value:1,tenantId:n.tenant_id,eventType:n.event_type,source:`cron`,retryCount:n.retry_count})):p.push(n.id)}if(f.length>0)try{await e.markProcessed(f)}catch{}try{let t=new Date(Date.now()-a*24*60*60*1e3).toISOString();await e.cleanup(t)}catch{}}function X$(e){return async(t,n)=>{t.set(`outboxEventPromises`,[]),t.set(`backgroundPromises`,[]);let r;try{await n()}catch(e){r=e}finally{let n=t.var.outboxEventPromises??[],r=[];if(n.length>0){let e=await Promise.allSettled(n);for(let t of e)t.status===`fulfilled`?r.push(t.value):console.error(`Outbox event creation failed`,t.reason)}if(r.length>0){let n=e.getOutbox(t);n&&oo(t,Pve(n,r,e.getDestinations(t),{maxRetries:t.env.outbox?.maxRetries,metrics:t.env.outbox?.metrics}))}typeof process<`u`&&process.env.NODE_ENV===`test`&&await Lte(t)}if(r)throw r}}function Fve(e){let t=lo.has(e.target?.type)&&e.target?.id||e.actor.id||``;return{log_id:e.id,type:e.log_type,date:e.timestamp,description:e.description||``,ip:e.request.ip,user_agent:e.request.user_agent||``,user_id:t,user_name:e.actor.email||``,client_id:e.actor.client_id,client_name:e.client_name||``,connection:e.connection,connection_id:e.connection_id||``,strategy:e.strategy,strategy_type:e.strategy_type,audience:e.audience||``,scope:e.scope||e.actor.scopes?.join(` `),hostname:e.hostname,auth0_client:e.auth0_client,isMobile:e.is_mobile||!1,location_info:e.location,details:{request:{method:e.request.method,path:e.request.path,qs:e.request.query,body:e.request.body,...e.request.redirect_uri?{redirect_uri:e.request.redirect_uri}:{}},...e.response&&{response:{statusCode:e.response.status_code,body:e.response.body}},...e.execution_id?{execution_id:e.execution_id}:{}}}}var Z$=class{name=`logs`;logs;constructor(e){this.logs=e}accepts(e){return!e.event_type.startsWith(`hook.`)&&!e.event_type.startsWith(`controlplane.sync.`)}transform(e){return{tenantId:e.tenant_id,log:Fve(e)}}async deliver(e){for(let{tenantId:t,log:n}of e)try{await this.logs.create(t,n)}catch(e){let t=e instanceof Error?e.message:String(e);if(t.includes(`UNIQUE constraint failed`)||t.includes(`Duplicate entry`))continue;throw e}}},Ive=1e4;function Lve(e){return{log_id:e.id,description:e.description,data:{date:e.timestamp,type:e.log_type,description:e.description,tenant_name:e.tenant_id,ip:e.request.ip,user_agent:e.request.user_agent,user_id:e.actor.id,user_name:e.actor.email,client_id:e.actor.client_id,connection:e.connection,strategy:e.strategy,strategy_type:e.strategy_type,audience:e.audience,scope:e.scope||e.actor.scopes?.join(` `),hostname:e.hostname,auth0_client:e.auth0_client,location_info:e.location,details:{request:{method:e.request.method,path:e.request.path,qs:e.request.query,body:e.request.body,...e.request.redirect_uri?{redirect_uri:e.request.redirect_uri}:{},...e.request.authorization_url?{authorization_url:e.request.authorization_url}:{}},...e.response&&{response:{statusCode:e.response.status_code,body:e.response.body}},...e.execution_id?{execution_id:e.execution_id}:{}}}}}function Rve(e,t){return!e.filters||e.filters.length===0?!0:e.filters.some(e=>e.name===t)}function zve(e,t){switch(e){case`JSONOBJECT`:return JSON.stringify(t);case`JSONLINES`:return JSON.stringify(t)+`
|
|
3349
3349
|
`;default:return JSON.stringify([t])}}var Q$=class{name=`log-streams`;logStreams;timeoutMs;constructor(e,t){this.logStreams=e,this.timeoutMs=t?.timeoutMs??Ive}accepts(e){return!e.event_type.startsWith(`hook.`)&&!e.event_type.startsWith(`controlplane.sync.`)}transform(e){return{tenantId:e.tenant_id,logType:e.log_type,payload:Lve(e)}}async deliver(e){for(let{tenantId:t,logType:n,payload:r}of e){let e=(await this.logStreams.list(t)).filter(e=>e.type===`http`&&e.status===`active`);if(e.length!==0)for(let t of e)Rve(t,n)&&await this.deliverToStream(t,r)}}async deliverToStream(e,t){let n=e.sink;if(!n.http_endpoint)throw Error(`Log stream ${e.id} is missing sink.http_endpoint`);let r={"Content-Type":n.http_content_type||`application/json`};if(n.http_authorization&&(r.Authorization=n.http_authorization),Array.isArray(n.http_custom_headers))for(let e of n.http_custom_headers)e&&typeof e.header==`string`&&typeof e.value==`string`&&(r[e.header]=e.value);let i=zve(n.http_content_format,t),a=new AbortController,o=setTimeout(()=>a.abort(),this.timeoutMs);try{let t=await fetch(n.http_endpoint,{method:`POST`,headers:r,body:i,signal:a.signal});if(!t.ok){let n=await t.text().catch(()=>``);throw Error(`Log stream ${e.id} returned ${t.status}: ${n.slice(0,256)}`)}}finally{clearTimeout(o)}}},Bve=1e4,$$=class{name=`pipeline`;endpoint;token;timeoutMs;fetchImpl;constructor(e){let t;try{t=new URL(e.endpoint)}catch{throw Error(`PipelineDestination: endpoint is not a valid URL: ${e.endpoint}`)}if(t.protocol!==`https:`)throw Error(`PipelineDestination: endpoint must use https, got ${t.protocol}`);this.endpoint=e.endpoint,this.token=e.token,this.timeoutMs=e.timeoutMs??Bve,this.fetchImpl=e.fetchImpl??fetch}accepts(e){return!e.event_type.startsWith(`hook.`)&&!e.event_type.startsWith(`controlplane.sync.`)}transform(e){return{id:e.id,timestamp:e.timestamp,tenant_id:e.tenant_id,event_type:e.event_type,log_type:e.log_type,category:e.category,actor_id:e.actor.id??null,target_type:e.target.type,target_id:e.target.id,event:e}}async deliver(e){if(e.length===0)return;let t=new AbortController,n=setTimeout(()=>t.abort(),this.timeoutMs);try{let n=await this.fetchImpl(this.endpoint,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${this.token}`},body:JSON.stringify(e),signal:t.signal});if(!n.ok){let e=await n.text().catch(()=>``);throw Error(`Pipeline ingest returned ${n.status}: ${e.slice(0,256)}`)}}finally{clearTimeout(n)}}},Vve=`hook.`,Hve=1e4,e1=`webhook`,t1=class{name=`webhooks`;hooks;getServiceToken;timeoutMs;webhookInvoker;constructor(e,t,n={}){this.hooks=e,this.getServiceToken=t,this.timeoutMs=n.timeoutMs??Hve,this.webhookInvoker=n.webhookInvoker}accepts(e){return e.event_type.startsWith(Vve)}transform(e){let t=e.event_type.slice(5);return{eventId:e.id,tenantId:e.tenant_id,triggerId:t,payload:{tenant_id:e.tenant_id,trigger_id:t,user:e.target?.after,request:e.request}}}async deliver(e){for(let t of e){let{hooks:e}=await this.hooks.list(t.tenantId),n=e.filter(e=>e.enabled&&e.trigger_id===t.triggerId&&`url`in e);if(n.length!==0)for(let e of n)this.webhookInvoker?await this.invokeCustom(e,t):await this.invokeDefault(e,t)}}async invokeCustom(e,t){let n=this.webhookInvoker,r=(e=e1)=>this.getServiceToken(t.tenantId,e),i=new Promise((n,r)=>{setTimeout(()=>r(Error(`Webhook ${e.hook_id} (${t.triggerId}) timed out after ${this.timeoutMs}ms`)),this.timeoutMs)}),a=await Promise.race([n({hook:e,data:t.payload,tenant_id:t.tenantId,idempotency_key:t.eventId,createServiceToken:r}),i]);if(!a.ok){let n=await a.text().catch(()=>``);throw Error(`Webhook ${e.hook_id} (${t.triggerId}) returned ${a.status}: ${n.slice(0,256)}`)}}async invokeDefault(e,t){let n=await this.getServiceToken(t.tenantId,e1),r=new AbortController,i=setTimeout(()=>r.abort(),this.timeoutMs);try{let i=await fetch(e.url,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${n}`,"Idempotency-Key":t.eventId},body:JSON.stringify(t.payload),signal:r.signal});if(!i.ok){let n=await i.text().catch(()=>``);throw Error(`Webhook ${e.hook_id} (${t.triggerId}) returned ${i.status}: ${n.slice(0,256)}`)}}finally{clearTimeout(i)}}},Uve=`hook.`,n1=class{name=`code-hooks`;data;codeExecutor;logCapture;constructor(e,t,n={}){this.data=e,this.codeExecutor=t,this.logCapture=n.logCapture}accepts(e){return e.event_type.startsWith(Uve)}transform(e){return{eventId:e.id,tenantId:e.tenant_id,triggerId:e.event_type.slice(5),user:e.target?.after,request:e.request}}async deliver(e){let t=this.codeExecutor;if(t)for(let n of e){let e=(await this.listAllHooks(n.tenantId)).filter(e=>e.enabled&&e.trigger_id===n.triggerId&&TV(e));if(e.length===0)continue;let r={user:n.user,request:n.request,tenant:{id:n.tenantId}},i=[];for(let a of e)if(TV(a))try{i.push(await AV({codeExecutor:t,data:this.data,tenantId:n.tenantId,hook:a,event:r,triggerId:n.triggerId,api:{user:{}},idempotencyKey:n.eventId}))}catch(e){let t=e instanceof Error?e.message:String(e);i.push({result:{action_name:a.code_id,error:{id:`execution_threw`,msg:t},started_at:new Date().toISOString(),ended_at:new Date().toISOString()},logs:[],denied:!1})}await PV(this.data,n.tenantId,n.triggerId,i,{logCapture:this.logCapture});let a=i.filter(e=>e.result.error);if(a.length>0){let e=a.map(e=>`${e.result.action_name}: ${e.result.error?.msg}`).join(`; `);throw Error(`${a.length} code hook(s) failed for ${n.triggerId}: ${e}`)}}}async listAllHooks(e){let t=[];for(let n=0;;n++){let{hooks:r}=await this.data.hooks.list(e,{page:n,per_page:100});if(t.push(...r),r.length<100)break}return t}},Wve=`hook.post-user-registration`,r1=class{name=`registration-finalizer`;users;constructor(e){this.users=e}accepts(e){return e.event_type===Wve}transform(e){return{tenantId:e.tenant_id,userId:e.target?.id??``,timestamp:new Date().toISOString()}}async deliver(e){for(let{tenantId:t,userId:n,timestamp:r}of e)n&&await this.users.update(t,n,{registration_completed_at:r})}},Gve=1e4,Kve=`controlplane:sync`,qve=`/api/v2/proxy/control-plane/sync`,Jve=new Set([`proxy_route`]),Yve=new Set([`created`,`updated`,`deleted`]);function Xve(e){return Jve.has(e)}function Zve(e){return Yve.has(e)}var i1=class{name=`control-plane-sync`;baseUrl;getServiceToken;timeoutMs;fetchImpl;constructor(e){this.baseUrl=e.baseUrl.replace(/\/+$/,``),this.getServiceToken=e.getServiceToken,this.timeoutMs=e.timeoutMs??Gve,this.fetchImpl=e.fetchImpl??fetch}accepts(e){return e.event_type.startsWith(FQ)}transform(e){let[t,n]=e.event_type.slice(FQ.length).split(`.`);if(!t||!Xve(t))throw Error(`ControlPlaneSyncDestination: unknown entity in event_type "${e.event_type}"`);if(!n||!Zve(n))throw Error(`ControlPlaneSyncDestination: unknown op in event_type "${e.event_type}"`);let r=e.target.after??e.target.before;if(!r)throw Error(`ControlPlaneSyncDestination: event ${e.id} has no payload (target.after/before)`);return{event_id:e.id,tenant_id:e.tenant_id,entity:t,op:n,aggregate_id:e.target.id,payload:r,occurred_at:e.timestamp}}async deliver(e){for(let t of e){let e=await this.getServiceToken(t.tenant_id,Kve),n=new AbortController,r=setTimeout(()=>n.abort(),this.timeoutMs);try{let r=await this.fetchImpl(`${this.baseUrl}${qve}`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${e}`,"Idempotency-Key":t.event_id},body:JSON.stringify({events:[t]}),signal:n.signal});if(!r.ok){let e=await r.text().catch(()=>``);throw Error(`Control-plane sync POST returned ${r.status}: ${e.slice(0,256)}`)}}finally{clearTimeout(r)}}}};function a1(e,t){e.set(`Access-Control-Allow-Origin`,t),e.set(`Access-Control-Allow-Headers`,`Tenant-Id, Content-Type, Content-Range, Auth0-Client, Authorization, Range, Upgrade-Insecure-Requests`),e.set(`Access-Control-Allow-Methods`,`POST, PUT, GET, DELETE, PATCH, OPTIONS`),e.set(`Access-Control-Expose-Headers`,`Content-Length, Content-Range`),e.set(`Access-Control-Max-Age`,`600`),e.set(`Access-Control-Allow-Credentials`,`true`)}function Qve(e){let t=new f.OpenAPIHono,n=e.managementDataAdapter??e.dataAdapter;t.use(tY(e)),t.use(QM);let r=async e=>{let t=e.req.header(`x-forwarded-host`),r=e.req.header(`host`),i=t||r;if(!i)return;let a=new URL(to(e.env)).host.toLowerCase(),o=i.toLowerCase();if(o.endsWith(`.${a}`)){let e=o.slice(0,-(a.length+1));return e&&!e.includes(`.`)?e:void 0}for(let e of[t,r]){if(!e)continue;let t=e.toLowerCase();if(t===a||t.endsWith(`.${a}`))continue;let r=await n.customDomains.getByDomain(t);if(r)return r.tenant_id}};t.use(async(t,i)=>{let a=t.req.header(`origin`);if(t.req.method===`OPTIONS`){let i=new Response(null,{status:204});if(i.headers.append(`Vary`,`Origin`),a){if(e.allowedOrigins?.includes(a))return a1(i.headers,a),i;let o=t.req.header(`tenant-id`)??await r(t);if(o&&(await n.clients.list(o,{})).clients.flatMap(e=>e.web_origins||[]).includes(a))return a1(i.headers,a),i}return i}if(await i(),XM(t),!JM(t.res)&&(t.res.headers.append(`Vary`,`Origin`),a)){if(e.allowedOrigins?.includes(a)){a1(t.res.headers,a);return}let i=t.var.tenant_id||t.req.header(`tenant-id`)||await r(t);i&&(await n.clients.list(i,{})).clients.flatMap(e=>e.web_origins||[]).includes(a)&&a1(t.res.headers,a)}}),e.tenantDispatch&&t.use(e.tenantDispatch),t.onError((e,t)=>{if(!Co(e))throw e;let n=e.status;if(n<400||n>=500)throw e;let r=e.getResponse();if(r.headers.get(`content-type`)?.includes(`application/json`))return r;let i={400:`Bad Request`,401:`Unauthorized`,403:`Forbidden`,404:`Not Found`,405:`Method Not Allowed`,409:`Conflict`,422:`Unprocessable Entity`,429:`Too Many Requests`};return t.json({statusCode:n,error:i[n]??`Error`,message:e.message||i[n]||`Error`},n)}),t.use(async(e,t)=>{if(await t(),e.res.status!==400||!e.res.headers.get(`content-type`)?.includes(`application/json`))return;let n;try{n=await e.res.clone().json()}catch{return}if(typeof n!=`object`||!n||!(`success`in n)||n.success!==!1||!(`error`in n)||typeof n.error!=`object`||n.error===null||!(`name`in n.error)||n.error.name!==`ZodError`)return;let r=`issues`in n.error&&Array.isArray(n.error.issues)?n.error.issues:[],i=r.length?`Payload validation error: ${r.map(e=>{let t=Array.isArray(e.path)?e.path:[];return`'${t.length?t.join(`.`):`root`}': ${e.message??`invalid`}`}).join(`; `)}`:`Payload validation error`;e.res=new Response(JSON.stringify({statusCode:400,error:`Bad Request`,message:i,errorCode:`invalid_body`}),{status:400,headers:{"content-type":`application/json`}})}),Hq(t);let i=e.dataAdapter.cache||qZ({defaultTtlSeconds:0,maxEntries:100,cleanupIntervalMs:0}),a=(e,t)=>{let n=sH(e,tN(e,t)),r=eN(e,i);return VZ(LZ(n,{defaultTtl:0,cacheEntities:[`tenants`,`connections`,`clients`,`branding`,`themes`,`promptSettings`,`customText`,`forms`,`hooks`],cache:r}),r)};t.use(X$({getOutbox:e=>rY(e,n).outbox,getDestinations:t=>{let r=rY(t,n);return[new Z$(r.logs),...r.logStreams?[new Q$(r.logStreams)]:[],new t1(r.hooks,async e=>(await UM(t,e,`webhook`)).access_token),new n1(r,t.env.codeExecutor,{logCapture:t.env.actionExecutionLogs}),...e.controlPlaneSync?[new i1({baseUrl:e.controlPlaneSync.baseUrl,timeoutMs:e.controlPlaneSync.timeoutMs,getServiceToken:async(e,n)=>(await UM(t,e,n??`controlplane:sync`)).access_token})]:[],new r1(r.users),...e.outbox?.pipeline?[new $$(e.outbox.pipeline)]:[]]}})),t.use(async(t,r)=>{nY(t,a(t,rY(t,n))),t.env.entityHooks=e.entityHooks,await r()}),t.use(async(e,t)=>{let n;try{await t()}catch(e){n=e}let r,i;if(n instanceof m){r=n.status;let e=n.getResponse();if(e.headers.get(`content-type`)?.includes(`application/json`))try{i=await e.clone().json()}catch{}}else if(n)r=500;else if(r=e.res.status,r>=400&&e.res.headers.get(`content-type`)?.includes(`application/json`))try{i=await e.res.clone().json()}catch{}let a=r===404&&e.req.method===`GET`;if(r>=400&&r<600&&!a){let t=e.var.tenant_id||e.req.header(`tenant-id`);if(t&&e.env.data?.logs)try{let n=e.var.user?.aud,a=Array.isArray(n)?n.join(`,`):typeof n==`string`?n:void 0,o=a?`${e.req.method} ${e.req.path} (aud: ${a})`:`${e.req.method} ${e.req.path}`;await P(e,t,{type:M.FAILED_API_OPERATION,description:o,response:{statusCode:r,body:i}})}catch(e){console.warn(`Failed to write fapi log:`,e)}}if(n)throw n}),t.use(FZ).use(bme).use(oY).use(rM(t,{requireManagementAudience:!0,relaxManagementAudience:e.relaxManagementAudience,additionalManagementAudiences:e.additionalManagementAudiences,additionalIssuers:e.additionalIssuers})).use(async(t,n)=>(e.entityHooks&&t.var.tenant_id&&nY(t,KZ(t.var.data,{tenantId:t.var.tenant_id,entityHooks:e.entityHooks})),n()));for(let n of e.managementApiMiddleware??[])t.use(n);let o=new Set(e.managementApiExtensions?.map(e=>e.path)||[]),s=t.route(`/actions/actions`,Go).route(`/actions/executions`,Xo).route(`/actions/triggers`,Jte).route(`/branding`,tg).route(`/custom-domains`,EJ).route(`/email/providers`,qq).route(`/emails/provider`,qq).route(`/email-templates`,oJ).route(`/users`,Mse).route(`/keys`,nce).route(`/users-by-email`,ice).route(`/clients`,Dce).route(`/client-grants`,She).route(`/grants`,Ohe).route(`/client-registration-tokens`,Lhe).route(`/logs`,Mce).route(`/log-streams`,NJ).route(`/migration-sources`,UJ).route(`/attack-protection`,eY).route(`/failed-events`,Hce).route(`/hooks`,ole).route(`/hook-code`,dle).route(`/connections`,Mq).route(`/prompts`,Bq).route(`/sessions`,hJ).route(`/refresh-tokens`,vJ).route(`/refresh_tokens`,vJ).route(`/forms`,Fme).route(`/flows`,Hme).route(`/roles`,ahe).route(`/resource-servers`,phe).route(`/organizations`,kge).route(`/stats`,Nge).route(`/analytics`,Uge({cache:i})).route(`/guardian`,i_e).route(`/tickets`,g_e).route(`/users/:user_id/authentication-methods`,d_e).route(`/tenant-data`,Q_e).route(`/jobs`,Dve);if(o.has(`/tenants`)||s.route(`/tenants`,qse),e.tenantMembers&&!o.has(`/tenant-members`)&&s.route(`/tenant-members`,H$(e.tenantMembers.getBackend)),!o.has(`/proxy-routes`)&&n.proxyRoutes&&s.route(`/proxy-routes`,w_e),!o.has(`/token-exchange-profiles`)&&n.tokenExchangeProfiles&&s.route(`/token-exchange-profiles`,P_e),!o.has(`/connections`)&&n.scimConfigurations&&n.scimTokens&&s.route(`/connections/:id/scim-configuration`,Zhe),n.tenantOperations&&n.tenantOperationEvents&&(s.route(`/operations`,L_e),s.route(`/tenants/:id/operations`,B_e)),e.managementApiExtensions)for(let t of e.managementApiExtensions)s.route(t.path,t.router);return s.doc(`/spec`,{openapi:`3.0.0`,info:{version:`1.0.0`,title:`Management API`},servers:[{url:`/api/v2`,description:`API V2`}],security:[{oauth2:[`openid`,`email`,`profile`]}]}),s}var o1={tenant_id:f.z.string().optional()},$ve=hn.extend(o1),eye=vn.extend(o1),tye=bn.extend(o1);function nye(e){let t=e instanceof Error?e.message:String(e);return t.includes(`1406`)||/already exists|duplicate custom hostname/i.test(t)}function s1(e){return{error:`conflict`,message:`The custom domain "${e}" is already registered`}}function rye(e){let t=new p.Hono,{customDomains:n,authenticate:r}=e;t.use(`*`,async(e,t)=>{let n=await r(e);return n.ok?n.tenantId?(e.set(`tenantId`,n.tenantId),t()):(console.warn(`[proxy/control-plane/custom-domains] token carries no tenant_id claim`),e.text(`Forbidden`,403)):(console.warn(`[proxy/control-plane/custom-domains] authentication failed: ${n.reason}`),e.text(`Unauthorized`,401,{"WWW-Authenticate":`Bearer`}))});function i(e,t){return t!==void 0&&t!==e}return t.post(`/`,async e=>{let t=e.get(`tenantId`),r;try{r=await e.req.json()}catch{return e.text(`Invalid JSON`,400)}let a=$ve.safeParse(r);if(!a.success)return e.json({error:`invalid_request`,details:a.error.issues},400);let{tenant_id:o,...s}=a.data;if(i(t,o))return e.text(`Forbidden`,403);let c=s.domain.toLowerCase(),l=await n.getByDomain(c);if(l){if(l.tenant_id!==t)return e.json(s1(c),409);let{tenant_id:n,...r}=l;return e.json(r,200)}try{let r=await n.create(t,{...s,domain:c});return e.json(r,201)}catch(t){if(nye(t))return e.json(s1(c),409);throw t}}),t.get(`/`,async e=>{let t=e.get(`tenantId`);return i(t,e.req.query(`tenant_id`))?e.text(`Forbidden`,403):e.json(await n.list(t))}),t.get(`/:id`,async e=>{let t=e.get(`tenantId`);if(i(t,e.req.query(`tenant_id`)))return e.text(`Forbidden`,403);let r=await n.get(t,e.req.param(`id`));return r?e.json(r):e.text(`Not found`,404)}),t.patch(`/:id`,async e=>{let t=e.get(`tenantId`),r;try{r=await e.req.json()}catch{return e.text(`Invalid JSON`,400)}let a=eye.safeParse(r);if(!a.success)return e.json({error:`invalid_request`,details:a.error.issues},400);let{tenant_id:o,...s}=a.data;if(i(t,o))return e.text(`Forbidden`,403);let c=e.req.param(`id`);if(!await n.update(t,c,s))return e.text(`Not found`,404);let l=await n.get(t,c);return l?e.json(l):e.text(`Not found`,404)}),t.delete(`/:id`,async e=>{let t=e.get(`tenantId`);return i(t,e.req.query(`tenant_id`))?e.text(`Forbidden`,403):await n.remove(t,e.req.param(`id`))?e.body(null,204):e.text(`Not found`,404)}),t.put(`/:id/certificate`,async e=>{let t=e.get(`tenantId`),{uploadCertificate:r}=n;if(!r)return e.json({error:`not_implemented`,message:`The control-plane custom-domain adapter does not support certificate upload`},501);let a;try{a=await e.req.json()}catch{return e.text(`Invalid JSON`,400)}let o=tye.safeParse(a);if(!o.success)return e.json({error:`invalid_request`,details:o.error.issues},400);let{tenant_id:s,...c}=o.data;if(i(t,s))return e.text(`Forbidden`,403);let l=await r(t,e.req.param(`id`),c);return e.json(l)}),t}var iye=`/api/v2/proxy/control-plane/tenant-members`,c1={tenant_id:f.z.string().optional()},l1=f.z.object({...c1,user_ids:f.z.array(f.z.string()).min(1)}),u1=f.z.object({...c1,roles:f.z.array(f.z.string()).min(1)}),aye=N$.extend(c1),d1=`controlplane:sync`,f1=`controlplane:custom_domains`,p1=`controlplane:tenant_members`,oye=new Set([`RS256`,`RS384`,`RS512`,`ES256`,`ES384`,`ES512`]);function sye(e){return typeof e==`string`&&oye.has(e)?e:null}function m1(e){return e.href.replace(/\/$/,``)}function h1(e,t){try{return m1(new URL(e))===m1(new URL(t))}catch{return!1}}var cye=f.z.object({keys:f.z.array(rr)});function lye(e){return new URL(`/.well-known/jwks.json`,e).href}async function g1(e){let{token:t,jwksFetch:n,expectedIssuers:r}=e,i=e.requiredScope===void 0?[MZ]:Array.isArray(e.requiredScope)?e.requiredScope:[e.requiredScope],a,o;try{let e=Kv(t);a=e.header,o=e.payload}catch{return{ok:!1,reason:`malformed token`}}let s=sye(a.alg);if(!s)return{ok:!1,reason:`unsupported alg`};if(typeof a.kid!=`string`||a.kid.length===0)return{ok:!1,reason:`missing kid`};let c=o.iss,l=typeof o.tenant_id==`string`?o.tenant_id:void 0;if(typeof c!=`string`||!(r.some(e=>h1(c,e))||e.isTrustedIssuer?.(c,l)===!0))return{ok:!1,reason:`issuer mismatch`};let u=c,d;try{d=lye(u)}catch{return{ok:!1,reason:`malformed issuer url`}}let f=n??fetch,p;try{p=await f(d)}catch(e){return{ok:!1,reason:`jwks fetch failed: ${e instanceof Error?e.message:`unknown`}`}}if(!p.ok)return{ok:!1,reason:`jwks fetch http ${p.status}`};let m;try{m=await p.json()}catch{return{ok:!1,reason:`jwks body not json`}}let h=cye.safeParse(m);if(!h.success)return{ok:!1,reason:`jwks body schema mismatch`};let g=h.data.keys.find(e=>e.kid===a.kid);if(!g)return{ok:!1,reason:`unknown kid`};if(g.alg!==s)return{ok:!1,reason:`alg mismatch between jwk and token header`};let _;try{let e=MA(g,s);_=await crypto.subtle.importKey(`jwk`,g,e,!1,[`verify`])}catch{return{ok:!1,reason:`key import failed`}}let v;try{v=await Gv(t,_,s)}catch{return{ok:!1,reason:`signature verification failed`}}let y=v.scope,b=typeof y==`string`?y.split(/\s+/).filter(Boolean):[];return i.some(e=>b.includes(e))?{ok:!0,tenantId:typeof v.tenant_id==`string`?v.tenant_id:void 0}:{ok:!1,reason:`missing required scope`}}function uye(e){let t=e.headers.get(`authorization`);return t?/^Bearer\s+(\S+)$/i.exec(t)?.[1]??null:null}async function _1(e,t,n={}){let r=uye(e.req.raw);if(!r)return{ok:!1,reason:`missing bearer token`};let i=`https://${e.req.header(`x-forwarded-host`)??new URL(e.req.url).host}/`,a=Array.from(new Set([e.env.ISSUER,i]));return g1({token:r,jwksFetch:n.jwksFetch,expectedIssuers:a,requiredScope:t,isTrustedIssuer:n.isTrustedIssuer})}function v1(e){let t=new p.Hono,{getBackend:n}=e,r=e.authenticate??(e=>_1(e,`controlplane:tenant_members`));t.use(`*`,async(e,t)=>{let n=await r(e);return n.ok?n.tenantId?(e.set(`tenantId`,n.tenantId),t()):(console.warn(`[proxy/control-plane/tenant-members] token carries no tenant_id claim`),e.text(`Forbidden`,403)):(console.warn(`[proxy/control-plane/tenant-members] authentication failed: ${n.reason}`),e.text(`Unauthorized`,401,{"WWW-Authenticate":`Bearer`}))});function i(e,t){return t!==void 0&&t!==e}async function a(e){try{return await e.req.json()}catch{return}}async function o(e,t){try{return await t()}catch(t){if(t instanceof P$)return e.text(`Not found`,404);throw t}}return t.get(`/members`,async e=>{let t=e.get(`tenantId`);if(i(t,e.req.query(`tenant_id`)))return e.text(`Forbidden`,403);let r=await n(e),a=e.req.query(`page`),s=e.req.query(`per_page`),c=await o(e,()=>r.listMembers(t,{page:a?Number(a):void 0,per_page:s?Number(s):void 0,q:e.req.query(`q`)||void 0}));return c instanceof Response?c:e.json(c)}),t.post(`/members`,async e=>{let t=e.get(`tenantId`),r=l1.safeParse(await a(e));if(!r.success)return e.json({error:`invalid_request`,details:r.error.issues},400);if(i(t,r.data.tenant_id))return e.text(`Forbidden`,403);let s=await n(e),c=await o(e,()=>s.addMembers(t,r.data.user_ids));return c instanceof Response?c:e.body(null,204)}),t.delete(`/members`,async e=>{let t=e.get(`tenantId`),r=l1.safeParse(await a(e));if(!r.success)return e.json({error:`invalid_request`,details:r.error.issues},400);if(i(t,r.data.tenant_id))return e.text(`Forbidden`,403);let s=await n(e),c=await o(e,()=>s.removeMembers(t,r.data.user_ids));return c instanceof Response?c:e.body(null,204)}),t.get(`/members/:user_id/roles`,async e=>{let t=e.get(`tenantId`);if(i(t,e.req.query(`tenant_id`)))return e.text(`Forbidden`,403);let r=await n(e),a=await o(e,()=>r.listMemberRoles(t,e.req.param(`user_id`)));return a instanceof Response?a:e.json(a)}),t.post(`/members/:user_id/roles`,async e=>{let t=e.get(`tenantId`),r=u1.safeParse(await a(e));if(!r.success)return e.json({error:`invalid_request`,details:r.error.issues},400);if(i(t,r.data.tenant_id))return e.text(`Forbidden`,403);let s=await n(e),c=await o(e,()=>s.assignMemberRoles(t,e.req.param(`user_id`),r.data.roles));return c instanceof Response?c:e.body(null,204)}),t.delete(`/members/:user_id/roles`,async e=>{let t=e.get(`tenantId`),r=u1.safeParse(await a(e));if(!r.success)return e.json({error:`invalid_request`,details:r.error.issues},400);if(i(t,r.data.tenant_id))return e.text(`Forbidden`,403);let s=await n(e),c=await o(e,()=>s.removeMemberRoles(t,e.req.param(`user_id`),r.data.roles));return c instanceof Response?c:e.body(null,204)}),t.get(`/roles`,async e=>{let t=e.get(`tenantId`);if(i(t,e.req.query(`tenant_id`)))return e.text(`Forbidden`,403);let r=await n(e),a=e.req.query(`page`),s=e.req.query(`per_page`),c=await o(e,()=>r.listRoles(t,{page:a?Number(a):void 0,per_page:s?Number(s):void 0,q:e.req.query(`q`)||void 0}));return c instanceof Response?c:e.json(c)}),t.get(`/invitations`,async e=>{let t=e.get(`tenantId`);if(i(t,e.req.query(`tenant_id`)))return e.text(`Forbidden`,403);let r=await n(e),a=e.req.query(`page`),s=e.req.query(`per_page`),c=await o(e,()=>r.listInvitations(t,{page:a?Number(a):void 0,per_page:s?Number(s):void 0}));return c instanceof Response?c:e.json(c)}),t.post(`/invitations`,async e=>{let t=e.get(`tenantId`),r=aye.safeParse(await a(e));if(!r.success)return e.json({error:`invalid_request`,details:r.error.issues},400);let{tenant_id:s,...c}=r.data;if(i(t,s))return e.text(`Forbidden`,403);let l=await n(e),u=await o(e,()=>l.createInvitation(t,c));return u instanceof Response?u:e.json(u,201)}),t.delete(`/invitations/:id`,async e=>{let t=e.get(`tenantId`);if(i(t,e.req.query(`tenant_id`)))return e.text(`Forbidden`,403);let r=await n(e),a=await o(e,()=>r.revokeInvitation(t,e.req.param(`id`)));return a instanceof Response?a:e.body(null,204)}),t}var dye=f.z.object({event_id:f.z.string(),tenant_id:f.z.string(),entity:f.z.literal(`proxy_route`),op:f.z.enum([`created`,`updated`,`deleted`]),aggregate_id:f.z.string(),payload:ui,occurred_at:f.z.string()}),fye=f.z.object({events:f.z.array(dye).min(1)});function pye(e){let t=new p.Hono;function n(e){return async t=>r(t,e)}function r(t,n){return _1(t,n,{jwksFetch:e.jwksFetch,isTrustedIssuer:e.isTrustedIssuer})}if(t.get(`/hosts/:host`,async t=>{let n=await r(t,MZ);if(!n.ok)return console.warn(`[proxy/control-plane] authentication failed: ${n.reason}`),t.text(`Unauthorized`,401,{"WWW-Authenticate":`Bearer`});let i=t.req.param(`host`);if(!i)return t.text(`Missing host`,400);let a=await e.resolveHost(i);return a?t.json(a):t.text(`Unknown host`,404)}),e.customDomains&&t.route(`/custom-domains`,rye({customDomains:e.customDomains,authenticate:n(f1)})),e.tenantMembers&&t.route(`/tenant-members`,v1({getBackend:e.tenantMembers.getBackend,authenticate:n(p1)})),e.applySyncEvents){let n=e.applySyncEvents;t.post(`/sync`,async e=>{let t=await r(e,d1);if(!t.ok)return console.warn(`[proxy/control-plane/sync] authentication failed: ${t.reason}`),e.text(`Unauthorized`,401,{"WWW-Authenticate":`Bearer`});let i;try{i=await e.req.json()}catch{return e.text(`Invalid JSON`,400)}let a=fye.safeParse(i);if(!a.success)return e.json({error:`Invalid sync request`,details:a.error.issues},400);if(!t.tenantId||a.data.events.some(e=>e.tenant_id!==t.tenantId))return console.warn(`[proxy/control-plane/sync] event tenant_id does not match the token (tenant=${t.tenantId??`<none>`})`),e.text(`Forbidden`,403);try{return await n(a.data.events),e.body(null,204)}catch(t){if(typeof t==`object`&&t&&t.retryable===!0)throw t;let n=t instanceof Error?t:Error(String(t));return console.error(`[proxy/control-plane/sync] applySyncEvents failed:`,n),e.json({error:`Failed to apply sync events`,message:n.message,kind:n.name,retryable:!1},500)}})}return t}function mye(e){let{proxyRoutes:t}=e;return async e=>{for(let n of e)await hye(t,n)}}async function hye(e,t){if(t.op===`deleted`){try{await e.remove(t.tenant_id,t.aggregate_id)}catch(e){if(!_ye(e))throw e}return}if(t.op===`created`)try{await e.create(t.tenant_id,t.payload);return}catch(e){if(!gye(e))throw e}await e.update(t.tenant_id,t.aggregate_id,t.payload)||await e.create(t.tenant_id,t.payload)}function gye(e){let t=e instanceof Error?e.message:String(e);return t.includes(`UNIQUE constraint failed`)||t.includes(`Duplicate entry`)||t.includes(`PRIMARY KEY`)}function _ye(e){return(e instanceof Error?e.message:String(e)).toLowerCase().includes(`not found`)}var y1=e=>{let t={origin:`*`,allowMethods:[`GET`,`HEAD`,`PUT`,`POST`,`DELETE`,`PATCH`],allowHeaders:[],exposeHeaders:[],...e},n=(e=>typeof e==`string`?e===`*`?()=>e:t=>e===t?t:null:typeof e==`function`?e:t=>e.includes(t)?t:null)(t.origin),r=(e=>typeof e==`function`?e:Array.isArray(e)?()=>e:()=>[])(t.allowMethods);return async function(e,i){function a(t,n){e.res.headers.set(t,n)}let o=await n(e.req.header(`origin`)||``,e);if(o&&a(`Access-Control-Allow-Origin`,o),t.credentials&&a(`Access-Control-Allow-Credentials`,`true`),t.exposeHeaders?.length&&a(`Access-Control-Expose-Headers`,t.exposeHeaders.join(`,`)),e.req.method===`OPTIONS`){t.origin!==`*`&&a(`Vary`,`Origin`),t.maxAge!=null&&a(`Access-Control-Max-Age`,t.maxAge.toString());let n=await r(e.req.header(`origin`)||``,e);n.length&&a(`Access-Control-Allow-Methods`,n.join(`,`));let i=t.allowHeaders;if(!i?.length){let t=e.req.header(`Access-Control-Request-Headers`);t&&(i=t.split(/\s*,\s*/))}return i?.length&&(a(`Access-Control-Allow-Headers`,i.join(`,`)),e.res.headers.append(`Vary`,`Access-Control-Request-Headers`)),e.res.headers.delete(`Content-Length`),e.res.headers.delete(`Content-Type`),new Response(null,{headers:e.res.headers,status:204,statusText:`No Content`})}await i(),t.origin!==`*`&&e.header(`Vary`,`Origin`,{append:!0})}};async function vye(e){let t=(e.req.header(`x-forwarded-host`)??e.req.header(`host`))?.toLowerCase();if(!t)return!1;if(e.var.custom_domain?.toLowerCase()===t)return!0;let n=new URL(to(e.env)).host.toLowerCase();if(t===n)return!0;if(t.endsWith(`.${n}`)){let r=t.slice(0,-(n.length+1));return!r.includes(`.`)&&!!await e.env.data.tenants.get(r)}return!!await e.env.data.customDomains.getByDomain(t)}var b1=async(e,t)=>e.env.rejectUnknownHosts&&!await vye(e)?e.text(`Not Found`,404):t();function x1(e,t){if(!e||!t||e.length!==t.length)return!1;let n=0;for(let r=0;r<e.length;r++)n|=e.charCodeAt(r)^t.charCodeAt(r);return n===0}var yye=`urn:ietf:params:oauth:token-type:access_token`,S1=`urn:ietf:params:oauth:grant-type:token-exchange`,C1=f.z.object({grant_type:f.z.literal(S1),client_id:f.z.string(),client_secret:f.z.string().optional(),subject_token:f.z.string(),subject_token_type:f.z.literal(yye),organization:f.z.string().min(1),audience:f.z.string().optional(),scope:f.z.string().optional()});async function bye(e,t,n){let r=n??await cN(e.env,t.client_id,e.var.tenant_id),i=t=>P(e,r.tenant.id,{type:M.FAILED_EXCHANGE_SUBJECT_TOKEN_FOR_ACCESS_TOKEN,description:t});if(e.var.client_authenticated_via_assertion!==!0){if(!t.client_secret)throw i(`Missing client_secret`),new V(401,{error:`invalid_client`,error_description:`client_secret is required`});if(!r.client_secret||!x1(r.client_secret,t.client_secret))throw i(`Invalid client credentials`),new V(401,{error:`invalid_client`,error_description:`Client authentication failed`})}if(!r.organization_usage||r.organization_usage===`deny`)throw i(`Client is not permitted to request organization context`),new V(403,{error:`unauthorized_client`,error_description:`Client is not configured to request organization context`});let a=r.auth0_conformant===!1?400:403,o;try{o=await fj(e,t.subject_token,{skipIssuerCheck:!0})}catch(e){throw e instanceof dj?(i(`Subject token expired`),new V(a,{error:`invalid_grant`,error_description:`Subject token has expired`})):e}let s=to(e.env,e.var.custom_domain);if(o.iss!==s){let t=e.var.custom_domain?``:` — request host '${e.var.host??`unknown`}' did not resolve to a tenant domain, so the expected issuer fell back to the configured ISSUER`,n=`(token iss=${o.iss??`none`}, expected=${s}${t})`;throw i(`Subject token was not issued by this server ${n}`),new V(a,{error:`invalid_grant`,error_description:`Subject token issuer mismatch ${n}`})}if(o.act!==void 0)throw i(`Subject token already represents a delegated session`),new V(a,{error:`invalid_grant`,error_description:`Subject token is not exchangeable`});if(!o.sub)throw i(`Subject token missing sub`),new V(a,{error:`invalid_grant`,error_description:`Subject token has no subject`});let c=await e.env.data.users.get(r.tenant.id,o.sub);if(!c)throw i(`User not found`),new V(a,{error:`invalid_grant`,error_description:`Subject token subject is not a known user`});let l=await Og(e.env.data.users,r.tenant.id,c);if(l.linked_to)throw i(`Linked user not found`),new V(a,{error:`invalid_grant`,error_description:`Subject token subject is not a known user`});if(e.set(`user_id`,l.user_id),t.audience===void 0&&Array.isArray(o.aud)&&o.aud.length>1)throw i(`Subject token has multiple audiences and none was requested`),new V(400,{error:`invalid_request`,error_description:`audience is required when subject token has multiple audiences`});let u=t.audience??(typeof o.aud==`string`?o.aud:Array.isArray(o.aud)?o.aud[0]:void 0);if(!u)throw i(`No audience on subject token and none requested`),new V(400,{error:`invalid_request`,error_description:`audience is required when subject token has none`});if(!(await e.env.data.resourceServers.list(r.tenant.id)).resource_servers.find(e=>e.identifier===u))throw i(`Audience '${u}' is not a registered resource server`),new V(400,{error:`invalid_request`,error_description:`audience is not a registered resource server`});let d=await w1(e,{tenantId:r.tenant.id,userId:l.user_id,organizationId:t.organization,failLog:i}),f=(o.scope??``).split(` `).filter(Boolean),p=t.scope?.split(` `).filter(Boolean),m;if(p&&p.length>0){let e=p.filter(e=>!f.includes(e));if(e.length>0)throw i(`Requested scope exceeds subject token: ${e.join(`,`)}`),new V(400,{error:`invalid_scope`,error_description:`Requested scope exceeds subject token scope`});m=p.join(` `)}else m=f.join(` `)||void 0;return{user:l,client:r,authParams:{client_id:r.client_id,audience:u,scope:m,organization:d.id},organization:d,actClient:{client_id:r.client_id}}}async function w1(e,t){let{tenantId:n,userId:r,failLog:i}=t,a=await e.env.data.organizations.get(n,t.organizationId);if(!a)throw i(`Organization '${t.organizationId}' not found`),new V(400,{error:`invalid_request`,error_description:`Organization '${t.organizationId}' not found`});if(!await VH(e,n,r,a.id))throw i(`User ${r} is not a member of organization ${a.id}`),new V(403,{error:`access_denied`,error_description:`User is not a member of the specified organization`});return{id:a.id,name:a.name}}async function T1(e,t,n={}){let{cursorField:r=`id`,sortOrder:i=`asc`,pageSize:a=100,maxItems:o=1e4,q:s}=n,c=[],l,u=!0;for(;u;){let n=s||``;if(l){let e=`${r}:${i===`asc`?`>`:`<`}${l}`;n=n?`(${n}) AND ${e}`:e}let d=(await e({per_page:a,page:0,sort:{sort_by:r,sort_order:i},...n&&{q:n}}))[t]||[];if(d.length===0)u=!1;else{c.push(...d);let e=d[d.length-1];if(e&&typeof e==`object`){let t=e[r];t!=null&&(l=String(t))}d.length<a&&(u=!1),o!==-1&&c.length>=o&&(console.warn(`fetchAll: Reached maxItems limit (${o}). There may be more items.`),u=!1)}}return c}var E1=class extends Error{},xye=`urn:ietf:params:oauth:token-type:access_token`;function D1(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Sye(e,t,n,r){let i;try{i=e.executionCtx}catch{i=void 0}let a,o=()=>(a??=T1(t=>e.env.data.userOrganizations.listUserOrganizations(n.controlPlaneTenantId,n.userId,t),`organizations`),a),s=async e=>{let t=e.toLowerCase(),n=(await o()).find(e=>e.name.toLowerCase()===t);if(!n)throw new E1(`No access to tenant "${e}"`);return n},c=new Map,l=async a=>{let o=await e.env.data.clients.get(n.controlPlaneTenantId,r.exchangeClientId);if(!o?.client_secret)throw Error(`MCP exchange client "${r.exchangeClientId}" is missing or has no client_secret`);let s=new URL(`oauth/token`,n.controlPlaneIssuer),c=new Headers({"content-type":`application/x-www-form-urlencoded`});n.controlPlaneIssuer===e.env.ISSUER?c.set(`tenant-id`,n.controlPlaneTenantId):c.set(`x-forwarded-host`,s.host);let l=new URLSearchParams({grant_type:S1,subject_token:n.subjectToken,subject_token_type:xye,client_id:o.client_id,client_secret:o.client_secret,organization:a.id,audience:tM}),u=await t.fetch(new Request(s,{method:`POST`,headers:c,body:l}),e.env,i),d=await u.json().catch(()=>void 0);if(!u.ok)throw u.status===403?new E1(`No access to tenant "${a.name}"`):(console.error(`MCP token exchange failed`,u.status,d),new E1(`Could not authorize access to tenant "${a.name}" (token exchange failed with status ${u.status})`));if(!D1(d)||typeof d.access_token!=`string`)throw Error(`Token exchange returned no access_token`);return d.access_token},u=e=>{let t=c.get(e.id);return t||(t=l(e),c.set(e.id,t)),t};return{pinnedTenantId:n.pinnedTenantId,async listTenants(){return(await o()).map(e=>({tenant_id:e.name,display_name:e.display_name}))},tenantFor(e){if(n.pinnedTenantId)return n.pinnedTenantId;let t=e.tenant_id;if(typeof t!=`string`||!t)throw new E1(`Missing required argument: tenant_id`);return t},async management(n,r){let a=await s(n),o=await u(a),c=new URL(`/api/v2${r.path}`,e.req.url);for(let[e,t]of Object.entries(r.query??{}))t!==void 0&&t!==``&&c.searchParams.set(e,t);let l=await t.fetch(new Request(c,{method:r.method??`GET`,headers:{accept:`application/json`,authorization:`Bearer ${o}`,"tenant-id":a.name}}),e.env,i),d=await l.text(),f=d;if(d)try{f=JSON.parse(d)}catch{}if(!l.ok){let e=D1(f)&&typeof f.message==`string`?f.message:typeof f==`string`&&f?f:`Request failed`;throw new E1(`${l.status}: ${e}`)}return f}}}var O1=[`2025-11-25`,`2025-06-18`,`2025-03-26`,`2024-11-05`],Cye={name:`authhero-management`,version:`1.0.0`};function k1(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var A1=(e,t)=>({jsonrpc:`2.0`,id:e,result:t}),j1=(e,t,n)=>({jsonrpc:`2.0`,id:e,error:{code:t,message:n}});function wye(e){return typeof e==`string`&&O1.includes(e)?e:O1[0]}async function Tye(e,t){if(!k1(t))return j1(null,-32600,`Invalid Request`);let n=t.id,r=typeof n==`string`||typeof n==`number`?n:void 0;if(typeof t.method!=`string`)return`result`in t||`error`in t?null:j1(r??null,-32600,`Invalid Request`);if(!(`id`in t))return null;if(r===void 0)return j1(null,-32600,`Invalid Request`);let i=k1(t.params)?t.params:{};switch(t.method){case`initialize`:return A1(r,{protocolVersion:wye(i.protocolVersion),capabilities:{tools:{listChanged:!1}},serverInfo:Cye,instructions:e.instructions});case`ping`:return A1(r,{});case`tools/list`:return A1(r,{tools:e.tools.map(e=>({name:e.name,description:e.description,inputSchema:e.inputSchema,annotations:e.annotations}))});case`tools/call`:{let t=typeof i.name==`string`?i.name:``,n=e.tools.find(e=>e.name===t);if(!n)return A1(r,{content:[{type:`text`,text:`Unknown tool: ${t}`}],isError:!0});let a=k1(i.arguments)?i.arguments:{};try{let t=await n.handler(e.api,a);return A1(r,{content:[{type:`text`,text:JSON.stringify(t)}]})}catch(e){return e instanceof E1||console.error(`MCP tool failed`,e),A1(r,{content:[{type:`text`,text:e instanceof E1?e.message:`Tool execution failed`}],isError:!0})}}default:return j1(r,-32601,`Method not found: ${t.method}`)}}async function Eye(e,t){let n=Array.isArray(t)?t:[t],r=[];for(let t of n){let n=await Tye(e,t);n&&r.push(n)}if(r.length!==0)return Array.isArray(t)?r:r[0]}var M1=`/mcp`;async function Dye(e,t){if(!e.mcp)return!1;let n;try{n=new URL(t)}catch{return!1}let r=new URL(e.ISSUER);if(!(n.protocol===`https:`||n.protocol===`http:`&&r.protocol===`http:`)||n.pathname!==`/mcp`||n.search||n.hash||n.username||n.password)return!1;let i=n.host.toLowerCase(),a=r.host.toLowerCase(),o=new URL(e.mcp.controlPlaneIssuer??e.ISSUER).host.toLowerCase();if(i===a||i===o)return!0;if(i.endsWith(`.${a}`)){let t=i.slice(0,-(a.length+1));return!t||t.includes(`.`)?!1:await e.data.tenants.get(t)!==null}return await e.data.customDomains.getByDomain(i)!==null}var N1=e=>typeof e==`string`&&e!==``?e:void 0,P1=(e,t)=>{let n=N1(e);if(!n)throw new E1(`Missing required argument: ${t}`);return n},F1=e=>typeof e==`number`&&Number.isInteger(e)?String(e):typeof e==`string`&&/^\d+$/.test(e)?e:void 0,Oye=/secret|password|private_key|api_key|(^|_)token$|^pkcs7$|^signing_keys$|^encryption_key$|^credentials$/i;function I1(e){return Array.isArray(e)?e.map(I1):typeof e==`object`&&e?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Oye.test(e)?`[redacted]`:I1(t)])):e}var L1={page:{type:`integer`,minimum:0,description:`Page index, starting at 0.`},per_page:{type:`integer`,minimum:1,maximum:100,description:`Results per page (default 50, max 100).`}},R1=e=>({page:F1(e.page),per_page:F1(e.per_page),include_totals:`true`}),kye=[{name:`list_tenants`,title:`List tenants`,description:"List the tenants you have access to. Use a returned tenant_id as the `tenant_id` argument for the other tools.",tenantScoped:!1,handler:e=>e.listTenants()},{name:`get_tenant_settings`,title:`Get tenant settings`,description:`Get a tenant's settings: name, support details, session lifetimes, flags and similar.`,tenantScoped:!0,handler:(e,t)=>e.management(e.tenantFor(t),{path:`/tenants/settings`})},{name:`list_users`,title:`List users`,description:'Search a tenant\'s users. `q` is a Lucene query such as `email:"jane@example.com"` or `name:jane*`.',tenantScoped:!0,properties:{q:{type:`string`,description:`Lucene query to filter users.`},...L1},handler:(e,t)=>e.management(e.tenantFor(t),{path:`/users`,query:{q:N1(t.q),...R1(t)}})},{name:`get_user`,title:`Get user`,description:`Get a single user by user_id, including linked identities.`,tenantScoped:!0,properties:{user_id:{type:`string`,description:"The user id, e.g. `auth0|abc123`."}},required:[`user_id`],handler:(e,t)=>e.management(e.tenantFor(t),{path:`/users/${encodeURIComponent(P1(t.user_id,`user_id`))}`})},{name:`list_clients`,title:`List applications`,description:`List a tenant's applications (clients). Secrets are redacted.`,tenantScoped:!0,properties:{...L1},handler:(e,t)=>e.management(e.tenantFor(t),{path:`/clients`,query:R1(t)})},{name:`get_client`,title:`Get application`,description:`Get a single application (client). Secrets are redacted.`,tenantScoped:!0,properties:{client_id:{type:`string`,description:`The client id.`}},required:[`client_id`],handler:(e,t)=>e.management(e.tenantFor(t),{path:`/clients/${encodeURIComponent(P1(t.client_id,`client_id`))}`})},{name:`list_connections`,title:`List connections`,description:`List a tenant's connections (database, passwordless, social, enterprise). Credentials are redacted.`,tenantScoped:!0,properties:{...L1},handler:(e,t)=>e.management(e.tenantFor(t),{path:`/connections`,query:R1(t)})},{name:`list_resource_servers`,title:`List APIs`,description:`List a tenant's APIs (resource servers) and their scopes.`,tenantScoped:!0,properties:{...L1},handler:(e,t)=>e.management(e.tenantFor(t),{path:`/resource-servers`,query:R1(t)})},{name:`list_roles`,title:`List roles`,description:`List a tenant's roles.`,tenantScoped:!0,properties:{...L1},handler:(e,t)=>e.management(e.tenantFor(t),{path:`/roles`,query:R1(t)})},{name:`search_logs`,title:`Search logs`,description:'Search a tenant\'s logs, newest first. `q` is a Lucene query such as `type:f` (failed logins) or `user_id:"auth0|abc"`.',tenantScoped:!0,properties:{q:{type:`string`,description:`Lucene query to filter log events.`},...L1},handler:(e,t)=>e.management(e.tenantFor(t),{path:`/logs`,query:{q:N1(t.q),sort:`date:-1`,...R1(t)}})}];function Aye(e){return kye.filter(t=>t.tenantScoped||!e).map(t=>{let n=t.tenantScoped&&!e,r=n?{tenant_id:{type:`string`,description:`The tenant to operate on. Call list_tenants to find the ids you can access.`},...t.properties}:{...t.properties},i=[...n?[`tenant_id`]:[],...t.required??[]];return{name:t.name,description:t.description,inputSchema:{type:`object`,properties:r,...i.length?{required:i}:{},additionalProperties:!1},annotations:{title:t.title,readOnlyHint:!0},handler:async(e,n)=>I1(await t.handler(e,n))}})}function jye(e){return e?`Read-only access to the AuthHero Management API for the tenant "${e}". Every tool operates on this tenant.`:"Read-only access to the AuthHero Management API. You may have access to several tenants. Call `list_tenants` first, then pass the chosen `tenant_id` to the other tools."}var z1=`/.well-known/oauth-protected-resource`;function B1(e,t){let n=e.env.data.multiTenancyConfig?.controlPlaneTenantId;if(!n)throw new V(500,{message:`The MCP endpoint requires a configured control plane`});let r=e.var.tenant_id;return{controlPlaneTenantId:n,controlPlaneIssuer:t.controlPlaneIssuer??e.env.ISSUER,pinnedTenantId:r&&r!==n?r:void 0}}function V1(e){let t=new URL(e.req.url),n=e.req.header(`x-forwarded-host`);if(n)return`https://${n}`;let r=e.req.header(`host`)??t.host;return`${t.protocol}//${r}`}function H1(e,t){let n=[`resource_metadata="${V1(e)}${z1}${M1}"`];return t&&n.unshift(`error="${t}"`),e.header(`WWW-Authenticate`,`Bearer ${n.join(`, `)}`),e.json({error:t??`unauthorized`},401)}function Mye(e,t){let n=new p.Hono,r=y1({origin:`*`,allowMethods:[`GET`,`POST`,`OPTIONS`],allowHeaders:[`authorization`,`content-type`,`mcp-protocol-version`,`mcp-session-id`],exposeHeaders:[`www-authenticate`]});for(let e of[M1,z1,`${z1}${M1}`])n.use(e,r,oY);for(let e of[z1,`${z1}${M1}`])n.use(e,b1);let i=t=>{let n=B1(t,e);return t.json({resource:`${V1(t)}${M1}`,authorization_servers:[n.controlPlaneIssuer],bearer_methods_supported:[`header`],scopes_supported:[`openid`,`profile`,`email`,`offline_access`],resource_name:n.pinnedTenantId?`AuthHero Management API (${n.pinnedTenantId})`:`AuthHero Management API`})};return n.get(z1,i),n.get(`${z1}${M1}`,i),n.post(M1,async n=>{let r=B1(n,e),i=$j(n.req.header(`authorization`));if(!i)return H1(n);let a;try{a=await fj(n,i,{tenantId:r.controlPlaneTenantId,skipIssuerCheck:!0})}catch(e){if(e instanceof m)return H1(n,`invalid_token`);throw e}let o=`${V1(n)}${M1}`,s=Array.isArray(a.aud)?a.aud:[a.aud];if(a.iss!==r.controlPlaneIssuer||a.tenant_id!==r.controlPlaneTenantId||!s.includes(o)||!a.sub||a.act!==void 0)return H1(n,`invalid_token`);let c;try{c=await n.req.json()}catch{return n.json(j1(null,-32700,`Parse error`),400)}let l=await Eye({api:Sye(n,t,{subjectToken:i,userId:a.sub,controlPlaneTenantId:r.controlPlaneTenantId,controlPlaneIssuer:r.controlPlaneIssuer,pinnedTenantId:r.pinnedTenantId},e),tools:Aye(r.pinnedTenantId),instructions:jye(r.pinnedTenantId)},c);return l?n.json(l):n.body(null,202)}),n.on([`GET`,`DELETE`],M1,e=>(e.header(`Allow`,`POST`),e.json({error:`method_not_allowed`},405))),n}async function U1(e,t){let{client_id:n}=t,r=t.tenant_id??e.var.tenant_id;if(!r){let t=await e.env.data.clients.getByClientId(n);if(!t)throw new V(403,{message:`Client not found`});r=t.tenant_id}let i=e.var.tenant_id,a=e.var.client_id;e.set(`tenant_id`,r),e.set(`client_id`,n);try{let[t,i]=await Promise.all([e.env.data.tenants.get(r),e.env.data.clients.get(r,n)]);if(!t)throw new V(404,{message:`Tenant not found`});if(!i)throw new V(403,{message:`Client not found`});return{tenant:t,client:i}}catch(t){throw e.set(`tenant_id`,i),e.set(`client_id`,a),t}}function W1(e,t){let n=e.var.tenant_id;if(!n){e.set(`tenant_id`,t);return}if(n!==t)throw new m(403,{message:`Tenant mismatch`})}var Nye=`try_connection_result`;function G1(e){if(!e)return{};try{let t=JSON.parse(e);return typeof t==`object`&&t?t:{}}catch{return{}}}async function K1(e,t,n,r){let i={...G1(n.state_data),[Nye]:r};await e.env.data.loginSessions.update(t,n.id,{state_data:JSON.stringify(i)});let a=n.authParams.redirect_uri;if(!a)return new Response(JSON.stringify(r,null,2),{status:r.status===`success`?200:400,headers:{"content-type":`application/json`}});let o=new URL(a);return o.searchParams.set(`state`,n.id),new Response(null,{status:302,headers:{location:o.href}})}function Pye(e){return G1(e.state_data).try_connection_result??null}async function q1(e,t,n,r,i){if(!r.state)throw new V(400,{message:`State not found`});let a=t.connections.find(e=>e.name===n);if(!a)throw e.set(`client_id`,t.client_id),await P(e,t.tenant.id,{type:M.FAILED_LOGIN,description:`Connection not found`}),new V(403,{message:`Connection Not Found`});let o=i===void 0?await e.env.data.loginSessions.get(t.tenant.id,r.state):i;if(!o){let n=e.get(`ip`),i=e.get(`useragent`),a=e.get(`auth0_client`);o=await e.env.data.loginSessions.create(t.tenant.id,{expires_at:new Date(Date.now()+qj*1e3).toISOString(),authParams:r,csrf_token:ts(),ip:n,useragent:i,auth0Client:UP(a)})}let s=await Aj(e,a.strategy).getRedirect(e,a,r.username);return await e.env.data.codes.create(t.tenant.id,{login_id:o.id,code_id:s.code,code_type:`oauth2_state`,connection_id:a.id,code_verifier:s.codeVerifier,expires_at:new Date(Date.now()+300*1e3).toISOString()}),new Response(null,{status:302,headers:{location:s.redirectUrl}})}async function Fye(e,{code:t,state:n}){let{env:r}=e,i=await r.data.codes.get(e.var.tenant_id||``,n,`oauth2_state`);if(!i||!i.connection_id||!i.login_id)throw new V(403,{message:`State not found`});let a=await r.data.loginSessions.get(e.var.tenant_id||``,i.login_id);if(!a)throw new V(403,{message:`Session not found`});let o=a.authParams.client_id;o&&!AM(o)&&await U1(e,{client_id:o,tenant_id:e.var.tenant_id||void 0}).catch(()=>{});let s=await cN(r,a.authParams.client_id);e.set(`client_id`,s.client_id),W1(e,s.tenant.id);let c=Qj(s.client_id),l=i.connection_id,u=s.connections.find(e=>e.id===l);if(!u){if(await P(e,s.tenant.id,{type:M.FAILED_LOGIN,description:`Connection not found`}),c)return K1(e,s.tenant.id,a,{status:`error`,connection_id:l,error:`connection_not_found`,error_description:`Connection not found`,completed_at:new Date().toISOString()});throw new V(403,{message:`Connection not found`})}if(e.set(`connection`,u.name),!YH(a.state_data)&&!a.authParams.redirect_uri)throw await P(e,s.tenant.id,{type:M.FAILED_LOGIN,description:`Redirect URI not defined`}),new V(403,{message:`Redirect URI not defined`});let d=Aj(e,u.strategy);if(c){let n=new Date().toISOString();try{let r=d.validateAuthorizationCodeAndGetUserWithRaw?await d.validateAuthorizationCodeAndGetUserWithRaw(e,u,t,i.code_verifier):{userinfo:await d.validateAuthorizationCodeAndGetUser(e,u,t,i.code_verifier),raw:null};return e.set(`user_id`,r.userinfo.sub),K1(e,s.tenant.id,a,{status:`success`,connection_id:l,connection_name:u.name,strategy:u.strategy,userinfo:r.userinfo,raw:r.raw,completed_at:n})}catch(t){let r=t instanceof Error?t.message:`Strategy validation failed`;return await P(e,s.tenant.id,{type:M.FAILED_LOGIN,description:`Try connection failed: ${r}`}),K1(e,s.tenant.id,a,{status:`error`,connection_id:l,connection_name:u.name,strategy:u.strategy,error:`strategy_error`,error_description:r,completed_at:n})}}let{userinfo:f,raw:p}=d.validateAuthorizationCodeAndGetUserWithRaw?await d.validateAuthorizationCodeAndGetUserWithRaw(e,u,t,i.code_verifier):{userinfo:await d.validateAuthorizationCodeAndGetUser(e,u,t,i.code_verifier),raw:null},{sub:m,...h}=f;e.set(`user_id`,m);let g={...h};if(p){let e={...p};delete e.sub,g={...e,...h}}let _=f.email?.toLocaleLowerCase()||`${u.name}.${m}@${new URL(e.env.ISSUER).hostname}`;e.set(`username`,_);let v=Zoe.has(u.strategy),y=v?`enterprise`:_a.SOCIAL,b=!v;return dK(e,{client:s,loginSession:a,user:await Ug(e,{client:s,username:_,provider:jj(u),connection:u.name,userId:m,profileData:g,isSocial:b,ip:e.var.ip,set_user_root_attributes:u.options.set_user_root_attributes}),authConnection:u.name,authStrategy:{strategy:u.strategy,strategy_type:y}})}function J1(e,t,n){let r=new URL(`/u/error`,to(e.env,e.var.custom_domain));return KG(r,{error:t,error_description:n}),e.redirect(r.toString())}async function Y1(e,t,n,r,i,a){let o=await e.env.data.codes.get(e.var.tenant_id||``,t,`oauth2_state`);if(!o||!o.login_id)return J1(e,`state_not_found`);let s=await e.env.data.loginSessions.get(e.var.tenant_id,o.login_id);if(!s)return J1(e,`session_not_found`);let{redirect_uri:c}=s.authParams;if(!c)throw new m(400,{message:`Redirect uri not found`});let l;if(s.authParams.client_id)try{l=await cN(e.env,s.authParams.client_id,e.var.tenant_id)}catch{}l&&W1(e,l.tenant.id),e.var.tenant_id&&P(e,e.var.tenant_id,{type:M.FAILED_LOGIN,description:a??`Failed connection login: ${i} ${n}, ${r}`});let u=`/u`,d=`/login/identifier`;if(l)try{if(l.client_metadata?.universal_login_version===`2`){u=`/u2`;let t=await e.env.data.promptSettings.get(e.var.tenant_id),n=oi.parse(t||{}),r=l.connections.some(e=>ya(e.strategy));n.identifier_first===!1&&r&&(d=`/login`)}}catch{}let f=new URL(`${u}${d}`,to(e.env,e.var.custom_domain));return KG(f,{state:s.id,error:n,error_description:r}),e.redirect(f.toString())}function Iye(e){if(e instanceof Error){if(`code`in e&&`description`in e){let t=e;return t.description?`${t.code}: ${t.description}`:t.code}if(`status`in e){let t=e;return`${e.message} (status: ${t.status})`}return e.message}return String(e)}async function X1(e,t){let{state:n,code:r,error:i,error_description:a,error_code:o}=t;if(i)return Y1(e,n,i,a,o);if(!r)throw new m(400,{message:`Code is required`});try{let t=await Fye(e,{code:r,state:n});if(!(t instanceof Response))throw new m(500,{message:`Internal server error`});return t}catch(t){if(t instanceof V){if(t.status===403)return J1(e,`state_not_found`);if(t.status===400){let r=await e.env.data.codes.get(e.var.tenant_id||``,n,`oauth2_state`);if(r?.login_id&&await e.env.data.loginSessions.get(e.var.tenant_id,r.login_id)){let r=`access_denied`,i=`access_denied`;try{let e=JSON.parse(t.message);r=e.error_description||e.message||r,i=e.error||i}catch{r=t.message||r}return Y1(e,n,i,r)}}}if(t instanceof m)throw t;return Y1(e,n,`connection_error`,`Connection failed`,void 0,`Connection callback failed: ${Iye(t)}`)}}var Z1=f.z.object({state:f.z.string(),code:f.z.string().optional(),scope:f.z.string().optional(),hd:f.z.string().optional(),error:f.z.string().optional(),error_description:f.z.string().optional(),error_code:f.z.string().optional(),error_reason:f.z.string().optional()});function Q1(e){return new f.OpenAPIHono().openapi((0,f.createRoute)({tags:[`oauth2`],method:`get`,path:`/`,operationId:`${e.operationIdPrefix}Get`,deprecated:e.deprecated,request:{query:Z1},responses:{302:{description:`Redirect to the client's redirect uri`},400:{description:`Bad Request`,content:{"application/json":{schema:f.z.object({message:f.z.string()})}}},500:{description:`Internal Server Error`,content:{"application/json":{schema:f.z.object({message:f.z.string()})}}}}}),async e=>X1(e,e.req.valid(`query`))).openapi((0,f.createRoute)({tags:[`oauth2`],method:`post`,path:`/`,operationId:`${e.operationIdPrefix}Post`,deprecated:e.deprecated,request:{body:{content:{"application/x-www-form-urlencoded":{schema:Z1}}}},responses:{302:{description:`Redirect to the client's redirect uri`},400:{description:`Bad Request`,content:{"application/json":{schema:f.z.object({message:f.z.string()})}}},500:{description:`Internal Server Error`,content:{"application/json":{schema:f.z.object({message:f.z.string()})}}}}}),async e=>X1(e,e.req.valid(`form`)))}var Lye=Q1({operationIdPrefix:`callback`,deprecated:!0}),Rye=Q1({operationIdPrefix:`loginCallback`});function $1(e,t=[],n={}){try{let r=new URL(e);return t.some(e=>{try{return zye(r,new URL(e),n)}catch{return!1}})}catch{return!1}}function zye(e,t,n={}){if(e.protocol!==t.protocol)return!1;let r=!!n.allowPathWildcards&&t.pathname.includes(`*`);if(r){let n=t.pathname.replace(/\*/g,`.*`).replace(/\//g,`\\/`);if(!RegExp(`^${n}$`).test(e.pathname))return!1}else if(e.pathname!==t.pathname)return!1;let i=!!n.allowSubDomainWildcards&&t.hostname.startsWith(`*.`)&&t.hostname.split(`.`).length>2&&[`http:`,`https:`].includes(t.protocol),a=!r&&!i;for(let n of new Set(t.searchParams.keys())){let r=t.searchParams.getAll(n).sort(),i=e.searchParams.getAll(n);if(a){let e=i.slice().sort();if(r.length!==e.length||!r.every((t,n)=>t===e[n]))return!1}else{let e=i.slice();for(let t of r){let n=e.indexOf(t);if(n===-1)return!1;e.splice(n,1)}}}if(a){for(let n of e.searchParams.keys())if(!t.searchParams.has(n))return!1}if(i){let n=t.hostname.split(`.`).slice(1).join(`.`);return e.hostname===n||e.hostname.endsWith(`.`+n)}return e.hostname===t.hostname}function e0({title:e,message:t,statusCode:n,variant:r=`error`,action:i,lang:a=`en`,branding:o,theme:s,darkMode:c=`auto`,extraScript:l,embed:u=!1}){let d=r===`info`,f=r===`success`,p=r===`error`,m=e??(f?`Success`:d?`Information`:`Something went wrong`),h=Sf(s?.page_background,o?.colors?.page_background),g=bf(o?.favicon_url),_=bf(o?.font?.url),v=bf(o?.logo_url),y=xf(s?.colors?.widget_background)||`#ffffff`,b=s?.borders?.widget_corner_radius??16,x=s?.borders?.show_widget_shadow!==!1,S=xf(s?.colors?.error)||`#DC2626`,ee=xf(s?.colors?.primary_button)||xf(o?.colors?.primary)||`#2563EB`,C=xf(s?.colors?.success)||`#16A34A`,w=f?C:d?ee:S,te=i?Bre(i.href):void 0,T=xf(s?.colors?.primary_button_label)||`#ffffff`,ne=s?.borders?.button_border_radius??8;return B(`html`,{lang:a,class:c===`dark`?`ah-dark-mode`:c===`light`?`ah-light-mode`:void 0,children:[B(`head`,{children:[B(`meta`,{charSet:`UTF-8`}),B(`meta`,{name:`viewport`,content:`width=device-width, initial-scale=1.0`}),B(`title`,{children:p?`Error - ${n}`:m}),g&&B(`link`,{rel:`icon`,href:g}),_&&B(`link`,{rel:`stylesheet`,href:_}),B(`style`,{dangerouslySetInnerHTML:{__html:`
|
|
3350
3350
|
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
3351
3351
|
body {
|