diff --git a/.docker/web/Dockerfile b/.docker/web/Dockerfile index 3c1f48131..92579dc58 100644 --- a/.docker/web/Dockerfile +++ b/.docker/web/Dockerfile @@ -1,13 +1,18 @@ FROM python:3.13-trixie ENV PYTHONUNBUFFERED=1 +# Install the workspace into the system environment (instead of a .venv inside +# the bind-mounted /code) so `uv run` is fast and doesn't pollute the host tree. +ENV UV_PROJECT_ENVIRONMENT=/usr/local + +# uv ships as a standalone binary in this image +COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ COPY entrypoint.sh / WORKDIR /code RUN apt update && \ - apt install -y postgresql-client-17 && \ - python -m pip install pipenv + apt install -y postgresql-client-17 ENTRYPOINT ["/entrypoint.sh"] diff --git a/.docker/web/entrypoint.sh b/.docker/web/entrypoint.sh index 69908c738..cf3a05341 100755 --- a/.docker/web/entrypoint.sh +++ b/.docker/web/entrypoint.sh @@ -3,7 +3,7 @@ source .env # Install or update dependencies on every start in case something changed -pipenv install --dev +uv sync # Some users prefer to develop on their host rather than containers and have adjusted .env if [ $POSTGRES_HOST == "localhost" ]; then @@ -17,22 +17,22 @@ until pg_isready -h "$POSTGRES_HOST" -U "$POSTGRES_USER" &> /dev/null; do done # Apply pending migrations on every start -pipenv run python -m serveradmin migrate --no-input +uv run python -m serveradmin migrate --no-input # Requires Django >= 3.x -# pipenv run python -m serveradmin createsuper --no-input -pipenv run python -m serveradmin createdefaultuser +# uv run python -m serveradmin createsuper --no-input +uv run python -m serveradmin createdefaultuser # Create default application -pipenv run python -m serveradmin createapp --non-interactive +uv run python -m serveradmin createapp --non-interactive echo -e " ******************************************************************************** \e[32m[TIPS]\e[39m - Run 'docker compose exec web /bin/bash' to access web service -- Run 'pipenv run python -m serveradmin -h' in web service to access django commands -- Run 'pipenv run python -m adminapi example.com' in web service to make adminapi queries +- Run 'uv run python -m serveradmin -h' in web service to access django commands +- Run 'uv run python -m adminapi example.com' in web service to make adminapi queries \e[33mAccess serveradmin from your browser via:\e[39m - URL: http://127.0.0.1:8000 @@ -43,4 +43,4 @@ echo -e " " # Start development server reachable for host machine -pipenv run python -m serveradmin runserver 0.0.0.0:8000 \ No newline at end of file +uv run python -m serveradmin runserver 0.0.0.0:8000 \ No newline at end of file diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 44dfb755b..419dac1c0 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,8 +14,8 @@ jobs: strategy: matrix: python: - - "3.9" - - "3.13" + - "3.11" # Debian Bookworm + - "3.13" # Debian Trixie services: db: @@ -33,18 +33,13 @@ jobs: --health-retries 5 steps: - - name: Setup python - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python }} - name: Check out code - uses: actions/checkout@v2 + uses: actions/checkout@v4 + - name: Install uv + uses: astral-sh/setup-uv@v5 - name: Prepare run: | - pip install --upgrade pip - pip install pipenv - pipenv lock --python ${{ matrix.python }} - pipenv install --dev --python ${{ matrix.python }} + uv sync --python ${{ matrix.python }} echo "DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', @@ -61,14 +56,14 @@ jobs: } SECRET_KEY = 'TEST' TIME_ZONE = 'Europe/Berlin' - LOGGING = {}" > serveradmin/local_settings.py - cat serveradmin/local_settings.py - pipenv run python -m serveradmin migrate + LOGGING = {}" > packages/serveradmin/serveradmin/local_settings.py + cat packages/serveradmin/serveradmin/local_settings.py + uv run python -m serveradmin migrate - name: Tests run: | # This will use Python's standard unit test discovery feature. - pipenv run python -m unittest discover adminapi -v - pipenv run python -Wall -m serveradmin test --noinput --parallel=1 + uv run python -m unittest discover -t packages/adminapi -s packages/adminapi/adminapi -v + uv run python -Wall -m serveradmin test serveradmin --noinput --parallel=1 # Build sphinx docs, error on warning cd docs - SPHINXBUILD='pipenv run sphinx-build' SPHINXOPTS='-W' make html + SPHINXBUILD='uv run --group docs sphinx-build' SPHINXOPTS='-W' make html diff --git a/.gitignore b/.gitignore index 8964fb350..5a59b1048 100644 --- a/.gitignore +++ b/.gitignore @@ -76,6 +76,7 @@ __pycache__/ # Virtual Environment /venv/ +/.venv/ /.env # Pipenv diff --git a/.python-version b/.python-version new file mode 100644 index 000000000..24ee5b1be --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.13 diff --git a/.readthedocs.yml b/.readthedocs.yml index e998d76b4..76b29aff5 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -4,20 +4,13 @@ version: 2 -# Set the version of Python and other tools you might need +# Build the docs with uv so the same workspace + docs dependency group used +# everywhere else also drives the Read the Docs build. build: os: ubuntu-24.04 tools: python: "3.12" - -# Build documentation in the docs/ directory with Sphinx -sphinx: - configuration: docs/source/conf.py - -# Optionally build your docs in additional formats such as PDF and ePub -formats: all - -# Optionally set the version of Python and requirements required to build your docs -python: - install: - - requirements: docs/requirements.txt + commands: + - python -m pip install uv + - uv sync --group docs + - uv run sphinx-build -W -b html docs/source $READTHEDOCS_OUTPUT/html diff --git a/Pipfile b/Pipfile deleted file mode 100644 index 68a0f634f..000000000 --- a/Pipfile +++ /dev/null @@ -1,50 +0,0 @@ -[[source]] -url = "https://pypi.org/simple" -verify_ssl = true -name = "pypi" - -[packages] -# Most of the dependencies in here are for serveradmin and not actually -# required for adminapi. -# Adminapi: -# Like ipaddress but for MACs -netaddr = ">=0.8.0,<1.4.0" -# Debian stretch version -Django = "~=4.2" -# postgres lib used by django -psycopg2-binary = "~=2.9" -# Django support for network address fields on PostgreSQL -django-netfields = "<2.0.0" -# Required to generate sprites from Graphite -Pillow = "~=10.0" -# Required to parse human-readable string like "a day ago" to a datetime -dateparser = "~=1.1" -# Use Twelve-factor methodology to configure environment variables -django-environ = "<1.0.0" -django_compressor = "~=4.4" -# Used for API access - adminapi -paramiko = ">=2.7,<4" -typing-extensions = "*" - -[dev-packages] -# Used to build the sphinx docs -sphinx = "~=7.0" -sphinx-rtd-theme = "~=2.0" -# Provides runserver_plus and other gadgets -django-extensions = "<4.0.0" -# Required for runserver_plus to work -Werkzeug = "<4.0.0" -# Used to package a single executable according to PEP 441 -pex = "<3.0.0" -# Pex complains without requests -requests = "<3.0.0" -setuptools = "*" -# Generate fake data for tests -faker = "<14.0.0" -tblib = "*" - -[requires] -python_version = "3.13" - -[production] -sentry-sdk = {version = "*", extras = ["django"]} diff --git a/Pipfile.lock b/Pipfile.lock deleted file mode 100644 index ba58b64f2..000000000 --- a/Pipfile.lock +++ /dev/null @@ -1,1383 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "297b68e4c14970acaa4c8a70e0a3ad3ec307d8c5d2db917815832722b620987f" - }, - "pipfile-spec": 6, - "requires": { - "python_version": "3.13" - }, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "asgiref": { - "hashes": [ - "sha256:5f184dc43b7e763efe848065441eac62229c9f7b0475f41f80e207a114eda4ce", - "sha256:e8667a091e69529631969fd45dc268fa79b99c92c5fcdda727757e52146ec133" - ], - "markers": "python_version >= '3.9'", - "version": "==3.11.1" - }, - "bcrypt": { - "hashes": [ - "sha256:046ad6db88edb3c5ece4369af997938fb1c19d6a699b9c1b27b0db432faae4c4", - "sha256:0c418ca99fd47e9c59a301744d63328f17798b5947b0f791e9af3c1c499c2d0a", - "sha256:0c8e093ea2532601a6f686edbc2c6b2ec24131ff5c52f7610dd64fa4553b5464", - "sha256:0cae4cb350934dfd74c020525eeae0a5f79257e8a201c0c176f4b84fdbf2a4b4", - "sha256:137c5156524328a24b9fac1cb5db0ba618bc97d11970b39184c1d87dc4bf1746", - "sha256:200af71bc25f22006f4069060c88ed36f8aa4ff7f53e67ff04d2ab3f1e79a5b2", - "sha256:212139484ab3207b1f0c00633d3be92fef3c5f0af17cad155679d03ff2ee1e41", - "sha256:2b732e7d388fa22d48920baa267ba5d97cca38070b69c0e2d37087b381c681fd", - "sha256:35a77ec55b541e5e583eb3436ffbbf53b0ffa1fa16ca6782279daf95d146dcd9", - "sha256:38cac74101777a6a7d3b3e3cfefa57089b5ada650dce2baf0cbdd9d65db22a9e", - "sha256:3abeb543874b2c0524ff40c57a4e14e5d3a66ff33fb423529c88f180fd756538", - "sha256:3ca8a166b1140436e058298a34d88032ab62f15aae1c598580333dc21d27ef10", - "sha256:3cf67a804fc66fc217e6914a5635000259fbbbb12e78a99488e4d5ba445a71eb", - "sha256:4870a52610537037adb382444fefd3706d96d663ac44cbb2f37e3919dca3d7ef", - "sha256:48f753100931605686f74e27a7b49238122aa761a9aefe9373265b8b7aa43ea4", - "sha256:4bfd2a34de661f34d0bda43c3e4e79df586e4716ef401fe31ea39d69d581ef23", - "sha256:560ddb6ec730386e7b3b26b8b4c88197aaed924430e7b74666a586ac997249ef", - "sha256:5b1589f4839a0899c146e8892efe320c0fa096568abd9b95593efac50a87cb75", - "sha256:5feebf85a9cefda32966d8171f5db7e3ba964b77fdfe31919622256f80f9cf42", - "sha256:611f0a17aa4a25a69362dcc299fda5c8a3d4f160e2abb3831041feb77393a14a", - "sha256:61afc381250c3182d9078551e3ac3a41da14154fbff647ddf52a769f588c4172", - "sha256:64d7ce196203e468c457c37ec22390f1a61c85c6f0b8160fd752940ccfb3a683", - "sha256:64ee8434b0da054d830fa8e89e1c8bf30061d539044a39524ff7dec90481e5c2", - "sha256:6b8f520b61e8781efee73cba14e3e8c9556ccfb375623f4f97429544734545b4", - "sha256:741449132f64b3524e95cd30e5cd3343006ce146088f074f31ab26b94e6c75ba", - "sha256:744d3c6b164caa658adcb72cb8cc9ad9b4b75c7db507ab4bc2480474a51989da", - "sha256:79cfa161eda8d2ddf29acad370356b47f02387153b11d46042e93a0a95127493", - "sha256:7aeef54b60ceddb6f30ee3db090351ecf0d40ec6e2abf41430997407a46d2254", - "sha256:7edda91d5ab52b15636d9c30da87d2cc84f426c72b9dba7a9b4fe142ba11f534", - "sha256:7f277a4b3390ab4bebe597800a90da0edae882c6196d3038a73adf446c4f969f", - "sha256:7f4c94dec1b5ab5d522750cb059bb9409ea8872d4494fd152b53cca99f1ddd8c", - "sha256:801cad5ccb6b87d1b430f183269b94c24f248dddbbc5c1f78b6ed231743e001c", - "sha256:83e787d7a84dbbfba6f250dd7a5efd689e935f03dd83b0f919d39349e1f23f83", - "sha256:89042e61b5e808b67daf24a434d89bab164d4de1746b37a8d173b6b14f3db9ff", - "sha256:92864f54fb48b4c718fc92a32825d0e42265a627f956bc0361fe869f1adc3e7d", - "sha256:9d52ed507c2488eddd6a95bccee4e808d3234fa78dd370e24bac65a21212b861", - "sha256:9fffdb387abe6aa775af36ef16f55e318dcda4194ddbf82007a6f21da29de8f5", - "sha256:a28bc05039bdf3289d757f49d616ab3efe8cf40d8e8001ccdd621cd4f98f4fc9", - "sha256:a5393eae5722bcef046a990b84dff02b954904c36a194f6cfc817d7dca6c6f0b", - "sha256:a71f70ee269671460b37a449f5ff26982a6f2ba493b3eabdd687b4bf35f875ac", - "sha256:b17366316c654e1ad0306a6858e189fc835eca39f7eb2cafd6aaca8ce0c40a2e", - "sha256:baade0a5657654c2984468efb7d6c110db87ea63ef5a4b54732e7e337253e44f", - "sha256:c2388ca94ffee269b6038d48747f4ce8df0ffbea43f31abfa18ac72f0218effb", - "sha256:c58b56cdfb03202b3bcc9fd8daee8e8e9b6d7e3163aa97c631dfcfcc24d36c86", - "sha256:cde08734f12c6a4e28dc6755cd11d3bdfea608d93d958fffbe95a7026ebe4980", - "sha256:d79e5c65dcc9af213594d6f7f1fa2c98ad3fc10431e7aa53c176b441943efbdd", - "sha256:d8d65b564ec849643d9f7ea05c6d9f0cd7ca23bdd4ac0c2dbef1104ab504543d", - "sha256:db99dca3b1fdc3db87d7c57eac0c82281242d1eabf19dcb8a6b10eb29a2e72d1", - "sha256:dcd58e2b3a908b5ecc9b9df2f0085592506ac2d5110786018ee5e160f28e0911", - "sha256:dd19cf5184a90c873009244586396a6a884d591a5323f0e8a5922560718d4993", - "sha256:ddb4e1500f6efdd402218ffe34d040a1196c072e07929b9820f363a1fd1f4191", - "sha256:e3cf5b2560c7b5a142286f69bde914494b6d8f901aaa71e453078388a50881c4", - "sha256:ed2e1365e31fc73f1825fa830f1c8f8917ca1b3ca6185773b349c20fd606cec2", - "sha256:edfcdcedd0d0f05850c52ba3127b1fce70b9f89e0fe5ff16517df7e81fa3cbb8", - "sha256:f0ce778135f60799d89c9693b9b398819d15f1921ba15fe719acb3178215a7db", - "sha256:f2347d3534e76bf50bca5500989d6c1d05ed64b440408057a37673282c654927", - "sha256:f3c08197f3039bec79cee59a606d62b96b16669cff3949f21e74796b6e3cd2be", - "sha256:f632fd56fc4e61564f78b46a2269153122db34988e78b6be8b32d28507b7eaeb", - "sha256:f6984a24db30548fd39a44360532898c33528b74aedf81c26cf29c51ee47057e", - "sha256:f70aadb7a809305226daedf75d90379c397b094755a710d7014b8b117df1ebbf", - "sha256:f748f7c2d6fd375cc93d3fba7ef4a9e3a092421b8dbf34d8d4dc06be9492dfdd", - "sha256:f8429e1c410b4073944f03bd778a9e066e7fad723564a52ff91841d278dfc822", - "sha256:fc746432b951e92b58317af8e0ca746efe93e66555f1b40888865ef5bf56446b" - ], - "markers": "python_version >= '3.8'", - "version": "==5.0.0" - }, - "cffi": { - "hashes": [ - "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", - "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", - "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", - "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", - "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", - "sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2", - "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", - "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", - "sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65", - "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", - "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", - "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", - "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", - "sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a", - "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", - "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", - "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", - "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", - "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", - "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", - "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", - "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", - "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", - "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", - "sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165", - "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", - "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", - "sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c", - "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", - "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", - "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", - "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", - "sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63", - "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", - "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", - "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", - "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", - "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", - "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", - "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", - "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", - "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", - "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", - "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", - "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", - "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", - "sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322", - "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", - "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", - "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", - "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", - "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", - "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", - "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", - "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", - "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", - "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", - "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", - "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", - "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", - "sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9", - "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", - "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", - "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", - "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", - "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", - "sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f", - "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", - "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", - "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", - "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", - "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", - "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", - "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", - "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", - "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", - "sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7", - "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", - "sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534", - "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", - "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", - "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", - "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", - "sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf" - ], - "markers": "python_version >= '3.9'", - "version": "==2.0.0" - }, - "cryptography": { - "hashes": [ - "sha256:026ac7423e6fa66872d3bf889be5974507da3944f866f704fa200eadacd00001", - "sha256:07cab27cc7b7e0fd28e5e26bb9eeedde5c135c868b46de4a27845abe94af6122", - "sha256:084ef1af862eb07ec46d25f68689f2102a9fc0e05ce7b80f14f5fe51e4eef0f6", - "sha256:0b82e28ee398a386f0807bba7884d30f25218855690f45115831bcce5d90822c", - "sha256:0e959b578856a3924bc0cbb710fc12c387b9412a951389f3ca61704a9e25f325", - "sha256:0f21641cf4b30fca7aee061ced0ec7ad7b073518088b7c9969a297c0ae796c69", - "sha256:196ecd6a36e4e9aa10270393bb98d8df88fccee0bf1e5128b91ae4eb4375896d", - "sha256:2400ef9c9e2299a25614eb1dea3db54a69b1349efd043bfac9c67630d136df36", - "sha256:28d8b15e6275f12c8a207dc309dfa957903c927d08d0cc937ee3f63f200693cc", - "sha256:2afe9051da7ae7bd5905da5a949280c7d2bb75682e188f650a9d0f2756b834c6", - "sha256:2eda353d8a27bcbcaa4cbed18994a74ab4d19a2ca897db188ea269ab9b71419b", - "sha256:32703d93296f5c1f4b53349ad3a250c2cae0fdecd3a3dd5d47e616d8d616af27", - "sha256:33cd0565932807baddb67b96dbee92f2c374b5c89dee09fd74079aeb8c8dba61", - "sha256:35b151772baff2c74cba7fa290ceaff4c3b11c0c881eb93eb5dbc05a7cfbba18", - "sha256:36d1709f992593689b45bda411498d62c6e365f2ca00b84657d4dadd24de16db", - "sha256:42b0684e0e40cf26122427802486f6d93aea593612603a94fbf260c7eb1e9c1b", - "sha256:4ae387c9cb68ea569ca17e490d66d8142b81c3cc814bf179974b7d146e490bbb", - "sha256:53ecee2e23f7169b6117e99fc8a944e5e50f79e69758a83b52a00cb98ab2b2d2", - "sha256:66ec79c3904820572d7e987abdf304281f141d37ad9a489b8e97066e7b9b6459", - "sha256:67e1d20ad9ef3a563c59ef22e7a8a0b8210bd26604369ea4a30a7c66aefe504e", - "sha256:6f2debedf9ca60cf1d5bd466475638af5130f89965605cd818484d19987d3a21", - "sha256:6fc361c34fb6aac015ce19435876635e5c6d21db31998b0920f675f131e043b8", - "sha256:73a205dce83953d131a4aa1e0fd917a2fd1c5b1eef251e9d7152efefcbf5caf7", - "sha256:7abcee80084cda3f7691f3eb1ce480d8df49cec637b429aa35986c1de71738aa", - "sha256:8c25ceb16df5b9435f3f6a9829204985b0e0cbee3b48aacd432c7d2c850b44d9", - "sha256:966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db", - "sha256:9e82dcc8e56052715fb18b2429e3bca4823b1629136a2084fc45a9a5cecb9b64", - "sha256:b20133d204d2bb56ba047642199603876c872026ca53e79c35b83772ab2cc505", - "sha256:b39efa323140595abd3ecca8529d321ae50f55f3aa3ba9cc81ea56a6011953d5", - "sha256:b47db11c2c3525083296069b98ac5221907455e989ae0c2e3008bde851921615", - "sha256:b87e65d263b3e5d3bb92a57e2a6638e2f31110fa7aa890c7b2dbba42248d0a3f", - "sha256:b970c6da94d5bb18629db453d14f2a1300f6bf59b61e9b82377931ef95504866", - "sha256:be9fcb48a55f023493482827d4f459bd263cc20efde64f204b97c123201850c6", - "sha256:c2bc30226390d60ea19d9f82b19db005fe0452154a23c1c410c12ea801e43561", - "sha256:c83782480a4a9da4d0feb51950131ba32e12e70813848b3343f6e18c28a66838", - "sha256:cbc77da8c523d5abd028635ba850a6966fcee2c82e2bf65a41d1d8afe0f98be9", - "sha256:ccac2bfebc306b862133e3bb71f3f6ee8bb525240089b2d952e4144b3a6d5da7", - "sha256:d0527ce944105f257f605a827d6ebead966c752038b6e8656abb9c5edee6fc68", - "sha256:d8ecde755e2e91bf773fc94e8c9d730cd7f2007004cb492263a794ec3899a1c8", - "sha256:e3fb64c420688e5319ae25113a354015abbd8dffbfbc41781a1ea66fc7622ac3", - "sha256:e5dfc1e64de5677cec922ffa8da89c546d0415bf6efdf081842e5d44c84e1f0e", - "sha256:ec5e529fb80935c94fe7b729f9972b50e351a0e6b50aa294fd5cabb109fcc29a", - "sha256:f37d847238971164fdbc68ade6f6574aecc9c0af714190e2083429ff68f4ce9d", - "sha256:f78ff2c9ed8dc2d036b0f4d640e22522213d047c1b14e61205a7e55c80a494d4", - "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493", - "sha256:fc1e275c2f1d97b1a6450b8b0ea3ebfa6e087a611c2b26cb2404d48588abab7b" - ], - "markers": "python_version >= '3.9' and python_full_version not in '3.9.0, 3.9.1'", - "version": "==49.0.0" - }, - "dateparser": { - "hashes": [ - "sha256:f25d4e051a84be27a35bd297e3e1dc59ff78373701b89be352ba80372d22d0d0", - "sha256:f265df13c0380e2e07543ba74b67c0681aaa1096981ffcd35227e1aa0cb81c7c" - ], - "index": "pypi", - "markers": "python_version >= '3.10'", - "version": "==1.4.1" - }, - "django": { - "hashes": [ - "sha256:4d07aaf1c62f9984842b67c2874ebbf7056a17be253860299b93ae1881faad65", - "sha256:4ebc7a434e3819db6cf4b399fb5b3f536310a30e8486f08b66886840be84b37c" - ], - "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==4.2.30" - }, - "django-appconf": { - "hashes": [ - "sha256:15a88d60dd942d6059f467412fe4581db632ef03018a3c183fb415d6fc9e5cec", - "sha256:b81bce5ef0ceb9d84df48dfb623a32235d941c78cc5e45dbb6947f154ea277f4" - ], - "markers": "python_version >= '3.9'", - "version": "==1.2.0" - }, - "django-compressor": { - "hashes": [ - "sha256:6e7b21020a0d86272c5e37000c33accc4ebeb77394a3dd86d775a09aae7aade4", - "sha256:c7478feab98f3368780591f9ee28a433350f5277dd28811f7f710f5bc6dff3c0" - ], - "index": "pypi", - "markers": "python_version >= '3.10'", - "version": "==4.6.0" - }, - "django-environ": { - "hashes": [ - "sha256:37799d14cd78222c6fd8298e48bfe17965ff8e586091ad66a463e52e0e7b799e", - "sha256:6c401e4c219442c2c4588c2116d5292b5484a6f69163ed09cd41f3943bfb645f" - ], - "index": "pypi", - "markers": "python_version >= '3.9' and python_version < '4'", - "version": "==0.13.0" - }, - "django-netfields": { - "hashes": [ - "sha256:6c8edcd724da84ce1a9cf1eca9078919ca808c9c1ed5d26edc8c9ed0559f7edf", - "sha256:a9bcde955fabb92a26663108bbf81992a979287561c938ce3d9cd79c7fcad7f6" - ], - "index": "pypi", - "markers": "python_version >= '3.5'", - "version": "==1.4.1" - }, - "netaddr": { - "hashes": [ - "sha256:5c3c3d9895b551b763779ba7db7a03487dc1f8e3b385af819af341ae9ef6e48a", - "sha256:c2c6a8ebe5554ce33b7d5b3a306b71bbb373e000bbbf2350dd5213cc56e3dbbe" - ], - "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==1.3.0" - }, - "paramiko": { - "hashes": [ - "sha256:43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61", - "sha256:b2c665bc45b2b215bd7d7f039901b14b067da00f3a11e6640995fd58f2664822" - ], - "index": "pypi", - "markers": "python_version >= '3.6'", - "version": "==3.5.1" - }, - "pillow": { - "hashes": [ - "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885", - "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea", - "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df", - "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5", - "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", - "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d", - "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd", - "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", - "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908", - "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a", - "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be", - "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0", - "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b", - "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", - "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a", - "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e", - "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9", - "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", - "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b", - "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309", - "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e", - "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab", - "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d", - "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060", - "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", - "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", - "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4", - "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", - "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", - "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb", - "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94", - "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b", - "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496", - "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0", - "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", - "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b", - "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856", - "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef", - "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680", - "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b", - "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42", - "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e", - "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", - "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", - "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8", - "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3", - "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736", - "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da", - "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126", - "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd", - "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5", - "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b", - "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026", - "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b", - "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc", - "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46", - "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2", - "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c", - "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", - "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984", - "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a", - "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70", - "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca", - "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b", - "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91", - "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3", - "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84", - "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1", - "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5", - "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", - "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f", - "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc", - "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9", - "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e", - "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141", - "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", - "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22", - "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27", - "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e", - "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1" - ], - "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==10.4.0" - }, - "psycopg2-binary": { - "hashes": [ - "sha256:00814e40fa23c2b37ef0a1e3c749d89982c73a9cb5046137f0752a22d432e82f", - "sha256:049366c6d884bdcd65d66e6ca1fdbebe670b56c6c9ba46f164e6667e90881964", - "sha256:0dc9228d47c46bda253d2ecd6bb93b56a9f2d7ad33b684a1fa3622bf74ffe30c", - "sha256:1006fb62f0f0bc5ce256a832356c6262e91be43f5e4eb15b5eaf38079464caf2", - "sha256:127467c6e476dd876634f17c3d870530e73ff454ff99bff73d36e80af28e1115", - "sha256:1c8ad4c08e00f7679559eaed7aff1edfffc60c086b976f93972f686384a95e2c", - "sha256:29d4d134bd0ab46ffb04e94aa3c5fa3ef582e9026609165e2f758ff76fc3a3be", - "sha256:3471336e1acfd9c7fe507b8bad5af9317b6a89294f9eb37bd9a030bb7bebcdc6", - "sha256:36512911ebb2b60a0c3e44d0bb5048c1980aced91235d133b7874f3d1d93487c", - "sha256:398fcd4db988c7d7d3713e2b8e18939776fd3fb447052daae4f24fa39daede4c", - "sha256:3d999bd982a723113c1a45b55a7a6a90d64d0ed2278020ed625c490ff7bef96c", - "sha256:40e7b28b63aaf737cb3a1edc3a9bbc9a9f4ad3dcb7152e8c1130e4050eddcb7d", - "sha256:411e85815652d13560fbe731878daa5d92378c4995a22302071890ec3397d019", - "sha256:4413d0caef93c5cf50b96863df4c2efe8c269bf2267df353225595e7e15e8df7", - "sha256:4766ab678563054d3f1d064a4db19cc4b5f9e3a8d9018592a8285cf200c248f3", - "sha256:4dfcf8e45ebb0c663be34a3442f65e17311f3367089cd4e5e3a3e8e62c978777", - "sha256:527e6342b3e44c2f0544f6b8e927d60de7f163f5723b8f1dfa7d2a84298738cd", - "sha256:54a0dfecab1b48731f934e06139dfe11e24219fb6d0ceb32177cf0375f14c7b5", - "sha256:5a0253224780c978746cb9be55a946bcdaf40fe3519c0f622924cdabdafe2c39", - "sha256:5ac9444edc768c02a6b6a591f070b8aae28ff3a99be57560ac996001580f294c", - "sha256:5c7cb4cbf894a1d36c720d713de507952c7c58f66d30834708f03dbe5c822ccf", - "sha256:5c8ce6c61bd1b1f6b9c24ee32211599f6166af2c55abb19456090a21fd16554b", - "sha256:5cdc05117180c5fa9c40eea8ea559ce64d73824c39d928b7da9fb5f6a9392433", - "sha256:612b965daee295ae2da8f8218ce1d274645dc76ef3f1abf6a0a94fd57eff876d", - "sha256:63a3ebbd543d3d1eda088ac99164e8c5bac15293ee91f20281fd17d050aee1c4", - "sha256:66a7685d7e548f10fb4ce32fb01a7b7f4aa702134de92a292c7bd9e0d3dbd290", - "sha256:6f3b3de8a74ef8db215f22edffb19e32dc6fa41340456de7ec99efdc8a7b3ec2", - "sha256:6f9cae1f848779b5b01f417e762c40d026ea93eb0648249a604728cda991dde3", - "sha256:718e1fc18edf573b02cb8aea868de8d8d33f99ce9620206aa9144b67b0985e94", - "sha256:77b348775efd4cdab410ec6609d81ccecd1139c90265fa583a7255c8064bc03d", - "sha256:7af18183109e23502c8b2ae7f6926c0882766f35b5175a4cd737ad825e4d7a1b", - "sha256:7c729a73c7b1b84de3582f73cdd27d905121dc2c531f3d9a3c32a3011033b965", - "sha256:83946ba43979ebfdc99a3cd0ee775c89f221df026984ba19d46133d8d75d3cd9", - "sha256:840066105706cd2eb29b9a1c2329620056582a4bf3e8169dec5c447042d0869f", - "sha256:863f5d12241ebe1c76a72a04c2113b6dc905f90b9cef0e9be0efd994affd9354", - "sha256:864c261b3690e1207d14bbfe0a61e27567981b80c47a778561e49f676f7ce433", - "sha256:89d19a9f7899e8eb0656a2b3a08e0da04c720a06db6e0033eab5928aabe60fa9", - "sha256:8ffdb59fe88f99589e34354a130217aa1fd2d615612402d6edc8b3dbc7a44463", - "sha256:96937c9c5d891f772430f418a7a8b4691a90c3e6b93cf72b5bd7cad8cbca32a5", - "sha256:98062447aebc20ed20add1f547a364fd0ef8933640d5372ff1873f8deb9b61be", - "sha256:995ce929eede89db6254b50827e2b7fd61e50d11f0b116b29fffe4a2e53c4580", - "sha256:9b818ceff717f98851a64bffd4c5eb5b3059ae280276dcecc52ac658dcf006a4", - "sha256:9fe06d93e72f1c048e731a2e3e7854a5bfaa58fc736068df90b352cefe66f03f", - "sha256:a46fe069b65255df410f856d842bc235f90e22ffdf532dda625fd4213d3fd9b1", - "sha256:a7e39a65b7d2a20e4ba2e0aaad1960b61cc2888d6ab047769f8347bd3c9ad915", - "sha256:a99eaab34a9010f1a086b126de467466620a750634d114d20455f3a824aae033", - "sha256:ab29414b25dcb698bf26bf213e3348abdcd07bbd5de032a5bec15bd75b298b03", - "sha256:ace94261f43850e9e79f6c56636c5e0147978ab79eda5e5e5ebf13ae146fc8fe", - "sha256:b4a9eaa6e7f4ff91bec10aa3fb296878e75187bced5cc4bafe17dc40915e1326", - "sha256:b6937f5fe4e180aeee87de907a2fa982ded6f7f15d7218f78a083e4e1d68f2a0", - "sha256:b9a339b79d37c1b45f3235265f07cdeb0cb5ad7acd2ac7720a5920989c17c24e", - "sha256:ba3df2fc42a1cfa45b72cf096d4acb2b885937eedc61461081d53538d4a82a86", - "sha256:c41321a14dd74aceb6a9a643b9253a334521babfa763fa873e33d89cfa122fb5", - "sha256:c5ee5213445dd45312459029b8c4c0a695461eb517b753d2582315bd07995f5e", - "sha256:c6528cefc8e50fcc6f4a107e27a672058b36cc5736d665476aeb413ba88dbb06", - "sha256:cb4a1dacdd48077150dc762a9e5ddbf32c256d66cb46f80839391aa458774936", - "sha256:cfa2517c94ea3af6deb46f81e1bbd884faa63e28481eb2f889989dd8d95e5f03", - "sha256:d2fa0d7caca8635c56e373055094eeda3208d901d55dd0ff5abc1d4e47f82b56", - "sha256:d3227a3bc228c10d21011a99245edca923e4e8bf461857e869a507d9a41fe9f6", - "sha256:d6fcbba8c9fed08a73b8ac61ea79e4821e45b1e92bb466230c5e746bbf3d5256", - "sha256:e4e184b1fb6072bf05388aa41c697e1b2d01b3473f107e7ec44f186a32cfd0b8", - "sha256:ee2d84ef5eb6c04702d2e9c372ad557fb027f26a5d82804f749dfb14c7fdd2ab", - "sha256:f12ae41fcafadb39b2785e64a40f9db05d6de2ac114077457e0e7c597f3af980", - "sha256:f625abb7020e4af3432d95342daa1aa0db3fa369eed19807aa596367ba791b10", - "sha256:f921f3cd87035ef7df233383011d7a53ea1d346224752c1385f1edfd790ceb6a", - "sha256:fb1828cf3da68f99e45ebce1355d65d2d12b6a78fb5dfb16247aad6bdef5f5d2", - "sha256:ffdd7dc5463ccd61845ac37b7012d0f35a1548df9febe14f8dd549be4a0bc81e" - ], - "index": "pypi", - "markers": "python_version >= '3.9'", - "version": "==2.9.12" - }, - "pycparser": { - "hashes": [ - "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", - "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992" - ], - "markers": "python_version >= '3.10'", - "version": "==3.0" - }, - "pynacl": { - "hashes": [ - "sha256:018494d6d696ae03c7e656e5e74cdfd8ea1326962cc401bcf018f1ed8436811c", - "sha256:04316d1fc625d860b6c162fff704eb8426b1a8bcd3abacea11142cbd99a6b574", - "sha256:22de65bb9010a725b0dac248f353bb072969c94fa8d6b1f34b87d7953cf7bbe4", - "sha256:26bfcd00dcf2cf160f122186af731ae30ab120c18e8375684ec2670dccd28130", - "sha256:2fef529ef3ee487ad8113d287a593fa26f48ee3620d92ecc6f1d09ea38e0709b", - "sha256:320ef68a41c87547c91a8b58903c9caa641ab01e8512ce291085b5fe2fcb7590", - "sha256:3bffb6d0f6becacb6526f8f42adfb5efb26337056ee0831fb9a7044d1a964444", - "sha256:44081faff368d6c5553ccf55322ef2819abb40e25afaec7e740f159f74813634", - "sha256:46065496ab748469cdd999246d17e301b2c24ae2fdf739132e580a0e94c94a87", - "sha256:5811c72b473b2f38f7e2a3dc4f8642e3a3e9b5e7317266e4ced1fba85cae41aa", - "sha256:622d7b07cc5c02c666795792931b50c91f3ce3c2649762efb1ef0d5684c81594", - "sha256:62985f233210dee6548c223301b6c25440852e13d59a8b81490203c3227c5ba0", - "sha256:68be3a09455743ff9505491220b64440ced8973fe930f270c8e07ccfa25b1f9e", - "sha256:834a43af110f743a754448463e8fd61259cd4ab5bbedcf70f9dabad1d28a394c", - "sha256:8845c0631c0be43abdd865511c41eab235e0be69c81dc66a50911594198679b0", - "sha256:8a66d6fb6ae7661c58995f9c6435bda2b1e68b54b598a6a10247bfcdadac996c", - "sha256:8b097553b380236d51ed11356c953bf8ce36a29a3e596e934ecabe76c985a577", - "sha256:a84bf1c20339d06dc0c85d9aea9637a24f718f375d861b2668b2f9f96fa51145", - "sha256:a9f9932d8d2811ce1a8ffa79dcbdf3970e7355b5c8eb0c1a881a57e7f7d96e88", - "sha256:bc4a36b28dd72fb4845e5d8f9760610588a96d5a51f01d84d8c6ff9849968c14", - "sha256:c8a231e36ec2cab018c4ad4358c386e36eede0319a0c41fed24f840b1dac59f6", - "sha256:c949ea47e4206af7c8f604b8278093b674f7c79ed0d4719cc836902bf4517465", - "sha256:d071c6a9a4c94d79eb665db4ce5cedc537faf74f2355e4d502591d850d3913c0", - "sha256:d29bfe37e20e015a7d8b23cfc8bd6aa7909c92a1b8f41ee416bbb3e79ef182b2", - "sha256:fe9847ca47d287af41e82be1dd5e23023d3c31a951da134121ab02e42ac218c9" - ], - "markers": "python_version >= '3.8'", - "version": "==1.6.2" - }, - "python-dateutil": { - "hashes": [ - "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", - "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", - "version": "==2.9.0.post0" - }, - "pytz": { - "hashes": [ - "sha256:04156e608bee23d3792fd45c94ae47fae1036688e75032eea2e3bf0323d1f126", - "sha256:0e60b47b29f21574376f218fe21abc009894a2321ea16c6754f3cad6eb7cdd6a" - ], - "version": "==2026.2" - }, - "rcssmin": { - "hashes": [ - "sha256:0162c32ce946978edc834d4fba705ac5f9422d7f556f3264cc4fc67c7ee39171", - "sha256:0519a25f4af4221dcec652b2fe2e35d2a2465d7d68c2d529d47ef164e767942b", - "sha256:07dc7d352e8eb08de82fc4c545dd04f9f487466c8370051e0bee4eb1e4dc85d0", - "sha256:0aa9d0b069cbab3a5de88faf17046fe9ceac418281726244423fdf8696dbace6", - "sha256:125cc0f32609fcad47be31f1e2d807ffcdc72055ab9259e5bdba08ea6be20c80", - "sha256:1472a98142d10d6c6772d96424ddcaf99d7e1d3217475f7f28f7d40dd84f24a2", - "sha256:19e53c58768369366fdaef00da59f275f724f229994ea885309df6ca368ff3c8", - "sha256:1dab9b6b0e667570d4362ced81015e68bf462537dde151f9f908e1d5382fefb7", - "sha256:20a32c49d65b65c3ac80305d8a31b98f3d92b1b052dd63b57fbebc7003f9ae38", - "sha256:217efed0dff304d503bf481068ddb13ae72176ed5970f1011fb1a1e379308d9c", - "sha256:228cc8d192ba4bd82305c085cbb5594d45d8dc6605d4eddc319543fb9f47b319", - "sha256:265b57de87949b505bcd658f4f5bbfc1f077390108cd12e288ba2f7824bee52c", - "sha256:283ffe7f99ef75544712a4fb0362185baf3c684ca79a5c64c486acc4bfbd9407", - "sha256:292dc265fb95bcd3765040627713db574a96f8d55035b95c7ccdd4c587844d69", - "sha256:2b008aa77a92f9db2d88f7e7ab45b81f37253cb0baafda59dd5b857c2de9b09f", - "sha256:2b6d5e2e2fd65738d57ef65aaaed2cff2288eccff7f704bf3d579e6f451cb60a", - "sha256:2c88b835bcae8f000c93c9a6fe6fc61f70c6e3ab50618e8e04ac9dfbcb855718", - "sha256:354215283f32413ced87b358934ebbb7c5529f51f5d316e80bc2889486d388b3", - "sha256:40c7dfba098bbd129d8c35dd8b604275585f9dc0496e5d17dbe7fd6b873b0233", - "sha256:47aafd60e3c143d38b721ca5619a2fe275250fcd568ed67b963eb8709bb53c6a", - "sha256:4f2229ffb96abafd3120006bce9d448eb8dd0331fc30ab203066d8e63d3c7f34", - "sha256:51a9ededc03dc924f1a30373a21341034117999f103edff7e8bc8e62607e9f32", - "sha256:5308789d1609a5b2a98607f761cfb9d40bfcfb12770eef20c1f243f01ed60956", - "sha256:540dd3aa586b5f8f4c4b90db37e6a31c04718cdf90dbe9bec43c3b4dd50519e7", - "sha256:56f735846d77921d44637a9f0a0f55d00a670b27a3956da39c2ce59c3992abce", - "sha256:5724ed426c1444c35584f0bcda43c81ac47da769228722207aea7b8eedf31224", - "sha256:64ec506fce7a3f1e993f4c4b55c7b3d9ad8259191cf20d986aa1d1a13e920fe8", - "sha256:6692ec9a82f96cb9c864d76659457b19a3122bb8269c9ebe4cc2338ff839defb", - "sha256:6ea38a38eec263858b70bed6715478dcfed7fbc5d63333a8c512631ee22baad9", - "sha256:7018d4197713c7797d1a67ed47ab53d4706c2e9ed134123c30a47d389dda5386", - "sha256:714390aac7c4cb611eecc845a5d9bb01495a3c9fccf9d8a2d6aa75a109276f7b", - "sha256:742bb522d1efe0f1d362d81e00b5dc93ca2ddd1e435ed2d921cfa84fbb9f6887", - "sha256:78249189d39344a1e9d813c51362831537500e104c5bdce4ff24fe59010e9ee1", - "sha256:7c0303254bf458e22df5de7c75fcbcf9fc7d9b7c64d59b2ab5ce5fca6de32f14", - "sha256:7c75947adf3c359670a044441c1d6ba4fd9e9ad291c000b3802e75fe259c0ec0", - "sha256:806986eaf7414545edc28a1d29523e9560e49e151ff4a337d9d1f0271d6e1cc4", - "sha256:83ecd3093640d69f7582839788e012ecf9a85faeb95760032626977a7d3904b2", - "sha256:844227668a235451eb544455b911067ba5495d680857d4bad2b0b78878f30a5c", - "sha256:8d3de1a870e00d157f3a7b1797498fdc09a3774629079572350f75783bb94b9a", - "sha256:970e44ea43139412558e602d20ec91d0ec817602cd78d11c60e4ed80050b537c", - "sha256:9ca32369720f64ffcee16420d21d900de08838081b39b53b4b4701830991439b", - "sha256:9e36053facaecc97fca89ce2cca0fdd8ba9093eae734afd2093014334b973f0f", - "sha256:ace9b2c30eb02bff32ce5d6657f5ee04ae866e1bc55d3e28009325fc8b62de4e", - "sha256:b3843e0501fa45d7c911dd7b3b78fd5f51c8159dd36d780ee12060da2d526aa0", - "sha256:b6c91878a7e6f708f90c1bbc1a02729f45b2e5dee89045b395e997aa71744ee4", - "sha256:bb75b0e412a5419d62f39d89d0b3920a6697d2b12c8dad57f8bde1c76332c640", - "sha256:bd4454002078532f5cbd9dbe7868c7001fd95f79d48d8fbfedde73b1081a3379", - "sha256:c2140066b1fbc4f5ef76bff3176a60eaa86dee4ba723bfdbe480d79d8a110c26", - "sha256:c2b13d88bcb96ade57b1dfbbbf022cdcc6330eb447211470c9df980d8a7dd2a3", - "sha256:c51aa47b1752ae55ad4cf4332e7316c5206a6a686d65bc15431a6bfea393e665", - "sha256:c86aaeee5dbe0efe786d14a473ff6324b19f2efa48d3371292f8d2d72e333644", - "sha256:c96c80d96a7f933fb27e20227704d9d1f4fa3625b7f2cabfcb06b91c680610dd", - "sha256:ca2492e39feed0125a7995d66f59e913d7b85bd3462eca8e388c06654a973d16", - "sha256:cc866e23121bc4e29014b588fb67c8242a80ce053196f511c4c806b30ca6a393", - "sha256:cd0a5ca4a0fc3b193ab0dcd251bd2463900558108cc4306a5cc4ab77c6bfffde", - "sha256:cdccb0e08281f0dd5d463c16ec61a06bd1534de50206dc72918be3c10dcb82e5", - "sha256:cf625985ee18bcc554afaae5b42501c71a167cc79ffe8fd782b32bacab2aee68", - "sha256:cfcc9e8cf6fcb743ec19d67b3fc9669efa717fab6a9a064fab791d1d2a891c8c", - "sha256:d0197fab78ebbe33f5df9caf2572ef2d44bbe243a9130881a0c5c53ba03641fa", - "sha256:d07542232ee29442b9c904ad96111f12163f0836be0ef9442dd08eb84a5ac07f", - "sha256:da4801f4f429d66f9922871a7c71dee54c87f0ea5666cae6f1eb84c3fbc4e1f4", - "sha256:dce0f0230c6ac8579cf3b1e557ec1699fe0d931e5e64789c48ff76df2957a937", - "sha256:dd1472d19c592b960bc227d0f37785c1149bb46393ecc8f656ff572185cf6614", - "sha256:dd192a876a7af9a14628ff20818df80187294db96d86ddccf72371a6ae3e7ce7", - "sha256:e43296196c6fc8e1ca08927afb7f0cb0a555112779dcb6477075b84c15cd843f", - "sha256:e6b5913f3e8cb249044e916bc6ddcb5158815121548686a0fc8e2b8a5961a62e", - "sha256:e91449b612a08e5e80df3487e941c86e2c73c5088169588c31c382eb94da0521", - "sha256:efdacfc8bb07d0c8a939e92b9750dd2a0646cbd4340a057271ea3fd1cb1d9b54", - "sha256:f17dc92553a46412c49f972f0ab31088032b9482a9c421bc2d39691a5d8842aa", - "sha256:f6696d73585c6ec01c154123bc772184a7ea6571d10092a41693050cef1fd6a9", - "sha256:fc3cfd3548c2a95a9bdab56914083b2c8eaf40b6b60801ae22bf01c6a05662c9" - ], - "version": "==1.2.2" - }, - "regex": { - "hashes": [ - "sha256:002205cafd2a9e78c6290c7d1df277bf3277b3b7a30e0b4bb0dac2e2e3f7cb2d", - "sha256:01f0f5f55f4b64dacec85dc116d3c05fd23ad3ff037bbc73a2085775953c2611", - "sha256:01f28d868834624c934b8d2e0aa1c8341337e37831f4a012f18a5afcba4cbaf3", - "sha256:075160bf16658e16d35233300b8453aac25de4cbea808d22348b6979668e924d", - "sha256:0de5cf193997384ed2ca6f1cd4f78055b255d93d82d5a8cd6ba0d11c10b167e4", - "sha256:0e1b1b4e496afbb24f4a62aba855ee4f88f25578927697b340702e48c9ee6bc2", - "sha256:0f03aa6898aaaac4592479821df16e68e8d0e29e903e65d8f2dfb2f19028a989", - "sha256:0f9eede6a5cbdc02d4978090186390936e1776a7d1359b21e41014c609880bcf", - "sha256:1268eddd8486dc561d08eee1156e40aa3a8fe10f4bdec8fa653b455fcbffd12c", - "sha256:15ee42209947f4ca045412eae98416317238163618ace2a8e54f99586a466733", - "sha256:164eba9b755ea6f244b0d881196fbc1fac09714e9782c9e2732b813142033c8e", - "sha256:19c16ceb4a267a8789e25733e583983eeab9f0f8664e66b0bd1c5d21f14c2d4b", - "sha256:1bd7587a2948b4085195d5a3374eaf4a425dc3e55784c038175355ecf3bbbf8a", - "sha256:1e6da47d679b7010ef27556b6e0f99771b744936db1792a10ceac6547ae1503e", - "sha256:205109e96b3cf5adf8f4cd62bedde9487feb282b9497a3535451e5a24cd706a0", - "sha256:2099f7e7ff7b6aa3192312650a56e91cc091e49d50b04e4f6f8b6e28b3b27f1c", - "sha256:246de9d60aa3f8538b519834dd95cbf276ea263d6a7bd5a3666dc3fa0230505b", - "sha256:24b2355ef5cc9aa5b8f07d17704face1c166fdcc2290fa7bd6e6c925655a8346", - "sha256:2a661a7d270a61f7cf460caee8b9fa2d5ef9e5c681234bcb9e0fe14f488e7dfc", - "sha256:2acfb48634f64996b57f90f39afa692ff362162722581921fe92239a59960f3c", - "sha256:2efa205e6d98b24d1f3ab395c11aa15cdf10935bca283d0285e0499c284fba21", - "sha256:31037c82eccb44b7ea2e9e221d7c01429430e989a1f4b91ea5a855f6017b509a", - "sha256:3527bb4942d2c14552155406cdedd906567456821848aed1cb4933a391bf5eca", - "sha256:39617fb0cde9c0e6306dc70e3bfc096f3da793219879f7ae7aa341a69fbdcf6d", - "sha256:398c521292f4c7fb807001dcd54694d3a1fcafc179a36ad9cc56f98df85930b6", - "sha256:3b1e39888c5e0c7d92cea4fc777396c4a90363b05de75d02eb459a4752200808", - "sha256:3dd4a3ff360dfb836fecdb93a4598f9d6e2ac81e3e397125145c6221bf58cf4c", - "sha256:3ddd90103f9e5c471c49c7852ecc1fe27c7e45eb99e977aefe7caa4e779f4f58", - "sha256:446ddd671e43ab535810c4b21cff7104945c701d4a14d1e6d1cd6f4e445a8bea", - "sha256:45375819235558a4ff1c4971dc32881f022613abdb180128f5cb4768c1765a1c", - "sha256:46f1326ca6e65b0879d23ca302c0f2415aad42ff0309b9c818e7949fe19a41d8", - "sha256:48036f6374aaa79eb3b754ec29c61d1c6b1606749d705a13f8854fa2539671f6", - "sha256:4ebe8f0b5ec5a5024dc4a4c59f444c4e9afc5f2abdbb8962065b75d27fb971f9", - "sha256:4eeb011098fcb77af513dcef521a3dbecbf8849b1e38940759d293b7a93f5026", - "sha256:508f56a89ba9cb26e4168cbc37dbd60a28d82430a9e18ad1d25fe0883c314ca2", - "sha256:5604dfd046dc37eca90250fc3be938b076c8059fa772ac0ed6f499b0f0fb0415", - "sha256:56a33f191f17d8c417f99945ebdc1e691d3af9605d86ec68c7e54a57e3e17af6", - "sha256:57e8915c7986aa33d25e4d3629cef711cd2863f2961b10409f0c04cb8b7d9020", - "sha256:57eeeb05db7979413dec5438f2db21d7ecbba787cde7a711df1a6f6df672aa06", - "sha256:5b73ab8afcf66c622db143d1c6fda4e58e4d537ee4f125229ad47b1ab80f34c0", - "sha256:5e41809d2683fcde7d5a8c87a6567ba1fb1ce0de9f31bff578de00a4b2d76daa", - "sha256:6351571c8a42b505eb555c0dc47d740d0fb66977dc142919eea6f4325b7c56a0", - "sha256:6441cc660d76107934a09c22167200839a0e89604a6297f78a974e66e931d2c0", - "sha256:65c8c8c37377794bd5b2f3ebe51919042bf17aec802e23c833d89782ed0c78af", - "sha256:6ba42b2e7e7f46cf68cc6a5ca36fa07959f9bbd9c6bdcc47b6ee76549a590248", - "sha256:71b61c5bfe1c806332defc42ad6c780b3c55f661986d7f40283a3a88274b4c00", - "sha256:728d8bfd28a8845c8b6bc5dc7ce010453d206396786c0765c2740cb65f37791e", - "sha256:7b92817338591505f282cf3864c145244b1edcf5381d237038df955001091538", - "sha256:7e30b874d341fac767d7df5a0870540541c2c054b80cfaac116e8d367a8a7ff2", - "sha256:7e87577720152d2caae19fe2baaf1f8d5ca12091e9e229f03915c37d1e4b9178", - "sha256:83d0ee4a57d1c87cb549e195ec300b8f0ec3a82eba66d835e4e2ed8634fe4499", - "sha256:8676474c07469d6f33dd1085ca2cd45f65785f32518f2b20e36d9953ca07f994", - "sha256:86f40a5d6444db30a125c9c9177e6b25dad981cbc37451fd838f145e6edac92e", - "sha256:872acc074bd29ffc9913ecdfedf6ea77502312ca44a4aa0d3779089c6069d8de", - "sha256:8abd33fef90b2a9efac5557d6033ca82d1195ed3a15fea5af15ba7b463c6a63b", - "sha256:8c6e4218fbdfbcd4f6c19efca40930d24a621bf4b48cb76bc6640543bd28ef20", - "sha256:8e76e8161ad00694cfce6767d5dea860c6391ac5b83e5c3a39661e696f11fc7e", - "sha256:8f3af7a4903c5c04a11a196a5aa75cdd7dd3f8508132f9fb3259d9f5908e3b88", - "sha256:91328f1c23d47595ca3ef0a7557fa129c5a23404b775c770697d2f35b33e0107", - "sha256:916714069da19329ef7de197dcbc77bb3104145c7c2c864dbfbe318f46b88b14", - "sha256:93a7860539414dddaefba2b40f8771765ae17949d4c7182b876ce429e11a8309", - "sha256:954cc214c04663ee6d266fc61739cad83054683048de65c5bd1d640ad28098ac", - "sha256:96f5f58b54a063d7ea9dca08e1cf57bfe10499c4d579ee672da284f57f5f0070", - "sha256:97cf3bc1b7d7d2306772ec07366c80d9df00ff79e79cea32898883a646d2fae2", - "sha256:98bd73080e8756255137e1bd3f3f00295bbc5aa383c0e0f973920e9134d7c4ad", - "sha256:992604d02e6d9c6d786c24a706a71ecffe1020fc1ef264044474cd81fa2c3919", - "sha256:a24852d3c29ad9e47593593d8a247c44ccc3d0548ef12c822d6ed0810affe676", - "sha256:a6a563446a41adc451393dc6b8e6ad87979efaee3c8738690a8d1b08ebead1b4", - "sha256:a8234aa23ec39894bfe4a3f1b85616a7032481964a13ac6fc9f10de4f6fca270", - "sha256:a8820737949116ffff55fe18f9fc644530063ba6ebfcb8314239416e78f1347c", - "sha256:a9e1328e17c84c1a5d22ec9f785ecef4a967fab9a42b6a8dc3bcbebd0a0c9e44", - "sha256:aa0fbdbac82cb3e4450d0ccde7d7a35607f4cb2dd9fba4b8b69bfaf8c9fa6aed", - "sha256:b310768746dd314ea6e2ff4cc89ef215426813396ff4e94ee8e6f7096c8b6e03", - "sha256:b46b0f094dc1d3b90356c85a0bd2c9bafc4a6a190b9d6f8ddd5a033b6e088ed4", - "sha256:b4bb445ff3f725f59df8f6014edb547ee928ec7023a774f6a39a3f953038cbb2", - "sha256:b6d189041f15691cfa2b6c4290448ec221244d225b3f5fe9e7771b34ffcdf6e2", - "sha256:b96350aa424e79d4fd6b567b344dcbe2b2d6bfc48dfe7717587e1fa6d43da6ff", - "sha256:be3372b9df6ddecff6486d37e19095a7b4973137caf5512407a89f4455361f41", - "sha256:bfe1ce50cbfb569d74e1e4337da6468961f31dbea55fd85aa5de59c0947a805a", - "sha256:c010eb8caca74bdb40c07498d7ece26b4428fd3f04aa8a72c9ac6f79e8faaac6", - "sha256:c8b9b9d294cfea3cd19c718ade7cc93492b2c4991abd9a68d0b3477ae6d8e100", - "sha256:c9411dd64ca95477225734a93dfc8583b51916b8d5942f99d6cac21e09965451", - "sha256:ca518ed29c46eecba6010b15f1b9a479314d2de409536e71b6a13aa04e3b8a77", - "sha256:ccf5249114cc3e772ecdd88a98a86eca0fd74c61ce32a94743758c083fc05d48", - "sha256:cd2846168eb9ee3c513902bc8225409cb1caab31d04728b145171fa1625d9621", - "sha256:d29eebfc9525db68cad3c97eedd7f754fa265aa5cd0cf4f863b2421e1b48fc9f", - "sha256:d3d7eb5c9a7f6df82ed3cfac9beb93882a5cbcb5b8b157b56cb2b3b276574ac1", - "sha256:d626b84406444b165fc0ba981604edea39f0588ff1f92baa23fe50799ea9afdb", - "sha256:d641a8c9a61618047796d572a39a79b26167b0411d2c3031937b2fe2d081e2cf", - "sha256:d659eee77986549c9ea45b861c7567e44d6287c3dc9a4565478853f7b9fe2ff6", - "sha256:d6b8a143aca6c39b446ea8092cde25cc8fe9304d4f5fecfbc1a9dbb0282703c2", - "sha256:d726ca3f0d76969bf1e8e477d160d3d666bbf999f6860bd314889e5345782046", - "sha256:d7bdc0ab8f3dd7e1b4f9ab88634e13374669db86bb3c72e8292f07ae313f539f", - "sha256:daff2bdbaf1d23e52fdff7c0b7bc2048b68f978df6a4d107ac981f94caef2e66", - "sha256:dd2810d22146b6d838acc5ec15602cb6b47920aa4e33015df3868eedfd20bab8", - "sha256:ddda5340e6c01a293027dd46232fa79eaff1b48058ce7a98f572b6445b088041", - "sha256:dea2e88e1cce4522496cce630e11e67b98b7076620bc4336c3f674bc21a375f4", - "sha256:debb893095e944091c16e641a6e33c1b0f4cb61ab945ec5afbf53ce7068834d8", - "sha256:dfbe4579b9f08036aa7d101d1835437a20783574ac66327e6b29b4018a138081", - "sha256:e1d93bf647916292e8edcec150c07ddf3dc50179ccaf770c04a7f9e452155372", - "sha256:e82db382b44d0111b22601c509c89f64434816c9e0eef9d1989cda8cc6ff1c04", - "sha256:ea9c8ecfa1b73c73b626534d6626e5340d429630943672b8480724f44e84b962", - "sha256:ead4b163ac30a29574510cd4b3e2e985ac5290c05fc7095557d6a5f403fc31b5", - "sha256:ecd353045824e4477562a2ac718c25799cdaaa41f7aa925a806a8a3e6848a5b9", - "sha256:ed2c9e8068b614c574d8d30e543d617cf5379b0535d46f97ef00e904745a08b5", - "sha256:ed457d8e98ae812ed7732bef7bf78de78e834eae0372a74e23ca90ef21d910f9", - "sha256:ef31cbfe458e21c6122ba8150ff060e0c7789ed0d26eb423f25472584920b555", - "sha256:f079e50a0d3cc3cd5091fa9ff45869a2e6b2cd35895731edafb0327901a8d86d", - "sha256:f3844f134e834076677dd369976e9f5068679fcb8e50102fdf6b7ac96a3ec127", - "sha256:f7a7c26137296beba7784de6eba69c6a93a63ccebc385e4962fe67e267a91225", - "sha256:fa411799ca8da32a8d38d020a88faa5b6f91657d284761352940ecf9f7c3bbdd", - "sha256:fd03c4f0e33280d15cae17159b899245d6b7c53d21def19b263b39655061f5ce", - "sha256:fd190e88a895a8901325fad284a3f74ea52b1da8525b76cc811fa9b1edf0ce2b", - "sha256:ff8d372ac2acdc048d1c19916f27ee61bc5722728458ba6ca5052f2c72d51763" - ], - "markers": "python_version >= '3.10'", - "version": "==2026.5.9" - }, - "rjsmin": { - "hashes": [ - "sha256:07bccbc8cc4ffabf0db0079259a1e4d97880ccb3ffcd1dc012e8640b59b97cc4", - "sha256:0d64da3b02f56364fe032608a10e56e5ed5aec4991a173e0b90e1a6e7bc6af58", - "sha256:0df172044912ca2f5f04c711ded75c784fba8dc6c7a1f7f831ac831562102aa2", - "sha256:138b5b4e351a4b4138496829fccc402300fab5cb473a2b173feea5697e5c9c1f", - "sha256:1e2943259be7beafdcb0847c2a901f223bf9044bdfa8105e1be1ad67d6c47795", - "sha256:1e3ab93a51d7581ba0a3b6a383df2929b86d9d55f9516764678f9b4e409826e8", - "sha256:2503f98f4af750151994a592681872383be6560b8f39528bbf4409c0af5944f8", - "sha256:250f8282a1abc5ee3296dd62d0381e94be3a22cde0ce5eeb93fb86e6ad4ac6c4", - "sha256:2967e468df0bedaff71693b96ff42b46805cc7027146323a8e47c85c5ea53ac5", - "sha256:2af254854f5e06f42c05d2baa0e78742204bbe8891d69dcaba287449a7cd11de", - "sha256:2d0b8aaa98e51c8ae176b9a94e91f19d3043d7d328431d3d2c459b57a90c0c87", - "sha256:2f46270969613de2292a7f747c31cabd9354cc49f6cd23f9cc8688d3af9f889e", - "sha256:32e8f04de01a7620d5254414ec827b070d2324169dbd65f5e5733a6c9cb3425d", - "sha256:372d57835014a332dbf227b6de284ea3ee052600ab0f176df959c75a33f0690e", - "sha256:375acb47041f81b9a6d14ac2ac83b46a4cfcec2e0fa35eff544ad2222199e56d", - "sha256:3b64aba17f9caa7d66f6fd9e08d7c2010ece06df2b518e0a48fbdc0482c5f9f9", - "sha256:3bce037bc2ed784143f90637230c0dad6b59d18e01d66ec41ab0fc988cb98266", - "sha256:3d68251d1f68c07500f1c062d9dfa16e799f8971aed1312b9584739c03d9f44b", - "sha256:43b61368e2c5ac1e81ab3fe809041320ace04574ae890c03aa1ed9b0c020f249", - "sha256:47dad1732a2c4779bdc76d5b3183fdf2ec27838f31071fa9dfcc79483d3480e2", - "sha256:4dda87501a36b24c0db3bcfd274f31e04bbe96c9514bb5e168d83923dac56c08", - "sha256:4e2ed013704e01b8bbe82eb58f83241c33b198d96fef792f389de415b32af260", - "sha256:4e80b05803749502995fe33b6f5fd589b51dc46e50d873baf0b515c8f6e7b668", - "sha256:54284d09bbc8fbaeadce1ce4812c1666c1dace1a4c654f3c4edd486650d765e9", - "sha256:5626644872f3ad10b8334ec3383aad0906d36a085c04c608a400ed30be4d03a4", - "sha256:57d0935b2675644d80ea33b611d6752a33af8e1a62baa5adff0a0b8d43981732", - "sha256:589b80f209a0ab71dadcafad4136362da00cfd4559bcb1fe138067645898a104", - "sha256:5975cdb5cb38bd8ddd124e9f6b4e9cd25a0e2a4fa0a3cd5604ad349f0317df7f", - "sha256:5b1d470fb25b9485a63dd292f7eefbff1daca3cbc7fec1132d13bc5c3e6a6b35", - "sha256:5b8f72f7d96e5e1d30a33182cb39d4eb4516ddcd9b2f984813a9eefe66f8e180", - "sha256:6e7b1bb52665894d8cba84144ee91723475948d5d1a54d7f0b25a1cdce8c5921", - "sha256:7096357ed596fdfe0acb750f8cbfca338f3c845cc12def3861e23ed811589d15", - "sha256:71a08fcd93896e06588840df6ca8087dcbb50d1cd85d3c21d3fd38a2434b9844", - "sha256:73b6b099f8afb8aa7ff9ddfbfd4d6ae6540dfe7630833a04a26f1d9f67528eaf", - "sha256:7926b946de481766d4da5f669da2e3ce8491e750f32f48745d7413a92c810ead", - "sha256:7a2661e3c13bd0fa98ac2a42b323d80895e2bcbef57dabe5614742c0d20da08f", - "sha256:8196f1ecb0dff6c8647d4622e496869e94f1be92567ea2e941aa18d49a1a4347", - "sha256:8207bac0d3bab7791fd667f0863b5f32e51047845179b94b28c716e6514a9234", - "sha256:82bac9710030b61dd1cf442724431d29b1fec7cd708c541cb2042e38763fd610", - "sha256:85aa826fca5aaf6f0f0f287f986e0f79c0f8953bab5090fed17a4f35f7ada65a", - "sha256:88200560e1ec1019afc581c88773a9ee74e0d10b02fc13633a5d6c21cf7c2e90", - "sha256:8a3c43e43c06afa7e8a36b22a1247ae58d2eebfe0aea7af5cd83f68fd7360ddc", - "sha256:8b7cf8ce9022d381bfa700ae116e5f78698f486558a0fe23c57f158ba3229629", - "sha256:8c5906bd8830f616e992ad5e7277d0ea12c530110da188b2b9da23e9524a7cbc", - "sha256:935795f2c894a010b4d7ae4058b4d7a9533202b0409a4d5753c7731e7de405c6", - "sha256:9dd9f66568be9c8676278f140aa54102fab9af7feb59adf0c7a85bef49fe70df", - "sha256:9ec9e902dfe04e791d056eb649805e4dc8a480c170e296b2dfbffb646425acdd", - "sha256:a3f8040b0273dec773e0e807e86a4d0a9535516c0a0a35aa1bb6de6e15bb1f09", - "sha256:a86825ff7846a5c2f21a71d669b96d1b52237fb668f0243fa4f4f40a2ad93ff7", - "sha256:a9208911d2f04dc3bec33df7486dbd7ecfc900b0d1ead9841bbd94a382f33f00", - "sha256:b1cceba14ed3fe7a929f6cd7b1c0190e82c030a1c9f77d4aa67f71dbbbe41e29", - "sha256:b625911a0a1046b011b6af9fd75cebfe2ce8dd3beb3ccbe60debf3b86f71a075", - "sha256:b6d0bc092acc3f54ea63ec1dcb808edaac5e956141d89fd0d038e80de5322052", - "sha256:bed4e712b8380beaf7bfead08a85628ceed6ec6dcbb3bb25936a251281cb84a8", - "sha256:beeb797c3b66695e5156b0582e5734975f56c1fc530fedaf4a391bdc703fde13", - "sha256:d206f730a003cbfc8ba5d70e06e9d20318d5dfc2d9220f6dab4fc708b621de15", - "sha256:d283452b6684bd6f422eea783e5f5f16b564727652398bb71ad5adc001613765", - "sha256:d2f8685ddac497bf95671795dc033773d845fa75350d416f7af4ac2f8c24e14b", - "sha256:d57c1a92278d9bb8e81c8c6ae55b690a72088b1bab241091c231158bc5d39171", - "sha256:d59b4076f11ebff571d19670e6dfdab80b53e6b8951e7e837cef7228779cd140", - "sha256:d68cb778e25393adb84e1844aac6f132f72055a6cf4463bae560858300ca500c", - "sha256:d84873927ce22464a4c8b1e3e06704e8670369a651f950b4b11f070b1f2871d6", - "sha256:d8b6ddaaa78fd2d3243da11c13033946d211d37729c64814cefe32dba02d9921", - "sha256:e0387568c27fb49e55c1d0dfc27b54fc63d04b7756b1fed9743078130262907f", - "sha256:eef3f741d8718523c4e25ef8d9fd2a4e165fc2b72ddef32f5257d05bacaf5f41", - "sha256:f23d75d2fe03e0f9861907271e378efebe9490d6c472715908bd21d8c9cfdd4b", - "sha256:f68dd62707d62fc1771be4407892cb932d48fa19a51e7a0e35a11b00e427e3f7", - "sha256:f9c6807c11a200d448e42c152551decc7d7ff049fe43bf02b1a223fa27fb6654", - "sha256:fb5727e77abb736f9a478e586963196f300c0b39896c08fe5c324a7c9d90f532", - "sha256:fc534e7cda5c6997d8c2f0148f38686a64d8b6d388f07e0718d99b6e0900b10e", - "sha256:ff23e1f405b32732d1c6697dc67e74062fb7cdfda8aae73ed63d19df3ec284e3" - ], - "version": "==1.2.5" - }, - "six": { - "hashes": [ - "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", - "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", - "version": "==1.17.0" - }, - "sqlparse": { - "hashes": [ - "sha256:12a08b3bf3eec877c519589833aed092e2444e68240a3577e8e26148acc7b1ba", - "sha256:e20d4a9b0b8585fdf63b10d30066c7c94c5d7a7ec47c889a2d83a3caa93ff28e" - ], - "markers": "python_version >= '3.8'", - "version": "==0.5.5" - }, - "typing-extensions": { - "hashes": [ - "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", - "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548" - ], - "index": "pypi", - "markers": "python_version >= '3.9'", - "version": "==4.15.0" - }, - "tzlocal": { - "hashes": [ - "sha256:024d11221ff83453eae1f608f09b145b9779e1345d08c15404ce8ff7917cf629", - "sha256:41e1293f80d4b5ff38dff222601a8fbd06b4fdcaf25e224704047ad26a39af54" - ], - "markers": "python_version >= '3.10'", - "version": "==5.4" - } - }, - "develop": { - "alabaster": { - "hashes": [ - "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65", - "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92" - ], - "markers": "python_version >= '3.9'", - "version": "==0.7.16" - }, - "asgiref": { - "hashes": [ - "sha256:5f184dc43b7e763efe848065441eac62229c9f7b0475f41f80e207a114eda4ce", - "sha256:e8667a091e69529631969fd45dc268fa79b99c92c5fcdda727757e52146ec133" - ], - "markers": "python_version >= '3.9'", - "version": "==3.11.1" - }, - "babel": { - "hashes": [ - "sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d", - "sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35" - ], - "markers": "python_version >= '3.8'", - "version": "==2.18.0" - }, - "certifi": { - "hashes": [ - "sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897", - "sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d" - ], - "markers": "python_version >= '3.7'", - "version": "==2026.5.20" - }, - "charset-normalizer": { - "hashes": [ - "sha256:007d05ec7321d12a40227aae9e2bc6dca73f3cb21058999a1df9e193555a9dcc", - "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c", - "sha256:07d9e39b01743c3717745f4c530a6349eadbfa043c7577eef86c502c15df2c67", - "sha256:08e721811161356f97b4059a9ba7bafb23ea5ee2255402c42881c214e173c6b4", - "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0", - "sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c", - "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5", - "sha256:12a6fff75f6bc66711b73a2f0addfc4c8c15a20e805146a02d147a318962c444", - "sha256:12d8baf840cc7889b37c7c770f478adea7adce3dcb3944d02ec87508e2dcf153", - "sha256:14265bfe1f09498b9d8ec91e9ec9fa52775edf90fcbde092b25f4a33d444fea9", - "sha256:16d971e29578a5e97d7117866d15889a4a07befe0e87e703ed63cd90cb348c01", - "sha256:177a0ba5f0211d488e295aaf82707237e331c24788d8d76c96c5a41594723217", - "sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b432e2bddb686228282d10b", - "sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2ce09f67f5a68048d477c", - "sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a", - "sha256:1dc8b0ea451d6e69735094606991f32867807881400f808a106ee1d963c46a83", - "sha256:1efde3cae86c8c273f1eb3b287be7d8499420cf2fe7585c41d370d3e790054a5", - "sha256:202389074300232baeb53ae2569a60901f7efadd4245cf3a3bf0617d60b439d7", - "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb", - "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c", - "sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1", - "sha256:2cd4a60d0e2fb04537162c62bbbb4182f53541fe0ede35cdf270a1c1e723cc42", - "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab", - "sha256:2fe249cb4651fd12605b7288b24751d8bfd46d35f12a20b1ba33dea122e690df", - "sha256:30b8d1d8c52a48c2c5690e152c169b673487a2a58de1ec7393196753063fcd5e", - "sha256:320ade88cfb846b8cd6b4ddf5ee9e80ee0c1f52401f2456b84ae1ae6a1a5f207", - "sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18", - "sha256:36836d6ff945a00b88ba1e4572d721e60b5b8c98c155d465f56ad19d68f23734", - "sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36158b6f04000043dbf38", - "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110", - "sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18", - "sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44", - "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d", - "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48", - "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e", - "sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5", - "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d", - "sha256:4e5163c14bffd570ef2affbfdd77bba66383890797df43dc8b4cc7d6f500bf53", - "sha256:511ef87c8aec0783e08ac18565a16d435372bc1ac25a91e6ac7f5ef2b0bff790", - "sha256:532bc9bf33a68613fd7d65e4b1c71a6a38d7d42604ecf239c77392e9b4e8998c", - "sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b", - "sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116", - "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d", - "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10", - "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6", - "sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2", - "sha256:6370e8686f662e6a3941ee48ed4742317cafbe5707e36406e9df792cdb535776", - "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a", - "sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe458fe8e4361215df40265", - "sha256:66671f93accb62ed07da56613636f3641f1a12c13046ce91ffc923721f23c008", - "sha256:6696b7688f54f5af4462118f0bfa7c1621eeb87154f77fa04b9295ce7a8f2943", - "sha256:6785f414ae0f3c733c437e0f3929197934f526d19dfaa75e18fdb4f94c6fb374", - "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246", - "sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e", - "sha256:6e0d51f618228538a3e8f46bd246f87a6cd030565e015803691603f55e12afb5", - "sha256:6ed74185b2db44f41ef35fd1617c5888e59792da9bbc9190d6c7300617182616", - "sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15", - "sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41", - "sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960", - "sha256:750e02e074872a3fad7f233b47734166440af3cdea0add3e95163110816d6752", - "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e", - "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72", - "sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7", - "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8", - "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b", - "sha256:813c0e0132266c08eb87469a642cb30aaff57c5f426255419572aaeceeaa7bf4", - "sha256:82b271f5137d07749f7bf32f70b17ab6eaabedd297e75dce75081a24f76eb545", - "sha256:84c018e49c3bf790f9c2771c45e9313a08c2c2a6342b162cd650258b57817706", - "sha256:8751d2787c9131302398b11e6c8068053dcb55d5a8964e114b6e196cf16cb366", - "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb", - "sha256:87fad7d9ba98c86bcb41b2dc8dbb326619be2562af1f8ff50776a39e55721c5a", - "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e", - "sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e83f855c00", - "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f", - "sha256:94e1885b270625a9a828c9793b4d52a64445299baa1fea5a173bf1d3dd9a1a5a", - "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1", - "sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66", - "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356", - "sha256:a6c5863edfbe888d9eff9c8b8087354e27618d9da76425c119293f11712a6319", - "sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4", - "sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301b1ad", - "sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6ae94c0fc596221c7f58d", - "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", - "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7", - "sha256:aef65cd602a6d0e0ff6f9930fcb1c8fec60dd2cfcb6facaf4bdb0e5873042db0", - "sha256:af21eb4409a119e365397b2adbaca4c9ccab56543a65d5dbd9f920d6ac29f686", - "sha256:b14b2d9dac08e28bb8046a1a0434b1750eb221c8f5b87a68f4fa11a6f97b5e34", - "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49", - "sha256:bb8cc7534f51d9a017b93e3e85b260924f909601c3df002bcdb58ddb4dc41a5c", - "sha256:bc17a677b21b3502a21f66a8cc64f5bfad4df8a0b8434d661666f8ce90ac3af1", - "sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e", - "sha256:bd9b23791fe793e4968dba0c447e12f78e425c59fc0e3b97f6450f4781f3ee60", - "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0", - "sha256:c0f081d69a6e58272819b70288d3221a6ee64b98df852631c80f293514d3b274", - "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d", - "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0", - "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae", - "sha256:c593052c465475e64bbfe5dbd81680f64a67fdc752c56d7a0ae205dc8aeefe0f", - "sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c455979c639bf5a5dcdc46617d", - "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe", - "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3", - "sha256:cf29836da5119f3c8a8a70667b0ef5fdca3bb12f80fd06487cfa575b3909b393", - "sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096084ceca1", - "sha256:d560742f3c0d62afaccf9f41fe485ed69bd7661a241f86a3ef0f0fb8b1a397af", - "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44", - "sha256:d61f00a0869d77422d9b2aba989e2d24afa6ffd552af442e0e58de4f35ea6d00", - "sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b29b8b57b2a3cd7d22c", - "sha256:dca4bbc466a95ba9c0234ef56d7dd9509f63da22274589ebd4ed7f1f4d4c54e3", - "sha256:dd915403e231e6b1809fe9b6d9fc55cf8fb5e02765ac625d9cd623342a7905d7", - "sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd", - "sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8294c8bf612cba65a2c9e", - "sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b", - "sha256:e17b8d5d6a8c47c85e68ca8379def1303fd360c3e22093a807cd34a71cd082b8", - "sha256:e5f4d355f0a2b1a31bc3edec6795b46324349c9cb25eed068049e4f472fb4259", - "sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859", - "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46", - "sha256:e80c8378d8f3d83cd3164da1ad2df9e37a666cdde7b1cb2298ed0b558064be30", - "sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b", - "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46", - "sha256:ed065083d0898c9d5b4bbec7b026fd755ff7454e6e8b73a67f8c744b13986e24", - "sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a", - "sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24", - "sha256:f22dec1690b584cea26fade98b2435c132c1b5f68e39f5a0b7627cd7ae31f1dc", - "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215", - "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063", - "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832", - "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6", - "sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79", - "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464" - ], - "markers": "python_version >= '3.7'", - "version": "==3.4.7" - }, - "django": { - "hashes": [ - "sha256:4d07aaf1c62f9984842b67c2874ebbf7056a17be253860299b93ae1881faad65", - "sha256:4ebc7a434e3819db6cf4b399fb5b3f536310a30e8486f08b66886840be84b37c" - ], - "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==4.2.30" - }, - "django-extensions": { - "hashes": [ - "sha256:44d27919d04e23b3f40231c4ab7af4e61ce832ef46d610cc650d53e68328410a", - "sha256:9600b7562f79a92cbf1fde6403c04fee314608fefbb595502e34383ae8203401" - ], - "index": "pypi", - "markers": "python_version >= '3.6'", - "version": "==3.2.3" - }, - "docutils": { - "hashes": [ - "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6", - "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b" - ], - "markers": "python_version >= '3.7'", - "version": "==0.20.1" - }, - "faker": { - "hashes": [ - "sha256:25c5be99bc5fd8676eea8c1490e0de87f6d9734651c7af2cefc99b322b2936f4", - "sha256:920f94d5aa865fd922bc29f2cf75c75b4d86b30eec23e7174d7513241b759b05" - ], - "index": "pypi", - "markers": "python_version >= '3.6'", - "version": "==13.16.0" - }, - "idna": { - "hashes": [ - "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", - "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848" - ], - "markers": "python_version >= '3.9'", - "version": "==3.18" - }, - "imagesize": { - "hashes": [ - "sha256:5667c5bbb57ab3f1fa4bc366f4fbc971db3d5ed011fd2715fd8001f782718d96", - "sha256:8e8358c4a05c304f1fccf7ff96f036e7243a189e9e42e90851993c558cfe9ee3" - ], - "markers": "python_version >= '3.10' and python_version < '3.15'", - "version": "==2.0.0" - }, - "jinja2": { - "hashes": [ - "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", - "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67" - ], - "markers": "python_version >= '3.7'", - "version": "==3.1.6" - }, - "markupsafe": { - "hashes": [ - "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f", - "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", - "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", - "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", - "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", - "sha256:0f4b68347f8c5eab4a13419215bdfd7f8c9b19f2b25520968adfad23eb0ce60c", - "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", - "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", - "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", - "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", - "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", - "sha256:15d939a21d546304880945ca1ecb8a039db6b4dc49b2c5a400387cdae6a62e26", - "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1", - "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", - "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", - "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", - "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695", - "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", - "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", - "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", - "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", - "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa", - "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", - "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", - "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", - "sha256:3537e01efc9d4dccdf77221fb1cb3b8e1a38d5428920e0657ce299b20324d758", - "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", - "sha256:38664109c14ffc9e7437e86b4dceb442b0096dfe3541d7864d9cbe1da4cf36c8", - "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", - "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", - "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", - "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", - "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", - "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", - "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", - "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", - "sha256:591ae9f2a647529ca990bc681daebdd52c8791ff06c2bfa05b65163e28102ef2", - "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", - "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", - "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", - "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", - "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", - "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", - "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", - "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", - "sha256:7c3fb7d25180895632e5d3148dbdc29ea38ccb7fd210aa27acbd1201a1902c6e", - "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", - "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", - "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", - "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", - "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", - "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", - "sha256:949b8d66bc381ee8b007cd945914c721d9aba8e27f71959d750a46f7c282b20b", - "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", - "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", - "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", - "sha256:a320721ab5a1aba0a233739394eb907f8c8da5c98c9181d1161e77a0c8e36f2d", - "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", - "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", - "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", - "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", - "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", - "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", - "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", - "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c", - "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", - "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8", - "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", - "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6", - "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", - "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", - "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", - "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", - "sha256:df2449253ef108a379b8b5d6b43f4b1a8e81a061d6537becd5582fba5f9196d7", - "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", - "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", - "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1", - "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", - "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", - "sha256:e8fc20152abba6b83724d7ff268c249fa196d8259ff481f3b1476383f8f24e42", - "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", - "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", - "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", - "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", - "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", - "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591", - "sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc", - "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", - "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50" - ], - "markers": "python_version >= '3.9'", - "version": "==3.0.3" - }, - "packaging": { - "hashes": [ - "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", - "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661" - ], - "markers": "python_version >= '3.8'", - "version": "==26.2" - }, - "pex": { - "hashes": [ - "sha256:2aa41145628626a85151fdfba418d5e150e4f11316769c19da87563a64c739c7", - "sha256:84f70005efa4631063fda1d01bf79e72e38d12af1da59a679c8c4dbb6036d345", - "sha256:9b0a3d433fccc9455928c3ca991f1efb8e9ca56f948746901c79de938781575a" - ], - "index": "pypi", - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '3.16'", - "version": "==2.96.0" - }, - "pygments": { - "hashes": [ - "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", - "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176" - ], - "markers": "python_version >= '3.9'", - "version": "==2.20.0" - }, - "python-dateutil": { - "hashes": [ - "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", - "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", - "version": "==2.9.0.post0" - }, - "requests": { - "hashes": [ - "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", - "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed" - ], - "index": "pypi", - "markers": "python_version >= '3.10'", - "version": "==2.34.2" - }, - "setuptools": { - "hashes": [ - "sha256:7d872682c5d01cfde07da7bccc7b65469d3dca203318515ada1de5eda35efbf9", - "sha256:a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb" - ], - "index": "pypi", - "markers": "python_version >= '3.9'", - "version": "==82.0.1" - }, - "six": { - "hashes": [ - "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", - "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", - "version": "==1.17.0" - }, - "snowballstemmer": { - "hashes": [ - "sha256:7e207fa178741da09cdee59d3ecec3827ad5f92b1fc5c9ff3755b639f71f5752", - "sha256:e07bbc54a0d798fe6010a12398422e62a8bfbba95c394fd0956ef58cb4d3e260" - ], - "markers": "python_version >= '3.3'", - "version": "==3.1.1" - }, - "sphinx": { - "hashes": [ - "sha256:242f92a7ea7e6c5b406fdc2615413890ba9f699114a9c09192d7dfead2ee9cfe", - "sha256:c2419e2135d11f1951cd994d6eb18a1835bd8fdd8429f9ca375dc1f3281bd239" - ], - "index": "pypi", - "markers": "python_version >= '3.9'", - "version": "==7.4.7" - }, - "sphinx-rtd-theme": { - "hashes": [ - "sha256:bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b", - "sha256:ec93d0856dc280cf3aee9a4c9807c60e027c7f7b461b77aeffed682e68f0e586" - ], - "index": "pypi", - "markers": "python_version >= '3.6'", - "version": "==2.0.0" - }, - "sphinxcontrib-applehelp": { - "hashes": [ - "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1", - "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5" - ], - "markers": "python_version >= '3.9'", - "version": "==2.0.0" - }, - "sphinxcontrib-devhelp": { - "hashes": [ - "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad", - "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2" - ], - "markers": "python_version >= '3.9'", - "version": "==2.0.0" - }, - "sphinxcontrib-htmlhelp": { - "hashes": [ - "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8", - "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9" - ], - "markers": "python_version >= '3.9'", - "version": "==2.1.0" - }, - "sphinxcontrib-jquery": { - "hashes": [ - "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a", - "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae" - ], - "markers": "python_version >= '2.7'", - "version": "==4.1" - }, - "sphinxcontrib-jsmath": { - "hashes": [ - "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178", - "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8" - ], - "markers": "python_version >= '3.5'", - "version": "==1.0.1" - }, - "sphinxcontrib-qthelp": { - "hashes": [ - "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab", - "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb" - ], - "markers": "python_version >= '3.9'", - "version": "==2.0.0" - }, - "sphinxcontrib-serializinghtml": { - "hashes": [ - "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331", - "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d" - ], - "markers": "python_version >= '3.9'", - "version": "==2.0.0" - }, - "sqlparse": { - "hashes": [ - "sha256:12a08b3bf3eec877c519589833aed092e2444e68240a3577e8e26148acc7b1ba", - "sha256:e20d4a9b0b8585fdf63b10d30066c7c94c5d7a7ec47c889a2d83a3caa93ff28e" - ], - "markers": "python_version >= '3.8'", - "version": "==0.5.5" - }, - "tblib": { - "hashes": [ - "sha256:26bdccf339bcce6a88b2b5432c988b266ebbe63a4e593f6b578b1d2e723d2b76", - "sha256:e9a652692d91bf4f743d4a15bc174c0b76afc750fe8c7b6d195cc1c1d6d2ccec" - ], - "index": "pypi", - "markers": "python_version >= '3.9'", - "version": "==3.2.2" - }, - "urllib3": { - "hashes": [ - "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", - "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897" - ], - "markers": "python_version >= '3.10'", - "version": "==2.7.0" - }, - "werkzeug": { - "hashes": [ - "sha256:63a77fb8892bf28ebc3178683445222aa500e48ebad5ec77b0ad80f8726b1f50", - "sha256:9bad61a4268dac112f1c5cd4630a56ede601b6ed420300677a869083d70a4c44" - ], - "index": "pypi", - "markers": "python_version >= '3.9'", - "version": "==3.1.8" - } - }, - "production": { - "asgiref": { - "hashes": [ - "sha256:5f184dc43b7e763efe848065441eac62229c9f7b0475f41f80e207a114eda4ce", - "sha256:e8667a091e69529631969fd45dc268fa79b99c92c5fcdda727757e52146ec133" - ], - "markers": "python_version >= '3.9'", - "version": "==3.11.1" - }, - "certifi": { - "hashes": [ - "sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897", - "sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d" - ], - "markers": "python_version >= '3.7'", - "version": "==2026.5.20" - }, - "django": { - "hashes": [ - "sha256:4d07aaf1c62f9984842b67c2874ebbf7056a17be253860299b93ae1881faad65", - "sha256:4ebc7a434e3819db6cf4b399fb5b3f536310a30e8486f08b66886840be84b37c" - ], - "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==4.2.30" - }, - "sentry-sdk": { - "extras": [ - "django" - ], - "hashes": [ - "sha256:27f61d13a86c3c1648dec666dd5a64f79772dd6a84b446f11866601ecab24f6f", - "sha256:3c870b9f50d9fd15b58c817dbde1c7cfaa9fe3f05df0a4c6edd5571cb82f5491" - ], - "markers": "python_version >= '3.6'", - "version": "==2.62.0" - }, - "sqlparse": { - "hashes": [ - "sha256:12a08b3bf3eec877c519589833aed092e2444e68240a3577e8e26148acc7b1ba", - "sha256:e20d4a9b0b8585fdf63b10d30066c7c94c5d7a7ec47c889a2d83a3caa93ff28e" - ], - "markers": "python_version >= '3.8'", - "version": "==0.5.5" - }, - "urllib3": { - "hashes": [ - "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", - "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897" - ], - "markers": "python_version >= '3.10'", - "version": "==2.7.0" - } - } -} diff --git a/adminapi/__init__.py b/adminapi/__init__.py deleted file mode 100644 index decad39c4..000000000 --- a/adminapi/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -"""Serveradmin - adminapi - -Copyright (c) 2026 InnoGames GmbH -""" - -VERSION = (4, 25, 0) diff --git a/docs/requirements.txt b/docs/requirements.txt deleted file mode 100644 index 9b3a2cca5..000000000 --- a/docs/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -# Remove this once rtd merged Pipfile support: -# https://github.com/readthedocs/readthedocs.org/pull/4783 -Sphinx~=7.0.0 -sphinx_rtd_theme~=3.0.0 diff --git a/docs/source/conf.py b/docs/source/conf.py index ade2947d2..563f7b0b8 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -14,7 +14,11 @@ import sys from datetime import datetime -sys.path.insert(0, os.path.abspath('../..')) +# Make the workspace packages importable for autodoc. They are normally +# installed into the environment (uv sync); these paths also let a bare +# `sphinx-build` work without an install. +sys.path.insert(0, os.path.abspath('../../packages/adminapi')) +sys.path.insert(0, os.path.abspath('../../packages/serveradmin')) # -- Project information ----------------------------------------------------- diff --git a/docs/source/extending.rst b/docs/source/extending.rst index ca7294883..e47f7d88b 100644 --- a/docs/source/extending.rst +++ b/docs/source/extending.rst @@ -27,16 +27,16 @@ You can access the web service to execute Django commands and run scripts:: docker compose exec web # Example: Run Django management commands - pipenv run python -m serveradmin -h + uv run python -m serveradmin -h # Example: Use the Python Remote API - pipenv run python -m adminapi "hostname=example.com" + uv run python -m adminapi "hostname=example.com" **Tip** You may still want to have a virtual environment for Serveradmin on your -host machines and run pipenv install -D to have all modules available for your +host machines and run uv sync to have all modules available for your IDEs auto completion etc. @@ -65,10 +65,10 @@ manual testing. You can execute the tests with the following commands # Tests for the commandline interface: adminapi - pipenv run python -m unittest discover adminapi -v + uv run python -m unittest discover -t packages/adminapi -s packages/adminapi/adminapi -v # Tests for the backend code - pipenv run python -Wall -m serveradmin test --noinput --parallel + uv run python -Wall -m serveradmin test serveradmin --noinput --parallel Bonus: Setting up a cool debugger diff --git a/packages/adminapi/adminapi/__init__.py b/packages/adminapi/adminapi/__init__.py new file mode 100644 index 000000000..2a7e48852 --- /dev/null +++ b/packages/adminapi/adminapi/__init__.py @@ -0,0 +1,9 @@ +"""Serveradmin - adminapi + +Copyright (c) 2026 InnoGames GmbH +""" + +__version__ = "4.25.0" + +# Kept for backward compatibility (e.g. serveradmin templatetags). +VERSION = tuple(int(part) for part in __version__.split(".")) diff --git a/adminapi/__main__.py b/packages/adminapi/adminapi/__main__.py similarity index 100% rename from adminapi/__main__.py rename to packages/adminapi/adminapi/__main__.py diff --git a/adminapi/api.py b/packages/adminapi/adminapi/api.py similarity index 100% rename from adminapi/api.py rename to packages/adminapi/adminapi/api.py diff --git a/adminapi/cli.py b/packages/adminapi/adminapi/cli.py similarity index 100% rename from adminapi/cli.py rename to packages/adminapi/adminapi/cli.py diff --git a/adminapi/cmduser.py b/packages/adminapi/adminapi/cmduser.py similarity index 100% rename from adminapi/cmduser.py rename to packages/adminapi/adminapi/cmduser.py diff --git a/adminapi/dataset.py b/packages/adminapi/adminapi/dataset.py similarity index 100% rename from adminapi/dataset.py rename to packages/adminapi/adminapi/dataset.py diff --git a/adminapi/datatype.py b/packages/adminapi/adminapi/datatype.py similarity index 100% rename from adminapi/datatype.py rename to packages/adminapi/adminapi/datatype.py diff --git a/adminapi/encoder.py b/packages/adminapi/adminapi/encoder.py similarity index 100% rename from adminapi/encoder.py rename to packages/adminapi/adminapi/encoder.py diff --git a/adminapi/exceptions.py b/packages/adminapi/adminapi/exceptions.py similarity index 100% rename from adminapi/exceptions.py rename to packages/adminapi/adminapi/exceptions.py diff --git a/adminapi/filters.py b/packages/adminapi/adminapi/filters.py similarity index 100% rename from adminapi/filters.py rename to packages/adminapi/adminapi/filters.py diff --git a/adminapi/parse.py b/packages/adminapi/adminapi/parse.py similarity index 100% rename from adminapi/parse.py rename to packages/adminapi/adminapi/parse.py diff --git a/adminapi/request.py b/packages/adminapi/adminapi/request.py similarity index 100% rename from adminapi/request.py rename to packages/adminapi/adminapi/request.py diff --git a/adminapi/tests/__init__.py b/packages/adminapi/adminapi/tests/__init__.py similarity index 100% rename from adminapi/tests/__init__.py rename to packages/adminapi/adminapi/tests/__init__.py diff --git a/adminapi/tests/test_cli.py b/packages/adminapi/adminapi/tests/test_cli.py similarity index 100% rename from adminapi/tests/test_cli.py rename to packages/adminapi/adminapi/tests/test_cli.py diff --git a/adminapi/tests/test_dataset.py b/packages/adminapi/adminapi/tests/test_dataset.py similarity index 100% rename from adminapi/tests/test_dataset.py rename to packages/adminapi/adminapi/tests/test_dataset.py diff --git a/adminapi/tests/test_parse.py b/packages/adminapi/adminapi/tests/test_parse.py similarity index 100% rename from adminapi/tests/test_parse.py rename to packages/adminapi/adminapi/tests/test_parse.py diff --git a/packages/adminapi/pyproject.toml b/packages/adminapi/pyproject.toml new file mode 100644 index 000000000..4d53f2f29 --- /dev/null +++ b/packages/adminapi/pyproject.toml @@ -0,0 +1,29 @@ +[project] +name = "adminapi" +description = "Serveradmin client library and CLI" +requires-python = ">=3.11,<3.14" +dynamic = ["version"] +authors = [ + { name = "InnoGames System Administration", email = "it@innogames.com" }, +] +license = { text = "MIT" } +dependencies = [ + "paramiko>=2.7,<4", + "netaddr>=0.8.0,<1.4.0", +] + +[project.urls] +Homepage = "https://github.com/innogames/serveradmin" + +[project.scripts] +adminapi = "adminapi.__main__:main" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.version] +path = "adminapi/__init__.py" + +[tool.hatch.build.targets.wheel] +packages = ["adminapi"] diff --git a/packages/serveradmin/pyproject.toml b/packages/serveradmin/pyproject.toml new file mode 100644 index 000000000..a45cf1c87 --- /dev/null +++ b/packages/serveradmin/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "serveradmin" +description = "Serveradmin — Django server inventory backend" +requires-python = ">=3.11,<3.14" +dynamic = ["version"] +authors = [ + { name = "InnoGames System Administration", email = "it@innogames.com" }, +] +license = { text = "MIT" } +dependencies = [ + "adminapi", + "Django~=5.2", + "psycopg2-binary~=2.9", + "django-netfields<2.0.0", + "Pillow~=10.0", + "dateparser~=1.1", + "django-environ<1.0.0", + "django-compressor~=4.6", + "typing-extensions", +] + +[project.optional-dependencies] +production = ["sentry-sdk[django]"] + +[project.urls] +Homepage = "https://github.com/innogames/serveradmin" + +[project.scripts] +serveradmin = "serveradmin.__main__:main" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.version] +path = "serveradmin/__init__.py" + +[tool.hatch.build.targets.wheel] +packages = ["serveradmin"] + +[tool.uv.sources] +adminapi = { workspace = true } diff --git a/serveradmin/__init__.py b/packages/serveradmin/serveradmin/__init__.py similarity index 69% rename from serveradmin/__init__.py rename to packages/serveradmin/serveradmin/__init__.py index fa0aaaaca..229b6e447 100644 --- a/serveradmin/__init__.py +++ b/packages/serveradmin/serveradmin/__init__.py @@ -2,3 +2,5 @@ Copyright (c) 2020 InnoGames GmbH """ + +__version__ = "4.25.0" diff --git a/serveradmin/__main__.py b/packages/serveradmin/serveradmin/__main__.py similarity index 100% rename from serveradmin/__main__.py rename to packages/serveradmin/serveradmin/__main__.py diff --git a/serveradmin/access_control/__init__.py b/packages/serveradmin/serveradmin/access_control/__init__.py similarity index 100% rename from serveradmin/access_control/__init__.py rename to packages/serveradmin/serveradmin/access_control/__init__.py diff --git a/serveradmin/access_control/admin.py b/packages/serveradmin/serveradmin/access_control/admin.py similarity index 100% rename from serveradmin/access_control/admin.py rename to packages/serveradmin/serveradmin/access_control/admin.py diff --git a/serveradmin/access_control/fixtures/access_control.json b/packages/serveradmin/serveradmin/access_control/fixtures/access_control.json similarity index 100% rename from serveradmin/access_control/fixtures/access_control.json rename to packages/serveradmin/serveradmin/access_control/fixtures/access_control.json diff --git a/serveradmin/access_control/fixtures/apps.json b/packages/serveradmin/serveradmin/access_control/fixtures/apps.json similarity index 100% rename from serveradmin/access_control/fixtures/apps.json rename to packages/serveradmin/serveradmin/access_control/fixtures/apps.json diff --git a/serveradmin/access_control/fixtures/auth_user.json b/packages/serveradmin/serveradmin/access_control/fixtures/auth_user.json similarity index 100% rename from serveradmin/access_control/fixtures/auth_user.json rename to packages/serveradmin/serveradmin/access_control/fixtures/auth_user.json diff --git a/serveradmin/access_control/fixtures/serverdb.json b/packages/serveradmin/serveradmin/access_control/fixtures/serverdb.json similarity index 100% rename from serveradmin/access_control/fixtures/serverdb.json rename to packages/serveradmin/serveradmin/access_control/fixtures/serverdb.json diff --git a/serveradmin/access_control/migrations/0001_initial.py b/packages/serveradmin/serveradmin/access_control/migrations/0001_initial.py similarity index 100% rename from serveradmin/access_control/migrations/0001_initial.py rename to packages/serveradmin/serveradmin/access_control/migrations/0001_initial.py diff --git a/serveradmin/access_control/migrations/0002_whitelist_blacklist_toggle.py b/packages/serveradmin/serveradmin/access_control/migrations/0002_whitelist_blacklist_toggle.py similarity index 100% rename from serveradmin/access_control/migrations/0002_whitelist_blacklist_toggle.py rename to packages/serveradmin/serveradmin/access_control/migrations/0002_whitelist_blacklist_toggle.py diff --git a/serveradmin/access_control/migrations/0003_accesscontrolgroup_description.py b/packages/serveradmin/serveradmin/access_control/migrations/0003_accesscontrolgroup_description.py similarity index 100% rename from serveradmin/access_control/migrations/0003_accesscontrolgroup_description.py rename to packages/serveradmin/serveradmin/access_control/migrations/0003_accesscontrolgroup_description.py diff --git a/serveradmin/access_control/migrations/__init__.py b/packages/serveradmin/serveradmin/access_control/migrations/__init__.py similarity index 100% rename from serveradmin/access_control/migrations/__init__.py rename to packages/serveradmin/serveradmin/access_control/migrations/__init__.py diff --git a/serveradmin/access_control/models.py b/packages/serveradmin/serveradmin/access_control/models.py similarity index 100% rename from serveradmin/access_control/models.py rename to packages/serveradmin/serveradmin/access_control/models.py diff --git a/serveradmin/access_control/tests/__init__.py b/packages/serveradmin/serveradmin/access_control/tests/__init__.py similarity index 100% rename from serveradmin/access_control/tests/__init__.py rename to packages/serveradmin/serveradmin/access_control/tests/__init__.py diff --git a/serveradmin/access_control/tests/test_acl.py b/packages/serveradmin/serveradmin/access_control/tests/test_acl.py similarity index 100% rename from serveradmin/access_control/tests/test_acl.py rename to packages/serveradmin/serveradmin/access_control/tests/test_acl.py diff --git a/serveradmin/api/__init__.py b/packages/serveradmin/serveradmin/api/__init__.py similarity index 100% rename from serveradmin/api/__init__.py rename to packages/serveradmin/serveradmin/api/__init__.py diff --git a/serveradmin/api/api.py b/packages/serveradmin/serveradmin/api/api.py similarity index 100% rename from serveradmin/api/api.py rename to packages/serveradmin/serveradmin/api/api.py diff --git a/serveradmin/api/apps.py b/packages/serveradmin/serveradmin/api/apps.py similarity index 100% rename from serveradmin/api/apps.py rename to packages/serveradmin/serveradmin/api/apps.py diff --git a/serveradmin/api/decorators.py b/packages/serveradmin/serveradmin/api/decorators.py similarity index 98% rename from serveradmin/api/decorators.py rename to packages/serveradmin/serveradmin/api/decorators.py index f2f637cda..dc29f2903 100644 --- a/serveradmin/api/decorators.py +++ b/packages/serveradmin/serveradmin/api/decorators.py @@ -3,7 +3,7 @@ Copyright (c) 2019 InnoGames GmbH """ -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone as dt_timezone from functools import update_wrapper from logging import getLogger from base64 import b64decode @@ -55,7 +55,7 @@ def _wrapper(request): token = request.META.get('HTTP_X_SECURITYTOKEN') then = datetime.utcfromtimestamp( int(request.META['HTTP_X_TIMESTAMP']) - ).replace(tzinfo=timezone.utc) + ).replace(tzinfo=dt_timezone.utc) body_json = json.loads(body) if body else None status_code = 200 diff --git a/serveradmin/api/migrations/0001_api_lock.py b/packages/serveradmin/serveradmin/api/migrations/0001_api_lock.py similarity index 100% rename from serveradmin/api/migrations/0001_api_lock.py rename to packages/serveradmin/serveradmin/api/migrations/0001_api_lock.py diff --git a/serveradmin/api/migrations/__init__.py b/packages/serveradmin/serveradmin/api/migrations/__init__.py similarity index 100% rename from serveradmin/api/migrations/__init__.py rename to packages/serveradmin/serveradmin/api/migrations/__init__.py diff --git a/serveradmin/api/models.py b/packages/serveradmin/serveradmin/api/models.py similarity index 100% rename from serveradmin/api/models.py rename to packages/serveradmin/serveradmin/api/models.py diff --git a/serveradmin/api/urls.py b/packages/serveradmin/serveradmin/api/urls.py similarity index 100% rename from serveradmin/api/urls.py rename to packages/serveradmin/serveradmin/api/urls.py diff --git a/serveradmin/api/utils.py b/packages/serveradmin/serveradmin/api/utils.py similarity index 100% rename from serveradmin/api/utils.py rename to packages/serveradmin/serveradmin/api/utils.py diff --git a/serveradmin/api/views.py b/packages/serveradmin/serveradmin/api/views.py similarity index 100% rename from serveradmin/api/views.py rename to packages/serveradmin/serveradmin/api/views.py diff --git a/serveradmin/apps/__init__.py b/packages/serveradmin/serveradmin/apps/__init__.py similarity index 100% rename from serveradmin/apps/__init__.py rename to packages/serveradmin/serveradmin/apps/__init__.py diff --git a/serveradmin/apps/admin.py b/packages/serveradmin/serveradmin/apps/admin.py similarity index 100% rename from serveradmin/apps/admin.py rename to packages/serveradmin/serveradmin/apps/admin.py diff --git a/serveradmin/apps/management/__init__.py b/packages/serveradmin/serveradmin/apps/management/__init__.py similarity index 100% rename from serveradmin/apps/management/__init__.py rename to packages/serveradmin/serveradmin/apps/management/__init__.py diff --git a/serveradmin/apps/management/commands/__init__.py b/packages/serveradmin/serveradmin/apps/management/commands/__init__.py similarity index 100% rename from serveradmin/apps/management/commands/__init__.py rename to packages/serveradmin/serveradmin/apps/management/commands/__init__.py diff --git a/serveradmin/apps/management/commands/createapp.py b/packages/serveradmin/serveradmin/apps/management/commands/createapp.py similarity index 100% rename from serveradmin/apps/management/commands/createapp.py rename to packages/serveradmin/serveradmin/apps/management/commands/createapp.py diff --git a/serveradmin/apps/migrations/0001_initial.py b/packages/serveradmin/serveradmin/apps/migrations/0001_initial.py similarity index 100% rename from serveradmin/apps/migrations/0001_initial.py rename to packages/serveradmin/serveradmin/apps/migrations/0001_initial.py diff --git a/serveradmin/apps/migrations/0002_public_key_support.py b/packages/serveradmin/serveradmin/apps/migrations/0002_public_key_support.py similarity index 100% rename from serveradmin/apps/migrations/0002_public_key_support.py rename to packages/serveradmin/serveradmin/apps/migrations/0002_public_key_support.py diff --git a/serveradmin/apps/migrations/0003_public_key_length.py b/packages/serveradmin/serveradmin/apps/migrations/0003_public_key_length.py similarity index 100% rename from serveradmin/apps/migrations/0003_public_key_length.py rename to packages/serveradmin/serveradmin/apps/migrations/0003_public_key_length.py diff --git a/serveradmin/apps/migrations/0004_application_last_login.py b/packages/serveradmin/serveradmin/apps/migrations/0004_application_last_login.py similarity index 100% rename from serveradmin/apps/migrations/0004_application_last_login.py rename to packages/serveradmin/serveradmin/apps/migrations/0004_application_last_login.py diff --git a/serveradmin/apps/migrations/__init__.py b/packages/serveradmin/serveradmin/apps/migrations/__init__.py similarity index 100% rename from serveradmin/apps/migrations/__init__.py rename to packages/serveradmin/serveradmin/apps/migrations/__init__.py diff --git a/serveradmin/apps/models.py b/packages/serveradmin/serveradmin/apps/models.py similarity index 100% rename from serveradmin/apps/models.py rename to packages/serveradmin/serveradmin/apps/models.py diff --git a/serveradmin/common/__init__.py b/packages/serveradmin/serveradmin/common/__init__.py similarity index 100% rename from serveradmin/common/__init__.py rename to packages/serveradmin/serveradmin/common/__init__.py diff --git a/serveradmin/common/context_processors.py b/packages/serveradmin/serveradmin/common/context_processors.py similarity index 100% rename from serveradmin/common/context_processors.py rename to packages/serveradmin/serveradmin/common/context_processors.py diff --git a/serveradmin/common/management/__init__.py b/packages/serveradmin/serveradmin/common/management/__init__.py similarity index 100% rename from serveradmin/common/management/__init__.py rename to packages/serveradmin/serveradmin/common/management/__init__.py diff --git a/serveradmin/common/management/commands/__init__.py b/packages/serveradmin/serveradmin/common/management/commands/__init__.py similarity index 100% rename from serveradmin/common/management/commands/__init__.py rename to packages/serveradmin/serveradmin/common/management/commands/__init__.py diff --git a/serveradmin/common/management/commands/createdefaultuser.py b/packages/serveradmin/serveradmin/common/management/commands/createdefaultuser.py similarity index 100% rename from serveradmin/common/management/commands/createdefaultuser.py rename to packages/serveradmin/serveradmin/common/management/commands/createdefaultuser.py diff --git a/serveradmin/common/static/css/bootstrap.css b/packages/serveradmin/serveradmin/common/static/css/bootstrap.css similarity index 100% rename from serveradmin/common/static/css/bootstrap.css rename to packages/serveradmin/serveradmin/common/static/css/bootstrap.css diff --git a/serveradmin/common/static/css/bootstrap.min.css b/packages/serveradmin/serveradmin/common/static/css/bootstrap.min.css similarity index 100% rename from serveradmin/common/static/css/bootstrap.min.css rename to packages/serveradmin/serveradmin/common/static/css/bootstrap.min.css diff --git a/serveradmin/common/static/css/serveradmin.css b/packages/serveradmin/serveradmin/common/static/css/serveradmin.css similarity index 100% rename from serveradmin/common/static/css/serveradmin.css rename to packages/serveradmin/serveradmin/common/static/css/serveradmin.css diff --git a/serveradmin/common/static/empty.png b/packages/serveradmin/serveradmin/common/static/empty.png similarity index 100% rename from serveradmin/common/static/empty.png rename to packages/serveradmin/serveradmin/common/static/empty.png diff --git a/serveradmin/common/static/favicon.ico b/packages/serveradmin/serveradmin/common/static/favicon.ico similarity index 100% rename from serveradmin/common/static/favicon.ico rename to packages/serveradmin/serveradmin/common/static/favicon.ico diff --git a/serveradmin/common/static/icons/alarm-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/alarm-fill.svg similarity index 100% rename from serveradmin/common/static/icons/alarm-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/alarm-fill.svg diff --git a/serveradmin/common/static/icons/alarm.svg b/packages/serveradmin/serveradmin/common/static/icons/alarm.svg similarity index 100% rename from serveradmin/common/static/icons/alarm.svg rename to packages/serveradmin/serveradmin/common/static/icons/alarm.svg diff --git a/serveradmin/common/static/icons/alert-circle-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/alert-circle-fill.svg similarity index 100% rename from serveradmin/common/static/icons/alert-circle-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/alert-circle-fill.svg diff --git a/serveradmin/common/static/icons/alert-circle.svg b/packages/serveradmin/serveradmin/common/static/icons/alert-circle.svg similarity index 100% rename from serveradmin/common/static/icons/alert-circle.svg rename to packages/serveradmin/serveradmin/common/static/icons/alert-circle.svg diff --git a/serveradmin/common/static/icons/alert-octagon-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/alert-octagon-fill.svg similarity index 100% rename from serveradmin/common/static/icons/alert-octagon-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/alert-octagon-fill.svg diff --git a/serveradmin/common/static/icons/alert-octagon.svg b/packages/serveradmin/serveradmin/common/static/icons/alert-octagon.svg similarity index 100% rename from serveradmin/common/static/icons/alert-octagon.svg rename to packages/serveradmin/serveradmin/common/static/icons/alert-octagon.svg diff --git a/serveradmin/common/static/icons/alert-square-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/alert-square-fill.svg similarity index 100% rename from serveradmin/common/static/icons/alert-square-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/alert-square-fill.svg diff --git a/serveradmin/common/static/icons/alert-square.svg b/packages/serveradmin/serveradmin/common/static/icons/alert-square.svg similarity index 100% rename from serveradmin/common/static/icons/alert-square.svg rename to packages/serveradmin/serveradmin/common/static/icons/alert-square.svg diff --git a/serveradmin/common/static/icons/alert-triangle-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/alert-triangle-fill.svg similarity index 100% rename from serveradmin/common/static/icons/alert-triangle-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/alert-triangle-fill.svg diff --git a/serveradmin/common/static/icons/alert-triangle.svg b/packages/serveradmin/serveradmin/common/static/icons/alert-triangle.svg similarity index 100% rename from serveradmin/common/static/icons/alert-triangle.svg rename to packages/serveradmin/serveradmin/common/static/icons/alert-triangle.svg diff --git a/serveradmin/common/static/icons/archive-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/archive-fill.svg similarity index 100% rename from serveradmin/common/static/icons/archive-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/archive-fill.svg diff --git a/serveradmin/common/static/icons/archive.svg b/packages/serveradmin/serveradmin/common/static/icons/archive.svg similarity index 100% rename from serveradmin/common/static/icons/archive.svg rename to packages/serveradmin/serveradmin/common/static/icons/archive.svg diff --git a/serveradmin/common/static/icons/arrow-bar-bottom.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-bar-bottom.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-bar-bottom.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-bar-bottom.svg diff --git a/serveradmin/common/static/icons/arrow-bar-left.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-bar-left.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-bar-left.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-bar-left.svg diff --git a/serveradmin/common/static/icons/arrow-bar-right.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-bar-right.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-bar-right.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-bar-right.svg diff --git a/serveradmin/common/static/icons/arrow-bar-up.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-bar-up.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-bar-up.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-bar-up.svg diff --git a/serveradmin/common/static/icons/arrow-clockwise.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-clockwise.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-clockwise.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-clockwise.svg diff --git a/serveradmin/common/static/icons/arrow-counterclockwise.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-counterclockwise.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-counterclockwise.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-counterclockwise.svg diff --git a/serveradmin/common/static/icons/arrow-down-left.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-down-left.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-down-left.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-down-left.svg diff --git a/serveradmin/common/static/icons/arrow-down-right.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-down-right.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-down-right.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-down-right.svg diff --git a/serveradmin/common/static/icons/arrow-down-short.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-down-short.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-down-short.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-down-short.svg diff --git a/serveradmin/common/static/icons/arrow-down.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-down.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-down.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-down.svg diff --git a/serveradmin/common/static/icons/arrow-left-right.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-left-right.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-left-right.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-left-right.svg diff --git a/serveradmin/common/static/icons/arrow-left-short.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-left-short.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-left-short.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-left-short.svg diff --git a/serveradmin/common/static/icons/arrow-left.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-left.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-left.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-left.svg diff --git a/serveradmin/common/static/icons/arrow-repeat.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-repeat.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-repeat.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-repeat.svg diff --git a/serveradmin/common/static/icons/arrow-right-short.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-right-short.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-right-short.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-right-short.svg diff --git a/serveradmin/common/static/icons/arrow-right.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-right.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-right.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-right.svg diff --git a/serveradmin/common/static/icons/arrow-up-down.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-up-down.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-up-down.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-up-down.svg diff --git a/serveradmin/common/static/icons/arrow-up-left.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-up-left.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-up-left.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-up-left.svg diff --git a/serveradmin/common/static/icons/arrow-up-right.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-up-right.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-up-right.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-up-right.svg diff --git a/serveradmin/common/static/icons/arrow-up-short.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-up-short.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-up-short.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-up-short.svg diff --git a/serveradmin/common/static/icons/arrow-up.svg b/packages/serveradmin/serveradmin/common/static/icons/arrow-up.svg similarity index 100% rename from serveradmin/common/static/icons/arrow-up.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrow-up.svg diff --git a/serveradmin/common/static/icons/arrows-angle-contract.svg b/packages/serveradmin/serveradmin/common/static/icons/arrows-angle-contract.svg similarity index 100% rename from serveradmin/common/static/icons/arrows-angle-contract.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrows-angle-contract.svg diff --git a/serveradmin/common/static/icons/arrows-angle-expand.svg b/packages/serveradmin/serveradmin/common/static/icons/arrows-angle-expand.svg similarity index 100% rename from serveradmin/common/static/icons/arrows-angle-expand.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrows-angle-expand.svg diff --git a/serveradmin/common/static/icons/arrows-collapse.svg b/packages/serveradmin/serveradmin/common/static/icons/arrows-collapse.svg similarity index 100% rename from serveradmin/common/static/icons/arrows-collapse.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrows-collapse.svg diff --git a/serveradmin/common/static/icons/arrows-expand.svg b/packages/serveradmin/serveradmin/common/static/icons/arrows-expand.svg similarity index 100% rename from serveradmin/common/static/icons/arrows-expand.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrows-expand.svg diff --git a/serveradmin/common/static/icons/arrows-fullscreen.svg b/packages/serveradmin/serveradmin/common/static/icons/arrows-fullscreen.svg similarity index 100% rename from serveradmin/common/static/icons/arrows-fullscreen.svg rename to packages/serveradmin/serveradmin/common/static/icons/arrows-fullscreen.svg diff --git a/serveradmin/common/static/icons/at.svg b/packages/serveradmin/serveradmin/common/static/icons/at.svg similarity index 100% rename from serveradmin/common/static/icons/at.svg rename to packages/serveradmin/serveradmin/common/static/icons/at.svg diff --git a/serveradmin/common/static/icons/award.svg b/packages/serveradmin/serveradmin/common/static/icons/award.svg similarity index 100% rename from serveradmin/common/static/icons/award.svg rename to packages/serveradmin/serveradmin/common/static/icons/award.svg diff --git a/serveradmin/common/static/icons/backspace-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/backspace-fill.svg similarity index 100% rename from serveradmin/common/static/icons/backspace-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/backspace-fill.svg diff --git a/serveradmin/common/static/icons/backspace-reverse-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/backspace-reverse-fill.svg similarity index 100% rename from serveradmin/common/static/icons/backspace-reverse-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/backspace-reverse-fill.svg diff --git a/serveradmin/common/static/icons/backspace-reverse.svg b/packages/serveradmin/serveradmin/common/static/icons/backspace-reverse.svg similarity index 100% rename from serveradmin/common/static/icons/backspace-reverse.svg rename to packages/serveradmin/serveradmin/common/static/icons/backspace-reverse.svg diff --git a/serveradmin/common/static/icons/backspace.svg b/packages/serveradmin/serveradmin/common/static/icons/backspace.svg similarity index 100% rename from serveradmin/common/static/icons/backspace.svg rename to packages/serveradmin/serveradmin/common/static/icons/backspace.svg diff --git a/serveradmin/common/static/icons/bar-chart-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/bar-chart-fill.svg similarity index 100% rename from serveradmin/common/static/icons/bar-chart-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/bar-chart-fill.svg diff --git a/serveradmin/common/static/icons/bar-chart.svg b/packages/serveradmin/serveradmin/common/static/icons/bar-chart.svg similarity index 100% rename from serveradmin/common/static/icons/bar-chart.svg rename to packages/serveradmin/serveradmin/common/static/icons/bar-chart.svg diff --git a/serveradmin/common/static/icons/battery-charging.svg b/packages/serveradmin/serveradmin/common/static/icons/battery-charging.svg similarity index 100% rename from serveradmin/common/static/icons/battery-charging.svg rename to packages/serveradmin/serveradmin/common/static/icons/battery-charging.svg diff --git a/serveradmin/common/static/icons/battery-full.svg b/packages/serveradmin/serveradmin/common/static/icons/battery-full.svg similarity index 100% rename from serveradmin/common/static/icons/battery-full.svg rename to packages/serveradmin/serveradmin/common/static/icons/battery-full.svg diff --git a/serveradmin/common/static/icons/battery.svg b/packages/serveradmin/serveradmin/common/static/icons/battery.svg similarity index 100% rename from serveradmin/common/static/icons/battery.svg rename to packages/serveradmin/serveradmin/common/static/icons/battery.svg diff --git a/serveradmin/common/static/icons/bell-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/bell-fill.svg similarity index 100% rename from serveradmin/common/static/icons/bell-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/bell-fill.svg diff --git a/serveradmin/common/static/icons/bell.svg b/packages/serveradmin/serveradmin/common/static/icons/bell.svg similarity index 100% rename from serveradmin/common/static/icons/bell.svg rename to packages/serveradmin/serveradmin/common/static/icons/bell.svg diff --git a/serveradmin/common/static/icons/blockquote-left.svg b/packages/serveradmin/serveradmin/common/static/icons/blockquote-left.svg similarity index 100% rename from serveradmin/common/static/icons/blockquote-left.svg rename to packages/serveradmin/serveradmin/common/static/icons/blockquote-left.svg diff --git a/serveradmin/common/static/icons/blockquote-right.svg b/packages/serveradmin/serveradmin/common/static/icons/blockquote-right.svg similarity index 100% rename from serveradmin/common/static/icons/blockquote-right.svg rename to packages/serveradmin/serveradmin/common/static/icons/blockquote-right.svg diff --git a/serveradmin/common/static/icons/book-half-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/book-half-fill.svg similarity index 100% rename from serveradmin/common/static/icons/book-half-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/book-half-fill.svg diff --git a/serveradmin/common/static/icons/book.svg b/packages/serveradmin/serveradmin/common/static/icons/book.svg similarity index 100% rename from serveradmin/common/static/icons/book.svg rename to packages/serveradmin/serveradmin/common/static/icons/book.svg diff --git a/serveradmin/common/static/icons/bookmark-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/bookmark-fill.svg similarity index 100% rename from serveradmin/common/static/icons/bookmark-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/bookmark-fill.svg diff --git a/serveradmin/common/static/icons/bookmark.svg b/packages/serveradmin/serveradmin/common/static/icons/bookmark.svg similarity index 100% rename from serveradmin/common/static/icons/bookmark.svg rename to packages/serveradmin/serveradmin/common/static/icons/bookmark.svg diff --git a/serveradmin/common/static/icons/bootstrap-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/bootstrap-fill.svg similarity index 100% rename from serveradmin/common/static/icons/bootstrap-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/bootstrap-fill.svg diff --git a/serveradmin/common/static/icons/bootstrap-reboot.svg b/packages/serveradmin/serveradmin/common/static/icons/bootstrap-reboot.svg similarity index 100% rename from serveradmin/common/static/icons/bootstrap-reboot.svg rename to packages/serveradmin/serveradmin/common/static/icons/bootstrap-reboot.svg diff --git a/serveradmin/common/static/icons/bootstrap.svg b/packages/serveradmin/serveradmin/common/static/icons/bootstrap.svg similarity index 100% rename from serveradmin/common/static/icons/bootstrap.svg rename to packages/serveradmin/serveradmin/common/static/icons/bootstrap.svg diff --git a/serveradmin/common/static/icons/box-arrow-bottom-left.svg b/packages/serveradmin/serveradmin/common/static/icons/box-arrow-bottom-left.svg similarity index 100% rename from serveradmin/common/static/icons/box-arrow-bottom-left.svg rename to packages/serveradmin/serveradmin/common/static/icons/box-arrow-bottom-left.svg diff --git a/serveradmin/common/static/icons/box-arrow-bottom-right.svg b/packages/serveradmin/serveradmin/common/static/icons/box-arrow-bottom-right.svg similarity index 100% rename from serveradmin/common/static/icons/box-arrow-bottom-right.svg rename to packages/serveradmin/serveradmin/common/static/icons/box-arrow-bottom-right.svg diff --git a/serveradmin/common/static/icons/box-arrow-down.svg b/packages/serveradmin/serveradmin/common/static/icons/box-arrow-down.svg similarity index 100% rename from serveradmin/common/static/icons/box-arrow-down.svg rename to packages/serveradmin/serveradmin/common/static/icons/box-arrow-down.svg diff --git a/serveradmin/common/static/icons/box-arrow-left.svg b/packages/serveradmin/serveradmin/common/static/icons/box-arrow-left.svg similarity index 100% rename from serveradmin/common/static/icons/box-arrow-left.svg rename to packages/serveradmin/serveradmin/common/static/icons/box-arrow-left.svg diff --git a/serveradmin/common/static/icons/box-arrow-right.svg b/packages/serveradmin/serveradmin/common/static/icons/box-arrow-right.svg similarity index 100% rename from serveradmin/common/static/icons/box-arrow-right.svg rename to packages/serveradmin/serveradmin/common/static/icons/box-arrow-right.svg diff --git a/serveradmin/common/static/icons/box-arrow-up-left.svg b/packages/serveradmin/serveradmin/common/static/icons/box-arrow-up-left.svg similarity index 100% rename from serveradmin/common/static/icons/box-arrow-up-left.svg rename to packages/serveradmin/serveradmin/common/static/icons/box-arrow-up-left.svg diff --git a/serveradmin/common/static/icons/box-arrow-up-right.svg b/packages/serveradmin/serveradmin/common/static/icons/box-arrow-up-right.svg similarity index 100% rename from serveradmin/common/static/icons/box-arrow-up-right.svg rename to packages/serveradmin/serveradmin/common/static/icons/box-arrow-up-right.svg diff --git a/serveradmin/common/static/icons/box-arrow-up.svg b/packages/serveradmin/serveradmin/common/static/icons/box-arrow-up.svg similarity index 100% rename from serveradmin/common/static/icons/box-arrow-up.svg rename to packages/serveradmin/serveradmin/common/static/icons/box-arrow-up.svg diff --git a/serveradmin/common/static/icons/braces.svg b/packages/serveradmin/serveradmin/common/static/icons/braces.svg similarity index 100% rename from serveradmin/common/static/icons/braces.svg rename to packages/serveradmin/serveradmin/common/static/icons/braces.svg diff --git a/serveradmin/common/static/icons/brightness-fill-high.svg b/packages/serveradmin/serveradmin/common/static/icons/brightness-fill-high.svg similarity index 100% rename from serveradmin/common/static/icons/brightness-fill-high.svg rename to packages/serveradmin/serveradmin/common/static/icons/brightness-fill-high.svg diff --git a/serveradmin/common/static/icons/brightness-fill-low.svg b/packages/serveradmin/serveradmin/common/static/icons/brightness-fill-low.svg similarity index 100% rename from serveradmin/common/static/icons/brightness-fill-low.svg rename to packages/serveradmin/serveradmin/common/static/icons/brightness-fill-low.svg diff --git a/serveradmin/common/static/icons/brightness-high.svg b/packages/serveradmin/serveradmin/common/static/icons/brightness-high.svg similarity index 100% rename from serveradmin/common/static/icons/brightness-high.svg rename to packages/serveradmin/serveradmin/common/static/icons/brightness-high.svg diff --git a/serveradmin/common/static/icons/brightness-low.svg b/packages/serveradmin/serveradmin/common/static/icons/brightness-low.svg similarity index 100% rename from serveradmin/common/static/icons/brightness-low.svg rename to packages/serveradmin/serveradmin/common/static/icons/brightness-low.svg diff --git a/serveradmin/common/static/icons/brush.svg b/packages/serveradmin/serveradmin/common/static/icons/brush.svg similarity index 100% rename from serveradmin/common/static/icons/brush.svg rename to packages/serveradmin/serveradmin/common/static/icons/brush.svg diff --git a/serveradmin/common/static/icons/bucket-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/bucket-fill.svg similarity index 100% rename from serveradmin/common/static/icons/bucket-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/bucket-fill.svg diff --git a/serveradmin/common/static/icons/bucket.svg b/packages/serveradmin/serveradmin/common/static/icons/bucket.svg similarity index 100% rename from serveradmin/common/static/icons/bucket.svg rename to packages/serveradmin/serveradmin/common/static/icons/bucket.svg diff --git a/serveradmin/common/static/icons/building.svg b/packages/serveradmin/serveradmin/common/static/icons/building.svg similarity index 100% rename from serveradmin/common/static/icons/building.svg rename to packages/serveradmin/serveradmin/common/static/icons/building.svg diff --git a/serveradmin/common/static/icons/bullseye.svg b/packages/serveradmin/serveradmin/common/static/icons/bullseye.svg similarity index 100% rename from serveradmin/common/static/icons/bullseye.svg rename to packages/serveradmin/serveradmin/common/static/icons/bullseye.svg diff --git a/serveradmin/common/static/icons/calendar-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/calendar-fill.svg similarity index 100% rename from serveradmin/common/static/icons/calendar-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/calendar-fill.svg diff --git a/serveradmin/common/static/icons/calendar.svg b/packages/serveradmin/serveradmin/common/static/icons/calendar.svg similarity index 100% rename from serveradmin/common/static/icons/calendar.svg rename to packages/serveradmin/serveradmin/common/static/icons/calendar.svg diff --git a/serveradmin/common/static/icons/camera-video-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/camera-video-fill.svg similarity index 100% rename from serveradmin/common/static/icons/camera-video-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/camera-video-fill.svg diff --git a/serveradmin/common/static/icons/camera-video.svg b/packages/serveradmin/serveradmin/common/static/icons/camera-video.svg similarity index 100% rename from serveradmin/common/static/icons/camera-video.svg rename to packages/serveradmin/serveradmin/common/static/icons/camera-video.svg diff --git a/serveradmin/common/static/icons/camera.svg b/packages/serveradmin/serveradmin/common/static/icons/camera.svg similarity index 100% rename from serveradmin/common/static/icons/camera.svg rename to packages/serveradmin/serveradmin/common/static/icons/camera.svg diff --git a/serveradmin/common/static/icons/capslock-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/capslock-fill.svg similarity index 100% rename from serveradmin/common/static/icons/capslock-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/capslock-fill.svg diff --git a/serveradmin/common/static/icons/capslock.svg b/packages/serveradmin/serveradmin/common/static/icons/capslock.svg similarity index 100% rename from serveradmin/common/static/icons/capslock.svg rename to packages/serveradmin/serveradmin/common/static/icons/capslock.svg diff --git a/serveradmin/common/static/icons/chat-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/chat-fill.svg similarity index 100% rename from serveradmin/common/static/icons/chat-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/chat-fill.svg diff --git a/serveradmin/common/static/icons/chat.svg b/packages/serveradmin/serveradmin/common/static/icons/chat.svg similarity index 100% rename from serveradmin/common/static/icons/chat.svg rename to packages/serveradmin/serveradmin/common/static/icons/chat.svg diff --git a/serveradmin/common/static/icons/check-box.svg b/packages/serveradmin/serveradmin/common/static/icons/check-box.svg similarity index 100% rename from serveradmin/common/static/icons/check-box.svg rename to packages/serveradmin/serveradmin/common/static/icons/check-box.svg diff --git a/serveradmin/common/static/icons/check-circle.svg b/packages/serveradmin/serveradmin/common/static/icons/check-circle.svg similarity index 100% rename from serveradmin/common/static/icons/check-circle.svg rename to packages/serveradmin/serveradmin/common/static/icons/check-circle.svg diff --git a/serveradmin/common/static/icons/check.svg b/packages/serveradmin/serveradmin/common/static/icons/check.svg similarity index 100% rename from serveradmin/common/static/icons/check.svg rename to packages/serveradmin/serveradmin/common/static/icons/check.svg diff --git a/serveradmin/common/static/icons/chevron-compact-down.svg b/packages/serveradmin/serveradmin/common/static/icons/chevron-compact-down.svg similarity index 100% rename from serveradmin/common/static/icons/chevron-compact-down.svg rename to packages/serveradmin/serveradmin/common/static/icons/chevron-compact-down.svg diff --git a/serveradmin/common/static/icons/chevron-compact-left.svg b/packages/serveradmin/serveradmin/common/static/icons/chevron-compact-left.svg similarity index 100% rename from serveradmin/common/static/icons/chevron-compact-left.svg rename to packages/serveradmin/serveradmin/common/static/icons/chevron-compact-left.svg diff --git a/serveradmin/common/static/icons/chevron-compact-right.svg b/packages/serveradmin/serveradmin/common/static/icons/chevron-compact-right.svg similarity index 100% rename from serveradmin/common/static/icons/chevron-compact-right.svg rename to packages/serveradmin/serveradmin/common/static/icons/chevron-compact-right.svg diff --git a/serveradmin/common/static/icons/chevron-compact-up.svg b/packages/serveradmin/serveradmin/common/static/icons/chevron-compact-up.svg similarity index 100% rename from serveradmin/common/static/icons/chevron-compact-up.svg rename to packages/serveradmin/serveradmin/common/static/icons/chevron-compact-up.svg diff --git a/serveradmin/common/static/icons/chevron-down.svg b/packages/serveradmin/serveradmin/common/static/icons/chevron-down.svg similarity index 100% rename from serveradmin/common/static/icons/chevron-down.svg rename to packages/serveradmin/serveradmin/common/static/icons/chevron-down.svg diff --git a/serveradmin/common/static/icons/chevron-left.svg b/packages/serveradmin/serveradmin/common/static/icons/chevron-left.svg similarity index 100% rename from serveradmin/common/static/icons/chevron-left.svg rename to packages/serveradmin/serveradmin/common/static/icons/chevron-left.svg diff --git a/serveradmin/common/static/icons/chevron-right.svg b/packages/serveradmin/serveradmin/common/static/icons/chevron-right.svg similarity index 100% rename from serveradmin/common/static/icons/chevron-right.svg rename to packages/serveradmin/serveradmin/common/static/icons/chevron-right.svg diff --git a/serveradmin/common/static/icons/chevron-up.svg b/packages/serveradmin/serveradmin/common/static/icons/chevron-up.svg similarity index 100% rename from serveradmin/common/static/icons/chevron-up.svg rename to packages/serveradmin/serveradmin/common/static/icons/chevron-up.svg diff --git a/serveradmin/common/static/icons/circle-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/circle-fill.svg similarity index 100% rename from serveradmin/common/static/icons/circle-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/circle-fill.svg diff --git a/serveradmin/common/static/icons/circle-half.svg b/packages/serveradmin/serveradmin/common/static/icons/circle-half.svg similarity index 100% rename from serveradmin/common/static/icons/circle-half.svg rename to packages/serveradmin/serveradmin/common/static/icons/circle-half.svg diff --git a/serveradmin/common/static/icons/circle-slash.svg b/packages/serveradmin/serveradmin/common/static/icons/circle-slash.svg similarity index 100% rename from serveradmin/common/static/icons/circle-slash.svg rename to packages/serveradmin/serveradmin/common/static/icons/circle-slash.svg diff --git a/serveradmin/common/static/icons/circle.svg b/packages/serveradmin/serveradmin/common/static/icons/circle.svg similarity index 100% rename from serveradmin/common/static/icons/circle.svg rename to packages/serveradmin/serveradmin/common/static/icons/circle.svg diff --git a/serveradmin/common/static/icons/clock-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/clock-fill.svg similarity index 100% rename from serveradmin/common/static/icons/clock-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/clock-fill.svg diff --git a/serveradmin/common/static/icons/clock-history.svg b/packages/serveradmin/serveradmin/common/static/icons/clock-history.svg similarity index 100% rename from serveradmin/common/static/icons/clock-history.svg rename to packages/serveradmin/serveradmin/common/static/icons/clock-history.svg diff --git a/serveradmin/common/static/icons/clock.svg b/packages/serveradmin/serveradmin/common/static/icons/clock.svg similarity index 100% rename from serveradmin/common/static/icons/clock.svg rename to packages/serveradmin/serveradmin/common/static/icons/clock.svg diff --git a/serveradmin/common/static/icons/cloud-download.svg b/packages/serveradmin/serveradmin/common/static/icons/cloud-download.svg similarity index 100% rename from serveradmin/common/static/icons/cloud-download.svg rename to packages/serveradmin/serveradmin/common/static/icons/cloud-download.svg diff --git a/serveradmin/common/static/icons/cloud-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/cloud-fill.svg similarity index 100% rename from serveradmin/common/static/icons/cloud-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/cloud-fill.svg diff --git a/serveradmin/common/static/icons/cloud-upload.svg b/packages/serveradmin/serveradmin/common/static/icons/cloud-upload.svg similarity index 100% rename from serveradmin/common/static/icons/cloud-upload.svg rename to packages/serveradmin/serveradmin/common/static/icons/cloud-upload.svg diff --git a/serveradmin/common/static/icons/cloud.svg b/packages/serveradmin/serveradmin/common/static/icons/cloud.svg similarity index 100% rename from serveradmin/common/static/icons/cloud.svg rename to packages/serveradmin/serveradmin/common/static/icons/cloud.svg diff --git a/serveradmin/common/static/icons/code-slash.svg b/packages/serveradmin/serveradmin/common/static/icons/code-slash.svg similarity index 100% rename from serveradmin/common/static/icons/code-slash.svg rename to packages/serveradmin/serveradmin/common/static/icons/code-slash.svg diff --git a/serveradmin/common/static/icons/code.svg b/packages/serveradmin/serveradmin/common/static/icons/code.svg similarity index 100% rename from serveradmin/common/static/icons/code.svg rename to packages/serveradmin/serveradmin/common/static/icons/code.svg diff --git a/serveradmin/common/static/icons/columns-gutters.svg b/packages/serveradmin/serveradmin/common/static/icons/columns-gutters.svg similarity index 100% rename from serveradmin/common/static/icons/columns-gutters.svg rename to packages/serveradmin/serveradmin/common/static/icons/columns-gutters.svg diff --git a/serveradmin/common/static/icons/columns.svg b/packages/serveradmin/serveradmin/common/static/icons/columns.svg similarity index 100% rename from serveradmin/common/static/icons/columns.svg rename to packages/serveradmin/serveradmin/common/static/icons/columns.svg diff --git a/serveradmin/common/static/icons/command.svg b/packages/serveradmin/serveradmin/common/static/icons/command.svg similarity index 100% rename from serveradmin/common/static/icons/command.svg rename to packages/serveradmin/serveradmin/common/static/icons/command.svg diff --git a/serveradmin/common/static/icons/compass.svg b/packages/serveradmin/serveradmin/common/static/icons/compass.svg similarity index 100% rename from serveradmin/common/static/icons/compass.svg rename to packages/serveradmin/serveradmin/common/static/icons/compass.svg diff --git a/serveradmin/common/static/icons/cone-striped.svg b/packages/serveradmin/serveradmin/common/static/icons/cone-striped.svg similarity index 100% rename from serveradmin/common/static/icons/cone-striped.svg rename to packages/serveradmin/serveradmin/common/static/icons/cone-striped.svg diff --git a/serveradmin/common/static/icons/cone.svg b/packages/serveradmin/serveradmin/common/static/icons/cone.svg similarity index 100% rename from serveradmin/common/static/icons/cone.svg rename to packages/serveradmin/serveradmin/common/static/icons/cone.svg diff --git a/serveradmin/common/static/icons/controller.svg b/packages/serveradmin/serveradmin/common/static/icons/controller.svg similarity index 100% rename from serveradmin/common/static/icons/controller.svg rename to packages/serveradmin/serveradmin/common/static/icons/controller.svg diff --git a/serveradmin/common/static/icons/credit-card.svg b/packages/serveradmin/serveradmin/common/static/icons/credit-card.svg similarity index 100% rename from serveradmin/common/static/icons/credit-card.svg rename to packages/serveradmin/serveradmin/common/static/icons/credit-card.svg diff --git a/serveradmin/common/static/icons/cursor-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/cursor-fill.svg similarity index 100% rename from serveradmin/common/static/icons/cursor-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/cursor-fill.svg diff --git a/serveradmin/common/static/icons/cursor.svg b/packages/serveradmin/serveradmin/common/static/icons/cursor.svg similarity index 100% rename from serveradmin/common/static/icons/cursor.svg rename to packages/serveradmin/serveradmin/common/static/icons/cursor.svg diff --git a/serveradmin/common/static/icons/dash.svg b/packages/serveradmin/serveradmin/common/static/icons/dash.svg similarity index 100% rename from serveradmin/common/static/icons/dash.svg rename to packages/serveradmin/serveradmin/common/static/icons/dash.svg diff --git a/serveradmin/common/static/icons/diamond-half.svg b/packages/serveradmin/serveradmin/common/static/icons/diamond-half.svg similarity index 100% rename from serveradmin/common/static/icons/diamond-half.svg rename to packages/serveradmin/serveradmin/common/static/icons/diamond-half.svg diff --git a/serveradmin/common/static/icons/diamond.svg b/packages/serveradmin/serveradmin/common/static/icons/diamond.svg similarity index 100% rename from serveradmin/common/static/icons/diamond.svg rename to packages/serveradmin/serveradmin/common/static/icons/diamond.svg diff --git a/serveradmin/common/static/icons/display-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/display-fill.svg similarity index 100% rename from serveradmin/common/static/icons/display-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/display-fill.svg diff --git a/serveradmin/common/static/icons/display.svg b/packages/serveradmin/serveradmin/common/static/icons/display.svg similarity index 100% rename from serveradmin/common/static/icons/display.svg rename to packages/serveradmin/serveradmin/common/static/icons/display.svg diff --git a/serveradmin/common/static/icons/document-code.svg b/packages/serveradmin/serveradmin/common/static/icons/document-code.svg similarity index 100% rename from serveradmin/common/static/icons/document-code.svg rename to packages/serveradmin/serveradmin/common/static/icons/document-code.svg diff --git a/serveradmin/common/static/icons/document-diff.svg b/packages/serveradmin/serveradmin/common/static/icons/document-diff.svg similarity index 100% rename from serveradmin/common/static/icons/document-diff.svg rename to packages/serveradmin/serveradmin/common/static/icons/document-diff.svg diff --git a/serveradmin/common/static/icons/document-richtext.svg b/packages/serveradmin/serveradmin/common/static/icons/document-richtext.svg similarity index 100% rename from serveradmin/common/static/icons/document-richtext.svg rename to packages/serveradmin/serveradmin/common/static/icons/document-richtext.svg diff --git a/serveradmin/common/static/icons/document-spreadsheet.svg b/packages/serveradmin/serveradmin/common/static/icons/document-spreadsheet.svg similarity index 100% rename from serveradmin/common/static/icons/document-spreadsheet.svg rename to packages/serveradmin/serveradmin/common/static/icons/document-spreadsheet.svg diff --git a/serveradmin/common/static/icons/document-text.svg b/packages/serveradmin/serveradmin/common/static/icons/document-text.svg similarity index 100% rename from serveradmin/common/static/icons/document-text.svg rename to packages/serveradmin/serveradmin/common/static/icons/document-text.svg diff --git a/serveradmin/common/static/icons/document.svg b/packages/serveradmin/serveradmin/common/static/icons/document.svg similarity index 100% rename from serveradmin/common/static/icons/document.svg rename to packages/serveradmin/serveradmin/common/static/icons/document.svg diff --git a/serveradmin/common/static/icons/documents-alt.svg b/packages/serveradmin/serveradmin/common/static/icons/documents-alt.svg similarity index 100% rename from serveradmin/common/static/icons/documents-alt.svg rename to packages/serveradmin/serveradmin/common/static/icons/documents-alt.svg diff --git a/serveradmin/common/static/icons/documents.svg b/packages/serveradmin/serveradmin/common/static/icons/documents.svg similarity index 100% rename from serveradmin/common/static/icons/documents.svg rename to packages/serveradmin/serveradmin/common/static/icons/documents.svg diff --git a/serveradmin/common/static/icons/dot.svg b/packages/serveradmin/serveradmin/common/static/icons/dot.svg similarity index 100% rename from serveradmin/common/static/icons/dot.svg rename to packages/serveradmin/serveradmin/common/static/icons/dot.svg diff --git a/serveradmin/common/static/icons/download.svg b/packages/serveradmin/serveradmin/common/static/icons/download.svg similarity index 100% rename from serveradmin/common/static/icons/download.svg rename to packages/serveradmin/serveradmin/common/static/icons/download.svg diff --git a/serveradmin/common/static/icons/egg-fried.svg b/packages/serveradmin/serveradmin/common/static/icons/egg-fried.svg similarity index 100% rename from serveradmin/common/static/icons/egg-fried.svg rename to packages/serveradmin/serveradmin/common/static/icons/egg-fried.svg diff --git a/serveradmin/common/static/icons/eject-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/eject-fill.svg similarity index 100% rename from serveradmin/common/static/icons/eject-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/eject-fill.svg diff --git a/serveradmin/common/static/icons/eject.svg b/packages/serveradmin/serveradmin/common/static/icons/eject.svg similarity index 100% rename from serveradmin/common/static/icons/eject.svg rename to packages/serveradmin/serveradmin/common/static/icons/eject.svg diff --git a/serveradmin/common/static/icons/envelope-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/envelope-fill.svg similarity index 100% rename from serveradmin/common/static/icons/envelope-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/envelope-fill.svg diff --git a/serveradmin/common/static/icons/envelope-open-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/envelope-open-fill.svg similarity index 100% rename from serveradmin/common/static/icons/envelope-open-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/envelope-open-fill.svg diff --git a/serveradmin/common/static/icons/envelope-open.svg b/packages/serveradmin/serveradmin/common/static/icons/envelope-open.svg similarity index 100% rename from serveradmin/common/static/icons/envelope-open.svg rename to packages/serveradmin/serveradmin/common/static/icons/envelope-open.svg diff --git a/serveradmin/common/static/icons/envelope.svg b/packages/serveradmin/serveradmin/common/static/icons/envelope.svg similarity index 100% rename from serveradmin/common/static/icons/envelope.svg rename to packages/serveradmin/serveradmin/common/static/icons/envelope.svg diff --git a/serveradmin/common/static/icons/eye-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/eye-fill.svg similarity index 100% rename from serveradmin/common/static/icons/eye-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/eye-fill.svg diff --git a/serveradmin/common/static/icons/eye-slash-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/eye-slash-fill.svg similarity index 100% rename from serveradmin/common/static/icons/eye-slash-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/eye-slash-fill.svg diff --git a/serveradmin/common/static/icons/eye-slash.svg b/packages/serveradmin/serveradmin/common/static/icons/eye-slash.svg similarity index 100% rename from serveradmin/common/static/icons/eye-slash.svg rename to packages/serveradmin/serveradmin/common/static/icons/eye-slash.svg diff --git a/serveradmin/common/static/icons/eye.svg b/packages/serveradmin/serveradmin/common/static/icons/eye.svg similarity index 100% rename from serveradmin/common/static/icons/eye.svg rename to packages/serveradmin/serveradmin/common/static/icons/eye.svg diff --git a/serveradmin/common/static/icons/filter.svg b/packages/serveradmin/serveradmin/common/static/icons/filter.svg similarity index 100% rename from serveradmin/common/static/icons/filter.svg rename to packages/serveradmin/serveradmin/common/static/icons/filter.svg diff --git a/serveradmin/common/static/icons/flag-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/flag-fill.svg similarity index 100% rename from serveradmin/common/static/icons/flag-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/flag-fill.svg diff --git a/serveradmin/common/static/icons/flag.svg b/packages/serveradmin/serveradmin/common/static/icons/flag.svg similarity index 100% rename from serveradmin/common/static/icons/flag.svg rename to packages/serveradmin/serveradmin/common/static/icons/flag.svg diff --git a/serveradmin/common/static/icons/folder-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/folder-fill.svg similarity index 100% rename from serveradmin/common/static/icons/folder-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/folder-fill.svg diff --git a/serveradmin/common/static/icons/folder-symlink-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/folder-symlink-fill.svg similarity index 100% rename from serveradmin/common/static/icons/folder-symlink-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/folder-symlink-fill.svg diff --git a/serveradmin/common/static/icons/folder-symlink.svg b/packages/serveradmin/serveradmin/common/static/icons/folder-symlink.svg similarity index 100% rename from serveradmin/common/static/icons/folder-symlink.svg rename to packages/serveradmin/serveradmin/common/static/icons/folder-symlink.svg diff --git a/serveradmin/common/static/icons/folder.svg b/packages/serveradmin/serveradmin/common/static/icons/folder.svg similarity index 100% rename from serveradmin/common/static/icons/folder.svg rename to packages/serveradmin/serveradmin/common/static/icons/folder.svg diff --git a/serveradmin/common/static/icons/fonts.svg b/packages/serveradmin/serveradmin/common/static/icons/fonts.svg similarity index 100% rename from serveradmin/common/static/icons/fonts.svg rename to packages/serveradmin/serveradmin/common/static/icons/fonts.svg diff --git a/serveradmin/common/static/icons/forward-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/forward-fill.svg similarity index 100% rename from serveradmin/common/static/icons/forward-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/forward-fill.svg diff --git a/serveradmin/common/static/icons/forward.svg b/packages/serveradmin/serveradmin/common/static/icons/forward.svg similarity index 100% rename from serveradmin/common/static/icons/forward.svg rename to packages/serveradmin/serveradmin/common/static/icons/forward.svg diff --git a/serveradmin/common/static/icons/gear-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/gear-fill.svg similarity index 100% rename from serveradmin/common/static/icons/gear-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/gear-fill.svg diff --git a/serveradmin/common/static/icons/gear-wide-connected.svg b/packages/serveradmin/serveradmin/common/static/icons/gear-wide-connected.svg similarity index 100% rename from serveradmin/common/static/icons/gear-wide-connected.svg rename to packages/serveradmin/serveradmin/common/static/icons/gear-wide-connected.svg diff --git a/serveradmin/common/static/icons/gear-wide.svg b/packages/serveradmin/serveradmin/common/static/icons/gear-wide.svg similarity index 100% rename from serveradmin/common/static/icons/gear-wide.svg rename to packages/serveradmin/serveradmin/common/static/icons/gear-wide.svg diff --git a/serveradmin/common/static/icons/gear.svg b/packages/serveradmin/serveradmin/common/static/icons/gear.svg similarity index 100% rename from serveradmin/common/static/icons/gear.svg rename to packages/serveradmin/serveradmin/common/static/icons/gear.svg diff --git a/serveradmin/common/static/icons/geo.svg b/packages/serveradmin/serveradmin/common/static/icons/geo.svg similarity index 100% rename from serveradmin/common/static/icons/geo.svg rename to packages/serveradmin/serveradmin/common/static/icons/geo.svg diff --git a/serveradmin/common/static/icons/grafana.png b/packages/serveradmin/serveradmin/common/static/icons/grafana.png similarity index 100% rename from serveradmin/common/static/icons/grafana.png rename to packages/serveradmin/serveradmin/common/static/icons/grafana.png diff --git a/serveradmin/common/static/icons/graph-down.svg b/packages/serveradmin/serveradmin/common/static/icons/graph-down.svg similarity index 100% rename from serveradmin/common/static/icons/graph-down.svg rename to packages/serveradmin/serveradmin/common/static/icons/graph-down.svg diff --git a/serveradmin/common/static/icons/graph-up.svg b/packages/serveradmin/serveradmin/common/static/icons/graph-up.svg similarity index 100% rename from serveradmin/common/static/icons/graph-up.svg rename to packages/serveradmin/serveradmin/common/static/icons/graph-up.svg diff --git a/serveradmin/common/static/icons/grid-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/grid-fill.svg similarity index 100% rename from serveradmin/common/static/icons/grid-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/grid-fill.svg diff --git a/serveradmin/common/static/icons/grid.svg b/packages/serveradmin/serveradmin/common/static/icons/grid.svg similarity index 100% rename from serveradmin/common/static/icons/grid.svg rename to packages/serveradmin/serveradmin/common/static/icons/grid.svg diff --git a/serveradmin/common/static/icons/hammer.svg b/packages/serveradmin/serveradmin/common/static/icons/hammer.svg similarity index 100% rename from serveradmin/common/static/icons/hammer.svg rename to packages/serveradmin/serveradmin/common/static/icons/hammer.svg diff --git a/serveradmin/common/static/icons/hash.svg b/packages/serveradmin/serveradmin/common/static/icons/hash.svg similarity index 100% rename from serveradmin/common/static/icons/hash.svg rename to packages/serveradmin/serveradmin/common/static/icons/hash.svg diff --git a/serveradmin/common/static/icons/heart-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/heart-fill.svg similarity index 100% rename from serveradmin/common/static/icons/heart-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/heart-fill.svg diff --git a/serveradmin/common/static/icons/heart.svg b/packages/serveradmin/serveradmin/common/static/icons/heart.svg similarity index 100% rename from serveradmin/common/static/icons/heart.svg rename to packages/serveradmin/serveradmin/common/static/icons/heart.svg diff --git a/serveradmin/common/static/icons/house-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/house-fill.svg similarity index 100% rename from serveradmin/common/static/icons/house-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/house-fill.svg diff --git a/serveradmin/common/static/icons/house.svg b/packages/serveradmin/serveradmin/common/static/icons/house.svg similarity index 100% rename from serveradmin/common/static/icons/house.svg rename to packages/serveradmin/serveradmin/common/static/icons/house.svg diff --git a/serveradmin/common/static/icons/image-alt.svg b/packages/serveradmin/serveradmin/common/static/icons/image-alt.svg similarity index 100% rename from serveradmin/common/static/icons/image-alt.svg rename to packages/serveradmin/serveradmin/common/static/icons/image-alt.svg diff --git a/serveradmin/common/static/icons/image-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/image-fill.svg similarity index 100% rename from serveradmin/common/static/icons/image-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/image-fill.svg diff --git a/serveradmin/common/static/icons/image.svg b/packages/serveradmin/serveradmin/common/static/icons/image.svg similarity index 100% rename from serveradmin/common/static/icons/image.svg rename to packages/serveradmin/serveradmin/common/static/icons/image.svg diff --git a/serveradmin/common/static/icons/images.svg b/packages/serveradmin/serveradmin/common/static/icons/images.svg similarity index 100% rename from serveradmin/common/static/icons/images.svg rename to packages/serveradmin/serveradmin/common/static/icons/images.svg diff --git a/serveradmin/common/static/icons/inbox-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/inbox-fill.svg similarity index 100% rename from serveradmin/common/static/icons/inbox-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/inbox-fill.svg diff --git a/serveradmin/common/static/icons/inbox.svg b/packages/serveradmin/serveradmin/common/static/icons/inbox.svg similarity index 100% rename from serveradmin/common/static/icons/inbox.svg rename to packages/serveradmin/serveradmin/common/static/icons/inbox.svg diff --git a/serveradmin/common/static/icons/inboxes-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/inboxes-fill.svg similarity index 100% rename from serveradmin/common/static/icons/inboxes-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/inboxes-fill.svg diff --git a/serveradmin/common/static/icons/inboxes.svg b/packages/serveradmin/serveradmin/common/static/icons/inboxes.svg similarity index 100% rename from serveradmin/common/static/icons/inboxes.svg rename to packages/serveradmin/serveradmin/common/static/icons/inboxes.svg diff --git a/serveradmin/common/static/icons/info-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/info-fill.svg similarity index 100% rename from serveradmin/common/static/icons/info-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/info-fill.svg diff --git a/serveradmin/common/static/icons/info-square-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/info-square-fill.svg similarity index 100% rename from serveradmin/common/static/icons/info-square-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/info-square-fill.svg diff --git a/serveradmin/common/static/icons/info-square.svg b/packages/serveradmin/serveradmin/common/static/icons/info-square.svg similarity index 100% rename from serveradmin/common/static/icons/info-square.svg rename to packages/serveradmin/serveradmin/common/static/icons/info-square.svg diff --git a/serveradmin/common/static/icons/info.svg b/packages/serveradmin/serveradmin/common/static/icons/info.svg similarity index 100% rename from serveradmin/common/static/icons/info.svg rename to packages/serveradmin/serveradmin/common/static/icons/info.svg diff --git a/serveradmin/common/static/icons/justify-left.svg b/packages/serveradmin/serveradmin/common/static/icons/justify-left.svg similarity index 100% rename from serveradmin/common/static/icons/justify-left.svg rename to packages/serveradmin/serveradmin/common/static/icons/justify-left.svg diff --git a/serveradmin/common/static/icons/justify-right.svg b/packages/serveradmin/serveradmin/common/static/icons/justify-right.svg similarity index 100% rename from serveradmin/common/static/icons/justify-right.svg rename to packages/serveradmin/serveradmin/common/static/icons/justify-right.svg diff --git a/serveradmin/common/static/icons/justify.svg b/packages/serveradmin/serveradmin/common/static/icons/justify.svg similarity index 100% rename from serveradmin/common/static/icons/justify.svg rename to packages/serveradmin/serveradmin/common/static/icons/justify.svg diff --git a/serveradmin/common/static/icons/kanban-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/kanban-fill.svg similarity index 100% rename from serveradmin/common/static/icons/kanban-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/kanban-fill.svg diff --git a/serveradmin/common/static/icons/kanban.svg b/packages/serveradmin/serveradmin/common/static/icons/kanban.svg similarity index 100% rename from serveradmin/common/static/icons/kanban.svg rename to packages/serveradmin/serveradmin/common/static/icons/kanban.svg diff --git a/serveradmin/common/static/icons/laptop.svg b/packages/serveradmin/serveradmin/common/static/icons/laptop.svg similarity index 100% rename from serveradmin/common/static/icons/laptop.svg rename to packages/serveradmin/serveradmin/common/static/icons/laptop.svg diff --git a/serveradmin/common/static/icons/layout-sidebar-reverse.svg b/packages/serveradmin/serveradmin/common/static/icons/layout-sidebar-reverse.svg similarity index 100% rename from serveradmin/common/static/icons/layout-sidebar-reverse.svg rename to packages/serveradmin/serveradmin/common/static/icons/layout-sidebar-reverse.svg diff --git a/serveradmin/common/static/icons/layout-sidebar.svg b/packages/serveradmin/serveradmin/common/static/icons/layout-sidebar.svg similarity index 100% rename from serveradmin/common/static/icons/layout-sidebar.svg rename to packages/serveradmin/serveradmin/common/static/icons/layout-sidebar.svg diff --git a/serveradmin/common/static/icons/layout-split.svg b/packages/serveradmin/serveradmin/common/static/icons/layout-split.svg similarity index 100% rename from serveradmin/common/static/icons/layout-split.svg rename to packages/serveradmin/serveradmin/common/static/icons/layout-split.svg diff --git a/serveradmin/common/static/icons/list-check.svg b/packages/serveradmin/serveradmin/common/static/icons/list-check.svg similarity index 100% rename from serveradmin/common/static/icons/list-check.svg rename to packages/serveradmin/serveradmin/common/static/icons/list-check.svg diff --git a/serveradmin/common/static/icons/list-ol.svg b/packages/serveradmin/serveradmin/common/static/icons/list-ol.svg similarity index 100% rename from serveradmin/common/static/icons/list-ol.svg rename to packages/serveradmin/serveradmin/common/static/icons/list-ol.svg diff --git a/serveradmin/common/static/icons/list-task.svg b/packages/serveradmin/serveradmin/common/static/icons/list-task.svg similarity index 100% rename from serveradmin/common/static/icons/list-task.svg rename to packages/serveradmin/serveradmin/common/static/icons/list-task.svg diff --git a/serveradmin/common/static/icons/list-ul.svg b/packages/serveradmin/serveradmin/common/static/icons/list-ul.svg similarity index 100% rename from serveradmin/common/static/icons/list-ul.svg rename to packages/serveradmin/serveradmin/common/static/icons/list-ul.svg diff --git a/serveradmin/common/static/icons/list.svg b/packages/serveradmin/serveradmin/common/static/icons/list.svg similarity index 100% rename from serveradmin/common/static/icons/list.svg rename to packages/serveradmin/serveradmin/common/static/icons/list.svg diff --git a/serveradmin/common/static/icons/lock-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/lock-fill.svg similarity index 100% rename from serveradmin/common/static/icons/lock-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/lock-fill.svg diff --git a/serveradmin/common/static/icons/lock.svg b/packages/serveradmin/serveradmin/common/static/icons/lock.svg similarity index 100% rename from serveradmin/common/static/icons/lock.svg rename to packages/serveradmin/serveradmin/common/static/icons/lock.svg diff --git a/serveradmin/common/static/icons/map.svg b/packages/serveradmin/serveradmin/common/static/icons/map.svg similarity index 100% rename from serveradmin/common/static/icons/map.svg rename to packages/serveradmin/serveradmin/common/static/icons/map.svg diff --git a/serveradmin/common/static/icons/mic.svg b/packages/serveradmin/serveradmin/common/static/icons/mic.svg similarity index 100% rename from serveradmin/common/static/icons/mic.svg rename to packages/serveradmin/serveradmin/common/static/icons/mic.svg diff --git a/serveradmin/common/static/icons/moon.svg b/packages/serveradmin/serveradmin/common/static/icons/moon.svg similarity index 100% rename from serveradmin/common/static/icons/moon.svg rename to packages/serveradmin/serveradmin/common/static/icons/moon.svg diff --git a/serveradmin/common/static/icons/music-player-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/music-player-fill.svg similarity index 100% rename from serveradmin/common/static/icons/music-player-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/music-player-fill.svg diff --git a/serveradmin/common/static/icons/music-player.svg b/packages/serveradmin/serveradmin/common/static/icons/music-player.svg similarity index 100% rename from serveradmin/common/static/icons/music-player.svg rename to packages/serveradmin/serveradmin/common/static/icons/music-player.svg diff --git a/serveradmin/common/static/icons/option.svg b/packages/serveradmin/serveradmin/common/static/icons/option.svg similarity index 100% rename from serveradmin/common/static/icons/option.svg rename to packages/serveradmin/serveradmin/common/static/icons/option.svg diff --git a/serveradmin/common/static/icons/outlet.svg b/packages/serveradmin/serveradmin/common/static/icons/outlet.svg similarity index 100% rename from serveradmin/common/static/icons/outlet.svg rename to packages/serveradmin/serveradmin/common/static/icons/outlet.svg diff --git a/serveradmin/common/static/icons/pause-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/pause-fill.svg similarity index 100% rename from serveradmin/common/static/icons/pause-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/pause-fill.svg diff --git a/serveradmin/common/static/icons/pause.svg b/packages/serveradmin/serveradmin/common/static/icons/pause.svg similarity index 100% rename from serveradmin/common/static/icons/pause.svg rename to packages/serveradmin/serveradmin/common/static/icons/pause.svg diff --git a/serveradmin/common/static/icons/pen.svg b/packages/serveradmin/serveradmin/common/static/icons/pen.svg similarity index 100% rename from serveradmin/common/static/icons/pen.svg rename to packages/serveradmin/serveradmin/common/static/icons/pen.svg diff --git a/serveradmin/common/static/icons/pencil.svg b/packages/serveradmin/serveradmin/common/static/icons/pencil.svg similarity index 100% rename from serveradmin/common/static/icons/pencil.svg rename to packages/serveradmin/serveradmin/common/static/icons/pencil.svg diff --git a/serveradmin/common/static/icons/people-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/people-fill.svg similarity index 100% rename from serveradmin/common/static/icons/people-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/people-fill.svg diff --git a/serveradmin/common/static/icons/people.svg b/packages/serveradmin/serveradmin/common/static/icons/people.svg similarity index 100% rename from serveradmin/common/static/icons/people.svg rename to packages/serveradmin/serveradmin/common/static/icons/people.svg diff --git a/serveradmin/common/static/icons/person-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/person-fill.svg similarity index 100% rename from serveradmin/common/static/icons/person-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/person-fill.svg diff --git a/serveradmin/common/static/icons/person.svg b/packages/serveradmin/serveradmin/common/static/icons/person.svg similarity index 100% rename from serveradmin/common/static/icons/person.svg rename to packages/serveradmin/serveradmin/common/static/icons/person.svg diff --git a/serveradmin/common/static/icons/phone-landscape.svg b/packages/serveradmin/serveradmin/common/static/icons/phone-landscape.svg similarity index 100% rename from serveradmin/common/static/icons/phone-landscape.svg rename to packages/serveradmin/serveradmin/common/static/icons/phone-landscape.svg diff --git a/serveradmin/common/static/icons/phone.svg b/packages/serveradmin/serveradmin/common/static/icons/phone.svg similarity index 100% rename from serveradmin/common/static/icons/phone.svg rename to packages/serveradmin/serveradmin/common/static/icons/phone.svg diff --git a/serveradmin/common/static/icons/pie-chart-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/pie-chart-fill.svg similarity index 100% rename from serveradmin/common/static/icons/pie-chart-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/pie-chart-fill.svg diff --git a/serveradmin/common/static/icons/pie-chart.svg b/packages/serveradmin/serveradmin/common/static/icons/pie-chart.svg similarity index 100% rename from serveradmin/common/static/icons/pie-chart.svg rename to packages/serveradmin/serveradmin/common/static/icons/pie-chart.svg diff --git a/serveradmin/common/static/icons/play-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/play-fill.svg similarity index 100% rename from serveradmin/common/static/icons/play-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/play-fill.svg diff --git a/serveradmin/common/static/icons/play.svg b/packages/serveradmin/serveradmin/common/static/icons/play.svg similarity index 100% rename from serveradmin/common/static/icons/play.svg rename to packages/serveradmin/serveradmin/common/static/icons/play.svg diff --git a/serveradmin/common/static/icons/plug.svg b/packages/serveradmin/serveradmin/common/static/icons/plug.svg similarity index 100% rename from serveradmin/common/static/icons/plug.svg rename to packages/serveradmin/serveradmin/common/static/icons/plug.svg diff --git a/serveradmin/common/static/icons/plus.svg b/packages/serveradmin/serveradmin/common/static/icons/plus.svg similarity index 100% rename from serveradmin/common/static/icons/plus.svg rename to packages/serveradmin/serveradmin/common/static/icons/plus.svg diff --git a/serveradmin/common/static/icons/power.svg b/packages/serveradmin/serveradmin/common/static/icons/power.svg similarity index 100% rename from serveradmin/common/static/icons/power.svg rename to packages/serveradmin/serveradmin/common/static/icons/power.svg diff --git a/serveradmin/common/static/icons/question-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/question-fill.svg similarity index 100% rename from serveradmin/common/static/icons/question-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/question-fill.svg diff --git a/serveradmin/common/static/icons/question-square-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/question-square-fill.svg similarity index 100% rename from serveradmin/common/static/icons/question-square-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/question-square-fill.svg diff --git a/serveradmin/common/static/icons/question-square.svg b/packages/serveradmin/serveradmin/common/static/icons/question-square.svg similarity index 100% rename from serveradmin/common/static/icons/question-square.svg rename to packages/serveradmin/serveradmin/common/static/icons/question-square.svg diff --git a/serveradmin/common/static/icons/question.svg b/packages/serveradmin/serveradmin/common/static/icons/question.svg similarity index 100% rename from serveradmin/common/static/icons/question.svg rename to packages/serveradmin/serveradmin/common/static/icons/question.svg diff --git a/serveradmin/common/static/icons/reply-all-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/reply-all-fill.svg similarity index 100% rename from serveradmin/common/static/icons/reply-all-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/reply-all-fill.svg diff --git a/serveradmin/common/static/icons/reply-all.svg b/packages/serveradmin/serveradmin/common/static/icons/reply-all.svg similarity index 100% rename from serveradmin/common/static/icons/reply-all.svg rename to packages/serveradmin/serveradmin/common/static/icons/reply-all.svg diff --git a/serveradmin/common/static/icons/reply-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/reply-fill.svg similarity index 100% rename from serveradmin/common/static/icons/reply-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/reply-fill.svg diff --git a/serveradmin/common/static/icons/reply.svg b/packages/serveradmin/serveradmin/common/static/icons/reply.svg similarity index 100% rename from serveradmin/common/static/icons/reply.svg rename to packages/serveradmin/serveradmin/common/static/icons/reply.svg diff --git a/serveradmin/common/static/icons/screwdriver.svg b/packages/serveradmin/serveradmin/common/static/icons/screwdriver.svg similarity index 100% rename from serveradmin/common/static/icons/screwdriver.svg rename to packages/serveradmin/serveradmin/common/static/icons/screwdriver.svg diff --git a/serveradmin/common/static/icons/search.svg b/packages/serveradmin/serveradmin/common/static/icons/search.svg similarity index 100% rename from serveradmin/common/static/icons/search.svg rename to packages/serveradmin/serveradmin/common/static/icons/search.svg diff --git a/serveradmin/common/static/icons/shield-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/shield-fill.svg similarity index 100% rename from serveradmin/common/static/icons/shield-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/shield-fill.svg diff --git a/serveradmin/common/static/icons/shield-lock-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/shield-lock-fill.svg similarity index 100% rename from serveradmin/common/static/icons/shield-lock-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/shield-lock-fill.svg diff --git a/serveradmin/common/static/icons/shield-lock.svg b/packages/serveradmin/serveradmin/common/static/icons/shield-lock.svg similarity index 100% rename from serveradmin/common/static/icons/shield-lock.svg rename to packages/serveradmin/serveradmin/common/static/icons/shield-lock.svg diff --git a/serveradmin/common/static/icons/shield-shaded.svg b/packages/serveradmin/serveradmin/common/static/icons/shield-shaded.svg similarity index 100% rename from serveradmin/common/static/icons/shield-shaded.svg rename to packages/serveradmin/serveradmin/common/static/icons/shield-shaded.svg diff --git a/serveradmin/common/static/icons/shield.svg b/packages/serveradmin/serveradmin/common/static/icons/shield.svg similarity index 100% rename from serveradmin/common/static/icons/shield.svg rename to packages/serveradmin/serveradmin/common/static/icons/shield.svg diff --git a/serveradmin/common/static/icons/shift-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/shift-fill.svg similarity index 100% rename from serveradmin/common/static/icons/shift-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/shift-fill.svg diff --git a/serveradmin/common/static/icons/shift.svg b/packages/serveradmin/serveradmin/common/static/icons/shift.svg similarity index 100% rename from serveradmin/common/static/icons/shift.svg rename to packages/serveradmin/serveradmin/common/static/icons/shift.svg diff --git a/serveradmin/common/static/icons/skip-backward-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/skip-backward-fill.svg similarity index 100% rename from serveradmin/common/static/icons/skip-backward-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/skip-backward-fill.svg diff --git a/serveradmin/common/static/icons/skip-backward.svg b/packages/serveradmin/serveradmin/common/static/icons/skip-backward.svg similarity index 100% rename from serveradmin/common/static/icons/skip-backward.svg rename to packages/serveradmin/serveradmin/common/static/icons/skip-backward.svg diff --git a/serveradmin/common/static/icons/skip-end-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/skip-end-fill.svg similarity index 100% rename from serveradmin/common/static/icons/skip-end-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/skip-end-fill.svg diff --git a/serveradmin/common/static/icons/skip-end.svg b/packages/serveradmin/serveradmin/common/static/icons/skip-end.svg similarity index 100% rename from serveradmin/common/static/icons/skip-end.svg rename to packages/serveradmin/serveradmin/common/static/icons/skip-end.svg diff --git a/serveradmin/common/static/icons/skip-forward-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/skip-forward-fill.svg similarity index 100% rename from serveradmin/common/static/icons/skip-forward-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/skip-forward-fill.svg diff --git a/serveradmin/common/static/icons/skip-forward.svg b/packages/serveradmin/serveradmin/common/static/icons/skip-forward.svg similarity index 100% rename from serveradmin/common/static/icons/skip-forward.svg rename to packages/serveradmin/serveradmin/common/static/icons/skip-forward.svg diff --git a/serveradmin/common/static/icons/skip-start-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/skip-start-fill.svg similarity index 100% rename from serveradmin/common/static/icons/skip-start-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/skip-start-fill.svg diff --git a/serveradmin/common/static/icons/skip-start.svg b/packages/serveradmin/serveradmin/common/static/icons/skip-start.svg similarity index 100% rename from serveradmin/common/static/icons/skip-start.svg rename to packages/serveradmin/serveradmin/common/static/icons/skip-start.svg diff --git a/serveradmin/common/static/icons/speaker.svg b/packages/serveradmin/serveradmin/common/static/icons/speaker.svg similarity index 100% rename from serveradmin/common/static/icons/speaker.svg rename to packages/serveradmin/serveradmin/common/static/icons/speaker.svg diff --git a/serveradmin/common/static/icons/square-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/square-fill.svg similarity index 100% rename from serveradmin/common/static/icons/square-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/square-fill.svg diff --git a/serveradmin/common/static/icons/square-half.svg b/packages/serveradmin/serveradmin/common/static/icons/square-half.svg similarity index 100% rename from serveradmin/common/static/icons/square-half.svg rename to packages/serveradmin/serveradmin/common/static/icons/square-half.svg diff --git a/serveradmin/common/static/icons/square.svg b/packages/serveradmin/serveradmin/common/static/icons/square.svg similarity index 100% rename from serveradmin/common/static/icons/square.svg rename to packages/serveradmin/serveradmin/common/static/icons/square.svg diff --git a/serveradmin/common/static/icons/star-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/star-fill.svg similarity index 100% rename from serveradmin/common/static/icons/star-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/star-fill.svg diff --git a/serveradmin/common/static/icons/star-half.svg b/packages/serveradmin/serveradmin/common/static/icons/star-half.svg similarity index 100% rename from serveradmin/common/static/icons/star-half.svg rename to packages/serveradmin/serveradmin/common/static/icons/star-half.svg diff --git a/serveradmin/common/static/icons/star.svg b/packages/serveradmin/serveradmin/common/static/icons/star.svg similarity index 100% rename from serveradmin/common/static/icons/star.svg rename to packages/serveradmin/serveradmin/common/static/icons/star.svg diff --git a/serveradmin/common/static/icons/stop-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/stop-fill.svg similarity index 100% rename from serveradmin/common/static/icons/stop-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/stop-fill.svg diff --git a/serveradmin/common/static/icons/stop.svg b/packages/serveradmin/serveradmin/common/static/icons/stop.svg similarity index 100% rename from serveradmin/common/static/icons/stop.svg rename to packages/serveradmin/serveradmin/common/static/icons/stop.svg diff --git a/serveradmin/common/static/icons/stopwatch-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/stopwatch-fill.svg similarity index 100% rename from serveradmin/common/static/icons/stopwatch-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/stopwatch-fill.svg diff --git a/serveradmin/common/static/icons/stopwatch.svg b/packages/serveradmin/serveradmin/common/static/icons/stopwatch.svg similarity index 100% rename from serveradmin/common/static/icons/stopwatch.svg rename to packages/serveradmin/serveradmin/common/static/icons/stopwatch.svg diff --git a/serveradmin/common/static/icons/sun.svg b/packages/serveradmin/serveradmin/common/static/icons/sun.svg similarity index 100% rename from serveradmin/common/static/icons/sun.svg rename to packages/serveradmin/serveradmin/common/static/icons/sun.svg diff --git a/serveradmin/common/static/icons/table.svg b/packages/serveradmin/serveradmin/common/static/icons/table.svg similarity index 100% rename from serveradmin/common/static/icons/table.svg rename to packages/serveradmin/serveradmin/common/static/icons/table.svg diff --git a/serveradmin/common/static/icons/tablet-landscape.svg b/packages/serveradmin/serveradmin/common/static/icons/tablet-landscape.svg similarity index 100% rename from serveradmin/common/static/icons/tablet-landscape.svg rename to packages/serveradmin/serveradmin/common/static/icons/tablet-landscape.svg diff --git a/serveradmin/common/static/icons/tablet.svg b/packages/serveradmin/serveradmin/common/static/icons/tablet.svg similarity index 100% rename from serveradmin/common/static/icons/tablet.svg rename to packages/serveradmin/serveradmin/common/static/icons/tablet.svg diff --git a/serveradmin/common/static/icons/tag-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/tag-fill.svg similarity index 100% rename from serveradmin/common/static/icons/tag-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/tag-fill.svg diff --git a/serveradmin/common/static/icons/tag.svg b/packages/serveradmin/serveradmin/common/static/icons/tag.svg similarity index 100% rename from serveradmin/common/static/icons/tag.svg rename to packages/serveradmin/serveradmin/common/static/icons/tag.svg diff --git a/serveradmin/common/static/icons/terminal-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/terminal-fill.svg similarity index 100% rename from serveradmin/common/static/icons/terminal-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/terminal-fill.svg diff --git a/serveradmin/common/static/icons/terminal.svg b/packages/serveradmin/serveradmin/common/static/icons/terminal.svg similarity index 100% rename from serveradmin/common/static/icons/terminal.svg rename to packages/serveradmin/serveradmin/common/static/icons/terminal.svg diff --git a/serveradmin/common/static/icons/text-center.svg b/packages/serveradmin/serveradmin/common/static/icons/text-center.svg similarity index 100% rename from serveradmin/common/static/icons/text-center.svg rename to packages/serveradmin/serveradmin/common/static/icons/text-center.svg diff --git a/serveradmin/common/static/icons/text-indent-left.svg b/packages/serveradmin/serveradmin/common/static/icons/text-indent-left.svg similarity index 100% rename from serveradmin/common/static/icons/text-indent-left.svg rename to packages/serveradmin/serveradmin/common/static/icons/text-indent-left.svg diff --git a/serveradmin/common/static/icons/text-indent-right.svg b/packages/serveradmin/serveradmin/common/static/icons/text-indent-right.svg similarity index 100% rename from serveradmin/common/static/icons/text-indent-right.svg rename to packages/serveradmin/serveradmin/common/static/icons/text-indent-right.svg diff --git a/serveradmin/common/static/icons/text-left.svg b/packages/serveradmin/serveradmin/common/static/icons/text-left.svg similarity index 100% rename from serveradmin/common/static/icons/text-left.svg rename to packages/serveradmin/serveradmin/common/static/icons/text-left.svg diff --git a/serveradmin/common/static/icons/text-right.svg b/packages/serveradmin/serveradmin/common/static/icons/text-right.svg similarity index 100% rename from serveradmin/common/static/icons/text-right.svg rename to packages/serveradmin/serveradmin/common/static/icons/text-right.svg diff --git a/serveradmin/common/static/icons/three-dots-vertical.svg b/packages/serveradmin/serveradmin/common/static/icons/three-dots-vertical.svg similarity index 100% rename from serveradmin/common/static/icons/three-dots-vertical.svg rename to packages/serveradmin/serveradmin/common/static/icons/three-dots-vertical.svg diff --git a/serveradmin/common/static/icons/three-dots.svg b/packages/serveradmin/serveradmin/common/static/icons/three-dots.svg similarity index 100% rename from serveradmin/common/static/icons/three-dots.svg rename to packages/serveradmin/serveradmin/common/static/icons/three-dots.svg diff --git a/serveradmin/common/static/icons/toggle-off.svg b/packages/serveradmin/serveradmin/common/static/icons/toggle-off.svg similarity index 100% rename from serveradmin/common/static/icons/toggle-off.svg rename to packages/serveradmin/serveradmin/common/static/icons/toggle-off.svg diff --git a/serveradmin/common/static/icons/toggle-on.svg b/packages/serveradmin/serveradmin/common/static/icons/toggle-on.svg similarity index 100% rename from serveradmin/common/static/icons/toggle-on.svg rename to packages/serveradmin/serveradmin/common/static/icons/toggle-on.svg diff --git a/serveradmin/common/static/icons/toggles.svg b/packages/serveradmin/serveradmin/common/static/icons/toggles.svg similarity index 100% rename from serveradmin/common/static/icons/toggles.svg rename to packages/serveradmin/serveradmin/common/static/icons/toggles.svg diff --git a/serveradmin/common/static/icons/tools.svg b/packages/serveradmin/serveradmin/common/static/icons/tools.svg similarity index 100% rename from serveradmin/common/static/icons/tools.svg rename to packages/serveradmin/serveradmin/common/static/icons/tools.svg diff --git a/serveradmin/common/static/icons/trash-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/trash-fill.svg similarity index 100% rename from serveradmin/common/static/icons/trash-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/trash-fill.svg diff --git a/serveradmin/common/static/icons/trash.svg b/packages/serveradmin/serveradmin/common/static/icons/trash.svg similarity index 100% rename from serveradmin/common/static/icons/trash.svg rename to packages/serveradmin/serveradmin/common/static/icons/trash.svg diff --git a/serveradmin/common/static/icons/triangle-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/triangle-fill.svg similarity index 100% rename from serveradmin/common/static/icons/triangle-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/triangle-fill.svg diff --git a/serveradmin/common/static/icons/triangle-half.svg b/packages/serveradmin/serveradmin/common/static/icons/triangle-half.svg similarity index 100% rename from serveradmin/common/static/icons/triangle-half.svg rename to packages/serveradmin/serveradmin/common/static/icons/triangle-half.svg diff --git a/serveradmin/common/static/icons/triangle.svg b/packages/serveradmin/serveradmin/common/static/icons/triangle.svg similarity index 100% rename from serveradmin/common/static/icons/triangle.svg rename to packages/serveradmin/serveradmin/common/static/icons/triangle.svg diff --git a/serveradmin/common/static/icons/trophy.svg b/packages/serveradmin/serveradmin/common/static/icons/trophy.svg similarity index 100% rename from serveradmin/common/static/icons/trophy.svg rename to packages/serveradmin/serveradmin/common/static/icons/trophy.svg diff --git a/serveradmin/common/static/icons/tv-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/tv-fill.svg similarity index 100% rename from serveradmin/common/static/icons/tv-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/tv-fill.svg diff --git a/serveradmin/common/static/icons/tv.svg b/packages/serveradmin/serveradmin/common/static/icons/tv.svg similarity index 100% rename from serveradmin/common/static/icons/tv.svg rename to packages/serveradmin/serveradmin/common/static/icons/tv.svg diff --git a/serveradmin/common/static/icons/type-bold.svg b/packages/serveradmin/serveradmin/common/static/icons/type-bold.svg similarity index 100% rename from serveradmin/common/static/icons/type-bold.svg rename to packages/serveradmin/serveradmin/common/static/icons/type-bold.svg diff --git a/serveradmin/common/static/icons/type-h1.svg b/packages/serveradmin/serveradmin/common/static/icons/type-h1.svg similarity index 100% rename from serveradmin/common/static/icons/type-h1.svg rename to packages/serveradmin/serveradmin/common/static/icons/type-h1.svg diff --git a/serveradmin/common/static/icons/type-h2.svg b/packages/serveradmin/serveradmin/common/static/icons/type-h2.svg similarity index 100% rename from serveradmin/common/static/icons/type-h2.svg rename to packages/serveradmin/serveradmin/common/static/icons/type-h2.svg diff --git a/serveradmin/common/static/icons/type-h3.svg b/packages/serveradmin/serveradmin/common/static/icons/type-h3.svg similarity index 100% rename from serveradmin/common/static/icons/type-h3.svg rename to packages/serveradmin/serveradmin/common/static/icons/type-h3.svg diff --git a/serveradmin/common/static/icons/type-italic.svg b/packages/serveradmin/serveradmin/common/static/icons/type-italic.svg similarity index 100% rename from serveradmin/common/static/icons/type-italic.svg rename to packages/serveradmin/serveradmin/common/static/icons/type-italic.svg diff --git a/serveradmin/common/static/icons/type-strikethrough.svg b/packages/serveradmin/serveradmin/common/static/icons/type-strikethrough.svg similarity index 100% rename from serveradmin/common/static/icons/type-strikethrough.svg rename to packages/serveradmin/serveradmin/common/static/icons/type-strikethrough.svg diff --git a/serveradmin/common/static/icons/type-underline.svg b/packages/serveradmin/serveradmin/common/static/icons/type-underline.svg similarity index 100% rename from serveradmin/common/static/icons/type-underline.svg rename to packages/serveradmin/serveradmin/common/static/icons/type-underline.svg diff --git a/serveradmin/common/static/icons/type.svg b/packages/serveradmin/serveradmin/common/static/icons/type.svg similarity index 100% rename from serveradmin/common/static/icons/type.svg rename to packages/serveradmin/serveradmin/common/static/icons/type.svg diff --git a/serveradmin/common/static/icons/unlock-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/unlock-fill.svg similarity index 100% rename from serveradmin/common/static/icons/unlock-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/unlock-fill.svg diff --git a/serveradmin/common/static/icons/unlock.svg b/packages/serveradmin/serveradmin/common/static/icons/unlock.svg similarity index 100% rename from serveradmin/common/static/icons/unlock.svg rename to packages/serveradmin/serveradmin/common/static/icons/unlock.svg diff --git a/serveradmin/common/static/icons/upload.svg b/packages/serveradmin/serveradmin/common/static/icons/upload.svg similarity index 100% rename from serveradmin/common/static/icons/upload.svg rename to packages/serveradmin/serveradmin/common/static/icons/upload.svg diff --git a/serveradmin/common/static/icons/volume-down-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/volume-down-fill.svg similarity index 100% rename from serveradmin/common/static/icons/volume-down-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/volume-down-fill.svg diff --git a/serveradmin/common/static/icons/volume-down.svg b/packages/serveradmin/serveradmin/common/static/icons/volume-down.svg similarity index 100% rename from serveradmin/common/static/icons/volume-down.svg rename to packages/serveradmin/serveradmin/common/static/icons/volume-down.svg diff --git a/serveradmin/common/static/icons/volume-mute-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/volume-mute-fill.svg similarity index 100% rename from serveradmin/common/static/icons/volume-mute-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/volume-mute-fill.svg diff --git a/serveradmin/common/static/icons/volume-mute.svg b/packages/serveradmin/serveradmin/common/static/icons/volume-mute.svg similarity index 100% rename from serveradmin/common/static/icons/volume-mute.svg rename to packages/serveradmin/serveradmin/common/static/icons/volume-mute.svg diff --git a/serveradmin/common/static/icons/volume-up-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/volume-up-fill.svg similarity index 100% rename from serveradmin/common/static/icons/volume-up-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/volume-up-fill.svg diff --git a/serveradmin/common/static/icons/volume-up.svg b/packages/serveradmin/serveradmin/common/static/icons/volume-up.svg similarity index 100% rename from serveradmin/common/static/icons/volume-up.svg rename to packages/serveradmin/serveradmin/common/static/icons/volume-up.svg diff --git a/serveradmin/common/static/icons/wallet.svg b/packages/serveradmin/serveradmin/common/static/icons/wallet.svg similarity index 100% rename from serveradmin/common/static/icons/wallet.svg rename to packages/serveradmin/serveradmin/common/static/icons/wallet.svg diff --git a/serveradmin/common/static/icons/watch.svg b/packages/serveradmin/serveradmin/common/static/icons/watch.svg similarity index 100% rename from serveradmin/common/static/icons/watch.svg rename to packages/serveradmin/serveradmin/common/static/icons/watch.svg diff --git a/serveradmin/common/static/icons/wifi.svg b/packages/serveradmin/serveradmin/common/static/icons/wifi.svg similarity index 100% rename from serveradmin/common/static/icons/wifi.svg rename to packages/serveradmin/serveradmin/common/static/icons/wifi.svg diff --git a/serveradmin/common/static/icons/window.svg b/packages/serveradmin/serveradmin/common/static/icons/window.svg similarity index 100% rename from serveradmin/common/static/icons/window.svg rename to packages/serveradmin/serveradmin/common/static/icons/window.svg diff --git a/serveradmin/common/static/icons/wrench.svg b/packages/serveradmin/serveradmin/common/static/icons/wrench.svg similarity index 100% rename from serveradmin/common/static/icons/wrench.svg rename to packages/serveradmin/serveradmin/common/static/icons/wrench.svg diff --git a/serveradmin/common/static/icons/x-circle-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/x-circle-fill.svg similarity index 100% rename from serveradmin/common/static/icons/x-circle-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/x-circle-fill.svg diff --git a/serveradmin/common/static/icons/x-circle.svg b/packages/serveradmin/serveradmin/common/static/icons/x-circle.svg similarity index 100% rename from serveradmin/common/static/icons/x-circle.svg rename to packages/serveradmin/serveradmin/common/static/icons/x-circle.svg diff --git a/serveradmin/common/static/icons/x-octagon-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/x-octagon-fill.svg similarity index 100% rename from serveradmin/common/static/icons/x-octagon-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/x-octagon-fill.svg diff --git a/serveradmin/common/static/icons/x-octagon.svg b/packages/serveradmin/serveradmin/common/static/icons/x-octagon.svg similarity index 100% rename from serveradmin/common/static/icons/x-octagon.svg rename to packages/serveradmin/serveradmin/common/static/icons/x-octagon.svg diff --git a/serveradmin/common/static/icons/x-square-fill.svg b/packages/serveradmin/serveradmin/common/static/icons/x-square-fill.svg similarity index 100% rename from serveradmin/common/static/icons/x-square-fill.svg rename to packages/serveradmin/serveradmin/common/static/icons/x-square-fill.svg diff --git a/serveradmin/common/static/icons/x-square.svg b/packages/serveradmin/serveradmin/common/static/icons/x-square.svg similarity index 100% rename from serveradmin/common/static/icons/x-square.svg rename to packages/serveradmin/serveradmin/common/static/icons/x-square.svg diff --git a/serveradmin/common/static/icons/x.svg b/packages/serveradmin/serveradmin/common/static/icons/x.svg similarity index 100% rename from serveradmin/common/static/icons/x.svg rename to packages/serveradmin/serveradmin/common/static/icons/x.svg diff --git a/serveradmin/common/static/js/bootstrap.bundle.js b/packages/serveradmin/serveradmin/common/static/js/bootstrap.bundle.js similarity index 100% rename from serveradmin/common/static/js/bootstrap.bundle.js rename to packages/serveradmin/serveradmin/common/static/js/bootstrap.bundle.js diff --git a/serveradmin/common/static/js/bootstrap.bundle.js.map b/packages/serveradmin/serveradmin/common/static/js/bootstrap.bundle.js.map similarity index 100% rename from serveradmin/common/static/js/bootstrap.bundle.js.map rename to packages/serveradmin/serveradmin/common/static/js/bootstrap.bundle.js.map diff --git a/serveradmin/common/static/js/bootstrap.bundle.min.js b/packages/serveradmin/serveradmin/common/static/js/bootstrap.bundle.min.js similarity index 100% rename from serveradmin/common/static/js/bootstrap.bundle.min.js rename to packages/serveradmin/serveradmin/common/static/js/bootstrap.bundle.min.js diff --git a/serveradmin/common/static/js/bootstrap.bundle.min.js.map b/packages/serveradmin/serveradmin/common/static/js/bootstrap.bundle.min.js.map similarity index 100% rename from serveradmin/common/static/js/bootstrap.bundle.min.js.map rename to packages/serveradmin/serveradmin/common/static/js/bootstrap.bundle.min.js.map diff --git a/serveradmin/common/static/js/bootstrap.js b/packages/serveradmin/serveradmin/common/static/js/bootstrap.js similarity index 100% rename from serveradmin/common/static/js/bootstrap.js rename to packages/serveradmin/serveradmin/common/static/js/bootstrap.js diff --git a/serveradmin/common/static/js/bootstrap.js.map b/packages/serveradmin/serveradmin/common/static/js/bootstrap.js.map similarity index 100% rename from serveradmin/common/static/js/bootstrap.js.map rename to packages/serveradmin/serveradmin/common/static/js/bootstrap.js.map diff --git a/serveradmin/common/static/js/bootstrap.min.js b/packages/serveradmin/serveradmin/common/static/js/bootstrap.min.js similarity index 100% rename from serveradmin/common/static/js/bootstrap.min.js rename to packages/serveradmin/serveradmin/common/static/js/bootstrap.min.js diff --git a/serveradmin/common/static/js/bootstrap.min.js.map b/packages/serveradmin/serveradmin/common/static/js/bootstrap.min.js.map similarity index 100% rename from serveradmin/common/static/js/bootstrap.min.js.map rename to packages/serveradmin/serveradmin/common/static/js/bootstrap.min.js.map diff --git a/serveradmin/common/static/js/jquery-3.6.0.min.js b/packages/serveradmin/serveradmin/common/static/js/jquery-3.6.0.min.js similarity index 100% rename from serveradmin/common/static/js/jquery-3.6.0.min.js rename to packages/serveradmin/serveradmin/common/static/js/jquery-3.6.0.min.js diff --git a/serveradmin/common/static/js/js.cookie.min.js b/packages/serveradmin/serveradmin/common/static/js/js.cookie.min.js similarity index 100% rename from serveradmin/common/static/js/js.cookie.min.js rename to packages/serveradmin/serveradmin/common/static/js/js.cookie.min.js diff --git a/serveradmin/common/static/js/plugins/esc_dismissible.js b/packages/serveradmin/serveradmin/common/static/js/plugins/esc_dismissible.js similarity index 100% rename from serveradmin/common/static/js/plugins/esc_dismissible.js rename to packages/serveradmin/serveradmin/common/static/js/plugins/esc_dismissible.js diff --git a/serveradmin/common/static/js/plugins/terminal_keyboard.js b/packages/serveradmin/serveradmin/common/static/js/plugins/terminal_keyboard.js similarity index 100% rename from serveradmin/common/static/js/plugins/terminal_keyboard.js rename to packages/serveradmin/serveradmin/common/static/js/plugins/terminal_keyboard.js diff --git a/serveradmin/common/static/js/popper.min.js b/packages/serveradmin/serveradmin/common/static/js/popper.min.js similarity index 100% rename from serveradmin/common/static/js/popper.min.js rename to packages/serveradmin/serveradmin/common/static/js/popper.min.js diff --git a/serveradmin/common/static/js/serveradmin.js b/packages/serveradmin/serveradmin/common/static/js/serveradmin.js similarity index 100% rename from serveradmin/common/static/js/serveradmin.js rename to packages/serveradmin/serveradmin/common/static/js/serveradmin.js diff --git a/serveradmin/common/static/logo_innogames_bigbulb_120.png b/packages/serveradmin/serveradmin/common/static/logo_innogames_bigbulb_120.png similarity index 100% rename from serveradmin/common/static/logo_innogames_bigbulb_120.png rename to packages/serveradmin/serveradmin/common/static/logo_innogames_bigbulb_120.png diff --git a/serveradmin/common/templates/404.html b/packages/serveradmin/serveradmin/common/templates/404.html similarity index 100% rename from serveradmin/common/templates/404.html rename to packages/serveradmin/serveradmin/common/templates/404.html diff --git a/serveradmin/common/templates/base.html b/packages/serveradmin/serveradmin/common/templates/base.html similarity index 100% rename from serveradmin/common/templates/base.html rename to packages/serveradmin/serveradmin/common/templates/base.html diff --git a/serveradmin/common/templates/empty.html b/packages/serveradmin/serveradmin/common/templates/empty.html similarity index 100% rename from serveradmin/common/templates/empty.html rename to packages/serveradmin/serveradmin/common/templates/empty.html diff --git a/serveradmin/common/templates/failoverlogin.html b/packages/serveradmin/serveradmin/common/templates/failoverlogin.html similarity index 100% rename from serveradmin/common/templates/failoverlogin.html rename to packages/serveradmin/serveradmin/common/templates/failoverlogin.html diff --git a/serveradmin/common/templates/pagination.html b/packages/serveradmin/serveradmin/common/templates/pagination.html similarity index 100% rename from serveradmin/common/templates/pagination.html rename to packages/serveradmin/serveradmin/common/templates/pagination.html diff --git a/serveradmin/common/templates/serversearch.html b/packages/serveradmin/serveradmin/common/templates/serversearch.html similarity index 100% rename from serveradmin/common/templates/serversearch.html rename to packages/serveradmin/serveradmin/common/templates/serversearch.html diff --git a/serveradmin/common/templatetags/__init__.py b/packages/serveradmin/serveradmin/common/templatetags/__init__.py similarity index 100% rename from serveradmin/common/templatetags/__init__.py rename to packages/serveradmin/serveradmin/common/templatetags/__init__.py diff --git a/serveradmin/common/templatetags/common.py b/packages/serveradmin/serveradmin/common/templatetags/common.py similarity index 100% rename from serveradmin/common/templatetags/common.py rename to packages/serveradmin/serveradmin/common/templatetags/common.py diff --git a/serveradmin/common/utils.py b/packages/serveradmin/serveradmin/common/utils.py similarity index 100% rename from serveradmin/common/utils.py rename to packages/serveradmin/serveradmin/common/utils.py diff --git a/serveradmin/dataset.py b/packages/serveradmin/serveradmin/dataset.py similarity index 100% rename from serveradmin/dataset.py rename to packages/serveradmin/serveradmin/dataset.py diff --git a/serveradmin/graphite/__init__.py b/packages/serveradmin/serveradmin/graphite/__init__.py similarity index 100% rename from serveradmin/graphite/__init__.py rename to packages/serveradmin/serveradmin/graphite/__init__.py diff --git a/serveradmin/graphite/admin.py b/packages/serveradmin/serveradmin/graphite/admin.py similarity index 100% rename from serveradmin/graphite/admin.py rename to packages/serveradmin/serveradmin/graphite/admin.py diff --git a/serveradmin/graphite/management/__init__.py b/packages/serveradmin/serveradmin/graphite/management/__init__.py similarity index 100% rename from serveradmin/graphite/management/__init__.py rename to packages/serveradmin/serveradmin/graphite/management/__init__.py diff --git a/serveradmin/graphite/management/commands/__init__.py b/packages/serveradmin/serveradmin/graphite/management/commands/__init__.py similarity index 100% rename from serveradmin/graphite/management/commands/__init__.py rename to packages/serveradmin/serveradmin/graphite/management/commands/__init__.py diff --git a/serveradmin/graphite/management/commands/cache_graphite.py b/packages/serveradmin/serveradmin/graphite/management/commands/cache_graphite.py similarity index 100% rename from serveradmin/graphite/management/commands/cache_graphite.py rename to packages/serveradmin/serveradmin/graphite/management/commands/cache_graphite.py diff --git a/serveradmin/graphite/migrations/0001_initial.py b/packages/serveradmin/serveradmin/graphite/migrations/0001_initial.py similarity index 100% rename from serveradmin/graphite/migrations/0001_initial.py rename to packages/serveradmin/serveradmin/graphite/migrations/0001_initial.py diff --git a/serveradmin/graphite/migrations/0002_template_and_variation_name_validation.py b/packages/serveradmin/serveradmin/graphite/migrations/0002_template_and_variation_name_validation.py similarity index 100% rename from serveradmin/graphite/migrations/0002_template_and_variation_name_validation.py rename to packages/serveradmin/serveradmin/graphite/migrations/0002_template_and_variation_name_validation.py diff --git a/serveradmin/graphite/migrations/0003_alter_collection_params_alter_numeric_params_and_more.py b/packages/serveradmin/serveradmin/graphite/migrations/0003_alter_collection_params_alter_numeric_params_and_more.py similarity index 100% rename from serveradmin/graphite/migrations/0003_alter_collection_params_alter_numeric_params_and_more.py rename to packages/serveradmin/serveradmin/graphite/migrations/0003_alter_collection_params_alter_numeric_params_and_more.py diff --git a/serveradmin/graphite/migrations/__init__.py b/packages/serveradmin/serveradmin/graphite/migrations/__init__.py similarity index 100% rename from serveradmin/graphite/migrations/__init__.py rename to packages/serveradmin/serveradmin/graphite/migrations/__init__.py diff --git a/serveradmin/graphite/models.py b/packages/serveradmin/serveradmin/graphite/models.py similarity index 100% rename from serveradmin/graphite/models.py rename to packages/serveradmin/serveradmin/graphite/models.py diff --git a/serveradmin/graphite/static/css/graphite.css b/packages/serveradmin/serveradmin/graphite/static/css/graphite.css similarity index 100% rename from serveradmin/graphite/static/css/graphite.css rename to packages/serveradmin/serveradmin/graphite/static/css/graphite.css diff --git a/serveradmin/graphite/templates/graphite/graph_table.html b/packages/serveradmin/serveradmin/graphite/templates/graphite/graph_table.html similarity index 100% rename from serveradmin/graphite/templates/graphite/graph_table.html rename to packages/serveradmin/serveradmin/graphite/templates/graphite/graph_table.html diff --git a/serveradmin/graphite/urls.py b/packages/serveradmin/serveradmin/graphite/urls.py similarity index 100% rename from serveradmin/graphite/urls.py rename to packages/serveradmin/serveradmin/graphite/urls.py diff --git a/serveradmin/graphite/validators.py b/packages/serveradmin/serveradmin/graphite/validators.py similarity index 100% rename from serveradmin/graphite/validators.py rename to packages/serveradmin/serveradmin/graphite/validators.py diff --git a/serveradmin/graphite/views.py b/packages/serveradmin/serveradmin/graphite/views.py similarity index 100% rename from serveradmin/graphite/views.py rename to packages/serveradmin/serveradmin/graphite/views.py diff --git a/packages/serveradmin/serveradmin/local_settings.py b/packages/serveradmin/serveradmin/local_settings.py new file mode 100644 index 000000000..ece8db55c --- /dev/null +++ b/packages/serveradmin/serveradmin/local_settings.py @@ -0,0 +1,62 @@ +"""Serveradmin + +Copyright (c) 2019 InnoGames GmbH +""" + +# # Make this unique, and don't share it with anybody. +# SECRET_KEY = 'SET-RANDOM-SECRET-KEY' + +# # Enable debugging to see what's going on during development. +# DEBUG = False +ALLOWED_HOSTS = ['127.0.0.1', '::1'] + +# # On Unix systems, a value of None will cause Django to use the same +# # timezone as the operating system. If running in a Windows environment this +# # must be set to the same as your system time zone. +TIME_ZONE = 'Europe/Berlin' + +# # The default django logging config will send errors this way. +# ADMINS = ( +# ('Your Name', 'your_email@example.com'), +# ) +# MANAGERS = ADMINS + +# # Log errors to sentry +# SENTRY_DSN = '' + +# # See http://docs.djangoproject.com/en/dev/topics/logging for +# # more details on how to customize your logging configuration. +# LOG_LEVEL = 'DEBUG' if DEBUG else 'INFO' +# LOGGING['loggers']['serveradmin'] = {'level': LOG_LEVEL} +# LOGGING['loggers']['myapp'] = {'level': LOG_LEVEL} + +# # See https://docs.djangoproject.com/en/dev/ref/settings/#databases +# # for more defaults on how to configure your database connection. +# DATABASES = { +# } + +# # Load additional middleware classes +# MIDDLEWARE += [] + +# # Load additional django apps +# INSTALLED_APPS += [] + +# # Load additional menu items +# MENU_TEMPLATES += [] + +# # How many objects are shown in servershell per page by default +# OBJECTS_PER_PAGE = 25 + +# Graphite URL is required to generate graphic URL's. Normal graphs are +# requested from Graphite on the browser. Small graphs on the overview page are +# requested and stored by the Serveradmin from the Graphite. Graphs are stored +# by the job called "gensprites" under directory graphite/static/graph_sprite. +# They are also merged into single images for every server to reduce the +# requests to the Serveradmin from the browser. +GRAPHITE_URL = 'https://graphite-web.innogames.de' +GRAPHITE_USER = 'serveradmin' +GRAPHITE_PASSWORD = 'Pezai2eeL7ohshuL' +# User will be redirected to detailed system overview dashboard +GRAFANA_DASHBOARD = 'https://grafana.innogames.de/d/000000246/system-overview' + +MEDIA_ROOT = "/home/kofrezo/Sourcecode/serveradmin/_media" \ No newline at end of file diff --git a/serveradmin/local_settings.py.example b/packages/serveradmin/serveradmin/local_settings.py.example similarity index 100% rename from serveradmin/local_settings.py.example rename to packages/serveradmin/serveradmin/local_settings.py.example diff --git a/serveradmin/resources/__init__.py b/packages/serveradmin/serveradmin/resources/__init__.py similarity index 100% rename from serveradmin/resources/__init__.py rename to packages/serveradmin/serveradmin/resources/__init__.py diff --git a/serveradmin/resources/management/__init__.py b/packages/serveradmin/serveradmin/resources/management/__init__.py similarity index 100% rename from serveradmin/resources/management/__init__.py rename to packages/serveradmin/serveradmin/resources/management/__init__.py diff --git a/serveradmin/resources/management/commands/__init__.py b/packages/serveradmin/serveradmin/resources/management/commands/__init__.py similarity index 100% rename from serveradmin/resources/management/commands/__init__.py rename to packages/serveradmin/serveradmin/resources/management/commands/__init__.py diff --git a/serveradmin/resources/management/commands/clear_migration_log.py b/packages/serveradmin/serveradmin/resources/management/commands/clear_migration_log.py similarity index 100% rename from serveradmin/resources/management/commands/clear_migration_log.py rename to packages/serveradmin/serveradmin/resources/management/commands/clear_migration_log.py diff --git a/serveradmin/resources/static/css/resources.css b/packages/serveradmin/serveradmin/resources/static/css/resources.css similarity index 100% rename from serveradmin/resources/static/css/resources.css rename to packages/serveradmin/serveradmin/resources/static/css/resources.css diff --git a/serveradmin/resources/static/js/graphite.js b/packages/serveradmin/serveradmin/resources/static/js/graphite.js similarity index 100% rename from serveradmin/resources/static/js/graphite.js rename to packages/serveradmin/serveradmin/resources/static/js/graphite.js diff --git a/serveradmin/resources/templates/resources/graph_popup.html b/packages/serveradmin/serveradmin/resources/templates/resources/graph_popup.html similarity index 100% rename from serveradmin/resources/templates/resources/graph_popup.html rename to packages/serveradmin/serveradmin/resources/templates/resources/graph_popup.html diff --git a/serveradmin/resources/templates/resources/index.html b/packages/serveradmin/serveradmin/resources/templates/resources/index.html similarity index 100% rename from serveradmin/resources/templates/resources/index.html rename to packages/serveradmin/serveradmin/resources/templates/resources/index.html diff --git a/serveradmin/resources/templates/resources/menu.html b/packages/serveradmin/serveradmin/resources/templates/resources/menu.html similarity index 100% rename from serveradmin/resources/templates/resources/menu.html rename to packages/serveradmin/serveradmin/resources/templates/resources/menu.html diff --git a/serveradmin/resources/urls.py b/packages/serveradmin/serveradmin/resources/urls.py similarity index 100% rename from serveradmin/resources/urls.py rename to packages/serveradmin/serveradmin/resources/urls.py diff --git a/serveradmin/resources/views.py b/packages/serveradmin/serveradmin/resources/views.py similarity index 100% rename from serveradmin/resources/views.py rename to packages/serveradmin/serveradmin/resources/views.py diff --git a/serveradmin/serverdb/__init__.py b/packages/serveradmin/serveradmin/serverdb/__init__.py similarity index 100% rename from serveradmin/serverdb/__init__.py rename to packages/serveradmin/serveradmin/serverdb/__init__.py diff --git a/serveradmin/serverdb/admin.py b/packages/serveradmin/serveradmin/serverdb/admin.py similarity index 100% rename from serveradmin/serverdb/admin.py rename to packages/serveradmin/serveradmin/serverdb/admin.py diff --git a/serveradmin/serverdb/fixtures/attribute.json b/packages/serveradmin/serveradmin/serverdb/fixtures/attribute.json similarity index 100% rename from serveradmin/serverdb/fixtures/attribute.json rename to packages/serveradmin/serveradmin/serverdb/fixtures/attribute.json diff --git a/serveradmin/serverdb/fixtures/auth_user.json b/packages/serveradmin/serveradmin/serverdb/fixtures/auth_user.json similarity index 100% rename from serveradmin/serverdb/fixtures/auth_user.json rename to packages/serveradmin/serveradmin/serverdb/fixtures/auth_user.json diff --git a/serveradmin/serverdb/fixtures/ip_addr_type.json b/packages/serveradmin/serveradmin/serverdb/fixtures/ip_addr_type.json similarity index 100% rename from serveradmin/serverdb/fixtures/ip_addr_type.json rename to packages/serveradmin/serveradmin/serverdb/fixtures/ip_addr_type.json diff --git a/serveradmin/serverdb/fixtures/test_dataset.json b/packages/serveradmin/serveradmin/serverdb/fixtures/test_dataset.json similarity index 100% rename from serveradmin/serverdb/fixtures/test_dataset.json rename to packages/serveradmin/serveradmin/serverdb/fixtures/test_dataset.json diff --git a/serveradmin/serverdb/forms.py b/packages/serveradmin/serveradmin/serverdb/forms.py similarity index 100% rename from serveradmin/serverdb/forms.py rename to packages/serveradmin/serveradmin/serverdb/forms.py diff --git a/serveradmin/serverdb/migrations/0001_initial.py b/packages/serveradmin/serveradmin/serverdb/migrations/0001_initial.py similarity index 100% rename from serveradmin/serverdb/migrations/0001_initial.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0001_initial.py diff --git a/serveradmin/serverdb/migrations/0002_lookup_constraints.py b/packages/serveradmin/serveradmin/serverdb/migrations/0002_lookup_constraints.py similarity index 100% rename from serveradmin/serverdb/migrations/0002_lookup_constraints.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0002_lookup_constraints.py diff --git a/serveradmin/serverdb/migrations/0003_server_indexing.py b/packages/serveradmin/serveradmin/serverdb/migrations/0003_server_indexing.py similarity index 100% rename from serveradmin/serverdb/migrations/0003_server_indexing.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0003_server_indexing.py diff --git a/serveradmin/serverdb/migrations/0004_attribute_value_constraints.py b/packages/serveradmin/serveradmin/serverdb/migrations/0004_attribute_value_constraints.py similarity index 100% rename from serveradmin/serverdb/migrations/0004_attribute_value_constraints.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0004_attribute_value_constraints.py diff --git a/serveradmin/serverdb/migrations/0005_attribute_clone.py b/packages/serveradmin/serveradmin/serverdb/migrations/0005_attribute_clone.py similarity index 100% rename from serveradmin/serverdb/migrations/0005_attribute_clone.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0005_attribute_clone.py diff --git a/serveradmin/serverdb/migrations/0006_datetime_datatype.py b/packages/serveradmin/serveradmin/serverdb/migrations/0006_datetime_datatype.py similarity index 100% rename from serveradmin/serverdb/migrations/0006_datetime_datatype.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0006_datetime_datatype.py diff --git a/serveradmin/serverdb/migrations/0007_hostname_regex_hyphens.py b/packages/serveradmin/serveradmin/serverdb/migrations/0007_hostname_regex_hyphens.py similarity index 100% rename from serveradmin/serverdb/migrations/0007_hostname_regex_hyphens.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0007_hostname_regex_hyphens.py diff --git a/serveradmin/serverdb/migrations/0008_hostname_length_254.py b/packages/serveradmin/serveradmin/serverdb/migrations/0008_hostname_length_254.py similarity index 100% rename from serveradmin/serverdb/migrations/0008_hostname_length_254.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0008_hostname_length_254.py diff --git a/serveradmin/serverdb/migrations/0009_servertype_and_attribute_definitions.py b/packages/serveradmin/serveradmin/serverdb/migrations/0009_servertype_and_attribute_definitions.py similarity index 100% rename from serveradmin/serverdb/migrations/0009_servertype_and_attribute_definitions.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0009_servertype_and_attribute_definitions.py diff --git a/serveradmin/serverdb/migrations/0010_delete_change.py b/packages/serveradmin/serveradmin/serverdb/migrations/0010_delete_change.py similarity index 100% rename from serveradmin/serverdb/migrations/0010_delete_change.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0010_delete_change.py diff --git a/serveradmin/serverdb/migrations/0011_create_change_table.py b/packages/serveradmin/serveradmin/serverdb/migrations/0011_create_change_table.py similarity index 100% rename from serveradmin/serverdb/migrations/0011_create_change_table.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0011_create_change_table.py diff --git a/serveradmin/serverdb/migrations/0012_migrate_change_tables.py b/packages/serveradmin/serveradmin/serverdb/migrations/0012_migrate_change_tables.py similarity index 100% rename from serveradmin/serverdb/migrations/0012_migrate_change_tables.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0012_migrate_change_tables.py diff --git a/serveradmin/serverdb/migrations/0013_change_index.py b/packages/serveradmin/serveradmin/serverdb/migrations/0013_change_index.py similarity index 100% rename from serveradmin/serverdb/migrations/0013_change_index.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0013_change_index.py diff --git a/serveradmin/serverdb/migrations/0014_delete_deprecated_change_models.py b/packages/serveradmin/serveradmin/serverdb/migrations/0014_delete_deprecated_change_models.py similarity index 100% rename from serveradmin/serverdb/migrations/0014_delete_deprecated_change_models.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0014_delete_deprecated_change_models.py diff --git a/serveradmin/serverdb/migrations/0015_attribute_history_field.py b/packages/serveradmin/serveradmin/serverdb/migrations/0015_attribute_history_field.py similarity index 100% rename from serveradmin/serverdb/migrations/0015_attribute_history_field.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0015_attribute_history_field.py diff --git a/serveradmin/serverdb/migrations/0016_optional_servertype_for_relation.py b/packages/serveradmin/serveradmin/serverdb/migrations/0016_optional_servertype_for_relation.py similarity index 100% rename from serveradmin/serverdb/migrations/0016_optional_servertype_for_relation.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0016_optional_servertype_for_relation.py diff --git a/serveradmin/serverdb/migrations/0017_inet_family_choice.py b/packages/serveradmin/serveradmin/serverdb/migrations/0017_inet_family_choice.py similarity index 100% rename from serveradmin/serverdb/migrations/0017_inet_family_choice.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0017_inet_family_choice.py diff --git a/serveradmin/serverdb/migrations/0018_alter_server_hostname.py b/packages/serveradmin/serveradmin/serverdb/migrations/0018_alter_server_hostname.py similarity index 100% rename from serveradmin/serverdb/migrations/0018_alter_server_hostname.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0018_alter_server_hostname.py diff --git a/serveradmin/serverdb/migrations/0019_drop_intern_ip_constraint.py b/packages/serveradmin/serveradmin/serverdb/migrations/0019_drop_intern_ip_constraint.py similarity index 100% rename from serveradmin/serverdb/migrations/0019_drop_intern_ip_constraint.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0019_drop_intern_ip_constraint.py diff --git a/serveradmin/serverdb/migrations/0020_alter_servertype_ip_addr_type.py b/packages/serveradmin/serveradmin/serverdb/migrations/0020_alter_servertype_ip_addr_type.py similarity index 100% rename from serveradmin/serverdb/migrations/0020_alter_servertype_ip_addr_type.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0020_alter_servertype_ip_addr_type.py diff --git a/serveradmin/serverdb/migrations/0021_serverinetattribute_server_inet_attribute_value_idx.py b/packages/serveradmin/serveradmin/serverdb/migrations/0021_serverinetattribute_server_inet_attribute_value_idx.py similarity index 100% rename from serveradmin/serverdb/migrations/0021_serverinetattribute_server_inet_attribute_value_idx.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0021_serverinetattribute_server_inet_attribute_value_idx.py diff --git a/serveradmin/serverdb/migrations/0022_attribute_relax_target_servertype_constraints.py b/packages/serveradmin/serveradmin/serverdb/migrations/0022_attribute_relax_target_servertype_constraints.py similarity index 100% rename from serveradmin/serverdb/migrations/0022_attribute_relax_target_servertype_constraints.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0022_attribute_relax_target_servertype_constraints.py diff --git a/serveradmin/serverdb/migrations/0023_attribute_multi_target_servertype.py b/packages/serveradmin/serveradmin/serverdb/migrations/0023_attribute_multi_target_servertype.py similarity index 100% rename from serveradmin/serverdb/migrations/0023_attribute_multi_target_servertype.py rename to packages/serveradmin/serveradmin/serverdb/migrations/0023_attribute_multi_target_servertype.py diff --git a/packages/serveradmin/serveradmin/serverdb/migrations/0024_alter_serverbooleanattribute_attribute.py b/packages/serveradmin/serveradmin/serverdb/migrations/0024_alter_serverbooleanattribute_attribute.py new file mode 100644 index 000000000..52c198d93 --- /dev/null +++ b/packages/serveradmin/serveradmin/serverdb/migrations/0024_alter_serverbooleanattribute_attribute.py @@ -0,0 +1,42 @@ +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('serverdb', '0023_attribute_multi_target_servertype'), + ] + + operations = [ + # Drop obsolete indexes. The like one is not required because we do not + # support (fuzzy) search for attribute ids and the other one is + # redundant. + migrations.RunSQL( + sql=[ + "DROP INDEX IF EXISTS " + "server_boolean_attribute_attribute_id_b1ad575f;", + "DROP INDEX IF EXISTS " + "server_boolean_attribute_attribute_id_b1ad575f_like;", + ], + reverse_sql=[ + "CREATE INDEX server_boolean_attribute_attribute_id_b1ad575f " + "ON server_boolean_attribute (attribute_id);", + "CREATE INDEX " + "server_boolean_attribute_attribute_id_b1ad575f_like " + "ON server_boolean_attribute (attribute_id varchar_pattern_ops);", + ], + state_operations=[ + migrations.AlterField( + model_name='serverbooleanattribute', + name='attribute', + field=models.ForeignKey( + db_index=False, + limit_choices_to={'type': 'boolean'}, + on_delete=django.db.models.deletion.CASCADE, + to='serverdb.attribute', + ), + ), + ], + ), + ] diff --git a/packages/serveradmin/serveradmin/serverdb/migrations/0025_rename_serverbooleanattribute_attribute_server_bool_attribu_25fb6c_idx_and_more.py b/packages/serveradmin/serveradmin/serverdb/migrations/0025_rename_serverbooleanattribute_attribute_server_bool_attribu_25fb6c_idx_and_more.py new file mode 100644 index 000000000..e3bb86a66 --- /dev/null +++ b/packages/serveradmin/serveradmin/serverdb/migrations/0025_rename_serverbooleanattribute_attribute_server_bool_attribu_25fb6c_idx_and_more.py @@ -0,0 +1,53 @@ +# Generated by Django 5.2.15 on 2026-06-12 14:00 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('serverdb', '0024_alter_serverbooleanattribute_attribute'), + ] + + operations = [ + migrations.RenameIndex( + model_name='serverbooleanattribute', + new_name='server_bool_attribu_25fb6c_idx', + old_fields=('attribute',), + ), + migrations.RenameIndex( + model_name='serverdateattribute', + new_name='server_date_attribu_12cbb2_idx', + old_fields=('attribute', 'value'), + ), + migrations.RenameIndex( + model_name='serverdatetimeattribute', + new_name='server_date_attribu_f35d26_idx', + old_fields=('attribute', 'value'), + ), + migrations.RenameIndex( + model_name='serverinetattribute', + new_name='server_inet_attribu_8feba2_idx', + old_fields=('attribute', 'value'), + ), + migrations.RenameIndex( + model_name='servermacaddressattribute', + new_name='server_maca_attribu_1bcfb5_idx', + old_fields=('attribute', 'value'), + ), + migrations.RenameIndex( + model_name='servernumberattribute', + new_name='server_numb_attribu_6223e1_idx', + old_fields=('attribute', 'value'), + ), + migrations.RenameIndex( + model_name='serverrelationattribute', + new_name='server_rela_attribu_ecf9db_idx', + old_fields=('attribute', 'value'), + ), + migrations.RenameIndex( + model_name='serverstringattribute', + new_name='server_stri_attribu_59edc4_idx', + old_fields=('attribute', 'value'), + ), + ] diff --git a/serveradmin/serverdb/migrations/__init__.py b/packages/serveradmin/serveradmin/serverdb/migrations/__init__.py similarity index 100% rename from serveradmin/serverdb/migrations/__init__.py rename to packages/serveradmin/serveradmin/serverdb/migrations/__init__.py diff --git a/serveradmin/serverdb/models.py b/packages/serveradmin/serveradmin/serverdb/models.py similarity index 98% rename from serveradmin/serverdb/models.py rename to packages/serveradmin/serveradmin/serverdb/models.py index e91f0ccfa..ff227ea6d 100644 --- a/serveradmin/serverdb/models.py +++ b/packages/serveradmin/serveradmin/serverdb/models.py @@ -4,7 +4,6 @@ """ import re -from distutils.util import strtobool from ipaddress import ( IPv4Address, IPv6Address, @@ -29,6 +28,7 @@ from django.utils.translation import gettext as _ from netaddr import EUI +from adminapi.dataset import strtobool from adminapi.datatype import STR_BASED_DATATYPES from serveradmin.apps.models import Application @@ -612,7 +612,7 @@ class Meta: app_label = "serverdb" db_table = "server_string_attribute" unique_together = [["server", "attribute", "value"]] - index_together = [["attribute", "value"]] + indexes = [models.Index(fields=["attribute", "value"])] def save_value(self, value): for char in "'\"": @@ -659,7 +659,7 @@ class Meta: app_label = "serverdb" db_table = "server_relation_attribute" unique_together = [["server", "attribute", "value"]] - index_together = [["attribute", "value"]] + indexes = [models.Index(fields=["attribute", "value"])] def save_value(self, value): try: @@ -682,6 +682,7 @@ def save_value(self, value): class ServerBooleanAttribute(ServerAttribute): attribute = models.ForeignKey( Attribute, + db_index=False, on_delete=models.CASCADE, limit_choices_to=dict(type="boolean"), ) @@ -690,7 +691,7 @@ class Meta: app_label = "serverdb" db_table = "server_boolean_attribute" unique_together = [["server", "attribute"]] - index_together = [["attribute"]] + indexes = [models.Index(fields=["attribute"])] def get_value(self): return True @@ -715,7 +716,7 @@ class Meta: app_label = "serverdb" db_table = "server_number_attribute" unique_together = [["server", "attribute", "value"]] - index_together = [["attribute", "value"]] + indexes = [models.Index(fields=["attribute", "value"])] def get_value(self): return ( @@ -738,8 +739,8 @@ class Meta: app_label = "serverdb" db_table = "server_inet_attribute" unique_together = [["server", "attribute", "value"]] - index_together = [["attribute", "value"]] indexes = [ + models.Index(fields=["attribute", "value"]), GistIndex(fields=["value"], opclasses=["inet_ops"], name="server_inet_attribute_value_idx"), ] @@ -798,7 +799,7 @@ class Meta: app_label = "serverdb" db_table = "server_macaddr_attribute" unique_together = [["server", "attribute", "value"]] - index_together = [["attribute", "value"]] + indexes = [models.Index(fields=["attribute", "value"])] class ServerDateAttribute(ServerAttribute): @@ -814,7 +815,7 @@ class Meta: app_label = "serverdb" db_table = "server_date_attribute" unique_together = [["server", "attribute", "value"]] - index_together = [["attribute", "value"]] + indexes = [models.Index(fields=["attribute", "value"])] class ServerDateTimeAttribute(ServerAttribute): @@ -830,7 +831,7 @@ class Meta: app_label = "serverdb" db_table = "server_datetime_attribute" unique_together = [["server", "attribute", "value"]] - index_together = [["attribute", "value"]] + indexes = [models.Index(fields=["attribute", "value"])] class ChangeCommit(models.Model): diff --git a/serveradmin/serverdb/query_committer.py b/packages/serveradmin/serveradmin/serverdb/query_committer.py similarity index 100% rename from serveradmin/serverdb/query_committer.py rename to packages/serveradmin/serveradmin/serverdb/query_committer.py diff --git a/serveradmin/serverdb/query_executer.py b/packages/serveradmin/serveradmin/serverdb/query_executer.py similarity index 100% rename from serveradmin/serverdb/query_executer.py rename to packages/serveradmin/serveradmin/serverdb/query_executer.py diff --git a/serveradmin/serverdb/query_materializer.py b/packages/serveradmin/serveradmin/serverdb/query_materializer.py similarity index 100% rename from serveradmin/serverdb/query_materializer.py rename to packages/serveradmin/serveradmin/serverdb/query_materializer.py diff --git a/serveradmin/serverdb/signals.py b/packages/serveradmin/serveradmin/serverdb/signals.py similarity index 100% rename from serveradmin/serverdb/signals.py rename to packages/serveradmin/serveradmin/serverdb/signals.py diff --git a/serveradmin/serverdb/sql_generator.py b/packages/serveradmin/serveradmin/serverdb/sql_generator.py similarity index 100% rename from serveradmin/serverdb/sql_generator.py rename to packages/serveradmin/serveradmin/serverdb/sql_generator.py diff --git a/serveradmin/serverdb/static/css/history.css b/packages/serveradmin/serveradmin/serverdb/static/css/history.css similarity index 100% rename from serveradmin/serverdb/static/css/history.css rename to packages/serveradmin/serveradmin/serverdb/static/css/history.css diff --git a/serveradmin/serverdb/static/servertype.png b/packages/serveradmin/serveradmin/serverdb/static/servertype.png similarity index 100% rename from serveradmin/serverdb/static/servertype.png rename to packages/serveradmin/serveradmin/serverdb/static/servertype.png diff --git a/serveradmin/serverdb/templates/serverdb/changes.html b/packages/serveradmin/serveradmin/serverdb/templates/serverdb/changes.html similarity index 100% rename from serveradmin/serverdb/templates/serverdb/changes.html rename to packages/serveradmin/serveradmin/serverdb/templates/serverdb/changes.html diff --git a/serveradmin/serverdb/templates/serverdb/history.html b/packages/serveradmin/serveradmin/serverdb/templates/serverdb/history.html similarity index 100% rename from serveradmin/serverdb/templates/serverdb/history.html rename to packages/serveradmin/serveradmin/serverdb/templates/serverdb/history.html diff --git a/serveradmin/serverdb/templatetags/__init__.py b/packages/serveradmin/serveradmin/serverdb/templatetags/__init__.py similarity index 100% rename from serveradmin/serverdb/templatetags/__init__.py rename to packages/serveradmin/serveradmin/serverdb/templatetags/__init__.py diff --git a/serveradmin/serverdb/templatetags/changes.py b/packages/serveradmin/serveradmin/serverdb/templatetags/changes.py similarity index 100% rename from serveradmin/serverdb/templatetags/changes.py rename to packages/serveradmin/serveradmin/serverdb/templatetags/changes.py diff --git a/serveradmin/serverdb/tests/__init__.py b/packages/serveradmin/serveradmin/serverdb/tests/__init__.py similarity index 100% rename from serveradmin/serverdb/tests/__init__.py rename to packages/serveradmin/serveradmin/serverdb/tests/__init__.py diff --git a/serveradmin/serverdb/tests/test_acls.py b/packages/serveradmin/serveradmin/serverdb/tests/test_acls.py similarity index 100% rename from serveradmin/serverdb/tests/test_acls.py rename to packages/serveradmin/serveradmin/serverdb/tests/test_acls.py diff --git a/serveradmin/serverdb/tests/test_attribute.py b/packages/serveradmin/serveradmin/serverdb/tests/test_attribute.py similarity index 100% rename from serveradmin/serverdb/tests/test_attribute.py rename to packages/serveradmin/serveradmin/serverdb/tests/test_attribute.py diff --git a/serveradmin/serverdb/tests/test_ip_addr_type.py b/packages/serveradmin/serveradmin/serverdb/tests/test_ip_addr_type.py similarity index 100% rename from serveradmin/serverdb/tests/test_ip_addr_type.py rename to packages/serveradmin/serveradmin/serverdb/tests/test_ip_addr_type.py diff --git a/serveradmin/serverdb/tests/test_views.py b/packages/serveradmin/serveradmin/serverdb/tests/test_views.py similarity index 100% rename from serveradmin/serverdb/tests/test_views.py rename to packages/serveradmin/serveradmin/serverdb/tests/test_views.py diff --git a/serveradmin/serverdb/urls.py b/packages/serveradmin/serveradmin/serverdb/urls.py similarity index 100% rename from serveradmin/serverdb/urls.py rename to packages/serveradmin/serveradmin/serverdb/urls.py diff --git a/serveradmin/serverdb/views.py b/packages/serveradmin/serveradmin/serverdb/views.py similarity index 100% rename from serveradmin/serverdb/views.py rename to packages/serveradmin/serveradmin/serverdb/views.py diff --git a/serveradmin/servershell/__init__.py b/packages/serveradmin/serveradmin/servershell/__init__.py similarity index 100% rename from serveradmin/servershell/__init__.py rename to packages/serveradmin/serveradmin/servershell/__init__.py diff --git a/serveradmin/servershell/helper/__init__.py b/packages/serveradmin/serveradmin/servershell/helper/__init__.py similarity index 100% rename from serveradmin/servershell/helper/__init__.py rename to packages/serveradmin/serveradmin/servershell/helper/__init__.py diff --git a/serveradmin/servershell/helper/autocomplete.py b/packages/serveradmin/serveradmin/servershell/helper/autocomplete.py similarity index 100% rename from serveradmin/servershell/helper/autocomplete.py rename to packages/serveradmin/serveradmin/servershell/helper/autocomplete.py diff --git a/serveradmin/servershell/merged_query_iterator.py b/packages/serveradmin/serveradmin/servershell/merged_query_iterator.py similarity index 100% rename from serveradmin/servershell/merged_query_iterator.py rename to packages/serveradmin/serveradmin/servershell/merged_query_iterator.py diff --git a/serveradmin/servershell/static/css/fontawesome.min.css b/packages/serveradmin/serveradmin/servershell/static/css/fontawesome.min.css similarity index 100% rename from serveradmin/servershell/static/css/fontawesome.min.css rename to packages/serveradmin/serveradmin/servershell/static/css/fontawesome.min.css diff --git a/serveradmin/servershell/static/css/jquery-ui.min.css b/packages/serveradmin/serveradmin/servershell/static/css/jquery-ui.min.css similarity index 100% rename from serveradmin/servershell/static/css/jquery-ui.min.css rename to packages/serveradmin/serveradmin/servershell/static/css/jquery-ui.min.css diff --git a/serveradmin/servershell/static/css/servershell.css b/packages/serveradmin/serveradmin/servershell/static/css/servershell.css similarity index 100% rename from serveradmin/servershell/static/css/servershell.css rename to packages/serveradmin/serveradmin/servershell/static/css/servershell.css diff --git a/serveradmin/servershell/static/css/states.css b/packages/serveradmin/serveradmin/servershell/static/css/states.css similarity index 100% rename from serveradmin/servershell/static/css/states.css rename to packages/serveradmin/serveradmin/servershell/static/css/states.css diff --git a/serveradmin/servershell/static/js/diff.js b/packages/serveradmin/serveradmin/servershell/static/js/diff.js similarity index 100% rename from serveradmin/servershell/static/js/diff.js rename to packages/serveradmin/serveradmin/servershell/static/js/diff.js diff --git a/serveradmin/servershell/static/js/inspect.js b/packages/serveradmin/serveradmin/servershell/static/js/inspect.js similarity index 100% rename from serveradmin/servershell/static/js/inspect.js rename to packages/serveradmin/serveradmin/servershell/static/js/inspect.js diff --git a/serveradmin/servershell/static/js/jquery-ui.min.js b/packages/serveradmin/serveradmin/servershell/static/js/jquery-ui.min.js similarity index 100% rename from serveradmin/servershell/static/js/jquery-ui.min.js rename to packages/serveradmin/serveradmin/servershell/static/js/jquery-ui.min.js diff --git a/serveradmin/servershell/static/js/servershell.js b/packages/serveradmin/serveradmin/servershell/static/js/servershell.js similarity index 100% rename from serveradmin/servershell/static/js/servershell.js rename to packages/serveradmin/serveradmin/servershell/static/js/servershell.js diff --git a/serveradmin/servershell/static/js/servershell/attributes.js b/packages/serveradmin/serveradmin/servershell/static/js/servershell/attributes.js similarity index 100% rename from serveradmin/servershell/static/js/servershell/attributes.js rename to packages/serveradmin/serveradmin/servershell/static/js/servershell/attributes.js diff --git a/serveradmin/servershell/static/js/servershell/autocomplete/command.js b/packages/serveradmin/serveradmin/servershell/static/js/servershell/autocomplete/command.js similarity index 100% rename from serveradmin/servershell/static/js/servershell/autocomplete/command.js rename to packages/serveradmin/serveradmin/servershell/static/js/servershell/autocomplete/command.js diff --git a/serveradmin/servershell/static/js/servershell/autocomplete/history.js b/packages/serveradmin/serveradmin/servershell/static/js/servershell/autocomplete/history.js similarity index 100% rename from serveradmin/servershell/static/js/servershell/autocomplete/history.js rename to packages/serveradmin/serveradmin/servershell/static/js/servershell/autocomplete/history.js diff --git a/serveradmin/servershell/static/js/servershell/autocomplete/search.js b/packages/serveradmin/serveradmin/servershell/static/js/servershell/autocomplete/search.js similarity index 100% rename from serveradmin/servershell/static/js/servershell/autocomplete/search.js rename to packages/serveradmin/serveradmin/servershell/static/js/servershell/autocomplete/search.js diff --git a/serveradmin/servershell/static/js/servershell/choose_ip_address.js b/packages/serveradmin/serveradmin/servershell/static/js/servershell/choose_ip_address.js similarity index 100% rename from serveradmin/servershell/static/js/servershell/choose_ip_address.js rename to packages/serveradmin/serveradmin/servershell/static/js/servershell/choose_ip_address.js diff --git a/serveradmin/servershell/static/js/servershell/command.js b/packages/serveradmin/serveradmin/servershell/static/js/servershell/command.js similarity index 100% rename from serveradmin/servershell/static/js/servershell/command.js rename to packages/serveradmin/serveradmin/servershell/static/js/servershell/command.js diff --git a/serveradmin/servershell/static/js/servershell/history.js b/packages/serveradmin/serveradmin/servershell/static/js/servershell/history.js similarity index 100% rename from serveradmin/servershell/static/js/servershell/history.js rename to packages/serveradmin/serveradmin/servershell/static/js/servershell/history.js diff --git a/serveradmin/servershell/static/js/servershell/result.js b/packages/serveradmin/serveradmin/servershell/static/js/servershell/result.js similarity index 100% rename from serveradmin/servershell/static/js/servershell/result.js rename to packages/serveradmin/serveradmin/servershell/static/js/servershell/result.js diff --git a/serveradmin/servershell/static/js/servershell/search.js b/packages/serveradmin/serveradmin/servershell/static/js/servershell/search.js similarity index 100% rename from serveradmin/servershell/static/js/servershell/search.js rename to packages/serveradmin/serveradmin/servershell/static/js/servershell/search.js diff --git a/serveradmin/servershell/static/js/servershell/validate.js b/packages/serveradmin/serveradmin/servershell/static/js/servershell/validate.js similarity index 100% rename from serveradmin/servershell/static/js/servershell/validate.js rename to packages/serveradmin/serveradmin/servershell/static/js/servershell/validate.js diff --git a/serveradmin/servershell/static/webfonts/fa-solid-900.woff2 b/packages/serveradmin/serveradmin/servershell/static/webfonts/fa-solid-900.woff2 similarity index 100% rename from serveradmin/servershell/static/webfonts/fa-solid-900.woff2 rename to packages/serveradmin/serveradmin/servershell/static/webfonts/fa-solid-900.woff2 diff --git a/serveradmin/servershell/templates/servershell/choose_ip_address.html b/packages/serveradmin/serveradmin/servershell/templates/servershell/choose_ip_address.html similarity index 100% rename from serveradmin/servershell/templates/servershell/choose_ip_address.html rename to packages/serveradmin/serveradmin/servershell/templates/servershell/choose_ip_address.html diff --git a/serveradmin/servershell/templates/servershell/diff.html b/packages/serveradmin/serveradmin/servershell/templates/servershell/diff.html similarity index 100% rename from serveradmin/servershell/templates/servershell/diff.html rename to packages/serveradmin/serveradmin/servershell/templates/servershell/diff.html diff --git a/serveradmin/servershell/templates/servershell/edit.html b/packages/serveradmin/serveradmin/servershell/templates/servershell/edit.html similarity index 100% rename from serveradmin/servershell/templates/servershell/edit.html rename to packages/serveradmin/serveradmin/servershell/templates/servershell/edit.html diff --git a/serveradmin/servershell/templates/servershell/index.html b/packages/serveradmin/serveradmin/servershell/templates/servershell/index.html similarity index 100% rename from serveradmin/servershell/templates/servershell/index.html rename to packages/serveradmin/serveradmin/servershell/templates/servershell/index.html diff --git a/serveradmin/servershell/templates/servershell/inspect.html b/packages/serveradmin/serveradmin/servershell/templates/servershell/inspect.html similarity index 100% rename from serveradmin/servershell/templates/servershell/inspect.html rename to packages/serveradmin/serveradmin/servershell/templates/servershell/inspect.html diff --git a/serveradmin/servershell/templates/servershell/menu.html b/packages/serveradmin/serveradmin/servershell/templates/servershell/menu.html similarity index 100% rename from serveradmin/servershell/templates/servershell/menu.html rename to packages/serveradmin/serveradmin/servershell/templates/servershell/menu.html diff --git a/serveradmin/servershell/templates/servershell/modals/choose_ip_address.html b/packages/serveradmin/serveradmin/servershell/templates/servershell/modals/choose_ip_address.html similarity index 100% rename from serveradmin/servershell/templates/servershell/modals/choose_ip_address.html rename to packages/serveradmin/serveradmin/servershell/templates/servershell/modals/choose_ip_address.html diff --git a/serveradmin/servershell/templates/servershell/modals/export.html b/packages/serveradmin/serveradmin/servershell/templates/servershell/modals/export.html similarity index 100% rename from serveradmin/servershell/templates/servershell/modals/export.html rename to packages/serveradmin/serveradmin/servershell/templates/servershell/modals/export.html diff --git a/serveradmin/servershell/templates/servershell/modals/help_command.html b/packages/serveradmin/serveradmin/servershell/templates/servershell/modals/help_command.html similarity index 100% rename from serveradmin/servershell/templates/servershell/modals/help_command.html rename to packages/serveradmin/serveradmin/servershell/templates/servershell/modals/help_command.html diff --git a/serveradmin/servershell/templates/servershell/modals/help_search.html b/packages/serveradmin/serveradmin/servershell/templates/servershell/modals/help_search.html similarity index 100% rename from serveradmin/servershell/templates/servershell/modals/help_search.html rename to packages/serveradmin/serveradmin/servershell/templates/servershell/modals/help_search.html diff --git a/serveradmin/servershell/templates/servershell/modals/sum.html b/packages/serveradmin/serveradmin/servershell/templates/servershell/modals/sum.html similarity index 100% rename from serveradmin/servershell/templates/servershell/modals/sum.html rename to packages/serveradmin/serveradmin/servershell/templates/servershell/modals/sum.html diff --git a/serveradmin/servershell/templates/servershell/opensearch.xml b/packages/serveradmin/serveradmin/servershell/templates/servershell/opensearch.xml similarity index 100% rename from serveradmin/servershell/templates/servershell/opensearch.xml rename to packages/serveradmin/serveradmin/servershell/templates/servershell/opensearch.xml diff --git a/serveradmin/servershell/templates/servershell/values.html b/packages/serveradmin/serveradmin/servershell/templates/servershell/values.html similarity index 100% rename from serveradmin/servershell/templates/servershell/values.html rename to packages/serveradmin/serveradmin/servershell/templates/servershell/values.html diff --git a/serveradmin/servershell/templatetags/__init__.py b/packages/serveradmin/serveradmin/servershell/templatetags/__init__.py similarity index 100% rename from serveradmin/servershell/templatetags/__init__.py rename to packages/serveradmin/serveradmin/servershell/templatetags/__init__.py diff --git a/serveradmin/servershell/templatetags/serversearch.py b/packages/serveradmin/serveradmin/servershell/templatetags/serversearch.py similarity index 100% rename from serveradmin/servershell/templatetags/serversearch.py rename to packages/serveradmin/serveradmin/servershell/templatetags/serversearch.py diff --git a/serveradmin/servershell/templatetags/servershell.py b/packages/serveradmin/serveradmin/servershell/templatetags/servershell.py similarity index 100% rename from serveradmin/servershell/templatetags/servershell.py rename to packages/serveradmin/serveradmin/servershell/templatetags/servershell.py diff --git a/serveradmin/servershell/urls.py b/packages/serveradmin/serveradmin/servershell/urls.py similarity index 100% rename from serveradmin/servershell/urls.py rename to packages/serveradmin/serveradmin/servershell/urls.py diff --git a/serveradmin/servershell/utils.py b/packages/serveradmin/serveradmin/servershell/utils.py similarity index 100% rename from serveradmin/servershell/utils.py rename to packages/serveradmin/serveradmin/servershell/utils.py diff --git a/serveradmin/servershell/views.py b/packages/serveradmin/serveradmin/servershell/views.py similarity index 99% rename from serveradmin/servershell/views.py rename to packages/serveradmin/serveradmin/servershell/views.py index 7362a66df..b86e3e0ba 100644 --- a/serveradmin/servershell/views.py +++ b/packages/serveradmin/serveradmin/servershell/views.py @@ -4,7 +4,6 @@ """ import json -from distutils.util import strtobool from ipaddress import IPv6Address, IPv4Address, ip_interface from itertools import islice, chain @@ -31,6 +30,7 @@ from django.views.decorators.http import require_http_methods from django.views.defaults import bad_request +from adminapi.dataset import strtobool from adminapi.datatype import DatatypeError from adminapi.filters import Any, ContainedOnlyBy, filter_classes from adminapi.parse import parse_query diff --git a/serveradmin/settings.py b/packages/serveradmin/serveradmin/settings.py similarity index 96% rename from serveradmin/settings.py rename to packages/serveradmin/serveradmin/settings.py index 65aedf48c..973a215b9 100644 --- a/serveradmin/settings.py +++ b/packages/serveradmin/serveradmin/settings.py @@ -10,8 +10,12 @@ ROOT_DIR = os.path.abspath(os.path.dirname(__file__)) +# Workspace root, where the .env file lives. The serveradmin package sits at +# packages/serveradmin/serveradmin/, i.e. three levels below the workspace root. +WORKSPACE_ROOT = os.path.abspath(os.path.join(ROOT_DIR, '..', '..', '..')) + # Take environment variables from .env file -environ.Env.read_env(os.path.join(ROOT_DIR, '../.env')) +environ.Env.read_env(os.path.join(WORKSPACE_ROOT, '.env')) SECRET_KEY = env('SECRET_KEY', default=None) @@ -92,10 +96,6 @@ # to load the internationalization machinery. USE_I18N = False -# If you set this to False, Django will not format dates, numbers and -# calendars according to the current locale. -USE_L10N = False - # If you set this to False, Django will not use timezone-aware datetimes. USE_TZ = True diff --git a/serveradmin/test_dataset.py b/packages/serveradmin/serveradmin/test_dataset.py similarity index 100% rename from serveradmin/test_dataset.py rename to packages/serveradmin/serveradmin/test_dataset.py diff --git a/serveradmin/urls.py b/packages/serveradmin/serveradmin/urls.py similarity index 100% rename from serveradmin/urls.py rename to packages/serveradmin/serveradmin/urls.py diff --git a/serveradmin/wsgi.py b/packages/serveradmin/serveradmin/wsgi.py similarity index 100% rename from serveradmin/wsgi.py rename to packages/serveradmin/serveradmin/wsgi.py diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..7b3f07b73 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,19 @@ +[tool.uv.workspace] +members = ["packages/*"] + +[tool.uv.sources] +adminapi = { workspace = true } + +[dependency-groups] +dev = [ + "django-extensions<5.0.0", + "Werkzeug<4.0.0", + "requests<3.0.0", + "faker<14.0.0", + "tblib", + "flake8", +] +docs = [ + "sphinx~=7.0", + "sphinx-rtd-theme~=2.0", +] diff --git a/setup.py b/setup.py deleted file mode 100755 index ae2dab8ce..000000000 --- a/setup.py +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env python3 - -"""Serveradmin and adminapi setup - -Copyright (c) 2026 InnoGames GmbH -""" - -from setuptools import setup, find_packages -from adminapi import VERSION as SERVERADMIN_VERSION - - -if __name__ == '__main__': - setup( - version='.'.join(map(str, SERVERADMIN_VERSION)), - name='adminapi', - description='Serveradmin module', - url='https://github.com/innogames/serveradmin', - packages=find_packages(exclude=["serveradmin_*"]), - package_data={ - 'serveradmin.api': ['templates/api/*'], - 'serveradmin.apps': ['templates/apps/*'], - 'serveradmin.common': [ - 'static/*', - 'static/css/*', - 'static/icons/*', - 'static/js/*', - 'static/js/plugins/*', - 'templates/*', - 'templates/igrestlogin/*', - ], - 'serveradmin.graphite': [ - 'static/*', - 'static/css/*', - 'static/js/*', - 'templates/graphite/*', - ], - 'serveradmin.resources': [ - 'static/*', - 'static/css/*', - 'static/js/*', - 'templates/resources/*', - ], - 'serveradmin.serverdb': [ - 'static/*', - 'static/css/*', - 'templates/serverdb/*', - ], - 'serveradmin.servershell': [ - 'static/*', - 'static/css/*', - 'static/js/*', - 'static/webfonts/*', - 'static/js/servershell/*', - 'static/js/servershell/autocomplete/*', - 'templates/servershell/*', - 'templates/servershell/modals/*', - ], - }, - entry_points={ - 'console_scripts': [ - 'serveradmin=serveradmin.__main__:main', - 'adminapi=adminapi.__main__:main', - ], - }, - install_requires=[ - 'paramiko>=2.7,<4', - 'netaddr>=0.8.0,<1.4.0', - ], - python_requires=">=3.9,<3.14", - author='InnoGames System Administration', - author_email='it@innogames.com', - ) diff --git a/uv.lock b/uv.lock new file mode 100644 index 000000000..8a7a9c5cb --- /dev/null +++ b/uv.lock @@ -0,0 +1,1095 @@ +version = 1 +revision = 3 +requires-python = ">=3.11, <3.14" + +[manifest] +members = [ + "adminapi", + "serveradmin", +] + +[manifest.dependency-groups] +dev = [ + { name = "django-extensions", specifier = "<5.0.0" }, + { name = "faker", specifier = "<14.0.0" }, + { name = "flake8" }, + { name = "requests", specifier = "<3.0.0" }, + { name = "tblib" }, + { name = "werkzeug", specifier = "<4.0.0" }, +] +docs = [ + { name = "sphinx", specifier = "~=7.0" }, + { name = "sphinx-rtd-theme", specifier = "~=2.0" }, +] + +[[package]] +name = "adminapi" +source = { editable = "packages/adminapi" } +dependencies = [ + { name = "netaddr" }, + { name = "paramiko" }, +] + +[package.metadata] +requires-dist = [ + { name = "netaddr", specifier = ">=0.8.0,<1.4.0" }, + { name = "paramiko", specifier = ">=2.7,<4" }, +] + +[[package]] +name = "alabaster" +version = "0.7.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/3e/13dd8e5ed9094e734ac430b5d0eb4f2bb001708a8b7856cbf8e084e001ba/alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65", size = 23776, upload-time = "2024-01-10T00:56:10.189Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/34/d4e1c02d3bee589efb5dfa17f88ea08bdb3e3eac12bc475462aec52ed223/alabaster-0.7.16-py3-none-any.whl", hash = "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92", size = 13511, upload-time = "2024-01-10T00:56:08.388Z" }, +] + +[[package]] +name = "asgiref" +version = "3.11.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/63/40/f03da1264ae8f7cfdbf9146542e5e7e8100a4c66ab48e791df9a03d3f6c0/asgiref-3.11.1.tar.gz", hash = "sha256:5f184dc43b7e763efe848065441eac62229c9f7b0475f41f80e207a114eda4ce", size = 38550, upload-time = "2026-02-03T13:30:14.33Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/0a/a72d10ed65068e115044937873362e6e32fab1b7dce0046aeb224682c989/asgiref-3.11.1-py3-none-any.whl", hash = "sha256:e8667a091e69529631969fd45dc268fa79b99c92c5fcdda727757e52146ec133", size = 24345, upload-time = "2026-02-03T13:30:13.039Z" }, +] + +[[package]] +name = "babel" +version = "2.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/b2/51899539b6ceeeb420d40ed3cd4b7a40519404f9baf3d4ac99dc413a834b/babel-2.18.0.tar.gz", hash = "sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d", size = 9959554, upload-time = "2026-02-01T12:30:56.078Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl", hash = "sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35", size = 10196845, upload-time = "2026-02-01T12:30:53.445Z" }, +] + +[[package]] +name = "bcrypt" +version = "5.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/36/3329e2518d70ad8e2e5817d5a4cac6bba05a47767ec416c7d020a965f408/bcrypt-5.0.0.tar.gz", hash = "sha256:f748f7c2d6fd375cc93d3fba7ef4a9e3a092421b8dbf34d8d4dc06be9492dfdd", size = 25386, upload-time = "2025-09-25T19:50:47.829Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/85/3e65e01985fddf25b64ca67275bb5bdb4040bd1a53b66d355c6c37c8a680/bcrypt-5.0.0-cp313-cp313t-macosx_10_12_universal2.whl", hash = "sha256:f3c08197f3039bec79cee59a606d62b96b16669cff3949f21e74796b6e3cd2be", size = 481806, upload-time = "2025-09-25T19:49:05.102Z" }, + { url = "https://files.pythonhosted.org/packages/44/dc/01eb79f12b177017a726cbf78330eb0eb442fae0e7b3dfd84ea2849552f3/bcrypt-5.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:200af71bc25f22006f4069060c88ed36f8aa4ff7f53e67ff04d2ab3f1e79a5b2", size = 268626, upload-time = "2025-09-25T19:49:06.723Z" }, + { url = "https://files.pythonhosted.org/packages/8c/cf/e82388ad5959c40d6afd94fb4743cc077129d45b952d46bdc3180310e2df/bcrypt-5.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:baade0a5657654c2984468efb7d6c110db87ea63ef5a4b54732e7e337253e44f", size = 271853, upload-time = "2025-09-25T19:49:08.028Z" }, + { url = "https://files.pythonhosted.org/packages/ec/86/7134b9dae7cf0efa85671651341f6afa695857fae172615e960fb6a466fa/bcrypt-5.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:c58b56cdfb03202b3bcc9fd8daee8e8e9b6d7e3163aa97c631dfcfcc24d36c86", size = 269793, upload-time = "2025-09-25T19:49:09.727Z" }, + { url = "https://files.pythonhosted.org/packages/cc/82/6296688ac1b9e503d034e7d0614d56e80c5d1a08402ff856a4549cb59207/bcrypt-5.0.0-cp313-cp313t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4bfd2a34de661f34d0bda43c3e4e79df586e4716ef401fe31ea39d69d581ef23", size = 289930, upload-time = "2025-09-25T19:49:11.204Z" }, + { url = "https://files.pythonhosted.org/packages/d1/18/884a44aa47f2a3b88dd09bc05a1e40b57878ecd111d17e5bba6f09f8bb77/bcrypt-5.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ed2e1365e31fc73f1825fa830f1c8f8917ca1b3ca6185773b349c20fd606cec2", size = 272194, upload-time = "2025-09-25T19:49:12.524Z" }, + { url = "https://files.pythonhosted.org/packages/0e/8f/371a3ab33c6982070b674f1788e05b656cfbf5685894acbfef0c65483a59/bcrypt-5.0.0-cp313-cp313t-manylinux_2_34_aarch64.whl", hash = "sha256:83e787d7a84dbbfba6f250dd7a5efd689e935f03dd83b0f919d39349e1f23f83", size = 269381, upload-time = "2025-09-25T19:49:14.308Z" }, + { url = "https://files.pythonhosted.org/packages/b1/34/7e4e6abb7a8778db6422e88b1f06eb07c47682313997ee8a8f9352e5a6f1/bcrypt-5.0.0-cp313-cp313t-manylinux_2_34_x86_64.whl", hash = "sha256:137c5156524328a24b9fac1cb5db0ba618bc97d11970b39184c1d87dc4bf1746", size = 271750, upload-time = "2025-09-25T19:49:15.584Z" }, + { url = "https://files.pythonhosted.org/packages/c0/1b/54f416be2499bd72123c70d98d36c6cd61a4e33d9b89562c22481c81bb30/bcrypt-5.0.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:38cac74101777a6a7d3b3e3cfefa57089b5ada650dce2baf0cbdd9d65db22a9e", size = 303757, upload-time = "2025-09-25T19:49:17.244Z" }, + { url = "https://files.pythonhosted.org/packages/13/62/062c24c7bcf9d2826a1a843d0d605c65a755bc98002923d01fd61270705a/bcrypt-5.0.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:d8d65b564ec849643d9f7ea05c6d9f0cd7ca23bdd4ac0c2dbef1104ab504543d", size = 306740, upload-time = "2025-09-25T19:49:18.693Z" }, + { url = "https://files.pythonhosted.org/packages/d5/c8/1fdbfc8c0f20875b6b4020f3c7dc447b8de60aa0be5faaf009d24242aec9/bcrypt-5.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:741449132f64b3524e95cd30e5cd3343006ce146088f074f31ab26b94e6c75ba", size = 334197, upload-time = "2025-09-25T19:49:20.523Z" }, + { url = "https://files.pythonhosted.org/packages/a6/c1/8b84545382d75bef226fbc6588af0f7b7d095f7cd6a670b42a86243183cd/bcrypt-5.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:212139484ab3207b1f0c00633d3be92fef3c5f0af17cad155679d03ff2ee1e41", size = 352974, upload-time = "2025-09-25T19:49:22.254Z" }, + { url = "https://files.pythonhosted.org/packages/10/a6/ffb49d4254ed085e62e3e5dd05982b4393e32fe1e49bb1130186617c29cd/bcrypt-5.0.0-cp313-cp313t-win32.whl", hash = "sha256:9d52ed507c2488eddd6a95bccee4e808d3234fa78dd370e24bac65a21212b861", size = 148498, upload-time = "2025-09-25T19:49:24.134Z" }, + { url = "https://files.pythonhosted.org/packages/48/a9/259559edc85258b6d5fc5471a62a3299a6aa37a6611a169756bf4689323c/bcrypt-5.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f6984a24db30548fd39a44360532898c33528b74aedf81c26cf29c51ee47057e", size = 145853, upload-time = "2025-09-25T19:49:25.702Z" }, + { url = "https://files.pythonhosted.org/packages/2d/df/9714173403c7e8b245acf8e4be8876aac64a209d1b392af457c79e60492e/bcrypt-5.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:9fffdb387abe6aa775af36ef16f55e318dcda4194ddbf82007a6f21da29de8f5", size = 139626, upload-time = "2025-09-25T19:49:26.928Z" }, + { url = "https://files.pythonhosted.org/packages/84/29/6237f151fbfe295fe3e074ecc6d44228faa1e842a81f6d34a02937ee1736/bcrypt-5.0.0-cp38-abi3-macosx_10_12_universal2.whl", hash = "sha256:fc746432b951e92b58317af8e0ca746efe93e66555f1b40888865ef5bf56446b", size = 494553, upload-time = "2025-09-25T19:49:49.006Z" }, + { url = "https://files.pythonhosted.org/packages/45/b6/4c1205dde5e464ea3bd88e8742e19f899c16fa8916fb8510a851fae985b5/bcrypt-5.0.0-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c2388ca94ffee269b6038d48747f4ce8df0ffbea43f31abfa18ac72f0218effb", size = 275009, upload-time = "2025-09-25T19:49:50.581Z" }, + { url = "https://files.pythonhosted.org/packages/3b/71/427945e6ead72ccffe77894b2655b695ccf14ae1866cd977e185d606dd2f/bcrypt-5.0.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:560ddb6ec730386e7b3b26b8b4c88197aaed924430e7b74666a586ac997249ef", size = 278029, upload-time = "2025-09-25T19:49:52.533Z" }, + { url = "https://files.pythonhosted.org/packages/17/72/c344825e3b83c5389a369c8a8e58ffe1480b8a699f46c127c34580c4666b/bcrypt-5.0.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d79e5c65dcc9af213594d6f7f1fa2c98ad3fc10431e7aa53c176b441943efbdd", size = 275907, upload-time = "2025-09-25T19:49:54.709Z" }, + { url = "https://files.pythonhosted.org/packages/0b/7e/d4e47d2df1641a36d1212e5c0514f5291e1a956a7749f1e595c07a972038/bcrypt-5.0.0-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2b732e7d388fa22d48920baa267ba5d97cca38070b69c0e2d37087b381c681fd", size = 296500, upload-time = "2025-09-25T19:49:56.013Z" }, + { url = "https://files.pythonhosted.org/packages/0f/c3/0ae57a68be2039287ec28bc463b82e4b8dc23f9d12c0be331f4782e19108/bcrypt-5.0.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:0c8e093ea2532601a6f686edbc2c6b2ec24131ff5c52f7610dd64fa4553b5464", size = 278412, upload-time = "2025-09-25T19:49:57.356Z" }, + { url = "https://files.pythonhosted.org/packages/45/2b/77424511adb11e6a99e3a00dcc7745034bee89036ad7d7e255a7e47be7d8/bcrypt-5.0.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:5b1589f4839a0899c146e8892efe320c0fa096568abd9b95593efac50a87cb75", size = 275486, upload-time = "2025-09-25T19:49:59.116Z" }, + { url = "https://files.pythonhosted.org/packages/43/0a/405c753f6158e0f3f14b00b462d8bca31296f7ecfc8fc8bc7919c0c7d73a/bcrypt-5.0.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:89042e61b5e808b67daf24a434d89bab164d4de1746b37a8d173b6b14f3db9ff", size = 277940, upload-time = "2025-09-25T19:50:00.869Z" }, + { url = "https://files.pythonhosted.org/packages/62/83/b3efc285d4aadc1fa83db385ec64dcfa1707e890eb42f03b127d66ac1b7b/bcrypt-5.0.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:e3cf5b2560c7b5a142286f69bde914494b6d8f901aaa71e453078388a50881c4", size = 310776, upload-time = "2025-09-25T19:50:02.393Z" }, + { url = "https://files.pythonhosted.org/packages/95/7d/47ee337dacecde6d234890fe929936cb03ebc4c3a7460854bbd9c97780b8/bcrypt-5.0.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f632fd56fc4e61564f78b46a2269153122db34988e78b6be8b32d28507b7eaeb", size = 312922, upload-time = "2025-09-25T19:50:04.232Z" }, + { url = "https://files.pythonhosted.org/packages/d6/3a/43d494dfb728f55f4e1cf8fd435d50c16a2d75493225b54c8d06122523c6/bcrypt-5.0.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:801cad5ccb6b87d1b430f183269b94c24f248dddbbc5c1f78b6ed231743e001c", size = 341367, upload-time = "2025-09-25T19:50:05.559Z" }, + { url = "https://files.pythonhosted.org/packages/55/ab/a0727a4547e383e2e22a630e0f908113db37904f58719dc48d4622139b5c/bcrypt-5.0.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3cf67a804fc66fc217e6914a5635000259fbbbb12e78a99488e4d5ba445a71eb", size = 359187, upload-time = "2025-09-25T19:50:06.916Z" }, + { url = "https://files.pythonhosted.org/packages/1b/bb/461f352fdca663524b4643d8b09e8435b4990f17fbf4fea6bc2a90aa0cc7/bcrypt-5.0.0-cp38-abi3-win32.whl", hash = "sha256:3abeb543874b2c0524ff40c57a4e14e5d3a66ff33fb423529c88f180fd756538", size = 153752, upload-time = "2025-09-25T19:50:08.515Z" }, + { url = "https://files.pythonhosted.org/packages/41/aa/4190e60921927b7056820291f56fc57d00d04757c8b316b2d3c0d1d6da2c/bcrypt-5.0.0-cp38-abi3-win_amd64.whl", hash = "sha256:35a77ec55b541e5e583eb3436ffbbf53b0ffa1fa16ca6782279daf95d146dcd9", size = 150881, upload-time = "2025-09-25T19:50:09.742Z" }, + { url = "https://files.pythonhosted.org/packages/54/12/cd77221719d0b39ac0b55dbd39358db1cd1246e0282e104366ebbfb8266a/bcrypt-5.0.0-cp38-abi3-win_arm64.whl", hash = "sha256:cde08734f12c6a4e28dc6755cd11d3bdfea608d93d958fffbe95a7026ebe4980", size = 144931, upload-time = "2025-09-25T19:50:11.016Z" }, + { url = "https://files.pythonhosted.org/packages/5d/ba/2af136406e1c3839aea9ecadc2f6be2bcd1eff255bd451dd39bcf302c47a/bcrypt-5.0.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0c418ca99fd47e9c59a301744d63328f17798b5947b0f791e9af3c1c499c2d0a", size = 495313, upload-time = "2025-09-25T19:50:12.309Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ee/2f4985dbad090ace5ad1f7dd8ff94477fe089b5fab2040bd784a3d5f187b/bcrypt-5.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ddb4e1500f6efdd402218ffe34d040a1196c072e07929b9820f363a1fd1f4191", size = 275290, upload-time = "2025-09-25T19:50:13.673Z" }, + { url = "https://files.pythonhosted.org/packages/e4/6e/b77ade812672d15cf50842e167eead80ac3514f3beacac8902915417f8b7/bcrypt-5.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7aeef54b60ceddb6f30ee3db090351ecf0d40ec6e2abf41430997407a46d2254", size = 278253, upload-time = "2025-09-25T19:50:15.089Z" }, + { url = "https://files.pythonhosted.org/packages/36/c4/ed00ed32f1040f7990dac7115f82273e3c03da1e1a1587a778d8cea496d8/bcrypt-5.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f0ce778135f60799d89c9693b9b398819d15f1921ba15fe719acb3178215a7db", size = 276084, upload-time = "2025-09-25T19:50:16.699Z" }, + { url = "https://files.pythonhosted.org/packages/e7/c4/fa6e16145e145e87f1fa351bbd54b429354fd72145cd3d4e0c5157cf4c70/bcrypt-5.0.0-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a71f70ee269671460b37a449f5ff26982a6f2ba493b3eabdd687b4bf35f875ac", size = 297185, upload-time = "2025-09-25T19:50:18.525Z" }, + { url = "https://files.pythonhosted.org/packages/24/b4/11f8a31d8b67cca3371e046db49baa7c0594d71eb40ac8121e2fc0888db0/bcrypt-5.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f8429e1c410b4073944f03bd778a9e066e7fad723564a52ff91841d278dfc822", size = 278656, upload-time = "2025-09-25T19:50:19.809Z" }, + { url = "https://files.pythonhosted.org/packages/ac/31/79f11865f8078e192847d2cb526e3fa27c200933c982c5b2869720fa5fce/bcrypt-5.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:edfcdcedd0d0f05850c52ba3127b1fce70b9f89e0fe5ff16517df7e81fa3cbb8", size = 275662, upload-time = "2025-09-25T19:50:21.567Z" }, + { url = "https://files.pythonhosted.org/packages/d4/8d/5e43d9584b3b3591a6f9b68f755a4da879a59712981ef5ad2a0ac1379f7a/bcrypt-5.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:611f0a17aa4a25a69362dcc299fda5c8a3d4f160e2abb3831041feb77393a14a", size = 278240, upload-time = "2025-09-25T19:50:23.305Z" }, + { url = "https://files.pythonhosted.org/packages/89/48/44590e3fc158620f680a978aafe8f87a4c4320da81ed11552f0323aa9a57/bcrypt-5.0.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:db99dca3b1fdc3db87d7c57eac0c82281242d1eabf19dcb8a6b10eb29a2e72d1", size = 311152, upload-time = "2025-09-25T19:50:24.597Z" }, + { url = "https://files.pythonhosted.org/packages/5f/85/e4fbfc46f14f47b0d20493669a625da5827d07e8a88ee460af6cd9768b44/bcrypt-5.0.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:5feebf85a9cefda32966d8171f5db7e3ba964b77fdfe31919622256f80f9cf42", size = 313284, upload-time = "2025-09-25T19:50:26.268Z" }, + { url = "https://files.pythonhosted.org/packages/25/ae/479f81d3f4594456a01ea2f05b132a519eff9ab5768a70430fa1132384b1/bcrypt-5.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3ca8a166b1140436e058298a34d88032ab62f15aae1c598580333dc21d27ef10", size = 341643, upload-time = "2025-09-25T19:50:28.02Z" }, + { url = "https://files.pythonhosted.org/packages/df/d2/36a086dee1473b14276cd6ea7f61aef3b2648710b5d7f1c9e032c29b859f/bcrypt-5.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:61afc381250c3182d9078551e3ac3a41da14154fbff647ddf52a769f588c4172", size = 359698, upload-time = "2025-09-25T19:50:31.347Z" }, + { url = "https://files.pythonhosted.org/packages/c0/f6/688d2cd64bfd0b14d805ddb8a565e11ca1fb0fd6817175d58b10052b6d88/bcrypt-5.0.0-cp39-abi3-win32.whl", hash = "sha256:64d7ce196203e468c457c37ec22390f1a61c85c6f0b8160fd752940ccfb3a683", size = 153725, upload-time = "2025-09-25T19:50:34.384Z" }, + { url = "https://files.pythonhosted.org/packages/9f/b9/9d9a641194a730bda138b3dfe53f584d61c58cd5230e37566e83ec2ffa0d/bcrypt-5.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:64ee8434b0da054d830fa8e89e1c8bf30061d539044a39524ff7dec90481e5c2", size = 150912, upload-time = "2025-09-25T19:50:35.69Z" }, + { url = "https://files.pythonhosted.org/packages/27/44/d2ef5e87509158ad2187f4dd0852df80695bb1ee0cfe0a684727b01a69e0/bcrypt-5.0.0-cp39-abi3-win_arm64.whl", hash = "sha256:f2347d3534e76bf50bca5500989d6c1d05ed64b440408057a37673282c654927", size = 144953, upload-time = "2025-09-25T19:50:37.32Z" }, + { url = "https://files.pythonhosted.org/packages/8a/75/4aa9f5a4d40d762892066ba1046000b329c7cd58e888a6db878019b282dc/bcrypt-5.0.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7edda91d5ab52b15636d9c30da87d2cc84f426c72b9dba7a9b4fe142ba11f534", size = 271180, upload-time = "2025-09-25T19:50:38.575Z" }, + { url = "https://files.pythonhosted.org/packages/54/79/875f9558179573d40a9cc743038ac2bf67dfb79cecb1e8b5d70e88c94c3d/bcrypt-5.0.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:046ad6db88edb3c5ece4369af997938fb1c19d6a699b9c1b27b0db432faae4c4", size = 273791, upload-time = "2025-09-25T19:50:39.913Z" }, + { url = "https://files.pythonhosted.org/packages/bc/fe/975adb8c216174bf70fc17535f75e85ac06ed5252ea077be10d9cff5ce24/bcrypt-5.0.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:dcd58e2b3a908b5ecc9b9df2f0085592506ac2d5110786018ee5e160f28e0911", size = 270746, upload-time = "2025-09-25T19:50:43.306Z" }, + { url = "https://files.pythonhosted.org/packages/e4/f8/972c96f5a2b6c4b3deca57009d93e946bbdbe2241dca9806d502f29dd3ee/bcrypt-5.0.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:6b8f520b61e8781efee73cba14e3e8c9556ccfb375623f4f97429544734545b4", size = 273375, upload-time = "2025-09-25T19:50:45.43Z" }, +] + +[[package]] +name = "certifi" +version = "2026.6.17" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/c7/424b75da314c1045981bd9777432fad05a9e0c69daa4ed7e308bbaffe405/certifi-2026.6.17.tar.gz", hash = "sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432", size = 134594, upload-time = "2026-06-17T10:31:07.894Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl", hash = "sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db", size = 133289, upload-time = "2026-06-17T10:31:06.348Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, + { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, + { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, + { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, + { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, + { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, + { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/015b25184413d7ab0a410775fdb4a50fca20f5589b5dab1dbbfa3baad8ce/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", size = 172076, upload-time = "2025-09-08T23:22:40.95Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8f/dc5531155e7070361eb1b7e4c1a9d896d0cb21c49f807a6c03fd63fc877e/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", size = 182820, upload-time = "2025-09-08T23:22:42.463Z" }, + { url = "https://files.pythonhosted.org/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload-time = "2025-09-08T23:22:43.623Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", size = 144271, upload-time = "2026-04-02T09:28:39.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/d7/b5b7020a0565c2e9fa8c09f4b5fa6232feb326b8c20081ccded47ea368fd/charset_normalizer-3.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7", size = 309705, upload-time = "2026-04-02T09:26:02.191Z" }, + { url = "https://files.pythonhosted.org/packages/5a/53/58c29116c340e5456724ecd2fff4196d236b98f3da97b404bc5e51ac3493/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:202389074300232baeb53ae2569a60901f7efadd4245cf3a3bf0617d60b439d7", size = 206419, upload-time = "2026-04-02T09:26:03.583Z" }, + { url = "https://files.pythonhosted.org/packages/b2/02/e8146dc6591a37a00e5144c63f29fb7c97a734ea8a111190783c0e60ab63/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:30b8d1d8c52a48c2c5690e152c169b673487a2a58de1ec7393196753063fcd5e", size = 227901, upload-time = "2026-04-02T09:26:04.738Z" }, + { url = "https://files.pythonhosted.org/packages/fb/73/77486c4cd58f1267bf17db420e930c9afa1b3be3fe8c8b8ebbebc9624359/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:532bc9bf33a68613fd7d65e4b1c71a6a38d7d42604ecf239c77392e9b4e8998c", size = 222742, upload-time = "2026-04-02T09:26:06.36Z" }, + { url = "https://files.pythonhosted.org/packages/a1/fa/f74eb381a7d94ded44739e9d94de18dc5edc9c17fb8c11f0a6890696c0a9/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fe249cb4651fd12605b7288b24751d8bfd46d35f12a20b1ba33dea122e690df", size = 214061, upload-time = "2026-04-02T09:26:08.347Z" }, + { url = "https://files.pythonhosted.org/packages/dc/92/42bd3cefcf7687253fb86694b45f37b733c97f59af3724f356fa92b8c344/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe458fe8e4361215df40265", size = 199239, upload-time = "2026-04-02T09:26:09.823Z" }, + { url = "https://files.pythonhosted.org/packages/4c/3d/069e7184e2aa3b3cddc700e3dd267413dc259854adc3380421c805c6a17d/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:08e721811161356f97b4059a9ba7bafb23ea5ee2255402c42881c214e173c6b4", size = 210173, upload-time = "2026-04-02T09:26:10.953Z" }, + { url = "https://files.pythonhosted.org/packages/62/51/9d56feb5f2e7074c46f93e0ebdbe61f0848ee246e2f0d89f8e20b89ebb8f/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8294c8bf612cba65a2c9e", size = 209841, upload-time = "2026-04-02T09:26:12.142Z" }, + { url = "https://files.pythonhosted.org/packages/d2/59/893d8f99cc4c837dda1fe2f1139079703deb9f321aabcb032355de13b6c7/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36158b6f04000043dbf38", size = 200304, upload-time = "2026-04-02T09:26:13.711Z" }, + { url = "https://files.pythonhosted.org/packages/7d/1d/ee6f3be3464247578d1ed5c46de545ccc3d3ff933695395c402c21fa6b77/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2ce09f67f5a68048d477c", size = 229455, upload-time = "2026-04-02T09:26:14.941Z" }, + { url = "https://files.pythonhosted.org/packages/54/bb/8fb0a946296ea96a488928bdce8ef99023998c48e4713af533e9bb98ef07/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b432e2bddb686228282d10b", size = 210036, upload-time = "2026-04-02T09:26:16.478Z" }, + { url = "https://files.pythonhosted.org/packages/9a/bc/015b2387f913749f82afd4fcba07846d05b6d784dd16123cb66860e0237d/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b29b8b57b2a3cd7d22c", size = 224739, upload-time = "2026-04-02T09:26:17.751Z" }, + { url = "https://files.pythonhosted.org/packages/17/ab/63133691f56baae417493cba6b7c641571a2130eb7bceba6773367ab9ec5/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6ae94c0fc596221c7f58d", size = 216277, upload-time = "2026-04-02T09:26:18.981Z" }, + { url = "https://files.pythonhosted.org/packages/06/6d/3be70e827977f20db77c12a97e6a9f973631a45b8d186c084527e53e77a4/charset_normalizer-3.4.7-cp311-cp311-win32.whl", hash = "sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301b1ad", size = 147819, upload-time = "2026-04-02T09:26:20.295Z" }, + { url = "https://files.pythonhosted.org/packages/20/d9/5f67790f06b735d7c7637171bbfd89882ad67201891b7275e51116ed8207/charset_normalizer-3.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e83f855c00", size = 159281, upload-time = "2026-04-02T09:26:21.74Z" }, + { url = "https://files.pythonhosted.org/packages/ca/83/6413f36c5a34afead88ce6f66684d943d91f233d76dd083798f9602b75ae/charset_normalizer-3.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096084ceca1", size = 147843, upload-time = "2026-04-02T09:26:22.901Z" }, + { url = "https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46", size = 311328, upload-time = "2026-04-02T09:26:24.331Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e3/0fadc706008ac9d7b9b5be6dc767c05f9d3e5df51744ce4cc9605de7b9f4/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2", size = 208061, upload-time = "2026-04-02T09:26:25.568Z" }, + { url = "https://files.pythonhosted.org/packages/42/f0/3dd1045c47f4a4604df85ec18ad093912ae1344ac706993aff91d38773a2/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b", size = 229031, upload-time = "2026-04-02T09:26:26.865Z" }, + { url = "https://files.pythonhosted.org/packages/dc/67/675a46eb016118a2fbde5a277a5d15f4f69d5f3f5f338e5ee2f8948fcf43/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a", size = 225239, upload-time = "2026-04-02T09:26:28.044Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116", size = 216589, upload-time = "2026-04-02T09:26:29.239Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f1/6d2b0b261b6c4ceef0fcb0d17a01cc5bc53586c2d4796fa04b5c540bc13d/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb", size = 202733, upload-time = "2026-04-02T09:26:30.5Z" }, + { url = "https://files.pythonhosted.org/packages/6f/c0/7b1f943f7e87cc3db9626ba17807d042c38645f0a1d4415c7a14afb5591f/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1", size = 212652, upload-time = "2026-04-02T09:26:31.709Z" }, + { url = "https://files.pythonhosted.org/packages/38/dd/5a9ab159fe45c6e72079398f277b7d2b523e7f716acc489726115a910097/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15", size = 211229, upload-time = "2026-04-02T09:26:33.282Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ff/531a1cad5ca855d1c1a8b69cb71abfd6d85c0291580146fda7c82857caa1/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5", size = 203552, upload-time = "2026-04-02T09:26:34.845Z" }, + { url = "https://files.pythonhosted.org/packages/c1/4c/a5fb52d528a8ca41f7598cb619409ece30a169fbdf9cdce592e53b46c3a6/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d", size = 230806, upload-time = "2026-04-02T09:26:36.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/7a/071feed8124111a32b316b33ae4de83d36923039ef8cf48120266844285b/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7", size = 212316, upload-time = "2026-04-02T09:26:37.672Z" }, + { url = "https://files.pythonhosted.org/packages/fd/35/f7dba3994312d7ba508e041eaac39a36b120f32d4c8662b8814dab876431/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464", size = 227274, upload-time = "2026-04-02T09:26:38.93Z" }, + { url = "https://files.pythonhosted.org/packages/8a/2d/a572df5c9204ab7688ec1edc895a73ebded3b023bb07364710b05dd1c9be/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49", size = 218468, upload-time = "2026-04-02T09:26:40.17Z" }, + { url = "https://files.pythonhosted.org/packages/86/eb/890922a8b03a568ca2f336c36585a4713c55d4d67bf0f0c78924be6315ca/charset_normalizer-3.4.7-cp312-cp312-win32.whl", hash = "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c", size = 148460, upload-time = "2026-04-02T09:26:41.416Z" }, + { url = "https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6", size = 159330, upload-time = "2026-04-02T09:26:42.554Z" }, + { url = "https://files.pythonhosted.org/packages/9e/5d/481bcc2a7c88ea6b0878c299547843b2521ccbc40980cb406267088bc701/charset_normalizer-3.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d", size = 147828, upload-time = "2026-04-02T09:26:44.075Z" }, + { url = "https://files.pythonhosted.org/packages/c1/3b/66777e39d3ae1ddc77ee606be4ec6d8cbd4c801f65e5a1b6f2b11b8346dd/charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063", size = 309627, upload-time = "2026-04-02T09:26:45.198Z" }, + { url = "https://files.pythonhosted.org/packages/2e/4e/b7f84e617b4854ade48a1b7915c8ccfadeba444d2a18c291f696e37f0d3b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c", size = 207008, upload-time = "2026-04-02T09:26:46.824Z" }, + { url = "https://files.pythonhosted.org/packages/c4/bb/ec73c0257c9e11b268f018f068f5d00aa0ef8c8b09f7753ebd5f2880e248/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66", size = 228303, upload-time = "2026-04-02T09:26:48.397Z" }, + { url = "https://files.pythonhosted.org/packages/85/fb/32d1f5033484494619f701e719429c69b766bfc4dbc61aa9e9c8c166528b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18", size = 224282, upload-time = "2026-04-02T09:26:49.684Z" }, + { url = "https://files.pythonhosted.org/packages/fa/07/330e3a0dda4c404d6da83b327270906e9654a24f6c546dc886a0eb0ffb23/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd", size = 215595, upload-time = "2026-04-02T09:26:50.915Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7c/fc890655786e423f02556e0216d4b8c6bcb6bdfa890160dc66bf52dee468/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215", size = 201986, upload-time = "2026-04-02T09:26:52.197Z" }, + { url = "https://files.pythonhosted.org/packages/d8/97/bfb18b3db2aed3b90cf54dc292ad79fdd5ad65c4eae454099475cbeadd0d/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859", size = 211711, upload-time = "2026-04-02T09:26:53.49Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a5/a581c13798546a7fd557c82614a5c65a13df2157e9ad6373166d2a3e645d/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8", size = 210036, upload-time = "2026-04-02T09:26:54.975Z" }, + { url = "https://files.pythonhosted.org/packages/8c/bf/b3ab5bcb478e4193d517644b0fb2bf5497fbceeaa7a1bc0f4d5b50953861/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5", size = 202998, upload-time = "2026-04-02T09:26:56.303Z" }, + { url = "https://files.pythonhosted.org/packages/e7/4e/23efd79b65d314fa320ec6017b4b5834d5c12a58ba4610aa353af2e2f577/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832", size = 230056, upload-time = "2026-04-02T09:26:57.554Z" }, + { url = "https://files.pythonhosted.org/packages/b9/9f/1e1941bc3f0e01df116e68dc37a55c4d249df5e6fa77f008841aef68264f/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6", size = 211537, upload-time = "2026-04-02T09:26:58.843Z" }, + { url = "https://files.pythonhosted.org/packages/80/0f/088cbb3020d44428964a6c97fe1edfb1b9550396bf6d278330281e8b709c/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48", size = 226176, upload-time = "2026-04-02T09:27:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9f/130394f9bbe06f4f63e22641d32fc9b202b7e251c9aef4db044324dac493/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a", size = 217723, upload-time = "2026-04-02T09:27:02.021Z" }, + { url = "https://files.pythonhosted.org/packages/73/55/c469897448a06e49f8fa03f6caae97074fde823f432a98f979cc42b90e69/charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e", size = 148085, upload-time = "2026-04-02T09:27:03.192Z" }, + { url = "https://files.pythonhosted.org/packages/5d/78/1b74c5bbb3f99b77a1715c91b3e0b5bdb6fe302d95ace4f5b1bec37b0167/charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110", size = 158819, upload-time = "2026-04-02T09:27:04.454Z" }, + { url = "https://files.pythonhosted.org/packages/68/86/46bd42279d323deb8687c4a5a811fd548cb7d1de10cf6535d099877a9a9f/charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b", size = 147915, upload-time = "2026-04-02T09:27:05.971Z" }, + { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d", size = 61958, upload-time = "2026-04-02T09:28:37.794Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "cryptography" +version = "49.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz", hash = "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493", size = 854345, upload-time = "2026-06-12T20:02:30.512Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db", size = 4032100, upload-time = "2026-06-12T20:02:32.143Z" }, + { url = "https://files.pythonhosted.org/packages/09/41/3797cfaf69cae04a13ee78ebd83f0678d9c02b4779d21ce24445326f1a69/cryptography-49.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:36d1709f992593689b45bda411498d62c6e365f2ca00b84657d4dadd24de16db", size = 4692978, upload-time = "2026-06-12T20:01:21.305Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8b/43011f7ebe515a8aa20d61f290a326cd890c2e738e16e59eaff8d9c3a412/cryptography-49.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0e959b578856a3924bc0cbb710fc12c387b9412a951389f3ca61704a9e25f325", size = 4716422, upload-time = "2026-06-12T20:01:48.566Z" }, + { url = "https://files.pythonhosted.org/packages/4a/91/01ce7303a4579e6d3a6abef01bd322848e9ea7a219adcabc5048b9033571/cryptography-49.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:53ecee2e23f7169b6117e99fc8a944e5e50f79e69758a83b52a00cb98ab2b2d2", size = 4700503, upload-time = "2026-06-12T20:02:47.091Z" }, + { url = "https://files.pythonhosted.org/packages/62/99/a2c95cf8293f07491e9e27c20cc4dcd18176d944e674679adeb1d0173fd6/cryptography-49.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:2eda353d8a27bcbcaa4cbed18994a74ab4d19a2ca897db188ea269ab9b71419b", size = 5309779, upload-time = "2026-06-12T20:02:08.987Z" }, + { url = "https://files.pythonhosted.org/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2afe9051da7ae7bd5905da5a949280c7d2bb75682e188f650a9d0f2756b834c6", size = 4749683, upload-time = "2026-06-12T20:02:03.335Z" }, + { url = "https://files.pythonhosted.org/packages/a3/5b/c5246635d5fd3b64e0d45ae10e99fd32fe9676a79915ccfe5a61ba9af1a5/cryptography-49.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:0b82e28ee398a386f0807bba7884d30f25218855690f45115831bcce5d90822c", size = 4337874, upload-time = "2026-06-12T20:02:54.323Z" }, + { url = "https://files.pythonhosted.org/packages/6d/88/05563c7fe2e914e87d1a536d06fe83e66b4e1d95cb593e05aea375531da8/cryptography-49.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ccac2bfebc306b862133e3bb71f3f6ee8bb525240089b2d952e4144b3a6d5da7", size = 4700283, upload-time = "2026-06-12T20:01:34.822Z" }, + { url = "https://files.pythonhosted.org/packages/c4/b6/d7696e4e890d6ae1469935164c9e5215c557671cb78d6e3f458ccceaa632/cryptography-49.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:d0527ce944105f257f605a827d6ebead966c752038b6e8656abb9c5edee6fc68", size = 5265844, upload-time = "2026-06-12T20:01:24.09Z" }, + { url = "https://files.pythonhosted.org/packages/a9/3c/f3ad17eecc1a57b0ba236dc01f90e783c51f4a2f35f64777cc4f47a184b2/cryptography-49.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:cbc77da8c523d5abd028635ba850a6966fcee2c82e2bf65a41d1d8afe0f98be9", size = 4749290, upload-time = "2026-06-12T20:01:30.848Z" }, + { url = "https://files.pythonhosted.org/packages/4f/01/339573cf1023163a400b0b5d16f6d507de413b9f60be6fd1b77feeaf6737/cryptography-49.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b87e65d263b3e5d3bb92a57e2a6638e2f31110fa7aa890c7b2dbba42248d0a3f", size = 4834612, upload-time = "2026-06-12T20:01:29.246Z" }, + { url = "https://files.pythonhosted.org/packages/71/fd/577302e213a1be9468f92d1afef66fcf1ef83d516819d9992ca547f592bd/cryptography-49.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:66ec79c3904820572d7e987abdf304281f141d37ad9a489b8e97066e7b9b6459", size = 4980804, upload-time = "2026-06-12T20:01:42.853Z" }, + { url = "https://files.pythonhosted.org/packages/1f/09/f42b1d190c5ba75f72062a387f8030d1d75f6ab035788f1d9c4b01de6525/cryptography-49.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:e5dfc1e64de5677cec922ffa8da89c546d0415bf6efdf081842e5d44c84e1f0e", size = 3810026, upload-time = "2026-06-12T20:02:39.262Z" }, + { url = "https://files.pythonhosted.org/packages/19/2a/5bb823f5bedcf80718cea7fbc95ec5515cca3769633c4b01a32be7f30e7c/cryptography-49.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ec5e529fb80935c94fe7b729f9972b50e351a0e6b50aa294fd5cabb109fcc29a", size = 4025947, upload-time = "2026-06-12T20:01:25.745Z" }, + { url = "https://files.pythonhosted.org/packages/3d/df/40577043ca124e17012f408ddddaeb213b856336ac82ddb3bc915f39e29f/cryptography-49.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f78ff2c9ed8dc2d036b0f4d640e22522213d047c1b14e61205a7e55c80a494d4", size = 4692429, upload-time = "2026-06-12T20:01:53.628Z" }, + { url = "https://files.pythonhosted.org/packages/2c/99/2d13299eb3dd27b02dcfaafcc91d6b5cb3329f7cbd6d8f51921acd566c1a/cryptography-49.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:35b151772baff2c74cba7fa290ceaff4c3b11c0c881eb93eb5dbc05a7cfbba18", size = 4700968, upload-time = "2026-06-12T20:02:45.383Z" }, + { url = "https://files.pythonhosted.org/packages/a5/4d/9c0cd02f95e2602dd5e563da149ee0830abef3537be8b34dc56281ebe27a/cryptography-49.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0f21641cf4b30fca7aee061ced0ec7ad7b073518088b7c9969a297c0ae796c69", size = 4697758, upload-time = "2026-06-12T20:01:41.13Z" }, + { url = "https://files.pythonhosted.org/packages/24/01/186c825898477d77e2324d5360fefe622ff1d8d1963ec0554e2cada8ec77/cryptography-49.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9e82dcc8e56052715fb18b2429e3bca4823b1629136a2084fc45a9a5cecb9b64", size = 5298863, upload-time = "2026-06-12T20:02:24.579Z" }, + { url = "https://files.pythonhosted.org/packages/b8/7b/62cbbab75d0659865bf0273790031544a0b16c8072d258f9428dcd8190dc/cryptography-49.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6f2debedf9ca60cf1d5bd466475638af5130f89965605cd818484d19987d3a21", size = 4735983, upload-time = "2026-06-12T20:01:50.14Z" }, + { url = "https://files.pythonhosted.org/packages/6c/72/3e798c064bc39e471008075d0f9bc9daf77a80879c092e4a8e170c585ed4/cryptography-49.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:8c25ceb16df5b9435f3f6a9829204985b0e0cbee3b48aacd432c7d2c850b44d9", size = 4334173, upload-time = "2026-06-12T20:01:44.743Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ee/6fca21d1ac73e06f8bef71940abfd4d2f6472b4bca284d770f32bd4086f6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:28d8b15e6275f12c8a207dc309dfa957903c927d08d0cc937ee3f63f200693cc", size = 4697298, upload-time = "2026-06-12T20:02:20.918Z" }, + { url = "https://files.pythonhosted.org/packages/67/d0/a5fcd3515f0bae49a7b6d0413cc1bdccdcc1fc0047037a0d480642cdc5d6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6fc361c34fb6aac015ce19435876635e5c6d21db31998b0920f675f131e043b8", size = 5254338, upload-time = "2026-06-12T20:02:22.737Z" }, + { url = "https://files.pythonhosted.org/packages/a0/84/84fe36f19caf857d61cb7fc9c63035a47ffabd84ea12d1d393148efa3615/cryptography-49.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:2400ef9c9e2299a25614eb1dea3db54a69b1349efd043bfac9c67630d136df36", size = 4735650, upload-time = "2026-06-12T20:02:41.389Z" }, + { url = "https://files.pythonhosted.org/packages/6c/a0/db537264e234f7273a73ec020873d6d6b39dfd8a53db78b550ca8320440e/cryptography-49.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:67e1d20ad9ef3a563c59ef22e7a8a0b8210bd26604369ea4a30a7c66aefe504e", size = 4834820, upload-time = "2026-06-12T20:01:51.847Z" }, + { url = "https://files.pythonhosted.org/packages/93/77/8df9eb486495979bccecd1062e2eaf435250e84437040295b57d09048b0b/cryptography-49.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:42b0684e0e40cf26122427802486f6d93aea593612603a94fbf260c7eb1e9c1b", size = 4967968, upload-time = "2026-06-12T20:02:12.524Z" }, + { url = "https://files.pythonhosted.org/packages/c2/e6/f60198ea8d9dfa15fff9ed4ca02ce362f6eadd9ba757dcc50634c4257b63/cryptography-49.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:026ac7423e6fa66872d3bf889be5974507da3944f866f704fa200eadacd00001", size = 3785547, upload-time = "2026-06-12T20:02:26.847Z" }, + { url = "https://files.pythonhosted.org/packages/63/d3/4a83af35d65e3fad632c926fad684c193ea4398569ccb0bbbc7fe8f5dc9a/cryptography-49.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fc1e275c2f1d97b1a6450b8b0ea3ebfa6e087a611c2b26cb2404d48588abab7b", size = 3993685, upload-time = "2026-06-12T20:02:14.883Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a7/f9dac0ab7f80368c56993a7bf638ef9935f825c91902798481fac0898138/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83782480a4a9da4d0feb51950131ba32e12e70813848b3343f6e18c28a66838", size = 4676239, upload-time = "2026-06-12T20:02:28.793Z" }, + { url = "https://files.pythonhosted.org/packages/d7/70/2ba3769dd0ae167e2f33dfa9592d45db6ff9a61d62ca1a5b3d1bdd09068f/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b39efa323140595abd3ecca8529d321ae50f55f3aa3ba9cc81ea56a6011953d5", size = 4715584, upload-time = "2026-06-12T20:01:27.495Z" }, + { url = "https://files.pythonhosted.org/packages/94/64/2923570ac1c0bd3a737aa366ac3abbbbde273042308b8cde95e2364a6e6a/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b47db11c2c3525083296069b98ac5221907455e989ae0c2e3008bde851921615", size = 4675885, upload-time = "2026-06-12T20:01:55.49Z" }, + { url = "https://files.pythonhosted.org/packages/ab/f8/614dc7e051418cfe53d55173c1e24c6b0085e89996fe90508c2fdf769aef/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:084ef1af862eb07ec46d25f68689f2102a9fc0e05ce7b80f14f5fe51e4eef0f6", size = 4715449, upload-time = "2026-06-12T20:02:05.469Z" }, + { url = "https://files.pythonhosted.org/packages/aa/50/a9caea39ad19c431c1a3f8a31114df65b260cdfe67786b6c7e7c040c4c44/cryptography-49.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be9fcb48a55f023493482827d4f459bd263cc20efde64f204b97c123201850c6", size = 3783731, upload-time = "2026-06-12T20:02:43.319Z" }, +] + +[[package]] +name = "dateparser" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "regex" }, + { name = "tzlocal" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d3/f4/561c49bca97af561d34eed27e3e831135eb5cb88e754c1150be41820f5c6/dateparser-1.4.1.tar.gz", hash = "sha256:f265df13c0380e2e07543ba74b67c0681aaa1096981ffcd35227e1aa0cb81c7c", size = 314734, upload-time = "2026-06-15T08:45:47.659Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/7c/2e5dcf53909deddd0bf38cbe277ad9806be038276b1c6c436561b4d9b2e2/dateparser-1.4.1-py3-none-any.whl", hash = "sha256:f25d4e051a84be27a35bd297e3e1dc59ff78373701b89be352ba80372d22d0d0", size = 300503, upload-time = "2026-06-15T08:45:45.951Z" }, +] + +[[package]] +name = "django" +version = "5.2.15" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref" }, + { name = "sqlparse" }, + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2b/e3/31722f7284c9f43333daff9aee9184678e4487adcb5506af0db8cea09ce1/django-5.2.15.tar.gz", hash = "sha256:5154a9bf84ac01dde011e367f355c07dbb329532e06810dcf3ef2af269e236e7", size = 10873669, upload-time = "2026-06-03T13:03:35.892Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/b5/38140b1643c00d5c46ce69c78e6980fd285aee223100319631bedee4f5e7/django-5.2.15-py3-none-any.whl", hash = "sha256:0eb4a9bb1853a35b0286dbc6d916bd352c8c2687195a7f2d6f80cefd840e4970", size = 8311957, upload-time = "2026-06-03T13:03:31.329Z" }, +] + +[[package]] +name = "django-appconf" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/a2/e58bec8d7941b914af52a67c35b5709eceed2caa2848f28437f1666ed668/django_appconf-1.2.0.tar.gz", hash = "sha256:15a88d60dd942d6059f467412fe4581db632ef03018a3c183fb415d6fc9e5cec", size = 16127, upload-time = "2025-11-08T15:46:27.304Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/e6/4c34d94dfb74bbcbc489606e61f1924933de30d22c593dd1f429f35fbd7f/django_appconf-1.2.0-py3-none-any.whl", hash = "sha256:b81bce5ef0ceb9d84df48dfb623a32235d941c78cc5e45dbb6947f154ea277f4", size = 6500, upload-time = "2025-11-08T15:46:25.957Z" }, +] + +[[package]] +name = "django-compressor" +version = "4.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django" }, + { name = "django-appconf" }, + { name = "rcssmin" }, + { name = "rjsmin" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a2/e4/c6d87b1341d744ceafa85eeceb2adabb1c62b795b8207cbc580fb70df8f4/django_compressor-4.6.0.tar.gz", hash = "sha256:c7478feab98f3368780591f9ee28a433350f5277dd28811f7f710f5bc6dff3c0", size = 99735, upload-time = "2025-11-10T13:12:11.439Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/9d/9a0ba39f33574994e5b33aea55a68e8fad72b8dd923a82300e4e91774f59/django_compressor-4.6.0-py3-none-any.whl", hash = "sha256:6e7b21020a0d86272c5e37000c33accc4ebeb77394a3dd86d775a09aae7aade4", size = 96828, upload-time = "2025-11-10T13:12:10.001Z" }, +] + +[[package]] +name = "django-environ" +version = "0.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/3c/60983e6ec9b24a8d8588eecebfd21123cba980bce0a905807a27692f0860/django_environ-0.13.0.tar.gz", hash = "sha256:6c401e4c219442c2c4588c2116d5292b5484a6f69163ed09cd41f3943bfb645f", size = 63529, upload-time = "2026-02-18T01:08:08.791Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/00/3767393ece946084e1c6830a33ffb8e39d68642e27ad5ac7d4c8bd5de866/django_environ-0.13.0-py3-none-any.whl", hash = "sha256:37799d14cd78222c6fd8298e48bfe17965ff8e586091ad66a463e52e0e7b799e", size = 20682, upload-time = "2026-02-18T01:08:07.359Z" }, +] + +[[package]] +name = "django-extensions" +version = "4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/b3/ed0f54ed706ec0b54fd251cc0364a249c6cd6c6ec97f04dc34be5e929eac/django_extensions-4.1.tar.gz", hash = "sha256:7b70a4d28e9b840f44694e3f7feb54f55d495f8b3fa6c5c0e5e12bcb2aa3cdeb", size = 283078, upload-time = "2025-04-11T01:15:39.617Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/96/d967ca440d6a8e3861120f51985d8e5aec79b9a8bdda16041206adfe7adc/django_extensions-4.1-py3-none-any.whl", hash = "sha256:0699a7af28f2523bf8db309a80278519362cd4b6e1fd0a8cd4bf063e1e023336", size = 232980, upload-time = "2025-04-11T01:15:37.701Z" }, +] + +[[package]] +name = "django-netfields" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django" }, + { name = "netaddr" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/4b/a34f990c67826a097c770fb6868a84e1b85c4e07e66a49727110c732bb84/django_netfields-1.4.1.tar.gz", hash = "sha256:a9bcde955fabb92a26663108bbf81992a979287561c938ce3d9cd79c7fcad7f6", size = 36894, upload-time = "2026-03-05T16:38:49.147Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/a0/f077987b26230ad27ef96729784272d4d41ea7a9fcfd6f95b174a6fec895/django_netfields-1.4.1-py3-none-any.whl", hash = "sha256:6c8edcd724da84ce1a9cf1eca9078919ca808c9c1ed5d26edc8c9ed0559f7edf", size = 15326, upload-time = "2026-03-05T16:38:47.637Z" }, +] + +[[package]] +name = "docutils" +version = "0.20.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1f/53/a5da4f2c5739cf66290fac1431ee52aff6851c7c8ffd8264f13affd7bcdd/docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b", size = 2058365, upload-time = "2023-05-16T23:39:19.748Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/87/f238c0670b94533ac0353a4e2a1a771a0cc73277b88bff23d3ae35a256c1/docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6", size = 572666, upload-time = "2023-05-16T23:39:15.976Z" }, +] + +[[package]] +name = "faker" +version = "13.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/4c/e9d9b6d51f01a0f22b819a95e411a1790deda41fefc9f5e17909bb89c987/Faker-13.16.0.tar.gz", hash = "sha256:25c5be99bc5fd8676eea8c1490e0de87f6d9734651c7af2cefc99b322b2936f4", size = 1535813, upload-time = "2022-08-12T14:36:06.326Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/5a/b60432d449c56458d31a54acb5ae5b855e45eb7a12894db448700116da16/Faker-13.16.0-py3-none-any.whl", hash = "sha256:920f94d5aa865fd922bc29f2cf75c75b4d86b30eec23e7174d7513241b759b05", size = 1583065, upload-time = "2022-08-12T14:36:01.827Z" }, +] + +[[package]] +name = "flake8" +version = "7.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mccabe" }, + { name = "pycodestyle" }, + { name = "pyflakes" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/af/fbfe3c4b5a657d79e5c47a2827a362f9e1b763336a52f926126aa6dc7123/flake8-7.3.0.tar.gz", hash = "sha256:fe044858146b9fc69b551a4b490d69cf960fcb78ad1edcb84e7fbb1b4a8e3872", size = 48326, upload-time = "2025-06-20T19:31:35.838Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/56/13ab06b4f93ca7cac71078fbe37fcea175d3216f31f85c3168a6bbd0bb9a/flake8-7.3.0-py2.py3-none-any.whl", hash = "sha256:b9696257b9ce8beb888cdbe31cf885c90d31928fe202be0889a7cdafad32f01e", size = 57922, upload-time = "2025-06-20T19:31:34.425Z" }, +] + +[[package]] +name = "idna" +version = "3.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, +] + +[[package]] +name = "imagesize" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/e6/7bf14eeb8f8b7251141944835abd42eb20a658d89084b7e1f3e5fe394090/imagesize-2.0.0.tar.gz", hash = "sha256:8e8358c4a05c304f1fccf7ff96f036e7243a189e9e42e90851993c558cfe9ee3", size = 1773045, upload-time = "2026-03-03T14:18:29.941Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/53/fb7122b71361a0d121b669dcf3d31244ef75badbbb724af388948de543e2/imagesize-2.0.0-py2.py3-none-any.whl", hash = "sha256:5667c5bbb57ab3f1fa4bc366f4fbc971db3d5ed011fd2715fd8001f782718d96", size = 9441, upload-time = "2026-03-03T14:18:27.892Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" }, + { url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" }, + { url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload-time = "2025-09-27T18:36:22.249Z" }, + { url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload-time = "2025-09-27T18:36:23.535Z" }, + { url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload-time = "2025-09-27T18:36:24.823Z" }, + { url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload-time = "2025-09-27T18:36:25.95Z" }, + { url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload-time = "2025-09-27T18:36:27.109Z" }, + { url = "https://files.pythonhosted.org/packages/0f/62/d9c46a7f5c9adbeeeda52f5b8d802e1094e9717705a645efc71b0913a0a8/markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", size = 14572, upload-time = "2025-09-27T18:36:28.045Z" }, + { url = "https://files.pythonhosted.org/packages/83/8a/4414c03d3f891739326e1783338e48fb49781cc915b2e0ee052aa490d586/markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", size = 15077, upload-time = "2025-09-27T18:36:29.025Z" }, + { url = "https://files.pythonhosted.org/packages/35/73/893072b42e6862f319b5207adc9ae06070f095b358655f077f69a35601f0/markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", size = 13876, upload-time = "2025-09-27T18:36:29.954Z" }, + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, +] + +[[package]] +name = "mccabe" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", size = 9658, upload-time = "2022-01-24T01:14:51.113Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350, upload-time = "2022-01-24T01:14:49.62Z" }, +] + +[[package]] +name = "netaddr" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/90/188b2a69654f27b221fba92fda7217778208532c962509e959a9cee5229d/netaddr-1.3.0.tar.gz", hash = "sha256:5c3c3d9895b551b763779ba7db7a03487dc1f8e3b385af819af341ae9ef6e48a", size = 2260504, upload-time = "2024-05-28T21:30:37.743Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/cc/f4fe2c7ce68b92cbf5b2d379ca366e1edae38cccaad00f69f529b460c3ef/netaddr-1.3.0-py3-none-any.whl", hash = "sha256:c2c6a8ebe5554ce33b7d5b3a306b71bbb373e000bbbf2350dd5213cc56e3dbbe", size = 2262023, upload-time = "2024-05-28T21:30:34.191Z" }, +] + +[[package]] +name = "packaging" +version = "26.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" }, +] + +[[package]] +name = "paramiko" +version = "3.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "bcrypt" }, + { name = "cryptography" }, + { name = "pynacl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/15/ad6ce226e8138315f2451c2aeea985bf35ee910afb477bae7477dc3a8f3b/paramiko-3.5.1.tar.gz", hash = "sha256:b2c665bc45b2b215bd7d7f039901b14b067da00f3a11e6640995fd58f2664822", size = 1566110, upload-time = "2025-02-04T02:37:59.783Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/f8/c7bd0ef12954a81a1d3cea60a13946bd9a49a0036a5927770c461eade7ae/paramiko-3.5.1-py3-none-any.whl", hash = "sha256:43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61", size = 227298, upload-time = "2025-02-04T02:37:57.672Z" }, +] + +[[package]] +name = "pillow" +version = "10.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059, upload-time = "2024-07-01T09:48:43.583Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/62/c9449f9c3043c37f73e7487ec4ef0c03eb9c9afc91a92b977a67b3c0bbc5/pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", size = 3509265, upload-time = "2024-07-01T09:45:49.812Z" }, + { url = "https://files.pythonhosted.org/packages/f4/5f/491dafc7bbf5a3cc1845dc0430872e8096eb9e2b6f8161509d124594ec2d/pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", size = 3375655, upload-time = "2024-07-01T09:45:52.462Z" }, + { url = "https://files.pythonhosted.org/packages/73/d5/c4011a76f4207a3c151134cd22a1415741e42fa5ddecec7c0182887deb3d/pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", size = 4340304, upload-time = "2024-07-01T09:45:55.006Z" }, + { url = "https://files.pythonhosted.org/packages/ac/10/c67e20445a707f7a610699bba4fe050583b688d8cd2d202572b257f46600/pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", size = 4452804, upload-time = "2024-07-01T09:45:58.437Z" }, + { url = "https://files.pythonhosted.org/packages/a9/83/6523837906d1da2b269dee787e31df3b0acb12e3d08f024965a3e7f64665/pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", size = 4365126, upload-time = "2024-07-01T09:46:00.713Z" }, + { url = "https://files.pythonhosted.org/packages/ba/e5/8c68ff608a4203085158cff5cc2a3c534ec384536d9438c405ed6370d080/pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", size = 4533541, upload-time = "2024-07-01T09:46:03.235Z" }, + { url = "https://files.pythonhosted.org/packages/f4/7c/01b8dbdca5bc6785573f4cee96e2358b0918b7b2c7b60d8b6f3abf87a070/pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", size = 4471616, upload-time = "2024-07-01T09:46:05.356Z" }, + { url = "https://files.pythonhosted.org/packages/c8/57/2899b82394a35a0fbfd352e290945440e3b3785655a03365c0ca8279f351/pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", size = 4600802, upload-time = "2024-07-01T09:46:08.145Z" }, + { url = "https://files.pythonhosted.org/packages/4d/d7/a44f193d4c26e58ee5d2d9db3d4854b2cfb5b5e08d360a5e03fe987c0086/pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496", size = 2235213, upload-time = "2024-07-01T09:46:10.211Z" }, + { url = "https://files.pythonhosted.org/packages/c1/d0/5866318eec2b801cdb8c82abf190c8343d8a1cd8bf5a0c17444a6f268291/pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91", size = 2554498, upload-time = "2024-07-01T09:46:12.685Z" }, + { url = "https://files.pythonhosted.org/packages/d4/c8/310ac16ac2b97e902d9eb438688de0d961660a87703ad1561fd3dfbd2aa0/pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22", size = 2243219, upload-time = "2024-07-01T09:46:14.83Z" }, + { url = "https://files.pythonhosted.org/packages/05/cb/0353013dc30c02a8be34eb91d25e4e4cf594b59e5a55ea1128fde1e5f8ea/pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94", size = 3509350, upload-time = "2024-07-01T09:46:17.177Z" }, + { url = "https://files.pythonhosted.org/packages/e7/cf/5c558a0f247e0bf9cec92bff9b46ae6474dd736f6d906315e60e4075f737/pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", size = 3374980, upload-time = "2024-07-01T09:46:19.169Z" }, + { url = "https://files.pythonhosted.org/packages/84/48/6e394b86369a4eb68b8a1382c78dc092245af517385c086c5094e3b34428/pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", size = 4343799, upload-time = "2024-07-01T09:46:21.883Z" }, + { url = "https://files.pythonhosted.org/packages/3b/f3/a8c6c11fa84b59b9df0cd5694492da8c039a24cd159f0f6918690105c3be/pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca", size = 4459973, upload-time = "2024-07-01T09:46:24.321Z" }, + { url = "https://files.pythonhosted.org/packages/7d/1b/c14b4197b80150fb64453585247e6fb2e1d93761fa0fa9cf63b102fde822/pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", size = 4370054, upload-time = "2024-07-01T09:46:26.825Z" }, + { url = "https://files.pythonhosted.org/packages/55/77/40daddf677897a923d5d33329acd52a2144d54a9644f2a5422c028c6bf2d/pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", size = 4539484, upload-time = "2024-07-01T09:46:29.355Z" }, + { url = "https://files.pythonhosted.org/packages/40/54/90de3e4256b1207300fb2b1d7168dd912a2fb4b2401e439ba23c2b2cabde/pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b", size = 4477375, upload-time = "2024-07-01T09:46:31.756Z" }, + { url = "https://files.pythonhosted.org/packages/13/24/1bfba52f44193860918ff7c93d03d95e3f8748ca1de3ceaf11157a14cf16/pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9", size = 4608773, upload-time = "2024-07-01T09:46:33.73Z" }, + { url = "https://files.pythonhosted.org/packages/55/04/5e6de6e6120451ec0c24516c41dbaf80cce1b6451f96561235ef2429da2e/pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42", size = 2235690, upload-time = "2024-07-01T09:46:36.587Z" }, + { url = "https://files.pythonhosted.org/packages/74/0a/d4ce3c44bca8635bd29a2eab5aa181b654a734a29b263ca8efe013beea98/pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a", size = 2554951, upload-time = "2024-07-01T09:46:38.777Z" }, + { url = "https://files.pythonhosted.org/packages/b5/ca/184349ee40f2e92439be9b3502ae6cfc43ac4b50bc4fc6b3de7957563894/pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9", size = 2243427, upload-time = "2024-07-01T09:46:43.15Z" }, + { url = "https://files.pythonhosted.org/packages/c3/00/706cebe7c2c12a6318aabe5d354836f54adff7156fd9e1bd6c89f4ba0e98/pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3", size = 3525685, upload-time = "2024-07-01T09:46:45.194Z" }, + { url = "https://files.pythonhosted.org/packages/cf/76/f658cbfa49405e5ecbfb9ba42d07074ad9792031267e782d409fd8fe7c69/pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb", size = 3374883, upload-time = "2024-07-01T09:46:47.331Z" }, + { url = "https://files.pythonhosted.org/packages/46/2b/99c28c4379a85e65378211971c0b430d9c7234b1ec4d59b2668f6299e011/pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70", size = 4339837, upload-time = "2024-07-01T09:46:49.647Z" }, + { url = "https://files.pythonhosted.org/packages/f1/74/b1ec314f624c0c43711fdf0d8076f82d9d802afd58f1d62c2a86878e8615/pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be", size = 4455562, upload-time = "2024-07-01T09:46:51.811Z" }, + { url = "https://files.pythonhosted.org/packages/4a/2a/4b04157cb7b9c74372fa867096a1607e6fedad93a44deeff553ccd307868/pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0", size = 4366761, upload-time = "2024-07-01T09:46:53.961Z" }, + { url = "https://files.pythonhosted.org/packages/ac/7b/8f1d815c1a6a268fe90481232c98dd0e5fa8c75e341a75f060037bd5ceae/pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc", size = 4536767, upload-time = "2024-07-01T09:46:56.664Z" }, + { url = "https://files.pythonhosted.org/packages/e5/77/05fa64d1f45d12c22c314e7b97398ffb28ef2813a485465017b7978b3ce7/pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a", size = 4477989, upload-time = "2024-07-01T09:46:58.977Z" }, + { url = "https://files.pythonhosted.org/packages/12/63/b0397cfc2caae05c3fb2f4ed1b4fc4fc878f0243510a7a6034ca59726494/pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309", size = 4610255, upload-time = "2024-07-01T09:47:01.189Z" }, + { url = "https://files.pythonhosted.org/packages/7b/f9/cfaa5082ca9bc4a6de66ffe1c12c2d90bf09c309a5f52b27759a596900e7/pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060", size = 2235603, upload-time = "2024-07-01T09:47:03.918Z" }, + { url = "https://files.pythonhosted.org/packages/01/6a/30ff0eef6e0c0e71e55ded56a38d4859bf9d3634a94a88743897b5f96936/pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea", size = 2554972, upload-time = "2024-07-01T09:47:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/48/2c/2e0a52890f269435eee38b21c8218e102c621fe8d8df8b9dd06fabf879ba/pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", size = 2243375, upload-time = "2024-07-01T09:47:09.065Z" }, +] + +[[package]] +name = "psycopg2-binary" +version = "2.9.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/60/a3624f79acea344c16fbef3a94d28b89a8042ddfb8f3e4ca83f538671409/psycopg2_binary-2.9.12.tar.gz", hash = "sha256:5ac9444edc768c02a6b6a591f070b8aae28ff3a99be57560ac996001580f294c", size = 379686, upload-time = "2026-04-21T09:40:34.304Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/19/d4ce60954f3bb9d8e3bc5e5c4d1f2487de2d3851bf2391d54954c9df12a6/psycopg2_binary-2.9.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5c8ce6c61bd1b1f6b9c24ee32211599f6166af2c55abb19456090a21fd16554b", size = 3712338, upload-time = "2026-04-20T23:34:03.961Z" }, + { url = "https://files.pythonhosted.org/packages/53/71/c85409ee0d78890f0660eff262e815e7dd2bb741a17611d82e9e8cd9dc5e/psycopg2_binary-2.9.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b4a9eaa6e7f4ff91bec10aa3fb296878e75187bced5cc4bafe17dc40915e1326", size = 3822407, upload-time = "2026-04-20T23:34:05.977Z" }, + { url = "https://files.pythonhosted.org/packages/3c/ed/60486c2c7f0d4d1ede2bfb1ed27e2498477ce646bc7f6b2759906303117e/psycopg2_binary-2.9.12-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c6528cefc8e50fcc6f4a107e27a672058b36cc5736d665476aeb413ba88dbb06", size = 4578425, upload-time = "2026-04-20T23:34:08.246Z" }, + { url = "https://files.pythonhosted.org/packages/0b/b9/656cb03fad9f4f49f2145c334b1126ee75189929ca4e6187d485a2d59951/psycopg2_binary-2.9.12-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e4e184b1fb6072bf05388aa41c697e1b2d01b3473f107e7ec44f186a32cfd0b8", size = 4273709, upload-time = "2026-04-20T23:34:10.974Z" }, + { url = "https://files.pythonhosted.org/packages/99/66/08cf0da0e25cc6fb142c89be45fc8418792858f0c4cbff5e24530ff02cd6/psycopg2_binary-2.9.12-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4766ab678563054d3f1d064a4db19cc4b5f9e3a8d9018592a8285cf200c248f3", size = 5893779, upload-time = "2026-04-20T23:34:13.905Z" }, + { url = "https://files.pythonhosted.org/packages/17/d7/eecd9ce8e146d3721115d82d3836efdbb712187e4590325df549989d18f4/psycopg2_binary-2.9.12-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5a0253224780c978746cb9be55a946bcdaf40fe3519c0f622924cdabdafe2c39", size = 4109308, upload-time = "2026-04-20T23:34:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/b6/2e/b1dc289b362cc8d45697b57eefbd673186f49a4ea0906928988e3affcc98/psycopg2_binary-2.9.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0dc9228d47c46bda253d2ecd6bb93b56a9f2d7ad33b684a1fa3622bf74ffe30c", size = 3654405, upload-time = "2026-04-20T23:34:19.303Z" }, + { url = "https://files.pythonhosted.org/packages/eb/e4/4c4aea6473214dbdbd0fbba11aa4691e76dc01722c55724c5951719865ff/psycopg2_binary-2.9.12-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f921f3cd87035ef7df233383011d7a53ea1d346224752c1385f1edfd790ceb6a", size = 3299187, upload-time = "2026-04-20T23:34:21.206Z" }, + { url = "https://files.pythonhosted.org/packages/ba/5d/b03b99986446a4f57b170ed9a2579fb7ff9783ca0fa5226b19db99737fee/psycopg2_binary-2.9.12-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:3d999bd982a723113c1a45b55a7a6a90d64d0ed2278020ed625c490ff7bef96c", size = 3047716, upload-time = "2026-04-20T23:34:23.077Z" }, + { url = "https://files.pythonhosted.org/packages/14/86/382ee4afbd1d97500c9d2862b20c2fdeddf4b7335e984df3fb4309f64108/psycopg2_binary-2.9.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29d4d134bd0ab46ffb04e94aa3c5fa3ef582e9026609165e2f758ff76fc3a3be", size = 3349237, upload-time = "2026-04-20T23:34:25.211Z" }, + { url = "https://files.pythonhosted.org/packages/a8/16/9a57c75ba1eda7165c017342f526810d5f5a12647dde749c99ae9a7141d7/psycopg2_binary-2.9.12-cp311-cp311-win_amd64.whl", hash = "sha256:cb4a1dacdd48077150dc762a9e5ddbf32c256d66cb46f80839391aa458774936", size = 2757036, upload-time = "2026-04-20T23:34:27.77Z" }, + { url = "https://files.pythonhosted.org/packages/e2/9f/ef4ef3c8e15083df90ca35265cfd1a081a2f0cc07bb229c6314c6af817f4/psycopg2_binary-2.9.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5cdc05117180c5fa9c40eea8ea559ce64d73824c39d928b7da9fb5f6a9392433", size = 3712459, upload-time = "2026-04-20T23:34:30.549Z" }, + { url = "https://files.pythonhosted.org/packages/b5/01/3dd14e46ba48c1e1a6ec58ee599fa1b5efa00c246d5046cd903d0eeb1af1/psycopg2_binary-2.9.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d3227a3bc228c10d21011a99245edca923e4e8bf461857e869a507d9a41fe9f6", size = 3822936, upload-time = "2026-04-20T23:34:32.77Z" }, + { url = "https://files.pythonhosted.org/packages/a6/f7/0640e4901119d8a9f7a1784b927f494e2198e213ceb593753d1f2c8b1b30/psycopg2_binary-2.9.12-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:995ce929eede89db6254b50827e2b7fd61e50d11f0b116b29fffe4a2e53c4580", size = 4578676, upload-time = "2026-04-20T23:34:35.18Z" }, + { url = "https://files.pythonhosted.org/packages/b0/55/44df3965b5f297c50cc0b1b594a31c67d6127a9d133045b8a66611b14dfb/psycopg2_binary-2.9.12-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9fe06d93e72f1c048e731a2e3e7854a5bfaa58fc736068df90b352cefe66f03f", size = 4274917, upload-time = "2026-04-20T23:34:37.982Z" }, + { url = "https://files.pythonhosted.org/packages/b0/4b/74535248b1eac0c9336862e8617c765ac94dac76f9e25d7c4a79588c8907/psycopg2_binary-2.9.12-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40e7b28b63aaf737cb3a1edc3a9bbc9a9f4ad3dcb7152e8c1130e4050eddcb7d", size = 5894843, upload-time = "2026-04-20T23:34:40.856Z" }, + { url = "https://files.pythonhosted.org/packages/f2/ba/f1bf8d2ae71868ad800b661099086ee52bc0f8d9f05be1acd8ebb06757cc/psycopg2_binary-2.9.12-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:89d19a9f7899e8eb0656a2b3a08e0da04c720a06db6e0033eab5928aabe60fa9", size = 4110556, upload-time = "2026-04-20T23:34:44.016Z" }, + { url = "https://files.pythonhosted.org/packages/45/46/c15706c338403b7c420bcc0c2905aad116cc064545686d8bf85f1999ea00/psycopg2_binary-2.9.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:612b965daee295ae2da8f8218ce1d274645dc76ef3f1abf6a0a94fd57eff876d", size = 3655714, upload-time = "2026-04-20T23:34:46.233Z" }, + { url = "https://files.pythonhosted.org/packages/b3/7c/a2d5dc09b64a4564db242a0fe418fde7d33f6f8259dd2c5b9d7def00fb5a/psycopg2_binary-2.9.12-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b9a339b79d37c1b45f3235265f07cdeb0cb5ad7acd2ac7720a5920989c17c24e", size = 3301154, upload-time = "2026-04-20T23:34:49.528Z" }, + { url = "https://files.pythonhosted.org/packages/c0/e8/cc8c9a4ce71461f9ec548d38cadc41dc184b34c73e6455450775a9334ccd/psycopg2_binary-2.9.12-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:3471336e1acfd9c7fe507b8bad5af9317b6a89294f9eb37bd9a030bb7bebcdc6", size = 3048882, upload-time = "2026-04-20T23:34:51.86Z" }, + { url = "https://files.pythonhosted.org/packages/19/6a/31e2296bc0787c5ab75d3d118e40b239db8151b5192b90b77c72bc9256e9/psycopg2_binary-2.9.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7af18183109e23502c8b2ae7f6926c0882766f35b5175a4cd737ad825e4d7a1b", size = 3351298, upload-time = "2026-04-20T23:34:54.124Z" }, + { url = "https://files.pythonhosted.org/packages/5f/a8/75f4e3e11203b590150abed2cf7794b9c9c9f7eceddae955191138b44dde/psycopg2_binary-2.9.12-cp312-cp312-win_amd64.whl", hash = "sha256:398fcd4db988c7d7d3713e2b8e18939776fd3fb447052daae4f24fa39daede4c", size = 2757230, upload-time = "2026-04-20T23:34:56.242Z" }, + { url = "https://files.pythonhosted.org/packages/91/bb/4608c96f970f6e0c56572e87027ef4404f709382a3503e9934526d7ba051/psycopg2_binary-2.9.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7c729a73c7b1b84de3582f73cdd27d905121dc2c531f3d9a3c32a3011033b965", size = 3712419, upload-time = "2026-04-20T23:34:58.754Z" }, + { url = "https://files.pythonhosted.org/packages/5e/af/48f76af9d50d61cf390f8cd657b503168b089e2e9298e48465d029fcc713/psycopg2_binary-2.9.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4413d0caef93c5cf50b96863df4c2efe8c269bf2267df353225595e7e15e8df7", size = 3822990, upload-time = "2026-04-20T23:35:00.821Z" }, + { url = "https://files.pythonhosted.org/packages/7a/df/aba0f99397cd811d32e06fc0cc781f1f3ce98bc0e729cb423925085d781a/psycopg2_binary-2.9.12-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:4dfcf8e45ebb0c663be34a3442f65e17311f3367089cd4e5e3a3e8e62c978777", size = 4578696, upload-time = "2026-04-20T23:35:03.409Z" }, + { url = "https://files.pythonhosted.org/packages/95/9c/eaa74021ac4e4d5c2f83d82fc6615a63f4fe6c94dc4e94c3990427053f67/psycopg2_binary-2.9.12-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c41321a14dd74aceb6a9a643b9253a334521babfa763fa873e33d89cfa122fb5", size = 4274982, upload-time = "2026-04-20T23:35:05.583Z" }, + { url = "https://files.pythonhosted.org/packages/35/ed/c25deff98bd26187ba48b3b250a3ffc3037c46c5b89362534a15d200e0db/psycopg2_binary-2.9.12-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:83946ba43979ebfdc99a3cd0ee775c89f221df026984ba19d46133d8d75d3cd9", size = 5894867, upload-time = "2026-04-20T23:35:07.902Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/8d0e21ca77373c6c9589e5c4528f6e8f0c08c62cafc76fb0bddb7a2cee22/psycopg2_binary-2.9.12-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:411e85815652d13560fbe731878daa5d92378c4995a22302071890ec3397d019", size = 4110578, upload-time = "2026-04-20T23:35:10.149Z" }, + { url = "https://files.pythonhosted.org/packages/00/fc/f481e2435bd8f742d0123309174aae4165160ad3ef17c1b99c3622c241d2/psycopg2_binary-2.9.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c8ad4c08e00f7679559eaed7aff1edfffc60c086b976f93972f686384a95e2c", size = 3655816, upload-time = "2026-04-20T23:35:12.56Z" }, + { url = "https://files.pythonhosted.org/packages/53/79/b9f46466bdbe9f239c96cde8be33c1aace4842f06013b47b730dc9759187/psycopg2_binary-2.9.12-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:00814e40fa23c2b37ef0a1e3c749d89982c73a9cb5046137f0752a22d432e82f", size = 3301307, upload-time = "2026-04-20T23:35:15.029Z" }, + { url = "https://files.pythonhosted.org/packages/3f/19/7dc003b32fe35024df89b658104f7c8538a8b2dcbde7a4e746ce929742e7/psycopg2_binary-2.9.12-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:98062447aebc20ed20add1f547a364fd0ef8933640d5372ff1873f8deb9b61be", size = 3048968, upload-time = "2026-04-20T23:35:16.757Z" }, + { url = "https://files.pythonhosted.org/packages/91/58/2dbd7db5c604d45f4950d988506aae672a14126ec22998ced5021cbb76bb/psycopg2_binary-2.9.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:66a7685d7e548f10fb4ce32fb01a7b7f4aa702134de92a292c7bd9e0d3dbd290", size = 3351369, upload-time = "2026-04-20T23:35:18.933Z" }, + { url = "https://files.pythonhosted.org/packages/42/ee/dee8dcaad07f735824de3d6563bc67119fa6c28257b17977a8d624f02fab/psycopg2_binary-2.9.12-cp313-cp313-win_amd64.whl", hash = "sha256:b6937f5fe4e180aeee87de907a2fa982ded6f7f15d7218f78a083e4e1d68f2a0", size = 2757347, upload-time = "2026-04-20T23:35:21.283Z" }, +] + +[[package]] +name = "pycodestyle" +version = "2.14.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/e0/abfd2a0d2efe47670df87f3e3a0e2edda42f055053c85361f19c0e2c1ca8/pycodestyle-2.14.0.tar.gz", hash = "sha256:c4b5b517d278089ff9d0abdec919cd97262a3367449ea1c8b49b91529167b783", size = 39472, upload-time = "2025-06-20T18:49:48.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl", hash = "sha256:dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d", size = 31594, upload-time = "2025-06-20T18:49:47.491Z" }, +] + +[[package]] +name = "pycparser" +version = "3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[package]] +name = "pyflakes" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/45/dc/fd034dc20b4b264b3d015808458391acbf9df40b1e54750ef175d39180b1/pyflakes-3.4.0.tar.gz", hash = "sha256:b24f96fafb7d2ab0ec5075b7350b3d2d2218eab42003821c06344973d3ea2f58", size = 64669, upload-time = "2025-06-20T18:45:27.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl", hash = "sha256:f742a7dbd0d9cb9ea41e9a24a918996e8170c799fa528688d40dd582c8265f4f", size = 63551, upload-time = "2025-06-20T18:45:26.937Z" }, +] + +[[package]] +name = "pygments" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, +] + +[[package]] +name = "pynacl" +version = "1.6.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d9/9a/4019b524b03a13438637b11538c82781a5eda427394380381af8f04f467a/pynacl-1.6.2.tar.gz", hash = "sha256:018494d6d696ae03c7e656e5e74cdfd8ea1326962cc401bcf018f1ed8436811c", size = 3511692, upload-time = "2026-01-01T17:48:10.851Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/7b/4845bbf88e94586ec47a432da4e9107e3fc3ce37eb412b1398630a37f7dd/pynacl-1.6.2-cp38-abi3-macosx_10_10_universal2.whl", hash = "sha256:c949ea47e4206af7c8f604b8278093b674f7c79ed0d4719cc836902bf4517465", size = 388458, upload-time = "2026-01-01T17:32:16.829Z" }, + { url = "https://files.pythonhosted.org/packages/1e/b4/e927e0653ba63b02a4ca5b4d852a8d1d678afbf69b3dbf9c4d0785ac905c/pynacl-1.6.2-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8845c0631c0be43abdd865511c41eab235e0be69c81dc66a50911594198679b0", size = 800020, upload-time = "2026-01-01T17:32:18.34Z" }, + { url = "https://files.pythonhosted.org/packages/7f/81/d60984052df5c97b1d24365bc1e30024379b42c4edcd79d2436b1b9806f2/pynacl-1.6.2-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:22de65bb9010a725b0dac248f353bb072969c94fa8d6b1f34b87d7953cf7bbe4", size = 1399174, upload-time = "2026-01-01T17:32:20.239Z" }, + { url = "https://files.pythonhosted.org/packages/68/f7/322f2f9915c4ef27d140101dd0ed26b479f7e6f5f183590fd32dfc48c4d3/pynacl-1.6.2-cp38-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:46065496ab748469cdd999246d17e301b2c24ae2fdf739132e580a0e94c94a87", size = 835085, upload-time = "2026-01-01T17:32:22.24Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d0/f301f83ac8dbe53442c5a43f6a39016f94f754d7a9815a875b65e218a307/pynacl-1.6.2-cp38-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a66d6fb6ae7661c58995f9c6435bda2b1e68b54b598a6a10247bfcdadac996c", size = 1437614, upload-time = "2026-01-01T17:32:23.766Z" }, + { url = "https://files.pythonhosted.org/packages/c4/58/fc6e649762b029315325ace1a8c6be66125e42f67416d3dbd47b69563d61/pynacl-1.6.2-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:26bfcd00dcf2cf160f122186af731ae30ab120c18e8375684ec2670dccd28130", size = 818251, upload-time = "2026-01-01T17:32:25.69Z" }, + { url = "https://files.pythonhosted.org/packages/c9/a8/b917096b1accc9acd878819a49d3d84875731a41eb665f6ebc826b1af99e/pynacl-1.6.2-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c8a231e36ec2cab018c4ad4358c386e36eede0319a0c41fed24f840b1dac59f6", size = 1402859, upload-time = "2026-01-01T17:32:27.215Z" }, + { url = "https://files.pythonhosted.org/packages/85/42/fe60b5f4473e12c72f977548e4028156f4d340b884c635ec6b063fe7e9a5/pynacl-1.6.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:68be3a09455743ff9505491220b64440ced8973fe930f270c8e07ccfa25b1f9e", size = 791926, upload-time = "2026-01-01T17:32:29.314Z" }, + { url = "https://files.pythonhosted.org/packages/fa/f9/e40e318c604259301cc091a2a63f237d9e7b424c4851cafaea4ea7c4834e/pynacl-1.6.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:8b097553b380236d51ed11356c953bf8ce36a29a3e596e934ecabe76c985a577", size = 1363101, upload-time = "2026-01-01T17:32:31.263Z" }, + { url = "https://files.pythonhosted.org/packages/48/47/e761c254f410c023a469284a9bc210933e18588ca87706ae93002c05114c/pynacl-1.6.2-cp38-abi3-win32.whl", hash = "sha256:5811c72b473b2f38f7e2a3dc4f8642e3a3e9b5e7317266e4ced1fba85cae41aa", size = 227421, upload-time = "2026-01-01T17:32:33.076Z" }, + { url = "https://files.pythonhosted.org/packages/41/ad/334600e8cacc7d86587fe5f565480fde569dfb487389c8e1be56ac21d8ac/pynacl-1.6.2-cp38-abi3-win_amd64.whl", hash = "sha256:62985f233210dee6548c223301b6c25440852e13d59a8b81490203c3227c5ba0", size = 239754, upload-time = "2026-01-01T17:32:34.557Z" }, + { url = "https://files.pythonhosted.org/packages/29/7d/5945b5af29534641820d3bd7b00962abbbdfee84ec7e19f0d5b3175f9a31/pynacl-1.6.2-cp38-abi3-win_arm64.whl", hash = "sha256:834a43af110f743a754448463e8fd61259cd4ab5bbedcf70f9dabad1d28a394c", size = 184801, upload-time = "2026-01-01T17:32:36.309Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "pytz" +version = "2026.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/46/dd499ec9038423421951e4fad73051febaa13d2df82b4064f87af8b8c0c3/pytz-2026.2.tar.gz", hash = "sha256:0e60b47b29f21574376f218fe21abc009894a2321ea16c6754f3cad6eb7cdd6a", size = 320861, upload-time = "2026-05-04T01:35:29.667Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/dd/96da98f892250475bdf2328112d7468abdd4acc7b902b6af23f4ed958ea0/pytz-2026.2-py2.py3-none-any.whl", hash = "sha256:04156e608bee23d3792fd45c94ae47fae1036688e75032eea2e3bf0323d1f126", size = 510141, upload-time = "2026-05-04T01:35:27.408Z" }, +] + +[[package]] +name = "rcssmin" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/81/af/c9654b4f9b054ec163ed7cb20d8db0e5ae05e2e9ce99a4c11d91a2180b3f/rcssmin-1.2.2.tar.gz", hash = "sha256:806986eaf7414545edc28a1d29523e9560e49e151ff4a337d9d1f0271d6e1cc4", size = 587012, upload-time = "2025-10-12T10:48:08.932Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/3b/d4db4a2fb0d0033d222b56526bb1935e892e2560516b0378b4ccffec8d9c/rcssmin-1.2.2-cp311-cp311-manylinux1_i686.whl", hash = "sha256:da4801f4f429d66f9922871a7c71dee54c87f0ea5666cae6f1eb84c3fbc4e1f4", size = 49090, upload-time = "2025-10-12T10:48:24.827Z" }, + { url = "https://files.pythonhosted.org/packages/bd/f3/aeed5758339ccba61a82de12897762bad8f4317883a20de2dcc78842afda/rcssmin-1.2.2-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:e6b5913f3e8cb249044e916bc6ddcb5158815121548686a0fc8e2b8a5961a62e", size = 49368, upload-time = "2025-10-12T10:48:26.237Z" }, + { url = "https://files.pythonhosted.org/packages/2a/7b/e4206002c8c1bdcac6905ad7b200d62662d20d2b23f3d3e7df4e89447fdd/rcssmin-1.2.2-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:1472a98142d10d6c6772d96424ddcaf99d7e1d3217475f7f28f7d40dd84f24a2", size = 50714, upload-time = "2025-10-12T10:48:27.305Z" }, + { url = "https://files.pythonhosted.org/packages/d7/7c/e1cd335ce659af50a2c16dad37eee4b166536d73a463cdfeab5bb8e0833b/rcssmin-1.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b6c91878a7e6f708f90c1bbc1a02729f45b2e5dee89045b395e997aa71744ee4", size = 53376, upload-time = "2025-10-12T10:48:28.374Z" }, + { url = "https://files.pythonhosted.org/packages/98/0b/9071882a74df398bf40e668a89cf2dd7eb95ff2e02c111c4c156aaad745a/rcssmin-1.2.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:844227668a235451eb544455b911067ba5495d680857d4bad2b0b78878f30a5c", size = 53194, upload-time = "2025-10-12T10:48:29.331Z" }, + { url = "https://files.pythonhosted.org/packages/03/48/295e57fbb4767226b5231ee99c056eab5447845259e4172e2db76f07c26d/rcssmin-1.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc866e23121bc4e29014b588fb67c8242a80ce053196f511c4c806b30ca6a393", size = 52998, upload-time = "2025-10-12T10:48:30.266Z" }, + { url = "https://files.pythonhosted.org/packages/86/5c/29af37ffb21a3069d108902868262b25fbbf731821cf5c7de76bba986dd1/rcssmin-1.2.2-cp312-cp312-manylinux1_i686.whl", hash = "sha256:78249189d39344a1e9d813c51362831537500e104c5bdce4ff24fe59010e9ee1", size = 48819, upload-time = "2025-10-12T10:48:31.3Z" }, + { url = "https://files.pythonhosted.org/packages/89/dc/b522a5e1a0a8ef8af50adbb3bdd9f5a059a9890b9fc5ce3f44a37a996a74/rcssmin-1.2.2-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:217efed0dff304d503bf481068ddb13ae72176ed5970f1011fb1a1e379308d9c", size = 49248, upload-time = "2025-10-12T10:48:32.254Z" }, + { url = "https://files.pythonhosted.org/packages/66/0b/7c0018793080ed26939d9beaf09591cf58fb9cda3253a891137b841a902a/rcssmin-1.2.2-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:c51aa47b1752ae55ad4cf4332e7316c5206a6a686d65bc15431a6bfea393e665", size = 50723, upload-time = "2025-10-12T10:48:33.398Z" }, + { url = "https://files.pythonhosted.org/packages/52/b4/c8b0d2588719af2b9c454e6e95f18bd60b0c474da4b65af61bb6457a7555/rcssmin-1.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:354215283f32413ced87b358934ebbb7c5529f51f5d316e80bc2889486d388b3", size = 53302, upload-time = "2025-10-12T10:48:34.452Z" }, + { url = "https://files.pythonhosted.org/packages/8d/cb/1a8d6ace1ff845d57fa31087510a88dc10ac01cea41317e976bbf2413f91/rcssmin-1.2.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:265b57de87949b505bcd658f4f5bbfc1f077390108cd12e288ba2f7824bee52c", size = 53001, upload-time = "2025-10-12T10:48:35.389Z" }, + { url = "https://files.pythonhosted.org/packages/5e/25/2d97155edb351a28e5a46a35f7b4e54bfe3933847bd2ba6674216a817d9e/rcssmin-1.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:83ecd3093640d69f7582839788e012ecf9a85faeb95760032626977a7d3904b2", size = 53285, upload-time = "2025-10-12T10:48:36.513Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ae/3a7911e1c773f3deb039a42588ae6cee59d6bcec07b5081db376677b293a/rcssmin-1.2.2-cp313-cp313-manylinux1_i686.whl", hash = "sha256:e91449b612a08e5e80df3487e941c86e2c73c5088169588c31c382eb94da0521", size = 48764, upload-time = "2025-10-12T10:48:37.45Z" }, + { url = "https://files.pythonhosted.org/packages/30/a7/6d311986d76da0a538bae3f584d2b7579dd11648e74f539b177d8af51f6b/rcssmin-1.2.2-cp313-cp313-manylinux1_x86_64.whl", hash = "sha256:20a32c49d65b65c3ac80305d8a31b98f3d92b1b052dd63b57fbebc7003f9ae38", size = 49175, upload-time = "2025-10-12T10:48:39.601Z" }, + { url = "https://files.pythonhosted.org/packages/f2/9b/ceb12f3397695d075a1f3e12e295d84f021562540a6579144cb985d80ccb/rcssmin-1.2.2-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:cd0a5ca4a0fc3b193ab0dcd251bd2463900558108cc4306a5cc4ab77c6bfffde", size = 50675, upload-time = "2025-10-12T10:48:40.664Z" }, + { url = "https://files.pythonhosted.org/packages/3b/8c/efb41baaea20567fa0c335705bff1f187e35301b684891d26282a16aff1b/rcssmin-1.2.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:2b008aa77a92f9db2d88f7e7ab45b81f37253cb0baafda59dd5b857c2de9b09f", size = 52999, upload-time = "2025-10-12T10:48:41.749Z" }, + { url = "https://files.pythonhosted.org/packages/4d/f6/cf692cca8837375fd21bf31cd134e10684fc11283a68c04160619aa826dc/rcssmin-1.2.2-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:b3843e0501fa45d7c911dd7b3b78fd5f51c8159dd36d780ee12060da2d526aa0", size = 52752, upload-time = "2025-10-12T10:48:42.823Z" }, + { url = "https://files.pythonhosted.org/packages/8d/fa/5b0f1df380f598a397414dfaba74b05901379918f4d6b1746462190ae011/rcssmin-1.2.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:bb75b0e412a5419d62f39d89d0b3920a6697d2b12c8dad57f8bde1c76332c640", size = 52994, upload-time = "2025-10-12T10:48:44.023Z" }, + { url = "https://files.pythonhosted.org/packages/16/df/7157985ff9e2f3fecb15b03370ee0c8de42fd5a07c4b54e0be2c0f3f8133/rcssmin-1.2.2-cp313-cp313t-manylinux1_i686.whl", hash = "sha256:dd192a876a7af9a14628ff20818df80187294db96d86ddccf72371a6ae3e7ce7", size = 51314, upload-time = "2025-10-12T10:48:45.569Z" }, + { url = "https://files.pythonhosted.org/packages/56/d5/e6c176b8d39faf0fac3a6896022febb00d0ac5c4b99d4924572c579af210/rcssmin-1.2.2-cp313-cp313t-manylinux1_x86_64.whl", hash = "sha256:5724ed426c1444c35584f0bcda43c81ac47da769228722207aea7b8eedf31224", size = 51509, upload-time = "2025-10-12T10:48:47.03Z" }, + { url = "https://files.pythonhosted.org/packages/b7/3e/493ef8b7ce621b45f1be4505295fe604280918f67a01a28c82f9d0621a3f/rcssmin-1.2.2-cp313-cp313t-manylinux2014_aarch64.whl", hash = "sha256:228cc8d192ba4bd82305c085cbb5594d45d8dc6605d4eddc319543fb9f47b319", size = 52730, upload-time = "2025-10-12T10:48:48.13Z" }, + { url = "https://files.pythonhosted.org/packages/b2/90/77cf149fac7f247dac530a96beac7c52cea9fab928b5c3e2a45c6da86147/rcssmin-1.2.2-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:714390aac7c4cb611eecc845a5d9bb01495a3c9fccf9d8a2d6aa75a109276f7b", size = 54939, upload-time = "2025-10-12T10:48:49.423Z" }, + { url = "https://files.pythonhosted.org/packages/35/37/b8347b3a817b99eab9cc987f1090c7192d9d5f077fdc84c04d12f5186b87/rcssmin-1.2.2-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:64ec506fce7a3f1e993f4c4b55c7b3d9ad8259191cf20d986aa1d1a13e920fe8", size = 55108, upload-time = "2025-10-12T10:48:50.463Z" }, + { url = "https://files.pythonhosted.org/packages/5e/e1/fb555f831d5e5674a91444007434ba85b4ae98cfd97dd7bc9c2962c0f56b/rcssmin-1.2.2-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:742bb522d1efe0f1d362d81e00b5dc93ca2ddd1e435ed2d921cfa84fbb9f6887", size = 54858, upload-time = "2025-10-12T10:48:51.941Z" }, +] + +[[package]] +name = "regex" +version = "2026.5.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/0e/49aee608ad09480e7fd276898c99ec6192985fa331abe4eb3a986094490b/regex-2026.5.9.tar.gz", hash = "sha256:a8234aa23ec39894bfe4a3f1b85616a7032481964a13ac6fc9f10de4f6fca270", size = 416074, upload-time = "2026-05-09T23:15:19.37Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/dc/c1f2df4027e82fc54b5a473e4b250f5139faca49a0fbe29a48668d228f34/regex-2026.5.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ccf5249114cc3e772ecdd88a98a86eca0fd74c61ce32a94743758c083fc05d48", size = 489445, upload-time = "2026-05-09T23:12:06.111Z" }, + { url = "https://files.pythonhosted.org/packages/03/d2/59f01110660081cce9c0bc30ebd0b5ee250dacf658e3248ed92f01e0e8ee/regex-2026.5.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46f1326ca6e65b0879d23ca302c0f2415aad42ff0309b9c818e7949fe19a41d8", size = 291271, upload-time = "2026-05-09T23:12:07.731Z" }, + { url = "https://files.pythonhosted.org/packages/58/b6/14b2c84ff90ddb370c81d27503f4a0fcf071496416f4855f6cc8c5d81c35/regex-2026.5.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef31cbfe458e21c6122ba8150ff060e0c7789ed0d26eb423f25472584920b555", size = 289212, upload-time = "2026-05-09T23:12:09.266Z" }, + { url = "https://files.pythonhosted.org/packages/03/d0/4db86529117320de0c84afd90e70bb47434625875e34fcef9d8c127c5b16/regex-2026.5.9-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:992604d02e6d9c6d786c24a706a71ecffe1020fc1ef264044474cd81fa2c3919", size = 792310, upload-time = "2026-05-09T23:12:11.416Z" }, + { url = "https://files.pythonhosted.org/packages/07/78/fe4800cd322f862ecffd2d553409b20d80650e5ed71b9d178f853d020b82/regex-2026.5.9-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c9411dd64ca95477225734a93dfc8583b51916b8d5942f99d6cac21e09965451", size = 861721, upload-time = "2026-05-09T23:12:13.681Z" }, + { url = "https://files.pythonhosted.org/packages/b5/d0/b3618a895dd8feb897c61bb2954edd265e1767d82a01d53065d5871127a3/regex-2026.5.9-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3dd4a3ff360dfb836fecdb93a4598f9d6e2ac81e3e397125145c6221bf58cf4c", size = 906460, upload-time = "2026-05-09T23:12:15.443Z" }, + { url = "https://files.pythonhosted.org/packages/33/6f/1481597e859ef19508b345eec4afd1416ed6e6b459c75a64026ef193aecf/regex-2026.5.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a661a7d270a61f7cf460caee8b9fa2d5ef9e5c681234bcb9e0fe14f488e7dfc", size = 799843, upload-time = "2026-05-09T23:12:16.892Z" }, + { url = "https://files.pythonhosted.org/packages/73/59/955734c803f59108deccba3597ae440c76b62a652733c0006e6243758420/regex-2026.5.9-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f079e50a0d3cc3cd5091fa9ff45869a2e6b2cd35895731edafb0327901a8d86d", size = 773610, upload-time = "2026-05-09T23:12:19.127Z" }, + { url = "https://files.pythonhosted.org/packages/68/8f/70c04a236d651c81881dac42ef8538bddda6121434509d0a22d9e601503b/regex-2026.5.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4ebe8f0b5ec5a5024dc4a4c59f444c4e9afc5f2abdbb8962065b75d27fb971f9", size = 781645, upload-time = "2026-05-09T23:12:20.806Z" }, + { url = "https://files.pythonhosted.org/packages/1d/96/05c7434d88185e5d27fe54aeb74df86bd77cd79f52f0b4eae54faa8fea70/regex-2026.5.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:97cf3bc1b7d7d2306772ec07366c80d9df00ff79e79cea32898883a646d2fae2", size = 854473, upload-time = "2026-05-09T23:12:22.465Z" }, + { url = "https://files.pythonhosted.org/packages/4e/c1/6e3d8202d981f3117004bf341ee74893ba4ba8a9fbaf4b94615846550a08/regex-2026.5.9-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0f9eede6a5cbdc02d4978090186390936e1776a7d1359b21e41014c609880bcf", size = 763311, upload-time = "2026-05-09T23:12:24.351Z" }, + { url = "https://files.pythonhosted.org/packages/93/c7/e7737f1526b3fb32bd4c337fd6c71c3ebb5c8296fc34d11197e0955d2e35/regex-2026.5.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:01f0f5f55f4b64dacec85dc116d3c05fd23ad3ff037bbc73a2085775953c2611", size = 844593, upload-time = "2026-05-09T23:12:26.341Z" }, + { url = "https://files.pythonhosted.org/packages/a5/27/0daffb1a535bb39f422c3d200f4ab023c71110ad66a32b366bee708baba0/regex-2026.5.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1268eddd8486dc561d08eee1156e40aa3a8fe10f4bdec8fa653b455fcbffd12c", size = 789167, upload-time = "2026-05-09T23:12:27.975Z" }, + { url = "https://files.pythonhosted.org/packages/ce/fc/294fe4fac4f2ed67207b17471815870c1c45b3a489e08e0ac96daea16ef6/regex-2026.5.9-cp311-cp311-win32.whl", hash = "sha256:8676474c07469d6f33dd1085ca2cd45f65785f32518f2b20e36d9953ca07f994", size = 266249, upload-time = "2026-05-09T23:12:30.141Z" }, + { url = "https://files.pythonhosted.org/packages/d0/b0/8dce459f6245bcf8f6e9f23ac9569f1a0f15c131cc0745e82b43226204cf/regex-2026.5.9-cp311-cp311-win_amd64.whl", hash = "sha256:246de9d60aa3f8538b519834dd95cbf276ea263d6a7bd5a3666dc3fa0230505b", size = 278423, upload-time = "2026-05-09T23:12:31.676Z" }, + { url = "https://files.pythonhosted.org/packages/db/8d/f9aeff6ad63a3ef720386f2907e6d34a35a510a6e498ebad28b0fb3f6ab6/regex-2026.5.9-cp311-cp311-win_arm64.whl", hash = "sha256:d726ca3f0d76969bf1e8e477d160d3d666bbf999f6860bd314889e5345782046", size = 270420, upload-time = "2026-05-09T23:12:33.194Z" }, + { url = "https://files.pythonhosted.org/packages/50/9b/6550044bc44e17c84d312c031c2ec42fbdb6a4ec4e29093be3a172d08772/regex-2026.5.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:57eeeb05db7979413dec5438f2db21d7ecbba787cde7a711df1a6f6df672aa06", size = 490451, upload-time = "2026-05-09T23:12:34.72Z" }, + { url = "https://files.pythonhosted.org/packages/1e/95/fc7ba4303b5a0f92446a12ee6778ef2c6c799233f5060042a31bf390cfe9/regex-2026.5.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:398c521292f4c7fb807001dcd54694d3a1fcafc179a36ad9cc56f98df85930b6", size = 292112, upload-time = "2026-05-09T23:12:36.285Z" }, + { url = "https://files.pythonhosted.org/packages/54/4b/ee27938d1b2c443e89a9a10e00d2d19aa5ee300cd3d61140644e93bb083e/regex-2026.5.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f7a7c26137296beba7784de6eba69c6a93a63ccebc385e4962fe67e267a91225", size = 289599, upload-time = "2026-05-09T23:12:38.089Z" }, + { url = "https://files.pythonhosted.org/packages/d8/dd/ba103dc19614e25f3880800ca67ce093d6e21b325d72b8383c7bf906e9fa/regex-2026.5.9-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6441cc660d76107934a09c22167200839a0e89604a6297f78a974e66e931d2c0", size = 796732, upload-time = "2026-05-09T23:12:40.062Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e7/f035b4fd858b050b0080bf302968dc0f59ba34e391872d54936758e6844e/regex-2026.5.9-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:91328f1c23d47595ca3ef0a7557fa129c5a23404b775c770697d2f35b33e0107", size = 865440, upload-time = "2026-05-09T23:12:42.059Z" }, + { url = "https://files.pythonhosted.org/packages/0a/51/8cd301ecc899aea28124357f729f4272f44de7806fc7ca02490bfbe253e8/regex-2026.5.9-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:93a7860539414dddaefba2b40f8771765ae17949d4c7182b876ce429e11a8309", size = 912329, upload-time = "2026-05-09T23:12:44.373Z" }, + { url = "https://files.pythonhosted.org/packages/cc/1e/3fbe2fa1e8cebd62f3bb7d3321cff1640aca2e240b51d9bd624aad949260/regex-2026.5.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd2810d22146b6d838acc5ec15602cb6b47920aa4e33015df3868eedfd20bab8", size = 801239, upload-time = "2026-05-09T23:12:46.268Z" }, + { url = "https://files.pythonhosted.org/packages/17/2f/6f6008682bf2cf98040a0d3153a8e557b6ab728d7713d045cee4ce544ab8/regex-2026.5.9-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:daff2bdbaf1d23e52fdff7c0b7bc2048b68f978df6a4d107ac981f94caef2e66", size = 777054, upload-time = "2026-05-09T23:12:48.051Z" }, + { url = "https://files.pythonhosted.org/packages/19/2b/eee0d20a6842ba04df4b8847a920b57ef56853f14ef85405473e586b605a/regex-2026.5.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4eeb011098fcb77af513dcef521a3dbecbf8849b1e38940759d293b7a93f5026", size = 785098, upload-time = "2026-05-09T23:12:49.851Z" }, + { url = "https://files.pythonhosted.org/packages/4a/98/6fc1e6410feefb92159edaed5041992bfe390e8d26c721865434acbca558/regex-2026.5.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ea9c8ecfa1b73c73b626534d6626e5340d429630943672b8480724f44e84b962", size = 860095, upload-time = "2026-05-09T23:12:51.666Z" }, + { url = "https://files.pythonhosted.org/packages/18/a3/bd855e0f2cb1a978ecf6fa6bb69632dd9c3f6ea3b81cde62fde14c9daec7/regex-2026.5.9-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:cd2846168eb9ee3c513902bc8225409cb1caab31d04728b145171fa1625d9621", size = 765762, upload-time = "2026-05-09T23:12:53.413Z" }, + { url = "https://files.pythonhosted.org/packages/dc/66/0ae8c092e60b14c79d24f8e0b7f0aea5bfbffdcab00b5483d13404d3c3a5/regex-2026.5.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:39617fb0cde9c0e6306dc70e3bfc096f3da793219879f7ae7aa341a69fbdcf6d", size = 852100, upload-time = "2026-05-09T23:12:55.256Z" }, + { url = "https://files.pythonhosted.org/packages/21/de/8dfde60fc1b21c946a893ba273403b72617edb261370cb1087099a83f088/regex-2026.5.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fd03c4f0e33280d15cae17159b899245d6b7c53d21def19b263b39655061f5ce", size = 789479, upload-time = "2026-05-09T23:12:57.573Z" }, + { url = "https://files.pythonhosted.org/packages/c3/1c/bdcc98f9a4af4fdd166c74941174619ccff4726d3ce32faa8e9a2ecd38dd/regex-2026.5.9-cp312-cp312-win32.whl", hash = "sha256:164eba9b755ea6f244b0d881196fbc1fac09714e9782c9e2732b813142033c8e", size = 266699, upload-time = "2026-05-09T23:12:59.14Z" }, + { url = "https://files.pythonhosted.org/packages/78/87/240d36864f9e48ace85f72e79ced97ceb7f27ce87739a947dcb834b4e6bc/regex-2026.5.9-cp312-cp312-win_amd64.whl", hash = "sha256:86f40a5d6444db30a125c9c9177e6b25dad981cbc37451fd838f145e6edac92e", size = 277783, upload-time = "2026-05-09T23:13:00.789Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b5/7b30f312b0669dff5beebe5b0989dc2d1a312b1a44fab852199c387a5b96/regex-2026.5.9-cp312-cp312-win_arm64.whl", hash = "sha256:96f5f58b54a063d7ea9dca08e1cf57bfe10499c4d579ee672da284f57f5f0070", size = 270513, upload-time = "2026-05-09T23:13:02.426Z" }, + { url = "https://files.pythonhosted.org/packages/aa/da/797e91ecec6f84135da778ddce78c20e0af5d2a15c26f87a81bc3eadb6db/regex-2026.5.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d626b84406444b165fc0ba981604edea39f0588ff1f92baa23fe50799ea9afdb", size = 490303, upload-time = "2026-05-09T23:13:04.382Z" }, + { url = "https://files.pythonhosted.org/packages/44/da/bf30abaaa737b58f4a4b8c4a03659e02fd92092c822e0197ed9e0daab917/regex-2026.5.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d7bdc0ab8f3dd7e1b4f9ab88634e13374669db86bb3c72e8292f07ae313f539f", size = 292019, upload-time = "2026-05-09T23:13:06.022Z" }, + { url = "https://files.pythonhosted.org/packages/2d/e7/d0eaf5713828417b9e5648cf81fa9bacd4961f6ab98c380c2034f8716e35/regex-2026.5.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a8820737949116ffff55fe18f9fc644530063ba6ebfcb8314239416e78f1347c", size = 289468, upload-time = "2026-05-09T23:13:08.214Z" }, + { url = "https://files.pythonhosted.org/packages/d3/9b/b3fdd62b003baa1a9b593cd8c8699c9651c2e80cc21a5c715707983c42d7/regex-2026.5.9-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa0fbdbac82cb3e4450d0ccde7d7a35607f4cb2dd9fba4b8b69bfaf8c9fa6aed", size = 796749, upload-time = "2026-05-09T23:13:10.573Z" }, + { url = "https://files.pythonhosted.org/packages/d4/30/66ab84588765f5b4b271a9ca09ef7ce2b87caa95176ec3d2ad65d7bc4902/regex-2026.5.9-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:57e8915c7986aa33d25e4d3629cef711cd2863f2961b10409f0c04cb8b7d9020", size = 865445, upload-time = "2026-05-09T23:13:12.523Z" }, + { url = "https://files.pythonhosted.org/packages/1a/89/f05169e8588aac365f35ffc7f3bc3184f095ef4cfded7cfaa3c7fd5dbd89/regex-2026.5.9-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:508f56a89ba9cb26e4168cbc37dbd60a28d82430a9e18ad1d25fe0883c314ca2", size = 912322, upload-time = "2026-05-09T23:13:14.281Z" }, + { url = "https://files.pythonhosted.org/packages/30/e1/c93444052cf41581f3c884ab3fb5823daf0992f11cd4388d4275ca610558/regex-2026.5.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b6d189041f15691cfa2b6c4290448ec221244d225b3f5fe9e7771b34ffcdf6e2", size = 801269, upload-time = "2026-05-09T23:13:16.569Z" }, + { url = "https://files.pythonhosted.org/packages/50/fe/0cf96b882f540e62e8b9956599798203d599c44cf4c77917ca27400ff69b/regex-2026.5.9-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e82db382b44d0111b22601c509c89f64434816c9e0eef9d1989cda8cc6ff1c04", size = 777085, upload-time = "2026-05-09T23:13:18.675Z" }, + { url = "https://files.pythonhosted.org/packages/23/5c/d78d4924e7fc875557b9e9b768423925fdfaac5549d06da7810019a9bd26/regex-2026.5.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2acfb48634f64996b57f90f39afa692ff362162722581921fe92239a59960f3c", size = 785153, upload-time = "2026-05-09T23:13:20.525Z" }, + { url = "https://files.pythonhosted.org/packages/bf/e0/5214774090e7b4524dcea3e3c4aa74141d43043f8beb49c1599db1c8b53a/regex-2026.5.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d29eebfc9525db68cad3c97eedd7f754fa265aa5cd0cf4f863b2421e1b48fc9f", size = 860164, upload-time = "2026-05-09T23:13:22.263Z" }, + { url = "https://files.pythonhosted.org/packages/6e/e1/4a57a83350319b1271f0d7a249b8672513ed928b237a741631270de6caea/regex-2026.5.9-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:debb893095e944091c16e641a6e33c1b0f4cb61ab945ec5afbf53ce7068834d8", size = 765731, upload-time = "2026-05-09T23:13:24.277Z" }, + { url = "https://files.pythonhosted.org/packages/12/f4/499e74a20c156fc75836ee04a72a38d1a063978f600937f9760467beb1b0/regex-2026.5.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d659eee77986549c9ea45b861c7567e44d6287c3dc9a4565478853f7b9fe2ff6", size = 852062, upload-time = "2026-05-09T23:13:26.125Z" }, + { url = "https://files.pythonhosted.org/packages/5b/92/7eebc0d0a01e78629695f342ba17e0deaff8fb45e79cc0d7b98287da6e3e/regex-2026.5.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2efa205e6d98b24d1f3ab395c11aa15cdf10935bca283d0285e0499c284fba21", size = 789577, upload-time = "2026-05-09T23:13:27.814Z" }, + { url = "https://files.pythonhosted.org/packages/05/a4/018e71f7d2ad48c1ebe6d3ae0026f9b7cb4802fd15c7cc02fdf724355102/regex-2026.5.9-cp313-cp313-win32.whl", hash = "sha256:f3844f134e834076677dd369976e9f5068679fcb8e50102fdf6b7ac96a3ec127", size = 266691, upload-time = "2026-05-09T23:13:29.549Z" }, + { url = "https://files.pythonhosted.org/packages/e6/1d/861a93719fb9ee7dbfc3761b3797b7a3e112a5d42c6129459d2d741be9b5/regex-2026.5.9-cp313-cp313-win_amd64.whl", hash = "sha256:3527bb4942d2c14552155406cdedd906567456821848aed1cb4933a391bf5eca", size = 277747, upload-time = "2026-05-09T23:13:31.859Z" }, + { url = "https://files.pythonhosted.org/packages/d9/c6/0a2436ae4da1ba76e51cb98943c6838a9a721faa40ebe2dce07694ae34e3/regex-2026.5.9-cp313-cp313-win_arm64.whl", hash = "sha256:56a33f191f17d8c417f99945ebdc1e691d3af9605d86ec68c7e54a57e3e17af6", size = 270500, upload-time = "2026-05-09T23:13:33.525Z" }, + { url = "https://files.pythonhosted.org/packages/e8/e9/d21346f7b60ed58789371358ed66b09d00f832e1bd7c06e55d9da5679882/regex-2026.5.9-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:01f28d868834624c934b8d2e0aa1c8341337e37831f4a012f18a5afcba4cbaf3", size = 494172, upload-time = "2026-05-09T23:13:35.935Z" }, + { url = "https://files.pythonhosted.org/packages/c4/43/fd1177a2032037c681baecdb3422ee4e1424aec4e4f470ef47793d325274/regex-2026.5.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:48036f6374aaa79eb3b754ec29c61d1c6b1606749d705a13f8854fa2539671f6", size = 293952, upload-time = "2026-05-09T23:13:38.307Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7d/9fbf919768368d3f8a4f6c692cf2aa61e482b2b81ec6a298ace4cbf02480/regex-2026.5.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b96350aa424e79d4fd6b567b344dcbe2b2d6bfc48dfe7717587e1fa6d43da6ff", size = 292314, upload-time = "2026-05-09T23:13:40.353Z" }, + { url = "https://files.pythonhosted.org/packages/e2/6c/e41bfeecb589716843e7c4df09ba46ff2a42961457afece19059d85caeef/regex-2026.5.9-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8f3af7a4903c5c04a11a196a5aa75cdd7dd3f8508132f9fb3259d9f5908e3b88", size = 811681, upload-time = "2026-05-09T23:13:42.543Z" }, + { url = "https://files.pythonhosted.org/packages/87/83/a5c1c525fba0aa656e88ad0face0b1829788ef4c2fb6b26df58aa1151b84/regex-2026.5.9-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7e87577720152d2caae19fe2baaf1f8d5ca12091e9e229f03915c37d1e4b9178", size = 871135, upload-time = "2026-05-09T23:13:44.326Z" }, + { url = "https://files.pythonhosted.org/packages/18/d4/80882e799e440dd878b0979cbebf8fa4d54624a332c83037c7a701649e3f/regex-2026.5.9-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c8b9b9d294cfea3cd19c718ade7cc93492b2c4991abd9a68d0b3477ae6d8e100", size = 917265, upload-time = "2026-05-09T23:13:47.295Z" }, + { url = "https://files.pythonhosted.org/packages/ae/ff/8db60211e2286e396aad7dc7725356c502bff0901ea05bd6cdc2e1a042b9/regex-2026.5.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:728d8bfd28a8845c8b6bc5dc7ce010453d206396786c0765c2740cb65f37791e", size = 816311, upload-time = "2026-05-09T23:13:49.885Z" }, + { url = "https://files.pythonhosted.org/packages/4c/47/742ef579c61730f8d268e5cf1f9ce0e37e2ea041ad0f5644724f2378e463/regex-2026.5.9-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7e30b874d341fac767d7df5a0870540541c2c054b80cfaac116e8d367a8a7ff2", size = 785498, upload-time = "2026-05-09T23:13:52.25Z" }, + { url = "https://files.pythonhosted.org/packages/7f/ab/cb0999802dcb0fb95b1ab005e8d4163d8afdd67efc2cb6b6630ac13f8cb1/regex-2026.5.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fd190e88a895a8901325fad284a3f74ea52b1da8525b76cc811fa9b1edf0ce2b", size = 801348, upload-time = "2026-05-09T23:13:54.127Z" }, + { url = "https://files.pythonhosted.org/packages/7d/62/8ca59a24c55bc34d166eefaf3717bd77772f329fdbf984d86581e0a3571c/regex-2026.5.9-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:8e76e8161ad00694cfce6767d5dea860c6391ac5b83e5c3a39661e696f11fc7e", size = 866493, upload-time = "2026-05-09T23:13:56.067Z" }, + { url = "https://files.pythonhosted.org/packages/8d/3d/30f2ae62cef3278bb5bb821f467277a55fb73f01032cf85997e15e8289a8/regex-2026.5.9-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:ddda5340e6c01a293027dd46232fa79eaff1b48058ce7a98f572b6445b088041", size = 772811, upload-time = "2026-05-09T23:13:57.867Z" }, + { url = "https://files.pythonhosted.org/packages/d8/ae/7d2089bcd78ad0c0161bc684339df50032acb438a7bd3305e7ddb1193cec/regex-2026.5.9-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:205109e96b3cf5adf8f4cd62bedde9487feb282b9497a3535451e5a24cd706a0", size = 856584, upload-time = "2026-05-09T23:13:59.679Z" }, + { url = "https://files.pythonhosted.org/packages/a9/29/92ff47f75990131ea4f24ba17819e5a9d141e10819807e09addd73409af6/regex-2026.5.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dfbe4579b9f08036aa7d101d1835437a20783574ac66327e6b29b4018a138081", size = 803453, upload-time = "2026-05-09T23:14:01.978Z" }, + { url = "https://files.pythonhosted.org/packages/04/99/eff29f1037dcab36702c9ee5d6858cf1ce2336ea8ea2987f64245b99ea5e/regex-2026.5.9-cp313-cp313t-win32.whl", hash = "sha256:ed2c9e8068b614c574d8d30e543d617cf5379b0535d46f97ef00e904745a08b5", size = 269951, upload-time = "2026-05-09T23:14:03.661Z" }, + { url = "https://files.pythonhosted.org/packages/0e/9d/8870b8981d27b22cda77bb26a5ac7ebfa9c7d9e0dea195a834a82380e748/regex-2026.5.9-cp313-cp313t-win_amd64.whl", hash = "sha256:b46b0f094dc1d3b90356c85a0bd2c9bafc4a6a190b9d6f8ddd5a033b6e088ed4", size = 281240, upload-time = "2026-05-09T23:14:05.56Z" }, + { url = "https://files.pythonhosted.org/packages/72/b1/3379415e8f135c13ac551353397cc4fe97b4978f3cac73c5fcbcded548b8/regex-2026.5.9-cp313-cp313t-win_arm64.whl", hash = "sha256:872acc074bd29ffc9913ecdfedf6ea77502312ca44a4aa0d3779089c6069d8de", size = 272383, upload-time = "2026-05-09T23:14:07.843Z" }, +] + +[[package]] +name = "requests" +version = "2.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, +] + +[[package]] +name = "rjsmin" +version = "1.2.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/59/16/14288d309d0f42c6586440c47bf6ec1a880218f698f30293fa3782db4008/rjsmin-1.2.5.tar.gz", hash = "sha256:a3f8040b0273dec773e0e807e86a4d0a9535516c0a0a35aa1bb6de6e15bb1f09", size = 427399, upload-time = "2025-10-12T10:50:27.422Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/83/30c8a74c3f837d22ac14a20da562f2922cda87228cb88553dbe967f10d89/rjsmin-1.2.5-cp311-cp311-manylinux1_i686.whl", hash = "sha256:82bac9710030b61dd1cf442724431d29b1fec7cd708c541cb2042e38763fd610", size = 31978, upload-time = "2025-10-12T10:50:42.312Z" }, + { url = "https://files.pythonhosted.org/packages/84/7c/e215e4e52f4b0f354731bd808292c5cb01c2eeba8cb310e3f099ab97d479/rjsmin-1.2.5-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:5626644872f3ad10b8334ec3383aad0906d36a085c04c608a400ed30be4d03a4", size = 31782, upload-time = "2025-10-12T10:50:43.471Z" }, + { url = "https://files.pythonhosted.org/packages/2a/e7/d5590391d2c98389ab119e4500a6d96cf6174159295d9a2cc34dec2eb73d/rjsmin-1.2.5-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:2d0b8aaa98e51c8ae176b9a94e91f19d3043d7d328431d3d2c459b57a90c0c87", size = 32369, upload-time = "2025-10-12T10:50:45.222Z" }, + { url = "https://files.pythonhosted.org/packages/7d/ad/81bcfe46cf42ea3c8a0b9505654f413c06932c8ea43556b83404a016ddb6/rjsmin-1.2.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0df172044912ca2f5f04c711ded75c784fba8dc6c7a1f7f831ac831562102aa2", size = 36091, upload-time = "2025-10-12T10:50:46.243Z" }, + { url = "https://files.pythonhosted.org/packages/e3/9e/833455223063a52ee0b0aa2cef44080677db840d9fbae5c78f027547af5a/rjsmin-1.2.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:a9208911d2f04dc3bec33df7486dbd7ecfc900b0d1ead9841bbd94a382f33f00", size = 36232, upload-time = "2025-10-12T10:50:47.277Z" }, + { url = "https://files.pythonhosted.org/packages/3c/21/e4ffb7b5c3313f9d5137867f113ec9241b84e50e1d69ce979efdbffe07ed/rjsmin-1.2.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8b7cf8ce9022d381bfa700ae116e5f78698f486558a0fe23c57f158ba3229629", size = 36168, upload-time = "2025-10-12T10:50:48.611Z" }, + { url = "https://files.pythonhosted.org/packages/d6/f3/143727b02b5c5fdc08335be8b2184f19b762ee7d184bb4459e94ed668ae0/rjsmin-1.2.5-cp312-cp312-manylinux1_i686.whl", hash = "sha256:d8b6ddaaa78fd2d3243da11c13033946d211d37729c64814cefe32dba02d9921", size = 31838, upload-time = "2025-10-12T10:50:49.553Z" }, + { url = "https://files.pythonhosted.org/packages/13/dc/72ca27c526925e88e273c3af6848777b289e4eb0854afcd7c6dbbfd4d196/rjsmin-1.2.5-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:2f46270969613de2292a7f747c31cabd9354cc49f6cd23f9cc8688d3af9f889e", size = 31795, upload-time = "2025-10-12T10:50:50.459Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/f8bfe2f6949b31adb66563ceca84d9d38f32867aad303cf4311b12534487/rjsmin-1.2.5-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:6e7b1bb52665894d8cba84144ee91723475948d5d1a54d7f0b25a1cdce8c5921", size = 32085, upload-time = "2025-10-12T10:50:51.704Z" }, + { url = "https://files.pythonhosted.org/packages/df/d0/239d16374e9e3e0aba2e4924175f2401f21126a1c2df83f5fb18af3ec808/rjsmin-1.2.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f68dd62707d62fc1771be4407892cb932d48fa19a51e7a0e35a11b00e427e3f7", size = 35995, upload-time = "2025-10-12T10:50:52.714Z" }, + { url = "https://files.pythonhosted.org/packages/43/61/179f5ef72a688cf290acdbcdfcbacc4af297751af1b10d4097af03cb31eb/rjsmin-1.2.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:73b6b099f8afb8aa7ff9ddfbfd4d6ae6540dfe7630833a04a26f1d9f67528eaf", size = 36200, upload-time = "2025-10-12T10:50:54.065Z" }, + { url = "https://files.pythonhosted.org/packages/c9/3b/42bb50ee0bb3a4baa8f435ad6bfca48ed5a5b46e4b614e1f4d320ce729d2/rjsmin-1.2.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:372d57835014a332dbf227b6de284ea3ee052600ab0f176df959c75a33f0690e", size = 36110, upload-time = "2025-10-12T10:50:55.393Z" }, + { url = "https://files.pythonhosted.org/packages/14/c3/0e1c211625d44f6ccad2286547ec420d07c5ca8a82098795deb2a96467e4/rjsmin-1.2.5-cp313-cp313-manylinux1_i686.whl", hash = "sha256:2967e468df0bedaff71693b96ff42b46805cc7027146323a8e47c85c5ea53ac5", size = 31883, upload-time = "2025-10-12T10:50:56.329Z" }, + { url = "https://files.pythonhosted.org/packages/f3/49/58c90614c9df3e074be3e5f960cfadc9f9ab501659b7fca3bb8326d27b07/rjsmin-1.2.5-cp313-cp313-manylinux1_x86_64.whl", hash = "sha256:3d68251d1f68c07500f1c062d9dfa16e799f8971aed1312b9584739c03d9f44b", size = 31785, upload-time = "2025-10-12T10:50:57.689Z" }, + { url = "https://files.pythonhosted.org/packages/88/aa/bfc350c353d2eada2eb125ad13d1d1f5a0f6543a96d0fe8759cd440c1921/rjsmin-1.2.5-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:3bce037bc2ed784143f90637230c0dad6b59d18e01d66ec41ab0fc988cb98266", size = 32104, upload-time = "2025-10-12T10:50:58.78Z" }, + { url = "https://files.pythonhosted.org/packages/94/fc/eead6c42da1c51d6d3200411debbc5f03bf3e2d5e5061b39e8953484d1b6/rjsmin-1.2.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:d206f730a003cbfc8ba5d70e06e9d20318d5dfc2d9220f6dab4fc708b621de15", size = 35718, upload-time = "2025-10-12T10:51:00.146Z" }, + { url = "https://files.pythonhosted.org/packages/71/ec/10537f3280cdb3eb712746677a9601d40760509f876ab107f2cbdcce56c0/rjsmin-1.2.5-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:9ec9e902dfe04e791d056eb649805e4dc8a480c170e296b2dfbffb646425acdd", size = 35980, upload-time = "2025-10-12T10:51:02.53Z" }, + { url = "https://files.pythonhosted.org/packages/8c/0e/11406ff7c711e3c7d4ec30a2f7998293bf157b9e0451a5f6ce6b8505e1b6/rjsmin-1.2.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7926b946de481766d4da5f669da2e3ce8491e750f32f48745d7413a92c810ead", size = 35869, upload-time = "2025-10-12T10:51:03.616Z" }, + { url = "https://files.pythonhosted.org/packages/71/8e/8102b9324a3b1a7ad5262824537ee7dad18325d457ff0b3806c9f88d7bfa/rjsmin-1.2.5-cp313-cp313t-manylinux1_i686.whl", hash = "sha256:57d0935b2675644d80ea33b611d6752a33af8e1a62baa5adff0a0b8d43981732", size = 33656, upload-time = "2025-10-12T10:51:04.656Z" }, + { url = "https://files.pythonhosted.org/packages/3d/4a/94dbe6a90b9c5ab9dfdcfe2e8ae2c106c990c96f759c6396621eabcfe503/rjsmin-1.2.5-cp313-cp313t-manylinux1_x86_64.whl", hash = "sha256:d283452b6684bd6f422eea783e5f5f16b564727652398bb71ad5adc001613765", size = 33500, upload-time = "2025-10-12T10:51:05.808Z" }, + { url = "https://files.pythonhosted.org/packages/9a/f7/8f8a6cf1b1394ce61ac0a491dbf22237734d472e80feea715ec1ca580de8/rjsmin-1.2.5-cp313-cp313t-manylinux2014_aarch64.whl", hash = "sha256:8a3c43e43c06afa7e8a36b22a1247ae58d2eebfe0aea7af5cd83f68fd7360ddc", size = 34125, upload-time = "2025-10-12T10:51:06.829Z" }, + { url = "https://files.pythonhosted.org/packages/e2/b0/7562103d5241a7b57cf93e7047ee00889b67eabb99df0af03105f2224142/rjsmin-1.2.5-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:85aa826fca5aaf6f0f0f287f986e0f79c0f8953bab5090fed17a4f35f7ada65a", size = 37468, upload-time = "2025-10-12T10:51:07.936Z" }, + { url = "https://files.pythonhosted.org/packages/44/80/0a56f415aa2d92898388df8447270c3813c13eefdace54d44d12b21aba39/rjsmin-1.2.5-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:d68cb778e25393adb84e1844aac6f132f72055a6cf4463bae560858300ca500c", size = 37850, upload-time = "2025-10-12T10:51:09.28Z" }, + { url = "https://files.pythonhosted.org/packages/bb/eb/9c3dc7763519ed69a50641be920f3f40c286022d7ebd5a62fa4434996806/rjsmin-1.2.5-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:a86825ff7846a5c2f21a71d669b96d1b52237fb668f0243fa4f4f40a2ad93ff7", size = 37645, upload-time = "2025-10-12T10:51:10.304Z" }, +] + +[[package]] +name = "sentry-sdk" +version = "2.63.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/c8/b3c970a5b186722d276cd40a05b3254e03bccc0208560aff20f612e018e8/sentry_sdk-2.63.0.tar.gz", hash = "sha256:2a1502bf864769275dbc8c2c9fc7a0f7f5e18358180b615d262d13a31ffba216", size = 912449, upload-time = "2026-06-16T12:45:57.553Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/57/cb205f7d93373120f666b9c5736dc0815524d96a9b278e7a728f018dc22a/sentry_sdk-2.63.0-py3-none-any.whl", hash = "sha256:3a9b5ddd403f79eb73bd670f75f04485819db53d28f76ced7bc09041cb0dfd6a", size = 495950, upload-time = "2026-06-16T12:45:55.819Z" }, +] + +[package.optional-dependencies] +django = [ + { name = "django" }, +] + +[[package]] +name = "serveradmin" +source = { editable = "packages/serveradmin" } +dependencies = [ + { name = "adminapi" }, + { name = "dateparser" }, + { name = "django" }, + { name = "django-compressor" }, + { name = "django-environ" }, + { name = "django-netfields" }, + { name = "pillow" }, + { name = "psycopg2-binary" }, + { name = "typing-extensions" }, +] + +[package.optional-dependencies] +production = [ + { name = "sentry-sdk", extra = ["django"] }, +] + +[package.metadata] +requires-dist = [ + { name = "adminapi", editable = "packages/adminapi" }, + { name = "dateparser", specifier = "~=1.1" }, + { name = "django", specifier = "~=5.2" }, + { name = "django-compressor", specifier = "~=4.6" }, + { name = "django-environ", specifier = "<1.0.0" }, + { name = "django-netfields", specifier = "<2.0.0" }, + { name = "pillow", specifier = "~=10.0" }, + { name = "psycopg2-binary", specifier = "~=2.9" }, + { name = "sentry-sdk", extras = ["django"], marker = "extra == 'production'" }, + { name = "typing-extensions" }, +] +provides-extras = ["production"] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "snowballstemmer" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/f8/0a71edf031f03c40db17503cb8ca78a69a171254e568e7db241b0ab57ea1/snowballstemmer-3.1.1.tar.gz", hash = "sha256:e07bbc54a0d798fe6010a12398422e62a8bfbba95c394fd0956ef58cb4d3e260", size = 123314, upload-time = "2026-06-03T00:56:40.194Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl", hash = "sha256:7e207fa178741da09cdee59d3ecec3827ad5f92b1fc5c9ff3755b639f71f5752", size = 104164, upload-time = "2026-06-03T00:56:38.614Z" }, +] + +[[package]] +name = "sphinx" +version = "7.4.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "alabaster" }, + { name = "babel" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "docutils" }, + { name = "imagesize" }, + { name = "jinja2" }, + { name = "packaging" }, + { name = "pygments" }, + { name = "requests" }, + { name = "snowballstemmer" }, + { name = "sphinxcontrib-applehelp" }, + { name = "sphinxcontrib-devhelp" }, + { name = "sphinxcontrib-htmlhelp" }, + { name = "sphinxcontrib-jsmath" }, + { name = "sphinxcontrib-qthelp" }, + { name = "sphinxcontrib-serializinghtml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/be/50e50cb4f2eff47df05673d361095cafd95521d2a22521b920c67a372dcb/sphinx-7.4.7.tar.gz", hash = "sha256:242f92a7ea7e6c5b406fdc2615413890ba9f699114a9c09192d7dfead2ee9cfe", size = 8067911, upload-time = "2024-07-20T14:46:56.059Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/ef/153f6803c5d5f8917dbb7f7fcf6d34a871ede3296fa89c2c703f5f8a6c8e/sphinx-7.4.7-py3-none-any.whl", hash = "sha256:c2419e2135d11f1951cd994d6eb18a1835bd8fdd8429f9ca375dc1f3281bd239", size = 3401624, upload-time = "2024-07-20T14:46:52.142Z" }, +] + +[[package]] +name = "sphinx-rtd-theme" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "sphinx" }, + { name = "sphinxcontrib-jquery" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fe/33/2a35a9cdbfda9086bda11457bcc872173ab3565b16b6d7f6b3efaa6dc3d6/sphinx_rtd_theme-2.0.0.tar.gz", hash = "sha256:bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b", size = 2785005, upload-time = "2023-11-28T04:14:03.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/46/00fda84467815c29951a9c91e3ae7503c409ddad04373e7cfc78daad4300/sphinx_rtd_theme-2.0.0-py2.py3-none-any.whl", hash = "sha256:ec93d0856dc280cf3aee9a4c9807c60e027c7f7b461b77aeffed682e68f0e586", size = 2824721, upload-time = "2023-11-28T04:13:59.589Z" }, +] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/6e/b837e84a1a704953c62ef8776d45c3e8d759876b4a84fe14eba2859106fe/sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1", size = 20053, upload-time = "2024-07-29T01:09:00.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5", size = 119300, upload-time = "2024-07-29T01:08:58.99Z" }, +] + +[[package]] +name = "sphinxcontrib-devhelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/d2/5beee64d3e4e747f316bae86b55943f51e82bb86ecd325883ef65741e7da/sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad", size = 12967, upload-time = "2024-07-29T01:09:23.417Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2", size = 82530, upload-time = "2024-07-29T01:09:21.945Z" }, +] + +[[package]] +name = "sphinxcontrib-htmlhelp" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/93/983afd9aa001e5201eab16b5a444ed5b9b0a7a010541e0ddfbbfd0b2470c/sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9", size = 22617, upload-time = "2024-07-29T01:09:37.889Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8", size = 98705, upload-time = "2024-07-29T01:09:36.407Z" }, +] + +[[package]] +name = "sphinxcontrib-jquery" +version = "4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/de/f3/aa67467e051df70a6330fe7770894b3e4f09436dea6881ae0b4f3d87cad8/sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a", size = 122331, upload-time = "2023-03-14T15:01:01.944Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/85/749bd22d1a68db7291c89e2ebca53f4306c3f205853cf31e9de279034c3c/sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae", size = 121104, upload-time = "2023-03-14T15:01:00.356Z" }, +] + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/e8/9ed3830aeed71f17c026a07a5097edcf44b692850ef215b161b8ad875729/sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8", size = 5787, upload-time = "2019-01-21T16:10:16.347Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178", size = 5071, upload-time = "2019-01-21T16:10:14.333Z" }, +] + +[[package]] +name = "sphinxcontrib-qthelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/68/bc/9104308fc285eb3e0b31b67688235db556cd5b0ef31d96f30e45f2e51cae/sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab", size = 17165, upload-time = "2024-07-29T01:09:56.435Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb", size = 88743, upload-time = "2024-07-29T01:09:54.885Z" }, +] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3b/44/6716b257b0aa6bfd51a1b31665d1c205fb12cb5ad56de752dfa15657de2f/sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d", size = 16080, upload-time = "2024-07-29T01:10:09.332Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331", size = 92072, upload-time = "2024-07-29T01:10:08.203Z" }, +] + +[[package]] +name = "sqlparse" +version = "0.5.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/76/437d71068094df0726366574cf3432a4ed754217b436eb7429415cf2d480/sqlparse-0.5.5.tar.gz", hash = "sha256:e20d4a9b0b8585fdf63b10d30066c7c94c5d7a7ec47c889a2d83a3caa93ff28e", size = 120815, upload-time = "2025-12-19T07:17:45.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/4b/359f28a903c13438ef59ebeee215fb25da53066db67b305c125f1c6d2a25/sqlparse-0.5.5-py3-none-any.whl", hash = "sha256:12a08b3bf3eec877c519589833aed092e2444e68240a3577e8e26148acc7b1ba", size = 46138, upload-time = "2025-12-19T07:17:46.573Z" }, +] + +[[package]] +name = "tblib" +version = "3.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f4/8a/14c15ae154895cc131174f858c707790d416c444fc69f93918adfd8c4c0b/tblib-3.2.2.tar.gz", hash = "sha256:e9a652692d91bf4f743d4a15bc174c0b76afc750fe8c7b6d195cc1c1d6d2ccec", size = 35046, upload-time = "2025-11-12T12:21:16.572Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/be/5d2d47b1fb58943194fb59dcf222f7c4e35122ec0ffe8c36e18b5d728f0b/tblib-3.2.2-py3-none-any.whl", hash = "sha256:26bdccf339bcce6a88b2b5432c988b266ebbe63a4e593f6b578b1d2e723d2b76", size = 12893, upload-time = "2025-11-12T12:21:14.407Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "tzdata" +version = "2026.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/19/1b9b0e29f30c6d35cb345486df41110984ea67ae69dddbc0e8a100999493/tzdata-2026.2.tar.gz", hash = "sha256:9173fde7d80d9018e02a662e168e5a2d04f87c41ea174b139fbef642eda62d10", size = 198254, upload-time = "2026-04-24T15:22:08.651Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl", hash = "sha256:bbe9af844f658da81a5f95019480da3a89415801f6cc966806612cc7169bffe7", size = 349321, upload-time = "2026-04-24T15:22:05.876Z" }, +] + +[[package]] +name = "tzlocal" +version = "5.4.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/48/55/15e2340963d2bfedcc6042da3911438fd336f8ae96b65bdbe3a29766da0c/tzlocal-5.4.3.tar.gz", hash = "sha256:3a8c9bc18cf47e1dcde252ea0e6a72a6cde320a400b6ac6db1f1f8cccd553c00", size = 30873, upload-time = "2026-06-17T04:17:41.764Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/28/fc144409c71569e928585f8f3c629d80d1ca3ef40175e9222f01588f98c9/tzlocal-5.4.3-py3-none-any.whl", hash = "sha256:24ce97bb58e2a973f7640ec2553ab4e6f6d5a0d0d1aa9dc43bca21d89e1feb82", size = 18039, upload-time = "2026-06-17T04:17:40.027Z" }, +] + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] + +[[package]] +name = "werkzeug" +version = "3.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dd/b2/381be8cfdee792dd117872481b6e378f85c957dd7c5bca38897b08f765fd/werkzeug-3.1.8.tar.gz", hash = "sha256:9bad61a4268dac112f1c5cd4630a56ede601b6ed420300677a869083d70a4c44", size = 875852, upload-time = "2026-04-02T18:49:14.268Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/8c/2e650f2afeb7ee576912636c23ddb621c91ac6a98e66dc8d29c3c69446e1/werkzeug-3.1.8-py3-none-any.whl", hash = "sha256:63a77fb8892bf28ebc3178683445222aa500e48ebad5ec77b0ad80f8726b1f50", size = 226459, upload-time = "2026-04-02T18:49:12.72Z" }, +]