[
  {
    "path": ".gitattributes",
    "content": "*.ftl linguist-detectable=false\n*.css linguist-detectable=false\n"
  },
  {
    "path": ".gitignore",
    "content": "# Customize with https://github.com/github/gitignore\n\n# compiled output\n/dist\n/tmp\n/out-tsc\n/node\n/build\n/out\ntarget/\ndist/\n\n.gradle\n\n# dependencies\n/node_modules\n.vertx\n\n# IDEs and editors\n*.iml\n/.idea\n.project\n.classpath\n.c9/\n*.launch\n.settings/\n*.sublime-workspace\n\n# IDE - VSCode\n.vscode/*\n!.vscode/settings.json\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json\n\n# misc\n/.sass-cache\n/connect.lock\n/coverage\n/libpeerconnection.log\nnpm-debug.log\ntestem.log\n/typings\n\n# e2e\n/e2e/*.js\n/e2e/*.map\n\n# System Files\n.DS_Store\nThumbs.db\n"
  },
  {
    "path": ".mvn/wrapper/MavenWrapperDownloader.java",
    "content": "/*\n * Copyright 2007-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport java.net.*;\nimport java.io.*;\nimport java.nio.channels.*;\nimport java.util.Properties;\n\npublic class MavenWrapperDownloader {\n\n    private static final String WRAPPER_VERSION = \"0.5.6\";\n    /**\n     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.\n     */\n    private static final String DEFAULT_DOWNLOAD_URL = \"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/\"\n        + WRAPPER_VERSION + \"/maven-wrapper-\" + WRAPPER_VERSION + \".jar\";\n\n    /**\n     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to\n     * use instead of the default one.\n     */\n    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =\n            \".mvn/wrapper/maven-wrapper.properties\";\n\n    /**\n     * Path where the maven-wrapper.jar will be saved to.\n     */\n    private static final String MAVEN_WRAPPER_JAR_PATH =\n            \".mvn/wrapper/maven-wrapper.jar\";\n\n    /**\n     * Name of the property which should be used to override the default download url for the wrapper.\n     */\n    private static final String PROPERTY_NAME_WRAPPER_URL = \"wrapperUrl\";\n\n    public static void main(String args[]) {\n        System.out.println(\"- Downloader started\");\n        File baseDirectory = new File(args[0]);\n        System.out.println(\"- Using base directory: \" + baseDirectory.getAbsolutePath());\n\n        // If the maven-wrapper.properties exists, read it and check if it contains a custom\n        // wrapperUrl parameter.\n        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);\n        String url = DEFAULT_DOWNLOAD_URL;\n        if(mavenWrapperPropertyFile.exists()) {\n            FileInputStream mavenWrapperPropertyFileInputStream = null;\n            try {\n                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);\n                Properties mavenWrapperProperties = new Properties();\n                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);\n                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);\n            } catch (IOException e) {\n                System.out.println(\"- ERROR loading '\" + MAVEN_WRAPPER_PROPERTIES_PATH + \"'\");\n            } finally {\n                try {\n                    if(mavenWrapperPropertyFileInputStream != null) {\n                        mavenWrapperPropertyFileInputStream.close();\n                    }\n                } catch (IOException e) {\n                    // Ignore ...\n                }\n            }\n        }\n        System.out.println(\"- Downloading from: \" + url);\n\n        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);\n        if(!outputFile.getParentFile().exists()) {\n            if(!outputFile.getParentFile().mkdirs()) {\n                System.out.println(\n                        \"- ERROR creating output directory '\" + outputFile.getParentFile().getAbsolutePath() + \"'\");\n            }\n        }\n        System.out.println(\"- Downloading to: \" + outputFile.getAbsolutePath());\n        try {\n            downloadFileFromURL(url, outputFile);\n            System.out.println(\"Done\");\n            System.exit(0);\n        } catch (Throwable e) {\n            System.out.println(\"- Error downloading\");\n            e.printStackTrace();\n            System.exit(1);\n        }\n    }\n\n    private static void downloadFileFromURL(String urlString, File destination) throws Exception {\n        if (System.getenv(\"MVNW_USERNAME\") != null && System.getenv(\"MVNW_PASSWORD\") != null) {\n            String username = System.getenv(\"MVNW_USERNAME\");\n            char[] password = System.getenv(\"MVNW_PASSWORD\").toCharArray();\n            Authenticator.setDefault(new Authenticator() {\n                @Override\n                protected PasswordAuthentication getPasswordAuthentication() {\n                    return new PasswordAuthentication(username, password);\n                }\n            });\n        }\n        URL website = new URL(urlString);\n        ReadableByteChannel rbc;\n        rbc = Channels.newChannel(website.openStream());\n        FileOutputStream fos = new FileOutputStream(destination);\n        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);\n        fos.close();\n        rbc.close();\n    }\n\n}\n"
  },
  {
    "path": ".mvn/wrapper/maven-wrapper.properties",
    "content": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip\nwrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar\n"
  },
  {
    "path": "README.md",
    "content": "# Keycloak extensions\n\n**This repo is no longer maintained**\n\nKeycloak extension examples.  \nTitles with * are already activated when running `docker-compose up`\n\n* [provider-domain](provider-domain/README.md) *\n  * example of adding new domain entities  \n* [spi-event-listener](spi-event-listener/README.md) *\n  * example of a custom event listener\n* [spi-mail-template-override](spi-mail-template-override/README.md) *\n  * example on how to change default mail behaviour and add extra variables to it.\n* [spi-registration-profile](spi-registration-profile/README.md)\n  * disable first and last name validation in the registration page\n* [spi-resource](spi-resource/README.md) *\n  * example of a custom REST resource\n* [theme-minimal](theme-minimal/README.md) *\n  * a custom theme with minimal changes\n\n## Build\n\nBuild all\n\n    ./mvnw clean install\n\nBuild single module\n\n    ./mvnw clean install -pl provider-domain\n    ./mvnw clean install -pl spi-event-listener\n    ./mvnw clean install -pl spi-mail-template-override\n    ./mvnw clean install -pl spi-registration-profile\n    ./mvnw clean install -pl spi-resource\n    ./mvnw clean install -pl theme-minimal\n\n## Run with Docker Compose\n\nYou need to build all modules first because we mount the jars in the docker-compose file\n\nRun\n\n    docker-compose up\n\nStop\n\n    CTRL + C\n    docker-compose down    \n\n* Keycloak admin will be available on http://localhost:8088/auth/\n  * User -> admin\n  * Password -> password\n* A placeholder realm is available on http://localhost:8088/auth/realms/placeholder\n  * users\n    * james@placeholder.com\n    * jennifer@placeholder.com\n    * john@placeholder.com\n    * mary@placeholder.com\n    * patricia@placeholder.com\n    * robert@placeholder.com\n  * Password is always 'password' for those users\n  * a realm role product_view is available and assigned to robert@placeholder.com\n  * 2 clients are available under this realm\n    * client-one - public with Direct Access Grants Enabled\n    * client-two - public with Direct Access Grants Enabled\n* Mailhog will be available on http://localhost:8025/\n\n## Export realms and users\n\n* Run `docker-compose up`\n* Make your changes in Keycloak\n* Press `CTRL + C ` but do NOT run docker-compose down\n* Uncomment the `-Dkeycloak.migration.action=export...` under commands in the docker-compose file.  \n* Comment the `-Dkeycloak.migration.action=import` under commands in the docker-compose file.\n* Run `docker-compose up`\n* all realms and users will be exported in the `_resources/demo-config/export-dir`\n* You can now run `docker-compose down` and revert the changes you made to the docker-compose file\n* Copy the contents of the export dir to the import dir if you want to replace them\n\n## Other resources\n\nDon't forget to look in the actual Keycloak code itself because the examples are based on the implementations itself.\n\n* https://github.com/keycloak\n* https://github.com/keycloak/keycloak/tree/master/examples\n* https://www.keycloak.org/docs/latest/server_development/\n* https://github.com/thomasdarimont/keycloak-extension-playground\n"
  },
  {
    "path": "_resources/demo-config/export-dir/.gitkeep",
    "content": ""
  },
  {
    "path": "_resources/demo-config/import-dir/master-realm.json",
    "content": "{\n  \"id\" : \"master\",\n  \"realm\" : \"master\",\n  \"displayName\" : \"Keycloak\",\n  \"displayNameHtml\" : \"<div class=\\\"kc-logo-text\\\"><span>Keycloak</span></div>\",\n  \"notBefore\" : 0,\n  \"revokeRefreshToken\" : false,\n  \"refreshTokenMaxReuse\" : 0,\n  \"accessTokenLifespan\" : 60,\n  \"accessTokenLifespanForImplicitFlow\" : 900,\n  \"ssoSessionIdleTimeout\" : 1800,\n  \"ssoSessionMaxLifespan\" : 36000,\n  \"ssoSessionIdleTimeoutRememberMe\" : 0,\n  \"ssoSessionMaxLifespanRememberMe\" : 0,\n  \"offlineSessionIdleTimeout\" : 2592000,\n  \"offlineSessionMaxLifespanEnabled\" : false,\n  \"offlineSessionMaxLifespan\" : 5184000,\n  \"clientSessionIdleTimeout\" : 0,\n  \"clientSessionMaxLifespan\" : 0,\n  \"clientOfflineSessionIdleTimeout\" : 0,\n  \"clientOfflineSessionMaxLifespan\" : 0,\n  \"accessCodeLifespan\" : 60,\n  \"accessCodeLifespanUserAction\" : 300,\n  \"accessCodeLifespanLogin\" : 1800,\n  \"actionTokenGeneratedByAdminLifespan\" : 43200,\n  \"actionTokenGeneratedByUserLifespan\" : 300,\n  \"enabled\" : true,\n  \"sslRequired\" : \"external\",\n  \"registrationAllowed\" : false,\n  \"registrationEmailAsUsername\" : false,\n  \"rememberMe\" : false,\n  \"verifyEmail\" : false,\n  \"loginWithEmailAllowed\" : true,\n  \"duplicateEmailsAllowed\" : false,\n  \"resetPasswordAllowed\" : false,\n  \"editUsernameAllowed\" : false,\n  \"bruteForceProtected\" : false,\n  \"permanentLockout\" : false,\n  \"maxFailureWaitSeconds\" : 900,\n  \"minimumQuickLoginWaitSeconds\" : 60,\n  \"waitIncrementSeconds\" : 60,\n  \"quickLoginCheckMilliSeconds\" : 1000,\n  \"maxDeltaTimeSeconds\" : 43200,\n  \"failureFactor\" : 30,\n  \"roles\" : {\n    \"realm\" : [ {\n      \"id\" : \"d3c4feab-b112-49c3-b467-39f6f766dbfc\",\n      \"name\" : \"admin\",\n      \"description\" : \"${role_admin}\",\n      \"composite\" : true,\n      \"composites\" : {\n        \"realm\" : [ \"create-realm\" ],\n        \"client\" : {\n          \"placeholder-realm\" : [ \"manage-authorization\", \"impersonation\", \"manage-clients\", \"manage-events\", \"manage-users\", \"view-events\", \"manage-realm\", \"query-clients\", \"view-users\", \"create-client\", \"query-realms\", \"view-clients\", \"view-authorization\", \"query-users\", \"view-identity-providers\", \"view-realm\", \"manage-identity-providers\", \"query-groups\" ],\n          \"master-realm\" : [ \"manage-identity-providers\", \"view-users\", \"manage-users\", \"view-clients\", \"query-users\", \"manage-clients\", \"query-groups\", \"view-realm\", \"view-identity-providers\", \"manage-authorization\", \"manage-events\", \"view-authorization\", \"impersonation\", \"create-client\", \"query-clients\", \"manage-realm\", \"view-events\", \"query-realms\" ]\n        }\n      },\n      \"clientRole\" : false,\n      \"containerId\" : \"master\",\n      \"attributes\" : { }\n    }, {\n      \"id\" : \"3f2b4595-a234-4af7-b0df-d1d507918175\",\n      \"name\" : \"uma_authorization\",\n      \"description\" : \"${role_uma_authorization}\",\n      \"composite\" : false,\n      \"clientRole\" : false,\n      \"containerId\" : \"master\",\n      \"attributes\" : { }\n    }, {\n      \"id\" : \"981fa07e-a331-4d58-8556-341ce1a5c19d\",\n      \"name\" : \"create-realm\",\n      \"description\" : \"${role_create-realm}\",\n      \"composite\" : false,\n      \"clientRole\" : false,\n      \"containerId\" : \"master\",\n      \"attributes\" : { }\n    }, {\n      \"id\" : \"ac747403-1d82-46bf-a57e-55a58a8bfaaa\",\n      \"name\" : \"offline_access\",\n      \"description\" : \"${role_offline-access}\",\n      \"composite\" : false,\n      \"clientRole\" : false,\n      \"containerId\" : \"master\",\n      \"attributes\" : { }\n    } ],\n    \"client\" : {\n      \"security-admin-console\" : [ ],\n      \"placeholder-realm\" : [ {\n        \"id\" : \"65d55dea-9b3f-4f71-9fbe-0c8a2915fd60\",\n        \"name\" : \"manage-authorization\",\n        \"description\" : \"${role_manage-authorization}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"be1aba71-d1c5-44c4-8d3d-1d3f4ec001bb\",\n        \"name\" : \"impersonation\",\n        \"description\" : \"${role_impersonation}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"87ba9aee-ce2e-47ac-850c-fa7aa72043f4\",\n        \"name\" : \"manage-clients\",\n        \"description\" : \"${role_manage-clients}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"95e28cf6-7fc3-40e9-82a4-b126af272c4c\",\n        \"name\" : \"create-client\",\n        \"description\" : \"${role_create-client}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"f004e4e8-927e-4e15-b221-d0cfedc72f76\",\n        \"name\" : \"query-realms\",\n        \"description\" : \"${role_query-realms}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"6725e72c-4dba-4d4e-b788-ea90aa2d4bc5\",\n        \"name\" : \"view-clients\",\n        \"description\" : \"${role_view-clients}\",\n        \"composite\" : true,\n        \"composites\" : {\n          \"client\" : {\n            \"placeholder-realm\" : [ \"query-clients\" ]\n          }\n        },\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"4b5e33f8-4fe8-4375-863a-34838c656893\",\n        \"name\" : \"view-authorization\",\n        \"description\" : \"${role_view-authorization}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"ebd8d10f-0ea9-42b3-9842-0a2cdc8a5563\",\n        \"name\" : \"manage-events\",\n        \"description\" : \"${role_manage-events}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"a9bbc527-8bfa-41c5-ac6b-b01a86bd2513\",\n        \"name\" : \"query-users\",\n        \"description\" : \"${role_query-users}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"1d8e33fe-5ed0-4e28-89ed-9c0a2d0ada65\",\n        \"name\" : \"manage-users\",\n        \"description\" : \"${role_manage-users}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"ba7f4ce3-9387-4144-984c-9188eb578674\",\n        \"name\" : \"view-events\",\n        \"description\" : \"${role_view-events}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"43e5dc26-c152-4afe-84b5-c5895ebaf447\",\n        \"name\" : \"view-identity-providers\",\n        \"description\" : \"${role_view-identity-providers}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"f2f55597-493a-48c1-b21a-9ffcf8f29dee\",\n        \"name\" : \"manage-realm\",\n        \"description\" : \"${role_manage-realm}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"72af326d-04c4-4d85-9b8e-ab48f99510f3\",\n        \"name\" : \"view-realm\",\n        \"description\" : \"${role_view-realm}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"c9c68dae-7962-4482-9218-f1f5abf035d4\",\n        \"name\" : \"query-clients\",\n        \"description\" : \"${role_query-clients}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"676ac518-4124-49fd-9976-fb702c126f7e\",\n        \"name\" : \"manage-identity-providers\",\n        \"description\" : \"${role_manage-identity-providers}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"8a3b8cb2-d3f7-4d5a-91b5-e7984e83510d\",\n        \"name\" : \"view-users\",\n        \"description\" : \"${role_view-users}\",\n        \"composite\" : true,\n        \"composites\" : {\n          \"client\" : {\n            \"placeholder-realm\" : [ \"query-users\", \"query-groups\" ]\n          }\n        },\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"e8f9f00f-2237-404a-ba5e-7984b4066e63\",\n        \"name\" : \"query-groups\",\n        \"description\" : \"${role_query-groups}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n        \"attributes\" : { }\n      } ],\n      \"admin-cli\" : [ ],\n      \"account-console\" : [ ],\n      \"broker\" : [ {\n        \"id\" : \"30c0b1d3-e072-4868-be6a-dad0d1d88226\",\n        \"name\" : \"read-token\",\n        \"description\" : \"${role_read-token}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"4cdbad2e-c9c3-42d8-ac2f-abb297f5d29b\",\n        \"attributes\" : { }\n      } ],\n      \"master-realm\" : [ {\n        \"id\" : \"9ea8941a-6d9a-4c4b-b4ff-a3f15514232d\",\n        \"name\" : \"view-authorization\",\n        \"description\" : \"${role_view-authorization}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"c70b858b-1122-43ca-881c-473861f48646\",\n        \"name\" : \"manage-identity-providers\",\n        \"description\" : \"${role_manage-identity-providers}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"b49d526c-14d7-40a8-ae70-9487ac927eed\",\n        \"name\" : \"impersonation\",\n        \"description\" : \"${role_impersonation}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"5ba1c4d1-9b89-4230-8f6e-715a8cdf6806\",\n        \"name\" : \"view-users\",\n        \"description\" : \"${role_view-users}\",\n        \"composite\" : true,\n        \"composites\" : {\n          \"client\" : {\n            \"master-realm\" : [ \"query-groups\", \"query-users\" ]\n          }\n        },\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"44513b89-28ae-45ce-bc09-3d17c88fda8d\",\n        \"name\" : \"manage-users\",\n        \"description\" : \"${role_manage-users}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"e9f86aef-83e2-49d9-b8fb-52694c86ad84\",\n        \"name\" : \"create-client\",\n        \"description\" : \"${role_create-client}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"9f69d69f-511a-490b-be8c-d4db50910ea8\",\n        \"name\" : \"view-clients\",\n        \"description\" : \"${role_view-clients}\",\n        \"composite\" : true,\n        \"composites\" : {\n          \"client\" : {\n            \"master-realm\" : [ \"query-clients\" ]\n          }\n        },\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"69563566-f4d6-4036-9de5-0c2a36ca6174\",\n        \"name\" : \"query-users\",\n        \"description\" : \"${role_query-users}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"0ed4174a-a216-4fea-84dd-888feeec49f0\",\n        \"name\" : \"query-clients\",\n        \"description\" : \"${role_query-clients}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"d8bb2fad-fce9-49b0-9610-62d5bfdcf3f2\",\n        \"name\" : \"manage-clients\",\n        \"description\" : \"${role_manage-clients}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"d0269965-64c8-4e3f-9015-17f96f4f143a\",\n        \"name\" : \"query-groups\",\n        \"description\" : \"${role_query-groups}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"2a53d41c-ffb9-48de-9a9e-765b8f4cf83c\",\n        \"name\" : \"manage-realm\",\n        \"description\" : \"${role_manage-realm}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"52a27df2-10ca-4ee7-9204-36a2dbb2d34d\",\n        \"name\" : \"view-realm\",\n        \"description\" : \"${role_view-realm}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"989ecbac-d9ab-4ab7-96b3-58658797957e\",\n        \"name\" : \"view-identity-providers\",\n        \"description\" : \"${role_view-identity-providers}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"775136eb-c43c-4a0b-bdd9-4fd9e4c51ee9\",\n        \"name\" : \"view-events\",\n        \"description\" : \"${role_view-events}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"8d75c943-7e7d-48f7-a03c-ecdaad1e4265\",\n        \"name\" : \"manage-authorization\",\n        \"description\" : \"${role_manage-authorization}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"cfb7bca2-e44b-4c3c-8889-2fcbee4b72aa\",\n        \"name\" : \"manage-events\",\n        \"description\" : \"${role_manage-events}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"0a1d5dd7-3046-40da-b733-7b9ef4358afd\",\n        \"name\" : \"query-realms\",\n        \"description\" : \"${role_query-realms}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n        \"attributes\" : { }\n      } ],\n      \"account\" : [ {\n        \"id\" : \"db72c5c2-1458-45dd-be67-a4460e9332bd\",\n        \"name\" : \"view-consent\",\n        \"description\" : \"${role_view-consent}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"289cc92e-2edf-45c4-9efb-f7db4229e240\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"6e399309-298b-48df-a5aa-ac0737c01358\",\n        \"name\" : \"manage-consent\",\n        \"description\" : \"${role_manage-consent}\",\n        \"composite\" : true,\n        \"composites\" : {\n          \"client\" : {\n            \"account\" : [ \"view-consent\" ]\n          }\n        },\n        \"clientRole\" : true,\n        \"containerId\" : \"289cc92e-2edf-45c4-9efb-f7db4229e240\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"c0c5a82c-b5f7-427b-8e57-8e1a94445fc1\",\n        \"name\" : \"view-applications\",\n        \"description\" : \"${role_view-applications}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"289cc92e-2edf-45c4-9efb-f7db4229e240\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"b4269015-6b78-4785-ae30-8f5d59e46fc4\",\n        \"name\" : \"manage-account\",\n        \"description\" : \"${role_manage-account}\",\n        \"composite\" : true,\n        \"composites\" : {\n          \"client\" : {\n            \"account\" : [ \"manage-account-links\" ]\n          }\n        },\n        \"clientRole\" : true,\n        \"containerId\" : \"289cc92e-2edf-45c4-9efb-f7db4229e240\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"ac209ae9-8d28-4e0f-a6fd-871aea7bf5c2\",\n        \"name\" : \"manage-account-links\",\n        \"description\" : \"${role_manage-account-links}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"289cc92e-2edf-45c4-9efb-f7db4229e240\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"74e0a960-25b1-4f89-8be3-6dfaad51bcad\",\n        \"name\" : \"view-profile\",\n        \"description\" : \"${role_view-profile}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"289cc92e-2edf-45c4-9efb-f7db4229e240\",\n        \"attributes\" : { }\n      } ]\n    }\n  },\n  \"groups\" : [ ],\n  \"defaultRoles\" : [ \"uma_authorization\", \"offline_access\" ],\n  \"requiredCredentials\" : [ \"password\" ],\n  \"otpPolicyType\" : \"totp\",\n  \"otpPolicyAlgorithm\" : \"HmacSHA1\",\n  \"otpPolicyInitialCounter\" : 0,\n  \"otpPolicyDigits\" : 6,\n  \"otpPolicyLookAheadWindow\" : 1,\n  \"otpPolicyPeriod\" : 30,\n  \"otpSupportedApplications\" : [ \"FreeOTP\", \"Google Authenticator\" ],\n  \"webAuthnPolicyRpEntityName\" : \"keycloak\",\n  \"webAuthnPolicySignatureAlgorithms\" : [ \"ES256\" ],\n  \"webAuthnPolicyRpId\" : \"\",\n  \"webAuthnPolicyAttestationConveyancePreference\" : \"not specified\",\n  \"webAuthnPolicyAuthenticatorAttachment\" : \"not specified\",\n  \"webAuthnPolicyRequireResidentKey\" : \"not specified\",\n  \"webAuthnPolicyUserVerificationRequirement\" : \"not specified\",\n  \"webAuthnPolicyCreateTimeout\" : 0,\n  \"webAuthnPolicyAvoidSameAuthenticatorRegister\" : false,\n  \"webAuthnPolicyAcceptableAaguids\" : [ ],\n  \"webAuthnPolicyPasswordlessRpEntityName\" : \"keycloak\",\n  \"webAuthnPolicyPasswordlessSignatureAlgorithms\" : [ \"ES256\" ],\n  \"webAuthnPolicyPasswordlessRpId\" : \"\",\n  \"webAuthnPolicyPasswordlessAttestationConveyancePreference\" : \"not specified\",\n  \"webAuthnPolicyPasswordlessAuthenticatorAttachment\" : \"not specified\",\n  \"webAuthnPolicyPasswordlessRequireResidentKey\" : \"not specified\",\n  \"webAuthnPolicyPasswordlessUserVerificationRequirement\" : \"not specified\",\n  \"webAuthnPolicyPasswordlessCreateTimeout\" : 0,\n  \"webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister\" : false,\n  \"webAuthnPolicyPasswordlessAcceptableAaguids\" : [ ],\n  \"scopeMappings\" : [ {\n    \"clientScope\" : \"offline_access\",\n    \"roles\" : [ \"offline_access\" ]\n  } ],\n  \"clientScopeMappings\" : {\n    \"account\" : [ {\n      \"client\" : \"account-console\",\n      \"roles\" : [ \"manage-account\" ]\n    } ]\n  },\n  \"clients\" : [ {\n    \"id\" : \"289cc92e-2edf-45c4-9efb-f7db4229e240\",\n    \"clientId\" : \"account\",\n    \"name\" : \"${client_account}\",\n    \"rootUrl\" : \"${authBaseUrl}\",\n    \"baseUrl\" : \"/realms/master/account/\",\n    \"surrogateAuthRequired\" : false,\n    \"enabled\" : true,\n    \"alwaysDisplayInConsole\" : false,\n    \"clientAuthenticatorType\" : \"client-secret\",\n    \"secret\" : \"aaf5c557-e731-4e43-bd9c-6502dd6c8b77\",\n    \"defaultRoles\" : [ \"manage-account\", \"view-profile\" ],\n    \"redirectUris\" : [ \"/realms/master/account/*\" ],\n    \"webOrigins\" : [ ],\n    \"notBefore\" : 0,\n    \"bearerOnly\" : false,\n    \"consentRequired\" : false,\n    \"standardFlowEnabled\" : true,\n    \"implicitFlowEnabled\" : false,\n    \"directAccessGrantsEnabled\" : false,\n    \"serviceAccountsEnabled\" : false,\n    \"publicClient\" : false,\n    \"frontchannelLogout\" : false,\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : { },\n    \"authenticationFlowBindingOverrides\" : { },\n    \"fullScopeAllowed\" : false,\n    \"nodeReRegistrationTimeout\" : 0,\n    \"defaultClientScopes\" : [ \"web-origins\", \"role_list\", \"profile\", \"roles\", \"email\" ],\n    \"optionalClientScopes\" : [ \"address\", \"phone\", \"offline_access\", \"microprofile-jwt\" ]\n  }, {\n    \"id\" : \"58c97982-5457-4825-9c49-46f74343a98a\",\n    \"clientId\" : \"account-console\",\n    \"name\" : \"${client_account-console}\",\n    \"rootUrl\" : \"${authBaseUrl}\",\n    \"baseUrl\" : \"/realms/master/account/\",\n    \"surrogateAuthRequired\" : false,\n    \"enabled\" : true,\n    \"alwaysDisplayInConsole\" : false,\n    \"clientAuthenticatorType\" : \"client-secret\",\n    \"secret\" : \"50ee17ab-e95e-4bc9-8051-6d3407e76bfc\",\n    \"redirectUris\" : [ \"/realms/master/account/*\" ],\n    \"webOrigins\" : [ ],\n    \"notBefore\" : 0,\n    \"bearerOnly\" : false,\n    \"consentRequired\" : false,\n    \"standardFlowEnabled\" : true,\n    \"implicitFlowEnabled\" : false,\n    \"directAccessGrantsEnabled\" : false,\n    \"serviceAccountsEnabled\" : false,\n    \"publicClient\" : true,\n    \"frontchannelLogout\" : false,\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"pkce.code.challenge.method\" : \"S256\"\n    },\n    \"authenticationFlowBindingOverrides\" : { },\n    \"fullScopeAllowed\" : false,\n    \"nodeReRegistrationTimeout\" : 0,\n    \"protocolMappers\" : [ {\n      \"id\" : \"38a0de05-4ce1-416b-8cb1-2851047a4b7c\",\n      \"name\" : \"audience resolve\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-audience-resolve-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : { }\n    } ],\n    \"defaultClientScopes\" : [ \"web-origins\", \"role_list\", \"profile\", \"roles\", \"email\" ],\n    \"optionalClientScopes\" : [ \"address\", \"phone\", \"offline_access\", \"microprofile-jwt\" ]\n  }, {\n    \"id\" : \"72c49e6c-d6d8-4dd3-a745-1770a4fc4b4b\",\n    \"clientId\" : \"admin-cli\",\n    \"name\" : \"${client_admin-cli}\",\n    \"surrogateAuthRequired\" : false,\n    \"enabled\" : true,\n    \"alwaysDisplayInConsole\" : false,\n    \"clientAuthenticatorType\" : \"client-secret\",\n    \"secret\" : \"eecb9c19-bd56-41e7-8c2f-a61903590847\",\n    \"redirectUris\" : [ ],\n    \"webOrigins\" : [ ],\n    \"notBefore\" : 0,\n    \"bearerOnly\" : false,\n    \"consentRequired\" : false,\n    \"standardFlowEnabled\" : false,\n    \"implicitFlowEnabled\" : false,\n    \"directAccessGrantsEnabled\" : true,\n    \"serviceAccountsEnabled\" : false,\n    \"publicClient\" : true,\n    \"frontchannelLogout\" : false,\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : { },\n    \"authenticationFlowBindingOverrides\" : { },\n    \"fullScopeAllowed\" : false,\n    \"nodeReRegistrationTimeout\" : 0,\n    \"defaultClientScopes\" : [ \"web-origins\", \"role_list\", \"profile\", \"roles\", \"email\" ],\n    \"optionalClientScopes\" : [ \"address\", \"phone\", \"offline_access\", \"microprofile-jwt\" ]\n  }, {\n    \"id\" : \"4cdbad2e-c9c3-42d8-ac2f-abb297f5d29b\",\n    \"clientId\" : \"broker\",\n    \"name\" : \"${client_broker}\",\n    \"surrogateAuthRequired\" : false,\n    \"enabled\" : true,\n    \"alwaysDisplayInConsole\" : false,\n    \"clientAuthenticatorType\" : \"client-secret\",\n    \"secret\" : \"051ef83b-8c5a-4a37-9d3a-f4783eb17fa3\",\n    \"redirectUris\" : [ ],\n    \"webOrigins\" : [ ],\n    \"notBefore\" : 0,\n    \"bearerOnly\" : false,\n    \"consentRequired\" : false,\n    \"standardFlowEnabled\" : true,\n    \"implicitFlowEnabled\" : false,\n    \"directAccessGrantsEnabled\" : false,\n    \"serviceAccountsEnabled\" : false,\n    \"publicClient\" : false,\n    \"frontchannelLogout\" : false,\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : { },\n    \"authenticationFlowBindingOverrides\" : { },\n    \"fullScopeAllowed\" : false,\n    \"nodeReRegistrationTimeout\" : 0,\n    \"defaultClientScopes\" : [ \"web-origins\", \"role_list\", \"profile\", \"roles\", \"email\" ],\n    \"optionalClientScopes\" : [ \"address\", \"phone\", \"offline_access\", \"microprofile-jwt\" ]\n  }, {\n    \"id\" : \"53067549-1a47-4ce8-ab6b-dffa5899e804\",\n    \"clientId\" : \"master-realm\",\n    \"name\" : \"master Realm\",\n    \"surrogateAuthRequired\" : false,\n    \"enabled\" : true,\n    \"alwaysDisplayInConsole\" : false,\n    \"clientAuthenticatorType\" : \"client-secret\",\n    \"secret\" : \"b6d8a7bd-7ec1-4b63-9f30-c04bc291e308\",\n    \"redirectUris\" : [ ],\n    \"webOrigins\" : [ ],\n    \"notBefore\" : 0,\n    \"bearerOnly\" : true,\n    \"consentRequired\" : false,\n    \"standardFlowEnabled\" : true,\n    \"implicitFlowEnabled\" : false,\n    \"directAccessGrantsEnabled\" : false,\n    \"serviceAccountsEnabled\" : false,\n    \"publicClient\" : false,\n    \"frontchannelLogout\" : false,\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : { },\n    \"authenticationFlowBindingOverrides\" : { },\n    \"fullScopeAllowed\" : true,\n    \"nodeReRegistrationTimeout\" : 0,\n    \"defaultClientScopes\" : [ \"web-origins\", \"role_list\", \"profile\", \"roles\", \"email\" ],\n    \"optionalClientScopes\" : [ \"address\", \"phone\", \"offline_access\", \"microprofile-jwt\" ]\n  }, {\n    \"id\" : \"9260ed69-b3f7-44cc-a6f2-7eaec8bb0f10\",\n    \"clientId\" : \"placeholder-realm\",\n    \"name\" : \"placeholder Realm\",\n    \"surrogateAuthRequired\" : false,\n    \"enabled\" : true,\n    \"alwaysDisplayInConsole\" : false,\n    \"clientAuthenticatorType\" : \"client-secret\",\n    \"secret\" : \"ea6aea78-ca76-40f7-9f72-1ad9d727f7c8\",\n    \"redirectUris\" : [ ],\n    \"webOrigins\" : [ ],\n    \"notBefore\" : 0,\n    \"bearerOnly\" : true,\n    \"consentRequired\" : false,\n    \"standardFlowEnabled\" : true,\n    \"implicitFlowEnabled\" : false,\n    \"directAccessGrantsEnabled\" : false,\n    \"serviceAccountsEnabled\" : false,\n    \"publicClient\" : false,\n    \"frontchannelLogout\" : false,\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : { },\n    \"authenticationFlowBindingOverrides\" : { },\n    \"fullScopeAllowed\" : true,\n    \"nodeReRegistrationTimeout\" : 0,\n    \"defaultClientScopes\" : [ \"web-origins\", \"role_list\", \"profile\", \"roles\", \"email\" ],\n    \"optionalClientScopes\" : [ \"address\", \"phone\", \"offline_access\", \"microprofile-jwt\" ]\n  }, {\n    \"id\" : \"0fe9d02c-f7b5-45e8-9a27-c5bd2488ef7e\",\n    \"clientId\" : \"security-admin-console\",\n    \"name\" : \"${client_security-admin-console}\",\n    \"rootUrl\" : \"${authAdminUrl}\",\n    \"baseUrl\" : \"/admin/master/console/\",\n    \"surrogateAuthRequired\" : false,\n    \"enabled\" : true,\n    \"alwaysDisplayInConsole\" : false,\n    \"clientAuthenticatorType\" : \"client-secret\",\n    \"secret\" : \"7b1f48e1-85ae-46a0-8097-504e90c89c8d\",\n    \"redirectUris\" : [ \"/admin/master/console/*\" ],\n    \"webOrigins\" : [ \"+\" ],\n    \"notBefore\" : 0,\n    \"bearerOnly\" : false,\n    \"consentRequired\" : false,\n    \"standardFlowEnabled\" : true,\n    \"implicitFlowEnabled\" : false,\n    \"directAccessGrantsEnabled\" : false,\n    \"serviceAccountsEnabled\" : false,\n    \"publicClient\" : true,\n    \"frontchannelLogout\" : false,\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"pkce.code.challenge.method\" : \"S256\"\n    },\n    \"authenticationFlowBindingOverrides\" : { },\n    \"fullScopeAllowed\" : false,\n    \"nodeReRegistrationTimeout\" : 0,\n    \"protocolMappers\" : [ {\n      \"id\" : \"b757f2d3-0dde-4b29-8915-e163b0aeeaae\",\n      \"name\" : \"locale\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"locale\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"locale\",\n        \"jsonType.label\" : \"String\"\n      }\n    } ],\n    \"defaultClientScopes\" : [ \"web-origins\", \"role_list\", \"profile\", \"roles\", \"email\" ],\n    \"optionalClientScopes\" : [ \"address\", \"phone\", \"offline_access\", \"microprofile-jwt\" ]\n  } ],\n  \"clientScopes\" : [ {\n    \"id\" : \"6fdde58c-192e-48e0-91bc-acb6f466d00b\",\n    \"name\" : \"offline_access\",\n    \"description\" : \"OpenID Connect built-in scope: offline_access\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"consent.screen.text\" : \"${offlineAccessScopeConsentText}\",\n      \"display.on.consent.screen\" : \"true\"\n    }\n  }, {\n    \"id\" : \"07736879-8a26-4a34-8ce0-2b2b49559d61\",\n    \"name\" : \"role_list\",\n    \"description\" : \"SAML role list\",\n    \"protocol\" : \"saml\",\n    \"attributes\" : {\n      \"consent.screen.text\" : \"${samlRoleListScopeConsentText}\",\n      \"display.on.consent.screen\" : \"true\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"1877c937-8c1a-48b8-9fef-c78eecb58cbf\",\n      \"name\" : \"role list\",\n      \"protocol\" : \"saml\",\n      \"protocolMapper\" : \"saml-role-list-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"single\" : \"false\",\n        \"attribute.nameformat\" : \"Basic\",\n        \"attribute.name\" : \"Role\"\n      }\n    } ]\n  }, {\n    \"id\" : \"0cf4afba-e609-4fc7-9134-55e3ad1b7f39\",\n    \"name\" : \"profile\",\n    \"description\" : \"OpenID Connect built-in scope: profile\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"include.in.token.scope\" : \"true\",\n      \"display.on.consent.screen\" : \"true\",\n      \"consent.screen.text\" : \"${profileScopeConsentText}\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"77d30d3c-9069-47b0-b88f-e481b4207e2c\",\n      \"name\" : \"given name\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-property-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"firstName\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"given_name\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"ded815a3-0110-4fbb-b148-283aa52142f9\",\n      \"name\" : \"profile\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"profile\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"profile\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"9c4d720a-7ce0-4a8d-bdd5-5dedc3e4bc47\",\n      \"name\" : \"nickname\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"nickname\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"nickname\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"a31c4b51-7d40-42db-8f32-12001994af0f\",\n      \"name\" : \"website\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"website\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"website\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"5bea52ae-f0b8-4af4-ad22-bbf7c2bf98d1\",\n      \"name\" : \"birthdate\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"birthdate\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"birthdate\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"ed55c7fa-4f35-446d-8086-a8409d091ffd\",\n      \"name\" : \"username\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-property-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"username\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"preferred_username\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"cd2cb96d-c428-4c82-84b6-bc9d4aaadae7\",\n      \"name\" : \"locale\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"locale\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"locale\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"55add740-d78b-44db-97b6-6079a4410a42\",\n      \"name\" : \"updated at\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"updatedAt\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"updated_at\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"c05e2bb3-6bc1-47dd-a300-112cb456200d\",\n      \"name\" : \"picture\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"picture\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"picture\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"6d2e95d6-2283-4497-b72d-35384a75e6dd\",\n      \"name\" : \"family name\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-property-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"lastName\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"family_name\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"049faef7-ba09-4887-86c7-1ac1c5009d17\",\n      \"name\" : \"full name\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-full-name-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"userinfo.token.claim\" : \"true\"\n      }\n    }, {\n      \"id\" : \"1066660d-3c94-482c-97d1-323d78734c96\",\n      \"name\" : \"zoneinfo\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"zoneinfo\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"zoneinfo\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"8e27aac4-092d-4eaf-88e9-872e9821a977\",\n      \"name\" : \"gender\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"gender\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"gender\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"589f52a0-8ffd-4cf8-b2af-d26261125348\",\n      \"name\" : \"middle name\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"middleName\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"middle_name\",\n        \"jsonType.label\" : \"String\"\n      }\n    } ]\n  }, {\n    \"id\" : \"9f49aa9f-4820-4074-ab70-5eedb6baebb2\",\n    \"name\" : \"email\",\n    \"description\" : \"OpenID Connect built-in scope: email\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"include.in.token.scope\" : \"true\",\n      \"display.on.consent.screen\" : \"true\",\n      \"consent.screen.text\" : \"${emailScopeConsentText}\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"63e9a0d9-c722-4342-96c0-405961ebd11b\",\n      \"name\" : \"email verified\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-property-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"emailVerified\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"email_verified\",\n        \"jsonType.label\" : \"boolean\"\n      }\n    }, {\n      \"id\" : \"b1eed229-e25a-4889-9392-0414ed5fd49c\",\n      \"name\" : \"email\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-property-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"email\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"email\",\n        \"jsonType.label\" : \"String\"\n      }\n    } ]\n  }, {\n    \"id\" : \"542a09d4-cd9c-491e-8f35-1360785600b4\",\n    \"name\" : \"address\",\n    \"description\" : \"OpenID Connect built-in scope: address\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"include.in.token.scope\" : \"true\",\n      \"display.on.consent.screen\" : \"true\",\n      \"consent.screen.text\" : \"${addressScopeConsentText}\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"19a1905f-b3bd-44e0-a621-a311d1f451f9\",\n      \"name\" : \"address\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-address-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"user.attribute.formatted\" : \"formatted\",\n        \"user.attribute.country\" : \"country\",\n        \"user.attribute.postal_code\" : \"postal_code\",\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute.street\" : \"street\",\n        \"id.token.claim\" : \"true\",\n        \"user.attribute.region\" : \"region\",\n        \"access.token.claim\" : \"true\",\n        \"user.attribute.locality\" : \"locality\"\n      }\n    } ]\n  }, {\n    \"id\" : \"b4589106-906c-4956-9f55-49630525c7a2\",\n    \"name\" : \"phone\",\n    \"description\" : \"OpenID Connect built-in scope: phone\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"include.in.token.scope\" : \"true\",\n      \"display.on.consent.screen\" : \"true\",\n      \"consent.screen.text\" : \"${phoneScopeConsentText}\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"09c698fc-2b1c-46e9-8e67-ea6fbbe3bfcc\",\n      \"name\" : \"phone number verified\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"phoneNumberVerified\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"phone_number_verified\",\n        \"jsonType.label\" : \"boolean\"\n      }\n    }, {\n      \"id\" : \"40a27f11-8b12-4b7b-ab30-090fc5e2bfaa\",\n      \"name\" : \"phone number\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"phoneNumber\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"phone_number\",\n        \"jsonType.label\" : \"String\"\n      }\n    } ]\n  }, {\n    \"id\" : \"ade9ddcc-3208-4fa9-90ae-874f138c654f\",\n    \"name\" : \"roles\",\n    \"description\" : \"OpenID Connect scope for add user roles to the access token\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"include.in.token.scope\" : \"false\",\n      \"display.on.consent.screen\" : \"true\",\n      \"consent.screen.text\" : \"${rolesScopeConsentText}\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"1bd54fd6-e6ff-4c9b-8028-0c8ba87b7b9f\",\n      \"name\" : \"client roles\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-client-role-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"user.attribute\" : \"foo\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"resource_access.${client_id}.roles\",\n        \"jsonType.label\" : \"String\",\n        \"multivalued\" : \"true\"\n      }\n    }, {\n      \"id\" : \"64b4283a-2e71-450c-9d47-8132e3dbb90f\",\n      \"name\" : \"audience resolve\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-audience-resolve-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : { }\n    }, {\n      \"id\" : \"cde86219-5df1-4c90-8703-4a19ffa678df\",\n      \"name\" : \"realm roles\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-realm-role-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"user.attribute\" : \"foo\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"realm_access.roles\",\n        \"jsonType.label\" : \"String\",\n        \"multivalued\" : \"true\"\n      }\n    } ]\n  }, {\n    \"id\" : \"d95f6c5e-7c25-4f5f-a66d-09a0e821d93d\",\n    \"name\" : \"web-origins\",\n    \"description\" : \"OpenID Connect scope for add allowed web origins to the access token\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"include.in.token.scope\" : \"false\",\n      \"display.on.consent.screen\" : \"false\",\n      \"consent.screen.text\" : \"\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"fd571046-d716-480e-bcac-d0a0a17c7211\",\n      \"name\" : \"allowed web origins\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-allowed-origins-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : { }\n    } ]\n  }, {\n    \"id\" : \"356ed32b-fb3b-46c1-861f-ae2cd77d2a43\",\n    \"name\" : \"microprofile-jwt\",\n    \"description\" : \"Microprofile - JWT built-in scope\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"include.in.token.scope\" : \"true\",\n      \"display.on.consent.screen\" : \"false\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"b316d4b7-db10-433d-8f3f-42e81d63fc5b\",\n      \"name\" : \"upn\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-property-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"username\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"upn\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"cf7d8c8b-5997-4f73-8188-8264784cab7b\",\n      \"name\" : \"groups\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-realm-role-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"multivalued\" : \"true\",\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"foo\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"groups\",\n        \"jsonType.label\" : \"String\"\n      }\n    } ]\n  } ],\n  \"defaultDefaultClientScopes\" : [ \"role_list\", \"profile\", \"email\", \"roles\", \"web-origins\" ],\n  \"defaultOptionalClientScopes\" : [ \"offline_access\", \"address\", \"phone\", \"microprofile-jwt\" ],\n  \"browserSecurityHeaders\" : {\n    \"contentSecurityPolicyReportOnly\" : \"\",\n    \"xContentTypeOptions\" : \"nosniff\",\n    \"xRobotsTag\" : \"none\",\n    \"xFrameOptions\" : \"SAMEORIGIN\",\n    \"contentSecurityPolicy\" : \"frame-src 'self'; frame-ancestors 'self'; object-src 'none';\",\n    \"xXSSProtection\" : \"1; mode=block\",\n    \"strictTransportSecurity\" : \"max-age=31536000; includeSubDomains\"\n  },\n  \"smtpServer\" : { },\n  \"eventsEnabled\" : false,\n  \"eventsListeners\" : [ \"jboss-logging\" ],\n  \"enabledEventTypes\" : [ ],\n  \"adminEventsEnabled\" : false,\n  \"adminEventsDetailsEnabled\" : false,\n  \"components\" : {\n    \"org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy\" : [ {\n      \"id\" : \"f242eab3-b0ff-4fbc-bee1-76aaf1eff768\",\n      \"name\" : \"Consent Required\",\n      \"providerId\" : \"consent-required\",\n      \"subType\" : \"anonymous\",\n      \"subComponents\" : { },\n      \"config\" : { }\n    }, {\n      \"id\" : \"bc94017c-6d33-4693-b464-2a38f3fe5815\",\n      \"name\" : \"Max Clients Limit\",\n      \"providerId\" : \"max-clients\",\n      \"subType\" : \"anonymous\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"max-clients\" : [ \"200\" ]\n      }\n    }, {\n      \"id\" : \"a34570e6-5661-4686-a958-2210f7c901b0\",\n      \"name\" : \"Trusted Hosts\",\n      \"providerId\" : \"trusted-hosts\",\n      \"subType\" : \"anonymous\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"host-sending-registration-request-must-match\" : [ \"true\" ],\n        \"client-uris-must-match\" : [ \"true\" ]\n      }\n    }, {\n      \"id\" : \"6f7f96db-6c5f-4a20-b0e7-e799c2e7d124\",\n      \"name\" : \"Allowed Protocol Mapper Types\",\n      \"providerId\" : \"allowed-protocol-mappers\",\n      \"subType\" : \"anonymous\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"allowed-protocol-mapper-types\" : [ \"oidc-full-name-mapper\", \"oidc-usermodel-attribute-mapper\", \"saml-role-list-mapper\", \"oidc-usermodel-property-mapper\", \"oidc-address-mapper\", \"saml-user-attribute-mapper\", \"oidc-sha256-pairwise-sub-mapper\", \"saml-user-property-mapper\" ]\n      }\n    }, {\n      \"id\" : \"5aea7b06-acd1-4e3d-ad10-2168a055e50b\",\n      \"name\" : \"Allowed Client Scopes\",\n      \"providerId\" : \"allowed-client-templates\",\n      \"subType\" : \"anonymous\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"allow-default-scopes\" : [ \"true\" ]\n      }\n    }, {\n      \"id\" : \"ca9d1883-c461-4ffa-85ef-a32d44f36d26\",\n      \"name\" : \"Full Scope Disabled\",\n      \"providerId\" : \"scope\",\n      \"subType\" : \"anonymous\",\n      \"subComponents\" : { },\n      \"config\" : { }\n    }, {\n      \"id\" : \"857125a2-3c97-4751-83bf-9dcf72170303\",\n      \"name\" : \"Allowed Protocol Mapper Types\",\n      \"providerId\" : \"allowed-protocol-mappers\",\n      \"subType\" : \"authenticated\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"allowed-protocol-mapper-types\" : [ \"oidc-address-mapper\", \"saml-role-list-mapper\", \"saml-user-property-mapper\", \"oidc-sha256-pairwise-sub-mapper\", \"saml-user-attribute-mapper\", \"oidc-full-name-mapper\", \"oidc-usermodel-attribute-mapper\", \"oidc-usermodel-property-mapper\" ]\n      }\n    }, {\n      \"id\" : \"49d066a5-b45e-4421-bcea-a4f3c357436b\",\n      \"name\" : \"Allowed Client Scopes\",\n      \"providerId\" : \"allowed-client-templates\",\n      \"subType\" : \"authenticated\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"allow-default-scopes\" : [ \"true\" ]\n      }\n    } ],\n    \"org.keycloak.keys.KeyProvider\" : [ {\n      \"id\" : \"1001c8ce-edc2-4454-9358-6d9c4efafc6d\",\n      \"name\" : \"hmac-generated\",\n      \"providerId\" : \"hmac-generated\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"kid\" : [ \"ee359bdb-0e14-41be-996b-631521247eb5\" ],\n        \"secret\" : [ \"oTUy1tHmfrfzzXmWQhL5zeGdc1iigLuGHiZ-A3p-hT43ZXiSnGSFdzTRghyOOEH2p0D631pEUpn2mRhfx_gG-Q\" ],\n        \"priority\" : [ \"100\" ],\n        \"algorithm\" : [ \"HS256\" ]\n      }\n    }, {\n      \"id\" : \"4b5bfb78-cc0f-4ffa-aca5-6131578b6d6b\",\n      \"name\" : \"aes-generated\",\n      \"providerId\" : \"aes-generated\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"kid\" : [ \"edc7a5cc-8b52-4c8a-b3d7-3fc2ce4230b8\" ],\n        \"secret\" : [ \"efeeTjCAYUPBYryHpxqJ2g\" ],\n        \"priority\" : [ \"100\" ]\n      }\n    }, {\n      \"id\" : \"4ac2b4b3-ab55-4500-bbdc-5559afc527d0\",\n      \"name\" : \"rsa-generated\",\n      \"providerId\" : \"rsa-generated\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"privateKey\" : [ \"MIIEowIBAAKCAQEAnWvdd18SZT4aNLdw7b3vo1o6TbM1VZbXcYi7pI1NvI2jxUqHNLO/1LJAqbCBxOO6oXKY36zlHHFz8ItoQQ5xOozspjy4onuw/HuBweg81dbS9VKhBNSV9pp/BCYjDrlrUOOgSkKNZ5EkxBDdJk3IrXG0dP6FzzLewIVZAklg+dZLgbyb6XPadeDfcmN+bAVvSTt4hOhg304BSSgV1Pt2ajFWEC2OAqZho2Msqo98Qk8tw+N+WTbplATK7PO57apbaKvsmQrj4eipOJobPlvgs+Kdj9bKtLJhOSOCIL+ssmdto/MgBr4NI1aWZUGrmCZUHFpT7U4AjGIS1Wi9W0aiowIDAQABAoIBAEpz/aa7nGOt348XQ53tuy0zO2gMXilA0lysIrNM8XtAMjjZauEOMqhSNisLhBSu8FHzdUI075doQUF/bat3PS5IAJUPGvQeNDL15wTi5gLtO5Ezp1w1f0fHAlPgBaytHYiAYAs/NsnI5+6jWzUGjOcbZBIBXyAEGz5K0zI1qlv+tFheRe6lTGMoIe9qy/JQSGgnnCAh9JfZFkIhBhciZmEEuRI26PKh7kc6eA20oZ9JDO5FD+J6vBBf56h3NVP2GDJAXWhSE+g22OG9RC2BKG8itDAfdi0GdFf2XC7MuLOOoPKjXHUowTivy28Oi/vWrFv9t1vntOMAI+GcHYSl7YECgYEA0iDolEo9CgWKkqdZd4u6+Mq+sTDudLTHc+Y4DYdwhi+GaqNigzg1z5sWp9Q29tiwGkc/3Qm5KNhz2No9X96phY+r7yykguntz5p7fnEEBBta/DfdLazG3Jp6Jj3aTTPpUDB1Xx2hyiFY+9DcfZohVWHJM+oTnJhBQay94rAIOHECgYEAv8lmdjAFAMzvJqPAsOfroCZHntxEi8if37hPV0q7Bu4YrsdYrTf3DfnSnryJ4h0eqVAn0xE6kZBazGiM8TUh1mgLIEV0QJLuc8tULpHEb83bnVsdzWzoTVzdD1TD8bYhtS1rD/Zyd6f1LbNmcWZtDvXzDPhd5e4S82+yKZY8tlMCgYAdD8AbAkl+4VVRAyQ0jHbHggLtrr7MFVSgiu6lsF23sUr95KrzSwrmM6TmgUs4yK9Scxg6EeYx5/3duBFU+Q6pEj3NTndSQ9hIJi1+R1Mu3jmvOGq2rnayfAr4zwUqOEvEc29IQGjn88TCzxgvpumFTYjuTSl5NvWPh7ybZY09gQKBgQCyUclx5G4Sc3l8/M6h7dF4g38eJwGY0r5LniwvJq3E4MaUY4eA70NHfFwn+XdehOLIXF3a8u74/zZdTmyVrWg72VtW8x0HGVaa1Zf9AM2bgtVKdri8EyHfJJPpuE/DwyuOMJ+WJPgDZ2ggyOhcUfbe7THCgn+T1QtLyzPlVOo4PwKBgBSO+DefTXtyqaYXJNUuxfrpU97dS3cnyXKI7dyZZebb5oguQ0vhRzEuhDTAhDy3sYphJEFAj/l/DRt6rsxRR2NLMEspf9QwroTu3+24iM8hfJLtiMw0yebyWtdGXDEviHEGwAegh0hWAU56qeC+Bh5r9oEguBI/AXlKrQAQtgWp\" ],\n        \"certificate\" : [ \"MIICmzCCAYMCBgFwouzjLjANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZtYXN0ZXIwHhcNMjAwMzA0MDAyMTM4WhcNMzAwMzA0MDAyMzE4WjARMQ8wDQYDVQQDDAZtYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCda913XxJlPho0t3Dtve+jWjpNszVVltdxiLukjU28jaPFSoc0s7/UskCpsIHE47qhcpjfrOUccXPwi2hBDnE6jOymPLiie7D8e4HB6DzV1tL1UqEE1JX2mn8EJiMOuWtQ46BKQo1nkSTEEN0mTcitcbR0/oXPMt7AhVkCSWD51kuBvJvpc9p14N9yY35sBW9JO3iE6GDfTgFJKBXU+3ZqMVYQLY4CpmGjYyyqj3xCTy3D435ZNumUBMrs87ntqltoq+yZCuPh6Kk4mhs+W+Cz4p2P1sq0smE5I4Igv6yyZ22j8yAGvg0jVpZlQauYJlQcWlPtTgCMYhLVaL1bRqKjAgMBAAEwDQYJKoZIhvcNAQELBQADggEBADDgAkiXWmA5ZjOinlN6xRjI96FU4K1nSDfHgeKUBAmEoAsVoaoVraVYrx6JfDpQ6lCKL2MVnJX/fRNOleKMNNsdexwCfbHvCVci09dOLWsEudUQiBegkabipWEmwX11NeGL+tJCcWZZ30hU6PvP7xT+GPLPW2+BTjErGMOwt41zr12XaCJ72bB0I5Bmj2dpWPmScXfFd50mdanyDUUKJQgQ5U4BV+GYAPtyAHGehgHFIgMTso+wgXtNNGS+6eqr6criIRaEllK0X0tlVx83gpYvXua6xqEEYwwqpyOyKq77ypZfDbUkesCPORuLpxs4NmJecCMcQTkPzlgVGlO7QHo=\" ],\n        \"priority\" : [ \"100\" ]\n      }\n    } ]\n  },\n  \"internationalizationEnabled\" : false,\n  \"supportedLocales\" : [ ],\n  \"authenticationFlows\" : [ {\n    \"id\" : \"4009ed69-04e1-451c-82bd-f806d6bcf66d\",\n    \"alias\" : \"Account verification options\",\n    \"description\" : \"Method with which to verity the existing account\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"idp-email-verification\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 20,\n      \"flowAlias\" : \"Verify Existing Account by Re-authentication\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"143eecef-2ab2-4ec8-be0d-5489b3f468bd\",\n    \"alias\" : \"Authentication Options\",\n    \"description\" : \"Authentication options.\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"basic-auth\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"basic-auth-otp\",\n      \"requirement\" : \"DISABLED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"auth-spnego\",\n      \"requirement\" : \"DISABLED\",\n      \"priority\" : 30,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"a3a0aa6d-0671-46c6-a9e4-b33e8fc5ae9f\",\n    \"alias\" : \"Browser - Conditional OTP\",\n    \"description\" : \"Flow to determine if the OTP is required for the authentication\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"conditional-user-configured\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"auth-otp-form\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"849aa284-08bf-4b80-ab0b-bc4e2ed69032\",\n    \"alias\" : \"Direct Grant - Conditional OTP\",\n    \"description\" : \"Flow to determine if the OTP is required for the authentication\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"conditional-user-configured\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"direct-grant-validate-otp\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"8200cd7b-1ca5-4c78-92de-31b62ff95217\",\n    \"alias\" : \"First broker login - Conditional OTP\",\n    \"description\" : \"Flow to determine if the OTP is required for the authentication\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"conditional-user-configured\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"auth-otp-form\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"24242156-b37c-4d61-ad8c-bb4e9f6307d5\",\n    \"alias\" : \"Handle Existing Account\",\n    \"description\" : \"Handle what to do if there is existing account with same email/username like authenticated identity provider\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"idp-confirm-link\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"flowAlias\" : \"Account verification options\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"8ec04d5a-f7ed-4488-a2e5-293e9b5a5be3\",\n    \"alias\" : \"Reset - Conditional OTP\",\n    \"description\" : \"Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"conditional-user-configured\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"reset-otp\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"59a0d622-1c3c-4d76-bfbd-56eae4990770\",\n    \"alias\" : \"User creation or linking\",\n    \"description\" : \"Flow for the existing/non-existing user alternatives\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticatorConfig\" : \"create unique user config\",\n      \"authenticator\" : \"idp-create-user-if-unique\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 20,\n      \"flowAlias\" : \"Handle Existing Account\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"b4e38768-96f2-4d1b-b371-72b00fc86455\",\n    \"alias\" : \"Verify Existing Account by Re-authentication\",\n    \"description\" : \"Reauthentication of existing account\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"idp-username-password-form\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"CONDITIONAL\",\n      \"priority\" : 20,\n      \"flowAlias\" : \"First broker login - Conditional OTP\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"013c6b8f-05a0-4dc2-bfac-cea2f3edf485\",\n    \"alias\" : \"browser\",\n    \"description\" : \"browser based authentication\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"auth-cookie\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"auth-spnego\",\n      \"requirement\" : \"DISABLED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"identity-provider-redirector\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 25,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 30,\n      \"flowAlias\" : \"forms\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"3bf1a4a6-809c-49cc-82f8-fbd4be962291\",\n    \"alias\" : \"clients\",\n    \"description\" : \"Base authentication for clients\",\n    \"providerId\" : \"client-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"client-secret\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"client-jwt\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"client-secret-jwt\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 30,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"client-x509\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 40,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"0fa8cf72-1c57-49e7-88dc-b73bd12eef54\",\n    \"alias\" : \"direct grant\",\n    \"description\" : \"OpenID Connect Resource Owner Grant\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"direct-grant-validate-username\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"direct-grant-validate-password\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"CONDITIONAL\",\n      \"priority\" : 30,\n      \"flowAlias\" : \"Direct Grant - Conditional OTP\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"dccf7e73-dbe9-437e-b228-ec3e5cebb63a\",\n    \"alias\" : \"docker auth\",\n    \"description\" : \"Used by Docker clients to authenticate against the IDP\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"docker-http-basic-authenticator\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"c1b31012-996f-4921-abac-5abd50796a68\",\n    \"alias\" : \"first broker login\",\n    \"description\" : \"Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticatorConfig\" : \"review profile config\",\n      \"authenticator\" : \"idp-review-profile\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"flowAlias\" : \"User creation or linking\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"9db37d4e-5681-412c-b2c6-88fdf2345b2f\",\n    \"alias\" : \"forms\",\n    \"description\" : \"Username, password, otp and other auth forms.\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"auth-username-password-form\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"CONDITIONAL\",\n      \"priority\" : 20,\n      \"flowAlias\" : \"Browser - Conditional OTP\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"d1580af4-bd97-4304-9051-135a0974e170\",\n    \"alias\" : \"http challenge\",\n    \"description\" : \"An authentication flow based on challenge-response HTTP Authentication Schemes\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"no-cookie-redirect\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"flowAlias\" : \"Authentication Options\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"fad7a149-aa5a-419f-ac1b-e1a9d00e71cc\",\n    \"alias\" : \"registration\",\n    \"description\" : \"registration flow\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"registration-page-form\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"flowAlias\" : \"registration form\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"5f60c655-938f-47cf-bbb6-8e58c7c58dea\",\n    \"alias\" : \"registration form\",\n    \"description\" : \"registration form\",\n    \"providerId\" : \"form-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"registration-user-creation\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"registration-profile-action\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 40,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"registration-password-action\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 50,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"registration-recaptcha-action\",\n      \"requirement\" : \"DISABLED\",\n      \"priority\" : 60,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"8729e507-85a4-429b-91b7-7ae0c31751c0\",\n    \"alias\" : \"reset credentials\",\n    \"description\" : \"Reset credentials for a user if they forgot their password or something\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"reset-credentials-choose-user\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"reset-credential-email\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"reset-password\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 30,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"CONDITIONAL\",\n      \"priority\" : 40,\n      \"flowAlias\" : \"Reset - Conditional OTP\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"e6a98610-5405-42fc-9975-b764b9f4b349\",\n    \"alias\" : \"saml ecp\",\n    \"description\" : \"SAML ECP Profile Authentication Flow\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"http-basic-authenticator\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  } ],\n  \"authenticatorConfig\" : [ {\n    \"id\" : \"6dda5be6-9fb1-4a54-a336-bd4f2e5d9bae\",\n    \"alias\" : \"create unique user config\",\n    \"config\" : {\n      \"require.password.update.after.registration\" : \"false\"\n    }\n  }, {\n    \"id\" : \"b085d94e-bdbc-48a5-a58d-d58260f0e28e\",\n    \"alias\" : \"review profile config\",\n    \"config\" : {\n      \"update.profile.on.first.login\" : \"missing\"\n    }\n  } ],\n  \"requiredActions\" : [ {\n    \"alias\" : \"CONFIGURE_TOTP\",\n    \"name\" : \"Configure OTP\",\n    \"providerId\" : \"CONFIGURE_TOTP\",\n    \"enabled\" : true,\n    \"defaultAction\" : false,\n    \"priority\" : 10,\n    \"config\" : { }\n  }, {\n    \"alias\" : \"terms_and_conditions\",\n    \"name\" : \"Terms and Conditions\",\n    \"providerId\" : \"terms_and_conditions\",\n    \"enabled\" : false,\n    \"defaultAction\" : false,\n    \"priority\" : 20,\n    \"config\" : { }\n  }, {\n    \"alias\" : \"UPDATE_PASSWORD\",\n    \"name\" : \"Update Password\",\n    \"providerId\" : \"UPDATE_PASSWORD\",\n    \"enabled\" : true,\n    \"defaultAction\" : false,\n    \"priority\" : 30,\n    \"config\" : { }\n  }, {\n    \"alias\" : \"UPDATE_PROFILE\",\n    \"name\" : \"Update Profile\",\n    \"providerId\" : \"UPDATE_PROFILE\",\n    \"enabled\" : true,\n    \"defaultAction\" : false,\n    \"priority\" : 40,\n    \"config\" : { }\n  }, {\n    \"alias\" : \"VERIFY_EMAIL\",\n    \"name\" : \"Verify Email\",\n    \"providerId\" : \"VERIFY_EMAIL\",\n    \"enabled\" : true,\n    \"defaultAction\" : false,\n    \"priority\" : 50,\n    \"config\" : { }\n  }, {\n    \"alias\" : \"update_user_locale\",\n    \"name\" : \"Update User Locale\",\n    \"providerId\" : \"update_user_locale\",\n    \"enabled\" : true,\n    \"defaultAction\" : false,\n    \"priority\" : 1000,\n    \"config\" : { }\n  } ],\n  \"browserFlow\" : \"browser\",\n  \"registrationFlow\" : \"registration\",\n  \"directGrantFlow\" : \"direct grant\",\n  \"resetCredentialsFlow\" : \"reset credentials\",\n  \"clientAuthenticationFlow\" : \"clients\",\n  \"dockerAuthenticationFlow\" : \"docker auth\",\n  \"attributes\" : {\n    \"clientSessionIdleTimeout\" : \"0\",\n    \"clientSessionMaxLifespan\" : \"0\"\n  },\n  \"keycloakVersion\" : \"11.0.3\",\n  \"userManagedAccessAllowed\" : false\n}\n"
  },
  {
    "path": "_resources/demo-config/import-dir/master-users-0.json",
    "content": "{\n  \"realm\" : \"master\",\n  \"users\" : [ {\n    \"id\" : \"360eec39-361b-4e59-99d8-cd00fd954545\",\n    \"createdTimestamp\" : 1583281400706,\n    \"username\" : \"admin\",\n    \"enabled\" : true,\n    \"totp\" : false,\n    \"emailVerified\" : false,\n    \"firstName\" : \"Admin\",\n    \"lastName\" : \"FamilyName\",\n    \"email\" : \"admin@placeholder.com\",\n    \"credentials\" : [ {\n      \"id\" : \"282dff34-5b1b-4a92-85be-42a8819a574f\",\n      \"type\" : \"password\",\n      \"createdDate\" : 1583281400761,\n      \"secretData\" : \"{\\\"value\\\":\\\"FqwfKQFxGscUXOFLTNfk81z7V8A/u/eO4gbVon+vQPW8yVJwTv11qKuMH1VlhPhsBcgZB94+ZSo/ImcIIjGCiA==\\\",\\\"salt\\\":\\\"xZHReUwZrCg8XoXgG2XMQg==\\\"}\",\n      \"credentialData\" : \"{\\\"hashIterations\\\":27500,\\\"algorithm\\\":\\\"pbkdf2-sha256\\\"}\"\n    } ],\n    \"disableableCredentialTypes\" : [ ],\n    \"requiredActions\" : [ ],\n    \"realmRoles\" : [ \"admin\", \"uma_authorization\", \"offline_access\" ],\n    \"clientRoles\" : {\n      \"account\" : [ \"manage-account\", \"view-profile\" ]\n    },\n    \"notBefore\" : 0,\n    \"groups\" : [ ]\n  } ]\n}"
  },
  {
    "path": "_resources/demo-config/import-dir/placeholder-realm.json",
    "content": "{\n  \"id\" : \"placeholder\",\n  \"realm\" : \"placeholder\",\n  \"notBefore\" : 0,\n  \"revokeRefreshToken\" : false,\n  \"refreshTokenMaxReuse\" : 0,\n  \"accessTokenLifespan\" : 300,\n  \"accessTokenLifespanForImplicitFlow\" : 900,\n  \"ssoSessionIdleTimeout\" : 1800,\n  \"ssoSessionMaxLifespan\" : 36000,\n  \"ssoSessionIdleTimeoutRememberMe\" : 0,\n  \"ssoSessionMaxLifespanRememberMe\" : 0,\n  \"offlineSessionIdleTimeout\" : 2592000,\n  \"offlineSessionMaxLifespanEnabled\" : false,\n  \"offlineSessionMaxLifespan\" : 5184000,\n  \"clientSessionIdleTimeout\" : 0,\n  \"clientSessionMaxLifespan\" : 0,\n  \"clientOfflineSessionIdleTimeout\" : 0,\n  \"clientOfflineSessionMaxLifespan\" : 0,\n  \"accessCodeLifespan\" : 60,\n  \"accessCodeLifespanUserAction\" : 300,\n  \"accessCodeLifespanLogin\" : 1800,\n  \"actionTokenGeneratedByAdminLifespan\" : 43200,\n  \"actionTokenGeneratedByUserLifespan\" : 300,\n  \"enabled\" : true,\n  \"sslRequired\" : \"external\",\n  \"registrationAllowed\" : true,\n  \"registrationEmailAsUsername\" : false,\n  \"rememberMe\" : true,\n  \"verifyEmail\" : true,\n  \"loginWithEmailAllowed\" : true,\n  \"duplicateEmailsAllowed\" : false,\n  \"resetPasswordAllowed\" : true,\n  \"editUsernameAllowed\" : true,\n  \"bruteForceProtected\" : false,\n  \"permanentLockout\" : false,\n  \"maxFailureWaitSeconds\" : 900,\n  \"minimumQuickLoginWaitSeconds\" : 60,\n  \"waitIncrementSeconds\" : 60,\n  \"quickLoginCheckMilliSeconds\" : 1000,\n  \"maxDeltaTimeSeconds\" : 43200,\n  \"failureFactor\" : 30,\n  \"roles\" : {\n    \"realm\" : [ {\n      \"id\" : \"bce8eb39-ee03-478a-98a6-98740b9db4aa\",\n      \"name\" : \"offline_access\",\n      \"description\" : \"${role_offline-access}\",\n      \"composite\" : false,\n      \"clientRole\" : false,\n      \"containerId\" : \"placeholder\",\n      \"attributes\" : { }\n    }, {\n      \"id\" : \"958df5fa-4db3-4ab8-9f12-fc4ae41b2a86\",\n      \"name\" : \"product_view\",\n      \"composite\" : false,\n      \"clientRole\" : false,\n      \"containerId\" : \"placeholder\",\n      \"attributes\" : { }\n    }, {\n      \"id\" : \"4a5441d2-299a-4c8d-b8c9-7096cb4c0e3e\",\n      \"name\" : \"uma_authorization\",\n      \"composite\" : false,\n      \"clientRole\" : false,\n      \"containerId\" : \"placeholder\",\n      \"attributes\" : { }\n    } ],\n    \"client\" : {\n      \"client-one\" : [ ],\n      \"realm-management\" : [ {\n        \"id\" : \"ab427a53-49c2-499e-8b8f-68a0c7b10229\",\n        \"name\" : \"manage-events\",\n        \"description\" : \"${role_manage-events}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"ecc15126-12f7-4d63-b2d4-d67d684a3159\",\n        \"name\" : \"view-identity-providers\",\n        \"description\" : \"${role_view-identity-providers}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"6c959a27-7e63-40f2-bd52-d88e4fc71a50\",\n        \"name\" : \"manage-realm\",\n        \"description\" : \"${role_manage-realm}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"fe81e3e4-fff6-4ea5-ba32-33841155d685\",\n        \"name\" : \"manage-identity-providers\",\n        \"description\" : \"${role_manage-identity-providers}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"c2717c7c-84a3-4beb-a3b2-ec1f68a96ab1\",\n        \"name\" : \"impersonation\",\n        \"description\" : \"${role_impersonation}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"2685b41b-598c-4370-a18f-4f6a8b41ffe6\",\n        \"name\" : \"query-users\",\n        \"description\" : \"${role_query-users}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"dc2c8f82-b8a4-4015-82de-8d8129ea593f\",\n        \"name\" : \"view-realm\",\n        \"description\" : \"${role_view-realm}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"df02eadd-797c-41bd-86fb-e367a0f1a66b\",\n        \"name\" : \"view-events\",\n        \"description\" : \"${role_view-events}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"01d738ad-e3e0-451d-9726-8786967b082d\",\n        \"name\" : \"query-clients\",\n        \"description\" : \"${role_query-clients}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"a94beb0d-201d-4e15-ac1e-0e3fed4e98ad\",\n        \"name\" : \"query-groups\",\n        \"description\" : \"${role_query-groups}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"0977d87f-5dee-4f30-8241-6f250cd61861\",\n        \"name\" : \"view-users\",\n        \"description\" : \"${role_view-users}\",\n        \"composite\" : true,\n        \"composites\" : {\n          \"client\" : {\n            \"realm-management\" : [ \"query-users\", \"query-groups\" ]\n          }\n        },\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"c9e03290-3c4c-4df0-aefb-1c8be662a16f\",\n        \"name\" : \"manage-clients\",\n        \"description\" : \"${role_manage-clients}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"fe8785cb-4168-4529-8893-6a1262db260c\",\n        \"name\" : \"realm-admin\",\n        \"description\" : \"${role_realm-admin}\",\n        \"composite\" : true,\n        \"composites\" : {\n          \"client\" : {\n            \"realm-management\" : [ \"manage-events\", \"view-identity-providers\", \"manage-realm\", \"manage-identity-providers\", \"impersonation\", \"query-users\", \"view-realm\", \"view-events\", \"query-clients\", \"query-groups\", \"view-users\", \"manage-clients\", \"view-clients\", \"create-client\", \"query-realms\", \"manage-users\", \"view-authorization\", \"manage-authorization\" ]\n          }\n        },\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"2e0c9334-946e-474a-95fc-3887a2142475\",\n        \"name\" : \"view-clients\",\n        \"description\" : \"${role_view-clients}\",\n        \"composite\" : true,\n        \"composites\" : {\n          \"client\" : {\n            \"realm-management\" : [ \"query-clients\" ]\n          }\n        },\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"101350d6-349c-42b4-a0fa-00387f255f19\",\n        \"name\" : \"create-client\",\n        \"description\" : \"${role_create-client}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"19048943-9626-4145-8d9c-aa76fbe82ec3\",\n        \"name\" : \"query-realms\",\n        \"description\" : \"${role_query-realms}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"5c7da431-415a-432b-a00a-01a17f97dcf1\",\n        \"name\" : \"manage-users\",\n        \"description\" : \"${role_manage-users}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"da051020-ca93-4be1-839d-4828bad810b0\",\n        \"name\" : \"view-authorization\",\n        \"description\" : \"${role_view-authorization}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"c8e46741-7bb4-4af3-b5ff-f5e20574ba4d\",\n        \"name\" : \"manage-authorization\",\n        \"description\" : \"${role_manage-authorization}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n        \"attributes\" : { }\n      } ],\n      \"security-admin-console\" : [ ],\n      \"admin-cli\" : [ ],\n      \"account-console\" : [ ],\n      \"broker\" : [ {\n        \"id\" : \"0ec1d0fc-ef5e-4d31-9f16-4035100fb194\",\n        \"name\" : \"read-token\",\n        \"description\" : \"${role_read-token}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"89a7dee6-eaec-400b-a421-2b8c4f5820c8\",\n        \"attributes\" : { }\n      } ],\n      \"account\" : [ {\n        \"id\" : \"35bd2bb0-1cc7-4abf-b90e-fa7923f947c6\",\n        \"name\" : \"manage-account\",\n        \"description\" : \"${role_manage-account}\",\n        \"composite\" : true,\n        \"composites\" : {\n          \"client\" : {\n            \"account\" : [ \"manage-account-links\" ]\n          }\n        },\n        \"clientRole\" : true,\n        \"containerId\" : \"035f0e3a-8feb-454b-8bee-36b14bf71dff\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"f6b1721f-783e-45ac-96bf-776711bc2671\",\n        \"name\" : \"manage-consent\",\n        \"description\" : \"${role_manage-consent}\",\n        \"composite\" : true,\n        \"composites\" : {\n          \"client\" : {\n            \"account\" : [ \"view-consent\" ]\n          }\n        },\n        \"clientRole\" : true,\n        \"containerId\" : \"035f0e3a-8feb-454b-8bee-36b14bf71dff\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"7e6b226a-8117-4612-8808-6f58e772e69b\",\n        \"name\" : \"manage-account-links\",\n        \"description\" : \"${role_manage-account-links}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"035f0e3a-8feb-454b-8bee-36b14bf71dff\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"786546eb-066f-481d-9ddd-55202f2db004\",\n        \"name\" : \"view-applications\",\n        \"description\" : \"${role_view-applications}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"035f0e3a-8feb-454b-8bee-36b14bf71dff\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"6b2e1fcb-0b99-41e2-b5fd-31c4dfad9957\",\n        \"name\" : \"view-profile\",\n        \"description\" : \"${role_view-profile}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"035f0e3a-8feb-454b-8bee-36b14bf71dff\",\n        \"attributes\" : { }\n      }, {\n        \"id\" : \"3036f708-692b-4e92-a530-5cdabeae42ae\",\n        \"name\" : \"view-consent\",\n        \"description\" : \"${role_view-consent}\",\n        \"composite\" : false,\n        \"clientRole\" : true,\n        \"containerId\" : \"035f0e3a-8feb-454b-8bee-36b14bf71dff\",\n        \"attributes\" : { }\n      } ],\n      \"client-two\" : [ ]\n    }\n  },\n  \"groups\" : [ ],\n  \"defaultRoles\" : [ \"offline_access\", \"uma_authorization\" ],\n  \"requiredCredentials\" : [ \"password\" ],\n  \"otpPolicyType\" : \"totp\",\n  \"otpPolicyAlgorithm\" : \"HmacSHA1\",\n  \"otpPolicyInitialCounter\" : 0,\n  \"otpPolicyDigits\" : 6,\n  \"otpPolicyLookAheadWindow\" : 1,\n  \"otpPolicyPeriod\" : 30,\n  \"otpSupportedApplications\" : [ \"FreeOTP\", \"Google Authenticator\" ],\n  \"webAuthnPolicyRpEntityName\" : \"keycloak\",\n  \"webAuthnPolicySignatureAlgorithms\" : [ \"ES256\" ],\n  \"webAuthnPolicyRpId\" : \"\",\n  \"webAuthnPolicyAttestationConveyancePreference\" : \"not specified\",\n  \"webAuthnPolicyAuthenticatorAttachment\" : \"not specified\",\n  \"webAuthnPolicyRequireResidentKey\" : \"not specified\",\n  \"webAuthnPolicyUserVerificationRequirement\" : \"not specified\",\n  \"webAuthnPolicyCreateTimeout\" : 0,\n  \"webAuthnPolicyAvoidSameAuthenticatorRegister\" : false,\n  \"webAuthnPolicyAcceptableAaguids\" : [ ],\n  \"webAuthnPolicyPasswordlessRpEntityName\" : \"keycloak\",\n  \"webAuthnPolicyPasswordlessSignatureAlgorithms\" : [ \"ES256\" ],\n  \"webAuthnPolicyPasswordlessRpId\" : \"\",\n  \"webAuthnPolicyPasswordlessAttestationConveyancePreference\" : \"not specified\",\n  \"webAuthnPolicyPasswordlessAuthenticatorAttachment\" : \"not specified\",\n  \"webAuthnPolicyPasswordlessRequireResidentKey\" : \"not specified\",\n  \"webAuthnPolicyPasswordlessUserVerificationRequirement\" : \"not specified\",\n  \"webAuthnPolicyPasswordlessCreateTimeout\" : 0,\n  \"webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister\" : false,\n  \"webAuthnPolicyPasswordlessAcceptableAaguids\" : [ ],\n  \"scopeMappings\" : [ {\n    \"clientScope\" : \"offline_access\",\n    \"roles\" : [ \"offline_access\" ]\n  } ],\n  \"clientScopeMappings\" : {\n    \"account\" : [ {\n      \"client\" : \"account-console\",\n      \"roles\" : [ \"manage-account\" ]\n    } ]\n  },\n  \"clients\" : [ {\n    \"id\" : \"035f0e3a-8feb-454b-8bee-36b14bf71dff\",\n    \"clientId\" : \"account\",\n    \"name\" : \"${client_account}\",\n    \"rootUrl\" : \"${authBaseUrl}\",\n    \"baseUrl\" : \"/realms/placeholder/account/\",\n    \"surrogateAuthRequired\" : false,\n    \"enabled\" : true,\n    \"alwaysDisplayInConsole\" : false,\n    \"clientAuthenticatorType\" : \"client-secret\",\n    \"secret\" : \"d6162565-2302-4b44-a940-41d773838d34\",\n    \"defaultRoles\" : [ \"manage-account\", \"view-profile\" ],\n    \"redirectUris\" : [ \"/realms/placeholder/account/*\" ],\n    \"webOrigins\" : [ ],\n    \"notBefore\" : 0,\n    \"bearerOnly\" : false,\n    \"consentRequired\" : false,\n    \"standardFlowEnabled\" : true,\n    \"implicitFlowEnabled\" : false,\n    \"directAccessGrantsEnabled\" : false,\n    \"serviceAccountsEnabled\" : false,\n    \"publicClient\" : false,\n    \"frontchannelLogout\" : false,\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : { },\n    \"authenticationFlowBindingOverrides\" : { },\n    \"fullScopeAllowed\" : false,\n    \"nodeReRegistrationTimeout\" : 0,\n    \"protocolMappers\" : [ {\n      \"id\" : \"3bc3c992-954c-4dc1-a5e5-3dc493628d54\",\n      \"name\" : \"locale\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"locale\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"locale\",\n        \"jsonType.label\" : \"String\"\n      }\n    } ],\n    \"defaultClientScopes\" : [ ],\n    \"optionalClientScopes\" : [ ]\n  }, {\n    \"id\" : \"27ba8ed2-2413-4962-ad01-b22dc8109058\",\n    \"clientId\" : \"account-console\",\n    \"name\" : \"${client_account-console}\",\n    \"rootUrl\" : \"${authBaseUrl}\",\n    \"baseUrl\" : \"/realms/placeholder/account/\",\n    \"surrogateAuthRequired\" : false,\n    \"enabled\" : true,\n    \"alwaysDisplayInConsole\" : false,\n    \"clientAuthenticatorType\" : \"client-secret\",\n    \"secret\" : \"31348d01-14ea-43ff-9eeb-8b5702d5c68a\",\n    \"redirectUris\" : [ \"/realms/placeholder/account/*\" ],\n    \"webOrigins\" : [ ],\n    \"notBefore\" : 0,\n    \"bearerOnly\" : false,\n    \"consentRequired\" : false,\n    \"standardFlowEnabled\" : true,\n    \"implicitFlowEnabled\" : false,\n    \"directAccessGrantsEnabled\" : false,\n    \"serviceAccountsEnabled\" : false,\n    \"publicClient\" : true,\n    \"frontchannelLogout\" : false,\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"pkce.code.challenge.method\" : \"S256\"\n    },\n    \"authenticationFlowBindingOverrides\" : { },\n    \"fullScopeAllowed\" : false,\n    \"nodeReRegistrationTimeout\" : 0,\n    \"protocolMappers\" : [ {\n      \"id\" : \"c2fc2d66-210e-4159-8128-1e8e85e4ac73\",\n      \"name\" : \"audience resolve\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-audience-resolve-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : { }\n    } ],\n    \"defaultClientScopes\" : [ ],\n    \"optionalClientScopes\" : [ ]\n  }, {\n    \"id\" : \"7a667c5f-3de1-42a6-a45a-8240708c55a0\",\n    \"clientId\" : \"admin-cli\",\n    \"name\" : \"${client_admin-cli}\",\n    \"surrogateAuthRequired\" : false,\n    \"enabled\" : true,\n    \"alwaysDisplayInConsole\" : false,\n    \"clientAuthenticatorType\" : \"client-secret\",\n    \"secret\" : \"32e9a3e2-1551-4676-bfa3-4a65c436437e\",\n    \"redirectUris\" : [ ],\n    \"webOrigins\" : [ ],\n    \"notBefore\" : 0,\n    \"bearerOnly\" : false,\n    \"consentRequired\" : false,\n    \"standardFlowEnabled\" : false,\n    \"implicitFlowEnabled\" : false,\n    \"directAccessGrantsEnabled\" : true,\n    \"serviceAccountsEnabled\" : false,\n    \"publicClient\" : true,\n    \"frontchannelLogout\" : false,\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : { },\n    \"authenticationFlowBindingOverrides\" : { },\n    \"fullScopeAllowed\" : false,\n    \"nodeReRegistrationTimeout\" : 0,\n    \"defaultClientScopes\" : [ ],\n    \"optionalClientScopes\" : [ ]\n  }, {\n    \"id\" : \"89a7dee6-eaec-400b-a421-2b8c4f5820c8\",\n    \"clientId\" : \"broker\",\n    \"name\" : \"${client_broker}\",\n    \"surrogateAuthRequired\" : false,\n    \"enabled\" : true,\n    \"alwaysDisplayInConsole\" : false,\n    \"clientAuthenticatorType\" : \"client-secret\",\n    \"secret\" : \"34fc35ae-72c5-4ce6-bb88-3ae68ee99a9c\",\n    \"redirectUris\" : [ ],\n    \"webOrigins\" : [ ],\n    \"notBefore\" : 0,\n    \"bearerOnly\" : false,\n    \"consentRequired\" : false,\n    \"standardFlowEnabled\" : true,\n    \"implicitFlowEnabled\" : false,\n    \"directAccessGrantsEnabled\" : false,\n    \"serviceAccountsEnabled\" : false,\n    \"publicClient\" : false,\n    \"frontchannelLogout\" : false,\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : { },\n    \"authenticationFlowBindingOverrides\" : { },\n    \"fullScopeAllowed\" : false,\n    \"nodeReRegistrationTimeout\" : 0,\n    \"defaultClientScopes\" : [ ],\n    \"optionalClientScopes\" : [ ]\n  }, {\n    \"id\" : \"414f30fe-20e1-47e7-b33e-eb047dc19aa3\",\n    \"clientId\" : \"client-one\",\n    \"surrogateAuthRequired\" : false,\n    \"enabled\" : true,\n    \"alwaysDisplayInConsole\" : false,\n    \"clientAuthenticatorType\" : \"client-secret\",\n    \"secret\" : \"5683062e-9a7c-4146-9232-f2d43e46f57c\",\n    \"redirectUris\" : [ ],\n    \"webOrigins\" : [ ],\n    \"notBefore\" : 0,\n    \"bearerOnly\" : false,\n    \"consentRequired\" : false,\n    \"standardFlowEnabled\" : false,\n    \"implicitFlowEnabled\" : false,\n    \"directAccessGrantsEnabled\" : true,\n    \"serviceAccountsEnabled\" : false,\n    \"publicClient\" : true,\n    \"frontchannelLogout\" : false,\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"saml.assertion.signature\" : \"false\",\n      \"saml.force.post.binding\" : \"false\",\n      \"saml.multivalued.roles\" : \"false\",\n      \"saml.encrypt\" : \"false\",\n      \"saml.server.signature\" : \"false\",\n      \"saml.server.signature.keyinfo.ext\" : \"false\",\n      \"exclude.session.state.from.auth.response\" : \"false\",\n      \"saml_force_name_id_format\" : \"false\",\n      \"saml.client.signature\" : \"false\",\n      \"tls.client.certificate.bound.access.tokens\" : \"false\",\n      \"saml.authnstatement\" : \"false\",\n      \"display.on.consent.screen\" : \"false\",\n      \"saml.onetimeuse.condition\" : \"false\"\n    },\n    \"authenticationFlowBindingOverrides\" : { },\n    \"fullScopeAllowed\" : true,\n    \"nodeReRegistrationTimeout\" : -1,\n    \"defaultClientScopes\" : [ \"web-origins\", \"role_list\", \"profile\", \"roles\", \"email\" ],\n    \"optionalClientScopes\" : [ \"address\", \"phone\", \"offline_access\", \"microprofile-jwt\" ]\n  }, {\n    \"id\" : \"762a3d0b-f943-46c5-9cda-feefe5be29f8\",\n    \"clientId\" : \"client-two\",\n    \"surrogateAuthRequired\" : false,\n    \"enabled\" : true,\n    \"alwaysDisplayInConsole\" : false,\n    \"clientAuthenticatorType\" : \"client-secret\",\n    \"secret\" : \"03dc125a-8820-4529-88aa-48d70f04bb39\",\n    \"redirectUris\" : [ ],\n    \"webOrigins\" : [ ],\n    \"notBefore\" : 0,\n    \"bearerOnly\" : false,\n    \"consentRequired\" : false,\n    \"standardFlowEnabled\" : false,\n    \"implicitFlowEnabled\" : false,\n    \"directAccessGrantsEnabled\" : true,\n    \"serviceAccountsEnabled\" : false,\n    \"publicClient\" : true,\n    \"frontchannelLogout\" : false,\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"saml.assertion.signature\" : \"false\",\n      \"saml.force.post.binding\" : \"false\",\n      \"saml.multivalued.roles\" : \"false\",\n      \"saml.encrypt\" : \"false\",\n      \"saml.server.signature\" : \"false\",\n      \"saml.server.signature.keyinfo.ext\" : \"false\",\n      \"exclude.session.state.from.auth.response\" : \"false\",\n      \"saml_force_name_id_format\" : \"false\",\n      \"saml.client.signature\" : \"false\",\n      \"tls.client.certificate.bound.access.tokens\" : \"false\",\n      \"saml.authnstatement\" : \"false\",\n      \"display.on.consent.screen\" : \"false\",\n      \"saml.onetimeuse.condition\" : \"false\"\n    },\n    \"authenticationFlowBindingOverrides\" : { },\n    \"fullScopeAllowed\" : true,\n    \"nodeReRegistrationTimeout\" : -1,\n    \"defaultClientScopes\" : [ \"web-origins\", \"role_list\", \"profile\", \"roles\", \"email\" ],\n    \"optionalClientScopes\" : [ \"address\", \"phone\", \"offline_access\", \"microprofile-jwt\" ]\n  }, {\n    \"id\" : \"6058c1cb-b593-4eb7-884c-5c4f5aad2782\",\n    \"clientId\" : \"realm-management\",\n    \"name\" : \"${client_realm-management}\",\n    \"surrogateAuthRequired\" : false,\n    \"enabled\" : true,\n    \"alwaysDisplayInConsole\" : false,\n    \"clientAuthenticatorType\" : \"client-secret\",\n    \"secret\" : \"d566a0e5-0f00-4769-b30e-d5aa0b2ac153\",\n    \"redirectUris\" : [ ],\n    \"webOrigins\" : [ ],\n    \"notBefore\" : 0,\n    \"bearerOnly\" : true,\n    \"consentRequired\" : false,\n    \"standardFlowEnabled\" : true,\n    \"implicitFlowEnabled\" : false,\n    \"directAccessGrantsEnabled\" : false,\n    \"serviceAccountsEnabled\" : false,\n    \"publicClient\" : false,\n    \"frontchannelLogout\" : false,\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : { },\n    \"authenticationFlowBindingOverrides\" : { },\n    \"fullScopeAllowed\" : false,\n    \"nodeReRegistrationTimeout\" : 0,\n    \"defaultClientScopes\" : [ ],\n    \"optionalClientScopes\" : [ ]\n  }, {\n    \"id\" : \"1f147d69-6d4c-4820-9cf1-887b7cd2f7de\",\n    \"clientId\" : \"security-admin-console\",\n    \"name\" : \"${client_security-admin-console}\",\n    \"rootUrl\" : \"${authAdminUrl}\",\n    \"baseUrl\" : \"/admin/placeholder/console/\",\n    \"surrogateAuthRequired\" : false,\n    \"enabled\" : true,\n    \"alwaysDisplayInConsole\" : false,\n    \"clientAuthenticatorType\" : \"client-secret\",\n    \"secret\" : \"ce562a89-33ce-4b1a-ab54-a5971bed722b\",\n    \"redirectUris\" : [ \"/admin/placeholder/console/*\" ],\n    \"webOrigins\" : [ \"+\" ],\n    \"notBefore\" : 0,\n    \"bearerOnly\" : false,\n    \"consentRequired\" : false,\n    \"standardFlowEnabled\" : true,\n    \"implicitFlowEnabled\" : false,\n    \"directAccessGrantsEnabled\" : false,\n    \"serviceAccountsEnabled\" : false,\n    \"publicClient\" : true,\n    \"frontchannelLogout\" : false,\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"pkce.code.challenge.method\" : \"S256\"\n    },\n    \"authenticationFlowBindingOverrides\" : { },\n    \"fullScopeAllowed\" : false,\n    \"nodeReRegistrationTimeout\" : 0,\n    \"protocolMappers\" : [ {\n      \"id\" : \"afa2de77-fb53-47f6-b398-c0b5aac5bbe1\",\n      \"name\" : \"locale\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"locale\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"locale\",\n        \"jsonType.label\" : \"String\"\n      }\n    } ],\n    \"defaultClientScopes\" : [ ],\n    \"optionalClientScopes\" : [ ]\n  } ],\n  \"clientScopes\" : [ {\n    \"id\" : \"9bec96af-fec6-4d3c-a2e8-d4de5fe2f7f4\",\n    \"name\" : \"offline_access\",\n    \"description\" : \"OpenID Connect built-in scope: offline_access\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"consent.screen.text\" : \"${offlineAccessScopeConsentText}\",\n      \"display.on.consent.screen\" : \"true\"\n    }\n  }, {\n    \"id\" : \"1b220a08-8608-42a7-a406-c6c3d1594f38\",\n    \"name\" : \"role_list\",\n    \"description\" : \"SAML role list\",\n    \"protocol\" : \"saml\",\n    \"attributes\" : {\n      \"consent.screen.text\" : \"${samlRoleListScopeConsentText}\",\n      \"display.on.consent.screen\" : \"true\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"b281672a-bc4c-408e-b064-b296da3dfc82\",\n      \"name\" : \"role list\",\n      \"protocol\" : \"saml\",\n      \"protocolMapper\" : \"saml-role-list-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"single\" : \"false\",\n        \"attribute.nameformat\" : \"Basic\",\n        \"attribute.name\" : \"Role\"\n      }\n    } ]\n  }, {\n    \"id\" : \"beb0295d-3c41-466a-96b9-73edab644370\",\n    \"name\" : \"profile\",\n    \"description\" : \"OpenID Connect built-in scope: profile\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"include.in.token.scope\" : \"true\",\n      \"display.on.consent.screen\" : \"true\",\n      \"consent.screen.text\" : \"${profileScopeConsentText}\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"be223d79-9b39-4241-a49c-d1b257cb2e8d\",\n      \"name\" : \"username\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-property-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"username\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"preferred_username\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"ae5d8188-b209-4ca0-98ae-62baddfa213a\",\n      \"name\" : \"gender\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"gender\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"gender\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"6e9c4b36-ade0-48a2-817c-73918021bb64\",\n      \"name\" : \"website\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"website\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"website\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"ce850f7c-6996-4436-bb6a-0e7e5a6d3469\",\n      \"name\" : \"given name\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-property-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"firstName\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"given_name\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"928525e3-9926-43ee-8093-84041b7a2a2c\",\n      \"name\" : \"full name\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-full-name-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"userinfo.token.claim\" : \"true\"\n      }\n    }, {\n      \"id\" : \"907ce0c0-9e3b-4eae-b29a-b7c1b7dcf8e4\",\n      \"name\" : \"locale\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"locale\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"locale\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"c86a59f4-ef8f-4236-b428-4002ebbeff8e\",\n      \"name\" : \"middle name\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"middleName\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"middle_name\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"50470a3b-a789-4fbe-9da4-80d3c4c9167d\",\n      \"name\" : \"family name\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-property-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"lastName\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"family_name\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"a7f7c9fe-ed4a-4b81-86c4-96300e413267\",\n      \"name\" : \"nickname\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"nickname\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"nickname\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"799334e8-4e25-425d-96b1-93ff004d2dd1\",\n      \"name\" : \"picture\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"picture\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"picture\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"592805dd-1fe3-4b64-a96f-f7b1cc1b5a20\",\n      \"name\" : \"updated at\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"updatedAt\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"updated_at\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"ac618b58-78db-4968-b8f4-79263c6798d0\",\n      \"name\" : \"profile\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"profile\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"profile\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"ce933219-296f-4b34-a5b3-4a6b9bf03182\",\n      \"name\" : \"zoneinfo\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"zoneinfo\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"zoneinfo\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"1bcfb9f2-c149-4e24-b923-9d78f5e2a5c1\",\n      \"name\" : \"birthdate\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"birthdate\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"birthdate\",\n        \"jsonType.label\" : \"String\"\n      }\n    } ]\n  }, {\n    \"id\" : \"8bf9495d-0087-438c-bd63-b1736cce5e35\",\n    \"name\" : \"email\",\n    \"description\" : \"OpenID Connect built-in scope: email\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"include.in.token.scope\" : \"true\",\n      \"display.on.consent.screen\" : \"true\",\n      \"consent.screen.text\" : \"${emailScopeConsentText}\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"35cab8d6-8b89-408f-92c9-726638d83102\",\n      \"name\" : \"email\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-property-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"email\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"email\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"f07a5630-4fc8-48e0-886b-7e060bc612b2\",\n      \"name\" : \"email verified\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-property-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"emailVerified\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"email_verified\",\n        \"jsonType.label\" : \"boolean\"\n      }\n    } ]\n  }, {\n    \"id\" : \"9483c8a3-8355-4cb2-bf78-3b0a02ab7722\",\n    \"name\" : \"address\",\n    \"description\" : \"OpenID Connect built-in scope: address\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"include.in.token.scope\" : \"true\",\n      \"display.on.consent.screen\" : \"true\",\n      \"consent.screen.text\" : \"${addressScopeConsentText}\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"dc281994-a333-4bf9-9291-200b24290aaf\",\n      \"name\" : \"address\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-address-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"user.attribute.formatted\" : \"formatted\",\n        \"user.attribute.country\" : \"country\",\n        \"user.attribute.postal_code\" : \"postal_code\",\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute.street\" : \"street\",\n        \"id.token.claim\" : \"true\",\n        \"user.attribute.region\" : \"region\",\n        \"access.token.claim\" : \"true\",\n        \"user.attribute.locality\" : \"locality\"\n      }\n    } ]\n  }, {\n    \"id\" : \"3a6eae67-25f9-4024-9b5c-75b089921c7a\",\n    \"name\" : \"phone\",\n    \"description\" : \"OpenID Connect built-in scope: phone\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"include.in.token.scope\" : \"true\",\n      \"display.on.consent.screen\" : \"true\",\n      \"consent.screen.text\" : \"${phoneScopeConsentText}\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"a837d821-0614-486a-832e-c5c62547c390\",\n      \"name\" : \"phone number\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"phoneNumber\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"phone_number\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"17d424c0-3d00-47b2-bd93-4fe7eb6bc96e\",\n      \"name\" : \"phone number verified\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-attribute-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"phoneNumberVerified\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"phone_number_verified\",\n        \"jsonType.label\" : \"boolean\"\n      }\n    } ]\n  }, {\n    \"id\" : \"70f7e6ef-373c-4484-82ae-e0b68c49b474\",\n    \"name\" : \"roles\",\n    \"description\" : \"OpenID Connect scope for add user roles to the access token\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"include.in.token.scope\" : \"false\",\n      \"display.on.consent.screen\" : \"true\",\n      \"consent.screen.text\" : \"${rolesScopeConsentText}\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"10e277e8-c6fc-47af-be7b-6d8706875118\",\n      \"name\" : \"audience resolve\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-audience-resolve-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : { }\n    }, {\n      \"id\" : \"b72cd061-fcc4-49d0-80f7-9c8cfdc7c271\",\n      \"name\" : \"realm roles\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-realm-role-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"user.attribute\" : \"foo\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"realm_access.roles\",\n        \"jsonType.label\" : \"String\",\n        \"multivalued\" : \"true\"\n      }\n    }, {\n      \"id\" : \"b76bd42a-084f-45b0-bdaa-bb4c0ca29579\",\n      \"name\" : \"client roles\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-client-role-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"user.attribute\" : \"foo\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"resource_access.${client_id}.roles\",\n        \"jsonType.label\" : \"String\",\n        \"multivalued\" : \"true\"\n      }\n    } ]\n  }, {\n    \"id\" : \"dbdca642-5d4f-4e37-a1a3-f7e94565f38f\",\n    \"name\" : \"web-origins\",\n    \"description\" : \"OpenID Connect scope for add allowed web origins to the access token\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"include.in.token.scope\" : \"false\",\n      \"display.on.consent.screen\" : \"false\",\n      \"consent.screen.text\" : \"\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"51cbfba6-c784-4e2a-a26e-c91ba72c2426\",\n      \"name\" : \"allowed web origins\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-allowed-origins-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : { }\n    } ]\n  }, {\n    \"id\" : \"9658b764-096c-4f52-838f-820dc0715952\",\n    \"name\" : \"microprofile-jwt\",\n    \"description\" : \"Microprofile - JWT built-in scope\",\n    \"protocol\" : \"openid-connect\",\n    \"attributes\" : {\n      \"include.in.token.scope\" : \"true\",\n      \"display.on.consent.screen\" : \"false\"\n    },\n    \"protocolMappers\" : [ {\n      \"id\" : \"0dc87fc7-49de-41cb-b8af-f7fae47c16c1\",\n      \"name\" : \"upn\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-property-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"username\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"upn\",\n        \"jsonType.label\" : \"String\"\n      }\n    }, {\n      \"id\" : \"087394f0-d21b-4c81-bdc6-6525a8ff1d9c\",\n      \"name\" : \"groups\",\n      \"protocol\" : \"openid-connect\",\n      \"protocolMapper\" : \"oidc-usermodel-realm-role-mapper\",\n      \"consentRequired\" : false,\n      \"config\" : {\n        \"multivalued\" : \"true\",\n        \"userinfo.token.claim\" : \"true\",\n        \"user.attribute\" : \"foo\",\n        \"id.token.claim\" : \"true\",\n        \"access.token.claim\" : \"true\",\n        \"claim.name\" : \"groups\",\n        \"jsonType.label\" : \"String\"\n      }\n    } ]\n  } ],\n  \"defaultDefaultClientScopes\" : [ \"role_list\", \"profile\", \"email\", \"roles\", \"web-origins\" ],\n  \"defaultOptionalClientScopes\" : [ \"offline_access\", \"address\", \"phone\", \"microprofile-jwt\" ],\n  \"browserSecurityHeaders\" : {\n    \"contentSecurityPolicyReportOnly\" : \"\",\n    \"xContentTypeOptions\" : \"nosniff\",\n    \"xRobotsTag\" : \"none\",\n    \"xFrameOptions\" : \"SAMEORIGIN\",\n    \"contentSecurityPolicy\" : \"frame-src 'self'; frame-ancestors 'self'; object-src 'none';\",\n    \"xXSSProtection\" : \"1; mode=block\",\n    \"strictTransportSecurity\" : \"max-age=31536000; includeSubDomains\"\n  },\n  \"smtpServer\" : {\n    \"starttls\" : \"\",\n    \"auth\" : \"\",\n    \"port\" : \"1025\",\n    \"host\" : \"mailhog\",\n    \"from\" : \"noreply@placeholder.com\",\n    \"ssl\" : \"\"\n  },\n  \"eventsEnabled\" : false,\n  \"eventsListeners\" : [ \"jboss-logging\", \"pl_event_listener\" ],\n  \"enabledEventTypes\" : [ \"SEND_RESET_PASSWORD\", \"UPDATE_CONSENT_ERROR\", \"GRANT_CONSENT\", \"REMOVE_TOTP\", \"REVOKE_GRANT\", \"UPDATE_TOTP\", \"LOGIN_ERROR\", \"CLIENT_LOGIN\", \"RESET_PASSWORD_ERROR\", \"IMPERSONATE_ERROR\", \"CODE_TO_TOKEN_ERROR\", \"CUSTOM_REQUIRED_ACTION\", \"RESTART_AUTHENTICATION\", \"IMPERSONATE\", \"UPDATE_PROFILE_ERROR\", \"LOGIN\", \"UPDATE_PASSWORD_ERROR\", \"CLIENT_INITIATED_ACCOUNT_LINKING\", \"TOKEN_EXCHANGE\", \"LOGOUT\", \"REGISTER\", \"CLIENT_REGISTER\", \"IDENTITY_PROVIDER_LINK_ACCOUNT\", \"UPDATE_PASSWORD\", \"CLIENT_DELETE\", \"FEDERATED_IDENTITY_LINK_ERROR\", \"IDENTITY_PROVIDER_FIRST_LOGIN\", \"CLIENT_DELETE_ERROR\", \"VERIFY_EMAIL\", \"CLIENT_LOGIN_ERROR\", \"RESTART_AUTHENTICATION_ERROR\", \"EXECUTE_ACTIONS\", \"REMOVE_FEDERATED_IDENTITY_ERROR\", \"TOKEN_EXCHANGE_ERROR\", \"PERMISSION_TOKEN\", \"SEND_IDENTITY_PROVIDER_LINK_ERROR\", \"EXECUTE_ACTION_TOKEN_ERROR\", \"SEND_VERIFY_EMAIL\", \"EXECUTE_ACTIONS_ERROR\", \"REMOVE_FEDERATED_IDENTITY\", \"IDENTITY_PROVIDER_POST_LOGIN\", \"IDENTITY_PROVIDER_LINK_ACCOUNT_ERROR\", \"UPDATE_EMAIL\", \"REGISTER_ERROR\", \"REVOKE_GRANT_ERROR\", \"EXECUTE_ACTION_TOKEN\", \"LOGOUT_ERROR\", \"UPDATE_EMAIL_ERROR\", \"CLIENT_UPDATE_ERROR\", \"UPDATE_PROFILE\", \"CLIENT_REGISTER_ERROR\", \"FEDERATED_IDENTITY_LINK\", \"SEND_IDENTITY_PROVIDER_LINK\", \"SEND_VERIFY_EMAIL_ERROR\", \"RESET_PASSWORD\", \"CLIENT_INITIATED_ACCOUNT_LINKING_ERROR\", \"UPDATE_CONSENT\", \"REMOVE_TOTP_ERROR\", \"VERIFY_EMAIL_ERROR\", \"SEND_RESET_PASSWORD_ERROR\", \"CLIENT_UPDATE\", \"CUSTOM_REQUIRED_ACTION_ERROR\", \"IDENTITY_PROVIDER_POST_LOGIN_ERROR\", \"UPDATE_TOTP_ERROR\", \"CODE_TO_TOKEN\", \"GRANT_CONSENT_ERROR\", \"IDENTITY_PROVIDER_FIRST_LOGIN_ERROR\" ],\n  \"adminEventsEnabled\" : false,\n  \"adminEventsDetailsEnabled\" : false,\n  \"components\" : {\n    \"org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy\" : [ {\n      \"id\" : \"1b20bb08-8d09-429e-a591-b992b7d8582e\",\n      \"name\" : \"Allowed Client Scopes\",\n      \"providerId\" : \"allowed-client-templates\",\n      \"subType\" : \"authenticated\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"allow-default-scopes\" : [ \"true\" ]\n      }\n    }, {\n      \"id\" : \"e1a3f4cc-0805-43fd-8b53-f5b5e95adab2\",\n      \"name\" : \"Consent Required\",\n      \"providerId\" : \"consent-required\",\n      \"subType\" : \"anonymous\",\n      \"subComponents\" : { },\n      \"config\" : { }\n    }, {\n      \"id\" : \"cab43553-8829-4040-93e2-f27743db52bd\",\n      \"name\" : \"Max Clients Limit\",\n      \"providerId\" : \"max-clients\",\n      \"subType\" : \"anonymous\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"max-clients\" : [ \"200\" ]\n      }\n    }, {\n      \"id\" : \"243f4ff8-d691-49ba-9cb5-fc024a038c15\",\n      \"name\" : \"Allowed Protocol Mapper Types\",\n      \"providerId\" : \"allowed-protocol-mappers\",\n      \"subType\" : \"authenticated\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"allowed-protocol-mapper-types\" : [ \"oidc-sha256-pairwise-sub-mapper\", \"oidc-usermodel-property-mapper\", \"oidc-full-name-mapper\", \"saml-role-list-mapper\", \"oidc-usermodel-attribute-mapper\", \"oidc-address-mapper\", \"saml-user-property-mapper\", \"saml-user-attribute-mapper\" ]\n      }\n    }, {\n      \"id\" : \"cf828513-2f49-4003-964d-4fe6598f0160\",\n      \"name\" : \"Allowed Protocol Mapper Types\",\n      \"providerId\" : \"allowed-protocol-mappers\",\n      \"subType\" : \"anonymous\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"allowed-protocol-mapper-types\" : [ \"saml-user-attribute-mapper\", \"oidc-sha256-pairwise-sub-mapper\", \"oidc-usermodel-attribute-mapper\", \"oidc-address-mapper\", \"saml-role-list-mapper\", \"oidc-full-name-mapper\", \"saml-user-property-mapper\", \"oidc-usermodel-property-mapper\" ]\n      }\n    }, {\n      \"id\" : \"a50d008c-7c51-48cf-9f8b-9532bc3699f7\",\n      \"name\" : \"Trusted Hosts\",\n      \"providerId\" : \"trusted-hosts\",\n      \"subType\" : \"anonymous\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"host-sending-registration-request-must-match\" : [ \"true\" ],\n        \"client-uris-must-match\" : [ \"true\" ]\n      }\n    }, {\n      \"id\" : \"20140829-f20b-4dee-b423-ebfd488a5dee\",\n      \"name\" : \"Full Scope Disabled\",\n      \"providerId\" : \"scope\",\n      \"subType\" : \"anonymous\",\n      \"subComponents\" : { },\n      \"config\" : { }\n    }, {\n      \"id\" : \"691c39de-0a7d-4b05-829c-acf644110035\",\n      \"name\" : \"Allowed Client Scopes\",\n      \"providerId\" : \"allowed-client-templates\",\n      \"subType\" : \"anonymous\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"allow-default-scopes\" : [ \"true\" ]\n      }\n    } ],\n    \"org.keycloak.keys.KeyProvider\" : [ {\n      \"id\" : \"613f4d6a-7960-4cdb-8334-cd2316bf3d35\",\n      \"name\" : \"aes-generated\",\n      \"providerId\" : \"aes-generated\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"kid\" : [ \"73d62105-fe3b-491e-8702-f9e251a47a35\" ],\n        \"secret\" : [ \"YaQYZ_cPYmWYY5OSkUO2JQ\" ],\n        \"priority\" : [ \"100\" ]\n      }\n    }, {\n      \"id\" : \"07d18a2a-fbb7-492d-9e12-c25bc950b5e0\",\n      \"name\" : \"hmac-generated\",\n      \"providerId\" : \"hmac-generated\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"kid\" : [ \"128b1ec0-1c31-4b6a-a8d5-d07dead51bc0\" ],\n        \"secret\" : [ \"_5bLqn-W9M9PFefWtE6EB4rU30hRVBZp3nLI7gu3re-gmC1W4TUq6NzO-EqtTysHdVdTuEa1mP0Wp348YdB_ew\" ],\n        \"priority\" : [ \"100\" ],\n        \"algorithm\" : [ \"HS256\" ]\n      }\n    }, {\n      \"id\" : \"0e4629c6-143e-4144-87d6-775183a341ae\",\n      \"name\" : \"rsa-generated\",\n      \"providerId\" : \"rsa-generated\",\n      \"subComponents\" : { },\n      \"config\" : {\n        \"privateKey\" : [ \"MIIEpAIBAAKCAQEAk7MRzDZibc4/z09lEWDFjN6aJ+nG0TSTTGImV2k0Hjd1QoHl6hqSE/5DYSj4dC/QrMYVxCo6Wh3NJ8BNp3ZGNMw82T78sg1bmM2Y1UB+UrGC0pztuFPUarjlrILuRgQn4aP1IsIhMu25QXg3iuc8ftbteLEKDgnOrLf63Uoj1HJflL4giiT6sbXX3POYwtqgOMeSDo/dRc7G3S+tFAdpdnm4m8cISM5wB3xLdkY1GMSHEAxwYmBisnOzox/FjGYmoQy/B2HroENMycdvCzy6hmsR/2DWvDKXqTpmr3LKiRfJpchTtlHy0WlETkaHsXJHXHPc9XMrPpI2/zlHQnl4YwIDAQABAoIBAGjdtB484se5r35+jXC4N6rcBbGe/wVcgdSyvyxCyrlFgODWn6oGcX72gVqDn1vG8y8oeR3NKZ8AF8BIfhoPFKu58t4AJaQ5bbZhC0klwErwM8VbnEDKbD/VxWQllg1qN/Kx2YNzN+UT+fts4mqh4UbhTLvrXws2lWH2QoxJboUQFy8OTvQMcn9p85MDodR/B/t6vog4zcyt75sVvHLXPcysUNlIrXzWDuxtIY32VN+Uts4MK8h3HKpR//FfC05qJweynY/Ob2/81+9h6/Ou+8M+RXbnoiaK4iDu5/IVzepnRLI1L6GEuWzNeSO4hnlVe8d2nZfbQPy9G4D5wWcq/LkCgYEAzDDBpcDdHECKzUoCQknv0VOzzv/X146yzGdv8Eb6MrPjKK9W4JKFWykji+bsxBMsJW6YTBUpOlvZ3Z36jkD+Nt97i5Qh4tKNpj+qVPa2rzd8IQdAvv3d0VoTTeXDZcuZmLRTj0+dPUwG4rBSI1zLW/9c/MFXQ6GQ077gD3HMAY8CgYEAuSztja7CovPuJgF1vLzFQwtJvqD5ctKPC4axPjm6g6LN22SJmg6GPWWfVG4gDG9CAJ7QIDRxHKI+6dAuNSKm/qOZ8Rd+Hq0Pll/Oa4vP3+jcJ5E1uaQrm291ZG5NmcO4SH5OVrF432+GzY3QgjpMkG/rZqbWQ9U+TSDnoheSCe0CgYEAiuVPlJTQ03sD8Ak76COrQlURpulZxYOIFIr4FhXx87Nx/ibnjfOdSxl82JnIzMfN69iDOJ3cYZpBZQMlgMatJl53B8dIFabsO/5qu0jnk+DGSyFH5aOC0/nVz9NPS1tnq/xeKsoZR60DsggGl49ztazLcBOEbLjmb2MTvu3Fu/kCgYEAoVeiC8bvU6gSIg83lKEthwL42B3N+tu3QyWynTMTbcqWbsgklJR/JlO7BYeGaQ8vhPbbBJRs0bQT+Qkomad9tXS6lrQPcY78e9syMcZ58vAjkl4VX5DJZf8xW7Y36vf7Qz655xNu689ytvsPZ8iAGYFKrABFxIiyZeV7rWG4HukCgYBgr8rHpMrWhga4QqLCbyhzVWJ9YSL4zBV6I6+IwYf+HCofbXb0+TVP5jgEQi+srVMPOXNxuVnBq6NcCk8yu12LsTrPZQkVXfDUej5S5LqxJ2y7L2pzUTW3bU0O5qnUpLKcNmwr8pgPqng7q3T0RR/6VUlYjjItxB8JhswR9obfOw==\" ],\n        \"certificate\" : [ \"MIIClzCCAX8CBgFwbo+Y0DANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDDARkZW1vMB4XDTIwMDIyMjIwMTkyOVoXDTMwMDIyMjIwMjEwOVowDzENMAsGA1UEAwwEZGVtbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJOzEcw2Ym3OP89PZRFgxYzemifpxtE0k0xiJldpNB43dUKB5eoakhP+Q2Eo+HQv0KzGFcQqOlodzSfATad2RjTMPNk+/LINW5jNmNVAflKxgtKc7bhT1Gq45ayC7kYEJ+Gj9SLCITLtuUF4N4rnPH7W7XixCg4Jzqy3+t1KI9RyX5S+IIok+rG119zzmMLaoDjHkg6P3UXOxt0vrRQHaXZ5uJvHCEjOcAd8S3ZGNRjEhxAMcGJgYrJzs6MfxYxmJqEMvwdh66BDTMnHbws8uoZrEf9g1rwyl6k6Zq9yyokXyaXIU7ZR8tFpRE5Gh7FyR1xz3PVzKz6SNv85R0J5eGMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAfMAQyqT2Vajrp25j0iNtOHtNuSRuiPVC5dodoc5B6EZdCzq2DedvIuHR1p9pDLtpAlUJXHtebdrUjcie6xsz1SID5FUCe0Wgw7rZ+PPSH2678AjiRow4PO0w6OVsi7M5v6F+PlDAseb03s0ANTEhzoUXnPxTrO7yFuGXqOrSyTuLmuxONmrPZJ4229K1bdXFGfgzK42iBx6JZU313yXJPar/K38bi6ruBV0FUH1DHeO+cNqEgAZZEGtkeYFnbBWioVH+ZRFr9XqMrwF4E6o4RE4KQq+AsOrCEjpHOzwSPONDMBh77pR/vR3Yiwcd9PKco9U1jpla7nKbchyKf92dqw==\" ],\n        \"priority\" : [ \"100\" ]\n      }\n    } ]\n  },\n  \"internationalizationEnabled\" : true,\n  \"supportedLocales\" : [ \"de\", \"en\", \"it\", \"fr\", \"es\", \"nl\" ],\n  \"defaultLocale\" : \"en\",\n  \"authenticationFlows\" : [ {\n    \"id\" : \"680ffd05-8824-494c-8a93-f222469b134b\",\n    \"alias\" : \"Account verification options\",\n    \"description\" : \"Method with which to verity the existing account\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"idp-email-verification\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 20,\n      \"flowAlias\" : \"Verify Existing Account by Re-authentication\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"4053540e-8bef-499c-9097-624dd8d837b5\",\n    \"alias\" : \"Authentication Options\",\n    \"description\" : \"Authentication options.\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"basic-auth\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"basic-auth-otp\",\n      \"requirement\" : \"DISABLED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"auth-spnego\",\n      \"requirement\" : \"DISABLED\",\n      \"priority\" : 30,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"b2f0234f-cce7-4bb5-9274-b8e74b411c88\",\n    \"alias\" : \"Browser - Conditional OTP\",\n    \"description\" : \"Flow to determine if the OTP is required for the authentication\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"conditional-user-configured\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"auth-otp-form\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"0ac11db8-4464-4059-926b-5442e53205ea\",\n    \"alias\" : \"Direct Grant - Conditional OTP\",\n    \"description\" : \"Flow to determine if the OTP is required for the authentication\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"conditional-user-configured\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"direct-grant-validate-otp\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"0e2ea316-53e8-47d2-954f-04fdbc016d1a\",\n    \"alias\" : \"First broker login - Conditional OTP\",\n    \"description\" : \"Flow to determine if the OTP is required for the authentication\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"conditional-user-configured\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"auth-otp-form\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"1bf6420d-edc9-4a24-b5c3-79fc7f933d33\",\n    \"alias\" : \"Handle Existing Account\",\n    \"description\" : \"Handle what to do if there is existing account with same email/username like authenticated identity provider\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"idp-confirm-link\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"flowAlias\" : \"Account verification options\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"db2da303-3357-4de8-b274-69981b187118\",\n    \"alias\" : \"Reset - Conditional OTP\",\n    \"description\" : \"Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"conditional-user-configured\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"reset-otp\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"c48f2385-837c-40be-9b5d-80de7b9b46d0\",\n    \"alias\" : \"User creation or linking\",\n    \"description\" : \"Flow for the existing/non-existing user alternatives\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticatorConfig\" : \"create unique user config\",\n      \"authenticator\" : \"idp-create-user-if-unique\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 20,\n      \"flowAlias\" : \"Handle Existing Account\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"80e9a42a-1722-47fc-b8d6-ae0cdf7de65c\",\n    \"alias\" : \"Verify Existing Account by Re-authentication\",\n    \"description\" : \"Reauthentication of existing account\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"idp-username-password-form\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"CONDITIONAL\",\n      \"priority\" : 20,\n      \"flowAlias\" : \"First broker login - Conditional OTP\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"f691c5da-c422-49c4-af96-24f242381826\",\n    \"alias\" : \"browser\",\n    \"description\" : \"browser based authentication\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"auth-cookie\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"auth-spnego\",\n      \"requirement\" : \"DISABLED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"identity-provider-redirector\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 25,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 30,\n      \"flowAlias\" : \"forms\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"3573e206-29d4-4a7f-a617-f1eb715d0618\",\n    \"alias\" : \"clients\",\n    \"description\" : \"Base authentication for clients\",\n    \"providerId\" : \"client-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"client-secret\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"client-jwt\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"client-secret-jwt\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 30,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"client-x509\",\n      \"requirement\" : \"ALTERNATIVE\",\n      \"priority\" : 40,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"eafabff0-2792-4699-a7b9-2139a3762afb\",\n    \"alias\" : \"direct grant\",\n    \"description\" : \"OpenID Connect Resource Owner Grant\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"direct-grant-validate-username\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"direct-grant-validate-password\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"CONDITIONAL\",\n      \"priority\" : 30,\n      \"flowAlias\" : \"Direct Grant - Conditional OTP\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"58a1588a-b766-4ea8-b7c6-6b8a4b6ba8e2\",\n    \"alias\" : \"docker auth\",\n    \"description\" : \"Used by Docker clients to authenticate against the IDP\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"docker-http-basic-authenticator\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"df96393e-ae0f-4d6f-8b83-0f2aefc4e271\",\n    \"alias\" : \"first broker login\",\n    \"description\" : \"Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticatorConfig\" : \"review profile config\",\n      \"authenticator\" : \"idp-review-profile\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"flowAlias\" : \"User creation or linking\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"45c15ad1-d4cc-4a44-8110-5c49d87624cc\",\n    \"alias\" : \"forms\",\n    \"description\" : \"Username, password, otp and other auth forms.\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"auth-username-password-form\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"CONDITIONAL\",\n      \"priority\" : 20,\n      \"flowAlias\" : \"Browser - Conditional OTP\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"f953ae9f-80f0-4396-ab9d-7de904c23041\",\n    \"alias\" : \"http challenge\",\n    \"description\" : \"An authentication flow based on challenge-response HTTP Authentication Schemes\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"no-cookie-redirect\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"flowAlias\" : \"Authentication Options\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"283a627a-4c33-4ee3-9c47-31fe2d307444\",\n    \"alias\" : \"registration\",\n    \"description\" : \"registration flow\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"registration-page-form\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"flowAlias\" : \"registration form\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"85f9888a-5395-4c1b-87ea-bb7af94e2f20\",\n    \"alias\" : \"registration form\",\n    \"description\" : \"registration form\",\n    \"providerId\" : \"form-flow\",\n    \"topLevel\" : false,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"registration-user-creation\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"registration-profile-action\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 40,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"registration-password-action\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 50,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"registration-recaptcha-action\",\n      \"requirement\" : \"DISABLED\",\n      \"priority\" : 60,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  }, {\n    \"id\" : \"f5f2a017-bf14-4fa5-be54-9ab46fab3f9d\",\n    \"alias\" : \"reset credentials\",\n    \"description\" : \"Reset credentials for a user if they forgot their password or something\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"reset-credentials-choose-user\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"reset-credential-email\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 20,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"authenticator\" : \"reset-password\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 30,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    }, {\n      \"requirement\" : \"CONDITIONAL\",\n      \"priority\" : 40,\n      \"flowAlias\" : \"Reset - Conditional OTP\",\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : true\n    } ]\n  }, {\n    \"id\" : \"b6b71d12-6e3a-434e-b83b-4587c394ac65\",\n    \"alias\" : \"saml ecp\",\n    \"description\" : \"SAML ECP Profile Authentication Flow\",\n    \"providerId\" : \"basic-flow\",\n    \"topLevel\" : true,\n    \"builtIn\" : true,\n    \"authenticationExecutions\" : [ {\n      \"authenticator\" : \"http-basic-authenticator\",\n      \"requirement\" : \"REQUIRED\",\n      \"priority\" : 10,\n      \"userSetupAllowed\" : false,\n      \"autheticatorFlow\" : false\n    } ]\n  } ],\n  \"authenticatorConfig\" : [ {\n    \"id\" : \"d2d40a8c-f926-4d84-a0a8-ef2e6b91da31\",\n    \"alias\" : \"create unique user config\",\n    \"config\" : {\n      \"require.password.update.after.registration\" : \"false\"\n    }\n  }, {\n    \"id\" : \"26d88ab2-a3ad-4400-a771-17224dac2d7e\",\n    \"alias\" : \"review profile config\",\n    \"config\" : {\n      \"update.profile.on.first.login\" : \"missing\"\n    }\n  } ],\n  \"requiredActions\" : [ {\n    \"alias\" : \"CONFIGURE_TOTP\",\n    \"name\" : \"Configure OTP\",\n    \"providerId\" : \"CONFIGURE_TOTP\",\n    \"enabled\" : true,\n    \"defaultAction\" : false,\n    \"priority\" : 10,\n    \"config\" : { }\n  }, {\n    \"alias\" : \"terms_and_conditions\",\n    \"name\" : \"Terms and Conditions\",\n    \"providerId\" : \"terms_and_conditions\",\n    \"enabled\" : false,\n    \"defaultAction\" : false,\n    \"priority\" : 20,\n    \"config\" : { }\n  }, {\n    \"alias\" : \"UPDATE_PASSWORD\",\n    \"name\" : \"Update Password\",\n    \"providerId\" : \"UPDATE_PASSWORD\",\n    \"enabled\" : true,\n    \"defaultAction\" : false,\n    \"priority\" : 30,\n    \"config\" : { }\n  }, {\n    \"alias\" : \"UPDATE_PROFILE\",\n    \"name\" : \"Update Profile\",\n    \"providerId\" : \"UPDATE_PROFILE\",\n    \"enabled\" : true,\n    \"defaultAction\" : false,\n    \"priority\" : 40,\n    \"config\" : { }\n  }, {\n    \"alias\" : \"VERIFY_EMAIL\",\n    \"name\" : \"Verify Email\",\n    \"providerId\" : \"VERIFY_EMAIL\",\n    \"enabled\" : true,\n    \"defaultAction\" : false,\n    \"priority\" : 50,\n    \"config\" : { }\n  } ],\n  \"browserFlow\" : \"browser\",\n  \"registrationFlow\" : \"registration\",\n  \"directGrantFlow\" : \"direct grant\",\n  \"resetCredentialsFlow\" : \"reset credentials\",\n  \"clientAuthenticationFlow\" : \"clients\",\n  \"dockerAuthenticationFlow\" : \"docker auth\",\n  \"attributes\" : {\n    \"clientSessionIdleTimeout\" : \"0\",\n    \"clientSessionMaxLifespan\" : \"0\"\n  },\n  \"keycloakVersion\" : \"11.0.3\",\n  \"userManagedAccessAllowed\" : false\n}\n"
  },
  {
    "path": "_resources/demo-config/import-dir/placeholder-users-0.json",
    "content": "{\n  \"realm\" : \"placeholder\",\n  \"users\" : [ {\n    \"id\" : \"4695110d-11fe-4ec4-977f-147eb8d6afdc\",\n    \"createdTimestamp\" : 1583465306809,\n    \"username\" : \"james@placeholder.com\",\n    \"enabled\" : true,\n    \"totp\" : false,\n    \"emailVerified\" : true,\n    \"firstName\" : \"James\",\n    \"lastName\" : \"FamilyName\",\n    \"email\" : \"james@placeholder.com\",\n    \"credentials\" : [ {\n      \"id\" : \"f028c46f-d923-41e3-bee8-0547945b75c7\",\n      \"type\" : \"password\",\n      \"createdDate\" : 1583465321139,\n      \"secretData\" : \"{\\\"value\\\":\\\"lCJ8AN+4Coc2lAS1AxwdobF690pBIb7npyGuyQwey/mPlYiDHnYnye5LzKTeXsWdMfBnnfjE4HiOm3aQyweMQw==\\\",\\\"salt\\\":\\\"AHjkuDCoG8yS2d0NmR0YZA==\\\"}\",\n      \"credentialData\" : \"{\\\"hashIterations\\\":27500,\\\"algorithm\\\":\\\"pbkdf2-sha256\\\"}\"\n    } ],\n    \"disableableCredentialTypes\" : [ ],\n    \"requiredActions\" : [ ],\n    \"realmRoles\" : [ \"offline_access\", \"uma_authorization\" ],\n    \"clientRoles\" : {\n      \"account\" : [ \"manage-account\", \"view-profile\" ]\n    },\n    \"notBefore\" : 0,\n    \"groups\" : [ ]\n  }, {\n    \"id\" : \"7fd7255b-bb1f-42a5-95a6-10a083d85a71\",\n    \"createdTimestamp\" : 1583465485338,\n    \"username\" : \"jennifer@placeholder.com\",\n    \"enabled\" : true,\n    \"totp\" : false,\n    \"emailVerified\" : true,\n    \"firstName\" : \"Jennifer\",\n    \"lastName\" : \"FamilyName\",\n    \"email\" : \"jennifer@placeholder.com\",\n    \"credentials\" : [ {\n      \"id\" : \"cfc9e94d-3682-4623-a439-7f99002e3849\",\n      \"type\" : \"password\",\n      \"createdDate\" : 1583465494759,\n      \"secretData\" : \"{\\\"value\\\":\\\"Bnl6SmQuQgn9pBCHCH7dvf8lrBhFyh6MQ+jfxg/X7tyg5eWNuesF7sFzRvCzsSnKIGsidRb0azHVHy0uv9p3lw==\\\",\\\"salt\\\":\\\"K6ACQCuE18fTXhVP61nPSQ==\\\"}\",\n      \"credentialData\" : \"{\\\"hashIterations\\\":27500,\\\"algorithm\\\":\\\"pbkdf2-sha256\\\"}\"\n    } ],\n    \"disableableCredentialTypes\" : [ ],\n    \"requiredActions\" : [ ],\n    \"realmRoles\" : [ \"offline_access\", \"uma_authorization\" ],\n    \"clientRoles\" : {\n      \"account\" : [ \"manage-account\", \"view-profile\" ]\n    },\n    \"notBefore\" : 0,\n    \"groups\" : [ ]\n  }, {\n    \"id\" : \"fbc5cfea-7e08-419f-a2d9-739d8687337a\",\n    \"createdTimestamp\" : 1583465348718,\n    \"username\" : \"john@placeholder.com\",\n    \"enabled\" : true,\n    \"totp\" : false,\n    \"emailVerified\" : true,\n    \"firstName\" : \"John\",\n    \"lastName\" : \"FamilyName\",\n    \"email\" : \"john@placeholder.com\",\n    \"credentials\" : [ {\n      \"id\" : \"70670e5b-5240-45d9-9ddd-b13290f23196\",\n      \"type\" : \"password\",\n      \"createdDate\" : 1583465362989,\n      \"secretData\" : \"{\\\"value\\\":\\\"3G291rtIi2o3sFLCYdcvYZFAvytH7Jxka7jM36o7vUYJeOApRciINiu8CPW/X23VyzHd8UJ9qiF31cqSvU3KVQ==\\\",\\\"salt\\\":\\\"UtXr7ED9SDhFg+dDZbsnSw==\\\"}\",\n      \"credentialData\" : \"{\\\"hashIterations\\\":27500,\\\"algorithm\\\":\\\"pbkdf2-sha256\\\"}\"\n    } ],\n    \"disableableCredentialTypes\" : [ ],\n    \"requiredActions\" : [ ],\n    \"realmRoles\" : [ \"offline_access\", \"uma_authorization\" ],\n    \"clientRoles\" : {\n      \"account\" : [ \"manage-account\", \"view-profile\" ]\n    },\n    \"notBefore\" : 0,\n    \"groups\" : [ ]\n  }, {\n    \"id\" : \"8341404d-9004-49a9-87b6-a97b3e79adf2\",\n    \"createdTimestamp\" : 1583465423394,\n    \"username\" : \"mary@placeholder.com\",\n    \"enabled\" : true,\n    \"totp\" : false,\n    \"emailVerified\" : true,\n    \"firstName\" : \"Mary\",\n    \"lastName\" : \"FamilyName\",\n    \"email\" : \"mary@placeholder.com\",\n    \"credentials\" : [ {\n      \"id\" : \"fab26a8c-0180-4519-8ae8-d2a33a091a66\",\n      \"type\" : \"password\",\n      \"createdDate\" : 1583465433080,\n      \"secretData\" : \"{\\\"value\\\":\\\"7Zw+Ez3zNwQMsSHqVDfiGfAEZN5OenmoCq19jDUHZcqOkbsat5wSHzY+nrg6ZgfVw7E2/6f+6X5EDX0geueSpw==\\\",\\\"salt\\\":\\\"Y+SAh1lGN6GEEpwM3ADbHA==\\\"}\",\n      \"credentialData\" : \"{\\\"hashIterations\\\":27500,\\\"algorithm\\\":\\\"pbkdf2-sha256\\\"}\"\n    } ],\n    \"disableableCredentialTypes\" : [ ],\n    \"requiredActions\" : [ ],\n    \"realmRoles\" : [ \"offline_access\", \"uma_authorization\" ],\n    \"clientRoles\" : {\n      \"account\" : [ \"manage-account\", \"view-profile\" ]\n    },\n    \"notBefore\" : 0,\n    \"groups\" : [ ]\n  }, {\n    \"id\" : \"bf2bd5cd-e6e0-4826-8193-126796d52789\",\n    \"createdTimestamp\" : 1583465451452,\n    \"username\" : \"patricia@placeholder.com\",\n    \"enabled\" : true,\n    \"totp\" : false,\n    \"emailVerified\" : true,\n    \"firstName\" : \"Patricia\",\n    \"lastName\" : \"FamilyName\",\n    \"email\" : \"patricia@placeholder.com\",\n    \"credentials\" : [ {\n      \"id\" : \"9f2c242a-f069-468f-860f-faa38baba01b\",\n      \"type\" : \"password\",\n      \"createdDate\" : 1583465460220,\n      \"secretData\" : \"{\\\"value\\\":\\\"I4IUJwBFuuOw7UN7j0GWyE77FjZNu3mtPQ58tn/KVO9PjLuRTdDSeyRV6k359gK7pOfLjdFxY16P1EBHqkfQRw==\\\",\\\"salt\\\":\\\"pi0KrCgHZPqCyFHF03gQ1Q==\\\"}\",\n      \"credentialData\" : \"{\\\"hashIterations\\\":27500,\\\"algorithm\\\":\\\"pbkdf2-sha256\\\"}\"\n    } ],\n    \"disableableCredentialTypes\" : [ ],\n    \"requiredActions\" : [ ],\n    \"realmRoles\" : [ \"offline_access\", \"uma_authorization\" ],\n    \"clientRoles\" : {\n      \"account\" : [ \"manage-account\", \"view-profile\" ]\n    },\n    \"notBefore\" : 0,\n    \"groups\" : [ ]\n  }, {\n    \"id\" : \"3fc781dd-8f07-4c34-9ca3-02e194f7ac69\",\n    \"createdTimestamp\" : 1583465389437,\n    \"username\" : \"robert@placeholder.com\",\n    \"enabled\" : true,\n    \"totp\" : false,\n    \"emailVerified\" : true,\n    \"firstName\" : \"Robert\",\n    \"lastName\" : \"FamilyName\",\n    \"email\" : \"robert@placeholder.com\",\n    \"credentials\" : [ {\n      \"id\" : \"a3a7955d-07b8-4004-b031-5845c4257171\",\n      \"type\" : \"password\",\n      \"createdDate\" : 1583465405118,\n      \"secretData\" : \"{\\\"value\\\":\\\"xjHdyum4eDUqbeQhadji4URJhS688vLmQvrGEBC3FJwQb0ceCzbf/TSiuqAQy4JrzZt3cKDdAiXi1BZfjWoD/A==\\\",\\\"salt\\\":\\\"AbR+OJk8LjTYdc0FEQ/2tQ==\\\"}\",\n      \"credentialData\" : \"{\\\"hashIterations\\\":27500,\\\"algorithm\\\":\\\"pbkdf2-sha256\\\"}\"\n    } ],\n    \"disableableCredentialTypes\" : [ ],\n    \"requiredActions\" : [ ],\n    \"realmRoles\" : [ \"offline_access\", \"product_view\", \"uma_authorization\" ],\n    \"clientRoles\" : {\n      \"account\" : [ \"manage-account\", \"view-profile\" ]\n    },\n    \"notBefore\" : 0,\n    \"groups\" : [ ]\n  } ]\n}"
  },
  {
    "path": "_resources/demo-config/standalone-ha.xml",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n\n<server xmlns=\"urn:jboss:domain:13.0\">\n    <extensions>\n        <extension module=\"org.jboss.as.clustering.infinispan\"/>\n        <extension module=\"org.jboss.as.clustering.jgroups\"/>\n        <extension module=\"org.jboss.as.connector\"/>\n        <extension module=\"org.jboss.as.deployment-scanner\"/>\n        <extension module=\"org.jboss.as.ee\"/>\n        <extension module=\"org.jboss.as.ejb3\"/>\n        <extension module=\"org.jboss.as.jaxrs\"/>\n        <extension module=\"org.jboss.as.jmx\"/>\n        <extension module=\"org.jboss.as.jpa\"/>\n        <extension module=\"org.jboss.as.logging\"/>\n        <extension module=\"org.jboss.as.mail\"/>\n        <extension module=\"org.jboss.as.modcluster\"/>\n        <extension module=\"org.jboss.as.naming\"/>\n        <extension module=\"org.jboss.as.remoting\"/>\n        <extension module=\"org.jboss.as.security\"/>\n        <extension module=\"org.jboss.as.transactions\"/>\n        <extension module=\"org.jboss.as.weld\"/>\n        <extension module=\"org.keycloak.keycloak-server-subsystem\"/>\n        <extension module=\"org.wildfly.extension.bean-validation\"/>\n        <extension module=\"org.wildfly.extension.core-management\"/>\n        <extension module=\"org.wildfly.extension.elytron\"/>\n        <extension module=\"org.wildfly.extension.io\"/>\n        <extension module=\"org.wildfly.extension.microprofile.config-smallrye\"/>\n        <extension module=\"org.wildfly.extension.microprofile.health-smallrye\"/>\n        <extension module=\"org.wildfly.extension.microprofile.metrics-smallrye\"/>\n        <extension module=\"org.wildfly.extension.request-controller\"/>\n        <extension module=\"org.wildfly.extension.security.manager\"/>\n        <extension module=\"org.wildfly.extension.undertow\"/>\n    </extensions>\n    <management>\n        <security-realms>\n            <security-realm name=\"ManagementRealm\">\n                <authentication>\n                    <local default-user=\"$local\" skip-group-loading=\"true\"/>\n                    <properties path=\"mgmt-users.properties\" relative-to=\"jboss.server.config.dir\"/>\n                </authentication>\n                <authorization map-groups-to-roles=\"false\">\n                    <properties path=\"mgmt-groups.properties\" relative-to=\"jboss.server.config.dir\"/>\n                </authorization>\n            </security-realm>\n            <security-realm name=\"ApplicationRealm\">\n                <server-identities>\n                    <ssl>\n                        <keystore path=\"application.keystore\" relative-to=\"jboss.server.config.dir\" keystore-password=\"password\" alias=\"server\" key-password=\"password\" generate-self-signed-certificate-host=\"localhost\"/>\n                    </ssl>\n                </server-identities>\n                <authentication>\n                    <local default-user=\"$local\" allowed-users=\"*\" skip-group-loading=\"true\"/>\n                    <properties path=\"application-users.properties\" relative-to=\"jboss.server.config.dir\"/>\n                </authentication>\n                <authorization>\n                    <properties path=\"application-roles.properties\" relative-to=\"jboss.server.config.dir\"/>\n                </authorization>\n            </security-realm>\n        </security-realms>\n        <audit-log>\n            <formatters>\n                <json-formatter name=\"json-formatter\"/>\n            </formatters>\n            <handlers>\n                <file-handler name=\"file\" formatter=\"json-formatter\" path=\"audit-log.log\" relative-to=\"jboss.server.data.dir\"/>\n            </handlers>\n            <logger log-boot=\"true\" log-read-only=\"false\" enabled=\"false\">\n                <handlers>\n                    <handler name=\"file\"/>\n                </handlers>\n            </logger>\n        </audit-log>\n        <management-interfaces>\n            <http-interface security-realm=\"ManagementRealm\">\n                <http-upgrade enabled=\"true\"/>\n                <socket-binding http=\"management-http\"/>\n            </http-interface>\n        </management-interfaces>\n        <access-control provider=\"simple\">\n            <role-mapping>\n                <role name=\"SuperUser\">\n                    <include>\n                        <user name=\"$local\"/>\n                    </include>\n                </role>\n            </role-mapping>\n        </access-control>\n    </management>\n    <profile>\n        <subsystem xmlns=\"urn:jboss:domain:logging:8.0\">\n            <console-handler name=\"CONSOLE\">\n                <formatter>\n                    <named-formatter name=\"COLOR-PATTERN\"/>\n                </formatter>\n            </console-handler>\n            <logger category=\"com.arjuna\">\n                <level name=\"WARN\"/>\n            </logger>\n            <logger category=\"io.jaegertracing.Configuration\">\n                <level name=\"WARN\"/>\n            </logger>\n            <logger category=\"org.jboss.as.config\">\n                <level name=\"DEBUG\"/>\n            </logger>\n            <logger category=\"sun.rmi\">\n                <level name=\"WARN\"/>\n            </logger>\n            <logger category=\"org.keycloak\">\n                <level name=\"${env.KEYCLOAK_LOGLEVEL:INFO}\"/>\n            </logger>\n            <root-logger>\n                <level name=\"${env.ROOT_LOGLEVEL:INFO}\"/>\n                <handlers>\n                    <handler name=\"CONSOLE\"/>\n                </handlers>\n            </root-logger>\n            <formatter name=\"PATTERN\">\n                <pattern-formatter pattern=\"%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n\"/>\n            </formatter>\n            <formatter name=\"COLOR-PATTERN\">\n                <pattern-formatter pattern=\"%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n\"/>\n            </formatter>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:bean-validation:1.0\"/>\n        <subsystem xmlns=\"urn:jboss:domain:core-management:1.0\"/>\n        <subsystem xmlns=\"urn:jboss:domain:datasources:6.0\">\n            <datasources>\n                <datasource jndi-name=\"java:jboss/datasources/ExampleDS\" pool-name=\"ExampleDS\" enabled=\"true\" use-java-context=\"true\" statistics-enabled=\"${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}\">\n                    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>\n                    <driver>h2</driver>\n                    <security>\n                        <user-name>sa</user-name>\n                        <password>sa</password>\n                    </security>\n                </datasource>\n                <datasource jndi-name=\"java:jboss/datasources/KeycloakDS\" pool-name=\"KeycloakDS\" enabled=\"true\" use-java-context=\"true\" use-ccm=\"true\">\n                    <connection-url>jdbc:postgresql://${env.DB_ADDR:postgres}/${env.DB_DATABASE:keycloak}${env.JDBC_PARAMS:}</connection-url>\n                    <driver>postgresql</driver>\n                    <pool>\n                        <flush-strategy>IdleConnections</flush-strategy>\n                    </pool>\n                    <security>\n                        <user-name>${env.DB_USER:keycloak}</user-name>\n                        <password>${env.DB_PASSWORD:password}</password>\n                    </security>\n                    <validation>\n                        <check-valid-connection-sql>SELECT 1</check-valid-connection-sql>\n                        <background-validation>true</background-validation>\n                        <background-validation-millis>60000</background-validation-millis>\n                    </validation>\n                </datasource>\n                <drivers>\n                    <driver name=\"h2\" module=\"com.h2database.h2\">\n                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>\n                    </driver>\n                    <driver name=\"postgresql\" module=\"org.postgresql.jdbc\">\n                        <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>\n                    </driver>\n                </drivers>\n            </datasources>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:deployment-scanner:2.0\">\n            <deployment-scanner path=\"deployments\" relative-to=\"jboss.server.base.dir\" scan-interval=\"5000\" runtime-failure-causes-rollback=\"${jboss.deployment.scanner.rollback.on.failure:false}\"/>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:ee:5.0\">\n            <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement>\n            <concurrent>\n                <context-services>\n                    <context-service name=\"default\" jndi-name=\"java:jboss/ee/concurrency/context/default\" use-transaction-setup-provider=\"true\"/>\n                </context-services>\n                <managed-thread-factories>\n                    <managed-thread-factory name=\"default\" jndi-name=\"java:jboss/ee/concurrency/factory/default\" context-service=\"default\"/>\n                </managed-thread-factories>\n                <managed-executor-services>\n                    <managed-executor-service name=\"default\" jndi-name=\"java:jboss/ee/concurrency/executor/default\" context-service=\"default\" hung-task-threshold=\"60000\" keepalive-time=\"5000\"/>\n                </managed-executor-services>\n                <managed-scheduled-executor-services>\n                    <managed-scheduled-executor-service name=\"default\" jndi-name=\"java:jboss/ee/concurrency/scheduler/default\" context-service=\"default\" hung-task-threshold=\"60000\" keepalive-time=\"3000\"/>\n                </managed-scheduled-executor-services>\n            </concurrent>\n            <default-bindings context-service=\"java:jboss/ee/concurrency/context/default\" datasource=\"java:jboss/datasources/ExampleDS\" managed-executor-service=\"java:jboss/ee/concurrency/executor/default\" managed-scheduled-executor-service=\"java:jboss/ee/concurrency/scheduler/default\" managed-thread-factory=\"java:jboss/ee/concurrency/factory/default\"/>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:ejb3:7.0\">\n            <session-bean>\n                <stateless>\n                    <bean-instance-pool-ref pool-name=\"slsb-strict-max-pool\"/>\n                </stateless>\n                <stateful default-access-timeout=\"5000\" cache-ref=\"distributable\" passivation-disabled-cache-ref=\"simple\"/>\n                <singleton default-access-timeout=\"5000\"/>\n            </session-bean>\n            <pools>\n                <bean-instance-pools>\n                    <strict-max-pool name=\"mdb-strict-max-pool\" derive-size=\"from-cpu-count\" instance-acquisition-timeout=\"5\" instance-acquisition-timeout-unit=\"MINUTES\"/>\n                    <strict-max-pool name=\"slsb-strict-max-pool\" derive-size=\"from-worker-pools\" instance-acquisition-timeout=\"5\" instance-acquisition-timeout-unit=\"MINUTES\"/>\n                </bean-instance-pools>\n            </pools>\n            <caches>\n                <cache name=\"simple\"/>\n                <cache name=\"distributable\" passivation-store-ref=\"infinispan\" aliases=\"passivating clustered\"/>\n            </caches>\n            <passivation-stores>\n                <passivation-store name=\"infinispan\" cache-container=\"ejb\" max-size=\"10000\"/>\n            </passivation-stores>\n            <async thread-pool-name=\"default\"/>\n            <timer-service thread-pool-name=\"default\" default-data-store=\"default-file-store\">\n                <data-stores>\n                    <file-data-store name=\"default-file-store\" path=\"timer-service-data\" relative-to=\"jboss.server.data.dir\"/>\n                </data-stores>\n            </timer-service>\n            <remote connector-ref=\"http-remoting-connector\" thread-pool-name=\"default\">\n                <channel-creation-options>\n                    <option name=\"MAX_OUTBOUND_MESSAGES\" value=\"1234\" type=\"remoting\"/>\n                </channel-creation-options>\n            </remote>\n            <thread-pools>\n                <thread-pool name=\"default\">\n                    <max-threads count=\"10\"/>\n                    <keepalive-time time=\"60\" unit=\"seconds\"/>\n                </thread-pool>\n            </thread-pools>\n            <default-security-domain value=\"other\"/>\n            <default-missing-method-permissions-deny-access value=\"true\"/>\n            <statistics enabled=\"${wildfly.ejb3.statistics-enabled:${wildfly.statistics-enabled:false}}\"/>\n            <log-system-exceptions value=\"true\"/>\n        </subsystem>\n        <subsystem xmlns=\"urn:wildfly:elytron:10.0\" final-providers=\"combined-providers\" disallowed-providers=\"OracleUcrypto\">\n            <providers>\n                <aggregate-providers name=\"combined-providers\">\n                    <providers name=\"elytron\"/>\n                    <providers name=\"openssl\"/>\n                </aggregate-providers>\n                <provider-loader name=\"elytron\" module=\"org.wildfly.security.elytron\"/>\n                <provider-loader name=\"openssl\" module=\"org.wildfly.openssl\"/>\n            </providers>\n            <audit-logging>\n                <file-audit-log name=\"local-audit\" path=\"audit.log\" relative-to=\"jboss.server.log.dir\" format=\"JSON\"/>\n            </audit-logging>\n            <security-domains>\n                <security-domain name=\"ApplicationDomain\" default-realm=\"ApplicationRealm\" permission-mapper=\"default-permission-mapper\">\n                    <realm name=\"ApplicationRealm\" role-decoder=\"groups-to-roles\"/>\n                    <realm name=\"local\"/>\n                </security-domain>\n                <security-domain name=\"ManagementDomain\" default-realm=\"ManagementRealm\" permission-mapper=\"default-permission-mapper\">\n                    <realm name=\"ManagementRealm\" role-decoder=\"groups-to-roles\"/>\n                    <realm name=\"local\" role-mapper=\"super-user-mapper\"/>\n                </security-domain>\n            </security-domains>\n            <security-realms>\n                <identity-realm name=\"local\" identity=\"$local\"/>\n                <properties-realm name=\"ApplicationRealm\">\n                    <users-properties path=\"application-users.properties\" relative-to=\"jboss.server.config.dir\" digest-realm-name=\"ApplicationRealm\"/>\n                    <groups-properties path=\"application-roles.properties\" relative-to=\"jboss.server.config.dir\"/>\n                </properties-realm>\n                <properties-realm name=\"ManagementRealm\">\n                    <users-properties path=\"mgmt-users.properties\" relative-to=\"jboss.server.config.dir\" digest-realm-name=\"ManagementRealm\"/>\n                    <groups-properties path=\"mgmt-groups.properties\" relative-to=\"jboss.server.config.dir\"/>\n                </properties-realm>\n            </security-realms>\n            <mappers>\n                <simple-permission-mapper name=\"default-permission-mapper\" mapping-mode=\"first\">\n                    <permission-mapping>\n                        <principal name=\"anonymous\"/>\n                        <permission-set name=\"default-permissions\"/>\n                    </permission-mapping>\n                    <permission-mapping match-all=\"true\">\n                        <permission-set name=\"login-permission\"/>\n                        <permission-set name=\"default-permissions\"/>\n                    </permission-mapping>\n                </simple-permission-mapper>\n                <constant-realm-mapper name=\"local\" realm-name=\"local\"/>\n                <simple-role-decoder name=\"groups-to-roles\" attribute=\"groups\"/>\n                <constant-role-mapper name=\"super-user-mapper\">\n                    <role name=\"SuperUser\"/>\n                </constant-role-mapper>\n            </mappers>\n            <permission-sets>\n                <permission-set name=\"login-permission\">\n                    <permission class-name=\"org.wildfly.security.auth.permission.LoginPermission\"/>\n                </permission-set>\n                <permission-set name=\"default-permissions\">\n                    <permission class-name=\"org.wildfly.extension.batch.jberet.deployment.BatchPermission\" module=\"org.wildfly.extension.batch.jberet\" target-name=\"*\"/>\n                    <permission class-name=\"org.wildfly.transaction.client.RemoteTransactionPermission\" module=\"org.wildfly.transaction.client\"/>\n                    <permission class-name=\"org.jboss.ejb.client.RemoteEJBPermission\" module=\"org.jboss.ejb-client\"/>\n                </permission-set>\n            </permission-sets>\n            <http>\n                <http-authentication-factory name=\"management-http-authentication\" security-domain=\"ManagementDomain\" http-server-mechanism-factory=\"global\">\n                    <mechanism-configuration>\n                        <mechanism mechanism-name=\"DIGEST\">\n                            <mechanism-realm realm-name=\"ManagementRealm\"/>\n                        </mechanism>\n                    </mechanism-configuration>\n                </http-authentication-factory>\n                <provider-http-server-mechanism-factory name=\"global\"/>\n            </http>\n            <sasl>\n                <sasl-authentication-factory name=\"application-sasl-authentication\" sasl-server-factory=\"configured\" security-domain=\"ApplicationDomain\">\n                    <mechanism-configuration>\n                        <mechanism mechanism-name=\"JBOSS-LOCAL-USER\" realm-mapper=\"local\"/>\n                        <mechanism mechanism-name=\"DIGEST-MD5\">\n                            <mechanism-realm realm-name=\"ApplicationRealm\"/>\n                        </mechanism>\n                    </mechanism-configuration>\n                </sasl-authentication-factory>\n                <sasl-authentication-factory name=\"management-sasl-authentication\" sasl-server-factory=\"configured\" security-domain=\"ManagementDomain\">\n                    <mechanism-configuration>\n                        <mechanism mechanism-name=\"JBOSS-LOCAL-USER\" realm-mapper=\"local\"/>\n                        <mechanism mechanism-name=\"DIGEST-MD5\">\n                            <mechanism-realm realm-name=\"ManagementRealm\"/>\n                        </mechanism>\n                    </mechanism-configuration>\n                </sasl-authentication-factory>\n                <configurable-sasl-server-factory name=\"configured\" sasl-server-factory=\"elytron\">\n                    <properties>\n                        <property name=\"wildfly.sasl.local-user.default-user\" value=\"$local\"/>\n                    </properties>\n                </configurable-sasl-server-factory>\n                <mechanism-provider-filtering-sasl-server-factory name=\"elytron\" sasl-server-factory=\"global\">\n                    <filters>\n                        <filter provider-name=\"WildFlyElytron\"/>\n                    </filters>\n                </mechanism-provider-filtering-sasl-server-factory>\n                <provider-sasl-server-factory name=\"global\"/>\n            </sasl>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:infinispan:10.0\">\n            <cache-container name=\"keycloak\" module=\"org.keycloak.keycloak-model-infinispan\">\n                <transport lock-timeout=\"60000\"/>\n                <local-cache name=\"realms\">\n                    <object-memory size=\"10000\"/>\n                </local-cache>\n                <local-cache name=\"users\">\n                    <object-memory size=\"10000\"/>\n                </local-cache>\n                <local-cache name=\"authorization\">\n                    <object-memory size=\"10000\"/>\n                </local-cache>\n                <local-cache name=\"keys\">\n                    <object-memory size=\"1000\"/>\n                    <expiration max-idle=\"3600000\"/>\n                </local-cache>\n                <replicated-cache name=\"work\"/>\n                <distributed-cache name=\"sessions\" owners=\"1\"/>\n                <distributed-cache name=\"authenticationSessions\" owners=\"1\"/>\n                <distributed-cache name=\"offlineSessions\" owners=\"1\"/>\n                <distributed-cache name=\"clientSessions\" owners=\"1\"/>\n                <distributed-cache name=\"offlineClientSessions\" owners=\"1\"/>\n                <distributed-cache name=\"loginFailures\" owners=\"1\"/>\n                <distributed-cache name=\"actionTokens\" owners=\"2\">\n                    <object-memory size=\"-1\"/>\n                    <expiration interval=\"300000\" max-idle=\"-1\"/>\n                </distributed-cache>\n            </cache-container>\n            <cache-container name=\"server\" aliases=\"singleton cluster\" default-cache=\"default\" module=\"org.wildfly.clustering.server\">\n                <transport lock-timeout=\"60000\"/>\n                <replicated-cache name=\"default\">\n                    <transaction mode=\"BATCH\"/>\n                </replicated-cache>\n            </cache-container>\n            <cache-container name=\"web\" default-cache=\"dist\" module=\"org.wildfly.clustering.web.infinispan\">\n                <transport lock-timeout=\"60000\"/>\n                <replicated-cache name=\"sso\">\n                    <locking isolation=\"REPEATABLE_READ\"/>\n                    <transaction mode=\"BATCH\"/>\n                </replicated-cache>\n                <distributed-cache name=\"dist\">\n                    <locking isolation=\"REPEATABLE_READ\"/>\n                    <transaction mode=\"BATCH\"/>\n                    <file-store/>\n                </distributed-cache>\n                <distributed-cache name=\"routing\"/>\n            </cache-container>\n            <cache-container name=\"ejb\" aliases=\"sfsb\" default-cache=\"dist\" module=\"org.wildfly.clustering.ejb.infinispan\">\n                <transport lock-timeout=\"60000\"/>\n                <distributed-cache name=\"dist\">\n                    <locking isolation=\"REPEATABLE_READ\"/>\n                    <transaction mode=\"BATCH\"/>\n                    <file-store/>\n                </distributed-cache>\n            </cache-container>\n            <cache-container name=\"hibernate\" module=\"org.infinispan.hibernate-cache\">\n                <transport lock-timeout=\"60000\"/>\n                <local-cache name=\"local-query\">\n                    <object-memory size=\"10000\"/>\n                    <expiration max-idle=\"100000\"/>\n                </local-cache>\n                <invalidation-cache name=\"entity\">\n                    <transaction mode=\"NON_XA\"/>\n                    <object-memory size=\"10000\"/>\n                    <expiration max-idle=\"100000\"/>\n                </invalidation-cache>\n                <replicated-cache name=\"timestamps\"/>\n            </cache-container>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:io:3.0\">\n            <worker name=\"default\"/>\n            <buffer-pool name=\"default\"/>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:jaxrs:2.0\"/>\n        <subsystem xmlns=\"urn:jboss:domain:jca:5.0\">\n            <archive-validation enabled=\"true\" fail-on-error=\"true\" fail-on-warn=\"false\"/>\n            <bean-validation enabled=\"true\"/>\n            <default-workmanager>\n                <short-running-threads>\n                    <core-threads count=\"50\"/>\n                    <queue-length count=\"50\"/>\n                    <max-threads count=\"50\"/>\n                    <keepalive-time time=\"10\" unit=\"seconds\"/>\n                </short-running-threads>\n                <long-running-threads>\n                    <core-threads count=\"50\"/>\n                    <queue-length count=\"50\"/>\n                    <max-threads count=\"50\"/>\n                    <keepalive-time time=\"10\" unit=\"seconds\"/>\n                </long-running-threads>\n            </default-workmanager>\n            <cached-connection-manager/>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:jgroups:8.0\">\n            <channels default=\"ee\">\n                <channel name=\"ee\" stack=\"udp\" cluster=\"ejb\"/>\n            </channels>\n            <stacks>\n                <stack name=\"udp\">\n                    <transport type=\"UDP\" socket-binding=\"jgroups-udp\"/>\n                    <protocol type=\"PING\"/>\n                    <protocol type=\"MERGE3\"/>\n                    <socket-protocol type=\"FD_SOCK\" socket-binding=\"jgroups-udp-fd\"/>\n                    <protocol type=\"FD_ALL\"/>\n                    <protocol type=\"VERIFY_SUSPECT\"/>\n                    <protocol type=\"pbcast.NAKACK2\"/>\n                    <protocol type=\"UNICAST3\"/>\n                    <protocol type=\"pbcast.STABLE\"/>\n                    <protocol type=\"pbcast.GMS\"/>\n                    <protocol type=\"UFC\"/>\n                    <protocol type=\"MFC\"/>\n                    <protocol type=\"FRAG3\"/>\n                </stack>\n                <stack name=\"tcp\">\n                    <transport type=\"TCP\" socket-binding=\"jgroups-tcp\"/>\n                    <socket-protocol type=\"MPING\" socket-binding=\"jgroups-mping\"/>\n                    <protocol type=\"MERGE3\"/>\n                    <socket-protocol type=\"FD_SOCK\" socket-binding=\"jgroups-tcp-fd\"/>\n                    <protocol type=\"FD_ALL\"/>\n                    <protocol type=\"VERIFY_SUSPECT\"/>\n                    <protocol type=\"pbcast.NAKACK2\"/>\n                    <protocol type=\"UNICAST3\"/>\n                    <protocol type=\"pbcast.STABLE\"/>\n                    <protocol type=\"pbcast.GMS\"/>\n                    <protocol type=\"MFC\"/>\n                    <protocol type=\"FRAG3\"/>\n                </stack>\n            </stacks>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:jmx:1.3\">\n            <expose-resolved-model/>\n            <expose-expression-model/>\n            <remoting-connector/>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:jpa:1.1\">\n            <jpa default-datasource=\"\" default-extended-persistence-inheritance=\"DEEP\"/>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:keycloak-server:1.1\">\n            <web-context>auth</web-context>\n            <providers>\n                <provider>\n                    classpath:${jboss.home.dir}/providers/*\n                </provider>\n            </providers>\n            <master-realm-name>master</master-realm-name>\n            <scheduled-task-interval>900</scheduled-task-interval>\n            <theme>\n                <staticMaxAge>-1</staticMaxAge>\n                <cacheThemes>false</cacheThemes>\n                <cacheTemplates>false</cacheTemplates>\n                <welcomeTheme>${env.KEYCLOAK_WELCOME_THEME:keycloak}</welcomeTheme>\n                <default>${env.KEYCLOAK_DEFAULT_THEME:keycloak}</default>\n                <dir>${jboss.home.dir}/themes</dir>\n            </theme>\n            <spi name=\"eventsStore\">\n                <provider name=\"jpa\" enabled=\"true\">\n                    <properties>\n                        <property name=\"exclude-events\" value=\"[&quot;REFRESH_TOKEN&quot;]\"/>\n                    </properties>\n                </provider>\n            </spi>\n            <spi name=\"userCache\">\n                <provider name=\"default\" enabled=\"true\"/>\n            </spi>\n            <spi name=\"userSessionPersister\">\n                <default-provider>jpa</default-provider>\n            </spi>\n            <spi name=\"timer\">\n                <default-provider>basic</default-provider>\n            </spi>\n            <spi name=\"connectionsHttpClient\">\n                <provider name=\"default\" enabled=\"true\"/>\n            </spi>\n            <spi name=\"connectionsJpa\">\n                <provider name=\"default\" enabled=\"true\">\n                    <properties>\n                        <property name=\"dataSource\" value=\"java:jboss/datasources/KeycloakDS\"/>\n                        <property name=\"initializeEmpty\" value=\"true\"/>\n                        <property name=\"migrationStrategy\" value=\"update\"/>\n                        <property name=\"migrationExport\" value=\"${jboss.home.dir}/keycloak-database-update.sql\"/>\n                        <property name=\"schema\" value=\"${env.DB_SCHEMA:public}\"/>\n                    </properties>\n                </provider>\n            </spi>\n            <spi name=\"realmCache\">\n                <provider name=\"default\" enabled=\"true\"/>\n            </spi>\n            <spi name=\"connectionsInfinispan\">\n                <default-provider>default</default-provider>\n                <provider name=\"default\" enabled=\"true\">\n                    <properties>\n                        <property name=\"cacheContainer\" value=\"java:jboss/infinispan/container/keycloak\"/>\n                    </properties>\n                </provider>\n            </spi>\n            <spi name=\"jta-lookup\">\n                <default-provider>${keycloak.jta.lookup.provider:jboss}</default-provider>\n                <provider name=\"jboss\" enabled=\"true\"/>\n            </spi>\n            <spi name=\"publicKeyStorage\">\n                <provider name=\"infinispan\" enabled=\"true\">\n                    <properties>\n                        <property name=\"minTimeBetweenRequests\" value=\"10\"/>\n                    </properties>\n                </provider>\n            </spi>\n            <spi name=\"x509cert-lookup\">\n                <default-provider>${keycloak.x509cert.lookup.provider:default}</default-provider>\n                <provider name=\"default\" enabled=\"true\"/>\n            </spi>\n            <spi name=\"hostname\">\n                <default-provider>${keycloak.hostname.provider:default}</default-provider>\n                <provider name=\"default\" enabled=\"true\">\n                    <properties>\n                        <property name=\"frontendUrl\" value=\"${keycloak.frontendUrl:}\"/>\n                        <property name=\"forceBackendUrlToFrontendUrl\" value=\"false\"/>\n                    </properties>\n                </provider>\n                <provider name=\"fixed\" enabled=\"true\">\n                    <properties>\n                        <property name=\"hostname\" value=\"${keycloak.hostname.fixed.hostname:localhost}\"/>\n                        <property name=\"httpPort\" value=\"${keycloak.hostname.fixed.httpPort:-1}\"/>\n                        <property name=\"httpsPort\" value=\"${keycloak.hostname.fixed.httpsPort:-1}\"/>\n                        <property name=\"alwaysHttps\" value=\"${keycloak.hostname.fixed.alwaysHttps:false}\"/>\n                    </properties>\n                </provider>\n            </spi>\n            <spi name=\"emailTemplate\">\n                <provider name=\"freemarker\" enabled=\"false\"/>\n            </spi>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:mail:4.0\">\n            <mail-session name=\"default\" jndi-name=\"java:jboss/mail/Default\">\n                <smtp-server outbound-socket-binding-ref=\"mail-smtp\"/>\n            </mail-session>\n        </subsystem>\n        <subsystem xmlns=\"urn:wildfly:microprofile-config-smallrye:1.0\"/>\n        <subsystem xmlns=\"urn:wildfly:microprofile-health-smallrye:2.0\" security-enabled=\"false\" empty-liveness-checks-status=\"${env.MP_HEALTH_EMPTY_LIVENESS_CHECKS_STATUS:UP}\" empty-readiness-checks-status=\"${env.MP_HEALTH_EMPTY_READINESS_CHECKS_STATUS:UP}\"/>\n        <subsystem xmlns=\"urn:wildfly:microprofile-metrics-smallrye:2.0\" security-enabled=\"false\" exposed-subsystems=\"*\" prefix=\"${wildfly.metrics.prefix:wildfly}\"/>\n        <subsystem xmlns=\"urn:jboss:domain:modcluster:5.0\">\n            <proxy name=\"default\" advertise-socket=\"modcluster\" listener=\"ajp\">\n                <dynamic-load-provider>\n                    <load-metric type=\"cpu\"/>\n                </dynamic-load-provider>\n            </proxy>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:naming:2.0\">\n            <remote-naming/>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:remoting:4.0\">\n            <http-connector name=\"http-remoting-connector\" connector-ref=\"default\" security-realm=\"ApplicationRealm\"/>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:request-controller:1.0\"/>\n        <subsystem xmlns=\"urn:jboss:domain:security:2.0\">\n            <security-domains>\n                <security-domain name=\"other\" cache-type=\"default\">\n                    <authentication>\n                        <login-module code=\"Remoting\" flag=\"optional\">\n                            <module-option name=\"password-stacking\" value=\"useFirstPass\"/>\n                        </login-module>\n                        <login-module code=\"RealmDirect\" flag=\"required\">\n                            <module-option name=\"password-stacking\" value=\"useFirstPass\"/>\n                        </login-module>\n                    </authentication>\n                </security-domain>\n                <security-domain name=\"jboss-web-policy\" cache-type=\"default\">\n                    <authorization>\n                        <policy-module code=\"Delegating\" flag=\"required\"/>\n                    </authorization>\n                </security-domain>\n                <security-domain name=\"jaspitest\" cache-type=\"default\">\n                    <authentication-jaspi>\n                        <login-module-stack name=\"dummy\">\n                            <login-module code=\"Dummy\" flag=\"optional\"/>\n                        </login-module-stack>\n                        <auth-module code=\"Dummy\"/>\n                    </authentication-jaspi>\n                </security-domain>\n                <security-domain name=\"jboss-ejb-policy\" cache-type=\"default\">\n                    <authorization>\n                        <policy-module code=\"Delegating\" flag=\"required\"/>\n                    </authorization>\n                </security-domain>\n            </security-domains>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:security-manager:1.0\">\n            <deployment-permissions>\n                <maximum-set>\n                    <permission class=\"java.security.AllPermission\"/>\n                </maximum-set>\n            </deployment-permissions>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:transactions:5.0\">\n            <core-environment node-identifier=\"${jboss.tx.node.id:1}\">\n                <process-id>\n                    <uuid/>\n                </process-id>\n            </core-environment>\n            <recovery-environment socket-binding=\"txn-recovery-environment\" status-socket-binding=\"txn-status-manager\"/>\n            <coordinator-environment statistics-enabled=\"${wildfly.transactions.statistics-enabled:${wildfly.statistics-enabled:false}}\"/>\n            <object-store path=\"tx-object-store\" relative-to=\"jboss.server.data.dir\"/>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:undertow:11.0\" default-server=\"default-server\" default-virtual-host=\"default-host\" default-servlet-container=\"default\" default-security-domain=\"other\" statistics-enabled=\"${wildfly.undertow.statistics-enabled:${wildfly.statistics-enabled:false}}\">\n            <buffer-cache name=\"default\"/>\n            <server name=\"default-server\">\n                <ajp-listener name=\"ajp\" socket-binding=\"ajp\"/>\n                <http-listener name=\"default\" socket-binding=\"http\" redirect-socket=\"https\" proxy-address-forwarding=\"${env.PROXY_ADDRESS_FORWARDING:false}\" enable-http2=\"true\"/>\n                <https-listener name=\"https\" socket-binding=\"https\" proxy-address-forwarding=\"${env.PROXY_ADDRESS_FORWARDING:false}\" security-realm=\"ApplicationRealm\" enable-http2=\"true\"/>\n                <host name=\"default-host\" alias=\"localhost\">\n                    <location name=\"/\" handler=\"welcome-content\"/>\n                    <http-invoker security-realm=\"ApplicationRealm\"/>\n                </host>\n            </server>\n            <servlet-container name=\"default\">\n                <jsp-config/>\n                <websockets/>\n            </servlet-container>\n            <handlers>\n                <file name=\"welcome-content\" path=\"${jboss.home.dir}/welcome-content\"/>\n            </handlers>\n        </subsystem>\n        <subsystem xmlns=\"urn:jboss:domain:weld:4.0\"/>\n    </profile>\n    <interfaces>\n        <interface name=\"management\">\n            <inet-address value=\"${jboss.bind.address.management:127.0.0.1}\"/>\n        </interface>\n        <interface name=\"private\">\n            <inet-address value=\"${jboss.bind.address.private:127.0.0.1}\"/>\n        </interface>\n        <interface name=\"public\">\n            <inet-address value=\"${jboss.bind.address:127.0.0.1}\"/>\n        </interface>\n    </interfaces>\n    <socket-binding-group name=\"standard-sockets\" default-interface=\"public\" port-offset=\"${jboss.socket.binding.port-offset:0}\">\n        <socket-binding name=\"ajp\" port=\"${jboss.ajp.port:8009}\"/>\n        <socket-binding name=\"http\" port=\"${jboss.http.port:8080}\"/>\n        <socket-binding name=\"https\" port=\"${jboss.https.port:8443}\"/>\n        <socket-binding name=\"jgroups-mping\" interface=\"private\" multicast-address=\"${jboss.default.multicast.address:230.0.0.4}\" multicast-port=\"45700\"/>\n        <socket-binding name=\"jgroups-tcp\" interface=\"private\" port=\"7600\"/>\n        <socket-binding name=\"jgroups-tcp-fd\" interface=\"private\" port=\"57600\"/>\n        <socket-binding name=\"jgroups-udp\" interface=\"private\" port=\"55200\" multicast-address=\"${jboss.default.multicast.address:230.0.0.4}\" multicast-port=\"45688\"/>\n        <socket-binding name=\"jgroups-udp-fd\" interface=\"private\" port=\"54200\"/>\n        <socket-binding name=\"management-http\" interface=\"management\" port=\"${jboss.management.http.port:9990}\"/>\n        <socket-binding name=\"management-https\" interface=\"management\" port=\"${jboss.management.https.port:9993}\"/>\n        <socket-binding name=\"modcluster\" multicast-address=\"${jboss.modcluster.multicast.address:224.0.1.105}\" multicast-port=\"23364\"/>\n        <socket-binding name=\"txn-recovery-environment\" port=\"4712\"/>\n        <socket-binding name=\"txn-status-manager\" port=\"4713\"/>\n        <outbound-socket-binding name=\"mail-smtp\">\n            <remote-destination host=\"localhost\" port=\"25\"/>\n        </outbound-socket-binding>\n    </socket-binding-group>\n</server>\n"
  },
  {
    "path": "docker-compose.yml",
    "content": "version: '3.7'\n\nservices:\n  postgres:\n    image: postgres:13\n    container_name: postgres\n    environment:\n      POSTGRES_DB: keycloak\n      POSTGRES_USER: keycloak\n      POSTGRES_PASSWORD: password\n    ports:\n      - 5434:5432\n\n  keycloak:\n    image: jboss/keycloak:11.0.3\n    container_name: keycloak\n    environment:\n      DB_VENDOR: POSTGRES\n      DB_ADDR: postgres\n      DB_DATABASE: keycloak\n      DB_USER: keycloak\n      DB_PASSWORD: password\n      KEYCLOAK_USER: admin\n      KEYCLOAK_PASSWORD: password\n      PROXY_ADDRESS_FORWARDING: \"true\"\n      TZ: UTC\n      KEYCLOAK_DEFAULT_THEME: theme-minimal\n      KEYCLOAK_WELCOME_THEME: theme-minimal\n      #KEYCLOAK_LOGLEVEL: DEBUG\n    ports:\n      - 8088:8080\n    command:\n      - \"-Dkeycloak.migration.action=import -Dkeycloak.migration.provider=dir -Dkeycloak.migration.dir=/opt/jboss/keycloak/import-dir -Dkeycloak.migration.strategy=OVERWRITE_EXISTING\"\n#      - \"-Dkeycloak.migration.action=export -Dkeycloak.migration.provider=dir -Dkeycloak.migration.dir=/opt/jboss/keycloak/export-dir -Dkeycloak.migration.usersPerFile=1000 -Dkeycloak.migration.strategy=OVERWRITE_EXISTING\"\n    volumes:\n      - ./_resources/demo-config/standalone-ha.xml:/opt/jboss/keycloak/standalone/configuration/standalone-ha.xml\n      - ./_resources/demo-config/import-dir:/opt/jboss/keycloak/import-dir\n      - ./_resources/demo-config/export-dir:/opt/jboss/keycloak/export-dir\n      #- ./theme-minimal/src/main/resources/theme/theme-minimal:/opt/jboss/keycloak/themes/theme-minimal\n      - ./theme-minimal/target/theme-minimal-0.0.1-SNAPSHOT.jar:/opt/jboss/keycloak/standalone/deployments/theme-minimal-0.0.1-SNAPSHOT.jar\n      - ./provider-domain/target/provider-domain-0.0.1-SNAPSHOT.jar:/opt/jboss/keycloak/standalone/deployments/provider-domain-0.0.1-SNAPSHOT.jar\n      - ./spi-registration-profile/target/spi-registration-profile-0.0.1-SNAPSHOT.jar:/opt/jboss/keycloak/standalone/deployments/spi-registration-profile-0.0.1-SNAPSHOT.jar\n      - ./spi-resource/target/spi-resource-0.0.1-SNAPSHOT.jar:/opt/jboss/keycloak/standalone/deployments/spi-resource-0.0.1-SNAPSHOT.jar\n      - ./spi-event-listener/target/spi-event-listener-0.0.1-SNAPSHOT.jar:/opt/jboss/keycloak/standalone/deployments/spi-event-listener-0.0.1-SNAPSHOT.jar\n      - ./spi-mail-template-override/target/spi-mail-template-override-0.0.1-SNAPSHOT.jar:/opt/jboss/keycloak/standalone/deployments/spi-mail-template-override-0.0.1-SNAPSHOT.jar\n    depends_on:\n      - postgres\n      - mailhog\n\n  mailhog:\n    image: mailhog/mailhog:latest\n    container_name: mailhog\n    ports:\n      - 8025:8025\n"
  },
  {
    "path": "mvnw",
    "content": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#    https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n# ----------------------------------------------------------------------------\n\n# ----------------------------------------------------------------------------\n# Maven Start Up Batch script\n#\n# Required ENV vars:\n# ------------------\n#   JAVA_HOME - location of a JDK home dir\n#\n# Optional ENV vars\n# -----------------\n#   M2_HOME - location of maven2's installed home dir\n#   MAVEN_OPTS - parameters passed to the Java VM when running Maven\n#     e.g. to debug Maven itself, use\n#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000\n#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files\n# ----------------------------------------------------------------------------\n\nif [ -z \"$MAVEN_SKIP_RC\" ] ; then\n\n  if [ -f /etc/mavenrc ] ; then\n    . /etc/mavenrc\n  fi\n\n  if [ -f \"$HOME/.mavenrc\" ] ; then\n    . \"$HOME/.mavenrc\"\n  fi\n\nfi\n\n# OS specific support.  $var _must_ be set to either true or false.\ncygwin=false;\ndarwin=false;\nmingw=false\ncase \"`uname`\" in\n  CYGWIN*) cygwin=true ;;\n  MINGW*) mingw=true;;\n  Darwin*) darwin=true\n    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home\n    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html\n    if [ -z \"$JAVA_HOME\" ]; then\n      if [ -x \"/usr/libexec/java_home\" ]; then\n        export JAVA_HOME=\"`/usr/libexec/java_home`\"\n      else\n        export JAVA_HOME=\"/Library/Java/Home\"\n      fi\n    fi\n    ;;\nesac\n\nif [ -z \"$JAVA_HOME\" ] ; then\n  if [ -r /etc/gentoo-release ] ; then\n    JAVA_HOME=`java-config --jre-home`\n  fi\nfi\n\nif [ -z \"$M2_HOME\" ] ; then\n  ## resolve links - $0 may be a link to maven's home\n  PRG=\"$0\"\n\n  # need this for relative symlinks\n  while [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n      PRG=\"$link\"\n    else\n      PRG=\"`dirname \"$PRG\"`/$link\"\n    fi\n  done\n\n  saveddir=`pwd`\n\n  M2_HOME=`dirname \"$PRG\"`/..\n\n  # make it fully qualified\n  M2_HOME=`cd \"$M2_HOME\" && pwd`\n\n  cd \"$saveddir\"\n  # echo Using m2 at $M2_HOME\nfi\n\n# For Cygwin, ensure paths are in UNIX format before anything is touched\nif $cygwin ; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=`cygpath --unix \"$M2_HOME\"`\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=`cygpath --unix \"$JAVA_HOME\"`\n  [ -n \"$CLASSPATH\" ] &&\n    CLASSPATH=`cygpath --path --unix \"$CLASSPATH\"`\nfi\n\n# For Mingw, ensure paths are in UNIX format before anything is touched\nif $mingw ; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=\"`(cd \"$M2_HOME\"; pwd)`\"\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=\"`(cd \"$JAVA_HOME\"; pwd)`\"\nfi\n\nif [ -z \"$JAVA_HOME\" ]; then\n  javaExecutable=\"`which javac`\"\n  if [ -n \"$javaExecutable\" ] && ! [ \"`expr \\\"$javaExecutable\\\" : '\\([^ ]*\\)'`\" = \"no\" ]; then\n    # readlink(1) is not available as standard on Solaris 10.\n    readLink=`which readlink`\n    if [ ! `expr \"$readLink\" : '\\([^ ]*\\)'` = \"no\" ]; then\n      if $darwin ; then\n        javaHome=\"`dirname \\\"$javaExecutable\\\"`\"\n        javaExecutable=\"`cd \\\"$javaHome\\\" && pwd -P`/javac\"\n      else\n        javaExecutable=\"`readlink -f \\\"$javaExecutable\\\"`\"\n      fi\n      javaHome=\"`dirname \\\"$javaExecutable\\\"`\"\n      javaHome=`expr \"$javaHome\" : '\\(.*\\)/bin'`\n      JAVA_HOME=\"$javaHome\"\n      export JAVA_HOME\n    fi\n  fi\nfi\n\nif [ -z \"$JAVACMD\" ] ; then\n  if [ -n \"$JAVA_HOME\"  ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n      # IBM's JDK on AIX uses strange locations for the executables\n      JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n      JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n  else\n    JAVACMD=\"`which java`\"\n  fi\nfi\n\nif [ ! -x \"$JAVACMD\" ] ; then\n  echo \"Error: JAVA_HOME is not defined correctly.\" >&2\n  echo \"  We cannot execute $JAVACMD\" >&2\n  exit 1\nfi\n\nif [ -z \"$JAVA_HOME\" ] ; then\n  echo \"Warning: JAVA_HOME environment variable is not set.\"\nfi\n\nCLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher\n\n# traverses directory structure from process work directory to filesystem root\n# first directory with .mvn subdirectory is considered project base directory\nfind_maven_basedir() {\n\n  if [ -z \"$1\" ]\n  then\n    echo \"Path not specified to find_maven_basedir\"\n    return 1\n  fi\n\n  basedir=\"$1\"\n  wdir=\"$1\"\n  while [ \"$wdir\" != '/' ] ; do\n    if [ -d \"$wdir\"/.mvn ] ; then\n      basedir=$wdir\n      break\n    fi\n    # workaround for JBEAP-8937 (on Solaris 10/Sparc)\n    if [ -d \"${wdir}\" ]; then\n      wdir=`cd \"$wdir/..\"; pwd`\n    fi\n    # end of workaround\n  done\n  echo \"${basedir}\"\n}\n\n# concatenates all lines of a file\nconcat_lines() {\n  if [ -f \"$1\" ]; then\n    echo \"$(tr -s '\\n' ' ' < \"$1\")\"\n  fi\n}\n\nBASE_DIR=`find_maven_basedir \"$(pwd)\"`\nif [ -z \"$BASE_DIR\" ]; then\n  exit 1;\nfi\n\n##########################################################################################\n# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central\n# This allows using the maven wrapper in projects that prohibit checking in binary data.\n##########################################################################################\nif [ -r \"$BASE_DIR/.mvn/wrapper/maven-wrapper.jar\" ]; then\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Found .mvn/wrapper/maven-wrapper.jar\"\n    fi\nelse\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ...\"\n    fi\n    if [ -n \"$MVNW_REPOURL\" ]; then\n      jarUrl=\"$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar\"\n    else\n      jarUrl=\"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar\"\n    fi\n    while IFS=\"=\" read key value; do\n      case \"$key\" in (wrapperUrl) jarUrl=\"$value\"; break ;;\n      esac\n    done < \"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties\"\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Downloading from: $jarUrl\"\n    fi\n    wrapperJarPath=\"$BASE_DIR/.mvn/wrapper/maven-wrapper.jar\"\n    if $cygwin; then\n      wrapperJarPath=`cygpath --path --windows \"$wrapperJarPath\"`\n    fi\n\n    if command -v wget > /dev/null; then\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Found wget ... using wget\"\n        fi\n        if [ -z \"$MVNW_USERNAME\" ] || [ -z \"$MVNW_PASSWORD\" ]; then\n            wget \"$jarUrl\" -O \"$wrapperJarPath\"\n        else\n            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD \"$jarUrl\" -O \"$wrapperJarPath\"\n        fi\n    elif command -v curl > /dev/null; then\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Found curl ... using curl\"\n        fi\n        if [ -z \"$MVNW_USERNAME\" ] || [ -z \"$MVNW_PASSWORD\" ]; then\n            curl -o \"$wrapperJarPath\" \"$jarUrl\" -f\n        else\n            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o \"$wrapperJarPath\" \"$jarUrl\" -f\n        fi\n\n    else\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Falling back to using Java to download\"\n        fi\n        javaClass=\"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java\"\n        # For Cygwin, switch paths to Windows format before running javac\n        if $cygwin; then\n          javaClass=`cygpath --path --windows \"$javaClass\"`\n        fi\n        if [ -e \"$javaClass\" ]; then\n            if [ ! -e \"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class\" ]; then\n                if [ \"$MVNW_VERBOSE\" = true ]; then\n                  echo \" - Compiling MavenWrapperDownloader.java ...\"\n                fi\n                # Compiling the Java class\n                (\"$JAVA_HOME/bin/javac\" \"$javaClass\")\n            fi\n            if [ -e \"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class\" ]; then\n                # Running the downloader\n                if [ \"$MVNW_VERBOSE\" = true ]; then\n                  echo \" - Running MavenWrapperDownloader.java ...\"\n                fi\n                (\"$JAVA_HOME/bin/java\" -cp .mvn/wrapper MavenWrapperDownloader \"$MAVEN_PROJECTBASEDIR\")\n            fi\n        fi\n    fi\nfi\n##########################################################################################\n# End of extension\n##########################################################################################\n\nexport MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-\"$BASE_DIR\"}\nif [ \"$MVNW_VERBOSE\" = true ]; then\n  echo $MAVEN_PROJECTBASEDIR\nfi\nMAVEN_OPTS=\"$(concat_lines \"$MAVEN_PROJECTBASEDIR/.mvn/jvm.config\") $MAVEN_OPTS\"\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=`cygpath --path --windows \"$M2_HOME\"`\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=`cygpath --path --windows \"$JAVA_HOME\"`\n  [ -n \"$CLASSPATH\" ] &&\n    CLASSPATH=`cygpath --path --windows \"$CLASSPATH\"`\n  [ -n \"$MAVEN_PROJECTBASEDIR\" ] &&\n    MAVEN_PROJECTBASEDIR=`cygpath --path --windows \"$MAVEN_PROJECTBASEDIR\"`\nfi\n\n# Provide a \"standardized\" way to retrieve the CLI args that will\n# work with both Windows and non-Windows executions.\nMAVEN_CMD_LINE_ARGS=\"$MAVEN_CONFIG $@\"\nexport MAVEN_CMD_LINE_ARGS\n\nWRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain\n\nexec \"$JAVACMD\" \\\n  $MAVEN_OPTS \\\n  -classpath \"$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar\" \\\n  \"-Dmaven.home=${M2_HOME}\" \"-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}\" \\\n  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG \"$@\"\n"
  },
  {
    "path": "mvnw.cmd",
    "content": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software Foundation (ASF) under one\n@REM or more contributor license agreements.  See the NOTICE file\n@REM distributed with this work for additional information\n@REM regarding copyright ownership.  The ASF licenses this file\n@REM to you under the Apache License, Version 2.0 (the\n@REM \"License\"); you may not use this file except in compliance\n@REM with the License.  You may obtain a copy of the License at\n@REM\n@REM    https://www.apache.org/licenses/LICENSE-2.0\n@REM\n@REM Unless required by applicable law or agreed to in writing,\n@REM software distributed under the License is distributed on an\n@REM \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n@REM KIND, either express or implied.  See the License for the\n@REM specific language governing permissions and limitations\n@REM under the License.\n@REM ----------------------------------------------------------------------------\n\n@REM ----------------------------------------------------------------------------\n@REM Maven Start Up Batch script\n@REM\n@REM Required ENV vars:\n@REM JAVA_HOME - location of a JDK home dir\n@REM\n@REM Optional ENV vars\n@REM M2_HOME - location of maven2's installed home dir\n@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands\n@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending\n@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven\n@REM     e.g. to debug Maven itself, use\n@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000\n@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files\n@REM ----------------------------------------------------------------------------\n\n@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'\n@echo off\n@REM set title of command window\ntitle %0\n@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'\n@if \"%MAVEN_BATCH_ECHO%\" == \"on\"  echo %MAVEN_BATCH_ECHO%\n\n@REM set %HOME% to equivalent of $HOME\nif \"%HOME%\" == \"\" (set \"HOME=%HOMEDRIVE%%HOMEPATH%\")\n\n@REM Execute a user defined script before this one\nif not \"%MAVEN_SKIP_RC%\" == \"\" goto skipRcPre\n@REM check for pre script, once with legacy .bat ending and once with .cmd ending\nif exist \"%HOME%\\mavenrc_pre.bat\" call \"%HOME%\\mavenrc_pre.bat\"\nif exist \"%HOME%\\mavenrc_pre.cmd\" call \"%HOME%\\mavenrc_pre.cmd\"\n:skipRcPre\n\n@setlocal\n\nset ERROR_CODE=0\n\n@REM To isolate internal variables from possible post scripts, we use another setlocal\n@setlocal\n\n@REM ==== START VALIDATION ====\nif not \"%JAVA_HOME%\" == \"\" goto OkJHome\n\necho.\necho Error: JAVA_HOME not found in your environment. >&2\necho Please set the JAVA_HOME variable in your environment to match the >&2\necho location of your Java installation. >&2\necho.\ngoto error\n\n:OkJHome\nif exist \"%JAVA_HOME%\\bin\\java.exe\" goto init\n\necho.\necho Error: JAVA_HOME is set to an invalid directory. >&2\necho JAVA_HOME = \"%JAVA_HOME%\" >&2\necho Please set the JAVA_HOME variable in your environment to match the >&2\necho location of your Java installation. >&2\necho.\ngoto error\n\n@REM ==== END VALIDATION ====\n\n:init\n\n@REM Find the project base dir, i.e. the directory that contains the folder \".mvn\".\n@REM Fallback to current working directory if not found.\n\nset MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%\nIF NOT \"%MAVEN_PROJECTBASEDIR%\"==\"\" goto endDetectBaseDir\n\nset EXEC_DIR=%CD%\nset WDIR=%EXEC_DIR%\n:findBaseDir\nIF EXIST \"%WDIR%\"\\.mvn goto baseDirFound\ncd ..\nIF \"%WDIR%\"==\"%CD%\" goto baseDirNotFound\nset WDIR=%CD%\ngoto findBaseDir\n\n:baseDirFound\nset MAVEN_PROJECTBASEDIR=%WDIR%\ncd \"%EXEC_DIR%\"\ngoto endDetectBaseDir\n\n:baseDirNotFound\nset MAVEN_PROJECTBASEDIR=%EXEC_DIR%\ncd \"%EXEC_DIR%\"\n\n:endDetectBaseDir\n\nIF NOT EXIST \"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\" goto endReadAdditionalConfig\n\n@setlocal EnableExtensions EnableDelayedExpansion\nfor /F \"usebackq delims=\" %%a in (\"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a\n@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%\n\n:endReadAdditionalConfig\n\nSET MAVEN_JAVA_EXE=\"%JAVA_HOME%\\bin\\java.exe\"\nset WRAPPER_JAR=\"%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.jar\"\nset WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain\n\nset DOWNLOAD_URL=\"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar\"\n\nFOR /F \"tokens=1,2 delims==\" %%A IN (\"%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.properties\") DO (\n    IF \"%%A\"==\"wrapperUrl\" SET DOWNLOAD_URL=%%B\n)\n\n@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central\n@REM This allows using the maven wrapper in projects that prohibit checking in binary data.\nif exist %WRAPPER_JAR% (\n    if \"%MVNW_VERBOSE%\" == \"true\" (\n        echo Found %WRAPPER_JAR%\n    )\n) else (\n    if not \"%MVNW_REPOURL%\" == \"\" (\n        SET DOWNLOAD_URL=\"%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar\"\n    )\n    if \"%MVNW_VERBOSE%\" == \"true\" (\n        echo Couldn't find %WRAPPER_JAR%, downloading it ...\n        echo Downloading from: %DOWNLOAD_URL%\n    )\n\n    powershell -Command \"&{\"^\n\t\t\"$webclient = new-object System.Net.WebClient;\"^\n\t\t\"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {\"^\n\t\t\"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');\"^\n\t\t\"}\"^\n\t\t\"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')\"^\n\t\t\"}\"\n    if \"%MVNW_VERBOSE%\" == \"true\" (\n        echo Finished downloading %WRAPPER_JAR%\n    )\n)\n@REM End of extension\n\n@REM Provide a \"standardized\" way to retrieve the CLI args that will\n@REM work with both Windows and non-Windows executions.\nset MAVEN_CMD_LINE_ARGS=%*\n\n%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% \"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%\" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*\nif ERRORLEVEL 1 goto error\ngoto end\n\n:error\nset ERROR_CODE=1\n\n:end\n@endlocal & set ERROR_CODE=%ERROR_CODE%\n\nif not \"%MAVEN_SKIP_RC%\" == \"\" goto skipRcPost\n@REM check for post script, once with legacy .bat ending and once with .cmd ending\nif exist \"%HOME%\\mavenrc_post.bat\" call \"%HOME%\\mavenrc_post.bat\"\nif exist \"%HOME%\\mavenrc_post.cmd\" call \"%HOME%\\mavenrc_post.cmd\"\n:skipRcPost\n\n@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'\nif \"%MAVEN_BATCH_PAUSE%\" == \"on\" pause\n\nif \"%MAVEN_TERMINATE_CMD%\" == \"on\" exit %ERROR_CODE%\n\nexit /B %ERROR_CODE%\n"
  },
  {
    "path": "pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\t<modelVersion>4.0.0</modelVersion>\n\n\t<groupId>com.zonaut.keycloak</groupId>\n\t<artifactId>keycloak-extensions</artifactId>\n\t<version>0.0.1-SNAPSHOT</version>\n\t<packaging>pom</packaging>\n\t<name>KEYCLOAK EXTENSIONS</name>\n\n\t<modules>\n\t\t<module>provider-domain</module>\n\t\t<module>spi-event-listener</module>\n\t\t<module>spi-mail-template-override</module>\n\t\t<module>spi-registration-profile</module>\n\t\t<module>spi-resource</module>\n\t\t<module>theme-minimal</module>\n\t</modules>\n\t\n</project>\n"
  },
  {
    "path": "provider-domain/README.md",
    "content": "# Provider domain\n\nAn example of adding new domain entities  \n\nThis will create the following new table\n\n* prfx_products\n\n## Keycloak config\n\nCopy the jar in the target folder to the `/opt/jboss/keycloak/standalone/deployments/` folder.\nOr when using Docker mount the file `./jar-name.jar:/opt/jboss/keycloak/standalone/deployments/jar-name.jar`\n"
  },
  {
    "path": "provider-domain/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.zonaut.keycloak</groupId>\n    <artifactId>provider-domain</artifactId>\n    <version>0.0.1-SNAPSHOT</version>\n    <packaging>jar</packaging>\n\n    <name>KEYCLOAK EXTENSIONS :: PROVIDER domain</name>\n    <description>Example of adding new domain entities</description>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n\n        <maven.compiler.source>11</maven.compiler.source>\n        <maven.compiler.target>11</maven.compiler.target>\n\n        <!-- https://mvnrepository.com/artifact/org.keycloak/keycloak-parent -->\n        <keycloak.version>11.0.3</keycloak.version>\n        <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->\n        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>\n        <!-- https://mvnrepository.com/artifact/org.wildfly.plugins/wildfly-maven-plugin -->\n        <maven-wildfly-plugin.version>2.0.2.Final</maven-wildfly-plugin.version>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-server-spi</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-server-spi-private</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-services</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-model-jpa</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>${maven-compiler-plugin.version}</version>\n            </plugin>\n            <plugin>\n                <groupId>org.wildfly.plugins</groupId>\n                <artifactId>wildfly-maven-plugin</artifactId>\n                <version>${maven-wildfly-plugin.version}</version>\n                <configuration>\n                    <skip>false</skip>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n</project>\n"
  },
  {
    "path": "provider-domain/src/main/java/com/zonaut/keycloak/extensions/domain/CustomJpaEntityProvider.java",
    "content": "package com.zonaut.keycloak.extensions.domain;\n\nimport org.keycloak.connections.jpa.entityprovider.JpaEntityProvider;\n\nimport java.util.Collections;\nimport java.util.List;\n\npublic class CustomJpaEntityProvider implements JpaEntityProvider {\n\n    @Override\n    public List<Class<?>> getEntities() {\n        return Collections.singletonList(Product.class);\n    }\n\n    @Override\n    public String getChangelogLocation() {\n    \treturn \"META-INF/custom-changelog.xml\";\n    }\n    \n    @Override\n    public void close() {\n    }\n\n    @Override\n    public String getFactoryId() {\n        return CustomJpaEntityProviderFactory.ID;\n    }\n\n}\n"
  },
  {
    "path": "provider-domain/src/main/java/com/zonaut/keycloak/extensions/domain/CustomJpaEntityProviderFactory.java",
    "content": "package com.zonaut.keycloak.extensions.domain;\n\nimport org.keycloak.Config.Scope;\nimport org.keycloak.connections.jpa.entityprovider.JpaEntityProvider;\nimport org.keycloak.connections.jpa.entityprovider.JpaEntityProviderFactory;\nimport org.keycloak.models.KeycloakSession;\nimport org.keycloak.models.KeycloakSessionFactory;\n\npublic class CustomJpaEntityProviderFactory implements JpaEntityProviderFactory {\n\n\tprotected static final String ID = \"provider-domain-custom\";\n\t\n    @Override\n    public JpaEntityProvider create(KeycloakSession session) {\n        return new CustomJpaEntityProvider();\n    }\n\n    @Override\n    public String getId() {\n        return ID;\n    }\n\n    @Override\n    public void init(Scope config) {\n    }\n\n    @Override\n    public void postInit(KeycloakSessionFactory factory) {\n    }\n\n    @Override\n    public void close() {\n    }\n\n}\n"
  },
  {
    "path": "provider-domain/src/main/java/com/zonaut/keycloak/extensions/domain/Product.java",
    "content": "package com.zonaut.keycloak.extensions.domain;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.Id;\nimport javax.persistence.Table;\n\n@Entity\n@Table(name = \"PRFX_PRODUCTS\")\npublic class Product {\n\n    @Id\n    @Column(name = \"ID\")\n    private String id;\n\n    @Column(name = \"REALM_ID\", nullable = false)\n    private String realmId;\n\n    @Column(name = \"NAME\", nullable = false)\n    private String name;\n\n    public String getId() {\n        return id;\n    }\n\n    public void setId(String id) {\n        this.id = id;\n    }\n\n    public String getRealmId() {\n        return realmId;\n    }\n\n    public void setRealmId(String realmId) {\n        this.realmId = realmId;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n}\n"
  },
  {
    "path": "provider-domain/src/main/resources/META-INF/001-products.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<databaseChangeLog xmlns=\"http://www.liquibase.org/xml/ns/dbchangelog\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd\">\n\n    <changeSet author=\"info@zonaut.com\" id=\"001-products-create\">\n\n        <createTable tableName=\"${TABLE_PREFIX}PRODUCTS\">\n            <column name=\"ID\" type=\"VARCHAR(36)\">\n                <constraints nullable=\"false\"/>\n            </column>\n            <column name=\"REALM_ID\" type=\"VARCHAR(36)\">\n                <constraints nullable=\"false\"/>\n            </column>\n            <column name=\"NAME\" type=\"VARCHAR(255)\">\n                <constraints nullable=\"false\"/>\n            </column>\n        </createTable>\n\n        <addPrimaryKey constraintName=\"PK_${TABLE_PREFIX}PRODUCTS\" tableName=\"${TABLE_PREFIX}PRODUCTS\" columnNames=\"ID\"/>\n\n    </changeSet>\n\n</databaseChangeLog>\n"
  },
  {
    "path": "provider-domain/src/main/resources/META-INF/custom-changelog.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<databaseChangeLog xmlns=\"http://www.liquibase.org/xml/ns/dbchangelog\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd\">\n\n    <property name=\"TABLE_PREFIX\" value=\"PRFX_\" />\n\n    <include relativeToChangelogFile=\"true\" file=\"001-products.xml\"/>\n<!--    <include relativeToChangelogFile=\"true\" file=\"002.another-one.xml\"/>-->\n\n</databaseChangeLog>\n"
  },
  {
    "path": "provider-domain/src/main/resources/META-INF/jboss-deployment-structure.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<jboss-deployment-structure>\n    <deployment>\n        <dependencies>\n            <module name=\"org.keycloak.keycloak-services\" />\n            <module name=\"org.keycloak.keycloak-model-jpa\" />\n            <module name=\"org.hibernate\" />\n        </dependencies>\n    </deployment>\n</jboss-deployment-structure>\n"
  },
  {
    "path": "provider-domain/src/main/resources/META-INF/services/org.keycloak.connections.jpa.entityprovider.JpaEntityProviderFactory",
    "content": "com.zonaut.keycloak.extensions.domain.CustomJpaEntityProviderFactory\n"
  },
  {
    "path": "spi-event-listener/README.md",
    "content": "# SPI event listener\n\nAn example of a custom event listener that logs all events.  \nAlso contains an example of a transaction when acting on a certain event.\n\n## Keycloak config\n\nCopy the jar in the target folder to the `/opt/jboss/keycloak/standalone/deployments/` folder.\nOr when using Docker mount the file `./jar-name.jar:/opt/jboss/keycloak/standalone/deployments/jar-name.jar`\n\n## Keycloak admin console configuration\n\nSet the event listener\n\n* Open up Keycloak administration console and select your realm\n* Go to events in the left side bar under Manage\n* Open the config [tab]\n* click in the input box next to event listeners, a dropdown with all available event listeners is shown\n* select our pl_event_listener\n"
  },
  {
    "path": "spi-event-listener/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.zonaut.keycloak</groupId>\n    <artifactId>spi-event-listener</artifactId>\n    <version>0.0.1-SNAPSHOT</version>\n    <packaging>jar</packaging>\n\n    <name>KEYCLOAK EXTENSIONS :: SPI event listener</name>\n    <description>Example of a custom event listener</description>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n\n        <maven.compiler.source>11</maven.compiler.source>\n        <maven.compiler.target>11</maven.compiler.target>\n\n        <!-- https://mvnrepository.com/artifact/org.keycloak/keycloak-parent -->\n        <keycloak.version>11.0.3</keycloak.version>\n        <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->\n        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>\n        <!-- https://mvnrepository.com/artifact/org.wildfly.plugins/wildfly-maven-plugin -->\n        <maven-wildfly-plugin.version>2.0.2.Final</maven-wildfly-plugin.version>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-server-spi</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-server-spi-private</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-services</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>${maven-compiler-plugin.version}</version>\n            </plugin>\n            <plugin>\n                <groupId>org.wildfly.plugins</groupId>\n                <artifactId>wildfly-maven-plugin</artifactId>\n                <version>${maven-wildfly-plugin.version}</version>\n                <configuration>\n                    <skip>false</skip>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n</project>\n"
  },
  {
    "path": "spi-event-listener/src/main/java/com/zonaut/keycloak/extensions/events/logging/PlaceholderEventListenerProvider.java",
    "content": "package com.zonaut.keycloak.extensions.events.logging;\n\nimport org.jboss.logging.Logger;\nimport org.keycloak.events.Event;\nimport org.keycloak.events.EventListenerProvider;\nimport org.keycloak.events.EventType;\nimport org.keycloak.events.admin.AdminEvent;\nimport org.keycloak.events.admin.OperationType;\nimport org.keycloak.events.admin.ResourceType;\nimport org.keycloak.models.KeycloakSession;\nimport org.keycloak.models.RealmModel;\nimport org.keycloak.models.RealmProvider;\nimport org.keycloak.models.UserModel;\n\npublic class PlaceholderEventListenerProvider implements EventListenerProvider {\n\n    private static final Logger log = Logger.getLogger(PlaceholderEventListenerProvider.class);\n\n    private final KeycloakSession session;\n    private final RealmProvider model;\n\n    public PlaceholderEventListenerProvider(KeycloakSession session) {\n        this.session = session;\n        this.model = session.realms();\n    }\n\n    @Override\n    public void onEvent(Event event) {\n        log.infof(\"## NEW %s EVENT\", event.getType());\n        log.info(\"-----------------------------------------------------------\");\n        event.getDetails().forEach((key, value) -> log.info(key + \": \" + value));\n\n        // USE CASE SCENARIO, I'm sure there are better use case scenario's :p\n        //\n        // Let's assume for whatever reason you only want the user\n        // to be able to verify his account if a transaction we make succeeds.\n        // Let's say an external call to a service needs to return a 200 response code or we throw an exception.\n\n        // When the user tries to login after a failed attempt,\n        // the user remains unverified and when trying to login will receive another verify account email.\n\n        if (EventType.VERIFY_EMAIL.equals(event.getType())) {\n            RealmModel realm = this.model.getRealm(event.getRealmId());\n            UserModel user = this.session.users().getUserById(event.getUserId(), realm);\n            if (user != null && user.getEmail() != null && user.isEmailVerified()) {\n                log.info(\"USER HAS VERIFIED EMAIL : \" + event.getUserId());\n\n                // Example of adding an attribute when this event happens\n                user.setSingleAttribute(\"attribute-key\", \"attribute-value\");\n\n                UserUuidDto userUuidDto = new UserUuidDto(event.getType().name(), event.getUserId(), user.getEmail());\n                UserVerifiedTransaction userVerifiedTransaction = new UserVerifiedTransaction(userUuidDto);\n\n                // enlistPrepare -> if our transaction fails than the user is NOT verified\n                // enlist -> if our transaction fails than the user is still verified\n                // enlistAfterCompletion -> if our transaction fails our user is still verified\n\n                session.getTransactionManager().enlistPrepare(userVerifiedTransaction);\n            }\n        }\n        log.info(\"-----------------------------------------------------------\");\n    }\n\n    @Override\n    public void onEvent(AdminEvent adminEvent, boolean b) {\n        log.info(\"## NEW ADMIN EVENT\");\n        log.info(\"-----------------------------------------------------------\");\n        log.info(\"Resource path\" + \": \" + adminEvent.getResourcePath());\n        log.info(\"Resource type\" + \": \" + adminEvent.getResourceType());\n        log.info(\"Operation type\" + \": \" + adminEvent.getOperationType());\n\n        if (ResourceType.USER.equals(adminEvent.getResourceType())\n                && OperationType.CREATE.equals(adminEvent.getOperationType())) {\n            log.info(\"A new user has been created\");\n        }\n\n        log.info(\"-----------------------------------------------------------\");\n    }\n\n    @Override\n    public void close() {\n        // Nothing to close\n    }\n\n}\n"
  },
  {
    "path": "spi-event-listener/src/main/java/com/zonaut/keycloak/extensions/events/logging/PlaceholderEventListenerProviderFactory.java",
    "content": "package com.zonaut.keycloak.extensions.events.logging;\n\nimport org.keycloak.Config;\nimport org.keycloak.events.EventListenerProviderFactory;\nimport org.keycloak.models.KeycloakSession;\nimport org.keycloak.models.KeycloakSessionFactory;\n\npublic class PlaceholderEventListenerProviderFactory implements EventListenerProviderFactory {\n\n    @Override\n    public PlaceholderEventListenerProvider create(KeycloakSession keycloakSession) {\n        return new PlaceholderEventListenerProvider(keycloakSession);\n    }\n\n    @Override\n    public void init(Config.Scope scope) {\n        //\n    }\n\n    @Override\n    public void postInit(KeycloakSessionFactory keycloakSessionFactory) {\n        //\n    }\n\n    @Override\n    public void close() {\n        //\n    }\n\n    @Override\n    public String getId() {\n        return \"pl_event_listener\";\n    }\n\n}\n"
  },
  {
    "path": "spi-event-listener/src/main/java/com/zonaut/keycloak/extensions/events/logging/UserUuidDto.java",
    "content": "package com.zonaut.keycloak.extensions.events.logging;\n\npublic class UserUuidDto {\n\n    private String type;\n    private String uuid;\n    private String email;\n\n    public UserUuidDto(String type, String uuid, String email) {\n        this.type = type;\n        this.uuid = uuid;\n        this.email = email;\n    }\n\n    public String getType() {\n        return type;\n    }\n\n    public String getUuid() {\n        return uuid;\n    }\n\n    public String getEmail() {\n        return email;\n    }\n\n    @Override\n    public String toString() {\n        return \"UserUuidDto{\" +\n                \"type='\" + type + '\\'' +\n                \", uuid='\" + uuid + '\\'' +\n                \", email='\" + email + '\\'' +\n                '}';\n    }\n\n}\n"
  },
  {
    "path": "spi-event-listener/src/main/java/com/zonaut/keycloak/extensions/events/logging/UserVerifiedTransaction.java",
    "content": "package com.zonaut.keycloak.extensions.events.logging;\n\nimport static javax.ws.rs.core.HttpHeaders.CONTENT_TYPE;\n\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpHeaders;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\nimport java.time.Duration;\nimport org.jboss.logging.Logger;\nimport org.keycloak.models.AbstractKeycloakTransaction;\nimport org.keycloak.utils.MediaType;\n\npublic class UserVerifiedTransaction extends AbstractKeycloakTransaction {\n\n    private static final Logger log = Logger.getLogger(UserVerifiedTransaction.class);\n\n    private static final HttpClient HTTP_CLIENT = HttpClient.newBuilder()\n        .version(HttpClient.Version.HTTP_2)\n        .connectTimeout(Duration.ofSeconds(3))\n        .build();\n\n    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();\n\n    private final UserUuidDto userUuidDto;\n\n    public UserVerifiedTransaction(UserUuidDto userUuidDto) {\n        this.userUuidDto = userUuidDto;\n    }\n\n    @Override\n    protected void commitImpl() {\n        log.info(\"## USER VERIFIED TRANSACTION\");\n        log.info(\"-----------------------------------------------------------\");\n        log.info(this.userUuidDto.toString());\n        log.info(\"-----------------------------------------------------------\");\n\n        // You could make a http call here and send the object.\n        // When we throw an exception here, the user would not be verified when using .enlistPrepare\n        //throw new RuntimeException(\"External call failed!\");\n\n        try {\n\n            HttpRequest request = HttpRequest.newBuilder()\n                .POST(HttpRequest.BodyPublishers.ofString(OBJECT_MAPPER.writeValueAsString(this.userUuidDto)))\n                .uri(URI.create(\"https://httpbin.org/post\"))\n                .header(CONTENT_TYPE, MediaType.APPLICATION_JSON)\n                .build();\n\n            HttpResponse<String> response = HTTP_CLIENT.send(request, HttpResponse.BodyHandlers.ofString());\n\n            log.info(\"#### STATUS CODE\");\n            log.info(response.statusCode());\n            if (response.statusCode() != 200) {\n                throw new RuntimeException(\"##### WRONG RESPONSE STATUS CODE !!! : \" + response.statusCode());\n            }\n\n            log.info(\"### USER VERIFIED TRANSACTION SUCCESS\");\n\n            log.info(\"#### HEADERS\");\n            HttpHeaders headers = response.headers();\n            headers.map().forEach((k, v) -> log.info(\"##### \" + k + \":\" + v));\n\n            log.info(\"#### RESPONSE BODY\");\n            log.info(response.body());\n\n        } catch (Exception e) {\n            throw new RuntimeException(\"##### USER VERIFIED TRANSACTION FAILED !\", e);\n        }\n    }\n\n    @Override\n    protected void rollbackImpl() {\n        //\n    }\n\n}\n"
  },
  {
    "path": "spi-event-listener/src/main/resources/META-INF/jboss-deployment-structure.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<jboss-deployment-structure>\n    <deployment>\n        <dependencies>\n            <module name=\"org.keycloak.keycloak-services\" />\n        </dependencies>\n    </deployment>\n</jboss-deployment-structure>\n"
  },
  {
    "path": "spi-event-listener/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory",
    "content": "com.zonaut.keycloak.extensions.events.logging.PlaceholderEventListenerProviderFactory\n"
  },
  {
    "path": "spi-mail-template-override/README.md",
    "content": "# SPI mail template override\n\nAn example on how to change the default behaviour of the email templates and add extra variables to it.\n\n**INFO** Keycloak sends multipart MIME messages so an email always contains both text and html.\n\n## Keycloak config\n\nDisable the default email template provider in `standalone-ha.xml`\n\n```xml\n<subsystem xmlns=\"urn:jboss:domain:keycloak-server:1.1\">\n    <web-context>auth</web-context>\n    ...\n    <spi name=\"emailTemplate\">\n        <provider name=\"freemarker\" enabled=\"false\"/>\n    </spi>\n    ...\n</subsystem>\n ```\n\nCopy the jar in the target folder to the `/opt/jboss/keycloak/standalone/deployments/` folder.\nOr when using Docker mount the file `./jar-name.jar:/opt/jboss/keycloak/standalone/deployments/jar-name.jar`\n\n## Keycloak admin console configuration\n\nNothing is required as the provider will be picked up immediately when the default one is disabled.\n\nYou can check if it's configured in the Keycloak admin console.\nUser dropdown in right top corner -> server info -> providers [tab] -> search for `emailTemplate`, you should see the factory id `pl-freemarker`\n\n## Example usage\n\nWhen using docker-compose Mailhog is started, you can check email send by Keycloak in there.\n\nAdd a new variable `${testNewVariable}` in the `<THEME>/email/<html AND text dir>/email-test.ftl` template file.\n\nWhen send a test email from realm -> realm settings -> email [tab] you should receive the test email with the new variable filled in.\n"
  },
  {
    "path": "spi-mail-template-override/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.zonaut.keycloak</groupId>\n    <artifactId>spi-mail-template-override</artifactId>\n    <version>0.0.1-SNAPSHOT</version>\n    <packaging>jar</packaging>\n\n    <name>KEYCLOAK EXTENSIONS :: SPI mail template override</name>\n    <description>Example of overriding the default mail templates</description>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n\n        <maven.compiler.source>11</maven.compiler.source>\n        <maven.compiler.target>11</maven.compiler.target>\n\n        <!-- https://mvnrepository.com/artifact/org.keycloak/keycloak-parent -->\n        <keycloak.version>11.0.3</keycloak.version>\n        <!-- Take version from your Keycloak versions pom https://github.com/keycloak/keycloak/blob/11.0.3/pom.xml -->\n        <freemarker.version>2.3.29</freemarker.version>\n\n        <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->\n        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>\n        <!-- https://mvnrepository.com/artifact/org.wildfly.plugins/wildfly-maven-plugin -->\n        <maven-wildfly-plugin.version>2.0.2.Final</maven-wildfly-plugin.version>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-server-spi</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-server-spi-private</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-services</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n<!--        <dependency>-->\n<!--            <groupId>org.freemarker</groupId>-->\n<!--            <artifactId>freemarker</artifactId>-->\n<!--            <version>${freemarker.version}</version>-->\n<!--            <scope>provided</scope>-->\n<!--        </dependency>-->\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>${maven-compiler-plugin.version}</version>\n            </plugin>\n            <plugin>\n                <groupId>org.wildfly.plugins</groupId>\n                <artifactId>wildfly-maven-plugin</artifactId>\n                <version>${maven-wildfly-plugin.version}</version>\n                <configuration>\n                    <skip>false</skip>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n</project>\n"
  },
  {
    "path": "spi-mail-template-override/src/main/java/com/zonaut/keycloak/extensions/mail/PlaceholderFreeMarkerEmailTemplateProvider.java",
    "content": "package com.zonaut.keycloak.extensions.mail;\n\nimport org.keycloak.broker.provider.BrokeredIdentityContext;\nimport org.keycloak.common.util.ObjectUtil;\nimport org.keycloak.email.EmailException;\nimport org.keycloak.email.EmailSenderProvider;\nimport org.keycloak.email.EmailTemplateProvider;\nimport org.keycloak.email.freemarker.beans.EventBean;\nimport org.keycloak.email.freemarker.beans.ProfileBean;\nimport org.keycloak.events.Event;\nimport org.keycloak.events.EventType;\nimport org.keycloak.forms.login.freemarker.model.UrlBean;\nimport org.keycloak.models.KeycloakSession;\nimport org.keycloak.models.KeycloakUriInfo;\nimport org.keycloak.models.RealmModel;\nimport org.keycloak.models.UserModel;\nimport org.keycloak.sessions.AuthenticationSessionModel;\nimport org.keycloak.theme.FreeMarkerException;\nimport org.keycloak.theme.FreeMarkerUtil;\nimport org.keycloak.theme.Theme;\nimport org.keycloak.theme.beans.LinkExpirationFormatterMethod;\nimport org.keycloak.theme.beans.MessageFormatterMethod;\n\nimport java.io.IOException;\nimport java.net.URI;\nimport java.text.MessageFormat;\nimport java.util.*;\n\n/**\n * Based on org.keycloak.email.freemarker.FreeMarkerEmailTemplateProvider\n */\npublic class PlaceholderFreeMarkerEmailTemplateProvider implements EmailTemplateProvider {\n\n    protected KeycloakSession session;\n    /**\n     * authenticationSession can be null for some email sendings, it is filled only for email sendings performed as part of the authentication session (email verification, password reset, broker link\n     * etc.)!\n     */\n    protected AuthenticationSessionModel authenticationSession;\n    protected FreeMarkerUtil freeMarker;\n    protected RealmModel realm;\n    protected UserModel user;\n    protected final Map<String, Object> attributes = new HashMap<>();\n\n    public PlaceholderFreeMarkerEmailTemplateProvider(KeycloakSession session, FreeMarkerUtil freeMarker) {\n        this.session = session;\n        this.freeMarker = freeMarker;\n    }\n\n    @Override\n    public EmailTemplateProvider setRealm(RealmModel realm) {\n        this.realm = realm;\n        return this;\n    }\n\n    @Override\n    public EmailTemplateProvider setUser(UserModel user) {\n        this.user = user;\n        return this;\n    }\n\n    @Override\n    public EmailTemplateProvider setAttribute(String name, Object value) {\n        attributes.put(name, value);\n        return this;\n    }\n\n    @Override\n    public EmailTemplateProvider setAuthenticationSession(AuthenticationSessionModel authenticationSession) {\n        this.authenticationSession = authenticationSession;\n        return this;\n    }\n\n    protected String getRealmName() {\n        if (realm.getDisplayName() != null) {\n            return realm.getDisplayName();\n        } else {\n            return ObjectUtil.capitalize(realm.getName());\n        }\n    }\n\n    @Override\n    public void sendEvent(Event event) throws EmailException {\n        Map<String, Object> attributes = new HashMap<>();\n        attributes.put(\"user\", new ProfileBean(user));\n        attributes.put(\"event\", new EventBean(event));\n\n        send(toCamelCase(event.getType()) + \"Subject\", \"event-\" + event.getType().toString().toLowerCase() + \".ftl\", attributes);\n    }\n\n    @Override\n    public void sendPasswordReset(String link, long expirationInMinutes) throws EmailException {\n        Map<String, Object> attributes = new HashMap<>(this.attributes);\n        attributes.put(\"user\", new ProfileBean(user));\n        addLinkInfoIntoAttributes(link, expirationInMinutes, attributes);\n\n        attributes.put(\"realmName\", getRealmName());\n\n        send(\"passwordResetSubject\", \"password-reset.ftl\", attributes);\n    }\n\n    @Override\n    public void sendSmtpTestEmail(Map<String, String> config, UserModel user) throws EmailException {\n        setRealm(session.getContext().getRealm());\n        setUser(user);\n\n        Map<String, Object> attributes = new HashMap<>(this.attributes);\n        attributes.put(\"user\", new ProfileBean(user));\n        attributes.put(\"realmName\", realm.getName());\n\n        // Example of new variable\n        attributes.put(\"testNewVariable\", \"Say hello to my little friend\");\n\n        PlaceholderFreeMarkerEmailTemplateProvider.EmailTemplate email = processTemplate(\"emailTestSubject\", Collections.emptyList(), \"email-test.ftl\", attributes);\n        send(config, email.getSubject(), email.getTextBody(), email.getHtmlBody());\n    }\n\n    @Override\n    public void sendConfirmIdentityBrokerLink(String link, long expirationInMinutes) throws EmailException {\n        Map<String, Object> attributes = new HashMap<>(this.attributes);\n        attributes.put(\"user\", new ProfileBean(user));\n        addLinkInfoIntoAttributes(link, expirationInMinutes, attributes);\n\n        attributes.put(\"realmName\", getRealmName());\n\n        BrokeredIdentityContext brokerContext = (BrokeredIdentityContext) this.attributes.get(IDENTITY_PROVIDER_BROKER_CONTEXT);\n        String idpAlias = brokerContext.getIdpConfig().getAlias();\n        idpAlias = ObjectUtil.capitalize(idpAlias);\n\n        attributes.put(\"identityProviderContext\", brokerContext);\n        attributes.put(\"identityProviderAlias\", idpAlias);\n\n        List<Object> subjectAttrs = Arrays.asList(idpAlias);\n        send(\"identityProviderLinkSubject\", subjectAttrs, \"identity-provider-link.ftl\", attributes);\n    }\n\n    @Override\n    public void sendExecuteActions(String link, long expirationInMinutes) throws EmailException {\n        Map<String, Object> attributes = new HashMap<>(this.attributes);\n        attributes.put(\"user\", new ProfileBean(user));\n        addLinkInfoIntoAttributes(link, expirationInMinutes, attributes);\n\n        attributes.put(\"realmName\", getRealmName());\n\n        send(\"executeActionsSubject\", \"executeActions.ftl\", attributes);\n    }\n\n    @Override\n    public void sendVerifyEmail(String link, long expirationInMinutes) throws EmailException {\n        Map<String, Object> attributes = new HashMap<>(this.attributes);\n        attributes.put(\"user\", new ProfileBean(user));\n        addLinkInfoIntoAttributes(link, expirationInMinutes, attributes);\n\n        attributes.put(\"realmName\", getRealmName());\n\n        send(\"emailVerificationSubject\", \"email-verification.ftl\", attributes);\n    }\n\n    /**\n     * Add link info into template attributes.\n     *\n     * @param link to add\n     * @param expirationInMinutes to add\n     * @param attributes to add link info into\n     */\n    protected void addLinkInfoIntoAttributes(String link, long expirationInMinutes, Map<String, Object> attributes) throws EmailException {\n        attributes.put(\"link\", link);\n        attributes.put(\"linkExpiration\", expirationInMinutes);\n        KeycloakUriInfo uriInfo = session.getContext().getUri();\n        URI baseUri = uriInfo.getBaseUri();\n        try {\n            Locale locale = session.getContext().resolveLocale(user);\n            attributes.put(\"linkExpirationFormatter\", new LinkExpirationFormatterMethod(getTheme().getMessages(locale), locale));\n            attributes.put(\"url\", new UrlBean(realm, getTheme(), baseUri, null));\n        } catch (IOException e) {\n            throw new EmailException(\"Failed to template email\", e);\n        }\n    }\n\n    @Override\n    public void send(String subjectFormatKey, String bodyTemplate, Map<String, Object> bodyAttributes) throws EmailException {\n        send(subjectFormatKey, Collections.emptyList(), bodyTemplate, bodyAttributes);\n    }\n\n    protected PlaceholderFreeMarkerEmailTemplateProvider.EmailTemplate processTemplate(String subjectKey, List<Object> subjectAttributes, String template, Map<String, Object> attributes) throws EmailException {\n        try {\n            Theme theme = getTheme();\n            Locale locale = session.getContext().resolveLocale(user);\n            attributes.put(\"locale\", locale);\n            Properties rb = theme.getMessages(locale);\n            attributes.put(\"msg\", new MessageFormatterMethod(locale, rb));\n            attributes.put(\"properties\", theme.getProperties());\n            String subject = new MessageFormat(rb.getProperty(subjectKey, subjectKey), locale).format(subjectAttributes.toArray());\n            String textTemplate = String.format(\"text/%s\", template);\n            String textBody;\n            try {\n                textBody = freeMarker.processTemplate(attributes, textTemplate, theme);\n            } catch (final FreeMarkerException e) {\n                throw new EmailException(\"Failed to template plain text email.\", e);\n            }\n            String htmlTemplate = String.format(\"html/%s\", template);\n            String htmlBody;\n            try {\n                htmlBody = freeMarker.processTemplate(attributes, htmlTemplate, theme);\n            } catch (final FreeMarkerException e) {\n                throw new EmailException(\"Failed to template html email.\", e);\n            }\n\n            return new PlaceholderFreeMarkerEmailTemplateProvider.EmailTemplate(subject, textBody, htmlBody);\n        } catch (Exception e) {\n            throw new EmailException(\"Failed to template email\", e);\n        }\n    }\n\n    protected Theme getTheme() throws IOException {\n        return session.theme().getTheme(Theme.Type.EMAIL);\n    }\n\n    @Override\n    public void send(String subjectFormatKey, List<Object> subjectAttributes, String bodyTemplate, Map<String, Object> bodyAttributes) throws EmailException {\n        try {\n            PlaceholderFreeMarkerEmailTemplateProvider.EmailTemplate email = processTemplate(subjectFormatKey, subjectAttributes, bodyTemplate, bodyAttributes);\n            send(email.getSubject(), email.getTextBody(), email.getHtmlBody());\n        } catch (EmailException e) {\n            throw e;\n        } catch (Exception e) {\n            throw new EmailException(\"Failed to template email\", e);\n        }\n    }\n\n    protected void send(String subject, String textBody, String htmlBody) throws EmailException {\n        send(realm.getSmtpConfig(), subject, textBody, htmlBody);\n    }\n\n    protected void send(Map<String, String> config, String subject, String textBody, String htmlBody) throws EmailException {\n        EmailSenderProvider emailSender = session.getProvider(EmailSenderProvider.class);\n        emailSender.send(config, user, subject, textBody, htmlBody);\n    }\n\n    @Override\n    public void close() {\n    }\n\n    protected String toCamelCase(EventType event) {\n        StringBuilder sb = new StringBuilder(\"event\");\n        for (String s : event.name().toLowerCase().split(\"_\")) {\n            sb.append(ObjectUtil.capitalize(s));\n        }\n        return sb.toString();\n    }\n\n    protected class EmailTemplate {\n\n        private String subject;\n        private String textBody;\n        private String htmlBody;\n\n        public EmailTemplate(String subject, String textBody, String htmlBody) {\n            this.subject = subject;\n            this.textBody = textBody;\n            this.htmlBody = htmlBody;\n        }\n\n        public String getSubject() {\n            return subject;\n        }\n\n        public String getTextBody() {\n            return textBody;\n        }\n\n        public String getHtmlBody() {\n            return htmlBody;\n        }\n    }\n\n}\n"
  },
  {
    "path": "spi-mail-template-override/src/main/java/com/zonaut/keycloak/extensions/mail/PlaceholderFreeMarkerEmailTemplateProviderFactory.java",
    "content": "package com.zonaut.keycloak.extensions.mail;\n\nimport org.keycloak.Config;\nimport org.keycloak.email.EmailTemplateProvider;\nimport org.keycloak.email.EmailTemplateProviderFactory;\nimport org.keycloak.models.KeycloakSession;\nimport org.keycloak.models.KeycloakSessionFactory;\nimport org.keycloak.theme.FreeMarkerUtil;\n\npublic class PlaceholderFreeMarkerEmailTemplateProviderFactory implements EmailTemplateProviderFactory {\n\n    private FreeMarkerUtil freeMarker;\n\n    @Override\n    public EmailTemplateProvider create(KeycloakSession session) {\n        return new PlaceholderFreeMarkerEmailTemplateProvider(session, freeMarker);\n    }\n\n    @Override\n    public void init(Config.Scope config) {\n        freeMarker = new FreeMarkerUtil();\n    }\n\n    @Override\n    public void postInit(KeycloakSessionFactory factory) {\n    }\n\n    @Override\n    public void close() {\n        freeMarker = null;\n    }\n\n    @Override\n    public String getId() {\n        return \"pl-freemarker\";\n    }\n\n}\n"
  },
  {
    "path": "spi-mail-template-override/src/main/resources/META-INF/jboss-deployment-structure.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<jboss-deployment-structure>\n    <deployment>\n        <dependencies>\n            <module name=\"org.keycloak.keycloak-services\" />\n            <module name=\"org.freemarker\"/>\n        </dependencies>\n    </deployment>\n</jboss-deployment-structure>\n"
  },
  {
    "path": "spi-mail-template-override/src/main/resources/META-INF/services/org.keycloak.email.EmailTemplateProviderFactory",
    "content": "com.zonaut.keycloak.extensions.mail.PlaceholderFreeMarkerEmailTemplateProviderFactory\n"
  },
  {
    "path": "spi-registration-profile/README.md",
    "content": "# SPI registration profile\n\nAn example of a custom registration profile action which does not validate first and last name.\n\n## Keycloak config\n\nCopy the jar in the target folder to the `/opt/jboss/keycloak/standalone/deployments/` folder.\nOr when using Docker mount the file `./jar-name.jar:/opt/jboss/keycloak/standalone/deployments/jar-name.jar`\n\n## Keycloak admin console configuration\n\n* Open Keycloak administration and select your realm\n* Open up Authentication -> Flows [tab]\n* Select registration flow and click copy, give it a name and press Ok\n* Click the Actions dropdown menu to the far right of `Copy Of Registration Registration Form` and select 'Add execution'\n\n![spi-registration-profile-actions](../_resources/images/spi-registration-profile-actions.png)\n\n* Select our custom profile validation from the the list of providers and press save\n* Move our custom profile validation step under the default `Profile validation` step with the up and down buttons\n* Set the the default `Profile validation` to DISABLED and our custom one to REQUIRED\n* Click the Bindings tab and select our custom registration flow from the Registration flow dropdown and click save\n\n## Theme\n\n* Remove or set a style of display:none on the first and lastname div elements in `<THEME>/login/register.ftl`\n"
  },
  {
    "path": "spi-registration-profile/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.zonaut.keycloak</groupId>\n    <artifactId>spi-registration-profile</artifactId>\n    <version>0.0.1-SNAPSHOT</version>\n    <packaging>jar</packaging>\n\n    <name>KEYCLOAK EXTENSIONS :: SPI registration profile</name>\n    <description>Example of a custom registration profile</description>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n\n        <maven.compiler.source>11</maven.compiler.source>\n        <maven.compiler.target>11</maven.compiler.target>\n\n        <!-- https://mvnrepository.com/artifact/org.keycloak/keycloak-parent -->\n        <keycloak.version>11.0.3</keycloak.version>\n        <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->\n        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>\n        <!-- https://mvnrepository.com/artifact/org.wildfly.plugins/wildfly-maven-plugin -->\n        <maven-wildfly-plugin.version>2.0.2.Final</maven-wildfly-plugin.version>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-server-spi</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-server-spi-private</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-services</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>${maven-compiler-plugin.version}</version>\n            </plugin>\n            <plugin>\n                <groupId>org.wildfly.plugins</groupId>\n                <artifactId>wildfly-maven-plugin</artifactId>\n                <version>${maven-wildfly-plugin.version}</version>\n                <configuration>\n                    <skip>false</skip>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n</project>\n"
  },
  {
    "path": "spi-registration-profile/src/main/java/com/zonaut/keycloak/extensions/actions/forms/PlaceholderRegistrationProfile.java",
    "content": "package com.zonaut.keycloak.extensions.actions.forms;\n\nimport org.keycloak.Config;\nimport org.keycloak.authentication.FormAction;\nimport org.keycloak.authentication.FormActionFactory;\nimport org.keycloak.authentication.FormContext;\nimport org.keycloak.authentication.ValidationContext;\nimport org.keycloak.authentication.forms.RegistrationPage;\nimport org.keycloak.events.Details;\nimport org.keycloak.events.Errors;\nimport org.keycloak.forms.login.LoginFormsProvider;\nimport org.keycloak.models.*;\nimport org.keycloak.models.utils.FormMessage;\nimport org.keycloak.provider.ProviderConfigProperty;\nimport org.keycloak.services.messages.Messages;\nimport org.keycloak.services.validation.Validation;\n\nimport javax.ws.rs.core.MultivaluedMap;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Based on org.keycloak.authentication.forms.RegistrationProfile\n */\npublic class PlaceholderRegistrationProfile implements FormAction, FormActionFactory {\n\n    public static final String PROVIDER_ID = \"pl-spi-registration-profile\"; // MAX 36 chars !!!!\n\n    @Override\n    public String getHelpText() {\n        return \"Validates email and stores it in user data.\";\n    }\n\n    @Override\n    public List<ProviderConfigProperty> getConfigProperties() {\n        return null;\n    }\n\n    @Override\n    public void validate(ValidationContext context) {\n        MultivaluedMap<String, String> formData = context.getHttpRequest().getDecodedFormParameters();\n        List<FormMessage> errors = new ArrayList<>();\n\n        context.getEvent().detail(Details.REGISTER_METHOD, \"form\");\n        String eventError = Errors.INVALID_REGISTRATION;\n\n//        if (Validation.isBlank(formData.getFirst((RegistrationPage.FIELD_FIRST_NAME)))) {\n//            errors.add(new FormMessage(RegistrationPage.FIELD_FIRST_NAME, Messages.MISSING_FIRST_NAME));\n//        }\n//\n//        if (Validation.isBlank(formData.getFirst((RegistrationPage.FIELD_LAST_NAME)))) {\n//            errors.add(new FormMessage(RegistrationPage.FIELD_LAST_NAME, Messages.MISSING_LAST_NAME));\n//        }\n\n        String email = formData.getFirst(Validation.FIELD_EMAIL);\n        boolean emailValid = true;\n        if (Validation.isBlank(email)) {\n            errors.add(new FormMessage(RegistrationPage.FIELD_EMAIL, Messages.MISSING_EMAIL));\n            emailValid = false;\n        } else if (!Validation.isEmailValid(email)) {\n            context.getEvent().detail(Details.EMAIL, email);\n            errors.add(new FormMessage(RegistrationPage.FIELD_EMAIL, Messages.INVALID_EMAIL));\n            emailValid = false;\n        }\n\n        if (emailValid && !context.getRealm().isDuplicateEmailsAllowed() && context.getSession().users().getUserByEmail(email, context.getRealm()) != null) {\n            eventError = Errors.EMAIL_IN_USE;\n            formData.remove(Validation.FIELD_EMAIL);\n            context.getEvent().detail(Details.EMAIL, email);\n            errors.add(new FormMessage(RegistrationPage.FIELD_EMAIL, Messages.EMAIL_EXISTS));\n        }\n\n        if (errors.size() > 0) {\n            context.error(eventError);\n            context.validationError(formData, errors);\n            return;\n\n        } else {\n            context.success();\n        }\n    }\n\n    @Override\n    public void success(FormContext context) {\n        UserModel user = context.getUser();\n        MultivaluedMap<String, String> formData = context.getHttpRequest().getDecodedFormParameters();\n        user.setFirstName(formData.getFirst(RegistrationPage.FIELD_FIRST_NAME));\n        user.setLastName(formData.getFirst(RegistrationPage.FIELD_LAST_NAME));\n        user.setEmail(formData.getFirst(RegistrationPage.FIELD_EMAIL));\n    }\n\n    @Override\n    public void buildPage(FormContext context, LoginFormsProvider form) {\n        // complete\n    }\n\n    @Override\n    public boolean requiresUser() {\n        return false;\n    }\n\n    @Override\n    public boolean configuredFor(KeycloakSession session, RealmModel realm, UserModel user) {\n        return true;\n    }\n\n    @Override\n    public void setRequiredActions(KeycloakSession session, RealmModel realm, UserModel user) {\n\n    }\n\n    @Override\n    public boolean isUserSetupAllowed() {\n        return false;\n    }\n\n\n    @Override\n    public void close() {\n\n    }\n\n    @Override\n    public String getDisplayType() {\n        return \"Placeholder Profile Validation\";\n    }\n\n    @Override\n    public String getReferenceCategory() {\n        return null;\n    }\n\n    @Override\n    public boolean isConfigurable() {\n        return false;\n    }\n\n    private static AuthenticationExecutionModel.Requirement[] REQUIREMENT_CHOICES = {\n            AuthenticationExecutionModel.Requirement.REQUIRED,\n            AuthenticationExecutionModel.Requirement.DISABLED\n    };\n    @Override\n    public AuthenticationExecutionModel.Requirement[] getRequirementChoices() {\n        return REQUIREMENT_CHOICES;\n    }\n    @Override\n    public FormAction create(KeycloakSession session) {\n        return this;\n    }\n\n    @Override\n    public void init(Config.Scope config) {\n\n    }\n\n    @Override\n    public void postInit(KeycloakSessionFactory factory) {\n\n    }\n\n    @Override\n    public String getId() {\n        return PROVIDER_ID;\n    }\n}\n"
  },
  {
    "path": "spi-registration-profile/src/main/resources/META-INF/jboss-deployment-structure.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<jboss-deployment-structure>\n    <deployment>\n        <dependencies>\n            <module name=\"org.keycloak.keycloak-services\" />\n        </dependencies>\n    </deployment>\n</jboss-deployment-structure>\n"
  },
  {
    "path": "spi-registration-profile/src/main/resources/META-INF/services/org.keycloak.authentication.FormActionFactory",
    "content": "com.zonaut.keycloak.extensions.actions.forms.PlaceholderRegistrationProfile\n"
  },
  {
    "path": "spi-resource/README.md",
    "content": "# SPI resource\n\nAn example of a custom REST resource.\n\nthis example will add a new base endpoint `auth/realms/<REALM>/custom`\n\n## Keycloak config\n\nCopy the jar in the target folder to the `/opt/jboss/keycloak/standalone/deployments/` folder.\nOr when using Docker mount the file `./jar-name.jar:/opt/jboss/keycloak/standalone/deployments/jar-name.jar`\n\n## Test\n\nRun one of the scripts in the root of this module to test the our example endpoint.\n\n    // call auth/realms/<REALM>/custom/users/<user> with an anonymous user\n    ./test-anonymous-user.sh\n    \n    // call auth/realms/<REALM>/custom/users/<user> with an authenticated user\n    // you can switch variables in the script to test different use cases\n    ./test-authenticated-user.sh\n"
  },
  {
    "path": "spi-resource/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.zonaut.keycloak</groupId>\n    <artifactId>spi-resource</artifactId>\n    <version>0.0.1-SNAPSHOT</version>\n    <packaging>jar</packaging>\n\n    <name>KEYCLOAK EXTENSIONS :: SPI resource</name>\n    <description>Example of a custom resource</description>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n\n        <maven.compiler.source>11</maven.compiler.source>\n        <maven.compiler.target>11</maven.compiler.target>\n\n        <!-- https://mvnrepository.com/artifact/org.keycloak/keycloak-parent -->\n        <keycloak.version>11.0.3</keycloak.version>\n        <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->\n        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>\n        <!-- https://mvnrepository.com/artifact/org.wildfly.plugins/wildfly-maven-plugin -->\n        <maven-wildfly-plugin.version>2.0.2.Final</maven-wildfly-plugin.version>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-server-spi</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-server-spi-private</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.keycloak</groupId>\n            <artifactId>keycloak-services</artifactId>\n            <version>${keycloak.version}</version>\n            <scope>provided</scope>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>${maven-compiler-plugin.version}</version>\n            </plugin>\n            <plugin>\n                <groupId>org.wildfly.plugins</groupId>\n                <artifactId>wildfly-maven-plugin</artifactId>\n                <version>${maven-wildfly-plugin.version}</version>\n                <configuration>\n                    <skip>false</skip>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n</project>\n"
  },
  {
    "path": "spi-resource/src/main/java/com/zonaut/keycloak/extensions/resource/AuthCheck.java",
    "content": "package com.zonaut.keycloak.extensions.resource;\n\nimport org.jboss.logging.Logger;\nimport org.keycloak.models.ClientModel;\nimport org.keycloak.models.KeycloakSession;\nimport org.keycloak.models.RealmModel;\nimport org.keycloak.models.RoleModel;\nimport org.keycloak.services.managers.AppAuthManager;\nimport org.keycloak.services.managers.AuthenticationManager;\nimport org.keycloak.services.managers.RealmManager;\nimport org.keycloak.sessions.AuthenticationSessionModel;\n\nimport javax.ws.rs.ForbiddenException;\nimport javax.ws.rs.NotAuthorizedException;\nimport java.util.stream.Collectors;\n\npublic class AuthCheck {\n\n    private static final Logger log = Logger.getLogger(AuthCheck.class);\n\n    public static void whoAmI(KeycloakSession session) {\n        final AuthenticationManager.AuthResult authResult = new AppAuthManager().authenticateBearerToken(session);\n        if (authResult == null) {\n            log.infof(\"Anonymous user entering realm %s\", session.getContext().getRealm().getName());\n        } else {\n            ClientModel client = session.getContext().getRealm().getClientByClientId(authResult.getToken().getIssuedFor());\n            log.infof(\"%s, realm: %s, client: %s\", authResult.getUser().getUsername(), session.getContext().getRealm().getName(), client.getClientId());\n            log.infof(\"Realm roles: %s\", authResult.getUser().getRealmRoleMappings().stream().map(RoleModel::getName).collect(Collectors.toSet()));\n        }\n    }\n\n    public static void hasRole(KeycloakSession session, String role) {\n        final AuthenticationManager.AuthResult authResult = new AppAuthManager().authenticateBearerToken(session);\n        isAuthenticated(authResult);\n\n        if (authResult.getToken().getRealmAccess() == null || !authResult.getToken().getRealmAccess().isUserInRole(role)) {\n            throw new ForbiddenException(\"You do not have the required credentials for this action\");\n        }\n    }\n\n    public static void isClient(KeycloakSession session, String clientName) {\n        final AuthenticationManager.AuthResult authResult = new AppAuthManager().authenticateBearerToken(session);\n        isAuthenticated(authResult);\n\n        ClientModel client = session.getContext().getRealm().getClientByClientId(authResult.getToken().getIssuedFor());\n        if (!client.getClientId().equals(clientName)) {\n            throw new ForbiddenException(\"You do not have the required credentials for this action\");\n        }\n    }\n\n    public static void isAuthenticated(KeycloakSession session) {\n        final AuthenticationManager.AuthResult authResult = new AppAuthManager().authenticateBearerToken(session);\n        isAuthenticated(authResult);\n    }\n\n    public static void isAuthenticated(AuthenticationManager.AuthResult authResult) {\n        if (authResult == null) {\n            throw new NotAuthorizedException(\"Bearer token required\");\n        }\n    }\n\n}\n"
  },
  {
    "path": "spi-resource/src/main/java/com/zonaut/keycloak/extensions/resource/AuthCheckType.java",
    "content": "package com.zonaut.keycloak.extensions.resource;\n\npublic enum AuthCheckType {\n\n    ANONYMOUS,\n    AUTHENTICATED,\n    AUTHENTICATED_WITH_ROLE,\n    AUTHENTICATED_WITH_CLIENT,\n\n}\n"
  },
  {
    "path": "spi-resource/src/main/java/com/zonaut/keycloak/extensions/resource/CustomResourceProvider.java",
    "content": "package com.zonaut.keycloak.extensions.resource;\n\nimport org.jboss.logging.Logger;\nimport org.keycloak.models.KeycloakSession;\nimport org.keycloak.models.UserModel;\nimport org.keycloak.models.utils.ModelToRepresentation;\nimport org.keycloak.representations.idm.UserRepresentation;\nimport org.keycloak.services.resource.RealmResourceProvider;\n\nimport javax.ws.rs.BadRequestException;\nimport javax.ws.rs.GET;\nimport javax.ws.rs.Path;\nimport javax.ws.rs.PathParam;\nimport javax.ws.rs.Produces;\nimport javax.ws.rs.QueryParam;\nimport javax.ws.rs.core.MediaType;\nimport javax.ws.rs.core.Response;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class CustomResourceProvider implements RealmResourceProvider {\n\n    private static final Logger log = Logger.getLogger(CustomResourceProvider.class);\n\n    private final KeycloakSession session;\n\n    public CustomResourceProvider(KeycloakSession session) {\n        this.session = session;\n    }\n\n    @GET\n    @Path(\"users/{name}\")\n    @Produces({MediaType.APPLICATION_JSON})\n    public Response getUsersByName(\n            @QueryParam(\"auth_check_type\") AuthCheckType authCheckType,\n            @PathParam(\"name\") String name) {\n\n        AuthCheck.whoAmI(session);\n\n        // An example of different ways to check authorization for a user/client\n        log.infof(\"Checking authorization for %s\", authCheckType);\n        switch (authCheckType) {\n            case ANONYMOUS:\n                // Nothing to do :p\n                break;\n            case AUTHENTICATED:\n                AuthCheck.isAuthenticated(session);\n                break;\n            case AUTHENTICATED_WITH_ROLE:\n                AuthCheck.hasRole(session, \"product_view\");\n                break;\n            case AUTHENTICATED_WITH_CLIENT:\n                AuthCheck.isClient(session, \"client-two\");\n                break;\n            default:\n                throw new BadRequestException(\"Auth type is unknown\");\n        }\n\n//        // Get users based on an attribute\n//        final List<UserModel> users =  session\n//                .userStorageManager()\n//                .searchForUserByUserAttribute(\"some-attribute\", name, session.getContext().getRealm());\n\n        final List<UserModel> users = session\n                .userStorageManager()\n                .searchForUser(name, session.getContext().getRealm());\n\n        // Transform our model to representations that can be serialized.\n        List<UserRepresentation> representations = new ArrayList<>(users.size());\n        for (UserModel user : users) {\n            representations.add(ModelToRepresentation.toRepresentation(session, session.getContext().getRealm(), user));\n        }\n\n        return Response.status(Response.Status.OK).entity(representations).build();\n    }\n\n    @Override\n    public Object getResource() {\n        return this;\n    }\n\n    @Override\n    public void close() {\n\n    }\n\n}\n"
  },
  {
    "path": "spi-resource/src/main/java/com/zonaut/keycloak/extensions/resource/CustomResourceProviderFactory.java",
    "content": "package com.zonaut.keycloak.extensions.resource;\n\nimport org.keycloak.Config;\nimport org.keycloak.models.KeycloakSession;\nimport org.keycloak.models.KeycloakSessionFactory;\nimport org.keycloak.services.resource.RealmResourceProvider;\nimport org.keycloak.services.resource.RealmResourceProviderFactory;\n\npublic class CustomResourceProviderFactory implements RealmResourceProviderFactory {\n\n    // This will result in a new sub path under an existing realm\n    // eg. http://localhost:8088/auth/realms/realm-name/custom\n    public static final String ID = \"custom\";\n\n    @Override\n    public RealmResourceProvider create(KeycloakSession keycloakSession) {\n        return new CustomResourceProvider(keycloakSession);\n    }\n\n    @Override\n    public void init(Config.Scope scope) {\n\n    }\n\n    @Override\n    public void postInit(KeycloakSessionFactory keycloakSessionFactory) {\n\n    }\n\n    @Override\n    public void close() {\n\n    }\n\n    @Override\n    public String getId() {\n        return ID;\n    }\n\n}\n"
  },
  {
    "path": "spi-resource/src/main/resources/META-INF/jboss-deployment-structure.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<jboss-deployment-structure>\n    <deployment>\n        <dependencies>\n            <module name=\"org.keycloak.keycloak-services\" />\n        </dependencies>\n    </deployment>\n</jboss-deployment-structure>\n"
  },
  {
    "path": "spi-resource/src/main/resources/META-INF/services/org.keycloak.services.resource.RealmResourceProviderFactory",
    "content": "com.zonaut.keycloak.extensions.resource.CustomResourceProviderFactory\n"
  },
  {
    "path": "spi-resource/test-anonymous-user.sh",
    "content": "#!/usr/bin/env bash\n\n# ====================================================================================================================\n# Vars\n# ====================================================================================================================\n\nPORT=8088;\nREALM=placeholder;\n\n# ====================================================================================================================\n# Get a specific user from our custom resource\n# ====================================================================================================================\n\nUSER=\"james\"\n#USER=\"jennifer\"\n#USER=\"john\"\n#USER=\"mary\"\n#USER=\"patricia\"\n#USER=\"robert\"\n\ncurl \"http://localhost:$PORT/auth/realms/$REALM/custom/users/$USER?auth_check_type=ANONYMOUS\" | python -m json.tool;\n"
  },
  {
    "path": "spi-resource/test-authenticated-user.sh",
    "content": "#!/usr/bin/env bash\n\n# ====================================================================================================================\n# Vars\n# ====================================================================================================================\n\nPORT=8088;\nREALM=placeholder;\n\n#USERNAME=\"james@placeholder.com\";\n#USERNAME=\"jennifer@placeholder.com\";\n#USERNAME=\"john@placeholder.com\";\n#USERNAME=\"mary@placeholder.com\";\n#USERNAME=\"patricia@placeholder.com\";\nUSERNAME=\"robert@placeholder.com\";\n\nPASSWORD=\"password\";\n\n#CLIENT=\"client-one\"\nCLIENT=\"client-two\"\n\nAUTH_CHECK_TYPE=\"AUTHENTICATED\" # We only need a valid user here\n#AUTH_CHECK_TYPE=\"AUTHENTICATED_WITH_ROLE\" # Only robert has the required role for this\n#AUTH_CHECK_TYPE=\"AUTHENTICATED_WITH_CLIENT\" # Only client-two is allowed\n\n# ====================================================================================================================\n# Get user token\n# ====================================================================================================================\n\nACCESS_TOKEN=$(curl \\\n  -d \"client_id=$CLIENT\" \\\n  -d \"username=$USERNAME\" \\\n  -d \"password=$PASSWORD\" \\\n  -d \"grant_type=password\" \\\n  -X POST \"http://localhost:$PORT/auth/realms/$REALM/protocol/openid-connect/token\" | jq -r .access_token);\n\necho \"$ACCESS_TOKEN\";\n\n# ====================================================================================================================\n# Get a specific user from our custom resource\n# ====================================================================================================================\n\nUSER=\"james\"\n#USER=\"jennifer\"\n#USER=\"john\"\n#USER=\"mary\"\n#USER=\"patricia\"\n#USER=\"robert\"\n\ncurl \"http://localhost:$PORT/auth/realms/$REALM/custom/users/$USER?auth_check_type=$AUTH_CHECK_TYPE\" \\\n  --header \"Accept: application/json\" \\\n  --header \"Authorization: Bearer $ACCESS_TOKEN\" | python -m json.tool;\n"
  },
  {
    "path": "theme-minimal/README.md",
    "content": "# Theme minimal\n\nAn example of a custom theme with only minimal changes.\n\nMore info on https://www.keycloak.org/docs/latest/server_development/#_themes\n\nChanges in this theme\n\n* The h1 tag in the `theme-minimal/welcome/index.ftl` file has been changed, a variable `testExternalVar` defined in `theme.properties` has been added to it.\n  * You can check this on `http://localhost:8088/auth/`\n* The default email templates are copied from the Keycloak theme base dir into this theme\n  * An extra variable `testNewVariable` has been added to `theme-minimal/email/<html AND text dir>/email-test.ftl`\n    * Delete this variable if you don't use the `spi-mail-template-override` otherwise it will fail\n  * The parent has been removed from the `theme-minimal/email/theme.properties` file and locales have been added\n* the default login folder has been copied from the Keycloak theme base dir into this theme\n  * The parent has been removed from the `theme-minimal/login/theme.properties` file\n* an example on how to access an environment variable in the theme template files\n  * a testExternalVar is declared in the theme.properties file to use the assigned environment variable set in the docker-compose file\n  * the `theme-minimal/welcome/index.ftl` file uses it as an example\n\n## Keycloak config\n\nCopy the jar in the target folder to the `/opt/jboss/keycloak/standalone/deployments/` folder.\nOr when using Docker mount the file `./jar-name.jar:/opt/jboss/keycloak/standalone/deployments/jar-name.jar`\n\n## Keycloak admin console configuration\n\nThe theme can be changed in realm -> realm settings -> themes [tab] or can be passed through environment variables, take a look at the  docker-compose file.\n\n## Live edit the theme\n\nAdd or change the following in your `standalone-ha.xml` to disable caching\n\n```xml\n<subsystem xmlns=\"urn:jboss:domain:keycloak-server:1.1\">\n    ...\n    <theme>\n        <staticMaxAge>-1</staticMaxAge>\n        <cacheThemes>false</cacheThemes>\n        <cacheTemplates>false</cacheTemplates>\n        <welcomeTheme>${env.KEYCLOAK_WELCOME_THEME:keycloak}</welcomeTheme>\n        <default>${env.KEYCLOAK_DEFAULT_THEME:keycloak}</default>\n        <dir>${jboss.home.dir}/themes</dir>\n    </theme>\n    ...\n</subsystem>\n ```\n\nUncomment the following line in the docker-compose file\n\n    - ./theme-minimal/src/main/resources/theme/theme-minimal:/opt/jboss/keycloak/themes/theme-minimal\n\nComment the following line in the docker-compose file\n\n    - ./theme-minimal/target/theme-minimal-0.0.1-SNAPSHOT.jar:/opt/jboss/keycloak/standalone/deployments/theme-minimal-0.0.1-SNAPSHOT.jar\n    \nRun docker-compose from the root dir of this repo\n\nYou can now make changes to the theme and when you refresh the page the changes should be immediately visible.\n"
  },
  {
    "path": "theme-minimal/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.zonaut.keycloak</groupId>\n    <artifactId>theme-minimal</artifactId>\n    <version>0.0.1-SNAPSHOT</version>\n    <packaging>jar</packaging>\n\n    <name>KEYCLOAK EXTENSIONS :: THEME minimal</name>\n    <description>Example of a custom theme small modifications</description>\n\n    <dependencies>\n    </dependencies>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n\n        <maven.compiler.source>11</maven.compiler.source>\n        <maven.compiler.target>11</maven.compiler.target>\n\n        <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->\n        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>\n    </properties>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>${maven-compiler-plugin.version}</version>\n            </plugin>\n        </plugins>\n    </build>\n</project>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/META-INF/keycloak-themes.json",
    "content": "{ \n   \"themes\":[\n      { \n         \"name\":\"theme-minimal\",\n         \"types\":[ \n            \"account\",\n            \"admin\",\n            \"email\",\n            \"login\",\n            \"welcome\"\n         ]\n      }\n   ]\n}\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/account/resources/css/account.css",
    "content": "html {\n    height: 100%;\n}\n\nbody {\n    background-color: #F9F9F9;\n    margin: 0;\n    padding: 0;\n    height: 100%;\n}\n\nheader .navbar {\n    margin-bottom: 0;\n    min-height: inherit;\n}\n\n.header .container {\n    position: relative;\n}\n\n.navbar-title {\n    background-image: url('../img/logo.png');\n    height: 25px;\n    background-repeat: no-repeat;\n    width: 123px;\n    margin: 3px 10px 5px;\n    text-indent: -99999px;\n}\n\n.navbar-pf .navbar-utility {\n\tright: 20px;\n    top: -34px;\n    font-size: 12px;\n}\n\n.navbar-pf .navbar-utility > li > a {\n    color: #fff !important;\n    padding-bottom: 12px;\n    padding-top: 11px;\n    border-left: medium none;\n}\n\n.container {\n    height: 100%;\n}\n\n.content-area {\n    background-color: #fff;\n    border-color: #CECECE;\n    border-style: solid;\n    border-width: 0 1px;\n    height: 100%;\n    padding: 0 30px;\n}\n\n.margin-bottom {\n    margin-bottom: 10px;\n}\n\n/* Sidebar */\n\n.bs-sidebar {\n    background-color: #f9f9f9;\n    padding-top: 44px;\n    padding-right: 0;\n    padding-left: 0;\n    z-index: 20;\n}\n.bs-sidebar ul {\n    list-style: none;\n    padding-left: 12px;\n}\n\n.bs-sidebar ul li {\n    margin-bottom: 0.5em;\n    margin-left: -1em;\n}\n.bs-sidebar ul li a {\n    font-size: 14px;\n    padding-left: 25px;\n    color: #4d5258;\n    line-height: 28px;\n    display: block;\n    border-width: 1px 0 1px 1px;\n    border-style: solid;\n    border-color: #f9f9f9;\n}\n.bs-sidebar ul li a:hover,\n.bs-sidebar ul li a:focus {\n    text-decoration: none;\n    color: #777777;\n    border-right: 2px solid #aaa;\n}\n.bs-sidebar ul li.active a {\n    background-color: #c7e5f0;\n    border-color: #56bae0;\n    font-weight: bold;\n    background-image: url(../img/icon-sidebar-active.png);\n    background-repeat: no-repeat;\n    background-position: right center;\n}\n\n.bs-sidebar ul li.active a:hover {\n\tborder-right: none;\n}\n\n\n.content-area h2 {\n    font-family: \"Open Sans\", sans-serif;\n    font-weight: 100;\n    font-size: 24px;\n    margin-bottom: 25px;\n    margin-top: 25px;\n}\n\n.subtitle {\n    text-align: right;\n    margin-top: 30px;\n    color: #909090;\n}\n\n.required {\n    color: #CB2915;\n}\n\n\n.alert {\n    margin-top: 30px;\n    margin-bottom: 0;\n}\n\n.feedback-aligner .alert {\n    background-position: 1.27273em center;\n    background-repeat: no-repeat;\n    border-radius: 2px;\n    border-width: 1px;\n    color: #4D5258;\n    display: inline-block;\n    font-size: 1.1em;\n    line-height: 1.4em;\n    margin: 0;\n    padding: 0.909091em 3.63636em;\n    position: relative;\n    text-align: left;\n}\n.alert.alert-success {\n    background-color: #E4F1E1;\n    border-color: #4B9E39;\n}\n.alert.alert-error {\n    background-color: #F8E7E7;\n    border-color: #B91415;\n}\n.alert.alert-warning {\n    background-color: #FEF1E9;\n    border-color: #F17528;\n}\n.alert.alert-info {\n    background-color: #E4F3FA;\n    border-color: #5994B2;\n}\n\n.form-horizontal {\n    border-top: 1px solid #E9E8E8;\n    padding-top: 23px;\n}\n\n.form-horizontal .control-label {\n    color: #909090;\n    line-height: 1.4em;\n    padding-top: 5px;\n    position: relative;\n    text-align: right;\n    width: 100%;\n}\n\n.form-group {\n    position: relative;\n}\n\n.control-label + .required {\n    position: absolute;\n    right: -2px;\n    top: 0;\n}\n\n#kc-form-buttons {\n    text-align: right;\n    margin-top: 10px;\n}\n\n#kc-form-buttons .btn-primary {\n    float: right;\n    margin-left: 8px;\n}\n\n/* Authenticator page */\n\nol {\n    padding-left: 40px;\n}\n\nol li {\n    font-size: 13px;\n    margin-bottom: 10px;\n    position: relative;\n}\n\nol li img {\n    margin-top: 15px;\n    margin-bottom: 5px;\n    border: 1px solid #eee;\n}\n\nhr + .form-horizontal {\n    border: none;\n    padding-top: 0;\n}\n\n.kc-dropdown{\n    position: relative;\n}\n.kc-dropdown > a{\n    display:block;\n    padding: 11px 10px 12px;\n    line-height: 12px;\n    font-size: 12px;\n    color: #fff !important;\n    text-decoration: none;\n}\n.kc-dropdown > a::after{\n    content: \"\\2c5\";\n    margin-left: 4px;\n}\n.kc-dropdown:hover > a{\n    background-color: rgba(0,0,0,0.2);\n}\n.kc-dropdown ul li a{\n    padding: 1px 11px;\n    font-size: 12px;\n    color: #000 !important;\n    border: 1px solid #fff;\n    text-decoration: none;\n    display:block;\n    line-height: 20px;\n}\n.kc-dropdown ul li a:hover{\n    color: #4d5258;\n    background-color: #d4edfa;\n    border-color: #b3d3e7;\n}\n.kc-dropdown ul{\n    position: absolute;\n    z-index: 2000;\n    list-style:none;\n    display:none;\n    padding: 5px 0px;\n    margin: 0px;\n    background-color: #fff !important;\n    border: 1px solid #b6b6b6;\n    border-radius: 1px;\n    -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n    box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n    background-clip: padding-box;\n    min-width: 100px;\n}\n.kc-dropdown:hover ul{\n    display:block;\n}\n\n\n#kc-totp-secret-key {\n    border: 1px solid #eee;\n    font-size: 16px;\n    padding: 10px;\n    margin: 50px 0;\n}"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/account/theme.properties",
    "content": "parent=base\n\nstyles=css/account.css\nstylesCommon=node_modules/patternfly/dist/css/patternfly.min.css node_modules/patternfly/dist/css/patternfly-additions.min.css\n\n##### css classes for form buttons\n# main class used for all buttons\nkcButtonClass=btn\n# classes defining priority of the button - primary or default (there is typically only one priority button for the form)\nkcButtonPrimaryClass=btn-primary\nkcButtonDefaultClass=btn-default\n# classes defining size of the button\nkcButtonLargeClass=btn-lg\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/admin/resources/css/styles.css",
    "content": "html,body {\n    height: 100%;\n}\n\nform {\n    margin-top: 20px;\n}\n\ntable {\n    margin-top: 20px;\n}\n\n.required {\n    color: #f00;\n}\n\n.tooltip-inner {\n    min-width: 200px;\n}\n\n.margin-top {\n    margin-top: 20px;\n}\n\n.no-margin-top {\n    margin-top: 0px !important;\n}\n\ntable {\n    max-width: 100%;\n}\n\ntd.clip {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    max-width: 0;\n}\n\nth.w-10 {\n    width: 10%;\n}\n\nth.w-15 {\n    width: 15%;\n}\n\nth.w-20 {\n    width: 20%;\n}\n\n\nth.w-25 {\n    width: 25%;\n}\n\nth.w-30 {\n    width: 30%;\n}\n\n\nth.w-35 {\n    width: 35%;\n}\n\nth.w-40 {\n    width: 40%;\n}\n\n/*********** Loading ***********/\n\n.loading {\n    background-color: #f5f5f5;\n    border: 1px solid #eee;\n    position: absolute;\n    bottom: 0px;\n    left: 0px;\n    padding: 2px 200px 2px 5px;\n}\n\n/*********** Feedback ***********/\n\n.feedback-aligner {\n    position: fixed;\n    top: 15px;\n    text-align: center;\n    width: 100%;\n    height: 0;\n    z-index: 100;\n}\n.feedback-aligner .alert {\n    border-radius: 2px;\n    border-width: 1px;\n    display: inline-block;\n    position: relative;\n}\n\n/*********** On-Off Switch  ***********/\n\n.onoffswitch {\n    -moz-user-select: none;\n    height: 26px;\n    position: relative;\n    width: 62px;\n}\n.onoffswitch .onoffswitch-checkbox {\n    display: none;\n}\n.onoffswitch .onoffswitch-label {\n    border: 1px solid #bbb;\n    border-radius: 2px;\n    cursor: pointer;\n    display: block;\n    overflow: hidden;\n    width: 62px;\n}\n.onoffswitch .onoffswitch-inner {\n    display: block;\n    margin-left: -100%;\n    transition: margin 0.3s ease-in 0s;\n    width: 200%;\n}\n.onoffswitch .onoffswitch-inner > span {\n    -moz-box-sizing: border-box;\n    color: white;\n    float: left;\n    font-size: 11px;\n    font-family: \"Open Sans\", sans-serif;\n    font-weight: bold;\n    height: 24px;\n    line-height: 24px;\n    padding: 0;\n    width: 50%;\n}\n.onoffswitch .onoffswitch-switch {\n    background-image: linear-gradient(top, #fafafa 0%, #ededed 100%);\n    background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);\n    background-image: -moz-linear-gradient(top, #fafafa 0%, #ededed 100%);\n    background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);\n    background-image: -ms-linear-gradient(top, #fafafa 0%, #ededed 100%);\n    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fafafa), color-stop(1, 0, #ededed));\n    border: 1px solid #aaa;\n    border-radius: 2px;\n    bottom: 0;\n    margin: 0;\n    position: absolute;\n    right: 39px;\n    top: 0;\n    transition: all 0.3s ease-in 0s;\n    -webkit-transition: all 0.3s ease-in 0s;\n    width: 23px;\n}\n.onoffswitch .onoffswitch-inner .onoffswitch-active {\n    background-image: linear-gradient(top, #00a9ec 0%, #009bd3 100%);\n    background-image: -o-linear-gradient(top, #00a9ec 0%, #009bd3 100%);\n    background-image: -moz-linear-gradient(top, #00a9ec 0%, #009bd3 100%);\n    background-image: -webkit-linear-gradient(top, #00a9ec 0%, #009bd3 100%);\n    background-image: -ms-linear-gradient(top, #00a9ec 0%, #009bd3 100%);\n    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #00a9ec), color-stop(1, 0, #009bd3));\n    color: #FFFFFF;\n    padding-left: 10px;\n}\n.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-inner .onoffswitch-active,\n.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-inner .onoffswitch-inactive {\n    background-image: none;\n    background-color: #e5e5e5;\n    color: #9d9fa1;\n}\n.onoffswitch .onoffswitch-inner .onoffswitch-inactive {\n    background: linear-gradient(#fefefe, #e8e8e8) repeat scroll 0 0 transparent;\n    color: #4d5258;\n    padding-right: 10px;\n    text-align: right;\n}\n.onoffswitch .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {\n    margin-left: 0;\n}\n.onoffswitch .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {\n    right: 0;\n}\n\n\n/*********** Select 2 ***********/\n\n.select2-container {\n    width: 100%;\n}\n\n.select2-container-multi .select2-choices .select2-search-field {\n    height: 26px;\n}\n\n/*********** html select ********/\n.overflow-select {\n    overflow: auto;\n}\n\n\n/*********** New Menu ***********/\n\n\n.sidebar-pf-left{\n  background: #292e34;\n}\n\n.sidebar-pf .nav-pills > li a i, .sidebar-pf .nav-pills > li a span{\n  color:  #72767b;\n  display: inline-block;\n  margin-right: 10px;\n}\n.sidebar-pf .nav-pills > li > a{\n  color: #dbdada;\n  padding: 0px 20px 0 30px!important;\n  line-height: 30px;\n  border-left-width: 12px;\n  border-left-style:  solid;\n  border-left-color: #292e34;\n  margin-left: -6px;\n}\n\n.sidebar-pf .nav-pills > li > a:hover{\n  background: #393f44;\n  border-color:#292e34;\n  border-left-color: #393f44;\n  color: #fff;\n}\n\n.sidebar-pf .nav-pills > li > a:after{\n  display: none!important;\n}\n\n\n.sidebar-pf .nav-pills > li.active > a {\n  color: #fff;\n  background: #393f44!important;\n  border-bottom: 1px solid #000!important;\n  border-top: 1px solid #000!important;\n  border-left-color: #39a5dc!important;\n}\n\n.sidebar-pf .nav-pills > li.active a i, .sidebar-pf .nav-pills > li.active a span{\n  color: #39a5dc;\n}\n\n/*********** Realm selector ***********/\n\n.realm-selector{\n  color: #fff;\n  margin: 0 -20px;\n  position: relative;\n}\n\n.realm-dropmenu{\n  display: none;\n  cursor: pointer;\n  position: absolute;\n  top: 60px;\n  left: 0;\n  right: 0;\n  z-index: 999;\n  background: #fff;\n}\n\n.realm-selector:hover .realm-dropmenu{\n  display: block;\n}\n\n.realm-add{\n  padding: 10px;\n}\n\n.realm-selector h2{\n  font-size: 16px;\n  line-height: 60px;\n  padding: 0 20px;\n  margin: 0;\n  border-bottom: 1px solid #d5d5d6;\n}\n\n.realm-selector h2 i{\n  display: inline-block;\n  float: right;\n  line-height: 60px;\n}\n\n\n.realm-selector ul{\n  padding-left: 0;\n  margin: 0;\n  list-style: none;\n  max-height: 200px;\n  overflow-y:auto;\n}\n\n\n.realm-selector ul li a{\n  line-height: 60px;\n  padding: 0 20px;\n  border-bottom: 1px solid #d5d5d6;\n  line-height: 39px;\n  display: block;\n  font-size: 14px;\n}\n\n\n/*********** Overwrites header defaults ***********/\n\n.navbar-pf{\n  border-top: none!important;\n}\n\n.navbar-pf .navbar-brand {\n  padding: 0;\n  height: 56px;\n  line-height: 56px;\n  background-position: center center;\n  background-image: url('../img/keyclok-logo.png');\n  background-size: 148px 30px;\n  background-repeat: no-repeat;\n  width: 148px;\n}\n\n.navbar-pf .navbar-utility .dropdown-toggle {\n    padding: 23px !important;\n}\n\n.clickable {\n    cursor: pointer;\n}\n\nh1 i {\n    color: #999999;\n    font-size: 18px;\n    margin-left: 10px;\n}\n\n/* Action cell */\n.kc-action-cell {\n    background-color: #eeeeee;\n    background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);\n    background-repeat: repeat-x;\n\n    text-align: center;\n    vertical-align: middle;\n\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n\n    cursor:pointer;\n}\n\n.kc-action-cell:hover {\n    background-color: #eeeeee;\n    background-image: none;\n}\n\n.kc-sorter span {\n    margin-left: 10px;\n}\n\n\n/* Time selector */\n\n.time-selector input {\n    display: inline-block;\n    width: 120px;\n    padding-right: 0;\n    margin-right: 0;\n}\n\n.time-selector select {\n    display: inline-block;\n    width: 80px;\n    margin-left: 0;\n    padding-left: 0;\n}\n\n.ace_editor {\n    height: 600px;\n    width: 100%;\n}\n\n.kc-button-input-file input {\n    float: left;\n    width: 73%;\n}\n\n.kc-button-input-file label {\n    float: left;\n    margin-left: 2%;\n    width: 25%;\n}\n\ntable.kc-authz-table-expanded {\n    margin-top: 0px !important;\n}\n\n.no-gutter > [class*='col-'] {\n    padding-right:0!important;\n    padding-left:0!important;\n}\n\n.password-conceal {\n  font-family: 'text-security-disc';\n  font-size: 14px;\n}\n\n/* Deactivation styles for user-group membership tree models */\n\ndiv[tree-model] li .deactivate {\n    color: #4a5053;\n    opacity: 0.4;\n}\n\ndiv[tree-model] li .deactivate_selected {\n    background-color: #dcdcdc;\n    font-weight: bold;\n    padding: 1px 5px;\n}\n\n/* search highlighting */\n\ndiv[tree-model] li .highlight {\n    background-color: #aaddff;\n}\n\n/* Manage credentials */\ntable.credentials-table {\n    margin-top: 0;\n    margin-bottom: 20px;\n}\n\ntable.credentials-table td {\n    vertical-align: middle !important;\n}\n\ntable.credentials-table input[type='text'] {\n    width: 100%;\n}\n\ntd.credential-arrows-cell {\n    width: 75px;\n}\n\ntd.credential-label-cell {\n    padding: 5px !important;\n}\n\ntd.credential-action-cell {\n    padding: 0px !important;\n}\n\ntd.credential-action-cell div.kc-action-cell {\n    width: 100%;\n    height: 36px;\n    line-height: 34px;\n}\n\ntd.credential-action-cell.expanded div.kc-action-cell {\n    border-bottom: 1px solid #d1d1d1;\n}\n\ntable.credential-data-table td {\n    word-break: break-all;\n}\n\ntable.credential-data-table tr:first-child td {\n    border-top: 0;\n}\n\ntable.credential-data-table td:first-child {\n    width: 150px;\n}\n\ntable.credential-data-table td.key {\n    text-align: right;\n    font-weight: bold;\n}\n\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/admin/theme.properties",
    "content": "parent=base\nstyles=css/styles.css\nstylesCommon=node_modules/patternfly/dist/css/patternfly.min.css node_modules/patternfly/dist/css/patternfly-additions.min.css node_modules/select2/select2.css lib/angular/treeview/css/angular.treeview.css node_modules/text-security/text-security.css\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/html/email-test.ftl",
    "content": "<html>\n<body>\n${kcSanitize(msg(\"emailTestBodyHtml\",realmName))?no_esc}\n\n<p>${testNewVariable}<p>\n\n</body>\n</html>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/html/email-verification-with-code.ftl",
    "content": "<html>\n<body>\n${kcSanitize(msg(\"emailVerificationBodyCodeHtml\",code))?no_esc}\n</body>\n</html>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/html/email-verification.ftl",
    "content": "<html>\n<body>\n${kcSanitize(msg(\"emailVerificationBodyHtml\",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}\n</body>\n</html>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/html/event-login_error.ftl",
    "content": "<html>\n<body>\n${kcSanitize(msg(\"eventLoginErrorBodyHtml\",event.date,event.ipAddress))?no_esc}\n</body>\n</html>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/html/event-remove_totp.ftl",
    "content": "<html>\n<body>\n${kcSanitize(msg(\"eventRemoveTotpBodyHtml\",event.date, event.ipAddress))?no_esc}\n</body>\n</html>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/html/event-update_password.ftl",
    "content": "<html>\n<body>\n${kcSanitize(msg(\"eventUpdatePasswordBodyHtml\",event.date, event.ipAddress))?no_esc}\n</body>\n</html>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/html/event-update_totp.ftl",
    "content": "<html>\n<body>\n${kcSanitize(msg(\"eventUpdateTotpBodyHtml\",event.date, event.ipAddress))?no_esc}\n</body>\n</html>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/html/executeActions.ftl",
    "content": "<#outputformat \"plainText\">\n<#assign requiredActionsText><#if requiredActions??><#list requiredActions><#items as reqActionItem>${msg(\"requiredAction.${reqActionItem}\")}<#sep>, </#sep></#items></#list></#if></#assign>\n</#outputformat>\n\n<html>\n<body>\n${kcSanitize(msg(\"executeActionsBodyHtml\",link, linkExpiration, realmName, requiredActionsText, linkExpirationFormatter(linkExpiration)))?no_esc}\n</body>\n</html>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/html/identity-provider-link.ftl",
    "content": "<html>\n<body>\n${kcSanitize(msg(\"identityProviderLinkBodyHtml\", identityProviderAlias, realmName, identityProviderContext.username, link, linkExpiration, linkExpirationFormatter(linkExpiration)))?no_esc}\n</body>\n</html>"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/html/password-reset.ftl",
    "content": "<html>\n<body>\n${kcSanitize(msg(\"passwordResetBodyHtml\",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}\n</body>\n</html>"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_ca.properties",
    "content": "emailVerificationSubject=Verificaci\\u00F3 d''email\nemailVerificationBody=Alg\\u00FA ha creat un compte de {2} amb aquesta adre\\u00E7a de correu electr\\u00F2nic. Si has estat tu, fes clic a l''enlla\\u00E7 seg\\u00FCent per verificar la teva adre\\u00E7a de correu electr\\u00F2nic.\\n\\n{0}\\n\\nAquest enlla\\u00E7 expirar\\u00E0 en {1} minuts.\\n\\nSi tu no has creat aquest compte, simplement ignora aquest missatge.\nemailVerificationBodyHtml=<p>Alg\\u00FA ha creat un compte de {2} amb aquesta adre\\u00E7a de correu electr\\u00F2nic. Si has estat tu, fes clic a l''enlla\\u00E7 seg\\u00FCent per verificar la teva adre\\u00E7a de correu electr\\u00F2nic.</p><p><a href=\\\"{0}\\\">{0}</a></p><p> Aquest enlla\\u00E7 expirar\\u00E0 en {1} minuts.</p><p> Si tu no has creat aquest compte, simplement ignora aquest missatge.</p>\npasswordResetSubject=Reinicia contrasenya\npasswordResetBody=Alg\\u00FA ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l''enlla\\u00E7 seg\\u00FCent per a reiniciar-les.\\n\\n{0}\\n\\nAquest enlla\\u00E7 expirar\\u00E0 en {1} minuts.\\n\\nSi no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzar\\u00E0 cap canvi.\npasswordResetBodyHtml=<p>Alg\\u00FA ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l''enlla\\u00E7 seg\\u00FCent per a reiniciar-les.</p><p><a href=\\\"{0}\\\">{0}</a></p><p>Aquest enlla\\u00E7 expirar\\u00E0 en {1} minuts.</p><p>Si no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzar\\u00E0 cap canvi.</p>\nexecuteActionsSubject=Actualitza el teu compte\nexecuteActionsBody=L''administrador ha sol\\u00B7licitat que actualitzis el teu compte de {2}. Fes clic a l''enlla\\u00E7 inferior per iniciar aquest proc\\u00E9s.\\n\\n{0}\\n\\nAquest enlla\\u00E7 expirar\\u00E0 en {1} minutes.\\n\\nSi no est\\u00E0s al tant que l''administrador hagi sol\\u00B7licitat aix\\u00F2, simplement ignora aquest missatge i no es realitzar\\u00E0 cap canvi.\nexecuteActionsBodyHtml=<p>L''administrador ha sol\\u00B7licitat que actualitzis el teu compte de {2}. Fes clic a l''enlla\\u00E7 inferior per iniciar aquest proc\\u00E9s.</p><p><a href=\\\"{0}\\\">{0}</a></p><p>Aquest enlla\\u00E7 expirar\\u00E0 en {1} minutes.</p><p>Si no est\\u00E0s al tant que l''administrador hagi sol\\u00B7licitat aix\\u00F2, simplement ignora aquest missatge i no es realitzar\\u00E0 cap canvi.</p>\neventLoginErrorSubject=Fallada en l''inici de sessi\\u00F3\neventLoginErrorBody=S''ha detectat un intent d''acc\\u00E9s fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.\neventLoginErrorBodyHtml=<p>S''ha detectat un intent d''acc\\u00E9s fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.</p>\neventRemoveTotpSubject=Esborrat OTP\neventRemoveTotpBody=OTP s''ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, per favor contacta amb l''administrador.\neventRemoveTotpBodyHtml=<p>OTP s''ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador. </ P>\neventUpdatePasswordSubject=Actualitzaci\\u00F3 de contrasenya\neventUpdatePasswordBody=La teva contrasenya s''ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.\neventUpdatePasswordBodyHtml=<p>La teva contrasenya s''ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.</p>\neventUpdateTotpSubject=Actualitzaci\\u00F3 de OTP\neventUpdateTotpBody=OTP s''ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.\neventUpdateTotpBodyHtml=<p>OTP s''ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.</p>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_cs.properties",
    "content": "# encoding: utf-8\nemailVerificationSubject=Ověření e-mailu\nemailVerificationBody=Někdo vytvořil účet {2} s touto e-mailovou adresou. Pokud jste to vy, klikněte na níže uvedený odkaz a ověřte svou e-mailovou adresu \\n\\n{0}\\n\\nTento odkaz vyprší za {1} minuty.\\n\\nPokud jste tento účet nevytvořili, tuto zprávu ignorujte.\nemailVerificationBodyHtml=<p>Někdo vytvořil účet {2} s touto e-mailovou adresou. Pokud jste to vy, klikněte na níže uvedený odkaz a ověřte svou e-mailovou adresu. </p><p><a href=\"{0}\">Odkaz na ověření e-mailové adresy</a></p><p>Platnost odkazu vyprší za {1} minut.</p><p>Pokud jste tento účet nevytvořili, tuto zprávu ignorujte.</p>\nemailTestSubject=[KEYCLOAK] - testovací zpráva\nemailTestBody=Toto je testovací zpráva\nemailTestBodyHtml=<p>Toto je testovací zpráva </p>\nidentityProviderLinkSubject=Odkaz {0}\nidentityProviderLinkBody=Někdo chce propojit váš účet \"{1}\" s účtem \"{0}\" uživatele {2}. Pokud jste to vy, klikněte na níže uvedený odkaz a propojte účty. \\n\\n{3}\\n\\nPlatnost tohoto odkazu je {5}.\\n\\nPokud nechcete propojit účet, tuto zprávu ignorujte. Pokud propojíte účty, budete se moci přihlásit jako {1} pomocí {0}.\nidentityProviderLinkBodyHtml=<p>Někdo právě požádal o změnu hesla u vašeho účtu {2}. Pokud jste to vy, pro jeho změnu klikněte na odkaz níže.</p><p><a href=\"{0}\">Odkaz na změnu hesla.</a></p><p>Platnost tohoto odkazu je {3}.</p><p>Pokud heslo změnit nechcete, tuto zprávu ignorujte a nic se nezmění.</p>\npasswordResetSubject=Zapomenuté heslo\npasswordResetBody=Někdo právě požádal o změnu hesla u vašeho účtu {2}. Pokud jste to vy, pro jeho změnu klikněte na odkaz níže.\\n\\n{0}\\n\\nPlatnost tohoto odkazu je {3}.\\n\\nPokud heslo změnit nechcete, tuto zprávu ignorujte a nic se nezmění.\npasswordResetBodyHtml=<p> Někdo právě požádal o změnu pověření vašeho účtu {2}. Pokud jste to vy, klikněte na odkaz níže, abyste je resetovali.</p><p><a href=\"{0}\">Odkaz na obnovení pověření </a></p><p> Platnost tohoto odkazu vyprší během {1} minut.</p><p> Pokud nechcete obnovit vaše pověření, ignorujte tuto zprávu a nic se nezmění.</p>\nexecuteActionsSubject=Aktualizujte svůj účet\nexecuteActionsBody=Váš administrátor vás požádal o provedení následujících akcí u účtu {2}: {3}. Začněte kliknutím na níže uvedený odkaz.\\n\\n{0}\\n\\nPlatnost tohoto odkazu je {4}.\\n\\nPokud si nejste jisti, zda je tento požadavek v pořádku, ignorujte tuto zprávu.\nexecuteActionsBodyHtml=<p>Váš administrátor vás požádal o provedení následujících akcí u účtu {2}: {3}. Začněte kliknutím na níže uvedený odkaz.</p><p><a href=\"{0}\">Odkaz na aktualizaci účtu.</a></p><p>Platnost tohoto odkazu je {4}.</p><p>Pokud si nejste jisti, zda je tento požadavek v pořádku, ignorujte tuto zprávu.</p>\neventLoginErrorSubject=Chyba přihlášení\neventLoginErrorBody=Někdo se neúspěšně pokusil přihlásit k účtu {0} z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.\neventLoginErrorBodyHtml=<p>Někdo se neúspěšně pokusil přihlásit k účtu {0} z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>\neventRemoveTotpSubject=Odebrat TOTP\neventRemoveTotpBody=V účtu {0} bylo odebráno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.\neventRemoveTotpBodyHtml=<p>V účtu {0} bylo odebráno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>\neventUpdatePasswordSubject=Aktualizace hesla\neventUpdatePasswordBody=V účtu {0} bylo změněno heslo z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.\neventUpdatePasswordBodyHtml=<p>V účtu {0} bylo změněno heslo z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>\neventUpdateTotpSubject=Aktualizace OTP\neventUpdateTotpBody=V účtu {0} bylo změněno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.\neventUpdateTotpBodyHtml=<p>V účtu {0} bylo změněno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>\n\nrequiredAction.CONFIGURE_TOTP=Konfigurace OTP\nrequiredAction.terms_and_conditions=Smluvní podmínky\nrequiredAction.UPDATE_PASSWORD=Aktualizace hesla\nrequiredAction.UPDATE_PROFILE=Aktualizace profilu\nrequiredAction.VERIFY_EMAIL=Ověření e-mailu\n\n# units for link expiration timeout formatting\nlinkExpirationFormatter.timePeriodUnit.seconds=sekund\nlinkExpirationFormatter.timePeriodUnit.seconds.1=sekunda\nlinkExpirationFormatter.timePeriodUnit.seconds.2=sekundy\nlinkExpirationFormatter.timePeriodUnit.seconds.3=sekundy\nlinkExpirationFormatter.timePeriodUnit.seconds.4=sekundy\nlinkExpirationFormatter.timePeriodUnit.minutes=minut\nlinkExpirationFormatter.timePeriodUnit.minutes.1=minuta\nlinkExpirationFormatter.timePeriodUnit.minutes.2=minuty\nlinkExpirationFormatter.timePeriodUnit.minutes.3=minuty\nlinkExpirationFormatter.timePeriodUnit.minutes.4=minuty\nlinkExpirationFormatter.timePeriodUnit.hours=hodin\nlinkExpirationFormatter.timePeriodUnit.hours.1=hodina\nlinkExpirationFormatter.timePeriodUnit.hours.2=hodiny\nlinkExpirationFormatter.timePeriodUnit.hours.3=hodiny\nlinkExpirationFormatter.timePeriodUnit.hours.4=hodiny\nlinkExpirationFormatter.timePeriodUnit.days=dní\nlinkExpirationFormatter.timePeriodUnit.days.1=den\nlinkExpirationFormatter.timePeriodUnit.days.2=dny\nlinkExpirationFormatter.timePeriodUnit.days.3=dny\nlinkExpirationFormatter.timePeriodUnit.days.4=dny"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_de.properties",
    "content": "emailVerificationSubject=E-Mail verifizieren\nemailVerificationBody=Jemand hat ein {2} Konto mit dieser E-Mail-Adresse erstellt. Falls Sie das waren, dann klicken Sie auf den Link, um die E-Mail-Adresse zu verifizieren.\\n\\n{0}\\n\\nDieser Link wird in {1} Minuten ablaufen.\\n\\nFalls Sie dieses Konto nicht erstellt haben, dann k\\u00F6nnen sie diese Nachricht ignorieren.\nemailVerificationBodyHtml=<p>Jemand hat ein {2} Konto mit dieser E-Mail-Adresse erstellt. Falls das Sie waren, klicken Sie auf den Link, um die E-Mail-Adresse zu verifizieren.</p><p><a href=\"{0}\">Link zur Best\\u00E4tigung der E-Mail-Adresse</a></p><p>Dieser Link wird in {1} Minuten ablaufen.</p><p>Falls Sie dieses Konto nicht erstellt haben, dann k\\u00F6nnen sie diese Nachricht ignorieren.</p>\nidentityProviderLinkSubject=Link {0}\nidentityProviderLinkBody=Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.\\n\\n{3}\\n\\n Die G\\u00FCltigkeit des Links wird in {4} Minuten verfallen.\\n\\nSollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} \\u00FCber {0} erm\\u00F6glicht.\nidentityProviderLinkBodyHtml=<p>Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.</p><p><a href=\"{3}\">Link zur Best\\u00E4tigung der Kontoverkn\\u00FCpfung</a></p><p>Die G\\u00FCltigkeit des Links wird in {4} Minuten verfallen.</p><p>Sollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} \\u00FCber {0} erm\\u00F6glicht.</p>\npasswordResetSubject=Passwort zur\\u00FCcksetzen\npasswordResetBody=Es wurde eine \\u00C4nderung der Anmeldeinformationen f\\u00FCr Ihren Account {2} angefordert. Wenn Sie diese \\u00C4nderung beantragt haben, klicken Sie auf den unten stehenden Link.\\n\\n{0}\\n\\nDie G\\u00FCltigkeit des Links wird in {1} Minuten verfallen.\\n\\nSollten Sie keine \\u00C4nderung vollziehen wollen k\\u00F6nnen Sie diese Nachricht ignorieren und an Ihrem Account wird nichts ge\\u00E4ndert.\npasswordResetBodyHtml=<p>Es wurde eine \\u00C4nderung der Anmeldeinformationen f\\u00FCr Ihren Account {2} angefordert. Wenn Sie diese \\u00C4nderung beantragt haben, klicken Sie auf den unten stehenden Link.</p><p><a href=\"{0}\">Link zum Zur\\u00FCcksetzen von Anmeldeinformationen</a></p><p>Die G\\u00FCltigkeit des Links wird in {1} Minuten verfallen.</p><p>Sollten Sie keine \\u00C4nderung vollziehen wollen k\\u00F6nnen Sie diese Nachricht ignorieren und an Ihrem Account wird nichts ge\\u00E4ndert.</p>\nexecuteActionsSubject=Aktualisieren Sie Ihr Konto\nexecuteActionsBody=Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.\\n\\n{0}\\n\\nDie G\\u00FCltigkeit des Links wird in {1} Minuten verfallen.\\n\\nSollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unver\\u00E4ndert.\nexecuteActionsBodyHtml=<p>Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.</p><p><a href=\"{0}\">Link zum Account-Update</a></p><p>Die G\\u00FCltigkeit des Links wird in {1} Minuten verfallen.</p><p>Sollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unver\\u00E4ndert.</p>\neventLoginErrorSubject=Fehlgeschlagene Anmeldung\neventLoginErrorBody=Jemand hat um {0} von {1} versucht, sich mit Ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.\neventLoginErrorBodyHtml=<p>Jemand hat um {0} von {1} versucht, sich mit Ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>\neventRemoveTotpSubject=OTP Entfernt\neventRemoveTotpBody=OTP wurde von Ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.\neventRemoveTotpBodyHtml=<p>OTP wurde von Ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>\neventUpdatePasswordSubject=Passwort Aktualisiert\neventUpdatePasswordBody=Ihr Passwort wurde am {0} von {1} ge\\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.\neventUpdatePasswordBodyHtml=<p>Ihr Passwort wurde am {0} von {1} ge\\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>\neventUpdateTotpSubject=OTP Aktualisiert\neventUpdateTotpBody=OTP wurde am {0} von {1} ge\\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.\neventUpdateTotpBodyHtml=<p>OTP wurde am {0} von {1} ge\\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_en.properties",
    "content": "emailVerificationSubject=Verify email\nemailVerificationBody=Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address\\n\\n{0}\\n\\nThis link will expire within {3}.\\n\\nIf you didn''t create this account, just ignore this message.\nemailVerificationBodyHtml=<p>Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address</p><p><a href=\"{0}\">Link to e-mail address verification</a></p><p>This link will expire within {3}.</p><p>If you didn''t create this account, just ignore this message.</p>\nemailTestSubject=[KEYCLOAK] - SMTP test message\nemailTestBody=This is a test message\nemailTestBodyHtml=<p>This is a test message</p>\nidentityProviderLinkSubject=Link {0}\nidentityProviderLinkBody=Someone wants to link your \"{1}\" account with \"{0}\" account of user {2} . If this was you, click the link below to link accounts\\n\\n{3}\\n\\nThis link will expire within {5}.\\n\\nIf you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.\nidentityProviderLinkBodyHtml=<p>Someone wants to link your <b>{1}</b> account with <b>{0}</b> account of user {2} . If this was you, click the link below to link accounts</p><p><a href=\"{3}\">Link to confirm account linking</a></p><p>This link will expire within {5}.</p><p>If you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.</p>\npasswordResetSubject=Reset password\npasswordResetBody=Someone just requested to change your {2} account''s credentials. If this was you, click on the link below to reset them.\\n\\n{0}\\n\\nThis link and code will expire within {3}.\\n\\nIf you don''t want to reset your credentials, just ignore this message and nothing will be changed.\npasswordResetBodyHtml=<p>Someone just requested to change your {2} account''s credentials. If this was you, click on the link below to reset them.</p><p><a href=\"{0}\">Link to reset credentials</a></p><p>This link will expire within {3}.</p><p>If you don''t want to reset your credentials, just ignore this message and nothing will be changed.</p>\nexecuteActionsSubject=Update Your Account\nexecuteActionsBody=Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.\\n\\n{0}\\n\\nThis link will expire within {4}.\\n\\nIf you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.\nexecuteActionsBodyHtml=<p>Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.</p><p><a href=\"{0}\">Link to account update</a></p><p>This link will expire within {4}.</p><p>If you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.</p>\neventLoginErrorSubject=Login error\neventLoginErrorBody=A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.\neventLoginErrorBodyHtml=<p>A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.</p>\neventRemoveTotpSubject=Remove OTP\neventRemoveTotpBody=OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.\neventRemoveTotpBodyHtml=<p>OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.</p>\neventUpdatePasswordSubject=Update password\neventUpdatePasswordBody=Your password was changed on {0} from {1}. If this was not you, please contact an administrator.\neventUpdatePasswordBodyHtml=<p>Your password was changed on {0} from {1}. If this was not you, please contact an administrator.</p>\neventUpdateTotpSubject=Update OTP\neventUpdateTotpBody=OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.\neventUpdateTotpBodyHtml=<p>OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.</p>\n\nrequiredAction.CONFIGURE_TOTP=Configure OTP\nrequiredAction.terms_and_conditions=Terms and Conditions\nrequiredAction.UPDATE_PASSWORD=Update Password\nrequiredAction.UPDATE_PROFILE=Update Profile\nrequiredAction.VERIFY_EMAIL=Verify Email\n\n# units for link expiration timeout formatting\nlinkExpirationFormatter.timePeriodUnit.seconds=seconds\nlinkExpirationFormatter.timePeriodUnit.seconds.1=second\nlinkExpirationFormatter.timePeriodUnit.minutes=minutes\nlinkExpirationFormatter.timePeriodUnit.minutes.1=minute\n#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this: \n#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty\n#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty\n#linkExpirationFormatter.timePeriodUnit.minutes.4=minuty\nlinkExpirationFormatter.timePeriodUnit.hours=hours\nlinkExpirationFormatter.timePeriodUnit.hours.1=hour\nlinkExpirationFormatter.timePeriodUnit.days=days\nlinkExpirationFormatter.timePeriodUnit.days.1=day\n\nemailVerificationBodyCode=Please verify your email address by entering in the following code.\\n\\n{0}\\n\\n.\nemailVerificationBodyCodeHtml=<p>Please verify your email address by entering in the following code.</p><p><b>{0}</b></p>\n\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_es.properties",
    "content": "emailVerificationSubject=Verificaci\\u00F3n de email\nemailVerificationBody=Alguien ha creado una cuenta de {2} con esta direcci\\u00F3n de email. Si has sido t\\u00FA, haz click en el enlace siguiente para verificar tu direcci\\u00F3n de email.\\n\\n{0}\\n\\nEste enlace expirar\\u00E1 en {1} minutos.\\n\\nSi t\\u00FA no has creado esta cuenta, simplemente ignora este mensaje.\nemailVerificationBodyHtml=<p>Alguien ha creado una cuenta de {2} con esta direcci\\u00F3n de email. Si has sido t\\u00FA, haz click en el enlace siguiente para verificar tu direcci\\u00F3n de email.</p><p><a href=\\\"{0}\\\">{0}</a></p><p>Este enlace expirar\\u00E1 en {1} minutos.</p><p>Si t\\u00FA no has creado esta cuenta, simplemente ignora este mensaje.</p>\npasswordResetSubject=Reiniciar contrase\\u00F1a\npasswordResetBody=Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido t\\u00FA, haz clic en el enlace siguiente para reiniciarlas.\\n\\n{0}\\n\\nEste enlace expirar\\u00E1 en {1} minutos.\\n\\nSi no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizar\\u00E1 ning\\u00FAn cambio.\npasswordResetBodyHtml=<p>Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido t\\u00FA, haz clic en el enlace siguiente para reiniciarlas.</p><p><a href=\\\"{0}\\\">{0}</a></p><p>Este enlace expirar\\u00E1 en {1} minutos.</p><p>Si no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizar\\u00E1 ning\\u00FAn cambio.</p>\nexecuteActionsSubject=Actualiza tu cuenta\nexecuteActionsBody=El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.\\n\\n{0}\\n\\nEste enlace expirar\\u00E1 en {1} minutos.\\n\\nSi no est\\u00E1s al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizar\\u00E1 ning\\u00FAn cambio.\nexecuteActionsBodyHtml=<p>El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.</p><p><a href=\\\"{0}\\\">{0}</a></p><p>Este enlace expirar\\u00E1 en {1} minutos.</p><p>Si no est\\u00E1s al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizar\\u00E1 ning\\u00FAn cambio.</p>\neventLoginErrorSubject=Fallo en el inicio de sesi\\u00F3n\neventLoginErrorBody=Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido t\\u00FA, por favor contacta con el administrador.\neventLoginErrorBodyHtml=<p>Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido t\\u00FA, por favor contacta con el administrador.</p>\neventRemoveTotpSubject=Borrado OTP\neventRemoveTotpBody=OTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido t\\u00FA, por favor contacta con el administrador.\neventRemoveTotpBodyHtml=<p>OTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido t\\u00FA, por favor contacta con el administrador.</p>\neventUpdatePasswordSubject=Actualizaci\\u00F3n de contrase\\u00F1a\neventUpdatePasswordBody=Tu contrase\\u00F1a se ha actualizado el {0} desde {1}. Si no has sido t\\u00FA, por favor contacta con el administrador.\neventUpdatePasswordBodyHtml=<p>Tu contrase\\u00F1a se ha actualizado el {0} desde {1}. Si no has sido t\\u00FA, por favor contacta con el administrador.</p>\neventUpdateTotpSubject=Actualizaci\\u00F3n de OTP\neventUpdateTotpBody=OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido t\\u00FA, por favor contacta con el administrador.\neventUpdateTotpBodyHtml=<p>OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido t\\u00FA, por favor contacta con el administrador.</p>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_fr.properties",
    "content": "emailVerificationSubject=V\\u00e9rification du courriel\nemailVerificationBody=Quelqu''un vient de cr\\u00e9er un compte \"{2}\" avec votre courriel. Si vous \\u00eates \\u00e0 l''origine de cette requ\\u00eate, veuillez cliquer sur le lien ci-dessous afin de v\\u00e9rifier votre adresse de courriel\\n\\n{0}\\n\\nCe lien expire dans {1} minute(s).\\n\\nSinon, veuillez ignorer ce message.\nemailVerificationBodyHtml=<p>Quelqu''un vient de cr\\u00e9er un compte \"{2}\" avec votre courriel. Si vous \\u00eates \\u00e0 l''origine de cette requ\\u00eate, veuillez cliquer sur le lien ci-dessous afin de v\\u00e9rifier votre adresse de courriel</p><p><a href=\"{0}\">{0}</a></p><p>Ce lien expire dans {1} minute(s).</p><p>Sinon, veuillez ignorer ce message.</p>\npasswordResetSubject=R\\u00e9initialiser le mot de passe\npasswordResetBody=Quelqu''un vient de demander une r\\u00e9initialisation de mot de passe pour votre compte {2}. Si vous \\u00eates \\u00e0 l''origine de cette requ\\u00eate, veuillez cliquer sur le lien ci-dessous pour le mettre \\u00e0 jour.\\n\\n{0}\\n\\nCe lien expire dans {1} minute(s).\\n\\nSinon, veuillez ignorer ce message ; aucun changement ne sera effectu\\u00e9 sur votre compte.\npasswordResetBodyHtml=<p>Quelqu''un vient de demander une r\\u00e9initialisation de mot de passe pour votre compte {2}. Si vous \\u00eates \\u00e0 l''origine de cette requ\\u00eate, veuillez cliquer sur le lien ci-dessous pour le mettre \\u00e0 jour.</p><p><a href=\"{0}\">Lien pour r\\u00e9initialiser votre mot de passe</a></p><p>Ce lien expire dans {1} minute(s).</p><p>Sinon, veuillez ignorer ce message ; aucun changement ne sera effectu\\u00e9 sur votre compte.</p>\nexecuteActionsSubject=Mettre \\u00e0 jour votre compte\nexecuteActionsBody=Votre administrateur vient de demander une mise \\u00e0 jour de votre compte {2}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.\\n\\n{0}\\n\\nCe lien expire dans {1} minute(s).\\n\\nSi vous n''\\u00eates pas \\u00e0 l''origine de cette requ\\u00eate, veuillez ignorer ce message ; aucun changement ne sera effectu\\u00e9 sur votre compte.\nexecuteActionsBodyHtml=<p>Votre administrateur vient de demander une mise \\u00e0 jour de votre compte {2}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.</p><p><a href=\"{0}\">{0}</a></p><p>Ce lien expire dans {1} minute(s).</p><p>Si vous n''\\u00eates pas \\u00e0 l''origine de cette requ\\u00eate, veuillez ignorer ce message ; aucun changement ne sera effectu\\u00e9 sur votre compte.</p>\neventLoginErrorSubject=Erreur de connexion\neventLoginErrorBody=Une tentative de connexion a \\u00e9t\\u00e9 d\\u00e9tect\\u00e9e sur votre compte {0} depuis {1}. Si vous n''\\u00eates pas \\u00e0 l''origine de cette requ\\u00eate, veuillez contacter votre administrateur.\neventLoginErrorBodyHtml=<p>Une tentative de connexion a \\u00e9t\\u00e9 d\\u00e9tect\\u00e9e sur votre compte {0} depuis {1}. Si vous n''\\u00eates pas \\u00e0 l''origine de cette requ\\u00eate, veuillez contacter votre administrateur.</p>\neventRemoveTotpSubject=Suppression du OTP\neventRemoveTotpBody=Le OTP a \\u00e9t\\u00e9 supprim\\u00e9 de votre compte {0} depuis {1}. Si vous n''\\u00e9tiez pas \\u00e0 l''origine de cette requ\\u00eate, veuillez contacter votre administrateur.\neventRemoveTotpBodyHtml=<p>Le OTP a \\u00e9t\\u00e9 supprim\\u00e9 de votre compte {0} depuis {1}. Si vous n''\\u00e9tiez pas \\u00e0 l''origine de cette requ\\u00eate, veuillez contacter votre administrateur.</p>\neventUpdatePasswordSubject=Mise \\u00e0 jour du mot de passe\neventUpdatePasswordBody=Votre mot de passe pour votre compte {0} a \\u00e9t\\u00e9 modifi\\u00e9 depuis {1}. Si vous n''\\u00e9tiez pas \\u00e0 l''origine de cette requ\\u00eate, veuillez contacter votre administrateur.\neventUpdatePasswordBodyHtml=<p>Votre mot de passe pour votre compte {0} a \\u00e9t\\u00e9 modifi\\u00e9 depuis {1}. Si vous n''\\u00e9tiez pas \\u00e0 l''origine de cette requ\\u00eate, veuillez contacter votre administrateur.</p>\neventUpdateTotpSubject=Mise \\u00e0 jour du OTP\neventUpdateTotpBody=Le OTP a \\u00e9t\\u00e9 mis \\u00e0 jour pour votre compte {0} depuis {1}. Si vous n''\\u00e9tiez pas \\u00e0 l''origine de cette requ\\u00eate, veuillez contacter votre administrateur.\neventUpdateTotpBodyHtml=<p>Le OTP a \\u00e9t\\u00e9 mis \\u00e0 jour pour votre compte {0} depuis {1}. Si vous n''\\u00e9tiez pas \\u00e0 l''origine de cette requ\\u00eate, veuillez contacter votre administrateur.</p>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_it.properties",
    "content": "emailVerificationSubject=Verifica l''email\nemailVerificationBody=Qualcuno ha creato un account {2} con questo indirizzo email. Se sei stato tu, fai clic sul link seguente per verificare il tuo indirizzo email\\n\\n{0}\\n\\nQuesto link scadr\\u00e0 in {3}.\\n\\nSe non sei stato tu a creare questo account, ignora questo messaggio.\nemailVerificationBodyHtml=<p>Qualcuno ha creato un account {2} con questo indirizzo email. Se sei stato tu, fai clic sul link seguente per verificare il tuo indirizzo email</p><p><a href=\"{0}\">{0}</a></p><p>Questo link scadr\\u00e0 in {3}.</p><p>Se non sei stato tu a creare questo account, ignora questo messaggio.</p>\nemailTestSubject=[KEYCLOAK] - messaggio di test SMTP\nemailTestBody=Questo \\u00e8 un messaggio di test\nemailTestBodyHtml=<p>Questo \\u00e8 un messaggio di test</p>\nidentityProviderLinkSubject=Link {0}\nidentityProviderLinkBody=Qualcuno vuole associare il tuo account \"{1}\" con l''account \"{0}\" dell''utente {2}. Se sei stato tu, fai clic sul link seguente per associare gli account\\n\\n{3}\\n\\nQuesto link scadr\\u00e0 in {5}.\\n\\nSe non vuoi associare l''account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}.\nidentityProviderLinkBodyHtml=<p>Qualcuno vuole associare il tuo account <b>{1}</b> con l''account <b>{0}</b> dell''utente {2}. Se sei stato tu, fai clic sul link seguente per associare gli account</p><p><a href=\"{3}\">{3}</a></p><p>Questo link scadr\\u00e0 in {5}.</p><p>Se non vuoi associare l''account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}.</p>\npasswordResetSubject=Reimposta la password\npasswordResetBody=Qualcuno ha appena richiesto di cambiare le credenziali di accesso al tuo account {2}. Se sei stato tu, fai clic sul link seguente per reimpostarle.\\n\\n{0}\\n\\nQuesto link e codice scadranno in {3}.\\n\\nSe non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verr\\u00e0 effettuato nessun cambio.\npasswordResetBodyHtml=<p>Qualcuno ha appena richiesto di cambiare le credenziali di accesso al tuo account {2}. Se sei stato tu, fai clic sul link seguente per reimpostarle.</p><p><a href=\"{0}\">{0}</a></p><p>Questo link scadr\\u00e0 in {3}.</p><p>Se non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verr\\u00e0 effettuato nessun cambio.</p>\nexecuteActionsSubject=Aggiorna il tuo account\nexecuteActionsBody=Il tuo amministratore ha appena richiesto un aggiornamento del tuo account {2} ed \\u00e8 necessario che tu esegua la/le seguente/i azione/i: {3}. Fai clic sul link seguente per iniziare questo processo.\\n\\n{0}\\n\\nQuesto link scadr\\u00e0 in {4}.\\n\\nSe non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verr\\u00e0 effettuato nessun cambio.\nexecuteActionsBodyHtml=<p>Il tuo amministratore ha appena richiesto un aggiornamento del tuo account {2} ed \\u00e8 necessario che tu esegua la/le seguente/i azione/i: {3}. Fai clic sul link seguente per iniziare questo processo.</p><p><a href=\"{0}\">Link to account update</a></p><p>Questo link scadr\\u00e0 in {4}.</p><p>Se non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verr\\u00e0 effettuato nessun cambio.</p>\neventLoginErrorSubject=Errore di accesso\neventLoginErrorBody=\\u00c8 stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.\neventLoginErrorBodyHtml=<p>\\u00c8 stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>\neventRemoveTotpSubject=Rimozione OTP (password temporanea valida una volta sola)\neventRemoveTotpBody=La OTP (password temporanea valida una volta sola) \\u00e8 stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.\neventRemoveTotpBodyHtml=<p>La OTP (password temporanea valida una volta sola) \\u00e8 stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>\neventUpdatePasswordSubject=Aggiornamento password\neventUpdatePasswordBody=La tua password \\u00e8 stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.\neventUpdatePasswordBodyHtml=<p>La tua password \\u00e8 stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>\neventUpdateTotpSubject=Aggiornamento OTP (password temporanea valida una volta sola)\neventUpdateTotpBody=La OTP (password temporanea valida una volta sola) \\u00e8 stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.\neventUpdateTotpBodyHtml=<p>La OTP (password temporanea valida una volta sola) \\u00e8 stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>\n\nrequiredAction.CONFIGURE_TOTP=Configurazione OTP\nrequiredAction.terms_and_conditions=Termini e condizioni\nrequiredAction.UPDATE_PASSWORD=Aggiornamento password\nrequiredAction.UPDATE_PROFILE=Aggiornamento profilo\nrequiredAction.VERIFY_EMAIL=Verifica dell''indirizzo email\n\n# units for link expiration timeout formatting\nlinkExpirationFormatter.timePeriodUnit.seconds=secondi\nlinkExpirationFormatter.timePeriodUnit.seconds.1=secondo\nlinkExpirationFormatter.timePeriodUnit.minutes=minuti\nlinkExpirationFormatter.timePeriodUnit.minutes.1=minuto\n#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this:\n#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty\n#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty\n#linkExpirationFormatter.timePeriodUnit.minutes.4=minuty\nlinkExpirationFormatter.timePeriodUnit.hours=ore\nlinkExpirationFormatter.timePeriodUnit.hours.1=ora\nlinkExpirationFormatter.timePeriodUnit.days=giorni\nlinkExpirationFormatter.timePeriodUnit.days.1=giorno\n\nemailVerificationBodyCode=Per favore verifica il tuo indirizzo email inserendo il codice seguente.\\n\\n{0}\\n\\n.\nemailVerificationBodyCodeHtml=<p>Per favore verifica il tuo indirizzo email inserendo il codice seguente.</p><p><b>{0}</b></p>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_ja.properties",
    "content": "# encoding: utf-8\nemailVerificationSubject=Eメールの確認\nemailVerificationBody=このメールアドレスで{2}アカウントが作成されました。以下のリンクをクリックしてメールアドレスの確認を完了してください。\\n\\n{0}\\n\\nこのリンクは{3}だけ有効です。\\n\\nもしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。\nemailVerificationBodyHtml=<p>このメールアドレスで{2}アカウントが作成されました。以下のリンクをクリックしてメールアドレスの確認を完了してください。</p><p><a href=\"{0}\">メールアドレスの確認</a></p><p>このリンクは{3}だけ有効です。</p><p>もしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。</p>\nemailTestSubject=[KEYCLOAK] - SMTPテストメッセージ\nemailTestBody=これはテストメッセージです\nemailTestBodyHtml=<p>これはテストメッセージです</p>\nidentityProviderLinkSubject=リンク {0}\nidentityProviderLinkBody=あなたの\"{1}\"アカウントと{2}ユーザーの\"{0}\"アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。\\n\\n{3}\\n\\nこのリンクは{5}だけ有効です。\\n\\nもしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0}経由で{1}にログインすることができるようになります。\nidentityProviderLinkBodyHtml=<p>あなたの<b>{1}</b>アカウントと{2}ユーザーの<b>{0}</b>アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。</p><p><a href=\"{3}\">アカウントリンクの確認</a></p><p>このリンクは{5}だけ有効です。</p><p>もしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0}経由で{1}にログインすることができるようになります。</p>\npasswordResetSubject=パスワードのリセット\npasswordResetBody=あなたの{2}アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。\\n\\n{0}\\n\\nこのリンクは{3}だけ有効です。\\n\\nもしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。\npasswordResetBodyHtml=<p>あなたの{2}アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。</p><p><a href=\"{0}\">パスワードのリセット</a></p><p>このリンクは{3}だけ有効です。</p><p>もしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。</p>\nexecuteActionsSubject=アカウントの更新\nexecuteActionsBody=次のアクションを実行することにより、管理者よりあなたの{2}アカウントの更新が要求されています: {3}。以下のリンクをクリックしてこのプロセスを開始してください。\\n\\n{0}\\n\\nこのリンクは{4}だけ有効です。\\n\\n管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。\nexecuteActionsBodyHtml=<p>次のアクションを実行することにより、管理者よりあなたの{2}アカウントの更新が要求されています: {3}。以下のリンクをクリックしてこのプロセスを開始してください。</p><p><a href=\"{0}\">アカウントの更新</a></p><p>このリンクは{4}だけ有効です。</p><p>管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。</p>\neventLoginErrorSubject=ログインエラー\neventLoginErrorBody={0}に{1}からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は、管理者に連絡してください。\neventLoginErrorBodyHtml=<p>{0}に{1}からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は管理者に連絡してください。</p>\neventRemoveTotpSubject=OTPの削除\neventRemoveTotpBody={0}に{1}からの操作でOTPが削除されました。心当たりがない場合は、管理者に連絡してください。\neventRemoveTotpBodyHtml=<p>{0}に{1}からの操作でOTPが削除されました。心当たりがない場合は、管理者に連絡してください。</p>\neventUpdatePasswordSubject=パスワードの更新\neventUpdatePasswordBody={0}に{1}からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。\neventUpdatePasswordBodyHtml=<p>{0}に{1}からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。</p>\neventUpdateTotpSubject=OTPの更新\neventUpdateTotpBody={0}に{1}からの操作でOTPが更新されました。心当たりがない場合は、管理者に連絡してください。\neventUpdateTotpBodyHtml=<p>{0}に{1}からの操作でOTPが更新されました。心当たりがない場合は、管理者に連絡してください。</p>\n\nrequiredAction.CONFIGURE_TOTP=OTPの設定\nrequiredAction.terms_and_conditions=利用規約\nrequiredAction.UPDATE_PASSWORD=パスワードの更新\nrequiredAction.UPDATE_PROFILE=プロファイルの更新\nrequiredAction.VERIFY_EMAIL=Eメールの確認\n\n# units for link expiration timeout formatting\nlinkExpirationFormatter.timePeriodUnit.seconds=秒\nlinkExpirationFormatter.timePeriodUnit.seconds.1=秒\nlinkExpirationFormatter.timePeriodUnit.minutes=分\nlinkExpirationFormatter.timePeriodUnit.minutes.1=分\n#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this: \n#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty\n#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty\n#linkExpirationFormatter.timePeriodUnit.minutes.4=minuty\nlinkExpirationFormatter.timePeriodUnit.hours=時間\nlinkExpirationFormatter.timePeriodUnit.hours.1=時間\nlinkExpirationFormatter.timePeriodUnit.days=日\nlinkExpirationFormatter.timePeriodUnit.days.1=日\n\nemailVerificationBodyCode=次のコードを入力してメールアドレスを確認してください。\\n\\n{0}\\n\\n.\nemailVerificationBodyCodeHtml=<p>次のコードを入力してメールアドレスを確認してください。</p><p><b>{0}</b></p>\n\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_lt.properties",
    "content": "# encoding: utf-8\nemailVerificationSubject=El. pašto patvirtinimas\nemailVerificationBody=Paskyra {2} sukurta naudojant šį el. pašto adresą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą\\n\\n{0}\\n\\nŠi nuoroda galioja {1} min.\\n\\nJei paskyros nekūrėte, tuomet ignuoruokite šį laišką. \nemailVerificationBodyHtml=<p>Paskyra {2} sukurta naudojant šį el. pašto adresą. Jei tao buvote Jūs, tuomet paspauskite žemiau esančią nuorodą</p><p><a href=LT\"{0}\">{0}</a></p><p>Ši nuoroda galioja {1} min.</p><p>nJei paskyros nekūrėte, tuomet ignuoruokite šį laišką.</p>\nidentityProviderLinkSubject=Sąsaja {0}\nidentityProviderLinkBody=Kažas pageidauja susieti Jūsų \"{1}\" paskyrą su \"{0}\" {2} naudotojo paskyrą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą norėdami susieti paskyras\\n\\n{3}\\n\\nŠi nuoroda galioja {4} min.\\n\\nJei paskyrų susieti nenorite, tuomet ignoruokite šį laišką. Jei paskyras susiesite, tuomet prie {1} galėsiste prisijungti per {0}.\nidentityProviderLinkBodyHtml=<p>žas pageidauja susieti Jūsų <b>{1}</b> paskyrą su <b>{0}</b> {2} naudotojo paskyrą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą norėdami susieti paskyras</p><p><a href=LT\"{3}\">{3}</a></p><p>Ši nuoroda galioja {4} min.</p><p>Jei paskyrų susieti nenorite, tuomet ignoruokite šį laišką. Jei paskyras susiesite, tuomet prie {1} galėsiste prisijungti per {0}.</p>\npasswordResetSubject=Slaptažodžio atkūrimas\npasswordResetBody=Kažkas pageidauja pakeisti Jūsų paskyros {2} slaptažodį. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą slaptažodžio pakeitimui.\\n\\n{0}\\n\\nŠi nuoroda ir kodas galioja {1} min.\\n\\nJei nepageidajate keisti slaptažodžio, tuomet ignoruokite šį laišką ir niekas nebus pakeista.\npasswordResetBodyHtml=<p>Kažkas pageidauja pakeisti Jūsų paskyros {2} slaptažodį. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą slaptažodžio pakeitimui.</p><p><a href=LT\"{0}\">{0}</a></p><p>Ši nuoroda ir kodas galioja {1} min.</p><p>Jei nepageidajate keisti slaptažodžio, tuomet ignoruokite šį laišką ir niekas nebus pakeista.</p>\nexecuteActionsSubject=Atnaujinkite savo paskyrą\nexecuteActionsBody=Sistemos administratorius pageidauja, kad Jūs atnaujintumėte savo {2} paskyrą. Paspauskite žemiau esančią nuorodą paskyros duomenų atnaujinimui.\\n\\n{0}\\n\\nŠi nuoroda galioja {1} min.\\n\\nJei Jūs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite šį laišką ir niekas nebus pakeista.\nexecuteActionsBodyHtml=<p>Sistemos administratorius pageidauja, kad Jūs atnaujintumėte savo {2} paskyrą. Paspauskite žemiau esančią nuorodą paskyros duomenų atnaujinimui.</p><p><a href=LT\"{0}\">{0}</a></p><p>Ši nuoroda galioja {1} min.</p><p>Jei Jūs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite šį laišką ir niekas nebus pakeista.</p>\neventLoginErrorSubject=Nesėkmingas bandymas prisijungti prie jūsų paskyros\neventLoginErrorBody=Bandymas prisijungti prie jūsų paskyros {0} iš {1} nesėkmingas. Jei tai nebuvote jūs, tuomet susisiekite su administratoriumi\neventLoginErrorBodyHtml=<p>Bandymas prisijungti prie jūsų paskyros {0} iš {1} nesėkmingas. Jei tai nebuvote jūs, tuomet susisiekite su administratoriumi</p>\neventRemoveTotpSubject=OTP pašalinimas\neventRemoveTotpBody=Kažkas pageidauja atsieti TOPT Jūsų {1} paskyroje su {0}. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi\neventRemoveTotpBodyHtml=<p>Kažkas pageidauja atsieti TOPT Jūsų <b>{1}</b> paskyroje su <b>{0}</b>. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi</p>\neventUpdatePasswordSubject=Slaptažodžio atnaujinimas\neventUpdatePasswordBody={1} paskyroje {0} pakeisas jūsų slaptažodis. Jei Jūs nekeitėte, tuomet susisiekite su administratoriumi\neventUpdatePasswordBodyHtml=<p>{1} paskyroje {0} pakeisas jūsų slaptažodis. Jei Jūs nekeitėte, tuomet susisiekite su administratoriumi</p>\neventUpdateTotpSubject=OTP atnaujinimas\neventUpdateTotpBody=OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi\neventUpdateTotpBodyHtml=<p>OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi</p>"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_nl.properties",
    "content": "emailVerificationSubject=Bevestig e-mailadres\nemailVerificationBody=Iemand heeft een {2} account aangemaakt met dit e-mailadres. Als u dit was, klikt u op de onderstaande koppeling om uw e-mailadres te bevestigen \\n\\n{0}\\n\\nDeze koppeling zal binnen {3} vervallen.\\n\\nU kunt dit bericht negeren indien u dit account niet heeft aangemaakt.\nemailVerificationBodyHtml=<p>Iemand heeft een {2} account aangemaakt met dit e-mailadres. Als u dit was, klikt u op de onderstaande koppeling om uw e-mailadres te bevestigen</p><p><a href=\"{0}\">Koppeling naar e-mailadres bevestiging</a></p><p>Deze koppeling zal binnen {3} vervallen.</p<p>U kunt dit bericht negeren indien u dit account niet heeft aangemaakt.</p>\nemailTestSubject=[KEYCLOAK] - SMTP testbericht\nemailTestBody=Dit is een testbericht\nemailTestBodyHtml=<p>Dit is een testbericht</p>\nidentityProviderLinkSubject=Koppel {0}\nidentityProviderLinkBody=Iemand wil uw \"{1}\" account koppelen met \"{0}\" account van gebruiker {2}. Als u dit was, klik dan op de onderstaande link om de accounts te koppelen\\n\\n{3}\\n\\nDeze link zal over {5} vervallen.\\n\\nAls u de accounts niet wilt koppelen, negeer dan dit bericht. Als u accounts koppelt, dan kunt u bij {1} inloggen via {0}.\nidentityProviderLinkBodyHtml=<p>Iemand wil uw \"{1}\" account koppelen met \"{0}\" account van gebruiker {2}. Als u dit was, klik dan op de onderstaande link om de accounts te koppelen</p><p><a href=\"{3}\">Link om accounts te koppelen</a></p><p>Deze link zal over {5} vervallen.</p><p>Als u de accounts niet wilt koppelen, negeer dan dit bericht. Als u accounts koppelt, dan kunt u bij {1} inloggen via {0}.</p>\npasswordResetSubject=Wijzig wachtwoord\npasswordResetBody=Iemand verzocht de aanmeldgegevens van uw {2} account te wijzigen. Als u dit was, klik dan op de onderstaande koppeling om ze te wijzigen.\\n\\n{0}\\n\\nDe link en de code zullen binnen {3} vervallen.\\n\\nAls u uw aanmeldgegevens niet wilt wijzigen, negeer dan dit bericht en er zal niets gewijzigd worden.\npasswordResetBodyHtml=<p>Iemand verzocht de aanmeldgegevens van uw {2} account te wijzigen. Als u dit was, klik dan op de onderstaande koppeling om ze te wijzigen.</p><p><a href=\"{0}\">Wijzig aanmeldgegevens</a></p><p>De link en de code zullen binnen {3} vervallen.</p><p>Als u uw aanmeldgegevens niet wilt wijzigen, negeer dan dit bericht en er zal niets gewijzigd worden.</p>\nexecuteActionsSubject=Wijzig uw account\nexecuteActionsBody=Uw beheerder heeft u verzocht uw {2} account te wijzigen. Klik op de onderstaande koppeling om dit proces te starten. \\n\\n{0}\\n\\nDeze link zal over {4} vervallen. \\n\\nAls u niet over dit verzoek op de hoogte was, negeer dan dit bericht om uw account ongewijzigd te laten.\nexecuteActionsBodyHtml=<p>Uw beheerder heeft u verzocht uw {2} account te wijzigen. Klik op de onderstaande koppeling om dit proces te starten.</p><p><a href=\"{0}\">Link naar account wijziging</a></p><p>Deze link zal over {4} vervallen.</p><p>Als u niet over dit verzoek op de hoogte was, negeer dan dit bericht om uw account ongewijzigd te laten.</p>\neventLoginErrorSubject=Inlogfout\neventLoginErrorBody=Er is een foutieve inlogpoging gedetecteerd op uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met de beheerder.\neventLoginErrorBodyHtml=<p>Er is een foutieve inlogpoging gedetecteerd op uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met de beheerder.</p>\neventRemoveTotpSubject=OTP verwijderd\neventRemoveTotpBody=OTP is verwijderd van uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met uw beheerder.\neventRemoveTotpBodyHtml=<p>OTP is verwijderd van uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>\neventUpdatePasswordSubject=Wachtwoord gewijzigd\neventUpdatePasswordBody=Uw wachtwoord is gewijzigd om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.\neventUpdatePasswordBodyHtml=<p>Uw wachtwoord is gewijzigd om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>\neventUpdateTotpSubject=OTP gewijzigd\neventUpdateTotpBody=OTP is gewijzigd voor uw account om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.\neventUpdateTotpBodyHtml=<p>OTP is gewijzigd voor uw account om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>\n\n\n# units for link expiration timeout formatting\nlinkExpirationFormatter.timePeriodUnit.seconds=seconden\nlinkExpirationFormatter.timePeriodUnit.seconds.1=seconde\nlinkExpirationFormatter.timePeriodUnit.minutes=minuten\nlinkExpirationFormatter.timePeriodUnit.minutes.1=minuut\nlinkExpirationFormatter.timePeriodUnit.hours=uur\nlinkExpirationFormatter.timePeriodUnit.hours.1=uur\nlinkExpirationFormatter.timePeriodUnit.days=dagen\nlinkExpirationFormatter.timePeriodUnit.days.1=dag\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_no.properties",
    "content": "emailVerificationSubject=Bekreft e-postadresse\nemailVerificationBody=Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk p\\u00E5 lenken nedenfor for \\u00E5 bekrefte e-postadressen din\\n\\n{0}\\n\\nDenne lenken vil utl\\u00F8pe om {1} minutter.\\n\\nHvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.\nemailVerificationBodyHtml=<p>Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk p\\u00E5 lenken nedenfor for \\u00E5 bekrefte e-postadressen din</p><p><a href=\"{0}\">{0}</a></p><p>Denne lenken vil utl\\u00F8pe om {1} minutter.</p><p>Hvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.</p>\nidentityProviderLinkSubject=Lenke {0}\nidentityProviderLinkBody=Noen vil koble din <b>{1}</b> konto med <b>{0}</b> konto til bruker {2}. Hvis dette var deg, klikk p\\u00E5 lenken nedenfor for \\u00E5 koble kontoene\\n\\n{3}\\n\\nDenne lenken vil utl\\u00F8pe om {4} minutter\\n\\nHvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.\nidentityProviderLinkBodyHtml=<p>Noen vil koble din <b>{1}</b> konto med <b>{0}</b> konto til bruker {2}. Hvis dette var deg, klikk p\\u00E5 lenken nedenfor for \\u00E5 koble kontoene.</p><p><a href=\"{3}\">{3}</a></p><p>Denne lenken vil utl\\u00F8pe om {4} minutter.</p><p>Hvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.</p>\npasswordResetSubject=Tilbakestill passord\npasswordResetBody=Noen har bedt om \\u00E5 endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk p\\u00E5 lenken nedenfor for \\u00E5 tilbakestille dem.\\n\\n{0}\\n\\nDenne lenken vil utl\\u00F8pe om {1} minutter.\\n\\nHvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.\npasswordResetBodyHtml=<p>Noen har bedt om \\u00E5 endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk p\\u00E5 lenken nedenfor for \\u00E5 tilbakestille dem.</p><p><a href=\"{0}\">{0}</a></p><p>Denne lenken vil utl\\u00F8pe om {1} minutter.</p><p>Hvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.</p>\nexecuteActionsSubject=Oppdater kontoen din\nexecuteActionsBody=Administrator har anmodet at du oppdaterer din {2} konto. Klikk p\\u00E5 lenken nedenfor for \\u00E5 starte denne prosessen\\n\\n{0}\\n\\nDenne lenken vil utl\\u00F8pe om {1} minutter.\\n\\nHvis du ikke var klar over at administrator har bedt om dette, vennligst ignorer denne meldingen og ingenting vil bli endret.\nexecuteActionsBodyHtml=<p>Administrator har anmodet at du oppdaterer din {2} konto. Klikk p\\u00E5 linken nedenfor for \\u00E5 starte denne prosessen.</p><p><a href=\"{0}\">{0}</a></p><p>Denne lenken vil utl\\u00F8pe om {1} minutter.</p><p>Hvis du ikke var klar over at administrator har bedt om dette, ignorer denne meldingen og ingenting vil bli endret. </p>\neventLoginErrorSubject=Innlogging feilet\neventLoginErrorBody=Et mislykket innloggingsfors\\u00F8k ble oppdaget p\\u00E5 din konto p\\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.\neventLoginErrorBodyHtml=<p>Et mislykket innloggingsfors\\u00F8k ble oppdaget p\\u00E5 din konto p\\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.</p>\neventRemoveTotpSubject=Fjern engangskode\neventRemoveTotpBody=Engangskode ble fjernet fra kontoen din p\\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.\neventRemoveTotpBodyHtml=<p>Engangskode ble fjernet fra kontoen din p\\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.</p>\neventUpdatePasswordSubject=Oppdater passord\neventUpdatePasswordBody=Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.\neventUpdatePasswordBodyHtml=<p>Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>\neventUpdateTotpSubject=Oppdater engangskode\neventUpdateTotpBody=Engangskode ble oppdatert for kontoen din p\\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.\neventUpdateTotpBodyHtml=<p>Engangskode ble oppdatert for kontoen din p\\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_pl.properties",
    "content": "# encoding: UTF-8\nemailVerificationSubject=Zweryfikuj email\nemailVerificationBody=Ktoś utworzył już konto {2} z tym adresem e-mail. Jeśli to Ty, kliknij poniższy link, aby zweryfikować swój adres e-mail \\n\\n{0}\\n\\nLink ten wygaśnie w ciągu {3}.\\n\\nJeśli nie utworzyłeś tego konta, po prostu zignoruj tę wiadomość.\nemailVerificationBodyHtml=<p>Ktoś utworzył już konto {2} z tym adresem e-mail. Jeśli to Ty, kliknij <a href=\"{0}\">ten link</a> aby zweryfikować swój adres e-mail</p><p>Link ten wygaśnie w ciągu {3}</p><p>Jeśli nie utworzyłeś tego konta, po prostu zignoruj tę wiadomość.</p>\nemailTestSubject=[KEYCLOAK] - wiadomość testowa SMTP\nemailTestBody=To jest wiadomość testowa\nemailTestBodyHtml=<p>To jest wiadomość testowa</p>\nidentityProviderLinkSubject=Link {0}\nidentityProviderLinkBody=Ktoś chce połączyć Twoje konto \"{1}\" z kontem \"{0}\" użytkownika {2}. Jeśli to Ty, kliknij poniższy link by połączyć konta\\n\\n{3}\\n\\nTen link wygaśnie w ciągu {5}.\\n\\nJeśli nie chcesz połączyć konta to zignoruj tę wiadomość. Jeśli połączysz konta, będziesz mógł się zalogować na {1} przez {0}.\nidentityProviderLinkBodyHtml=<p>Ktoś chce połączyć Twoje konto <b>{1}</b> z kontem <b>{0}</b> użytkownika {2}. Jeśli to Ty, kliknij <a href=\"{3}\">ten link</a> by połączyć konta.</p><p>Ten link wygaśnie w ciągu {5}.</p><p>Jeśli nie chcesz połączyć konta to zignoruj tę wiadomość. Jeśli połączysz konta, będziesz mógł się zalogować na {1} przez {0}.</p>\npasswordResetSubject=Zresetuj hasło\npasswordResetBody=Ktoś właśnie poprosił o zmianę danych logowania Twojego konta {2}. Jeśli to Ty, kliknij poniższy link, aby je zresetować.\\n\\n{0}\\n\\nTen link i kod stracą ważność w ciągu {3}.\\n\\nJeśli nie chcesz zresetować swoich danych logowania, po prostu zignoruj tę wiadomość i nic się nie zmieni.\npasswordResetBodyHtml=<p>Ktoś właśnie poprosił o zmianę poświadczeń Twojego konta {2}. Jeśli to Ty, kliknij poniższy link, aby je zresetować.</p><p><a href=\"{0}\">Link do resetowania poświadczeń</a></p><p>Ten link wygaśnie w ciągu {3}.</p><p>Jeśli nie chcesz resetować swoich poświadczeń, po prostu zignoruj tę wiadomość i nic się nie zmieni.</p>\nexecuteActionsSubject=Zaktualizuj swoje konto\nexecuteActionsBody=Administrator właśnie zażądał aktualizacji konta {2} poprzez wykonanie następujących działań: {3}. Kliknij poniższy link, aby rozpocząć ten proces.\\n\\n{0}\\n\\nTen link wygaśnie w ciągu {4}.\\n\\nJeśli nie masz pewności, że administrator tego zażądał, po prostu zignoruj tę wiadomość i nic się nie zmieni.\nexecuteActionsBodyHtml=<p>Administrator właśnie zażądał aktualizacji konta {2} poprzez wykonanie następujących działań: {3}. Kliknij <a href=\"{0}\">ten link</a>, aby rozpocząć proces.</p><p>Link ten wygaśnie w ciągu {4}.</p><p>Jeśli nie masz pewności, że administrator tego zażądał, po prostu zignoruj tę wiadomość i nic się nie zmieni.</p>\neventLoginErrorSubject=Błąd logowania\neventLoginErrorBody=Nieudana próba logowania została wykryta na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.\neventLoginErrorBodyHtml=<p>Nieudana próba logowania została wykryta na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>\neventRemoveTotpSubject=Usuń hasło jednorazowe (OTP)\neventRemoveTotpBody=Hasło jednorazowe (OTP) zostało usunięte z Twojego konta w {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.\neventRemoveTotpBodyHtml=<p>Hasło jednorazowe (OTP) zostało usunięte z Twojego konta w {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>\neventUpdatePasswordSubject=Aktualizuj hasło\neventUpdatePasswordBody=Twoje hasło zostało zmienione {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.\neventUpdatePasswordBodyHtml=<p>Twoje hasło zostało zmienione {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>\neventUpdateTotpSubject=Aktualizuj hasło jednorazowe (OTP)\neventUpdateTotpBody=Hasło jednorazowe (OTP) zostało zaktualizowane na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.\neventUpdateTotpBodyHtml=<p>Hasło jednorazowe (OTP) zostało zaktualizowane na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>\n\nrequiredAction.CONFIGURE_TOTP=Konfiguracja hasła jednorazowego (OTP)\nrequiredAction.terms_and_conditions=Regulamin\nrequiredAction.UPDATE_PASSWORD=Aktualizacja hasła\nrequiredAction.UPDATE_PROFILE=Aktualizacja profilu\nrequiredAction.VERIFY_EMAIL=Weryfikacja adresu e-mail\n\n# units for link expiration timeout formatting\nlinkExpirationFormatter.timePeriodUnit.seconds=sekund\nlinkExpirationFormatter.timePeriodUnit.seconds.1=sekunda\nlinkExpirationFormatter.timePeriodUnit.seconds.2=sekundy\nlinkExpirationFormatter.timePeriodUnit.seconds.3=sekundy\nlinkExpirationFormatter.timePeriodUnit.seconds.4=sekundy\nlinkExpirationFormatter.timePeriodUnit.minutes=minut\nlinkExpirationFormatter.timePeriodUnit.minutes.1=minuta\nlinkExpirationFormatter.timePeriodUnit.minutes.2=minuty\nlinkExpirationFormatter.timePeriodUnit.minutes.3=minuty\nlinkExpirationFormatter.timePeriodUnit.minutes.4=minuty\nlinkExpirationFormatter.timePeriodUnit.hours=godzin\nlinkExpirationFormatter.timePeriodUnit.hours.1=godzina\nlinkExpirationFormatter.timePeriodUnit.hours.2=godziny\nlinkExpirationFormatter.timePeriodUnit.hours.3=godziny\nlinkExpirationFormatter.timePeriodUnit.hours.4=godziny\nlinkExpirationFormatter.timePeriodUnit.days=dni\nlinkExpirationFormatter.timePeriodUnit.days.1=dzień\n\nemailVerificationBodyCode=Potwierdź swój adres e-mail wprowadzając następujący kod.\\n\\n{0}\\n\\n.\nemailVerificationBodyCodeHtml=<p>Potwierdź swój adres e-mail, wprowadzając następujący kod.</p><p><b>{0}</b></p>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_pt_BR.properties",
    "content": "emailVerificationSubject=Verifica\\u00E7\\u00E3o de e-mail\nemailVerificationBody=Algu\\u00E9m criou uma conta {2} com este endere\\u00E7o de e-mail. Se foi voc\\u00EA, clique no link abaixo para verificar o seu endere\\u00E7o de email\\n\\n{0}\\n\\nEste link ir\\u00E1 expirar dentro de {3}.\\n\\nSe n\\u00E3o foi voc\\u00EA que criou esta conta, basta ignorar esta mensagem.\nemailVerificationBodyHtml=<p>Algu\\u00E9m criou uma conta {2} com este endere\\u00E7o de e-mail. Se foi voc\\u00EA, clique no link abaixo para verificar o seu endere\\u00E7o de email</p><p><a href=\"{0}\">{0}</a></p><p>Este link ir\\u00E1 expirar dentro de {3}.</p><p>Se n\\u00E3o foi voc\\u00EA que criou esta conta, basta ignorar esta mensagem.</p>\nemailTestSubject=[KEYCLOAK] - SMTP mensagem de teste\nemailTestBody=Esta \\u00E9 uma mensagem de teste\nemailTestBodyHtml=<p>Esta \\u00E9 uma mensagem de teste</p>\nidentityProviderLinkSubject=Vincular {0}\nidentityProviderLinkBody=Algu\\u00E9m quer vincular sua conta \"{1}\" com a conta \"{0}\" do usu\\u00E1rio {2} . Se foi voc\\u00EA, clique no link abaixo para vincular as contas.\\n\\n{3}\\n\\nEste link ir\\u00E1 expirar em {5}.\\n\\nSe voc\\u00EA n\\u00E3o quer vincular a conta, apenas ignore esta mensagem. Se voc\\u00EA vincular as contas, voc\\u00EA ser\\u00E1 capaz de logar em {1} atr\\u00E1v\\u00E9s de {0}.\nidentityProviderLinkBodyHtml=<p>Algu\\u00E9m quer vincular sua conta <b>{1}</b> com a conta <b>{0}</b> do usu\\u00E1rio {2} . Se foi voc\\u00EA, clique no link abaixo para vincular as contas.</p><p><a href=\"{3}\">{3}</a></p><p>Este link ir\\u00E1 expirar em {5}.</p><p>Se voc\\u00EA n\\u00E3o quer vincular a conta, apenas ignore esta mensagem. Se voc\\u00EA vincular as contas, voc\\u00EA ser\\u00E1 capaz de logar em {1} atr\\u00E1v\\u00E9s de {0}.</p>\npasswordResetSubject=Redefini\\u00E7\\u00E3o de senha\npasswordResetBody=Algu\\u00E9m solicitou uma altera\\u00E7\\u00E3o de senha da sua conta {2}. Se foi voc\\u00EA, clique no link abaixo para redefini-la.\\n\\n{0}\\n\\nEste link e c\\u00F3digo expiram em {3}.\\n\\nSe voc\\u00EA n\\u00E3o deseja redefinir sua senha, apenas ignore esta mensagem e nada ser\\u00E1 alterado.\npasswordResetBodyHtml=<p>Algu\\u00E9m solicitou uma altera\\u00E7\\u00E3o de senha da sua conta {2}. Se foi voc\\u00EA, clique no link abaixo para redefini-la.</p><p><a href=\"{0}\">Link para redefinir a senha</a></p><p>Este link ir\\u00E1 expirar em {3}.</p><p>Se voc\\u00EA n\\u00E3o deseja redefinir sua senha, apenas ignore esta mensagem e nada ser\\u00E1 alterado.</p>\nexecuteActionsSubject=Atualiza\\u00E7\\u00E3o de conta\nexecuteActionsBody=O administrador solicitou que voc\\u00EA atualize sua conta {2} executando a(s) seguinte(s) a\\u00E7\\u00E3o(\\u00F5es): {3}. Clique no link abaixo para iniciar o processo.\\n\\n{0}\\n\\nEste link ir\\u00E1 expirar em {4}.\\n\\nSe voc\\u00EA n\\u00E3o tem conhecimento de que o administrador solicitou isso, basta ignorar esta mensagem e nada ser\\u00E1 alterado.\nexecuteActionsBodyHtml=<p>O administrador solicitou que voc\\u00EA atualize sua conta {2} executando a(s) seguinte(s) a\\u00E7\\u00E3o(\\u00F5es): {3}. Clique no link abaixo para iniciar o processo.</p><p><a href=\"{0}\">Link to account update</a></p><p>Este link ir\\u00E1 expirar em {4}.</p><p>Se voc\\u00EA n\\u00E3o tem conhecimento de que o administrador solicitou isso, basta ignorar esta mensagem e nada ser\\u00E1 alterado.</p>\neventLoginErrorSubject=Erro de login\neventLoginErrorBody=Uma tentativa de login mal sucedida para a sua conta foi detectada em {0} de {1}. Se n\\u00E3o foi voc\\u00EA, por favor, entre em contato com um administrador.\neventLoginErrorBodyHtml=<p>Uma tentativa de login mal sucedida para a sua conta foi detectada em {0} de {1}. Se n\\u00E3o foi voc\\u00EA, por favor, entre em contato com um administrador.</p>\neventRemoveTotpSubject=Remover OTP\neventRemoveTotpBody=OTP foi removido da sua conta em {0} de {1}. Se n\\u00E3o foi voc\\u00EA, por favor, entre em contato com um administrador.\neventRemoveTotpBodyHtml=<p>OTP foi removido da sua conta em {0} de {1}. Se n\\u00E3o foi voc\\u00EA, por favor, entre em contato com um administrador.</p>\neventUpdatePasswordSubject=Atualiza\\u00E7\\u00E3o de senha\neventUpdatePasswordBody=Sua senha foi alterada em {0} de {1}. Se n\\u00E3o foi voc\\u00EA, por favor, entre em contato com um administrador.\neventUpdatePasswordBodyHtml=<p>Sua senha foi alterada em {0} de {1}. Se n\\u00E3o foi voc\\u00EA, por favor, entre em contato com um administrador.</p>\neventUpdateTotpSubject=Atualiza\\u00E7\\u00E3o OTP\neventUpdateTotpBody=OTP foi atualizado para a sua conta em {0} de {1}. Se n\\u00E3o foi voc\\u00EA, por favor, entre em contato com um administrador.\neventUpdateTotpBodyHtml=<p>OTP foi atualizado para a sua conta em {0} de {1}. Se n\\u00E3o foi voc\\u00EA, por favor, entre em contato com um administrador.</p>\n\nrequiredAction.CONFIGURE_TOTP=Configurar OTP\nrequiredAction.terms_and_conditions=Termos e Condi\\u00E7\\u00F5es\nrequiredAction.UPDATE_PASSWORD=Atualizar Senha\nrequiredAction.UPDATE_PROFILE=Atualizar Perfil\nrequiredAction.VERIFY_EMAIL=Verificar E-mail\n\n# units for link expiration timeout formatting\nlinkExpirationFormatter.timePeriodUnit.seconds=segundos\nlinkExpirationFormatter.timePeriodUnit.seconds.1=segundo\nlinkExpirationFormatter.timePeriodUnit.minutes=minutos\nlinkExpirationFormatter.timePeriodUnit.minutes.1=minuto\n#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this: \n#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty\n#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty\n#linkExpirationFormatter.timePeriodUnit.minutes.4=minuty\nlinkExpirationFormatter.timePeriodUnit.hours=horas\nlinkExpirationFormatter.timePeriodUnit.hours.1=hora\nlinkExpirationFormatter.timePeriodUnit.days=dias\nlinkExpirationFormatter.timePeriodUnit.days.1=dia\n\nemailVerificationBodyCode=Verifique seu endere\\u00E7o de e-mail digitando o seguinte c\\u00F3digo.\\n\\n{0}\\n\\n.\nemailVerificationBodyCodeHtml=<p>Verifique seu endere\\u00E7o de e-mail digitando o seguinte c\\u00F3digo.</p><p><b>{0}</b></p>\n\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_ru.properties",
    "content": "# encoding: utf-8\nemailVerificationSubject=Подтверждение E-mail\nemailVerificationBody=Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите на следующую ссылку для подтверждения вашего email\\n\\n{0}\\n\\nЭта ссылка устареет через {1} минут.\\n\\nЕсли Вы не создавали учетную запись, просто проигнорируйте это письмо.\nemailVerificationBodyHtml=<p>Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите по ссылке для подтверждения вашего E-mail</p><p><a href=\"{0}\">{0}</a></p><p>Эта ссылка устареет через {1} минут.</p><p>Если Вы не создавали учетную запись, просто проигнорируйте это письмо.</p>\nidentityProviderLinkSubject=Ссылка {0}\nidentityProviderLinkBody=Кто-то хочет связать вашу учетную запись \"{1}\" с \"{0}\" учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи\\n\\n{3}\\n\\nЭта ссылка устареет через {4} минут.\\n\\nЕсли это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в  {1} через {0}.\nidentityProviderLinkBodyHtml=<p>Кто-то хочет связать вашу учетную запись <b>{1}</b> с <b>{0}</b> учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи</p><p><a href=\"{3}\">{3}</a></p><p>Эта ссылка устареет через  {4} минут.</p><p>Если это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в  {1} через {0}.</p>\npasswordResetSubject=Сброс пароля\npasswordResetBody=Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.\\n\\n{0}\\n\\nЭта ссылка устареет через {1} минут.\\n\\nЕсли Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо.\npasswordResetBodyHtml=<p>Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.</p><p><a href=\"{0}\">{0}</a></p><p>Эта ссылка устареет через  {1} минут.</p><p>Если Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо и ничего не изменится.</p>\nexecuteActionsSubject=Обновление Вашей учетной записи\nexecuteActionsBody=Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.\\n\\n{0}\\n\\nЭта ссылка устареет через {1} минут.\\n\\nЕсли у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо.\nexecuteActionsBodyHtml=<p>Администратор просит Вас обновить данные Вашей учетной записи {2}.  Нажмите по следующей ссылке чтобы начать этот процесс.</p><p><a href=\"{0}\">{0}</a></p><p>Эта ссылка устареет через  {1} минут.</p><p>Если у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо.</p>\neventLoginErrorSubject=Ошибка входа\neventLoginErrorBody=Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.\neventLoginErrorBodyHtml=<p>Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>\neventRemoveTotpSubject=Удалить OTP\neventRemoveTotpBody=OTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.\neventRemoveTotpBodyHtml=<p>OTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>\neventUpdatePasswordSubject=Обновление пароля\neventUpdatePasswordBody=Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.\neventUpdatePasswordBodyHtml=<p>Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>\neventUpdateTotpSubject=Обновление OTP\neventUpdateTotpBody=OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.\neventUpdateTotpBodyHtml=<p>OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_sk.properties",
    "content": "# encoding: utf-8\nemailVerificationSubject=Overenie e-mailu\nemailVerificationBody=Niekto vytvoril účet {2} s touto e-mailovou adresou. Ak ste to vy, kliknite na nižšie uvedený odkaz a overte svoju e-mailovú adresu \\n\\n{0}\\n\\nTento odkaz uplynie do {1} minút.\\n\\nAk ste tento účet nevytvorili, ignorujte túto správu.\nemailVerificationBodyHtml=<p>Niekto vytvoril účet {2} s touto e-mailovou adresou. Ak ste to vy, kliknite na nižšie uvedený odkaz na overenie svojej e-mailovej adresy.</p><p><a href=\"{0}\"> Odkaz na overenie e-mailovej adresy </a></p><p>Platnosť odkazu vyprší za {1} minút.</p><p> Ak ste tento účet nevytvorili, ignorujte túto správu.</p>\nemailTestSubject=[KEYCLOAK] - Testovacia správa SMTP\nemailTestBody=Toto je skúšobná správa\nemailTestBodyHtml=<p>Toto je skúšobná správa</p>\nidentityProviderLinkSubject=Odkaz {0}\nidentityProviderLinkBody=Niekto chce prepojiť váš účet \"{1}\" s účtom {0}\"používateľa {2}. Ak ste to vy, kliknutím na odkaz nižšie prepojte účty. \\n\\n{3}\\n\\nTento odkaz uplynie do {4} minút.\\n\\nAk nechcete prepojiť účet, jednoducho ignorujte túto správu , Ak prepájate účty, budete sa môcť prihlásiť do {1} až {0}.\nidentityProviderLinkBodyHtml=<p>Niekto chce prepojiť váš účet <b>{1}</b> s účtom <b>{0}</b> používateľa {2}. Ak ste to vy, kliknutím na odkaz nižšie prepojte účty</p><p><a href=\"{3}\">Odkaz na potvrdenie prepojenia účtu </a></p><p> Platnosť tohto odkazu vyprší v rámci {4} minút.</p><p>Ak nechcete prepojiť účet, ignorujte túto správu. Ak prepojujete účty, budete sa môcť prihlásiť do {1} až {0}.</p>\npasswordResetSubject=Obnovenie hesla\npasswordResetBody=Niekto požiadal, aby ste zmenili svoje poverenia účtu {2}. Ak ste to vy, kliknite na odkaz uvedený nižšie, aby ste ich vynulovali.\\n\\n{0}\\n\\nTento odkaz a kód uplynie do {1} minút.\\n\\nAk nechcete obnoviť svoje poverenia , ignorujte túto správu a nič sa nezmení.\npasswordResetBodyHtml=<p>Niekto požiadal, aby ste zmenili svoje poverenia účtu {2}. Ak ste to vy, kliknutím na odkaz nižšie ich resetujte.</p><p><a href=\"{0}\">Odkaz na obnovenie poverení </a></p><p>Platnosť tohto odkazu vyprší v priebehu {1} minút.</p><p>Ak nechcete obnoviť svoje poverenia, ignorujte túto správu a nič sa nezmení.</p>\nexecuteActionsSubject=Aktualizujte svoj účet\nexecuteActionsBody=Váš administrátor práve požiadal o aktualizáciu vášho účtu {2} vykonaním nasledujúcich akcií: {3}. Kliknutím na odkaz uvedený nižšie spustíte tento proces.\\n\\n{0}\\n\\nTento odkaz vyprší za {1} minúty.\\n\\nAk si nie ste vedomý, že váš adminstrátor o toto požiadal, ignorujte túto správu a nič bude zmenené.\nexecuteActionsBodyHtml=<p>Váš správca práve požiadal o aktualizáciu vášho účtu {2} vykonaním nasledujúcich akcií: {3}. Kliknutím na odkaz uvedený nižšie spustíte tento proces.</p><p><a href=\"{0}\"> Odkaz na aktualizáciu účtu </a></p><p> Platnosť tohto odkazu uplynie do {1} minúty.</p><p> Ak si nie ste vedomí, že váš adminstrátor o toto požiadal, ignorujte túto správu a nič sa nezmení.</p>\neventLoginErrorSubject=Chyba prihlásenia\neventLoginErrorBody=Bol zistený neúspešný pokus o prihlásenie do vášho účtu v {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.\neventLoginErrorBodyHtml=<p>Bol zistený neúspešný pokus o prihlásenie vášho účtu na {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>\neventRemoveTotpSubject=Odstrániť TOTP\neventRemoveTotpBody=OTP bol odstránený z vášho účtu dňa {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.\neventRemoveTotpBodyHtml=<p>OTP bol odstránený z vášho účtu dňa {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>\neventUpdatePasswordSubject=Aktualizovať heslo\neventUpdatePasswordBody=Vaše heslo bolo zmenené na {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.\neventUpdatePasswordBodyHtml=<p>Vaše heslo bolo zmenené na {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>\neventUpdateTotpSubject=Aktualizácia TOTP\neventUpdateTotpBody=TOTP bol aktualizovaný pre váš účet na {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.\neventUpdateTotpBodyHtml=<p>TOTP bol aktualizovaný pre váš účet dňa {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>\n\nrequiredAction.CONFIGURE_TOTP=Konfigurácia OTP\nrequiredAction.terms_and_conditions=Zmluvné podmienky\nrequiredAction.UPDATE_PASSWORD=Aktualizovať heslo\nrequiredAction.UPDATE_PROFILE=Aktualizovať profil\nrequiredAction.VERIFY_EMAIL=Overiť e-mail\n\n# units for link expiration timeout formatting\nlinkExpirationFormatter.timePeriodUnit.seconds=sekundy\nlinkExpirationFormatter.timePeriodUnit.seconds.1=sekunda\nlinkExpirationFormatter.timePeriodUnit.minutes=minuty\nlinkExpirationFormatter.timePeriodUnit.minutes.1=minúta\n#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this:\n#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty\n#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty\n#linkExpirationFormatter.timePeriodUnit.minutes.4=minutu\nlinkExpirationFormatter.timePeriodUnit.hours=hodiny\nlinkExpirationFormatter.timePeriodUnit.hours.1=hodina\nlinkExpirationFormatter.timePeriodUnit.days=dni\nlinkExpirationFormatter.timePeriodUnit.days.1=deň \n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_sv.properties",
    "content": "# encoding: utf-8\nemailVerificationSubject=Verifiera e-post\nemailVerificationBody=Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress\\n\\n{0}\\n\\nDen här länken kommer att upphöra inom {1} minuter.\\n\\nOm det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet.\nemailVerificationBodyHtml=<p>Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress</p><p><a href=\"{0}\">{0}</a></p><p>Den här länken kommer att upphöra inom {1} minuter.</p><p>Om det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet.</p>\nidentityProviderLinkSubject=Länk {0}\nidentityProviderLinkBody=Någon vill länka ditt \"{1}\" konto med \"{0}\" kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona\\n\\n{3}\\n\\nDen här länken kommer att upphöra inom {4} minuter.\\n\\nOm du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}.\nidentityProviderLinkBodyHtml=<p>Någon vill länka ditt <b>{1}</b> konto med <b>{0}</b> kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona</p><p><a href=\"{3}\">{3}</a></p><p>Den här länken kommer att upphöra inom {4} minuter.</p><p>Om du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}.</p>\npasswordResetSubject=Återställ lösenord\npasswordResetBody=Någon har precis bett om att ändra användaruppgifter för ditt konto {2}. Om det var du, klicka då på länken nedan för att återställa dem.\\n\\n{0}\\n\\nDen här länken och koden kommer att upphöra inom {1} minuter.\\n\\nOm du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras.\npasswordResetBodyHtml=<p>Någon har precis bett om att ändra användaruppgifter för ditt konto {2}. Om det var du, klicka då på länken nedan för att återställa dem.</p><p><a href=\"{0}\">{0}</a></p><p>Den här länken och koden kommer att upphöra inom {1} minuter.</p><p>Om du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras.</p>\nexecuteActionsSubject=Uppdatera ditt konto\nexecuteActionsBody=Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.\\n\\n{0}\\n\\nDen här länken kommer att upphöra inom {1} minuter.\\n\\nOm du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras.\nexecuteActionsBodyHtml=<p>Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.</p><p><a href=\"{0}\">{0}</a></p><p>Den här länken kommer att upphöra inom {1} minuter.</p><p>Om du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras.</p>\neventLoginErrorSubject=Inloggningsfel\neventLoginErrorBody=Ett misslyckat inloggningsförsök har upptäckts på ditt konto på {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.\neventLoginErrorBodyHtml=<p>Ett misslyckat inloggningsförsök har upptäckts på ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>\neventRemoveTotpSubject=Ta bort OTP\neventRemoveTotpBody=OTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.\neventRemoveTotpBodyHtml=<p>OTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>\neventUpdatePasswordSubject=Uppdatera lösenord\neventUpdatePasswordBody=Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.\neventUpdatePasswordBodyHtml=<p>Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>\neventUpdateTotpSubject=Uppdatera OTP\neventUpdateTotpBody=OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.\neventUpdateTotpBodyHtml=<p>OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_tr.properties",
    "content": "emailVerificationSubject=E-postay\\u0131 do\\u011Frula\nemailVerificationBody=Birisi bu e-posta adresiyle bir {2} hesap olu\\u015Fturdu. Bu sizseniz, e-posta adresinizi do\\u011Frulamak i\\u00E7in a\\u015Fa\\u011F\\u0131daki ba\\u011Flant\\u0131ya t\\u0131klay\\u0131n\\n\\n{0}\\n\\nBu ba\\u011Flant\\u0131 {3} i\\u00E7inde sona erecek.\\n\\nBu hesab\\u0131 olu\\u015Fturmad\\u0131ysan\\u0131z, sadece bu iletiyi yoksay\\u0131n\\u0131z.\nemailVerificationBodyHtml=<p>Birisi bu e-posta adresiyle bir {2} hesap olu\\u015Fturdu. Bu sizseniz, e-posta adresinizi do\\u011Frulamak i\\u00E7in a\\u015Fa\\u011F\\u0131daki ba\\u011Flant\\u0131y\\u0131 t\\u0131klay\\u0131n.</p><p><a href=\"{0}\">E-posta adresi do\\u011Frulama adresi</a></p><p>Bu ba\\u011Flant\\u0131n\\u0131n s\\u00FCresi {3} i\\u00E7erisinde sona erecek.</p><p>Bu hesab\\u0131 siz olu\\u015Fturmad\\u0131ysan\\u0131z, bu mesaj\\u0131 g\\u00F6z ard\\u0131 edin.</p>\nemailTestSubject=[KEYCLOAK] - SMTP test mesaj\\u0131\nemailTestBody=Bu bir test mesaj\\u0131\nemailTestBodyHtml=<p>Bu bir test mesaj\\u0131</p>\nidentityProviderLinkSubject=Link {0}\nidentityProviderLinkBody=Birisi \"{1}\" hesab\\u0131n\\u0131z\\u0131 \"{0}\" kullan\\u0131c\\u0131 hesab\\u0131 {2} ile ba\\u011Flamak istiyor. Bu sizseniz, hesaplar\\u0131 ba\\u011Flamak i\\u00E7in a\\u015Fa\\u011F\\u0131daki ba\\u011Flant\\u0131y\\u0131 t\\u0131klay\\u0131n:\\n\\n{3}\\n\\nBu ba\\u011Flant\\u0131 {5} i\\u00E7inde sona erecek.\\n\\nHesab\\u0131n\\u0131z\\u0131 ba\\u011Flamak istemiyorsan\\u0131z bu mesaj\\u0131 g\\u00F6z ard\\u0131 edin. Hesaplar\\u0131 ba\\u011Flarsan\\u0131z, {1} ile {0} aras\\u0131nda oturum a\\u00E7abilirsiniz.\nidentityProviderLinkBodyHtml=<p>Birisi <b> {1} </ b> hesab\\u0131n\\u0131z\\u0131 {2} kullan\\u0131c\\u0131s\\u0131 <b> {0} </ b> hesab\\u0131na ba\\u011Flamak istiyor. Bu sizseniz, ba\\u011Flant\\u0131 vermek i\\u00E7in a\\u015Fa\\u011F\\u0131daki ba\\u011Flant\\u0131y\\u0131 t\\u0131klay\\u0131n</p><p><a href=\"{3}\">Hesap ba\\u011Flant\\u0131s\\u0131n\\u0131 onaylamak i\\u00E7in ba\\u011Flant\\u0131</a></p><p>Bu ba\\u011Flant\\u0131n\\u0131n s\\u00FCresi {5} i\\u00E7erisinde sona erecek.</p><p>Hesab\\u0131 ba\\u011Flamak istemiyorsan\\u0131z, bu mesaj\\u0131 g\\u00F6z ard\\u0131 edin. Hesaplar\\u0131 ba\\u011Flarsan\\u0131z, {1} ile {0} aras\\u0131nda oturum a\\u00E7abilirsiniz.</p>\npasswordResetSubject=\\u015Eifreyi s\\u0131f\\u0131rla\npasswordResetBody=Birisi, {2} hesab\\u0131n\\u0131z\\u0131n kimlik bilgilerini de\\u011Fi\\u015Ftirmeyi istedi.Bu sizseniz, s\\u0131f\\u0131rlamak i\\u00E7in a\\u015Fa\\u011F\\u0131daki ba\\u011Flant\\u0131y\\u0131 t\\u0131klay\\u0131n.\\n\\n{0}\\n\\nBu ba\\u011Flant\\u0131 ve kod {3} i\\u00E7inde sona erecek.\\n\\nFakat bilgilerinizi s\\u0131f\\u0131rlamak istemiyorsan\\u0131z, Sadece bu mesaj\\u0131 g\\u00F6rmezden gelin ve hi\\u00E7bir \\u015Fey de\\u011Fi\\u015Fmeyecek.\npasswordResetBodyHtml=<p>Birisi, {2} hesab\\u0131n\\u0131z\\u0131n kimlik bilgilerini de\\u011Fi\\u015Ftirmeyi istedi. Sizseniz, s\\u0131f\\u0131rlamak i\\u00E7in a\\u015Fa\\u011F\\u0131daki linke t\\u0131klay\\u0131n\\u0131z.</p><p><a href=\"{0}\">Kimlik bilgilerini s\\u0131f\\u0131rlamak i\\u00E7in ba\\u011Flant\\u0131</a></p><p>Bu ba\\u011Flant\\u0131n\\u0131n s\\u00FCresi {3} i\\u00E7erisinde sona erecek.</p><p>Kimlik bilgilerinizi s\\u0131f\\u0131rlamak istemiyorsan\\u0131z, bu mesaj\\u0131 g\\u00F6z ard\\u0131 edin.</p>\nexecuteActionsSubject=Hesab\\u0131n\\u0131z\\u0131 G\\u00FCncelleyin\nexecuteActionsBody=Y\\u00F6neticiniz a\\u015Fa\\u011F\\u0131daki i\\u015Flemleri ger\\u00E7ekle\\u015Ftirerek {2} hesab\\u0131n\\u0131z\\u0131 g\\u00FCncelledi: {3}. Bu i\\u015Flemi ba\\u015Flatmak i\\u00E7in a\\u015Fa\\u011F\\u0131daki linke t\\u0131klay\\u0131n.\\n\\n{0}\\n\\nBu ba\\u011Flant\\u0131n\\u0131n s\\u00FCresi {4} i\\u00E7erisinde sona erecek.\\n\\nY\\u00F6neticinizin bunu istedi\\u011Finden habersizseniz, bu mesaj\\u0131 g\\u00F6z ard\\u0131 edin ve hi\\u00E7bir \\u015Fey de\\u011Fi\\u015Fmez.\nexecuteActionsBodyHtml=<p>Y\\u00F6neticiniz a\\u015Fa\\u011F\\u0131daki i\\u015Flemleri ger\\u00E7ekle\\u015Ftirerek {2} hesab\\u0131n\\u0131z\\u0131 g\\u00FCncelledi: {3}. Bu i\\u015Flemi ba\\u015Flatmak i\\u00E7in a\\u015Fa\\u011F\\u0131daki linke t\\u0131klay\\u0131n.</p><p><a href=\"{0}\">Hesap g\\u00FCncelleme ba\\u011Flant\\u0131s\\u0131</a></p><p>Bu ba\\u011Flant\\u0131n\\u0131n s\\u00FCresi {4} i\\u00E7erisinde sona erecek.</p><p>Y\\u00F6neticinizin bunu istedi\\u011Finden habersizseniz, bu mesaj\\u0131 g\\u00F6z ard\\u0131 edin ve hi\\u00E7bir \\u015Fey de\\u011Fi\\u015Fmez.</p>\neventLoginErrorSubject=Giri\\u015F hatas\\u0131\neventLoginErrorBody={1} ''den {0} tarihinde ba\\u015Far\\u0131s\\u0131z bir giri\\u015F denemesi yap\\u0131ld\\u0131. Bu siz de\\u011Filseniz, l\\u00FCtfen y\\u00F6neticiyle ileti\\u015Fime ge\\u00E7in.\neventLoginErrorBodyHtml=<p>{1} ''den {0} tarihinde ba\\u015Far\\u0131s\\u0131z bir giri\\u015F denemesi yap\\u0131ld\\u0131. Bu siz de\\u011Filseniz, l\\u00FCtfen y\\u00F6neticiyle ileti\\u015Fime ge\\u00E7in.</p>\neventRemoveTotpSubject=OTP''yi kald\\u0131r\neventRemoveTotpBody=OTP, {0} tarihinden {1} tarihinde hesab\\u0131n\\u0131zdan kald\\u0131r\\u0131ld\\u0131. Bu siz de\\u011Filseniz, l\\u00FCtfen y\\u00F6neticiyle ileti\\u015Fime ge\\u00E7in.\neventRemoveTotpBodyHtml=<p>OTP, {0} tarihinden {1} tarihinde hesab\\u0131n\\u0131zdan kald\\u0131r\\u0131ld\\u0131. Bu siz de\\u011Filseniz, l\\u00FCtfen y\\u00F6neticiyle ileti\\u015Fime ge\\u00E7in.</p>\neventUpdatePasswordSubject=\\u015Eifreyi g\\u00FCncelle\neventUpdatePasswordBody=\\u015Eifreniz {0} tarihinde {0} tarihinde de\\u011Fi\\u015Ftirildi. Bu siz de\\u011Filseniz, l\\u00FCtfen y\\u00F6neticiyle ileti\\u015Fime ge\\u00E7in.\neventUpdatePasswordBodyHtml=<p>\\u015Eifreniz {0} tarihinde {0} tarihinde de\\u011Fi\\u015Ftirildi. Bu siz de\\u011Filseniz, l\\u00FCtfen y\\u00F6neticiyle ileti\\u015Fime ge\\u00E7in.</p>\neventUpdateTotpSubject=OTP''yi G\\u00FCncelle\neventUpdateTotpBody=OTP, {0} tarihinden {1} tarihinde hesab\\u0131n\\u0131z i\\u00E7in g\\u00FCncellendi. Bu siz de\\u011Filseniz, l\\u00FCtfen y\\u00F6neticiyle ileti\\u015Fime ge\\u00E7in.\neventUpdateTotpBodyHtml=<p>OTP, {0} tarihinden {1} tarihinde hesab\\u0131n\\u0131z i\\u00E7in g\\u00FCncellendi. Bu siz de\\u011Filseniz, l\\u00FCtfen y\\u00F6neticiyle ileti\\u015Fime ge\\u00E7in.</p>\n\nrequiredAction.CONFIGURE_TOTP=OTP''yi yap\\u0131land\\u0131r\nrequiredAction.terms_and_conditions=\\u015Eartlar ve Ko\\u015Fullar\nrequiredAction.UPDATE_PASSWORD=\\u015Eifre G\\u00FCncelleme\nrequiredAction.UPDATE_PROFILE=Profilleri g\\u00FCncelle\nrequiredAction.VERIFY_EMAIL=E-mail do\\u011Frula\n\n# units for link expiration timeout formatting\nlinkExpirationFormatter.timePeriodUnit.seconds=saniye\nlinkExpirationFormatter.timePeriodUnit.seconds.1=saniye\nlinkExpirationFormatter.timePeriodUnit.minutes=dakika\nlinkExpirationFormatter.timePeriodUnit.minutes.1=dakika\n#for language which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like this:\n#linkExpirationFormatter.timePeriodUnit.minutes.2=minuty\n#linkExpirationFormatter.timePeriodUnit.minutes.3=minuty\n#linkExpirationFormatter.timePeriodUnit.minutes.4=minuty\nlinkExpirationFormatter.timePeriodUnit.hours=saat\nlinkExpirationFormatter.timePeriodUnit.hours.1=saat\nlinkExpirationFormatter.timePeriodUnit.days=g\\u00FCn\nlinkExpirationFormatter.timePeriodUnit.days.1=g\\u00FCn\n\nemailVerificationBodyCode=L\\u00FCtfen a\\u015Fa\\u011F\\u0131daki kodu girerek e-posta adresinizi do\\u011Frulay\\u0131n.\\n\\n{0}\\n\\n.\nemailVerificationBodyCodeHtml=<p>L\\u00FCtfen a\\u015Fa\\u011F\\u0131daki kodu girerek e-posta adresinizi do\\u011Frulay\\u0131n.</p><p><b>{0}</b></p>\n\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/messages/messages_zh_CN.properties",
    "content": "# encoding: utf-8\nemailVerificationSubject=验证电子邮件\nemailVerificationBody=用户使用当前电子邮件注册 {2} 账户。如是本人操作，请点击以下链接完成邮箱验证\\n\\n{0}\\n\\n这个链接会在 {1} 分钟后过期.\\n\\n如果您没有注册用户，请忽略这条消息。\nemailVerificationBodyHtml=<p>用户使用当前电子邮件注册 {2} 账户。如是本人操作，请点击以下链接完成邮箱验证</p><p><a href=\"{0}\">{0}</a></p><p>这个链接会在 {1} 分钟后过期.</p><p>如果您没有注册用户，请忽略这条消息。</p>\nidentityProviderLinkSubject=链接 {0}\nidentityProviderLinkBody=有用户想要将账户 \"{1}\" 与用户{2}的账户\"{0}\" 做链接 . 如果是本人操作，请点击以下链接完成链接请求\\n\\n{3}\\n\\n这个链接会在 {4} 分钟后过期.\\n\\n如非本人操作，请忽略这条消息。如果您链接账户，您将可以通过{0}登录账户 {1}.\nidentityProviderLinkBodyHtml=<p>有用户想要将账户 <b>{1}</b> 与用户{2} 的账户<b>{0}</b>  做链接 . 如果是本人操作，请点击以下链接完成链接请求</p><p><a href=\"{3}\">{3}</a></p><p>这个链接会在 {4} 分钟后过期。</p><p>如非本人操作，请忽略这条消息。如果您链接账户，您将可以通过{0}登录账户 {1}.</p>\npasswordResetSubject=重置密码\npasswordResetBody=有用户要求修改账户 {2} 的密码.如是本人操作，请点击下面链接进行重置.\\n\\n{0}\\n\\n这个链接会在 {1} 分钟后过期.\\n\\n如果您不想重置您的密码，请忽略这条消息，密码不会改变。\npasswordResetBodyHtml=<p>有用户要求修改账户 {2} 的密码如是本人操作，请点击下面链接进行重置.</p><p><a href=\"{0}\">{0}</a></p><p>这个链接会在 {1} 分钟后过期</p><p>如果您不想重置您的密码，请忽略这条消息，密码不会改变。</p>\nexecuteActionsSubject=更新您的账户\nexecuteActionsBody=您的管理员要求您更新账户 {2}. 点击以下链接开始更新\\n\\n{0}\\n\\n这个链接会在 {1} 分钟后失效.\\n\\n如果您不知道管理员要求更新账户信息，请忽略这条消息。账户信息不会修改。\nexecuteActionsBodyHtml=<p>您的管理员要求您更新账户{2}.  点击以下链接开始更新.</p><p><a href=\"{0}\">{0}</a></p><p>这个链接会在 {1} 分钟后失效.</p><p>如果您不知道管理员要求更新账户信息，请忽略这条消息。账户信息不会修改。</p>\neventLoginErrorSubject=登录错误\neventLoginErrorBody=在{0} 由 {1}使用您的账户登录失败. 如果这不是您本人操作，请联系管理员.\neventLoginErrorBodyHtml=<p>在{0} 由 {1}使用您的账户登录失败. 如果这不是您本人操作，请联系管理员.</p>\neventRemoveTotpSubject=删除 OTP\neventRemoveTotpBody=OTP在 {0} 由{1} 从您的账户中删除.如果这不是您本人操作，请联系管理员\neventRemoveTotpBodyHtml=<p>OTP在 {0} 由{1} 从您的账户中删除.如果这不是您本人操作，请联系管理员。</p>\neventUpdatePasswordSubject=更新密码\neventUpdatePasswordBody=您的密码在{0} 由 {1}更改. 如非本人操作，请联系管理员\neventUpdatePasswordBodyHtml=<p>您的密码在{0} 由 {1}更改. 如非本人操作，请联系管理员</p>\neventUpdateTotpSubject=更新 OTP\neventUpdateTotpBody=您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作，请联系管理员。\neventUpdateTotpBodyHtml=<p>您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作，请联系管理员。</p>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/text/email-test.ftl",
    "content": "<#ftl output_format=\"plainText\">\n${msg(\"emailTestBody\", realmName)}\n\n${testNewVariable}\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/text/email-verification-with-code.ftl",
    "content": "<#ftl output_format=\"plainText\">\n${msg(\"emailVerificationBodyCode\",code)}"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/text/email-verification.ftl",
    "content": "<#ftl output_format=\"plainText\">\n${msg(\"emailVerificationBody\",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration))}"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/text/event-login_error.ftl",
    "content": "<#ftl output_format=\"plainText\">\n${msg(\"eventLoginErrorBody\",event.date,event.ipAddress)}"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/text/event-remove_totp.ftl",
    "content": "<#ftl output_format=\"plainText\">\n${msg(\"eventRemoveTotpBody\",event.date, event.ipAddress)}"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/text/event-update_password.ftl",
    "content": "<#ftl output_format=\"plainText\">\n${msg(\"eventUpdatePasswordBody\",event.date, event.ipAddress)}"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/text/event-update_totp.ftl",
    "content": "<#ftl output_format=\"plainText\">\n${msg(\"eventUpdateTotpBody\",event.date, event.ipAddress)}"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/text/executeActions.ftl",
    "content": "<#ftl output_format=\"plainText\">\n<#assign requiredActionsText><#if requiredActions??><#list requiredActions><#items as reqActionItem>${msg(\"requiredAction.${reqActionItem}\")}<#sep>, </#items></#list><#else></#if></#assign>\n\n${msg(\"executeActionsBody\",link, linkExpiration, realmName, requiredActionsText, linkExpirationFormatter(linkExpiration))}"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/text/identity-provider-link.ftl",
    "content": "<#ftl output_format=\"plainText\">\n${msg(\"identityProviderLinkBody\", identityProviderAlias, realmName, identityProviderContext.username, link, linkExpiration, linkExpirationFormatter(linkExpiration))}"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/text/password-reset.ftl",
    "content": "<#ftl output_format=\"plainText\">\n${msg(\"passwordResetBody\",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration))}"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/email/theme.properties",
    "content": "locales=ca,cs,de,en,es,fr,it,ja,lt,nl,no,pl,pt-BR,ru,sk,sv,tr,zh-CN\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/cli_splash.ftl",
    "content": " _  __               _             _\n| |/ /___ _   _  ___| | ___   __ _| | __\n| ' // _ \\ | | |/ __| |/ _ \\ / _` | |/ /\n| . \\  __/ |_| | (__| | (_) | (_| |   <\n|_|\\_\\___|\\__, |\\___|_|\\___/ \\__,_|_|\\_\\\n          |___/\n\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/code.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout; section>\n    <#if section = \"header\">\n        <#if code.success>\n            ${msg(\"codeSuccessTitle\")}\n        <#else>\n            ${msg(\"codeErrorTitle\", code.error)}\n        </#if>\n    <#elseif section = \"form\">\n        <div id=\"kc-code\">\n            <#if code.success>\n                <p>${msg(\"copyCodeInstruction\")}</p>\n                <input id=\"code\" class=\"${properties.kcTextareaClass!}\" value=\"${code.code}\"/>\n            <#else>\n                <p id=\"error\">${code.error}</p>\n            </#if>\n        </div>\n    </#if>\n</@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/error.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout displayMessage=false; section>\n    <#if section = \"header\">\n        ${msg(\"errorTitle\")}\n    <#elseif section = \"form\">\n        <div id=\"kc-error-message\">\n            <p class=\"instruction\">${message.summary?no_esc}</p>\n            <#if client?? && client.baseUrl?has_content>\n                <p><a id=\"backToApplication\" href=\"${client.baseUrl}\">${kcSanitize(msg(\"backToApplication\"))?no_esc}</a></p>\n            </#if>\n        </div>\n    </#if>\n</@layout.registrationLayout>"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/info.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout displayMessage=false; section>\n    <#if section = \"header\">\n        <#if messageHeader??>\n        ${messageHeader}\n        <#else>\n        ${message.summary}\n        </#if>\n    <#elseif section = \"form\">\n    <div id=\"kc-info-message\">\n        <p class=\"instruction\">${message.summary}<#if requiredActions??><#list requiredActions>: <b><#items as reqActionItem>${msg(\"requiredAction.${reqActionItem}\")}<#sep>, </#items></b></#list><#else></#if></p>\n        <#if skipLink??>\n        <#else>\n            <#if pageRedirectUri?has_content>\n                <p><a href=\"${pageRedirectUri}\">${kcSanitize(msg(\"backToApplication\"))?no_esc}</a></p>\n            <#elseif actionUri?has_content>\n                <p><a href=\"${actionUri}\">${kcSanitize(msg(\"proceedWithAction\"))?no_esc}</a></p>\n            <#elseif (client.baseUrl)?has_content>\n                <p><a href=\"${client.baseUrl}\">${kcSanitize(msg(\"backToApplication\"))?no_esc}</a></p>\n            </#if>\n        </#if>\n    </div>\n    </#if>\n</@layout.registrationLayout>"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login-config-totp-text.ftl",
    "content": "<#ftl output_format=\"plainText\">\n${msg(\"loginTotpIntro\")}\n\n${msg(\"loginTotpStep1\")}\n\n<#list totp.policy.supportedApplications as app>\n* ${app}\n</#list>\n\n${msg(\"loginTotpManualStep2\")}\n\n    ${totp.totpSecretEncoded}\n\n\n${msg(\"loginTotpManualStep3\")}\n\n- ${msg(\"loginTotpType\")}: ${msg(\"loginTotp.\" + totp.policy.type)}\n- ${msg(\"loginTotpAlgorithm\")}: ${totp.policy.getAlgorithmKey()}\n- ${msg(\"loginTotpDigits\")}: ${totp.policy.digits}\n<#if totp.policy.type = \"totp\">\n- ${msg(\"loginTotpInterval\")}: ${totp.policy.period}\n\n<#elseif totp.policy.type = \"hotp\">\n- ${msg(\"loginTotpCounter\")}: ${totp.policy.initialCounter}\n\n</#if>\n\nEnter in your one time password so we can verify you have installed it correctly.\n\n\n\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login-config-totp.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout displayInfo=true displayRequiredFields=true; section>\n\n    <#if section = \"header\">\n        ${msg(\"loginTotpTitle\")}\n\n    <#elseif section = \"form\">\n\n    <ol id=\"kc-totp-settings\">\n        <li>\n            <p>${msg(\"loginTotpStep1\")}</p>\n\n            <ul id=\"kc-totp-supported-apps\">\n                <#list totp.policy.supportedApplications as app>\n                <li>${app}</li>\n                </#list>\n            </ul>\n        </li>\n\n        <#if mode?? && mode = \"manual\">\n            <li>\n                <p>${msg(\"loginTotpManualStep2\")}</p>\n                <p><span id=\"kc-totp-secret-key\">${totp.totpSecretEncoded}</span></p>\n                <p><a href=\"${totp.qrUrl}\" id=\"mode-barcode\">${msg(\"loginTotpScanBarcode\")}</a></p>\n            </li>\n            <li>\n                <p>${msg(\"loginTotpManualStep3\")}</p>\n                <p>\n                    <ul>\n                        <li id=\"kc-totp-type\">${msg(\"loginTotpType\")}: ${msg(\"loginTotp.\" + totp.policy.type)}</li>\n                        <li id=\"kc-totp-algorithm\">${msg(\"loginTotpAlgorithm\")}: ${totp.policy.getAlgorithmKey()}</li>\n                        <li id=\"kc-totp-digits\">${msg(\"loginTotpDigits\")}: ${totp.policy.digits}</li>\n                        <#if totp.policy.type = \"totp\">\n                            <li id=\"kc-totp-period\">${msg(\"loginTotpInterval\")}: ${totp.policy.period}</li>\n                        <#elseif totp.policy.type = \"hotp\">\n                            <li id=\"kc-totp-counter\">${msg(\"loginTotpCounter\")}: ${totp.policy.initialCounter}</li>\n                        </#if>\n                    </ul>\n                </p>\n            </li>\n        <#else>\n            <li>\n                <p>${msg(\"loginTotpStep2\")}</p>\n                <img id=\"kc-totp-secret-qr-code\" src=\"data:image/png;base64, ${totp.totpSecretQrCode}\" alt=\"Figure: Barcode\"><br/>\n                <p><a href=\"${totp.manualUrl}\" id=\"mode-manual\">${msg(\"loginTotpUnableToScan\")}</a></p>\n            </li>\n        </#if>\n        <li>\n            <p>${msg(\"loginTotpStep3\")}</p>\n            <p>${msg(\"loginTotpStep3DeviceName\")}</p>\n        </li>\n    </ol>\n\n    <form action=\"${url.loginAction}\" class=\"${properties.kcFormClass!}\" id=\"kc-totp-settings-form\" method=\"post\">\n        <div class=\"${properties.kcFormGroupClass!}\">\n            <div class=\"${properties.kcInputWrapperClass!}\">\n                <label for=\"totp\" class=\"control-label\">${msg(\"authenticatorCode\")}</label> <span class=\"required\">*</span>\n            </div>\n            <div class=\"${properties.kcInputWrapperClass!}\">\n                <input type=\"text\" id=\"totp\" name=\"totp\" autocomplete=\"off\" class=\"${properties.kcInputClass!}\" />\n            </div>\n            <input type=\"hidden\" id=\"totpSecret\" name=\"totpSecret\" value=\"${totp.totpSecret}\" />\n            <#if mode??><input type=\"hidden\" id=\"mode\" name=\"mode\" value=\"${mode}\"/></#if>\n        </div>\n\n        <div class=\"${properties.kcFormGroupClass!}\" ${messagesPerField.printIfExists('userLabel',properties.kcFormGroupErrorClass!)}\">\n            <div class=\"${properties.kcInputWrapperClass!}\">\n                <label for=\"userLabel\" class=\"control-label\">${msg(\"loginTotpDeviceName\")}</label> <#if totp.otpCredentials?size gte 1><span class=\"required\">*</span></#if>\n            </div>\n\n            <div class=\"${properties.kcInputWrapperClass!}\">\n                <input type=\"text\" class=\"form-control\" id=\"userLabel\" name=\"userLabel\" autocomplete=\"off\">\n            </div>\n        </div>\n\n        <#if isAppInitiatedAction??>\n            <input type=\"submit\"\n                   class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}\"\n                   id=\"saveTOTPBtn\" value=\"${msg(\"doSubmit\")}\"\n            />\n            <button type=\"submit\"\n                    class=\"${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!} ${properties.kcButtonLargeClass!}\"\n                    id=\"cancelTOTPBtn\" name=\"cancel-aia\" value=\"true\" />${msg(\"doCancel\")}\n            </button>\n        <#else>\n            <input type=\"submit\"\n                   class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}\"\n                   id=\"saveTOTPBtn\" value=\"${msg(\"doSubmit\")}\"\n            />\n        </#if>\n    </form>\n    </#if>\n</@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login-idp-link-confirm.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout; section>\n    <#if section = \"header\">\n        ${msg(\"confirmLinkIdpTitle\")}\n    <#elseif section = \"form\">\n        <form id=\"kc-register-form\" action=\"${url.loginAction}\" method=\"post\">\n            <div class=\"${properties.kcFormGroupClass!}\">\n                <button type=\"submit\" class=\"${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}\" name=\"submitAction\" id=\"updateProfile\" value=\"updateProfile\">${msg(\"confirmLinkIdpReviewProfile\")}</button>\n                <button type=\"submit\" class=\"${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}\" name=\"submitAction\" id=\"linkAccount\" value=\"linkAccount\">${msg(\"confirmLinkIdpContinue\", idpAlias)}</button>\n            </div>\n        </form>\n    </#if>\n</@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login-idp-link-email.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout; section>\n    <#if section = \"header\">\n        ${msg(\"emailLinkIdpTitle\", idpAlias)}\n    <#elseif section = \"form\">\n        <p id=\"instruction1\" class=\"instruction\">\n            ${msg(\"emailLinkIdp1\", idpAlias, brokerContext.username, realm.displayName)}\n        </p>\n        <p id=\"instruction2\" class=\"instruction\">\n            ${msg(\"emailLinkIdp2\")} <a href=\"${url.loginAction}\">${msg(\"doClickHere\")}</a> ${msg(\"emailLinkIdp3\")}\n        </p>\n        <p id=\"instruction3\" class=\"instruction\">\n            ${msg(\"emailLinkIdp4\")} <a href=\"${url.loginAction}\">${msg(\"doClickHere\")}</a> ${msg(\"emailLinkIdp5\")}\n        </p>\n    </#if>\n</@layout.registrationLayout>"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login-oauth-grant.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout bodyClass=\"oauth\"; section>\n    <#if section = \"header\">\n        <#if client.name?has_content>\n            ${msg(\"oauthGrantTitle\",advancedMsg(client.name))}\n        <#else>\n            ${msg(\"oauthGrantTitle\",client.clientId)}\n        </#if>\n    <#elseif section = \"form\">\n        <div id=\"kc-oauth\" class=\"content-area\">\n            <h3>${msg(\"oauthGrantRequest\")}</h3>\n            <ul>\n                <#if oauth.clientScopesRequested??>\n                    <#list oauth.clientScopesRequested as clientScope>\n                        <li>\n                            <span>${advancedMsg(clientScope.consentScreenText)}</span>\n                        </li>\n                    </#list>\n                </#if>\n            </ul>\n\n            <form class=\"form-actions\" action=\"${url.oauthAction}\" method=\"POST\">\n                <input type=\"hidden\" name=\"code\" value=\"${oauth.code}\">\n                <div class=\"${properties.kcFormGroupClass!}\">\n                    <div id=\"kc-form-options\">\n                        <div class=\"${properties.kcFormOptionsWrapperClass!}\">\n                        </div>\n                    </div>\n\n                    <div id=\"kc-form-buttons\">\n                        <div class=\"${properties.kcFormButtonsWrapperClass!}\">\n                            <input class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}\" name=\"accept\" id=\"kc-login\" type=\"submit\" value=\"${msg(\"doYes\")}\"/>\n                            <input class=\"${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}\" name=\"cancel\" id=\"kc-cancel\" type=\"submit\" value=\"${msg(\"doNo\")}\"/>\n                        </div>\n                    </div>\n                </div>\n            </form>\n            <div class=\"clearfix\"></div>\n        </div>\n    </#if>\n</@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login-otp.ftl",
    "content": "<#import \"template.ftl\" as layout>\n    <@layout.registrationLayout; section>\n        <#if section=\"header\">\n            ${msg(\"doLogIn\")}\n            <#elseif section=\"form\">\n                <form id=\"kc-otp-login-form\" class=\"${properties.kcFormClass!}\" action=\"${url.loginAction}\"\n                    method=\"post\">\n                    <#if otpLogin.userOtpCredentials?size gt 1>\n                        <div class=\"${properties.kcFormGroupClass!}\">\n                            <div class=\"${properties.kcInputWrapperClass!}\">\n                                <#list otpLogin.userOtpCredentials as otpCredential>\n                                    <div class=\"${properties.kcSelectOTPListClass!}\">\n                                    <input type=\"hidden\" value=\"${otpCredential.id}\">\n                                        <div class=\"${properties.kcSelectOTPListItemClass!}\">\n                                            <span class=\"${properties.kcAuthenticatorOtpCircleClass!}\"></span>\n                                            <h2 class=\"${properties.kcSelectOTPItemHeadingClass!}\">\n                                                ${otpCredential.userLabel}\n                                            </h2>\n                                        </div>\n                                    </div>\n                                </#list>\n                            </div>\n                        </div>\n                    </#if>\n\n                    <div class=\"${properties.kcFormGroupClass!}\">\n                        <div class=\"${properties.kcLabelWrapperClass!}\">\n                            <label for=\"otp\" class=\"${properties.kcLabelClass!}\">${msg(\"loginOtpOneTime\")}</label>\n                        </div>\n\n                        <div class=\"${properties.kcInputWrapperClass!}\">\n                            <input id=\"otp\" name=\"otp\" autocomplete=\"off\" type=\"text\" class=\"${properties.kcInputClass!}\"\n                            autofocus/>\n                        </div>\n                    </div>\n\n                    <div class=\"${properties.kcFormGroupClass!}\">\n                        <div id=\"kc-form-options\" class=\"${properties.kcFormOptionsClass!}\">\n                            <div class=\"${properties.kcFormOptionsWrapperClass!}\">\n                            </div>\n                        </div>\n\n                        <div id=\"kc-form-buttons\" class=\"${properties.kcFormButtonsClass!}\">\n                            <input\n                                class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}\"\n                                name=\"login\" id=\"kc-login\" type=\"submit\" value=\"${msg(\"doLogIn\")}\" />\n                        </div>\n                    </div>\n                </form>\n            <script type=\"text/javascript\" src=\"${url.resourcesCommonPath}/node_modules/jquery/dist/jquery.min.js\"></script>\n            <script type=\"text/javascript\">\n            $(document).ready(function() {\n                // Card Single Select\n                $('.card-pf-view-single-select').click(function() {\n                  if ($(this).hasClass('active'))\n                  { $(this).removeClass('active'); $(this).children().removeAttr('name'); }\n                  else\n                  { $('.card-pf-view-single-select').removeClass('active');\n                  $('.card-pf-view-single-select').children().removeAttr('name');\n                  $(this).addClass('active'); $(this).children().attr('name', 'selectedCredentialId'); }\n                });\n\n                var defaultCred = $('.card-pf-view-single-select')[0];\n                if (defaultCred) {\n                    defaultCred.click();\n                }\n              });\n            </script>\n        </#if>\n        </@layout.registrationLayout>"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login-page-expired.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout; section>\n    <#if section = \"header\">\n        ${msg(\"pageExpiredTitle\")}\n    <#elseif section = \"form\">\n        <p id=\"instruction1\" class=\"instruction\">\n            ${msg(\"pageExpiredMsg1\")} <a id=\"loginRestartLink\" href=\"${url.loginRestartFlowUrl}\">${msg(\"doClickHere\")}</a> .<br/>\n            ${msg(\"pageExpiredMsg2\")} <a id=\"loginContinueLink\" href=\"${url.loginAction}\">${msg(\"doClickHere\")}</a> .\n        </p>\n    </#if>\n</@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login-password.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout displayInfo=false displayWide=false; section>\n    <#if section = \"header\">\n        ${msg(\"doLogIn\")}\n    <#elseif section = \"form\">\n    <div id=\"kc-form\">\n      <div id=\"kc-form-wrapper\">\n            <form id=\"kc-form-login\" onsubmit=\"login.disabled = true; return true;\" action=\"${url.loginAction}\" method=\"post\">\n\n                <div class=\"${properties.kcFormGroupClass!}\">\n                    <label for=\"password\" class=\"${properties.kcLabelClass!}\">${msg(\"password\")}</label>\n                    <input tabindex=\"2\" id=\"password\" class=\"${properties.kcInputClass!}\" name=\"password\" type=\"password\" autocomplete=\"off\" />\n                </div>\n\n                <div class=\"${properties.kcFormGroupClass!} ${properties.kcFormSettingClass!}\">\n                    <div id=\"kc-form-options\">\n                        </div>\n                        <div class=\"${properties.kcFormOptionsWrapperClass!}\">\n                            <#if realm.resetPasswordAllowed>\n                                <span><a tabindex=\"5\" href=\"${url.loginResetCredentialsUrl}\">${msg(\"doForgotPassword\")}</a></span>\n                            </#if>\n                        </div>\n                  </div>\n\n                  <div id=\"kc-form-buttons\" class=\"${properties.kcFormGroupClass!}\">\n                    <input tabindex=\"4\" class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}\" name=\"login\" id=\"kc-login\" type=\"submit\" value=\"${msg(\"doLogIn\")}\"/>\n                  </div>\n            </form>\n        </div>\n      </div>\n    </#if>\n\n</@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login-reset-password.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout displayInfo=true; section>\n    <#if section = \"header\">\n        ${msg(\"emailForgotTitle\")}\n    <#elseif section = \"form\">\n        <form id=\"kc-reset-password-form\" class=\"${properties.kcFormClass!}\" action=\"${url.loginAction}\" method=\"post\">\n            <div class=\"${properties.kcFormGroupClass!}\">\n                <div class=\"${properties.kcLabelWrapperClass!}\">\n                    <label for=\"username\" class=\"${properties.kcLabelClass!}\"><#if !realm.loginWithEmailAllowed>${msg(\"username\")}<#elseif !realm.registrationEmailAsUsername>${msg(\"usernameOrEmail\")}<#else>${msg(\"email\")}</#if></label>\n                </div>\n                <div class=\"${properties.kcInputWrapperClass!}\">\n                    <#if auth?has_content && auth.showUsername()>\n                        <input type=\"text\" id=\"username\" name=\"username\" class=\"${properties.kcInputClass!}\" autofocus value=\"${auth.attemptedUsername}\"/>\n                    <#else>\n                        <input type=\"text\" id=\"username\" name=\"username\" class=\"${properties.kcInputClass!}\" autofocus/>\n                    </#if>\n                </div>\n            </div>\n            <div class=\"${properties.kcFormGroupClass!} ${properties.kcFormSettingClass!}\">\n                <div id=\"kc-form-options\" class=\"${properties.kcFormOptionsClass!}\">\n                    <div class=\"${properties.kcFormOptionsWrapperClass!}\">\n                        <span><a href=\"${url.loginUrl}\">${kcSanitize(msg(\"backToLogin\"))?no_esc}</a></span>\n                    </div>\n                </div>\n\n                <div id=\"kc-form-buttons\" class=\"${properties.kcFormButtonsClass!}\">\n                    <input class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}\" type=\"submit\" value=\"${msg(\"doSubmit\")}\"/>\n                </div>\n            </div>\n        </form>\n    <#elseif section = \"info\" >\n        ${msg(\"emailInstruction\")}\n    </#if>\n</@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login-update-password.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout displayInfo=true; section>\n    <#if section = \"header\">\n        ${msg(\"updatePasswordTitle\")}\n    <#elseif section = \"form\">\n        <form id=\"kc-passwd-update-form\" class=\"${properties.kcFormClass!}\" action=\"${url.loginAction}\" method=\"post\">\n            <input type=\"text\" id=\"username\" name=\"username\" value=\"${username}\" autocomplete=\"username\" readonly=\"readonly\" style=\"display:none;\"/>\n            <input type=\"password\" id=\"password\" name=\"password\" autocomplete=\"current-password\" style=\"display:none;\"/>\n\n            <div class=\"${properties.kcFormGroupClass!}\">\n                <div class=\"${properties.kcLabelWrapperClass!}\">\n                    <label for=\"password-new\" class=\"${properties.kcLabelClass!}\">${msg(\"passwordNew\")}</label>\n                </div>\n                <div class=\"${properties.kcInputWrapperClass!}\">\n                    <input type=\"password\" id=\"password-new\" name=\"password-new\" class=\"${properties.kcInputClass!}\" autofocus autocomplete=\"new-password\" />\n                </div>\n            </div>\n\n            <div class=\"${properties.kcFormGroupClass!}\">\n                <div class=\"${properties.kcLabelWrapperClass!}\">\n                    <label for=\"password-confirm\" class=\"${properties.kcLabelClass!}\">${msg(\"passwordConfirm\")}</label>\n                </div>\n                <div class=\"${properties.kcInputWrapperClass!}\">\n                    <input type=\"password\" id=\"password-confirm\" name=\"password-confirm\" class=\"${properties.kcInputClass!}\" autocomplete=\"new-password\" />\n                </div>\n            </div>\n\n            <div class=\"${properties.kcFormGroupClass!}\">\n                <div id=\"kc-form-options\" class=\"${properties.kcFormOptionsClass!}\">\n                    <div class=\"${properties.kcFormOptionsWrapperClass!}\">\n                    </div>\n                </div>\n\n                <div id=\"kc-form-buttons\" class=\"${properties.kcFormButtonsClass!}\">\n                    <#if isAppInitiatedAction??>\n                    <input class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}\" type=\"submit\" value=\"${msg(\"doSubmit\")}\" />\n                    <button class=\"${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}\" type=\"submit\" name=\"cancel-aia\" value=\"true\" />${msg(\"doCancel\")}</button>\n                    <#else>\n                    <input class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}\" type=\"submit\" value=\"${msg(\"doSubmit\")}\" />\n                    </#if>\n                </div>\n            </div>\n        </form>\n    </#if>\n</@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login-update-profile.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout; section>\n    <#if section = \"header\">\n        ${msg(\"loginProfileTitle\")}\n    <#elseif section = \"form\">\n        <form id=\"kc-update-profile-form\" class=\"${properties.kcFormClass!}\" action=\"${url.loginAction}\" method=\"post\">\n            <#if user.editUsernameAllowed>\n                <div class=\"${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('username',properties.kcFormGroupErrorClass!)}\">\n                    <div class=\"${properties.kcLabelWrapperClass!}\">\n                        <label for=\"username\" class=\"${properties.kcLabelClass!}\">${msg(\"username\")}</label>\n                    </div>\n                    <div class=\"${properties.kcInputWrapperClass!}\">\n                        <input type=\"text\" id=\"username\" name=\"username\" value=\"${(user.username!'')}\" class=\"${properties.kcInputClass!}\"/>\n                    </div>\n                </div>\n            </#if>\n            <div class=\"${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('email',properties.kcFormGroupErrorClass!)}\">\n                <div class=\"${properties.kcLabelWrapperClass!}\">\n                    <label for=\"email\" class=\"${properties.kcLabelClass!}\">${msg(\"email\")}</label>\n                </div>\n                <div class=\"${properties.kcInputWrapperClass!}\">\n                    <input type=\"text\" id=\"email\" name=\"email\" value=\"${(user.email!'')}\" class=\"${properties.kcInputClass!}\" />\n                </div>\n            </div>\n\n            <div class=\"${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('firstName',properties.kcFormGroupErrorClass!)}\">\n                <div class=\"${properties.kcLabelWrapperClass!}\">\n                    <label for=\"firstName\" class=\"${properties.kcLabelClass!}\">${msg(\"firstName\")}</label>\n                </div>\n                <div class=\"${properties.kcInputWrapperClass!}\">\n                    <input type=\"text\" id=\"firstName\" name=\"firstName\" value=\"${(user.firstName!'')}\" class=\"${properties.kcInputClass!}\" />\n                </div>\n            </div>\n\n            <div class=\"${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('lastName',properties.kcFormGroupErrorClass!)}\">\n                <div class=\"${properties.kcLabelWrapperClass!}\">\n                    <label for=\"lastName\" class=\"${properties.kcLabelClass!}\">${msg(\"lastName\")}</label>\n                </div>\n                <div class=\"${properties.kcInputWrapperClass!}\">\n                    <input type=\"text\" id=\"lastName\" name=\"lastName\" value=\"${(user.lastName!'')}\" class=\"${properties.kcInputClass!}\" />\n                </div>\n            </div>\n\n            <div class=\"${properties.kcFormGroupClass!}\">\n                <div id=\"kc-form-options\" class=\"${properties.kcFormOptionsClass!}\">\n                    <div class=\"${properties.kcFormOptionsWrapperClass!}\">\n                    </div>\n                </div>\n\n                <div id=\"kc-form-buttons\" class=\"${properties.kcFormButtonsClass!}\">\n                    <#if isAppInitiatedAction??>\n                    <input class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}\" type=\"submit\" value=\"${msg(\"doSubmit\")}\" />\n                    <button class=\"${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}\" type=\"submit\" name=\"cancel-aia\" value=\"true\" />${msg(\"doCancel\")}</button>\n                    <#else>\n                    <input class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}\" type=\"submit\" value=\"${msg(\"doSubmit\")}\" />\n                    </#if>\n                </div>\n            </div>\n        </form>\n    </#if>\n</@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login-username.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout displayInfo=social.displayInfo displayWide=(realm.password && social.providers??); section>\n    <#if section = \"header\">\n        ${msg(\"doLogIn\")}\n    <#elseif section = \"form\">\n    <div id=\"kc-form\" <#if realm.password && social.providers??>class=\"${properties.kcContentWrapperClass!}\"</#if>>\n      <div id=\"kc-form-wrapper\" <#if realm.password && social.providers??>class=\"${properties.kcFormSocialAccountContentClass!} ${properties.kcFormSocialAccountClass!}\"</#if>>\n        <#if realm.password>\n            <form id=\"kc-form-login\" onsubmit=\"login.disabled = true; return true;\" action=\"${url.loginAction}\" method=\"post\">\n                <div class=\"${properties.kcFormGroupClass!}\">\n                    <label for=\"username\" class=\"${properties.kcLabelClass!}\"><#if !realm.loginWithEmailAllowed>${msg(\"username\")}<#elseif !realm.registrationEmailAsUsername>${msg(\"usernameOrEmail\")}<#else>${msg(\"email\")}</#if></label>\n\n                    <#if usernameEditDisabled??>\n                        <input tabindex=\"1\" id=\"username\" class=\"${properties.kcInputClass!}\" name=\"username\" value=\"${(login.username!'')}\" type=\"text\" disabled />\n                    <#else>\n                        <input tabindex=\"1\" id=\"username\" class=\"${properties.kcInputClass!}\" name=\"username\" value=\"${(login.username!'')}\"  type=\"text\" autofocus autocomplete=\"off\" />\n                    </#if>\n                </div>\n\n                <div class=\"${properties.kcFormGroupClass!} ${properties.kcFormSettingClass!}\">\n                    <div id=\"kc-form-options\">\n                        <#if realm.rememberMe && !usernameEditDisabled??>\n                            <div class=\"checkbox\">\n                                <label>\n                                    <#if login.rememberMe??>\n                                        <input tabindex=\"3\" id=\"rememberMe\" name=\"rememberMe\" type=\"checkbox\" checked> ${msg(\"rememberMe\")}\n                                    <#else>\n                                        <input tabindex=\"3\" id=\"rememberMe\" name=\"rememberMe\" type=\"checkbox\"> ${msg(\"rememberMe\")}\n                                    </#if>\n                                </label>\n                            </div>\n                        </#if>\n                        </div>\n                  </div>\n\n                  <div id=\"kc-form-buttons\" class=\"${properties.kcFormGroupClass!}\">\n                    <input tabindex=\"4\" class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}\" name=\"login\" id=\"kc-login\" type=\"submit\" value=\"${msg(\"doLogIn\")}\"/>\n                  </div>\n            </form>\n        </#if>\n        </div>\n        <#if realm.password && social.providers??>\n            <div id=\"kc-social-providers\" class=\"${properties.kcFormSocialAccountContentClass!} ${properties.kcFormSocialAccountClass!}\">\n                <ul class=\"${properties.kcFormSocialAccountListClass!} <#if social.providers?size gt 4>${properties.kcFormSocialAccountDoubleListClass!}</#if>\">\n                    <#list social.providers as p>\n                        <li class=\"${properties.kcFormSocialAccountListLinkClass!}\"><a href=\"${p.loginUrl}\" id=\"zocial-${p.alias}\" class=\"zocial ${p.providerId}\"> <span>${p.displayName}</span></a></li>\n                    </#list>\n                </ul>\n            </div>\n        </#if>\n      </div>\n    <#elseif section = \"info\" >\n        <#if realm.password && realm.registrationAllowed && !registrationDisabled??>\n            <div id=\"kc-registration\">\n                <span>${msg(\"noAccount\")} <a tabindex=\"6\" href=\"${url.registrationUrl}\">${msg(\"doRegister\")}</a></span>\n            </div>\n        </#if>\n    </#if>\n\n</@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login-verify-email-code-text.ftl",
    "content": "<#ftl output_format=\"plainText\">\n${msg(\"console-verify-email\",email, code)}"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login-verify-email.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout; section>\n    <#if section = \"header\">\n        ${msg(\"emailVerifyTitle\")}\n    <#elseif section = \"form\">\n        <p class=\"instruction\">\n            ${msg(\"emailVerifyInstruction1\")}\n        </p>\n        <p class=\"instruction\">\n            ${msg(\"emailVerifyInstruction2\")} <a href=\"${url.loginAction}\">${msg(\"doClickHere\")}</a> ${msg(\"emailVerifyInstruction3\")}\n        </p>\n    </#if>\n</@layout.registrationLayout>"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login-x509-info.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout; section>\n    <#if section = \"header\">\n        ${msg(\"doLogIn\")}\n    <#elseif section = \"form\">\n\n        <form id=\"kc-x509-login-info\" class=\"${properties.kcFormClass!}\" action=\"${url.loginAction}\" method=\"post\">\n            <div class=\"${properties.kcFormGroupClass!}\">\n\n                <div class=\"${properties.kcLabelWrapperClass!}\">\n                    <label for=\"certificate_subjectDN\" class=\"${properties.kcLabelClass!}\">${msg(\"clientCertificate\")}</label>\n                </div>\n                <#if x509.formData.subjectDN??>\n                    <div class=\"${properties.kcLabelWrapperClass!}\">\n                         <label id=\"certificate_subjectDN\" class=\"${properties.kcLabelClass!}\">${(x509.formData.subjectDN!\"\")}</label>\n                    </div>\n                <#else>\n                    <div class=\"${properties.kcLabelWrapperClass!}\">\n                        <label id=\"certificate_subjectDN\" class=\"${properties.kcLabelClass!}\">${msg(\"noCertificate\")}</label>\n                    </div>\n                </#if>\n           </div>\n\n            <div class=\"${properties.kcFormGroupClass!}\">\n\n                    <#if x509.formData.isUserEnabled??>\n                          <div class=\"${properties.kcLabelWrapperClass!}\">\n                             <label for=\"username\" class=\"${properties.kcLabelClass!}\">${msg(\"doX509Login\")}</label>\n                          </div>\n                          <div class=\"${properties.kcLabelWrapperClass!}\">\n                             <label id=\"username\" class=\"${properties.kcLabelClass!}\">${(x509.formData.username!'')}</label>\n                         </div>\n                    </#if>\n\n            </div>\n\n            <div class=\"${properties.kcFormGroupClass!}\">\n                <div id=\"kc-form-options\" class=\"${properties.kcFormOptionsClass!}\">\n                    <div class=\"${properties.kcFormOptionsWrapperClass!}\">\n                    </div>\n                </div>\n\n                <div id=\"kc-form-buttons\" class=\"${properties.kcFormButtonsClass!}\">\n                    <div class=\"${properties.kcFormButtonsWrapperClass!}\">\n                        <input class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}\" name=\"login\" id=\"kc-login\" type=\"submit\" value=\"${msg(\"doContinue\")}\"/>\n                        <#if x509.formData.isUserEnabled??>\n                            <input class=\"${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}\" name=\"cancel\" id=\"kc-cancel\" type=\"submit\" value=\"${msg(\"doIgnore\")}\"/>\n                        </#if>\n                    </div>\n                </div>\n            </div>\n        </form>\n    </#if>\n\n</@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/login.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout displayInfo=social.displayInfo displayWide=(realm.password && social.providers??); section>\n    <#if section = \"header\">\n        ${msg(\"doLogIn\")}\n    <#elseif section = \"form\">\n    <div id=\"kc-form\" <#if realm.password && social.providers??>class=\"${properties.kcContentWrapperClass!}\"</#if>>\n      <div id=\"kc-form-wrapper\" <#if realm.password && social.providers??>class=\"${properties.kcFormSocialAccountContentClass!} ${properties.kcFormSocialAccountClass!}\"</#if>>\n        <#if realm.password>\n            <form id=\"kc-form-login\" onsubmit=\"login.disabled = true; return true;\" action=\"${url.loginAction}\" method=\"post\">\n                <div class=\"${properties.kcFormGroupClass!}\">\n                    <label for=\"username\" class=\"${properties.kcLabelClass!}\"><#if !realm.loginWithEmailAllowed>${msg(\"username\")}<#elseif !realm.registrationEmailAsUsername>${msg(\"usernameOrEmail\")}<#else>${msg(\"email\")}</#if></label>\n\n                    <#if usernameEditDisabled??>\n                        <input tabindex=\"1\" id=\"username\" class=\"${properties.kcInputClass!}\" name=\"username\" value=\"${(login.username!'')}\" type=\"text\" disabled />\n                    <#else>\n                        <input tabindex=\"1\" id=\"username\" class=\"${properties.kcInputClass!}\" name=\"username\" value=\"${(login.username!'')}\"  type=\"text\" autofocus autocomplete=\"off\" />\n                    </#if>\n                </div>\n\n                <div class=\"${properties.kcFormGroupClass!}\">\n                    <label for=\"password\" class=\"${properties.kcLabelClass!}\">${msg(\"password\")}</label>\n                    <input tabindex=\"2\" id=\"password\" class=\"${properties.kcInputClass!}\" name=\"password\" type=\"password\" autocomplete=\"off\" />\n                </div>\n\n                <div class=\"${properties.kcFormGroupClass!} ${properties.kcFormSettingClass!}\">\n                    <div id=\"kc-form-options\">\n                        <#if realm.rememberMe && !usernameEditDisabled??>\n                            <div class=\"checkbox\">\n                                <label>\n                                    <#if login.rememberMe??>\n                                        <input tabindex=\"3\" id=\"rememberMe\" name=\"rememberMe\" type=\"checkbox\" checked> ${msg(\"rememberMe\")}\n                                    <#else>\n                                        <input tabindex=\"3\" id=\"rememberMe\" name=\"rememberMe\" type=\"checkbox\"> ${msg(\"rememberMe\")}\n                                    </#if>\n                                </label>\n                            </div>\n                        </#if>\n                        </div>\n                        <div class=\"${properties.kcFormOptionsWrapperClass!}\">\n                            <#if realm.resetPasswordAllowed>\n                                <span><a tabindex=\"5\" href=\"${url.loginResetCredentialsUrl}\">${msg(\"doForgotPassword\")}</a></span>\n                            </#if>\n                        </div>\n\n                  </div>\n\n                  <div id=\"kc-form-buttons\" class=\"${properties.kcFormGroupClass!}\">\n                      <input type=\"hidden\" id=\"id-hidden-input\" name=\"credentialId\" <#if auth.selectedCredential?has_content>value=\"${auth.selectedCredential}\"</#if>/>\n                      <input tabindex=\"4\" class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}\" name=\"login\" id=\"kc-login\" type=\"submit\" value=\"${msg(\"doLogIn\")}\"/>\n                  </div>\n            </form>\n        </#if>\n        </div>\n        <#if realm.password && social.providers??>\n            <div id=\"kc-social-providers\" class=\"${properties.kcFormSocialAccountContentClass!} ${properties.kcFormSocialAccountClass!}\">\n                <ul class=\"${properties.kcFormSocialAccountListClass!} <#if social.providers?size gt 4>${properties.kcFormSocialAccountDoubleListClass!}</#if>\">\n                    <#list social.providers as p>\n                        <li class=\"${properties.kcFormSocialAccountListLinkClass!}\"><a href=\"${p.loginUrl}\" id=\"zocial-${p.alias}\" class=\"zocial ${p.providerId}\"> <span>${p.displayName}</span></a></li>\n                    </#list>\n                </ul>\n            </div>\n        </#if>\n      </div>\n    <#elseif section = \"info\" >\n        <#if realm.password && realm.registrationAllowed && !registrationDisabled??>\n            <div id=\"kc-registration\">\n                <span>${msg(\"noAccount\")} <a tabindex=\"6\" href=\"${url.registrationUrl}\">${msg(\"doRegister\")}</a></span>\n            </div>\n        </#if>\n    </#if>\n\n</@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_ca.properties",
    "content": "doLogIn=Inicia sessi\\u00F3\ndoRegister=Registra''t\ndoCancel=Cancel\\u00B7lar\ndoSubmit=Envia\ndoYes=S\\u00ED\ndoNo=No\ndoContinue=Continua\ndoAccept=Accepta\ndoDecline=Rebutja\ndoForgotPassword=Has oblidat la teva contrasenya?\ndoClickHere=Fes clic aqu\\u00ED\ndoImpersonate=Personifica\nkerberosNotConfigured=Kerberos no configurat\nkerberosNotConfiguredTitle=Kerberos no configurat\nbypassKerberosDetail=O b\\u00E9 no est\\u00E0s identificat mitjan\\u00E7ant Kerberos o el teu navegador no est\\u00E0 configurat per identificar-se mitjan\\u00E7ant Kerberos. Si us plau fes clic per identificar-te per un altre mitj\\u00E0.\nkerberosNotSetUp=Kerberos no est\\u00E0 configurat. No pots identificar-te.\nregisterWithTitle=Registra''t amb {0}\nregisterWithTitleHtml={0}\nloginTitle=Inicia sessi\\u00F3 a {0}\nloginTitleHtml={0}\nimpersonateTitle={0}\\u00A0Personifica Usuari\nimpersonateTitleHtml=<strong>{0}</strong> Personifica Usuari\nrealmChoice=Domini\nunknownUser=Usuari desconegut\nloginTotpTitle=Configura la teva aplicaci\\u00F3 d''identificaci\\u00F3 m\\u00F2bil\nloginProfileTitle=Actualitza la informaci\\u00F3 del teu compte\nloginTimeout=Has trigat massa a identificar-te. Inicia de nou la identificaci\\u00F3.\noauthGrantTitle=Concessi\\u00F3 OAuth\noauthGrantTitleHtml={0}\nerrorTitle=Ho sentim...\nerrorTitleHtml=Ho <strong>sentim</strong>...\nemailVerifyTitle=Verificaci\\u00F3 de l''email\nemailForgotTitle=Has oblidat la teva contrasenya?\nupdatePasswordTitle=Modificaci\\u00F3 de contrasenya\ncodeSuccessTitle=Codi d''\\u00E8xit\ncodeErrorTitle=Codi d''error: {0}\n\ntermsTitle=Termes i Condicions\ntermsTitleHtml=Termes i Condicions\ntermsText=<p>Termes i condicions a definir</p>\n\nrecaptchaFailed=Reconeixement de text inv\\u00E0lid\nrecaptchaNotConfigured=El reconeixement de text \\u00E9s obligatori per\\u00F2 no est\\u00E0 configurat\nconsentDenied=Consentiment rebutjat.\n\nnoAccount=Usuari nou?\nusername=Usuari\nusernameOrEmail=Usuari o email\nfirstName=Nom\ngivenName=Nom de pila\nfullName=Nom complet\nlastName=Cognoms\nfamilyName=Cognoms\nemail=Email\npassword=Contrasenya\npasswordConfirm=Confirma la contrasenya\npasswordNew=Nova contrasenya\npasswordNewConfirm=Confirma la nova contrasenya\nrememberMe=Seguir connectat\nauthenticatorCode=Codi d''identificaci\\u00F3\naddress=Adre\\u00E7a\nstreet=Carrer\nlocality=Ciutat o Municipi\nregion=Estat, Prov\\u00EDncia, o Regi\\u00F3\npostal_code=Codi Postal\ncountry=Pa\\u00EDs\nemailVerified=Email verificat\ngssDelegationCredential=GSS Delegation Credential\n\nloginTotpStep1=Instal\\u00B7la <a href=\\\"https://freeotp.github.io/\\\" target=\\\"_blank\\\">FreeOTP</a> o Google Authenticator al teu tel\\u00E8fon m\\u00F2bil. Les dues aplicacions estan disponibles a <a href=\\\"https://play.google.com\\\">Google Play</a> i en l''App Store d''Apple.\nloginTotpStep2=Obre l''aplicaci\\u00F3 i escaneja el codi o introdueix la clau.\nloginTotpStep3=Introdueix el codi \\u00FAnic que et mostra l''aplicaci\\u00F3 d''autenticaci\\u00F3 i fes clic a Envia per finalitzar la configuraci\\u00F3\nloginOtpOneTime=Codi d''un sol \\u00FAs\n\noauthGrantRequest=Vols permetre aquests privilegis d''acc\\u00E9s?\ninResource=a\n\nemailVerifyInstruction1=T''hem enviat un email amb instruccions per verificar el teu email.\nemailVerifyInstruction2=No has rebut un codi de verificaci\\u00F3 al teu email?\nemailVerifyInstruction3=per reenviar l''email.\n\nbackToLogin=&laquo; Torna a la identificaci\\u00F3\n\nemailInstruction=Indica el teu usuari o email i t''enviarem instruccions indicant com generar una nova contrasenya.\n\ncopyCodeInstruction=Si us plau, copia i enganxa aquest codi a la teva aplicaci\\u00F3:\n\npersonalInfo=Informaci\\u00F3 personal:\nrole_admin=Admin\nrole_realm-admin=Administrador del domini\nrole_create-realm=Crear domini\nrole_create-client=Crear client\nrole_view-realm=Veure domini\nrole_view-users=Veure usuaris\nrole_view-applications=Veure aplicacions\nrole_view-clients=Veure clients\nrole_view-events=Veure events\nrole_view-identity-providers=Veure prove\\u00EFdors d''identitat\nrole_manage-realm=Gestionar domini\nrole_manage-users=Gestionar usuaris\nrole_manage-applications=Gestionar aplicacions\nrole_manage-identity-providers=Gestionar prove\\u00EFdors d''identitat\nrole_manage-clients=Gestionar clients\nrole_manage-events=Gestionar events\nrole_view-profile=Veure perfil\nrole_manage-account=Gestionar compte\nrole_read-token=Llegir token\nrole_offline-access=Acc\\u00E9s sense connexi\\u00F3\nclient_account=Compte\nclient_security-admin-console=Consola d''Administraci\\u00F3 de Seguretat\nclient_realm-management=Gesti\\u00F3 del domini\nclient_broker=Broker\n\ninvalidUserMessage=Usuari o contrasenya incorrectes.\ninvalidEmailMessage=Email no v\\u00E0lid\naccountDisabledMessage=El compte est\\u00E0 desactivat, contacta amb l''administrador.\naccountTemporarilyDisabledMessage=El compte est\\u00E0 temporalment desactivat, contacta amb l''administrador o intenta-ho de nou m\\u00E9s tard.\nexpiredCodeMessage=S''ha esgotat el temps m\\u00E0xim per a la identificaci\\u00F3. Si us plau identifica''t de nou.\n\nmissingFirstNameMessage=Si us plau indica el teu nom.\nmissingLastNameMessage=Si us plau indica els teus cognoms.\nmissingEmailMessage=Si us plau indica el teu email.\nmissingUsernameMessage=Si us plau indica el teu usuari.\nmissingPasswordMessage=Si us plau indica la teva contrasenya.\nmissingTotpMessage=Si us plau indica el teu codi d''autenticaci\\u00F3\nnotMatchPasswordMessage=Les contrasenyes no coincideixen.\n\ninvalidPasswordExistingMessage=La contrasenya actual no \\u00E9s correcta.\ninvalidPasswordConfirmMessage=La confirmaci\\u00F3 de contrasenya no coincideix.\ninvalidTotpMessage=El codi d''autenticaci\\u00F3 no \\u00E9s v\\u00E0lid.\n\nusernameExistsMessage=El nom d''usuari ja existeix\nemailExistsMessage=L''email ja existeix\n\nfederatedIdentityEmailExistsMessage=Ja existeix un usuari amb aquest email. Si us plau accedeix a la gesti\\u00F3 del teu compte per enlla\\u00E7ar-lo.\nfederatedIdentityUsernameExistsMessage=Ja existeix un usuari amb aquest nom d''usuari. Si us plau accedeix a la gesti\\u00F3 del teu compte per enlla\\u00E7ar-lo.\n\nconfigureTotpMessage=Has de configurar l''aplicaci\\u00F3 m\\u00F2bil 'd'identificaci\\u00F3 per activar el teu compte.\nupdateProfileMessage=Has d''actualitzar el teu perfil d''usuari per activar el teu compte.\nupdatePasswordMessage=Has de canviar la contrasenya per activar el teu compte.\nverifyEmailMessage=Has de verificar el teu email per activar el teu compte.\n\nemailSentMessage=En breu hauries de rebre un missatge amb m\\u00E9s instruccions\nemailSendErrorMessage=Ha fallat l''enviament de l''email, si us plau intenta-ho de nou m\\u00E9s tard.\n\naccountUpdatedMessage=El teu compte s''ha actualitzat.\naccountPasswordUpdatedMessage=La contrasenya s''ha actualitzat.\n\nnoAccessMessage=Sense acc\\u00E9s\n\ninvalidPasswordMinLengthMessage=Contrasenya incorrecta: longitud m\\u00EDnima {0}.\ninvalidPasswordMinDigitsMessage=Contrasenya incorrecta: ha de contenir almenys {0} car\\u00E0cters num\\u00E8rics.\ninvalidPasswordMinLowerCaseCharsMessage=Contrasenya incorrecta: ha de contenir almenys {0} lletres min\\u00FAscules.\ninvalidPasswordMinUpperCaseCharsMessage=Contrasenya incorrecta: ha de contenir almenys {0} lletres maj\\u00FAscules.\ninvalidPasswordMinSpecialCharsMessage=Contrasenya incorrecta: ha de contenir almenys {0} car\\u00E0cters especials.\ninvalidPasswordNotUsernameMessage=Contrasenya incorrecta: no pot ser igual al nom d''usuari.\ninvalidPasswordRegexPatternMessage=Contrasenya incorrecta: no compleix l''expressi\\u00F3 regular.\ninvalidPasswordHistoryMessage=Contrasenya incorrecta: no pot ser igual a cap de les \\u00FAltimes {0} contrasenyes.\n\nfailedToProcessResponseMessage=Fallada en processar la resposta\nhttpsRequiredMessage=HTTPS obligatori\nrealmNotEnabledMessage=El domini no est\\u00E0 activat\ninvalidRequestMessage=Petici\\u00F3 incorrecta\nfailedLogout=Ha fallat la desconnexi\\u00F3.\nunknownLoginRequesterMessage=Sol\\u00B7licitant d''identificaci\\u00F3 desconegut\nloginRequesterNotEnabledMessage=El sol\\u00B7licitant d''inici de sessi\\u00F3 est\\u00E0 desactivat\nbearerOnlyMessage=Les aplicacions Bearer-only no poden iniciar sessi\\u00F3 des del navegador.\ndirectGrantsOnlyMessage=Els clients de tipus Direct-grants-only no poden iniciar sessi\\u00F3 des del navegador.\ninvalidRedirectUriMessage=L''URI de redirecci\\u00F3 no \\u00E9s correcta\nunsupportedNameIdFormatMessage=NameIDFormat no suportat\ninvalidRequesterMessage=Sol\\u00B7licitant no v\\u00E0lid\nregistrationNotAllowedMessage=El registre no est\\u00E0 perm\\u00E8s\nresetCredentialNotAllowedMessage=El reinici de les credencials no est\\u00E0 perm\\u00E8s\n\npermissionNotApprovedMessage=Perm\\u00EDs no aprovat.\nnoRelayStateInResponseMessage=Sense estat de retransmissi\\u00F3 en la resposta del prove\\u00EFdor d''identitat.\nidentityProviderAlreadyLinkedMessage=La identitat retornada pel prove\\u00EFdor d''identitat ja est\\u00E0 associada a un altre usuari.\ninsufficientPermissionMessage=Permisos insuficients per enlla\\u00E7ar identitats.\ncouldNotProceedWithAuthenticationRequestMessage=No s''ha pogut continuar amb la petici\\u00F3 d''autenticaci\\u00F3 al prove\\u00EFdor d''identitat.\ncouldNotObtainTokenMessage=No s''ha pogut obtenir el codi del prove\\u00EFdor d''identitat.\nunexpectedErrorRetrievingTokenMessage=Error inesperat obtenint el token del prove\\u00EFdor d''identitat\nunexpectedErrorHandlingResponseMessage=Error inesperat processant la resposta del prove\\u00EFdor d''identitat.\nidentityProviderAuthenticationFailedMessage=Ha fallat l''autenticaci\\u00F3. No ha estat possible autenticar-se en el prove\\u00EFdor d''identitat.\ncouldNotSendAuthenticationRequestMessage=No s''ha pogut enviar la petici\\u00F3 d''identificaci\\u00F3 al prove\\u00EFdor d''identitat.\nunexpectedErrorHandlingRequestMessage=Error inesperat durant la petici\\u00F3 d''identificaci\\u00F3 al prove\\u00EFdor d''identitat.\ninvalidAccessCodeMessage=Codi d''acc\\u00E9s no v\\u00E0lid.\nsessionNotActiveMessage=La sessi\\u00F3 no est\\u00E0 activa\ninvalidCodeMessage=Hi ha hagut un error, si us plau identifica''t de nou des de la teva aplicaci\\u00F3.\nidentityProviderUnexpectedErrorMessage=Error no esperat intentant autenticar en el prove\\u00EFdor d''identitat.\nidentityProviderNotFoundMessage=No s''ha trobat cap prove\\u00EFdor d''identitat.\nrealmSupportsNoCredentialsMessage=El domini no suporta cap tipus de credencials.\nidentityProviderNotUniqueMessage=El domini suporta m\\u00FAltiples prove\\u00EFdors d''identitat. No s''ha pogut determinar el prove\\u00EFdor d''identitat que hauria de ser utilitzat per identificar-se.\nemailVerifiedMessage=El teu email ha estat verificat.\n\nbackToApplication=&laquo; Torna a l''aplicaci\\u00F3\nmissingParameterMessage=Par\\u00E0metres que falten: {0}\nclientNotFoundMessage=Client no trobat\ninvalidParameterMessage=Par\\u00E0metre no v\\u00E0lid: {0}\nalreadyLoggedIn=You are already logged in.\n\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_cs.properties",
    "content": "# encoding: utf-8\ndoLogIn=Přihlásit se\ndoRegister=Registrovat se\ndoCancel=Zrušit\ndoSubmit=Odeslat\ndoYes=Ano\ndoNo=Ne\ndoContinue=Pokračovat\ndoIgnore=Ignorovat\ndoAccept=Potvrdit\ndoDecline=Zamítnout\ndoForgotPassword=Zapomenuté heslo?\ndoClickHere=Klikněte zde\ndoImpersonate=Zosobnit\nkerberosNotConfigured=Kerberos není nakonfigurován\nkerberosNotConfiguredTitle=Kerberos není nakonfigurován\nbypassKerberosDetail=Buď nejste přihlášeni přes Kerberos nebo váš prohlížeč není nastaven pro přihlášení Kerberos. Klepnutím na tlačítko pokračujte k přihlášení jinými způsoby\nkerberosNotSetUp=Kerberos není nastaven. Nemůžete se přihlásit.\nregisterWithTitle=Registrovat {0}\nregisterWithTitleHtml={0}\nloginTitle=Přihlásit do {0}\nloginTitleHtml={0}\nimpersonateTitle={0} Zosobnit uživatele\nimpersonateTitleHtml=<strong>{0}</strong> Zosobnit uživatele\nrealmChoice=Realm\nunknownUser=Neznámý uživatel\nloginTotpTitle=Nastavení autentizátoru OTP\nloginProfileTitle=Aktualizovat informace o účtu\nloginTimeout=Přihlašování trvalo příliš dlouho. Přihlašovací proces začíná od začátku.\noauthGrantTitle=Poskytnout přístup\noauthGrantTitleHtml={0}\nerrorTitle=Je nám líto ...\nerrorTitleHtml=<strong>Omlouváme</strong> se ...\nemailVerifyTitle=Ověření e-mailu\nemailForgotTitle=Zapomněli jste heslo?\nupdatePasswordTitle=Aktualizace hesla\ncodeSuccessTitle=Kód úspěchu \ncodeErrorTitle=Kód chyby\\: {0}\n\ntermsTitle=Smluvní podmínky\ntermsTitleHtml=Smluvní podmínky\ntermsText=<p>Smluvní podmínky, které se mají definovat</p>\n\nrecaptchaFailed=Neplatné Recaptcha\nrecaptchaNotConfigured=Recaptcha je vyžadována, ale není nakonfigurována\nconsentDenied=Souhlas byl zamítnut.\n\nnoAccount=Nový uživatel?\nusername=Přihlasovací jméno\nusernameOrEmail=Přihlasovací jméno nebo e-mail\nfirstName=Křestní jméno\ngivenName=Křestní jména\nfullName=Celé jméno\nlastName=Příjmení\nfamilyName=Příjmení\nemail=E-mail\npassword=Heslo\npasswordConfirm=Potvrdit heslo\npasswordNew=Nové heslo\npasswordNewConfirm=Potvrdit nové heslo\nrememberMe=Pamatovat si mě\nauthenticatorCode=Jednorázový kód\naddress=Adresa\nstreet=Ulice\nlocality=Město\nregion=Kraj\npostal_code=PSČ\ncountry=Stát\nemailVerified=E-mail ověřen\ngssDelegationCredential=GSS Delegované Oprávnění\n\nloginTotpStep1=Nainstalujte do mobilu jednu z následujících aplikací\nloginTotpStep2=Otevřete aplikaci a naskenujte čárový kód\nloginTotpStep3=Zadejte jednorázový kód poskytnutý aplikací a klepnutím na tlačítko Odeslat dokončete nastavení\nloginTotpManualStep2=Otevřete aplikaci a zadejte klíč\nloginTotpManualStep3=Použijte následující hodnoty konfigurace, pokud aplikace umožňuje jejich nastavení\nloginTotpUnableToScan=Nelze skenovat?\nloginTotpScanBarcode=Skenovat čárový kód?\nloginTotpOneTime=Jednorázový kód\nloginTotpType=Typ\nloginTotpAlgorithm=Algoritmus\nloginTotpDigits=Číslice\nloginTotpInterval=Interval\nloginTotpCounter=Počítadlo\n\nloginTotp.totp=Založeno na čase\nloginTotp.hotp=Založeno na počítadle\n\n\noauthGrantRequest=Poskytujete tyto přístupová oprávnění?\ninResource=v\n\nemailVerifyInstruction1=Byl Vám zaslán e-mail s pokyny k ověření vaší e-mailové adresy.\nemailVerifyInstruction2=Nezískali jste v e-mailu ověřovací kód?\nemailVerifyInstruction3=znovu odeslat e-mail.\n\nemailLinkIdpTitle=Odkaz {0}\nemailLinkIdp1=Byl vám zaslán e-mail s pokyny k propojení {0} účtu {1} s vaším účtem {2}.\nemailLinkIdp2=Nezískali jste v e-mailu ověřovací kód?\nemailLinkIdp3=znovu odeslat e-mail.\nemailLinkIdp4=Pokud jste již ověřili e-mail v jiném prohlížeči\nemailLinkIdp5=pokračovat.\n\nbackToLogin=&laquo; Zpět k přihlášení\n\nemailInstruction=Zadejte své uživatelské jméno nebo e-mailovou adresu a my vám zašleme pokyny k vytvoření nového hesla.\n\ncopyCodeInstruction=Zkopírujte tento kód a vložte jej do své aplikace:\n\npageExpiredTitle=Vypršela platnost stránky\npageExpiredMsg1=Pro restart procesu přihlášení\npageExpiredMsg2=Pokračovat v procesu přihlášení\n\npersonalInfo=Osobní údaje:\nrole_admin=Administrátor realmu\nrole_realm-admin=Administrátor realmu\nrole_create-realm=Vytvořit realm\nrole_create-client=Vytvořit klienta\nrole_view-realm=Zobrazit realm\nrole_view-users=Zobrazit uživatele\nrole_view-applications=Zobrazit aplikace\nrole_view-clients=Zobrazit klienty\nrole_view-events=Zobrazit události\nrole_view-identity-providers=Zobrazit poskytovatele identity\nrole_manage-realm=Spravovat realm\nrole_manage-users=Spravovat uživatele\nrole_manage-applications=Spravovat aplikace\nrole_manage-identity-providers=Spravovat poskytovatele identity\nrole_manage-clients=Spravovat klienty\nrole_manage-events=Spravovat události\nrole_view-profile=Zobrazit profil\nrole_manage-account=Spravovat účet\nrole_manage-account-links=Spravovat odkazy na účet\nrole_read-token=Číst token\nrole_offline-access=Přístup offline\nclient_account=Účet\nclient_security-admin-console=Security Admin Console\nclient_admin-cli=Admin CLI\nclient_realm-management=Spravovat Realm\nclient_broker=Broker\n\ninvalidUserMessage=Nesprávné jméno nebo heslo.\ninvalidEmailMessage=Nesprávný e-mail.\naccountDisabledMessage=Účet je neplatný, kontaktujte administrátora.\naccountTemporarilyDisabledMessage=Účet je dočasně deaktivován, kontaktujte administrátora nebo zkuste později.\nexpiredCodeMessage=Platnost přihlášení vypršela. Přihlašte se znovu.\nexpiredActionMessage=Akce vypršela. Pokračujte přihlášením.\nexpiredActionTokenNoSessionMessage=Akce vypršela.\nexpiredActionTokenSessionExistsMessage=Akce vypršela. Začněte znovu\n\nmissingFirstNameMessage=Zadejte prosím jméno.\nmissingLastNameMessage=Zadejte prosím příjmení.\nmissingEmailMessage=Zadejte prosím e-mail.\nmissingUsernameMessage=Zadejte prosím uživatelské jméno.\nmissingPasswordMessage=Zadejte prosím heslo.\nmissingTotpMessage=Zadejte prosím kód ověřovatele.\nnotMatchPasswordMessage=Hesla se neshodují.\n\ninvalidPasswordExistingMessage=Neplatné existující heslo.\ninvalidPasswordBlacklistedMessage=Neplatné heslo: heslo je na černé listině.\ninvalidPasswordConfirmMessage=Potvrzení hesla se neshoduje.\ninvalidTotpMessage=Neplatný kód ověřování.\n\nusernameExistsMessage=Uživatelské jméno již existuje.\nemailExistsMessage=Email již existuje.\n\nfederatedIdentityExistsMessage=Uživatel s {0} {1} již existuje. Přihlaste se ke správě účtu a propojte účet.\n\nconfirmLinkIdpTitle=Účet již existuje\nfederatedIdentityConfirmLinkMessage=Uživatel s {0} {1} již existuje. Jak chcete pokračovat?\nfederatedIdentityConfirmReauthenticateMessage=Ověřte jako {0} k propojení účtu {1}\nconfirmLinkIdpReviewProfile=Zkontrolujte profil\nconfirmLinkIdpContinue=Přidat do existujícího účtu\n\nconfigureTotpMessage=Chcete-li aktivovat účet, musíte nastavit službu Mobile Authenticator.\nupdateProfileMessage=Pro aktivaci účtu potřebujete aktualizovat svůj uživatelský profil.\nupdatePasswordMessage=Pro aktivaci účtu musíte provést aktualizaci hesla.\nresetPasswordMessage=Je třeba změnit heslo.\nverifyEmailMessage=Pro aktivaci účtu potřebujete ověřit vaši e-mailovou adresu.\nlinkIdpMessage=Potřebujete-li ověřit vaši e-mailovou adresu, propojte svůj účet s {0}.\n\nemailSentMessage=Měli byste brzy obdržet e-mail s dalšími pokyny.\nemailSendErrorMessage=Nepodařilo se odeslat e-mail, zkuste to prosím později.\n\naccountUpdatedMessage=Váš účet byl aktualizován.\naccountPasswordUpdatedMessage=Vaše heslo bylo aktualizováno.\n\nnoAccessMessage=Žádný přístup\n\ninvalidPasswordMinLengthMessage=Neplatné heslo: minimální délka {0}.\ninvalidPasswordMinDigitsMessage=Neplatné heslo: musí obsahovat nejméně {0} číslic.\ninvalidPasswordMinLowerCaseCharsMessage=Neplatné heslo: musí obsahovat minimálně {0} malé znaky.\ninvalidPasswordMinUpperCaseCharsMessage=Neplatné heslo: musí obsahovat nejméně {0} velká písmena.\ninvalidPasswordMinSpecialCharsMessage=Neplatné heslo: musí obsahovat nejméně {0} speciální znaky.\ninvalidPasswordNotUsernameMessage=Neplatné heslo: nesmí být totožné s uživatelským jménem.\ninvalidPasswordRegexPatternMessage=Neplatné heslo: neshoduje se vzorem regulérního výrazu.\ninvalidPasswordHistoryMessage=Neplatné heslo: Nesmí se rovnat žádnému z posledních {0} hesel.\ninvalidPasswordGenericMessage=Neplatné heslo: nové heslo neodpovídá pravidlům hesla.\n\nfailedToProcessResponseMessage=Nepodařilo se zpracovat odpověď\nhttpsRequiredMessage=Požadováno HTTPS\nrealmNotEnabledMessage=Realm není povolen\ninvalidRequestMessage=Neplatná žádost\nfailedLogout=Odhlášení se nezdařilo\nunknownLoginRequesterMessage=Neznámý žadatel o přihlášení\nloginRequesterNotEnabledMessage=Žadatel o přihlášení není povolen\nbearerOnlyMessage=Aplikace bearer-only nemohou iniciovat přihlašování pomocí prohlížeče\nstandardFlowDisabledMessage=Klient nesmí iniciovat přihlašování prohlížeče s daným typem odpovědi. Standardní tok je pro klienta zakázán.\nimplicitFlowDisabledMessage=Klient nesmí iniciovat přihlašování prohlížeče s daným typem odpovědi. Implicitní tok je pro klienta zakázán.\ninvalidRedirectUriMessage=Neplatné redirect uri\nunsupportedNameIdFormatMessage=Nepodporovaný NameIDFormat\ninvalidRequesterMessage=Neplatný žadatel\nregistrationNotAllowedMessage=Registrace není povolena\nresetCredentialNotAllowedMessage=Reset Credential není povoleno\n\npermissionNotApprovedMessage=Oprávnění nebylo schváleno.\nnoRelayStateInResponseMessage=Neexistuje relay state relé v odpovědi od poskytovatele totožnosti.\ninsufficientPermissionMessage=Nedostatečná oprávnění k propojení identit.\ncouldNotProceedWithAuthenticationRequestMessage=Nemohu pokračovat s žádostí o ověření poskytovateli totožnosti.\ncouldNotObtainTokenMessage=Nelze získat token od poskytovatele totožnosti.\nunexpectedErrorRetrievingTokenMessage=Neočekávaná chyba při načítání tokenu od poskytovatele identity.\nunexpectedErrorHandlingResponseMessage=Neočekávaná chyba při zpracování odpovědi od poskytovatele identity.\nidentityProviderAuthenticationFailedMessage=Ověření selhalo. Nelze ověřit s poskytovatelem identity.\nidentityProviderDifferentUserMessage=Ověřeno jako {0}, ale mělo by být ověřeno jako {1}\ncouldNotSendAuthenticationRequestMessage=Nelze odeslat žádost o ověření poskytovateli totožnosti.\nunexpectedErrorHandlingRequestMessage=Neočekávaná chyba při zpracování požadavku na ověření poskytovateli totožnosti.\ninvalidAccessCodeMessage=Neplatný přístupový kód.\nsessionNotActiveMessage=Session není aktivní.\ninvalidCodeMessage=Došlo k chybě, přihlaste se znovu prostřednictvím své aplikace.\nidentityProviderUnexpectedErrorMessage=Neočekávaná chyba při ověřování s poskytovatelem identity\nidentityProviderNotFoundMessage=Nelze najít poskytovatele identity s identifikátorem.\nidentityProviderLinkSuccess=Úspěšně jste ověřili svůj e-mail. Vraťte se prosím zpět do původního prohlížeče a pokračujte tam s přihlašovacími údaji.\nstaleCodeMessage=Tato stránka již není platná. Vraťte se zpět do aplikace a přihlaste se znovu\nrealmSupportsNoCredentialsMessage=Realm nepodporuje žádný typ pověření.\nidentityProviderNotUniqueMessage=Oblast podporuje více poskytovatelů totožnosti. Nelze určit, s jakým zprostředkovatelem totožnosti se má ověřit.\nemailVerifiedMessage=Vaše e-mailová adresa byla ověřena.\nstaleEmailVerificationLink=Odkaz, na který jste klikli, je starý starý odkaz a již není platný. Možná jste již ověřili svůj e-mail?\nidentityProviderAlreadyLinkedMessage=Federovaná identita vrácená {0} je již propojena s jiným uživatelem.\nconfirmAccountLinking=Potvrďte propojení účtu {0} poskytovatele totožnosti {1} s vaším účtem.\nconfirmEmailAddressVerification=Potvrďte platnost e-mailové adresy {0}.\nconfirmExecutionOfActions=Proveďte následující akce\n\nbackToApplication=&laquo; Zpět na aplikaci\nmissingParameterMessage=Chybějící parametry \\: {0}\nclientNotFoundMessage=Klient nebyl nalezen.\nclientDisabledMessage=Klient byl zneplatněn.\ninvalidParameterMessage=Neplatný parametr : {0}\nalreadyLoggedIn=Jste již přihlášeni.\ndifferentUserAuthenticated=Jste již v této relaci ověřeni jako jiný uživatel '' {0} ''. Nejdříve se odhlašte.\nbrokerLinkingSessionExpired=Požadované propojení účtu brokerů, ale aktuální relace již není platná.\nproceedWithAction=&raquo; Klikněte zde pro pokračování\n\nrequiredAction.CONFIGURE_TOTP=Konfigurovat OTP\nrequiredAction.terms_and_conditions=Smluvní podmínky\nrequiredAction.UPDATE_PASSWORD=Aktualizace hesla\nrequiredAction.UPDATE_PROFILE=Aktualizovat profil\nrequiredAction.VERIFY_EMAIL=Ověřit e-mail\n\np3pPolicy=CP=\"Toto není politika P3P!\""
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_de.properties",
    "content": "doLogIn=Anmelden\ndoRegister=Registrieren\ndoCancel=Abbrechen\ndoSubmit=Absenden\ndoYes=Ja\ndoNo=Nein\ndoContinue=Weiter\ndoIgnore=Ignorieren\ndoAccept=Annehmen\ndoDecline=Ablehnen\ndoForgotPassword=Passwort vergessen?\ndoClickHere=Hier klicken\ndoImpersonate=Identit\\u00E4tswechsel\nkerberosNotConfigured=Kerberos ist nicht konfiguriert.\nkerberosNotConfiguredTitle=Kerberos nicht konfiguriert\nbypassKerberosDetail=Sie sind entweder nicht mit Kerberos angemeldet, oder Ihr Browser ist nicht f\\u00FCr eine Anmeldung mit Kerberos konfiguriert. Bitte klicken Sie auf Weiter, damit Sie sich auf eine andere Art anmelden k\\u00F6nnen\nkerberosNotSetUp=Kerberos ist nicht konfiguriert. Sie k\\u00F6nnen sich damit nicht anmelden.\nregisterTitle=Registrierung\nregisterWithTitle=Registrierung bei {0}\nregisterWithTitleHtml={0}\nloginTitle=Anmeldung bei {0}\nloginTitleHtml={0}\nimpersonateTitle={0} Identit\\u00E4tswechsel\nimpersonateTitleHtml=<strong>{0}</strong> Identit\\u00E4tswechsel\nrealmChoice=Realm\nunknownUser=Unbekannter Benutzer\nloginTotpTitle=Mehrfachauthentifizierung konfigurieren\nloginProfileTitle=Benutzerkonto Informationen aktualisieren\nloginTimeout=Sie haben zu lange gebraucht, um sich anzumelden. Bitte versuchen Sie es erneut.\noauthGrantTitle=OAuth gew\\u00E4hren\noauthGrantTitleHtml={0}\nerrorTitle=Es ist ein Fehler aufgetreten.\nerrorTitleHtml=Es ist ein Fehler aufgetreten.\nemailVerifyTitle=E-Mail verifizieren\nemailForgotTitle=Passwort vergessen?\nupdatePasswordTitle=Passwort aktualisieren\ncodeSuccessTitle=Erfolgreicher Code\ncodeErrorTitle=Fehlercode\\: {0}\n\ntermsTitle=Bedingungen und Konditionen\ntermsTitleHtml=Bedingungen und Konditionen\ntermsText=<p>Zu definierende Bedingungen und Konditionen</p>\n\nrecaptchaFailed=Ung\\u00FCltiges Recaptcha\nrecaptchaNotConfigured=Recaptcha Eingabe ist erforderlich, jedoch noch nicht konfiguriert.\nconsentDenied=Zustimmung verweigert.\n\nnoAccount=Neuer Benutzer?\nusername=Benutzername\nusernameOrEmail=Benutzername oder E-Mail\nfirstName=Vorname\ngivenName=Vorname\nfullName=Voller Name\nlastName=Nachname\nfamilyName=Nachname\nemail=E-Mail\npassword=Passwort\npasswordConfirm=Passwort best\\u00E4tigen\npasswordNew=Neues Passwort\npasswordNewConfirm=Neues Passwort best\\u00E4tigen\nrememberMe=Angemeldet bleiben\nauthenticatorCode=One-time Code\naddress=Adresse\nstreet=Stra\\u00DFe\nlocality=Stadt oder Ortschaft\nregion=Staat, Provinz, Region\npostal_code=PLZ\ncountry=Land\nemailVerified=E-Mail verifiziert\ngssDelegationCredential=GSS delegierte Berechtigung\n\nloginTotpStep1=Installieren Sie eine der folgenden Applikationen auf Ihrem Smartphone:\nloginTotpStep2=\\u00D6ffnen Sie die Applikation und scannen Sie den Barcode.\nloginTotpStep3=Geben Sie den von der Applikation generierten One-time Code ein und klicken Sie auf Speichern.\nloginTotpManualStep2=\\u00D6ffnen Sie die Applikation und geben Sie den folgenden Schl\\u00FCssel ein.\nloginTotpManualStep3=Verwenden Sie die folgenden Konfigurationswerte, falls Sie diese f\\u00FCr die Applikation anpassen k\\u00F6nnen:\nloginTotpUnableToScan=Sie k\\u00F6nnen den Barcode nicht scannen?\nloginTotpScanBarcode=Barcode scannen?\nloginOtpOneTime=One-time code\nloginTotpType=Typ\nloginTotpAlgorithm=Algorithmus\nloginTotpDigits=Ziffern\nloginTotpInterval=Intervall\nloginTotpCounter=Z\\u00E4hler\n\nloginTotp.totp=zeitbasiert (time-based)\nloginTotp.hotp=z\\u00E4hlerbasiert (counter-based)\n\n\noauthGrantRequest=Wollen Sie diese Zugriffsrechte gew\\u00E4hren?\ninResource=in\n\nemailVerifyInstruction1=Eine E-Mail mit weiteren Anweisungen wurde an Sie versendet.\nemailVerifyInstruction2=Falls Sie keine E-Mail erhalten haben, dann k\\u00F6nnen Sie\nemailVerifyInstruction3=um eine neue E-Mail versenden zu lassen.\n\nemailLinkIdpTitle={0} verkn\\u00FCpfen\nemailLinkIdp1=Eine E-Mail mit weiteren Anweisungen um {0} Konto {1} mit Ihrem {2} Konto zu verkn\\u00FCpfen wurde an Sie versendet.\nemailLinkIdp2=Sie haben keinen Code in Ihrer E-Mail erhalten?\nemailLinkIdp3=um eine neue E-Mail versenden zu lassen.\nemailLinkIdp4=Wenn Sie die E-Mail bereits in einem anderen Browser verifiziert haben\nemailLinkIdp5=um fortzufahren.\n\nbackToLogin=&laquo; Zur\\u00FCck zur Anmeldung\n\nemailInstruction=Geben Sie Ihren Benutzernamen oder Ihre E-Mail Adresse ein und klicken Sie auf Absenden. Danach werden wir Ihnen eine E-Mail mit weiteren Instruktionen zusenden.\n\ncopyCodeInstruction=Bitte kopieren Sie den folgenden Code und f\\u00FCgen ihn in die Applikation ein\\:\n\npageExpiredTitle=Diese Seite ist nicht mehr g\\u00FCltig.\npageExpiredMsg1=Um den Anmeldevorgang neu zu starten\npageExpiredMsg2=Um den Anmeldevorgang fortzusetzen\n\npersonalInfo=Pers\\u00F6nliche Informationen:\nrole_admin=Admin\nrole_realm-admin=Realm Admin\nrole_create-realm=Realm erstellen\nrole_create-client=Client erstellen\nrole_view-realm=Realm ansehen\nrole_view-users=Benutzer ansehen\nrole_view-applications=Applikationen ansehen\nrole_view-clients=Clients ansehen\nrole_view-events=Events ansehen\nrole_view-identity-providers=Identity Provider ansehen\nrole_manage-realm=Realm verwalten\nrole_manage-users=Benutzer verwalten\nrole_manage-applications=Applikationen verwalten\nrole_manage-identity-providers=Identity Provider verwalten\nrole_manage-clients=Clients verwalten\nrole_manage-events=Events verwalten\nrole_view-profile=Profile ansehen\nrole_manage-account=Profile verwalten\nrole_manage-account-links=Profil-Links verwalten\nrole_read-token=Token lesen\nrole_offline-access=Offline-Zugriff\nclient_account=Clientkonto\nclient_security-admin-console=Security Adminkonsole\nclient_admin-cli=Admin CLI\nclient_realm-management=Realm-Management\nclient_broker=Broker\n\ninvalidUserMessage=Ung\\u00FCltiger Benutzername oder Passwort.\ninvalidEmailMessage=Ung\\u00FCltige E-Mail-Adresse.\naccountDisabledMessage=Ihr Benutzerkonto ist gesperrt, bitte kontaktieren Sie den Admin.\naccountTemporarilyDisabledMessage=Ihr Benutzerkonto ist tempor\\u00E4r gesperrt. Bitte kontaktieren Sie den Admin oder versuchen Sie es sp\\u00E4ter noch einmal.\nexpiredCodeMessage=Zeit\\u00FCberschreitung bei der Anmeldung. Bitte melden Sie sich erneut an.\nexpiredActionMessage=Die Aktion ist nicht mehr g\\u00FCltig. Bitte fahren Sie nun mit der Anmeldung fort.\nexpiredActionTokenNoSessionMessage=Die Aktion ist nicht mehr g\\u00FCltig.\nexpiredActionTokenSessionExistsMessage=Die Aktion ist nicht mehr g\\u00FCltig. Bitte fangen Sie noch einmal an.\n\nmissingFirstNameMessage=Bitte geben Sie einen Vornamen ein.\nmissingLastNameMessage=Bitte geben Sie einen Nachnamen ein.\nmissingEmailMessage=Bitte geben Sie eine E-Mail-Adresse ein.\nmissingUsernameMessage=Bitte geben Sie einen Benutzernamen ein.\nmissingPasswordMessage=Bitte geben Sie ein Passwort ein.\nmissingTotpMessage=Bitte geben Sie den One-time Code ein.\nnotMatchPasswordMessage=Passw\\u00F6rter sind nicht identisch.\n\ninvalidPasswordExistingMessage=Das aktuelle Passwort ist ung\\u00FCltig.\ninvalidPasswordBlacklistedMessage=Ung\\u00FCltiges Passwort: Das Passwort steht auf der Blockliste (schwarzen Liste).\ninvalidPasswordConfirmMessage=Die Passwortbest\\u00E4tigung ist nicht identisch.\ninvalidTotpMessage=Ung\\u00FCltiger One-time Code.\n\nusernameExistsMessage=Benutzername existiert bereits.\nemailExistsMessage=E-Mail existiert bereits.\n\nfederatedIdentityExistsMessage=Ein Benutzer mit {0} {1} existiert bereits. Bitte melden Sie sich an der Benutzerkontoverwaltung an um den Benutzer zu verkn\\u00FCpfen.\n\nconfirmLinkIdpTitle=Das Benutzerkonto existiert bereits.\nfederatedIdentityConfirmLinkMessage=Ein Benutzer mit {0} {1} existiert bereits. Wie m\\u00F6chten Sie fortfahren?\nfederatedIdentityConfirmReauthenticateMessage=Anmelden um das Benutzerkonto mit {0} zu verkn\\u00FCpfen\nconfirmLinkIdpReviewProfile=Benutzerkonto \\u00FCberpr\\u00FCfen\nconfirmLinkIdpContinue=Zu einem bestehenden Benutzerkonto hinzuf\\u00FCgen\n\nconfigureTotpMessage=Sie m\\u00FCssen eine Mehrfachauthentifizierung einrichten, um das Benutzerkonto zu aktivieren.\nupdateProfileMessage=Sie m\\u00FCssen Ihr Benutzerkonto aktualisieren, um das Benutzerkonto zu aktivieren.\nupdatePasswordMessage=Sie m\\u00FCssen Ihr Passwort \\u00E4ndern, um das Benutzerkonto zu aktivieren.\nresetPasswordMessage=Sie m\\u00FCssen Ihr Passwort \\u00E4ndern.\nverifyEmailMessage=Sie m\\u00FCssen Ihre E-Mail-Adresse verifizieren, um das Benutzerkonto zu aktivieren.\nlinkIdpMessage=Sie m\\u00FCssen Ihre E-Mail-Adresse verifizieren, um Ihr Benutzerkonto mit {0} zu verkn\\u00FCpfen.\n\nemailSentMessage=Sie sollten in K\\u00FCrze eine E-Mail mit weiteren Instruktionen erhalten.\nemailSendErrorMessage=Die E-Mail konnte nicht versendet werden. Bitte versuchen Sie es sp\\u00E4ter nochmal einmal.\n\naccountUpdatedMessage=Ihr Benutzerkonto wurde aktualisiert.\naccountPasswordUpdatedMessage=Ihr Passwort wurde aktualisiert.\n\nnoAccessMessage=Kein Zugriff\n\ninvalidPasswordMinLengthMessage=Ung\\u00FCltiges Passwort: Es muss mindestens {0} Zeichen lang sein.\ninvalidPasswordMinDigitsMessage=Ung\\u00FCltiges Passwort: Es muss mindestens {0} Zahl(en) beinhalten.\ninvalidPasswordMinLowerCaseCharsMessage=Ung\\u00FCltiges Passwort\\: Es muss mindestens {0} Kleinbuchstaben beinhalten.\ninvalidPasswordMinUpperCaseCharsMessage=Ung\\u00FCltiges Passwort: Es muss mindestens {0} Gro\\u00DFbuchstaben beinhalten.\ninvalidPasswordMinSpecialCharsMessage=Ung\\u00FCltiges Passwort: Es muss mindestens {0} Sonderzeichen beinhalten.\ninvalidPasswordNotUsernameMessage=Ung\\u00FCltiges Passwort: Es darf nicht gleich sein wie der Benutzername.\ninvalidPasswordRegexPatternMessage=Ung\\u00FCltiges Passwort: Es entspricht nicht dem Regex-Muster.\ninvalidPasswordHistoryMessage=Ung\\u00FCltiges Passwort: Es darf nicht einem der letzten {0} Passw\\u00F6rter entsprechen.\ninvalidPasswordGenericMessage=Ung\\u00FCltiges Passwort: Es verletzt die Passwort-Richtlinien.\n\nfailedToProcessResponseMessage=Konnte Antwort nicht verarbeiten.\nhttpsRequiredMessage=HTTPS erforderlich.\nrealmNotEnabledMessage=Realm nicht aktiviert.\ninvalidRequestMessage=Ung\\u00FCltiger Request.\nfailedLogout=Logout fehlgeschlagen.\nunknownLoginRequesterMessage=Ung\\u00FCltiger Login Requester.\nloginRequesterNotEnabledMessage=Login Requester nicht aktiviert.\nbearerOnlyMessage=Bearer-only Clients k\\u00F6nnen sich nicht via Browser anmelden.\nstandardFlowDisabledMessage=Client darf sich mit diesem response_type nicht via Browser anmelden. Standard Flow ist f\\u00FCr diesen Client deaktiviert.\nimplicitFlowDisabledMessage=Client darf sich mit diesem response_type nicht via Browser anmelden. Implicit Flow ist f\\u00FCr diesen Client deaktiviert.\ninvalidRedirectUriMessage=Ung\\u00FCltige Redirect Uri.\nunsupportedNameIdFormatMessage=Nicht unterst\\u00FCtztes NameIDFormat.\ninvalidRequesterMessage=Ung\\u00FCltiger Requester.\nregistrationNotAllowedMessage=Registrierung nicht erlaubt.\nresetCredentialNotAllowedMessage=Reset Credential nicht erlaubt.\n\npermissionNotApprovedMessage=Berechtigung nicht best\\u00E4tigt.\nnoRelayStateInResponseMessage=Kein Relay State in der Antwort von Identity Provider.\ninsufficientPermissionMessage=Nicht gen\\u00FCgend Rechte, um die Identit\\u00E4t zu verkn\\u00FCpfen.\ncouldNotProceedWithAuthenticationRequestMessage=Konnte die Authentifizierungsanfrage nicht weiter verarbeiten.\ncouldNotObtainTokenMessage=Konnte kein Token vom Identity Provider erhalten.\nunexpectedErrorRetrievingTokenMessage=Unerwarteter Fehler w\\u00E4hrend dem Empfang des Tokens vom Identity Provider.\nunexpectedErrorHandlingResponseMessage=Unerwarteter Fehler w\\u00E4hrend der Bearbeitung der Antwort vom Identity Provider.\nidentityProviderAuthenticationFailedMessage=Authentifizierung fehlgeschlagen. Authentifizierung mit dem Identity Provider nicht m\\u00F6glich.\ncouldNotSendAuthenticationRequestMessage=Konnte Authentifizierungsanfrage nicht an den Identity Provider senden.\nunexpectedErrorHandlingRequestMessage=Unerwarteter Fehler w\\u00E4hrend der Bearbeitung der Anfrage an den Identity Provider.\ninvalidAccessCodeMessage=Ung\\u00FCltiger Access-Code.\nsessionNotActiveMessage=Session nicht aktiv.\ninvalidCodeMessage=Ung\\u00FCltiger Code, bitte melden Sie sich erneut \\u00FCber die Applikation an.\nidentityProviderUnexpectedErrorMessage=Unerwarteter Fehler w\\u00E4hrend der Authentifizierung mit dem Identity Provider.\nidentityProviderNotFoundMessage=Konnte keinen Identity Provider zu der Identit\\u00E4t finden.\nidentityProviderLinkSuccess=Sie haben Ihre E-Mail-Adresse erfolgreich verifiziert. Bitte kehren Sie zu Ihrem urspr\\u00FCnglichen Browser zur\\u00FCck und fahren Sie dort mit der Anmeldung fort. \nstaleCodeMessage=Diese Seite ist nicht mehr g\\u00FCltig, bitte kehren Sie zu Ihrer Applikation zur\\u00FCk und melden Sie sich erneut an.\nrealmSupportsNoCredentialsMessage=Realm unterst\\u00FCtzt keine Credential Typen.\nemailVerifiedMessage=Ihre E-Mail-Adresse wurde erfolgreich verifiziert.\nstaleEmailVerificationLink=Der von Ihnen angeklickte Link ist nicht mehr g\\u00FCltig. Haben Sie Ihre E-Mail-Adresse eventuell bereits verifiziert?\nidentityProviderAlreadyLinkedMessage=Die Identit\\u00E4t welche von dem Identity Provider zur\\u00FCckgegeben wurde ist bereits mit einem anderen Benutzer verkn\\u00FCpft.\nidentityProviderNotUniqueMessage=Der Realm unterst\\u00FCtzt mehrere Identity Provider. Es konnte kein eindeutiger Identity Provider zum Authentifizieren gew\\u00E4hlt werden.\nconfirmAccountLinking=Best\\u00E4tigen Sie den Account {0} des Identity Provider {1} mit Ihrem Account zu verkn\\u00FCpfen.\nconfirmEmailAddressVerification=Best\\u00E4tigen Sie, dass die E-Mail-Adresse {0} g\\u00FCltig ist.\nconfirmExecutionOfActions=F\\u00FChren Sie die folgende(n) Aktion(en) aus\n\nbackToApplication=&laquo; Zur\\u00FCck zur Applikation\nmissingParameterMessage=Fehlender Parameter\\: {0}\nclientNotFoundMessage=Client nicht gefunden.\nclientDisabledMessage=Client deaktiviert.\ninvalidParameterMessage=Ung\\u00FCltiger Parameter\\: {0}\nalreadyLoggedIn=Sie sind bereits angemeldet.\ndifferentUserAuthenticated=Sie sind in dieser Session bereits mit einem anderen Benutzer ''{0}'' angemeldet. Bitte melden Sie sich zuerst ab.\nbrokerLinkingSessionExpired=Broker Account Linking angefordert; Ihre Session ist allerdings nicht mehr g\\u00FCltig.\nproceedWithAction=&raquo; Klicken Sie hier um fortzufahren\n\nrequiredAction.CONFIGURE_TOTP=Mehrfachauthentifizierung konfigurieren\nrequiredAction.terms_and_conditions=Bedingungen und Konditionen\nrequiredAction.UPDATE_PASSWORD=Passwort aktualisieren\nrequiredAction.UPDATE_PROFILE=Profil aktualisieren\nrequiredAction.VERIFY_EMAIL=E-Mail-Adresse verifizieren\n\ndoX509Login=Sie werden angemeldet als\\:\nclientCertificate=X509 Client Zertifikat\\:\nnoCertificate=[Kein Zertifikat]\n\n\npageNotFound=Seite nicht gefunden\ninternalServerError=Es ist ein interner Server-Fehler aufgetreten\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_en.properties",
    "content": "doLogIn=Log In\ndoRegister=Register\ndoCancel=Cancel\ndoSubmit=Submit\ndoBack=Back\ndoYes=Yes\ndoNo=No\ndoContinue=Continue\ndoIgnore=Ignore\ndoAccept=Accept\ndoDecline=Decline\ndoForgotPassword=Forgot Password?\ndoClickHere=Click here\ndoImpersonate=Impersonate\ndoTryAgain=Try again\ndoTryAnotherWay=Try Another Way\nkerberosNotConfigured=Kerberos Not Configured\nkerberosNotConfiguredTitle=Kerberos Not Configured\nbypassKerberosDetail=Either you are not logged in by Kerberos or your browser is not set up for Kerberos login.  Please click continue to login in through other means\nkerberosNotSetUp=Kerberos is not set up.  You cannot login.\nregisterTitle=Register\nloginTitle=Log in to {0}\nloginTitleHtml={0}\nimpersonateTitle={0} Impersonate User\nimpersonateTitleHtml=<strong>{0}</strong> Impersonate User\nrealmChoice=Realm\nunknownUser=Unknown user\nloginTotpTitle=Mobile Authenticator Setup\nloginProfileTitle=Update Account Information\nloginTimeout=Your login attempt timed out.  Login will start from the beginning.\noauthGrantTitle=Grant Access to {0}\noauthGrantTitleHtml={0}\nerrorTitle=We are sorry...\nerrorTitleHtml=We are <strong>sorry</strong> ...\nemailVerifyTitle=Email verification\nemailForgotTitle=Forgot Your Password?\nupdatePasswordTitle=Update password\ncodeSuccessTitle=Success code\ncodeErrorTitle=Error code\\: {0}\ndisplayUnsupported=Requested display type unsupported\nbrowserRequired=Browser required to login\nbrowserContinue=Browser required to complete login\nbrowserContinuePrompt=Open browser and continue login? [y/n]:\nbrowserContinueAnswer=y\n\n\ntermsTitle=Terms and Conditions\ntermsText=<p>Terms and conditions to be defined</p>\ntermsPlainText=Terms and conditions to be defined.\n\nrecaptchaFailed=Invalid Recaptcha\nrecaptchaNotConfigured=Recaptcha is required, but not configured\nconsentDenied=Consent denied.\n\nnoAccount=New user?\nusername=Username\nusernameOrEmail=Username or email\nfirstName=First name\ngivenName=Given name\nfullName=Full name\nlastName=Last name\nfamilyName=Family name\nemail=Email\npassword=Password\npasswordConfirm=Confirm password\npasswordNew=New Password\npasswordNewConfirm=New Password confirmation\nrememberMe=Remember me\nauthenticatorCode=One-time code\naddress=Address\nstreet=Street\nlocality=City or Locality\nregion=State, Province, or Region\npostal_code=Zip or Postal code\ncountry=Country\nemailVerified=Email verified\ngssDelegationCredential=GSS Delegation Credential\n\nprofileScopeConsentText=User profile\nemailScopeConsentText=Email address\naddressScopeConsentText=Address\nphoneScopeConsentText=Phone number\nofflineAccessScopeConsentText=Offline Access\nsamlRoleListScopeConsentText=My Roles\nrolesScopeConsentText=User roles\n\nrestartLoginTooltip=Restart login\n\nloginTotpIntro=You need to set up a One Time Password generator to access this account\nloginTotpStep1=Install one of the following applications on your mobile:\nloginTotpStep2=Open the application and scan the barcode:\nloginTotpStep3=Enter the one-time code provided by the application and click Submit to finish the setup.\nloginTotpStep3DeviceName=Provide a Device Name to help you manage your OTP devices.\nloginTotpManualStep2=Open the application and enter the key:\nloginTotpManualStep3=Use the following configuration values if the application allows setting them:\nloginTotpUnableToScan=Unable to scan?\nloginTotpScanBarcode=Scan barcode?\nloginCredential=Credential\nloginOtpOneTime=One-time code\nloginTotpType=Type\nloginTotpAlgorithm=Algorithm\nloginTotpDigits=Digits\nloginTotpInterval=Interval\nloginTotpCounter=Counter\nloginTotpDeviceName=Device Name\n\nloginTotp.totp=Time-based\nloginTotp.hotp=Counter-based\n\nloginChooseAuthenticator=Select login method\n\noauthGrantRequest=Do you grant these access privileges?\ninResource=in\n\nemailVerifyInstruction1=An email with instructions to verify your email address has been sent to you.\nemailVerifyInstruction2=Haven''t received a verification code in your email?\nemailVerifyInstruction3=to re-send the email.\n\nemailLinkIdpTitle=Link {0}\nemailLinkIdp1=An email with instructions to link {0} account {1} with your {2} account has been sent to you.\nemailLinkIdp2=Haven''t received a verification code in your email?\nemailLinkIdp3=to re-send the email.\nemailLinkIdp4=If you already verified the email in different browser\nemailLinkIdp5=to continue.\n\nbackToLogin=&laquo; Back to Login\n\nemailInstruction=Enter your username or email address and we will send you instructions on how to create a new password.\n\ncopyCodeInstruction=Please copy this code and paste it into your application:\n\npageExpiredTitle=Page has expired\npageExpiredMsg1=To restart the login process\npageExpiredMsg2=To continue the login process\n\npersonalInfo=Personal Info:\nrole_admin=Admin\nrole_realm-admin=Realm Admin\nrole_create-realm=Create realm\nrole_create-client=Create client\nrole_view-realm=View realm\nrole_view-users=View users\nrole_view-applications=View applications\nrole_view-clients=View clients\nrole_view-events=View events\nrole_view-identity-providers=View identity providers\nrole_manage-realm=Manage realm\nrole_manage-users=Manage users\nrole_manage-applications=Manage applications\nrole_manage-identity-providers=Manage identity providers\nrole_manage-clients=Manage clients\nrole_manage-events=Manage events\nrole_view-profile=View profile\nrole_manage-account=Manage account\nrole_manage-account-links=Manage account links\nrole_read-token=Read token\nrole_offline-access=Offline access\nclient_account=Account\nclient_account-console=Account Console\nclient_security-admin-console=Security Admin Console\nclient_admin-cli=Admin CLI\nclient_realm-management=Realm Management\nclient_broker=Broker\n\nrequiredFields=Required fields\n\ninvalidUserMessage=Invalid username or password.\ninvalidUsernameMessage=Invalid username.\ninvalidUsernameOrEmailMessage=Invalid username or email.\ninvalidPasswordMessage=Invalid password.\ninvalidEmailMessage=Invalid email address.\naccountDisabledMessage=Account is disabled, contact your administrator.\naccountTemporarilyDisabledMessage=Account is temporarily disabled; contact your administrator or retry later.\nexpiredCodeMessage=Login timeout. Please log in again.\nexpiredActionMessage=Action expired. Please continue with login now.\nexpiredActionTokenNoSessionMessage=Action expired.\nexpiredActionTokenSessionExistsMessage=Action expired. Please start again.\n\nmissingFirstNameMessage=Please specify first name.\nmissingLastNameMessage=Please specify last name.\nmissingEmailMessage=Please specify email.\nmissingUsernameMessage=Please specify username.\nmissingPasswordMessage=Please specify password.\nmissingTotpMessage=Please specify authenticator code.\nmissingTotpDeviceNameMessage=Please specify device name.\nnotMatchPasswordMessage=Passwords don''t match.\n\ninvalidPasswordExistingMessage=Invalid existing password.\ninvalidPasswordBlacklistedMessage=Invalid password: password is blacklisted.\ninvalidPasswordConfirmMessage=Password confirmation doesn''t match.\ninvalidTotpMessage=Invalid authenticator code.\n\nusernameExistsMessage=Username already exists.\nemailExistsMessage=Email already exists.\n\nfederatedIdentityExistsMessage=User with {0} {1} already exists. Please login to account management to link the account.\n\nconfirmLinkIdpTitle=Account already exists\nfederatedIdentityConfirmLinkMessage=User with {0} {1} already exists. How do you want to continue?\nfederatedIdentityConfirmReauthenticateMessage=Authenticate to link your account with {0}\nnestedFirstBrokerFlowMessage=The {0} user {1} is not linked to any known user.\nconfirmLinkIdpReviewProfile=Review profile\nconfirmLinkIdpContinue=Add to existing account\n\nconfigureTotpMessage=You need to set up Mobile Authenticator to activate your account.\nupdateProfileMessage=You need to update your user profile to activate your account.\nupdatePasswordMessage=You need to change your password to activate your account.\nresetPasswordMessage=You need to change your password.\nverifyEmailMessage=You need to verify your email address to activate your account.\nlinkIdpMessage=You need to verify your email address to link your account with {0}.\n\nemailSentMessage=You should receive an email shortly with further instructions.\nemailSendErrorMessage=Failed to send email, please try again later.\n\naccountUpdatedMessage=Your account has been updated.\naccountPasswordUpdatedMessage=Your password has been updated.\n\ndelegationCompleteHeader=Login Successful\ndelegationCompleteMessage=You may close this browser window and go back to your console application.\ndelegationFailedHeader=Login Failed\ndelegationFailedMessage=You may close this browser window and go back to your console application and try logging in again.\n\nnoAccessMessage=No access\n\ninvalidPasswordMinLengthMessage=Invalid password: minimum length {0}.\ninvalidPasswordMinDigitsMessage=Invalid password: must contain at least {0} numerical digits.\ninvalidPasswordMinLowerCaseCharsMessage=Invalid password: must contain at least {0} lower case characters.\ninvalidPasswordMinUpperCaseCharsMessage=Invalid password: must contain at least {0} upper case characters.\ninvalidPasswordMinSpecialCharsMessage=Invalid password: must contain at least {0} special characters.\ninvalidPasswordNotUsernameMessage=Invalid password: must not be equal to the username.\ninvalidPasswordRegexPatternMessage=Invalid password: fails to match regex pattern(s).\ninvalidPasswordHistoryMessage=Invalid password: must not be equal to any of last {0} passwords.\ninvalidPasswordGenericMessage=Invalid password: new password doesn''t match password policies.\n\nfailedToProcessResponseMessage=Failed to process response\nhttpsRequiredMessage=HTTPS required\nrealmNotEnabledMessage=Realm not enabled\ninvalidRequestMessage=Invalid Request\nfailedLogout=Logout failed\nunknownLoginRequesterMessage=Unknown login requester\nloginRequesterNotEnabledMessage=Login requester not enabled\nbearerOnlyMessage=Bearer-only applications are not allowed to initiate browser login\nstandardFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Standard flow is disabled for the client.\nimplicitFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Implicit flow is disabled for the client.\ninvalidRedirectUriMessage=Invalid redirect uri\nunsupportedNameIdFormatMessage=Unsupported NameIDFormat\ninvalidRequesterMessage=Invalid requester\nregistrationNotAllowedMessage=Registration not allowed\nresetCredentialNotAllowedMessage=Reset Credential not allowed\n\npermissionNotApprovedMessage=Permission not approved.\nnoRelayStateInResponseMessage=No relay state in response from identity provider.\ninsufficientPermissionMessage=Insufficient permissions to link identities.\ncouldNotProceedWithAuthenticationRequestMessage=Could not proceed with authentication request to identity provider.\ncouldNotObtainTokenMessage=Could not obtain token from identity provider.\nunexpectedErrorRetrievingTokenMessage=Unexpected error when retrieving token from identity provider.\nunexpectedErrorHandlingResponseMessage=Unexpected error when handling response from identity provider.\nidentityProviderAuthenticationFailedMessage=Authentication failed. Could not authenticate with identity provider.\ncouldNotSendAuthenticationRequestMessage=Could not send authentication request to identity provider.\nunexpectedErrorHandlingRequestMessage=Unexpected error when handling authentication request to identity provider.\ninvalidAccessCodeMessage=Invalid access code.\nsessionNotActiveMessage=Session not active.\ninvalidCodeMessage=An error occurred, please login again through your application.\nidentityProviderUnexpectedErrorMessage=Unexpected error when authenticating with identity provider\nidentityProviderNotFoundMessage=Could not find an identity provider with the identifier.\nidentityProviderLinkSuccess=You successfully verified your email. Please go back to your original browser and continue there with the login.\nstaleCodeMessage=This page is no longer valid, please go back to your application and log in again\nrealmSupportsNoCredentialsMessage=Realm does not support any credential type.\ncredentialSetupRequired=Cannot login, credential setup required.\nidentityProviderNotUniqueMessage=Realm supports multiple identity providers. Could not determine which identity provider should be used to authenticate with.\nemailVerifiedMessage=Your email address has been verified.\nstaleEmailVerificationLink=The link you clicked is an old stale link and is no longer valid.  Maybe you have already verified your email.\nidentityProviderAlreadyLinkedMessage=Federated identity returned by {0} is already linked to another user.\nconfirmAccountLinking=Confirm linking the account {0} of identity provider {1} with your account.\nconfirmEmailAddressVerification=Confirm validity of e-mail address {0}.\nconfirmExecutionOfActions=Perform the following action(s)\n\nlocale_ca=Catal\\u00E0\nlocale_cs=\\u010Ce\\u0161tina\nlocale_de=Deutsch\nlocale_en=English\nlocale_es=Espa\\u00F1ol\nlocale_fr=Fran\\u00E7ais\nlocale_it=Italiano\nlocale_ja=\\u65E5\\u672C\\u8A9E\nlocale_nl=Nederlands\nlocale_no=Norsk\nlocale_pl=Polish\nlocale_pt_BR=Portugu\\u00EAs (Brasil)\nlocale_pt-BR=Portugu\\u00EAs (Brasil)\nlocale_ru=\\u0420\\u0443\\u0441\\u0441\\u043A\\u0438\\u0439\nlocale_lt=Lietuvi\\u0173\nlocale_zh-CN=\\u4E2D\\u6587\\u7B80\\u4F53\nlocale_sk=Sloven\\u010Dina\nlocale_sv=Svenska\n\nbackToApplication=&laquo; Back to Application\nmissingParameterMessage=Missing parameters\\: {0}\nclientNotFoundMessage=Client not found.\nclientDisabledMessage=Client disabled.\ninvalidParameterMessage=Invalid parameter\\: {0}\nalreadyLoggedIn=You are already logged in.\ndifferentUserAuthenticated=You are already authenticated as different user ''{0}'' in this session. Please log out first.\nbrokerLinkingSessionExpired=Requested broker account linking, but current session is no longer valid.\nproceedWithAction=&raquo; Click here to proceed\n\nrequiredAction.CONFIGURE_TOTP=Configure OTP\nrequiredAction.terms_and_conditions=Terms and Conditions\nrequiredAction.UPDATE_PASSWORD=Update Password\nrequiredAction.UPDATE_PROFILE=Update Profile\nrequiredAction.VERIFY_EMAIL=Verify Email\n\ndoX509Login=You will be logged in as\\:\nclientCertificate=X509 client certificate\\:\nnoCertificate=[No Certificate]\n\n\npageNotFound=Page not found\ninternalServerError=An internal server error has occurred\n\nconsole-username=Username:\nconsole-password=Password:\nconsole-otp=One Time Password:\nconsole-new-password=New Password:\nconsole-confirm-password=Confirm Password:\nconsole-update-password=Update of your password is required.\nconsole-verify-email=You need to verify your email address.  We sent an email to {0} that contains a verification code.  Please enter this code into the input below.\nconsole-email-code=Email Code:\nconsole-accept-terms=Accept Terms? [y/n]:\nconsole-accept=y\n\n# Openshift messages\nopenshift.scope.user_info=User information\nopenshift.scope.user_check-access=User access information\nopenshift.scope.user_full=Full Access\nopenshift.scope.list-projects=List projects\n\n# SAML authentication\nsaml.post-form.title=Authentication Redirect\nsaml.post-form.message=Redirecting, please wait.\nsaml.post-form.js-disabled=JavaScript is disabled. We strongly recommend to enable it. Click the button below to continue. \n\n#authenticators\notp-display-name=Authenticator Application\notp-help-text=Enter a verification code from authenticator application.\npassword-display-name=Password\npassword-help-text=Log in by entering your password.\nauth-username-form-display-name=Username\nauth-username-form-help-text=Start log in by entering your username\nauth-username-password-form-display-name=Username and password\nauth-username-password-form-help-text=Log in by entering your username and password.\n\n# WebAuthn\nwebauthn-display-name=Security Key\nwebauthn-help-text=Use your security key to log in.\nwebauthn-passwordless-display-name=Security Key\nwebauthn-passwordless-help-text=Use your security key for passwordless log in.\nwebauthn-login-title=Security Key login\nwebauthn-registration-title=Security Key Registration\nwebauthn-available-authenticators=Available authenticators\n\n# WebAuthn Error\nwebauthn-error-title=Security Key Error\nwebauthn-error-registration=Failed to register your Security key.\nwebauthn-error-api-get=Failed to authenticate by the Security key.\nwebauthn-error-different-user=First authenticated user is not the one authenticated by the Security key.\nwebauthn-error-auth-verification=Security key authentication result is invalid.\nwebauthn-error-register-verification=Security key registration result is invalid.\nwebauthn-error-user-not-found=Unknown user authenticated by the Security key.\n\nidentity-provider-redirector=Connect with another Identity Provider\n\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_es.properties",
    "content": "doLogIn=Iniciar sesi\\u00F3n\ndoRegister=Reg\\u00EDstrate\ndoCancel=Cancelar\ndoSubmit=Enviar\ndoYes=S\\u00ED\ndoNo=No\ndoContinue=Continuar\ndoAccept=Aceptar\ndoDecline=Declinar\ndoForgotPassword=\\u00BFHas olvidado tu contrase\\u00F1a?\ndoClickHere=Haz clic aqu\\u00ED\ndoImpersonate=Personificar\nkerberosNotConfigured=Kerberos no configurado\nkerberosNotConfiguredTitle=Kerberos no configurado\nbypassKerberosDetail=O bien no est\\u00E1s identificado mediante Kerberos o tu navegador no est\\u00E1 configurado para identificarse mediante Kerberos. Por favor haz clic para identificarte por otro medio.\nkerberosNotSetUp=Kerberos no est\\u00E1 configurado. No puedes identificarte.\nregisterWithTitle=Reg\\u00EDstrate con {0}\nregisterWithTitleHtml={0}\nloginTitle=Inicia sesi\\u00F3n en {0}\nloginTitleHtml={0}\nimpersonateTitle={0}\\u00A0Personificar Usuario\nimpersonateTitleHtml=<strong>{0}</strong> Personificar Usuario\nrealmChoice=Dominio\nunknownUser=Usuario desconocido\nloginTotpTitle=Configura tu aplicaci\\u00F3n de identificaci\\u00F3n m\\u00F3vil\nloginProfileTitle=Actualiza la informaci\\u00F3n de tu cuenta\nloginTimeout=Has tardado demasiado en identificarte. Inicia de nuevo la identificaci\\u00F3n.\noauthGrantTitle=Concesi\\u00F3n OAuth\noauthGrantTitleHtml={0}\nerrorTitle=Lo sentimos...\nerrorTitleHtml=Lo <strong>sentimos</strong>...\nemailVerifyTitle=Verificaci\\u00F3n del email\nemailForgotTitle=\\u00BFHas olvidado tu contrase\\u00F1a?\nupdatePasswordTitle=Modificaci\\u00F3n de contrase\\u00F1a\ncodeSuccessTitle=C\\u00F3digo de \\u00E9xito\ncodeErrorTitle=C\\u00F3digo de error: {0}\n\ntermsTitle=T\\u00E9rminos y Condiciones\ntermsTitleHtml=T\\u00E9rminos y Condiciones\ntermsText=<p>T\\u00E9rmines y condiciones a definir</p>\n\nrecaptchaFailed=Reconocimiento de texto inv\\u00E1lido\nrecaptchaNotConfigured=El reconocimiento de texto es obligatorio pero no est\\u00E1 configurado\nconsentDenied=Consentimiento rechazado.\n\nnoAccount=\\u00BFUsuario nuevo?\nusername=Usuario\nusernameOrEmail=Usuario o email\nfirstName=Nombre\ngivenName=Nombre de pila\nfullName=Nombre completo\nlastName=Apellidos\nfamilyName=Apellidos\nemail=Email\npassword=Contrase\\u00F1a\npasswordConfirm=Confirma la contrase\\u00F1a\npasswordNew=Nueva contrase\\u00F1a\npasswordNewConfirm=Confirma la nueva contrase\\u00F1a\nrememberMe=Seguir conectado\nauthenticatorCode=C\\u00F3digo de identificaci\\u00F3n\naddress=Direcci\\u00F3n\nstreet=Calle\nlocality=Ciudad o Municipio\nregion=Estado, Provincia, o Regi\\u00F3n\npostal_code=C\\u00F3digo Postal\ncountry=Pa\\u00EDs\nemailVerified=Email verificado\ngssDelegationCredential=GSS Delegation Credential\n\nloginTotpStep1=Instala <a href=\\\"https://freeotp.github.io/\\\" target=\\\"_blank\\\">FreeOTP</a> o Google Authenticator en tu tel\\u00E9fono m\\u00F3vil. Ambas aplicaciones est\\u00E1n disponibles en <a href=\\\"https://play.google.com\\\">Google Play</a> y en la App Store de Apple.\nloginTotpStep2=Abre la aplicaci\\u00F3n y escanea el c\\u00F3digo o introduce la clave.\nloginTotpStep3=Introduce el c\\u00F3digo \\u00FAnico que te muestra la aplicaci\\u00F3n de autenticaci\\u00F3n y haz clic en Enviar para finalizar la configuraci\\u00F3n\nloginOtpOneTime=C\\u00F3digo de un solo uso\n\noauthGrantRequest=\\u00BFQuieres permitir estos privilegios de acceso?\ninResource=en\n\nemailVerifyInstruction1=Te hemos enviado un email con instrucciones para verificar tu email.\nemailVerifyInstruction2=\\u00BFNo has recibido un c\\u00F3digo de verificaci\\u00F3n en tu email?\nemailVerifyInstruction3=para reenviar el email.\n\nbackToLogin=&laquo; Volver a la identificaci\\u00F3n\n\nemailInstruction=Indica tu usuario o email y te enviaremos instrucciones indicando c\\u00F3mo generar una nueva contrase\\u00F1a.\n\ncopyCodeInstruction=Por favor, copia y pega este c\\u00F3digo en tu aplicaci\\u00F3n:\n\npersonalInfo=Informaci\\u00F3n personal:\nrole_admin=Admin\nrole_realm-admin=Administrador del dominio\nrole_create-realm=Crear dominio\nrole_create-client=Crear cliente\nrole_view-realm=Ver dominio\nrole_view-users=Ver usuarios\nrole_view-applications=Ver aplicaciones\nrole_view-clients=Ver clientes\nrole_view-events=Ver eventos\nrole_view-identity-providers=Ver proveedores de identidad\nrole_manage-realm=Gestionar dominio\nrole_manage-users=Gestionar usuarios\nrole_manage-applications=Gestionar aplicaciones\nrole_manage-identity-providers=Gestionar proveedores de identidad\nrole_manage-clients=Gestionar clientes\nrole_manage-events=Gestionar eventos\nrole_view-profile=Ver perfil\nrole_manage-account=Gestionar cuenta\nrole_read-token=Leer token\nrole_offline-access=Acceso sin conexi\\u00F3n\nclient_account=Cuenta\nclient_security-admin-console=Consola de Administraci\\u00F3n de Seguridad\nclient_realm-management=Gesti\\u00F3n del dominio\nclient_broker=Broker\n\ninvalidUserMessage=Usuario o contrase\\u00F1a incorrectos.\ninvalidEmailMessage=Email no v\\u00E1lido\naccountDisabledMessage=La cuenta est\\u00E1 desactivada, contacta con el administrador.\naccountTemporarilyDisabledMessage=La cuenta est\\u00E1 temporalmente desactivada, contacta con el administrador o int\\u00E9ntalo de nuevo m\\u00E1s tarde.\nexpiredCodeMessage=Se agot\\u00F3 el tiempo m\\u00E1ximo para la identificaci\\u00F3n. Por favor identificate de nuevo.\n\nmissingFirstNameMessage=Por favor indica tu nombre.\nmissingLastNameMessage=Por favor indica tus apellidos.\nmissingEmailMessage=Por favor indica tu email.\nmissingUsernameMessage=Por favor indica tu usuario.\nmissingPasswordMessage=Por favor indica tu contrase\\u00F1a.\nmissingTotpMessage=Por favor indica tu c\\u00F3digo de autenticaci\\u00F3n\nnotMatchPasswordMessage=Las contrase\\u00F1as no coinciden.\n\ninvalidPasswordExistingMessage=La contrase\\u00F1a actual no es correcta.\ninvalidPasswordConfirmMessage=La confirmaci\\u00F3n de contrase\\u00F1a no coincide.\ninvalidTotpMessage=El c\\u00F3digo de autenticaci\\u00F3n no es v\\u00E1lido.\n\nusernameExistsMessage=El nombre de usuario ya existe\nemailExistsMessage=El email ya existe\n\nfederatedIdentityEmailExistsMessage=Ya existe un usuario con este email. Por favor accede a la gesti\\u00F3n de tu cuenta para enlazarlo.\nfederatedIdentityUsernameExistsMessage=Ya existe un usuario con este nombre de usuario. Por favor accede a la gesti\\u00F3n de tu cuenta para enlazarlo.\n\nconfigureTotpMessage=Tienes que configurar la aplicaci\\u00F3n m\\u00F3vil de identificaci\\u00F3n para activar tu cuenta.\nupdateProfileMessage=Tienes que actualizar tu perfil de usuario para activar tu cuenta.\nupdatePasswordMessage=Tienes que cambiar tu contrase\\u00F1a para activar tu cuenta.\nverifyEmailMessage=Tienes que verificar tu email para activar tu cuenta.\n\nemailSentMessage=En breve deber\\u00EDas recibir un mensaje con m\\u00E1s instrucciones\nemailSendErrorMessage=Fall\\u00F3 el env\\u00EDo del email, por favor int\\u00E9ntalo de nuevo m\\u00E1s tarde.\n\naccountUpdatedMessage=Tu cuenta se ha actualizado.\naccountPasswordUpdatedMessage=Tu contrase\\u00F1a se ha actualizado.\n\nnoAccessMessage=Sin acceso\n\ninvalidPasswordMinLengthMessage=Contrase\\u00F1a incorrecta: longitud m\\u00EDnima {0}.\ninvalidPasswordMinDigitsMessage=Contrase\\u00F1a incorrecta: debe contaner al menos {0} caracteres num\\u00E9ricos.\ninvalidPasswordMinLowerCaseCharsMessage=Contrase\\u00F1a incorrecta: debe contener al menos {0} letras min\\u00FAsculas.\ninvalidPasswordMinUpperCaseCharsMessage=Contrase\\u00F1a incorrecta: debe contener al menos {0} letras may\\u00FAsculas.\ninvalidPasswordMinSpecialCharsMessage=Contrase\\u00F1a incorrecta: debe contener al menos {0} caracteres especiales.\ninvalidPasswordNotUsernameMessage=Contrase\\u00F1a incorrecta: no puede ser igual al nombre de usuario.\ninvalidPasswordRegexPatternMessage=Contrase\\u00F1a incorrecta: no cumple la expresi\\u00F3n regular.\ninvalidPasswordHistoryMessage=Contrase\\u00F1a incorrecta: no puede ser igual a ninguna de las \\u00FAltimas {0} contrase\\u00F1as.\n\nfailedToProcessResponseMessage=Fallo al procesar la respuesta\nhttpsRequiredMessage=HTTPS obligatorio\nrealmNotEnabledMessage=El dominio no est\\u00E1 activado\ninvalidRequestMessage=Petici\\u00F3n incorrecta\nfailedLogout=Fall\\u00F3 la desconexi\\u00F3n.\nunknownLoginRequesterMessage=Solicitante de identificaci\\u00F3n desconocido\nloginRequesterNotEnabledMessage=El solicitante de inicio de sesi\\u00F3n est\\u00E1 desactivado\nbearerOnlyMessage=Las aplicaciones Bearer-only no pueden iniciar sesi\\u00F3n desde el navegador.\ndirectGrantsOnlyMessage=Los clientes de tipo Direct-grants-only no pueden iniciar sesi\\u00F3n desde el navegador.\ninvalidRedirectUriMessage=La URI de redirecci\\u00F3n no es correcta\nunsupportedNameIdFormatMessage=NameIDFormat no soportado\ninvalidRequesterMessage=Solicitante no v\\u00E1lido\nregistrationNotAllowedMessage=El registro no est\\u00E1 permitido\nresetCredentialNotAllowedMessage=El reinicio de las credenciales no est\\u00E1 permitido\n\npermissionNotApprovedMessage=Permiso no aprobado.\nnoRelayStateInResponseMessage=Sin estado de retransmisi\\u00F3n en la respuesta del proveedor de identidad.\nidentityProviderAlreadyLinkedMessage=La identidad devuelta por el proveedor de identidad ya est\\u00E1 asociada a otro usuario.\ninsufficientPermissionMessage=Permisos insuficientes para enlazar identidades.\ncouldNotProceedWithAuthenticationRequestMessage=No se pudo continuar con la petici\\u00F3n de autenticaci\\u00F3n al proveedor de identidad.\ncouldNotObtainTokenMessage=.No se pudo obtener el c\\u00F3digo del proveedor de identidad\nunexpectedErrorRetrievingTokenMessage=Error inesperado obteniendo el token del proveedor de identidad\nunexpectedErrorHandlingResponseMessage=Error inesperado procesando la respuesta del proveedor de identidad.\nidentityProviderAuthenticationFailedMessage=Fall\\u00F3 la autenticaci\\u00F3n. No fue posible autenticarse en el proveedor de identidad.\ncouldNotSendAuthenticationRequestMessage=No se pudo enviar la petici\\u00F3n de identificaci\\u00F3n al proveedor de identidad.\nunexpectedErrorHandlingRequestMessage=Error inesperado durante la petici\\u00F3n de identificaci\\u00F3n al proveedor de identidad.\ninvalidAccessCodeMessage=C\\u00F3digo de acceso no v\\u00E1lido.\nsessionNotActiveMessage=La sesi\\u00F3n no est\\u00E1 activa\ninvalidCodeMessage=Ha ocurrido un error, por favor identificate de nuevo desde tu aplicaci\\u00F3n.\nidentityProviderUnexpectedErrorMessage=Error no esperado intentado autenticar en el proveedor de identidad.\nidentityProviderNotFoundMessage=No se encontr\\u00F3 un proveedor de identidad.\nrealmSupportsNoCredentialsMessage=El dominio no soporta ning\\u00FAn tipo de credenciales.\nidentityProviderNotUniqueMessage=El dominio soporta m\\u00FAltiples proveedores de identidad. No se pudo determinar el proveedor de identidad que deber\\u00EDa ser utilizado para identificarse.\nemailVerifiedMessage=Tu email ha sido verificado.\n\nbackToApplication=&laquo; Volver a la aplicaci\\u00F3n\nmissingParameterMessage=Par\\u00E1metros que faltan: {0}\nclientNotFoundMessage=Cliente no encontrado\ninvalidParameterMessage=Par\\u00E1metro no v\\u00E1lido: {0}\nalreadyLoggedIn=You are already logged in.\n\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_fr.properties",
    "content": "doLogIn=Connexion\ndoRegister=Enregistrement\ndoCancel=Annuler\ndoSubmit=Soumettre\ndoYes=Oui\ndoNo=Non\ndoContinue=Continuer\ndoIgnore=Ignorer\ndoAccept=Accepter\ndoDecline=D\\u00e9cliner\ndoForgotPassword=Mot de passe oubli\\u00e9 ?\ndoClickHere=Cliquez ici\ndoImpersonate=Impersonate\nkerberosNotConfigured=Kerberos non configur\\u00e9\nkerberosNotConfiguredTitle=Kerberos non configur\\u00e9\nbypassKerberosDetail=Si vous n''\\u00eates pas connect\\u00e9 via Kerberos ou bien que votre navigateur n''est pas configur\\u00e9 pour la connexion via Kerberos.  Veuillez cliquer pour vous connecter via un autre moyen.\nkerberosNotSetUp=Kerberos n''est pas configur\\u00e9. Connexion impossible.\nregisterTitle=S''enregistrer\nregisterWithTitle=Enregistrement avec {0}\nregisterWithTitleHtml={0}\nloginTitle=Se connecter \\u00e0 {0}\nloginTitleHtml={0}\nimpersonateTitle={0} utilisateur impersonate\nimpersonateTitleHtml=<strong>{0}</strong> utilisateur impersonate\nrealmChoice=Domaine\nunknownUser=Utilisateur inconnu\nloginTotpTitle=Configuration de l''authentification par mobile\nloginProfileTitle=Mise \\u00e0 jour du compte\nloginTimeout=Le temps imparti pour la connexion est \\u00e9coul\\u00e9. Le processus de connexion red\\u00e9marre depuis le d\\u00e9but.\noauthGrantTitle=OAuth Grant\noauthGrantTitleHtml={0}\nerrorTitle=Nous sommes d\\u00e9sol\\u00e9s...\nerrorTitleHtml=Nous sommes <strong>d\\u00e9sol\\u00e9s</strong>...\nemailVerifyTitle=V\\u00e9rification du courriel\nemailForgotTitle=Mot de passe oubli\\u00e9 ?\nupdatePasswordTitle=Mise \\u00e0 jour du mot de passe\ncodeSuccessTitle=Code succ\\u00e8s\ncodeErrorTitle=Code d''erreur \\: {0}\ndisplayUnsupported=Type d''affichage demand\\u00e9 non support\\u00e9\nbrowserRequired=Navigateur requis pour se connecter\nbrowserContinue=Navigateur requis pour continuer la connexion\nbrowserContinuePrompt=Ouvrir le navigateur et continuer la connexion? [y/n]:\nbrowserContinueAnswer=y\n\ntermsTitle=Termes et Conditions\ntermsTitleHtml=Termes et Conditions\ntermsText=<p>Termes et conditions \\u00e0 d\\u00e9finir</p>\ntermsPlainText=Termes et conditions \\u00e0 d\\u00e9finir\n\nrecaptchaFailed=Re-captcha invalide\nrecaptchaNotConfigured=Re-captcha est requis, mais il n''est pas configur\\u00e9\nconsentDenied=Consentement refus\\u00e9.\n\nnoAccount=Nouvel utilisateur ?\nusername=Nom d''utilisateur\nusernameOrEmail=Nom d''utilisateur ou courriel\nfirstName=Pr\\u00e9nom\ngivenName=Pr\\u00e9nom\nfullName=Nom complet\nlastName=Nom\nfamilyName=Nom de famille\nemail=Courriel\npassword=Mot de passe\npasswordConfirm=Confirmation du mot de passe\npasswordNew=Nouveau mot de passe\npasswordNewConfirm=Confirmation du nouveau mot de passe\nrememberMe=Se souvenir de moi\nauthenticatorCode=Code \\u00e0 usage unique\naddress=Adresse\nstreet=Rue\nlocality=Ville ou Localit\\u00e9\nregion=\\u00c9tat, Province ou R\\u00e9gion\npostal_code=Code postal\ncountry=Pays\nemailVerified=Courriel v\\u00e9rifi\\u00e9\ngssDelegationCredential=Accr\\u00e9ditation de d\\u00e9l\\u00e9gation GSS\n\nloginTotpIntro=Il est n\\u00e9cessaire de configurer un g\\u00e9n\\u00e9rateur One Time Password pour acc\\u00e9der \\u00e0 ce compte\nloginTotpStep1=Installez <a href=\"https://freeotp.github.io/\" target=\"_blank\">FreeOTP</a> ou bien Google Authenticator sur votre mobile. Ces deux applications sont disponibles sur <a href=\"https://play.google.com\">Google Play</a> et Apple App Store.\nloginTotpStep2=Ouvrez l''application et scannez le code-barres ou entrez la clef.\nloginTotpStep3=Entrez le code \\u00e0 usage unique fourni par l''application et cliquez sur Sauvegarder pour terminer.\nloginTotpManualStep2=Ouvrez l''application et saisissez la cl\\u00e9\nloginTotpManualStep3=Utilisez la configuration de valeur suivante si l''application permet son \\u00e9dition\nloginTotpUnableToScan=Impossible de scanner?\nloginTotpScanBarcode=Scanner le code barre ?\nloginOtpOneTime=Code \\u00e0 usage unique\nloginTotpType=Type\nloginTotpAlgorithm=Algorithme\nloginTotpDigits=Chiffres\nloginTotpInterval=Intervalle\nloginTotpCounter=Compteur\n\nloginTotp.totp=Bas\\u00e9 sur le temps\nloginTotp.hotp=Bas\\u00e9 sur les compteurs\n\noauthGrantRequest=Voulez-vous accorder ces privil\\u00e8ges d''acc\\u00e8s ?\ninResource=dans\n\nemailVerifyInstruction1=Un courriel avec des instructions \\u00e0 suivre vous a \\u00e9t\\u00e9 envoy\\u00e9.\nemailVerifyInstruction2=Vous n''avez pas re\\u00e7u de code dans le courriel ?\nemailVerifyInstruction3=pour renvoyer le courriel.\n\nemailLinkIdpTitle=Association avec {0}\nemailLinkIdp1=Un courriel avec des instructions pour associer le compte {1} sur {0} avec votre compte {2} vous a \\u00e9t\\u00e9 envoy\\u00e9.\nemailLinkIdp2=Vous n''avez pas re\\u00e7u de code dans le courriel ?\nemailLinkIdp3=pour renvoyer le courriel.\nemailLinkIdp4=Si vous avez d\\u00e9j\\u00e0 v\\u00e9rifi\\u00e9 votre courriel dans un autre navigateur\nemailLinkIdp5=pour continuer.\n\nbackToLogin=&laquo; Retour \\u00e0 la connexion\n\nemailInstruction=Entrez votre nom d''utilisateur ou votre courriel ; un courriel va vous \\u00eatre envoy\\u00e9 vous permettant de cr\\u00e9er un nouveau mot de passe.\n\ncopyCodeInstruction=Copiez le code et recopiez le dans votre application :\n\npageExpiredTitle=La page a expir\\u00e9\npageExpiredMsg1=Pour recommencer le processus d''authentification\npageExpiredMsg2=Pour continuer le processus d''authentification\n\npersonalInfo=Information personnelle :\nrole_admin=Administrateur\nrole_realm-admin=Administrateur du domaine\nrole_create-realm=Cr\\u00e9er un domaine\nrole_create-client=Cr\\u00e9er un client\nrole_view-realm=Voir un domaine\nrole_view-users=Voir les utilisateurs\nrole_view-applications=Voir les applications\nrole_view-clients=Voir les clients\nrole_view-events=Voir les \\u00e9v\\u00e9nements\nrole_view-identity-providers=Voir les fournisseurs d''identit\\u00e9\nrole_manage-realm=G\\u00e9rer le domaine\nrole_manage-users=G\\u00e9rer les utilisateurs\nrole_manage-applications=G\\u00e9rer les applications\nrole_manage-identity-providers=G\\u00e9rer les fournisseurs d''identit\\u00e9\nrole_manage-clients=G\\u00e9rer les clients\nrole_manage-events=G\\u00e9rer les \\u00e9v\\u00e9nements\nrole_view-profile=Voir le profil\nrole_manage-account=G\\u00e9rer le compte\nrole_manage-account-links=G\\u00e9rer les liens de compte\nrole_read-token=Lire le jeton d''authentification\nrole_offline-access=Acc\\u00e8s hors-ligne\nclient_account=Compte\nclient_security-admin-console=Console d''administration de la s\\u00e9curit\\u00e9\nclient_admin-cli=Admin CLI\nclient_realm-management=Gestion du domaine\nclient_broker=Broker\n\ninvalidUserMessage=Nom d''utilisateur ou mot de passe invalide.\ninvalidEmailMessage=Courriel invalide.\naccountDisabledMessage=Compte d\\u00e9sactiv\\u00e9, contactez votre administrateur.\naccountTemporarilyDisabledMessage=Ce compte est temporairement d\\u00e9sactiv\\u00e9, contactez votre administrateur ou bien r\\u00e9essayez plus tard.\nexpiredCodeMessage=Connexion expir\\u00e9e. Veuillez vous reconnecter.\nexpiredActionMessage=Action expir\\u00e9e. Merci de continuer la connexion.\nexpiredActionTokenNoSessionMessage=Action expir\\u00e9e.\nexpiredActionTokenSessionExistsMessage=Action expir\\u00e9e. Merci de recommencer.\n\nmissingFirstNameMessage=Veuillez entrer votre pr\\u00e9nom.\nmissingLastNameMessage=Veuillez entrer votre nom.\nmissingEmailMessage=Veuillez entrer votre courriel.\nmissingUsernameMessage=Veuillez entrer votre nom d''utilisateur.\nmissingPasswordMessage=Veuillez entrer votre mot de passe.\nmissingTotpMessage=Veuillez entrer votre code d''authentification.\nnotMatchPasswordMessage=Les mots de passe ne sont pas identiques.\n\ninvalidPasswordExistingMessage=Mot de passe existant invalide.\ninvalidPasswordBlacklistedMessage=Mot de passe invalide : ce mot de passe est blacklist\\u00e9.\ninvalidPasswordConfirmMessage=Le mot de passe de confirmation ne correspond pas.\ninvalidTotpMessage=Le code d''authentification est invalide.\n\nusernameExistsMessage=Le nom d''utilisateur existe d\\u00e9j\\u00e0.\nemailExistsMessage=Le courriel existe d\\u00e9j\\u00e0.\n\nfederatedIdentityExistsMessage=L''utilisateur avec {0} {1} existe d\\u00e9j\\u00e0. Veuillez acc\\u00e9der \\u00e0 au gestionnaire de compte pour lier le compte.\nfederatedIdentityEmailExistsMessage=Cet utilisateur avec ce courriel existe d\\u00e9j\\u00e0. Veuillez vous connecter au gestionnaire de compte pour lier le compte.\n\nconfirmLinkIdpTitle=Ce compte existe d\\u00e9j\\u00e0\nfederatedIdentityConfirmLinkMessage=L''utilisateur {0} {1} existe d\\u00e9j\\u00e0. Que souhaitez-vous faire ?\nfederatedIdentityConfirmReauthenticateMessage=Identifiez vous afin de lier votre compte avec {0}\nconfirmLinkIdpReviewProfile=V\\u00e9rifiez vos informations de profil\nconfirmLinkIdpContinue=Souhaitez-vous lier {0} \\u00e0 votre compte existant\n\nconfigureTotpMessage=Vous devez configurer l''authentification par mobile pour activer votre compte.\nupdateProfileMessage=Vous devez mettre \\u00e0 jour votre profil pour activer votre compte.\nupdatePasswordMessage=Vous devez changer votre mot de passe pour activer votre compte.\nresetPasswordMessage=Vous devez changer votre mot de passe.\nverifyEmailMessage=Vous devez v\\u00e9rifier votre courriel pour activer votre compte.\nlinkIdpMessage=Vous devez v\\u00e9rifier votre courriel pour lier votre compte avec {0}.\n\nemailSentMessage=Vous devriez recevoir rapidement un courriel avec de plus amples instructions.\nemailSendErrorMessage=Erreur lors de l''envoi du courriel, veuillez essayer plus tard.\n\naccountUpdatedMessage=Votre compte a \\u00e9t\\u00e9 mis \\u00e0 jour.\naccountPasswordUpdatedMessage=Votre mot de passe a \\u00e9t\\u00e9 mis \\u00e0 jour.\n\nnoAccessMessage=Aucun acc\\u00e8s\n\ninvalidPasswordMinLengthMessage=Mot de passe invalide : longueur minimale requise de {0}.\ninvalidPasswordMinDigitsMessage=Mot de passe invalide : doit contenir au moins {0} chiffre(s).\ninvalidPasswordMinLowerCaseCharsMessage=Mot de passe invalide : doit contenir au moins {0} lettre(s) en minuscule.\ninvalidPasswordMinUpperCaseCharsMessage=Mot de passe invalide : doit contenir au moins {0} lettre(s) en majuscule.\ninvalidPasswordMinSpecialCharsMessage=Mot de passe invalide : doit contenir au moins {0} caract\\u00e8re(s) sp\\u00e9ciaux.\ninvalidPasswordNotUsernameMessage=Mot de passe invalide : ne doit pas \\u00eatre identique au nom d''utilisateur.\ninvalidPasswordRegexPatternMessage=Mot de passe invalide : ne valide pas l''expression rationnelle.\ninvalidPasswordHistoryMessage=Mot de passe invalide : ne doit pas \\u00eatre \\u00e9gal aux {0} derniers mots de passe.\ninvalidPasswordGenericMessage=Mot de passe invalide : le nouveau mot de passe ne r\\u00e9pond pas \\u00e0 la politique de mot de passe.\n\nfailedToProcessResponseMessage=Erreur lors du traitement de la r\\u00e9ponse\nhttpsRequiredMessage=Le protocole HTTPS est requis\nrealmNotEnabledMessage=Le domaine n''est pas activ\\u00e9\ninvalidRequestMessage=Requ\\u00eate invalide\nfailedLogout=La d\\u00e9connexion a \\u00e9chou\\u00e9e\nunknownLoginRequesterMessage=Compte inconnu du demandeur\nloginRequesterNotEnabledMessage=La connexion du demandeur n''est pas active\nbearerOnlyMessage=Les applications Bearer-only ne sont pas autoris\\u00e9es \\u00e0 initier la connexion par navigateur.\nstandardFlowDisabledMessage=Le client n''est pas autoris\\u00e9 \\u00e0 initier une connexion avec le navigateur avec ce response_type. Le flux standard est d\\u00e9sactiv\\u00e9 pour le client.\nimplicitFlowDisabledMessage=Le client n''est pas autoris\\u00e9 \\u00e0 initier une connexion avec le navigateur avec ce response_type. Le flux implicite est d\\u00e9sactiv\\u00e9 pour le client.\ninvalidRedirectUriMessage=L''URI de redirection est invalide\nunsupportedNameIdFormatMessage=NameIDFormat non support\\u00e9\ninvalidRequesterMessage=Demandeur invalide\nregistrationNotAllowedMessage=L''enregistrement n''est pas autoris\\u00e9\nresetCredentialNotAllowedMessage=La remise \\u00e0 z\\u00e9ro n''est pas autoris\\u00e9e\n\npermissionNotApprovedMessage=La permission n''est pas approuv\\u00e9e.\nnoRelayStateInResponseMessage=Aucun \\u00e9tat de relais dans la r\\u00e9ponse du fournisseur d''identit\\u00e9.\ninsufficientPermissionMessage=Permissions insuffisantes pour lier les identit\\u00e9s.\ncouldNotProceedWithAuthenticationRequestMessage=Impossible de continuer avec la requ\\u00eate d''authentification vers le fournisseur d''identit\\u00e9.\ncouldNotObtainTokenMessage=Impossible de r\\u00e9cup\\u00e9rer le jeton du fournisseur d''identit\\u00e9.\nunexpectedErrorRetrievingTokenMessage=Erreur inattendue lors de la r\\u00e9cup\\u00e9ration du jeton provenant du fournisseur d''identit\\u00e9.\nunexpectedErrorHandlingResponseMessage=Erreur inattendue lors du traitement de la r\\u00e9ponse provenant du fournisseur d''identit\\u00e9.\nidentityProviderAuthenticationFailedMessage=L''authentification a \\u00e9chou\\u00e9e. Impossible de s''authentifier avec le fournisseur d''identit\\u00e9.\ncouldNotSendAuthenticationRequestMessage=Impossible d''envoyer la requ\\u00eate d''authentification vers le fournisseur d''identit\\u00e9.\nunexpectedErrorHandlingRequestMessage=Erreur inattendue lors du traitement de la requ\\u00eate vers le fournisseur d''identit\\u00e9.\ninvalidAccessCodeMessage=Code d''acc\\u00e8s invalide.\nsessionNotActiveMessage=La session n''est pas active.\ninvalidCodeMessage=Une erreur est survenue, veuillez vous reconnecter \\u00e0 votre application.\nidentityProviderUnexpectedErrorMessage=Erreur inattendue lors de l''authentification avec fournisseur d''identit\\u00e9.\nidentityProviderNotFoundMessage=Impossible de trouver le fournisseur d''identit\\u00e9 avec cet identifiant.\nidentityProviderLinkSuccess=Votre compte a \\u00e9t\\u00e9 correctement li\\u00e9 avec {0} compte {1} .\nstaleCodeMessage=Cette page n''est plus valide, merci de retourner \\u00e0 votre application et de vous connecter \\u00e0 nouveau.\nrealmSupportsNoCredentialsMessage=Ce domaine ne supporte aucun type d''accr\\u00e9ditation.\nidentityProviderNotUniqueMessage=Ce domaine autorise plusieurs fournisseurs d''identit\\u00e9. Impossible de d\\u00e9terminer le fournisseur d''identit\\u00e9 avec lequel s''authentifier.\nemailVerifiedMessage=Votre courriel a \\u00e9t\\u00e9 v\\u00e9rifi\\u00e9.\n\nstaleEmailVerificationLink=Le lien que vous avez cliqu\\u00e9 est p\\u00e9rim\\u00e9 et n''est plus valide. Peut-\\u00eatre avez vous d\\u00e9j\\u00e0 v\\u00e9rifi\\u00e9 votre mot de passe ?\nidentityProviderAlreadyLinkedMessage=L''identit\\u00e9 f\\u00e9d\\u00e9r\\u00e9e retourn\\u00e9e par {0} est d\\u00e9j\\u00e0 li\\u00e9e \\u00e0 un autre utilisateur.\nconfirmAccountLinking=Confirmez la liaison du compte {0} du fournisseur d''entit\\u00e9 {1} avec votre compte.\nconfirmEmailAddressVerification=Confirmez la validit\\u00e9 de l''adresse courriel {0}.\nconfirmExecutionOfActions=Suivez les instructions suivantes\n\n\nbackToApplication=&laquo; Revenir \\u00e0 l''application\nmissingParameterMessage=Param\\u00e8tres manquants \\: {0}\nclientNotFoundMessage=Client inconnu.\nclientDisabledMessage=Client d\\u00e9sactiv\\u00e9.\ninvalidParameterMessage=Param\\u00e8tre invalide \\: {0}\nalreadyLoggedIn=Vous \\u00eates d\\u00e9j\\u00e0 connect\\u00e9.\n\ndifferentUserAuthenticated=Vous \\u00eates d\\u00e9j\\u00e0 authentifi\\u00e9 avec un autre utilisateur ''{0}'' dans cette session. Merci de vous d\\u00e9connecter.\nproceedWithAction=&raquo; Cliquez ici\n\n\nrequiredAction.CONFIGURE_TOTP=Configurer OTP\nrequiredAction.terms_and_conditions=Termes et conditions\nrequiredAction.UPDATE_PASSWORD=Mettre \\u00e0 jour votre mot de passe\nrequiredAction.UPDATE_PROFILE=Mettre \\u00e0 jour votre profil\nrequiredAction.VERIFY_EMAIL=Valider votre adresse email\n\n\ndoX509Login=Vous allez \\u00eatre connect\\u00e9 en tant que\\:\nclientCertificate=X509 certificat client\\:\nnoCertificate=[Pas de certificat]\n\n\npageNotFound=Page non trouv\\u00e9e\ninternalServerError=Une erreur interne du serveur s''est produite\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_it.properties",
    "content": "doLogIn=Accedi\ndoRegister=Registrati\ndoCancel=Annulla\ndoSubmit=Invia\ndoBack=Indietro\ndoYes=S\\u00ec\ndoNo=No\ndoContinue=Continua\ndoIgnore=Ignora\ndoAccept=Accetta\ndoDecline=Nega\ndoForgotPassword=Password dimenticata?\ndoClickHere=Clicca qui\ndoImpersonate=Impersona\ndoTryAgain=Prova ancora\ndoTryAnotherWay=Prova in un altro modo\nkerberosNotConfigured=Kerberos non configurato\nkerberosNotConfiguredTitle=Kerberos non configurato\nbypassKerberosDetail=Non sei connesso via Kerberos o il tuo browser non supporta l''autenticazione a Kerberos. Fai clic su Continua per accedere in modo alternativo.\nkerberosNotSetUp=Kerberos non \\u00e8 configurato. Non puoi effettuare l''accesso.\nregisterTitle=Registrati\nloginTitle=Accedi a {0}\nloginTitleHtml={0}\nimpersonateTitle={0} Impersona utente\nimpersonateTitleHtml=<strong>{0}</strong> Impersona utente\nrealmChoice=Realm\nunknownUser=Utente sconosciuto\nloginTotpTitle=Configura autenticazione mobile\nloginProfileTitle=Aggiorna profilo\nloginTimeout=Stai impiegando troppo tempo per accedere. Il processo di autenticazione verr\\u00e0 riavviato.\noauthGrantTitle=Autenticazione concessa\noauthGrantTitleHtml={0}\nerrorTitle=Siamo spiacenti\\u2026\nerrorTitleHtml=Siamo <strong>spiacenti</strong>...\nemailVerifyTitle=Verifica l''email\nemailForgotTitle=Password dimenticata?\nupdatePasswordTitle=Aggiorna password\ncodeSuccessTitle=Codice di successo\ncodeErrorTitle=Codice di errore\\: {0}\ndisplayUnsupported=Tipo display richiesto non supportato\nbrowserRequired=\\u00c8 richiesto il browser per il login\nbrowserContinue=\\u00c8 richiesto il browser per continuare il login\nbrowserContinuePrompt=Aprire il browser per continuare il login? [y/n]:\nbrowserContinueAnswer=y\n\n\ntermsTitle=Termini e condizioni\ntermsText=<p>Termini e condizioni da definire</p>\ntermsPlainText=Termini e condizioni da definire.\n\nrecaptchaFailed=Recaptcha non valido\nrecaptchaNotConfigured=Il Recaptcha \\u00e8 obbligatorio, ma non configurato\nconsentDenied=Permesso negato.\n\nnoAccount=Nuovo utente?\nusername=Username\nusernameOrEmail=Username o email\nfirstName=Nome\ngivenName=Nome\nfullName=Nome completo\nlastName=Cognome\nfamilyName=Cognome\nemail=Email\npassword=Password\npasswordConfirm=Conferma password\npasswordNew=Nuova Password\npasswordNewConfirm=Conferma nuova password\nrememberMe=Ricordami\nauthenticatorCode=Codice One-time\naddress=Indirizzo\nlocality=Citt\\u00E0 o Localit\\u00e0\nstreet=Via\nregion=Stato, Provincia, o Regione\npostal_code=CAP\ncountry=Paese\nemailVerified=Email verificata\ngssDelegationCredential=Credenziali delega GSS\n\nprofileScopeConsentText=Profilo utente\nemailScopeConsentText=Indirizzo email\naddressScopeConsentText=Indirizzo\nphoneScopeConsentText=Numero di telefono\nofflineAccessScopeConsentText=Accesso offline\nsamlRoleListScopeConsentText=I miei ruoli\nrolesScopeConsentText=Ruoli utente\n\nrestartLoginTooltip=Riavvia login\n\nloginTotpIntro=Devi impostare un generatore di OTP (password temporanea valida una volta sola) per accedere a questo account\nloginTotpStep1=Installa una delle seguenti applicazioni sul tuo dispositivo mobile\nloginTotpStep2=Apri l''applicazione e scansiona il codice QR\nloginTotpStep3=Scrivi il codice monouso fornito dall''applicazione e premi Invia per completare il setup\nloginTotpStep3DeviceName=Fornisci il nome del dispositivo per aiutarti a gestire i dispositivi di autenticazione.\nloginTotpManualStep2=Apri l''applicazione e scrivi la chiave\nloginTotpManualStep3=Usa le seguenti impostazioni se l''applicazione lo consente\nloginTotpUnableToScan=Non riesci a scansionare il codice QR?\nloginTotpScanBarcode=Vuoi scansionare il codice QR?\nloginCredential=Credenziali\nloginOtpOneTime=Codice monouso\nloginTotpType=Tipo\nloginTotpAlgorithm=Algoritmo\nloginTotpDigits=Cifre\nloginTotpInterval=Intervallo\nloginTotpCounter=Contatore\nloginTotpDeviceName=Nome del dispositivo di autenticazione\n\nloginTotp.totp=Basato sull''ora\nloginTotp.hotp=Basato sul contatore\n\nloginChooseAuthenticator=Seleziona il tuo metodo di autenticazione\n\noauthGrantRequest=Vuoi assegnare questi privilegi di accesso?\ninResource=per\n\nemailVerifyInstruction1=Ti \\u00e8 stata inviata una email con le istruzioni per la verifica della tua email.\nemailVerifyInstruction2=Non hai ricevuto un codice di verifica nella tua email?\nemailVerifyInstruction3=per rinviare la email.\n\nemailLinkIdpTitle=Collega {0}\nemailLinkIdp1=Ti \\u00e8 stata inviata una email con le istruzioni per collegare l''account {0} {1} con il tuo account {2}.\nemailLinkIdp2=Non hai ricevuto un codice di verifica nella tua email?\nemailLinkIdp3=Per rinviare la email.\nemailLinkIdp4=Se hai gi\\u00e0 verificato l''indirizzo email in un altro browser\nemailLinkIdp5=per continuare.\n\nbackToLogin=&laquo; Torna al Login\n\nemailInstruction=Inserisci la tua username o l''indirizzo email e ti manderemo le istruzioni per creare una nuova password.\n\ncopyCodeInstruction=Copia questo codice e incollalo nella tua applicazione:\n\npageExpiredTitle=La pagina \\u00e8 scaduta\npageExpiredMsg1=Per ripetere il login\npageExpiredMsg2=Per continuare con il login\n\npersonalInfo=Informazioni personali:\nrole_admin=Admin\nrole_realm-admin=Realm Admin\nrole_create-realm=Crea realm\nrole_create-client=Crea client\nrole_view-realm=Visualizza realm\nrole_view-users=Visualizza utenti\nrole_view-applications=Visualizza applicazioni\nrole_view-clients=Visualizza client\nrole_view-events=Visualizza eventi\nrole_view-identity-providers=Visualizza identity provider\nrole_manage-realm=Gestisci realm\nrole_manage-users=Gestisci utenti\nrole_manage-applications=Gestisci applicazioni\nrole_manage-identity-providers=Gestisci identity provider\nrole_manage-clients=Gestisci client\nrole_manage-events=Gestisci eventi\nrole_view-profile=Visualizza profilo\nrole_manage-account=Gestisci account\nrole_manage-account-links=Gestisci i link per l''account\nrole_read-token=Leggi il token\nrole_offline-access=Accesso offline\nclient_account=Account\nclient_account-console=Console account\nclient_security-admin-console=Console di amministrazione di sicurezza\nclient_admin-cli=Admin CLI\nclient_realm-management=Gestione realm\nclient_broker=Broker\n\nrequiredFields=Campi obbligatori\n\ninvalidUserMessage=Username o password non validi.\ninvalidUsernameMessage=Username non valido.\ninvalidUsernameOrEmailMessage=Username o email non validi.\ninvalidPasswordMessage=Password non valida.\ninvalidEmailMessage=Indirizzo email non valido.\naccountDisabledMessage=L''account \\u00e8 disabilitato, contatta il tuo amministratore.\naccountTemporarilyDisabledMessage=L''account \\u00e8 temporaneamente disabilitato; contatta il tuo amministratore o prova pi\\u00f9 tardi.\nexpiredCodeMessage=Login scaduto. Riprovare.\nexpiredActionMessage=Azione scaduta. Continuare adesso con in login.\nexpiredActionTokenNoSessionMessage=Azione scaduta.\nexpiredActionTokenSessionExistsMessage=Azione scaduta. Ricominciare.\n\nmissingFirstNameMessage=Inserisci il nome.\nmissingLastNameMessage=Inserisci il cognome.\nmissingEmailMessage=Inserisci l''email.\nmissingUsernameMessage=Inserisci l''username.\nmissingPasswordMessage=Inserisci la password.\nmissingTotpMessage=Inserisci il codice di autenticazione.\nmissingTotpDeviceNameMessage=Inserisci il nome del dispositivo di autenticazione.\nnotMatchPasswordMessage=Le password non coincidono.\n\ninvalidPasswordExistingMessage=Password esistente non valida.\ninvalidPasswordBlacklistedMessage=Password non valida: la password non \\u00e8 consentita.\ninvalidPasswordConfirmMessage=La password di conferma non coincide.\ninvalidTotpMessage=Codice di autenticazione non valido.\n\nusernameExistsMessage=Username gi\\u00e0 esistente.\nemailExistsMessage=Email gi\\u00e0 esistente.\n\nfederatedIdentityExistsMessage=L''utente con {0} {1} esiste gi\\u00e0. Effettua il login nella gestione account per associare l''account.\n\nconfirmLinkIdpTitle=Account gi\\u00e0 esistente\nfederatedIdentityConfirmLinkMessage=L''utente con {0} {1} esiste gi\\u00e0. Come vuoi procedere?\nfederatedIdentityConfirmReauthenticateMessage=Autenticati per associare il tuo account con {0}\nconfirmLinkIdpReviewProfile=Rivedi profilo\nconfirmLinkIdpContinue=Aggiungi all''account esistente\n\nconfigureTotpMessage=Devi impostare un autenticatore per attivare il tuo account.\nupdateProfileMessage=Devi aggiornare il tuo profilo utente per attivare il tuo account.\nupdatePasswordMessage=Devi cambiare la password per attivare il tuo account.\nresetPasswordMessage=Devi cambiare la password.\nverifyEmailMessage=Devi verificare il tuo indirizzo email per attivare il tuo account.\nlinkIdpMessage=Devi verificare il tuo indirizzo email per associare il tuo account con {0}.\n\nemailSentMessage=Riceverai a breve una email con maggiori istruzioni.\nemailSendErrorMessage=Invio email fallito, riprova pi\\u00f9 tardi.\n\naccountUpdatedMessage=Il tuo account \\u00e8 stato aggiornato.\naccountPasswordUpdatedMessage=La tua password \\u00e8 stata aggiornata.\n\ndelegationCompleteHeader=Login completato\ndelegationCompleteMessage=Puoi chiudere questa finestra del browser e tornare alla tua applicazione.\ndelegationFailedHeader=Login fallito\ndelegationFailedMessage=Puoi chiudere questa finestra del browser e tornare alla tua applicazione per provare ad accedere nuovamente.\n\nnoAccessMessage=Nessun accesso\n\ninvalidPasswordMinLengthMessage=Password non valida: lunghezza minima {0}.\ninvalidPasswordMinDigitsMessage=Password non valida: deve contenere almeno {0} numeri.\ninvalidPasswordMinLowerCaseCharsMessage=Password non valida: deve contenere almeno {0} caratteri minuscoli.\ninvalidPasswordMinUpperCaseCharsMessage= Password non valida: deve contenere almeno {0} caratteri maiuscoli.\ninvalidPasswordMinSpecialCharsMessage= Password non valida: deve contenere almeno {0} caratteri speciali.\ninvalidPasswordNotUsernameMessage=Password non valida: non deve essere uguale alla username.\ninvalidPasswordRegexPatternMessage=Password non valida: fallito il match con una o pi\\u00f9 espressioni regolari.\ninvalidPasswordHistoryMessage=Password non valida: non deve essere uguale ad una delle ultime {0} password.\ninvalidPasswordGenericMessage=Password non valida: la nuova password non rispetta le indicazioni previste.\n\nfailedToProcessResponseMessage=Fallimento nell''elaborazione della risposta\nhttpsRequiredMessage=HTTPS richiesto\nrealmNotEnabledMessage=Realm non abilitato\ninvalidRequestMessage=Richiesta non valida\nfailedLogout=Logout fallito\nunknownLoginRequesterMessage=Richiedente di Login non riconosciuto\nloginRequesterNotEnabledMessage=Richiedente di Login non abilitato\nbearerOnlyMessage=Alle applicazioni di tipo Bearer-only non \\u00e8 consentito di effettuare il login tramite browser\nstandardFlowDisabledMessage=Al client non \\u00e8 consentito di effettuare il login tramite browser con questo response_type. Standard flow \\u00e8 stato disabilitato per il client.\nimplicitFlowDisabledMessage=Al client non \\u00e8 consentito di effettuare il login tramite browser con questo response_type. Implicit flow \\u00e8 stato disabilitato per il client.\ninvalidRedirectUriMessage=Redirect uri non valido\nunsupportedNameIdFormatMessage=NameIDFormat non supportato\ninvalidRequesterMessage=Richiedente non valido\nregistrationNotAllowedMessage=Registrazione non permessa\nresetCredentialNotAllowedMessage=Reimpostazione della credenziale non permessa\n\npermissionNotApprovedMessage=Permesso non approvato.\nnoRelayStateInResponseMessage=Nessun relay state in risposta dall''identity provider.\ninsufficientPermissionMessage=Permessi insufficienti per associare le identit\\u00e0.\ncouldNotProceedWithAuthenticationRequestMessage=Impossibile procedere con la richiesta di autenticazione all''identity provider\ncouldNotObtainTokenMessage=Non posso ottenere un token dall''identity provider.\nunexpectedErrorRetrievingTokenMessage=Errore inaspettato nel recupero del token dall''identity provider.\nunexpectedErrorHandlingResponseMessage=Errore inaspettato nella gestione della risposta dall''identity provider.\nidentityProviderAuthenticationFailedMessage=Autenticazione fallita. Non posso effettuare l''autenticazione con l''identity provider.\ncouldNotSendAuthenticationRequestMessage=Impossibile inviare la richiesta di autenticazione all''identity provider.\nunexpectedErrorHandlingRequestMessage=Errore inaspettato nella gestione della richiesta di autenticazione all''identity provider.\ninvalidAccessCodeMessage=Codice di accesso non valido.\nsessionNotActiveMessage=Sessione non attiva.\ninvalidCodeMessage=Si \\u00e8 verificato un errore, effettua di nuovo il login nella tua applicazione.\nidentityProviderUnexpectedErrorMessage=Errore imprevisto durante l''autenticazione con identity provider\nidentityProviderNotFoundMessage=Non posso trovare un identity provider con l''identificativo.\nidentityProviderLinkSuccess=Hai verificato con successo la tua email. Torna al tuo browser iniziale e continua da l\\u00ec con il login.\nstaleCodeMessage=Questa pagina non \\u00e8 pi\\u00f9 valida, torna alla tua applicazione ed effettua nuovamente l''accesso\nrealmSupportsNoCredentialsMessage=Il realm non supporta nessun tipo di credenziali.\ncredentialSetupRequired=Impossibile effettuare il login, \\u00e8 richiesto il setup delle credenziali.\nidentityProviderNotUniqueMessage=Il realm supporta pi\\u00f9 di un identity provider. Impossibile determinare quale identity provider deve essere utilizzato per autenticarti.\nemailVerifiedMessage=Il tuo indirizzo email \\u00e8 stato verificato.\nstaleEmailVerificationLink=Il link che hai cliccato \\u00e8 un link scaduto e non \\u00e8 pi\\u00f9 valido. Forse hai gi\\u00e0 verificato la tua email?\nidentityProviderAlreadyLinkedMessage=L''identit\\u00e0 federata restituita dall''identity provider {0} \\u00e8 gi\\u00e0 associata ad un altro utente.\nconfirmAccountLinking=Conferma il collegamento per l''account {0} dell''identity provider {1} con il tuo account.\nconfirmEmailAddressVerification=Conferma la validit\\u00e0 dell''indirizzo email {0}.\nconfirmExecutionOfActions=Esegui la/le seguenti azione/i\nlocale_it=Italiano\n\nbackToApplication=&laquo; Torna all''applicazione\nmissingParameterMessage=Parametri mancanti\\: {0}\nclientNotFoundMessage=Client non trovato.\nclientDisabledMessage=Client disabilitato.\ninvalidParameterMessage=Parametro non valido\\: {0}\nalreadyLoggedIn=Sei gi\\u00e0 connesso.\ndifferentUserAuthenticated=Se gi\\u00e0 autenticato con l''utente ''{0}'' in questa sessione. Per favore, fai prima il logout.\nbrokerLinkingSessionExpired=\\u00c8 stato richiesta un''associazione a un account broker, ma la sessione corrente non \\u00e8 pi\\u00f9 valida.\nproceedWithAction=&raquo; Clicca qui per continuare\n\nrequiredAction.CONFIGURE_TOTP=Configura OTP\nrequiredAction.terms_and_conditions=Termini e condizioni\nrequiredAction.UPDATE_PASSWORD=Aggiornamento password\nrequiredAction.UPDATE_PROFILE=Aggiornamento profilo\nrequiredAction.VERIFY_EMAIL=Verifica dell''indirizzo email\n\ndoX509Login=Sarai connesso come\\:\nclientCertificate=Certificato client X509\\:\nnoCertificate=[Nessun certificato]\n\n\npageNotFound=Pagina non trovata\ninternalServerError=Si \\u00e8 verificato un errore interno del server\n\nconsole-username=Username:\nconsole-password=Password:\nconsole-otp=One-time password:\nconsole-new-password=Nuova password:\nconsole-confirm-password=Conferma password:\nconsole-update-password=\\u00c8 richiesto l''aggiornamento della tua password.\nconsole-verify-email=Devi verificare il tuo indirizzo email. \\u00c8 stata inviata una email a {0} che contiene un codice di verifica. Per favore inserisci il codice nella casella di testo seguente.\nconsole-email-code=Codice email:\nconsole-accept-terms=Accetti i termini? [y/n]:\nconsole-accept=y\n\n# Openshift messages\nopenshift.scope.user_info=Informazioni utente\nopenshift.scope.user_check-access=Informazioni di accesso per l''utente\nopenshift.scope.user_full=Accesso completo\nopenshift.scope.list-projects=Elenca i progetti\n\n# SAML authentication\nsaml.post-form.title=Reindirizzamento per l''autenticazione\nsaml.post-form.message=Reindirizzamento, attendere per favore.\nsaml.post-form.js-disabled=JavaScript \\u00e8 disabilitato. \\u00c8 fortemente consigliato abilitarlo. Clicca sul bottone seguente per continuare.\n\n#authenticators\notp-display-name=Applicazione di autenticazione\notp-help-text=Inserire un codice di verifica fornito dall''applicazione di autenticazione.\npassword-display-name=Password\npassword-help-text=Accedi inserendo la tua password.\nauth-username-form-display-name=Username\nauth-username-form-help-text=Inizia il login inserendo la tua username\nauth-username-password-form-display-name=Username e password\nauth-username-password-form-help-text=Accedi inserendo la tua username e la password.\n\n# WebAuthn\nwebauthn-display-name=Chiave di sicurezza\nwebauthn-help-text=Utilizza la tua chiave di sicurezza per accedere.\nwebauthn-passwordless-display-name=Chiave di sicurezza\nwebauthn-passwordless-help-text=Utilizza la tua chiave di sicurezza per l''accesso senza password.\nwebauthn-login-title=Login con chiave di sicurezza\nwebauthn-registration-title=Registrazione chiave di sicurezza\nwebauthn-available-authenticators=Autenticatori disponibili\n\n# WebAuthn Error\nwebauthn-error-title=Errore della chiave di sicurezza\nwebauthn-error-registration=Impossibile registrare la tua chiave di sicurezza.\nwebauthn-error-api-get=Autenticazione con la chiave di sicurezza fallita.\nwebauthn-error-different-user=Il primo utente autenticato non \\u00e8 quello autenticato tramite la chiave di sicurezza.\nwebauthn-error-auth-verification=Il risultato dell''autenticazione con la chiave di sicurezza non \\u00e8 valido.\nwebauthn-error-register-verification=Il risultato della registrazione della chiave di sicurezza non \\u00e8 valido.\nwebauthn-error-user-not-found=Utente sconosciuto autenticato con la chiave di sicurezza.\n\nidentity-provider-redirector=Connettiti con un altro identity provider.\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_ja.properties",
    "content": "# encoding: utf-8\ndoLogIn=ログイン\ndoRegister=登録\ndoCancel=キャンセル\ndoSubmit=送信\ndoBack=戻る\ndoYes=はい\ndoNo=いいえ\ndoContinue=続ける\ndoIgnore=無視\ndoAccept=承諾\ndoDecline=却下\ndoForgotPassword=パスワードをお忘れですか?\ndoClickHere=クリックしてください\ndoImpersonate=代理ログイン\ndoTryAgain=再試行してください\ndoTryAnotherWay=別の方法を試してください\nkerberosNotConfigured=Kerberosは設定されていません\nkerberosNotConfiguredTitle=Kerberosは設定されていません\nbypassKerberosDetail=Kerberosでログインしていないか、ブラウザーでKerberosログインの設定がされていません。他の手段でログインするには「続ける」をクリックしてください。\nkerberosNotSetUp=Kerberosが設定されていません。ログインできません。\nregisterTitle=登録\nloginTitle={0}にログイン\nloginTitleHtml={0}\nimpersonateTitle={0}ユーザーの代理\nimpersonateTitleHtml=<strong>{0}</strong>ユーザーの代理\nrealmChoice=レルム\nunknownUser=不明なユーザー\nloginTotpTitle=モバイル・オーセンティケーターのセットアップ\nloginProfileTitle=アカウント情報の更新\nloginTimeout=ログイン試行がタイムアウトしました。ログインは最初から開始されます。\noauthGrantTitle={0}へのアクセスを許可\noauthGrantTitleHtml={0}\nerrorTitle=申し訳ございません\nerrorTitleHtml=<strong>申し訳ございません</strong>\nemailVerifyTitle=Eメール確認\nemailForgotTitle=パスワードをお忘れですか?\nupdatePasswordTitle=パスワードの更新\ncodeSuccessTitle=成功コード\ncodeErrorTitle=エラーコード\\: {0}\ndisplayUnsupported=要求された表示タイプがサポートされていません\nbrowserRequired=ログインに必要なブラウザー\nbrowserContinue=ログインを完了するために必要なブラウザー\nbrowserContinuePrompt=ブラウザーを開いてログインを続行しますか？ [y/n]:\nbrowserContinueAnswer=y\n\n\ntermsTitle=利用規約\ntermsText=<p>利用規約はここで設定する必要があります</p>\ntermsPlainText=定義される利用規約。\n\nrecaptchaFailed=無効なreCAPTCHA\nrecaptchaNotConfigured=reCAPTCHAが必須ですが、設定されていません\nconsentDenied=同意が拒否されました。\n\nnoAccount=新規ユーザーですか?\nusername=ユーザー名\nusernameOrEmail=ユーザー名またはメールアドレス\nfirstName=名\ngivenName=名\nfullName=氏名\nlastName=姓\nfamilyName=姓\nemail=Eメール\npassword=パスワード\npasswordConfirm=パスワード（確認）\npasswordNew=新しいパスワード\npasswordNewConfirm=新しいパスワード（確認）\nrememberMe=ログイン状態の保存\nauthenticatorCode=ワンタイムコード\naddress=住所\nstreet=番地\nlocality=市区町村\nregion=都道府県\npostal_code=郵便番号\ncountry=国\nemailVerified=確認済みEメール\ngssDelegationCredential=GSS委譲クレデンシャル\n\nprofileScopeConsentText=ユーザー・プロファイル\nemailScopeConsentText=メールアドレス\naddressScopeConsentText=アドレス\nphoneScopeConsentText=電話番号\nofflineAccessScopeConsentText=オフライン・アクセス\nsamlRoleListScopeConsentText=ロール\nrolesScopeConsentText=ユーザーロール\n\nrestartLoginTooltip=ログインを再開\n\nloginTotpIntro=このアカウントにアクセスするには、ワンタイム・パスワード・ジェネレーターを設定する必要があります\nloginTotpStep1=次のいずれかのアプリケーションをモバイルにインストールします。\nloginTotpStep2=アプリケーションを開き、バーコードをスキャンします。\nloginTotpStep3=アプリケーションから提供されたワンタイムコードを入力し、送信をクリックしてセットアップを終了します。\nloginTotpStep3DeviceName=OTPデバイスの管理に役立つデバイス名を指定します。\nloginTotpManualStep2=アプリケーションを開き、キーを入力します：\nloginTotpManualStep3=アプリケーションで設定できる場合は、次の設定値を使用します。\nloginTotpUnableToScan=スキャンできませんか？\nloginTotpScanBarcode=バーコードをスキャンしますか？\nloginCredential=クレデンシャル\nloginOtpOneTime=ワンタイムコード\nloginTotpType=タイプ\nloginTotpAlgorithm=アルゴリズム\nloginTotpDigits=桁\nloginTotpInterval=間隔\nloginTotpCounter=カウンター\nloginTotpDeviceName=デバイス名\n\nloginTotp.totp=時間ベース\nloginTotp.hotp=カウンターベース\n\nloginChooseAuthenticator=ログイン方法を選択してください\n\noauthGrantRequest=これらのアクセス権限を付与しますか？\ninResource=in\n\nemailVerifyInstruction1=メールアドレスを確認する手順を記載したEメールを送信しました。\nemailVerifyInstruction2=Eメールで確認コードを受け取っていませんか?\nemailVerifyInstruction3=Eメールを再送信します。\n\nemailLinkIdpTitle=リンク {0}\nemailLinkIdp1={0}の{1}アカウントをあなたの{2}アカウントとリンクするための手順を記載したEメールを送信しました。\nemailLinkIdp2=Eメールで確認コードを受け取っていませんか?\nemailLinkIdp3=Eメールを再送信します。\nemailLinkIdp4=別のブラウザーでメールを確認済みの場合\nemailLinkIdp5=続けるには\n\nbackToLogin=&laquo; ログインに戻る\n\nemailInstruction=ユーザー名またメールアドレスを入力してください。新しいパスワードの設定方法をご案内いたします。\n\ncopyCodeInstruction=このコードをコピーし、あなたのアプリケーションにペーストしてください：\n\npageExpiredTitle=ページの有効期限が切れています\npageExpiredMsg1=ログインプロセスを再開するには\npageExpiredMsg2=ログイン処理を続行するには\n\npersonalInfo=個人情報:\nrole_admin=管理者\nrole_realm-admin=レルム管理者\nrole_create-realm=レルムの作成\nrole_create-client=クライアントの作成\nrole_view-realm=レルムの参照\nrole_view-users=ユーザーの参照\nrole_view-applications=アプリケーションの参照\nrole_view-clients=クライアントの参照\nrole_view-events=イベントの参照\nrole_view-identity-providers=アイデンティティー・プロバイダーの参照\nrole_manage-realm=レルムの管理\nrole_manage-users=ユーザーの管理\nrole_manage-applications=アプリケーションの管理\nrole_manage-identity-providers=アイデンティティー・プロバイダーの管理\nrole_manage-clients=クライアントの管理\nrole_manage-events=イベントの管理\nrole_view-profile=プロファイルの参照\nrole_manage-account=アカウントの管理\nrole_manage-account-links=アカウントリンクの管理\nrole_read-token=トークンの参照\nrole_offline-access=オフライン・アクセス\nclient_account=アカウント\nclient_account-console=アカウント・コンソール\nclient_security-admin-console=セキュリティー管理コンソール\nclient_admin-cli=管理CLI\nclient_realm-management=レルム管理\nclient_broker=ブローカー\n\nrequiredFields=必須フィールド\n\ninvalidUserMessage=無効なユーザー名またはパスワードです。\ninvalidUsernameMessage=ユーザー名が無効です。\ninvalidUsernameOrEmailMessage=ユーザー名またはメールアドレスが無効です。\ninvalidPasswordMessage=パスワードが無効です。\ninvalidEmailMessage=無効なメールアドレスです。\naccountDisabledMessage=アカウントが無効です。管理者に連絡してください。\naccountTemporarilyDisabledMessage=アカウントが一時的に無効です。管理者に連絡するか、しばらく時間をおいてから再度お試しください。\nexpiredCodeMessage=ログイン・タイムアウトが発生しました。再度ログインしてください。\nexpiredActionMessage=アクションは期限切れです。今すぐログインしてください。\nexpiredActionTokenNoSessionMessage=アクションは期限切れです。\nexpiredActionTokenSessionExistsMessage=アクションは期限切れです。もう一度やり直してください。\n\nmissingFirstNameMessage=名を指定してください。\nmissingLastNameMessage=姓を指定してください。\nmissingEmailMessage=Eメールを指定してください。\nmissingUsernameMessage=ユーザー名を指定してください。\nmissingPasswordMessage=パスワードを指定してください。\nmissingTotpMessage=オーセンティケーター・コードを指定してください。\nmissingTotpDeviceNameMessage=デバイス名を指定してください。\nnotMatchPasswordMessage=パスワードが一致していません。\n\ninvalidPasswordExistingMessage=既存のパスワードが不正です。\ninvalidPasswordBlacklistedMessage=無効なパスワード: パスワードがブラックリストに含まれています。\ninvalidPasswordConfirmMessage=パスワード確認が一致していません。\ninvalidTotpMessage=無効なオーセンティケーター・コードです。\n\nusernameExistsMessage=既に存在するユーザー名です。\nemailExistsMessage=既に存在するEメールです。\n\nfederatedIdentityExistsMessage={0}{1}のユーザーは既に存在します。そのアカウントをリンクするにはアカウント管理にログインしてください。\n\nconfirmLinkIdpTitle=既に存在するアカウントです。\nfederatedIdentityConfirmLinkMessage={0}{1}のユーザーは既に存在します。継続しますか?\nfederatedIdentityConfirmReauthenticateMessage={1}でアカウントをリンクするために{0}として認証します\nnestedFirstBrokerFlowMessage={0}ユーザー{1}は既知のユーザーにリンクされていません。\nconfirmLinkIdpReviewProfile=プロファイルの確認\nconfirmLinkIdpContinue=既存のアカウントに追加する\n\nconfigureTotpMessage=アカウントを有効にするにはモバイル・オーセンティケーターのセットアップが必要です。\nupdateProfileMessage=アカウントを有効にするにはユーザー・プロファイルの更新が必要です。\nupdatePasswordMessage=アカウントを有効にするにはパスワードの更新が必要です。\nresetPasswordMessage=パスワードを変更する必要があります。\nverifyEmailMessage=アカウントを有効にするにはメールアドレスの確認が必要です。\nlinkIdpMessage=アカウントを{0}とリンクするにはメールアドレスの確認が必要です。\n\nemailSentMessage=詳細な手順を記載したEメールをすぐに受信してください。\nemailSendErrorMessage=Eメールの送信に失敗しました。しばらく時間をおいてから再度お試しください。\n\naccountUpdatedMessage=アカウントが更新されました。\naccountPasswordUpdatedMessage=パスワードが更新されました。\n\ndelegationCompleteHeader=ログインに成功しました\ndelegationCompleteMessage=このブラウザーのウィンドウを閉じて、コンソール・アプリケーションに戻ることができます。\ndelegationFailedHeader=ログインに失敗しました\ndelegationFailedMessage=このブラウザー・ウィンドウを閉じてコンソール・アプリケーションに戻り、再度ログインを試みることができます。\n\nnoAccessMessage=アクセスがありません\n\ninvalidPasswordMinLengthMessage=無効なパスワード: 最小{0}の長さが必要です。\ninvalidPasswordMinDigitsMessage=無効なパスワード: 少なくとも{0}文字の数字を含む必要があります。\ninvalidPasswordMinLowerCaseCharsMessage=無効なパスワード: 少なくとも{0}文字の小文字を含む必要があります。\ninvalidPasswordMinUpperCaseCharsMessage=無効なパスワード: 少なくとも{0}文字の大文字を含む必要があります。\ninvalidPasswordMinSpecialCharsMessage=無効なパスワード: 少なくとも{0}文字の特殊文字を含む必要があります。\ninvalidPasswordNotUsernameMessage=無効なパスワード: ユーザー名と同じパスワードは禁止されています。\ninvalidPasswordRegexPatternMessage=無効なパスワード: 正規表現パターンと一致しません。\ninvalidPasswordHistoryMessage=無効なパスワード: 最近の{0}パスワードのいずれかと同じパスワードは禁止されています。\ninvalidPasswordGenericMessage=無効なパスワード: 新しいパスワードはパスワード・ポリシーと一致しません。\n\nfailedToProcessResponseMessage=応答を処理できませんでした\nhttpsRequiredMessage=HTTPSが必須です\nrealmNotEnabledMessage=レルムが有効ではありません\ninvalidRequestMessage=無効なリクエストです\nfailedLogout=ログアウトに失敗しました\nunknownLoginRequesterMessage=不明なログイン要求元です\nloginRequesterNotEnabledMessage=ログイン要求元は有効ではありません\nbearerOnlyMessage=bearer-onlyのアプリケーションはブラウザー・ログインを開始することが許可されていません\nstandardFlowDisabledMessage=与えられたresponse_typeでクライアントはブラウザー・ログインを開始することが許可されていません。標準フローは無効です。\nimplicitFlowDisabledMessage=与えられたresponse_typeでクライアントはブラウザー・ログインを開始することが許可されていません。インプリシット・フローは無効です。\ninvalidRedirectUriMessage=無効なリダイレクトURIです\nunsupportedNameIdFormatMessage=サポートされていないNameID Formatです\ninvalidRequesterMessage=無効な要求元です\nregistrationNotAllowedMessage=登録は許可されていません\nresetCredentialNotAllowedMessage=クレデンシャルのリセットは許可されていません\n\npermissionNotApprovedMessage=パーミッションは承認されていません。\nnoRelayStateInResponseMessage=アイデンティティー・プロバイダーからの応答にRelayStateがありません。\ninsufficientPermissionMessage=アイデンティティーにリンクするには不十分なパーミッションです。\ncouldNotProceedWithAuthenticationRequestMessage=アイデンティティー・プロバイダーへの認証リクエストを続行できませんでした。\ncouldNotObtainTokenMessage=アイデンティティー・プロバイダーからトークンを取得できませんでした。\nunexpectedErrorRetrievingTokenMessage=アイデンティティー・プロバイダーからのトークン取得で予期せぬエラーが発生しました。\nunexpectedErrorHandlingResponseMessage=アイデンティティー・プロバイダーからの応答を処理する際に予期せぬエラーが発生しました。\nidentityProviderAuthenticationFailedMessage=認証に失敗しました。アイデンティティー・プロバイダーを使用して認証できませんでした。\ncouldNotSendAuthenticationRequestMessage=アイデンティティー・プロバイダーに認証リクエストを送信することができませんでした。\nunexpectedErrorHandlingRequestMessage=アイデンティティー・プロバイダーへの認証リクエストを処理する際に予期せぬエラーが発生しました。\ninvalidAccessCodeMessage=無効なアクセスコードです。\nsessionNotActiveMessage=セッションが有効ではありません。\ninvalidCodeMessage=エラーが発生しました。アプリケーションを介して再度ログインしてください。\nidentityProviderUnexpectedErrorMessage=アイデンティティー・プロバイダーによる認証の際に予期せぬエラーが発生しました\nidentityProviderNotFoundMessage=該当の識別子を持つアイデンティティー・プロバイダーが見つかりませんでした。\nidentityProviderLinkSuccess=Eメールを正常に確認しました。元のブラウザーに戻ってログインしてください。\nstaleCodeMessage=このページはもはや有効ではありませんので、アプリケーションに戻り再度ログインしてください\nrealmSupportsNoCredentialsMessage=レルムはクレデンシャル・タイプをサポートしていません。\ncredentialSetupRequired=ログインできません。クレデンシャルのセットアップが必要です。\nidentityProviderNotUniqueMessage=レルムは複数のアイデンティティー・プロバイダーをサポートしています。どのアイデンティティー・プロバイダーが認証に使用されるべきか判断できませんでした。\nemailVerifiedMessage=メールアドレスが確認できました。\nstaleEmailVerificationLink=クリックしたリンクは古いリンクであり、有効ではありません。おそらく、すでにメールを確認しています。\nidentityProviderAlreadyLinkedMessage={0}によって返された連携済みアイデンティティーは、すでに別のユーザーにリンクされています。\nconfirmAccountLinking=アイデンティティー・プロバイダー{1}のアカウント{0}とあなたのアカウントとのリンクを確認してください。\nconfirmEmailAddressVerification=Eメールアドレス{0}の有効性を確認してください。\nconfirmExecutionOfActions=次の操作を実行します。\n\nlocale_ca=Catal\\u00E0\nlocale_de=Deutsch\nlocale_en=English\nlocale_es=Espa\\u00F1ol\nlocale_fr=Fran\\u00e7ais\nlocale_it=Italiano\nlocale_ja=\\u65E5\\u672C\\u8A9E\nlocale_nl=Nederlands\nlocale_no=Norsk\nlocale_pl=Polish\nlocale_pt_BR=Portugu\\u00EAs (Brasil)\nlocale_pt-BR=Portugu\\u00EAs (Brasil)\nlocale_ru=\\u0420\\u0443\\u0441\\u0441\\u043A\\u0438\\u0439\nlocale_lt=Lietuvi\\u0173\nlocale_zh-CN=\\u4e2d\\u6587\\u7b80\\u4f53\nlocale_sk=Sloven\\u010Dina\nlocale_sv=Svenska\n\nbackToApplication=&laquo; アプリケーションに戻る\nmissingParameterMessage=不足パラメーター\\: {0}\nclientNotFoundMessage=クライアントが見つかりません。\nclientDisabledMessage=クライアントが無効になっています。\ninvalidParameterMessage=無効なパラメーター\\: {0}\nalreadyLoggedIn=既にログインしています。\ndifferentUserAuthenticated=すでにこのセッションで異なるユーザー''{0}''として認証されています。まずログアウトしてください。\nbrokerLinkingSessionExpired=要求されたブローカー・アカウントのリンクは、現在のセッションでは有効ではありません。\nproceedWithAction=&raquo; 続行するにはここをクリックしてください\n\nrequiredAction.CONFIGURE_TOTP=OTPの設定\nrequiredAction.terms_and_conditions=利用規約\nrequiredAction.UPDATE_PASSWORD=パスワードの更新\nrequiredAction.UPDATE_PROFILE=プロファイルの更新\nrequiredAction.VERIFY_EMAIL=Eメールの確認\n\ndoX509Login=次のユーザーとしてログインします\\:\nclientCertificate=X509クライアント証明書\\:\nnoCertificate=[証明書なし]\n\n\npageNotFound=ページが見つかりません\ninternalServerError=内部サーバーエラーが発生しました\n\nconsole-username=ユーザー名:\nconsole-password=パスワード:\nconsole-otp=ワンタイム・パスワード:\nconsole-new-password=新しいパスワード:\nconsole-confirm-password=パスワードの確認:\nconsole-update-password=パスワードの更新が必要です。\nconsole-verify-email=メールアドレスを確認する必要があります。確認コードを含むメールを{0}に送信しました。このコードを以下に入力してください。\nconsole-email-code=Eメールコード：\nconsole-accept-terms=利用規約に同意しますか？ [y/n]:\nconsole-accept=y\n\n# Openshift messages\nopenshift.scope.user_info=ユーザー情報\nopenshift.scope.user_check-access=ユーザーアクセス情報\nopenshift.scope.user_full=フルアクセス\nopenshift.scope.list-projects=プロジェクトの一覧表示\n\n# SAML authentication\nsaml.post-form.title=認証リダイレクト\nsaml.post-form.message=リダイレクトしています。お待ちください。\nsaml.post-form.js-disabled=JavaScriptが無効になっています。有効にすることを強くお勧めします。継続するには、下のボタンをクリックしてください。\n\n#authenticators\notp-display-name=オーセンティケーター・アプリケーション\notp-help-text=オーセンティケーター・アプリケーションから取得した確認コードを入力してください。\npassword-display-name=パスワード\npassword-help-text=パスワードを入力してログインします。\nauth-username-form-display-name=ユーザー名\nauth-username-form-help-text=ユーザー名を入力してログインを開始します\nauth-username-password-form-display-name=ユーザー名とパスワード\nauth-username-password-form-help-text=ユーザー名とパスワードを入力してログインしてください。\n\n# WebAuthn\nwebauthn-display-name=セキュリティーキー\nwebauthn-help-text=セキュリティーキーを使用してログインしてください。\nwebauthn-passwordless-display-name=セキュリティーキー\nwebauthn-passwordless-help-text=パスワードレス・ログインにセキュリティーキーを使用します。\nwebauthn-login-title=セキュリティーキー・ログイン\nwebauthn-registration-title=セキュリティーキーの登録\nwebauthn-available-authenticators=利用可能なオーセンティケーター\n\n# WebAuthn Error\nwebauthn-error-title=セキュリティーキー・エラー\nwebauthn-error-registration=セキュリティーキーを登録できませんでした。\nwebauthn-error-api-get=セキュリティーキーによる認証に失敗しました。\nwebauthn-error-different-user=最初に認証されたユーザーは、セキュリティーキーによって認証されたユーザーではありません。\nwebauthn-error-auth-verification=セキュリティーキーの認証結果が無効です。\nwebauthn-error-register-verification=セキュリティーキーの登録結果が無効です。\nwebauthn-error-user-not-found=セキュリティーキーで認証された不明なユーザー。\n\nidentity-provider-redirector=別のアイデンティティー・プロバイダーと接続する"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_lt.properties",
    "content": "# encoding: utf-8\ndoLogIn=Prisijungti\ndoRegister=Registruotis\ndoCancel=Atšaukti\ndoSubmit=Patvirtinti\ndoYes=Taip\ndoNo=Ne\ndoContinue=Tęsti\ndoAccept=Patvirtinti\ndoDecline=Atšaukti\ndoForgotPassword=Pamiršote slaptažodį?\ndoClickHere=Spauskite čia\ndoImpersonate=Apsimesti kaip\nkerberosNotConfigured=Kerberos nesukonfigūruotas\nkerberosNotConfiguredTitle=Kerberos nesukonfigūruotas\nbypassKerberosDetail=Jūs neprisijungęs per Kerberos arba Jūsų naršyklė nesukonfigūruota Kerberos prisijungimui.  Tęskite ir pasirinkite kitą prisijungimo būdą\nkerberosNotSetUp=Kerberos nesukonfigūruotas.  Jūs negalite prisijungti.\nregisterWithTitle=Registruotis su {0}\nregisterWithTitleHtml={0}\nloginTitle=Prisijungti su {0}\nloginTitleHtml={0}\nimpersonateTitle=Apsimesti kaip naudotojas {0} \nimpersonateTitleHtml=Apsimesti kaip <strong>{0}</strong>\nrealmChoice=Sritis\nunknownUser=Nežinomas naudotojas\nloginTotpTitle=Mobilaus autentifikatoriaus nustatymas\nloginProfileTitle=Atnaujinti paskyros informaciją\nloginTimeout=Užtrukote per ilgai. Prisijungimo procesas pradedamas iš naujo.\noauthGrantTitle=Suteitikti prieigą\noauthGrantTitleHtml={0}\nerrorTitle=Atsiprašome ...\nerrorTitleHtml=<strong>Atsiprašome</strong> ...\nemailVerifyTitle=El. pašto adreso patvirtinimas\nemailForgotTitle=Pamiršote slaptažodį?\nupdatePasswordTitle=Atnaujinti slaptažodį\ncodeSuccessTitle=Sėkmė\ncodeErrorTitle=Klaidos kodas\\: {0}\n\ntermsTitle=Naudojimo sąlygos\ntermsTitleHtml=Naudojimo sąlygos\ntermsText=<p>Naudojimo sąlygos nenurodytos</p>\n\nrecaptchaFailed=Recaptcha neteisingas\nrecaptchaNotConfigured=Reikalingas Recaptcha nesukonfigūruotas\nconsentDenied=Prieiga draudžiama.\n\nnoAccount=Dar neturite paskyros?\nusername=Naudotojo vardas\nusernameOrEmail=Naudotojo vardas arba el. pašto adresas\nfirstName=Vardas\ngivenName=Vardas\nfullName=Pavardė\nlastName=Pavardė\nfamilyName=Pavardė\nemail=El. paštas\npassword=Slaptažodis\npasswordConfirm=Pakartotas slaptažodis\npasswordNew=Naujas slaptažodis\npasswordNewConfirm=Pakartotas naujas slaptažodis\nrememberMe=Prisiminti mane\nauthenticatorCode=Vienkartinis kodas\naddress=Adresas\nstreet=Gatvė\nlocality=Miestas arba vietovė\nregion=Rajonas\npostal_code=Pašto kodas\ncountry=Šalis\nemailVerified=El. pašto adresas patvirtintas\ngssDelegationCredential=GSS prisijungimo duomenų delegavimas\n\nloginTotpStep1=Įdiekite <a href=\"https://freeotp.github.io/\" target=\"_blank\">FreeOTP</a> arba Google Authenticator savo įrenginyje. Programėlės prieinamos <a href=\"https://play.google.com\">Google Play</a> ir Apple App Store.\nloginTotpStep2=Atidarykite programėlę ir nuskenuokite barkodą arba įveskite kodą.\nloginTotpStep3=Įveskite programėlėje sugeneruotą vieną kartą galiojantį kodą ir paspauskite Saugoti norėdami prisijungti.\nloginOtpOneTime=Vienkartinis kodas\n\noauthGrantRequest=Ar Jūs suteikiate šias prieigos teises?\ninResource=į\n\nemailVerifyInstruction1=El. paštas su instrukcijomis ir patvirtinimo nuoroda nusiųsti į Jūsų el. paštą.\nemailVerifyInstruction2=El. paštu negavote patvirtinimo kodo?\nemailVerifyInstruction3=pakartotoinai siųsti el. laišką.\n\nemailLinkIdpTitle=Susieti {0}\nemailLinkIdp1=El. pašto laiškas su instrukcijomis susieti {0} paskyrą {1} su {2} buvo nusiųstas.\nemailLinkIdp2=Negavote patvirtinimo kodo el. paštu?\nemailLinkIdp3=pakartotoinai siųsti el. laišką.\n\nbackToLogin=&laquo; Grįžti į prisijungimo langą\n\nemailInstruction=Įveskite naudotojo vardą arba slaptažodį ir slaptažodžio pakeitimo instrukcijos bus atsiųstos Jums el. paštu \n\ncopyCodeInstruction=Nukopijuokite šį kodą į Jūsų programą:\n\npersonalInfo=Asmeninė informacija:\nrole_admin=Administratorius\nrole_realm-admin=Srities administravimas\nrole_create-realm=Kurti sritį\nrole_create-client=Kurti programą\nrole_view-realm=Peržiūrėti sritį\nrole_view-users=Peržiūrėti naudotojus\nrole_view-applications=Peržiūrėti programas\nrole_view-clients=Peržiūrėti klientines programas\nrole_view-events=Peržiūrėti įvykių žurnalą\nrole_view-identity-providers=Peržiūrėti tapatybės teikėjus\nrole_manage-realm=Valdyti sritis\nrole_manage-users=Valdyti naudotojus\nrole_manage-applications=Valdyti programas\nrole_manage-identity-providers=Valdyti tapatybės teikėjus\nrole_manage-clients=Valdyti programas\nrole_manage-events=Valdyti įvykius\nrole_view-profile=Peržiūrėti paskyrą\nrole_manage-account=Valdyti paskyrą\nrole_read-token=Skaityti prieigos rakšą\nrole_offline-access=Darbas neprisijungus\nclient_account=Paskyra\nclient_security-admin-console=Saugumo administravimo konsolė\nclient_admin-cli=Administravimo CLI\nclient_realm-management=Srities valdymas\nclient_broker=Tarpininkas\n\ninvalidUserMessage=Neteisingas naudotojo vardas arba slaptažodis.\ninvalidEmailMessage=Neteisingas el. pašto adresas.\naccountDisabledMessage=Paskyros galiojimas sustabdytas, kreipkitės į administratorių.\naccountTemporarilyDisabledMessage=Paskyros galiojimas laikinai sustabdytas. Kreipkitės į administratorių arba pabandykite vėliau.\nexpiredCodeMessage=Prisijungimo laikas baigėsi. Bandykite dar kartą.\n\nmissingFirstNameMessage=Prašome įvesti vardą.\nmissingLastNameMessage=Prašome įvesti pavardę.\nmissingEmailMessage=Prašome įvesti el. pašto adresą.\nmissingUsernameMessage=Prašome įvesti naudotojo vardą.\nmissingPasswordMessage=Prašome įvesti slaptažodį.\nmissingTotpMessage=Prašome įvesti autentifikacijos kodą.\nnotMatchPasswordMessage=Slaptažodžiai nesutampa.\n\ninvalidPasswordExistingMessage=Neteisingas dabartinis slaptažodis.\ninvalidPasswordConfirmMessage=Pakartotas slaptažodis nesutampa.\ninvalidTotpMessage=Neteisingas autentifikacijos kodas.\n\nusernameExistsMessage=Toks naudotojas jau egzistuoja.\nemailExistsMessage=El. pašto adresas jau egzistuoja.\n\nfederatedIdentityExistsMessage=Naudotojas {0} {1} jau egzistuoja. Prašome prsijungti prie naudotojų valdymo posistemės paskyrų susiejimui.\n\nconfirmLinkIdpTitle=Paskyra jau egzistuoja\nfederatedIdentityConfirmLinkMessage=Naudotojas {0} {1} jau egzistuoja. Ar tęsti?\nfederatedIdentityConfirmReauthenticateMessage=Prisijunkite norėdami susieti paskyrą su  {0}\nconfirmLinkIdpReviewProfile=Peržiūrėti naudotojo profilio informaciją\nconfirmLinkIdpContinue=Susieti su egzistuojančia paskyra\n\nconfigureTotpMessage=Paskyros aktyvavimui Jums reikalingas Mobilus autentifikatorius.\nupdateProfileMessage=Paskyros aktyvavimui Jums reikia atnaujinti profilio informaciją.\nupdatePasswordMessage=Paskyros aktyvavimui Jums reikia pakeisti slaptažodį.\nverifyEmailMessage=Paskyros aktyvavimui Jums reikia patvirtinti el. pašto adresą.\nlinkIdpMessage=El. pašto adreso susiejimui su Jūsu paskyra {0} reikalingas patvirtinimas.\n\nemailSentMessage=Netrukus turėtumėte gauti el. pašto adresą su instrukcijomis.\nemailSendErrorMessage=Klaida siunčiant el. paštą, bandykite vėliau.\n\naccountUpdatedMessage=Jųsų paskyros informacija atnaujinta.\naccountPasswordUpdatedMessage=Jūsų slaptažodis pakeistas.\n\nnoAccessMessage=Prieiga negalima\n\ninvalidPasswordMinLengthMessage=Neteisingas slaptažodis: privalomi bent {0} simboliai.\ninvalidPasswordMinDigitsMessage=Neteisingas slaptažodis: privalomi bent {0} skaitmenys.\ninvalidPasswordMinLowerCaseCharsMessage=Neteisingas slaptažodis: privalomos bent {0} mažosios raidės.\ninvalidPasswordMinUpperCaseCharsMessage=Neteisingas slaptažodis: privalomos bent {0} didžiosios raidės.\ninvalidPasswordMinSpecialCharsMessage=Neteisingas slaptažodis: privalomi bent {0} specialūs simboliai.\ninvalidPasswordNotUsernameMessage=Neteisingas slaptažodis: negali sutapti su naudotojo vardu.\ninvalidPasswordRegexPatternMessage=Neteisingas slaptažodis: neatitinka regexp taisyklės.\ninvalidPasswordHistoryMessage=Neteisingas slaptažodis: negali sutapti su prieš tai naudotais {0} slaptažodžiais.\n\nfailedToProcessResponseMessage=Klaida apdorojant atsakymą\nhttpsRequiredMessage=Privalomas HTTPS\nrealmNotEnabledMessage=Srities galiojimas išjungtas\ninvalidRequestMessage=Neteisinga užklausa\nfailedLogout=Nepavyko užbaigti sesijos\nunknownLoginRequesterMessage=Nežinomas prisijungimo prašytojas\nloginRequesterNotEnabledMessage=Prisijungimo prašytojo galiojimas išjungtas\nbearerOnlyMessage=Programos, sukonfigūruotos tik kaip perdavėjai, negali inicijuoti prisijungimą per naršyklę.\nstandardFlowDisabledMessage=Su pateiktu atsakymo tipu prisijungimas per naršyklę šiam klientui negalimas. Šiam klientui neįgalinta standartinė seka.\nimplicitFlowDisabledMessage=Su pateiktu atsakymo tipu prisijungimas per naršyklę šiam klientui negalimas. Šiam klientui neįgalinta išreikštinė seka.\ninvalidRedirectUriMessage=Neteisinga nukreipimo nuoroda\nunsupportedNameIdFormatMessage=Nepalaikomas NameIDFormat\ninvalidRequesterMessage=Neteisingas prašytojas\nregistrationNotAllowedMessage=Registracija negalima\nresetCredentialNotAllowedMessage=Prisijungimo duomenų atkūrimas negalimas\n\npermissionNotApprovedMessage=Teisį nepatvirtinta.\nnoRelayStateInResponseMessage=Tapatybės teikėjo atsakyme trūksta perdavimo būsenos.\ninsufficientPermissionMessage=Trūksta teisių tapatybių susiejimui.\ncouldNotProceedWithAuthenticationRequestMessage=Nepavyksta pradėti tapatybės teikėjo autentifikacijos užklausos.\ncouldNotObtainTokenMessage=Negaunamas prieigos raktas iš tapatybės teikėjo.\nunexpectedErrorRetrievingTokenMessage=Prieigos rakšo gavimo iš tapatybės teikėjo metu įvyko netikėta klaida.\nunexpectedErrorHandlingResponseMessage=Tapatybės teikėjo atsakymo apdorojimo metu įvyko netikėta klaida.\nidentityProviderAuthenticationFailedMessage=Autentifikacijos klaida. Nepavyksta autentifikacija su tapatybės teikėju.\ncouldNotSendAuthenticationRequestMessage=Tapatybės teikėjui nepavyksta nusiųsti autentifikacijos užklausos.\nunexpectedErrorHandlingRequestMessage=Užklausos tapatybės teikėjui formavimo metu įvyko netikėta klaida.\ninvalidAccessCodeMessage=Neteisingas prieigos kodas.\nsessionNotActiveMessage=Sesija neaktyvi.\ninvalidCodeMessage=Įvyko klaida. Prašome bandyti prisijungti dar kartą.\nidentityProviderUnexpectedErrorMessage=Autentifikavimo su išoriniu tapatybės teikėju metu įvyko netikėta klaida.\nidentityProviderNotFoundMessage=Su nurodytu identifikatoriumi nerastas tapatybės teikėjas.\nidentityProviderLinkSuccess=Jūsų naudotojo paskyra buvo sėkmingai susieta su {0} paskyra {1} .\nstaleCodeMessage=Šis puslapis nebegalioja. Prašome grįžti į programą ir bandyti prisijungti iš naujo.\nrealmSupportsNoCredentialsMessage=Sritis nepalaiko prisijungimų naudojant prisijungimo duomenis.\nidentityProviderNotUniqueMessage=Sritis palaiko daugiau nei vieną tapatybės teikėją. Negalima nustatyti kuris tapatybės teikėjas turi būti naudojamas autentifikacijai.\nemailVerifiedMessage=Jūsų el. pašto adresas patvirtintas.\nstaleEmailVerificationLink=Nuoroda, kurią paspaudėte nebegalioja? Galbūt Jūs jau patvirtinote el. pašto adresą?\n\nbackToApplication=&laquo; Grįžti į programą\nmissingParameterMessage=Nenurodytas parametras\\: {0}\nclientNotFoundMessage=Nenurodytas klientas.\nclientDisabledMessage=Kliento galiojimas išjungtas.\ninvalidParameterMessage=Neteisingas parametras\\: {0}\nalreadyLoggedIn=Jūs jau esate prisijungę.\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_nl.properties",
    "content": "# encoding: utf-8\ndoLogIn=Inloggen\ndoRegister=Registreer\ndoCancel=Annuleer\ndoSubmit=Verzenden\ndoYes=Ja\ndoNo=Nee\ndoContinue=Doorgaan\ndoIgnore=Negeer\ndoAccept=Accepteren\ndoDecline=Afwijzen\ndoForgotPassword=Wachtwoord vergeten?\ndoClickHere=Klik hier\ndoImpersonate=Identiteit overnemen\nkerberosNotConfigured=Kerberos is niet geconfigureerd\nkerberosNotConfiguredTitle=Kerberos is niet geconfigureerd\nbypassKerberosDetail=U bent niet ingelogd via Kerberos of uw browser kan niet met Kerberos inloggen. Klik op 'doorgaan' om via een andere manier in te loggen\nkerberosNotSetUp=Kerberos is onjuist geconfigureerd. U kunt niet inloggen.\nregisterTitle=Registreer\nloginTitle=Log in met {0}\nloginTitleHtml={0}\nimpersonateTitle={0} Identiteit overnemen\nimpersonateTitleHtml=<strong>{0}</strong> Identiteit overnemen\nrealmChoice=Realm\nunknownUser=Onbekende gebruiker\nloginTotpTitle=Mobile Authenticator Setup\nloginProfileTitle=Update accountinformatie\nloginTimeout=U bent te lang bezig geweest met inloggen. Het inlogproces begint opnieuw.\noauthGrantTitle=Verleen Toegang\noauthGrantTitleHtml={0}\nerrorTitle=Er is een fout opgetreden...\nerrorTitleHtml=Er is een fout opgetreden...\nemailVerifyTitle=E-mailadres-verificatie\nemailForgotTitle=Wachtwoord vergeten?\nupdatePasswordTitle=Wachtwoord updaten\ncodeSuccessTitle=Succescode\ncodeErrorTitle=Foutcode: {0}\ndisplayUnsupported=Opgevraagde weergave type is niet ondersteund\nbrowserRequired=Om in te loggen is een browser vereist\nbrowserContinue=Om het loginproces af te ronden is een browser vereist\nbrowserContinuePrompt=Open een browser en ga door met inloggen? [y/n]:\nbrowserContinueAnswer=y\n\n\ntermsTitle=Voorwaarden\ntermsText=<p>Gedefinieerde voorwaarden</p>\ntermsPlainText=Voorwaarden\n\nrecaptchaFailed=Ongeldige Recaptcha\nrecaptchaNotConfigured=Recaptcha is verplicht, maar niet geconfigureerd\nconsentDenied=Toestemming geweigerd.\n\nnoAccount=Nieuwe gebruiker?\nusername=Gebruikersnaam\nusernameOrEmail=Gebruikersnaam of e-mailadres\nfirstName=Voornaam\ngivenName=Voornaam\nfullName=Volledige naam\nlastName=Achternaam\nfamilyName=Familienaam\nemail=E-mailadres\npassword=Wachtwoord\npasswordConfirm=Bevestig wachtwoord\npasswordNew=Nieuw wachtwoord\npasswordNewConfirm=Bevestiging nieuwe wachtwoord\nrememberMe=Ingelogd blijven\nauthenticatorCode=Authenticatiecode\naddress=Adres\nstreet=Straat\nlocality=Woonplaats\nregion=Provincie of regio\npostal_code=Postcode\ncountry=Land\nemailVerified=E-mailadres geverifieerd\ngssDelegationCredential=GSS delegatie Credential\n\nprofileScopeConsentText=Gebruikersprofiel\nemailScopeConsentText=E-mailadres\naddressScopeConsentText=Adres\nphoneScopeConsentText=Telefoonnummer\nofflineAccessScopeConsentText=Offline toegang\nsamlRoleListScopeConsentText=Mijn rollen\nrolesScopeConsentText=Gebruikersrollen\n\nloginTotpIntro=U bent verplicht om tweefactor-authenticatie in te stellen om dit account te kunnen gebruiken\nloginTotpStep1=Installeer een van de volgende applicaties op uw mobile telefoon\nloginTotpStep2=Open de applicatie en scan de barcode\nloginTotpStep3=Voer de eenmalige code die door de applicatie is aangeleverd in en klik op 'Verzenden' om de setup te voltooien\nloginTotpManualStep2=Open de applicatie en voer de sleutel in\nloginTotpManualStep3=Gebruik de volgende configuratiewaarden (als de applicatie dit ondersteund)\nloginTotpUnableToScan=Lukt het scannen niet?\nloginTotpScanBarcode=Scan barcode?\nloginOtpOneTime=Eenmalige code\nloginTotpType=Type\nloginTotpAlgorithm=Algoritme\nloginTotpDigits=Cijfers\nloginTotpInterval=Interval\nloginTotpCounter=Teller\n\nloginTotp.totp=Time-based\nloginTotp.hotp=Counter-based\n\n\noauthGrantRequest=Wilt u deze toegangsrechten verlenen?\ninResource=in\n\nemailVerifyInstruction1=Een e-mail met instructies om uw e-mailadres te verifiëren is zojuist verzonden.\nemailVerifyInstruction2=Heeft u geen verificatiecode ontvangen in uw e-mail?\nemailVerifyInstruction3=om opnieuw een e-mail te versturen.\n\nemailLinkIdpTitle=Link {0}\nemailLinkIdp1=Er is een e-mail met instructies verzonden om {0} account {1} te koppelen met uw {2} account.\nemailLinkIdp2=Heeft u geen verificatiecode in uw e-mail ontvangen?\nemailLinkIdp3=om opnieuw een e-mail te versturen.\nemailLinkIdp4=Als u deze mail al geverifieerd hebt in een andere browser\nemailLinkIdp5=om door te gaan.\n\nbackToLogin=&laquo; Terug naar Inloggen\n\nemailInstruction=Voer uw gebruikersnaam of e-mailadres in en wij sturen u een e-mailbericht met instructies voor het aanmaken van een nieuw wachtwoord.\n\ncopyCodeInstruction=Kopieer deze code en plak deze in uw applicatie:\n\npageExpiredTitle=Sessie is verlopen\npageExpiredMsg1=Om het loginproces opnieuw te doen\npageExpiredMsg2=Om door te gaan met het loginproces\n\npersonalInfo=Persoonlijke informatie:\nrole_admin=Admin\nrole_realm-admin=Realm beheren\nrole_create-realm=Realm aanmaken\nrole_create-client=Client aanmaken\nrole_view-realm=Bekijk realm\nrole_view-users=Bekijk gebruikers\nrole_view-applications=Bekijk applicaties\nrole_view-clients=Bekijk clients\nrole_view-events=Bekijk gebeurtenissen\nrole_view-identity-providers=Bekijk identity providers\nrole_manage-realm=Beheer realm\nrole_manage-users=Gebruikers beheren\nrole_manage-applications=Beheer applicaties\nrole_manage-identity-providers=Beheer identity providers\nrole_manage-clients=Beheer clients\nrole_manage-events=Beheer gebeurtenissen\nrole_view-profile=Profiel bekijken\nrole_manage-account=Beheer account\nrole_manage-account-links=Beheer accountlinks\nrole_read-token=Token lezen\nrole_offline-access=Offline toegang\nclient_account=Account\nclient_security-admin-console=Security Admin Console\nclient_admin-cli=Admin CLI\nclient_realm-management=Realm-beheer\nclient_broker=Broker\n\ninvalidUserMessage=Ongeldige gebruikersnaam of wachtwoord.\ninvalidEmailMessage=Ongeldig e-mailadres.\naccountDisabledMessage=Account is uitgeschakeld, neem contact op met beheer.\naccountTemporarilyDisabledMessage=Account is tijdelijk uitgeschakeld, neem contact op met beheer of probeer het later opnieuw.\nexpiredCodeMessage=Logintijd verlopen. Gelieve opnieuw in te loggen.\nexpiredActionMessage=Actietijd verlopen. Log daarom opnieuw in.\nexpiredActionTokenNoSessionMessage=Actietijd verlopen.\nexpiredActionTokenSessionExistsMessage=Actietijd verlopen. Gelieve de actie opnieuw doen.\n\nmissingFirstNameMessage=Voer uw voornaam in.\nmissingLastNameMessage=Voer uw achternaam in.\nmissingEmailMessage=Voer uw e-mailadres in.\nmissingUsernameMessage=Voer uw gebruikersnaam in.\nmissingPasswordMessage=Voer uw wachtwoord in.\nmissingTotpMessage=Voer uw authenticatiecode in.\nnotMatchPasswordMessage=Wachtwoorden komen niet overeen.\n\ninvalidPasswordExistingMessage=Ongeldig bestaand wachtwoord.\ninvalidPasswordBlacklistedMessage=Ongeldig wachtwoord: wachtwoord is geblacklist.\ninvalidPasswordConfirmMessage=Wachtwoord komt niet overeen met wachtwoordbevestiging.\ninvalidTotpMessage=Ongeldige authenticatiecode.\n\nusernameExistsMessage=Gebruikersnaam bestaat al.\nemailExistsMessage=E-mailadres bestaat al.\n\nfederatedIdentityExistsMessage=Gebruiker met {0} {1} bestaat al. Log in met het beheerdersaccount om het account te koppelen.\n\nconfirmLinkIdpTitle=Account bestaat al\nfederatedIdentityConfirmLinkMessage=Gebruiker met {0} {1} bestaat al. Hoe wilt u doorgaan?\nfederatedIdentityConfirmReauthenticateMessage=Authenticeer om uw account te koppelen {0}\nconfirmLinkIdpReviewProfile=Nalopen profiel\nconfirmLinkIdpContinue=Voeg toe aan bestaande account\n\nconfigureTotpMessage=U moet de Mobile Authenticator configuren om uw account te activeren.\nupdateProfileMessage=U moet uw gebruikersprofiel bijwerken om uw account te activeren.\nupdatePasswordMessage=U moet uw wachtwoord wijzigen om uw account te activeren.\nresetPasswordMessage=U moet uw wachtwoord wijzigen.\nverifyEmailMessage=U moet uw e-mailadres verifiëren om uw account te activeren.\nlinkIdpMessage=U moet uw e-mailadres verifiëren om uw account te koppelen aan {0}.\n\nemailSentMessage=U ontvangt binnenkort een e-mail met verdere instructies.\nemailSendErrorMessage=Het versturen van de e-mail is mislukt, probeer het later opnieuw.\n\naccountUpdatedMessage=Uw account is gewijzigd.\naccountPasswordUpdatedMessage=Uw wachtwoord is gewijzigd.\n\ndelegationCompleteHeader=Login gelukt\ndelegationCompleteMessage=U mag uw browser sluiten en terug gaan naar uw console applicatie\ndelegationFailedHeader=Login mislukt\ndelegationFailedMessage=U mag uw browser sluiten en terug gaan naar uw console applicatie om daar het loginproces nogmaalt te proberen.\n\nnoAccessMessage=Geen toegang\n\ninvalidPasswordMinLengthMessage=Ongeldig wachtwoord, de minimumlengte is {0} karakters.\ninvalidPasswordMinDigitsMessage=Ongeldig wachtwoord, deze moet minstens {0} cijfers bevatten.\ninvalidPasswordMinLowerCaseCharsMessage=Ongeldig wachtwoord, deze moet minstens {0} kleine letters bevatten.\ninvalidPasswordMinUpperCaseCharsMessage=Ongeldig wachtwoord, deze moet minstens {0} hoofdletters bevatten.\ninvalidPasswordMinSpecialCharsMessage=Ongeldig wachtwoord, deze moet minstens {0} speciale tekens bevatten.\ninvalidPasswordNotUsernameMessage=Ongeldig wachtwoord, deze mag niet overeen komen met de gebruikersnaam.\ninvalidPasswordRegexPatternMessage=Ongeldig wachtwoord, deze komt niet overeen met opgegeven reguliere expressie(s).\ninvalidPasswordHistoryMessage=Ongeldig wachtwoord, deze mag niet overeen komen met een van de laatste {0} wachtwoorden.\ninvalidPasswordGenericMessage=Ongeldig wachtwoord: het nieuwe wachtwoord voldoet niet aan de opgestelde eisen.\n\nfailedToProcessResponseMessage=Het verwerken van de respons is mislukt\nhttpsRequiredMessage=HTTPS vereist\nrealmNotEnabledMessage=Realm niet geactiveerd\ninvalidRequestMessage=Ongeldige request\nfailedLogout=Afmelden is mislukt\nunknownLoginRequesterMessage=De login requester is onbekend\nloginRequesterNotEnabledMessage=De login requester is niet geactiveerd\nbearerOnlyMessage=Bearer-only applicaties mogen geen browserlogin initiëren\nstandardFlowDisabledMessage=Client mag geen browserlogin starten met het opgegeven response_type. Standard flow is uitgeschakeld voor de client.\nimplicitFlowDisabledMessage=Client mag geen browserlogin starten met opgegeven response_type. Implicit flow is uitgeschakeld voor de klant.\ninvalidRedirectUriMessage=Ongeldige redirect-URI\nunsupportedNameIdFormatMessage=Niet-ondersteunde NameIDFormat\ninvalidRequesterMessage=Ongeldige requester\nregistrationNotAllowedMessage=Registratie is niet toegestaan\nresetCredentialNotAllowedMessage=Het opnieuw instellen van de aanmeldgegevens is niet toegestaan\n\npermissionNotApprovedMessage=Recht verworpen.\nnoRelayStateInResponseMessage=Geen relay state in antwoord van de identity provider.\ninsufficientPermissionMessage=Onvoldoende rechten om identiteiten te koppelen.\ncouldNotProceedWithAuthenticationRequestMessage=Het authenticatieverzoek naar de identity provider wordt afgebroken.\ncouldNotObtainTokenMessage=Kon geen token bemachtigen van de identity provider.\nunexpectedErrorRetrievingTokenMessage=Onverwachte fout bij het ophalen van de token van de identity provider.\nunexpectedErrorHandlingResponseMessage=Onverwachte fout bij het verwerken van de respons van de identity provider.\nidentityProviderAuthenticationFailedMessage=Verificatie mislukt. Er kon niet worden geauthenticeerd met de identity provider.\ncouldNotSendAuthenticationRequestMessage=Kan het authenticatieverzoek niet verzenden naar de identity provider.\nunexpectedErrorHandlingRequestMessage=Onverwachte fout bij het verwerken van het authenticatieverzoek naar de identity provider.\ninvalidAccessCodeMessage=Ongeldige toegangscode.\nsessionNotActiveMessage=Sessie inactief.\ninvalidCodeMessage=Er is een fout opgetreden, probeer nogmaals in te loggen.\nidentityProviderUnexpectedErrorMessage=Onverwachte fout tijdens de authenticatie met de identity provider\nidentityProviderNotFoundMessage=Geen identity provider gevonden met deze naam.\nidentityProviderLinkSuccess=Uw account is met succes gekoppeld aan {0} account {1}.\nstaleCodeMessage=Deze pagina is verlopen. Keer terug naar uw applicatie om opnieuw in te loggen.\nrealmSupportsNoCredentialsMessage=Realm ondersteunt geen enkel soort aanmeldgegeven.\nidentityProviderNotUniqueMessage=Realm ondersteunt meerdere identity providers. Er kon niet bepaald worden welke identity provider er gebruikt zou moeten worden tijdens de authenticatie.\nemailVerifiedMessage=Uw e-mailadres is geverifieerd.\nstaleEmailVerificationLink=De link die u gebruikt is verlopen, wellicht omdat u uw e-mailadres al eerder geverifieerd heeft.\nidentityProviderAlreadyLinkedMessage=De door {0} teruggegeven gefedereerde identiteit is al aan een andere gebruiker gekoppeld.\nconfirmAccountLinking=Bevestig dat het account {0} van identity provider {1} overeenkomt met uw account.\nconfirmEmailAddressVerification=Bevestig dat e-mailadres {0} valide is.\nconfirmExecutionOfActions=Voer de volgende actie(s) uit\n\nbackToApplication=&laquo; Terug naar de applicatie\nmissingParameterMessage=Missende parameters: {0}\nclientNotFoundMessage=Client niet gevonden.\nclientDisabledMessage=Client is inactief.\ninvalidParameterMessage=Ongeldige parameter: {0}\nalreadyLoggedIn=U bent al ingelogd.\ndifferentUserAuthenticated=U bent in deze sessie al als de gebruiker \"{0}\" aangemeld. Log eerst uit.\nbrokerLinkingSessionExpired=Broker account linking aangevraagd, maar de huidige sessie in verlopen.\nproceedWithAction=&raquo; Klik hier om verder te gaan\n\nrequiredAction.CONFIGURE_TOTP=Configureer OTP\nrequiredAction.terms_and_conditions=Voorwaarden\nrequiredAction.UPDATE_PASSWORD=Update wachtwoord\nrequiredAction.UPDATE_PROFILE=Update profiel\nrequiredAction.VERIFY_EMAIL=Verifieer e-mail\n\ndoX509Login=U wordt ingelogd als\\:\nclientCertificate=X509 client certificate\\:\nnoCertificate=[No Certificate]\n\n\npageNotFound=Pagina niet gevonden\ninternalServerError=Er is een interne serverfout opgetreden\n\nconsole-username=Gebruikersnaam:\nconsole-password=Wachtwoord:\nconsole-otp=Eenmalige code:\nconsole-new-password=Nieuw wachtwoord:\nconsole-confirm-password=Bevestig wachtwoord:\nconsole-update-password=Een update van uw wachtwoord is verplicht.\nconsole-verify-email=U bent verplicht om uw e-mailadres te verifiëren. Een e-mail met de verificatiecode is naar {0} gestuurd. Voer deze code hieronder in.\nconsole-email-code=E-mail Code:\nconsole-accept-terms=Accepteert u de voorwaarden? [y/n]:\nconsole-accept=y\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_no.properties",
    "content": "doLogIn=Logg inn\ndoRegister=Registrer deg\ndoCancel=Avbryt\ndoSubmit=Send inn\ndoYes=Ja\ndoNo=Nei\ndoContinue=Fortsett\ndoAccept=Aksepter\ndoDecline=Avsl\\u00E5\ndoForgotPassword=Glemt passord?\ndoClickHere=Klikk her\ndoImpersonate=Utgi deg for \\u00E5 v\\u00E6re en annen bruker\nkerberosNotConfigured=Kerberos er ikke konfigurert\nkerberosNotConfiguredTitle=Kerberos er ikke konfigurert\nbypassKerberosDetail=Enten er du ikke logget inn via Kerberos eller s\\u00E5 st\\u00F8tter ikke nettleseren innlogging med Kerberos. Vennligst klikk Fortsett for \\u00E5 logge inn p\\u00E5 andre m\\u00E5ter\nkerberosNotSetUp=Kerberos er ikke konfigurert. Du kan ikke logge inn.\nregisterWithTitle=Registrer deg med {0}\nregisterWithTitleHtml={0}\nloginTitle=Logg inn p\\u00E5 {0}\nloginTitleHtml={0}\nimpersonateTitle={0} Gi deg ut for \\u00E5 v\\u00E6re en annen bruker\nimpersonateTitleHtml=<strong>{0}</strong> Gi deg ut for \\u00E5 v\\u00E6re en annen bruker\nrealmChoice=Sikkerhetsdomene\nunknownUser=Ukjent bruker\nloginTotpTitle=Konfigurer autentifikator for mobil\nloginProfileTitle=Oppdater konto\nloginTimeout=Du brukte for lang tid p\\u00E5 \\u00E5 logge inn. Vennligst pr\\u00F8v igjen.\noauthGrantTitle=Gi tilgang\noauthGrantTitleHtml={0}\nerrorTitle=Vi beklager...\nerrorTitleHtml=Vi <strong>beklager</strong> ...\nemailVerifyTitle=E-postbekreftelse\nemailForgotTitle=Glemt passord?\nupdatePasswordTitle=Oppdater passord\ncodeSuccessTitle=Suksesskode\ncodeErrorTitle=Feilkode\\: {0}\n\ntermsTitle=Vilk\\u00E5r og betingelser\ntermsTitleHtml=Vilk\\u00E5r og betingelser\ntermsText=<p>Vilk\\u00E5r og betingelser kommer</p>\n\nrecaptchaFailed=Ugyldig Bildebekreftelse\nrecaptchaNotConfigured=Bildebekreftelse er p\\u00E5krevet, men er ikke konfigurert\nconsentDenied=Samtykke avsl\\u00E5tt.\n\nnoAccount=Ny bruker?\nusername=Brukernavn\nusernameOrEmail=Brukernavn eller e-postadresse\nfirstName=Fornavn\ngivenName=Fornavn\nfullName=Fullstendig navn\nlastName=Etternavn\nfamilyName=Etternavn\nemail=E-postadresse\npassword=Passord\npasswordConfirm=Bekreft passord\npasswordNew=Nytt passord\npasswordNewConfirm=Bekreft nytt Passord\nrememberMe=Husk meg\nauthenticatorCode=Engangskode\naddress=Adresse\nstreet=Gate-/veinavn + husnummer\nlocality=By\nregion=Fylke\npostal_code=Postnummer\ncountry=Land\nemailVerified=E-postadresse bekreftet\ngssDelegationCredential=GSS legitimasjons-delegering\n\nloginTotpStep1=Installer <a href=\"https://freeotp.github.io/\" target=\"_blank\">FreeOTP</a> eller Google Authenticator p\\u00E5 din mobiltelefon. Begge applikasjoner er tilgjengelige p\\u00E5 <a href=\"https://play.google.com\">Google Play</a> og Apple App Store.\nloginTotpStep2=\\u00C5pne applikasjonen og skann strekkoden eller skriv inn koden\nloginTotpStep3=Skriv inn engangskoden fra applikasjonen og klikk send inn for \\u00E5 fullf\\u00F8re\nloginOtpOneTime=Engangskode\n\noauthGrantRequest=Vil du gi disse tilgangsrettighetene?\ninResource=i\n\nemailVerifyInstruction1=En e-post med instruksjoner for \\u00E5 bekrefte din e-postadresse har blitt sendt til deg.\nemailVerifyInstruction2=Ikke mottatt en bekreftelseskode i e-posten vi sendte til deg?\nemailVerifyInstruction3=for \\u00E5 sende e-post p\\u00E5 nytt.\n\nemailLinkIdpTitle=Lenke {0}\nemailLinkIdp1=En e-post med instruksjoner for \\u00E5 koble {0} konto med din {2} konto har blitt sendt til deg.\nemailLinkIdp2=Ikke mottatt en bekreftelseskode i e-posten vi sendte til deg?\nemailLinkIdp3=for \\u00E5 sende e-post p\\u00E5 nytt.\n\nbackToLogin=&laquo; Tilbake til innlogging\nemailInstruction=Skriv inn e-postadressen din og vi vil sende deg instruksjoner for hvordan du oppretter et nytt passord.\n\ncopyCodeInstruction=Vennligst kopier denne koden og lim den inn i applikasjonen din:\n\npersonalInfo=Personlig informasjon:\nrole_admin=Administrator\nrole_realm-admin=Administrator for sikkerhetsdomene\nrole_create-realm=Opprette sikkerhetsdomene\nrole_create-client=Opprette klient\nrole_view-realm=Se sikkerhetsdomene\nrole_view-users=Se brukere\nrole_view-applications=Se applikasjoner\nrole_view-clients=Se klienter\nrole_view-events=Se hendelser\nrole_view-identity-providers=Se identitetsleverand\\u00F8rer\nrole_manage-realm=Administrere sikkerhetsdomene\nrole_manage-users=Administrere brukere\nrole_manage-applications=Administrere applikasjoner\nrole_manage-identity-providers=Administrere identitetsleverand\\u00F8rer\nrole_manage-clients=Administrere klienter\nrole_manage-events=Administrere hendelser\nrole_view-profile=Se profil\nrole_manage-account=Administrere konto\nrole_read-token=Lese token\nrole_offline-access=Frakoblet tilgang\nrole_uma_authorization=Skaffe tillatelser\nclient_account=Konto\nclient_security-admin-console=Sikkerthetsadministrasjonskonsoll\nclient_realm-management=Sikkerhetsdomene-administrasjon\nclient_broker=Broker\n\ninvalidUserMessage=Ugyldig brukernavn eller passord.\ninvalidEmailMessage=Ugyldig e-postadresse.\naccountDisabledMessage=Konto er deaktivert, kontakt administrator.\naccountTemporarilyDisabledMessage=Konto er midlertidig deaktivert, kontakt administrator eller pr\\u00F8v p\\u00E5 nytt senere.\nexpiredCodeMessage=Login ble tidsavbrutt. Vennligst logg inn p\\u00E5 nytt.\n\nmissingFirstNameMessage=Vennligst oppgi fornavn.\nmissingLastNameMessage=Vennligst oppgi etternavn.\nmissingEmailMessage=Vennligst oppgi e-postadresse.\nmissingUsernameMessage=Vennligst oppgi brukernavn.\nmissingPasswordMessage=Vennligst oppgi passord.\nmissingTotpMessage=Vennligst oppgi autentiseringskode.\nnotMatchPasswordMessage=Passordene er ikke like.\n\ninvalidPasswordExistingMessage=Ugyldig eksisterende passord.\ninvalidPasswordConfirmMessage=Passord er ikke like.\ninvalidTotpMessage=Ugyldig engangskode.\n\nusernameExistsMessage=Brukernavnet finnes allerede.\nemailExistsMessage=E-post finnes allerede.\n\nfederatedIdentityExistsMessage=Bruker med {0} {1} finnes allerede. Vennligst logg inn p\\u00E5 kontoadministratsjon for \\u00E5 koble sammen kontoene.\n\nconfirmLinkIdpTitle=Kontoen finnes allerede\nfederatedIdentityConfirmLinkMessage=Bruker med {0} {1} finnes allerede. Hvordan vil du fortsette?\n#federatedIdentityConfirmReauthenticateMessage=Bekreft at du er {0} for \\u00E5 koble din konto med {1}\nconfirmLinkIdpReviewProfile=Se over og bekreft profil\nconfirmLinkIdpContinue=Legg til eksisterende konto\n\nconfigureTotpMessage=Du m\\u00E5 sette opp en engangskode-generator for \\u00E5 aktivere konto.\nupdateProfileMessage=Du m\\u00E5 oppdatere brukerprofilen din for \\u00E5 aktivere konto.\nupdatePasswordMessage=Du m\\u00E5 skifte passord for \\u00E5 aktivere kontoen din.\nverifyEmailMessage=Du m\\u00E5 bekrefte e-postadressen din for \\u00E5 aktivere konto.\nlinkIdpMessage=You need to verify your email address to link your account with {0}.\n\nemailSentMessage=Du vil straks motta en e-post med ytterlige instruksjoner.\nemailSendErrorMessage=Mislyktes \\u00E5 sende e-post, vennligst pr\\u00F8v igjen senere.\n\naccountUpdatedMessage=Din konto har blitt oppdatert.\naccountPasswordUpdatedMessage=Ditt passord har blitt oppdatert.\n\nnoAccessMessage=Ingen tilgang\n\ninvalidPasswordMinLengthMessage=Ugyldig passord: minimum lengde {0}.\ninvalidPasswordMinDigitsMessage=Ugyldig passord: m\\u00E5 inneholde minimum {0} sifre.\ninvalidPasswordMinLowerCaseCharsMessage=Ugyldig passord: m\\u00E5 inneholde minimum {0} sm\\u00E5 bokstaver.\ninvalidPasswordMinUpperCaseCharsMessage=Ugyldig passord: m\\u00E5 inneholde minimum {0} store bokstaver.\ninvalidPasswordMinSpecialCharsMessage=Ugyldig passord: m\\u00E5 inneholde minimum {0} spesialtegn.\ninvalidPasswordNotUsernameMessage=Ugyldig passord: kan ikke v\\u00E6re likt brukernavn.\ninvalidPasswordRegexPatternMessage=Ugyldig passord: tilfredsstiller ikke kravene for passord-m\\u00F8nster.\ninvalidPasswordHistoryMessage=Ugyldig passord: kan ikke v\\u00E6re likt noen av de {0} foreg\\u00E5ende passordene.\n\nfailedToProcessResponseMessage=Kunne ikke behandle svar\nhttpsRequiredMessage=HTTPS p\\u00E5krevd\nrealmNotEnabledMessage=Sikkerhetsdomene er ikke aktivert\ninvalidRequestMessage=Ugyldig foresp\\u00F8rsel\nfailedLogout=Utlogging feilet\nunknownLoginRequesterMessage=Ukjent anmoder for innlogging\nloginRequesterNotEnabledMessage=Anmoder for innlogging er ikke aktivert\nbearerOnlyMessage=Bearer-only applikasjoner har ikke lov til \\u00E5 initiere innlogging via nettleser\nstandardFlowDisabledMessage=Klienten har ikke lov til \\u00E5 initiere innlogging via nettleser med gitt response_type. Standard flow er deaktivert for denne klienten.\nimplicitFlowDisabledMessage=Klienten har ikke lov til \\u00E5 initiere innlogging via nettleser med gitt response_type. Implicit flow er deaktivert for denne klienten.\ninvalidRedirectUriMessage=Ugyldig redirect uri\nunsupportedNameIdFormatMessage=NameIDFormat er ikke st\\u00F8ttet\ninvalidRequesterMessage=Ugyldig sender av foresp\\u00F8rsel\nregistrationNotAllowedMessage=Registrering er ikke lov\nresetCredentialNotAllowedMessage=Tilbakestilling av innloggingsdata er ikke lov\n\npermissionNotApprovedMessage=Tillatelse ikke godkjent.\nnoRelayStateInResponseMessage=Ingen relay state i svar fra identitetsleverand\\u00F8r.\ninsufficientPermissionMessage=Utilstrekkelige rettigheter for \\u00E5 koble identiteter.\ncouldNotProceedWithAuthenticationRequestMessage=Kunne ikke g\\u00E5 videre med autentiseringsforesp\\u00F8rsel til identitetsleverand\\u00F8r.\ncouldNotObtainTokenMessage=Klarte ikke \\u00E5 innhente token fra identitetsleverand\\u00F8r.\nunexpectedErrorRetrievingTokenMessage=Uventet feil ved henting av token fra identitetsleverand\\u00F8r.\nunexpectedErrorHandlingResponseMessage=Uventet feil ved h\\u00E5ndtering av svar fra identitetsleverand\\u00F8r.\nidentityProviderAuthenticationFailedMessage=Autentisering feilet. Kunne ikke autentisere med identitetsleverand\\u00F8r.\ncouldNotSendAuthenticationRequestMessage=Kunne ikke sende autentiseringsforesp\\u00F8rsel til identitetsleverand\\u00F8r.\nunexpectedErrorHandlingRequestMessage=Uventet feil ved h\\u00E5ndtering av autentiseringsforesp\\u00F8rsel til identitetsleverand\\u00F8r.\ninvalidAccessCodeMessage=Ugyldig tilgangskode.\nsessionNotActiveMessage=Sesjonen er ikke aktiv.\ninvalidCodeMessage=En feil oppstod, vennligst logg inn p\\u00E5 nytt i din applikasjon.\nidentityProviderUnexpectedErrorMessage=Uventet feil ved autentisering med identitetsleverand\\u00F8r\nidentityProviderNotFoundMessage=Kunne ikke finne en identitetsleverand\\u00F8r med identifikatoren.\nidentityProviderLinkSuccess=Din konto ble suksessfullt koblet med {0} konto {1}.\nstaleCodeMessage=Denne siden er ikke lenger gyldig. Vennligst g\\u00E5 tilbake til applikasjonen din og logg inn p\\u00E5 nytt.\nrealmSupportsNoCredentialsMessage=Sikkerhetsdomene st\\u00F8tter ingen legitimasjonstyper.\nidentityProviderNotUniqueMessage=Sikkerhetsdomene st\\u00F8tter flere identitetsleverand\\u00F8rer. Kunne ikke avgj\\u00F8re hvilken identitetsleverand\\u00F8r som burde brukes for autentisering.\nemailVerifiedMessage=Din e-postadresse har blitt verifisert.\nstaleEmailVerificationLink=Lenken du klikket er utg\\u00E5tt og er ikke lenger gyldig. Har du kanskje allerede bekreftet e-postadressen din?\n\nlocale_ca=Catal\\u00E0\nlocale_de=Deutsch\nlocale_en=English\nlocale_es=Espa\\u00F1ol\nlocale_fr=Fran\\u00e7ais\nlocale_it=Italian\nlocale_ja=\\u65E5\\u672C\\u8A9E\nlocale_nl=Nederlands\nlocale_no=Norsk\nlocale_pt_BR=Portugu\\u00EAs (Brasil)\nlocale_pt-BR=Portugu\\u00EAs (Brasil)\nlocale_ru=\\u0420\\u0443\\u0441\\u0441\\u043A\\u0438\\u0439\nlocale_zh-CN=\\u4e2d\\u6587\\u7b80\\u4f53\n\nbackToApplication=&laquo; Tilbake til applikasjonen\nmissingParameterMessage=Manglende parameter\\: {0}\nclientNotFoundMessage=Klient ikke funnet.\nclientDisabledMessage=Klient deaktivert.\ninvalidParameterMessage=Ugyldig parameter\\: {0}\nalreadyLoggedIn=Du er allerede innlogget.\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_pl.properties",
    "content": "# encoding: UTF-8\ndoLogIn=Logowanie\ndoRegister=Rejestracja\ndoCancel=Anuluj\ndoSubmit=Zatwierdź\ndoYes=Tak\ndoNo=Nie\ndoContinue=Kontynuuj\ndoIgnore=Ignoruj\ndoAccept=Akceptuj\ndoDecline=Odrzuć\ndoForgotPassword=Nie pamiętasz hasła?\ndoClickHere=Kliknij tutaj\ndoImpersonate=Wciel się\nkerberosNotConfigured=Kerberos nie jest skonfigurowany\nkerberosNotConfiguredTitle=Kerberos nie jest skonfigurowany\nbypassKerberosDetail=Albo nie jesteś zalogowany przez Kerberos albo twoja przeglądarka nie jest skonfigurowana do logowania Kerberos. Kliknij kontynuuj by zalogować się w inny sposób.\nkerberosNotSetUp=Kerberos nie jest skonfigurowany. Nie można się zalogować.\nregisterTitle=Rejestracja\nloginTitle=Zaloguj się do {0}\nloginTitleHtml={0}\nimpersonateTitle=Wcielenie {0}\nimpersonateTitleHtml=Wcielenie <strong>{0}</strong>\nrealmChoice=Strefa\nunknownUser=Nieznany użytkownik\nloginTotpTitle=Konfiguracja dla Mobile Authenticator\nloginProfileTitle=Zaktualizuj informacje konta\nloginTimeout=Zbyt dużo czasu zajęło logowanie. Proces logowania rozpocznie się od nowa.\noauthGrantTitle=Przydziel dostęp dla {0}\noauthGrantTitleHtml={0}\nerrorTitle=Przykro nam...\nerrorTitleHtml=<strong>Przykro</strong> nam...\nemailVerifyTitle=Weryfikacja e-maila\nemailForgotTitle=Nie pamiętasz hasła?\nupdatePasswordTitle=Aktualizacja hasła\ncodeSuccessTitle=Kod sukcesu\ncodeErrorTitle=Kod błędu\\: {0}\ndisplayUnsupported=Żądany typ wyświetlania jest nieobsługiwany\nbrowserRequired=Do zalogowania wymagana jest przeglądarka\nbrowserContinue=Przeglądarka jest wymagana by dokończyć logowanie\nbrowserContinuePrompt=Otworzyć przeglądarkę i kontynuować logowanie? [t/n]\\:\nbrowserContinueAnswer=t\n\n\ntermsTitle=Regulamin\ntermsText=<p>Regulamin, który należy zdefiniować</p>\ntermsPlainText=Regulamin, który należy zdefiniować.\n\nrecaptchaFailed=Błędna Recaptcha\nrecaptchaNotConfigured=Recaptcha jest wymagana, ale nie skonfigurowana\nconsentDenied=Zgoda odrzucona.\n\nnoAccount=Nie masz konta?\nusername=Nazwa użytkownika (login)\nusernameOrEmail=Nazwa użytkownika lub e-mail (login)\nfirstName=Imię\ngivenName=Nadane imię\nfullName=Pełne imię i nazwisko\nlastName=Nazwisko\nfamilyName=Nazwisko rodowe\nemail=E-mail\npassword=Hasło\npasswordConfirm=Potwierdź hasło\npasswordNew=Nowe hasło\npasswordNewConfirm=Potwierdzenie nowego hasła\nrememberMe=Zapamiętaj mnie\nauthenticatorCode=Kod jednorazowy\naddress=Adres\nstreet=Ulica\nlocality=Miejscowość\nregion=Województwo\npostal_code=Kod pocztowy\ncountry=Państwo\nemailVerified=Email zweryfikowany\ngssDelegationCredential=Świadectwo przekazania uprawnień GSS\n\nprofileScopeConsentText=Profil użytkownika\nemailScopeConsentText=Adres email\naddressScopeConsentText=Adres\nphoneScopeConsentText=Numer telefonu\nofflineAccessScopeConsentText=Dostęp offline\nsamlRoleListScopeConsentText=Moje role\n\nloginTotpIntro=Aby uzyskać dostęp do tego konta, musisz skonfigurować generator haseł jednorazowych\nloginTotpStep1=Zainstaluj jedną z następujących aplikacji na telefonie komórkowym\nloginTotpStep2=Otwórz aplikację i zeskanuj kod kreskowy\nloginTotpStep3=Wprowadź jednorazowy kod podany przez aplikację i kliknij Prześlij aby zakończyć konfigurację\nloginTotpManualStep2=Otwórz aplikację i wprowadź klucz\nloginTotpManualStep3=Użyj poniższych wartości konfiguracji, jeśli aplikacja pozwala na ich ustawienie\nloginTotpUnableToScan=Nie można skanować?\nloginTotpScanBarcode=Zeskanować kod paskowy?\nloginOtpOneTime=Kod jednorazowy\nloginTotpType=Typ\nloginTotpAlgorithm=Algorytm\nloginTotpDigits=Cyfry\nloginTotpInterval=Interwał\nloginTotpCounter=Licznik\n\nloginTotp.totp=Oparte o czas\nloginTotp.hotp=Oparte o licznik\n\n\noauthGrantRequest=Czy przyznajesz te uprawnienia dostępu?\ninResource=w\n\nemailVerifyInstruction1=Została wysłana do Ciebie wiadomość e-mail z instrukcjami jak zweryfikować swój adres e-mail.\nemailVerifyInstruction2=Nie otrzymałem kodu weryfikacyjnego w wiadomości e-mail?\nemailVerifyInstruction3=aby ponownie wysłać wiadomość e-mail.\n\nemailLinkIdpTitle=Link {0}\nemailLinkIdp1=Wiadomość e-mail z instrukcjami, aby powiązać konto {0} {1} z kontem {2} została wysłana do Ciebie.\nemailLinkIdp2=Nie otrzymałem kodu weryfikacyjnego w wiadomości e-mail?\nemailLinkIdp3=aby ponownie wysłać wiadomość e-mail.\nemailLinkIdp4=Jeśli już zweryfikowana e-mail w innej przeglądarce\nemailLinkIdp5=aby kontynuować.\n\nbackToLogin=&laquo; Powrót do logowania\n\nemailInstruction=Wpisz swój adres e-mail lub nazwę użytkownika a wyślemy do Ciebie instrukcje, jak utworzyć nowe hasło.\n\ncopyCodeInstruction=Proszę skopiować ten kod i wklej go do aplikacji\\:\n\npageExpiredTitle=Strona wygasła\npageExpiredMsg1=Aby ponownie uruchomić proces logowania\npageExpiredMsg2=Aby kontynuować proces logowania\n\npersonalInfo=Informacje osobiste\\:\nrole_admin=Admin\nrole_realm-admin=Strefa Admin\nrole_create-realm=Utwórz strefę\nrole_create-client=Utwórz klienta\nrole_view-realm=Wyświetl strefę\nrole_view-users=Wyświetl użytkowników\nrole_view-applications=Wyświetl aplikacje\nrole_view-clients=Wyświetl klientów\nrole_view-events=Wyświetl zdarzenia\nrole_view-identity-providers=Wyświetl dostawców tożsamości\nrole_manage-realm=Zarządzaj strefą\nrole_manage-users=Zarządzaj użytkownikami\nrole_manage-applications=Zarządzaj aplikacjami\nrole_manage-identity-providers=Zarządzaj dostawcami tożsamości\nrole_manage-clients=Zarządzaj klientami\nrole_manage-events=Zarządzaj zdarzeniami\nrole_view-profile=Zobacz profil\nrole_manage-account=Zarządzaj kontem\nrole_manage-account-links=Zarządzanie łączami konta\nrole_read-token=Odczytu tokenu\nrole_offline-access=Dostęp offline\nclient_account=Konta\nclient_security-admin-console=Konsola administratora bezpieczeństwa\nclient_admin-cli=Admin CLI\nclient_realm-management=Zarządzanie strefą\nclient_broker=Broker\n\ninvalidUserMessage=Nieprawidłowa nazwa użytkownika lub hasło.\ninvalidEmailMessage=Nieprawidłowy adres e-mail.\naccountDisabledMessage=Konto jest wyłączone, skontaktuj się z administratorem.\naccountTemporarilyDisabledMessage=Konto jest tymczasowo wyłączone, skontaktuj się z administratorem lub spróbuj ponownie później.\nexpiredCodeMessage=Przekroczono limit czasu logowania. Proszę Zaloguj się ponownie.\nexpiredActionMessage=Akcja wygasła. Proszę kontynuować logowanie.\nexpiredActionTokenNoSessionMessage=Akcja wygasła.\nexpiredActionTokenSessionExistsMessage=Akcja wygasła. Proszę uruchomić ponownie.\n\nmissingFirstNameMessage=Proszę podać imię.\nmissingLastNameMessage=Proszę podać nazwisko.\nmissingEmailMessage=Proszę podać e-mail.\nmissingUsernameMessage=Proszę podać nazwę użytkownika.\nmissingPasswordMessage=Proszę podać hasło.\nmissingTotpMessage=Proszę podać kod uwierzytelniającego.\nnotMatchPasswordMessage=Hasła nie są zgodne.\n\ninvalidPasswordExistingMessage=Nieprawidłowe istniejące hasło.\ninvalidPasswordBlacklistedMessage=Nieprawidłowe hasło\\: hasło jest na czarnej liście.\ninvalidPasswordConfirmMessage=Potwierdzenie hasła nie pasuje.\ninvalidTotpMessage=Nieprawidłowy kod uwierzytelnienia.\n\nusernameExistsMessage=Nazwa użytkownika już istnieje.\nemailExistsMessage=Email już istnieje.\n\nfederatedIdentityExistsMessage=Użytkownik z {0} {1} już istnieje. Zaloguj się do zarządzania kontem aby połączyć konto.\n\nconfirmLinkIdpTitle=Konto już istnieje\nfederatedIdentityConfirmLinkMessage=Użytkownik z {0} {1} już istnieje. Co chcesz zrobić?\nfederatedIdentityConfirmReauthenticateMessage=Uwierzytelnij się aby połączyć swoje konto z {0}\nconfirmLinkIdpReviewProfile=Przejrzyj profil\nconfirmLinkIdpContinue=Dodaj do istniejącego konta\n\nconfigureTotpMessage=Musisz skonfigurować Mobile Authenticator aby aktywować swoje konto.\nupdateProfileMessage=Musisz zaktualizować profilu użytkownika aby aktywować swoje konto.\nupdatePasswordMessage=Musisz zmienić swoje hasło aby aktywować swoje konto.\nresetPasswordMessage=Musisz zmienić swoje hasło.\nverifyEmailMessage=Musisz zweryfikować swój adres e-mail aby aktywować swoje konto.\nlinkIdpMessage=Musisz zweryfikować swój adres e-mail, aby połączyć swoje konto z {0}.\n\nemailSentMessage=Powinieneś otrzymywać wkrótce pocztę z dalszymi instrukcjami.\nemailSendErrorMessage=Nie można wysłać wiadomości e-mail, proszę spróbować ponownie później.\n\naccountUpdatedMessage=Twoje konto zostało zaktualizowane.\naccountPasswordUpdatedMessage=Twoje hasło zostało zaktualizowane.\n\ndelegationCompleteHeader=Logowanie udane\ndelegationCompleteMessage=Możesz zamknąć okno przeglądarki i przejść wstecz do aplikacji konsoli.\ndelegationFailedHeader=Logowanie nie powiodło się\ndelegationFailedMessage=Możesz zamknąć okno przeglądarki, wrócić do aplikacji konsoli i spróbować zalogować się ponownie.\n\nnoAccessMessage=Brak dostępu\n\ninvalidPasswordMinLengthMessage=Nieprawidłowe hasło\\: minimalna długość {0}.\ninvalidPasswordMinDigitsMessage=Nieprawidłowe hasło\\: musi zawierać przynajmniej {0} cyfr.\ninvalidPasswordMinLowerCaseCharsMessage=Nieprawidłowe hasło\\: musi zawierać co najmniej {0} małych liter.\ninvalidPasswordMinUpperCaseCharsMessage=Nieprawidłowe hasło\\: musi zawierać co najmniej {0} wielkich liter.\ninvalidPasswordMinSpecialCharsMessage=Nieprawidłowe hasło\\: musi zawierać przynajmniej {0} znaków specjalnych.\ninvalidPasswordNotUsernameMessage=Nieprawidłowe hasło\\: nie może być nazwą użytkownika.\ninvalidPasswordRegexPatternMessage=Nieprawidłowe hasło\\: brak zgodności z wyrażeniem regularnym.\ninvalidPasswordHistoryMessage=Nieprawidłowe hasło\\: nie może być takie jak {0} ostatnich haseł.\ninvalidPasswordGenericMessage=Nieprawidłowe hasło\\: nowe hasło nie jest zgodne z zasadami haseł.\n\nfailedToProcessResponseMessage=Nie można przetworzyć odpowiedzi\nhttpsRequiredMessage=Wymagany HTTPS\nrealmNotEnabledMessage=Strefa nie jest aktywna\ninvalidRequestMessage=Nieprawidłowe żądanie\nfailedLogout=Wylogowanie nie powiodło się\nunknownLoginRequesterMessage=Nieznany żądający logowania\nloginRequesterNotEnabledMessage=Żądający logowania nie jest aktywny\nbearerOnlyMessage=Klienci bearer-only nie mogą inicjować logowania przez przeglądarkę\nstandardFlowDisabledMessage=Klient nie może zainicjować logowania przez przeglądarkę z podanym response_type. Standardowy przepływ jest wyłączony dla klienta.\nimplicitFlowDisabledMessage=Klient nie może zainicjować logowania przez przeglądarkę z podanym response_type. Niejawny przepływ jest wyłączony dla klienta.\ninvalidRedirectUriMessage=Nieprawidłowy uri przekierowania\nunsupportedNameIdFormatMessage=Nieobsługiwany NameIDFormat\ninvalidRequesterMessage=Nieprawidłowy żądający\nregistrationNotAllowedMessage=Rejestracja nie jest dozwolona\nresetCredentialNotAllowedMessage=Zresetowanie poświadczeń nie jest dozwolone\n\npermissionNotApprovedMessage=Uprawnienie nie zatwierdzone.\nnoRelayStateInResponseMessage=Brak przekazanego stanu w odpowiedzi dostawcy tożsamości.\ninsufficientPermissionMessage=Niewystarczające uprawnienia do łączenia tożsamości.\ncouldNotProceedWithAuthenticationRequestMessage=Nie można kontynuować żądania uwierzytelnienia do dostawcy tożsamości.\ncouldNotObtainTokenMessage=Nie można uzyskać tokenu od dostawcy tożsamości.\nunexpectedErrorRetrievingTokenMessage=Nieoczekiwany błąd podczas pobierania tokenu od dostawcy tożsamości.\nunexpectedErrorHandlingResponseMessage=Nieoczekiwany błąd podczas obsługi odpowiedzi od dostawcy tożsamości.\nidentityProviderAuthenticationFailedMessage=Uwierzytelnianie nie powiodło się. Nie można uwierzytelnić za pomocą dostawcy tożsamości.\ncouldNotSendAuthenticationRequestMessage=Nie może wysyłać żądania uwierzytelniania do dostawcy tożsamości.\nunexpectedErrorHandlingRequestMessage=Nieoczekiwany błąd podczas obsługi żądania uwierzytelnienia do dostawcy tożsamości.\ninvalidAccessCodeMessage=Nieprawidłowy kod dostępu.\nsessionNotActiveMessage=Sesja nie jest aktywna.\ninvalidCodeMessage=Wystąpił błąd, zaloguj się ponownie za pośrednictwem aplikacji.\nidentityProviderUnexpectedErrorMessage=Nieoczekiwany błąd podczas uwierzytelniania u dostawcy tożsamości\nidentityProviderNotFoundMessage=Nie można odnaleźć dostawcy tożsamości z tym identyfikatorem.\nidentityProviderLinkSuccess=Pomyślnie zweryfikowano e-mail. Wróć do oryginalnej przeglądarki i tam kontynuuj logowanie.\nstaleCodeMessage=Ta strona nie jest już ważna, proszę wrócić do aplikacji i zalogować się ponownie\nrealmSupportsNoCredentialsMessage=Strefa nie obsługuje dowolnego typu poświadczeń.\nidentityProviderNotUniqueMessage=Strefa obsługuje wielu dostawców tożsamości. Nie można określić dostawcy tożsamości, który powinien być używany do uwierzytelniania.\nemailVerifiedMessage=Twój adres e-mail został zweryfikowany.\nstaleEmailVerificationLink=Użyto nieaktualny link stanu, który stracił ważność.  Może e-mail został już zweryfikowany?\nidentityProviderAlreadyLinkedMessage=Stowarzyszona tożsamość, zwrócona przez {0} jest już połączona z innym użytkownikiem.\nconfirmAccountLinking=Potwierdź powiązanie konta {0} dostawcy tożsamości {1} z twoim kontem.\nconfirmEmailAddressVerification=Potwierdź ważność adresu e-mail {0}.\nconfirmExecutionOfActions=Wykonaj następujące akcje\n\nlocale_ca=Kataloński\nlocale_de=Niemiecki\nlocale_en=Angielski\nlocale_es=Hiszpański\nlocale_fr=Francuzki\nlocale_it=Włoski\nlocale_ja=Japoński\nlocale_nl=Holenderski\nlocale_no=Norweski\nlocale_pl=Polski\nlocale_pt_BR=Portugalski (Brazylia)\nlocale_pt-BR=Portugalski (Brazylia)\nlocale_ru=Rosyjski\nlocale_lt=Litewski\nlocale_zh-CN=Chiński uproszczony\nlocale_sk=Słowacki\nlocale_sv=Szwedzki\n\nbackToApplication=&laquo; Powrót do aplikacji\nmissingParameterMessage=Brakujące parametry\\: {0}\nclientNotFoundMessage=Klient nie znaleziony.\nclientDisabledMessage=Klient nieaktywny.\ninvalidParameterMessage=Nieprawidłowy parametr\\: {0}\nalreadyLoggedIn=Jesteś już zalogowany.\ndifferentUserAuthenticated=Jesteś już uwierzytelniona/y jako inny użytkownik ''{0}'' w tej sesji. Najpierw się wyloguj.\nbrokerLinkingSessionExpired=Żądano łączenia kont brokera, ale bieżąca sesja już jest nieważna.\nproceedWithAction=&raquo; kliknij tutaj, aby przejść\n\nrequiredAction.CONFIGURE_TOTP=Skonfiguruj OTP\nrequiredAction.terms_and_conditions=Regulamin\nrequiredAction.UPDATE_PASSWORD=Zaktualizuj hasło\nrequiredAction.UPDATE_PROFILE=Zaktualizuj profil\nrequiredAction.VERIFY_EMAIL=Zweryfikuj adres e-mail\n\ndoX509Login=Użytkownik będzie zalogowany jako\\:\nclientCertificate=X509 certyfikat klienta\\:\nnoCertificate=[brak certyfikatu]\n\n\npageNotFound=Nie znaleziono strony\ninternalServerError=Wystąpił błąd wewnętrzny serwera\n\nconsole-username=Nazwa użytkownika\\:\nconsole-password=Hasło\\:\nconsole-otp=Hasło jednorazowe\\:\nconsole-new-password=Nowe hasło\\:\nconsole-confirm-password=Potwierdź hasło\\:\nconsole-update-password=Aktualizacja hasła jest wymagana.\nconsole-verify-email=Musisz zweryfikować swój adres e-mail.  Wiadomość e-mail z kodem weryfikacyjnym została wysłana do {0}. Podaj ten kod poniżej.\nconsole-email-code=Kod z e-mail\\:\nconsole-accept-terms=Akceptujesz warunki? [t/n]\\:\nconsole-accept=t\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_pt_BR.properties",
    "content": "doLogIn=Entrar\ndoRegister=Cadastre-se\ndoCancel=Cancelar\ndoSubmit=Ok\ndoBack=Voltar\ndoYes=Sim\ndoNo=N\\u00E3o\ndoContinue=Continuar\ndoIgnore=Ignorar\ndoAccept=Aceitar\ndoDecline=Rejeitar\ndoForgotPassword=Esqueceu sua senha?\ndoClickHere=Clique aqui\ndoImpersonate=Personificar\ndoTryAgain=Tente novamente\ndoTryAnotherWay=Tente outra forma\nkerberosNotConfigured=Kerberos N\\u00E3o Configurado\nkerberosNotConfiguredTitle=Kerberos N\\u00E3o Configurado\nbypassKerberosDetail=Ou voc\\u00EA n\\u00E3o est\\u00E1 logado via Kerberos ou o seu navegador n\\u00E3o est\\u00E1 configurado para login Kerberos. Por favor, clique em continuar para fazer o login no atrav\\u00E9s de outros meios\nkerberosNotSetUp=Kerberos n\\u00E3o est\\u00E1 configurado. Voc\\u00EA n\\u00E3o pode acessar.\nregisterTitle=Registre-se\nloginTitle=Entrar em {0}\nloginTitleHtml={0}\nimpersonateTitle={0} Personificar Usu\\u00E1rio\nimpersonateTitleHtml=<strong>{0}</strong> Personificar Usu\\u00E1rio\nrealmChoice=Dom\\u00EDnio\nunknownUser=Usu\\u00E1rio desconhecido\nloginTotpTitle=Configura\\u00E7\\u00E3o do autenticador mobile\nloginProfileTitle=Atualiza\\u00E7\\u00E3o das Informa\\u00E7\\u00F5es da Conta\nloginTimeout=Voc\\u00EA demorou muito para entrar. Por favor, refa\\u00E7a o processo de login a partir do in\\u00EDcio.\noauthGrantTitle=Concess\\u00E3o OAuth\noauthGrantTitleHtml={0}\nerrorTitle=N\\u00F3s lamentamos...\nerrorTitleHtml=N\\u00F3s <strong>lamentamos</strong> ...\nemailVerifyTitle=Verifica\\u00E7\\u00E3o de e-mail\nemailForgotTitle=Esqueceu sua senha?\nupdatePasswordTitle=Atualiza\\u00E7\\u00E3o de senha\ncodeSuccessTitle=C\\u00F3digo de sucesso\ncodeErrorTitle=C\\u00F3digo de erro\\: {0}\ndisplayUnsupported=Tipo de exibi\\u00E7\\u00E3o solicitado n\\u00E3o suportado\nbrowserRequired=Navegador necess\\u00E1rio para efetuar login\nbrowserContinue=Navegador necess\\u00E1rio para concluir o login\nbrowserContinuePrompt=Abrir navegador e continuar o login? [s/n]:\nbrowserContinueAnswer=s\n\n\ntermsTitle=Termos e Condi\\u00E7\\u00F5es\ntermsText=<p>Termos e condi\\u00E7\\u00F5es a serem definidos</p>\ntermsPlainText=Termos e condi\\u00E7\\u00F5es a serem definidos.\n\nrecaptchaFailed=Recaptcha inv\\u00E1lido\nrecaptchaNotConfigured=Recaptcha \\u00E9 requerido, mas n\\u00E3o foi configurado\nconsentDenied=Consentimento negado.\n\nnoAccount=Novo usu\\u00E1rio?\nusername=Nome de usu\\u00E1rio\nusernameOrEmail=Nome de usu\\u00E1rio ou e-mail\nfirstName=Primeiro nome\ngivenName=Primeiro nome\nfullName=Nome completo\nlastName=Sobrenome\nfamilyName=Sobrenome\nemail=E-mail\npassword=Senha\npasswordConfirm=Confirme a senha\npasswordNew=Nova senha\npasswordNewConfirm=Confirma\\u00E7\\u00E3o da nova senha\nrememberMe=Mantenha-me conectado\nauthenticatorCode=C\\u00F3digo autenticador\naddress=Endere\\u00E7o\nstreet=Logradouro\nlocality=Cidade ou localidade\nregion=Estado\npostal_code=CEP\ncountry=Pa\\u00EDs\nemailVerified=E-mail verificado\ngssDelegationCredential=Delega\\u00E7\\u00E3o de Credenciais GSS\n\nprofileScopeConsentText=Perfil de usu\\u00E1rio\nemailScopeConsentText=Endere\\u00E7o de e-mail\naddressScopeConsentText=Endere\\u00E7o\nphoneScopeConsentText=N\\u00FAmero de telefone\nofflineAccessScopeConsentText=Acesso Offline\nsamlRoleListScopeConsentText=Meus Perfis de Acesso\nrolesScopeConsentText=Perfis de Acesso do Usu\\u00E1rio\n\nrestartLoginTooltip=Reiniciar o login\n\nloginTotpIntro=Voc\\u00EA precisa configurar um gerador de c\\u00F3digo de uso \\u00FAnico para acessar esta conta\nloginTotpStep1=Instale um dos seguintes aplicativos no seu celular:\nloginTotpStep2=Abra o aplicativo e leia o QRCode:\nloginTotpStep3=Digite o c\\u00F3digo \\u00FAnico fornecido pelo aplicativo e clique em Ok para concluir a configura\\u00E7\\u00E3o.\nloginTotpStep3DeviceName=Forne\\u00E7a um nome de dispositivo para ajud\\u00E1-lo a gerenciar seus dispositivos OTP.\nloginTotpManualStep2=Abra o aplicativo e digite a chave:\nloginTotpManualStep3=Use os seguintes valores de configura\\u00E7\\u00E3o se o aplicativo permitir defini-los:\nloginTotpUnableToScan=N\\u00E3o foi poss\\u00EDvel ler o QRCode?\nloginTotpScanBarcode=Ler QRCode?\nloginCredential=Credencial\nloginOtpOneTime=C\\u00F3digo \\u00FAnico\nloginTotpType=Tipo\nloginTotpAlgorithm=Algoritmo\nloginTotpDigits=D\\u00EDgitos\nloginTotpInterval=Intervalo\nloginTotpCounter=Contador\nloginTotpDeviceName=Nome do dispositivo\n\nloginTotp.totp=Baseado em tempo\nloginTotp.hotp=Baseado em contador\n\nloginChooseAuthenticator=Selecione o m\\u00E9todo de login\n\noauthGrantRequest=Voc\\u00EA concede esses privil\\u00E9gios de acesso?\ninResource=em\n\nemailVerifyInstruction1=Um e-mail com instru\\u00E7\\u00F5es para verificar o seu endere\\u00E7o de e-mail foi enviado para voc\\u00EA.\nemailVerifyInstruction2=N\\u00E3o recebeu um c\\u00F3digo de verifica\\u00E7\\u00E3o em seu e-mail?\nemailVerifyInstruction3=para reenviar o e-mail.\n\nemailLinkIdpTitle=Vincular {0}\nemailLinkIdp1=Um e-mail com instru\\u00E7\\u00F5es para vincular a conta {0} {1} com sua conta {2} foi enviado para voc\\u00EA.\nemailLinkIdp2=N\\u00E3o recebeu um c\\u00F3digo de verifica\\u00E7\\u00E3o no e-mail?\nemailLinkIdp3=para reenviar o e-mail.\nemailLinkIdp4=Se voc\\u00EA j\\u00E1 verificou o email em outro navegador\nemailLinkIdp5=para continuar.\n\nbackToLogin=&laquo; Voltar ao Login\n\nemailInstruction=Digite seu nome de usu\\u00E1rio ou endere\\u00E7o de e-mail e n\\u00F3s lhe enviaremos instru\\u00E7\\u00F5es sobre como criar uma nova senha.\n\ncopyCodeInstruction=Por favor, copie o c\\u00F3digo e cole-o em seu aplicativo:\n\npageExpiredTitle=A p\\u00E1gina expirou\npageExpiredMsg1=Para reiniciar o processo de login\npageExpiredMsg2=Para continuar o processo de login\n\npersonalInfo=Informa\\u00E7\\u00F5es Pessoais:\nrole_admin=Admininstrador\nrole_realm-admin=Admininstrador do Dom\\u00EDnio\nrole_create-realm=Criar dom\\u00EDnio\nrole_create-client=Criar cliente\nrole_view-realm=Visualizar dom\\u00EDnio\nrole_view-users=Visualizar usu\\u00E1rios\nrole_view-applications=Visualizar aplicativos\nrole_view-clients=Visualizar clientes\nrole_view-events=Visualizar eventos\nrole_view-identity-providers=Visualizar provedores de identidade\nrole_manage-realm=Gerenciar dom\\u00EDnio\nrole_manage-users=Gerenciar usu\\u00E1rios\nrole_manage-applications=Gerenciar aplicativos\nrole_manage-identity-providers=Gerenciar provedores de identidade\nrole_manage-clients=Gerenciar clientes\nrole_manage-events=Gerenciar eventos\nrole_view-profile=Visualizar perfil\nrole_manage-account=Gerenciar contas\nrole_manage-account-links=Gerenciar v\\00ED nculos de conta\nrole_read-token=Ler token\nrole_offline-access=Acesso offline\nclient_account=Conta\nclient_account-console=Console da Conta\nclient_security-admin-console=Console de Administra\\u00E7\\u00E3o de Seguran\\u00E7a\nclient_admin-cli=Admin CLI\nclient_realm-management=Gerenciamento de Dom\\u00EDnio\nclient_broker=Provedor de Identidade\n\nrequiredFields=Campos obrigat\\u00F3rios\n\ninvalidUserMessage=Nome de usu\\u00E1rio ou senha inv\\u00E1lida.\ninvalidUsernameMessage=Nome de usu\\u00E1rio inv\\u00E1lido.\ninvalidUsernameOrEmailMessage=Nome de usu\\u00E1rio ou e-mail inv\\u00E1lido.\ninvalidPasswordMessage=Senha inv\\u00E1lida.\ninvalidEmailMessage=E-mail inv\\u00E1lido.\naccountDisabledMessage=Conta desativada, contate o administrador.\naccountTemporarilyDisabledMessage=Conta temporariamente indispon\\u00EDvel, contate o administrador ou tente novamente mais tarde.\nexpiredCodeMessage=Tempo de login expirado. Por favor, fa\\u00E7a login novamente.\nexpiredActionMessage=A\\u00E7\\u00E3o expirada. Por favor, continue com o login agora.\nexpiredActionTokenNoSessionMessage=A\\u00E7\\u00E3o expirada.\nexpiredActionTokenSessionExistsMessage=A\\u00E7\\u00E3o expirada. Por favor, comece novamente.\n\nmissingFirstNameMessage=Por favor, informe o primeiro nome.\nmissingLastNameMessage=Por favor, informe o sobrenome.\nmissingEmailMessage=Por favor, informe o e-mail.\nmissingUsernameMessage=Por favor, informe o nome de usu\\u00E1rio.\nmissingPasswordMessage=Por favor, informe a senha.\nmissingTotpMessage=Por favor, informe o c\\u00F3digo autenticador.\nmissingTotpDeviceNameMessage=Por favor, informe o nome do dispositivo.\nnotMatchPasswordMessage=As senhas n\\u00E3o coincidem.\n\ninvalidPasswordExistingMessage=Senha atual inv\\u00E1lida.\ninvalidPasswordBlacklistedMessage=Senha inv\\u00E1lida de acordo com as pol\\u00EDticas estabelecidas para o dom\\u00EDnio.\ninvalidPasswordConfirmMessage=Senha de confirma\\u00E7\\u00E3o n\\u00E3o coincide.\ninvalidTotpMessage=C\\u00F3digo autenticador inv\\u00E1lido.\n\nusernameExistsMessage=Nome de usu\\u00E1rio j\\u00E1 existe.\nemailExistsMessage=E-mail j\\u00E1 existe.\n\nfederatedIdentityExistsMessage=Usu\\u00E1rio com {0} {1} j\\u00E1 existe. Por favor, entre em gerenciamento de contas para vincular a conta.\n\nconfirmLinkIdpTitle=Conta j\\u00E1 existente\nfederatedIdentityConfirmLinkMessage=Usu\\u00E1rio com {0} {1} j\\u00E1 existe. Como voc\\u00EA quer continuar?\nfederatedIdentityConfirmReauthenticateMessage=Autenticar para vincular sua conta com {0}\nconfirmLinkIdpReviewProfile=Revisar informa\\u00E7\\u00F5es do perfil\nconfirmLinkIdpContinue=Vincular \\u00E0 conta existente\n\nconfigureTotpMessage=Voc\\u00EA precisa configurar seu celular com o autenticador Mobile para ativar sua conta.\nupdateProfileMessage=Voc\\u00EA precisa atualizar o seu perfil de usu\\u00E1rio para ativar sua conta.\nupdatePasswordMessage=Voc\\u00EA precisa mudar sua senha para ativar sua conta.\nresetPasswordMessage=Voc\\u00EA precisa mudar sua senha.\nverifyEmailMessage=Voc\\u00EA precisa verificar o seu endere\\u00E7o de e-mail para ativar sua conta.\nlinkIdpMessage=Voc\\u00EA precisa confirmar o seu endere\\u00E7o de e-mail para vincular sua conta com {0}.\n\nemailSentMessage=Voc\\u00EA dever\\u00E1 receber um e-mail em breve com mais instru\\u00E7\\u00F5es.\nemailSendErrorMessage=Falha ao enviar e-mail, por favor, tente novamente mais tarde.\n\naccountUpdatedMessage=Sua conta foi atualizada.\naccountPasswordUpdatedMessage=Sua senha foi atualizada.\n\ndelegationCompleteHeader=Autentica\\u00E7\\u00E3o Bem Sucedida\ndelegationCompleteMessage=YVoc\\00EA  pode fechar esta janela do navegador e voltar ao seu aplicativo.\ndelegationFailedHeader=Falha na Autentica\\u00E7\\u00E3o\ndelegationFailedMessage=Voc\\u00EA pode fechar esta janela do navegador e voltar ao aplicativo e tentar fazer login novamente.\n\nnoAccessMessage=Sem acesso\n\ninvalidPasswordMinLengthMessage=Senha inv\\u00E1lida\\: comprimento m\\u00EDnimo {0}\ninvalidPasswordMinDigitsMessage=Senha inv\\u00E1lida\\: deve conter pelo menos {0} n\\u00FAmero(s)\ninvalidPasswordMinLowerCaseCharsMessage=Senha inv\\u00E1lida\\: deve conter pelo menos {0} caractere(s) min\\u00FAsculo\ninvalidPasswordMinUpperCaseCharsMessage=Senha inv\\u00E1lida\\: deve conter pelo menos {0} caractere(s) mai\\u00FAsculo\ninvalidPasswordMinSpecialCharsMessage=Senha inv\\u00E1lida\\: deve conter pelo menos {0} caractere(s) especial\ninvalidPasswordNotUsernameMessage=Senha inv\\u00E1lida\\: n\\u00E3o deve ser igual ao nome de usu\\u00E1rio\ninvalidPasswordRegexPatternMessage=Senha inv\\u00E1lida\\: n\\u00E3o corresponde ao padr\\u00E3o da express\\u00E3o regular.\ninvalidPasswordHistoryMessage=Senha inv\\u00E1lida\\: n\\u00E3o pode ser igual a qualquer uma das {0} \\u00FAltimas senhas.\ninvalidPasswordGenericMessage=Senha inv\\u00E1lida: a nova senha n\\u00E3o corresponde \\u00E0s pol\\u00EDticas de senha.\n\nfailedToProcessResponseMessage=Falha ao processar a resposta\nhttpsRequiredMessage=HTTPS requerido\nrealmNotEnabledMessage=Dom\\u00EDnio desativado\ninvalidRequestMessage=Pedido inv\\u00E1lido\nfailedLogout=Falha ao sair\nunknownLoginRequesterMessage=Solicitante de login desconhecido\nloginRequesterNotEnabledMessage=Solicitante de login desativado\nbearerOnlyMessage=Aplicativos somente ao portador n\\u00E3o tem permiss\\u00E3o para iniciar o login pelo navegador\nstandardFlowDisabledMessage=Cliente n\\u00E3o tem permiss\\u00E3o para iniciar o login com response_type informado. O fluxo padr\\u00E3o est\\u00E1 desabilitado para o cliente.\nimplicitFlowDisabledMessage=Cliente n\\u00E3o tem permiss\\u00E3o para iniciar o login com response_type informado. O fluxo impl\\u00EDcito est\\u00E1 desabilitado para o cliente.\ninvalidRedirectUriMessage=URI de redirecionamento inv\\u00E1lido\nunsupportedNameIdFormatMessage=NameIDFormat n\\u00E3o suportado\ninvalidRequesterMessage=Solicitante inv\\u00E1lido\nregistrationNotAllowedMessage=Registro n\\u00E3o permitido.\nresetCredentialNotAllowedMessage=N\\u00E3o \\u00E9 permitido redefinir credencial.\n\npermissionNotApprovedMessage=Permiss\\u00E3o n\\u00E3o aprovada.\nnoRelayStateInResponseMessage=Sem estado de retransmiss\\u00E3o na resposta do provedor de identidade.\ninsufficientPermissionMessage=Permiss\\u00F5es insuficientes para vincular identidades.\ncouldNotProceedWithAuthenticationRequestMessage=N\\u00E3o foi poss\\u00EDvel proceder \\u00E0 solicita\\u00E7\\u00E3o de autentica\\u00E7\\u00E3o para provedor de identidade.\ncouldNotObtainTokenMessage=N\\u00E3o foi poss\\u00EDvel obter token do provedor de identidade.\nunexpectedErrorRetrievingTokenMessage=Erro inesperado ao recuperar token do provedor de identidade.\nunexpectedErrorHandlingResponseMessage=Erro inesperado ao manusear resposta do provedor de identidade.\nidentityProviderAuthenticationFailedMessage=Falha na autentica\\u00E7\\u00E3o. N\\u00E3o foi poss\\u00EDvel autenticar com o provedor de identidade.\ncouldNotSendAuthenticationRequestMessage=N\\u00E3o foi poss\\u00EDvel enviar solicita\\u00E7\\u00E3o de autentica\\u00E7\\u00E3o para o provedor de identidade.\nunexpectedErrorHandlingRequestMessage=Erro inesperado ao manusear pedido de autentica\\u00E7\\u00E3o para provedor de identidade.\ninvalidAccessCodeMessage=C\\u00F3digo de acesso inv\\u00E1lido.\nsessionNotActiveMessage=Sess\\u00E3o inativa.\ninvalidCodeMessage=C\\u00F3digo inv\\u00E1lido, por favor fa\\u00E7a login novamente atrav\\u00E9s de sua aplica\\u00E7\\u00E3o.\nidentityProviderUnexpectedErrorMessage=Erro inesperado durante a autentica\\u00E7\\u00E3o com o provedor de identidade\nidentityProviderNotFoundMessage=N\\u00E3o foi poss\\u00EDvel encontrar um provedor de identidade com o identificador.\nidentityProviderLinkSuccess=Sua conta foi vinculada com sucesso com {0} conta {1} .\nstaleCodeMessage=Esta p\\u00E1gina n\\u00E3o \\u00E9 mais v\\u00E1lida. Volte ao seu aplicativo e fa\\u00E7a login novamente\nrealmSupportsNoCredentialsMessage=O dom\\u00EDnio n\\u00E3o suporta qualquer tipo de credencial.\ncredentialSetupRequired=N\\u00E3o \\u00E9 poss\\u00EDvel fazer o login, \\u00E9 necess\\u00E1ria configura\\u00E7\\u00E3o de credencial.\nidentityProviderNotUniqueMessage=O dom\\u00EDnio suporta m\\u00FAltiplos provedores de identidade. N\\u00E3o foi poss\\u00EDvel determinar qual o provedor de identidade deve ser usado para se autenticar.\nemailVerifiedMessage=O seu endere\\u00E7o de e-mail foi confirmado.\nstaleEmailVerificationLink=O link em que voc\\u00EA clicou \\u00E9 um link antigo e n\\u00E3o \\u00E9 mais v\\u00E1lido. Talvez voc\\u00EA j\\u00E1 tenha verificado seu e-mail.\nidentityProviderAlreadyLinkedMessage=A conta retornada do {0} j\\u00E1 est\\u00E1 vinculada a outro usu\\u00E1rio.\nconfirmAccountLinking=Confirme a vincula\\u00E7\\u00E3o da conta {0} do provedor de identidade {1} \\u00E0 sua conta.\nconfirmEmailAddressVerification=Confirme a validade do endere\\u00E7o de e-mail {0}.\nconfirmExecutionOfActions=Execute a(s) seguinte(s) a\\u00E7\\u00E3o(\\u00F5es)\n\nlocale_ca=Catal\\u00E0\nlocale_de=Deutsch\nlocale_en=English\nlocale_es=Espa\\u00F1ol\nlocale_fr=Fran\\u00E7ais\nlocale_it=Italiano\nlocale_ja=\\u65E5\\u672C\\u8A9E\nlocale_nl=Nederlands\nlocale_no=Norsk\nlocale_pl=Polish\nlocale_pt_BR=Portugu\\u00EAs (Brasil)\nlocale_pt-BR=Portugu\\u00EAs (Brasil)\nlocale_ru=\\u0420\\u0443\\u0441\\u0441\\u043A\\u0438\\u0439\nlocale_lt=Lietuvi\\u0173\nlocale_zh-CN=\\u4E2D\\u6587\\u7B80\\u4F53\nlocale_sk=Sloven\\u010Dina\nlocale_sv=Svenska\n\nbackToApplication=&laquo; Voltar para o aplicativo\nmissingParameterMessage=Par\\u00E2metros ausentes\\: {0}\nclientNotFoundMessage=Cliente n\\u00E3o encontrado.\nclientDisabledMessage=Cliente desativado.\ninvalidParameterMessage=Par\\u00E2mentro inv\\u00E1lido\\: {0}\nalreadyLoggedIn=Voc\\u00EA j\\u00E1 est\\u00E1 logado.\ndifferentUserAuthenticated=Voc\\u00EA j\\u00E1 est\\u00E1 autenticado como usu\\u00E1rio diferente ''{0}'' nesta sess\\u00E3o. Por favor, saia primeiro.\nbrokerLinkingSessionExpired=Vincula\\u00E7\\u00E3o de conta do provedor de identidade solicitada, mas a sess\\u00E3o atual n\\u00E3o \\u00E9 mais v\\u00E1lida.\nproceedWithAction=&raquo; Clique aqui para continuar\n\nrequiredAction.CONFIGURE_TOTP=Configurar OTP\nrequiredAction.terms_and_conditions=Termos e Condi\\u00E7\\u00F5es\nrequiredAction.UPDATE_PASSWORD=Atualizar Senha\nrequiredAction.UPDATE_PROFILE=Atualizar Perfil\nrequiredAction.VERIFY_EMAIL=Verificar E-mail\n\ndoX509Login=Voc\\u00EA ser\\u00E1 logado como\\:\nclientCertificate=Certificado X509 do cliente\\:\nnoCertificate=[Sem Certificado]\n\n\npageNotFound=P\\u00E1gina n\\u00E3o encontrada\ninternalServerError=Ocorreu um erro interno no servidor\n\nconsole-username=Nome do usu\\u00E1rio:\nconsole-password=Senha:\nconsole-otp=C\\u00F3digo \\u00FAnico:\nconsole-new-password=Nova Senha:\nconsole-confirm-password=Confirma\\u00E7\\u00E3o de senha:\nconsole-update-password=\\u00C9 necess\\u00E1rio atualizar sua senha.\nconsole-verify-email=Voc\\u00EA precisa verificar seu endere\\u00E7o de e-mail.  Enviamos um email para {0} que cont\\u00E9m um c\\u00F3digo de verifica\\u00E7\\u00E3o.  Digite este c\\u00F3digo no campo abaixo.\nconsole-email-code=C\\u00F3digo do email:\nconsole-accept-terms=Aceita os termos? [s/n]:\nconsole-accept=s\n\n# Openshift messages\nopenshift.scope.user_info=Informa\\u00E7\\u00E3o do usu\\u00E1rio\nopenshift.scope.user_check-access=Informa\\u00E7\\u00E3o de acesso do usu\\u00E1rio\nopenshift.scope.user_full=Acesso Completo\nopenshift.scope.list-projects=Listar projetos\n\n# SAML authentication\nsaml.post-form.title=Redirecionamento de autentica\\u00E7\\u00E3o\nsaml.post-form.message=Redirecionando. Por favor, aguarde.\nsaml.post-form.js-disabled=O JavaScript est\\u00E1 desabilitado. \\u00C9 altamente recomend\\u00E1vel habilit\\u00E1-lo. Clique no bot\\u00E3o abaixo para continuar. \n\n#authenticators\notp-display-name=Aplicativo Autenticador\notp-help-text=Digite um c\\u00F3digo de verifica\\u00E7\\u00E3o do aplicativo autenticador.\npassword-display-name=Senha\npassword-help-text=Fa\\u00E7a o login digitando sua senha.\nauth-username-form-display-name=Nome de usu\\u00E1rio\nauth-username-form-help-text=Fa\\u00E7a o login digitando seu nome de usu\\u00E1rio.\nauth-username-password-form-display-name=Nome de usu\\u00E1rio e senha\nauth-username-password-form-help-text=Fa\\u00E7a o login digitando seu nome de usu\\u00E1rio e senha.\n\n# WebAuthn\nwebauthn-display-name=Chave de Seguran\\u00E7a\nwebauthn-help-text=Use sua chave de seguran\\u00E7a para fazer login.\nwebauthn-passwordless-display-name=Chave de Seguran\\u00E7a\nwebauthn-passwordless-help-text=Use sua chave de seguran\\u00E7a para fazer login sem senha.\nwebauthn-login-title=Login com Chave de Seguran\\u00E7a\nwebauthn-registration-title=Registro com Chave de Seguran\\u00E7a\nwebauthn-available-authenticators=Autenticadores dispon\\u00EDveis\n\n# WebAuthn Error\nwebauthn-error-title=Erro de Chave de Seguran\\u00E7a\nwebauthn-error-registration=Falha ao registrar sua Chave de Seguran\\u00E7a.\nwebauthn-error-api-get=Falha ao autenticar usando Chave de Seguran\\u00E7a.\nwebauthn-error-different-user=O primeiro usu\\u00E1rio autenticado n\\u00E3o \\u00E9 aquele autenticado pela Chave de Seguran\\u00E7a.\nwebauthn-error-auth-verification=O resultado da autentica\\u00E7\\u00E3o da Chave de Seguran\\u00E7a \\u00E9 inv\\u00E1lido.\nwebauthn-error-register-verification=O resultado do registro da Chave de Seguran\\u00E7a \\u00E9 inv\\u00E1lido.\nwebauthn-error-user-not-found=Usu\\u00E1rio desconhecido autenticado pela Chave de Seguran\\u00E7a.\n\nidentity-provider-redirector=Conecte-se com outro Provedor de Identidade\n\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_ru.properties",
    "content": "# encoding: utf-8\ndoLogIn=Вход\ndoRegister=Регистрация\ndoCancel=Отмена\ndoSubmit=Подтвердить\ndoYes=Да\ndoNo=Нет\ndoContinue=Продолжить\ndoAccept=Подтвердить\ndoDecline=Отменить\ndoForgotPassword=Забыли пароль?\ndoClickHere=Нажмите сюда\ndoImpersonate=Имперсонализироваться\nkerberosNotConfigured=Kerberos не сконфигурирован\nkerberosNotConfiguredTitle=Kerberos не сконфигурирован\nbypassKerberosDetail=Либо вы не вошли в систему с помощью Kerberos, либо ваш браузер не настроен для входа в систему Kerberos. Пожалуйста, нажмите кнопку 'Продолжить' для входа в с помощью других средств\nkerberosNotSetUp=Kerberos не настроен. Вы не можете войти.\nregisterWithTitle=Зарегистрироваться с {0}\nregisterWithTitleHtml={0}\nloginTitle=Log in to {0}\nloginTitleHtml={0}\nimpersonateTitle={0} Имперсонализация пользователя\nimpersonateTitleHtml=<strong>{0}</strong> Имперсонализация пользователя\nrealmChoice=Realm\nunknownUser=Неизвестный пользователь\nloginTotpTitle=Настройка мобильного аутентификатора\nloginProfileTitle=Обновление информации учетной записи\nloginTimeout=Вы слишком долго бездействовали. Процесс аутентификации начнется с начала.\noauthGrantTitle=Согласовать доступ\noauthGrantTitleHtml={0}\nerrorTitle=Мы сожалеем...\nerrorTitleHtml=Мы <strong>сожалеем</strong> ...\nemailVerifyTitle=Подтверждение адреса E-mail\nemailForgotTitle=Забыли пароль?\nupdatePasswordTitle=Обновление пароля\ncodeSuccessTitle=Успешный код\ncodeErrorTitle=Ошибочный код\\: {0}\n\ntermsTitle=Условия и положения\ntermsTitleHtml=Условия и положения\ntermsText=<p>Условия и положения должны быть определены</p>\n\nrecaptchaFailed=Некорректная Recaptcha\nrecaptchaNotConfigured=Recaptcha требуется, но не сконфигурирована\nconsentDenied=В согласовании отказано.\n\nnoAccount=Новый пользователь?\nusername=Имя пользователя\nusernameOrEmail=Имя пользователя или E-mail\nfirstName=Имя\ngivenName=Выданное имя\nfullName=Полное имя\nlastName=Фамилия\nfamilyName=Фамилия\nemail=E-mail\npassword=Пароль\npasswordConfirm=Подтверждение пароля\npasswordNew=Новый пароль\npasswordNewConfirm=Подтверждение нового пароля\nrememberMe=Запомнить меня\nauthenticatorCode=Одноразовый код\naddress=Адрес\nstreet=Улица\nlocality=Город\nregion=Регион\npostal_code=Почтовый индекс\ncountry=Страна\nemailVerified=E-mail подтвержден\ngssDelegationCredential=Делегирование учетных данных GSS\n\nloginTotpStep1=Установите <a href=\"https://freeotp.github.io/\" target=\"_blank\">FreeOTP</a> или Google Authenticator. Оба приложения доступны в <a href=\"https://play.google.com\">Google Play</a> и Apple App Store.\nloginTotpStep2=Откройте приложение и просканируйте баркод, либо введите ключ\nloginTotpStep3=Введите одноразовый пароль, выданный приложением, и нажмите сохранить для завершения установки\nloginOtpOneTime=Одноразовый пароль\n\noauthGrantRequest=Вы согласуете доступ к этим привелегиям?\ninResource=в\n\nemailVerifyInstruction1=Вам было отправлено письмо с инструкциями для подтверждения адреса E-mail.\nemailVerifyInstruction2=Не получили письмо с кодом подтверждения?\nemailVerifyInstruction3=для повторной отправки письма.\n\nemailLinkIdpTitle=Связать {0}\nemailLinkIdp1=Вам было отправлено письмо с инструкциями по объединению {0} учетной записи {1} с вашей учетной записью {2}.\nemailLinkIdp2=Не получили код подтверждения на ваш E-mail?\nemailLinkIdp3=для повторной отправки письма.\n\nbackToLogin=&laquo; Назад ко входу\n\nemailInstruction=Введите Ваше имя пользователя или E-mail и мы вышлем Вам инструкции по получению нового пароля.\n\ncopyCodeInstruction=Пожалуйста, скопируйте этот код в приложение:\n\npersonalInfo=Персональная информация:\nrole_admin=Администратор\nrole_realm-admin=Администратор realm\nrole_create-realm=Создание realm\nrole_create-client=Создание клиента\nrole_view-realm=Просмотр realm\nrole_view-users=Просмотр пользователей\nrole_view-applications=Просмотр приложений\nrole_view-clients=Просмотр клиентов\nrole_view-events=Просмотр событий\nrole_view-identity-providers=Просмотр провайдеров учетных записей\nrole_manage-realm=Управление realm\nrole_manage-users=Управление пользователями\nrole_manage-applications=Управление приложениями\nrole_manage-identity-providers=Управление провайдерами учетных записей\nrole_manage-clients=Управление клиентами\nrole_manage-events=Управление событиями\nrole_view-profile=Просмотр профиля\nrole_manage-account=Управление учетной записью\nrole_read-token=Чтение токена\nrole_offline-access=Оффлайн доступ\nclient_account=Учетная запись\nclient_security-admin-console=Консоль администратора безопасности\nclient_admin-cli=Командный интерфейс администратора\nclient_realm-management=Управление realm\nclient_broker=Брокер\n\ninvalidUserMessage=Неправильное имя пользователя или пароль.\ninvalidEmailMessage=Неправильный E-mail.\naccountDisabledMessage=Учетная запись заблокирована, свяжитесь с администратором.\naccountTemporarilyDisabledMessage=Учетная запись временно заблокирована, свяжитесь с администратором или попробуйте позже.\nexpiredCodeMessage=Вход просрочен по таймауту. Пожалуйста, войдите снова.\n\nmissingFirstNameMessage=Пожалуйста введите имя.\nmissingLastNameMessage=Пожалуйста введите фамилию.\nmissingEmailMessage=Пожалуйста введите E-mail.\nmissingUsernameMessage=Пожалуйста введите имя пользователя.\nmissingPasswordMessage=Пожалуйста введите пароль.\nmissingTotpMessage=Пожалуйста введите код аутентификатора.\nnotMatchPasswordMessage=Пароли не совпадают.\n\ninvalidPasswordExistingMessage=Неверный существующий пароль.\ninvalidPasswordConfirmMessage=Подтверждение пароля не совпадает.\ninvalidTotpMessage=Неверный код аутентификатора.\n\nusernameExistsMessage=Имя пользователя уже занято.\nemailExistsMessage=E-mail уже существует.\n\nfederatedIdentityExistsMessage=Пользователь с {0} {1} уже существует. Пожалуйста войдите в управление учетными записями, чтобы связать эту учетную запись.\n\nconfirmLinkIdpTitle=Учетная запись уже существует\nfederatedIdentityConfirmLinkMessage=Пользователь с {0} {1} уже сущестует. Хотите продолжить?\nfederatedIdentityConfirmReauthenticateMessage=Аутентифицируйтесь, чтобы связать Вашу учетную запись с {0}\nconfirmLinkIdpReviewProfile=Обзор профиля\nconfirmLinkIdpContinue=Добавить в существующую учетную запись\n\nconfigureTotpMessage=Вам необходимо настроить аутентификатор в мобильном устройстве, чтобы активировать учетную запись.\nupdateProfileMessage=Вам необходимо обновить свой профиль, чтобы активировать Вашу учетную запись.\nupdatePasswordMessage=Вам необходимо изменить пароль, чтобы активировать Вашу учетную запись.\nverifyEmailMessage=Вам необходимо подтвердить Ваш E-mail, чтобы активировать Вашу учетную запись.\nlinkIdpMessage=Вам необходимо подтвердить Ваш E-mail, чтобы связать Вашу учетную запись с {0}.\n\nemailSentMessage=В ближайшее время Вы должны получить письмо с дальнейшими инструкциями.\nemailSendErrorMessage=Не получается отправить письмо. Пожалуйста, повторите позже.\n\naccountUpdatedMessage=Ваша учетная запись успешно обновлена.\naccountPasswordUpdatedMessage=Ваш пароль успешно обновлен.\n\nnoAccessMessage=Нет доступа\n\ninvalidPasswordMinLengthMessage=Некорректный пароль: длина пароля должна быть не менее {0} символов(а).\ninvalidPasswordMinDigitsMessage=Некорректный пароль: пароль должен содержать не менее {0} цифр(ы).\ninvalidPasswordMinLowerCaseCharsMessage=Некорректный пароль: пароль должен содержать не менее {0} символов(а) в нижнем регистре.\ninvalidPasswordMinUpperCaseCharsMessage=Некорректный пароль: пароль должен содержать не менее {0} символов(а) в верхнем регистре.\ninvalidPasswordMinSpecialCharsMessage=Некорректный пароль: пароль должен содержать не менее {0} спецсимволов(а).\ninvalidPasswordNotUsernameMessage=Некорректный пароль: пароль не должен совпадать с именем пользователя.\ninvalidPasswordRegexPatternMessage=Некорректный пароль: пароль не прошел проверку по регулярному выражению.\ninvalidPasswordHistoryMessage=Некорректный пароль: пароль не должен совпадать с последним(и) {0} паролем(ями).\ninvalidPasswordGenericMessage=Некорректный пароль: новый пароль не соответствует правилам пароля.\n\nfailedToProcessResponseMessage=Не удалось обработать ответ\nhttpsRequiredMessage=Требуется HTTPS\nrealmNotEnabledMessage=Realm не включен\ninvalidRequestMessage=Неверный запрос\nfailedLogout=Выйти не удалось\nunknownLoginRequesterMessage=Неизвестный клиент\nloginRequesterNotEnabledMessage=Клиент отключен\nbearerOnlyMessage=Bearer-only приложениям не разрешается инициализация входа через браузер\nstandardFlowDisabledMessage=Клиенту не разрешается инициировать вход через браузер с данным response_type. Standard flow отключен для этого клиента.\nimplicitFlowDisabledMessage=Клиенту не разрешается инициировать вход через браузер с данным response_type. Implicit flow отключен для этого клиента.\ninvalidRedirectUriMessage=Неверный uri для переадресации\nunsupportedNameIdFormatMessage=Неподдерживаемый NameIDFormat\ninvalidRequesterMessage=Неверный запрашивающий\nregistrationNotAllowedMessage=Регистрация не разрешена\nresetCredentialNotAllowedMessage=Сброс идентификационных данных не разрешен\n\npermissionNotApprovedMessage=Разрешение не подтверждено.\nnoRelayStateInResponseMessage=Нет изменения состояния в ответе от провайдера учетных записей.\ninsufficientPermissionMessage=Недостаточно полномочий для связывания идентификаторов.\ncouldNotProceedWithAuthenticationRequestMessage=Невозможно обработать аутентификационный запрос в провайдере учетных записей.\ncouldNotObtainTokenMessage=Не удалось получить токен от провайдера учетных записей.\nunexpectedErrorRetrievingTokenMessage=Непредвиденная ошибка при получении токена от провайдера учетных записей.\nunexpectedErrorHandlingResponseMessage=Непредвиденная ошибка при обработке ответа от провайдера учетных записей.\nidentityProviderAuthenticationFailedMessage=Аутентификация провалена. Невозможно аутентифицировать с поставщиком учетных записей.\ncouldNotSendAuthenticationRequestMessage=Не получается выполнить запрос аутентификации к поставщику учетных записей.\nunexpectedErrorHandlingRequestMessage=Непредвиденная ошибка при обработке запроса аутентификации поставщика учетных записей.\ninvalidAccessCodeMessage=Неверный код доступа.\nsessionNotActiveMessage=Сессия не активна.\ninvalidCodeMessage=Произошла ошибка. Пожалуйста, войдите в систему снова через ваше приложение.\nidentityProviderUnexpectedErrorMessage=Непредвиденная ошибка при проверке подлинности поставщика учетных записей.\nidentityProviderNotFoundMessage=Не удалось найти поставщика учетных записей с данным идентификатором.\nidentityProviderLinkSuccess=Ваша учетная запись была успешно соединена с {0} учетной записью {1} .\nstaleCodeMessage=Эта страница больше не действительна, пожалуйста, вернитесь в приложение и снова войдите в систему.\nrealmSupportsNoCredentialsMessage=Realm не поддерживает никакой тип учетных данных.\nidentityProviderNotUniqueMessage=Realm поддерживает несколько поставщиков учетных записей. Не удалось определить, какой именно поставщик должен использоваться для аутентификации.\nemailVerifiedMessage=Ваш E-mail был подтвержден.\nstaleEmailVerificationLink=Ссылка, по которой Вы перешли, устарела и больше не действует. Может быть, вы уже подтвердили свой E-mail?\n\nbackToApplication=&laquo; Назад в приложение\nmissingParameterMessage=Пропущенные параметры\\: {0}\nclientNotFoundMessage=Клиент не найден.\nclientDisabledMessage=Клиент отключен.\ninvalidParameterMessage=Неверный параметр\\: {0}\nalreadyLoggedIn=Вы уже вошли.\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_sk.properties",
    "content": "# encoding: utf-8\ndoLogIn=Prihlásenie\ndoRegister=Registrácia\ndoCancel=Zrušiť\ndoSubmit=Odoslať\ndoYes=Áno\ndoNo=Nie\ndoContinue=Pokračovať\ndoAccept=Potvrdiť\ndoDecline=Odmietnuť\ndoForgotPassword=Zabudli ste heslo?\ndoClickHere=Kliknite tu\ndoImpersonate=Prevteliť\nkerberosNotConfigured=Kerberos nie je nakonfigurovaný\nkerberosNotConfiguredTitle=Kerberos nie je nakonfigurovaný\nbypassKerberosDetail=Buď nie ste prihlásený cez Kerberos, alebo váš prehliadač nie je nastavený na prihlásenie do Kerberos. Kliknutím na tlačidlo Pokračovať sa prihláste iným spôsobom\nkerberosNotSetUp=Kerberos nie je nastavený. Nemôžete sa prihlásiť.\nregisterWithTitle=Registrácia s {0}\nregisterWithTitleHtml={0}\nloginTitle=Prihlásenie do {0}\nloginTitleHtml={0}\nimpersonateTitle={0} prevteliť sa\nimpersonateTitleHtml=<strong>{0}</strong> Prevteliť sa</strong>\nrealmChoice=Realm\nunknownUser=Neznámy používateľ\nloginTotpTitle=Nastavenie mobilného autentifikátora\nloginProfileTitle=Aktualizácia informácií o účte\nloginTimeout=Prihlasovanie trvalo príliš dlho. Prihlasovací proces začína od začiatku.\noauthGrantTitle=Poskytnúť prístup\noauthGrantTitleHtml={0}\nerrorTitle=Je nám ľúto ...\nerrorTitleHtml=<strong>Ospravedlňujeme</strong> sa ...\nemailVerifyTitle=Overenie e-mailom\nemailForgotTitle=Zabudli ste heslo?\nupdatePasswordTitle=Aktualizácia hesla\ncodeSuccessTitle=Kód úspechu\ncodeErrorTitle=Kód chyby\\: {0}\n\ntermsTitle=Zmluvné podmienky\ntermsTitleHtml=Zmluvné podmienky\ntermsText=<p>Zmluvné podmienky, ktoré sa majú definovať</p>\n\nrecaptchaFailed=Neplatné Recaptcha\nrecaptchaNotConfigured=Recaptcha sa vyžaduje, ale nie je nakonfigurovaná\nconsentDenied=Súhlas bol zamietnutý.\n\nnoAccount=Nový používateľ?\nusername=Prihlasovacie meno\nusernameOrEmail=Prihlasovacie meno alebo e-mail\nfirstName=Meno\ngivenName=Meno pri narodení\nfullName=Celé meno\nlastName=Priezvisko\nfamilyName=Rodné meno\nemail=E-mail\npassword=Heslo\npasswordConfirm=Potvrdenie hesla\npasswordNew=Nové heslo\npasswordNewConfirm=Potvrdenie nového hesla\nrememberMe=Zapamätať si ma\nauthenticatorCode=Jednorazový kód\naddress=Adresa\nstreet=Ulica\nlocality=Mesto alebo lokalita\nregion=Kraj\npostal_code=PSČ\ncountry=Štát\nemailVerified=E-mail overený\ngssDelegationCredential=GSS delegované oprávnenie\n\nloginTotpStep1=Nainštalujte <a href=\"https://freeotp.github.io/\" target=\"_blank\">FreeOTP</a> alebo Google Authenticator na mobil. Obidve aplikácie sú k dispozícii v <a href=\"https://play.google.com\">Google Play</a> a Apple App Store.\nloginTotpStep2=Otvorte aplikáciu a skenujte čiarový kód alebo zadajte kľúč\nloginTotpStep3=Zadajte jednorazový kód poskytnutý aplikáciou a kliknutím na tlačidlo Odoslať dokončite nastavenie\nloginTotpManualStep2=Otvorte aplikáciu a zadajte kľúč\nloginTotpManualStep3=Používajte nasledujúce hodnoty konfigurácie, ak aplikácia umožňuje ich nastavenie\nloginTotpUnableToScan=Nemožno skenovať?\nloginTotpScanBarcode=Skenovať čiarový kód?\nloginOtpOneTime=Jednorázový kód\nloginTotpType=Typ\nloginTotpAlgorithm=Algoritmus\nloginTotpDigits=Číslica\nloginTotpInterval=Interval\nloginTotpCounter=Počítadlo\n\nloginTotp.totp=Založené na čase\nloginTotp.hotp=Založené na počítadle\n\noauthGrantRequest=Udeľujete tieto prístupové oprávnenia?\ninResource=v\n\nemailVerifyInstruction1=Bol Vám odoslaný e-mail s pokynmi na overenie vašej e-mailovej adresy.\nemailVerifyInstruction2=Nezískali ste v e-maili overovací kód?\nemailVerifyInstruction3=opätovne odoslať e-mail.\n\nemailLinkIdpTitle=Odkaz {0}\nemailLinkIdp1=Bol vám odoslaný e-mail s pokynmi na prepojenie účtu {0} {1} s vaším účtom {2}.\nemailLinkIdp2=Nezískali ste v e-maili verifikačný kód?\nemailLinkIdp3=opätovne poslať e-mail.\nemailLinkIdp4=Ak ste už overili e-mail v inom prehliadači\nemailLinkIdp5=pokračovať.\n\nbackToLogin=&laquo; Späť na prihlásenie\n\nemailInstruction=Zadajte svoje používateľské meno alebo e-mailovú adresu a my vám zašleme pokyny na vytvorenie nového hesla.\n\ncopyCodeInstruction=Prosím skopírujte tento kód a vložte ho do vašej aplikácie:\n\npageExpiredTitle=Platnosť stránky vypršala\npageExpiredMsg1=Pre reštartovanie prihlasovacieho procesu\npageExpiredMsg2=Pokračovanie prihlasovacieho procesu\n\npersonalInfo=Osobné informácie:\nrole_admin=Administrátor\nrole_realm-admin=Realm administrátor\nrole_create-realm=Vytvoriť realm\nrole_create-client=Vytvoriť klienta\nrole_view-realm=Zobraziť realm\nrole_view-users=Zobraziť používateľov\nrole_view-applications=Zobraziť aplikácie\nrole_view-clients=Zobrazenie klientov\nrole_view-events=Zobraziť udalosti\nrole_view-identity-providers=Zobrazenie poskytovateľov identity\nrole_manage-realm=Spravovať realm\nrole_manage-users=Spravovať používateľov\nrole_manage-applications=Spravovať aplikácie\nrole_manage-identity-providers=Spravovať poskytovateľov identity\nrole_manage-clients=Spravovať klientov\nrole_manage-events=Spravovať udalosti\nrole_view-profile=Zobraziť profil\nrole_manage-account=Spravovať účty\nrole_manage-account-links=Spravovať odkazy na účty\nrole_read-token=Čítať token\nrole_offline-access=Offline prístup\nclient_account=Účet klienta\nclient_security-admin-console=Administrátorská bezpečnostná konzola klienta\nclient_admin-cli=Správca CLI\nclient_realm-management=Správa realmov klienta\nclient_broker=Broker\n\ninvalidUserMessage=Neplatné používateľské meno alebo heslo.\ninvalidEmailMessage=Neplatná e-mailová adresa.\naccountDisabledMessage=Účet je zakázaný, kontaktujte administrátora.\naccountTemporarilyDisabledMessage=Účet je dočasne zakázaný, kontaktujte administrátora alebo skúste neskôr.\nexpiredCodeMessage=Platnosť prihlásenia vypršala. Prihláste sa znova.\nexpiredActionMessage=Akcia vypršala. Pokračujte prihlásením.\nexpiredActionTokenNoSessionMessage=Akcia vypršala.\nexpiredActionTokenSessionExistsMessage=Platnosť vypršala. Začnite znova.\n\nmissingFirstNameMessage=Zadajte krstné meno.\nmissingLastNameMessage=Zadajte priezvisko.\nmissingEmailMessage=Zadajte e-mail.\nmissingUsernameMessage=Zadajte používateľské meno.\nmissingPasswordMessage=Zadajte prosím heslo.\nmissingTotpMessage=Prosím, zadajte kód autentifikátora.\nnotMatchPasswordMessage=Heslá sa nezhodujú.\n\ninvalidPasswordExistingMessage=Neplatné existujúce heslo.\ninvalidPasswordBlacklistedMessage=Neplatné heslo: heslo je na čiernej listine.\ninvalidPasswordConfirmMessage=Potvrdenie hesla sa nezhoduje.\ninvalidTotpMessage=Neplatný kód autentifikátora.\n\nusernameExistsMessage=Užívateľské meno už existuje.\nemailExistsMessage=E-mail už existuje.\n\nfederatedIdentityExistsMessage=Používateľ s {0} {1} už existuje. Ak chcete prepojiť účet, prihláste sa na správu účtov.\n\nconfirmLinkIdpTitle=Účet už existuje\nfederatedIdentityConfirmLinkMessage=Používateľ s {0} {1} už existuje. Ako chcete pokračovať?\nfederatedIdentityConfirmReauthenticateMessage=Overiť prepojiť váš účet s {0}\nconfirmLinkIdpReviewProfile=Skontrolujte profil\nconfirmLinkIdpContinue=Pridať do existujúceho účtu\n\nconfigureTotpMessage=Na aktiváciu vášho účtu musíte nastaviť aplikáciu Mobile Authenticator.\nupdateProfileMessage=Ak chcete aktivovať svoj účet, musíte aktualizovať svoj užívateľský profil.\nupdatePasswordMessage=Ak chcete aktivovať svoj účet, musíte zmeniť heslo.\nresetPasswordMessage=Potrebujete zmeniť svoje heslo.\nverifyEmailMessage=Ak chcete aktivovať svoj účet, musíte overiť svoju e-mailovú adresu.\nlinkIdpMessage=Potrebujete si overiť svoju e-mailovú adresu a prepojiť svoj účet s {0}.\n\nemailSentMessage=Zakrátko by ste mali dostať e-mail s ďalšími pokynmi.\nemailSendErrorMessage=Nepodarilo sa odoslať e-mail, skúste to znova neskôr.\n\naccountUpdatedMessage=Váš účet bol aktualizovaný.\naccountPasswordUpdatedMessage=Vaše heslo bolo aktualizované.\n\nnoAccessMessage=Žiadny prístup\n\ninvalidPasswordMinLengthMessage=Neplatné heslo: minimálna dĺžka {0}.\ninvalidPasswordMinDigitsMessage=Neplatné heslo: musí obsahovať aspoň {0} číslic.\ninvalidPasswordMinLowerCaseCharsMessage=Neplatné heslo: musí obsahovať minimálne {0} malé písmená.\ninvalidPasswordMinUpperCaseCharsMessage=Neplatné heslo: musí obsahovať aspoň {0} veľké písmená.\ninvalidPasswordMinSpecialCharsMessage=Neplatné heslo: musí obsahovať aspoň {0} špeciálne znaky.\ninvalidPasswordNotUsernameMessage=Neplatné heslo: nesmie byť rovnaké ako používateľské meno.\ninvalidPasswordRegexPatternMessage=Neplatné heslo: nezhoduje sa vzormi regulérneho výrazu.\ninvalidPasswordHistoryMessage=Neplatné heslo: nesmie sa rovnať žiadnemu z posledných {0} hesiel.\ninvalidPasswordGenericMessage=Neplatné heslo: nové heslo nezodpovedá pravidlám hesiel.\n\nfailedToProcessResponseMessage=Nepodarilo sa spracovať odpoveď\nhttpsRequiredMessage=Vyžaduje sa HTTPS\nrealmNotEnabledMessage=Realm nie je povolený\ninvalidRequestMessage=Neplatná požiadavka\nfailedLogout=Odhlásenie zlyhalo\nunknownLoginRequesterMessage=Neznámy žiadateľ o prihlásenie\nloginRequesterNotEnabledMessage=Žiadateľ o prihlásenie nie je povolený\nbearerOnlyMessage=Aplikácie bearer-only nesmú inicializovať prihlásenie pomocou prehliadača\nstandardFlowDisabledMessage=Klient nesmie iniciovať prihlásenie do prehliadača s daným typom odpovede. Štandardný tok je pre klienta zakázaný.\nimplicitFlowDisabledMessage=Klient nemôže iniciovať prihlásenie do prehliadača s daným typom odpovede. Implicitný tok je pre klienta zakázaný.\ninvalidRedirectUriMessage=Neplatné redirect uri\nunsupportedNameIdFormatMessage=Nepodporovaný NameIDFormat\ninvalidRequesterMessage=Neplatný žiadateľ\nregistrationNotAllowedMessage=Registrácia nie je povolená\nresetCredentialNotAllowedMessage=Obnovenie poverenia nie je povolené\n\npermissionNotApprovedMessage=Povolenie nie je schválené.\nnoRelayStateInResponseMessage=Neexistuje relay state v odpovedi od poskytovateľa identity.\ninsufficientPermissionMessage=Nedostatočné povolenia na prepojenie identít.\ncouldNotProceedWithAuthenticationRequestMessage=Nemožno pokračovať s požiadavkou na autentifikáciu poskytovateľa identity.\ncouldNotObtainTokenMessage=Nemožno získať token od poskytovateľa identity.\nunexpectedErrorRetrievingTokenMessage=Neočakávaná chyba pri získavaní tokenu od poskytovateľa identity.\nunexpectedErrorHandlingResponseMessage=Neočakávaná chyba pri spracovaní odpovede od poskytovateľa identity.\nidentityProviderAuthenticationFailedMessage=Overenie zlyhalo. Nepodarilo sa autentizovať s poskytovateľom identity.\ncouldNotSendAuthenticationRequestMessage=Nemožno odoslať žiadosť o autentifikáciu poskytovateľovi identity.\nunexpectedErrorHandlingRequestMessage=Neočakávaná chyba pri spracovaní žiadosti o autentifikáciu poskytovateľovi identity.\ninvalidAccessCodeMessage=Neplatný prístupový kód.\nsessionNotActiveMessage=Session nie je aktívna.\ninvalidCodeMessage=Vyskytla sa chyba, prihláste sa znova prostredníctvom svojej aplikácie.\nidentityProviderUnexpectedErrorMessage=Neočakávaná chyba pri autentifikácii s poskytovateľom identity\nidentityProviderNotFoundMessage=Nepodarilo sa nájsť poskytovateľa identity s identifikátorom.\nidentityProviderLinkSuccess=Svoj e-mail ste úspešne overili. Vráťte sa späť do pôvodného prehliadača a pokračujte tam s prihlasovacími údajmi.\nstaleCodeMessage=Táto stránka už nie je platná, vráťte sa späť do aplikácie a znova sa prihláste\nrealmSupportsNoCredentialsMessage=Realm nepodporuje žiadny typ poverenia.\nidentityProviderNotUniqueMessage=Realm podporuje viacerých poskytovateľov identity. Nepodarilo sa určiť, ktorý poskytovateľ totožnosti sa má používať na autentifikáciu.\nemailVerifiedMessage=Vaša e-mailová adresa bola overená.\nstaleEmailVerificationLink=Odkaz, na ktorý ste klikli, je starý starý odkaz a už nie je platný. Možno ste už overili svoj e-mail?\nidentityProviderAlreadyLinkedMessage=Federatívna identita vrátená {0} je už prepojená s iným používateľom.\nconfirmAccountLinking=Potvrďte prepojenie účtu {0} poskytovateľa totožnosti {1} s vaším účtom.\nconfirmEmailAddressVerification=Potvrďte platnosť e-mailovej adresy {0}.\nconfirmExecutionOfActions=Vykonajte nasledujúce akcie\n\nbackToApplication=&laquo; Späť na aplikáciu\nmissingParameterMessage=Chýbajúce parametre : {0}\nclientNotFoundMessage=Klient sa nenašiel.\nclientDisabledMessage=Klient bol zneplatnený.\ninvalidParameterMessage=Neplatný parameter : {0}\nalreadyLoggedIn=Už ste prihlásený.\ndifferentUserAuthenticated=V tejto relácii ste už boli overení ako iný používateľ '' {0} ''. Najskôr sa odhláste.\nbrokerLinkingSessionExpired=Požadované prepojenie s účtom brokera, ale aktuálna relácia už nie je platná.\nproceedWithAction=&raquo; Ak chcete pokračovať, kliknite sem\n\nrequiredAction.CONFIGURE_TOTP=Konfigurácia OTP\nrequiredAction.terms_and_conditions=Zmluvné podmienky\nrequiredAction.UPDATE_PASSWORD=Aktualizovať heslo\nrequiredAction.UPDATE_PROFILE=Aktualizovať profil\nrequiredAction.VERIFY_EMAIL=Overiť e-mail\n\ndoX509Login=Budete prihlásení ako\\:\nclientCertificate=certifikát klienta X509\\:\nnoCertificate=[Bez certifikátu]\n\n\npageNotFound=Stránka nebola nájdená\ninternalServerError=Vyskytla sa interná chyba servera\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_sv.properties",
    "content": "# encoding: utf-8\ndoLogIn=Logga in\ndoRegister=Registrera\ndoCancel=Avbryt\ndoSubmit=Skicka\ndoYes=Ja\ndoNo=Nej\ndoContinue=Fortsätt\ndoAccept=Acceptera\ndoDecline=Avböj\ndoForgotPassword=Glömt lösenord?\ndoClickHere=Klicka här\ndoImpersonate=Imitera\nkerberosNotConfigured=Kerberos är inte konfigurerat\nkerberosNotConfiguredTitle=Kerberos är inte konfigurerat\nbypassKerberosDetail=Antingen så är du inte inloggad via Kerberos eller så är inte din webbläsare inställd för Kerberosinloggning. Vänligen klicka på fortsätt för att logga in på annat sätt.\nkerberosNotSetUp=Kerberos är inte inställt. Du kan inte logga in.\nregisterWithTitle=Registrera med {0}\nregisterWithTitleHtml={0}\nloginTitle=Logga in till {0}\nloginTitleHtml={0}\nimpersonateTitle={0} Imitera användare\nimpersonateTitleHtml=<strong>{0}</strong> Imitera användare\nrealmChoice=Realm\nunknownUser=Okänd användare\nloginTotpTitle=Inställning av mobilautentiserare\nloginProfileTitle=Uppdatera kontoinformation\nloginTimeout=Det tog för lång tid att logga in. Inloggningsprocessen börjar om.\noauthGrantTitle=Bevilja åtkomst\noauthGrantTitleHtml={0}\nerrorTitle=Vi ber om ursäkt...\nerrorTitleHtml=Vi ber om <strong>ursäkt</strong> ...\nemailVerifyTitle=E-postverifiering\nemailForgotTitle=Glömt ditt lösenord?\nupdatePasswordTitle=Uppdatera lösenord\ncodeSuccessTitle=Rätt kod\ncodeErrorTitle=Felkod\\: {0}\n\ntermsTitle=Användarvillkor\ntermsTitleHtml=Användarvillkor\ntermsText=<p>Användarvillkoren har ännu inte definierats</p>\n\nrecaptchaFailed=Ogiltig Recaptcha\nrecaptchaNotConfigured=Recaptcha krävs, men är inte inställd\nconsentDenied=Samtycke förnekat.\n\nnoAccount=Ny användare?\nusername=Användarnamn\nusernameOrEmail=Användarnamn eller e-post\nfirstName=Förnamn\nlastName=Efternamn\nemail=E-post\npassword=Lösenord\npasswordConfirm=Bekräfta lösenord\npasswordNew=Nytt lösenord\npasswordNewConfirm=Bekräftelse av nytt lösenord\nrememberMe=Kom ihåg mig\nauthenticatorCode=Engångskod\naddress=Adress\nstreet=Gata\nlocality=Postort\nregion=Stat, Provins eller Region\npostal_code=Postnummer\ncountry=Land\nemailVerified=E-post verifierad\ngssDelegationCredential=GSS Delegation Credential\n\nloginTotpStep1=Installera <a href=\"https://freeotp.github.io/\" target=\"_blank\">FreeOTP</a> eller Google Authenticator på din mobil. Båda applikationerna finns tillgängliga hos <a href=\"https://play.google.com\">Google Play</a> och Apple App Store.\nloginTotpStep2=Öppna applikationen och skanna streckkoden eller skriv i nyckeln\nloginTotpStep3=Fyll i engångskoden som tillhandahålls av applikationen och klicka på Spara för att avsluta inställningarna\nloginOtpOneTime=Engångskod\n\noauthGrantRequest=Godkänner du tillgång till de här rättigheterna?\ninResource=i\n\nemailVerifyInstruction1=Ett e-postmeddelande med instruktioner om hur du verifierar din e-postadress har skickats till dig.\nemailVerifyInstruction2=Har du inte fått en verifikationskod i din e-post?\nemailVerifyInstruction3=för att skicka e-postmeddelandet igen.\n\nemailLinkIdpTitle=Länkning {0}\nemailLinkIdp1=Ett e-postmeddelande med instruktioner om hur du länkar {0} kontot {1} med ditt {2} konto har skickats till dig.\nemailLinkIdp2=Har du inte fått en verifikationskod i din e-post?\nemailLinkIdp3=för att skicka e-postmeddelandet igen.\n\nbackToLogin=&laquo; Tillbaka till inloggningen\n\nemailInstruction=Fyll i ditt användarnamn eller din e-postadress, så kommer vi att skicka instruktioner för hur du skapar ett nytt lösenord.\n\ncopyCodeInstruction=Vänligen kopiera den här koden och klistra in den i din applikation:\n\npersonalInfo=Personlig information:\nrole_admin=Administratör\nrole_realm-admin=Realm-administratör\nrole_create-realm=Skapa realm\nrole_create-client=Skapa klient\nrole_view-realm=Visa realm\nrole_view-users=Visa användare\nrole_view-applications=Visa applikationer\nrole_view-clients=Visa klienter\nrole_view-events=Visa event\nrole_view-identity-providers=Visa identitetsleverantörer\nrole_manage-realm=Hantera realm\nrole_manage-users=Hantera användare\nrole_manage-applications=Hantera applikationer\nrole_manage-identity-providers=Hantera identitetsleverantörer\nrole_manage-clients=Hantera klienter\nrole_manage-events=Hantera event\nrole_view-profile=Visa profil\nrole_manage-account=Hantera konto\nrole_read-token=Läs element\nrole_offline-access=Åtkomst offline\nclient_account=Konto\nclient_security-admin-console=Säkerhetsadministratörskonsol\nclient_admin-cli=Administratörs-CLI\nclient_realm-management=Realmhantering\n\ninvalidUserMessage=Ogiltigt användarnamn eller lösenord.\ninvalidEmailMessage=Ogiltig e-postadress.\naccountDisabledMessage=Kontot är inaktiverat, kontakta administratör.\naccountTemporarilyDisabledMessage=Kontot är tillfälligt inaktiverat, kontakta administratör eller försök igen senare.\nexpiredCodeMessage=Inloggningen nådde en maxtidsgräns. Vänligen försök igen.\n\nmissingFirstNameMessage=Vänligen ange förnamn.\nmissingLastNameMessage=Vänligen ange efternamn.\nmissingEmailMessage=Vänligen ange e-post.\nmissingUsernameMessage=Vänligen ange användarnamn.\nmissingPasswordMessage=Vänligen ange lösenord.\nmissingTotpMessage=Vänligen ange autentiseringskod.\nnotMatchPasswordMessage=Lösenorden matchar inte.\n\ninvalidPasswordExistingMessage=Det nuvarande lösenordet är ogiltigt.\ninvalidPasswordConfirmMessage=Lösenordsbekräftelsen matchar inte.\ninvalidTotpMessage=Autentiseringskoden är ogiltig.\n\nusernameExistsMessage=Användarnamnet finns redan.\nemailExistsMessage=E-postadressen finns redan.\n\nfederatedIdentityExistsMessage=Användare med {0} {1} finns redan. Vänligen logga in till kontohanteringen för att länka kontot.\n\nconfirmLinkIdpTitle=Kontot finns redan\nfederatedIdentityConfirmLinkMessage=Användare med {0} {1} finns redan, Hur vill du forsätta?\nfederatedIdentityConfirmReauthenticateMessage=Autentisera för att länka ditt konto med {0}\nconfirmLinkIdpReviewProfile=Granska profil\nconfirmLinkIdpContinue=Lägg till i existerande konto\n\nconfigureTotpMessage=Du behöver konfigurera mobilautentiseraren för att aktivera ditt konto.\nupdateProfileMessage=Du behöver uppdatera din användarprofil för att aktivera ditt konto.\nupdatePasswordMessage=Du behöver byta ditt lösenord för att aktivera ditt konto.\nverifyEmailMessage=Du behöver verifiera din e-postadress för att aktivera ditt konto.\nlinkIdpMessage=Du behöver verifiera din e-postadress för att länka ditt konto med {0}.\n\nemailSentMessage=Du bör inom kort motta ett epost-meddelande med ytterligare instruktioner inom kort.\nemailSendErrorMessage=E-postmeddelandet kunde inte skickas, försök igen senare.\n\naccountUpdatedMessage=Ditt konto har uppdaterats.\naccountPasswordUpdatedMessage=Ditt lösenord har uppdaterats.\n\nnoAccessMessage=Ingen åtkomst\n\ninvalidPasswordMinLengthMessage=Ogiltigt lösenord. Minsta längd är {0}.\ninvalidPasswordMinDigitsMessage=Ogiltigt lösenord: måste innehålla minst {0} siffror.\ninvalidPasswordMinLowerCaseCharsMessage=Ogiltigt lösenord: måste innehålla minst {0} små bokstäver.\ninvalidPasswordMinUpperCaseCharsMessage=Ogiltigt lösenord: måste innehålla minst {0} stora bokstäver.\ninvalidPasswordMinSpecialCharsMessage=Ogiltigt lösenord: måste innehålla minst {0} specialtecken.\ninvalidPasswordNotUsernameMessage=Ogiltigt lösenord: Får inte vara samma som användarnamnet.\ninvalidPasswordRegexPatternMessage=Ogiltigt lösenord: matchar inte regex mönstret(en).\ninvalidPasswordHistoryMessage=Ogiltigt lösenord: Får inte vara samma som de senaste {0} lösenorden.\ninvalidPasswordGenericMessage=Ogiltigt lösenord: Det nya lösenordet stämmer inte med lösenordspolicyn.\n\nfailedToProcessResponseMessage=Misslyckades med att behandla svaret\nhttpsRequiredMessage=HTTPS krävs\nrealmNotEnabledMessage=Realm är inte aktiverad\ninvalidRequestMessage=Ogiltig förfrågan\nfailedLogout=Utloggning misslyckades\nunknownLoginRequesterMessage=Okänd inloggningsförfrågan\nloginRequesterNotEnabledMessage=Inloggningsförfrågaren är inte aktiverad\nbearerOnlyMessage=Bearer-only-applikationer tillåts inte att initiera inloggning genom webbläsare\nstandardFlowDisabledMessage=Klienten tillåts inte att initiera inloggning genom webbläsare med det givna response_type. Standardflödet är inaktiverat för klienten.\nimplicitFlowDisabledMessage=Klienten tillåts inte att initiera inloggning genom webbläsare med det givna response_type. Villkorslöst flöde är inaktiverat för klienten.\ninvalidRedirectUriMessage=Ogiltig omdirigeringsadress\nunsupportedNameIdFormatMessage=NameIDFormat stöds ej\ninvalidRequesterMessage=Ogiltig förfrågare\nregistrationNotAllowedMessage=Registrering tillåts ej\nresetCredentialNotAllowedMessage=Återställning av uppgifter tillåts ej\n\npermissionNotApprovedMessage=Rättigheten ej godkänd.\nnoRelayStateInResponseMessage=Inget vidarebefordrat tillstånd i svaret från identitetsleverantör.\ninsufficientPermissionMessage=Otillräckliga tillstånd för att länka identiteter.\ncouldNotProceedWithAuthenticationRequestMessage=Kunde inte fortsätta med autentiseringsförfrågan till identitetsleverantör.\ncouldNotObtainTokenMessage=Kunde inte motta element från identitetsleverantör.\nunexpectedErrorRetrievingTokenMessage=Oväntat fel när element hämtas från identitetsleverantör.\nunexpectedErrorHandlingResponseMessage=Oväntat fel under hantering av svar från från identitetsleverantör.\nidentityProviderAuthenticationFailedMessage=Autentiseringen misslyckades. Kunde inte autentisera med identitetsleverantör.\ncouldNotSendAuthenticationRequestMessage=Kunde inte skicka autentiseringsförfrågan till identitetsleverantör.\nunexpectedErrorHandlingRequestMessage=Oväntat fel under hantering av autentiseringsförfrågan till identitetsleverantör.\ninvalidAccessCodeMessage=Ogiltig tillträdeskod.\nsessionNotActiveMessage=Sessionen ej aktiv.\ninvalidCodeMessage=Ett fel uppstod, vänligen logga in igen genom din applikation.\nidentityProviderUnexpectedErrorMessage=Oväntat fel under autentiseringen med identitetsleverantör\nidentityProviderNotFoundMessage=Kunde inte hitta en identitetsleverantör med identifikatorn.\nidentityProviderLinkSuccess=Ditt konto lyckades med att länka {0} med kontot {1}.\nstaleCodeMessage=Den här sidan är inte längre giltig, vänligen gå tillbaka till din applikation och logga in igen\nrealmSupportsNoCredentialsMessage=Realmen stödjer inga inloggningstyper.\nidentityProviderNotUniqueMessage=Realmen stödjer flera identitetsleverantör. Kunde inte avgöra vilken identitetsleverantör som skall användas för autentisering.\nemailVerifiedMessage=Din e-postadress har blivit verifierad.\nstaleEmailVerificationLink=Länken du klickade på är en gammal, inaktuell länk som inte längre är giltig. Kanske har du redan verifierat din e-post?\n\nbackToApplication=&laquo; Tillbaka till applikationen\nmissingParameterMessage=Parametrar som saknas\\: {0}\nclientNotFoundMessage=Klienten hittades ej.\nclientDisabledMessage=Klienten är inaktiverad.\ninvalidParameterMessage=Ogiltig parameter\\: {0}\nalreadyLoggedIn=Du är redan inloggad.\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_tr.properties",
    "content": "doLogIn=Oturum a\\u00E7\ndoRegister=Kay\\u0131t ol\ndoCancel=\\u0130ptal et\ndoSubmit=G\\u00F6nder\ndoYes=Evet\ndoNo=Hay\\u0131r\ndoContinue=Devam et\ndoIgnore=Yoksay\ndoAccept=Kabul Et\ndoDecline=Reddet\ndoForgotPassword=Parolan\\u0131z\\u0131 m\\u0131 unuttunuz?\ndoClickHere=Buraya T\\u0131klay\\u0131n\ndoImpersonate=Ki\\u015Fiselle\\u015Ftir\nkerberosNotConfigured=Kerberos Tan\\u0131mlanmam\\u0131\\u015F\nkerberosNotConfiguredTitle=Kerberos Tan\\u0131mlanmam\\u0131\\u015F\nbypassKerberosDetail=Ya Kerberos ile giri\\u015F yapmad\\u0131n\\u0131z veya taray\\u0131c\\u0131n\\u0131z Kerberos giri\\u015F i\\u00E7in ayarlanmam\\u0131\\u015F. Di\\u011Fer yollarla giri\\u015F yapmak i\\u00E7in l\\u00FCtfen devam''a t\\u0131klay\\u0131n\nkerberosNotSetUp=Kerberos kurulmad\\u0131. Giri\\u015F yapamazs\\u0131n.\nregisterTitle=Kay\\u0131t ol\nloginTitle={0} adresinde oturum a\\u00E7\\u0131n\nloginTitleHtml={0}\nimpersonateTitle={0} Kullan\\u0131c\\u0131 kimli\\u011Fine b\\u00FCr\\u00FCn\nimpersonateTitleHtml=<strong>{0}</strong> Kullan\\u0131c\\u0131 kimli\\u011Fine b\\u00FCr\\u00FCn\nrealmChoice=Realm\nunknownUser=Bilinmeyen kullan\\u0131c\\u0131\nloginTotpTitle=Mobil Kimlik Do\\u011Frulama Kurulumu\nloginProfileTitle=Hesap bilgilerini G\\u00FCncelle\nloginTimeout=Giri\\u015F yapmak  \\u00E7ok uzun s\\u00FCrd\\u00FC. Giri\\u015F s\\u00FCreci ba\\u015Ftan ba\\u015Flayacak.\noauthGrantTitle={0} adresine Eri\\u015Fim Ver\noauthGrantTitleHtml={0}\nerrorTitle=\\u00DCzg\\u00FCn\\u00FCz...\nerrorTitleHtml=<strong>\\u00DCzg\\u00FCn\\u00FCz ...</strong>\nemailVerifyTitle=Eposta Do\\u011Frulama\nemailForgotTitle=Parolan\\u0131z\\u0131 m\\u0131 unuttunuz?\nupdatePasswordTitle=\\u015Eifre g\\u00FCncelle\ncodeSuccessTitle=Ba\\u015Far\\u0131l\\u0131 i\\u015Flem kodu\ncodeErrorTitle=Hatal\\u0131 i\\u015Flem kodu\\: {0}\ndisplayUnsupported=\\u0130stenen g\\u00F6sterim t\\u00FCr\\u00FC desteklenmiyor\nbrowserRequired=Giri\\u015F i\\u00E7in tary\\u0131c\\u0131 gerekli\nbrowserContinue=Giri\\u015Fe devam etmek i\\u00E7in taray\\u0131c\\u0131 gerekli\nbrowserContinuePrompt=Taray\\u0131c\\u0131 a\\u00E7 ve giri\\u015Fe devam et? [e/h]:\nbrowserContinueAnswer=h\n\n\ntermsTitle=\\u015Eartlar ve ko\\u015Fullar\ntermsText=<p>Tan\\u0131mlanacak \\u015Fartlar ve ko\\u015Fullar</p>\ntermsPlainText=Tan\\u0131mlanacak \\u015Fartlar ve ko\\u015Fullar.\n\nrecaptchaFailed=Ge\\u00E7ersiz Recaptcha\nrecaptchaNotConfigured=Recaptcha gerekli, ancak yap\\u0131land\\u0131r\\u0131lmam\\u0131\\u015F\nconsentDenied=Onay reddedildi.\n\nnoAccount=Yeni kullan\\u0131c\\u0131?\nusername=Kullan\\u0131c\\u0131 Ad\\u0131\nusernameOrEmail=Kullan\\u0131c\\u0131 ad\\u0131 veya E-mail\nfirstName=Ad\ngivenName=Ad\nfullName=Ad Soyad\nlastName=Soyad\nfamilyName=Soyad\nemail=E-Mail\npassword=\\u015Eifre\npasswordConfirm=\\u015Eifre Do\\u011Frulama\npasswordNew=Yeni \\u015Eifre\npasswordNewConfirm=eni \\u015Eifre Do\\u011Frulama\nrememberMe=Beni Hat\\u0131rla\nauthenticatorCode=Kimlik Do\\u011Frulama Kodu\naddress=Adres\nstreet=Cadde\nlocality=Semt\nregion=B\\u00F6lge\npostal_code=Posta Kodu\ncountry=\\u00DClke\nemailVerified=E-Mail Do\\u011Fruland\\u0131\ngssDelegationCredential=GSS Yetki Bilgisi\n\n\nprofileScopeConsentText=Kullan\\u0131c\\u0131 profili\nemailScopeConsentText=E-Mai Adresi\naddressScopeConsentText=Adres\nphoneScopeConsentText=Telefon Numaras\\u0131\nofflineAccessScopeConsentText=\\u00C7evrimd\\u0131\\u015F\\u0131 Eri\\u015Fim\nsamlRoleListScopeConsentText=Rollerim\nrolesScopeConsentText=Kullan\\u0131c\\u0131 rolleri\n\nloginTotpIntro=Bu hesaba eri\\u015Fmek i\\u00E7in bir Tek Kullan\\u0131ml\\u0131k \\u015Eifre olu\\u015Fturmal\\u0131s\\u0131n\\u0131z.\nloginTotpStep1=Cep telefonunuzda a\\u015Fa\\u011F\\u0131daki uygulamalardan birini y\\u00FCkleyin\nloginTotpStep2=Uygulamay\\u0131 a\\u00E7\\u0131n ve barkodu taray\\u0131n\nloginTotpStep3=Uygulama taraf\\u0131ndan sa\\u011Flanan tek seferlik kodu girin ve kurulumu tamamlamak i\\u00E7in G\\u00F6nder''i t\\u0131klay\\u0131n.\nloginTotpManualStep2=Uygulamay\\u0131 a\\u00E7\\u0131n ve anahtar\\u0131 girin\nloginTotpManualStep3=Uygulama bunlar\\u0131 ayarlamaya izin veriyorsa a\\u015Fa\\u011F\\u0131daki yap\\u0131land\\u0131rma de\\u011Ferlerini kullan\\u0131n.\nloginTotpUnableToScan=Taranam\\u0131yor?\nloginTotpScanBarcode=Barkod tara?\nloginOtpOneTime=Tek seferlik kod\nloginTotpType=Tip\nloginTotpAlgorithm=Algoritma\nloginTotpDigits=Basamak\nloginTotpInterval=Aral\\u0131k\nloginTotpCounter=Saya\\u00E7\n\nloginTotp.totp=Zaman Tabanl\\u0131\nloginTotp.hotp=Saya\\u00E7 Tabanl\\u0131\n\n\noauthGrantRequest=Bu eri\\u015Fim ayr\\u0131cal\\u0131klar\\u0131 veriyor musunuz?\ninResource=i\\u00E7inde\n\nemailVerifyInstruction1=E-posta adresinizi do\\u011Frulamak i\\u00E7in talimatlar\\u0131 i\\u00E7eren bir e-posta size g\\u00F6nderildi.\nemailVerifyInstruction2=E-postan\\u0131zda do\\u011Frulama kodu almad\\u0131n\\u0131z m\\u0131?\nemailVerifyInstruction3=e-postay\\u0131 yeniden g\\u00F6ndermek i\\u00E7in.\n\nemailLinkIdpTitle=Ba\\u011Flant\\u0131 {0}\nemailLinkIdp1={1} hesab\\u0131n\\u0131 {2} hesab\\u0131n\\u0131za ba\\u011Flayan talimatlar\\u0131 i\\u00E7eren bir e-posta size g\\u00F6nderildi.\nemailLinkIdp2=E-postan\\u0131zda do\\u011Frulama kodu almad\\u0131n\\u0131z m\\u0131?\nemailLinkIdp3=e-postay\\u0131 yeniden g\\u00F6ndermek i\\u00E7in.\nemailLinkIdp4=E-postay\\u0131 farkl\\u0131 taray\\u0131c\\u0131da zaten do\\u011Frulad\\u0131ysan\\u0131z\nemailLinkIdp5=devam etmek.\n\nbackToLogin=&laquo; Giri\\u015F''e geri d\\u00F6n\n\nemailInstruction=Kullan\\u0131c\\u0131 ad\\u0131n\\u0131z\\u0131 veya e-posta adresinizi girin ve yeni bir \\u015Fifre olu\\u015Fturmaya ili\\u015Fkin talimatlar\\u0131 size g\\u00F6nderece\\u011Fiz.\n\ncopyCodeInstruction=L\\u00FCtfen bu kodu kopyalay\\u0131n ve uygulaman\\u0131za yap\\u0131\\u015Ft\\u0131r\\u0131n:\n\npageExpiredTitle=Sayfan\\u0131n S\\u00FCresi Doldu\npageExpiredMsg1=Giri\\u015F i\\u015Flemini yeniden ba\\u015Flatmak i\\u00E7in\npageExpiredMsg2=Giri\\u015F i\\u015Flemine devam etmek i\\u00E7in\n\npersonalInfo=Ki\\u015Fisel bilgi:\nrole_admin=Admin\nrole_realm-admin=Realm Admin\nrole_create-realm=Realm Olu\\u015Ftur\nrole_create-client=Create client\nrole_view-realm=Realm g\\u00F6r\\u00FCnt\\u00FCle\nrole_view-users=Kullan\\u0131c\\u0131 g\\u00F6r\\u00FCnt\\u00FCle\nrole_view-applications=Uygulamar\\u0131 g\\u00F6r\nrole_view-clients=Clients g\\u00F6r\\u00FCnt\\u00FCle\nrole_view-events=Events g\\u00F6r\\u00FCnt\\u00FCle\nrole_view-identity-providers=Kimlik sa\\u011Flay\\u0131c\\u0131lar\\u0131n\\u0131 g\\u00F6r\\u00FCnt\\u00FCle\nrole_manage-realm=Realm Y\\u00F6net\nrole_manage-users=Kullan\\u0131c\\u0131lar\\u0131 Y\\u00F6net\nrole_manage-applications=Uygulamalar\\u0131 Y\\u00F6net\nrole_manage-identity-providers=Kimlik Sa\\u011Flay\\u0131c\\u0131lar\\u0131n\\u0131 Y\\u00F6net\nrole_manage-clients=Clients Y\\u00F6net\nrole_manage-events=Events Y\\u00F6net\nrole_view-profile=Profil g\\u00F6r\\u00FCnt\\u00FCle\nrole_manage-account=Hesap Y\\u00F6net\nrole_manage-account-links=Hesap ba\\u011Flant\\u0131lar\\u0131n\\u0131 y\\u00F6net\nrole_read-token=Token oku\nrole_offline-access=\\u00C7evrimd\\u0131\\u015F\\u0131 eri\\u015Fim\nclient_account=Hesap\nclient_security-admin-console=G\\u00FCvenlik Y\\u00F6netici Konsolu\nclient_admin-cli=Admin CLI\nclient_realm-management=Realm Y\\u00F6net\nclient_broker=Broker\n\ninvalidUserMessage=Ge\\u00E7ersiz kullan\\u0131c\\u0131 ad\\u0131 veya \\u015Fifre.\ninvalidEmailMessage=Ge\\u00E7ersiz e-posta adresi.\naccountDisabledMessage=Hesap devre d\\u0131\\u015F\\u0131, y\\u00F6netici ile ileti\\u015Fime ge\\u00E7in.\naccountTemporarilyDisabledMessage=Hesab\\u0131n\\u0131z ge\\u00E7ici olarak kilitlendi, l\\u00FCtfen y\\u00F6neticiyle ileti\\u015Fime ge\\u00E7in veya daha sonra tekrar deneyin.\nexpiredCodeMessage=Oturum zaman a\\u015F\\u0131m\\u0131na u\\u011Frad\\u0131. L\\u00FCtfen tekrar giri\\u015F yap\\u0131n.\nexpiredActionMessage=Eylem s\\u00FCresi doldu. L\\u00FCtfen \\u015Fimdi giri\\u015F yapmaya devam edin.\nexpiredActionTokenNoSessionMessage=Eylemin s\\u00FCresi doldu.\nexpiredActionTokenSessionExistsMessage=Eylem s\\u00FCresi doldu. L\\u00FCtfen tekrar ba\\u015Flay\\u0131n.\n\nmissingFirstNameMessage=L\\u00FCtfen ilk ad\\u0131 belirtin.\nmissingLastNameMessage=L\\u00FCtfen soyad\\u0131 belirtin.\nmissingEmailMessage=L\\u00FCtfen email belirtin.\nmissingUsernameMessage=L\\u00FCtfen kullan\\u0131c\\u0131 ad\\u0131n\\u0131 belirtin.\nmissingPasswordMessage=L\\u00FCtfen \\u015Fifre belirtin.\nmissingTotpMessage=L\\u00FCtfen kimlik do\\u011Frulama kodunu belirtin.\nnotMatchPasswordMessage=\\u015Eifreler e\\u015Fle\\u015Fmiyor.\n\ninvalidPasswordExistingMessage=Mevcut \\u015Fifre ge\\u00E7ersiz.\ninvalidPasswordBlacklistedMessage=Ge\\u00E7ersiz \\u015Fifre: \\u015Fifre kara listeye al\\u0131nd\\u0131.\ninvalidPasswordConfirmMessage=\\u015Eifre onay\\u0131 e\\u015Fle\\u015Fmiyor.\ninvalidTotpMessage=Ge\\u00E7ersiz kimlik do\\u011Frulama kodu.\n\nusernameExistsMessage=Kullan\\u0131c\\u0131 ad\\u0131 zaten var.\nemailExistsMessage=Bu e-posta zaten var.\n\nfederatedIdentityExistsMessage={0} {1} kullan\\u0131c\\u0131 zaten var. Hesab\\u0131 ba\\u011Flamak i\\u00E7in l\\u00FCtfen hesap y\\u00F6netimine giri\\u015F yap\\u0131n.\n\nconfirmLinkIdpTitle=Bu Hesap Zaten Mevcut\nfederatedIdentityConfirmLinkMessage={0} {1} kullan\\u0131c\\u0131 zaten var. Nas\\u0131l devam etmek istersin?\n#federatedIdentityConfirmReauthenticateMessage=Hesab\\u0131n\\u0131z\\u0131 {1} ile ba\\u011Flamak i\\u00E7in {0} olarak do\\u011Frulay\\u0131n\nconfirmLinkIdpReviewProfile=Profili g\\u00F6zden ge\\u00E7ir\nconfirmLinkIdpContinue=Mevcut hesaba ekle\n\nconfigureTotpMessage=Hesab\\u0131n\\u0131z\\u0131 etkinle\\u015Ftirmek i\\u00E7in Mobil Kimlik Do\\u011Frulama''y\\u0131 ayarlaman\\u0131z gerekiyor.\nupdateProfileMessage=Hesab\\u0131n\\u0131z\\u0131 etkinle\\u015Ftirmek i\\u00E7in kullan\\u0131c\\u0131 profilinizi g\\u00FCncellemeniz gerekiyor.\nupdatePasswordMessage=Hesab\\u0131n\\u0131z\\u0131 etkinle\\u015Ftirmek i\\u00E7in \\u015Fifrenizi de\\u011Fi\\u015Ftirmeniz gerekiyor.\nresetPasswordMessage=\\u015Eifreni de\\u011Fi\\u015Ftirmelisin.\nverifyEmailMessage=Hesab\\u0131n\\u0131z\\u0131 etkinle\\u015Ftirmek i\\u00E7in e-posta adresinizi do\\u011Frulaman\\u0131z gerekiyor.\nlinkIdpMessage=Hesab\\u0131n\\u0131z\\u0131 {0} ile ba\\u011Flamak i\\u00E7in e-posta adresinizi do\\u011Frulaman\\u0131z gerekiyor.\n\nemailSentMessage=Daha fazla talimatla k\\u0131sa s\\u00FCrede bir e-posta almal\\u0131s\\u0131n\\u0131z.\nemailSendErrorMessage=E-posta g\\u00F6nderilemedi, l\\u00FCtfen daha sonra tekrar deneyin.\n\naccountUpdatedMessage=Hesab\\u0131n g\\u00FCncellendi.\naccountPasswordUpdatedMessage=\\u015Eifreniz g\\u00FCncellenmi\\u015Ftir.\n\ndelegationCompleteHeader=Giri\\u015F ba\\u015Far\\u0131l\\u0131\ndelegationCompleteMessage=Bu taray\\u0131c\\u0131 penceresini kapatabilir ve konsol uygulaman\\u0131za geri d\\u00F6nebilirsiniz.\ndelegationFailedHeader=Giri\\u015F ba\\u015Far\\u0131s\\u0131z\ndelegationFailedMessage=Bu taray\\u0131c\\u0131 penceresini kapatabilir ve konsol uygulaman\\u0131za geri d\\u00F6n\\u00FCp tekrar giri\\u015F yapmay\\u0131 deneyebilirsiniz..\n\nnoAccessMessage=Eri\\u015Fim yok\n\ninvalidPasswordMinLengthMessage=Ge\\u00E7ersiz \\u015Eifre: En az {0} karakter uzunlu\\u011Funda olmal\\u0131.\ninvalidPasswordMinDigitsMessage=Ge\\u00E7ersiz \\u015Eifre: En az {0} say\\u0131(lar) i\\u00E7ermelidir.\ninvalidPasswordMinLowerCaseCharsMessage=Ge\\u00E7ersiz \\u015Eifre \\: En az {0} k\\u00FC\\u00E7\\u00FCk harf i\\u00E7ermelidir.\ninvalidPasswordMinUpperCaseCharsMessage=Ge\\u00E7ersiz \\u015Eifre: En az {0} b\\u00FCy\\u00FCk harf i\\u00E7ermelidir.\ninvalidPasswordMinSpecialCharsMessage=Ge\\u00E7ersiz \\u015Eifre: En az {0} \\u00F6zel karakter i\\u00E7ermelidir.\ninvalidPasswordNotUsernameMessage=Ge\\u00E7ersiz \\u015Eifre: Kullan\\u0131c\\u0131 ad\\u0131yla ayn\\u0131 olamaz.\ninvalidPasswordRegexPatternMessage=Ge\\u00E7ersiz \\u015Eifre: Regex Patternine uygun de\\u011Fil.\ninvalidPasswordHistoryMessage=Ge\\u00E7ersiz \\u015Eifre: Son {0} \\u015Fifreden biri olamaz.\ninvalidPasswordGenericMessage=Ge\\u00E7ersiz \\u015Eifre: yeni \\u015Fifre \\u015Fifre politikalar\\u0131yla e\\u015Fle\\u015Fmiyor.\n\nfailedToProcessResponseMessage=Yan\\u0131t i\\u015Flenemedi\nhttpsRequiredMessage=HTTPS zorunlu\nrealmNotEnabledMessage=Realm aktif de\\u011Fil\ninvalidRequestMessage=Ge\\u00E7ersiz \\u0130stek\nfailedLogout=\\u00C7\\u0131k\\u0131\\u015F ba\\u015Far\\u0131s\\u0131z\nunknownLoginRequesterMessage=Bilinmeyen giri\\u015F iste\\u011Fi\nloginRequesterNotEnabledMessage=Giri\\u015F istemi etkin de\\u011Fil\nbearerOnlyMessage=Yaln\\u0131zca ta\\u015F\\u0131y\\u0131c\\u0131 uygulamalar\\u0131 taray\\u0131c\\u0131 giri\\u015Fini ba\\u015Flatmaya izinli de\\u011Fil\nstandardFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Standard flow is disabled for the client.\nimplicitFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Implicit flow is disabled for the client.\ninvalidRedirectUriMessage=Ge\\u00E7ersiz y\\u00F6nlendirme url''i\nunsupportedNameIdFormatMessage=Desteklenmeyen NameIDFormat\ninvalidRequesterMessage=Ge\\u00E7ersiz istek\nregistrationNotAllowedMessage=Kay\\u0131t yap\\u0131lamaz\nresetCredentialNotAllowedMessage=S\\u0131f\\u0131rlamas\\u0131na izin verilmiyor\n\npermissionNotApprovedMessage=\\u0130zin onaylanmad\\u0131.\nnoRelayStateInResponseMessage=Kimlik sa\\u011Flay\\u0131c\\u0131dan yan\\u0131t olarak ge\\u00E7i\\u015F durumu yok.\ninsufficientPermissionMessage=Kimliklerin ba\\u011Flanmas\\u0131 i\\u00E7in yetersiz izinler.\ncouldNotProceedWithAuthenticationRequestMessage=Kimlik sa\\u011Flay\\u0131c\\u0131ya kimlik do\\u011Frulama iste\\u011Fi ile devam edilemedi.\ncouldNotObtainTokenMessage=Kimlik sa\\u011Flay\\u0131c\\u0131dan token al\\u0131namad\\u0131.\nunexpectedErrorRetrievingTokenMessage=Kimlik sa\\u011Flay\\u0131c\\u0131dan token al\\u0131rken beklenmeyen bir hata olu\\u015Ftu.\nunexpectedErrorHandlingResponseMessage=Kimlik sa\\u011Flay\\u0131c\\u0131dan yan\\u0131t al\\u0131n\\u0131rken beklenmeyen bir hata olu\\u015Ftu.\nidentityProviderAuthenticationFailedMessage=Kimlik do\\u011Frulama ba\\u015Far\\u0131s\\u0131z oldu. Kimlik sa\\u011Flay\\u0131c\\u0131yla kimlik do\\u011Frulamas\\u0131 yap\\u0131lamad\\u0131.\ncouldNotSendAuthenticationRequestMessage=Kimlik sa\\u011Flay\\u0131c\\u0131ya kimlik do\\u011Frulama iste\\u011Fi g\\u00F6nderilemedi.\nunexpectedErrorHandlingRequestMessage=Kimlik sa\\u011Flay\\u0131c\\u0131ya kimlik do\\u011Frulama iste\\u011Fi i\\u015Flenirken beklenmeyen bir hata olu\\u015Ftu.\ninvalidAccessCodeMessage=Ge\\u00E7ersiz giri\\u015F kodu.\nsessionNotActiveMessage=Oturum etkin de\\u011Fil.\ninvalidCodeMessage=Bir hata olu\\u015Ftu, l\\u00FCtfen ba\\u015Fvurunuz arac\\u0131l\\u0131\\u011F\\u0131yla tekrar giri\\u015F yap\\u0131n.\nidentityProviderUnexpectedErrorMessage=Kimlik sa\\u011Flay\\u0131c\\u0131yla kimlik do\\u011Frulamas\\u0131 yap\\u0131l\\u0131rken beklenmeyen bir hata olu\\u015Ftu\nidentityProviderNotFoundMessage=Tan\\u0131mlay\\u0131c\\u0131 ile kimlik sa\\u011Flay\\u0131c\\u0131 bulunamad\\u0131.\nidentityProviderLinkSuccess=E-postan\\u0131z\\u0131 ba\\u015Far\\u0131yla do\\u011Frulad\\u0131n\\u0131z. L\\u00FCtfen orijinal taray\\u0131c\\u0131n\\u0131za geri d\\u00F6n\\u00FCn ve giri\\u015F yap\\u0131n.\nstaleCodeMessage=Bu sayfa art\\u0131k ge\\u00E7erli de\\u011Fil, l\\u00FCtfen uygulaman\\u0131za geri d\\u00F6n\\u00FCn ve tekrar giri\\u015F yap\\u0131n\nrealmSupportsNoCredentialsMessage=Realm herhangi bir kimlik bilgisi t\\u00FCr\\u00FCn\\u00FC desteklemiyor.\nidentityProviderNotUniqueMessage=Realm \\u00E7oklu kimlik sa\\u011Flay\\u0131c\\u0131lar\\u0131n\\u0131 destekler. Kimlik do\\u011Frulamak i\\u00E7in hangi kimlik sa\\u011Flay\\u0131c\\u0131s\\u0131n\\u0131n kullan\\u0131lmas\\u0131 gerekti\\u011Fini belirleyemedi.\nemailVerifiedMessage=E-posta adresiniz do\\u011Fruland\\u0131.\nstaleEmailVerificationLink=T\\u0131klad\\u0131\\u011F\\u0131n\\u0131z ba\\u011Flant\\u0131 eski bir ba\\u011Flant\\u0131d\\u0131r ve art\\u0131k ge\\u00E7erli de\\u011Fil. Belki de e-postan\\u0131z\\u0131 zaten do\\u011Frulad\\u0131n\\u0131z.\nidentityProviderAlreadyLinkedMessage={0} taraf\\u0131ndan d\\u00F6nd\\u00FCr\\u00FClen birle\\u015Fik kimlik, ba\\u015Fka bir kullan\\u0131c\\u0131yla zaten ba\\u011Flant\\u0131l\\u0131.\nconfirmAccountLinking={1} kimlik sa\\u011Flay\\u0131c\\u0131s\\u0131n\\u0131n hesab\\u0131n\\u0131 {0} hesab\\u0131n\\u0131zla ili\\u015Fkilendirmeyi onaylay\\u0131n.\nconfirmEmailAddressVerification={0} e-posta adresinin ge\\u00E7erlili\\u011Fini onaylay\\u0131n.\nconfirmExecutionOfActions=A\\u015Fa\\u011F\\u0131daki eylemleri ger\\u00E7ekle\\u015Ftirin\n\nlocale_ca=Katalanca\nlocale_de=Almanca\nlocale_en=\\u0130ngilizce\nlocale_es=\\u0130spanyolca\nlocale_fr=Frans\\u0131zca\nlocale_it=\\u0130talyanca\nlocale_ja=Afrikanca\nlocale_nl=Felemenk\\u00E7e\nlocale_no=Norve\\u00E7ce\nlocale_pl=Leh\\u00E7e\nlocale_pt_BR=Portekizce\nlocale_pt-BR=Portekizce\nlocale_ru=Rus\\u00E7a\nlocale_lt=Litvanca\nlocale_zh-CN=\\u00C7ince\nlocale_sk=Slovak\\u00E7a\nlocale_sv=\\u0130sve\\u00E7\\u00E7e\nlocale_tr=T\\u00FCrk\\u00E7e\n\nbackToApplication=&laquo; Uygulamaya D\\u00F6n\nmissingParameterMessage=Eksik parametreler\\: {0}\nclientNotFoundMessage=\\u0130stemci Bulunamad\\u0131.\nclientDisabledMessage=\\u0130stemci engelli.\ninvalidParameterMessage=Ge\\u00E7ersiz Paremetreler\\: {0}\nalreadyLoggedIn=Zaten giri\\u015F yapt\\u0131n\\u0131z.\ndifferentUserAuthenticated=Bu oturumda zaten farkl\\u0131 kullan\\u0131c\\u0131 '' {0} '' olarak do\\u011Frulanm\\u0131\\u015Fs\\u0131n\\u0131z. L\\u00FCtfen \\u00F6nce \\u00E7\\u0131k\\u0131\\u015F yap\\u0131n\\u0131z.\nbrokerLinkingSessionExpired=\\u0130stenen broker hesab\\u0131 ba\\u011Flan\\u0131yor, ancak mevcut oturum art\\u0131k ge\\u00E7erli de\\u011Fil.\nproceedWithAction=&raquo; Devam etmek i\\u00E7in buraya t\\u0131klay\\u0131n\n\nrequiredAction.CONFIGURE_TOTP=OTP Ayarla\nrequiredAction.terms_and_conditions=\\u015Eartlar ve Ko\\u015Fullar\nrequiredAction.UPDATE_PASSWORD=\\u015Eifre g\\u00FCncelle\nrequiredAction.UPDATE_PROFILE=Profili G\\u00FCncelle\nrequiredAction.VERIFY_EMAIL=E-mail''i do\\u011Frula\n\ndoX509Login=Olarak giri\\u015F yapacaks\\u0131n\\u0131z\\:\nclientCertificate=X509 istemci sertifikas\\u0131\\:\nnoCertificate=[Sertifika Yok]\n\n\npageNotFound=Sayfa Bulunamad\\u0131\ninternalServerError=Bir i\\u00E7 sunucu hatas\\u0131 olu\\u015Ftu\n\nconsole-username=Kullan\\u0131c\\u0131 ad\\u0131:\nconsole-password=Parola:\nconsole-otp=Tek seferlik \\u015Fifre:\nconsole-new-password=Yeni \\u015Fifre:\nconsole-confirm-password=\\u015Eifreyi Onayla:\nconsole-update-password=\\u015Eifrenizin g\\u00FCncellenmesi gerekiyor.\nconsole-verify-email=E-posta adresinizi do\\u011Frulaman\\u0131z gerekiyor. Bir do\\u011Frulama kodu i\\u00E7eren {0} adresine bir e-posta g\\u00F6nderildi. L\\u00FCtfen bu kodu a\\u015Fa\\u011F\\u0131daki girdiye giriniz.\nconsole-email-code=E-posta Kodu:\nconsole-accept-terms=\\u015Eartlar\\u0131 kabul et? [e/h]:\nconsole-accept=e\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/messages/messages_zh_CN.properties",
    "content": "# encoding: utf-8\ndoLogIn=登录\ndoRegister=注册\ndoCancel=取消\ndoSubmit=提交\ndoYes=是\ndoNo=否\ndoContinue=继续\ndoAccept=接受\ndoDecline=拒绝\ndoForgotPassword=忘记密码?\ndoClickHere=点击这里\ndoImpersonate=模拟\nkerberosNotConfigured=Kerberos 没有配置\nkerberosNotConfiguredTitle=Kerberos 没有配置\nbypassKerberosDetail=您没有通过Kerberos登录 或者您的浏览器没有设置Kerberos登录. 请点击继续通过其他途径登录。\nkerberosNotSetUp=Kerberos没有配置，您不可以登录\nregisterWithTitle=用 {0} 注册\nregisterWithTitleHtml={0}\nloginTitle=登录到 {0}\nloginTitleHtml={0}\nimpersonateTitle={0} 模拟用户\nimpersonateTitleHtml=<strong>{0}</strong>模拟用户\nrealmChoice=域\nunknownUser=未知用户\nloginTotpTitle=手机验证者配置\nloginProfileTitle=更新账户信息\nloginTimeout=登录超时，请重新开始登录\noauthGrantTitle=授权\noauthGrantTitleHtml={0}\nerrorTitle=很抱歉...\nerrorTitleHtml=我们<strong>很抱歉</strong> ...\nemailVerifyTitle=验证电子邮件地址\nemailForgotTitle=忘记密码?\nupdatePasswordTitle=更新密码\ncodeSuccessTitle=成功码\ncodeErrorTitle=错误码\\: {0}\n\ntermsTitle=条款\ntermsTitleHtml=条款\ntermsText=<p>需要确定的条款</p>\n\nrecaptchaFailed=无效的验证码\nrecaptchaNotConfigured=需要验证码，但是没有配置\nconsentDenied=许可被拒绝。\n\nnoAccount=新用户?\nusername=用户名\nusernameOrEmail=用户名 或 电子邮箱地址\nfirstName=名\ngivenName=姓\nfullName=全名\nlastName=姓\nfamilyName=姓\nemail=Email\npassword=密码\npasswordConfirm=确认密码\npasswordNew=新密码\npasswordNewConfirm=新密码确认\nrememberMe=记住我\nauthenticatorCode=一次性验证码\naddress=地址\nstreet=街道\nlocality=市\nregion=省，自治区，直辖市\npostal_code=邮政编码\ncountry=国家\nemailVerified=电子邮件已验证\ngssDelegationCredential=GSS Delegation Credential\n\nloginTotpStep1=在手机安装 <a href=\"https://fedorahosted.org/freeotp/\" target=\"_blank\">FreeOTP</a> 或 Google Authenticator. 这两个应用可以在 <a href=\"https://play.google.com\">Google Play</a> 和 Apple App Store找到.\nloginTotpStep2=打开应用扫描二维码或者输入一次性码\nloginTotpStep3=输入应用提供的一次性码点击提交完成设置\nloginOtpOneTime=一次性验证码\n\noauthGrantRequest=您是否想要授予下列权限?\ninResource=in\n\nemailVerifyInstruction1=一封包含验证邮箱具体步骤的邮件已经发送到您的邮箱。\nemailVerifyInstruction2=邮箱没有收到验证码?\nemailVerifyInstruction3=重新发送电子邮件\n\nemailLinkIdpTitle=链接 {0}\nemailLinkIdp1=一封包含链接账户 {0} 和账户 {1} 到账户 {2} 的邮件已经发送到您的邮箱。\nemailLinkIdp2=邮箱没有收到验证码邮件?\nemailLinkIdp3=重新发送电子邮件\n\nbackToLogin=&laquo; 回到登录\n\nemailInstruction=输入您的用户名和邮箱，我们会发送一封带有设置新密码步骤的邮件到您的邮箱。\n\ncopyCodeInstruction=请复制这段验证码并粘贴到应用：\n\npersonalInfo=个人信息\\:\nrole_admin=管理员\nrole_realm-admin=域管理员\nrole_create-realm=创建域\nrole_create-client=创建客户\nrole_view-realm=查看域\nrole_view-users=查看用户\nrole_view-applications=查看应用\nrole_view-clients=查看客户\nrole_view-events=查看时间\nrole_view-identity-providers=查看身份提供者\nrole_manage-realm=管理域\nrole_manage-users=管理用户\nrole_manage-applications=管理应用\nrole_manage-identity-providers=管理身份提供者\nrole_manage-clients=管理客户\nrole_manage-events=管理事件\nrole_view-profile=查看用户信息\nrole_manage-account=管理账户\nrole_read-token=读取 token\nrole_offline-access=离线访问\nclient_account=账户\nclient_security-admin-console=安全管理控制台\nclient_admin-cli=管理命令行工具\nclient_realm-management=域管理\nclient_broker=代理\n\ninvalidUserMessage=无效的用户名或密码。\ninvalidEmailMessage=无效的电子邮件地址\naccountDisabledMessage=账户被禁用，请联系管理员。\naccountTemporarilyDisabledMessage=账户被暂时禁用，请稍后再试或联系管理员。\nexpiredCodeMessage=登录超时，请重新登陆。\n\nmissingFirstNameMessage=请输入名\nmissingLastNameMessage=请输入姓\nmissingEmailMessage=请输入email.\nmissingUsernameMessage=请输入用户名\nmissingPasswordMessage=请输入密码\nmissingTotpMessage=请输入验证码\nnotMatchPasswordMessage=密码不匹配。\n\ninvalidPasswordExistingMessage=无效的旧密码\ninvalidPasswordConfirmMessage=确认密码不相同\ninvalidTotpMessage=无效的验证码\n\nusernameExistsMessage=用户名已被占用\nemailExistsMessage=电子邮件已存在。\n\nfederatedIdentityExistsMessage=用户 {0} {1} 已存在. 请登录账户管理界面链接账户.\n\nconfirmLinkIdpTitle=账户已存在\nfederatedIdentityConfirmLinkMessage=用户{0} {1} 已存在. 怎么继续?\n#federatedIdentityConfirmReauthenticateMessage=以 {0} 登录来将 {1} 连接到您的账户\nconfirmLinkIdpReviewProfile=审查您的信息\nconfirmLinkIdpContinue=添加到已知账户\n\nconfigureTotpMessage=您需要设置验证码模块来激活您的账户\nupdateProfileMessage=您需要更新您的简介来激活您的账户\nupdatePasswordMessage=您需要更新您的密码来激活您的账户\nverifyEmailMessage=您需要验证您的电子邮箱来激活您的账户\nlinkIdpMessage=您需要验证您的电子邮箱来连接到账户{0}.\n\nemailSentMessage=您很快会收到一封关于接下来操作的邮件。\nemailSendErrorMessage=无法发送邮件，请稍后再试\n\naccountUpdatedMessage=您的账户已经更新。\naccountPasswordUpdatedMessage=您的密码已经更新\n\nnoAccessMessage=无权限\n\ninvalidPasswordMinLengthMessage=无效的密码：最短长度 {0}.\ninvalidPasswordMinDigitsMessage=无效的密码： 至少包含{0} 个数字\ninvalidPasswordMinLowerCaseCharsMessage=无效的密码：至少包含 {0} 小写字母.\ninvalidPasswordMinUpperCaseCharsMessage=无效的密码：至少包含 {0} 大写字母.\ninvalidPasswordMinSpecialCharsMessage=无效的密码：至少包含 {0} 特殊字符.\ninvalidPasswordNotUsernameMessage=无效的密码： 不能与用户名相同.\ninvalidPasswordRegexPatternMessage=无效的密码： 无法与正则表达式匹配.\ninvalidPasswordHistoryMessage=无效的密码： 不能与前 {0} 个旧密码相同.\n\nfailedToProcessResponseMessage=无法处理回复\nhttpsRequiredMessage=需要HTTPS\nrealmNotEnabledMessage=域未启用\ninvalidRequestMessage=非法的请求\nfailedLogout=无法登出\nunknownLoginRequesterMessage=未知的登录请求发起方\nloginRequesterNotEnabledMessage=登录请求发起方为启用\nbearerOnlyMessage=Bearer-only 的应用不允许通过浏览器登录\nstandardFlowDisabledMessage=客户程序不允许发起指定返回类型的浏览器登录. 标准的登录流程已禁用。\nimplicitFlowDisabledMessage=客户程序不允许发起指定返回类型的浏览器登录. 隐式的登录流程已禁用。\ninvalidRedirectUriMessage=无效的跳转链接\nunsupportedNameIdFormatMessage=不支持的 nameID格式\ninvalidRequesterMessage=无效的发起者\nregistrationNotAllowedMessage=注册不允许\nresetCredentialNotAllowedMessage=不允许重置密码\n\npermissionNotApprovedMessage=许可没有批准\nnoRelayStateInResponseMessage=身份提供者没有返回中继状态信息\ninsufficientPermissionMessage=权限不足以链接新的身份\ncouldNotProceedWithAuthenticationRequestMessage=无法与身份提供者处理认证请求\ncouldNotObtainTokenMessage=未从身份提供者获得token\nunexpectedErrorRetrievingTokenMessage=从身份提供者获得Token时遇到未知错误\nunexpectedErrorHandlingResponseMessage=从身份提供者获得回复时遇到未知错误\nidentityProviderAuthenticationFailedMessage=认证失败，无法通过身份提供者认证\ncouldNotSendAuthenticationRequestMessage=无法向身份提供方发送认证请求\nunexpectedErrorHandlingRequestMessage=在处理发向认证提供方的请求时，出现未知错误。\ninvalidAccessCodeMessage=无效的验证码\nsessionNotActiveMessage=会话不在活动状态\ninvalidCodeMessage=发生错误，请重新通过应用登录\nidentityProviderUnexpectedErrorMessage=在与认证提供者认证过程中发生未知错误\nidentityProviderNotFoundMessage=无法找到认证提供方\nidentityProviderLinkSuccess=您的账户已经将账户{0} 与账户 {1} 链接.\nstaleCodeMessage=当前页面已无效，请到登录界面重新登录\nrealmSupportsNoCredentialsMessage=域不支持特定类型密码\nidentityProviderNotUniqueMessage=域支持通过多个身份提供者登录，不知道应用哪一种方式登录\nemailVerifiedMessage=您的电子邮箱已经验证。\nstaleEmailVerificationLink=您点击的链接已无效。可能您已经验证过您的电子邮箱?\n\nlocale_ca=Català\nlocale_de=Deutsch\nlocale_en=English\nlocale_es=Español\nlocale_fr=Français\nlocale_it=Italian\nlocale_ja=日本語\nlocale_nl=Nederlands\nlocale_no=Norsk\nlocale_pt_BR=Português (Brasil)\nlocale_pt-BR=Português (Brasil)\nlocale_ru=Русский\nlocale_lt=Lietuvių\nlocale_zh-CN=中文简体\n\nbackToApplication=&laquo; 回到应用\nmissingParameterMessage=缺少参数 \\: {0}\nclientNotFoundMessage=客户端未找到\nclientDisabledMessage=客户端已禁用\ninvalidParameterMessage=无效的参数 \\: {0}\nalreadyLoggedIn=您已经登录\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/register.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout; section>\n    <#if section = \"header\">\n        ${msg(\"registerTitle\")}\n    <#elseif section = \"form\">\n        <form id=\"kc-register-form\" class=\"${properties.kcFormClass!}\" action=\"${url.registrationAction}\" method=\"post\">\n            <div class=\"${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('firstName',properties.kcFormGroupErrorClass!)}\">\n                <div class=\"${properties.kcLabelWrapperClass!}\">\n                    <label for=\"firstName\" class=\"${properties.kcLabelClass!}\">${msg(\"firstName\")}</label>\n                </div>\n                <div class=\"${properties.kcInputWrapperClass!}\">\n                    <input type=\"text\" id=\"firstName\" class=\"${properties.kcInputClass!}\" name=\"firstName\" value=\"${(register.formData.firstName!'')}\" />\n                </div>\n            </div>\n\n            <div class=\"${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('lastName',properties.kcFormGroupErrorClass!)}\">\n                <div class=\"${properties.kcLabelWrapperClass!}\">\n                    <label for=\"lastName\" class=\"${properties.kcLabelClass!}\">${msg(\"lastName\")}</label>\n                </div>\n                <div class=\"${properties.kcInputWrapperClass!}\">\n                    <input type=\"text\" id=\"lastName\" class=\"${properties.kcInputClass!}\" name=\"lastName\" value=\"${(register.formData.lastName!'')}\" />\n                </div>\n            </div>\n\n            <div class=\"${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('email',properties.kcFormGroupErrorClass!)}\">\n                <div class=\"${properties.kcLabelWrapperClass!}\">\n                    <label for=\"email\" class=\"${properties.kcLabelClass!}\">${msg(\"email\")}</label>\n                </div>\n                <div class=\"${properties.kcInputWrapperClass!}\">\n                    <input type=\"text\" id=\"email\" class=\"${properties.kcInputClass!}\" name=\"email\" value=\"${(register.formData.email!'')}\" autocomplete=\"email\" />\n                </div>\n            </div>\n\n          <#if !realm.registrationEmailAsUsername>\n            <div class=\"${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('username',properties.kcFormGroupErrorClass!)}\">\n                <div class=\"${properties.kcLabelWrapperClass!}\">\n                    <label for=\"username\" class=\"${properties.kcLabelClass!}\">${msg(\"username\")}</label>\n                </div>\n                <div class=\"${properties.kcInputWrapperClass!}\">\n                    <input type=\"text\" id=\"username\" class=\"${properties.kcInputClass!}\" name=\"username\" value=\"${(register.formData.username!'')}\" autocomplete=\"username\" />\n                </div>\n            </div>\n          </#if>\n\n            <#if passwordRequired??>\n            <div class=\"${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('password',properties.kcFormGroupErrorClass!)}\">\n                <div class=\"${properties.kcLabelWrapperClass!}\">\n                    <label for=\"password\" class=\"${properties.kcLabelClass!}\">${msg(\"password\")}</label>\n                </div>\n                <div class=\"${properties.kcInputWrapperClass!}\">\n                    <input type=\"password\" id=\"password\" class=\"${properties.kcInputClass!}\" name=\"password\" autocomplete=\"new-password\"/>\n                </div>\n            </div>\n\n            <div class=\"${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('password-confirm',properties.kcFormGroupErrorClass!)}\">\n                <div class=\"${properties.kcLabelWrapperClass!}\">\n                    <label for=\"password-confirm\" class=\"${properties.kcLabelClass!}\">${msg(\"passwordConfirm\")}</label>\n                </div>\n                <div class=\"${properties.kcInputWrapperClass!}\">\n                    <input type=\"password\" id=\"password-confirm\" class=\"${properties.kcInputClass!}\" name=\"password-confirm\" />\n                </div>\n            </div>\n            </#if>\n\n            <#if recaptchaRequired??>\n            <div class=\"form-group\">\n                <div class=\"${properties.kcInputWrapperClass!}\">\n                    <div class=\"g-recaptcha\" data-size=\"compact\" data-sitekey=\"${recaptchaSiteKey}\"></div>\n                </div>\n            </div>\n            </#if>\n\n            <div class=\"${properties.kcFormGroupClass!}\">\n                <div id=\"kc-form-options\" class=\"${properties.kcFormOptionsClass!}\">\n                    <div class=\"${properties.kcFormOptionsWrapperClass!}\">\n                        <span><a href=\"${url.loginUrl}\">${kcSanitize(msg(\"backToLogin\"))?no_esc}</a></span>\n                    </div>\n                </div>\n\n                <div id=\"kc-form-buttons\" class=\"${properties.kcFormButtonsClass!}\">\n                    <input class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}\" type=\"submit\" value=\"${msg(\"doRegister\")}\"/>\n                </div>\n            </div>\n        </form>\n    </#if>\n</@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/resources/css/login.css",
    "content": ".login-pf body {\n    background: url(\"../img/keycloak-bg.png\") no-repeat center center fixed;\n    background-size: cover;\n    height: 100%;\n}\n\n.alert-error {\n    background-color: #ffffff;\n    border-color: #cc0000;\n    color: #333333;\n}\n\n#kc-locale ul {\n    display: none;\n    position: absolute;\n    background-color: #fff;\n    list-style: none;\n    right: 0;\n    top: 20px;\n    min-width: 100px;\n    padding: 2px 0;\n    border: solid 1px #bbb;\n}\n\n#kc-locale:hover ul {\n    display: block;\n    margin: 0;\n}\n\n#kc-locale ul li a {\n    display: block;\n    padding: 5px 14px;\n    color: #000 !important;\n    text-decoration: none;\n    line-height: 20px;\n}\n\n#kc-locale ul li a:hover {\n    color: #4d5258;\n    background-color: #d4edfa;\n}\n\n#kc-locale-dropdown a {\n    color: #4d5258;\n    background: 0 0;\n    padding: 0 15px 0 0;\n    font-weight: 300;\n}\n\n#kc-locale-dropdown a:hover {\n    text-decoration: none;\n}\n\na#kc-current-locale-link {\n    display: block;\n    padding: 0 5px;\n}\n\n/* a#kc-current-locale-link:hover {\n    background-color: rgba(0,0,0,0.2);\n} */\n\na#kc-current-locale-link::after {\n    content: \"\\2c5\";\n    margin-left: 4px;\n}\n\n.login-pf .container {\n    padding-top: 40px;\n}\n\n.login-pf a:hover {\n    color: #0099d3;\n}\n\n#kc-logo {\n    width: 100%;\n}\n\n#kc-logo-wrapper {\n    background-image: url(../img/keycloak-logo-2.png);\n    background-repeat: no-repeat;\n    height: 63px;\n    width: 300px;\n    margin: 62px auto 0;\n}\n\ndiv.kc-logo-text {\n    background-image: url(../img/keycloak-logo-text.png);\n    background-repeat: no-repeat;\n    height: 63px;\n    width: 300px;\n    margin: 0 auto;\n}\n\ndiv.kc-logo-text span {\n    display: none;\n}\n\n#kc-header {\n    color: #ededed;\n    overflow: visible;\n    white-space: nowrap;\n}\n\n#kc-header-wrapper {\n    font-size: 29px;\n    text-transform: uppercase;\n    letter-spacing: 3px;\n    line-height: 1.2em;\n    padding: 62px 10px 20px;\n    white-space: normal;\n}\n\n#kc-content {\n    width: 100%;\n}\n\n#kc-attempted-username{\n    font-size: 20px;\n    font-family:inherit;\n    font-weight: normal;\n    padding-right:10px;\n}\n\n#kc-username{\n    text-align: center;\n}\n\n#kc-webauthn-settings-form{\n    padding-top:8px;\n}\n\n/* #kc-content-wrapper {\n    overflow-y: hidden;\n} */\n\n#kc-info {\n    padding-bottom: 200px;\n    margin-bottom: -200px;\n}\n\n#kc-info-wrapper {\n    font-size: 13px;\n}\n\n#kc-form-options span {\n    display: block;\n}\n\n#kc-form-options .checkbox {\n    margin-top: 0;\n    color: #72767b;\n}\n\n#kc-terms-text {\n    margin-bottom: 20px;\n}\n\n#kc-registration {\n    margin-bottom: 15px;\n}\n\n/* TOTP */\n\n.subtitle {\n    text-align: right;\n    margin-top: 30px;\n    color: #909090;\n}\n\n.required {\n    color: #CB2915;\n}\n\nol#kc-totp-settings {\n    margin: 0;\n    padding-left: 20px;\n}\n\nul#kc-totp-supported-apps {\n  margin-bottom: 10px;\n}\n\n#kc-totp-secret-qr-code {\n    max-width:150px;\n    max-height:150px;\n}\n\n#kc-totp-secret-key {\n    background-color: #fff;\n    color: #333333;\n    font-size: 16px;\n    padding: 10px 0;\n}\n\n/* OAuth */\n\n#kc-oauth h3 {\n    margin-top: 0;\n}\n\n#kc-oauth ul {\n    list-style: none;\n    padding: 0;\n    margin: 0;\n}\n\n#kc-oauth ul li {\n    border-top: 1px solid rgba(255, 255, 255, 0.1);\n    font-size: 12px;\n    padding: 10px 0;\n}\n\n#kc-oauth ul li:first-of-type {\n    border-top: 0;\n}\n\n#kc-oauth .kc-role {\n    display: inline-block;\n    width: 50%;\n}\n\n/* Code */\n#kc-code textarea {\n    width: 100%;\n    height: 8em;\n}\n\n/* Social */\n\n#kc-social-providers ul {\n    padding: 0;\n}\n\n#kc-social-providers li {\n    display: block;\n}\n\n#kc-social-providers li:first-of-type {\n    margin-top: 0;\n}\n\n.kc-login-tooltip{\n    position:relative;\n    display: inline-block;\n}\n\n.kc-login-tooltip .kc-tooltip-text{\n    top:-3px;\n    left:160%;\n    background-color: black;\n    visibility: hidden;\n    color: #fff;\n\n    min-width:130px;\n    text-align: center;\n    border-radius: 2px;\n    box-shadow:0 1px 8px rgba(0,0,0,0.6);\n    padding: 5px;\n\n    position: absolute;\n    opacity:0;\n    transition:opacity 0.5s;\n}\n\n/* Show tooltip */\n.kc-login-tooltip:hover .kc-tooltip-text {\n    visibility: visible;\n    opacity:0.7;\n}\n\n/* Arrow for tooltip */\n.kc-login-tooltip .kc-tooltip-text::after {\n    content: \" \";\n    position: absolute;\n    top: 15px;\n    right: 100%;\n    margin-top: -5px;\n    border-width: 5px;\n    border-style: solid;\n    border-color: transparent black transparent transparent;\n}\n\n.zocial,\na.zocial  {\n    width: 100%;\n    font-weight: normal;\n    font-size: 14px;\n    text-shadow: none;\n    border: 0;\n    background: #f5f5f5;\n    color: #72767b;\n    border-radius: 0;\n    white-space: normal;\n}\n.zocial:before {\n  border-right: 0;\n  margin-right: 0;\n}\n.zocial span:before {\n    padding: 7px 10px;\n    font-size: 14px;\n}\n.zocial:hover {\n    background: #ededed !important;\n}\n\n.zocial.facebook,\n.zocial.github,\n.zocial.google,\n.zocial.microsoft,\n.zocial.stackoverflow,\n.zocial.linkedin,\n.zocial.twitter {\n    background-image: none;\n    border: 0;\n\n    box-shadow: none;\n    text-shadow: none;\n}\n\n/* Copy of zocial windows classes to be used for microsoft's social provider button */\n.zocial.microsoft:before{ content: \"\\f15d\"; }\n.zocial.stackoverflow:before{ color: inherit; }\n\n\n@media (min-width: 768px) {\n    #kc-container-wrapper {\n        position: absolute;\n        width: 100%;\n    }\n\n    .login-pf .container {\n        padding-right: 80px;\n    }\n\n    #kc-locale {\n        position: relative;\n        text-align: right;\n        z-index: 9999;\n    }\n}\n\n@media (max-width: 767px) {\n\n    .login-pf body {\n      background: white;\n    }\n\n    #kc-header {\n        padding-left: 15px;\n        padding-right: 15px;\n        float: none;\n        text-align: left;\n    }\n\n    #kc-header-wrapper {\n      font-size: 16px;\n      font-weight: bold;\n      padding: 20px 60px 0 0;\n      color: #72767b;\n      letter-spacing: 0;\n    }\n\n    div.kc-logo-text {\n        margin: 0;\n        width: 150px;\n        height: 32px;\n        background-size: 100%;\n    }\n\n    #kc-form {\n        float: none;\n    }\n\n    #kc-info-wrapper {\n        border-top: 1px solid rgba(255, 255, 255, 0.1);\n        margin-top: 15px;\n        padding-top: 15px;\n        padding-left: 0px;\n        padding-right: 15px;\n    }\n\n    #kc-social-providers li {\n        display: block;\n        margin-right: 5px;\n    }\n\n    .login-pf .container {\n        padding-top: 15px;\n        padding-bottom: 15px;\n    }\n\n    #kc-locale {\n        position: absolute;\n        width: 200px;\n        top: 20px;\n        right: 20px;\n        text-align: right;\n        z-index: 9999;\n    }\n\n    #kc-logo-wrapper {\n        background-size: 100px 21px;\n        height: 21px;\n        width: 100px;\n        margin: 20px 0 0 20px;\n    }\n\n}\n\n@media (min-height: 646px) {\n    #kc-container-wrapper {\n        bottom: 12%;\n    }\n}\n\n@media (max-height: 645px) {\n    #kc-container-wrapper {\n        padding-top: 50px;\n        top: 20%;\n    }\n}\n\n.card-pf form.form-actions .btn {\n    float: right;\n    margin-left: 10px;\n}\n\n#kc-form-buttons {\n  margin-top: 40px;\n}\n\n.login-pf-page .login-pf-brand {\n  margin-top: 20px;\n  max-width: 360px;\n  width: 40%;\n}\n\n.card-pf {\n  background: #fff;\n  margin: 0 auto;\n  padding: 0 20px;\n  max-width: 500px;\n  border-top: 0;\n  box-shadow: 0 0 0;\n}\n\n/*tablet*/\n@media (max-width: 840px) {\n    .login-pf-page .card-pf{\n      max-width: none;\n      margin-left: 20px;\n      margin-right: 20px;\n      padding: 20px 20px 30px 20px;\n    }\n}\n@media (max-width: 767px) {\n    .login-pf-page .card-pf{\n      max-width: none;\n      margin-left: 0;\n      margin-right: 0;\n      padding-top: 0;\n    }\n    .card-pf.login-pf-accounts{\n      max-width: none;\n    }\n}\n\n.login-pf-page .login-pf-signup {\n  font-size: 15px;\n  color: #72767b;\n}\n#kc-content-wrapper .row {\n  margin-left: 0;\n  margin-right: 0;\n}\n\n@media (min-width: 768px) {\n  .login-pf-page .login-pf-social-section:first-of-type {\n    padding-right: 39px;\n    border-right: 1px solid #d1d1d1;\n    margin-right: -1px;\n  }\n  .login-pf-page .login-pf-social-section:last-of-type {\n    padding-left: 40px;\n  }\n  .login-pf-page .login-pf-social-section .login-pf-social-link:last-of-type {\n    margin-bottom: 0;\n  }\n}\n\n.login-pf-page .login-pf-social-link {\n  margin-bottom: 25px;\n}\n.login-pf-page .login-pf-social-link a {\n  padding: 2px 0;\n}\n\n.login-pf-page.login-pf-page-accounts {\n  margin-left: auto;\n  margin-right: auto;\n}\n\n.login-pf-page .btn-primary {\n    margin-top: 0;\n}\n\n.login-pf-page .list-view-pf .list-group-item {\n    border-bottom: 1px solid #ededed;\n}\n\n.login-pf-page .list-view-pf-description {\n    width: 100%;\n}\n\n.login-pf-page .card-pf{\n  margin-bottom: 10px;\n}\n\n#kc-form-login div.form-group:last-of-type,\n#kc-register-form div.form-group:last-of-type,\n#kc-update-profile-form div.form-group:last-of-type {\n    margin-bottom: 0px;\n}\n\n#kc-back {\n    margin-top: 5px;\n}\n\nform#kc-select-back-form div.login-pf-social-section {\n    padding-left: 0px;\n    border-left: 0px;\n}\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/resources/js/base64url.js",
    "content": "// for embedded scripts, quoted and modified from https://github.com/swansontec/rfc4648.js by William Swanson\n'use strict';\nvar base64url = base64url || {};\n(function(base64url) {\n\n    function parse (string, encoding, opts = {}) {\n        // Build the character lookup table:\n        if (!encoding.codes) {\n              encoding.codes = {};\n              for (let i = 0; i < encoding.chars.length; ++i) {\n                  encoding.codes[encoding.chars[i]] = i;\n              }\n        }\n\n        // The string must have a whole number of bytes:\n        if (!opts.loose && (string.length * encoding.bits) & 7) {\n            throw new SyntaxError('Invalid padding');\n        }\n\n        // Count the padding bytes:\n        let end = string.length;\n        while (string[end - 1] === '=') {\n            --end;\n\n            // If we get a whole number of bytes, there is too much padding:\n            if (!opts.loose && !(((string.length - end) * encoding.bits) & 7)) {\n                throw new SyntaxError('Invalid padding');\n            }\n        }\n\n        // Allocate the output:\n        const out = new (opts.out || Uint8Array)(((end * encoding.bits) / 8) | 0);\n\n        // Parse the data:\n        let bits = 0; // Number of bits currently in the buffer\n        let buffer = 0; // Bits waiting to be written out, MSB first\n        let written = 0; // Next byte to write\n        for (let i = 0; i < end; ++i) {\n            // Read one character from the string:\n            const value = encoding.codes[string[i]];\n            if (value === void 0) {\n                throw new SyntaxError('Invalid character ' + string[i]);\n            }\n\n            // Append the bits to the buffer:\n            buffer = (buffer << encoding.bits) | value;\n            bits += encoding.bits;\n\n            // Write out some bits if the buffer has a byte's worth:\n            if (bits >= 8) {\n                bits -= 8;\n                out[written++] = 0xff & (buffer >> bits);\n            }\n        }\n\n        // Verify that we have received just enough bits:\n        if (bits >= encoding.bits || 0xff & (buffer << (8 - bits))) {\n            throw new SyntaxError('Unexpected end of data');\n        }\n\n        return out\n    }\n\n    function stringify (data, encoding, opts = {}) {\n        const { pad = true } = opts;\n        const mask = (1 << encoding.bits) - 1;\n        let out = '';\n\n        let bits = 0; // Number of bits currently in the buffer\n        let buffer = 0; // Bits waiting to be written out, MSB first\n        for (let i = 0; i < data.length; ++i) {\n            // Slurp data into the buffer:\n            buffer = (buffer << 8) | (0xff & data[i]);\n            bits += 8;\n\n            // Write out as much as we can:\n            while (bits > encoding.bits) {\n                bits -= encoding.bits;\n                out += encoding.chars[mask & (buffer >> bits)];\n            }\n        }\n\n        // Partial character:\n        if (bits) {\n            out += encoding.chars[mask & (buffer << (encoding.bits - bits))];\n        }\n\n        // Add padding characters until we hit a byte boundary:\n        if (pad) {\n            while ((out.length * encoding.bits) & 7) {\n                out += '=';\n            }\n        }\n\n        return out\n    }\n\n    const encoding = {\n        chars: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n        bits: 6\n    }\n\n    base64url.decode = function (string, opts) {\n        return parse(string, encoding, opts);\n    }\n\n    base64url.encode = function (data, opts) {\n        return stringify(data, encoding, opts)\n    }\n\n    return base64url;\n}(base64url));\n\n\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/saml-post-form.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout; section>\n    <#if section = \"header\">\n        ${kcSanitize(msg(\"saml.post-form.title\"))}\n    <#elseif section = \"form\">\n        <script>window.onload = function() {document.forms[0].submit()};</script>\n        <p>${kcSanitize(msg(\"saml.post-form.message\"))}</p>\n        <form name=\"saml-post-binding\" method=\"post\" action=\"${samlPost.url}\">\n            <#if samlPost.SAMLRequest??>\n                <input type=\"hidden\" name=\"SAMLRequest\" value=\"${samlPost.SAMLRequest}\"/>\n            </#if>\n            <#if samlPost.SAMLResponse??>\n                <input type=\"hidden\" name=\"SAMLResponse\" value=\"${samlPost.SAMLResponse}\"/>\n            </#if>\n            <#if samlPost.relayState??>\n                <input type=\"hidden\" name=\"RelayState\" value=\"${samlPost.relayState}\"/>\n            </#if>\n\n            <noscript>\n                <p>${kcSanitize(msg(\"saml.post-form.js-disabled\"))}</p>\n                <input type=\"submit\" value=\"${kcSanitize(msg(\"doContinue\"))}\"/>\n            </noscript>\n        </form>\n    </#if>\n</@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/select-authenticator.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout displayInfo=true; section>\n    <#if section = \"header\" || section = \"show-username\">\n        <script type=\"text/javascript\">\n            function fillAndSubmit(authExecId) {\n                document.getElementById('authexec-hidden-input').value = authExecId;\n                document.getElementById('kc-select-credential-form').submit();\n            }\n        </script>\n        <#if section = \"header\">\n            ${msg(\"loginChooseAuthenticator\")}\n        </#if>\n    <#elseif section = \"form\">\n\n        <form id=\"kc-select-credential-form\" class=\"${properties.kcFormClass!}\" action=\"${url.loginAction}\" method=\"post\">\n            <div class=\"${properties.kcSelectAuthListClass!}\">\n                <#list auth.authenticationSelections as authenticationSelection>\n                    <div class=\"${properties.kcSelectAuthListItemClass!}\">\n                        <div class=\"${properties.kcSelectAuthListItemInfoClass!}\" onclick=\"fillAndSubmit('${authenticationSelection.authExecId}')\">\n                            <div class=\"${properties.kcSelectAuthListItemLeftClass!}\">\n                                <span class=\"${properties['${authenticationSelection.iconCssClass}']!authenticationSelection.iconCssClass}\"></span>\n                            </div>\n                            <div class=\"${properties.kcSelectAuthListItemBodyClass!}\">\n                                <div class=\"${properties.kcSelectAuthListItemDescriptionClass!}\">\n                                    <div class=\"${properties.kcSelectAuthListItemHeadingClass!}\">\n                                        ${msg('${authenticationSelection.displayName}')}\n                                    </div>\n                                    <div class=\"${properties.kcSelectAuthListItemHelpTextClass!}\">\n                                        ${msg('${authenticationSelection.helpText}')}\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </#list>\n                <input type=\"hidden\" id=\"authexec-hidden-input\" name=\"authenticationExecution\" />\n            </div>\n        </form>\n\n    </#if>\n</@layout.registrationLayout>\n\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/template.ftl",
    "content": "<#macro registrationLayout bodyClass=\"\" displayInfo=false displayMessage=true displayRequiredFields=false displayWide=false showAnotherWayIfPresent=true>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" class=\"${properties.kcHtmlClass!}\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n    <meta name=\"robots\" content=\"noindex, nofollow\">\n\n    <#if properties.meta?has_content>\n        <#list properties.meta?split(' ') as meta>\n            <meta name=\"${meta?split('==')[0]}\" content=\"${meta?split('==')[1]}\"/>\n        </#list>\n    </#if>\n    <title>${msg(\"loginTitle\",(realm.displayName!''))}</title>\n    <link rel=\"icon\" href=\"${url.resourcesCommonPath}/img/favicon.ico\" />\n    <#if properties.stylesCommon?has_content>\n        <#list properties.stylesCommon?split(' ') as style>\n            <link href=\"${url.resourcesCommonPath}/${style}\" rel=\"stylesheet\" />\n        </#list>\n    </#if>\n    <#if properties.styles?has_content>\n        <#list properties.styles?split(' ') as style>\n            <link href=\"${url.resourcesPath}/${style}\" rel=\"stylesheet\" />\n        </#list>\n    </#if>\n    <#if properties.scripts?has_content>\n        <#list properties.scripts?split(' ') as script>\n            <script src=\"${url.resourcesPath}/${script}\" type=\"text/javascript\"></script>\n        </#list>\n    </#if>\n    <#if scripts??>\n        <#list scripts as script>\n            <script src=\"${script}\" type=\"text/javascript\"></script>\n        </#list>\n    </#if>\n</head>\n\n<body class=\"${properties.kcBodyClass!}\">\n  <div class=\"${properties.kcLoginClass!}\">\n    <div id=\"kc-header\" class=\"${properties.kcHeaderClass!}\">\n      <div id=\"kc-header-wrapper\" class=\"${properties.kcHeaderWrapperClass!}\">${kcSanitize(msg(\"loginTitleHtml\",(realm.displayNameHtml!'')))?no_esc}</div>\n    </div>\n    <div class=\"${properties.kcFormCardClass!} <#if displayWide>${properties.kcFormCardAccountClass!}</#if>\">\n      <header class=\"${properties.kcFormHeaderClass!}\">\n        <#if realm.internationalizationEnabled  && locale.supported?size gt 1>\n            <div id=\"kc-locale\">\n                <div id=\"kc-locale-wrapper\" class=\"${properties.kcLocaleWrapperClass!}\">\n                    <div class=\"kc-dropdown\" id=\"kc-locale-dropdown\">\n                        <a href=\"#\" id=\"kc-current-locale-link\">${locale.current}</a>\n                        <ul>\n                            <#list locale.supported as l>\n                                <li class=\"kc-dropdown-item\"><a href=\"${l.url}\">${l.label}</a></li>\n                            </#list>\n                        </ul>\n                    </div>\n                </div>\n            </div>\n        </#if>\n        <#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>\n            <#if displayRequiredFields>\n                <div class=\"${properties.kcContentWrapperClass!}\">\n                    <div class=\"${properties.kcLabelWrapperClass!} subtitle\">\n                        <span class=\"subtitle\"><span class=\"required\">*</span> ${msg(\"requiredFields\")}</span>\n                    </div>\n                    <div class=\"col-md-10\">\n                        <h1 id=\"kc-page-title\"><#nested \"header\"></h1>\n                    </div>\n                </div>\n            <#else>\n                <h1 id=\"kc-page-title\"><#nested \"header\"></h1>\n            </#if>\n        <#else>\n            <#if displayRequiredFields>\n                <div class=\"${properties.kcContentWrapperClass!}\">\n                    <div class=\"${properties.kcLabelWrapperClass!} subtitle\">\n                        <span class=\"subtitle\"><span class=\"required\">*</span> ${msg(\"requiredFields\")}</span>\n                    </div>\n                    <div class=\"col-md-10\">\n                        <#nested \"show-username\">\n                        <div class=\"${properties.kcFormGroupClass!}\">\n                            <div id=\"kc-username\">\n                                <label id=\"kc-attempted-username\">${auth.attemptedUsername}</label>\n                                <a id=\"reset-login\" href=\"${url.loginRestartFlowUrl}\">\n                                    <div class=\"kc-login-tooltip\">\n                                        <i class=\"${properties.kcResetFlowIcon!}\"></i>\n                                        <span class=\"kc-tooltip-text\">${msg(\"restartLoginTooltip\")}</span>\n                                    </div>\n                                </a>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            <#else>\n                <#nested \"show-username\">\n                <div class=\"${properties.kcFormGroupClass!}\">\n                    <div id=\"kc-username\">\n                        <label id=\"kc-attempted-username\">${auth.attemptedUsername}</label>\n                        <a id=\"reset-login\" href=\"${url.loginRestartFlowUrl}\">\n                            <div class=\"kc-login-tooltip\">\n                                <i class=\"${properties.kcResetFlowIcon!}\"></i>\n                                <span class=\"kc-tooltip-text\">${msg(\"restartLoginTooltip\")}</span>\n                            </div>\n                        </a>\n                    </div>\n                </div>\n            </#if>\n        </#if>\n      </header>\n      <div id=\"kc-content\">\n        <div id=\"kc-content-wrapper\">\n\n          <#-- App-initiated actions should not see warning messages about the need to complete the action -->\n          <#-- during login.                                                                               -->\n          <#if displayMessage && message?has_content && (message.type != 'warning' || !isAppInitiatedAction??)>\n              <div class=\"alert alert-${message.type}\">\n                  <#if message.type = 'success'><span class=\"${properties.kcFeedbackSuccessIcon!}\"></span></#if>\n                  <#if message.type = 'warning'><span class=\"${properties.kcFeedbackWarningIcon!}\"></span></#if>\n                  <#if message.type = 'error'><span class=\"${properties.kcFeedbackErrorIcon!}\"></span></#if>\n                  <#if message.type = 'info'><span class=\"${properties.kcFeedbackInfoIcon!}\"></span></#if>\n                  <span class=\"kc-feedback-text\">${kcSanitize(message.summary)?no_esc}</span>\n              </div>\n          </#if>\n\n          <#nested \"form\">\n\n          <#if auth?has_content && auth.showTryAnotherWayLink() && showAnotherWayIfPresent>\n          <form id=\"kc-select-try-another-way-form\" action=\"${url.loginAction}\" method=\"post\" <#if displayWide>class=\"${properties.kcContentWrapperClass!}\"</#if>>\n              <div <#if displayWide>class=\"${properties.kcFormSocialAccountContentClass!} ${properties.kcFormSocialAccountClass!}\"</#if>>\n                  <div class=\"${properties.kcFormGroupClass!}\">\n                    <input type=\"hidden\" name=\"tryAnotherWay\" value=\"on\" />\n                    <a href=\"#\" id=\"try-another-way\" onclick=\"document.forms['kc-select-try-another-way-form'].submit();return false;\">${msg(\"doTryAnotherWay\")}</a>\n                  </div>\n              </div>\n          </form>\n          </#if>\n\n          <#if displayInfo>\n              <div id=\"kc-info\" class=\"${properties.kcSignUpClass!}\">\n                  <div id=\"kc-info-wrapper\" class=\"${properties.kcInfoAreaWrapperClass!}\">\n                      <#nested \"info\">\n                  </div>\n              </div>\n          </#if>\n        </div>\n      </div>\n\n    </div>\n  </div>\n</body>\n</html>\n</#macro>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/terms.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout displayMessage=false; section>\n    <#if section = \"header\">\n        ${msg(\"termsTitle\")}\n    <#elseif section = \"form\">\n    <div id=\"kc-terms-text\">\n        ${kcSanitize(msg(\"termsText\"))?no_esc}\n    </div>\n    <form class=\"form-actions\" action=\"${url.loginAction}\" method=\"POST\">\n        <input class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}\" name=\"accept\" id=\"kc-accept\" type=\"submit\" value=\"${msg(\"doAccept\")}\"/>\n        <input class=\"${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}\" name=\"cancel\" id=\"kc-decline\" type=\"submit\" value=\"${msg(\"doDecline\")}\"/>\n    </form>\n    <div class=\"clearfix\"></div>\n    </#if>\n</@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/theme.properties",
    "content": "import=common/keycloak\n\nstyles=css/login.css\nstylesCommon=node_modules/patternfly/dist/css/patternfly.min.css node_modules/patternfly/dist/css/patternfly-additions.min.css lib/zocial/zocial.css\n\nmeta=viewport==width=device-width,initial-scale=1\n\nkcHtmlClass=login-pf\nkcLoginClass=login-pf-page\n\nkcLogoLink=http://www.keycloak.org\n\nkcLogoClass=login-pf-brand\n\nkcContainerClass=container-fluid\nkcContentClass=col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-6 col-lg-offset-3\nkcContentWrapperClass=row\n\nkcHeaderClass=login-pf-page-header\nkcFeedbackAreaClass=col-md-12\nkcLocaleClass=col-xs-12 col-sm-1\nkcAlertIconClasserror=pficon pficon-error-circle-o\n\nkcFormAreaClass=col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-8 col-lg-offset-2\nkcFormCardClass=card-pf\nkcFormCardAccountClass=login-pf-accounts\nkcFormSocialAccountClass=login-pf-social-section\nkcFormSocialAccountContentClass=col-xs-12 col-sm-6\nkcFormSocialAccountListClass=login-pf-social list-unstyled login-pf-social-all\nkcFormSocialAccountDoubleListClass=login-pf-social-double-col\nkcFormSocialAccountListLinkClass=login-pf-social-link\nkcFormHeaderClass=login-pf-header\n\nkcFeedbackErrorIcon=pficon pficon-error-circle-o\nkcFeedbackWarningIcon=pficon pficon-warning-triangle-o\nkcFeedbackSuccessIcon=pficon pficon-ok\nkcFeedbackInfoIcon=pficon pficon-info\n\nkcResetFlowIcon=pficon pficon-arrow fa-2x\nkcWebAuthnKeyIcon=pficon pficon-key\n\nkcFormClass=form-horizontal\nkcFormGroupClass=form-group\nkcFormGroupErrorClass=has-error\nkcLabelClass=control-label\nkcLabelWrapperClass=col-xs-12 col-sm-12 col-md-12 col-lg-12\nkcInputClass=form-control\nkcInputWrapperClass=col-xs-12 col-sm-12 col-md-12 col-lg-12\nkcFormOptionsClass=col-xs-12 col-sm-12 col-md-12 col-lg-12\nkcFormButtonsClass=col-xs-12 col-sm-12 col-md-12 col-lg-12\nkcFormSettingClass=login-pf-settings\nkcTextareaClass=form-control\nkcSignUpClass=login-pf-signup\n\n\nkcInfoAreaClass=col-xs-12 col-sm-4 col-md-4 col-lg-5 details\n\n##### css classes for form buttons\n# main class used for all buttons\nkcButtonClass=btn\n# classes defining priority of the button - primary or default (there is typically only one priority button for the form)\nkcButtonPrimaryClass=btn-primary\nkcButtonDefaultClass=btn-default\n# classes defining size of the button\nkcButtonLargeClass=btn-lg\nkcButtonBlockClass=btn-block\n\n##### css classes for input\nkcInputLargeClass=input-lg\n\n##### css classes for form accessability\nkcSrOnlyClass=sr-only\n\n##### css classes for select-authenticator form\nkcSelectAuthListClass=list-group list-view-pf\nkcSelectAuthListItemClass=list-group-item list-view-pf-stacked\nkcSelectAuthListItemInfoClass=list-view-pf-main-info\nkcSelectAuthListItemLeftClass=list-view-pf-left\nkcSelectAuthListItemBodyClass=list-view-pf-body\nkcSelectAuthListItemDescriptionClass=list-view-pf-description\nkcSelectAuthListItemHeadingClass=list-group-item-heading\nkcSelectAuthListItemHelpTextClass=list-group-item-text\n\n##### css classes for the authenticators\nkcAuthenticatorDefaultClass=fa list-view-pf-icon-lg\nkcAuthenticatorPasswordClass=fa fa-unlock list-view-pf-icon-lg\nkcAuthenticatorOTPClass=fa fa-mobile list-view-pf-icon-lg\nkcAuthenticatorWebAuthnClass=fa fa-key list-view-pf-icon-lg\nkcAuthenticatorWebAuthnPasswordlessClass=fa fa-key list-view-pf-icon-lg\n\n##### css classes for the OTP Login Form\nkcSelectOTPListClass=card-pf card-pf-view card-pf-view-select card-pf-view-single-select\nkcSelectOTPListItemClass=card-pf-body card-pf-top-element\nkcAuthenticatorOtpCircleClass=fa fa-mobile card-pf-icon-circle\nkcSelectOTPItemHeadingClass=card-pf-title text-center\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/webauthn-authenticate.ftl",
    "content": "    <#import \"template.ftl\" as layout>\n    <@layout.registrationLayout showAnotherWayIfPresent=false; section>\n    <#if section = \"title\">\n     title\n    <#elseif section = \"header\">\n        ${kcSanitize(msg(\"webauthn-login-title\"))?no_esc}\n    <#elseif section = \"form\">\n\n    <form id=\"webauth\" class=\"${properties.kcFormClass!}\" action=\"${url.loginAction}\" method=\"post\">\n        <div class=\"${properties.kcFormGroupClass!}\">\n            <input type=\"hidden\" id=\"clientDataJSON\" name=\"clientDataJSON\"/>\n            <input type=\"hidden\" id=\"authenticatorData\" name=\"authenticatorData\"/>\n            <input type=\"hidden\" id=\"signature\" name=\"signature\"/>\n            <input type=\"hidden\" id=\"credentialId\" name=\"credentialId\"/>\n            <input type=\"hidden\" id=\"userHandle\" name=\"userHandle\"/>\n            <input type=\"hidden\" id=\"error\" name=\"error\"/>\n        </div>\n    </form>\n\n    <#if authenticators??>\n        <form id=\"authn_select\" class=\"${properties.kcFormClass!}\">\n            <#list authenticators.authenticators as authenticator>\n                <input type=\"hidden\" name=\"authn_use_chk\" value=\"${authenticator.credentialId}\"/>\n            </#list>\n        </form>\n    </#if>\n\n    <script type=\"text/javascript\" src=\"${url.resourcesCommonPath}/node_modules/jquery/dist/jquery.min.js\"></script>\n    <script type=\"text/javascript\" src=\"${url.resourcesPath}/js/base64url.js\"></script>\n    <script type=\"text/javascript\">\n\n        window.onload = () => {\n            let isUserIdentified = ${isUserIdentified};\n            if (!isUserIdentified) {\n                doAuthenticate([]);\n                return;\n            }\n            checkAllowCredentials();\n        };\n\n        function checkAllowCredentials() {\n            let allowCredentials = [];\n            let authn_use = document.forms['authn_select'].authn_use_chk;\n\n            if (authn_use !== undefined) {\n                if (authn_use.length === undefined) {\n                    allowCredentials.push({\n                        id: base64url.decode(authn_use.value, {loose: true}),\n                        type: 'public-key',\n                    });\n                } else {\n                    for (let i = 0; i < authn_use.length; i++) {\n                        allowCredentials.push({\n                            id: base64url.decode(authn_use[i].value, {loose: true}),\n                            type: 'public-key',\n                        });\n                    }\n                }\n            }\n            doAuthenticate(allowCredentials);\n        }\n\n\n    function doAuthenticate(allowCredentials) {\n        let challenge = \"${challenge}\";\n        let userVerification = \"${userVerification}\";\n        let rpId = \"${rpId}\";\n        let publicKey = {\n            rpId : rpId,\n            challenge: base64url.decode(challenge, { loose: true })\n        };\n\n        if (allowCredentials.length) {\n            publicKey.allowCredentials = allowCredentials;\n        }\n\n        if (userVerification !== 'not specified') publicKey.userVerification = userVerification;\n\n        navigator.credentials.get({publicKey})\n            .then((result) => {\n                window.result = result;\n\n                let clientDataJSON = result.response.clientDataJSON;\n                let authenticatorData = result.response.authenticatorData;\n                let signature = result.response.signature;\n\n                $(\"#clientDataJSON\").val(base64url.encode(new Uint8Array(clientDataJSON), { pad: false }));\n                $(\"#authenticatorData\").val(base64url.encode(new Uint8Array(authenticatorData), { pad: false }));\n                $(\"#signature\").val(base64url.encode(new Uint8Array(signature), { pad: false }));\n                $(\"#credentialId\").val(result.id);\n                if(result.response.userHandle) {\n                    $(\"#userHandle\").val(base64url.encode(new Uint8Array(result.response.userHandle), { pad: false }));\n                }\n                $(\"#webauth\").submit();\n            })\n            .catch((err) => {\n                $(\"#error\").val(err);\n                $(\"#webauth\").submit();\n            })\n        ;\n    }\n\n    </script>\n    <#elseif section = \"info\">\n\n    </#if>\n    </@layout.registrationLayout>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/webauthn-error.ftl",
    "content": "<#import \"template.ftl\" as layout>\n<@layout.registrationLayout displayMessage=true; section>\n    <#if section = \"header\">\n        ${kcSanitize(msg(\"webauthn-error-title\"))?no_esc}\n    <#elseif section = \"form\">\n\n        <script type=\"text/javascript\">\n            refreshPage = () => {\n                document.getElementById('isSetRetry').value = 'retry';\n                document.getElementById('executionValue').value = '${execution}';\n                document.getElementById('kc-error-credential-form').submit();\n            }\n        </script>\n\n        <form id=\"kc-error-credential-form\" class=\"${properties.kcFormClass!}\" action=\"${url.loginAction}\"\n              method=\"post\">\n            <input type=\"hidden\" id=\"executionValue\" name=\"authenticationExecution\"/>\n            <input type=\"hidden\" id=\"isSetRetry\" name=\"isSetRetry\"/>\n        </form>\n\n        <#if authenticators??>\n            <table class=\"table\">\n                <thead>\n                <tr>\n                    <th>${kcSanitize(msg(\"webauthn-available-authenticators\"))?no_esc}</th>\n                </tr>\n                </thead>\n                <tbody>\n                <#list authenticators.authenticators as authenticator>\n                    <tr>\n                        <th>\n                            <span id=\"kc-webauthn-authenticator\">${kcSanitize(authenticator.label)?no_esc}</span>\n                        </th>\n                    </tr>\n                </#list>\n                </tbody>\n            </table>\n        </#if>\n\n        <input tabindex=\"4\" onclick=\"refreshPage()\" type=\"button\"\n               class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}\"\n               name=\"try-again\" id=\"kc-try-again\" value=\"${kcSanitize(msg(\"doTryAgain\"))?no_esc}\"\n        />\n\n        <#if isAppInitiatedAction??>\n            <form action=\"${url.loginAction}\" class=\"${properties.kcFormClass!}\" id=\"kc-webauthn-settings-form\" method=\"post\">\n                <button type=\"submit\"\n                        class=\"${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}\"\n                        id=\"cancelWebAuthnAIA\" name=\"cancel-aia\" value=\"true\"/>${msg(\"doCancel\")}\n                </button>\n            </form>\n        </#if>\n\n    </#if>\n</@layout.registrationLayout>"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/login/webauthn-register.ftl",
    "content": "    <#import \"template.ftl\" as layout>\n    <@layout.registrationLayout; section>\n    <#if section = \"title\">\n        title\n    <#elseif section = \"header\">\n        <span class=\"${properties.kcWebAuthnKeyIcon}\"></span>\n        ${kcSanitize(msg(\"webauthn-registration-title\"))?no_esc}\n    <#elseif section = \"form\">\n\n        <form id=\"register\" class=\"${properties.kcFormClass!}\" action=\"${url.loginAction}\" method=\"post\">\n            <div class=\"${properties.kcFormGroupClass!}\">\n                <input type=\"hidden\" id=\"clientDataJSON\" name=\"clientDataJSON\"/>\n                <input type=\"hidden\" id=\"attestationObject\" name=\"attestationObject\"/>\n                <input type=\"hidden\" id=\"publicKeyCredentialId\" name=\"publicKeyCredentialId\"/>\n                <input type=\"hidden\" id=\"authenticatorLabel\" name=\"authenticatorLabel\"/>\n                <input type=\"hidden\" id=\"error\" name=\"error\"/>\n            </div>\n        </form>\n\n        <script type=\"text/javascript\" src=\"${url.resourcesCommonPath}/node_modules/jquery/dist/jquery.min.js\"></script>\n        <script type=\"text/javascript\" src=\"${url.resourcesPath}/js/base64url.js\"></script>\n        <script type=\"text/javascript\">\n\n            function registerSecurityKey() {\n                // mandatory parameters\n                let challenge = \"${challenge}\";\n                let userid = \"${userid}\";\n                let username = \"${username}\";\n\n                let signatureAlgorithms = \"${signatureAlgorithms}\";\n                let pubKeyCredParams = getPubKeyCredParams(signatureAlgorithms);\n\n                let rpEntityName = \"${rpEntityName}\";\n                let rp = {name: rpEntityName};\n\n                let publicKey = {\n                    challenge: base64url.decode(challenge, {loose: true}),\n                    rp: rp,\n                    user: {\n                        id: base64url.decode(userid, {loose: true}),\n                        name: username,\n                        displayName: username\n                    },\n                    pubKeyCredParams: pubKeyCredParams,\n                };\n\n                // optional parameters\n                let rpId = \"${rpId}\";\n                publicKey.rp.id = rpId;\n\n                let attestationConveyancePreference = \"${attestationConveyancePreference}\";\n                if (attestationConveyancePreference !== 'not specified') publicKey.attestation = attestationConveyancePreference;\n\n                let authenticatorSelection = {};\n                let isAuthenticatorSelectionSpecified = false;\n\n                let authenticatorAttachment = \"${authenticatorAttachment}\";\n                if (authenticatorAttachment !== 'not specified') {\n                    authenticatorSelection.authenticatorAttachment = authenticatorAttachment;\n                    isAuthenticatorSelectionSpecified = true;\n                }\n\n                let requireResidentKey = \"${requireResidentKey}\";\n                if (requireResidentKey !== 'not specified') {\n                    if (requireResidentKey === 'Yes')\n                        authenticatorSelection.requireResidentKey = true;\n                    else\n                        authenticatorSelection.requireResidentKey = false;\n                    isAuthenticatorSelectionSpecified = true;\n                }\n\n                let userVerificationRequirement = \"${userVerificationRequirement}\";\n                if (userVerificationRequirement !== 'not specified') {\n                    authenticatorSelection.userVerification = userVerificationRequirement;\n                    isAuthenticatorSelectionSpecified = true;\n                }\n\n                if (isAuthenticatorSelectionSpecified) publicKey.authenticatorSelection = authenticatorSelection;\n\n                let createTimeout = ${createTimeout};\n                if (createTimeout != 0) publicKey.timeout = createTimeout * 1000;\n\n                let excludeCredentialIds = \"${excludeCredentialIds}\";\n                let excludeCredentials = getExcludeCredentials(excludeCredentialIds);\n                if (excludeCredentials.length > 0) publicKey.excludeCredentials = excludeCredentials;\n\n                navigator.credentials.create({publicKey})\n                    .then(function (result) {\n                        window.result = result;\n                        let clientDataJSON = result.response.clientDataJSON;\n                        let attestationObject = result.response.attestationObject;\n                        let publicKeyCredentialId = result.rawId;\n\n                        $(\"#clientDataJSON\").val(base64url.encode(new Uint8Array(clientDataJSON), {pad: false}));\n                        $(\"#attestationObject\").val(base64url.encode(new Uint8Array(attestationObject), {pad: false}));\n                        $(\"#publicKeyCredentialId\").val(base64url.encode(new Uint8Array(publicKeyCredentialId), {pad: false}));\n\n                        let initLabel = \"WebAuthn Authenticator (Default Label)\";\n                        let labelResult = window.prompt(\"Please input your registered authenticator's label\", initLabel);\n                        if (labelResult === null) labelResult = initLabel;\n                        $(\"#authenticatorLabel\").val(labelResult);\n\n                        $(\"#register\").submit();\n\n                    })\n                    .catch(function (err) {\n                        $(\"#error\").val(err);\n                        $(\"#register\").submit();\n\n                    });\n            }\n\n            function getPubKeyCredParams(signatureAlgorithms) {\n                let pubKeyCredParams = [];\n                if (signatureAlgorithms === \"\") {\n                    pubKeyCredParams.push({type: \"public-key\", alg: -7});\n                    return pubKeyCredParams;\n                }\n                let signatureAlgorithmsList = signatureAlgorithms.split(',');\n\n                for (let i = 0; i < signatureAlgorithmsList.length; i++) {\n                    pubKeyCredParams.push({\n                        type: \"public-key\",\n                        alg: signatureAlgorithmsList[i]\n                    });\n                }\n                return pubKeyCredParams;\n            }\n\n            function getExcludeCredentials(excludeCredentialIds) {\n                let excludeCredentials = [];\n                if (excludeCredentialIds === \"\") return excludeCredentials;\n\n                let excludeCredentialIdsList = excludeCredentialIds.split(',');\n\n                for (let i = 0; i < excludeCredentialIdsList.length; i++) {\n                    excludeCredentials.push({\n                        type: \"public-key\",\n                        id: base64url.decode(excludeCredentialIdsList[i],\n                        {loose: true})\n                    });\n                }\n                return excludeCredentials;\n            }\n        </script>\n\n        <#if !isSetRetry?has_content && isAppInitiatedAction?has_content>\n            <input type=\"submit\"\n                   class=\"${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}\"\n                   id=\"registerWebAuthnAIA\" value=\"${msg(\"doRegister\")}\" onclick=\"registerSecurityKey()\"\n            />\n            <form action=\"${url.loginAction}\" class=\"${properties.kcFormClass!}\" id=\"kc-webauthn-settings-form\"\n                  method=\"post\">\n                <button type=\"submit\"\n                        class=\"${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}\"\n                        id=\"cancelWebAuthnAIA\" name=\"cancel-aia\" value=\"true\"/>${msg(\"doCancel\")}\n                </button>\n            </form>\n        <#else>\n            <script>\n                registerSecurityKey();\n            </script>\n        </#if>\n\n    </#if>\n    </@layout.registrationLayout>"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/welcome/index.ftl",
    "content": "<!--\n  ~ JBoss, Home of Professional Open Source.\n  ~ Copyright (c) 2011, Red Hat, Inc., and individual contributors\n  ~ as indicated by the @author tags. See the copyright.txt file in the\n  ~ distribution for a full listing of individual contributors.\n  ~\n  ~ This is free software; you can redistribute it and/or modify it\n  ~ under the terms of the GNU Lesser General Public License as\n  ~ published by the Free Software Foundation; either version 2.1 of\n  ~ the License, or (at your option) any later version.\n  ~\n  ~ This software is distributed in the hope that it will be useful,\n  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of\n  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n  ~ Lesser General Public License for more details.\n  ~\n  ~ You should have received a copy of the GNU Lesser General Public\n  ~ License along with this software; if not, write to the Free\n  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n  -->\n<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n \n<html>\n<head>\n    <title>Welcome to ${productNameFull}</title>\n\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n    <meta name=\"robots\" content=\"noindex, nofollow\">\n\n    <link rel=\"shortcut icon\" href=\"${resourcesCommonPath}/img/favicon.ico\" />\n\n    <#if properties.stylesCommon?has_content>\n        <#list properties.stylesCommon?split(' ') as style>\n            <link href=\"${resourcesCommonPath}/${style}\" rel=\"stylesheet\" />\n        </#list>\n    </#if>\n    <#if properties.styles?has_content>\n        <#list properties.styles?split(' ') as style>\n            <link href=\"${resourcesPath}/${style}\" rel=\"stylesheet\" />\n        </#list>\n    </#if>\n</head>\n\n<body>\n<div class=\"container-fluid\">\n  <div class=\"row\">\n    <div class=\"col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-8 col-lg-offset-2\">\n      <div class=\"welcome-header\">\n        <img src=\"${resourcesPath}/logo.png\" alt=\"${productName}\" border=\"0\" />\n        <h1>Welcome to <strong>${productNameFull}</strong> using <strong>${properties.testExternalVar}</strong></h1>\n      </div>\n      <div class=\"row\">\n        <div class=\"col-xs-12 col-sm-4\">\n          <div class=\"card-pf h-l\">\n            <#if successMessage?has_content>\n                <p class=\"alert success\">${successMessage}</p>\n            <#elseif errorMessage?has_content>\n                <p class=\"alert error\">${errorMessage}</p>\n                <h3><img src=\"welcome-content/user.png\">Administration Console</h3>\n            <#elseif bootstrap>\n                <#if localUser>\n                    <h3><img src=\"welcome-content/user.png\">Administration Console</h3>\n                    <p>Please create an initial admin user to get started.</p>\n                <#else>\n                    <p class=\"welcome-message\">\n                        <img src=\"welcome-content/alert.png\">You need local access to create the initial admin user. <br><br>Open <a href=\"http://localhost:8080/auth\">http://localhost:8080/auth</a>\n                        <br>or use the add-user-keycloak script.\n                    </p>\n                </#if>\n            </#if>\n\n            <#if bootstrap && localUser>\n                <form method=\"post\" class=\"welcome-form\">\n                    <p>\n                        <label for=\"username\">Username</label>\n                        <input id=\"username\" name=\"username\" />\n                    </p>\n\n                    <p>\n                        <label for=\"password\">Password</label>\n                        <input id=\"password\" name=\"password\" type=\"password\" />\n                    </p>\n\n                    <p>\n                        <label for=\"passwordConfirmation\">Password confirmation</label>\n                        <input id=\"passwordConfirmation\" name=\"passwordConfirmation\" type=\"password\" />\n                    </p>\n\n                    <input id=\"stateChecker\" name=\"stateChecker\" type=\"hidden\" value=\"${stateChecker}\" />\n\n                    <button id=\"create-button\" type=\"submit\" class=\"btn btn-primary\">Create</button>\n                </form>\n            </#if>\n            <div class=\"welcome-primary-link\">\n              <h3><a href=\"${adminUrl}\"><img src=\"welcome-content/user.png\">Administration Console <i class=\"fa fa-angle-right link\" aria-hidden=\"true\"></i></a></h3>\n              <div class=\"description\">\n                Centrally manage all aspects of the ${productNameFull} server\n              </div>\n            </div>\n          </div>\n        </div>\n        <div class=\"col-xs-12 col-sm-4\">\n          <div class=\"card-pf h-l\">\n            <h3><a href=\"${properties.documentationUrl}\"><img class=\"doc-img\" src=\"welcome-content/admin-console.png\">Documentation <i class=\"fa fa-angle-right link\" aria-hidden=\"true\"></i></a></h3>\n            <div class=\"description\">\n\n              User Guide, Admin REST API and Javadocs\n\n            </div>\n          </div>\n        </div>\n        <div class=\"col-xs-12 col-sm-4\">\n        <#if properties.displayCommunityLinks = \"true\">\n          <div class=\"card-pf h-m\">\n            <h3><a href=\"http://www.keycloak.org\"><img src=\"welcome-content/keycloak-project.png\">Keycloak Project <i class=\"fa fa-angle-right link\" aria-hidden=\"true\"></i></a></h3>\n          </div>\n          <div class=\"card-pf h-m\">\n            <h3><a href=\"https://groups.google.com/forum/#!forum/keycloak-user\"><img src=\"welcome-content/mail.png\">Mailing List <i class=\"fa fa-angle-right link\" aria-hidden=\"true\"></i></a></h3>\n          </div>\n          <div class=\"card-pf h-m\">\n            <h3><a href=\"https://issues.jboss.org/browse/KEYCLOAK\"><img src=\"welcome-content/bug.png\">Report an issue <i class=\"fa fa-angle-right link\" aria-hidden=\"true\"></i></a></h3>\n          </div>\n        </#if>\n        </div>\n      </div>\n      <div class='footer'>\n        <#if properties.displayCommunityLinks = \"true\">\n        <a href=\"http://www.jboss.org\"><img src=\"welcome-content/jboss_community.png\" alt=\"JBoss and JBoss Community\"></a>\n        </#if>\n      </div>\n    </div>\n  </div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/welcome/resources/css/welcome.css",
    "content": "body {\n\tbackground: #fff url(../bg.png) no-repeat center bottom fixed;\n\tbackground-size: cover;\n}\n.welcome-header {\n\tmargin-top: 10px;\n\tmargin-bottom: 50px;\n\tmargin-left: -10px;\n}\n.welcome-header img {\n\twidth: 150px;\n\tmargin-bottom: 40px;\n}\n.welcome-message {\n\tmargin-top: 20px;\n}\n.h-l {\n\tmin-height: 370px;\n\tpadding: 10px 20px 10px;\n\toverflow: hidden;\n}\n.h-l h3 {\n\tmargin-bottom: 10px;\n}\n.h-m {\n\theight: 110px;\n\tpadding-top: 23px;\n}\n.card-pf img {\n\twidth: 22px;\n\tmargin-right: 10px;\n\tvertical-align: bottom;\n}\nimg.doc-img {\n\twidth: auto;\n\theight: 22px;\n}\n.link {\n\tfont-size: 16px;\n\tvertical-align: baseline;\n\tmargin-left: 5px;\n}\nh3 {\n\tfont-weight: 550;\n}\nh3 a:link,\nh3 a:visited {\n\tcolor: #333;\n\tfont-weight: 550;\n}\nh3 a:hover,\nh3 a:hover .link {\n\ttext-decoration: none;\n\tcolor: #00659c;\n}\n.h-l h3 a img {\n\theight: 30px;\n\twidth: auto;\n}\n\n.description {\n\tmargin-top: 30px;\n}\n\n.card-pf {\n\tborder-top: 1px solid rgba(3, 3, 3, 0.1);\n\tbox-shadow: 0 1px 1px rgba(3, 3, 3, 0.275);\n}\n\n.welcome-form label,\n.welcome-form input {\n\tdisplay: block;\n\twidth: 100%;\n}\n\n.welcome-form label {\n\tcolor: #828486;\n\tfont-weight: normal;\n\tmargin-top: 18px;\n}\n.welcome-form input {\n\tborder: 0;\n\tborder-bottom: solid 1px #cbcbcb;\n}\n.welcome-form input:focus {\n\tborder-bottom: solid 1px #5e99c6;\n\toutline-width: 0;\n}\n.welcome-form button {\n\tmargin-top: 10px;\n}\n.error {\n  color: #c00;\n\tborder-color: #c00;\n\tpadding: 5px 10px;\n}\n.success {\n\tcolor: #3f9c35;\n\tborder-color: #3f9c35;\n\tpadding: 5px 10px;\n}\n.welcome-form + .welcome-primary-link,\n.welcome-message + .welcome-primary-link {\n\tdisplay: none;\n}\n\n.footer img {\n\tfloat: right;\n\twidth: 150px;\n\tmargin-top: 30px;\n}\n\n@media (max-width: 768px) {\n\t.welcome-header {\n\t\tmargin-top: 10px;\n\t\tmargin-bottom: 20px;\n\t}\n\t.welcome-header img {\n\t\tmargin-bottom: 20px;\n\t}\n\th3 {\n\t\tmargin-top: 10px;\n\t}\n\t.h-l,\n\t.h-m {\n\t\theight: auto;\n\t\tmin-height: auto;\n\t\tpadding: 5px 10px;\n\t}\n\t.h-l img {\n\t\tdisplay: inline;\n\t\tmargin-bottom: auto;\n\t}\n\t.description {\n\t\tdisplay: none;\n\t}\n\t.footer img {\n\t\tmargin-top: 10px;\n\t}\n}\n"
  },
  {
    "path": "theme-minimal/src/main/resources/theme/theme-minimal/welcome/theme.properties",
    "content": "import=common/keycloak\n\nstyles=css/welcome.css\nstylesCommon=node_modules/patternfly/dist/css/patternfly.css node_modules/patternfly/dist/css/patternfly-additions.css\n\ndocumentationUrl=https://www.keycloak.org/documentation.html\ndisplayCommunityLinks=true\n\ntestExternalVar=${env.KEYCLOAK_WELCOME_THEME}\n"
  }
]