From 6f35ebbfa812f8416590a9f2cea47d4b9a0b8ceb Mon Sep 17 00:00:00 2001 From: eroan-marie Date: Thu, 3 Oct 2024 17:13:31 +0200 Subject: [PATCH 1/3] feat: add remote desktop, nbproxy and vscode + renamed ml-notebook --- {ml-notebook => .ml-notebook}/Dockerfile | 0 {ml-notebook => .ml-notebook}/apt.txt | 0 .../conda-linux-64.lock | 0 {ml-notebook => .ml-notebook}/conda-lock.yml | 0 {ml-notebook => .ml-notebook}/environment.yml | 0 .../jupyter_notebook_config.py | 0 {ml-notebook => .ml-notebook}/packages.txt | 0 {ml-notebook => .ml-notebook}/start | 0 .../virtual-packages.yml | 0 Makefile | 24 +- base-image/Dockerfile | 25 +- base-notebook/apt.txt | 19 + base-notebook/conda-linux-64.lock | 62 +- base-notebook/conda-lock.yml | 4294 ++++++++--------- base-notebook/environment.yml | 4 +- base-notebook/packages.txt | 38 +- .../resources/branding/desktop/wallpaper.png | Bin 0 -> 15319 bytes .../xfce-perchannel-xml/xfce4-desktop.xml | 104 + .../xfce-perchannel-xml/xfce4-panel.xml | 42 + base-notebook/resources/layer-cleanup.sh | 30 + base-notebook/resources/nbproxy/install.sh | 9 + .../nbproxy/jupyter_proxy/__init__.py | 161 + .../nbproxy/jupyter_proxy/icons/rstudio.svg | 1 + .../nbproxy/jupyter_proxy/icons/vscode.svg | 61 + .../nbproxy/jupyter_proxy/icons/xfce.svg | 96 + base-notebook/resources/nbproxy/package.json | 7 + base-notebook/resources/nbproxy/setup.py | 26 + base-notebook/resources/vnc/install.sh | 57 + .../vnc/start-notebook-genvnctoken.sh | 12 + base-notebook/resources/vnc/ui.js | 1991 ++++++++ base-notebook/resources/vnc/vnc.html | 613 +++ base-notebook/resources/vscode/install.sh | 40 + .../resources/vscode/start-notebook-vscode.sh | 18 + .../resources/vscode/user-settings.py | 24 + base-notebook/start | 12 + 35 files changed, 5554 insertions(+), 2216 deletions(-) rename {ml-notebook => .ml-notebook}/Dockerfile (100%) rename {ml-notebook => .ml-notebook}/apt.txt (100%) rename {ml-notebook => .ml-notebook}/conda-linux-64.lock (100%) rename {ml-notebook => .ml-notebook}/conda-lock.yml (100%) rename {ml-notebook => .ml-notebook}/environment.yml (100%) rename {ml-notebook => .ml-notebook}/jupyter_notebook_config.py (100%) rename {ml-notebook => .ml-notebook}/packages.txt (100%) rename {ml-notebook => .ml-notebook}/start (100%) rename {ml-notebook => .ml-notebook}/virtual-packages.yml (100%) create mode 100644 base-notebook/apt.txt create mode 100644 base-notebook/resources/branding/desktop/wallpaper.png create mode 100755 base-notebook/resources/branding/desktop/xfce-perchannel-xml/xfce4-desktop.xml create mode 100755 base-notebook/resources/branding/desktop/xfce-perchannel-xml/xfce4-panel.xml create mode 100644 base-notebook/resources/layer-cleanup.sh create mode 100644 base-notebook/resources/nbproxy/install.sh create mode 100644 base-notebook/resources/nbproxy/jupyter_proxy/__init__.py create mode 100644 base-notebook/resources/nbproxy/jupyter_proxy/icons/rstudio.svg create mode 100644 base-notebook/resources/nbproxy/jupyter_proxy/icons/vscode.svg create mode 100644 base-notebook/resources/nbproxy/jupyter_proxy/icons/xfce.svg create mode 100644 base-notebook/resources/nbproxy/package.json create mode 100644 base-notebook/resources/nbproxy/setup.py create mode 100644 base-notebook/resources/vnc/install.sh create mode 100644 base-notebook/resources/vnc/start-notebook-genvnctoken.sh create mode 100644 base-notebook/resources/vnc/ui.js create mode 100644 base-notebook/resources/vnc/vnc.html create mode 100644 base-notebook/resources/vscode/install.sh create mode 100644 base-notebook/resources/vscode/start-notebook-vscode.sh create mode 100644 base-notebook/resources/vscode/user-settings.py diff --git a/ml-notebook/Dockerfile b/.ml-notebook/Dockerfile similarity index 100% rename from ml-notebook/Dockerfile rename to .ml-notebook/Dockerfile diff --git a/ml-notebook/apt.txt b/.ml-notebook/apt.txt similarity index 100% rename from ml-notebook/apt.txt rename to .ml-notebook/apt.txt diff --git a/ml-notebook/conda-linux-64.lock b/.ml-notebook/conda-linux-64.lock similarity index 100% rename from ml-notebook/conda-linux-64.lock rename to .ml-notebook/conda-linux-64.lock diff --git a/ml-notebook/conda-lock.yml b/.ml-notebook/conda-lock.yml similarity index 100% rename from ml-notebook/conda-lock.yml rename to .ml-notebook/conda-lock.yml diff --git a/ml-notebook/environment.yml b/.ml-notebook/environment.yml similarity index 100% rename from ml-notebook/environment.yml rename to .ml-notebook/environment.yml diff --git a/ml-notebook/jupyter_notebook_config.py b/.ml-notebook/jupyter_notebook_config.py similarity index 100% rename from ml-notebook/jupyter_notebook_config.py rename to .ml-notebook/jupyter_notebook_config.py diff --git a/ml-notebook/packages.txt b/.ml-notebook/packages.txt similarity index 100% rename from ml-notebook/packages.txt rename to .ml-notebook/packages.txt diff --git a/ml-notebook/start b/.ml-notebook/start similarity index 100% rename from ml-notebook/start rename to .ml-notebook/start diff --git a/ml-notebook/virtual-packages.yml b/.ml-notebook/virtual-packages.yml similarity index 100% rename from ml-notebook/virtual-packages.yml rename to .ml-notebook/virtual-packages.yml diff --git a/Makefile b/Makefile index 15561bb1..af3da1eb 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +-include .env + # Makefile for convenience, (doesn't look for command outputs) .PHONY: all all: base-image base-notebook pangeo-notebook ml-notebook pytorch-notebook @@ -6,35 +8,27 @@ TESTDIR=/srv/test .PHONY: base-image base-image : cd base-image ; \ - docker build -t pangeo/base-image:master --progress=plain --platform linux/amd64,linux/arm64 . + docker build -t pangeo/base-image:master --progress=plain --platform linux/amd64 . .PHONY: base-notebook base-notebook : base-image cd base-notebook ; \ - conda-lock lock -p linux-64 -p linux-aarch64 -p osx-64 -p osx-arm64; \ + conda-lock lock -f environment.yml -p linux-64; \ conda-lock render -k explicit -p linux-64; \ ../generate-packages-list.py conda-linux-64.lock > packages.txt; \ - docker build -t pangeo/base-notebook:master . --progress=plain --platform linux/amd64,linux/arm64 ; \ - docker run -w $(TESTDIR) -v $(PWD):$(TESTDIR) pangeo/base-notebook:master ./run_tests.sh base-notebook + docker build -t pangeo/base-notebook-datalabs:master . --progress=plain --platform linux/amd64; \ + docker run -w $(TESTDIR) -v $(PWD):$(TESTDIR) pangeo/base-notebook-datalabs:master ./run_tests.sh base-notebook .PHONY: pangeo-notebook pangeo-notebook : base-image cd pangeo-notebook ; \ - conda-lock lock -f environment.yml -f ../base-notebook/environment.yml -p linux-64 -p linux-aarch64 -p osx-64 -p osx-arm64; \ + cp -r ../base-notebook/resources . ; \ + conda-lock lock -f environment.yml -f ../base-notebook/environment.yml -f ../base-notebook/environment.yml -p linux-64; \ conda-lock render -k explicit -p linux-64; \ ../generate-packages-list.py conda-linux-64.lock > packages.txt; \ - docker build -t pangeo/pangeo-notebook:master . --progress=plain --platform linux/amd64,linux/arm64 ; \ + docker build -t pangeo/pangeo-notebook:master . --progress=plain --platform linux/amd64; \ docker run -w $(TESTDIR) -v $(PWD):$(TESTDIR) pangeo/pangeo-notebook:master ./run_tests.sh pangeo-notebook -.PHONY: ml-notebook -ml-notebook : base-image - cd ml-notebook ; \ - conda-lock lock -f environment.yml -f ../pangeo-notebook/environment.yml -f ../base-notebook/environment.yml -p linux-64; \ - conda-lock render -k explicit -p linux-64; \ - ../generate-packages-list.py conda-linux-64.lock > packages.txt; \ - docker build -t pangeo/ml-notebook:master . ; \ - docker run -w $(TESTDIR) -v $(PWD):$(TESTDIR) pangeo/ml-notebook:master ./run_tests.sh ml-notebook - .PHONY: pytorch-notebook pytorch-notebook : base-image cd pytorch-notebook ; \ diff --git a/base-image/Dockerfile b/base-image/Dockerfile index 7927e1e9..5f89a9c5 100644 --- a/base-image/Dockerfile +++ b/base-image/Dockerfile @@ -140,7 +140,7 @@ ONBUILD RUN echo "Checking for 'jupyter_notebook_config.py'..." \ && cp jupyter_notebook_config.py /etc/jupyter \ ; fi -ONBUILD USER ${NB_USER} +# ONBUILD USER ${NB_USER} # We want to keep our images as reproducible as possible. If a lock # file with exact versions of all required packages is present, we use @@ -184,6 +184,27 @@ ONBUILD RUN echo "Checking for pip 'requirements.txt'..." \ ${NB_PYTHON_PREFIX}/bin/pip install --no-cache -r requirements.txt \ ; fi +ONBUILD COPY resources/layer-cleanup.sh /usr/local/bin +ONBUILD RUN chmod +x /usr/local/bin/layer-cleanup.sh + +ONBUILD RUN for script in $(find "resources" -type f -name "install.sh"); do \ + chmod +x "$script"; \ + echo "Executing $script"; \ + bash "$script"; \ + layer-cleanup.sh; \ + done + +# ONBUILD RUN echo "Checking for 'resources/install.sh'..." && \ +# if ls resources/install-*.sh 1> /dev/null 2>&1; then \ +# for file in resources/**/install.sh; do \ +# echo "Executing $file" && \ +# chmod +x "$file" && \ +# bash "$file" && \ +# layer-cleanup.sh \ +# rm -f "$file"; \ +# done \ +# fi + # If a postBuild file exists, run it! # After it's done, we try to remove any possible cruft commands there # leave behind under $HOME - particularly stuff that jupyterlab extensions @@ -210,4 +231,4 @@ ONBUILD RUN echo "Checking for 'start'..." \ chmod +x start \ && cp start /srv/start \ ; fi -# ---------------------- +# ---------------------- \ No newline at end of file diff --git a/base-notebook/apt.txt b/base-notebook/apt.txt new file mode 100644 index 00000000..10fdb4a0 --- /dev/null +++ b/base-notebook/apt.txt @@ -0,0 +1,19 @@ +build-essential +curl +dfc +file +git +htop +jq +less +ncdu +ranger +rclone +rsync +silversearcher-ag +software-properties-common +tig +tmux +tree +unzip +vim \ No newline at end of file diff --git a/base-notebook/conda-linux-64.lock b/base-notebook/conda-linux-64.lock index a93a2746..cd133a1b 100644 --- a/base-notebook/conda-linux-64.lock +++ b/base-notebook/conda-linux-64.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 78ece3f2bd471d336d66cf9fdd762eeece8893fbb969865aa14315e0771b0fb7 +# input_hash: a391805305022b6c10923fe54a757a26bbbff879f97f299121d085730c04fe10 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda#c27d1c142233b5bc9ca570c6e2e0c244 @@ -16,10 +16,11 @@ https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.3-h5888daf_0.conda# https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h69a702a_1.conda#1efc0ad219877a73ef977af7dbb51f17 https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_1.conda#10a0cef64b784d6ab6da50ebca4e984d https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.1.0-hc0a3c3a_1.conda#9dbb9699ea467983ba8a4ba89b08b066 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda#edb0dca6bc32e4f4789199455a1dbeb8 https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.2-hb9d3cd8_0.conda#4d638782050ab6faa27275bed57e9b4e https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda#b3c17d95b5a10c6e64a21fa17573e70e https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda#77cbc488235ebbaab2b6e912d3934bae -https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-hb9d3cd8_2.conda#0f0d069428b003625074443455f25e0d +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda#8035c64cb77ed555e3f150b7b3972480 https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.4-hfd43aa1_1.conda#f301eb944d297fc879c441fffe461d8a https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.19-h756ea98_1.conda#5e08c385a1b8a79b52012b74653bbb99 https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.19-h756ea98_3.conda#bfe6623096906d2502c78ccdbfc3bc7a @@ -39,19 +40,23 @@ https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.1.0-h69a702a_1.co https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda#d66573916ffcf376178462f1b61c941e https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda#ea25936bb4080d843790b586850f82b8 https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda#30fd6e37fe21f86f4bd26d6ee73eeec7 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda#f4cc49d7aa68316213e4b12be35308d1 https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda#a587892d3c13b6621a6091be690dbca2 +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.1-hadc24fc_0.conda#36f79405ab16bf271edb55b213836dac +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda#1f5a58e686b13bcfde88b93f547d23fe https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-h4852527_1.conda#bd2598399a70bb86d8218e95548d735e https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2#ede4266dc02e875fe1ea77b25dd43747 https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda#b26e8aa824079e1be0294e7152ca4559 https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda#92ed62436b625154323d40d5f2f11dd7 https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda#5aa797f8787fe7a17d1b0821485b5adc -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda#57d7dc60e9325e3de37ff8dffd18e814 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda#70caf8bb6cf39a0b6b7efc885f51c0fe https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.3-h7b32b05_0.conda#d23b02fc1f3468a9249fa6593c61ac3a +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda#d453b98d9c83e71da0741bb0ff4d76bc https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.18-h33ff4e5_10.conda#22aa5c466581d925d596352d170778d3 +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda#8b189310083baabfb622af68fd9d3ae3 https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2#76bbff344f0134279f225174e9064c8f @@ -59,20 +64,15 @@ https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.b https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_1.conda#16cec94c5992d7f42ae3f9fa8b25df8d https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda#700ac6ea6d53d5510591c4344d5c989a -https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda#f4cc49d7aa68316213e4b12be35308d1 https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.27.5-h5b01275_2.conda#66ed3107adbdfc25ba70454ba11e6d1e https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-hbbce691_3.conda#f7f3ff4fff310fcac18769ce3f46e40a -https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.1-hadc24fc_0.conda#36f79405ab16bf271edb55b213836dac -https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda#1f5a58e686b13bcfde88b93f547d23fe https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda#dcb95c0a98ba9ff737f7ae482aef7833 https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda#318b08df404f9c9be5712aaa5a6f0bb0 https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda#6b7dcc7349efd123d493d2dbe85a045f -https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda#d453b98d9c83e71da0741bb0ff4d76bc https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda#4d056880988120e29d75bfff282e0f45 https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.3-h29ce20c_2.conda#d533baa7e43239591d5cc0233849c475 https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.10-h5e77a74_0.conda#947cd303444ea92a382a10e43bad1a3f -https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda#ae05ece66d3924ac3d48b4aa3fa96cec https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-h6565414_0.conda#80eaf80d84668fa5620ac9ec1b4bf56f @@ -80,7 +80,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda# https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.2-h690cf93_1.conda#0044701dd48af57d3d5467a704ef9ebd https://conda.anaconda.org/conda-forge/linux-64/python-3.12.6-hc5c86c4_2_cpython.conda#cebe1534cdebcac43acca87bec946b01 https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h77b4e00_3.conda#173a62ebf031d6d53462f8f657c800bb -https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.2-pyhd8ed1ab_0.conda#9a18fffdcfc7a5c0ec7aa7c5f680df5e +https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda#ec763b0a58960558ca0ad7255a51a237 https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-pyhd8ed1ab_1.conda#bcee238f99c34ca11add65c1684c5a2d https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda#6732fa52eb8e66e5afeb32db8701a791 https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.31-h57bd9a3_0.conda#83be3b5e072d88b76841cc02c6dd458e @@ -153,7 +153,7 @@ https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5 https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.1-pyhd8ed1ab_0.conda#2fcb582444635e2c402e8569bb94e039 https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda#af648b62462794649066366af4ecd5b0 https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda#3df84416a021220d8b5700c613af2dc5 -https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240906-pyhd8ed1ab_0.conda#07c483202a209cd23594b62b3451045e +https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda#3d326f8a2aa2d14d51d8c513426b5def https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda#ebe6952715e1d5eb567eeebf25250fa7 https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2#eb67e3cace64c66233e2d35949e20f92 https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda#0944dc65cb4a9b5b68522c3bb585d41c @@ -211,11 +211,11 @@ https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0 https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda#1505fc57c305c0a3174ea7aae0a0db25 https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda#b77d8c2313158e6e461ca0efb1c2c508 https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.28.3-h469002c_5.conda#32c889edce6ee7b9004dfce76c3f23d8 -https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hd126650_2.conda#36df3cf05459de5d0a41c77c4329634b -https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.7.0-h10ac4d7_1.conda#ab6d507ad16dbe2157920451d662e4a1 +https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.9.0-hd126650_0.conda#470dd41567c68110f0ca2268cd434d8a +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-ha3822c6_0.conda#d4a0f1f34459947781a6975beb505fa9 https://conda.anaconda.org/conda-forge/linux-64/cryptography-43.0.1-py312hda17c39_0.conda#1b673277378cb4c80a061a4c6f453b6d https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3 -https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda#a6b9a0158301e697e4d0a36a3d60e133 +https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda#b8e1901ef9a215fc41ecfb6bef7e0943 https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda#2a92e152208121afadf85a5e1f3a5f4d https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda#a0e4efb5f35786a05af4809a2fb1f855 https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda#a14218cfb29662b4a19ceb04e93e298e @@ -230,50 +230,52 @@ https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1 https://conda.anaconda.org/conda-forge/noarch/alembic-1.13.3-pyhd8ed1ab_0.conda#c81dc0d6ce99cf5c46e8b27dc37b5a75 https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4 https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.407-h9f1560d_0.conda#5c3dd49b04db05e0e884de48ff77ae24 -https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.12.0-hd2e3451_0.conda#61f1c193452f0daa582f39634627ea33 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h1d30c4a_0.conda#378dd9c6347c112d301421a00d6446a9 https://conda.anaconda.org/conda-forge/noarch/certipy-0.2.1-pyhd8ed1ab_0.conda#7566bb010833e59fb579ed520b9a7bc5 https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.0-py312h68727a3_2.conda#ff28f374b31937c048107521c814791e -https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.9.1-pyhd8ed1ab_0.conda#0bcf33226f8dbe7e2d6acefb99a7323f +https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.8.0-pyhd8ed1ab_0.conda#bf68bf9ff9a18f1b17aa8c817225aee0 https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda#7e9ac3faeebdbd7b53b462c41891e7f7 -https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda#0ed09f0c0f62f50b4b7dd2744af13629 +https://conda.anaconda.org/conda-forge/noarch/ipython-8.28.0-pyh707e725_0.conda#7142a7dff2a47e40b55d304decadd78a https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda#da304c192ad59975202859b367d0f6a2 https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868 https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda#8bce4f6caaf8c5448c7ac86d87e26b4b https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda#1eb533bb8eb2199e3fef3e4aa147319f https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda#6b55867f385dd762ed99ea687af32a69 -https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.11.0-h325d260_1.conda#11d926d1f4a75a1b03d1c053ca20424b +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-h0f25b8a_0.conda#7477b3a3f09927fbc47cd69e3f3430ea https://conda.anaconda.org/conda-forge/noarch/bokeh-3.5.2-pyhd8ed1ab_0.conda#38d785787ec83d0431b3855328395113 -https://conda.anaconda.org/conda-forge/noarch/distributed-2024.9.1-pyhd8ed1ab_0.conda#a9f1c72da2654a8ae07a33ed3975d328 +https://conda.anaconda.org/conda-forge/noarch/distributed-2024.8.0-pyhd8ed1ab_0.conda#f9a7fbaeb79d4b57d1ed742930b4eec4 https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda#b40131ab6a36ac2c09b7c57d4d3fbf99 -https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda#a022d34163147d16b27de86dc53e93fc +https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.3-pyhd8ed1ab_0.conda#a1323654e9d87b16642ef02a03b98b32 https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda#16b37612b3a2fd77f409329e213b530c https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda#0b57b5368ab7fc7cdc9e3511fa867214 https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda#5ede4753180c7a550a443c430dc8ab52 https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda#ed45423c41b3da15ea1df39b1f80c2ca -https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-hef0f6b3_18_cpu.conda#f77f775cebcb3ff0c5f37ddef62dac01 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-h364f349_19_cpu.conda#99dec782923cf4f1c657bad3c0ab1894 https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda#15b51397e0fe8ea7d7da60d83eb76ebc https://conda.anaconda.org/conda-forge/noarch/jupyterhub-base-5.1.0-pyh31011fe_0.conda#8958ebf09fe082db40ec9ab4d6f1a20c -https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-h5888daf_18_cpu.conda#8ee42d77bf6dab2fff09db6cdf0e3b30 -https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h6bd9018_18_cpu.conda#edf973a91f48798c515bb7391496a5f4 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-h5888daf_19_cpu.conda#08e736dae834582aba108cde4bba56f3 +https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h6bd9018_19_cpu.conda#d73151b9d29601f33fb8ee74c07bd920 https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda#e2d2abb421c13456a9a9f80272fdf543 https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-17.0.0-py312h9cafe31_1_cpu.conda#235827b9c93850cafdd2d5ab359893f9 https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda#ca23c71f70a7c7935b3d03f0f1a5801d -https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-h5888daf_18_cpu.conda#672a8f1a45cca0fc35b084a707b9b14c +https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-h5888daf_19_cpu.conda#70273aece3d8c6f6e5f2e85f7de5f1c3 https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda#885867f6adab3d7ecdf8ab6ca0785f51 -https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.4.0-pyhd8ed1ab_0.conda#f84c359ab53d51c125319b25bd09a887 +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.3.0-pyhd8ed1ab_0.conda#0324b3f9baed1cdb946cd484420acc77 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda#af8239bf1ba7e8c69b689f780f653488 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-he882d9a_18_cpu.conda#92ecb2e81cd7c28491f18ac758baa294 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-he882d9a_19_cpu.conda#7eb5555593bcf5695052c56852e408cf https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda#3d85618e2c97ab896b5b5e298d32b5b3 -https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.2.5-pyhd8ed1ab_0.conda#594762eddc55b82feac6097165a88e3c +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.2.4-pyhd8ed1ab_0.conda#28f3334e97c39de2b7ac15743b041784 https://conda.anaconda.org/conda-forge/linux-64/pyarrow-17.0.0-py312h9cebb41_1.conda#7e8ddbd44fb99ba376b09c4e9e61e509 -https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.15-pyhd8ed1ab_0.conda#865cd3fdeffd42a9682f3bb992e828e8 +https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.10-pyhd8ed1ab_0.conda#88efd31bf04d9f7a2ac7d02ab568d37d https://conda.anaconda.org/conda-forge/noarch/dask-labextension-7.0.0-pyhd8ed1ab_0.conda#bccfda61b2c35a3cec53bd3417e3d783 https://conda.anaconda.org/conda-forge/noarch/jupyterhub-singleuser-5.1.0-pyh31011fe_0.conda#bb9841dbb34c753706c85cd4264ff710 https://conda.anaconda.org/conda-forge/noarch/notebook-7.2.2-pyhd8ed1ab_0.conda#c4d5a58f43ce9ffa430e6ecad6c30a42 https://conda.anaconda.org/conda-forge/noarch/pyarrow-hotfix-0.6-pyhd8ed1ab_0.conda#ccc06e6ef2064ae129fab3286299abda -https://conda.anaconda.org/conda-forge/noarch/dask-2024.9.1-pyhd8ed1ab_0.conda#f4a81fe958755b2db083566a6a2da06f +https://conda.anaconda.org/conda-forge/noarch/dask-2024.8.0-pyhd8ed1ab_0.conda#795f3557b117402208fe1e0e20d943ed https://conda.anaconda.org/conda-forge/noarch/nbgitpuller-1.2.1-pyhd8ed1ab_0.conda#73abf90c19790f8d6c600b0aa152c932 https://conda.anaconda.org/conda-forge/noarch/dask-gateway-2024.1.0-pyh8af1aa0_0.conda#8e8c5875b0bbdf9777ab6f02ae350ebd -https://conda.anaconda.org/conda-forge/noarch/pangeo-dask-2024.09.30-hd8ed1ab_0.conda#72af7eda54a43ab65e5e9d336ed48b92 -https://conda.anaconda.org/conda-forge/noarch/pangeo-notebook-2024.09.30-hd8ed1ab_0.conda#26b23f71e88b062dc67a84e4399b2faa +https://conda.anaconda.org/conda-forge/noarch/pangeo-dask-2024.08.07-hd8ed1ab_0.conda#dcf89dec3b5d48a0678bb083fbbbcf2c +https://conda.anaconda.org/conda-forge/noarch/pangeo-notebook-2024.08.07-hd8ed1ab_0.conda#dffed2b95398bf6e774526079be3fcfd +# pip jupyter-launcher-shortcuts @ https://files.pythonhosted.org/packages/29/49/5f76d3aef23238c2ab1995f3e7a5180d27e1c21e951a1031512aa57528d4/jupyter_launcher_shortcuts-4.0.3-py3-none-any.whl#sha256=e42b6ad862d6a44ad9eb285f477a400dc6e9c2ff19dc5e922c6a4f6e01c6df1c +# pip nbconvert @ https://files.pythonhosted.org/packages/b8/bb/bb5b6a515d1584aa2fd89965b11db6632e4bdc69495a52374bcc36e56cfa/nbconvert-7.16.4-py3-none-any.whl#sha256=05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3 diff --git a/base-notebook/conda-lock.yml b/base-notebook/conda-lock.yml index d13f2c31..cbdc8188 100644 --- a/base-notebook/conda-lock.yml +++ b/base-notebook/conda-lock.yml @@ -9,14 +9,14 @@ # To update a single package to the latest version compatible with the version constraints in the source: # conda-lock lock --lockfile conda-lock.yml --update PACKAGE # To re-solve the entire environment, e.g. after changing a version constraint in the source file: -# conda-lock -f environment.yml --lockfile conda-lock.yml +# conda-lock -f environment.yml -f environment-cloud.yaml --lockfile conda-lock.yml version: 1 metadata: content_hash: - linux-64: 78ece3f2bd471d336d66cf9fdd762eeece8893fbb969865aa14315e0771b0fb7 - linux-aarch64: f9bf91067e3c9deadfe7281434782c4b8bf9fc45959e0dd69153b88cda9519c5 - osx-64: ba3dc3ba22cdb1075d4deb701aff6e8030056e9e76aad05ecce799822761b0ff - osx-arm64: 480aeb9a5c7a054b59f0d32bff7d338bea1cc0e1f3cb887301bac7ac1f8ae4f0 + linux-64: a391805305022b6c10923fe54a757a26bbbff879f97f299121d085730c04fe10 + linux-aarch64: 06ca4342356ecbb8128c79cfe78cc273bbabd47b107aff472d203499b8aef77e + osx-64: d24cdbed66f3ee4b81777df1537b23092b24a8eba181a027d0310b7688bc37de + osx-arm64: 0f8cab2075ab6f21525bb7aaa859ff75acaee1f5a8a68b79f090f504ffae7a80 channels: - url: conda-forge used_env_vars: [] @@ -27,6 +27,7 @@ metadata: - osx-arm64 sources: - environment.yml + - environment-cloud.yaml package: - name: _libgcc_mutex version: '0.1' @@ -65,51 +66,51 @@ package: category: main optional: false - name: aiohappyeyeballs - version: 2.4.2 + version: 2.4.3 manager: conda platform: linux-64 dependencies: python: '>=3.8.0' - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda hash: - md5: 9a18fffdcfc7a5c0ec7aa7c5f680df5e - sha256: 946b2895835ac97540ada2b3b463718b35a413e25bd5d902ba7afd43a1a8f0ea + md5: ec763b0a58960558ca0ad7255a51a237 + sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac category: main optional: false - name: aiohappyeyeballs - version: 2.4.2 + version: 2.3.4 manager: conda platform: linux-aarch64 dependencies: - python: '>=3.8.0' - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.2-pyhd8ed1ab_0.conda + python: '>=3.8.0,<4.0.0' + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.3.4-pyhd8ed1ab_0.conda hash: - md5: 9a18fffdcfc7a5c0ec7aa7c5f680df5e - sha256: 946b2895835ac97540ada2b3b463718b35a413e25bd5d902ba7afd43a1a8f0ea + md5: d9208b7715d184f8ce01a01fec61b3a4 + sha256: a13ad865dc50fa81069ed85e6e4877cd0aac6c56f21fbff99581a6f57378ac07 category: main optional: false - name: aiohappyeyeballs - version: 2.4.2 + version: 2.3.4 manager: conda platform: osx-64 dependencies: - python: '>=3.8.0' - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.2-pyhd8ed1ab_0.conda + python: '>=3.8.0,<4.0.0' + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.3.4-pyhd8ed1ab_0.conda hash: - md5: 9a18fffdcfc7a5c0ec7aa7c5f680df5e - sha256: 946b2895835ac97540ada2b3b463718b35a413e25bd5d902ba7afd43a1a8f0ea + md5: d9208b7715d184f8ce01a01fec61b3a4 + sha256: a13ad865dc50fa81069ed85e6e4877cd0aac6c56f21fbff99581a6f57378ac07 category: main optional: false - name: aiohappyeyeballs - version: 2.4.2 + version: 2.3.4 manager: conda platform: osx-arm64 dependencies: - python: '>=3.8.0' - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.2-pyhd8ed1ab_0.conda + python: '>=3.8.0,<4.0.0' + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.3.4-pyhd8ed1ab_0.conda hash: - md5: 9a18fffdcfc7a5c0ec7aa7c5f680df5e - sha256: 946b2895835ac97540ada2b3b463718b35a413e25bd5d902ba7afd43a1a8f0ea + md5: d9208b7715d184f8ce01a01fec61b3a4 + sha256: a13ad865dc50fa81069ed85e6e4877cd0aac6c56f21fbff99581a6f57378ac07 category: main optional: false - name: aiohttp @@ -134,7 +135,7 @@ package: category: main optional: false - name: aiohttp - version: 3.10.8 + version: 3.10.1 manager: conda platform: linux-aarch64 dependencies: @@ -142,19 +143,19 @@ package: aiosignal: '>=1.1.2' attrs: '>=17.3.0' frozenlist: '>=1.1.1' - libgcc: '>=13' + libgcc-ng: '>=12' multidict: '>=4.5,<7.0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - yarl: '>=1.12.0,<2.0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.10.8-py312hb2c0f52_0.conda + yarl: '>=1.0,<2.0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.10.1-py312h396f95a_0.conda hash: - md5: 84aba8eaddc03921a547d24501815128 - sha256: 89fbcbd0ee6de8299298fb1037e45840288be395c1890263f4f155baecbf0aeb + md5: 01153a2c978a5e83bb4e5b60ce8689d1 + sha256: ba5723b414498e940dc1a9f94d58a6214ef058d2490c542d00950b2fdc7ab43d category: main optional: false - name: aiohttp - version: 3.10.8 + version: 3.10.1 manager: conda platform: osx-64 dependencies: @@ -166,15 +167,15 @@ package: multidict: '>=4.5,<7.0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - yarl: '>=1.12.0,<2.0' - url: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.10.8-py312hb553811_0.conda + yarl: '>=1.0,<2.0' + url: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.10.1-py312hbd25219_0.conda hash: - md5: e26957f31c426b028b7f5f77c0950198 - sha256: 9911a59d05dfde86fc5e89047b09e53a4326b5f5b4a9867b7629c8041c61e4b7 + md5: 9396934d59b1047073d963a520112ec1 + sha256: 86b0f84e86bbb15dea2c2192085c9bd207f0a40895126b8884f14f9fc3655295 category: main optional: false - name: aiohttp - version: 3.10.8 + version: 3.10.1 manager: conda platform: osx-arm64 dependencies: @@ -186,11 +187,11 @@ package: multidict: '>=4.5,<7.0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - yarl: '>=1.12.0,<2.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.10.8-py312h024a12e_0.conda + yarl: '>=1.0,<2.0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.10.1-py312h7e5086c_0.conda hash: - md5: b8228160bd0b70341265005eeb720abc - sha256: 4a0e548f6e347cd94af68ad9a093903683519132013480200f99ec135b11481b + md5: 1815a03fe404b4ec2f83fd9932314704 + sha256: 15d78a3404d6a2906ea0678eb3b12438c60b849334c308e29ee2190140701df0 category: main optional: false - name: aiosignal @@ -263,7 +264,7 @@ package: category: main optional: false - name: alembic - version: 1.13.3 + version: 1.13.2 manager: conda platform: linux-aarch64 dependencies: @@ -273,14 +274,14 @@ package: python: '>=3.8' sqlalchemy: '>=1.3.0' typing-extensions: '>=4' - url: https://conda.anaconda.org/conda-forge/noarch/alembic-1.13.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/alembic-1.13.2-pyhd8ed1ab_0.conda hash: - md5: c81dc0d6ce99cf5c46e8b27dc37b5a75 - sha256: 7e61183ef0476f6e568e7021ba2abe0a566aaf1b9263575838fec6cb50d5eb42 + md5: 0045ed5e28a7f2c252a30442408b36c4 + sha256: 96fd39cb4500542556bbef01130033bad75c637a6f573eb7b043d15a3f7b02ff category: main optional: false - name: alembic - version: 1.13.3 + version: 1.13.2 manager: conda platform: osx-64 dependencies: @@ -290,14 +291,14 @@ package: python: '>=3.8' sqlalchemy: '>=1.3.0' typing-extensions: '>=4' - url: https://conda.anaconda.org/conda-forge/noarch/alembic-1.13.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/alembic-1.13.2-pyhd8ed1ab_0.conda hash: - md5: c81dc0d6ce99cf5c46e8b27dc37b5a75 - sha256: 7e61183ef0476f6e568e7021ba2abe0a566aaf1b9263575838fec6cb50d5eb42 + md5: 0045ed5e28a7f2c252a30442408b36c4 + sha256: 96fd39cb4500542556bbef01130033bad75c637a6f573eb7b043d15a3f7b02ff category: main optional: false - name: alembic - version: 1.13.3 + version: 1.13.2 manager: conda platform: osx-arm64 dependencies: @@ -307,10 +308,10 @@ package: python: '>=3.8' sqlalchemy: '>=1.3.0' typing-extensions: '>=4' - url: https://conda.anaconda.org/conda-forge/noarch/alembic-1.13.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/alembic-1.13.2-pyhd8ed1ab_0.conda hash: - md5: c81dc0d6ce99cf5c46e8b27dc37b5a75 - sha256: 7e61183ef0476f6e568e7021ba2abe0a566aaf1b9263575838fec6cb50d5eb42 + md5: 0045ed5e28a7f2c252a30442408b36c4 + sha256: 96fd39cb4500542556bbef01130033bad75c637a6f573eb7b043d15a3f7b02ff category: main optional: false - name: annotated-types @@ -382,51 +383,51 @@ package: category: main optional: false - name: anyio - version: 4.6.0 + version: 4.4.0 manager: conda platform: linux-aarch64 dependencies: - python: '>=3.9' + python: '>=3.8' sniffio: '>=1.1' typing_extensions: '>=4.1' idna: '>=2.8' exceptiongroup: '>=1.0.2' - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.0-pyhd8ed1ab_1.conda + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.4.0-pyhd8ed1ab_0.conda hash: - md5: bc13891a047f50728b03595531f7f92e - sha256: d05493abca6ac1b0cb15f5d48c3117bddd73cc21e48bfcb460570cfa2ea2f909 + md5: 1fa97c6e8db1f82c64ff17a5efc4ae8e + sha256: 84ac9429812495f12939ab4994f2634f7cacd254f6234a0c2c0243daed15a7ee category: main optional: false - name: anyio - version: 4.6.0 + version: 4.4.0 manager: conda platform: osx-64 dependencies: - python: '>=3.9' + python: '>=3.8' sniffio: '>=1.1' typing_extensions: '>=4.1' idna: '>=2.8' exceptiongroup: '>=1.0.2' - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.0-pyhd8ed1ab_1.conda + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.4.0-pyhd8ed1ab_0.conda hash: - md5: bc13891a047f50728b03595531f7f92e - sha256: d05493abca6ac1b0cb15f5d48c3117bddd73cc21e48bfcb460570cfa2ea2f909 + md5: 1fa97c6e8db1f82c64ff17a5efc4ae8e + sha256: 84ac9429812495f12939ab4994f2634f7cacd254f6234a0c2c0243daed15a7ee category: main optional: false - name: anyio - version: 4.6.0 + version: 4.4.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.9' + python: '>=3.8' sniffio: '>=1.1' typing_extensions: '>=4.1' idna: '>=2.8' exceptiongroup: '>=1.0.2' - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.0-pyhd8ed1ab_1.conda + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.4.0-pyhd8ed1ab_0.conda hash: - md5: bc13891a047f50728b03595531f7f92e - sha256: d05493abca6ac1b0cb15f5d48c3117bddd73cc21e48bfcb460570cfa2ea2f909 + md5: 1fa97c6e8db1f82c64ff17a5efc4ae8e + sha256: 84ac9429812495f12939ab4994f2634f7cacd254f6234a0c2c0243daed15a7ee category: main optional: false - name: appnope @@ -531,13 +532,13 @@ package: platform: linux-aarch64 dependencies: cffi: '>=1.0.1' - libgcc: '>=13' - python: '>=3.12,<3.13.0a0' + libgcc-ng: '>=12' + python: '>=3.12.0rc3,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hdd3e373_4.conda hash: - md5: c3b818a44ce51af3de80cf6523cfe216 - sha256: a1a0e246c70b738e20dc01785e6bc0e497c7dfc8e586d1db142e7d77f80e0dfa + md5: 7aebbb1531055d298dc01002e1286f3a + sha256: bd412e483174dbc501dd084ae4dd0be3d8a74c4e8307b5ccec29a2a674a3d0e7 category: main optional: false - name: argon2-cffi-bindings @@ -545,14 +546,13 @@ package: manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' cffi: '>=1.0.1' - python: '>=3.12,<3.13.0a0' + python: '>=3.12.0rc3,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda + url: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312h104f124_4.conda hash: - md5: 033345df1d545bc40b52e03cb03db4e0 - sha256: 37d61df3778b99e12d8adbaf7f1c5e8b07616ef3ada4436ad995f25c25ae6fda + md5: dddfb6125aed1fb84eb13319007c08fd + sha256: aa321e91f0ff365b5261fa1dcffa2d32aa957561bdbb38988e52e28e25a762a8 category: main optional: false - name: argon2-cffi-bindings @@ -560,14 +560,13 @@ package: manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' cffi: '>=1.0.1' - python: '>=3.12,<3.13.0a0' + python: '>=3.12.0rc3,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h02f2b3b_4.conda hash: - md5: 6ccaeafe1a52b0d0e7ebfbf53a374649 - sha256: 0e32ddd41f273f505956254d81ffadaf982ed1cb7dfd70d9251a8c5b705c7267 + md5: 015edbb6fae68ab35881f55f149d4725 + sha256: 1cfcf4b2d36a3b183a5cb1c69f85768166e50af6ced5ae381c440666a6da12c6 category: main optional: false - name: arrow @@ -845,54 +844,54 @@ package: category: main optional: false - name: aws-c-auth - version: 0.7.31 + version: 0.7.22 manager: conda platform: linux-aarch64 dependencies: - aws-c-cal: '>=0.7.4,<0.7.5.0a0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-http: '>=0.8.10,<0.8.11.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - aws-c-sdkutils: '>=0.1.19,<0.1.20.0a0' - libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.7.31-h92f6102_0.conda + aws-c-cal: '>=0.7.1,<0.7.2.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-http: '>=0.8.2,<0.8.3.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + aws-c-sdkutils: '>=0.1.16,<0.1.17.0a0' + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.7.22-hf9a33fd_10.conda hash: - md5: d47a1298488849aa9635cfcb4d9cc455 - sha256: 381a8fab6f74c9bdf6c55ed88134ad9ca24be1ccf3ac91b539fd8f046fe91b4e + md5: 62b79a7b24bc23fe55257f84ff62d2d0 + sha256: a07a992c975f50e313304625d35304f347da859f2d76c70b054a871eb3bd8fa4 category: main optional: false - name: aws-c-auth - version: 0.7.31 + version: 0.7.22 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - aws-c-cal: '>=0.7.4,<0.7.5.0a0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-http: '>=0.8.10,<0.8.11.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - aws-c-sdkutils: '>=0.1.19,<0.1.20.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.7.31-hb28a666_0.conda + aws-c-cal: '>=0.7.1,<0.7.2.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-http: '>=0.8.2,<0.8.3.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + aws-c-sdkutils: '>=0.1.16,<0.1.17.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.7.22-hb04b931_10.conda hash: - md5: d14e2cb987740374e14e871456356b76 - sha256: 51bf3047115f21c89e96999ec7a0c46a7684334ffe5a3584547a2e1f9e14ba2a + md5: 58e7453d9442ec10c3bfbe3466502baf + sha256: b95a2f9adc0b77c88b10c6001eb101d6b76bb0efdf80a8fa7e99c510e8236ed2 category: main optional: false - name: aws-c-auth - version: 0.7.31 + version: 0.7.22 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - aws-c-cal: '>=0.7.4,<0.7.5.0a0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-http: '>=0.8.10,<0.8.11.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - aws-c-sdkutils: '>=0.1.19,<0.1.20.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.7.31-hc27b277_0.conda + aws-c-cal: '>=0.7.1,<0.7.2.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-http: '>=0.8.2,<0.8.3.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + aws-c-sdkutils: '>=0.1.16,<0.1.17.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.7.22-h8a62e84_10.conda hash: - md5: f22f3582756570df9b0025b2b373b118 - sha256: 5a512985e65a0b9b60e54c5aa01bb8b3c4573663b32753d3e63da43eccf638f3 + md5: 7a43a23a02f7c952f48d154454336c8c + sha256: 933c77d0c6eb77bc99b2184f3332b8254f3d82624627bdce9885aa7a32186b48 category: main optional: false - name: aws-c-cal @@ -911,45 +910,45 @@ package: category: main optional: false - name: aws-c-cal - version: 0.7.4 + version: 0.7.1 manager: conda platform: linux-aarch64 dependencies: - aws-c-common: '>=0.9.28,<0.9.29.0a0' - libgcc: '>=13' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + libgcc-ng: '>=12' openssl: '>=3.3.1,<4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.7.4-h51bfcdd_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.7.1-h1194e0d_1.conda hash: - md5: 51af481aa48d64523b9ce6837238d8d8 - sha256: b4c536245ceb696cd282b50156580464b88efb45c5ed1a41dfe95d12d1782585 + md5: 3e52b9c84581b52333fbde981f2804a6 + sha256: 2b20411297c770100265ab55be2ac6973f26d3deb1a2af9e8779d561c9be01d0 category: main optional: false - name: aws-c-cal - version: 0.7.4 + version: 0.7.1 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - aws-c-common: '>=0.9.28,<0.9.29.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' openssl: '>=3.3.1,<4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.7.4-h8128ea2_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.7.1-hd73d8db_1.conda hash: - md5: 195ef3e2d7dadb02a4b1f874a1e5e1e6 - sha256: 6ffa143181fa40bbbe1b5dfad149b68e4c3fcb6e5d38a4f5a4490c8c3b4402df + md5: a8735aa1de30e27dc87bde25dd3201d8 + sha256: 40d2903b718bd4ddf4706ff4e86831c11a012e1a662f73e30073b4f7f364fcca category: main optional: false - name: aws-c-cal - version: 0.7.4 + version: 0.7.1 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' openssl: '>=3.3.1,<4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.7.4-h41dd001_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.7.1-h94d0942_1.conda hash: - md5: 3f2c1743ed973b58fd187b0c31861dd8 - sha256: 2167b44bc879fb9cb7aaf2ca8418c2f8764c82c8732a41c08616e3f70fc92224 + md5: d70f882eefb9cabf3e18a2f3957936de + sha256: b36692df6896084ecbf370c5a58590ebd0c7e1b9e0a0f27f2de2b81c8e1dca11 category: main optional: false - name: aws-c-common @@ -966,39 +965,39 @@ package: category: main optional: false - name: aws-c-common - version: 0.9.28 + version: 0.9.23 manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.9.28-h86ecc28_0.conda + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.9.23-h68df207_0.conda hash: - md5: aa93eed77c5da6c30f8fc7b2c91f057a - sha256: eec3832674e8eae438e4a7a83f991044077a6c94cd1d1fbac777dd2cf9e42d0a + md5: 36159c9ecdcdbf7bf2676510110d7fda + sha256: fa4ca3c29c64c96cf8b208fb5466e425ac2f8998a0022f5404a885253bca4667 category: main optional: false - name: aws-c-common - version: 0.9.28 + version: 0.9.23 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.9.28-h00291cd_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.9.23-hfdf4475_0.conda hash: - md5: ffe8898e6d97ecb791df1350ce273508 - sha256: 9af8c4514526829de390bc5f5c103487dff1cd025463ea90b7f8dbb8f1d0ff16 + md5: 35083fa12de9dc9918de60c112ceab27 + sha256: 63680a7e163a947eb97f68cf1d5dd26fe0fef9443196de4fc31615b28d6095a7 category: main optional: false - name: aws-c-common - version: 0.9.28 + version: 0.9.23 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.9.28-hd74edd7_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.9.23-h99b78c6_0.conda hash: - md5: 8dc8711c903ab57ead8ce99b65625a95 - sha256: 4081ada22148dc500765aac106ed224829810fd5e5d6f942a842b0a40f53783e + md5: d9f2adf47d2078d44a23480140e76550 + sha256: 15e965a0d1c37927e23d46691e632cf8b39afee5c9ba735f2d535fdb7b58b19e category: main optional: false - name: aws-c-compression @@ -1016,42 +1015,42 @@ package: category: main optional: false - name: aws-c-compression - version: 0.2.19 + version: 0.2.18 manager: conda platform: linux-aarch64 dependencies: - aws-c-common: '>=0.9.28,<0.9.29.0a0' - libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.2.19-h57e602e_1.conda + aws-c-common: '>=0.9.23,<0.9.24.0a0' + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.2.18-h3ff8e8a_7.conda hash: - md5: bdb086e28843e715ed1963aca21c0e65 - sha256: e53d808421884cf348cadfbf309ef141e96de75a22de98eb11a414a5b47b7519 + md5: 134bb356c25e94209744ee664ba8a89a + sha256: 2f7958b624e48424e8e484842cbce323f812adfb22f431889e7e25899907032c category: main optional: false - name: aws-c-compression - version: 0.2.19 + version: 0.2.18 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.2.19-h8128ea2_1.conda + aws-c-common: '>=0.9.23,<0.9.24.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.2.18-hd73d8db_7.conda hash: - md5: 43be0637437461d48ff524c04459ee46 - sha256: f60f8bec5eddd1974367aac03a646996374d8f290bb4463dfbf1e7620462e7be + md5: b082d6b9a40e41fd27f48786d318e910 + sha256: c8fabda8233f979f9c5173a5ba5f6482c26e8ac8af55e78550fff27e997e0dbd category: main optional: false - name: aws-c-compression - version: 0.2.19 + version: 0.2.18 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.2.19-h41dd001_1.conda + aws-c-common: '>=0.9.23,<0.9.24.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.2.18-h94d0942_7.conda hash: - md5: 98e9d9c62300fd87bee44d2a63792ee5 - sha256: d0a4362beb22aa4da126aab5ddadcb4bbde5032f407d7e4b03969a3d7e5f9cb2 + md5: c9a37f68bef48f48782746404f4050a2 + sha256: d0244c7638853f8f8feb4a3107844fc6be23c6e29312fc5eda9221df5817b8a7 category: main optional: false - name: aws-c-event-stream @@ -1072,51 +1071,51 @@ package: category: main optional: false - name: aws-c-event-stream - version: 0.4.3 + version: 0.4.2 manager: conda platform: linux-aarch64 dependencies: - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - aws-checksums: '>=0.1.20,<0.1.21.0a0' - libgcc: '>=13' - libstdcxx: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.4.3-h7400eea_2.conda + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + aws-checksums: '>=0.1.18,<0.1.19.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.4.2-h9d161b3_15.conda hash: - md5: 00807ac2c0089554c9abc49d131152ae - sha256: 856a3d17c15cfb005bb85fc4a2dc1f192435a616f8b20c43e4d313b86704ae4f + md5: ff2a2cb1a667ce44ddccf87a3858bede + sha256: 80305a933ee51a808c57e6f7a76dec05c02a999b2d5388fd1c906b8475658b8c category: main optional: false - name: aws-c-event-stream - version: 0.4.3 + version: 0.4.2 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - aws-checksums: '>=0.1.20,<0.1.21.0a0' - libcxx: '>=17' - url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.4.3-hcd1ed9e_2.conda + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + aws-checksums: '>=0.1.18,<0.1.19.0a0' + libcxx: '>=16' + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.4.2-h2713d70_15.conda hash: - md5: 73bde3fabf8b8f6f2be9cc6f152d0606 - sha256: f717b5d9baa8206d7069f80cd2f5a2cd99747b3f1e3aed4bea7e392846979d9b + md5: 21aeef6fb90f64d3625f06501c4d023c + sha256: 410497c0175beb16b9564ce43f44ed284f19ee1b42b968ad1bd69f4d3c49296a category: main optional: false - name: aws-c-event-stream - version: 0.4.3 + version: 0.4.2 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - aws-checksums: '>=0.1.20,<0.1.21.0a0' - libcxx: '>=17' - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.4.3-h40a8fc1_2.conda + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + aws-checksums: '>=0.1.18,<0.1.19.0a0' + libcxx: '>=16' + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.4.2-hb74cd8f_15.conda hash: - md5: f3d15e195e0b4dc6db749398eb925ffe - sha256: 63c903dc4b708c0054287dbb5411de62067a181886657a515d96c0e6add173c1 + md5: e12aae765ef60c989a43f042a4141ab7 + sha256: a28581c0fa33d5bf8f71ca18dc632b997ba83d4442a3c2955e40927708ce8b0b category: main optional: false - name: aws-c-http @@ -1137,51 +1136,51 @@ package: category: main optional: false - name: aws-c-http - version: 0.8.10 + version: 0.8.2 manager: conda platform: linux-aarch64 dependencies: - aws-c-cal: '>=0.7.4,<0.7.5.0a0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-compression: '>=0.2.19,<0.2.20.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.8.10-hc7031c7_0.conda + aws-c-cal: '>=0.7.1,<0.7.2.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-compression: '>=0.2.18,<0.2.19.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.8.2-h782069e_6.conda hash: - md5: 0c4d2f3bd8431f41e8fbd80c4ef09a23 - sha256: a3d3c1bc042c07a832e8b405f882670a09ae1cb00cc69cea6829a0d5d5d05624 + md5: 1477d77ade38be837f1be9fc5702244c + sha256: 4fc9052d4090f13ecc7d5e2de4fa7f82081fe57e0c365e231364ec06b86ead91 category: main optional: false - name: aws-c-http - version: 0.8.10 + version: 0.8.2 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - aws-c-cal: '>=0.7.4,<0.7.5.0a0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-compression: '>=0.2.19,<0.2.20.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.8.10-h2f86973_0.conda + aws-c-cal: '>=0.7.1,<0.7.2.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-compression: '>=0.2.18,<0.2.19.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.8.2-he29c2fd_6.conda hash: - md5: 4160f0e92d2f25532ee52b625556e488 - sha256: dae6a6be9a6fc1c2d6318c62d2b89e20fe75d8df5a4b7766b95be788cfb9516c + md5: 9b1b61150532b6c5eda36700a408209d + sha256: 8acfcfb37640b3482ddb7b8f43ca72a698c60ac3208e7f54edf47354cb21a382 category: main optional: false - name: aws-c-http - version: 0.8.10 + version: 0.8.2 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - aws-c-cal: '>=0.7.4,<0.7.5.0a0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-compression: '>=0.2.19,<0.2.20.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.8.10-hf5a2c8c_0.conda + aws-c-cal: '>=0.7.1,<0.7.2.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-compression: '>=0.2.18,<0.2.19.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.8.2-had1507a_6.conda hash: - md5: e4ba8aa0fb7dac95b0ea398a3229bf56 - sha256: dfdec013bf7c2e87c49bc61a4cb8b1e3b8bf21e7f592326e958f0bf224de21b7 + md5: d6a478f39b7ee977690d7dfc4115adfc + sha256: 42a85dee175d2a8a832157ab3fd8c052955f90f65d40f1076d066b486c64d1ed category: main optional: false - name: aws-c-io @@ -1201,46 +1200,46 @@ package: category: main optional: false - name: aws-c-io - version: 0.14.18 + version: 0.14.10 manager: conda platform: linux-aarch64 dependencies: - aws-c-cal: '>=0.7.4,<0.7.5.0a0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - libgcc: '>=13' - s2n: '>=1.5.3,<1.5.4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.14.18-hd2a7d26_10.conda + aws-c-cal: '>=0.7.1,<0.7.2.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + libgcc-ng: '>=12' + s2n: '>=1.4.17,<1.4.18.0a0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.14.10-he43bb46_1.conda hash: - md5: 22e8b844dfc31f868d8e995c4cb45c19 - sha256: bfa33852f9fb23ca4e52d16409afe4788189378337aa42adb32076cb1544f9f4 + md5: 8cb7305d490469354369e796186d67b5 + sha256: 9d1a34618e380b994bf00b99a75807c3a9cada7e5814f4cf673359251b01d517 category: main optional: false - name: aws-c-io - version: 0.14.18 + version: 0.14.10 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - aws-c-cal: '>=0.7.4,<0.7.5.0a0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.14.18-hf9a0f1c_10.conda + aws-c-cal: '>=0.7.1,<0.7.2.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.14.10-h4406d91_1.conda hash: - md5: b67c9a5bb5ac35cafd8bb6246d5e1059 - sha256: 05c3ddc17afefff534fdcbb3d11a5bc4c206ab978587b1ce4705819682812cf2 + md5: 975be62a8eb5e601ff6f888420dab870 + sha256: 928f7fdffec3c8c3ee8cb5c2bcc6f23f404d89a9b260e4dac96eb8e12d959d31 category: main optional: false - name: aws-c-io - version: 0.14.18 + version: 0.14.10 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - aws-c-cal: '>=0.7.4,<0.7.5.0a0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.14.18-hc3cb426_10.conda + aws-c-cal: '>=0.7.1,<0.7.2.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.14.10-hcdb10ff_1.conda hash: - md5: 2100b8564fe836df4ed72c16507c8c7e - sha256: 21c2021d962046446ba14776b6510de2f466902ac8116de5bef8d1eb3d3625b5 + md5: e7d85effc69338579c0b928eabe27d67 + sha256: 3b5fcdb83ab4af4b669c753f5ee167502e821180347f2d624bbaf77f9b082eb1 category: main optional: false - name: aws-c-mqtt @@ -1260,48 +1259,48 @@ package: category: main optional: false - name: aws-c-mqtt - version: 0.10.6 + version: 0.10.4 manager: conda platform: linux-aarch64 dependencies: - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-http: '>=0.8.10,<0.8.11.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.10.6-hd84f86a_0.conda + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-http: '>=0.8.2,<0.8.3.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.10.4-h6cc0bdf_8.conda hash: - md5: 11fc00655590445cd034ec395143328a - sha256: c319706b0d90f8c927723c84539d7bf7794feac3ce9e54b982321fae27e7be6c + md5: eb2b09202bb3ef71e542b76f55c60de5 + sha256: 2ea19007651bfb32767568c044cbbd833630735f25ad348f29c224afdfefeea2 category: main optional: false - name: aws-c-mqtt - version: 0.10.6 + version: 0.10.4 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-http: '>=0.8.10,<0.8.11.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.10.6-h9d7d61c_0.conda + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-http: '>=0.8.2,<0.8.3.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.10.4-hf6997d9_8.conda hash: - md5: 41ede335d3fb845c49043dab04db1576 - sha256: bd8cc5cdb47f3c6cd953e33269714df466a428e7a16ea30028f68829c4452216 + md5: dfa33f1d17f9e18b54411bf2eeff0b55 + sha256: 5b25821cd94e77459c7b0011df094d4ed67d04092639f84b79bf57e506eecd2e category: main optional: false - name: aws-c-mqtt - version: 0.10.6 + version: 0.10.4 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-http: '>=0.8.10,<0.8.11.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.10.6-h3acc7b9_0.conda + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-http: '>=0.8.2,<0.8.3.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.10.4-h856d8ab_8.conda hash: - md5: 1a8f32a114eac377378a7982c7a363a5 - sha256: 2ad955c17e01e7309bd44b19d071369f08160c41316fa0e8e4a29429f6db29fc + md5: 7a49b5ed4c1676b6aefbd6d7c92d976f + sha256: c2096334214c00905c71a527e330757e9a419c1e290ba515c6a54531f2b975b9 category: main optional: false - name: aws-c-s3 @@ -1325,58 +1324,58 @@ package: category: main optional: false - name: aws-c-s3 - version: 0.6.6 + version: 0.6.0 manager: conda platform: linux-aarch64 dependencies: - aws-c-auth: '>=0.7.31,<0.7.32.0a0' - aws-c-cal: '>=0.7.4,<0.7.5.0a0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-http: '>=0.8.10,<0.8.11.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - aws-checksums: '>=0.1.20,<0.1.21.0a0' - libgcc: '>=13' - openssl: '>=3.3.2,<4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.6.6-h2c5aa70_0.conda + aws-c-auth: '>=0.7.22,<0.7.23.0a0' + aws-c-cal: '>=0.7.1,<0.7.2.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-http: '>=0.8.2,<0.8.3.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + aws-checksums: '>=0.1.18,<0.1.19.0a0' + libgcc-ng: '>=12' + openssl: '>=3.3.1,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.6.0-h9b659bc_2.conda hash: - md5: 76822baabf944aa5f8997019206a3c29 - sha256: 4fce09204795c6ba2854a0d65d3fdec99db53a8f26eda7d591aba5b8fc7856b4 + md5: 089a61ca4d46ed9fe6613435815e36b2 + sha256: 572c1a14b06a8af5cad56856b555a1b0dc498f6f58f517861e1fa2b2fb7e977f category: main optional: false - name: aws-c-s3 - version: 0.6.6 + version: 0.6.0 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - aws-c-auth: '>=0.7.31,<0.7.32.0a0' - aws-c-cal: '>=0.7.4,<0.7.5.0a0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-http: '>=0.8.10,<0.8.11.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - aws-checksums: '>=0.1.20,<0.1.21.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.6.6-hd01826e_0.conda + aws-c-auth: '>=0.7.22,<0.7.23.0a0' + aws-c-cal: '>=0.7.1,<0.7.2.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-http: '>=0.8.2,<0.8.3.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + aws-checksums: '>=0.1.18,<0.1.19.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.6.0-h13137a3_2.conda hash: - md5: 7fa9af757e8376f738eb314518ec282b - sha256: 24794cfcaf9d6da28192dda88449dad1e112408a96c51e5a0df6a1925c4e8a57 + md5: 7564d61ed7073be23ca8fbce2fc5806a + sha256: f4bd86c0fa2e779ee01a8fa870177617d51467ea1cffa00a32e1e8abed2e0a5d category: main optional: false - name: aws-c-s3 - version: 0.6.6 + version: 0.6.0 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - aws-c-auth: '>=0.7.31,<0.7.32.0a0' - aws-c-cal: '>=0.7.4,<0.7.5.0a0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-http: '>=0.8.10,<0.8.11.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - aws-checksums: '>=0.1.20,<0.1.21.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.6.6-hd16c091_0.conda + aws-c-auth: '>=0.7.22,<0.7.23.0a0' + aws-c-cal: '>=0.7.1,<0.7.2.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-http: '>=0.8.2,<0.8.3.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + aws-checksums: '>=0.1.18,<0.1.19.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.6.0-ha9fd6de_2.conda hash: - md5: a4406babaa217f4d965c6cc52ef6520f - sha256: 0b3e2a1e4189faea5edaeb480d9ddcf6878efdc06f66ba6910dee4b4fb386b43 + md5: a326f688d66aa81fc403a2227e93a327 + sha256: 1c3c682ec25a3b3842f9dc14bcdb01705acf828e37c291cf244032299ae22416 category: main optional: false - name: aws-c-sdkutils @@ -1394,42 +1393,42 @@ package: category: main optional: false - name: aws-c-sdkutils - version: 0.1.19 + version: 0.1.16 manager: conda platform: linux-aarch64 dependencies: - aws-c-common: '>=0.9.28,<0.9.29.0a0' - libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.1.19-h57e602e_3.conda + aws-c-common: '>=0.9.23,<0.9.24.0a0' + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.1.16-h3ff8e8a_3.conda hash: - md5: fafe9243d41fb1269e0eead92b487969 - sha256: 1a6ed79cbc500349224a460f9aa95e2ffe2668d40e2c49977230c136f6ac38a7 + md5: 17b4343013540f7cfb0cffb66f1f18fa + sha256: b848559e5e7dafd4c58b16ee1eb6c829d69c20fe089bc6fdf5b8fcdeff1f4d47 category: main optional: false - name: aws-c-sdkutils - version: 0.1.19 + version: 0.1.16 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.1.19-h8128ea2_3.conda + aws-c-common: '>=0.9.23,<0.9.24.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.1.16-hd73d8db_3.conda hash: - md5: 8d93b3603363214303737f74b6efb5da - sha256: 50912641279d00a6ce12b1d72e74ea5d30078e91a0557a48a9e9fe285c2f6b2c + md5: 7932c9b2420f0a809ab1b08e2ea53896 + sha256: b944db69a4bf7481362378d81ff634b5eeed88f0b85c6609f195cd68ab3a8948 category: main optional: false - name: aws-c-sdkutils - version: 0.1.19 + version: 0.1.16 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.1.19-h41dd001_3.conda + aws-c-common: '>=0.9.23,<0.9.24.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.1.16-h94d0942_3.conda hash: - md5: 53bd7f3e6723288f531387a892d01635 - sha256: b320a08973f22468fd816bb957947369381913ae045d33bd872d03ebabaa355f + md5: 1f9dd57e79cf2191ed139491aa460e24 + sha256: 4303f310b156abeca86ea8a4b4c8be5cfb96dd4214c2ebcfeef1bec3fa1dc793 category: main optional: false - name: aws-checksums @@ -1447,42 +1446,42 @@ package: category: main optional: false - name: aws-checksums - version: 0.1.20 + version: 0.1.18 manager: conda platform: linux-aarch64 dependencies: - aws-c-common: '>=0.9.28,<0.9.29.0a0' - libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.1.20-h57e602e_0.conda + aws-c-common: '>=0.9.23,<0.9.24.0a0' + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.1.18-h3ff8e8a_7.conda hash: - md5: 2e8b832bdd43bf49c77be0794543ec5b - sha256: 15c2b71f4c0d6b2c0dde9a3789e17a2d020d9391dbb62d2923d66a085abb0919 + md5: 069ec92cf4097befba1ab4b3f1e9e832 + sha256: c62b6f36f81927f95371f208683d0168cc92fa4cada62a9db197c3932a4750ba category: main optional: false - name: aws-checksums - version: 0.1.20 + version: 0.1.18 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.1.20-h8128ea2_0.conda + aws-c-common: '>=0.9.23,<0.9.24.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.1.18-hd73d8db_7.conda hash: - md5: 1fbab35b839a3d822f1b39680298fd9f - sha256: 1953103f0ead6ffbcb73ddbcec617ce9195010fea838f63b5e8e93b8d4bf4bcb + md5: c3f25d79d4a36a89b3c638a6e3614f28 + sha256: a4e2dc37e4bbb2d64d1fac29c1d9fbc7c50ad3b5e15ff52e05ae63e8052e54d3 category: main optional: false - name: aws-checksums - version: 0.1.20 + version: 0.1.18 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.1.20-h41dd001_0.conda + aws-c-common: '>=0.9.23,<0.9.24.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.1.18-h94d0942_7.conda hash: - md5: 7ba57aa81224959beb6235f46bd05338 - sha256: 23c99722a3b3fac35d78c70731d333e85332e86a0ffce8bf48a9223478d5ffea + md5: fbd0be30bdd84b6735dfa3d6c5916b2e + sha256: cdd08a5b6b4ebadf05087238987681dc370bd0336ed410d0047171020f160187 category: main optional: false - name: aws-crt-cpp @@ -1509,69 +1508,69 @@ package: category: main optional: false - name: aws-crt-cpp - version: 0.28.3 + version: 0.27.3 manager: conda platform: linux-aarch64 dependencies: - aws-c-auth: '>=0.7.31,<0.7.32.0a0' - aws-c-cal: '>=0.7.4,<0.7.5.0a0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-event-stream: '>=0.4.3,<0.4.4.0a0' - aws-c-http: '>=0.8.10,<0.8.11.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - aws-c-mqtt: '>=0.10.6,<0.10.7.0a0' - aws-c-s3: '>=0.6.6,<0.6.7.0a0' - aws-c-sdkutils: '>=0.1.19,<0.1.20.0a0' - libgcc: '>=13' - libstdcxx: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.28.3-h8bb245d_5.conda + aws-c-auth: '>=0.7.22,<0.7.23.0a0' + aws-c-cal: '>=0.7.1,<0.7.2.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-event-stream: '>=0.4.2,<0.4.3.0a0' + aws-c-http: '>=0.8.2,<0.8.3.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + aws-c-mqtt: '>=0.10.4,<0.10.5.0a0' + aws-c-s3: '>=0.6.0,<0.6.1.0a0' + aws-c-sdkutils: '>=0.1.16,<0.1.17.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.27.3-h9b188e2_2.conda hash: - md5: b924c30496b9af5c20de6e3210e8ea97 - sha256: 7aa6815ff45bdf7ee3ab542346277d41f666d27d24175aeac2b3462f9fa58017 + md5: 58796590793f302e9f982dfb891c94eb + sha256: 4fc5ebb5c299946576fc4e2a4fd2dfc5f5a0988d0561c844de25fda28c364617 category: main optional: false - name: aws-crt-cpp - version: 0.28.3 + version: 0.27.3 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - aws-c-auth: '>=0.7.31,<0.7.32.0a0' - aws-c-cal: '>=0.7.4,<0.7.5.0a0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-event-stream: '>=0.4.3,<0.4.4.0a0' - aws-c-http: '>=0.8.10,<0.8.11.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - aws-c-mqtt: '>=0.10.6,<0.10.7.0a0' - aws-c-s3: '>=0.6.6,<0.6.7.0a0' - aws-c-sdkutils: '>=0.1.19,<0.1.20.0a0' - libcxx: '>=17' - url: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.28.3-h21c617a_5.conda + aws-c-auth: '>=0.7.22,<0.7.23.0a0' + aws-c-cal: '>=0.7.1,<0.7.2.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-event-stream: '>=0.4.2,<0.4.3.0a0' + aws-c-http: '>=0.8.2,<0.8.3.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + aws-c-mqtt: '>=0.10.4,<0.10.5.0a0' + aws-c-s3: '>=0.6.0,<0.6.1.0a0' + aws-c-sdkutils: '>=0.1.16,<0.1.17.0a0' + libcxx: '>=16' + url: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.27.3-h0a15bd7_2.conda hash: - md5: 6de09093d1c0f5aa1f4bd9d91923c9df - sha256: 95cc7a027ca0c06c4a77f9e08ea7d8f16d32cad36db9bc4670d5a1e970d15971 + md5: 58f9e6e6e0848a4dda31c123c577107a + sha256: 718d350e8a0cf3bb09373da2e11820f3cb7e453fd95ad5ab14c104e4701b26bc category: main optional: false - name: aws-crt-cpp - version: 0.28.3 + version: 0.27.3 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - aws-c-auth: '>=0.7.31,<0.7.32.0a0' - aws-c-cal: '>=0.7.4,<0.7.5.0a0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-event-stream: '>=0.4.3,<0.4.4.0a0' - aws-c-http: '>=0.8.10,<0.8.11.0a0' - aws-c-io: '>=0.14.18,<0.14.19.0a0' - aws-c-mqtt: '>=0.10.6,<0.10.7.0a0' - aws-c-s3: '>=0.6.6,<0.6.7.0a0' - aws-c-sdkutils: '>=0.1.19,<0.1.20.0a0' - libcxx: '>=17' - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.28.3-hdde83a9_5.conda + aws-c-auth: '>=0.7.22,<0.7.23.0a0' + aws-c-cal: '>=0.7.1,<0.7.2.0a0' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-event-stream: '>=0.4.2,<0.4.3.0a0' + aws-c-http: '>=0.8.2,<0.8.3.0a0' + aws-c-io: '>=0.14.10,<0.14.11.0a0' + aws-c-mqtt: '>=0.10.4,<0.10.5.0a0' + aws-c-s3: '>=0.6.0,<0.6.1.0a0' + aws-c-sdkutils: '>=0.1.16,<0.1.17.0a0' + libcxx: '>=16' + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.27.3-h9d3339c_2.conda hash: - md5: 5d5b17677fab85d9b47bbc8c69e6eae1 - sha256: 67a28bf8ff0f9d4fd8a7f059503f71c718185cbd65fa0a5688a6b56c944bc1e2 + md5: bca678a227f7083dffc3d4c0dbd9f2de + sha256: d863e05f421e23a7a7dc1bf545b409857bddac99231290af442a448d26143eb3 category: main optional: false - name: aws-sdk-cpp @@ -1596,63 +1595,63 @@ package: category: main optional: false - name: aws-sdk-cpp - version: 1.11.407 + version: 1.11.329 manager: conda platform: linux-aarch64 dependencies: - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-event-stream: '>=0.4.3,<0.4.4.0a0' - aws-checksums: '>=0.1.20,<0.1.21.0a0' - aws-crt-cpp: '>=0.28.3,<0.28.4.0a0' - libcurl: '>=8.10.0,<9.0a0' - libgcc: '>=13' - libstdcxx: '>=13' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-event-stream: '>=0.4.2,<0.4.3.0a0' + aws-checksums: '>=0.1.18,<0.1.19.0a0' + aws-crt-cpp: '>=0.27.3,<0.27.4.0a0' + libcurl: '>=8.8.0,<9.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' libzlib: '>=1.3.1,<2.0a0' - openssl: '>=3.3.2,<4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.407-h21cfba4_0.conda + openssl: '>=3.3.1,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.329-hecfb68f_9.conda hash: - md5: e33acabffcda4c2bf7e22b48528e4cec - sha256: 4fd78167257c14d14a8317268ff6ce1918cd7fad762bcef41f3e9d9a04390b8a + md5: 074782015c32b2870350b084935fcbe7 + sha256: 806e894bc94e9a9efe437337205ea43c4258f5cb77b1213004a203eb25d6b239 category: main optional: false - name: aws-sdk-cpp - version: 1.11.407 + version: 1.11.329 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-event-stream: '>=0.4.3,<0.4.4.0a0' - aws-checksums: '>=0.1.20,<0.1.21.0a0' - aws-crt-cpp: '>=0.28.3,<0.28.4.0a0' - libcurl: '>=8.10.0,<9.0a0' - libcxx: '>=17' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-event-stream: '>=0.4.2,<0.4.3.0a0' + aws-checksums: '>=0.1.18,<0.1.19.0a0' + aws-crt-cpp: '>=0.27.3,<0.27.4.0a0' + libcurl: '>=8.8.0,<9.0a0' + libcxx: '>=16' libzlib: '>=1.3.1,<2.0a0' - openssl: '>=3.3.2,<4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.407-h2e282c2_0.conda + openssl: '>=3.3.1,<4.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.329-h554caeb_9.conda hash: - md5: 16c5992e1c374f160128336cdf64e171 - sha256: c6a88e7882325c56e1f25252a5529bd24650207ab44cb31e976daa9b5d8b1914 + md5: a875dc66bc06f0bf49dc9739e6e2fbab + sha256: a9b6751a5a80f8713e55256afccdd96efd3442b9791ce8bd2e40c49ac0dc95f6 category: main optional: false - name: aws-sdk-cpp - version: 1.11.407 + version: 1.11.329 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - aws-c-common: '>=0.9.28,<0.9.29.0a0' - aws-c-event-stream: '>=0.4.3,<0.4.4.0a0' - aws-checksums: '>=0.1.20,<0.1.21.0a0' - aws-crt-cpp: '>=0.28.3,<0.28.4.0a0' - libcurl: '>=8.10.0,<9.0a0' - libcxx: '>=17' + aws-c-common: '>=0.9.23,<0.9.24.0a0' + aws-c-event-stream: '>=0.4.2,<0.4.3.0a0' + aws-checksums: '>=0.1.18,<0.1.19.0a0' + aws-crt-cpp: '>=0.27.3,<0.27.4.0a0' + libcurl: '>=8.8.0,<9.0a0' + libcxx: '>=16' libzlib: '>=1.3.1,<2.0a0' - openssl: '>=3.3.2,<4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.407-h0455a66_0.conda + openssl: '>=3.3.1,<4.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.329-he6360a2_9.conda hash: - md5: e189085758424fa0222292c98decb68f - sha256: a753df57869eb6814113fe4ae71b99965acf4f2fafc9237067ba84bb18b39933 + md5: df8458d1bc6ec9616f8e88a0eadb05c7 + sha256: 46e6e18df4c9a8f8cd34ef0a1952dd2d96bf5fe78a1237d4bdeac212de2eb97d category: main optional: false - name: azure-core-cpp @@ -1717,7 +1716,7 @@ package: category: main optional: false - name: azure-identity-cpp - version: 1.8.0 + version: 1.9.0 manager: conda platform: linux-64 dependencies: @@ -1726,10 +1725,10 @@ package: libgcc-ng: '>=12' libstdcxx-ng: '>=12' openssl: '>=3.3.1,<4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hd126650_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.9.0-hd126650_0.conda hash: - md5: 36df3cf05459de5d0a41c77c4329634b - sha256: f85452eca3ae0e156b1d1a321a1a9f4f58d44ff45236c0d8602ab96aaad3c6ba + md5: 470dd41567c68110f0ca2268cd434d8a + sha256: 0a8e8ce57bc5b22b318e9ab229cb12d29f96245fba7d9618c1b612862b9c84e5 category: main optional: false - name: azure-identity-cpp @@ -1778,19 +1777,19 @@ package: category: main optional: false - name: azure-storage-blobs-cpp - version: 12.12.0 + version: 12.13.0 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' azure-core-cpp: '>=1.13.0,<1.13.1.0a0' - azure-storage-common-cpp: '>=12.7.0,<12.7.1.0a0' - libgcc-ng: '>=12' - libstdcxx-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.12.0-hd2e3451_0.conda + azure-storage-common-cpp: '>=12.8.0,<12.8.1.0a0' + libgcc: '>=13' + libstdcxx: '>=13' + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h1d30c4a_0.conda hash: - md5: 61f1c193452f0daa582f39634627ea33 - sha256: 69a0f5c2a08a1a40524b343060debb8d92295e2cc5805c3db56dad7a41246a93 + md5: 378dd9c6347c112d301421a00d6446a9 + sha256: 376b1daf96f066c0bca09b61faee182355b21802bcaa6ad7f0494c65888a0b5b category: main optional: false - name: azure-storage-blobs-cpp @@ -1839,20 +1838,20 @@ package: category: main optional: false - name: azure-storage-common-cpp - version: 12.7.0 + version: 12.8.0 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' azure-core-cpp: '>=1.13.0,<1.13.1.0a0' - libgcc-ng: '>=12' - libstdcxx-ng: '>=12' + libgcc: '>=13' + libstdcxx: '>=13' libxml2: '>=2.12.7,<3.0a0' - openssl: '>=3.3.1,<4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.7.0-h10ac4d7_1.conda + openssl: '>=3.3.2,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-ha3822c6_0.conda hash: - md5: ab6d507ad16dbe2157920451d662e4a1 - sha256: 1030fa54497a73eb78c509d451f25701e2e781dc182e7647f55719f1e1f9bee8 + md5: d4a0f1f34459947781a6975beb505fa9 + sha256: 3bb614675fcae708eeb344fe1a21040007ab4efb1de2bd0f1c6171e4c23eb092 category: main optional: false - name: azure-storage-common-cpp @@ -1904,20 +1903,20 @@ package: category: main optional: false - name: azure-storage-files-datalake-cpp - version: 12.11.0 + version: 12.12.0 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' azure-core-cpp: '>=1.13.0,<1.13.1.0a0' - azure-storage-blobs-cpp: '>=12.12.0,<12.12.1.0a0' - azure-storage-common-cpp: '>=12.7.0,<12.7.1.0a0' - libgcc-ng: '>=12' - libstdcxx-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.11.0-h325d260_1.conda + azure-storage-blobs-cpp: '>=12.13.0,<12.13.1.0a0' + azure-storage-common-cpp: '>=12.8.0,<12.8.1.0a0' + libgcc: '>=13' + libstdcxx: '>=13' + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-h0f25b8a_0.conda hash: - md5: 11d926d1f4a75a1b03d1c053ca20424b - sha256: 1726fa324bb402e52d63227d6cb3f849957cd6841f8cb8aed58bb0c81203befb + md5: 7477b3a3f09927fbc47cd69e3f3430ea + sha256: 697ce350677465c2532c988ad6a4754c471ffa587c1b6e8833c2e73c0a697300 category: main optional: false - name: azure-storage-files-datalake-cpp @@ -2210,7 +2209,7 @@ package: category: main optional: false - name: bokeh - version: 3.5.2 + version: 3.5.1 manager: conda platform: linux-aarch64 dependencies: @@ -2224,14 +2223,14 @@ package: tornado: '>=6.2' xyzservices: '>=2021.09.1' contourpy: '>=1.2' - url: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.5.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.5.1-pyhd8ed1ab_0.conda hash: - md5: 38d785787ec83d0431b3855328395113 - sha256: 8af284264eb1cb9c08586ac8c212dcafc929ef1de3db9d0d7f8ca75190a30f4b + md5: d1e7e496405a75fd48ea94f2560c6843 + sha256: 3f6558cecdcd2c7865cb43a5b67b66e2387c2f6531eb45b236f33a3c496f4c2f category: main optional: false - name: bokeh - version: 3.5.2 + version: 3.5.1 manager: conda platform: osx-64 dependencies: @@ -2245,14 +2244,14 @@ package: tornado: '>=6.2' xyzservices: '>=2021.09.1' contourpy: '>=1.2' - url: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.5.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.5.1-pyhd8ed1ab_0.conda hash: - md5: 38d785787ec83d0431b3855328395113 - sha256: 8af284264eb1cb9c08586ac8c212dcafc929ef1de3db9d0d7f8ca75190a30f4b + md5: d1e7e496405a75fd48ea94f2560c6843 + sha256: 3f6558cecdcd2c7865cb43a5b67b66e2387c2f6531eb45b236f33a3c496f4c2f category: main optional: false - name: bokeh - version: 3.5.2 + version: 3.5.1 manager: conda platform: osx-arm64 dependencies: @@ -2266,10 +2265,10 @@ package: tornado: '>=6.2' xyzservices: '>=2021.09.1' contourpy: '>=1.2' - url: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.5.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.5.1-pyhd8ed1ab_0.conda hash: - md5: 38d785787ec83d0431b3855328395113 - sha256: 8af284264eb1cb9c08586ac8c212dcafc929ef1de3db9d0d7f8ca75190a30f4b + md5: d1e7e496405a75fd48ea94f2560c6843 + sha256: 3f6558cecdcd2c7865cb43a5b67b66e2387c2f6531eb45b236f33a3c496f4c2f category: main optional: false - name: brotli-python @@ -2293,14 +2292,14 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - libstdcxx: '>=13' - python: '>=3.12,<3.13.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + python: '>=3.12.0rc3,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h2aa54b4_1.conda hash: - md5: e1e9727063057168d95f27a032acd0a4 - sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: 7253fd6feb797007a3d290bbcfd23a84 + sha256: 5762bb7d3aaea2637840a6c30dbd398d450aa9376b507dbe5db75e92d221ddd5 category: main optional: false - name: brotli-python @@ -2308,14 +2307,13 @@ package: manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' - libcxx: '>=17' - python: '>=3.12,<3.13.0a0' + libcxx: '>=15.0.7' + python: '>=3.12.0rc3,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda + url: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312heafc425_1.conda hash: - md5: b95025822e43128835826ec0cc45a551 - sha256: 265764ff4ad9e5cfefe7ea85c53d95157bf16ac2c0e5f190c528e4c9c0c1e2d0 + md5: a288b88f06b8bfe0dedaf5c4b6ac6b7a + sha256: fc55988f9bc05a938ea4b8c20d6545bed6e9c6c10aa5147695f981136ca894c1 category: main optional: false - name: brotli-python @@ -2323,14 +2321,13 @@ package: manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' - libcxx: '>=17' - python: '>=3.12,<3.13.0a0' + libcxx: '>=15.0.7' + python: '>=3.12.0rc3,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312h9f69965_1.conda hash: - md5: a83c2ef76ccb11bc2349f4f17696b15d - sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: 1bc01b9ffdf42beb1a9fe4e9222e0567 + sha256: 3418b1738243abba99e931c017b952771eeaa1f353c07f7d45b55e83bb74fcb3 category: main optional: false - name: bzip2 @@ -2396,40 +2393,39 @@ package: category: main optional: false - name: c-ares - version: 1.33.1 + version: 1.32.3 manager: conda platform: linux-aarch64 dependencies: - __glibc: '>=2.28,<3.0.a0' - libgcc-ng: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.33.1-ha64f414_0.conda + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.32.3-h68df207_0.conda hash: - md5: 2165b9057be5ecaa90f2efd192f1155e - sha256: c9eddea9beb6ba629cb922082fcf144936cd47cc9ed7625e98106f314d237e0f + md5: 13d442f0a28e5a71073328a9b2140cb8 + sha256: 9c0505e6e8a23c85f10e4b5c8924c4f9d51cccb89b81b59369b167adf2448fd1 category: main optional: false - name: c-ares - version: 1.33.1 + version: 1.32.3 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - url: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.33.1-h44e7173_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.32.3-h51dda26_0.conda hash: - md5: b31a2de5edfddb308dda802eab2956dc - sha256: 98b0ac09472e6737fc4685147d1755028cc650d428369cbe3cb74ab38b327095 + md5: 5487b45a597e142da7839941ab2494a9 + sha256: 2454287fa7d32b2cd089ad2bb46c8f8634b6f409d6fa8892c37ccc66134ec076 category: main optional: false - name: c-ares - version: 1.33.1 + version: 1.32.3 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.33.1-hd74edd7_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.32.3-h99b78c6_0.conda hash: - md5: 5b69c16ee900aeffcf0103268d708518 - sha256: ad29a9cffa0504cb4bf7605963816feff3c7833f36b050e1e71912d09c38e3f6 + md5: c27bebc62991ab075b773f86ba64aa9b + sha256: dc8e2c2508295595675fb829345a156b0bb42b164271c2fcafb7fb193449bcf8 category: main optional: false - name: ca-certificates @@ -2444,36 +2440,36 @@ package: category: main optional: false - name: ca-certificates - version: 2024.8.30 + version: 2024.7.4 manager: conda platform: linux-aarch64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.7.4-hcefe29a_0.conda hash: - md5: 70e57e8f59d2c98f86b49c69e5074be5 - sha256: 2a2d827bee3775a85f0f1b2f2089291475c4416336d1b3a8cbce2964db547af8 + md5: c4c784a1336d72fff54f6b207f3dd75f + sha256: 562bfc2608d82996a08e5b5b2366ed319a51ace6a2518a004ba672edca75fc23 category: main optional: false - name: ca-certificates - version: 2024.8.30 + version: 2024.7.4 manager: conda platform: osx-64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.7.4-h8857fd0_0.conda hash: - md5: b7e5424e7f06547a903d28e4651dbb21 - sha256: 593f302d0f44c2c771e1614ee6d56fffdc7d616e6f187669c8b0e34ffce3e1ae + md5: 7df874a4b05b2d2b82826190170eaa0f + sha256: d16f46c489cb3192305c7d25b795333c5fc17bb0986de20598ed519f8c9cc9e4 category: main optional: false - name: ca-certificates - version: 2024.8.30 + version: 2024.7.4 manager: conda platform: osx-arm64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.7.4-hf0a4a13_0.conda hash: - md5: 40dec13fd8348dbe303e57be74bd3d35 - sha256: 2db1733f4b644575dbbdd7994a8f338e6ef937f5ebdb74acd557e9dda0211709 + md5: 21f9a33e5fe996189e470c19c5354dbe + sha256: 33a61116dae7f369b6ce92a7f2a1ff361ae737c675a493b11feb5570b89e0e3b category: main optional: false - name: cached-property @@ -2585,39 +2581,39 @@ package: category: main optional: false - name: certifi - version: 2024.8.30 + version: 2024.7.4 manager: conda platform: linux-aarch64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda hash: - md5: 12f7d00853807b0531775e9be891cb11 - sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f + md5: 24e7fd6ca65997938fff9e5ab6f653e4 + sha256: dd3577bb5275062c388c46b075dcb795f47f8dac561da7dd35fe504b936934e5 category: main optional: false - name: certifi - version: 2024.8.30 + version: 2024.7.4 manager: conda platform: osx-64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda hash: - md5: 12f7d00853807b0531775e9be891cb11 - sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f + md5: 24e7fd6ca65997938fff9e5ab6f653e4 + sha256: dd3577bb5275062c388c46b075dcb795f47f8dac561da7dd35fe504b936934e5 category: main optional: false - name: certifi - version: 2024.8.30 + version: 2024.7.4 manager: conda platform: osx-arm64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda hash: - md5: 12f7d00853807b0531775e9be891cb11 - sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f + md5: 24e7fd6ca65997938fff9e5ab6f653e4 + sha256: dd3577bb5275062c388c46b075dcb795f47f8dac561da7dd35fe504b936934e5 category: main optional: false - name: certipy @@ -2634,42 +2630,42 @@ package: category: main optional: false - name: certipy - version: 0.2.1 + version: 0.1.3 manager: conda platform: linux-aarch64 dependencies: - cryptography: '' - python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/certipy-0.2.1-pyhd8ed1ab_0.conda + pyopenssl: '' + python: '>=3.3' + url: https://conda.anaconda.org/conda-forge/noarch/certipy-0.1.3-pyhd8ed1ab_1.conda hash: - md5: 7566bb010833e59fb579ed520b9a7bc5 - sha256: be226c66b57f28be62b019e175a6c7fd477d33bbbdc7bdc45559b786be2e82b1 + md5: ac4247381b9397ace149d73cd2141b0b + sha256: 46101149698435d7c0aeab174b14aaa455da8b8e6b9c253edff18dcf453c2448 category: main optional: false - name: certipy - version: 0.2.1 + version: 0.1.3 manager: conda platform: osx-64 dependencies: - cryptography: '' - python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/certipy-0.2.1-pyhd8ed1ab_0.conda + pyopenssl: '' + python: '>=3.3' + url: https://conda.anaconda.org/conda-forge/noarch/certipy-0.1.3-pyhd8ed1ab_1.conda hash: - md5: 7566bb010833e59fb579ed520b9a7bc5 - sha256: be226c66b57f28be62b019e175a6c7fd477d33bbbdc7bdc45559b786be2e82b1 + md5: ac4247381b9397ace149d73cd2141b0b + sha256: 46101149698435d7c0aeab174b14aaa455da8b8e6b9c253edff18dcf453c2448 category: main optional: false - name: certipy - version: 0.2.1 + version: 0.1.3 manager: conda platform: osx-arm64 dependencies: - cryptography: '' - python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/certipy-0.2.1-pyhd8ed1ab_0.conda + pyopenssl: '' + python: '>=3.3' + url: https://conda.anaconda.org/conda-forge/noarch/certipy-0.1.3-pyhd8ed1ab_1.conda hash: - md5: 7566bb010833e59fb579ed520b9a7bc5 - sha256: be226c66b57f28be62b019e175a6c7fd477d33bbbdc7bdc45559b786be2e82b1 + md5: ac4247381b9397ace149d73cd2141b0b + sha256: 46101149698435d7c0aeab174b14aaa455da8b8e6b9c253edff18dcf453c2448 category: main optional: false - name: cffi @@ -2690,23 +2686,23 @@ package: category: main optional: false - name: cffi - version: 1.17.1 + version: 1.17.0 manager: conda platform: linux-aarch64 dependencies: libffi: '>=3.4,<4.0a0' - libgcc: '>=13' + libgcc-ng: '>=12' pycparser: '' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.0-py312h75e8286_0.conda hash: - md5: 1a256e5581b1099e9295cb84d53db3ea - sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: c88525d1b103277eb9b47a97842c7077 + sha256: b9b475cea6a927bd4e03d5756ac86b28d40cced7d0774c9cf95f37af1e7f4c02 category: main optional: false - name: cffi - version: 1.17.1 + version: 1.17.0 manager: conda platform: osx-64 dependencies: @@ -2715,14 +2711,14 @@ package: pycparser: '' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.0-py312h9620c06_0.conda hash: - md5: 5bbc69b8194fedc2792e451026cac34f - sha256: 94fe49aed25d84997e2630d6e776a75ee2a85bd64f258702c57faa4fe2986902 + md5: a928b653a0cd74e27b6ae52fc2b6be0a + sha256: a9ae28779a4ef1b38dd8cedf7f0b4068e75c6388c46214b8ea6431acca1486d2 category: main optional: false - name: cffi - version: 1.17.1 + version: 1.17.0 manager: conda platform: osx-arm64 dependencies: @@ -2731,10 +2727,10 @@ package: pycparser: '' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.0-py312h80c9ed6_0.conda hash: - md5: 19a5456f72f505881ba493979777b24e - sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 3bf9fe04b60b80487c26cfbcaee7afe8 + sha256: ea7f02777a4273b4adf8bf25af3869908290c5b7522d367902c059d559a23994 category: main optional: false - name: charset-normalizer @@ -2955,51 +2951,49 @@ package: category: main optional: false - name: contourpy - version: 1.3.0 + version: 1.2.1 manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - libstdcxx: '>=13' - numpy: '>=1.23' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + numpy: '>=1.20' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/contourpy-1.3.0-py312h451a7dd_2.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/contourpy-1.2.1-py312h8f0b210_0.conda hash: - md5: 143536f9a8654e85b8f55f81344a4a9c - sha256: bbc0d560e93274552ba9fa396c12fcc98a70d3cbd83a2f432fc2b084e6ffc16f + md5: 8cb92242bb79749ed43e081170ee2fe5 + sha256: a4f025840de4a476f695ee11b130cff565b76cf00902f73663c195717d6ec589 category: main optional: false - name: contourpy - version: 1.3.0 + version: 1.2.1 manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' - libcxx: '>=17' - numpy: '>=1.23' + libcxx: '>=16' + numpy: '>=1.20' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.0-py312hc5c4d5f_2.conda + url: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.2.1-py312h9230928_0.conda hash: - md5: 272979666cda74f84d9c158b378237b6 - sha256: fd7277e1085c5dad3e6b7196e253807df2bd6fc6e34f8e376a71b9a7bd05b82b + md5: 079df34ce7c71259cfdd394645370891 + sha256: 3879ed298cc9ec5486d13b7d65da960c813925837fe67fc385c9b31f7eefddc0 category: main optional: false - name: contourpy - version: 1.3.0 + version: 1.2.1 manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' - libcxx: '>=17' - numpy: '>=1.23' + libcxx: '>=16' + numpy: '>=1.20' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.0-py312h6142ec9_2.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.2.1-py312h0fef576_0.conda hash: - md5: 82c24bdbd3e72a940609b2159e2096a7 - sha256: 4121c210666b57d59bf25b771cfbb7bb3a1ccb6ca7aacbe37df44e385bb09bfc + md5: f825cced50aa6ae9f6ae158a49ecb68c + sha256: 89bb5c2f1f5daed13240d5fccfc51cd63b92293cee690c8b0a8f633971e588bb category: main optional: false - name: cryptography @@ -3020,51 +3014,51 @@ package: category: main optional: false - name: cryptography - version: 43.0.1 + version: 43.0.0 manager: conda platform: linux-aarch64 dependencies: cffi: '>=1.12' - libgcc: '>=13' - openssl: '>=3.3.2,<4.0a0' + libgcc-ng: '>=12' + openssl: '>=3.3.1,<4.0a0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-43.0.1-py312he723553_0.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-43.0.0-py312h608731a_0.conda hash: - md5: 9dc33a361ccddee90e9344c93befdebc - sha256: 88e258b4b33346532989d942cfca04808829dbac8f60f4ed1fc6d60212ee17c7 + md5: 2c244a4e011232667765a0ce476dcd66 + sha256: dd481dc0367df1754fbedf20ef67fc110662aa3e72ba69a0578c9939d5226b50 category: main optional: false - name: cryptography - version: 43.0.1 + version: 43.0.0 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' cffi: '>=1.12' - openssl: '>=3.3.2,<4.0a0' + openssl: '>=3.3.1,<4.0a0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/cryptography-43.0.1-py312h840e0bc_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/cryptography-43.0.0-py312h7e81a9d_0.conda hash: - md5: 68b96efad20289cf0b95b60ece143aa3 - sha256: 78b5cee4ec2c435b031c9aa11d483bb4a2a635ca15f4a658ecddc50abfef1db5 + md5: b6dd85ce77e1fd57a7b3000075521edf + sha256: 8c352ca6a84b2993e7810b720aee1d6a29078144936dbe7fabac9e7653ebcad2 category: main optional: false - name: cryptography - version: 43.0.1 + version: 43.0.0 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' cffi: '>=1.12' - openssl: '>=3.3.2,<4.0a0' + openssl: '>=3.3.1,<4.0a0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-43.0.1-py312h3ddc590_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-43.0.0-py312had01cb0_0.conda hash: - md5: 9ba6237df44b576b5920c2fb0641d882 - sha256: 1e49eeb78df3dce44e31de0caceaf257a762b1450d124ebb1ff47047e5376039 + md5: 9ff2cf0a517e5a9c8c448d95107aeba1 + sha256: 9b166fa4ca265eb4a77a1bd396b79b600343595218422b1bc757f20385a945cb category: main optional: false - name: cytoolz @@ -3126,235 +3120,235 @@ package: category: main optional: false - name: dask - version: 2024.9.1 + version: 2024.8.0 manager: conda platform: linux-64 dependencies: - bokeh: '>=3.1.0' + bokeh: '>=2.4.2,!=3.0.*' cytoolz: '>=0.11.0' - dask-core: '>=2024.9.1,<2024.9.2.0a0' + dask-core: '>=2024.8.0,<2024.8.1.0a0' dask-expr: '>=1.1,<1.2' - distributed: '>=2024.9.1,<2024.9.2.0a0' + distributed: '>=2024.8.0,<2024.8.1.0a0' jinja2: '>=2.10.3' lz4: '>=4.3.2' - numpy: '>=1.24' + numpy: '>=1.21' pandas: '>=2.0' pyarrow: '>=7.0' pyarrow-hotfix: '' - python: '>=3.10' - url: https://conda.anaconda.org/conda-forge/noarch/dask-2024.9.1-pyhd8ed1ab_0.conda + python: '>=3.9' + url: https://conda.anaconda.org/conda-forge/noarch/dask-2024.8.0-pyhd8ed1ab_0.conda hash: - md5: f4a81fe958755b2db083566a6a2da06f - sha256: 0007c996c91891df3a3fe3d6b8265f0b602396989d4ce87cd78d88fd94dfac48 + md5: 795f3557b117402208fe1e0e20d943ed + sha256: 00b84f6303b70f1e0902ce01b7a664bd7a04280d186f0c8af02dfff4b07d724e category: main optional: false - name: dask - version: 2024.9.1 + version: 2024.8.0 manager: conda platform: linux-aarch64 dependencies: pyarrow-hotfix: '' - python: '>=3.10' + python: '>=3.9' + numpy: '>=1.21' jinja2: '>=2.10.3' - numpy: '>=1.24' pyarrow: '>=7.0' cytoolz: '>=0.11.0' - pandas: '>=2.0' lz4: '>=4.3.2' + bokeh: '>=2.4.2,!=3.0.*' + pandas: '>=2.0' dask-expr: '>=1.1,<1.2' - bokeh: '>=3.1.0' - dask-core: '>=2024.9.1,<2024.9.2.0a0' - distributed: '>=2024.9.1,<2024.9.2.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/dask-2024.9.1-pyhd8ed1ab_0.conda + dask-core: '>=2024.8.0,<2024.8.1.0a0' + distributed: '>=2024.8.0,<2024.8.1.0a0' + url: https://conda.anaconda.org/conda-forge/noarch/dask-2024.8.0-pyhd8ed1ab_0.conda hash: - md5: f4a81fe958755b2db083566a6a2da06f - sha256: 0007c996c91891df3a3fe3d6b8265f0b602396989d4ce87cd78d88fd94dfac48 + md5: 795f3557b117402208fe1e0e20d943ed + sha256: 00b84f6303b70f1e0902ce01b7a664bd7a04280d186f0c8af02dfff4b07d724e category: main optional: false - name: dask - version: 2024.9.1 + version: 2024.8.0 manager: conda platform: osx-64 dependencies: pyarrow-hotfix: '' - python: '>=3.10' + python: '>=3.9' + numpy: '>=1.21' jinja2: '>=2.10.3' - numpy: '>=1.24' pyarrow: '>=7.0' cytoolz: '>=0.11.0' - pandas: '>=2.0' lz4: '>=4.3.2' + bokeh: '>=2.4.2,!=3.0.*' + pandas: '>=2.0' dask-expr: '>=1.1,<1.2' - bokeh: '>=3.1.0' - dask-core: '>=2024.9.1,<2024.9.2.0a0' - distributed: '>=2024.9.1,<2024.9.2.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/dask-2024.9.1-pyhd8ed1ab_0.conda + dask-core: '>=2024.8.0,<2024.8.1.0a0' + distributed: '>=2024.8.0,<2024.8.1.0a0' + url: https://conda.anaconda.org/conda-forge/noarch/dask-2024.8.0-pyhd8ed1ab_0.conda hash: - md5: f4a81fe958755b2db083566a6a2da06f - sha256: 0007c996c91891df3a3fe3d6b8265f0b602396989d4ce87cd78d88fd94dfac48 + md5: 795f3557b117402208fe1e0e20d943ed + sha256: 00b84f6303b70f1e0902ce01b7a664bd7a04280d186f0c8af02dfff4b07d724e category: main optional: false - name: dask - version: 2024.9.1 + version: 2024.8.0 manager: conda platform: osx-arm64 dependencies: pyarrow-hotfix: '' - python: '>=3.10' + python: '>=3.9' + numpy: '>=1.21' jinja2: '>=2.10.3' - numpy: '>=1.24' pyarrow: '>=7.0' cytoolz: '>=0.11.0' - pandas: '>=2.0' lz4: '>=4.3.2' + bokeh: '>=2.4.2,!=3.0.*' + pandas: '>=2.0' dask-expr: '>=1.1,<1.2' - bokeh: '>=3.1.0' - dask-core: '>=2024.9.1,<2024.9.2.0a0' - distributed: '>=2024.9.1,<2024.9.2.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/dask-2024.9.1-pyhd8ed1ab_0.conda + dask-core: '>=2024.8.0,<2024.8.1.0a0' + distributed: '>=2024.8.0,<2024.8.1.0a0' + url: https://conda.anaconda.org/conda-forge/noarch/dask-2024.8.0-pyhd8ed1ab_0.conda hash: - md5: f4a81fe958755b2db083566a6a2da06f - sha256: 0007c996c91891df3a3fe3d6b8265f0b602396989d4ce87cd78d88fd94dfac48 + md5: 795f3557b117402208fe1e0e20d943ed + sha256: 00b84f6303b70f1e0902ce01b7a664bd7a04280d186f0c8af02dfff4b07d724e category: main optional: false - name: dask-core - version: 2024.9.1 + version: 2024.8.0 manager: conda platform: linux-64 dependencies: click: '>=8.1' - cloudpickle: '>=3.0.0' + cloudpickle: '>=1.5.0' fsspec: '>=2021.09.0' importlib_metadata: '>=4.13.0' packaging: '>=20.0' partd: '>=1.4.0' - python: '>=3.10' + python: '>=3.9' pyyaml: '>=5.3.1' toolz: '>=0.10.0' - url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.9.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.8.0-pyhd8ed1ab_0.conda hash: - md5: 0bcf33226f8dbe7e2d6acefb99a7323f - sha256: 08d01f45f711fcb093e04a491825f9dd0f4129e6432587f5f84a3cbd10a4030d + md5: bf68bf9ff9a18f1b17aa8c817225aee0 + sha256: e4fc0235e03931d2d28d50f193c9a2c7b5ae8a70728dfd5a954f1d2cc7acfd92 category: main optional: false - name: dask-core - version: 2024.9.1 + version: 2024.8.0 manager: conda platform: linux-aarch64 dependencies: - python: '>=3.10' + python: '>=3.9' packaging: '>=20.0' pyyaml: '>=5.3.1' + cloudpickle: '>=1.5.0' toolz: '>=0.10.0' click: '>=8.1' importlib_metadata: '>=4.13.0' fsspec: '>=2021.09.0' - cloudpickle: '>=3.0.0' partd: '>=1.4.0' - url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.9.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.8.0-pyhd8ed1ab_0.conda hash: - md5: 0bcf33226f8dbe7e2d6acefb99a7323f - sha256: 08d01f45f711fcb093e04a491825f9dd0f4129e6432587f5f84a3cbd10a4030d + md5: bf68bf9ff9a18f1b17aa8c817225aee0 + sha256: e4fc0235e03931d2d28d50f193c9a2c7b5ae8a70728dfd5a954f1d2cc7acfd92 category: main optional: false - name: dask-core - version: 2024.9.1 + version: 2024.8.0 manager: conda platform: osx-64 dependencies: - python: '>=3.10' + python: '>=3.9' packaging: '>=20.0' pyyaml: '>=5.3.1' + cloudpickle: '>=1.5.0' toolz: '>=0.10.0' click: '>=8.1' importlib_metadata: '>=4.13.0' fsspec: '>=2021.09.0' - cloudpickle: '>=3.0.0' partd: '>=1.4.0' - url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.9.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.8.0-pyhd8ed1ab_0.conda hash: - md5: 0bcf33226f8dbe7e2d6acefb99a7323f - sha256: 08d01f45f711fcb093e04a491825f9dd0f4129e6432587f5f84a3cbd10a4030d + md5: bf68bf9ff9a18f1b17aa8c817225aee0 + sha256: e4fc0235e03931d2d28d50f193c9a2c7b5ae8a70728dfd5a954f1d2cc7acfd92 category: main optional: false - name: dask-core - version: 2024.9.1 + version: 2024.8.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.10' + python: '>=3.9' packaging: '>=20.0' pyyaml: '>=5.3.1' + cloudpickle: '>=1.5.0' toolz: '>=0.10.0' click: '>=8.1' importlib_metadata: '>=4.13.0' fsspec: '>=2021.09.0' - cloudpickle: '>=3.0.0' partd: '>=1.4.0' - url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.9.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.8.0-pyhd8ed1ab_0.conda hash: - md5: 0bcf33226f8dbe7e2d6acefb99a7323f - sha256: 08d01f45f711fcb093e04a491825f9dd0f4129e6432587f5f84a3cbd10a4030d + md5: bf68bf9ff9a18f1b17aa8c817225aee0 + sha256: e4fc0235e03931d2d28d50f193c9a2c7b5ae8a70728dfd5a954f1d2cc7acfd92 category: main optional: false - name: dask-expr - version: 1.1.15 + version: 1.1.10 manager: conda platform: linux-64 dependencies: - dask-core: 2024.9.1 + dask-core: 2024.8.0 pandas: '>=2' pyarrow: '' - python: '>=3.10' - url: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.15-pyhd8ed1ab_0.conda + python: '>=3.9' + url: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.10-pyhd8ed1ab_0.conda hash: - md5: 865cd3fdeffd42a9682f3bb992e828e8 - sha256: 7ff9c79fc369de2b9da433108cd02ed5a99045493b366f6ce7acaa2dd097a6b0 + md5: 88efd31bf04d9f7a2ac7d02ab568d37d + sha256: dfdcba9779b01f6f1048b78b0357f466bf08ab3466be52c03a571ce64a6b7f3c category: main optional: false - name: dask-expr - version: 1.1.15 + version: 1.1.10 manager: conda platform: linux-aarch64 dependencies: pyarrow: '' - python: '>=3.10' + python: '>=3.9' pandas: '>=2' - dask-core: 2024.9.1 - url: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.15-pyhd8ed1ab_0.conda + dask-core: 2024.8.0 + url: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.10-pyhd8ed1ab_0.conda hash: - md5: 865cd3fdeffd42a9682f3bb992e828e8 - sha256: 7ff9c79fc369de2b9da433108cd02ed5a99045493b366f6ce7acaa2dd097a6b0 + md5: 88efd31bf04d9f7a2ac7d02ab568d37d + sha256: dfdcba9779b01f6f1048b78b0357f466bf08ab3466be52c03a571ce64a6b7f3c category: main optional: false - name: dask-expr - version: 1.1.15 + version: 1.1.10 manager: conda platform: osx-64 dependencies: pyarrow: '' - python: '>=3.10' + python: '>=3.9' pandas: '>=2' - dask-core: 2024.9.1 - url: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.15-pyhd8ed1ab_0.conda + dask-core: 2024.8.0 + url: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.10-pyhd8ed1ab_0.conda hash: - md5: 865cd3fdeffd42a9682f3bb992e828e8 - sha256: 7ff9c79fc369de2b9da433108cd02ed5a99045493b366f6ce7acaa2dd097a6b0 + md5: 88efd31bf04d9f7a2ac7d02ab568d37d + sha256: dfdcba9779b01f6f1048b78b0357f466bf08ab3466be52c03a571ce64a6b7f3c category: main optional: false - name: dask-expr - version: 1.1.15 + version: 1.1.10 manager: conda platform: osx-arm64 dependencies: pyarrow: '' - python: '>=3.10' + python: '>=3.9' pandas: '>=2' - dask-core: 2024.9.1 - url: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.15-pyhd8ed1ab_0.conda + dask-core: 2024.8.0 + url: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.10-pyhd8ed1ab_0.conda hash: - md5: 865cd3fdeffd42a9682f3bb992e828e8 - sha256: 7ff9c79fc369de2b9da433108cd02ed5a99045493b366f6ce7acaa2dd097a6b0 + md5: 88efd31bf04d9f7a2ac7d02ab568d37d + sha256: dfdcba9779b01f6f1048b78b0357f466bf08ab3466be52c03a571ce64a6b7f3c category: main optional: false - name: dask-gateway @@ -3510,48 +3504,48 @@ package: category: main optional: false - name: debugpy - version: 1.8.6 + version: 1.8.5 manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - libstdcxx: '>=13' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.6-py312h6f74592_0.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.5-py312h7f10901_0.conda hash: - md5: e4e0328498963bf589de9b066feadb40 - sha256: ccbefba4b498a11ab72510c9e895bb1ef7d7e4322d0c229dc24a1060e285697f + md5: 064f2725df3ddc1c1295840a9f512836 + sha256: 20a2f24a72d54aa5d785af661419f70601e92ae5504acc927c0871008b648a06 category: main optional: false - name: debugpy - version: 1.8.6 + version: 1.8.5 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - libcxx: '>=17' + libcxx: '>=16' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.6-py312h5861a67_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.5-py312h28f332c_0.conda hash: - md5: 5dcf9133d68237c59931ab728e6ccadc - sha256: 71ee52f2b8676767ad781c2038873b06300b851729ca2fc3c4b8a5e211f229b6 + md5: 7de5f5df99688c0616b26a942b2a8161 + sha256: f7edf4c79176e84f187435c88ea9afced2a1381021769a29e891c436a7a1af83 category: main optional: false - name: debugpy - version: 1.8.6 + version: 1.8.5 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - libcxx: '>=17' + libcxx: '>=16' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.6-py312hde4cb15_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.5-py312h5c2e7bc_0.conda hash: - md5: d52b05c3841d48e4ef32c6e3a2492282 - sha256: af33cd29195de3d85c74bac177c0dbe24d91ce3cd19801045eaf8d31700e5d92 + md5: a15c8085e261c23bf56f6523ae67ef78 + sha256: 17f1a3d16cd89c44b227d15a01f7e0de01d4d5e31b5dfd546aec9cae735a4a55 category: main optional: false - name: decorator @@ -3651,115 +3645,115 @@ package: category: main optional: false - name: distributed - version: 2024.9.1 + version: 2024.8.0 manager: conda platform: linux-64 dependencies: click: '>=8.0' - cloudpickle: '>=3.0.0' - cytoolz: '>=0.11.2' - dask-core: '>=2024.9.1,<2024.9.2.0a0' + cloudpickle: '>=1.5.0' + cytoolz: '>=0.10.1' + dask-core: '>=2024.8.0,<2024.8.1.0a0' jinja2: '>=2.10.3' locket: '>=1.0.0' - msgpack-python: '>=1.0.2' + msgpack-python: '>=1.0.0' packaging: '>=20.0' - psutil: '>=5.8.0' - python: '>=3.10' - pyyaml: '>=5.4.1' + psutil: '>=5.7.2' + python: '>=3.9' + pyyaml: '>=5.3.1' sortedcontainers: '>=2.0.5' tblib: '>=1.6.0' - toolz: '>=0.11.2' - tornado: '>=6.2.0' - urllib3: '>=1.26.5' + toolz: '>=0.10.0' + tornado: '>=6.0.4' + urllib3: '>=1.24.3' zict: '>=3.0.0' - url: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.9.1-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.8.0-pyhd8ed1ab_0.conda hash: - md5: a9f1c72da2654a8ae07a33ed3975d328 - sha256: d4d934d3b5c73d8ccadd7c1b37cfba99b096403f33d4cf0085108daeed46e3c9 + md5: f9a7fbaeb79d4b57d1ed742930b4eec4 + sha256: ecc6061749213572490b8f118bdfc24729350c302d6b6baaf20d398f814708f5 category: main optional: false - name: distributed - version: 2024.9.1 + version: 2024.8.0 manager: conda platform: linux-aarch64 dependencies: - python: '>=3.10' + python: '>=3.9' packaging: '>=20.0' - pyyaml: '>=5.4.1' + pyyaml: '>=5.3.1' + cloudpickle: '>=1.5.0' click: '>=8.0' - psutil: '>=5.8.0' + msgpack-python: '>=1.0.0' + toolz: '>=0.10.0' + urllib3: '>=1.24.3' jinja2: '>=2.10.3' - tornado: '>=6.2.0' tblib: '>=1.6.0' locket: '>=1.0.0' - urllib3: '>=1.26.5' + tornado: '>=6.0.4' sortedcontainers: '>=2.0.5' + cytoolz: '>=0.10.1' + psutil: '>=5.7.2' zict: '>=3.0.0' - cloudpickle: '>=3.0.0' - msgpack-python: '>=1.0.2' - toolz: '>=0.11.2' - cytoolz: '>=0.11.2' - dask-core: '>=2024.9.1,<2024.9.2.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.9.1-pyhd8ed1ab_0.conda + dask-core: '>=2024.8.0,<2024.8.1.0a0' + url: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.8.0-pyhd8ed1ab_0.conda hash: - md5: a9f1c72da2654a8ae07a33ed3975d328 - sha256: d4d934d3b5c73d8ccadd7c1b37cfba99b096403f33d4cf0085108daeed46e3c9 + md5: f9a7fbaeb79d4b57d1ed742930b4eec4 + sha256: ecc6061749213572490b8f118bdfc24729350c302d6b6baaf20d398f814708f5 category: main optional: false - name: distributed - version: 2024.9.1 + version: 2024.8.0 manager: conda platform: osx-64 dependencies: - python: '>=3.10' + python: '>=3.9' packaging: '>=20.0' - pyyaml: '>=5.4.1' + pyyaml: '>=5.3.1' + cloudpickle: '>=1.5.0' click: '>=8.0' - psutil: '>=5.8.0' + msgpack-python: '>=1.0.0' + toolz: '>=0.10.0' + urllib3: '>=1.24.3' jinja2: '>=2.10.3' - tornado: '>=6.2.0' tblib: '>=1.6.0' locket: '>=1.0.0' - urllib3: '>=1.26.5' + tornado: '>=6.0.4' sortedcontainers: '>=2.0.5' + cytoolz: '>=0.10.1' + psutil: '>=5.7.2' zict: '>=3.0.0' - cloudpickle: '>=3.0.0' - msgpack-python: '>=1.0.2' - toolz: '>=0.11.2' - cytoolz: '>=0.11.2' - dask-core: '>=2024.9.1,<2024.9.2.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.9.1-pyhd8ed1ab_0.conda + dask-core: '>=2024.8.0,<2024.8.1.0a0' + url: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.8.0-pyhd8ed1ab_0.conda hash: - md5: a9f1c72da2654a8ae07a33ed3975d328 - sha256: d4d934d3b5c73d8ccadd7c1b37cfba99b096403f33d4cf0085108daeed46e3c9 + md5: f9a7fbaeb79d4b57d1ed742930b4eec4 + sha256: ecc6061749213572490b8f118bdfc24729350c302d6b6baaf20d398f814708f5 category: main optional: false - name: distributed - version: 2024.9.1 + version: 2024.8.0 manager: conda platform: osx-arm64 dependencies: - python: '>=3.10' + python: '>=3.9' packaging: '>=20.0' - pyyaml: '>=5.4.1' + pyyaml: '>=5.3.1' + cloudpickle: '>=1.5.0' click: '>=8.0' - psutil: '>=5.8.0' + msgpack-python: '>=1.0.0' + toolz: '>=0.10.0' + urllib3: '>=1.24.3' jinja2: '>=2.10.3' - tornado: '>=6.2.0' tblib: '>=1.6.0' locket: '>=1.0.0' - urllib3: '>=1.26.5' + tornado: '>=6.0.4' sortedcontainers: '>=2.0.5' + cytoolz: '>=0.10.1' + psutil: '>=5.7.2' zict: '>=3.0.0' - cloudpickle: '>=3.0.0' - msgpack-python: '>=1.0.2' - toolz: '>=0.11.2' - cytoolz: '>=0.11.2' - dask-core: '>=2024.9.1,<2024.9.2.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.9.1-pyhd8ed1ab_0.conda + dask-core: '>=2024.8.0,<2024.8.1.0a0' + url: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.8.0-pyhd8ed1ab_0.conda hash: - md5: a9f1c72da2654a8ae07a33ed3975d328 - sha256: d4d934d3b5c73d8ccadd7c1b37cfba99b096403f33d4cf0085108daeed46e3c9 + md5: f9a7fbaeb79d4b57d1ed742930b4eec4 + sha256: ecc6061749213572490b8f118bdfc24729350c302d6b6baaf20d398f814708f5 category: main optional: false - name: entrypoints @@ -3871,39 +3865,39 @@ package: category: main optional: false - name: executing - version: 2.1.0 + version: 2.0.1 manager: conda platform: linux-aarch64 dependencies: python: '>=2.7' - url: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda hash: - md5: d0441db20c827c11721889a241df1220 - sha256: a52d7516e2e11d3eb10908e10d3eb3f8ef267fea99ed9b09d52d96c4db3441b8 + md5: e16be50e378d8a4533b989035b196ab8 + sha256: c738804ab1e6376f8ea63372229a04c8d658dc90fd5a218c6273a2eaf02f4057 category: main optional: false - name: executing - version: 2.1.0 + version: 2.0.1 manager: conda platform: osx-64 dependencies: python: '>=2.7' - url: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda hash: - md5: d0441db20c827c11721889a241df1220 - sha256: a52d7516e2e11d3eb10908e10d3eb3f8ef267fea99ed9b09d52d96c4db3441b8 + md5: e16be50e378d8a4533b989035b196ab8 + sha256: c738804ab1e6376f8ea63372229a04c8d658dc90fd5a218c6273a2eaf02f4057 category: main optional: false - name: executing - version: 2.1.0 + version: 2.0.1 manager: conda platform: osx-arm64 dependencies: python: '>=2.7' - url: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda hash: - md5: d0441db20c827c11721889a241df1220 - sha256: a52d7516e2e11d3eb10908e10d3eb3f8ef267fea99ed9b09d52d96c4db3441b8 + md5: e16be50e378d8a4533b989035b196ab8 + sha256: c738804ab1e6376f8ea63372229a04c8d658dc90fd5a218c6273a2eaf02f4057 category: main optional: false - name: fqdn @@ -4032,13 +4026,13 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' + libgcc-ng: '>=12' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.4.1-py312hb2c0f52_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.4.1-py312hdd3e373_0.conda hash: - md5: d896d14c12c437bc3452fcec5535a293 - sha256: 58ae6de190940eeda497201045df46e858074cb01f63d45e779518dab0cd2916 + md5: bfaa324fd6c344e2dd60d848b46b9ad0 + sha256: d91dbf38ea5bcce485026742d233c2828934dd0c73baccf361b6e4f1aa0dbfec category: main optional: false - name: frozenlist @@ -4046,13 +4040,12 @@ package: manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.4.1-py312hb553811_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.4.1-py312h41838bb_0.conda hash: - md5: cdddcd79505d7e048ad42aacc3915610 - sha256: 963baa8c58201c217f48decb260d4961e64fe1cfa58cc3fccd6d5d22548617fc + md5: 2057c85ac7062a3acf8a66af2523e6bf + sha256: 0b8160b6cbfb92a63afee33640ea4e8174e8f6374b1baa55086b0f50d9477c64 category: main optional: false - name: frozenlist @@ -4060,13 +4053,12 @@ package: manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.4.1-py312h024a12e_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.4.1-py312he37b823_0.conda hash: - md5: 36a854ba6031d1b963db6988a561948b - sha256: 26bd6227520e1463fdc5d58fa8f7a4b13b432c9b549ac1c576057add3ec51524 + md5: 6cf2f14438b53376e9e1a4e75b44935c + sha256: c51735c67461632ff8bc0bbf5a3d0b389b8e9e4686a13642a010dcb514954e35 category: main optional: false - name: fsspec @@ -4082,39 +4074,39 @@ package: category: main optional: false - name: fsspec - version: 2024.9.0 + version: 2024.6.1 manager: conda platform: linux-aarch64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.6.1-pyhff2d567_0.conda hash: - md5: ace4329fbff4c69ab0309db6da182987 - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc + md5: 996bf792cdb8c0ac38ff54b9fde56841 + sha256: 2b8e98294c70d9a33ee0ef27539a8a8752a26efeafa0225e85dc876ef5bb49f4 category: main optional: false - name: fsspec - version: 2024.9.0 + version: 2024.6.1 manager: conda platform: osx-64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.6.1-pyhff2d567_0.conda hash: - md5: ace4329fbff4c69ab0309db6da182987 - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc + md5: 996bf792cdb8c0ac38ff54b9fde56841 + sha256: 2b8e98294c70d9a33ee0ef27539a8a8752a26efeafa0225e85dc876ef5bb49f4 category: main optional: false - name: fsspec - version: 2024.9.0 + version: 2024.6.1 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.6.1-pyhff2d567_0.conda hash: - md5: ace4329fbff4c69ab0309db6da182987 - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc + md5: 996bf792cdb8c0ac38ff54b9fde56841 + sha256: 2b8e98294c70d9a33ee0ef27539a8a8752a26efeafa0225e85dc876ef5bb49f4 category: main optional: false - name: gflags @@ -4136,12 +4128,12 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - libstdcxx: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + libgcc-ng: '>=7.5.0' + libstdcxx-ng: '>=7.5.0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h54f1f3f_1004.tar.bz2 hash: - md5: 4ff634d515abbf664774b5e1168a9744 - sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: f286d3464cc8d467c92e4f17990c98c1 + sha256: c72f18b94048df5525d8ae73a9efb8d830048b70328d63738d91d3ea54e55b91 category: main optional: false - name: gflags @@ -4149,12 +4141,11 @@ package: manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' - libcxx: '>=17' - url: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hac325c4_1005.conda + libcxx: '>=10.0.1' + url: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hb1e8313_1004.tar.bz2 hash: - md5: a26de8814083a6971f14f9c8c3cb36c2 - sha256: c0bea66f71a6f4baa8d4f0248e17f65033d558d9e882c0af571b38bcca3e4b46 + md5: 3f59cc77a929537e42120faf104e0d16 + sha256: 39540f879057ae529cad131644af111a8c3c48b384ec6212de6a5381e0863948 category: main optional: false - name: gflags @@ -4162,12 +4153,11 @@ package: manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' - libcxx: '>=17' - url: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + libcxx: '>=11.0.0.rc1' + url: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hc88da5d_1004.tar.bz2 hash: - md5: 57a511a5905caa37540eb914dfcbf1fb - sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: aab9ddfad863e9ef81229a1f8852211b + sha256: 25d4a20af2e5ace95fdec88970f6d190e77e20074d2f6d3cef766198b76a4289 category: main optional: false - name: glog @@ -4243,48 +4233,46 @@ package: category: main optional: false - name: greenlet - version: 3.1.1 + version: 3.0.3 manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - libstdcxx: '>=13' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/greenlet-3.1.1-py312h6f74592_0.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/greenlet-3.0.3-py312h2aa54b4_0.conda hash: - md5: 53dca906564f472be8b3b4d6dbfd879a - sha256: b9bc110e04882b4f3eeddfeefb76b13ea81645cd4f68229533f1c6e9a3cd3e18 + md5: 68e5a7d27bbe600bc098175e25509351 + sha256: f7e92730751510be702896a047cef3744587099cfe031de491f9ecb83f5465ff category: main optional: false - name: greenlet - version: 3.1.1 + version: 3.0.3 manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' - libcxx: '>=17' + libcxx: '>=15' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.1.1-py312h5861a67_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.0.3-py312hede676d_0.conda hash: - md5: 6c0ca5d46ec2d7ced6dda6d8f3adf52f - sha256: 5def59561e1788e6752a17596d92ace801516539710967655218b40595ace3c2 + md5: a2625dbdaf5969de36973cea17cc6ea8 + sha256: 37dae8f15ecb190adcd5e5f527bed03751a866311b7eded89a59050425c84370 category: main optional: false - name: greenlet - version: 3.1.1 + version: 3.0.3 manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' - libcxx: '>=17' + libcxx: '>=15' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.1.1-py312hde4cb15_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.0.3-py312h20a0b95_0.conda hash: - md5: 6b39df249302d2e1513c5a01aad1d912 - sha256: 8afa00a2a27b27aec39d986df7a839af4093e44c54c607bffea8300057a87751 + md5: 92ca171dcc49aadb06ac7d1d68238633 + sha256: d0e871c78eaaace5461ba4ce7e08546f7368840fa98cab91d705f246cc3b2b98 category: main optional: false - name: h11 @@ -4444,7 +4432,7 @@ package: category: main optional: false - name: httpcore - version: 1.0.5 + version: 1.0.6 manager: conda platform: linux-64 dependencies: @@ -4454,10 +4442,10 @@ package: h2: '>=3,<5' python: '>=3.8' sniffio: 1.* - url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda hash: - md5: a6b9a0158301e697e4d0a36a3d60e133 - sha256: 4025644200eefa0598e4600a66fd4804a57d9fd7054a5c8c45e508fd875e0b84 + md5: b8e1901ef9a215fc41ecfb6bef7e0943 + sha256: 8952c3f1eb18bf4d7e813176c3b23e0af4e863e8b05087e73f74f371d73077ca category: main optional: false - name: httpcore @@ -4529,7 +4517,7 @@ package: category: main optional: false - name: httpx - version: 0.27.2 + version: 0.27.0 manager: conda platform: linux-aarch64 dependencies: @@ -4539,14 +4527,14 @@ package: anyio: '' python: '>=3.8' httpcore: 1.* - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda hash: - md5: 7e9ac3faeebdbd7b53b462c41891e7f7 - sha256: 1a33f160548bf447e15c0273899d27e4473f1d5b7ca1441232ec2d9d07c56d03 + md5: 9f359af5a886fd6ca6b2b6ea02e58332 + sha256: fdaf341fb2630b7afe8238315448fc93947f77ebfa4da68bb349e1bcf820af58 category: main optional: false - name: httpx - version: 0.27.2 + version: 0.27.0 manager: conda platform: osx-64 dependencies: @@ -4556,14 +4544,14 @@ package: anyio: '' python: '>=3.8' httpcore: 1.* - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda hash: - md5: 7e9ac3faeebdbd7b53b462c41891e7f7 - sha256: 1a33f160548bf447e15c0273899d27e4473f1d5b7ca1441232ec2d9d07c56d03 + md5: 9f359af5a886fd6ca6b2b6ea02e58332 + sha256: fdaf341fb2630b7afe8238315448fc93947f77ebfa4da68bb349e1bcf820af58 category: main optional: false - name: httpx - version: 0.27.2 + version: 0.27.0 manager: conda platform: osx-arm64 dependencies: @@ -4573,10 +4561,10 @@ package: anyio: '' python: '>=3.8' httpcore: 1.* - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda hash: - md5: 7e9ac3faeebdbd7b53b462c41891e7f7 - sha256: 1a33f160548bf447e15c0273899d27e4473f1d5b7ca1441232ec2d9d07c56d03 + md5: 9f359af5a886fd6ca6b2b6ea02e58332 + sha256: fdaf341fb2630b7afe8238315448fc93947f77ebfa4da68bb349e1bcf820af58 category: main optional: false - name: hyperframe @@ -4691,39 +4679,39 @@ package: category: main optional: false - name: idna - version: '3.10' + version: '3.7' manager: conda platform: linux-aarch64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda hash: - md5: 7ba2ede0e7c795ff95088daf0dc59753 - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 + md5: c0cc1420498b17414d8617d0b9f506ca + sha256: 9687ee909ed46169395d4f99a0ee94b80a52f87bed69cd454bb6d37ffeb0ec7b category: main optional: false - name: idna - version: '3.10' + version: '3.7' manager: conda platform: osx-64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda hash: - md5: 7ba2ede0e7c795ff95088daf0dc59753 - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 + md5: c0cc1420498b17414d8617d0b9f506ca + sha256: 9687ee909ed46169395d4f99a0ee94b80a52f87bed69cd454bb6d37ffeb0ec7b category: main optional: false - name: idna - version: '3.10' + version: '3.7' manager: conda platform: osx-arm64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda hash: - md5: 7ba2ede0e7c795ff95088daf0dc59753 - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 + md5: c0cc1420498b17414d8617d0b9f506ca + sha256: 9687ee909ed46169395d4f99a0ee94b80a52f87bed69cd454bb6d37ffeb0ec7b category: main optional: false - name: importlib-metadata @@ -4740,42 +4728,42 @@ package: category: main optional: false - name: importlib-metadata - version: 8.5.0 + version: 8.2.0 manager: conda platform: linux-aarch64 dependencies: python: '>=3.8' zipp: '>=0.5' - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda hash: - md5: 54198435fce4d64d8a89af22573012a8 - sha256: 7194700ce1a5ad2621fd68e894dd8c1ceaff9a38723e6e0e5298fdef13017b1c + md5: c261d14fc7f49cdd403868998a18c318 + sha256: 15dd2beba1c6f780fec6c5351bbce815d27a29561f422fe830133c995ef90b8a category: main optional: false - name: importlib-metadata - version: 8.5.0 + version: 8.2.0 manager: conda platform: osx-64 dependencies: python: '>=3.8' zipp: '>=0.5' - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda hash: - md5: 54198435fce4d64d8a89af22573012a8 - sha256: 7194700ce1a5ad2621fd68e894dd8c1ceaff9a38723e6e0e5298fdef13017b1c + md5: c261d14fc7f49cdd403868998a18c318 + sha256: 15dd2beba1c6f780fec6c5351bbce815d27a29561f422fe830133c995ef90b8a category: main optional: false - name: importlib-metadata - version: 8.5.0 + version: 8.2.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' zipp: '>=0.5' - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda hash: - md5: 54198435fce4d64d8a89af22573012a8 - sha256: 7194700ce1a5ad2621fd68e894dd8c1ceaff9a38723e6e0e5298fdef13017b1c + md5: c261d14fc7f49cdd403868998a18c318 + sha256: 15dd2beba1c6f780fec6c5351bbce815d27a29561f422fe830133c995ef90b8a category: main optional: false - name: importlib_metadata @@ -4791,39 +4779,39 @@ package: category: main optional: false - name: importlib_metadata - version: 8.5.0 + version: 8.2.0 manager: conda platform: linux-aarch64 dependencies: - importlib-metadata: '>=8.5.0,<8.5.1.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + importlib-metadata: '>=8.2.0,<8.2.1.0a0' + url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.2.0-hd8ed1ab_0.conda hash: - md5: 2a92e152208121afadf85a5e1f3a5f4d - sha256: 313b8a05211bacd6b15ab2621cb73d7f41ea5c6cae98db53367d47833f03fef1 + md5: 0fd030dce707a6654472cf7619b0b01b + sha256: 4a0eacc41786d97176fb53c19d25c4f9b8ab4c9a0ee1fd6f09bc13ca197c21d9 category: main optional: false - name: importlib_metadata - version: 8.5.0 + version: 8.2.0 manager: conda platform: osx-64 dependencies: - importlib-metadata: '>=8.5.0,<8.5.1.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + importlib-metadata: '>=8.2.0,<8.2.1.0a0' + url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.2.0-hd8ed1ab_0.conda hash: - md5: 2a92e152208121afadf85a5e1f3a5f4d - sha256: 313b8a05211bacd6b15ab2621cb73d7f41ea5c6cae98db53367d47833f03fef1 + md5: 0fd030dce707a6654472cf7619b0b01b + sha256: 4a0eacc41786d97176fb53c19d25c4f9b8ab4c9a0ee1fd6f09bc13ca197c21d9 category: main optional: false - name: importlib_metadata - version: 8.5.0 + version: 8.2.0 manager: conda platform: osx-arm64 dependencies: - importlib-metadata: '>=8.5.0,<8.5.1.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + importlib-metadata: '>=8.2.0,<8.2.1.0a0' + url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.2.0-hd8ed1ab_0.conda hash: - md5: 2a92e152208121afadf85a5e1f3a5f4d - sha256: 313b8a05211bacd6b15ab2621cb73d7f41ea5c6cae98db53367d47833f03fef1 + md5: 0fd030dce707a6654472cf7619b0b01b + sha256: 4a0eacc41786d97176fb53c19d25c4f9b8ab4c9a0ee1fd6f09bc13ca197c21d9 category: main optional: false - name: importlib_resources @@ -4840,42 +4828,42 @@ package: category: main optional: false - name: importlib_resources - version: 6.4.5 + version: 6.4.0 manager: conda platform: linux-aarch64 dependencies: python: '>=3.8' zipp: '>=3.1.0' - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda hash: - md5: c808991d29b9838fb4d96ce8267ec9ec - sha256: 2cb9db3e40033c3df72d3defc678a012840378fd55a67e4351363d4b321a0dc1 + md5: c5d3907ad8bd7bf557521a1833cf7e6d + sha256: c6ae80c0beaeabb342c5b041f19669992ae6e937dbec56ced766cb035900f9de category: main optional: false - name: importlib_resources - version: 6.4.5 + version: 6.4.0 manager: conda platform: osx-64 dependencies: python: '>=3.8' zipp: '>=3.1.0' - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda hash: - md5: c808991d29b9838fb4d96ce8267ec9ec - sha256: 2cb9db3e40033c3df72d3defc678a012840378fd55a67e4351363d4b321a0dc1 + md5: c5d3907ad8bd7bf557521a1833cf7e6d + sha256: c6ae80c0beaeabb342c5b041f19669992ae6e937dbec56ced766cb035900f9de category: main optional: false - name: importlib_resources - version: 6.4.5 + version: 6.4.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' zipp: '>=3.1.0' - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda hash: - md5: c808991d29b9838fb4d96ce8267ec9ec - sha256: 2cb9db3e40033c3df72d3defc678a012840378fd55a67e4351363d4b321a0dc1 + md5: c5d3907ad8bd7bf557521a1833cf7e6d + sha256: c6ae80c0beaeabb342c5b041f19669992ae6e937dbec56ced766cb035900f9de category: main optional: false - name: ipykernel @@ -4981,7 +4969,7 @@ package: category: main optional: false - name: ipython - version: 8.27.0 + version: 8.28.0 manager: conda platform: linux-64 dependencies: @@ -4998,14 +4986,14 @@ package: stack_data: '' traitlets: '>=5.13.0' typing_extensions: '>=4.6' - url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.28.0-pyh707e725_0.conda hash: - md5: 0ed09f0c0f62f50b4b7dd2744af13629 - sha256: 4eaa22b1afdbd0076ab1cc8da99d9c62f5c5f14cd0a30ff99c133e22f2db5a58 + md5: 7142a7dff2a47e40b55d304decadd78a + sha256: b18adc659d43fc8eef026312a74cd39944ffe9d8decee71ec60a1974fb8ec86c category: main optional: false - name: ipython - version: 8.27.0 + version: 8.26.0 manager: conda platform: linux-aarch64 dependencies: @@ -5022,14 +5010,14 @@ package: prompt-toolkit: '>=3.0.41,<3.1.0' traitlets: '>=5.13.0' typing_extensions: '>=4.6' - url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.26.0-pyh707e725_0.conda hash: - md5: 0ed09f0c0f62f50b4b7dd2744af13629 - sha256: 4eaa22b1afdbd0076ab1cc8da99d9c62f5c5f14cd0a30ff99c133e22f2db5a58 + md5: f64d3520d5d00321c10f4dabb5b903f3 + sha256: a40c2859a055d98ba234d67b233fb1ba55d86cbe632ec96eecb7c5019c16478b category: main optional: false - name: ipython - version: 8.27.0 + version: 8.26.0 manager: conda platform: osx-64 dependencies: @@ -5046,14 +5034,14 @@ package: prompt-toolkit: '>=3.0.41,<3.1.0' traitlets: '>=5.13.0' typing_extensions: '>=4.6' - url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.26.0-pyh707e725_0.conda hash: - md5: 0ed09f0c0f62f50b4b7dd2744af13629 - sha256: 4eaa22b1afdbd0076ab1cc8da99d9c62f5c5f14cd0a30ff99c133e22f2db5a58 + md5: f64d3520d5d00321c10f4dabb5b903f3 + sha256: a40c2859a055d98ba234d67b233fb1ba55d86cbe632ec96eecb7c5019c16478b category: main optional: false - name: ipython - version: 8.27.0 + version: 8.26.0 manager: conda platform: osx-arm64 dependencies: @@ -5070,31 +5058,31 @@ package: prompt-toolkit: '>=3.0.41,<3.1.0' traitlets: '>=5.13.0' typing_extensions: '>=4.6' - url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.26.0-pyh707e725_0.conda hash: - md5: 0ed09f0c0f62f50b4b7dd2744af13629 - sha256: 4eaa22b1afdbd0076ab1cc8da99d9c62f5c5f14cd0a30ff99c133e22f2db5a58 + md5: f64d3520d5d00321c10f4dabb5b903f3 + sha256: a40c2859a055d98ba234d67b233fb1ba55d86cbe632ec96eecb7c5019c16478b category: main optional: false - name: ipywidgets - version: 8.1.5 + version: 8.1.3 manager: conda platform: linux-64 dependencies: comm: '>=0.1.3' ipython: '>=6.1.0' - jupyterlab_widgets: '>=3.0.13,<3.1.0' + jupyterlab_widgets: '>=3.0.11,<3.1.0' python: '>=3.7' traitlets: '>=4.3.1' - widgetsnbextension: '>=4.0.13,<4.1.0' - url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda + widgetsnbextension: '>=4.0.11,<4.1.0' + url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.3-pyhd8ed1ab_0.conda hash: - md5: a022d34163147d16b27de86dc53e93fc - sha256: ae27447f300c85a184d5d4fa08674eaa93931c12275daca981eb986f5d7795b3 + md5: a1323654e9d87b16642ef02a03b98b32 + sha256: 161b5132d8f4d0c344205ec238c7f268edb517d6da66a1f497342ff26590da00 category: main optional: false - name: ipywidgets - version: 8.1.5 + version: 8.1.3 manager: conda platform: linux-aarch64 dependencies: @@ -5102,16 +5090,16 @@ package: traitlets: '>=4.3.1' ipython: '>=6.1.0' comm: '>=0.1.3' - jupyterlab_widgets: '>=3.0.13,<3.1.0' - widgetsnbextension: '>=4.0.13,<4.1.0' - url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda + jupyterlab_widgets: '>=3.0.11,<3.1.0' + widgetsnbextension: '>=4.0.11,<4.1.0' + url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.3-pyhd8ed1ab_0.conda hash: - md5: a022d34163147d16b27de86dc53e93fc - sha256: ae27447f300c85a184d5d4fa08674eaa93931c12275daca981eb986f5d7795b3 + md5: a1323654e9d87b16642ef02a03b98b32 + sha256: 161b5132d8f4d0c344205ec238c7f268edb517d6da66a1f497342ff26590da00 category: main optional: false - name: ipywidgets - version: 8.1.5 + version: 8.1.3 manager: conda platform: osx-64 dependencies: @@ -5119,16 +5107,16 @@ package: traitlets: '>=4.3.1' ipython: '>=6.1.0' comm: '>=0.1.3' - jupyterlab_widgets: '>=3.0.13,<3.1.0' - widgetsnbextension: '>=4.0.13,<4.1.0' - url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda + jupyterlab_widgets: '>=3.0.11,<3.1.0' + widgetsnbextension: '>=4.0.11,<4.1.0' + url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.3-pyhd8ed1ab_0.conda hash: - md5: a022d34163147d16b27de86dc53e93fc - sha256: ae27447f300c85a184d5d4fa08674eaa93931c12275daca981eb986f5d7795b3 + md5: a1323654e9d87b16642ef02a03b98b32 + sha256: 161b5132d8f4d0c344205ec238c7f268edb517d6da66a1f497342ff26590da00 category: main optional: false - name: ipywidgets - version: 8.1.5 + version: 8.1.3 manager: conda platform: osx-arm64 dependencies: @@ -5136,12 +5124,12 @@ package: traitlets: '>=4.3.1' ipython: '>=6.1.0' comm: '>=0.1.3' - jupyterlab_widgets: '>=3.0.13,<3.1.0' - widgetsnbextension: '>=4.0.13,<4.1.0' - url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda + jupyterlab_widgets: '>=3.0.11,<3.1.0' + widgetsnbextension: '>=4.0.11,<4.1.0' + url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.3-pyhd8ed1ab_0.conda hash: - md5: a022d34163147d16b27de86dc53e93fc - sha256: ae27447f300c85a184d5d4fa08674eaa93931c12275daca981eb986f5d7795b3 + md5: a1323654e9d87b16642ef02a03b98b32 + sha256: 161b5132d8f4d0c344205ec238c7f268edb517d6da66a1f497342ff26590da00 category: main optional: false - name: isoduration @@ -5368,10 +5356,10 @@ package: dependencies: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_0.conda hash: - md5: 2257c5f33024274faadf6a88a7d62807 - sha256: 908448e2946c8fd8e28f5c7de4ed52548d227fae2994febf1050179b2590dbdc + md5: c3d6917a5a167cf0121e79a89545ff70 + sha256: 1ab328dc37c6cc2348ae4eda695ebca71cca4661d214f42746d57e123f1f9fd7 category: main optional: false - name: jsonpointer @@ -5381,10 +5369,10 @@ package: dependencies: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_0.conda hash: - md5: 5dcf96bca4649d496d818a0f5cfb962e - sha256: 52fcb1db44a935bba26988cc17247a0f71a8ad2fbc2b717274a8c8940856ee0d + md5: 7d360dce2fa56d1701773d26ecccb038 + sha256: c28d5ee8ddc58858c711f0a4874916ed7d1306fa8b12bb95e3e8bb7183f2e287 category: main optional: false - name: jsonpointer @@ -5394,10 +5382,10 @@ package: dependencies: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_0.conda hash: - md5: 80f403c03290e1662be03e026fb5f8ab - sha256: f6fb3734e967d1cd0cde32844ee952809f6c0a49895da7ec1c8cfdf97739b947 + md5: bc1baf9c7772acbd2cb4f8d9190286f5 + sha256: a7326ba42944287a44a5959dc67b40e002798aa9eed97ef4ec9ad39bbd84c9a3 category: main optional: false - name: jsonschema @@ -5665,7 +5653,7 @@ package: category: main optional: false - name: jupyter-server-proxy - version: 4.4.0 + version: 4.3.0 manager: conda platform: linux-64 dependencies: @@ -5676,14 +5664,14 @@ package: simpervisor: '>=1.0.0' tornado: '>=6.1.0' traitlets: '>=5.1.1' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.4.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.3.0-pyhd8ed1ab_0.conda hash: - md5: f84c359ab53d51c125319b25bd09a887 - sha256: 51955e791d7cb60ad1efabf0802cb9f55905bab74709ec0f096d3b5bc9e9815e + md5: 0324b3f9baed1cdb946cd484420acc77 + sha256: 2cd5775b9aa468234ebe404146b3c800da5c68662e72126ed84b75350edbfb76 category: main optional: false - name: jupyter-server-proxy - version: 4.4.0 + version: 4.3.0 manager: conda platform: linux-aarch64 dependencies: @@ -5694,14 +5682,14 @@ package: traitlets: '>=5.1.1' jupyter_server: '>=1.24.0' simpervisor: '>=1.0.0' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.4.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.3.0-pyhd8ed1ab_0.conda hash: - md5: f84c359ab53d51c125319b25bd09a887 - sha256: 51955e791d7cb60ad1efabf0802cb9f55905bab74709ec0f096d3b5bc9e9815e + md5: 0324b3f9baed1cdb946cd484420acc77 + sha256: 2cd5775b9aa468234ebe404146b3c800da5c68662e72126ed84b75350edbfb76 category: main optional: false - name: jupyter-server-proxy - version: 4.4.0 + version: 4.3.0 manager: conda platform: osx-64 dependencies: @@ -5712,14 +5700,14 @@ package: traitlets: '>=5.1.1' jupyter_server: '>=1.24.0' simpervisor: '>=1.0.0' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.4.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.3.0-pyhd8ed1ab_0.conda hash: - md5: f84c359ab53d51c125319b25bd09a887 - sha256: 51955e791d7cb60ad1efabf0802cb9f55905bab74709ec0f096d3b5bc9e9815e + md5: 0324b3f9baed1cdb946cd484420acc77 + sha256: 2cd5775b9aa468234ebe404146b3c800da5c68662e72126ed84b75350edbfb76 category: main optional: false - name: jupyter-server-proxy - version: 4.4.0 + version: 4.3.0 manager: conda platform: osx-arm64 dependencies: @@ -5730,10 +5718,10 @@ package: traitlets: '>=5.1.1' jupyter_server: '>=1.24.0' simpervisor: '>=1.0.0' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.4.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.3.0-pyhd8ed1ab_0.conda hash: - md5: f84c359ab53d51c125319b25bd09a887 - sha256: 51955e791d7cb60ad1efabf0802cb9f55905bab74709ec0f096d3b5bc9e9815e + md5: 0324b3f9baed1cdb946cd484420acc77 + sha256: 2cd5775b9aa468234ebe404146b3c800da5c68662e72126ed84b75350edbfb76 category: main optional: false - name: jupyter_client @@ -5755,57 +5743,57 @@ package: category: main optional: false - name: jupyter_client - version: 8.6.3 + version: 8.6.2 manager: conda platform: linux-aarch64 dependencies: python: '>=3.8' python-dateutil: '>=2.8.2' jupyter_core: '>=4.12,!=5.0.*' - importlib-metadata: '>=4.8.3' + importlib_metadata: '>=4.8.3' traitlets: '>=5.3' tornado: '>=6.2' pyzmq: '>=23.0' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda hash: - md5: a14218cfb29662b4a19ceb04e93e298e - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 + md5: 3cdbb2fa84490e5fd44c9f9806c0d292 + sha256: 634f065cdd1d0aacd4bb6848ebf240dcebc8578135d65f4ad4aa42b2276c4e0c category: main optional: false - name: jupyter_client - version: 8.6.3 + version: 8.6.2 manager: conda platform: osx-64 dependencies: python: '>=3.8' python-dateutil: '>=2.8.2' jupyter_core: '>=4.12,!=5.0.*' - importlib-metadata: '>=4.8.3' + importlib_metadata: '>=4.8.3' traitlets: '>=5.3' tornado: '>=6.2' pyzmq: '>=23.0' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda hash: - md5: a14218cfb29662b4a19ceb04e93e298e - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 + md5: 3cdbb2fa84490e5fd44c9f9806c0d292 + sha256: 634f065cdd1d0aacd4bb6848ebf240dcebc8578135d65f4ad4aa42b2276c4e0c category: main optional: false - name: jupyter_client - version: 8.6.3 + version: 8.6.2 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' python-dateutil: '>=2.8.2' jupyter_core: '>=4.12,!=5.0.*' - importlib-metadata: '>=4.8.3' + importlib_metadata: '>=4.8.3' traitlets: '>=5.3' tornado: '>=6.2' pyzmq: '>=23.0' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda hash: - md5: a14218cfb29662b4a19ceb04e93e298e - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 + md5: 3cdbb2fa84490e5fd44c9f9806c0d292 + sha256: 634f065cdd1d0aacd4bb6848ebf240dcebc8578135d65f4ad4aa42b2276c4e0c category: main optional: false - name: jupyter_core @@ -5828,14 +5816,14 @@ package: manager: conda platform: linux-aarch64 dependencies: - __unix: '' - python: '>=3.8' - traitlets: '>=5.3' platformdirs: '>=2.5' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + python: '>=3.12,<3.13.0a0' + python_abi: 3.12.* + traitlets: '>=5.3' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/jupyter_core-5.7.2-py312h996f985_0.conda hash: - md5: 0a2980dada0dd7fd0998f0342308b1b1 - sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: a7ef8076152a1490e2e8a519e81660d7 + sha256: b46fa6302527a2f4a1246e12e2781e87dd9ac5a64135de6ca356b6d4cb42b8f1 category: main optional: false - name: jupyter_core @@ -5843,14 +5831,14 @@ package: manager: conda platform: osx-64 dependencies: - __unix: '' - python: '>=3.8' - traitlets: '>=5.3' platformdirs: '>=2.5' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + python: '>=3.12,<3.13.0a0' + python_abi: 3.12.* + traitlets: '>=5.3' + url: https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-5.7.2-py312hb401068_0.conda hash: - md5: 0a2980dada0dd7fd0998f0342308b1b1 - sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: a205e28ce7ab71773dcaaf94f6418612 + sha256: 3e57d1eaf22c793711367335f9f8b647c011b64a95bfc796b50967a4b2ae27c2 category: main optional: false - name: jupyter_core @@ -5858,14 +5846,14 @@ package: manager: conda platform: osx-arm64 dependencies: - __unix: '' - python: '>=3.8' - traitlets: '>=5.3' platformdirs: '>=2.5' - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + python: '>=3.12,<3.13.0a0' + python_abi: 3.12.* + traitlets: '>=5.3' + url: https://conda.anaconda.org/conda-forge/osx-arm64/jupyter_core-5.7.2-py312h81bd7bf_0.conda hash: - md5: 0a2980dada0dd7fd0998f0342308b1b1 - sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 209b9cb7159212afce5e16d7a3ee3b47 + sha256: 5ab0e75a30915d34ae27b4a76f1241c2f4cc4419b6b1c838cc1160b9ec8bfaf5 category: main optional: false - name: jupyter_events @@ -6293,7 +6281,7 @@ package: category: main optional: false - name: jupyterlab - version: 4.2.5 + version: 4.2.4 manager: conda platform: linux-64 dependencies: @@ -6314,14 +6302,14 @@ package: tomli: '>=1.2.2' tornado: '>=6.2.0' traitlets: '' - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.2.5-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.2.4-pyhd8ed1ab_0.conda hash: - md5: 594762eddc55b82feac6097165a88e3c - sha256: db08036a6fd846c178ebdce7327be1130bda10ac96113c17b04bce2bc4d67dda + md5: 28f3334e97c39de2b7ac15743b041784 + sha256: e3b585b55634da48871ed3082c429652a62bf0cf7733641b1382b9c314f1c901 category: main optional: false - name: jupyterlab - version: 4.2.5 + version: 4.2.4 manager: conda platform: linux-aarch64 dependencies: @@ -6342,14 +6330,14 @@ package: httpx: '>=0.25.0' jupyterlab_server: '>=2.27.1,<3' ipykernel: '>=6.5.0' - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.2.5-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.2.4-pyhd8ed1ab_0.conda hash: - md5: 594762eddc55b82feac6097165a88e3c - sha256: db08036a6fd846c178ebdce7327be1130bda10ac96113c17b04bce2bc4d67dda + md5: 28f3334e97c39de2b7ac15743b041784 + sha256: e3b585b55634da48871ed3082c429652a62bf0cf7733641b1382b9c314f1c901 category: main optional: false - name: jupyterlab - version: 4.2.5 + version: 4.2.4 manager: conda platform: osx-64 dependencies: @@ -6370,14 +6358,14 @@ package: httpx: '>=0.25.0' jupyterlab_server: '>=2.27.1,<3' ipykernel: '>=6.5.0' - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.2.5-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.2.4-pyhd8ed1ab_0.conda hash: - md5: 594762eddc55b82feac6097165a88e3c - sha256: db08036a6fd846c178ebdce7327be1130bda10ac96113c17b04bce2bc4d67dda + md5: 28f3334e97c39de2b7ac15743b041784 + sha256: e3b585b55634da48871ed3082c429652a62bf0cf7733641b1382b9c314f1c901 category: main optional: false - name: jupyterlab - version: 4.2.5 + version: 4.2.4 manager: conda platform: osx-arm64 dependencies: @@ -6398,10 +6386,10 @@ package: httpx: '>=0.25.0' jupyterlab_server: '>=2.27.1,<3' ipykernel: '>=6.5.0' - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.2.5-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.2.4-pyhd8ed1ab_0.conda hash: - md5: 594762eddc55b82feac6097165a88e3c - sha256: db08036a6fd846c178ebdce7327be1130bda10ac96113c17b04bce2bc4d67dda + md5: 28f3334e97c39de2b7ac15743b041784 + sha256: e3b585b55634da48871ed3082c429652a62bf0cf7733641b1382b9c314f1c901 category: main optional: false - name: jupyterlab_pygments @@ -6549,39 +6537,39 @@ package: category: main optional: false - name: jupyterlab_widgets - version: 3.0.13 + version: 3.0.11 manager: conda platform: linux-aarch64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.11-pyhd8ed1ab_0.conda hash: - md5: ccea946e6dce9f330fbf7fca97fe8de7 - sha256: 0e7ec7936d766f39d5a0a8eafc63f5543f488883ad3645246bc22db6d632566e + md5: fc0cb2abcfcec65ecbdcde4289b62fea + sha256: 14053a987d44da2f36d79e28147d4e2551cda2559cba6144103b677ef26616a8 category: main optional: false - name: jupyterlab_widgets - version: 3.0.13 + version: 3.0.11 manager: conda platform: osx-64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.11-pyhd8ed1ab_0.conda hash: - md5: ccea946e6dce9f330fbf7fca97fe8de7 - sha256: 0e7ec7936d766f39d5a0a8eafc63f5543f488883ad3645246bc22db6d632566e + md5: fc0cb2abcfcec65ecbdcde4289b62fea + sha256: 14053a987d44da2f36d79e28147d4e2551cda2559cba6144103b677ef26616a8 category: main optional: false - name: jupyterlab_widgets - version: 3.0.13 + version: 3.0.11 manager: conda platform: osx-arm64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.11-pyhd8ed1ab_0.conda hash: - md5: ccea946e6dce9f330fbf7fca97fe8de7 - sha256: 0e7ec7936d766f39d5a0a8eafc63f5543f488883ad3645246bc22db6d632566e + md5: fc0cb2abcfcec65ecbdcde4289b62fea + sha256: 14053a987d44da2f36d79e28147d4e2551cda2559cba6144103b677ef26616a8 category: main optional: false - name: keyutils @@ -6691,7 +6679,7 @@ package: dependencies: libgcc-ng: '>=12' libjpeg-turbo: '>=3.0.0,<4.0a0' - libtiff: '>=4.6.0,<4.8.0a0' + libtiff: '>=4.6.0,<4.7.0a0' url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda hash: md5: ffdd8267a04c515e7ce69c727b051414 @@ -6704,7 +6692,7 @@ package: platform: osx-64 dependencies: libjpeg-turbo: '>=3.0.0,<4.0a0' - libtiff: '>=4.6.0,<4.8.0a0' + libtiff: '>=4.6.0,<4.7.0a0' url: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.16-ha2f27b4_0.conda hash: md5: 1442db8f03517834843666c422238c9b @@ -6717,7 +6705,7 @@ package: platform: osx-arm64 dependencies: libjpeg-turbo: '>=3.0.0,<4.0a0' - libtiff: '>=4.6.0,<4.8.0a0' + libtiff: '>=4.6.0,<4.7.0a0' url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda hash: md5: 66f6c134e76fe13cce8a9ea5814b5dd5 @@ -6737,14 +6725,14 @@ package: category: main optional: false - name: ld_impl_linux-aarch64 - version: '2.43' + version: '2.40' manager: conda platform: linux-aarch64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.40-h9fc2d93_7.conda hash: - md5: 5019b8e4dd2433395270cc0838ad4065 - sha256: cc4ad280a52e6815c0b26d785f6c2e205646c72fb01f418883f8df266d3c12f1 + md5: 1b0feef706f4d03eff0b76626ead64fc + sha256: 4a6c0bd77e125da8472bd73bba7cd4169a3ce4699b00a3893026ae8664b2387d category: main optional: false - name: lerc @@ -6812,42 +6800,42 @@ package: category: main optional: false - name: libabseil - version: '20240722.0' + version: '20240116.2' manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - libstdcxx: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240116.2-cxx17_h0a1ffab_1.conda hash: - md5: 6fe6b3694c4792a8e26755d3b06f0b80 - sha256: 590e47dce38031a8893e70491f3b71e214de7781cab53b6f017aa6f6841cb076 + md5: 9cadd103cf89edb2ea68d33728511158 + sha256: a6e1a6f13fd49c24238373838c266101a2bf3b521b0a36a3a7e586b40f50ec5b category: main optional: false - name: libabseil - version: '20240722.0' + version: '20240116.2' manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - libcxx: '>=17' - url: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240722.0-cxx17_hac325c4_1.conda + libcxx: '>=16' + url: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240116.2-cxx17_hf036a51_1.conda hash: - md5: 40373920232a6ac0404eee9cf39a9f09 - sha256: b548e80280242ad1d93d8d7fb48a30af7e4124959ba2031c65c9675b98163652 + md5: d6c78ca84abed3fea5f308ac83b8f54e + sha256: 396d18f39d5207ecae06fddcbc6e5f20865718939bc4e0ea9729e13952833aac category: main optional: false - name: libabseil - version: '20240722.0' + version: '20240116.2' manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - libcxx: '>=17' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda + libcxx: '>=16' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240116.2-cxx17_h00cdb27_1.conda hash: - md5: 706da5e791c569a7b9814877098a6a0a - sha256: 90bf08a75506dfcf28a70977da8ab050bcf594cd02abd3a9d84a22c9e8161724 + md5: f16963d88aed907af8b90878b8d8a05c + sha256: a9517c8683924f4b3b9380cdaa50fdd2009cd8d5f3918c92f64394238189d3cb category: main optional: false - name: libarrow @@ -6859,9 +6847,9 @@ package: aws-crt-cpp: '>=0.28.3,<0.28.4.0a0' aws-sdk-cpp: '>=1.11.407,<1.11.408.0a0' azure-core-cpp: '>=1.13.0,<1.13.1.0a0' - azure-identity-cpp: '>=1.8.0,<1.8.1.0a0' - azure-storage-blobs-cpp: '>=12.12.0,<12.12.1.0a0' - azure-storage-files-datalake-cpp: '>=12.11.0,<12.11.1.0a0' + azure-identity-cpp: '>=1.9.0,<1.9.1.0a0' + azure-storage-blobs-cpp: '>=12.13.0,<12.13.1.0a0' + azure-storage-files-datalake-cpp: '>=12.12.0,<12.12.1.0a0' bzip2: '>=1.0.8,<2.0a0' gflags: '>=2.2.2,<2.3.0a0' glog: '>=0.7.1,<0.8.0a0' @@ -6880,10 +6868,10 @@ package: re2: '' snappy: '>=1.2.1,<1.3.0a0' zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-hef0f6b3_18_cpu.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-h364f349_19_cpu.conda hash: - md5: f77f775cebcb3ff0c5f37ddef62dac01 - sha256: 7cdeba904b4d58652aab43b7a177195756dd27a328b8ddb53476389a8de3c213 + md5: 99dec782923cf4f1c657bad3c0ab1894 + sha256: 6824dd8a6a21fb05cadcc06ff9977fb6034140398de5fdf20b448739ce5ec809 category: main optional: false - name: libarrow @@ -6891,8 +6879,8 @@ package: manager: conda platform: linux-aarch64 dependencies: - aws-crt-cpp: '>=0.28.3,<0.28.4.0a0' - aws-sdk-cpp: '>=1.11.407,<1.11.408.0a0' + aws-crt-cpp: '>=0.27.3,<0.27.4.0a0' + aws-sdk-cpp: '>=1.11.329,<1.11.330.0a0' azure-core-cpp: '>=1.13.0,<1.13.1.0a0' azure-identity-cpp: '>=1.8.0,<1.8.1.0a0' azure-storage-blobs-cpp: '>=12.12.0,<12.12.1.0a0' @@ -6900,25 +6888,25 @@ package: bzip2: '>=1.0.8,<2.0a0' gflags: '>=2.2.2,<2.3.0a0' glog: '>=0.7.1,<0.8.0a0' - libabseil: '>=20240722.0,<20240723.0a0' + libabseil: '>=20240116.2,<20240117.0a0' libbrotlidec: '>=1.1.0,<1.2.0a0' libbrotlienc: '>=1.1.0,<1.2.0a0' - libgcc: '>=13' - libgoogle-cloud: '>=2.29.0,<2.30.0a0' - libgoogle-cloud-storage: '>=2.29.0,<2.30.0a0' + libgcc-ng: '>=13' + libgoogle-cloud: '>=2.26.0,<2.27.0a0' + libgoogle-cloud-storage: '>=2.26.0,<2.27.0a0' libre2-11: '>=2023.9.1,<2024.0a0' - libstdcxx: '>=13' + libstdcxx-ng: '>=13' libutf8proc: '>=2.8.0,<3.0a0' libzlib: '>=1.3.1,<2.0a0' lz4-c: '>=1.9.3,<1.10.0a0' - orc: '>=2.0.2,<2.0.3.0a0' + orc: '>=2.0.1,<2.0.2.0a0' re2: '' snappy: '>=1.2.1,<1.3.0a0' zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-17.0.0-hfd23ed4_18_cpu.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-17.0.0-hb676354_3_cpu.conda hash: - md5: d55872998f11a7b9feee29d68f2adfc1 - sha256: c586d3345a503910ca70bf03d0bc0e7c6c28275c81dd3cf6cdb33a62dd8d5659 + md5: d51a856103c60b465489736cd4bbb30a + sha256: d7ba8a917bd3cce28210e9f37a418076518ebf7958e5b9e5bf746a79502441cb category: main optional: false - name: libarrow @@ -6927,32 +6915,32 @@ package: platform: osx-64 dependencies: __osx: '>=10.13' - aws-crt-cpp: '>=0.28.3,<0.28.4.0a0' - aws-sdk-cpp: '>=1.11.407,<1.11.408.0a0' + aws-crt-cpp: '>=0.27.3,<0.27.4.0a0' + aws-sdk-cpp: '>=1.11.329,<1.11.330.0a0' azure-core-cpp: '>=1.13.0,<1.13.1.0a0' azure-identity-cpp: '>=1.8.0,<1.8.1.0a0' azure-storage-blobs-cpp: '>=12.12.0,<12.12.1.0a0' azure-storage-files-datalake-cpp: '>=12.11.0,<12.11.1.0a0' bzip2: '>=1.0.8,<2.0a0' glog: '>=0.7.1,<0.8.0a0' - libabseil: '>=20240722.0,<20240723.0a0' + libabseil: '>=20240116.2,<20240117.0a0' libbrotlidec: '>=1.1.0,<1.2.0a0' libbrotlienc: '>=1.1.0,<1.2.0a0' - libcxx: '>=18' - libgoogle-cloud: '>=2.29.0,<2.30.0a0' - libgoogle-cloud-storage: '>=2.29.0,<2.30.0a0' + libcxx: '>=17' + libgoogle-cloud: '>=2.26.0,<2.27.0a0' + libgoogle-cloud-storage: '>=2.26.0,<2.27.0a0' libre2-11: '>=2023.9.1,<2024.0a0' libutf8proc: '>=2.8.0,<3.0a0' libzlib: '>=1.3.1,<2.0a0' lz4-c: '>=1.9.3,<1.10.0a0' - orc: '>=2.0.2,<2.0.3.0a0' + orc: '>=2.0.1,<2.0.2.0a0' re2: '' snappy: '>=1.2.1,<1.3.0a0' zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-17.0.0-hb94d233_18_cpu.conda + url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-17.0.0-h6ab0003_3_cpu.conda hash: - md5: a30830c89e4d9ca8988fa472a044c2b1 - sha256: 5fcebf7aa1437b3171d30f4957f0601f750d2bb04aeedba7bb1ac1ba1af1a915 + md5: bcb5ffc69598aca54d69a84191b6445c + sha256: 2d965a6361ecf7567a2b472c2c84ab832bcb6b84a90f56ccbada164b8ac94633 category: main optional: false - name: libarrow @@ -6961,32 +6949,32 @@ package: platform: osx-arm64 dependencies: __osx: '>=11.0' - aws-crt-cpp: '>=0.28.3,<0.28.4.0a0' - aws-sdk-cpp: '>=1.11.407,<1.11.408.0a0' + aws-crt-cpp: '>=0.27.3,<0.27.4.0a0' + aws-sdk-cpp: '>=1.11.329,<1.11.330.0a0' azure-core-cpp: '>=1.13.0,<1.13.1.0a0' azure-identity-cpp: '>=1.8.0,<1.8.1.0a0' azure-storage-blobs-cpp: '>=12.12.0,<12.12.1.0a0' azure-storage-files-datalake-cpp: '>=12.11.0,<12.11.1.0a0' bzip2: '>=1.0.8,<2.0a0' glog: '>=0.7.1,<0.8.0a0' - libabseil: '>=20240722.0,<20240723.0a0' + libabseil: '>=20240116.2,<20240117.0a0' libbrotlidec: '>=1.1.0,<1.2.0a0' libbrotlienc: '>=1.1.0,<1.2.0a0' - libcxx: '>=18' - libgoogle-cloud: '>=2.29.0,<2.30.0a0' - libgoogle-cloud-storage: '>=2.29.0,<2.30.0a0' + libcxx: '>=17' + libgoogle-cloud: '>=2.26.0,<2.27.0a0' + libgoogle-cloud-storage: '>=2.26.0,<2.27.0a0' libre2-11: '>=2023.9.1,<2024.0a0' libutf8proc: '>=2.8.0,<3.0a0' libzlib: '>=1.3.1,<2.0a0' lz4-c: '>=1.9.3,<1.10.0a0' - orc: '>=2.0.2,<2.0.3.0a0' + orc: '>=2.0.1,<2.0.2.0a0' re2: '' snappy: '>=1.2.1,<1.3.0a0' zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-17.0.0-h785bcae_18_cpu.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-17.0.0-ha3ffeb4_3_cpu.conda hash: - md5: 2f9ef3378d7067b16633f04b768a576c - sha256: 3ded92d8e4a04db3ca9fb0e5f25f0910991fa1a613ab6fcdb7eeeec0cf6272bb + md5: f6c57245d918c64cfec50e41ebcf623a + sha256: a8704e09fd82188a583331e8579fb4b59627e75c3670dba6082993481891cf04 category: main optional: false - name: libarrow-acero @@ -6998,10 +6986,10 @@ package: libarrow: 17.0.0 libgcc: '>=13' libstdcxx: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-h5888daf_18_cpu.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-h5888daf_19_cpu.conda hash: - md5: 8ee42d77bf6dab2fff09db6cdf0e3b30 - sha256: 066ce6335dde27bf71a1c13e353123038d5317322687a372178746b66ae3406b + md5: 08e736dae834582aba108cde4bba56f3 + sha256: ac6ae2e7c7ac992e66ff9e695707cb54ffa874428d4560f1e534424d7f267856 category: main optional: false - name: libarrow-acero @@ -7010,12 +6998,12 @@ package: platform: linux-aarch64 dependencies: libarrow: 17.0.0 - libgcc: '>=13' - libstdcxx: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-17.0.0-h5ad3122_18_cpu.conda + libgcc-ng: '>=13' + libstdcxx-ng: '>=13' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-17.0.0-h5ad3122_3_cpu.conda hash: - md5: fc559a56c3ff48efb8b2989626d1b7f9 - sha256: 15a8b1d191212dcdec6819cb1c782c5ff96e578e105f658fe7c583629bd9fda9 + md5: 9ae2501ba2c8682828b3abeae8cf54eb + sha256: f2261230fb5393f011886aff663386c873544221fa6abd074725059f063e4da0 category: main optional: false - name: libarrow-acero @@ -7025,11 +7013,11 @@ package: dependencies: __osx: '>=10.13' libarrow: 17.0.0 - libcxx: '>=18' - url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-17.0.0-hd41ae55_18_cpu.conda + libcxx: '>=17' + url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-17.0.0-hac325c4_3_cpu.conda hash: - md5: 2107ee112c1c7519b27f24cb6822d469 - sha256: f4413ec2506ed313a9049e17cbc22bb236369a1e3ae60db5b391390f185a960e + md5: 5363b11594664c54630eeaa161614a94 + sha256: 8cf2166a51d3a02833ae8e2c1735f511a913efa7aff5441e5314c927d7f02efc category: main optional: false - name: libarrow-acero @@ -7039,11 +7027,11 @@ package: dependencies: __osx: '>=11.0' libarrow: 17.0.0 - libcxx: '>=18' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-17.0.0-hd1b2877_18_cpu.conda + libcxx: '>=17' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-17.0.0-hf9b8971_3_cpu.conda hash: - md5: b0903e8d5a46a69461c2c5770898b498 - sha256: 1595800e1e2a282acbe851b1ed82baded526cf10afa614317a23c1d66e552fbe + md5: 7aa5d3180859f12613339b6376af0ac4 + sha256: 991d1497f56cf8cde3a82d0f3c5a7eeb3314d28bbc0185a713c890f229871f2e category: main optional: false - name: libarrow-dataset @@ -7057,10 +7045,10 @@ package: libgcc: '>=13' libparquet: 17.0.0 libstdcxx: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-h5888daf_18_cpu.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-h5888daf_19_cpu.conda hash: - md5: 672a8f1a45cca0fc35b084a707b9b14c - sha256: cd473948f98a2b16c66a7e09777ed821ad6f830120507ed94fea3e239f5fede9 + md5: 70273aece3d8c6f6e5f2e85f7de5f1c3 + sha256: 3c53de343edc224b5ebc09f1ab6b570bfc0327d9fc0fa7e7abcde0d75d6d63db category: main optional: false - name: libarrow-dataset @@ -7070,13 +7058,13 @@ package: dependencies: libarrow: 17.0.0 libarrow-acero: 17.0.0 - libgcc: '>=13' + libgcc-ng: '>=13' libparquet: 17.0.0 - libstdcxx: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-17.0.0-h5ad3122_18_cpu.conda + libstdcxx-ng: '>=13' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-17.0.0-h5ad3122_3_cpu.conda hash: - md5: 1a922ee828508104007a484bbbbfd6f3 - sha256: 7e6cc611fd4cebfb34f0b6823d835d97036d6e2d586c1f174c09b480b5eb9784 + md5: 6ea339e4e4d44aa1595209e91c811f11 + sha256: eec1e3928a5c6628cc74b9974fb51d56ff51365fcb74a8737abf3198afba07be category: main optional: false - name: libarrow-dataset @@ -7087,12 +7075,12 @@ package: __osx: '>=10.13' libarrow: 17.0.0 libarrow-acero: 17.0.0 - libcxx: '>=18' + libcxx: '>=17' libparquet: 17.0.0 - url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-17.0.0-hd41ae55_18_cpu.conda + url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-17.0.0-hac325c4_3_cpu.conda hash: - md5: efcbaed9d1ab148303e2406978ed0cc9 - sha256: dd8cbb82ea27517a76e0b88bf96a29a34ed65f5b79d9591dc891a1bf542e92d5 + md5: 1d7f6fbcd3bcce8f7e2714e32964eea0 + sha256: 0cf3de5d065f406e79ed870673eecc17bcf1c2a69c1edbdd49b1c440dec351e2 category: main optional: false - name: libarrow-dataset @@ -7103,12 +7091,12 @@ package: __osx: '>=11.0' libarrow: 17.0.0 libarrow-acero: 17.0.0 - libcxx: '>=18' + libcxx: '>=17' libparquet: 17.0.0 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-17.0.0-hd1b2877_18_cpu.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-17.0.0-hf9b8971_3_cpu.conda hash: - md5: b72339ea311fee203451fbb43b59d05f - sha256: 5bed498ba577037e3356422fb298c9ae8da980d177db0e31d1c3376644af83ab + md5: 9f4f5a1af6daa840e9962842a6426846 + sha256: f6c02fea57f1f30ef9c00c54e1ed5ce109857475849ee558fc4cc2149937589e category: main optional: false - name: libarrow-substrait @@ -7124,10 +7112,10 @@ package: libgcc: '>=13' libprotobuf: '>=5.27.5,<5.27.6.0a0' libstdcxx: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-he882d9a_18_cpu.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-he882d9a_19_cpu.conda hash: - md5: 92ecb2e81cd7c28491f18ac758baa294 - sha256: ffcc698b202118c6c42a593635d0204e9bbf2d750f44f77f595b5d89468119da + md5: 7eb5555593bcf5695052c56852e408cf + sha256: 80f7c18d89b5ab5e02e415d3ef789525564a11eae18f4fa49a6ab72c8d108f16 category: main optional: false - name: libarrow-substrait @@ -7135,17 +7123,17 @@ package: manager: conda platform: linux-aarch64 dependencies: - libabseil: '>=20240722.0,<20240723.0a0' + libabseil: '>=20240116.2,<20240117.0a0' libarrow: 17.0.0 libarrow-acero: 17.0.0 libarrow-dataset: 17.0.0 - libgcc: '>=13' - libprotobuf: '>=5.27.5,<5.27.6.0a0' - libstdcxx: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-17.0.0-ha618846_18_cpu.conda + libgcc-ng: '>=13' + libprotobuf: '>=4.25.3,<4.25.4.0a0' + libstdcxx-ng: '>=13' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-17.0.0-h08b7278_3_cpu.conda hash: - md5: 06ee09958760467de81c5f4ce2310619 - sha256: 91f272392c9bc96a16145c0fbe2aec3d7be2b9c89d908aa62b41b57e9cb33253 + md5: 4f7ba5c92d0b69d5f7d94807bcaee5f1 + sha256: dc0781b27198c06b417ef9a6d40377c5e432fe664ae45c0601e8b54433e2f8ef category: main optional: false - name: libarrow-substrait @@ -7154,16 +7142,16 @@ package: platform: osx-64 dependencies: __osx: '>=10.13' - libabseil: '>=20240722.0,<20240723.0a0' + libabseil: '>=20240116.2,<20240117.0a0' libarrow: 17.0.0 libarrow-acero: 17.0.0 libarrow-dataset: 17.0.0 - libcxx: '>=18' - libprotobuf: '>=5.27.5,<5.27.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-17.0.0-h8b1ac37_18_cpu.conda + libcxx: '>=17' + libprotobuf: '>=4.25.3,<4.25.4.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-17.0.0-hba007a9_3_cpu.conda hash: - md5: 25d4c14917fc1713ad0c2a92c2122052 - sha256: a15f05e72c1bb523c038962da0f25940eea260657c8ba892a4456374a27623a0 + md5: bbd14b3c677722478a50aa9f033c41d9 + sha256: 9385907b45ecef4754711faac8f191779463344c9f5d36d536d568ce191a68fd category: main optional: false - name: libarrow-substrait @@ -7172,16 +7160,16 @@ package: platform: osx-arm64 dependencies: __osx: '>=11.0' - libabseil: '>=20240722.0,<20240723.0a0' + libabseil: '>=20240116.2,<20240117.0a0' libarrow: 17.0.0 libarrow-acero: 17.0.0 libarrow-dataset: 17.0.0 - libcxx: '>=18' - libprotobuf: '>=5.27.5,<5.27.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-17.0.0-h6479abe_18_cpu.conda + libcxx: '>=17' + libprotobuf: '>=4.25.3,<4.25.4.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-17.0.0-hbf8b706_3_cpu.conda hash: - md5: e9d5e9423dff4ee9d3c8db3508ba8485 - sha256: 9dbda8b049a91f8743637c9d9d92cafde1dc5840ede8a095e9c2eac8ae11df75 + md5: e606926a261c52080a557e51e07adab8 + sha256: dfd4a51a807d193e1796325cddce8384d5938defa16172545f77fee727a268dc category: main optional: false - name: libblas @@ -7202,10 +7190,10 @@ package: platform: linux-aarch64 dependencies: libopenblas: '>=0.3.27,<1.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-24_linuxaarch64_openblas.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-23_linuxaarch64_openblas.conda hash: - md5: f763daad76fe32da91acfdf3e476ec0d - sha256: a0a86754a6dcdf5917735d3095a34aab7adce56dd3fda5258e8526f0e1cf0164 + md5: 3ac1ad627e1a07fae62556d6aabafdfd + sha256: 17d90edd4742fbee0bcafb4f12d08dd5d1939b12a9c2f21caccfa3717fcab065 category: main optional: false - name: libblas @@ -7226,10 +7214,10 @@ package: platform: osx-arm64 dependencies: libopenblas: '>=0.3.27,<1.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-24_osxarm64_openblas.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda hash: - md5: 35cb711e7bc46ee5f3dd67af99ad1986 - sha256: 4739f7463efb12e6d71536d8b0285a8de5aaadcc442bfedb9d92d1b4cbc47847 + md5: acae9191e8772f5aff48ab5232d4d2a3 + sha256: 1c30da861e306a25fac8cd30ce0c1b31c9238d04e7768c381cf4d431b4361e6c category: main optional: false - name: libbrotlicommon @@ -7250,35 +7238,33 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h31becfc_1.conda hash: - md5: 3ee026955c688f551a9999840cff4c67 - sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 1b219fd801eddb7a94df5bd001053ad9 + sha256: 1c3d4ea61e862eb5f1968915f6f5917ea61db9921aec30b14785775c87234060 category: main optional: false - name: libbrotlicommon version: 1.1.0 manager: conda platform: osx-64 - dependencies: - __osx: '>=10.13' - url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h00291cd_2.conda + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h0dc2134_1.conda hash: - md5: 58f2c4bdd56c46cc7451596e4ae68e0b - sha256: b377056470a9fb4a100aa3c51b3581aab6496ba84d21cd99bcc1d5ef0359b1b6 + md5: 9e6c31441c9aa24e41ace40d6151aab6 + sha256: f57c57c442ef371982619f82af8735f93a4f50293022cfd1ffaf2ff89c2e0b2a category: main optional: false - name: libbrotlicommon version: 1.1.0 manager: conda platform: osx-arm64 - dependencies: - __osx: '>=11.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda hash: - md5: d0bf1dff146b799b319ea0434b93f779 - sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: cd68f024df0304be41d29a9088162b02 + sha256: 556f0fddf4bd4d35febab404d98cb6862ce3b7ca843e393da0451bfc4654cf07 category: main optional: false - name: libbrotlidec @@ -7301,11 +7287,11 @@ package: platform: linux-aarch64 dependencies: libbrotlicommon: 1.1.0 - libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h31becfc_1.conda hash: - md5: e64d0f3b59c7c4047446b97a8624a72d - sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: 8db7cff89510bec0b863a0a8ee6a7bce + sha256: 1d2558efbb727f9065dd94d5f906aa68252153f80e571456d3695fa102e8a352 category: main optional: false - name: libbrotlidec @@ -7313,12 +7299,11 @@ package: manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' libbrotlicommon: 1.1.0 - url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h00291cd_2.conda + url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h0dc2134_1.conda hash: - md5: 34709a1f5df44e054c4a12ab536c5459 - sha256: 4d49ea72e2f44d2d7a8be5472e4bd0bc2c6b89c55569de2c43576363a0685c0c + md5: 9ee0bab91b2ca579e10353738be36063 + sha256: b11939c4c93c29448660ab5f63273216969d1f2f315dd9be60f3c43c4e61a50c category: main optional: false - name: libbrotlidec @@ -7326,12 +7311,11 @@ package: manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' libbrotlicommon: 1.1.0 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda hash: - md5: 55e66e68ce55523a6811633dd1ac74e2 - sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: ee1a519335cc10d0ec7e097602058c0a + sha256: c1c85937828ad3bc434ac60b7bcbde376f4d2ea4ee42d15d369bf2a591775b4a category: main optional: false - name: libbrotlienc @@ -7354,11 +7338,11 @@ package: platform: linux-aarch64 dependencies: libbrotlicommon: 1.1.0 - libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h31becfc_1.conda hash: - md5: 0e9bd365480c72b25c71a448257b537d - sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: ad3d3a826b5848d99936e4466ebbaa26 + sha256: 271fd8ef9181ad19246bf8b4273c99b9608c6eedecb6b11cd925211b8f1c6217 category: main optional: false - name: libbrotlienc @@ -7366,12 +7350,11 @@ package: manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' libbrotlicommon: 1.1.0 - url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h00291cd_2.conda + url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h0dc2134_1.conda hash: - md5: 691f0dcb36f1ae67f5c489f20ae987ea - sha256: 477d236d389473413a1ccd2bec1b66b2f1d2d7d1b4a57bb56421b7b611a56cd1 + md5: 8a421fe09c6187f0eb5e2338a8a8be6d + sha256: bc964c23e1a60ca1afe7bac38a9c1f2af3db4a8072c9f2eac4e4de537a844ac7 category: main optional: false - name: libbrotlienc @@ -7379,12 +7362,11 @@ package: manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' libbrotlicommon: 1.1.0 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda hash: - md5: 4f3a434504c67b2c42565c0b85c1885c - sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: d7e077f326a98b2cc60087eaff7c730b + sha256: 690dfc98e891ee1871c54166d30f6e22edfc2d7d6b29e7988dde5f1ce271c81a category: main optional: false - name: libcblas @@ -7405,10 +7387,10 @@ package: platform: linux-aarch64 dependencies: libblas: 3.9.0 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-24_linuxaarch64_openblas.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-23_linuxaarch64_openblas.conda hash: - md5: fe7560187584eaae4f115d471b62c09c - sha256: d7e0e459184ea92a4c0ece4ff5b4088bfa14811e3b650d948befc1cdab82fce2 + md5: 65a4f18036c0f5419146fddee6653a96 + sha256: a885bc11fcbe568a7abaff1188f1713b8709e35382606e6ee2cf7cfed6a0b6de category: main optional: false - name: libcblas @@ -7429,10 +7411,10 @@ package: platform: osx-arm64 dependencies: libblas: 3.9.0 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-24_osxarm64_openblas.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda hash: - md5: c8977086a19233153e454bb2b332a920 - sha256: 40dc3f7c44af5cd5a2020386cb30f92943a9d8f7f54321b4d6ae32b2e54af9a4 + md5: bad6ee9b7d5584efc2bc5266137b5f0d + sha256: c39d944909d0608bd0333398be5e0051045c9451bfd6cc6320732d33375569c8 category: main optional: false - name: libcrc32c @@ -7505,81 +7487,79 @@ package: category: main optional: false - name: libcurl - version: 8.10.1 + version: 8.9.1 manager: conda platform: linux-aarch64 dependencies: krb5: '>=1.21.3,<1.22.0a0' - libgcc: '>=13' + libgcc-ng: '>=12' libnghttp2: '>=1.58.0,<2.0a0' libssh2: '>=1.11.0,<2.0a0' libzlib: '>=1.3.1,<2.0a0' - openssl: '>=3.3.2,<4.0a0' + openssl: '>=3.3.1,<4.0a0' zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.9.1-hfa30633_0.conda hash: - md5: f43539295c4e0cd15202d41bc72b8a26 - sha256: 7c4983001c727f713b4448280ed4803d301087c184cd2819ba0b788ca62b73d1 + md5: efeb999ea2b519696001823b8e49cdbd + sha256: ded3a7ce889fc45926a49be14801ed334f2e40ca52380edabbcf5484ec7a889b category: main optional: false - name: libcurl - version: 8.10.1 + version: 8.9.1 manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' krb5: '>=1.21.3,<1.22.0a0' libnghttp2: '>=1.58.0,<2.0a0' libssh2: '>=1.11.0,<2.0a0' libzlib: '>=1.3.1,<2.0a0' - openssl: '>=3.3.2,<4.0a0' + openssl: '>=3.3.1,<4.0a0' zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.10.1-h58e7537_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.9.1-hfcf2730_0.conda hash: - md5: 6c8669d8228a2bbd0283911cc6d6726e - sha256: 662fe145459ed58dee882e525588d1da4dcc4cbd10cfca0725d1fc3840461798 + md5: 6ea09f173c46d135ee6d6845fe50a9c0 + sha256: a7ce066fbb2d34f7948d8e5da30d72ff01f0a5bcde05ea46fa2d647eeedad3a7 category: main optional: false - name: libcurl - version: 8.10.1 + version: 8.9.1 manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' krb5: '>=1.21.3,<1.22.0a0' libnghttp2: '>=1.58.0,<2.0a0' libssh2: '>=1.11.0,<2.0a0' libzlib: '>=1.3.1,<2.0a0' - openssl: '>=3.3.2,<4.0a0' + openssl: '>=3.3.1,<4.0a0' zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.9.1-hfd8ffcc_0.conda hash: - md5: d84030d0863ffe7dea00b9a807fee961 - sha256: 983a977c5627f975a930542c8aabb46089ec6ea72f28d9c4d3ee8eafaf2fc25a + md5: be0f46c6362775504d8894bd788a45b2 + sha256: 4d6006c866844a39fb835436a48407f54f2310111a6f1d3e89efb16cf5c4d81b category: main optional: false - name: libcxx - version: 19.1.0 + version: 18.1.8 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - url: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.0-hf95d169_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/libcxx-18.1.8-heced48a_2.conda hash: - md5: 0ed117b4cbbf7917dd47b4390e511d2a - sha256: 81e6bdf19cf202d769509d116c92046d164c23c91b6f791f439d10f3812629c9 + md5: 8c8198f9e93fcc0fd359ff37b4a8cd2d + sha256: e4df0dfd5fcc1e4ece36fb6b09f44436584df961c5cdbf328581522ff8d033b6 category: main optional: false - name: libcxx - version: 19.1.0 + version: 18.1.8 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.0-ha82da77_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h5a72898_2.conda hash: - md5: a4c66c0d5b0f268fd27a956145004d27 - sha256: b71167d9b7c8e598b12bbdafefd0139e3c70c6eb258cbda3de3fb422d0098025 + md5: 2d8d36fada9497ebc35894189fb52b7a + sha256: ed8d2977f87ca6221d17eb1b9272db5766d86d51c7fcb6135e5cf81aee516c8f category: main optional: false - name: libdeflate @@ -7791,39 +7771,37 @@ package: category: main optional: false - name: libexpat - version: 2.6.3 + version: 2.6.2 manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.3-h5ad3122_0.conda + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.2-h2f0025b_0.conda hash: - md5: 1d2b842bb76e268625e8ee8d0a9fe8c3 - sha256: 02341c9c35128055fd404dfe675832b80f2bf9dbb99539457652c11c06e52757 + md5: 1b9f46b804a2c3c5d7fd6a80b77c35f9 + sha256: 07453df3232a649f39fb4d1e68cfe1c78c3457764f85225f6f3ccd1bdd9818a4 category: main optional: false - name: libexpat - version: 2.6.3 + version: 2.6.2 manager: conda platform: osx-64 - dependencies: - __osx: '>=10.13' - url: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.3-hac325c4_0.conda + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.2-h73e2aa4_0.conda hash: - md5: c1db99b0a94a2f23bd6ce39e2d314e07 - sha256: dd22dffad6731c352f4c14603868c9cce4d3b50ff5ff1e50f416a82dcb491947 + md5: 3d1d51c8f716d97c864d12f7af329526 + sha256: a188a77b275d61159a32ab547f7d17892226e7dac4518d2c6ac3ac8fc8dfde92 category: main optional: false - name: libexpat - version: 2.6.3 + version: 2.6.2 manager: conda platform: osx-arm64 - dependencies: - __osx: '>=11.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.3-hf9b8971_0.conda + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda hash: - md5: 5f22f07c2ab2dea8c66fe9585a062c96 - sha256: 5cbe5a199fba14ade55457a468ce663aac0b54832c39aa54470b3889b4c75c4a + md5: e3cde7cfa87f82f7cb13d482d5e0ad09 + sha256: ba7173ac30064ea901a4c9fb5a51846dcc25512ceb565759be7d18cbf3e5415e category: main optional: false - name: libffi @@ -7885,18 +7863,6 @@ package: sha256: 10fa74b69266a2be7b96db881e18fa62cfa03082b65231e8d652e897c4b335a3 category: main optional: false -- name: libgcc - version: 14.1.0 - manager: conda - platform: linux-aarch64 - dependencies: - _openmp_mutex: '>=4.5' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.1.0-he277a41_1.conda - hash: - md5: 2cb475709e327bb76f74645784582e6a - sha256: 0affee19a50081827a9b7d5a43a1d241d295209342f5c6b8d1da21e950547680 - category: main - optional: false - name: libgcc-ng version: 14.1.0 manager: conda @@ -7914,11 +7880,11 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgcc: 14.1.0 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.1.0-he9431aa_1.conda + _openmp_mutex: '>=4.5' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.1.0-he277a41_0.conda hash: - md5: 842a1a0cf6f995091734a723e5d291ef - sha256: 44e76a6c1fad613d92035c69e475ccb7da2f554b2fdfabceff8dc4bc570f3622 + md5: 47ecd1292a3fd78b616640b35dd9632c + sha256: b9ca03216bc089c0c46f008bc6f447bc0df8dc826d9801fb4283e49fa89c877e category: main optional: false - name: libgfortran @@ -7933,18 +7899,6 @@ package: sha256: ed77f04f873e43a26e24d443dd090631eedc7d0ace3141baaefd96a123e47535 category: main optional: false -- name: libgfortran - version: 14.1.0 - manager: conda - platform: linux-aarch64 - dependencies: - libgfortran5: 14.1.0 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.1.0-he9431aa_1.conda - hash: - md5: c0b5e52811ae0997f9df25a99846eb9e - sha256: 8632662e780c32b7eda20be8d56bb605fa5a4f7851ba5b86d1cdf17125327664 - category: main - optional: false - name: libgfortran version: 5.0.0 manager: conda @@ -7986,11 +7940,11 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgfortran: 14.1.0 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-ng-14.1.0-he9431aa_1.conda + libgfortran5: 14.1.0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-ng-14.1.0-he9431aa_0.conda hash: - md5: 494514d173c7a4eb00957dc203b4d784 - sha256: b0e32c07e8a2965f12950a793dece8ca08db83ecf88c76e0d0d2466cc35a8956 + md5: a50ae662c1e7f26f0f2c99e31d1bf614 + sha256: 72d7aa3d0b20b9d64a2f1c72f016c5a8a19594bb56857267e9fc7c1fc0f13223 category: main optional: false - name: libgfortran5 @@ -8010,11 +7964,11 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=14.1.0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.1.0-h9420597_1.conda + libgcc-ng: '>=14.1.0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.1.0-h9420597_0.conda hash: - md5: f30cf31e474062ea51481d4181ee15df - sha256: 1c455a32c1f5aaf9befd03894cc053271f0aea3fb4211bb91dd0055138dc09e4 + md5: b907b29b964b8ebd7be215e47a659179 + sha256: 34a339c50c0fd2944ea31a013336b500f91f2e00ccfa0607f1bcc5d0a3378373 category: main optional: false - name: libgfortran5 @@ -8058,10 +8012,10 @@ package: manager: conda platform: linux-aarch64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.1.0-he277a41_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.1.0-he277a41_0.conda hash: - md5: 59d463d51eda114031e52667843f9665 - sha256: a257997cc35b97a58b4b3be1b108791619736d90af8d30dab717d0f0dd835ab5 + md5: 434ccc943b843117e4cebc97265f2504 + sha256: 11f326e49e0fb92c2a52e870c029fc26b4b6d3eb9414fa4374cb8496b231a730 category: main optional: false - name: libgoogle-cloud @@ -8084,57 +8038,57 @@ package: category: main optional: false - name: libgoogle-cloud - version: 2.29.0 + version: 2.26.0 manager: conda platform: linux-aarch64 dependencies: - libabseil: '>=20240722.0,<20240723.0a0' - libcurl: '>=8.10.1,<9.0a0' - libgcc: '>=13' - libgrpc: '>=1.65.5,<1.66.0a0' - libprotobuf: '>=5.27.5,<5.27.6.0a0' - libstdcxx: '>=13' - openssl: '>=3.3.2,<4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.29.0-hd2ff9d8_1.conda + libabseil: '>=20240116.2,<20240117.0a0' + libcurl: '>=8.8.0,<9.0a0' + libgcc-ng: '>=12' + libgrpc: '>=1.62.2,<1.63.0a0' + libprotobuf: '>=4.25.3,<4.25.4.0a0' + libstdcxx-ng: '>=12' + openssl: '>=3.3.1,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.26.0-hc02380a_0.conda hash: - md5: 44d17802e796e366ca3a1d364f759bec - sha256: e9cdf489e5b9003a48cf7cb1690e5aec8f073e70da667489f4b53e60032dd0e1 + md5: 64eb6bf3c63accd7ca9d171ba630128b + sha256: bf8f9f0c8065a910da1438e6b898950bc10527cf245667ed8b3cfb9966b6203c category: main optional: false - name: libgoogle-cloud - version: 2.29.0 + version: 2.26.0 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - libabseil: '>=20240722.0,<20240723.0a0' - libcurl: '>=8.10.1,<9.0a0' - libcxx: '>=17' - libgrpc: '>=1.65.5,<1.66.0a0' - libprotobuf: '>=5.27.5,<5.27.6.0a0' - openssl: '>=3.3.2,<4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.29.0-hade041e_1.conda + libabseil: '>=20240116.2,<20240117.0a0' + libcurl: '>=8.8.0,<9.0a0' + libcxx: '>=16' + libgrpc: '>=1.62.2,<1.63.0a0' + libprotobuf: '>=4.25.3,<4.25.4.0a0' + openssl: '>=3.3.1,<4.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.26.0-h721cda5_0.conda hash: - md5: 0966331f6b1362dc16aebfa76b0c33ab - sha256: 87e526f00c24f4e7c3a6cfccb966509599708f29cfcbd6a7238a0306d59e036c + md5: 7f7f4537746da4470385ec3a496730a4 + sha256: f514519dc7a48cfd81e5c2dd436223b221f80c03f224253739e22d60d896f632 category: main optional: false - name: libgoogle-cloud - version: 2.29.0 + version: 2.26.0 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - libabseil: '>=20240722.0,<20240723.0a0' - libcurl: '>=8.10.1,<9.0a0' - libcxx: '>=17' - libgrpc: '>=1.65.5,<1.66.0a0' - libprotobuf: '>=5.27.5,<5.27.6.0a0' - openssl: '>=3.3.2,<4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.29.0-h2e6cea1_1.conda + libabseil: '>=20240116.2,<20240117.0a0' + libcurl: '>=8.8.0,<9.0a0' + libcxx: '>=16' + libgrpc: '>=1.62.2,<1.63.0a0' + libprotobuf: '>=4.25.3,<4.25.4.0a0' + openssl: '>=3.3.1,<4.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.26.0-hfe08963_0.conda hash: - md5: c77eec3b64830ed367f48040fc74d503 - sha256: c04cc1e898bd581f6f9723a35ac11249276ed0554fa1773fb00c8656d5d1d54c + md5: db7ab92239aeb06c3c52de90cc1e6f7a + sha256: 6753beade8465987399e85ca47c94814e8e24c58cf0ff5591545e6cbe7172ec5 category: main optional: false - name: libgoogle-cloud-storage @@ -8158,26 +8112,26 @@ package: category: main optional: false - name: libgoogle-cloud-storage - version: 2.29.0 + version: 2.26.0 manager: conda platform: linux-aarch64 dependencies: libabseil: '' libcrc32c: '>=1.1.2,<1.2.0a0' libcurl: '' - libgcc: '>=13' - libgoogle-cloud: 2.29.0 - libstdcxx: '>=13' + libgcc-ng: '>=12' + libgoogle-cloud: 2.26.0 + libstdcxx-ng: '>=12' libzlib: '>=1.3.1,<2.0a0' openssl: '' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.29.0-hb9b2b65_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.26.0-hd572f31_0.conda hash: - md5: 3ca5a7afe1a51d601c7006921c2bfd5e - sha256: 58b731be71c5081607c18bce126b12ff60b44dc0611242d59e0b1c110ea4a132 + md5: c3416132d0d0b173f4ce4561dd02664c + sha256: 548d737fdee350b31061423d63367093cb8c213377787b823af15381bd1d6eb9 category: main optional: false - name: libgoogle-cloud-storage - version: 2.29.0 + version: 2.26.0 manager: conda platform: osx-64 dependencies: @@ -8185,18 +8139,18 @@ package: libabseil: '' libcrc32c: '>=1.1.2,<1.2.0a0' libcurl: '' - libcxx: '>=17' - libgoogle-cloud: 2.29.0 + libcxx: '>=16' + libgoogle-cloud: 2.26.0 libzlib: '>=1.3.1,<2.0a0' openssl: '' - url: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.29.0-h8126ed0_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.26.0-h9e84e37_0.conda hash: - md5: e5c845b99aa7b4d90a6717f2739d622b - sha256: 205a2d89c50fa60aa5f61d7b06c6f13a672ad8bfabb3705a234605eb156cf37b + md5: b1e5017003917b69d5c046fc7ac0dcc3 + sha256: d2081318e2962225c7b00fee355f66737553828eac42ddfbab968f59b039213a category: main optional: false - name: libgoogle-cloud-storage - version: 2.29.0 + version: 2.26.0 manager: conda platform: osx-arm64 dependencies: @@ -8204,14 +8158,14 @@ package: libabseil: '' libcrc32c: '>=1.1.2,<1.2.0a0' libcurl: '' - libcxx: '>=17' - libgoogle-cloud: 2.29.0 + libcxx: '>=16' + libgoogle-cloud: 2.26.0 libzlib: '>=1.3.1,<2.0a0' openssl: '' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.29.0-h90fd6fa_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.26.0-h1466eeb_0.conda hash: - md5: ed2042c4cc060410c8885bbe467326f7 - sha256: ae763f625003ac50acba088a47bd7e80baba220634a2b931b77aca04e3194043 + md5: 385940a9a022e911e88f4e9ea45e47b3 + sha256: b4c37ebd74a1453ee1cf561e40354544866d1816fa12637b7076377d0ef205ae category: main optional: false - name: libgrpc @@ -8236,63 +8190,62 @@ package: category: main optional: false - name: libgrpc - version: 1.65.5 + version: 1.62.2 manager: conda platform: linux-aarch64 dependencies: - c-ares: '>=1.32.3,<2.0a0' - libabseil: '>=20240722.0,<20240723.0a0' - libgcc: '>=13' - libprotobuf: '>=5.27.5,<5.27.6.0a0' + c-ares: '>=1.28.1,<2.0a0' + libabseil: '>=20240116.1,<20240117.0a0' + libgcc-ng: '>=12' + libprotobuf: '>=4.25.3,<4.25.4.0a0' libre2-11: '>=2023.9.1,<2024.0a0' - libstdcxx: '>=13' - libzlib: '>=1.3.1,<2.0a0' - openssl: '>=3.3.2,<4.0a0' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<2.0.0a0' + openssl: '>=3.2.1,<4.0a0' re2: '' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.65.5-ha633eb3_0.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.62.2-h98a9317_0.conda hash: - md5: 89c7ffa4952bbdb69addf69fb74257c6 - sha256: c57583d4e8ede1efaae57fa2ec14a32061316851746bfa58c512b29cdadfe381 + md5: 2a669953ec0f08c2cc56bb43fed78de8 + sha256: ae5fe7ba0c5c599f0e20fa08be436518b7ef25ab6f705e8c7fcf0d0f34525f72 category: main optional: false - name: libgrpc - version: 1.65.5 + version: 1.62.2 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - c-ares: '>=1.33.1,<2.0a0' - libabseil: '>=20240722.0,<20240723.0a0' - libcxx: '>=17' - libprotobuf: '>=5.27.5,<5.27.6.0a0' + c-ares: '>=1.28.1,<2.0a0' + libabseil: '>=20240116.1,<20240117.0a0' + libcxx: '>=16' + libprotobuf: '>=4.25.3,<4.25.4.0a0' libre2-11: '>=2023.9.1,<2024.0a0' - libzlib: '>=1.3.1,<2.0a0' - openssl: '>=3.3.2,<4.0a0' + libzlib: '>=1.2.13,<2.0.0a0' + openssl: '>=3.2.1,<4.0a0' re2: '' - url: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.65.5-hb88832f_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.62.2-h384b2fc_0.conda hash: - md5: 8ef969b891fe57caf3acfb5495ec0ab9 - sha256: b862af63c5b362743527fde9b7411b6a2d1270f858acbabc2beeee306465b405 + md5: 9421f67cf8b4bc976fe5d0c3ab42de18 + sha256: 7c228040e7dac4e5e7e6935a4decf6bc2155cc05fcfb0811d25ccb242d0036ba category: main optional: false - name: libgrpc - version: 1.65.5 + version: 1.62.2 manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' - c-ares: '>=1.33.1,<2.0a0' - libabseil: '>=20240722.0,<20240723.0a0' - libcxx: '>=17' - libprotobuf: '>=5.27.5,<5.27.6.0a0' + c-ares: '>=1.28.1,<2.0a0' + libabseil: '>=20240116.1,<20240117.0a0' + libcxx: '>=16' + libprotobuf: '>=4.25.3,<4.25.4.0a0' libre2-11: '>=2023.9.1,<2024.0a0' - libzlib: '>=1.3.1,<2.0a0' - openssl: '>=3.3.2,<4.0a0' + libzlib: '>=1.2.13,<2.0.0a0' + openssl: '>=3.2.1,<4.0a0' re2: '' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.65.5-h3d9cf25_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.62.2-h9c18a4f_0.conda hash: - md5: b829a3509f5d89b21fa481ebc8edd953 - sha256: a92096af0fa67bb03fe2d40dfb11e7746603842a78fddce9f06e3ced9d93b61e + md5: e624fc11026dbb84c549435eccd08623 + sha256: d2c5b5a828f6f1242c11e8c91968f48f64446f7dd5cbfa1197545e465eb7d47a category: main optional: false - name: libiconv @@ -8405,10 +8358,10 @@ package: platform: linux-aarch64 dependencies: libblas: 3.9.0 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-24_linuxaarch64_openblas.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-23_linuxaarch64_openblas.conda hash: - md5: a5ed3c9636f97ac4078cc96e7d79614c - sha256: 8bed380952364519a25730ac997c172d2c067726bc57b282f6c924f2b89a3426 + md5: 85c4fec3847027ca7402f3bd7d2de4c1 + sha256: e38af4037789e0650755d6d2758f49ef6820ddf67e9aee633abfad6f281a17cb category: main optional: false - name: liblapack @@ -8429,10 +8382,10 @@ package: platform: osx-arm64 dependencies: libblas: 3.9.0 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-24_osxarm64_openblas.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda hash: - md5: 49a3241f76cdbe705e346204a328f66c - sha256: 67fbfd0466eee443cda9596ed22daabedc96b7b4d1b31f49b1c1b0983dd1dd2c + md5: 754ef44f72ab80fd14eaa789ac393a27 + sha256: 13799a137ffc80786725e7e2820d37d4c0d59dbb76013a14c21771415b0a4263 category: main optional: false - name: libnghttp2 @@ -8596,10 +8549,10 @@ package: libstdcxx: '>=13' libthrift: '>=0.21.0,<0.21.1.0a0' openssl: '>=3.3.2,<4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h6bd9018_18_cpu.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h6bd9018_19_cpu.conda hash: - md5: edf973a91f48798c515bb7391496a5f4 - sha256: 59e662f3688f4736bf547431c326c5609528b2d355371ce05541c6f61574dc76 + md5: d73151b9d29601f33fb8ee74c07bd920 + sha256: 7921bd6cfa712cc44db21eb6cac3739144394a4e27242bdb2b535876b5dcd33d category: main optional: false - name: libparquet @@ -8608,14 +8561,14 @@ package: platform: linux-aarch64 dependencies: libarrow: 17.0.0 - libgcc: '>=13' - libstdcxx: '>=13' - libthrift: '>=0.21.0,<0.21.1.0a0' - openssl: '>=3.3.2,<4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-17.0.0-h23a96eb_18_cpu.conda + libgcc-ng: '>=13' + libstdcxx-ng: '>=13' + libthrift: '>=0.19.0,<0.19.1.0a0' + openssl: '>=3.3.1,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-17.0.0-h6fe2c6f_3_cpu.conda hash: - md5: c316e65614f6c9af19cab423a3240431 - sha256: 01fd70e5a73183af3a01fedba7f63551422d7a28020012ced4b8aa6fc4e5664c + md5: 5a234f39809cc0ed95ebb49401ce0785 + sha256: ff2a26f5b7c16025142eb0bb4cb618872640995823d7764ed02f677f338cbf39 category: main optional: false - name: libparquet @@ -8625,13 +8578,13 @@ package: dependencies: __osx: '>=10.13' libarrow: 17.0.0 - libcxx: '>=18' - libthrift: '>=0.21.0,<0.21.1.0a0' - openssl: '>=3.3.2,<4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/libparquet-17.0.0-hebc3d63_18_cpu.conda + libcxx: '>=17' + libthrift: '>=0.19.0,<0.19.1.0a0' + openssl: '>=3.3.1,<4.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/libparquet-17.0.0-h2adadb3_3_cpu.conda hash: - md5: f945f51f78867bf46f13ad57cd6e586b - sha256: 9e699977ca2bb90425fe2cf5a1cbc356c04ccfed1541dd61287f80baba72008f + md5: 4d0f3d55c7bb141db7c51ecef55d1def + sha256: 2b3fdaa6ddb5eab630a326a6c4a4901a7a25253ec5578d400cbd70b702a59e8f category: main optional: false - name: libparquet @@ -8641,13 +8594,13 @@ package: dependencies: __osx: '>=11.0' libarrow: 17.0.0 - libcxx: '>=18' - libthrift: '>=0.21.0,<0.21.1.0a0' - openssl: '>=3.3.2,<4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-17.0.0-hff2b6b3_18_cpu.conda + libcxx: '>=17' + libthrift: '>=0.19.0,<0.19.1.0a0' + openssl: '>=3.3.1,<4.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-17.0.0-h56531a6_3_cpu.conda hash: - md5: dd74daa11fa1add5a1b8e684dc0607f4 - sha256: 9aa0aad980069d51e347653cc75f27f1b9de275012abea19aadcb03d10b2e5cd + md5: 898bc2c276c4c7995c382d9be3e674a6 + sha256: 027a87285ac4b69d8a4c803fea71439460b63b5f29e7a0df12a82196ad1fdb0f category: main optional: false - name: libpng @@ -8665,42 +8618,40 @@ package: category: main optional: false - name: libpng - version: 1.6.44 + version: 1.6.43 manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - libzlib: '>=1.3.1,<2.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + libgcc-ng: '>=12' + libzlib: '>=1.2.13,<2.0.0a0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.43-h194ca79_0.conda hash: - md5: 5d25802b25fcc7419fa13e21affaeb3a - sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 + md5: 1123e504d9254dd9494267ab9aba95f0 + sha256: 6f408f3d6854f86e223289f0dda12562b047c7a1fdf3636c67ec39afcd141f43 category: main optional: false - name: libpng - version: 1.6.44 + version: 1.6.43 manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' - libzlib: '>=1.3.1,<2.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda + libzlib: '>=1.2.13,<2.0.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.43-h92b6c6a_0.conda hash: - md5: f32ac2c8dd390dbf169f550887ed09d9 - sha256: 12b44e58f8832798d7a5c0a7480c95e905dbd6c3558dec09739062411f9e08d1 + md5: 65dcddb15965c9de2c0365cb14910532 + sha256: 13e646d24b5179e6b0a5ece4451a587d759f55d9a360b7015f8f96eff4524b8f category: main optional: false - name: libpng - version: 1.6.44 + version: 1.6.43 manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' - libzlib: '>=1.3.1,<2.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + libzlib: '>=1.2.13,<2.0.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.43-h091b4b1_0.conda hash: - md5: fb36e93f0ea6a6f5d2b99984f34b049e - sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 + md5: 77e684ca58d82cae9deebafb95b1a2b8 + sha256: 66c4713b07408398f2221229a1c1d5df57d65dc0902258113f2d9ecac4772495 category: main optional: false - name: libprotobuf @@ -8720,48 +8671,47 @@ package: category: main optional: false - name: libprotobuf - version: 5.27.5 + version: 4.25.3 manager: conda platform: linux-aarch64 dependencies: - libabseil: '>=20240722.0,<20240723.0a0' - libgcc: '>=13' - libstdcxx: '>=13' - libzlib: '>=1.3.1,<2.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.27.5-h029595c_2.conda + libabseil: '>=20240116.1,<20240117.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<2.0.0a0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-4.25.3-h648ac29_0.conda hash: - md5: f789a1fe2a1f45e325a784b34c3c4baa - sha256: 347a1fe304526efe23929c357c145c4917549ba1edd9da432e92a54f4ad4082d + md5: a239d63913ec9e008bdbe35899f677f4 + sha256: 76775a1457b2d4de1097bec2fda16b8e6e80f761d11aa7a525fa215bff4ab87c category: main optional: false - name: libprotobuf - version: 5.27.5 + version: 4.25.3 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - libabseil: '>=20240722.0,<20240723.0a0' - libcxx: '>=17' - libzlib: '>=1.3.1,<2.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.27.5-h62b0dff_2.conda + libabseil: '>=20240116.1,<20240117.0a0' + libcxx: '>=16' + libzlib: '>=1.2.13,<2.0.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-4.25.3-h4e4d658_0.conda hash: - md5: e3b68d9a164d807f70df49e17bc54931 - sha256: ac77bce3b9a58e6fa72bed339af0d47faf1dec3bc717e4e05e2e729dc42bd2b3 + md5: 57b7ee4f1fd8573781cfdabaec4a7782 + sha256: 3f126769fb5820387d436370ad48600e05d038a28689fdf9988b64e1059947a8 category: main optional: false - name: libprotobuf - version: 5.27.5 + version: 4.25.3 manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' - libabseil: '>=20240722.0,<20240723.0a0' - libcxx: '>=17' - libzlib: '>=1.3.1,<2.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.27.5-h53f8970_2.conda + libabseil: '>=20240116.1,<20240117.0a0' + libcxx: '>=16' + libzlib: '>=1.2.13,<2.0.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-4.25.3-hbfab5d5_0.conda hash: - md5: e9d021f82c48bb08b0b2c321b2f7778c - sha256: 787d86c041c03d33b24e28df5f881f47c74c3fe9053b791f14616dc51f32a687 + md5: 5f70b2b945a9741cba7e6dfe735a02a7 + sha256: d754519abc3ddbdedab2a38d0639170f5347c1573eef80c707f3a8dc5dff706a category: main optional: false - name: libre2-11 @@ -8784,13 +8734,13 @@ package: manager: conda platform: linux-aarch64 dependencies: - libabseil: '>=20240722.0,<20240723.0a0' - libgcc: '>=13' - libstdcxx: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2023.09.01-h18dbdb1_3.conda + libabseil: '>=20240116.1,<20240117.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2023.09.01-h9d008c2_2.conda hash: - md5: 5626724329baef024b3a917fdf5a780d - sha256: 6274b0a01786b8c1b3590014652b15ec8fe2a3bc4880be65bdad018d8ff72f44 + md5: 387c114aadcaeb02210f646c4b5efca2 + sha256: 1da5cfd57091a52c822ec9580694f1e07817e53db43b0407a477daa2d2a16fcd category: main optional: false - name: libre2-11 @@ -8799,12 +8749,12 @@ package: platform: osx-64 dependencies: __osx: '>=10.13' - libabseil: '>=20240722.0,<20240723.0a0' - libcxx: '>=17' - url: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2023.09.01-hd530cb8_3.conda + libabseil: '>=20240116.1,<20240117.0a0' + libcxx: '>=16' + url: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2023.09.01-h81f5012_2.conda hash: - md5: ae87614947406368660f6ffc10f4e8bf - sha256: b8d646796eefaf6371bd44867e5c697d744bb85e288b547f714f4c8b85865fb7 + md5: c5c36ec64e3c86504728c38b79011d08 + sha256: 384b72a09bd4bb29c1aa085110b2f940dba431587ffb4e2c1a28f605887a1867 category: main optional: false - name: libre2-11 @@ -8812,13 +8762,12 @@ package: manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' - libabseil: '>=20240722.0,<20240723.0a0' - libcxx: '>=17' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.09.01-h2348fd5_3.conda + libabseil: '>=20240116.1,<20240117.0a0' + libcxx: '>=16' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.09.01-h7b2c953_2.conda hash: - md5: 5a39a5f395de3a00a03fd17a8c264111 - sha256: 8549ec3f7f8bc221065c17b5c90b7aa486fb67bbfb0a2a2eb549d556f92ab236 + md5: 0b7b2ced046d6b5fe6e9d46b1ee0324c + sha256: c8a0a6e7a627dc9c66ffb8858f8f6d499f67fd269b6636b25dc5169760610f05 category: main optional: false - name: libsodium @@ -8834,39 +8783,37 @@ package: category: main optional: false - name: libsodium - version: 1.0.20 + version: 1.0.18 manager: conda platform: linux-aarch64 dependencies: - libgcc-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + libgcc-ng: '>=7.5.0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.18-hb9de7d4_1.tar.bz2 hash: - md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a - sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: d09ab3c60eebb6f14eb4d07e172775cc + sha256: 9ee442d889242c633bc3ce3f50ae89e6d8ebf12e04d943c371c0a56913fa069b category: main optional: false - name: libsodium - version: 1.0.20 + version: 1.0.18 manager: conda platform: osx-64 - dependencies: - __osx: '>=10.13' - url: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.18-hbcb3906_1.tar.bz2 hash: - md5: 6af4b059e26492da6013e79cbcb4d069 - sha256: d3975cfe60e81072666da8c76b993af018cf2e73fe55acba2b5ba0928efaccf5 + md5: 24632c09ed931af617fe6d5292919cab + sha256: 2da45f14e3d383b4b9e3a8bacc95cd2832aac2dbf9fbc70d255d384a310c5660 category: main optional: false - name: libsodium - version: 1.0.20 + version: 1.0.18 manager: conda platform: osx-arm64 - dependencies: - __osx: '>=11.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.18-h27ca646_1.tar.bz2 hash: - md5: a7ce36e284c5faaf93c220dfc39e3abd - sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: 90859688dbca4735b74c02af14c4c793 + sha256: 1d95fe5e5e6a0700669aab454b2a32f97289c9ed8d1f7667c2ba98327a6f05bc category: main optional: false - name: libsqlite @@ -8884,42 +8831,42 @@ package: category: main optional: false - name: libsqlite - version: 3.46.1 + version: 3.46.0 manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - libzlib: '>=1.3.1,<2.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.46.1-hc4a20ef_0.conda + libgcc-ng: '>=12' + libzlib: '>=1.2.13,<2.0a0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.46.0-hf51ef55_0.conda hash: - md5: cd559337c1bd9545ecbeaad017e7d878 - sha256: b4ee96d292fea6bdfceb34dff5e5f0e4b21a0a3dab0559a21fc4a35dc217764e + md5: a8ae63fd6fb7d007f74ef3df95e5edf3 + sha256: 7b48d006be6cd089105687fb524a2c93c4218bfc398d0611340cafec55249977 category: main optional: false - name: libsqlite - version: 3.46.1 + version: 3.46.0 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - libzlib: '>=1.3.1,<2.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.46.1-h4b8f8c9_0.conda + libzlib: '>=1.2.13,<2.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.46.0-h1b8f9f3_0.conda hash: - md5: 84de0078b58f899fc164303b0603ff0e - sha256: 1d075cb823f0cad7e196871b7c57961d669cbbb6cd0e798bf50cbf520dda65fb + md5: 5dadfbc1a567fe6e475df4ce3148be09 + sha256: 63af1a9e3284c7e4952364bafe7267e41e2d9d8bcc0e85a4ea4b0ec02d3693f6 category: main optional: false - name: libsqlite - version: 3.46.1 + version: 3.46.0 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - libzlib: '>=1.3.1,<2.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.46.1-hc14010f_0.conda + libzlib: '>=1.2.13,<2.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.46.0-hfb93653_0.conda hash: - md5: 58050ec1724e58668d0126a1615553fa - sha256: 3725f962f490c5d44dae326d5f5b2e3c97f71a6322d914ccc85b5ddc2e50d120 + md5: 12300188028c9bc02da965128b91b517 + sha256: 73048f9cb8647d3d3bfe6021c0b7d663e12cffbe9b4f31bd081e713b0a9ad8f9 category: main optional: false - name: libssh2 @@ -8988,18 +8935,6 @@ package: sha256: 44decb3d23abacf1c6dd59f3c152a7101b7ca565b4ef8872804ceaedcc53a9cd category: main optional: false -- name: libstdcxx - version: 14.1.0 - manager: conda - platform: linux-aarch64 - dependencies: - libgcc: 14.1.0 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.1.0-h3f4de04_1.conda - hash: - md5: 6c2afef2109372440a90c566bcb6391c - sha256: 430e7c36ca9736d06fd669eb1771acb9a8bcaac578ae76b093fa06391798a0ae - category: main - optional: false - name: libstdcxx-ng version: 14.1.0 manager: conda @@ -9017,11 +8952,11 @@ package: manager: conda platform: linux-aarch64 dependencies: - libstdcxx: 14.1.0 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.1.0-hf1166c9_1.conda + libgcc-ng: 14.1.0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.1.0-h3f4de04_0.conda hash: - md5: 51f54efdd1d2ed5d7e9c67381b75fdb1 - sha256: d7aa6fa26735317ea5cc18e4c2f3316ce29dcc283d65b72b3b99b2d88386aaf4 + md5: 2f84852b723ac4389eb188db695526bb + sha256: 4f2f35b78258d1a1e56b1b0e61091862c10ec76bf67ca1b0ff99dd5e07e76271 category: main optional: false - name: libthrift @@ -9042,51 +8977,49 @@ package: category: main optional: false - name: libthrift - version: 0.21.0 + version: 0.19.0 manager: conda platform: linux-aarch64 dependencies: libevent: '>=2.1.12,<2.1.13.0a0' - libgcc: '>=13' - libstdcxx: '>=13' - libzlib: '>=1.3.1,<2.0a0' - openssl: '>=3.3.2,<4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<2.0.0a0' + openssl: '>=3.1.3,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.19.0-h043aeee_1.conda hash: - md5: c28792bf37f4ecdce8e3cb9e40750650 - sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: 591ef1567ed4989d824fe35b45e3ae68 + sha256: 83d38df283ae258eb73807442ccee62364cf50b853d238a5b03092374c7bcf45 category: main optional: false - name: libthrift - version: 0.21.0 + version: 0.19.0 manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' - libcxx: '>=17' + libcxx: '>=15.0.7' libevent: '>=2.1.12,<2.1.13.0a0' - libzlib: '>=1.3.1,<2.0a0' - openssl: '>=3.3.2,<4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.21.0-h75589b3_0.conda + libzlib: '>=1.2.13,<2.0.0a0' + openssl: '>=3.1.3,<4.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.19.0-h064b379_1.conda hash: - md5: 7a472cd20d9ae866aeb6e292b33381d6 - sha256: 3f82eddd6de435a408538ac81a7a2c0c155877534761ec9cd7a2906c005cece2 + md5: b152655bfad7c2374ff03be0596052b6 + sha256: 4346c25ef6e2ff3d0fc93074238508531188ecd0dbea6414f6cb93a7775072c4 category: main optional: false - name: libthrift - version: 0.21.0 + version: 0.19.0 manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' - libcxx: '>=17' + libcxx: '>=15.0.7' libevent: '>=2.1.12,<2.1.13.0a0' - libzlib: '>=1.3.1,<2.0a0' - openssl: '>=3.3.2,<4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + libzlib: '>=1.2.13,<2.0.0a0' + openssl: '>=3.1.3,<4.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.19.0-h026a170_1.conda hash: - md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 - sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 4b8b21eb00d9019e9fa351141da2a6ac + sha256: b2c1b30d36f0412c0c0313db76a0236d736f3a9b887b8ed16182f531e4b7cb80 category: main optional: false - name: libtiff @@ -9111,63 +9044,63 @@ package: category: main optional: false - name: libtiff - version: 4.7.0 + version: 4.6.0 manager: conda platform: linux-aarch64 dependencies: lerc: '>=4.0.0,<5.0a0' libdeflate: '>=1.21,<1.22.0a0' - libgcc: '>=13' + libgcc-ng: '>=12' libjpeg-turbo: '>=3.0.0,<4.0a0' - libstdcxx: '>=13' + libstdcxx-ng: '>=12' libwebp-base: '>=1.4.0,<2.0a0' libzlib: '>=1.3.1,<2.0a0' xz: '>=5.2.6,<6.0a0' zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h431e736_0.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.6.0-h395e79b_4.conda hash: - md5: 11b06c6e1bfa6f405aebc9576c85e3a1 - sha256: 95b0dbd1e4833e26aa4bd9a530856039eda1d5900793cc8fc340db9bd2e33bd0 + md5: 07ac339fcab2d44ddfd9b8ac58e80a05 + sha256: b3517c9876d8517815d9325eac62c84648652874fcc7f30a252629584990a178 category: main optional: false - name: libtiff - version: 4.7.0 + version: 4.6.0 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' lerc: '>=4.0.0,<5.0a0' - libcxx: '>=17' + libcxx: '>=16' libdeflate: '>=1.21,<1.22.0a0' libjpeg-turbo: '>=3.0.0,<4.0a0' libwebp-base: '>=1.4.0,<2.0a0' libzlib: '>=1.3.1,<2.0a0' xz: '>=5.2.6,<6.0a0' zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h5f227bf_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.6.0-h603087a_4.conda hash: - md5: 2ae42f38aacee5eda6c541cad957e703 - sha256: 7a348f9e5833b3ade5036eb12e8ba8b4f4518413ee777ab6666766bb93db98d1 + md5: 362626a2aacb976ec89c91b99bfab30b + sha256: 3b853901835167406f1c576207ec0294da4aade69c170a6e29206d454f42c259 category: main optional: false - name: libtiff - version: 4.7.0 + version: 4.6.0 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' lerc: '>=4.0.0,<5.0a0' - libcxx: '>=17' + libcxx: '>=16' libdeflate: '>=1.21,<1.22.0a0' libjpeg-turbo: '>=3.0.0,<4.0a0' libwebp-base: '>=1.4.0,<2.0a0' libzlib: '>=1.3.1,<2.0a0' xz: '>=5.2.6,<6.0a0' zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h9c1d414_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.6.0-hf8409c0_4.conda hash: - md5: 5f8f92ddf488a4cd50f9f5a9c4ff27c4 - sha256: 2fb2d204de0ef47518587da769a0dfb114cce4ae4d4ba3b60a9f59d9759f9800 + md5: 16a56d4b4ee88fdad1210bf026619cc3 + sha256: a974a0ed75df11a9fa1ddfe2fa21aa7ecc70e5a92a37b86b648691810f02aac6 category: main optional: false - name: libutf8proc @@ -9303,48 +9236,46 @@ package: category: main optional: false - name: libxcb - version: 1.17.0 + version: '1.16' manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' + libgcc-ng: '>=12' pthread-stubs: '' xorg-libxau: '>=1.0.11,<2.0a0' xorg-libxdmcp: '' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.16-h7935292_0.conda hash: - md5: cd14ee5cca2464a425b1dbfc24d90db2 - sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: 93c0136e9cba96657339dfe25fba4da7 + sha256: 5e4fec0243dca4af29cce38182b5a1b109a32f064421389f1a44aa883de79a1b category: main optional: false - name: libxcb - version: 1.17.0 + version: '1.16' manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' pthread-stubs: '' xorg-libxau: '>=1.0.11,<2.0a0' xorg-libxdmcp: '' - url: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.16-h0dc2134_0.conda hash: - md5: bbeca862892e2898bdb45792a61c4afc - sha256: 8896cd5deff6f57d102734f3e672bc17120613647288f9122bec69098e839af7 + md5: 07e80289d4ba724f37b4b6f001f88fbe + sha256: c64277f586b716d5c34947e7f2783ef0d24f239a136bc6a024e854bede0389a9 category: main optional: false - name: libxcb - version: 1.17.0 + version: '1.16' manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' pthread-stubs: '' xorg-libxau: '>=1.0.11,<2.0a0' xorg-libxdmcp: '' - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.16-hf2054a2_0.conda hash: - md5: af523aae2eca6dfa1c8eec693f5b9a79 - sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: 55b5ed79062edde70459943d2d430d99 + sha256: ebf4b797f18de4280548520c97ca1528bcb5a8bc721e3bb133a4e3c930a5320f category: main optional: false - name: libxcrypt @@ -9441,11 +9372,12 @@ package: manager: conda platform: linux-64 dependencies: - libgcc-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + __glibc: '>=2.17,<3.0.a0' + libgcc: '>=13' + url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda hash: - md5: 57d7dc60e9325e3de37ff8dffd18e814 - sha256: adf6096f98b537a11ae3729eaa642b0811478f0ea0402ca67b5108fe2cb0010d + md5: edb0dca6bc32e4f4789199455a1dbeb8 + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 category: main optional: false - name: libzlib @@ -9490,10 +9422,10 @@ package: platform: osx-64 dependencies: __osx: '>=10.13' - url: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-18.1.8-h15ab845_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-18.1.8-h15ab845_0.conda hash: - md5: ad0afa524866cc1c08b436865d0ae484 - sha256: 06a245abb6e6d8d6662a35ad162eacb39f431349edf7cea9b1ff73b2da213c58 + md5: 2c3c6c8aaf8728f87326964a82fdc7d8 + sha256: 0fd74128806bd839c7a9aa343faf265b94aece84f75f67f14b6246936138e61e category: main optional: false - name: llvm-openmp @@ -9502,10 +9434,10 @@ package: platform: osx-arm64 dependencies: __osx: '>=11.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-18.1.8-hde57baf_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-18.1.8-hde57baf_0.conda hash: - md5: fe89757e3cd14bb1c6ebd68dac591363 - sha256: 7a76e2932ac77e6314bfa1c4ff83f617c8260313bfed1b8401b508ed3e9d70ba + md5: 82393fdbe38448d878a8848b6fcbcefb + sha256: 42bc913b3c91934a1ce7ff635e87ee48e2e252632f0cbf607c5a3e4409d9f9dd category: main optional: false - name: locket @@ -9577,14 +9509,14 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' + libgcc-ng: '>=12' lz4-c: '>=1.9.3,<1.10.0a0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-4.3.3-py312h8c5c2bf_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-4.3.3-py312hd3ecf0c_0.conda hash: - md5: 277c1a92532f64b32055725cb726b5d1 - sha256: 381a1e719c2426055813f4f804ee2b92449f5843abb8374d00e8970b92138844 + md5: face7bfed21218b842689f30c3f7abb6 + sha256: 2e41a50f4697e3e940f6eddc5d9f194013501e5c5b11a51556f55441fa9fa04a category: main optional: false - name: lz4 @@ -9592,14 +9524,13 @@ package: manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' lz4-c: '>=1.9.3,<1.10.0a0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/lz4-4.3.3-py312h83408cd_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/lz4-4.3.3-py312h904eaf1_0.conda hash: - md5: cf60d8882f24daa555d28c44364f33f2 - sha256: b270abcdf268fc3d2e6d1d5b2fb0837f52485be7b6259fd834d6c3810f43e986 + md5: 3d5b987b4090e9dc8ad65c0d536d34ce + sha256: d6761866789708afc396897fe505c52056917d00bb5745f91aa22b4dd8af8d07 category: main optional: false - name: lz4 @@ -9607,14 +9538,13 @@ package: manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' lz4-c: '>=1.9.3,<1.10.0a0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-4.3.3-py312h11d1bbd_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-4.3.3-py312haed5471_0.conda hash: - md5: 4a9eb3dc0ba76484cae3084b99d008e5 - sha256: 592e903be664d4daca335bc8b95f7e092aef0276830a2a7b5962ca7bbca60ee6 + md5: a8012768c1211957c79ff1f64a02a56d + sha256: d0c017fc36d862f6a3891077bee9c69c88e7b9b036657f2fc1f70e9fc8fe628b category: main optional: false - name: lz4-c @@ -9743,13 +9673,13 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' + libgcc-ng: '>=12' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-2.1.5-py312h52516f5_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-2.1.5-py312h9ef2f89_0.conda hash: - md5: 4d57ed884c877a0e0e371e57104e8e90 - sha256: 091ec5df216cffaea762cb6db913175c2881bf0f8e240eea7f56f108a3a25214 + md5: a00135adde3dfe19b9962c3c767c2129 + sha256: dbd85f5230b69165fe9d1e66ed60ae697da314ed041f485be09b8c1fbcc7af3a category: main optional: false - name: markupsafe @@ -9757,13 +9687,12 @@ package: manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-2.1.5-py312hb553811_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-2.1.5-py312h41838bb_0.conda hash: - md5: 2b9fc64d656299475c648d7508e14943 - sha256: 2382cc541f3bbe912180861754aceb2ed180004e361a7c66ac2b1a71a7c2fba8 + md5: c4a9c25c09cef3901789ca818d9beb10 + sha256: 8dc8f31f78d00713300da000b6ebaa1943a17c112f267de310d5c3d82950079c category: main optional: false - name: markupsafe @@ -9771,13 +9700,12 @@ package: manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-2.1.5-py312h024a12e_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-2.1.5-py312he37b823_0.conda hash: - md5: 66ee733dbdf8a9ca670f167bf5ea36b4 - sha256: 0e337724d82b19510c457246c319b35944580f31b3859359e1e8b9c53a14bc52 + md5: ba3a8f8cf8bbdb81394275b1e1d271da + sha256: 61480b725490f68856dd14e646f51ffc34f77f2c985bd33e3b77c04b2856d97d category: main optional: false - name: matplotlib-inline @@ -9897,48 +9825,48 @@ package: category: main optional: false - name: msgpack-python - version: 1.1.0 + version: 1.0.8 manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - libstdcxx: '>=13' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.1.0-py312h451a7dd_0.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.0.8-py312ha396110_0.conda hash: - md5: 15e5cebe90fe26204128ad169ffe0c48 - sha256: 4d31391007a9bea03aa9637e5de7fde5d3c32bac2b0f55fceed0a18b0077a907 + md5: 8a3f9661dc63fe244ae00cf79a8e46fb + sha256: 53fae69e5444cb8cebd0182eb47a5c4430dbc3ad7c806f8a5fe920d66da248d5 category: main optional: false - name: msgpack-python - version: 1.1.0 + version: 1.0.8 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - libcxx: '>=17' + libcxx: '>=16' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.1.0-py312hc5c4d5f_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.0.8-py312hc3c9ca0_0.conda hash: - md5: 3448a4ca65790764c2f8d44d5f917f84 - sha256: d12f400fb57eef8aae8a8b2a3c4d4917130b9bd8f08a631646e3bf4a6551bb54 + md5: 87927f3f0037c19ac74ac3f820c26bd1 + sha256: d48287594d4c4a9323deb2f505c52f53f757981d4d16b22231f8831bd22349bf category: main optional: false - name: msgpack-python - version: 1.1.0 + version: 1.0.8 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - libcxx: '>=17' + libcxx: '>=16' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.1.0-py312h6142ec9_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.0.8-py312h157fec4_0.conda hash: - md5: 0dfc3750cc6bbc463d72c0b727e60d8a - sha256: 2b8c22f8a4e0031c2d6fa81d32814c8afdaf7e7fe2e681bf2369a35ff3eab1fd + md5: b815836e3b798dff1d7a28095761658b + sha256: 88abda8e86379e085540cbe54897792b62e61b7f0b77882a7361dba01a4687f4 category: main optional: false - name: multidict @@ -9957,45 +9885,43 @@ package: category: main optional: false - name: multidict - version: 6.1.0 + version: 6.0.5 manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' + libgcc-ng: '>=12' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hb2c0f52_0.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.0.5-py312hdd3e373_0.conda hash: - md5: b0a0b49eef482750aa3abdc269894bc8 - sha256: 0e9b75858f1c2b6195b92971e163f8ea06968eed59059a10de45411a1b79c350 + md5: deaaa1a2a1837f2cfcd3b21df6b0bd87 + sha256: 103f33fab69a3b475a87ab061890a52604683f621adabb5bb3d45404cb170924 category: main optional: false - name: multidict - version: 6.1.0 + version: 6.0.5 manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/multidict-6.1.0-py312h9131086_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/multidict-6.0.5-py312h97956c7_0.conda hash: - md5: 012c6780fb6131828282b5eeeff7032c - sha256: 62191f7d86d32d07f101234b7faefcde76e41059f0aaaff9ef56617cb6a925fd + md5: 4b6f7537d79a75053c8fd79cb5bc5f13 + sha256: fe408d289a8e39d0a2a2e590d03421e1f7dd83e2936297bd3f5c43a6ee86f458 category: main optional: false - name: multidict - version: 6.1.0 + version: 6.0.5 manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312h88e9dfa_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.0.5-py312h670c8ac_0.conda hash: - md5: a52ae7450f215c59694aae591d08616d - sha256: 52ab4f744001c1935d9b7672f0bec68919206f61606222bb927d1a65fca9fc5c + md5: 5f132dbfff9d4ac73f5d4786459b22ba + sha256: d7a15bf4dda045aa0808c2f90eb53759d7d1c7a88b9a98713b182ff231bfaba0 category: main optional: false - name: nbclient @@ -10317,34 +10243,32 @@ package: platform: linux-aarch64 dependencies: libgcc-ng: '>=12' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-h0425590_0.conda hash: - md5: 91d49c85cacd92caa40cf375ef72a25d - sha256: acad4cf1f57b12ee1e42995e6fac646fa06aa026529f05eb8c07eb0a84a47a84 + md5: 38362af7bfac0efef69675acee564458 + sha256: f8002feaa9e0eb929cd123f1275d8c0b3c6ffb7fd9269b192927009df19dc89e category: main optional: false - name: ncurses version: '6.5' manager: conda platform: osx-64 - dependencies: - __osx: '>=10.13' - url: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h5846eda_0.conda hash: - md5: e102bbf8a6ceeaf429deab8032fc8977 - sha256: b0b3180039ef19502525a2abd5833c00f9624af830fd391f851934d57bffb9af + md5: 02a888433d165c99bf09784a7b14d900 + sha256: 6ecc73db0e49143092c0934355ac41583a5d5a48c6914c5f6ca48e562d3a4b79 category: main optional: false - name: ncurses version: '6.5' manager: conda platform: osx-arm64 - dependencies: - __osx: '>=11.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-hb89a1cb_0.conda hash: - md5: cb2b0ea909b97b3d70cd3921d1445e1a - sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc + md5: b13ad5724ac9ae98b6b4fd87e4500ba4 + sha256: 87d7cf716d9d930dab682cb57b3b8d3a61940b47d6703f3529a155c938a6990a category: main optional: false - name: nest-asyncio @@ -10413,7 +10337,7 @@ package: category: main optional: false - name: notebook - version: 7.2.2 + version: 7.2.1 manager: conda platform: linux-aarch64 dependencies: @@ -10423,14 +10347,14 @@ package: notebook-shim: '>=0.2,<0.3' jupyterlab_server: '>=2.27.1,<3' jupyterlab: '>=4.2.0,<4.3' - url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.2.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.2.1-pyhd8ed1ab_0.conda hash: - md5: c4d5a58f43ce9ffa430e6ecad6c30a42 - sha256: 613242d5151a4d70438bb2d65041c509e4376b7e18c06c3795c52a18176e41dc + md5: 08fa71a038c2cac2e636a5a456df15d5 + sha256: 6b23256e63225ff15b0d5e91d49111936df05748bb31afa321b29556087f85f4 category: main optional: false - name: notebook - version: 7.2.2 + version: 7.2.1 manager: conda platform: osx-64 dependencies: @@ -10440,14 +10364,14 @@ package: notebook-shim: '>=0.2,<0.3' jupyterlab_server: '>=2.27.1,<3' jupyterlab: '>=4.2.0,<4.3' - url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.2.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.2.1-pyhd8ed1ab_0.conda hash: - md5: c4d5a58f43ce9ffa430e6ecad6c30a42 - sha256: 613242d5151a4d70438bb2d65041c509e4376b7e18c06c3795c52a18176e41dc + md5: 08fa71a038c2cac2e636a5a456df15d5 + sha256: 6b23256e63225ff15b0d5e91d49111936df05748bb31afa321b29556087f85f4 category: main optional: false - name: notebook - version: 7.2.2 + version: 7.2.1 manager: conda platform: osx-arm64 dependencies: @@ -10457,10 +10381,10 @@ package: notebook-shim: '>=0.2,<0.3' jupyterlab_server: '>=2.27.1,<3' jupyterlab: '>=4.2.0,<4.3' - url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.2.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.2.1-pyhd8ed1ab_0.conda hash: - md5: c4d5a58f43ce9ffa430e6ecad6c30a42 - sha256: 613242d5151a4d70438bb2d65041c509e4376b7e18c06c3795c52a18176e41dc + md5: 08fa71a038c2cac2e636a5a456df15d5 + sha256: 6b23256e63225ff15b0d5e91d49111936df05748bb31afa321b29556087f85f4 category: main optional: false - name: notebook-shim @@ -10535,57 +10459,57 @@ package: category: main optional: false - name: numpy - version: 2.1.1 + version: 2.0.1 manager: conda platform: linux-aarch64 dependencies: libblas: '>=3.9.0,<4.0a0' libcblas: '>=3.9.0,<4.0a0' - libgcc: '>=13' + libgcc-ng: '>=12' liblapack: '>=3.9.0,<4.0a0' - libstdcxx: '>=13' + libstdcxx-ng: '>=12' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.1.1-py312h2eb110b_0.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.0.1-py312hd0593b1_0.conda hash: - md5: 377f25b247d066c27bba45fc80dfe2aa - sha256: f6d02120527f3d307d1544c70cda1c0d602413da1c560a56ff95cb4551ac94c6 + md5: 7d35f990473581b44a49b4846b649bfd + sha256: e40b98a3f5646a657327f2e235d7216d16482fae30f073e1024a69dbc8024f7e category: main optional: false - name: numpy - version: 2.1.1 + version: 2.0.1 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' libblas: '>=3.9.0,<4.0a0' libcblas: '>=3.9.0,<4.0a0' - libcxx: '>=17' + libcxx: '>=16' liblapack: '>=3.9.0,<4.0a0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.1-py312he4d506f_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.0.1-py312h8813227_0.conda hash: - md5: 3592cb7c367e5f64a5bc3fd1166ff4d4 - sha256: 3b0d99c992f5662fd2631f43144465ff2ae1cd46a2a68c0622064ceb2d8362b8 + md5: 7f239fbf9d9355f86529a35af0b24d29 + sha256: 3f73ed4464e3dc639c875b6cbe86e8095f88afe047bdfdc3d4b4ae120dd830e8 category: main optional: false - name: numpy - version: 2.1.1 + version: 2.0.1 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' libblas: '>=3.9.0,<4.0a0' libcblas: '>=3.9.0,<4.0a0' - libcxx: '>=17' + libcxx: '>=16' liblapack: '>=3.9.0,<4.0a0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.1-py312h801f5e3_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.0.1-py312hb544834_0.conda hash: - md5: e42439edb298e477ca6d2643156cb9c4 - sha256: 96cd8d3c9c42d4d6d32b69d4ca11a79a7c6c0a5966089bf75fb29247320b8593 + md5: c386f6ee0329c18d652e30b9722c6660 + sha256: 943ede4dc872c8f8b7d92a71b843b445f46ebf084047f5816554646d763aa50d category: main optional: false - name: oauthlib @@ -10672,7 +10596,7 @@ package: libgcc-ng: '>=12' libpng: '>=1.6.43,<1.7.0a0' libstdcxx-ng: '>=12' - libtiff: '>=4.6.0,<4.8.0a0' + libtiff: '>=4.6.0,<4.7.0a0' libzlib: '>=1.2.13,<2.0.0a0' url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda hash: @@ -10687,7 +10611,7 @@ package: dependencies: libcxx: '>=16' libpng: '>=1.6.43,<1.7.0a0' - libtiff: '>=4.6.0,<4.8.0a0' + libtiff: '>=4.6.0,<4.7.0a0' libzlib: '>=1.2.13,<2.0.0a0' url: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.2-h7310d3a_0.conda hash: @@ -10702,7 +10626,7 @@ package: dependencies: libcxx: '>=16' libpng: '>=1.6.43,<1.7.0a0' - libtiff: '>=4.6.0,<4.8.0a0' + libtiff: '>=4.6.0,<4.7.0a0' libzlib: '>=1.2.13,<2.0.0a0' url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda hash: @@ -10725,42 +10649,42 @@ package: category: main optional: false - name: openssl - version: 3.3.2 + version: 3.3.1 manager: conda platform: linux-aarch64 dependencies: ca-certificates: '' - libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.3.2-h86ecc28_0.conda + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.3.1-h68df207_2.conda hash: - md5: 9e1e477b3f8ee3789297883faffa708b - sha256: 4669d26dbf81e4d72093d8260f55d19d57204d82b1d9440be83d11d313b5990c + md5: e53f74e640d477466e04bae394b0d163 + sha256: 6c15fd3e6c1dd92b17533fe307cb758be88e85e32e1b988507708905357acb60 category: main optional: false - name: openssl - version: 3.3.2 + version: 3.3.1 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' ca-certificates: '' - url: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.2-hd23fc13_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.1-h87427d6_2.conda hash: - md5: 2ff47134c8e292868a4609519b1ea3b6 - sha256: 2b75d4b56e45992adf172b158143742daeb316c35274b36f385ccb6644e93268 + md5: 3f3dbeedbee31e257866407d9dea1ff5 + sha256: 3cb0c05fbfd8cdb9b767396fc0e0af2d78eb4d68592855481254104330d4a4eb category: main optional: false - name: openssl - version: 3.3.2 + version: 3.3.1 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' ca-certificates: '' - url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.2-h8359307_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_2.conda hash: - md5: 1773ebccdc13ec603356e8ff1db9e958 - sha256: 940fa01c4dc6152158fe8943e05e55a1544cab639df0994e3b35937839e4f4d1 + md5: 9b551a504c1cc8f8b7b22c01814da8ba + sha256: dd7d988636f74473ebdfe15e05c5aabdb53a1d2a846c839d62289b0c37f81548 category: main optional: false - name: orc @@ -10784,60 +10708,60 @@ package: category: main optional: false - name: orc - version: 2.0.2 + version: 2.0.1 manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - libprotobuf: '>=5.27.5,<5.27.6.0a0' - libstdcxx: '>=13' - libzlib: '>=1.3.1,<2.0a0' + libgcc-ng: '>=12' + libprotobuf: '>=4.25.3,<4.25.4.0a0' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<2.0.0a0' lz4-c: '>=1.9.3,<1.10.0a0' - snappy: '>=1.2.1,<1.3.0a0' + snappy: '>=1.2.0,<1.3.0a0' tzdata: '' zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.2-h4ebe456_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.1-hd7aaf90_1.conda hash: - md5: cad27523be181287c5bd9d3ec56e3e5a - sha256: 9dda517e17e89c7189f05a09b4966515812c7cecd179b3859dc2ac738649e9ad + md5: 147e06eb42345a684d9357b26dfe5326 + sha256: 21299f9c47cfc9ff66f78bc94873fa151b82550f5afc3612f1e90b2b28f42017 category: main optional: false - name: orc - version: 2.0.2 + version: 2.0.1 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - libcxx: '>=17' - libprotobuf: '>=5.27.5,<5.27.6.0a0' - libzlib: '>=1.3.1,<2.0a0' + libcxx: '>=16' + libprotobuf: '>=4.25.3,<4.25.4.0a0' + libzlib: '>=1.2.13,<2.0.0a0' lz4-c: '>=1.9.3,<1.10.0a0' - snappy: '>=1.2.1,<1.3.0a0' + snappy: '>=1.2.0,<1.3.0a0' tzdata: '' zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/orc-2.0.2-h52ea4d3_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/orc-2.0.1-hf43e91b_1.conda hash: - md5: c217341f1416bab5d027e776981dccf4 - sha256: 9004a65831743a3a52cc74312d454fb52d8a37141188f3a96f29d33e58215047 + md5: 15d11d156ad646e69176df6af6ef0826 + sha256: 718010a056ef084a12bfd6b4d7908c8817a0093ecc395c270857134e002d5857 category: main optional: false - name: orc - version: 2.0.2 + version: 2.0.1 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - libcxx: '>=17' - libprotobuf: '>=5.27.5,<5.27.6.0a0' - libzlib: '>=1.3.1,<2.0a0' + libcxx: '>=16' + libprotobuf: '>=4.25.3,<4.25.4.0a0' + libzlib: '>=1.2.13,<2.0.0a0' lz4-c: '>=1.9.3,<1.10.0a0' - snappy: '>=1.2.1,<1.3.0a0' + snappy: '>=1.2.0,<1.3.0a0' tzdata: '' zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.2-h4a9587e_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.1-h47ade37_1.conda hash: - md5: 47749df556fda8cc1848804bf6011645 - sha256: ee0100b8b449be287d24fffce69444232a47142ca95bbc3d0cdc38ede9d690fb + md5: cd1013678ccef9b552335004f20a2d26 + sha256: 567a9677258cdd03484e3045255bf10a9d8f1031c5030ef83f1fdc1a1ad6f401 category: main optional: false - name: overrides @@ -10953,39 +10877,39 @@ package: category: main optional: false - name: pamela - version: 1.2.0 + version: 1.1.0 manager: conda platform: linux-aarch64 dependencies: python: '>=3.5' - url: https://conda.anaconda.org/conda-forge/noarch/pamela-1.2.0-pyhff2d567_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pamela-1.1.0-pyh1a96a4e_0.conda hash: - md5: adb3a4c7f269923b7f2ccff0ef071102 - sha256: 060b28a4b003681cc0b96d8edb0b1608ede432b2331659c87a5f94dd4e61bbcc + md5: dce93ccf07159017c69c6d9cea2d5d61 + sha256: 63f90d7e8517dae2eb859a48210536bb05d119e915df0fb706d76b2a3012a430 category: main optional: false - name: pamela - version: 1.2.0 + version: 1.1.0 manager: conda platform: osx-64 dependencies: python: '>=3.5' - url: https://conda.anaconda.org/conda-forge/noarch/pamela-1.2.0-pyhff2d567_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pamela-1.1.0-pyh1a96a4e_0.conda hash: - md5: adb3a4c7f269923b7f2ccff0ef071102 - sha256: 060b28a4b003681cc0b96d8edb0b1608ede432b2331659c87a5f94dd4e61bbcc + md5: dce93ccf07159017c69c6d9cea2d5d61 + sha256: 63f90d7e8517dae2eb859a48210536bb05d119e915df0fb706d76b2a3012a430 category: main optional: false - name: pamela - version: 1.2.0 + version: 1.1.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.5' - url: https://conda.anaconda.org/conda-forge/noarch/pamela-1.2.0-pyhff2d567_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pamela-1.1.0-pyh1a96a4e_0.conda hash: - md5: adb3a4c7f269923b7f2ccff0ef071102 - sha256: 060b28a4b003681cc0b96d8edb0b1608ede432b2331659c87a5f94dd4e61bbcc + md5: dce93ccf07159017c69c6d9cea2d5d61 + sha256: 63f90d7e8517dae2eb859a48210536bb05d119e915df0fb706d76b2a3012a430 category: main optional: false - name: pandas @@ -11009,60 +10933,60 @@ package: category: main optional: false - name: pandas - version: 2.2.3 + version: 2.2.2 manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - libstdcxx: '>=13' - numpy: '>=1.22.4' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + numpy: '>=1.19,<3' python: '>=3.12,<3.13.0a0' python-dateutil: '>=2.8.1' python-tzdata: '>=2022a' python_abi: 3.12.* - pytz: '>=2020.1,<2024.2' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda + pytz: '>=2020.1' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py312h14eacfc_1.conda hash: - md5: 80b873ac4fdf36641afa0eaafff3a664 - sha256: 585e05f95d14afe3df43ded14f86800c70da26b27e27b59de95932f8888af5d3 + md5: ea4fd304d3cd65f0ddf0dd3c46e0703a + sha256: d24c1a6e362d3f1034be308406b05a446c06f8ec974178581c7a3a13fc0110aa category: main optional: false - name: pandas - version: 2.2.3 + version: 2.2.2 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - libcxx: '>=17' - numpy: '>=1.22.4' + libcxx: '>=16' + numpy: '>=1.19,<3' python: '>=3.12,<3.13.0a0' python-dateutil: '>=2.8.1' python-tzdata: '>=2022a' python_abi: 3.12.* - pytz: '>=2020.1,<2024.2' - url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda + pytz: '>=2020.1' + url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.2-py312h1171441_1.conda hash: - md5: a7f7c58bbbfcdf820edb6e544555fe8f - sha256: 86c252ce5718b55129303f7d5c9a8664d8f0b23e303579142d09fcfd701e4fbe + md5: 240737937f1f046b0e03ecc11ac4ec98 + sha256: 99ef3986a0c6a5fe31a94b298f3ef60eb7ec7aa683a9aee6682f97d003aeb423 category: main optional: false - name: pandas - version: 2.2.3 + version: 2.2.2 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - libcxx: '>=17' - numpy: '>=1.22.4' + libcxx: '>=16' + numpy: '>=1.19,<3' python: '>=3.12,<3.13.0a0' python-dateutil: '>=2.8.1' python-tzdata: '>=2022a' python_abi: 3.12.* - pytz: '>=2020.1,<2024.2' - url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + pytz: '>=2020.1' + url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda hash: - md5: c68bfa69e6086c381c74e16fd72613a8 - sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: b38af0cd7ae3616c90a2511272385941 + sha256: 664bf370d1e254f29fab3b9834ae5f692a59f7e35c64c61d9a9b9989831fd721 category: main optional: false - name: pandocfilters @@ -11114,131 +11038,131 @@ package: category: main optional: false - name: pangeo-dask - version: 2024.09.30 + version: 2024.08.07 manager: conda platform: linux-64 dependencies: - dask: 2024.9.1.* + dask: 2024.8.0.* dask-gateway: 2024.1.0.* - distributed: 2024.9.1.* - url: https://conda.anaconda.org/conda-forge/noarch/pangeo-dask-2024.09.30-hd8ed1ab_0.conda + distributed: 2024.8.0.* + url: https://conda.anaconda.org/conda-forge/noarch/pangeo-dask-2024.08.07-hd8ed1ab_0.conda hash: - md5: 72af7eda54a43ab65e5e9d336ed48b92 - sha256: 0c22cf64097762c71e54669d535d836695099159cbad782bee4499ebc69c0e0d + md5: dcf89dec3b5d48a0678bb083fbbbcf2c + sha256: ea2bf7ef6ad580e5800199e063ad5d4373199befc008394079a4cbe1f20405d6 category: main optional: false - name: pangeo-dask - version: 2024.09.30 + version: 2024.08.07 manager: conda platform: linux-aarch64 dependencies: dask-gateway: 2024.1.0.* - dask: 2024.9.1.* - distributed: 2024.9.1.* - url: https://conda.anaconda.org/conda-forge/noarch/pangeo-dask-2024.09.30-hd8ed1ab_0.conda + dask: 2024.8.0.* + distributed: 2024.8.0.* + url: https://conda.anaconda.org/conda-forge/noarch/pangeo-dask-2024.08.07-hd8ed1ab_0.conda hash: - md5: 72af7eda54a43ab65e5e9d336ed48b92 - sha256: 0c22cf64097762c71e54669d535d836695099159cbad782bee4499ebc69c0e0d + md5: dcf89dec3b5d48a0678bb083fbbbcf2c + sha256: ea2bf7ef6ad580e5800199e063ad5d4373199befc008394079a4cbe1f20405d6 category: main optional: false - name: pangeo-dask - version: 2024.09.30 + version: 2024.08.07 manager: conda platform: osx-64 dependencies: dask-gateway: 2024.1.0.* - dask: 2024.9.1.* - distributed: 2024.9.1.* - url: https://conda.anaconda.org/conda-forge/noarch/pangeo-dask-2024.09.30-hd8ed1ab_0.conda + dask: 2024.8.0.* + distributed: 2024.8.0.* + url: https://conda.anaconda.org/conda-forge/noarch/pangeo-dask-2024.08.07-hd8ed1ab_0.conda hash: - md5: 72af7eda54a43ab65e5e9d336ed48b92 - sha256: 0c22cf64097762c71e54669d535d836695099159cbad782bee4499ebc69c0e0d + md5: dcf89dec3b5d48a0678bb083fbbbcf2c + sha256: ea2bf7ef6ad580e5800199e063ad5d4373199befc008394079a4cbe1f20405d6 category: main optional: false - name: pangeo-dask - version: 2024.09.30 + version: 2024.08.07 manager: conda platform: osx-arm64 dependencies: dask-gateway: 2024.1.0.* - dask: 2024.9.1.* - distributed: 2024.9.1.* - url: https://conda.anaconda.org/conda-forge/noarch/pangeo-dask-2024.09.30-hd8ed1ab_0.conda + dask: 2024.8.0.* + distributed: 2024.8.0.* + url: https://conda.anaconda.org/conda-forge/noarch/pangeo-dask-2024.08.07-hd8ed1ab_0.conda hash: - md5: 72af7eda54a43ab65e5e9d336ed48b92 - sha256: 0c22cf64097762c71e54669d535d836695099159cbad782bee4499ebc69c0e0d + md5: dcf89dec3b5d48a0678bb083fbbbcf2c + sha256: ea2bf7ef6ad580e5800199e063ad5d4373199befc008394079a4cbe1f20405d6 category: main optional: false - name: pangeo-notebook - version: 2024.09.30 + version: 2024.08.07 manager: conda platform: linux-64 dependencies: dask-labextension: 7.0.0.* - ipywidgets: 8.1.5.* - jupyter-server-proxy: 4.4.0.* + ipywidgets: 8.1.3.* + jupyter-server-proxy: 4.3.0.* jupyterhub-singleuser: 5.1.0.* - jupyterlab: 4.2.5.* + jupyterlab: 4.2.4.* nbgitpuller: 1.2.1.* - pangeo-dask: 2024.9.30.* - url: https://conda.anaconda.org/conda-forge/noarch/pangeo-notebook-2024.09.30-hd8ed1ab_0.conda + pangeo-dask: 2024.8.7.* + url: https://conda.anaconda.org/conda-forge/noarch/pangeo-notebook-2024.08.07-hd8ed1ab_0.conda hash: - md5: 26b23f71e88b062dc67a84e4399b2faa - sha256: c6a1b8087f12ae8263995cea339acf4f33b729ef9fd5729cabc4e67f15bcceee + md5: dffed2b95398bf6e774526079be3fcfd + sha256: c49640ac8379ada580e028db8fe6b9360514f6bd17a2bde953e70076d7cfbd21 category: main optional: false - name: pangeo-notebook - version: 2024.09.30 + version: 2024.08.07 manager: conda platform: linux-aarch64 dependencies: dask-labextension: 7.0.0.* nbgitpuller: 1.2.1.* + ipywidgets: 8.1.3.* + jupyter-server-proxy: 4.3.0.* + jupyterlab: 4.2.4.* jupyterhub-singleuser: 5.1.0.* - ipywidgets: 8.1.5.* - jupyter-server-proxy: 4.4.0.* - jupyterlab: 4.2.5.* - pangeo-dask: 2024.9.30.* - url: https://conda.anaconda.org/conda-forge/noarch/pangeo-notebook-2024.09.30-hd8ed1ab_0.conda + pangeo-dask: 2024.8.7.* + url: https://conda.anaconda.org/conda-forge/noarch/pangeo-notebook-2024.08.07-hd8ed1ab_0.conda hash: - md5: 26b23f71e88b062dc67a84e4399b2faa - sha256: c6a1b8087f12ae8263995cea339acf4f33b729ef9fd5729cabc4e67f15bcceee + md5: dffed2b95398bf6e774526079be3fcfd + sha256: c49640ac8379ada580e028db8fe6b9360514f6bd17a2bde953e70076d7cfbd21 category: main optional: false - name: pangeo-notebook - version: 2024.09.30 + version: 2024.08.07 manager: conda platform: osx-64 dependencies: dask-labextension: 7.0.0.* nbgitpuller: 1.2.1.* + ipywidgets: 8.1.3.* + jupyter-server-proxy: 4.3.0.* + jupyterlab: 4.2.4.* jupyterhub-singleuser: 5.1.0.* - ipywidgets: 8.1.5.* - jupyter-server-proxy: 4.4.0.* - jupyterlab: 4.2.5.* - pangeo-dask: 2024.9.30.* - url: https://conda.anaconda.org/conda-forge/noarch/pangeo-notebook-2024.09.30-hd8ed1ab_0.conda + pangeo-dask: 2024.8.7.* + url: https://conda.anaconda.org/conda-forge/noarch/pangeo-notebook-2024.08.07-hd8ed1ab_0.conda hash: - md5: 26b23f71e88b062dc67a84e4399b2faa - sha256: c6a1b8087f12ae8263995cea339acf4f33b729ef9fd5729cabc4e67f15bcceee + md5: dffed2b95398bf6e774526079be3fcfd + sha256: c49640ac8379ada580e028db8fe6b9360514f6bd17a2bde953e70076d7cfbd21 category: main optional: false - name: pangeo-notebook - version: 2024.09.30 + version: 2024.08.07 manager: conda platform: osx-arm64 dependencies: dask-labextension: 7.0.0.* nbgitpuller: 1.2.1.* + ipywidgets: 8.1.3.* + jupyter-server-proxy: 4.3.0.* + jupyterlab: 4.2.4.* jupyterhub-singleuser: 5.1.0.* - ipywidgets: 8.1.5.* - jupyter-server-proxy: 4.4.0.* - jupyterlab: 4.2.5.* - pangeo-dask: 2024.9.30.* - url: https://conda.anaconda.org/conda-forge/noarch/pangeo-notebook-2024.09.30-hd8ed1ab_0.conda + pangeo-dask: 2024.8.7.* + url: https://conda.anaconda.org/conda-forge/noarch/pangeo-notebook-2024.08.07-hd8ed1ab_0.conda hash: - md5: 26b23f71e88b062dc67a84e4399b2faa - sha256: c6a1b8087f12ae8263995cea339acf4f33b729ef9fd5729cabc4e67f15bcceee + md5: dffed2b95398bf6e774526079be3fcfd + sha256: c49640ac8379ada580e028db8fe6b9360514f6bd17a2bde953e70076d7cfbd21 category: main optional: false - name: parso @@ -11476,20 +11400,20 @@ package: dependencies: freetype: '>=2.12.1,<3.0a0' lcms2: '>=2.16,<3.0a0' - libgcc: '>=13' + libgcc-ng: '>=12' libjpeg-turbo: '>=3.0.0,<4.0a0' - libtiff: '>=4.6.0,<4.8.0a0' + libtiff: '>=4.6.0,<4.7.0a0' libwebp-base: '>=1.4.0,<2.0a0' - libxcb: '>=1.16,<2.0.0a0' + libxcb: '>=1.16,<1.17.0a0' libzlib: '>=1.3.1,<2.0a0' openjpeg: '>=2.5.2,<3.0a0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* tk: '>=8.6.13,<8.7.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-10.4.0-py312h18c71c7_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-10.4.0-py312hc0f7016_0.conda hash: - md5: 97c17230c0f6b6141a004921be48971a - sha256: f4609aad2a4857293330a7de17dd35dc001acf6aefc53fe36f0a47eeb965840a + md5: 1fbb8afc7df88dad0d7ccfed6c647179 + sha256: 522d20c70fdd0c7f117cf652363ef312e4db308d99c4d28199c45bbfeb25481e category: main optional: false - name: pillow @@ -11501,18 +11425,18 @@ package: freetype: '>=2.12.1,<3.0a0' lcms2: '>=2.16,<3.0a0' libjpeg-turbo: '>=3.0.0,<4.0a0' - libtiff: '>=4.6.0,<4.8.0a0' + libtiff: '>=4.6.0,<4.7.0a0' libwebp-base: '>=1.4.0,<2.0a0' - libxcb: '>=1.16,<2.0.0a0' + libxcb: '>=1.16,<1.17.0a0' libzlib: '>=1.3.1,<2.0a0' openjpeg: '>=2.5.2,<3.0a0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* tk: '>=8.6.13,<8.7.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/pillow-10.4.0-py312h683ea77_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/pillow-10.4.0-py312hbd70edc_0.conda hash: - md5: fb17ec3065f089dad64d9b597b1e8ce4 - sha256: 1e8d489190aa0b4682f52468efe4db46b37e50679c64879696e42578c9a283a4 + md5: 8d55e92fa6380ac8c245f253b096fefd + sha256: 38b6e8c63c8ebfd9c8552312cecd385ec7bfad6e5733f5c6b6df0db801ea5f43 category: main optional: false - name: pillow @@ -11524,18 +11448,18 @@ package: freetype: '>=2.12.1,<3.0a0' lcms2: '>=2.16,<3.0a0' libjpeg-turbo: '>=3.0.0,<4.0a0' - libtiff: '>=4.6.0,<4.8.0a0' + libtiff: '>=4.6.0,<4.7.0a0' libwebp-base: '>=1.4.0,<2.0a0' - libxcb: '>=1.16,<2.0.0a0' + libxcb: '>=1.16,<1.17.0a0' libzlib: '>=1.3.1,<2.0a0' openjpeg: '>=2.5.2,<3.0a0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* tk: '>=8.6.13,<8.7.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.4.0-py312h8609ca0_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.4.0-py312h39b1d8d_0.conda hash: - md5: b71f08e05207fa6a9155e8581c3d473e - sha256: 980139e8dfc9da20a96a6260c796eb7c77c5c5658ee4032f33ebe0ac980b2e2b + md5: 461c9897622e08c614087f9c9b9a22ce + sha256: 7c4244fa62cf630375531723631764a276eb06eeb5cc345a8e55a091aec1e52d category: main optional: false - name: pip @@ -11559,11 +11483,11 @@ package: dependencies: setuptools: '' wheel: '' - python: '>=3.8,<3.13.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyh8b19718_1.conda + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda hash: - md5: 6c78fbb8ddfd64bcb55b5cbafd2d2c43 - sha256: d820e5358bcb117fa6286e55d4550c60b0332443df62121df839eab2d11c890b + md5: 6721aef6bfe5937abe70181545dd2c51 + sha256: 15b480571a7a4d896aa187648cce99f98bac3926253f028f228d2e9e1cf7c1e1 category: main optional: false - name: pip @@ -11573,11 +11497,11 @@ package: dependencies: setuptools: '' wheel: '' - python: '>=3.8,<3.13.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyh8b19718_1.conda + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda hash: - md5: 6c78fbb8ddfd64bcb55b5cbafd2d2c43 - sha256: d820e5358bcb117fa6286e55d4550c60b0332443df62121df839eab2d11c890b + md5: 6721aef6bfe5937abe70181545dd2c51 + sha256: 15b480571a7a4d896aa187648cce99f98bac3926253f028f228d2e9e1cf7c1e1 category: main optional: false - name: pip @@ -11587,11 +11511,11 @@ package: dependencies: setuptools: '' wheel: '' - python: '>=3.8,<3.13.0a0' - url: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyh8b19718_1.conda + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda hash: - md5: 6c78fbb8ddfd64bcb55b5cbafd2d2c43 - sha256: d820e5358bcb117fa6286e55d4550c60b0332443df62121df839eab2d11c890b + md5: 6721aef6bfe5937abe70181545dd2c51 + sha256: 15b480571a7a4d896aa187648cce99f98bac3926253f028f228d2e9e1cf7c1e1 category: main optional: false - name: pkgutil-resolve-name @@ -11655,39 +11579,39 @@ package: category: main optional: false - name: platformdirs - version: 4.3.6 + version: 4.2.2 manager: conda platform: linux-aarch64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.2-pyhd8ed1ab_0.conda hash: - md5: fd8f2b18b65bbf62e8f653100690c8d2 - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f + md5: 6f6cf28bf8e021933869bae3f84b8fc9 + sha256: adc59384cf0b2fc6dc7362840151e8cb076349197a38f7230278252698a88442 category: main optional: false - name: platformdirs - version: 4.3.6 + version: 4.2.2 manager: conda platform: osx-64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.2-pyhd8ed1ab_0.conda hash: - md5: fd8f2b18b65bbf62e8f653100690c8d2 - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f + md5: 6f6cf28bf8e021933869bae3f84b8fc9 + sha256: adc59384cf0b2fc6dc7362840151e8cb076349197a38f7230278252698a88442 category: main optional: false - name: platformdirs - version: 4.3.6 + version: 4.2.2 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.2-pyhd8ed1ab_0.conda hash: - md5: fd8f2b18b65bbf62e8f653100690c8d2 - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f + md5: 6f6cf28bf8e021933869bae3f84b8fc9 + sha256: adc59384cf0b2fc6dc7362840151e8cb076349197a38f7230278252698a88442 category: main optional: false - name: prometheus_client @@ -11703,39 +11627,39 @@ package: category: main optional: false - name: prometheus_client - version: 0.21.0 + version: 0.20.0 manager: conda platform: linux-aarch64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda hash: - md5: 07e9550ddff45150bfc7da146268e165 - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 + md5: 9a19b94034dd3abb2b348c8b93388035 + sha256: 757cd91d01c2e0b64fadf6bc9a11f558cf7638d897dfbaf7415ddf324d5405c9 category: main optional: false - name: prometheus_client - version: 0.21.0 + version: 0.20.0 manager: conda platform: osx-64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda hash: - md5: 07e9550ddff45150bfc7da146268e165 - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 + md5: 9a19b94034dd3abb2b348c8b93388035 + sha256: 757cd91d01c2e0b64fadf6bc9a11f558cf7638d897dfbaf7415ddf324d5405c9 category: main optional: false - name: prometheus_client - version: 0.21.0 + version: 0.20.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda hash: - md5: 07e9550ddff45150bfc7da146268e165 - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 + md5: 9a19b94034dd3abb2b348c8b93388035 + sha256: 757cd91d01c2e0b64fadf6bc9a11f558cf7638d897dfbaf7415ddf324d5405c9 category: main optional: false - name: prompt-toolkit @@ -11752,42 +11676,42 @@ package: category: main optional: false - name: prompt-toolkit - version: 3.0.48 + version: 3.0.47 manager: conda platform: linux-aarch64 dependencies: wcwidth: '' python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda hash: - md5: 4c05134c48b6a74f33bbb9938e4a115e - sha256: 44e4e6108d425a666856a52d1523e5d70890256a8920bb0dcd3d55cc750f3207 + md5: 1247c861065d227781231950e14fe817 + sha256: d93ac5853e398aaa10f0dd7addd64b411f94ace1f9104d619cd250e19a5ac5b4 category: main optional: false - name: prompt-toolkit - version: 3.0.48 + version: 3.0.47 manager: conda platform: osx-64 dependencies: wcwidth: '' python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda hash: - md5: 4c05134c48b6a74f33bbb9938e4a115e - sha256: 44e4e6108d425a666856a52d1523e5d70890256a8920bb0dcd3d55cc750f3207 + md5: 1247c861065d227781231950e14fe817 + sha256: d93ac5853e398aaa10f0dd7addd64b411f94ace1f9104d619cd250e19a5ac5b4 category: main optional: false - name: prompt-toolkit - version: 3.0.48 + version: 3.0.47 manager: conda platform: osx-arm64 dependencies: wcwidth: '' python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda hash: - md5: 4c05134c48b6a74f33bbb9938e4a115e - sha256: 44e4e6108d425a666856a52d1523e5d70890256a8920bb0dcd3d55cc750f3207 + md5: 1247c861065d227781231950e14fe817 + sha256: d93ac5853e398aaa10f0dd7addd64b411f94ace1f9104d619cd250e19a5ac5b4 category: main optional: false - name: psutil @@ -11810,13 +11734,13 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' + libgcc-ng: '>=12' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.0.0-py312hb2c0f52_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.0.0-py312h396f95a_0.conda hash: - md5: c840e003dec98fb212691778ddd19928 - sha256: ca81024fa778eecada067081c5921996ed850d79684b771ae5a765bd28ec10c2 + md5: 8fab8a2830a288ba3333d3e6153bd4ca + sha256: 9deeced6d2283dec5f166f9fb8961f57c096ed5377cef5a592a463957fafc6f0 category: main optional: false - name: psutil @@ -11827,10 +11751,10 @@ package: __osx: '>=10.13' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.0.0-py312hb553811_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.0.0-py312hbd25219_0.conda hash: - md5: b2395d1f7ceb250b13b65bd13c5558a2 - sha256: ac711ad735ebfe9bc01d0d2c11ef56fe3f5a4e2499774b5e46eac44749adece7 + md5: db086d71e9be086313110a670b6d549f + sha256: 06e949079497cf8e1c9e253b77be709ec0c11816656814e1ad857ac5cbbea65b category: main optional: false - name: psutil @@ -11841,10 +11765,10 @@ package: __osx: '>=11.0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.0.0-py312h024a12e_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.0.0-py312h7e5086c_0.conda hash: - md5: 359b2df113eabdd6c50a5680bbc88512 - sha256: 1d4795e23f993cdbc99fe2694fa97a346581abf29f915a8f8f0583d3e975416f + md5: e45a140733a4805d80e282c1ede40d0b + sha256: d677457b2ce2e6ef6c2845c653e5bc39be9a59a900d95a5a7771b490f754cb5f category: main optional: false - name: pthread-stubs @@ -11865,35 +11789,33 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + libgcc-ng: '>=7.5.0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-hb9de7d4_1001.tar.bz2 hash: - md5: bb5a90c93e3bac3d5690acf76b4a6386 - sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: d0183ec6ce0b5aaa3486df25fa5f0ded + sha256: f1d7ff5e06cc515ec82010537813c796369f8e9dde46ce3f4fa1a9f70bc7db7d category: main optional: false - name: pthread-stubs version: '0.4' manager: conda platform: osx-64 - dependencies: - __osx: '>=10.13' - url: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-hc929b4f_1001.tar.bz2 hash: - md5: 8bcf980d2c6b17094961198284b8e862 - sha256: 05944ca3445f31614f8c674c560bca02ff05cb51637a96f665cb2bbe496099e5 + md5: addd19059de62181cd11ae8f4ef26084 + sha256: 6e3900bb241bcdec513d4e7180fe9a19186c1a38f0b4080ed619d26014222c53 category: main optional: false - name: pthread-stubs version: '0.4' manager: conda platform: osx-arm64 - dependencies: - __osx: '>=11.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-h27ca646_1001.tar.bz2 hash: - md5: 415816daf82e0b23a736a069a75e9da7 - sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: d3f26c6494d4105d4ecb85203d687102 + sha256: 9da9e6f5d51dff6ad2e4ee0874791437ba952e0a6249942273f0fedfd07ea826 category: main optional: false - name: ptyprocess @@ -12257,48 +12179,48 @@ package: category: main optional: false - name: pydantic - version: 2.9.2 + version: 2.8.2 manager: conda platform: linux-aarch64 dependencies: python: '>=3.7' typing-extensions: '>=4.6.1' - annotated-types: '>=0.6.0' - pydantic-core: 2.23.4 - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda + annotated-types: '>=0.4.0' + pydantic-core: 2.20.1 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.8.2-pyhd8ed1ab_0.conda hash: - md5: 1eb533bb8eb2199e3fef3e4aa147319f - sha256: 1b7b0dc9f6af4da156bf22b0263be70829364a08145c696d3670facff2f6441a + md5: 539a038a24a959662df1fcaa2cfc5c3e + sha256: 5a877153f7eaaab9724db5b64366a35e346007c9c104c1d6a6042f83b2f4f0df category: main optional: false - name: pydantic - version: 2.9.2 + version: 2.8.2 manager: conda platform: osx-64 dependencies: python: '>=3.7' typing-extensions: '>=4.6.1' - annotated-types: '>=0.6.0' - pydantic-core: 2.23.4 - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda + annotated-types: '>=0.4.0' + pydantic-core: 2.20.1 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.8.2-pyhd8ed1ab_0.conda hash: - md5: 1eb533bb8eb2199e3fef3e4aa147319f - sha256: 1b7b0dc9f6af4da156bf22b0263be70829364a08145c696d3670facff2f6441a + md5: 539a038a24a959662df1fcaa2cfc5c3e + sha256: 5a877153f7eaaab9724db5b64366a35e346007c9c104c1d6a6042f83b2f4f0df category: main optional: false - name: pydantic - version: 2.9.2 + version: 2.8.2 manager: conda platform: osx-arm64 dependencies: python: '>=3.7' typing-extensions: '>=4.6.1' - annotated-types: '>=0.6.0' - pydantic-core: 2.23.4 - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda + annotated-types: '>=0.4.0' + pydantic-core: 2.20.1 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.8.2-pyhd8ed1ab_0.conda hash: - md5: 1eb533bb8eb2199e3fef3e4aa147319f - sha256: 1b7b0dc9f6af4da156bf22b0263be70829364a08145c696d3670facff2f6441a + md5: 539a038a24a959662df1fcaa2cfc5c3e + sha256: 5a877153f7eaaab9724db5b64366a35e346007c9c104c1d6a6042f83b2f4f0df category: main optional: false - name: pydantic-core @@ -12318,22 +12240,22 @@ package: category: main optional: false - name: pydantic-core - version: 2.23.4 + version: 2.20.1 manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' + libgcc-ng: '>=12' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* typing-extensions: '>=4.6.0,!=4.7.0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py312h8cbf658_0.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.20.1-py312h3dd116e_0.conda hash: - md5: 18d60aa79641cec25c57823f1c8ba28d - sha256: fea8db180722c812c9812605ddc3d410a242f9b1ee798bc3b4a9f1e06897f3eb + md5: db340c73d8a147ae99fb521634e8b638 + sha256: 15d7b422ce912775ccc4c48a73fe011dbcb78554b4b29cad888701fe1d2f4a65 category: main optional: false - name: pydantic-core - version: 2.23.4 + version: 2.20.1 manager: conda platform: osx-64 dependencies: @@ -12341,14 +12263,14 @@ package: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* typing-extensions: '>=4.6.0,!=4.7.0' - url: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.23.4-py312h669792a_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.20.1-py312ha47ea1c_0.conda hash: - md5: 14806afd8ed78812d83e8b9ea4b549c0 - sha256: 46b17406772d7403ce454c1005e493a2723a189403dd2a70a3566ac4b1f82a4a + md5: 8e095b6acd6405ea0da845d191302faf + sha256: d82efcb45a6958af050851f76544fd35a6968fc50f613a2b24dd3467fab7a8d7 category: main optional: false - name: pydantic-core - version: 2.23.4 + version: 2.20.1 manager: conda platform: osx-arm64 dependencies: @@ -12356,10 +12278,10 @@ package: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* typing-extensions: '>=4.6.0,!=4.7.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py312he431725_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.20.1-py312h552d48e_0.conda hash: - md5: 3148052477686acc581b20a34b478eeb - sha256: d6edd3d0f9e701c8299519d412ad3dc900c7d893a134f2582203cf43585decca + md5: b0b8cd2d2e6aa1620dfea907706f94b4 + sha256: 5a6381ce4a5ecaeffe92f6c05fc4a70290140364e56c715a9de9c939c2bf46de category: main optional: false - name: pygments @@ -12468,10 +12390,10 @@ package: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* setuptools: '' - url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py312hab44e94_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py312he77c50b_0.conda hash: - md5: a2259b39321aef5c0548de366cc9b861 - sha256: 2cd47e3b011640115066d71a5266c825ab85854c1e5fff0fef2f24318f8c63e8 + md5: fb6108445d2e14c5aa1f79fa97aab8ed + sha256: d3f056d2fb9fb2838b79672b17f2b1305218c1e95fbf05f0b02ac1eca513082d category: main optional: false - name: pyobjc-core @@ -12484,10 +12406,10 @@ package: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* setuptools: '' - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hbb55c70_0.conda hash: - md5: 1533727287f098e669d75f9c54dc1601 - sha256: e3311a9b7e843e3fb2b814bf0a0a901db8d2c21d72bacf246a95867c2628ca25 + md5: ce11aaac866b943dbb644b70a820385e + sha256: 407fca7feca5dceb058a48b7272f342e4e8708eba4ac890a076d5499da3d7fe4 category: main optional: false - name: pyobjc-framework-cocoa @@ -12500,10 +12422,10 @@ package: pyobjc-core: 10.3.1.* python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py312hab44e94_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py312he77c50b_0.conda hash: - md5: 2cd451bd736cd2273b766b709c5ab7fa - sha256: 0b6a7635467fb54d094fdeca82406ca6ecdffafc69a943066affe73431d505d5 + md5: 58a1af350ed69dd0d9e43c652c9b35b6 + sha256: aa99ea58ad2f8ade894c11f5be2e9e28860efe527f0994532c84bef20eef249a category: main optional: false - name: pyobjc-framework-cocoa @@ -12516,10 +12438,49 @@ package: pyobjc-core: 10.3.1.* python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hbb55c70_0.conda + hash: + md5: ba19305f7b6e524edb92cefdd47fbbb1 + sha256: 9bd12bc17b6307dc3ca5bc3aac5f82a01bc9953bd448616b6f62577ba4e04148 + category: main + optional: false +- name: pyopenssl + version: 24.2.1 + manager: conda + platform: linux-aarch64 + dependencies: + python: '>=3.7' + cryptography: '>=41.0.5,<44' + url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.2.1-pyhd8ed1ab_2.conda + hash: + md5: 85fa2fdd26d5a38792eb57bc72463f07 + sha256: 6618aaa9780b723abfda95f3575900df99dd137d96c80421ad843a5cbcc70e6e + category: main + optional: false +- name: pyopenssl + version: 24.2.1 + manager: conda + platform: osx-64 + dependencies: + python: '>=3.7' + cryptography: '>=41.0.5,<44' + url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.2.1-pyhd8ed1ab_2.conda + hash: + md5: 85fa2fdd26d5a38792eb57bc72463f07 + sha256: 6618aaa9780b723abfda95f3575900df99dd137d96c80421ad843a5cbcc70e6e + category: main + optional: false +- name: pyopenssl + version: 24.2.1 + manager: conda + platform: osx-arm64 + dependencies: + python: '>=3.7' + cryptography: '>=41.0.5,<44' + url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.2.1-pyhd8ed1ab_2.conda hash: - md5: b1c63f8abafc9530a9259e0d6a70e984 - sha256: 799aa68d1d9abe00f3574d7763e91f86007a938ab8f5dff63ae3e1f22d0d634d + md5: 85fa2fdd26d5a38792eb57bc72463f07 + sha256: 6618aaa9780b723abfda95f3575900df99dd137d96c80421ad843a5cbcc70e6e category: main optional: false - name: pysocks @@ -12603,76 +12564,76 @@ package: category: main optional: false - name: python - version: 3.12.6 + version: 3.12.4 manager: conda platform: linux-aarch64 dependencies: bzip2: '>=1.0.8,<2.0a0' ld_impl_linux-aarch64: '>=2.36.1' - libexpat: '>=2.6.3,<3.0a0' + libexpat: '>=2.6.2,<3.0a0' libffi: '>=3.4,<4.0a0' - libgcc: '>=13' + libgcc-ng: '>=12' libnsl: '>=2.0.1,<2.1.0a0' - libsqlite: '>=3.46.1,<4.0a0' + libsqlite: '>=3.46.0,<4.0a0' libuuid: '>=2.38.1,<3.0a0' libxcrypt: '>=4.4.36' libzlib: '>=1.3.1,<2.0a0' ncurses: '>=6.5,<7.0a0' - openssl: '>=3.3.2,<4.0a0' + openssl: '>=3.3.1,<4.0a0' readline: '>=8.2,<9.0a0' tk: '>=8.6.13,<8.7.0a0' tzdata: '' xz: '>=5.2.6,<6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.6-h5d932e8_2_cpython.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.4-h829453d_0_cpython.conda hash: - md5: 2b6d1d3c60c0cd998d81ee85c682628f - sha256: 61088bbcc720ac9f127c8db827d084844535eda6b7db05f4d46a961ccf9f6a4f + md5: 48c28e5926b7c8ffe58f77991a43ca23 + sha256: 21a308f92f6988e1a8169a8d46b43fbd1a6b638d0964d015a4444d7af05f00e1 category: main optional: false - name: python - version: 3.12.6 + version: 3.12.4 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' bzip2: '>=1.0.8,<2.0a0' - libexpat: '>=2.6.3,<3.0a0' + libexpat: '>=2.6.2,<3.0a0' libffi: '>=3.4,<4.0a0' - libsqlite: '>=3.46.1,<4.0a0' + libsqlite: '>=3.46.0,<4.0a0' libzlib: '>=1.3.1,<2.0a0' ncurses: '>=6.5,<7.0a0' - openssl: '>=3.3.2,<4.0a0' + openssl: '>=3.3.1,<4.0a0' readline: '>=8.2,<9.0a0' tk: '>=8.6.13,<8.7.0a0' tzdata: '' xz: '>=5.2.6,<6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.6-h8f8b54e_2_cpython.conda + url: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.4-h37a9e06_0_cpython.conda hash: - md5: 4e9764dff2c726cf28442a36ed1b86fd - sha256: 5f8710005ce81a4ae54f87aa5f3de9b84ee01330ae2d217261122c638bbc5f3d + md5: 94e2b77992f580ac6b7a4fc9b53018b3 + sha256: 677958ee90eff229755d4e0ed40af6d835c9131e863b1539b34bbf07d7a775f3 category: main optional: false - name: python - version: 3.12.6 + version: 3.12.4 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' bzip2: '>=1.0.8,<2.0a0' - libexpat: '>=2.6.3,<3.0a0' + libexpat: '>=2.6.2,<3.0a0' libffi: '>=3.4,<4.0a0' - libsqlite: '>=3.46.1,<4.0a0' + libsqlite: '>=3.46.0,<4.0a0' libzlib: '>=1.3.1,<2.0a0' ncurses: '>=6.5,<7.0a0' - openssl: '>=3.3.2,<4.0a0' + openssl: '>=3.3.1,<4.0a0' readline: '>=8.2,<9.0a0' tk: '>=8.6.13,<8.7.0a0' tzdata: '' xz: '>=5.2.6,<6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.6-h739c21a_2_cpython.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.4-h30c5eda_0_cpython.conda hash: - md5: e63b77873ba23ce9d870aff00375c72f - sha256: f456c082fe6072de2edfedd0aec93824127c8d5e4edadecddef29c16b3fb537a + md5: e3e44e0e72aed46dcb810fa3e96784be + sha256: 107824b584eb5e43f71df8cb2741019f5c377c734f8309899aa2a6ed53b79a47 category: main optional: false - name: python-dateutil @@ -12836,39 +12797,39 @@ package: category: main optional: false - name: python-tzdata - version: '2024.2' + version: '2024.1' manager: conda platform: linux-aarch64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda hash: - md5: 986287f89929b2d629bd6ef6497dc307 - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 + md5: 98206ea9954216ee7540f0c773f2104d + sha256: 9da9a849d53705dee450b83507df1ca8ffea5f83bd21a215202221f1c492f8ad category: main optional: false - name: python-tzdata - version: '2024.2' + version: '2024.1' manager: conda platform: osx-64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda hash: - md5: 986287f89929b2d629bd6ef6497dc307 - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 + md5: 98206ea9954216ee7540f0c773f2104d + sha256: 9da9a849d53705dee450b83507df1ca8ffea5f83bd21a215202221f1c492f8ad category: main optional: false - name: python-tzdata - version: '2024.2' + version: '2024.1' manager: conda platform: osx-arm64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda hash: - md5: 986287f89929b2d629bd6ef6497dc307 - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 + md5: 98206ea9954216ee7540f0c773f2104d + sha256: 9da9a849d53705dee450b83507df1ca8ffea5f83bd21a215202221f1c492f8ad category: main optional: false - name: python_abi @@ -12887,10 +12848,10 @@ package: manager: conda platform: linux-aarch64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-4_cp312.conda hash: - md5: 62b20f305498284a07dc6c45fd0e5c87 - sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 6c09f8e580146d88f649780cebed01de + sha256: 4f4c3389b722cac9bf39183221332ab69e468351030ec5359042b50c5d975a15 category: main optional: false - name: python_abi @@ -12898,10 +12859,10 @@ package: manager: conda platform: osx-64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda + url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-4_cp312.conda hash: - md5: c34dd4920e0addf7cfcc725809f25d8e - sha256: 4da26c7508d5bc5d8621e84dc510284402239df56aab3587a7d217de9d3c806d + md5: 87201ac4314b911b74197e588cca3639 + sha256: 82c154d95c1637604671a02a89e72f1382e89a4269265a03506496bd928f6f14 category: main optional: false - name: python_abi @@ -12909,10 +12870,10 @@ package: manager: conda platform: osx-arm64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-4_cp312.conda hash: - md5: b76f9b1c862128e56ac7aa8cd2333de9 - sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: bbb3a02c78b2d8219d7213f76d644a2a + sha256: db25428e4f24f8693ffa39f3ff6dfbb8fd53bc298764b775b57edab1c697560f category: main optional: false - name: pytz @@ -12984,14 +12945,14 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' + libgcc-ng: '>=12' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* yaml: '>=0.2.5,<0.3.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312h396f95a_0.conda hash: - md5: dc5de424f7dbb9772da720dbb81317b2 - sha256: 8c515ebe1e7e85d972d72b75760af9dfac06fd11a9dba7e05c42d69aedbb303c + md5: 0d8fb5e4b02256354c754455152d0eb6 + sha256: fdfc0be973297f90777248a36913b8dd0a581fdaf8c5495174c147fce9984966 category: main optional: false - name: pyyaml @@ -13003,10 +12964,10 @@ package: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* yaml: '>=0.2.5,<0.3.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hb553811_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hbd25219_0.conda hash: - md5: 66514594817d51c78db7109a23ad322f - sha256: 455ce40588b35df654cb089d29cc3f0d3c78365924ffdfc6ee93dba80cea5f33 + md5: 3d847d381481b9bd802c2735e08f0c43 + sha256: dfc405e4c08edd587893ff0300140814838508d92e4ef1f8a1f8f35527108380 category: main optional: false - name: pyyaml @@ -13018,10 +12979,10 @@ package: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* yaml: '>=0.2.5,<0.3.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h7e5086c_0.conda hash: - md5: 1ee23620cf46cb15900f70a1300bae55 - sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 + md5: 0edf42e0544fab34322e3c30d04213df + sha256: 1248d77c97f936e04ab5a8e4d9ac4175b470de7edf4b19310a59557223da2fe4 category: main optional: false - name: pyzmq @@ -13043,54 +13004,54 @@ package: category: main optional: false - name: pyzmq - version: 26.2.0 + version: 26.1.0 manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - libsodium: '>=1.0.20,<1.0.21.0a0' - libstdcxx: '>=13' + libgcc-ng: '>=12' + libsodium: '>=1.0.18,<1.0.19.0a0' + libstdcxx-ng: '>=12' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* zeromq: '>=4.3.5,<4.4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_2.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.1.0-py312h7059f03_0.conda hash: - md5: 59d8d985187dff857b7470e53ed8d8c9 - sha256: fe9530c43a64786b81e09075ec557d3073b89cc0bfb48e1e783f02f07280e881 + md5: 35ae62c4684af64ae699a44c98751878 + sha256: 4aaea88263e5a1ff9ba63dc1ecb974f14507e896bfd8fb64a2cb2f67067b1bf8 category: main optional: false - name: pyzmq - version: 26.2.0 + version: 26.1.0 manager: conda platform: osx-64 dependencies: __osx: '>=10.13' - libcxx: '>=17' - libsodium: '>=1.0.20,<1.0.21.0a0' + libcxx: '>=16' + libsodium: '>=1.0.18,<1.0.19.0a0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* zeromq: '>=4.3.5,<4.4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py312h54d5c6a_2.conda + url: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.1.0-py312h7a17523_0.conda hash: - md5: de7dc71e825ef8745051e1439935a244 - sha256: 6c412ab7f2ff2f112f53888913a9505518789a9c6d39ba9ad57d26a26f1c1b96 + md5: 9486b416e47ee1a7a4051aad39240f02 + sha256: db689576d2239f52256eccd8b7b7ff66b4667b14b85c3cd7bcf22aa82611bd13 category: main optional: false - name: pyzmq - version: 26.2.0 + version: 26.1.0 manager: conda platform: osx-arm64 dependencies: __osx: '>=11.0' - libcxx: '>=17' - libsodium: '>=1.0.20,<1.0.21.0a0' + libcxx: '>=16' + libsodium: '>=1.0.18,<1.0.19.0a0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* zeromq: '>=4.3.5,<4.4.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hc6335d2_2.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.1.0-py312hfa13136_0.conda hash: - md5: ca61d76f24d66c2938af62e882c9a02d - sha256: 8d46c0f1af50989f308b9da68e6123bc3560f3a3a741b4e7cb8867c603b5a9f1 + md5: f8fa2f2cc93fbd47c35d3c3447cc0183 + sha256: 778f324396a1d64a95fab98025288782129d5a7fd06b9e2c0ec5cdb679732d0d category: main optional: false - name: re2 @@ -13111,10 +13072,10 @@ package: platform: linux-aarch64 dependencies: libre2-11: 2023.09.01 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2023.09.01-h2d3a13d_3.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2023.09.01-h9caee61_2.conda hash: - md5: 79695036b8d8a9c33e86b22a55972809 - sha256: 086d3f45743f9f0cea79452cdb7b9f16f32cf3957dacb9c556f5812e89b0b7fe + md5: a9667ab785e1686d53313364c695f58e + sha256: 31db9c598bfa7586ac2e3ba06681d676caa5d252b5b68f4b6173edc71f70681e category: main optional: false - name: re2 @@ -13123,10 +13084,10 @@ package: platform: osx-64 dependencies: libre2-11: 2023.09.01 - url: https://conda.anaconda.org/conda-forge/osx-64/re2-2023.09.01-h2fb0a26_3.conda + url: https://conda.anaconda.org/conda-forge/osx-64/re2-2023.09.01-hb168e87_2.conda hash: - md5: 0d9273c5e8f394d628b90ddad894b0f8 - sha256: 5b5c98ec28858165a09c6113b7dc89fd101b8e8ca2ae3376fb621f0061ad627d + md5: 266f8ca8528fc7e0fa31066c309ad864 + sha256: 5739ed2cfa62ed7f828eb4b9e6e69ff1df56cb9a9aacdc296451a3cb647034eb category: main optional: false - name: re2 @@ -13135,10 +13096,10 @@ package: platform: osx-arm64 dependencies: libre2-11: 2023.09.01 - url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.09.01-hcd0e937_3.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.09.01-h4cba328_2.conda hash: - md5: 86dab7857c5881117de1cf2fe53161c6 - sha256: 96e80b8d8929f5e558711866bac6fdc255a7ad5fabb47af9339d686321fd5728 + md5: 0342882197116478a42fa4ea35af79c1 + sha256: 0e0d44414381c39a7e6f3da442cb41c637df0dcb383a07425f19c19ccffa0118 category: main optional: false - name: readline @@ -13431,13 +13392,13 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' + libgcc-ng: '>=12' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.20.0-py312ha4e36d7_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.20.0-py312heb99873_0.conda hash: - md5: fc05369a37846a18682bc4a77580d938 - sha256: e2c1512e8d1a14aa70613c469fe0ae586c25834d3f84a586b9223b50b02aa1f7 + md5: 4543f8659d413d0a2a7f15fa5ff62bb4 + sha256: 289f3c1e42da3a9bbb9707028338b0a45dc8f121d3e56a012dca4307f852a00c category: main optional: false - name: rpds-py @@ -13448,10 +13409,10 @@ package: __osx: '>=10.13' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.20.0-py312h669792a_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.20.0-py312ha47ea1c_0.conda hash: - md5: b5c33da663aab65eec94188effd0ebee - sha256: 096a81dfd970f616cf882f75d7f953e0529af956c8a929ac0f30033dec27f92e + md5: c3ee2963d7cfd5daaec1006793c99507 + sha256: 8c6923581b1db573c21a0abbfe0a9387f1e88156dcdf04c7b3f6001ca7b2ba1e category: main optional: false - name: rpds-py @@ -13462,10 +13423,10 @@ package: __osx: '>=11.0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.20.0-py312he431725_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.20.0-py312h552d48e_0.conda hash: - md5: 50ee5ea6188046514d7ad107c6bbd4ef - sha256: 2d9a484f01c15644d2ae22d7ccc3f77697f0b0cfb35f3caa03ae36dda9e7ad9d + md5: ec4c92b38e26d4e6a5aba83a0bd8c280 + sha256: dd08fd375437d1525831e26e267106289f0a665f7e8aa1173c8128206fd524db category: main optional: false - name: s2n @@ -13483,16 +13444,16 @@ package: category: main optional: false - name: s2n - version: 1.5.3 + version: 1.4.17 manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - openssl: '>=3.3.2,<4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.3-hd08dc88_0.conda + libgcc-ng: '>=12' + openssl: '>=3.3.1,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.4.17-h52a6840_0.conda hash: - md5: 09a330a89a61cabc56f5e9788c36c295 - sha256: 7c33ff94c2386ea699627a8450a0263951240265b4bbccdda29ac6c2ae1f0e3a + md5: d43af76177a3d24cf735b92496417759 + sha256: 22019588bdd02a6a6956762c0f43be44444cf50fcc005e2758d7612ec5610f9f category: main optional: false - name: send2trash @@ -13562,39 +13523,39 @@ package: category: main optional: false - name: setuptools - version: 75.1.0 + version: 72.1.0 manager: conda platform: linux-aarch64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.1.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda hash: - md5: d5cd48392c67fb6849ba459c2c2b671f - sha256: 6725235722095c547edd24275053c615158d6163f396550840aebd6e209e4738 + md5: e06d4c26df4f958a8d38696f2c344d15 + sha256: d239e7f1b1a5617eeadda4e91183592f5a15219e97e16bc721d7b0597ee89a80 category: main optional: false - name: setuptools - version: 75.1.0 + version: 72.1.0 manager: conda platform: osx-64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.1.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda hash: - md5: d5cd48392c67fb6849ba459c2c2b671f - sha256: 6725235722095c547edd24275053c615158d6163f396550840aebd6e209e4738 + md5: e06d4c26df4f958a8d38696f2c344d15 + sha256: d239e7f1b1a5617eeadda4e91183592f5a15219e97e16bc721d7b0597ee89a80 category: main optional: false - name: setuptools - version: 75.1.0 + version: 72.1.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.1.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda hash: - md5: d5cd48392c67fb6849ba459c2c2b671f - sha256: 6725235722095c547edd24275053c615158d6163f396550840aebd6e209e4738 + md5: e06d4c26df4f958a8d38696f2c344d15 + sha256: d239e7f1b1a5617eeadda4e91183592f5a15219e97e16bc721d7b0597ee89a80 category: main optional: false - name: simpervisor @@ -13907,23 +13868,23 @@ package: category: main optional: false - name: sqlalchemy - version: 2.0.35 + version: 2.0.32 manager: conda platform: linux-aarch64 dependencies: greenlet: '!=0.4.17' - libgcc: '>=13' + libgcc-ng: '>=12' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* typing-extensions: '>=4.6.0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlalchemy-2.0.35-py312h52516f5_0.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlalchemy-2.0.32-py312h5adff4d_0.conda hash: - md5: 024cd17264402fe31290f903440a82a2 - sha256: 2f4f94a2cb5785f08f570984f1e5db002ae114a29c8c6755362e1ae9361911da + md5: 5722a5f2275bd0b6a92ec486afa1afe6 + sha256: 13bb9b1a87d9824f2ad1b7dc01a5dde60d38c2a503a6f461cbe3ad3ed807aff9 category: main optional: false - name: sqlalchemy - version: 2.0.35 + version: 2.0.32 manager: conda platform: osx-64 dependencies: @@ -13932,14 +13893,14 @@ package: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* typing-extensions: '>=4.6.0' - url: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.35-py312hb553811_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.32-py312hbd25219_0.conda hash: - md5: daf8d9f2c846c0b60ea47c1ba2156a3b - sha256: 64c7c3999bd173ea6d54246556a52494dd32430a2a2abb05798ce880e309c809 + md5: 041c8516eaddd2960f7f0730032f212a + sha256: d79f8ab2105f3a70967d75e8e43bba30cc7bac46ca0f411e25506c584c9a5368 category: main optional: false - name: sqlalchemy - version: 2.0.35 + version: 2.0.32 manager: conda platform: osx-arm64 dependencies: @@ -13948,10 +13909,10 @@ package: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* typing-extensions: '>=4.6.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.35-py312h024a12e_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.32-py312h7e5086c_0.conda hash: - md5: 50907ebfc9b8e8dc24ed6d6cf6d0da6e - sha256: a721efe882808f1f3cce6c68f82238c33f9e13386ead43df1174066dfa62c11f + md5: efdf833555d35528ab61de749b7ab429 + sha256: 6f69acb02523bf02ca00d6dbf6d688ed3c3e6b9aa7511ab6c1680fa415796eb5 category: main optional: false - name: stack_data @@ -14340,13 +14301,13 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' + libgcc-ng: '>=12' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h5adff4d_0.conda hash: - md5: 950b20707177dea3cb74f5ae9aac704d - sha256: 714e83cc01dd223ab6e3907843a7523fe745ed0841ee8ef2eae2ced0c485d0d8 + md5: 8d17acc3a7d9542b53880e50c273268d + sha256: d2d19c647ed7b72436fd0b2a26f93980456cb2ac09f8b76aa02f4053bc25fcb3 category: main optional: false - name: tornado @@ -14357,10 +14318,10 @@ package: __osx: '>=10.13' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py312hb553811_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py312hbd25219_0.conda hash: - md5: 479bb06cef210f968f20866277acd8b9 - sha256: 67711e308059fd4fd9ce2389b155ffcc52723d202b78cdfa01e7d6a3d42725b5 + md5: 5a40db69b327c71511248f8186965bd3 + sha256: efba7cd7d5c311f57fd1a658c0f8ae65f9c5f3c9c41111a689dcad45407944c8 category: main optional: false - name: tornado @@ -14371,10 +14332,10 @@ package: __osx: '>=11.0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h7e5086c_0.conda hash: - md5: 967bc97bb9e258993289546479af971f - sha256: 5eefede1d8a2f55892bc582dbcb574b1806f19bc1e3939ce56b79721b9406db7 + md5: d16255fe62cc07ece877c4d3eac29bb4 + sha256: 7c2010a0feed6aa87154ef77cfa9088b70586a587c5079c2d2ed931cb8eed75c category: main optional: false - name: traitlets @@ -14426,51 +14387,51 @@ package: category: main optional: false - name: types-python-dateutil - version: 2.9.0.20240906 + version: 2.9.0.20241003 manager: conda platform: linux-64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240906-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda hash: - md5: 07c483202a209cd23594b62b3451045e - sha256: 737fecb4b6f85a6a85f3fff6cdf5e90c5922b468e036b98f6c1559780cb79664 + md5: 3d326f8a2aa2d14d51d8c513426b5def + sha256: 8489af986daebfbcd13d3748ba55431259206e37f184ab42a57e107fecd85e02 category: main optional: false - name: types-python-dateutil - version: 2.9.0.20240906 + version: 2.9.0.20240316 manager: conda platform: linux-aarch64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240906-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240316-pyhd8ed1ab_0.conda hash: - md5: 07c483202a209cd23594b62b3451045e - sha256: 737fecb4b6f85a6a85f3fff6cdf5e90c5922b468e036b98f6c1559780cb79664 + md5: 7831efa91d57475373ee52fb92e8d137 + sha256: 6630bbc43dfb72339fadafc521db56c9d17af72bfce459af195eecb01163de20 category: main optional: false - name: types-python-dateutil - version: 2.9.0.20240906 + version: 2.9.0.20240316 manager: conda platform: osx-64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240906-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240316-pyhd8ed1ab_0.conda hash: - md5: 07c483202a209cd23594b62b3451045e - sha256: 737fecb4b6f85a6a85f3fff6cdf5e90c5922b468e036b98f6c1559780cb79664 + md5: 7831efa91d57475373ee52fb92e8d137 + sha256: 6630bbc43dfb72339fadafc521db56c9d17af72bfce459af195eecb01163de20 category: main optional: false - name: types-python-dateutil - version: 2.9.0.20240906 + version: 2.9.0.20240316 manager: conda platform: osx-arm64 dependencies: python: '>=3.6' - url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240906-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240316-pyhd8ed1ab_0.conda hash: - md5: 07c483202a209cd23594b62b3451045e - sha256: 737fecb4b6f85a6a85f3fff6cdf5e90c5922b468e036b98f6c1559780cb79664 + md5: 7831efa91d57475373ee52fb92e8d137 + sha256: 6630bbc43dfb72339fadafc521db56c9d17af72bfce459af195eecb01163de20 category: main optional: false - name: typing-extensions @@ -14633,10 +14594,10 @@ package: manager: conda platform: linux-aarch64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda hash: - md5: 8bfdead4e0fff0383ae4c9c50d0531bd - sha256: 7d21c95f61319dba9209ca17d1935e6128af4235a67ee4e57a00908a1450081e + md5: 161081fc7cec0bfda0d86d7cb595f8d8 + sha256: 7b2b69c54ec62a243eb6fba2391b5e443421608c3ae5dbff938ad33ca8db5122 category: main optional: false - name: tzdata @@ -14644,10 +14605,10 @@ package: manager: conda platform: osx-64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda hash: - md5: 8bfdead4e0fff0383ae4c9c50d0531bd - sha256: 7d21c95f61319dba9209ca17d1935e6128af4235a67ee4e57a00908a1450081e + md5: 161081fc7cec0bfda0d86d7cb595f8d8 + sha256: 7b2b69c54ec62a243eb6fba2391b5e443421608c3ae5dbff938ad33ca8db5122 category: main optional: false - name: tzdata @@ -14655,10 +14616,10 @@ package: manager: conda platform: osx-arm64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda hash: - md5: 8bfdead4e0fff0383ae4c9c50d0531bd - sha256: 7d21c95f61319dba9209ca17d1935e6128af4235a67ee4e57a00908a1450081e + md5: 161081fc7cec0bfda0d86d7cb595f8d8 + sha256: 7b2b69c54ec62a243eb6fba2391b5e443421608c3ae5dbff938ad33ca8db5122 category: main optional: false - name: uri-template @@ -14726,7 +14687,7 @@ package: category: main optional: false - name: urllib3 - version: 2.2.3 + version: 2.2.2 manager: conda platform: linux-aarch64 dependencies: @@ -14735,14 +14696,14 @@ package: pysocks: '>=1.5.6,<2.0,!=1.5.7' h2: '>=4,<5' zstandard: '>=0.18.0' - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda hash: - md5: 6b55867f385dd762ed99ea687af32a69 - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 + md5: e804c43f58255e977093a2298e442bb8 + sha256: 00c47c602c03137e7396f904eccede8cc64cc6bad63ce1fc355125df8882a748 category: main optional: false - name: urllib3 - version: 2.2.3 + version: 2.2.2 manager: conda platform: osx-64 dependencies: @@ -14751,14 +14712,14 @@ package: pysocks: '>=1.5.6,<2.0,!=1.5.7' h2: '>=4,<5' zstandard: '>=0.18.0' - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda hash: - md5: 6b55867f385dd762ed99ea687af32a69 - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 + md5: e804c43f58255e977093a2298e442bb8 + sha256: 00c47c602c03137e7396f904eccede8cc64cc6bad63ce1fc355125df8882a748 category: main optional: false - name: urllib3 - version: 2.2.3 + version: 2.2.2 manager: conda platform: osx-arm64 dependencies: @@ -14767,10 +14728,10 @@ package: pysocks: '>=1.5.6,<2.0,!=1.5.7' h2: '>=4,<5' zstandard: '>=0.18.0' - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda hash: - md5: 6b55867f385dd762ed99ea687af32a69 - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 + md5: e804c43f58255e977093a2298e442bb8 + sha256: 00c47c602c03137e7396f904eccede8cc64cc6bad63ce1fc355125df8882a748 category: main optional: false - name: wcwidth @@ -14834,39 +14795,39 @@ package: category: main optional: false - name: webcolors - version: 24.8.0 + version: 24.6.0 manager: conda platform: linux-aarch64 dependencies: python: '>=3.5' - url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.6.0-pyhd8ed1ab_0.conda hash: - md5: eb48b812eb4fbb9ff238a6651fdbbcae - sha256: ec71f97c332a7d328ae038990b8090cbfa772f82845b5d2233defd167b7cc5ac + md5: 419f2f6cf90fc7a6feee657752cd0f7b + sha256: 6377de3bc05b80f25c5fe75f180a81fc8a6aa601d4b228161f75f78862d00a0f category: main optional: false - name: webcolors - version: 24.8.0 + version: 24.6.0 manager: conda platform: osx-64 dependencies: python: '>=3.5' - url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.6.0-pyhd8ed1ab_0.conda hash: - md5: eb48b812eb4fbb9ff238a6651fdbbcae - sha256: ec71f97c332a7d328ae038990b8090cbfa772f82845b5d2233defd167b7cc5ac + md5: 419f2f6cf90fc7a6feee657752cd0f7b + sha256: 6377de3bc05b80f25c5fe75f180a81fc8a6aa601d4b228161f75f78862d00a0f category: main optional: false - name: webcolors - version: 24.8.0 + version: 24.6.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.5' - url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.6.0-pyhd8ed1ab_0.conda hash: - md5: eb48b812eb4fbb9ff238a6651fdbbcae - sha256: ec71f97c332a7d328ae038990b8090cbfa772f82845b5d2233defd167b7cc5ac + md5: 419f2f6cf90fc7a6feee657752cd0f7b + sha256: 6377de3bc05b80f25c5fe75f180a81fc8a6aa601d4b228161f75f78862d00a0f category: main optional: false - name: webencodings @@ -15026,39 +14987,39 @@ package: category: main optional: false - name: widgetsnbextension - version: 4.0.13 + version: 4.0.11 manager: conda platform: linux-aarch64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.11-pyhd8ed1ab_0.conda hash: - md5: 6372cd99502721bd7499f8d16b56268d - sha256: d155adc10f8c96f76d4468dbe37b33b4334dadf5cd4a95841aa009ca9bced5fa + md5: 95ba42a349c9d8eac28e30d0b637401f + sha256: 240582f3aff18f28b3500e76f727e1c58048bfc1a445c71b7087907a0a85a5e6 category: main optional: false - name: widgetsnbextension - version: 4.0.13 + version: 4.0.11 manager: conda platform: osx-64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.11-pyhd8ed1ab_0.conda hash: - md5: 6372cd99502721bd7499f8d16b56268d - sha256: d155adc10f8c96f76d4468dbe37b33b4334dadf5cd4a95841aa009ca9bced5fa + md5: 95ba42a349c9d8eac28e30d0b637401f + sha256: 240582f3aff18f28b3500e76f727e1c58048bfc1a445c71b7087907a0a85a5e6 category: main optional: false - name: widgetsnbextension - version: 4.0.13 + version: 4.0.11 manager: conda platform: osx-arm64 dependencies: python: '>=3.7' - url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.11-pyhd8ed1ab_0.conda hash: - md5: 6372cd99502721bd7499f8d16b56268d - sha256: d155adc10f8c96f76d4468dbe37b33b4334dadf5cd4a95841aa009ca9bced5fa + md5: 95ba42a349c9d8eac28e30d0b637401f + sha256: 240582f3aff18f28b3500e76f727e1c58048bfc1a445c71b7087907a0a85a5e6 category: main optional: false - name: xorg-libxau @@ -15079,48 +15040,46 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h31becfc_0.conda hash: - md5: c5f72a733c461aa7785518d29b997cc8 - sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 + md5: 13de34f69cb73165dbe08c1e9148bedb + sha256: c00a8909e783ba7f4ada7256f0385ae46fc21322f4090fa396c80b4481abd5f4 category: main optional: false - name: xorg-libxau version: 1.0.11 manager: conda platform: osx-64 - dependencies: - __osx: '>=10.13' - url: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.11-h00291cd_1.conda + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.11-h0dc2134_0.conda hash: - md5: c6cc91149a08402bbb313c5dc0142567 - sha256: 96177823ec38336b0f4b7e7c2413da61f8d008d800cc4a5b8ad21f9128fb7de0 + md5: 9566b4c29274125b0266d0177b5eb97b + sha256: 8a2e398c4f06f10c64e69f56bcf3ddfa30b432201446a0893505e735b346619a category: main optional: false - name: xorg-libxau version: 1.0.11 manager: conda platform: osx-arm64 - dependencies: - __osx: '>=11.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hb547adb_0.conda hash: - md5: 7e0125f8fb619620a0011dc9297e2493 - sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 + md5: ca73dc4f01ea91e44e3ed76602c5ea61 + sha256: 02c313a1cada46912e5b9bdb355cfb4534bfe22143b4ea4ecc419690e793023b category: main optional: false - name: xorg-libxdmcp - version: 1.1.3 + version: 1.1.5 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-hb9d3cd8_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda hash: - md5: 0f0d069428b003625074443455f25e0d - sha256: c0d391f19dfe3b0fc6e66686a85a07061923e4a58bbc9db69cf2440169dbb24f + md5: 8035c64cb77ed555e3f150b7b3972480 + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee category: main optional: false - name: xorg-libxdmcp @@ -15128,35 +15087,33 @@ package: manager: conda platform: linux-aarch64 dependencies: - libgcc: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.3-h57736b2_2.conda + libgcc-ng: '>=9.3.0' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.3-h3557bc0_0.tar.bz2 hash: - md5: a914b757e423e28934e5881639325e18 - sha256: 2e53b95d23ffdfe7a0a5f6f2f93ee2d47366240b586ceef87224f19717c90588 + md5: a6c9016ae1ca5c47a3603ed4cd65fedd + sha256: 2aad9a0b57796170b8fb40317598fd79cfc7ae27fa7fb68c417d815e44499d59 category: main optional: false - name: xorg-libxdmcp version: 1.1.3 manager: conda platform: osx-64 - dependencies: - __osx: '>=10.13' - url: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.3-h00291cd_2.conda + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.3-h35c211d_0.tar.bz2 hash: - md5: 649e07b156cb30f6e589b29ff25ab8c0 - sha256: 826f2212e66859168aa5616fad29322803a067a2dff183bae807c29200e82b15 + md5: 86ac76d6bf1cbb9621943eb3bd9ae36e + sha256: 485421c16f03a01b8ed09984e0b2ababdbb3527e1abf354ff7646f8329be905f category: main optional: false - name: xorg-libxdmcp version: 1.1.3 manager: conda platform: osx-arm64 - dependencies: - __osx: '>=11.0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.3-hd74edd7_2.conda + dependencies: {} + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.3-h27ca646_0.tar.bz2 hash: - md5: 6aa30139d9b6f59e7c2f336d761df4f3 - sha256: fe664b9aa7a759132b0deb951c11b6f71e4ebf64d3289be94d6f9e93ba46f65a + md5: 6738b13f7fadc18725965abdd4129c36 + sha256: d9a2fb4762779994718832f05a7d62ab2dcf6103a312235267628b5187ce88f7 category: main optional: false - name: xyzservices @@ -15172,39 +15129,39 @@ package: category: main optional: false - name: xyzservices - version: 2024.9.0 + version: 2024.6.0 manager: conda platform: linux-aarch64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2024.9.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2024.6.0-pyhd8ed1ab_0.conda hash: - md5: 156c91e778c1d4d57b709f8c5333fd06 - sha256: 2dd2825b5a246461a95a0affaf7e1d459f7cc0ae68ad2dd8aab360c2e5859488 + md5: de631703d59e40af41c56c4b4e2928ab + sha256: da2e54cb68776e62a708cb6d5f026229d8405ff4cfd8a2446f7d386f07ebc5c1 category: main optional: false - name: xyzservices - version: 2024.9.0 + version: 2024.6.0 manager: conda platform: osx-64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2024.9.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2024.6.0-pyhd8ed1ab_0.conda hash: - md5: 156c91e778c1d4d57b709f8c5333fd06 - sha256: 2dd2825b5a246461a95a0affaf7e1d459f7cc0ae68ad2dd8aab360c2e5859488 + md5: de631703d59e40af41c56c4b4e2928ab + sha256: da2e54cb68776e62a708cb6d5f026229d8405ff4cfd8a2446f7d386f07ebc5c1 category: main optional: false - name: xyzservices - version: 2024.9.0 + version: 2024.6.0 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2024.9.0-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2024.6.0-pyhd8ed1ab_0.conda hash: - md5: 156c91e778c1d4d57b709f8c5333fd06 - sha256: 2dd2825b5a246461a95a0affaf7e1d459f7cc0ae68ad2dd8aab360c2e5859488 + md5: de631703d59e40af41c56c4b4e2928ab + sha256: da2e54cb68776e62a708cb6d5f026229d8405ff4cfd8a2446f7d386f07ebc5c1 category: main optional: false - name: xz @@ -15317,51 +15274,49 @@ package: category: main optional: false - name: yarl - version: 1.13.1 + version: 1.9.4 manager: conda platform: linux-aarch64 dependencies: idna: '>=2.0' - libgcc: '>=13' + libgcc-ng: '>=12' multidict: '>=4.0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.13.1-py312hb2c0f52_0.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.9.4-py312hdd3e373_0.conda hash: - md5: 8dbe2fe8000964864353a5999c71455c - sha256: 2cb79744ce5f63b10bc2551f3f51c95145639c89771f923fa9ed78fbe683b375 + md5: 208203606648c0f052caa6ad9420c976 + sha256: 42bb63970fd8c03b892282356194166b76354cfa8c49624c14e7751fcd61febc category: main optional: false - name: yarl - version: 1.13.1 + version: 1.9.4 manager: conda platform: osx-64 dependencies: - __osx: '>=10.13' idna: '>=2.0' multidict: '>=4.0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-64/yarl-1.13.1-py312hb553811_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/yarl-1.9.4-py312h41838bb_0.conda hash: - md5: c98f4fc74c84af69e7c2efae4479c7bf - sha256: b78b57baf1cf29cf0da8c9adec917dcd93a1b9085a3df2ef632c9be4977052e7 + md5: 5d15d92a788612cf319ecfac53e0c542 + sha256: 748199e3d7725e8e50c6b3d87066de383a2bedd8248d89dd80c8c6e78f2bc8b9 category: main optional: false - name: yarl - version: 1.13.1 + version: 1.9.4 manager: conda platform: osx-arm64 dependencies: - __osx: '>=11.0' idna: '>=2.0' multidict: '>=4.0' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.13.1-py312h024a12e_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.9.4-py312he37b823_0.conda hash: - md5: 7f735d412c81c48ac9c784004d23ee64 - sha256: 3dd43c0c56f7ebce7fc1a7458b3677e8bae1ffd3e69de5f33900fad5316a48be + md5: 44ead39ed723937c4701dcb040ff8df6 + sha256: 4ed261d50453813ceff0777b439d1646999ae3f8eba86775655a78d5411c9769 category: main optional: false - name: zeromq @@ -15385,14 +15340,14 @@ package: manager: conda platform: linux-aarch64 dependencies: - krb5: '>=1.21.3,<1.22.0a0' - libgcc: '>=13' - libsodium: '>=1.0.20,<1.0.21.0a0' - libstdcxx: '>=13' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h8046b5e_5.conda + krb5: '>=1.21.2,<1.22.0a0' + libgcc-ng: '>=12' + libsodium: '>=1.0.18,<1.0.19.0a0' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h28faeed_4.conda hash: - md5: 5da048ba5b096ef4cb3d69f7ce45159b - sha256: e4984e4cec14876bd991478d2075b68b810c0461a7542021acaf4804303b5973 + md5: ae8c0108b4d6a5981bce484eeaaf1b55 + sha256: 99a48b3a52c3a028d5a8aa5b586611c282347b5b76a3c675b2af3807b9d07f0f category: main optional: false - name: zeromq @@ -15401,13 +15356,13 @@ package: platform: osx-64 dependencies: __osx: '>=10.13' - krb5: '>=1.21.3,<1.22.0a0' - libcxx: '>=17' - libsodium: '>=1.0.20,<1.0.21.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-hb33e954_5.conda + krb5: '>=1.21.2,<1.22.0a0' + libcxx: '>=16' + libsodium: '>=1.0.18,<1.0.19.0a0' + url: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-hde137ed_4.conda hash: - md5: a9735eb372d515c78f8211785406e36f - sha256: 7e63a9ec19660666095ea9332a5b226329ff4f499018e8a281d0d160cbb60ca4 + md5: e56609055da6c658aa329d42a6c6b9f2 + sha256: 871625ce993e6c61649b14659a3d1d6011fbb242b7d6a25cadbc6300b2356f32 category: main optional: false - name: zeromq @@ -15416,13 +15371,13 @@ package: platform: osx-arm64 dependencies: __osx: '>=11.0' - krb5: '>=1.21.3,<1.22.0a0' - libcxx: '>=17' - libsodium: '>=1.0.20,<1.0.21.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h64debc3_5.conda + krb5: '>=1.21.2,<1.22.0a0' + libcxx: '>=16' + libsodium: '>=1.0.18,<1.0.19.0a0' + url: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hcc0f68c_4.conda hash: - md5: c29dbe9343a0b55b027fa645644c59d9 - sha256: b4ba544a04129472651a5df3b8906ed68e7f43bf23e724fd0e368218083c920c + md5: 39fb79e7a7a880a03f82c1f2eb7f7c73 + sha256: c22520d6d66a80f17c5f2b3719ad4a6ee809b210b8ac87d6f05ab98b94b3abda category: main optional: false - name: zict @@ -15486,39 +15441,39 @@ package: category: main optional: false - name: zipp - version: 3.20.2 + version: 3.19.2 manager: conda platform: linux-aarch64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda hash: - md5: 4daaed111c05672ae669f7036ee5bba3 - sha256: 1e84fcfa41e0afdd87ff41e6fbb719c96a0e098c1f79be342293ab0bd8dea322 + md5: 49808e59df5535116f6878b2a820d6f4 + sha256: e3e9c8501f581bfdc4700b83ea283395e237ec6b9b5cbfbedb556e1da6f4fdc9 category: main optional: false - name: zipp - version: 3.20.2 + version: 3.19.2 manager: conda platform: osx-64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda hash: - md5: 4daaed111c05672ae669f7036ee5bba3 - sha256: 1e84fcfa41e0afdd87ff41e6fbb719c96a0e098c1f79be342293ab0bd8dea322 + md5: 49808e59df5535116f6878b2a820d6f4 + sha256: e3e9c8501f581bfdc4700b83ea283395e237ec6b9b5cbfbedb556e1da6f4fdc9 category: main optional: false - name: zipp - version: 3.20.2 + version: 3.19.2 manager: conda platform: osx-arm64 dependencies: python: '>=3.8' - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda hash: - md5: 4daaed111c05672ae669f7036ee5bba3 - sha256: 1e84fcfa41e0afdd87ff41e6fbb719c96a0e098c1f79be342293ab0bd8dea322 + md5: 49808e59df5535116f6878b2a820d6f4 + sha256: e3e9c8501f581bfdc4700b83ea283395e237ec6b9b5cbfbedb556e1da6f4fdc9 category: main optional: false - name: zstandard @@ -15544,14 +15499,14 @@ package: platform: linux-aarch64 dependencies: cffi: '>=1.11' - libgcc: '>=13' + libgcc-ng: '>=12' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312h9fc3309_0.conda hash: - md5: ffcb8e97e62af42075e0e5f46bb9856e - sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: 1903935398241d9772c260a4d0ee5bc3 + sha256: 65c201c2f3e120c57e2c2eae8fb30254fbe249adb2df0a3073ce4b30fd3004ca category: main optional: false - name: zstandard @@ -15564,10 +15519,10 @@ package: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h331e495_0.conda hash: - md5: bd132ba98f3fc0a6067f355f8efe4cb6 - sha256: 2685dde42478fae0780fba5d1f8a06896a676ae105f215d32c9f9e76f3c6d8fd + md5: fb62d40e45f51f7d6a7df47c9a12caf4 + sha256: c1d379d1062f23e3fbd3dd8548fc6cf61b23d6f96b11e78c4e01f4761580cb02 category: main optional: false - name: zstandard @@ -15580,10 +15535,10 @@ package: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* zstd: '>=1.5.6,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h721a963_0.conda hash: - md5: a4cde595509a7ad9c13b1a3809bcfe51 - sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: caf7f5b85615a132c0fa586b82bd59e6 + sha256: 6fc0d2f7a0a49a7c1453bb9eacd5456214b6cf000760067d72f0cce464975fa1 category: main optional: false - name: zstd @@ -15640,3 +15595,42 @@ package: sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 category: main optional: false +- name: jupyter-launcher-shortcuts + version: 4.0.3 + manager: pip + platform: linux-64 + dependencies: + jupyter-server: '*' + jupyterlab: '>=4,<5' + tornado: '*' + traitlets: '*' + url: https://files.pythonhosted.org/packages/29/49/5f76d3aef23238c2ab1995f3e7a5180d27e1c21e951a1031512aa57528d4/jupyter_launcher_shortcuts-4.0.3-py3-none-any.whl + hash: + sha256: e42b6ad862d6a44ad9eb285f477a400dc6e9c2ff19dc5e922c6a4f6e01c6df1c + category: main + optional: false +- name: nbconvert + version: 7.16.4 + manager: pip + platform: linux-64 + dependencies: + beautifulsoup4: '*' + bleach: '!=5.0.0' + defusedxml: '*' + jinja2: '>=3.0' + jupyter-core: '>=4.7' + jupyterlab-pygments: '*' + markupsafe: '>=2.0' + mistune: '>=2.0.3,<4' + nbclient: '>=0.5.0' + nbformat: '>=5.7' + packaging: '*' + pandocfilters: '>=1.4.1' + pygments: '>=2.4.1' + tinycss2: '*' + traitlets: '>=5.1' + url: https://files.pythonhosted.org/packages/b8/bb/bb5b6a515d1584aa2fd89965b11db6632e4bdc69495a52374bcc36e56cfa/nbconvert-7.16.4-py3-none-any.whl + hash: + sha256: 05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3 + category: main + optional: false diff --git a/base-notebook/environment.yml b/base-notebook/environment.yml index df42b38b..1bdb11c9 100644 --- a/base-notebook/environment.yml +++ b/base-notebook/environment.yml @@ -4,5 +4,7 @@ channels: - nodefaults dependencies: - python=3.12 - - pangeo-notebook=2024.09.30 + - pangeo-notebook=2024.08.07 - pip + - pip: + - jupyter-launcher-shortcuts \ No newline at end of file diff --git a/base-notebook/packages.txt b/base-notebook/packages.txt index f9cc6abc..06967b28 100644 --- a/base-notebook/packages.txt +++ b/base-notebook/packages.txt @@ -2,7 +2,7 @@ # Generated by parsing conda-linux-64.lock, please use that as source of truth _libgcc_mutex==0.1 _openmp_mutex==4.5 -aiohappyeyeballs==2.4.2 +aiohappyeyeballs==2.4.3 aiohttp==3.10.8 aiosignal==1.3.1 alembic==1.13.3 @@ -29,10 +29,10 @@ aws-checksums==0.1.20 aws-crt-cpp==0.28.3 aws-sdk-cpp==1.11.407 azure-core-cpp==1.13.0 -azure-identity-cpp==1.8.0 -azure-storage-blobs-cpp==12.12.0 -azure-storage-common-cpp==12.7.0 -azure-storage-files-datalake-cpp==12.11.0 +azure-identity-cpp==1.9.0 +azure-storage-blobs-cpp==12.13.0 +azure-storage-common-cpp==12.8.0 +azure-storage-files-datalake-cpp==12.12.0 babel==2.14.0 beautifulsoup4==4.12.3 bleach==6.1.0 @@ -54,15 +54,15 @@ comm==0.2.2 contourpy==1.3.0 cryptography==43.0.1 cytoolz==0.12.3 -dask==2024.9.1 -dask-core==2024.9.1 -dask-expr==1.1.15 +dask==2024.8.0 +dask-core==2024.8.0 +dask-expr==1.1.10 dask-gateway==2024.1.0 dask-labextension==7.0.0 debugpy==1.8.6 decorator==5.1.1 defusedxml==0.7.1 -distributed==2024.9.1 +distributed==2024.8.0 entrypoints==0.4 exceptiongroup==1.2.2 executing==2.1.0 @@ -76,7 +76,7 @@ greenlet==3.1.1 h11==0.14.0 h2==4.1.0 hpack==4.0.0 -httpcore==1.0.5 +httpcore==1.0.6 httpx==0.27.2 hyperframe==6.0.1 icu==75.1 @@ -85,8 +85,8 @@ importlib-metadata==8.5.0 importlib_metadata==8.5.0 importlib_resources==6.4.5 ipykernel==6.29.5 -ipython==8.27.0 -ipywidgets==8.1.5 +ipython==8.28.0 +ipywidgets==8.1.3 isoduration==20.11.0 jedi==0.19.1 jinja2==3.1.4 @@ -95,8 +95,9 @@ jsonpointer==3.0.0 jsonschema==4.23.0 jsonschema-specifications==2023.12.1 jsonschema-with-format-nongpl==4.23.0 +jupyter-launcher-shortcuts==4.0.3 jupyter-lsp==2.2.5 -jupyter-server-proxy==4.4.0 +jupyter-server-proxy==4.3.0 jupyter_client==8.6.3 jupyter_core==5.7.2 jupyter_events==0.10.0 @@ -104,7 +105,7 @@ jupyter_server==2.14.2 jupyter_server_terminals==0.5.3 jupyterhub-base==5.1.0 jupyterhub-singleuser==5.1.0 -jupyterlab==4.2.5 +jupyterlab==4.2.4 jupyterlab_pygments==0.3.0 jupyterlab_server==2.27.3 jupyterlab_widgets==3.0.13 @@ -174,6 +175,7 @@ mistune==3.0.2 msgpack-python==1.1.0 multidict==6.1.0 nbclient==0.10.0 +nbconvert==7.16.4 nbconvert-core==7.16.4 nbformat==5.10.4 nbgitpuller==1.2.1 @@ -191,8 +193,8 @@ packaging==24.1 pamela==1.2.0 pandas==2.2.3 pandocfilters==1.5.0 -pangeo-dask==2024.09.30 -pangeo-notebook==2024.09.30 +pangeo-dask==2024.08.07 +pangeo-notebook==2024.08.07 parso==0.8.4 partd==1.4.2 pexpect==4.9.0 @@ -251,7 +253,7 @@ tomli==2.0.1 toolz==0.12.1 tornado==6.4.1 traitlets==5.14.3 -types-python-dateutil==2.9.0.20240906 +types-python-dateutil==2.9.0.20241003 typing-extensions==4.12.2 typing_extensions==4.12.2 typing_utils==0.1.0 @@ -265,7 +267,7 @@ websocket-client==1.8.0 wheel==0.44.0 widgetsnbextension==4.0.13 xorg-libxau==1.0.11 -xorg-libxdmcp==1.1.3 +xorg-libxdmcp==1.1.5 xyzservices==2024.9.0 xz==5.2.6 yaml==0.2.5 diff --git a/base-notebook/resources/branding/desktop/wallpaper.png b/base-notebook/resources/branding/desktop/wallpaper.png new file mode 100644 index 0000000000000000000000000000000000000000..06f53976213f1c5f3661af046df7f08c4dfc4de3 GIT binary patch literal 15319 zcmd6OWn3Fi)NTkKti>trPH~qITuOr$FAjy`?gV!dprw@JQi?-yDJd=P(jtWr3dLOt z6ubG~`{{mozrVjEyV=>9otd*U=bSmuGf7ZA4HD235C8xm(b7~k006MynE&4i@G!^5 z`M_Mv3CCIanKI@ogXq>47jw;GuW9fM00`j%0HR_6fPa{zsBHkiUl;(`wE+NR-vIzL zULQL3~u6#0T2Iuih4d~VNwXaG|hYg03r7Oepo@}N&%Qed_S#cYWSO2q$Jq% zL7TWp%u@!mRF#c_mJad*KUf;CJgi!9FTP%akdtd}V*!hY*a#9!1VEaG%*oLiR3?pQ zv!+nyU)ZCi3lhnRQOVjA@RIMq=;o<14%Rrpj>4it)-75#iJbO$kZ0NE3hrSWuXhmTVuSixYsgyX?EZvRWD?0+xUS)!Tdd zSGJ5hCij_;!Xr_nf&BQgFcX`U&|2Ju-9xFaEh!*eZp0TRd6$ecKzX@j%E7}{4n>@M zZpR35OohRk=?Dv2klHqMZT97fu@>5f|f0)3@6Eq(jH;3KqgHf{b+%PH)SZ9z)Z#= zOQ_7Il?B#JYzh!>PddJoZF0 zBeRCW7hjDy*t`SslFQrbr-dyH0=R)1*rDvJEeMNFMCgWEbKf2JF-~&h#<;Ba7DOi5 zDj(EMBn{#vFAZFpf}md_6o6EfE8fSyLV4RBhfg`eKi^;>Yu&~LCP6BI#EPp zqb)2xTPjq^jvvTAq*Igq(PB;nmNIs<9%6Z@yd4f`c&Ei+$by@=Rq!59oJIL0WTUQ0 zh9u=+2z2FK7n>o+%m-tKr9_EACEtjINn&4O&tv;8+Z%F_61}G;C}ey#8X5Bk2h_Sg{A@_XTam@E?NP${zj=8^&R+I454)MdSg-ukH(mu59p>W zRN#K-?U$0gq+TSOt$i7o)>ZG*29cpQ`wW(^UiU(~4JlCjfIRTuZ#m7x<>tHS8|j4< z7`j9lVm%Z*HvMakR{;jHnbdoWAKPY!m?e57ReIQQ9`hY1cfE{jviOPc;BI0hd`oHx zqe(t7>a^E~385+-2TYANq#si$A8sCUv#vf!_h}n45xrksyP8!u^~n{T~a=4f3jRb zz9Kndx-gE^oRDDRsYFVR?dlI6bNsG~#{_)eLr9Gs+Tb67vPW_y)EvL`J*$HYsy~8^ z7mt#bVH%~c%fp9Py_uxuBF|%YJdh8pd+gcg`!Dq0?=eSxoL(lAQyIQ_sN~cVYvA~? zAU=5a*W1P0i};wU%%}oh=#ZHde3c$u3=JDnOQ2yWB(#i$#f`xEko!>jliw|B6)<09A{1P| zd|2-FHwaCMmZsdEc=P&3(u>ZN@98_>upDY6=qXwSd4o6xAv`vsLmrh2D<;05Zc(v) z2^PT;ry?v6gH}9ieUTgKU$`PWWxtu`Nq+3x2W2{_Y(E4wM-i0#(ReL%sm9ypTpXv| zY89@eM)W0G@!@k^N5iSAz{P18dUi;OnXQ%w5JGh9yfNz$^Si^Pdv*G)>+59ms0XI& z#YwQ4X97GwwaA=f*&P2mvJ^H-s1jU*{XXht(K{32Ey!!3Ev&Psm#jo*VGg;vBQx{Q zz;9i*yp$?wg^4)Gg5InTmaw>B+g9*-K%V`HNcku2UIbn?T{~iShP2~5r6%b~ zO}Z6)F_h32Z|x@_5HOGBt1qZ7%s#l$+OT^(`&yQe)I`R!eb?) zMO|EjyeSr*Bz*eUpXFHD;f*fc??DCFzj1fI@Ae4yOzTBTL6mkY(-pPs4#Z8SiL{*# zSEbMiu8gwdk|q5#P%(~7Lxv-7qMi$1{Y!a*H!ouoXvFcZ`P4MUvKF^mzS}#n{7IfQ zz^ND~Dg~h?x?pdqb9%w^)ds|YFZ~AraXNdUKl=^tg6DxB5iLM!$RPLCkYg|Eh?Qo* zkw;SwD&=6Lzsij&S!b`5amw^7vbkQl_vUd}_T1K$kW?TEBNrrAOiA{~-z}->ubO_z z-c04KoP~K?v0z5+%bUlxycwjF>(XQ$oJ?P{2cx_OE9p6D!U(R&tLm5teh_!(4--=c zYP}DQdT9_VB77OT1jCy0Va0)Nhm`V#?hwi;LJkAckESW;b!&bWSk5($AhAiK{ z%UxS%_-v5rgy=Gj!uVls`pe&H(g7zE#YEGVoQqXu-_q7EZMIUTr8fJX;GyCo<*TR* z5a;jYnE+oB%`+B~dBgaixc)QYb#F`gd<~h@d*1=+*a}XisoURgtdKr-N7lpYvH6iW z$}nLXH8Z)a^%&HY#q{?|`A z#B!27h@~0K@c#TA13h#v#jSB}8R8JxSNU||-8mq&?<*!tqQ7PjsHK$vc2UW)D@6&d zXDikC7f4{ltpF(XBKV|N45dw~8h!pOge5%M`m`wjc*UkViZodX%`nC9u^+LxSmr{YdE) zFZ%~KZ_l{_l+qDN=?jR=DqhoO1A86|6f%J9+pWMNFSwkCcz*N)pS6Kv(dx`NY?e7b8m~76^jb2V4MUVy;F&<1Gdp3a1*zB2>(EOC@Ec};- z;F0XaY5EFqK=izO3&QIO2MWuQtU^8+o&#;$fLG#v+41m4MM%YCy#wx09kI!Pf+Am9=$Bz9{u(QIc|&-Kxjj)d6cT!am>0OzD#;cIoiqR+8y_`MOsG; z$_HyJBKa5*_qXqps9TwMBO{?gcM7@|>F!d$R~8H?f9xr|SK59u(HmH-Uo(>I&e+Cbk9#|2E3GJK! z+>tWK0~`Jpg8@0Ik3|PKLPf`c#QTtygd=s6VG5*4gKy82Fm9h4&5pE#6LZ#i5Y)aW zD~c*WnXZ7G4%ad|S$i*&>BUYx6HUA;%#iFAl!4FfrHsCd^%1U&nBj94n$V{Zs11kKhPkm;mOr zL}-#ADOyiO1LEa8t6_$4ojsT2r@UMv=zsiPV#mTxZ*byxA6X?zR8s8bWigQ*GtX)F zC*#|b!9zJa{Rfyd>~~UE zTD#`E^fh3Tmx0xx%XBwm9(ZP6TY?c>#k#dA(|9iZnnX<_o@!q&`@soT?89~-Rhl&; zbRkkvD+9l_dE(=c5b5(P4WI(~E^isK^hW>i3tmeW-I0P6`9;E$9h6eviYxpP^Nxqr zp`rl`m1g7BR;Wy_Hulkl=n^sWm2_GM^5!v9pT2p*-T|bE3#kLyYr!>%Gvc59Ug2lX2GASULGX_nn$qqPbrM<$^ zzVJ|vzL05tIp_(?C}~G6l;IaTjzlTI`~4MPRc}mU%sMCKVjsVsE-aBZwsA{_!&08s zkQib7i11FfjDU-+T<$S1YRG{0`4UJIVS+bsoVffd;%=}GDN$*7W{g}fdovbuc+!Z} zfPQeWoKa%KPsK_1?LC_v;_Kl3v2ad6%|A@E*_VmD754IT$3qaFhiZ# z#`f^!SP3%}{80*zgX-$Dx@kB?n9Rrw5jG3>yeY$FR=TA;x74)i4}PWhX7j}!6ZPn( zuH|6EbkP<)>Gj0PMjUil>5XAunMwS_U}Td_@P%5~e2 zT7yFsI?D_jh4y&NO!1aEj>Al3%AvfeI5ICjFV-fm0F9sDc?5*riPOt@xQ;`cH8kAz zFZgU^y<|Zn%-SawoE8X+qe~u>Ch}ibu2b2~ELAn0iT7bdw)<^UK+ESL6rYHo)(_$i zurgtyZ?y93(25y3*f;(6SA3MdrT%|w>PG&>w;)wCr{#ZJrz{utw@=lm*P&*io{iH; zpLxlCa{>~Kb^bl>@~2STohKpkO=uXUtD7C|Vi6t{eL$L1AAfqdr8ycfY`OII<`obkho1k;JLwDp;3 zk&W=k@*#|GB(o(I8C_~?JWXGktxkdJ%{b|!Ix3+@oSZqEaBdR_4TJZMTQ41b4qh!Wk)a}q4-qfY0O#uO)u{(?(5J&tK+ zo|p0^rkP6^d-t|DK&dU0R58Q5&CaL#ZLveNVbmQ0xAkYX=23RHjSt8{7R1DLuvZIU z0?ReS4E!cF7LDT(I#mecnW!4nHyEGuo7dQmeEt*pvj%3X4S0VjhT69 zYo)5c7)hnd-&>4;^$gi^DMua1=yH<$K}+>Av5?Mcs6Oow@EYI1t6aS;a5WCttM3cx z-E*H?XrStcC-!_?zVkdskzS%iXKGEB;G=B2%GCb5Y4tUw1xAiMOwgV1mvq`bJSqpO zd|H9mX$2YP-;KUoUs`-ob=Mi`7UA&EZ!M(?q9nT}bKTYyU~GR<`*Stj(oUnO|9N8r z$-(q&Y<5!lovbdbERg+!3hiC=A!Je1T~l)=y3_nF7c1BI1CCB4Ibvn? z9ldh8JlR)ZlK*-=E(6aa56a|LS`nX&N*-dGfjev~t}91xe<@c)9UdzZg#@f$>?C7) z5U!tN+kKQ48%dR$AIaZiF{jr4evHZCPnjHvM(s|u=H-)Wbx0@BpS}`I4W8?*S-N>} zy;OQr_Qsg1hkrP~ktzt(PT}s2IDV}W9f5D2cElpM-&XSGMareLtH_t(PzK%< z$r+%+F4LX`Nkp6NXb&@60#+Fm*$`<&K32@)KI|?p^%rL zd?H_%67~aRYuD|rqC5F=7)hv^`yr~6ld^LxH%79+Vq4+GTKY>dkH?05TYkmQH}#Tu zQ&*y5pbf`7XkkjXD*(Am3$llYp8u6Obhaz9eeh%P@-6JO#S=4Nt>%?RsOD?6>f5x# z)~_p`KK1VYN2{tKp2;q6R@2*Np1vU}r97#lTQx`)V23_4`CK@Cx?!DxQHNB4v+q?(N4%R+fS6oa8@VKT|h8;4Z>l;OF^@)-N-%R-Jd& zzd-Z3;Qr1XS%*G4x~MF}<281bj>p zh$S8469y3>GKB&^2OJU}J=>3Mp=H}Kbi8P8Qo=mXPw>gigta*1x~d9!n-fb~W7 ztI-B5B3VICd^GaWhnMzVUG*)c6qkCJR~*@|$RQ*9Ar6O=f*V<*!vFfZ3N!!-ESEp& zki?);UqAk1Ui8+Xw~QC=afjmlM|!K(Glc)?qorO4+)ORpKa2#{upp;XQ#82QKnANE zq-Pt{BJdLX%i28(`%13K0fMeZN)dxUbZr)zGO>;ClWIi&e6gbOAS~?M?4?hJQuNsLqjVkak^OeOF_4Hh88=N8ob4LNfI~tn zqnhStiOE$)=b%POS~VB(nQtJ=;<>N^7g;GfOt`M@J5KpWaaZ`{84hJ^2%~n_xJhKb zUUo?*7VgAL^(^ug>t9BAX403efhGjr>zE5#*98-2fD zL<%VSvl@3*TQKEtWx`a%k-pBoYJ{IPRbrs%TuByM@GyYm+iFfXg`-@JTCyEs)my7X zK8+U$q4>R6jC)cW5JA$-T{u`yCL5*xUmqBr2k2__w;XZQaHXFir0jD;!vN5XnWM|V z%TR!SnH&M}8xI?aA&HBCxf=K7M~Y4KW|VtV4uX)Z zHd-@Eekj0It}btzW$;?BnPeLbx;*_lJLDJngECQnBxv4+Q9GjJotLZT()3ScWU}#w zN~hH`#?!j}nCub1KxW>z2;yg4^(wr5k!nfcvy-KL+T@?o5dNu}1ET%~i zCxlM7K9Y;~NelTjW;`S(mWvtjID!M0;KTd-Y;Bs%JhGw!$4hpp2osv(Zze3Lj5?L- zzn`I&_D|$!kO;>UQPH*n^%1+I8-&FUryhcA`6xHG23~sl?@#!du$RzJLUGgO4l!W) z%OmB<^e_4v=t_PsKYo?12bFhkWLUcUQM%1kDgU<|-PhyAmvW_bqlWNbZWUdO zi4!efB>%c*BxLRBizv);h=-t`-@{Ym+2*{q*=b2h< zPt2oalxL`ttMMZPwf)!GJBcCzmJnp<3 zW0uByLow)|zl%eDRV=l_)NGC?JTqQ82!DOA=!u(gPoRh06|VB41H1Vj6oD=OZv&(u z(~)uu;9KoGR3bIuJo=!~_B=hX)>>;-q4M-=hyzSM=e)b$^5wcd?C)CT+WsDtW<#^M znLRh0ze(5HA!-YyN0lfQ)i{I+<+?^%C)_$eEvd`Q08ExpE;)gUB1gf;INx4CUsgeZ zyG3tQ*j?{kv^iMi+kW5<#Wn3UC<;FlJN9o*bFCitTx}1QCLu&}w3S;YQRfq>d=PtH zk;ds>jDcYyvmduU!Ci?=NQJpK_|h4+WCt(!SxknhKgzJ{H^nBgMMlG@UAOY9?{yiG^>EzoC)(?s^a37w6)d=!4pIj< z2+ro(sZHKi)>Wn}*!m_$ts(IaLLA6nDOU$tTerb1hPobSxWv2#82-{mSUa z6*sMfg6#QG7D{tWs+cBIgQV<;;)s`*$G`=dNrWV&6zy;}U5_Mp4S7b~jThKNBL->D zC=hQN^T}Jq|9v|Pj>NhmUppU3-iA1B<{-KnEA@Vt9Saq_LOMs0Wv(c^!uu95_vZpM zS6sZYwUAdRra$0d;BTR$U)bB%^O8I}^1}DzFkmTUm*)ifC|ReQK%BHl z5vCMVpQ9$R6F3!w27NV?mg7UdzS(C8)lyo;SIk92BXBKMlls|Iw4aeM1=_vVs4MYY z7eXNy@XI5uW1=4%3xvh-qH>@<;;u)LBx^im@SA;Csk)G&?(bVck#mIXyzgPF>*T50 zgrC9jQCkz81lQm2XKkemyFs_a?bIzJJd1C3!N+4~bjSpKP^f|81+0mD{OHGbQHNy4 z=hH9sn$%+3ip`7O8p!;8TmgYrdaB)Q*vbpHMdyFlDA})Rdvqw`u2P%t zTxvC@ZI1YEem7hP4zfmW5dJ845~ zW}1leAE$L~rO@4w@aS*BKq{-Jg7Nlpl)5m7B-4E43qt(25Z3baN`g zAV6#dMN34vEl2j-wLNEAb3d;G(8`ovPq+QPznfXWH>3Yp5}~B!_W}ju8==>%SX&L) zKy?xwe7Kay&D=cTlwyc7@P7*Kd7o)V@5P%eLscd^L0tj%iE>WsrusqFjre-t_JQ)C z?AO9ANf3jh4{mP)(fPKdETc5(!K4?5j|f+8>lXrJz6YEOI_=D~p*x?at`8?{F#nnK z3ny6u$M5+Wt)qIGCg{A%@Gz|bg)m*%2Eh@qQUz;C2Yyoq-Bu0dQ-VElRZI_fYM}$D zt6PY`w};!v5KH4-_g``g>>a5$``i<|-Z6pb_3`G}k-Z2DUzsZJk!na1r=+gRU5=hI zqer05KQJqQ6Cstixf~s)28O3DT{KmKLCkTvJG0TPED>1lif01m#`UW1cfW=Z$dhzi z2?G!XqVHW&fQ1}Vf$90X{>Bxaj^8=k^6m3!GUBpP5G~@6EB>khkab2HTOJkLg~qLjFJSwqUzl^T4vt)R^RrUYWEBtJJ*R#=ZGw zfklczTpR1>UPi*oc^vph+7WnBC8XBQ6=B>+M9vlpFx0OdFVI{_<*d2ey|JU(%{uQ6 zy?usmD#MombWY#aD)$t;EfT8HS@ASa*p%KapHCM>$_{^+<+H&tp!Bcw-gB_=6#sbN z9lyZjBJsX{Pq@t(gZZAOzGx2MaUBbkbXBtw@GE|^E4lGvH8ysP`ZAEH$)pnwVT8>T zXt4K-FcH2p=kPL!ePv7>AF981d2o2bde{NUzw~J4S=jWLUY6`yZKoQyATcLM^=UH~ zpJZR&i(`r0EWxXKC<3%?O-RHE!_<;KYLY@kG6UIq!;6V@O1VEnrzA>%SC5aU%kZ7{ zvz?mhSKm~!h+T1HatPyQ3KzJ!1vcj`c2sJ*8qL^?#j8pAoZQma+HAE=6#TilCsVsW zpSSmABxmG#b0=46uad``o^KE0cx0E?$`He6xf&n#;Pi$P?|=tSoTfvb38K8s2)F(^ z(Auv+F36y#{%KHaE|J!N;d${=x&@5H#zZ6X9gy(RWKW9}=*t)E7V4)J0rdS~DROb5 zC=LC)u`HguVDP62YqqbdMjJs-s_2*K4Y{suUQV%ySuSZC9+Z&#y~*m8b2 zVIE5T#S=9Qik1SrtqM;x2E2Z>z=yJT0{XFso1xuw906Z>VnvH8xs7yElTw zw-Q*~IJ5sHLhKZLo}%JHOa;~J_zf9UFxVy*x!YNTT$5(HMq}0v&pZle44vr8WKsg@ zbY6C6s`6dbg}nNJ3d>NXTGA-8>#F?yg)}AWLLLA8cq4LT%gG7h-j@b%7K(-({&o3IK*NWL=*9G8rxWOG2 zjN>a1hgb5c*@L3Mf=S2#rRL+`gzp{?6@Gc@6V8w-ko{>$!a(Pw&azAY?<_Tkkx3EX zZrl*=1-W^?2PB&NoqBXkf8Nm(@zooI%xY-SHIv$j<=KJD;oDM~aO#Vb_ZgJxsLba&|MISsa)L5I1VSIpTbpYeB1yZEb^n6wst^f6YJ^x&FNxFOUU`&O*g`y8oG z!#$O&r!pV$p~B{iWL6l*&-|K;-oepp=_|RLjWqfAAEBZCj=ZjCU|$7PkK+60 z=ugULD}N68hd-E%;VV zMYSzduoHhgUnzmHjNYxa|FG+84Z$~I;{OHTR5ULJo9x%FY9tiR@C^Kq!$meq%jIFs zs?a7`ua3bN9B7039B_nj7w{M87Z?|CE3x>ZNHH-Ff*PPT?pxq!lpr{Vu(-j?*Mc+^ z|F5cV7q>7WEs+uS3Nk>vo`33tkTQnpWhkVMum?H7gS1PZyu%U)czQ=ZR~;!+T7o@8 zjv_75N0_i|2S=UmvS$shBJMsGh9&k_C4jyur?DhmbxH1`|;!hP;t2KTyVF<_#IKlV00eBc6H zAQND5$ik@AvL|_)S>0@OSRe2iL=zv9Og5@93#2YssA1Z(QG%;zUtbFtHP#W<1ZK=O z%xg$A4&kkPUq%%Zx#`0oL;NcwW56Ld|RkDMA~ayM7NAu=GGrlb4)c@GdKW zCHAd62Id1rlS|*}#|usLtQ-(?WJi!%=D5CIqMSK8p~ej@F+PbKx?7-O1oOXtF=bcu z9#xz51TBpwL25)50wXbOKwM`8?cMLE|1hhja3w&*8%$aAD&JQa1o;E}lX~?@J@Dpm zqc#uG5Jp{V@RqerkDt7T9cBgVnX0;nUIz00l`(|XvtAD8MB!ruQe5NH8r1vo*Gf)l z3jd$QGt@XwUq z5kY)X?1vD5Vu!yD1&~yC5seW@l65-vz!sC6)Iae zWIgNt1co$|@_zp|T@@<3lTzPzH!(eQ(I&vl`Fs4UH2MrVxY8abJKc?fgjnb8e6w2X ze;%Mb@|$?0YH>8wg39ZO@GRr#YQ>YhB^~`^oIY7}IFjGx@D_KPAX`9$aDiF+iBPI zam5}|bZuMZ%v(%K7Bpx0e>x(gu?VJ%0L~PCY5vH-`+Ru)0AadG4rpuEu zB9acwP=ra~xj!v3|YLL0e|WZJaTo$FJ`NQGw5tlOK8< z3Lbvx1Fjj7WUx2iKFkZD)i#*qD6Yg_y&&WnJrKPNc{X%rKGNQSQ||b{*gx!%+EYs% z%rn5LfC|I-8}VE8g>l&lk*OG>lN#1E&5!|J{7tGPS`y8GMlD!yu{yREN)6bYqz^|z z8JtTmPhI>TbJ^bgEDjnoYutLlTD@)9{=yDPYX^$u7oGIe;LM(52_9y>ZvT?;4+jl2ZPH6278Ph_PbrKT7>{-O-hmf2{6 z>?MHT<)o~YQ3;Yqe;y-0Wt+O^^FB%lTw_XH2DP9@8If;>Jo7(;b1yqa5x|tKf#)9| z&ex_~u}&hChosvsaI`sk-Vr{S;{wp@*&I zvq!46=qYLxx4#<3keRah(6c-elUwQ=|AvC!#$8^I!rkm)p<&GAQEpj^nkrXchrX!;D1RnxHyFf#2+gS^_*gDp!mKEWcZ)gcudU4nWRzU-h@v27qd0w zvGxwmhQE;Wfqh@e<}O8lF=NG|=u!+H4G~w_)75Wy2h=i*i*4=&zQ(VExT|MA5-&23 zea_Nm!pcVm9r2KNZwugI7Kh4Xg~=ZuE{r~?9u7_5WNbM#3kMH})&b3OL%Ae)?4jL1 zkH+=2Cf}Eo4D5nu#*pPBA@YgII24bUQLZftYxZK6Bbr?8rfH%(1HqH-%7>-?T8ycf z;mwA7$!z31v%y#xqpvU(s9jr81bD^ydD_J&(Nr{hF5`g2vpfW(os+hWQ>Rf&n!2X1 z(rNor^$e=$0w3e}{EE5K>+A?#Be4~Jc?4%Wk-=}#5b3LUuS>T?xUU%ky)N6JN-U+m zE)2Kk$iVu^<_vNrTKi1wTFS`Y97UP8BWwM@OpCloDT4wjsPBD=~MvrT7#(X4gHmj%|N3!?(@c zL=(o?zCcYiC*M9DwBhYx6~ps?_t#7nt9;QpCewt4No-i2de2+o6U6irHJdg4txnYZ zp!F9D$A*ne73f}O;(<#J^3hf^73b@#{WM2=+=RAmc{(c6fAUewWt=g*j~q)5XhJ>W zy69pstWDLb#!tjl#^DrKkq!mUMEVSD^CuZ}4xKb6T}Py#BU*VCr`Jvla;u>Ont-Ea zSz`a{V+s`$))x+mMA;u~Uv7A+7go2ThHiZGhE^HUP?xx-WcJo z6P?sn<}BPYWPJWG7A_6;?Nt1PEd{Vv$6DZ_XaG9HOl3Wrg5)yO)jr+7gjf?5((mLx zdvX2_hyc=I+9?tDG8ExHqJMLeGHe9;Q;Ar1+4#(?akTZrWbSAu5PoKCE|E*`2Qx|h zbr!jRH>MtVW;m=Y}xHgx{0&8^y=2 z0c~`Ostc%%bbRG7EQP#+dPb^Jh1&3?_*3QJvaA9V&mU05AzESH4G%_;#ngaL&ic|c zP6*>Br6CLX_H~1#o(jorQ#rV`IDFtCKcR7b;O?nkW2!n8Dq^*es?z;Nc4IP<)V;GM z{gyX9QApH67di0)UJONz(sp60P@iy7c{`v4TP<;ajR}!?t73Xx_4JD@qf9p0ZUSnV zFHTj;6&&>WM(`m;w1&-~@?_l#e&t#dQ?Qd=ihz?E^SsD1drcU;53nln1Jsx7t!C`` zvv)Kw_LsjcCH~?ZK;F_m70D-AA3udDPX|#0zmB>nX39n@ig21OleyD=;pl$8 z>6V#Lk-y87AtoQWpLO?KJ|PzfIH&yP340m()VQcN=y}X-VAjRJ#q0g6RNUPx+F1b4 zp#SPc(3`RGisW3lRlhoOb~7-EkX|XSiQ3(hKDptOstIC}ocyqBJ$;pw@+N2~^b@J^ z2WEmK#&0w`9nq2e$uY45Ozmgm>x4ec*gG7=Ywl`YxY`)4lCib3vm~AC)%ua)`SX-* zv%X;-^Z4Ja5jv;2Lp>4!nuXF~KTF=;Dh^J6R`Ik8O1@AvI$)S4T-G=wVh$_{(pSap z$RX@GSfX*Y9NEUlFfoin2Do>h05#Pxw&DyKAy$KnYmo6YDw;WM!N5Sk86<% z4)4!OVGmrsgN@z42|L;{7k{!b-@GEG<=*IoxeYB_)dQ~tg3}X%AeZ_f)aC^lpCOq> zY^cCq632z>+oap(fkbY*Ie2JwSNz!P&nD!{g(zAk&U&!CtuJ$x?Xe7F+biAZJ|}W7 zr~Qt|N1GGQzo1W!vQWP3`tlnrLpR>bpxfjz$(>LvX6{r;Rtng2L`REW=P27@-+uE_o?lA_+*4j%l^&aLz1Of(xB4sp!I7aFREN+^yew> zu|WAUx+~ILx@V<`a&d~&YSr!|S?vCVTk0pzv6Q$YjVG-R<-*fh@h@yqM~d;fZO3P( z#AP-jxS7LY=#LJdFFxp5WH9`NtznAEDSqgr1UnYRervAYu|Jj)>#RW)Krv=HI#?#X z;L$zJv5M&DpH6_)Z{-?W_VTDe1|mzXP3SZ~}30}9t)(93iGkH~hk5OY6$Hiq*5DEe|Fca5=$P2DgU*ww~7Y~21P zjG=*(pS)LDP>$wb}S)eoak44MiuE{Eu zkv;Rdu$irl!<4TBQ6@c{oDO-R@j2-j^71GAf~EbN_5YKW<(AZ^N}AtxI*FACPj!bmUX8xdB}pZJ+!?spvW}lh+04cv@y0V zz41z*i1;Jf%q)2>tR{vTAcnzP{-`kKNY%4P8NxHK@NyT!@(*tmVLIi{ygXh)ezv@P z6M^TN+2MSi7av5t3m0|e5VJ*dof-9ZBZHeCen);1GzFr0L&2v$N z%s5_&?D{bWD(ElXdw8$X7Ya1L=Jsl=Wr83!U18wFe)8r8FywHVK-M!N(K0jd?BdrA z-6d_a(p5)ePNAyV>r1vvk3##4bk8(7yqpr>UrGbdvA2pa8eQhd)329(sohQHn9HV- zx3L(r)r_n=WzA)-V*S~9#MshQ|FQ6~w2wrsdNi9W<%>9+VUD@?8$8)3O-em4x+YcL zP88Bb8H{{Ann(sFF%Dj0DY5%*_56a70qD7a5UQ}zlTw0}xTCM)vytx1{YAuf|L^{6@~(rHd? z%+4uJ)q)j5KO&jJKgl@+9IL*t1#w7W_}chKzu(8kj%z>#9Go${LCAO|l>hXk0v@NY zvud&Fp|S|cS^wKSbUB>wj{7^@Nn&aEI18m?#Z!6z?36+EFX$gCik#*N{MRR`CHT~G z;_YSa_P-=^-#J#SPO-M*5VZORn+1+-he!8W7_-qg-+y`$qoif3QgCY)<09Wsd7s&| zrQvz`xaB^wjho9n;4n!A7%!3gbvjt?Fkf#q*`Wc$Bx+h55^TlJd@R}lWkGG}sYjnb zL+OlbiafBc_AXLN5Y^`|&85JF%&zzF>ElYmoe2UxMcB^%m2vv4bu825qpl)3u7P zEj5~cL1^TiV8oA~+Q>e+?#h6`eq%#r4}&&HKY{xK@qNN;AVR6mP}v<{o@Y|S2QLHv z{^A>!*N}~un^08jBJNNjS0c5}{D#v!d9#Q3)4}ZHn2zD>3|Vy$n!+giDO^~EnFSx6 z{&>srVz8LlZ0VxXbAAoOx8ye;evzrzD^-FMy9Jd$eoQH)UGk;8ZPh?;v!sJQe->9x zL+k7TtD?>G_OHYFE6gTWPCqqMKL=YsM_GFxN6ZNzDl950C@dl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/base-notebook/resources/branding/desktop/xfce-perchannel-xml/xfce4-panel.xml b/base-notebook/resources/branding/desktop/xfce-perchannel-xml/xfce4-panel.xml new file mode 100755 index 00000000..1c49d206 --- /dev/null +++ b/base-notebook/resources/branding/desktop/xfce-perchannel-xml/xfce4-panel.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/base-notebook/resources/layer-cleanup.sh b/base-notebook/resources/layer-cleanup.sh new file mode 100644 index 00000000..920a5029 --- /dev/null +++ b/base-notebook/resources/layer-cleanup.sh @@ -0,0 +1,30 @@ +#!/bin/bash +# Copyright 2020 CS GROUP - France, http://www.c-s.fr +# All rights reserved + +apt-get autoclean --yes +apt-get autoremove --yes + +rm -rf /var/lib/apt/lists/* +rm -rf /etc/apt/sources.list.d/* +rm -rf /usr/local/src/* + +rm -rf /var/cache/apt/* +rm -rf /root/.cache/* +# including /root/.cache/pip +rm -rf /usr/local/share/.cache/* +# including /usr/local/share/.cache/yarn + +if [ -x "$(command -v npm)" ]; then + npm cache clean --force + rm -rf /root/.npm/* + rm -rf /root/.node-gyp/* + rm -rf /usr/local/share/jupyter/lab/staging/node_modules/* + rm -rf /opt/*/node_modules/* +fi + +rm -rf /tmp/* /var/tmp/* + +echo "Layer cleaned" + +exit 0 diff --git a/base-notebook/resources/nbproxy/install.sh b/base-notebook/resources/nbproxy/install.sh new file mode 100644 index 00000000..cf9b7743 --- /dev/null +++ b/base-notebook/resources/nbproxy/install.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +cp -r resources/nbproxy /opt/jupyter_proxy + +chmod -R +rX /opt/jupyter_proxy +wget -q https://upload.wikimedia.org/wikipedia/commons/5/5b/Xfce_logo.svg -O /opt/jupyter_proxy/jupyter_proxy/icons/xfce.svg +chmod 664 /opt/jupyter_proxy/jupyter_proxy/icons/xfce.svg +pip install --upgrade /opt/jupyter_proxy +# rm -rf /opt/jupyter_proxy diff --git a/base-notebook/resources/nbproxy/jupyter_proxy/__init__.py b/base-notebook/resources/nbproxy/jupyter_proxy/__init__.py new file mode 100644 index 00000000..3ce0dad5 --- /dev/null +++ b/base-notebook/resources/nbproxy/jupyter_proxy/__init__.py @@ -0,0 +1,161 @@ +# Copyright 2020 CS GROUP - France, http://www.c-s.fr +# All rights reserved + +""" +Return config on servers + +See https://jupyter-server-proxy.readthedocs.io/en/latest/server-process.html +for more information. +""" +import getpass +import os +import shutil +import shlex +import subprocess + + +def setup_rstudio(): + def _get_rsession_env(port): + # Detect various environment variables rsession requires to run + # Via rstudio's src/cpp/core/r_util/REnvironmentPosix.cpp + cmd = [ + "R", + "--slave", + "--vanilla", + "-e", + 'cat(paste(R.home("home"),R.home("share"),R.home("include"),R.home("doc"),getRversion(),sep=":"))', + ] + + r_output = subprocess.check_output(cmd) + ( + R_HOME, + R_SHARE_DIR, + R_INCLUDE_DIR, + R_DOC_DIR, + version, + ) = r_output.decode().split(":") + + return { + "R_DOC_DIR": R_DOC_DIR, + "R_HOME": R_HOME, + "R_INCLUDE_DIR": R_INCLUDE_DIR, + "R_SHARE_DIR": R_SHARE_DIR, + "RSTUDIO_DEFAULT_R_VERSION_HOME": R_HOME, + "RSTUDIO_DEFAULT_R_VERSION": version, + } + + def _get_rsession_cmd(port): + # Other paths rsession maybe in + other_paths = [ + # When rstudio-server deb is installed + "/usr/lib/rstudio-server/bin/rsession", + # When just rstudio deb is installed + "/usr/lib/rstudio/bin/rsession", + ] + if shutil.which("rsession"): + executable = "rsession" + else: + for op in other_paths: + if os.path.exists(op): + executable = op + break + else: + raise FileNotFoundError("Can not find rsession in PATH") + + return [ + executable, + "--standalone=1", + "--program-mode=server", + "--log-stderr=1", + "--session-timeout-minutes=0", + "--user-identity=" + getpass.getuser(), + "--www-port=" + str(port), + ] + + return { + "command": _get_rsession_cmd, + "environment": _get_rsession_env, + "launcher_entry": { + "title": "RStudio", + "icon_path": os.path.join( + os.path.dirname(os.path.abspath(__file__)), "icons", "rstudio.svg" + ), + }, + "new_browser_tab": True, + } + + +def setup_codeserver(): + # Make sure codeserver is in $PATH + def _codeserver_command(port): + full_path = shutil.which("code-server") + if not full_path: + raise FileNotFoundError("Can not find code-server in $PATH") + working_dir = os.getenv("CODE_WORKINGDIR", None) + if working_dir is None: + working_dir = os.path.expanduser("~") + if working_dir is None: + working_dir = os.getenv("JUPYTER_SERVER_ROOT", ".") + + return [ + full_path, + "--port=" + str(port), + "--auth", + "password", + "--disable-telemetry", + "--extensions-dir", + os.path.join(os.path.join(working_dir, ".vscode"), "extensions"), + working_dir, + ] + + return { + "command": _codeserver_command, + "timeout": 20, + "launcher_entry": { + "title": "VS Code IDE", + "icon_path": os.path.join( + os.path.dirname(os.path.abspath(__file__)), "icons", "vscode.svg" + ), + }, + "new_browser_tab": True, + } + + +def setup_novnc(): + def _novnc_command(port): + + vnc_command = " ".join(shlex.quote(p) for p in ([ + "vncserver", + "-rfbport", str(port), + "-verbose", + "-xstartup", "/usr/bin/dbus-launch xfce4-session", + "-geometry", "1680x1050", + "-fg" + ])) + + return [ + "websockify", "-v", + "--web", "/opt/noVNC", + "--heartbeat", "30", + str(port), + "--", + "/bin/sh", "-c", f"{vnc_command}" + ] + + novnc_token = os.getenv("NOVNC_TOKEN") + if not novnc_token: + raise TypeError("NOVNC_TOKEN not set") + + return { + "command": _novnc_command, + "timeout": 20, + "launcher_entry": { + "title": "Desktop", + "icon_path": os.path.join( + os.path.dirname(os.path.abspath(__file__)), "icons", "xfce.svg" + ), + "path_info": "desktop/vnc.html?autoconnect=true&password=" + novnc_token + }, + "mappath": {"/": "/vnc.html"}, + "new_browser_tab": True, + } diff --git a/base-notebook/resources/nbproxy/jupyter_proxy/icons/rstudio.svg b/base-notebook/resources/nbproxy/jupyter_proxy/icons/rstudio.svg new file mode 100644 index 00000000..3fb496e1 --- /dev/null +++ b/base-notebook/resources/nbproxy/jupyter_proxy/icons/rstudio.svg @@ -0,0 +1 @@ + diff --git a/base-notebook/resources/nbproxy/jupyter_proxy/icons/vscode.svg b/base-notebook/resources/nbproxy/jupyter_proxy/icons/vscode.svg new file mode 100644 index 00000000..51d76862 --- /dev/null +++ b/base-notebook/resources/nbproxy/jupyter_proxy/icons/vscode.svg @@ -0,0 +1,61 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/base-notebook/resources/nbproxy/jupyter_proxy/icons/xfce.svg b/base-notebook/resources/nbproxy/jupyter_proxy/icons/xfce.svg new file mode 100644 index 00000000..b009628b --- /dev/null +++ b/base-notebook/resources/nbproxy/jupyter_proxy/icons/xfce.svg @@ -0,0 +1,96 @@ + + + + XFCE 4 Logo + + + + image/svg+xml + + XFCE 4 Logo + + + Savvas Radevic + + + http://www.xfce.org/about/artwork + + XFCE logo +* Based on xfce_logo.svg from http://www.xfce.org/about/artwork +* Optimized colours +* Added "X" and "XFCE" text. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/base-notebook/resources/nbproxy/package.json b/base-notebook/resources/nbproxy/package.json new file mode 100644 index 00000000..6cc48c17 --- /dev/null +++ b/base-notebook/resources/nbproxy/package.json @@ -0,0 +1,7 @@ +{ + "private": true, + "dependencies": { + "typescript": "latest", + "yarn": "^1.12.3" + } +} diff --git a/base-notebook/resources/nbproxy/setup.py b/base-notebook/resources/nbproxy/setup.py new file mode 100644 index 00000000..6613b0f1 --- /dev/null +++ b/base-notebook/resources/nbproxy/setup.py @@ -0,0 +1,26 @@ +# Copyright 2020 CS GROUP - France, http://www.c-s.fr +# All rights reserved + +import setuptools + +setuptools.setup( + name="jupyter-proxy", + version="0.0.1", + url="https://github.com/jupyterhub/jupyter-server-proxy/tree/master/contrib/theia", + author="Project Jupyter Contributors", + description="projectjupyter@gmail.com", + packages=setuptools.find_packages(), + keywords=["Jupyter"], + classifiers=["Framework :: Jupyter"], + install_requires=["jupyter-server-proxy"], + entry_points={ + "jupyter_serverproxy_servers": [ + #'rstudio = jupyter_proxy:setup_rstudio', + "codeserver = jupyter_proxy:setup_codeserver", + "desktop = jupyter_proxy:setup_novnc", + ] + }, + package_data={ + "jupyter_proxy": ["icons/*"], + }, +) diff --git a/base-notebook/resources/vnc/install.sh b/base-notebook/resources/vnc/install.sh new file mode 100644 index 00000000..53b2a754 --- /dev/null +++ b/base-notebook/resources/vnc/install.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# noVNC setup +# See also: +# * https://github.com/manics/jupyter-omeroanalysis-desktop +# * https://github.com/ml-tooling/ml-workspace + +# COPY /resources/vnc /opt +mv resources/vnc/start-notebook-genvnctoken.sh /usr/local/bin/ +chmod +x /usr/local/bin/start-notebook-genvnctoken.sh +cp resources/vnc/* /opt + +# Customize Desktop +mkdir -p /opt/vre/ + + +add-apt-repository ppa:mozillateam/ppa --yes +apt-get update --quiet +DEBIAN_FRONTEND=noninteractive apt-get install --yes --quiet --no-install-recommends \ + dconf-cli \ + dbus-x11 \ + evince \ + file-roller \ + firefox-esr \ + geeqie \ + thunar-archive-plugin \ + xfce4 \ + xfce4-panel \ + xfce4-session \ + xfce4-settings \ + xorg \ + xubuntu-icon-theme + +curl -sSfL https://github.com/novnc/noVNC/archive/v1.4.0.tar.gz | tar -zxf - -C /opt +mv /opt/noVNC-1.4.0 /opt/noVNC +# Fix VNC client +chmod o+r /opt/vnc.html +chmod o+r /opt/ui.js +mv /opt/vnc.html /opt/noVNC +mv /opt/ui.js /opt/noVNC/app +wget 'https://sourceforge.net/projects/turbovnc/files/3.1/turbovnc_3.1_amd64.deb/download' -O turbovnc_3.1_amd64.deb +apt-get install -y -q ./turbovnc_3.1_amd64.deb +rm ./turbovnc_3.1_amd64.deb +ln -s /opt/TurboVNC/bin/* /usr/local/bin/ +mamba install --quiet websockify +cp resources/branding/desktop/wallpaper.png /opt/vre/wallpaper.png +cp -r resources/branding/desktop/xfce-perchannel-xml /etc/xdg/xfce4/xfconf/xfce-perchannel-xml +# Fix missing rebind.so issue +cd /opt && git clone --quiet https://github.com/novnc/websockify.git +cd /opt/websockify && make && cp rebind.so /usr/local/bin +# Remove mail and logout desktop icons +rm /usr/share/applications/xfce4-session-logout.desktop +apt purge --quiet --yes xfce4-screensaver +# Remove lite client as the full client is the one being used in the Desktop Launcher +rm /opt/noVNC/vnc_lite.html + +chmod 664 /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/* diff --git a/base-notebook/resources/vnc/start-notebook-genvnctoken.sh b/base-notebook/resources/vnc/start-notebook-genvnctoken.sh new file mode 100644 index 00000000..230b34ef --- /dev/null +++ b/base-notebook/resources/vnc/start-notebook-genvnctoken.sh @@ -0,0 +1,12 @@ +# Generate token for VNC Server. VNC Server uses password of 8 char max. +export NOVNC_TOKEN=$(echo $(cat /proc/sys/kernel/random/uuid) | cut -c 1-8) + +# Delete password of the last session +rm -f $HOME/.vnc/passwd + +# Creating the $HOME/.vnc directory if required for vncpasswd to work properly +mkdir -p $HOME/.vnc + +# Setting the token as the password for the vnc server +echo $NOVNC_TOKEN | vncpasswd -f > $HOME/.vnc/passwd +chmod 0600 $HOME/.vnc/passwd diff --git a/base-notebook/resources/vnc/ui.js b/base-notebook/resources/vnc/ui.js new file mode 100644 index 00000000..4fe979f3 --- /dev/null +++ b/base-notebook/resources/vnc/ui.js @@ -0,0 +1,1991 @@ +/* + * noVNC: HTML5 VNC client + * Copyright (C) 2019 The noVNC Authors + * Licensed under MPL 2.0 (see LICENSE.txt) + * + * See README.md for usage and integration instructions. + */ + +import * as Log from "../core/util/logging.js"; +import _, { l10n } from "./localization.js"; +import { + isTouchDevice, + isSafari, + hasScrollbarGutter, + dragThreshold, +} from "../core/util/browser.js"; +import { setCapture, getPointerEvent } from "../core/util/events.js"; +import KeyTable from "../core/input/keysym.js"; +import keysyms from "../core/input/keysymdef.js"; +import Keyboard from "../core/input/keyboard.js"; +import RFB from "../core/rfb.js"; +import * as WebUtil from "./webutil.js"; + +const PAGE_TITLE = "noVNC"; + +const UI = { + connected: false, + desktopName: "", + + statusTimeout: null, + hideKeyboardTimeout: null, + idleControlbarTimeout: null, + closeControlbarTimeout: null, + + controlbarGrabbed: false, + controlbarDrag: false, + controlbarMouseDownClientY: 0, + controlbarMouseDownOffsetY: 0, + + lastKeyboardinput: null, + defaultKeyboardinputLen: 100, + + inhibitReconnect: true, + reconnectCallback: null, + reconnectPassword: null, + + prime() { + return WebUtil.initSettings().then(() => { + if ( + document.readyState === "interactive" || + document.readyState === "complete" + ) { + return UI.start(); + } + + return new Promise((resolve, reject) => { + document.addEventListener("DOMContentLoaded", () => + UI.start().then(resolve).catch(reject) + ); + }); + }); + }, + + // Render default UI and initialize settings menu + start() { + UI.initSettings(); + + // Translate the DOM + l10n.translateDOM(); + + WebUtil.fetchJSON("./package.json") + .then((packageInfo) => { + Array.from(document.getElementsByClassName("noVNC_version")).forEach( + (el) => (el.innerText = packageInfo.version) + ); + }) + .catch((err) => { + Log.Error("Couldn't fetch package.json: " + err); + Array.from(document.getElementsByClassName("noVNC_version_wrapper")) + .concat( + Array.from( + document.getElementsByClassName("noVNC_version_separator") + ) + ) + .forEach((el) => (el.style.display = "none")); + }); + + // Adapt the interface for touch screen devices + if (isTouchDevice) { + document.documentElement.classList.add("noVNC_touch"); + // Remove the address bar + setTimeout(() => window.scrollTo(0, 1), 100); + } + + // Restore control bar position + if (WebUtil.readSetting("controlbar_pos") === "right") { + UI.toggleControlbarSide(); + } + + UI.initFullscreen(); + + // Setup event handlers + UI.addControlbarHandlers(); + UI.addTouchSpecificHandlers(); + UI.addExtraKeysHandlers(); + UI.addMachineHandlers(); + UI.addConnectionControlHandlers(); + UI.addClipboardHandlers(); + UI.addSettingsHandlers(); + document + .getElementById("noVNC_status") + .addEventListener("click", UI.hideStatus); + + // Bootstrap fallback input handler + UI.keyboardinputReset(); + + UI.openControlbar(); + + UI.updateVisualState("init"); + + document.documentElement.classList.remove("noVNC_loading"); + + let autoconnect = WebUtil.getConfigVar("autoconnect", false); + if (autoconnect === "true" || autoconnect == "1") { + autoconnect = true; + UI.connect(); + } else { + autoconnect = false; + // Show the connect panel on first load unless autoconnecting + UI.openConnectPanel(); + } + + return Promise.resolve(UI.rfb); + }, + + initFullscreen() { + // Only show the button if fullscreen is properly supported + // * Safari doesn't support alphanumerical input while in fullscreen + if ( + !isSafari() && + (document.documentElement.requestFullscreen || + document.documentElement.mozRequestFullScreen || + document.documentElement.webkitRequestFullscreen || + document.body.msRequestFullscreen) + ) { + document + .getElementById("noVNC_fullscreen_button") + .classList.remove("noVNC_hidden"); + UI.addFullscreenHandlers(); + } + }, + + initSettings() { + // Logging selection dropdown + const llevels = ["error", "warn", "info", "debug"]; + for (let i = 0; i < llevels.length; i += 1) { + UI.addOption( + document.getElementById("noVNC_setting_logging"), + llevels[i], + llevels[i] + ); + } + + // Settings with immediate effects + UI.initSetting("logging", "warn"); + UI.updateLogging(); + + // if port == 80 (or 443) then it won't be present and should be + // set manually + let port = window.location.port; + if (!port) { + if (window.location.protocol.substring(0, 5) == "https") { + port = 443; + } else if (window.location.protocol.substring(0, 4) == "http") { + port = 80; + } + } + + /* Populate the controls if defaults are provided in the URL */ + UI.initSetting("host", window.location.hostname); + UI.initSetting("port", port); + UI.initSetting("encrypt", window.location.protocol === "https:"); + UI.initSetting("view_clip", false); + //UI.initSetting("resize", "off"); + UI.initSetting("quality", 6); + UI.initSetting("compression", 2); + UI.initSetting("shared", true); + UI.initSetting("view_only", false); + UI.initSetting("show_dot", false); + //UI.initSetting("path", "websockify"); + UI.initSetting("repeaterID", ""); + //UI.initSetting("reconnect", false); + UI.initSetting("reconnect_delay", 5000); + + // ######################## CUSTOM CODE ######################## + // IMPORTANT: All the init settings from above need to be commented out + // Otherwise the changes here will not work + UI.initSetting("resize", "remote"); + UI.initSetting("reconnect", true); + // update settings cannot be used anymore to force settings + WebUtil.setSetting( + "path", + window.location.pathname + .substring(0, window.location.pathname.lastIndexOf("/")) + .replace(/^\//, "") + "/websockify" + ); + // ######################## END CUSTOM CODE ######################## + + UI.setupSettingLabels(); + }, + // Adds a link to the label elements on the corresponding input elements + setupSettingLabels() { + const labels = document.getElementsByTagName("LABEL"); + for (let i = 0; i < labels.length; i++) { + const htmlFor = labels[i].htmlFor; + if (htmlFor != "") { + const elem = document.getElementById(htmlFor); + if (elem) elem.label = labels[i]; + } else { + // If 'for' isn't set, use the first input element child + const children = labels[i].children; + for (let j = 0; j < children.length; j++) { + if (children[j].form !== undefined) { + children[j].label = labels[i]; + break; + } + } + } + } + }, + + /* ------^------- + * /INIT + * ============== + * EVENT HANDLERS + * ------v------*/ + + addControlbarHandlers() { + document + .getElementById("noVNC_control_bar") + .addEventListener("mousemove", UI.activateControlbar); + document + .getElementById("noVNC_control_bar") + .addEventListener("mouseup", UI.activateControlbar); + document + .getElementById("noVNC_control_bar") + .addEventListener("mousedown", UI.activateControlbar); + document + .getElementById("noVNC_control_bar") + .addEventListener("keydown", UI.activateControlbar); + + document + .getElementById("noVNC_control_bar") + .addEventListener("mousedown", UI.keepControlbar); + document + .getElementById("noVNC_control_bar") + .addEventListener("keydown", UI.keepControlbar); + + document + .getElementById("noVNC_view_drag_button") + .addEventListener("click", UI.toggleViewDrag); + + document + .getElementById("noVNC_control_bar_handle") + .addEventListener("mousedown", UI.controlbarHandleMouseDown); + document + .getElementById("noVNC_control_bar_handle") + .addEventListener("mouseup", UI.controlbarHandleMouseUp); + document + .getElementById("noVNC_control_bar_handle") + .addEventListener("mousemove", UI.dragControlbarHandle); + // resize events aren't available for elements + window.addEventListener("resize", UI.updateControlbarHandle); + + const exps = document.getElementsByClassName("noVNC_expander"); + for (let i = 0; i < exps.length; i++) { + exps[i].addEventListener("click", UI.toggleExpander); + } + }, + + addTouchSpecificHandlers() { + document + .getElementById("noVNC_keyboard_button") + .addEventListener("click", UI.toggleVirtualKeyboard); + + UI.touchKeyboard = new Keyboard( + document.getElementById("noVNC_keyboardinput") + ); + UI.touchKeyboard.onkeyevent = UI.keyEvent; + UI.touchKeyboard.grab(); + document + .getElementById("noVNC_keyboardinput") + .addEventListener("input", UI.keyInput); + document + .getElementById("noVNC_keyboardinput") + .addEventListener("focus", UI.onfocusVirtualKeyboard); + document + .getElementById("noVNC_keyboardinput") + .addEventListener("blur", UI.onblurVirtualKeyboard); + document + .getElementById("noVNC_keyboardinput") + .addEventListener("submit", () => false); + + document.documentElement.addEventListener( + "mousedown", + UI.keepVirtualKeyboard, + true + ); + + document + .getElementById("noVNC_control_bar") + .addEventListener("touchstart", UI.activateControlbar); + document + .getElementById("noVNC_control_bar") + .addEventListener("touchmove", UI.activateControlbar); + document + .getElementById("noVNC_control_bar") + .addEventListener("touchend", UI.activateControlbar); + document + .getElementById("noVNC_control_bar") + .addEventListener("input", UI.activateControlbar); + + document + .getElementById("noVNC_control_bar") + .addEventListener("touchstart", UI.keepControlbar); + document + .getElementById("noVNC_control_bar") + .addEventListener("input", UI.keepControlbar); + + document + .getElementById("noVNC_control_bar_handle") + .addEventListener("touchstart", UI.controlbarHandleMouseDown); + document + .getElementById("noVNC_control_bar_handle") + .addEventListener("touchend", UI.controlbarHandleMouseUp); + document + .getElementById("noVNC_control_bar_handle") + .addEventListener("touchmove", UI.dragControlbarHandle); + }, + + addExtraKeysHandlers() { + document + .getElementById("noVNC_toggle_extra_keys_button") + .addEventListener("click", UI.toggleExtraKeys); + document + .getElementById("noVNC_toggle_ctrl_button") + .addEventListener("click", UI.toggleCtrl); + document + .getElementById("noVNC_toggle_windows_button") + .addEventListener("click", UI.toggleWindows); + document + .getElementById("noVNC_toggle_alt_button") + .addEventListener("click", UI.toggleAlt); + document + .getElementById("noVNC_send_tab_button") + .addEventListener("click", UI.sendTab); + document + .getElementById("noVNC_send_esc_button") + .addEventListener("click", UI.sendEsc); + document + .getElementById("noVNC_send_ctrl_alt_del_button") + .addEventListener("click", UI.sendCtrlAltDel); + }, + + addMachineHandlers() { + document + .getElementById("noVNC_shutdown_button") + .addEventListener("click", () => UI.rfb.machineShutdown()); + document + .getElementById("noVNC_reboot_button") + .addEventListener("click", () => UI.rfb.machineReboot()); + document + .getElementById("noVNC_reset_button") + .addEventListener("click", () => UI.rfb.machineReset()); + document + .getElementById("noVNC_power_button") + .addEventListener("click", UI.togglePowerPanel); + }, + + addConnectionControlHandlers() { + document + .getElementById("noVNC_disconnect_button") + .addEventListener("click", UI.disconnect); + document + .getElementById("noVNC_connect_button") + .addEventListener("click", UI.connect); + document + .getElementById("noVNC_cancel_reconnect_button") + .addEventListener("click", UI.cancelReconnect); + + document + .getElementById("noVNC_credentials_button") + .addEventListener("click", UI.setCredentials); + }, + + addClipboardHandlers() { + document + .getElementById("noVNC_clipboard_button") + .addEventListener("click", UI.toggleClipboardPanel); + document + .getElementById("noVNC_clipboard_text") + .addEventListener("change", UI.clipboardSend); + document + .getElementById("noVNC_clipboard_clear_button") + .addEventListener("click", UI.clipboardClear); + }, + + // Add a call to save settings when the element changes, + // unless the optional parameter changeFunc is used instead. + addSettingChangeHandler(name, changeFunc) { + const settingElem = document.getElementById("noVNC_setting_" + name); + if (changeFunc === undefined) { + changeFunc = () => UI.saveSetting(name); + } + settingElem.addEventListener("change", changeFunc); + }, + + addSettingsHandlers() { + document + .getElementById("noVNC_settings_button") + .addEventListener("click", UI.toggleSettingsPanel); + + UI.addSettingChangeHandler("encrypt"); + UI.addSettingChangeHandler("resize"); + UI.addSettingChangeHandler("resize", UI.applyResizeMode); + UI.addSettingChangeHandler("resize", UI.updateViewClip); + UI.addSettingChangeHandler("quality"); + UI.addSettingChangeHandler("quality", UI.updateQuality); + UI.addSettingChangeHandler("compression"); + UI.addSettingChangeHandler("compression", UI.updateCompression); + UI.addSettingChangeHandler("view_clip"); + UI.addSettingChangeHandler("view_clip", UI.updateViewClip); + UI.addSettingChangeHandler("shared"); + UI.addSettingChangeHandler("view_only"); + UI.addSettingChangeHandler("view_only", UI.updateViewOnly); + UI.addSettingChangeHandler("show_dot"); + UI.addSettingChangeHandler("show_dot", UI.updateShowDotCursor); + UI.addSettingChangeHandler("host"); + UI.addSettingChangeHandler("port"); + UI.addSettingChangeHandler("path"); + UI.addSettingChangeHandler("repeaterID"); + UI.addSettingChangeHandler("logging"); + UI.addSettingChangeHandler("logging", UI.updateLogging); + UI.addSettingChangeHandler("reconnect"); + UI.addSettingChangeHandler("reconnect_delay"); + }, + + addFullscreenHandlers() { + document + .getElementById("noVNC_fullscreen_button") + .addEventListener("click", UI.toggleFullscreen); + + window.addEventListener("fullscreenchange", UI.updateFullscreenButton); + window.addEventListener("mozfullscreenchange", UI.updateFullscreenButton); + window.addEventListener( + "webkitfullscreenchange", + UI.updateFullscreenButton + ); + window.addEventListener("msfullscreenchange", UI.updateFullscreenButton); + }, + + /* ------^------- + * /EVENT HANDLERS + * ============== + * VISUAL + * ------v------*/ + + // Disable/enable controls depending on connection state + updateVisualState(state) { + document.documentElement.classList.remove("noVNC_connecting"); + document.documentElement.classList.remove("noVNC_connected"); + document.documentElement.classList.remove("noVNC_disconnecting"); + document.documentElement.classList.remove("noVNC_reconnecting"); + + const transitionElem = document.getElementById("noVNC_transition_text"); + switch (state) { + case "init": + break; + case "connecting": + transitionElem.textContent = _("Connecting..."); + document.documentElement.classList.add("noVNC_connecting"); + break; + case "connected": + document.documentElement.classList.add("noVNC_connected"); + break; + case "disconnecting": + transitionElem.textContent = _("Disconnecting..."); + document.documentElement.classList.add("noVNC_disconnecting"); + break; + case "disconnected": + break; + case "reconnecting": + transitionElem.textContent = _("Reconnecting..."); + document.documentElement.classList.add("noVNC_reconnecting"); + break; + default: + Log.Error("Invalid visual state: " + state); + UI.showStatus(_("Internal error"), "error"); + return; + } + + if (UI.connected) { + UI.updateViewClip(); + + UI.disableSetting("encrypt"); + UI.disableSetting("shared"); + UI.disableSetting("host"); + UI.disableSetting("port"); + UI.disableSetting("path"); + UI.disableSetting("repeaterID"); + + // Hide the controlbar after 2 seconds + UI.closeControlbarTimeout = setTimeout(UI.closeControlbar, 2000); + } else { + UI.enableSetting("encrypt"); + UI.enableSetting("shared"); + UI.enableSetting("host"); + UI.enableSetting("port"); + UI.enableSetting("path"); + UI.enableSetting("repeaterID"); + UI.updatePowerButton(); + UI.keepControlbar(); + } + + // State change closes dialogs as they may not be relevant + // anymore + UI.closeAllPanels(); + document + .getElementById("noVNC_credentials_dlg") + .classList.remove("noVNC_open"); + }, + + showStatus(text, statusType, time) { + const statusElem = document.getElementById("noVNC_status"); + + if (typeof statusType === "undefined") { + statusType = "normal"; + } + + // Don't overwrite more severe visible statuses and never + // errors. Only shows the first error. + if (statusElem.classList.contains("noVNC_open")) { + if (statusElem.classList.contains("noVNC_status_error")) { + return; + } + if ( + statusElem.classList.contains("noVNC_status_warn") && + statusType === "normal" + ) { + return; + } + } + + clearTimeout(UI.statusTimeout); + + switch (statusType) { + case "error": + statusElem.classList.remove("noVNC_status_warn"); + statusElem.classList.remove("noVNC_status_normal"); + statusElem.classList.add("noVNC_status_error"); + break; + case "warning": + case "warn": + statusElem.classList.remove("noVNC_status_error"); + statusElem.classList.remove("noVNC_status_normal"); + statusElem.classList.add("noVNC_status_warn"); + break; + case "normal": + case "info": + default: + statusElem.classList.remove("noVNC_status_error"); + statusElem.classList.remove("noVNC_status_warn"); + statusElem.classList.add("noVNC_status_normal"); + break; + } + + statusElem.textContent = text; + statusElem.classList.add("noVNC_open"); + + // If no time was specified, show the status for 1.5 seconds + if (typeof time === "undefined") { + time = 1500; + } + + // Error messages do not timeout + if (statusType !== "error") { + UI.statusTimeout = window.setTimeout(UI.hideStatus, time); + } + }, + + hideStatus() { + clearTimeout(UI.statusTimeout); + document.getElementById("noVNC_status").classList.remove("noVNC_open"); + }, + + activateControlbar(event) { + clearTimeout(UI.idleControlbarTimeout); + // We manipulate the anchor instead of the actual control + // bar in order to avoid creating new a stacking group + document + .getElementById("noVNC_control_bar_anchor") + .classList.remove("noVNC_idle"); + UI.idleControlbarTimeout = window.setTimeout(UI.idleControlbar, 2000); + }, + + idleControlbar() { + // Don't fade if a child of the control bar has focus + if ( + document + .getElementById("noVNC_control_bar") + .contains(document.activeElement) && + document.hasFocus() + ) { + UI.activateControlbar(); + return; + } + + document + .getElementById("noVNC_control_bar_anchor") + .classList.add("noVNC_idle"); + }, + + keepControlbar() { + clearTimeout(UI.closeControlbarTimeout); + }, + + openControlbar() { + document.getElementById("noVNC_control_bar").classList.add("noVNC_open"); + }, + + closeControlbar() { + UI.closeAllPanels(); + document.getElementById("noVNC_control_bar").classList.remove("noVNC_open"); + UI.rfb.focus(); + }, + + toggleControlbar() { + if ( + document + .getElementById("noVNC_control_bar") + .classList.contains("noVNC_open") + ) { + UI.closeControlbar(); + } else { + UI.openControlbar(); + } + }, + + toggleControlbarSide() { + // Temporarily disable animation, if bar is displayed, to avoid weird + // movement. The transitionend-event will not fire when display=none. + const bar = document.getElementById("noVNC_control_bar"); + const barDisplayStyle = window.getComputedStyle(bar).display; + if (barDisplayStyle !== "none") { + bar.style.transitionDuration = "0s"; + bar.addEventListener( + "transitionend", + () => (bar.style.transitionDuration = "") + ); + } + + const anchor = document.getElementById("noVNC_control_bar_anchor"); + if (anchor.classList.contains("noVNC_right")) { + WebUtil.writeSetting("controlbar_pos", "left"); + anchor.classList.remove("noVNC_right"); + } else { + WebUtil.writeSetting("controlbar_pos", "right"); + anchor.classList.add("noVNC_right"); + } + + // Consider this a movement of the handle + UI.controlbarDrag = true; + }, + + showControlbarHint(show) { + const hint = document.getElementById("noVNC_control_bar_hint"); + if (show) { + hint.classList.add("noVNC_active"); + } else { + hint.classList.remove("noVNC_active"); + } + }, + + dragControlbarHandle(e) { + if (!UI.controlbarGrabbed) return; + + const ptr = getPointerEvent(e); + + const anchor = document.getElementById("noVNC_control_bar_anchor"); + if (ptr.clientX < window.innerWidth * 0.1) { + if (anchor.classList.contains("noVNC_right")) { + UI.toggleControlbarSide(); + } + } else if (ptr.clientX > window.innerWidth * 0.9) { + if (!anchor.classList.contains("noVNC_right")) { + UI.toggleControlbarSide(); + } + } + + if (!UI.controlbarDrag) { + const dragDistance = Math.abs( + ptr.clientY - UI.controlbarMouseDownClientY + ); + + if (dragDistance < dragThreshold) return; + + UI.controlbarDrag = true; + } + + const eventY = ptr.clientY - UI.controlbarMouseDownOffsetY; + + UI.moveControlbarHandle(eventY); + + e.preventDefault(); + e.stopPropagation(); + UI.keepControlbar(); + UI.activateControlbar(); + }, + + // Move the handle but don't allow any position outside the bounds + moveControlbarHandle(viewportRelativeY) { + const handle = document.getElementById("noVNC_control_bar_handle"); + const handleHeight = handle.getBoundingClientRect().height; + const controlbarBounds = document + .getElementById("noVNC_control_bar") + .getBoundingClientRect(); + const margin = 10; + + // These heights need to be non-zero for the below logic to work + if (handleHeight === 0 || controlbarBounds.height === 0) { + return; + } + + let newY = viewportRelativeY; + + // Check if the coordinates are outside the control bar + if (newY < controlbarBounds.top + margin) { + // Force coordinates to be below the top of the control bar + newY = controlbarBounds.top + margin; + } else if ( + newY > + controlbarBounds.top + controlbarBounds.height - handleHeight - margin + ) { + // Force coordinates to be above the bottom of the control bar + newY = + controlbarBounds.top + controlbarBounds.height - handleHeight - margin; + } + + // Corner case: control bar too small for stable position + if (controlbarBounds.height < handleHeight + margin * 2) { + newY = + controlbarBounds.top + (controlbarBounds.height - handleHeight) / 2; + } + + // The transform needs coordinates that are relative to the parent + const parentRelativeY = newY - controlbarBounds.top; + handle.style.transform = "translateY(" + parentRelativeY + "px)"; + }, + + updateControlbarHandle() { + // Since the control bar is fixed on the viewport and not the page, + // the move function expects coordinates relative the the viewport. + const handle = document.getElementById("noVNC_control_bar_handle"); + const handleBounds = handle.getBoundingClientRect(); + UI.moveControlbarHandle(handleBounds.top); + }, + + controlbarHandleMouseUp(e) { + if (e.type == "mouseup" && e.button != 0) return; + + // mouseup and mousedown on the same place toggles the controlbar + if (UI.controlbarGrabbed && !UI.controlbarDrag) { + UI.toggleControlbar(); + e.preventDefault(); + e.stopPropagation(); + UI.keepControlbar(); + UI.activateControlbar(); + } + UI.controlbarGrabbed = false; + UI.showControlbarHint(false); + }, + + controlbarHandleMouseDown(e) { + if (e.type == "mousedown" && e.button != 0) return; + + const ptr = getPointerEvent(e); + + const handle = document.getElementById("noVNC_control_bar_handle"); + const bounds = handle.getBoundingClientRect(); + + // Touch events have implicit capture + if (e.type === "mousedown") { + setCapture(handle); + } + + UI.controlbarGrabbed = true; + UI.controlbarDrag = false; + + UI.showControlbarHint(true); + + UI.controlbarMouseDownClientY = ptr.clientY; + UI.controlbarMouseDownOffsetY = ptr.clientY - bounds.top; + e.preventDefault(); + e.stopPropagation(); + UI.keepControlbar(); + UI.activateControlbar(); + }, + + toggleExpander(e) { + if (this.classList.contains("noVNC_open")) { + this.classList.remove("noVNC_open"); + } else { + this.classList.add("noVNC_open"); + } + }, + + /* ------^------- + * /VISUAL + * ============== + * SETTINGS + * ------v------*/ + + // Initial page load read/initialization of settings + initSetting(name, defVal) { + // Check Query string followed by cookie + let val = WebUtil.getConfigVar(name); + if (val === null) { + val = WebUtil.readSetting(name, defVal); + } + WebUtil.setSetting(name, val); + UI.updateSetting(name); + return val; + }, + + // Set the new value, update and disable form control setting + forceSetting(name, val) { + WebUtil.setSetting(name, val); + UI.updateSetting(name); + UI.disableSetting(name); + }, + + // Update cookie and form control setting. If value is not set, then + // updates from control to current cookie setting. + updateSetting(name) { + // Update the settings control + let value = UI.getSetting(name); + + const ctrl = document.getElementById("noVNC_setting_" + name); + if (ctrl.type === "checkbox") { + ctrl.checked = value; + } else if (typeof ctrl.options !== "undefined") { + for (let i = 0; i < ctrl.options.length; i += 1) { + if (ctrl.options[i].value === value) { + ctrl.selectedIndex = i; + break; + } + } + } else { + /*Weird IE9 error leads to 'null' appearring + in textboxes instead of ''.*/ + if (value === null) { + value = ""; + } + ctrl.value = value; + } + }, + + // Save control setting to cookie + saveSetting(name) { + const ctrl = document.getElementById("noVNC_setting_" + name); + let val; + if (ctrl.type === "checkbox") { + val = ctrl.checked; + } else if (typeof ctrl.options !== "undefined") { + val = ctrl.options[ctrl.selectedIndex].value; + } else { + val = ctrl.value; + } + WebUtil.writeSetting(name, val); + //Log.Debug("Setting saved '" + name + "=" + val + "'"); + return val; + }, + + // Read form control compatible setting from cookie + getSetting(name) { + const ctrl = document.getElementById("noVNC_setting_" + name); + let val = WebUtil.readSetting(name); + if ( + typeof val !== "undefined" && + val !== null && + ctrl.type === "checkbox" + ) { + if (val.toString().toLowerCase() in { 0: 1, no: 1, false: 1 }) { + val = false; + } else { + val = true; + } + } + return val; + }, + + // These helpers compensate for the lack of parent-selectors and + // previous-sibling-selectors in CSS which are needed when we want to + // disable the labels that belong to disabled input elements. + disableSetting(name) { + const ctrl = document.getElementById("noVNC_setting_" + name); + ctrl.disabled = true; + ctrl.label.classList.add("noVNC_disabled"); + }, + + enableSetting(name) { + const ctrl = document.getElementById("noVNC_setting_" + name); + ctrl.disabled = false; + ctrl.label.classList.remove("noVNC_disabled"); + }, + + /* ------^------- + * /SETTINGS + * ============== + * PANELS + * ------v------*/ + + closeAllPanels() { + UI.closeSettingsPanel(); + UI.closePowerPanel(); + UI.closeClipboardPanel(); + UI.closeExtraKeys(); + }, + + /* ------^------- + * /PANELS + * ============== + * SETTINGS (panel) + * ------v------*/ + + openSettingsPanel() { + UI.closeAllPanels(); + UI.openControlbar(); + + // Refresh UI elements from saved cookies + UI.updateSetting("encrypt"); + UI.updateSetting("view_clip"); + UI.updateSetting("resize"); + UI.updateSetting("quality"); + UI.updateSetting("compression"); + UI.updateSetting("shared"); + UI.updateSetting("view_only"); + UI.updateSetting("path"); + UI.updateSetting("repeaterID"); + UI.updateSetting("logging"); + UI.updateSetting("reconnect"); + UI.updateSetting("reconnect_delay"); + + document.getElementById("noVNC_settings").classList.add("noVNC_open"); + document + .getElementById("noVNC_settings_button") + .classList.add("noVNC_selected"); + }, + + closeSettingsPanel() { + document.getElementById("noVNC_settings").classList.remove("noVNC_open"); + document + .getElementById("noVNC_settings_button") + .classList.remove("noVNC_selected"); + }, + + toggleSettingsPanel() { + if ( + document.getElementById("noVNC_settings").classList.contains("noVNC_open") + ) { + UI.closeSettingsPanel(); + } else { + UI.openSettingsPanel(); + } + }, + + /* ------^------- + * /SETTINGS + * ============== + * POWER + * ------v------*/ + + openPowerPanel() { + UI.closeAllPanels(); + UI.openControlbar(); + + document.getElementById("noVNC_power").classList.add("noVNC_open"); + document + .getElementById("noVNC_power_button") + .classList.add("noVNC_selected"); + }, + + closePowerPanel() { + document.getElementById("noVNC_power").classList.remove("noVNC_open"); + document + .getElementById("noVNC_power_button") + .classList.remove("noVNC_selected"); + }, + + togglePowerPanel() { + if ( + document.getElementById("noVNC_power").classList.contains("noVNC_open") + ) { + UI.closePowerPanel(); + } else { + UI.openPowerPanel(); + } + }, + + // Disable/enable power button + updatePowerButton() { + if (UI.connected && UI.rfb.capabilities.power && !UI.rfb.viewOnly) { + document + .getElementById("noVNC_power_button") + .classList.remove("noVNC_hidden"); + } else { + document + .getElementById("noVNC_power_button") + .classList.add("noVNC_hidden"); + // Close power panel if open + UI.closePowerPanel(); + } + }, + + /* ------^------- + * /POWER + * ============== + * CLIPBOARD + * ------v------*/ + + openClipboardPanel() { + UI.closeAllPanels(); + UI.openControlbar(); + + document.getElementById("noVNC_clipboard").classList.add("noVNC_open"); + document + .getElementById("noVNC_clipboard_button") + .classList.add("noVNC_selected"); + }, + + closeClipboardPanel() { + document.getElementById("noVNC_clipboard").classList.remove("noVNC_open"); + document + .getElementById("noVNC_clipboard_button") + .classList.remove("noVNC_selected"); + }, + + toggleClipboardPanel() { + if ( + document + .getElementById("noVNC_clipboard") + .classList.contains("noVNC_open") + ) { + UI.closeClipboardPanel(); + } else { + UI.openClipboardPanel(); + } + }, + + clipboardReceive(e) { + Log.Debug(">> UI.clipboardReceive: " + e.detail.text.substr(0, 40) + "..."); + document.getElementById("noVNC_clipboard_text").value = e.detail.text; + Log.Debug("<< UI.clipboardReceive"); + }, + + clipboardClear() { + document.getElementById("noVNC_clipboard_text").value = ""; + UI.rfb.clipboardPasteFrom(""); + }, + + clipboardSend() { + const text = document.getElementById("noVNC_clipboard_text").value; + Log.Debug(">> UI.clipboardSend: " + text.substr(0, 40) + "..."); + UI.rfb.clipboardPasteFrom(text); + Log.Debug("<< UI.clipboardSend"); + }, + + /* ------^------- + * /CLIPBOARD + * ============== + * CONNECTION + * ------v------*/ + + openConnectPanel() { + document.getElementById("noVNC_connect_dlg").classList.add("noVNC_open"); + }, + + closeConnectPanel() { + document.getElementById("noVNC_connect_dlg").classList.remove("noVNC_open"); + }, + + connect(event, password) { + // Ignore when rfb already exists + if (typeof UI.rfb !== "undefined") { + return; + } + + const host = UI.getSetting("host"); + const port = UI.getSetting("port"); + const path = UI.getSetting("path"); + + if (typeof password === "undefined") { + password = WebUtil.getConfigVar("password"); + UI.reconnectPassword = password; + } + + if (password === null) { + password = undefined; + } + + UI.hideStatus(); + + if (!host) { + Log.Error("Can't connect when host is: " + host); + UI.showStatus(_("Must set host"), "error"); + return; + } + + UI.closeConnectPanel(); + + UI.updateVisualState("connecting"); + + let url; + + url = UI.getSetting("encrypt") ? "wss" : "ws"; + + url += "://" + host; + if (port) { + url += ":" + port; + } + url += "/" + path; + + UI.rfb = new RFB(document.getElementById("noVNC_container"), url, { + shared: UI.getSetting("shared"), + repeaterID: UI.getSetting("repeaterID"), + credentials: { password: password }, + }); + UI.rfb.addEventListener("connect", UI.connectFinished); + UI.rfb.addEventListener("disconnect", UI.disconnectFinished); + UI.rfb.addEventListener("credentialsrequired", UI.credentials); + UI.rfb.addEventListener("securityfailure", UI.securityFailed); + UI.rfb.addEventListener("capabilities", UI.updatePowerButton); + UI.rfb.addEventListener("clipboard", UI.clipboardReceive); + UI.rfb.addEventListener("bell", UI.bell); + UI.rfb.addEventListener("desktopname", UI.updateDesktopName); + UI.rfb.clipViewport = UI.getSetting("view_clip"); + UI.rfb.scaleViewport = UI.getSetting("resize") === "scale"; + UI.rfb.resizeSession = UI.getSetting("resize") === "remote"; + UI.rfb.qualityLevel = parseInt(UI.getSetting("quality")); + UI.rfb.compressionLevel = parseInt(UI.getSetting("compression")); + UI.rfb.showDotCursor = UI.getSetting("show_dot"); + + UI.updateViewOnly(); // requires UI.rfb + + // ######################## CUSTOM CODE ######################## + var clipboard = document.getElementById("clipboard"); + var controlBar = document.getElementById("noVNC_control_bar"); + var controlBarClipboard = document.getElementById("noVNC_clipboard_text"); + + UI.rfb.addEventListener("clipboard", function (e) { + clipboard.value = e.detail.text; + }); + + UI.rfb.addEventListener("connect", function (e) { + var viewer = document.getElementsByTagName("canvas")[0]; + + document.body.addEventListener("paste", function (e) { + try { + console.log("paste"); + if (controlBarClipboard.classList.contains("noVNC_open")) { + return; + } + if (UI.rfb != null) { + text = e.clipboardData.getData("text"); + console.log("copy clipboard from local to vnc: " + text); + controlBarClipboard.value = text; + UI.rfb.clipboardPasteFrom(text); + } + } catch (error) { + console.error(error); + } + }); + + document.body.addEventListener("keydown", function (e) { + try { + console.log("document keydown: " + e.keyCode); + if (controlBar.classList.contains("noVNC_open")) { + return; + } + if (e.keyCode !== 86) { + e.preventDefault(); + } else { + if (navigator.clipboard) { + navigator.clipboard + .readText() + .then((text) => { + console.log("copy clipboard from local to vnc: " + text); + controlBarClipboard.value = text; + UI.rfb.clipboardPasteFrom(text); + }) + .catch((err) => { + console.error("Failed to read clipboard contents: ", err); + }); + } + } + setTimeout(function () { + viewer.dispatchEvent(new e.constructor(e.type, e)); + if (UI.rfb != null) { + UI.rfb.focus(); + } + }, 1); + } catch (error) { + console.error(error); + } + }); + + document.body.addEventListener("keyup", function (e) { + try { + console.log("document keyup"); + if (controlBar.classList.contains("noVNC_open")) { + return; + } + + if (e.keyCode !== 86) { + e.preventDefault(); + } + setTimeout(function () { + viewer.dispatchEvent(new e.constructor(e.type, e)); + if (UI.rfb != null) { + UI.rfb.focus(); + } + }, 1); + } catch (error) { + console.error(error); + } + }); + + viewer.addEventListener("keydown", function (e) { + try { + console.log("viewer keydown"); + if (e.ctrlKey) { + if (controlBar.classList.contains("noVNC_open")) { + return; + } + document.activeElement.blur(); + } + } catch (error) { + console.error(error); + } + }); + + viewer.addEventListener("keyup", function (e) { + try { + console.log("viewer keyup: " + e.keyCode); + if (e.ctrlKey && [67, 88].includes(e.keyCode)) { + if (controlBar.classList.contains("noVNC_open")) { + return; + } + if (clipboard != null) { + console.log( + "copy clipboard from vnc to local: " + clipboard.value + ); + clipboard.focus(); + clipboard.select(); + + document.execCommand("copy"); + if (UI.rfb != null) { + UI.rfb.focus(); + } + } + } + } catch (error) { + console.error(error); + } + }); + }); + // ######################## END CUSTOM CODE ######################## + }, + + disconnect() { + UI.rfb.disconnect(); + + UI.connected = false; + + // Disable automatic reconnecting + UI.inhibitReconnect = true; + + UI.updateVisualState("disconnecting"); + + // Don't display the connection settings until we're actually disconnected + }, + + reconnect() { + UI.reconnectCallback = null; + + // if reconnect has been disabled in the meantime, do nothing. + if (UI.inhibitReconnect) { + return; + } + + UI.connect(null, UI.reconnectPassword); + }, + + cancelReconnect() { + if (UI.reconnectCallback !== null) { + clearTimeout(UI.reconnectCallback); + UI.reconnectCallback = null; + } + + UI.updateVisualState("disconnected"); + + UI.openControlbar(); + UI.openConnectPanel(); + }, + + connectFinished(e) { + UI.connected = true; + UI.inhibitReconnect = false; + + let msg; + if (UI.getSetting("encrypt")) { + msg = _("Connected (encrypted) to ") + UI.desktopName; + } else { + msg = _("Connected (unencrypted) to ") + UI.desktopName; + } + UI.showStatus(msg); + UI.updateVisualState("connected"); + + // Do this last because it can only be used on rendered elements + UI.rfb.focus(); + }, + + disconnectFinished(e) { + const wasConnected = UI.connected; + + // This variable is ideally set when disconnection starts, but + // when the disconnection isn't clean or if it is initiated by + // the server, we need to do it here as well since + // UI.disconnect() won't be used in those cases. + UI.connected = false; + + UI.rfb = undefined; + + if (!e.detail.clean) { + UI.updateVisualState("disconnected"); + if (wasConnected) { + UI.showStatus(_("Something went wrong, connection is closed"), "error"); + } else { + UI.showStatus(_("Failed to connect to server"), "error"); + } + } else if ( + UI.getSetting("reconnect", false) === true && + !UI.inhibitReconnect + ) { + UI.updateVisualState("reconnecting"); + + const delay = parseInt(UI.getSetting("reconnect_delay")); + UI.reconnectCallback = setTimeout(UI.reconnect, delay); + return; + } else { + UI.updateVisualState("disconnected"); + UI.showStatus(_("Disconnected"), "normal"); + } + + document.title = PAGE_TITLE; + + UI.openControlbar(); + UI.openConnectPanel(); + }, + + securityFailed(e) { + let msg = ""; + // On security failures we might get a string with a reason + // directly from the server. Note that we can't control if + // this string is translated or not. + if ("reason" in e.detail) { + msg = + _("New connection has been rejected with reason: ") + e.detail.reason; + } else { + msg = _("New connection has been rejected"); + } + UI.showStatus(msg, "error"); + }, + + /* ------^------- + * /CONNECTION + * ============== + * PASSWORD + * ------v------*/ + + credentials(e) { + // FIXME: handle more types + + document + .getElementById("noVNC_username_block") + .classList.remove("noVNC_hidden"); + document + .getElementById("noVNC_password_block") + .classList.remove("noVNC_hidden"); + + let inputFocus = "none"; + if (e.detail.types.indexOf("username") === -1) { + document + .getElementById("noVNC_username_block") + .classList.add("noVNC_hidden"); + } else { + inputFocus = inputFocus === "none" ? "noVNC_username_input" : inputFocus; + } + if (e.detail.types.indexOf("password") === -1) { + document + .getElementById("noVNC_password_block") + .classList.add("noVNC_hidden"); + } else { + inputFocus = inputFocus === "none" ? "noVNC_password_input" : inputFocus; + } + document + .getElementById("noVNC_credentials_dlg") + .classList.add("noVNC_open"); + + setTimeout(() => document.getElementById(inputFocus).focus(), 100); + + Log.Warn("Server asked for credentials"); + UI.showStatus(_("Credentials are required"), "warning"); + }, + + setCredentials(e) { + // Prevent actually submitting the form + e.preventDefault(); + + let inputElemUsername = document.getElementById("noVNC_username_input"); + const username = inputElemUsername.value; + + let inputElemPassword = document.getElementById("noVNC_password_input"); + const password = inputElemPassword.value; + // Clear the input after reading the password + inputElemPassword.value = ""; + + UI.rfb.sendCredentials({ username: username, password: password }); + UI.reconnectPassword = password; + document + .getElementById("noVNC_credentials_dlg") + .classList.remove("noVNC_open"); + }, + + /* ------^------- + * /PASSWORD + * ============== + * FULLSCREEN + * ------v------*/ + + toggleFullscreen() { + if ( + document.fullscreenElement || // alternative standard method + document.mozFullScreenElement || // currently working methods + document.webkitFullscreenElement || + document.msFullscreenElement + ) { + if (document.exitFullscreen) { + document.exitFullscreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } else if (document.msExitFullscreen) { + document.msExitFullscreen(); + } + } else { + if (document.documentElement.requestFullscreen) { + document.documentElement.requestFullscreen(); + } else if (document.documentElement.mozRequestFullScreen) { + document.documentElement.mozRequestFullScreen(); + } else if (document.documentElement.webkitRequestFullscreen) { + document.documentElement.webkitRequestFullscreen( + Element.ALLOW_KEYBOARD_INPUT + ); + } else if (document.body.msRequestFullscreen) { + document.body.msRequestFullscreen(); + } + } + UI.updateFullscreenButton(); + }, + + updateFullscreenButton() { + if ( + document.fullscreenElement || // alternative standard method + document.mozFullScreenElement || // currently working methods + document.webkitFullscreenElement || + document.msFullscreenElement + ) { + document + .getElementById("noVNC_fullscreen_button") + .classList.add("noVNC_selected"); + } else { + document + .getElementById("noVNC_fullscreen_button") + .classList.remove("noVNC_selected"); + } + }, + + /* ------^------- + * /FULLSCREEN + * ============== + * RESIZE + * ------v------*/ + + // Apply remote resizing or local scaling + applyResizeMode() { + if (!UI.rfb) return; + + UI.rfb.scaleViewport = UI.getSetting("resize") === "scale"; + UI.rfb.resizeSession = UI.getSetting("resize") === "remote"; + }, + + /* ------^------- + * /RESIZE + * ============== + * VIEW CLIPPING + * ------v------*/ + + // Update viewport clipping property for the connection. The normal + // case is to get the value from the setting. There are special cases + // for when the viewport is scaled or when a touch device is used. + updateViewClip() { + if (!UI.rfb) return; + + const scaling = UI.getSetting("resize") === "scale"; + + if (scaling) { + // Can't be clipping if viewport is scaled to fit + UI.forceSetting("view_clip", false); + UI.rfb.clipViewport = false; + } else if (!hasScrollbarGutter) { + // Some platforms have scrollbars that are difficult + // to use in our case, so we always use our own panning + UI.forceSetting("view_clip", true); + UI.rfb.clipViewport = true; + } else { + UI.enableSetting("view_clip"); + UI.rfb.clipViewport = UI.getSetting("view_clip"); + } + + // Changing the viewport may change the state of + // the dragging button + UI.updateViewDrag(); + }, + + /* ------^------- + * /VIEW CLIPPING + * ============== + * VIEWDRAG + * ------v------*/ + + toggleViewDrag() { + if (!UI.rfb) return; + + UI.rfb.dragViewport = !UI.rfb.dragViewport; + UI.updateViewDrag(); + }, + + updateViewDrag() { + if (!UI.connected) return; + + const viewDragButton = document.getElementById("noVNC_view_drag_button"); + + if (!UI.rfb.clipViewport && UI.rfb.dragViewport) { + // We are no longer clipping the viewport. Make sure + // viewport drag isn't active when it can't be used. + UI.rfb.dragViewport = false; + } + + if (UI.rfb.dragViewport) { + viewDragButton.classList.add("noVNC_selected"); + } else { + viewDragButton.classList.remove("noVNC_selected"); + } + + if (UI.rfb.clipViewport) { + viewDragButton.classList.remove("noVNC_hidden"); + } else { + viewDragButton.classList.add("noVNC_hidden"); + } + }, + + /* ------^------- + * /VIEWDRAG + * ============== + * QUALITY + * ------v------*/ + + updateQuality() { + if (!UI.rfb) return; + + UI.rfb.qualityLevel = parseInt(UI.getSetting("quality")); + }, + + /* ------^------- + * /QUALITY + * ============== + * COMPRESSION + * ------v------*/ + + updateCompression() { + if (!UI.rfb) return; + + UI.rfb.compressionLevel = parseInt(UI.getSetting("compression")); + }, + + /* ------^------- + * /COMPRESSION + * ============== + * KEYBOARD + * ------v------*/ + + showVirtualKeyboard() { + if (!isTouchDevice) return; + + const input = document.getElementById("noVNC_keyboardinput"); + + if (document.activeElement == input) return; + + input.focus(); + + try { + const l = input.value.length; + // Move the caret to the end + input.setSelectionRange(l, l); + } catch (err) { + // setSelectionRange is undefined in Google Chrome + } + }, + + hideVirtualKeyboard() { + if (!isTouchDevice) return; + + const input = document.getElementById("noVNC_keyboardinput"); + + if (document.activeElement != input) return; + + input.blur(); + }, + + toggleVirtualKeyboard() { + if ( + document + .getElementById("noVNC_keyboard_button") + .classList.contains("noVNC_selected") + ) { + UI.hideVirtualKeyboard(); + } else { + UI.showVirtualKeyboard(); + } + }, + + onfocusVirtualKeyboard(event) { + document + .getElementById("noVNC_keyboard_button") + .classList.add("noVNC_selected"); + if (UI.rfb) { + UI.rfb.focusOnClick = false; + } + }, + + onblurVirtualKeyboard(event) { + document + .getElementById("noVNC_keyboard_button") + .classList.remove("noVNC_selected"); + if (UI.rfb) { + UI.rfb.focusOnClick = true; + } + }, + + keepVirtualKeyboard(event) { + const input = document.getElementById("noVNC_keyboardinput"); + + // Only prevent focus change if the virtual keyboard is active + if (document.activeElement != input) { + return; + } + + // Only allow focus to move to other elements that need + // focus to function properly + if (event.target.form !== undefined) { + switch (event.target.type) { + case "text": + case "email": + case "search": + case "password": + case "tel": + case "url": + case "textarea": + case "select-one": + case "select-multiple": + return; + } + } + + event.preventDefault(); + }, + + keyboardinputReset() { + const kbi = document.getElementById("noVNC_keyboardinput"); + kbi.value = new Array(UI.defaultKeyboardinputLen).join("_"); + UI.lastKeyboardinput = kbi.value; + }, + + keyEvent(keysym, code, down) { + if (!UI.rfb) return; + + UI.rfb.sendKey(keysym, code, down); + }, + + // When normal keyboard events are left uncought, use the input events from + // the keyboardinput element instead and generate the corresponding key events. + // This code is required since some browsers on Android are inconsistent in + // sending keyCodes in the normal keyboard events when using on screen keyboards. + keyInput(event) { + if (!UI.rfb) return; + + const newValue = event.target.value; + + if (!UI.lastKeyboardinput) { + UI.keyboardinputReset(); + } + const oldValue = UI.lastKeyboardinput; + + let newLen; + try { + // Try to check caret position since whitespace at the end + // will not be considered by value.length in some browsers + newLen = Math.max(event.target.selectionStart, newValue.length); + } catch (err) { + // selectionStart is undefined in Google Chrome + newLen = newValue.length; + } + const oldLen = oldValue.length; + + let inputs = newLen - oldLen; + let backspaces = inputs < 0 ? -inputs : 0; + + // Compare the old string with the new to account for + // text-corrections or other input that modify existing text + for (let i = 0; i < Math.min(oldLen, newLen); i++) { + if (newValue.charAt(i) != oldValue.charAt(i)) { + inputs = newLen - i; + backspaces = oldLen - i; + break; + } + } + + // Send the key events + for (let i = 0; i < backspaces; i++) { + UI.rfb.sendKey(KeyTable.XK_BackSpace, "Backspace"); + } + for (let i = newLen - inputs; i < newLen; i++) { + UI.rfb.sendKey(keysyms.lookup(newValue.charCodeAt(i))); + } + + // Control the text content length in the keyboardinput element + if (newLen > 2 * UI.defaultKeyboardinputLen) { + UI.keyboardinputReset(); + } else if (newLen < 1) { + // There always have to be some text in the keyboardinput + // element with which backspace can interact. + UI.keyboardinputReset(); + // This sometimes causes the keyboard to disappear for a second + // but it is required for the android keyboard to recognize that + // text has been added to the field + event.target.blur(); + // This has to be ran outside of the input handler in order to work + setTimeout(event.target.focus.bind(event.target), 0); + } else { + UI.lastKeyboardinput = newValue; + } + }, + + /* ------^------- + * /KEYBOARD + * ============== + * EXTRA KEYS + * ------v------*/ + + openExtraKeys() { + UI.closeAllPanels(); + UI.openControlbar(); + + document.getElementById("noVNC_modifiers").classList.add("noVNC_open"); + document + .getElementById("noVNC_toggle_extra_keys_button") + .classList.add("noVNC_selected"); + }, + + closeExtraKeys() { + document.getElementById("noVNC_modifiers").classList.remove("noVNC_open"); + document + .getElementById("noVNC_toggle_extra_keys_button") + .classList.remove("noVNC_selected"); + }, + + toggleExtraKeys() { + if ( + document + .getElementById("noVNC_modifiers") + .classList.contains("noVNC_open") + ) { + UI.closeExtraKeys(); + } else { + UI.openExtraKeys(); + } + }, + + sendEsc() { + UI.sendKey(KeyTable.XK_Escape, "Escape"); + }, + + sendTab() { + UI.sendKey(KeyTable.XK_Tab, "Tab"); + }, + + toggleCtrl() { + const btn = document.getElementById("noVNC_toggle_ctrl_button"); + if (btn.classList.contains("noVNC_selected")) { + UI.sendKey(KeyTable.XK_Control_L, "ControlLeft", false); + btn.classList.remove("noVNC_selected"); + } else { + UI.sendKey(KeyTable.XK_Control_L, "ControlLeft", true); + btn.classList.add("noVNC_selected"); + } + }, + + toggleWindows() { + const btn = document.getElementById("noVNC_toggle_windows_button"); + if (btn.classList.contains("noVNC_selected")) { + UI.sendKey(KeyTable.XK_Super_L, "MetaLeft", false); + btn.classList.remove("noVNC_selected"); + } else { + UI.sendKey(KeyTable.XK_Super_L, "MetaLeft", true); + btn.classList.add("noVNC_selected"); + } + }, + + toggleAlt() { + const btn = document.getElementById("noVNC_toggle_alt_button"); + if (btn.classList.contains("noVNC_selected")) { + UI.sendKey(KeyTable.XK_Alt_L, "AltLeft", false); + btn.classList.remove("noVNC_selected"); + } else { + UI.sendKey(KeyTable.XK_Alt_L, "AltLeft", true); + btn.classList.add("noVNC_selected"); + } + }, + + sendCtrlAltDel() { + UI.rfb.sendCtrlAltDel(); + // See below + UI.rfb.focus(); + UI.idleControlbar(); + }, + + sendKey(keysym, code, down) { + UI.rfb.sendKey(keysym, code, down); + + // Move focus to the screen in order to be able to use the + // keyboard right after these extra keys. + // The exception is when a virtual keyboard is used, because + // if we focus the screen the virtual keyboard would be closed. + // In this case we focus our special virtual keyboard input + // element instead. + if ( + document + .getElementById("noVNC_keyboard_button") + .classList.contains("noVNC_selected") + ) { + document.getElementById("noVNC_keyboardinput").focus(); + } else { + UI.rfb.focus(); + } + // fade out the controlbar to highlight that + // the focus has been moved to the screen + UI.idleControlbar(); + }, + + /* ------^------- + * /EXTRA KEYS + * ============== + * MISC + * ------v------*/ + + updateViewOnly() { + if (!UI.rfb) return; + UI.rfb.viewOnly = UI.getSetting("view_only"); + + // Hide input related buttons in view only mode + if (UI.rfb.viewOnly) { + document + .getElementById("noVNC_keyboard_button") + .classList.add("noVNC_hidden"); + document + .getElementById("noVNC_toggle_extra_keys_button") + .classList.add("noVNC_hidden"); + document + .getElementById("noVNC_clipboard_button") + .classList.add("noVNC_hidden"); + } else { + document + .getElementById("noVNC_keyboard_button") + .classList.remove("noVNC_hidden"); + document + .getElementById("noVNC_toggle_extra_keys_button") + .classList.remove("noVNC_hidden"); + document + .getElementById("noVNC_clipboard_button") + .classList.remove("noVNC_hidden"); + } + }, + + updateShowDotCursor() { + if (!UI.rfb) return; + UI.rfb.showDotCursor = UI.getSetting("show_dot"); + }, + + updateLogging() { + WebUtil.initLogging(UI.getSetting("logging")); + }, + + updateDesktopName(e) { + UI.desktopName = e.detail.name; + // Display the desktop name in the document title + document.title = e.detail.name + " - " + PAGE_TITLE; + }, + + bell(e) { + if (WebUtil.getConfigVar("bell", "on") === "on") { + const promise = document.getElementById("noVNC_bell").play(); + // The standards disagree on the return value here + if (promise) { + promise.catch((e) => { + if (e.name === "NotAllowedError") { + // Ignore when the browser doesn't let us play audio. + // It is common that the browsers require audio to be + // initiated from a user action. + } else { + Log.Error("Unable to play bell: " + e); + } + }); + } + } + }, + + //Helper to add options to dropdown. + addOption(selectbox, text, value) { + const optn = document.createElement("OPTION"); + optn.text = text; + optn.value = value; + selectbox.options.add(optn); + }, + + /* ------^------- + * /MISC + * ============== + */ +}; + +// Set up translations +const LINGUAS = [ + "cs", + "de", + "el", + "es", + "ja", + "ko", + "nl", + "pl", + "ru", + "sv", + "tr", + "zh_CN", + "zh_TW", +]; +l10n.setup(LINGUAS); +if (l10n.language === "en" || l10n.dictionary !== undefined) { + UI.prime(); +} else { + WebUtil.fetchJSON("app/locale/" + l10n.language + ".json") + .then((translations) => { + l10n.dictionary = translations; + }) + .catch((err) => Log.Error("Failed to load translations: " + err)) + .then(UI.prime); +} + +export default UI; diff --git a/base-notebook/resources/vnc/vnc.html b/base-notebook/resources/vnc/vnc.html new file mode 100644 index 00000000..03174103 --- /dev/null +++ b/base-notebook/resources/vnc/vnc.html @@ -0,0 +1,613 @@ + + + + + noVNC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
noVNC encountered an error:
+
+
+
+
+ + +
+ +
+ + +
+
+
+ +
+

no
VNC

+ + + + + +
+ +
+ + + +
+
+ + + + + + +
+
+ + + +
+
+
+ Power +
+ + + +
+
+ + + +
+
+
+ Clipboard +
+ +
+ +
+
+ + + + + + +
+
+
    +
  • + Settings +
  • +
  • + +
  • +
  • + +
  • +

  • +
  • + +
  • +
  • + + +
  • +

  • +
  • +
    Advanced
    +
    +
      +
    • + + +
    • +
    • + + +
    • +

    • +
    • + + +
    • +
    • +
      WebSocket
      +
      +
        +
      • + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      +
      +
    • +

    • +
    • + +
    • +
    • + + +
    • +

    • +
    • + +
    • +

    • + +
    • + +
    • +
    +
    +
  • +

  • +
  • + Version: + +
  • +
+
+
+ + + +
+
+ +
+
+ + + +
+ + +
+
+ +

+ Workspace
Desktop
VNC +

+
+
+ Connect +
+
+ +
+
+ + +
+
+
+
    +
  • + + +
  • +
  • + + +
  • +
  • + +
  • +
+
+
+
+ + +
+
+
+ +
+
+
+ + + +
+ + + +
+ + + + + + + diff --git a/base-notebook/resources/vscode/install.sh b/base-notebook/resources/vscode/install.sh new file mode 100644 index 00000000..151bb82b --- /dev/null +++ b/base-notebook/resources/vscode/install.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# Code server setup +cp resources/vscode/start-notebook-vscode.sh /usr/local/bin/ +chmod +x /usr/local/bin/start-notebook-vscode.sh +mkdir -p /opt/code-server +cp resources/vscode/user-settings.py /opt/code-server/user-settings.py +cd /opt/code-server +curl -fsSL https://code-server.dev/install.sh | \ + sh -s -- --prefix /opt/code-server --method standalone + +export PATH=/opt/code-server/bin:$PATH +export VSCODE_EXTENSIONS=/opt/code-server/extensions +export NODE_EXTRA_CA_CERTS=/etc/ssl/certs/ca-certificates.crt + +# Install extensions with retry +retry() { + local -r -i max_attempts=10 + local -i attempt_num=1 + + until "$@"; do + if (( attempt_num == max_attempts )); then + echo "Attempt $attempt_num failed! No more retries left." + return 1 + else + echo "Attempt $attempt_num failed! Trying again in 2 seconds..." + sleep 2 + fi + + attempt_num=$(( attempt_num + 1 )) + done +} + +retry bash -c "mkdir -p $VSCODE_EXTENSIONS && \ + chmod +rX /opt/code-server/user-settings.py && \ + code-server --install-extension ms-toolsai.jupyter --extensions-dir $VSCODE_EXTENSIONS && \ + code-server --install-extension ms-python.python --extensions-dir $VSCODE_EXTENSIONS && \ + code-server --install-extension mhutchie.git-graph --extensions-dir $VSCODE_EXTENSIONS && \ + code-server --install-extension eamodio.gitlens --extensions-dir $VSCODE_EXTENSIONS && \ + layer-cleanup.sh" \ No newline at end of file diff --git a/base-notebook/resources/vscode/start-notebook-vscode.sh b/base-notebook/resources/vscode/start-notebook-vscode.sh new file mode 100644 index 00000000..c0c57707 --- /dev/null +++ b/base-notebook/resources/vscode/start-notebook-vscode.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# Copyright 2022 CS GROUP - France, http://www.c-s.fr +# All rights reserved + +# VSCode base extensions copy if not already set +export PATH=/opt/code-server/bin:$PATH +export VSCODE_EXTENSIONS=/opt/code-server/extensions +export NODE_EXTRA_CA_CERTS=/etc/ssl/certs/ca-certificates.crt + +VSCODE_EXTENSIONS_DIR=$HOME/.vscode/extensions +echo "INFO: VSCode extensions folder set up in $VSCODE_EXTENSIONS_DIR" +mkdir -p $VSCODE_EXTENSIONS_DIR +echo "INFO: Avoiding extensions auto update by overriding user settings" +python /opt/code-server/user-settings.py $HOME/.local/share/code-server/User/settings.json +echo "INFO: Copy of VSCode base extensions" +rsync -a /opt/code-server/extensions/ $VSCODE_EXTENSIONS_DIR +echo "INFO: VSCode extensions successfully set up" + diff --git a/base-notebook/resources/vscode/user-settings.py b/base-notebook/resources/vscode/user-settings.py new file mode 100644 index 00000000..aa6fdde5 --- /dev/null +++ b/base-notebook/resources/vscode/user-settings.py @@ -0,0 +1,24 @@ +#!/usr/bin/python +# Copyright 2022 CS GROUP - France, http://www.c-s.fr +# All rights reserved + +import sys +import json + +settings_file_path = sys.argv[1] +try: + try: + with open(settings_file_path) as settings_file: + data = json.load(settings_file) + except FileNotFoundError: + print('ERROR: User settings file not found.. Creating new one') + data = {} + + data['extensions.autoUpdate'] = False + data['update.mode'] = "none" + with open(settings_file_path, 'w+') as settings_file: + json.dump(data, settings_file, indent=2) + print('INFO: User settings file successfully overidden') + +except: + print('ERROR: Error during VSCode user settings file set up ...') \ No newline at end of file diff --git a/base-notebook/start b/base-notebook/start index fb5d5235..08b1676a 100644 --- a/base-notebook/start +++ b/base-notebook/start @@ -7,6 +7,18 @@ if ! [[ -z "${PANGEO_SCRATCH_PREFIX}" ]] && ! [[ -z "${JUPYTERHUB_USER}" ]]; the export PANGEO_SCRATCH="${PANGEO_SCRATCH_PREFIX}/${JUPYTERHUB_USER}/" fi +echo "[INFO] Executing up startup scripts" +for file in /usr/local/bin/* +do + if [[ $file == *"start-notebook-"* ]] + then + echo "[INFO] Executing $file" + source "$file" + fi +done +echo "[INFO] Executing up startup scripts - Finished" + + # ==== ONLY EDIT WITHIN THIS BLOCK ===== exec "$@" From e6f8407ea50e271447e6916e518862a544487e99 Mon Sep 17 00:00:00 2001 From: eroan-marie Date: Mon, 7 Oct 2024 16:08:33 +0200 Subject: [PATCH 2/3] fix: change image name to datalabs --- Makefile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index af3da1eb..963b2757 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ TESTDIR=/srv/test .PHONY: base-image base-image : cd base-image ; \ - docker build -t pangeo/base-image:master --progress=plain --platform linux/amd64 . + docker build -t datalabs/base-image:master --progress=plain --platform linux/amd64 . .PHONY: base-notebook base-notebook : base-image @@ -16,8 +16,8 @@ base-notebook : base-image conda-lock lock -f environment.yml -p linux-64; \ conda-lock render -k explicit -p linux-64; \ ../generate-packages-list.py conda-linux-64.lock > packages.txt; \ - docker build -t pangeo/base-notebook-datalabs:master . --progress=plain --platform linux/amd64; \ - docker run -w $(TESTDIR) -v $(PWD):$(TESTDIR) pangeo/base-notebook-datalabs:master ./run_tests.sh base-notebook + docker build -t datalabs/base-notebook:master . --progress=plain --platform linux/amd64; \ + docker run -w $(TESTDIR) -v $(PWD):$(TESTDIR) datalabs/base-notebook:master ./run_tests.sh base-notebook .PHONY: pangeo-notebook pangeo-notebook : base-image @@ -26,8 +26,8 @@ pangeo-notebook : base-image conda-lock lock -f environment.yml -f ../base-notebook/environment.yml -f ../base-notebook/environment.yml -p linux-64; \ conda-lock render -k explicit -p linux-64; \ ../generate-packages-list.py conda-linux-64.lock > packages.txt; \ - docker build -t pangeo/pangeo-notebook:master . --progress=plain --platform linux/amd64; \ - docker run -w $(TESTDIR) -v $(PWD):$(TESTDIR) pangeo/pangeo-notebook:master ./run_tests.sh pangeo-notebook + docker build -t datalabs/pangeo-notebook:master . --progress=plain --platform linux/amd64; \ + docker run -w $(TESTDIR) -v $(PWD):$(TESTDIR) datalabs/pangeo-notebook:master ./run_tests.sh pangeo-notebook .PHONY: pytorch-notebook pytorch-notebook : base-image @@ -35,5 +35,5 @@ pytorch-notebook : base-image conda-lock lock -f environment.yml -f ../pangeo-notebook/environment.yml -f ../base-notebook/environment.yml -p linux-64; \ conda-lock render -k explicit -p linux-64; \ ../generate-packages-list.py conda-linux-64.lock > packages.txt; \ - docker build -t pangeo/pytorch-notebook:master . ; \ - docker run -w $(TESTDIR) -v $(PWD):$(TESTDIR) pangeo/pytorch-notebook:master ./run_tests.sh pytorch-notebook + docker build -t datalabs/pytorch-notebook:master . ; \ + docker run -w $(TESTDIR) -v $(PWD):$(TESTDIR) datalabs/pytorch-notebook:master ./run_tests.sh pytorch-notebook From a1d75bb11886690bef81d57fb51bc0b0df60e857 Mon Sep 17 00:00:00 2001 From: eroan-marie Date: Mon, 28 Oct 2024 09:10:01 +0100 Subject: [PATCH 3/3] fix: patch vnc files --- Makefile | 2 +- base-image/Dockerfile | 11 - base-notebook/Dockerfile | 2 +- base-notebook/resources/vnc/install.sh | 2 +- base-notebook/resources/vnc/ui.js | 3792 ++++++++++++------------ base-notebook/resources/vnc/vnc.html | 812 ++--- 6 files changed, 2135 insertions(+), 2486 deletions(-) diff --git a/Makefile b/Makefile index 963b2757..b74e7211 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ base-notebook : base-image conda-lock lock -f environment.yml -p linux-64; \ conda-lock render -k explicit -p linux-64; \ ../generate-packages-list.py conda-linux-64.lock > packages.txt; \ - docker build -t datalabs/base-notebook:master . --progress=plain --platform linux/amd64; \ + docker build -t datalabs/base-notebook:master . --no-cache --progress=plain --platform linux/amd64; \ docker run -w $(TESTDIR) -v $(PWD):$(TESTDIR) datalabs/base-notebook:master ./run_tests.sh base-notebook .PHONY: pangeo-notebook diff --git a/base-image/Dockerfile b/base-image/Dockerfile index 5f89a9c5..bdd9db02 100644 --- a/base-image/Dockerfile +++ b/base-image/Dockerfile @@ -194,17 +194,6 @@ ONBUILD RUN for script in $(find "resources" -type f -name "install.sh"); do \ layer-cleanup.sh; \ done -# ONBUILD RUN echo "Checking for 'resources/install.sh'..." && \ -# if ls resources/install-*.sh 1> /dev/null 2>&1; then \ -# for file in resources/**/install.sh; do \ -# echo "Executing $file" && \ -# chmod +x "$file" && \ -# bash "$file" && \ -# layer-cleanup.sh \ -# rm -f "$file"; \ -# done \ -# fi - # If a postBuild file exists, run it! # After it's done, we try to remove any possible cruft commands there # leave behind under $HOME - particularly stuff that jupyterlab extensions diff --git a/base-notebook/Dockerfile b/base-notebook/Dockerfile index d23774a6..cd7ff3ad 100644 --- a/base-notebook/Dockerfile +++ b/base-notebook/Dockerfile @@ -3,4 +3,4 @@ # files (such as conda-linux-64.lock, start) in this repo. # Refer to the base-image/Dockerfile for documentation. ARG PANGEO_BASE_IMAGE_TAG=master -FROM pangeo/base-image:${PANGEO_BASE_IMAGE_TAG} +FROM datalabs/base-image:${PANGEO_BASE_IMAGE_TAG} diff --git a/base-notebook/resources/vnc/install.sh b/base-notebook/resources/vnc/install.sh index 53b2a754..22227719 100644 --- a/base-notebook/resources/vnc/install.sh +++ b/base-notebook/resources/vnc/install.sh @@ -44,7 +44,7 @@ rm ./turbovnc_3.1_amd64.deb ln -s /opt/TurboVNC/bin/* /usr/local/bin/ mamba install --quiet websockify cp resources/branding/desktop/wallpaper.png /opt/vre/wallpaper.png -cp -r resources/branding/desktop/xfce-perchannel-xml /etc/xdg/xfce4/xfconf/xfce-perchannel-xml +cp -r resources/branding/desktop/xfce-perchannel-xml /etc/xdg/xfce4/xfconf/ # Fix missing rebind.so issue cd /opt && git clone --quiet https://github.com/novnc/websockify.git cd /opt/websockify && make && cp rebind.so /usr/local/bin diff --git a/base-notebook/resources/vnc/ui.js b/base-notebook/resources/vnc/ui.js index 4fe979f3..6b3a442e 100644 --- a/base-notebook/resources/vnc/ui.js +++ b/base-notebook/resources/vnc/ui.js @@ -6,15 +6,12 @@ * See README.md for usage and integration instructions. */ -import * as Log from "../core/util/logging.js"; -import _, { l10n } from "./localization.js"; -import { - isTouchDevice, - isSafari, - hasScrollbarGutter, - dragThreshold, -} from "../core/util/browser.js"; -import { setCapture, getPointerEvent } from "../core/util/events.js"; +import * as Log from '../core/util/logging.js'; +import _, { l10n } from './localization.js'; +import { isTouchDevice, isMac, isIOS, isAndroid, isChromeOS, isSafari, + hasScrollbarGutter, dragThreshold } + from '../core/util/browser.js'; +import { setCapture, getPointerEvent } from '../core/util/events.js'; import KeyTable from "../core/input/keysym.js"; import keysyms from "../core/input/keysymdef.js"; import Keyboard from "../core/input/keyboard.js"; @@ -24,1968 +21,1903 @@ import * as WebUtil from "./webutil.js"; const PAGE_TITLE = "noVNC"; const UI = { - connected: false, - desktopName: "", - - statusTimeout: null, - hideKeyboardTimeout: null, - idleControlbarTimeout: null, - closeControlbarTimeout: null, - - controlbarGrabbed: false, - controlbarDrag: false, - controlbarMouseDownClientY: 0, - controlbarMouseDownOffsetY: 0, - - lastKeyboardinput: null, - defaultKeyboardinputLen: 100, - - inhibitReconnect: true, - reconnectCallback: null, - reconnectPassword: null, - - prime() { - return WebUtil.initSettings().then(() => { - if ( - document.readyState === "interactive" || - document.readyState === "complete" - ) { - return UI.start(); - } - - return new Promise((resolve, reject) => { - document.addEventListener("DOMContentLoaded", () => - UI.start().then(resolve).catch(reject) - ); - }); - }); - }, - - // Render default UI and initialize settings menu - start() { - UI.initSettings(); - - // Translate the DOM - l10n.translateDOM(); - - WebUtil.fetchJSON("./package.json") - .then((packageInfo) => { - Array.from(document.getElementsByClassName("noVNC_version")).forEach( - (el) => (el.innerText = packageInfo.version) - ); - }) - .catch((err) => { - Log.Error("Couldn't fetch package.json: " + err); - Array.from(document.getElementsByClassName("noVNC_version_wrapper")) - .concat( - Array.from( - document.getElementsByClassName("noVNC_version_separator") - ) - ) - .forEach((el) => (el.style.display = "none")); - }); - // Adapt the interface for touch screen devices - if (isTouchDevice) { - document.documentElement.classList.add("noVNC_touch"); - // Remove the address bar - setTimeout(() => window.scrollTo(0, 1), 100); - } - - // Restore control bar position - if (WebUtil.readSetting("controlbar_pos") === "right") { - UI.toggleControlbarSide(); - } - - UI.initFullscreen(); - - // Setup event handlers - UI.addControlbarHandlers(); - UI.addTouchSpecificHandlers(); - UI.addExtraKeysHandlers(); - UI.addMachineHandlers(); - UI.addConnectionControlHandlers(); - UI.addClipboardHandlers(); - UI.addSettingsHandlers(); - document - .getElementById("noVNC_status") - .addEventListener("click", UI.hideStatus); - - // Bootstrap fallback input handler - UI.keyboardinputReset(); - - UI.openControlbar(); - - UI.updateVisualState("init"); - - document.documentElement.classList.remove("noVNC_loading"); - - let autoconnect = WebUtil.getConfigVar("autoconnect", false); - if (autoconnect === "true" || autoconnect == "1") { - autoconnect = true; - UI.connect(); - } else { - autoconnect = false; - // Show the connect panel on first load unless autoconnecting - UI.openConnectPanel(); - } - - return Promise.resolve(UI.rfb); - }, - - initFullscreen() { - // Only show the button if fullscreen is properly supported - // * Safari doesn't support alphanumerical input while in fullscreen - if ( - !isSafari() && - (document.documentElement.requestFullscreen || - document.documentElement.mozRequestFullScreen || - document.documentElement.webkitRequestFullscreen || - document.body.msRequestFullscreen) - ) { - document - .getElementById("noVNC_fullscreen_button") - .classList.remove("noVNC_hidden"); - UI.addFullscreenHandlers(); - } - }, - - initSettings() { - // Logging selection dropdown - const llevels = ["error", "warn", "info", "debug"]; - for (let i = 0; i < llevels.length; i += 1) { - UI.addOption( - document.getElementById("noVNC_setting_logging"), - llevels[i], - llevels[i] - ); - } - - // Settings with immediate effects - UI.initSetting("logging", "warn"); - UI.updateLogging(); - - // if port == 80 (or 443) then it won't be present and should be - // set manually - let port = window.location.port; - if (!port) { - if (window.location.protocol.substring(0, 5) == "https") { - port = 443; - } else if (window.location.protocol.substring(0, 4) == "http") { - port = 80; - } - } - - /* Populate the controls if defaults are provided in the URL */ - UI.initSetting("host", window.location.hostname); - UI.initSetting("port", port); - UI.initSetting("encrypt", window.location.protocol === "https:"); - UI.initSetting("view_clip", false); - //UI.initSetting("resize", "off"); - UI.initSetting("quality", 6); - UI.initSetting("compression", 2); - UI.initSetting("shared", true); - UI.initSetting("view_only", false); - UI.initSetting("show_dot", false); - //UI.initSetting("path", "websockify"); - UI.initSetting("repeaterID", ""); - //UI.initSetting("reconnect", false); - UI.initSetting("reconnect_delay", 5000); - - // ######################## CUSTOM CODE ######################## + connected: false, + desktopName: "", + + statusTimeout: null, + hideKeyboardTimeout: null, + idleControlbarTimeout: null, + closeControlbarTimeout: null, + + controlbarGrabbed: false, + controlbarDrag: false, + controlbarMouseDownClientY: 0, + controlbarMouseDownOffsetY: 0, + + lastKeyboardinput: null, + defaultKeyboardinputLen: 100, + + inhibitReconnect: true, + reconnectCallback: null, + reconnectPassword: null, + + prime() { + return WebUtil.initSettings().then(() => { + if (document.readyState === "interactive" || document.readyState === "complete") { + return UI.start(); + } + + return new Promise((resolve, reject) => { + document.addEventListener('DOMContentLoaded', () => UI.start().then(resolve).catch(reject)); + }); + }); + }, + + // Render default UI and initialize settings menu + start() { + + UI.initSettings(); + + // Translate the DOM + l10n.translateDOM(); + + // We rely on modern APIs which might not be available in an + // insecure context + if (!window.isSecureContext) { + // FIXME: This gets hidden when connecting + UI.showStatus(_("HTTPS is required for full functionality"), 'error'); + } + + // Try to fetch version number + fetch('./package.json') + .then((response) => { + if (!response.ok) { + throw Error("" + response.status + " " + response.statusText); + } + return response.json(); + }) + .then((packageInfo) => { + Array.from(document.getElementsByClassName('noVNC_version')).forEach(el => el.innerText = packageInfo.version); + }) + .catch((err) => { + Log.Error("Couldn't fetch package.json: " + err); + Array.from(document.getElementsByClassName('noVNC_version_wrapper')) + .concat(Array.from(document.getElementsByClassName('noVNC_version_separator'))) + .forEach(el => el.style.display = 'none'); + }); + + // Adapt the interface for touch screen devices + if (isTouchDevice) { + // Remove the address bar + setTimeout(() => window.scrollTo(0, 1), 100); + } + + // Restore control bar position + if (WebUtil.readSetting('controlbar_pos') === 'right') { + UI.toggleControlbarSide(); + } + + UI.initFullscreen(); + + // Setup event handlers + UI.addControlbarHandlers(); + UI.addTouchSpecificHandlers(); + UI.addExtraKeysHandlers(); + UI.addMachineHandlers(); + UI.addConnectionControlHandlers(); + UI.addClipboardHandlers(); + UI.addSettingsHandlers(); + document.getElementById("noVNC_status") + .addEventListener('click', UI.hideStatus); + + // Bootstrap fallback input handler + UI.keyboardinputReset(); + + UI.openControlbar(); + + UI.updateVisualState('init'); + + document.documentElement.classList.remove("noVNC_loading"); + + let autoconnect = WebUtil.getConfigVar('autoconnect', false); + if (autoconnect === 'true' || autoconnect == '1') { + autoconnect = true; + UI.connect(); + } else { + autoconnect = false; + // Show the connect panel on first load unless autoconnecting + UI.openConnectPanel(); + } + + return Promise.resolve(UI.rfb); + }, + + initFullscreen() { + // Only show the button if fullscreen is properly supported + // * Safari doesn't support alphanumerical input while in fullscreen + if (!isSafari() && + (document.documentElement.requestFullscreen || + document.documentElement.mozRequestFullScreen || + document.documentElement.webkitRequestFullscreen || + document.body.msRequestFullscreen)) { + document.getElementById('noVNC_fullscreen_button') + .classList.remove("noVNC_hidden"); + UI.addFullscreenHandlers(); + } + }, + + initSettings() { + // Logging selection dropdown + const llevels = ['error', 'warn', 'info', 'debug']; + for (let i = 0; i < llevels.length; i += 1) { + UI.addOption(document.getElementById('noVNC_setting_logging'), llevels[i], llevels[i]); + } + + // Settings with immediate effects + UI.initSetting('logging', 'warn'); + UI.updateLogging(); + + // if port == 80 (or 443) then it won't be present and should be + // set manually + let port = window.location.port; + if (!port) { + if (window.location.protocol.substring(0, 5) == 'https') { + port = 443; + } else if (window.location.protocol.substring(0, 4) == 'http') { + port = 80; + } + } + + /* Populate the controls if defaults are provided in the URL */ + UI.initSetting('host', window.location.hostname); + UI.initSetting('port', port); + UI.initSetting('encrypt', (window.location.protocol === "https:")); + UI.initSetting('view_clip', false); + //UI.initSetting('resize', 'off'); + UI.initSetting('quality', 6); + UI.initSetting('compression', 2); + UI.initSetting('shared', true); + UI.initSetting('view_only', false); + UI.initSetting('show_dot', false); + //UI.initSetting('path', window.location.pathname.replace(/[^/]*$/, '').substring(1) + 'websockify'); + UI.initSetting('repeaterID', ''); + //UI.initSetting('reconnect', false); + UI.initSetting('reconnect_delay', 5000); + // ######################## CUSTOM CODE ######################## // IMPORTANT: All the init settings from above need to be commented out // Otherwise the changes here will not work - UI.initSetting("resize", "remote"); - UI.initSetting("reconnect", true); + UI.initSetting('resize', 'remote'); + UI.initSetting('reconnect', true); // update settings cannot be used anymore to force settings WebUtil.setSetting( - "path", - window.location.pathname - .substring(0, window.location.pathname.lastIndexOf("/")) - .replace(/^\//, "") + "/websockify" - ); - // ######################## END CUSTOM CODE ######################## - - UI.setupSettingLabels(); - }, - // Adds a link to the label elements on the corresponding input elements - setupSettingLabels() { - const labels = document.getElementsByTagName("LABEL"); - for (let i = 0; i < labels.length; i++) { - const htmlFor = labels[i].htmlFor; - if (htmlFor != "") { - const elem = document.getElementById(htmlFor); - if (elem) elem.label = labels[i]; - } else { - // If 'for' isn't set, use the first input element child - const children = labels[i].children; - for (let j = 0; j < children.length; j++) { - if (children[j].form !== undefined) { - children[j].label = labels[i]; - break; - } + "path", + window.location.pathname + .substring(0, window.location.pathname.lastIndexOf("/")) + .replace(/^\//, "") + "/websockify" + ); // ######################## END CUSTOM CODE ############ + + UI.setupSettingLabels(); + }, + // Adds a link to the label elements on the corresponding input elements + setupSettingLabels() { + const labels = document.getElementsByTagName('LABEL'); + for (let i = 0; i < labels.length; i++) { + const htmlFor = labels[i].htmlFor; + if (htmlFor != '') { + const elem = document.getElementById(htmlFor); + if (elem) elem.label = labels[i]; + } else { + // If 'for' isn't set, use the first input element child + const children = labels[i].children; + for (let j = 0; j < children.length; j++) { + if (children[j].form !== undefined) { + children[j].label = labels[i]; + break; + } + } + } } - } - } - }, - - /* ------^------- - * /INIT - * ============== - * EVENT HANDLERS - * ------v------*/ - - addControlbarHandlers() { - document - .getElementById("noVNC_control_bar") - .addEventListener("mousemove", UI.activateControlbar); - document - .getElementById("noVNC_control_bar") - .addEventListener("mouseup", UI.activateControlbar); - document - .getElementById("noVNC_control_bar") - .addEventListener("mousedown", UI.activateControlbar); - document - .getElementById("noVNC_control_bar") - .addEventListener("keydown", UI.activateControlbar); - - document - .getElementById("noVNC_control_bar") - .addEventListener("mousedown", UI.keepControlbar); - document - .getElementById("noVNC_control_bar") - .addEventListener("keydown", UI.keepControlbar); - - document - .getElementById("noVNC_view_drag_button") - .addEventListener("click", UI.toggleViewDrag); - - document - .getElementById("noVNC_control_bar_handle") - .addEventListener("mousedown", UI.controlbarHandleMouseDown); - document - .getElementById("noVNC_control_bar_handle") - .addEventListener("mouseup", UI.controlbarHandleMouseUp); - document - .getElementById("noVNC_control_bar_handle") - .addEventListener("mousemove", UI.dragControlbarHandle); - // resize events aren't available for elements - window.addEventListener("resize", UI.updateControlbarHandle); - - const exps = document.getElementsByClassName("noVNC_expander"); - for (let i = 0; i < exps.length; i++) { - exps[i].addEventListener("click", UI.toggleExpander); - } - }, - - addTouchSpecificHandlers() { - document - .getElementById("noVNC_keyboard_button") - .addEventListener("click", UI.toggleVirtualKeyboard); - - UI.touchKeyboard = new Keyboard( - document.getElementById("noVNC_keyboardinput") - ); - UI.touchKeyboard.onkeyevent = UI.keyEvent; - UI.touchKeyboard.grab(); - document - .getElementById("noVNC_keyboardinput") - .addEventListener("input", UI.keyInput); - document - .getElementById("noVNC_keyboardinput") - .addEventListener("focus", UI.onfocusVirtualKeyboard); - document - .getElementById("noVNC_keyboardinput") - .addEventListener("blur", UI.onblurVirtualKeyboard); - document - .getElementById("noVNC_keyboardinput") - .addEventListener("submit", () => false); - - document.documentElement.addEventListener( - "mousedown", - UI.keepVirtualKeyboard, - true - ); - - document - .getElementById("noVNC_control_bar") - .addEventListener("touchstart", UI.activateControlbar); - document - .getElementById("noVNC_control_bar") - .addEventListener("touchmove", UI.activateControlbar); - document - .getElementById("noVNC_control_bar") - .addEventListener("touchend", UI.activateControlbar); - document - .getElementById("noVNC_control_bar") - .addEventListener("input", UI.activateControlbar); - - document - .getElementById("noVNC_control_bar") - .addEventListener("touchstart", UI.keepControlbar); - document - .getElementById("noVNC_control_bar") - .addEventListener("input", UI.keepControlbar); - - document - .getElementById("noVNC_control_bar_handle") - .addEventListener("touchstart", UI.controlbarHandleMouseDown); - document - .getElementById("noVNC_control_bar_handle") - .addEventListener("touchend", UI.controlbarHandleMouseUp); - document - .getElementById("noVNC_control_bar_handle") - .addEventListener("touchmove", UI.dragControlbarHandle); - }, - - addExtraKeysHandlers() { - document - .getElementById("noVNC_toggle_extra_keys_button") - .addEventListener("click", UI.toggleExtraKeys); - document - .getElementById("noVNC_toggle_ctrl_button") - .addEventListener("click", UI.toggleCtrl); - document - .getElementById("noVNC_toggle_windows_button") - .addEventListener("click", UI.toggleWindows); - document - .getElementById("noVNC_toggle_alt_button") - .addEventListener("click", UI.toggleAlt); - document - .getElementById("noVNC_send_tab_button") - .addEventListener("click", UI.sendTab); - document - .getElementById("noVNC_send_esc_button") - .addEventListener("click", UI.sendEsc); - document - .getElementById("noVNC_send_ctrl_alt_del_button") - .addEventListener("click", UI.sendCtrlAltDel); - }, - - addMachineHandlers() { - document - .getElementById("noVNC_shutdown_button") - .addEventListener("click", () => UI.rfb.machineShutdown()); - document - .getElementById("noVNC_reboot_button") - .addEventListener("click", () => UI.rfb.machineReboot()); - document - .getElementById("noVNC_reset_button") - .addEventListener("click", () => UI.rfb.machineReset()); - document - .getElementById("noVNC_power_button") - .addEventListener("click", UI.togglePowerPanel); - }, - - addConnectionControlHandlers() { - document - .getElementById("noVNC_disconnect_button") - .addEventListener("click", UI.disconnect); - document - .getElementById("noVNC_connect_button") - .addEventListener("click", UI.connect); - document - .getElementById("noVNC_cancel_reconnect_button") - .addEventListener("click", UI.cancelReconnect); - - document - .getElementById("noVNC_credentials_button") - .addEventListener("click", UI.setCredentials); - }, - - addClipboardHandlers() { - document - .getElementById("noVNC_clipboard_button") - .addEventListener("click", UI.toggleClipboardPanel); - document - .getElementById("noVNC_clipboard_text") - .addEventListener("change", UI.clipboardSend); - document - .getElementById("noVNC_clipboard_clear_button") - .addEventListener("click", UI.clipboardClear); - }, - - // Add a call to save settings when the element changes, - // unless the optional parameter changeFunc is used instead. - addSettingChangeHandler(name, changeFunc) { - const settingElem = document.getElementById("noVNC_setting_" + name); - if (changeFunc === undefined) { - changeFunc = () => UI.saveSetting(name); - } - settingElem.addEventListener("change", changeFunc); - }, - - addSettingsHandlers() { - document - .getElementById("noVNC_settings_button") - .addEventListener("click", UI.toggleSettingsPanel); - - UI.addSettingChangeHandler("encrypt"); - UI.addSettingChangeHandler("resize"); - UI.addSettingChangeHandler("resize", UI.applyResizeMode); - UI.addSettingChangeHandler("resize", UI.updateViewClip); - UI.addSettingChangeHandler("quality"); - UI.addSettingChangeHandler("quality", UI.updateQuality); - UI.addSettingChangeHandler("compression"); - UI.addSettingChangeHandler("compression", UI.updateCompression); - UI.addSettingChangeHandler("view_clip"); - UI.addSettingChangeHandler("view_clip", UI.updateViewClip); - UI.addSettingChangeHandler("shared"); - UI.addSettingChangeHandler("view_only"); - UI.addSettingChangeHandler("view_only", UI.updateViewOnly); - UI.addSettingChangeHandler("show_dot"); - UI.addSettingChangeHandler("show_dot", UI.updateShowDotCursor); - UI.addSettingChangeHandler("host"); - UI.addSettingChangeHandler("port"); - UI.addSettingChangeHandler("path"); - UI.addSettingChangeHandler("repeaterID"); - UI.addSettingChangeHandler("logging"); - UI.addSettingChangeHandler("logging", UI.updateLogging); - UI.addSettingChangeHandler("reconnect"); - UI.addSettingChangeHandler("reconnect_delay"); - }, - - addFullscreenHandlers() { - document - .getElementById("noVNC_fullscreen_button") - .addEventListener("click", UI.toggleFullscreen); - - window.addEventListener("fullscreenchange", UI.updateFullscreenButton); - window.addEventListener("mozfullscreenchange", UI.updateFullscreenButton); - window.addEventListener( - "webkitfullscreenchange", - UI.updateFullscreenButton - ); - window.addEventListener("msfullscreenchange", UI.updateFullscreenButton); - }, - - /* ------^------- - * /EVENT HANDLERS - * ============== - * VISUAL - * ------v------*/ - - // Disable/enable controls depending on connection state - updateVisualState(state) { - document.documentElement.classList.remove("noVNC_connecting"); - document.documentElement.classList.remove("noVNC_connected"); - document.documentElement.classList.remove("noVNC_disconnecting"); - document.documentElement.classList.remove("noVNC_reconnecting"); - - const transitionElem = document.getElementById("noVNC_transition_text"); - switch (state) { - case "init": - break; - case "connecting": - transitionElem.textContent = _("Connecting..."); - document.documentElement.classList.add("noVNC_connecting"); - break; - case "connected": - document.documentElement.classList.add("noVNC_connected"); - break; - case "disconnecting": - transitionElem.textContent = _("Disconnecting..."); - document.documentElement.classList.add("noVNC_disconnecting"); - break; - case "disconnected": - break; - case "reconnecting": - transitionElem.textContent = _("Reconnecting..."); - document.documentElement.classList.add("noVNC_reconnecting"); - break; - default: - Log.Error("Invalid visual state: " + state); - UI.showStatus(_("Internal error"), "error"); - return; - } - - if (UI.connected) { - UI.updateViewClip(); - - UI.disableSetting("encrypt"); - UI.disableSetting("shared"); - UI.disableSetting("host"); - UI.disableSetting("port"); - UI.disableSetting("path"); - UI.disableSetting("repeaterID"); - - // Hide the controlbar after 2 seconds - UI.closeControlbarTimeout = setTimeout(UI.closeControlbar, 2000); - } else { - UI.enableSetting("encrypt"); - UI.enableSetting("shared"); - UI.enableSetting("host"); - UI.enableSetting("port"); - UI.enableSetting("path"); - UI.enableSetting("repeaterID"); - UI.updatePowerButton(); - UI.keepControlbar(); - } - - // State change closes dialogs as they may not be relevant - // anymore - UI.closeAllPanels(); - document - .getElementById("noVNC_credentials_dlg") - .classList.remove("noVNC_open"); - }, - - showStatus(text, statusType, time) { - const statusElem = document.getElementById("noVNC_status"); - - if (typeof statusType === "undefined") { - statusType = "normal"; - } - - // Don't overwrite more severe visible statuses and never - // errors. Only shows the first error. - if (statusElem.classList.contains("noVNC_open")) { - if (statusElem.classList.contains("noVNC_status_error")) { - return; - } - if ( - statusElem.classList.contains("noVNC_status_warn") && - statusType === "normal" - ) { - return; - } - } - - clearTimeout(UI.statusTimeout); - - switch (statusType) { - case "error": - statusElem.classList.remove("noVNC_status_warn"); - statusElem.classList.remove("noVNC_status_normal"); - statusElem.classList.add("noVNC_status_error"); - break; - case "warning": - case "warn": - statusElem.classList.remove("noVNC_status_error"); - statusElem.classList.remove("noVNC_status_normal"); - statusElem.classList.add("noVNC_status_warn"); - break; - case "normal": - case "info": - default: - statusElem.classList.remove("noVNC_status_error"); - statusElem.classList.remove("noVNC_status_warn"); - statusElem.classList.add("noVNC_status_normal"); - break; - } - - statusElem.textContent = text; - statusElem.classList.add("noVNC_open"); - - // If no time was specified, show the status for 1.5 seconds - if (typeof time === "undefined") { - time = 1500; - } - - // Error messages do not timeout - if (statusType !== "error") { - UI.statusTimeout = window.setTimeout(UI.hideStatus, time); - } - }, - - hideStatus() { - clearTimeout(UI.statusTimeout); - document.getElementById("noVNC_status").classList.remove("noVNC_open"); - }, - - activateControlbar(event) { - clearTimeout(UI.idleControlbarTimeout); - // We manipulate the anchor instead of the actual control - // bar in order to avoid creating new a stacking group - document - .getElementById("noVNC_control_bar_anchor") - .classList.remove("noVNC_idle"); - UI.idleControlbarTimeout = window.setTimeout(UI.idleControlbar, 2000); - }, - - idleControlbar() { - // Don't fade if a child of the control bar has focus - if ( - document - .getElementById("noVNC_control_bar") - .contains(document.activeElement) && - document.hasFocus() - ) { - UI.activateControlbar(); - return; - } - - document - .getElementById("noVNC_control_bar_anchor") - .classList.add("noVNC_idle"); - }, - - keepControlbar() { - clearTimeout(UI.closeControlbarTimeout); - }, - - openControlbar() { - document.getElementById("noVNC_control_bar").classList.add("noVNC_open"); - }, - - closeControlbar() { - UI.closeAllPanels(); - document.getElementById("noVNC_control_bar").classList.remove("noVNC_open"); - UI.rfb.focus(); - }, - - toggleControlbar() { - if ( - document - .getElementById("noVNC_control_bar") - .classList.contains("noVNC_open") - ) { - UI.closeControlbar(); - } else { - UI.openControlbar(); - } - }, - - toggleControlbarSide() { - // Temporarily disable animation, if bar is displayed, to avoid weird - // movement. The transitionend-event will not fire when display=none. - const bar = document.getElementById("noVNC_control_bar"); - const barDisplayStyle = window.getComputedStyle(bar).display; - if (barDisplayStyle !== "none") { - bar.style.transitionDuration = "0s"; - bar.addEventListener( - "transitionend", - () => (bar.style.transitionDuration = "") - ); - } - - const anchor = document.getElementById("noVNC_control_bar_anchor"); - if (anchor.classList.contains("noVNC_right")) { - WebUtil.writeSetting("controlbar_pos", "left"); - anchor.classList.remove("noVNC_right"); - } else { - WebUtil.writeSetting("controlbar_pos", "right"); - anchor.classList.add("noVNC_right"); - } - - // Consider this a movement of the handle - UI.controlbarDrag = true; - }, - - showControlbarHint(show) { - const hint = document.getElementById("noVNC_control_bar_hint"); - if (show) { - hint.classList.add("noVNC_active"); - } else { - hint.classList.remove("noVNC_active"); - } - }, - - dragControlbarHandle(e) { - if (!UI.controlbarGrabbed) return; - - const ptr = getPointerEvent(e); - - const anchor = document.getElementById("noVNC_control_bar_anchor"); - if (ptr.clientX < window.innerWidth * 0.1) { - if (anchor.classList.contains("noVNC_right")) { - UI.toggleControlbarSide(); - } - } else if (ptr.clientX > window.innerWidth * 0.9) { - if (!anchor.classList.contains("noVNC_right")) { - UI.toggleControlbarSide(); - } - } - - if (!UI.controlbarDrag) { - const dragDistance = Math.abs( - ptr.clientY - UI.controlbarMouseDownClientY - ); - - if (dragDistance < dragThreshold) return; - - UI.controlbarDrag = true; - } - - const eventY = ptr.clientY - UI.controlbarMouseDownOffsetY; - - UI.moveControlbarHandle(eventY); - - e.preventDefault(); - e.stopPropagation(); - UI.keepControlbar(); - UI.activateControlbar(); - }, - - // Move the handle but don't allow any position outside the bounds - moveControlbarHandle(viewportRelativeY) { - const handle = document.getElementById("noVNC_control_bar_handle"); - const handleHeight = handle.getBoundingClientRect().height; - const controlbarBounds = document - .getElementById("noVNC_control_bar") - .getBoundingClientRect(); - const margin = 10; - - // These heights need to be non-zero for the below logic to work - if (handleHeight === 0 || controlbarBounds.height === 0) { - return; - } - - let newY = viewportRelativeY; - - // Check if the coordinates are outside the control bar - if (newY < controlbarBounds.top + margin) { - // Force coordinates to be below the top of the control bar - newY = controlbarBounds.top + margin; - } else if ( - newY > - controlbarBounds.top + controlbarBounds.height - handleHeight - margin - ) { - // Force coordinates to be above the bottom of the control bar - newY = - controlbarBounds.top + controlbarBounds.height - handleHeight - margin; - } - - // Corner case: control bar too small for stable position - if (controlbarBounds.height < handleHeight + margin * 2) { - newY = - controlbarBounds.top + (controlbarBounds.height - handleHeight) / 2; - } - - // The transform needs coordinates that are relative to the parent - const parentRelativeY = newY - controlbarBounds.top; - handle.style.transform = "translateY(" + parentRelativeY + "px)"; - }, - - updateControlbarHandle() { - // Since the control bar is fixed on the viewport and not the page, - // the move function expects coordinates relative the the viewport. - const handle = document.getElementById("noVNC_control_bar_handle"); - const handleBounds = handle.getBoundingClientRect(); - UI.moveControlbarHandle(handleBounds.top); - }, - - controlbarHandleMouseUp(e) { - if (e.type == "mouseup" && e.button != 0) return; - - // mouseup and mousedown on the same place toggles the controlbar - if (UI.controlbarGrabbed && !UI.controlbarDrag) { - UI.toggleControlbar(); - e.preventDefault(); - e.stopPropagation(); - UI.keepControlbar(); - UI.activateControlbar(); - } - UI.controlbarGrabbed = false; - UI.showControlbarHint(false); - }, - - controlbarHandleMouseDown(e) { - if (e.type == "mousedown" && e.button != 0) return; - - const ptr = getPointerEvent(e); - - const handle = document.getElementById("noVNC_control_bar_handle"); - const bounds = handle.getBoundingClientRect(); - - // Touch events have implicit capture - if (e.type === "mousedown") { - setCapture(handle); - } - - UI.controlbarGrabbed = true; - UI.controlbarDrag = false; - - UI.showControlbarHint(true); - - UI.controlbarMouseDownClientY = ptr.clientY; - UI.controlbarMouseDownOffsetY = ptr.clientY - bounds.top; - e.preventDefault(); - e.stopPropagation(); - UI.keepControlbar(); - UI.activateControlbar(); - }, - - toggleExpander(e) { - if (this.classList.contains("noVNC_open")) { - this.classList.remove("noVNC_open"); - } else { - this.classList.add("noVNC_open"); - } - }, - - /* ------^------- - * /VISUAL - * ============== - * SETTINGS - * ------v------*/ - - // Initial page load read/initialization of settings - initSetting(name, defVal) { - // Check Query string followed by cookie - let val = WebUtil.getConfigVar(name); - if (val === null) { - val = WebUtil.readSetting(name, defVal); - } - WebUtil.setSetting(name, val); - UI.updateSetting(name); - return val; - }, - - // Set the new value, update and disable form control setting - forceSetting(name, val) { - WebUtil.setSetting(name, val); - UI.updateSetting(name); - UI.disableSetting(name); - }, - - // Update cookie and form control setting. If value is not set, then - // updates from control to current cookie setting. - updateSetting(name) { - // Update the settings control - let value = UI.getSetting(name); - - const ctrl = document.getElementById("noVNC_setting_" + name); - if (ctrl.type === "checkbox") { - ctrl.checked = value; - } else if (typeof ctrl.options !== "undefined") { - for (let i = 0; i < ctrl.options.length; i += 1) { - if (ctrl.options[i].value === value) { - ctrl.selectedIndex = i; - break; - } - } - } else { - /*Weird IE9 error leads to 'null' appearring - in textboxes instead of ''.*/ - if (value === null) { - value = ""; - } - ctrl.value = value; - } - }, - - // Save control setting to cookie - saveSetting(name) { - const ctrl = document.getElementById("noVNC_setting_" + name); - let val; - if (ctrl.type === "checkbox") { - val = ctrl.checked; - } else if (typeof ctrl.options !== "undefined") { - val = ctrl.options[ctrl.selectedIndex].value; - } else { - val = ctrl.value; - } - WebUtil.writeSetting(name, val); - //Log.Debug("Setting saved '" + name + "=" + val + "'"); - return val; - }, - - // Read form control compatible setting from cookie - getSetting(name) { - const ctrl = document.getElementById("noVNC_setting_" + name); - let val = WebUtil.readSetting(name); - if ( - typeof val !== "undefined" && - val !== null && - ctrl.type === "checkbox" - ) { - if (val.toString().toLowerCase() in { 0: 1, no: 1, false: 1 }) { - val = false; - } else { - val = true; - } - } - return val; - }, - - // These helpers compensate for the lack of parent-selectors and - // previous-sibling-selectors in CSS which are needed when we want to - // disable the labels that belong to disabled input elements. - disableSetting(name) { - const ctrl = document.getElementById("noVNC_setting_" + name); - ctrl.disabled = true; - ctrl.label.classList.add("noVNC_disabled"); - }, - - enableSetting(name) { - const ctrl = document.getElementById("noVNC_setting_" + name); - ctrl.disabled = false; - ctrl.label.classList.remove("noVNC_disabled"); - }, - - /* ------^------- - * /SETTINGS - * ============== - * PANELS - * ------v------*/ - - closeAllPanels() { - UI.closeSettingsPanel(); - UI.closePowerPanel(); - UI.closeClipboardPanel(); - UI.closeExtraKeys(); - }, - - /* ------^------- - * /PANELS - * ============== - * SETTINGS (panel) - * ------v------*/ - - openSettingsPanel() { - UI.closeAllPanels(); - UI.openControlbar(); - - // Refresh UI elements from saved cookies - UI.updateSetting("encrypt"); - UI.updateSetting("view_clip"); - UI.updateSetting("resize"); - UI.updateSetting("quality"); - UI.updateSetting("compression"); - UI.updateSetting("shared"); - UI.updateSetting("view_only"); - UI.updateSetting("path"); - UI.updateSetting("repeaterID"); - UI.updateSetting("logging"); - UI.updateSetting("reconnect"); - UI.updateSetting("reconnect_delay"); - - document.getElementById("noVNC_settings").classList.add("noVNC_open"); - document - .getElementById("noVNC_settings_button") - .classList.add("noVNC_selected"); - }, - - closeSettingsPanel() { - document.getElementById("noVNC_settings").classList.remove("noVNC_open"); - document - .getElementById("noVNC_settings_button") - .classList.remove("noVNC_selected"); - }, - - toggleSettingsPanel() { - if ( - document.getElementById("noVNC_settings").classList.contains("noVNC_open") - ) { - UI.closeSettingsPanel(); - } else { - UI.openSettingsPanel(); - } - }, - - /* ------^------- - * /SETTINGS - * ============== - * POWER - * ------v------*/ - - openPowerPanel() { - UI.closeAllPanels(); - UI.openControlbar(); - - document.getElementById("noVNC_power").classList.add("noVNC_open"); - document - .getElementById("noVNC_power_button") - .classList.add("noVNC_selected"); - }, - - closePowerPanel() { - document.getElementById("noVNC_power").classList.remove("noVNC_open"); - document - .getElementById("noVNC_power_button") - .classList.remove("noVNC_selected"); - }, - - togglePowerPanel() { - if ( - document.getElementById("noVNC_power").classList.contains("noVNC_open") - ) { - UI.closePowerPanel(); - } else { - UI.openPowerPanel(); - } - }, - - // Disable/enable power button - updatePowerButton() { - if (UI.connected && UI.rfb.capabilities.power && !UI.rfb.viewOnly) { - document - .getElementById("noVNC_power_button") - .classList.remove("noVNC_hidden"); - } else { - document - .getElementById("noVNC_power_button") - .classList.add("noVNC_hidden"); - // Close power panel if open - UI.closePowerPanel(); - } - }, - - /* ------^------- - * /POWER - * ============== - * CLIPBOARD - * ------v------*/ - - openClipboardPanel() { - UI.closeAllPanels(); - UI.openControlbar(); - - document.getElementById("noVNC_clipboard").classList.add("noVNC_open"); - document - .getElementById("noVNC_clipboard_button") - .classList.add("noVNC_selected"); - }, - - closeClipboardPanel() { - document.getElementById("noVNC_clipboard").classList.remove("noVNC_open"); - document - .getElementById("noVNC_clipboard_button") - .classList.remove("noVNC_selected"); - }, - - toggleClipboardPanel() { - if ( - document - .getElementById("noVNC_clipboard") - .classList.contains("noVNC_open") - ) { - UI.closeClipboardPanel(); - } else { - UI.openClipboardPanel(); - } - }, - - clipboardReceive(e) { - Log.Debug(">> UI.clipboardReceive: " + e.detail.text.substr(0, 40) + "..."); - document.getElementById("noVNC_clipboard_text").value = e.detail.text; - Log.Debug("<< UI.clipboardReceive"); - }, - - clipboardClear() { - document.getElementById("noVNC_clipboard_text").value = ""; - UI.rfb.clipboardPasteFrom(""); - }, - - clipboardSend() { - const text = document.getElementById("noVNC_clipboard_text").value; - Log.Debug(">> UI.clipboardSend: " + text.substr(0, 40) + "..."); - UI.rfb.clipboardPasteFrom(text); - Log.Debug("<< UI.clipboardSend"); - }, - - /* ------^------- - * /CLIPBOARD - * ============== - * CONNECTION - * ------v------*/ - - openConnectPanel() { - document.getElementById("noVNC_connect_dlg").classList.add("noVNC_open"); - }, - - closeConnectPanel() { - document.getElementById("noVNC_connect_dlg").classList.remove("noVNC_open"); - }, - - connect(event, password) { - // Ignore when rfb already exists - if (typeof UI.rfb !== "undefined") { - return; - } - - const host = UI.getSetting("host"); - const port = UI.getSetting("port"); - const path = UI.getSetting("path"); - - if (typeof password === "undefined") { - password = WebUtil.getConfigVar("password"); - UI.reconnectPassword = password; - } - - if (password === null) { - password = undefined; - } - - UI.hideStatus(); - - if (!host) { - Log.Error("Can't connect when host is: " + host); - UI.showStatus(_("Must set host"), "error"); - return; - } - - UI.closeConnectPanel(); - - UI.updateVisualState("connecting"); - - let url; - - url = UI.getSetting("encrypt") ? "wss" : "ws"; - - url += "://" + host; - if (port) { - url += ":" + port; - } - url += "/" + path; - - UI.rfb = new RFB(document.getElementById("noVNC_container"), url, { - shared: UI.getSetting("shared"), - repeaterID: UI.getSetting("repeaterID"), - credentials: { password: password }, - }); - UI.rfb.addEventListener("connect", UI.connectFinished); - UI.rfb.addEventListener("disconnect", UI.disconnectFinished); - UI.rfb.addEventListener("credentialsrequired", UI.credentials); - UI.rfb.addEventListener("securityfailure", UI.securityFailed); - UI.rfb.addEventListener("capabilities", UI.updatePowerButton); - UI.rfb.addEventListener("clipboard", UI.clipboardReceive); - UI.rfb.addEventListener("bell", UI.bell); - UI.rfb.addEventListener("desktopname", UI.updateDesktopName); - UI.rfb.clipViewport = UI.getSetting("view_clip"); - UI.rfb.scaleViewport = UI.getSetting("resize") === "scale"; - UI.rfb.resizeSession = UI.getSetting("resize") === "remote"; - UI.rfb.qualityLevel = parseInt(UI.getSetting("quality")); - UI.rfb.compressionLevel = parseInt(UI.getSetting("compression")); - UI.rfb.showDotCursor = UI.getSetting("show_dot"); - - UI.updateViewOnly(); // requires UI.rfb - - // ######################## CUSTOM CODE ######################## - var clipboard = document.getElementById("clipboard"); - var controlBar = document.getElementById("noVNC_control_bar"); - var controlBarClipboard = document.getElementById("noVNC_clipboard_text"); - - UI.rfb.addEventListener("clipboard", function (e) { - clipboard.value = e.detail.text; - }); - - UI.rfb.addEventListener("connect", function (e) { - var viewer = document.getElementsByTagName("canvas")[0]; - - document.body.addEventListener("paste", function (e) { - try { - console.log("paste"); - if (controlBarClipboard.classList.contains("noVNC_open")) { - return; - } - if (UI.rfb != null) { - text = e.clipboardData.getData("text"); - console.log("copy clipboard from local to vnc: " + text); - controlBarClipboard.value = text; - UI.rfb.clipboardPasteFrom(text); - } - } catch (error) { - console.error(error); + }, + +/* ------^------- +* /INIT +* ============== +* EVENT HANDLERS +* ------v------*/ + + addControlbarHandlers() { + document.getElementById("noVNC_control_bar") + .addEventListener('mousemove', UI.activateControlbar); + document.getElementById("noVNC_control_bar") + .addEventListener('mouseup', UI.activateControlbar); + document.getElementById("noVNC_control_bar") + .addEventListener('mousedown', UI.activateControlbar); + document.getElementById("noVNC_control_bar") + .addEventListener('keydown', UI.activateControlbar); + + document.getElementById("noVNC_control_bar") + .addEventListener('mousedown', UI.keepControlbar); + document.getElementById("noVNC_control_bar") + .addEventListener('keydown', UI.keepControlbar); + + document.getElementById("noVNC_view_drag_button") + .addEventListener('click', UI.toggleViewDrag); + + document.getElementById("noVNC_control_bar_handle") + .addEventListener('mousedown', UI.controlbarHandleMouseDown); + document.getElementById("noVNC_control_bar_handle") + .addEventListener('mouseup', UI.controlbarHandleMouseUp); + document.getElementById("noVNC_control_bar_handle") + .addEventListener('mousemove', UI.dragControlbarHandle); + // resize events aren't available for elements + window.addEventListener('resize', UI.updateControlbarHandle); + + const exps = document.getElementsByClassName("noVNC_expander"); + for (let i = 0;i < exps.length;i++) { + exps[i].addEventListener('click', UI.toggleExpander); + } + }, + + addTouchSpecificHandlers() { + document.getElementById("noVNC_keyboard_button") + .addEventListener('click', UI.toggleVirtualKeyboard); + + UI.touchKeyboard = new Keyboard(document.getElementById('noVNC_keyboardinput')); + UI.touchKeyboard.onkeyevent = UI.keyEvent; + UI.touchKeyboard.grab(); + document.getElementById("noVNC_keyboardinput") + .addEventListener('input', UI.keyInput); + document.getElementById("noVNC_keyboardinput") + .addEventListener('focus', UI.onfocusVirtualKeyboard); + document.getElementById("noVNC_keyboardinput") + .addEventListener('blur', UI.onblurVirtualKeyboard); + document.getElementById("noVNC_keyboardinput") + .addEventListener('submit', () => false); + + document.documentElement + .addEventListener('mousedown', UI.keepVirtualKeyboard, true); + + document.getElementById("noVNC_control_bar") + .addEventListener('touchstart', UI.activateControlbar); + document.getElementById("noVNC_control_bar") + .addEventListener('touchmove', UI.activateControlbar); + document.getElementById("noVNC_control_bar") + .addEventListener('touchend', UI.activateControlbar); + document.getElementById("noVNC_control_bar") + .addEventListener('input', UI.activateControlbar); + + document.getElementById("noVNC_control_bar") + .addEventListener('touchstart', UI.keepControlbar); + document.getElementById("noVNC_control_bar") + .addEventListener('input', UI.keepControlbar); + + document.getElementById("noVNC_control_bar_handle") + .addEventListener('touchstart', UI.controlbarHandleMouseDown); + document.getElementById("noVNC_control_bar_handle") + .addEventListener('touchend', UI.controlbarHandleMouseUp); + document.getElementById("noVNC_control_bar_handle") + .addEventListener('touchmove', UI.dragControlbarHandle); + }, + + addExtraKeysHandlers() { + document.getElementById("noVNC_toggle_extra_keys_button") + .addEventListener('click', UI.toggleExtraKeys); + document.getElementById("noVNC_toggle_ctrl_button") + .addEventListener('click', UI.toggleCtrl); + document.getElementById("noVNC_toggle_windows_button") + .addEventListener('click', UI.toggleWindows); + document.getElementById("noVNC_toggle_alt_button") + .addEventListener('click', UI.toggleAlt); + document.getElementById("noVNC_send_tab_button") + .addEventListener('click', UI.sendTab); + document.getElementById("noVNC_send_esc_button") + .addEventListener('click', UI.sendEsc); + document.getElementById("noVNC_send_ctrl_alt_del_button") + .addEventListener('click', UI.sendCtrlAltDel); + }, + + addMachineHandlers() { + document.getElementById("noVNC_shutdown_button") + .addEventListener('click', () => UI.rfb.machineShutdown()); + document.getElementById("noVNC_reboot_button") + .addEventListener('click', () => UI.rfb.machineReboot()); + document.getElementById("noVNC_reset_button") + .addEventListener('click', () => UI.rfb.machineReset()); + document.getElementById("noVNC_power_button") + .addEventListener('click', UI.togglePowerPanel); + }, + + addConnectionControlHandlers() { + document.getElementById("noVNC_disconnect_button") + .addEventListener('click', UI.disconnect); + document.getElementById("noVNC_connect_button") + .addEventListener('click', UI.connect); + document.getElementById("noVNC_cancel_reconnect_button") + .addEventListener('click', UI.cancelReconnect); + + document.getElementById("noVNC_approve_server_button") + .addEventListener('click', UI.approveServer); + document.getElementById("noVNC_reject_server_button") + .addEventListener('click', UI.rejectServer); + document.getElementById("noVNC_credentials_button") + .addEventListener('click', UI.setCredentials); + }, + + addClipboardHandlers() { + document.getElementById("noVNC_clipboard_button") + .addEventListener('click', UI.toggleClipboardPanel); + document.getElementById("noVNC_clipboard_text") + .addEventListener('change', UI.clipboardSend); + }, + + // Add a call to save settings when the element changes, + // unless the optional parameter changeFunc is used instead. + addSettingChangeHandler(name, changeFunc) { + const settingElem = document.getElementById("noVNC_setting_" + name); + if (changeFunc === undefined) { + changeFunc = () => UI.saveSetting(name); + } + settingElem.addEventListener('change', changeFunc); + }, + + addSettingsHandlers() { + document.getElementById("noVNC_settings_button") + .addEventListener('click', UI.toggleSettingsPanel); + + UI.addSettingChangeHandler('encrypt'); + UI.addSettingChangeHandler('resize'); + UI.addSettingChangeHandler('resize', UI.applyResizeMode); + UI.addSettingChangeHandler('resize', UI.updateViewClip); + UI.addSettingChangeHandler('quality'); + UI.addSettingChangeHandler('quality', UI.updateQuality); + UI.addSettingChangeHandler('compression'); + UI.addSettingChangeHandler('compression', UI.updateCompression); + UI.addSettingChangeHandler('view_clip'); + UI.addSettingChangeHandler('view_clip', UI.updateViewClip); + UI.addSettingChangeHandler('shared'); + UI.addSettingChangeHandler('view_only'); + UI.addSettingChangeHandler('view_only', UI.updateViewOnly); + UI.addSettingChangeHandler('show_dot'); + UI.addSettingChangeHandler('show_dot', UI.updateShowDotCursor); + UI.addSettingChangeHandler('host'); + UI.addSettingChangeHandler('port'); + UI.addSettingChangeHandler('path'); + UI.addSettingChangeHandler('repeaterID'); + UI.addSettingChangeHandler('logging'); + UI.addSettingChangeHandler('logging', UI.updateLogging); + UI.addSettingChangeHandler('reconnect'); + UI.addSettingChangeHandler('reconnect_delay'); + }, + + addFullscreenHandlers() { + document.getElementById("noVNC_fullscreen_button") + .addEventListener('click', UI.toggleFullscreen); + + window.addEventListener('fullscreenchange', UI.updateFullscreenButton); + window.addEventListener('mozfullscreenchange', UI.updateFullscreenButton); + window.addEventListener('webkitfullscreenchange', UI.updateFullscreenButton); + window.addEventListener('msfullscreenchange', UI.updateFullscreenButton); + }, + +/* ------^------- + * /EVENT HANDLERS + * ============== + * VISUAL + * ------v------*/ + + // Disable/enable controls depending on connection state + updateVisualState(state) { + + document.documentElement.classList.remove("noVNC_connecting"); + document.documentElement.classList.remove("noVNC_connected"); + document.documentElement.classList.remove("noVNC_disconnecting"); + document.documentElement.classList.remove("noVNC_reconnecting"); + + const transitionElem = document.getElementById("noVNC_transition_text"); + switch (state) { + case 'init': + break; + case 'connecting': + transitionElem.textContent = _("Connecting..."); + document.documentElement.classList.add("noVNC_connecting"); + break; + case 'connected': + document.documentElement.classList.add("noVNC_connected"); + break; + case 'disconnecting': + transitionElem.textContent = _("Disconnecting..."); + document.documentElement.classList.add("noVNC_disconnecting"); + break; + case 'disconnected': + break; + case 'reconnecting': + transitionElem.textContent = _("Reconnecting..."); + document.documentElement.classList.add("noVNC_reconnecting"); + break; + default: + Log.Error("Invalid visual state: " + state); + UI.showStatus(_("Internal error"), 'error'); + return; } - }); - document.body.addEventListener("keydown", function (e) { - try { - console.log("document keydown: " + e.keyCode); - if (controlBar.classList.contains("noVNC_open")) { + if (UI.connected) { + UI.updateViewClip(); + + UI.disableSetting('encrypt'); + UI.disableSetting('shared'); + UI.disableSetting('host'); + UI.disableSetting('port'); + UI.disableSetting('path'); + UI.disableSetting('repeaterID'); + + // Hide the controlbar after 2 seconds + UI.closeControlbarTimeout = setTimeout(UI.closeControlbar, 2000); + } else { + UI.enableSetting('encrypt'); + UI.enableSetting('shared'); + UI.enableSetting('host'); + UI.enableSetting('port'); + UI.enableSetting('path'); + UI.enableSetting('repeaterID'); + UI.updatePowerButton(); + UI.keepControlbar(); + } + + // State change closes dialogs as they may not be relevant + // anymore + UI.closeAllPanels(); + document.getElementById('noVNC_verify_server_dlg') + .classList.remove('noVNC_open'); + document.getElementById('noVNC_credentials_dlg') + .classList.remove('noVNC_open'); + }, + + showStatus(text, statusType, time) { + const statusElem = document.getElementById('noVNC_status'); + + if (typeof statusType === 'undefined') { + statusType = 'normal'; + } + + // Don't overwrite more severe visible statuses and never + // errors. Only shows the first error. + if (statusElem.classList.contains("noVNC_open")) { + if (statusElem.classList.contains("noVNC_status_error")) { + return; + } + if (statusElem.classList.contains("noVNC_status_warn") && + statusType === 'normal') { + return; + } + } + + clearTimeout(UI.statusTimeout); + + switch (statusType) { + case 'error': + statusElem.classList.remove("noVNC_status_warn"); + statusElem.classList.remove("noVNC_status_normal"); + statusElem.classList.add("noVNC_status_error"); + break; + case 'warning': + case 'warn': + statusElem.classList.remove("noVNC_status_error"); + statusElem.classList.remove("noVNC_status_normal"); + statusElem.classList.add("noVNC_status_warn"); + break; + case 'normal': + case 'info': + default: + statusElem.classList.remove("noVNC_status_error"); + statusElem.classList.remove("noVNC_status_warn"); + statusElem.classList.add("noVNC_status_normal"); + break; + } + + statusElem.textContent = text; + statusElem.classList.add("noVNC_open"); + + // If no time was specified, show the status for 1.5 seconds + if (typeof time === 'undefined') { + time = 1500; + } + + // Error messages do not timeout + if (statusType !== 'error') { + UI.statusTimeout = window.setTimeout(UI.hideStatus, time); + } + }, + + hideStatus() { + clearTimeout(UI.statusTimeout); + document.getElementById('noVNC_status').classList.remove("noVNC_open"); + }, + + activateControlbar(event) { + clearTimeout(UI.idleControlbarTimeout); + // We manipulate the anchor instead of the actual control + // bar in order to avoid creating new a stacking group + document.getElementById('noVNC_control_bar_anchor') + .classList.remove("noVNC_idle"); + UI.idleControlbarTimeout = window.setTimeout(UI.idleControlbar, 2000); + }, + + idleControlbar() { + // Don't fade if a child of the control bar has focus + if (document.getElementById('noVNC_control_bar') + .contains(document.activeElement) && document.hasFocus()) { + UI.activateControlbar(); return; - } - if (e.keyCode !== 86) { - e.preventDefault(); - } else { - if (navigator.clipboard) { - navigator.clipboard - .readText() - .then((text) => { - console.log("copy clipboard from local to vnc: " + text); - controlBarClipboard.value = text; - UI.rfb.clipboardPasteFrom(text); - }) - .catch((err) => { - console.error("Failed to read clipboard contents: ", err); - }); + } + + document.getElementById('noVNC_control_bar_anchor') + .classList.add("noVNC_idle"); + }, + + keepControlbar() { + clearTimeout(UI.closeControlbarTimeout); + }, + + openControlbar() { + document.getElementById('noVNC_control_bar') + .classList.add("noVNC_open"); + }, + + closeControlbar() { + UI.closeAllPanels(); + document.getElementById('noVNC_control_bar') + .classList.remove("noVNC_open"); + UI.rfb.focus(); + }, + + toggleControlbar() { + if (document.getElementById('noVNC_control_bar') + .classList.contains("noVNC_open")) { + UI.closeControlbar(); + } else { + UI.openControlbar(); + } + }, + + toggleControlbarSide() { + // Temporarily disable animation, if bar is displayed, to avoid weird + // movement. The transitionend-event will not fire when display=none. + const bar = document.getElementById('noVNC_control_bar'); + const barDisplayStyle = window.getComputedStyle(bar).display; + if (barDisplayStyle !== 'none') { + bar.style.transitionDuration = '0s'; + bar.addEventListener('transitionend', () => bar.style.transitionDuration = ''); + } + + const anchor = document.getElementById('noVNC_control_bar_anchor'); + if (anchor.classList.contains("noVNC_right")) { + WebUtil.writeSetting('controlbar_pos', 'left'); + anchor.classList.remove("noVNC_right"); + } else { + WebUtil.writeSetting('controlbar_pos', 'right'); + anchor.classList.add("noVNC_right"); + } + + // Consider this a movement of the handle + UI.controlbarDrag = true; + + // The user has "followed" hint, let's hide it until the next drag + UI.showControlbarHint(false, false); + }, + + showControlbarHint(show, animate=true) { + const hint = document.getElementById('noVNC_control_bar_hint'); + + if (animate) { + hint.classList.remove("noVNC_notransition"); + } else { + hint.classList.add("noVNC_notransition"); + } + + if (show) { + hint.classList.add("noVNC_active"); + } else { + hint.classList.remove("noVNC_active"); + } + }, + + dragControlbarHandle(e) { + if (!UI.controlbarGrabbed) return; + + const ptr = getPointerEvent(e); + + const anchor = document.getElementById('noVNC_control_bar_anchor'); + if (ptr.clientX < (window.innerWidth * 0.1)) { + if (anchor.classList.contains("noVNC_right")) { + UI.toggleControlbarSide(); } - } - setTimeout(function () { - viewer.dispatchEvent(new e.constructor(e.type, e)); - if (UI.rfb != null) { - UI.rfb.focus(); + } else if (ptr.clientX > (window.innerWidth * 0.9)) { + if (!anchor.classList.contains("noVNC_right")) { + UI.toggleControlbarSide(); } - }, 1); - } catch (error) { - console.error(error); } - }); - document.body.addEventListener("keyup", function (e) { - try { - console.log("document keyup"); - if (controlBar.classList.contains("noVNC_open")) { + if (!UI.controlbarDrag) { + const dragDistance = Math.abs(ptr.clientY - UI.controlbarMouseDownClientY); + + if (dragDistance < dragThreshold) return; + + UI.controlbarDrag = true; + } + + const eventY = ptr.clientY - UI.controlbarMouseDownOffsetY; + + UI.moveControlbarHandle(eventY); + + e.preventDefault(); + e.stopPropagation(); + UI.keepControlbar(); + UI.activateControlbar(); + }, + + // Move the handle but don't allow any position outside the bounds + moveControlbarHandle(viewportRelativeY) { + const handle = document.getElementById("noVNC_control_bar_handle"); + const handleHeight = handle.getBoundingClientRect().height; + const controlbarBounds = document.getElementById("noVNC_control_bar") + .getBoundingClientRect(); + const margin = 10; + + // These heights need to be non-zero for the below logic to work + if (handleHeight === 0 || controlbarBounds.height === 0) { return; - } + } + + let newY = viewportRelativeY; + + // Check if the coordinates are outside the control bar + if (newY < controlbarBounds.top + margin) { + // Force coordinates to be below the top of the control bar + newY = controlbarBounds.top + margin; + + } else if (newY > controlbarBounds.top + + controlbarBounds.height - handleHeight - margin) { + // Force coordinates to be above the bottom of the control bar + newY = controlbarBounds.top + + controlbarBounds.height - handleHeight - margin; + } - if (e.keyCode !== 86) { + // Corner case: control bar too small for stable position + if (controlbarBounds.height < (handleHeight + margin * 2)) { + newY = controlbarBounds.top + + (controlbarBounds.height - handleHeight) / 2; + } + + // The transform needs coordinates that are relative to the parent + const parentRelativeY = newY - controlbarBounds.top; + handle.style.transform = "translateY(" + parentRelativeY + "px)"; + }, + + updateControlbarHandle() { + // Since the control bar is fixed on the viewport and not the page, + // the move function expects coordinates relative the the viewport. + const handle = document.getElementById("noVNC_control_bar_handle"); + const handleBounds = handle.getBoundingClientRect(); + UI.moveControlbarHandle(handleBounds.top); + }, + + controlbarHandleMouseUp(e) { + if ((e.type == "mouseup") && (e.button != 0)) return; + + // mouseup and mousedown on the same place toggles the controlbar + if (UI.controlbarGrabbed && !UI.controlbarDrag) { + UI.toggleControlbar(); e.preventDefault(); - } - setTimeout(function () { - viewer.dispatchEvent(new e.constructor(e.type, e)); - if (UI.rfb != null) { - UI.rfb.focus(); + e.stopPropagation(); + UI.keepControlbar(); + UI.activateControlbar(); + } + UI.controlbarGrabbed = false; + UI.showControlbarHint(false); + }, + + controlbarHandleMouseDown(e) { + if ((e.type == "mousedown") && (e.button != 0)) return; + + const ptr = getPointerEvent(e); + + const handle = document.getElementById("noVNC_control_bar_handle"); + const bounds = handle.getBoundingClientRect(); + + // Touch events have implicit capture + if (e.type === "mousedown") { + setCapture(handle); + } + + UI.controlbarGrabbed = true; + UI.controlbarDrag = false; + + UI.showControlbarHint(true); + + UI.controlbarMouseDownClientY = ptr.clientY; + UI.controlbarMouseDownOffsetY = ptr.clientY - bounds.top; + e.preventDefault(); + e.stopPropagation(); + UI.keepControlbar(); + UI.activateControlbar(); + }, + + toggleExpander(e) { + if (this.classList.contains("noVNC_open")) { + this.classList.remove("noVNC_open"); + } else { + this.classList.add("noVNC_open"); + } + }, + +/* ------^------- + * /VISUAL + * ============== + * SETTINGS + * ------v------*/ + + // Initial page load read/initialization of settings + initSetting(name, defVal) { + // Check Query string followed by cookie + let val = WebUtil.getConfigVar(name); + if (val === null) { + val = WebUtil.readSetting(name, defVal); + } + WebUtil.setSetting(name, val); + UI.updateSetting(name); + return val; + }, + + // Set the new value, update and disable form control setting + forceSetting(name, val) { + WebUtil.setSetting(name, val); + UI.updateSetting(name); + UI.disableSetting(name); + }, + + // Update cookie and form control setting. If value is not set, then + // updates from control to current cookie setting. + updateSetting(name) { + + // Update the settings control + let value = UI.getSetting(name); + + const ctrl = document.getElementById('noVNC_setting_' + name); + if (ctrl.type === 'checkbox') { + ctrl.checked = value; + + } else if (typeof ctrl.options !== 'undefined') { + for (let i = 0; i < ctrl.options.length; i += 1) { + if (ctrl.options[i].value === value) { + ctrl.selectedIndex = i; + break; + } + } + } else { + /*Weird IE9 error leads to 'null' appearring + in textboxes instead of ''.*/ + if (value === null) { + value = ""; } - }, 1); - } catch (error) { - console.error(error); + ctrl.value = value; + } + }, + + // Save control setting to cookie + saveSetting(name) { + const ctrl = document.getElementById('noVNC_setting_' + name); + let val; + if (ctrl.type === 'checkbox') { + val = ctrl.checked; + } else if (typeof ctrl.options !== 'undefined') { + val = ctrl.options[ctrl.selectedIndex].value; + } else { + val = ctrl.value; + } + WebUtil.writeSetting(name, val); + //Log.Debug("Setting saved '" + name + "=" + val + "'"); + return val; + }, + + // Read form control compatible setting from cookie + getSetting(name) { + const ctrl = document.getElementById('noVNC_setting_' + name); + let val = WebUtil.readSetting(name); + if (typeof val !== 'undefined' && val !== null && ctrl.type === 'checkbox') { + if (val.toString().toLowerCase() in {'0': 1, 'no': 1, 'false': 1}) { + val = false; + } else { + val = true; + } + } + return val; + }, + + // These helpers compensate for the lack of parent-selectors and + // previous-sibling-selectors in CSS which are needed when we want to + // disable the labels that belong to disabled input elements. + disableSetting(name) { + const ctrl = document.getElementById('noVNC_setting_' + name); + ctrl.disabled = true; + ctrl.label.classList.add('noVNC_disabled'); + }, + + enableSetting(name) { + const ctrl = document.getElementById('noVNC_setting_' + name); + ctrl.disabled = false; + ctrl.label.classList.remove('noVNC_disabled'); + }, + +/* ------^------- + * /SETTINGS + * ============== + * PANELS + * ------v------*/ + + closeAllPanels() { + UI.closeSettingsPanel(); + UI.closePowerPanel(); + UI.closeClipboardPanel(); + UI.closeExtraKeys(); + }, + +/* ------^------- + * /PANELS + * ============== + * SETTINGS (panel) + * ------v------*/ + + openSettingsPanel() { + UI.closeAllPanels(); + UI.openControlbar(); + + // Refresh UI elements from saved cookies + UI.updateSetting('encrypt'); + UI.updateSetting('view_clip'); + UI.updateSetting('resize'); + UI.updateSetting('quality'); + UI.updateSetting('compression'); + UI.updateSetting('shared'); + UI.updateSetting('view_only'); + UI.updateSetting('path'); + UI.updateSetting('repeaterID'); + UI.updateSetting('logging'); + UI.updateSetting('reconnect'); + UI.updateSetting('reconnect_delay'); + + document.getElementById('noVNC_settings') + .classList.add("noVNC_open"); + document.getElementById('noVNC_settings_button') + .classList.add("noVNC_selected"); + }, + + closeSettingsPanel() { + document.getElementById('noVNC_settings') + .classList.remove("noVNC_open"); + document.getElementById('noVNC_settings_button') + .classList.remove("noVNC_selected"); + }, + + toggleSettingsPanel() { + if (document.getElementById('noVNC_settings') + .classList.contains("noVNC_open")) { + UI.closeSettingsPanel(); + } else { + UI.openSettingsPanel(); + } + }, + +/* ------^------- + * /SETTINGS + * ============== + * POWER + * ------v------*/ + + openPowerPanel() { + UI.closeAllPanels(); + UI.openControlbar(); + + document.getElementById('noVNC_power') + .classList.add("noVNC_open"); + document.getElementById('noVNC_power_button') + .classList.add("noVNC_selected"); + }, + + closePowerPanel() { + document.getElementById('noVNC_power') + .classList.remove("noVNC_open"); + document.getElementById('noVNC_power_button') + .classList.remove("noVNC_selected"); + }, + + togglePowerPanel() { + if (document.getElementById('noVNC_power') + .classList.contains("noVNC_open")) { + UI.closePowerPanel(); + } else { + UI.openPowerPanel(); + } + }, + + // Disable/enable power button + updatePowerButton() { + if (UI.connected && + UI.rfb.capabilities.power && + !UI.rfb.viewOnly) { + document.getElementById('noVNC_power_button') + .classList.remove("noVNC_hidden"); + } else { + document.getElementById('noVNC_power_button') + .classList.add("noVNC_hidden"); + // Close power panel if open + UI.closePowerPanel(); + } + }, + +/* ------^------- + * /POWER + * ============== + * CLIPBOARD + * ------v------*/ + + openClipboardPanel() { + UI.closeAllPanels(); + UI.openControlbar(); + + document.getElementById('noVNC_clipboard') + .classList.add("noVNC_open"); + document.getElementById('noVNC_clipboard_button') + .classList.add("noVNC_selected"); + }, + + closeClipboardPanel() { + document.getElementById('noVNC_clipboard') + .classList.remove("noVNC_open"); + document.getElementById('noVNC_clipboard_button') + .classList.remove("noVNC_selected"); + }, + + toggleClipboardPanel() { + if (document.getElementById('noVNC_clipboard') + .classList.contains("noVNC_open")) { + UI.closeClipboardPanel(); + } else { + UI.openClipboardPanel(); + } + }, + + clipboardReceive(e) { + Log.Debug(">> UI.clipboardReceive: " + e.detail.text.substr(0, 40) + "..."); + document.getElementById('noVNC_clipboard_text').value = e.detail.text; + Log.Debug("<< UI.clipboardReceive"); + }, + + clipboardSend() { + const text = document.getElementById('noVNC_clipboard_text').value; + Log.Debug(">> UI.clipboardSend: " + text.substr(0, 40) + "..."); + UI.rfb.clipboardPasteFrom(text); + Log.Debug("<< UI.clipboardSend"); + }, + +/* ------^------- + * /CLIPBOARD + * ============== + * CONNECTION + * ------v------*/ + + openConnectPanel() { + document.getElementById('noVNC_connect_dlg') + .classList.add("noVNC_open"); + }, + + closeConnectPanel() { + document.getElementById('noVNC_connect_dlg') + .classList.remove("noVNC_open"); + }, + + connect(event, password) { + + // Ignore when rfb already exists + if (typeof UI.rfb !== 'undefined') { + return; } + + const host = UI.getSetting('host'); + const port = UI.getSetting('port'); + const path = UI.getSetting('path'); + + if (typeof password === 'undefined') { + password = WebUtil.getConfigVar('password'); + UI.reconnectPassword = password; + } + + if (password === null) { + password = undefined; + } + + UI.hideStatus(); + + if (!host) { + Log.Error("Can't connect when host is: " + host); + UI.showStatus(_("Must set host"), 'error'); + return; + } + + UI.closeConnectPanel(); + + UI.updateVisualState('connecting'); + + let url; + + url = UI.getSetting('encrypt') ? 'wss' : 'ws'; + + url += '://' + host; + if (port) { + url += ':' + port; + } + url += '/' + path; + + UI.rfb = new RFB(document.getElementById('noVNC_container'), url, + { shared: UI.getSetting('shared'), + repeaterID: UI.getSetting('repeaterID'), + credentials: { password: password } }); + UI.rfb.addEventListener("connect", UI.connectFinished); + UI.rfb.addEventListener("disconnect", UI.disconnectFinished); + UI.rfb.addEventListener("serververification", UI.serverVerify); + UI.rfb.addEventListener("credentialsrequired", UI.credentials); + UI.rfb.addEventListener("securityfailure", UI.securityFailed); + UI.rfb.addEventListener("clippingviewport", UI.updateViewDrag); + UI.rfb.addEventListener("capabilities", UI.updatePowerButton); + UI.rfb.addEventListener("clipboard", UI.clipboardReceive); + UI.rfb.addEventListener("bell", UI.bell); + UI.rfb.addEventListener("desktopname", UI.updateDesktopName); + UI.rfb.clipViewport = UI.getSetting('view_clip'); + UI.rfb.scaleViewport = UI.getSetting('resize') === 'scale'; + UI.rfb.resizeSession = UI.getSetting('resize') === 'remote'; + UI.rfb.qualityLevel = parseInt(UI.getSetting('quality')); + UI.rfb.compressionLevel = parseInt(UI.getSetting('compression')); + UI.rfb.showDotCursor = UI.getSetting('show_dot'); + + UI.updateViewOnly(); // requires UI.rfb + // ######################## CUSTOM CODE ######################## + var clipboard = document.getElementById("clipboard"); + var controlBar = document.getElementById("noVNC_control_bar"); + var controlBarClipboard = document.getElementById("noVNC_clipboard_text"); + + UI.rfb.addEventListener("clipboard", function (e) { + clipboard.value = e.detail.text; }); - viewer.addEventListener("keydown", function (e) { - try { - console.log("viewer keydown"); - if (e.ctrlKey) { + UI.rfb.addEventListener("connect", function (e) { + var viewer = document.getElementsByTagName("canvas")[0]; + + document.body.addEventListener("paste", function (e) { + try { + console.log("paste"); + if (controlBarClipboard.classList.contains("noVNC_open")) { + return; + } + if (UI.rfb != null) { + text = e.clipboardData.getData("text"); + console.log("copy clipboard from local to vnc: " + text); + controlBarClipboard.value = text; + UI.rfb.clipboardPasteFrom(text); + } + } catch (error) { + console.error(error); + } + }); + + document.body.addEventListener("keydown", function (e) { + try { + console.log("document keydown: " + e.keyCode); if (controlBar.classList.contains("noVNC_open")) { return; } - document.activeElement.blur(); + if (e.keyCode !== 86) { + e.preventDefault(); + } else { + if (navigator.clipboard) { + navigator.clipboard + .readText() + .then((text) => { + console.log("copy clipboard from local to vnc: " + text); + controlBarClipboard.value = text; + UI.rfb.clipboardPasteFrom(text); + }) + .catch((err) => { + console.error("Failed to read clipboard contents: ", err); + }); + } + } + setTimeout(function () { + viewer.dispatchEvent(new e.constructor(e.type, e)); + if (UI.rfb != null) { + UI.rfb.focus(); + } + }, 1); + } catch (error) { + console.error(error); } - } catch (error) { - console.error(error); - } - }); + }); - viewer.addEventListener("keyup", function (e) { - try { - console.log("viewer keyup: " + e.keyCode); - if (e.ctrlKey && [67, 88].includes(e.keyCode)) { + document.body.addEventListener("keyup", function (e) { + try { + console.log("document keyup"); if (controlBar.classList.contains("noVNC_open")) { return; } - if (clipboard != null) { - console.log( - "copy clipboard from vnc to local: " + clipboard.value - ); - clipboard.focus(); - clipboard.select(); - - document.execCommand("copy"); + + if (e.keyCode !== 86) { + e.preventDefault(); + } + setTimeout(function () { + viewer.dispatchEvent(new e.constructor(e.type, e)); if (UI.rfb != null) { UI.rfb.focus(); } + }, 1); + } catch (error) { + console.error(error); + } + }); + + viewer.addEventListener("keydown", function (e) { + try { + console.log("viewer keydown"); + if (e.ctrlKey) { + if (controlBar.classList.contains("noVNC_open")) { + return; + } + document.activeElement.blur(); } + } catch (error) { + console.error(error); } - } catch (error) { - console.error(error); - } - }); - }); - // ######################## END CUSTOM CODE ######################## - }, - - disconnect() { - UI.rfb.disconnect(); - - UI.connected = false; - - // Disable automatic reconnecting - UI.inhibitReconnect = true; - - UI.updateVisualState("disconnecting"); - - // Don't display the connection settings until we're actually disconnected - }, - - reconnect() { - UI.reconnectCallback = null; - - // if reconnect has been disabled in the meantime, do nothing. - if (UI.inhibitReconnect) { - return; - } - - UI.connect(null, UI.reconnectPassword); - }, - - cancelReconnect() { - if (UI.reconnectCallback !== null) { - clearTimeout(UI.reconnectCallback); - UI.reconnectCallback = null; - } - - UI.updateVisualState("disconnected"); - - UI.openControlbar(); - UI.openConnectPanel(); - }, - - connectFinished(e) { - UI.connected = true; - UI.inhibitReconnect = false; - - let msg; - if (UI.getSetting("encrypt")) { - msg = _("Connected (encrypted) to ") + UI.desktopName; - } else { - msg = _("Connected (unencrypted) to ") + UI.desktopName; - } - UI.showStatus(msg); - UI.updateVisualState("connected"); - - // Do this last because it can only be used on rendered elements - UI.rfb.focus(); - }, - - disconnectFinished(e) { - const wasConnected = UI.connected; - - // This variable is ideally set when disconnection starts, but - // when the disconnection isn't clean or if it is initiated by - // the server, we need to do it here as well since - // UI.disconnect() won't be used in those cases. - UI.connected = false; - - UI.rfb = undefined; - - if (!e.detail.clean) { - UI.updateVisualState("disconnected"); - if (wasConnected) { - UI.showStatus(_("Something went wrong, connection is closed"), "error"); - } else { - UI.showStatus(_("Failed to connect to server"), "error"); - } - } else if ( - UI.getSetting("reconnect", false) === true && - !UI.inhibitReconnect - ) { - UI.updateVisualState("reconnecting"); - - const delay = parseInt(UI.getSetting("reconnect_delay")); - UI.reconnectCallback = setTimeout(UI.reconnect, delay); - return; - } else { - UI.updateVisualState("disconnected"); - UI.showStatus(_("Disconnected"), "normal"); - } - - document.title = PAGE_TITLE; - - UI.openControlbar(); - UI.openConnectPanel(); - }, - - securityFailed(e) { - let msg = ""; - // On security failures we might get a string with a reason - // directly from the server. Note that we can't control if - // this string is translated or not. - if ("reason" in e.detail) { - msg = - _("New connection has been rejected with reason: ") + e.detail.reason; - } else { - msg = _("New connection has been rejected"); - } - UI.showStatus(msg, "error"); - }, - - /* ------^------- - * /CONNECTION - * ============== - * PASSWORD - * ------v------*/ - - credentials(e) { - // FIXME: handle more types - - document - .getElementById("noVNC_username_block") - .classList.remove("noVNC_hidden"); - document - .getElementById("noVNC_password_block") - .classList.remove("noVNC_hidden"); - - let inputFocus = "none"; - if (e.detail.types.indexOf("username") === -1) { - document - .getElementById("noVNC_username_block") - .classList.add("noVNC_hidden"); - } else { - inputFocus = inputFocus === "none" ? "noVNC_username_input" : inputFocus; - } - if (e.detail.types.indexOf("password") === -1) { - document - .getElementById("noVNC_password_block") - .classList.add("noVNC_hidden"); - } else { - inputFocus = inputFocus === "none" ? "noVNC_password_input" : inputFocus; - } - document - .getElementById("noVNC_credentials_dlg") - .classList.add("noVNC_open"); - - setTimeout(() => document.getElementById(inputFocus).focus(), 100); - - Log.Warn("Server asked for credentials"); - UI.showStatus(_("Credentials are required"), "warning"); - }, - - setCredentials(e) { - // Prevent actually submitting the form - e.preventDefault(); - - let inputElemUsername = document.getElementById("noVNC_username_input"); - const username = inputElemUsername.value; - - let inputElemPassword = document.getElementById("noVNC_password_input"); - const password = inputElemPassword.value; - // Clear the input after reading the password - inputElemPassword.value = ""; - - UI.rfb.sendCredentials({ username: username, password: password }); - UI.reconnectPassword = password; - document - .getElementById("noVNC_credentials_dlg") - .classList.remove("noVNC_open"); - }, - - /* ------^------- - * /PASSWORD - * ============== - * FULLSCREEN - * ------v------*/ - - toggleFullscreen() { - if ( - document.fullscreenElement || // alternative standard method - document.mozFullScreenElement || // currently working methods - document.webkitFullscreenElement || - document.msFullscreenElement - ) { - if (document.exitFullscreen) { - document.exitFullscreen(); - } else if (document.mozCancelFullScreen) { - document.mozCancelFullScreen(); - } else if (document.webkitExitFullscreen) { - document.webkitExitFullscreen(); - } else if (document.msExitFullscreen) { - document.msExitFullscreen(); - } - } else { - if (document.documentElement.requestFullscreen) { - document.documentElement.requestFullscreen(); - } else if (document.documentElement.mozRequestFullScreen) { - document.documentElement.mozRequestFullScreen(); - } else if (document.documentElement.webkitRequestFullscreen) { - document.documentElement.webkitRequestFullscreen( - Element.ALLOW_KEYBOARD_INPUT - ); - } else if (document.body.msRequestFullscreen) { - document.body.msRequestFullscreen(); - } - } - UI.updateFullscreenButton(); - }, - - updateFullscreenButton() { - if ( - document.fullscreenElement || // alternative standard method - document.mozFullScreenElement || // currently working methods - document.webkitFullscreenElement || - document.msFullscreenElement - ) { - document - .getElementById("noVNC_fullscreen_button") - .classList.add("noVNC_selected"); - } else { - document - .getElementById("noVNC_fullscreen_button") - .classList.remove("noVNC_selected"); - } - }, - - /* ------^------- - * /FULLSCREEN - * ============== - * RESIZE - * ------v------*/ - - // Apply remote resizing or local scaling - applyResizeMode() { - if (!UI.rfb) return; - - UI.rfb.scaleViewport = UI.getSetting("resize") === "scale"; - UI.rfb.resizeSession = UI.getSetting("resize") === "remote"; - }, - - /* ------^------- - * /RESIZE - * ============== - * VIEW CLIPPING - * ------v------*/ - - // Update viewport clipping property for the connection. The normal - // case is to get the value from the setting. There are special cases - // for when the viewport is scaled or when a touch device is used. - updateViewClip() { - if (!UI.rfb) return; - - const scaling = UI.getSetting("resize") === "scale"; - - if (scaling) { - // Can't be clipping if viewport is scaled to fit - UI.forceSetting("view_clip", false); - UI.rfb.clipViewport = false; - } else if (!hasScrollbarGutter) { - // Some platforms have scrollbars that are difficult - // to use in our case, so we always use our own panning - UI.forceSetting("view_clip", true); - UI.rfb.clipViewport = true; - } else { - UI.enableSetting("view_clip"); - UI.rfb.clipViewport = UI.getSetting("view_clip"); - } - - // Changing the viewport may change the state of - // the dragging button - UI.updateViewDrag(); - }, - - /* ------^------- - * /VIEW CLIPPING - * ============== - * VIEWDRAG - * ------v------*/ - - toggleViewDrag() { - if (!UI.rfb) return; - - UI.rfb.dragViewport = !UI.rfb.dragViewport; - UI.updateViewDrag(); - }, - - updateViewDrag() { - if (!UI.connected) return; - - const viewDragButton = document.getElementById("noVNC_view_drag_button"); - - if (!UI.rfb.clipViewport && UI.rfb.dragViewport) { - // We are no longer clipping the viewport. Make sure - // viewport drag isn't active when it can't be used. - UI.rfb.dragViewport = false; - } - - if (UI.rfb.dragViewport) { - viewDragButton.classList.add("noVNC_selected"); - } else { - viewDragButton.classList.remove("noVNC_selected"); - } - - if (UI.rfb.clipViewport) { - viewDragButton.classList.remove("noVNC_hidden"); - } else { - viewDragButton.classList.add("noVNC_hidden"); - } - }, - - /* ------^------- - * /VIEWDRAG - * ============== - * QUALITY - * ------v------*/ - - updateQuality() { - if (!UI.rfb) return; - - UI.rfb.qualityLevel = parseInt(UI.getSetting("quality")); - }, - - /* ------^------- - * /QUALITY - * ============== - * COMPRESSION - * ------v------*/ - - updateCompression() { - if (!UI.rfb) return; - - UI.rfb.compressionLevel = parseInt(UI.getSetting("compression")); - }, - - /* ------^------- - * /COMPRESSION - * ============== - * KEYBOARD - * ------v------*/ - - showVirtualKeyboard() { - if (!isTouchDevice) return; - - const input = document.getElementById("noVNC_keyboardinput"); - - if (document.activeElement == input) return; - - input.focus(); - - try { - const l = input.value.length; - // Move the caret to the end - input.setSelectionRange(l, l); - } catch (err) { - // setSelectionRange is undefined in Google Chrome - } - }, - - hideVirtualKeyboard() { - if (!isTouchDevice) return; - - const input = document.getElementById("noVNC_keyboardinput"); - - if (document.activeElement != input) return; - - input.blur(); - }, - - toggleVirtualKeyboard() { - if ( - document - .getElementById("noVNC_keyboard_button") - .classList.contains("noVNC_selected") - ) { - UI.hideVirtualKeyboard(); - } else { - UI.showVirtualKeyboard(); - } - }, - - onfocusVirtualKeyboard(event) { - document - .getElementById("noVNC_keyboard_button") - .classList.add("noVNC_selected"); - if (UI.rfb) { - UI.rfb.focusOnClick = false; - } - }, - - onblurVirtualKeyboard(event) { - document - .getElementById("noVNC_keyboard_button") - .classList.remove("noVNC_selected"); - if (UI.rfb) { - UI.rfb.focusOnClick = true; - } - }, - - keepVirtualKeyboard(event) { - const input = document.getElementById("noVNC_keyboardinput"); - - // Only prevent focus change if the virtual keyboard is active - if (document.activeElement != input) { - return; - } - - // Only allow focus to move to other elements that need - // focus to function properly - if (event.target.form !== undefined) { - switch (event.target.type) { - case "text": - case "email": - case "search": - case "password": - case "tel": - case "url": - case "textarea": - case "select-one": - case "select-multiple": - return; - } - } - - event.preventDefault(); - }, - - keyboardinputReset() { - const kbi = document.getElementById("noVNC_keyboardinput"); - kbi.value = new Array(UI.defaultKeyboardinputLen).join("_"); - UI.lastKeyboardinput = kbi.value; - }, - - keyEvent(keysym, code, down) { - if (!UI.rfb) return; - - UI.rfb.sendKey(keysym, code, down); - }, - - // When normal keyboard events are left uncought, use the input events from - // the keyboardinput element instead and generate the corresponding key events. - // This code is required since some browsers on Android are inconsistent in - // sending keyCodes in the normal keyboard events when using on screen keyboards. - keyInput(event) { - if (!UI.rfb) return; - - const newValue = event.target.value; - - if (!UI.lastKeyboardinput) { - UI.keyboardinputReset(); - } - const oldValue = UI.lastKeyboardinput; - - let newLen; - try { - // Try to check caret position since whitespace at the end - // will not be considered by value.length in some browsers - newLen = Math.max(event.target.selectionStart, newValue.length); - } catch (err) { - // selectionStart is undefined in Google Chrome - newLen = newValue.length; - } - const oldLen = oldValue.length; - - let inputs = newLen - oldLen; - let backspaces = inputs < 0 ? -inputs : 0; - - // Compare the old string with the new to account for - // text-corrections or other input that modify existing text - for (let i = 0; i < Math.min(oldLen, newLen); i++) { - if (newValue.charAt(i) != oldValue.charAt(i)) { - inputs = newLen - i; - backspaces = oldLen - i; - break; - } - } - - // Send the key events - for (let i = 0; i < backspaces; i++) { - UI.rfb.sendKey(KeyTable.XK_BackSpace, "Backspace"); - } - for (let i = newLen - inputs; i < newLen; i++) { - UI.rfb.sendKey(keysyms.lookup(newValue.charCodeAt(i))); - } - - // Control the text content length in the keyboardinput element - if (newLen > 2 * UI.defaultKeyboardinputLen) { - UI.keyboardinputReset(); - } else if (newLen < 1) { - // There always have to be some text in the keyboardinput - // element with which backspace can interact. - UI.keyboardinputReset(); - // This sometimes causes the keyboard to disappear for a second - // but it is required for the android keyboard to recognize that - // text has been added to the field - event.target.blur(); - // This has to be ran outside of the input handler in order to work - setTimeout(event.target.focus.bind(event.target), 0); - } else { - UI.lastKeyboardinput = newValue; - } - }, - - /* ------^------- - * /KEYBOARD - * ============== - * EXTRA KEYS - * ------v------*/ - - openExtraKeys() { - UI.closeAllPanels(); - UI.openControlbar(); - - document.getElementById("noVNC_modifiers").classList.add("noVNC_open"); - document - .getElementById("noVNC_toggle_extra_keys_button") - .classList.add("noVNC_selected"); - }, - - closeExtraKeys() { - document.getElementById("noVNC_modifiers").classList.remove("noVNC_open"); - document - .getElementById("noVNC_toggle_extra_keys_button") - .classList.remove("noVNC_selected"); - }, - - toggleExtraKeys() { - if ( - document - .getElementById("noVNC_modifiers") - .classList.contains("noVNC_open") - ) { - UI.closeExtraKeys(); - } else { - UI.openExtraKeys(); - } - }, - - sendEsc() { - UI.sendKey(KeyTable.XK_Escape, "Escape"); - }, - - sendTab() { - UI.sendKey(KeyTable.XK_Tab, "Tab"); - }, - - toggleCtrl() { - const btn = document.getElementById("noVNC_toggle_ctrl_button"); - if (btn.classList.contains("noVNC_selected")) { - UI.sendKey(KeyTable.XK_Control_L, "ControlLeft", false); - btn.classList.remove("noVNC_selected"); - } else { - UI.sendKey(KeyTable.XK_Control_L, "ControlLeft", true); - btn.classList.add("noVNC_selected"); - } - }, - - toggleWindows() { - const btn = document.getElementById("noVNC_toggle_windows_button"); - if (btn.classList.contains("noVNC_selected")) { - UI.sendKey(KeyTable.XK_Super_L, "MetaLeft", false); - btn.classList.remove("noVNC_selected"); - } else { - UI.sendKey(KeyTable.XK_Super_L, "MetaLeft", true); - btn.classList.add("noVNC_selected"); - } - }, - - toggleAlt() { - const btn = document.getElementById("noVNC_toggle_alt_button"); - if (btn.classList.contains("noVNC_selected")) { - UI.sendKey(KeyTable.XK_Alt_L, "AltLeft", false); - btn.classList.remove("noVNC_selected"); - } else { - UI.sendKey(KeyTable.XK_Alt_L, "AltLeft", true); - btn.classList.add("noVNC_selected"); - } - }, - - sendCtrlAltDel() { - UI.rfb.sendCtrlAltDel(); - // See below - UI.rfb.focus(); - UI.idleControlbar(); - }, - - sendKey(keysym, code, down) { - UI.rfb.sendKey(keysym, code, down); - - // Move focus to the screen in order to be able to use the - // keyboard right after these extra keys. - // The exception is when a virtual keyboard is used, because - // if we focus the screen the virtual keyboard would be closed. - // In this case we focus our special virtual keyboard input - // element instead. - if ( - document - .getElementById("noVNC_keyboard_button") - .classList.contains("noVNC_selected") - ) { - document.getElementById("noVNC_keyboardinput").focus(); - } else { - UI.rfb.focus(); - } - // fade out the controlbar to highlight that - // the focus has been moved to the screen - UI.idleControlbar(); - }, - - /* ------^------- - * /EXTRA KEYS - * ============== - * MISC - * ------v------*/ - - updateViewOnly() { - if (!UI.rfb) return; - UI.rfb.viewOnly = UI.getSetting("view_only"); - - // Hide input related buttons in view only mode - if (UI.rfb.viewOnly) { - document - .getElementById("noVNC_keyboard_button") - .classList.add("noVNC_hidden"); - document - .getElementById("noVNC_toggle_extra_keys_button") - .classList.add("noVNC_hidden"); - document - .getElementById("noVNC_clipboard_button") - .classList.add("noVNC_hidden"); - } else { - document - .getElementById("noVNC_keyboard_button") - .classList.remove("noVNC_hidden"); - document - .getElementById("noVNC_toggle_extra_keys_button") - .classList.remove("noVNC_hidden"); - document - .getElementById("noVNC_clipboard_button") - .classList.remove("noVNC_hidden"); - } - }, - - updateShowDotCursor() { - if (!UI.rfb) return; - UI.rfb.showDotCursor = UI.getSetting("show_dot"); - }, - - updateLogging() { - WebUtil.initLogging(UI.getSetting("logging")); - }, - - updateDesktopName(e) { - UI.desktopName = e.detail.name; - // Display the desktop name in the document title - document.title = e.detail.name + " - " + PAGE_TITLE; - }, - - bell(e) { - if (WebUtil.getConfigVar("bell", "on") === "on") { - const promise = document.getElementById("noVNC_bell").play(); - // The standards disagree on the return value here - if (promise) { - promise.catch((e) => { - if (e.name === "NotAllowedError") { - // Ignore when the browser doesn't let us play audio. - // It is common that the browsers require audio to be - // initiated from a user action. - } else { - Log.Error("Unable to play bell: " + e); + }); + + viewer.addEventListener("keyup", function (e) { + try { + console.log("viewer keyup: " + e.keyCode); + if (e.ctrlKey && [67, 88].includes(e.keyCode)) { + if (controlBar.classList.contains("noVNC_open")) { + return; + } + if (clipboard != null) { + console.log( + "copy clipboard from vnc to local: " + clipboard.value + ); + clipboard.focus(); + clipboard.select(); + + document.execCommand("copy"); + if (UI.rfb != null) { + UI.rfb.focus(); + } + } + } + } catch (error) { + console.error(error); } }); - } - } - }, - - //Helper to add options to dropdown. - addOption(selectbox, text, value) { - const optn = document.createElement("OPTION"); - optn.text = text; - optn.value = value; - selectbox.options.add(optn); - }, - - /* ------^------- - * /MISC - * ============== - */ + }); + // ######################## END CUSTOM CODE ######################## + + }, + + disconnect() { + UI.rfb.disconnect(); + + UI.connected = false; + + // Disable automatic reconnecting + UI.inhibitReconnect = true; + + UI.updateVisualState('disconnecting'); + + // Don't display the connection settings until we're actually disconnected + }, + + reconnect() { + UI.reconnectCallback = null; + + // if reconnect has been disabled in the meantime, do nothing. + if (UI.inhibitReconnect) { + return; + } + + UI.connect(null, UI.reconnectPassword); + }, + + cancelReconnect() { + if (UI.reconnectCallback !== null) { + clearTimeout(UI.reconnectCallback); + UI.reconnectCallback = null; + } + + UI.updateVisualState('disconnected'); + + UI.openControlbar(); + UI.openConnectPanel(); + }, + + connectFinished(e) { + UI.connected = true; + UI.inhibitReconnect = false; + + let msg; + if (UI.getSetting('encrypt')) { + msg = _("Connected (encrypted) to ") + UI.desktopName; + } else { + msg = _("Connected (unencrypted) to ") + UI.desktopName; + } + UI.showStatus(msg); + UI.updateVisualState('connected'); + + // Do this last because it can only be used on rendered elements + UI.rfb.focus(); + }, + + disconnectFinished(e) { + const wasConnected = UI.connected; + + // This variable is ideally set when disconnection starts, but + // when the disconnection isn't clean or if it is initiated by + // the server, we need to do it here as well since + // UI.disconnect() won't be used in those cases. + UI.connected = false; + + UI.rfb = undefined; + + if (!e.detail.clean) { + UI.updateVisualState('disconnected'); + if (wasConnected) { + UI.showStatus(_("Something went wrong, connection is closed"), + 'error'); + } else { + UI.showStatus(_("Failed to connect to server"), 'error'); + } + } + // If reconnecting is allowed process it now + if (UI.getSetting('reconnect', false) === true && !UI.inhibitReconnect) { + UI.updateVisualState('reconnecting'); + + const delay = parseInt(UI.getSetting('reconnect_delay')); + UI.reconnectCallback = setTimeout(UI.reconnect, delay); + return; + } else { + UI.updateVisualState('disconnected'); + UI.showStatus(_("Disconnected"), 'normal'); + } + + document.title = PAGE_TITLE; + + UI.openControlbar(); + UI.openConnectPanel(); + }, + + securityFailed(e) { + let msg = ""; + // On security failures we might get a string with a reason + // directly from the server. Note that we can't control if + // this string is translated or not. + if ('reason' in e.detail) { + msg = _("New connection has been rejected with reason: ") + + e.detail.reason; + } else { + msg = _("New connection has been rejected"); + } + UI.showStatus(msg, 'error'); + }, + +/* ------^------- + * /CONNECTION + * ============== + * SERVER VERIFY + * ------v------*/ + + async serverVerify(e) { + const type = e.detail.type; + if (type === 'RSA') { + const publickey = e.detail.publickey; + let fingerprint = await window.crypto.subtle.digest("SHA-1", publickey); + // The same fingerprint format as RealVNC + fingerprint = Array.from(new Uint8Array(fingerprint).slice(0, 8)).map( + x => x.toString(16).padStart(2, '0')).join('-'); + document.getElementById('noVNC_verify_server_dlg').classList.add('noVNC_open'); + document.getElementById('noVNC_fingerprint').innerHTML = fingerprint; + } + }, + + approveServer(e) { + e.preventDefault(); + document.getElementById('noVNC_verify_server_dlg').classList.remove('noVNC_open'); + UI.rfb.approveServer(); + }, + + rejectServer(e) { + e.preventDefault(); + document.getElementById('noVNC_verify_server_dlg').classList.remove('noVNC_open'); + UI.disconnect(); + }, + +/* ------^------- + * /SERVER VERIFY + * ============== + * PASSWORD + * ------v------*/ + + credentials(e) { + // FIXME: handle more types + + document.getElementById("noVNC_username_block").classList.remove("noVNC_hidden"); + document.getElementById("noVNC_password_block").classList.remove("noVNC_hidden"); + + let inputFocus = "none"; + if (e.detail.types.indexOf("username") === -1) { + document.getElementById("noVNC_username_block").classList.add("noVNC_hidden"); + } else { + inputFocus = inputFocus === "none" ? "noVNC_username_input" : inputFocus; + } + if (e.detail.types.indexOf("password") === -1) { + document.getElementById("noVNC_password_block").classList.add("noVNC_hidden"); + } else { + inputFocus = inputFocus === "none" ? "noVNC_password_input" : inputFocus; + } + document.getElementById('noVNC_credentials_dlg') + .classList.add('noVNC_open'); + + setTimeout(() => document + .getElementById(inputFocus).focus(), 100); + + Log.Warn("Server asked for credentials"); + UI.showStatus(_("Credentials are required"), "warning"); + }, + + setCredentials(e) { + // Prevent actually submitting the form + e.preventDefault(); + + let inputElemUsername = document.getElementById('noVNC_username_input'); + const username = inputElemUsername.value; + + let inputElemPassword = document.getElementById('noVNC_password_input'); + const password = inputElemPassword.value; + // Clear the input after reading the password + inputElemPassword.value = ""; + + UI.rfb.sendCredentials({ username: username, password: password }); + UI.reconnectPassword = password; + document.getElementById('noVNC_credentials_dlg') + .classList.remove('noVNC_open'); + }, + +/* ------^------- + * /PASSWORD + * ============== + * FULLSCREEN + * ------v------*/ + + toggleFullscreen() { + if (document.fullscreenElement || // alternative standard method + document.mozFullScreenElement || // currently working methods + document.webkitFullscreenElement || + document.msFullscreenElement) { + if (document.exitFullscreen) { + document.exitFullscreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } else if (document.msExitFullscreen) { + document.msExitFullscreen(); + } + } else { + if (document.documentElement.requestFullscreen) { + document.documentElement.requestFullscreen(); + } else if (document.documentElement.mozRequestFullScreen) { + document.documentElement.mozRequestFullScreen(); + } else if (document.documentElement.webkitRequestFullscreen) { + document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); + } else if (document.body.msRequestFullscreen) { + document.body.msRequestFullscreen(); + } + } + UI.updateFullscreenButton(); + }, + + updateFullscreenButton() { + if (document.fullscreenElement || // alternative standard method + document.mozFullScreenElement || // currently working methods + document.webkitFullscreenElement || + document.msFullscreenElement ) { + document.getElementById('noVNC_fullscreen_button') + .classList.add("noVNC_selected"); + } else { + document.getElementById('noVNC_fullscreen_button') + .classList.remove("noVNC_selected"); + } + }, + +/* ------^------- + * /FULLSCREEN + * ============== + * RESIZE + * ------v------*/ + + // Apply remote resizing or local scaling + applyResizeMode() { + if (!UI.rfb) return; + + UI.rfb.scaleViewport = UI.getSetting('resize') === 'scale'; + UI.rfb.resizeSession = UI.getSetting('resize') === 'remote'; + }, + +/* ------^------- + * /RESIZE + * ============== + * VIEW CLIPPING + * ------v------*/ + + // Update viewport clipping property for the connection. The normal + // case is to get the value from the setting. There are special cases + // for when the viewport is scaled or when a touch device is used. + updateViewClip() { + if (!UI.rfb) return; + + const scaling = UI.getSetting('resize') === 'scale'; + + // Some platforms have overlay scrollbars that are difficult + // to use in our case, which means we have to force panning + // FIXME: Working scrollbars can still be annoying to use with + // touch, so we should ideally be able to have both + // panning and scrollbars at the same time + + let brokenScrollbars = false; + + if (!hasScrollbarGutter) { + if (isIOS() || isAndroid() || isMac() || isChromeOS()) { + brokenScrollbars = true; + } + } + + if (scaling) { + // Can't be clipping if viewport is scaled to fit + UI.forceSetting('view_clip', false); + UI.rfb.clipViewport = false; + } else if (brokenScrollbars) { + UI.forceSetting('view_clip', true); + UI.rfb.clipViewport = true; + } else { + UI.enableSetting('view_clip'); + UI.rfb.clipViewport = UI.getSetting('view_clip'); + } + + // Changing the viewport may change the state of + // the dragging button + UI.updateViewDrag(); + }, + +/* ------^------- + * /VIEW CLIPPING + * ============== + * VIEWDRAG + * ------v------*/ + + toggleViewDrag() { + if (!UI.rfb) return; + + UI.rfb.dragViewport = !UI.rfb.dragViewport; + UI.updateViewDrag(); + }, + + updateViewDrag() { + if (!UI.connected) return; + + const viewDragButton = document.getElementById('noVNC_view_drag_button'); + + if ((!UI.rfb.clipViewport || !UI.rfb.clippingViewport) && + UI.rfb.dragViewport) { + // We are no longer clipping the viewport. Make sure + // viewport drag isn't active when it can't be used. + UI.rfb.dragViewport = false; + } + + if (UI.rfb.dragViewport) { + viewDragButton.classList.add("noVNC_selected"); + } else { + viewDragButton.classList.remove("noVNC_selected"); + } + + if (UI.rfb.clipViewport) { + viewDragButton.classList.remove("noVNC_hidden"); + } else { + viewDragButton.classList.add("noVNC_hidden"); + } + + viewDragButton.disabled = !UI.rfb.clippingViewport; + }, + +/* ------^------- + * /VIEWDRAG + * ============== + * QUALITY + * ------v------*/ + + updateQuality() { + if (!UI.rfb) return; + + UI.rfb.qualityLevel = parseInt(UI.getSetting('quality')); + }, + +/* ------^------- + * /QUALITY + * ============== + * COMPRESSION + * ------v------*/ + + updateCompression() { + if (!UI.rfb) return; + + UI.rfb.compressionLevel = parseInt(UI.getSetting('compression')); + }, + +/* ------^------- + * /COMPRESSION + * ============== + * KEYBOARD + * ------v------*/ + + showVirtualKeyboard() { + if (!isTouchDevice) return; + + const input = document.getElementById('noVNC_keyboardinput'); + + if (document.activeElement == input) return; + + input.focus(); + + try { + const l = input.value.length; + // Move the caret to the end + input.setSelectionRange(l, l); + } catch (err) { + // setSelectionRange is undefined in Google Chrome + } + }, + + hideVirtualKeyboard() { + if (!isTouchDevice) return; + + const input = document.getElementById('noVNC_keyboardinput'); + + if (document.activeElement != input) return; + + input.blur(); + }, + + toggleVirtualKeyboard() { + if (document.getElementById('noVNC_keyboard_button') + .classList.contains("noVNC_selected")) { + UI.hideVirtualKeyboard(); + } else { + UI.showVirtualKeyboard(); + } + }, + + onfocusVirtualKeyboard(event) { + document.getElementById('noVNC_keyboard_button') + .classList.add("noVNC_selected"); + if (UI.rfb) { + UI.rfb.focusOnClick = false; + } + }, + + onblurVirtualKeyboard(event) { + document.getElementById('noVNC_keyboard_button') + .classList.remove("noVNC_selected"); + if (UI.rfb) { + UI.rfb.focusOnClick = true; + } + }, + + keepVirtualKeyboard(event) { + const input = document.getElementById('noVNC_keyboardinput'); + + // Only prevent focus change if the virtual keyboard is active + if (document.activeElement != input) { + return; + } + + // Only allow focus to move to other elements that need + // focus to function properly + if (event.target.form !== undefined) { + switch (event.target.type) { + case 'text': + case 'email': + case 'search': + case 'password': + case 'tel': + case 'url': + case 'textarea': + case 'select-one': + case 'select-multiple': + return; + } + } + + event.preventDefault(); + }, + + keyboardinputReset() { + const kbi = document.getElementById('noVNC_keyboardinput'); + kbi.value = new Array(UI.defaultKeyboardinputLen).join("_"); + UI.lastKeyboardinput = kbi.value; + }, + + keyEvent(keysym, code, down) { + if (!UI.rfb) return; + + UI.rfb.sendKey(keysym, code, down); + }, + + // When normal keyboard events are left uncought, use the input events from + // the keyboardinput element instead and generate the corresponding key events. + // This code is required since some browsers on Android are inconsistent in + // sending keyCodes in the normal keyboard events when using on screen keyboards. + keyInput(event) { + + if (!UI.rfb) return; + + const newValue = event.target.value; + + if (!UI.lastKeyboardinput) { + UI.keyboardinputReset(); + } + const oldValue = UI.lastKeyboardinput; + + let newLen; + try { + // Try to check caret position since whitespace at the end + // will not be considered by value.length in some browsers + newLen = Math.max(event.target.selectionStart, newValue.length); + } catch (err) { + // selectionStart is undefined in Google Chrome + newLen = newValue.length; + } + const oldLen = oldValue.length; + + let inputs = newLen - oldLen; + let backspaces = inputs < 0 ? -inputs : 0; + + // Compare the old string with the new to account for + // text-corrections or other input that modify existing text + for (let i = 0; i < Math.min(oldLen, newLen); i++) { + if (newValue.charAt(i) != oldValue.charAt(i)) { + inputs = newLen - i; + backspaces = oldLen - i; + break; + } + } + + // Send the key events + for (let i = 0; i < backspaces; i++) { + UI.rfb.sendKey(KeyTable.XK_BackSpace, "Backspace"); + } + for (let i = newLen - inputs; i < newLen; i++) { + UI.rfb.sendKey(keysyms.lookup(newValue.charCodeAt(i))); + } + + // Control the text content length in the keyboardinput element + if (newLen > 2 * UI.defaultKeyboardinputLen) { + UI.keyboardinputReset(); + } else if (newLen < 1) { + // There always have to be some text in the keyboardinput + // element with which backspace can interact. + UI.keyboardinputReset(); + // This sometimes causes the keyboard to disappear for a second + // but it is required for the android keyboard to recognize that + // text has been added to the field + event.target.blur(); + // This has to be ran outside of the input handler in order to work + setTimeout(event.target.focus.bind(event.target), 0); + } else { + UI.lastKeyboardinput = newValue; + } + }, + +/* ------^------- + * /KEYBOARD + * ============== + * EXTRA KEYS + * ------v------*/ + + openExtraKeys() { + UI.closeAllPanels(); + UI.openControlbar(); + + document.getElementById('noVNC_modifiers') + .classList.add("noVNC_open"); + document.getElementById('noVNC_toggle_extra_keys_button') + .classList.add("noVNC_selected"); + }, + + closeExtraKeys() { + document.getElementById('noVNC_modifiers') + .classList.remove("noVNC_open"); + document.getElementById('noVNC_toggle_extra_keys_button') + .classList.remove("noVNC_selected"); + }, + + toggleExtraKeys() { + if (document.getElementById('noVNC_modifiers') + .classList.contains("noVNC_open")) { + UI.closeExtraKeys(); + } else { + UI.openExtraKeys(); + } + }, + + sendEsc() { + UI.sendKey(KeyTable.XK_Escape, "Escape"); + }, + + sendTab() { + UI.sendKey(KeyTable.XK_Tab, "Tab"); + }, + + toggleCtrl() { + const btn = document.getElementById('noVNC_toggle_ctrl_button'); + if (btn.classList.contains("noVNC_selected")) { + UI.sendKey(KeyTable.XK_Control_L, "ControlLeft", false); + btn.classList.remove("noVNC_selected"); + } else { + UI.sendKey(KeyTable.XK_Control_L, "ControlLeft", true); + btn.classList.add("noVNC_selected"); + } + }, + + toggleWindows() { + const btn = document.getElementById('noVNC_toggle_windows_button'); + if (btn.classList.contains("noVNC_selected")) { + UI.sendKey(KeyTable.XK_Super_L, "MetaLeft", false); + btn.classList.remove("noVNC_selected"); + } else { + UI.sendKey(KeyTable.XK_Super_L, "MetaLeft", true); + btn.classList.add("noVNC_selected"); + } + }, + + toggleAlt() { + const btn = document.getElementById('noVNC_toggle_alt_button'); + if (btn.classList.contains("noVNC_selected")) { + UI.sendKey(KeyTable.XK_Alt_L, "AltLeft", false); + btn.classList.remove("noVNC_selected"); + } else { + UI.sendKey(KeyTable.XK_Alt_L, "AltLeft", true); + btn.classList.add("noVNC_selected"); + } + }, + + sendCtrlAltDel() { + UI.rfb.sendCtrlAltDel(); + // See below + UI.rfb.focus(); + UI.idleControlbar(); + }, + + sendKey(keysym, code, down) { + UI.rfb.sendKey(keysym, code, down); + + // Move focus to the screen in order to be able to use the + // keyboard right after these extra keys. + // The exception is when a virtual keyboard is used, because + // if we focus the screen the virtual keyboard would be closed. + // In this case we focus our special virtual keyboard input + // element instead. + if (document.getElementById('noVNC_keyboard_button') + .classList.contains("noVNC_selected")) { + document.getElementById('noVNC_keyboardinput').focus(); + } else { + UI.rfb.focus(); + } + // fade out the controlbar to highlight that + // the focus has been moved to the screen + UI.idleControlbar(); + }, + +/* ------^------- + * /EXTRA KEYS + * ============== + * MISC + * ------v------*/ + + updateViewOnly() { + if (!UI.rfb) return; + UI.rfb.viewOnly = UI.getSetting('view_only'); + + // Hide input related buttons in view only mode + if (UI.rfb.viewOnly) { + document.getElementById('noVNC_keyboard_button') + .classList.add('noVNC_hidden'); + document.getElementById('noVNC_toggle_extra_keys_button') + .classList.add('noVNC_hidden'); + document.getElementById('noVNC_clipboard_button') + .classList.add('noVNC_hidden'); + } else { + document.getElementById('noVNC_keyboard_button') + .classList.remove('noVNC_hidden'); + document.getElementById('noVNC_toggle_extra_keys_button') + .classList.remove('noVNC_hidden'); + document.getElementById('noVNC_clipboard_button') + .classList.remove('noVNC_hidden'); + } + }, + + updateShowDotCursor() { + if (!UI.rfb) return; + UI.rfb.showDotCursor = UI.getSetting('show_dot'); + }, + + updateLogging() { + WebUtil.initLogging(UI.getSetting('logging')); + }, + + updateDesktopName(e) { + UI.desktopName = e.detail.name; + // Display the desktop name in the document title + document.title = e.detail.name + " - " + PAGE_TITLE; + }, + + bell(e) { + if (WebUtil.getConfigVar('bell', 'on') === 'on') { + const promise = document.getElementById('noVNC_bell').play(); + // The standards disagree on the return value here + if (promise) { + promise.catch((e) => { + if (e.name === "NotAllowedError") { + // Ignore when the browser doesn't let us play audio. + // It is common that the browsers require audio to be + // initiated from a user action. + } else { + Log.Error("Unable to play bell: " + e); + } + }); + } + } + }, + + //Helper to add options to dropdown. + addOption(selectbox, text, value) { + const optn = document.createElement("OPTION"); + optn.text = text; + optn.value = value; + selectbox.options.add(optn); + }, + +/* ------^------- + * /MISC + * ============== + */ }; // Set up translations -const LINGUAS = [ - "cs", - "de", - "el", - "es", - "ja", - "ko", - "nl", - "pl", - "ru", - "sv", - "tr", - "zh_CN", - "zh_TW", -]; +const LINGUAS = ["cs", "de", "el", "es", "fr", "it", "ja", "ko", "nl", "pl", "pt_BR", "ru", "sv", "tr", "zh_CN", "zh_TW"]; l10n.setup(LINGUAS); if (l10n.language === "en" || l10n.dictionary !== undefined) { - UI.prime(); + UI.prime(); } else { - WebUtil.fetchJSON("app/locale/" + l10n.language + ".json") - .then((translations) => { - l10n.dictionary = translations; - }) - .catch((err) => Log.Error("Failed to load translations: " + err)) - .then(UI.prime); + fetch('app/locale/' + l10n.language + '.json') + .then((response) => { + if (!response.ok) { + throw Error("" + response.status + " " + response.statusText); + } + return response.json(); + }) + .then((translations) => { l10n.dictionary = translations; }) + .catch(err => Log.Error("Failed to load translations: " + err)) + .then(UI.prime); } export default UI; diff --git a/base-notebook/resources/vnc/vnc.html b/base-notebook/resources/vnc/vnc.html index 03174103..9dde61b8 100644 --- a/base-notebook/resources/vnc/vnc.html +++ b/base-notebook/resources/vnc/vnc.html @@ -1,6 +1,7 @@ - + + noVNC - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - - - + + + +
-
-
noVNC encountered an error:
-
-
-
+
+
noVNC encountered an error:
+
+
+
- -
- -
-
-
+
+
+ +
+ +

no
VNC

+ +
+ + + -
-

no
VNC

- - - - - -
- -
- - - -
+ +
+ +
+ + + +
- - - - - - + + + + + + +
-
- - - -
+ + + +
-
- Power -
- - - +
+ Power +
+ + + +
-
- - - -
+ + + +
-
- Clipboard -
- -
- +
+ Clipboard +
+

+ Edit clipboard content in the textarea below. +

+
-
- - - - - - -
+
+ + + + + + +
-
    -
  • - Settings -
  • -
  • - -
  • -
  • - -
  • -

  • -
  • - -
  • -
  • - - -
  • -

  • -
  • -
    Advanced
    -
    -
      -
    • - - -
    • -
    • - - -
    • -

    • -
    • - - -
    • -
    • -
      WebSocket
      -
      -
        +
        + Settings +
        +
          +
        • + +
        • +
        • + +
        • +

        • +
        • + +
        • +
        • + + +
        • +

        • +
        • +
          Advanced
          +
            +
          • + + +
          • +
          • + + +
          • +

          • +
          • + + +
          • - +
            WebSocket
            +
              +
            • + +
            • +
            • + + +
            • +
            • + + +
            • +
            • + + +
            • +
          • +

          • - - +
          • - - + +
          • +

          • - - +
          • -
          -
          -
        • -

        • -
        • - -
        • -
        • - - -
        • -

        • -
        • - -
        • -

        • - -
        • - -
        • -
        -
      -
    • -

    • -
    • - Version: - -
    • -
    +

  • + +
  • + +
  • +
+ +

  • +
  • + Version: + +
  • + +
    +
    + + + +
    -
    - - -
    -
    -
    +
    + +
    +
    +
    -
    -
    - -

    - Workspace
    Desktop
    VNC -

    -
    -
    - Connect -
    +
    + +
    + +
    - -
    +
    + + +
    +
    +
    + Server identity +
    +
    + The server has provided the following identifying information: +
    +
    + Fingerprint: + +
    +
    + Please verify that the information is correct and press + "Approve". Otherwise press "Reject". +
    +
    + + +
    +
    -
    -
    -
      -
    • - - -
    • -
    • - - -
    • -
    • - -
    • -
    -
    -
    +
    +
    + Credentials +
    +
    + + +
    +
    + + +
    +
    + +
    +
    -
    -
    - -
    -
    +
    +
    + +
    +
    - -
    - - - +
    - - - - - + + \ No newline at end of file