diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 15cb577d42a1045f301a6cd8fe3eb03a0a85030f..4bc17c8d74bb9178876b3e79405dabaee0c07894 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,6 +1,6 @@
 repos:
   - repo: https://github.com/Riverside-Healthcare/djLint
-    rev: v1.19.14
+    rev: v1.32.1
     hooks:
       - id: djlint-jinja
         args: [--reformat]
diff --git a/poetry.lock b/poetry.lock
index f6673cce927f31f4613c9e06f7a6f9850ce6bccf..4e255ec0c3337a2463a23078121e031f90362ce4 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -213,14 +213,14 @@ six = ">=1.13.0"
 
 [[package]]
 name = "djlint"
-version = "1.19.9"
+version = "1.32.1"
 description = "HTML Template Linter and Formatter"
 category = "dev"
 optional = false
-python-versions = ">=3.7.2,<4.0.0"
+python-versions = ">=3.8.0,<4.0.0"
 files = [
-    {file = "djlint-1.19.9-py3-none-any.whl", hash = "sha256:154a5bdc811484c39ce2e772ae9c709752f01de12fd4dfffd6b1302fc29d2b63"},
-    {file = "djlint-1.19.9.tar.gz", hash = "sha256:91178c070c3ac2d2e9a5438181bcdcf52d45630b771eead861bc10142edd9c98"},
+    {file = "djlint-1.32.1-py3-none-any.whl", hash = "sha256:8aaec6776376cfd41f3e742ed9f5e3c46dc7c6cd7646abf9e99860fb1ec9f19a"},
+    {file = "djlint-1.32.1.tar.gz", hash = "sha256:c1e2141acf1547d244af7ef8abd15fbbae2abcc7a03e2bf31f8a491de69a6c72"},
 ]
 
 [package.dependencies]
@@ -229,11 +229,11 @@ colorama = ">=0.4.4,<0.5.0"
 cssbeautifier = ">=1.14.4,<2.0.0"
 html-tag-names = ">=0.1.2,<0.2.0"
 html-void-elements = ">=0.1.0,<0.2.0"
-importlib-metadata = ">=5.0.0,<6.0.0"
 jsbeautifier = ">=1.14.4,<2.0.0"
-pathspec = ">=0.10.0,<0.11.0"
+json5 = ">=0.9.11,<0.10.0"
+pathspec = ">=0.11.0,<0.12.0"
 PyYAML = ">=6.0,<7.0"
-regex = ">=2022.1.18,<2023.0.0"
+regex = ">=2023.0.0,<2024.0.0"
 tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version < \"3.11\""}
 tqdm = ">=4.62.2,<5.0.0"
 
@@ -342,26 +342,6 @@ files = [
     {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
 ]
 
-[[package]]
-name = "importlib-metadata"
-version = "5.2.0"
-description = "Read metadata from Python packages"
-category = "dev"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "importlib_metadata-5.2.0-py3-none-any.whl", hash = "sha256:0eafa39ba42bf225fc00e67f701d71f85aead9f878569caf13c3724f704b970f"},
-    {file = "importlib_metadata-5.2.0.tar.gz", hash = "sha256:404d48d62bba0b7a77ff9d405efd91501bef2e67ff4ace0bed40a0cf28c3c7cd"},
-]
-
-[package.dependencies]
-zipp = ">=0.5"
-
-[package.extras]
-docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
-perf = ["ipython"]
-testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"]
-
 [[package]]
 name = "iniconfig"
 version = "2.0.0"
