git: f6b268820463 - main - multimedia/neolink: RTSP bridge for Neolink cameras [NEW]

From: Kyle Evans <kevans_at_FreeBSD.org>
Date: Sat, 16 Oct 2021 02:46:24 UTC
The branch main has been updated by kevans:

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

commit f6b26882046367f4342fc8e465a5314c0dbbffff
Author:     Kyle Evans <kevans@FreeBSD.org>
AuthorDate: 2020-12-27 03:16:47 +0000
Commit:     Kyle Evans <kevans@FreeBSD.org>
CommitDate: 2021-10-16 02:37:00 +0000

    multimedia/neolink: RTSP bridge for Neolink cameras [NEW]
    
    Neolink allows you to use NVR software such as Shinobi or Blue Iris to
    receive video from Reolink cameras, avoiding the need to purchase
    proprietary NVR units.
    
    WWW: https://github.com/thirtythreeforty/neolink
---
 GIDs                                |   2 +-
 UIDs                                |   2 +-
 multimedia/Makefile                 |   1 +
 multimedia/neolink/Makefile         | 201 +++++++++++++++++++++
 multimedia/neolink/distinfo         | 339 ++++++++++++++++++++++++++++++++++++
 multimedia/neolink/files/neolink.in |  38 ++++
 multimedia/neolink/pkg-descr        |  15 ++
 multimedia/neolink/pkg-plist        |   2 +
 8 files changed, 598 insertions(+), 2 deletions(-)

diff --git a/GIDs b/GIDs
index fa1aafe1a47d..3bb5c1e4ada0 100644
--- a/GIDs
+++ b/GIDs
@@ -237,7 +237,7 @@ krill:*:294:
 jottad:*:295:
 writefreely:*:296:
 conduit:*:297:
-# free: 298
+neolink:*:298:
 owncast:*:299:
 backuppc:*:300:
 # free: 301
diff --git a/UIDs b/UIDs
index 976e69a3f392..f490764e29d5 100644
--- a/UIDs
+++ b/UIDs
@@ -242,7 +242,7 @@ krill:*:294:294::0:0:krill Pseudo User:/nonexistent:/usr/sbin/nologin
 jottad:*:295:295::0:0:Jotta Cloud Daemon:/nonexisten:/usr/sbin/nologin
 writefreely:*:296:296::0:0:WriteFreely daemon:/var/db/writefreely:/usr/sbin/nologin
 conduit:*:297:297::0:0:Conduit daemon:/var/db/conduit:/usr/sbin/nologin
-# free: 298
+neolink:*:298:298::0:0:& daemon:/nonexistent:/usr/sbin/nologin
 owncast:*:299:299::0:0:& daemon:/nonexistent:/usr/sbin/nologin
 backuppc:*:300:300::0:0:BackupPC pseudo-user:/nonexistent:/usr/sbin/nologin
 # free: 301
diff --git a/multimedia/Makefile b/multimedia/Makefile
index 5a9174967565..201a42ac8faa 100644
--- a/multimedia/Makefile
+++ b/multimedia/Makefile
@@ -270,6 +270,7 @@
     SUBDIR += mythtv-frontend
     SUBDIR += naludump
     SUBDIR += navidrome
+    SUBDIR += neolink
     SUBDIR += nordlicht
     SUBDIR += nostt
     SUBDIR += obs-audio-spectralizer
