diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml
index 37706bdc58..3ead239197 100644
--- a/.github/actions/setup/action.yml
+++ b/.github/actions/setup/action.yml
@@ -64,7 +64,7 @@ runs:
rustflags: ""
- name: Setup rust dependencies
if: ${{ contains(inputs.dependencies, 'rust') }}
- uses: taiki-e/install-action@80e6af7a2ec7f280fffe2d0a9d3a12a9d11d86e9 # v2
+ uses: taiki-e/install-action@0abfcd587b70a713fdaa7fb502c885e2112acb15 # v2
with:
tool: cargo-deny cargo-machete cargo-llvm-cov nextest
- name: Setup node (web)
diff --git a/.github/workflows/_reusable-docker-build-single.yml b/.github/workflows/_reusable-docker-build-single.yml
index b63852cc08..1463e524d4 100644
--- a/.github/workflows/_reusable-docker-build-single.yml
+++ b/.github/workflows/_reusable-docker-build-single.yml
@@ -68,7 +68,7 @@ jobs:
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker Image
- uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
+ uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
id: push
with:
context: .
diff --git a/.github/workflows/ci-api-docs.yml b/.github/workflows/ci-api-docs.yml
index 4d5365834f..819e7abac5 100644
--- a/.github/workflows/ci-api-docs.yml
+++ b/.github/workflows/ci-api-docs.yml
@@ -55,7 +55,7 @@ jobs:
env:
NODE_ENV: production
run: npm run build -w api
- - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v4
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v4
with:
name: api-docs
path: website/api/build
diff --git a/.github/workflows/ci-docs.yml b/.github/workflows/ci-docs.yml
index 64bedc4b90..51552828e1 100644
--- a/.github/workflows/ci-docs.yml
+++ b/.github/workflows/ci-docs.yml
@@ -96,7 +96,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker Image
id: push
- uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
+ uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
tags: ${{ steps.ev.outputs.imageTags }}
file: website/Dockerfile
diff --git a/.github/workflows/ci-main.yml b/.github/workflows/ci-main.yml
index e86186325a..edeffeaa9c 100644
--- a/.github/workflows/ci-main.yml
+++ b/.github/workflows/ci-main.yml
@@ -317,7 +317,7 @@ jobs:
with:
flags: conformance
- if: ${{ !cancelled() }}
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: conformance-certification-${{ matrix.job.name }}
path: tests/openid_conformance/exports/
@@ -340,7 +340,7 @@ jobs:
files: target/llvm-cov-target/rust.json
flags: rust
- if: ${{ !cancelled() }}
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: test-rust
path: target/llvm-cov-target/rust.json
diff --git a/.github/workflows/ci-outpost.yml b/.github/workflows/ci-outpost.yml
index 131804f8d2..5f478a7fc8 100644
--- a/.github/workflows/ci-outpost.yml
+++ b/.github/workflows/ci-outpost.yml
@@ -105,7 +105,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker Image
id: push
- uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
+ uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
tags: ${{ steps.ev.outputs.imageTags }}
file: lifecycle/container/${{ matrix.type }}.Dockerfile
diff --git a/.github/workflows/gen-image-compress.yml b/.github/workflows/gen-image-compress.yml
index 7c1813503a..e1b8eea9aa 100644
--- a/.github/workflows/gen-image-compress.yml
+++ b/.github/workflows/gen-image-compress.yml
@@ -42,7 +42,7 @@ jobs:
with:
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
compressOnly: ${{ github.event_name != 'pull_request' }}
- - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v7
+ - uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v7
if: "${{ github.event_name != 'pull_request' && steps.compress.outputs.markdown != '' }}"
id: cpr
with:
diff --git a/.github/workflows/gen-update-webauthn-mds.yml b/.github/workflows/gen-update-webauthn-mds.yml
index 41c69191a3..ce4d4d8884 100644
--- a/.github/workflows/gen-update-webauthn-mds.yml
+++ b/.github/workflows/gen-update-webauthn-mds.yml
@@ -26,7 +26,7 @@ jobs:
- name: Setup authentik env
uses: ./.github/actions/setup
- run: uv run ak update_webauthn_mds
- - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v7
+ - uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v7
id: cpr
with:
token: ${{ steps.generate_token.outputs.token }}
diff --git a/.github/workflows/release-branch-off.yml b/.github/workflows/release-branch-off.yml
index 6595322b05..3b0afeac27 100644
--- a/.github/workflows/release-branch-off.yml
+++ b/.github/workflows/release-branch-off.yml
@@ -73,7 +73,7 @@ jobs:
- name: Bump version
run: "make bump version=${{ inputs.next_version }}.0-rc1"
- name: Create pull request
- uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v7
+ uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v7
with:
token: ${{ steps.generate_token.outputs.token }}
branch: release-bump-${{ inputs.next_version }}
diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml
index ba3c363492..76abd0768d 100644
--- a/.github/workflows/release-publish.yml
+++ b/.github/workflows/release-publish.yml
@@ -51,7 +51,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker Image
id: push
- uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
+ uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
tags: ${{ steps.ev.outputs.imageTags }}
file: website/Dockerfile
@@ -115,7 +115,7 @@ jobs:
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker Image
- uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
+ uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
id: push
with:
push: true
diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml
index 498d2cf12f..d71d5ed09b 100644
--- a/.github/workflows/release-tag.yml
+++ b/.github/workflows/release-tag.yml
@@ -137,7 +137,7 @@ jobs:
sed -E -i 's/[0-9]{4}\.[0-9]{1,2}\.[0-9]+$/${{ inputs.version }}/' charts/authentik/Chart.yaml
./scripts/helm-docs.sh
- name: Create pull request
- uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v7
+ uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v7
with:
token: "${{ steps.app-token.outputs.token }}"
branch: bump-${{ inputs.version }}
@@ -196,7 +196,7 @@ jobs:
'.stable.version = $version | .stable.changelog = $changelog | .stable.changelog_url = $changelog_url | .stable.reason = $reason' version.json > version.new.json
mv version.new.json version.json
- name: Create pull request
- uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v7
+ uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v7
with:
token: "${{ steps.app-token.outputs.token }}"
branch: bump-${{ inputs.version }}
diff --git a/.github/workflows/translation-extract-compile.yml b/.github/workflows/translation-extract-compile.yml
index de90ea9300..80c9a679e1 100644
--- a/.github/workflows/translation-extract-compile.yml
+++ b/.github/workflows/translation-extract-compile.yml
@@ -42,7 +42,7 @@ jobs:
make web-check-compile
- name: Create Pull Request
if: ${{ github.event_name != 'pull_request' }}
- uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v7
+ uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v7
with:
token: ${{ steps.generate_token.outputs.token }}
branch: extract-compile-backend-translation
diff --git a/authentik/lib/sync/outgoing/models.py b/authentik/lib/sync/outgoing/models.py
index 88e62e2d06..91a839d8ad 100644
--- a/authentik/lib/sync/outgoing/models.py
+++ b/authentik/lib/sync/outgoing/models.py
@@ -1,3 +1,4 @@
+import math
from typing import Any, Self
import pglock
@@ -68,7 +69,12 @@ class OutgoingSyncProvider(ScheduledModel, Model):
return Paginator(self.get_object_qs(type), self.sync_page_size)
def get_object_sync_time_limit_ms[T: User | Group](self, type: type[T]) -> int:
- num_pages: int = self.get_paginator(type).num_pages
+ # Use a simple COUNT(*) on the model instead of materializing get_object_qs(),
+ # which for some providers (e.g. SCIM) runs PolicyEngine per-user and is
+ # extremely expensive. The time limit is an upper-bound estimate, so using
+ # the total count (without policy filtering) is a safe overestimate.
+ total_count = type.objects.count()
+ num_pages = math.ceil(total_count / self.sync_page_size) if total_count > 0 else 1
page_timeout_ms = timedelta_from_string(self.sync_page_timeout).total_seconds() * 1000
return int(num_pages * page_timeout_ms * 1.5)
diff --git a/lifecycle/container/Dockerfile b/lifecycle/container/Dockerfile
index ced14eb70f..15927b6360 100644
--- a/lifecycle/container/Dockerfile
+++ b/lifecycle/container/Dockerfile
@@ -29,7 +29,7 @@ RUN npm run build && \
npm run build:sfe
# Stage 2: Build go proxy
-FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:da3943074756e8d6f109ce7a84be16e98bffa39e9d369a0447f016b56db84e8f AS go-builder
+FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:c0074c718b473f3827043f86532c4c0ff537e3fe7a81b8219b0d1ccfcc2c9a09 AS go-builder
ARG TARGETOS
ARG TARGETARCH
diff --git a/lifecycle/container/ldap.Dockerfile b/lifecycle/container/ldap.Dockerfile
index 2a9bb585f4..a6fe3a0369 100644
--- a/lifecycle/container/ldap.Dockerfile
+++ b/lifecycle/container/ldap.Dockerfile
@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:1
# Stage 1: Build
-FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:da3943074756e8d6f109ce7a84be16e98bffa39e9d369a0447f016b56db84e8f AS builder
+FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:c0074c718b473f3827043f86532c4c0ff537e3fe7a81b8219b0d1ccfcc2c9a09 AS builder
ARG TARGETOS
ARG TARGETARCH
diff --git a/lifecycle/container/proxy.Dockerfile b/lifecycle/container/proxy.Dockerfile
index 9c67a632da..003f16a97a 100644
--- a/lifecycle/container/proxy.Dockerfile
+++ b/lifecycle/container/proxy.Dockerfile
@@ -21,7 +21,7 @@ COPY web .
RUN npm run build-proxy
# Stage 2: Build
-FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:da3943074756e8d6f109ce7a84be16e98bffa39e9d369a0447f016b56db84e8f AS builder
+FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:c0074c718b473f3827043f86532c4c0ff537e3fe7a81b8219b0d1ccfcc2c9a09 AS builder
ARG TARGETOS
ARG TARGETARCH
diff --git a/lifecycle/container/rac.Dockerfile b/lifecycle/container/rac.Dockerfile
index 4c4466d275..94db58d559 100644
--- a/lifecycle/container/rac.Dockerfile
+++ b/lifecycle/container/rac.Dockerfile
@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:1
# Stage 1: Build
-FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:da3943074756e8d6f109ce7a84be16e98bffa39e9d369a0447f016b56db84e8f AS builder
+FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:c0074c718b473f3827043f86532c4c0ff537e3fe7a81b8219b0d1ccfcc2c9a09 AS builder
ARG TARGETOS
ARG TARGETARCH
diff --git a/lifecycle/container/radius.Dockerfile b/lifecycle/container/radius.Dockerfile
index c4a98191c7..ab677cf54e 100644
--- a/lifecycle/container/radius.Dockerfile
+++ b/lifecycle/container/radius.Dockerfile
@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:1
# Stage 1: Build
-FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:da3943074756e8d6f109ce7a84be16e98bffa39e9d369a0447f016b56db84e8f AS builder
+FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:c0074c718b473f3827043f86532c4c0ff537e3fe7a81b8219b0d1ccfcc2c9a09 AS builder
ARG TARGETOS
ARG TARGETARCH
diff --git a/pyproject.toml b/pyproject.toml
index 8130a9e151..7149457a93 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -43,7 +43,7 @@ dependencies = [
"jwcrypto==1.5.7",
"kubernetes==35.0.0",
"ldap3==2.9.1",
- "lxml==6.0.3",
+ "lxml==6.0.4",
"msgraph-sdk==1.55.0",
"opencontainers==0.0.15",
"packaging==26.0",
@@ -101,11 +101,11 @@ dev = [
"pytest-timeout==2.4.0",
"pytest==9.0.3",
"requests-mock==1.12.1",
- "ruff==0.15.9",
+ "ruff==0.15.10",
"selenium==4.41.0",
"types-channels==4.3.0.20260408",
"types-docker==7.1.0.20260409",
- "types-jwcrypto==1.5.0.20260408",
+ "types-jwcrypto==1.5.7.20260409",
"types-ldap3==2.9.13.20260408",
"types-requests==2.33.0.20260408",
"types-zxcvbn==4.5.0.20260408",
diff --git a/uv.lock b/uv.lock
index dfde956901..34a1917533 100644
--- a/uv.lock
+++ b/uv.lock
@@ -352,7 +352,7 @@ requires-dist = [
{ name = "jwcrypto", specifier = "==1.5.7" },
{ name = "kubernetes", specifier = "==35.0.0" },
{ name = "ldap3", specifier = "==2.9.1" },
- { name = "lxml", specifier = "==6.0.3" },
+ { name = "lxml", specifier = "==6.0.4" },
{ name = "msgraph-sdk", specifier = "==1.55.0" },
{ name = "opencontainers", git = "https://github.com/vsoch/oci-python?rev=ceb4fcc090851717a3069d78e85ceb1e86c2740c" },
{ name = "packaging", specifier = "==26.0" },
@@ -410,11 +410,11 @@ dev = [
{ name = "pytest-randomly", specifier = "==4.0.1" },
{ name = "pytest-timeout", specifier = "==2.4.0" },
{ name = "requests-mock", specifier = "==1.12.1" },
- { name = "ruff", specifier = "==0.15.9" },
+ { name = "ruff", specifier = "==0.15.10" },
{ name = "selenium", specifier = "==4.41.0" },
{ name = "types-channels", specifier = "==4.3.0.20260408" },
{ name = "types-docker", specifier = "==7.1.0.20260409" },
- { name = "types-jwcrypto", specifier = "==1.5.0.20260408" },
+ { name = "types-jwcrypto", specifier = "==1.5.7.20260409" },
{ name = "types-ldap3", specifier = "==2.9.13.20260408" },
{ name = "types-requests", specifier = "==2.33.0.20260408" },
{ name = "types-zxcvbn", specifier = "==4.5.0.20260408" },
@@ -2088,46 +2088,46 @@ wheels = [
[[package]]
name = "lxml"
-version = "6.0.3"
+version = "6.0.4"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/43/42/149c7747977db9d68faee960c1a3391eb25e94d4bb677f8e2df8328e4098/lxml-6.0.3.tar.gz", hash = "sha256:a1664c5139755df44cab3834f4400b331b02205d62d3fdcb1554f63439bf3372", size = 4237567, upload-time = "2026-04-09T14:39:09.664Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/ce/08/1217ca4043f55c3c92993b283a7dbfa456a2058d8b57bbb416cc96b6efff/lxml-6.0.4.tar.gz", hash = "sha256:4137516be2a90775f99d8ef80ec0283f8d78b5d8bd4630ff20163b72e7e9abf2", size = 4237780, upload-time = "2026-04-12T16:28:24.182Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/d3/40/b637359bacf3813f1174d15b08516020ba5beb355e04377105d561e6e00a/lxml-6.0.3-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8c08926678852a233bf1ef645c4d683d56107f814482f8f41b21ef2c7659790e", size = 8575318, upload-time = "2026-04-09T14:36:20.608Z" },
- { url = "https://files.pythonhosted.org/packages/7f/91/d5286a45202ed91f1e428e68c6e1c11bcb2b42715c48424871fc73485b05/lxml-6.0.3-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:2ce76d113a7c3bf42761ec1de7ca615b0cbf9d8ae478eb1d6c20111d9c9fc098", size = 4623084, upload-time = "2026-04-09T14:36:24.015Z" },
- { url = "https://files.pythonhosted.org/packages/8a/5f/7ea1af571ee13ed1e5fba007fd83cd0794723ca76a51eed0ef9513363b1f/lxml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:83eca62141314d641ebe8089ffa532bbf572ea07dd6255b58c40130d06bb2509", size = 4948797, upload-time = "2026-04-09T14:36:26.662Z" },
- { url = "https://files.pythonhosted.org/packages/82/be/3a9b8d787d9877cbe17e02ef5af2523bd14ecc177ce308397c485c56fe18/lxml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d8781d812bb8efd47c35651639da38980383ff0d0c1f3269ade23e3a90799079", size = 5085983, upload-time = "2026-04-09T14:36:29.486Z" },
- { url = "https://files.pythonhosted.org/packages/c4/2b/645abaef837b11414c81513c31b308a001fb8cd370f665c3ebc854be5ba5/lxml-6.0.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:19b079e81aa3a31b523a224b0dd46da4f56e1b1e248eef9a599e5c885c788813", size = 5031039, upload-time = "2026-04-09T14:36:31.735Z" },
- { url = "https://files.pythonhosted.org/packages/3b/4f/561f30b77e9edbb373e2b6b7203a7d6ab219c495abca219536c66f3a44b2/lxml-6.0.3-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6c055bafdcb53e7f9f75e22c009cd183dd410475e21c296d599531d7f03d1bf5", size = 5646718, upload-time = "2026-04-09T14:36:34.127Z" },
- { url = "https://files.pythonhosted.org/packages/d7/ba/2a72e673d109b563c2ab77097f2f4ca64e2927d2f04836ba07aaabe1da0e/lxml-6.0.3-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f1594a183cee73f9a1dbfd35871c4e04b461f47eeb9bcf80f7d7856b1b136d", size = 5239360, upload-time = "2026-04-09T14:36:37.195Z" },
- { url = "https://files.pythonhosted.org/packages/52/98/4e5a4ef87d846af90cc9c1ee2f8af2af34c221e620aad317b3a535361b93/lxml-6.0.3-cp314-cp314-manylinux_2_28_i686.whl", hash = "sha256:a6380c5035598e4665272ad3fc86c96ddb2a220d4059cce5ba4b660f78346ad9", size = 5351233, upload-time = "2026-04-09T14:36:39.634Z" },
- { url = "https://files.pythonhosted.org/packages/cb/b8/cff0af5fe48ede6b1949dc2e14171470c0c68a15789037c1fed90602b89d/lxml-6.0.3-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:143ac903fb6c9be6da613390825c8e8bb8c8d71517d43882031f6b9bc89770ef", size = 4696677, upload-time = "2026-04-09T14:36:42.037Z" },
- { url = "https://files.pythonhosted.org/packages/0c/6e/0b2a918fb15c30b00ff112df16c548df011db37b58d764bd17f47db74905/lxml-6.0.3-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c4fff7d77f440378cd841e340398edf5dbefee334816efbf521bb6e31651e54e", size = 5250503, upload-time = "2026-04-09T14:36:44.417Z" },
- { url = "https://files.pythonhosted.org/packages/57/1b/4697918f9d4c2e643e2c59cedb37c2f3a9f76fb1217d767f6dff476813d8/lxml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:631567ffc3ddb989ccdcd28f6b9fa5aab1ec7fc0e99fe65572b006a6aad347e2", size = 5084563, upload-time = "2026-04-09T14:36:46.762Z" },
- { url = "https://files.pythonhosted.org/packages/7b/8c/d7ec96246f0632773912c6556288d3b6bb6580f3a967441ca4636ddc3f73/lxml-6.0.3-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:38acf7171535ffa7fff1fcec8b82ebd4e55cd02e581efe776928108421accaa1", size = 4737407, upload-time = "2026-04-09T14:36:49.826Z" },
- { url = "https://files.pythonhosted.org/packages/d2/0c/603e35bf77aeb28c972f39eece35e7c0f6579ff33a7bed095cc2f7f942d9/lxml-6.0.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:06b9f3ac459b4565bbaa97aa5512aa7f9a1188c662f0108364f288f6daf35773", size = 5670919, upload-time = "2026-04-09T14:36:52.231Z" },
- { url = "https://files.pythonhosted.org/packages/92/08/6d3f188e6705cf0bfd8b5788055c7381bb3ffa786dfba9fa0b0ed5778506/lxml-6.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2773dbe2cedee81f2769bd5d24ceb4037706cf032e1703513dd0e9476cd9375f", size = 5237771, upload-time = "2026-04-09T14:36:55.286Z" },
- { url = "https://files.pythonhosted.org/packages/f1/4c/01639533b90e9ff622909c113df2ab2dbdd1d78540eb153d13b66a9c96ba/lxml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:30c437d8bb9a9a9edff27e85b694342e47a26a6abc249abe00584a4824f9d80d", size = 5263862, upload-time = "2026-04-09T14:36:58.247Z" },
- { url = "https://files.pythonhosted.org/packages/06/0e/bd1157d7b09d1f5e1d580c124203cee656130a3f8908365760a593b21daf/lxml-6.0.3-cp314-cp314-win32.whl", hash = "sha256:1b60a3a1205f869bd47874787c792087174453b1a869db4837bf5b3ff92be017", size = 3656378, upload-time = "2026-04-09T14:37:47.74Z" },
- { url = "https://files.pythonhosted.org/packages/c5/cc/d50cbce8cd5687670868bea33bbeefa0866c5e5d02c5e11c4a04c79fc45e/lxml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:5b6913a68d98c58c673667c864500ba31bc9b0f462effac98914e9a92ebacd2e", size = 4062518, upload-time = "2026-04-09T14:37:49.911Z" },
- { url = "https://files.pythonhosted.org/packages/fd/c7/ece11a1e51390502894838aa384e9f98af7bef4d6806a927197153a16972/lxml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:1b36a3c73f2a6d9c2bfae78089ca7aedae5c2ee5fd5214a15f00b2f89e558ba7", size = 3741064, upload-time = "2026-04-09T14:37:52.185Z" },
- { url = "https://files.pythonhosted.org/packages/2c/ae/918d7f89635fb6456cd732c12246c0e504dd9c49e8006f3593c9ecdb90ff/lxml-6.0.3-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:239e9a6be3a79c03ec200d26f7bb17a4414704a208059e20050bf161e2d8848a", size = 8826590, upload-time = "2026-04-09T14:37:00.862Z" },
- { url = "https://files.pythonhosted.org/packages/07/cf/bda0ae583758704719976b9ea69c8b089fa5f92e49683e517386539b21cf/lxml-6.0.3-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:16e5cbaa1a6351f2abefa4072e9aac1f09103b47fe7ab4496d54e5995b065162", size = 4735028, upload-time = "2026-04-09T14:37:03.602Z" },
- { url = "https://files.pythonhosted.org/packages/2f/0e/3bfb18778c6f73c7ead2d49a256501fa3052888b899826f5d1df1fbdf83b/lxml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:89f8746c206d8cf2c167221831645d6cc2b24464afd9c428a5eb3fd34c584eb1", size = 4969184, upload-time = "2026-04-09T14:37:05.914Z" },
- { url = "https://files.pythonhosted.org/packages/29/e6/796c77751a682d6d1bb9aa3fe43851b41a21b0377100e246a4a83a81d668/lxml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5d559a84b2fd583e5bcf8ec4af1ec895f98811684d5fbd6524ea31a04f92d4ad", size = 5103548, upload-time = "2026-04-09T14:37:08.605Z" },
- { url = "https://files.pythonhosted.org/packages/f9/5e/a02aee214f657f29d4690d88161de8ffb8f1b5139e792bae313b9479e317/lxml-6.0.3-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7966fbce2d18fde579d5593933d36ad98cc7c8dc7f2b1916d127057ce0415062", size = 5027775, upload-time = "2026-04-09T14:37:11.283Z" },
- { url = "https://files.pythonhosted.org/packages/20/e5/65dd25f2c366879d696d1c720af9a96fa0969d2d135a27b6140222fc6f68/lxml-6.0.3-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a1f258e6aa0e6eda2c1199f5582c062c96c7d4a28d96d0c4daa79e39b3f2a764", size = 5595348, upload-time = "2026-04-09T14:37:13.618Z" },
- { url = "https://files.pythonhosted.org/packages/f7/1f/2f0e80d7fd2ad9755d771af4ad46ea14bf871bc5a1d2d365a3f948940ddf/lxml-6.0.3-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:738aef404c862d2c3cd951364ee7175c9d50e8290f5726611c4208c0fba8d186", size = 5224217, upload-time = "2026-04-09T14:37:16.519Z" },
- { url = "https://files.pythonhosted.org/packages/3b/28/e1aaeee7d6a4c9f24a3e4535a4e19ce64b99eefbe7437d325b61623b1817/lxml-6.0.3-cp314-cp314t-manylinux_2_28_i686.whl", hash = "sha256:5c35e5c3ed300990a46a144d3514465713f812b35dacfa83e928c60db7c90af7", size = 5312245, upload-time = "2026-04-09T14:37:19.387Z" },
- { url = "https://files.pythonhosted.org/packages/0a/ac/9633cb919124473e03c62862b0494bf0e1705f902fbd9627be4f648bddfb/lxml-6.0.3-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:4ff774b43712b0cf40d9888a5494ca39aefe990c946511cc947b9fddcf74a29b", size = 4637952, upload-time = "2026-04-09T14:37:21.648Z" },
- { url = "https://files.pythonhosted.org/packages/50/aa/135baeea457d41989bafa78e437fe3a370c793aab0d8fb3da73ccae10095/lxml-6.0.3-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d20af2784c763928d0d0879cbc5a3739e4d81eefa0d68962d3478bff4c13e644", size = 5232782, upload-time = "2026-04-09T14:37:24.6Z" },
- { url = "https://files.pythonhosted.org/packages/0e/77/d05183ac8440cbc4c6fa386edb7ba9718bee4f097e58485b1cd1f9479d56/lxml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:fdb7786ebefaa0dad0d399dfeaf146b370a14591af2f3aea59e06f931a426678", size = 5083889, upload-time = "2026-04-09T14:37:27.432Z" },
- { url = "https://files.pythonhosted.org/packages/6d/58/e9fda8fb82775491ad0290c7b17252f944b6c3a6974cd820d65910690351/lxml-6.0.3-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:c71a387ea133481e725079cff22de45593bf0b834824de22829365ab1d2386c9", size = 4758658, upload-time = "2026-04-09T14:37:29.81Z" },
- { url = "https://files.pythonhosted.org/packages/8b/32/4aae9f004f79f9d200efd8343809cfe46077f8e5bd58f08708c320a20fcd/lxml-6.0.3-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:841b89fc3d910d61c7c267db6bb7dc3a8b3dac240edb66220fcdf96fe70a0552", size = 5619494, upload-time = "2026-04-09T14:37:33.482Z" },
- { url = "https://files.pythonhosted.org/packages/f9/49/407fa9e3c91e7c6d0762eaeedd50d4695bcd26db817e933ca689eb1f3df4/lxml-6.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:ac2d6cdafa29672d6a604c641bf67ace3fd0735ec6885501a94943379219ddbf", size = 5228386, upload-time = "2026-04-09T14:37:36.058Z" },
- { url = "https://files.pythonhosted.org/packages/99/92/39982f818acbb1dd67dd5d20c2a06bcb9f1f3b9a8ff0021e367904f82417/lxml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:609bf136a7339aeca2bd4268c7cd190f33d13118975fe9964eda8e5138f42802", size = 5247973, upload-time = "2026-04-09T14:37:38.836Z" },
- { url = "https://files.pythonhosted.org/packages/66/68/fcdbb78c8cda81a86e17b31abf103b7e474e474a09fb291a99e7a9b43eb8/lxml-6.0.3-cp314-cp314t-win32.whl", hash = "sha256:bf98f5f87f6484302e7cce4e2ca5af43562902852063d916c3e2f1c115fdce60", size = 3896249, upload-time = "2026-04-09T14:37:41.068Z" },
- { url = "https://files.pythonhosted.org/packages/88/fb/6292681ac4a4223b700569ce98f71662cb07c5a3ade4f346f5f0d5c574cf/lxml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:d3d65e511e4e656ec67b472110f7a72cbf8547ca15f76fe74cffa4e97412a064", size = 4391091, upload-time = "2026-04-09T14:37:43.357Z" },
- { url = "https://files.pythonhosted.org/packages/99/39/a0f486360a6f1b36fd2f5eb62d037652bef503d82b6f853aee6664cdfcac/lxml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:cbc7ce67f85b92db97c92219985432be84dc1ba9a028e68c6933e89551234df2", size = 3816374, upload-time = "2026-04-09T14:37:45.532Z" },
+ { url = "https://files.pythonhosted.org/packages/10/18/36e28a809c509a67496202771f545219ac5a2f1cd61aae325991fcf5ab91/lxml-6.0.4-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:569d3b18340863f603582d2124e742a68e85755eff5e47c26a55e298521e3a01", size = 8575045, upload-time = "2026-04-12T16:25:33.57Z" },
+ { url = "https://files.pythonhosted.org/packages/11/38/a168c820e3b08d3b4fa0f4e6b53b3930086b36cc11e428106d38c36778cd/lxml-6.0.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:3b6245ee5241342d45e1a54a4a8bc52ef322333ada74f24aa335c4ab36f20161", size = 4622963, upload-time = "2026-04-12T16:25:36.818Z" },
+ { url = "https://files.pythonhosted.org/packages/53/e0/2c9d6abdd82358cea3c0d8d6ca272a6af0f38156abce7827efb6d5b62d17/lxml-6.0.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:79a1173ba3213a3693889a435417d4e9f3c07d96e30dc7cc3a712ed7361015fe", size = 4948832, upload-time = "2026-04-12T16:25:39.104Z" },
+ { url = "https://files.pythonhosted.org/packages/96/d7/f2202852e91d7baf3a317f4523a9c14834145301e5b0f2e80c01c4bfbd49/lxml-6.0.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dc18bb975666b443ba23aedd2fcf57e9d0d97546b52a1de97a447c4061ba4110", size = 5085865, upload-time = "2026-04-12T16:25:41.226Z" },
+ { url = "https://files.pythonhosted.org/packages/09/57/abee549324496e92708f71391c6060a164d3c95369656a1a15e9f20d8162/lxml-6.0.4-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2079f5dc83291ac190a52f8354b78648f221ecac19fb2972a2d056b555824de7", size = 5030001, upload-time = "2026-04-12T16:25:43.695Z" },
+ { url = "https://files.pythonhosted.org/packages/c2/f8/432da7178c5917a16468af6c5da68fef7cf3357d4bd0e6f50272ec9a59b5/lxml-6.0.4-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3eda02da4ca16e9ca22bbe5654470c17fa1abcd967a52e4c2e50ff278221e351", size = 5646303, upload-time = "2026-04-12T16:25:46.577Z" },
+ { url = "https://files.pythonhosted.org/packages/82/f9/e1c04ef667a6bf9c9dbd3bf04c50fa51d7ee25b258485bb748b27eb9a1c7/lxml-6.0.4-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c3787cdc3832b70e21ac2efafea2a82a8ccb5e85bec110dc68b26023e9d3caae", size = 5237940, upload-time = "2026-04-12T16:25:49.157Z" },
+ { url = "https://files.pythonhosted.org/packages/d0/f0/cdea60d92df731725fc3c4f33e387b100f210acd45c92969e42d2ba993fa/lxml-6.0.4-cp314-cp314-manylinux_2_28_i686.whl", hash = "sha256:3f276d49c23103565d39440b9b3f4fc08fa22f5a96395ea4b4d4fea4458b1505", size = 5350050, upload-time = "2026-04-12T16:25:52.027Z" },
+ { url = "https://files.pythonhosted.org/packages/2e/15/bf52c7a70b6081bb9e00d37cc90fcf60aa84468d9d173ad2fade38ec34c5/lxml-6.0.4-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:fdfdad73736402375b11b3a137e48cd09634177516baf5fc0bd80d1ca85f3cda", size = 4696409, upload-time = "2026-04-12T16:25:55.141Z" },
+ { url = "https://files.pythonhosted.org/packages/c5/69/9bade267332cc06f9a9aa773b5a11bdfb249af485df9e142993009ea1fc4/lxml-6.0.4-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:75912421456946931daba0ec3cedfa824c756585d05bde97813a17992bfbd013", size = 5249072, upload-time = "2026-04-12T16:25:57.362Z" },
+ { url = "https://files.pythonhosted.org/packages/14/ca/043bcacb096d6ed291cbbc58724e9625a453069d6edeb840b0bf18038d05/lxml-6.0.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:48cd5a88da67233fd82f2920db344503c2818255217cd6ea462c9bb8254ba7cb", size = 5083779, upload-time = "2026-04-12T16:26:00.018Z" },
+ { url = "https://files.pythonhosted.org/packages/04/89/f5fb18d76985969e84af13682e489acabee399bb54738a363925ea6e7390/lxml-6.0.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:87af86a8fa55b9ff1e6ee4233d762296f2ce641ba948af783fb995c5a8a3371b", size = 4736953, upload-time = "2026-04-12T16:26:02.289Z" },
+ { url = "https://files.pythonhosted.org/packages/84/ba/d1d7284bb4ba951f188c3fc0455943c1fcbd1c33d1324d6d57b7d4a45be6/lxml-6.0.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:a743714cd656ba7ccb29d199783906064c7b5ba3c0e2a79f0244ea0badc6a98c", size = 5669605, upload-time = "2026-04-12T16:26:04.694Z" },
+ { url = "https://files.pythonhosted.org/packages/72/05/1463e55f2de27bb60feddc894dd7c0833bd501f8861392ed416291b38db5/lxml-6.0.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e31c76bd066fb4f81d9a32e5843bffdf939ab27afb1ffc1c924e749bfbdb00e3", size = 5236886, upload-time = "2026-04-12T16:26:07.659Z" },
+ { url = "https://files.pythonhosted.org/packages/fe/fb/0b6ee9194ce3ac49db4cadaa8a9158f04779fc768b6c27c4e2945d71a99d/lxml-6.0.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f185fd6e7d550e9917d7103dccf51be589aba953e15994fb04646c1730019685", size = 5263382, upload-time = "2026-04-12T16:26:10.067Z" },
+ { url = "https://files.pythonhosted.org/packages/9a/93/ec18a08e98dd82cac39f1d2511ee2bed5affb94d228356d8ef165a4ec3b9/lxml-6.0.4-cp314-cp314-win32.whl", hash = "sha256:774660028f8722a598400430d2746fb0075949f84a9a5cd9767d9152e3baaac5", size = 3656164, upload-time = "2026-04-12T16:26:59.568Z" },
+ { url = "https://files.pythonhosted.org/packages/15/86/52507316abfc7150bf6bb191e39a12e301ee80334610a493884ae2f9d20d/lxml-6.0.4-cp314-cp314-win_amd64.whl", hash = "sha256:fbd7d14349413f5609c0b537b1a48117d6ccef1af37986af6b03766ad05bf43e", size = 4062512, upload-time = "2026-04-12T16:27:02.212Z" },
+ { url = "https://files.pythonhosted.org/packages/f1/d5/09c593a2ef2234b8cd6cf059e2dc212e0654bf05c503f0ef2daf05adb680/lxml-6.0.4-cp314-cp314-win_arm64.whl", hash = "sha256:a61a01ec3fbfd5b73a69a7bf513271051fd6c5795d82fc5daa0255934cd8db3d", size = 3740745, upload-time = "2026-04-12T16:27:04.444Z" },
+ { url = "https://files.pythonhosted.org/packages/4a/3c/42a98bf6693938bf7b285ec7f70ba2ae9d785d0e5b2cdb85d2ee29e287eb/lxml-6.0.4-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:504edb62df33cea502ea6e73847c647ba228623ca3f80a228be5723a70984dd5", size = 8826437, upload-time = "2026-04-12T16:26:12.911Z" },
+ { url = "https://files.pythonhosted.org/packages/c2/c2/ad13f39b2db8709788aa2dcb6e90b81da76db3b5b2e7d35e0946cf984960/lxml-6.0.4-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:f01b7b0316d4c0926d49a7f003b2d30539f392b140a3374bb788bad180bc8478", size = 4734892, upload-time = "2026-04-12T16:26:15.871Z" },
+ { url = "https://files.pythonhosted.org/packages/2c/6d/c559d7b5922c5b0380fc2cb5ac134b6a3f9d79d368347a624ee5d68b0816/lxml-6.0.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ab999933e662501efe4b16e6cfb7c9f9deca7d072cd1788b99c8defde78c0dfb", size = 4969173, upload-time = "2026-04-12T16:26:18.335Z" },
+ { url = "https://files.pythonhosted.org/packages/c7/78/ca521e36157f38e3e1a29276855cdf48d213138fc0c8365693ff5c876ca7/lxml-6.0.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67c3f084389fe75932c39b6869a377f6c8e21e818f31ae8a30c71dd2e59360e2", size = 5103134, upload-time = "2026-04-12T16:26:20.612Z" },
+ { url = "https://files.pythonhosted.org/packages/28/a7/7d62d023bacaa0aaf60af8c0a77c6c05f84327396d755f3aa64b788678a9/lxml-6.0.4-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:377ea1d654f76ed6205c87d14920f829c9f4d31df83374d3cbcbdaae804d37b2", size = 5027205, upload-time = "2026-04-12T16:26:22.981Z" },
+ { url = "https://files.pythonhosted.org/packages/34/be/51b194b81684f2e85e5d992771c45d70cb22ac6f7291ac6bc7b255830afe/lxml-6.0.4-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e60cd0bcacbfd1a96d63516b622183fb2e3f202300df9eb5533391a8a939dbfa", size = 5594461, upload-time = "2026-04-12T16:26:25.316Z" },
+ { url = "https://files.pythonhosted.org/packages/39/24/8850f38fbf89dd072ff31ba22f9e40347aeada7cadf710ecb04b8d9f32d4/lxml-6.0.4-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e9e30fd63d41dd0bbdb020af5cdfffd5d9b554d907cb210f18e8fcdc8eac013", size = 5223378, upload-time = "2026-04-12T16:26:28.68Z" },
+ { url = "https://files.pythonhosted.org/packages/2a/9b/595239ba8c719b0fdc7bc9ebdb7564459c9a6b24b8b363df4a02674aeece/lxml-6.0.4-cp314-cp314t-manylinux_2_28_i686.whl", hash = "sha256:1fb4a1606bb68c533002e7ed50d7e55e58f0ef1696330670281cb79d5ab2050d", size = 5311415, upload-time = "2026-04-12T16:26:31.513Z" },
+ { url = "https://files.pythonhosted.org/packages/be/cb/aa27ac8d041acf34691577838494ad08df78e83fdfdb66948d2903e9291e/lxml-6.0.4-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:695c7708438e449d57f404db8cc1b769e77ad5b50655f32f8175686ba752f293", size = 4637953, upload-time = "2026-04-12T16:26:33.806Z" },
+ { url = "https://files.pythonhosted.org/packages/f6/f2/f19114fd86825c2d1ce41cd99daad218d30cfdd2093d4de9273986fb4d68/lxml-6.0.4-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d49c35ae1e35ee9b569892cf8f8f88db9524f28d66e9daee547a5ef9f3c5f468", size = 5231532, upload-time = "2026-04-12T16:26:36.518Z" },
+ { url = "https://files.pythonhosted.org/packages/9a/0e/c3fa354039ec0b6b09f40fbe1129efc572ac6239faa4906de42d5ce87c0a/lxml-6.0.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5801072f8967625e6249d162065d0d6011ef8ce3d0efb8754496b5246b81a74b", size = 5083767, upload-time = "2026-04-12T16:26:39.332Z" },
+ { url = "https://files.pythonhosted.org/packages/b3/4b/1a0dbb6d6ffae16e54a8a3796ded0ad2f9c3bc1ff3728bde33456f4e1d63/lxml-6.0.4-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cbf768541526eba5ef1a49f991122e41b39781eafd0445a5a110fc09947a20b5", size = 4758079, upload-time = "2026-04-12T16:26:42.138Z" },
+ { url = "https://files.pythonhosted.org/packages/a9/01/a246cf5f80f96766051de4b305d6552f80bdaefb37f04e019e42af0aba69/lxml-6.0.4-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:eecce87cc09233786fc31c230268183bf6375126cfec1c8b3673fcdc8767b560", size = 5618686, upload-time = "2026-04-12T16:26:44.507Z" },
+ { url = "https://files.pythonhosted.org/packages/eb/1f/b072a92369039ebef11b0a654be5134fcf3ed04c0f437faf9435ac9ba845/lxml-6.0.4-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:07dce892881179e11053066faca2da17b0eeb0bb7298f11bcf842a86db207dbd", size = 5227259, upload-time = "2026-04-12T16:26:47.083Z" },
+ { url = "https://files.pythonhosted.org/packages/d5/a0/dc97034f9d4c0c4d30875147d81fd2c0c7f3d261b109db36ed746bf8ab1d/lxml-6.0.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e4f97aee337b947e6699e5574c90d087d3e2ce517016241c07e7e98a28dca885", size = 5246190, upload-time = "2026-04-12T16:26:49.468Z" },
+ { url = "https://files.pythonhosted.org/packages/f2/ef/85cb69835113583c2516fee07d0ffb4d824b557424b06ba5872c20ba6078/lxml-6.0.4-cp314-cp314t-win32.whl", hash = "sha256:064477c0d4c695aa1ea4b9c1c4ee9043ab740d12135b74c458cc658350adcd86", size = 3896005, upload-time = "2026-04-12T16:26:52.163Z" },
+ { url = "https://files.pythonhosted.org/packages/3d/5e/2231f34cc54b8422b793593138d86d3fa4588fb2297d4ea0472390f25627/lxml-6.0.4-cp314-cp314t-win_amd64.whl", hash = "sha256:25bad2d8438f4ef5a7ad4a8d8bcaadde20c0daced8bdb56d46236b0a7d1cbdd0", size = 4391037, upload-time = "2026-04-12T16:26:54.398Z" },
+ { url = "https://files.pythonhosted.org/packages/39/53/8ba3cd5984f8363635450c93f63e541a0721b362bb32ae0d8237d9674aee/lxml-6.0.4-cp314-cp314t-win_arm64.whl", hash = "sha256:1dcd9e6cb9b7df808ea33daebd1801f37a8f50e8c075013ed2a2343246727838", size = 3816184, upload-time = "2026-04-12T16:26:57.011Z" },
]
[[package]]
@@ -3287,27 +3287,27 @@ wheels = [
[[package]]
name = "ruff"
-version = "0.15.9"
+version = "0.15.10"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/e6/97/e9f1ca355108ef7194e38c812ef40ba98c7208f47b13ad78d023caa583da/ruff-0.15.9.tar.gz", hash = "sha256:29cbb1255a9797903f6dde5ba0188c707907ff44a9006eb273b5a17bfa0739a2", size = 4617361, upload-time = "2026-04-02T18:17:20.829Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/e7/d9/aa3f7d59a10ef6b14fe3431706f854dbf03c5976be614a9796d36326810c/ruff-0.15.10.tar.gz", hash = "sha256:d1f86e67ebfdef88e00faefa1552b5e510e1d35f3be7d423dc7e84e63788c94e", size = 4631728, upload-time = "2026-04-09T14:06:09.884Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/0b/1f/9cdfd0ac4b9d1e5a6cf09bedabdf0b56306ab5e333c85c87281273e7b041/ruff-0.15.9-py3-none-linux_armv6l.whl", hash = "sha256:6efbe303983441c51975c243e26dff328aca11f94b70992f35b093c2e71801e1", size = 10511206, upload-time = "2026-04-02T18:16:41.574Z" },
- { url = "https://files.pythonhosted.org/packages/3d/f6/32bfe3e9c136b35f02e489778d94384118bb80fd92c6d92e7ccd97db12ce/ruff-0.15.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:4965bac6ac9ea86772f4e23587746f0b7a395eccabb823eb8bfacc3fa06069f7", size = 10923307, upload-time = "2026-04-02T18:17:08.645Z" },
- { url = "https://files.pythonhosted.org/packages/ca/25/de55f52ab5535d12e7aaba1de37a84be6179fb20bddcbe71ec091b4a3243/ruff-0.15.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:eaf05aad70ca5b5a0a4b0e080df3a6b699803916d88f006efd1f5b46302daab8", size = 10316722, upload-time = "2026-04-02T18:16:44.206Z" },
- { url = "https://files.pythonhosted.org/packages/48/11/690d75f3fd6278fe55fff7c9eb429c92d207e14b25d1cae4064a32677029/ruff-0.15.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9439a342adb8725f32f92732e2bafb6d5246bd7a5021101166b223d312e8fc59", size = 10623674, upload-time = "2026-04-02T18:16:50.951Z" },
- { url = "https://files.pythonhosted.org/packages/bd/ec/176f6987be248fc5404199255522f57af1b4a5a1b57727e942479fec98ad/ruff-0.15.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9c5e6faf9d97c8edc43877c3f406f47446fc48c40e1442d58cfcdaba2acea745", size = 10351516, upload-time = "2026-04-02T18:16:57.206Z" },
- { url = "https://files.pythonhosted.org/packages/b2/fc/51cffbd2b3f240accc380171d51446a32aa2ea43a40d4a45ada67368fbd2/ruff-0.15.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b34a9766aeec27a222373d0b055722900fbc0582b24f39661aa96f3fe6ad901", size = 11150202, upload-time = "2026-04-02T18:17:06.452Z" },
- { url = "https://files.pythonhosted.org/packages/d6/d4/25292a6dfc125f6b6528fe6af31f5e996e19bf73ca8e3ce6eb7fa5b95885/ruff-0.15.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89dd695bc72ae76ff484ae54b7e8b0f6b50f49046e198355e44ea656e521fef9", size = 11988891, upload-time = "2026-04-02T18:17:18.575Z" },
- { url = "https://files.pythonhosted.org/packages/13/e1/1eebcb885c10e19f969dcb93d8413dfee8172578709d7ee933640f5e7147/ruff-0.15.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ce187224ef1de1bd225bc9a152ac7102a6171107f026e81f317e4257052916d5", size = 11480576, upload-time = "2026-04-02T18:16:52.986Z" },
- { url = "https://files.pythonhosted.org/packages/ff/6b/a1548ac378a78332a4c3dcf4a134c2475a36d2a22ddfa272acd574140b50/ruff-0.15.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b0c7c341f68adb01c488c3b7d4b49aa8ea97409eae6462d860a79cf55f431b6", size = 11254525, upload-time = "2026-04-02T18:17:02.041Z" },
- { url = "https://files.pythonhosted.org/packages/42/aa/4bb3af8e61acd9b1281db2ab77e8b2c3c5e5599bf2a29d4a942f1c62b8d6/ruff-0.15.9-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:55cc15eee27dc0eebdfcb0d185a6153420efbedc15eb1d38fe5e685657b0f840", size = 11204072, upload-time = "2026-04-02T18:17:13.581Z" },
- { url = "https://files.pythonhosted.org/packages/69/48/d550dc2aa6e423ea0bcc1d0ff0699325ffe8a811e2dba156bd80750b86dc/ruff-0.15.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a6537f6eed5cda688c81073d46ffdfb962a5f29ecb6f7e770b2dc920598997ed", size = 10594998, upload-time = "2026-04-02T18:16:46.369Z" },
- { url = "https://files.pythonhosted.org/packages/63/47/321167e17f5344ed5ec6b0aa2cff64efef5f9e985af8f5622cfa6536043f/ruff-0.15.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:6d3fcbca7388b066139c523bda744c822258ebdcfbba7d24410c3f454cc9af71", size = 10359769, upload-time = "2026-04-02T18:17:10.994Z" },
- { url = "https://files.pythonhosted.org/packages/67/5e/074f00b9785d1d2c6f8c22a21e023d0c2c1817838cfca4c8243200a1fa87/ruff-0.15.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:058d8e99e1bfe79d8a0def0b481c56059ee6716214f7e425d8e737e412d69677", size = 10850236, upload-time = "2026-04-02T18:16:48.749Z" },
- { url = "https://files.pythonhosted.org/packages/76/37/804c4135a2a2caf042925d30d5f68181bdbd4461fd0d7739da28305df593/ruff-0.15.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:8e1ddb11dbd61d5983fa2d7d6370ef3eb210951e443cace19594c01c72abab4c", size = 11358343, upload-time = "2026-04-02T18:16:55.068Z" },
- { url = "https://files.pythonhosted.org/packages/88/3d/1364fcde8656962782aa9ea93c92d98682b1ecec2f184e625a965ad3b4a6/ruff-0.15.9-py3-none-win32.whl", hash = "sha256:bde6ff36eaf72b700f32b7196088970bf8fdb2b917b7accd8c371bfc0fd573ec", size = 10583382, upload-time = "2026-04-02T18:17:04.261Z" },
- { url = "https://files.pythonhosted.org/packages/4c/56/5c7084299bd2cacaa07ae63a91c6f4ba66edc08bf28f356b24f6b717c799/ruff-0.15.9-py3-none-win_amd64.whl", hash = "sha256:45a70921b80e1c10cf0b734ef09421f71b5aa11d27404edc89d7e8a69505e43d", size = 11744969, upload-time = "2026-04-02T18:16:59.611Z" },
- { url = "https://files.pythonhosted.org/packages/03/36/76704c4f312257d6dbaae3c959add2a622f63fcca9d864659ce6d8d97d3d/ruff-0.15.9-py3-none-win_arm64.whl", hash = "sha256:0694e601c028fd97dc5c6ee244675bc241aeefced7ef80cd9c6935a871078f53", size = 11005870, upload-time = "2026-04-02T18:17:15.773Z" },
+ { url = "https://files.pythonhosted.org/packages/eb/00/a1c2fdc9939b2c03691edbda290afcd297f1f389196172826b03d6b6a595/ruff-0.15.10-py3-none-linux_armv6l.whl", hash = "sha256:0744e31482f8f7d0d10a11fcbf897af272fefdfcb10f5af907b18c2813ff4d5f", size = 10563362, upload-time = "2026-04-09T14:06:21.189Z" },
+ { url = "https://files.pythonhosted.org/packages/5c/15/006990029aea0bebe9d33c73c3e28c80c391ebdba408d1b08496f00d422d/ruff-0.15.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b1e7c16ea0ff5a53b7c2df52d947e685973049be1cdfe2b59a9c43601897b22e", size = 10951122, upload-time = "2026-04-09T14:06:02.236Z" },
+ { url = "https://files.pythonhosted.org/packages/f2/c0/4ac978fe874d0618c7da647862afe697b281c2806f13ce904ad652fa87e4/ruff-0.15.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:93cc06a19e5155b4441dd72808fdf84290d84ad8a39ca3b0f994363ade4cebb1", size = 10314005, upload-time = "2026-04-09T14:06:00.026Z" },
+ { url = "https://files.pythonhosted.org/packages/da/73/c209138a5c98c0d321266372fc4e33ad43d506d7e5dd817dd89b60a8548f/ruff-0.15.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83e1dd04312997c99ea6965df66a14fb4f03ba978564574ffc68b0d61fd3989e", size = 10643450, upload-time = "2026-04-09T14:05:42.137Z" },
+ { url = "https://files.pythonhosted.org/packages/ec/76/0deec355d8ec10709653635b1f90856735302cb8e149acfdf6f82a5feb70/ruff-0.15.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8154d43684e4333360fedd11aaa40b1b08a4e37d8ffa9d95fee6fa5b37b6fab1", size = 10379597, upload-time = "2026-04-09T14:05:49.984Z" },
+ { url = "https://files.pythonhosted.org/packages/dc/be/86bba8fc8798c081e28a4b3bb6d143ccad3fd5f6f024f02002b8f08a9fa3/ruff-0.15.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ab88715f3a6deb6bde6c227f3a123410bec7b855c3ae331b4c006189e895cef", size = 11146645, upload-time = "2026-04-09T14:06:12.246Z" },
+ { url = "https://files.pythonhosted.org/packages/a8/89/140025e65911b281c57be1d385ba1d932c2366ca88ae6663685aed8d4881/ruff-0.15.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a768ff5969b4f44c349d48edf4ab4f91eddb27fd9d77799598e130fb628aa158", size = 12030289, upload-time = "2026-04-09T14:06:04.776Z" },
+ { url = "https://files.pythonhosted.org/packages/88/de/ddacca9545a5e01332567db01d44bd8cf725f2db3b3d61a80550b48308ea/ruff-0.15.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ee3ef42dab7078bda5ff6a1bcba8539e9857deb447132ad5566a038674540d0", size = 11496266, upload-time = "2026-04-09T14:05:55.485Z" },
+ { url = "https://files.pythonhosted.org/packages/bc/bb/7ddb00a83760ff4a83c4e2fc231fd63937cc7317c10c82f583302e0f6586/ruff-0.15.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51cb8cc943e891ba99989dd92d61e29b1d231e14811db9be6440ecf25d5c1609", size = 11256418, upload-time = "2026-04-09T14:05:57.69Z" },
+ { url = "https://files.pythonhosted.org/packages/dc/8d/55de0d35aacf6cd50b6ee91ee0f291672080021896543776f4170fc5c454/ruff-0.15.10-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:e59c9bdc056a320fb9ea1700a8d591718b8faf78af065484e801258d3a76bc3f", size = 11288416, upload-time = "2026-04-09T14:05:44.695Z" },
+ { url = "https://files.pythonhosted.org/packages/68/cf/9438b1a27426ec46a80e0a718093c7f958ef72f43eb3111862949ead3cc1/ruff-0.15.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:136c00ca2f47b0018b073f28cb5c1506642a830ea941a60354b0e8bc8076b151", size = 10621053, upload-time = "2026-04-09T14:05:52.782Z" },
+ { url = "https://files.pythonhosted.org/packages/4c/50/e29be6e2c135e9cd4cb15fbade49d6a2717e009dff3766dd080fcb82e251/ruff-0.15.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:8b80a2f3c9c8a950d6237f2ca12b206bccff626139be9fa005f14feb881a1ae8", size = 10378302, upload-time = "2026-04-09T14:06:14.361Z" },
+ { url = "https://files.pythonhosted.org/packages/18/2f/e0b36a6f99c51bb89f3a30239bc7bf97e87a37ae80aa2d6542d6e5150364/ruff-0.15.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:e3e53c588164dc025b671c9df2462429d60357ea91af7e92e9d56c565a9f1b07", size = 10850074, upload-time = "2026-04-09T14:06:16.581Z" },
+ { url = "https://files.pythonhosted.org/packages/11/08/874da392558ce087a0f9b709dc6ec0d60cbc694c1c772dab8d5f31efe8cb/ruff-0.15.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b0c52744cf9f143a393e284125d2576140b68264a93c6716464e129a3e9adb48", size = 11358051, upload-time = "2026-04-09T14:06:18.948Z" },
+ { url = "https://files.pythonhosted.org/packages/e4/46/602938f030adfa043e67112b73821024dc79f3ab4df5474c25fa4c1d2d14/ruff-0.15.10-py3-none-win32.whl", hash = "sha256:d4272e87e801e9a27a2e8df7b21011c909d9ddd82f4f3281d269b6ba19789ca5", size = 10588964, upload-time = "2026-04-09T14:06:07.14Z" },
+ { url = "https://files.pythonhosted.org/packages/25/b6/261225b875d7a13b33a6d02508c39c28450b2041bb01d0f7f1a83d569512/ruff-0.15.10-py3-none-win_amd64.whl", hash = "sha256:28cb32d53203242d403d819fd6983152489b12e4a3ae44993543d6fe62ab42ed", size = 11745044, upload-time = "2026-04-09T14:05:39.473Z" },
+ { url = "https://files.pythonhosted.org/packages/58/ed/dea90a65b7d9e69888890fb14c90d7f51bf0c1e82ad800aeb0160e4bacfd/ruff-0.15.10-py3-none-win_arm64.whl", hash = "sha256:601d1610a9e1f1c2165a4f561eeaa2e2ea1e97f3287c5aa258d3dab8b57c6188", size = 11035607, upload-time = "2026-04-09T14:05:47.593Z" },
]
[[package]]
@@ -3630,14 +3630,14 @@ wheels = [
[[package]]
name = "types-jwcrypto"
-version = "1.5.0.20260408"
+version = "1.5.7.20260409"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "cryptography" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/54/16/8aafb9b58aea27d5bb6f25528d927ba369f1431027e0a4aa4de0f93af761/types_jwcrypto-1.5.0.20260408.tar.gz", hash = "sha256:72fe8fe4ed1cdc7c8f0d9190ba4f211e19baf0475dd15ff7ab31457baca7a363", size = 11712, upload-time = "2026-04-08T04:34:56.92Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/5c/33/82328a8987db9d9ff12a3b48561f876bc6a16258b6202fd7bd5f5ecd8f0f/types_jwcrypto-1.5.7.20260409.tar.gz", hash = "sha256:34084f740198c3b1abe8c63ff176e4b7b5c4274890a2a0c51fa181246520b108", size = 11982, upload-time = "2026-04-09T04:22:38.696Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/a5/0b/03d94bc145cfb9b004a3c091a77984f60e58c81c340f776bb1de26fa2818/types_jwcrypto-1.5.0.20260408-py3-none-any.whl", hash = "sha256:17958abd0a5c9978694ee0b114509b9f764b4356dae6a8090d0c673013f47948", size = 12979, upload-time = "2026-04-08T04:34:56.087Z" },
+ { url = "https://files.pythonhosted.org/packages/e3/98/e2480bc7fd0ae7f1cb44284122c18bc1f941102f12c98fdaeaabf1303a7d/types_jwcrypto-1.5.7.20260409-py3-none-any.whl", hash = "sha256:69470644242aa6c66c9aa730ba1dd975dbb23acc56c46f259cf75fb52133651a", size = 13318, upload-time = "2026-04-09T04:22:37.956Z" },
]
[[package]]
diff --git a/web/package-lock.json b/web/package-lock.json
index 6b8061e406..711911f08d 100644
--- a/web/package-lock.json
+++ b/web/package-lock.json
@@ -85,7 +85,7 @@
"lit-element": "^4.2.2",
"lit-html": "^3.3.2",
"md-front-matter": "^1.0.4",
- "mermaid": "^11.13.0",
+ "mermaid": "^11.14.0",
"node-domexception": "^2025.11.0",
"npm-run-all": "^4.1.5",
"pino": "^10.3.1",
@@ -430,42 +430,40 @@
"license": "MIT"
},
"node_modules/@chevrotain/cst-dts-gen": {
- "version": "11.1.2",
- "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.2.tgz",
- "integrity": "sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==",
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-12.0.0.tgz",
+ "integrity": "sha512-fSL4KXjTl7cDgf0B5Rip9Q05BOrYvkJV/RrBTE/bKDN096E4hN/ySpcBK5B24T76dlQ2i32Zc3PAE27jFnFrKg==",
"license": "Apache-2.0",
"dependencies": {
- "@chevrotain/gast": "11.1.2",
- "@chevrotain/types": "11.1.2",
- "lodash-es": "4.17.23"
+ "@chevrotain/gast": "12.0.0",
+ "@chevrotain/types": "12.0.0"
}
},
"node_modules/@chevrotain/gast": {
- "version": "11.1.2",
- "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.1.2.tgz",
- "integrity": "sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==",
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-12.0.0.tgz",
+ "integrity": "sha512-1ne/m3XsIT8aEdrvT33so0GUC+wkctpUPK6zU9IlOyJLUbR0rg4G7ZiApiJbggpgPir9ERy3FRjT6T7lpgetnQ==",
"license": "Apache-2.0",
"dependencies": {
- "@chevrotain/types": "11.1.2",
- "lodash-es": "4.17.23"
+ "@chevrotain/types": "12.0.0"
}
},
"node_modules/@chevrotain/regexp-to-ast": {
- "version": "11.1.2",
- "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.2.tgz",
- "integrity": "sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==",
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-12.0.0.tgz",
+ "integrity": "sha512-p+EW9MaJwgaHguhoqwOtx/FwuGr+DnNn857sXWOi/mClXIkPGl3rn7hGNWvo31HA3vyeQxjqe+H36yZJwYU8cA==",
"license": "Apache-2.0"
},
"node_modules/@chevrotain/types": {
- "version": "11.1.2",
- "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz",
- "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==",
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-12.0.0.tgz",
+ "integrity": "sha512-S+04vjFQKeuYw0/eW3U52LkAHQsB1ASxsPGsLPUyQgrZ2iNNibQrsidruDzjEX2JYfespXMG0eZmXlhA6z7nWA==",
"license": "Apache-2.0"
},
"node_modules/@chevrotain/utils": {
- "version": "11.1.2",
- "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.1.2.tgz",
- "integrity": "sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==",
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-12.0.0.tgz",
+ "integrity": "sha512-lB59uJoaGIfOOL9knQqQRfhl9g7x8/wqFkp13zTdkRu1huG9kg6IJs1O8hqj9rs6h7orGxHJUKb+mX3rPbWGhA==",
"license": "Apache-2.0"
},
"node_modules/@codemirror/autocomplete": {
@@ -1837,9 +1835,9 @@
}
},
"node_modules/@mermaid-js/parser": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.0.1.tgz",
- "integrity": "sha512-opmV19kN1JsK0T6HhhokHpcVkqKpF+x2pPDKKM2ThHtZAB5F4PROopk0amuVYK5qMrIA4erzpNm8gmPNJgMDxQ==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.1.0.tgz",
+ "integrity": "sha512-gxK9ZX2+Fex5zu8LhRQoMeMPEHbc73UKZ0FQ54YrQtUxE1VVhMwzeNtKRPAu5aXks4FasbMe4xB4bWrmq6Jlxw==",
"license": "MIT",
"dependencies": {
"langium": "^4.0.0"
@@ -7202,29 +7200,31 @@
}
},
"node_modules/chevrotain": {
- "version": "11.1.2",
- "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.2.tgz",
- "integrity": "sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==",
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-12.0.0.tgz",
+ "integrity": "sha512-csJvb+6kEiQaqo1woTdSAuOWdN0WTLIydkKrBnS+V5gZz0oqBrp4kQ35519QgK6TpBThiG3V1vNSHlIkv4AglQ==",
"license": "Apache-2.0",
"dependencies": {
- "@chevrotain/cst-dts-gen": "11.1.2",
- "@chevrotain/gast": "11.1.2",
- "@chevrotain/regexp-to-ast": "11.1.2",
- "@chevrotain/types": "11.1.2",
- "@chevrotain/utils": "11.1.2",
- "lodash-es": "4.17.23"
+ "@chevrotain/cst-dts-gen": "12.0.0",
+ "@chevrotain/gast": "12.0.0",
+ "@chevrotain/regexp-to-ast": "12.0.0",
+ "@chevrotain/types": "12.0.0",
+ "@chevrotain/utils": "12.0.0"
+ },
+ "engines": {
+ "node": ">=22.0.0"
}
},
"node_modules/chevrotain-allstar": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz",
- "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.4.1.tgz",
+ "integrity": "sha512-PvVJm3oGqrveUVW2Vt/eZGeiAIsJszYweUcYwcskg9e+IubNYKKD+rHHem7A6XVO22eDAL+inxNIGAzZ/VIWlA==",
"license": "MIT",
"dependencies": {
"lodash-es": "^4.17.21"
},
"peerDependencies": {
- "chevrotain": "^11.0.0"
+ "chevrotain": "^12.0.0"
}
},
"node_modules/chokidar": {
@@ -11641,13 +11641,14 @@
}
},
"node_modules/langium": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/langium/-/langium-4.2.1.tgz",
- "integrity": "sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==",
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/langium/-/langium-4.2.2.tgz",
+ "integrity": "sha512-JUshTRAfHI4/MF9dH2WupvjSXyn8JBuUEWazB8ZVJUtXutT0doDlAv1XKbZ1Pb5sMexa8FF4CFBc0iiul7gbUQ==",
"license": "MIT",
"dependencies": {
- "chevrotain": "~11.1.1",
- "chevrotain-allstar": "~0.3.1",
+ "@chevrotain/regexp-to-ast": "~12.0.0",
+ "chevrotain": "~12.0.0",
+ "chevrotain-allstar": "~0.4.1",
"vscode-languageserver": "~9.0.1",
"vscode-languageserver-textdocument": "~1.0.11",
"vscode-uri": "~3.1.0"
@@ -12686,14 +12687,14 @@
}
},
"node_modules/mermaid": {
- "version": "11.13.0",
- "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.13.0.tgz",
- "integrity": "sha512-fEnci+Immw6lKMFI8sqzjlATTyjLkRa6axrEgLV2yHTfv8r+h1wjFbV6xeRtd4rUV1cS4EpR9rwp3Rci7TRWDw==",
+ "version": "11.14.0",
+ "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.14.0.tgz",
+ "integrity": "sha512-GSGloRsBs+JINmmhl0JDwjpuezCsHB4WGI4NASHxL3fHo3o/BRXTxhDLKnln8/Q0lRFRyDdEjmk1/d5Sn1Xz8g==",
"license": "MIT",
"dependencies": {
"@braintree/sanitize-url": "^7.1.1",
"@iconify/utils": "^3.0.2",
- "@mermaid-js/parser": "^1.0.1",
+ "@mermaid-js/parser": "^1.1.0",
"@types/d3": "^7.4.3",
"@upsetjs/venn.js": "^2.0.0",
"cytoscape": "^3.33.1",
diff --git a/web/package.json b/web/package.json
index e7544493fd..90ec2ebadc 100644
--- a/web/package.json
+++ b/web/package.json
@@ -161,7 +161,7 @@
"lit-element": "^4.2.2",
"lit-html": "^3.3.2",
"md-front-matter": "^1.0.4",
- "mermaid": "^11.13.0",
+ "mermaid": "^11.14.0",
"node-domexception": "^2025.11.0",
"npm-run-all": "^4.1.5",
"pino": "^10.3.1",
@@ -248,7 +248,7 @@
}
},
"build-proxy": {
- "command": "node scripts/build-web.mjs --proxy",
+ "command": "node scripts/build-web.mjs --styles-only",
"dependencies": [
"build-locales"
]
diff --git a/web/paths/node.js b/web/paths/node.js
index a07fa7e8e1..143c8cdb0b 100644
--- a/web/paths/node.js
+++ b/web/paths/node.js
@@ -90,7 +90,7 @@ export const EntryPoint = /** @type {const} */ ({
in: resolve(PackageRoot, "src", "styles", "authentik", "static.global.css"),
out: resolve(DistDirectory, "styles", "static"),
},
- FlowsStyles: {
+ FlowStyles: {
in: resolve(PackageRoot, "src", "styles", "authentik", "flows.global.css"),
out: resolve(DistDirectory, "styles", "flow"),
},
diff --git a/web/scripts/build-web.mjs b/web/scripts/build-web.mjs
index 4d673bab4e..b43e4b40ba 100644
--- a/web/scripts/build-web.mjs
+++ b/web/scripts/build-web.mjs
@@ -10,7 +10,7 @@ import * as path from "node:path";
/**
* @file ESBuild script for building the authentik web UI.
*
- * @import { BuildOptions } from "esbuild";
+ * @import { BuildOptions, Plugin } from "esbuild";
*/
import { mdxPlugin } from "#bundler/mdx-plugin/node";
import { styleLoaderPlugin } from "#bundler/style-loader-plugin/node";
@@ -22,7 +22,6 @@ import { NodeEnvironment } from "@goauthentik/core/environment/node";
import { MonoRepoRoot } from "@goauthentik/core/paths/node";
import { BuildIdentifier } from "@goauthentik/core/version/node";
-import { deepmerge } from "deepmerge-ts";
import esbuild from "esbuild";
///
@@ -52,8 +51,59 @@ const assets = [
[path.resolve(PackageRoot, "icons"), "./assets/icons"],
];
+const entryPointNames = Object.keys(EntryPoint);
+const entryPoints = Object.values(EntryPoint);
+const entryPointsDescription = entryPointNames.join("\n\t");
+
/**
- * @type {Readonly}
+ * @type {Plugin[]}
+ */
+const BASE_ESBUILD_PLUGINS = [
+ {
+ name: "copy",
+ setup(build) {
+ build.onEnd(async () => {
+ /**
+ * @type {import('esbuild').PartialMessage[]}
+ */
+ const errors = [];
+
+ /**
+ * @param {SourceDestinationPair} pair
+ */
+ const copy = ([from, to]) => {
+ const resolvedDestination = path.resolve(DistDirectory, to);
+
+ logger.debug(`📋 Copying assets from ${from} to ${to}`);
+
+ return fs
+ .cp(from, resolvedDestination, {
+ recursive: true,
+ })
+ .catch((error) => {
+ errors.push({
+ text: `Failed to copy assets from ${from} to ${to}: ${error}`,
+ location: {
+ file: from,
+ },
+ });
+ });
+ };
+
+ await Promise.all(assets.map(copy));
+
+ return { errors };
+ });
+ },
+ },
+
+ mdxPlugin({
+ root: MonoRepoRoot,
+ }),
+];
+
+/**
+ * @type {BuildOptions}
*/
const BASE_ESBUILD_OPTIONS = {
entryNames: `[dir]/[name]-${BuildIdentifier}`,
@@ -84,60 +134,28 @@ const BASE_ESBUILD_OPTIONS = {
* @see https://nodejs.org/api/packages.html#packages_conditional_exports
*/
conditions: NodeEnvironment === "production" ? ["production"] : ["development", "production"],
- plugins: [
- {
- name: "copy",
- setup(build) {
- build.onEnd(async () => {
- /**
- * @type {import('esbuild').PartialMessage[]}
- */
- const errors = [];
-
- /**
- * @param {SourceDestinationPair} pair
- */
- const copy = ([from, to]) => {
- const resolvedDestination = path.resolve(DistDirectory, to);
-
- logger.debug(`📋 Copying assets from ${from} to ${to}`);
-
- return fs
- .cp(from, resolvedDestination, { recursive: true })
- .catch((error) => {
- errors.push({
- text: `Failed to copy assets from ${from} to ${to}: ${error}`,
- location: {
- file: from,
- },
- });
- });
- };
-
- await Promise.all(assets.map(copy));
-
- return { errors };
- });
- },
- },
-
- mdxPlugin({
- root: MonoRepoRoot,
- }),
- ],
+ plugins: BASE_ESBUILD_PLUGINS,
define: bundleDefinitions,
format: "esm",
- logOverride: {
- /**
- * HACK: Silences issue originating in ESBuild.
- *
- * @see {@link https://github.com/evanw/esbuild/blob/b914dd30294346aa15fcc04278f4b4b51b8b43b5/internal/logger/msg_ids.go#L211 ESBuild source}
- * @expires 2025-08-11
- */
- "invalid-source-url": "silent",
- },
};
+/**
+ * Creates an ESBuild options, extending the base options with the given overrides.
+ *
+ * @param {BuildOptions["entryPoints"]} entryPoints
+ * @param {Plugin[]} plugIns
+ * @returns {BuildOptions}
+ */
+export function createESBuildOptions(entryPoints, plugIns = []) {
+ const plugins = [...BASE_ESBUILD_PLUGINS, ...plugIns];
+
+ return {
+ ...BASE_ESBUILD_OPTIONS,
+ entryPoints,
+ plugins,
+ };
+}
+
async function cleanDistDirectory() {
logger.info(`♻️ Cleaning previous builds...`);
@@ -153,29 +171,12 @@ async function cleanDistDirectory() {
logger.info(`♻️ Done!`);
}
-/**
- * Creates an ESBuild options, extending the base options with the given overrides.
- *
- * @param {BuildOptions} overrides
- * @returns {BuildOptions}
- */
-export function createESBuildOptions(overrides) {
- /**
- * @type {BuildOptions}
- */
- const mergedOptions = deepmerge(BASE_ESBUILD_OPTIONS, overrides);
-
- return mergedOptions;
-}
-
function doHelp() {
logger.info(`Build the authentik UI
options:
-w, --watch: Build all interfaces
- -p, --proxy: Build only the polyfills and the loading application
- -h, --help: This help message
-`);
+ -s, --styles-only: Build the static CSS`);
process.exit(0);
}
@@ -185,23 +186,23 @@ function doHelp() {
* @returns {Promise<() => Promise>} dispose
*/
async function doWatch() {
- logger.info(`🤖 Watching entry points:\n\t${Object.keys(EntryPoint).join("\n\t")}`);
-
- const entryPoints = Object.values(EntryPoint);
+ logger.info(`🤖 Watching entry points:\n\t${entryPointsDescription}`);
const developmentPlugins = await import("@goauthentik/esbuild-plugin-live-reload/plugin")
.then(({ liveReloadPlugin }) => [
liveReloadPlugin({
relativeRoot: PackageRoot,
- logger: logger.child({ name: "Live Reload" }),
+ logger: logger.child({
+ name: "Live Reload",
+ }),
}),
])
.catch(() => []);
- const buildOptions = createESBuildOptions({
- entryPoints,
- plugins: [...developmentPlugins, styleLoaderPlugin({ logger, watch: true })],
- });
+ const buildOptions = createESBuildOptions(entryPoints, [
+ ...developmentPlugins,
+ styleLoaderPlugin({ logger, watch: true }),
+ ]);
const buildContext = await esbuild.context(buildOptions);
@@ -228,14 +229,9 @@ async function doWatch() {
}
async function doBuild() {
- logger.info(`🤖 Building entry points:\n\t${Object.keys(EntryPoint).join("\n\t")}`);
+ logger.info(`🤖 Building entry points:\n\t${entryPointsDescription}`);
- const entryPoints = Object.values(EntryPoint);
-
- const buildOptions = createESBuildOptions({
- entryPoints,
- plugins: [styleLoaderPlugin({ logger })],
- });
+ const buildOptions = createESBuildOptions(entryPoints, [styleLoaderPlugin({ logger })]);
await esbuild.build(buildOptions);
@@ -246,13 +242,9 @@ async function doProxy() {
const entryPoints = [
EntryPoint.InterfaceStyles,
EntryPoint.StaticStyles,
- EntryPoint.FlowsStyles,
+ EntryPoint.FlowStyles,
];
-
- const buildOptions = createESBuildOptions({
- entryPoints,
- plugins: [styleLoaderPlugin({ logger })],
- });
+ const buildOptions = createESBuildOptions(entryPoints, [styleLoaderPlugin({ logger })]);
await esbuild.build(buildOptions);
logger.info("Proxy build complete");
@@ -269,8 +261,8 @@ async function delegateCommand() {
case "--watch":
return doWatch();
// There's no watch-for-proxy, sorry.
- case "-p":
- case "--proxy":
+ case "-s":
+ case "--styles-only":
return doProxy();
default:
return doBuild();
diff --git a/web/xliff/cs-CZ.xlf b/web/xliff/cs-CZ.xlf
index f8c857a1a3..894fa0ee02 100644
--- a/web/xliff/cs-CZ.xlf
+++ b/web/xliff/cs-CZ.xlf
@@ -1005,10 +1005,6 @@
Pause this schedule
Pozastavit tento plán
-
- Select an object.
- Vyberte objekt
-
Failed to fetch objects:
Nezdařilo se načíst objekty:
@@ -1092,12 +1088,6 @@
Close
Zavřít
-
- Update "" Permissions
-
-
- Open "" permissions modal
-
Permissions
Oprávnění
@@ -1449,9 +1439,6 @@
Apply changes
Použít změny
-
- Close wizard
-
UNNAMED
@@ -1462,14 +1449,6 @@
Finish
Dokončit
-
- Select type
- Vyberte typ
-
-
- Select a provider type
- Vyberte typ poskytovatele
-
Icon
ikona
@@ -1653,18 +1632,10 @@
Type a provider name...
-
- Bind mode
- Režim vazby
-
Configure how the outpost authenticates requests.
Konfigurace způsobu ověřování požadavků v outpostu
-
- Search mode
- Režim vyhledávání
-
Configure how the outpost queries the core authentik server's users.
Konfigurace způsobu, jakým se outpost dotazuje na uživatele core serveru authentik.
@@ -1677,18 +1648,10 @@
Flow settings
Nastavení toku
-
- Bind flow
- Přiřadit tok
-
Flow used for users to authenticate.
Tok používaný pro ověřování uživatelů.
-
- Unbind flow
- Zrušení vazby toku
-
Flow used for unbinding users.
Tok používaný pro zrušení vazby uživatelů.
@@ -1705,18 +1668,6 @@
LDAP DN under which bind requests and search requests can be made.
LDAP DN, pod kterým lze provádět požadavky na vazbu a vyhledávání.
-
- TLS Server name
- Jméno serveru TLS
-
-
- UID start number
- Počáteční číslo UID
-
-
- GID start number
- Počáteční číslo GID
-
Configure LDAP Provider
Konfigurovat poskytovatele LDAP
@@ -1829,10 +1780,6 @@
Flow used when authorizing this provider.
Tok používaný při autorizaci tohoto poskytovatele.
-
- Client type
- Typ klienta
-
Client ID
ID klienta
@@ -1872,10 +1819,6 @@
Advanced flow settings
Pokročilá nastavení toku
-
- Authentication flow
- Autentizační tok
-
Select an authentication flow...
@@ -1883,10 +1826,6 @@
Flow used when a user access this provider and is not authenticated.
Tok používaný pro neautentizované uživatele přistupující k tomuto poskytovateli.
-
- Invalidation flow
- Tok zneplatnění
-
Select an invalidation flow...
Vyberte tok zneplatnění...
@@ -1899,33 +1838,18 @@
Advanced protocol settings
Pokročilá nastavení protokolu
-
- Access code validity
- Platnost přístupového kódu
-
Configure how long access codes are valid for.
Konfigurace doby platnosti přístupových kódů.
-
- Access Token validity
- Platnost přístupového tokenu
-
Configure how long access tokens are valid for.
Konfigurace doby platnosti přístupových tokenů.
-
- Refresh Token validity
- Platnost obnovovacího tokenu
-
Configure how long refresh tokens are valid for.
Konfigurace doby platnosti obnovovacích tokenů.
-
- Refresh Token threshold
-
When renewing a refresh token, if the existing refresh token's expiry is within this threshold, the refresh token will be renewed. Set to seconds=0 to always renew the refresh token.
@@ -1959,10 +1883,6 @@
authentik only supports RSA-OAEP-256 for encryption.
-
- Subject mode
- Způsob identifikace uživatele
-
Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
Nastavte, jaké údaje mají být použity jako unikátní identifikátor uživatele. Ve většině případů by výchozí hodnota měla být v pořádku.
@@ -2714,19 +2634,6 @@
Create
Vytvořit
-
- New provider
- Nový poskytovatel
-
-
- Create a new provider.
- Vytvořit nového poskytovatele.
-
-
- Create
- Vytvořit
-
-
New Provider
Nový poskytovatel
@@ -2854,10 +2761,6 @@
Provider Search
Hledání poskytovatele
-
- Search for providers…
- Hledat poskytovatele...
-
Provider(s)
Poskytovatel(é)
@@ -2879,9 +2782,6 @@
Aktualizovat
-
- Edit "" provider
-
Successfully triggered sync.
Synchronizace úspěšně spuštěna.
@@ -3620,14 +3520,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Number of previous passwords to check
Počet předchozích hesel ke kontrole
-
- New policy
- Nová zásada
-
-
- Create a new policy.
- Vytvořit novou zásadu.
-
Create Binding
Vytvořit vazbu
@@ -3657,9 +3549,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Successfully created user.
Uživatel byl úspěšně vytvořen.
-
- Type a username for the user...
-
The user's primary identifier used for authentication. 150 characters or fewer.
@@ -3725,10 +3614,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Policy binding(s)
Vazba(y) zásady
-
- Update Binding
- Aktualizovat vazbu
-
No Policies bound.
Není přiřazena žádná zásada.
@@ -3752,18 +3637,10 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Endpoint(s)
Koncové body
-
- Update Endpoint
- Aktualizovat endpoint
-
These bindings control which users will have access to this endpoint. Users must also have access to the application.
Tato vazba řídí, kteří uživatelé budou mít přístup k tomuto endpointu. Uživatelé musí mít také přístup k aplikaci.
-
- Create Endpoint
- Vytvořit endpoint
-
Connections
Spojení
@@ -3904,7 +3781,7 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Aktualizovat aplikaci
- Edit ""
+ Edit ""
Open ""
@@ -4194,12 +4071,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
NSS Group ID offset
-
- New connector
-
-
- Create a new connector.
-
Connectors are required to create devices. Depending on connector type, agents either directly talk to them or they talk to and external API to create devices.
@@ -4243,27 +4114,15 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Copy token
Kopírovat token
-
- Create Enrollment Token
-
Enrollment Tokens
-
- Group name...
-
-
- Group name
-
Device access groups
Create groups of devices to manage access.
-
- Create Device Group
-
Device Group(s)
@@ -4851,14 +4710,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Telegram Attribute mapping
-
- New source
- Nový zdroj
-
-
- Create a new source.
- Vytvořit nový zdroj.
-
Federation and Social login
Federace a sociální přihlášení
@@ -4966,10 +4817,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
SCIM Base URL
SCIM základní URL
-
- Click to copy token
- Klikněte pro zkopírování tokenu
-
Telegram bot
@@ -5048,10 +4895,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Description shown to the user when consenting. If left empty, the user won't be informed.
Popis zobrazený uživateli při udělování souhlasu. Pokud je ponecháno prázdné, uživatel nebude informován.
-
- Example context data
- Příklad kontextových dat
-
Active Directory User
Uživatel služby Active Directory
@@ -5060,14 +4903,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Active Directory Group
Skupina služby Active Directory
-
- New property mapping
- Nové mapování vlastnosti
-
-
- Create a new property mapping.
- Vytvořit nové mapování vlastnosti.
-
Property Mappings
Mapování vlastnosti
@@ -5080,10 +4915,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Property Mapping(s)
Mapování vlastností
-
- Test Property Mapping
- Otestovat mapování vlastnosti
-
Hide managed mappings
Skrýt spravovaná mapování
@@ -5321,17 +5152,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Brand(s)
Značka(y)
-
- Update Brand
- Aktualizovat značku
-
-
- Create Brand
- Vytvořit značku
-
-
- New Brand
-
Policies
Zásady
@@ -5349,10 +5169,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Warning: Policy is not assigned.
Upozornění: Zásada není přiřazena.
-
- Test Policy
- Test zásady
-
Policy / Policies
Zásada / Zásady
@@ -5426,9 +5242,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Create Group
Vytvořit skupinu
-
- New Group
-
Create group
Vytvořit skupinu
@@ -5592,9 +5405,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
This user will be added to the group "".
Tento uživatel bude přidán do skupiny "".
-
- New Service Account
-
Hide service-accounts
Skrýt účty služeb
@@ -5913,14 +5723,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Set initial permissions for newly created objects.
Nastavit počáteční oprávnění pro nově vytvořené objekty.
-
- Update Initial Permissions
- Aktualizovat počáteční oprávnění
-
-
- Create Initial Permissions
- Vytvořit počáteční oprávnění
-
Role Info
Informace o roli
@@ -5993,14 +5795,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Invitation not limited to any flow, and can be used with any enrollment flow.
Pozvánka není omezena na žádný tok a může být použita s jakýmkoli zápisovým tokem.
-
- Update Invitation
- Aktualizovat pozvánku
-
-
- Create Invitation
- Vytvořit pozvánku
-
Warning: No invitation stage is bound to any flow. Invitations will not work as expected.
Upozornění: K žádnému toku není přiřazen krok typu "Pozvánka". Pozvánky nebudou fungovat, jak mají.
@@ -6201,10 +5995,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Prompt(s)
Výzva(y)
-
- Update Prompt
- Aktualizovat výzvu
-
Create Prompt
Vytvořit výzvu
@@ -7202,14 +6992,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Configure how the flow executor should handle an invalid response to a challenge given by this bound stage.
Konfiguruje, jak by měl vykonavatel toku zpracovat neplatnou odpověď na výzvu danou tímto vázaným krokem.
-
- New stage
- Nový krok
-
-
- Create a new stage.
- Vytvořit nový krok.
-
Successfully imported device.
Zařízení úspěšně importováno.
@@ -7270,10 +7052,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Import
Import
-
- Import Duo device
- Importovat zařízení Duo
-
Import devices
Importovat zařízení
@@ -7407,14 +7185,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Export
Exportovat
-
- Create Flow
- Vytvořit tok
-
-
- Import Flow
- Importovat tok
-
Successfully cleared flow cache
Úspěšně vymazána mezipaměť toku
@@ -7445,10 +7215,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Edit Stage
Upravit krok
-
- Update Stage binding
- Aktualizovat vazbu kroku
-
These bindings control if this stage will be applied to the flow.
Tyto vazby kontrolují, zda bude tento krok aplikován na tok.
@@ -7461,14 +7227,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
No stages are currently bound to this flow.
K tomuto toku nejsou přiřazené žádné kroky.
-
- Create and bind Stage
- Vytvořit a svázat krok
-
-
- Create Stage binding
- Vytvořit přiřazení kroku
-
Flow Overview
Přehled toku
@@ -7601,14 +7359,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Notification transport(s)
Transport(y) oznámení
-
- Update Notification Transport
- Aktualizovat transport oznámení
-
-
- Create Notification Transport
- Vytvořit transport oznámení
-
Successfully updated rule.
Pravidlo bylo úspěšně aktualizováno.
@@ -7665,14 +7415,6 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
Notification rule(s)
Pravidla oznámení
-
- Update Notification Rule
- Změnit pravidlo pro upozornění
-
-
- Create Notification Rule
- Vytvořit pravidlo pro upozornění
-
These bindings control upon which events this rule triggers.
Bindings to groups/users are checked against the user of the event.
@@ -7838,14 +7580,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.Verify Kubernetes API SSL Certificate
Ověřit SSL certifikát Kubernetes API
-
- New outpost integration
- Nová integrace outpostu
-
-
- Create a new outpost integration.
- Vytvořit novou integraci outpostu.
-
Outpost integrations
Integrace Outpostů
@@ -7963,18 +7697,10 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.Download Private key
Stáhnout soukromý klíč
-
- Import Existing Certificate-Key Pair
- Importovat existující pár certifikátu a klíče
-
Generate
Generovat
-
- Generate New Certificate-Key Pair
- Vygenerovat nový pár certifikátu a klíče
-
Link Title
Název odkazu
@@ -8221,13 +7947,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.Blueprint(s)
Plán(y)
-
- Update Blueprint
- Aktualizovat plán
-
-
- Edit "" blueprint
-
Apply "" blueprint
@@ -8235,10 +7954,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.Apply
Použít
-
- Create Blueprint Instance
- Vytvořit instanci plánu
-
Successfully updated license.
Licence byla úspěšně aktualizována.
@@ -8343,10 +8058,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.External:
Externí:
-
- Update License
- Aktualizovat licence
-
Your Install ID
Vaše ID instalace
@@ -8363,10 +8074,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.Install
Instalovat
-
- Install License
- Instalovat licence
-
Release
Vydání
@@ -9385,9 +9092,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
Hide managed roles
-
- Bind existing Stage
-
Flags allow you to enable new functionality and behaviour in authentik early.
@@ -9487,9 +9191,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
Requires Docker socket/Kubernetes Integration.
-
- Assign Object Permission
-
Next, download the configuration to deploy the authentik Agent via MDM
@@ -9507,9 +9208,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
Choose the object permissions that you want the selected role to have on this object. These object permissions are in addition to any global permissions already within the role.
-
- Assign object permissions to role
-
Device access group
@@ -9564,9 +9262,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
Type a name for the token...
-
- Update Enrollment Token
-
Type a unique identifier...
@@ -9731,9 +9426,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
Successfully created Fleet connector.
-
- Connector name...
-
Fleet settings
@@ -9761,9 +9453,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
Paste your license key...
-
- Update
-
You can select from popular providers with preset configurations or choose a custom setup to specify your own endpoints and keys.
@@ -9904,9 +9593,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
Copy Secret
-
- Update settings
-
ED25519
@@ -10066,12 +9752,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
Lifecycle rule(s)
-
- Update Lifecycle Rule
-
-
- Create Object Lifecycle Rule
-
No reviews yet.
@@ -10117,12 +9797,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
Required reviewers
-
- Confirm Review
-
-
- Confirm this object has been reviewed
-
Reviews
@@ -10359,9 +10033,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
Search for a provider...
-
- New Application Wizard
-
e.g. my-application
@@ -10371,9 +10042,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
The description is shown in the application library and may provide additional information about the application to end users.
-
- New Flow
-
Select Groups
@@ -10413,9 +10081,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
This name will be used to identify the role within authentik.
-
- New Role
-
Service Account
@@ -10425,9 +10090,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
Impersonate User
-
- Edit
-
Impersonate
@@ -10527,18 +10189,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
Reloads page
-
- New
-
-
- Create
-
-
- Create
-
-
- Save Changes
-
authentik information
@@ -10587,9 +10237,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
No instances running.
-
- Search outposts...
-
New Outpost
@@ -10638,9 +10285,6 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
File upload
-
- Import Blueprint
-
Warning: Blueprint files may contain objects such as users, policies and expression.
@@ -10725,6 +10369,533 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.
Avatar
+
+ Save changes
+
+
+ Edit Settings
+
+
+ Server Version
+
+
+ Applications search
+
+
+ Search for application by name, group or provider...
+
+
+ New Application options
+
+
+ Select a ...
+
+
+ Application Details
+
+
+ Provider Details
+
+
+ Flow Blueprint
+
+
+ Flow Blueprints
+
+
+ Select a blueprint...
+
+
+ Search for a blueprint by name or path...
+
+
+ Type a name for this certificate...
+
+
+ e.g. mydomain.com, *.mydomain.com, mydomain.local
+
+
+ Import Existing
+
+
+ Certificate Name
+
+
+ Type a name for this certificate-key pair...
+
+
+ Search for a certificate or key name...
+
+
+ Select a device access group...
+
+
+ No enrollment tokens found for this connector.
+
+
+ Search for an enrollment token...
+
+
+ Search connectors by name or type...
+
+
+ Endpoint Connector
+
+
+ Endpoint Connectors
+
+
+ Provide your Fleet API token...
+
+
+ Device Access Groups
+
+
+ Search device groups by name...
+
+
+ Search devices by name, OS, or group...
+
+
+ Enterprise License
+
+
+ Enterprise Licenses
+
+
+ Search for a license by name...
+
+
+ Notification Rule
+
+
+ Type a name for this rule...
+
+
+ Search for a notification rule by name, severity or group...
+
+
+ Notification Transport
+
+
+ Transport Name
+
+
+ Type a name for this transport...
+
+
+ Search for a notification transport by name or mode...
+
+
+ Search for a file by name...
+
+
+ New Stage
+
+
+ Bind Existing Stage
+
+
+ Flow Name
+
+
+ Type a name for this flow...
+
+
+ Type a title for this flow...
+
+
+ e.g. my-flow
+
+
+ Select a designation...
+
+
+ Search for a flow by name or identifier...
+
+
+ Stage Binding
+
+
+ Select a stage...
+
+
+ Select one or more users to assign...
+
+
+ Lifecycle Rule
+
+
+ Search for a lifecycle rule by name or target...
+
+
+ Search tasks...
+
+
+ Review
+
+
+ Outpost Integration
+
+
+ Search outposts by name, type or assigned integration...
+
+
+ Search for an outpost integration by name, type or assigned integration...
+
+
+ Open the wizard to create a new service connection.
+
+
+ New Outpost Integration
+
+
+ Open the wizard to create a new policy.
+
+
+ Policy Name
+
+
+ Type a policy name...
+
+
+ Policy Binding
+
+
+ Search for a policy by name or type...
+
+
+ New Policy
+
+
+ Search for a reputation by identifier or IP...
+
+
+ Property Mapping
+
+
+ Mapping Name
+
+
+ Type a name for this mapping...
+
+
+ Search for a property mapping by name or type...
+
+
+ New Property Mapping
+
+
+ Run Test
+
+
+ Example Context Data
+
+
+ Select a user...
+
+
+ Bind Mode
+
+
+ Search Mode
+
+
+ Bind Flow
+
+
+ Unbind Flow
+
+
+ TLS Server Name
+
+
+ UID Start Number
+
+
+ GID Start Number
+
+
+ Authorization Flow
+
+
+ Client Type
+
+
+ Authentication Flow
+
+
+ Invalidation Flow
+
+
+ Access Code Validity
+
+
+ Access Token Validity
+
+
+ Refresh Token Validity
+
+
+ Refresh Token Threshold
+
+
+ Subject Mode
+
+
+ Search for provider by name, type or assigned application...
+
+
+ RAC Endpoint
+
+
+ RAC Endpoints
+
+
+ Endpoint Name
+
+
+ Type a name for this endpoint...
+
+
+ e.g. myserver.example.com, 10.0.0.1:22
+
+
+ Create an endpoint to get started.
+
+
+ Search for an endpoint by name or host...
+
+
+ Initial Permission Name
+
+
+ Type a name for these initial permissions...
+
+
+ Search for initial permissions by name...
+
+
+ Create an initial permission to get started.
+
+
+ Role Object Permission
+
+
+ Role Object Permissions
+
+
+ Object Permission
+
+
+ Object Permissions
+
+
+ Update
+
+
+ Search for a role...
+
+
+ Source Name
+
+
+ Type a name for this source...
+
+
+ e.g. my-kerberos-source
+
+
+ e.g. my-oauth-source
+
+
+ e.g. my-plex-source
+
+
+ e.g. my-saml-source
+
+
+ e.g. my-scim-source
+
+
+ Search for a source...
+
+
+ e.g. my-telegram-source
+
+
+ Duo Device
+
+
+ Duo Devices
+
+
+ Importing
+
+
+ Type the Duo user ID for this device...
+
+
+ Invitation
+
+
+ Invitation Name
+
+
+ Search for an invitation by name...
+
+
+ Prompt
+
+
+ Search for a prompt by name, field or type...
+
+
+ Search for a stage name, type, or flow...
+
+
+ User creation mode
+
+
+ Search for a token identifier, user, or intent...
+
+
+ Review Credentials
+
+
+ Type a username for the service account...
+
+
+ Internal User
+
+
+ Internal Users
+
+
+ External User
+
+
+ External Users
+
+
+ Type a username for the internal user...
+
+
+ Type a username for the external user...
+
+
+ Open the new user wizard
+
+
+ Select email stage...
+
+
+ Copying ...
+
+
+ Copying to clipboard...
+
+
+ e.g. my-slug
+
+
+ Create
+
+
+ Create
+
+
+ Copy to clipboard
+
+
+ Entity
+
+
+ Edit ""
+
+
+ Edit
+
+
+ Open "" permissions
+
+
+ Open permissions
+
+
+ New
+
+
+
+
+
+ New
+
+
+ Create
+
+
+ Creating
+
+
+
+
+
+ Edit
+
+
+ Save Changes
+
+
+ Saving Changes...
+
+
+ An error occurred while loading .
+
+
+ Select an option...
+
+
+ Choose Type
+
+
+ Choose type
+
+
+ Details
+
+
+ Cancel wizard
+
+
+ Search for an endpoint by name...
+
+
+ No endpoints found for this application.
+
+
+ Launch Endpoint
+
+
+ Wizard
+ ARIA label for the creation wizard when no entity singular is provided.
+
+
+ New Wizard
+ ARIA label for the creation wizard, where the entity singular is interpolated.
+
+
+
+
+ ...
+ The message shown while a form is being submitted.
+