git: 0cb08811e85e - main - Add net/lldap: Light LDAP implementation for authentication

From: Li-Wen Hsu <lwhsu_at_FreeBSD.org>
Date: Fri, 25 Apr 2025 16:54:35 UTC
The branch main has been updated by lwhsu:

URL: https://cgit.FreeBSD.org/ports/commit/?id=0cb08811e85ef52c7058197813b982246e86c253

commit 0cb08811e85ef52c7058197813b982246e86c253
Author:     SHENGYI HONG <aokblast@FreeBSD.org>
AuthorDate: 2025-04-25 16:53:50 +0000
Commit:     Li-Wen Hsu <lwhsu@FreeBSD.org>
CommitDate: 2025-04-25 16:53:50 +0000

    Add net/lldap: Light LDAP implementation for authentication
    
    Differential Revision:  https://reviews.freebsd.org/D49986
---
 net/Makefile                                       |    1 +
 net/lldap/Makefile                                 |   45 +
 net/lldap/Makefile.crates                          |  522 ++++++++++
 net/lldap/distinfo                                 | 1049 ++++++++++++++++++++
 net/lldap/files/patch-Cargo.toml                   |    8 +
 .../patch-example__configs_freebsd_rc.d__lldap     |   10 +
 net/lldap/pkg-descr                                |    2 +
 net/lldap/pkg-plist                                |   22 +
 8 files changed, 1659 insertions(+)

diff --git a/net/Makefile b/net/Makefile
index 81000ae6b921..289c58ff0c15 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -453,6 +453,7 @@
     SUBDIR += linux-rl9-tcp_wrappers-libs
     SUBDIR += liveMedia
     SUBDIR += lla
+    SUBDIR += lldap
     SUBDIR += lua-luasocket
     SUBDIR += lualdap
     SUBDIR += mDNSResponder