@@ -407,6 +387,21 @@ files = [
 editorconfig = ">=0.12.2"
 six = ">=1.13.0"
 
+[[package]]
+name = "json5"
+version = "0.9.14"
+description = "A Python implementation of the JSON5 data format."
+category = "dev"
+optional = false
+python-versions = "*"
+files = [
+    {file = "json5-0.9.14-py2.py3-none-any.whl", hash = "sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f"},
+    {file = "json5-0.9.14.tar.gz", hash = "sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02"},
+]
+
+[package.extras]
+dev = ["hypothesis"]
+
 [[package]]
 name = "langcodes"
 version = "3.3.0"
@@ -657,14 +652,14 @@ files = [
 
 [[package]]
 name = "pathspec"
-version = "0.10.3"
+version = "0.11.2"
 description = "Utility library for gitignore style pattern matching of file paths."
 category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "pathspec-0.10.3-py3-none-any.whl", hash = "sha256:3c95343af8b756205e2aba76e843ba9520a24dd84f68c22b9f93251507509dd6"},
-    {file = "pathspec-0.10.3.tar.gz", hash = "sha256:56200de4077d9d0791465aa9095a01d421861e405b5096955051deefd697d6f6"},
+    {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"},
+    {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"},
 ]
 
 [[package]]
@@ -898,100 +893,100 @@ files = [
 
 [[package]]
 name = "regex"
-version = "2022.10.31"
+version = "2023.8.8"
 description = "Alternative regular expression module, to replace re."
 category = "dev"
 optional = false
 python-versions = ">=3.6"
 files = [
-    {file = "regex-2022.10.31-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a8ff454ef0bb061e37df03557afda9d785c905dab15584860f982e88be73015f"},
-    {file = "regex-2022.10.31-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1eba476b1b242620c266edf6325b443a2e22b633217a9835a52d8da2b5c051f9"},
-    {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0e5af9a9effb88535a472e19169e09ce750c3d442fb222254a276d77808620b"},
-    {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d03fe67b2325cb3f09be029fd5da8df9e6974f0cde2c2ac6a79d2634e791dd57"},
-    {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9d0b68ac1743964755ae2d89772c7e6fb0118acd4d0b7464eaf3921c6b49dd4"},
-    {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a45b6514861916c429e6059a55cf7db74670eaed2052a648e3e4d04f070e001"},
-    {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b0886885f7323beea6f552c28bff62cbe0983b9fbb94126531693ea6c5ebb90"},
-    {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5aefb84a301327ad115e9d346c8e2760009131d9d4b4c6b213648d02e2abe144"},
-    {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:702d8fc6f25bbf412ee706bd73019da5e44a8400861dfff7ff31eb5b4a1276dc"},
-    {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a3c1ebd4ed8e76e886507c9eddb1a891673686c813adf889b864a17fafcf6d66"},
-    {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:50921c140561d3db2ab9f5b11c5184846cde686bb5a9dc64cae442926e86f3af"},
-    {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:7db345956ecce0c99b97b042b4ca7326feeec6b75facd8390af73b18e2650ffc"},
-    {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:763b64853b0a8f4f9cfb41a76a4a85a9bcda7fdda5cb057016e7706fde928e66"},
-    {file = "regex-2022.10.31-cp310-cp310-win32.whl", hash = "sha256:44136355e2f5e06bf6b23d337a75386371ba742ffa771440b85bed367c1318d1"},
-    {file = "regex-2022.10.31-cp310-cp310-win_amd64.whl", hash = "sha256:bfff48c7bd23c6e2aec6454aaf6edc44444b229e94743b34bdcdda2e35126cf5"},
-    {file = "regex-2022.10.31-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4b4b1fe58cd102d75ef0552cf17242705ce0759f9695334a56644ad2d83903fe"},
-    {file = "regex-2022.10.31-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:542e3e306d1669b25936b64917285cdffcd4f5c6f0247636fec037187bd93542"},
-    {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c27cc1e4b197092e50ddbf0118c788d9977f3f8f35bfbbd3e76c1846a3443df7"},
-    {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8e38472739028e5f2c3a4aded0ab7eadc447f0d84f310c7a8bb697ec417229e"},
-    {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76c598ca73ec73a2f568e2a72ba46c3b6c8690ad9a07092b18e48ceb936e9f0c"},
-    {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c28d3309ebd6d6b2cf82969b5179bed5fefe6142c70f354ece94324fa11bf6a1"},
-    {file = "regex-2022.10.31-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9af69f6746120998cd9c355e9c3c6aec7dff70d47247188feb4f829502be8ab4"},
-    {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a5f9505efd574d1e5b4a76ac9dd92a12acb2b309551e9aa874c13c11caefbe4f"},
-    {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5ff525698de226c0ca743bfa71fc6b378cda2ddcf0d22d7c37b1cc925c9650a5"},
-    {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4fe7fda2fe7c8890d454f2cbc91d6c01baf206fbc96d89a80241a02985118c0c"},
-    {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2cdc55ca07b4e70dda898d2ab7150ecf17c990076d3acd7a5f3b25cb23a69f1c"},
-    {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:44a6c2f6374e0033873e9ed577a54a3602b4f609867794c1a3ebba65e4c93ee7"},
-    {file = "regex-2022.10.31-cp311-cp311-win32.whl", hash = "sha256:d8716f82502997b3d0895d1c64c3b834181b1eaca28f3f6336a71777e437c2af"},
-    {file = "regex-2022.10.31-cp311-cp311-win_amd64.whl", hash = "sha256:61edbca89aa3f5ef7ecac8c23d975fe7261c12665f1d90a6b1af527bba86ce61"},
-    {file = "regex-2022.10.31-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a069c8483466806ab94ea9068c34b200b8bfc66b6762f45a831c4baaa9e8cdd"},
-    {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d26166acf62f731f50bdd885b04b38828436d74e8e362bfcb8df221d868b5d9b"},
-    {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac741bf78b9bb432e2d314439275235f41656e189856b11fb4e774d9f7246d81"},
-    {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75f591b2055523fc02a4bbe598aa867df9e953255f0b7f7715d2a36a9c30065c"},
-    {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b30bddd61d2a3261f025ad0f9ee2586988c6a00c780a2fb0a92cea2aa702c54"},
-    {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef4163770525257876f10e8ece1cf25b71468316f61451ded1a6f44273eedeb5"},
-    {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7b280948d00bd3973c1998f92e22aa3ecb76682e3a4255f33e1020bd32adf443"},
-    {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:d0213671691e341f6849bf33cd9fad21f7b1cb88b89e024f33370733fec58742"},
-    {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:22e7ebc231d28393dfdc19b185d97e14a0f178bedd78e85aad660e93b646604e"},
-    {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:8ad241da7fac963d7573cc67a064c57c58766b62a9a20c452ca1f21050868dfa"},
-    {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:586b36ebda81e6c1a9c5a5d0bfdc236399ba6595e1397842fd4a45648c30f35e"},
-    {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4"},
-    {file = "regex-2022.10.31-cp36-cp36m-win32.whl", hash = "sha256:144486e029793a733e43b2e37df16a16df4ceb62102636ff3db6033994711066"},
-    {file = "regex-2022.10.31-cp36-cp36m-win_amd64.whl", hash = "sha256:c14b63c9d7bab795d17392c7c1f9aaabbffd4cf4387725a0ac69109fb3b550c6"},
-    {file = "regex-2022.10.31-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4cac3405d8dda8bc6ed499557625585544dd5cbf32072dcc72b5a176cb1271c8"},
-    {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23cbb932cc53a86ebde0fb72e7e645f9a5eec1a5af7aa9ce333e46286caef783"},
-    {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74bcab50a13960f2a610cdcd066e25f1fd59e23b69637c92ad470784a51b1347"},
-    {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78d680ef3e4d405f36f0d6d1ea54e740366f061645930072d39bca16a10d8c93"},
-    {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce6910b56b700bea7be82c54ddf2e0ed792a577dfaa4a76b9af07d550af435c6"},
-    {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:659175b2144d199560d99a8d13b2228b85e6019b6e09e556209dfb8c37b78a11"},
-    {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1ddf14031a3882f684b8642cb74eea3af93a2be68893901b2b387c5fd92a03ec"},
-    {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b683e5fd7f74fb66e89a1ed16076dbab3f8e9f34c18b1979ded614fe10cdc4d9"},
-    {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2bde29cc44fa81c0a0c8686992c3080b37c488df167a371500b2a43ce9f026d1"},
-    {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4919899577ba37f505aaebdf6e7dc812d55e8f097331312db7f1aab18767cce8"},
-    {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:9c94f7cc91ab16b36ba5ce476f1904c91d6c92441f01cd61a8e2729442d6fcf5"},
-    {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae1e96785696b543394a4e3f15f3f225d44f3c55dafe3f206493031419fedf95"},
-    {file = "regex-2022.10.31-cp37-cp37m-win32.whl", hash = "sha256:c670f4773f2f6f1957ff8a3962c7dd12e4be54d05839b216cb7fd70b5a1df394"},
-    {file = "regex-2022.10.31-cp37-cp37m-win_amd64.whl", hash = "sha256:8e0caeff18b96ea90fc0eb6e3bdb2b10ab5b01a95128dfeccb64a7238decf5f0"},
-    {file = "regex-2022.10.31-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:131d4be09bea7ce2577f9623e415cab287a3c8e0624f778c1d955ec7c281bd4d"},
-    {file = "regex-2022.10.31-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e613a98ead2005c4ce037c7b061f2409a1a4e45099edb0ef3200ee26ed2a69a8"},
-    {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad"},
-    {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa62a07ac93b7cb6b7d0389d8ef57ffc321d78f60c037b19dfa78d6b17c928ee"},
-    {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5352bea8a8f84b89d45ccc503f390a6be77917932b1c98c4cdc3565137acc714"},
-    {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20f61c9944f0be2dc2b75689ba409938c14876c19d02f7585af4460b6a21403e"},
-    {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29c04741b9ae13d1e94cf93fca257730b97ce6ea64cfe1eba11cf9ac4e85afb6"},
-    {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:543883e3496c8b6d58bd036c99486c3c8387c2fc01f7a342b760c1ea3158a318"},
-    {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7a8b43ee64ca8f4befa2bea4083f7c52c92864d8518244bfa6e88c751fa8fff"},
-    {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6a9a19bea8495bb419dc5d38c4519567781cd8d571c72efc6aa959473d10221a"},
-    {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6ffd55b5aedc6f25fd8d9f905c9376ca44fcf768673ffb9d160dd6f409bfda73"},
-    {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4bdd56ee719a8f751cf5a593476a441c4e56c9b64dc1f0f30902858c4ef8771d"},
-    {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ca88da1bd78990b536c4a7765f719803eb4f8f9971cc22d6ca965c10a7f2c4c"},
-    {file = "regex-2022.10.31-cp38-cp38-win32.whl", hash = "sha256:5a260758454580f11dd8743fa98319bb046037dfab4f7828008909d0aa5292bc"},
-    {file = "regex-2022.10.31-cp38-cp38-win_amd64.whl", hash = "sha256:5e6a5567078b3eaed93558842346c9d678e116ab0135e22eb72db8325e90b453"},
-    {file = "regex-2022.10.31-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5217c25229b6a85049416a5c1e6451e9060a1edcf988641e309dbe3ab26d3e49"},
-    {file = "regex-2022.10.31-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4bf41b8b0a80708f7e0384519795e80dcb44d7199a35d52c15cc674d10b3081b"},
-    {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf0da36a212978be2c2e2e2d04bdff46f850108fccc1851332bcae51c8907cc"},
-    {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d403d781b0e06d2922435ce3b8d2376579f0c217ae491e273bab8d092727d244"},
-    {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a37d51fa9a00d265cf73f3de3930fa9c41548177ba4f0faf76e61d512c774690"},
-    {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4f781ffedd17b0b834c8731b75cce2639d5a8afe961c1e58ee7f1f20b3af185"},
-    {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d243b36fbf3d73c25e48014961e83c19c9cc92530516ce3c43050ea6276a2ab7"},
-    {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:370f6e97d02bf2dd20d7468ce4f38e173a124e769762d00beadec3bc2f4b3bc4"},
-    {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:597f899f4ed42a38df7b0e46714880fb4e19a25c2f66e5c908805466721760f5"},
-    {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7dbdce0c534bbf52274b94768b3498abdf675a691fec5f751b6057b3030f34c1"},
-    {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:22960019a842777a9fa5134c2364efaed5fbf9610ddc5c904bd3a400973b0eb8"},
-    {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7f5a3ffc731494f1a57bd91c47dc483a1e10048131ffb52d901bfe2beb6102e8"},
-    {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7ef6b5942e6bfc5706301a18a62300c60db9af7f6368042227ccb7eeb22d0892"},
-    {file = "regex-2022.10.31-cp39-cp39-win32.whl", hash = "sha256:395161bbdbd04a8333b9ff9763a05e9ceb4fe210e3c7690f5e68cedd3d65d8e1"},
-    {file = "regex-2022.10.31-cp39-cp39-win_amd64.whl", hash = "sha256:957403a978e10fb3ca42572a23e6f7badff39aa1ce2f4ade68ee452dc6807692"},
-    {file = "regex-2022.10.31.tar.gz", hash = "sha256:a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83"},
+    {file = "regex-2023.8.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88900f521c645f784260a8d346e12a1590f79e96403971241e64c3a265c8ecdb"},
+    {file = "regex-2023.8.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3611576aff55918af2697410ff0293d6071b7e00f4b09e005d614686ac4cd57c"},
+    {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0ccc8f2698f120e9e5742f4b38dc944c38744d4bdfc427616f3a163dd9de5"},
+    {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c662a4cbdd6280ee56f841f14620787215a171c4e2d1744c9528bed8f5816c96"},
+    {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf0633e4a1b667bfe0bb10b5e53fe0d5f34a6243ea2530eb342491f1adf4f739"},
+    {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:551ad543fa19e94943c5b2cebc54c73353ffff08228ee5f3376bd27b3d5b9800"},
+    {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54de2619f5ea58474f2ac211ceea6b615af2d7e4306220d4f3fe690c91988a61"},
+    {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5ec4b3f0aebbbe2fc0134ee30a791af522a92ad9f164858805a77442d7d18570"},
+    {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ae646c35cb9f820491760ac62c25b6d6b496757fda2d51be429e0e7b67ae0ab"},
+    {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ca339088839582d01654e6f83a637a4b8194d0960477b9769d2ff2cfa0fa36d2"},
+    {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:d9b6627408021452dcd0d2cdf8da0534e19d93d070bfa8b6b4176f99711e7f90"},
+    {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:bd3366aceedf274f765a3a4bc95d6cd97b130d1dda524d8f25225d14123c01db"},
+    {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7aed90a72fc3654fba9bc4b7f851571dcc368120432ad68b226bd593f3f6c0b7"},
+    {file = "regex-2023.8.8-cp310-cp310-win32.whl", hash = "sha256:80b80b889cb767cc47f31d2b2f3dec2db8126fbcd0cff31b3925b4dc6609dcdb"},
+    {file = "regex-2023.8.8-cp310-cp310-win_amd64.whl", hash = "sha256:b82edc98d107cbc7357da7a5a695901b47d6eb0420e587256ba3ad24b80b7d0b"},
+    {file = "regex-2023.8.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1e7d84d64c84ad97bf06f3c8cb5e48941f135ace28f450d86af6b6512f1c9a71"},
+    {file = "regex-2023.8.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce0f9fbe7d295f9922c0424a3637b88c6c472b75eafeaff6f910494a1fa719ef"},
+    {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06c57e14ac723b04458df5956cfb7e2d9caa6e9d353c0b4c7d5d54fcb1325c46"},
+    {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7a9aaa5a1267125eef22cef3b63484c3241aaec6f48949b366d26c7250e0357"},
+    {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b7408511fca48a82a119d78a77c2f5eb1b22fe88b0d2450ed0756d194fe7a9a"},
+    {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14dc6f2d88192a67d708341f3085df6a4f5a0c7b03dec08d763ca2cd86e9f559"},
+    {file = "regex-2023.8.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48c640b99213643d141550326f34f0502fedb1798adb3c9eb79650b1ecb2f177"},
+    {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0085da0f6c6393428bf0d9c08d8b1874d805bb55e17cb1dfa5ddb7cfb11140bf"},
+    {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:964b16dcc10c79a4a2be9f1273fcc2684a9eedb3906439720598029a797b46e6"},
+    {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7ce606c14bb195b0e5108544b540e2c5faed6843367e4ab3deb5c6aa5e681208"},
+    {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:40f029d73b10fac448c73d6eb33d57b34607f40116e9f6e9f0d32e9229b147d7"},
+    {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3b8e6ea6be6d64104d8e9afc34c151926f8182f84e7ac290a93925c0db004bfd"},
+    {file = "regex-2023.8.8-cp311-cp311-win32.whl", hash = "sha256:942f8b1f3b223638b02df7df79140646c03938d488fbfb771824f3d05fc083a8"},
+    {file = "regex-2023.8.8-cp311-cp311-win_amd64.whl", hash = "sha256:51d8ea2a3a1a8fe4f67de21b8b93757005213e8ac3917567872f2865185fa7fb"},
+    {file = "regex-2023.8.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e951d1a8e9963ea51efd7f150450803e3b95db5939f994ad3d5edac2b6f6e2b4"},
+    {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:704f63b774218207b8ccc6c47fcef5340741e5d839d11d606f70af93ee78e4d4"},
+    {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22283c769a7b01c8ac355d5be0715bf6929b6267619505e289f792b01304d898"},
+    {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:91129ff1bb0619bc1f4ad19485718cc623a2dc433dff95baadbf89405c7f6b57"},
+    {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de35342190deb7b866ad6ba5cbcccb2d22c0487ee0cbb251efef0843d705f0d4"},
+    {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b993b6f524d1e274a5062488a43e3f9f8764ee9745ccd8e8193df743dbe5ee61"},
+    {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3026cbcf11d79095a32d9a13bbc572a458727bd5b1ca332df4a79faecd45281c"},
+    {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:293352710172239bf579c90a9864d0df57340b6fd21272345222fb6371bf82b3"},
+    {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d909b5a3fff619dc7e48b6b1bedc2f30ec43033ba7af32f936c10839e81b9217"},
+    {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:3d370ff652323c5307d9c8e4c62efd1956fb08051b0e9210212bc51168b4ff56"},
+    {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:b076da1ed19dc37788f6a934c60adf97bd02c7eea461b73730513921a85d4235"},
+    {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e9941a4ada58f6218694f382e43fdd256e97615db9da135e77359da257a7168b"},
+    {file = "regex-2023.8.8-cp36-cp36m-win32.whl", hash = "sha256:a8c65c17aed7e15a0c824cdc63a6b104dfc530f6fa8cb6ac51c437af52b481c7"},
+    {file = "regex-2023.8.8-cp36-cp36m-win_amd64.whl", hash = "sha256:aadf28046e77a72f30dcc1ab185639e8de7f4104b8cb5c6dfa5d8ed860e57236"},
+    {file = "regex-2023.8.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:423adfa872b4908843ac3e7a30f957f5d5282944b81ca0a3b8a7ccbbfaa06103"},
+    {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ae594c66f4a7e1ea67232a0846649a7c94c188d6c071ac0210c3e86a5f92109"},
+    {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e51c80c168074faa793685656c38eb7a06cbad7774c8cbc3ea05552d615393d8"},
+    {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09b7f4c66aa9d1522b06e31a54f15581c37286237208df1345108fcf4e050c18"},
+    {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e73e5243af12d9cd6a9d6a45a43570dbe2e5b1cdfc862f5ae2b031e44dd95a8"},
+    {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:941460db8fe3bd613db52f05259c9336f5a47ccae7d7def44cc277184030a116"},
+    {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f0ccf3e01afeb412a1a9993049cb160d0352dba635bbca7762b2dc722aa5742a"},
+    {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2e9216e0d2cdce7dbc9be48cb3eacb962740a09b011a116fd7af8c832ab116ca"},
+    {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5cd9cd7170459b9223c5e592ac036e0704bee765706445c353d96f2890e816c8"},
+    {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4873ef92e03a4309b3ccd8281454801b291b689f6ad45ef8c3658b6fa761d7ac"},
+    {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:239c3c2a339d3b3ddd51c2daef10874410917cd2b998f043c13e2084cb191684"},
+    {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1005c60ed7037be0d9dea1f9c53cc42f836188227366370867222bda4c3c6bd7"},
+    {file = "regex-2023.8.8-cp37-cp37m-win32.whl", hash = "sha256:e6bd1e9b95bc5614a7a9c9c44fde9539cba1c823b43a9f7bc11266446dd568e3"},
+    {file = "regex-2023.8.8-cp37-cp37m-win_amd64.whl", hash = "sha256:9a96edd79661e93327cfeac4edec72a4046e14550a1d22aa0dd2e3ca52aec921"},
+    {file = "regex-2023.8.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2181c20ef18747d5f4a7ea513e09ea03bdd50884a11ce46066bb90fe4213675"},
+    {file = "regex-2023.8.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a2ad5add903eb7cdde2b7c64aaca405f3957ab34f16594d2b78d53b8b1a6a7d6"},
+    {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9233ac249b354c54146e392e8a451e465dd2d967fc773690811d3a8c240ac601"},
+    {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920974009fb37b20d32afcdf0227a2e707eb83fe418713f7a8b7de038b870d0b"},
+    {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2b6c5dfe0929b6c23dde9624483380b170b6e34ed79054ad131b20203a1a63"},
+    {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96979d753b1dc3b2169003e1854dc67bfc86edf93c01e84757927f810b8c3c93"},
+    {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ae54a338191e1356253e7883d9d19f8679b6143703086245fb14d1f20196be9"},
+    {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2162ae2eb8b079622176a81b65d486ba50b888271302190870b8cc488587d280"},
+    {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c884d1a59e69e03b93cf0dfee8794c63d7de0ee8f7ffb76e5f75be8131b6400a"},
+    {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cf9273e96f3ee2ac89ffcb17627a78f78e7516b08f94dc435844ae72576a276e"},
+    {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:83215147121e15d5f3a45d99abeed9cf1fe16869d5c233b08c56cdf75f43a504"},
+    {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:3f7454aa427b8ab9101f3787eb178057c5250478e39b99540cfc2b889c7d0586"},
+    {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0640913d2c1044d97e30d7c41728195fc37e54d190c5385eacb52115127b882"},
+    {file = "regex-2023.8.8-cp38-cp38-win32.whl", hash = "sha256:0c59122ceccb905a941fb23b087b8eafc5290bf983ebcb14d2301febcbe199c7"},
+    {file = "regex-2023.8.8-cp38-cp38-win_amd64.whl", hash = "sha256:c12f6f67495ea05c3d542d119d270007090bad5b843f642d418eb601ec0fa7be"},
+    {file = "regex-2023.8.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:82cd0a69cd28f6cc3789cc6adeb1027f79526b1ab50b1f6062bbc3a0ccb2dbc3"},
+    {file = "regex-2023.8.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bb34d1605f96a245fc39790a117ac1bac8de84ab7691637b26ab2c5efb8f228c"},
+    {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:987b9ac04d0b38ef4f89fbc035e84a7efad9cdd5f1e29024f9289182c8d99e09"},
+    {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dd6082f4e2aec9b6a0927202c85bc1b09dcab113f97265127c1dc20e2e32495"},
+    {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7eb95fe8222932c10d4436e7a6f7c99991e3fdd9f36c949eff16a69246dee2dc"},
+    {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7098c524ba9f20717a56a8d551d2ed491ea89cbf37e540759ed3b776a4f8d6eb"},
+    {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b694430b3f00eb02c594ff5a16db30e054c1b9589a043fe9174584c6efa8033"},
+    {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2aeab3895d778155054abea5238d0eb9a72e9242bd4b43f42fd911ef9a13470"},
+    {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:988631b9d78b546e284478c2ec15c8a85960e262e247b35ca5eaf7ee22f6050a"},
+    {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:67ecd894e56a0c6108ec5ab1d8fa8418ec0cff45844a855966b875d1039a2e34"},
+    {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:14898830f0a0eb67cae2bbbc787c1a7d6e34ecc06fbd39d3af5fe29a4468e2c9"},
+    {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:f2200e00b62568cfd920127782c61bc1c546062a879cdc741cfcc6976668dfcf"},
+    {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9691a549c19c22d26a4f3b948071e93517bdf86e41b81d8c6ac8a964bb71e5a6"},
+    {file = "regex-2023.8.8-cp39-cp39-win32.whl", hash = "sha256:6ab2ed84bf0137927846b37e882745a827458689eb969028af8032b1b3dac78e"},
+    {file = "regex-2023.8.8-cp39-cp39-win_amd64.whl", hash = "sha256:5543c055d8ec7801901e1193a51570643d6a6ab8751b1f7dd9af71af467538bb"},
+    {file = "regex-2023.8.8.tar.gz", hash = "sha256:fcbdc5f2b0f1cd0f6a56cdb46fe41d2cce1e644e3b68832f3eeebc5fb0f7712e"},
 ]
 
 [[package]]
@@ -1170,23 +1165,7 @@ secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.
 socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
 zstd = ["zstandard (>=0.18.0)"]
 
-[[package]]
-name = "zipp"
-version = "3.15.0"
-description = "Backport of pathlib-compatible object wrapper for zip files"
-category = "dev"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"},
-    {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"},
-]
-
-[package.extras]
-docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
-testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
-
 [metadata]
 lock-version = "2.0"
 python-versions = "^3.10"
-content-hash = "bb434d9ce992a26fe329746ee478a7d4f166c6a4e9411a33205b6748591ab660"
+content-hash = "f4e009888fd74a40d0d5628b10d658554e5e1613d39335488594cc2f632ef958"
diff --git a/pyproject.toml b/pyproject.toml
index 9ec92195bfa3f181f0b7577c8adb5e598415a819..02c84d500e2e2ae82f56d0ac95aaf29762c56a31 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -15,7 +15,7 @@ pelican-sitemap = {git = "https://github.com/pelican-plugins/sitemap.git", rev =
 
 [tool.poetry.group.dev.dependencies]
 black = "^23.0.0"
-djlint = "1.19.9"
+djlint = "1.32.1"
 pytest = "^7.2.2"
 pyld = "<2"
 requests-mock = "^1.10.0"
diff --git a/theme/templates/apps.html.j2 b/theme/templates/apps.html.j2
index 9e31247591646d06408fd9ed811fed1c6379e9da..331bfc3393413435ee042f6086dedc6e5504afc5 100644
--- a/theme/templates/apps.html.j2
+++ b/theme/templates/apps.html.j2
@@ -2,32 +2,32 @@
 {% block content %}
   <article class="apps">
     <style scoped>
-      article.apps {
-          margin: 50px auto;
-          text-align: center;
-          max-width: 1024px;
-      }
+        article.apps {
+            margin: 50px auto;
+            text-align: center;
+            max-width: 1024px;
+        }
 
-      .platform {
-          padding-top: 50px;
-      }
+        .platform {
+            padding-top: 50px;
+        }
 
-      i.card-image {
-          font-size: 160px;
-      }
+        i.card-image {
+            font-size: 160px;
+        }
 
-      .funkwhale.card>.card-image,
-      .funkwhale.card>.card-tags {
-          width: initial;
-      }
+        .funkwhale.card>.card-image,
+        .funkwhale.card>.card-tags {
+            width: initial;
+        }
 
-      .cards {
-          margin: 50px auto;
-          display: flex;
-          flex-wrap: wrap;
-          gap: 50px;
-          justify-content: center;
-      }
+        .cards {
+            margin: 50px auto;
+            display: flex;
+            flex-wrap: wrap;
+            gap: 50px;
+            justify-content: center;
+        }
     </style>
     <h1>{% trans %}Connect to Funkwhale from other apps{% endtrans %}</h1>
     <p>
@@ -43,12 +43,12 @@
             <div class="funkwhale card has-image">
               <img alt="{% trans %}Logo of {% endtrans %}{{ app.name }}"
                    src="{{ main_siteurl }}/{{ app.icon }}"
-                   class="card-image"/>
+                   class="card-image" />
               <h3 class="card-title">{{ app.name }}</h3>
               <div class="card-tags"
                    aria-description="{% trans %}App properties{% endtrans %}">
                 {% for tag in app.tags %}
-                  <span class="funkwhale is-colored pill is-{{ TAG_COLORS[tag]|default('secondary') }}">
+                  <span class="funkwhale is-colored pill is-{{ TAG_COLORS[tag]|default("secondary") }}">
                     <div class="pill-content">{% trans %}{{ tag }}{% endtrans %}</div>
                   </span>
                 {% endfor %}
diff --git a/theme/templates/base.html.j2 b/theme/templates/base.html.j2
index 3f37554fcd1881a9d201f670eda799fd24bbb6fa..5519fdde1f0577250c995d0bd23411487ef39b45 100644
--- a/theme/templates/base.html.j2
+++ b/theme/templates/base.html.j2
@@ -3,45 +3,45 @@
   <head>
     <meta charset="utf-8" />
     <meta name="description"
-          content="Funkwhale - A platform for all your audio"/>
+          content="Funkwhale - A platform for all your audio" />
     <meta name="keywords"
-          content="Audio, Music, Free, Podcasts, Fediverse, ActivitPub, Creative Commons"/>
+          content="Audio, Music, Free, Podcasts, Fediverse, ActivitPub, Creative Commons" />
     <meta name="author" content="Funkwhale Collective" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <title>Funkwhale</title>
     <link rel="stylesheet" href="https://ui.funkwhale.audio/main/style.css" />
     <link rel="stylesheet"
-          href="{{ main_siteurl }}/theme/fork-awesome/css/fork-awesome.min.css"/>
+          href="{{ main_siteurl }}/theme/fork-awesome/css/fork-awesome.min.css" />
     <link rel="stylesheet" href="{{ main_siteurl }}/theme/css/website.css" />
     <link rel="icon"
           type="image/x-icon"
-          href="{{ main_siteurl }}/theme/favicon.ico"/>
+          href="{{ main_siteurl }}/theme/favicon.ico" />
     <script src="{{ main_siteurl }}/theme/js/navbar-burger.js"></script>
     {% block header %}
     {% endblock header %}
   </head>
   <body>
     <style scoped>
-      body {
-          display: flex;
-          flex-direction: column;
-          justify-content: space-between;
-          height: 100vh;
-      }
+        body {
+            display: flex;
+            flex-direction: column;
+            justify-content: space-between;
+            height: 100vh;
+        }
 
-      .skip-to-content-link {
-          background: var(--fw-beige-100);
-          height: 30px;
-          left: 50%;
-          padding: 8px;
-          position: absolute;
-          transform: translateY(-100%);
-          transition: transform 0.3s;
-      }
+        .skip-to-content-link {
+            background: var(--fw-beige-100);
+            height: 30px;
+            left: 50%;
+            padding: 8px;
+            position: absolute;
+            transform: translateY(-100%);
+            transition: transform 0.3s;
+        }
 
-      .skip-to-content-link:focus {
-          transform: translateY(0%);
-      }
+        .skip-to-content-link:focus {
+            transform: translateY(0%);
+        }
     </style>
     <a class="skip-to-content-link" href="#main-content">Skip to content</a>
     <header>
diff --git a/theme/templates/contact.html.j2 b/theme/templates/contact.html.j2
index 11f2741766b5d82de1c6785dbb612015419e9572..4941b7c9a759cf553fc1f175a27460b20505fdaa 100644
--- a/theme/templates/contact.html.j2
+++ b/theme/templates/contact.html.j2
@@ -2,10 +2,10 @@
 {% block content %}
   <article class="contact">
     <style scoped>
-      article.contact {
-          max-width: 800px;
-          margin: 50px auto;
-      }
+        article.contact {
+            max-width: 800px;
+            margin: 50px auto;
+        }
     </style>
     <h1>{% trans %}Contact information{% endtrans %}</h1>
     <p>
diff --git a/theme/templates/contribute.html.j2 b/theme/templates/contribute.html.j2
index f7a1462887ec76de0a6944471b2c4c8288621b8c..ee80d3b24e64549d0dd354e46e485f36288ab105 100644
--- a/theme/templates/contribute.html.j2
+++ b/theme/templates/contribute.html.j2
@@ -2,60 +2,60 @@
 {% block content %}
   <article class="contribute">
     <style>
-      .headings {
-          text-align: center;
-      }
+        .headings {
+            text-align: center;
+        }
 
-      .headings h1 {
-          font-size: 36px;
-      }
+        .headings h1 {
+            font-size: 36px;
+        }
 
-      .headings h2 {
-          font-size: 24px;
-      }
+        .headings h2 {
+            font-size: 24px;
+        }
 
-      .cards {
-          margin: 50px auto;
-          display: flex;
-          flex-wrap: wrap;
-          gap: 50px;
-          justify-content: center;
-          max-width: 1280px;
-      }
+        .cards {
+            margin: 50px auto;
+            display: flex;
+            flex-wrap: wrap;
+            gap: 50px;
+            justify-content: center;
+            max-width: 1280px;
+        }
 
-      .cards .funkwhale.card.is-category {
-          box-sizing: border-box;
-          height: 110px;
+        .cards .funkwhale.card.is-category {
+            box-sizing: border-box;
+            height: 110px;
 
-      }
+        }
 
-      i.card-image {
-          font-size: 150px;
-      }
+        i.card-image {
+            font-size: 150px;
+        }
 
-      .cards .funkwhale.card.is-category .card-title {
-          position: absolute;
-          bottom: 16px;
-          left: 24px;
-          right: 57px;
-          white-space: initial;
-          text-align: left;
-      }
+        .cards .funkwhale.card.is-category .card-title {
+            position: absolute;
+            bottom: 16px;
+            left: 24px;
+            right: 57px;
+            white-space: initial;
+            text-align: left;
+        }
 
-      .starting-points {
-          margin: 50px auto;
-          text-align: center;
-      }
+        .starting-points {
+            margin: 50px auto;
+            text-align: center;
+        }
 
-      .starting-points .funkwhale.button {
-          box-sizing: border-box;
-          width: 320px;
-      }
+        .starting-points .funkwhale.button {
+            box-sizing: border-box;
+            width: 320px;
+        }
 
-      .community-spaces {
-          padding: 50px;
-          background-color: var(--fw-beige-100);
-      }
+        .community-spaces {
+            padding: 50px;
+            background-color: var(--fw-beige-100);
+        }
     </style>
     <div class="headings">
       <h1>{% trans %}Contribute{% endtrans %}</h1>
diff --git a/theme/templates/credits.html.j2 b/theme/templates/credits.html.j2
index 2e4bc77f4525973bfb1e2eb65d4e78458434ecdc..4aa7e7cb7e32bea8d6f326576682a23ac75de9f2 100644
--- a/theme/templates/credits.html.j2
+++ b/theme/templates/credits.html.j2
@@ -2,14 +2,14 @@
 {% block content %}
   <article class="credits">
     <style scoped>
-      article.credits {
-          max-width: 800px;
-          margin: 50px auto;
-      }
+        article.credits {
+            max-width: 800px;
+            margin: 50px auto;
+        }
 
-      .category {
-          padding-top: 30px;
-      }
+        .category {
+            padding-top: 30px;
+        }
     </style>
     <h1>{% trans %}Credits{% endtrans %}</h1>
     <p>
@@ -97,17 +97,13 @@
           <td>
             <a href="https://www.debian.org/">{% trans %}Debian{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}The Universal Operating System{% endtrans %}
-          </td>
+          <td>{% trans %}The Universal Operating System{% endtrans %}</td>
         </tr>
         <tr>
           <td>
             <a href="https://www.proxmox.com/en/proxmox-ve">{% trans %}Proxmox VE{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}Open-Source Virtualization Platform{% endtrans %}
-          </td>
+          <td>{% trans %}Open-Source Virtualization Platform{% endtrans %}</td>
         </tr>
         <tr>
           <td>
@@ -121,49 +117,37 @@
           <td>
             <a href="https://nginx.org/">{% trans %}Nginx{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}The open-source web server that powers 400 million websites{% endtrans %}
-          </td>
+          <td>{% trans %}The open-source web server that powers 400 million websites{% endtrans %}</td>
         </tr>
         <tr>
           <td>
             <a href="https://letsencrypt.org/">{% trans %}letsencrypt{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}A free, automated, and open Certificate Authority{% endtrans %}
-          </td>
+          <td>{% trans %}A free, automated, and open Certificate Authority{% endtrans %}</td>
         </tr>
         <tr>
           <td>
             <a href="https://mailcow.email/">{% trans %}Mailcow{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}The mailserver suite with the 'moo'{% endtrans %}
-          </td>
+          <td>{% trans %}The mailserver suite with the 'moo'{% endtrans %}</td>
         </tr>
         <tr>
           <td>
             <a href="https://github.com/louislam/uptime-kuma">{% trans %}Uptime Kuma{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}A fancy self-hosted monitoring tool{% endtrans %}
-          </td>
+          <td>{% trans %}A fancy self-hosted monitoring tool{% endtrans %}</td>
         </tr>
         <tr>
           <td>
             <a href="https://autorestic.vercel.app/">{% trans %}autorestic{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}High backup level CLI utility{% endtrans %}
-          </td>
+          <td>{% trans %}High backup level CLI utility{% endtrans %}</td>
         </tr>
         <tr>
           <td>
             <a href="https://docs.ansible.com/">{% trans %}Ansible{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}An IT automation tool{% endtrans %}
-          </td>
+          <td>{% trans %}An IT automation tool{% endtrans %}</td>
         </tr>
       </table>
     </div>
@@ -171,17 +155,11 @@
       <h2>
         <i class="fa fa-music"></i> {% trans %}Funkwhale{% endtrans %}
       </h2>
-      <p>
-        {% trans %}Funkwhale was made possible by these projects{% endtrans %}
-      </p>
+      <p>{% trans %}Funkwhale was made possible by these projects{% endtrans %}</p>
       <table>
         <tr>
-          <th>
-            {% trans %}Project{% endtrans %}
-          </th>
-          <th>
-            {% trans %}Description{% endtrans %}
-          </th>
+          <th>{% trans %}Project{% endtrans %}</th>
+          <th>{% trans %}Description{% endtrans %}</th>
         </tr>
         <tr>
           <td>
@@ -195,17 +173,13 @@
           <td>
             <a href="https://funkwhale.audio/apps/">{% trans %}Subsonic applications{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}All third-party applications compatible with the Subsonic protocol{% endtrans %}
-          </td>
+          <td>{% trans %}All third-party applications compatible with the Subsonic protocol{% endtrans %}</td>
         </tr>
         <tr>
           <td>
             <a href="https://www.postgresql.org/">{% trans %}PostgreSQL{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}The World's Most Advanced Open Source Relational Database{% endtrans %}
-          </td>
+          <td>{% trans %}The World's Most Advanced Open Source Relational Database{% endtrans %}</td>
         </tr>
         <tr>
           <td>
@@ -219,25 +193,19 @@
           <td>
             <a href="https://www.sphinx-doc.org/">{% trans %}Sphinx{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}A tool that makes it easy to create intelligent and beautiful documentation{% endtrans %}
-          </td>
+          <td>{% trans %}A tool that makes it easy to create intelligent and beautiful documentation{% endtrans %}</td>
         </tr>
         <tr>
           <td>
             <a href="https://docs.funkwhale.audio/installation/#third-party-packages">{% trans %}Third-party packagers{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}All the individuals who maintain installation packages for Funkwhale{% endtrans %}
-          </td>
+          <td>{% trans %}All the individuals who maintain installation packages for Funkwhale{% endtrans %}</td>
         </tr>
         <tr>
           <td>
             <a href="https://activitypub.rocks/">{% trans %}ActivityPub{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}A decentralized social networking protocol{% endtrans %}
-          </td>
+          <td>{% trans %}A decentralized social networking protocol{% endtrans %}</td>
         </tr>
       </table>
     </div>
@@ -245,17 +213,11 @@
       <h2>
         <i class="fa fa-mouse-pointer"></i> {% trans %}Funkwhale (user interface){% endtrans %}
       </h2>
-      <p>
-        {% trans %}Our user interface is built on top of these projects and technologies.{% endtrans %}
-      </p>
+      <p>{% trans %}Our user interface is built on top of these projects and technologies.{% endtrans %}</p>
       <table>
         <tr>
-          <th>
-            {% trans %}Project{% endtrans %}
-          </th>
-          <th>
-            {% trans %}Description{% endtrans %}
-          </th>
+          <th>{% trans %}Project{% endtrans %}</th>
+          <th>{% trans %}Description{% endtrans %}</th>
         </tr>
         <tr>
           <td>
@@ -269,25 +231,19 @@
           <td>
             <a href="https://vuejs.org/">{% trans %}Vue.js{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}The Progressive JavaScript Framework{% endtrans %}
-          </td>
+          <td>{% trans %}The Progressive JavaScript Framework{% endtrans %}</td>
         </tr>
         <tr>
           <td>
             <a href="https://github.com/axios/axios/">{% trans %}axios{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}Promise based HTTP client for the browser and node.js{% endtrans %}
-          </td>
+          <td>{% trans %}Promise based HTTP client for the browser and node.js{% endtrans %}</td>
         </tr>
         <tr>
           <td>
             <a href="https://dev.funkwhale.audio/funkwhale/funkwhale/blob/develop/front/package.json">{% trans %}All our Dependencies{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}Because we can't list every single dependency here!{% endtrans %}
-          </td>
+          <td>{% trans %}Because we can't list every single dependency here!{% endtrans %}</td>
         </tr>
       </table>
     </div>
@@ -295,17 +251,11 @@
       <h2>
         <i class="fa fa-server"></i> {% trans %}Funkwhale (backend){% endtrans %}
       </h2>
-      <p>
-        {% trans %}The Funkwhale server is built on top of these projects and technologies.{% endtrans %}
-      </p>
+      <p>{% trans %}The Funkwhale server is built on top of these projects and technologies.{% endtrans %}</p>
       <table>
         <tr>
-          <th>
-            {% trans %}Project{% endtrans %}
-          </th>
-          <th>
-            {% trans %}Description{% endtrans %}
-          </th>
+          <th>{% trans %}Project{% endtrans %}</th>
+          <th>{% trans %}Description{% endtrans %}</th>
         </tr>
         <tr>
           <td>
@@ -319,25 +269,19 @@
           <td>
             <a href="https://www.djangoproject.com/">{% trans %}Django{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}The Web framework for perfectionists with deadlines{% endtrans %}
-          </td>
+          <td>{% trans %}The Web framework for perfectionists with deadlines{% endtrans %}</td>
         </tr>
         <tr>
           <td>
             <a href="https://www.django-rest-framework.org/">{% trans %}Django Rest Framework{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}A powerful and flexible toolkit for building Web APIs{% endtrans %}
-          </td>
+          <td>{% trans %}A powerful and flexible toolkit for building Web APIs{% endtrans %}</td>
         </tr>
         <tr>
           <td>
             <a href="https://dev.funkwhale.audio/funkwhale/funkwhale/-/blob/develop/api/pyproject.toml">{% trans %}All our Dependencies{% endtrans %}</a>
           </td>
-          <td>
-            {% trans %}Because we can't list every single dependency here!{% endtrans %}
-          </td>
+          <td>{% trans %}Because we can't list every single dependency here!{% endtrans %}</td>
         </tr>
       </table>
     </div>
diff --git a/theme/templates/donate.html.j2 b/theme/templates/donate.html.j2
index 9959f3a35a1b4ebb18201cc44a4c999a94538239..ed62e394d7013f17920e9194147787a8de8e133f 100644
--- a/theme/templates/donate.html.j2
+++ b/theme/templates/donate.html.j2
@@ -2,94 +2,94 @@
 {% block content %}
   <article class="donate">
     <style scoped>
-      article.donate {
-          margin: 50px auto;
-          text-align: center;
-      }
-
-      section.donation {
-          padding: 50px 0;
-          background-color: var(--fw-beige-100);
-          text-align: center;
-      }
-
-      .side-by-side {
-          display: flex;
-          gap: 100px;
-          max-width: 800px;
-          margin: 50px auto;
-          align-items: center;
-          flex-wrap: wrap;
-          justify-content: center;
-      }
-
-      section.donation>p {
-          margin: 10px 10px;
-      }
-
-      .side-by-side .text {
-          max-width: 320px;
-      }
-
-      i.card-image {
-          font-size: 150px;
-      }
-
-      .reports {
-          max-width: 800px;
-          margin: auto;
-          margin-bottom: 75px;
-          padding-top: 50px;
-      }
-
-      table {
-          width: 100%;
-          table-layout: fixed;
-      }
-
-      table tr:nth-child(even) {
-          background-color: #f2f2f2;
-      }
-
-      table tr:hover {
-          background-color: #ddd;
-      }
-
-      table .number {
-          text-align: end;
-      }
-
-      p.updated {
-          font-size: small;
-          margin-top: 5px;
-      }
-
-      @media screen and (max-width: 799px) {
-          .reports {
-              display: none;
-          }
-      }
-
-      section.shop {
-          padding: 50px;
-          background-color: var(--fw-gray-100);
-      }
-
-      div.flexbox {
-          display: flex;
-          align-items: center;
-          justify-content: center;
-          gap: 50px;
-          flex-wrap: wrap;
-      }
-
-      section.shop img {
-          max-height: 400px;
-      }
-
-      div.shirt-content {
-          text-align: center;
-      }
+        article.donate {
+            margin: 50px auto;
+            text-align: center;
+        }
+
+        section.donation {
+            padding: 50px 0;
+            background-color: var(--fw-beige-100);
+            text-align: center;
+        }
+
+        .side-by-side {
+            display: flex;
+            gap: 100px;
+            max-width: 800px;
+            margin: 50px auto;
+            align-items: center;
+            flex-wrap: wrap;
+            justify-content: center;
+        }
+
+        section.donation>p {
+            margin: 10px 10px;
+        }
+
+        .side-by-side .text {
+            max-width: 320px;
+        }
+
+        i.card-image {
+            font-size: 150px;
+        }
+
+        .reports {
+            max-width: 800px;
+            margin: auto;
+            margin-bottom: 75px;
+            padding-top: 50px;
+        }
+
+        table {
+            width: 100%;
+            table-layout: fixed;
+        }
+
+        table tr:nth-child(even) {
+            background-color: #f2f2f2;
+        }
+
+        table tr:hover {
+            background-color: #ddd;
+        }
+
+        table .number {
+            text-align: end;
+        }
+
+        p.updated {
+            font-size: small;
+            margin-top: 5px;
+        }
+
+        @media screen and (max-width: 799px) {
+            .reports {
+                display: none;
+            }
+        }
+
+        section.shop {
+            padding: 50px;
+            background-color: var(--fw-gray-100);
+        }
+
+        div.flexbox {
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            gap: 50px;
+            flex-wrap: wrap;
+        }
+
+        section.shop img {
+            max-height: 400px;
+        }
+
+        div.shirt-content {
+            text-align: center;
+        }
     </style>
     <h1>{% trans %}Support us{% endtrans %}</h1>
     <section class="donation">
@@ -149,7 +149,7 @@
       <div class="background-wrapper">
         <div class="flexbox">
           <img src="{{ SITEURL }}/theme/images/shirt.png"
-               alt="{% trans %}A Funkwhale T-shirt{% endtrans %}"/>
+               alt="{% trans %}A Funkwhale T-shirt{% endtrans %}" />
           <div class="shirt-content">
             <h2>{% trans %}Funkwhale merchandise{% endtrans %}</h2>
             <p>
@@ -181,9 +181,9 @@
         {% for row in BUDGET %}
           <tr>
             <td>{{ row.title }}</td>
-            <td class="number">{{ row["balance"] | replace(",", ".") | float | round(2) }} €</td>
-            <td class="number">{{ row["ACTUAL 2023"] | replace(",", ".") | float | round(2) }} €</td>
-            <td class="number">{{ row["ACTUAL 2022"] | replace(",", ".") | float | round(2) }} €</td>
+            <td class="number">{{ row["balance"] | replace(',', '.') | float | round(2) }} €</td>
+            <td class="number">{{ row["ACTUAL 2023"] | replace(',', '.') | float | round(2) }} €</td>
+            <td class="number">{{ row["ACTUAL 2022"] | replace(',', '.') | float | round(2) }} €</td>
           </tr>
         {% endfor %}
       </table>
diff --git a/theme/templates/help.html.j2 b/theme/templates/help.html.j2
index 4fda2d5bb16066565df30546ee7da563d5889a5e..6959f24fb3c7657a33ded382c737794c11936881 100644
--- a/theme/templates/help.html.j2
+++ b/theme/templates/help.html.j2
@@ -2,60 +2,60 @@
 {% block content %}
   <article class="help">
     <style>
-      .headings {
-          text-align: center;
-      }
+        .headings {
+            text-align: center;
+        }
 
-      .headings h1 {
-          font-size: 36px;
-      }
+        .headings h1 {
+            font-size: 36px;
+        }
 
-      .headings h2 {
-          font-size: 24px;
-      }
+        .headings h2 {
+            font-size: 24px;
+        }
 
-      .funkwhale.card {
-          text-decoration: None;
-      }
+        .funkwhale.card {
+            text-decoration: None;
+        }
 
-      .cards {
-          margin: auto;
-          margin-bottom: 50px;
-          max-width: 800px;
-          display: flex;
-          flex-wrap: wrap;
-          gap: 50px;
-          justify-content: center;
-      }
+        .cards {
+            margin: auto;
+            margin-bottom: 50px;
+            max-width: 800px;
+            display: flex;
+            flex-wrap: wrap;
+            gap: 50px;
+            justify-content: center;
+        }
 
-      .cards .funkwhale.card.is-category {
-          box-sizing: border-box;
-          height: 110px;
+        .cards .funkwhale.card.is-category {
+            box-sizing: border-box;
+            height: 110px;
 
-      }
+        }
 
-      .cards .funkwhale.card.is-category .card-title {
-          position: absolute;
-          bottom: 16px;
-          left: 24px;
-          right: 57px;
-          white-space: initial;
-          text-align: left;
-      }
+        .cards .funkwhale.card.is-category .card-title {
+            position: absolute;
+            bottom: 16px;
+            left: 24px;
+            right: 57px;
+            white-space: initial;
+            text-align: left;
+        }
 
-      .starting-points {
-          margin: 50px 300px;
-          text-align: center;
-      }
+        .starting-points {
+            margin: 50px 300px;
+            text-align: center;
+        }
 
-      .starting-points .funkwhale.button {
-          box-sizing: border-box;
-          width: 320px;
-      }
+        .starting-points .funkwhale.button {
+            box-sizing: border-box;
+            width: 320px;
+        }
 
-      .community-spaces {
-          background-color: var(--fw-beige-100);
-      }
+        .community-spaces {
+            background-color: var(--fw-beige-100);
+        }
     </style>
     <div class="headings">
       <h1>{% trans %}Help{% endtrans %}</h1>
diff --git a/theme/templates/inc/features.html.j2 b/theme/templates/inc/features.html.j2
index bd9f03d3ddcc9e8316266cabb0e7ab285ab50989..26de4429a60cfca529d72aef4f0dd5aa24f9bd89 100644
--- a/theme/templates/inc/features.html.j2
+++ b/theme/templates/inc/features.html.j2
@@ -1,72 +1,72 @@
 <section class="features">
   <style>
-    .features {
-        background-color: #fff;
-        padding-bottom: 50px;
-    }
+      .features {
+          background-color: #fff;
+          padding-bottom: 50px;
+      }
 
-    .features div.feature {
-        display: flex;
-        flex-wrap: wrap;
-        border-bottom: 1px solid black;
-        justify-content: space-between;
-        align-items: center;
-        margin-bottom: 10vh;
-    }
+      .features div.feature {
+          display: flex;
+          flex-wrap: wrap;
+          border-bottom: 1px solid black;
+          justify-content: space-between;
+          align-items: center;
+          margin-bottom: 10vh;
+      }
 
-    .features div.feature:last-child {
-        border-bottom: none;
-    }
+      .features div.feature:last-child {
+          border-bottom: none;
+      }
 
-    .features div img {
-        max-width: 100vw;
-    }
+      .features div img {
+          max-width: 100vw;
+      }
 
-    .features .feature .content {
-        margin: 5vw 5vh;
-    }
+      .features .feature .content {
+          margin: 5vw 5vh;
+      }
 
-    .features .feature .content p {
-        line-height: 1.5;
-    }
+      .features .feature .content p {
+          line-height: 1.5;
+      }
 
-    @media screen and (min-width: 800px) {
-        .features div img {
-            width: 50%;
-        }
+      @media screen and (min-width: 800px) {
+          .features div img {
+              width: 50%;
+          }
 
-        .features .feature .content {
-            width: 50%;
-            margin: 0;
-            padding: 5vh 5vw;
-            box-sizing: border-box;
-        }
+          .features .feature .content {
+              width: 50%;
+              margin: 0;
+              padding: 5vh 5vw;
+              box-sizing: border-box;
+          }
 
-        .features .feature:nth-child(2n) img {
-            order: -1;
-        }
+          .features .feature:nth-child(2n) img {
+              order: -1;
+          }
 
-    }
+      }
 
-    @media screen and (min-width: 1024px) {
-        .features {
-            padding: 5vh 10vw;
-        }
+      @media screen and (min-width: 1024px) {
+          .features {
+              padding: 5vh 10vw;
+          }
 
-        .features div img {
-            max-height: 50vh;
-        }
+          .features div img {
+              max-height: 50vh;
+          }
 
-        .features .feature {
-            padding: 5vh 0;
-        }
-    }
+          .features .feature {
+              padding: 5vh 0;
+          }
+      }
 
-    @media screen and (min-width: 1600px) {
-        .features {
-            padding: 5vh 0vw;
-        }
-    }
+      @media screen and (min-width: 1600px) {
+          .features {
+              padding: 5vh 0vw;
+          }
+      }
   </style>
   <div class="background-wrapper">
     <div class="feature">
@@ -77,7 +77,7 @@
         </p>
       </div>
       <img alt=""
-           src="{{ main_siteurl }}/theme/images/undraw_audio_player_re_cl20.svg"/>
+           src="{{ main_siteurl }}/theme/images/undraw_audio_player_re_cl20.svg" />
     </div>
     <div class="feature">
       <div class="content">
@@ -87,7 +87,7 @@
         </p>
       </div>
       <img alt=""
-           src="{{ main_siteurl }}/theme/images/undraw_social_friends_re_7uaa.svg"/>
+           src="{{ main_siteurl }}/theme/images/undraw_social_friends_re_7uaa.svg" />
     </div>
     <div class="feature">
       <div class="content">
@@ -97,7 +97,7 @@
         </p>
       </div>
       <img alt=""
-           src="{{ main_siteurl }}/theme/images/undraw_imagination_re_i0xi.svg"/>
+           src="{{ main_siteurl }}/theme/images/undraw_imagination_re_i0xi.svg" />
     </div>
     <div class="feature">
       <div class="content">
@@ -107,7 +107,7 @@
         </p>
       </div>
       <img alt=""
-           src="{{ main_siteurl }}/theme/images/undraw_podcast_audience_re_4i5q.svg"/>
+           src="{{ main_siteurl }}/theme/images/undraw_podcast_audience_re_4i5q.svg" />
     </div>
   </div>
 </section>
diff --git a/theme/templates/inc/footer.html.j2 b/theme/templates/inc/footer.html.j2
index 967f3aa2fd2137884c4c6f8f5426c8e6c5243361..f96328288d118f9da60c3a757ab8b097979117d7 100644
--- a/theme/templates/inc/footer.html.j2
+++ b/theme/templates/inc/footer.html.j2
@@ -1,43 +1,43 @@
 <footer class="footer">
   <style scoped>
-    footer {
-        background-color: var(--fw-gray-900);
-        color: #929090;
-        /* we break the color schema to provide better contrast */
-        padding-bottom: 30px;
-    }
+      footer {
+          background-color: var(--fw-gray-900);
+          color: #929090;
+          /* we break the color schema to provide better contrast */
+          padding-bottom: 30px;
+      }
 
-    .columns {
-        display: flex;
-        flex-wrap: wrap;
-        gap: 5vw;
-        justify-content: space-around;
-    }
+      .columns {
+          display: flex;
+          flex-wrap: wrap;
+          gap: 5vw;
+          justify-content: space-around;
+      }
 
-    ul {
-        list-style-type: none;
-        padding: 0;
-    }
+      ul {
+          list-style-type: none;
+          padding: 0;
+      }
 
-    li {
-        margin: 15px 0;
-    }
+      li {
+          margin: 15px 0;
+      }
 
-    footer a {
-        color: white !important;
-    }
+      footer a {
+          color: white !important;
+      }
 
-    @media screen and (min-width: 800px) {
-        .credits {
-            margin-top: 55px;
-        }
-    }
+      @media screen and (min-width: 800px) {
+          .credits {
+              margin-top: 55px;
+          }
+      }
 
-    .social {
-        display: flex;
-        justify-content: space-between;
-        margin: 50px 5% 0;
-    }
+      .social {
+          display: flex;
+          justify-content: space-between;
+          margin: 50px 5% 0;
+      }
   </style>
   <div class="background-wrapper">
     <div class="columns">
diff --git a/theme/templates/inc/get-started.html.j2 b/theme/templates/inc/get-started.html.j2
index e95308ac2558ab3842df04f4d2fcaf351bd5a8d9..cd81eb2ba6f7270dc5a226b002e083c22e655bca 100644
--- a/theme/templates/inc/get-started.html.j2
+++ b/theme/templates/inc/get-started.html.j2
@@ -1,42 +1,42 @@
 <section class="get-started">
   <style scoped>
-    section.get-started {
-        padding: 30px 0 60px;
-        background-color: var(--fw-gray-100);
-    }
+      section.get-started {
+          padding: 30px 0 60px;
+          background-color: var(--fw-gray-100);
+      }
 
-    section.get-started .entrypoints {
-        display: flex;
-        flex-wrap: wrap;
-        justify-content: center;
-        gap: 5vw 10vh;
-    }
+      section.get-started .entrypoints {
+          display: flex;
+          flex-wrap: wrap;
+          justify-content: center;
+          gap: 5vw 10vh;
+      }
 
-    section.get-started .funkwhale.card {
-        background-color: #fff;
-    }
+      section.get-started .funkwhale.card {
+          background-color: #fff;
+      }
 
-    /* We need to have a pretty long selector to overwrite the original color. The main aim is to have a proper contrast ratio */
-    section.get-started .funkwhale.card .card-button .is-secondary.is-outline:not(:active):not(.is-active):not(.funkwhale.button.is-loading) {
-        color: #7c7474 !important;
-    }
+      /* We need to have a pretty long selector to overwrite the original color. The main aim is to have a proper contrast ratio */
+      section.get-started .funkwhale.card .card-button .is-secondary.is-outline:not(:active):not(.is-active):not(.funkwhale.button.is-loading) {
+          color: #7c7474 !important;
+      }
 
-    section.get-started .content {
-        margin: 5vw 5vh;
-    }
+      section.get-started .content {
+          margin: 5vw 5vh;
+      }
 
-    section.get-started .content p {
-        line-height: 2;
-    }
+      section.get-started .content p {
+          line-height: 2;
+      }
 
-    @media screen and (min-width: 1024px) {
-        section.get-started .content {
-            text-align: center;
-            margin: auto;
-            width: 40vw;
-        }
+      @media screen and (min-width: 1024px) {
+          section.get-started .content {
+              text-align: center;
+              margin: auto;
+              width: 40vw;
+          }
 
-    }
+      }
   </style>
   <div class="background-wrapper">
     <div class="content">
diff --git a/theme/templates/inc/hero.html.j2 b/theme/templates/inc/hero.html.j2
index 447e855f5895c0158823a188a111099e457c9907..bfd86cc0308b80e546d14cccd930177f1c944cd0 100644
--- a/theme/templates/inc/hero.html.j2
+++ b/theme/templates/inc/hero.html.j2
@@ -13,7 +13,7 @@
     </div>
     <div class="hero-box">
       <img alt="{% trans %}A screenshot of the Funkwhale web interface displaying an artist page with a list of albums and controls for playing the artist's content. The bottom of the screen shows an audio player bar.{% endtrans %}"
-           src="{{ main_siteurl }}/theme/images/screenshot.png"/>
+           src="{{ main_siteurl }}/theme/images/screenshot.png" />
     </div>
   </section>
 </div>
diff --git a/theme/templates/inc/language-switch.html.j2 b/theme/templates/inc/language-switch.html.j2
index 49cdd3bbd142b7c641a8aaef3d8534423006f2ca..3625ea05581d92b3776f74b5d4c975dba3e134f4 100644
--- a/theme/templates/inc/language-switch.html.j2
+++ b/theme/templates/inc/language-switch.html.j2
@@ -1,31 +1,29 @@
 <div class="language-switch">
   <style>
-    div.language-switch {
-        display: inline-block;
-        position: relative;
-        float: left;
-    }
+      div.language-switch {
+          display: inline-block;
+          position: relative;
+          float: left;
+      }
 
-    select {
-        background-color: transparent !important;
-        color: var(--fw-bg-color) !important;
-        border: 1px solid var(--fw-bg-color);
-        font-family: Lato, sans-serif;
-        font-weight: 900;
-        font-size: .875em;
-        line-height: 1em;
-        padding: .6428571429em;
-        border-radius: var(--fw-border-radius);
-    }
+      select {
+          background-color: transparent !important;
+          color: var(--fw-bg-color) !important;
+          border: 1px solid var(--fw-bg-color);
+          font-family: Lato, sans-serif;
+          font-weight: 900;
+          font-size: .875em;
+          line-height: 1em;
+          padding: .6428571429em;
+          border-radius: var(--fw-border-radius);
+      }
   </style>
   {% if lang_siteurls %}
     <label hidden for="language-selector">{% trans %}Choose your language{% endtrans %}</label>
     <select id="language-selector" onchange="location = this.value;">
       {% for lang, url in lang_siteurls.items() %}
         <option value="{{ url }}/{{ output_file }}"
-                {% if lang == DEFAULT_LANG %}selected{% endif %}>
-          {{ lang | lang_name }}
-        </option>
+                {% if lang == DEFAULT_LANG %}selected{% endif %}>{{ lang | lang_name }}</option>
       {% endfor %}
     </select>
   {% endif %}
diff --git a/theme/templates/inc/menu.html.j2 b/theme/templates/inc/menu.html.j2
index dd116ee87e4408fa6ce79d5ad9d298a70fd6f288..c8d266e40a6c3f9b5aadad797d9048f917cd0f14 100644
--- a/theme/templates/inc/menu.html.j2
+++ b/theme/templates/inc/menu.html.j2
@@ -1,80 +1,80 @@
 {% block header %}
   <style>
-    .navbar {
-        height: 64px;
-        width: 100%;
-        display: flex;
-        justify-content: space-between;
-        padding: 12px 50px;
-        box-sizing: border-box;
-    }
+      .navbar {
+          height: 64px;
+          width: 100%;
+          display: flex;
+          justify-content: space-between;
+          padding: 12px 50px;
+          box-sizing: border-box;
+      }
 
-    .navbar-burger {
-        display: none;
-        border: none;
-        background: transparent;
-    }
+      .navbar-burger {
+          display: none;
+          border: none;
+          background: transparent;
+      }
 
-    .navbar .logo img {
-        height: 100%;
-        width: 233px;
-    }
+      .navbar .logo img {
+          height: 100%;
+          width: 233px;
+      }
 
-    .navbar a {
-        text-decoration: none;
-        text-align: center;
-    }
+      .navbar a {
+          text-decoration: none;
+          text-align: center;
+      }
 
-    .navbar a:not(.button) {
-        color: #000 !important;
-    }
+      .navbar a:not(.button) {
+          color: #000 !important;
+      }
 
-    .navbar ul {
-        list-style: none;
-        margin: 0;
-        padding: 0;
-    }
+      .navbar ul {
+          list-style: none;
+          margin: 0;
+          padding: 0;
+      }
 
-    .navbar ul li {
-        display: inline;
-        padding-left: 50px;
-        text-align: center;
-    }
+      .navbar ul li {
+          display: inline;
+          padding-left: 50px;
+          text-align: center;
+      }
 
-    @media only screen and (max-width: 1024px) {
-        #navbar-main {
-            display: none;
-        }
+      @media only screen and (max-width: 1024px) {
+          #navbar-main {
+              display: none;
+          }
 
-        .navbar-burger {
-            display: block;
-            position: absolute;
-            top: 22px;
-            left: 22px;
-        }
+          .navbar-burger {
+              display: block;
+              position: absolute;
+              top: 22px;
+              left: 22px;
+          }
 
-        .navbar {
-            flex-direction: column;
-            justify-content: space-around;
-            height: auto;
-        }
+          .navbar {
+              flex-direction: column;
+              justify-content: space-around;
+              height: auto;
+          }
 
-        .navbar ul {
-            border-bottom: 1px solid var(--fw-blue-100);
-        }
+          .navbar ul {
+              border-bottom: 1px solid var(--fw-blue-100);
+          }
 
-        .navbar ul li {
-            display: block;
-            padding: 10px 0;
-        }
-    }
+          .navbar ul li {
+              display: block;
+              padding: 10px 0;
+          }
+      }
 
-    @media only screen and (min-width: 1600px) {
-        nav.navbar {
-            padding-left: 0;
-            padding-right: 0;
-        }
-    }
+      @media only screen and (min-width: 1600px) {
+          nav.navbar {
+              padding-left: 0;
+              padding-right: 0;
+          }
+      }
   </style>
 {% endblock header %}
 <div class="background-wrapper">
@@ -83,7 +83,7 @@
        aria-label="{% trans %}main navigation{% endtrans %}">
     <a class="logo" href="{{ SITEURL }}/">
       <img alt="{% trans %}The Funkwhale logo{% endtrans %}"
-           src="{{ main_siteurl }}/theme/images/logo.svg"/>
+           src="{{ main_siteurl }}/theme/images/logo.svg" />
     </a>
     <button role="button"
             class="navbar-burger"
diff --git a/theme/templates/inc/support-us.html.j2 b/theme/templates/inc/support-us.html.j2
index f3b1ecbc69978bb5886d9b907cf92ff97e6f98c9..63081e1a552b93389519a356b70cfe5d30ce9849 100644
--- a/theme/templates/inc/support-us.html.j2
+++ b/theme/templates/inc/support-us.html.j2
@@ -1,31 +1,31 @@
 <div class="support-us">
   <style scoped>
-    .support-us {
-        background-color: var(--fw-gray-700);
-        color: #fff;
-        padding: 50px 0;
-    }
+      .support-us {
+          background-color: var(--fw-gray-700);
+          color: #fff;
+          padding: 50px 0;
+      }
 
-    .support-us .content.container {
-        margin: 5vw 5vh;
-    }
+      .support-us .content.container {
+          margin: 5vw 5vh;
+      }
 
-    .level {
-        display: flex;
-        justify-content: space-between;
-    }
+      .level {
+          display: flex;
+          justify-content: space-between;
+      }
 
-    .funkwhale.button {
-        flex-grow: 1;
-    }
+      .funkwhale.button {
+          flex-grow: 1;
+      }
 
-    @media screen and (min-width: 1024px) {
-        .support-us .content.container {
-            margin: auto;
-            text-align: center;
-            width: 60%;
-        }
-    }
+      @media screen and (min-width: 1024px) {
+          .support-us .content.container {
+              margin: auto;
+              text-align: center;
+              width: 60%;
+          }
+      }
   </style>
   <div class="background-wrapper">
     <div class="block">
diff --git a/theme/templates/inc/target_groups.html.j2 b/theme/templates/inc/target_groups.html.j2
index c61dcf04e57bf21a76e9746b7127370009beca39..22e55d56dc6e33a2b7298d63b71bb6fb10b9371f 100644
--- a/theme/templates/inc/target_groups.html.j2
+++ b/theme/templates/inc/target_groups.html.j2
@@ -1,29 +1,29 @@
 <section class="target-group">
   <style>
-    section.target-group {
-        padding: 50px 0px;
-        background-color: var(--fw-beige-100);
-    }
+      section.target-group {
+          padding: 50px 0px;
+          background-color: var(--fw-beige-100);
+      }
 
-    div.target-group {
-        display: flex;
-        flex-shrink: 0;
-        flex-wrap: wrap;
-        gap: 30px;
-        justify-content: space-around;
-    }
+      div.target-group {
+          display: flex;
+          flex-shrink: 0;
+          flex-wrap: wrap;
+          gap: 30px;
+          justify-content: space-around;
+      }
 
-    .target-group .funkwhale.card {
-        text-align: center;
-        background-color: #fff;
-    }
+      .target-group .funkwhale.card {
+          text-align: center;
+          background-color: #fff;
+      }
   </style>
   <div class="background-wrapper">
     <div class="target-group">
       <div class="funkwhale card slider-item" data-position="1">
         <img alt=""
              class="icon"
-             src="{{ main_siteurl }}/theme/images/benefits-music.svg"/>
+             src="{{ main_siteurl }}/theme/images/benefits-music.svg" />
         <h2 class="title">{% trans %}For music lovers{% endtrans %}</h2>
         <p>
           {% trans %}Access your personal music collection from anywhere. Funkwhale supports advanced sharing features to promote Freely licensed content.{% endtrans %}
@@ -32,7 +32,7 @@
       <div class="funkwhale card slider-item" data-position="2">
         <img alt=""
              class="icon"
-             src="{{ main_siteurl }}/theme/images/benefits-federated.svg"/>
+             src="{{ main_siteurl }}/theme/images/benefits-federated.svg" />
         <h2 class="title">{% trans %}For artists and podcasters{% endtrans %}</h2>
         <p>
           {% trans %}Publish your music and podcasts on Funkwhale. Let people follow your releases or subscribe to your podcast in their favorite podcatcher.{% endtrans %}
@@ -41,7 +41,7 @@
       <div class="funkwhale card slider-item" data-position="3">
         <img alt=""
              class="icon"
-             src="{{ main_siteurl }}/theme/images/benefits-creators.svg"/>
+             src="{{ main_siteurl }}/theme/images/benefits-creators.svg" />
         <h2 class="title">{% trans %}Decentralized & Federated{% endtrans %}</h2>
         <p>
           {% trans %}Content can be shared across instances, or moderated to restrict bad actors. The network is not tied to any corporation or entity, so you have total independence.{% endtrans %}
@@ -50,7 +50,7 @@
       <div class="funkwhale card slider-item" data-position="4">
         <img alt=""
              class="icon"
-             src="{{ main_siteurl }}/theme/images/benefits-community.svg"/>
+             src="{{ main_siteurl }}/theme/images/benefits-community.svg" />
         <h2 class="title">{% trans %}Community-driven{% endtrans %}</h2>
         <p>
           {% trans %}Free software build by the community using standard protocols and open-source technology. No third-party analytics. No tracking. No ads. You are in control.{% endtrans %}
diff --git a/theme/templates/join.html.j2 b/theme/templates/join.html.j2
index c98fbab03bdbdfc019a6feb3c5bc1ac9838c332c..6d2fcb15f05013d789e3270014b562f60db56169 100644
--- a/theme/templates/join.html.j2
+++ b/theme/templates/join.html.j2
@@ -2,53 +2,53 @@
 {% block content %}
   <article class="instances">
     <style scoped>
-      .hero {
-          background-color: var(--fw-beige-100);
-      }
+        .hero {
+            background-color: var(--fw-beige-100);
+        }
 
-      .headings {
-          text-align: center;
-      }
+        .headings {
+            text-align: center;
+        }
 
-      .headings h2 {
-          font-size: 24px;
-      }
+        .headings h2 {
+            font-size: 24px;
+        }
 
-      .cards {
-          margin: 50px auto;
-          max-width: 1024px;
-          display: flex;
-          flex-wrap: wrap;
-          gap: 30px;
-          justify-content: center;
-      }
+        .cards {
+            margin: 50px auto;
+            max-width: 1024px;
+            display: flex;
+            flex-wrap: wrap;
+            gap: 30px;
+            justify-content: center;
+        }
 
-      input[type="radio"] {
-          position: absolute;
-          left: -9999px;
-      }
+        input[type="radio"] {
+            position: absolute;
+            left: -9999px;
+        }
 
-      .filters {
-          text-align: center;
-          margin-bottom: 2rem;
-      }
+        .filters {
+            text-align: center;
+            margin-bottom: 2rem;
+        }
 
-      .filters * {
-          display: inline-block;
-      }
+        .filters * {
+            display: inline-block;
+        }
 
-      ol.filters {
-          padding-inline-start: 0;
-      }
+        ol.filters {
+            padding-inline-start: 0;
+        }
 
-      [value="all"]:checked~.cards [data-category] {
-          display: block;
-      }
+        [value="all"]:checked~.cards [data-category] {
+            display: block;
+        }
 
-      [value="open"]:checked~.cards .card:not([data-category~="open"]),
-      [value="closed"]:checked~.cards .card:not([data-category~="closed"]) {
-          display: none;
-      }
+        [value="open"]:checked~.cards .card:not([data-category~="open"]),
+        [value="closed"]:checked~.cards .card:not([data-category~="closed"]) {
+            display: none;
+        }
     </style>
     <div class="hero">
       <div class="hero-box">
diff --git a/theme/templates/logos.html.j2 b/theme/templates/logos.html.j2
index be58543dc810da061154484fce20cb45d3b0ee60..ba5b611984f0bcca07c239f08687e5dc6e53ec8a 100644
--- a/theme/templates/logos.html.j2
+++ b/theme/templates/logos.html.j2
@@ -2,19 +2,19 @@
 {% block content %}
   <section class="logos">
     <style scoped>
-      section.logos {
-          max-width: 800px;
-          margin: auto;
-      }
+        section.logos {
+            max-width: 800px;
+            margin: auto;
+        }
 
-      .dos li,
-      .donts li {
-          display: block !important;
-      }
+        .dos li,
+        .donts li {
+            display: block !important;
+        }
 
-      img {
-          max-width: 300px;
-      }
+        img {
+            max-width: 300px;
+        }
     </style>
     <div>
       <h1>{% trans %}Logos and identity guidelines{% endtrans %}</h1>
@@ -62,7 +62,7 @@
       <h3>{% trans %}Funkwhale icon and text{% endtrans %}</h3>
       <p>{% trans %}Our full logo used in our apps and sites, designed by Francis Gading.{% endtrans %}</p>
       <img alt="{% trans %}The Funkwhale logo is shown: There are three blue semicircles open to the top where a black flipper is visible just like a wish would jump into the water. On the right there is the word Funkwhale.{% endtrans %}"
-           src="{{ main_siteurl }}/theme/images/logo.svg"/>
+           src="{{ main_siteurl }}/theme/images/logo.svg" />
     </a>
     <p>
       <a href="{{ main_siteurl }}/theme/images/logo.svg"><i class="fa fa-download" aria-hidden="true"></i> {% trans %}Download{% endtrans %}</a>
@@ -70,7 +70,7 @@
     <hr />
     <h3>{% trans %}Funkwhale icon{% endtrans %}</h3>
     <img alt="{% trans %}The Funkwhale logo is shown: There are three blue semicircles open to the top where a black flipper is visible just like a wish would jump into the water. On the right there is the word Funkwhale.{% endtrans %}"
-         src="{{ main_siteurl }}/theme/images/icon.svg"/>
+         src="{{ main_siteurl }}/theme/images/icon.svg" />
   </a>
   <p>
     <a href="{{ main_siteurl }}/theme/images/icon.svg"><i class="fa fa-download" aria-hidden="true"></i> {% trans %}Download{% endtrans %}</a>
@@ -78,7 +78,7 @@
   <hr />
   <h3>{% trans %}Funkwhale icon (alternate){% endtrans %}</h3>
   <img alt="{% trans %}The Funkwhale logo is shown: There are three blue semicircles open to the top where a black flipper is visible just like a wish would jump into the water. On the right there is the word Funkwhale.{% endtrans %}"
-       src="{{ main_siteurl }}/theme/images/logo-white-bg.svg"/>
+       src="{{ main_siteurl }}/theme/images/logo-white-bg.svg" />
 </a>
 <p>
   <a href="{{ main_siteurl }}/theme/images/logo-white-bg.svg"><i class="fa fa-download" aria-hidden="true"></i> {% trans %}Download{% endtrans %}</a>
@@ -86,7 +86,7 @@
 <hr />
 <h3>{% trans %}Funkwhale icon (monochrome){% endtrans %}</h3>
 <img alt="{% trans %}The Funkwhale logo is shown: There are three blue semicircles open to the top where a black flipper is visible just like a wish would jump into the water. On the right there is the word Funkwhale.{% endtrans %}"
-     src="{{ main_siteurl }}/theme/images/icon-monochrome.svg"/>
+     src="{{ main_siteurl }}/theme/images/icon-monochrome.svg" />
 </a>
 <p>
   <a href="{{ main_siteurl }}/theme/images/icon-monochrome.svg"><i class="fa fa-download" aria-hidden="true"></i> {% trans %}Download{% endtrans %}</a>
diff --git a/theme/templates/page.html.j2 b/theme/templates/page.html.j2
index c35a89207fec339692de5d82eea42aa842e9639d..e0cd6cd909342ab6b2e32a5caf45816afe225866 100644
--- a/theme/templates/page.html.j2
+++ b/theme/templates/page.html.j2
@@ -2,15 +2,15 @@
 {% block content %}
   <article class="article {{ page.slug }}">
     <style scoped>
-      article {
-          max-width: 800px;
-          margin: auto;
-      }
+        article {
+            max-width: 800px;
+            margin: auto;
+        }
 
-      .content ul {
-          list-style-type: initial !important;
-          padding-left: 15px !important;
-      }
+        .content ul {
+            list-style-type: initial !important;
+            padding-left: 15px !important;
+        }
     </style>
     <section class="content">
       {{ page.content }}