diff --git a/multimedia/neolink/Makefile b/multimedia/neolink/Makefile
new file mode 100644
index 000000000000..8bfb6709ce7f
--- /dev/null
+++ b/multimedia/neolink/Makefile
@@ -0,0 +1,201 @@
+PORTNAME=	neolink
+PORTVERSION=	0.3.0
+DISTVERSIONPREFIX=	v
+DISTVERSIONSUFFIX=	g20210903
+CATEGORIES=	multimedia
+
+MAINTAINER=	kevans@FreeBSD.org
+COMMENT=	RTSP bridge to Reolink IP cameras
+
+LICENSE=	AGPLv3
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+LIB_DEPENDS=	libgstrtspserver-1.0.so:multimedia/gstreamer1-rtsp-server
+
+USES=	cargo gnome
+USE_GNOME=	glib20
+USE_GSTREAMER1=	yes
+USE_RC_SUBR=	neolink
+
+USERS=	${PORTNAME}
+GROUPS=	${PORTNAME}
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	thirtythreeforty
+GH_TAGNAME=	cf54129
+
+CARGO_CRATES=	aes-0.6.0 \
+		aes-soft-0.6.4 \
+		aesni-0.10.0 \
+		aho-corasick-0.7.15 \
+		ansi_term-0.11.0 \
+		anyhow-1.0.42 \
+		arrayvec-0.5.2 \
+		assert_matches-1.5.0 \
+		atty-0.2.14 \
+		autocfg-1.0.1 \
+		base-x-0.2.8 \
+		bitflags-1.2.1 \
+		bitvec-0.19.5 \
+		bumpalo-3.7.0 \
+		byte-slice-cast-1.0.0 \
+		cfb-mode-0.6.0 \
+		cfg-expr-0.8.0 \
+		cfg-if-0.1.10 \
+		cfg-if-1.0.0 \
+		cipher-0.2.5 \
+		clap-2.33.3 \
+		const_fn-0.4.8 \
+		cookie-factory-0.3.2 \
+		crossbeam-0.7.3 \
+		crossbeam-channel-0.4.4 \
+		crossbeam-deque-0.7.4 \
+		crossbeam-epoch-0.8.2 \
+		crossbeam-queue-0.2.3 \
+		crossbeam-utils-0.7.2 \
+		discard-1.0.4 \
+		either-1.6.1 \
+		env_logger-0.9.0 \
+		err-derive-0.2.4 \
+		form_urlencoded-1.0.1 \
+		funty-1.1.0 \
+		futures-channel-0.3.16 \
+		futures-core-0.3.16 \
+		futures-executor-0.3.16 \
+		futures-io-0.3.16 \
+		futures-sink-0.3.16 \
+		futures-task-0.3.16 \
+		futures-util-0.3.16 \
+		generic-array-0.14.4 \
+		gio-0.14.0 \
+		gio-sys-0.14.0 \
+		glib-0.14.2 \
+		glib-macros-0.14.1 \
+		glib-sys-0.14.0 \
+		gobject-sys-0.14.0 \
+		gstreamer-0.17.1 \
+		gstreamer-app-0.17.0 \
+		gstreamer-app-sys-0.17.0 \
+		gstreamer-base-0.17.0 \
+		gstreamer-base-sys-0.17.0 \
+		gstreamer-net-0.17.0 \
+		gstreamer-net-sys-0.17.0 \
+		gstreamer-rtsp-0.17.0 \
+		gstreamer-rtsp-server-0.17.0 \
+		gstreamer-rtsp-server-sys-0.17.0 \
+		gstreamer-rtsp-sys-0.17.0 \
+		gstreamer-sdp-0.17.0 \
+		gstreamer-sdp-sys-0.17.0 \
+		gstreamer-sys-0.17.0 \
+		heck-0.3.3 \
+		hermit-abi-0.1.19 \
+		humantime-2.1.0 \
+		idna-0.2.3 \
+		if_chain-1.0.1 \
+		indoc-0.3.6 \
+		indoc-impl-0.3.6 \
+		itertools-0.9.0 \
+		itertools-0.10.1 \
+		itoa-0.4.7 \
+		lazy_static-1.4.0 \
+		lexical-core-0.7.6 \
+		libc-0.2.98 \
+		log-0.4.14 \
+		matches-0.1.8 \
+		maybe-uninit-2.0.0 \
+		md5-0.7.0 \
+		memchr-2.3.4 \
+		memoffset-0.5.6 \
+		muldiv-1.0.0 \
+		nom-6.2.1 \
+		num-integer-0.1.44 \
+		num-rational-0.4.0 \
+		num-traits-0.2.14 \
+		once_cell-1.8.0 \
+		opaque-debug-0.3.0 \
+		paste-1.0.5 \
+		percent-encoding-2.1.0 \
+		pin-project-lite-0.2.7 \
+		pin-utils-0.1.0 \
+		pkg-config-0.3.19 \
+		pretty-hex-0.2.1 \
+		proc-macro-crate-1.0.0 \
+		proc-macro-error-1.0.4 \
+		proc-macro-error-attr-1.0.4 \
+		proc-macro-hack-0.5.19 \
+		proc-macro2-1.0.28 \
+		quote-1.0.9 \
+		radium-0.5.3 \
+		regex-1.4.6 \
+		regex-syntax-0.6.25 \
+		rustc_version-0.2.3 \
+		rustversion-1.0.5 \
+		ryu-1.0.5 \
+		scopeguard-1.1.0 \
+		semver-0.9.0 \
+		semver-parser-0.7.0 \
+		serde-1.0.127 \
+		serde_derive-1.0.127 \
+		serde_json-1.0.66 \
+		sha1-0.6.0 \
+		slab-0.4.3 \
+		smallvec-1.6.1 \
+		socket2-0.3.19 \
+		standback-0.2.17 \
+		static_assertions-1.1.0 \
+		stdweb-0.4.20 \
+		stdweb-derive-0.5.3 \
+		stdweb-internal-macros-0.2.9 \
+		stdweb-internal-runtime-0.1.5 \
+		strsim-0.8.0 \
+		structopt-0.3.22 \
+		structopt-derive-0.4.15 \
+		strum-0.21.0 \
+		strum_macros-0.21.1 \
+		syn-1.0.74 \
+		synstructure-0.12.5 \
+		system-deps-3.2.0 \
+		tap-1.0.1 \
+		termcolor-1.1.2 \
+		textwrap-0.11.0 \
+		thiserror-1.0.26 \
+		thiserror-impl-1.0.26 \
+		time-0.2.27 \
+		time-macros-0.1.1 \
+		time-macros-impl-0.1.2 \
+		tinyvec-1.3.1 \
+		tinyvec_macros-0.1.0 \
+		toml-0.5.8 \
+		typenum-1.13.0 \
+		unicode-bidi-0.3.5 \
+		unicode-normalization-0.1.19 \
+		unicode-segmentation-1.8.0 \
+		unicode-width-0.1.8 \
+		unicode-xid-0.2.2 \
+		unindent-0.1.7 \
+		url-2.2.2 \
+		validator-0.10.1 \
+		validator_derive-0.10.1 \
+		vec_map-0.8.2 \
+		version-compare-0.0.11 \
+		version_check-0.9.3 \
+		wasm-bindgen-0.2.74 \
+		wasm-bindgen-backend-0.2.74 \
+		wasm-bindgen-macro-0.2.74 \
+		wasm-bindgen-macro-support-0.2.74 \
+		wasm-bindgen-shared-0.2.74 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-util-0.1.5 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		wyz-0.2.0 \
+		xml-rs-0.8.4 \
+		yaserde-0.3.16 \
+		yaserde_derive-0.3.17
+
+post-install:
+	${MKDIR} ${STAGEDIR}${ETCDIR}
+	${INSTALL_DATA} ${WRKSRC}/sample_config.toml \
+	    ${STAGEDIR}${ETCDIR}/config.toml.sample
+
+.include <bsd.port.mk>
diff --git a/multimedia/neolink/distinfo b/multimedia/neolink/distinfo
new file mode 100644
index 000000000000..4c2637babc2b
--- /dev/null
+++ b/multimedia/neolink/distinfo
@@ -0,0 +1,339 @@
+TIMESTAMP = 1634349398
+SHA256 (rust/crates/aes-0.6.0.crate) = 884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561
+SIZE (rust/crates/aes-0.6.0.crate) = 86774
+SHA256 (rust/crates/aes-soft-0.6.4.crate) = be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072
+SIZE (rust/crates/aes-soft-0.6.4.crate) = 99980
+SHA256 (rust/crates/aesni-0.10.0.crate) = ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce
+SIZE (rust/crates/aesni-0.10.0.crate) = 100248
+SHA256 (rust/crates/aho-corasick-0.7.15.crate) = 7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5
+SIZE (rust/crates/aho-corasick-0.7.15.crate) = 113071
+SHA256 (rust/crates/ansi_term-0.11.0.crate) = ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b
+SIZE (rust/crates/ansi_term-0.11.0.crate) = 17087
+SHA256 (rust/crates/anyhow-1.0.42.crate) = 595d3cfa7a60d4555cb5067b99f07142a08ea778de5cf993f7b75c7d8fabc486
+SIZE (rust/crates/anyhow-1.0.42.crate) = 34827
+SHA256 (rust/crates/arrayvec-0.5.2.crate) = 23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b
+SIZE (rust/crates/arrayvec-0.5.2.crate) = 27838
+SHA256 (rust/crates/assert_matches-1.5.0.crate) = 9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9
+SIZE (rust/crates/assert_matches-1.5.0.crate) = 7761
+SHA256 (rust/crates/atty-0.2.14.crate) = d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8
+SIZE (rust/crates/atty-0.2.14.crate) = 5470
+SHA256 (rust/crates/autocfg-1.0.1.crate) = cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a
+SIZE (rust/crates/autocfg-1.0.1.crate) = 12908
+SHA256 (rust/crates/base-x-0.2.8.crate) = a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b
+SIZE (rust/crates/base-x-0.2.8.crate) = 10614
+SHA256 (rust/crates/bitflags-1.2.1.crate) = cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693
+SIZE (rust/crates/bitflags-1.2.1.crate) = 16745
+SHA256 (rust/crates/bitvec-0.19.5.crate) = 8942c8d352ae1838c9dda0b0ca2ab657696ef2232a20147cf1b30ae1a9cb4321
+SIZE (rust/crates/bitvec-0.19.5.crate) = 148200
+SHA256 (rust/crates/bumpalo-3.7.0.crate) = 9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631
+SIZE (rust/crates/bumpalo-3.7.0.crate) = 134261
+SHA256 (rust/crates/byte-slice-cast-1.0.0.crate) = 65c1bf4a04a88c54f589125563643d773f3254b5c38571395e2b591c693bbc81
+SIZE (rust/crates/byte-slice-cast-1.0.0.crate) = 6798
+SHA256 (rust/crates/cfb-mode-0.6.0.crate) = 1d6975e91054798d325f85f50115056d7deccf6817fe7f947c438ee45b119632
+SIZE (rust/crates/cfb-mode-0.6.0.crate) = 9378
+SHA256 (rust/crates/cfg-expr-0.8.0.crate) = 70a1d12766bbdd5d44caab5df04a9bffec9cd855a1b44b15de5665d70c085f94
+SIZE (rust/crates/cfg-expr-0.8.0.crate) = 34328
+SHA256 (rust/crates/cfg-if-0.1.10.crate) = 4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822
+SIZE (rust/crates/cfg-if-0.1.10.crate) = 7933
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/cipher-0.2.5.crate) = 12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801
+SIZE (rust/crates/cipher-0.2.5.crate) = 13099
+SHA256 (rust/crates/clap-2.33.3.crate) = 37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002
+SIZE (rust/crates/clap-2.33.3.crate) = 201925
+SHA256 (rust/crates/const_fn-0.4.8.crate) = f92cfa0fd5690b3cf8c1ef2cabbd9b7ef22fa53cf5e1f92b05103f6d5d1cf6e7
+SIZE (rust/crates/const_fn-0.4.8.crate) = 12662
+SHA256 (rust/crates/cookie-factory-0.3.2.crate) = 396de984970346b0d9e93d1415082923c679e5ae5c3ee3dcbd104f5610af126b
+SIZE (rust/crates/cookie-factory-0.3.2.crate) = 14325
+SHA256 (rust/crates/crossbeam-0.7.3.crate) = 69323bff1fb41c635347b8ead484a5ca6c3f11914d784170b158d8449ab07f8e
+SIZE (rust/crates/crossbeam-0.7.3.crate) = 9906
+SHA256 (rust/crates/crossbeam-channel-0.4.4.crate) = b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87
+SIZE (rust/crates/crossbeam-channel-0.4.4.crate) = 86868
+SHA256 (rust/crates/crossbeam-deque-0.7.4.crate) = c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed
+SIZE (rust/crates/crossbeam-deque-0.7.4.crate) = 19868
+SHA256 (rust/crates/crossbeam-epoch-0.8.2.crate) = 058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace
+SIZE (rust/crates/crossbeam-epoch-0.8.2.crate) = 39283
+SHA256 (rust/crates/crossbeam-queue-0.2.3.crate) = 774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570
+SIZE (rust/crates/crossbeam-queue-0.2.3.crate) = 14753
+SHA256 (rust/crates/crossbeam-utils-0.7.2.crate) = c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8
+SIZE (rust/crates/crossbeam-utils-0.7.2.crate) = 34338
+SHA256 (rust/crates/discard-1.0.4.crate) = 212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0
+SIZE (rust/crates/discard-1.0.4.crate) = 4700
+SHA256 (rust/crates/either-1.6.1.crate) = e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457
+SIZE (rust/crates/either-1.6.1.crate) = 13641
+SHA256 (rust/crates/env_logger-0.9.0.crate) = 0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3
+SIZE (rust/crates/env_logger-0.9.0.crate) = 33573
+SHA256 (rust/crates/err-derive-0.2.4.crate) = 22deed3a8124cff5fa835713fa105621e43bbdc46690c3a6b68328a012d350d4
+SIZE (rust/crates/err-derive-0.2.4.crate) = 14934
+SHA256 (rust/crates/form_urlencoded-1.0.1.crate) = 5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191
+SIZE (rust/crates/form_urlencoded-1.0.1.crate) = 8773
+SHA256 (rust/crates/funty-1.1.0.crate) = fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7
+SIZE (rust/crates/funty-1.1.0.crate) = 11631
+SHA256 (rust/crates/futures-channel-0.3.16.crate) = 74ed2411805f6e4e3d9bc904c95d5d423b89b3b25dc0250aa74729de20629ff9
+SIZE (rust/crates/futures-channel-0.3.16.crate) = 31765
+SHA256 (rust/crates/futures-core-0.3.16.crate) = af51b1b4a7fdff033703db39de8802c673eb91855f2e0d47dcf3bf2c0ef01f99
+SIZE (rust/crates/futures-core-0.3.16.crate) = 14486
+SHA256 (rust/crates/futures-executor-0.3.16.crate) = 4d0d535a57b87e1ae31437b892713aee90cd2d7b0ee48727cd11fc72ef54761c
+SIZE (rust/crates/futures-executor-0.3.16.crate) = 17104
+SHA256 (rust/crates/futures-io-0.3.16.crate) = 0b0e06c393068f3a6ef246c75cdca793d6a46347e75286933e5e75fd2fd11582
+SIZE (rust/crates/futures-io-0.3.16.crate) = 9050
+SHA256 (rust/crates/futures-sink-0.3.16.crate) = c0f30aaa67363d119812743aa5f33c201a7a66329f97d1a887022971feea4b53
+SIZE (rust/crates/futures-sink-0.3.16.crate) = 7663
+SHA256 (rust/crates/futures-task-0.3.16.crate) = bbe54a98670017f3be909561f6ad13e810d9a51f3f061b902062ca3da80799f2
+SIZE (rust/crates/futures-task-0.3.16.crate) = 11712
+SHA256 (rust/crates/futures-util-0.3.16.crate) = 67eb846bfd58e44a8481a00049e82c43e0ccb5d61f8dc071057cb19249dd4d78
+SIZE (rust/crates/futures-util-0.3.16.crate) = 144642
+SHA256 (rust/crates/generic-array-0.14.4.crate) = 501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817
+SIZE (rust/crates/generic-array-0.14.4.crate) = 28916
+SHA256 (rust/crates/gio-0.14.0.crate) = 86c6823b39d46d22cac2466de261f28d7f049ebc18f7b35296a42c7ed8a88325
+SIZE (rust/crates/gio-0.14.0.crate) = 175177
+SHA256 (rust/crates/gio-sys-0.14.0.crate) = c0a41df66e57fcc287c4bcf74fc26b884f31901ea9792ec75607289b456f48fa
+SIZE (rust/crates/gio-sys-0.14.0.crate) = 76499
+SHA256 (rust/crates/glib-0.14.2.crate) = dbecad7a3a898ee749d491ce2ae0decb0bce9e736f9747bc49159b1cea5d37f4
+SIZE (rust/crates/glib-0.14.2.crate) = 164143
+SHA256 (rust/crates/glib-macros-0.14.1.crate) = 2aad66361f66796bfc73f530c51ef123970eb895ffba991a234fcf7bea89e518
+SIZE (rust/crates/glib-macros-0.14.1.crate) = 20018
+SHA256 (rust/crates/glib-sys-0.14.0.crate) = 1c1d60554a212445e2a858e42a0e48cece1bd57b311a19a9468f70376cf554ae
+SIZE (rust/crates/glib-sys-0.14.0.crate) = 57390
+SHA256 (rust/crates/gobject-sys-0.14.0.crate) = aa92cae29759dae34ab5921d73fff5ad54b3d794ab842c117e36cafc7994c3f5
+SIZE (rust/crates/gobject-sys-0.14.0.crate) = 17399
+SHA256 (rust/crates/gstreamer-0.17.1.crate) = 1f71e8c163945a3e0140e6b1ed10d1507da7e71196fedec568cbad92db63d762
+SIZE (rust/crates/gstreamer-0.17.1.crate) = 238415
+SHA256 (rust/crates/gstreamer-app-0.17.0.crate) = d2ed9c3e9ce3a406ea5026c2d4e094acd8efd61084bb107f8ff97d13f739b542
+SIZE (rust/crates/gstreamer-app-0.17.0.crate) = 37035
+SHA256 (rust/crates/gstreamer-app-sys-0.17.0.crate) = 41865cfb8a5ddfa1161734a0d068dcd4689da852be0910b40484206408cfeafa
+SIZE (rust/crates/gstreamer-app-sys-0.17.0.crate) = 25428
+SHA256 (rust/crates/gstreamer-base-0.17.0.crate) = 5cf50118e1933d9e9e043036f2306d0b9660182ea61a75f266cd9fb3607b7a19
+SIZE (rust/crates/gstreamer-base-0.17.0.crate) = 55760
+SHA256 (rust/crates/gstreamer-base-sys-0.17.0.crate) = 28169a7b58edb93ad8ac766f0fa12dcd36a2af4257a97ee10194c7103baf3e27
+SIZE (rust/crates/gstreamer-base-sys-0.17.0.crate) = 34572
+SHA256 (rust/crates/gstreamer-net-0.17.0.crate) = 46e71e9301725be01dcb2e260a531ab62fd42f3d4586de3da7060220b4f675a3
+SIZE (rust/crates/gstreamer-net-0.17.0.crate) = 29950
+SHA256 (rust/crates/gstreamer-net-sys-0.17.0.crate) = 6a36633587f9f1c34d5ed3ba5e7e2b4d89739fea2b9ee5ac101bb0685c35ad6b
+SIZE (rust/crates/gstreamer-net-sys-0.17.0.crate) = 25416
+SHA256 (rust/crates/gstreamer-rtsp-0.17.0.crate) = 398187f5b704e30e90f6bd2b75f0cee537b7c299dd5111d06b6bf7a8bd4305a2
+SIZE (rust/crates/gstreamer-rtsp-0.17.0.crate) = 35755
+SHA256 (rust/crates/gstreamer-rtsp-server-0.17.0.crate) = 2ca2a54cc0094a0d7926c12ae58de190f5883605bbe5ff7fb78b4a3832ca85f6
+SIZE (rust/crates/gstreamer-rtsp-server-0.17.0.crate) = 64700
+SHA256 (rust/crates/gstreamer-rtsp-server-sys-0.17.0.crate) = 3ac39d406e3e7dd40b9dd6332b6193b1a40d2c9d7f4795579707589c951e32a6
+SIZE (rust/crates/gstreamer-rtsp-server-sys-0.17.0.crate) = 36535
+SHA256 (rust/crates/gstreamer-rtsp-sys-0.17.0.crate) = 244405aaa835f94f35cffed30bde7f2bc59bef5822ad747109921d429b7fb371
+SIZE (rust/crates/gstreamer-rtsp-sys-0.17.0.crate) = 34774
+SHA256 (rust/crates/gstreamer-sdp-0.17.0.crate) = 4fb915df42663a982c64d65c36e7de7963c96733ea591338c648cc124fc0b5c9
+SIZE (rust/crates/gstreamer-sdp-0.17.0.crate) = 36100
+SHA256 (rust/crates/gstreamer-sdp-sys-0.17.0.crate) = e37750f58494510976ac50e6c2ba1757e2270aca1086239bf02f576d63496201
+SIZE (rust/crates/gstreamer-sdp-sys-0.17.0.crate) = 30184
+SHA256 (rust/crates/gstreamer-sys-0.17.0.crate) = 8188ba998999a4a16005c3984812807ff882a87f5f3457c3d5bbbfcbdf631ebd
+SIZE (rust/crates/gstreamer-sys-0.17.0.crate) = 84155
+SHA256 (rust/crates/heck-0.3.3.crate) = 6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c
+SIZE (rust/crates/heck-0.3.3.crate) = 10260
+SHA256 (rust/crates/hermit-abi-0.1.19.crate) = 62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33
+SIZE (rust/crates/hermit-abi-0.1.19.crate) = 9979
+SHA256 (rust/crates/humantime-2.1.0.crate) = 9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4
+SIZE (rust/crates/humantime-2.1.0.crate) = 16749
+SHA256 (rust/crates/idna-0.2.3.crate) = 418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8
+SIZE (rust/crates/idna-0.2.3.crate) = 271023
+SHA256 (rust/crates/if_chain-1.0.1.crate) = 1f7280c75fb2e2fc47080ec80ccc481376923acb04501957fc38f935c3de5088
+SIZE (rust/crates/if_chain-1.0.1.crate) = 7924
+SHA256 (rust/crates/indoc-0.3.6.crate) = 47741a8bc60fb26eb8d6e0238bbb26d8575ff623fdc97b1a2c00c050b9684ed8
+SIZE (rust/crates/indoc-0.3.6.crate) = 9663
+SHA256 (rust/crates/indoc-impl-0.3.6.crate) = ce046d161f000fffde5f432a0d034d0341dc152643b2598ed5bfce44c4f3a8f0
+SIZE (rust/crates/indoc-impl-0.3.6.crate) = 7933
+SHA256 (rust/crates/itertools-0.9.0.crate) = 284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b
+SIZE (rust/crates/itertools-0.9.0.crate) = 96429
+SHA256 (rust/crates/itertools-0.10.1.crate) = 69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf
+SIZE (rust/crates/itertools-0.10.1.crate) = 116219
+SHA256 (rust/crates/itoa-0.4.7.crate) = dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736
+SIZE (rust/crates/itoa-0.4.7.crate) = 12099
+SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443
+SHA256 (rust/crates/lexical-core-0.7.6.crate) = 6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe
+SIZE (rust/crates/lexical-core-0.7.6.crate) = 494385
+SHA256 (rust/crates/libc-0.2.98.crate) = 320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790
+SIZE (rust/crates/libc-0.2.98.crate) = 522087
+SHA256 (rust/crates/log-0.4.14.crate) = 51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710
+SIZE (rust/crates/log-0.4.14.crate) = 34582
+SHA256 (rust/crates/matches-0.1.8.crate) = 7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08
+SIZE (rust/crates/matches-0.1.8.crate) = 2216
+SHA256 (rust/crates/maybe-uninit-2.0.0.crate) = 60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00
+SIZE (rust/crates/maybe-uninit-2.0.0.crate) = 11809
+SHA256 (rust/crates/md5-0.7.0.crate) = 490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771
+SIZE (rust/crates/md5-0.7.0.crate) = 6671
+SHA256 (rust/crates/memchr-2.3.4.crate) = 0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525
+SIZE (rust/crates/memchr-2.3.4.crate) = 23077
+SHA256 (rust/crates/memoffset-0.5.6.crate) = 043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa
+SIZE (rust/crates/memoffset-0.5.6.crate) = 7382
+SHA256 (rust/crates/muldiv-1.0.0.crate) = b5136edda114182728ccdedb9f5eda882781f35fa6e80cc360af12a8932507f3
+SIZE (rust/crates/muldiv-1.0.0.crate) = 4991
+SHA256 (rust/crates/nom-6.2.1.crate) = 9c5c51b9083a3c620fa67a2a635d1ce7d95b897e957d6b28ff9a5da960a103a6
+SIZE (rust/crates/nom-6.2.1.crate) = 148362
+SHA256 (rust/crates/num-integer-0.1.44.crate) = d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db
+SIZE (rust/crates/num-integer-0.1.44.crate) = 22216
+SHA256 (rust/crates/num-rational-0.4.0.crate) = d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a
+SIZE (rust/crates/num-rational-0.4.0.crate) = 26428
+SHA256 (rust/crates/num-traits-0.2.14.crate) = 9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290
+SIZE (rust/crates/num-traits-0.2.14.crate) = 45476
+SHA256 (rust/crates/once_cell-1.8.0.crate) = 692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56
+SIZE (rust/crates/once_cell-1.8.0.crate) = 28925
+SHA256 (rust/crates/opaque-debug-0.3.0.crate) = 624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5
+SIZE (rust/crates/opaque-debug-0.3.0.crate) = 5767
+SHA256 (rust/crates/paste-1.0.5.crate) = acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58
+SIZE (rust/crates/paste-1.0.5.crate) = 17669
+SHA256 (rust/crates/percent-encoding-2.1.0.crate) = d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e
+SIZE (rust/crates/percent-encoding-2.1.0.crate) = 9748
+SHA256 (rust/crates/pin-project-lite-0.2.7.crate) = 8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443
+SIZE (rust/crates/pin-project-lite-0.2.7.crate) = 27212
+SHA256 (rust/crates/pin-utils-0.1.0.crate) = 8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184
+SIZE (rust/crates/pin-utils-0.1.0.crate) = 7580
+SHA256 (rust/crates/pkg-config-0.3.19.crate) = 3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c
+SIZE (rust/crates/pkg-config-0.3.19.crate) = 15451
+SHA256 (rust/crates/pretty-hex-0.2.1.crate) = bc5c99d529f0d30937f6f4b8a86d988047327bb88d04d2c4afc356de74722131
+SIZE (rust/crates/pretty-hex-0.2.1.crate) = 6176
+SHA256 (rust/crates/proc-macro-crate-1.0.0.crate) = 41fdbd1df62156fbc5945f4762632564d7d038153091c3fcf1067f6aef7cff92
+SIZE (rust/crates/proc-macro-crate-1.0.0.crate) = 8442
+SHA256 (rust/crates/proc-macro-error-1.0.4.crate) = da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c
+SIZE (rust/crates/proc-macro-error-1.0.4.crate) = 25293
+SHA256 (rust/crates/proc-macro-error-attr-1.0.4.crate) = a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869
+SIZE (rust/crates/proc-macro-error-attr-1.0.4.crate) = 7971
+SHA256 (rust/crates/proc-macro-hack-0.5.19.crate) = dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5
+SIZE (rust/crates/proc-macro-hack-0.5.19.crate) = 15556
+SHA256 (rust/crates/proc-macro2-1.0.28.crate) = 5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612
+SIZE (rust/crates/proc-macro2-1.0.28.crate) = 38732
+SHA256 (rust/crates/quote-1.0.9.crate) = c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7
+SIZE (rust/crates/quote-1.0.9.crate) = 25042
+SHA256 (rust/crates/radium-0.5.3.crate) = 941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8
+SIZE (rust/crates/radium-0.5.3.crate) = 7588
+SHA256 (rust/crates/regex-1.4.6.crate) = 2a26af418b574bd56588335b3a3659a65725d4e636eb1016c2f9e3b38c7cc759
+SIZE (rust/crates/regex-1.4.6.crate) = 242248
+SHA256 (rust/crates/regex-syntax-0.6.25.crate) = f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b
+SIZE (rust/crates/regex-syntax-0.6.25.crate) = 293293
+SHA256 (rust/crates/rustc_version-0.2.3.crate) = 138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a
+SIZE (rust/crates/rustc_version-0.2.3.crate) = 10210
+SHA256 (rust/crates/rustversion-1.0.5.crate) = 61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088
+SIZE (rust/crates/rustversion-1.0.5.crate) = 16984
+SHA256 (rust/crates/ryu-1.0.5.crate) = 71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e
+SIZE (rust/crates/ryu-1.0.5.crate) = 49570
+SHA256 (rust/crates/scopeguard-1.1.0.crate) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
+SIZE (rust/crates/scopeguard-1.1.0.crate) = 11470
+SHA256 (rust/crates/semver-0.9.0.crate) = 1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403
+SIZE (rust/crates/semver-0.9.0.crate) = 17344
+SHA256 (rust/crates/semver-parser-0.7.0.crate) = 388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3
+SIZE (rust/crates/semver-parser-0.7.0.crate) = 10268
+SHA256 (rust/crates/serde-1.0.127.crate) = f03b9878abf6d14e6779d3f24f07b2cfa90352cfec4acc5aab8f1ac7f146fae8
+SIZE (rust/crates/serde-1.0.127.crate) = 75162
+SHA256 (rust/crates/serde_derive-1.0.127.crate) = a024926d3432516606328597e0f224a51355a493b49fdd67e9209187cbe55ecc
+SIZE (rust/crates/serde_derive-1.0.127.crate) = 54201
+SHA256 (rust/crates/serde_json-1.0.66.crate) = 336b10da19a12ad094b59d870ebde26a45402e5b470add4b5fd03c5048a32127
+SIZE (rust/crates/serde_json-1.0.66.crate) = 115121
+SHA256 (rust/crates/sha1-0.6.0.crate) = 2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d
+SIZE (rust/crates/sha1-0.6.0.crate) = 9244
+SHA256 (rust/crates/slab-0.4.3.crate) = f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527
+SIZE (rust/crates/slab-0.4.3.crate) = 15681
+SHA256 (rust/crates/smallvec-1.6.1.crate) = fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e
+SIZE (rust/crates/smallvec-1.6.1.crate) = 26444
+SHA256 (rust/crates/socket2-0.3.19.crate) = 122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e
+SIZE (rust/crates/socket2-0.3.19.crate) = 33782
+SHA256 (rust/crates/standback-0.2.17.crate) = e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff
+SIZE (rust/crates/standback-0.2.17.crate) = 29011
+SHA256 (rust/crates/static_assertions-1.1.0.crate) = a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f
+SIZE (rust/crates/static_assertions-1.1.0.crate) = 18480
+SHA256 (rust/crates/stdweb-0.4.20.crate) = d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5
+SIZE (rust/crates/stdweb-0.4.20.crate) = 194102
+SHA256 (rust/crates/stdweb-derive-0.5.3.crate) = c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef
+SIZE (rust/crates/stdweb-derive-0.5.3.crate) = 3894
+SHA256 (rust/crates/stdweb-internal-macros-0.2.9.crate) = 58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11
+SIZE (rust/crates/stdweb-internal-macros-0.2.9.crate) = 11828
+SHA256 (rust/crates/stdweb-internal-runtime-0.1.5.crate) = 213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0
+SIZE (rust/crates/stdweb-internal-runtime-0.1.5.crate) = 5445
+SHA256 (rust/crates/strsim-0.8.0.crate) = 8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a
+SIZE (rust/crates/strsim-0.8.0.crate) = 9309
+SHA256 (rust/crates/structopt-0.3.22.crate) = 69b041cdcb67226aca307e6e7be44c8806423d83e018bd662360a93dabce4d71
+SIZE (rust/crates/structopt-0.3.22.crate) = 51665
+SHA256 (rust/crates/structopt-derive-0.4.15.crate) = 7813934aecf5f51a54775e00068c237de98489463968231a51746bbbc03f9c10
+SIZE (rust/crates/structopt-derive-0.4.15.crate) = 20861
+SHA256 (rust/crates/strum-0.21.0.crate) = aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2
+SIZE (rust/crates/strum-0.21.0.crate) = 5296
+SHA256 (rust/crates/strum_macros-0.21.1.crate) = d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec
+SIZE (rust/crates/strum_macros-0.21.1.crate) = 16280
+SHA256 (rust/crates/syn-1.0.74.crate) = 1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c
+SIZE (rust/crates/syn-1.0.74.crate) = 232974
+SHA256 (rust/crates/synstructure-0.12.5.crate) = 474aaa926faa1603c40b7885a9eaea29b444d1cb2850cb7c0e37bb1a4182f4fa
+SIZE (rust/crates/synstructure-0.12.5.crate) = 18020
+SHA256 (rust/crates/system-deps-3.2.0.crate) = 480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6
+SIZE (rust/crates/system-deps-3.2.0.crate) = 21476
+SHA256 (rust/crates/tap-1.0.1.crate) = 55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369
+SIZE (rust/crates/tap-1.0.1.crate) = 11316
+SHA256 (rust/crates/termcolor-1.1.2.crate) = 2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4
+SIZE (rust/crates/termcolor-1.1.2.crate) = 17287
+SHA256 (rust/crates/textwrap-0.11.0.crate) = d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060
+SIZE (rust/crates/textwrap-0.11.0.crate) = 17322
+SHA256 (rust/crates/thiserror-1.0.26.crate) = 93119e4feac1cbe6c798c34d3a53ea0026b0b1de6a120deef895137c0529bfe2
+SIZE (rust/crates/thiserror-1.0.26.crate) = 16711
+SHA256 (rust/crates/thiserror-impl-1.0.26.crate) = 060d69a0afe7796bf42e9e2ff91f5ee691fb15c53d38b4b62a9a53eb23164745
+SIZE (rust/crates/thiserror-impl-1.0.26.crate) = 13431
+SHA256 (rust/crates/time-0.2.27.crate) = 4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242
+SIZE (rust/crates/time-0.2.27.crate) = 65167
+SHA256 (rust/crates/time-macros-0.1.1.crate) = 957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1
+SIZE (rust/crates/time-macros-0.1.1.crate) = 5447
+SHA256 (rust/crates/time-macros-impl-0.1.2.crate) = fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f
+SIZE (rust/crates/time-macros-impl-0.1.2.crate) = 10096
+SHA256 (rust/crates/tinyvec-1.3.1.crate) = 848a1e1181b9f6753b5e96a092749e29b11d19ede67dfbbd6c7dc7e0f49b5338
+SIZE (rust/crates/tinyvec-1.3.1.crate) = 42386
+SHA256 (rust/crates/tinyvec_macros-0.1.0.crate) = cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c
+SIZE (rust/crates/tinyvec_macros-0.1.0.crate) = 1817
+SHA256 (rust/crates/toml-0.5.8.crate) = a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa
+SIZE (rust/crates/toml-0.5.8.crate) = 54219
+SHA256 (rust/crates/typenum-1.13.0.crate) = 879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06
+SIZE (rust/crates/typenum-1.13.0.crate) = 40238
+SHA256 (rust/crates/unicode-bidi-0.3.5.crate) = eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0
+SIZE (rust/crates/unicode-bidi-0.3.5.crate) = 33423
+SHA256 (rust/crates/unicode-normalization-0.1.19.crate) = d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9
+SIZE (rust/crates/unicode-normalization-0.1.19.crate) = 107353
+SHA256 (rust/crates/unicode-segmentation-1.8.0.crate) = 8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b
+SIZE (rust/crates/unicode-segmentation-1.8.0.crate) = 94011
+SHA256 (rust/crates/unicode-width-0.1.8.crate) = 9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3
+SIZE (rust/crates/unicode-width-0.1.8.crate) = 16732
+SHA256 (rust/crates/unicode-xid-0.2.2.crate) = 8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3
+SIZE (rust/crates/unicode-xid-0.2.2.crate) = 14955
+SHA256 (rust/crates/unindent-0.1.7.crate) = f14ee04d9415b52b3aeab06258a3f07093182b88ba0f9b8d203f211a7a7d41c7
+SIZE (rust/crates/unindent-0.1.7.crate) = 8346
+SHA256 (rust/crates/url-2.2.2.crate) = a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c
+SIZE (rust/crates/url-2.2.2.crate) = 68555
+SHA256 (rust/crates/validator-0.10.1.crate) = e60fadf92c22236de4028ceb0b8af50ed3430d41ad43d7a7d63b6bd1a8f47c38
+SIZE (rust/crates/validator-0.10.1.crate) = 8182
+SHA256 (rust/crates/validator_derive-0.10.1.crate) = 0d577dfb8ca9440a5c0b053d5a19b68f5c92ef57064bac87c8205c3f6072c20f
+SIZE (rust/crates/validator_derive-0.10.1.crate) = 15951
+SHA256 (rust/crates/vec_map-0.8.2.crate) = f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191
+SIZE (rust/crates/vec_map-0.8.2.crate) = 14466
+SHA256 (rust/crates/version-compare-0.0.11.crate) = 1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b
+SIZE (rust/crates/version-compare-0.0.11.crate) = 15208
+SHA256 (rust/crates/version_check-0.9.3.crate) = 5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe
+SIZE (rust/crates/version_check-0.9.3.crate) = 12547
+SHA256 (rust/crates/wasm-bindgen-0.2.74.crate) = d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd
+SIZE (rust/crates/wasm-bindgen-0.2.74.crate) = 158439
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.74.crate) = 3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900
+SIZE (rust/crates/wasm-bindgen-backend-0.2.74.crate) = 25434
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.74.crate) = 088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4
+SIZE (rust/crates/wasm-bindgen-macro-0.2.74.crate) = 11536
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.74.crate) = be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.74.crate) = 17831
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.74.crate) = d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f
+SIZE (rust/crates/wasm-bindgen-shared-0.2.74.crate) = 7163
+SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+SIZE (rust/crates/winapi-0.3.9.crate) = 1200382
+SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
+SHA256 (rust/crates/winapi-util-0.1.5.crate) = 70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178
+SIZE (rust/crates/winapi-util-0.1.5.crate) = 10164
+SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (rust/crates/wyz-0.2.0.crate) = 85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214
+SIZE (rust/crates/wyz-0.2.0.crate) = 12926
+SHA256 (rust/crates/xml-rs-0.8.4.crate) = d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3
+SIZE (rust/crates/xml-rs-0.8.4.crate) = 52690
+SHA256 (rust/crates/yaserde-0.3.16.crate) = fe81055b36d926da70850a7c1a9bc72eff184659da29e008ce9f2af4bfee7c89
+SIZE (rust/crates/yaserde-0.3.16.crate) = 11788
+SHA256 (rust/crates/yaserde_derive-0.3.17.crate) = 5fcdf088bb87971689cf7aef14b123c5c85ca8d71267985090369e5eab16a514
+SIZE (rust/crates/yaserde_derive-0.3.17.crate) = 11451
+SHA256 (thirtythreeforty-neolink-v0.3.0g20210903-cf54129_GH0.tar.gz) = c065e2206c7f3ad9d3bcc266aba63a2fad9e7787f5c76ffbdc1f0cc6dc220d8c
+SIZE (thirtythreeforty-neolink-v0.3.0g20210903-cf54129_GH0.tar.gz) = 1037846
diff --git a/multimedia/neolink/files/neolink.in b/multimedia/neolink/files/neolink.in
new file mode 100755
index 000000000000..8b960e94d366
--- /dev/null
+++ b/multimedia/neolink/files/neolink.in
@@ -0,0 +1,38 @@
+#!/bin/sh
+#
+# PROVIDE: neolink
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+
+# Add the following lines to /etc/rc.conf to enable neolink:
+#
+# neolink_enable="YES"
+#
+# Optionally, the following default values are set and may be adjusted:
+#
+# neolink_config="%%ETCDIR%%/config.toml"
+# neolink_user="neolink"
+
+. /etc/rc.subr
+
+name="neolink"
+rcvar=neolink_enable
+
+load_rc_config $name
+
+: ${neolink_enable="NO"}
+: ${neolink_config:=%%ETCDIR%%/config.toml}
+: ${neolink_user="neolink"}
+
+pidfile=/var/run/neolink.pid
+command="%%PREFIX%%/bin/neolink"
+
+start_cmd="${name}_start"
+
+neolink_start()
+{
+	echo -n "Starting ${name}."
+	/usr/sbin/daemon -fp ${pidfile} -u ${neolink_user} ${command} rtsp -c ${neolink_config}
+}
+
+run_rc_command "$1"
diff --git a/multimedia/neolink/pkg-descr b/multimedia/neolink/pkg-descr
new file mode 100644
index 000000000000..e6515d4b029f
--- /dev/null
+++ b/multimedia/neolink/pkg-descr
@@ -0,0 +1,15 @@
+Neolink is a small program that acts as a proxy between Reolink IP cameras and
+normal RTSP clients. Certain cameras, such as the Reolink B800, do not implement
+ONVIF or RTSP, but instead use a proprietary "Baichuan" protocol only compatible
+with their apps and NVRs (any camera that uses "port 9000" will likely be using
+this protocol).
+
+Neolink allows you to use NVR software such as Shinobi or Blue Iris to receive
+video from these cameras instead. The Reolink NVR is not required, and the
+cameras are unmodified. Your NVR software connects to Neolink, which forwards
+the video stream from the camera.
+
+The Neolink project is not affiliated with Reolink in any way; everything it
+does has been reverse engineered.
+
+WWW: https://github.com/thirtythreeforty/neolink
diff --git a/multimedia/neolink/pkg-plist b/multimedia/neolink/pkg-plist
new file mode 100644
index 000000000000..6c4c1cd06d42
--- /dev/null
+++ b/multimedia/neolink/pkg-plist
@@ -0,0 +1,2 @@
+bin/neolink
+@sample %%ETCDIR%%/config.toml.sample