diff --git a/net/lldap/Makefile b/net/lldap/Makefile
new file mode 100644
index 000000000000..ae2d82937d9c
--- /dev/null
+++ b/net/lldap/Makefile
@@ -0,0 +1,45 @@
+PORTNAME=	lldap
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.6.1
+CATEGORIES=	net
+
+MAINTAINER=	aokblast@FreeBSD.org
+COMMENT=	Light LDAP implementation for authentication
+WWW=		https://github.com/lldap/lldap
+
+LICENSE=	GPLv3
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	gzip:archivers/gzip \
+		wasm-pack:www/wasm-pack \
+		wasm-bindgen:www/wasm-bindgen-cli
+LIB_DEPENDS=	libzstd.so:archivers/zstd
+
+USES=		cargo
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	inejge:ldap3
+GH_PROJECT=	ldap3:ldap3
+GH_SUBDIR=	third_party/ldap3:ldap3
+GH_TAGNAME=	ba38bc573d63b:ldap3
+
+CARGO_INSTALL_PATH=	server set-password migration-tool
+
+USERS=		ldap
+GROUPS=		ldap
+
+post-build:
+	cd ${WRKSRC} && WASM_PACK_CACHE=.wasm-pack-cache ./app/build.sh
+
+post-install:
+	${MKDIR} ${STAGEDIR}${PREFIX}/lldap_server/app
+	${INSTALL_SCRIPT} ${WRKSRC}/example_configs/freebsd/rc.d_lldap ${STAGEDIR}${PREFIX}/etc/rc.d/lldap
+	cd ${WRKSRC}/app && \
+		${COPYTREE_SHARE} pkg ${STAGEDIR}${PREFIX}/lldap_server/app && \
+		${COPYTREE_SHARE} static ${STAGEDIR}${PREFIX}/lldap_server/app && \
+		${CP} index.html ${STAGEDIR}${PREFIX}/lldap_server/app
+	${INSTALL_PROGRAM} ${STAGEDIR}${PREFIX}/bin/lldap ${STAGEDIR}${PREFIX}/lldap_server
+	${MKDIR} ${STAGEDIR}${PREFIX}/share/lldap
+	${INSTALL_DATA} ${WRKSRC}/lldap_config.docker_template.toml ${STAGEDIR}${PREFIX}/share/lldap/ldap_config.toml.example
+
+.include <bsd.port.mk>
diff --git a/net/lldap/Makefile.crates b/net/lldap/Makefile.crates
new file mode 100644
index 000000000000..d85aa97e90cd
--- /dev/null
+++ b/net/lldap/Makefile.crates
@@ -0,0 +1,522 @@
+CARGO_CRATES=	actix-0.13.5 \
+		actix-codec-0.5.2 \
+		actix-files-0.6.6 \
+		actix-http-3.9.0 \
+		actix-macros-0.2.4 \
+		actix-router-0.5.3 \
+		actix-rt-2.10.0 \
+		actix-server-2.5.0 \
+		actix-service-2.0.2 \
+		actix-tls-3.4.0 \
+		actix-utils-3.0.1 \
+		actix-web-4.9.0 \
+		actix-web-codegen-4.3.0 \
+		actix-web-httpauth-0.8.2 \
+		actix_derive-0.6.2 \
+		addr2line-0.24.2 \
+		adler2-2.0.0 \
+		ahash-0.8.11 \
+		aho-corasick-1.1.3 \
+		aliasable-0.1.3 \
+		alloc-no-stdlib-2.0.4 \
+		alloc-stdlib-0.2.2 \
+		allocator-api2-0.2.18 \
+		android-tzdata-0.1.1 \
+		android_system_properties-0.1.5 \
+		anstream-0.6.17 \
+		anstyle-1.0.10 \
+		anstyle-parse-0.2.6 \
+		anstyle-query-1.1.2 \
+		anstyle-wincon-3.0.6 \
+		anyhow-1.0.92 \
+		arrayref-0.3.9 \
+		arrayvec-0.5.2 \
+		ascii-0.9.3 \
+		asn1-rs-0.5.2 \
+		asn1-rs-derive-0.4.0 \
+		asn1-rs-impl-0.1.0 \
+		assert_cmd-2.0.16 \
+		async-stream-0.3.6 \
+		async-stream-impl-0.3.6 \
+		async-trait-0.1.83 \
+		atoi-2.0.0 \
+		atomic-0.6.0 \
+		autocfg-1.4.0 \
+		backtrace-0.3.74 \
+		base64-0.13.1 \
+		base64-0.21.7 \
+		base64-0.22.1 \
+		base64ct-1.6.0 \
+		bincode-1.3.3 \
+		bitflags-1.3.2 \
+		bitflags-2.6.0 \
+		blake2b_simd-0.5.11 \
+		block-buffer-0.9.0 \
+		block-buffer-0.10.4 \
+		boolinator-2.4.0 \
+		brotli-6.0.0 \
+		brotli-decompressor-4.0.1 \
+		bson-1.2.4 \
+		bstr-1.10.0 \
+		bumpalo-3.16.0 \
+		bytemuck-1.19.0 \
+		byteorder-1.5.0 \
+		bytes-1.8.0 \
+		bytestring-1.3.1 \
+		cc-1.1.33 \
+		cfg-if-1.0.0 \
+		chrono-0.4.38 \
+		clap-4.5.20 \
+		clap_builder-4.5.20 \
+		clap_derive-4.5.18 \
+		clap_lex-0.7.2 \
+		color_quant-1.1.0 \
+		colorchoice-1.0.3 \
+		combine-3.8.1 \
+		console_error_panic_hook-0.1.7 \
+		const-oid-0.9.6 \
+		constant_time_eq-0.1.5 \
+		convert_case-0.4.0 \
+		cookie-0.16.2 \
+		core-foundation-0.9.4 \
+		core-foundation-sys-0.8.7 \
+		cpufeatures-0.2.14 \
+		crc-3.2.1 \
+		crc-catalog-2.4.0 \
+		crc32fast-1.4.2 \
+		cron-0.12.1 \
+		crossbeam-channel-0.5.13 \
+		crossbeam-queue-0.3.11 \
+		crossbeam-utils-0.8.20 \
+		crossterm-0.23.2 \
+		crossterm_winapi-0.9.1 \
+		crypto-common-0.1.6 \
+		crypto-mac-0.10.1 \
+		crypto-mac-0.11.1 \
+		ct-codecs-1.1.2 \
+		curve25519-dalek-3.2.0 \
+		darling-0.14.4 \
+		darling_core-0.14.4 \
+		darling_macro-0.14.4 \
+		dashmap-5.5.3 \
+		data-encoding-2.6.0 \
+		der-0.7.9 \
+		der-parser-8.2.0 \
+		deranged-0.3.11 \
+		derivative-2.2.0 \
+		derive_builder-0.12.0 \
+		derive_builder_core-0.12.0 \
+		derive_builder_macro-0.12.0 \
+		derive_more-0.99.18 \
+		derive_more-1.0.0 \
+		derive_more-impl-1.0.0 \
+		derive_utils-0.11.2 \
+		diff-0.1.13 \
+		difflib-0.4.0 \
+		digest-0.9.0 \
+		digest-0.10.7 \
+		displaydoc-0.1.7 \
+		displaydoc-0.2.5 \
+		doc-comment-0.3.3 \
+		dotenvy-0.15.7 \
+		downcast-0.11.0 \
+		either-1.13.0 \
+		email-encoding-0.2.1 \
+		email_address-0.2.9 \
+		encoding_rs-0.8.35 \
+		equivalent-1.0.1 \
+		errno-0.3.9 \
+		etcetera-0.8.0 \
+		event-listener-2.5.3 \
+		failure-0.1.8 \
+		failure_derive-0.1.8 \
+		fastrand-1.9.0 \
+		fastrand-2.1.1 \
+		fiat-crypto-0.2.9 \
+		figment-0.10.19 \
+		figment_file_provider_adapter-0.1.1 \
+		flate2-1.0.34 \
+		float-cmp-0.9.0 \
+		flume-0.11.1 \
+		fnv-1.0.7 \
+		form_urlencoded-1.2.1 \
+		fragile-2.0.0 \
+		fslock-0.2.1 \
+		futures-0.3.31 \
+		futures-channel-0.3.31 \
+		futures-core-0.3.31 \
+		futures-enum-0.1.17 \
+		futures-executor-0.3.31 \
+		futures-intrusive-0.5.0 \
+		futures-io-0.3.31 \
+		futures-macro-0.3.31 \
+		futures-sink-0.3.31 \
+		futures-task-0.3.31 \
+		futures-util-0.3.31 \
+		generic-array-0.14.7 \
+		generic-bytes-0.1.0 \
+		getrandom-0.1.16 \
+		getrandom-0.2.15 \
+		gimli-0.31.1 \
+		gloo-0.4.2 \
+		gloo-console-0.2.3 \
+		gloo-dialogs-0.1.1 \
+		gloo-events-0.1.2 \
+		gloo-file-0.2.3 \
+		gloo-net-0.6.0 \
+		gloo-render-0.1.1 \
+		gloo-storage-0.2.2 \
+		gloo-timers-0.2.6 \
+		gloo-utils-0.1.7 \
+		gloo-utils-0.2.0 \
+		graphql-introspection-query-0.2.0 \
+		graphql-parser-0.2.3 \
+		graphql-parser-0.3.0 \
+		graphql-parser-0.4.0 \
+		graphql_client-0.10.0 \
+		graphql_client-0.11.0 \
+		graphql_client_codegen-0.10.0 \
+		graphql_client_codegen-0.11.0 \
+		graphql_query_derive-0.10.0 \
+		graphql_query_derive-0.11.0 \
+		h2-0.3.26 \
+		hashbrown-0.9.1 \
+		hashbrown-0.14.5 \
+		hashbrown-0.15.0 \
+		hashlink-0.8.4 \
+		heck-0.3.3 \
+		heck-0.4.1 \
+		heck-0.5.0 \
+		hermit-abi-0.3.9 \
+		hex-0.4.3 \
+		hkdf-0.11.0 \
+		hkdf-0.12.4 \
+		hmac-0.10.1 \
+		hmac-0.11.0 \
+		hmac-0.12.1 \
+		home-0.5.9 \
+		http-0.2.12 \
+		http-1.1.0 \
+		http-body-0.4.6 \
+		http-range-0.1.5 \
+		httparse-1.9.5 \
+		httpdate-1.0.3 \
+		hyper-0.14.31 \
+		hyper-rustls-0.24.2 \
+		iana-time-zone-0.1.61 \
+		iana-time-zone-haiku-0.1.2 \
+		ident_case-1.0.1 \
+		idna-0.2.3 \
+		idna-0.3.0 \
+		idna-0.5.0 \
+		if_chain-1.0.2 \
+		image-0.24.9 \
+		impl-more-0.1.8 \
+		indexmap-1.6.2 \
+		indexmap-2.6.0 \
+		inherent-1.0.11 \
+		inlinable_string-0.1.15 \
+		instant-0.1.13 \
+		ipnet-2.10.1 \
+		is_terminal_polyfill-1.70.1 \
+		itertools-0.10.5 \
+		itoa-1.0.11 \
+		jobserver-0.1.32 \
+		jpeg-decoder-0.3.1 \
+		js-sys-0.3.72 \
+		juniper-0.15.12 \
+		juniper_codegen-0.15.9 \
+		jwt-0.13.0 \
+		jwt-0.16.0 \
+		language-tags-0.3.2 \
+		lazy_static-1.5.0 \
+		ldap3-0.11.5 \
+		ldap3_proto-0.5.2 \
+		lettre-0.10.4 \
+		libc-0.2.161 \
+		libm-0.2.11 \
+		libsqlite3-sys-0.27.0 \
+		linked-hash-map-0.5.6 \
+		linux-raw-sys-0.4.14 \
+		local-channel-0.1.5 \
+		local-waker-0.1.4 \
+		lock_api-0.4.12 \
+		log-0.4.22 \
+		matchers-0.1.0 \
+		matches-0.1.10 \
+		md-5-0.10.6 \
+		memchr-2.7.4 \
+		memoffset-0.7.1 \
+		mime-0.3.17 \
+		mime_guess-2.0.5 \
+		minimal-lexical-0.2.1 \
+		miniz_oxide-0.8.0 \
+		mio-0.8.11 \
+		mio-1.0.2 \
+		mockall-0.11.4 \
+		mockall_derive-0.11.4 \
+		mutually_exclusive_features-0.1.0 \
+		nix-0.26.4 \
+		nom-7.1.3 \
+		normalize-line-endings-0.3.0 \
+		nu-ansi-term-0.46.0 \
+		num-bigint-0.4.6 \
+		num-bigint-dig-0.8.4 \
+		num-conv-0.1.0 \
+		num-integer-0.1.46 \
+		num-iter-0.1.45 \
+		num-traits-0.2.19 \
+		object-0.36.5 \
+		oid-registry-0.6.1 \
+		once_cell-1.20.2 \
+		opaque-debug-0.3.1 \
+		opaque-ke-0.7.0 \
+		openssl-probe-0.1.5 \
+		ordered-float-3.9.2 \
+		orion-0.17.7 \
+		ouroboros-0.17.2 \
+		ouroboros_macro-0.17.2 \
+		overload-0.1.1 \
+		parking_lot-0.12.3 \
+		parking_lot_core-0.9.10 \
+		paste-1.0.15 \
+		pear-0.2.9 \
+		pear_codegen-0.2.9 \
+		peg-0.8.4 \
+		peg-macros-0.8.4 \
+		peg-runtime-0.8.3 \
+		pem-rfc7468-0.7.0 \
+		percent-encoding-2.3.1 \
+		pin-project-1.1.7 \
+		pin-project-internal-1.1.7 \
+		pin-project-lite-0.2.15 \
+		pin-utils-0.1.0 \
+		pkcs1-0.7.5 \
+		pkcs8-0.10.2 \
+		pkg-config-0.3.31 \
+		powerfmt-0.2.0 \
+		ppv-lite86-0.2.20 \
+		predicates-2.1.5 \
+		predicates-3.1.2 \
+		predicates-core-1.0.8 \
+		predicates-tree-1.0.11 \
+		pretty_assertions-1.4.1 \
+		proc-macro-error-1.0.4 \
+		proc-macro-error-attr-1.0.4 \
+		proc-macro-error-attr2-2.0.0 \
+		proc-macro-error2-2.0.1 \
+		proc-macro2-1.0.89 \
+		proc-macro2-diagnostics-0.10.1 \
+		quote-1.0.37 \
+		quoted_printable-0.4.8 \
+		rand-0.7.3 \
+		rand-0.8.5 \
+		rand_chacha-0.2.2 \
+		rand_chacha-0.3.1 \
+		rand_core-0.5.1 \
+		rand_core-0.6.4 \
+		rand_hc-0.2.0 \
+		redox_syscall-0.5.7 \
+		regex-1.11.1 \
+		regex-automata-0.1.10 \
+		regex-automata-0.4.8 \
+		regex-lite-0.1.6 \
+		regex-syntax-0.6.29 \
+		regex-syntax-0.8.5 \
+		requestty-0.4.1 \
+		requestty-ui-0.4.1 \
+		reqwest-0.11.27 \
+		ring-0.16.20 \
+		ring-0.17.8 \
+		route-recognizer-0.3.1 \
+		rsa-0.9.6 \
+		rust-argon2-0.8.3 \
+		rustc-demangle-0.1.24 \
+		rustc_version-0.4.1 \
+		rusticata-macros-4.1.0 \
+		rustix-0.38.38 \
+		rustls-0.20.9 \
+		rustls-0.21.12 \
+		rustls-native-certs-0.6.3 \
+		rustls-pemfile-1.0.4 \
+		rustls-webpki-0.100.3 \
+		rustls-webpki-0.101.7 \
+		rustversion-1.0.18 \
+		ryu-1.0.18 \
+		schannel-0.1.26 \
+		scoped-tls-hkt-0.1.5 \
+		scopeguard-1.2.0 \
+		sct-0.7.1 \
+		sea-bae-0.2.1 \
+		sea-orm-0.12.15 \
+		sea-orm-macros-0.12.15 \
+		sea-query-0.30.7 \
+		sea-query-binder-0.5.0 \
+		secstr-0.5.1 \
+		security-framework-2.11.1 \
+		security-framework-sys-2.12.0 \
+		semver-1.0.23 \
+		serde-1.0.214 \
+		serde-wasm-bindgen-0.3.1 \
+		serde_bytes-0.11.15 \
+		serde_derive-1.0.214 \
+		serde_json-1.0.132 \
+		serde_spanned-0.6.8 \
+		serde_urlencoded-0.7.1 \
+		serial_test-2.0.0 \
+		serial_test_derive-2.0.0 \
+		sha1-0.10.6 \
+		sha2-0.9.9 \
+		sha2-0.10.8 \
+		sharded-slab-0.1.7 \
+		shlex-1.3.0 \
+		signal-hook-0.3.17 \
+		signal-hook-mio-0.2.4 \
+		signal-hook-registry-1.4.2 \
+		signature-2.2.0 \
+		slab-0.4.9 \
+		smallvec-1.13.2 \
+		smartstring-1.0.1 \
+		smawk-0.3.2 \
+		socket2-0.4.10 \
+		socket2-0.5.7 \
+		spin-0.5.2 \
+		spin-0.9.8 \
+		spki-0.7.3 \
+		sqlformat-0.2.6 \
+		sqlx-0.7.4 \
+		sqlx-core-0.7.4 \
+		sqlx-macros-0.7.4 \
+		sqlx-macros-core-0.7.4 \
+		sqlx-mysql-0.7.4 \
+		sqlx-postgres-0.7.4 \
+		sqlx-sqlite-0.7.4 \
+		static_assertions-1.1.0 \
+		stringprep-0.1.5 \
+		strsim-0.10.0 \
+		strsim-0.11.1 \
+		strum-0.25.0 \
+		strum_macros-0.25.3 \
+		subtle-2.4.1 \
+		syn-1.0.109 \
+		syn-2.0.86 \
+		sync_wrapper-0.1.2 \
+		synstructure-0.12.6 \
+		system-configuration-0.5.1 \
+		system-configuration-sys-0.5.0 \
+		tempfile-3.13.0 \
+		termtree-0.4.1 \
+		textwrap-0.15.2 \
+		thiserror-1.0.66 \
+		thiserror-impl-1.0.66 \
+		thread_local-1.1.8 \
+		time-0.3.36 \
+		time-core-0.1.2 \
+		time-macros-0.2.18 \
+		tinyvec-1.8.0 \
+		tinyvec_macros-0.1.1 \
+		tokio-1.41.0 \
+		tokio-macros-2.4.0 \
+		tokio-rustls-0.23.4 \
+		tokio-rustls-0.24.1 \
+		tokio-stream-0.1.16 \
+		tokio-util-0.7.12 \
+		toml-0.8.19 \
+		toml_datetime-0.6.8 \
+		toml_edit-0.22.22 \
+		tower-service-0.3.3 \
+		tracing-0.1.40 \
+		tracing-actix-web-0.7.14 \
+		tracing-attributes-0.1.27 \
+		tracing-core-0.1.32 \
+		tracing-forest-0.1.6 \
+		tracing-log-0.2.0 \
+		tracing-subscriber-0.3.18 \
+		try-lock-0.2.5 \
+		typenum-1.17.0 \
+		uncased-0.9.10 \
+		unicase-2.8.0 \
+		unicode-bidi-0.3.17 \
+		unicode-ident-1.0.13 \
+		unicode-linebreak-0.1.5 \
+		unicode-normalization-0.1.24 \
+		unicode-properties-0.1.3 \
+		unicode-segmentation-1.12.0 \
+		unicode-width-0.1.14 \
+		unicode-xid-0.2.6 \
+		unicode_categories-0.1.1 \
+		unreachable-1.0.0 \
+		untrusted-0.7.1 \
+		untrusted-0.9.0 \
+		url-2.5.2 \
+		url-escape-0.1.1 \
+		urlencoding-2.1.3 \
+		utf8parse-0.2.2 \
+		uuid-0.8.2 \
+		uuid-1.11.0 \
+		v_htmlescape-0.15.8 \
+		validator-0.14.0 \
+		validator_derive-0.14.0 \
+		validator_types-0.14.0 \
+		valuable-0.1.0 \
+		vcpkg-0.2.15 \
+		version_check-0.9.5 \
+		void-1.0.2 \
+		wait-timeout-0.2.0 \
+		want-0.3.1 \
+		wasi-0.9.0+wasi-snapshot-preview1 \
+		wasi-0.11.0+wasi-snapshot-preview1 \
+		wasite-0.1.0 \
+		wasm-bindgen-0.2.95 \
+		wasm-bindgen-backend-0.2.95 \
+		wasm-bindgen-futures-0.4.45 \
+		wasm-bindgen-macro-0.2.95 \
+		wasm-bindgen-macro-support-0.2.95 \
+		wasm-bindgen-shared-0.2.95 \
+		web-sys-0.3.72 \
+		webpki-0.22.4 \
+		webpki-roots-0.22.6 \
+		webpki-roots-0.23.1 \
+		webpki-roots-0.25.4 \
+		whoami-1.5.2 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-core-0.52.0 \
+		windows-sys-0.48.0 \
+		windows-sys-0.52.0 \
+		windows-sys-0.59.0 \
+		windows-targets-0.48.5 \
+		windows-targets-0.52.6 \
+		windows_aarch64_gnullvm-0.48.5 \
+		windows_aarch64_gnullvm-0.52.6 \
+		windows_aarch64_msvc-0.48.5 \
+		windows_aarch64_msvc-0.52.6 \
+		windows_i686_gnu-0.48.5 \
+		windows_i686_gnu-0.52.6 \
+		windows_i686_gnullvm-0.52.6 \
+		windows_i686_msvc-0.48.5 \
+		windows_i686_msvc-0.52.6 \
+		windows_x86_64_gnu-0.48.5 \
+		windows_x86_64_gnu-0.52.6 \
+		windows_x86_64_gnullvm-0.48.5 \
+		windows_x86_64_gnullvm-0.52.6 \
+		windows_x86_64_msvc-0.48.5 \
+		windows_x86_64_msvc-0.52.6 \
+		winnow-0.6.20 \
+		winreg-0.50.0 \
+		x509-parser-0.15.1 \
+		yansi-1.0.1 \
+		yew-0.19.3 \
+		yew-macro-0.19.3 \
+		yew-router-0.16.0 \
+		yew-router-macro-0.16.0 \
+		zerocopy-0.7.35 \
+		zerocopy-derive-0.7.35 \
+		zeroize-1.8.1 \
+		zeroize_derive-1.4.2 \
+		zstd-0.13.2 \
+		zstd-safe-7.2.1 \
+		zstd-sys-2.0.13+zstd.1.5.6 \
+		lber@git+https://github.com/inejge/ldap3/\#ba38bc573d63b109b92dca80898633512d5c47df \
+		yew_form,yew_form_derive@git+https://github.com/jfbilodeau/yew_form?rev=4b9fabffb63393ec7626a4477fd36de12a07fac9\#4b9fabffb63393ec7626a4477fd36de12a07fac9
diff --git a/net/lldap/distinfo b/net/lldap/distinfo
new file mode 100644
index 000000000000..a369b6f80284
--- /dev/null
+++ b/net/lldap/distinfo
@@ -0,0 +1,1049 @@
+TIMESTAMP = 1745421509
+SHA256 (rust/crates/actix-0.13.5.crate) = de7fa236829ba0841304542f7614c42b80fca007455315c45c785ccfa873a85b
+SIZE (rust/crates/actix-0.13.5.crate) = 80964
+SHA256 (rust/crates/actix-codec-0.5.2.crate) = 5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a
+SIZE (rust/crates/actix-codec-0.5.2.crate) = 14085
+SHA256 (rust/crates/actix-files-0.6.6.crate) = 0773d59061dedb49a8aed04c67291b9d8cf2fe0b60130a381aab53c6dd86e9be
+SIZE (rust/crates/actix-files-0.6.6.crate) = 42722
+SHA256 (rust/crates/actix-http-3.9.0.crate) = d48f96fc3003717aeb9856ca3d02a8c7de502667ad76eeacd830b48d2e91fac4
+SIZE (rust/crates/actix-http-3.9.0.crate) = 162122
+SHA256 (rust/crates/actix-macros-0.2.4.crate) = e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb
+SIZE (rust/crates/actix-macros-0.2.4.crate) = 8380
+SHA256 (rust/crates/actix-router-0.5.3.crate) = 13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8
+SIZE (rust/crates/actix-router-0.5.3.crate) = 33145
+SHA256 (rust/crates/actix-rt-2.10.0.crate) = 24eda4e2a6e042aa4e55ac438a2ae052d3b5da0ecf83d7411e1a368946925208
+SIZE (rust/crates/actix-rt-2.10.0.crate) = 22608
+SHA256 (rust/crates/actix-server-2.5.0.crate) = 7ca2549781d8dd6d75c40cf6b6051260a2cc2f3c62343d761a969a0640646894
+SIZE (rust/crates/actix-server-2.5.0.crate) = 40938
+SHA256 (rust/crates/actix-service-2.0.2.crate) = 3b894941f818cfdc7ccc4b9e60fa7e53b5042a2e8567270f9147d5591893373a
+SIZE (rust/crates/actix-service-2.0.2.crate) = 25293
+SHA256 (rust/crates/actix-tls-3.4.0.crate) = ac453898d866cdbecdbc2334fe1738c747b4eba14a677261f2b768ba05329389
+SIZE (rust/crates/actix-tls-3.4.0.crate) = 44317
+SHA256 (rust/crates/actix-utils-3.0.1.crate) = 88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8
+SIZE (rust/crates/actix-utils-3.0.1.crate) = 10096
+SHA256 (rust/crates/actix-web-4.9.0.crate) = 9180d76e5cc7ccbc4d60a506f2c727730b154010262df5b910eb17dbe4b8cb38
+SIZE (rust/crates/actix-web-4.9.0.crate) = 244518
+SHA256 (rust/crates/actix-web-codegen-4.3.0.crate) = f591380e2e68490b5dfaf1dd1aa0ebe78d84ba7067078512b4ea6e4492d622b8
+SIZE (rust/crates/actix-web-codegen-4.3.0.crate) = 20382
+SHA256 (rust/crates/actix-web-httpauth-0.8.2.crate) = 456348ed9dcd72a13a1f4a660449fafdecee9ac8205552e286809eb5b0b29bd3
+SIZE (rust/crates/actix-web-httpauth-0.8.2.crate) = 31612
+SHA256 (rust/crates/actix_derive-0.6.2.crate) = b6ac1e58cded18cb28ddc17143c4dea5345b3ad575e14f32f66e4054a56eb271
+SIZE (rust/crates/actix_derive-0.6.2.crate) = 9087
+SHA256 (rust/crates/addr2line-0.24.2.crate) = dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1
+SIZE (rust/crates/addr2line-0.24.2.crate) = 39015
+SHA256 (rust/crates/adler2-2.0.0.crate) = 512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627
+SIZE (rust/crates/adler2-2.0.0.crate) = 13529
+SHA256 (rust/crates/ahash-0.8.11.crate) = e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011
+SIZE (rust/crates/ahash-0.8.11.crate) = 43607
+SHA256 (rust/crates/aho-corasick-1.1.3.crate) = 8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916
+SIZE (rust/crates/aho-corasick-1.1.3.crate) = 183311
+SHA256 (rust/crates/aliasable-0.1.3.crate) = 250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd
+SIZE (rust/crates/aliasable-0.1.3.crate) = 6169
+SHA256 (rust/crates/alloc-no-stdlib-2.0.4.crate) = cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3
+SIZE (rust/crates/alloc-no-stdlib-2.0.4.crate) = 10105
+SHA256 (rust/crates/alloc-stdlib-0.2.2.crate) = 94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece
+SIZE (rust/crates/alloc-stdlib-0.2.2.crate) = 6693
+SHA256 (rust/crates/allocator-api2-0.2.18.crate) = 5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f
+SIZE (rust/crates/allocator-api2-0.2.18.crate) = 62504
+SHA256 (rust/crates/android-tzdata-0.1.1.crate) = e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0
+SIZE (rust/crates/android-tzdata-0.1.1.crate) = 7674
+SHA256 (rust/crates/android_system_properties-0.1.5.crate) = 819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311
+SIZE (rust/crates/android_system_properties-0.1.5.crate) = 5243
+SHA256 (rust/crates/anstream-0.6.17.crate) = 23a1e53f0f5d86382dafe1cf314783b2044280f406e7e1506368220ad11b1338
+SIZE (rust/crates/anstream-0.6.17.crate) = 29445
+SHA256 (rust/crates/anstyle-1.0.10.crate) = 55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9
+SIZE (rust/crates/anstyle-1.0.10.crate) = 15725
+SHA256 (rust/crates/anstyle-parse-0.2.6.crate) = 3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9
+SIZE (rust/crates/anstyle-parse-0.2.6.crate) = 22343
+SHA256 (rust/crates/anstyle-query-1.1.2.crate) = 79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c
+SIZE (rust/crates/anstyle-query-1.1.2.crate) = 9969
+SHA256 (rust/crates/anstyle-wincon-3.0.6.crate) = 2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125
+SIZE (rust/crates/anstyle-wincon-3.0.6.crate) = 12271
+SHA256 (rust/crates/anyhow-1.0.92.crate) = 74f37166d7d48a0284b99dd824694c26119c700b53bf0d1540cdb147dbdaaf13
+SIZE (rust/crates/anyhow-1.0.92.crate) = 47459
+SHA256 (rust/crates/arrayref-0.3.9.crate) = 76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb
+SIZE (rust/crates/arrayref-0.3.9.crate) = 9186
+SHA256 (rust/crates/arrayvec-0.5.2.crate) = 23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b
+SIZE (rust/crates/arrayvec-0.5.2.crate) = 27838
+SHA256 (rust/crates/ascii-0.9.3.crate) = eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e
+SIZE (rust/crates/ascii-0.9.3.crate) = 28283
+SHA256 (rust/crates/asn1-rs-0.5.2.crate) = 7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0
+SIZE (rust/crates/asn1-rs-0.5.2.crate) = 82934
+SHA256 (rust/crates/asn1-rs-derive-0.4.0.crate) = 726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c
+SIZE (rust/crates/asn1-rs-derive-0.4.0.crate) = 5220
+SHA256 (rust/crates/asn1-rs-impl-0.1.0.crate) = 2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed
+SIZE (rust/crates/asn1-rs-impl-0.1.0.crate) = 2256
+SHA256 (rust/crates/assert_cmd-2.0.16.crate) = dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d
+SIZE (rust/crates/assert_cmd-2.0.16.crate) = 26554
+SHA256 (rust/crates/async-stream-0.3.6.crate) = 0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476
+SIZE (rust/crates/async-stream-0.3.6.crate) = 13823
+SHA256 (rust/crates/async-stream-impl-0.3.6.crate) = c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d
+SIZE (rust/crates/async-stream-impl-0.3.6.crate) = 4312
+SHA256 (rust/crates/async-trait-0.1.83.crate) = 721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd
+SIZE (rust/crates/async-trait-0.1.83.crate) = 29054
+SHA256 (rust/crates/atoi-2.0.0.crate) = f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528
+SIZE (rust/crates/atoi-2.0.0.crate) = 7785
+SHA256 (rust/crates/atomic-0.6.0.crate) = 8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994
+SIZE (rust/crates/atomic-0.6.0.crate) = 12919
+SHA256 (rust/crates/autocfg-1.4.0.crate) = ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26
+SIZE (rust/crates/autocfg-1.4.0.crate) = 17712
+SHA256 (rust/crates/backtrace-0.3.74.crate) = 8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a
+SIZE (rust/crates/backtrace-0.3.74.crate) = 88516
+SHA256 (rust/crates/base64-0.13.1.crate) = 9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8
+SIZE (rust/crates/base64-0.13.1.crate) = 61002
+SHA256 (rust/crates/base64-0.21.7.crate) = 9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567
+SIZE (rust/crates/base64-0.21.7.crate) = 82576
+SHA256 (rust/crates/base64-0.22.1.crate) = 72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6
+SIZE (rust/crates/base64-0.22.1.crate) = 81597
+SHA256 (rust/crates/base64ct-1.6.0.crate) = 8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b
+SIZE (rust/crates/base64ct-1.6.0.crate) = 28870
+SHA256 (rust/crates/bincode-1.3.3.crate) = b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad
+SIZE (rust/crates/bincode-1.3.3.crate) = 28958
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitflags-2.6.0.crate) = b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de
+SIZE (rust/crates/bitflags-2.6.0.crate) = 45357
+SHA256 (rust/crates/blake2b_simd-0.5.11.crate) = afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587
+SIZE (rust/crates/blake2b_simd-0.5.11.crate) = 34096
+SHA256 (rust/crates/block-buffer-0.9.0.crate) = 4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4
+SIZE (rust/crates/block-buffer-0.9.0.crate) = 7108
+SHA256 (rust/crates/block-buffer-0.10.4.crate) = 3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71
+SIZE (rust/crates/block-buffer-0.10.4.crate) = 10538
+SHA256 (rust/crates/boolinator-2.4.0.crate) = cfa8873f51c92e232f9bac4065cddef41b714152812bfc5f7672ba16d6ef8cd9
+SIZE (rust/crates/boolinator-2.4.0.crate) = 6950
+SHA256 (rust/crates/brotli-6.0.0.crate) = 74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b
+SIZE (rust/crates/brotli-6.0.0.crate) = 1359183
+SHA256 (rust/crates/brotli-decompressor-4.0.1.crate) = 9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362
+SIZE (rust/crates/brotli-decompressor-4.0.1.crate) = 193357
+SHA256 (rust/crates/bson-1.2.4.crate) = de0aa578035b938855a710ba58d43cfb4d435f3619f99236fb35922a574d6cb1
+SIZE (rust/crates/bson-1.2.4.crate) = 47675
+SHA256 (rust/crates/bstr-1.10.0.crate) = 40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c
+SIZE (rust/crates/bstr-1.10.0.crate) = 380426
+SHA256 (rust/crates/bumpalo-3.16.0.crate) = 79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c
+SIZE (rust/crates/bumpalo-3.16.0.crate) = 85677
+SHA256 (rust/crates/bytemuck-1.19.0.crate) = 8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d
+SIZE (rust/crates/bytemuck-1.19.0.crate) = 50363
+SHA256 (rust/crates/byteorder-1.5.0.crate) = 1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b
+SIZE (rust/crates/byteorder-1.5.0.crate) = 23288
+SHA256 (rust/crates/bytes-1.8.0.crate) = 9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da
+SIZE (rust/crates/bytes-1.8.0.crate) = 64824
+SHA256 (rust/crates/bytestring-1.3.1.crate) = 74d80203ea6b29df88012294f62733de21cfeab47f17b41af3a38bc30a03ee72
+SIZE (rust/crates/bytestring-1.3.1.crate) = 9142
+SHA256 (rust/crates/cc-1.1.33.crate) = e3788d6ac30243803df38a3e9991cf37e41210232916d41a8222ae378f912624
+SIZE (rust/crates/cc-1.1.33.crate) = 92332
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/chrono-0.4.38.crate) = a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401
+SIZE (rust/crates/chrono-0.4.38.crate) = 220559
+SHA256 (rust/crates/clap-4.5.20.crate) = b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8
+SIZE (rust/crates/clap-4.5.20.crate) = 56376
+SHA256 (rust/crates/clap_builder-4.5.20.crate) = 19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54
+SIZE (rust/crates/clap_builder-4.5.20.crate) = 163812
+SHA256 (rust/crates/clap_derive-4.5.18.crate) = 4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab
+SIZE (rust/crates/clap_derive-4.5.18.crate) = 30131
+SHA256 (rust/crates/clap_lex-0.7.2.crate) = 1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97
+SIZE (rust/crates/clap_lex-0.7.2.crate) = 12805
+SHA256 (rust/crates/color_quant-1.1.0.crate) = 3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b
+SIZE (rust/crates/color_quant-1.1.0.crate) = 6649
+SHA256 (rust/crates/colorchoice-1.0.3.crate) = 5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990
+SIZE (rust/crates/colorchoice-1.0.3.crate) = 7923
+SHA256 (rust/crates/combine-3.8.1.crate) = da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680
+SIZE (rust/crates/combine-3.8.1.crate) = 103773
+SHA256 (rust/crates/console_error_panic_hook-0.1.7.crate) = a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc
+SIZE (rust/crates/console_error_panic_hook-0.1.7.crate) = 507196
+SHA256 (rust/crates/const-oid-0.9.6.crate) = c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8
+SIZE (rust/crates/const-oid-0.9.6.crate) = 45382
+SHA256 (rust/crates/constant_time_eq-0.1.5.crate) = 245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc
+SIZE (rust/crates/constant_time_eq-0.1.5.crate) = 4936
+SHA256 (rust/crates/convert_case-0.4.0.crate) = 6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e
+SIZE (rust/crates/convert_case-0.4.0.crate) = 8098
+SHA256 (rust/crates/cookie-0.16.2.crate) = e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb
+SIZE (rust/crates/cookie-0.16.2.crate) = 34632
+SHA256 (rust/crates/core-foundation-0.9.4.crate) = 91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f
+SIZE (rust/crates/core-foundation-0.9.4.crate) = 27743
+SHA256 (rust/crates/core-foundation-sys-0.8.7.crate) = 773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b
+SIZE (rust/crates/core-foundation-sys-0.8.7.crate) = 37712
+SHA256 (rust/crates/cpufeatures-0.2.14.crate) = 608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0
+SIZE (rust/crates/cpufeatures-0.2.14.crate) = 13165
+SHA256 (rust/crates/crc-3.2.1.crate) = 69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636
+SIZE (rust/crates/crc-3.2.1.crate) = 15070
+SHA256 (rust/crates/crc-catalog-2.4.0.crate) = 19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5
+SIZE (rust/crates/crc-catalog-2.4.0.crate) = 10155
+SHA256 (rust/crates/crc32fast-1.4.2.crate) = a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3
+SIZE (rust/crates/crc32fast-1.4.2.crate) = 38491
+SHA256 (rust/crates/cron-0.12.1.crate) = 6f8c3e73077b4b4a6ab1ea5047c37c57aee77657bc8ecd6f29b0af082d0b0c07
+SIZE (rust/crates/cron-0.12.1.crate) = 18702
+SHA256 (rust/crates/crossbeam-channel-0.5.13.crate) = 33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2
+SIZE (rust/crates/crossbeam-channel-0.5.13.crate) = 91174
+SHA256 (rust/crates/crossbeam-queue-0.3.11.crate) = df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35
+SIZE (rust/crates/crossbeam-queue-0.3.11.crate) = 15581
+SHA256 (rust/crates/crossbeam-utils-0.8.20.crate) = 22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80
+SIZE (rust/crates/crossbeam-utils-0.8.20.crate) = 42487
+SHA256 (rust/crates/crossterm-0.23.2.crate) = a2102ea4f781910f8a5b98dd061f4c2023f479ce7bb1236330099ceb5a93cf17
+SIZE (rust/crates/crossterm-0.23.2.crate) = 106712
+SHA256 (rust/crates/crossterm_winapi-0.9.1.crate) = acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b
+SIZE (rust/crates/crossterm_winapi-0.9.1.crate) = 16027
+SHA256 (rust/crates/crypto-common-0.1.6.crate) = 1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3
+SIZE (rust/crates/crypto-common-0.1.6.crate) = 8760
+SHA256 (rust/crates/crypto-mac-0.10.1.crate) = bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a
+SIZE (rust/crates/crypto-mac-0.10.1.crate) = 9531
+SHA256 (rust/crates/crypto-mac-0.11.1.crate) = b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714
+SIZE (rust/crates/crypto-mac-0.11.1.crate) = 9551
+SHA256 (rust/crates/ct-codecs-1.1.2.crate) = 026ac6ceace6298d2c557ef5ed798894962296469ec7842288ea64674201a2d1
+SIZE (rust/crates/ct-codecs-1.1.2.crate) = 5451
+SHA256 (rust/crates/curve25519-dalek-3.2.0.crate) = 0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61
+SIZE (rust/crates/curve25519-dalek-3.2.0.crate) = 517530
+SHA256 (rust/crates/darling-0.14.4.crate) = 7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850
+SIZE (rust/crates/darling-0.14.4.crate) = 25168
+SHA256 (rust/crates/darling_core-0.14.4.crate) = 109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0
+SIZE (rust/crates/darling_core-0.14.4.crate) = 57485
+SHA256 (rust/crates/darling_macro-0.14.4.crate) = a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e
+SIZE (rust/crates/darling_macro-0.14.4.crate) = 1896
+SHA256 (rust/crates/dashmap-5.5.3.crate) = 978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856
+SIZE (rust/crates/dashmap-5.5.3.crate) = 24061
+SHA256 (rust/crates/data-encoding-2.6.0.crate) = e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2
+SIZE (rust/crates/data-encoding-2.6.0.crate) = 20769
+SHA256 (rust/crates/der-0.7.9.crate) = f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0
+SIZE (rust/crates/der-0.7.9.crate) = 85173
+SHA256 (rust/crates/der-parser-8.2.0.crate) = dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e
+SIZE (rust/crates/der-parser-8.2.0.crate) = 63495
+SHA256 (rust/crates/deranged-0.3.11.crate) = b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4
+SIZE (rust/crates/deranged-0.3.11.crate) = 18043
+SHA256 (rust/crates/derivative-2.2.0.crate) = fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b
+SIZE (rust/crates/derivative-2.2.0.crate) = 48076
+SHA256 (rust/crates/derive_builder-0.12.0.crate) = 8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8
+SIZE (rust/crates/derive_builder-0.12.0.crate) = 35456
+SHA256 (rust/crates/derive_builder_core-0.12.0.crate) = c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f
+SIZE (rust/crates/derive_builder_core-0.12.0.crate) = 31438
+SHA256 (rust/crates/derive_builder_macro-0.12.0.crate) = ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e
+SIZE (rust/crates/derive_builder_macro-0.12.0.crate) = 6288
+SHA256 (rust/crates/derive_more-0.99.18.crate) = 5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce
+SIZE (rust/crates/derive_more-0.99.18.crate) = 55013
+SHA256 (rust/crates/derive_more-1.0.0.crate) = 4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05
+SIZE (rust/crates/derive_more-1.0.0.crate) = 64854
+SHA256 (rust/crates/derive_more-impl-1.0.0.crate) = cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22
+SIZE (rust/crates/derive_more-impl-1.0.0.crate) = 76182
+SHA256 (rust/crates/derive_utils-0.11.2.crate) = 532b4c15dccee12c7044f1fcad956e98410860b22231e44a3b827464797ca7bf
+SIZE (rust/crates/derive_utils-0.11.2.crate) = 15349
+SHA256 (rust/crates/diff-0.1.13.crate) = 56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8
+SIZE (rust/crates/diff-0.1.13.crate) = 46216
+SHA256 (rust/crates/difflib-0.4.0.crate) = 6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8
+SIZE (rust/crates/difflib-0.4.0.crate) = 7638
+SHA256 (rust/crates/digest-0.9.0.crate) = d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066
+SIZE (rust/crates/digest-0.9.0.crate) = 13247
+SHA256 (rust/crates/digest-0.10.7.crate) = 9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292
+SIZE (rust/crates/digest-0.10.7.crate) = 19557
+SHA256 (rust/crates/displaydoc-0.1.7.crate) = adc2ab4d5a16117f9029e9a6b5e4e79f4c67f6519bc134210d4d4a04ba31f41b
+SIZE (rust/crates/displaydoc-0.1.7.crate) = 13547
+SHA256 (rust/crates/displaydoc-0.2.5.crate) = 97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0
+SIZE (rust/crates/displaydoc-0.2.5.crate) = 24219
+SHA256 (rust/crates/doc-comment-0.3.3.crate) = fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10
+SIZE (rust/crates/doc-comment-0.3.3.crate) = 4123
+SHA256 (rust/crates/dotenvy-0.15.7.crate) = 1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b
+SIZE (rust/crates/dotenvy-0.15.7.crate) = 20293
+SHA256 (rust/crates/downcast-0.11.0.crate) = 1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1
+SIZE (rust/crates/downcast-0.11.0.crate) = 5976
+SHA256 (rust/crates/either-1.13.0.crate) = 60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0
+SIZE (rust/crates/either-1.13.0.crate) = 19169
+SHA256 (rust/crates/email-encoding-0.2.1.crate) = a87260449b06739ee78d6281c68d2a0ff3e3af64a78df63d3a1aeb3c06997c8a
+SIZE (rust/crates/email-encoding-0.2.1.crate) = 15587
+SHA256 (rust/crates/email_address-0.2.9.crate) = e079f19b08ca6239f47f8ba8509c11cf3ea30095831f7fed61441475edd8c449
+SIZE (rust/crates/email_address-0.2.9.crate) = 21579
+SHA256 (rust/crates/encoding_rs-0.8.35.crate) = 75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3
+SIZE (rust/crates/encoding_rs-0.8.35.crate) = 1381050
+SHA256 (rust/crates/equivalent-1.0.1.crate) = 5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5
+SIZE (rust/crates/equivalent-1.0.1.crate) = 6615
+SHA256 (rust/crates/errno-0.3.9.crate) = 534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba
+SIZE (rust/crates/errno-0.3.9.crate) = 10690
+SHA256 (rust/crates/etcetera-0.8.0.crate) = 136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943
+SIZE (rust/crates/etcetera-0.8.0.crate) = 13295
+SHA256 (rust/crates/event-listener-2.5.3.crate) = 0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0
+SIZE (rust/crates/event-listener-2.5.3.crate) = 15392
+SHA256 (rust/crates/failure-0.1.8.crate) = d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86
+SIZE (rust/crates/failure-0.1.8.crate) = 37582
+SHA256 (rust/crates/failure_derive-0.1.8.crate) = aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4
+SIZE (rust/crates/failure_derive-0.1.8.crate) = 4950
+SHA256 (rust/crates/fastrand-1.9.0.crate) = e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be
+SIZE (rust/crates/fastrand-1.9.0.crate) = 11910
+SHA256 (rust/crates/fastrand-2.1.1.crate) = e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6
+SIZE (rust/crates/fastrand-2.1.1.crate) = 14983
+SHA256 (rust/crates/fiat-crypto-0.2.9.crate) = 28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d
+SIZE (rust/crates/fiat-crypto-0.2.9.crate) = 495390
+SHA256 (rust/crates/figment-0.10.19.crate) = 8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3
+SIZE (rust/crates/figment-0.10.19.crate) = 70111
+SHA256 (rust/crates/figment_file_provider_adapter-0.1.1.crate) = 353e1e0896797efa3728309408a50d307284d5af4c733fa1859edae2bc80a314
+SIZE (rust/crates/figment_file_provider_adapter-0.1.1.crate) = 5459
+SHA256 (rust/crates/flate2-1.0.34.crate) = a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0
+SIZE (rust/crates/flate2-1.0.34.crate) = 109174
+SHA256 (rust/crates/float-cmp-0.9.0.crate) = 98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4
+SIZE (rust/crates/float-cmp-0.9.0.crate) = 10102
+SHA256 (rust/crates/flume-0.11.1.crate) = da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095
+SIZE (rust/crates/flume-0.11.1.crate) = 67947
+SHA256 (rust/crates/fnv-1.0.7.crate) = 3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1
+SIZE (rust/crates/fnv-1.0.7.crate) = 11266
+SHA256 (rust/crates/form_urlencoded-1.2.1.crate) = e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456
+SIZE (rust/crates/form_urlencoded-1.2.1.crate) = 8969
+SHA256 (rust/crates/fragile-2.0.0.crate) = 6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa
+SIZE (rust/crates/fragile-2.0.0.crate) = 14668
+SHA256 (rust/crates/fslock-0.2.1.crate) = 04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb
+SIZE (rust/crates/fslock-0.2.1.crate) = 13463
+SHA256 (rust/crates/futures-0.3.31.crate) = 65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876
+SIZE (rust/crates/futures-0.3.31.crate) = 54953
+SHA256 (rust/crates/futures-channel-0.3.31.crate) = 2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10
+SIZE (rust/crates/futures-channel-0.3.31.crate) = 31971
+SHA256 (rust/crates/futures-core-0.3.31.crate) = 05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e
+SIZE (rust/crates/futures-core-0.3.31.crate) = 14318
+SHA256 (rust/crates/futures-enum-0.1.17.crate) = 3422d14de7903a52e9dbc10ae05a7e14445ec61890100e098754e120b2bd7b1e
+SIZE (rust/crates/futures-enum-0.1.17.crate) = 10843
+SHA256 (rust/crates/futures-executor-0.3.31.crate) = 1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f
+SIZE (rust/crates/futures-executor-0.3.31.crate) = 17965
+SHA256 (rust/crates/futures-intrusive-0.5.0.crate) = 1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f
+SIZE (rust/crates/futures-intrusive-0.5.0.crate) = 85563
+SHA256 (rust/crates/futures-io-0.3.31.crate) = 9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6
+SIZE (rust/crates/futures-io-0.3.31.crate) = 9047
+SHA256 (rust/crates/futures-macro-0.3.31.crate) = 162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650
+SIZE (rust/crates/futures-macro-0.3.31.crate) = 11341
+SHA256 (rust/crates/futures-sink-0.3.31.crate) = e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7
+SIZE (rust/crates/futures-sink-0.3.31.crate) = 7958
+SHA256 (rust/crates/futures-task-0.3.31.crate) = f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988
+SIZE (rust/crates/futures-task-0.3.31.crate) = 11217
+SHA256 (rust/crates/futures-util-0.3.31.crate) = 9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81
+SIZE (rust/crates/futures-util-0.3.31.crate) = 162124
+SHA256 (rust/crates/generic-array-0.14.7.crate) = 85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a
+SIZE (rust/crates/generic-array-0.14.7.crate) = 15950
+SHA256 (rust/crates/generic-bytes-0.1.0.crate) = d6638d839bbd1cea640d8c5348dd82e0d545dbd364f3c2a251646eaf2ef0773b
+SIZE (rust/crates/generic-bytes-0.1.0.crate) = 1755
+SHA256 (rust/crates/getrandom-0.1.16.crate) = 8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce
+SIZE (rust/crates/getrandom-0.1.16.crate) = 25077
+SHA256 (rust/crates/getrandom-0.2.15.crate) = c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7
+SIZE (rust/crates/getrandom-0.2.15.crate) = 37163
+SHA256 (rust/crates/gimli-0.31.1.crate) = 07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f
+SIZE (rust/crates/gimli-0.31.1.crate) = 279515
+SHA256 (rust/crates/gloo-0.4.2.crate) = 23947965eee55e3e97a5cd142dd4c10631cc349b48cecca0ed230fd296f568cd
+SIZE (rust/crates/gloo-0.4.2.crate) = 555656
+SHA256 (rust/crates/gloo-console-0.2.3.crate) = 82b7ce3c05debe147233596904981848862b068862e9ec3e34be446077190d3f
+SIZE (rust/crates/gloo-console-0.2.3.crate) = 5014
+SHA256 (rust/crates/gloo-dialogs-0.1.1.crate) = 67062364ac72d27f08445a46cab428188e2e224ec9e37efdba48ae8c289002e6
+SIZE (rust/crates/gloo-dialogs-0.1.1.crate) = 1942
+SHA256 (rust/crates/gloo-events-0.1.2.crate) = 68b107f8abed8105e4182de63845afcc7b69c098b7852a813ea7462a320992fc
+SIZE (rust/crates/gloo-events-0.1.2.crate) = 5936
+SHA256 (rust/crates/gloo-file-0.2.3.crate) = a8d5564e570a38b43d78bdc063374a0c3098c4f0d64005b12f9bbe87e869b6d7
+SIZE (rust/crates/gloo-file-0.2.3.crate) = 8789
+SHA256 (rust/crates/gloo-net-0.6.0.crate) = c06f627b1a58ca3d42b45d6104bf1e1a03799df472df00988b6ba21accc10580
+SIZE (rust/crates/gloo-net-0.6.0.crate) = 18515
+SHA256 (rust/crates/gloo-render-0.1.1.crate) = 2fd9306aef67cfd4449823aadcd14e3958e0800aa2183955a309112a84ec7764
+SIZE (rust/crates/gloo-render-0.1.1.crate) = 2053
+SHA256 (rust/crates/gloo-storage-0.2.2.crate) = 5d6ab60bf5dbfd6f0ed1f7843da31b41010515c745735c970e821945ca91e480
+SIZE (rust/crates/gloo-storage-0.2.2.crate) = 3288
+SHA256 (rust/crates/gloo-timers-0.2.6.crate) = 9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c
+SIZE (rust/crates/gloo-timers-0.2.6.crate) = 5516
+SHA256 (rust/crates/gloo-utils-0.1.7.crate) = 037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e
+SIZE (rust/crates/gloo-utils-0.1.7.crate) = 5101
+SHA256 (rust/crates/gloo-utils-0.2.0.crate) = 0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa
+SIZE (rust/crates/gloo-utils-0.2.0.crate) = 5103
+SHA256 (rust/crates/graphql-introspection-query-0.2.0.crate) = 7f2a4732cf5140bd6c082434494f785a19cfb566ab07d1382c3671f5812fed6d
+SIZE (rust/crates/graphql-introspection-query-0.2.0.crate) = 2664
+SHA256 (rust/crates/graphql-parser-0.2.3.crate) = a5613c31f18676f164112732202124f373bb2103ff017b3b85ca954ea6a66ada
+SIZE (rust/crates/graphql-parser-0.2.3.crate) = 29391
+SHA256 (rust/crates/graphql-parser-0.3.0.crate) = d1abd4ce5247dfc04a03ccde70f87a048458c9356c7e41d21ad8c407b3dde6f2
+SIZE (rust/crates/graphql-parser-0.3.0.crate) = 30520
+SHA256 (rust/crates/graphql-parser-0.4.0.crate) = d2ebc8013b4426d5b81a4364c419a95ed0b404af2b82e2457de52d9348f0e474
+SIZE (rust/crates/graphql-parser-0.4.0.crate) = 33100
+SHA256 (rust/crates/graphql_client-0.10.0.crate) = a9b58571cfc3cc42c3e8ff44fc6cfbb6c0dea17ed22d20f9d8f1efc4e8209a3f
+SIZE (rust/crates/graphql_client-0.10.0.crate) = 28879
+SHA256 (rust/crates/graphql_client-0.11.0.crate) = 7fc16d75d169fddb720d8f1c7aed6413e329e1584079b9734ff07266a193f5bc
+SIZE (rust/crates/graphql_client-0.11.0.crate) = 29369
+SHA256 (rust/crates/graphql_client_codegen-0.10.0.crate) = b4bf9cd823359d74ad3d3ecf1afd4a975f4ff2f891cdf9a66744606daf52de8c
+SIZE (rust/crates/graphql_client_codegen-0.10.0.crate) = 120423
+SHA256 (rust/crates/graphql_client_codegen-0.11.0.crate) = f290ecfa3bea3e8a157899dc8a1d96ee7dd6405c18c8ddd213fc58939d18a0e9
+SIZE (rust/crates/graphql_client_codegen-0.11.0.crate) = 121430
+SHA256 (rust/crates/graphql_query_derive-0.10.0.crate) = e56b093bfda71de1da99758b036f4cc811fd2511c8a76f75680e9ffbd2bb4251
+SIZE (rust/crates/graphql_query_derive-0.10.0.crate) = 3155
+SHA256 (rust/crates/graphql_query_derive-0.11.0.crate) = a755cc59cda2641ea3037b4f9f7ef40471c329f55c1fa2db6fa0bb7ae6c1f7ce
+SIZE (rust/crates/graphql_query_derive-0.11.0.crate) = 3325
+SHA256 (rust/crates/h2-0.3.26.crate) = 81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8
+SIZE (rust/crates/h2-0.3.26.crate) = 168315
*** 750 LINES SKIPPED ***